Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanek Bevendorff <janek@jbev.net>2018-02-28 00:38:05 +0300
committerJanek Bevendorff <janek@jbev.net>2018-02-28 00:38:05 +0300
commit4c0ed74341173482415c484a2ad07df204150213 (patch)
tree74ebd72444c8e9db43698383151ddca6d7fb4506
parent4723f66d23db95f8318f04ee3aeae448d2305c9c (diff)
parent1db064425a22d997a2b6740c73a7b0cb1310fe07 (diff)
Release 2.3.02.3.0
- Add support for KDBX 4.0, Argon2 and ChaCha20 [#148, #1179, #1230, #1494] - Add SSH Agent feature [#1098, #1450, #1463] - Add preview panel with details of the selected entry [#879, #1338] - Add more and configurable columns to entry table and allow copying of values by double click [#1305] - Add KeePassXC-Browser API as a replacement for KeePassHTTP [#608] - Deprecate KeePassHTTP [#1392] - Add support for Steam one-time passwords [#1206] - Add support for multiple Auto-Type sequences for a single entry [#1390] - Adjust YubiKey HMAC-SHA1 challenge-response key generation for KDBX 4.0 [#1060] - Replace qHttp with cURL for website icon downloads [#1460] - Remove lock file [#1231] - Add option to create backup file before saving [#1385] - Ask to save a generated password before closing the entry password generator [#1499] - Resolve placeholders recursively [#1078] - Add Auto-Type button to the toolbar [#1056] - Improve window focus handling for Auto-Type dialogs [#1204, #1490] - Auto-Type dialog and password generator can now be exited with ESC [#1252, #1412] - Add optional dark tray icon [#1154] - Add new "Unsafe saving" option to work around saving problems with file sync services [#1385] - Add IBus support to AppImage and additional image formats to Windows builds [#1534, #1537] - Add diceware password generator to CLI [#1406] - Add --key-file option to CLI [#816, #824] - Add DBus interface for opening and closing KeePassXC databases [#283] - Add KDBX compression options to database settings [#1419] - Discourage use of old fixed-length key files in favor of arbitrary files [#1326, #1327] - Correct reference resolution in entry fields [#1486] - Fix window state and recent databases not being remembered on exit [#1453] - Correct history item generation when configuring TOTP for an entry [#1446] - Correct multiple TOTP bugs [#1414] - Automatic saving after every change is now a default [#279] - Allow creation of new entries during search [#1398] - Correct menu issues on macOS [#1335] - Allow compilation on OpenBSD [#1328] - Improve entry attachments view [#1139, #1298] - Fix auto lock for Gnome and Xfce [#910, #1249] - Don't remember key files in file dialogs when the setting is disabled [#1188] - Improve database merging and conflict resolution [#807, #1165] - Fix macOS pasteboard issues [#1202] - Improve startup times on some platforms [#1205] - Hide the notes field by default [#1124] - Toggle main window by clicking tray icon with the middle mouse button [#992] - Fix custom icons not copied over when databases are merged [#1008] - Allow use of DEL key to delete entries [#914] - Correct intermittent crash due to stale history items [#1527] - Sanitize newline characters in title, username and URL fields [#1502] - Reopen previously opened databases in correct order [#774] - Use system's zxcvbn library if available [#701] - Implement various i18n improvements [#690, #875, #1436]
-rw-r--r--.clang-format9
-rw-r--r--.github/CONTRIBUTING.md17
-rw-r--r--.github/ISSUE_TEMPLATE.md20
-rw-r--r--.gitignore4
-rw-r--r--.travis.yml47
-rwxr-xr-xAppImage-Recipe.sh21
-rw-r--r--CHANGELOG52
-rw-r--r--CMakeLists.txt166
-rw-r--r--COPYING16
-rw-r--r--Dockerfile29
-rw-r--r--INSTALL.md78
-rw-r--r--LICENSE.MIT19
-rw-r--r--README.md106
-rw-r--r--ci/trusty/Dockerfile73
-rw-r--r--cmake/FindArgon2.cmake34
-rw-r--r--cmake/FindLibGPGError.cmake2
-rw-r--r--cmake/FindYubiKey.cmake4
-rw-r--r--cmake/Findsodium.cmake267
-rw-r--r--docs/KeePassXC-Accept-Button.pngbin0 -> 98966 bytes
-rw-r--r--docs/KeePassXC-Confirm.pngbin0 -> 72759 bytes
-rw-r--r--docs/KeePassXC-Connect.pngbin0 -> 103252 bytes
-rw-r--r--docs/QUICKSTART.md47
-rwxr-xr-xrelease-tool363
-rw-r--r--share/icons/application/16x16/actions/paperclip.pngbin0 -> 352 bytes
-rw-r--r--share/icons/application/16x16/actions/url-copy.pngbin0 -> 900 bytes
-rw-r--r--share/icons/application/22x22/actions/chronometer.pngbin0 -> 1675 bytes
-rw-r--r--share/icons/application/22x22/actions/paperclip.pngbin0 -> 421 bytes
-rw-r--r--share/icons/application/22x22/actions/url-copy.pngbin0 -> 1338 bytes
-rw-r--r--share/icons/application/32x32/actions/document-encrypt.pngbin0 -> 1052 bytes
-rw-r--r--share/icons/application/32x32/actions/paperclip.pngbin0 -> 559 bytes
-rw-r--r--share/icons/application/32x32/apps/utilities-terminal.pngbin0 -> 958 bytes
-rw-r--r--share/icons/svg/paperclip.svgzbin0 -> 1326 bytes
-rw-r--r--share/icons/svg/utilities-terminal.svgzbin0 -> 6689 bytes
-rw-r--r--share/keepassxc.ini2
-rw-r--r--share/linux/org.keepassxc.KeePassXC.appdata.xml107
-rw-r--r--share/macosx/DS_Store.inbin0 -> 10244 bytes
-rw-r--r--share/macosx/Info.plist.cmake2
-rw-r--r--share/macosx/background.tiffbin0 -> 17836 bytes
-rw-r--r--share/translations/CMakeLists.txt13
-rw-r--r--share/translations/keepassx_ar.ts4093
-rw-r--r--share/translations/keepassx_ca.ts2962
-rw-r--r--share/translations/keepassx_cs.ts2928
-rw-r--r--share/translations/keepassx_da.ts2869
-rw-r--r--share/translations/keepassx_de.ts2916
-rw-r--r--share/translations/keepassx_el.ts2794
-rw-r--r--share/translations/keepassx_en.ts2473
-rw-r--r--share/translations/keepassx_en_US.ts4120
-rw-r--r--share/translations/keepassx_en_plurals.ts41
-rw-r--r--share/translations/keepassx_es.ts2902
-rw-r--r--share/translations/keepassx_eu.ts2709
-rw-r--r--share/translations/keepassx_fi.ts3048
-rw-r--r--share/translations/keepassx_fr.ts2924
-rw-r--r--share/translations/keepassx_hu.ts2982
-rw-r--r--share/translations/keepassx_id.ts2930
-rw-r--r--share/translations/keepassx_it.ts3013
-rw-r--r--share/translations/keepassx_ja.ts2945
-rw-r--r--share/translations/keepassx_ko.ts2917
-rw-r--r--share/translations/keepassx_lt.ts2909
-rw-r--r--share/translations/keepassx_nl_NL.ts3133
-rw-r--r--share/translations/keepassx_pl.ts2928
-rw-r--r--share/translations/keepassx_pt_BR.ts2983
-rw-r--r--share/translations/keepassx_pt_PT.ts2923
-rw-r--r--share/translations/keepassx_ro.ts4073
-rw-r--r--share/translations/keepassx_ru.ts2942
-rw-r--r--share/translations/keepassx_sr.ts4083
-rw-r--r--share/translations/keepassx_sv.ts2861
-rw-r--r--share/translations/keepassx_th.ts4078
-rw-r--r--share/translations/keepassx_tr.ts2905
-rw-r--r--share/translations/keepassx_uk.ts2914
-rw-r--r--share/translations/keepassx_zh_CN.ts2882
-rw-r--r--share/translations/keepassx_zh_TW.ts2932
-rwxr-xr-xshare/translations/update.sh9
-rw-r--r--share/windows/wix-banner.bmpbin0 -> 85894 bytes
-rw-r--r--share/windows/wix-dialog.bmpbin0 -> 461814 bytes
-rw-r--r--share/windows/wix-patch.xml8
-rw-r--r--share/windows/wix-template.xml67
-rw-r--r--snapcraft.yaml30
-rw-r--r--src/CMakeLists.txt159
-rw-r--r--src/autotype/AutoType.cpp625
-rw-r--r--src/autotype/AutoType.h33
-rw-r--r--src/autotype/AutoTypeAction.h1
-rw-r--r--src/autotype/AutoTypeSelectDialog.cpp44
-rw-r--r--src/autotype/AutoTypeSelectDialog.h16
-rw-r--r--src/autotype/AutoTypeSelectView.cpp21
-rw-r--r--src/autotype/AutoTypeSelectView.h12
-rw-r--r--src/autotype/mac/CMakeLists.txt6
-rwxr-xr-xsrc/browser/BrowserAccessControlDialog.cpp59
-rwxr-xr-xsrc/browser/BrowserAccessControlDialog.h48
-rwxr-xr-xsrc/browser/BrowserAccessControlDialog.ui69
-rwxr-xr-xsrc/browser/BrowserAction.cpp554
-rwxr-xr-xsrc/browser/BrowserAction.h98
-rwxr-xr-xsrc/browser/BrowserClients.cpp77
-rwxr-xr-xsrc/browser/BrowserClients.h56
-rw-r--r--src/browser/BrowserEntryConfig.cpp109
-rw-r--r--src/browser/BrowserEntryConfig.h60
-rwxr-xr-xsrc/browser/BrowserOptionDialog.cpp141
-rwxr-xr-xsrc/browser/BrowserOptionDialog.h53
-rwxr-xr-xsrc/browser/BrowserOptionDialog.ui377
-rw-r--r--src/browser/BrowserService.cpp744
-rw-r--r--src/browser/BrowserService.h82
-rwxr-xr-xsrc/browser/BrowserSettings.cpp380
-rwxr-xr-xsrc/browser/BrowserSettings.h105
-rwxr-xr-xsrc/browser/CMakeLists.txt37
-rw-r--r--src/browser/HostInstaller.cpp240
-rw-r--r--src/browser/HostInstaller.h63
-rw-r--r--src/browser/NativeMessagingBase.cpp141
-rw-r--r--src/browser/NativeMessagingBase.h61
-rwxr-xr-xsrc/browser/NativeMessagingHost.cpp208
-rwxr-xr-xsrc/browser/NativeMessagingHost.h67
-rw-r--r--src/browser/Variant.cpp37
-rw-r--r--src/browser/Variant.h (renamed from src/keys/CompositeKey_p.h)30
-rw-r--r--src/cli/Add.cpp150
-rw-r--r--src/cli/Add.h (renamed from src/core/ToDbExporter.h)20
-rw-r--r--src/cli/CMakeLists.txt26
-rw-r--r--src/cli/Clip.cpp96
-rw-r--r--src/cli/Clip.h9
-rw-r--r--src/cli/Command.cpp92
-rw-r--r--src/cli/Command.h41
-rw-r--r--src/cli/Diceware.cpp86
-rw-r--r--src/cli/Diceware.h31
-rw-r--r--src/cli/Edit.cpp168
-rw-r--r--src/cli/Edit.h31
-rw-r--r--src/cli/EntropyMeter.cpp130
-rw-r--r--src/cli/Estimate.cpp170
-rw-r--r--src/cli/Estimate.h31
-rw-r--r--src/cli/Extract.cpp69
-rw-r--r--src/cli/Extract.h8
-rw-r--r--src/cli/Generate.cpp111
-rw-r--r--src/cli/Generate.h31
-rw-r--r--src/cli/List.cpp86
-rw-r--r--src/cli/List.h9
-rw-r--r--src/cli/Locate.cpp86
-rw-r--r--src/cli/Locate.h32
-rw-r--r--src/cli/Merge.cpp87
-rw-r--r--src/cli/Merge.h8
-rw-r--r--src/cli/Remove.cpp106
-rw-r--r--src/cli/Remove.h34
-rw-r--r--src/cli/Show.cpp84
-rw-r--r--src/cli/Show.h9
-rw-r--r--src/cli/Utils.cpp (renamed from src/cli/PasswordInput.cpp)61
-rw-r--r--src/cli/Utils.h (renamed from src/cli/PasswordInput.h)10
-rw-r--r--src/cli/keepassxc-cli.1150
-rw-r--r--src/cli/keepassxc-cli.cpp74
-rw-r--r--src/config-keepassx.h.cmake22
-rw-r--r--src/core/AsyncTask.h63
-rw-r--r--src/core/AutoTypeAssociations.cpp9
-rw-r--r--src/core/AutoTypeAssociations.h1
-rw-r--r--src/core/AutoTypeMatch.cpp39
-rw-r--r--src/core/AutoTypeMatch.h41
-rw-r--r--src/core/Base32.cpp23
-rw-r--r--src/core/Config.cpp27
-rw-r--r--src/core/Config.h9
-rw-r--r--src/core/CsvParser.cpp8
-rw-r--r--src/core/CustomData.cpp152
-rw-r--r--src/core/CustomData.h64
-rw-r--r--src/core/Database.cpp338
-rw-r--r--src/core/Database.h40
-rw-r--r--src/core/Endian.cpp199
-rw-r--r--src/core/Endian.h67
-rw-r--r--src/core/Entry.cpp459
-rw-r--r--src/core/Entry.h63
-rw-r--r--src/core/EntryAttachments.cpp51
-rw-r--r--src/core/EntryAttachments.h7
-rw-r--r--src/core/EntryAttributes.cpp47
-rw-r--r--src/core/EntryAttributes.h14
-rw-r--r--src/core/FilePath.cpp25
-rw-r--r--src/core/FilePath.h2
-rw-r--r--src/core/Group.cpp317
-rw-r--r--src/core/Group.h39
-rw-r--r--src/core/MacPasteboard.cpp94
-rw-r--r--src/core/MacPasteboard.h37
-rw-r--r--src/core/Metadata.cpp39
-rw-r--r--src/core/Metadata.h15
-rw-r--r--src/core/PassphraseGenerator.cpp43
-rw-r--r--src/core/PassphraseGenerator.h16
-rw-r--r--src/core/PasswordGenerator.cpp10
-rw-r--r--src/core/PasswordGenerator.h15
-rw-r--r--src/core/ScreenLockListenerDBus.cpp22
-rw-r--r--src/core/ScreenLockListenerPrivate.cpp12
-rw-r--r--src/core/ToDbExporter.cpp39
-rw-r--r--src/core/Translator.cpp114
-rw-r--r--src/core/Translator.h7
-rw-r--r--src/crypto/Crypto.cpp52
-rw-r--r--src/crypto/Crypto.h2
-rw-r--r--src/crypto/CryptoHash.cpp47
-rw-r--r--src/crypto/CryptoHash.h9
-rw-r--r--src/crypto/SymmetricCipher.cpp77
-rw-r--r--src/crypto/SymmetricCipher.h37
-rw-r--r--src/crypto/SymmetricCipherBackend.h1
-rw-r--r--src/crypto/SymmetricCipherGcrypt.cpp58
-rw-r--r--src/crypto/SymmetricCipherGcrypt.h4
-rw-r--r--src/crypto/SymmetricCipherSalsa20.cpp112
-rw-r--r--src/crypto/SymmetricCipherSalsa20.h53
-rw-r--r--src/crypto/argon2/argon2.h34
-rw-r--r--src/crypto/kdf/AesKdf.cpp128
-rw-r--r--src/crypto/kdf/AesKdf.h44
-rw-r--r--src/crypto/kdf/Argon2Kdf.cpp198
-rw-r--r--src/crypto/kdf/Argon2Kdf.h56
-rw-r--r--src/crypto/kdf/Kdf.cpp100
-rw-r--r--src/crypto/kdf/Kdf.h61
-rw-r--r--src/crypto/kdf/Kdf_p.h43
-rw-r--r--src/format/Kdbx3Reader.cpp218
-rw-r--r--src/format/Kdbx3Reader.h (renamed from tests/TestKeePass2Writer.h)35
-rw-r--r--src/format/Kdbx3Writer.cpp157
-rw-r--r--src/format/Kdbx3Writer.h34
-rw-r--r--src/format/Kdbx4Reader.cpp448
-rw-r--r--src/format/Kdbx4Reader.h48
-rw-r--r--src/format/Kdbx4Writer.cpp311
-rw-r--r--src/format/Kdbx4Writer.h39
-rw-r--r--src/format/KdbxReader.cpp267
-rw-r--r--src/format/KdbxReader.h107
-rw-r--r--src/format/KdbxWriter.cpp74
-rw-r--r--src/format/KdbxWriter.h90
-rw-r--r--src/format/KdbxXmlReader.cpp (renamed from src/format/KeePass2XmlReader.cpp)871
-rw-r--r--src/format/KdbxXmlReader.h120
-rw-r--r--src/format/KdbxXmlWriter.cpp (renamed from src/format/KeePass2XmlWriter.cpp)152
-rw-r--r--src/format/KdbxXmlWriter.h (renamed from src/format/KeePass2XmlWriter.h)31
-rw-r--r--src/format/KeePass1Reader.cpp129
-rw-r--r--src/format/KeePass2.cpp129
-rw-r--r--src/format/KeePass2.h143
-rw-r--r--src/format/KeePass2RandomStream.cpp30
-rw-r--r--src/format/KeePass2RandomStream.h6
-rw-r--r--src/format/KeePass2Reader.cpp439
-rw-r--r--src/format/KeePass2Reader.h61
-rw-r--r--src/format/KeePass2Repair.cpp32
-rw-r--r--src/format/KeePass2Writer.cpp234
-rw-r--r--src/format/KeePass2Writer.h37
-rw-r--r--src/format/KeePass2XmlReader.h101
-rw-r--r--src/gui/AboutDialog.cpp23
-rw-r--r--src/gui/AboutDialog.ui100
-rw-r--r--src/gui/Application.cpp108
-rw-r--r--src/gui/Application.h7
-rw-r--r--src/gui/ChangeMasterKeyWidget.cpp8
-rw-r--r--src/gui/Clipboard.cpp10
-rw-r--r--src/gui/Clipboard.h6
-rw-r--r--src/gui/CloneDialog.cpp2
-rw-r--r--src/gui/DatabaseOpenWidget.cpp20
-rw-r--r--src/gui/DatabaseSettingsWidget.cpp255
-rw-r--r--src/gui/DatabaseSettingsWidget.h25
-rw-r--r--src/gui/DatabaseSettingsWidget.ui267
-rw-r--r--src/gui/DatabaseSettingsWidgetEncryption.ui183
-rw-r--r--src/gui/DatabaseSettingsWidgetGeneral.ui164
-rw-r--r--src/gui/DatabaseTabWidget.cpp300
-rw-r--r--src/gui/DatabaseTabWidget.h42
-rw-r--r--src/gui/DatabaseWidget.cpp435
-rw-r--r--src/gui/DatabaseWidget.h52
-rw-r--r--src/gui/DatabaseWidgetStateSync.cpp150
-rw-r--r--src/gui/DatabaseWidgetStateSync.h43
-rw-r--r--src/gui/DetailsWidget.cpp335
-rw-r--r--src/gui/DetailsWidget.h79
-rw-r--r--src/gui/DetailsWidget.ui734
-rw-r--r--src/gui/EditWidget.cpp3
-rw-r--r--src/gui/EditWidgetIcons.cpp189
-rw-r--r--src/gui/EditWidgetIcons.h20
-rw-r--r--src/gui/EditWidgetProperties.cpp66
-rw-r--r--src/gui/EditWidgetProperties.h17
-rw-r--r--src/gui/EditWidgetProperties.ui193
-rw-r--r--src/gui/FileDialog.cpp87
-rw-r--r--src/gui/FileDialog.h13
-rw-r--r--src/gui/Font.cpp36
-rw-r--r--src/gui/Font.h (renamed from src/cli/EntropyMeter.h)14
-rw-r--r--src/gui/KMessageWidget.cpp85
-rw-r--r--src/gui/MainWindow.cpp250
-rw-r--r--src/gui/MainWindow.h23
-rw-r--r--src/gui/MainWindow.ui67
-rw-r--r--src/gui/MainWindowAdaptor.cpp63
-rw-r--r--src/gui/MainWindowAdaptor.h67
-rw-r--r--src/gui/MessageWidget.cpp51
-rw-r--r--src/gui/MessageWidget.h16
-rw-r--r--src/gui/PasswordEdit.cpp14
-rw-r--r--src/gui/PasswordGeneratorWidget.cpp56
-rw-r--r--src/gui/PasswordGeneratorWidget.h11
-rw-r--r--src/gui/PasswordGeneratorWidget.ui12
-rw-r--r--src/gui/SearchWidget.cpp3
-rw-r--r--src/gui/SettingsWidget.cpp22
-rw-r--r--src/gui/SettingsWidgetGeneral.ui497
-rw-r--r--src/gui/SettingsWidgetSecurity.ui27
-rw-r--r--src/gui/SetupTotpDialog.cpp51
-rw-r--r--src/gui/SetupTotpDialog.h3
-rw-r--r--src/gui/SetupTotpDialog.ui44
-rw-r--r--src/gui/TotpDialog.cpp30
-rw-r--r--src/gui/TotpDialog.h6
-rw-r--r--src/gui/UnlockDatabaseDialog.cpp21
-rw-r--r--src/gui/UnlockDatabaseDialog.h5
-rw-r--r--src/gui/WelcomeWidget.cpp4
-rw-r--r--src/gui/WelcomeWidget.ui3
-rw-r--r--src/gui/csvImport/CsvImportWidget.cpp17
-rw-r--r--src/gui/csvImport/CsvImportWizard.cpp29
-rw-r--r--src/gui/csvImport/CsvImportWizard.h6
-rw-r--r--src/gui/csvImport/CsvParserModel.cpp6
-rw-r--r--src/gui/entry/AutoTypeAssociationsModel.cpp15
-rw-r--r--src/gui/entry/AutoTypeAssociationsModel.h5
-rw-r--r--src/gui/entry/AutoTypeMatchModel.cpp201
-rw-r--r--src/gui/entry/AutoTypeMatchModel.h66
-rw-r--r--src/gui/entry/AutoTypeMatchView.cpp112
-rw-r--r--src/gui/entry/AutoTypeMatchView.h57
-rw-r--r--src/gui/entry/EditEntryWidget.cpp590
-rw-r--r--src/gui/entry/EditEntryWidget.h44
-rw-r--r--src/gui/entry/EditEntryWidgetAdvanced.ui177
-rw-r--r--src/gui/entry/EditEntryWidgetAutoType.ui12
-rw-r--r--src/gui/entry/EditEntryWidgetMain.ui19
-rw-r--r--src/gui/entry/EditEntryWidgetSSHAgent.ui275
-rw-r--r--src/gui/entry/EntryAttachmentsModel.cpp36
-rw-r--r--src/gui/entry/EntryAttachmentsModel.h8
-rw-r--r--src/gui/entry/EntryAttachmentsWidget.cpp370
-rw-r--r--src/gui/entry/EntryAttachmentsWidget.h64
-rw-r--r--src/gui/entry/EntryAttachmentsWidget.ui99
-rw-r--r--src/gui/entry/EntryModel.cpp215
-rw-r--r--src/gui/entry/EntryModel.h34
-rw-r--r--src/gui/entry/EntryView.cpp364
-rw-r--r--src/gui/entry/EntryView.h57
-rw-r--r--src/gui/group/EditGroupWidget.cpp3
-rw-r--r--src/gui/group/GroupView.cpp7
-rw-r--r--src/gui/group/GroupView.h2
-rw-r--r--src/gui/org.keepassxc.KeePassXC.MainWindow.xml23
-rw-r--r--src/gui/widgets/ElidedLabel.cpp116
-rw-r--r--src/gui/widgets/ElidedLabel.h61
-rw-r--r--src/http/AccessControlDialog.cpp4
-rw-r--r--src/http/CMakeLists.txt8
-rw-r--r--src/http/HttpPasswordGeneratorWidget.cpp20
-rw-r--r--src/http/HttpPasswordGeneratorWidget.ui16
-rw-r--r--src/http/HttpSettings.cpp39
-rw-r--r--src/http/HttpSettings.h2
-rw-r--r--src/http/OptionDialog.cpp12
-rw-r--r--src/http/OptionDialog.ui9
-rw-r--r--src/http/Server.cpp2
-rw-r--r--src/http/Service.cpp11
-rw-r--r--src/http/qhttp/http-parser/http_parser.c6
-rw-r--r--src/keys/CompositeKey.cpp180
-rw-r--r--src/keys/CompositeKey.h17
-rw-r--r--src/keys/FileKey.cpp176
-rw-r--r--src/keys/FileKey.h22
-rw-r--r--src/main.cpp80
-rwxr-xr-xsrc/proxy/CMakeLists.txt58
-rwxr-xr-xsrc/proxy/NativeMessagingHost.cpp95
-rwxr-xr-xsrc/proxy/NativeMessagingHost.h43
-rw-r--r--src/proxy/keepassxc-proxy.cpp66
-rw-r--r--src/sshagent/ASN1Key.cpp186
-rw-r--r--src/sshagent/ASN1Key.h31
-rw-r--r--src/sshagent/AgentSettingsPage.cpp58
-rw-r--r--src/sshagent/AgentSettingsPage.h40
-rw-r--r--src/sshagent/AgentSettingsWidget.cpp42
-rw-r--r--src/sshagent/AgentSettingsWidget.h44
-rw-r--r--src/sshagent/AgentSettingsWidget.ui50
-rw-r--r--src/sshagent/BinaryStream.cpp219
-rw-r--r--src/sshagent/BinaryStream.h68
-rw-r--r--src/sshagent/CMakeLists.txt18
-rw-r--r--src/sshagent/KeeAgentSettings.cpp278
-rw-r--r--src/sshagent/KeeAgentSettings.h79
-rw-r--r--src/sshagent/OpenSSHKey.cpp558
-rw-r--r--src/sshagent/OpenSSHKey.h79
-rw-r--r--src/sshagent/SSHAgent.cpp282
-rw-r--r--src/sshagent/SSHAgent.h73
-rw-r--r--src/sshagent/bcrypt_pbkdf.cpp172
-rw-r--r--src/sshagent/blf.h98
-rw-r--r--src/sshagent/blowfish.c696
-rw-r--r--src/streams/HashedBlockStream.cpp12
-rw-r--r--src/streams/HashedBlockStream.h2
-rw-r--r--src/streams/HmacBlockStream.cpp261
-rw-r--r--src/streams/HmacBlockStream.h61
-rw-r--r--src/streams/SymmetricCipherStream.cpp83
-rw-r--r--src/streams/SymmetricCipherStream.h4
-rw-r--r--src/totp/totp.cpp72
-rw-r--r--src/totp/totp.h25
-rw-r--r--src/zxcvbn/dict-src.h26174
-rw-r--r--src/zxcvbn/zxcvbn.c (renamed from src/zxcvbn/zxcvbn.cpp)99
-rw-r--r--src/zxcvbn/zxcvbn.h40
-rw-r--r--tests/CMakeLists.txt76
-rw-r--r--tests/TestAutoType.cpp156
-rw-r--r--tests/TestAutoType.h5
-rw-r--r--tests/TestBase32.cpp2
-rw-r--r--tests/TestCryptoHash.cpp16
-rw-r--r--tests/TestCsvExporter.cpp5
-rw-r--r--tests/TestCsvParser.cpp1
-rw-r--r--tests/TestDatabase.cpp4
-rw-r--r--tests/TestDeletedObjects.cpp10
-rw-r--r--tests/TestEntry.cpp415
-rw-r--r--tests/TestEntry.h5
-rw-r--r--tests/TestEntryModel.cpp24
-rw-r--r--tests/TestEntrySearcher.cpp3
-rw-r--r--tests/TestExporter.cpp78
-rw-r--r--tests/TestGlobal.h69
-rw-r--r--tests/TestGroup.cpp255
-rw-r--r--tests/TestGroup.h9
-rw-r--r--tests/TestGroupModel.cpp4
-rw-r--r--tests/TestHashedBlockStream.cpp2
-rw-r--r--tests/TestKdbx2.cpp109
-rw-r--r--tests/TestKdbx2.h (renamed from tests/TestExporter.h)21
-rw-r--r--tests/TestKdbx3.cpp209
-rw-r--r--tests/TestKdbx3.h50
-rw-r--r--tests/TestKdbx4.cpp300
-rw-r--r--tests/TestKdbx4.h47
-rw-r--r--tests/TestKeePass1Reader.cpp7
-rw-r--r--tests/TestKeePass2Format.cpp629
-rw-r--r--tests/TestKeePass2Format.h88
-rw-r--r--tests/TestKeePass2RandomStream.cpp6
-rw-r--r--tests/TestKeePass2Reader.cpp157
-rw-r--r--tests/TestKeePass2Writer.cpp166
-rw-r--r--tests/TestKeePass2XmlReader.cpp520
-rw-r--r--tests/TestKeePass2XmlReader.h56
-rw-r--r--tests/TestKeys.cpp144
-rw-r--r--tests/TestKeys.h3
-rw-r--r--tests/TestMerge.cpp597
-rw-r--r--tests/TestMerge.h50
-rw-r--r--tests/TestModified.cpp315
-rw-r--r--tests/TestModified.h4
-rw-r--r--tests/TestOpenSSHKey.cpp250
-rw-r--r--tests/TestOpenSSHKey.h (renamed from tests/TestKeePass2Reader.h)24
-rw-r--r--tests/TestRandom.cpp19
-rw-r--r--tests/TestSymmetricCipher.cpp176
-rw-r--r--tests/TestSymmetricCipher.h5
-rw-r--r--tests/TestTotp.cpp123
-rw-r--r--tests/TestTotp.h3
-rw-r--r--tests/TestWildcardMatcher.cpp4
-rw-r--r--tests/TestYkChallengeResponseKey.cpp23
-rw-r--r--tests/TestYkChallengeResponseKey.h6
-rw-r--r--tests/data/Format400.kdbxbin0 -> 1801 bytes
-rw-r--r--tests/data/NewDatabase.xml12
-rw-r--r--tests/gui/CMakeLists.txt2
-rw-r--r--tests/gui/TestGui.cpp209
-rw-r--r--tests/gui/TestGui.h12
-rw-r--r--tests/gui/TestGuiPixmaps.cpp7
-rwxr-xr-xutils/fix_mac.sh20
423 files changed, 121592 insertions, 35918 deletions
diff --git a/.clang-format b/.clang-format
index 5dc8fc3b0..3838b6b1f 100644
--- a/.clang-format
+++ b/.clang-format
@@ -23,11 +23,10 @@ BraceWrapping:
AfterClass: true
AfterFunction: true
AfterControlStatement: false
- AfterEnum: false
- AfterNamespace: false
- AfterObjCDeclaration: false
- AfterStruct: false
- AfterUnion: false
+ AfterEnum: true
+ AfterNamespace: true
+ AfterStruct: true
+ AfterUnion: true
BeforeCatch: false
BeforeElse: false
IndentBraces: false
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 67b0e1746..4f937513c 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -53,7 +53,7 @@ If we reject your contribution, it means only that we do not consider it suitabl
## How can I contribute?
### Feature requests
-We're always looking for suggestions to improve our application. If you have a suggestion to improve an existing feature, or would like to suggest a completely new feature for KeePassXC, please use the [issue tracker on GitHub][issues-section]. For more general discussion, try using our [Google Groups][google-groups] forum.
+We're always looking for suggestions to improve our application. If you have a suggestion to improve an existing feature, or would like to suggest a completely new feature for KeePassXC, please use the [issue tracker on GitHub][issues-section].
### Bug reports
@@ -63,7 +63,7 @@ Before submitting a bug report, check if the problem has already been reported.
### Discuss with the team
-As with feature requests, you can talk to the KeePassXC team about bugs, new features, other issues and pull requests on the dedicated issue tracker, using the [Google Groups][google-groups] forum, or in the IRC channel on Freenode (`#keepassxc-dev` on `irc.freenode.net`, or use a [webchat link](https://webchat.freenode.net/?channels=%23keepassxc-dev)).
+As with feature requests, you can talk to the KeePassXC team about bugs, new features, other issues and pull requests on the dedicated issue tracker, or in the IRC channel on Freenode (`#keepassxc-dev` on `irc.freenode.net`, or use a [webchat link](https://webchat.freenode.net/?channels=%23keepassxc-dev)).
### Your first code contribution
@@ -103,18 +103,8 @@ The Branch Strategy is based on [git-flow-lite](http://nvie.com/posts/a-successf
* Use the imperative mood ("Move cursor to…" not "Moves cursor to…")
* Limit the first line to 72 characters or less
* Reference issues and pull requests liberally
+* If your pull request fixes an existing issue, add "…, resolves #ISSUENUMBER" to your main commit
* When only changing documentation, include `[ci skip]` in the commit description
-* Consider starting the commit message with an applicable emoji:
- * :memo: `:memo:` when writing docs
- * :penguin: `:penguin:` when fixing something on Linux
- * :apple: `:apple:` when fixing something on macOS
- * :checkered_flag: `:checkered_flag:` when fixing something on Windows
- * :bug: `:bug:` when fixing a bug
- * :fire: `:fire:` when removing code or files
- * :green_heart: `:green_heart:` when fixing the CI build
- * :white_check_mark: `:white_check_mark:` when adding tests
- * :lock: `:lock:` when dealing with security
-
### Coding styleguide
@@ -177,4 +167,3 @@ Example: `<widget class="QCheckBox" name="rememberCheckBox">`
[beginner]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner+label%3A%22help+wanted%22+sort%3Acomments-desc
[help-wanted]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+sort%3Acomments-desc
[issues-section]:https://github.com/keepassxreboot/keepassxc/issues
-[google-groups]:https://groups.google.com/forum/#!forum/keepassx-reboot
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 1a3f1a064..cf8b88f10 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -24,9 +24,17 @@
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
-## Your Environment
-<!--- Include relevant details about the environment you experienced the bug in -->
-* KeePassXC version/commit used: (can be found under Help -> About)
-* Qt version (e.g. Qt 5.3):
-* Compiler (e.g. Clang++3.6.0):
-* Operating System and version:
+## Debug Info
+<!--- Paste debug info from Help → About here -->
+KeePassXC - VERSION
+Revision: REVISION
+
+Libraries:
+- LIBS
+
+Operating system: OS
+CPU architecture: ARCH
+Kernel: KERNEL
+
+Enabled extensions:
+- EXTENSIONS
diff --git a/.gitignore b/.gitignore
index 479c589ea..c96688e9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,7 @@ release*/
*.kdev4
\.vscode/
+*.swp
+
+.DS_Store
+.version \ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 942bb426d..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-language: cpp
-sudo: required
-dist: trusty
-# FIXME : remove when (https://github.com/google/sanitizers/issues/837) is resolved.
-group: deprecated-2017Q3
-services: [docker]
-
-os:
- - linux
-# - osx
-
-# Define clang compiler without any frills
-compiler:
- - clang
- - gcc
-
-env:
- - CONFIG=Release ASAN_OPTIONS=detect_odr_violation=1
- - CONFIG=Debug ASAN_OPTIONS=detect_odr_violation=1
-
-git:
- depth: 3
-
-before_install:
- - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq update; fi
- - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq install cmake libclang-common-3.5-dev libxi-dev qtbase5-dev libqt5x11extras5-dev qttools5-dev qttools5-dev-tools libgcrypt20-dev zlib1g-dev libxtst-dev xvfb libyubikey-dev libykpers-1-dev; fi
- - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; fi
- - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew ls | grep -wq cmake || brew install cmake; fi
- - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew ls | grep -wq qt5 || brew install qt5; fi
- - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew ls | grep -wq libgcrypt || brew install libgcrypt; fi
-
-before_script:
- - if [ "$TRAVIS_OS_NAME" = "osx" ]; then CMAKE_ARGS="-DCMAKE_PREFIX_PATH=/usr/local/opt/qt5"; fi
- - mkdir build && pushd build
-
-script:
- - cmake -DCMAKE_BUILD_TYPE=${CONFIG} -DWITH_GUI_TESTS=ON -DWITH_ASAN=ON -DWITH_XC_HTTP=ON -DWITH_XC_AUTOTYPE=ON -DWITH_XC_YUBIKEY=ON $CMAKE_ARGS ..
- - make -j2
- - if [ "$TRAVIS_OS_NAME" = "linux" ]; then make test ARGS+="-E testgui --output-on-failure"; fi
- - if [ "$TRAVIS_OS_NAME" = "linux" ]; then ASAN_OPTIONS=${ASAN_OPTIONS}:leak_check_at_exit=0 xvfb-run -a --server-args="-screen 0 800x600x24" make test ARGS+="-R testgui --output-on-failure"; fi
- - if [ "$TRAVIS_OS_NAME" = "osx" ]; then make test ARGS+="--output-on-failure"; fi
-
-# Generate snapcraft build when merging into master/develop branches
-#after_success:
-# - popd
-# - "[[ $DEPLOY = 1 ]] && [[ $CONFIG = Release ]] && [[ $TRAVIS_BRANCH =~ (master|develop) ]] && [[ $TRAVIS_PULL_REQUEST = false ]] \
-# && docker run -v $(pwd):/cwd snapcore/snapcraft sh -c 'cd /cwd && apt update && snapcraft'"
diff --git a/AppImage-Recipe.sh b/AppImage-Recipe.sh
index a5124a74b..9975f4939 100755
--- a/AppImage-Recipe.sh
+++ b/AppImage-Recipe.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
#
# KeePassXC AppImage Recipe
-# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
+# Copyright (C) 2017-2018 KeePassXC team <https://keepassxc.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -37,12 +37,14 @@ VERSION="$2"
export ARCH=x86_64
mkdir -p $APP.AppDir
-wget -q https://github.com/probonopd/AppImages/raw/master/functions.sh -O ./functions.sh
+wget -q https://github.com/AppImage/AppImages/raw/master/functions.sh -O ./functions.sh
. ./functions.sh
LIB_DIR=./usr/lib
if [ -d ./usr/lib/x86_64-linux-gnu ]; then
LIB_DIR=./usr/lib/x86_64-linux-gnu
+elif [ -d ./usr/lib/i386-linux-gnu ]; then
+ LIB_DIR=./usr/lib/i386-linux-gnu
elif [ -d ./usr/lib64 ]; then
LIB_DIR=./usr/lib64
fi
@@ -60,17 +62,25 @@ if [ "$QXCB_PLUGIN" == "" ]; then
fi
QT_PLUGIN_PATH="$(dirname $(dirname $QXCB_PLUGIN))"
mkdir -p ".${QT_PLUGIN_PATH}/platforms"
-cp "$QXCB_PLUGIN" ".${QT_PLUGIN_PATH}/platforms/"
+cp -a "$QXCB_PLUGIN" ".${QT_PLUGIN_PATH}/platforms/"
+cp -a "${QT_PLUGIN_PATH}/platforminputcontexts/" ".${QT_PLUGIN_PATH}/platforminputcontexts/"
+cp -a "${QT_PLUGIN_PATH}/imageformats/" ".${QT_PLUGIN_PATH}/imageformats/"
get_apprun
copy_deps
+
+# protect our libgpg-error from being deleted
+mv ./opt/keepassxc-libs/lib/x86_64-linux-gnu/libgpg-error.so.0 ./protected.so
delete_blacklisted
+mv ./protected.so ./opt/keepassxc-libs/lib/x86_64-linux-gnu/libgpg-error.so.0
get_desktop
get_icon
cat << EOF > ./usr/bin/keepassxc_env
#!/usr/bin/env bash
export LD_LIBRARY_PATH="..$(dirname ${QT_PLUGIN_PATH})/lib:\${LD_LIBRARY_PATH}"
+export LD_LIBRARY_PATH="../opt/keepassxc-libs/lib/x86_64-linux-gnu:\${LD_LIBRARY_PATH}"
+
export QT_PLUGIN_PATH="..${QT_PLUGIN_PATH}:\${KPXC_QT_PLUGIN_PATH}"
# unset XDG_DATA_DIRS to make tray icon work in Ubuntu Unity
@@ -80,6 +90,11 @@ unset XDG_DATA_DIRS
if [ "\${1}" == "cli" ]; then
shift
exec keepassxc-cli "\$@"
+elif [ "\${1}" == "proxy" ]; then
+ shift
+ exec keepassxc-proxy "\$@"
+elif [ -v CHROME_WRAPPER ] || [ -v MOZ_LAUNCHED_CHILD ]; then
+ exec keepassxc-proxy "\$@"
else
exec keepassxc "\$@"
fi
diff --git a/CHANGELOG b/CHANGELOG
index 24e935548..038943890 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,55 @@
+2.3.0 (2018-02-27)
+=========================
+
+- Add support for KDBX 4.0, Argon2 and ChaCha20 [#148, #1179, #1230, #1494]
+- Add SSH Agent feature [#1098, #1450, #1463]
+- Add preview panel with details of the selected entry [#879, #1338]
+- Add more and configurable columns to entry table and allow copying of values by double click [#1305]
+- Add KeePassXC-Browser API as a replacement for KeePassHTTP [#608]
+- Deprecate KeePassHTTP [#1392]
+- Add support for Steam one-time passwords [#1206]
+- Add support for multiple Auto-Type sequences for a single entry [#1390]
+- Adjust YubiKey HMAC-SHA1 challenge-response key generation for KDBX 4.0 [#1060]
+- Replace qHttp with cURL for website icon downloads [#1460]
+- Remove lock file [#1231]
+- Add option to create backup file before saving [#1385]
+- Ask to save a generated password before closing the entry password generator [#1499]
+- Resolve placeholders recursively [#1078]
+- Add Auto-Type button to the toolbar [#1056]
+- Improve window focus handling for Auto-Type dialogs [#1204, #1490]
+- Auto-Type dialog and password generator can now be exited with ESC [#1252, #1412]
+- Add optional dark tray icon [#1154]
+- Add new "Unsafe saving" option to work around saving problems with file sync services [#1385]
+- Add IBus support to AppImage and additional image formats to Windows builds [#1534, #1537]
+- Add diceware password generator to CLI [#1406]
+- Add --key-file option to CLI [#816, #824]
+- Add DBus interface for opening and closing KeePassXC databases [#283]
+- Add KDBX compression options to database settings [#1419]
+- Discourage use of old fixed-length key files in favor of arbitrary files [#1326, #1327]
+- Correct reference resolution in entry fields [#1486]
+- Fix window state and recent databases not being remembered on exit [#1453]
+- Correct history item generation when configuring TOTP for an entry [#1446]
+- Correct multiple TOTP bugs [#1414]
+- Automatic saving after every change is now a default [#279]
+- Allow creation of new entries during search [#1398]
+- Correct menu issues on macOS [#1335]
+- Allow compilation on OpenBSD [#1328]
+- Improve entry attachments view [#1139, #1298]
+- Fix auto lock for Gnome and Xfce [#910, #1249]
+- Don't remember key files in file dialogs when the setting is disabled [#1188]
+- Improve database merging and conflict resolution [#807, #1165]
+- Fix macOS pasteboard issues [#1202]
+- Improve startup times on some platforms [#1205]
+- Hide the notes field by default [#1124]
+- Toggle main window by clicking tray icon with the middle mouse button [#992]
+- Fix custom icons not copied over when databases are merged [#1008]
+- Allow use of DEL key to delete entries [#914]
+- Correct intermittent crash due to stale history items [#1527]
+- Sanitize newline characters in title, username and URL fields [#1502]
+- Reopen previously opened databases in correct order [#774]
+- Use system's zxcvbn library if available [#701]
+- Implement various i18n improvements [#690, #875, #1436]
+
2.2.4 (2017-12-13)
=========================
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 479ea86f5..7410b4e04 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
-# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,16 +14,16 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+cmake_minimum_required(VERSION 3.1.0)
+
+project(KeePassXC)
+
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo Debug DebugFull Profile MinSizeRel."
FORCE)
endif()
-project(KeePassXC)
-
-cmake_minimum_required(VERSION 3.1.0)
-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# Support Visual Studio Code
@@ -36,30 +36,89 @@ include(CheckCXXSourceCompiles)
option(WITH_TESTS "Enable building of unit tests" ON)
option(WITH_GUI_TESTS "Enable building of GUI tests" OFF)
option(WITH_DEV_BUILD "Use only for development. Disables/warns about deprecated methods." OFF)
-option(WITH_ASAN "Enable address sanitizer checks (Linux only)" OFF)
+option(WITH_ASAN "Enable address sanitizer checks (Linux / macOS only)" OFF)
option(WITH_COVERAGE "Use to build with coverage tests (GCC only)." OFF)
-option(WITH_APP_BUNDLE "Enable Application Bundle for OS X" ON)
+option(WITH_APP_BUNDLE "Enable Application Bundle for macOS" ON)
+
+set(WITH_XC_ALL OFF CACHE BOOLEAN "Build in all available plugins")
option(WITH_XC_AUTOTYPE "Include Auto-Type." ON)
-option(WITH_XC_HTTP "Include KeePassHTTP and Custom Icon Downloads." OFF)
+option(WITH_XC_NETWORKING "Include networking code (e.g. for downlading website icons)." OFF)
+option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF)
+option(WITH_XC_HTTP "Include KeePassHTTP-compatible browser integration (deprecated, implies WITH_NETWORKING)." OFF)
option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
+option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
+
+if(WITH_XC_HTTP)
+ message(WARNING "KeePassHTTP support has been deprecated and will be removed in a future version. Please use WITH_XC_BROWSER instead!\n"
+ "For enabling / disabling network access code, WITH_XC_HTTP has been replaced by WITH_XC_NETWORKING.")
+ set(WITH_XC_NETWORKING ON CACHE BOOL "Include networking code (e.g. for downlading website icons)." FORCE)
+endif()
+
+if(WITH_XC_ALL)
+ # Enable all options
+ set(WITH_XC_AUTOTYPE ON)
+ set(WITH_XC_NETWORKING ON)
+ set(WITH_XC_BROWSER ON)
+ set(WITH_XC_HTTP ON) # Deprecated
+ set(WITH_XC_YUBIKEY ON)
+ set(WITH_XC_SSHAGENT ON)
+endif()
# Process ui files automatically from source files
set(CMAKE_AUTOUIC ON)
set(KEEPASSXC_VERSION_MAJOR "2")
-set(KEEPASSXC_VERSION_MINOR "2")
-set(KEEPASSXC_VERSION_PATCH "4")
+set(KEEPASSXC_VERSION_MINOR "3")
+set(KEEPASSXC_VERSION_PATCH "0")
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
+set(KEEPASSXC_BUILD_TYPE "Snapshot" CACHE STRING "Set KeePassXC build type to distinguish between stable releases and snapshots")
+set_property(CACHE KEEPASSXC_BUILD_TYPE PROPERTY STRINGS Snapshot Release PreRelease)
+
+# Check if on a tag, if so build as a release
+execute_process(COMMAND git tag --points-at HEAD
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE GIT_TAG)
+if(NOT GIT_TAG AND EXISTS ${CMAKE_SOURCE_DIR}/.version)
+ file(READ ${CMAKE_SOURCE_DIR}/.version OVERRIDE_VERSION)
+endif()
+
+string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}")
+if(OVERRIDE_VERSION)
+ if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$")
+ set(KEEPASSXC_BUILD_TYPE PreRelease)
+ set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
+ elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
+ set(KEEPASSXC_BUILD_TYPE Release)
+ set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
+ endif()
+endif()
+
+if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease" AND NOT OVERRIDE_VERSION)
+ set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview")
+elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot")
+ set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot")
+endif()
+
+if(KEEPASSXC_BUILD_TYPE STREQUAL "Release")
+ set(KEEPASSXC_BUILD_TYPE_RELEASE ON)
+elseif(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease")
+ set(KEEPASSXC_BUILD_TYPE_PRE_RELEASE ON)
+else()
+ set(KEEPASSXC_BUILD_TYPE_SNAPSHOT ON)
+endif()
+
+message(STATUS "Setting up build for KeePassXC v${KEEPASSXC_VERSION}\n")
+
# Distribution info
-set(KEEPASSXC_DIST True)
-set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution type")
+set(KEEPASSXC_DIST ON)
+set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution Type")
set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Other)
if(KEEPASSXC_DIST_TYPE STREQUAL "Snap")
- set(KEEPASSXC_DIST_SNAP True)
+ set(KEEPASSXC_DIST_SNAP ON)
elseif(KEEPASSXC_DIST_TYPE STREQUAL "AppImage")
- set(KEEPASSXC_DIST_APPIMAGE True)
+ set(KEEPASSXC_DIST_APPIMAGE ON)
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Other")
unset(KEEPASSXC_DIST)
endif()
@@ -96,7 +155,7 @@ if(WITH_APP_BUNDLE)
endif()
add_gcc_compiler_flags("-fno-common")
-add_gcc_compiler_flags("-Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long")
+add_gcc_compiler_flags("-Wall -Werror -Wextra -Wundef -Wpointer-arith -Wno-long-long")
add_gcc_compiler_flags("-Wformat=2 -Wmissing-format-attribute")
add_gcc_compiler_flags("-fvisibility=hidden")
add_gcc_compiler_cxxflags("-fvisibility-inlines-hidden")
@@ -110,21 +169,25 @@ endif()
add_gcc_compiler_cxxflags("-fno-exceptions -fno-rtti")
add_gcc_compiler_cxxflags("-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual")
add_gcc_compiler_cflags("-Wchar-subscripts -Wwrite-strings")
+
if(WITH_ASAN)
- if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
- message(FATAL_ERROR "WITH_ASAN is only supported on Linux at the moment.")
+ if(NOT (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR APPLE))
+ message(FATAL_ERROR "WITH_ASAN is only supported on Linux / macOS at the moment.")
endif()
add_gcc_compiler_flags("-fsanitize=address -DWITH_ASAN")
- if(NOT (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9))
- add_gcc_compiler_flags("-fsanitize=leak -DWITH_LSAN")
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ if(NOT (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9))
+ add_gcc_compiler_flags("-fsanitize=leak -DWITH_LSAN")
+ endif()
endif()
+
endif()
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
if (CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)")
- add_gcc_compiler_flags("-D_FORTIFY_SOURCE=2")
+ add_gcc_compiler_flags("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
endif()
check_c_compiler_flag("-Werror=format-security -Werror=implicit-function-declaration" WERROR_C_AVAILABLE)
@@ -159,14 +222,13 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
endif()
+add_gcc_compiler_cflags("-std=c99")
add_gcc_compiler_cxxflags("-std=c++11")
if(APPLE)
add_gcc_compiler_cxxflags("-stdlib=libc++")
endif()
-add_gcc_compiler_cflags("-ansi")
-
if(WITH_DEV_BUILD)
add_definitions(-DQT_DEPRECATED_WARNINGS -DGCRYPT_NO_DEPRECATED)
endif()
@@ -190,15 +252,18 @@ endif()
if(APPLE AND WITH_APP_BUNDLE AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
set(CMAKE_INSTALL_PREFIX "/Applications")
+ set(CMAKE_INSTALL_MANDIR "/usr/local/share/man")
endif()
if(MINGW)
set(CLI_INSTALL_DIR ".")
+ set(PROXY_INSTALL_DIR ".")
set(BIN_INSTALL_DIR ".")
set(PLUGIN_INSTALL_DIR ".")
set(DATA_INSTALL_DIR "share")
elseif(APPLE AND WITH_APP_BUNDLE)
set(CLI_INSTALL_DIR "/usr/local/bin")
+ set(PROXY_INSTALL_DIR "/usr/local/bin")
set(BIN_INSTALL_DIR ".")
set(PLUGIN_INSTALL_DIR "${PROGNAME}.app/Contents/PlugIns")
set(DATA_INSTALL_DIR "${PROGNAME}.app/Contents/Resources")
@@ -206,6 +271,7 @@ else()
include(GNUInstallDirs)
set(CLI_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
+ set(PROXY_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/keepassxc")
set(DATA_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/keepassxc")
@@ -215,41 +281,53 @@ if(WITH_TESTS)
enable_testing()
endif(WITH_TESTS)
-find_package(Qt5Core 5.2 REQUIRED)
-find_package(Qt5Network 5.2 REQUIRED)
-find_package(Qt5Concurrent 5.2 REQUIRED)
-find_package(Qt5Widgets 5.2 REQUIRED)
-find_package(Qt5Test 5.2 REQUIRED)
-find_package(Qt5LinguistTools 5.2 REQUIRED)
-find_package(Qt5Network 5.2 REQUIRED)
-if (UNIX AND NOT APPLE)
- find_package(Qt5DBus 5.2 REQUIRED)
+if(UNIX AND NOT APPLE)
+ find_package(Qt5 COMPONENTS Core Network Concurrent Widgets Test LinguistTools DBus REQUIRED)
+elseif(APPLE)
+ find_package(Qt5 COMPONENTS Core Network Concurrent Widgets Test LinguistTools REQUIRED
+ HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH
+ )
+ find_package(Qt5 COMPONENTS MacExtras
+ HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH
+ )
+else()
+ find_package(Qt5 COMPONENTS Core Network Concurrent Widgets Test LinguistTools REQUIRED)
+endif()
+
+if(Qt5Core_VERSION VERSION_LESS "5.2.0")
+ message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
endif()
+
+get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH)
+
set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTORCC ON)
+
+if(APPLE)
+ set(CMAKE_MACOSX_RPATH TRUE)
+ find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
+ if(NOT MACDEPLOYQT_EXE)
+ message(FATAL_ERROR "macdeployqt is required to build in macOS")
+ else()
+ message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
+ endif()
+endif()
# Debian sets the the build type to None for package builds.
# Make sure we don't enable asserts there.
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_NONE QT_NO_DEBUG)
find_package(LibGPGError REQUIRED)
-
-find_package(Gcrypt 1.6.0 REQUIRED)
+find_package(Gcrypt 1.7.0 REQUIRED)
+find_package(Argon2 REQUIRED)
find_package(ZLIB REQUIRED)
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
-check_cxx_source_compiles("
- #include <zlib.h>
-
- #if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1200)
- #error zlib 1.2.x or higher is required to use the gzip format
- #endif
-
- int main() { return 0; }" ZLIB_SUPPORTS_GZIP)
-
-if(NOT ZLIB_SUPPORTS_GZIP)
- message(FATAL_ERROR "zlib 1.2.x or higher is required to use the gzip format")
+if(ZLIB_VERSION_STRING VERSION_LESS "1.2.0")
+ message(FATAL_ERROR "zlib 1.2.0 or higher is required to use the gzip format")
endif()
# Optional
diff --git a/COPYING b/COPYING
index 403e4564b..195650551 100644
--- a/COPYING
+++ b/COPYING
@@ -27,7 +27,7 @@ Copyright: 2010-2012, Felix Geyer <debfx@fobos.de>
2000-2008, Tom Sato <VEF00200@nifty.ne.jp>
2013, Laszlo Papp <lpapp@kde.org>
2013, David Faure <faure@kde.org>
- 2016-2017, KeePassXC Team <team@keepassxc.org>
+ 2016-2018, KeePassXC Team <team@keepassxc.org>
License: GPL-2 or GPL-3
Comment: The "KeePassXC Team" in every copyright notice is formed by the following people:
@@ -55,10 +55,6 @@ Files: cmake/GenerateProductVersion.cmake
Copyright: 2015 halex2005 <akharlov@gmail.com>
License: MIT
-Files: cmake/CodeCoverage.cmake
-Copyright: 2012 - 2015, Lars Bilke
-License: BSD-3-clause
-
Files: share/icons/application/*/apps/keepassxc.png
share/icons/application/scalable/apps/keepassxc.svgz
share/icons/application/*/apps/keepassxc-dark.png
@@ -156,6 +152,7 @@ License: LGPL-2.1
Comment: based on Nuvola icon theme
Files: share/icons/application/*/actions/application-exit.png
+ share/icons/application/*/actions/chronometer.png
share/icons/application/*/actions/configure.png
share/icons/application/*/actions/dialog-close.png
share/icons/application/*/actions/dialog-ok.png
@@ -178,6 +175,7 @@ Files: share/icons/application/*/actions/application-exit.png
share/icons/application/*/actions/view-history.png
share/icons/application/*/apps/internet-web-browser.png
share/icons/application/*/apps/preferences-desktop-icons.png
+ share/icons/application/*/apps/utilities-terminal.png
share/icons/application/*/categories/preferences-other.png
share/icons/application/*/status/dialog-error.png
share/icons/application/*/status/dialog-information.png
@@ -225,8 +223,8 @@ Copyright: 2009-2010, Iowa State University
License: Boost-1.0
Files: src/zxcvbn/zxcvbn.*
-Copyright: 2015, Tony Evans
-License: BSD 3-clause
+Copyright: 2015-2017, Tony Evans
+License: MIT
Files: src/http/qhttp/*
Copyright: 2014, Amir Zamani
@@ -237,3 +235,7 @@ Files: src/gui/KMessageWidget.h
Copyright: 2011 Aurélien Gâteau <agateau@kde.org>
2014 Dominik Haumann <dhaumann@kde.org>
License: LGPL-2.1
+
+Files: share/macosx/dmg-background.tiff
+Copyright: 2008-2014, Andrey Tarantsov
+License: MIT
diff --git a/Dockerfile b/Dockerfile
index a5966be39..cee347e69 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# KeePassXC Linux Release Build Dockerfile
-# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
+# Copyright (C) 2017-2018 KeePassXC team <https://keepassxc.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -16,8 +16,10 @@
FROM ubuntu:14.04
+ENV REBUILD_COUNTER=8
+
ENV QT5_VERSION=59
-ENV QT5_PPA_VERSION=${QT5_VERSION}2
+ENV QT5_PPA_VERSION=${QT5_VERSION}4
RUN set -x \
&& apt-get update -y \
@@ -36,10 +38,16 @@ RUN set -x \
&& apt-get install -y \
cmake3 \
g++ \
- libgcrypt20-dev \
+ git \
+ libgcrypt20-18-dev \
+ libargon2-0-dev \
+ libsodium-dev \
+ libcurl-no-gcrypt-dev \
qt${QT5_VERSION}base \
qt${QT5_VERSION}tools \
qt${QT5_VERSION}x11extras \
+ qt${QT5_VERSION}translations \
+ qt${QT5_VERSION}imageformats \
zlib1g-dev \
libxi-dev \
libxtst-dev \
@@ -47,10 +55,15 @@ RUN set -x \
libyubikey-dev \
libykpers-1-dev
-ENV CMAKE_PREFIX_PATH=/opt/qt${QT5_VERSION}/lib/cmake
-ENV LD_LIBRARY_PATH=/opt/qt${QT5_VERSION}/lib
+ENV CMAKE_PREFIX_PATH="/opt/qt${QT5_VERSION}/lib/cmake"
+ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
+ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
+ENV CPATH="${CMAKE_INCLUDE_PATH}"
+ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/qt${QT5_VERSION}/lib"
+
RUN set -x \
- && echo /opt/qt${QT_VERSION}/lib > /etc/ld.so.conf.d/qt${QT5_VERSION}.conf
+ && echo "/opt/qt${QT5_VERSION}/lib" > /etc/ld.so.conf.d/qt${QT5_VERSION}.conf \
+ && echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
# AppImage dependencies
RUN set -x \
@@ -58,6 +71,10 @@ RUN set -x \
libfuse2 \
wget
+RUN set -x \
+ && apt-get autoremove --purge \
+ && rm -rf /var/lib/apt/lists/*
+
VOLUME /keepassxc/src
VOLUME /keepassxc/out
WORKDIR /keepassxc
diff --git a/INSTALL.md b/INSTALL.md
index deed3e5c6..86048b501 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,11 +1,13 @@
-Install KeePassXC
+Build and Install KeePassXC
=================
-This document will guide you across the steps to install KeePassXC.
-You can visit the online version of this document a the following link
+This document will guide you through the steps to build and install KeePassXC from source.
+You can visit the online version of this document at the following link:
https://github.com/keepassxreboot/keepassx/wiki/Install-Instruction-from-Source
+The [KeePassXC QuickStart](./docs/QUICKSTART.md) gets you started using KeePassXC on your
+Windows, Mac, or Linux computer using the pre-built binaries.
Build Dependencies
==================
@@ -23,15 +25,16 @@ The following libraries are required:
* zlib
* libmicrohttpd
* libxi, libxtst, qtx11extras (optional for auto-type on X11)
+* libsodium (>= 1.0.12, optional for KeePassXC-Browser support)
+* libargon2
Prepare the Building Environment
================================
-Building Environment on Linux ==> https://github.com/keepassxreboot/keepassx/wiki/Building-Environment-on-Linux
-Building Environment on Windows ==> https://github.com/keepassxreboot/keepassx/wiki/Building-Environment-on-Windows
-Building Environment on MacOS ==> https://github.com/keepassxreboot/keepassx/wiki/Building-Environment-on-MacOS
-
+* [Building Environment on Linux](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux)
+* [Building Environment on Windows](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Windows)
+* [Building Environment on MacOS](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-OS-X)
Build Steps
===========
@@ -39,32 +42,69 @@ Build Steps
To compile from source, open a **Terminal (on Linux/MacOS)** or a **MSYS2-MinGW shell (on Windows)**<br/>
**Note:** on Windows make sure you are using a **MINGW shell** by checking the label before the current path
-Navigate to the path you have downloaded KeePassXC and type these commands:
+First, download the KeePassXC [source tarball](https://keepassxc.org/download#source)
+or check out the latest version from our [Git repository](https://github.com/keepassxreboot/keepassxc).
+
+To clone the project from Git, `cd` to a suitable location and run
+```bash
+git clone https://github.com/keepassxreboot/keepassxc.git
```
+
+This will clone the entire contents of the repository and check out the current `develop` branch.
+
+To update the project from within the project's folder, you can run the following command:
+
+```bash
+git pull
+```
+
+Navigate to the directory where you have downloaded KeePassXC and type these commands:
+
+```
+cd directory-where-sources-live
mkdir build
cd build
-cmake -DWITH_TESTS=OFF
+cmake -DWITH_TESTS=OFF ...and other options - see below...
make
```
+These steps place the compiled KeePassXC binary inside the `./build/src/` directory.
+(Note the cmake notes/options below.)
-**Note:** If you are on MacOS you must add this parameter to **Cmake**, with the Qt version you have installed<br/> `-DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.6.2/lib/cmake/`
+**Cmake Notes:**
-You will have the compiled KeePassXC binary inside the `./build/src/` directory.
+* Common cmake parameters
-Common cmake parameters
-```
--DCMAKE_INSTALL_PREFIX=/usr/local
--DCMAKE_VERBOSE_MAKEFILE=ON
--DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
--DWITH_GUI_TESTS=ON
-```
+ ```
+ -DCMAKE_INSTALL_PREFIX=/usr/local
+ -DCMAKE_VERBOSE_MAKEFILE=ON
+ -DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
+ -DWITH_GUI_TESTS=ON
+ ```
+
+* cmake accepts the following options:
+
+ ```
+ -DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
+ -DWITH_XC_HTTP=[ON|OFF] Enable/Disable KeePassHTTP and custom icon downloads (default: OFF)
+ -DWITH_XC_YUBIKEY=[ON|OFF] Enable/Disable YubiKey HMAC-SHA1 authentication support (default: OFF)
+ -DWITH_XC_BROWSER=[ON|OFF] Enable/Disable KeePassXC-Browser extension support (default: OFF)
+
+ -DWITH_TESTS=[ON|OFF] Enable/Disable building of unit tests (default: ON)
+ -DWITH_GUI_TESTS=[ON|OFF] Enable/Disable building of GUI tests (default: OFF)
+ -DWITH_DEV_BUILD=[ON|OFF] Enable/Disable deprecated method warnings (default: OFF)
+ -DWITH_ASAN=[ON|OFF] Enable/Disable address sanitizer checks (Linux / macOS only) (default: OFF)
+ -DWITH_COVERAGE=[ON|OFF] Enable/Disable coverage tests (GCC only) (default: OFF)
+ ```
+
+* If you are on MacOS you must add this parameter to **Cmake**, with the Qt version you have installed<br/> `-DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.6.2/lib/cmake/`
+:exclamation: When building with ASan support on macOS, you need to use `export ASAN_OPTIONS=detect_leaks=0` before running the tests (no LSan support in macOS).
Installation
============
-To install this binary execute the following:
+After you have successfully built KeePassXC, install the binary by executing the following:
```bash
sudo make install
diff --git a/LICENSE.MIT b/LICENSE.MIT
new file mode 100644
index 000000000..d13cc4b26
--- /dev/null
+++ b/LICENSE.MIT
@@ -0,0 +1,19 @@
+The MIT License (MIT)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 5588e3222..9f81795c5 100644
--- a/README.md
+++ b/README.md
@@ -1,78 +1,68 @@
-# <img src="https://keepassxc.org/logo.png" width="40" height="40"/> KeePassXC [![Travis Build Status](https://travis-ci.org/keepassxreboot/keepassxc.svg?branch=develop)](https://travis-ci.org/keepassxreboot/keepassxc) [![Coverage Status](https://coveralls.io/repos/github/keepassxreboot/keepassxc/badge.svg)](https://coveralls.io/github/keepassxreboot/keepassxc)
+# <img src="https://keepassxc.org/logo.png" width="40" height="40"/> KeePassXC
+[![TeamCity Build Status](https://ci.keepassxc.org/app/rest/builds/buildType:\(id:KeepassXC_TeamCityCi\)/statusIcon?guest=1)](https://ci.keepassxc.org/viewType.html?buildTypeId=KeepassXC_TeamCityCi&guest=1) [![Coverage Status](https://coveralls.io/repos/github/keepassxreboot/keepassxc/badge.svg)](https://coveralls.io/github/keepassxreboot/keepassxc)
-KeePass Cross-platform Community Edition
+## About KeePassXC
+[KeePassXC](https://keepassxc.org) is a cross-platform community fork of
+[KeePassX](https://www.keepassx.org/).
+Our goal is to extend and improve it with new features and bugfixes
+to provide a feature-rich, fully cross-platform and modern
+open-source password manager.
-## About
-[KeePassXC](https://keepassxc.org) is a community fork of [KeePassX](https://www.keepassx.org/) with the goal to extend and improve it with new features and bugfixes to provide a feature-rich, fully cross-platform and modern open-source password manager.
+## Installation
+The [KeePassXC QuickStart](./docs/QUICKSTART.md) gets you started using
+KeePassXC on your Windows, Mac, or Linux computer using pre-compiled binaries
+from the [downloads page](https://keepassxc.org/download).
+Additionally, individual Linux distributions may ship their own versions,
+so please check out your distribution's package list to see if KeePassXC is available.
## Additional features compared to KeePassX
-- Auto-Type on all three major platforms (Linux, Windows, OS X)
-- Stand-alone password generator
+- Auto-Type on all three major platforms (Linux, Windows, macOS)
+- Twofish encryption
+- YubiKey challenge-response support
+- TOTP generation
+- CSV import
+- Command line interface
+- DEP and ASLR hardening
+- Stand-alone password and passphrase generator
- Password strength meter
-- YubiKey HMAC-SHA1 authentication for unlocking databases
- Using website favicons as entry icons
- Merging of databases
- Automatic reload when the database changed on disk
-- KeePassHTTP support for use with KeePassHTTP-Connector for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepasshttp-connector/) and [Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepasshttp-connector/dafgdjggglmmknipkhngniifhplpcldb), and [passafari](https://github.com/mmichaa/passafari.safariextension/) in Safari.
+- Browser integration with KeePassHTTP-Connector for
+[Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepasshttp-connector/) and
+[Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepasshttp-connector/dafgdjggglmmknipkhngniifhplpcldb), and
+[passafari](https://github.com/mmichaa/passafari.safariextension/) in Safari. [[See note about KeePassHTTP]](#Note_about_KeePassHTTP)
+- Browser integration with KeePassXC-Browser using [native messaging](https://developer.chrome.com/extensions/nativeMessaging) for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) and [Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepassxc-browser/iopaggbpplllidnfmcghoonnokmjoicf)
- Many bug fixes
For a full list of features and changes, read the [CHANGELOG](CHANGELOG) document.
-### Note about KeePassHTTP
-KeePassHTTP is not a highly secure protocol and has certain flaw which allow an attacker to decrypt your passwords when they manage to intercept communication between a KeePassHTTP server and PassIFox/chromeIPass over a network connection (see [here](https://github.com/pfn/keepasshttp/issues/258) and [here](https://github.com/keepassxreboot/keepassxc/issues/147)). KeePassXC therefore strictly limits communication between itself and the browser plugin to your local computer. As long as your computer is not compromised, your passwords are fairly safe that way, but use it at your own risk!
-
-### Installation
-Pre-compiled binaries can be found on the [downloads page](https://keepassxc.org/download). Additionally, individual Linux distributions may ship their own versions, so please check out your distribution's package list to see if KeePassXC is available.
-
-### Building KeePassXC
-
-*More detailed instructions are available in the INSTALL file or on the [Wiki page](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC).*
-
-First, you must download the KeePassXC [source tarball](https://keepassxc.org/download#source) or check out the latest version from our [Git repository](https://github.com/keepassxreboot/keepassxc).
-
-To clone the project from Git, `cd` to a suitable location and run
-
-```bash
-git clone https://github.com/keepassxreboot/keepassxc.git
-```
-
-This will clone the entire contents of the repository and check out the current `develop` branch.
+## Building KeePassXC
-To update the project from within the project's folder, you can run the following command:
+Detailed instructions are available in the [Build and Install](./INSTALL.md)
+page or on the [Wiki page](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC).
-```bash
-git pull
-```
+## Contributing
-Once you have downloaded the source code, you can `cd` into the source code directory, build and install KeePassXC:
-
-```bash
-mkdir build
-cd build
-cmake -DWITH_TESTS=OFF ..
-make -j8
-sudo make install
-```
-
-cmake accepts the following options:
-
-```
- -DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
- -DWITH_XC_HTTP=[ON|OFF] Enable/Disable KeePassHTTP and custom icon downloads (default: OFF)
- -DWITH_XC_YUBIKEY=[ON|OFF] Enable/Disable YubiKey HMAC-SHA1 authentication support (default: OFF)
-
- -DWITH_TESTS=[ON|OFF] Enable/Disable building of unit tests (default: ON)
- -DWITH_GUI_TESTS=[ON|OFF] Enable/Disable building of GUI tests (default: OFF)
- -DWITH_DEV_BUILD=[ON|OFF] Enable/Disable deprecated method warnings (default: OFF)
- -DWITH_ASAN=[ON|OFF] Enable/Disable address sanitizer checks (Linux only) (default: OFF)
- -DWITH_COVERAGE=[ON|OFF] Enable/Disable coverage tests (GCC only) (default: OFF)
-```
-
-### Contributing
-
-We are always looking for suggestions how to improve our application. If you find any bugs or have an idea for a new feature, please let us know by opening a report in our [issue tracker](https://github.com/keepassxreboot/keepassxc/issues) on GitHub or join us on IRC on freenode channels #keepassxc or #keepassxc-dev.
+We are always looking for suggestions how to improve our application.
+If you find any bugs or have an idea for a new feature, please let us know by
+opening a report in our [issue tracker](https://github.com/keepassxreboot/keepassxc/issues)
+on GitHub or join us on IRC on freenode channels #keepassxc or #keepassxc-dev.
You can of course also directly contribute your own code. We are happy to accept your pull requests.
Please read the [CONTRIBUTING document](.github/CONTRIBUTING.md) for further information.
+
+### Note about KeePassHTTP
+The KeePassHTTP protocol is not a highly secure protocol.
+It has a certain flaw which could allow an attacker to decrypt your passwords
+should they manage to impersonate the web browser extension from a remote address.
+<!--intercept communication between a KeePassHTTP server
+and PassIFox/chromeIPass over a network connection -->
+(See [here](https://github.com/pfn/keepasshttp/issues/258) and [here](https://github.com/keepassxreboot/keepassxc/issues/147)).
+
+To minimize the risk, KeePassXC strictly limits communication between itself
+and the browser plugin to your local computer (localhost).
+This makes your passwords quite safe,
+but as with all open source software, use it at your own risk!
diff --git a/ci/trusty/Dockerfile b/ci/trusty/Dockerfile
new file mode 100644
index 000000000..d10c609a0
--- /dev/null
+++ b/ci/trusty/Dockerfile
@@ -0,0 +1,73 @@
+# KeePassXC Linux Release Build Dockerfile
+# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 or (at your option)
+# version 3 of the License.
+#
+# 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# TIP: check this Dockerfile using this online tool: https://www.fromlatest.io
+
+FROM ubuntu:14.04
+
+ENV REBUILD_COUNTER=4
+
+ENV QT5_VERSION=53
+ENV QT5_PPA_VERSION=${QT5_VERSION}2
+
+RUN set -x \
+ && apt-get update -y \
+ && apt-get -y install software-properties-common
+
+RUN set -x \
+ && add-apt-repository ppa:beineri/opt-qt${QT5_PPA_VERSION}-trusty \
+ && add-apt-repository ppa:phoerious/keepassxc
+
+RUN set -x \
+ && apt-get -y update \
+ && apt-get -y --no-install-recommends install \
+ build-essential \
+ clang-3.6 \
+ libclang-common-3.6-dev \
+ clang-format-3.6 \
+ cmake3 \
+ make \
+ libgcrypt20-18-dev \
+ libargon2-0-dev \
+ libsodium-dev \
+ libcurl-no-gcrypt-dev \
+ qt${QT5_VERSION}base \
+ qt${QT5_VERSION}tools \
+ qt${QT5_VERSION}x11extras \
+ qt${QT5_VERSION}translations \
+ zlib1g-dev \
+ libyubikey-dev \
+ libykpers-1-dev \
+ libxi-dev \
+ libxtst-dev \
+ xvfb
+
+ENV CMAKE_PREFIX_PATH="/opt/qt${QT5_VERSION}/lib/cmake"
+ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
+ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
+ENV CPATH="${CMAKE_INCLUDE_PATH}"
+ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/qt${QT5_VERSION}/lib"
+
+RUN set -x \
+ && echo "/opt/qt${QT5_VERSION}/lib" > /etc/ld.so.conf.d/qt${QT5_VERSION}.conf \
+ && echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
+
+RUN set -x \
+ && apt-get autoremove --purge \
+ && rm -rf /var/lib/apt/lists/*
+
+VOLUME ["/keepassxc"]
+WORKDIR /keepassxc
diff --git a/cmake/FindArgon2.cmake b/cmake/FindArgon2.cmake
new file mode 100644
index 000000000..c0fb53b41
--- /dev/null
+++ b/cmake/FindArgon2.cmake
@@ -0,0 +1,34 @@
+# Copyright (C) 2017 KeePassXC Team
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 or (at your option)
+# version 3 of the License.
+#
+# 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+find_path(ARGON2_INCLUDE_DIR argon2.h)
+if (MINGW)
+ # find static library on Windows, and redefine used symbols to
+ # avoid definition name conflicts with libsodium
+ find_library(ARGON2_SYS_LIBRARIES libargon2.a)
+ message(STATUS "Patching libargon2...\n")
+ execute_process(COMMAND objcopy
+ --redefine-sym argon2_hash=libargon2_argon2_hash
+ --redefine-sym argon2_error_message=libargon2_argon2_error_message
+ ${ARGON2_SYS_LIBRARIES} ${CMAKE_BINARY_DIR}/libargon2_patched.a
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ find_library(ARGON2_LIBRARIES libargon2_patched.a PATHS ${CMAKE_BINARY_DIR} NO_DEFAULT_PATH)
+else()
+ find_library(ARGON2_LIBRARIES argon2)
+endif()
+mark_as_advanced(ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Argon2 DEFAULT_MSG ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
diff --git a/cmake/FindLibGPGError.cmake b/cmake/FindLibGPGError.cmake
index c1e1b8686..9a18371ba 100644
--- a/cmake/FindLibGPGError.cmake
+++ b/cmake/FindLibGPGError.cmake
@@ -14,10 +14,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
find_path(GPGERROR_INCLUDE_DIR gpg-error.h)
-
find_library(GPGERROR_LIBRARIES gpg-error)
mark_as_advanced(GPGERROR_LIBRARIES GPGERROR_INCLUDE_DIR)
include(FindPackageHandleStandardArgs)
+include_directories(${GPGERROR_INCLUDE_DIR})
find_package_handle_standard_args(LibGPGError DEFAULT_MSG GPGERROR_LIBRARIES GPGERROR_INCLUDE_DIR)
diff --git a/cmake/FindYubiKey.cmake b/cmake/FindYubiKey.cmake
index e5e0bb681..d2266b407 100644
--- a/cmake/FindYubiKey.cmake
+++ b/cmake/FindYubiKey.cmake
@@ -17,8 +17,8 @@ find_path(YUBIKEY_CORE_INCLUDE_DIR yubikey.h)
find_path(YUBIKEY_PERS_INCLUDE_DIR ykcore.h PATH_SUFFIXES ykpers-1)
set(YUBIKEY_INCLUDE_DIRS ${YUBIKEY_CORE_INCLUDE_DIR} ${YUBIKEY_PERS_INCLUDE_DIR})
-find_library(YUBIKEY_CORE_LIBRARY yubikey)
-find_library(YUBIKEY_PERS_LIBRARY ykpers-1)
+find_library(YUBIKEY_CORE_LIBRARY NAMES yubikey.dll libyubikey.so yubikey)
+find_library(YUBIKEY_PERS_LIBRARY NAMES ykpers-1.dll libykpers-1.so ykpers-1)
set(YUBIKEY_LIBRARIES ${YUBIKEY_CORE_LIBRARY} ${YUBIKEY_PERS_LIBRARY})
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Findsodium.cmake b/cmake/Findsodium.cmake
new file mode 100644
index 000000000..ad7031e5a
--- /dev/null
+++ b/cmake/Findsodium.cmake
@@ -0,0 +1,267 @@
+# Written in 2016 by Henrik Steffen Gaßmann <henrik@gassmann.onl>
+#
+# To the extent possible under law, the author(s) have dedicated all
+# copyright and related and neighboring rights to this software to the
+# public domain worldwide. This software is distributed without any warranty.
+#
+# You should have received a copy of the CC0 Public Domain Dedication
+# along with this software. If not, see
+#
+# http://creativecommons.org/publicdomain/zero/1.0/
+#
+########################################################################
+# Tries to find the local libsodium installation.
+#
+# On Windows the sodium_DIR environment variable is used as a default
+# hint which can be overridden by setting the corresponding cmake variable.
+#
+# Once done the following variables will be defined:
+#
+# sodium_FOUND
+# sodium_INCLUDE_DIR
+# sodium_LIBRARY_DEBUG
+# sodium_LIBRARY_RELEASE
+#
+#
+# Furthermore an imported "sodium" target is created.
+#
+
+if (CMAKE_C_COMPILER_ID STREQUAL "GNU"
+ OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ set(_GCC_COMPATIBLE 1)
+endif()
+
+# static library option
+option(sodium_USE_STATIC_LIBS "enable to statically link against sodium")
+if(NOT (sodium_USE_STATIC_LIBS EQUAL sodium_USE_STATIC_LIBS_LAST))
+ unset(sodium_LIBRARY CACHE)
+ unset(sodium_LIBRARY_DEBUG CACHE)
+ unset(sodium_LIBRARY_RELEASE CACHE)
+ unset(sodium_DLL_DEBUG CACHE)
+ unset(sodium_DLL_RELEASE CACHE)
+ set(sodium_USE_STATIC_LIBS_LAST ${sodium_USE_STATIC_LIBS} CACHE INTERNAL "internal change tracking variable")
+endif()
+
+
+########################################################################
+# UNIX
+if (UNIX)
+ # import pkg-config
+ find_package(PkgConfig QUIET)
+ if (PKG_CONFIG_FOUND)
+ pkg_check_modules(sodium_PKG QUIET libsodium)
+ endif()
+
+ if(sodium_USE_STATIC_LIBS)
+ set(XPREFIX sodium_PKG_STATIC)
+ else()
+ set(XPREFIX sodium_PKG)
+ endif()
+
+ find_path(sodium_INCLUDE_DIR sodium.h
+ HINTS ${${XPREFIX}_INCLUDE_DIRS}
+ )
+ find_library(sodium_LIBRARY_DEBUG NAMES ${${XPREFIX}_LIBRARIES} sodium
+ HINTS ${${XPREFIX}_LIBRARY_DIRS}
+ )
+ find_library(sodium_LIBRARY_RELEASE NAMES ${${XPREFIX}_LIBRARIES} sodium
+ HINTS ${${XPREFIX}_LIBRARY_DIRS}
+ )
+
+
+########################################################################
+# Windows
+elseif (WIN32)
+ set(sodium_DIR "$ENV{sodium_DIR}" CACHE FILEPATH "sodium install directory")
+ mark_as_advanced(sodium_DIR)
+
+ find_path(sodium_INCLUDE_DIR sodium.h
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES include
+ )
+
+ if (MSVC)
+ # detect target architecture
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arch.c" [=[
+ #if defined _M_IX86
+ #error ARCH_VALUE x86_32
+ #elif defined _M_X64
+ #error ARCH_VALUE x86_64
+ #endif
+ #error ARCH_VALUE unknown
+ ]=])
+ try_compile(_UNUSED_VAR "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/arch.c"
+ OUTPUT_VARIABLE _COMPILATION_LOG
+ )
+ string(REGEX REPLACE ".*ARCH_VALUE ([a-zA-Z0-9_]+).*" "\\1" _TARGET_ARCH "${_COMPILATION_LOG}")
+
+ # construct library path
+ if (_TARGET_ARCH STREQUAL "x86_32")
+ string(APPEND _PLATFORM_PATH "Win32")
+ elseif(_TARGET_ARCH STREQUAL "x86_64")
+ string(APPEND _PLATFORM_PATH "x64")
+ else()
+ message(FATAL_ERROR "the ${_TARGET_ARCH} architecture is not supported by Findsodium.cmake.")
+ endif()
+ string(APPEND _PLATFORM_PATH "/$$CONFIG$$")
+
+ if (MSVC_VERSION LESS 1900)
+ math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 60")
+ else()
+ math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 50")
+ endif()
+ string(APPEND _PLATFORM_PATH "/v${_VS_VERSION}")
+
+ if (sodium_USE_STATIC_LIBS)
+ string(APPEND _PLATFORM_PATH "/static")
+ else()
+ string(APPEND _PLATFORM_PATH "/dynamic")
+ endif()
+
+ string(REPLACE "$$CONFIG$$" "Debug" _DEBUG_PATH_SUFFIX "${_PLATFORM_PATH}")
+ string(REPLACE "$$CONFIG$$" "Release" _RELEASE_PATH_SUFFIX "${_PLATFORM_PATH}")
+
+ find_library(sodium_LIBRARY_DEBUG libsodium.lib
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}
+ )
+ find_library(sodium_LIBRARY_RELEASE libsodium.lib
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}
+ )
+ if (NOT sodium_USE_STATIC_LIBS)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
+ find_library(sodium_DLL_DEBUG libsodium
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}
+ )
+ find_library(sodium_DLL_RELEASE libsodium
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}
+ )
+ endif()
+
+ elseif(_GCC_COMPATIBLE)
+ if (sodium_USE_STATIC_LIBS)
+ find_library(sodium_LIBRARY_DEBUG libsodium.a
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES lib
+ )
+ find_library(sodium_LIBRARY_RELEASE libsodium.a
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES lib
+ )
+ else()
+ find_library(sodium_LIBRARY_DEBUG libsodium.dll.a
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES lib
+ )
+ find_library(sodium_LIBRARY_RELEASE libsodium.dll.a
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES lib
+ )
+
+ file(GLOB _DLL
+ LIST_DIRECTORIES false
+ RELATIVE "${sodium_DIR}/bin"
+ "${sodium_DIR}/bin/libsodium*.dll"
+ )
+ find_library(sodium_DLL_DEBUG ${_DLL} libsodium
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES bin
+ )
+ find_library(sodium_DLL_RELEASE ${_DLL} libsodium
+ HINTS ${sodium_DIR}
+ PATH_SUFFIXES bin
+ )
+ endif()
+ else()
+ message(FATAL_ERROR "this platform is not supported by FindSodium.cmake")
+ endif()
+
+
+########################################################################
+# unsupported
+else()
+ message(FATAL_ERROR "this platform is not supported by FindSodium.cmake")
+endif()
+
+
+########################################################################
+# common stuff
+
+# extract sodium version
+if (sodium_INCLUDE_DIR)
+ set(_VERSION_HEADER "${_INCLUDE_DIR}/sodium/version.h")
+ if (EXISTS _VERSION_HEADER)
+ file(READ "${_VERSION_HEADER}" _VERSION_HEADER_CONTENT)
+ string(REGEX REPLACE ".*#[ \t]*define[ \t]*SODIUM_VERSION_STRING[ \t]*\"([^\n]*)\".*" "\\1"
+ sodium_VERSION "${_VERSION_HEADER_CONTENT}")
+ set(sodium_VERSION "${sodium_VERSION}" PARENT_SCOPE)
+ endif()
+endif()
+
+# communicate results
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(sodium
+ REQUIRED_VARS
+ sodium_LIBRARY_RELEASE
+ sodium_LIBRARY_DEBUG
+ sodium_INCLUDE_DIR
+ VERSION_VAR
+ sodium_VERSION
+)
+
+# mark file paths as advanced
+mark_as_advanced(sodium_INCLUDE_DIR)
+mark_as_advanced(sodium_LIBRARY_DEBUG)
+mark_as_advanced(sodium_LIBRARY_RELEASE)
+if (WIN32)
+ mark_as_advanced(sodium_DLL_DEBUG)
+ mark_as_advanced(sodium_DLL_RELEASE)
+endif()
+
+# create imported target
+if(sodium_USE_STATIC_LIBS)
+ set(_LIB_TYPE STATIC)
+else()
+ set(_LIB_TYPE SHARED)
+endif()
+add_library(sodium ${_LIB_TYPE} IMPORTED)
+
+set_target_properties(sodium PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${sodium_INCLUDE_DIR}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+)
+
+if (sodium_USE_STATIC_LIBS)
+ set_target_properties(sodium PROPERTIES
+ INTERFACE_COMPILE_DEFINITIONS "SODIUM_STATIC"
+ IMPORTED_LOCATION "${sodium_LIBRARY_RELEASE}"
+ IMPORTED_LOCATION_DEBUG "${sodium_LIBRARY_DEBUG}"
+ )
+else()
+ if (UNIX)
+ set_target_properties(sodium PROPERTIES
+ IMPORTED_LOCATION "${sodium_LIBRARY_RELEASE}"
+ IMPORTED_LOCATION_DEBUG "${sodium_LIBRARY_DEBUG}"
+ )
+ elseif (WIN32)
+ set_target_properties(sodium PROPERTIES
+ IMPORTED_IMPLIB "${sodium_LIBRARY_RELEASE}"
+ IMPORTED_IMPLIB_DEBUG "${sodium_LIBRARY_DEBUG}"
+ )
+ if (NOT (sodium_DLL_DEBUG MATCHES ".*-NOTFOUND"))
+ set_target_properties(sodium PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${sodium_DLL_DEBUG}"
+ )
+ endif()
+ if (NOT (sodium_DLL_RELEASE MATCHES ".*-NOTFOUND"))
+ set_target_properties(sodium PROPERTIES
+ IMPORTED_LOCATION_RELWITHDEBINFO "${sodium_DLL_RELEASE}"
+ IMPORTED_LOCATION_MINSIZEREL "${sodium_DLL_RELEASE}"
+ IMPORTED_LOCATION_RELEASE "${sodium_DLL_RELEASE}"
+ )
+ endif()
+ endif()
+endif()
diff --git a/docs/KeePassXC-Accept-Button.png b/docs/KeePassXC-Accept-Button.png
new file mode 100644
index 000000000..de4b39261
--- /dev/null
+++ b/docs/KeePassXC-Accept-Button.png
Binary files differ
diff --git a/docs/KeePassXC-Confirm.png b/docs/KeePassXC-Confirm.png
new file mode 100644
index 000000000..989294a4e
--- /dev/null
+++ b/docs/KeePassXC-Confirm.png
Binary files differ
diff --git a/docs/KeePassXC-Connect.png b/docs/KeePassXC-Connect.png
new file mode 100644
index 000000000..55b0f3d49
--- /dev/null
+++ b/docs/KeePassXC-Connect.png
Binary files differ
diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md
new file mode 100644
index 000000000..b4b2d38ca
--- /dev/null
+++ b/docs/QUICKSTART.md
@@ -0,0 +1,47 @@
+# Quick Start for KeePassXC
+
+This procedure gets KeePassXC running on your computer with browser integration,
+using the pre-built binaries available for [download](https://keepassxc.org/download)
+from [KeePassXC site](https://keepassxc.org).
+
+**TL;DR** KeePassXC saves your passwords securely.
+When you double-click a URL in KeePassXC, it launches your default browser to that URL.
+With browser integration configured, KeePassXC automatically enters
+username/password credentials into web page fields.
+
+## Installing and Starting KeePassXC
+
+* [Download the native installer](https://keepassxc.org/download) and install
+KeePassXC for your Windows, macOS, or Linux computer in the usual way for your platform.
+* Open the KeePassXC application.
+* Create a new database and give it a master key that's used to unlock the database file.
+This database holds entries (usernames, passwords, account numbers, notes)
+for all your websites, programs, etc.
+* Create a few entries - enter the username, password, URL, and optionally notes about the entry.
+* KeePassXC securely stores those entries in the database.
+
+
+## Setting up Browser Integration with KeePassXC
+
+* *Within KeePassXC*, go to **Tools->Settings** (on macOS, go to **KeePassXC->Preferences**.)
+* In **Browser Integration**, check **Enable KeePassHTTP server**
+Leave the other options at their defaults.
+* *In your default web browser,* install the KeePassHTTP-Connector extension/add-on. Instructions for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepasshttp-connector/?src=api) or [Chrome](https://chrome.google.com/webstore/detail/keepasshttp-connector/dafgdjggglmmknipkhngniifhplpcldb?utm_source=chrome-app-launcher-info-dialog)
+* Click the KeePassXC icon in the upper-right corner. You'll see the dialog below.
+* Click the blue Connect button to make the browser extension connect to the KeePassXC application.
+<img src="./KeePassXC-Connect.png" height="200" alt="KeePassXC Connect dialog">
+
+* *Switch back to KeePassXC.* You'll see a dialog (below) indicating that a request to connect has arrived.
+* Give the connection a name (perhaps *Keepass-Browsername*, any unique name will suffice) and click OK to accept it.
+* This one-time operation connects KeePassXC and your browser.
+<img src="./KeePassXC-Accept-Button.png" height="200" alt="KeePassXC accept connection dialog">
+
+## Using Browser Integration
+
+* *Within KeePassXC,* double-click the URL of an entry,
+or select it and type Ctrl+U (Cmd+U on macOS).
+* Your browser opens to that URL.
+* If there are username/password fields on that page, you will see the dialog below.
+Click *Allow* to confirm that KeePassXC may access the credentials to auto-fill the fields.
+* Check *Remember this decision* to allow this each time you visit the page.
+<img src="./KeePassXC-Confirm.png" height="200" alt="KeePassCX Confirm Access dialog">
diff --git a/release-tool b/release-tool
index 42cd3a1d6..74f205900 100755
--- a/release-tool
+++ b/release-tool
@@ -37,9 +37,10 @@ DOCKER_CONTAINER_NAME="keepassxc-build-container"
CMAKE_OPTIONS=""
COMPILER="g++"
MAKE_OPTIONS="-j8"
-BUILD_PLUGINS="autotype http yubikey"
+BUILD_PLUGINS="all"
INSTALL_PREFIX="/usr/local"
BUILD_SOURCE_TARBALL=true
+BUILD_SNAPSHOT=false
ORIG_BRANCH=""
ORIG_CWD="$(pwd)"
@@ -50,14 +51,14 @@ printUsage() {
local cmd
if [ "" == "$1" ] || [ "help" == "$1" ]; then
cmd="COMMAND"
- elif [ "check" == "$1" ] || [ "merge" == "$1" ] || [ "build" == "$1" ] || [ "sign" == "$1" ]; then
+ elif [ "check" == "$1" ] || [ "merge" == "$1" ] || [ "build" == "$1" ] || [ "gpgsign" == "$1" ] || [ "appsign" == "$1" ]; then
cmd="$1"
else
logError "Unknown command: '$1'\n"
cmd="COMMAND"
fi
-
- printf "\e[1mUsage:\e[0m $(basename $0) $cmd [--version x.y.z] [options]\n"
+
+ printf "\e[1mUsage:\e[0m $(basename $0) $cmd [options]\n"
if [ "COMMAND" == "$cmd" ]; then
cat << EOF
@@ -66,7 +67,8 @@ Commands:
check Perform a dry-run check, nothing is changed
merge Merge release branch into main branch and create release tags
build Build and package binary release from sources
- sign Sign previously compiled release packages
+ gpgsign Sign previously compiled release packages with GPG
+ appsign Sign binaries with code signing certificates on Windows and macOS
help Show help for the given command
EOF
elif [ "merge" == "$cmd" ]; then
@@ -110,19 +112,29 @@ Options:
-i, --install-prefix Install prefix (default: '${INSTALL_PREFIX}')
-p, --plugins Space-separated list of plugins to build
(default: ${BUILD_PLUGINS})
+ --snapshot Don't checkout the release tag
-n, --no-source-tarball Don't build source tarball
-h, --help Show this help
EOF
- elif [ "sign" == "$cmd" ]; then
+ elif [ "gpgsign" == "$cmd" ]; then
cat << EOF
-Sign previously compiled release packages
+Sign previously compiled release packages with GPG
Options:
-f, --files Files to sign (required)
-g, --gpg-key GPG key used to sign the files (default: '${GPG_KEY}')
- --signtool Specify the signtool executable (default: 'signtool')
- --signtool-key Provide a key to be used with signtool (for Windows EXE)
+ -h, --help Show this help
+EOF
+ elif [ "appsign" == "$cmd" ]; then
+ cat << EOF
+
+Sign binaries with code signing certificates on Windows and macOS
+
+Options:
+ -f, --files Files to sign (required)
+ -k, --signtool-key Key to be used with signtool (required for Windows EXE)
+ -i, --identity Apple Developer ID to be used with codesign (required for macOS APP and DMG)
-h, --help Show this help
EOF
fi
@@ -234,7 +246,7 @@ checkVersionInCMake() {
local app_name_upper="$(echo "$APP_NAME" | tr '[:lower:]' '[:upper:]')"
local major_num="$(echo ${RELEASE_NAME} | cut -f1 -d.)"
local minor_num="$(echo ${RELEASE_NAME} | cut -f2 -d.)"
- local patch_num="$(echo ${RELEASE_NAME} | cut -f3 -d.)"
+ local patch_num="$(echo ${RELEASE_NAME} | cut -f3 -d. | cut -f1 -d-)"
grep -q "${app_name_upper}_VERSION_MAJOR \"${major_num}\"" CMakeLists.txt
if [ $? -ne 0 ]; then
@@ -289,7 +301,28 @@ checkSnapcraft() {
checkTransifexCommandExists() {
command -v tx > /dev/null
if [ 0 -ne $? ]; then
- exitError "Transifex tool 'tx' not installed! Please install it using 'pip install transifex-client'"
+ exitError "Transifex tool 'tx' not installed! Please install it using 'pip install transifex-client'."
+ fi
+}
+
+checkOsslsigncodeCommandExists() {
+ command -v osslsigncode > /dev/null
+ if [ 0 -ne $? ]; then
+ exitError "osslsigncode command not found on the PATH! Please install it using 'pacman -S mingw-w64-osslsigncode'."
+ fi
+}
+
+checkSigntoolCommandExists() {
+ command -v signtool > /dev/null
+ if [ 0 -ne $? ]; then
+ exitError "signtool command not found on the PATH! Add the Windows SDK binary folder to your PATH."
+ fi
+}
+
+checkCodesignCommandExists() {
+ command -v codesign > /dev/null
+ if [ 0 -ne $? ]; then
+ exitError "codesign command not found on the PATH! Please check that you have correctly installed Xcode."
fi
}
@@ -434,7 +467,8 @@ merge() {
performChecks
logInfo "Updating language files..."
- ./share/translations/update.sh
+ ./share/translations/update.sh update
+ ./share/translations/update.sh pull
if [ 0 -ne $? ]; then
exitError "Updating translations failed!"
fi
@@ -531,6 +565,9 @@ build() {
-n|--no-source-tarball)
BUILD_SOURCE_TARBALL=false ;;
+
+ --snapshot)
+ BUILD_SNAPSHOT=true ;;
-h|--help)
printUsage "build"
@@ -545,12 +582,27 @@ build() {
done
init
- checkWorkingTreeClean
OUTPUT_DIR="$(realpath "$OUTPUT_DIR")"
- logInfo "Checking out release tag '${TAG_NAME}'..."
- git checkout "$TAG_NAME"
+ if ${BUILD_SNAPSHOT}; then
+ TAG_NAME="HEAD"
+ local branch=`git rev-parse --abbrev-ref HEAD`
+ logInfo "Using current branch ${branch} to build..."
+ RELEASE_NAME="${RELEASE_NAME}-snapshot"
+ CMAKE_OPTIONS="${CMAKE_OPTIONS} -DKEEPASSXC_BUILD_TYPE=Snapshot"
+ else
+ checkWorkingTreeClean
+
+ if $(echo "$TAG_NAME" | grep -qP "\-(alpha|beta)\\d+\$"); then
+ CMAKE_OPTIONS="${CMAKE_OPTIONS} -DKEEPASSXC_BUILD_TYPE=PreRelease"
+ logInfo "Checking out pre-release tag '${TAG_NAME}'..."
+ else
+ CMAKE_OPTIONS="${CMAKE_OPTIONS} -DKEEPASSXC_BUILD_TYPE=Release"
+ logInfo "Checking out release tag '${TAG_NAME}'..."
+ fi
+ git checkout "$TAG_NAME"
+ fi
logInfo "Creating output directory..."
mkdir -p "$OUTPUT_DIR"
@@ -559,20 +611,40 @@ build() {
exitError "Failed to create output directory!"
fi
- if $BUILD_SOURCE_TARBALL; then
+ if ${BUILD_SOURCE_TARBALL}; then
logInfo "Creating source tarball..."
local app_name_lower="$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]')"
- TARBALL_NAME="${app_name_lower}-${RELEASE_NAME}-src.tar.xz"
- git archive --format=tar "$TAG_NAME" --prefix="${app_name_lower}-${RELEASE_NAME}/" \
- | xz -6 > "${OUTPUT_DIR}/${TARBALL_NAME}"
+ local prefix="${app_name_lower}-${RELEASE_NAME}"
+ local tarball_name="${prefix}-src.tar"
+
+ git archive --format=tar "$TAG_NAME" --prefix="${prefix}/" --output="${OUTPUT_DIR}/${tarball_name}"
+
+ if ! ${BUILD_SNAPSHOT}; then
+ # add .version file to tar
+ mkdir "${prefix}"
+ echo -n ${RELEASE_NAME} > "${prefix}/.version"
+ tar --append --file="${OUTPUT_DIR}/${tarball_name}" "${prefix}/.version"
+ rm "${prefix}/.version"
+ rmdir "${prefix}" 2> /dev/null
+ fi
+
+ xz -6 "${OUTPUT_DIR}/${tarball_name}"
fi
-
+
+ if ! ${BUILD_SNAPSHOT} && [ -e "${OUTPUT_DIR}/build-release" ]; then
+ logInfo "Cleaning existing build directory..."
+ rm -r "${OUTPUT_DIR}/build-release" 2> /dev/null
+ if [ $? -ne 0 ]; then
+ exitError "Failed to clean existing build directory, please do it manually."
+ fi
+ fi
+
logInfo "Creating build directory..."
mkdir -p "${OUTPUT_DIR}/build-release"
cd "${OUTPUT_DIR}/build-release"
logInfo "Configuring sources..."
- for p in $BUILD_PLUGINS; do
+ for p in ${BUILD_PLUGINS}; do
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DWITH_XC_$(echo $p | tr '[:lower:]' '[:upper:]')=On"
done
@@ -585,33 +657,33 @@ build() {
if [ "" == "$DOCKER_IMAGE" ]; then
if [ "$(uname -s)" == "Darwin" ]; then
- # Building on OS X
- local qt_vers="$(ls /usr/local/Cellar/qt5 2> /dev/null | sort -r | head -n1)"
- if [ "" == "$qt_vers" ]; then
- exitError "Couldn't find Qt5! Please make sure it is available in '/usr/local/Cellar/qt5'."
- fi
- export MACOSX_DEPLOYMENT_TARGET=10.7
-
+ # Building on macOS
+ export MACOSX_DEPLOYMENT_TARGET=10.10
+
logInfo "Configuring build..."
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
- -DCMAKE_OSX_ARCHITECTURES=x86_64 -DWITH_CXX11=OFF \
- -DCMAKE_PREFIX_PATH="/usr/local/Cellar/qt5/${qt_vers}/lib/cmake" \
- -DQT_BINARY_DIR="/usr/local/Cellar/qt5/${qt_vers}/bin" $CMAKE_OPTIONS "$SRC_DIR"
-
+ cmake -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
+ -DCMAKE_PREFIX_PATH="/usr/local/opt/qt/lib/cmake" \
+ ${CMAKE_OPTIONS} "$SRC_DIR"
+
logInfo "Compiling and packaging sources..."
- make $MAKE_OPTIONS package
+ make ${MAKE_OPTIONS} package
mv "./${APP_NAME}-${RELEASE_NAME}.dmg" ../
elif [ "$(uname -o)" == "Msys" ]; then
- # Building on Windows with Msys
+ # Building on Windows with Msys2
logInfo "Configuring build..."
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off -G"MSYS Makefiles" \
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" $CMAKE_OPTIONS "$SRC_DIR"
logInfo "Compiling and packaging sources..."
- make $MAKE_OPTIONS package
+ mingw32-make ${MAKE_OPTIONS} preinstall
+ # Call cpack directly instead of calling make package.
+ # This is important because we want to build the MSI when making a
+ # release.
+ cpack -G "NSIS;ZIP;${CPACK_GENERATORS}"
- mv "./${APP_NAME}-${RELEASE_NAME}-"*.{exe,zip} ../
+ mv "./${APP_NAME}-"*.* ../
else
mkdir -p "${OUTPUT_DIR}/bin-release"
@@ -643,7 +715,8 @@ build() {
"$DOCKER_IMAGE" \
bash -c "cd /keepassxc/out/build-release && \
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off $CMAKE_OPTIONS \
- -DCMAKE_INSTALL_PREFIX=\"${INSTALL_PREFIX}\" /keepassxc/src && \
+ -DCMAKE_INSTALL_PREFIX=\"${INSTALL_PREFIX}\" \
+ -DKEEPASSXC_DIST_TYPE=AppImage /keepassxc/src && \
make $MAKE_OPTIONS && make DESTDIR=/keepassxc/out/bin-release install/strip && \
/keepassxc/src/AppImage-Recipe.sh "$APP_NAME" "$RELEASE_NAME""
@@ -661,81 +734,54 @@ build() {
# -----------------------------------------------------------------------
-# sign command
+# gpgsign command
# -----------------------------------------------------------------------
-sign() {
- SIGN_FILES=()
- SIGNTOOL="signtool"
- SIGNTOOL_KEY=""
-
+gpgsign() {
+ local sign_files=()
+
while [ $# -ge 1 ]; do
local arg="$1"
case "$arg" in
-f|--files)
while [ "${2:0:1}" != "-" ] && [ $# -ge 2 ]; do
- SIGN_FILES+=("$2")
+ sign_files+=("$2")
shift
done ;;
-
+
-g|--gpg-key)
GPG_KEY="$2"
shift ;;
- --signtool)
- SIGNTOOL="$2"
- shift ;;
-
- --signtool-key)
- SIGNTOOL_KEY="$2"
- shift ;;
-
-h|--help)
- printUsage "sign"
+ printUsage "gpgsign"
exit ;;
-
+
*)
logError "Unknown option '$arg'\n"
- printUsage "sign"
+ printUsage "gpgsign"
exit 1 ;;
esac
shift
done
- if [ -z "$SIGN_FILES" ]; then
+ if [ -z "${sign_files}" ]; then
logError "Missing arguments, --files is required!\n"
- printUsage "sign"
+ printUsage "gpgsign"
exit 1
fi
- if [[ -n "$SIGNTOOL_KEY" && ! -f "$SIGNTOOL_KEY" ]]; then
- exitError "Signtool Key was not found!"
- elif [[ -f "$SIGNTOOL_KEY" && ! -x $(command -v "${SIGNTOOL}") ]]; then
- exitError "signtool program not found on PATH!"
- fi
-
- for f in "${SIGN_FILES[@]}"; do
+ for f in "${sign_files[@]}"; do
if [ ! -f "$f" ]; then
- exitError "File '${f}' does not exist!"
+ exitError "File '${f}' does not exist or is not a file!"
fi
- if [[ -n "$SIGNTOOL_KEY" && ${f: -4} == '.exe' ]]; then
- logInfo "Signing file '${f}' using signtool...\n"
- read -s -p "Signtool Key Password: " password
- echo
- "${SIGNTOOL}" sign -f "${SIGNTOOL_KEY}" -p ${password} -v -t http://timestamp.comodoca.com/authenticode ${f}
-
- if [ 0 -ne $? ]; then
- exitError "Signing failed!"
- fi
- fi
-
logInfo "Signing file '${f}' using release key..."
gpg --output "${f}.sig" --armor --local-user "$GPG_KEY" --detach-sig "$f"
if [ 0 -ne $? ]; then
exitError "Signing failed!"
fi
-
+
logInfo "Creating digest for file '${f}'..."
local rp="$(realpath "$f")"
local bname="$(basename "$f")"
@@ -746,6 +792,161 @@ sign() {
}
+
+# -----------------------------------------------------------------------
+# appsign command
+# -----------------------------------------------------------------------
+appsign() {
+ local sign_files=()
+ local signtool_key
+ local codesign_identity
+
+ while [ $# -ge 1 ]; do
+ local arg="$1"
+ case "$arg" in
+ -f|--files)
+ while [ "${2:0:1}" != "-" ] && [ $# -ge 2 ]; do
+ sign_files+=("$2")
+ shift
+ done ;;
+
+ -k|--signtool-key)
+ signtool_key="$2"
+ shift ;;
+
+ -i|--identity)
+ codesign_identity="$2"
+ shift ;;
+
+ -h|--help)
+ printUsage "appsign"
+ exit ;;
+
+ *)
+ logError "Unknown option '$arg'\n"
+ printUsage "appsign"
+ exit 1 ;;
+ esac
+ shift
+ done
+
+ if [ -z "${sign_files}" ]; then
+ logError "Missing arguments, --files is required!\n"
+ printUsage "appsign"
+ exit 1
+ fi
+
+ for f in "${sign_files[@]}"; do
+ if [ ! -f "${f}" ]; then
+ exitError "File '${f}' does not exist or is not a file!"
+ fi
+ done
+
+ if [ "$(uname -s)" == "Darwin" ]; then
+ if [ -z "${codesign_identity}" ]; then
+ logError "Missing arguments, --identity is required on macOS!\n"
+ printUsage "appsign"
+ exit 1
+ fi
+
+ checkCodesignCommandExists
+
+ local orig_dir="$(pwd)"
+ for f in "${sign_files[@]}"; do
+ if [[ ${f: -4} == '.dmg' ]]; then
+ logInfo "Unpacking disk image '${f}'..."
+ local tmp_dir="/tmp/KeePassXC_${RANDOM}"
+ mkdir -p ${tmp_dir}/mnt
+ hdiutil attach -quiet -noautoopen -mountpoint ${tmp_dir}/mnt "${f}"
+ cd ${tmp_dir}
+ cp -a ./mnt ./app
+ hdiutil detach -quiet ${tmp_dir}/mnt
+
+ if [ ! -d ./app/KeePassXC.app ]; then
+ cd "${orig_dir}"
+ exitError "Unpacking failed!"
+ fi
+
+ logInfo "Signing app using codesign..."
+ codesign --sign "${codesign_identity}" --verbose --deep ./app/KeePassXC.app
+
+ if [ 0 -ne $? ]; then
+ cd "${orig_dir}"
+ exitError "Signing failed!"
+ fi
+
+ logInfo "Repacking disk image..."
+ hdiutil create \
+ -volname "KeePassXC" \
+ -size $((1000 * ($(du -sk ./app | cut -f1) + 5000))) \
+ -srcfolder ./app \
+ -fs HFS+ \
+ -fsargs "-c c=64,a=16,e=16" \
+ -format UDBZ \
+ "${tmp_dir}/$(basename "${f}")"
+ cd "${orig_dir}"
+ cp -f "${tmp_dir}/$(basename "${f}")" "${f}"
+ rm -Rf ${tmp_dir}
+ else
+ logInfo "Skipping non-DMG file '${f}'..."
+ fi
+ done
+
+ elif [ "$(uname -o)" == "Msys" ]; then
+ if [ -z "${signtool_key}" ]; then
+ logError "Missing arguments, --signtool-key is required on Windows!\n"
+ printUsage "appsign"
+ exit 1
+ fi
+
+ checkOsslsigncodeCommandExists
+
+ if [[ ! -f "${signtool_key}" ]]; then
+ exitError "Key file was not found!"
+ fi
+
+ read -s -p "Key password: " password
+ echo
+
+ for f in "${sign_files[@]}"; do
+ if [[ ${f: -4} == ".exe" ]]; then
+ logInfo "Signing file '${f}' using osslsigncode..."
+ # output a signed exe; we have to use a different name due to osslsigntool limitations
+ osslsigncode sign -pkcs12 "${signtool_key}" -pass "${password}" -n "KeePassXC" \
+ -t "http://timestamp.comodoca.com/authenticode" -in "${f}" -out "${f}.signed"
+
+ if [ 0 -ne $? ]; then
+ rm -f "${f}.signed"
+ exitError "Signing failed!"
+ fi
+
+ # overwrite the original exe with the signed exe
+ mv -f "${f}.signed" "${f}"
+ elif [[ ${f: -4} == ".msi" ]]; then
+ # Make sure we can find the signtool
+ checkSigntoolCommandExists
+
+ # osslsigncode does not succeed at signing MSI files at this time...
+ logInfo "Signing file '${f}' using Microsoft signtool..."
+ signtool sign -f "${signtool_key}" -p "${password}" -d "KeePassXC" \
+ -t "http://timestamp.comodoca.com/authenticode" "${f}"
+
+ if [ 0 -ne $? ]; then
+ exitError "Signing failed!"
+ fi
+ else
+ logInfo "Skipping non-executable file '${f}'..."
+ fi
+ done
+
+ else
+ exitError "Unsupported platform for code signing!\n"
+ fi
+
+ logInfo "All done!"
+}
+
+
# -----------------------------------------------------------------------
# parse global command line
# -----------------------------------------------------------------------
@@ -758,8 +959,8 @@ if [ "" == "$MODE" ]; then
elif [ "help" == "$MODE" ]; then
printUsage "$1"
exit
-elif [ "check" == "$MODE" ] || [ "merge" == "$MODE" ] || [ "build" == "$MODE" ] || [ "sign" == "$MODE" ]; then
- $MODE "$@"
+elif [ "check" == "$MODE" ] || [ "merge" == "$MODE" ] || [ "build" == "$MODE" ] || [ "gpgsign" == "$MODE" ] || [ "appsign" == "$MODE" ]; then
+ ${MODE} "$@"
else
printUsage "$MODE"
fi
diff --git a/share/icons/application/16x16/actions/paperclip.png b/share/icons/application/16x16/actions/paperclip.png
new file mode 100644
index 000000000..cd61805ef
--- /dev/null
+++ b/share/icons/application/16x16/actions/paperclip.png
Binary files differ
diff --git a/share/icons/application/16x16/actions/url-copy.png b/share/icons/application/16x16/actions/url-copy.png
new file mode 100644
index 000000000..154d2439e
--- /dev/null
+++ b/share/icons/application/16x16/actions/url-copy.png
Binary files differ
diff --git a/share/icons/application/22x22/actions/chronometer.png b/share/icons/application/22x22/actions/chronometer.png
new file mode 100644
index 000000000..71d6eabe5
--- /dev/null
+++ b/share/icons/application/22x22/actions/chronometer.png
Binary files differ
diff --git a/share/icons/application/22x22/actions/paperclip.png b/share/icons/application/22x22/actions/paperclip.png
new file mode 100644
index 000000000..99d0eb821
--- /dev/null
+++ b/share/icons/application/22x22/actions/paperclip.png
Binary files differ
diff --git a/share/icons/application/22x22/actions/url-copy.png b/share/icons/application/22x22/actions/url-copy.png
new file mode 100644
index 000000000..84eae639f
--- /dev/null
+++ b/share/icons/application/22x22/actions/url-copy.png
Binary files differ
diff --git a/share/icons/application/32x32/actions/document-encrypt.png b/share/icons/application/32x32/actions/document-encrypt.png
new file mode 100644
index 000000000..353a22ca2
--- /dev/null
+++ b/share/icons/application/32x32/actions/document-encrypt.png
Binary files differ
diff --git a/share/icons/application/32x32/actions/paperclip.png b/share/icons/application/32x32/actions/paperclip.png
new file mode 100644
index 000000000..cb57d1378
--- /dev/null
+++ b/share/icons/application/32x32/actions/paperclip.png
Binary files differ
diff --git a/share/icons/application/32x32/apps/utilities-terminal.png b/share/icons/application/32x32/apps/utilities-terminal.png
new file mode 100644
index 000000000..3e4d324c0
--- /dev/null
+++ b/share/icons/application/32x32/apps/utilities-terminal.png
Binary files differ
diff --git a/share/icons/svg/paperclip.svgz b/share/icons/svg/paperclip.svgz
new file mode 100644
index 000000000..f82480bca
--- /dev/null
+++ b/share/icons/svg/paperclip.svgz
Binary files differ
diff --git a/share/icons/svg/utilities-terminal.svgz b/share/icons/svg/utilities-terminal.svgz
new file mode 100644
index 000000000..e913402f5
--- /dev/null
+++ b/share/icons/svg/utilities-terminal.svgz
Binary files differ
diff --git a/share/keepassxc.ini b/share/keepassxc.ini
index f7ff52cbc..54920224a 100644
--- a/share/keepassxc.ini
+++ b/share/keepassxc.ini
@@ -1,5 +1,4 @@
[General]
-ShowToolbar=true
RememberLastDatabases=true
RememberLastKeyFiles=true
OpenPreviousDatabasesOnStartup=true
@@ -17,6 +16,7 @@ LastOpenedDatabases=@Invalid()
[GUI]
Language=system
ShowTrayIcon=false
+DarkTrayIcon=false
MinimizeToTray=false
MinimizeOnClose=false
MinimizeOnStartup=false
diff --git a/share/linux/org.keepassxc.KeePassXC.appdata.xml b/share/linux/org.keepassxc.KeePassXC.appdata.xml
index bde79416e..39dfa7d3a 100644
--- a/share/linux/org.keepassxc.KeePassXC.appdata.xml
+++ b/share/linux/org.keepassxc.KeePassXC.appdata.xml
@@ -1,16 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Copyright 2017 KeePassXC Team <team@keepassxc.org> -->
<component type="desktop-application">
- <id>org.keepassxc</id>
+ <id>org.keepassxc.KeePassXC.desktop</id>
<name>KeePassXC</name>
<metadata_license>CC-BY-3.0</metadata_license>
<project_license>GPL-3.0+</project_license>
- <icon type="stock">keepassxc</icon>
- <url type="homepage">https://keepassxc.org</url>
<mimetypes>
<mimetype>application/x-keepass2</mimetype>
</mimetypes>
<summary>Community-driven port of the Windows application “KeePass Password Safeâ€</summary>
+ <developer_name>KeePassXC Team</developer_name>
<description>
<p>
KeePassXC is an application for people with extremely high demands on secure
@@ -19,54 +18,92 @@
</p>
</description>
- <launchable type="desktop-id">org.keepassxc.desktop</launchable>
+ <launchable type="desktop-id">org.keepassxc.KeePassXC.desktop</launchable>
+
+ <url type="homepage">https://keepassxc.org</url>
+ <url type="bugtracker">https://github.com/keepassxreboot/keepassxc/issues</url>
+ <url type="faq">https://keepassxc.org/docs#faq</url>
+ <url type="help">https://keepassxc.org/docs</url>
+ <url type="translate">https://www.transifex.com/keepassxc/keepassxc</url>
<screenshots>
<screenshot type="default">
<image>https://keepassxc.org/images/screenshots/linux/screen_001.png</image>
+ <caption>Create, Import or Open Databases</caption>
</screenshot>
<screenshot>
<image>https://keepassxc.org/images/screenshots/linux/screen_002.png</image>
+ <caption>Organize with Groups and Entries</caption>
</screenshot>
<screenshot>
<image>https://keepassxc.org/images/screenshots/linux/screen_003.png</image>
+ <caption>Database Entry</caption>
</screenshot>
<screenshot>
<image>https://keepassxc.org/images/screenshots/linux/screen_004.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_005.png</image>
+ <caption>Icon Selection for Entry</caption>
</screenshot>
<screenshot>
<image>https://keepassxc.org/images/screenshots/linux/screen_006.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_007.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_008.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_009.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_010.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_011.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_012.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_013.png</image>
- </screenshot>
- <screenshot>
- <image>https://keepassxc.org/images/screenshots/linux/screen_014.png</image>
+ <caption>Password Generator</caption>
</screenshot>
</screenshots>
<releases>
+ <release version="2.3.0" date="2018-02-27">
+ <description>
+ <ul>
+ <li>Add support for KDBX 4.0, Argon2 and ChaCha20 [#148, #1179, #1230, #1494]</li>
+ <li>Add SSH Agent feature [#1098, #1450, #1463]</li>
+ <li>Add preview panel with details of the selected entry [#879, #1338]</li>
+ <li>Add more and configurable columns to entry table and allow copying of values by double click [#1305]</li>
+ <li>Add KeePassXC-Browser API as a replacement for KeePassHTTP [#608]</li>
+ <li>Deprecate KeePassHTTP [#1392]</li>
+ <li>Add support for Steam one-time passwords [#1206]</li>
+ <li>Add support for multiple Auto-Type sequences for a single entry [#1390]</li>
+ <li>Adjust YubiKey HMAC-SHA1 challenge-response key generation for KDBX 4.0 [#1060]</li>
+ <li>Replace qHttp with cURL for website icon downloads [#1460]</li>
+ <li>Remove lock file [#1231]</li>
+ <li>Add option to create backup file before saving [#1385]</li>
+ <li>Ask to save a generated password before closing the entry password generator [#1499]</li>
+ <li>Resolve placeholders recursively [#1078]</li>
+ <li>Add Auto-Type button to the toolbar [#1056]</li>
+ <li>Improve window focus handling for Auto-Type dialogs [#1204, #1490]</li>
+ <li>Auto-Type dialog and password generator can now be exited with ESC [#1252, #1412]</li>
+ <li>Add optional dark tray icon [#1154]</li>
+ <li>Add new "Unsafe saving" option to work around saving problems with file sync services [#1385]</li>
+ <li>Add IBus support to AppImage and additional image formats to Windows builds [#1534, #1537]</li>
+ <li>Add diceware password generator to CLI [#1406]</li>
+ <li>Add --key-file option to CLI [#816, #824]</li>
+ <li>Add DBus interface for opening and closing KeePassXC databases [#283]</li>
+ <li>Add KDBX compression options to database settings [#1419]</li>
+ <li>Discourage use of old fixed-length key files in favor of arbitrary files [#1326, #1327]</li>
+ <li>Correct reference resolution in entry fields [#1486]</li>
+ <li>Fix window state and recent databases not being remembered on exit [#1453]</li>
+ <li>Correct history item generation when configuring TOTP for an entry [#1446]</li>
+ <li>Correct multiple TOTP bugs [#1414]</li>
+ <li>Automatic saving after every change is now a default [#279]</li>
+ <li>Allow creation of new entries during search [#1398]</li>
+ <li>Correct menu issues on macOS [#1335]</li>
+ <li>Allow compilation on OpenBSD [#1328]</li>
+ <li>Improve entry attachments view [#1139, #1298]</li>
+ <li>Fix auto lock for Gnome and Xfce [#910, #1249]</li>
+ <li>Don't remember key files in file dialogs when the setting is disabled [#1188]</li>
+ <li>Improve database merging and conflict resolution [#807, #1165]</li>
+ <li>Fix macOS pasteboard issues [#1202]</li>
+ <li>Improve startup times on some platforms [#1205]</li>
+ <li>Hide the notes field by default [#1124]</li>
+ <li>Toggle main window by clicking tray icon with the middle mouse button [#992]</li>
+ <li>Fix custom icons not copied over when databases are merged [#1008]</li>
+ <li>Allow use of DEL key to delete entries [#914]</li>
+ <li>Correct intermittent crash due to stale history items [#1527]</li>
+ <li>Sanitize newline characters in title, username and URL fields [#1502]</li>
+ <li>Reopen previously opened databases in correct order [#774]</li>
+ <li>Use system's zxcvbn library if available [#701]</li>
+ <li>Implement various i18n improvements [#690, #875, #1436]</li>
+ </ul>
+ </description>
+ </release>
<release version="2.2.4" date="2017-12-13">
<description>
<ul>
@@ -81,6 +118,7 @@
</release>
<release version="2.2.2" date="2017-10-22">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Fixed entries with empty URLs being reported to KeePassHTTP clients [#1031]</li>
<li>Fixed YubiKey detection and enabled CLI tool for AppImage binary [#1100]</li>
@@ -100,6 +138,7 @@
</release>
<release version="2.2.1" date="2017-10-01">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Corrected multiple snap issues [#934, #1011]</li>
<li>Corrected multiple custom icon issues [#708, #719, #994]</li>
@@ -116,6 +155,7 @@
</release>
<release version="2.2.0" date="2017-06-23">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Added YubiKey 2FA integration for unlocking databases [#127]</li>
<li>Added TOTP support [#519]</li>
@@ -151,6 +191,7 @@
</release>
<release version="2.1.4" date="2017-04-09">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Bumped KeePassHTTP version to 1.8.4.2</li>
<li>KeePassHTTP confirmation window comes to foreground [#466]</li>
@@ -159,6 +200,7 @@
</release>
<release version="2.1.3" date="2017-03-03">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Fix possible overflow in zxcvbn library [#363]</li>
<li>Revert HiDPI setting to avoid problems on laptop screens [#332]</li>
@@ -173,6 +215,7 @@
</release>
<release version="2.1.2" date="2017-02-17">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Ask for save location when creating a new database [#302]</li>
<li>Remove Libmicrohttpd dependency to clean up the code and ensure better OS X compatibility [#317, #265]</li>
@@ -190,6 +233,7 @@
</release>
<release version="2.1.1" date="2017-02-06">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Enabled HTTP plugin build; plugin is disabled by default and limited to localhost [#147]</li>
<li>Escape HTML in dialog boxes [#247]</li>
@@ -202,6 +246,7 @@
</release>
<release version="2.1.0" date="2017-01-22">
<description>
+ <p>Changes included in this release:</p>
<ul>
<li>Show unlock dialog when using autotype on a closed database [#10, #89]</li>
<li>Show different tray icon when database is locked [#37, #46]</li>
diff --git a/share/macosx/DS_Store.in b/share/macosx/DS_Store.in
new file mode 100644
index 000000000..9f03769c1
--- /dev/null
+++ b/share/macosx/DS_Store.in
Binary files differ
diff --git a/share/macosx/Info.plist.cmake b/share/macosx/Info.plist.cmake
index ea1a9bc2c..b38ca2844 100644
--- a/share/macosx/Info.plist.cmake
+++ b/share/macosx/Info.plist.cmake
@@ -29,7 +29,7 @@
<key>CFBundleVersion</key>
<string>${KEEPASSXC_VERSION_NUM}</string>
<key>NSHumanReadableCopyright</key>
- <string>Copyright 2016-2017 KeePassXC Development Team</string>
+ <string>Copyright 2016-2018 KeePassXC Development Team</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
diff --git a/share/macosx/background.tiff b/share/macosx/background.tiff
new file mode 100644
index 000000000..99ae807ec
--- /dev/null
+++ b/share/macosx/background.tiff
Binary files differ
diff --git a/share/translations/CMakeLists.txt b/share/translations/CMakeLists.txt
index 7380750e4..5ca739695 100644
--- a/share/translations/CMakeLists.txt
+++ b/share/translations/CMakeLists.txt
@@ -1,3 +1,4 @@
+# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
# Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
#
# This program is free software: you can redistribute it and/or modify
@@ -17,10 +18,20 @@ file(GLOB TRANSLATION_FILES *.ts)
get_filename_component(TRANSLATION_EN_ABS keepassx_en.ts ABSOLUTE)
list(REMOVE_ITEM TRANSLATION_FILES keepassx_en.ts)
list(REMOVE_ITEM TRANSLATION_FILES ${TRANSLATION_EN_ABS})
-message(STATUS "${TRANSLATION_FILES}")
+message(STATUS "Including translations...\n")
qt5_add_translation(QM_FILES ${TRANSLATION_FILES})
+if(MINGW)
+ file(GLOB QTBASE_TRANSLATIONS ${Qt5_PREFIX}/share/qt5/translations/qtbase_*.qm)
+elseif(APPLE OR KEEPASSXC_DIST_APPIMAGE)
+ file(GLOB QTBASE_TRANSLATIONS
+ /usr/share/qt/translations/qtbase_*.qm
+ /usr/share/qt5/translations/qtbase_*.qm
+ ${Qt5_PREFIX}/translations/qtbase_*.qm)
+endif()
+set(QM_FILES ${QM_FILES} ${QTBASE_TRANSLATIONS})
+
install(FILES ${QM_FILES} DESTINATION ${DATA_INSTALL_DIR}/translations)
add_custom_target(translations DEPENDS ${QM_FILES})
add_dependencies(${PROGNAME} translations)
diff --git a/share/translations/keepassx_ar.ts b/share/translations/keepassx_ar.ts
new file mode 100644
index 000000000..c2bbcd163
--- /dev/null
+++ b/share/translations/keepassx_ar.ts
@@ -0,0 +1,4093 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ar" version="2.1">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <source>About KeePassXC</source>
+ <translation>حول KeePassXC</translation>
+ </message>
+ <message>
+ <source>About</source>
+ <translation>عن</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>للإبلاغ عن الأخطاء: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC موزع ÙˆÙقًا لشروط رخصة غنو العمومية (GPL) إصدار 2 أو (حسب خيارك) إصدار 3.</translation>
+ </message>
+ <message>
+ <source>Contributors</source>
+ <translation>المساهمين</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;إستكشا٠المساهمين عبر GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Debug Info</source>
+ <translation>معلومات تتبع الأخطاء</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>قم بتضمين المعلومات التالية عند الإبلاغ عن خطأ:</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>نسخ إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>Version %1
+</source>
+ <translation>الإصدار %1
+</translation>
+ </message>
+ <message>
+ <source>Revision: %1</source>
+ <translation>مراجعة: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>مراجعة: %1</translation>
+ </message>
+ <message>
+ <source>Libraries:</source>
+ <translation>المكتبات:</translation>
+ </message>
+ <message>
+ <source>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</source>
+ <translation>نظام التشغيل: %1
+معمارية المعالج: %2
+النواة: %3 %4</translation>
+ </message>
+ <message>
+ <source>Enabled extensions:</source>
+ <translation>الإضاÙات المÙÙعلة:</translation>
+ </message>
+ <message>
+ <source>Project Maintainers:</source>
+ <translation>مشرÙÙŠ المشروع:</translation>
+ </message>
+ <message>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Build Type: %1
+</source>
+ <translation>نوع التكوين: %1
+</translation>
+ </message>
+</context>
+<context>
+ <name>AccessControlDialog</name>
+ <message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>تأكيد وصول KeePassXC ل HTTP</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>تذكر هذا القرار</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>اسمح</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>رÙض</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 طلب الدخول إلى كلمات المرور للعنصر التالي (العناصر) التالية.
+يرجى تحديد ما إذا كنت تريد السماح بالوصول أم لا.</translation>
+ </message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
+ <message>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>تÙعيل وكيل SSH (يتطلب إعادة التشغيل)</translation>
+ </message>
+</context>
+<context>
+ <name>AutoType</name>
+ <message>
+ <source>Couldn&apos;t find an entry that matches the window title:</source>
+ <translation>تعذر العثور على إدخال يطابق عنوان الناÙذة:</translation>
+ </message>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>المكمل التلقائي - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>الطباعة التلقائية</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>صياغة التعبير للطباعة التلقائية غير صحيح!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>الوقت المعطى لأمر الطباعة التلقائية طويل للغاية، هل تريد المتابعة؟</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>هذا الأمر للطباعة التلقائية يحتوي على Ù…Ùاتيح مضغوطة بشكل بطيء للغاية، هل انت متأكد من المتابعة؟</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>هذا الأمر للطباعة التلقائية يحتوي على عبارات مكررة، هل تريد المتابعة؟</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeAssociationsModel</name>
+ <message>
+ <source>Window</source>
+ <translation>الناÙذة</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>التسلسل</translation>
+ </message>
+ <message>
+ <source>Default sequence</source>
+ <translation>التسلسل الإÙتراضي</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>المجموعة</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>العنوان</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>التسلسل</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>المكمل التلقائي - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation>حدد مدخل للمكمل التلقائي:</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-تأكيد الوصول إلى المتصÙØ­</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>تذكر هذا القرار</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>إسمح</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>رÙض</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 طلب الدخول إلى كلمات المرور للعنصر التالي (العناصر) التالية.
+يرجى تحديد ما إذا كنت تريد السماح بالوصول أم لا.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>الحوار</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>هذا مطلوب للوصول إلى قواعد بياناتك مع KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>تÙعيل تكامل KeepassXC مع المتصÙØ­</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>العام</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>تÙعيل التكامل لهذه المتصÙحات:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>أظهر الإشعار عندما يتم طلب بيانات الإعتماد</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>طلب إلغاء القÙÙ„ قاعدة البيانات ÙÙŠ حال تم الإقÙال</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>السماح Ùقط بالمدخلات التي تعود بنÙس الصيغة (http://, https://, ...) </translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>مطابقة صيغة عنوان الانترنت (على سبيل المثال https://... )</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ùرز ومطابقة بيانات الإعتماد حسب العنوان</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ùرز ومطابقة بيانات الإعتماد حسب إسم المستخدم</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Ùصل جميع المتصÙحات</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>نسيان جميع &amp;التصريحات المحÙوظة</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>متقدم</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>لا تسأل مطلقًا قبل الوصول إلى بيانات الإعتماد</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>لا تسأل مطلقًا قبل تحديث بيانات الإعتماد</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>قاعدة البيانات المحددة هي التي يجب تتصل مع العميل Ùقط.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>دعم تطبيق الوكيل بين KeePassXC وإضاÙات المتصÙØ­.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>استخدام تطبيق &amp;الوكيل بين KeePassXC وإضاÙات المتصÙØ­</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>إستخدام موقع وكيل مخصص ÙÙŠ حالة تثبيت خادم وكيل يدويًا.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>إستخدام &amp;موقع وكيل مخصص</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>إستعراض...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;تحذير:&lt;/b&gt; قد تكون الخيارات التالية خطيرة!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>الملÙات القابلة للتنÙيذ (*.exe);;جميع الملÙات (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>الملÙات القابلة للتنÙيذ (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>حدد موقع خادم الوكيل المخصص</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>نحن متأسÙون, ولكن KeePassXC-Browser غير مدعوم لإصدارات Snap ÙÙŠ الوقت الراهن.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Ø­Ùظ والسماح بالوصول</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: الكتابة على المÙتاح الحالي؟</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: تحديث المÙدخل</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>هل تريد تحديث المعلومات ÙÙŠ %1 - %2ØŸ</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: قاعدة البيانات أقÙلت!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>قاعدة البيانات هذه قد أقÙلت!
+يرجى إلغاء Ù‚ÙÙ„ قاعدة البيانات المحددة أو اختيار واحدة أخرى تكون Ù…Ùتوحة.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: الإعدادات غير متاحة!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>لا تحتوي قاعدة البيانات النشطة على إدخال إعدادات.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: لم ÙŠÙعثر على أية Ù…Ùاتيح</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>لم ÙŠÙعثر على Ù…Ùاتيح التشÙير المشتركة ÙÙŠ إعدادات KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Ø­ÙØ°ÙÙت المÙاتيح من قاعدة البيانات</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>إزالة الصلاحيات المخزنة...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>إجهاض </translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Ø­ÙØ°Ùت الصلاحيات</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ChangeMasterKeyWidget</name>
+ <message>
+ <source>Password</source>
+ <translation>كلمه السر</translation>
+ </message>
+ <message>
+ <source>Enter password:</source>
+ <translation>أدخل كلمة المرور:</translation>
+ </message>
+ <message>
+ <source>Repeat password:</source>
+ <translation>تكرار كلمة السر:</translation>
+ </message>
+ <message>
+ <source>&amp;Key file</source>
+ <translation>&amp;مل٠المÙتاح</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>تصّÙØ­</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>إنشاء</translation>
+ </message>
+ <message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>تحديث</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>ملÙات المÙتاح</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>كل الملÙات</translation>
+ </message>
+ <message>
+ <source>Create Key File...</source>
+ <translation>إنشاء مل٠مÙتاح...</translation>
+ </message>
+ <message>
+ <source>Unable to create Key File : </source>
+ <translation>تعذر إنشاء مل٠المÙتاح :</translation>
+ </message>
+ <message>
+ <source>Select a key file</source>
+ <translation>حدد مل٠المÙتاح</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>كلمة المرور Ùارغة</translation>
+ </message>
+ <message>
+ <source>Do you really want to use an empty string as password?</source>
+ <translation>هل تريد حقًا استخدام كلمات Ùارغة ككلمة مرور؟</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>توÙير كلمات السر مختلÙØ©.</translation>
+ </message>
+ <message>
+ <source>Failed to set %1 as the Key file:
+%2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>تنسيق مل٠المÙتاح القديم</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Changing master key failed: no YubiKey inserted.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CloneDialog</name>
+ <message>
+ <source>Clone Options</source>
+ <translation>إعدادات الإستنساخ</translation>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Replace username and password with references</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy history</source>
+ <translation>نسخ التاريخ</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWidget</name>
+ <message>
+ <source>Import CSV fields</source>
+ <translation>إستيراد Ù…Ùدخلات CSV</translation>
+ </message>
+ <message>
+ <source>filename</source>
+ <translation>اسم الملÙ</translation>
+ </message>
+ <message>
+ <source>size, rows, columns</source>
+ <translation>الحجم، الصÙÙˆÙØŒ الأعمدة</translation>
+ </message>
+ <message>
+ <source>Encoding</source>
+ <translation>ترميز</translation>
+ </message>
+ <message>
+ <source>Codec</source>
+ <translation>الترميز</translation>
+ </message>
+ <message>
+ <source>Text is qualified by</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fields are separated by</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comments start with</source>
+ <translation>تبدأ التعليقات عند</translation>
+ </message>
+ <message>
+ <source>First record has field names</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of headers line to discard</source>
+ <translation>عدد رؤوس الأسطر لتجاهلها</translation>
+ </message>
+ <message>
+ <source>Consider &apos;\&apos; an escape character</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Preview</source>
+ <translation>معاينة</translation>
+ </message>
+ <message>
+ <source>Column layout</source>
+ <translation>تخطيط العمود</translation>
+ </message>
+ <message>
+ <source>Not present in CSV file</source>
+ <translation>غير موجود ÙÙŠ مل٠CSV</translation>
+ </message>
+ <message>
+ <source>Empty fieldname </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>column </source>
+ <translation>العمود </translation>
+ </message>
+ <message>
+ <source>Imported from CSV file</source>
+ <translation>Ù…Ùستورد من مل٠CSV</translation>
+ </message>
+ <message>
+ <source>Original data: </source>
+ <translation>البيانات الأصلية:</translation>
+ </message>
+ <message>
+ <source>Error(s) detected in CSV file !</source>
+ <translation>تم إكتشا٠خطأ (أخطاء) ÙÙŠ مل٠CSV !</translation>
+ </message>
+ <message>
+ <source> more messages skipped]</source>
+ <translation>المزيد من الرسائل تم تخطيها]</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>خطأ</translation>
+ </message>
+ <message>
+ <source>CSV import: writer has errors:
+</source>
+ <translation>إستيراد CSV: الكاتب يحتوي أخطاء:
+</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWizard</name>
+ <message>
+ <source>Error</source>
+ <translation>خطأ</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>تعذر حساب المÙتاح الرئيسي</translation>
+ </message>
+</context>
+<context>
+ <name>CsvParserModel</name>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseOpenWidget</name>
+ <message>
+ <source>Enter master key</source>
+ <translation>أدخل المÙتاح الرئيسي</translation>
+ </message>
+ <message>
+ <source>Key File:</source>
+ <translation>مل٠المÙتاح:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>كلمه السر:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>تصّÙØ­</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>تحديث</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>استجابة التحدي:</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ùتح قاعدة البيانات غير ممكن.</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>لا يمكن Ùتح مل٠المÙتاح</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>تنسيق مل٠المÙتاح القديم</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>لا تÙظهر هذا التحذير مرة أخرى</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>كل الملÙات</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>ملÙات المÙتاح</translation>
+ </message>
+ <message>
+ <source>Select key file</source>
+ <translation>إختر مل٠المÙتاح</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseRepairWidget</name>
+ <message>
+ <source>Repair database</source>
+ <translation>إصلاح قاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>خطأ</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>لا يمكن Ùتح مل٠المÙتاح</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ùتح قاعدة البيانات غير ممكن.</translation>
+ </message>
+ <message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>قاعدة البيانات ÙÙتحت بشكل جيد. لا يوجد شيء Ù„Ùعله.</translation>
+ </message>
+ <message>
+ <source>Success</source>
+ <translation>نجاح</translation>
+ </message>
+ <message>
+ <source>The database has been successfully repaired
+You can now save it.</source>
+ <translation>تم إصلاح قاعدة البيانات بنجاح
+يمكنك الآن Ø­Ùظها.</translation>
+ </message>
+ <message>
+ <source>Unable to repair the database.</source>
+ <translation>تعذر إصلاح قاعدة البيانات.</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidget</name>
+ <message>
+ <source>General</source>
+ <translation>العام</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>التشÙير</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>عدد الجولات عالي جدًا</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>إلغاء</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>عدد الجولات منخÙض جدًا</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>خورزامية التشÙير:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (الإÙتراضي)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>إستخدام الذاكرة:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>إسم قاعدة البيانات:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>وص٠قاعدة البيانات:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>اسم المستخدم الاÙتراضي:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>إعدادات السجل</translation>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation>أقصى عدد للسجلات:</translation>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation>أقصى حجم للسجلات:</translation>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation> MiB</translation>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>إستخدام سلة المهملات</translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation>إعدادات قاعدة البيانات الإضاÙية</translation>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
+ <message>
+ <source>Root</source>
+ <comment>Root group</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>قاعدة بيانات KeePass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>كل الملÙات</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Ùتح قاعدة بيانات</translation>
+ </message>
+ <message>
+ <source>File not found!</source>
+ <translation>المل٠غير موجود!</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ùتح قاعدة البيانات غير ممكن.</translation>
+ </message>
+ <message>
+ <source>File opened in read only mode.</source>
+ <translation>المل٠تم Ùتحه بوضع القراءة Ùقط.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Ùتح مل٠CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>مل٠CSV</translation>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation>جميع الملÙات (*)</translation>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation>دمج قاعدة بيانات</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Ùتح قاعدة بيانات KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>قاعدة بيانات KeePass 1</translation>
+ </message>
+ <message>
+ <source>Close?</source>
+ <translation>إغلاق؟</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; ÙÙŠ وضع التحرير.
+تجاهل التغييرات وإلاغلاق على أي حال؟</translation>
+ </message>
+ <message>
+ <source>Save changes?</source>
+ <translation>Ø­Ùظ التغييرات؟</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
+ <translation>&quot;%1&quot; Ù…Ùعدل.
+هل تريد Ø­Ùظ التغييرات؟</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Ùشل كتابة قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>كلمه السر</translation>
+ </message>
+ <message>
+ <source>Save database as</source>
+ <translation>Ø­Ùظ قاعدة البيانات باسم</translation>
+ </message>
+ <message>
+ <source>Export database to CSV file</source>
+ <translation>تصدير قاعدة البيانات إلى مل٠CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>تعذر كتابة مل٠CSV.</translation>
+ </message>
+ <message>
+ <source>New database</source>
+ <translation>قاعدة بيانات جديدة</translation>
+ </message>
+ <message>
+ <source>locked</source>
+ <translation>مقÙÙ„</translation>
+ </message>
+ <message>
+ <source>Lock database</source>
+ <translation>Ù‚ÙÙ„ قاعدة بيانات</translation>
+ </message>
+ <message>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
+ <translation>لا يمكن إقÙال قاعدة البيانات ريثما تقوم بتغييرها.
+اضغط على إلغاء لكي تقوم بإنهاء التغييرات أو إلغائها.</translation>
+ </message>
+ <message>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation>قاعدة البيانات هذه قد تم تعديلها.
+هل تريد Ø­Ùظ قاعدة البيانات قبل Ù‚Ùلها؟
+وإلا Ùإنك ستخسر التغييرات التي قمت بها.</translation>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation>هل تريد تعطيل الحÙظ الآمن؟</translation>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC قد Ùشل ÙÙŠ Ø­Ùظ قاعدة البيانات عدة مرات. هذا غالبا ما يحدث بسبب خدمات مزامنة المل٠حيث تقوم بمنع الكتابة على الملÙ.
+أتريد إلغاء خيار الحÙظ الامن ثم المحاولة مرة أخرى؟</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseWidget</name>
+ <message>
+ <source>Searching...</source>
+ <translation>البحث...</translation>
+ </message>
+ <message>
+ <source>Change master key</source>
+ <translation>تغيير كلمة المرور الرئيسية</translation>
+ </message>
+ <message>
+ <source>Delete entry?</source>
+ <translation>حذ٠المدخل؟</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Delete entries?</source>
+ <translation>حذ٠المدخلات؟</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete %1 entries for good?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>نقل المدخل إلى سلة المحذوÙات؟</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>هل تريد حقًا نقل الإدخال &quot;%1&quot; إلى سلة المهملات؟</translation>
+ </message>
+ <message>
+ <source>Move entries to recycle bin?</source>
+ <translation>نقل المدخلات إلى سلة المحذوÙات؟</translation>
+ </message>
+ <message numerus="yes">
+ <source>Do you really want to move %n entry(s) to the recycle bin?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Execute command?</source>
+ <translation>تنÙيذ الأمر؟</translation>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>تذكر إختياري</translation>
+ </message>
+ <message>
+ <source>Delete group?</source>
+ <translation>حذ٠المجموعة؟</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>تعذر حساب المÙتاح الرئيسي</translation>
+ </message>
+ <message>
+ <source>No current database.</source>
+ <translation>لا يوجد قاعدة بيانات حالية </translation>
+ </message>
+ <message>
+ <source>No source database, nothing to do.</source>
+ <translation>لا يوجد قاعدة بيانات مصدرية, لا يوجد شيء Ù„Ùعله.</translation>
+ </message>
+ <message>
+ <source>Search Results (%1)</source>
+ <translation>نتائج البحث (%1)</translation>
+ </message>
+ <message>
+ <source>No Results</source>
+ <translation>لا يوجد نتائج</translation>
+ </message>
+ <message>
+ <source>File has changed</source>
+ <translation>المل٠تغير</translation>
+ </message>
+ <message>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation>قاعدة البيانات تغيرت. هل تريد تحميل التغييرات؟</translation>
+ </message>
+ <message>
+ <source>Merge Request</source>
+ <translation>دمج الطلب</translation>
+ </message>
+ <message>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty recycle bin?</source>
+ <translation>Ø¥Ùراغ سلة المهملات؟</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <translation>هل أنت متأكد من حذ٠كل شيء من سلة المهملات نهائيًا؟</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>إغلاق</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>العام</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>كلمه السر</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>رابط</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>جاري البحث</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>الخصائص</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>المرÙقات</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>ملاحظات</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>الناÙذة</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>التسلسل</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>بحث</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>مسح</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>أبدًا</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[محمي]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Ù…Ùعطل</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Ù…ÙÙعل</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidget</name>
+ <message>
+ <source>Entry</source>
+ <translation>دخول</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>متقدم</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>رمز</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>المكمل التلقائي</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>خصائص</translation>
+ </message>
+ <message>
+ <source>History</source>
+ <translation>التاريخ</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>وكيل SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(مشÙر)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>إختر المÙتاح السري</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>مل٠كبير جدًا ليكون Ù…Ùتاح سري</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>تعذر Ùتح المÙتاح السري</translation>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation>تاريخ دخول</translation>
+ </message>
+ <message>
+ <source>Add entry</source>
+ <translation>إضاÙØ© Ù…Ùدخل</translation>
+ </message>
+ <message>
+ <source>Edit entry</source>
+ <translation>تعديل Ù…Ùدخل</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>توÙير كلمات السر مختلÙØ©.</translation>
+ </message>
+ <message>
+ <source>New attribute</source>
+ <translation>خاصية جديدة</translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>تأكيد الحذÙ</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>هل أنت متاكد من إزالة هذه الخاصية؟</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[محمي]</translation>
+ </message>
+ <message>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Tomorrow</source>
+ <translation>غدا</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n month(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>1 year</source>
+ <translation>سنة 1</translation>
+ </message>
+ <message>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAdvanced</name>
+ <message>
+ <source>Additional attributes</source>
+ <translation>الخصائص الإضاÙية</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>إضاÙØ©</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>إزالة</translation>
+ </message>
+ <message>
+ <source>Edit Name</source>
+ <translation>تعديل الإسم</translation>
+ </message>
+ <message>
+ <source>Protect</source>
+ <translation>حماية</translation>
+ </message>
+ <message>
+ <source>Reveal</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>المرÙقات</translation>
+ </message>
+ <message>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
+ <message>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>تÙعيل الطباعة التلقائية لهذا المدخل</translation>
+ </message>
+ <message>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Use custom Auto-Type sequence:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Window Associations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>عنوان الناÙذة:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetHistory</name>
+ <message>
+ <source>Show</source>
+ <translation>إظهار</translation>
+ </message>
+ <message>
+ <source>Restore</source>
+ <translation>إستعادة</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>حذÙ</translation>
+ </message>
+ <message>
+ <source>Delete all</source>
+ <translation>حذ٠الكل</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetMain</name>
+ <message>
+ <source>URL:</source>
+ <translation>رابط:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>كلمه السر:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>تكرار:</translation>
+ </message>
+ <message>
+ <source>Title:</source>
+ <translation>العنوان:</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>ملاحظات</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>انتهاء</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>النموذج</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>حذ٠المÙتاح من الوكيل عند</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>ثواني</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>بصمة</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>امسح المÙتاح من العميل عندما يتم Ù‚ÙÙ„ أو إغلاق قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>المÙتاح العام</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>أض٠مÙتاح للعميل عندما يتم Ùتح قاعدة البيانات أو إلغاء القÙÙ„</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>تعليق</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>ÙÙƒ تشÙير</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>نسخ إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>المÙتاح السري</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>مل٠خارجي</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>إستعراض...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>إرÙاق</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>إضاÙØ© إلى الوكيل</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>حذ٠من الوكيل</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>يتطلب تأكيد المستخدم عندما يتم إستخدام هذا المÙتاح</translation>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidget</name>
+ <message>
+ <source>Group</source>
+ <translation>المجموعة</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>رمز</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>خصائص</translation>
+ </message>
+ <message>
+ <source>Add group</source>
+ <translation>إضاÙØ© مجموعة</translation>
+ </message>
+ <message>
+ <source>Edit group</source>
+ <translation>تعديل مجموعة</translation>
+ </message>
+ <message>
+ <source>Enable</source>
+ <translation>تÙعيل</translation>
+ </message>
+ <message>
+ <source>Disable</source>
+ <translation>قم ب تعطيل</translation>
+ </message>
+ <message>
+ <source>Inherit from parent group (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidgetMain</name>
+ <message>
+ <source>Name</source>
+ <translation>الاسم</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>ملاحظات</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>انتهاء</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>بحث</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>المكمل التلقائي</translation>
+ </message>
+ <message>
+ <source>&amp;Use default Auto-Type sequence of parent group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set default Auto-Type se&amp;quence</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditWidgetIcons</name>
+ <message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;إستخدم الرمز الإÙتراضي</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>إستخدم الرمز المخصص</translation>
+ </message>
+ <message>
+ <source>Add custom icon</source>
+ <translation>إضاÙØ© رمز مخصص</translation>
+ </message>
+ <message>
+ <source>Delete custom icon</source>
+ <translation>حذ٠الرمز المخصص</translation>
+ </message>
+ <message>
+ <source>Download favicon</source>
+ <translation>تحميل رمز المÙضلة</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>تعذر جلب رمز المÙضلة.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Images</source>
+ <translation>الصور</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>كل الملÙات</translation>
+ </message>
+ <message>
+ <source>Select Image</source>
+ <translation>اختر صورة</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
+ <translation>لا يمكن قراءة الرمز</translation>
+ </message>
+ <message>
+ <source>Custom icon already exists</source>
+ <translation>الرمز المخصص موجود بالÙعل</translation>
+ </message>
+ <message>
+ <source>Confirm Delete</source>
+ <translation>تأكيد الحذÙ</translation>
+ </message>
+ <message>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <translation>هذا الرمز مستخدم من قبل %1 إدخالات، وسيتم إستبداله بالرمز الإÙتراضي. هل أنت متأكد من حذÙه؟</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetProperties</name>
+ <message>
+ <source>Created:</source>
+ <translation>إنشاء:</translation>
+ </message>
+ <message>
+ <source>Modified:</source>
+ <translation>تعديل:</translation>
+ </message>
+ <message>
+ <source>Accessed:</source>
+ <translation>الوصول:</translation>
+ </message>
+ <message>
+ <source>Uuid:</source>
+ <translation>Uuid:</translation>
+ </message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>إزالة</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Entry</name>
+ <message>
+ <source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - إستنساخ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>الاسم</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>الحجم</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>النموذج</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>إضاÙØ©</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>إزالة</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>اÙتح</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Ø­Ùظ</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>اختر الملÙات</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>تأكيد الحذÙ</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Ø­Ùظ المرÙقات</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>غير قادر على إنشاء مجلد:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>هل أنت متاكد من إستبدال المل٠الحالي &quot;%1&quot; بالمرÙق؟</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>تأكيد الإستبدال</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>تعذر Ø­Ùظ المرÙقات:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>تعذر Ùتح المرÙÙ‚:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>تعذر Ùتح المرÙقات:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>تعذر Ùتح الملÙات:
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttributesModel</name>
+ <message>
+ <source>Name</source>
+ <translation>الاسم</translation>
+ </message>
+</context>
+<context>
+ <name>EntryHistoryModel</name>
+ <message>
+ <source>Last modified</source>
+ <translation>آخر تعديل</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>العنوان</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>رابط</translation>
+ </message>
+</context>
+<context>
+ <name>EntryModel</name>
+ <message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>المجموعة</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>العنوان</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>رابط</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>أبدًا</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>كلمه السر</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>ملاحظات</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>انتهاء</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Ø£Ùنشئت</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>المرÙقات</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>تخصيص العرض</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>إخÙاء أسماء المستخدم</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>إخÙاء كلمات المرور</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>إعادة التعيين إلى الإعدادات الاÙتراضية</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>المرÙقات (رمز)</translation>
+ </message>
+</context>
+<context>
+ <name>Group</name>
+ <message>
+ <source>Recycle Bin</source>
+ <translation>سلة المهملات</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: لا يمكن Ø­Ùظ الملÙ!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>HttpPasswordGeneratorWidget</name>
+ <message>
+ <source>Length:</source>
+ <translation>الطول:</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>أنواع الرموز</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>الحرو٠الكبيرة</translation>
+ </message>
+ <message>
+ <source>A-Z</source>
+ <translation>A-Z</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>أحر٠صغيرة</translation>
+ </message>
+ <message>
+ <source>a-z</source>
+ <translation>a-z</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>أرقام</translation>
+ </message>
+ <message>
+ <source>0-9</source>
+ <translation>0-9</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>رموز مخصصة</translation>
+ </message>
+ <message>
+ <source>/*_&amp; ...</source>
+ <translation>/*_&amp; ...</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Ensure that the password contains characters from every group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KMessageWidget</name>
+ <message>
+ <source>&amp;Close</source>
+ <translation>&amp;إغلاق</translation>
+ </message>
+ <message>
+ <source>Close message</source>
+ <translation>إغلاق الرسالة</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>تعذر حساب المÙتاح الرئيسي</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>المÙتاح أو مل٠قاعدة البيانات معطوب.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>تعذر حساب المÙتاح الرئيسي</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>رؤوس قاعدة البيانات Ù…Ùقودة</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>تعذر حساب المÙتاح الرئيسي</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>نوع إدخال الخريطة المتنوعة غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>حقل حجم النوع للخريطة المتنوعة غير صحيح</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>خورزامية تشÙير بالمÙتاح المتناظر غير صحيحة</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>خطأ ÙÙŠ الحجم الرابع بخورزامية تشÙير بالمÙتاح المتناظر </translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>تعذر حساب المÙتاح الرئيسي</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>طول تشÙير uuid غير صحيح</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>طول علامات الضغط غير صحيح</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>خورزامية الضغط غير مدعومة</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>حجم seed الرئيسي غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>حجم seed للتحول غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>حجم جولات التحول غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>حجم بتات البداية غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>حجم معر٠random stream غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>خطأ داخلي بخورزامية random stream</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>ليس قاعدة بيانات KeePass</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>إصدار قاعدة بيانات 2 KeePass غير مدعوم.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Ùشل تحليل XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>uuid او بيانات الرمز Ù…Ùقودة</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Ù…Ùتاح البيانات المخصص او قيمته Ù…Ùقودة</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>uuid المجموعة غير معروÙ</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>رقم رمز المجموعة غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>قيمة EnableSearching غير صحيحة</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>لم ÙŠÙعثر على uuid المجموعة</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Null DeleteObject uuid</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>uuid او وقت DeletedObject Ù…Ùقود</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>uuid الإدخال غير معروÙ</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>رقم الرمز المÙدخل غير صحيح</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>سجل العنصر ÙÙŠ سجل الإدخال</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>لم ÙŠÙعثر على uuid المÙدخل</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>سجل العنصر مع uuid مختلÙ</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>يتعذر ÙÙƒ تشÙير سلسلة الإدخال</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>عÙثر على خاصية مخصصة مكررة</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Ù…Ùتاح سلسلة الإدخال أو القيمة Ù…Ùقودة</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>عÙثر على مرÙÙ‚ مكرر</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Ù…Ùدخل المÙتاح الثنائي او القيمة Ù…Ùقودة</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Ù…Ùدخل القيمة المنطقية غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>قيمة وقت التاريخ غير صحيحة</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>قيمة اللون غير صحيحة</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>جزء من لون rgb غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>قيمة الرقم غير صحيحة</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>قيمة uuid غير صحيحة</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>تعذر ÙÙƒ ضغط القيمة الثنائية</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation>إستيراد قاعدة بيانات KeePass1</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ùتح قاعدة البيانات غير ممكن.</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation>يتعذر قراءة مل٠المÙتاح.</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>ليس قاعدة بيانات KeePass</translation>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation>خورزامية التشÙير غير مدعومة.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation>إصدار قاعدة بيانات KeePass غير مدعوم.</translation>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>غير قادر على قراءة قيمة التشÙير الرابع</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>عدد غير صالح من المجموعات</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>عدد الإدخالات غير صالح</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>حجم محتوى الهاش غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>حجم seed للتحول غير صحيح</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>عدد جولات التحول غير صحيح</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>تعذر حساب المÙتاح الرئيسي</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>المÙتاح أو مل٠قاعدة البيانات معطوب.</translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation>إدخال حقل الحجم غير صحيح</translation>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation>نوع حقل الإدخال غير صحيح</translation>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - خطأ</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;قاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation>&amp;قواعد البيانات الحديثة</translation>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation>إستيراد</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;مساعدة</translation>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation>نسخ الخاصية إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Groups</source>
+ <translation>&amp;المجموعات</translation>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation>&amp;الأدوات</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>&amp;إغلاق</translation>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation>&amp;حول</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Ùتح قاعدة البيانات...</translation>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation>&amp;Ø­Ùظ قاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation>&amp;إغلاق قاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation>&amp;إنشاء قاعدة بيانات</translation>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation>دمج من قاعدة بيانات KeePassX</translation>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation>&amp;إضاÙØ© Ù…Ùدخل جديد</translation>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation>&amp;مشاهدة/تعديل مدخل</translation>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation>&amp;حذ٠مدخل</translation>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation>&amp;إضاÙØ© مجموعة جديدة</translation>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation>&amp;تعديل المجموعة</translation>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation>&amp;حذ٠المجموعة</translation>
+ </message>
+ <message>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Ø­Ùظ قاعدة البيانات بأسم...</translation>
+ </message>
+ <message>
+ <source>Change &amp;master key...</source>
+ <translation>تغيير &amp;المÙتاح الرئيسي...</translation>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation>&amp;إعدادات قاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation>إعدادات قاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;إستنساخ مدخل</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>&amp;بحث</translation>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation>نسخ &amp;اسم المستخدم</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>نسخ اسم المستخدم إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation>نسخ كلمة المرور</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>نسخ كلمة المرور إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation>&amp;الإعدادات</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>مولد كلمة السر</translation>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation>&amp;Ùتح الرابط</translation>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation>&amp;Ù‚ÙÙ„ قواعد البيانات</translation>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation>&amp;العنوان</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation>نسخ العنوان إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>&amp;URL</source>
+ <translation>&amp;رابط</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation>نسخ الرابط إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>&amp;Notes</source>
+ <translation>&amp;ملاحظات</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
+ <translation>نسخ الملاحظات إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;تصدير كمل٠CSV...</translation>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation>إستيراد قاعدة بيانات KeePass 1...</translation>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation>إستيراد مل٠CSV...</translation>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation>إصلاح قاعدة البيانات...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Ø¥Ùراغ سلة المهملات</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>مسح السجل</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>الإعدادات</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation>إغلاق KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>قاعدة بيانات KeePass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>كل الملÙات</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Ùتح قاعدة بيانات</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Ø­Ùظ قاعدة البيانات المÙصَحَّحة</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Ùشل كتابة قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
+ <message>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to read public key.</source>
+ <translation>تعذر قراءة المÙتاح العام.</translation>
+ </message>
+ <message>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>مل٠المÙتاح معطوب، Ùشل قراءة المÙتاح الخاص.</translation>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>عبارة المرور مطلوبة Ù„ÙÙƒ تشÙير المÙتاح</translation>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Ùشل إشتقاق المÙتاح، ربما مل٠المÙتاح معطوب؟</translation>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Ùشل ÙÙƒ التشÙير، ربما عبارة المرور خاطئة؟</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>لا يمكن كتابة المÙتاح العام لأنه Ùارغ</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>لا يمكن كتابة المÙتاح الخاص لأنه Ùارغ</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>نوع Ù…Ùتاح غير مدعوم: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>تشÙير غير معروÙ: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>نوع Ù…Ùتاح غير معروÙ: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>الحوار</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>تÙعيل خادم KeePassHTTP</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>العام</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>عرض إشعار عند طلب بيانات الإعتماد</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>طلب إلغاء القÙÙ„ ÙÙŠ حال تم الإقÙال</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>إزالة جميع Ù…Ùاتيح التشÙير المشتركة من قاعدة البيانات النشطة</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>إزالة كاÙØ© الصلاحيات المخزنة من المÙدخلات ÙÙŠ قاعدة البيانات النشطة</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>مولد كلمة السر</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>متقدم</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>السماح دائمًا &amp;بالوصول للمÙدخلات</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>السماح دائمًا &amp;بتحديث المÙدخلات</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>قاعدة البيانات المحددة هي التي يجب تتصل مع العميل Ùقط.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>منÙØ° HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>المنÙØ° الاÙتراضي: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC سيعمل على هذا المنÙØ° ÙÙŠ 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;تحذير:&lt;/b&gt; قد تكون الخيارات التالية خطيرة!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>كلمه السر:</translation>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>القوة</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>كلمه السر</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>أنواع الرموز</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>الحرو٠الكبيرة</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>الحرو٠صغيرة</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>أرقام</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>رموز مخصصة</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>&amp;الطول:</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>عبارة سر</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation>قائمة الكلمات:</translation>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>عدد الكلمات:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Ùاصل الكلمة:</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>توليد</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>نسخة</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>قبول</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>إغلاق</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>تطبيق</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation>جودة كلمة المرور: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>ضعي٠جدا</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>ضعيÙØ©</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>جيدة</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>ممتازة</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation>لم يتم Ùتح قاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Client public key not received</source>
+ <translation>لم يتم تلقي المÙتاح العام للعميل</translation>
+ </message>
+ <message>
+ <source>Cannot decrypt message</source>
+ <translation>لا يمكن ÙÙƒ تشÙير الرسالة</translation>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Ù†ÙØ° الوقت أو لا يمكن الإتصال على KeePassXC</translation>
+ </message>
+ <message>
+ <source>Action cancelled or denied</source>
+ <translation>Ø£Ùلغي الإجراء أو رÙÙض</translation>
+ </message>
+ <message>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>لا يمكن تشÙير الرسالة أو لم يتم العثور على المÙتاح العام. هل تم تمكين المراسلة الأساسية ÙÙŠ KeePassXCØŸ</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>تعذر إرتباط KeePassXC، حاول مرة أخرى</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>لم يكن تغيير المÙتاح ناجحًا</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>لم يتم التعر٠على Ù…Ùتاح التشÙير</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>لم يتم العثور على قواعد بيانات محÙوظة</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>إجراء غير صحيح</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Ø£Ùستلمت رسالة Ùارغة</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>لم يتم تقديم رابط</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>لم يتم العثور على عمليات تسجيل دخول</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>خطأ مجهول</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>إضاÙØ© Ù…Ùدخل إلى قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>مسار قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>مل٠المÙتاح لقاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>المسار</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>إسم المستخدم للمÙدخل.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>إسم المستخدم</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>الرابط للمÙدخل</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>رابط</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>المطالبة بكلمة مرور المÙدخل.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>إنشاء كلمة المرور للمÙدخل.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>طول كلمة المرور المÙنشئة.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>الطول</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>تعديل Ù…Ùدخل.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>عنوان المÙدخل</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>العنوان</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>مسار المÙدخل للتعديل.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>مسار قاعدة البيانات للإستخراج.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>ادخل كلمة المرور لإلغاء القÙÙ„ %1:</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>تعذر تحميل مل٠المÙتاح %1 : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>تحذير: أنت تستخدم تنسيق مل٠مÙتاح قديم قد يصبح
+غير Ù…Ùعتمد ÙÙŠ المستقبل.
+
+يرجى النظر ÙÙŠ إنشاء مل٠مÙتاح جديد.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+الأوامر المتاحة:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>اسم الأمر للتنÙيذ.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>إدراج Ù…Ùدخلات قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>البحث عن المÙدخلات بسرعة.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>دمج قاعدتي بيانات.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>مسار قاعدة البيانات المÙراد دمجها.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>مسار قاعدة البيانات المÙراد الدمج منها.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>مل٠قاعدة البيانات للدمج منه.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>إظهار معلومات الإدخال.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>خاصية</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>اسم الإدخال للعرض.</translation>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation>مل٠Ùارغ !
+</translation>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>missing closing quote</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>المجموعة</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>العنوان</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>كلمه السر</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>ملاحظات</translation>
+ </message>
+ <message>
+ <source>Last Modified</source>
+ <translation>آخر تعديل</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Ø£Ùنشئت</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>تكامل المتصÙØ­ القديم</translation>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation>تكامل المتصÙØ­</translation>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passive</source>
+ <translation>سلبي</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>وكيل SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>العدد</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>إنشاء كلمة مرور عشوائية جديدة.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>طول كلمة المرور المÙنشئة.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>إستخدام الأحر٠الصغيرة ÙÙŠ كلمة المرور المÙنشئة.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>إستخدام الأحر٠الكبيرة ÙÙŠ كلمة المرور المÙنشئة.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>إستخدام الأرقام ÙÙŠ كلمة المرور المÙنشئة.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>إستخدام رموز مخصصة ÙÙŠ كلمة المرور المÙنشئة.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor</name>
+ <message>
+ <source>Internal zlib error when compressing: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error writing to underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error opening underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error reading data from underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error when decompressing: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
+ <message>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation>البحث...</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>بحث</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>مسح</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Limit search to selected group</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: الكتابة على المÙتاح الحالي؟</translation>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: تحديث المÙدخل</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>هل تريد تحديث المعلومات ÙÙŠ %1 - %2ØŸ</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: قاعدة البيانات أقÙلت!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>قاعدة البيانات هذه قد أقÙلت!
+يرجى إلغاء Ù‚ÙÙ„ قاعدة البيانات المحددة أو اختيار واحدة أخرى تكون Ù…Ùتوحة.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Ø­ÙØ°ÙÙت المÙاتيح من قاعدة البيانات</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: لم يتم العثور على أية Ù…Ùاتيح</translation>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>لم ÙŠÙعثر على Ù…Ùاتيح التشÙير المشتركة ÙÙŠ إعدادات KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: الإعدادات غير متاحة!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>إزالة الصلاحيات المخزنة...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>إجهاض </translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Ø­ÙØ°Ùت الصلاحيات</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <source>Application Settings</source>
+ <translation>إعدادات التطبيق</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>العام</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation>الأمن</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetGeneral</name>
+ <message>
+ <source>Basic Settings</source>
+ <translation>الإعدادات الأساسية</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember last databases</source>
+ <translation>تذكر قواعد البيانات الأخيرة</translation>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>إستعادة قواعد البيانات السابقة عند بدء التشغيل</translation>
+ </message>
+ <message>
+ <source>Automatically save on exit</source>
+ <translation>الحÙظ تلقائيًا عند الإغلاق</translation>
+ </message>
+ <message>
+ <source>Automatically save after every change</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize when copying to clipboard</source>
+ <translation>تصغير عند النسخ إلى الحاÙظة</translation>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation>تصغير الناÙذة عند بدء تشغيل التطبيق</translation>
+ </message>
+ <message>
+ <source>Use group icon on entry creation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a system tray icon</source>
+ <translation>إظهار علامة تبويب</translation>
+ </message>
+ <message>
+ <source>Hide window to system tray when minimized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Language</source>
+ <translation>اللغة</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>المكمل التلقائي</translation>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always ask before performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Global Auto-Type shortcut</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation>زمن التأخير للطباعة التلقائية</translation>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation>م.ثانية</translation>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation>بدأ التشغيل</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>إدارة الملÙات</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Ø­Ùظ ملÙات قواعد البيانات بأمان (قد يكون غير متواÙÙ‚ مع DropboxØŒ إلخ)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>إحتÙظ بنسخة من مل٠قاعدة البيانات قبل الحÙظ</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>العام</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetSecurity</name>
+ <message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear clipboard after</source>
+ <translation>امسح الذاكرة بعد</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation> ثانية</translation>
+ </message>
+ <message>
+ <source>Lock databases after inactivity of</source>
+ <translation>أغلق قواعد البيانات بعد حالات عدم النشاط ل</translation>
+ </message>
+ <message>
+ <source>Convenience</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>اقÙÙ„ قواعد البيانات عندما تنقÙÙ„ الجلسة أو يتم إغلاق اللابتوب</translation>
+ </message>
+ <message>
+ <source>Lock databases after minimizing the window</source>
+ <translation>Ù‚ÙÙ„ قواعد البيانات عند تصغير الناÙذة</translation>
+ </message>
+ <message>
+ <source>Don&apos;t require password repeat when it is visible</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show passwords in cleartext by default</source>
+ <translation>إظهار كلمة المرور كنص Ø¥Ùتراضيًا</translation>
+ </message>
+ <message>
+ <source>Hide passwords in the preview panel</source>
+ <translation>إخÙاء كلمات المرور ÙÙŠ ناÙذة المعاينة</translation>
+ </message>
+ <message>
+ <source>Hide entry notes by default</source>
+ <translation>إخÙاء Ù…Ùدخل الملاحظات Ø¥Ùتراضيًا</translation>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation>الخصوصية</translation>
+ </message>
+ <message>
+ <source>Use Google as fallback for downloading website icons</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SetupTotpDialog</name>
+ <message>
+ <source>Setup TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key:</source>
+ <translation>المÙتاح:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use custom settings</source>
+ <translation>إستخدم أعدادات مخصصة</translation>
+ </message>
+ <message>
+ <source>Note: Change these settings only if you know what you are doing.</source>
+ <translation>ملاحظة: لاتغير هذه الإعدادات إلا إذا كنت تعلم ماذا تÙعل.</translation>
+ </message>
+ <message>
+ <source>Time step:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>8 digits</source>
+ <translation>8 أرقام</translation>
+ </message>
+ <message>
+ <source>6 digits</source>
+ <translation>6 أرقام</translation>
+ </message>
+ <message>
+ <source>Code size:</source>
+ <translation>حجم الكود:</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation> ثانية</translation>
+ </message>
+</context>
+<context>
+ <name>TotpDialog</name>
+ <message>
+ <source>Timed Password</source>
+ <translation>كلمة مرور موقوته</translation>
+ </message>
+ <message>
+ <source>000000</source>
+ <translation>000000</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>نسخة</translation>
+ </message>
+ <message>
+ <source>Expires in</source>
+ <translation>وتنتهي ÙÙŠ</translation>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation>ثواني</translation>
+ </message>
+</context>
+<context>
+ <name>UnlockDatabaseWidget</name>
+ <message>
+ <source>Unlock database</source>
+ <translation>إلغاء Ù‚ÙÙ„ قاعدة البيانات</translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWidget</name>
+ <message>
+ <source>Start storing your passwords securely in a KeePassXC database</source>
+ <translation>إبدأ بتخزين كلمات مرورك بأمان ÙÙŠ قاعدة بيانات KeePassXC</translation>
+ </message>
+ <message>
+ <source>Create new database</source>
+ <translation>إنشاء قاعدة بيانات جديدة</translation>
+ </message>
+ <message>
+ <source>Open existing database</source>
+ <translation>Ùتح قاعدة بيانات حالية</translation>
+ </message>
+ <message>
+ <source>Import from KeePass 1</source>
+ <translation>استيراد من KeePass 1</translation>
+ </message>
+ <message>
+ <source>Import from CSV</source>
+ <translation>استيراد من CSV</translation>
+ </message>
+ <message>
+ <source>Recent databases</source>
+ <translation>قواعد البيانات الحديثة</translation>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>مرحبا بك ÙÙŠ KeePassXC %1</translation>
+ </message>
+</context>
+<context>
+ <name>main</name>
+ <message>
+ <source>Remove an entry from the database.</source>
+ <translation>حذ٠مÙدخل من قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>مسار قاعدة البيانات.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to remove.</source>
+ <translation>مسار المÙدخل للحذÙ.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - مدير كلمات المرور لعدة أنظمة</translation>
+ </message>
+ <message>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>أسماء ملÙات قواعد بيانات كلمات المرور للÙتح (*.kdbx)</translation>
+ </message>
+ <message>
+ <source>path to a custom config file</source>
+ <translation>مسار مل٠التكوين المخصص</translation>
+ </message>
+ <message>
+ <source>key file of the database</source>
+ <translation>مل٠المÙتاح لقاعدة البيانات</translation>
+ </message>
+ <message>
+ <source>read password of the database from stdin</source>
+ <translation>قراءة كلمة مرور قاعدة البيانات من stdin</translation>
+ </message>
+ <message>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_ca.ts b/share/translations/keepassx_ca.ts
index 8d837c563..ad40c798c 100644
--- a/share/translations/keepassx_ca.ts
+++ b/share/translations/keepassx_ca.ts
@@ -3,21 +3,37 @@
<name>AboutDialog</name>
<message>
<source>About KeePassXC</source>
- <translation>Sobre KeePassXC</translation>
+ <translation>Quant al KeePassXC</translation>
</message>
<message>
<source>About</source>
- <translation>Sobre</translation>
+ <translation>Quant</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Reportar errors a: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeepassXC es distribueix sota els termes de la Llicència Pública General GNU (GPL) versió 2 o (segons la vostra opció) versió 3.</translation>
</message>
<message>
<source>Contributors</source>
<translation>Contribuïdors</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Veure els contribuïdors a GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Informació de depuració</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Inclou la següent informació a l&apos;hora de reportar un error:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Copia al porta-retalls</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revisió: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribució: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Llibreries</translation>
</message>
@@ -48,33 +68,26 @@ Nucli: %3 %4</translation>
<translation>Extensions habilitades:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Reportar errors a: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeepassXC es distribueix sota els termes de la Llicència Pública General GNU (GPL) versió 2 o (segons la vostra opció) versió 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Mantenidors del projecte:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Veure els contribuïdors a GitHub&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Inclou la següent informació a l&apos;hora de reportar un error:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>Distribució: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Confirmeu l&apos;accés</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Recorda aquesta decisió</translation>
</message>
@@ -89,11 +102,15 @@ Nucli: %3 %4</translation>
<message>
<source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source>
- <translation type="unfinished"/>
+ <translation>%1 ha demanat l&apos;accés a contrasenyes pels següents elements.
+Seleccioneu si voleu permetre l&apos;accés.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP Confirmeu l&apos;accés</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -104,6 +121,26 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
+ <translation>Compleció automàtica - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Compleció automàtica</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
<translation type="unfinished"/>
</message>
</context>
@@ -123,17 +160,317 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grup</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Títol</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nom d&apos;usuari</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Seqüència</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Compleció automàtica - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
+ <translation>Seleccione l&apos;entrada per a la compleció automàtica:</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Auto-Type - KeePassXC</source>
+ <source>Remember this decision</source>
+ <translation>Recorda aquesta decisió</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Permet</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Denega</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 ha demanat l&apos;accés a contrasenyes pels següents elements.
+Seleccioneu si voleu permetre l&apos;accés.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Diàleg</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Sol·licitar el desbloqueig de la base de dades si està blocada</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Només retorna les millors coincidències per a una adreça URL específica en lloc de totes les entrades per al domini.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avançat</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Només s&apos;ha de connectar amb un client, la base de dades seleccionada.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>L&apos;actualització o creació de camps de test no està suportada.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Retorna camps avançats de text que comencen amb &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Nova petició de associació de clau</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Voleu sobreescriure la clau existent?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Actualitza l&apos;entrada</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Voleu actualitzar la informació en %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Base de dades bloquejada!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>La base de dades activa està bloquejada!
+Per favor, desbloqueu la base de dades seleccionada o escolliu-ne una altra.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: La configuració no està disponible!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: No s&apos;han trobat claus</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Claus de la base de dades eliminades</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Avorta</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Permisos eliminats</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: No s&apos;ha trobat cap entrada amb permisos!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>La base de dades activa no conté cap entrada amb permisos.</translation>
+ </message>
+</context>
+<context>
<name>ChangeMasterKeyWidget</name>
<message>
<source>Password</source>
@@ -148,6 +485,10 @@ Please select whether you want to allow access.</source>
<translation>Repetiu la contrasenya:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>Arxiu clau</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Navegar</translation>
</message>
@@ -156,6 +497,14 @@ Please select whether you want to allow access.</source>
<translation>Crea</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Pregunta/resposta</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>L&apos;actualitza</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Fitxers de clau</translation>
</message>
@@ -169,13 +518,17 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Unable to create Key File : </source>
- <translation type="unfinished"/>
+ <translation>No s&apos;ha pogut de crear el fitxer clau: </translation>
</message>
<message>
<source>Select a key file</source>
<translation>Seleccioneu un arxiu clau</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Contrasenya buida</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Realment voleu utilitzar una cadena buida com a contrasenya?</translation>
</message>
@@ -189,24 +542,19 @@ Please select whether you want to allow access.</source>
<translation>No ha pogut definir %1 com a arxiu clau: %2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Arxiu clau</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
+ <source>Legacy key file format</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Refresh</source>
- <translation>L&apos;actualitza</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Contrasenya buida</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
- <translation type="unfinished"/>
+ <translation>Ha fallat el canvi de clau mestra: cap YubiKey inserida.</translation>
</message>
</context>
<context>
@@ -216,6 +564,10 @@ Please select whether you want to allow access.</source>
<translation>Clona les opcions</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Afegeix &apos;-clon&apos; al títol</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Substituir el nom d&apos;usuari i contrasenya amb referències</translation>
</message>
@@ -223,10 +575,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>Còpia el historial</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Afegeix &apos;-clon&apos; al títol</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -284,7 +632,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Not present in CSV file</source>
- <translation type="unfinished"/>
+ <translation>No apareix al fitxer CSV</translation>
</message>
<message>
<source>Empty fieldname </source>
@@ -308,7 +656,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source> more messages skipped]</source>
- <translation type="unfinished"/>
+ <translation> més missatges omesos]</translation>
</message>
<message>
<source>Error</source>
@@ -317,16 +665,13 @@ Please select whether you want to allow access.</source>
<message>
<source>CSV import: writer has errors:
</source>
- <translation type="unfinished"/>
+ <translation>Importació CSV: el fitxer té errors:
+</translation>
</message>
</context>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Error</source>
<translation>Error</translation>
</message>
@@ -337,17 +682,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> byte, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> files, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> columnes</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
</context>
<context>
@@ -369,6 +714,14 @@ Please select whether you want to allow access.</source>
<translation>Navega</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Actualitza</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Pregunta/resposta</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>No es pot obrir la base de dades.</translation>
</message>
@@ -377,6 +730,21 @@ Please select whether you want to allow access.</source>
<translation>No es pot obrir el fitxer de clau</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>All files</source>
<translation>Tots els fitxers</translation>
</message>
@@ -388,14 +756,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>Seleccioneu el fitxer de clau</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Actualitza</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -412,21 +772,22 @@ Please select whether you want to allow access.</source>
<translation>No es pot obrir el fitxer de clau</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>No es pot obrir la base de dades.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Base de dades oberta correctament.</translation>
+ </message>
+ <message>
<source>Success</source>
- <translation type="unfinished"/>
+ <translation>Completat amb èxit</translation>
</message>
<message>
<source>The database has been successfully repaired
You can now save it.</source>
- <translation type="unfinished"/>
+ <translation>La base de dades ha estat reparada.
+ Ara es pot desar.</translation>
</message>
<message>
<source>Unable to repair the database.</source>
@@ -436,27 +797,117 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Nom de base de dades:</translation>
+ <source>General</source>
+ <translation>General</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Descripció de la base de dades:</translation>
+ <source>Encryption</source>
+ <translation>Encriptatge</translation>
</message>
<message>
- <source>Transform rounds:</source>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>Default username:</source>
- <translation>Usuari per defecte:</translation>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
</message>
<message>
+ <source>Cancel</source>
+ <translation>Cancel·lar</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
<source> MiB</source>
- <translation> MiB</translation>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algorisme de d’encriptatge:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 bits (per defecte)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 bits</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>Transformar rondes:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nom de base de dades:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Descripció de la base de dades:</translation>
</message>
<message>
- <source>Benchmark</source>
+ <source>Default username:</source>
+ <translation>Usuari per defecte:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
<translation type="unfinished"/>
</message>
<message>
@@ -468,26 +919,27 @@ You can now save it.</source>
<translation>Mida màx. del historial:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Utilitza la paperera</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 bits (per defecte)</translation>
+ <source>Use recycle bin</source>
+ <translation>Utilitza la paperera</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 bits</translation>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritme:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Arrel</translation>
</message>
<message>
@@ -507,22 +959,48 @@ You can now save it.</source>
<translation>No s&apos;ha trobat el fitxer!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Obre base de dades de KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>No es pot obrir la base de dades.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Base de dades de KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Arxiu obert en mode de només lectura.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Obre arxiu CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Fitxer CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Tots els arxius (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Fusiona la base de dades</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Obre base de dades de KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Base de dades de KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Voleu tancar?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; està en mode d&apos;edició.
+Voleu descartar els canvis i tancar de totes maneres?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Voleu desar els canvis?</translation>
</message>
@@ -537,10 +1015,22 @@ Voleu desar els canvis?</translation>
<translation>Ha fallat l&apos;escriptura en la base de dades.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Contrasenyes</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Desa la base de dades com a</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Exporta la base de dades a un fitxer CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Ha fallat l&apos;escriptura al fitxer CSV.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nova base de dades</translation>
</message>
@@ -559,12 +1049,6 @@ Please press cancel to finish your changes or discard them.</source>
Per favor, feu clic a cancel·la per a finalitzar els canvis o descarteu-los.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Aquesta base de dades no s&apos;ha desat.
-Podeu desar la base de dades o deixar de bloquejar-la.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -573,69 +1057,22 @@ Voleu desar la base de dades abans de tancar-la?
En cas contrari, es perderan els canvis.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; està en mode d&apos;edició.
-Voleu descartar els canvis i tancar de totes maneres?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Exporta la base de dades a un fitxer CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>Fitxer CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Ha fallat l&apos;escriptura al fitxer CSV.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>No es pot obrir la base de dades.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Fusiona la base de dades</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>La base de dades que està intentant salvar està bloquejada per una altra instància de KeePassXC.
-Voleu desar-la igualment?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Contrasenyes</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>La base de dades ja està oberta</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>La base de dades que està intentant obrir està bloquejada per una altra instància de KeePassXC.
-
-Voleu obrir-la igualment?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Obre en mode només de lectura</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Arxiu obert en mode de només lectura.</translation>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Open CSV file</source>
- <translation>Obre arxiu CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Cercant...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Canvia la clau mestra</translation>
</message>
@@ -656,6 +1093,14 @@ Voleu obrir-la igualment?</translation>
<translation>Realment voleu suprimir %1 entrades per sempre?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Moure l&apos;entrada a la Paperera?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Realment voleu moure l&apos;entrada &quot;%1&quot; a la paperera?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Moure les entrades a la paperera?</translation>
</message>
@@ -664,28 +1109,28 @@ Voleu obrir-la igualment?</translation>
<translation><numerusform>Realment voleu moure %n entry(s) a la Paperera de reciclatge?</numerusform><numerusform>Realment voleu moure %n entrada(es) a la paperera?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Voleu suprimir el grup?</translation>
+ <source>Execute command?</source>
+ <translation>Execute l&apos;ordre?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Realment voleu suprimir el grup &quot;%1&quot; per sempre?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Voleu executar la següent ordre? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>No es pot calcular la clau mestra</translation>
+ <source>Remember my choice</source>
+ <translation>Recordar la meva elecció</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Moure l&apos;entrada a la Paperera?</translation>
+ <source>Delete group?</source>
+ <translation>Voleu suprimir el grup?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Realment voleu moure l&apos;entrada &quot;%1&quot; a la paperera?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Realment voleu suprimir el grup &quot;%1&quot; per sempre?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Cercant...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>No es pot calcular la clau mestra</translation>
</message>
<message>
<source>No current database.</source>
@@ -693,7 +1138,7 @@ Voleu obrir-la igualment?</translation>
</message>
<message>
<source>No source database, nothing to do.</source>
- <translation type="unfinished"/>
+ <translation>Cap base de dades, res a veure.</translation>
</message>
<message>
<source>Search Results (%1)</source>
@@ -704,20 +1149,8 @@ Voleu obrir-la igualment?</translation>
<translation>No hi ha resultats</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Execute l&apos;ordre?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Voleu executar la següent ordre? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Recordar la meva elecció</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Tona a carregar la petició</translation>
+ <source>File has changed</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -725,15 +1158,16 @@ Voleu obrir-la igualment?</translation>
</message>
<message>
<source>Merge Request</source>
- <translation type="unfinished"/>
+ <translation>Petició de combinació</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>El fitxer de base de dades ha canviat i té canvis no desats. Voleu combinar els canvis?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
- <translation type="unfinished"/>
+ <translation>No s&apos;ha pogut obrir el nou fitxer de base de dades al intentar reobrir aquesta base de dades.</translation>
</message>
<message>
<source>Empty recycle bin?</source>
@@ -745,6 +1179,89 @@ Voleu obrir-la igualment?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Tanca</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Venciment</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nom d&apos;usuari</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>S&apos;està cercant</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atributs</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Fitxers adjunts</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Finestra</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Seqüència</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Cerca</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Neteja</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Inhabilitat</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Habilitat</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -760,7 +1277,7 @@ Voleu obrir-la igualment?</translation>
</message>
<message>
<source>Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Compleció automàtica</translation>
</message>
<message>
<source>Properties</source>
@@ -771,6 +1288,30 @@ Voleu obrir-la igualment?</translation>
<translation>Historial</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(encriptat)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Historial de l&apos;entrada</translation>
</message>
@@ -791,22 +1332,20 @@ Voleu obrir-la igualment?</translation>
<translation>Nou atribut</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Seleccioneu el fitxer</translation>
+ <source>Confirm Remove</source>
+ <translation>Confirma la supressió</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>No es pot obrir el fitxer</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Esteu segur que voleu suprimir aquest atribut?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Deseu el fitxer adjunt</translation>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>No es por desar l&apos;arxiu adjunt:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Tomorrow</source>
@@ -825,20 +1364,16 @@ Voleu obrir-la igualment?</translation>
<translation>1 any</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Confirma la supressió</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Esteu segur que voleu suprimir aquest atribut?</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[PROTEGIT] Premeu revelar per veure o editar</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Esteu segur que voleu suprimir aquest fitxer adjunt?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -856,18 +1391,6 @@ Voleu obrir-la igualment?</translation>
<translation>Suprimiu</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Fitxers adjunts</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Desa</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Obre</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Edita el nom</translation>
</message>
@@ -879,43 +1402,51 @@ Voleu obrir-la igualment?</translation>
<source>Reveal</source>
<translation>Revela</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation type="unfinished"/>
+ <source>Attachments</source>
+ <translation>Fitxers adjunts</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Títol de la finestra:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Permetre la compleció automàtica per a aquesta entrada</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
- <translation type="unfinished"/>
+ <translation>Hereta la seqüència de compleció automàtica per defecte de &amp;grup</translation>
</message>
<message>
<source>&amp;Use custom Auto-Type sequence:</source>
- <translation type="unfinished"/>
+ <translation>&amp;Utilitza la seqüència personalitzada per a la compleció automàtica:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation type="unfinished"/>
+ <source>Window Associations</source>
+ <translation>Associacions de finestra</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation type="unfinished"/>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Títol de la finestra:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
<translation type="unfinished"/>
</message>
</context>
@@ -941,12 +1472,8 @@ Voleu obrir-la igualment?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Títol:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Nom d&apos;usuari:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -957,20 +1484,104 @@ Voleu obrir-la igualment?</translation>
<translation>Repeteix:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Títol:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Expira</translation>
+ <source>Notes</source>
+ <translation>Notes</translation>
</message>
<message>
<source>Presets</source>
<translation>Configuracions</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Notes:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nom d&apos;usuari:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copia al porta-retalls</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1028,20 +1639,28 @@ Voleu obrir-la igualment?</translation>
</message>
<message>
<source>Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Compleció automàtica</translation>
</message>
<message>
<source>&amp;Use default Auto-Type sequence of parent group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Utilitza seqüència per defecte del grup pare per a lacompleció automàtica</translation>
</message>
<message>
<source>Set default Auto-Type se&amp;quence</source>
- <translation type="unfinished"/>
+ <translation>Estableix la se&amp;qüència per defecte per a la compleció automàtica</translation>
</message>
</context>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Utilitzar icona per defecte</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Utilitza una icona personalitzada</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Afegeix una icona personalitzada</translation>
</message>
@@ -1050,6 +1669,18 @@ Voleu obrir-la igualment?</translation>
<translation>Suprimeix la icona personalitzada</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Descarregua el favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>No es pot descarregar el favicon.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Consell: Podeu activar Google com a recurs alternatiu a Eines &gt; Configuració &gt; Seguretat</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Imatges</translation>
</message>
@@ -1062,24 +1693,12 @@ Voleu obrir-la igualment?</translation>
<translation>Seleccioneu la imatge</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Descarregua el favicon</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>No es pot descarregar el favicon.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>No es pot llegir la icona</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation type="unfinished"/>
+ <source>Custom icon already exists</source>
+ <translation>Ja existeix una icona personalitzada</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1089,14 +1708,6 @@ Voleu obrir-la igualment?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Aquesta icona s&apos;utilitza en %1 entrades i serà substituïda per la icona per defecte. Esteu segur que voleu suprimir-la?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Consell: Podeu activar Google com a recurs alternatiu a Eines &gt; Configuració &gt; Seguretat</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>Ja existeix una icona personalitzada</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1116,15 +1727,124 @@ Voleu obrir-la igualment?</translation>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Suprimiu</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> -Clon</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nom</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Afegiu</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Suprimiu</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Obre</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Desa</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirma la supressió</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1153,6 +1873,11 @@ Voleu obrir-la igualment?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Grup</translation>
</message>
@@ -1169,9 +1894,67 @@ Voleu obrir-la igualment?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref: </translation>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Fitxers adjunts</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1182,6 +1965,17 @@ Voleu obrir-la igualment?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1213,517 +2007,1091 @@ Voleu obrir-la igualment?</translation>
</message>
<message>
<source>0-9</source>
- <translation type="unfinished"/>
+ <translation>0-9</translation>
</message>
<message>
<source>Special Characters</source>
- <translation type="unfinished"/>
+ <translation>Caràcters especials</translation>
</message>
<message>
<source>/*_&amp; ...</source>
- <translation type="unfinished"/>
+ <translation>/*_&amp; ...</translation>
</message>
<message>
<source>Exclude look-alike characters</source>
- <translation type="unfinished"/>
+ <translation>Excloure caràcters d&apos;aspecte semblant</translation>
</message>
<message>
<source>Ensure that the password contains characters from every group</source>
- <translation type="unfinished"/>
+ <translation>Assegurar-se que la contrasenya conté caràcters de cada grup</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII estès</translation>
</message>
</context>
<context>
<name>KMessageWidget</name>
<message>
<source>&amp;Close</source>
- <translation type="unfinished"/>
+ <translation>&amp;Tancar</translation>
</message>
<message>
<source>Close message</source>
- <translation type="unfinished"/>
+ <translation>Tancar missatge</translation>
</message>
</context>
<context>
- <name>KeePass1OpenWidget</name>
+ <name>Kdbx3Reader</name>
<message>
- <source>Import KeePass1 database</source>
- <translation type="unfinished"/>
+ <source>Unable to calculate master key</source>
+ <translation>No es pot calcular la clau mestra</translation>
</message>
<message>
- <source>Unable to open the database.</source>
- <translation>No es pot obrir la base de dades.</translation>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Incapaç d&apos;emetre pregunta-resposta.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Clau incorrecta o fitxer de base de dades corrupte.</translation>
</message>
</context>
<context>
- <name>KeePass1Reader</name>
+ <name>Kdbx3Writer</name>
<message>
- <source>Unable to read keyfile.</source>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Incapaç d&apos;emetre pregunta-resposta.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>No es pot calcular la clau mestra</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Not a KeePass database.</source>
+ <source>Unable to calculate master key</source>
+ <translation>No es pot calcular la clau mestra</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unsupported encryption algorithm.</source>
+ <source>Header SHA256 mismatch</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Root</source>
- <translation>Arrel</translation>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
</message>
<message>
<source>Unable to calculate master key</source>
<translation>No es pot calcular la clau mestra</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>KeePass2Reader</name>
+ <name>KdbxReader</name>
<message>
- <source>Not a KeePass database.</source>
+ <source>Invalid cipher uuid length</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
+ <source>Unsupported cipher</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
+ <source>Invalid compression flags length</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>No es pot calcular la clau mestra</translation>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Not a KeePass database.</source>
+ <translation>No és una base de dades KeePass.</translation>
+ </message>
+ <message>
<source>The selected file is an old KeePass 1 database (.kdb).
You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>El fitxer seleccionat és una base de dades KeePass 1 antiga (.kdb).
+
+Podeu importar-la fent clic a la base de dades &gt; &quot;importar base de dades KeePass 1...&quot;.
+Es tracta d&apos;una migració unidireccional. No obrir la base de dades importada amb la antiga versió KeePassX 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>KeePass2Writer</name>
+ <name>KdbxXmlReader</name>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>XML parsing failure: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>No es pot calcular la clau mestra</translation>
+ <source>No root group</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
+ <source>Missing icon uuid or data</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
+ <source>Missing custom data key or value</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <source>Multiple group elements</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
+ <source>Null group uuid</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Invalid group icon number</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Obre la base de dades</translation>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
+ <source>Invalid EnableSearching value</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
+ <source>No group uuid found</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
+ <source>Null DeleteObject uuid</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
+ <source>Missing DeletedObject uuid or time</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
+ <source>Null entry uuid</source>
<translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
+ <source>Invalid entry icon number</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
+ <source>History element in history entry</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Base de dades de KeePass 2</translation>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Tots els fitxers</translation>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Save repaired database</source>
+ <source>Unable to decrypt entry string</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Ha fallat l&apos;escriptura en la base de dades.</translation>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Recent databases</source>
+ <source>Entry string key or value missing</source>
<translation type="unfinished"/>
</message>
<message>
- <source>E&amp;ntries</source>
+ <source>Duplicate attachment found</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy att&amp;ribute to clipboard</source>
+ <source>Entry binary key or value missing</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Groups</source>
+ <source>Auto-type association window or sequence missing</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;View</source>
+ <source>Invalid bool value</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Quit</source>
+ <source>Invalid date time value</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;About</source>
+ <source>Invalid color value</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Save database</source>
+ <source>Invalid color rgb part</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Close database</source>
+ <source>Invalid number value</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;New database</source>
+ <source>Invalid uuid value</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Merge from KeePassX database</source>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation>Importar base de dades KeePass1</translation>
+ </message>
<message>
- <source>&amp;Add new entry</source>
+ <source>Unable to open the database.</source>
+ <translation>No es pot obrir la base de dades.</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation>No es pot llegir el fitxer de claus.</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>No és una base de dades KeePass.</translation>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation>Algoritme d&apos;encriptació no admès.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation>Versió de base de dades KeePass no admesa.</translation>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;View/Edit entry</source>
+ <source>Invalid number of groups</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Delete entry</source>
+ <source>Invalid number of entries</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Add new group</source>
+ <source>Invalid content hash size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Edit group</source>
+ <source>Invalid transform seed size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Delete group</source>
+ <source>Invalid number of transform rounds</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Database settings</source>
+ <source>Unable to construct group tree</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Clone entry</source>
+ <source>Root</source>
+ <translation>Arrel</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>No es pot calcular la clau mestra</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Clau incorrecta o fitxer de base de dades corrupte.</translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Timed one-time password</source>
+ <source>Invalid group field type number</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy &amp;TOTP</source>
+ <source>Invalid group field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Show TOTP</source>
+ <source>Read group field data doesn&apos;t match size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Find</source>
+ <source>Incorrect group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy &amp;username</source>
+ <source>Incorrect group creation time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cop&amp;y password</source>
+ <source>Incorrect group modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Settings</source>
+ <source>Incorrect group access time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Perform Auto-Type</source>
+ <source>Incorrect group expiry time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Open URL</source>
+ <source>Incorrect group icon field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Lock databases</source>
+ <source>Incorrect group level field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Title</source>
+ <source>Invalid group field type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;URL</source>
+ <source>Missing group id or level</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Notes</source>
+ <source>Missing entry field type number</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password Generator</source>
+ <source>Invalid entry field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Clear history</source>
+ <source>Read entry field data doesn&apos;t match size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Database</source>
+ <source>Invalid entry uuid field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import</source>
+ <source>Invalid entry group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Tools</source>
+ <source>Invalid entry icon field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Empty recycle bin</source>
+ <source>Invalid entry creation time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Access error for config file %1</source>
+ <source>Invalid entry modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Quit KeePassXC</source>
+ <source>Invalid entry expiry time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
+ <source>Invalid entry field type</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>El fitxer de bloqueig d&apos;instància única no és vàlid. Execute una instància nova.</translation>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>No s&apos;ha pogut crear l&apos;arxiu de bloqueig. Inhabilitat el mode de instància única.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Ja s&apos;està executant una altra instància de KeePassXC.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Error mentre es provava les funcions criptogràfiques.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Error</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Base de dades</translation>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation>Bases de dades &amp;recents</translation>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation>Importa</translation>
+ </message>
<message>
<source>&amp;Help</source>
+ <translation>&amp;Ajuda</translation>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation>E&amp;ntrades</translation>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation>Copia l&apos;at&amp;ribut a porta-retalls</translation>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>&amp;Groups</source>
+ <translation>&amp;Grups</translation>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation>&amp;Eines</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>Tanca</translation>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation>&amp;Sobre</translation>
+ </message>
+ <message>
<source>&amp;Open database...</source>
- <translation type="unfinished"/>
+ <translation>&amp;Obre una base de dades...</translation>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation>&amp;Desa la base de dades</translation>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation>Tanca base de dades</translation>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation>&amp;Nova base de dades</translation>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation>Combina base de dades KeePassX</translation>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation>&amp;Afegir entrada nova</translation>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation>&amp;Mostra/Edita l&apos;entrada</translation>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation>&amp;Esborra l&apos;entrada</translation>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation>&amp;Afegeix un nou grup</translation>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation>&amp;Edita el grup</translation>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation>&amp;Suprimeix el grup</translation>
</message>
<message>
<source>Sa&amp;ve database as...</source>
- <translation type="unfinished"/>
+ <translation>&amp;Desa la base de dades com a...</translation>
</message>
<message>
<source>Change &amp;master key...</source>
+ <translation>Canvia la clau &amp;mestra...</translation>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Configuració de la base de dades</translation>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation>Configuració de la base de dades</translation>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Clona l&apos;entrada</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>&amp;Cercar</translation>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation>Còpia el nom d&apos;&amp;usuari</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>Còpia el nom d&apos;usuari al porta-retalls</translation>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation>Còpia la contrasen&amp;ya</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>Còpia la contrasenya al porta-retalls</translation>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation>&amp;Conficuració</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Generador de contrasenyes</translation>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation>Realitza complació automètica</translation>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation>&amp;Obre URL</translation>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation>&amp;bloqueja la bases de dades</translation>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation>&amp;Títol</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
+ <source>&amp;URL</source>
+ <translation>&amp;URL</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import KeePass 1 database...</source>
+ <source>&amp;Notes</source>
+ <translation>&amp;Notes</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exporta a fitxer CSV.</translation>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importa base de dades KeePass 1...</translation>
+ </message>
+ <message>
<source>Import CSV file...</source>
- <translation type="unfinished"/>
+ <translation>Importa fitxer CSV...</translation>
</message>
<message>
<source>Re&amp;pair database...</source>
- <translation type="unfinished"/>
+ <translation>Re&amp;para la base de dades...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Mostra TOTP</translation>
</message>
<message>
<source>Set up TOTP...</source>
+ <translation>Configura TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Còpia &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Esborra l&apos;historial</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>Error d&apos;accés al fitxer de configuració %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation>Només de lectura</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Configuració</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>Activar finestra</translation>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation>Tanca KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>Base de dades de KeePass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Tots els fitxers</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Obre la base de dades</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Desa base de dades reparada</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Ha fallat l&apos;escriptura en la base de dades.</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Per favor, toqueu el botó en el seu YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
+ <source>Invalid key file, expecting an OpenSSH key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>General</source>
+ <source>PEM boundary mismatch</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
+ <source>Base64 decoding failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
+ <source>Key file way too small.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
+ <source>Key file magic header id invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Advanced</source>
- <translation>Avançat</translation>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
+ <source>Failed to read public key.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
+ <source>Corrupted key file, reading private key failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
+ <source>No private key payload to decrypt</source>
<translation type="unfinished"/>
</message>
<message>
- <source>HTTP Port:</source>
+ <source>Trying to run KDF without cipher</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Default port: 19455</source>
+ <source>Passphrase is required to decrypt this key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
+ <source>Key derivation failed, key file corrupted?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
+ <source>Decryption failed, wrong passphrase?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <source>Unexpected EOF while reading public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
+ <source>Unexpected EOF while reading private key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
+ <source>Can&apos;t write public key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
+ <source>Unexpected EOF when writing public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <source>Can&apos;t write private key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
+ <source>Unexpected EOF when writing private key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <source>Unsupported key type: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Enable KeePassHTTP server</source>
+ <source>Unknown cipher: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <source>Cipher IV is too short for MD5 kdf</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return only best matching entries</source>
+ <source>Unknown KDF: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <source>Unknown key type: %1</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Diàleg</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation>Requerit per a accedir a les seves bases de dades des de ChromeIPass o PassIFox</translation>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Habilita el servidor KeePassHTTP</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>M&amp;ostra una notificació quan es demanen credencials</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Només retorna les millors coincidències per a una adreça URL específica en lloc de totes les entrades per al domini.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation>Retorna només les millors coincidències de les entrades</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Sol·licitar el desbloqueig de la base de dades si està blocada</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation>Només s&apos;han retornat les entrades amb el mateix patró (http://, https://, ftp: / /,...).</translation>
+ </message>
<message>
<source>&amp;Match URL schemes</source>
- <translation type="unfinished"/>
+ <translation>Torna les coincidències amb patrons URL</translation>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Ordena les entrades coincidents per nom d&apos;&amp;usuari</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Ordena les entrades coincidents per títol</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Suprimeix totes les claus d&apos;encriptació compartides de la base de dades activa</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Esbo&amp;rra tots els permisos emmagatzemats de les entrades a la base de dades activa</translation>
</message>
<message>
<source>Password Generator</source>
- <translation type="unfinished"/>
+ <translation>Generador de contrasenyes</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avançat</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Permet l&apos;&amp;accés a les entrades sempre</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Permet l&apos;act&amp;ualització de les entrades, sempre</translation>
</message>
<message>
<source>Only the selected database has to be connected with a client.</source>
+ <translation>Només s&apos;ha de connectar amb un client, la base de dades seleccionada.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>&amp;Cerca en totes les bases de dades obertes, entrades coincidents</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>L&apos;actualització o creació de camps de test no està suportada.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Retorna camps avançats de text que comencen amb &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP Port:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Port per defecte: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC escolta a aquest port en 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>No podeu utilitzar ports privilegiats</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>No es poden utilitzar ports privilegiats inferiors a 1024!
+Utilitza per defecte port 19455.</translation>
+ </message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p %</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Contrasenya:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>força</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropia</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Tipus de caràcter</translation>
</message>
@@ -1741,126 +3109,378 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Special Characters</source>
- <translation type="unfinished"/>
+ <translation>Caràcters especials</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII estès</translation>
</message>
<message>
<source>Exclude look-alike characters</source>
- <translation type="unfinished"/>
+ <translation>Excloure caràcters d&apos;aspecte semblant</translation>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation>Tria caràcters de tots els grups</translation>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>&amp;Longitud:</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation>Llista de paraules:</translation>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>Nombre de paraules:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Separador de paraula:</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>Genera</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Còpia</translation>
</message>
<message>
<source>Accept</source>
+ <translation>Accepta</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Tanca</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>Aplica</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation>Entropia: %1 bit(s)</translation>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation>Qualitat de la contrasenya: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>Pobre</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>Feble</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>Bona</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>Excel·lent</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
<translation type="unfinished"/>
</message>
<message>
- <source>%p%</source>
+ <source>Database hash not available</source>
<translation type="unfinished"/>
</message>
<message>
- <source>strength</source>
+ <source>Client public key not received</source>
<translation type="unfinished"/>
</message>
<message>
- <source>entropy</source>
+ <source>Cannot decrypt message</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Length:</source>
+ <source>Timeout or cannot connect to KeePassXC</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Pick characters from every group</source>
+ <source>Action cancelled or denied</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Generate</source>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Close</source>
+ <source>KeePassXC association failed, try again</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Apply</source>
+ <source>Key change was not successful</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Entropy: %1 bit</source>
+ <source>Encryption key is not recognized</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password Quality: %1</source>
+ <source>No saved databases found</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Poor</source>
+ <source>Incorrect action</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Weak</source>
+ <source>Empty message received</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Good</source>
+ <source>No URL provided</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Excellent</source>
+ <source>No logins found</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password</source>
- <translation>Contrasenya</translation>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Extended ASCII</source>
+ <source>Add a new entry to a database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
+ <source>Path of the database.</source>
+ <translation>Camí de la base de dades.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
+ <source>path</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
+ <source>Username for the entry.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
+ <source>username</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
+ <source>URL for the entry.</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
- <source>NULL device</source>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>error reading from device</source>
+ <source>Generate a password for the entry.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>file empty !
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extrau imprimeix el contingut d&apos;una base de dades.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Camí de la base de dades a extreure.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
</source>
<translation type="unfinished"/>
</message>
<message>
- <source>malformed string</source>
+ <source>Name of the command to execute.</source>
+ <translation>Nom de l&apos;ordre a executar.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Llista les entrades de la base de dades.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Camí del grup a llistar. Per defecte és /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Fusiona dues bases de dades</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Camí de la base de dades origen a fusionar.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Camí de la base de dades de destí a fusionar.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nom de l&apos;entrada a mostrar.</translation>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation>Dispositiu nul</translation>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation>error de lectura del dispositiu</translation>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation>fitxer buit!
+</translation>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation>cadena mal formada</translation>
+ </message>
+ <message>
<source>missing closing quote</source>
+ <translation>falta la cometa de tancament</translation>
+ </message>
+ <message>
+ <source>AES: 256-bit</source>
<translation type="unfinished"/>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1880,328 +3500,439 @@ Change them only if you know what you are doing.</source>
<translation>Contrasenya</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notes</translation>
</message>
<message>
- <source>Browser Integration</source>
+ <source>Last Modified</source>
<translation type="unfinished"/>
</message>
<message>
- <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <source>Created</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Press</source>
+ <source>Legacy Browser Integration</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Browser Integration</source>
+ <translation>Integració amb el navegador</translation>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation>Resposta de YubiKey [%1] - Slot %2 - %3</translation>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation>Prem</translation>
+ </message>
+ <message>
<source>Passive</source>
- <translation type="unfinished"/>
+ <translation>Passiu</translation>
</message>
-</context>
-<context>
- <name>QtIOCompressor</name>
<message>
- <source>Internal zlib error when compressing: </source>
- <translation type="unfinished"/>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
</message>
<message>
- <source>Error writing to underlying device: </source>
+ <source>Generate a new random diceware passphrase.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error opening underlying device: </source>
+ <source>Word count for the diceware passphrase.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error reading data from underlying device: </source>
+ <source>count</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Internal zlib error when decompressing: </source>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>QtIOCompressor::open</name>
<message>
- <source>The gzip format not supported in this version of zlib.</source>
+ <source>Generate a new random password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Internal zlib error: </source>
+ <source>Length of the generated password.</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
+ <source>Use lowercase characters in the generated password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Search</source>
- <translation>Cerca</translation>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Clear</source>
+ <source>Use numbers in the generated password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Search...</source>
+ <source>Use special characters in the generated password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Limit search to selected group</source>
+ <source>Use extended ASCII in the generated password.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>Service</name>
+ <name>QtIOCompressor</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation type="unfinished"/>
+ <source>Internal zlib error when compressing: </source>
+ <translation>Error intern de zlib mentre s&apos;estava comprimint.</translation>
</message>
<message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation type="unfinished"/>
+ <source>Error writing to underlying device: </source>
+ <translation>Error d&apos;escriptura al dispositiu subjacent: </translation>
</message>
<message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation type="unfinished"/>
+ <source>Error opening underlying device: </source>
+ <translation>Error a l&apos;obrir el dispositiu subjacent: </translation>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation type="unfinished"/>
+ <source>Error reading data from underlying device: </source>
+ <translation>Error de lectura al dispositiu subjacent: </translation>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>Internal zlib error when decompressing: </source>
+ <translation>Error intern de zlib al descomprimir: </translation>
</message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation>gzip no és un format compatible amb aquesta versió de zlib.</translation>
</message>
<message>
- <source>Removing stored permissions...</source>
- <translation type="unfinished"/>
+ <source>Internal zlib error: </source>
+ <translation>Error intern de zlib:</translation>
</message>
+</context>
+<context>
+ <name>SearchWidget</name>
<message>
- <source>Abort</source>
- <translation type="unfinished"/>
+ <source>Search...</source>
+ <translation>Cerca...</translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation type="unfinished"/>
+ <source>Search</source>
+ <translation>Cerca</translation>
</message>
<message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation type="unfinished"/>
+ <source>Clear</source>
+ <translation>Neteja</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation>Distingeix entre majúscules i minúscules</translation>
</message>
<message>
+ <source>Limit search to selected group</source>
+ <translation>Limitar la cerca al grup seleccionat</translation>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
<source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Nova petició de associació de clau</translation>
</message>
<message>
<source>You have received an association request for the above key.
If you would like to allow it access to your KeePassXC database
give it a unique name to identify and accept it.</source>
- <translation type="unfinished"/>
+ <translation>S&apos;ha rebut una sol·licitud d&apos;associació per a la citada clau.
+Voleu permetre l&apos;accés a la base de dades KeePassXC?
+ Doneu-li un nom únic per a poder identificar-la i seleccione acceptar.</translation>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Voleu sobreescriure la clau existent?</translation>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Ja existeix una clau de xifrat compartida amb el nom &quot;%1&quot;.
+Voleu sobreescriure-la?</translation>
</message>
<message>
<source>KeePassXC: Update Entry</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Actualitza l&apos;entrada</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Voleu actualitzar la informació en %1 - %2?</translation>
</message>
<message>
<source>KeePassXC: Database locked!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Base de dades bloquejada!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>La base de dades activa està bloquejada!
+Per favor, desbloqueu la base de dades seleccionada o escolliu-ne una altra.</translation>
</message>
<message>
<source>KeePassXC: Removed keys from database</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Claus de la base de dades eliminades</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<source>KeePassXC: No keys found</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: No s&apos;han trobat claus</translation>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>No s&apos;han trobat claus d&apos;encriptació compartides en la configuració de KeePassHttp.</translation>
</message>
<message>
<source>KeePassXC: Settings not available!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: La configuració no està disponible!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>La base de dades activa no conté cap entrada de configuració de KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Eliminant permisos emmagatzemats...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Avorta</translation>
</message>
<message>
<source>KeePassXC: Removed permissions</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Permisos eliminats</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: No s&apos;ha trobat cap entrada amb permisos!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>La base de dades activa no conté cap entrada amb permisos.</translation>
</message>
</context>
<context>
<name>SettingsWidget</name>
<message>
<source>Application Settings</source>
- <translation type="unfinished"/>
+ <translation>Configuració de l&apos;aplicació</translation>
</message>
<message>
<source>General</source>
- <translation type="unfinished"/>
+ <translation>General</translation>
</message>
<message>
<source>Security</source>
- <translation type="unfinished"/>
+ <translation>Seguretat</translation>
</message>
<message>
<source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <translation>Error d&apos;accés al fitxer de configuració %1</translation>
</message>
</context>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Configuració bàsica</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Obriu només una sola instància del KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
- <translation type="unfinished"/>
+ <translation>Recordeu les últimes bases de dades</translation>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Recordeu els últims arxius clau i motxilles de seguretat</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Carregueu les bases de dades anteriors a l&apos;obrir el KeepassXC</translation>
</message>
<message>
<source>Automatically save on exit</source>
- <translation type="unfinished"/>
+ <translation>Deseu en tancar de forma automàtica</translation>
</message>
<message>
<source>Automatically save after every change</source>
- <translation type="unfinished"/>
+ <translation>Deseu després de cada canvi de forma automàtica</translation>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Torneu a carregar automàticament la base de dades quan siga modificada de forma externa</translation>
</message>
<message>
<source>Minimize when copying to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Minimitzeu en copiar al porta-retalls</translation>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimitzeu la finestra a l&apos;obrir l&apos;aplicació</translation>
</message>
<message>
<source>Use group icon on entry creation</source>
- <translation type="unfinished"/>
+ <translation>Utilitzeu la icona del grup al crear una entrada</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation type="unfinished"/>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>No marqueu la base de dades com a modificada si no han hagut canvis en les dades (per exemple, a l&apos;expandir grups)</translation>
</message>
<message>
- <source>Language</source>
+ <source>Hide the Details view</source>
<translation type="unfinished"/>
</message>
<message>
<source>Show a system tray icon</source>
- <translation type="unfinished"/>
+ <translation>Mostreu una icona a la safata del sistema</translation>
</message>
<message>
<source>Hide window to system tray when minimized</source>
- <translation type="unfinished"/>
+ <translation>Amagueu la finestra a la safata del sistema quan es minimitze</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation type="unfinished"/>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation>Amagueu la finestra a la safata del sistema en lloc de tancar KeepassXC</translation>
</message>
<message>
- <source>Automatically reload the database when modified externally</source>
+ <source>Dark system tray icon</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Hide window to system tray instead of app exit</source>
- <translation type="unfinished"/>
+ <source>Language</source>
+ <translation>Idioma</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation type="unfinished"/>
+ <source>Auto-Type</source>
+ <translation>Compleció automàtica</translation>
</message>
<message>
- <source>Basic Settings</source>
+ <source>Use entry title to match windows for global Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Remember last key files and security dongles</source>
+ <source>Use entry URL to match windows for global Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <source>Always ask before performing Auto-Type</source>
+ <translation>Pregunteu sempre abans d&apos;efectuar la compleció automàtica</translation>
</message>
<message>
- <source>Auto-Type</source>
- <translation type="unfinished"/>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Drecera global de compleció automàtica</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
+ <source>Auto-Type delay</source>
+ <translation>Retard de la compleció automàtica</translation>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation> ms</translation>
+ </message>
+ <message>
+ <source>Startup</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
+ <source>File Management</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Auto-Type delay</source>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
<translation type="unfinished"/>
</message>
<message>
- <source> ms</source>
+ <source>Backup database file before saving</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Entry Management</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Temps excedits</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
- <translation type="unfinished"/>
+ <translation>Neteja el porta-retalls després</translation>
</message>
<message>
<source> sec</source>
- <translation type="unfinished"/>
+ <comment>Seconds</comment>
+ <translation> sec</translation>
</message>
<message>
<source>Lock databases after inactivity of</source>
- <translation type="unfinished"/>
+ <translation>Bloquegeu les bases de dades després d&apos;estar inactives per</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation type="unfinished"/>
+ <source>Convenience</source>
+ <translation>Conveniència</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Bloquegeu les bases de dades quan sessió siga bloquejada o es tanque la tapa</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
- <translation type="unfinished"/>
+ <translation>Bloquegeu les bases de dades després minimitzar la finestra</translation>
</message>
<message>
<source>Don&apos;t require password repeat when it is visible</source>
- <translation type="unfinished"/>
+ <translation>No requerir la repetició de la contrasenya quan aquesta és visible</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Mostreu per defecte les contrasenyes en text sense xifrar</translation>
</message>
<message>
- <source>Convenience</source>
+ <source>Hide passwords in the preview panel</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
+ <source>Hide entry notes by default</source>
<translation type="unfinished"/>
</message>
<message>
<source>Privacy</source>
- <translation type="unfinished"/>
+ <translation>Privacitat</translation>
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
+ <translation>Utilitzeu Google com a alternativa per a descarregar icones de llocs web</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2209,186 +3940,147 @@ give it a unique name to identify and accept it.</source>
<name>SetupTotpDialog</name>
<message>
<source>Setup TOTP</source>
- <translation type="unfinished"/>
+ <translation>Organització TOTP</translation>
</message>
<message>
<source>Key:</source>
+ <translation>Clau:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use custom settings</source>
+ <source>Steam token settings</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Use custom settings</source>
+ <translation>Utilitza la configuració personalitzada</translation>
+ </message>
+ <message>
<source>Note: Change these settings only if you know what you are doing.</source>
- <translation type="unfinished"/>
+ <translation>Nota: Canvieu aquesta configuració només si sabeu què esteu fent.</translation>
</message>
<message>
<source>Time step:</source>
- <translation type="unfinished"/>
+ <translation>Intervals:</translation>
</message>
<message>
<source>8 digits</source>
- <translation type="unfinished"/>
+ <translation>8 dígits</translation>
</message>
<message>
<source>6 digits</source>
- <translation type="unfinished"/>
+ <translation>6 dígits</translation>
</message>
<message>
<source>Code size:</source>
- <translation type="unfinished"/>
+ <translation>Mida del codi:</translation>
</message>
<message>
<source> sec</source>
- <translation type="unfinished"/>
+ <comment>Seconds</comment>
+ <translation> sec</translation>
</message>
</context>
<context>
<name>TotpDialog</name>
<message>
<source>Timed Password</source>
- <translation type="unfinished"/>
+ <translation>Contrasenya per temps</translation>
</message>
<message>
<source>000000</source>
- <translation type="unfinished"/>
+ <translation>000000</translation>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"/>
+ <translation>Còpia</translation>
</message>
<message>
<source>Expires in</source>
- <translation type="unfinished"/>
+ <translation>Caduca el</translation>
</message>
<message>
<source>seconds</source>
- <translation type="unfinished"/>
+ <translation>segons</translation>
</message>
</context>
<context>
<name>UnlockDatabaseWidget</name>
<message>
<source>Unlock database</source>
- <translation type="unfinished"/>
+ <translation>Desbloqueja la base de dades</translation>
</message>
</context>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
- <translation type="unfinished"/>
+ <translation>Comenceu a emmagatzemar les vostres contrasenyes de manera segura en una base de dades KeePassXC</translation>
</message>
<message>
<source>Create new database</source>
- <translation type="unfinished"/>
+ <translation>Crea una nova base de dades</translation>
</message>
<message>
<source>Open existing database</source>
- <translation type="unfinished"/>
+ <translation>Obre una base de dades existent</translation>
</message>
<message>
<source>Import from KeePass 1</source>
- <translation type="unfinished"/>
+ <translation>Importa de KeePass 1</translation>
</message>
<message>
<source>Import from CSV</source>
- <translation type="unfinished"/>
+ <translation>Importa d&apos;un fitxer CSV</translation>
</message>
<message>
<source>Recent databases</source>
+ <translation>Bases de dades obertes recentment</translation>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>key file of the database</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
+ <source>Remove an entry from the database.</source>
<translation type="unfinished"/>
</message>
<message>
<source>Path of the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation type="unfinished"/>
+ <translation>Camí de la base de dades.</translation>
</message>
<message>
- <source>Path of the database to extract.</source>
+ <source>Path of the entry to remove.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Name of the command to execute.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>List database entries.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - gestor de contrasenyes multi-plataforma</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation type="unfinished"/>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>Noms de les bases de dades de contrasenya per a obrir (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation type="unfinished"/>
+ <source>path to a custom config file</source>
+ <translation>camí cap a un fitxer personalitzat de configuració</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation type="unfinished"/>
+ <source>key file of the database</source>
+ <translation>Arxiu clau de la base de dades</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation type="unfinished"/>
+ <source>read password of the database from stdin</source>
+ <translation>llegiu la contrasenya de la base de dades des de l&apos;entrada estàndard (stdin)</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
+ <source>Parent window handle</source>
<translation type="unfinished"/>
</message>
</context>
diff --git a/share/translations/keepassx_cs.ts b/share/translations/keepassx_cs.ts
index 737c2b03e..5d2382ef3 100644
--- a/share/translations/keepassx_cs.ts
+++ b/share/translations/keepassx_cs.ts
@@ -10,14 +10,30 @@
<translation>O aplikaci</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Chyby hlaste na: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC je šířeno pod GNU obecnou veřejnou licencí (GPL) verze 2 a (případně) 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Na vývoji se podíleli</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Viz přispěvatelé na portálu GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Ladící informace</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>K hlášení chyby vždy připojte následující údaje:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Zkopírovat do schránky</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revize: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribuce: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Knihovny:</translation>
</message>
@@ -48,33 +68,27 @@ Jádro systému: %3 %4</translation>
<translation>Zapnutá rozšíření:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Chyby hlaste na: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC je šířeno pod GNU obecnou veřejnou licencí (GPL) verze 2 a (případně) 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Správci projektu:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Viz přispěvatelé na portálu GitHub&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>K hlášení chyby vždy připojte následující údaje:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Tým KeePassXC děkuje zvláště vývojáři debfx za vytvoření původního KeePassX.</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>Distribuce: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Typ sestavení: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>Potvrzení přístupu KeePassXC HTTP</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Zapamatovat si toto rozhodnutí</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 si vyžádalo přístup k heslům u následujících položek.
Umožnit přístup?</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>Potvrzení přístupu KeePassXC HTTP</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Zapnout SSH agenta (vyžaduje restart)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Umožnit přístup?</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Automatické vyplňování – KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Automatické vyplňování</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Neplatná syntaxe vyjádření automatického vyplňování!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Tento příkaz automatického vyplňování obsahuje velmi dlouhou prodlevu. Opravdu chcete pokraÄovat?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Tento příkaz automatického vyplňování obsahuje velmi pomalé stisky kláves. Opravdu chcete pokraÄovat?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Tento příkaz automatického vyplňování obsahuje argumenty, které se velmi Äasto opakují. Opravdu chcete pokraÄovat?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Umožnit přístup?</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Skupina</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titulek</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Uživatelské jméno</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Posloupnost</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Automatické vyplňování – KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Vyberte záznam, kterým se bude automaticky vyplňovat:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Automatické vyplňování – KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>Potvrzení přístupu pro KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Zapamatovat si toto rozhodnutí</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Umožnit</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Odepřít</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 si vyžádalo přístup k heslům u následujících položek.
+Umožnit přístup?</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Toto je potřebné pro přístup do vašich databází pomocí KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Zapnout propojení webového prohlížeÄe s KeepassXC</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Obecné</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Zapnout propojení pro tyto prohlížeÄe:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Zobrazit oz&amp;námení když jsou vyžádány přihlašovací údaje</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>&amp;Vyžádat odemknutí zamÄené databáze</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Je odpovězeno pouze položkami stejného schématu (http://, https://, …).</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>Hledat shodu se sché&amp;maty URL (např. https://…)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Odpoví pouze nejlepšími shodami pro konkrétní URL adresu namísto všech položek pro celou doménu.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Odpovědět pouze nejlépe odpovídajícími přihlašovacími údaji</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;Seřadit odpovídající přihlašovací údaje podle titulku</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Seřadit odpovídající přihlašovací údaje podle &amp;uživatelského jména</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>O&amp;dpojit veÅ¡keré prohlížeÄe</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Zapomenout všechna zapamatovaná o&amp;právnění</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>PokroÄilé</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nikdy se nept&amp;at před přístupem k přihlašovacím údajům</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nikdy se neptat před akt&amp;ualizací přihlašovacích údajů</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>S klientem bude propojena pouze oznaÄená databáze.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;Hledat odpovídající přihlašovací údaje ve všech otevřených databázích</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatické vytváření nebo aktualizace není u textových kolonek podporované!</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>OdpovÄ›dÄ›t také kolonkami pok&amp;roÄilých textových Å™etÄ›zců které zaÄínají na „KPH: “</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>PÅ™i spuÅ¡tÄ›ní automaticky aktualizuje popis umístÄ›ní spustitelného souboru s KeePassXC nebo keepassxc-proxy na skripty posílání zpráv mezi webovým prohlížeÄem a desktopovou aplikací (native messaging).</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>PÅ™i spouÅ¡tÄ›ní aktualizovat soubory s manifestem posílání zpráv mezi webovým prohlížeÄem a desktopovou aplikací (native messaging)</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Podporovat zprostÅ™edkovávající aplikaci mezi KeePassXC a rozšířením pro webový prohlížeÄ.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Použít z&amp;prostÅ™edkovávající aplikaci mezi KeePassXC a rozšířením pro prohlížeÄ</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Pokud jste zprostÅ™edkovávající aplikaci nainstalovali ruÄnÄ›, použijte její uživatelem urÄené umístÄ›ní.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Použít uživatelem urÄené umístÄ›ní zprostÅ™edkovávají&amp;cí aplikace</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Procházet…</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Varování:&lt;/b&gt; Následující pÅ™edvolby mohou být nebezpeÄné!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Spustitelné soubor (*.exe);;Všechny soubory (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Spustitelné soubory (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Vybrat uživatelem urÄené umístÄ›ní zprostÅ™edkovávající aplikace</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Je nám líto, ale KeePassXC-Browser v tuto chvíli není ve snap vydáních podporován.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Nový požadavek na pÅ™iÅ™azení klíÄe</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Obdrželi jste požadavek na pÅ™iÅ™azení výše uvedeného klíÄe.
+
+Pokud jím chcete umožnit přístup do KeePassXC databáze,
+zadejte pro nÄ›j neopakující se název pro identifikaci a potvrÄte ho.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Uložit a umožnit přístup</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: PÅ™epsat stávající klíÄ?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Sdílený Å¡ifrovací klÃ­Ä nazvaný „%1“ už existuje.
+Přejete si ho přepsat?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Aktualizovat záznam</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Chcete aktualizovat údaj v %1 – %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Databáze uzamÄena!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>PrávÄ› otevÅ™ená databáze je uzamÄená!
+BuÄ jí odemknÄ›te, nebo vyberte jinou, odemÄenou.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Nastavení nejsou k dispozici!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Nyní otevřená databáze neobsahuje položku nastavení.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Nebyly nalezeny žádné klíÄe</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>V nastavení KeePassXC nebyly nalezeny žádné sdílené Å¡ifrovací klíÄe.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: KlíÄe odebrány z databáze</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>%n Å¡ifrovací klÃ­Ä ÃºspěšnÄ› odebrán z nastavení KeePassXC.</numerusform><numerusform>%n Å¡ifrovací klíÄe úspěšnÄ› odebrány z nastavení KeePassXC.</numerusform><numerusform>%n Å¡ifrovacích klíÄů úspěšnÄ› odebráno z nastavení KeePassXC.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Odebírání uložených oprávnění…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Přerušit</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Odebraná oprávnění</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Z %n položky úspěšně odebrána oprávnění.</numerusform><numerusform>Ze %n položek úspěšně odebrána oprávnění.</numerusform><numerusform>Z %n položek úspěšně odebrána oprávnění.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Nebyl nalezen žádný záznam s oprávněními!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Právě otevřená databáze neobsahuje záznam s oprávněními.</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Umožnit přístup?</translation>
<translation>Zopakujte heslo:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>Soubor s &amp;klíÄem</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Procházet</translation>
</message>
@@ -157,6 +502,14 @@ Umožnit přístup?</translation>
<translation>Vytvořit</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Výzva–odpovÄ›Ä</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>NaÄíst znovu</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Soubory s klíÄi</translation>
</message>
@@ -177,6 +530,10 @@ Umožnit přístup?</translation>
<translation>Vyberte soubor s klíÄem</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Prázdné heslo</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Opravdu ponechat bez hesla, tedy nechráněné?</translation>
</message>
@@ -191,20 +548,17 @@ Umožnit přístup?</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Soubor s &amp;klíÄem</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Výzva–odpovÄ›Ä</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>NaÄíst znovu</translation>
+ <source>Legacy key file format</source>
+ <translation>Starý formát souboru s klíÄem</translation>
</message>
<message>
- <source>Empty password</source>
- <translation>Prázdné heslo</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Používáte starý formát souboru s klíÄem, který v budoucnu nemusí být podporován.
+
+Zvažte vytvoÅ™ení nového souboru s klíÄem.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +572,10 @@ Umožnit přístup?</translation>
<translation>Předvolby klonu</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Připojit k titulku „ – klon“</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Nahradit uživatelské jméno a heslo tÄ›mi referenÄními</translation>
</message>
@@ -225,10 +583,6 @@ Umožnit přístup?</translation>
<source>Copy history</source>
<translation>Kopírovat historii</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Připojit k titulku „ – klon“</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +680,6 @@ Umožnit přístup?</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importovat CSV soubor</translation>
- </message>
- <message>
<source>Error</source>
<translation>Chyba</translation>
</message>
@@ -340,17 +690,17 @@ Umožnit přístup?</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>bajt,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n bajt</numerusform><numerusform>%n bajty</numerusform><numerusform>%n bajtů</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>řádků,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n řádek</numerusform><numerusform>%n řádky</numerusform><numerusform>%n řádků</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>sloupců</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n sloupec</numerusform><numerusform>%n sloupce</numerusform><numerusform>%n sloupců</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +722,14 @@ Umožnit přístup?</translation>
<translation>Procházet</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>NaÄíst znovu</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Výzva–odpovÄ›Ä:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Databázi se nedaří otevřít.</translation>
</message>
@@ -380,6 +738,23 @@ Umožnit přístup?</translation>
<translation>Soubor s klíÄem se nedaří otevřít</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Starý formát souboru s klíÄem</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Používáte starý formát souboru s klíÄem, který v budoucnu nemusí být podporován.
+
+Zvažte vytvoÅ™ení nového souboru s klíÄem.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Toto varování znovu nezobrazovat</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Veškeré soubory</translation>
</message>
@@ -391,14 +766,6 @@ Umožnit přístup?</translation>
<source>Select key file</source>
<translation>Vyberte soubor s klíÄem</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>NaÄíst znovu</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Výzva–odpovÄ›Ä:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +782,14 @@ Umožnit přístup?</translation>
<translation>Nedaří se otevřít soubor s klíÄem</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Databázi se podařilo v pořádku otevřít. Není třeba žádného zásahu.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Nedaří se otevřít databázi.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Databázi se podařilo v pořádku otevřít. Není třeba žádného zásahu.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Úspěch</translation>
</message>
@@ -440,28 +807,122 @@ Nyní je možné ji uložit.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Název databáze:</translation>
+ <source>General</source>
+ <translation>Obecné</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Popis databáze:</translation>
+ <source>Encryption</source>
+ <translation>Šifrování</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>PoÄet průchodů je příliÅ¡ vysoký</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Používáte velmi vysoký poÄet průchodů transformace klíÄe s Argnon2.
+
+Pokud tento poÄet ponecháte, otevírání databáze může trvat hodiny až dny (nebo dokonce déle)!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Rozumím, poÄet ponechat</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>PoÄet průchodů je příliÅ¡ nízký</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Používáte velmi nízký poÄet průchodů transformace funkcí pro odvození klíÄe (KDF) a Å¡ifrou AES.
+
+Pokud tento poÄet ponecháte, může být velmi snadné prolomit Å¡ifrování vaší databáze!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>Funkce pro odvození klíÄe (KDF) nezmÄ›nÄ›na</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>NepodaÅ™ilo se transformovat klÃ­Ä s novými parametry funkce pro odvození klíÄe (KDF), ta proto nezmÄ›nÄ›na.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform>vlákno</numerusform><numerusform>vlákna</numerusform><numerusform>vláken</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Šifrovací algoritmus:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 bit (výchozí)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Funkce pro odvození klíÄe:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>PoÄet průchodů Å¡ifrovacího algoritmu:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Výchozí uživatelské jméno:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>Jednosekundová prodleva testu výkonnosti</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>Využití paměti:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Souběžné zpracovávání:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Metadata databáze</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Název databáze:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Výkonnostní test</translation>
+ <source>Database description:</source>
+ <translation>Popis databáze:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Výchozí uživatelské jméno:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>Nastavení historie</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +933,27 @@ Nyní je možné ji uložit.</translation>
<translation>Omezit datový objem uchovávaných předchozích verzí záznamů na:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Namísto mazání přesouvat do Koše</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (výchozí)</translation>
+ <source>Use recycle bin</source>
+ <translation>Namísto mazání přesouvat do Koše</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation>Rozšířená nastavení databáze</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmus:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Zapnout &amp;kompresi (doporuÄeno)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Kořen</translation>
</message>
<message>
@@ -511,22 +973,48 @@ Nyní je možné ji uložit.</translation>
<translation>Soubor nebyl nalezen!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Otevřít databázi ve formátu KeePass verze 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Databázi se nedaří otevřít.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Databáze ve formátu KeePass verze 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Soubor otevÅ™en v režimu pouze pro Ätení.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Otevřít CSV soubor</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV soubor</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Veškeré soubory (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>SlouÄit databáze</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Otevřít databázi ve formátu KeePass verze 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Databáze ve formátu KeePass verze 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Zavřít?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>„%1“ je právě upravováno.
+Přesto zavřít a zahodit tak změny?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Uložit změny?</translation>
</message>
@@ -541,10 +1029,22 @@ Uložit změny?</translation>
<translation>Zápis do databáze se nezdařil.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Hesla</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Uložit databázi jako</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Exportovat databázi do CSV souboru</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Zápis do CSV souboru se nezdařil.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nová databáze</translation>
</message>
@@ -563,12 +1063,6 @@ Please press cancel to finish your changes or discard them.</source>
Pokud chcete zmÄ›ny dokonÄit, kliknÄ›te na Storno. V opaÄném případÄ› zmÄ›ny zahodíte.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Tato databáze doposud ještě nebyla uložena.
-BuÄ ji můžete uložit, nebo neuzamknout.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,69 +1071,23 @@ Chcete ji pÅ™ed uzamÄením uložit?
Pokud ne, provedené změny budou ztraceny.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>„%1“ je právě upravováno.
-Přesto zavřít a zahodit tak změny?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Exportovat databázi do CSV souboru</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV soubor</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Zápis do CSV souboru se nezdařil.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Databázi se nedaří otevřít.</translation>
+ <source>Disable safe saves?</source>
+ <translation>Vypnout bezpeÄná ukládání?</translation>
</message>
<message>
- <source>Merge database</source>
- <translation>SlouÄit databáze</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Databáze, kterou se pokoušíte uložit, je právě používaná jinou instancí KeePassXC.
-Chcete ji přesto uložit?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Hesla</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Tato databáze je již otevřená</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Databáze kterou se pokoušíte otevřít je právě používaná jinou instancí KeePassXC.
-
-Chcete ji přesto otevřít?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Otevřít pouze pro Ätení</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Soubor otevÅ™en v režimu pouze pro Ätení.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Otevřít CSV soubor</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>I přes několikátý pokus se KeePassXC nepodařilo databázi uložit. To je nejspíš způsobeno službou synchronizace souborů, která drží zámek na ukládaném souboru.
+Vypnout bezpeÄné ukládání a zkusit to znovu?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Hledání…</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>ZmÄ›nit hlavní klíÄ</translation>
</message>
@@ -660,6 +1108,14 @@ Chcete ji přesto otevřít?</translation>
<translation>Opravdu chcete nenávratně smazat %1 záznamů?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Přesunout záznam do Koše?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Opravdu přesunout záznam &quot;%1&quot; do Koše?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Přesunout záznamy do Koše?</translation>
</message>
@@ -668,28 +1124,28 @@ Chcete ji přesto otevřít?</translation>
<translation><numerusform>Opravdu přesunout %n záznam do Koše? ()</numerusform><numerusform>Opravdu přesunout %n záznamy do Koše? ()</numerusform><numerusform>Opravdu přesunout %n záznamů do Koše?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Smazat skupinu?</translation>
+ <source>Execute command?</source>
+ <translation>Spustit příkaz?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Opravdu chcete nenávratně smazat skupinu „%1“?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Opravdu spustit následující příkaz?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nedaří se spoÄítat hlavní klíÄ</translation>
+ <source>Remember my choice</source>
+ <translation>Zapamatovat si pro příště</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Přesunout záznam do Koše?</translation>
+ <source>Delete group?</source>
+ <translation>Smazat skupinu?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Opravdu přesunout záznam &quot;%1&quot; do Koše?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Opravdu chcete nenávratně smazat skupinu „%1“?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Hledání…</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Nedaří se spoÄítat hlavní klíÄ</translation>
</message>
<message>
<source>No current database.</source>
@@ -708,20 +1164,8 @@ Chcete ji přesto otevřít?</translation>
<translation>Nic nenalezeno</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Spustit příkaz?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Opravdu spustit následující příkaz?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Zapamatovat si pro příště</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Požadavek na automatické opÄ›tovné naÄtení</translation>
+ <source>File has changed</source>
+ <translation>Soubor byl změněn</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -732,8 +1176,10 @@ Chcete ji přesto otevřít?</translation>
<translation>Požadavek na slouÄení</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Soubor s databází byl zmÄ›nÄ›n a vaÅ¡e zmÄ›ny do nÄ›j nejsou uloženy. PÅ™ejete si své zmÄ›ny zaÄlenit?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Databázový soubor byl změněn a máte neuložené změny.
+PÅ™ejete si je slouÄit?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -749,6 +1195,89 @@ Chcete ji přesto otevřít?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>VytvoÅ™it token na Äasu založeného jednorázového hesla (TOTP)</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Zavřít</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Obecné</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL adresa</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>SkonÄení platnosti</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Uživatelské jméno</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Automatické vyplnění</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Hledání</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atributy</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Přílohy</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Poznámky</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Okno</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Posloupnost</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Hledat</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>VyÄistit</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Nikdy</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[CHRÃNÄšNO]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Vypnuto</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Zapnuto</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -775,6 +1304,30 @@ Chcete ji přesto otevřít?</translation>
<translation>Historie</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH agent</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>neaplikovatelné</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(šifrováno)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Vybrat soukromou Äást klíÄe</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Soubor je na soukromou Äást klíÄe příliÅ¡ velký</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>NepodaÅ™ilo se otevřít soukromou Äást klíÄe</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Historie záznamu</translation>
</message>
@@ -795,22 +1348,20 @@ Chcete ji přesto otevřít?</translation>
<translation>Nový atribut</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Vyberte soubor</translation>
+ <source>Confirm Remove</source>
+ <translation>Potvrdit odebrání</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Soubor se nedaří otevřít</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Opravdu chcete odebrat tento atribut?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Uložit přílohu</translation>
+ <source>[PROTECTED]</source>
+ <translation>[CHRÃNÄšNO]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Přílohu se nedaří uložit:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Pro zobrazení nebo úpravu klikněte na Odkrýt</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -829,20 +1380,16 @@ Chcete ji přesto otevřít?</translation>
<translation>1 rok</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Potvrdit odebrání</translation>
+ <source>Apply generated password?</source>
+ <translation>Použít vytvořené heslo?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Opravdu chcete odebrat tento atribut?</translation>
- </message>
- <message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[CHRÃNÄšNO] Pro zobrazení nebo úpravu kliknÄ›te na Odhalit</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Opravdu chcete použít vytvořené heslo na tuto položku?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Opravdu chcete tuto přílohu odebrat?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Položka úspěšně aktualizována.</translation>
</message>
</context>
<context>
@@ -860,18 +1407,6 @@ Chcete ji přesto otevřít?</translation>
<translation>Odebrat</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Přílohy</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Uložit</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Otevřít</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Upravit název</translation>
</message>
@@ -883,24 +1418,24 @@ Chcete ji přesto otevřít?</translation>
<source>Reveal</source>
<translation>Odhalit</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Zapnout automatické vyplňování tohoto záznamu</translation>
+ <source>Attachments</source>
+ <translation>Přílohy</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Barva popředí:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Barva pozadí:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Titulek okna:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Zapnout automatické vyplňování tohoto záznamu</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -911,16 +1446,24 @@ Chcete ji přesto otevřít?</translation>
<translation>Po&amp;užít vlastní pořadí automatického vyplňování:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Použít výchozí pořadí</translation>
+ <source>Window Associations</source>
+ <translation>Přiřazení oken</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Nastavit vlastní pořadí:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Přiřazení oken</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Titulek okna:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Pro toto přiřazení použít konkrétní posloupnost:</translation>
</message>
</context>
<context>
@@ -945,12 +1488,8 @@ Chcete ji přesto otevřít?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Titulek:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Uživatelské jméno:</translation>
+ <source>URL:</source>
+ <translation>URL adresa:</translation>
</message>
<message>
<source>Password:</source>
@@ -961,20 +1500,104 @@ Chcete ji přesto otevřít?</translation>
<translation>Zopakování hesla:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL adresa:</translation>
+ <source>Title:</source>
+ <translation>Titulek:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Platnost skonÄí</translation>
+ <source>Notes</source>
+ <translation>Poznámky</translation>
</message>
<message>
<source>Presets</source>
<translation>Předpřipravené</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Poznámky:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Od/zaškrtnutím této kolonky odkryjete sekci poznámek.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Uživatelské jméno:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Platnost skonÄí</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Odebrat klÃ­Ä z klienta po uplynutí</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>sekund</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Otisk</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Odebrat klÃ­Ä z klienta pÅ™i zavÅ™ení/zamÄení databáze</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>VeÅ™ejná Äást klíÄe</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>PÅ™idat klÃ­Ä do agenta pÅ™i otevÅ™ení/odemÄení databáze</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Komentář</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Rozšifrovat</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>neaplikovatelné</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Zkopírovat do schránky</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Soukromá Äást klíÄe</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Vnější soubor</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Procházet…</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Příloha</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Přidat do agenta</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Odebrat z agenta</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>PÅ™i použití tohoto klíÄe vyžadovat potvrzení od uživatele</translation>
</message>
</context>
<context>
@@ -1046,6 +1669,14 @@ Chcete ji přesto otevřít?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>Po&amp;užít výchozí ikonu</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Použít svou vlastní ikonu</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Přidat svou vlastní ikonu</translation>
</message>
@@ -1054,6 +1685,18 @@ Chcete ji přesto otevřít?</translation>
<translation>Smazat svou vlastní ikonu</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Stáhnout ikonu webu (favicon)</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Ikonu webu (favicon) se nedaří stáhnout.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Rada: Jako náhradní Å™eÅ¡ení můžete zapnout Google v Nástroje → Nastavení → ZabezpeÄení</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Obrázky</translation>
</message>
@@ -1066,24 +1709,12 @@ Chcete ji přesto otevřít?</translation>
<translation>Vyberte obrázek</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Stáhnout ikonu webu (favicon)</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Ikonu webu (favicon) se nedaří stáhnout.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Ikonu se nedaří naÄíst</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>Po&amp;užít výchozí ikonu</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Použít svou vlastní ikonu</translation>
+ <source>Custom icon already exists</source>
+ <translation>Tato vlastní ikona už existuje</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1093,14 +1724,6 @@ Chcete ji přesto otevřít?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Tato ikona je používána %1 záznamy a bude nahrazena výchozí ikonou. Opravdu ji chcete smazat?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Rada: Jako náhradní Å™eÅ¡ení můžete zapnout Google v Nástroje → Nastavení → ZabezpeÄení</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>Tato vlastní ikona už existuje</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1120,12 +1743,127 @@ Chcete ji přesto otevřít?</translation>
<source>Uuid:</source>
<translation>UniverzálnÄ› jedineÄný identifikátor:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Data zásuvného modulu</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Odebrat</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Smazat data zásuvného modulu?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Opravdu chcete smazat oznaÄená data zásuvného modulu?
+DotÄený zásuvný modul to může rozbít.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>KlíÄ</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Hodnota</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
- <translation>- Klon</translation>
+ <comment>Suffix added to cloned entries</comment>
+ <translation>- klon</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Velikost</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Přidat</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Odebrat</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Otevřít</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Uložit</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Vybrat soubory</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Opravdu chcete odebrat %n přílohu?</numerusform><numerusform>Opravdu chcete odebrat %n přílohy?</numerusform><numerusform>Opravdu chcete odebrat %n příloh?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Potvrdit odebrání</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Uložit přílohy</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Nedaří se vytvořit složku:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Opravdu chcete přílohou přepsat stávající soubor „%1“?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Potvrdit přepsání</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Nedaří se uložit přílohy:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Nedaří se otevřít přílohu:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Nedaří se otevřít přílohy:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Nedaří se otevřít soubory:
+%1</translation>
</message>
</context>
<context>
@@ -1157,6 +1895,11 @@ Chcete ji přesto otevřít?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Skupina</translation>
</message>
@@ -1173,9 +1916,67 @@ Chcete ji přesto otevřít?</translation>
<translation>URL adresa</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref:</translation>
+ <source>Never</source>
+ <translation>Nikdy</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Poznámky</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Platnost skonÄí</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Vytvořeno</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Okamžik nejnovější úpravy:</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Okamžik nejnovějšího přístupu:</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Přílohy</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Přizpůsobit pohled</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Skrýt uživatelská jména</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Skrýt hesl</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Přizpůsobit oknu</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Přizpůsobit obsahu</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Vrátit na výchozí</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Přípony (ikona)</translation>
</message>
</context>
<context>
@@ -1186,6 +1987,17 @@ Chcete ji přesto otevřít?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Soubor se nedaří uložit!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Nedaří se uložit soubor se skriptem pro posílání zpráv mezi webovým prohlížeÄem a desktopovou aplikací (native messaging).</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1235,6 +2047,10 @@ Chcete ji přesto otevřít?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Zajistit aby heslo obsahovalo znaky ze všech zvolených skupin znaků</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Rozšířené ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1248,6 +2064,361 @@ Chcete ji přesto otevřít?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nedaří se vypoÄítat hlavní klíÄ</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nedaří se vyvolat výzva-odpovÄ›Ä.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Byl zadán nesprávný klíÄ, nebo je soubor s databází poÅ¡kozený.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nedaří se vyvolat výzva-odpovÄ›Ä.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nedaří se vypoÄítat hlavní klíÄ</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>chybí databázové hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nedaří se vypoÄítat hlavní klíÄ</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Neplatná velikost kontrolního souÄtu hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Neshoda SHA256 kontrolního souÄtu hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Nesprávný klÃ­Ä nebo je soubor s databází poÅ¡kozený (neshoda HMAC)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Neznámá šifra</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Neplatná velikost identifikátoru hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Neplatná délka kolonky hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Neplatné délka dat hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>NepodaÅ™ilo se otevřít vyrovnávací paměť pro parametry funkce pro odvození klíÄe (KDF), uložené v hlaviÄce</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Nepodporovaná funkce pro odvození klíÄe (KDF) nebo neplatné parametry</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>V KDBX4 souboru nalezeny kolonky staré hlaviÄky.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Neplatná velikost identifikátoru vnitÅ™ní hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Neplatná délka kolonky vnitÅ™ní hlaviÄky</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Neplatná velikost binárky vnitÅ™ní hlavniÄky</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nepodporovaná verze mapy varianty KeePass.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná délka názvu položky mapy varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná data názvu položky mapy varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná délka hodnoty položky mapy varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná data hodnoty položky mapy varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná délka hodnoty položky typu boolean mapy varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná délka 32 bitové celoÄíselné hodnoty položky varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná délka 32 bitové kladné celoÄíselné hodnoty položky varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná délka 64 bitové celoÄíselné hodnoty položky varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná délka 64 bitové kladné celoÄíselné hodnoty položky varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatný typ položky mapy varianty</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Neplatná velikost typu kolonky mapy varianty</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Neplatný algoritmus symetrické šifry.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Neplatná velikost symetrické šifry IV.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nedaří se vypoÄítat hlavní klíÄ</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>NepodaÅ™ilo se serializovat mapu varianty parametrů funkce pro odvození klíÄe</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Neplatná délka neopakujícího se identifikátoru šifry</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Nepodporovaná šifra</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Neplatná délka příznaku komprimace</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Nepodporovaný kompresní algoritmus</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Neplatná velikost hlavního náhodného Äísla (seed)</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Neplatná velikost transformaÄního náhodného Äísla (seed)</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Neplatná velikost transformaÄních průchodů</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Neplatná velikost poÄáteÄních bajtů</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Neplatná velikost identifikátoru náhodného proudu</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Neplatná šifra vnitřního náhodného proudu</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Nejedná se o databázi KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Zvolený soubor je databáze ve starém formátu KeePass 1 (.kdb).
+
+Můžete ho importovat pomocí Databáze → Importovat databázi ve formátu KeePass 1….
+Jedná se o jednosměrný převod. Databázi, vzniklou z importu, nepůjde otevřít ve staré aplikaci KeePassX verze 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Nepodporovaná verze databáze KeePass 2.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Nezdar při zpracovávání XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Žádná kořenová skupina</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Chybějící neopakující se identifikátor nebo data ikony</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>ChybÄ›jící vlastní datový klÃ­Ä nebo hodnota</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Prvky vícero skupin</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Prázdný neopakující se identifikátor skupiny</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Neplatné Äíslo ikony skupiny</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Neplatná hodnota zapnutí automatického vyplňování</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Neplatná hodnota zapnutí vyhledávání</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Nenalezen žádný neopakující se identifikátor skupiny</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Prázdný neopakující se identifikátor objektu ke smazání</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>ChybÄ›jící neopakující se identifikátor nebo Äas smazaného objektu</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Prázdný neopakující se identifikátor</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Neplatné Äíslo ikony položky</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Prvek historie v položce historie</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Nebyl nalezen žádný neopakující se identifikátor položky</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Prvek historie s rozdílným neopakujícím se identifikátorem</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Nedaří se rozšifrovat řetězec položky</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>ZjiÅ¡tÄ›n duplicitní uživatelem urÄený atribut</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Chybí klÃ­Ä nebo hodnota Å™etÄ›zce položky</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Zjištěna duplicitní příloha</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Chybí binární klÃ­Ä nebo hodnota položky</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Chybí přiřazení okna nebo posloupnost pro automatické vyplňování</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Neplatná boolean hodnota</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Neplatná hodnota data a Äasu</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Neplatná hodnota barvy</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Neplatná Äást rgb vyjádÅ™ení barvy</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Neplatná Äíselná hodnota</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Neplatná hodnota neopakujícího se identifikátoru</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Nedaří se rozbalit binární soubor</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1277,6 +2448,35 @@ Chcete ji přesto otevřít?</translation>
<translation>Nepodporovaná verze databáze KeePass.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Nedaří se Äíst Å¡ifrování IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Neplatný poÄet skupin</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Neplatný poÄet položek</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Neplatná velikost otisku (hash) obsahu</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Neplatná velikost transformaÄního náhodného Äísla (seed)</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Neplatný poÄet transformaÄních průchodů</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Nedaří se vytvořit strom skupin</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Kořen</translation>
</message>
@@ -1288,129 +2488,141 @@ Chcete ji přesto otevřít?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Byl zadán chybný klíÄ, nebo je poÅ¡kozen databázový soubor.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Nejedná se o databázi KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Transformace klíÄe se nezdaÅ™ila</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Nepodporovaná verze databáze KeePass.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Neplatné Äíslo typu kolonky skupiny</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Byl zadán chybný klíÄ, nebo je poÅ¡kozen databázový soubor.</translation>
+ <source>Invalid group field size</source>
+ <translation>Neplatná velikost kolonky skupiny</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nedaří se spoÄítat hlavní klíÄ</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>NaÄtená data kolonky skupiny neodpovídají velikosti</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nedaří se vyvolat výzva-odpovÄ›Ä.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Nesprávná velikost kolonky identifikátoru skupiny</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Zvolený soubor je databáze ve starém formátu KeePass 1 (.kdb).
-
-Můžete ho importovat pomocí Databáze → Importovat databázi ve formátu KeePass 1….
-Jedná se o jednosměrný převod. Databázi, vzniklou z importu, nepůjde otevřít ve staré verzi KeePassX 0.4.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Nesprávná velikost kolonky Äasu vytvoÅ™ení skupiny</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nedaří se vyvolat výzva-odpovÄ›Ä.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Nesprávná velikost kolonky Äasu úpravy skupiny</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nedaří se spoÄítat hlavní klíÄ</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Nesprávná velikost kolonky Äasu přístupu do skupiny</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Při zkoušení šifrovacích funkcí byl zjištěn fatální nedostatek.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Nesprávná velikost kolonky Äasu skonÄení platnosti skupiny</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC – chyba</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Nesprávná velikost kolonky ikony skupiny</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Soubor se zámkem se nepodařilo vytvořit. Režim jediné instance proto vypnut.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Nesprávná velikost kolonky úrovně skupiny</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Již je spuštěná jiná instance KeePassXC.</translation>
+ <source>Invalid group field type</source>
+ <translation>Neplatný typ kolonky skupiny</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>Existující uzamykací soubor, zajišťující spuštění pouze jedné instance, není platný. Spouští se nová instance.</translation>
+ <source>Missing group id or level</source>
+ <translation>Chybějící identifikátor nebo úroveň skupiny</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Otevřít databázi</translation>
+ <source>Missing entry field type number</source>
+ <translation>Chybí Äíslo typu kolonky položky</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Nastavení databáze</translation>
+ <source>Invalid entry field size</source>
+ <translation>Neplatná velikost kolonky položky</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Zkopírovat uživatelské jméno do schránky</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>NaÄtená data kolonky položky neodpovídají velikosti</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Zkopírovat heslo do schránky</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Neplatná velikost kolonky neopakujícího se identifikátoru položky</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Nastavení</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Neplatná velikost kolonky identifikátoru skupiny položky</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Zobrazovat lištu nástrojů</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Neplatná velikost kolonky ikony položky</translation>
</message>
<message>
- <source>read-only</source>
- <translation>pouze pro Ätení</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Neplatná velikost kolonky Äasu vytvoÅ™ení položky</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Zobrazit/skrýt okno</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Neplatná velikost kolonky Äasu úpravy položky</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Databáze ve formátu KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Neplatná velikost kolonky Äasu konce platnosti položky</translation>
</message>
<message>
- <source>All files</source>
- <translation>Veškeré soubory</translation>
+ <source>Invalid entry field type</source>
+ <translation>Neplatný typ kolonky položky</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Uložit opravenou databázi</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Existující uzamykací soubor, zajišťující spuštění pouze jedné instance, není platný. Spouští se nová instance.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Zápis do databáze se nezdařil.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Soubor se zámkem se nepodařilo vytvořit. Režim jediné instance proto vypnut.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Již je spuštěná jiná instance KeePassXC.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Při zkoušení šifrovacích funkcí byl zjištěn fatální nedostatek.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC – chyba</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Databáze</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Nedávno otevřené databáze</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importovat</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>Záz&amp;namy</translation>
</message>
@@ -1419,12 +2631,16 @@ Jedná se o jednosmÄ›rný pÅ™evod. Databázi, vzniklou z importu, nepůjde otevÅ
<translation>Zkopí&amp;rovat atribut do schránky</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Na Äasu založené jednorázové heslo</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>Skupiny</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>Zobrazit</translation>
+ <source>&amp;Tools</source>
+ <translation>Nás&amp;troje</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1435,6 +2651,10 @@ Jedná se o jednosmÄ›rný pÅ™evod. Databázi, vzniklou z importu, nepůjde otevÅ
<translation>O &amp;aplikaci</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Otevřít databázi…</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Uložit databázi</translation>
</message>
@@ -1475,24 +2695,24 @@ Jedná se o jednosmÄ›rný pÅ™evod. Databázi, vzniklou z importu, nepůjde otevÅ
<translation>Smazat skupinu</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Nastavení &amp;databáze</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>&amp;Uložit databázi jako…</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>Klonovat záznam</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Z&amp;mÄ›nit hlavní klíÄ…</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Časované jednorázové heslo</translation>
+ <source>&amp;Database settings</source>
+ <translation>Nastavení &amp;databáze</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Zkopírovat &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Nastavení databáze</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Zobrazit TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>Klonovat záznam</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1503,14 +2723,26 @@ Jedná se o jednosmÄ›rný pÅ™evod. Databázi, vzniklou z importu, nepůjde otevÅ
<translation>Zkopírovat &amp;uživatelské jméno</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Zkopírovat uživatelské jméno do schránky</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Zkopírovat heslo</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Zkopírovat heslo do schránky</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>Na&amp;stavení</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Generátor hesel</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Provést automatické vyplnění</translation>
</message>
@@ -1527,165 +2759,222 @@ Jedná se o jednosmÄ›rný pÅ™evod. Databázi, vzniklou z importu, nepůjde otevÅ
<translation>&amp;Titulek</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Zkopírovat titulek do schránky</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL adresa</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Zkopírovat URL adresu do schránky</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>Poz&amp;námky</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Generátor hesel</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Zkopírovat poznámky do schránky</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>VyÄistit historii</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exportovat do CSV souboru…</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Databáze</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importovat databázi aplikace KeePass verze 1…</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importovat</translation>
+ <source>Import CSV file...</source>
+ <translation>Importovat CSV soubor…</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>Nás&amp;troje</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>O&amp;pravit databázi…</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Vyprázdnit Koš</translation>
+ <source>Show TOTP</source>
+ <translation>Zobrazit TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Nastavit TOTP…</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Zkopírovat &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>&amp;Vysypat koš</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>VyÄistit historii</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Chyba přístupu k souboru s nastaveními %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>UkonÄit KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Zdá se, že pro napojení prohlížeÄe používáte KeePassHTTP. Tato funkce byla oznaÄena za zastaralou a bude v budoucnu odebrána.&lt;br&gt;PÅ™ejdÄ›te na KeePassXC-Browser! S pÅ™echodem pomůže &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migraÄní příruÄka&lt;/a&gt; (varování %1 ze 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>DotknÄ›te se tlaÄítka na svém YubiKey zařízení!</translation>
+ <source>read-only</source>
+ <translation>pouze pro Ätení</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>Nápověda</translation>
+ <source>Settings</source>
+ <translation>Nastavení</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Otevřít databázi…</translation>
+ <source>Toggle window</source>
+ <translation>Zobrazit/skrýt okno</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>&amp;Uložit databázi jako…</translation>
+ <source>Quit KeePassXC</source>
+ <translation>UkonÄit KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Z&amp;mÄ›nit hlavní klíÄ…</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Databáze ve formátu KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Exportovat do CSV souboru…</translation>
+ <source>All files</source>
+ <translation>Veškeré soubory</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Importovat databázi aplikace KeePass verze 1…</translation>
+ <source>Open database</source>
+ <translation>Otevřít databázi</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importovat CSV soubor…</translation>
+ <source>Save repaired database</source>
+ <translation>Uložit opravenou databázi</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>O&amp;pravit databázi…</translation>
+ <source>Writing the database failed.</source>
+ <translation>Zápis do databáze se nezdařil.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Nastavit TOTP…</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>DotknÄ›te se tlaÄítka na svém YubiKey zařízení!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>VAROVÃNÃ: Používáte vývojové sestavení KeePassXC!
+Je zde vysoké riziko poškození dat, proto udržujte zálohu svých databází.
+Tato verze není urÄena pro produkÄní použití.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Dialog</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Neplatný soubor s klíÄem, oÄekáván OpenSSH klíÄ</translation>
</message>
<message>
- <source>General</source>
- <translation>Obecné</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>Neshoda v PEM hranici</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>Z&amp;obrazit oznámení když jsou požadovány přihlašovací údaje</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Dekódování Base64 se nezdařilo</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Seřadit odpovídající záznamy dle &amp;uživatelského jména</translation>
+ <source>Key file way too small.</source>
+ <translation>Soubor s klíÄem je příliÅ¡ malý.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Z právě otevřené databáze odebrat veškerá uložená oprávnění</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>Neplatný identifikátor magic hlaviÄky souboru s klíÄem</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>PokroÄilé</translation>
+ <source>Found zero keys</source>
+ <translation>Nenalezeny žádné klíÄe</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Vždy umožnit přístup k zázn&amp;amům</translation>
+ <source>Failed to read public key.</source>
+ <translation>NepodaÅ™ilo se naÄíst veÅ™ejnou Äást klíÄe.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Vždy umožnit akt&amp;ualizovat záznamy</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>PoÅ¡kozený soubor s klíÄem, Ätení soukromé Äásti klíÄe se nezdaÅ™ilo</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Vy&amp;hledat odpovídající záznamy ve všech otevřených databázích</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Žádná obsažená soukromá Äást klíÄe k rozÅ¡ifrování</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP port:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Snažíte se spustit funkci odvození klíÄe bez Å¡ifry</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Výchozí port: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Pro rozÅ¡ifrování tohoto klíÄe je tÅ™eba zadat heslovou frázi</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Vyžádat odemknutí zamÄené databáze</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Odvození klíÄe se nezdaÅ™ilo, soubor s klíÄem je poÅ¡kozený?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Seřadit odpovídající zázna&amp;my dle názvu</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Rozšifrování se nezdařilo, chybná heslová fráze?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC bude oÄekávat spojení na tomto portu na adrese 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>NeoÄekávaný konec souboru pÅ™i Ätení veÅ™ejné Äásti klíÄe</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Není možné navázat se na privilegované porty</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>NeoÄekávaný konec souboru pÅ™i Ätení soukromé Äásti klíÄe</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Není možné navázat na porty s Äíslem nižším, než 1024!
-Náhradně bude použit port 19455.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Není možné zapsat veÅ™ejnou Äást klíÄe, protože je prázdná</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>Z právÄ› otevÅ™ené databáze od&amp;ebrat veÅ¡keré sdílené Å¡ifrovací klíÄe</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>NeoÄekávaný konec souboru pÅ™i zápisu veÅ™ejné Äásti klíÄe</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>OdpovÄ›dÄ›t také kolonkami pok&amp;roÄilých textových Å™etÄ›zců které zaÄínají na „KPH:“</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Není možné zapsat soukromou Äást klíÄe, protože je prázdná</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Automatická vytváření nebo aktualizace nejsou u textových kolonek podporované!</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>NeoÄekávaný konec souboru pÅ™i zápisu soukromé Äásti klíÄe</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Nepodporovaný typ klíÄe: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Neznámá šifra: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Cifra IV je příliÅ¡ krátká pro MD5 funkci pro odvození klíÄe</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Neznámá funkce pro odvození klíÄe: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Neznámý typ klíÄe: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1696,6 +2985,15 @@ Náhradně bude použit port 19455.</translation>
<translation>Zapnout KeePassHTTP server</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Obecné</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Z&amp;obrazit oznámení když jsou požadovány přihlašovací údaje</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Vrátí pouze nejlepší shody pro konkrétní URL adresu namísto všech položek pro celou doménu.</translation>
</message>
@@ -1704,6 +3002,10 @@ Náhradně bude použit port 19455.</translation>
<translation>V&amp;racet pouze nejlépe odpovídající položky</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Vyžádat odemknutí zamÄené databáze</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Jsou vráceny pouze položky se stejným schématem (http://, https://, ftp://, …).</translation>
</message>
@@ -1712,27 +3014,108 @@ Náhradně bude použit port 19455.</translation>
<translation>&amp;Hledat shodu s URL schématy</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Seřadit odpovídající záznamy dle &amp;uživatelského jména</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Seřadit odpovídající zázna&amp;my dle názvu</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Z právÄ› otevÅ™ené databáze od&amp;ebrat veÅ¡keré sdílené Å¡ifrovací klíÄe</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Z právě otevřené databáze odebrat veškerá uložená oprávnění</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Generátor hesel</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>PokroÄilé</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Vždy umožnit přístup k zázn&amp;amům</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Vždy umožnit akt&amp;ualizovat záznamy</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Pouze oznaÄené databáze budou spojeny s klientem.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Následující pÅ™edvolby mohou být nebezpeÄné!
-Měňte je pouze, pokud víte, co děláte.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Vy&amp;hledat odpovídající záznamy ve všech otevřených databázích</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatická vytváření nebo aktualizace nejsou u textových kolonek podporované!</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>OdpovÄ›dÄ›t také kolonkami pok&amp;roÄilých textových Å™etÄ›zců které zaÄínají na „KPH:“</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP port:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Výchozí port: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC bude oÄekávat spojení na tomto portu na adrese 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Varování:&lt;/b&gt; Následující pÅ™edvolby mohou být nebezpeÄné!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP byl oznaÄen za zastaralý a bude v budoucnu odebrán.&lt;br&gt;PÅ™ejdÄ›te na KeePassXC-Browser! Pomoc s pÅ™echodem naleznete v &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migraÄní příruÄce&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Není možné navázat se na privilegované porty</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Není možné navázat na porty s Äíslem nižším, než 1024!
+Náhradně bude použit port 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Heslo:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>odolnost</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>nahodilost</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Typy znaků</translation>
</message>
@@ -1753,38 +3136,50 @@ Měňte je pouze, pokud víte, co děláte.</translation>
<translation>Zvláštní znaky</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Rozšířené ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Vynechat podobně vypadající znaky (předejití záměně)</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Přijmout</translation>
+ <source>Pick characters from every group</source>
+ <translation>Zajistit přítomnost znaků ze všech zvolených skupin</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>Dé&amp;lka:</translation>
</message>
<message>
- <source>strength</source>
- <translation>odolnost</translation>
+ <source>Passphrase</source>
+ <translation>Heslová fráze</translation>
</message>
<message>
- <source>entropy</source>
- <translation>nahodilost</translation>
+ <source>Wordlist:</source>
+ <translation>Slovník:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>Dé&amp;lka:</translation>
+ <source>Word Count:</source>
+ <translation>PoÄet slov:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Zajistit přítomnost znaků ze všech zvolených skupin</translation>
+ <source>Word Separator:</source>
+ <translation>OddÄ›lovaÄ slov:</translation>
</message>
<message>
<source>Generate</source>
<translation>TvoÅ™</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Kopírovat</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Přijmout</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Zavřít</translation>
</message>
@@ -1802,51 +3197,275 @@ Měňte je pouze, pokud víte, co děláte.</translation>
</message>
<message>
<source>Poor</source>
- <translation>Velmi slabé</translation>
+ <comment>Password quality</comment>
+ <translation>Velmi slabá</translation>
</message>
<message>
<source>Weak</source>
- <translation>Slabé</translation>
+ <comment>Password quality</comment>
+ <translation>Slabá</translation>
</message>
<message>
<source>Good</source>
- <translation>Dobré</translation>
+ <comment>Password quality</comment>
+ <translation>Dobrá</translation>
</message>
<message>
<source>Excellent</source>
- <translation>Výborné</translation>
+ <comment>Password quality</comment>
+ <translation>Výborná</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Heslo</translation>
+ <source>Database not opened</source>
+ <translation>Databáze nebyla otevřena</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>Rozšířené ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>Otisk (hash) databáze není k dispozici</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Heslová fráze</translation>
+ <source>Client public key not received</source>
+ <translation>Neobdržena veÅ™ejná Äást klíÄe klienta</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Slovník:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Zprávu se nedaří rozšifrovat</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>PoÄet slov:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>PÅ™ekroÄení Äasového limitu nebo se nedaří spojit s KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>OddÄ›lovaÄ slov:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Akce zrušena nebo odepřena</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Kopírovat</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Zprávu se nedaří zaÅ¡ifrovat nebo nebyla nalezena veÅ™ejná Äást klíÄe. Je v KeePassXC zapnuté posílání zpráv mezi webovým prohlížeÄem a desktopovou aplikací (native messaging)?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>Přiřazení KeePassXC se nezdařilo, zkuste to znovu</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>VýmÄ›na klíÄe nebyla úspěšná</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Å ifrovací klÃ­Ä nebyl rozpoznán</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Nebyly nalezeny žádné uložené databáze</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Nesprávná akce</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Obdržena prázdná zpráva</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Nebyla zadána žádná URL adresa</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Nenalezeny žádné přihlašovací údaje</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Přidat do databáze novou položku.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Umístění databáze.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Soubor s klíÄem k databázi.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>popis umístění</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Uživatelské jméno pro záznam.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>uživatelské jméno</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL adresa pro položku.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL adresa</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Dotázat se na heslo položky.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Vytvořit heslo pro položku.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Délka vytvářeného hesla.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>délka</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Popis umístění záznamu, který přidat.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Zkopírovat heslo záznamu do schránky.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Popis umístění záznamu ke zkopírování do schránky.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Časová prodleva (v sekundách) před vymazáním obsahu schránky.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Upravit položku.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Titulek pro položku.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>titulek</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Popis umístění položky kterou upravit.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Odhadnout nahodilost hesla.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Heslo pro které odhadnout nahodilost.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Provést pokroÄilou analýzu hesla.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Vytáhnout a vypsat obsah databáze.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Umístění databáze ze které vytáhnout.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Zadejte heslo pro odemknutí %1:</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>NepodaÅ™ilo se naÄíst soubor s klíÄem %1: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>VAROVÃNÃ: Používáte starší formát souboru s klíÄem, který v budoucnu nemusí být podporován.
+
+Zvažte vytvoÅ™ení nového souboru s klíÄem.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Příkazy k dispozici:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Název příkazu, který spustit.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Vypsat položky databáze.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Umístění skupiny, kterou vypsat. Výchozí je /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Najděte položky rychle.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Hledat pojem.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>SlouÄit dvÄ› databáze.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>UmístÄ›ní databáze do které slouÄit.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>UmístÄ›ní databáze ze které slouÄit.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Použít stejné přihlašovací údaje pro oba databázové soubory.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Soubor s klíÄem k databázi, ze které slouÄit.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Zobrazit informace o položce.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Názvy atributů které zobrazit. Tato předvolba může být zadaná vícekrát, pro každý z atributů zvlášť na řádku v daném pořadí. Pokud nejsou zadány žádné atributy, je zobrazen souhrn výchozích atributů.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>atribut</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Název položky k zobrazení.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL zařízení</translation>
@@ -1870,8 +3489,28 @@ Měňte je pouze, pokud víte, co děláte.</translation>
<translation>chybějící uzavírací uvozovka</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>VNITŘNà – unget lower bound pÅ™ekroÄeno</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – doporuÄeno)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1890,14 +3529,22 @@ Měňte je pouze, pokud víte, co děláte.</translation>
<translation>Heslo</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL adresa</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Poznámky</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Okamžik poslední úpravy</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Vytvořeno</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Starý způsob napojení webového prohlížeÄe</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Napojení na webový prohlížeÄ</translation>
</message>
@@ -1913,6 +3560,56 @@ Měňte je pouze, pokud víte, co děláte.</translation>
<source>Passive</source>
<translation>Pasivní</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH agent</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Vytvořit náhodnou diceware heslovou frázi.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>PoÄet slov pro diceware heslovou frázi.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>poÄet</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Slovník pro diceware generátor.
+[Výchozí: EFF angliÄtina]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Vytvořit nové náhodné heslo.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Délka vytvářeného hesla.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Použít ve vytvářeném heslu malá písmena.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Použít ve vytvářeném heslu velká písmena.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Použít ve vytvářeném heslu Äíslice.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Použít ve vytvářeném heslu speciální znaky.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Použít ve vytvářeném heslu rozšířené ASCII.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1951,8 +3648,8 @@ Měňte je pouze, pokud víte, co děláte.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Rozlišovat velikost písmen</translation>
+ <source>Search...</source>
+ <translation>Hledat…</translation>
</message>
<message>
<source>Search</source>
@@ -1963,8 +3660,8 @@ Měňte je pouze, pokud víte, co děláte.</translation>
<translation>VyÄistit</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Hledat…</translation>
+ <source>Case Sensitive</source>
+ <translation>Rozlišovat velikost písmen</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1974,50 +3671,6 @@ Měňte je pouze, pokud víte, co děláte.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Již existuje sdílený Å¡ifrovací klÃ­Ä s názvem „%1“.
-Chcete ho přepsat?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Chcete aktualizovat údaj v %1 – %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>PrávÄ› otevÅ™ená databáze je uzamÄená!
-BuÄ jí odemknÄ›te, nebo vyberte jinou, odemÄenou.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Z nastavení KeePassX/Http bylo úspěšně odebráno %1 šifrování-%2.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>V nastavení KeePassHttp nebyly nalezeny žádné sdílené Å¡ifrovací klíÄe.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Právě otevřená databáze neobsahuje žádný záznam nastavení KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Odstraňování uložených oprávnění…</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Přerušit</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Oprávnění %1 %2 úspěšně odebrána.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>Právě otevřená databáze neobsahuje záznam s oprávněními.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: nový požadavek na pÅ™iÅ™azení klíÄe</translation>
</message>
@@ -2034,33 +3687,77 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<translation>KeePassXC: PÅ™epsat stávající klíÄ?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Již existuje sdílený Å¡ifrovací klÃ­Ä s názvem „%1“.
+Chcete ho přepsat?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Aktualizovat záznam</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Chcete aktualizovat údaj v %1 – %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Databáze uzamÄena!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>PrávÄ› otevÅ™ená databáze je uzamÄená!
+BuÄ jí odemknÄ›te, nebo vyberte jinou, odemÄenou.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: KlíÄe odebrány z databáze</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>ÚspěšnÄ› odebrán %n Å¡ifrovací klÃ­Ä z nastavení KeePassX/Http.</numerusform><numerusform>ÚspěšnÄ› odebrány %n Å¡ifrovací klíÄe z nastavení KeePassX/Http.</numerusform><numerusform>ÚspěšnÄ› odebráno %n Å¡ifrovacích klíÄů z nastavení KeePassX/Http.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: KlíÄe nebyly nalezeny</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>V nastavení KeePassHttp nebyly nalezeny žádné sdílené Å¡ifrovací klíÄe.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Nastavení nejsou k dispozici!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Právě otevřená databáze neobsahuje žádný záznam nastavení KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Odstraňování uložených oprávnění…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Přerušit</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Odebraná oprávnění</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Úspěšně odebrána oprávnění z %n položky.</numerusform><numerusform>Úspěšně odebrána oprávnění ze %n položek.</numerusform><numerusform>Úspěšně odebrána oprávnění ze %n položek.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Nebyl nalezen záznam s oprávněními!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Právě otevřená databáze neobsahuje záznam s oprávněními.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2084,10 +3781,26 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Základní nastavení</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Spouštět pouze jedinou instanci KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Pamatovat si nedávno otevřené databáze</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Pamatovat si minule použité soubory s klíÄi a zabezpeÄovací klíÄenky</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>PÅ™i spouÅ¡tÄ›ní aplikace naÄíst minule otevÅ™ené databáze</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>PÅ™ed ukonÄením aplikace automaticky uložit případné zmÄ›ny</translation>
</message>
@@ -2096,20 +3809,28 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<translation>Po každé změně hned automaticky uložit</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>V případÄ› úpravy zvenÄí, automaticky opÄ›tovnÄ› naÄíst databázi</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Po zkopírování údaje do schránky odklidit okno aplikace jeho automatickou minimalizací</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Spouštět aplikaci s minimalizovaným oknem</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Pro vytvářený záznam použít ikonu skupiny, do které spadá</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Klávesová zkratka pro všeobecné automatické vyplňování</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>NeoznaÄovat databázi jako upravenou pÅ™i zmÄ›nách, nepostihujících údaje (napÅ™. rozšíření skupin)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Jazyk</translation>
+ <source>Hide the Details view</source>
+ <translation>Skrýt podrobný pohled</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2120,66 +3841,84 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<translation>Minimalizovat okno aplikace do oznamovací oblasti systémového panelu</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>PÅ™i spouÅ¡tÄ›ní aplikace naÄíst minule otevÅ™ené databáze</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>V případÄ› úpravy zvenÄí, automaticky opÄ›tovnÄ› naÄíst databázi</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Namísto ukonÄení aplikace skrýt její okno do oznamovací oblasti systémového panelu</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Spouštět aplikaci s minimalizovaným oknem</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Základní nastavení</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Pamatovat si minule použité soubory s klíÄi a zabezpeÄovací klíÄenky</translation>
+ <source>Dark system tray icon</source>
+ <translation>Tmavá ikona v oznamovací oblasti systémového panelu</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>NeoznaÄovat databázi jako upravenou pÅ™i zmÄ›nách, nepostihujících údaje (napÅ™. rozšíření skupin)</translation>
+ <source>Language</source>
+ <translation>Jazyk</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automatické vyplňování</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Použít titulek záznamu a URL adresu pro hledání shod s okny pro globální automatické vyplňování</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Použít titulek položky pro hledání shody s okny pro všeobecné automatické vyplňování</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Použít URL adresu položky pro hledání shody s okny pro všeobecné automatické vyplňování</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Vždy se zeptat před provedením automatického vyplnění</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Klávesová zkratka pro všeobecné automatické vyplňování</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Prodleva automatického vyplnění</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Spouštět pouze jedinou instanci KeePassXC</translation>
+ <source>Startup</source>
+ <translation>Spouštění</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Správa souboru</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Ukládat databázové soubory bezpeÄnÄ› (může být nesluÄitelné s Dropbox, atd.)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Před uložením zazálohovat databázový soubor</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Správa záznamu</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Obecné</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Časové limity</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Vymazat obsah schránky po uplynutí</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek.</translation>
</message>
<message>
@@ -2187,8 +3926,12 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<translation>Uzamknout databázi pÅ™i neÄinnosti delší než</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Hesla vždy viditelná (nezakrývat hvÄ›zdiÄkami)</translation>
+ <source>Convenience</source>
+ <translation>Pohodlí</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Zamknout databáze když je zamÄena relace nebo je zavÅ™eno víko notebooku</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2199,16 +3942,16 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<translation>Pokud je viditelné, nevyžadovat zopakování zadání hesla</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Časové limity</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Hesla vždy viditelná (nezakrývat hvÄ›zdiÄkami)</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Pohodlí</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Skrýt hesla v náhledovém panelu</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Zamknout databáze když je zamÄena relace nebo je zavÅ™eno víko notebooku</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Skrývat ve výchozím stavu poznámky k položkám</translation>
</message>
<message>
<source>Privacy</source>
@@ -2218,6 +3961,10 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Použít Google jako náhradní zdroj pro stahování ikon webů</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Po provedení automatického vyplnÄ›ní opÄ›t zamknout dříve uzamÄenou databázi.</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2230,6 +3977,14 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<translation>KlíÄ:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Výchozí nastavení RFC 6238 tokenu</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Nastavení proudového tokenu</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Použít vlastní nastavení</translation>
</message>
@@ -2255,6 +4010,7 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek.</translation>
</message>
</context>
@@ -2291,10 +4047,6 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Vítejte v KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>ZaÄnÄ›te uchovávat svá hesla bezpeÄnÄ› v KeePassXC databázi</translation>
</message>
@@ -2318,92 +4070,48 @@ neopakující se název pro identifikaci a potvrÄte ho.</translation>
<source>Recent databases</source>
<translation>Nedávno otevřené databáze</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Vítejte v KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>umístění vlastního souboru s nastaveními</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>soubor s klíÄem k databázi</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC – aplikace pro správu hesel, fungující na vícero operaÄních systémech</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>naÄíst heslo k databázi ze standardního vstupu</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>soubory s databázemi hesel k otevření (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Zkopírovat heslo do schránky</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Odebrat položku z databáze.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Umístění databáze.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Použít grafickou výzvu pro odemykání databáze.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Popis umístění položky k odebrání.</translation>
</message>
<message>
- <source>Name of the entry to clip.</source>
- <translation>Název záznamu který oříznout.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Vytáhnout a vypsat obsah databáze.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Umístění extrahované databáze.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Název příkazu ke spuštění.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Vypsat položky databáze.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Umístění seznamu skupin. Výchozí je /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Vypsat univerzálnÄ› jedineÄné identifikátory záznamů a skupin.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>SlouÄit dvÄ› databáze.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC – aplikace pro správu hesel, fungující na vícero operaÄních systémech</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>UmístÄ›ní slouÄené databáze.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>soubory s databázemi hesel k otevření (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Umístění výchozí databáze.</translation>
+ <source>path to a custom config file</source>
+ <translation>umístění vlastního souboru s nastaveními</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Pro oba databázové soubory použít shodné heslo.</translation>
+ <source>key file of the database</source>
+ <translation>soubor s klíÄem k databázi</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Zobrazit heslo.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>naÄíst heslo k databázi ze standardního vstupu</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Název položky k zobrazení.</translation>
+ <source>Parent window handle</source>
+ <translation>Obecný identifikátor (handle) nadřazeného okna</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_da.ts b/share/translations/keepassx_da.ts
index 563f6adb3..decc99069 100644
--- a/share/translations/keepassx_da.ts
+++ b/share/translations/keepassx_da.ts
@@ -10,14 +10,30 @@
<translation>Om</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Rapportér fejl på: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC distribueres under betingelserne i GNU General Public License (GPL) version 2 eller (efter eget valg) version 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Bidragsydere</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Se bidrag på GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Fejlsøgningsinformation</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Inkludér følgende information når du indrapporterer en fejl:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Kopier til udklipsholder</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revision: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribution: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Biblioteker:</translation>
</message>
@@ -48,33 +68,27 @@ Kerne: %3 %4</translation>
<translation>Aktiverede udvidelser:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Rapportér fejl på: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC distribueres under betingelserne i GNU General Public License (GPL) version 2 eller (efter eget valg) version 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Projektet vedligeholdes af:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Se bidrag på GitHub&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Inkludér følgende information når du indrapporterer en fejl:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Særlig tak fra KeePassXC holdet går til debfx for at udvikle den oprindelige KeePassX.</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation type="unfinished"/>
+ <source>Build Type: %1
+</source>
+ <translation>Opret type:%1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Bekræft Adgang</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Husk dette valg</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 har forespurgt adgang til kodeord tilhørende disse element(er).
Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP Bekræft Adgang</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Slå SSH Agenten til (kræver genstart)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Auto-Indsæt - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Indsæt</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Syntaksen af dit Auto-Type udtryk er forkert!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Denne Auto-Indsæt sætning indeholder en meget lang pause. Er du sikker på at du vil fortsætte? </translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Denne Auto-Indsæt kommando indeholder meget langsomme tastetryk. Er du sikker på at du vil fortsætte? </translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Denne Auto-Indsæt kommando indeholder argumenter, som er gentaget ofte. Er du sikker på at du vil fortsætte? </translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Gruppe</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titel</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Brugernavn</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekvens</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Indsæt - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Vælg post til Auto-Indsæt:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser Bekræft Adgang</translation>
+ </message>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Auto-Indsæt - KeePassXC</translation>
+ <source>Remember this decision</source>
+ <translation>Husk dette valg</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Tillad</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Afvis</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 har forespurgt adgang til kodeord tilhørende disse element(er).
+Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Dette er nødvendigt for at tilgå din database med KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Slå KeepassXC browser integration til</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Generelt</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Slå integration til for disse browsere:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Vis en notifikation når legitimationsoplysninger forespørges</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Anmod om at låse databasen op hvis den er låst</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Kun poster med samme skema (http://, https://, ftp://, ...) bliver returneret.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Match URL skemaer</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Returner kun det bedste match for en specifik URL i stedet for alle matches for hele domænet.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Returnér kun de bedst matchende poster</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sorter matchende poster efter &amp;navn</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sorter matchende poster efter &amp;brugernavn</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Fjern tilslutning til alle browsere</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Fjern alle tilladelser fra hukommelse</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avanceret</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Spørg aldrig om lov for hente leigitamationsoplysninger</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Kun den valgte database er nødt til at være forbundet med en klient.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>At automatisk skabe eller opdatere tekst-felter er ikke understøttet.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Vis avancerede tekst felter som begynder med &quot;KPH:&quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Opdaterer KeePassXC eller keepassxc-proxy binære sti automatisk til beskedscript ved opstart</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Opdater besked manifest dokumenter ved opstart</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Understøt en proxy applikation mellem KeePassXC og browser-udvidelse.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Understøt en proxy applikation mellem KeePassXC og browser-udvidelse.</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Brug en brugerdefineret proxy lokation hvis du har installeret en proxy manuelt.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Vælg en brugerdefineret proxy lokation</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Gennemse...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Advarsel:&lt;/b&gt;De følgende instillinger kan være farlige!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Eksekverbare Filer (*.exe);;Alle Filer (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Eksekverbare Filer (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Vælg en brugerdefineret proxy lokation</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Ny nøgleassocieringsanmodelse</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Du har modtaget en associeringsanmodelse for the ovenstående nøgle.
+
+Hvis du gerne vil give den adgang til din KeePassXC database,
+så giv den et unikt navn for at kunne identificere den og accepter den.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Gem og tillad adgang</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Overskriv eksisterende nøgle?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>En delt krypteringsnøgle med navnet &quot;%1&quot; eksisterer allerede.
+Vil du overskrive den?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Opdater post</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Vil du opdatere oplysningerne i %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database låst!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Den aktive database er låst!
+Lås den valgte database op eller vælg en anden som er åbnet.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Indstilling er ikke tilgængelig!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Ingen nøgler fundet</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Ingen delte krypertingsnøgler fundet i KeePassXC Indstillinger.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Fjernede nøgler fra database</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Fjerner gemte tilladelser...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Afbryd</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Fjernede tilladelser</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Ingen nøgler fundet</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Den aktive database indholder ikke en post med tilladelser</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<translation>Gentag kodeord</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Key fil</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Gennemse</translation>
</message>
@@ -157,6 +502,14 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<translation>Opret</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Genopfrisk</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Nøglefiler</translation>
</message>
@@ -177,6 +530,10 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<translation>Vælg en nøglefil</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Tomt kodeord</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Vil du virkelig bruge en tom streng som kodeord?</translation>
</message>
@@ -191,20 +548,17 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Genopfrisk</translation>
+ <source>Legacy key file format</source>
+ <translation>Forældet nøglefilformat</translation>
</message>
<message>
- <source>Empty password</source>
- <translation>Tomt kodeord</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Du benytter et forældet nøglefilformat, som muligvis ikke vil blive understøttet i fremtiden.
+
+Overvej at generere en ny nøglefil.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +572,10 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<translation>Kloningsindstillinger</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Tilføj &apos; - Clone&apos; til titel</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Udskift brugernavn og kodeord med referencer</translation>
</message>
@@ -225,10 +583,6 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<source>Copy history</source>
<translation>Kopier historik</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Tilføj &apos; - Clone&apos; til titel</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -325,10 +679,6 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importér CSV-fil</translation>
- </message>
- <message>
<source>Error</source>
<translation>Fejl</translation>
</message>
@@ -339,17 +689,17 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>byte,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n byte(s),</numerusform><numerusform>%n byte(s),</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>rækker,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n række(r),</numerusform><numerusform>%n række(r),</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>kolonner</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n kolonne(r)</numerusform><numerusform>%n kolonne(r)</numerusform></translation>
</message>
</context>
<context>
@@ -371,6 +721,14 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<translation>Gennemse</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Genopfrisk</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Kan ikke åbne databasen.</translation>
</message>
@@ -379,6 +737,23 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<translation>Kan ikke åbne nøglefil</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Forældet nøglefilformat</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Du benytter et forældet nøglefilformat, som muligvis ikke vil blive understøttet i fremtiden.
+
+Overvej at generere en ny nøglefil.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Vis ikke denne advarsel igen</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Alle filer</translation>
</message>
@@ -390,14 +765,6 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<source>Select key file</source>
<translation>Vælg nøglefil</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Genopfrisk</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -414,14 +781,14 @@ Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
<translation>Kan ikke åbne nøglefil</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Databasen åbnede fint. Intet at gøre.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Kan ikke åbne databasen.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Databasen åbnede fint. Intet at gøre.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Succes</translation>
</message>
@@ -439,28 +806,120 @@ Du kan gemme den nu.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Databasenavn:</translation>
+ <source>General</source>
+ <translation>Generelt</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Beskrivelse af database:</translation>
+ <source>Encryption</source>
+ <translation>Kryptering</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Antallet af runder er for højt</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Du benytter et meget højt antal runder af nøgletransformationer med Argon2.
+
+Hvis du vil beholde antallet, så kan din database tage timer eller dage (eller endnu længere) at åbne!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Forstået, beholder nummer</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Afbryd</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Antallet af runder er for lavt</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Krypteringsalgoritme</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (standard)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Transform rounds:</source>
<translation>Transformationsrunder:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Standard brugernavn:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation>MB</translation>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Databasenavn:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Beskrivelse af database:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Standard brugernavn:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Benchmark</translation>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Max. history items:</source>
@@ -471,26 +930,27 @@ Du kan gemme den nu.</translation>
<translation>Maks. historikstørrelse:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Brug papirkurv</translation>
+ <source> MiB</source>
+ <translation>MB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (standard)</translation>
+ <source>Use recycle bin</source>
+ <translation>Brug papirkurv</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritme:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Rod</translation>
</message>
<message>
@@ -510,22 +970,48 @@ Du kan gemme den nu.</translation>
<translation>Filen blev ikke fundet!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Ã…ben KeePass 1 database</translation>
+ <source>Unable to open the database.</source>
+ <translation>Kan ikke åbne databasen.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 database</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Fil åbnet i skrivebeskyttet tilstand</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Ã…bn CSV-fil</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV-fil</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Alle filer (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Flet database</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Ã…ben KeePass 1 database</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 database</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Luk?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; er i redigeringstilstand.
+Kassér ændringer og luk alligevel?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Gem ændringer?</translation>
</message>
@@ -540,10 +1026,22 @@ Gem disse ændringer?</translation>
<translation>Kan ikke skrive til databasen.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Kodeord</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Gem database som</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Eksportér databasen til CSV-fil</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Kan ikke skrive til CSV-fil.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Ny database</translation>
</message>
@@ -562,12 +1060,6 @@ Please press cancel to finish your changes or discard them.</source>
Tryk på Afbryd for at afslutte dine ændringer eller kassere dem.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Denne database er aldrig blevet gemt.
-Du kan gemme databasen eller stop låsning.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -576,69 +1068,22 @@ Vil du gemme databasen før låsning?
Ellers mister du dine ændringer.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; er i redigeringstilstand.
-Kassér ændringer og luk alligevel?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Eksportér databasen til CSV-fil</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV-fil</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Kan ikke skrive til CSV-fil.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Kan ikke åbne databasen.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Flet database</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Databasen som du prøver at gemme er låst af en anden instans af KeePassXC.
-Ønsker du alligevel at gemme den?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Kodeord</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Database er allerede åben</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Databasen som du prøver at gemme er låst af en anden instans af KeePassXC.
-
-Ønsker du alligevel at åbne den?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Ã…bn skrivebeskyttet</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Fil åbnet i skrivebeskyttet tilstand</translation>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Open CSV file</source>
- <translation>Ã…bn CSV-fil</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Søger...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Skift hovednøgle</translation>
</message>
@@ -659,6 +1104,14 @@ Do you want to open it anyway?</source>
<translation>Vil du virkelig slette %1 poster permanent?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Flyt post til papirkurven?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Flyt poster til skraldespanden?</translation>
</message>
@@ -667,6 +1120,18 @@ Do you want to open it anyway?</source>
<translation><numerusform>Ønsker du virkelig at flytte %n post over i papirkurven?</numerusform><numerusform>Ønsker du virkelig at flytte %n poster over i papirkurven?</numerusform></translation>
</message>
<message>
+ <source>Execute command?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Delete group?</source>
<translation>Slet gruppe?</translation>
</message>
@@ -679,71 +1144,131 @@ Do you want to open it anyway?</source>
<translation>Kan ikke beregne hovednøgle</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Flyt post til papirkurven?</translation>
+ <source>No current database.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <source>No source database, nothing to do.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Searching...</source>
- <translation>Søger...</translation>
+ <source>Search Results (%1)</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>No current database.</source>
+ <source>No Results</source>
<translation type="unfinished"/>
</message>
<message>
- <source>No source database, nothing to do.</source>
+ <source>File has changed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Search Results (%1)</source>
+ <source>The database file has changed. Do you want to load the changes?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>No Results</source>
+ <source>Merge Request</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Execute command?</source>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Remember my choice</source>
+ <source>Empty recycle bin?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Autoreload Request</source>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>DetailsWidget</name>
<message>
- <source>The database file has changed. Do you want to load the changes?</source>
+ <source>Generate TOTP Token</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Merge Request</source>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Generelt</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Kodeord</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
+ <source>Username</source>
+ <translation>Brugernavn</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <source>Searching</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Empty recycle bin?</source>
+ <source>Attributes</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <source>Attachments</source>
+ <translation>Vedhæftninger</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Noter</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Vindue</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekvens</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Søg</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enabled</source>
<translation type="unfinished"/>
</message>
</context>
@@ -774,6 +1299,30 @@ Do you want to open it anyway?</source>
<translation>Historik</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>Ikke aktuel</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Indtastningshistorik</translation>
</message>
@@ -794,21 +1343,20 @@ Do you want to open it anyway?</source>
<translation>Ny attribut</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Vælg fil</translation>
+ <source>Confirm Remove</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Filen kan ikke åbnes</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Save attachment</source>
- <translation>Gem vedhæftning</translation>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Kan ikke gemme vedhæftningen:</translation>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Tomorrow</source>
@@ -827,19 +1375,15 @@ Do you want to open it anyway?</source>
<translation>Et år</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
+ <source>Apply generated password?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
+ <source>Do you want to apply the generated password to this entry?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
+ <source>Entry updated successfully.</source>
<translation type="unfinished"/>
</message>
</context>
@@ -858,27 +1402,27 @@ Do you want to open it anyway?</source>
<translation>Fjern</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Vedhæftninger</translation>
+ <source>Edit Name</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Save</source>
- <translation>Gem</translation>
+ <source>Protect</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Open</source>
- <translation>Ã…ben</translation>
+ <source>Reveal</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Edit Name</source>
- <translation type="unfinished"/>
+ <source>Attachments</source>
+ <translation>Vedhæftninger</translation>
</message>
<message>
- <source>Protect</source>
+ <source>Foreground Color:</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Reveal</source>
+ <source>Background Color:</source>
<translation type="unfinished"/>
</message>
</context>
@@ -889,18 +1433,6 @@ Do you want to open it anyway?</source>
<translation>Aktivér Auto-Indsæt for denne post</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
- </message>
- <message>
- <source>-</source>
- <translation>-</translation>
- </message>
- <message>
- <source>Window title:</source>
- <translation>Vinduestitel:</translation>
- </message>
- <message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
<translation type="unfinished"/>
</message>
@@ -909,15 +1441,23 @@ Do you want to open it anyway?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use default se&amp;quence</source>
+ <source>Window Associations</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation type="unfinished"/>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Vinduestitel:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
<translation type="unfinished"/>
</message>
</context>
@@ -943,12 +1483,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Titel:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Brugernavn:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -959,20 +1495,104 @@ Do you want to open it anyway?</source>
<translation>Gentag:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Titel:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Udløber</translation>
+ <source>Notes</source>
+ <translation>Noter</translation>
</message>
<message>
<source>Presets</source>
<translation>Predefinerede</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Noter:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Brugernavn:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Udløber</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Kommentar</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Dekrypter</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>Ikke aktuel</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Kopier til udklipsholder</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Privat nøgle</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Ekstern fil</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Gennemse...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1044,24 +1664,20 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
- <source>Add custom icon</source>
- <translation>Tilføj brugerbestemt ikon</translation>
- </message>
- <message>
- <source>Delete custom icon</source>
- <translation>Slet brugerbestemt ikon</translation>
+ <source>&amp;Use default icon</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Images</source>
- <translation>Billeder</translation>
+ <source>Use custo&amp;m icon</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Alle filer</translation>
+ <source>Add custom icon</source>
+ <translation>Tilføj brugerbestemt ikon</translation>
</message>
<message>
- <source>Select Image</source>
- <translation>Vælg Billede</translation>
+ <source>Delete custom icon</source>
+ <translation>Slet brugerbestemt ikon</translation>
</message>
<message>
<source>Download favicon</source>
@@ -1072,31 +1688,35 @@ Do you want to open it anyway?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Can&apos;t read icon</source>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation type="unfinished"/>
+ <source>Images</source>
+ <translation>Billeder</translation>
</message>
<message>
- <source>Use custo&amp;m icon</source>
- <translation type="unfinished"/>
+ <source>All files</source>
+ <translation>Alle filer</translation>
</message>
<message>
- <source>Confirm Delete</source>
+ <source>Select Image</source>
+ <translation>Vælg Billede</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
<translation type="unfinished"/>
</message>
<message>
- <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <source>Custom icon already exists</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <source>Confirm Delete</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Custom icon already exists</source>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1118,11 +1738,120 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Fjern</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Navn</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Tilføj</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Fjern</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Ã…ben</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Gem</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1155,6 +1884,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Group</source>
<translation>Gruppe</translation>
</message>
@@ -1171,8 +1905,66 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Kodeord</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Noter</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Udløber</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Oprettet</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Ændret</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Tilgået</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Vedhæftninger</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Tilpas visning</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Skjul brugernavne</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Skjul kodeord</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Tilpas til vindue</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Tilpas til indhold</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Nulstil til standard-indstillinger</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1184,6 +1976,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Kan ikke gemme fil!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1199,7 +2002,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>A-Z</source>
- <translation type="unfinished"/>
+ <translation>A-Z</translation>
</message>
<message>
<source>Lower Case Letters</source>
@@ -1207,7 +2010,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>a-z</source>
- <translation type="unfinished"/>
+ <translation>a-z</translation>
</message>
<message>
<source>Numbers</source>
@@ -1215,7 +2018,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>0-9</source>
- <translation type="unfinished"/>
+ <translation>0-9</translation>
</message>
<message>
<source>Special Characters</source>
@@ -1223,7 +2026,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>/*_&amp; ...</source>
- <translation type="unfinished"/>
+ <translation>/*_&amp; ...</translation>
</message>
<message>
<source>Exclude look-alike characters</source>
@@ -1233,17 +2036,376 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>Vær sikker på at dit kodeord indeholder tegn fra alle grupper</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Udvidet ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
<message>
<source>&amp;Close</source>
- <translation type="unfinished"/>
+ <translation>&amp;Luk</translation>
</message>
<message>
<source>Close message</source>
+ <translation>Luk besked</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kan ikke beregne hovednøgle</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Forkert nøgle eller databasefil er korrupt.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kan ikke beregne hovednøgle</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>Database headers mangler</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kan ikke beregne hovednøgle</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Invalid størrelse for gruppefelt</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Header SHA256 stemmer ikke</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Forkert nøgle eller database-filen er korrupt. (HMAC mismatch)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Invalid størrelse for gruppefelt</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Invalid størrelse i headerfelt</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Invalid størrelse i headerfelt</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Kan ikke åbne buffer for KDF parametre i header</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Ikke understøtet nøgleafledningsfunktion (KDF) eller invalide parametre</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Invalid størrelse i indre headerfelt id</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Invalid størrelse i headerfelt</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Invalid symmetrisk ciffer algoritme</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kan ikke beregne hovednøgle</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Ikke understøttet ciffer</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Invalid længde af komprimeringsflag</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Ikke understøttet komprimeringsalgortime</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Invalidt antal af transformeringsrunder</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Invalid størrelse af start bytes</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Dette er ikke en KeePass database.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Den valgte fil er en gammel KeePass 1 databasefil (.kdb).
+
+Du kan importere den ved at klikke på Database &gt; &apos;Importér KeePass 1 database...&apos;.
+Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den importerede database med den gamle KeePassX 0.4 version.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Ikke understøttet KeePass 2 database version.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Ingen rodgruppe</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Mangler icon uuid eller data</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Flere gruppe-elementer</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Tomt gruppe-uuid</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Invalid værdi for Slå-Søgning-Til</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Intet gruppe-uuid fundet</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Tomt Slet-Objekt uuid</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Mangler Slet-Objekt uuid eller tid</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Tomt post-uuid</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Intet post-uuid fundet</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Historiske elementer med forskelligt uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Binær nøgle eller værdi for post mangler</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Auto-Indsæt associerings-vindue eller -sekvens mangler</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Invalid boolsk værdi</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Invalid dato tid værdi</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Invalid farveværdi</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Invalid tal-værdi</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Invalid uuid værdi</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Kan ikke dekomprimere binær data</translation>
+ </message>
</context>
<context>
<name>KeePass1OpenWidget</name>
@@ -1275,6 +2437,35 @@ Do you want to open it anyway?</source>
<translation>Ikke understøttet KeePass database version</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Invalidt antal grupper</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Invalidt antal poster</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Invalidt antal transformationsfunder</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Kan ikke konstruere gruppetræ</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Rod</translation>
</message>
@@ -1286,327 +2477,501 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>Forkert nøgle eller databasefil er korrupt.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Dette er ikke en KeePass database.</translation>
+ <source>Key transformation failed</source>
+ <translation>Nøgletransformering fejlede</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>KeePass database version ikke understøttet.</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Forkert nøgle eller databasefil er korrupt.</translation>
+ <source>Invalid group field size</source>
+ <translation>Invalid størrelse for gruppefelt</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Kan ikke beregne hovednøgle</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <source>Incorrect group creation time field size</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Kan ikke beregne hovednøgle</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Fatal fejl ved test af kryptografiske funktioner.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation type="unfinished"/>
+ <source>Incorrect group icon field size</source>
+ <translation>Invalid størrelse for gruppefelt</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group level field size</source>
+ <translation>Invalid størrelse for gruppefelt</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
+ <source>Invalid group field type</source>
+ <translation>Invalid type for gruppefelt</translation>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation>Mangler gruppe id eller niveau</translation>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation>Manglende type nummer for gruppefelt</translation>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation>Invalid størrelse for gruppefelt</translation>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Postens data længde passer ikke</translation>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation>Invalid uuid værdi</translation>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Invalid entry icon field size</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Ã…ben database</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Databaseindstillinger</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Kopiér brugernavn til udklipsholder</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Kopiér kodeord til udklipsholder</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Settings</source>
- <translation>Indstillinger</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Vis værktøjslinie</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>skrivebeskyttet</translation>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>En anden instans af KeePassXC kører allerede.</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Skift vindue</translation>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Fatal fejl ved test af kryptografiske funktioner.</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 Database</translation>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Fejl</translation>
</message>
+</context>
+<context>
+ <name>MainWindow</name>
<message>
- <source>All files</source>
- <translation>Alle filer</translation>
+ <source>&amp;Database</source>
+ <translation>&amp;Database</translation>
</message>
<message>
- <source>Save repaired database</source>
- <translation>Gem repareret database</translation>
+ <source>&amp;Recent databases</source>
+ <translation>&amp;Seneste databaser</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Skrivning til database fejler.</translation>
+ <source>Import</source>
+ <translation>Importér</translation>
</message>
<message>
- <source>&amp;Recent databases</source>
- <translation type="unfinished"/>
+ <source>&amp;Help</source>
+ <translation>%Hjælp</translation>
</message>
<message>
<source>E&amp;ntries</source>
- <translation type="unfinished"/>
+ <translation>Poster</translation>
</message>
<message>
<source>Copy att&amp;ribute to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopiér att&amp;ribute til udklipsholder</translation>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation>Tidsbaseret engangskodeord</translation>
</message>
<message>
<source>&amp;Groups</source>
- <translation type="unfinished"/>
+ <translation>&amp;Grupper</translation>
</message>
<message>
- <source>&amp;View</source>
+ <source>&amp;Tools</source>
<translation type="unfinished"/>
</message>
<message>
<source>&amp;Quit</source>
- <translation type="unfinished"/>
+ <translation>&amp;Afslut</translation>
</message>
<message>
<source>&amp;About</source>
- <translation type="unfinished"/>
+ <translation>&amp;O</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Ã…ben database..</translation>
</message>
<message>
<source>&amp;Save database</source>
- <translation type="unfinished"/>
+ <translation>&amp;Gem database</translation>
</message>
<message>
<source>&amp;Close database</source>
- <translation type="unfinished"/>
+ <translation>&amp;Luk database</translation>
</message>
<message>
<source>&amp;New database</source>
- <translation type="unfinished"/>
+ <translation>&amp;Ny database</translation>
</message>
<message>
<source>Merge from KeePassX database</source>
- <translation type="unfinished"/>
+ <translation>Flet og kombiner fra KeePassX database</translation>
</message>
<message>
<source>&amp;Add new entry</source>
- <translation type="unfinished"/>
+ <translation>&amp;Tilføj ny post</translation>
</message>
<message>
<source>&amp;View/Edit entry</source>
- <translation type="unfinished"/>
+ <translation>&amp;Vis/Rediger post</translation>
</message>
<message>
<source>&amp;Delete entry</source>
- <translation type="unfinished"/>
+ <translation>&amp;Slet post</translation>
</message>
<message>
<source>&amp;Add new group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Tilføj ny gruppe</translation>
</message>
<message>
<source>&amp;Edit group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Rediger gruppe</translation>
</message>
<message>
<source>&amp;Delete group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Slet gruppe</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation type="unfinished"/>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Gem database som</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation type="unfinished"/>
+ <source>Change &amp;master key...</source>
+ <translation>Skift &amp;hovednøgle...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation type="unfinished"/>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Databaseindstillinger</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation type="unfinished"/>
+ <source>Database settings</source>
+ <translation>Databaseindstillinger</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation type="unfinished"/>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Klon post</translation>
</message>
<message>
<source>&amp;Find</source>
- <translation type="unfinished"/>
+ <translation>&amp;Find</translation>
</message>
<message>
<source>Copy &amp;username</source>
- <translation type="unfinished"/>
+ <translation>Kopier &amp;brugernavn</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>Kopiér brugernavn til udklipsholder</translation>
</message>
<message>
<source>Cop&amp;y password</source>
- <translation type="unfinished"/>
+ <translation>Kopier kodeord</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>Kopiér kodeord til udklipsholder</translation>
</message>
<message>
<source>&amp;Settings</source>
- <translation type="unfinished"/>
+ <translation>&amp;Indstillinger</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Kodeordsgenerator</translation>
</message>
<message>
<source>&amp;Perform Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>&amp;Udfør Auto-Indsæt</translation>
</message>
<message>
<source>&amp;Open URL</source>
- <translation type="unfinished"/>
+ <translation>&amp;Ã…bn URL</translation>
</message>
<message>
<source>&amp;Lock databases</source>
- <translation type="unfinished"/>
+ <translation>%LÃ¥s databaser</translation>
</message>
<message>
<source>&amp;Title</source>
- <translation type="unfinished"/>
+ <translation>&amp;Titel</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation>Kopier titel til udklipsholder</translation>
</message>
<message>
<source>&amp;URL</source>
- <translation type="unfinished"/>
+ <translation>&amp;URL</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation>&amp;Kopier URL til udklipsholder</translation>
</message>
<message>
<source>&amp;Notes</source>
- <translation type="unfinished"/>
+ <translation>&amp;Noter</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation type="unfinished"/>
+ <source>Copy notes to clipboard</source>
+ <translation>Kopier noter til udklipsholder</translation>
</message>
<message>
- <source>Clear history</source>
- <translation type="unfinished"/>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Eksporter til CSV-fil...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation type="unfinished"/>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importér KeePass 1 database...</translation>
</message>
<message>
- <source>Import</source>
- <translation type="unfinished"/>
+ <source>Import CSV file...</source>
+ <translation>Importér CSV-fil...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation type="unfinished"/>
+ <source>Re&amp;pair database...</source>
+ <translation>Reparer database</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation type="unfinished"/>
+ <source>Show TOTP</source>
+ <translation>Vis TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Indstil TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Kopiér &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Tøm skraldespand</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Ryd historik</translation>
</message>
<message>
<source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <translation>Adgangsfejl for konfigurationsfil %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Det ser ud til at du bruger KeePassHTTP til browser-integration. Denne funktion er forældet og vil blive fjernet i fremtiden.&lt;br&gt;Skift til KeePassXC-Browser i stedet. Besøg vores &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;konverteringsguide&lt;/a&gt; for at få hjælp (advarsel %1 af 3). &lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation>skrivebeskyttet</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Indstillinger</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>Skift vindue</translation>
</message>
<message>
<source>Quit KeePassXC</source>
- <translation type="unfinished"/>
+ <translation>Luk KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Database</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Alle filer</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Ã…ben database</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Gem repareret database</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Skrivning til database fejler.</translation>
</message>
<message>
<source>Please touch the button on your YubiKey!</source>
- <translation type="unfinished"/>
+ <translation>Tryk på knappen på din YubiKey!</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation type="unfinished"/>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>ADVARSEL: Du bruger en ustabil udgave af KeePassXC!
+Der er høj risiko for korruption, sørg for at have en backup af dine databaser.
+Denne version er ikke beregnet til at blive brugt i produktion.</translation>
</message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
<message>
- <source>&amp;Open database...</source>
- <translation type="unfinished"/>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Invalid nøglefil, forventede en OpenSSH nøgle</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation type="unfinished"/>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM grænse-mismatch</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation type="unfinished"/>
+ <source>Base64 decoding failed</source>
+ <translation>Base64 afkodning fejlede</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation type="unfinished"/>
+ <source>Key file way too small.</source>
+ <translation>Nøglefil er alt for lille.</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation type="unfinished"/>
+ <source>Key file magic header id invalid</source>
+ <translation>Nøglefil magic i header er invalid</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation type="unfinished"/>
+ <source>Found zero keys</source>
+ <translation>Fandt ingen nøgler</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation type="unfinished"/>
+ <source>Failed to read public key.</source>
+ <translation>Kunne ikke læse offentlig nøgle.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation type="unfinished"/>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Korrupt nøglefil, kan ikke læse privat nøgle</translation>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation>Der er ingen privat nøgle at dekryptere</translation>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Prøver at køre KDF uden ciffer</translation>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Kodefrase er nødvendig for at dekryptere denne nøgle </translation>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Nøgleafledning fejlede, er nøglefilen korrupt? </translation>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Dekryptering fejlede, forkert kodefrase? </translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Offentlig nøgle sluttede uventet under læsningen</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Privat nøgle sluttede uventet under læsningen</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Kan ikke skrive offentlig nøgle, da den er tom</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Offentlig nøgle sluttede uventet under skrivning</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Kan ikke skrive nøglen da den er tom</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Privat nøgle sluttede uventet under skrivnig</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Ikke-understøttet nøgletype: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Ukendt ciffer: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Ciffer IV er for kort til MD5 KDF</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Ukendt KDF: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Ukendt nøgletype: %1</translation>
</message>
</context>
<context>
<name>OptionDialog</name>
<message>
<source>Dialog</source>
- <translation type="unfinished"/>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation>Dette er nødvendigt for at tilgå din database med ChromeIPass eller PassIFox</translation>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Slå KeePassHTP server til</translation>
</message>
<message>
<source>General</source>
@@ -1614,15 +2979,48 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Sh&amp;ow a notification when credentials are requested</source>
- <translation type="unfinished"/>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Vis en notifikation når legitimationsoplysninger forespørges</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Returner kun det bedste match for en specifik URL i stedet for alle matches for hele domænet.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation>&amp;Returnér kun de bedst matchende poster</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Anmod om at låse databasen op hvis den er låst</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation>Kun poster med samme skema (http://, https://, ftp://, ...) bliver returneret.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation>&amp;Match URL skemaer</translation>
</message>
<message>
<source>Sort matching entries by &amp;username</source>
- <translation type="unfinished"/>
+ <translation>Sorter matchende poster efter &amp;brugernavn</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Sorter &amp;passende poster efter navn</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Fjern alle delte krypteringsnøgler i den aktive database</translation>
</message>
<message>
<source>Re&amp;move all stored permissions from entries in active database</source>
- <translation type="unfinished"/>
+ <translation>Fjern alle gemte tilladelser fra poster i den aktive database</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Kodeordsgenerator</translation>
</message>
<message>
<source>Advanced</source>
@@ -1630,216 +3028,428 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Always allow &amp;access to entries</source>
- <translation type="unfinished"/>
+ <translation>Tillad altid &amp;adgang til poster</translation>
</message>
<message>
<source>Always allow &amp;updating entries</source>
- <translation type="unfinished"/>
+ <translation>Tillad alltid &amp;optaterede poster</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Kun den valgte database er nødt til at være forbundet med en klient.</translation>
</message>
<message>
<source>Searc&amp;h in all opened databases for matching entries</source>
- <translation type="unfinished"/>
+ <translation>&amp;Returnér kun de bedst matchende poster</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>At automatisk skabe eller opdatere tekst-felter er ikke understøttet.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Vis avancerede tekst felter som begynder med &quot;KPH:&quot;</translation>
</message>
<message>
<source>HTTP Port:</source>
- <translation type="unfinished"/>
+ <translation>HTTP Port:</translation>
</message>
<message>
<source>Default port: 19455</source>
+ <translation>Standard port: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC vil lytte til dette port på 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Advarsel:&lt;/b&gt;De følgende instillinger kan være farlige!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Kan ikke forbinde via priviligerede porte</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Kan ikke forbinde til prioriterede port under 1024!
+Bruger standard port 19455.</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Kodeord:</translation>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>styrke</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropi:</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Kodeord</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Tegntyper</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>Store Bogstaver</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>Små Bogstaver</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>Numre</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>Specialtegn</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Udvidet ASCII</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>Udeluk lool-alike tegn</translation>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation>Vælg tegn fra alle grupper:</translation>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>&amp;Længde:</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>Nøgleord sætning/frase:</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation>Ordliste:</translation>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>Antal ord:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Ord separator</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>Opret</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Kopier</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Acceptér</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>Entropy: %1 bit</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation>Entropy: %1 bit</translation>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation>Kodeord kvalitet: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>DÃ¥rligt</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>Svagt</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>Godt</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>Udmærket</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation>Databasen er ikke åbnet</translation>
+ </message>
+ <message>
+ <source>Database hash not available</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
+ <source>Client public key not received</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <source>Cannot decrypt message</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
+ <source>Timeout or cannot connect to KeePassXC</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
+ <source>Action cancelled or denied</source>
<translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <source>KeePassXC association failed, try again</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
+ <source>Key change was not successful</source>
<translation type="unfinished"/>
</message>
<message>
- <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <source>Encryption key is not recognized</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Enable KeePassHTTP server</source>
+ <source>No saved databases found</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <source>Incorrect action</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return only best matching entries</source>
+ <source>Empty message received</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <source>No URL provided</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Match URL schemes</source>
+ <source>No logins found</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password Generator</source>
+ <source>Unknown error</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Only the selected database has to be connected with a client.</source>
+ <source>Add a new entry to a database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
+ <source>Path of the database.</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>PasswordGeneratorWidget</name>
<message>
- <source>Password:</source>
- <translation>Kodeord:</translation>
+ <source>Key file of the database.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Character Types</source>
- <translation>Tegntyper</translation>
+ <source>path</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Upper Case Letters</source>
- <translation>Store Bogstaver</translation>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Lower Case Letters</source>
- <translation>Små Bogstaver</translation>
+ <source>username</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Numbers</source>
- <translation>Numre</translation>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Special Characters</source>
- <translation>Specialtegn</translation>
+ <source>URL</source>
+ <translation>URL</translation>
</message>
<message>
- <source>Exclude look-alike characters</source>
- <translation>Udeluk lool-alike tegn</translation>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Accept</source>
- <translation>Acceptér</translation>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>%p%</source>
+ <source>Length for the generated password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>strength</source>
+ <source>length</source>
<translation type="unfinished"/>
</message>
<message>
- <source>entropy</source>
+ <source>Path of the entry to add.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Length:</source>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Pick characters from every group</source>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>Generate</source>
+ <source>Timeout in seconds before clearing the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Close</source>
+ <source>Edit an entry.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Apply</source>
+ <source>Title for the entry.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Entropy: %1 bit</source>
+ <source>title</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password Quality: %1</source>
+ <source>Path of the entry to edit.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Poor</source>
+ <source>Estimate the entropy of a password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Weak</source>
+ <source>Password for which to estimate the entropy.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Good</source>
+ <source>Perform advanced analysis on the password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Excellent</source>
+ <source>Extract and print the content of a database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password</source>
- <translation>Kodeord</translation>
+ <source>Path of the database to extract.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Extended ASCII</source>
+ <source>Insert password to unlock %1: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
+ <source>Failed to load key file %1 : %2</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
+ <source>
+
+Available commands:
+</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
+ <source>Name of the command to execute.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
+ <source>List database entries.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation type="unfinished"/>
@@ -1862,7 +3472,27 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1882,14 +3512,22 @@ Change them only if you know what you are doing.</source>
<translation>Kodeord</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Noter</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Oprettet</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation type="unfinished"/>
</message>
@@ -1905,6 +3543,55 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1943,7 +3630,7 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
+ <source>Search...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1955,7 +3642,7 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Search...</source>
+ <source>Case Sensitive</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1966,88 +3653,89 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Ny nøgleassocieringsanmodelse</translation>
</message>
<message>
- <source>Do you want to update the information in %1 - %2?</source>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Overskriv eksisterende nøgle?</translation>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Opdater post</translation>
</message>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Vil du opdatere oplysningerne i %1 - %2?</translation>
</message>
<message>
- <source>Removing stored permissions...</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database låst!</translation>
</message>
<message>
- <source>Abort</source>
- <translation type="unfinished"/>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Den aktive database er låst!
+Lås den valgte database op eller vælg en anden som er åbnet.</translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Fjernede nøgler fra database</translation>
</message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Ingen nøgler fundet</translation>
</message>
<message>
- <source>You have received an association request for the above key.
-If you would like to allow it access to your KeePassXC database
-give it a unique name to identify and accept it.</source>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: Overwrite existing key?</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Indstilling er ikke tilgængelig!</translation>
</message>
<message>
- <source>KeePassXC: Update Entry</source>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: Database locked!</source>
+ <source>Removing stored permissions...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: Removed keys from database</source>
- <translation type="unfinished"/>
+ <source>Abort</source>
+ <translation>Afbryd</translation>
</message>
<message>
- <source>KeePassXC: No keys found</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Fjernede tilladelser</translation>
</message>
- <message>
- <source>KeePassXC: Settings not available!</source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <source>KeePassXC: Removed permissions</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Ingen nøgler fundet</translation>
</message>
<message>
- <source>KeePassXC: No entry with permissions found!</source>
- <translation type="unfinished"/>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Den aktive database indholder ikke en post med tilladelser</translation>
</message>
</context>
<context>
@@ -2066,16 +3754,32 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <translation>Adgangsfejl for konfigurationsfil %1</translation>
</message>
</context>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Husk seneste databaser</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Gem automatisk ved afslutning</translation>
</message>
@@ -2084,20 +3788,28 @@ give it a unique name to identify and accept it.</source>
<translation>Gem automatisk ved ændringer</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimér ved kopiering til udklipsholder</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Brug gruppeikon ved oprettelse af post</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Global Auto-Indsæt genvej</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Language</source>
- <translation>Sprog</translation>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2108,66 +3820,84 @@ give it a unique name to identify and accept it.</source>
<translation>Skjul vindue i systembakken når det er minimeret</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
+ <source>Hide window to system tray instead of app exit</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically reload the database when modified externally</source>
+ <source>Dark system tray icon</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Hide window to system tray instead of app exit</source>
- <translation type="unfinished"/>
+ <source>Language</source>
+ <translation>Sprog</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
+ <source>Auto-Type</source>
+ <translation>Auto-Indsæt</translation>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Basic Settings</source>
+ <source>Use entry URL to match windows for global Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Remember last key files and security dongles</source>
+ <source>Always ask before performing Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Global Auto-Indsæt genvej</translation>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Auto-Type</source>
- <translation>Auto-Indsæt</translation>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
+ <source>Startup</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
+ <source>File Management</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Auto-Type delay</source>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
<translation type="unfinished"/>
</message>
<message>
- <source> ms</source>
+ <source>Backup database file before saving</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Entry Management</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>General</source>
+ <translation>Generelt</translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Ryd udklipsholder efter</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek</translation>
</message>
<message>
@@ -2175,8 +3905,12 @@ give it a unique name to identify and accept it.</source>
<translation>LÃ¥s databaserne efter inaktivitet i</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Vis kodeord i klartekst som standard</translation>
+ <source>Convenience</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2187,15 +3921,15 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Vis kodeord i klartekst som standard</translation>
</message>
<message>
- <source>Convenience</source>
+ <source>Hide passwords in the preview panel</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
+ <source>Hide entry notes by default</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2206,6 +3940,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2218,6 +3956,14 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation type="unfinished"/>
</message>
@@ -2243,6 +3989,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek</translation>
</message>
</context>
@@ -2258,7 +4005,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"/>
+ <translation>Kopier</translation>
</message>
<message>
<source>Expires in</source>
@@ -2279,10 +4026,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation type="unfinished"/>
</message>
@@ -2306,31 +4049,15 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>Seneste databaser</translation>
</message>
-</context>
-<context>
- <name>main</name>
- <message>
- <source>path to a custom config file</source>
- <translation>sti til brugerdefineret indstillingsfil</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>databasens nøglefil</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation type="unfinished"/>
- </message>
<message>
- <source>read password of the database from stdin</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
+ <source>Welcome to KeePassXC %1</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>main</name>
<message>
- <source>Copy a password to the clipboard</source>
+ <source>Remove an entry from the database.</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2338,59 +4065,31 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
+ <source>Path of the entry to remove.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>List database entries.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Merge two databases.</source>
+ <source>KeePassXC - cross-platform password manager</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Path of the database to merge into.</source>
+ <source>filenames of the password databases to open (*.kdbx)</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation type="unfinished"/>
+ <source>path to a custom config file</source>
+ <translation>sti til brugerdefineret indstillingsfil</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation type="unfinished"/>
+ <source>key file of the database</source>
+ <translation>databasens nøglefil</translation>
</message>
<message>
- <source>Show a password.</source>
+ <source>read password of the database from stdin</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Name of the entry to show.</source>
+ <source>Parent window handle</source>
<translation type="unfinished"/>
</message>
</context>
diff --git a/share/translations/keepassx_de.ts b/share/translations/keepassx_de.ts
index f3bd0e39f..dd0eff6df 100644
--- a/share/translations/keepassx_de.ts
+++ b/share/translations/keepassx_de.ts
@@ -10,14 +10,30 @@
<translation>Ãœber</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Melden Sie Bugs auf: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC wird unter den Bedingungen der GNU General Public License (GPL) Version 2 oder Version 3 (je nach Ihrer Auswahl) vertrieben.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Mitwirkende</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Mitwirkende auf GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Debug-Info</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Geben Sie folgende Informationen an, wenn Sie einen Bug melden:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>In Zwischenablage kopieren</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revision: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribution: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Bibliotheken:</translation>
</message>
@@ -48,33 +68,27 @@ Kernel: %3 %4</translation>
<translation>Aktivierte Erweiterungen:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Melden Sie Bugs auf: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC wird unter den Bedingungen der GNU General Public License (GPL) Version 2 oder Version 3 (je nach Ihrer Auswahl) vertrieben.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Projekt-Maintainer:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Mitwirkende auf GitHub&lt;/a&gt;</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Das KeePassXC-Team möchte ganz besonders debfx danken für die Entwicklung des ursprünglichen KeePassX.</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Geben Sie folgende Informationen an, wenn Sie einen Bug melden:</translation>
- </message>
- <message>
- <source>Distribution: %1</source>
- <translation>Distribution: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Build-Typ: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Zugriff bestätigen</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Diese Entscheidung merken</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 hat Zugriff auf Passwörter für folgende Element(e) angefordert.
Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP Zugriff bestätigen</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>SSH Agent aktivieren (Neustart erforderlich)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Auto-Type - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Die Syntax Ihres Auto-Type-Befehls ist inkorrekt!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Dieses Auto-Type-Kommando enthält eine sehr lange Verzögerung. Möchten Sie wirklich fortfahren?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Dieses Auto-Type-Kommando enthält sehr langsame Tastendrücke. Möchten Sie wirklich fortfahren?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Dieses Auto-Type-Kommando enthält Argumente, die sehr häufig wiederholt werden. Möchten Sie wirklich fortfahren?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Gruppe</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titel</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Benutzername</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequenz</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Wählen Sie einen Eintrag für Auto-Type:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Auto-Type - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser: Zugriff bestätigen</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Diese Entscheidung merken</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Erlauben</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Ablehnen</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 hat Zugriff auf Passwörter für folgende Einträge angefordert.
+Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Dies ist notwendig, um mit KeePassXC-Browser auf Ihre Datenbank zuzugreifen</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>KeePassXC-Browser-Integration aktivieren</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Allgemein</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Integration für diese Browser aktivieren:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Be&amp;nachrichtigung anzeigen, wenn Anmeldedaten angefragt werden.</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Verlange Entsperrung, wenn die Datenbank gesperrt ist.</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Nur Einträge mit dem gleichen Schema (http://, https://, …) werden zurückgeliefert.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>URL-Sche&amp;ma abgleichen (z.B. https://…)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Zeige nur die am besten passenden Einträge für eine URL anstatt aller Einträge der ganzen Domäne.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Nur am &amp;besten passende Anmeldedaten zurückliefern</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Passende Anmeldedaten nach &amp;Titel sortieren</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Passende Anmeldedaten nach &amp;Benutzernamen sortieren</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>Alle Browser &amp;abmelden</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Alle gemerkten Berechtigungen &amp;vergessen</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Fortgeschritten</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Niemals &amp;fragen, bevor auf Anmeldedaten zugegriffen wird</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Niemals fragen, bevor Anmeldedaten a&amp;ktualisiert werden.</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Nur die ausgewählte Datenbank muss mit dem Client verbunden sein.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Suc&amp;he in allen geöffneten Datenbanken nach passenden Anmeldedaten</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatisches Erstellen und Aktualisieren von erweiterten Attributen wird nicht unterstützt!</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Zeige auch erweiterte Attribute, welche mit &quot;KPH: &quot; beginnen</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Aktualisiert den KeePassXC- oder KeePassXC-Proxy-Pfad automatisch in den Native-Messaging-Skripts beim Start.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Native-Messaging-Manifeste beim Start aktualisieren</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Proxy-Anwendung zwischen KeePassXC und Browser-Erweiterung unterstützen</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Verwende eine &amp;Proxy-Anwendungen zwischen KeePassXC und Browser-Erweiterung</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Verwende benutzerdefinierten Proxy-Pfad, falls Proxy manuell installiert wurde.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Verwende &amp;benutzerdefinierten Proxy-Pfad</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Durchsuchen...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Warnung:&lt;/b&gt; Die folgenden Optionen können gefährlich sein!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Ausführbare Dateien (*.exe);;Alle Dateien (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Ausführbare Dateien (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Benutzerdefinierten Proxy-Pfad auswählen</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Sorry, aber KeePassXC-Browser wird derzeit für Snap-Releases nicht unterstützt.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Neue Schlüsselverbindungsanfrage</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Sie haben eine neue Verbindungsanfrage für den obigen Schlüssel.
+
+Wenn Sie Zugriff auf Ihre KeePassXC-Datenbank zulassen wollen,
+vergeben Sie bitte einen eindeutigen Namen und akzeptieren diese.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Speichern und Zugriff erlauben</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Bestehenden Schlüssel überschreiben?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Ein geteilter Schlüssel mit dem Namen „%1“ existiert bereits.
+Möchten Sie diesen überschreiben?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Eintrag aktualisiert</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Möchten Sie wirklich die Informationen in %1 - %2 aktualisieren?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Datenbank gesperrt!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Die aktive Datenbank ist gesperrt!
+Bitte entsperren Sie die ausgewählte Datenbank oder wählen Sie eine andere, die entsperrt ist.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Einstellung nicht verfügbar!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Die aktive Datenbank enthält keinen Einstellungseintrag.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Kein Schlüssel gefunden</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Kein geteilter Schlüssel in den KeePassXC-Einstellungen gefunden.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Schlüssel aus der Datenbank entfernt</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Es wurden erfolgreich %n Schlüssel aus den KeePassXC-Einstellungen entfernt.</numerusform><numerusform>Es wurden erfolgreich %n Schlüssel aus den KeePassXC-Einstellungen entfernt.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Entferne gespeicherte Berechtigungen...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Zugangsdaten entfernt</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Gespeicherte Berechtigungen wurden erfolgreich aus %n Eintrag entfernt.</numerusform><numerusform>Gespeicherte Berechtigungen wurden erfolgreich aus %n Einträgen entfernt.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Kein Eintrag mit Zugangsdaten gefunden!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>The aktive Datenbank enthält keinen Eintrag mit Zugangsdaten.</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Passwort wiederholen:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Schlüsseldatei</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Durchsuchen</translation>
</message>
@@ -157,6 +502,14 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Erstellen</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Cha&amp;llenge-Response</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Neu laden</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Schlüsseldateien</translation>
</message>
@@ -177,6 +530,10 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Schlüsseldatei auswählen</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Leeres Passwort</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Wollen Sie wirklich eine leere Zeichenkette als Passwort verwenden?</translation>
</message>
@@ -190,20 +547,17 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Festlegen von %1 als Schlüsseldatei nicht möglich: %2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Schlüsseldatei</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Cha&amp;llenge-Response</translation>
+ <source>Legacy key file format</source>
+ <translation>Veraltetes Schlüsseldatei-Format</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>Neu laden</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Leeres Passwort</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Sie verwenden ein veraltetes Schlüsseldatei-Format, welches in Zukunft evtl. nicht mehr unterstützt wird.
+
+Bitte denken Sie darüber nach, eine neue Schlüsseldatei zu generieren.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -217,6 +571,10 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Klon-Optionen</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>„ - Klon“ zum Titel hinzufügen</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Benutzernamen und Passwort mit Referencen ersetzen</translation>
</message>
@@ -224,10 +582,6 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<source>Copy history</source>
<translation>Verlauf kopieren</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>„ - Klon“ zum Titel hinzufügen</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -324,10 +678,6 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>CSV-Datei importieren</translation>
- </message>
- <message>
<source>Error</source>
<translation>Fehler</translation>
</message>
@@ -338,17 +688,17 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>Byte,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n Byte,</numerusform><numerusform>%n Byte,</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>Zeilen,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n Zeile,</numerusform><numerusform>%n Zeilen,</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>Spalten</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n Spalte</numerusform><numerusform>%n Spalten</numerusform></translation>
</message>
</context>
<context>
@@ -370,6 +720,14 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Durchsuchen</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Neu laden</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Challenge-Response</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Öffnen der Datenbank nicht möglich.</translation>
</message>
@@ -378,6 +736,23 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Schlüsseldatei kann nicht geöffnet werden</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Veraltetes Schlüsseldatei-Format</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Sie verwenden ein veraltetes Schlüsseldatei-Format, welches in Zukunft evtl. nicht mehr unterstützt wird.
+
+Bitte denken Sie darüber nach, eine neue Schlüsseldatei zu generieren.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Diese Warnungen nicht wieder anzeigen</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Alle Dateien</translation>
</message>
@@ -389,14 +764,6 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<source>Select key file</source>
<translation>Schlüsseldatei auswählen</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Neu laden</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Challenge-Response</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -413,14 +780,14 @@ Bitte wählen Sie, ob Sie den Zugriff erlauben möchten.</translation>
<translation>Schlüsseldatei kann nicht geöffnet werden</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Datenbank wurde ordnungsgemäß geöffnet. Es gibt nichts zu tun.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Öffnen der Datenbank nicht möglich.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Datenbank wurde ordnungsgemäß geöffnet. Es gibt nichts zu tun.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Erfolg</translation>
</message>
@@ -438,28 +805,122 @@ sie kann nun gespeichert werden.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Datenbankname:</translation>
+ <source>General</source>
+ <translation>Allgemein</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Datenbankbeschreibung:</translation>
+ <source>Encryption</source>
+ <translation>Verschlüsselung</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Anzahl Runden zu hoch</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Sie verwenden eine sehr hohe Rundenanzahl mit Argon2.
+
+Wenn Sie diese Anzahl beibehalten, könnte Ihre Datenbank Stunden oder Tage (oder noch länger) zum Öffnen benötigen.</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Verstanden, Anzahl beibehalten</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Anzahl Runden zu niedrig</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Sie verwenden eine sehr niedrige Rundenanzahl mit AES-KDF.
+
+Wenn Sie diese Anzahl beibehalten, könnte Ihre Datenbank zu einfach zu knacken sein!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF unverändert</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Konnte Schlüssel nicht mit den neuen KDF-Parametern transformieren; KDF unverändert.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform>Thread</numerusform><numerusform>Threads</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Verschlüsselungs-Algorithmus.</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (Standard)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Schlüssel-Ableitungsfunktion</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Verschlüsselungsdurchläufe:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Standardbenutzername:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>1-Sekunden-Verzögerung messen</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>Speicher-Verbrauch</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Parallelität:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Datenbank-Metadaten</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Datenbankname:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Datenbankbeschreibung:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Standardbenutzername:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Benchmark</translation>
+ <source>History Settings</source>
+ <translation>Verlaufseinstellungen</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -470,26 +931,27 @@ sie kann nun gespeichert werden.</translation>
<translation>Max. Verlaufsgröße:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Papierkorb verwenden</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (Standard)</translation>
+ <source>Use recycle bin</source>
+ <translation>Papierkorb verwenden</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation>Erweiterte Datenbankeinstellungen</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algorithmus:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>&amp;Kompression aktivieren (empfohlen)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Root</translation>
</message>
<message>
@@ -509,22 +971,48 @@ sie kann nun gespeichert werden.</translation>
<translation>Datei nicht gefunden!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>KeePass 1 Datenbank öffnen</translation>
+ <source>Unable to open the database.</source>
+ <translation>Öffnen der Datenbank ist nicht möglich.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 Datenbank</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Datei ist schreibgeschützt</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>CSV-Datei öffnen</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV-Datei</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Alle Dateien (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Datenbank zusammenführen</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>KeePass 1 Datenbank öffnen</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 Datenbank</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Schließen?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; wird bearbeitet.
+Änderungen verwerfen und trotzdem schließen?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Änderungen speichern?</translation>
</message>
@@ -539,10 +1027,22 @@ Save changes?</source>
<translation>Schreiben der Datenbank fehlgeschlagen.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Passwörter</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Datenbank speichern unter</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Datenbank als CSV-Datei exportieren.</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Die CSV Datei konnte nicht gespeichert werden.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Neue Datenbank</translation>
</message>
@@ -561,12 +1061,6 @@ Please press cancel to finish your changes or discard them.</source>
Wählen sie „Abbrechen“, um die Änderungen zu speichern oder sie zurückzunehmen.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Diese Datenbank wurde noch nicht gespeichert.
-Sie können sie speichern oder die Sperre freigeben.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -575,69 +1069,23 @@ Soll sie gespeichert werden bevor sie gesperrt wird?
Anderenfalls gehen Ihre Änderungen verloren.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; wird bearbeitet.
-Änderungen verwerfen und trotzdem schließen?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Datenbank als CSV-Datei exportieren.</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV-Datei</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Die CSV Datei konnte nicht gespeichert werden.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Öffnen der Datenbank ist nicht möglich.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Datenbank zusammenführen</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Die Datenbank, die gespeichert werden soll, wird von einer anderen KeePassXC-Instanz verwendet.
-Soll sie dennoch gespeichert werden? </translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Passwörter</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Datenbank bereits geöffnet</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Die Datenbank, die Sie versuchen, zu öffnen, wird bereits von einer anderen KeePassXC-Instanz verwendet.
-
-Möchten Sie diese dennoch öffnen?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Schreibgeschützt öffnen</translation>
+ <source>Disable safe saves?</source>
+ <translation>Sicheres Speichern deaktivieren?</translation>
</message>
<message>
- <source>File opened in read only mode.</source>
- <translation>Datei ist schreibgeschützt</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>CSV-Datei öffnen</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC konnte die Datenbank nach mehrmaligem Versuch nicht erfolgreich speichern. Dies wird möglicherweise durch Synchronisierungsdienste verursacht, die die Datei geöffnet halten.
+Sicheres Speichern deaktivieren und erneut versuchen?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Suche…</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Hauptschlüssel ändern</translation>
</message>
@@ -658,6 +1106,14 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Wollen Sie die Einträge &quot;%1&quot; wirklich löschen?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Eintrag in den Papierkorb verschieben?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Möchten Sie wirklich den Eintrag &quot;%1&quot; in den Papierkorb verschieben?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Einträge in den Papierkorb verschieben?</translation>
</message>
@@ -666,28 +1122,28 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation><numerusform>Wollen Sie wirklich %n Eintrag in den Papierkorb verschieben?</numerusform><numerusform>Wollen Sie wirklich %n Einträge in den Papierkorb verschieben?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Gruppe löschen?</translation>
+ <source>Execute command?</source>
+ <translation>Befehl ausführen?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Wollen Sie die Gruppe &quot;%1&quot; wirklich löschen?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Folgenden Befehl ausführen? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Berechnung des Hauptschlüssels gescheitert</translation>
+ <source>Remember my choice</source>
+ <translation>Meine Auswahl merken</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Eintrag in den Papierkorb verschieben?</translation>
+ <source>Delete group?</source>
+ <translation>Gruppe löschen?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Möchten Sie wirklich den Eintrag &quot;%1&quot; in den Papierkorb verschieben?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Wollen Sie die Gruppe &quot;%1&quot; wirklich löschen?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Suche…</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Berechnung des Hauptschlüssels gescheitert</translation>
</message>
<message>
<source>No current database.</source>
@@ -706,20 +1162,8 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Keine Ergebnisse</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Befehl ausführen?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Folgenden Befehl ausführen? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Meine Auswahl merken</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Automatisches Neuladen angefordert</translation>
+ <source>File has changed</source>
+ <translation>Datei hat sich geändert</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -730,8 +1174,10 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Zusammenführungsanfrage</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Die Datenbankdatei wurde geändert und Sie haben noch nicht gespeicherte Änderungen. Wollen Sie Ihre Änderungen zusammenführen?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Die Datenbank wurde verändert und Sie haben nicht gespeicherte Änderungen.
+Möchten Sie Ihre Änderungen zusammenführen?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -747,6 +1193,89 @@ Möchten Sie diese dennoch öffnen?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>TOTP-Token generieren</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Schließen</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Allgemein</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Passwort</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Ablaufdatum</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Benutzername</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Suche</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Attribute</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Anhänge</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notizen</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Fenster</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequenz</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Suche</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Löschen</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Niemals</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[GESCHÃœTZT]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Deaktiviert</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Aktiviert</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -773,6 +1302,30 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Verlauf</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH-Agent</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n. a.</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(verschlüsselt)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Privatschlüssel auswählen</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Datei zu groß, um ein Privatschlüssel zu sein</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Privatschlüsel konnte nicht geöffnet werden</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Eintragsverlauf</translation>
</message>
@@ -793,21 +1346,20 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Neue Eigenschaft</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Datei wählen</translation>
+ <source>Confirm Remove</source>
+ <translation>Entfernen bestätigen</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Öffnen der Datei nicht möglich</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Sind Sie sicher, dass Sie dieses Attribut entfernen möchten?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Anhang speichern</translation>
+ <source>[PROTECTED]</source>
+ <translation>[GESCHÃœTZT]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Speichern des Anhangs nicht möglich:</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Klicken zum Anzeigen oder Bearbeiten</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -826,20 +1378,16 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>1 Jahr</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Entfernen bestätigen</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Sind Sie sicher, dass Sie dieses Attribut entfernen möchten?</translation>
+ <source>Apply generated password?</source>
+ <translation>Erzeugtes Passwort anwenden?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[GESCHÜTZT] Klicken Sie „Zeigen“ zum Anzeigen oder Bearbeiten</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Möchten Sie das das erzeugte Passwort auf den Eintrag anwenden?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Sind Sie sicher, dass Sie diesen Anhang löschen wollen?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Eintrag erfolgreich aktualisiert.</translation>
</message>
</context>
<context>
@@ -857,18 +1405,6 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Entfernen</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Anhänge</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Speichern</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Offen</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Namen bearbeiten</translation>
</message>
@@ -880,24 +1416,24 @@ Möchten Sie diese dennoch öffnen?</translation>
<source>Reveal</source>
<translation>Zeigen</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Auto-Type für diesen Eintrag aktivieren</translation>
+ <source>Attachments</source>
+ <translation>Anhänge</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Textfarbe</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Hintergrundfarbe</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Fenstertitel:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Auto-Type für diesen Eintrag aktivieren</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -908,16 +1444,24 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Ben&amp;utzerdefinierte Auto-Type-Sequenz verwenden:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Standardse&amp;quenz verwenden</translation>
+ <source>Window Associations</source>
+ <translation>Fenster-Einstellungen</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>B&amp;enutzerdefinierte Sequenz:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Fenster-Einstellungen</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Fenstertitel:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Spezielle Auto-Type-Sequenz für dieses Fenster verwenden:</translation>
</message>
</context>
<context>
@@ -942,12 +1486,8 @@ Möchten Sie diese dennoch öffnen?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Titel:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Benutzername:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -958,20 +1498,104 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Wiederholen:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Titel:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Verfällt</translation>
+ <source>Notes</source>
+ <translation>Notizen</translation>
</message>
<message>
<source>Presets</source>
<translation>Vorgaben</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Notizen:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Klicken Sie das Kontrollkästchen, um die Notizen anzuzeigen.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Benutzername:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Verfällt</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Entferne Schlüssel vom Agenten nach</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>Sekunden</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Fingerabdruck</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Entferne Key vom Agenten wenn Datenbank geschlossen wird</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Öffentlicher Schlüssel</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Key zum Agenten hinzufügen, wenn Datenbank geöffnet / entsperrt wird</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Kommentar</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Entschlüsseln</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n. a.</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>In die Zwischenablage kopieren</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Privatschlüssel</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Externe Datei</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Durchsuchen...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Anhang</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Zum Agent hinzufügen</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Aus Agent löschen</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Verlange Benutzer-Bestätigung, wenn Schlüssel verwendet wird.</translation>
</message>
</context>
<context>
@@ -1043,6 +1667,14 @@ Möchten Sie diese dennoch öffnen?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Standardsymbol verwenden</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>B&amp;enutzerdefiniertes Symbol verwenden</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Eigenes Symbol hinzufügen</translation>
</message>
@@ -1051,6 +1683,18 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Eigenes Symbol löschen</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Favicon herunterladen</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Abrufen des Favicons nicht möglich</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Tipp: Sie können Google als Fallback festlegen unter Werkzeuge&gt;Einstellungen&gt;Sicherheit</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Bilder</translation>
</message>
@@ -1063,24 +1707,12 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Bild auswählen</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Favicon herunterladen</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Abrufen des Favicons nicht möglich</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Icon kann nicht gelesen werden</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Standardsymbol verwenden</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>B&amp;enutzerdefiniertes Symbol verwenden</translation>
+ <source>Custom icon already exists</source>
+ <translation>Es gibt bereits ein eigenes Symbol </translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1090,14 +1722,6 @@ Möchten Sie diese dennoch öffnen?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Dieses Icon wird noch von %1 Einträgen verwendet und würde mit dem Standard-Icon ersetzt. Sind Sie sicher, dass die fortfahren wollen?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Tipp: Sie können Google als Fallback festlegen unter Werkzeuge&gt;Einstellungen&gt;Sicherheit</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>Es gibt bereits ein eigenes Symbol </translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1117,15 +1741,129 @@ Möchten Sie diese dennoch öffnen?</translation>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Plugin-Daten</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Entfernen</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Plugin-Daten löschen?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Möchten Sie die ausgewählten Plugin-Daten wirklich löschen?
+Dies kann dazu führen, dass die jeweiligen Plugins nicht mehr richtig funktionieren.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Schlüssel</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Wert</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation>- Klon</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Größe</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Hinzufügen</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Entfernen</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Offen</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Speichern</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Dateien auswählen</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Sind Sie sicher, dass Sie %n Anhang löschen wollen?</numerusform><numerusform>Sind Sie sicher, dass Sie %n Anhänge löschen möchten?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Entfernen bestätigen</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Anhänge speichern</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Konnte Verzeichnis nicht erstellen:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Sind Sie sicher, dass sie die existierende Datei „%1“ mit dem Anhang überschreiben wollen?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Überschreiben bestätigen</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Speichern der Anhänge nicht möglich:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Öffnen des Anhangs nicht möglich:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Öffnen des Anhangs nicht möglich:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Öffnen der Datei nicht möglich</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1154,6 +1892,11 @@ Möchten Sie diese dennoch öffnen?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Gruppe</translation>
</message>
@@ -1170,9 +1913,67 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref:</translation>
+ <source>Never</source>
+ <translation>Niemals</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Passwort</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notizen</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Verfällt</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Erstellt</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Geändert</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Zuletzt zugegriffen</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Anhänge</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Ansicht anpassen</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Benutzernamen ausblenden</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Passwörter ausblenden</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>An Fenster anpassen</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>An Inhalt anpassen</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Zurücksetzen</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Anhänge (Icon)</translation>
</message>
</context>
<context>
@@ -1183,6 +1984,17 @@ Möchten Sie diese dennoch öffnen?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Datei konnte nicht gespeichert werden!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Speichern des Native-Messaging-Skripts nicht möglich.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1232,6 +2044,10 @@ Möchten Sie diese dennoch öffnen?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Sicherstellen, dass das Passwort Zeichen aus allen Gruppen enthält.</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Erweitertes ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1245,6 +2061,361 @@ Möchten Sie diese dennoch öffnen?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Berechnung des Master-Passworts gescheitert</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Fehler beim Ausführen des Challenge-Response-Verfahrens</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Falscher Schlüssel oder die Datenbank ist beschädigt.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Fehler beim Ausführen des Challenge-Response-Verfahrens</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Berechnung des Master-Passworts gescheitert</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>fehlende Datenbank-Header</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Berechnung des Master-Passworts gescheitert</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Ungültige Größe der Header-Prüfsumme</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Ungültige SHA256-Prüfsumme für Header</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Falscher Schlüssel oder Datei ist beschädigt (ungültiger HMAC)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Unbekannter Verschlüsselungsalgorithmus</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Ungültige Größe der Header-ID</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Ungültiger Header-Feldlänge</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Ungültige Header-Datenlänge</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Konnte Puffer mit KDF-Parametern im Header nicht öffnen</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Nicht unterstützte Schlüssel-Ableitungsfunktion (KDF) oder ungültige Parameter</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Veraltete Header-Felder in KDBX4-Datei gefunden.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Ungültige Größer der Inner-Header-ID</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Ungültige Inner-Header-Feldlänge</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Ungültige Inner-Header-Binärgröße</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige KeePass-Variant-Map-Version</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige Variant-Map-Eintragslänge</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige Variant-Map-Eintragsdaten</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige Variant-Map-Eintragslänge</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige Variant-Map-Eintragsdaten</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige Bool Variant-Map-Eintragslänge</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige Int32 Variant-Map-Eintragslänge</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige UInt32 Variant-Map-Eintragslänge</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige Int64 Variant-Map-Eintragslänge</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültige UInt64 Variant-Map-Eintragslänge</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ungültiger Variant-Map-Eintragstyp</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Falsche Feldgröße für Variant-Map-Feldtyp</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Ungültiger symmetrischer Verschlüsselungsalgorithmus</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Ungültige symmetrische Verschlüsselungs-IV-Größe</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Berechnung des Master-Passworts gescheitert</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>KDF-Parameter aus Variant-Map konnten nicht serialisiert werden</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Ungültige Länge der Algorithmus-UUID</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Nicht unterstützter Verschlüsselungsalgorithmus</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Ungültige Kompressions-Flag-Fänge</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Nicht unterstützter Kompressionsalgorithmus</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Ungültige Master-Seed-Länge</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Ungültige Transform-Seed-Länge</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Ungültige Transformations-Runden-Länge</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Ungültige Start-Byte-Länge</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Ungültige Random-Stream-ID-Länge</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Ungültige Inner-Random-Stream-Cipher</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Keine KeePass-Datenbank.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Die ausgewählte Datei ist eine alte KeePass 1-Datenbank (.kdb).
+
+Zum Importieren gehen Sie auf Datenbank &gt; &apos;KeePass 1-Datenbank importieren...&apos;.
+Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann später nicht mehr mit der alten KeePassX-Version 0.4 geöffnet werden.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Nicht unterstützte KeePass 2-Datenbank-Version</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML-Parser-Fehler: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Keine Root-Gruppe</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Fehlende Icon-UUID oder -Daten</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Fehlender benutzerdefinierter Datenschlüssel oder -wert</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Mehrere Gruppen-Elemente</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Nicht gesetzte Gruppen-UUID</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Ungültige Gruppen-Icon-Anzahl</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Ungültiger Wert für EnableAutoType</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Ungültiger Wert für EnableSearching</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Keine Gruppen-UUID gefunden</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Fehlende DeleteObject-UUID</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Fehlende DeletedObject-UUID oder -Zeit</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Fehlende Eintrags-UUID</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Ungültige Eintrags-Icon-Anzahl</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Verlaufselement in Eintragsverlauf</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Keine Eintrags-UUID gefunden</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Verlaufselement mit anderer UUID</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Eintrags-Zeichenfolge konnte nicht entschlüssel werden</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Doppelte Benutzerattribut gefunden</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Eintrags-Schlüssel oder -Wert fehlt</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Doppelter Anhang gefunden</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Eintrags-Binärschlüssel oder -Wert fehlt</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Auto-Type-Fensterangabe oder -Sequenz fehlt</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Ungültiger Bool-Wert</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Ungültiger Datums-Zeit-Wert</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Ungültiger Farbwert</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Ungültiger RGB-Farbteil</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Ungültiger Zahlwert</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Ungültiger UUID-Wert</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Binärdatei konnte nicht dekomprimiert werden</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1274,6 +2445,35 @@ Möchten Sie diese dennoch öffnen?</translation>
<translation>Nicht unterstützte KeePass-Datenbankversion.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Verschlüsselungs-IV konnte nicht gelesen werden</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Ungültige Anzahl Gruppen</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Ungültige Anzahl Einträge</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Ungültige Inhalts-Hashlänge</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Ungültige Transform-Seed-Länge</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Ungültige Anzahl Transform-Runden</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Gruppen-Baum konnte nicht erzeugt werden</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Root</translation>
</message>
@@ -1285,129 +2485,141 @@ Möchten Sie diese dennoch öffnen?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Falscher Schlüssel oder die Datenbank ist beschädigt.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Keine KeePass-Datenbank.</translation>
+ <source>Key transformation failed</source>
+ <translation>Schlüssel-Transformation fehlgeschlagen</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Nicht unterstützte KeePass-Datenbankversion.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Ungültige Gruppen-Typanzahl</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Falscher Schlüssel oder die Datei ist beschädigt.</translation>
+ <source>Invalid group field size</source>
+ <translation>Falsche Feldgröße für Gruppe</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Berechnung des Hauptschlüssels gescheitert</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Falsche Feldgröße für Gruppenfeld</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Fehler beim Ausführen des Challenge-Response-Verfahrens</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Falsche Feldgröße für Gruppen-ID</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Die ausgewählte Datei ist eine alte KeePass 1-Datenbank (.kdb).
-
-Zum Importieren gehen Sie auf Datenbank &gt; &apos;KeePass 1-Datenbank importieren...&apos;.
-Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann später nicht mehr mit der alten KeePassX-Version 0.4 geöffnet werden.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Falsche Feldgröße für Gruppen-Erstellungs-Zeit</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Fehler beim Ausführen des Challenge-Response-Verfahrens</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Falsche Feldgröße für Gruppen-Änderungszeit</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Berechnung des Hauptschlüssels gescheitert</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Falsche Feldgröße für Gruppen-Zugriffszeit</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Fataler Fehler beim Testen der kryptografischen Funktionen.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Falsche Feldgröße für Gruppen-Verfallszeit</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Fehler</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Falsche Feldgröße für Gruppen-Icon</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Lock-Datei konnte nicht erstellt werden. Einzelinstanzmodus ist deaktiviert.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Falsche Feldgröße für Gruppen-Level</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Eine andere KeePassXC-Instanz läuft bereits</translation>
+ <source>Invalid group field type</source>
+ <translation>Falsche Feldtyp für Gruppe</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>Vorhandene einmal-Sperrdatei ist ungültig. Starte neuen Vorgang. </translation>
+ <source>Missing group id or level</source>
+ <translation>Fehlende Gruppen-ID oder -Level</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Datenbank öffnen</translation>
+ <source>Missing entry field type number</source>
+ <translation>Fehlende Eintragsfeld-Typeanzahl</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Datenbankeinstellungen</translation>
+ <source>Invalid entry field size</source>
+ <translation>Falsche Feldgröße für Eintrag</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Benutzername in die Zwischenablage kopieren</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Gelesene Eintrags-Felddaten haben falsche Größe</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Passwort in die Zwischenablage kopieren</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Eintrags-UUID hat falsche Größe</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Einstellungen</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Falsche Feldgröße für Eintrags-Gruppen-ID</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Symbolleiste anzeigen</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Falsche Feldgröße für Eintrags-Icon</translation>
</message>
<message>
- <source>read-only</source>
- <translation>Nur Lesezugriff</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Falsche Feldgröße für Eintrags-Erstellungszeit</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Fenster zeigen / verstecken</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Falsche Feldgröße für Eintrags-Änderungszeit</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 Datenbank</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Falsche Feldgröße für Eintrags-Verfallszeit</translation>
</message>
<message>
- <source>All files</source>
- <translation>Alle Dateien</translation>
+ <source>Invalid entry field type</source>
+ <translation>Ungültiger Eintrags-Feldtyp</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Reparierte Datenbank speichern</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Vorhandene einmal-Sperrdatei ist ungültig. Starte neuen Vorgang. </translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Schreiben der Datenbank fehlgeschlagen.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Lock-Datei konnte nicht erstellt werden. Einzelinstanzmodus ist deaktiviert.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Eine andere KeePassXC-Instanz läuft bereits</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Fataler Fehler beim Testen der kryptografischen Funktionen.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Fehler</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Datenbank</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Zuletzt verwendete Datenbanken</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importieren</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Hilfe</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>Ei&amp;nträge</translation>
</message>
@@ -1416,12 +2628,16 @@ Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann
<translation>Feld in &amp;Zwischenablage kopieren</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Zeitbasiertes Einmal-Passwort (TOTP)</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Gruppen</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Ansicht</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Werkzeuge</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1432,6 +2648,10 @@ Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann
<translation>&amp;Ãœber</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>Datenbank öffnen...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Datenbank &amp;speichern</translation>
</message>
@@ -1472,24 +2692,24 @@ Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann
<translation>Gruppe &amp;löschen</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>&amp;Datenbankeinstellungen</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Datenbank speichern unter...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>Eintrag &amp;klonen</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Ha&amp;uptschlüssel ändern...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Timed One-Time-Passwort</translation>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Datenbankeinstellungen</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>&amp;TOTP kopieren</translation>
+ <source>Database settings</source>
+ <translation>Datenbankeinstellungen</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>TOTP anzeigen</translation>
+ <source>&amp;Clone entry</source>
+ <translation>Eintrag &amp;klonen</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1500,14 +2720,26 @@ Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann
<translation>&amp;Benutzernamen kopieren</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Benutzername in die Zwischenablage kopieren</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Passwort kop&amp;ieren</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Passwort in die Zwischenablage kopieren</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Einstellungen</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Passwortgenerator</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Auto-Type ausführen</translation>
</message>
@@ -1524,165 +2756,222 @@ Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann
<translation>&amp;Titel</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Titel in Zwischenablage kopieren</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>URL in Zwischenablage kopieren</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Notizen</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Passwortgenerator</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Notizen in Zwischenablage kopieren</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Verlauf löschen</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>Als CSV-Datei &amp;exportieren...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Datenbank</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>KeePass 1-Datenbank importieren...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importieren</translation>
+ <source>Import CSV file...</source>
+ <translation>CSV-Datei importieren...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Werkzeuge</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Datenbank repar&amp;ieren...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>TOTP anzeigen</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Papierkorb leeren</translation>
+ <source>Set up TOTP...</source>
+ <translation>TOTP einrichten...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>&amp;TOTP kopieren</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Papierkorb l&amp;eeren</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Verlauf löschen</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Zugriffsfehler für Konfigurations-Datei %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>KeePassXC beenden</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Es sie aus, als ob Sie KeePassHTTP für Browser-Integration nutzen. Dieses Feature is veraltet und wird in Zukunft entfernt. &lt;br&gt;Bitte wechseln Sie zu KeePassXC-Browser! Für Hilfe bei der Migration, lesen Sie unseren &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;Migrations-Leitfaden&lt;/a&gt; (Warnung %1 von 3).</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Bitte drücken Sie den Button Ihres YubiKeys</translation>
+ <source>read-only</source>
+ <translation>Nur Lesezugriff</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>&amp;Hilfe</translation>
+ <source>Settings</source>
+ <translation>Einstellungen</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>Datenbank öffnen...</translation>
+ <source>Toggle window</source>
+ <translation>Fenster zeigen / verstecken</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Datenbank speichern unter...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>KeePassXC beenden</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Ha&amp;uptschlüssel ändern...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Datenbank</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>Als CSV-Datei &amp;exportieren...</translation>
+ <source>All files</source>
+ <translation>Alle Dateien</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>KeePass 1-Datenbank importieren...</translation>
+ <source>Open database</source>
+ <translation>Datenbank öffnen</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>CSV-Datei importieren...</translation>
+ <source>Save repaired database</source>
+ <translation>Reparierte Datenbank speichern</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Datenbank repar&amp;ieren...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Schreiben der Datenbank fehlgeschlagen.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>TOTP einrichten...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Bitte drücken Sie den Button Ihres YubiKeys</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>WARNUNG: Sie verwenden eine instabile Version von KeePassXC!
+Es besteht ein hohes Risiko für Datenkorruption, pflegen Sie ein Backup Ihrer Datenbank.
+Diese Version ist nicht für den Produktiveinsatz gedacht.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Dialog</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Ungültige Schlüsseldatei, OpenSSH-Schlüssel erwartet</translation>
</message>
<message>
- <source>General</source>
- <translation>Allgemein</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>Falsche PEM-Boundarys</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>Zeig&amp;e eine Benachrichtigung, wenn Anmeldedaten angefordert werden.</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Base64-Dekodierung fehlgeschlagen</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Sortiere gefundene Einträge nach &amp;Benutzername</translation>
+ <source>Key file way too small.</source>
+ <translation>Schlüsseldatei ist viel zu klein</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Entferne alle gespeicherten Berechtigungen für Einträge in der aktiven Datenbank</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>Magic-Header-ID der Schlüsseldate ungültig</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Fortgeschritten</translation>
+ <source>Found zero keys</source>
+ <translation>Null Schlüssel gefunden</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>&amp;Zugriff auf Einträge immer erlauben</translation>
+ <source>Failed to read public key.</source>
+ <translation>Öffentlicher Schlüssel konnte nicht gelesen werden</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>&amp;Aktualisierung von Einträgen immer erlauben</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Korrupte Schlüsseldatei, lesen des Privatschlüssels fehlgeschlagen</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Suche in allen offenen Datenbanken nach übereinstimmenden Einträgen</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Keine Privatschlüssel-Nutzdaten zum Entschlüsseln</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP-Port:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Versuche, KDF ohne Verschlüsselungsalgorithmus anzuwenden</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Standard-Port: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Passphrase zum Entschlüsseln des Schlüssels benötigt</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Verlange Entsperrung, wenn die Datenbank gesperrt ist.</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Schlüssel-Ableitung fehlgeschlagen, Schlüsseldatei korrupt?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Sortiere gefundene Einträge nach Titel</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Entschlüsselung fehlgeschlagen, falsche Passphrase?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC überwacht diesen Port auf 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Unerwartetes EOF beim Lesen des öffentlichen Schlüssels</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Privilegierte Ports können nicht überwacht werden</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Unerwartetes EOF beim Lesen des Privatschlüssels</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Privilegierte Ports unterhalb von 1024 können nicht überwacht werden.
-Es wird der Standard-Port 19455 verwendet.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Öffentlicher Schlüssel konnte nicht geschrieben werden, da er leer ist</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>&amp;Entferne alle freigegebenen Chiffrierschlüssel aus der aktiven Datenbank</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Unerwartetes EOF beim Schreiben des öffentlichen Schlüssels</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>Zeige auch erweiterte Attribute, welche mit &quot;KPH: &quot; beginnen</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Privatschlüssel konnte nicht geschrieben werden, da er leer ist</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Automatisches Erstellen und Aktualisieren von erweiterten Attributen wird nicht unterstützt!</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Unerwartetes EOF beim Schreiben des Privatschlüssels</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Nicht unterstützter Schlüssel-Typ: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Unbekannter Verschlüsselungsalgorithmus: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Verschlüsselungs-IV ist zur kurz für MD5-KDF</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Unbekannte Schlüssel-Ableitungs-Funktion: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Unbekannter Schlüssel-Typ: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1693,6 +2982,15 @@ Es wird der Standard-Port 19455 verwendet.</translation>
<translation>KeePassHTTP-Server aktivieren</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Allgemein</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Zeig&amp;e eine Benachrichtigung, wenn Anmeldedaten angefordert werden.</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Zeige nur die am besten passenden Einträge für eine URL anstatt aller Einträge der ganzen Domäne.</translation>
</message>
@@ -1701,6 +2999,10 @@ Es wird der Standard-Port 19455 verwendet.</translation>
<translation>Nur beste Treffer anzeigen</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Verlange Entsperrung, wenn die Datenbank gesperrt ist.</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Nur Einträge mit dem gleichen Schema (http://, https://, ftp://, …) anzeigen</translation>
</message>
@@ -1709,27 +3011,108 @@ Es wird der Standard-Port 19455 verwendet.</translation>
<translation>URL-Schema verwenden</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Sortiere gefundene Einträge nach &amp;Benutzername</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Sortiere gefundene Einträge nach Titel</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>&amp;Entferne alle freigegebenen Chiffrierschlüssel aus der aktiven Datenbank</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Entferne alle gespeicherten Berechtigungen für Einträge in der aktiven Datenbank</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Passwortgenerator</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Fortgeschritten</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>&amp;Zugriff auf Einträge immer erlauben</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>&amp;Aktualisierung von Einträgen immer erlauben</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Nur die ausgewählte Datenbank muss mit dem Client verbunden sein.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Die folgenden Optionen können gefährlich sein!
-Ändern Sie diese nur, wenn Sie wissen, was Sie tun.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Suche in allen offenen Datenbanken nach übereinstimmenden Einträgen</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatisches Erstellen und Aktualisieren von erweiterten Attributen wird nicht unterstützt!</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Zeige auch erweiterte Attribute, welche mit &quot;KPH: &quot; beginnen</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP-Port:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Standard-Port: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC überwacht diesen Port auf 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Warnung:&lt;/b&gt; Die folgenden Optionen können gefährlich sein!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP ist veraltet und wird in Zukunft nicht mehr unterstützt. &lt;br&gt;Bitte wechseln Sie zu KeePassXC-Browser! Für Hilfe bei der Migration, lesen Sie unseren &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;Migrations-Leitfaden&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Privilegierte Ports können nicht überwacht werden</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Privilegierte Ports unterhalb von 1024 können nicht überwacht werden.
+Es wird der Standard-Port 19455 verwendet.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Passwort:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>Stärke</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>Entropie</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Passwort</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Zeichenarten</translation>
</message>
@@ -1750,38 +3133,50 @@ Change them only if you know what you are doing.</source>
<translation>Sonderzeichen</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Erweitertes ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Gleich aussehende Zeichen ausschließen</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Akzeptieren</translation>
+ <source>Pick characters from every group</source>
+ <translation>Zeichen aus allen Gruppen wählen</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Länge:</translation>
</message>
<message>
- <source>strength</source>
- <translation>Stärke</translation>
+ <source>Passphrase</source>
+ <translation>Passphrase</translation>
</message>
<message>
- <source>entropy</source>
- <translation>Entropie</translation>
+ <source>Wordlist:</source>
+ <translation>Wortliste</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Länge:</translation>
+ <source>Word Count:</source>
+ <translation>Wort-Anzahl</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Zeichen aus allen Gruppen wählen</translation>
+ <source>Word Separator:</source>
+ <translation>Wort-Trenner</translation>
</message>
<message>
<source>Generate</source>
<translation>Generieren</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Kopieren</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Akzeptieren</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Schließen</translation>
</message>
@@ -1799,51 +3194,275 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Schlecht</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Schwach</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Gut</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Ausgezeichnet</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Passwort</translation>
+ <source>Database not opened</source>
+ <translation>Datenbank nicht geöffnet</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>Erweitertes ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>Datenbank-Hash nicht verfügbar</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Passphrase</translation>
+ <source>Client public key not received</source>
+ <translation>Öffentlicher Client-Schlüssel nicht empfangen</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Wortliste</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Nachricht konnte nicht entschlüsselt werden</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Wort-Anzahl</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Timeout oder Verbindung zu KeePassXC fehlgeschlagen</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Wort-Trenner</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Aktion abgebrochen oder verweigert</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Kopieren</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Nachricht konnte nicht entschlüsselt werden oder öffentlicher Schlüssel wurde nicht gefunden. Ist Native-Messaging in KeePassXC aktiviert ?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC-Verbindung fehlgeschlagen, bitte erneut versuchen</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Schlüsselaustausch nicht erfolgreich</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Schlüssel nicht erkannt</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Keine gespeicherten Datenbanken gefunden</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Falsche Aktion</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Leere Nachricht erhalten</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Keine URL angegeben</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Keine Anmeldedaten gefunden</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Unbekannter Fehler</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Neuen Eintrag zur Datenbank hinzufügen</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Pfad zur Datenbank.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Schlüsseldatei der Datenbank</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>Pfad</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Nutzername für den Eintrag</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>Nutzername</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL für den Eintrag</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Nach dem Passwort des Eintrags fragen</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Passwort für den Eintrag generieren.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Länge des generierten Passworts.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>Länge</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Pfad des hinzuzufügenden Eintrags.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Passwort eines Eintrags in die Zwischenablage kopieren.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Pfad des in die Zwischenablage zu kopierenden Eintrags</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Zeit in Sekunden, bevor die Zwischenablage geleert wird.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Einen Eintrag bearbeiten.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Titel für diesen Eintrag.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>Titel</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Pfad des zu bearbeitenden Eintrags</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Entropy des Passworts abschätzen</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Passwort, für das die Entropie abgeschätzt werden soll.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Fortgeschrittene Analyse des Passworts ausführen.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Inhalt der Datenbank extrahieren und anzeigen.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Pfad der zu extrahierenden Datenbank.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Passwort eingeben, um %1 zu entsperren:</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Schlüsseldatei %1: konnte nicht geladen werden: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>WARNUNG: Sie verwenden ein veraltetes Schlüsseldatei-Format, welches in Zukunft evtl. nicht mehr unterstützt wird.
+
+Bitte denken Sie darüber nach, eine neue Schlüsseldatei zu generieren.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Verfügbare Kommandos:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Name des auszuführenden Befehls.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Datenbankeinträge auflisten.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Pfad der aufzulistenden Gruppe. Standard ist /.</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Einträge schnell finden.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Suchbegriff.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Zwei Datenbanken zusammenführen</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Pfad der Datenbank, in die zusammengeführt werden soll.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Pfad der Datenbank aus der zusammengeführt werden soll.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Verwende dieselben Anmeldedaten für beide Datenbankdateien.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Schlüsseldatei der Datenbank, aus der zusammengeführt werden soll.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Informationen eines Eintrags anzeigen.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Namen der anzuzeigenden Attribute. Diese Option kann mehr als einmal angegeben werden, wobei jedes Attribut in einer eigenen Zeile in der gegebenen Reihenfolge angegeben wird. Wenn keine Attribute angegeben sind, wird eine Zusammenfassung der Standardattribute gegeben.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>Attribute</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Name des anzuzeigenden Eintrags.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL-Gerät</translation>
@@ -1866,8 +3485,28 @@ Change them only if you know what you are doing.</source>
<translation>Schließendes Anführungszeichen fehlt</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>INTERN - unget untere Schranke überschritten</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – empfohlen)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1886,14 +3525,22 @@ Change them only if you know what you are doing.</source>
<translation>Passwort</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notizen</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Zuletzt bearbeitet</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Erstellt</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Veraltete Browser-Integration</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Browser-Integration</translation>
</message>
@@ -1909,6 +3556,56 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation>Passiv</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH-Agent</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Neue zufällige Diceware-Passphrase erzeugen.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Wort-Anzahl für die Diceware-Passphrase.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>Anzahl</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Wortliste für den Diceware-Generator.
+[Standard: EFF Englisch]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Neues zufälliges Passwort erzeugen.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Länge des erzeugten Passworts.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Kleinbuchstaben zur Passwort-Erzeugung verwenden.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Großbuchstaben zur Passwort-Erzeugung verwenden.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Zahlen zur Passwort-Erzeugung verwenden.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Sonderzeichen zur Passwort-Erzeugung verwenden.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Erweiterte ASCII-Zeichen zur Passwort-Erzeugung verwenden.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1947,8 +3644,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Groß- /Kleinschreibung beachten</translation>
+ <source>Search...</source>
+ <translation>Suche…</translation>
</message>
<message>
<source>Search</source>
@@ -1959,8 +3656,8 @@ Change them only if you know what you are doing.</source>
<translation>Löschen</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Suche…</translation>
+ <source>Case Sensitive</source>
+ <translation>Groß- /Kleinschreibung beachten</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1970,50 +3667,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Ein freigegebener Chiffrierschlüssel mit dem Namen &quot;%1&quot; existiert schon.
-Möchten Sie ihn überschreiben?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Möchten Sie wirklich die Informationen in %1 - %2 aktualisieren?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>Die aktive Datenbank ist gesperrt!
-Bitte entsperren Sie die ausgewählte Datenbank oder wählen Sie eine andere, die entsperrt ist.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>%1 Verschlüsselungs-%2 erfolgreich aus KeePassXC/HTTP-Einstellungen entfernt.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Kein freigegebener Chiffrierschlüssel in den KeePassHTTP-Einstellungen gefunden.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Die aktive Datenbank enthält keinen Eintrag für KeePassHTTP Einstellungen.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Gespeicherte Berechtigungen werden gelöscht...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Abbrechen</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Berechtigungen wurden erfolgreich aus %1 %2 gelöscht.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>The aktive Datenbank enthält keinen Eintrag mit Zugangsdaten.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Neue Schlüsselverbindungsanfrage</translation>
</message>
@@ -2031,33 +3684,77 @@ Namen und akzeptieren Sie.</translation>
<translation>KeePassXC: Bestehenden Schlüssel überschreiben?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Ein freigegebener Chiffrierschlüssel mit dem Namen &quot;%1&quot; existiert schon.
+Möchten Sie ihn überschreiben?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Eintrag aktualisiert</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Möchten Sie wirklich die Informationen in %1 - %2 aktualisieren?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Datenbank gesperrt!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Die aktive Datenbank ist gesperrt!
+Bitte entsperren Sie die ausgewählte Datenbank oder wählen Sie eine andere, die entsperrt ist.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Schlüssel aus der Datenbank entfernt</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>%n Schlüssel erfolgreich aus KeePassXC/HTTP-Einstellungen entfernt.</numerusform><numerusform>%n Schlüssel erfolgreich aus KeePassXC/HTTP-Einstellungen entfernt.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Kein Schlüssel gefunden</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Kein freigegebener Chiffrierschlüssel in den KeePassHTTP-Einstellungen gefunden.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Einstellung nicht verfügbar!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Die aktive Datenbank enthält keinen Eintrag für KeePassHTTP Einstellungen.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Gespeicherte Berechtigungen werden gelöscht...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Zugangsdaten entfernt</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Gespeicherte Berechtigungen wurden erfolgreich aus %n Eintrag entfernt.</numerusform><numerusform>Gespeicherte Berechtigungen wurden erfolgreich aus %n Einträgen entfernt.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Kein Eintrag mit Zugangsdaten gefunden!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>The aktive Datenbank enthält keinen Eintrag mit Zugangsdaten.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2081,10 +3778,26 @@ Namen und akzeptieren Sie.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Grundeinstellungen</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Nur eine einzige KeePassXC-Instanz starten</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Letzte Datenbank merken</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Letzte Schlüsseldateien und Sicherheits-Dongles merken</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Letzte Datenbank beim Start laden</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Automatisch speichern beim Schließen</translation>
</message>
@@ -2093,20 +3806,28 @@ Namen und akzeptieren Sie.</translation>
<translation>Automatisch nach jeder Änderung speichern</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Datenbank nach externer Änderung automatisch neu laden.</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimieren beim Kopieren in die Zwischenablage</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Fenster beim Programmstart minimieren</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Gruppensymbol für das Erstellen neuer Einträge verwenden</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Globale Tastenkombination für Auto-Type</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Datenbank nicht als geändert markieren für geringfügige Änderungen (z.B. Ausklappen von Gruppen)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Sprache</translation>
+ <source>Hide the Details view</source>
+ <translation>Detailansicht verstecken</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2117,66 +3838,84 @@ Namen und akzeptieren Sie.</translation>
<translation>Fenster verstecken wenn minimiert</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Letzte Datenbank beim Start laden</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Datenbank nach externer Änderung automatisch neu laden.</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Fenster zur Taskleiste minimieren statt das Programm zu beenden</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Fenster beim Programmstart minimieren</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Grundeinstellungen</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Letzte Schlüsseldateien und Sicherheits-Dongles merken</translation>
+ <source>Dark system tray icon</source>
+ <translation>Dunkles Taskleistensymbol</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Datenbank nicht als geändert markieren für geringfügige Änderungen (z.B. Ausklappen von Gruppen)</translation>
+ <source>Language</source>
+ <translation>Sprache</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-Type</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Verwende Eintrags-Titel und URL, um Fenster für globales Auto-Type auszuwählen</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Verwende Eintragstitel, um entsprechende Fenster für globales Auto-Type zu finden</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Verwende URL, um Fenster für globales Auto-Type zu finden.</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Immer vor einem Auto-Type fragen</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Globale Tastenkombination für Auto-Type</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Auto-Type-Verzögerung</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Nur eine einzige KeePassXC-Instanz starten</translation>
+ <source>Startup</source>
+ <translation>Programmstart</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Datei-Management</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Datenbankdatei sicher speichern (ggf. inkompatibel mit Dropbox etc.)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Vor Speichern Backup der Datenbank erstellen</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Eintrags-Management</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Allgemein</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Timeouts</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Zwischenablage leeren nach</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> sek</translation>
</message>
<message>
@@ -2184,8 +3923,12 @@ Namen und akzeptieren Sie.</translation>
<translation>Datenbank sperren nach einer Inaktivität von</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Passwörter standardmäßig im Klartext anzeigen</translation>
+ <source>Convenience</source>
+ <translation>Komfort</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Datenbank schließen, wenn Sitzung geschlossen oder Deckel zugeklappt wird</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2196,16 +3939,16 @@ Namen und akzeptieren Sie.</translation>
<translation>Keine erneute Passworteingabe verlangen, wenn das Passwort sichtbar ist.</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Timeouts</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Passwörter standardmäßig im Klartext anzeigen</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Komfort</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Passwörter in Vorschau-Panel verstecken</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Datenbank schließen, wenn Sitzung geschlossen oder Deckel zugeklappt wird</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Eintrags-Notizen standardmäßig verstecken</translation>
</message>
<message>
<source>Privacy</source>
@@ -2215,6 +3958,10 @@ Namen und akzeptieren Sie.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Verwende Google als Fallback fürs Herunterladen von Website-Icons</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Datenbank nach Auto-Type automatisch wieder sperren.</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2227,6 +3974,14 @@ Namen und akzeptieren Sie.</translation>
<translation>Schlüssel:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>RFC 6238-Token-Standardeinstellungen</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam-Tokeneinstellungen</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Verwende eigene Einstellungen</translation>
</message>
@@ -2252,6 +4007,7 @@ Namen und akzeptieren Sie.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> sek</translation>
</message>
</context>
@@ -2288,10 +4044,6 @@ Namen und akzeptieren Sie.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Willkommen bei KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Speichern Sie Ihre Passwörter sicher in einer KeePassXC-Datenbank</translation>
</message>
@@ -2315,92 +4067,48 @@ Namen und akzeptieren Sie.</translation>
<source>Recent databases</source>
<translation>Zuletzt verwendete Datenbanken</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Willkommen in KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>Pfad zu einer benutzerdefinierten Konfigurationsdatei</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>Schlüsseldatei der Datenbank</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - Plattformübergreifender Passwortmanager</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>Passwort der Datenbank von stdin lesen</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>Dateinamen der zu öffnenden Datenbanken (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Passwort in die Zwischenablage kopieren</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Eintrag aus der Datenbank entfernen</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Pfad zur Datenbank.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Verwende grafische Eingabeaufforderung zum Entsperren der Datenbank</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Name des in die Zwischenablage zu kopierenden Eintrags.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Inhalt der Datenbank extrahieren und anzeigen.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Pfad der zu extrahierenden Datenbank.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Name des auszuführenden Befehls.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Datenbankeinträge auflisten.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Pfad der aufzulistenden Gruppe. Standard ist /.</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>UUIDs der Einträge und Gruppen anzeigen.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Pfad des zu entfernenden Eintrags.</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>Zwei Datenbanken zusammenführen</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - Plattformübergreifender Passwortmanager</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Pfad der Datenbank, in die zusammengeführt werden soll.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>Dateinamen der zu öffnenden Datenbanken (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Pfad der Datenbank aus der zusammengeführt werden soll.</translation>
+ <source>path to a custom config file</source>
+ <translation>Pfad zu einer benutzerdefinierten Konfigurationsdatei</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Verwende gleiches Passwort für beide Datenbank-Dateien.</translation>
+ <source>key file of the database</source>
+ <translation>Schlüsseldatei der Datenbank</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Ein Passwort anzeigen</translation>
+ <source>read password of the database from stdin</source>
+ <translation>Passwort der Datenbank von stdin lesen</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Name des anzuzeigenden Eintrags.</translation>
+ <source>Parent window handle</source>
+ <translation>Eltern-Fenster-Handle</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_el.ts b/share/translations/keepassx_el.ts
index 5224c0242..426ed4306 100644
--- a/share/translations/keepassx_el.ts
+++ b/share/translations/keepassx_el.ts
@@ -10,14 +10,30 @@
<translation>Σχετικά</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>ΑναφέÏετε σφάλματα στο: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>Το KeePassXC διανέμεται υπό τους ÏŒÏους του GNU General Public License (GPL) έκδοση 2 ή (κατά την επιλογή σας) έκδοση 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>ΣυνεισφέÏοντες</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Δείτε τους ΣυνεισφέÏοντες στο GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>ΠληÏοφοÏίες Αποσφαλμάτωσης</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>ΣυμπεÏιλάβετε τις ακόλουθες πληÏοφοÏίες όποτε αναφέÏετε κάποιο σφάλμα:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>ΑντιγÏαφή στο Ï€ÏόχειÏο</translation>
</message>
@@ -32,6 +48,10 @@
<translation>ΑναθεώÏηση: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Διανομή: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Βιβλιοθήκες:</translation>
</message>
@@ -48,33 +68,26 @@ Kernel: %3 %4</source>
<translation>ΕνεÏγοποιημένες επεκτάσεις:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>ΑναφέÏετε σφάλματα στο: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>Το KeePassXC διανέμεται υπό τους ÏŒÏους του GNU General Public License (GPL) έκδοση 2 ή (κατά την επιλογή σας) έκδοση 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Δείτε τους ΣυνεισφέÏοντες στο GitHub&lt;/a&gt;</translation>
+ <translation>ΥποστήÏιξη έÏγου:</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>ΣυμπεÏιλάβετε τις ακόλουθες πληÏοφοÏίες όποτε αναφέÏετε κάποιο σφάλμα:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
+ <source>Build Type: %1
+</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Επιβεβαίωση ΠÏόσβασης</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Îα θυμάσαι αυτή την απόφαση</translation>
</message>
@@ -92,9 +105,12 @@ Please select whether you want to allow access.</source>
<translation>%1 έχει ζητήσει Ï€Ïόσβαση σε κωδικοÏÏ‚ για το/τα ακόλουθο/α αντικείμενο/α.
ΠαÏακαλώ επιλέξετε εάν θέλετε να επιτÏέψετε τη Ï€Ïόσβαση.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP Επιβεβαίωση ΠÏόσβασης</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>ΕνεÏγοποίηση Ï€ÏάκτοÏα SSH (απαιτεί επανεκκίνηση)</translation>
</message>
</context>
<context>
@@ -107,6 +123,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation>Auto-Type - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Αυτόματη-ΓÏαφή</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +160,313 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Όμαδα</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Τίτλος</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Όνομα χÏήστη</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Ακολουθία</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Επιλέξτε καταχώÏηση για αυτόματη γÏαφή:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Auto-Type - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Îα θυμάσαι αυτή την απόφαση</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Αποδοχή</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>ΆÏνηση</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 έχει ζητήσει Ï€Ïόσβαση σε κωδικοÏÏ‚ για το/τα ακόλουθο/α αντικείμενο/α.
+ΠαÏακαλώ επιλέξετε εάν θέλετε να επιτÏέψετε τη Ï€Ïόσβαση.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Διάλογος</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Γενικά</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Για Ï€ÏοχωÏημένους</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Αντικατάσταση Ï„Ïέχοντος κλειδιοÏ;</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: ΕνημέÏωση ΚαταχώÏησης</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Βάση δεδομένων κλειδωμένη!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Ρυθμισμένες μη διαθέσιμες!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Δε βÏεθήκαν κλειδιά</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Κλειδιά αφαιÏέθηκαν από τη βάση</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Διακοπή</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Δικαιώματα αφαιÏέθηκαν</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Δε βÏέθηκε καταχώÏηση με δικαιώματα!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -149,6 +484,10 @@ Please select whether you want to allow access.</source>
<translation>Επαναλάβετε τον κωδικό:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;ΑÏχείο κλειδί</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Αναζήτηση</translation>
</message>
@@ -157,6 +496,14 @@ Please select whether you want to allow access.</source>
<translation>ΔημιουÏγία</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Ανανέωση</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>ΑÏχεία κλειδιά</translation>
</message>
@@ -177,6 +524,10 @@ Please select whether you want to allow access.</source>
<translation>Επιλέξτε ένα αÏχείο κλειδί</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Κενός κωδικός</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Θέλετε στα αλήθεια να χÏησιμοποιήσετε μια άδεια σειÏά σαν κωδικό;</translation>
</message>
@@ -190,20 +541,15 @@ Please select whether you want to allow access.</source>
<translation>Αποτυχία οÏÎ¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… %1 ως αÏχείου κλειδιοÏ</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;ΑÏχείο κλειδί</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
+ <source>Legacy key file format</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Refresh</source>
- <translation>Ανανέωση</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Κενός κωδικός</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -217,6 +563,10 @@ Please select whether you want to allow access.</source>
<translation>Κλωνοποίηση Επιλογών</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Αντικατάσταση του ονόματος χÏήστη και του ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î¼Îµ παÏαπομπές</translation>
</message>
@@ -224,10 +574,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>ΑντιγÏαφή ιστοÏικοÏ</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -324,10 +670,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Εισαγωγή αÏχείου CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Σφάλμα</translation>
</message>
@@ -338,17 +680,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> byte, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> γÏαμμές, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> στήλες</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
</context>
<context>
@@ -370,6 +712,14 @@ Please select whether you want to allow access.</source>
<translation>Αναζήτηση</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Ανανέωση</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>ΑπόκÏιση ΠÏόκλησης:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>ΑδÏνατο να ανοιχτεί η βάση δεδομένων.</translation>
</message>
@@ -378,6 +728,21 @@ Please select whether you want to allow access.</source>
<translation>Αποτυχία ανοίγματος αÏχείο κλειδιοÏ</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>All files</source>
<translation>Όλα τα αÏχεία </translation>
</message>
@@ -389,14 +754,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>Επιλέξτε αÏχείο κλειδί</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Ανανέωση</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>ΑπόκÏιση ΠÏόκλησης:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -413,14 +770,14 @@ Please select whether you want to allow access.</source>
<translation>Δεν είναι δυνατό να ανοίξει αÏχείο κλειδιοÏ</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Μια χαÏά το άνοιγμα βάσης δεδομένων. Τίποτα να κάνει.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Δεν είναι δυνατό να ανοίξει τη βάση δεδομένων.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Μια χαÏά το άνοιγμα βάσης δεδομένων. Τίποτα να κάνει.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Επιτυχία</translation>
</message>
@@ -437,28 +794,118 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Όνομα βάσης δεδομένων:</translation>
+ <source>General</source>
+ <translation>Γενικά</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>ΠεÏιγÏαφή βάσης δεδομένων:</translation>
+ <source>Encryption</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (Ï€Ïοεπιλεγμένο)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Transform rounds:</source>
<translation>ΜετατÏεπόμενοι γÏÏοι:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>ΠÏοεπιλεγμένο όνομα χÏήστη:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Benchmark</source>
- <translation>Σημείο αναφοÏάς</translation>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Όνομα βάσης δεδομένων:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>ΠεÏιγÏαφή βάσης δεδομένων:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>ΠÏοεπιλεγμένο όνομα χÏήστη:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Max. history items:</source>
@@ -469,26 +916,27 @@ You can now save it.</source>
<translation>Μέγιστο μέγεθος ιστοÏικοÏ:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>ΧÏήση κάδου ανακÏκλωσης</translation>
+ <source> MiB</source>
+ <translation>MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (Ï€Ïοεπιλεγμένο)</translation>
+ <source>Use recycle bin</source>
+ <translation>ΧÏήση κάδου ανακÏκλωσης</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Algorithm:</source>
- <translation>ΑλγόÏιθμος:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Ρίζα</translation>
</message>
<message>
@@ -508,22 +956,48 @@ You can now save it.</source>
<translation>ΑÏχείο δεν βÏέθηκε!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Άνοιγμα βάσης δεδομένων KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Δεν είναι δυνατό να ανοίξει τη βάση δεδομένων.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Βάση δεδομένων KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>ΑÏχείο ανοιχτό μόνο για ανάγνωση.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Άνοιγμα αÏχείου CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>αÏχείο CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Όλα τα αÏχεία (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Συγχώνευση βάσης δεδομένων</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Άνοιγμα βάσης δεδομένων KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Βάση δεδομένων KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Κλείσιμο;</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; είναι σε λειτουÏγεία επεξεÏγασίας.
+ΑπόÏÏιψη αλλαγών και κλείσιμο οÏτως η άλλως;</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Αποθήκευση αλλαγών;</translation>
</message>
@@ -538,10 +1012,22 @@ Save changes?</source>
<translation>ΕγγÏαφή της βάσης δεδομένων απέτυχε.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Κωδικοί</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Αποθήκευση βάσης δεδομένων σαν</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Εξαγωγή βάσης δεδομένων σε αÏχείο CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>ΓÏάψιμο στο αÏχείο CSV απέτυχε.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Îέα βάση δεδομένων</translation>
</message>
@@ -560,12 +1046,6 @@ Please press cancel to finish your changes or discard them.</source>
ΠαÏακαλώ πατήστε άκυÏο για να αποθηκεÏσετε τις αλλαγές σας η να τις αποÏÏίψετε.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Αυτή η βάση δεδομένων δεν έχει αποθηκευτεί ποτέ.
-ΜποÏείται να την αποθηκεÏσετε ή να σταματήσετε να την κλειδώνετε.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -574,68 +1054,22 @@ Otherwise your changes are lost.</source>
Αλλιώς οι αλλαγές σας θα χαθοÏν.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; είναι σε λειτουÏγεία επεξεÏγασίας.
-ΑπόÏÏιψη αλλαγών και κλείσιμο οÏτως η άλλως;</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Εξαγωγή βάσης δεδομένων σε αÏχείο CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>αÏχείο CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>ΓÏάψιμο στο αÏχείο CSV απέτυχε.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Δεν είναι δυνατό να ανοίξει τη βάση δεδομένων.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Συγχώνευση βάσης δεδομένων</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Η βάση δεδομένων που Ï€Ïοσπαθείτε να αποθηκεÏσετε ως είναι κλειδωμένη από μία άλλη διεÏγασία του KeePassXC.
-Θέλετε να την αποθηκεÏσετε οÏτως η άλλως;</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Κωδικοί</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Βάση δεδομένων ήδη ανοιχτή</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Η βάση δεδομένων που Ï€Ïοσπαθείτε να ανοίξετε είναι κλειδωμένη από μία άλλη διεÏγασία του KeePassXC.
-Θέλετε να την ανοίξετε οÏτως η άλλως;</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Άνοιγμα μόνο για ανάγνωση</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>ΑÏχείο ανοιχτό μόνο για ανάγνωση.</translation>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Open CSV file</source>
- <translation>Άνοιγμα αÏχείου CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Αναζήτηση...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Αλλαγή Ï€ÏωτεÏοντος κλειδιοÏ</translation>
</message>
@@ -656,6 +1090,14 @@ Do you want to open it anyway?</source>
<translation>Θέλετε Ï€Ïαγματικά να διαγÏάψετε %1 καταχωÏήσεις για πάντα;</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Κίνηση εισόδου στον κάδο ανακÏκλωσης;</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Θέλετε Ï€Ïαγματικά να κινηθεί εισόδου &quot;%1&quot; στον κάδο ανακÏκλωσης;</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Μετακίνηση καταχωÏήσεων στο καλάθι των αχÏήστων;</translation>
</message>
@@ -664,28 +1106,28 @@ Do you want to open it anyway?</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>ΔιαγÏαφή ομάδας;</translation>
+ <source>Execute command?</source>
+ <translation>Εκτέλεση εντολής;</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Θέλετε στα αλήθεια να διαγÏάψετε την ομάδα &quot;%1&quot; μόνιμα;</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Θέλετε Ï€Ïαγματικά να εκτελέσετε την ακόλουθη εντολή;&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
+ <source>Remember my choice</source>
+ <translation>Îα θυμάσαι αυτή την επιλογή</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Κίνηση εισόδου στον κάδο ανακÏκλωσης;</translation>
+ <source>Delete group?</source>
+ <translation>ΔιαγÏαφή ομάδας;</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Θέλετε Ï€Ïαγματικά να κινηθεί εισόδου &quot;%1&quot; στον κάδο ανακÏκλωσης;</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Θέλετε στα αλήθεια να διαγÏάψετε την ομάδα &quot;%1&quot; μόνιμα;</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Αναζήτηση...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
</message>
<message>
<source>No current database.</source>
@@ -704,20 +1146,8 @@ Do you want to open it anyway?</source>
<translation>Δεν ΥπάÏχουν Αποτελέσματα</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Εκτέλεση εντολής;</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Θέλετε Ï€Ïαγματικά να εκτελέσετε την ακόλουθη εντολή;&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Îα θυμάσαι αυτή την επιλογή</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Αίτημα Αυτόματης ΕπαναφόÏτισης</translation>
+ <source>File has changed</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -728,8 +1158,9 @@ Do you want to open it anyway?</source>
<translation>Αίτημα Συγχώνευσης</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Η βάση δεδομένων έχει αλλάξει και έχετε μη αποθηκευμένες αλλαγές. Θέλετε να ενσωματώσετε τις αλλαγές σας;</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -745,6 +1176,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Κλείσιμο</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Γενικά</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Κωδικός</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Όνομα χÏήστη</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Συνημμένα</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Σημειώσεις</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>ΠαÏάθυÏο</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Ακολουθία</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Αναζήτηση</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -771,6 +1285,30 @@ Do you want to open it anyway?</source>
<translation>ΙστοÏικό</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Ï€ÏάκτοÏας SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Entry history</source>
<translation>ΙστοÏικό καταχωÏήσεων</translation>
</message>
@@ -791,22 +1329,20 @@ Do you want to open it anyway?</source>
<translation>Îέο χαÏακτηÏιστικό</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Επιλογή αÏχείου</translation>
+ <source>Confirm Remove</source>
+ <translation>Επιβεβαίωση ΑφαίÏεσης</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Αποτυχία ανοίγματος αÏχείου</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Είστε σίγουÏοι ότι θέλετε να αφαιÏέσετε αυτό το χαÏακτηÏιστικό.</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Αποθήκευση συνημμένου</translation>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Αποτυχία αποθήκευσης συνημμένου.
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Tomorrow</source>
@@ -825,20 +1361,16 @@ Do you want to open it anyway?</source>
<translation>1 χÏόνο</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Επιβεβαίωση ΑφαίÏεσης</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Είστε σίγουÏοι ότι θέλετε να αφαιÏέσετε αυτό το χαÏακτηÏιστικό.</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[ΠΡΟΣΤΑΤΕΥΜΕÎΟ] Πατήστε αποκάλυψη για Ï€Ïοβολή ή επεξεÏγασία</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Είστε σίγουÏοι ότι θέλετε να αφαιÏέσετε αυτό το συνημμένο;</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -856,18 +1388,6 @@ Do you want to open it anyway?</source>
<translation>ΑφαίÏεση</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Συνημμένα</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Αποθήκευση</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Άνοιγμα</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>ΕπεξεÏγασία Ονόματος</translation>
</message>
@@ -879,24 +1399,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>Αποκάλυψη</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>ΕνεÏγοποίηση Αυτόματης-ΓÏαφής για αυτήν την καταχώÏηση</translation>
+ <source>Attachments</source>
+ <translation>Συνημμένα</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Τίτλος ΠαÏαθÏÏου:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>ΕνεÏγοποίηση Αυτόματης-ΓÏαφής για αυτήν την καταχώÏηση</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -907,15 +1427,23 @@ Do you want to open it anyway?</source>
<translation>&amp;ΧÏήση Ï€ÏοσαÏμοσμένης ακολουθίας Auto-Type:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
+ <source>Window Associations</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>ΧÏήση Ï€Ïοεπιλε&amp;γμένης ακολουθίας:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Τίτλος ΠαÏαθÏÏου:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
<translation type="unfinished"/>
</message>
</context>
@@ -941,12 +1469,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Τίτλος:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Όνομα χÏήστη:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -957,20 +1481,104 @@ Do you want to open it anyway?</source>
<translation>Επαναλάβετε:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Τίτλος:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Λήγει</translation>
+ <source>Notes</source>
+ <translation>Σημειώσεις</translation>
</message>
<message>
<source>Presets</source>
<translation>ΠÏοεπιλογές</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Σημειώσεις:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Όνομα χÏήστη:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Λήγει</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>ΑντιγÏαφή στο Ï€ÏόχειÏο</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1042,6 +1650,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;ΧÏήση Ï€Ïοεπιλεγμένου εικονιδίου</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>ΧÏήση Ï€ÏοσαÏμο&amp;σμένου εικονιδίου</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>ΠÏόσθεση Ï€ÏοσαÏμοσμένου εικονιδίου</translation>
</message>
@@ -1050,6 +1666,18 @@ Do you want to open it anyway?</source>
<translation>ΔιαγÏαφή Ï€ÏοσαÏμοσμένου εικονιδίου</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Κατέβασμα favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Αδυναμία λήψης favicon.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Images</source>
<translation>Εικόνες</translation>
</message>
@@ -1062,24 +1690,12 @@ Do you want to open it anyway?</source>
<translation>Επιλογή εικόνας</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Κατέβασμα favicon</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Αδυναμία λήψης favicon.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Αδυναμία ανάγνωσης εικονιδίου</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;ΧÏήση Ï€Ïοεπιλεγμένου εικονιδίου</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>ΧÏήση Ï€ÏοσαÏμο&amp;σμένου εικονιδίου</translation>
+ <source>Custom icon already exists</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Confirm Delete</source>
@@ -1089,14 +1705,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation type="unfinished"/>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1116,15 +1724,124 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>ΑφαίÏεση</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - Κλωνοποίηση</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Όνομα</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>ΠÏόσθεση</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>ΑφαίÏεση</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Άνοιγμα</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Αποθήκευση</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Επιβεβαίωση ΑφαίÏεσης</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1153,6 +1870,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Αναφ:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Όμαδα</translation>
</message>
@@ -1169,9 +1891,67 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Αναφ:</translation>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Κωδικός</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Σημειώσεις</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Λήγει</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Συνημμένα</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1182,6 +1962,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1231,6 +2022,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>Βεβαιωθείται οτι ο κωδικός πεÏιέχει χαÏακτήÏες απο κάθε ομάδα</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1244,6 +2039,358 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Λάθος κλειδί ή βάση δεδομένων αÏχείο είναι κατεστÏαμμένο.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Δεν είναι βάση δεδομένων KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1273,6 +2420,35 @@ Do you want to open it anyway?</source>
<translation>Μη υποστηÏιζόμενη έκδοση βάσης δεδομένων KeePass.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Root</source>
<translation>Ρίζα</translation>
</message>
@@ -1284,126 +2460,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>Λάθος κλειδί ή βάση δεδομένων αÏχείο είναι κατεστÏαμμένο.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Δεν είναι βάση δεδομένων KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Μη υποστηÏιζόμενη έκδοση βάσης δεδομένων KeePass.</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Λάθος κλειδί ή το άÏχειο της βάσης δεδομένων είναι κατεστÏαμένο.</translation>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <source>Incorrect group creation time field size</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Σε θέση να υπολογίσει το κÏÏιο κλειδί</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>ΑνεπανόÏθωτο σφάλμα κατά τον έλεγχο των κÏυπτογÏαφικών λειτουÏγιών.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Σφάλμα</translation>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <source>Incorrect group level field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Μία άλλη διεÏγασία του KeePassXC ήδη Ï„Ïέχει.</translation>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Missing group id or level</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Άνοιγμα Βάσης Δεδομένων</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Ρυθμίσεις βάσης δεδομένων</translation>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>ΑντιγÏαφή όνομα χÏήστη στο Ï€ÏόχειÏο</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>ΑντιγÏαφή ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÏƒÏ„Î¿ Ï€ÏόχειÏο</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
- <translation>ΡÏθμίσεις</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Εμφάνιση γÏαμμής εÏγαλείων</translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>Μόνο για ανάγνωση</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
- <translation>Εναλλαγή παÏαθÏÏων</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Βάση Δεδομένων KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Όλα τα αÏχεία</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Αποθήκευση επιδιοÏθωμένη βάση δεδομένων</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>ΕγγÏαφή της βάσης δεδομένων απέτυχε.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Μία άλλη διεÏγασία του KeePassXC ήδη Ï„Ïέχει.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>ΑνεπανόÏθωτο σφάλμα κατά τον έλεγχο των κÏυπτογÏαφικών λειτουÏγιών.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Σφάλμα</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Βάση Δεδομένων</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;ΠÏόσφατες βάσεις δεδομένων</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Εισαγωγή</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>Ε&amp;γγÏαφές</translation>
</message>
@@ -1412,12 +2603,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"/>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Ομάδες</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;ΠÏοβολή</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;ΕÏγαλεία</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1428,6 +2623,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Σχετικά με</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Αποθήκευση βάσης δεδομένων</translation>
</message>
@@ -1468,24 +2667,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;ΔιαγÏαφή ομάδας</translation>
</message>
<message>
- <source>&amp;Database settings</source>
+ <source>Sa&amp;ve database as...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Κλωνοποίηση καταχώÏησης </translation>
+ <source>Change &amp;master key...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Timed one-time password</source>
+ <source>&amp;Database settings</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation type="unfinished"/>
+ <source>Database settings</source>
+ <translation>Ρυθμίσεις βάσης δεδομένων</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation type="unfinished"/>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Κλωνοποίηση καταχώÏησης </translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1496,14 +2695,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>ΑντιγÏαφή &amp;ονόματος χÏήστη</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>ΑντιγÏαφή όνομα χÏήστη στο Ï€ÏόχειÏο</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>ΑντιγÏα&amp;φή ÎºÏ‰Î´Î¹ÎºÎ¿Ï </translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>ΑντιγÏαφή ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÏƒÏ„Î¿ Ï€ÏόχειÏο</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Ρυθμίσεις</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>ΓεννήτÏια Κωδικών</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation type="unfinished"/>
</message>
@@ -1520,165 +2731,221 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Τίτλος</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Σημειώσεις</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>ΓεννήτÏια Κωδικών</translation>
+ <source>Copy notes to clipboard</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Clear history</source>
- <translation>ΚαθαÏισμός ιστοÏικοÏ</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Βάση Δεδομένων</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Import</source>
- <translation>Εισαγωγή</translation>
+ <source>Import CSV file...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;ΕÏγαλεία</translation>
+ <source>Re&amp;pair database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Άδειασμα κάδου ανακÏκλωσης</translation>
+ <source>E&amp;mpty recycle bin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>ΚαθαÏισμός ιστοÏικοÏ</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Σφάλματος Ï€Ïόσβασης για αÏχείο Ïυθμίσεων %1</translation>
</message>
<message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation>Μόνο για ανάγνωση</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>ΡÏθμίσεις</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>Εναλλαγή παÏαθÏÏων</translation>
+ </message>
+ <message>
<source>Quit KeePassXC</source>
<translation>Κλείσιμο KeePassXC</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>ΠαÏακαλώ αγγίξτε το κουμπί στο YubiKey σας!</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Βάση Δεδομένων KeePass 2</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation type="unfinished"/>
+ <source>All files</source>
+ <translation>Όλα τα αÏχεία</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation type="unfinished"/>
+ <source>Open database</source>
+ <translation>Άνοιγμα Βάσης Δεδομένων</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation type="unfinished"/>
+ <source>Save repaired database</source>
+ <translation>Αποθήκευση επιδιοÏθωμένη βάση δεδομένων</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
+ <source>Writing the database failed.</source>
+ <translation>ΕγγÏαφή της βάσης δεδομένων απέτυχε.</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>ΠαÏακαλώ αγγίξτε το κουμπί στο YubiKey σας!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
<message>
- <source>&amp;Export to CSV file...</source>
+ <source>Invalid key file, expecting an OpenSSH key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import KeePass 1 database...</source>
+ <source>PEM boundary mismatch</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import CSV file...</source>
+ <source>Base64 decoding failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;pair database...</source>
+ <source>Key file way too small.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Set up TOTP...</source>
+ <source>Key file magic header id invalid</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>OptionDialog</name>
<message>
- <source>Dialog</source>
- <translation>Διάλογος</translation>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>General</source>
- <translation>Γενικά</translation>
+ <source>Failed to read public key.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
+ <source>Corrupted key file, reading private key failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
+ <source>No private key payload to decrypt</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
+ <source>Trying to run KDF without cipher</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Advanced</source>
- <translation>Για Ï€ÏοχωÏημένους</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
+ <source>Key derivation failed, key file corrupted?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
+ <source>Decryption failed, wrong passphrase?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
+ <source>Unexpected EOF while reading public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP ΘÏÏα:</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>ΠÏοεπιλεγμένη θÏÏα: 19455</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
+ <source>Unexpected EOF when writing public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
+ <source>Can&apos;t write private key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>Το KeePassXC θα ακοÏει σε αυτή τη θÏÏα στο 127.0.0.1</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
+ <source>Unsupported key type: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
+ <source>Unknown cipher: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
+ <source>Cipher IV is too short for MD5 kdf</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <source>Unknown KDF: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
+ <source>Unknown key type: %1</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Διάλογος</translation>
+ </message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
<translation>Αυτό είναι απαÏαίτητο για τη Ï€Ïόσβαση στις βάσεις δεδομένων σας, από το ChromeIPass ή το PassIFox</translation>
@@ -1688,6 +2955,15 @@ Using default port 19455.</source>
<translation>ΕνεÏγοποίηση του εξυπηÏετητή KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Γενικά</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation type="unfinished"/>
</message>
@@ -1696,6 +2972,10 @@ Using default port 19455.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation type="unfinished"/>
</message>
@@ -1704,26 +2984,107 @@ Using default port 19455.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>ΓεννήτÏια Κωδικών</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Για Ï€ÏοχωÏημένους</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP ΘÏÏα:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>ΠÏοεπιλεγμένη θÏÏα: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>Το KeePassXC θα ακοÏει σε αυτή τη θÏÏα στο 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Password:</source>
<translation>Κωδικός:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>ισχÏÏ‚</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>εντÏοπία</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Κωδικός</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>ΤÏποι χαÏακτήÏων</translation>
</message>
@@ -1744,38 +3105,50 @@ Change them only if you know what you are doing.</source>
<translation>Ειδικοί χαÏακτήÏες</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>ΕξαίÏεση χαÏακτήÏων που μοίαζουν</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Αποδοχή</translation>
+ <source>Pick characters from every group</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>%p%</source>
- <translation type="unfinished"/>
+ <source>&amp;Length:</source>
+ <translation>&amp;Μήκος:</translation>
</message>
<message>
- <source>strength</source>
- <translation>ισχÏÏ‚</translation>
+ <source>Passphrase</source>
+ <translation>ΦÏάση Κλειδί</translation>
</message>
<message>
- <source>entropy</source>
- <translation>εντÏοπία</translation>
+ <source>Wordlist:</source>
+ <translation>Λίστα Λέξεων:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Μήκος:</translation>
+ <source>Word Count:</source>
+ <translation>ΑÏιθμός Λέξεων:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation type="unfinished"/>
+ <source>Word Separator:</source>
+ <translation>ΔιαχωÏιστικό Λέξεων:</translation>
</message>
<message>
<source>Generate</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Copy</source>
+ <translation>ΑντιγÏαφή</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Αποδοχή</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Κλείσιμο</translation>
</message>
@@ -1793,51 +3166,270 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Φτωχή</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>ΑδÏναμη</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Καλή</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>ΕξαιÏετική</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Κωδικός</translation>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Extended ASCII</source>
+ <source>Database hash not available</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
- <translation>ΦÏάση Κλειδί</translation>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Λίστα Λέξεων:</translation>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
- <translation>ΑÏιθμός Λέξεων:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
- <translation>ΔιαχωÏιστικό Λέξεων:</translation>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
- <translation>ΑντιγÏαφή</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>ΔιαδÏομή της βάσης δεδομένων.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Εξαγωγή και Ï„Ïπωμα των πεÏιεχομένων της βάσης δεδομένων.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>ΔιαδÏομή της βάσης δεδομένων Ï€Ïος εξαγωγή.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Όνομα εντολής Ï€Ïος εκτέλεση.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>ΠÏοβολή καταχωÏίσεων βάσης δεδομένων.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Συγχώνευση δÏο βάσεων δεδομένων.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Όνομα καταχώÏησης Ï€Ïος Ï€Ïοβολή.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation type="unfinished"/>
@@ -1861,7 +3453,27 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1881,14 +3493,22 @@ Change them only if you know what you are doing.</source>
<translation>Κωδικός</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Σημειώσεις</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Ενσωμάτωση ΠεÏιηγητή</translation>
</message>
@@ -1904,6 +3524,55 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Ï€ÏάκτοÏας SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1942,8 +3611,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation type="unfinished"/>
+ <source>Search...</source>
+ <translation>Αναζήτηση...</translation>
</message>
<message>
<source>Search</source>
@@ -1954,8 +3623,8 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Search...</source>
- <translation>Αναζήτηση...</translation>
+ <source>Case Sensitive</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1965,89 +3634,89 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
+ <source>KeePassXC: New key association request</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Do you want to update the information in %1 - %2?</source>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Αντικατάσταση Ï„Ïέχοντος κλειδιοÏ;</translation>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: ΕνημέÏωση ΚαταχώÏησης</translation>
</message>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <source>Do you want to update the information in %1 - %2?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Removing stored permissions...</source>
- <translation>ΑφαίÏεση αποθηκευμένων δικαιωμάτων...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Διακοπή</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Βάση δεδομένων κλειδωμένη!</translation>
</message>
<message>
- <source>The active database does not contain an entry with permissions.</source>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Κλειδιά αφαιÏέθηκαν από τη βάση</translation>
</message>
- <message>
- <source>You have received an association request for the above key.
-If you would like to allow it access to your KeePassXC database
-give it a unique name to identify and accept it.</source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <source>KeePassXC: Overwrite existing key?</source>
- <translation>KeePassXC: Αντικατάσταση Ï„Ïέχοντος κλειδιοÏ;</translation>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Δε βÏεθήκαν κλειδιά</translation>
</message>
<message>
- <source>KeePassXC: Update Entry</source>
- <translation>KeePassXC: ΕνημέÏωση ΚαταχώÏησης</translation>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: Database locked!</source>
- <translation>KeePassXC: Βάση δεδομένων κλειδωμένη!</translation>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Ρυθμισμένες μη διαθέσιμες!</translation>
</message>
<message>
- <source>KeePassXC: Removed keys from database</source>
- <translation>KeePassXC: Κλειδιά αφαιÏέθηκαν από τη βάση</translation>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: No keys found</source>
- <translation>KeePassXC: Δε βÏεθήκαν κλειδιά</translation>
+ <source>Removing stored permissions...</source>
+ <translation>ΑφαίÏεση αποθηκευμένων δικαιωμάτων...</translation>
</message>
<message>
- <source>KeePassXC: Settings not available!</source>
- <translation>KeePassXC: Ρυθμισμένες μη διαθέσιμες!</translation>
+ <source>Abort</source>
+ <translation>Διακοπή</translation>
</message>
<message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Δικαιώματα αφαιÏέθηκαν</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Δε βÏέθηκε καταχώÏηση με δικαιώματα!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2071,10 +3740,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Βασικές Ρυθμίσεις</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Θυμηθείτε την τελευταία βάσεις δεδομένων</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>ΦόÏτωμα Ï€ÏοηγοÏμενων βάσεων δεδομένων κατά την εκκίνηση</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Αυτόματη αποθήκευση κατα την έξοδο</translation>
</message>
@@ -2083,20 +3768,28 @@ give it a unique name to identify and accept it.</source>
<translation>Αυτόματη Αποθήκευση μετά απο κάθε αλλαγή</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Αυτόματη επαναφόÏτωση βάσης σε πεÏίπτωση εξωτεÏικής Ï„Ïοποποίησης</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Ελαχιστοποίηση οταν αντιγÏάφετε στο Ï€ÏόχειÏο</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Ελαχιστοποίηση παÏαθÏÏου κατά την εκκίνηση</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>ΧÏησιμοποίηση εικονιδίου ομάδας κατα την δημιουÏγία καταχώÏησης</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Language</source>
- <translation>Γλώσσα</translation>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2107,39 +3800,27 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>ΦόÏτωμα Ï€ÏοηγοÏμενων βάσεων δεδομένων κατά την εκκίνηση</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Αυτόματη επαναφόÏτωση βάσης σε πεÏίπτωση εξωτεÏικής Ï„Ïοποποίησης</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Ελαχιστοποίηση παÏαθÏÏου κατά την εκκίνηση</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Βασικές Ρυθμίσεις</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
+ <source>Dark system tray icon</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <source>Language</source>
+ <translation>Γλώσσα</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Αυτόματη-ΓÏαφή</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2147,26 +3828,56 @@ give it a unique name to identify and accept it.</source>
<translation>Πάντα εÏώτηση για την εκτέλεση του Auto-Type</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>ΚαθυστέÏηση Auto-Type</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Startup</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>File Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Γενικά</translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>ΕκκαθάÏιση Ï€ÏόχειÏου μετά από</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>δευτεÏόλεπτα</translation>
</message>
<message>
@@ -2174,8 +3885,12 @@ give it a unique name to identify and accept it.</source>
<translation>Κλείδωμα βάσης δεδομένων μετα απο ανενεÏγεία </translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Εμφάνιση κωδίκων σε απλό κείμενο από Ï€Ïοεπιλογή</translation>
+ <source>Convenience</source>
+ <translation>Ευκολία</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Κλείδωμα βάσεων δεδομένων κατά το κλείδωμα της συνεδÏίας ή την αναδίπλωση της οθόνης</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2186,16 +3901,16 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Εμφάνιση κωδίκων σε απλό κείμενο από Ï€Ïοεπιλογή</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Ευκολία</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Κλείδωμα βάσεων δεδομένων κατά το κλείδωμα της συνεδÏίας ή την αναδίπλωση της οθόνης</translation>
+ <source>Hide entry notes by default</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Privacy</source>
@@ -2205,6 +3920,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation>ΧÏήση Google ως εφεδÏικό Ï„Ïόπο κατεβάσματος εικονιδίων ιστοσελίδων</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2217,6 +3936,14 @@ give it a unique name to identify and accept it.</source>
<translation>Κλειδί:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>ΧÏήση Ï€ÏοσαÏμοσμένων Ïυθμίσεων</translation>
</message>
@@ -2242,6 +3969,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>δευτεÏόλεπτα</translation>
</message>
</context>
@@ -2278,10 +4006,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>ΚαλωσοÏίσατε στο KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Ξεκινήστε να αποθηκεÏετε τους κωδικοÏÏ‚ σας με ασφάλεια σε μία βάση δεδομένων KeePassXC</translation>
</message>
@@ -2305,92 +4029,48 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>ΠÏόσφατες βάσεις δεδομένων</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>διαδÏομή σε Ï€ÏοσαÏμοσμένο αÏχείο Ïυθμίσεων</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>ΑÏχείο κλειδί της βάσεως δεδομένων</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
+ <source>Remove an entry from the database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>read password of the database from stdin</source>
- <translation>Διάβασμα ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î²Î¬ÏƒÎ·Ï‚ από το stdin</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>ονόματα αÏχείων των βάσεων δεδομένων κωδικών Ï€Ïος άνοιγμα (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>ΑντιγÏαφή ενός ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÏƒÏ„Î¿ Ï€ÏόχειÏο</translation>
- </message>
- <message>
<source>Path of the database.</source>
<translation>ΔιαδÏομή της βάσης δεδομένων.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>ΧÏήση ενός γÏÎ±Ï†Î¹ÎºÎ¿Ï Ï€Î±ÏαθÏÏου διαλόγου για το ξεκλείδωμα της βάσης δεδομένων.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Όνομα καταχώÏησης Ï€Ïος αντιγÏαφή.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Εξαγωγή και Ï„Ïπωμα των πεÏιεχομένων της βάσης δεδομένων.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>ΔιαδÏομή της βάσης δεδομένων Ï€Ïος εξαγωγή.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Όνομα εντολής Ï€Ïος εκτέλεση.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>ΠÏοβολή καταχωÏίσεων βάσης δεδομένων.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
+ <source>Path of the entry to remove.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>ΕκτÏπωση των UUID των καταχωÏίσεων και των ομάδων.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Συγχώνευση δÏο βάσεων δεδομένων.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation type="unfinished"/>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>ονόματα αÏχείων των βάσεων δεδομένων κωδικών Ï€Ïος άνοιγμα (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation type="unfinished"/>
+ <source>path to a custom config file</source>
+ <translation>διαδÏομή σε Ï€ÏοσαÏμοσμένο αÏχείο Ïυθμίσεων</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>ΧÏήση το ίδιου ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÎºÎ±Î¹ για τις δÏο βάσεις δεδομένων.</translation>
+ <source>key file of the database</source>
+ <translation>ΑÏχείο κλειδί της βάσεως δεδομένων</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Εμφάνιση ενός κωδικοÏ.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>Διάβασμα ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î²Î¬ÏƒÎ·Ï‚ από το stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Όνομα καταχώÏησης Ï€Ïος Ï€Ïοβολή.</translation>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_en.ts b/share/translations/keepassx_en.ts
index 7cc9fc3c3..74d4c5325 100644
--- a/share/translations/keepassx_en.ts
+++ b/share/translations/keepassx_en.ts
@@ -12,14 +12,30 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
@@ -33,6 +49,10 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation type="unfinished"></translation>
</message>
@@ -47,33 +67,26 @@ Kernel: %3 %4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Distribution: %1</source>
+ <source>Build Type: %1
+</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation type="unfinished"></translation>
</message>
@@ -90,8 +103,11 @@ Kernel: %3 %4</source>
Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
+ <source>Enable SSH Agent (requires restart)</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -105,6 +121,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -122,13 +158,317 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"></translation>
+ </message>
<message>
- <source>Auto-Type - KeePassXC</source>
+ <source>Remember this decision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -147,6 +487,10 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
@@ -155,6 +499,14 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Key files</source>
<translation type="unfinished"></translation>
</message>
@@ -175,6 +527,10 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation type="unfinished"></translation>
</message>
@@ -188,19 +544,14 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
+ <source>Legacy key file format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Refresh</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Empty password</source>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -215,15 +566,15 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Replace username and password with references</source>
+ <source>Append &apos; - Clone&apos; to title</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Copy history</source>
+ <source>Replace username and password with references</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Append &apos; - Clone&apos; to title</source>
+ <source>Copy history</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -322,10 +673,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
@@ -336,17 +683,26 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation type="unfinished"></translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
</message>
- <message>
- <source> rows, </source>
- <translation type="unfinished"></translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
</message>
- <message>
- <source> columns</source>
- <translation type="unfinished"></translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
</message>
</context>
<context>
@@ -368,6 +724,14 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation type="unfinished"></translation>
</message>
@@ -376,23 +740,30 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>All files</source>
+ <source>Legacy key file format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Key files</source>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Select key file</source>
+ <source>Don&apos;t show this warning again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Refresh</source>
+ <source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Challenge Response:</source>
+ <source>Key files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Select key file</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -411,11 +782,11 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
+ <source>Unable to open the database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to open the database.</source>
+ <source>Database opened fine. Nothing to do.</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -435,39 +806,72 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
+ <source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Database description:</source>
+ <source>Encryption</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Transform rounds:</source>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Default username:</source>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source> MiB</source>
+ <source>Understood, keep number</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Benchmark</source>
+ <source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Max. history items:</source>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Max. history size:</source>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use recycle bin</source>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -479,91 +883,130 @@ You can now save it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Algorithm:</source>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>DatabaseTabWidget</name>
+ <name>DatabaseSettingsWidgetGeneral</name>
<message>
- <source>Root</source>
+ <source>Database Meta Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePass 2 Database</source>
+ <source>Database name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>All files</source>
+ <source>Database description:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Open database</source>
+ <source>Default username:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>File not found!</source>
+ <source>History Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
+ <source>Max. history items:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePass 1 database</source>
+ <source>Max. history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>All files (*)</source>
+ <source> MiB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Close?</source>
+ <source>Use recycle bin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Save changes?</source>
+ <source>Additional Database Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&quot;%1&quot; was modified.
-Save changes?</source>
+ <source>Enable &amp;compression (recommended)</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
<message>
- <source>Writing the database failed.</source>
+ <source>Root</source>
+ <comment>Root group</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Save database as</source>
+ <source>KeePass 2 Database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>New database</source>
+ <source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>locked</source>
+ <source>Open database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Lock database</source>
+ <source>File not found!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Can&apos;t lock the database as you are currently editing it.
-Please press cancel to finish your changes or discard them.</source>
+ <source>Unable to open the database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
+ <source>File opened in read only mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>This database has been modified.
-Do you want to save the database before locking it?
-Otherwise your changes are lost.</source>
+ <source>Open CSV file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Close?</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -572,60 +1015,74 @@ Discard changes and close anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Export database to CSV file</source>
+ <source>Save changes?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>CSV file</source>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Writing the CSV file failed.</source>
+ <source>Writing the database failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to open the database.</source>
+ <source>Passwords</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Merge database</source>
+ <source>Save database as</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
+ <source>Export database to CSV file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Passwords</source>
+ <source>Writing the CSV file failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Database already opened</source>
+ <source>New database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
+ <source>locked</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Open read-only</source>
+ <source>Lock database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>File opened in read only mode.</source>
+ <source>Can&apos;t lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Open CSV file</source>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation type="unfinished"></translation>
</message>
@@ -646,6 +1103,14 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
@@ -657,27 +1122,27 @@ Do you want to open it anyway?</source>
</translation>
</message>
<message>
- <source>Delete group?</source>
+ <source>Execute command?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to calculate master key</source>
+ <source>Remember my choice</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
+ <source>Delete group?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Searching...</source>
+ <source>Unable to calculate master key</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -697,43 +1162,115 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Execute command?</source>
+ <source>File has changed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <source>The database file has changed. Do you want to load the changes?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Remember my choice</source>
+ <source>Merge Request</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Autoreload Request</source>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The database file has changed. Do you want to load the changes?</source>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Merge Request</source>
+ <source>Empty recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>DetailsWidget</name>
<message>
- <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <source>Generate TOTP Token</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Empty recycle bin?</source>
+ <source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enabled</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -764,6 +1301,30 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation type="unfinished"></translation>
</message>
@@ -784,20 +1345,19 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Select file</source>
+ <source>Confirm Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to open file</source>
+ <source>Are you sure you want to remove this attribute?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Save attachment</source>
+ <source>[PROTECTED]</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
+ <source>Press reveal to view or edit</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -823,19 +1383,15 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
+ <source>Apply generated password?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
+ <source>Do you want to apply the generated password to this entry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
+ <source>Entry updated successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -854,27 +1410,27 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Attachments</source>
+ <source>Edit Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Save</source>
+ <source>Protect</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Open</source>
+ <source>Reveal</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Edit Name</source>
+ <source>Attachments</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Protect</source>
+ <source>Foreground Color:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Reveal</source>
+ <source>Background Color:</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -885,35 +1441,31 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>+</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>-</source>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Window title:</source>
+ <source>&amp;Use custom Auto-Type sequence:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <source>Window Associations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Use custom Auto-Type sequence:</source>
+ <source>+</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
+ <source>-</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
+ <source>Window title:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Window Associations</source>
+ <source>Use a specific sequence for this association:</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -939,35 +1491,115 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
+ <source>URL:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Title:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Username:</source>
+ <source>Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Password:</source>
+ <source>Presets</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Repeat:</source>
+ <source>Toggle the checkbox to reveal the notes section.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>URL:</source>
+ <source>Username:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Expires</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
<message>
- <source>Presets</source>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Notes:</source>
+ <source>Require user confirmation when this key is used</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1040,59 +1672,59 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
- <source>Add custom icon</source>
+ <source>&amp;Use default icon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Delete custom icon</source>
+ <source>Use custo&amp;m icon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Images</source>
+ <source>Add custom icon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>All files</source>
+ <source>Delete custom icon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Select Image</source>
+ <source>Download favicon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Download favicon</source>
+ <source>Unable to fetch favicon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to fetch favicon.</source>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Can&apos;t read icon</source>
+ <source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Use default icon</source>
+ <source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use custo&amp;m icon</source>
+ <source>Select Image</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Confirm Delete</source>
+ <source>Can&apos;t read icon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <source>Custom icon already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <source>Confirm Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Custom icon already exists</source>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1114,11 +1746,123 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1151,6 +1895,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
@@ -1167,8 +1916,66 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
+ <source>Never</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1180,6 +1987,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1229,6 +2047,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1242,36 +2064,163 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
- <name>KeePass1OpenWidget</name>
+ <name>Kdbx3Reader</name>
<message>
- <source>Import KeePass1 database</source>
+ <source>Unable to calculate master key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to open the database.</source>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>KeePass1Reader</name>
+ <name>Kdbx3Writer</name>
<message>
- <source>Unable to read keyfile.</source>
+ <source>Unable to issue challenge-response.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Not a KeePass database.</source>
+ <source>Unable to calculate master key</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
<message>
- <source>Unsupported encryption algorithm.</source>
+ <source>missing database headers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
+ <source>Unable to calculate master key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Root</source>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1279,30 +2228,55 @@ Do you want to open it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>KeePass2Reader</name>
+ <name>KdbxReader</name>
<message>
- <source>Not a KeePass database.</source>
+ <source>Invalid cipher uuid length</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
+ <source>Unsupported cipher</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
+ <source>Invalid compression flags length</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to calculate master key</source>
+ <source>Unsupported compression algorithm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1312,89 +2286,325 @@ You can import it by clicking on Database &gt; &apos;Import KeePass 1 database..
This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
- <name>KeePass2Writer</name>
+ <name>KdbxXmlReader</name>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>XML parsing failure: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unable to calculate master key</source>
+ <source>No root group</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
+ <source>Missing icon uuid or data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC - Error</source>
+ <source>Missing custom data key or value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <source>Multiple group elements</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
+ <source>Null group uuid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>MainWindow</name>
+ <name>KeePass1OpenWidget</name>
<message>
- <source>Open database</source>
+ <source>Import KeePass1 database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Database settings</source>
+ <source>Unable to open the database.</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
<message>
- <source>Copy username to clipboard</source>
+ <source>Unable to read keyfile.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Copy password to clipboard</source>
+ <source>Not a KeePass database.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Settings</source>
+ <source>Unsupported encryption algorithm.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Show toolbar</source>
+ <source>Unsupported KeePass database version.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>read-only</source>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Toggle window</source>
+ <source>Invalid number of groups</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePass 2 Database</source>
+ <source>Invalid number of entries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>All files</source>
+ <source>Invalid content hash size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Save repaired database</source>
+ <source>Invalid transform seed size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Writing the database failed.</source>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1402,6 +2612,14 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Import</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation type="unfinished"></translation>
</message>
@@ -1410,11 +2628,15 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;View</source>
+ <source>&amp;Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1426,6 +2648,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"></translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation type="unfinished"></translation>
</message>
@@ -1466,23 +2692,23 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Database settings</source>
+ <source>Sa&amp;ve database as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Clone entry</source>
+ <source>Change &amp;master key...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Timed one-time password</source>
+ <source>&amp;Database settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
+ <source>Database settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Show TOTP</source>
+ <source>&amp;Clone entry</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1494,14 +2720,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation type="unfinished"></translation>
</message>
@@ -1518,35 +2756,59 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Password Generator</source>
+ <source>Copy notes to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear history</source>
+ <source>&amp;Export to CSV file...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Database</source>
+ <source>Import KeePass 1 database...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Import</source>
+ <source>Import CSV file...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Tools</source>
+ <source>Re&amp;pair database...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Empty recycle bin</source>
+ <source>E&amp;mpty recycle bin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Clear history</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1554,127 +2816,159 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"></translation>
</message>
<message>
- <source>Quit KeePassXC</source>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
+ <source>read-only</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Help</source>
+ <source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Open database...</source>
+ <source>Toggle window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
+ <source>Quit KeePassXC</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Change &amp;master key...</source>
+ <source>KeePass 2 Database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
+ <source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
+ <source>Open database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Import CSV file...</source>
+ <source>Save repaired database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
+ <source>Writing the database failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Set up TOTP...</source>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
+ <source>Invalid key file, expecting an OpenSSH key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>General</source>
+ <source>PEM boundary mismatch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
+ <source>Base64 decoding failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
+ <source>Key file way too small.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
+ <source>Key file magic header id invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Advanced</source>
+ <source>Found zero keys</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
+ <source>Failed to read public key.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
+ <source>Corrupted key file, reading private key failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
+ <source>No private key payload to decrypt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>HTTP Port:</source>
+ <source>Trying to run KDF without cipher</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Default port: 19455</source>
+ <source>Passphrase is required to decrypt this key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
+ <source>Key derivation failed, key file corrupted?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
+ <source>Decryption failed, wrong passphrase?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <source>Unexpected EOF while reading public key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
+ <source>Unexpected EOF while reading private key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
+ <source>Can&apos;t write public key as it is empty</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
+ <source>Unexpected EOF when writing public key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <source>Can&apos;t write private key as it is empty</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1686,6 +2980,15 @@ Using default port 19455.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation type="unfinished"></translation>
</message>
@@ -1694,6 +2997,10 @@ Using default port 19455.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation type="unfinished"></translation>
</message>
@@ -1702,26 +3009,107 @@ Using default port 19455.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Password:</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation type="unfinished"></translation>
</message>
@@ -1742,31 +3130,35 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Accept</source>
+ <source>Pick characters from every group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>%p%</source>
+ <source>&amp;Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>strength</source>
+ <source>Passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>entropy</source>
+ <source>Wordlist:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Length:</source>
+ <source>Word Count:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Pick characters from every group</source>
+ <source>Word Separator:</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1774,6 +3166,14 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@@ -1791,51 +3191,270 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
+ <source>Database not opened</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Extended ASCII</source>
+ <source>Database hash not available</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Passphrase</source>
+ <source>Client public key not received</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Wordlist:</source>
+ <source>Cannot decrypt message</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Word Count:</source>
+ <source>Timeout or cannot connect to KeePassXC</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Word Separator:</source>
+ <source>Action cancelled or denied</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Copy</source>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation type="unfinished"></translation>
@@ -1858,7 +3477,27 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1878,11 +3517,19 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>URL</source>
+ <source>Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Notes</source>
+ <source>Last Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1901,6 +3548,55 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1939,7 +3635,7 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
+ <source>Search...</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1951,7 +3647,7 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Search...</source>
+ <source>Case Sensitive</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1962,87 +3658,93 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
+ <source>KeePassXC: New key association request</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Do you want to update the information in %1 - %2?</source>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
+ <source>KeePassXC: Overwrite existing key?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <source>KeePassXC: Update Entry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <source>Do you want to update the information in %1 - %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Removing stored permissions...</source>
+ <source>KeePassXC: Database locked!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Abort</source>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
+ <source>KeePassXC: Removed keys from database</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation type="unfinished"></translation>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
</message>
<message>
- <source>KeePassXC: New key association request</source>
+ <source>KeePassXC: No keys found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>You have received an association request for the above key.
-If you would like to allow it access to your KeePassXC database
-give it a unique name to identify and accept it.</source>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC: Overwrite existing key?</source>
+ <source>KeePassXC: Settings not available!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC: Update Entry</source>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC: Database locked!</source>
+ <source>Removing stored permissions...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC: Removed keys from database</source>
+ <source>Abort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC: No keys found</source>
+ <source>KeePassXC: Removed permissions</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>KeePassXC: Settings not available!</source>
- <translation type="unfinished"></translation>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
</message>
<message>
- <source>KeePassXC: Removed permissions</source>
+ <source>KeePassXC: No entry with permissions found!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>KeePassXC: No entry with permissions found!</source>
+ <source>The active database does not contain an entry with permissions.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -2068,10 +3770,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation type="unfinished"></translation>
</message>
@@ -2080,19 +3798,27 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Language</source>
+ <source>Hide the Details view</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2104,66 +3830,84 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Load previous databases on startup</source>
+ <source>Hide window to system tray instead of app exit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Automatically reload the database when modified externally</source>
+ <source>Dark system tray icon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Hide window to system tray instead of app exit</source>
+ <source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Minimize window at application startup</source>
+ <source>Auto-Type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Basic Settings</source>
+ <source>Use entry title to match windows for global Auto-Type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Remember last key files and security dongles</source>
+ <source>Use entry URL to match windows for global Auto-Type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <source>Always ask before performing Auto-Type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Auto-Type</source>
+ <source>Global Auto-Type shortcut</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
+ <source>Auto-Type delay</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Auto-Type delay</source>
+ <source>Startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source> ms</source>
+ <source>File Management</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2171,7 +3915,11 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
+ <source>Convenience</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2183,15 +3931,15 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Timeouts</source>
+ <source>Show passwords in cleartext by default</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Convenience</source>
+ <source>Hide passwords in the preview panel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
+ <source>Hide entry notes by default</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2202,6 +3950,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2214,6 +3966,14 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation type="unfinished"></translation>
</message>
@@ -2239,6 +3999,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation type="unfinished"></translation>
</message>
</context>
@@ -2275,10 +4036,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation type="unfinished"></translation>
</message>
@@ -2302,31 +4059,15 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>main</name>
- <message>
- <source>path to a custom config file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation type="unfinished"></translation>
- </message>
<message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
+ <source>Welcome to KeePassXC %1</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>main</name>
<message>
- <source>Copy a password to the clipboard</source>
+ <source>Remove an entry from the database.</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2334,59 +4075,31 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
+ <source>Path of the entry to remove.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Merge two databases.</source>
+ <source>KeePassXC - cross-platform password manager</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
+ <source>filenames of the password databases to open (*.kdbx)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
+ <source>path to a custom config file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
+ <source>key file of the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Show a password.</source>
+ <source>read password of the database from stdin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Name of the entry to show.</source>
+ <source>Parent window handle</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/share/translations/keepassx_en_US.ts b/share/translations/keepassx_en_US.ts
new file mode 100644
index 000000000..fadc52902
--- /dev/null
+++ b/share/translations/keepassx_en_US.ts
@@ -0,0 +1,4120 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="en_US" version="2.1">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <source>About KeePassXC</source>
+ <translation>About KeePassXC</translation>
+ </message>
+ <message>
+ <source>About</source>
+ <translation>About</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</translation>
+ </message>
+ <message>
+ <source>Contributors</source>
+ <translation>Contributors</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Debug Info</source>
+ <translation>Debug Info</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Include the following information whenever you report a bug:</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copy to clipboard</translation>
+ </message>
+ <message>
+ <source>Version %1
+</source>
+ <translation>Version %1
+</translation>
+ </message>
+ <message>
+ <source>Revision: %1</source>
+ <translation>Revision: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Distribution: %1</translation>
+ </message>
+ <message>
+ <source>Libraries:</source>
+ <translation>Libraries:</translation>
+ </message>
+ <message>
+ <source>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</source>
+ <translation>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</translation>
+ </message>
+ <message>
+ <source>Enabled extensions:</source>
+ <translation>Enabled extensions:</translation>
+ </message>
+ <message>
+ <source>Project Maintainers:</source>
+ <translation>Project Maintainers:</translation>
+ </message>
+ <message>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</translation>
+ </message>
+ <message>
+ <source>Build Type: %1
+</source>
+ <translation>Build Type: %1
+</translation>
+ </message>
+</context>
+<context>
+ <name>AccessControlDialog</name>
+ <message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Confirm Access</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Remember this decision</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Allow</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Deny</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</translation>
+ </message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
+ <message>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Enable SSH Agent (requires restart)</translation>
+ </message>
+</context>
+<context>
+ <name>AutoType</name>
+ <message>
+ <source>Couldn&apos;t find an entry that matches the window title:</source>
+ <translation>Couldn&apos;t find an entry that matches the window title:</translation>
+ </message>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>The Syntax of your Auto-Type statement is incorrect!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>This Auto-Type command contains a very long delay. Do you really want to proceed?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>This Auto-Type command contains very slow key presses. Do you really want to proceed?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeAssociationsModel</name>
+ <message>
+ <source>Window</source>
+ <translation>Window</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequence</translation>
+ </message>
+ <message>
+ <source>Default sequence</source>
+ <translation>Default sequence</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequence</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation>Select entry to Auto-Type:</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser Confirm Access</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Remember this decision</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Allow</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Deny</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>This is required for accessing your databases with KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Enable KeepassXC browser integration</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Enable integration for these browsers:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Show a &amp;notification when credentials are requested</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Re&amp;quest to unlock the database if it is locked</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Only entries with the same scheme (http://, https://, ...) are returned.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Match URL scheme (e.g., https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Only returns the best matches for a specific URL instead of all entries for the whole domain.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Return only best-matching credentials</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sort &amp;matching credentials by title</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sort matching credentials by &amp;username</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Disconnect all browsers</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Forget all remembered &amp;permissions</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Advanced</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Never &amp;ask before accessing credentials</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Never ask before &amp;updating credentials</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Only the selected database has to be connected with a client.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Searc&amp;h in all opened databases for matching credentials</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatically creating or updating string fields is not supported.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Return advanced string fields which start with &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Update &amp;native messaging manifest files at startup</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Support a proxy application between KeePassXC and browser extension.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Use a &amp;proxy application between KeePassXC and browser extension</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Use a custom proxy location if you installed a proxy manually.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Use a &amp;custom proxy location</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Browse...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Executable Files (*.exe);;All Files (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Executable Files (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Select custom proxy location</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: New key association request</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Save and allow access</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Overwrite existing key?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Update Entry</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Do you want to update the information in %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database locked!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Settings not available!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>The active database does not contain a settings entry.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: No keys found</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>No shared encryption keys found in KeePassXC Settings.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Removed keys from database</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Successfully removed %n encryption key from KeePassXC settings.</numerusform><numerusform>Successfully removed %n encryption keys from KeePassXC settings.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Removing stored permissions…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abort</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Removed permissions</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Successfully removed permissions from %n entry.</numerusform><numerusform>Successfully removed permissions from %n entries.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: No entry with permissions found!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>The active database does not contain an entry with permissions.</translation>
+ </message>
+</context>
+<context>
+ <name>ChangeMasterKeyWidget</name>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Enter password:</source>
+ <translation>Enter password:</translation>
+ </message>
+ <message>
+ <source>Repeat password:</source>
+ <translation>Repeat password:</translation>
+ </message>
+ <message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Key file</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Browse</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>Create</translation>
+ </message>
+ <message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Cha&amp;llenge Response</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Refresh</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Key files</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Create Key File...</source>
+ <translation>Create Key File...</translation>
+ </message>
+ <message>
+ <source>Unable to create Key File : </source>
+ <translation>Unable to create Key File : </translation>
+ </message>
+ <message>
+ <source>Select a key file</source>
+ <translation>Select a key file</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>Empty password</translation>
+ </message>
+ <message>
+ <source>Do you really want to use an empty string as password?</source>
+ <translation>Do you really want to use an empty string as password?</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Different passwords supplied.</translation>
+ </message>
+ <message>
+ <source>Failed to set %1 as the Key file:
+%2</source>
+ <translation>Failed to set %1 as the Key file:
+%2</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>Legacy key file format</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</translation>
+ </message>
+ <message>
+ <source>Changing master key failed: no YubiKey inserted.</source>
+ <translation>Changing master key failed: no YubiKey inserted.</translation>
+ </message>
+</context>
+<context>
+ <name>CloneDialog</name>
+ <message>
+ <source>Clone Options</source>
+ <translation>Clone Options</translation>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Append &apos; - Clone&apos; to title</translation>
+ </message>
+ <message>
+ <source>Replace username and password with references</source>
+ <translation>Replace username and password with references</translation>
+ </message>
+ <message>
+ <source>Copy history</source>
+ <translation>Copy history</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWidget</name>
+ <message>
+ <source>Import CSV fields</source>
+ <translation>Import CSV fields</translation>
+ </message>
+ <message>
+ <source>filename</source>
+ <translation>filename</translation>
+ </message>
+ <message>
+ <source>size, rows, columns</source>
+ <translation>size, rows, columns</translation>
+ </message>
+ <message>
+ <source>Encoding</source>
+ <translation>Encoding</translation>
+ </message>
+ <message>
+ <source>Codec</source>
+ <translation>Codec</translation>
+ </message>
+ <message>
+ <source>Text is qualified by</source>
+ <translation>Text is qualified by</translation>
+ </message>
+ <message>
+ <source>Fields are separated by</source>
+ <translation>Fields are separated by</translation>
+ </message>
+ <message>
+ <source>Comments start with</source>
+ <translation>Comments start with</translation>
+ </message>
+ <message>
+ <source>First record has field names</source>
+ <translation>First record has field names</translation>
+ </message>
+ <message>
+ <source>Number of headers line to discard</source>
+ <translation>Number of headers line to discard</translation>
+ </message>
+ <message>
+ <source>Consider &apos;\&apos; an escape character</source>
+ <translation>Consider &apos;\&apos; an escape character</translation>
+ </message>
+ <message>
+ <source>Preview</source>
+ <translation>Preview</translation>
+ </message>
+ <message>
+ <source>Column layout</source>
+ <translation>Column layout</translation>
+ </message>
+ <message>
+ <source>Not present in CSV file</source>
+ <translation>Not present in CSV file</translation>
+ </message>
+ <message>
+ <source>Empty fieldname </source>
+ <translation>Empty fieldname </translation>
+ </message>
+ <message>
+ <source>column </source>
+ <translation>column </translation>
+ </message>
+ <message>
+ <source>Imported from CSV file</source>
+ <translation>Imported from CSV file</translation>
+ </message>
+ <message>
+ <source>Original data: </source>
+ <translation>Original data: </translation>
+ </message>
+ <message>
+ <source>Error(s) detected in CSV file !</source>
+ <translation>Error(s) detected in CSV file !</translation>
+ </message>
+ <message>
+ <source> more messages skipped]</source>
+ <translation> more messages skipped]</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <source>CSV import: writer has errors:
+</source>
+ <translation>CSV import: writer has errors:
+</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWizard</name>
+ <message>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+</context>
+<context>
+ <name>CsvParserModel</name>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n byte, </numerusform><numerusform>%n bytes, </numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n row, </numerusform><numerusform>%n rows, </numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n column</numerusform><numerusform>%n columns</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseOpenWidget</name>
+ <message>
+ <source>Enter master key</source>
+ <translation>Enter master key</translation>
+ </message>
+ <message>
+ <source>Key File:</source>
+ <translation>Key File:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Password:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Browse</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Refresh</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Challenge Response:</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Can&apos;t open key file</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>Legacy key file format</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Don&apos;t show this warning again</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Key files</translation>
+ </message>
+ <message>
+ <source>Select key file</source>
+ <translation>Select key file</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseRepairWidget</name>
+ <message>
+ <source>Repair database</source>
+ <translation>Repair database</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Can&apos;t open key file</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+ <message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Database opened fine. Nothing to do.</translation>
+ </message>
+ <message>
+ <source>Success</source>
+ <translation>Success</translation>
+ </message>
+ <message>
+ <source>The database has been successfully repaired
+You can now save it.</source>
+ <translation>The database has been successfully repaired
+You can now save it.</translation>
+ </message>
+ <message>
+ <source>Unable to repair the database.</source>
+ <translation>Unable to repair the database.</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidget</name>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>Encryption</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Number of rounds too high</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Understood, keep number</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Number of rounds too low</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF unchanged</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Failed to transform key with new KDF parameters; KDF unchanged.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform> thread</numerusform><numerusform> threads</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Encryption Algorithm:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (default)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Key Derivation Function:</translation>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>Transform rounds:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation>Benchmark 1-second delay</translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>Memory Usage:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Parallelism:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Database Meta Data</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Database name:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Database description:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Default username:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>History Settings</translation>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation>Max. history items:</translation>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation>Max. history size:</translation>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation> MiB</translation>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>Use recycle bin</translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation>Additional Database Settings</translation>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Enable &amp;compression (recommended)</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
+ <message>
+ <source>Root</source>
+ <comment>Root group</comment>
+ <translation>Root</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Database</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Open database</translation>
+ </message>
+ <message>
+ <source>File not found!</source>
+ <translation>File not found!</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+ <message>
+ <source>File opened in read only mode.</source>
+ <translation>File opened in read only mode.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Open CSV file</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV file</translation>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation>All files (*)</translation>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation>Merge database</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Open KeePass 1 database</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 database</translation>
+ </message>
+ <message>
+ <source>Close?</source>
+ <translation>Close?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</translation>
+ </message>
+ <message>
+ <source>Save changes?</source>
+ <translation>Save changes?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
+ <translation>&quot;%1&quot; was modified.
+Save changes?</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Writing the database failed.</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>Passwords</translation>
+ </message>
+ <message>
+ <source>Save database as</source>
+ <translation>Save database as</translation>
+ </message>
+ <message>
+ <source>Export database to CSV file</source>
+ <translation>Export database to CSV file</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Writing the CSV file failed.</translation>
+ </message>
+ <message>
+ <source>New database</source>
+ <translation>New database</translation>
+ </message>
+ <message>
+ <source>locked</source>
+ <translation>locked</translation>
+ </message>
+ <message>
+ <source>Lock database</source>
+ <translation>Lock database</translation>
+ </message>
+ <message>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
+ <translation>Can&apos;t lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</translation>
+ </message>
+ <message>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</translation>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation>Disable safe saves?</translation>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseWidget</name>
+ <message>
+ <source>Searching...</source>
+ <translation>Searching...</translation>
+ </message>
+ <message>
+ <source>Change master key</source>
+ <translation>Change master key</translation>
+ </message>
+ <message>
+ <source>Delete entry?</source>
+ <translation>Delete entry?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
+ <translation>Do you really want to delete the entry &quot;%1&quot; for good?</translation>
+ </message>
+ <message>
+ <source>Delete entries?</source>
+ <translation>Delete entries?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete %1 entries for good?</source>
+ <translation>Do you really want to delete %1 entries for good?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Move entry to recycle bin?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Do you really want to move entry &quot;%1&quot; to the recycle bin?</translation>
+ </message>
+ <message>
+ <source>Move entries to recycle bin?</source>
+ <translation>Move entries to recycle bin?</translation>
+ </message>
+ <message numerus="yes">
+ <source>Do you really want to move %n entry(s) to the recycle bin?</source>
+ <translation><numerusform>Do you really want to move %n entry(s) to the recycle bin?</numerusform><numerusform>Do you really want to move %n entry(s) to the recycle bin?</numerusform></translation>
+ </message>
+ <message>
+ <source>Execute command?</source>
+ <translation>Execute command?</translation>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>Remember my choice</translation>
+ </message>
+ <message>
+ <source>Delete group?</source>
+ <translation>Delete group?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Do you really want to delete the group &quot;%1&quot; for good?</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>No current database.</source>
+ <translation>No current database.</translation>
+ </message>
+ <message>
+ <source>No source database, nothing to do.</source>
+ <translation>No source database, nothing to do.</translation>
+ </message>
+ <message>
+ <source>Search Results (%1)</source>
+ <translation>Search Results (%1)</translation>
+ </message>
+ <message>
+ <source>No Results</source>
+ <translation>No Results</translation>
+ </message>
+ <message>
+ <source>File has changed</source>
+ <translation>File has changed</translation>
+ </message>
+ <message>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation>The database file has changed. Do you want to load the changes?</translation>
+ </message>
+ <message>
+ <source>Merge Request</source>
+ <translation>Merge Request</translation>
+ </message>
+ <message>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</translation>
+ </message>
+ <message>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <translation>Could not open the new database file while attempting to autoreload this database.</translation>
+ </message>
+ <message>
+ <source>Empty recycle bin?</source>
+ <translation>Empty recycle bin?</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <translation>Are you sure you want to permanently delete everything from your recycle bin?</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Generate TOTP Token</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Close</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Expiration</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Searching</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Attributes</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Attachments</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Window</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequence</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Search</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Clear</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Never</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTECTED]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Disabled</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Enabled</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidget</name>
+ <message>
+ <source>Entry</source>
+ <translation>Entry</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Advanced</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>Icon</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>Properties</translation>
+ </message>
+ <message>
+ <source>History</source>
+ <translation>History</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(encrypted)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Select private key</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>File too large to be a private key</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Failed to open private key</translation>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation>Entry history</translation>
+ </message>
+ <message>
+ <source>Add entry</source>
+ <translation>Add entry</translation>
+ </message>
+ <message>
+ <source>Edit entry</source>
+ <translation>Edit entry</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Different passwords supplied.</translation>
+ </message>
+ <message>
+ <source>New attribute</source>
+ <translation>New attribute</translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirm Remove</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Are you sure you want to remove this attribute?</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTECTED]</translation>
+ </message>
+ <message>
+ <source>Press reveal to view or edit</source>
+ <translation>Press reveal to view or edit</translation>
+ </message>
+ <message>
+ <source>Tomorrow</source>
+ <translation>Tomorrow</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation><numerusform>%n week(s)</numerusform><numerusform>%n week(s)</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n month(s)</source>
+ <translation><numerusform>%n month(s)</numerusform><numerusform>%n month(s)</numerusform></translation>
+ </message>
+ <message>
+ <source>1 year</source>
+ <translation>1 year</translation>
+ </message>
+ <message>
+ <source>Apply generated password?</source>
+ <translation>Apply generated password?</translation>
+ </message>
+ <message>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Do you want to apply the generated password to this entry?</translation>
+ </message>
+ <message>
+ <source>Entry updated successfully.</source>
+ <translation>Entry updated successfully.</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAdvanced</name>
+ <message>
+ <source>Additional attributes</source>
+ <translation>Additional attributes</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Add</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>Edit Name</source>
+ <translation>Edit Name</translation>
+ </message>
+ <message>
+ <source>Protect</source>
+ <translation>Protect</translation>
+ </message>
+ <message>
+ <source>Reveal</source>
+ <translation>Reveal</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Attachments</translation>
+ </message>
+ <message>
+ <source>Foreground Color:</source>
+ <translation>Foreground Color:</translation>
+ </message>
+ <message>
+ <source>Background Color:</source>
+ <translation>Background Color:</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
+ <message>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Enable Auto-Type for this entry</translation>
+ </message>
+ <message>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <translation>Inherit default Auto-Type sequence from the &amp;group</translation>
+ </message>
+ <message>
+ <source>&amp;Use custom Auto-Type sequence:</source>
+ <translation>&amp;Use custom Auto-Type sequence:</translation>
+ </message>
+ <message>
+ <source>Window Associations</source>
+ <translation>Window Associations</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Window title:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Use a specific sequence for this association:</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetHistory</name>
+ <message>
+ <source>Show</source>
+ <translation>Show</translation>
+ </message>
+ <message>
+ <source>Restore</source>
+ <translation>Restore</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+ <source>Delete all</source>
+ <translation>Delete all</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetMain</name>
+ <message>
+ <source>URL:</source>
+ <translation>URL:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Password:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>Repeat:</translation>
+ </message>
+ <message>
+ <source>Title:</source>
+ <translation>Title:</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation>Presets</translation>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Toggle the checkbox to reveal the notes section.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Username:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expires</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Remove key from agent after</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> seconds</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Fingerprint</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Remove key from agent when database is closed/locked</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Public key</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Add key to agent when database is opened/unlocked</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Comment</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Decrypt</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copy to clipboard</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Private key</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>External file</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Browse...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Attachment</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Add to agent</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Remove from agent</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Require user confirmation when this key is used</translation>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidget</name>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>Icon</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>Properties</translation>
+ </message>
+ <message>
+ <source>Add group</source>
+ <translation>Add group</translation>
+ </message>
+ <message>
+ <source>Edit group</source>
+ <translation>Edit group</translation>
+ </message>
+ <message>
+ <source>Enable</source>
+ <translation>Enable</translation>
+ </message>
+ <message>
+ <source>Disable</source>
+ <translation>Disable</translation>
+ </message>
+ <message>
+ <source>Inherit from parent group (%1)</source>
+ <translation>Inherit from parent group (%1)</translation>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidgetMain</name>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expires</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Search</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>&amp;Use default Auto-Type sequence of parent group</source>
+ <translation>&amp;Use default Auto-Type sequence of parent group</translation>
+ </message>
+ <message>
+ <source>Set default Auto-Type se&amp;quence</source>
+ <translation>Set default Auto-Type se&amp;quence</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetIcons</name>
+ <message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Use default icon</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Use custo&amp;m icon</translation>
+ </message>
+ <message>
+ <source>Add custom icon</source>
+ <translation>Add custom icon</translation>
+ </message>
+ <message>
+ <source>Delete custom icon</source>
+ <translation>Delete custom icon</translation>
+ </message>
+ <message>
+ <source>Download favicon</source>
+ <translation>Download favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Unable to fetch favicon.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</translation>
+ </message>
+ <message>
+ <source>Images</source>
+ <translation>Images</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Select Image</source>
+ <translation>Select Image</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
+ <translation>Can&apos;t read icon</translation>
+ </message>
+ <message>
+ <source>Custom icon already exists</source>
+ <translation>Custom icon already exists</translation>
+ </message>
+ <message>
+ <source>Confirm Delete</source>
+ <translation>Confirm Delete</translation>
+ </message>
+ <message>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <translation>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetProperties</name>
+ <message>
+ <source>Created:</source>
+ <translation>Created:</translation>
+ </message>
+ <message>
+ <source>Modified:</source>
+ <translation>Modified:</translation>
+ </message>
+ <message>
+ <source>Accessed:</source>
+ <translation>Accessed:</translation>
+ </message>
+ <message>
+ <source>Uuid:</source>
+ <translation>Uuid:</translation>
+ </message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Plugin Data</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Delete plugin data?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Key</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Value</translation>
+ </message>
+</context>
+<context>
+ <name>Entry</name>
+ <message>
+ <source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - Clone</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Size</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Add</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Open</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Save</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Select files</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Are you sure you want to remove %n attachments?</numerusform><numerusform>Are you sure you want to remove %n attachments?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirm Remove</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Save attachments</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Unable to create directory:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confirm overwrite</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Unable to save attachments:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Unable to open attachment:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Unable to open attachments:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Unable to open files:
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttributesModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+</context>
+<context>
+ <name>EntryHistoryModel</name>
+ <message>
+ <source>Last modified</source>
+ <translation>Last modified</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+</context>
+<context>
+ <name>EntryModel</name>
+ <message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref: </translation>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Never</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expires</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Created</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Modified</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Accessed</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Attachments</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Customize View</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Hide Usernames</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Hide Passwords</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Fit to window</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Fit to contents</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Reset to defaults</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Attachments (icon)</translation>
+ </message>
+</context>
+<context>
+ <name>Group</name>
+ <message>
+ <source>Recycle Bin</source>
+ <translation>Recycle Bin</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Cannot save file!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Cannot save the native messaging script file.</translation>
+ </message>
+</context>
+<context>
+ <name>HttpPasswordGeneratorWidget</name>
+ <message>
+ <source>Length:</source>
+ <translation>Length:</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Character Types</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>Upper Case Letters</translation>
+ </message>
+ <message>
+ <source>A-Z</source>
+ <translation>A-Z</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>Lower Case Letters</translation>
+ </message>
+ <message>
+ <source>a-z</source>
+ <translation>a-z</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>Numbers</translation>
+ </message>
+ <message>
+ <source>0-9</source>
+ <translation>0-9</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>Special Characters</translation>
+ </message>
+ <message>
+ <source>/*_&amp; ...</source>
+ <translation>/*_&amp; ...</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>Exclude look-alike characters</translation>
+ </message>
+ <message>
+ <source>Ensure that the password contains characters from every group</source>
+ <translation>Ensure that the password contains characters from every group</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Extended ASCII</translation>
+ </message>
+</context>
+<context>
+ <name>KMessageWidget</name>
+ <message>
+ <source>&amp;Close</source>
+ <translation>&amp;Close</translation>
+ </message>
+ <message>
+ <source>Close message</source>
+ <translation>Close message</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Unable to issue challenge-response.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Wrong key or database file is corrupt.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Unable to issue challenge-response.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>missing database headers</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Invalid header checksum size</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Header SHA256 mismatch</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Wrong key or database file is corrupt. (HMAC mismatch)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Unknown cipher</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Invalid header id size</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Invalid header field length</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Invalid header data length</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Failed to open buffer for KDF parameters in header</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Unsupported key derivation function (KDF) or invalid parameters</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Legacy header fields found in KDBX4 file.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Invalid inner header id size</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Invalid inner header field length</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Invalid inner header binary size</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Unsupported KeePass variant map version.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map entry name length</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map entry name data</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map entry value length</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map entry value data</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map Bool entry value length</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map Int32 entry value length</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map UInt32 entry value length</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map Int64 entry value length</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map UInt64 entry value length</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map entry type</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Invalid variant map field type size</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Invalid symmetric cipher algorithm.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Invalid symmetric cipher IV size.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Failed to serialize KDF parameters variant map</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Invalid cipher UUID length</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Unsupported cipher</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Invalid compression flags length</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Unsupported compression algorithm</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Invalid master seed size</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Invalid transform seed size</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Invalid transform rounds size</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Invalid start bytes size</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Invalid random stream id size</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Invalid inner random stream cipher</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Not a KeePass database.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; &apos;Import KeePass 1 database...&apos;.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Unsupported KeePass 2 database version.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML parsing failure: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>No root group</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Missing icon UUID or data</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Missing custom data key or value</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Multiple group elements</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Null group UUID</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Invalid group icon number</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Invalid EnableAutoType value</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Invalid EnableSearching value</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>No group UUID found</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Null DeleteObject UUID</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Missing DeletedObject UUID or time</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Null entry UUID</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Invalid entry icon number</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>History element in history entry</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>No entry UUID found</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>History element with different UUID</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Unable to decrypt entry string</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Duplicate custom attribute found</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Entry string key or value missing</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Duplicate attachment found</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Entry binary key or value missing</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Auto-Type association window or sequence missing</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Invalid bool value</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Invalid date time value</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Invalid color value</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Invalid color rgb part</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Invalid number value</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Invalid UUID value</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Unable to decompress binary</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation>Import KeePass1 database</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation>Unable to read keyfile.</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Not a KeePass database.</translation>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation>Unsupported encryption algorithm.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation>Unsupported KeePass database version.</translation>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Unable to read encryption IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Invalid number of groups</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Invalid number of entries</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Invalid content hash size</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Invalid transform seed size</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Invalid number of transform rounds</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Unable to construct group tree</translation>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation>Root</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Wrong key or database file is corrupt.</translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation>Key transformation failed</translation>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation>Invalid group field type number</translation>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation>Invalid group field size</translation>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Read group field data doesn&apos;t match size</translation>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation>Incorrect group id field size</translation>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation>Incorrect group creation time field size</translation>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation>Incorrect group modification time field size</translation>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation>Incorrect group access time field size</translation>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Incorrect group expiry time field size</translation>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation>Incorrect group icon field size</translation>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation>Incorrect group level field size</translation>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation>Invalid group field type</translation>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation>Missing group id or level</translation>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation>Missing entry field type number</translation>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation>Invalid entry field size</translation>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Read entry field data doesn&apos;t match size</translation>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation>Invalid entry uuid field size</translation>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation>Invalid entry group id field size</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation>Invalid entry icon field size</translation>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation>Invalid entry creation time field size</translation>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation>Invalid entry modification time field size</translation>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Invalid entry expiry time field size</translation>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation>Invalid entry field type</translation>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Existing single-instance lock file is invalid. Launching new instance.</translation>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>The lock file could not be created. Single-instance mode disabled.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Another instance of KeePassXC is already running.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Fatal error while testing the cryptographic functions.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Error</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Database</translation>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation>&amp;Recent databases</translation>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation>Import</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Help</translation>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation>E&amp;ntries</translation>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation>Copy att&amp;ribute to clipboard</translation>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation>Time-based one-time password</translation>
+ </message>
+ <message>
+ <source>&amp;Groups</source>
+ <translation>&amp;Groups</translation>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation>&amp;Tools</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>&amp;Quit</translation>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation>&amp;About</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Open database...</translation>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation>&amp;Save database</translation>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation>&amp;Close database</translation>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation>&amp;New database</translation>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation>Merge from KeePassXC database</translation>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation>&amp;Add new entry</translation>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation>&amp;View/Edit entry</translation>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation>&amp;Delete entry</translation>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation>&amp;Add new group</translation>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation>&amp;Edit group</translation>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation>&amp;Delete group</translation>
+ </message>
+ <message>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Sa&amp;ve database as...</translation>
+ </message>
+ <message>
+ <source>Change &amp;master key...</source>
+ <translation>Change &amp;master key...</translation>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Database settings</translation>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation>Database settings</translation>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Clone entry</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>&amp;Find</translation>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation>Copy &amp;username</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>Copy username to clipboard</translation>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation>Cop&amp;y password</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>Copy password to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation>&amp;Settings</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Password Generator</translation>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation>&amp;Perform Auto-Type</translation>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation>&amp;Open URL</translation>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation>&amp;Lock databases</translation>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation>&amp;Title</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation>Copy title to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;URL</source>
+ <translation>&amp;URL</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation>Copy URL to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;Notes</source>
+ <translation>&amp;Notes</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
+ <translation>Copy notes to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Export to CSV file...</translation>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation>Import KeePass 1 database...</translation>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation>Import CSV file...</translation>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation>Re&amp;pair database...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Show TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Set up TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Copy &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>E&amp;mpty recycle bin</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Clear history</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>Access error for config file %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation>read-only</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Settings</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>Toggle window</translation>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation>Quit KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Database</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Open database</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Save repaired database</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Writing the database failed.</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Please touch the button on your YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</translation>
+ </message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
+ <message>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Invalid key file, expecting an OpenSSH key</translation>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM boundary mismatch</translation>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation>Base64 decoding failed</translation>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation>Key file way too small.</translation>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
+ <translation>Key file magic header id invalid</translation>
+ </message>
+ <message>
+ <source>Found zero keys</source>
+ <translation>Found zero keys</translation>
+ </message>
+ <message>
+ <source>Failed to read public key.</source>
+ <translation>Failed to read public key.</translation>
+ </message>
+ <message>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Corrupted key file, reading private key failed</translation>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation>No private key payload to decrypt</translation>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Trying to run KDF without cipher</translation>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Passphrase is required to decrypt this key</translation>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Key derivation failed, key file corrupted?</translation>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Decryption failed, wrong passphrase?</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Unexpected EOF while reading public key</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Unexpected EOF while reading private key</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Can&apos;t write public key as it is empty</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Unexpected EOF when writing public key</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Can&apos;t write private key as it is empty</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Unexpected EOF when writing private key</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Unsupported key type: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Unknown cipher: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Cipher IV is too short for MD5 kdf</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Unknown KDF: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Unknown key type: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation>This is required for accessing your databases from ChromeIPass or PassIFox</translation>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Enable KeePassHTTP server</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sh&amp;ow a notification when credentials are requested</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Only returns the best matches for a specific URL instead of all entries for the whole domain.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation>&amp;Return only best matching entries</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Re&amp;quest to unlock the database if it is locked</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation>&amp;Match URL schemes</translation>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Sort matching entries by &amp;username</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Sort &amp;matching entries by title</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>R&amp;emove all shared encryption keys from active database</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Re&amp;move all stored permissions from entries in active database</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Password Generator</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Advanced</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Always allow &amp;access to entries</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Always allow &amp;updating entries</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Only the selected database has to be connected with a client.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Searc&amp;h in all opened databases for matching entries</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatically creating or updating string fields is not supported.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Return advanced string fields which start with &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP Port:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Default port: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC will listen to this port on 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Cannot bind to privileged ports</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Cannot bind to privileged ports below 1024!
+Using default port 19455.</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Password:</translation>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>strength</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropy</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Character Types</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>Upper Case Letters</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>Lower Case Letters</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>Numbers</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>Special Characters</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Extended ASCII</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>Exclude look-alike characters</translation>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation>Pick characters from every group</translation>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>&amp;Length:</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>Passphrase</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation>Wordlist:</translation>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>Word Count:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Word Separator:</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>Generate</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Copy</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Accept</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Close</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>Apply</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation>Entropy: %1 bit</translation>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation>Password Quality: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>Poor</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>Weak</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>Good</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>Excellent</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation>Database not opened</translation>
+ </message>
+ <message>
+ <source>Database hash not available</source>
+ <translation>Database hash not available</translation>
+ </message>
+ <message>
+ <source>Client public key not received</source>
+ <translation>Client public key not received</translation>
+ </message>
+ <message>
+ <source>Cannot decrypt message</source>
+ <translation>Cannot decrypt message</translation>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Timeout or cannot connect to KeePassXC</translation>
+ </message>
+ <message>
+ <source>Action cancelled or denied</source>
+ <translation>Action cancelled or denied</translation>
+ </message>
+ <message>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC association failed, try again</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Key change was not successful</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Encryption key is not recognized</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>No saved databases found</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Incorrect action</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Empty message received</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>No URL provided</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>No logins found</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Unknown error</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Add a new entry to a database.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Path of the database.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Key file of the database.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>path</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Username for the entry.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>username</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL for the entry.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Prompt for the entry&apos;s password.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Generate a password for the entry.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Length for the generated password.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>length</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Path of the entry to add.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Copy an entry&apos;s password to the clipboard.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Path of the entry to clip.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Timeout in seconds before clearing the clipboard.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Edit an entry.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Title for the entry.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>title</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Path of the entry to edit.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Estimate the entropy of a password.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Password for which to estimate the entropy.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Perform advanced analysis on the password.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extract and print the content of a database.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Path of the database to extract.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Insert password to unlock %1: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Failed to load key file %1 : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Available commands:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Name of the command to execute.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>List database entries.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Path of the group to list. Default is /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Find entries quickly.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Search term.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Merge two databases.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Path of the database to merge into.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Path of the database to merge from.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Use the same credentials for both database files.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Key file of the database to merge from.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Show an entry&apos;s information.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>attribute</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Name of the entry to show.</translation>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation>NULL device</translation>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation>error reading from device</translation>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation>file empty !
+</translation>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation>malformed string</translation>
+ </message>
+ <message>
+ <source>missing closing quote</source>
+ <translation>missing closing quote</translation>
+ </message>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – recommended)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Last Modified</source>
+ <translation>Last Modified</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Created</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Legacy Browser Integration</translation>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation>Browser Integration</translation>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation>YubiKey[%1] Challenge Response - Slot %2 - %3</translation>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation>Press</translation>
+ </message>
+ <message>
+ <source>Passive</source>
+ <translation>Passive</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Generate a new random diceware passphrase.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Word count for the diceware passphrase.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>count</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Wordlist for the diceware generator.
+[Default: EFF English]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Generate a new random password.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Length of the generated password.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Use lowercase characters in the generated password.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Use uppercase characters in the generated password.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Use numbers in the generated password.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Use special characters in the generated password.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Use extended ASCII in the generated password.</translation>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor</name>
+ <message>
+ <source>Internal zlib error when compressing: </source>
+ <translation>Internal zlib error when compressing: </translation>
+ </message>
+ <message>
+ <source>Error writing to underlying device: </source>
+ <translation>Error writing to underlying device: </translation>
+ </message>
+ <message>
+ <source>Error opening underlying device: </source>
+ <translation>Error opening underlying device: </translation>
+ </message>
+ <message>
+ <source>Error reading data from underlying device: </source>
+ <translation>Error reading data from underlying device: </translation>
+ </message>
+ <message>
+ <source>Internal zlib error when decompressing: </source>
+ <translation>Internal zlib error when decompressing: </translation>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
+ <message>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation>The gzip format not supported in this version of zlib.</translation>
+ </message>
+ <message>
+ <source>Internal zlib error: </source>
+ <translation>Internal zlib error: </translation>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation>Search...</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Search</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Clear</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation>Case Sensitive</translation>
+ </message>
+ <message>
+ <source>Limit search to selected group</source>
+ <translation>Limit search to selected group</translation>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: New key association request</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Overwrite existing key?</translation>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Update Entry</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Do you want to update the information in %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database locked!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Removed keys from database</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Successfully removed %n encryption key from KeePassHTTP Settings.</numerusform><numerusform>Successfully removed %n encryption keys from KeePassHTTP Settings.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: No keys found</translation>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>No shared encryption-keys found in KeePassHttp Settings.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Settings not available!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>The active database does not contain an entry of KeePassHttp Settings.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Removing stored permissions...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abort</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Removed permissions</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Successfully removed permissions from %n entry.</numerusform><numerusform>Successfully removed permissions from %n entries.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: No entry with permissions found!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>The active database does not contain an entry with permissions.</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <source>Application Settings</source>
+ <translation>Application Settings</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation>Security</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>Access error for config file %1</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetGeneral</name>
+ <message>
+ <source>Basic Settings</source>
+ <translation>Basic Settings</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Start only a single instance of KeePassXC</translation>
+ </message>
+ <message>
+ <source>Remember last databases</source>
+ <translation>Remember last databases</translation>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Remember last key files and security dongles</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Load previous databases on startup</translation>
+ </message>
+ <message>
+ <source>Automatically save on exit</source>
+ <translation>Automatically save on exit</translation>
+ </message>
+ <message>
+ <source>Automatically save after every change</source>
+ <translation>Automatically save after every change</translation>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Automatically reload the database when modified externally</translation>
+ </message>
+ <message>
+ <source>Minimize when copying to clipboard</source>
+ <translation>Minimize when copying to clipboard</translation>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimize window at application startup</translation>
+ </message>
+ <message>
+ <source>Use group icon on entry creation</source>
+ <translation>Use group icon on entry creation</translation>
+ </message>
+ <message>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</translation>
+ </message>
+ <message>
+ <source>Hide the Details view</source>
+ <translation>Hide the Details view</translation>
+ </message>
+ <message>
+ <source>Show a system tray icon</source>
+ <translation>Show a system tray icon</translation>
+ </message>
+ <message>
+ <source>Hide window to system tray when minimized</source>
+ <translation>Hide window to system tray when minimized</translation>
+ </message>
+ <message>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation>Hide window to system tray instead of app exit</translation>
+ </message>
+ <message>
+ <source>Dark system tray icon</source>
+ <translation>Dark system tray icon</translation>
+ </message>
+ <message>
+ <source>Language</source>
+ <translation>Language</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Use entry title to match windows for global Auto-Type</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Use entry URL to match windows for global Auto-Type</translation>
+ </message>
+ <message>
+ <source>Always ask before performing Auto-Type</source>
+ <translation>Always ask before performing Auto-Type</translation>
+ </message>
+ <message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Global Auto-Type shortcut</translation>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation>Auto-Type delay</translation>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation> ms</translation>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation>Startup</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>File Management</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Safely save database files (may be incompatible with Dropbox, etc)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Backup database file before saving</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Entry Management</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetSecurity</name>
+ <message>
+ <source>Timeouts</source>
+ <translation>Timeouts</translation>
+ </message>
+ <message>
+ <source>Clear clipboard after</source>
+ <translation>Clear clipboard after</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation> sec</translation>
+ </message>
+ <message>
+ <source>Lock databases after inactivity of</source>
+ <translation>Lock databases after inactivity of</translation>
+ </message>
+ <message>
+ <source>Convenience</source>
+ <translation>Convenience</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Lock databases when session is locked or lid is closed</translation>
+ </message>
+ <message>
+ <source>Lock databases after minimizing the window</source>
+ <translation>Lock databases after minimizing the window</translation>
+ </message>
+ <message>
+ <source>Don&apos;t require password repeat when it is visible</source>
+ <translation>Don&apos;t require password repeat when it is visible</translation>
+ </message>
+ <message>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Show passwords in cleartext by default</translation>
+ </message>
+ <message>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Hide passwords in the preview panel</translation>
+ </message>
+ <message>
+ <source>Hide entry notes by default</source>
+ <translation>Hide entry notes by default</translation>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation>Privacy</translation>
+ </message>
+ <message>
+ <source>Use Google as fallback for downloading website icons</source>
+ <translation>Use Google as fallback for downloading website icons</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Re-lock previously locked database after performing Auto-Type</translation>
+ </message>
+</context>
+<context>
+ <name>SetupTotpDialog</name>
+ <message>
+ <source>Setup TOTP</source>
+ <translation>Setup TOTP</translation>
+ </message>
+ <message>
+ <source>Key:</source>
+ <translation>Key:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Default RFC 6238 token settings</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam token settings</translation>
+ </message>
+ <message>
+ <source>Use custom settings</source>
+ <translation>Use custom settings</translation>
+ </message>
+ <message>
+ <source>Note: Change these settings only if you know what you are doing.</source>
+ <translation>Note: Change these settings only if you know what you are doing.</translation>
+ </message>
+ <message>
+ <source>Time step:</source>
+ <translation>Time step:</translation>
+ </message>
+ <message>
+ <source>8 digits</source>
+ <translation>8 digits</translation>
+ </message>
+ <message>
+ <source>6 digits</source>
+ <translation>6 digits</translation>
+ </message>
+ <message>
+ <source>Code size:</source>
+ <translation>Code size:</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation> sec</translation>
+ </message>
+</context>
+<context>
+ <name>TotpDialog</name>
+ <message>
+ <source>Timed Password</source>
+ <translation>Timed Password</translation>
+ </message>
+ <message>
+ <source>000000</source>
+ <translation>000000</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Copy</translation>
+ </message>
+ <message>
+ <source>Expires in</source>
+ <translation>Expires in</translation>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation>seconds</translation>
+ </message>
+</context>
+<context>
+ <name>UnlockDatabaseWidget</name>
+ <message>
+ <source>Unlock database</source>
+ <translation>Unlock database</translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWidget</name>
+ <message>
+ <source>Start storing your passwords securely in a KeePassXC database</source>
+ <translation>Start storing your passwords securely in a KeePassXC database</translation>
+ </message>
+ <message>
+ <source>Create new database</source>
+ <translation>Create new database</translation>
+ </message>
+ <message>
+ <source>Open existing database</source>
+ <translation>Open existing database</translation>
+ </message>
+ <message>
+ <source>Import from KeePass 1</source>
+ <translation>Import from KeePass 1</translation>
+ </message>
+ <message>
+ <source>Import from CSV</source>
+ <translation>Import from CSV</translation>
+ </message>
+ <message>
+ <source>Recent databases</source>
+ <translation>Recent databases</translation>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Welcome to KeePassXC %1</translation>
+ </message>
+</context>
+<context>
+ <name>main</name>
+ <message>
+ <source>Remove an entry from the database.</source>
+ <translation>Remove an entry from the database.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Path of the database.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to remove.</source>
+ <translation>Path of the entry to remove.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - cross-platform password manager</translation>
+ </message>
+ <message>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>filenames of the password databases to open (*.kdbx)</translation>
+ </message>
+ <message>
+ <source>path to a custom config file</source>
+ <translation>path to a custom config file</translation>
+ </message>
+ <message>
+ <source>key file of the database</source>
+ <translation>key file of the database</translation>
+ </message>
+ <message>
+ <source>read password of the database from stdin</source>
+ <translation>read password of the database from stdin</translation>
+ </message>
+ <message>
+ <source>Parent window handle</source>
+ <translation>Parent window handle</translation>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_en_plurals.ts b/share/translations/keepassx_en_plurals.ts
deleted file mode 100644
index 02ed5541e..000000000
--- a/share/translations/keepassx_en_plurals.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="en_US">
-<context>
- <name>DatabaseWidget</name>
- <message numerus="yes">
- <source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation>
- <numerusform>Do you really want to move %n entry to the recycle bin?</numerusform>
- <numerusform>Do you really want to move %n entries to the recycle bin?</numerusform>
- </translation>
- </message>
-</context>
-<context>
- <name>EditEntryWidget</name>
- <message numerus="yes">
- <source>%n week(s)</source>
- <translation>
- <numerusform>%n week</numerusform>
- <numerusform>%n weeks</numerusform>
- </translation>
- </message>
- <message numerus="yes">
- <source>%n month(s)</source>
- <translation>
- <numerusform>%n month</numerusform>
- <numerusform>%n months</numerusform>
- </translation>
- </message>
-</context>
-<context>
- <name>EditWidgetIcons</name>
- <message numerus="yes">
- <source>Can&apos;t delete icon. Still used by %n item(s).</source>
- <translation type="vanished">
- <numerusform>Can&apos;t delete icon. Still used by %n item.</numerusform>
- <numerusform>Can&apos;t delete icon. Still used by %n items.</numerusform>
- </translation>
- </message>
-</context>
-</TS>
diff --git a/share/translations/keepassx_es.ts b/share/translations/keepassx_es.ts
index 479284898..562224575 100644
--- a/share/translations/keepassx_es.ts
+++ b/share/translations/keepassx_es.ts
@@ -10,14 +10,30 @@
<translation>Acerca de</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Reporte errores al: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC se distribuye bajo la Licencia Pública General de GNU (GPL) versión 2 o versión 3 (si así lo prefiere).</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Contribuidores</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ver contribuciones en GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Información de Depuración</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Incluya la información siguiente cuando informe sobre un error:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Copiar al portapapeles</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revisión: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribución: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Librerías:</translation>
</message>
@@ -48,33 +68,27 @@ Núcleo: %3 %4</translation>
<translation>Extensiones habilitadas:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Reporte errores al: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC se distribuye bajo la Licencia Pública General de GNU (GPL) versión 2 o versión 3 (si así lo prefiere).</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Mantenedores del proyecto:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ver contribuciones en GitHub&lt;/a&gt;</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Un agradecimiento especial del equipo de KeePassXC a debfx por crear el KeePassX original.</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Incluya la información siguiente cuando informe sobre un error:</translation>
- </message>
- <message>
- <source>Distribution: %1</source>
- <translation>Distribución: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Tipo de compilación: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>Confirmar acceso para KeePassXC HTTP</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Recordar esta decisión</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 ha solicitado acceso a las contraseñas de los siguientes item(s).
Por favor seleccione si desea autorizar su acceso.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>Confirmar acceso para KeePassXC HTTP</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Habilitar el Agente SSH (requiere reinicio)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Auto-Escritura - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Escritura</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>¡La sintaxis de la declaración de tu auto-escritura es incorrecta!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Este comando de Auto-Escritura contiene un retraso muy largo. ¿De verdad quieres continuar?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Este comando de Auto-Escritura contiene pulsaciones de teclas muy lentas. ¿De verdad quieres continuar?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Este comando de Auto-Escritura contiene argumentos que se repiten muy a menudo. ¿De verdad quieres continuar?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,319 @@ Por favor seleccione si desea autorizar su acceso.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grupo</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Título</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nombre de usuario:</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Secuencia</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Escritura - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Seleccionar entrada para Auto-Escritura:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Auto-Escritura - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Navegador Confirmar Acceso</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Recordar esta decisión</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Permitir</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Denegar</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 ha solicitado acceso a las contraseñas de los siguientes ítems.
+Por favor seleccione si desea autorizar su acceso.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Cuadro de diálogo</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Esto es necesario para acceder a las bases de datos con KeePassXC-Navegador</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Permitir la integración de KeepassXC con el Navegador </translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Permitir la integración con estos navegadores:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Mostrar una &amp;notificación cuando las credenciales son requeridas</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Solicitar el desblo&amp;queo de la base de datos si se encuentra bloqueada</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Sólo se muestran las entradas con el mismo esquema (http://, https://,...)</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Coinciden con el esquema de URL (ej. https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Sólo devolver los resultados similares para una URL específica en vez de todas las entradas para todo el dominio.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Mostrar sólo las mejores credenciales</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordenar las credenciales por &amp;título</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordenar las credenciales por &amp;usuario</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Desconectar todos los navegadores</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Olvidar todos las &amp;permisos recordados</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avanzado</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nunca &amp;pregunte antes de acceder a las credenciales</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>No preguntar y guardar los credenciales</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Sólo las bases de datos seleccionadas se conectaran con el cliente.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Buscar &amp;h en todas las bases de datos abiertas los credenciales correspondientes</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>No se permite crear o actualizar campos de caracteres automáticamente.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Mostra&amp;r campos de caracteres avanzados que comiencen con &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Actualizaciones KeePassXC o keepassxc-proxy binario automáticamente para obtener los mensajes nativos en el arranque.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Actualizar &amp;native mensajes al inicear</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Apoya una aplicación proxy entre KeePassXC y una extensión de navegador.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Utilizar un &amp;proxy entre KeePassXC y la extensión del navegador</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Utilizar un proxy instalado manualmente</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Usar una ubicación proxy &amp;personalizada</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Navegar...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Advertencia:&lt;/b&gt; Las siguientes opciones pueden ser peligrosas.</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Archivos ejecutables (*.exe); Todos los archivos (*. *)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Archivos ejecutables (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Elegir una ubicación de proxy personalizada</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Solicitud de asociación de nueva clave</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>¿Quiere asociar la base de datos al navegador?
+
+Si quiere autirizar el acceso a la base de datos de KeePassXC
+de un nombre único para identificar la autorización
+(se guarda como una entrada más)</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Guardar y permitir acceso</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: ¿Sobrescribir clave existente?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Existe una llave con el nombre &quot;%1&quot;.
+¿Quiere sobreescribirlo?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Actualizar entrada</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>¿Desea actualizar la información en %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: ¡Base de datos bloqueada!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>¡La base de datos activa está bloqueada!
+Por favor desbloquee la base de datos seleccionada o elija otra que esté desbloqueada.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: ¡Configuraciones no disponibles!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>La base de datos activa no contiene una entrada de configuraciones.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: No se encontró ninguna clave</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>No se encontraron claves de cifrado en las configuraciones de KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Las claves se eliminaron de la base de datos</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Eliminando permisos almacenados...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abortar</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Permisos eliminados</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: ¡No se encontró ninguna entrada con permisos!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>La base de datos activa no contiene una entrada con permisos.</translation>
</message>
</context>
<context>
@@ -149,6 +491,10 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<translation>Repita la contraseña:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Archivo llave</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Abrir archivo</translation>
</message>
@@ -157,6 +503,14 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<translation>Crear</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Desa&amp;fío/Respuesta</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Actualizar</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Archivos llave</translation>
</message>
@@ -177,6 +531,10 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<translation>Seleccione un archivo llave</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Contraseña vacía</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>¿Realmente desea usar una cadena vacía como contraseña?</translation>
</message>
@@ -191,20 +549,18 @@ Por favor seleccione si desea autorizar su acceso.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Archivo llave</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Desa&amp;fío/Respuesta</translation>
+ <source>Legacy key file format</source>
+ <translation>Formato de archivo llave heredado</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>Actualizar</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Contraseña vacía</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Está utilizando un formato de archivo llave heredado que puede convertirse
+ en no soportado en el futuro.
+
+Considere generar un nuevo archivo llave.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +574,10 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<translation>Opciones de Clonado</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Añadir &apos; - Clon&apos; a título</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Reemplaza nombre de usuario y contraseña con referencias</translation>
</message>
@@ -225,10 +585,6 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<source>Copy history</source>
<translation>Copiar historial</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Añadir &apos; - Clon&apos; a título</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +682,6 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importar archivo CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Error</translation>
</message>
@@ -340,17 +692,17 @@ Por favor seleccione si desea autorizar su acceso.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>byte,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>filas,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>columnas</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +724,14 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<translation>Navegar</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Actualizar</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Desafío/respuesta:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Incapaz de abrir la base de datos.</translation>
</message>
@@ -380,6 +740,24 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<translation>No se puede abrir el archivo llave</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Formato de archivo llave heredado</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Está utilizando un formato de archivo llave heredado que puede convertirse
+ en no soportado en el futuro.
+
+Considere generar un nuevo archivo llave.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>No mostrar nuevamente esta advertencia</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Todos los archivos</translation>
</message>
@@ -391,14 +769,6 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<source>Select key file</source>
<translation>Seleccionar archivo llave</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Actualizar</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Desafío/respuesta:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +785,14 @@ Por favor seleccione si desea autorizar su acceso.</translation>
<translation>No se puede abrir el archivo llave</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Base de datos abierta correctamente. Nada que hacer.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>No se pudo abrir la base de datos.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Base de datos abierta correctamente. Nada que hacer.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Éxito</translation>
</message>
@@ -440,28 +810,122 @@ Ahora puede guardarla.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Nombre de la base de datos:</translation>
+ <source>General</source>
+ <translation>General</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Descripción de la base de datos:</translation>
+ <source>Encryption</source>
+ <translation>Cifrado</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Número de rondas demasiado altas</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Está utilizando una gran cantidad de rondas de transformación de clave con Argon2.
+
+Si conserva este número, ¡su base de datos puede tardar horas o días (o incluso más) en abrirse!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Entendido, mantenga el número</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Número de rondas demasiado bajas</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Está utilizando una cantidad muy baja de rondas de transformación de llave con AES-KDF.
+
+Si conserva este número, ¡su base de datos puede ser muy fácil de descifrar!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF sin cambios</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Error al transformar la llave con nuevos parámetros KDF; KDF sin cambios.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algoritmo de cifrado:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256-Bit (por defecto)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Función de derivación de la llave:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Rondas de transformación:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Nombre de usuario por defecto:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>Memoria utilizada:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Paralelismo:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Metadatos de la Base de Datos</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nombre de la base de datos:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Descripción de la base de datos:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Nombre de usuario por defecto:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Prueba de rendimiento</translation>
+ <source>History Settings</source>
+ <translation>Configuración del Historial</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +936,27 @@ Ahora puede guardarla.</translation>
<translation>Tamaño máximo del historial:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Usar papelera de reciclaje</translation>
+ <source> MiB</source>
+ <translation>MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256-Bit (por defecto)</translation>
+ <source>Use recycle bin</source>
+ <translation>Usar papelera de reciclaje</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation>Configuraciones Adicionales de la Base de Datos</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmo:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Habilitar &amp;compresión (recomendado)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Raíz</translation>
</message>
<message>
@@ -511,22 +976,48 @@ Ahora puede guardarla.</translation>
<translation>¡Archivo no encontrado!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Abrir base de datos KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>No se pudo abrir la base de datos.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Base de datos KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Archivo abierto en modo sólo lectura.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Abrir archivo CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Archivo CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Todos los archivos (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Unir base de datos</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Abrir base de datos KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Base de datos KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>¿Cerrar?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;% 1&quot; está en el modo de edición.
+¿Descartar cambios y cerrar de todos modos?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>¿Guardar cambios?</translation>
</message>
@@ -541,10 +1032,22 @@ Save changes?</source>
<translation>La escritura de la base de datos falló.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Contraseñas</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Guardar base de datos como</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Exportar base de datos a un archivo CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>La escritura del archivo CSV falló.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nueva base de datos</translation>
</message>
@@ -563,12 +1066,6 @@ Please press cancel to finish your changes or discard them.</source>
Por favor, pulse cancelar para terminar sus cambios o descartarlos.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Esta base de datos nunca ha sido guardada.
-Puede guardar la base de datos o dejar de bloquearla.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,68 +1074,23 @@ Otherwise your changes are lost.</source>
De lo contrario se perderán los cambios.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;% 1&quot; está en el modo de edición.
-¿Descartar cambios y cerrar de todos modos?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Exportar base de datos a un archivo CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>Archivo CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>La escritura del archivo CSV falló.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>No se pudo abrir la base de datos.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Unir base de datos</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>La base de datos que intenta guardar está bloqueada por otra instancia de KeePassXC.
-¿Desea guardarla de todas formas?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Contraseñas</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>La base de datos ya está abierta</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>La base de datos que intenta abrir está bloqueada por otra instancia de KeePassXC.
-¿Desea abrirla de todas formas?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Abrir como sólo lectura</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Archivo abierto en modo sólo lectura.</translation>
+ <source>Disable safe saves?</source>
+ <translation>¿Inhabilitar guardado seguro?</translation>
</message>
<message>
- <source>Open CSV file</source>
- <translation>Abrir archivo CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC no ha podido guardar varias veces la base de datos. Es probable que esto se deba a que los servicios de sincronización de archivos mantienen un bloqueo en el archivo guardado.
+¿Deshabilite las copias seguras y vuelva a intentarlo?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Buscando...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Cambiar la clave maestra</translation>
</message>
@@ -659,6 +1111,14 @@ Do you want to open it anyway?</source>
<translation>¿Realmente quiere eliminar las entradas &quot;%1&quot; de forma definitiva?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>¿Mover entrada a la papelera de reciclaje?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>¿Realmente quiere mover la entrada &quot;%1&quot; a la papelera de reciclaje?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>¿Mover entradas a la papelera de reciclaje?</translation>
</message>
@@ -667,28 +1127,28 @@ Do you want to open it anyway?</source>
<translation><numerusform>¿Realmente quiere mover la entrada &quot;%1&quot; a la papelera de reciclaje?</numerusform><numerusform>¿Realmente quiere mover las entradas &quot;%1&quot; a la papelera de reciclaje?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>¿Eliminar grupo?</translation>
+ <source>Execute command?</source>
+ <translation>¿Ejecutar comando?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>¿Realmente quiere eliminar el grupo &quot;%1&quot; de forma definitiva?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>¿Realmente desea ejecutar el siguiente comando?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>No se puede calcular la llave maestra</translation>
+ <source>Remember my choice</source>
+ <translation>Recordar mi elección</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>¿Mover entrada a la papelera de reciclaje?</translation>
+ <source>Delete group?</source>
+ <translation>¿Eliminar grupo?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>¿Realmente quiere mover la entrada &quot;%1&quot; a la papelera de reciclaje?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>¿Realmente quiere eliminar el grupo &quot;%1&quot; de forma definitiva?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Buscando...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>No se puede calcular la llave maestra</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1167,8 @@ Do you want to open it anyway?</source>
<translation>No hay resultados</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>¿Ejecutar comando?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>¿Realmente desea ejecutar el siguiente comando?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Recordar mi elección</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Solicitud de recarga automática</translation>
+ <source>File has changed</source>
+ <translation>El archivo ha cambiado</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,7 +1179,8 @@ Do you want to open it anyway?</source>
<translation>Solicitud de Unión</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
<translation>El archivo de la base de datos ha cambiado y usted tiene modificaciones sin guardar. ¿Desea unir sus modificaciones?</translation>
</message>
<message>
@@ -748,6 +1197,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Generar Token TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Cerrar</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Vencimiento</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nombre de usuario:</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Autoescritura</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Buscando...</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atributos</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Adjuntos</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notas</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Ventana</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Secuencia</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Buscar</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Limpiar</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Nunca</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEGIDO]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Deshabilitado</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Habilitado</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -774,6 +1306,30 @@ Do you want to open it anyway?</source>
<translation>Historial</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Agente de SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(encriptado)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Seleccione la llave privada</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Archivo demasiado grande para ser una llave privada</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Error al abrir la llave privada</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Historial de entradas</translation>
</message>
@@ -794,22 +1350,20 @@ Do you want to open it anyway?</source>
<translation>Nuevo atributo</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Seleccionar archivo</translation>
+ <source>Confirm Remove</source>
+ <translation>Confirmar eliminación</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Incapaz de abrir el archivo</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>¿Está seguro que desea eliminar este atributo?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Guardar adjunto</translation>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEGIDO]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Incapaz de guardar el adjunto:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Presione revelar para ver o editar</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1382,16 @@ Do you want to open it anyway?</source>
<translation>1 año</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Confirmar eliminación</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>¿Está seguro que desea eliminar este atributo?</translation>
+ <source>Apply generated password?</source>
+ <translation>¿Aplicar la contraseña generada?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[PROTEGIDO] Presione revelar para ver o editar</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>¿Desea aplicar la contraseña generada a esta entrada?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>¿Está seguro que desea eliminar este adjunto?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Entrada actualizada con éxito.</translation>
</message>
</context>
<context>
@@ -859,18 +1409,6 @@ Do you want to open it anyway?</source>
<translation>Eliminar</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Adjuntos</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Guardar</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Abrir</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Editar Nombre</translation>
</message>
@@ -882,24 +1420,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>Revelar</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Activar Auto-Escritura para esta entrada</translation>
+ <source>Attachments</source>
+ <translation>Adjuntos</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Color de Primer Plano:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Color de Segundo Plano:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Título de la ventana:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Activar Auto-Escritura para esta entrada</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1448,24 @@ Do you want to open it anyway?</source>
<translation>&amp;Usar secuencia de Auto-Escritura personalizada:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Usar secuencia por &amp;defecto</translation>
+ <source>Window Associations</source>
+ <translation>Ventanas Asociadas</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Definir secuencia personalizada:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Ventanas Asociadas</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Título de la ventana:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Usa una secuencia específica para esta asociación:</translation>
</message>
</context>
<context>
@@ -944,12 +1490,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Título:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Nombre de usuario:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1502,104 @@ Do you want to open it anyway?</source>
<translation>Repetir:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Título:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Expira</translation>
+ <source>Notes</source>
+ <translation>Notas</translation>
</message>
<message>
<source>Presets</source>
<translation>Programar</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Notas:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Cambie la casilla de verificación para mostrar la sección de notas.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nombre de usuario:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Eliminar después la clave del agente </translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>segundos</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Huella dactilar</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Eliminar llave del agente cuando la base de datos está cerrada/bloqueada</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Llave Pública</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Agregar llave al agente cuando la base de datos se abre/desbloquea</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Comentario</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Descifrar</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copiar al portapapeles</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Llave Privada</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Archivo externo</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Navegar...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Adjunto</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Añadir a agente</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Eliminar del agente</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Requiere confirmación del usuario cuando se usa esta llave</translation>
</message>
</context>
<context>
@@ -1045,6 +1671,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Usar icono por defecto</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Usar icono &amp;personalizado</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Añadir icono personalizado</translation>
</message>
@@ -1053,6 +1687,18 @@ Do you want to open it anyway?</source>
<translation>Eliminar icono personalizado</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Descargar favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>No se pudo descargar el favicon</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Consejo: Puede activar Google como una alternativa en Herramientas &gt; Configuración &gt; Seguridad</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Imágenes</translation>
</message>
@@ -1065,24 +1711,12 @@ Do you want to open it anyway?</source>
<translation>Seleccionar imagen</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Descargar favicon</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>No se pudo descargar el favicon</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>No se puede leer el ícono</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Usar icono por defecto</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Usar icono &amp;personalizado</translation>
+ <source>Custom icon already exists</source>
+ <translation>El icono personalizado ya existe</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1726,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Este ícono se utiliza en %1 entradas, y será modificado por el ícono por defecto. ¿Está seguro que desea eliminarlo?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Consejo: Puede activar Google como una alternativa en Herramientas &gt; Configuración &gt; Seguridad</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>El icono personalizado ya existe</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,15 +1745,125 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Eliminar</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation>- Clon</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nombre</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Tamaño</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Añadir</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Eliminar</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Abrir</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Guardar</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Seleccionar archivos</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirmar eliminación</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Guardar adjuntos</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>No se puede crear directorio:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>¿Seguro que quieres sobrescribir el archivo existente &quot;%1&quot; con el archivo adjunto?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confirmar sobreescritura</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1892,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Grupo</translation>
</message>
@@ -1172,9 +1913,67 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref:</translation>
+ <source>Never</source>
+ <translation>Nunca</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notas</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Adjuntos</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1185,6 +1984,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: ¡No se puede guardar el archivo!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>No se puede guardar el archivo de script de mensajería nativo.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2044,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>Asegurar que la contraseña contiene caracteres de todos los grupos</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII Extendido</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2061,361 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>No se puede calcular la clave maestra</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>No se pudo hacer el desafío/respuesta:</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>La contraseña es incorrecta o el archivo de la base de datos está dañado.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>No se pudo hacer el desafío/respuesta:</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>No se puede calcular la clave maestra</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>faltan las cabeceras de la base de datos</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>No se puede calcular la clave maestra</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Suma de verificación incorrecta de la cabecera</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Cabecera SHA256 diferente</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Clave equivocada o base de datos corrupta. (HMAC distinta)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Algoritmo de cifrado desconocido</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Tamaño id de la cabecera inválido</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Longitud del campo en la cabecera inválido</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Longitud del campo de datos en la cabecera incorrecto</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Error al abrir el búfer para los parámetros KDF en la cabecera</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Función de derivación de llave no soportada (KDF) o parámetros no válidos</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Los campos heredados de la cabecera se encuentran en el archivo KDBX4.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Tamaño id de la cabecera interna inválido</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Longitud del campo en la cabecera interna inválido</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Tamaño binario de la cabecera interna inválido</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Versión de mapa de variante de KeePass no soportada.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longitud del nombre de la entrada del mapa de variante inválida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Datos del nombre de la entrada de mapa de variante inválida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longitud del valor de la entrada del mapa de variante inválida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>No se puede calcular la clave maestra</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>No es una base de datos KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>El archivo seleccionado es una vieja base de datos de KeePass 1 (.kdb).
+
+Puede importarla haciendo clic en Base de datos &gt; &apos;Importar base de datos KeePass 1...&apos;.
+Esta migración es en único sentido. No podrá abrir la base de datos importada con la vieja versión 0.4 de KeePassX.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Version de la base de datos de KeePass 2 no soportada.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2445,35 @@ Do you want to open it anyway?</source>
<translation>Versión de la base de datos KeePass no soportada.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Incapaz de crear un grupo</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Raíz</translation>
</message>
@@ -1287,129 +2485,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>La contraseña es incorrecta o el archivo de la base de datos está dañado.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>No es una base de datos KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Error en la transformación de la llave</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Versión de la base de datos KeePass no soportada.</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>La contraseña es incorrecta o el archivo está dañado</translation>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>No se puede calcular la clave maestra</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>No se pudo hacer el desafío/respuesta:</translation>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>El archivo seleccionado es una vieja base de datos de KeePass 1 (.kdb).
-
-Puede importarla haciendo clic en Base de datos &gt; &apos;Importar base de datos KeePass 1...&apos;.
-Esta migración es en único sentido. No podrá abrir la base de datos importada con la vieja versión 0.4 de KeePassX.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>No se pudo hacer el desafío/respuesta:</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>No se puede calcular la clave maestra</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Error fatal comprobando las funciones criptográficas.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Error</translation>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>El archivo de bloqueo no pudo ser creado. Modo de instancia única deshabilitado.</translation>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Otra instancia de KeePassXC ya se está ejecutando.</translation>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>El archivo de bloqueo de instancia única existente no es válido. Lanzando nueva instancia.</translation>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Abrir base de datos</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Configuración de la base de datos</translation>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Copiar nombre de usuario al portapapeles</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Copiar contraseña al portapapeles</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
- <translation>Configuración</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Mostrar barra de herramientas</translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>sólo lectura</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
- <translation>Cambiar a ventana</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Base de datos de KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Todos los archivos</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Guardar base de datos reparada</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>El archivo de bloqueo de instancia única existente no es válido. Lanzando nueva instancia.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Fallo al escribir la base de datos.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>El archivo de bloqueo no pudo ser creado. Modo de instancia única deshabilitado.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Otra instancia de KeePassXC ya se está ejecutando.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Error fatal comprobando las funciones criptográficas.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Error</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>Base de &amp;Datos</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>Bases de datos &amp;recientes</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importar</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Ayuda</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>E&amp;ntradas</translation>
</message>
@@ -1418,12 +2628,16 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<translation>Copiar at&amp;ributo al portapapeles</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Contraseña temporal de un solo uso</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Grupos</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Ver</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Herramientas</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1434,6 +2648,10 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<translation>&amp;Acerca de</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Abrir base de datos...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Guardar base de datos</translation>
</message>
@@ -1474,24 +2692,24 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<translation>&amp;Eliminar grupo</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Configuración de la base de &amp;datos</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>&amp;Guardar base de datos como...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Clonar entrada</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Cambiar la clave &amp;maestra...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Contraseña programada de único uso</translation>
+ <source>&amp;Database settings</source>
+ <translation>Configuración de la base de &amp;datos</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Copiar &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Configuración de la base de datos</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Mostrar TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Clonar entrada</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1502,14 +2720,26 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<translation>Copiar nombre de &amp;usuario</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Copiar nombre de usuario al portapapeles</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Cop&amp;iar contraseña</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Copiar contraseña al portapapeles</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Configuración</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Generador de contraseñas</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>Realizar Auto-&amp;Escritura</translation>
</message>
@@ -1526,165 +2756,220 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<translation>&amp;Título</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Copiar título al portapapeles</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Copiar URL al portapapeles</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Notas</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Generador de contraseñas</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Copiar notas al portapapeles</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Limpiar historial</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exportar a un archivo CSV...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>Base de &amp;Datos</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importat base de datos KeePass 1...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importar</translation>
+ <source>Import CSV file...</source>
+ <translation>Importar archivo CSV...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Herramientas</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>&amp;Reparar base de datos...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Mostrar TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Configurar TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Copiar &amp;TOTP</translation>
</message>
<message>
- <source>Empty recycle bin</source>
+ <source>E&amp;mpty recycle bin</source>
<translation>Vaciar papelera de reciclaje</translation>
</message>
<message>
+ <source>Clear history</source>
+ <translation>Limpiar historial</translation>
+ </message>
+ <message>
<source>Access error for config file %1</source>
<translation>Error de acceso al archivo de configuración %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Salir de KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Por favor presione el botón en su YubiKey!</translation>
+ <source>read-only</source>
+ <translation>sólo lectura</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>&amp;Ayuda</translation>
+ <source>Settings</source>
+ <translation>Configuración</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Abrir base de datos...</translation>
+ <source>Toggle window</source>
+ <translation>Cambiar a ventana</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>&amp;Guardar base de datos como...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Salir de KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Cambiar la clave &amp;maestra...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Base de datos de KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Exportar a un archivo CSV...</translation>
+ <source>All files</source>
+ <translation>Todos los archivos</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Importat base de datos KeePass 1...</translation>
+ <source>Open database</source>
+ <translation>Abrir base de datos</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importar archivo CSV...</translation>
+ <source>Save repaired database</source>
+ <translation>Guardar base de datos reparada</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>&amp;Reparar base de datos...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Fallo al escribir la base de datos.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Configurar TOTP...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Por favor presione el botón en su YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Cuadro de diálogo</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>General</source>
- <translation>General</translation>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>M&amp;ostrar una notificación cuando se pidan credenciales</translation>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Ordenar entradas por nombre de &amp;usuario</translation>
+ <source>Key file way too small.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Eli&amp;minar todos los permisos guardados de las entradas de la base de datos activa</translation>
+ <source>Key file magic header id invalid</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Advanced</source>
- <translation>Avanzado</translation>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Siempre permitir &amp;acceso a las entradas</translation>
+ <source>Failed to read public key.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Siempre permitir act&amp;ualizaciones de las entradas</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Busca&amp;r entradas que coincidan en todas las bases de datos abiertas</translation>
+ <source>No private key payload to decrypt</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Puerto HTTP:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Puerto por defecto: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Frase de contraseña necesaria para descrifrar esta clave</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Solicitar el desblo&amp;queo de la base de datos si se encuentra bloqueada</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Ordenar entradas por &amp;título</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC escuchará por este puerto en 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>No se puede asociar a puertos con privilegios</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>¡No se puede asociar a puertos con privilegios debajo de 1024!
-Usando el puerto por defecto 19455</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>&amp;Eliminar todas las claves de cifrado compartidas de la base de datos activa</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>Mostra&amp;r campos de caracteres avanzados que comiencen con &quot;KPH: &quot;</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>No se permite crear o actualizar campos de caracteres automáticamente.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Tipo de clave no soportada: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Cifrado desconocido: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Cifrado IV demasiado corto para MD5 kdf</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>KDF desconocido: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Tipo de clave desconocida: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Cuadro de diálogo</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1695,6 +2980,15 @@ Usando el puerto por defecto 19455</translation>
<translation>Habilitar el servidor de KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>M&amp;ostrar una notificación cuando se pidan credenciales</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Sólo devolver los resultados similares para una URL específica en vez de todas las entradas para todo el dominio.</translation>
</message>
@@ -1703,6 +2997,10 @@ Usando el puerto por defecto 19455</translation>
<translation>&amp;Devolver sólo las entradas más relevantes</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Solicitar el desblo&amp;queo de la base de datos si se encuentra bloqueada</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Sólo se devuelven las entradas con el mismo esquema (http://, https://, ftp://, ...)</translation>
</message>
@@ -1711,27 +3009,108 @@ Usando el puerto por defecto 19455</translation>
<translation>&amp;Validar los esquemas de las URL</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Ordenar entradas por nombre de &amp;usuario</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Ordenar entradas por &amp;título</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>&amp;Eliminar todas las claves de cifrado compartidas de la base de datos activa</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Eli&amp;minar todos los permisos guardados de las entradas de la base de datos activa</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Generador de contraseñas</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Avanzado</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Siempre permitir &amp;acceso a las entradas</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Siempre permitir act&amp;ualizaciones de las entradas</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Sólo las bases de datos seleccionadas se conectaran con el cliente.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>¡Las siguientes opciones son peligrosas!
-Cámbielas sólo si sabe lo que está haciendo.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Busca&amp;r entradas que coincidan en todas las bases de datos abiertas</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>No se permite crear o actualizar campos de caracteres automáticamente.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Mostra&amp;r campos de caracteres avanzados que comiencen con &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Puerto HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Puerto por defecto: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC escuchará por este puerto en 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Advertencia:&lt;/b&gt; Las siguientes opciones pueden ser peligrosas.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>No se puede asociar a puertos con privilegios</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>¡No se puede asociar a puertos con privilegios debajo de 1024!
+Usando el puerto por defecto 19455</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Contraseña:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>seguridad</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropía</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Tipos de caracteres</translation>
</message>
@@ -1752,38 +3131,50 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
<translation>Caracteres especiales:</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>ASCII Extendido</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Excluir caracteres similares</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Aceptar</translation>
+ <source>Pick characters from every group</source>
+ <translation>Elegir caracteres de todos los grupos</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Longitud:</translation>
</message>
<message>
- <source>strength</source>
- <translation>seguridad</translation>
+ <source>Passphrase</source>
+ <translation>Frase de contraseña</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropía</translation>
+ <source>Wordlist:</source>
+ <translation>Lista de palabras:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Longitud:</translation>
+ <source>Word Count:</source>
+ <translation>Cantidad de Palabras:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Elegir caracteres de todos los grupos</translation>
+ <source>Word Separator:</source>
+ <translation>Separador de Palabras:</translation>
</message>
<message>
<source>Generate</source>
<translation>Generar</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Copiar</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Aceptar</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Cerrar</translation>
</message>
@@ -1801,51 +3192,270 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Pobre</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Débil</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Buena</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Excelente</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Contraseña</translation>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>ASCII Extendido</translation>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
- <translation>Frase de contraseña</translation>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Lista de palabras:</translation>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
- <translation>Cantidad de Palabras:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Separador de Palabras:</translation>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
- <translation>Copiar</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Error desconocido</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Ruta a la base de datos.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Archivo de llave de la base de datos</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>ruta</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>nombre de usuario</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Tamaño de la contraseña a generar</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>Tamaño</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Editar una entrada</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Título para la entrada</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extraer e imprimir el contenido de la base de datos.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Ruta a la base de datos a extraer.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Nombre del comando a ejecutar.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Listar las entradas de la base de datos.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Ruta del grupo a listar. Por defecto es /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Mezclar dos bases de datos.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Ruta de la base de datos resultado de la mezcla.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Ruta de la base de datos de inicio de la mezcla.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nombre de la entrada para mostrar.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>Dispositivo NULL</translation>
@@ -1869,8 +3479,28 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
<translation>comilla de cierre faltante</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>INTERNO - unget límite excedido</translation>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Group</source>
@@ -1889,14 +3519,22 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
<translation>Contraseña</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notas</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Integración con Navegadores</translation>
</message>
@@ -1912,6 +3550,55 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
<source>Passive</source>
<translation>Pasivo</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agente de SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1950,8 +3637,8 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Distinguir mayúsculas/minúsculas</translation>
+ <source>Search...</source>
+ <translation>Buscar...</translation>
</message>
<message>
<source>Search</source>
@@ -1962,8 +3649,8 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
<translation>Limpiar</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Buscar...</translation>
+ <source>Case Sensitive</source>
+ <translation>Distinguir mayúsculas/minúsculas</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1973,50 +3660,6 @@ Cámbielas sólo si sabe lo que está haciendo.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Ya existe una clave de cifrado con el nombre %1.
-¿Desea sobrescribirla?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>¿Desea actualizar la información en %1 - %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>¡La base de datos activa está bloqueada!
-Por favor desbloquee la base de datos seleccionada o elija otra que esté desbloqueada.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Se eliminó con éxito %1 %2 de cifrado de la configuración de KeePassX/Http.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>No se encontraron claves de cifrado en la configuración de KeePassHttp.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>La base de datos activa no contiene una entrada de configuración de KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Eliminando los permisos guardados...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Abortar</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Los permisos de %1 %2 fueron eliminados exitosamente.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>La base de datos activa no contiene una entrada con permisos.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Solicitud de asociación de nueva clave</translation>
</message>
@@ -2033,33 +3676,77 @@ asigne un nombre único para identificarla y acepte.</translation>
<translation>KeePassXC: ¿Sobrescribir clave existente?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Ya existe una clave de cifrado con el nombre %1.
+¿Desea sobrescribirla?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Actualizar entrada</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>¿Desea actualizar la información en %1 - %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: ¡Base de datos bloqueada!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>¡La base de datos activa está bloqueada!
+Por favor desbloquee la base de datos seleccionada o elija otra que esté desbloqueada.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Las claves se eliminaron de la base de datos</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: No se encontró ninguna clave</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>No se encontraron claves de cifrado en la configuración de KeePassHttp.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: ¡Configuraciones no disponibles!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>La base de datos activa no contiene una entrada de configuración de KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Eliminando los permisos guardados...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abortar</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Permisos eliminados</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: ¡No se encontró ninguna entrada con permisos!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>La base de datos activa no contiene una entrada con permisos.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2083,10 +3770,26 @@ asigne un nombre único para identificarla y acepte.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Configuraciones Básicas</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Inicie sólo una instancia de KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Recordar última base de datos</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Recordar los últimos archivos de llaves y el dongle de seguridad</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Abrir base de datos anterior al inicio</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Guardar automáticamente al salir</translation>
</message>
@@ -2095,20 +3798,28 @@ asigne un nombre único para identificarla y acepte.</translation>
<translation>Guardar automáticamente después de cada cambio</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Recargar automáticamente la base de datos cuando sea modificada externamente</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimizar al copiar al portapapeles</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimizar la ventana al iniciar</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Usar icono del grupo en la creación de entrada</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Atajo global de Auto-Escritura</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>No marcar la base de datos como modificada cuando los cambios no afecten a los datos (ej. expandir grupos)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Idioma</translation>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2119,66 +3830,84 @@ asigne un nombre único para identificarla y acepte.</translation>
<translation>Ocultar la ventana a la bandeja del sistema cuando se minimiza</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Abrir base de datos anterior al inicio</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Recargar automáticamente la base de datos cuando sea modificada externamente</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Ocultar la ventana a la bandeja del sistema en vez de cerrar</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Minimizar la ventana al iniciar</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Configuraciones Básicas</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Recordar los últimos archivos de llaves y el dongle de seguridad</translation>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>No marcar la base de datos como modificada cuando los cambios no afecten a los datos (ej. expandir grupos)</translation>
+ <source>Language</source>
+ <translation>Idioma</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-Escritura</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Usar URL y título de la entrada para igualar ventanas para Auto-Escritura global</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Siempre preguntar antes de hacer Auto-Escritura</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Atajo global de Auto-Escritura</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Retardo de Auto-Escritura</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>Micro segundo</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Inicie sólo una instancia de KeePassXC</translation>
+ <source>Startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Intervalos</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Limpiar el portapapeles después de</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>segundos</translation>
</message>
<message>
@@ -2186,8 +3915,12 @@ asigne un nombre único para identificarla y acepte.</translation>
<translation>Bloquear base de datos tras un periodo de inactividad de</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Mostrar contraseñas en texto claro por defecto</translation>
+ <source>Convenience</source>
+ <translation>Conveniencia</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Bloquear base de datos cuando la sesión está bloqueada o la pantalla esté cerrada</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2198,16 +3931,16 @@ asigne un nombre único para identificarla y acepte.</translation>
<translation>No pedir repetición de la contraseña cuando está visible</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Intervalos</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Mostrar contraseñas en texto claro por defecto</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Conveniencia</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Bloquear base de datos cuando la sesión está bloqueada o la pantalla esté cerrada</translation>
+ <source>Hide entry notes by default</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Privacy</source>
@@ -2217,6 +3950,10 @@ asigne un nombre único para identificarla y acepte.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Usar Google como una alternativa para descargar iconos de sitios web</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2229,6 +3966,14 @@ asigne un nombre único para identificarla y acepte.</translation>
<translation>Clave:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Usar configuración personalizada</translation>
</message>
@@ -2254,6 +3999,7 @@ asigne un nombre único para identificarla y acepte.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>segundos</translation>
</message>
</context>
@@ -2290,10 +4036,6 @@ asigne un nombre único para identificarla y acepte.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Bienvenido(a) a KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Empiece a guardar sus contraseñas con seguridad en una base de datos de KeePassXC</translation>
</message>
@@ -2317,92 +4059,48 @@ asigne un nombre único para identificarla y acepte.</translation>
<source>Recent databases</source>
<translation>Bases de datos recientes</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>ruta a un archivo de configuración personalizado</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>archivo llave de la base de datos</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - gestor de claves multiplataforma</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>leer contraseña de la base de datos desde la entrada estándar</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>nombre de archivo de la base de datos de contraseñas a abrir (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Copiar contraseña al portapapeles</translation>
+ <source>Remove an entry from the database.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Path of the database.</source>
<translation>Ruta a la base de datos.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Usar una ventana de diálogo para desbloquear la base de datos.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Nombre de la entrada para cortar.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Extraer e imprimir el contenido de la base de datos.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Ruta a la base de datos a extraer.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Nombre del comando a ejecutar.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Listar las entradas de la base de datos.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Ruta del grupo a listar. Por defecto es /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation> Imprimir los UUIDs de las entradas y grupos.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>Mezclar dos bases de datos.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - gestor de claves multiplataforma</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Ruta de la base de datos resultado de la mezcla.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>nombre de archivo de la base de datos de contraseñas a abrir (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Ruta de la base de datos de inicio de la mezcla.</translation>
+ <source>path to a custom config file</source>
+ <translation>ruta a un archivo de configuración personalizado</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Usar la misma contraseña para ambas bases de datos.</translation>
+ <source>key file of the database</source>
+ <translation>archivo llave de la base de datos</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Mostrar contraseña.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>leer contraseña de la base de datos desde la entrada estándar</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Nombre de la entrada para mostrar.</translation>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_eu.ts b/share/translations/keepassx_eu.ts
index ffbb4a9a5..eae8b65b0 100644
--- a/share/translations/keepassx_eu.ts
+++ b/share/translations/keepassx_eu.ts
@@ -10,11 +10,27 @@
<translation>Honi buruz</translation>
</message>
<message>
- <source>Contributors</source>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Akatsen berri eman hemen: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Contributors</source>
+ <translation>Lankideak</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ikusi ekarpenak GitHub-en&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
+ <translation>Arazketa informazioa</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
<translation type="unfinished"/>
</message>
<message>
@@ -29,7 +45,11 @@
</message>
<message>
<source>Revision: %1</source>
- <translation type="unfinished"/>
+ <translation>Berrikuspena: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Banaketa: %1</translation>
</message>
<message>
<source>Libraries:</source>
@@ -39,40 +59,35 @@
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
- <translation type="unfinished"/>
+ <translation>Sistema eragilea: %1
+CPU arkitektura: %2
+Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Gaitutako hedapenak:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ikusi ekarpenak GitHub-en&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
+ <source>Build Type: %1
+</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Gogoratu erabaki hau</translation>
</message>
@@ -89,8 +104,11 @@ Kernel: %3 %4</source>
Please select whether you want to allow access.</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
+ <source>Enable SSH Agent (requires restart)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -104,6 +122,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -121,13 +159,307 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Taldea</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Izenburua</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Erabiltzaile-izena</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekuentzia</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Gogoratu erabaki hau</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Onartu</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Debekatu</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Elkarrizketa</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Orokorra</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Aurreratua</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Arakatu...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Gainidatzi aurreko gakoa?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Eguneratu sarrera</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Ez da gakorik aurkitu</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Gordetako baimenak kentzen...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Kendutako baimenak</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
<translation type="unfinished"/>
</message>
</context>
@@ -146,14 +478,26 @@ Please select whether you want to allow access.</source>
<translation>Errepikatu pasahitza:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Gako fitxategia</translation>
+ </message>
+ <message>
<source>Browse</source>
- <translation type="unfinished"/>
+ <translation>Arakatu</translation>
</message>
<message>
<source>Create</source>
<translation>Sortu</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Freskatu</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Gako fitxategiak</translation>
</message>
@@ -174,6 +518,10 @@ Please select whether you want to allow access.</source>
<translation>Aukeratu gako fitxategia</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Hustu pasahitza</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Kate hutsa pasahitz modura erabili?</translation>
</message>
@@ -187,20 +535,15 @@ Please select whether you want to allow access.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Gako fitxategia</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
+ <source>Legacy key file format</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Refresh</source>
- <translation>Freskatu</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Hustu pasahitza</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -211,6 +554,10 @@ Please select whether you want to allow access.</source>
<name>CloneDialog</name>
<message>
<source>Clone Options</source>
+ <translation>Klonatu aukerak</translation>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
<translation type="unfinished"/>
</message>
<message>
@@ -221,10 +568,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>Kopiatu historia</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -321,10 +664,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Inportatu CSV fitxategia</translation>
- </message>
- <message>
<source>Error</source>
<translation>Errorea</translation>
</message>
@@ -335,17 +674,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>byte,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>byte %n</numerusform><numerusform>%n byte</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>errenkada,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>lerro %n</numerusform><numerusform>%n lerro</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>zutabe,</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>zutabe %n</numerusform><numerusform>%n zutabe</numerusform></translation>
</message>
</context>
<context>
@@ -364,6 +703,14 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Browse</source>
+ <translation>Arakatu</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Freskatu</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
<translation type="unfinished"/>
</message>
<message>
@@ -375,6 +722,21 @@ Please select whether you want to allow access.</source>
<translation>Ezin da gako fitxategia ireki</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>All files</source>
<translation>Fitxategi guztiak</translation>
</message>
@@ -386,14 +748,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>Aukeratu gako-fitxategia</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Freskatu</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -410,14 +764,14 @@ Please select whether you want to allow access.</source>
<translation>Ezin da gako fitxategia ireki</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Ezin izan da datu-basea ireki.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Success</source>
<translation type="unfinished"/>
</message>
@@ -435,41 +789,68 @@ Gorde daiteke orain.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Datu-basearen izena:</translation>
+ <source>General</source>
+ <translation>Orokorra</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Datu-basearen deskribapena:</translation>
+ <source>Encryption</source>
+ <translation>Zifraketa</translation>
</message>
<message>
- <source>Transform rounds:</source>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>Default username:</source>
- <translation>Lehenetsitako erabiltzaile-izena:</translation>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Benchmark</source>
+ <source>Cancel</source>
+ <translation>Utzi</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>Max. history items:</source>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Max. history size:</source>
+ <source>KDF unchanged</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use recycle bin</source>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
<translation type="unfinished"/>
</message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Zifraketa algoritmoa</translation>
+ </message>
<message>
<source>AES: 256 Bit (default)</source>
<translation>AES: 256 Bit (lehenetsia)</translation>
@@ -479,14 +860,78 @@ Gorde daiteke orain.</translation>
<translation>Twofish: 256 Bit</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmoa:</translation>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>Memoria erabilera:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Paralelismoa:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Datu-basearen izena:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Datu-basearen deskribapena:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Lehenetsitako erabiltzaile-izena:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation> MiB</translation>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation type="unfinished"/>
</message>
<message>
@@ -506,126 +951,115 @@ Gorde daiteke orain.</translation>
<translation>Fitxategia ez da aurkitu!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Ireki KeePass 1 datu-basea</translation>
+ <source>Unable to open the database.</source>
+ <translation>Ezin izan da datu-basea ireki.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 datu-basea</translation>
+ <source>File opened in read only mode.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files (*)</source>
- <translation>Fitxategi guztiak (*)</translation>
+ <source>Open CSV file</source>
+ <translation>Ireki CSV fitxategia</translation>
</message>
<message>
- <source>Close?</source>
- <translation>Itxi?</translation>
+ <source>CSV file</source>
+ <translation>CSV fitxategia</translation>
</message>
<message>
- <source>Save changes?</source>
- <translation>Aldaketak gorde?</translation>
+ <source>All files (*)</source>
+ <translation>Fitxategi guztiak (*)</translation>
</message>
<message>
- <source>&quot;%1&quot; was modified.
-Save changes?</source>
- <translation type="unfinished"/>
+ <source>Merge database</source>
+ <translation>Bateratu datu-basea</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation type="unfinished"/>
+ <source>Open KeePass 1 database</source>
+ <translation>Ireki KeePass 1 datu-basea</translation>
</message>
<message>
- <source>Save database as</source>
- <translation>Gorde datu-basea honela</translation>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 datu-basea</translation>
</message>
<message>
- <source>New database</source>
- <translation>Datu-base berria</translation>
+ <source>Close?</source>
+ <translation>Itxi?</translation>
</message>
<message>
- <source>locked</source>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Lock database</source>
- <translation type="unfinished"/>
+ <source>Save changes?</source>
+ <translation>Aldaketak gorde?</translation>
</message>
<message>
- <source>Can't lock the database as you are currently editing it.
-Please press cancel to finish your changes or discard them.</source>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
+ <source>Writing the database failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>This database has been modified.
-Do you want to save the database before locking it?
-Otherwise your changes are lost.</source>
- <translation type="unfinished"/>
+ <source>Passwords</source>
+ <translation>Pasahitzak</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation type="unfinished"/>
+ <source>Save database as</source>
+ <translation>Gorde datu-basea honela</translation>
</message>
<message>
<source>Export database to CSV file</source>
<translation>Esportatu datu-basea CSV fitxategira</translation>
</message>
<message>
- <source>CSV file</source>
- <translation>CSV fitxategia</translation>
- </message>
- <message>
<source>Writing the CSV file failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to open the database.</source>
- <translation>Ezin izan da datu-basea ireki.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Bateratu datu-basea</translation>
+ <source>New database</source>
+ <translation>Datu-base berria</translation>
</message>
<message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
+ <source>locked</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Passwords</source>
+ <source>Lock database</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Database already opened</source>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Open read-only</source>
+ <source>Disable safe saves?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>File opened in read only mode.</source>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
<translation type="unfinished"/>
</message>
- <message>
- <source>Open CSV file</source>
- <translation>Ireki CSV fitxategia</translation>
- </message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Bilatzen...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Aldatu gako nagusia</translation>
</message>
@@ -646,36 +1080,44 @@ Do you want to open it anyway?</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Ziur zaude sarrera %n zakarrontzira mugitu nahi duzula?</numerusform><numerusform>Ziur zaude %n sarrera zakarrontzira mugitu nahi dituzula?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Ezabatu taldea?</translation>
+ <source>Execute command?</source>
+ <translation>Exekutatu komandoa?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ezin izan da gako nagusia kalkulatu</translation>
+ <source>Remember my choice</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation type="unfinished"/>
+ <source>Delete group?</source>
+ <translation>Ezabatu taldea?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Searching...</source>
- <translation>Bilatzen...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Ezin izan da gako nagusia kalkulatu</translation>
</message>
<message>
<source>No current database.</source>
@@ -694,45 +1136,121 @@ Do you want to open it anyway?</source>
<translation>Emaitzarik ez</translation>
</message>
<message>
- <source>Execute command?</source>
+ <source>File has changed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <source>The database file has changed. Do you want to load the changes?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Remember my choice</source>
+ <source>Merge Request</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Autoreload Request</source>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The database file has changed. Do you want to load the changes?</source>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Merge Request</source>
+ <source>Empty recycle bin?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <source>Entry updated successfully.</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>DetailsWidget</name>
<message>
- <source>Empty recycle bin?</source>
+ <source>Generate TOTP Token</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <source>Close</source>
+ <translation>Itxi</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Orokorra</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Pasahitza</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Iraungitzea</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Erabiltzaile-izena</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Bilatzen</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Notes</source>
+ <translation>Oharrak</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Leihoa</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekuentzia</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Bilatu</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Garbitu</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Inoiz</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[BABESTUA]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Ezgaitua</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Gaitua</translation>
+ </message>
</context>
<context>
<name>EditEntryWidget</name>
@@ -761,10 +1279,34 @@ Do you want to open it anyway?</source>
<translation>Historia</translation>
</message>
<message>
- <source>Entry history</source>
+ <source>SSH Agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>(encrypted)</source>
+ <translation>(zifratua)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation>Sarrera historia</translation>
+ </message>
+ <message>
<source>Add entry</source>
<translation>Gehitu sarrera</translation>
</message>
@@ -778,23 +1320,22 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>New attribute</source>
- <translation type="unfinished"/>
+ <translation>Gehitu ezaugarria</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Aukeratu fitxategia</translation>
+ <source>Confirm Remove</source>
+ <translation>Baieztatu kentzea</translation>
</message>
<message>
- <source>Unable to open file</source>
+ <source>Are you sure you want to remove this attribute?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Save attachment</source>
- <translation type="unfinished"/>
+ <source>[PROTECTED]</source>
+ <translation>[BABESTUA]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
+ <source>Press reveal to view or edit</source>
<translation type="unfinished"/>
</message>
<message>
@@ -803,30 +1344,26 @@ Do you want to open it anyway?</source>
</message>
<message numerus="yes">
<source>%n week(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>aste %n</numerusform><numerusform>%n aste</numerusform></translation>
</message>
<message numerus="yes">
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>hilabete %n</numerusform><numerusform>%n hilabete</numerusform></translation>
</message>
<message>
<source>1 year</source>
<translation>urte 1</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
+ <source>Apply generated password?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
+ <source>Do you want to apply the generated password to this entry?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
+ <source>Entry updated successfully.</source>
<translation type="unfinished"/>
</message>
</context>
@@ -845,18 +1382,6 @@ Do you want to open it anyway?</source>
<translation>Kendu</translation>
</message>
<message>
- <source>Attachments</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Save</source>
- <translation>Gorde</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Ireki</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Izena editatu</translation>
</message>
@@ -868,23 +1393,23 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
+ <source>Attachments</source>
<translation type="unfinished"/>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
+ <source>Enable Auto-Type for this entry</source>
<translation type="unfinished"/>
</message>
<message>
@@ -896,15 +1421,23 @@ Do you want to open it anyway?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use default se&amp;quence</source>
+ <source>Window Associations</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation type="unfinished"/>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Leihoaren izenburua:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
<translation type="unfinished"/>
</message>
</context>
@@ -916,7 +1449,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Restore</source>
- <translation type="unfinished"/>
+ <translation>Berrezarri</translation>
</message>
<message>
<source>Delete</source>
@@ -930,36 +1463,116 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
+ <source>URL:</source>
+ <translation>URL:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Pasahitza:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>Errepikatu:</translation>
+ </message>
+ <message>
<source>Title:</source>
<translation>Izenburua:</translation>
</message>
<message>
+ <source>Notes</source>
+ <translation>Oharrak</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Username:</source>
<translation>Erabitzaile-izena:</translation>
</message>
<message>
- <source>Password:</source>
- <translation>Pasahitza:</translation>
+ <source>Expires</source>
+ <translation>Iraungitzea</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
<message>
- <source>Repeat:</source>
- <translation>Errepikatu:</translation>
+ <source>Form</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Expires</source>
+ <source> seconds</source>
+ <translation>segundu</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Presets</source>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Gako publikoa</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Iruzkina</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Deszifratu</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Kopiatu arbelera</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Gako pribatua</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Arakatu...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Eranskina</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Notes:</source>
- <translation>Oharrak:</translation>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1009,7 +1622,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Expires</source>
- <translation type="unfinished"/>
+ <translation>Iraungitzea</translation>
</message>
<message>
<source>Search</source>
@@ -1031,6 +1644,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Gehitu ikono pertsonalizatua</translation>
</message>
@@ -1039,6 +1660,18 @@ Do you want to open it anyway?</source>
<translation>Ezabatu ikono pertsonalizatua</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Deskargatu favicon-a</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Ezin izan da favicon-a atzitu.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Images</source>
<translation>Irudiak</translation>
</message>
@@ -1051,23 +1684,11 @@ Do you want to open it anyway?</source>
<translation>Aukeratu irudia</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Deskargatu favicon-a</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Ezin izan da favicon-a atzitu.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
+ <source>Custom icon already exists</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1078,14 +1699,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation type="unfinished"/>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1105,11 +1718,120 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Kendu</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - Klonatu</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Izena</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Tamainua</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Gehitu</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Kendu</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Ireki</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Gorde</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Aukeratu fitxategiak</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Ziur zaude eranskin %n kendu nahi duzula?</numerusform><numerusform>Ziur zaude %n eranskin kendu nahi dituzula?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Baieztatu kentzea</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Gorde eranskinak</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1142,6 +1864,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Group</source>
<translation>Taldea</translation>
</message>
@@ -1158,8 +1885,62 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
+ <source>Never</source>
+ <translation>Inoiz</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Pasahitza</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Oharrak</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Iraungitzea</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1167,6 +1948,17 @@ Do you want to open it anyway?</source>
<name>Group</name>
<message>
<source>Recycle Bin</source>
+ <translation>Zakarrontzia</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1220,6 +2012,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1233,6 +2029,358 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ezin izan da gako nagusia kalkulatu</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ezin izan da gako nagusia kalkulatu</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ezin izan da gako nagusia kalkulatu</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ezin izan da gako nagusia kalkulatu</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Ez da KeePass datu-basea.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1262,6 +2410,35 @@ Do you want to open it anyway?</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Root</source>
<translation type="unfinished"/>
</message>
@@ -1273,160 +2450,183 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Ez da KeePass datu-basea.</translation>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
+ <source>Invalid group field type number</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
+ <source>Invalid group field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ezin izan da gako nagusia kalkulatu</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <source>Incorrect group creation time field size</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ezin izan da gako nagusia kalkulatu</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
+ <source>Incorrect group expiry time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Errorea</translation>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <source>Incorrect group level field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
+ <source>Invalid group field type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Missing group id or level</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Ireki datu-basea</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Datu-basearen ezarpenak</translation>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Kopiatu erabiltzaile-izena arbelera</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Kopiatu pasahitza arbelera</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
- <translation>Ezarpenak</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Erakutsi tresna-barra</translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
+ <source>Invalid entry creation time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
+ <source>Invalid entry modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 datu-basea</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Fitxategi guztiak</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Writing the database failed.</source>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Errorea</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Datu-basea</translation>
+ </message>
+ <message>
<source>&amp;Recent databases</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Import</source>
+ <translation>Inportatu</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Laguntza</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
- <translation type="unfinished"/>
+ <translation>Sa&amp;rrerak</translation>
</message>
<message>
<source>Copy att&amp;ribute to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Groups</source>
+ <source>Time-based one-time password</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;View</source>
- <translation type="unfinished"/>
+ <source>&amp;Groups</source>
+ <translation>&amp;Taldeak</translation>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation>&amp;Tresnak</translation>
</message>
<message>
<source>&amp;Quit</source>
- <translation type="unfinished"/>
+ <translation>&amp;Irten</translation>
</message>
<message>
<source>&amp;About</source>
+ <translation>&amp;Honi buruz</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
<translation type="unfinished"/>
</message>
<message>
<source>&amp;Save database</source>
- <translation type="unfinished"/>
+ <translation>&amp;Gorde datubasea</translation>
</message>
<message>
<source>&amp;Close database</source>
- <translation type="unfinished"/>
+ <translation>&amp;Itxi datubasea</translation>
</message>
<message>
<source>&amp;New database</source>
- <translation type="unfinished"/>
+ <translation>&amp;Datu-base berria</translation>
</message>
<message>
<source>Merge from KeePassX database</source>
@@ -1434,63 +2634,75 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>&amp;Add new entry</source>
- <translation type="unfinished"/>
+ <translation>&amp;Gehitu sarrera berria</translation>
</message>
<message>
<source>&amp;View/Edit entry</source>
- <translation type="unfinished"/>
+ <translation>&amp;Ikusi/Editatu sarrera</translation>
</message>
<message>
<source>&amp;Delete entry</source>
- <translation type="unfinished"/>
+ <translation>&amp;Ezabatu sarrera</translation>
</message>
<message>
<source>&amp;Add new group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Gehitu talde berria</translation>
</message>
<message>
<source>&amp;Edit group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Editatu taldea</translation>
</message>
<message>
<source>&amp;Delete group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Ezabatu taldea</translation>
</message>
<message>
- <source>&amp;Database settings</source>
+ <source>Sa&amp;ve database as...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Clone entry</source>
+ <source>Change &amp;master key...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Timed one-time password</source>
- <translation type="unfinished"/>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Datu-basearen ezarpenak</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation type="unfinished"/>
+ <source>Database settings</source>
+ <translation>Datu-basearen ezarpenak</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation type="unfinished"/>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Klonatu sarrera</translation>
</message>
<message>
<source>&amp;Find</source>
- <translation type="unfinished"/>
+ <translation>&amp;Bilatu</translation>
</message>
<message>
<source>Copy &amp;username</source>
- <translation type="unfinished"/>
+ <translation>Kopiatu &amp;erabiltzailea</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>Kopiatu erabiltzaile-izena arbelera</translation>
</message>
<message>
<source>Cop&amp;y password</source>
- <translation type="unfinished"/>
+ <translation>Kopiatu pasahitza</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>Kopiatu pasahitza arbelera</translation>
</message>
<message>
<source>&amp;Settings</source>
- <translation type="unfinished"/>
+ <translation>&amp;Ezarpenak</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Pasahitz sortzailea</translation>
</message>
<message>
<source>&amp;Perform Auto-Type</source>
@@ -1506,168 +2718,224 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>&amp;Title</source>
+ <translation>&amp;Izenburua</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<source>&amp;URL</source>
+ <translation>&amp;URL</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<source>&amp;Notes</source>
+ <translation>&amp;Oharrak</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password Generator</source>
- <translation>Pasahitz sortzailea</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Clear history</source>
- <translation>Garbitu historia</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Database</source>
+ <source>Import CSV file...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import</source>
- <translation>Inportatu</translation>
+ <source>Re&amp;pair database...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Tools</source>
+ <source>Show TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Empty recycle bin</source>
+ <source>E&amp;mpty recycle bin</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Clear history</source>
+ <translation>Garbitu historia</translation>
+ </message>
+ <message>
<source>Access error for config file %1</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Ezarpenak</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Quit KeePassXC</source>
<translation>Irten KeePassXC-tik</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation type="unfinished"/>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 datu-basea</translation>
</message>
<message>
- <source>&amp;Help</source>
+ <source>All files</source>
+ <translation>Fitxategi guztiak</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Ireki datu-basea</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Open database...</source>
+ <source>Writing the database failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
+ <source>Please touch the button on your YubiKey!</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Change &amp;master key...</source>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
<message>
- <source>&amp;Export to CSV file...</source>
+ <source>Invalid key file, expecting an OpenSSH key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import KeePass 1 database...</source>
+ <source>PEM boundary mismatch</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import CSV file...</source>
+ <source>Base64 decoding failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;pair database...</source>
+ <source>Key file way too small.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Set up TOTP...</source>
+ <source>Key file magic header id invalid</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>OptionDialog</name>
<message>
- <source>Dialog</source>
- <translation>Elkarrizketa</translation>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>General</source>
- <translation>Orokorra</translation>
+ <source>Failed to read public key.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
+ <source>Corrupted key file, reading private key failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
+ <source>No private key payload to decrypt</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
+ <source>Trying to run KDF without cipher</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Advanced</source>
- <translation>Aurreratua</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
+ <source>Key derivation failed, key file corrupted?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
+ <source>Decryption failed, wrong passphrase?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
+ <source>Unexpected EOF while reading public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP portua:</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Portu lehenetsia: 19455</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
+ <source>Unexpected EOF when writing public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
+ <source>Can&apos;t write private key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <source>Unexpected EOF when writing private key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
+ <source>Unsupported key type: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
+ <source>Unknown cipher: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
+ <source>Cipher IV is too short for MD5 kdf</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <source>Unknown KDF: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
+ <source>Unknown key type: %1</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Elkarrizketa</translation>
+ </message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
<translation>Hau beharrezkoa da ChromeIPass edo PassIFox erabilita datu-baseetara sarbidea izateko</translation>
@@ -1677,6 +2945,15 @@ Using default port 19455.</source>
<translation>Gaitu KeePassHTTP zerbitzaria</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Orokorra</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation type="unfinished"/>
</message>
@@ -1685,6 +2962,10 @@ Using default port 19455.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation type="unfinished"/>
</message>
@@ -1693,26 +2974,107 @@ Using default port 19455.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Pasahitz sortzailea</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Aurreratua</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP portua:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Portu lehenetsia: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Password:</source>
<translation>Pasahitza:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>sendotasuna</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropia</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Pasahitza</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Karaktere motak</translation>
</message>
@@ -1733,38 +3095,50 @@ Change them only if you know what you are doing.</source>
<translation>Karaktere bereziak</translation>
</message>
<message>
- <source>Exclude look-alike characters</source>
+ <source>Extended ASCII</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Accept</source>
- <translation>Onartu</translation>
+ <source>Exclude look-alike characters</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>%p%</source>
+ <source>Pick characters from every group</source>
<translation type="unfinished"/>
</message>
<message>
- <source>strength</source>
- <translation>sendotasuna</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Luzeera:</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropia</translation>
+ <source>Passphrase</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Length:</source>
- <translation type="unfinished"/>
+ <source>Wordlist:</source>
+ <translation>Hitz zerrenda:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation type="unfinished"/>
+ <source>Word Count:</source>
+ <translation>Hitz kopurua:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Hitz banatzailea:</translation>
</message>
<message>
<source>Generate</source>
<translation>Sortu</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Kopiatu</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Onartu</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Itxi</translation>
</message>
@@ -1782,51 +3156,270 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Txarra</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Ahula</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Ona</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Bikaina</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Pasahitza</translation>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Extended ASCII</source>
+ <source>Database hash not available</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
+ <source>Client public key not received</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
+ <source>Cannot decrypt message</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
+ <source>Timeout or cannot connect to KeePassXC</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
+ <source>Action cancelled or denied</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
- <translation>Kopiatu</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>erabiltzaile-izena</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>luzeera</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Editatu sarrera bat.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Sarreraren izenburua.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>Izenburua</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Zerrendatu datu-baseko sarrerak.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Bateratu bi datu-base.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>ezaugarria</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Erakutsiko den sarreraren izena.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation type="unfinished"/>
@@ -1838,7 +3431,7 @@ Change them only if you know what you are doing.</source>
<message>
<source>file empty !
</source>
- <translation type="unfinished"/>
+ <translation>fitxategia hutsik dago!</translation>
</message>
<message>
<source>malformed string</source>
@@ -1849,8 +3442,28 @@ Change them only if you know what you are doing.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – gomendatua)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1869,14 +3482,22 @@ Change them only if you know what you are doing.</source>
<translation>Pasahitza</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Oharrak</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Azken aldaketa</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation type="unfinished"/>
</message>
@@ -1886,114 +3507,121 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Press</source>
- <translation type="unfinished"/>
+ <translation>Sakatu</translation>
</message>
<message>
<source>Passive</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>QtIOCompressor</name>
<message>
- <source>Internal zlib error when compressing: </source>
+ <source>SSH Agent</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error writing to underlying device: </source>
+ <source>Generate a new random diceware passphrase.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error opening underlying device: </source>
+ <source>Word count for the diceware passphrase.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error reading data from underlying device: </source>
+ <source>count</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Internal zlib error when decompressing: </source>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>QtIOCompressor::open</name>
<message>
- <source>The gzip format not supported in this version of zlib.</source>
+ <source>Generate a new random password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Internal zlib error: </source>
+ <source>Length of the generated password.</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
+ <source>Use lowercase characters in the generated password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Search</source>
- <translation>Bilatu</translation>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Clear</source>
- <translation>Garbitu</translation>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Search...</source>
- <translation>Bilatu...</translation>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Limit search to selected group</source>
+ <source>Use extended ASCII in the generated password.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>Service</name>
+ <name>QtIOCompressor</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
+ <source>Internal zlib error when compressing: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>Do you want to update the information in %1 - %2?</source>
+ <source>Error writing to underlying device: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
+ <source>Error opening underlying device: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
+ <source>Error reading data from underlying device: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <source>Internal zlib error when decompressing: </source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <source>The gzip format not supported in this version of zlib.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Removing stored permissions...</source>
+ <source>Internal zlib error: </source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation>Bilatu...</translation>
+ </message>
<message>
- <source>Abort</source>
- <translation type="unfinished"/>
+ <source>Search</source>
+ <translation>Bilatu</translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
+ <source>Clear</source>
+ <translation>Garbitu</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The active database does not contain an entry with permissions.</source>
+ <source>Limit search to selected group</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Service</name>
<message>
<source>KeePassXC: New key association request</source>
<translation type="unfinished"/>
@@ -2009,33 +3637,75 @@ give it a unique name to identify and accept it.</source>
<translation>KeePassXC: Gainidatzi aurreko gakoa?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Eguneratu sarrera</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation type="unfinished"/>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Ez da gakorik aurkitu</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: Removed permissions</source>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Removing stored permissions...</source>
+ <translation>Gordetako baimenak kentzen...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Kendutako baimenak</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
<source>KeePassXC: No entry with permissions found!</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2059,10 +3729,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Oinarrizko ezarpenak</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Gogoratu azken datu-baseak</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Automatikoki gorde irtetean</translation>
</message>
@@ -2071,20 +3757,28 @@ give it a unique name to identify and accept it.</source>
<translation>Automatikoki gorde aldaketa oro eta gero</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimizatu arbelera kopiatzean</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Erabili taldearen ikonoa sarrera sortzean</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Language</source>
- <translation>Hizkuntza</translation>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2095,66 +3789,84 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Load previous databases on startup</source>
+ <source>Hide window to system tray instead of app exit</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically reload the database when modified externally</source>
+ <source>Dark system tray icon</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Hide window to system tray instead of app exit</source>
+ <source>Language</source>
+ <translation>Hizkuntza</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Minimize window at application startup</source>
+ <source>Use entry title to match windows for global Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Basic Settings</source>
- <translation>Oinarrizko ezarpenak</translation>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Remember last key files and security dongles</source>
+ <source>Always ask before performing Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <source>Global Auto-Type shortcut</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Auto-Type</source>
+ <source>Auto-Type delay</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation> ms</translation>
+ </message>
+ <message>
+ <source>Startup</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
+ <source>File Management</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Auto-Type delay</source>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
<translation type="unfinished"/>
</message>
<message>
- <source> ms</source>
+ <source>Backup database file before saving</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Entry Management</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>General</source>
+ <translation>Orokorra</translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation type="unfinished"/>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation type="unfinished"/>
</message>
<message>
@@ -2162,7 +3874,11 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
+ <source>Convenience</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2174,15 +3890,15 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Timeouts</source>
+ <source>Show passwords in cleartext by default</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Convenience</source>
+ <source>Hide passwords in the preview panel</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
+ <source>Hide entry notes by default</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2193,6 +3909,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2202,6 +3922,14 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Key:</source>
+ <translation>Gakoa:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2218,11 +3946,11 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>8 digits</source>
- <translation type="unfinished"/>
+ <translation>8 zifra</translation>
</message>
<message>
<source>6 digits</source>
- <translation type="unfinished"/>
+ <translation>6 zifra</translation>
</message>
<message>
<source>Code size:</source>
@@ -2230,6 +3958,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation type="unfinished"/>
</message>
</context>
@@ -2266,10 +3995,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Ongi etorri KeePassXC-era</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation type="unfinished"/>
</message>
@@ -2293,31 +4018,15 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>main</name>
<message>
- <source>path to a custom config file</source>
+ <source>Welcome to KeePassXC %1</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>main</name>
<message>
- <source>key file of the database</source>
- <translation>datu-basearen gako-fitxategia</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - plataforma anitzeko pasahitz kudeatzailea</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
+ <source>Remove an entry from the database.</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2325,60 +4034,32 @@ give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
+ <source>Path of the entry to remove.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Extract and print the content of a database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Zerrendatu datu-baseko sarrerak.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - plataforma anitzeko pasahitz kudeatzailea</translation>
</message>
<message>
- <source>Path of the group to list. Default is /</source>
+ <source>filenames of the password databases to open (*.kdbx)</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Print the UUIDs of the entries and groups.</source>
+ <source>path to a custom config file</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>Bateratu bi datu-base.</translation>
+ <source>key file of the database</source>
+ <translation>datu-basearen gako-fitxategia</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
+ <source>read password of the database from stdin</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Path of the database to merge from.</source>
+ <source>Parent window handle</source>
<translation type="unfinished"/>
</message>
- <message>
- <source>Use the same password for both database files.</source>
- <translation>Erabili pasahitz bera bi datu-base fitxategietarako.</translation>
- </message>
- <message>
- <source>Show a password.</source>
- <translation>Erakutsi pasahitz bat.</translation>
- </message>
- <message>
- <source>Name of the entry to show.</source>
- <translation>Erakutsiko den sarreraren izena.</translation>
- </message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_fi.ts b/share/translations/keepassx_fi.ts
index c7d61473e..033cc6ea0 100644
--- a/share/translations/keepassx_fi.ts
+++ b/share/translations/keepassx_fi.ts
@@ -10,14 +10,30 @@
<translation>Tietoja</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Ilmoita ongelmista: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC:tä jaellaan GPL-lisenssin (GNU General Public License) version 2 tai (valintasi mukaan) version 3 ehtojen mukaisesti.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Osallistujat</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Katso osallistujat GitHubista&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Vianjäljitystiedot</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Sisällytä seuraavat tiedot aina kun ilmoitat ongelmasta:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Kopioi leikepöydälle</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revisio: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Jakelu: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Kirjastot:</translation>
</message>
@@ -48,33 +68,26 @@ Kernel: %3 %4</translation>
<translation>Käytössä olevat laajennukset:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Ilmoita ongelmista: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC:tä jaellaan GPL-lisenssin (GNU General Public License) version 2 tai (valintasi mukaan) version 3 ehtojen mukaisesti.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Projektin ylläpitäjät:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Katso osallistujat GitHubista&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Sisällytä seuraavat tiedot aina kun ilmoitat ongelmasta:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>KeePassXC-tiimi antaa erityiskiitokset KeePassX-ohjelman alkuperäiselle luojalle debfx:lle</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation type="unfinished"/>
+ <source>Build Type: %1
+</source>
+ <translation>Julkaisun tyyppi: %1</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP - Vahvista pääsy</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Muista tämä valinta</translation>
</message>
@@ -89,12 +102,15 @@ Kernel: %3 %4</translation>
<message>
<source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source>
- <translation>%1 pyytää pääsyä seuraavien alkioiden salasanoihin.
+ <translation>%1 pyytää pääsyä seuraavien tietueiden salasanoihin.
Ole hyvä ja valitse sallitaanko pääsy.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP - Vahvista pääsy</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Käytä SSH-agenttia (vaatii uudelleenkäynnistyksen)</translation>
</message>
</context>
<context>
@@ -105,7 +121,27 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
- <translation>Automaattitäydennys - KeePassXC</translation>
+ <translation>Automaattisyöttö - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Automaattisyöttö</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Automaattisyötön syntaksi on virheellinen!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Tämän automaattisyötön komento sisältää pitkän viiveen. Oletko varma, että haluat jatkaa?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Tämän automaattisyötön komento sisältää hitaita näppäinpainalluksia. Oletko varma, että haluat jatkaa?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Tämän automaattisyötön komento sisältää parametreja joita toistetaan usein. Oletko varma, että haluat jatkaa?</translation>
</message>
</context>
<context>
@@ -124,14 +160,317 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Ryhmä</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Otsikko</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Käyttäjätunnus</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekvenssi</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Automaattitäydennys - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Valitse merkintä automaattitäydennystä varten:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Automaattitäydennys - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser - Vahvista pääsy</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Muista tämä valinta</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Salli</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Estä</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 pyytää pääsyä seuraavien tietueiden salasanoihin.
+Ole hyvä ja valitse sallitaanko pääsy.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogi</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Tämä vaaditaan, jotta tietokantoja voidaan käyttää KeePassXC-Browser -selainlaajennuksella</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Käytä KeepassXC:n selainintegraatiota</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Yleistä</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Käytä integraatiota seuraaville selaimille:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Näytä &amp;ilmoitus, kun tilitietoja pyydetään</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Pyyd&amp;ä tietokannan lukituksen avaamista, jos se on lukittu</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Vain tietueet samalla skeemalla (http://, https://, ...) palautetaan.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>Sovita verkko-osoitteen kaavaan (esim. https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Palauta vain parhaat osumat tietystä osoitteesta verkkotunnuksen kaikkien osumien sijasta</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Palauta vain parhaiten vastaavat tilitiedot</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Järjestä &amp;vastaavat tilitiedot nimen mukaan</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Jä&amp;rjestä vastaavat tilitiedot käyttäjätunnuksen mukaan</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Katkaise yhteys kaikkiin selaimiin</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Unohda kaikki muistetut &amp;oikeudet</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Lisäasetukset</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;Älä koskaan kysy ennen pääsyä tilitietoihin</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Älä koskaan k&amp;ysy ennen tilitietojen päivittämistä</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Vain valittu tietokanta tulee olla yhdistetty asiakkaan kanssa.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>%Etsi kaikista avoinna olevista tietokannoista vastaavia tilitietoja</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automaattinen lisäjonokenttien luonti tai päivittäminen ei ole tuettu</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Palauta lisämerkkijonokentät jotka alkavat &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Päivittää KeePassXC:n tai välitysohjelman polun automaattisesti native messaging -rajapinnan skripteihin käynnistyksen yhteydessä</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Päivitä native messaging -rajapinnan skriptit automaattisesti ohjelman käynnistyessä</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Käytä välitysohjelmaa KeePassXC:n ja selainlaajennuksen välillä</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Käytä välitysohjelmaa KeePassXC:n ja selainlaajennuksen välillä</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Käytä mukautettua välitysohjelmaa mikäli olet asentanut sellaisen manuaalisesti</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Valitse mukautettu välitysohjelma</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Selaa...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Varoitus:&lt;/b&gt; Seuraavat valinnat voivat olla vaarallisia!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Suoritettavat tiedostot (*.exe);;Kaikki tiedostot (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Suoritettavat tiedostot (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Valitse mukautettu välitysohjelma</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Uusi avaimenliittämispyyntö</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Olet saanut avainlittämispyynnön yllä olevalle avaimelle
+Jos haluat antaa sille pääsyoikeuden KeePassXC-tietokantaasi,
+anna tunnisteelle nimi ja hyväksy.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Tallenna ja salli pääsy</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Korvataanko olemassa oleva avain?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Jaettu salausavain samalla nimellä &quot;%1&quot; on jo olemassa.
+Haluatko korvata sen?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Päivitä tietue</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Haluatko päivittää tiedot osoitteesta %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Tietokanta lukittu!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Aktiivinen tietokanta on lukittu!
+Avaa valittu tietokanta tai valitse toinen avattu tietokanta.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Asetukset eivät ole käytettävissä!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Aktiivinen tietokanta ei sisällä asetustietuetta</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Avaimia ei löytynyt</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Jaettuja salausavaimia ei löytynyt KeePassXC-asetuksista</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Poistettiin avaimet tietokannasta</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Poistettiin %n salausavain(ta) KeePassXC-asetuksista.</numerusform><numerusform>Poistettiin %n salausavain(ta) KeePassXC-asetuksista.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Poistetaan talletettuja oikeuksia…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Keskeytä</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Poistetut käyttöoikeudet</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Poistettiin käyttöoikeudet %1:n tietueen tiedoista.</numerusform><numerusform>Poistettiin käyttöoikeudet %1:n tietueen tiedoista.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Tietuetta käyttöoikeuksilla ei löytynyt!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Aktiivinen tietokanta ei sisällä yhtään tietuetta käyttöoikeuksien kanssa.</translation>
</message>
</context>
<context>
@@ -149,6 +488,10 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<translation>Toista salasana:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>Avaintiedosto</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Selaa</translation>
</message>
@@ -157,6 +500,14 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<translation>Luo</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>&amp;Haaste ja vastaus</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Päivitä</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Avaintiedostot</translation>
</message>
@@ -177,6 +528,10 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<translation>Valitse avaintiedosto</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Tyhjä salasana</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Haluatko varmasti asettaa tyhjän merkkijonon salasanaksi?</translation>
</message>
@@ -191,20 +546,18 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Avaintiedosto</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>&amp;Haaste ja vastaus</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Päivitä</translation>
+ <source>Legacy key file format</source>
+ <translation>Vanha avaintiedostomuoto</translation>
</message>
<message>
- <source>Empty password</source>
- <translation>Tyhjä salasana</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Käytät vanhaa avaintiedostomuotoa joka ei ole
+välttämättä tuettu tulevaisuudessa.
+
+Ole hyvä ja harkitse uuden avaintiedoston luomista.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,16 +571,16 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<translation>Kopiointiasetukset</translation>
</message>
<message>
- <source>Replace username and password with references</source>
- <translation type="unfinished"/>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Lisää &apos; - Klooni&apos; otsikkoon</translation>
</message>
<message>
- <source>Copy history</source>
- <translation>Kopiointi historia</translation>
+ <source>Replace username and password with references</source>
+ <translation>Korvaa käyttäjänimi ja salasana viittauksilla</translation>
</message>
<message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Lisää &apos; - Klooni&apos; otsikkoon</translation>
+ <source>Copy history</source>
+ <translation>Kopiointihistoria</translation>
</message>
</context>
<context>
@@ -250,11 +603,11 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
</message>
<message>
<source>Codec</source>
- <translation type="unfinished"/>
+ <translation>Koodekki</translation>
</message>
<message>
<source>Text is qualified by</source>
- <translation type="unfinished"/>
+ <translation>Teksti on määritelty merkeillä</translation>
</message>
<message>
<source>Fields are separated by</source>
@@ -266,11 +619,11 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
</message>
<message>
<source>First record has field names</source>
- <translation type="unfinished"/>
+ <translation>Ensimmäinen tietue sisältää kenttien nimet</translation>
</message>
<message>
<source>Number of headers line to discard</source>
- <translation type="unfinished"/>
+ <translation>Hylättävissä olevien otsakerivien lukumäärä</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
@@ -310,7 +663,7 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
</message>
<message>
<source> more messages skipped]</source>
- <translation type="unfinished"/>
+ <translation>viestiä lisää ohitettu]</translation>
</message>
<message>
<source>Error</source>
@@ -319,16 +672,13 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<message>
<source>CSV import: writer has errors:
</source>
- <translation type="unfinished"/>
+ <translation>CSV:n tuonti: kirjoittamisessa tapahtui virhe:
+</translation>
</message>
</context>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Tuo CSV-tiedosto</translation>
- </message>
- <message>
<source>Error</source>
<translation>Virhe</translation>
</message>
@@ -339,17 +689,17 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> tavu, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n tavua,</numerusform><numerusform>%n tavua,</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>rivit,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n riviä,</numerusform><numerusform>%n riviä,</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>sarakkeet</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n saraketta</numerusform><numerusform>%n saraketta</numerusform></translation>
</message>
</context>
<context>
@@ -371,6 +721,14 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<translation>Selaa</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Päivitä</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Haaste/vastaus:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Tietokannan avaaminen ei onnistunut.</translation>
</message>
@@ -379,6 +737,24 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<translation>Avaintiedostoa ei voitu avata</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Vanha avaintiedostomuoto</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Käytät vanhaa avaintiedostomuotoa joka ei ole
+välttämättä tuettu tulevaisuudessa.
+
+Ole hyvä ja harkitse uuden avaintiedoston luomista.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Älä näytä tätä varoitusta uudelleen</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Kaikki tiedostot</translation>
</message>
@@ -390,14 +766,6 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<source>Select key file</source>
<translation>Valitse avaintiedosto</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Päivitä</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Haaste/vastaus:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -414,14 +782,14 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
<translation>Avaintiedoston avaaminen epäonnistui</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Tietokannan avaaminen onnistui. Ei tehtävää.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Tietokannan avaaminen epäonnistui.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Tietokannan avaaminen onnistui. Ei tehtävää.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Onnistui!</translation>
</message>
@@ -439,6 +807,108 @@ Voit nyt tallentaa sen.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
+ <source>General</source>
+ <translation>Yleistä</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>Salaus</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Iteraatioiden lukumäärä on liian suuri</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Käytät todella suurta lukua iteraatioiden määränä avaimen muunnoksen yhteydessä Argon2:lla.
+
+Jos pidät tämän arvon, tietokannan avauksessa voi kestää tunteja tai päiviä (tai jopa pidempään)!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Ymmärrän, säilytä numero</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Peruuta</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Iteraatioiden lukumäärä on liian pieni</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Käytät todella pientä lukua iteraatioiden määränä avaimen muunnoksessa AES-KDF:llä.
+
+Jos pidät tämän arvon, tietokanta voi olla liian helppo murtaa!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>Avainmuunnosfunktio ei ole muuttunut</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Avaimen muunnos uusia KDF-parametreja käyttäen epäonnistui; KDF:ää ei muutettu.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> Mt</numerusform><numerusform> Mt</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform> säie(ttä)</numerusform><numerusform> säie(ttä)</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Salausalgoritmi:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (oletus)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Avainmuunnosfunktio:</translation>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>Muunnositeraatioita:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation>Laske parametrit 1:n sekunnin viiveelle</translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>Muistin käyttö:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Rinnakkaisuus:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Tietokannan metatiedot</translation>
+ </message>
+ <message>
<source>Database name:</source>
<translation>Tietokannan nimi:</translation>
</message>
@@ -447,50 +917,43 @@ Voit nyt tallentaa sen.</translation>
<translation>Tietokannan kuvaus:</translation>
</message>
<message>
- <source>Transform rounds:</source>
- <translation>Muunnoskierroksia:</translation>
- </message>
- <message>
<source>Default username:</source>
<translation>Oletuskäyttäjänimi:</translation>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
- </message>
- <message>
- <source>Benchmark</source>
- <translation>Suorituskykytesti</translation>
+ <source>History Settings</source>
+ <translation>Historia-asetukset</translation>
</message>
<message>
<source>Max. history items:</source>
- <translation>Maks. historia-alkioiden lukumäärä:</translation>
+ <translation>Maks. historiamerkintöjen lukumäärä:</translation>
</message>
<message>
<source>Max. history size:</source>
<translation>Maks. historian koko:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Käytä roskakoria</translation>
+ <source> MiB</source>
+ <translation> Mt</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (oletus)</translation>
+ <source>Use recycle bin</source>
+ <translation>Käytä roskakoria</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation>Tietokannan lisäasetukset</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmi:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Ota käyttöön &amp;pakkaus (suositeltava)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Juuri</translation>
</message>
<message>
@@ -510,22 +973,48 @@ Voit nyt tallentaa sen.</translation>
<translation>Tiedostoa ei löytynyt!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Avaa KeePass 1 -tietokanta</translation>
+ <source>Unable to open the database.</source>
+ <translation>Tietokannan avaaminen ei onnistunut.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 -tietokanta</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Tiedosto on avattu &quot;vain luku&quot;-tilassa.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Avaa CSV-tiedosto</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV-tiedosto</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Kaikki tiedostot(*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Yhdistä tietokanta</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Avaa KeePass 1 -tietokanta</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 -tietokanta</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Sulje?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; on muokkaustilassa.
+Hylkää muutokset ja sulje?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Tallenna muutokset?</translation>
</message>
@@ -540,10 +1029,22 @@ Tallennetaanko muutokset?</translation>
<translation>Tietokannan kirjoitus levylle epäonnistui.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Salasanat</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Tallenna tietokanta nimellä</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Vie tietokanta CSV-tiedostoon</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>CSV-tiedoston kirjoitus levylle epäonnistui.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Uusi tietokanta</translation>
</message>
@@ -562,12 +1063,6 @@ Please press cancel to finish your changes or discard them.</source>
Paina Peruuta jos haluat viimeistellä muutoksesi, muussa tapauksessa muutoksesi hylätään.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Tätä tietokantaa ei ole koskaan tallennettu.
-Voit tallentaa tietokannan tai lopettaa sen lukituksen.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -576,119 +1071,81 @@ Haluatko tallentaa tietokannan ennen sen lukitsemista?
Jos et tallenna, muutokset hylätään.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; on muokkaustilassa.
-Hylkää muutokset ja sulje?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Vie tietokanta CSV-tiedostoon</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV-tiedosto</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>CSV-tiedoston kirjoitus levylle epäonnistui.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Tietokannan avaaminen ei onnistunut.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Yhdistä tietokanta</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Tietokanta jota yrität avata on avoinna toisessa KeePassXC-ikkunassa.
-Haluatko tallentaa tietokannan siitä huolimatta?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Salasanat</translation>
+ <source>Disable safe saves?</source>
+ <translation>Ota turvallinen tallennus pois käytöstä?</translation>
</message>
<message>
- <source>Database already opened</source>
- <translation>Tietokanta on jo avattu</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Tietokanta, jota yrität avata, on jo avattu toisessa KeePassXC-instanssissa.
-
-Haluatko avata tietokannan silti?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Avaa &quot;vain luku&quot;-tilassa</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Tiedosto on avattu &quot;vain luku&quot;-tilassa.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Avaa CSV-tiedosto</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC on epäonnistunut useaan otteeseen tietokannan tallentamisessa. Tämä johtuu luultavasti tiedostojen synkronoinnista, joka pitää tiedostoa lukittuna.
+Ota turvallinen tallennus pois käytöstä ja yritä uudelleen?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Etsitään...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Vaihda pääsalasana</translation>
</message>
<message>
<source>Delete entry?</source>
- <translation>Poista merkintä?</translation>
+ <translation>Poista tietue?</translation>
</message>
<message>
<source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
- <translation>Haluatko varmasti poistaa merkinnän &quot;%1&quot;, lopullisesti?</translation>
+ <translation>Haluatko varmasti poistaa tietueen &quot;%1&quot; lopullisesti?</translation>
</message>
<message>
<source>Delete entries?</source>
- <translation>Poista alkiot?</translation>
+ <translation>Poista tietueet?</translation>
</message>
<message>
<source>Do you really want to delete %1 entries for good?</source>
- <translation>Haluatko varmasti poistaa alkiot %1, lopullisesti?</translation>
+ <translation>Haluatko varmasti poistaa %1 tietuetta lopullisesti?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Siirrä tietue roskakoriin?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Haluatko varmasti siirtää tietueen &quot;%1&quot; roskakoriin?</translation>
</message>
<message>
<source>Move entries to recycle bin?</source>
- <translation>Siirrä alkiot roskakoriin?</translation>
+ <translation>Siirrä tietueet roskakoriin?</translation>
</message>
<message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation><numerusform>Haluatko varmasti siirtää %n kappaletta alkioita roskakoriin?</numerusform><numerusform>Haluatko varmasti siirtää %n merkintää roskakoriin?</numerusform></translation>
+ <translation><numerusform>Haluatko varmasti siirtää %n kappaletta alkioita roskakoriin?</numerusform><numerusform>Haluatko varmasti siirtää %n tietuetta roskakoriin?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Poista ryhmä?</translation>
+ <source>Execute command?</source>
+ <translation>Suorita komento?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Haluatko varmasti poistaa ryhmän &quot;%1&quot;, lopullisesti?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Haluatko varmasti suorittaa seuraavan komennon?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Pääavaimen laskeminen ei onnistu</translation>
+ <source>Remember my choice</source>
+ <translation>Muista valintani</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Siirrä merkintä roskakoriin?</translation>
+ <source>Delete group?</source>
+ <translation>Poista ryhmä?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Haluatko varmasti siirtää tietueen &quot;%1&quot; roskakoriin?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Haluatko varmasti poistaa ryhmän &quot;%1&quot; lopullisesti?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Etsitään...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Pääavaimen laskeminen ei onnistu</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1164,8 @@ Haluatko avata tietokannan silti?</translation>
<translation>Ei tuloksia.</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Suorita komento?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Haluatko varmasti suorittaa seuraavan komennon?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Muista valintani</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Automaattilatauksen pyyntö</translation>
+ <source>File has changed</source>
+ <translation>Tiedosto on muuttunut</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,12 +1176,14 @@ Haluatko avata tietokannan silti?</translation>
<translation>Yhdistämispyyntö</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Tietokantatiedosto on muuttunut ja sinulla on tallentamattomia muutoksia. Haluatko yhdistää tekemäsi muutokset?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Tietokantatiedosto on muuttunut, ja sinulla on tallentamattomia muutoksia.
+Haluatko yhdistää muutoksesi?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
- <translation type="unfinished"/>
+ <translation>Uutta tietokantaa ei voitu avata, sillä tätä tietokantaa yritetään uudelleenavata samanaikaisesti.</translation>
</message>
<message>
<source>Empty recycle bin?</source>
@@ -748,10 +1195,93 @@ Haluatko avata tietokannan silti?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Luo aikapohjaisen salasanan (TOTP) tunniste</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Sulje</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Yleistä</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Salasana</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Vanhentumisaika</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Käyttäjätunnus</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Automaattitäydennys</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Etsitään</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Attribuutit</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Liitteet</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Muistiinpanot</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Ikkuna</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekvenssi</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Etsi</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Tyhjennä</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Ei koskaan</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[SUOJATTU]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Pois käytöstä</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Käytössä</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
- <translation>Merkintä</translation>
+ <translation>Tietue</translation>
</message>
<message>
<source>Advanced</source>
@@ -774,16 +1304,40 @@ Haluatko avata tietokannan silti?</translation>
<translation>Historia</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH-agentti</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ei saatavilla</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(salattu)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Valitse yksityinen avain</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Tiedosto on liian suuri ollakseen yksityinen avain</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Yksityisen avaimen avaaminen epäonnistui</translation>
+ </message>
+ <message>
<source>Entry history</source>
- <translation>Alkioiden historia</translation>
+ <translation>Tietueiden historia</translation>
</message>
<message>
<source>Add entry</source>
- <translation>Lisää alkio</translation>
+ <translation>Lisää tietue</translation>
</message>
<message>
<source>Edit entry</source>
- <translation>Muokkaa alkiota</translation>
+ <translation>Muokkaa tietuetta</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -794,22 +1348,20 @@ Haluatko avata tietokannan silti?</translation>
<translation>Uusi attribuutti</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Valitse tiedosto</translation>
+ <source>Confirm Remove</source>
+ <translation>Vahvista poisto</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Tiedoston avaus ei onnistu</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Haluatko varmasti poistaa tämän attribuutin?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Tallenna liite</translation>
+ <source>[PROTECTED]</source>
+ <translation>[SUOJATTU]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Liitteen tallentaminen ei onnistu:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Paina Paljasta näyttääksesi tai muokataksesi</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1380,16 @@ Haluatko avata tietokannan silti?</translation>
<translation>1 vuosi</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Vahvista poisto</translation>
+ <source>Apply generated password?</source>
+ <translation>Käytä luotua salasanaa?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Haluatko varmasti poistaa tämän attribuutin?</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Haluatko ottaa käyttöön luodun salasanan tälle tietueelle?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Haluatko varmasti poistaa tämän liitteen?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Tietue päivitetty onnistuneesti.</translation>
</message>
</context>
<context>
@@ -859,18 +1407,6 @@ Haluatko avata tietokannan silti?</translation>
<translation>Poista</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Liitteet</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Tallenna</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Avaa</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Muokkaa nimeä</translation>
</message>
@@ -882,24 +1418,24 @@ Haluatko avata tietokannan silti?</translation>
<source>Reveal</source>
<translation>Paljasta</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Salli automaattitäydennys tälle merkinnälle</translation>
+ <source>Attachments</source>
+ <translation>Liitteet</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Korostusväri:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Taustaväri:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Ikkunan otsikko:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Salli automaattitäydennys tälle merkinnälle</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -907,19 +1443,27 @@ Haluatko avata tietokannan silti?</translation>
</message>
<message>
<source>&amp;Use custom Auto-Type sequence:</source>
- <translation type="unfinished"/>
+ <translation>&amp;Käytä mukautettua automaattitäydennyksen sekvenssiä:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation type="unfinished"/>
+ <source>Window Associations</source>
+ <translation>Ikkunoiden yhteysasetukset</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation type="unfinished"/>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation type="unfinished"/>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Ikkunan otsikko:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Käytä tiettyä sekvenssiä tälle liitokselle:</translation>
</message>
</context>
<context>
@@ -944,12 +1488,8 @@ Haluatko avata tietokannan silti?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Otsikko:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Käyttäjänimi</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1500,104 @@ Haluatko avata tietokannan silti?</translation>
<translation>Toista:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Otsikko:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Erääntyy</translation>
+ <source>Notes</source>
+ <translation>Muistiinpanot</translation>
</message>
<message>
<source>Presets</source>
<translation>Esiasetus</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Muistiinpanot:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Ruksi valintaruutu näyttääksesi huomautusosio.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Käyttäjänimi</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Erääntyy</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Lomake</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Poista avain agentilta viiveellä</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>s</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Sormenjälki</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Poista avain agentista kun tietokanta on suljettu/lukittu</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Julkinen avain</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Lisää avain agenttiin kun tietokanta on avattu/lukitus avattu</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Kommentti</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Pura salaus</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ei saatavilla</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Kopioi leikepöydälle</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Yksityinen avain</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Ulkoinen tiedosto</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Selaa...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Liite</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Lisää agenttiin</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Poista agentista</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Vaadi käyttäjävahvistusta kun avainta käytetään</translation>
</message>
</context>
<context>
@@ -1035,16 +1659,24 @@ Haluatko avata tietokannan silti?</translation>
</message>
<message>
<source>&amp;Use default Auto-Type sequence of parent group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Peri auromaattitäydennyksen sekvenssi isäntäryhmältä</translation>
</message>
<message>
<source>Set default Auto-Type se&amp;quence</source>
- <translation type="unfinished"/>
+ <translation>Aseta automaattitäydennyksen &amp;oletussekvenssi</translation>
</message>
</context>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Käytä oletuskuvaketta</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Kä&amp;ytä mukautettua kuvaketta</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Lisää mukautettu kuvake</translation>
</message>
@@ -1053,6 +1685,18 @@ Haluatko avata tietokannan silti?</translation>
<translation>Poista mukautettu kuvake</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Lataa favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Faviconin noutaminen ei onnistu</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Vinkki: voit asettaa Googlen varajärjestelmäksi kohdassa Työkalut &gt; Asetukset &gt; Turvallisuus</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Kuvat</translation>
</message>
@@ -1065,24 +1709,12 @@ Haluatko avata tietokannan silti?</translation>
<translation>Valitse kuva</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Lataa favicon</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Faviconin noutaminen ei onnistu</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Kuvaketta ei voida lukea</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Käytä oletuskuvaketta</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Kä&amp;ytä mukautettua kuvaketta</translation>
+ <source>Custom icon already exists</source>
+ <translation>Mukautettu kuvake on jo olemassa</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1724,6 @@ Haluatko avata tietokannan silti?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Tämä kuvake on %1 tietueen käytössä, ja se korvataan oletuskuvakkeella. Haluatko varmasti poistaa tämän kuvakkeen?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Vinkki: voit asettaa Googlen varajärjestelmäksi kohdassa Työkalut &gt; Asetukset &gt; Turvallisuus</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,12 +1743,127 @@ Haluatko avata tietokannan silti?</translation>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Liitännäistiedot</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Poista</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Poista liitännäistiedot?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Haluatko varmasti poistaa valitun liitännäistiedon?
+Tämä voi vikaannuttaa tietoa käyttävän liitännäisen.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Avain</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Arvo</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
- <translation>- Klooni</translation>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - Klooni</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nimi</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Koko</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Lomake</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Lisää</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Poista</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Avaa</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Tallenna</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Valitse tiedostot</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Haluatko varmasti poistaa %n liitettä?</numerusform><numerusform>Haluatko varmasti poistaa %n liitettä?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Vahvista poisto</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Tallenna liitteet</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Hakemiston luominen epäonnistui:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Haluatko varmasti korvata tiedoston &quot;%1&quot; tällä liitteellä?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Vahvista korvaaminen</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Liitteiden tallentaminen epäonnistui:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Liitteen avaaminen epäonnistui:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Liitteiden avaaminen epäonnistui:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Tiedostojen avaaminen epäonnistui:
+%1</translation>
</message>
</context>
<context>
@@ -1156,6 +1895,11 @@ Haluatko avata tietokannan silti?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Viittaus:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Ryhmä</translation>
</message>
@@ -1172,8 +1916,66 @@ Haluatko avata tietokannan silti?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
+ <source>Never</source>
+ <translation>Ei koskaan</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Salasana</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Muistiinpanot</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Erääntyy</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Luotu</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Muokattu</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Käytetty</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Liitteet</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Muokkaa näkymää</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Piilota käyttäjänimet</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Piilota salasanat</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Sovita ikkunaan</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Sovita sisältöön</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Palauta oletusasetukset</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1185,6 +1987,17 @@ Haluatko avata tietokannan silti?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Tiedostoa ei voi tallentaa!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Native messaging -skriptiä ei voitu tallentaa.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2047,10 @@ Haluatko avata tietokannan silti?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Varmista, että salasana sisältää merkkejä jokaisesta ryhmästä</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Laajennettu ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2064,361 @@ Haluatko avata tietokannan silti?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Pääavaimen laskeminen ei onnistu</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Haaste-vastauksen tekeminen epäonnistui.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Väärä avain tai tietokanta on korruptoitunut.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Haaste-vastauksen tekeminen epäonnistui.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Pääavaimen laskeminen ei onnistu</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>tietokannan otsaketiedot puuttuvat</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Pääavaimen laskeminen ei onnistu</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Virheellinen otsaketietojen tarkistussumman koko</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Yhteensopimaton SHA256-otsaketieto</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Väärä avain tai tietokantatiedosto on rikki. (HMAC ei täsmää)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Tuntematon salaus</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Virheellinen otsaketietojen id:n koko</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Virhellinen otsaketietojen kentän koko</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Virheellinen otsaketietojen sisällön koko</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Puskurin avaaminen avaimenluontifunktion parametreja varten tiedoston alkuosassa epäonnistui</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Avainmuunnosfunktio (KDF) ei ole tuettu, tai virheelliset parametrit</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>KDBX4-tiedostosta löytyi vanhentuneita otsaketietoja</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Virheellinen sisemmän otsaketiedon tunnisteen koko</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Virheellinen sisemmän otsaketiedon kentän pituus</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Virheellinen sisemmän otsaketiedon binäärikoko</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>KeePass -variant-kartan versio ei ole tuettu.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan tietuenimen pituus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan tietueen nimen sisältö</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan tietueen arvon pituus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan tietueen arvon sisältä</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan Bool-arvon pituus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan Int32-arvon pituus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan Uint32-arvon pituus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan Int64-arvon pituus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan Uint64-arvon pituus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan tietueen tyyppi</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Virheellinen variant-kartan kenttätyypin koko</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Virheellinen symmetrinen salausalgoritmi.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Virheellinen symmetrisen salauksen alustussektorin (IV) koko.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Pääavaimen laskeminen ei onnistu</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>KDF-parametrien serialisointi variant-karttaan epäonnistui</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Virheellinen salauksen uuid:n pituus</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Salausta ei tueta</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Virheellinen pakkauslippujen pituus</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Ei-tuettu pakkausalgoritmi</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Virheellinen pääavainsiemenen koko</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Virheellinen avainmuunnossiemenen koko</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Virheellinen avainmuunnoskertoimen koko</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Virheellinen avaustavujen koko</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Virheellinen satunnaistietovuon tietueen koko</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Virheellinen sisäisen satunnaistietovuon salaus</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Tiedosto ei ole KeePass-tietokanta</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Valittu tiedosto on vanha KeePass 1 -tietokanta (.kdb).
+
+Voit tuoda sen Tietokanta-valikosta &gt; &apos;Tuo KeePass 1 -tietokanta&apos;
+Tämä muunnos toimii yhdensuuntaisesti. Et välttämättä saa enää tietokantaa auki vanhalla KeePassX 0.4 -versiolla.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Ei-tuettu KeePass 2 -tietokantaversio.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML-jäsentämisen virhe: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Ei isäntäryhmää</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Kuvakkeen uuid tai tiedot puuttuvat</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Itse valittu sisältöavain tai -arvo puuttuu</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Useita ryhmäelementtejä</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Tyhjä ryhmän uuid</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Virhellinen ryhmän kuvakkeen numeroarvo</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Virheellinen EnableAutoType-arvo</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Virheellinen EnableSearching-arvo</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Ryhmän uuid:tä ei löydy</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Tyhjä uudi-arvo objektia tuhotessa (DeleteObject)</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Tuhotun objektin (DeletedObject) uuid tai aika puuttuu</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Tyhjä tietueen uuid (null)</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Virhellinen ryhmän kuvakkeen numeroarvo</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Historiaelementti historiatietueessa</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Tietueen uuid:tä ei löydy</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Historiaelementti eri uuid:llä</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Tietueen merkkijonon salausta ei voitu purkaa</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Itse valittu attribuutti on jo olemassa</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Tietueen merkkijonoavain tai -arvo puuttuu</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Liite on jo olemassa</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Tietueen binääriavain tai -arvo puuttuu</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Automaattisyötön ikkunan liitos tai sekvenssi puuttuu</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Virheellinen boolean-arvo</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Virheellinen päivämääräarvo</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Virheellinen väriarvo</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Virheellinen RGB-väriarvo</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Virheellinen numeroarvo</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Virheellinen uuid-arvo</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Binääriä ei voitu purkaa</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2448,35 @@ Haluatko avata tietokannan silti?</translation>
<translation>Tukematon KeePass-tietokantaversio</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Salauksen alustusvektoria ei voitu lukea</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Virheellinen määrä ryhmiä</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Virheellinen määrä tietueita</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Virheellinen sisältötarkisteen koko</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Virheellinen avainmuunnossiemenen koko</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Virheellinen määrä muunnoskertoimia</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Ryhmän puuta ei voitu rakentaa</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Juuri</translation>
</message>
@@ -1287,124 +2488,139 @@ Haluatko avata tietokannan silti?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Väärä avain tai tietokanta on korruptoitunut.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Tiedosto ei ole KeePass-tietokanta</translation>
+ <source>Key transformation failed</source>
+ <translation>Avaimen muuttaminen epäonnistui</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Tukematon KeePass-tietokantaversio</translation>
+ <source>Invalid group field type number</source>
+ <translation>Virheellinen ryhmän kenttätyypin numero</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Väärä avain tai tietokanta on korruptoitunut.</translation>
+ <source>Invalid group field size</source>
+ <translation>Virheellinen ryhmän kentän koko</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Pääavaimen laskeminen ei onnistu</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Luetun ryhmän kentän sisältö ei vastaa sen kokoa</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group id field size</source>
+ <translation>Virheellinen ryhmän tunnistekentän koko</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group creation time field size</source>
+ <translation>Virheellinen ryhmän luomisajan kentän koko</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group modification time field size</source>
+ <translation>Virheellinen ryhmän muokkausajan kentän koko</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Pääavaimen laskeminen ei onnistu</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Virheellinen ryhmän hakuajan kentän koko</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Virheellinen ryhmän vanhentumisajan kentän koko</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Virhe</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Virheellinen ryhmän ikonikentän koko</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group level field size</source>
+ <translation>Virheellinen ryhmän tasokentän koko</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Toinen KeePassXC-instanssi on jo käynnissä.</translation>
+ <source>Invalid group field type</source>
+ <translation>Virheellinen ryhmän kentän tyyppi</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation type="unfinished"/>
+ <source>Missing group id or level</source>
+ <translation>Ryhmän tunniste tai taso puuttuu</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Avaa tietokanta</translation>
+ <source>Missing entry field type number</source>
+ <translation>Tietueen kentän tyyppinumero puuttuu</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Tietokannan asetukset</translation>
+ <source>Invalid entry field size</source>
+ <translation>Virheellinen tietueen kentän koko</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Kopioi käyttäjätunnus leikepöydälle</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Luetun tietueen kentän sisältö ei vastaa sen kokoa</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Kopioi salasana leikepöydälle</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Virheellinen tietueen uuid-kentän koko</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Asetukset</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Virheellinen tietueen ryhmän tunnistekentän koko</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Näytä työkalupalkki</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Virheellinen tietueen ikonikentän koko</translation>
</message>
<message>
- <source>read-only</source>
- <translation>vain-luku</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Virheellinen tietueen luomisajan kentän koko</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation type="unfinished"/>
+ <source>Invalid entry modification time field size</source>
+ <translation>Virhellinen tietueen muokkausajan kentän koko</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Keepass 2 -tietokanta</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Virheellinen tietueen vanhentumisajan kentän koko</translation>
</message>
<message>
- <source>All files</source>
- <translation>Kaikki tiedostot</translation>
+ <source>Invalid entry field type</source>
+ <translation>Virheellinen tietueen kentän tyyppi</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Tallenna korjattu tietokanta</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Olemassa oleva yhden instanssin lukkotiedosto on virheellinen. Avataan uusi instanssi.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Tietokannan kirjoitus levylle epäonnistui.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Lukkotiedosto ei voitu luoda. Yhden instanssin tila otettu pois käytöstä.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Toinen KeePassXC-instanssi on jo käynnissä.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Vakava virhe kryptografisia toimintoa testattaessa.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Virhe</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Tietokanta</translation>
</message>
<message>
<source>&amp;Recent databases</source>
- <translation>Viimeisimmät tietokannat</translation>
+ <translation>&amp;Viimeisimmät tietokannat</translation>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation>Tuo</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Ohje</translation>
</message>
<message>
<source>E&amp;ntries</source>
@@ -1415,32 +2631,40 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Kopioi att&amp;ribuutti leikepöydälle</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Ajastettu kertakäyttöinen salasana</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
- <translation>Ryhmät</translation>
+ <translation>&amp;Ryhmät</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>Näkymä</translation>
+ <source>&amp;Tools</source>
+ <translation>T&amp;yökalut</translation>
</message>
<message>
<source>&amp;Quit</source>
- <translation>Lopeta</translation>
+ <translation>L&amp;opeta</translation>
</message>
<message>
<source>&amp;About</source>
- <translation>Tietoja</translation>
+ <translation>T&amp;ietoja</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Avaa tietokanta...</translation>
</message>
<message>
<source>&amp;Save database</source>
- <translation>Tallenna tietokanta</translation>
+ <translation>&amp;Tallenna tietokanta</translation>
</message>
<message>
<source>&amp;Close database</source>
- <translation>Sulje tietokanta</translation>
+ <translation>&amp;Sulje tietokanta</translation>
</message>
<message>
<source>&amp;New database</source>
- <translation>Uusi tietokanta</translation>
+ <translation>&amp;Uusi tietokanta</translation>
</message>
<message>
<source>Merge from KeePassX database</source>
@@ -1448,240 +2672,309 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>&amp;Add new entry</source>
- <translation>Lisää merkintä</translation>
+ <translation>&amp;Lisää tietue</translation>
</message>
<message>
<source>&amp;View/Edit entry</source>
- <translation>Näytä/muokkaa merkintää</translation>
+ <translation>Näytä/&amp;muokkaa tietuetta</translation>
</message>
<message>
<source>&amp;Delete entry</source>
- <translation>Poista merkintä</translation>
+ <translation>&amp;Poista tietue</translation>
</message>
<message>
<source>&amp;Add new group</source>
- <translation>Lisää uusi ryhmä</translation>
+ <translation>Lisää uusi &amp;ryhmä</translation>
</message>
<message>
<source>&amp;Edit group</source>
- <translation>Muokkaa ryhmää</translation>
+ <translation>Muokkaa r&amp;yhmää</translation>
</message>
<message>
<source>&amp;Delete group</source>
- <translation>Poista ryhmä</translation>
+ <translation>Poista ry&amp;hmä</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Tietokannan asetukset</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Ta&amp;llenna tietokanta nimellä...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>Kloonaa merkintä</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Vaih&amp;da pääsalasana...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Ajastettu kertakäyttöinen salasana (TOTP)</translation>
+ <source>&amp;Database settings</source>
+ <translation>Tietok&amp;annan asetukset</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Kopioi &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Tietokannan asetukset</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Näytä TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Kloonaa tietue</translation>
</message>
<message>
<source>&amp;Find</source>
- <translation>Etsi</translation>
+ <translation>&amp;Etsi</translation>
</message>
<message>
<source>Copy &amp;username</source>
- <translation>Kopioi käyttäjätunnus</translation>
+ <translation>Kopioi &amp;käyttäjätunnus</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>Kopioi käyttäjätunnus leikepöydälle</translation>
</message>
<message>
<source>Cop&amp;y password</source>
- <translation>Kopioi salasana</translation>
+ <translation>Kopioi &amp;salasana</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>Kopioi salasana leikepöydälle</translation>
</message>
<message>
<source>&amp;Settings</source>
- <translation>Asetukset</translation>
+ <translation>&amp;Asetukset</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Salasanageneraattori</translation>
</message>
<message>
<source>&amp;Perform Auto-Type</source>
- <translation>Suorita automaattitäydennys</translation>
+ <translation>S&amp;uorita automaattitäydennys</translation>
</message>
<message>
<source>&amp;Open URL</source>
- <translation>Avaa URL</translation>
+ <translation>&amp;Avaa URL</translation>
</message>
<message>
<source>&amp;Lock databases</source>
- <translation>Lukitse tietokannat</translation>
+ <translation>&amp;Lukitse tietokannat</translation>
</message>
<message>
<source>&amp;Title</source>
- <translation>Otsikko</translation>
+ <translation>&amp;Otsikko</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation>Kopioi nimi leikepöydälle</translation>
</message>
<message>
<source>&amp;URL</source>
- <translation>URL</translation>
+ <translation>&amp;URL</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation>Kopioi osoite leikepöydälle</translation>
</message>
<message>
<source>&amp;Notes</source>
- <translation>Muistiinpanot</translation>
+ <translation>&amp;Muistiinpanot</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Salasanageneraattori</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Kopioi huomautukset leikepöydälle</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Tyhjennä historia</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Vie CSV-tiedostoon...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Tietokanta</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Tuo KeePass 1 -tietokanta...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Tuo</translation>
+ <source>Import CSV file...</source>
+ <translation>Tuo CSV-tiedosto...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>T&amp;yökalut</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Ko&amp;rjaa tietokanta...</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Tyhjennä roskakori</translation>
+ <source>Show TOTP</source>
+ <translation>Näytä TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Aseta TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Kopioi &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>&amp;Tyhjennä roskakori</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Tyhjennä historia</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Pääsyvirhe asetustiedostoon %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Sulje KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Vaikuttaa siltä, että käytät KeePassHTTP:tä selaimesi kanssa. Tämä ominaisuus on vanhentunut ja tuki sille poistetaan tulevaisuudessa.&lt;br&gt;Ole hyvä ja vaihda selainlaajennus KeePassXC-Browser:iin! Mikäli tarvitset apua sen käyttöönottoon, vieraile &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;oppaassamme&lt;/a&gt;(varoitus %1/3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Kosketa YubiKeyssa olevaa painiketta!</translation>
+ <source>read-only</source>
+ <translation>vain-luku</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>&amp;Ohje</translation>
+ <source>Settings</source>
+ <translation>Asetukset</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Avaa tietokanta...</translation>
+ <source>Toggle window</source>
+ <translation>Vaihda ikkunaan</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Ta&amp;llenna tietokanta nimellä...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Sulje KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Vaih&amp;da pääsalasana...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Keepass 2 -tietokanta</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Vie CSV-tiedostoon...</translation>
+ <source>All files</source>
+ <translation>Kaikki tiedostot</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Tuo KeePass 1 -tietokanta...</translation>
+ <source>Open database</source>
+ <translation>Avaa tietokanta</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Tuo CSV-tiedosto...</translation>
+ <source>Save repaired database</source>
+ <translation>Tallenna korjattu tietokanta</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Ko&amp;rjaa tietokanta...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Tietokannan kirjoitus levylle epäonnistui.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Aseta TOTP...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Kosketa YubiKeyssa olevaa painiketta!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>VAROITUS: Käytät epävakaata KeePassXC-julkaisua!
+On mahdollista, että tietokantasi korruptoituu. Pidä huolta sen varmuuskopiosta.
+Tätä versiota ei ole tarkoitettu päivittäiseen käyttöön.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Dialogi</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Virheellinen avaintiedosto, odotetaan OpenSSH-avainta</translation>
</message>
<message>
- <source>General</source>
- <translation>Yleistä</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>Yhteensopimaton PEM-raja-arvo</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>Nä&amp;ytä ilmoitus kun tilitietoja pyydetään</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Base64-dekoodaus epäonnistui</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation type="unfinished"/>
+ <source>Key file way too small.</source>
+ <translation>Avaintiedosto aivan liian pieni.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation type="unfinished"/>
+ <source>Key file magic header id invalid</source>
+ <translation>Otsaketietojen taikatunniste on virheellinen</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Lisää..</translation>
+ <source>Found zero keys</source>
+ <translation>Yhtään avainta ei löytynyt</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Salli aina &amp;pääsy tietueisiin</translation>
+ <source>Failed to read public key.</source>
+ <translation>Julkisen avaimen lukeminen epäonnistui.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Salli aina tietueiden p&amp;äivittäminen</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Rikkinäinen avaintiedosto, yksityisen avaimen lukeminen epäonnistui</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>E&amp;tsi kaikista avatuista tietokannoista vastaavia tietueita</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Salauksen purku epäonnistui: salainen avain ei sisällä dataa </translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP-portti:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Yritetään tehdä avainderivaatiofunktiota ilman salausta</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Oletusportti: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Avaimen purkuun vaaditaan tunnuslause</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Pyyd&amp;ä tietokannan lukituksen avaamista jos se on lukittu</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Avaimen derivointi epäonnistui. Onko avaintiedosto korruptoitunut?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation type="unfinished"/>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Salauksen purku epäonnistui, väärä tunnuslause?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC kuuntelee tätä porttia osoitteessa 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Odottamaton EOF julkista avainta luettaessa</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Ei voida sitoutua etuoikeutettuihin portteihin</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Odottamaton EOF yksityistä avainta luettaessa</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Ei voida sitoutua etuoikeutettuihin portteihin, jotka ovat alle 1024!
-Käytetään oletusporttia 19455.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Ei voida kirjoittaa julkista avainta, koska se on tyhjä</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>&amp;Poista kaikki jaetut salausavaimet aktiivisesta tietokannasta</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Odottamaton EOF julkista avainta kirjoittaessa</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation type="unfinished"/>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Ei voida kirjoittaa yksityistä avainta, koska se on tyhjä</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation type="unfinished"/>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Odottamaton EOF yksityistä avainta kirjoittaessa</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Tuntematon avaimen tyyppi: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Tuntematon salausalgoritmi: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Salausalgoritmin alustusvektori on liian lyhyt MD5-avainmuunnosfunktiolle</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Tuntematon avainmuunnosfunktio: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Tuntematon avaimen tyyppi: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogi</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1692,43 +2985,137 @@ Käytetään oletusporttia 19455.</translation>
<translation>Ota käyttöön KeePassHTTP-palvelin</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Yleistä</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nä&amp;ytä ilmoitus kun tilitietoja pyydetään</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
+ <translation>Palauta vain parhaat osumat tietystä osoitteesta verkkotunnuksen kaikkien osumien sijasta</translation>
</message>
<message>
<source>&amp;Return only best matching entries</source>
<translation>&amp;Palauta vain parhaiten vastaavat tietueet</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Pyyd&amp;ä tietokannan lukituksen avaamista jos se on lukittu</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Vain tietueet samalla skeemalla (http://, https://, ftp://, ...) palautetaan.</translation>
</message>
<message>
<source>&amp;Match URL schemes</source>
- <translation type="unfinished"/>
+ <translation>Sovita verkko-osoitteen kaavaan</translation>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Järjestä &amp;vastaavat tietueet käyttäjätunnuksen mukaan</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Järjestä &amp;vastaavat merkinnät otsikon mukaan</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>&amp;Poista kaikki jaetut salausavaimet aktiivisesta tietokannasta</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>&amp;Poista kaikki jaetut salausavaimet aktiivisesta tietokannasta</translation>
</message>
<message>
<source>Password Generator</source>
<translation>Salasanageneraattori</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Lisää..</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Salli aina &amp;pääsy tietueisiin</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Salli aina tietueiden p&amp;äivittäminen</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
- <translation type="unfinished"/>
+ <translation>Vain valittu tietokanta tulee olla yhdistetty asiakkaan kanssa.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Seuraavat valinnat voivat olla vaarallisia!
-Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>E&amp;tsi kaikista avatuista tietokannoista vastaavia tietueita</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automaattinen lisäjonokenttien luonti tai päivittäminen ei ole tuettu</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Palauta lisämerkkijonokentät jotka alkavat &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP-portti:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Oletusportti: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC kuuntelee tätä porttia osoitteessa 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Varoitus:&lt;/b&gt; Seuraavat valinnat voivat olla vaarallisia!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP on vanhennettu ja se poistetaan tulevaisuudessa.&lt;br&gt;Vaihda KeePassXC-Browseriin! Ohjeita siirtymiseen on tarjolla &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;siirtymäohjeessa&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Ei voida sitoutua etuoikeutettuihin portteihin</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Ei voida sitoutua etuoikeutettuihin portteihin, jotka ovat alle 1024!
+Käytetään oletusporttia 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Salasana</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>vahvuus</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropia</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Salasana</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Merkkityypit</translation>
</message>
@@ -1749,38 +3136,50 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
<translation>Erikoismerkit</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Laajennettu ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Poissulje samannäköiset merkit</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Hyväksy</translation>
+ <source>Pick characters from every group</source>
+ <translation>Poimi merkkejä jokaisesta ryhmästä</translation>
</message>
<message>
- <source>%p%</source>
- <translation type="unfinished"/>
+ <source>&amp;Length:</source>
+ <translation>&amp;Pituus:</translation>
</message>
<message>
- <source>strength</source>
- <translation>vahvuus</translation>
+ <source>Passphrase</source>
+ <translation>Tunnuslause</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropia</translation>
+ <source>Wordlist:</source>
+ <translation>Sanalista:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Pituus:</translation>
+ <source>Word Count:</source>
+ <translation>Sanamäärä:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Poimi merkkejä jokaisesta ryhmästä</translation>
+ <source>Word Separator:</source>
+ <translation>Sanaerotin:</translation>
</message>
<message>
<source>Generate</source>
<translation>Generoi</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Kopioi</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Hyväksy</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Sulje</translation>
</message>
@@ -1798,54 +3197,279 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Huono</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Heikko</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Hyvä</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Erinomainen</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Salasana</translation>
+ <source>Database not opened</source>
+ <translation>Tietokanta ei avattu</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>Laajennettu ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>Tietokannan tiivistettä (hash) ei saatu</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Tunnuslause</translation>
+ <source>Client public key not received</source>
+ <translation>Asiakkaan julkista avainta ei saatu</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Sanalista:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Viestin salauksen purkaminen ei onnistu</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Sanamäärä:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Aikakatkaisu tai yhteys KeePassXC:hen ei onnistu</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Sanaerotin:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Toiminto peruttiin tai estettiin</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Kopioi</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Viestin salauksen purkaminen ei onnistu tai julkista avainta ei löydy. Onko Native Messaging käytössä KeePassXC:ssä?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>Liittäminen KeePassXC:hen epäonnistui, yritä uudelleen</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Avainvaihto ei onnistunut</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Salausavainta ei tunnistettu</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Tallennettuja tietokantoja ei löytynyt</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Virheellinen toiminto</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Vastaanotettiin tyhjä viesti</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Sivuston osoitetta ei ole annettu</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Tunnuksia ei löydy</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Tuntematon virhe</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Lisää uusi tietue tietokantaan</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Tietokannan polku.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Tietokannan avaintiedosto.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>polku</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Tietueen käyttäjänimi</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>käyttäjätunnus</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>Tietueen osoite.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Tietueen salasanan kuvaus.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Luo tietueelle salasana.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Luodun salasanan pituus.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>pituus</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Lisättävän tietueen polku.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Kopioi salasana leikepöydälle.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Kopioitavan tietueen polku.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Viive sekunneissa ennen leikepöydän tyhjentämistä.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Muokkaa tietuetta.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Tietueen otsikko.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>otsikko</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Muokattavan tietueen polku.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Salasanan arvioitu entropia.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Salasana josta entropia arvioidaan.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Suorita salasanalle edistynyt analyysi.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Pura ja tulosta tietokannan sisältö.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Purettavan tietokannan polku.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Syötä salasana avataksesi %1:</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Avaintiedoston %1 lataaminen epäonnistui : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Käytät vanhaa avaintiedostomuotoa joka ei ole
+välttämättä tuettu tulevaisuudessa.
+
+Ole hyvä ja harkitse uuden avaintiedoston luomista.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Käytettävissä olevat komennot:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Suoritettavan komennon nimi.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Listaa tietokannan tietueet.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Listattavan ryhmän polku. Oletus on /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Etsi tietueita nopeasti.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Hakutermi.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Yhdistä kaksi tietokantaa.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Tietokannan polku, johon yhdistetään.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Tietokannan polku, josta yhdistetään.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Käytä samoja tilitietoja molemmille tietokantatiedostoille.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Tietokannan avaintiedosto, josta yhdistetään.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Näytä tietueen tiedot.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Näytettävien attribuuttien nimi. Tämän asetuksen voi määrittää useammin kuin kerran, jokaisen attribuutin näkyessä omalla rivillään annetussa järjestyksessä. Jos attribuutteja ei ole määritetty, näytetään yhteenveto oletuksista.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>attribuutti</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Näytettävän tietueen nimi.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
- <translation type="unfinished"/>
+ <translation>Tyhjä laite (NULL)</translation>
</message>
<message>
<source>error reading from device</source>
@@ -1859,15 +3483,35 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
</message>
<message>
<source>malformed string</source>
- <translation type="unfinished"/>
+ <translation>Viallinen merkkijono</translation>
</message>
<message>
<source>missing closing quote</source>
- <translation type="unfinished"/>
+ <translation>lainausmerkki puuttuu lopusta</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – suositeltu)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1886,14 +3530,22 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
<translation>Salasana</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Muistiinpanot</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Viimeksi muokattu</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Luotu</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Vanha selainintegraatio</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Selainintegraatio</translation>
</message>
@@ -1909,24 +3561,74 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
<source>Passive</source>
<translation>Passiivi</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH-agentti</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Luo uusi satunnainen noppaware-salalause</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Sanamäärä noppaware-salalauseelle.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>määrä</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Sanalista noppaware-luojalle.
+[Oletus: EFF Englanti]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Luo uusi satunnainen salasana.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Luodun salasanan pituus.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Käytä pieniä kirjaimia luodussa salasanassa.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Käytä isoja kirjaimia luodussa salasanassa.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Käytä numeroita luodussa salasanassa.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Käytä erikoismerkkejä luodussa salasanassa.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Käytä laajennettua ASCII-merkistöä luodussa salasanassa.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
<message>
<source>Internal zlib error when compressing: </source>
- <translation>Sisäinen zlib virhe pakatessa:</translation>
+ <translation>Sisäinen zlib-virhe pakatessa:</translation>
</message>
<message>
<source>Error writing to underlying device: </source>
- <translation type="unfinished"/>
+ <translation>Kirjoitus taustalla olevaan laitteeseen epäonnistui:</translation>
</message>
<message>
<source>Error opening underlying device: </source>
- <translation type="unfinished"/>
+ <translation>Taustalla olevan laitteen avaus epäonnistui:</translation>
</message>
<message>
<source>Error reading data from underlying device: </source>
- <translation type="unfinished"/>
+ <translation>Virhe luettaessa taustalla olevasta laitteesta:</translation>
</message>
<message>
<source>Internal zlib error when decompressing: </source>
@@ -1947,8 +3649,8 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Kirjainkoko on merkitsevä</translation>
+ <source>Search...</source>
+ <translation>Etsi...</translation>
</message>
<message>
<source>Search</source>
@@ -1959,8 +3661,8 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
<translation>Tyhjennä</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Etsi...</translation>
+ <source>Case Sensitive</source>
+ <translation>Kirjainkoko on merkitsevä</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1970,89 +3672,92 @@ Muuta niitä vain, jos tiedät mitä olet tekemässä.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Jaettu salausavain nimeltä &quot;%1&quot; on jo olemassa.
-Haluatko korvata sen?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Jaettuja salausavaimia ei löytynyt KeePassHttp-asetuksista.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Abort</source>
- <translation>Keskeytä</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Uusi avaimenliittämispyyntö</translation>
</message>
<message>
<source>You have received an association request for the above key.
If you would like to allow it access to your KeePassXC database
give it a unique name to identify and accept it.</source>
- <translation type="unfinished"/>
+ <translation>Olet saanut avainlittämispyynnön yllä olevalle avaimelle
+Jos haluat antaa sille pääsyoikeuden KeePassXC-tietokantaasi,
+anna tunnisteelle nimi ja hyväksy.</translation>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
<translation>KeePassXC: Korvataanko olemassa oleva avain?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Jaettu salausavain nimeltä &quot;%1&quot; on jo olemassa.
+Haluatko korvata sen?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
- <translation>KeePassXC: Päivitä merkintä</translation>
+ <translation>KeePassXC: Päivitä tietue</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Haluatko päivittää tiedot osoitteesta %1 - %2?</translation>
</message>
<message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: tietokanta lukittu!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Aktiivinen tietokanta on lukittu!
+Avaa valittu tietokanta tai valitse toinen avattu tietokanta.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Poistettiin avaimet tietokannasta</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Poistettiin %n salausavain KeePassX/Http-asetuksista.</numerusform><numerusform>Poistettiin %n salausavainta KeePassX/Http-asetuksista.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Avaimia ei löytynyt</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Jaettuja salausavaimia ei löytynyt KeePassHttp-asetuksista.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Asetukset eivät ole käytettävissä!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Aktiivinen tietokanta ei sisällä tietuetta KeePassHttp-asetuksilla.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Poistetaan talletettuja oikeuksia...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Keskeytä</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Poistetut käyttöoikeudet</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Poistettiin käyttöoikeus %n tietueelta.</numerusform><numerusform>Poistettiin käyttöoikeus %n tietueelta.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Merkintää käyttöoikeuksilla ei löytynyt!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Aktiivinen tietokanta ei sisällä yhtään tietuetta käyttöoikeuksien kanssa.</translation>
</message>
</context>
<context>
@@ -2077,10 +3782,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Perusasetukset</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Käynnistä vain yksi KeePassXC-instanssi</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Muista viimeisimmät tietokannat</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Muista viimeisimmät avaintiedostot ja tietoturva-avainlaitteet (donglet)</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Lataa edelliset tietokannat käynnistäessä</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Tallenna automaattisesti suljettaessa</translation>
</message>
@@ -2089,20 +3810,28 @@ give it a unique name to identify and accept it.</source>
<translation>Tallenna automaattisesti jokaisen muutoksen jälkeen</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Lataa tietokanta automaattisesti uudelleen jos tietokantaa muokattiin muualla</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Pienennä ikkuna kopioidessa leikepöydälle</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Pienennä ikkuna ohjelman käynnistyessä</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
- <translation>Käytä ryhmän kuvaketta merkintää luodessa</translation>
+ <translation>Käytä ryhmän kuvaketta tietuetta luodessa</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Globaalin automaattitäydennyksen pikanäppäin</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Älä merkitse tietokantaa muokatuksi mikäli tietueet eivät muutu (esim. ryhmien laajentamisen yhteydessä)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Kieli</translation>
+ <source>Hide the Details view</source>
+ <translation>Piilota tarkemmat tiedot</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2113,75 +3842,97 @@ give it a unique name to identify and accept it.</source>
<translation>Piiloita pienennetty ikkuna ilmoitusalueelle</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Lataa edelliset tietokannat käynnistäessä</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Lataa tietokanta automaattisesti uudelleen jos tietokantaa muokattiin muualla</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Piiloita ikkuna ilmoitusalueelle sulkemisen sijaan</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Pienennä ikkuna ohjelman käynnistyessä</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Perusasetukset</translation>
+ <source>Dark system tray icon</source>
+ <translation>Tumma ilmoitusalueen kuvake</translation>
</message>
<message>
- <source>Remember last key files and security dongles</source>
- <translation>Muista viimeisimmät avaintiedostot ja tietoturva-avainlaitteet (donglet)</translation>
- </message>
- <message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <source>Language</source>
+ <translation>Kieli</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automaattitäydennys</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Tietue on sopiva, jos sen nimi sisältyy kohdeikkunan otsikkoon yleisessä automaattitäydennyksessä</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Tietue on sopiva, jos sen osoite sisältyy kohdeikkunan otsikkoon yleisessä automaattitäydennyksessä</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Kysy aina ennen automaattitäydennyksen käyttämistä</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Globaalin automaattitäydennyksen pikanäppäin</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Automaattitäydennyksen viive</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Käynnistä vain yksi KeePassXC-instanssi</translation>
+ <source>Startup</source>
+ <translation>Käynnistys</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Tiedostohallinta</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Tallenna tietokannat turvallisesti (voi olla epäyhteensopiva Dropboxin tmv. kanssa)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Ota tietokannasta varmuuskopio ennen tallentamista</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Tietueiden hallinta</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Yleistä</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Aikakatkaisut</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Tyhjennä leikepöytä kun on kulunut</translation>
</message>
<message>
<source> sec</source>
- <translation>s.</translation>
+ <comment>Seconds</comment>
+ <translation> s</translation>
</message>
<message>
<source>Lock databases after inactivity of</source>
<translation>Lukitse tietokannat jos on oltu joutilaana</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Näytä salasanat oletuksena selkokielisenä</translation>
+ <source>Convenience</source>
+ <translation>Mukavuus</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Lukitse tietokannat kun istunto lukitaan tai kansi suljetaan</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2192,16 +3943,16 @@ give it a unique name to identify and accept it.</source>
<translation>Älä vaadi salasanan toistoa jos salasana on näkyvillä</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Aikakatkaisut</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Näytä salasanat oletuksena selkokielisenä</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Mukavuus</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Piilota salasanat esikatselussa</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Lukitse tietokannat kun istunto lukitaan tai kansi suljetaan</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Piilota tietueiden huomautukset</translation>
</message>
<message>
<source>Privacy</source>
@@ -2211,6 +3962,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation>Käytä Googlea varajärjestelmänä verkkosivustojen kuvakkeiden latausta varten</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Uudelleenlukitse aikaisemmin lukittu tietokanta automaattisyötön jälkeen</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2223,6 +3978,14 @@ give it a unique name to identify and accept it.</source>
<translation>Avain:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Oletusarvoiset RFC 6238:n mukaiset tunnisteasetukset</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam-tunnisteen asetukset</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Käytä mukautettuja asetuksia</translation>
</message>
@@ -2248,7 +4011,8 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
- <translation>s.</translation>
+ <comment>Seconds</comment>
+ <translation> s</translation>
</message>
</context>
<context>
@@ -2284,10 +4048,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Tervetuloa käyttämään KeePassXC:tä</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Aloita salasanojesi turvallinen tallentaminen KeePassXC-tietokantaan</translation>
</message>
@@ -2311,92 +4071,48 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>Viimeisimmät tietokannat</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Tervetuloa KeePassXC:n versioon %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>polku mukautettuun asetustiedostoon</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>tietokannan avaintiedosto</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - järjestelmäriippumaton salasanojen hallintasovellus</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>lue tietokannan salasana stdin:istä</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Kopioi salasana leikepöydälle</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Poista tietue tietokannasta.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Tietokannan polku.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"/>
+ <source>Path of the entry to remove.</source>
+ <translation>Poistettavan tietueen polku.</translation>
</message>
<message>
- <source>Extract and print the content of a database.</source>
- <translation>Pura ja tulosta tietokannan sisältö.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Purettavan tietokannan polku.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Suoritettavan komennon nimi.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Listaa tietokannan tietueet.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Tulosat tietueiden ja ryhmien UUID:t.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Yhdistä kaksi tietokantaa.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - järjestelmäriippumaton salasanojen hallintasovellus</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Tietokannan polku, johon yhdistetään.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>avattavien salasanatietokantojen tiedostonimet (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Tietokannan polku, josta yhdistetään.</translation>
+ <source>path to a custom config file</source>
+ <translation>polku mukautettuun asetustiedostoon</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Käytä samaa salasanaa molemmille tietokantatiedostoille.</translation>
+ <source>key file of the database</source>
+ <translation>tietokannan avaintiedosto</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Näytä salasana.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>lue tietokannan salasana stdin:istä</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Näytettävän tietueen nimi.</translation>
+ <source>Parent window handle</source>
+ <translation>Ylemmän ikkunan kahva</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_fr.ts b/share/translations/keepassx_fr.ts
index f3fa01920..12a428dcd 100644
--- a/share/translations/keepassx_fr.ts
+++ b/share/translations/keepassx_fr.ts
@@ -10,14 +10,30 @@
<translation>À propos</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Signaler les bugs sur : &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC est distribué suivant les termes de la GNU Licence Publique Générale (GNU GPL) version 2 ou version 3 de la licence (à votre choix).</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Contributeurs</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Voir Contributions sur GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Informations de débogage</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Inclure l&apos;information suivante lorsque vous signaler un bug :</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Copier dans le presse-papier</translation>
</message>
@@ -29,7 +45,11 @@
</message>
<message>
<source>Revision: %1</source>
- <translation>Révision : %1</translation>
+ <translation>Révision: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Distribution: %1</translation>
</message>
<message>
<source>Libraries:</source>
@@ -48,33 +68,27 @@ Kernel : %3 %4</translation>
<translation>Extensions activées :</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Signaler les bugs sur : &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC est distribué suivant les termes de la GNU Licence Publique Générale (GNU GPL) version 2 ou version 3 de la licence (à votre choix).</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Mainteneurs du projet :</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Voir Contributions sur GitHub&lt;/a&gt;</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>L&apos;équipe de KeePassXC remercie tout particulièrement debfx pour la conception de KeePassX.</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Inclure l&apos;information suivante lorsque vous signaler un bug :</translation>
- </message>
- <message>
- <source>Distribution: %1</source>
- <translation>Distribution : %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Genre de la version: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>Accès KeePassXC HTTP confirmé</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Se souvenir de ce choix</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 a demandé l’accès aux mots de passe pour l&apos;élément suivant (ou les éléments suivants).
Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>Accès KeePassXC HTTP confirmé</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Activer l&apos;agent SSH (redémarrage nécessaire)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Remplissage automatique - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Saisie automatique</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>La syntaxe de votre séquence de saisie automatique est incorrecte.</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Cette commande de saisie automatique contient un délai très long. Voulez-vous continuer ?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Cette commande de saisie automatique contient des touches très lentes. Voulez-vous continuer?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Cette commande de saisie automatique contient des arguments souvent répétés. Voulez-vous continuer ?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Groupe</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titre</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nom d&apos;utilisateur</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Séquence</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation> Remplissage automatique - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Choisissez un champ pour Auto-Type :</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation> Remplissage automatique - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>Confirmer l’accès pour KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Se souvenir de ce choix</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Autoriser</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Refuser</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 a demandé l’accès aux mots de passe pour le ou les élément(s) suivant(s).
+Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogue</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Ceci est requis pour accéder à vos bases de données à partir de KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Activer l&apos;intégration de KeePassXC au sein du navigateur web</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Activer l&apos;intégration avec ces navigateurs web :</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Afficher une &amp;notification quand les identifiants sont demandés</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Demander de déverrouiller la base de données lorsque celle-ci est verrouillée</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Seules les entrées avec le même schéma (http://, https://, ...) sont retournées.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Correspondance du format de l&apos;URL (exemple https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Renvoie seulement les meilleures correspondances pour une URL spécifique au lieu des entrées pour tout le domaine.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Retourner uniquement l&apos;identifiant qui correspond le mieux</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Trier les identifiants trouvés par titre</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Trier les identifiants trouvés par &amp;nom d&apos;utilisateur</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Déconnecter tous les navigateurs web</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Oublier toutes les autorisations accordées</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avancé</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ne jamais &amp;demander avant d&apos;accéder aux identifiants</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ne jamais &amp;demander avant de mettre à jour les identifiants</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Seule la base de données sélectionnée doit être connectée avec un client.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Cherc&amp;her dans toutes les bases de données ouvertes les identifiants qui correspondent</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>La création ou la mise a jour automatique ne sont pas pris en charge pour les champs de chaînes de caractères !</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp; Retourne les champs avancés de chaîne de caractères qui commencent par &quot;KPH :&quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Mises à jour du chemin du fichier binaire de KeePassXC ou de keepassxc-proxy dans les scripts Native Messaging automatiquement au démarrage.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Mise à jour des fichiers manifest &amp;Native Messaging au démarrage</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Supporter une application proxy entre KeePassXC et l&apos;extension pour navigateur web.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Utiliser une &amp;application proxy entre KeePassXC et l&apos;extension pour navigateur web</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Utiliser un proxy personnalisé si vous avez installé un proxy manuellement.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Utiliser un proxy &amp;personnalisé</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Parcourir...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Avertissement :&lt;/b&gt; Les options suivantes peuvent être dangereuses!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Fichiers exécutables (*.exe);;Tous les fichiers (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Fichiers exécutables (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Sélectionner un proxy personnalisé</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC : nouvelle demande d&apos;association</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Vous avez reçu une demande d&apos;association pour la clé ci-dessus.
+
+Si vous voulez autoriser cette clé à accéder à votre base de données KeePassXC,
+attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Enregistrer et autoriser l&apos;accès</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC : Écraser la clé existante ?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Une clé de chiffrement partagée avec le nom &quot;%1&quot; existe déjà.
+Voulez-vous l&apos;écraser ?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC : Mettre à jour l&apos;entrée</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Voulez-vous mettre à jour l&apos;information dans %1 - %2 ?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC : Base de données verrouillée !</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>La base de données actuelle est verrouillée !
+Veuillez déverrouiller la base de données sélectionnée ou en choisir une qui est déverrouillée. </translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC : Paramètres indisponibles !</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>La base de données actuelle ne contient pas d&apos;entrée paramètre.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC : Aucune clé trouvée</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Aucune clé de chiffrement trouvée dans les paramètres de KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC : Les clés ont été effacées de la base de donnée</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>%n clé(s) de chiffrement ont été retirées avec succès des paramètres de KeePassXC.</numerusform><numerusform>%n clé(s) de chiffrement ont été retirées avec succès des paramètres de KeePassXC.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Effacement des permissions enregistrées...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC : Permissions retirées</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Les permissions de %n entrées ont été retirées avec succès.</numerusform><numerusform>Autorisations retirées avec succès de %s entrée(s)</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC : Aucune entrée avec permissions trouvée !</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>La base de données actuelle ne contient pas d&apos;entrée avec des permissions.</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<translation>Confirmez le mot de passe :</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>Fichier-clé</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Naviguer</translation>
</message>
@@ -157,6 +502,14 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<translation>Créer</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Cha&amp;llenge-réponse</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Rafraîchir</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Fichiers-clés</translation>
</message>
@@ -177,6 +530,10 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<translation>Choisir un fichier-clé</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Mot de passe vide</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Voulez-vous vraiment utiliser une chaîne vide comme mot de passe ?</translation>
</message>
@@ -191,20 +548,18 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Fichier-clé</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Cha&amp;llenge-réponse</translation>
+ <source>Legacy key file format</source>
+ <translation>Format de fichier clé hérité</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>Rafraîchir</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Mot de passe vide</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Vous utilisez un format de fichier clé hérité
+qui peut ne plus être pris en charge à l’avenir.
+
+Veuillez envisager de générer un nouveau fichier clé.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +573,10 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<translation>Options de clonage</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Ajouter &apos; - Clone&apos; au titre</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Remplacer le nom d&apos;utilisateur et le mot de passe par des références</translation>
</message>
@@ -225,10 +584,6 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<source>Copy history</source>
<translation>Copie de l&apos;historique</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Ajouter &apos; - Clone&apos; au titre</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +681,6 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importer un fichier CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Erreur</translation>
</message>
@@ -340,17 +691,17 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>octet,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n octet (s), </numerusform><numerusform>%n octet(s), </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>lignes,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n Row (s), </numerusform><numerusform>%n rangée(s), </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>colonnes</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n/des colonnes</numerusform><numerusform>%n colonne(s)</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +723,14 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<translation>Naviguer</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Rafraîchir</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Challenge-réponse :</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Impossible d&apos;ouvrir la base de données.</translation>
</message>
@@ -380,6 +739,24 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<translation>Impossible d&apos;ouvrir le fichier-clé</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Format de fichier clé hérité</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Vous utilisez un format de fichier clé hérité
+qui peut ne plus être pris en charge à l’avenir.
+
+Veuillez envisager de générer un nouveau fichier clé.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Ne plus afficher cette avertissement</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Tous les fichiers</translation>
</message>
@@ -391,14 +768,6 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<source>Select key file</source>
<translation>Choisissez un fichier-clé</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Rafraîchir</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Challenge-réponse :</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +784,14 @@ Veuillez sélectionner si vous souhaitez autoriser l’accès.</translation>
<translation>Impossible d&apos;ouvrir le fichier-clé</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>La base de données s&apos;est bien ouverte. Aucune action nécéssaire.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Impossible d&apos;ouvrir la base de données.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>La base de données s&apos;est bien ouverte. Aucune action nécéssaire.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Réussite</translation>
</message>
@@ -440,6 +809,108 @@ Vous pouvez maintenant la sauvegarder.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>Chiffrement</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Nombre de tours trop élevé</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Vous utilisez un très grand nombre de tours de transformation de clé avec Argon2.
+
+Si vous conservez ce nombre, votre base de données peut prendre des heures voire des jours (ou plus) à s&apos;ouvrir!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Compris, conserver ce nombre</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Annulé</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Nombre de tours trop faible</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Vous utilisez un très faible nombre de tours de transformation de clé avec AES-KDF.
+
+Si vous conservez ce nombre, la sécurité de votre base de données peut être trop facilement cassée !</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF inchangé</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Échec de la transformation de la clé avec les nouveaux paramètres KDF; KDF inchangé.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform>Mio</numerusform><numerusform>Mio</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform>fil(s) d&apos;exécution</numerusform><numerusform>fil(s) d&apos;exécution</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algorithme de chiffrement :</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES : 256 bits (par défaut)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish : 256 bits</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Fonction de dérivation de clé (KDF) :</translation>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>Tours de transformation :</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation>Benchmark avec 1 seconde de délai</translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>Utilisation mémoire :</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Parallélisme :</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Métadonnées de la base de données</translation>
+ </message>
+ <message>
<source>Database name:</source>
<translation>Nom de la base de données :</translation>
</message>
@@ -448,20 +919,12 @@ Vous pouvez maintenant la sauvegarder.</translation>
<translation>Description de la base de données :</translation>
</message>
<message>
- <source>Transform rounds:</source>
- <translation>Passes de transformation :</translation>
- </message>
- <message>
<source>Default username:</source>
<translation>Nom d&apos;utilisateur par défaut :</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
- </message>
- <message>
- <source>Benchmark</source>
- <translation>Base de référence</translation>
+ <source>History Settings</source>
+ <translation>Paramètres de l&apos;historique</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +935,27 @@ Vous pouvez maintenant la sauvegarder.</translation>
<translation>Taille max. de l&apos;historique :</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Utiliser la corbeille</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES : 256 Bits (par défaut)</translation>
+ <source>Use recycle bin</source>
+ <translation>Utiliser la corbeille</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish : 256 bits</translation>
+ <source>Additional Database Settings</source>
+ <translation>Paramètres de base de données supplémentaires</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algorithme :</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Activers la &amp;compression (recommandé)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Racine</translation>
</message>
<message>
@@ -511,22 +975,48 @@ Vous pouvez maintenant la sauvegarder.</translation>
<translation>Fichier introuvable !</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Ouvrir une base de données KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Impossible d&apos;ouvrir la base de données.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Base de données Keepass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Fichier ouvert en lecture seule.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Ouvrir le fichier CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Fichier CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Tous les fichiers (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Fusionner les bases de données</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Ouvrir une base de données KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Base de données Keepass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Fermer ?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; est en mode édition.
+Ignorer les changements et fermer ?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Enregistrer les modifications ?</translation>
</message>
@@ -541,10 +1031,22 @@ Enregistrer les modifications ?</translation>
<translation>Une erreur s&apos;est produite lors de l&apos;écriture de la base de données.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Mots de passe</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Enregistrer comme nouvelle base de données</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Exporter la base de données au format CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Échec de l&apos;écriture du fichier CSV.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nouvelle base de données</translation>
</message>
@@ -563,12 +1065,6 @@ Please press cancel to finish your changes or discard them.</source>
Cliquez sur Annuler pour finir vos modifications ou abandonnez-les.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Cette base de données n&apos;a pas encore été sauvegardée.
-Vous devez la sauvegarder ou annuler son verrouillage.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,69 +1073,23 @@ Voulez-vous l&apos;enregistrer avant de la verrouiller ?
Autrement, vos modifications seront perdues.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; est en mode édition.
-Ignorer les changements et fermer ?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Exporter la base de données au format CSV</translation>
+ <source>Disable safe saves?</source>
+ <translation>Désactiver les sauvegardes sécurisées?</translation>
</message>
<message>
- <source>CSV file</source>
- <translation>Fichier CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Échec de l&apos;écriture du fichier CSV.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Impossible d&apos;ouvrir la base de données.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Fusionner les bases de données</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>La base de données que vous essayez d&apos;enregistrer est verrouillée par une autre instance de KeePassXC.
-Voulez vous l&apos;enregistrer quand même ?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Mots de passe</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>La base de données est déjà ouverte</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>La base de données que vous essayez d&apos;ouvrir est verrouillée par une autre instance de KeePassXC.
-
-Voulez vous l&apos;ouvrir quand même ?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Ouvrir en lecture seule</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Fichier ouvert en lecture seule.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Ouvrir le fichier CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC n’a pas réussi à enregistrer la base de données plusieurs fois. Cela est probablement causé par les services de synchronisation de fichiers qui maintiennent un verrou sur le fichier sauvegardé.
+Désactiver les sauvegardes sécurisées et essayer à nouveau?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Recherche...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Changer la clé maître</translation>
</message>
@@ -660,6 +1110,14 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Voulez-vous supprimer &quot;%1&quot; entrées définitivement ?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Déplacer l&apos;entrée dans la corbeille ?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Êtes-vous sûr de vouloir déplacer l&apos;entrée &quot;%1&quot; dans la corbeille ?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Déplacer les entrées vers la corbeille ?</translation>
</message>
@@ -668,28 +1126,28 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation><numerusform>Voulez-vous déplacer %n entrée(s) vers la corbeille ?</numerusform><numerusform>Voulez-vous déplacer %n entrée(s) vers la corbeille ?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Supprimer le groupe ?</translation>
+ <source>Execute command?</source>
+ <translation>Exécuter la commande ?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Voulez-vous supprimer le groupe &quot;%1&quot; définitivement ?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Voulez-vous vraiment exécuter la commande suivante ?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossible de calculer la clé maître</translation>
+ <source>Remember my choice</source>
+ <translation>Se souvenir de mon choix</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Déplacer l&apos;entrée dans la corbeille ?</translation>
+ <source>Delete group?</source>
+ <translation>Supprimer le groupe ?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Êtes-vous sûr de vouloir déplacer l&apos;entrée &quot;%1&quot; dans la corbeille ?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Voulez-vous supprimer le groupe &quot;%1&quot; définitivement ?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Recherche...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Impossible de calculer la clé maître</translation>
</message>
<message>
<source>No current database.</source>
@@ -708,20 +1166,8 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Pas de résultats</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Exécuter la commande ?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Voulez-vous vraiment exécuter la commande suivante ?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Se souvenir de mon choix</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Demande de rafraîchissement automatique</translation>
+ <source>File has changed</source>
+ <translation>Le fichier a changé</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -732,8 +1178,10 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Demande de fusion</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Le fichier de la base de données à changé et vous avez des modification non-enregistrés. Voulez-vous fusionner vos modifications?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Le fichier de la base de données a été modifié et les changements que vous avez effectué n&apos;ont pas été enregistrés.
+Voulez-vous fusionner vos modifications ?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -749,6 +1197,89 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Générer un code TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Fermer</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Expiration</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nom d&apos;utilisateur</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Saisie automatique</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Recherche...</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Attributs</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Fichiers attachés</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Fenêtre</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Séquence</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Recherche</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Effacer</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Jamais</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTÉGÉ]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Désactivé</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Activé</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -775,6 +1306,30 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Historique</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(chiffré)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Choisir un fichier-clé</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Fichier trop lourd pour être un fichier-clé</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Échec d&apos;ouverture de la clé privée</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Historique de l&apos;entrée</translation>
</message>
@@ -795,22 +1350,20 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Nouvel attribut</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Choisissez un fichier</translation>
+ <source>Confirm Remove</source>
+ <translation>Confirmez la suppression</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Impossible d&apos;ouvrir le fichier</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Êtes-vous sûr de vouloir supprimer cet attribut?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Enregistrer le fichier attaché</translation>
+ <source>[PROTECTED]</source>
+ <translation>[PROTÉGÉ]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Impossible d&apos;enregistrer le fichier attaché :
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Appuyez sur Révéler pour voir ou éditer</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -829,20 +1382,16 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>1 an</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Confirmez la suppression</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Êtes-vous sûr de vouloir supprimer cet attribut?</translation>
+ <source>Apply generated password?</source>
+ <translation>Appliquer le mot de passe généré ?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[PROTÉGÉ] Appuyez pour révéler ou éditer</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Souhaitez-vous appliquer le mot de passe généré à cette entrée ?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Êtes-vous sûr de vouloir supprimer cette pièce jointe?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Entrée mise à jour avec succès.</translation>
</message>
</context>
<context>
@@ -860,18 +1409,6 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Supprimer</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Affichage</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Enregistrer le fichier</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Ouvrir</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Éditer le nom</translation>
</message>
@@ -883,24 +1420,24 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<source>Reveal</source>
<translation>Révéler</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Activer le remplissage automatique pour cette entrée</translation>
+ <source>Attachments</source>
+ <translation>Affichage</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Couleur du texte :</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Couleur du fond :</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Titre de la fenêtre :</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Activer le remplissage automatique pour cette entrée</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -911,16 +1448,24 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Utiliser une séquence de remplissage automatique personnalisée :</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Utiliser la séquence par défaut</translation>
+ <source>Window Associations</source>
+ <translation>Associations de fenêtre</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Définir une séquence personnalisée :</translation>
+ <source>-</source>
+ <translation>-</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Associations de fenêtre</translation>
+ <source>Window title:</source>
+ <translation>Titre de la fenêtre :</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Utilisez une séquence spécifique pour cette association :</translation>
</message>
</context>
<context>
@@ -945,12 +1490,8 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Titre :</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Nom d&apos;utilisateur :</translation>
+ <source>URL:</source>
+ <translation>URL :</translation>
</message>
<message>
<source>Password:</source>
@@ -961,20 +1502,104 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Confirmation :</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL :</translation>
+ <source>Title:</source>
+ <translation>Titre :</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Expiration</translation>
+ <source>Notes</source>
+ <translation>Notes</translation>
</message>
<message>
<source>Presets</source>
<translation>Valeurs par défaut</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Notes :</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Cochez la case pour afficher la section des notes.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nom d&apos;utilisateur :</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expiration</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Retirer la clé de l&apos;agent après</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>secondes</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Empreinte</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Retirer la clé de l’agent lorsque la base de données est fermée/verrouillée</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Clé publique</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Ajoutez la clé à l’agent lorsque la base de données est ouverte/déverrouillée</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Commentaire</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Déchiffré</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copier dans le presse-papier</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Clé privée</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Fichier externe</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Parcourir...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Fichier attaché</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Ajouter à l&apos;agent</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Retirer de l&apos;agent</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Requiert une confirmation de l&apos;utilisateur quand cette clé est utilisée</translation>
</message>
</context>
<context>
@@ -1046,6 +1671,14 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>Utiliser l&apos;icône par défaut</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Utiliser une icône personnalisée</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Ajouter une icône personnalisée</translation>
</message>
@@ -1054,6 +1687,18 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Supprimer une icône personnalisée</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Télécharger la favicône</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Impossible de récupérer la favicône</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Astuce : Vous pouvez activer Google en tant que repli sous Outils&gt;Paramètres&gt;Sécurité</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Images</translation>
</message>
@@ -1066,24 +1711,12 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Choisir une image</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Télécharger la favicône</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Impossible de récupérer la favicône</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Impossible de lire l&apos;icône</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>Utiliser l&apos;icône par défaut</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Utiliser une icône personnalisée</translation>
+ <source>Custom icon already exists</source>
+ <translation>L&apos;icône personnalisée existe déjà</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1093,14 +1726,6 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Cette icône est utilisée par %1 entrée et sera remplacée par l&apos;icône par défaut. Êtes-vous sûr de vouloir l&apos;effacer?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Astuce : Vous pouvez activer Google en tant que repli sous Outils&gt;Paramètres&gt;Sécurité</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>L&apos;icône personnalisée existe déjà</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1120,12 +1745,126 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<source>Uuid:</source>
<translation>Uuid :</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Données de l&apos;extension</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Supprimer</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Supprimer les données de l&apos;extension ?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Souhaitez-vous vraiment supprimer les données de l&apos;extension sélectionnée ? Cela peut causer un dysfonctionnement de l&apos;extension.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Clé</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Valeur</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
- <translation> - Cloner</translation>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - Clone</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nom</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Taille</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Ajouter</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Supprimer</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Ouvrir</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Enregistrer le fichier</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Sélectionner fichier(s)</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Êtes-vous sûr de vouloir supprimer ces %n fichiers attachés ?</numerusform><numerusform>Êtes-vous sûr de vouloir supprimer ces %n fichiers attachés ?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirmer la suppression</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Enregistrer les fichiers attachés</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Impossible de créer le répertoire :
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Êtes-vous sûr de vouloir écraser le fichier &quot;%1&quot; par ce fichier attaché?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confirmer l&apos;écrasement</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Impossible d&apos;enregistrer les fichiers attachés :
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Impossible d&apos;ouvrir le fichier attaché :
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Impossible d&apos;ouvrir les fichiers attachés :
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Impossible d&apos;ouvrir le fichier :
+%1</translation>
</message>
</context>
<context>
@@ -1157,6 +1896,11 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Réf : </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Groupe</translation>
</message>
@@ -1173,9 +1917,67 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Réf : </translation>
+ <source>Never</source>
+ <translation>Jamais</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expiration</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Créée</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Modifié</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Consulté</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Fichiers attachés</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Personnaliser la vue</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Cacher les noms d&apos;utilisateurs</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Cacher les mots de passe</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Adapter à la fenêtre</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Adapter au contenu</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Remettre les paramètres par défaut</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1186,6 +1988,17 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC : Impossible d&apos;enregistrer le fichier!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Impossible de sauvegarder le fichier du script Native Messaging.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1235,6 +2048,10 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>S&apos;assurer que le mot de passe contienne des caractères de chaque groupe</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII étendu</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1248,6 +2065,361 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossible de calculer la clé maître</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Impossible de lancer une challenge-réponse.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Clé incorrecte ou la base de données est corrompue.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Impossible de lancer une challenge-réponse.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossible de calculer la clé maître</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>En-têtes manquants de la base de donnée</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossible de calculer la clé maître</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Taille de la somme de contrôle de l&apos;en-tête non valide</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>SHA256 de l&apos;en-tête ne correspond pas</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Mauvaise clé ou fichier de base de données corrompu. (HMAC ne correspond pas)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Chiffrement inconnu</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Taille de l&apos;id de l&apos;en-tête non valide</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Longueur du champ de l’en-tête non valide</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Longueur des données de l&apos;en-tête non valide</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Échec d&apos;ouverture d&apos;une mémoire tampon pour les paramètres KDF dans l&apos;en-tête</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Fonction de dérivation de clé (KDF) non supporté ou paramètres non valides</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Champs d’en-tête hérités du fichier KDBX4.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Taille de l&apos;id de l&apos;en-tête interne non valide</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Longueur du champ de l&apos;en-tête interne non valide</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Taille binaire de l&apos;en-tête interne non valide</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Version de table des variantes non supportée.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur du nom de la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Contenu du nom de la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur de l&apos;entrée dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Contenu de l&apos;entrée dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur de l&apos;entrée de type Booléen dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur de l&apos;entrée de type Int32 dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur de l&apos;entrée de type UInt32 dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur de l&apos;entrée de type Int64 dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur de l&apos;entrée de type UInt64 dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur de l&apos;entrée dans la table des variantes non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Longueur du type de champ dans la table des variantes non valide.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Algorithme de chiffrement symétrique non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Taille du vecteur d&apos;initialisation du chiffrement symétrique non valide.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossible de calculer la clé maître</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Échec de sérialisation des paramètres KDF de la table de variantes.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Longueur de l&apos;uuid du chiffrement non valide</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Chiffrement non supporté</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Longueur des paramètres de compression non valides.</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Algorithme de compression non pris en charge</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Taille de la semence primaire non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Taille de la semence germée non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Taille des tours de transformation non valide</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Taille des octets de début non valide</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Taille de l&apos;identifiant du flux aléatoire non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Taille du chiffrement du flux intérieur aléatoire non valide.</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Ce n&apos;est pas une base de données KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Le fichier sélectionné est une ancienne base de données KeePass 1 (.kdb).
+
+Vous pouvez l&apos;importer en cliquant sur Base de données&gt;&apos;Importer une base de données KeePass 1...&apos;
+Il s&apos;agit d&apos;une migration à sens unique. Vous ne pourrez pas ouvrir la base de données importée avec l&apos;ancienne version de KeePassX 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Version de la base de données KeePass 2 non pris en charge.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Erreur d&apos;analyse XML : %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Aucun groupe racine</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Données ou uuid de l’icône manquant</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Valeur ou clé de donnée personnalisée manquante</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Éléments du groupe multiples</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Uuid du groupe sans valeur</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Numéro de l&apos;icône du groupe non valide</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Valeur EnableAutoType non valide</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Valeur de EnableSearching non valide</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Aucun uuid de groupe trouvé</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Uuid de DeleteObject sans valeur</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Temps ou uuid de DeletedObject manquant</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Uuid de l&apos;entrée sans valeur</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Numéro de l&apos;icône de l&apos;entrée non valide</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Élément de l’historique de l’entrée de l’historique</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Aucun uuid d&apos;entrée trouvé</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Élément de l’historique avec un uuid différent</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Impossible de déchiffrer la chaîne de caractères de l&apos;entrée</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Dupliquer l&apos;attribut personnalisé trouvé</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Valeur ou clé de la chaîne de caractères de l&apos;entrée manquante</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Dupliquer le fichier attaché trouvé</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Valeur ou clé du binaire de l&apos;entrée manquante</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Fenêtre ou séquence d’association de saisie automatique manquante</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Valeur bool non valide</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Valeur date time non valide</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Valeur de couleur non valide</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Partie de couleur RVB non valide</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Valeur de nombre non valide</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Valeur uuid non valide</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Impossible de décompresser le binaire</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1277,6 +2449,35 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<translation>Version de base de données KeePass non supportée.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Impossible de lire le vecteur d&apos;initialisation du chiffrement</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Nombre de groupes non valide</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Nombre d’entrées non valide</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Taille du hachage du contenu non valide</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Taille de la semence germée non valide.</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Nombre de tours de transformation non valide</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Impossible de construire l’arborescence du groupe</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Racine</translation>
</message>
@@ -1288,129 +2489,141 @@ Voulez vous l&apos;ouvrir quand même ?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Clé incorrecte ou la base de données est corrompue.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Ce n&apos;est pas une base de données KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Échec de la transformation de la clé</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Version de base de données KeePass non supportée.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Numéro du type de champ groupe non valide.</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Mauvaise clé ou fichier de base de données corrompu.</translation>
+ <source>Invalid group field size</source>
+ <translation>Taille du champ groupe non valide</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossible de calculer la clé maître</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Les données lues dans le champ groupe ne correspondent pas à la taille</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Impossible de lancer une challenge-réponse.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Taille du champ &quot;identifiant du groupe&quot; incorrect</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Le fichier sélectionné est une ancienne base de données KeePass 1 (.kdb).
-
-Vous pouvez l&apos;importer en cliquant sur Base de données&gt;&apos;Importer une base de données KeePass 1 ...&apos;
-Il s&apos;agit d&apos;une migration à sens unique. Vous ne pourrez pas ouvrir la base de données importée avec l&apos;ancienne version de KeePassX 0.4.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Taille du champ &quot;date du la création du groupe&quot; incorrect.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Impossible de lancer une challenge-réponse.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Taille du champ heure de modification du groupe non correct</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossible de calculer la clé maître</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Taille du champ &quot;date d&apos;accès au groupe&quot; incorrect.</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Erreur fatale lors des tests des fonctions cryptographiques.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Taille du champ &quot;date d&apos;expiration du groupe&quot; incorrect.</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Erreur</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Taille du champ &quot;icône du groupe&quot; incorrect.</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Le fichier verrou ne peut pas être créé. Le mode instance-unique est désactivé.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Taille du champ du niveau du groupe incorrecte</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Une autre instance de KeePassXC est déjà en cours d&apos;exécution.</translation>
+ <source>Invalid group field type</source>
+ <translation>Type du champ groupe incorrect.</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>Le fichier de verrouillage de l’instance unique existant n’est pas valide. Lancement d&apos;une nouvelle instance.</translation>
+ <source>Missing group id or level</source>
+ <translation>Niveau ou id du groupe manquant</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Ouvrir une base de données</translation>
+ <source>Missing entry field type number</source>
+ <translation>Type du numéro du champ d&apos;entrée manquante</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Paramètres de la base de données</translation>
+ <source>Invalid entry field size</source>
+ <translation>Taille du champ de l&apos;entrée non valide</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Copier le nom d&apos;utilisateur dans le presse-papier</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Les données d&apos;entrée lues ne correspondent pas à la taille.</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Copier le mot de passe dans le presse-papier</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Taille du champ uuid de l&apos;entrée non valide</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Paramètres</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Taille du champ id du groupe de l&apos;entrée non valide</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Afficher la barre d&apos;outils</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Taille du champ icône de l&apos;entrée non valide</translation>
</message>
<message>
- <source>read-only</source>
- <translation>Lecture seulement</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Taille du champ date de création de l&apos;entrée non valide</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Basculer de fenêtre</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Taille du champ date de modification de l&apos;entrée non valide</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Base de données KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Taille invalide du champ d&apos;entrée heure d&apos;expiration</translation>
</message>
<message>
- <source>All files</source>
- <translation>Tous les fichiers</translation>
+ <source>Invalid entry field type</source>
+ <translation>Champ d&apos;entrée type est invalide</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Sauvegarder la base de données réparée</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Le fichier de verrouillage de l’instance unique existant n’est pas valide. Lancement d&apos;une nouvelle instance.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Une erreur s&apos;est produite lors de l&apos;écriture de la base de données.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Le fichier verrou ne peut pas être créé. Le mode instance-unique est désactivé.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Une autre instance de KeePassXC est déjà en cours d&apos;exécution.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Erreur fatale lors des tests des fonctions cryptographiques.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Erreur</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Base de données</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>Bases de données récentes</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importer</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Aide</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>Entrées</translation>
</message>
@@ -1419,12 +2632,16 @@ Il s&apos;agit d&apos;une migration à sens unique. Vous ne pourrez pas ouvrir l
<translation>Copier l&apos;attribut dans le presse-papier</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Mot de passe à usage unique basé sur le temps</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>Groupes</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>Affichage</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Outils</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1435,6 +2652,10 @@ Il s&apos;agit d&apos;une migration à sens unique. Vous ne pourrez pas ouvrir l
<translation>&amp;À propos</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Ouvrir la base de donnée...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Enregistrer la base de données</translation>
</message>
@@ -1475,24 +2696,24 @@ Il s&apos;agit d&apos;une migration à sens unique. Vous ne pourrez pas ouvrir l
<translation>&amp;Supprimer le groupe</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Paramètre de la base de &amp;données</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Sau&amp;ver la base de données sous...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>Cloner l&apos;entrée</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Changer la clé &amp;maître...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Mot de passe à usage unique</translation>
+ <source>&amp;Database settings</source>
+ <translation>Paramètre de la base de &amp;données</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Copie &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Paramètres de la base de données</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Afficher TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>Cloner l&apos;entrée</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1503,14 +2724,26 @@ Il s&apos;agit d&apos;une migration à sens unique. Vous ne pourrez pas ouvrir l
<translation>Copier le nom d&apos;utilisateur</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Copier le nom d&apos;utilisateur dans le presse-papier</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Copier le mot de passe</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Copier le mot de passe dans le presse-papier</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>Paramètres</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Générateur de mot de passe</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>Exécuter la saisie semi-automatique</translation>
</message>
@@ -1527,165 +2760,222 @@ Il s&apos;agit d&apos;une migration à sens unique. Vous ne pourrez pas ouvrir l
<translation>&amp;Titre</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Copier le titre dans le presse-papier</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Copier l&apos;URL dans le presse-papier</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Notes</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Générateur de mot de passe</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Copier les notes dans le presse-papier</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Effacer l&apos;historique</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exporter dans un fichier CSV...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Base de données</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importer une base de données KeePass 1...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importer</translation>
+ <source>Import CSV file...</source>
+ <translation>Importer un fichier CSV...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Outils</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Ré&amp;parer la base de données...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Afficher TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Configurer TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Copie &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>V&amp;ider la corbeille</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Vider la corbeille</translation>
+ <source>Clear history</source>
+ <translation>Effacer l&apos;historique</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Erreur d&apos;accès au fichier de configuration %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Quitter KeePass XC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Il semble que vous utilisez KeePassHTTP pour l&apos;intégration au navigateur web. Cette fonctionnalité est dorénavant déconseillée et elle sera supprimée dans le future.&lt;br&gt;Veuillez passer à KeePassXC-Browser à la place! Si vous avez besoin d&apos;aide pour migrer, consulter notre&lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;guide de migration&lt;/a&gt; (avertissement %1 sur 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Veuillez presser le bouton de votre YubiKey!</translation>
+ <source>read-only</source>
+ <translation>Lecture seulement</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>Aide</translation>
+ <source>Settings</source>
+ <translation>Paramètres</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Ouvrir la base de donnée...</translation>
+ <source>Toggle window</source>
+ <translation>Basculer de fenêtre</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Sau&amp;ver la base de données sous...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Quitter KeePass XC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Changer la clé &amp;maître...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Base de données KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Exporter dans un fichier CSV...</translation>
+ <source>All files</source>
+ <translation>Tous les fichiers</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Importer une base de données KeePass 1...</translation>
+ <source>Open database</source>
+ <translation>Ouvrir une base de données</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importer un fichier CSV...</translation>
+ <source>Save repaired database</source>
+ <translation>Sauvegarder la base de données réparée</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Ré&amp;parer la base de données...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Une erreur s&apos;est produite lors de l&apos;écriture de la base de données.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Configurer TOTP...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Veuillez presser le bouton de votre YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>AVERTISSEMENT: Vous utilisez une version instable du KeePassXC!
+Il y a un risque élevé de corruption, gardez une sauvegarde de vos bases de données.
+Cette version n’est pas destinée à la production.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Dialogue</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Fichier clé invalide, une clé OpenSSH est attendue</translation>
</message>
<message>
- <source>General</source>
- <translation>Général</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>Décalage de la limite PEM</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>Montrer une notification quand les références sont demandées</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Échec du décodage Base64</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Trier les entrées correspondantes par nom d&apos;&amp;utilisateur</translation>
+ <source>Key file way too small.</source>
+ <translation>Le fichier clé est trop petit.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Supprimer toutes les permissions enregistrées des entrées de la base de données active</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>L&apos;identifiant magic header du fichier clé est invalide</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Avancé</translation>
+ <source>Found zero keys</source>
+ <translation>Zéro clés trouvées</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Toujours autoriser l&apos;&amp;accès aux entrées</translation>
+ <source>Failed to read public key.</source>
+ <translation>Échec de lecture de la clé publique.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Toujours autoriser la mise à jour des entrées</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Fichier clé corrompu, échec de lecture de la clé privée</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Cherc&amp;her dans toutes les bases de données ouvertes les entrées correspondantes</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Aucune clé privée à décrypter</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Port HTTP :</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Tentative d’exécuter KDF sans chiffrement</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Port par défaut : 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Cette clé requiert une phrase secrète pour être déchiffrée</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Demander de déverrouiller la base de données lorsque celle-ci est verrouillée</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Échec de la dérivation de clé, fichier clé corrompu?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Trier les entrées correspondantes par titre</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Échec du déchiffrement, mauvaise phrase secrète ?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeepassXC va écouter ce port sur 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>End-of-file inattendu lors de la lecture de la clé publique</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Liaison impossible avec les ports privilégiés</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>End-of-file inattendu lors de la lecture de la clé privée</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Liaison impossible avec les ports privilégiés, ceux avant 1024 !
-Restauration du port 19455 par défaut.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Impossible d&apos;écrire une clé publique car elle est vide</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>Supprimer toutes les clés de chiffrement partagées de la base de données active</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>End-of-file inattendu lors de l’écriture de la clé publique</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&amp; Retourne les champs avancés de type chaîne qui commencent par &quot;KPH :&quot;</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Impossible d&apos;écrire une clé privée car elle est vide</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>La création ou la mise a jour automatique ne sont pas pris en charge pour les champs de chaines de caractères !</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>End-of-file inattendu lors de l’écriture de la clé privée</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Type de clé non géré: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Chiffrement inconnu : %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Le vecteur d&apos;initialisation du chiffrage est trop court pour la KDF MD5</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>KDF inconnu : %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Type de clé inconnu : %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogue</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1696,6 +2986,15 @@ Restauration du port 19455 par défaut.</translation>
<translation>Activer le serveur KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Montrer une notification quand les références sont demandées</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Renvoie seulement les meilleures correspondances pour une URL spécifique au lieu des entrées pour tout le domaine.</translation>
</message>
@@ -1704,6 +3003,10 @@ Restauration du port 19455 par défaut.</translation>
<translation>&amp;Retourner seulement les meilleurs entrées</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Demander de déverrouiller la base de données lorsque celle-ci est verrouillée</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Seules les entrées avec le même schéma (http://, https://, ftp://, ...) sont retournées.</translation>
</message>
@@ -1712,27 +3015,108 @@ Restauration du port 19455 par défaut.</translation>
<translation>&amp;Schémas de correspondance URL</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Trier les entrées correspondantes par nom d&apos;&amp;utilisateur</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Trier les entrées correspondantes par titre</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Supprimer toutes les clés de chiffrement partagées de la base de données active</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Supprimer toutes les permissions enregistrées des entrées de la base de données active</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Générateur de mot de passe</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Avancé</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Toujours autoriser l&apos;&amp;accès aux entrées</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Toujours autoriser la mise à jour des entrées</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Seule la base de données sélectionnée doit être connectée avec un client.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Les options suivantes pourraient être dangereuses!
-Ne les changez que si vous savez ce que vous faites.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Cherc&amp;her dans toutes les bases de données ouvertes les entrées correspondantes</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>La création ou la mise a jour automatique ne sont pas pris en charge pour les champs de chaines de caractères !</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp; Retourne les champs avancés de type chaîne qui commencent par &quot;KPH :&quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Port HTTP :</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Port par défaut : 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeepassXC va écouter ce port sur 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Avertissement :&lt;/b&gt; Les options suivantes peuvent être dangereuses!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP est dorénavant déconseillé et il sera supprimé dans le futur.&lt;br&gt;Veuillez passer à KeePassXC-Browser à la place! Si vous avez besoin d&apos;aide pour migrer, consulter notre &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;guide de migration&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Liaison impossible avec les ports privilégiés</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Liaison impossible avec les ports privilégiés, ceux avant 1024 !
+Restauration du port 19455 par défaut.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Mot de passe :</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>force</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropie</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Types de caractères</translation>
</message>
@@ -1753,38 +3137,50 @@ Ne les changez que si vous savez ce que vous faites.</translation>
<translation>Caractères spéciaux</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>ASCII étendu</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Exclure les caractères se ressemblant</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Accepter</translation>
+ <source>Pick characters from every group</source>
+ <translation>Inclure des caractères de chaque groupe</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Longueur :</translation>
</message>
<message>
- <source>strength</source>
- <translation>force</translation>
+ <source>Passphrase</source>
+ <translation>Phrase secrète</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropie</translation>
+ <source>Wordlist:</source>
+ <translation>Liste de mots :</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Longueur :</translation>
+ <source>Word Count:</source>
+ <translation>Nombre de mots :</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Inclure des caractères de chaque groupe</translation>
+ <source>Word Separator:</source>
+ <translation>Séparateur de mot :</translation>
</message>
<message>
<source>Generate</source>
<translation>Générer</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Copie</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Accepter</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Fermer</translation>
</message>
@@ -1802,51 +3198,276 @@ Ne les changez que si vous savez ce que vous faites.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Pauvre</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Faible</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Bon</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Excellent</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Mot de passe</translation>
+ <source>Database not opened</source>
+ <translation>La base de données n&apos;est pas ouverte </translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>ASCII étendu</translation>
+ <source>Database hash not available</source>
+ <translation>Hachage de la base de donnée non disponible</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Phrase secrète</translation>
+ <source>Client public key not received</source>
+ <translation>Clé publique du client non reçue</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Liste de mots :</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Impossible de déchiffrer le message</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Nombre de mots :</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Connexion expirée ou impossible à KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Séparateur de mot :</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Action annulée ou refusée</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Copie</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Chiffrement impossible du message ou clé publique introuvable. Native Messaging est-il activé dans KeePassXC ?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>L&apos;association à KeePassXC a échoué, veuillez réessayer</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Le changement de clé n&apos;a pas réussi</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>La clé de chiffrement n&apos;est pas reconnue</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Aucunes bases de données sauvegardées trouvées</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Action incorrecte</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Message vide reçu</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Aucune URL définie</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Aucuns identifiants trouvés</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Erreur inconnue</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Ajouter une nouvelle entrée à la base de données.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Chemin d&apos;accès de la base de données.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Fichier clé de la base de données.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>chemin</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Nom d&apos;utilisateur de l&apos;entrée.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>nom d&apos;utilisateur</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL de l&apos;entrée.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Demande du mot de passe de l&apos;entrée.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Générer un mot de passe pour l&apos;entrée.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Longueur du mot de passe généré.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>longueur</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Chemin de l&apos;entrée à ajouter.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Copier le mot de passe d&apos;une entrée dans le presse-papier.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Chemin de l&apos;entrée à épingler.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Expiration en secondes avant l&apos;effacement du presse-papier.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Modifier une entrée.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Titre de l&apos;entrée.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>titre</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Chemin de l&apos;entrée à modifier.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Estimer l’entropie d’un mot de passe.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Mot de passe permettant d’estimer l’entropie.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Effectuer une analyse approfondie du mot de passe.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extraire et imprimer le contenu d&apos;une base de données.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Chemin de la base de données à extraire.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Insérer le mot de passe pour déverrouiller %1 : </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Échec du chargement du fichier clé %1 : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>AVERTISSEMENT : Vous utilisez un format de fichier clé hérité
+qui peut ne plus être pris en charge à l’avenir.
+
+Veuillez envisager de générer un nouveau fichier clé.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Commandes disponibles :
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Nom de la commande à exécuter.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Lister les entrées de la base.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Chemin du groupe à lister. Par défaut : /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Trouver rapidement les entrées.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Terme de recherche.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Fusionner deux bases de données.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Chemin de la base de données cible.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Chemin de la base de données source.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Utiliser les mêmes identifiants pour les deux bases de données.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Fichier clé de la base de données à fusionner.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Afficher les informations d’une entrée.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Noms des attributs à afficher. Cette option peut être spécifiée plusieurs fois, avec chaque attribut indiqué par une ligne dans l’ordre indiqué. Si aucun attribut n’est spécifié, un résumé des attributs par défaut est donné.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>attribut</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nom de l&apos;entrée à afficher.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>Périphérique NULL</translation>
@@ -1870,8 +3491,28 @@ Ne les changez que si vous savez ce que vous faites.</translation>
<translation>fermeture de citation manquante</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>INTERNE - dépassement de la limite inférieure</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES : 256 bits</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish : 256 bits</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20 : 256 bits</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – recommandé)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1890,14 +3531,22 @@ Ne les changez que si vous savez ce que vous faites.</translation>
<translation>Mot de passe</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notes</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Dernière modification</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Créée</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Intégration au navigateur web héritée</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Intégration Navigateur</translation>
</message>
@@ -1913,6 +3562,56 @@ Ne les changez que si vous savez ce que vous faites.</translation>
<source>Passive</source>
<translation>Passif</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Créé une nouvelle phrase secrète générée par Diceware aléatoire</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Comptage des mots pour la phrase secrète générée par Diceware</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Liste de mots pour le générateur par Diceware.
+[par défaut : anglais EFF]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Générer un nouveau mot de passe aléatoire.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Longueur du mot de passe généré.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Utiliser les caractères minuscules dans le mot de passe créé.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Utiliser les caractères majuscules dans le mot de passe créé.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Utiliser les nombres dans le mot de passe créé.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Utiliser les caractères spéciaux dans le mot de passe créé.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Utiliser les caractères ASCII étendus dans le mot de passe créé.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1951,8 +3650,8 @@ Ne les changez que si vous savez ce que vous faites.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Sensible à la casse</translation>
+ <source>Search...</source>
+ <translation>Recherche...</translation>
</message>
<message>
<source>Search</source>
@@ -1963,8 +3662,8 @@ Ne les changez que si vous savez ce que vous faites.</translation>
<translation>Effacer</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Recherche...</translation>
+ <source>Case Sensitive</source>
+ <translation>Sensible à la casse</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1974,50 +3673,6 @@ Ne les changez que si vous savez ce que vous faites.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Une clé de chiffrement partagée avec le nom &quot;%1&quot; existe déjà.
-Voulez-vous l&apos;écraser ?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Voulez-vous mettre à jour l&apos;information dans %1 - %2 ?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>La base de données actuelle est verrouillée !
-Veuillez déverrouiller la base de données sélectionnée ou en choisir une qui est déverrouillée. </translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>%1 %2 de chiffrement ont été retirés avec succès des paramètres de KeePassX/Http.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Aucune clé de chiffrement partagée trouvée dans les paramètres de KeePassHttp.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>La base de données actuelle ne contient pas d&apos;entrée de paramètres KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Effacement des permissions enregistrées...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Annuler</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Les permissions de %1 %2 ont été retirées avec succès.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>La base de données actuelle ne contient pas d&apos;entrée avec des permissions.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC : nouvelle demande d&apos;association</translation>
</message>
@@ -2034,33 +3689,77 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<translation>KeePassXC : Écraser la clé existante ?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Une clé de chiffrement partagée avec le nom &quot;%1&quot; existe déjà.
+Voulez-vous l&apos;écraser ?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC : Mettre à jour l&apos;entrée</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Voulez-vous mettre à jour l&apos;information dans %1 - %2 ?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC : Base de données verrouillée !</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>La base de données actuelle est verrouillée !
+Veuillez déverrouiller la base de données sélectionnée ou en choisir une qui est déverrouillée. </translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC : Les clés ont été effacées de la base de donnée</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Réussi à retirer le chiffrement %n-clé (s) de paramètres KeePassX/Http.</numerusform><numerusform>%n-clé(s) chiffrement ont été retirées des paramètres KeePassX/Http.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC : Aucune clé trouvée</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Aucune clé de chiffrement partagée trouvée dans les paramètres de KeePassHttp.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Paramètre indisponible !</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>La base de données actuelle ne contient pas d&apos;entrée de paramètres KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Effacement des permissions enregistrées...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC : Permissions retirées</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Correctement supprimé les autorisations de %n entrées.</numerusform><numerusform>Les autorisations de %n entrées ont été correctement supprimées.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC : Aucune entrée avec permissions trouvée !</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>La base de données actuelle ne contient pas d&apos;entrée avec des permissions.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2084,10 +3783,26 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Paramètres de base</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Démarrer uniquement une seule instance de KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Se souvenir des dernières bases de données</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Se souvenir des derniers fichiers clé et des dongles de sécurité</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Charger les bases de données précédentes au démarrage</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Sauvegarder automatiquement à la sortie</translation>
</message>
@@ -2096,20 +3811,28 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<translation>Sauvegarder automatiquement après chaque modification</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Recharger automatiquement la base de données quand celle-ci est modifiée depuis l&apos;extérieur</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Réduire lors de la copie dans le presse-papier</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimiser la fenêtre lors du démarrage de l&apos;application</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Utiliser l&apos;icône de groupe à la création d&apos;une entrée</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Raccourci de la Saisie-Automatique</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Ne pas indiquer la base de données comme modifiée pour les changements hors-données (par exemple : groupes développés)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Langue</translation>
+ <source>Hide the Details view</source>
+ <translation>Masquer la Vue détaillée</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2120,66 +3843,84 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<translation>Réduire la fenêtre vers la zone de notification lors de sa réduction</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Charger les bases de données précédentes au démarrage</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Recharger automatiquement la base de données quand celle-ci est modifiée depuis l&apos;extérieur</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Envoyer la fenêtre dans la zone de notification au lieu de quitter l&apos;application</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Minimiser la fenêtre lors du démarrage de l&apos;application</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Paramètres de base</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Se souvenir des derniers fichiers clé et des dongles de sécurité</translation>
+ <source>Dark system tray icon</source>
+ <translation>Icône sombre dans la zone de notification</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Ne pas indiquer la base de données comme modifiée pour les changements hors-données (par exemple : groupes développés)</translation>
+ <source>Language</source>
+ <translation>Langue</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Saisie-Automatique</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Utilisez le titre de l&apos;entrée et l&apos;URL dans la correspondance des fenêtres pour la Saisie-Automatique globale.</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Utiliser le titre de l&apos;entrée dans la correspondance des fenêtres pour la saisie automatique globale.</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Utiliser l&apos;URL de l&apos;entrée dans la correspondance des fenêtres pour la saisie automatique globale.</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Toujours demander avant de procéder à une Saisie-Automatique</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Raccourci de la Saisie-Automatique</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Délais de Remplissage de la Saisie-Automatique</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Démarrer uniquement une seule instance de KeePassXC</translation>
+ <source>Startup</source>
+ <translation>Démarrage</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Gestion de fichiers</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Enregistrer en toute sécurité les fichiers de base de données (peut être incompatible avec Dropbox, etc.)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Sauvegarder le fichier de base de données avant d’enregistrer</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Gestion des entrées</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Général</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Timeouts</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Vider le presse-papier après</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> s</translation>
</message>
<message>
@@ -2187,8 +3928,12 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<translation>Verrouiller les bases de données après une inactivité de</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Afficher les mots de passe en clair par défaut</translation>
+ <source>Convenience</source>
+ <translation>Convenance</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Verrouiller les bases de données quand la session est verrouillée ou le capot fermé</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2199,16 +3944,16 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<translation>Ne pas demander de répéter le mot de passe lorsque celui-ci est visible</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Timeouts</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Afficher les mots de passe en clair par défaut</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Convenance</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Masquer les mots de passe dans le panneau de prévisualisation</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Verrouiller les bases de données quand la session est verrouillée ou le capot fermé</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Masquer les notes des entrées par défaut</translation>
</message>
<message>
<source>Privacy</source>
@@ -2218,6 +3963,10 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Utilisez Google en secours pour télécharger des icônes de site web</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Verrouiller à nouveau la base de données précédemment verrouillée après avoir réalisé la saisie automatique</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2230,6 +3979,14 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<translation>Clé :</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Paramètres de base des codes RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Paramètres du code éphémère Steam</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Utiliser les paramètres personnalisés</translation>
</message>
@@ -2255,6 +4012,7 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> s</translation>
</message>
</context>
@@ -2291,10 +4049,6 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Bienvenue dans KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Gardez vos mots de passe en sécurité dans une base de données KeePassXC</translation>
</message>
@@ -2318,92 +4072,48 @@ attribuez lui un nom unique pour l&apos;identifier et acceptez la.</translation>
<source>Recent databases</source>
<translation>Bases de données récentes</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Bienvenue dans KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>Chemin vers un fichier de configuration personnalisé</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>Fichier-clé de la base de données</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - Gestionnaire de mots de passe multiplateforme</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>Lire le mot de passe de la base de données sur l&apos;entrée standard</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>noms de fichiers des bases de données de mot de passe à ouvrir (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Copier un mot de passe dans le presse papier</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Supprimer une entrée de la base de données.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Chemin d&apos;accès de la base de données.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Utiliser une invite graphique pour déverrouiller la base de données.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Nom de l&apos;entrée épingler.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Extraire et imprimer le contenu d&apos;une base de données.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Chemin de la base de données à extraire.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Nom de la commande à exécuter.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Lister les entrées de la base.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Chemin du groupe à lister. Par défaut : /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Imprimer les UUIDs des entrées et des groupes.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Chemin de l&apos;entrée à supprimer.</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>Fusionner deux bases de données.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - Gestionnaire de mots de passe multiplateforme</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Chemin de la base de données cible.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>noms de fichiers des bases de données de mot de passe à ouvrir (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Chemin de la base de données source.</translation>
+ <source>path to a custom config file</source>
+ <translation>Chemin vers un fichier de configuration personnalisé</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Utiliser le même mot de passe pour les deux bases de données. </translation>
+ <source>key file of the database</source>
+ <translation>Fichier-clé de la base de données</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Afficher un mot de passe.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>Lire le mot de passe de la base de données sur l&apos;entrée standard</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Nom de l&apos;entrée à afficher.</translation>
+ <source>Parent window handle</source>
+ <translation>Poignée de la fenêtre parent</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_hu.ts b/share/translations/keepassx_hu.ts
index dc9877054..a84903fa6 100644
--- a/share/translations/keepassx_hu.ts
+++ b/share/translations/keepassx_hu.ts
@@ -10,14 +10,30 @@
<translation>Névjegy</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Hibajelentés: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>A KeePassXC a GNU General Public License (GPL) 2. vagy (válaszhatóan ) 3. verziója szerint kerül terjesztésre.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Közreműködők</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Közreműködők megtekintése a GitHubon&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Hibakeresési információk</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Minden hibajelentésnél legyenek mellékelve ezek az információk:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Vágólapra másolás</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revízió: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Disztribúció: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Függvénykönyvtárak:</translation>
</message>
@@ -48,33 +68,26 @@ Kernel: %3 %4</translation>
<translation>Engedélyezett kiterjesztések:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Hibajelentés: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>A KeePassXC a GNU General Public License (GPL) 2. vagy (válaszhatóan ) 3. verziója szerint kerül terjesztésre.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Projektkarbantartók:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Közreműködők megtekintése a GitHubon&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Minden hibajelentésnél legyenek mellékelve ezek az információk:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>A KeePassXC fejlesztőcsapata ezúton külön köszönetet mond debfx-nek az eredetei KeePassX létrehozásáért.</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>Disztribúció: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Build típusa: %1</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP hozzáférési engedély</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Döntés megjegyzése</translation>
</message>
@@ -92,21 +105,44 @@ Please select whether you want to allow access.</source>
<translation>A %1 jelszóengedélyt kér a következő elem(ek) számára.
Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP hozzáférési engedély</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>SSH ügynök engedélyezése (újraindítást igényel)</translation>
</message>
</context>
<context>
<name>AutoType</name>
<message>
<source>Couldn&apos;t find an entry that matches the window title:</source>
- <translation>Nem található egyetlen elem sem, amely illeszkedik az ablak címsorára:</translation>
+ <translation>Nem található olyan bejegyzés, amely illeszkedik az ablak címsorára:</translation>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
<translation>Automatikus beírás – KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Automatikus beírás</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Az automatikus beírás utasításszintaxisa helytelen!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Ez az automatikus beírás parancs nagyon hosszú késleltetést tartalmaz. Valóban folytatható?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Ez az automatikus beírás parancs nagyon lassú billentyűlenyomásokat tartalmaz. Valóban folytatható?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Ez az automatikus beírás parancs nagyon gyakran ismétlődő paramétert tartalmaz. Valóban folytatható?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,15 +160,318 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
</message>
</context>
<context>
- <name>AutoTypeSelectDialog</name>
+ <name>AutoTypeMatchModel</name>
<message>
- <source>Select entry to Auto-Type:</source>
- <translation>Elem kijelölése automatikus beírásra:</translation>
+ <source>Group</source>
+ <translation>Csoport</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Cím</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Felhasználónév</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sorrend</translation>
</message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
<message>
<source>Auto-Type - KeePassXC</source>
<translation>Automatikus beírás – KeePassXC</translation>
</message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation>Bejegyzés kijelölése automatikus beírásra:</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-böngésző hozzáférés engedélyezése</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Döntés megjegyzése</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Engedélyezés</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Megtagadás</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>A %1 jelszóengedélyt kér a következő elem(ek) számára.
+Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Párbeszédablak</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Ez szükséges az adatbázis KeePassXC-böngészőből történő eléréséhez</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>KeepassXC böngészőintegráció engedélyezése</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Ãltalános</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Böngészőintegráció engedélyezése a következőkhöz:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>É&amp;rtesítés megjelenítése hitelesítési adatok kérésekor</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Adatbázis feloldási &amp;kérelem, ha zárolva van</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Csak az azonos sémájú (http://, https://, …) bejegyzések visszaadása.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;URL sémákra illeszkedés (pl. https://…)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Egy konkrét URL-hez tartozó legjobb találatokat adja vissza, a teljes domainhoz tartozó összes bejegyzés helyett.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Csak a &amp;legjobb hitelesítési adatok visszaadása</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Illeszkedő hitelesítési adatok rendezése &amp;cím szerint</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Illeszkedő hitelesítési adatok rendezése &amp;felhasználónév szerint</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>Minden böngésző &amp;leválasztása</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Minden tárolt hozzáférés törlése</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Speciális</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Hozzáférési adatok elérése előtt soha ne &amp;kérdezzen</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Hozzáférési adatok &amp;frissítése előtt soha ne kérdezzen</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Csak a kijelölt adatbázishoz kell kapcsolódnia egy klienssel.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;Keresés minden megnyitott adatbázis hitelesítési adataiban</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>A karakterlánc mezők automatikus létrehozása vagy frissítése nem támogatott.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>A „KPH:â€-val kezdÅ‘dÅ‘ fejlett karakterlánc mezÅ‘k &amp;visszaadása</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Indításkor automatikusan frissíti a KeePassXC vagy a keepassxc-proxy bináris útvonalát a natív üzenetküldő parancsfájlok felé.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Natív üzenetküldő manifest-fájlok frissítése indításkor</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Támogatást biztosít egy proxy-alkalmazásnak a KeePassXC és a böngésző kiterjesztés között.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Proxy-alkalmazás alkalmazása a KeePassXC és a böngésző kiterjesztés között</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Egyedi proxyhelyet kell beállítani manuálisan telepített proxy esetén.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Egyedi proxyhely alkalmazása</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Tallózás…</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Figyelmeztetés:&lt;/b&gt; A következő beállítások veszélyesek lehetnek!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Végrehajtható fájlok (*.exe);;Minden fájl (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Végrehajtható fájlok (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Egyedi proxyhely kijelölése</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Sajnáljuk, de a KeePassXC-Browser pillanatnyilag nem támogatja a Snap kiadásokat.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Új kulcstársítási kérés</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>A fenti kulcsra társítási kérelem érkezett.
+
+A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi név hozzárendelése és elfogadása szükséges.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Engedélyezési hozzáférés mentése</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Felülírja a létező kulcsot?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Létezik már egy megosztott titkosítási kulcs ezzel a névvel: „%1â€.
+Valóban felülírható?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Bejegyzés frissítése</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Frissíti az információt ebben: %1 – %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Adatbázis zárolva!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Az aktív adatbázis zárolt.
+Fel kell oldani a kijelölt adatbázist, vagy egy másik nem zároltat kell választania.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Nincs ilyen beállítás!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Az aktív adatbázisban nincs beállítási bejegyzés.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Nincs találat a kulcsok között</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Nem található megosztott titkosítási kulcs a KeePassXC beállításaiban.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Kulcsok eltávolítva az adatbázisból</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Sikeresen eltávolításra került %n titkosítási kulcs a KeePassXC beállításokból.</numerusform><numerusform>Sikeresen eltávolításra került %n titkosítási kulcs a KeePassXC beállításokból.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Tárolt jogosultságok törlése…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Megszakítás</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Jogosultságok eltávolítva</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Sikeresen el lett távolítva a jogosultság %n elemről.</numerusform><numerusform>Sikeresen el lett távolítva a jogosultság %n elemről.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Nem található bejegyzés ilyen jogosultsággal!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Az aktív adatbázisban nincs egyetlen jogosultsági bejegyzés sem.</translation>
+ </message>
</context>
<context>
<name>ChangeMasterKeyWidget</name>
@@ -149,6 +488,10 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<translation>Jelszó ismétlése:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Kulcsfájl</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Tallózás</translation>
</message>
@@ -157,6 +500,14 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<translation>Létrehozás</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Ki&amp;hívás-válasz</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Frissítés</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Kulcsfájlok</translation>
</message>
@@ -170,15 +521,19 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
</message>
<message>
<source>Unable to create Key File : </source>
- <translation>Nem hozható létre kulcsfájl:</translation>
+ <translation>Nem hozható létre kulcsfájl: </translation>
</message>
<message>
<source>Select a key file</source>
- <translation>Kulcsfájl kijelölése</translation>
+ <translation>Kulcsfájl kiválasztása</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>Üres jelszó</translation>
</message>
<message>
<source>Do you really want to use an empty string as password?</source>
- <translation>Valóban üres legyen a jelszó?</translation>
+ <translation>Valóban üres szöveget szeretne használni jelszóként?</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -187,24 +542,21 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<message>
<source>Failed to set %1 as the Key file:
%2</source>
- <translation>A(z) %1 kulcsfájl beállítása meghiúsult:
+ <translation>A(z) %1 kulcsfájl beállítása sikertelen:
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Kulcsfájl</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Ki&amp;hívás-válasz</translation>
+ <source>Legacy key file format</source>
+ <translation>Örökölt kulcsfájl formátum</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>Frissítés</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Üres jelszó</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Egy régi, örökölt kulcsfájl formátumot használ, ami a közeljövőben már nem lesz támogatott.
+
+Megfontolandó egy új kulcsfájl készítése.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +570,10 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<translation>Beállítások klónozása</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>„- klón†hozzáfűzése a címhez</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>A felhasználónév és a jelszó cseréje hivatkozásokra</translation>
</message>
@@ -225,10 +581,6 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<source>Copy history</source>
<translation>Előzmények másolása</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>„- klón†hozzáfűzése a címhez</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +678,6 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>CSV-fájl importálása</translation>
- </message>
- <message>
<source>Error</source>
<translation>Hiba</translation>
</message>
@@ -340,17 +688,17 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>bájt,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n bájt, </numerusform><numerusform>%n bájt, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>sor,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n sor, </numerusform><numerusform>%n sor, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>oszlop</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n oszlop</numerusform><numerusform>%n oszlop</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +720,14 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<translation>Tallózás</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Frissítés</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Kihívás-válasz:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Nem lehet megnyitni az adatbázist.</translation>
</message>
@@ -380,6 +736,23 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<translation>Nem lehet megnyitni a kulcsfájlt</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Örökölt kulcsfájl formátum</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Egy régi, örökölt kulcsfájl formátumot használ, ami a közeljövőben már nem lesz támogatott.
+
+Megfontolandó egy új kulcsfájl készítése.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Ne jelenjen meg többé a figyelmeztetés</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Minden fájl</translation>
</message>
@@ -389,15 +762,7 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
</message>
<message>
<source>Select key file</source>
- <translation>Kulcsfájl kijelölése</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Frissítés</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Kihívás-válasz:</translation>
+ <translation>Kulcsfájl kiválasztása</translation>
</message>
</context>
<context>
@@ -415,22 +780,22 @@ Válassza ki, hogy engedélyezi-e a hozzáférést.</translation>
<translation>Nem lehet megnyitni a kulcsfájl</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Az adatbázis megnyitása sikeres. Nincs további teendő.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Nem lehet megnyitni az adatbázist.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Az adatbázis megnyitása sikeres. Nincs további teendő.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Sikeres</translation>
</message>
<message>
<source>The database has been successfully repaired
You can now save it.</source>
- <translation>Az adatbázis sikeresen helyre lett állítva.
-El lehet menteni.</translation>
+ <translation>Az adatbázis sikeresen meg lett javítva.
+Most már el lehet menteni.</translation>
</message>
<message>
<source>Unable to repair the database.</source>
@@ -440,40 +805,71 @@ El lehet menteni.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Adatbázisnév:</translation>
+ <source>General</source>
+ <translation>Ãltalános</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Adatbázis leírása:</translation>
+ <source>Encryption</source>
+ <translation>Titkosítás</translation>
</message>
<message>
- <source>Transform rounds:</source>
- <translation>Ãtalakítási körök száma:</translation>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Fordulók száma túl magas</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Alapértelmezett felhasználónév:</translation>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Nagyon sok kulcsátalakítási forduló lett megadva az Argon2 számára.
+
+Ezt a számot megtartva az adatbázis megnyitása órákba vagy napokba (vagy még több időbe) telhet!</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Understood, keep number</source>
+ <translation>Megértettem, maradjon a szám</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Teljesítménymérés</translation>
+ <source>Cancel</source>
+ <translation>Mégse</translation>
</message>
<message>
- <source>Max. history items:</source>
- <translation>Előzmények max. száma:</translation>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Fordulók száma túl alacsony</translation>
</message>
<message>
- <source>Max. history size:</source>
- <translation>Előzmények max. mérete:</translation>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Nagyon kevés kulcsátalakítási forduló lett megadva az AES-KDF számára.
+
+Ezt a számot megtartva az adatbázis nagyon könnyen törhető lesz.</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Kuka használata</translation>
+ <source>KDF unchanged</source>
+ <translation>KDF változatlan</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>A kulcsátalakítás sikertelen az új KDF paraméterrel; KDF változatlan.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform>szál</numerusform><numerusform>szál</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Titkosítási algoritmus:</translation>
</message>
<message>
<source>AES: 256 Bit (default)</source>
@@ -484,14 +880,78 @@ El lehet menteni.</translation>
<translation>Twofish: 256 bit</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmus:</translation>
+ <source>Key Derivation Function:</source>
+ <translation>Kulcsszármaztatási függvény:</translation>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>Ãtalakítási fordulók száma:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation>Egy másodperces késleltetésű teljesítményvizsgálat</translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>Memóriahasználat:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Párhozamosság:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Adatbázis metaadat</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Adatbázisnév:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Adatbázis leírása:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Alapértelmezett felhasználónév:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>Előzménybeállítások</translation>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation>Előzmények legnagyobb száma:</translation>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation>Előzmények legnagyobb mérete:</translation>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation> MiB</translation>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>Kuka használata</translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation>További adatbázis-beállítások</translation>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>&amp;Tömörítés engedélyezése (ajánlott)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Gyökér</translation>
</message>
<message>
@@ -511,40 +971,78 @@ El lehet menteni.</translation>
<translation>A fájl nem található!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>KeePass 1 adatbázis megnyitása</translation>
+ <source>Unable to open the database.</source>
+ <translation>Nem lehet megnyitni az adatbázist.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 adatbázis</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Fájl megnyitva csak olvashatóként</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>CSV-fájl megnyitása</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV-fájl</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Minden fájl (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Adatbázis összeolvasztása</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>KeePass 1 adatbázis megnyitása</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 adatbázis</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Bezárja?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>A(z) „%1†szerkesztési módban van.
+Elveti a módosításokat és mindenképp bezárja? </translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Menti a módosításokat?</translation>
</message>
<message>
<source>&quot;%1&quot; was modified.
Save changes?</source>
- <translation>„%1†módosítva lett.
-El legyen mentve?</translation>
+ <translation>A(z) „%1†módosítva lett.
+Menti a módosításokat?</translation>
</message>
<message>
<source>Writing the database failed.</source>
- <translation>Az adatbázis mentése sikertelen.</translation>
+ <translation>Az adatbázis kiírása sikertelen.</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>Jelszavak</translation>
</message>
<message>
<source>Save database as</source>
<translation>Adatbázis mentése más néven</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Adatbázis exportálása CSV-fájlba</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>A CSV-fájl mentése sikertelen.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Új adatbázis</translation>
</message>
@@ -559,86 +1057,35 @@ El legyen mentve?</translation>
<message>
<source>Can't lock the database as you are currently editing it.
Please press cancel to finish your changes or discard them.</source>
- <translation>Szerkesztés közben nem lehet zárolni az adatbázist.
-A „Mégse†gombbal befejezhető vagy elvethető a módosítás.</translation>
- </message>
- <message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Ez az adatbázis még soha nem lett elmentve.
-Elmentheti az adatbázist vagy leállíthatja a zárolást.</translation>
+ <translation>Nem lehet zárolni az adatbázist, mivel jelenleg azt szerkeszti.
+Nyomja meg a „Mégse†gombot a módosítások befejezéshez vagy dobja el azokat.</translation>
</message>
<message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
<translation>Ez az adatbázis módosítva lett.
-Elmenti az adatbázist a zárolás előtt?
+Szeretné elmenteni az adatbázist zárolás előtt?
Különben a módosítások elvesznek.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>„%1†szerkesztési módban van.
-Elveti a módosításokat és mindenképp bezárja? </translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Adatbázis exportálása CSV-fájlba</translation>
+ <source>Disable safe saves?</source>
+ <translation>Letiltható a biztonságos mentés?</translation>
</message>
<message>
- <source>CSV file</source>
- <translation>CSV-fájl</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>A CSV-fájl mentése sikertelen.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Nem lehet megnyitni az adatbázist.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Adatbázis összeolvasztása</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>A mentés alatt álló adatbázist egy másik KeePassXC példány zárolta.
-Mindenképp elmenti?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Jelszavak</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Az adatbázis már meg lett nyitva</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>A megnyitás alatt álló adatbázist egy másik KeePassXC példány zárolta.
-Mindenképp megnyitja?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Megnyitás csak olvashatóként</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Fájl megnyitva csak olvashatóként</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>CSV-fájl megnyitása</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>A KeePassXC többször is hiába próbálta meg elmenteni az adatbázist. Ez jellemzően azért szokott előfordulni, mert egy szinkronizáló szolgáltatás zárolja a mentendő fájl.
+Letiltható a biztonságos mentés és úgy megkísérelhető a mentés?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Keresés…</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Mesterkulcs módosítása</translation>
</message>
@@ -648,7 +1095,7 @@ Mindenképp megnyitja?</translation>
</message>
<message>
<source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
- <translation>Valóban végleg törli a bejegyzést: „%1�</translation>
+ <translation>Valóban végleg szeretné törölni a bejegyzést: „%1�</translation>
</message>
<message>
<source>Delete entries?</source>
@@ -656,7 +1103,15 @@ Mindenképp megnyitja?</translation>
</message>
<message>
<source>Do you really want to delete %1 entries for good?</source>
- <translation>Valóban végleg törli a(z) %1 bejegyzést?</translation>
+ <translation>Valóban végleg szeretne törölni %1 bejegyzést?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Kukába dobja a bejegyzést?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Valóban kukába szeretné dobni a bejegyzést: „%1�</translation>
</message>
<message>
<source>Move entries to recycle bin?</source>
@@ -664,31 +1119,31 @@ Mindenképp megnyitja?</translation>
</message>
<message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation><numerusform>Valóban a kukába dobja az %n elemet?</numerusform><numerusform>Valóban a kukába dobja a(z) %n elemet?</numerusform></translation>
+ <translation><numerusform>Valóban a kukába szeretne dobni %n elemet?</numerusform><numerusform>Valóban a kukába szeretne dobni %n elemet?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Törli a csoportot?</translation>
+ <source>Execute command?</source>
+ <translation>Végrehajtja a parancsot?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Valóban végleg törli a csoportot: „%1�</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Valóban végrehajtja a következő parancsot? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
+ <source>Remember my choice</source>
+ <translation>Válasz megjegyzése</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Kukába dobja a bejegyzést?</translation>
+ <source>Delete group?</source>
+ <translation>Törli a csoportot?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Valóban kukába dobja az elemet: „%1�</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Valóban végleg szeretné törölni a csoportot: „%1�</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Keresés…</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1162,8 @@ Mindenképp megnyitja?</translation>
<translation>Nincs találat</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Végrehajtja a parancsot?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Valóban végrehajtja a következő parancsot? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Válasz megjegyzése</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Automatikus beolvasási kérelem</translation>
+ <source>File has changed</source>
+ <translation>A fájl módosult</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1174,10 @@ Mindenképp megnyitja?</translation>
<translation>Összeolvasztási kérelem</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Az adatbázisfájl módosult és vannak nem mentett változások. Összeolvasztja a módosításokat?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Az adatbázisfájl módosult és vannak nem mentett változások.
+Egyesíti a módosításokat?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -748,6 +1193,89 @@ Mindenképp megnyitja?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>TOTP jelsor előállítása</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Bezárás</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Ãltalános</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Jelszó</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Lejárat</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Felhasználónév</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Automatikus típus</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Keresés</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Attribútumok</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Mellékletek</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Jegyzetek</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Ablak</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sorrend</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Keresés</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Törlés</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Soha</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[VÉDETT]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Tiltott</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Engedélyezett</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -774,6 +1302,30 @@ Mindenképp megnyitja?</translation>
<translation>Előzmények</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH ügynök</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nincs</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(titkosított)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Személyes kulcs kijelölése</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>A fájl túl nagy ahhoz, hogy személyes kulcs legyen</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Személyes kulcs megnyitása meghiúsult</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Előzmény-bejegyzés</translation>
</message>
@@ -794,22 +1346,20 @@ Mindenképp megnyitja?</translation>
<translation>Új attribútum</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Válasszon fájlt</translation>
+ <source>Confirm Remove</source>
+ <translation>Törlés megerősítése</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>A fájl nem nyitható meg</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Valóban eltávolítja ezt az attribútumot?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Melléklet mentése</translation>
+ <source>[PROTECTED]</source>
+ <translation>[VÉDETT]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Nem lehet menteni a mellékletet:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>A megjelenítés vagy a szerkesztés a „Felfedés†gombbal érhető el</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1378,16 @@ Mindenképp megnyitja?</translation>
<translation>1 év</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Törlés megerősítése</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Valóban eltávolítja ezt az attribútumot?</translation>
+ <source>Apply generated password?</source>
+ <translation>Alkalmazható az előállított jelszó?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[VÉDETT] A megjelenítés vagy a szerkesztés a „Felfedés†gombbal érhető el</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Valóban alkalmazható az előállított jelszó ehhez a bejegyzéshez?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Valóban eltávolítja a mellékletet?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Bejegyzés sikeresen frissítve.</translation>
</message>
</context>
<context>
@@ -856,19 +1402,7 @@ Mindenképp megnyitja?</translation>
</message>
<message>
<source>Remove</source>
- <translation>Törlés</translation>
- </message>
- <message>
- <source>Attachments</source>
- <translation>Mellékletek</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Mentés</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Megnyitás</translation>
+ <translation>Eltávolítás</translation>
</message>
<message>
<source>Edit Name</source>
@@ -882,24 +1416,24 @@ Mindenképp megnyitja?</translation>
<source>Reveal</source>
<translation>Felfedés</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Automatikus beírás engedélyezése a bejegyzés számára</translation>
+ <source>Attachments</source>
+ <translation>Mellékletek</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Előtérszín:</translation>
</message>
<message>
- <source>-</source>
- <translation>−</translation>
+ <source>Background Color:</source>
+ <translation>Háttérszín:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Ablakcím:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Automatikus beírás engedélyezése ennél a bejegyzésnél</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1444,24 @@ Mindenképp megnyitja?</translation>
<translation>Egyéni automatikus beírási sorrend használata:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>&amp;Alapértelmezett sorrend használata</translation>
+ <source>Window Associations</source>
+ <translation>Ablaktársítások</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>&amp;Egyéni sorrend használata:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Ablaktársítások</translation>
+ <source>-</source>
+ <translation>−</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Ablakcím:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Adjon meg egy jellemző sorozatot ehhez a társításhoz:</translation>
</message>
</context>
<context>
@@ -938,18 +1480,14 @@ Mindenképp megnyitja?</translation>
</message>
<message>
<source>Delete all</source>
- <translation>Minden törlése </translation>
+ <translation>Összes törlése</translation>
</message>
</context>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Cím:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Felhasználónév:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1498,104 @@ Mindenképp megnyitja?</translation>
<translation>Ismétlés:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Cím:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Lejárat</translation>
+ <source>Notes</source>
+ <translation>Jegyzetek</translation>
</message>
<message>
<source>Presets</source>
<translation>Előbeállítások</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Jegyzetek:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Jelölőnégyzet átváltásával felfedhető a jegyzetek szalasz.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Felhasználónév:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Lejárat</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Å°rlap</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Kulcs eltávolítása az ügynöktől utána</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>másodperc</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Ujjlenyomat</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Kulcs eltávolítása az ügynöktől, ha az adatbázis be vagy le van zárva</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Nyilvános kulcs</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Kulcs hozzáadása az ügynökhöz, ha az adatbázis meg van nyitva vagy fel van oldva</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Megjegyzés</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Visszafejtés</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nincs</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Vágólapra másolás</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Személyes kulcs</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Külső fájl</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Tallózás…</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Melléklet</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Hozzáadás az ügynökhöz</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Eltávolítás az ügynöktől</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Felhasználói megerősítés szükséges a kulcs alkalmazásakor</translation>
</message>
</context>
<context>
@@ -1045,6 +1667,14 @@ Mindenképp megnyitja?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>Alapértelmezett &amp;ikon használata</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>&amp;Egyéni ikon használata</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Egyéni ikon hozzáadása</translation>
</message>
@@ -1053,6 +1683,18 @@ Mindenképp megnyitja?</translation>
<translation>Egyéni ikon törlése</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Favicon letöltése</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>A favicon letöltése sikertelen.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Tipp: A Google-t tartalékként az Eszközök&gt;Beállítások&gt;Biztonság menüpontban engedélyezheti</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Képek</translation>
</message>
@@ -1062,27 +1704,15 @@ Mindenképp megnyitja?</translation>
</message>
<message>
<source>Select Image</source>
- <translation>Kép kijelölése</translation>
- </message>
- <message>
- <source>Download favicon</source>
- <translation>Favicon letöltése</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>A favicon letöltése sikertelen.</translation>
+ <translation>Kép kiválasztása</translation>
</message>
<message>
<source>Can&apos;t read icon</source>
<translation>Az ikon nem olvasható</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>Alapértelmezett &amp;ikon használata</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>&amp;Egyéni ikon használata</translation>
+ <source>Custom icon already exists</source>
+ <translation>Az egyéni ikon már létezik</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1722,6 @@ Mindenképp megnyitja?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Ezt az ikont %1 elem használja, és le lesz cserélve az alapértelmezett ikonra. Valóban törli?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Tipp: A Google-t tartalékként az Eszközök&gt;Beállítások&gt;Biztonság menüpontban engedélyezheti</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>Az egyéni ikon már létezik</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,15 +1741,130 @@ Mindenképp megnyitja?</translation>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Bővítmény adati</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Eltávolítás</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Törölhetők a bővítmény adatai?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Valóban törölhetők a kijelölt bővítmény adata?
+Ez a kijelölt bővítmény hibás működését eredményezheti.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Kulcs</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Érték</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - klón</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Név</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Méret</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Å°rlap</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Hozzáadás</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Eltávolítás</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Megnyitás</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Mentés</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Fájl kijelölése</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Valóban eltávolít %n mellékletet?</numerusform><numerusform>Valóban eltávolít %n mellékletet?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Törlés megerősítése</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Mellékletek mentése</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Nem hozható létre a mappa:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Valóban felül kívánja írni a meglévő „%1†fájl a melléklettel?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Felülírás megerősítése</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>A melléklet nem menthető:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>A melléklet nem megnyitható:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>A mellékletek nem megnyithatóak:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>A fájlok nem megnyithatóak:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1893,11 @@ Mindenképp megnyitja?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Hivatkozás:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Csoport</translation>
</message>
@@ -1172,9 +1914,67 @@ Mindenképp megnyitja?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Hivatkozás:</translation>
+ <source>Never</source>
+ <translation>Soha</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Jelszó</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Jegyzetek</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Lejárat</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Létrehozva</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Módosított</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Elérve</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Mellékletek</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Nézet testre szabása</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Felhasználónevek elrejtése</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Jelszavak elrejtése</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Igazítás az ablakhoz</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Igazítás a tartalomhoz</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Visszaállítás alapértelmezettre</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Mellékletek (ikon)</translation>
</message>
</context>
<context>
@@ -1185,6 +1985,17 @@ Mindenképp megnyitja?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: A fájlt nem menthető!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Nem lehet menteni a natív üzenetküldő parancsfájlt.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2045,10 @@ Mindenképp megnyitja?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Legyen a jelszóban minden csoportból karakter</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Bővített ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,10 +2062,365 @@ Mindenképp megnyitja?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nem lehet kiutalni a kihívás-választ.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Rossz kulcs vagy sérült adatbázisfájl.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nem lehet kiutalni a kihívás-választ.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>hiányzó adatbázis fejlécek</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Érvénytelen fejlécellenőrző összeg</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Fejléc SHA256 eltérés</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Rossz kulcs vagy az adatbázisfájl sérült. (HMAC eltérés)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Ismeretlen titkosító</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Érvénytelen fejléc-azonosító méret</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Érvénytelen fejlécmezőhossz</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Érvénytelen fejlécadathossz</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>A puffer megnyitása sikertelen a KDF paraméterek számára a fejlécben</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Nem támogatott kulcsszármaztatási függvény (KDF) vagy érvénytelen paraméter</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Régi, örökölt fejlécmezők találhatók a KDBX4-fájlban.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Érvénytelen belső fejléc-azonosító méret</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Érvénytelen belső fejlécmezőhossz</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Érvénytelen belső fejléc bináris méret</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nem támogatott KeePass változattérkép-verzió.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen változattérkép bejegyzésnévhossz</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen változattérkép bejegyzésnévadat</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen változattérkép bejegyzésértékhossz</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen változattérkép bejegyzésértékadat</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen Bool változattérkép bejegyzésértékhossz</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen Int32 változattérkép bejegyzésértékhossz</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen UInt32 változattérkép bejegyzésértékhossz</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen Int64 változattérkép bejegyzésértékhossz</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen UInt64 változattérkép bejegyzésértékhossz</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen változattérkép bejegyzéstípus</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Érvénytelen változattérkép mezőtípusméret</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Érvénytelen szimmetrikus titkosító algoritmus.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Érvénytelen szimmetrikus titkosító IV méret.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>A KDF-változattérkép-paraméterek sorbafejtése sikertelen.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Érvénytelen titkosító UUID-hossz</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Nem támogatott titkosító</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Érvénytelen tömörítési jelzőhossz</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Nem támogatott tömörítési algoritmus</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Érvénytelen mestermagméret</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Érvénytelen átalakító magméret</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Érvénytelen átalakítási forduló méret</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Érvénytelen kezdő bájtméret</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Érvénytelen véletlenszerű adatfolyam-azonosító méret</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Érvénytelen belső véletlenszerű adatfolyamtitkosító</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Nem KeePass adatbázis.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>A kijelölt fájl egy régi KeePass 1 adatbázis (.kdb).
+
+Be lehet importálni az Adatbázis &gt; „KeePass 1 adatbázis importálása…†menüpontban.
+Ez egyirányú migráció. Nem lehet majd megnyitni az importált adatbázist a régi KeePassX 0.4 verzióval.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Nem támogatott KeePass 2 adatbázis-verzió.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML értelmezési hiba: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Nincs gyökércsoport</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Hiányzó ikon UUID vagy adat</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Hiányzó egyéni adatkulcs vagy -érték</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Többszörös csoportelemek</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Null csoport UUID</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Érvénytelen csoportikonszám</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Érvénytelen EnableAutoType érték</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Érvénytelen EnableSearching érték</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Nem található a csoport UUID</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Null DeleteObject UUID</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Hiányzó DeletedObject UUID vagy idő</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Null bejegyzés UUID</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Érvénytelen bejegyzésikonszám</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Előzményelem az előzménybejegyzésben</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Nem található bejegyzés UUID</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Előzményelem különböző UUID-vel</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Bejegyzés karakterlánca nem visszafejthető</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Kétszeres egyéni attribútum található</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Hiányzik a bejegyzés karakterlánckulcsa vagy -értéke </translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Kétszeres melléklet található</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Hiányzik a bejegyzés bináris kulcsa vagy értéke </translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Hiányzik az automatikus beírás ablaktársítása vagy sorozata</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Érvénytelen logikai érték</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Érvénytelen dátum/idő érték</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Érvénytelen színérték</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Érvénytelen RGB-színrész</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Érvénytelen számérték</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Érvénytelen UUID-érték</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>A bináris nem kibontható</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
- <translation>Keepass1 adatbázis importálása</translation>
+ <translation>KeePass1 adatbázis importálása</translation>
</message>
<message>
<source>Unable to open the database.</source>
@@ -1276,6 +2446,35 @@ Mindenképp megnyitja?</translation>
<translation>Nem támogatott KeePass adatbázis-verzió.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Nem olvasható a IV titkosítás</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Érvénytelen csoportszám</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Érvénytelen bejegyzésszám</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Érvénytelen tartalomhasító-méret</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Érvénytelen átalakító magméret</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Érvénytelen átalakítási fordulószám</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Nem lehet létrehozni a csoportfát</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Gyökér</translation>
</message>
@@ -1287,129 +2486,141 @@ Mindenképp megnyitja?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Rossz kulcs vagy sérült adatbázisfájl.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Nem KeePass adatbázis.</translation>
+ <source>Key transformation failed</source>
+ <translation>Kulcsátalakítás sikertelen</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Nem támogatott KeePass adatbázis-verzió.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Érvénytelen csoportmezőtípus-szám</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Rossz kulcs vagy sérült adatbázisfájl.</translation>
+ <source>Invalid group field size</source>
+ <translation>Érvénytelen csoportmezőméret</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>A csoportmezőadatok olvasása nem egyezik meg a mérettel</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nem lehet kiutalni a kihívás-választ.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Helytelen csoportazonosítómező-méret</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>A kijelölt fájl egy régi KeePass 1 adatbázis (.kdb).
-
-Be lehet importálni az Adatbázis &gt; „KeePass 1 adatbázis importálása…†menüpontban.
-Ez egyirányú migráció. Nem lehet majd megnyitni az importált adatbázist a régi KeePassX 0.4 verzióval.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Helytelen csoportlétrehozási időmező-méret</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nem lehet kiutalni a kihívás-választ.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Helytelen csoportmódosítási időmező-méret</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nem lehet kiszámítani a mesterkulcsot</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Helytelen csoporthozzáférési időmező-méret</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Végzetes hiba a titkosítási funkciók tesztelése közben.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Helytelen csoportlejárati időmező-méret</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC – Hiba</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Helytelen csoportikonmező-méret</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>A zárolási fájlt nem lehet létrehozni. Egyedi példány mód letiltva.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Helytelen csoportszintmező-méret</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>A KeePassXC egy másik példánya is fut.</translation>
+ <source>Invalid group field type</source>
+ <translation>Érvénytelen csoportmezőtípus</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>A meglévő egypéldányos zárolási fájl érvénytelen. Új példány indítása.</translation>
+ <source>Missing group id or level</source>
+ <translation>Helytelen csoportazonosító vagy -szint</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Adatbázis megnyitása</translation>
+ <source>Missing entry field type number</source>
+ <translation>Hiányzó bejegyzésmezőtípus-szám</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Adatbázis-beállítások</translation>
+ <source>Invalid entry field size</source>
+ <translation>Érvénytelen bejegyzésmező-méret</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Felhasználónév másolása vágólapra</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>A bejegyzésmezőadatok olvasása nem egyezik meg a mérettel</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Jelszó másolása a vágólapra</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Érvénytelen bejegyzés UUID-mező-méret</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Beállítások</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Érvénytelen bejegyzéscsoportazonosítómező-méret</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Eszköztár megjelenítése</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Érvénytelen bejegyzésikonmező-méret</translation>
</message>
<message>
- <source>read-only</source>
- <translation>Csak olvasható</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Érvénytelen bejegyzéslétrehozási időmező-méret</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Ablak átváltása</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Érvénytelen bejegyzésmódosítási időmező-méret</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 adatbázis</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Érvénytelen bejegyzéslejárati időmező-méret</translation>
</message>
<message>
- <source>All files</source>
- <translation>Minden fájl</translation>
+ <source>Invalid entry field type</source>
+ <translation>Érvénytelen bejegyzésmező-típus</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Javított adatbázis mentése</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>A meglévő egypéldányos zárolási fájl érvénytelen. Új példány indítása.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Az adatbázis írása sikertelen.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>A zárolási fájlt nem lehet létrehozni. Egyedi példány mód letiltva.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>A KeePassXC egy másik példánya is fut.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Végzetes hiba a kriptográfiai funkciók tesztelése közben.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC – Hiba</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Adatbázis</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Friss adatbázisok</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importálás</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Súgó</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>Be&amp;jegyzések</translation>
</message>
@@ -1418,12 +2629,16 @@ Ez egyirányú migráció. Nem lehet majd megnyitni az importált adatbázist a
<translation>&amp;Attribútum másolása a vágólapra</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Időalapú, egyszer használatos jelszó</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>Cso&amp;portok</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Nézet</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Eszközök</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1434,6 +2649,10 @@ Ez egyirányú migráció. Nem lehet majd megnyitni az importált adatbázist a
<translation>&amp;Névjegy</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Adatbázis megnyitása…</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Adatbázis &amp;mentése</translation>
</message>
@@ -1474,24 +2693,24 @@ Ez egyirányú migráció. Nem lehet majd megnyitni az importált adatbázist a
<translation>Csoport &amp;törlése</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Adatbázis-&amp;beállítások</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Adatbázis mentése más &amp;néven…</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>Bejegyzés &amp;klónozása</translation>
+ <source>Change &amp;master key...</source>
+ <translation>&amp;Mesterkulcs módosítása…</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Időalapú, egyszer használatos jelszó</translation>
+ <source>&amp;Database settings</source>
+ <translation>Adatbázis-&amp;beállítások</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>&amp;TOTP másolása</translation>
+ <source>Database settings</source>
+ <translation>Adatbázis-beállítások</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>TOTP megjelenítése</translation>
+ <source>&amp;Clone entry</source>
+ <translation>Bejegyzés &amp;klónozása</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1502,14 +2721,26 @@ Ez egyirányú migráció. Nem lehet majd megnyitni az importált adatbázist a
<translation>&amp;Felhasználónév másolása</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Felhasználónév másolása a vágólapra</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>&amp;Jelszó másolása</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Jelszó másolása a vágólapra</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Beállítások</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Jelszógenerátor</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Automatikus beírás</translation>
</message>
@@ -1526,165 +2757,221 @@ Ez egyirányú migráció. Nem lehet majd megnyitni az importált adatbázist a
<translation>&amp;Cím</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Cím másolása a vágólapra</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>URL másolása a vágólapra</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Jegyzetek</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Jelszógenerátor</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Jegyzetek másolása a vágólapra</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Előzmények törlése</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exportálás CSV-fájlba…</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Adatbázis</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>KeePass 1 adatbázis importálása…</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importálás</translation>
+ <source>Import CSV file...</source>
+ <translation>CSV-fájl importálása…</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Eszközök</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Adatbázis &amp;javítása…</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Kuka ürítése</translation>
+ <source>Show TOTP</source>
+ <translation>TOTP megjelenítése</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>TOTP beállítása…</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>&amp;TOTP másolása</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>&amp;Kuka ürítése</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Előzmények törlése</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Hozzáférési hiba a beállítási fájlhoz: %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Kilépés a KeePassXC-ből</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Úgy tűnik, hogy a böngészőintegrációt a KeePassHTTP látja el. A támogatása hamarosan lejár és a jövőben eltávolításra kerül. &lt;br&gt;Javasolt váltani a KeePassXC-Browser kiegészítőre! A költözéshez hasznos lehet a &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;költözési útmutató&lt;/a&gt; (%1 figyelmeztetés a 3-ból).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Meg kell érinteni a gombot a YubiKeyen!</translation>
+ <source>read-only</source>
+ <translation>csak olvasható</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>&amp;Súgó</translation>
+ <source>Settings</source>
+ <translation>Beállítások</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Adatbázis megnyitása…</translation>
+ <source>Toggle window</source>
+ <translation>Ablak átváltása</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Adatbázis mentése más &amp;néven…</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Kilépés a KeePassXC-ből</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>&amp;Mesterkulcs módosítása…</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 adatbázis</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Exportálás CSV-fájlba…</translation>
+ <source>All files</source>
+ <translation>Minden fájl</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>KeePass 1 adatbázis importálása…</translation>
+ <source>Open database</source>
+ <translation>Adatbázis megnyitása</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>CSV-fájl importálása…</translation>
+ <source>Save repaired database</source>
+ <translation>Javított adatbázis mentése</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Adatbázis &amp;javítása…</translation>
+ <source>Writing the database failed.</source>
+ <translation>Az adatbázis kiírása sikertelen.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>TOTP beállítása…</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Meg kell érinteni a gombot a YubiKeyen!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>FIGYELEM: Egy instabil KeePassXC verziót használ! Mivel magas kockázata van az adatsérülésnek, feltétlenül érdemes biztonsági mentés készíteni az adatbázisról.
+Ez a verzió nem felhasználóknak készült.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Párbeszédablak</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Érvénytelen kulcsfájl, egy OpenSSh kulcs az elvált</translation>
</message>
<message>
- <source>General</source>
- <translation>Ãltalános</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM-perem eltérés</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>É&amp;rtesítés megjelenítése hitelesítési adatok kérésekor</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Base64-dekódolás sikertelen</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Találatok rendezése &amp;felhasználónév szerint</translation>
+ <source>Key file way too small.</source>
+ <translation>A kulcsfájl útja túl kicsi.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Az összes tárolt bejegyzés jogosultságának &amp;törlése az aktív adatbázisból</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>Érvénytelen a kulcsfájl mágikus fejlécazonosítója</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Speciális</translation>
+ <source>Found zero keys</source>
+ <translation>Egyetlen kulcs sem található</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>&amp;Hozzáférés mindenkori engedélyezése a bejegyzésekhez</translation>
+ <source>Failed to read public key.</source>
+ <translation>Nyilvános kulcs olvasása sikertelen.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Bejegyzések &amp;frissítésének mindenkori engedélyezése</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Sérült kulcsfájl, személyes kulcs olvasása sikertelen</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>&amp;Keresés minden megnyitott adatbázis bejegyzéseiben</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Nincs dekódolható adat a személyes kulcsból</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP port:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>KDF futtatási kísérlet titkosító nélkül</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Alapértelmezett port: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Jelszó szükséges a kulcsfájl visszafejtéséhez</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Adatbázis feloldási &amp;kérelem, ha zárolva van</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>A kulcsszármaztatási sikertelen, megsérült a kulcsfájl?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Találatok rendezése &amp;cím szerint</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Visszafejtés sikertelen, rossz a jelszó?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>A KeePassXC ezen a porton fog figyelni: 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Nem várt EOF a nyilvános kulcs olvasása közben</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Nem lehet privilegizált portokhoz kötődni</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Nem várt EOF a személyes kulcs olvasása közben</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Nem lehet az 1024 alatti, privilegizált portokhoz kötődni!
-Az alapértelmezett 19455 port lesz használva.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Nem lehet írni a nyilvános kulcsot, mivel üres</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>Az összes megosztott titkosítási kulcs &amp;eltávolítása az aktív adatbázisból</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Nem várt EOF a nyilvános kulcs írásakor</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>A „KPH:â€-val kezdÅ‘dÅ‘ fejlett karakterlánc mezÅ‘k &amp;visszaadása</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Nem lehet írni a személyes kulcs, mivel üres</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>A karakterlánc mezők automatikus létrehozása vagy frissítése nem támogatott.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Nem várt EOF a személyes kulcs írásakor</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Nem támogatott kulcstípus: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Ismeretlen titkosító: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>A IV titkosító túl rövid a MD5 KDF számára</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Ismeretlen KDF: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Ismeretlen kulcstípus: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Párbeszédablak</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1695,6 +2982,15 @@ Az alapértelmezett 19455 port lesz használva.</translation>
<translation>KeePassHTTP kiszolgáló engedélyezése</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Ãltalános</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>É&amp;rtesítés megjelenítése hitelesítési adatok kérésekor</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Egy konkrét URL-hez tartozó legjobb találatokat adja vissza, a teljes domainhoz tartozó összes bejegyzés helyett.</translation>
</message>
@@ -1703,6 +2999,10 @@ Az alapértelmezett 19455 port lesz használva.</translation>
<translation>Csak a &amp;legjobb találatok visszaadása</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Adatbázis feloldási &amp;kérelem, ha zárolva van</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Csak az azonos sémájú (http://, https://, ftp://, …) bejegyzések visszaadása.</translation>
</message>
@@ -1711,27 +3011,108 @@ Az alapértelmezett 19455 port lesz használva.</translation>
<translation>&amp;URL sémákra illeszkedés</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Találatok rendezése &amp;felhasználónév szerint</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Találatok rendezése &amp;cím szerint</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Az összes megosztott titkosítási kulcs &amp;eltávolítása az aktív adatbázisból</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Az összes tárolt bejegyzés jogosultságának &amp;törlése az aktív adatbázisból</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Jelszógenerátor</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Speciális</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>&amp;Hozzáférés mindenkori engedélyezése a bejegyzésekhez</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Bejegyzések &amp;frissítésének mindenkori engedélyezése</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Csak a kijelölt adatbázishoz kell kapcsolódnia egy klienssel.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>A következő beállítások veszélyesek!
-Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>&amp;Keresés minden megnyitott adatbázis bejegyzéseiben</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>A karakterlánc mezők automatikus létrehozása vagy frissítése nem támogatott.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>A „KPH:â€-val kezdÅ‘dÅ‘ fejlett karakterlánc mezÅ‘k &amp;visszaadása</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP port:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Alapértelmezett port: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>A KeePassXC ezen a porton fog figyelni: 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Figyelmeztetés:&lt;/b&gt; A következő beállítások veszélyesek lehetnek!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;A KeePassHTTP támogatása hamarosan lejár és a jövőben eltávolításra kerül. &lt;br&gt;Javasolt váltani a KeePassXC-Browser kiegészítőre! A költözéshez hasznos lehet a &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;költözési útmutató.&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Nem lehet privilegizált portokhoz kötődni</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Nem lehet az 1024 alatti, privilegizált portokhoz kötődni!
+Az alapértelmezett 19455 port lesz használva.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Jelszó:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>erősség</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entrópia</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Jelszó</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Karaktertípusok</translation>
</message>
@@ -1752,38 +3133,50 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
<translation>Speciális karakterek</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Bővített ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Hasonlóan kinéző karakterek kizárása</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Elfogadás</translation>
+ <source>Pick characters from every group</source>
+ <translation>Karakterek minden csoportból</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Hossz:</translation>
</message>
<message>
- <source>strength</source>
- <translation>erősség</translation>
+ <source>Passphrase</source>
+ <translation>Jelszó</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entrópia</translation>
+ <source>Wordlist:</source>
+ <translation>Szólista:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Hossz:</translation>
+ <source>Word Count:</source>
+ <translation>Szavak száma:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Karakterek minden csoportból</translation>
+ <source>Word Separator:</source>
+ <translation>Szóelválasztó:</translation>
</message>
<message>
<source>Generate</source>
<translation>Előállítás</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Másolás</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Elfogadás</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Bezárás</translation>
</message>
@@ -1801,51 +3194,275 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Silány</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Gyenge</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Jó</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Kiváló</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Jelszó</translation>
+ <source>Database not opened</source>
+ <translation>Az adatbázis nem lett megnyitva</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>Bővített ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>Az adatbázishasító nem elérhető</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Jelmondat</translation>
+ <source>Client public key not received</source>
+ <translation>A kliens nyilvános kulcsa nem érkezett meg</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Szólista:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Nem lehet visszafejteni az üzenetet</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Szavak száma:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Időtúllépés vagy nem lehet csatlakozni a KeePassXC-hez</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Szóelválasztó:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>A műveletet megszakították vagy visszautasították</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Másolás</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Nem lehet titkosítani az üzenetet vagy a nyilvános kulcs nem található. A natív üzenetküldés engedélyezve van a KeePassXC-ben?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>A KeePassXC társítása sikertelen, próbálja újra</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>A kulcsmódosítás nem volt sikeres</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>A titkosítási kulcs nem lett felismerve</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Nincs található mentett adatbázis</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Helytelen művelet</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Üres üzenet érkezett</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Nincs URL biztosítva</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Belépések nem találhatók</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Ismeretlen hiba</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Új bejegyzés hozzáadása egy adatbázishoz.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Adatbázis útvonala.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Adatbázis kulcsfájlja.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>útvonal</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Bejegyzés felhasználóneve.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>felhasználónév</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>Bejegyzés URL-je.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Bejegyzés jelszavának bekérése.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Jelszó előállítása a bejegyzés számára.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Előállított jelszó hossza.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>hosszúság</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Hozzáadandó bejegyzés útvonala.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Egy bejegyzés jelszavának vágólapra való másolása.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Levágandó bejegyzés útvonala.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Késleltetés a vágólap törlése előtt (másodpercben).</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Bejegyzés szerkesztése.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Bejegyzés címe.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>cím</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Szerkesztendő bejegyzés útvonala.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Jelszó entrópiájának becslése.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>A jelszó, amelynek az entrópiája becslésre vár.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>A jelszó speciális elemzése.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Adatbázis tartalmának kinyerése és kiírása.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Kinyerendő adatbázis útvonala.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Jelszó beszúrása a feloldásához: %1</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>%1 kulcsfájl betöltése sikertelen: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>FIGYELEM: Egy régi, örökölt kulcsfájl formátumot használ, ami a közeljövőben már nem lesz támogatott.
+
+Megfontolandó egy új kulcsfájl készítése.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Elérhető parancsok:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Végrehajtandó parancs neve.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Adatbázis-bejegyzések felsorolása.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Felsorolandó csoport útvonala. Az alapértelezett: /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Bejegyzések gyors keresése.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Kifejezés keresése.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Két adatbázis egyesítése.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Az egyesítés céladatbázisának útvonala.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Az egyesítés forrásadatbázisának útvonala.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Ugyanazon hitelesítési adatok alkalmazása mindkét adatbázisfájlhoz.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Az egyesítés forrásadatbázisának kulcsfájlja.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Bejegyzés információinak megjelenítése.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Megjelenítendő attribútumnevek. Ez a beállítás többször is megadható, minden megjelenő attribútummal soronként a megadott sorrendben. Ha nincs meghatározva attribútum, akkor az alapértelmezett attribútumok összefoglalója lesz megadva.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>attribútum</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>A megjelenítendő bejegyzés neve.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL eszkösz</translation>
@@ -1869,8 +3486,28 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
<translation>hiányzó lezáró idézőjel</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>BELSŠ- megközelíthetetlen alsó határ átlépve</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256 bites</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256 bites</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256 bites</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – ajánlott)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1889,14 +3526,22 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
<translation>Jelszó</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Jegyzetek</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Legutóbb módosítva</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Létrehozva</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Hagyományos böngészőintegráció</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Böngészőintegráció</translation>
</message>
@@ -1912,28 +3557,78 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
<source>Passive</source>
<translation>Passzív</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH ügynök</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Véletlenszerű új diceware jelszó előállítása.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Szavak számra a diceware jelszó számára.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>szám</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Szólista a diceware előállító számára.
+[Alapértelmezett: EFF angol]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Véletlenszerű új jelmondat előállítása.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Előállított jelszó hossza.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Kisbetűk alkalmazása az előállított jelszóban.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Nagybetűk alkalmazása az előállított jelszóban.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Számok alkalmazása az előállított jelszóban.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Speciális karakterek alkalmazása az előállított jelszóban.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Kiterjesztett ASCII karakterek alkalmazása az előállított jelszóban.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
<message>
<source>Internal zlib error when compressing: </source>
- <translation>Belső zlib hiba a tömörítés közben:</translation>
+ <translation>Belső zlib hiba a tömörítés közben: </translation>
</message>
<message>
<source>Error writing to underlying device: </source>
- <translation>Hiba az alárendelt eszközre való írás közben:</translation>
+ <translation>Hiba az alárendelt eszközre való írás közben: </translation>
</message>
<message>
<source>Error opening underlying device: </source>
- <translation>Hiba az alárendelt eszköz megnyitásakor:</translation>
+ <translation>Hiba az alárendelt eszköz megnyitásakor: </translation>
</message>
<message>
<source>Error reading data from underlying device: </source>
- <translation>Hiba az alárendelt eszközről történő adatolvasás során:</translation>
+ <translation>Hiba az alárendelt eszközről történő adatolvasás során: </translation>
</message>
<message>
<source>Internal zlib error when decompressing: </source>
- <translation>Belső zlib hiba kibontás közben:</translation>
+ <translation>Belső zlib hiba kibontás közben: </translation>
</message>
</context>
<context>
@@ -1944,14 +3639,14 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
</message>
<message>
<source>Internal zlib error: </source>
- <translation>Belső zlib hiba:</translation>
+ <translation>Belső zlib hiba: </translation>
</message>
</context>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Nagy- és kisbetű érzékeny</translation>
+ <source>Search...</source>
+ <translation>Keresés…</translation>
</message>
<message>
<source>Search</source>
@@ -1962,8 +3657,8 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
<translation>Törlés</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Keresés…</translation>
+ <source>Case Sensitive</source>
+ <translation>Nagy- és kisbetű érzékeny</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1973,50 +3668,6 @@ Csak a hatásuk pontos ismeretében érdemes megváltoztatni őket.</translation
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Létezik már egy megosztott titkosítási kulcs ezzel a névvel: „%1â€.
-Valóban felülírja?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Frissíti az információt ebben: %1 – %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>Az aktív adatbázis zárolt.
-Fel kell oldani a kijelölt adatbázist, vagy egy másik nem zároltat kell választania.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Sikeresen eltávolításra került %1 titkosítási kulcs a KeePassX/HTTP beállításokból.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Nem található megosztott titkosítási kulcs a KeePassHTTP beállításokban.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Az aktív adatbázisban nincs egyetlen KeePassHTTP beállítási bejegyzés sem.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Tárolt jogosultságok törlése…</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Megszakítás</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Sikeresen el lett távolítva a jogosultság innen: %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>Az aktív adatbázisban nincs egyetlen jogosultsági bejegyzés sem.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Új kulcstársítási kérés</translation>
</message>
@@ -2032,33 +3683,77 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<translation>KeePassXC: Felülírja a létező kulcsot?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Létezik már egy megosztott titkosítási kulcs ezzel a névvel: „%1â€.
+Valóban felülírja?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Bejegyzés frissítése</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Frissíti az információt ebben: %1 – %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Adatbázis zárolva!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Az aktív adatbázis zárolt.
+Fel kell oldani a kijelölt adatbázist, vagy egy másik nem zároltat kell választania.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Kulcsok eltávolítva az adatbázisból</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Sikeresen eltávolításra került %n titkosítási kulcs a KeePassX/HTTP beállításokból.</numerusform><numerusform>Sikeresen eltávolításra került %n titkosítási kulcs a KeePassX/HTTP beállításokból.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Nincs találat a kulcsok között</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Nem található megosztott titkosítási kulcs a KeePassHTTP beállításokban.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Nincs ilyen beállítás!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Az aktív adatbázisban nincs egyetlen KeePassHTTP beállítási bejegyzés sem.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Tárolt jogosultságok törlése…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Megszakítás</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Jogosultságok eltávolítva</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Sikeresen el lett távolítva a jogosultság %n elemről.</numerusform><numerusform>Sikeresen el lett távolítva a jogosultság %n elemről.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Nem található bejegyzés ilyen jogosultsággal!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Az aktív adatbázisban nincs egyetlen jogosultsági bejegyzés sem.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2082,10 +3777,26 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Alapvető beállítások</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>A KeePassXC többszörös indításának tiltása</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Utolsó adatbázis megjegyzése</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Az utolsó kulcsfájlok és biztonsági hardverkulcsok megjegyzése</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Előző adatbázisok betöltése indításkor</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Automatikus mentés kilépéskor</translation>
</message>
@@ -2094,20 +3805,28 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<translation>Automatikus mentés minden módosítás után</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Külső módosításkor az adatbázis automatikus újratöltése</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
- <translation>Kicsinyítés válapra való másoláskor</translation>
+ <translation>Kicsinyítés a vágólapra történő másoláskor</translation>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation>Indításkor az ablak kicsinyítése</translation>
</message>
<message>
<source>Use group icon on entry creation</source>
<translation>A csoport ikonjának használata a bejegyzés létrehozásakor</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Globális automatikus beírás gyorsbillentyűje</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Nem adatjellegű változások (pl. csoport lenyitása) esetén az adatbázis módosított állapotba kerülésének megakadályozása</translation>
</message>
<message>
- <source>Language</source>
- <translation>Nyelv</translation>
+ <source>Hide the Details view</source>
+ <translation>Részletek nézet elrejtése</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2118,75 +3837,97 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<translation>Az ablak rendszertálcára rejtése kicsinyítéskor</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Előző adatbázisok betöltése indításkor</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Külső módosításkor az adatbázis automatikus újratöltése</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Kilépés helyett rendszertálcára való rejtés</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Indításkor az ablak kicsinyítése</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Alapvető beállítások</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Az utolsó kulcsfájlok és biztonsági hardverkulcsok megjegyzése</translation>
+ <source>Dark system tray icon</source>
+ <translation>Sötét rendszertálca-ikon</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Nem adatjellegű változások (pl. csoport lenyitása) esetén az adatbázis módosított állapotba kerülésének megakadályozása</translation>
+ <source>Language</source>
+ <translation>Nyelv</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automatikus beírás</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Bejegyzések címének és URL-jének alkalmazása az ablakok illesztésénél a globális automatikus beírás számára. </translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Bejegyzések címének alkalmazása az ablakok illesztésénél a globális automatikus beírás számára. </translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Bejegyzések URL-jének alkalmazása az ablakok illesztésénél a globális automatikus beírás számára. </translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Mindig kérdezzen az automatikus beírás megkezdése előtt</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Globális automatikus beírás gyorsbillentyűje</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Automatikus beírás késleltetése</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>A KeePassXC többszörös indításának tiltása</translation>
+ <source>Startup</source>
+ <translation>Indítás</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Fájlkezelés</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Adatbázisok biztonságos mentése (lehet, hogy inkompatibilis a Dropbox-szal és hasonlókkal)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Készüljön biztonsági mentés az adatbázisról mentés előtt</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Bejegyzéskezelés</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Ãltalános</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Időtúllépések</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
- <translation>Vágólap törlése ennyi idő után: </translation>
+ <translation>Vágólap törlése ennyi idő után</translation>
</message>
<message>
<source> sec</source>
- <translation>mp</translation>
+ <comment>Seconds</comment>
+ <translation> mp</translation>
</message>
<message>
<source>Lock databases after inactivity of</source>
<translation>Adatbázis zárolása ennyi inaktivitás után</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Jelszavak alapértelmezetten egyszerű szövegként megjelenítése</translation>
+ <source>Convenience</source>
+ <translation>Kényelem</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Adatbázis zárolása munkamenet zárolásakor vagy a fedél lecsukásakor</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2197,16 +3938,16 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<translation>Jelszóismétlés elkerülése látható jelszó esetén</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Időtúllépések</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Jelszavak megjelenítése alapértelmezetten egyszerű szövegként</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Kényelem</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Jelszavak elrejtése az előnézet panelen</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Adatbázis zárolása munkamenet zárolásakor vagy a fedél lecsukásakor</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Bejegyzések jegyzeteinek elrejtése alapértelmezetten</translation>
</message>
<message>
<source>Privacy</source>
@@ -2216,6 +3957,10 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<source>Use Google as fallback for downloading website icons</source>
<translation>A Google használata tartalékként, a webhelyikonok letöltésére</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Az előzőleg zárolt adatbázis újbóli zárolása automatikus beírást követően</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2228,6 +3973,14 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<translation>Kulcs:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Alapértelmezett RFC 6238-jelsor beállítás</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Adatfolyam jelsorbeállítás</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Egyéni beállítások alkalmazása</translation>
</message>
@@ -2253,7 +4006,8 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
</message>
<message>
<source> sec</source>
- <translation>mp</translation>
+ <comment>Seconds</comment>
+ <translation> mp</translation>
</message>
</context>
<context>
@@ -2289,10 +4043,6 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Üdvözöljük a KeePassXC-ben</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Máris elkezdhető a jelszavak titkosított tárolása a KeePassXC adatbázisban</translation>
</message>
@@ -2316,92 +4066,48 @@ A KeePassXC adatbázishoz való hozzáférés engedélyezéséhez egy egyedi né
<source>Recent databases</source>
<translation>Friss adatbázisok</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Üdvözöljük a KeePassXC %1 verzióban!</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>útvonal az egyéni beállítófájlhoz</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>adatbázis kulcsfájlja</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC – keresztplatformos jelszókezelő</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>adatbázis jelszó beolvasása az stdin-ről</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>megnyitandó jelszóadatbázisok fájlnevei (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Jelszó másolása vágólapra</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Egy bejegyzés eltávolítása az adatbázisból.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Adatbázis útvonala.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Felugró ablak használata az adatbázis feloldásához.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Levágandó bejegyzés neve.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Az eltávolítandó bejegyzés útvonala.</translation>
</message>
<message>
- <source>Extract and print the content of a database.</source>
- <translation>Adatbázis tartalmának kinyerése és kiírása.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Kinyerendő adatbázis útvonala.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Végrehajtandó parancs neve.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Adatbázis-bejegyzések felsorolása.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Felsorolandó csoport útvonala. Az alapértelezett: /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Bejegyzések és csoportok UUID-inek kiírása.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Két adatbázis összeolvasztása.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC – keresztplatformos jelszókezelő</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Az összeolvasztás céladatbázisának útvonala.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>megnyitandó jelszóadatbázisok fájlnevei (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Az összeolvasztás forrásadatbázisának útvonala.</translation>
+ <source>path to a custom config file</source>
+ <translation>útvonal az egyéni beállítófájlhoz</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Azonos jelszó használat mindkét adatbázis fájlhoz.</translation>
+ <source>key file of the database</source>
+ <translation>adatbázis kulcsfájlja</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Jelszó megjelenítése.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>adatbázis jelszó beolvasása az stdin-ről</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>A megjelenítendő bejegyzés neve.</translation>
+ <source>Parent window handle</source>
+ <translation>Szülőablak kezelése</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_id.ts b/share/translations/keepassx_id.ts
index 1e04aeb4c..0540b5afb 100644
--- a/share/translations/keepassx_id.ts
+++ b/share/translations/keepassx_id.ts
@@ -10,14 +10,30 @@
<translation>Tentang</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Laporkan bug di: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC didistribusikan di bawah GNU General Public License (GPL) versi 2 atau (terserah pilihan Anda) versi 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Kontributor</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Lihat Semua Kontribusi pada GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Info Awakutu</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Sertakan informasi berikut setiap Anda melaporkan bug:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Salin ke papan klip</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revisi: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribusi: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Pustaka:</translation>
</message>
@@ -48,33 +68,26 @@ Kernel: %3 %4</translation>
<translation>Ekstensi aktif:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Laporkan bug di: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC didistribusikan di bawah GNU General Public License (GPL) versi 2 atau (terserah pilihan Anda) versi 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Pengelola Proyek:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Lihat Semua Kontribusi pada GitHub&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Sertakan informasi berikut setiap Anda melaporkan bug:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>Distribusi: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>Konfirmasi Akses KeePassXC HTTP</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Ingat tindakan ini</translation>
</message>
@@ -92,9 +105,12 @@ Please select whether you want to allow access.</source>
<translation>%1 telah meminta akses sandi untuk item berikut.
Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>Konfirmasi Akses KeePassXC HTTP</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Aktifkan SSH Agent (butuh memulai ulang)</translation>
</message>
</context>
<context>
@@ -107,6 +123,26 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Ketik-Otomatis - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Ketik-Otomatis</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Sintaksis perintah Ketik-Otomatis Anda salah!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Perintah Ketik-Otomatis ini berisi tundaan yang sangat lama. Apakah Anda benar-benar ingin melanjutkan?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Perintah Ktik-Otomatis ini berisi tindakan tekan tombol berdurasi sangat lambat. Apakah Anda benar-benar ingin melanjutkan?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Perintah Ketik-Otomatis ini berisi argumen yang diulang berkali-kali. Apakah Anda benar-benar ingin melanjutkan?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +160,318 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grup</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Judul</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nama pengguna</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Urutan</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Ketik-Otomatis - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Pilih entri untuk Ketik-Otomatis:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Ketik-Otomatis - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>Konfirmasi Akses KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Ingat tindakan ini</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Izinkan</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Tolak</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 telah meminta akses sandi untuk item berikut.
+Silakan pilih apakah Anda ingin mengizinkannya.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Ini dibutuhkan untuk mengakses basis data Anda menggunakan KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Aktifkan integrasi peramban KeePassXC</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Umum</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Aktifkan integrasi untuk peramban ini:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Tampilkan &amp;notifikasi saat permintaan kredensial</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>&amp;Minta untuk membuka basis data jika terkunci</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Hanya entri dengan skema yang sama (http://, https://, ...).</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Cocok skema URL (mis., https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Hanya tampilkan kecocokan terbaik untuk URL tertentu bukan semua entri untuk keseluruhan domain.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Hanya &amp;tampilkan kredensial dengan kecocokan terbaik</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Urutkan kredensial yang &amp;cocok berdasarkan judul</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Urutkan kredensial yang cocok berdasarkan &amp;nama pengguna</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Putuskan koneksi semua peramban</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>&amp;Lupakan semua perizinan yang diingat</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Tingkat Lanjut</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Jangan pernah ber&amp;tanya sebelum mengakses kredensial</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Jangan pernah bertanya sebelum memper&amp;barui kredensial</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Hanya basis data terpilih yang harus terkoneksi dengan klien.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Cari kredensial yang cocok di semua basis data yang terbuka</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Membuat atau memperbarui ruas lema secara otomatis tidak didukung.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Tampilkan ruas lema tingkat lanjut yang dimulai dengan &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Otomatis perbarui jalur binari KeePassXC atau keepassxc-proxy ke skrip perpesanan native saat memulai.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Perbarui berkas manifest perpesanan &amp;native saat memulai</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Dukung aplikasi proksi antara KeePassXC dan ekstensi peramban.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Gunakan aplikasi &amp;proksi antara KeePassXC dan ekstensi peramban</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Gunakan lokasi proksi khusus jika Anda memasangnya secara manual.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Gunakan lokasi proksi &amp;khusus</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Telusuri...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Peringatan:&lt;/b&gt; Opsi berikut bisa berbahaya!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Berkas Executable (*.exe);;Semua Berkas (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Berkas Executable (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Pilih lokasi proksi khusus</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Permintaan asosiasi kunci baru</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Anda menerima permintaan asosiasi untuk kunci di atas.
+
+Jika Anda ingin mengizinkannya mengakses basis data KeePassXC Anda,
+berikan nama yang unik untuk identifikasi dan terimalah.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Simpan dan izinkan akses</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Timpa kunci yang ada?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Kunci enkripsi bersama dengan nama &quot;%1&quot; sudah ada.
+Apakah Anda ingin menimpanya ulang?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Perbarui Entri</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Apakah Anda ingin memperbarui informasi dalam %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Basis data dikunci!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Basis data aktif dikunci!
+Silakan buka kunci atau pilih yang lainnya yang tidak terkunci.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Pengaturan tidak tersedia!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Basis data yang aktif tidak berisi entri pengaturan.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Tidak ada kunci yang ditemukan</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Tidak ditemukan kunci enkripsi bersama di dalam pengaturan KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Buang kunci dari basis data</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Membuang perizinan yang disimpan...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Batal</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Buang izin</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Tidak entri dengan izin yang ditemukan!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Basis data aktif tidak berisi entri dengan izin.</translation>
</message>
</context>
<context>
@@ -149,6 +489,10 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<translation>Ulangi sandi:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>Berkas &amp;kunci</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Telusuri</translation>
</message>
@@ -157,6 +501,14 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<translation>Buat</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Segarkan</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Berkas kunci</translation>
</message>
@@ -177,6 +529,10 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<translation>Pilih berkas kunci</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Sandi kosong</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Apakah Anda benar-benar ingin menggunakan lema kosong sebagai sandi?</translation>
</message>
@@ -191,20 +547,18 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Berkas &amp;kunci</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Segarkan</translation>
+ <source>Legacy key file format</source>
+ <translation>Format berkas kunci legacy</translation>
</message>
<message>
- <source>Empty password</source>
- <translation>Sandi kosong</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Anda menggunakan format berkas kunci legacy yang
+tidak akan lagi didukung di masa depan.
+
+Harap pertimbangkan membuat berkas kunci baru.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +572,10 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<translation>Opsi Penggandaan</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Tambahkan &apos; - Salinan&apos; ke judul</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Ganti nama pengguna dan sandi dengan referensi</translation>
</message>
@@ -225,10 +583,6 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<source>Copy history</source>
<translation>Salin riwayat</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Tambahkan &apos; - Salinan&apos; ke judul</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -254,7 +608,7 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
<message>
<source>Text is qualified by</source>
- <translation type="unfinished"/>
+ <translation>Teks dikualifikasikan oleh</translation>
</message>
<message>
<source>Fields are separated by</source>
@@ -266,7 +620,7 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
<message>
<source>First record has field names</source>
- <translation type="unfinished"/>
+ <translation>Rekam pertama memiliki nama ruas</translation>
</message>
<message>
<source>Number of headers line to discard</source>
@@ -274,7 +628,7 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
- <translation type="unfinished"/>
+ <translation>Anggap &apos;\&apos; sebagai karakter escape</translation>
</message>
<message>
<source>Preview</source>
@@ -290,7 +644,7 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
<message>
<source>Empty fieldname </source>
- <translation type="unfinished"/>
+ <translation>Nama ruas kosong</translation>
</message>
<message>
<source>column </source>
@@ -310,7 +664,7 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
<message>
<source> more messages skipped]</source>
- <translation type="unfinished"/>
+ <translation> pesan dilewati]</translation>
</message>
<message>
<source>Error</source>
@@ -319,16 +673,13 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<message>
<source>CSV import: writer has errors:
</source>
- <translation type="unfinished"/>
+ <translation>Impor CSV: galat penulis:
+</translation>
</message>
</context>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Impor berkas CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Galat</translation>
</message>
@@ -339,17 +690,17 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> bita, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n byte, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> baris, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n baris, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> kolom</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n kolom</numerusform></translation>
</message>
</context>
<context>
@@ -371,6 +722,14 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<translation>Telusuri</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Segarkan</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Tidak bisa membuka basis data.</translation>
</message>
@@ -379,6 +738,24 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<translation>Tidak bisa membuka berkas kunci</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Format berkas kunci legacy</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Anda menggunakan format berkas kunci legacy yang
+tidak akan lagi didukung di masa depan.
+
+Harap pertimbangkan membuat berkas kunci baru.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Jangan tampilkan peringatan ini lagi</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Semua berkas</translation>
</message>
@@ -390,14 +767,6 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<source>Select key file</source>
<translation>Pilih berkas kunci</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Segarkan</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -414,14 +783,14 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<translation>Tidak bisa membuka berkas kunci</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Basis data terbuka dengan baik. Tidak perlu melakukan apa-apa.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Tidak bisa membuka basis data.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Basis data terbuka dengan baik. Tidak perlu melakukan apa-apa.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Sukses</translation>
</message>
@@ -439,30 +808,120 @@ Anda bisa menyimpannya sekarang.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Nama basis data:</translation>
+ <source>General</source>
+ <translation>Umum</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Deskripsi basis data:</translation>
+ <source>Encryption</source>
+ <translation>Enkripsi</translation>
</message>
<message>
- <source>Transform rounds:</source>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>Default username:</source>
- <translation>Nama pengguna baku:</translation>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Mengerti, tetap simpan</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Batal</translation>
</message>
<message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF tidak berubah</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Gagal mentransformasi kunci menggunakan parameter KDF baru; KDF tidak berubah.</translation>
+ </message>
+ <message numerus="yes">
<source> MiB</source>
- <translation> MiB</translation>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algoritma Enkripsi:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (bawaan)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Fungsi Derivasi Kunci:</translation>
</message>
<message>
- <source>Benchmark</source>
+ <source>Transform rounds:</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Benchmark 1-second delay</source>
+ <translation>Tunda benchmark 1-detik</translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>Penggunaan Memori:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Paralelisme:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Data Meta Basis Data</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nama basis data:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Deskripsi basis data:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Nama pengguna baku:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>Pengaturan Riwayat</translation>
+ </message>
+ <message>
<source>Max. history items:</source>
<translation>Maks. item riwayat:</translation>
</message>
@@ -471,26 +930,27 @@ Anda bisa menyimpannya sekarang.</translation>
<translation>Maks. ukuran riwayat:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Gunakan keranjang sampah</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (bawaan)</translation>
+ <source>Use recycle bin</source>
+ <translation>Gunakan keranjang sampah</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation>Pengaturan Basis Data Tambahan</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritma:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Aktifkan &amp;kompresi (direkomendasikan)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Root</translation>
</message>
<message>
@@ -510,22 +970,48 @@ Anda bisa menyimpannya sekarang.</translation>
<translation>Berkas tidak ditemukan!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Buka basis data KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Tidak bisa membuka basis data.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Basis data KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Berkas terbuka dalam mode baca-saja.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Buka berkas CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Berkas CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Semua berkas (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Gabung basis data</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Buka basis data KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Basis data KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Tutup?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; dalam mode penyuntingan.
+Tetap buang ubahan dan tutup?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Simpan perubahan?</translation>
</message>
@@ -540,10 +1026,22 @@ Simpan perubahan?</translation>
<translation>Gagal membuat basis data.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Sandi</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Simpan basis data sebagai</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Ekspor basis data ke berkas CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Gagal membuat berkas CSV.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Basis data baru</translation>
</message>
@@ -562,12 +1060,6 @@ Please press cancel to finish your changes or discard them.</source>
Harap tekan batal untuk menyelesaikan ubahan Anda atau membuangnya.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Basis data ini belum pernah disimpan.
-Anda bisa menyimpan basis data atau berhenti menguncinya.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -576,69 +1068,23 @@ Apakah Anda ingin menyimpan basis data sebelum menguncinya?
Kalau tidak, ubahan Anda akan hilang.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; dalam mode penyuntingan.
-Tetap buang ubahan dan tutup?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Ekspor basis data ke berkas CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>Berkas CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Gagal membuat berkas CSV.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Tidak bisa membuka basis data.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Gabung basis data</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Basis data yang ingin Anda simpan dikunci oleh aplikasi KeePassXC yang telah berjalan.
-Apakah Anda tetap ingin menyimpannya?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Sandi</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Basis data sudah terbuka</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Basis data yang ingin Anda simpan dikunci oleh aplikasi KeePassXC yang telah berjalan.
-
-Apakah Anda ingin tetap menyimpannya?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Buka baca-saja</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Berkas terbuka dalam mode baca-saja.</translation>
+ <source>Disable safe saves?</source>
+ <translation>Nonaktifkan penyimpanan aman?</translation>
</message>
<message>
- <source>Open CSV file</source>
- <translation>Buka berkas CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC telah beberapa kali gagal menyimpan basis data. Hal ini mungkin disebabkan oleh layanan sinkronisasi berkas yang menghalangi berkas yang akan disimpan.
+Nonaktifkan penyimpanan aman dan coba lagi?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Mencari...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Ubah kunci utama</translation>
</message>
@@ -659,6 +1105,14 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Apakah Anda benar-benar ingin menghapus entri %1 untuk selamanya?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Pindahkan entri ke keranjang sampah?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Apakah Anda benar-benar ingin memindahkan &quot;%1&quot; ke keranjang sampah?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Pindah entri ke keranjang sampah?</translation>
</message>
@@ -667,28 +1121,28 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation><numerusform>Apakah Anda benar-benar ingin memindahkan %n entri ke keranjang sampah?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Hapus grup?</translation>
+ <source>Execute command?</source>
+ <translation>Jalankan perintah?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Apakah Anda benar-benar ingin menghapus grup &quot;%1&quot; untuk selamanya?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Apakah Anda benar-benar ingin menjalankan perintah berikut?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Tidak bisa mengkalkulasi kunci utama</translation>
+ <source>Remember my choice</source>
+ <translation>Ingat pilihan saya</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Pindahkan entri ke keranjang sampah?</translation>
+ <source>Delete group?</source>
+ <translation>Hapus grup?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Apakah Anda benar-benar ingin memindahkan &quot;%1&quot; ke keranjang sampah?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Apakah Anda benar-benar ingin menghapus grup &quot;%1&quot; untuk selamanya?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Mencari...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Tidak bisa mengkalkulasi kunci utama</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1161,8 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Tidak Ada Hasil</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Jalankan perintah?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Apakah Anda benar-benar ingin menjalankan perintah berikut?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Ingat pilihan saya</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Otomatis Muat Ulang Permintaan</translation>
+ <source>File has changed</source>
+ <translation>Berkas telah berubah</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1173,10 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Permintaan Penggabungan</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Basis data telah berubah dan Anda memiliki ubahan yang belum disimpan. Apakah Anda ingin menggabungkan ubahan Anda?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Berkas basis data telah berubah dan Anda memiliki ubahan yang belum disimpan.
+Apakah Anda ingin menggabungkan ubahan Anda?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -748,6 +1192,89 @@ Apakah Anda ingin tetap menyimpannya?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Buat Token TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Tutup</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Umum</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Sandi</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Kedaluwarsa</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nama pengguna</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>KetikOtomatis</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Pencarian</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atribut</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Lampiran</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Catatan</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Jendela</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Urutan</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Cari</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Bersihkan</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Tidak Pernah</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[DILINDUNGI]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Dinonaktifkan</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Diaktifkan</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -774,6 +1301,30 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Riwayat</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>t/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(terenkripsi)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Pilih kunci privat</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Berkas terlalu besar untuk jadi kunci privat</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Gagal membuka kunci privat</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Riwayat entri</translation>
</message>
@@ -794,22 +1345,20 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Atribut baru</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Pilih berkas</translation>
+ <source>Confirm Remove</source>
+ <translation>Konfirmasi Buang</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Tidak bisa membuka berkas</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Apakah Anda yakin ingin membuang atribut ini?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Simpan lampiran</translation>
+ <source>[PROTECTED]</source>
+ <translation>[DILINDUNGI]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Tidak bisa menyimpan lampiran:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Tekan ungkap untuk melihat atau menyunting</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1377,16 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>1 tahun</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Konfirmasi Buang</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Apakah Anda yakin ingin membuang atribut ini?</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[DILINDUNGI] Tekan tampilkan untuk meninjau atau mnyunting</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Apakah Anda yakin ingin membuang lampiran ini?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -859,18 +1404,6 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Buang</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Lampiran</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Simpan</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Buka</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Sunting Nama</translation>
</message>
@@ -882,24 +1415,24 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<source>Reveal</source>
<translation>Tampilkan</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Aktifkan Ketik-Otomatis untuk entri ini</translation>
+ <source>Attachments</source>
+ <translation>Lampiran</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Judul jendela:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Aktifkan Ketik-Otomatis untuk entri ini</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1443,24 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Gunakan &amp;urutan Ketik-Otomatis khusus:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Gunakan uru&amp;tan bawaan</translation>
+ <source>Window Associations</source>
+ <translation>Asosiasi Jendela</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Tetapkan urutan &amp;khusus:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Asosiasi Jendela</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Judul jendela:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -944,12 +1485,8 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Judul:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Nama pengguna:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1497,104 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Ulangi:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Judul:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Kedaluwarsa</translation>
+ <source>Notes</source>
+ <translation>Catatan</translation>
</message>
<message>
<source>Presets</source>
<translation>Prasetel</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Catatan:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Pilih kotak centang untuk mengungkap bagian catatan.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nama pengguna:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Kedaluwarsa</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Buang kunci dari agent setelah</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>detik</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Tanda tangan</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Buang kunci dari agent saat basis data ditutup/dikunci</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Kunci publik</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Tambahkan kunci ke agent saat basis data dibuka/tak terkunci</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Komentar</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Dekripsi</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>t/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Salin ke papan klip</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Kunci privat</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Berkas eksternal</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Telusuri...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Lampiran</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Tambahkan ke agent</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Buang dari agent</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Membutuhkan konfirmasi pengguna saat kunci ini digunakan</translation>
</message>
</context>
<context>
@@ -1045,6 +1666,14 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>G&amp;unakan ikon bawaan</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Gunakan ikon &amp;khusus</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Tambah ikon khusus</translation>
</message>
@@ -1053,6 +1682,18 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Hapus ikon khusus</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Unduh favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Tidak bisa mengunduh favicon.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Petunjuk: Anda bisa mengaktifkan Google sebagai cadangan di Perkakas&gt;Pengaturan&gt;Keamanan</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Gambar</translation>
</message>
@@ -1065,24 +1706,12 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Pilih gambar</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Unduh favicon</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Tidak bisa mengunduh favicon.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Tidak bisa membaca ikon</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>G&amp;unakan ikon bawaan</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Gunakan ikon &amp;khusus</translation>
+ <source>Custom icon already exists</source>
+ <translation>Ikon khusus sudah ada</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1721,6 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Ikon ini digunakan oleh %1 entri, dan akan diganti oleh ikon bawaan. Apakah Anda yakin ingin menghapusnya?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Petunjuk: Anda bisa mengaktifkan Google sebagai cadangan di Perkakas&gt;Pengaturan&gt;Keamanan</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,15 +1740,129 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Buang</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - Salinan</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nama</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Ukuran</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Tambah</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Buang</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Buka</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Simpan</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Pilih berkas</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Konfirmasi Buang</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Simpan lampiran</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Tidak bisa membuat direktori:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Apakah Anda yakin ingin menimpa ulang berkas &quot;%1&quot; yang ada dengan berkas lampiran?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Konfirmasi menimpa ulang</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Tidak bisa menyimpan lampiran:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Tidak bisa membuka lampiran:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Tidak bisa membuka lampiran:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Tidak bisa membuka berkas:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1891,11 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Grup</translation>
</message>
@@ -1172,9 +1912,67 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref: </translation>
+ <source>Never</source>
+ <translation>Tidak Pernah</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Sandi</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Catatan</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Kedaluwarsa</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Dibuat</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Diubah</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Diakses</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Lampiran</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Ubahsuai Tampilan</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Sembunyikan Nama Pengguna</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Sembunyikan Sandi</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Paskan ke jendela</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Paskan ke konten</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Kembalikan ke setelan bawaan</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1185,6 +1983,17 @@ Apakah Anda ingin tetap menyimpannya?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Tidak bisa menyimpan berkas!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Tidak bisa menyimpan berkas perpesanan native.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2043,10 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Pastikan sandi berisi karakter dari setiap grup</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII Lanjutan</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2060,361 @@ Apakah Anda ingin tetap menyimpannya?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Tidak bisa mengkalkulasi kunci utama</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Kunci salah atau berkas basis data rusak.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Tidak bisa mengkalkulasi kunci utama</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>kehilangan tajuk basis data</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Tidak bisa mengkalkulasi kunci utama</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Ukuran checksum tajuk tidak valid</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Tajuk SHA256 tidak cocok</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Kunci salah atau berkas basis data rusak. (HMAC tidak cocok)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Cipher tidak dikenal</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Ukuran id tajuk tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Panjang ruas tajuk tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Panjang data tajuk tidak valid</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Gagal membuka buffer untuk parameter KDF di dalam tajuk</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Fungsi derivasi kunci tidak didukung (KDF) atau parameter tidak valid</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Ditemukan ruas tajuk legacy di dalam berkas KDBX4.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Versi map variasi KeePass tidak didukung.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Panjang nama entri map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Data nama entri map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Panjang nilai entri map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Data nilai entri map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Panjang nilai entri Bool map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Panjang nilai entri Int32 map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Panjang nilai entri UInt32 map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Panjang nilai entri Int64 map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Panjang nilai entri UInt64 map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Tipe entri map variasi tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ukuran tipe entri map variasi tidak valid</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Algoritma cipher simetrik tidak valid.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Ukuran cipher IV simetrik tidak valid.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Tidak bisa mengkalkulasi kunci utama</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Gagal menserialisasi map variasi parameter KDF</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Panjang uuid cipher tidak valid</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Cipher tidak didukung</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Algoritma kompresi tidak didukung</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Ukuran byte awal tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Ukuran id stream acak tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Bukan basis data KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Berkas yang dipilih adalah basis data lama KeePass 1 (.kdb).
+
+Anda bisa mengimpornya dengan mengklik Basis Data &gt; &apos;Impor basis data KeePass 1...&apos;.
+Ini adalah migrasi satu arah. Anda tidak akan bisa membuka basis data yang diimpor dengan versi lama KeePassX 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Versi basis data KeePass 2 tidak didukung.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Gagal mengurai XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Tidak ada grup root</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Kehilangan data atau uuid ikon</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Kehilangan nilai atau kunci data khusus</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Beberapa elemen grup</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Uuid grup null</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Nomor ikon grup tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Nilai EnableAutoType tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Nilai EnableSearching tidak valid</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Tidak ditemukan uuid grup</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Uuid DeleteObject null</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Kehilangan waktu atau uuid DeletedObject</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Uuid entri null</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Nomor ikon entri tidak valid</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Elemen riwayat di dalam entri riwayat</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Tidak ditemukan uuid entri</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Elemen riwayat dengan uuid yang berbeda</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Tidak bisa mendekripsi lema entri</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Ditemukan atribut khusus ganda</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Kehilangan nilai atau kunci lema entri</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Ditemukan lampiran ganda</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Kehilangan nilai atau kunci binari entri</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Kehilangan asosiasi jendela atau urutan ketik-otomatis</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Nilai bool tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Waktu tanggal tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Warna tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Warna rgb tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Angka tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Uuid tidak valid</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Tidak bisa mengurai kompresi binari</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2444,35 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<translation>Versi basis data KeePass tidak didukung.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Tidak bisa membaca enkripsi IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Jumlah grup tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Jumlah entri tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Ukuran hash konten tidak valid</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Root</source>
<translation>Root</translation>
</message>
@@ -1287,129 +2484,141 @@ Apakah Anda ingin tetap menyimpannya?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Kunci salah atau berkas basis data rusak.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Bukan basis data KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Transformasi kunci gagal</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Versi basis data KeePass tidak didukung.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Angka tipe ruas grup tidak valid</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Kunci salah atau berkas basis data rusak.</translation>
+ <source>Invalid group field size</source>
+ <translation>Ukuran ruas grup tidak valid</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Tidak bisa mengkalkulasi kunci utama</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Data ruas grup baca tidak cocok dengan ukurannya</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group id field size</source>
+ <translation>Ukuran ruas id grup salah</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Berkas yang dipilih adalah basis data lama KeePass 1 (.kdb).
-
-Anda bisa mengimpornya dengan mengklik Basis Data &gt; &apos;Impor basis data KeePass 1...&apos;.
-Ini adalah migrasi satu arah. Anda tidak akan bisa membuka basis data yang diimpor dengan versi lama KeePassX 0.4.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Ukuran ruas waktu pembuatan grup salah</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group modification time field size</source>
+ <translation>Ukuran ruas waktu perubahan grup salah</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Tidak bisa mengkalkulasi kunci utama</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Ukuran ruas waktu akses grup salah</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Galat saat menguji fungsi kriptografi.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Ukuran ruas waktu kedaluwarsa grup salah</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Galat</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Ukuran ruas ikon grup salah</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Berkas penguncian tidak bisa dibuat. Mode aplikasi tunggal dinonaktifkan.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Ukuran ruas level grup salah</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Aplikasi KeePassXC lainnya sudah berjalan.</translation>
+ <source>Invalid group field type</source>
+ <translation>Tipe ruas grup tidak valid</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation type="unfinished"/>
+ <source>Missing group id or level</source>
+ <translation>Kehilangan level atau id grup</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Buka basis data</translation>
+ <source>Missing entry field type number</source>
+ <translation>Kehilangan nomor tipe ruas entri</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Pengaturan basis data</translation>
+ <source>Invalid entry field size</source>
+ <translation>Ukuran ruas entri tidak valid</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Salin nama pengguna ke papan klip</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Data ruas entri baca tidak cocok dengan ukurannya</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Salin sandi ke papan klip</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Ukuran ruas uuid entri tidak valid</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Pengaturan</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Ukuran ruas id grup entri tidak valid</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Tampilkan bilah alat</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Ukuran ruas ikon entri tidak valid</translation>
</message>
<message>
- <source>read-only</source>
- <translation>baca-saja</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Ukuran ruas waktu pembuatan entri tidak valid</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Jungkit jendela</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Ukuran ruas waktu perubahan entri tidak valid</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Basis Data KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Ukuran ruas waktu kedaluwarsa entri tidak valid</translation>
</message>
<message>
- <source>All files</source>
- <translation>Semua Berkas</translation>
+ <source>Invalid entry field type</source>
+ <translation>Tipe ruas entri tidak valid</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Simpan basis data yang sudah diperbaiki</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Gagal menyimpan basis data.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Berkas penguncian tidak bisa dibuat. Mode aplikasi tunggal dinonaktifkan.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Aplikasi KeePassXC lainnya sudah berjalan.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Galat saat menguji fungsi kriptografi.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Galat</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>Basis &amp;data</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>Basis data ba&amp;ru-baru ini</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Impor</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Bantuan</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>E&amp;ntri</translation>
</message>
@@ -1418,12 +2627,16 @@ Ini adalah migrasi satu arah. Anda tidak akan bisa membuka basis data yang diimp
<translation>Salin at&amp;ribut ke papan klip</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Sandi sekali berdasar waktu</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Grup</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Tampilan</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Perkakas</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1434,6 +2647,10 @@ Ini adalah migrasi satu arah. Anda tidak akan bisa membuka basis data yang diimp
<translation>&amp;Tentang</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Buka basis data...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Simpan basis data</translation>
</message>
@@ -1474,24 +2691,24 @@ Ini adalah migrasi satu arah. Anda tidak akan bisa membuka basis data yang diimp
<translation>&amp;Hapus grup</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Pengaturan &amp;basis data</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>&amp;Simpan basis data sebagai...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Gandakan entri</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Ubah kunci &amp;utama...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation type="unfinished"/>
+ <source>&amp;Database settings</source>
+ <translation>Pengaturan &amp;basis data</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Salin &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Pengaturan basis data</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Tampilkan TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Gandakan entri</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1502,14 +2719,26 @@ Ini adalah migrasi satu arah. Anda tidak akan bisa membuka basis data yang diimp
<translation>Salin &amp;nama pengguna</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Salin nama pengguna ke papan klip</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Salin &amp;sandi</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Salin sandi ke papan klip</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Pengaturan</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Pembuat Sandi</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>Jalankan &amp;Ketik-Otomatis</translation>
</message>
@@ -1526,164 +2755,222 @@ Ini adalah migrasi satu arah. Anda tidak akan bisa membuka basis data yang diimp
<translation>&amp;Judul</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Salin judul ke papan klip</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Salin URL ke papan klip</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Catatan</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Pembuat Sandi</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Salin catatan ke papan klip</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Bersihkan riwayat</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Ekspor ke berkas CSV...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>Basis &amp;data</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Impor basis data KeePass 1...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Impor</translation>
+ <source>Import CSV file...</source>
+ <translation>Impor berkas CSV...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Perkakas</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Per&amp;baiki basis data...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Tampilkan TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Siapkan TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Salin &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Kosongkan keranjang sa&amp;mpah</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Kosongkan keranjang sampah</translation>
+ <source>Clear history</source>
+ <translation>Bersihkan riwayat</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Galat akses untuk berkas konfigurasi %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Keluar KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Sepertinya Anda menggunakan KeePassHTTP untuk integrasi peramban. Fitur ini tidak berlaku lagi dan akan dibuang di masa depan.&lt;br&gt;Silakan beralih ke KeePassXC-Browser! Untuk bantuan migrasi, kunjungi &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;panduan migrasi&lt;/a&gt; kami (peringatan %1 of 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Silakan sentuh tombol pada YubiKey Anda!</translation>
+ <source>read-only</source>
+ <translation>baca-saja</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>&amp;Bantuan</translation>
+ <source>Settings</source>
+ <translation>Pengaturan</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Buka basis data...</translation>
+ <source>Toggle window</source>
+ <translation>Jungkit jendela</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>&amp;Simpan basis data sebagai...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Keluar KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Ubah kunci &amp;utama...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Basis Data KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Ekspor ke berkas CSV...</translation>
+ <source>All files</source>
+ <translation>Semua Berkas</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Impor basis data KeePass 1...</translation>
+ <source>Open database</source>
+ <translation>Buka basis data</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Impor berkas CSV...</translation>
+ <source>Save repaired database</source>
+ <translation>Simpan basis data yang sudah diperbaiki</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Per&amp;baiki basis data...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Gagal menyimpan basis data.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Siapkan TOTP...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Silakan sentuh tombol pada YubiKey Anda!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>PERINGATAN! Anda menggunakan versi tidak stabil dari KeePassXC!
+Tinggi kemungkinan terjadi kerusakan, harap kelola salinan basis data anda dengan baik.
+Versi ini tidak dimaksudkan untuk penggunaan sehari-hari.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Berkas kunci tidak valid, mengharapkan kunci OpenSSH</translation>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM boundary tidak cocok.</translation>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation>Dekode base64 gagal</translation>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation>Berkas kunci terlalu kecil.</translation>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <source>General</source>
- <translation>Umum</translation>
+ <source>Found zero keys</source>
+ <translation>Tidak ada key yang ditemukan</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>&amp;Tampilkan notifikasi ketika ada permintaan kredensial</translation>
+ <source>Failed to read public key.</source>
+ <translation>Gagal membaca kunci publik.</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Urutkan entri yang cocok berdasarkan &amp;nama pengguna</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Berkas kunci rusak, gagal membaca kunci privat</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>&amp;Buang semua izin yang tersimpan dari entri di dalam basis data aktif</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Tidak ada isi dari private key untuk didekripsi</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Tingkat Lanjut</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Mencoba menjalankan KDF tanpa cipher</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Selalu izinkan &amp;akses ke entri</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Membutuhkan frasa sandi untuk mendekripsi kunci ini</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Selalu izinkan pembar&amp;uan entri</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Derivasi kunci gagal, berkas kunci rusak?</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>&amp;Cari di dalam semua basis data yang terbuka untuk entri yang cocok</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Dekripsi gagal, frasa sandi salah?</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Port HTTP:</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>EOF yang tidak terduga saat membaca kunci publik</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Port bawaan: 19455</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>EOF yang tidak terduga saat membaca kunci privat</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>&amp;Minta untuk membuka basis data jika terkunci</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Tidak bisa membuat public key karena tidak ada isinya</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Urutkan entri yang cocok berdasarkan &amp;judul</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>EOF yang tidak terduga saat menulis kunci publik</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC akan mendengarkan port ini pada 127.0.0.1</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Tidak bisa membuat private key karena tidak ada isinya</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation type="unfinished"/>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>EOF yang tidak terduga saat menulis kunci privat</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation type="unfinished"/>
+ <source>Unsupported key type: %1</source>
+ <translation>Jenis key tidak didukung: %1</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>&amp;Buang semua kunci enkripsi bersama dari basis data aktif</translation>
+ <source>Unknown cipher: %1</source>
+ <translation>Cipher tidak diketahui: %1</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation type="unfinished"/>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Cipher IV terlalu pendek untuk MD5 kdf</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Membuat atau memperbarui ruas lema secara otomatis tidak didukung.</translation>
+ <source>Unknown KDF: %1</source>
+ <translation>KDF tidak diketahui: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Jenis key tidak diketahui: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1694,43 +2981,137 @@ Using default port 19455.</source>
<translation>Aktifkan server KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Umum</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;Tampilkan notifikasi ketika ada permintaan kredensial</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
+ <translation>Hanya tampilkan kecocokan terbaik untuk URL tertentu bukan semua entri untuk keseluruhan domain.</translation>
</message>
<message>
<source>&amp;Return only best matching entries</source>
- <translation type="unfinished"/>
+ <translation>Hanya &amp;tampilkan entri dengan kecocokan terbaik</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>&amp;Minta untuk membuka basis data jika terkunci</translation>
</message>
<message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
- <translation type="unfinished"/>
+ <translation>Hanya entri dengan skema yang sama (http://, https://, ftp://, ...) yang ditampilkan.</translation>
</message>
<message>
<source>&amp;Match URL schemes</source>
<translation>&amp;Cocok skema URL</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Urutkan entri yang cocok berdasarkan &amp;nama pengguna</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Urutkan entri yang cocok berdasarkan &amp;judul</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>&amp;Buang semua kunci enkripsi bersama dari basis data aktif</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>&amp;Buang semua izin yang tersimpan dari entri di dalam basis data aktif</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Pembuat Sandi</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Tingkat Lanjut</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Selalu izinkan &amp;akses ke entri</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Selalu izinkan pembar&amp;uan entri</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
+ <translation>Hanya basis data terpilih yang harus terkoneksi dengan klien.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>&amp;Cari di dalam semua basis data yang terbuka untuk entri yang cocok</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Membuat atau memperbarui ruas lema secara otomatis tidak didukung.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Tampilkan ruas lema tingkat lanjut yang dimulai dengan &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Port HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Port bawaan: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC akan mendengarkan port ini pada 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Peringatan:&lt;/b&gt; Opsi berikut bisa berbahaya!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP sudah tidak berlaku lagi dan akan dibuang di masa depan.&lt;br&gt;Silakan beralih ke KeePassXC-Browser! Untuk bantuan migrasi, kunjungi &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;panduan migrasi&lt;/a&gt;kami.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Opsi berikut bisa sangat berbahaya!
-Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Tidak bisa mengkoneksi ke port dibawah 1024!
+Menggunakan port bawaan 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Sandi:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>kekuatan</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropi</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Sandi</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Tipe Karakter</translation>
</message>
@@ -1751,38 +3132,50 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
<translation>Karakter Spesial</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>ASCII Lanjutan</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Kecualikan karakter mirip</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Terima</translation>
+ <source>Pick characters from every group</source>
+ <translation>Pilih karakter dari setiap grup</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Panjang:</translation>
</message>
<message>
- <source>strength</source>
- <translation>kekuatan</translation>
+ <source>Passphrase</source>
+ <translation>Frasa Sandi</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropi</translation>
+ <source>Wordlist:</source>
+ <translation>Daftar Kata:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Panjang:</translation>
+ <source>Word Count:</source>
+ <translation>Jumlah Kata:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Pilih karakter dari setiap grup</translation>
+ <source>Word Separator:</source>
+ <translation>Pemisah Kata:</translation>
</message>
<message>
<source>Generate</source>
<translation>Buat</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Salin</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Terima</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Tutup</translation>
</message>
@@ -1800,51 +3193,276 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Buruk</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Lemah</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Baik</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Sempurna</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Sandi</translation>
+ <source>Database not opened</source>
+ <translation>Basis data tidak terbuka</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>ASCII Lanjutan</translation>
+ <source>Database hash not available</source>
+ <translation>Hash basis data tidak tersedia</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Frasa Sandi</translation>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Daftar Kata:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Tidak bisa mendekripsi pesan</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Jumlah Kata:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Terputus atau tidak bisa menyambung ke KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Pemisah Kata:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Tindakan dibatalkan atau ditolak</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Salin</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Tidak bisa mengenkripsi pesan atau kunci publik tidak ditemukan. Apakah Perpesanan Native diaktifkan di dalam KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>Asosiasi KeePassXC gagal, coba lagi</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Perubahan kunci tidak berhasil</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Kunci enkripsi tidak dikenali</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Tidak ditemukan basis data tersimpan</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Tindakan salah</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Pesan kosong diterima</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>URL tidak ada</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Tidak ditemukan log masuk</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Galat tidak diketahui</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Tambahkan entri baru ke basis data.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Jalur ke basis data.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Berkas kunci dari basis data.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>jalur</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Nama pengguna untuk entri.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>nama pengguna</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL untuk entri.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Ingatkan sandi entri.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Buat sandi entri.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Panjang sandi yang akan dibuat.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>panjang</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Jalur entri yang akan ditambahkan.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Salin sandi entri ke papan klip.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Jalur entri yang akan di salin.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Waktu kedaluwarsa dalam detik sebelum mengosongkan papan klip.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Sunting sebuah entri.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Judul entri.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>judul</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Jalur entri yang akan disunting.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Estimasi entropi sandi.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Sandi untuk diestimasi entropinya.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Jalankan analisis tingkat lanjut pada sandi.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Ekstrak dan tampilkan isi basis data.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Jalur basis data untuk diekstrak.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Masukkan sandi untuk membuka %1: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Gagal memuat berkas kunci %1 : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>PERINGATAN: Anda menggunakan format berkas kunci legacy
+yang mungkin tidak akan lagi didukung di masa depan.
+
+Harap pertimbangkan membuat berkas kunci baru.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Perintah yang tersedia:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Nama perintah untuk dijalankan.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Daftar entri basis data.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Jalur grup untuk ditampilkan. Bawaan adalah /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Temukan entri dengan cepat.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Lema pencarian.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Gabungkan dua basis data.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Jalur tujuan basis data untuk digabungkan.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Jalur sumber basis data untuk digabungkan.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Gunakan kredensial yang sama untuk kedua berkas basis data.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Berkas kunci dari basis data yang akan digabungkan.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Tampilkan informasi entri.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Nama atribut yang akan ditampilkan. Opsi ini bisa digunakan lebih dari sekali, dengan masing-masing atribut ditampilkan satu per baris sesuai dengan urutannya. Jika tidak ada atribut, ringkasan atribut bawaan akan ditampilkan.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>atribut</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nama entri untuk ditampilkan.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>Perangkat NULL</translation>
@@ -1868,8 +3486,28 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
<translation>kehilangan tanda kutip tutup</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – direkomendasikan)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1888,14 +3526,22 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
<translation>Sandi</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Catatan</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Terakhir Diubah</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Dibuat</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Integrasi Peramban Legacy</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Integrasi Peramban</translation>
</message>
@@ -1905,12 +3551,61 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
</message>
<message>
<source>Press</source>
- <translation type="unfinished"/>
+ <translation>Tekan</translation>
</message>
<message>
<source>Passive</source>
<translation>Pasif</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Buat kata sandi baru secara acak.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Panjang kata sandi yang dibuat.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Gunakan huruf kecil di kata sandi yang dibuat</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Gunakan huruf besar di kata sandi yang dibuat.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Gunakan angka di kata sandi yang dibuat.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Gunakan spesial karakter di kata sandi yang dibuat.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1949,8 +3644,8 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Sensitif Besar Kecil</translation>
+ <source>Search...</source>
+ <translation>Cari...</translation>
</message>
<message>
<source>Search</source>
@@ -1961,8 +3656,8 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
<translation>Bersihkan</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Cari...</translation>
+ <source>Case Sensitive</source>
+ <translation>Sensitif Besar Kecil</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1972,50 +3667,6 @@ Hanya ubah jika Anda tahu apa yang Anda lakukan.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Kunci enkripsi bersama dengan nama &quot;%1&quot; sudah ada.
-Apakah Anda ingin menimpanya?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Apakah Anda ingin memperbarui informasi dalam %1 - %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>Basis data aktif dikunci!
-Silakan buka kunci atau pilih yang lainnya yang tidak terkunci.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Berhasil membuang %2-enkripsi %1 dari Pengaturan KeePassX/Http.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Tidak ada kunci-enkripsi bersama yang ditemukan di dalam Pengaturan KeePassHttp.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Basis data aktif tidak berisi entri Pengaturan KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Membuang izin yang tersimpan...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Batal</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Berhasil membuang izin dari %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>Basis data aktif tidak berisi entri dengan izin.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Permintaan asosiasi kunci baru</translation>
</message>
@@ -2032,33 +3683,77 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<translation>KeePassXC: Timpa kunci yang ada?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Kunci enkripsi bersama dengan nama &quot;%1&quot; sudah ada.
+Apakah Anda ingin menimpanya?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Perbarui Entri</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Apakah Anda ingin memperbarui informasi dalam %1 - %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Basis data dikunci!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Basis data aktif dikunci!
+Silakan buka kunci atau pilih yang lainnya yang tidak terkunci.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Buang kunci dari basis data</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Berhasil membuang %n kunci terenkripsi dari Pengaturan KeePassXC/Http.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Tidak ada kunci yang ditemukan</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Tidak ada kunci-enkripsi bersama yang ditemukan di dalam Pengaturan KeePassHttp.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Pengaturan tidak tersedia!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Basis data aktif tidak berisi entri Pengaturan KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Membuang izin yang tersimpan...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Batal</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Buang izin</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Berhasil membuang izin dari %n entri.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Tidak entri dengan izin yang ditemukan!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Basis data aktif tidak berisi entri dengan izin.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2082,10 +3777,26 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Pengaturan Dasar</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Hanya mulai satu aplikasi KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Ingat basis data terakhir</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Ingat berkas kunci dan dongle keamanan terakhir</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Muat basis data sebelumnya saat mulai</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Otomatis simpan ketika keluar</translation>
</message>
@@ -2094,20 +3805,28 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<translation>Otomatis simpan setelah setiap perubahan</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Muat ulang basis data secara otomatis ketika diubah secara eksternal</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimalkan ketika menyalin ke papan klip</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimalkan jendela saat memulai aplikasi</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Gunakan ikon grup pada pembuatan entri</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Pintasan global Ketik-Otomatis</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Jangan tandai basis data telah diubah untuk perubahan non-data (mis. melebarkan grup)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Bahasa</translation>
+ <source>Hide the Details view</source>
+ <translation>Sembunyikan tampilan Detail</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2118,66 +3837,84 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<translation>Sembunyikan jendela ke baki sistem ketika diminimalkan</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Muat basis data sebelumnya saat mulai</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Muat ulang basis data secara otomatis ketika diubah secara eksternal</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Daripada keluar, sembunyikan jendela ke baki sistem</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Minimalkan jendela saat memulai aplikasi</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Pengaturan Dasar</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Ingat berkas kunci dan dongle keamanan terakhir</translation>
+ <source>Dark system tray icon</source>
+ <translation>Ikon baki sistem gelap</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Jangan tandai basis data telah diubah untuk perubahan non-data (mis. melebarkan grup)</translation>
+ <source>Language</source>
+ <translation>Bahasa</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Ketik-Otomatis</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Gunakan pencocokan judul entri dan URL untuk Ketik-Otomatis global</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Gunakan judul entri untuk mencocokkan jendela untuk Ketik-Otomatis global</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Gunakan URL entri untuk mencocokkan jendela untuk Ketik-Otomatis global</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Selalu bertanya sebelum menjalankan Ketik-Otomatis</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Pintasan global Ketik-Otomatis</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Tundaan Ketik-Otomatis</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>md</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Hanya mulai satu aplikasi KeePassXC</translation>
+ <source>Startup</source>
+ <translation>Memulai</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Manajemen Berkas</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Secara aman menyimpan berkas basis data (mungkin tidak kompatibel dengan Dropbox, dll)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Cadangkan basis data sebelum disimpan</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Manajemen Entri</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Umum</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Waktu Kedaluwarsa</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Kosongkan papan klip setelah</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>det</translation>
</message>
<message>
@@ -2185,8 +3922,12 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<translation>Kunci basis data setelah tidak aktif selama</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Tampilkan teks sandi secara baku</translation>
+ <source>Convenience</source>
+ <translation>Kenyamanan</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Kunci basis data ketika sesi dikunci atau lid ditutup</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2197,16 +3938,16 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<translation>Tidak membutuhkan pengulangan sandi ketika ruas bisa dilihat</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Tampilkan teks sandi secara baku</translation>
</message>
<message>
- <source>Convenience</source>
- <translation type="unfinished"/>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Sembunyikan sandi di dalam panel pratinjau</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Kunci basis data ketika sesi dikunci atau lid ditutup</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Sembunyikan catatan secara bawaan</translation>
</message>
<message>
<source>Privacy</source>
@@ -2216,6 +3957,10 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Gunakan Google sebagai cadangan untuk mengunduh ikon situs web</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2228,6 +3973,14 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<translation>Kunci:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Pengaturan bawaan token RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Pengaturan token steam</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Gunakan pengaturan khusus</translation>
</message>
@@ -2253,6 +4006,7 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>det</translation>
</message>
</context>
@@ -2289,10 +4043,6 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Selamat datang di KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Mulai menyimpan sandi Anda dengan aman di dalam basis data KeePassXC</translation>
</message>
@@ -2316,92 +4066,48 @@ beri nama yang unik untuk identifikasi dan terimalah.</translation>
<source>Recent databases</source>
<translation>Basis data baru-baru ini</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Selamat datang di KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>jalur ke berkas konfigurasi khusus</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>berkas kunci basis data</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - pengelola sandi lintas platform</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>baca sandi basis data dari stdin</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>nama berkas basis data sandi untuk dibuka (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Salin sandi ke papan klip</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Buang sebuah entri dari basis data.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Jalur ke basis data.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Gunakan tampilan GUI untuk membuka kunci basis data.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Nama entri untuk disalin.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Ekstrak dan tampilkan isi basis data.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Jalur basis data untuk diekstrak.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Jalur entri untuk dibuang.</translation>
</message>
<message>
- <source>Name of the command to execute.</source>
- <translation>Nama perintah untuk dijalankan.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Daftar entri basis data.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Jalur grup untuk ditampilkan. Bawaan adalah /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Tampilkan UUID entri dan grup.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Gabungkan dua basis data.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - pengelola sandi lintas platform</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Jalur tujuan basis data untuk digabungkan.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>nama berkas basis data sandi untuk dibuka (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Jalur sumber basis data untuk digabungkan.</translation>
+ <source>path to a custom config file</source>
+ <translation>jalur ke berkas konfigurasi khusus</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Gunakan sandi yang sama untuk kedua berkas basis data.</translation>
+ <source>key file of the database</source>
+ <translation>berkas kunci basis data</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Tampilkan sandi.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>baca sandi basis data dari stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Nama entri untuk ditampilkan.</translation>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_it.ts b/share/translations/keepassx_it.ts
index 582d18970..d9bacbf49 100644
--- a/share/translations/keepassx_it.ts
+++ b/share/translations/keepassx_it.ts
@@ -10,16 +10,32 @@
<translation>Informazioni</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Segnala eventuali problemi su: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC è distribuito sotto i termini della licenza GNU General Public License (GPL) versione 2 o (come opzione) versione 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Collaboratori</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt; vedere i contributi su GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Informazioni debug</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Quando segnali un problema includi le seguenti informazioni:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
- <translation>Copia negli Appunti</translation>
+ <translation>Copia negli appunti</translation>
</message>
<message>
<source>Version %1
@@ -32,6 +48,10 @@
<translation>Revisione: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribuzione: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Librerie:</translation>
</message>
@@ -48,33 +68,27 @@ Kernel: %3 %4</translation>
<translation>Estensioni abilitate:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Segnala eventuali problemi in: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC è distribuito sotto i termini della licenza GNU General Public License (GPL) versione 2 o (come opzione) versione 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
- <translation>Manutenzione progetto:</translation>
- </message>
- <message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt; vedere i contributi su GitHub&lt;/a&gt;</translation>
+ <translation>Responsabili del progetto:</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Quando segnali un problema includi le seguenti informazioni:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Uno speciale ringraziamento dal team di KeePassXC va a debfx per la creazione del KeePassX originale.</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>Distribuzione: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Tipo di compilazione: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP conferma accesso</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Ricorda questa decisione</translation>
</message>
@@ -89,23 +103,46 @@ Kernel: %3 %4</translation>
<message>
<source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source>
- <translation>%1 ha richiesto accesso alle passwords per il seguente elemento/i.
+ <translation>%1 ha richiesto accesso alle password per il seguente elemento/i.
Seleziona se vuoi consentire l&apos;accesso.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP conferma accesso</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Abilita agente SSH (richiede un riavvio)</translation>
</message>
</context>
<context>
<name>AutoType</name>
<message>
<source>Couldn&apos;t find an entry that matches the window title:</source>
- <translation>Impossibile trovare un elemento che corrisponda al titolo della finestra:</translation>
+ <translation>Impossibile trovare una voce che corrisponda al titolo della finestra:</translation>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
- <translation>Auto completamento - KeePassXC</translation>
+ <translation>Auto-completamento - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Completamento automatico</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>La sintassi del tuo comando di auto-completamento non è corretta!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Questo comando di auto-completamento contiene un ritardo molto lungo. Si desidera veramente procedere?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Questo comando di auto-completamento contiene pressioni dei tasti molto lente. Si desidera veramente procedere?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Questo comando di auto-completamento contiene argomenti che molto spesso si ripetono. Si desidera veramente procedere?</translation>
</message>
</context>
<context>
@@ -124,14 +161,317 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Gruppo</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titolo</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nome utente</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequenza</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>KeePassXC - Completamento automatico</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
- <translation>Seleziona un elemento per l&apos;auto completamento:</translation>
+ <translation>Seleziona una voce per l&apos;auto-completamento:</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser confermare l&apos;accesso</translation>
</message>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>KeePassXC - Auto completamento</translation>
+ <source>Remember this decision</source>
+ <translation>Ricorda questa scelta</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Consenti</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Nega</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 ha richiesto accesso alle password per il seguente elemento/i.
+Seleziona se vuoi consentire l&apos;accesso.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Finestra</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Questo è necessario per accedere al tuo database con KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Abilita l&apos;integrazione con i browser di KeepassXC</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Generale</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Abilita l&apos;integrazione per i seguenti browser:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Visualizza una &amp;notifica quando sono richieste le credenziali</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Ri&amp;chiedi di sbloccare il database se bloccato</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Vengono restituiti solo voci con lo stesso schema (http://, https://, ...)</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Schema di corrispondenza URL (ad esempio, https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Restituisci solo le corrispondenze migliori per un&apos;URL specifica invece di tutte le voci per l&apos;intero dominio.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Restituisci solo le credenziali che corrispondono maggiormente</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordina le credenziali &amp;corrispondenti per titolo</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordina le credenziali corrispondenti per nome &amp;utente</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Disconnetti tutti i browser</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Ignora i &amp;permessi precedentemente salvati</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avanzate</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Non &amp;chiedere conferma prima di accedere alle credenziali</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Non &amp;chiedere conferma prima di &amp;aggiornare le credenziali</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Solo il database selezionato deve essere collegato con un client.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Cerca le credenziali corrispondenti in tutti i database aperti</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>La creazione o l&apos;aggiornamento automatico dei campi stringa non è supportato.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Seleziona i campi stringa avanzati che iniziano con &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Aggiorna automaticamente all&apos;avvio il percorso dei binari di KeePassXC o keepassxc-proxy per gli script di messaggistica nativa</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Aggiorna all&apos;avvio i file di manifest della messaggeria &amp;nativa</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Supporta un&apos;applicazione proxy tra KeePassXC e l&apos;estensione del browser</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Utilizza un&apos;applicazione &amp;proxy tra KeePassXC e l&apos;estensione del browser</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Usa un indirizzo proxy personalizzato se hai installato manualmente un proxy</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Utilizzare una posizione &amp;personalizzata per il proxy</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Sfoglia...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Avviso:&lt;/b&gt; le seguenti opzioni possono essere pericolose.</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>File eseguibili (*.exe);;Tutti i file (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>File eseguibili (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Selezionare una posizione personalizzata per il proxy</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Siamo spiacenti, ma KeePassXC-Browser non è supportato per i rilasci di Snap al momento.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: nuova richiesta di associazione chiave</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Hai ricevuto una richiesta di associazione per la chiave sopra.
+
+Se vuoi concederle l&apos;autorizzazione per accedere al tuo database di KeePassXC,
+assegnale un nome univoco e accetta la richiesta.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Salva e permetti l&apos;accesso</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Vuoi sovrascrivere la chiave esistente?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Esiste già una chiave crittografica condivisa con il nome &quot;%1&quot;- Vuoi sovrascriverla?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: aggiorna voce</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Vuoi aggiornare le informazioni in %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: database bloccato!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Il database attivo è bloccato!
+Sblocca il database selezionato o scegline un altro che sia sbloccato.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: impostazioni non disponibili!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Il database attivo non contiene una voce per le impostazioni.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: nessuna chiave trovata</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Nessun chiave condivisa di cifratura è stata trovata nelle impostazioni di KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: chiavi rimosse dal database</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Rimosso con successo %n chiavi di crittografia da KeePassXC impostazioni.</numerusform><numerusform>Rimossa(e) con successo %n chiave(i) di crittografia dalle impostazioni di KeePassXC.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Rimozione dei permessi salvati...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Interrompi</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: permessi rimossi</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Rimosso con successo le autorizzazioni da %n ha.</numerusform><numerusform>Rimossa(e) con successo le autorizzazioni da %n voce(i).</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: nessuna voce con permessi trovata!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Il database attivo non contiene una voce con permessi.</translation>
</message>
</context>
<context>
@@ -149,6 +489,10 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<translation>Ripeti password:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;File chiave</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Sfoglia</translation>
</message>
@@ -157,6 +501,14 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<translation>Crea</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Risposta di ve&amp;rifica</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Aggiorna</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>File chiave</translation>
</message>
@@ -177,6 +529,10 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<translation>Seleziona un file chiave</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Password vuota</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Vuoi veramente usare una stringa vuota come password?</translation>
</message>
@@ -191,24 +547,22 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;File chiave</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Risposta di ve&amp;rifica</translation>
+ <source>Legacy key file format</source>
+ <translation>Formato di file chiave legacy</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>Aggiorna</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Password vuota</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Per il file della chiave, stai utilizzando un formato obsoleto
+che potrebbe non essere più supportato in futuro.
+
+Considera l&apos;opzione di generarne uno nuovo</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
- <translation>Modifica password principale fallitoa. Nessuna YubiKey inserita.</translation>
+ <translation>Modifica non riuscita della password principale: nessuna YubiKey inserita.</translation>
</message>
</context>
<context>
@@ -218,6 +572,10 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<translation>Opzioni clonazione</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Aggiungi &apos; - Clone&apos; al titolo</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Sostituisci nome utente e password con riferimenti</translation>
</message>
@@ -225,10 +583,6 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<source>Copy history</source>
<translation>Copia cronologia</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Aggiungi &apos;-clone&apos; al titolo</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -274,7 +628,7 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
- <translation>Considera &apos; \&apos; un carattere escape</translation>
+ <translation>Considera &apos;\&apos; un carattere escape</translation>
</message>
<message>
<source>Preview</source>
@@ -282,7 +636,7 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
</message>
<message>
<source>Column layout</source>
- <translation>Disposizione colonna</translation>
+ <translation>Disposizione colonne</translation>
</message>
<message>
<source>Not present in CSV file</source>
@@ -310,7 +664,7 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
</message>
<message>
<source> more messages skipped]</source>
- <translation> più messaggi ignorati]</translation>
+ <translation> ulteriori messaggi ignorati]</translation>
</message>
<message>
<source>Error</source>
@@ -326,10 +680,6 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importa file CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Errore</translation>
</message>
@@ -340,17 +690,17 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> byte, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n byte, </numerusform><numerusform>%n byte, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> righe, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n riga, </numerusform><numerusform>%n righe, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> colonne</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n colonna</numerusform><numerusform>%n colonne</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +722,14 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<translation>Sfoglia</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Aggiorna</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Risposta di verifica:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Impossibile aprire il database.</translation>
</message>
@@ -380,6 +738,24 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<translation>Impossibile aprire il file chiave</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Formato di file chiave legacy</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Per il file della chiave, stai utilizzando un formato obsoleto
+che potrebbe non essere più supportato in futuro.
+
+Considera l&apos;opzione di generarne uno nuovo</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Non mostrare nuovamente questo avviso</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Tutti i file</translation>
</message>
@@ -391,14 +767,6 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<source>Select key file</source>
<translation>Seleziona file chiave</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Aggiorna</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Risposta di verifica:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +783,14 @@ Seleziona se vuoi consentire l&apos;accesso.</translation>
<translation>Impossibile aprire il file chiave</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Database aperto correttamente. Nessuna operazione da eseguire.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Impossibile aprire il database.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Database aperto correttamente. Nessuna operazione da eseguire.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Completato</translation>
</message>
@@ -440,28 +808,122 @@ Adesso puoi salvarlo.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Nome database:</translation>
+ <source>General</source>
+ <translation>Generale</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Descrizione database:</translation>
+ <source>Encryption</source>
+ <translation>Cifratura</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Numero di giri troppo elevato</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Stai utilizzando un numero molto elevato di fasi di trasformazione della chiave con Argon 2
+
+Se continui con questo numero, il tuo database si potrebbe aprire in ore o giorni (o anche più a lungo)</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>D&apos;accordo, mantieni il valore</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Numero di giri troppo basso</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Stai utilizzando un numero molto basso di fasi di trasformazione della chiave con AES-KDF
+
+Se continui con questo numero, il tuo database potrebbe essere decifrato molto facilmente</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF invariato</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>La trasformazione della chiave con i nuovi parametri KDF e&apos; fallita; KDF immutato</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform> iscritto (i)</numerusform><numerusform> thread(s)</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algoritmo di cifratura:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (impostazione predefinita)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Funzione di derivazione di chiave:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Arrotondamenti trasformazione:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Nome utente predefinito:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>Ritardo di 1 secondo di benchmark</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MB</translation>
+ <source>Memory Usage:</source>
+ <translation>Uso della memoria:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Parallelismo:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Metadati del database</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nome database:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Descrizione database:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Prestazioni</translation>
+ <source>Default username:</source>
+ <translation>Nome utente predefinito:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>Impostazioni cronologia</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +934,27 @@ Adesso puoi salvarlo.</translation>
<translation>Grandezza max. cronologia:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Usa il Cestino</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (impostazione predefinita)</translation>
+ <source>Use recycle bin</source>
+ <translation>Usa il cestino</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation>Ulteriori impostazioni del database</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmo:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Abilita &amp;compressione (consigliata)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Radice</translation>
</message>
<message>
@@ -511,24 +974,50 @@ Adesso puoi salvarlo.</translation>
<translation>File non trovato!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Apri database KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Impossibile aprire il database.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Database KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>File aperto in modalità di sola lettura.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Apri file CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>File CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Tutti i file (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Unisci database</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Apri database KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Database KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Vuoi chiudere?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; è in modalità modifica.
+Vuoi annullare le modifiche e chiudere comunque?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
- <translation>Vuoi salvare modifiche?</translation>
+ <translation>Salvare le modifiche?</translation>
</message>
<message>
<source>&quot;%1&quot; was modified.
@@ -538,13 +1027,25 @@ Vuoi salvare le modifiche?</translation>
</message>
<message>
<source>Writing the database failed.</source>
- <translation>Scrittura del database fallita.</translation>
+ <translation>Scrittura del database non riuscita.</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>Password</translation>
</message>
<message>
<source>Save database as</source>
<translation>Salva database come</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Esporta database come file CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Scrittura file CSV fallita.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nuovo database</translation>
</message>
@@ -563,12 +1064,6 @@ Please press cancel to finish your changes or discard them.</source>
Seleziona &apos;Annulla&apos; per completare le modifiche o scartarle.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Questo database non è mai stato salvato.
-È possibile salvare il database o interrompere il blocco.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,118 +1072,81 @@ Vuoi salvare il database prima di bloccarlo?
Altrimenti le modifiche verranno perse.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; è in modalità modifica.
-Vuoi annullare le modifiche e chiudere comunque?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Esporta database come file CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>File CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Scrittura file CSV fallita.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Impossibile aprire il database.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Unisci database</translation>
+ <source>Disable safe saves?</source>
+ <translation>Disabilita i salvataggi sicuri?</translation>
</message>
<message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Il database che stai tentando di salvare è bloccato da un&apos;altra istanza di KeePassXC.
-Vuoi salvare comunque?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Password</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Database già aperto</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Il database che stai cercando di aprire è bloccato da un&apos;altra instanza di KeePassXC.
-Vuoi aprilo comunque?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Apri in sola lettura</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>File aperto in modalità di sola lettura.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Apri file CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>Nonostante ripetuti tentativi, KeePassXC non è riuscito a salvare il database. Probabilmente la causa risiede in un file di lock bloccato da qualche servizio di sincronizzazione file.
+Disabilitare i salvataggi sicuri e riprovare?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Ricerca...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Modifica chiave principale</translation>
</message>
<message>
<source>Delete entry?</source>
- <translation>Vuoi eliminare l&apos;elemento?</translation>
+ <translation>Vuoi eliminare la voce?</translation>
</message>
<message>
<source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
- <translation>Vuoi veramente eliminare l&apos;elemento &quot;%1&quot;?</translation>
+ <translation>Vuoi veramente eliminare la voce &quot;%1&quot;?</translation>
</message>
<message>
<source>Delete entries?</source>
- <translation>Vuoi eliminare gli elementi?</translation>
+ <translation>Vuoi eliminare le voci?</translation>
</message>
<message>
<source>Do you really want to delete %1 entries for good?</source>
- <translation>Vuoi veramente eliminare %1 elementi?</translation>
+ <translation>Vuoi veramente eliminare %1 voci?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Vuoi cestinare la voce?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Vuoi davvero cestinare la voce &quot;%1&quot;?</translation>
</message>
<message>
<source>Move entries to recycle bin?</source>
- <translation>Vuoi spostare gli elementi nel Cestino?</translation>
+ <translation>Vuoi spostare le voci nel Cestino?</translation>
</message>
<message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation><numerusform>Vuoi veramente spostare %n elemento nel Cestino?</numerusform><numerusform>Vuoi veramente spostare %n elementi nel Cestino?</numerusform></translation>
+ <translation><numerusform>Vuoi veramente spostare %n elemento nel Cestino?</numerusform><numerusform>Vuoi veramente cestinare %n voci?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Vuoi eliminare il gruppo?</translation>
+ <source>Execute command?</source>
+ <translation>Vuoi eseguire il comando?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Vuoi veramente eliminare il gruppo &quot;%1&quot;?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Sei sicuro di voler eseguire il seguente comando?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossibile calcolare la chiave principale</translation>
+ <source>Remember my choice</source>
+ <translation>Ricorda la mia scelta</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Vuoi spostare l&apos;elemento nel Cestino?</translation>
+ <source>Delete group?</source>
+ <translation>Vuoi eliminare il gruppo?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Vuoi veramente spostare l&apos;elemento &quot;%1&quot; nel Cestino?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Vuoi veramente eliminare il gruppo &quot;%1&quot;?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Ricerca...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Impossibile calcolare la chiave principale</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1165,8 @@ Vuoi aprilo comunque?</translation>
<translation>Nessun risultato</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Vuoi eseguire il comando?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Sei sicuro di voler eseguire il seguente comando?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Ricorda la mia scelta</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Ricaricamento automatico richieste</translation>
+ <source>File has changed</source>
+ <translation>Il file è stato modificato</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1177,10 @@ Vuoi aprilo comunque?</translation>
<translation>Richiesta di unione</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Il file del database è stato modificato e ci sono delle modifiche non salvate. Vuoi unire i tuoi cambiamenti?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Il file del database e&apos; stato cambiato e ci sono cambiamenti non salvati
+Vuoi fondere i cambiamenti?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -740,18 +1188,101 @@ Vuoi aprilo comunque?</translation>
</message>
<message>
<source>Empty recycle bin?</source>
- <translation>Vuoi svuotare il Cestino?</translation>
+ <translation>Svuotare il cestino?</translation>
</message>
<message>
<source>Are you sure you want to permanently delete everything from your recycle bin?</source>
- <translation>Sei sicuro di voler eliminare tutto definitivamente dal Cestino?</translation>
+ <translation>Sei sicuro di voler eliminare definitivamente tutto dal cestino?</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Generare un token TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Chiudi</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Generale</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Scadenza</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nome utente</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Completamento automatico</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Ricerca</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Attributi</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Allegati</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Note</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Finestra</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequenza</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Cerca</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Azzera</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Mai</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTETTO]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Disabilitato</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Abilitato</translation>
</message>
</context>
<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
- <translation>Elemento</translation>
+ <translation>Voce</translation>
</message>
<message>
<source>Advanced</source>
@@ -774,16 +1305,40 @@ Vuoi aprilo comunque?</translation>
<translation>Cronologia</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Agente SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(cifrato)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Seleziona chiave privata</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>File troppo grande per essere una chiave privata</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Impossibile aprire la chiave privata</translation>
+ </message>
+ <message>
<source>Entry history</source>
- <translation>Cronologia elemento</translation>
+ <translation>Cronologia voce</translation>
</message>
<message>
<source>Add entry</source>
- <translation>Aggiungi elemento</translation>
+ <translation>Aggiungi voce</translation>
</message>
<message>
<source>Edit entry</source>
- <translation>Modifica elemento</translation>
+ <translation>Modifica voce</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -794,22 +1349,20 @@ Vuoi aprilo comunque?</translation>
<translation>Nuovo attributo</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Seleziona file</translation>
+ <source>Confirm Remove</source>
+ <translation>Conferma eliminazione</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Impossibile aprire il file</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Sei sicuro di voler rimuovere questo attributo?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Salva allegato</translation>
+ <source>[PROTECTED]</source>
+ <translation>[PROTETTO]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Impossibile salvare l&apos;allegato:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Premere rivela per visualizzare o modificare</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1381,16 @@ Vuoi aprilo comunque?</translation>
<translation>Un anno</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Conferma eliminazione</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Sei sicuro di voler rimuovere questo attributo?</translation>
+ <source>Apply generated password?</source>
+ <translation>Applicare la password generata?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[PROTETTO] Seleziona &apos;Rileva&apos; per visualizzare o modificare</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Desideri applicare la password generata a questa voce?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Sei sicuro di voler rimuovere questo allegato?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Voce aggiornata correttamente.</translation>
</message>
</context>
<context>
@@ -859,18 +1408,6 @@ Vuoi aprilo comunque?</translation>
<translation>Rimuovi</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Allegati</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Salva</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Apri</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Modifica nome</translation>
</message>
@@ -882,24 +1419,24 @@ Vuoi aprilo comunque?</translation>
<source>Reveal</source>
<translation>Rivela</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Abilita completamento automatico per questo elemento</translation>
+ <source>Attachments</source>
+ <translation>Allegati</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Colore di primo piano:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Colore di sfondo:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Titolo finestra:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Abilita completamento automatico per questa voce</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1447,24 @@ Vuoi aprilo comunque?</translation>
<translation>&amp;Usa sequenza di compeltamento automatico personalizzata:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Usa se&amp;quenza predefinita</translation>
+ <source>Window Associations</source>
+ <translation>Associazioni finestra</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Imposta sequenza &amp;personalizzata:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Associazioni finestra</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Titolo finestra:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Usa una sequenza specifica per questa associazione:</translation>
</message>
</context>
<context>
@@ -944,12 +1489,8 @@ Vuoi aprilo comunque?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Titolo:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Nome utente:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1501,104 @@ Vuoi aprilo comunque?</translation>
<translation>Ripeti:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Titolo:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Scade</translation>
+ <source>Notes</source>
+ <translation>Note</translation>
</message>
<message>
<source>Presets</source>
<translation>Preimpostazioni</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Note:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Attivare o disattivare la casella di controllo per rivelare la sezione note.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nome utente:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Scade</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Rimuovi chiave dall&apos;agente dopo</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> secondi</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Impronta digitale</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Rimuovi chiave dall&apos;agente quando il database viene chiuso/bloccato</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Chiave pubblica</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Aggiungi chiave all&apos;agente quando il database viene aperto/sbloccato</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Commento</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Decifra</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copia negli appunti</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Chiave privata</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>File esterno</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Sfoglia...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Allegato</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Aggiungi all&apos;agente</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Rimuovi dall&apos;agente</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Richiesta conferma dell&apos;utente quando questa chiave è usata</translation>
</message>
</context>
<context>
@@ -1045,6 +1670,14 @@ Vuoi aprilo comunque?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Usa icona predefinita</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Usa &amp;icona personalizzata</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Aggiungi icona personalizzata</translation>
</message>
@@ -1053,6 +1686,18 @@ Vuoi aprilo comunque?</translation>
<translation>Rimuovi icona personalizzata</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Scarica favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Impossibile scaricare favicon.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Suggerimento: è possibile abilitare Google come alternativa in &apos;Strumenti&apos;&gt;&apos;Impostazioni&apos;&gt;&apos;Sicurezza&apos;</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Immagini</translation>
</message>
@@ -1065,24 +1710,12 @@ Vuoi aprilo comunque?</translation>
<translation>Seleziona immagine</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Scarica favicon</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Impossibile scaricare favicon.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Impossibile leggere l&apos;icona</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Usa icona predefinita</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Usa &amp;icona personalizzata</translation>
+ <source>Custom icon already exists</source>
+ <translation>L&apos;icona personalizzata esiste già</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1090,15 +1723,7 @@ Vuoi aprilo comunque?</translation>
</message>
<message>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
- <translation>Questa icona viene usata da %1 elementi, e sarà sostituita dall&apos;icona predefinita. Sei sicuro di volerla eliminare?</translation>
- </message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Suggerimento: è possibile abilitare Google come alternativa in &apos;Strumenti&apos;&gt;&apos;Impostazioni&apos;&gt;&apos;Sicurezza&apos;</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>L&apos;icona personalizzata esiste già</translation>
+ <translation>Questa icona viene usata da %1 voce, e sarà sostituita dall&apos;icona predefinita. Sei sicuro di volerla eliminare?</translation>
</message>
</context>
<context>
@@ -1119,15 +1744,130 @@ Vuoi aprilo comunque?</translation>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Dati del plugin</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Rimuovi</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Eliminare i dati del plugin?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Vuoi davvero eliminare i dati del plugin selezionato?
+Ciò potrebbe causare malfunzionamenti ai plugin interessati.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Chiave</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Valore</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - Clona</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nome</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Dimensione</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Aggiungi</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Rimuovi</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Apri</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Salva</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Seleziona file</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Sei sicuro di che voler rimuovere %n allegati?</numerusform><numerusform>Sei sicuro di voler rimuovere %n allegato(i)?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Conferma eliminazione</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Salva allegati</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Impossibile creare la directory:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Sei sicuro di sovrascrivere il file &quot;%1&quot; esistente con l&apos;allegato?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confermare la sovrascrittura</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Impossibile salvare l&apos;allegato:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Impossibile aprire l&apos;allegato:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Impossibile aprire gli allegati:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Impossibile aprire i file:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1896,11 @@ Vuoi aprilo comunque?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Rif.: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Gruppo</translation>
</message>
@@ -1172,9 +1917,67 @@ Vuoi aprilo comunque?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Rif.: </translation>
+ <source>Never</source>
+ <translation>Mai</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Note</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Scade</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Creazione</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Modifica</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Accesso</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Allegati</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Personalizza vista</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Nascondi nome utente</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Nascondi password</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Adatta alla finestra</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Adatta ai contenuti</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Ripristina valori predefiniti</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Allegati (icona)</translation>
</message>
</context>
<context>
@@ -1185,6 +1988,17 @@ Vuoi aprilo comunque?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: impossibile salvare il file.</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Impossibile salvare il file di script nativo di messaggistica.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2048,10 @@ Vuoi aprilo comunque?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Verifica che la password contenga caratteri di ogni gruppo</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII esteso</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2065,361 @@ Vuoi aprilo comunque?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossibile calcolare la chiave principale</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Non in grado dare la risposta di verifica.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Chiave errata o file del database danneggiato.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Non in grado dare la risposta di verifica.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossibile calcolare la chiave principale</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>intestazioni del database mancanti</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossibile calcolare la chiave principale</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Dimensione di checksum dell&apos;intestazione non valida</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Corrispondenza errata dell&apos;intestazione SHA256</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Chiave errata o file del database corrotto (HMAC non corrisponde)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Cifrario sconosciuto</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Dimensione dell&apos;id dell&apos;intestazione non valida</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Lunghezza del campo di intestazione non valida</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Lunghezza dei dati di intestazione non valida</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Fallimento dell&apos;apertura del buffer per i parametri KDF nell&apos;header</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Funzione di derivazione della chiave (KDF) non supportata o parametri non validi</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Sono stati trovati dei campi obsloleti nell&apos;header del file KDBX4</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Dimensione dell&apos;id dell&apos;intestazione interna non valida</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Lunghezza del campo di intestazione interna non valida</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Dimensione binaria dell&apos;intestazione interna non valida</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Variante di mappa KeePass non supportata.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il nome della voce per la mappa di variazione ha una lunghezza non valida </translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il nome della voce per la mappa di variazione presenta dati non validi</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il valore della voce per la mappa di variazione ha una lunghezza non valida </translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Il valore della voce per la mappa di variazione presenta dati non validi</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il valore della voce Bool per la mappa di variazione ha una lunghezza non valida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il valore della voce Int32 per la mappa di variazione ha una lunghezza non valida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il valore della voce UInt32 per la mappa di variazione ha una lunghezza non valida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il valore della voce Int64 per la mappa di variazione ha una lunghezza non valida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il valore della voce UInt64 per la mappa di variazione ha una lunghezza non valida</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Il tipo della voce per la mappa di variazione non è valido</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Dimensione non valida per il tipo di campo della mappa di variazione </translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Algoritmo di cifratura simmetrica non valido.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Dimensione non valida del vettore di inizializzazione dell&apos;algoritmo di cifratura simmetrica.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Impossibile calcolare la chiave principale</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Fallita serializzazione della mappa di variazione dei parametri per la funzione di derivazione della chiave di cifratura (KDF)</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Lunghezza non valida dell&apos;UUID del cifrario</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Cifrario non supportato</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Lunghezza dei flag di compressione non valida</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Algoritmo di compressione non supportato</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Dimensione del seme principale non valido</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Dimensione non valida del seme di trasformazione</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Dimensione non valida del numero di ripetizioni per la trasformazione</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Dimensione non valida del byte di inizio</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Dimensione non valida dell&apos;ID per il flusso di dati casuale</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Cifrario non valido per il flusso interno di dati casuale</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Non è un database KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Il file selezionato è un vecchio database di KeePass 1 (.kdb).
+
+È possibile importarlo facendo clic su &apos;Database&apos; &gt; &apos;Importa database KeePass 1...&apos;.
+Si tratta di una migrazione unidirezionale. Non sarà possibile aprire il database importato con la vecchia versione di KeePassX 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Versione di database KeePass 2 non supportata.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Errore nell&apos;analisi XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Nessun gruppo radice</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>UUID mancante per l&apos;icona o dati</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Chiave individuale o valore mancante</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Elementi appartenenti a gruppi diversi</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>UUID di gruppo nullo</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Numero di gruppo di icone non valido</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Valore di EnableAutoType non valido</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Valore EnableSearching non valido</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>UUID di gruppo non trovato</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>DeleteObject: UUID nullo</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>DeleteObject: UUID o marca temporale mancante</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>UUID nulla per la voce</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Numero non valido per l&apos;icona della voce</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Elemento della cronistoria nella voce della cronistoria</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Nessun UUID trovato per la voce</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Elemento della cronistoria con diverso UUID</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Impossibile decrittografare la stringa della voce</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Trovato attributo personalizzato duplicato</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Chiave alfanumerica o valore mancante per la voce</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Trovato allegato duplicato</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Chiave binaria o valore mancante per la voce</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Finestra associata al completamento automatico o sequenza mancante</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Valore booleano non valido</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Valore di data e tempo non valido</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Valore di colore non valido</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Colore RGB non valido</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Valore numerico non valido</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Valore non valido per UUID</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Impossibile decomprimere il binario</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2449,35 @@ Vuoi aprilo comunque?</translation>
<translation>Versione database KeePass non supportata.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Impossibile leggere il vettore di inizializzazione per la cifratura</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Numero di gruppi non valido</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Numero di voci non valido</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>DImensione dell&apos;hash non valida per questo contenuto</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Dimensione non valida del seme di trasformazione</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Numero di cicli di trasformazione non valido</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Impossibile costruire la struttura ad albero dei gruppi</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Radice</translation>
</message>
@@ -1287,143 +2489,159 @@ Vuoi aprilo comunque?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Chiave errata o file del database danneggiato.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Non è un database KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Trasformazione della chiave non riuscita</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Versione database KeePass non supportata.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Numero del tipo di gruppo non valido</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Chiave errata o file del database danneggiato.</translation>
+ <source>Invalid group field size</source>
+ <translation>Dimensione del campo di gruppo non valida</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossibile calcolare la chiave principale</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>I dati letti non coincidono con la dimensione del gruppo</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Non in grado dare la risposta di verifica.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Dimensione dell&apos;ID di gruppo non corretta</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Il file selezionato è un vecchio database di KeePass 1 (.kdb).
-
-È possibile importarlo facendo clic su &apos;Database&apos; &gt; &apos;Importa database KeePass 1...&apos;.
-Si tratta di una migrazione unidirezionale. Non sarà possibile aprire il database importato con la vecchia versione di KeePassX 0.4.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Dimensione della data di creazione del gruppo non corretta</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Non in grado dare la risposta di verifica.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Dimensione della data di modifica del gruppo non corretta</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossibile calcolare la chiave principale</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Dimensione della data di accesso del gruppo non corretta</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Errore fatale durante il test delle funzioni di crittografia.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Dimensione della data di scadenza del gruppo non corretta</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Errore</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Dimensione dell&apos;icona del gruppo non corretta</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Il file di blocco non può essere creato. La modalità di istanza singola è disattivata.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Dimensione del livello del gruppo non corretta</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>È già in esecuzione un&apos;altra istanza di KeePassXC.</translation>
+ <source>Invalid group field type</source>
+ <translation>Tipo di gruppo non corretto</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>Il file di blocco singola istanza non è valido. Esegui una nuova istanza.</translation>
+ <source>Missing group id or level</source>
+ <translation>ID di gruppo o livello mancante</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Apri database</translation>
+ <source>Missing entry field type number</source>
+ <translation>Numero mancante per il tipo della voce corrente</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Impostazioni database</translation>
+ <source>Invalid entry field size</source>
+ <translation>Dimensione del campo di immissione non valida</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Copia nome utente negli Appunti</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>I dati letti per la voce corrente non coincidono con la dimensione</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Copia password negli Appunti</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Dimensione dell&apos;UUID della voce corrente non valida</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Impostazioni</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Dimensione dell&apos;ID di gruppo della voce corrente non valida</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Visualizza barra strumenti</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Dimensione dell&apos;icona della voce corrente non valida</translation>
</message>
<message>
- <source>read-only</source>
- <translation>sola lettura</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Dimensione della data di creazione della voce corrente non valida</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Abilita/disabilita finestra</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Dimensione della data di modifica della voce corrente non valida</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Database KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Dimensione della data di scadenza della voce corrente non valida</translation>
</message>
<message>
- <source>All files</source>
- <translation>Tutti i file</translation>
+ <source>Invalid entry field type</source>
+ <translation>Tipo di dato non valido </translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Salva database riparato</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Il file di blocco singola istanza non è valido. Viene eseguita una nuova istanza.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Scrittura database fallita.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Il file di blocco non può essere creato. La modalità a istanza singola è disattivata.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>È già in esecuzione un&apos;altra istanza di KeePassXC.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Errore fatale durante il test delle funzioni di crittografia.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Errore</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Database</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Database recenti</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importazione</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Aiuto</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
- <translation>Eleme&amp;nti</translation>
+ <translation>&amp;Voci</translation>
</message>
<message>
<source>Copy att&amp;ribute to clipboard</source>
- <translation>Copia gli att&amp;ributi negli Appunti</translation>
+ <translation>Copia gli att&amp;ributi negli appunti</translation>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation>Password monouso a tempo</translation>
</message>
<message>
<source>&amp;Groups</source>
<translation>&amp;Gruppi</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Visualizza</translation>
+ <source>&amp;Tools</source>
+ <translation>S&amp;trumenti</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1434,6 +2652,10 @@ Si tratta di una migrazione unidirezionale. Non sarà possibile aprire il databa
<translation>&amp;Informazioni</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>Apri &amp;database...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Salva database</translation>
</message>
@@ -1451,15 +2673,15 @@ Si tratta di una migrazione unidirezionale. Non sarà possibile aprire il databa
</message>
<message>
<source>&amp;Add new entry</source>
- <translation>&amp;Aggiungi nuovo elemento</translation>
+ <translation>&amp;Aggiungi nuova voce</translation>
</message>
<message>
<source>&amp;View/Edit entry</source>
- <translation>&amp;Visualizza/modifica elemento</translation>
+ <translation>&amp;Visualizza/modifica voce</translation>
</message>
<message>
<source>&amp;Delete entry</source>
- <translation>&amp;Elimina elemento</translation>
+ <translation>&amp;Elimina voce</translation>
</message>
<message>
<source>&amp;Add new group</source>
@@ -1474,24 +2696,24 @@ Si tratta di una migrazione unidirezionale. Non sarà possibile aprire il databa
<translation>&amp;Elimina gruppo</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Impostazioni &amp;database</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Sal&amp;va database come...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Clona elemento</translation>
+ <source>Change &amp;master key...</source>
+ <translation>&amp;Modifica chiave principale...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Password monouso temporizzata</translation>
+ <source>&amp;Database settings</source>
+ <translation>Impostazioni &amp;database</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Copia &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Impostazioni database</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Visualizza TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Clona voce</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1502,14 +2724,26 @@ Si tratta di una migrazione unidirezionale. Non sarà possibile aprire il databa
<translation>Copia &amp;nome utente</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Copia nome utente negli appunti</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Copi&amp;a password</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Copia password negli appunti</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Impostazioni</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Genera password</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Esegui completamento automatico</translation>
</message>
@@ -1526,165 +2760,222 @@ Si tratta di una migrazione unidirezionale. Non sarà possibile aprire il databa
<translation>&amp;Titolo</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Copia titolo negli appunti</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Copia URL negli appunti</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Note</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Genera password</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Copia note negli appunti</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Azzera cronologia</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Esporta in file CSV...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Database</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importa database di KeePass 1...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importazione</translation>
+ <source>Import CSV file...</source>
+ <translation>Importa file CSV...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>S&amp;trumenti</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Ri&amp;para database...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Visualizza TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Imposta TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Copia &amp;TOTP</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Svuota il Cestino</translation>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Svuota il cesti&amp;no</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Azzera cronologia</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Errore di accesso per il file di configurazione %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Esci da KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Sembra che per l&apos;integrazione con il browser tu stia utilizzando KeePassHTTP. Questa funzionalità è dichiarata obsoleta e verrà rimossa in un prossimo futuro.&lt;br&gt;Si consiglia di utilizzare KeePassXC-Browser piuttosto! Se hai bisogno di aiuto per effettuare la migrazione, visita la nostra &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;guida alla migrazione&lt;/a&gt; (avviso %1 di 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Seleziona il pulsante nelal YubiKey!</translation>
+ <source>read-only</source>
+ <translation>sola lettura</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>&amp;Aiuto</translation>
+ <source>Settings</source>
+ <translation>Impostazioni</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>Apri &amp;database...</translation>
+ <source>Toggle window</source>
+ <translation>Abilita/disabilita finestra</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Sal&amp;va database come...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Esci da KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>&amp;Modifica chiave principale...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Database KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Esporta in file CSV...</translation>
+ <source>All files</source>
+ <translation>Tutti i file</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Importa database di KeePass 1...</translation>
+ <source>Open database</source>
+ <translation>Apri database</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importa file CSV...</translation>
+ <source>Save repaired database</source>
+ <translation>Salva database riparato</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Ri&amp;para database...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Scrittura database non riuscita.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Imposta TOTP...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Premi il pulsante della YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>ATTENZIONE: stai utilizzando una versione non stabile di KeePassXC!
+Vi è il rischio concreto di danneggiamenti ai database utilizzati, si consiglia di predisporre per una loro copia di sicurezza.
+Questa versione non è pensata per essere utilizzata in ambito di produzione.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Finestra</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>File di chiave non valido, era attesa una chiave OpenSSH</translation>
</message>
<message>
- <source>General</source>
- <translation>Generale</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>Mancata corrispondenza del marigne PEM</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>Visualizza una n&amp;otifica quando sono richeste le credenziali</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Decodifica base64 non riuscita</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Ordina elementi trovati per &amp;nome utente</translation>
+ <source>Key file way too small.</source>
+ <translation>File chiave decisamente troppo piccolo.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>R&amp;imuovi tutti i permessi presenti negli elementi nel database attivo</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>Id dell&apos;intestazione magica del file chiave non valido</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Avanzate</translation>
+ <source>Found zero keys</source>
+ <translation>Trovate zero chiavi</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Permetti sempre di &amp;accedere agli elementi</translation>
+ <source>Failed to read public key.</source>
+ <translation>Impossibile leggere la chiave privata.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Permetti sempre di &amp;aggiornare gli elementi</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>File della chiave rovinato, impossibile leggere la chiave privata</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Cerc&amp;a in tutti i database aperti gli elementi corrispondenti</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Nessuna chiave privata da decifrare nel contenuto</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Porta HTTP:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Tentativo di eseguire KDF senza crittografia</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Porta predefinita: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>La decifrazione di questa chiave richiede una frase segreta</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Ri&amp;chiedi di sbloccare il database se bloccato</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Derivazione della chiave non riuscita, file della chiave rovinato?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Ordina gli elementi per &amp;titolo</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Decifrazione non riuscita, frase segreta non corretta?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC rimarrà in ascolto su questa porta su 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>EOF imprevisto durante la lettura della chiave pubblica</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Non è stato possibile collegarsi ad una porta privilegiata</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>EOF imprevisto durante la lettura della chiave privata</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Non è possibile usare porte sotto la 1024!
-Usa la porta predefinita 19455.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Impossibile scrivere la chiave pubblica perché è vuota</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>R&amp;imuovi tutte le chiavi condivise di cifratura dal database attivo</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>EOF imprevisto durante la scrittura di chiave pubblica</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&amp;Seleziona i campi stringa avanzati che iniziano con &quot;KPH: &quot;</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Impossibile scrivere la chiave privata perché è vuota</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>La creazione o l&apos;aggiornamento automatico dei campi stringa non è supportato.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>EOF imprevisto durante la scrittura di una chiave privata</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Tipo di chiave non supportato: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Tipo di cifrario non supportato: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Il vettore di inizializzazione del cifrario è troppo corto per la derivazione della chiave crittografica tramite MD5</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>KDF sconosciuto: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Tipo di chiave sconosciuta: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Finestra</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1695,45 +2986,139 @@ Usa la porta predefinita 19455.</translation>
<translation>Atttiva il server KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Generale</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Visualizza una n&amp;otifica quando sono richeste le credenziali</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation>Restituisci solo le corrispondenze migliori per un&apos;URL specifica invece di tutte gli elementi per l&apos;intero dominio.</translation>
+ <translation>Restituisci solo le corrispondenze migliori per un&apos;URL specifica invece di tutte le voci per l&apos;intero dominio.</translation>
</message>
<message>
<source>&amp;Return only best matching entries</source>
- <translation>&amp;Restituisci solo gli elementi corrispondenti migliori</translation>
+ <translation>&amp;Restituisci solo le corrispondenti migliori</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Ri&amp;chiedi di sbloccare il database se bloccato</translation>
</message>
<message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
- <translation>Solo gli elementi con lo stesso schema (http://, https://, ftp: //, ...) vengono restituite.</translation>
+ <translation>Solo le voci con lo stesso schema (http://, https://, ftp: //, ...) vengono restituite.</translation>
</message>
<message>
<source>&amp;Match URL schemes</source>
- <translation>Sche&amp;ma corrispndenza URL</translation>
+ <translation>Corrispondenza sche&amp;mi URL</translation>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Ordina voci trovate per nome &amp;utente</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Ordina le voci per &amp;titolo</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>R&amp;imuovi tutte le chiavi condivise di cifratura dal database attivo</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>R&amp;imuovi tutti i permessi presenti nelle voci nel database attivo</translation>
</message>
<message>
<source>Password Generator</source>
<translation>Genera password</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Avanzate</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Permetti sempre di &amp;accedere alle voci</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Permetti sempre di &amp;aggiornare le voci</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Solo il database selezionato deve essere collegato con un client.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Le seguenti opzioni possono essere pericolose!
-Modificale solo se sai quello che stai facendo.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Cerc&amp;a in tutti i database aperti le voci corrispondenti</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>La creazione o l&apos;aggiornamento automatico dei campi stringa non è supportato.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Seleziona i campi stringa avanzati che iniziano con &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Porta HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Porta predefinita: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC rimarrà in ascolto su questa porta su 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Avviso:&lt;/b&gt; le seguenti opzioni possono essere pericolose.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP è dichiarato obsoleto e verrà rimosso in un prossimo futuro.&lt;br&gt;Si consiglia di utilizzare KeePassXC-Browser piuttosto! Se hai bisogno di aiuto per effettuare la migrazione, visita la nostra &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;guida alla migrazione&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Non è stato possibile collegarsi ad una porta privilegiata</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Non è possibile usare porte sotto la 1024!
+Viene usata la porta predefinita 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Password:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>affidabilità</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropia</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
<source>Character Types</source>
- <translation>Tipi carattere</translation>
+ <translation>Tipi di carattere</translation>
</message>
<message>
<source>Upper Case Letters</source>
@@ -1752,38 +3137,50 @@ Modificale solo se sai quello che stai facendo.</translation>
<translation>Caratteri speciali</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>ASCII esteso</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Escludi caratteri simili</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Accetta</translation>
+ <source>Pick characters from every group</source>
+ <translation>Seleziona caratteri da ogni gruppo</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Lunghezza:</translation>
</message>
<message>
- <source>strength</source>
- <translation>affidabilità</translation>
+ <source>Passphrase</source>
+ <translation>Frase segreta</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropia</translation>
+ <source>Wordlist:</source>
+ <translation>Elenco termini:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Lunghezza:</translation>
+ <source>Word Count:</source>
+ <translation>Conteggio parole:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Seleziona caratteri da ogni gruppo</translation>
+ <source>Word Separator:</source>
+ <translation>Separatore parole:</translation>
</message>
<message>
<source>Generate</source>
<translation>Genera</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Copia</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Accetta</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Chiudi</translation>
</message>
@@ -1801,51 +3198,276 @@ Modificale solo se sai quello che stai facendo.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Debole</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Intermedia</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Buona</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Eccellente</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Password</translation>
+ <source>Database not opened</source>
+ <translation>Database non aperto</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>ASCII esteso</translation>
+ <source>Database hash not available</source>
+ <translation>Hash del database non disponibile</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Frase accesso</translation>
+ <source>Client public key not received</source>
+ <translation>Chiave pubblica del client non ricevuta</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Elenco termini:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Impossibile decrittografare il messaggio</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Conteggio parole:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Tempo scaduto o impossibile collegarsi a KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Separatore parole:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Azione annullata o negata</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Copia</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Impossibile cifrare il messaggio o chiave pubblica non trovata. La messaggistica nativa è abilitata in KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>Associazione KeePassXC fallita, riprova</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Il cambiamento chiave non ha avuto successo</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Chiave di crittografia non riconosciuta</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Nessun database salvato trovato</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Azione non corretta</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Ricevuto un messaggio vuoto</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Nessun URL fornito</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Nessun login trovato</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Errore sconosciuto</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Aggiungi una nuova voce al database.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Percorso del database.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>File chiave del database.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>percorso</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Nome utente della voce.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>nome utente</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL della voce.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Richiedi la password della voce.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Genera una password per questa voce.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Lunghezza della password generata.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>lunghezza</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Percorso della voce da aggiungere.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Copia la password di una voce negli appunti.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Percorso della voce da tagliare.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Intervallo di tempo in secondi prima di ripulire gli appunti.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Modifica una voce.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Titolo di una voce.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>titolo</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Percorso della voce da modificare.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Stima l&apos;entropia di una password.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Password di cui stimare l&apos;entropia.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Esegui un&apos;analisi avanzata sulla password.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Estrai e stampa il contenuto di un database.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Percorso del database da estrarre.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Inserisci la password per sbloccare %1:</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Impossibile caricare il file chiave %1: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>ATTENZIONE: state utilizzando un formato di file della chiave obsoleto che potrebbe diventare
+non supportato in futuro.
+
+Per favore valutate la possibilita&apos; di generare un nuovo file della chiave</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Comandi disponibili:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Nome del comando da eseguire.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Elenco delle voci del database.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Percorso del gruppo da elencare. L&apos;impostazione predefinita è /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Cerca voci rapidamente.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Termine di ricerca.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Unisci due database.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Percorso del database destinazione da unire.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Percorso del database sorgente da unire.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Usa le stesse credenziali per entrambi i file di database.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>File chiave del database da unire</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Mostra la informazioni di una voce.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Numero di attributi da mostrare. Questa opzione può essere specificata più di una volta, con ogni attributo mostrato in una riga separata nell&apos;ordine dato. Se nessun attributo è specificato verrà dato un riassunto degli attributi predefiniti.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>attributo</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nome della voce da visualizzare.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>Periferica NULL</translation>
@@ -1869,8 +3491,28 @@ Modificale solo se sai quello che stai facendo.</translation>
<translation>virgoletta di chiusura mancante</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>INTERNO - limite unget inferiore superato</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256 bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256 bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256 bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – raccomandato)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1889,20 +3531,28 @@ Modificale solo se sai quello che stai facendo.</translation>
<translation>Password</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Note</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Ultima modifica</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Creazione</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Integrazione del browser legacy</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Integrazione con i browser</translation>
</message>
<message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
- <translation>YubiKey [%1] risposta di verifica - slot %2 - %3</translation>
+ <translation>Risposta di verifica da YubiKey[%1] - slot %2 - %3</translation>
</message>
<message>
<source>Press</source>
@@ -1912,6 +3562,56 @@ Modificale solo se sai quello che stai facendo.</translation>
<source>Passive</source>
<translation>Passiva</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agente SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Genera una nuova passphrase casuale simulando un lancio di dadi.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Numero di parole per la passphrase con lancio dei dadi</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>conteggio</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Lista di parole per il generatore con lancio di dadi.
+[Predefinito: inglese EFF]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Genera una nuova password casuale.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Lunghezza della password generata.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Includi lettere minuscole nella password generata.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Includi lettere maiuscole nella password generata.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Includi numeri nella password generata.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Includi caratteri speciali nella password generata.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Includi caratteri ASCII estesi nella password generata.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1925,7 +3625,7 @@ Modificale solo se sai quello che stai facendo.</translation>
</message>
<message>
<source>Error opening underlying device: </source>
- <translation>Errore durante l&apos;apertura dal dispositivo: </translation>
+ <translation>Errore durante l&apos;apertura del dispositivo: </translation>
</message>
<message>
<source>Error reading data from underlying device: </source>
@@ -1950,8 +3650,8 @@ Modificale solo se sai quello che stai facendo.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Sensibile maiuscole/minuscole</translation>
+ <source>Search...</source>
+ <translation>Ricerca...</translation>
</message>
<message>
<source>Search</source>
@@ -1962,8 +3662,8 @@ Modificale solo se sai quello che stai facendo.</translation>
<translation>Azzera</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Ricerca...</translation>
+ <source>Case Sensitive</source>
+ <translation>Distingui maiuscole</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1973,92 +3673,92 @@ Modificale solo se sai quello che stai facendo.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Una chiave di criptazione condivisa con il nome &quot;%1&quot; esiste già.
-Vuoi sovrascriverla?</translation>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: nuova richiesta di associazione chiave</translation>
</message>
<message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Vuoi aggiornare le informazioni in %1 - %2?</translation>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation>Hai ricevuto una richiesta di associazione per la chiave sovrastante.
+Se vuoi permetterle di accedere al database KeePassXC
+imposta un nome unico per identificarla ed accettarla.</translation>
</message>
<message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>Il database attivo è bloccato!
-Sblocca il database selezionato o scegli un altro database sbloccato.</translation>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Vuoi sovrascrivere la chiave esistente?</translation>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Rimosso correttamente %1 encryption-%2 dalle impostazioni KeePassX/Http.</translation>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Una chiave di cifratura condivisa con il nome &quot;%1&quot; esiste già.
+Vuoi sovrascriverla?</translation>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Nessuna chiave di criptazione condivisa è stata trovata nelle impostazioni di KeePassHttp.</translation>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: aggiorna voce</translation>
</message>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Il database attivo non contiene nessun elemento delle impostazioni di KeePassHttp.</translation>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Vuoi aggiornare le informazioni in %1 - %2?</translation>
</message>
<message>
- <source>Removing stored permissions...</source>
- <translation>Rimozione dei permessi salvati...</translation>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: database bloccato!</translation>
</message>
<message>
- <source>Abort</source>
- <translation>Annulla</translation>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Il database attivo è bloccato!
+Sblocca il database selezionato o scegline un altro che sia sbloccato.</translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Permessi rimossi correttamente da %1 %2.</translation>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: chiavi rimosse dal database</translation>
</message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>Il database attivo non contiene un elemento con permessi.</translation>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Rimossa con successo %n chiave di cifratura dalle impostazioni di KeePassX/Http.</numerusform><numerusform>Rimossa(e) con successo %n chiave(i) di cifratura dalle impostazioni di KeePassX/Http.</numerusform></translation>
</message>
<message>
- <source>KeePassXC: New key association request</source>
- <translation>KeePassXC: Nuova richiesta di associazione chiave</translation>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: nessuna chiave trovata</translation>
</message>
<message>
- <source>You have received an association request for the above key.
-If you would like to allow it access to your KeePassXC database
-give it a unique name to identify and accept it.</source>
- <translation>Hai ricevuto una richiesta di associazione per la chiave sovrastante.
-Se vuoi permetterle di accedere al database KeePassXC
-imposta un nome unico per identificarla ed accettarla.</translation>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Nessun chiave condivisa di cifratura è stata trovata nelle impostazioni di KeePassHttp.</translation>
</message>
<message>
- <source>KeePassXC: Overwrite existing key?</source>
- <translation>KeePassXC- Vuoi sovrascrivere la chiave esistente?</translation>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: impostazioni non disponibili!</translation>
</message>
<message>
- <source>KeePassXC: Update Entry</source>
- <translation>KeePassXC- Aggiorna elemento</translation>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Il database attivo non contiene nessun voce delle impostazioni di KeePassHttp.</translation>
</message>
<message>
- <source>KeePassXC: Database locked!</source>
- <translation>KeePassXC- Database bloccato!</translation>
+ <source>Removing stored permissions...</source>
+ <translation>Rimozione dei permessi salvati...</translation>
</message>
<message>
- <source>KeePassXC: Removed keys from database</source>
- <translation>KeePassXC - Chiavi rimosse dal database</translation>
+ <source>Abort</source>
+ <translation>Interrompi</translation>
</message>
<message>
- <source>KeePassXC: No keys found</source>
- <translation>KeePassXC - Nessuna chiave trovata</translation>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: permessi rimossi</translation>
</message>
- <message>
- <source>KeePassXC: Settings not available!</source>
- <translation>KeePassXC - Impostazioni non disponibili!</translation>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Permessi rimossi con successo da %n voce.</numerusform><numerusform>Permessi rimossi con successo da %n voci.</numerusform></translation>
</message>
<message>
- <source>KeePassXC: Removed permissions</source>
- <translation>KeePassXC - Permessi rimossi</translation>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: nessuna voce con permessi trovata!</translation>
</message>
<message>
- <source>KeePassXC: No entry with permissions found!</source>
- <translation>KeePassXC - Nessun elemento con permessi trovata!</translation>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Il database attivo non contiene una voce con permessi.</translation>
</message>
</context>
<context>
@@ -2083,10 +3783,26 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Impostazioni di base</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Avvia una sola istanza di KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Ricorda ultimo database</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Ricorda gli ultimi file chiave e dongle di sicurezza</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Carica i database precedenti all&apos;avvio</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Salva automaticamente all&apos;uscita</translation>
</message>
@@ -2095,20 +3811,28 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<translation>Salva automaticamente dopo ogni modifica</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Ricarica automaticamente il database quando ci sono modifiche esterne</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
- <translation>Minimizza quando si copia negli Appunti</translation>
+ <translation>Minimizza quando si copia negli appunti</translation>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimizza la finestra all&apos;avvio della applicazione</translation>
</message>
<message>
<source>Use group icon on entry creation</source>
- <translation>Usa icona del gruppo alla creazione di un elemento</translation>
+ <translation>Usa icona del gruppo alla creazione di una voce</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Scorciatoia completamento automatico globale</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Non contrassegnare il database come modificato per modifiche non riguardanti i dati (ad es. espansione dei gruppi)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Lingua</translation>
+ <source>Hide the Details view</source>
+ <translation>Nascondere la vista dei dettagli</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2119,66 +3843,84 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<translation>Nascondi la finestra nell&apos;area di notifica del sistema quando viene minimizzata</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>All&apos;avvio carica i database precedenti</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Ricarica automaticamente il database quando ci sono modifiche esterne</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Nascondi la finestra nella barra di sistema invece di chiudere l&apos;applicazione</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Minimizza la finestra all&apos;avvio della applicazione</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Impostazioni di base</translation>
+ <source>Dark system tray icon</source>
+ <translation>Icona scura per l&apos;area di notifica di sistema</translation>
</message>
<message>
- <source>Remember last key files and security dongles</source>
- <translation>Ricorda gli ultimi file chiave e dongle di sicurezza</translation>
- </message>
- <message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Non contrassegnare il database come modificato per modifiche non riguardanti i dati (ad es. espansione dei gruppi)</translation>
+ <source>Language</source>
+ <translation>Lingua</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Completamento automatico</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Usa il titolo dell&apos;elemento e l&apos;URL per abbinare le finestre per il completamento automatico globale</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Usa il titolo della voce per la corrispondenza con le finestre per il completamento automatico globale</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Usa URL della voce per la corrispondenza con le finestre per il completamento automatico globale</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Chiedi sempre prima di effettuare il completamento automatico</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Scorciatoia globale per l&apos;auto-completamento</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Ritardo completamento automatico</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Avvia una sola istanza di KeePassXC</translation>
+ <source>Startup</source>
+ <translation>Avvio</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Gestione dei file</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Salvataggio sicuro dei file di database (potrebbe essere incompatibile con Dropbox, ecc)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Effettua una copia di sicurezza del database prima di salvarlo</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Gestione dell&apos;elemento</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Generale</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Timeout</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
- <translation>Svuota Appunti dopo</translation>
+ <translation>Svuota gli appunti dopo</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> sec</translation>
</message>
<message>
@@ -2186,8 +3928,12 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<translation>Blocca i database dopo un&apos;inattività di</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Visualizza la password in chiaro in maniera predefinita</translation>
+ <source>Convenience</source>
+ <translation>Comodità</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Blocca i database quando la sessione è bloccata o il coperchio è chiuso</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2198,25 +3944,29 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<translation>Non richiedere di ripetere la password quando è visibile</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Timeout</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Visualizza la password in chiaro in maniera predefinita</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Comodità</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Nascondere le password nel pannello di anteprima</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Blocca i database quando la sessione è bloccata o il coperchio è chiuso</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Nascondere le note della voce per impostazione predefinita</translation>
</message>
<message>
<source>Privacy</source>
- <translation>Privacy</translation>
+ <translation>Riservatezza</translation>
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
<translation>Usa Google come alternativa per scaricare le icone dal sito web</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Blocca nuovamente un database precedentemente bloccato dopo aver completato l&apos;Auto-Type</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2229,6 +3979,14 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<translation>Chiave:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Impostazioni predefinite per il token RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Impostazioni del token di vapore</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Usa le impostazioni personalizzate</translation>
</message>
@@ -2254,6 +4012,7 @@ imposta un nome unico per identificarla ed accettarla.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> sec</translation>
</message>
</context>
@@ -2290,10 +4049,6 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Benvenuto in KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Inizia ad archiviare le tue password in modo sicuro in un database di KeePassXC</translation>
</message>
@@ -2317,92 +4072,48 @@ imposta un nome unico per identificarla ed accettarla.</translation>
<source>Recent databases</source>
<translation>Database recenti</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Benvenuto in KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>percorso ad un file di configurazione personalizzato</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>file chiave del database</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - Gestore password multipiattaforma</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>leggi la password del database da stdin</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>i nomi dei file dei database delle password da aprire (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Copia una password negli Appunti</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Rimuovi una voce dal database.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Percorso del database.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Usa una richiesta grafica per lo sblocco del database.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Nome dell&apos;elemento da tagliare.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Percorso della voce da rimuovere.</translation>
</message>
<message>
- <source>Extract and print the content of a database.</source>
- <translation>Estrai e stampa il contenuto di un database.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Percorso del database da estrarre.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Nome del comando da eseguire.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Elenco degli elementi del database.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Percorso del gruppo da elencare. L&apos;impostazione predefinita è /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Stampa gli UUID degli elementi e dei gruppi.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Unisci due database.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - gestore di password multipiattaforma</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Percorso del database destinazione da unire.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>i nomi dei file di database delle password da aprire (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Percorso del database sorgente da unire.</translation>
+ <source>path to a custom config file</source>
+ <translation>percorso ad un file di configurazione personalizzato</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Usa la stessa password per entrambi i file dei database.</translation>
+ <source>key file of the database</source>
+ <translation>file chiave del database</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Visualizza una password.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>leggi la password del database da stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Nome dell&apos;elemento da visualizzare.</translation>
+ <source>Parent window handle</source>
+ <translation>Riferimento alla finestra padre</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_ja.ts b/share/translations/keepassx_ja.ts
index dd349640f..1a3c9317f 100644
--- a/share/translations/keepassx_ja.ts
+++ b/share/translations/keepassx_ja.ts
@@ -10,14 +10,30 @@
<translation>ã“ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã«ã¤ã„ã¦</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>ãƒã‚°å ±å‘Šå…ˆ: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC 㯠GNU General Public License (GPL) version 2 ã¾ãŸã¯ version 3 (ã©ã¡ã‚‰ã‹ã‚’é¸æŠž) ã®æ¡ä»¶ã§é…布ã•ã‚Œã¾ã™ã€‚</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>貢献者</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;GitHub ã§è²¢çŒ®ã‚’確èªã™ã‚‹&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>デãƒãƒƒã‚°æƒ…å ±</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>ãƒã‚°ã‚’報告ã™ã‚‹éš›ã«ä¸‹è¨˜ã®æƒ…報をå«ã‚ã¦ãã ã•ã„:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>クリップボードã«ã‚³ãƒ”ー</translation>
</message>
@@ -32,6 +48,10 @@
<translation>リビジョン: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>é…布形å¼: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>ライブラリ:</translation>
</message>
@@ -40,7 +60,7 @@
CPU architecture: %2
Kernel: %3 %4</source>
<translation>オペレーティングシステム: %1
-CPU アーキテクãƒãƒ£: %2
+CPU アーキテクãƒãƒ£ãƒ¼: %2
カーãƒãƒ«: %3 %4</translation>
</message>
<message>
@@ -48,33 +68,27 @@ CPU アーキテクãƒãƒ£: %2
<translation>有効化ã•ã‚ŒãŸæ‹¡å¼µæ©Ÿèƒ½:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>ãƒã‚°å ±å‘Šå…ˆ: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC 㯠GNU General Public License (GPL) version 2 ã¾ãŸã¯ version 3 (ã©ã¡ã‚‰ã‹ã‚’é¸æŠž)ã®æ¡ä»¶ã§é…布ã•ã‚Œã¾ã™ã€‚</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>プロジェクトメンテナ:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;GitHub ã§è²¢çŒ®ã‚’確èªã™ã‚‹&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>ãƒã‚°ã‚’報告ã™ã‚‹éš›ã«ä¸‹è¨˜ã®æƒ…報をå«ã‚ã¦ãã ã•ã„:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>KeePassXC ãƒãƒ¼ãƒ ã¯ã‚ªãƒªã‚¸ãƒŠãƒ«ã® KeePassX を作æˆã—㟠debfx ã«å¿ƒã‹ã‚‰æ„Ÿè¬ã—ã¾ã™ã€‚</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>é…布形å¼: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>ビルド形å¼: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP アクセス確èª</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>ã“ã®æ±ºå®šã‚’記憶ã™ã‚‹</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 ãŒä»¥ä¸‹ã®é …ç›®ã®ãƒ‘スワードã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’è¦æ±‚ã—ã¾ã—ãŸã€‚
アクセスを許å¯ã™ã‚‹ã‹ã©ã†ã‹ã‚’é¸æŠžã—ã¦ãã ã•ã„。</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP アクセス確èª</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>SSH エージェントを有効ã«ã™ã‚‹ (å†èµ·å‹•ãŒå¿…è¦)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation>自動入力 - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>自動入力</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>自動入力ステートメントã®æ§‹æ–‡ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>ã“ã®è‡ªå‹•å…¥åŠ›ã‚³ãƒžãƒ³ãƒ‰ã¯éžå¸¸ã«é•·ã„é…延をå«ã¿ã¾ã™ã€‚本当ã«ç¶šè¡Œã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>ã“ã®è‡ªå‹•å…¥åŠ›ã‚³ãƒžãƒ³ãƒ‰ã¯éžå¸¸ã«é…ã„キー押下をå«ã¿ã¾ã™ã€‚本当ã«ç¶šè¡Œã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>ã“ã®è‡ªå‹•å…¥åŠ›ã‚³ãƒžãƒ³ãƒ‰ã¯ä½•åº¦ã‚‚ç¹°ã‚Šè¿”ã•ã‚Œã¦ã„る引数ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚本当ã«ç¶šè¡Œã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>グループ</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>タイトル</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ユーザーå</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>シーケンス</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>自動入力 - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>自動入力ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>自動入力 - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser アクセス確èª</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>ã“ã®æ±ºå®šã‚’記憶ã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>許å¯</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>æ‹’å¦</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 ãŒä»¥ä¸‹ã®é …ç›®ã®ãƒ‘スワードã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’è¦æ±‚ã—ã¾ã—ãŸã€‚
+アクセスを許å¯ã™ã‚‹ã‹ã©ã†ã‹ã‚’é¸æŠžã—ã¦ãã ã•ã„。</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>ダイアログ</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>ã“ã®ã‚ªãƒ—ション㯠KeePassXC-Browser ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«å¿…è¦ã§ã™</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>KeepassXC ã®ãƒ–ラウザー統åˆã‚’有効ã«ã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>ã“れらã®ãƒ–ラウザーã®çµ±åˆã‚’有効ã«ã™ã‚‹:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>Google Chrome(&amp;G)</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>Firefox(&amp;F)</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>Chromium(&amp;C)</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>Vivaldi(&amp;V)</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>クレデンシャルをè¦æ±‚ã•ã‚ŒãŸéš›ã«é€šçŸ¥ã‚’表示ã™ã‚‹(&amp;N)</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>データベースãŒãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ãƒ­ãƒƒã‚¯ã®è§£é™¤ã‚’è¦æ±‚ã™ã‚‹(&amp;Q)</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>åŒã˜ã‚¹ã‚­ãƒ¼ãƒ  (http://, https://, ...) ã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã¿ãŒè¿”ã•ã‚Œã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>URL スキーム (例ãˆã° https://...) ã®ãƒžãƒƒãƒ(&amp;M)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>ドメイン全体ã«ãƒžãƒƒãƒã™ã‚‹å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ä»£ã‚ã‚Šã«ã€ç‰¹å®šã® URL ã«æœ€ã‚‚マッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã¿ãŒè¿”ã•ã‚Œã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>最もマッãƒã™ã‚‹ã‚¯ãƒ¬ãƒ‡ãƒ³ã‚·ãƒ£ãƒ«ã®ã¿ã‚’è¿”ã™(&amp;R)</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>マッãƒã™ã‚‹ã‚¯ãƒ¬ãƒ‡ãƒ³ã‚·ãƒ£ãƒ«ã‚’タイトルã§ä¸¦ã¹æ›¿ãˆã‚‹(&amp;M)</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>マッãƒã™ã‚‹ã‚¯ãƒ¬ãƒ‡ãƒ³ã‚·ãƒ£ãƒ«ã‚’ユーザーåã§ä¸¦ã¹æ›¿ãˆã‚‹(&amp;U)</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>å…¨ã¦ã®ãƒ–ラウザーã®æŽ¥ç¶šã‚’æ–­ã¤(&amp;D)</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>記憶ã•ã‚ŒãŸå…¨ã¦ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’破棄ã™ã‚‹(&amp;P)</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>詳細設定</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>クレデンシャルã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‰ã«ç¢ºèªã—ãªã„(&amp;A)</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>クレデンシャルを更新ã™ã‚‹å‰ã«ç¢ºèªã—ãªã„(&amp;U)</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>é¸æŠžã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã¿ãŒã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¨æŽ¥ç¶šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>å…¨ã¦ã®é–‹ã‹ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ãƒžãƒƒãƒã™ã‚‹ã‚¯ãƒ¬ãƒ‡ãƒ³ã‚·ãƒ£ãƒ«ã‚’検索ã™ã‚‹(&amp;H)</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>文字列フィールドã®è‡ªå‹•ä½œæˆã‚„自動更新ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot; ã‹ã‚‰å§‹ã¾ã‚‹æ‹¡å¼µã•ã‚ŒãŸæ–‡å­—列フィールドを返ã™(&amp;R)</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>起動時ã«ã€KeePassXC ã¾ãŸã¯ keepassxc-proxy ã®ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ‘スを自動的㫠Native messaging スクリプトã«æ›´æ–°ã—ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>起動時㫠Native messaging ã®ãƒžãƒ‹ãƒ•ã‚§ã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ›´æ–°ã™ã‚‹(&amp;N)</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>KeePassXC ã¨ãƒ–ラウザーã®æ‹¡å¼µæ©Ÿèƒ½ã¨ã®é–“ã§ãƒ—ロキシアプリケーションをサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>KeePassXC ã¨ãƒ–ラウザーã®æ‹¡å¼µæ©Ÿèƒ½ã¨ã®é–“ã§ãƒ—ロキシアプリケーションを使用ã™ã‚‹(&amp;P)</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>手動ã§ãƒ—ロキシをインストールã—ãŸå ´åˆã¯ã€ã‚«ã‚¹ã‚¿ãƒ ãƒ—ロキシを使用ã—ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>カスタムプロキシを使用ã™ã‚‹(&amp;C)</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>å‚ç…§...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;警告:&lt;/b&gt; 以下ã¯å±é™ºãªã‚ªãƒ—ションã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>実行ファイル (*.exe);;å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ« (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>実行ファイル (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>カスタムプロキシをé¸æŠžã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€ä»Šã®æ‰€ KeePassXC-Browser 㯠Snap リリースã§ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: æ–°ã—ã„キーã®ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³è¦æ±‚</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>ä»–ã®ã‚¢ãƒ—リケーションã‹ã‚‰ã®ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³è¦æ±‚ã‚’å—ã‘å–ã‚Šã¾ã—ãŸã€‚
+
+KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
+è¦æ±‚元を識別ã—ã¦å—ã‘入れるãŸã‚ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªåå‰ã‚’付ã‘ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>アクセスを許å¯ã—ã¦ä¿å­˜</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: 既存ã®ã‚­ãƒ¼ã‚’上書ãã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>共有暗å·åŒ–キー &quot;%1&quot; ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚
+上書ãã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: エントリーを更新</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>%1 - %2 ã®æƒ…報を更新ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: データベースã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚
+é¸æŠžã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ­ãƒƒã‚¯ã‚’解除ã™ã‚‹ã‹ã€åˆ¥ã®ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ãªã„データベースをé¸æŠžã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: 設定ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«è¨­å®šã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: キーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>KeePassXC ã®è¨­å®šå†…ã«å…±æœ‰æš—å·åŒ–キーã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: データベースã‹ã‚‰ã‚­ãƒ¼ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>KeePassXC ã®è¨­å®šã‹ã‚‰ %n 個ã®æš—å·åŒ–キーãŒæ­£å¸¸ã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>ä¿å­˜ã•ã‚ŒãŸã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’削除ã—ã¦ã„ã¾ã™â€¦</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>中止</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: アクセス許å¯ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>%n 個ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒæ­£å¸¸ã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: アクセス許å¯ãŒã‚るエントリーã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã¯ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒã‚るエントリーã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Please select whether you want to allow access.</source>
<translation>パスワードをå†å…¥åŠ›:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>キーファイル(&amp;K)</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>å‚ç…§</translation>
</message>
@@ -157,6 +502,14 @@ Please select whether you want to allow access.</source>
<translation>作æˆ</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹(&amp;L)</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>å†èª­ã¿è¾¼ã¿</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>キーファイル</translation>
</message>
@@ -170,13 +523,17 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Unable to create Key File : </source>
- <translation>キーファイルを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ:</translation>
+ <translation>キーファイルを作æˆã§ãã¾ã›ã‚“: </translation>
</message>
<message>
<source>Select a key file</source>
<translation>キーファイルをé¸æŠž</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>空パスワード</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>本当ã«ãƒ‘スワードã¨ã—ã¦ç©ºã®æ–‡å­—列を使用ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
@@ -191,20 +548,18 @@ Please select whether you want to allow access.</source>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>キーファイル(&amp;K)</translation>
+ <source>Legacy key file format</source>
+ <translation>レガシーãªã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼</translation>
</message>
<message>
- <source>Cha&amp;llenge Response</source>
- <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹(&amp;L)</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>å†èª­ã¿è¾¼ã¿</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>空パスワード</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>レガシーãªã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã¯ã€å°†æ¥çš„ã«ã€
+サãƒãƒ¼ãƒˆã•ã‚Œãªããªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
+
+æ–°ã—ã„キーファイルã®ç”Ÿæˆã‚’検討ã—ã¦ãã ã•ã„。</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +573,10 @@ Please select whether you want to allow access.</source>
<translation>複製ã®ã‚ªãƒ—ション</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>タイトル㫠&apos; - 複製&apos; を追加</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>ユーザーåã¨ãƒ‘スワードをå‚ç…§ã§ç½®ãæ›ãˆã‚‹</translation>
</message>
@@ -225,10 +584,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>履歴をコピー</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>タイトル㫠&apos; - 複製&apos; を追加</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +681,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>CSV ファイルをインãƒãƒ¼ãƒˆ</translation>
- </message>
- <message>
<source>Error</source>
<translation>エラー</translation>
</message>
@@ -340,17 +691,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>ãƒã‚¤ãƒˆã€</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n ãƒã‚¤ãƒˆã€</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>è¡Œã€</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n è¡Œã€</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>列</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n 列</numerusform></translation>
</message>
</context>
<context>
@@ -372,14 +723,40 @@ Please select whether you want to allow access.</source>
<translation>å‚ç…§</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>å†èª­ã¿è¾¼ã¿</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
- <translation>データベースを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ <translation>データベースを開ã‘ã¾ã›ã‚“。</translation>
</message>
<message>
<source>Can&apos;t open key file</source>
<translation>キーファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>レガシーãªã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>レガシーãªã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã¯ã€å°†æ¥çš„ã«ã€
+サãƒãƒ¼ãƒˆã•ã‚Œãªããªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
+
+æ–°ã—ã„キーファイルã®ç”Ÿæˆã‚’検討ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>今後ã“ã®è­¦å‘Šã‚’表示ã—ãªã„</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«</translation>
</message>
@@ -391,14 +768,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>キーファイルをé¸æŠž</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>å†èª­ã¿è¾¼ã¿</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,12 +784,12 @@ Please select whether you want to allow access.</source>
<translation>キーファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>データベースã¯æ­£å¸¸ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚è¡Œã†ã¹ãã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
+ <source>Unable to open the database.</source>
+ <translation>データベースを開ã‘ã¾ã›ã‚“。</translation>
</message>
<message>
- <source>Unable to open the database.</source>
- <translation>データベースを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>データベースã¯æ­£å¸¸ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚è¡Œã†ã¹ãã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
</message>
<message>
<source>Success</source>
@@ -434,34 +803,128 @@ You can now save it.</source>
</message>
<message>
<source>Unable to repair the database.</source>
- <translation>データベースを修復ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ <translation>データベースを修復ã§ãã¾ã›ã‚“。</translation>
</message>
</context>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>データベースå:</translation>
+ <source>General</source>
+ <translation>一般</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>データベースã®æ¦‚è¦:</translation>
+ <source>Encryption</source>
+ <translation>æš—å·åŒ–</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>ラウンド数ãŒå¤§ãã™ãŽã¾ã™</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Argon2 ã®ã‚­ãƒ¼å¤‰æ›ãƒ©ã‚¦ãƒ³ãƒ‰æ•°ã«éžå¸¸ã«å¤§ããªå€¤ã‚’使用ã—ã¦ã„ã¾ã™ã€‚
+
+ã“ã®å€¤ã‚’維æŒã™ã‚‹ã¨ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’é–‹ãã®ã«æ•°æ™‚é–“ã¾ãŸã¯æ•°æ—¥ (ã‚‚ã—ãã¯ãれ以上) ã‹ã‹ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>ç†è§£ã—ãŸä¸Šã§å€¤ã‚’維æŒã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>ラウンド数ãŒå°ã•ã™ãŽã¾ã™</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>AES-KDF ã®ã‚­ãƒ¼å¤‰æ›ãƒ©ã‚¦ãƒ³ãƒ‰æ•°ã«éžå¸¸ã«å°ã•ãªå€¤ã‚’使用ã—ã¦ã„ã¾ã™ã€‚
+
+ã“ã®å€¤ã‚’維æŒã™ã‚‹ã¨ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒç°¡å˜ã«ã‚¯ãƒ©ãƒƒã‚¯ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>æ–°ã—ã„ KDF ã®ãƒ‘ラメーターã§ã®ã‚­ãƒ¼å¤‰æ›ã«å¤±æ•—ã—ã¾ã—ãŸã€‚KDF ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform>MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform> スレッド</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>æš—å·åŒ–アルゴリズム:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 ビット (既定)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 ビット</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>éµå°Žå‡ºé–¢æ•°:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>変æ›å›žæ•°:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>デフォルトã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>ベンãƒãƒžãƒ¼ã‚¯ 1秒é…延</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>メモリ使用é‡:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>並列処ç†:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>データベースã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>データベースå:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>データベースã®æ¦‚è¦:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>デフォルトã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>ベンãƒãƒžãƒ¼ã‚¯</translation>
+ <source>History Settings</source>
+ <translation>履歴ã®è¨­å®š</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +935,27 @@ You can now save it.</source>
<translation>最大履歴データサイズ:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>ゴミ箱を使用ã™ã‚‹</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 ビット (既定)</translation>
+ <source>Use recycle bin</source>
+ <translation>ゴミ箱を使用ã™ã‚‹</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 ビット</translation>
+ <source>Additional Database Settings</source>
+ <translation>追加ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹è¨­å®š</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>アルゴリズム:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>圧縮を有効ã«ã™ã‚‹ (推奨)(&amp;C)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>ルート</translation>
</message>
<message>
@@ -511,22 +975,48 @@ You can now save it.</source>
<translation>ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>KeePass 1 データベースを開ã</translation>
+ <source>Unable to open the database.</source>
+ <translation>データベースを開ã‘ã¾ã›ã‚“。</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 データベース</translation>
+ <source>File opened in read only mode.</source>
+ <translation>読ã¿å–り専用ã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ãã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>CSV ファイルを開ã</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV ファイル</translation>
</message>
<message>
<source>All files (*)</source>
<translation>å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ« (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>データベースをマージã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>KeePass 1 データベースを開ã</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 データベース</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>é–‰ã˜ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; ã¯ç¾åœ¨ç·¨é›†ãƒ¢ãƒ¼ãƒ‰ã§ã™ã€‚
+変更を破棄ã—ã¦é–‰ã˜ã¦ã—ã¾ã£ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>変更をä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
@@ -538,13 +1028,25 @@ Save changes?</source>
</message>
<message>
<source>Writing the database failed.</source>
- <translation>データベースãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ <translation>データベースã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>パスワード</translation>
</message>
<message>
<source>Save database as</source>
<translation>データベースを別åã§ä¿å­˜</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>データベースを CSV ファイルã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>CSV ファイルã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>æ–°ã—ã„データベース</translation>
</message>
@@ -563,12 +1065,6 @@ Please press cancel to finish your changes or discard them.</source>
キャンセルボタンを押ã—ã€å¤‰æ›´ã‚’完了ã•ã›ã‚‹ã‹ç ´æ£„ã—ã¦ãã ã•ã„。</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¯ä¸€åº¦ã‚‚ä¿å­˜ã•ã‚Œã¦ã„ã¾ã›ã‚“。
-データベースをä¿å­˜ã—ã¦ãƒ­ãƒƒã‚¯ã‚’解除ã—ã¦ãã ã•ã„。</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,68 +1073,23 @@ Otherwise your changes are lost.</source>
ä¿å­˜ã—ãªã„å ´åˆã«ã¯å¤‰æ›´ç‚¹ã¯å¤±ã‚ã‚Œã¾ã™ã€‚</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; ã¯ç¾åœ¨ç·¨é›†ãƒ¢ãƒ¼ãƒ‰ã§ã™ã€‚
-変更を破棄ã—ã¦é–‰ã˜ã¦ã—ã¾ã£ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>データベースを CSV ファイルã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã™ã‚‹</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV ファイル</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>CSV ファイルã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>データベースを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>データベースをマージã™ã‚‹</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>ä¿å­˜ã—よã†ã¨ã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¯ KeePassXC ã®åˆ¥ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã‚ˆã£ã¦ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚
-強制的ã«ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>パスワード</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>データベースを既ã«é–‹ã„ã¦ã„ã¾ã™</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>é–‹ã“ã†ã¨ã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¯ KeePassXC ã®åˆ¥ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã‚ˆã£ã¦ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚
-強制的ã«é–‹ãã¾ã™ã‹ï¼Ÿ</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>読ã¿å–り専用ã§é–‹ã</translation>
+ <source>Disable safe saves?</source>
+ <translation>安全ãªä¿å­˜ã‚’無効ã«ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>File opened in read only mode.</source>
- <translation>読ã¿å–り専用ã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ãã¾ã—ãŸã€‚</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>CSV ファイルを開ã</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®å¤šæ®µéšŽä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã“ã‚Œã¯æらãã€ä¿å­˜ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ロックã—ã¦ã„るファイルåŒæœŸã‚µãƒ¼ãƒ“スãŒåŽŸå› ã ã¨æ€ã‚ã‚Œã¾ã™ã€‚
+安全ãªä¿å­˜ã‚’無効ã«ã—ã¦å†è©¦è¡Œã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>検索中…</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>マスターキーを変更</translation>
</message>
@@ -659,6 +1110,14 @@ Do you want to open it anyway?</source>
<translation>本当㫠%1 個ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’永久ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>エントリーをゴミ箱ã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>本当ã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ &quot;%1&quot; をゴミ箱ã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>エントリーをゴミ箱ã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
@@ -667,28 +1126,28 @@ Do you want to open it anyway?</source>
<translation><numerusform>本当㫠%n 個ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’ゴミ箱ã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>グループを削除ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ <source>Execute command?</source>
+ <translation>コマンドを実行ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>本当ã«ã‚°ãƒ«ãƒ¼ãƒ— &quot;%1&quot; を永久ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>本当ã«æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã‹ï¼Ÿ&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>マスターキーを計算ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ <source>Remember my choice</source>
+ <translation>é¸æŠžã‚’記憶ã™ã‚‹</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>エントリーをゴミ箱ã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ <source>Delete group?</source>
+ <translation>グループを削除ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>本当ã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ &quot;%1&quot; をゴミ箱ã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>本当ã«ã‚°ãƒ«ãƒ¼ãƒ— &quot;%1&quot; を永久ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>検索中…</translation>
+ <source>Unable to calculate master key</source>
+ <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1166,8 @@ Do you want to open it anyway?</source>
<translation>見ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>コマンドを実行ã—ã¾ã™ã‹ï¼Ÿ</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>本当ã«æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã‹ï¼Ÿ&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>é¸æŠžã‚’記憶ã™ã‚‹</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>自動å†èª­ã¿è¾¼ã¿ãƒªã‚¯ã‚¨ã‚¹ãƒˆ</translation>
+ <source>File has changed</source>
+ <translation>ファイルãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1178,10 @@ Do you want to open it anyway?</source>
<translation>マージリクエスト</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>データベースファイルãŒå¤‰æ›´ã•ã‚Œã€æœªä¿å­˜ã®å¤‰æ›´ãŒã‚ã‚Šã¾ã™ã€‚変更をマージã—ã¾ã™ã‹ï¼Ÿ</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>データベースファイルãŒå¤‰æ›´ã•ã‚Œã€æœªä¿å­˜ã®å¤‰æ›´ãŒã‚ã‚Šã¾ã™ã€‚
+変更をマージã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -748,6 +1197,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>TOTP トークンを生æˆ</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>é–‰ã˜ã‚‹</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>有効期é™</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ユーザーå</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>自動入力</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>検索</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>属性</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>添付ファイル</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>メモ</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>ウィンドウ</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>シーケンス</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>検索</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>消去</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>ãªã—</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[ä¿è­·]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>無効</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>有効</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -774,6 +1306,30 @@ Do you want to open it anyway?</source>
<translation>履歴</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH エージェント</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>N/A</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(æš—å·åŒ–)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>ç§æœ‰éµã‚’é¸æŠž</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>ファイルãŒå¤§ãã™ãŽã‚‹ãŸã‚ç§æœ‰éµã«ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>ç§æœ‰éµã‚’é–‹ãã®ã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>エントリーã®å±¥æ­´</translation>
</message>
@@ -794,22 +1350,20 @@ Do you want to open it anyway?</source>
<translation>æ–°ã—ã„属性</translation>
</message>
<message>
- <source>Select file</source>
- <translation>ファイルをé¸æŠž</translation>
+ <source>Confirm Remove</source>
+ <translation>削除ã®ç¢ºèª</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>ã“ã®å±žæ€§ã‚’削除ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>添付をä¿å­˜</translation>
+ <source>[PROTECTED]</source>
+ <translation>[ä¿è­·]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>添付をä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>表示ã¾ãŸã¯ç·¨é›†ã™ã‚‹å ´åˆã¯é–‹ç¤ºã‚’クリックã—ã¦ãã ã•ã„</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1382,16 @@ Do you want to open it anyway?</source>
<translation>1å¹´</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>削除ã®ç¢ºèª</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>ã“ã®å±žæ€§ã‚’削除ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</translation>
+ <source>Apply generated password?</source>
+ <translation>生æˆã•ã‚ŒãŸãƒ‘スワードをé©ç”¨ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[ä¿è­·] 表示ã¾ãŸã¯ç·¨é›†ã™ã‚‹å ´åˆã¯é–‹ç¤ºã‚’クリックã—ã¦ãã ã•ã„</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>生æˆã•ã‚ŒãŸãƒ‘スワードをã“ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«é©ç”¨ã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>ã“ã®æ·»ä»˜ã‚’削除ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</translation>
+ <source>Entry updated successfully.</source>
+ <translation>エントリーã¯æ­£å¸¸ã«æ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚</translation>
</message>
</context>
<context>
@@ -859,18 +1409,6 @@ Do you want to open it anyway?</source>
<translation>削除</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>添付ファイル</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>ä¿å­˜</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>é–‹ã</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>åå‰ã‚’編集</translation>
</message>
@@ -882,24 +1420,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>開示</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>ã“ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®è‡ªå‹•å…¥åŠ›ã‚’有効ã«ã™ã‚‹</translation>
+ <source>Attachments</source>
+ <translation>添付ファイル</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>文字色:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>背景色:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>ウィンドウタイトル:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>ã“ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®è‡ªå‹•å…¥åŠ›ã‚’有効ã«ã™ã‚‹</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1448,24 @@ Do you want to open it anyway?</source>
<translation>カスタムã—ãŸè‡ªå‹•å…¥åŠ›ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’使用ã™ã‚‹(&amp;U):</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>デフォルトã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’使用ã™ã‚‹(&amp;Q)</translation>
+ <source>Window Associations</source>
+ <translation>ウィンドウã®é–¢é€£ä»˜ã‘</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>カスタムã—ãŸã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’設定ã™ã‚‹(&amp;M):</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>ウィンドウã®é–¢é€£ä»˜ã‘</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>ウィンドウタイトル:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>ã“ã®é–¢é€£ä»˜ã‘ã«ç‰¹å®šã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’使用ã™ã‚‹:</translation>
</message>
</context>
<context>
@@ -944,12 +1490,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>タイトル:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>ユーザーå:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1502,104 @@ Do you want to open it anyway?</source>
<translation>パスワード確èª:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>タイトル:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>期é™</translation>
+ <source>Notes</source>
+ <translation>メモ</translation>
</message>
<message>
<source>Presets</source>
<translation>プリセット</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>メモ:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã«ãƒã‚§ãƒƒã‚¯ã‚’入れるã¨ãƒ¡ãƒ¢ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>ユーザーå:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>期é™</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>フォーム</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>次ã®æ™‚é–“ãŒéŽãŽãŸã‚‰ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã‹ã‚‰ã‚­ãƒ¼ã‚’削除</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> 秒</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>フィンガープリント</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>データベースãŒé–‰ã˜ã‚‰ã‚ŒãŸã‚Šãƒ­ãƒƒã‚¯ã•ã‚ŒãŸéš›ã«ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã‹ã‚‰ã‚­ãƒ¼ã‚’削除ã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>公開éµ</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>データベースãŒé–‹ã‹ã‚ŒãŸã‚Šãƒ­ãƒƒã‚¯ãŒè§£é™¤ã•ã‚ŒãŸéš›ã«ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã«ã‚­ãƒ¼ã‚’追加ã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>コメント</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>復å·</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>N/A</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>クリップボードã«ã‚³ãƒ”ー</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>ç§æœ‰éµ</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>外部ファイル</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>å‚ç…§...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>添付ファイル</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>エージェントã«è¿½åŠ </translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>エージェントã‹ã‚‰å‰Šé™¤</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>ã“ã®ã‚­ãƒ¼ãŒä½¿ç”¨ã•ã‚Œã‚‹éš›ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç¢ºèªã‚’å¿…è¦ã¨ã™ã‚‹</translation>
</message>
</context>
<context>
@@ -1045,6 +1671,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>デフォルトアイコンã‹ã‚‰é¸æŠž(&amp;U)</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>カスタムアイコンã‹ã‚‰é¸æŠž(&amp;M)</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>カスタムアイコンを追加</translation>
</message>
@@ -1053,6 +1687,18 @@ Do you want to open it anyway?</source>
<translation>カスタムアイコンを削除</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>ファビコンをダウンロード</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>ファビコンをå–å¾—ã§ãã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>ヒント: ツール &gt; 設定 &gt; セキュリティã‹ã‚‰ Google をフォールãƒãƒƒã‚¯ã¨ã—ã¦æœ‰åŠ¹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>ç”»åƒ</translation>
</message>
@@ -1065,24 +1711,12 @@ Do you want to open it anyway?</source>
<translation>ç”»åƒã‚’é¸æŠž</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>ファビコンをダウンロード</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>ファビコンをå–å¾—ã§ãã¾ã›ã‚“。</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>アイコンを読ã¿å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>デフォルトアイコンã‹ã‚‰é¸æŠž(&amp;U)</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>カスタムアイコンã‹ã‚‰é¸æŠž(&amp;M)</translation>
+ <source>Custom icon already exists</source>
+ <translation>カスタムアイコンã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1726,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>ã“ã®ã‚¢ã‚¤ã‚³ãƒ³ã¯ %1 個ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã§ä½¿ç”¨ã•ã‚Œã¦ãŠã‚Šã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚¢ã‚¤ã‚³ãƒ³ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚本当ã«å‰Šé™¤ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>ヒント: ツール &gt; 設定 &gt; セキュリティã‹ã‚‰ Google をフォールãƒãƒƒã‚¯ã¨ã—ã¦æœ‰åŠ¹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>カスタムアイコンã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,15 +1745,130 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>プラグインデータ</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>削除</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>プラグインデータを削除ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>本当ã«é¸æŠžã—ãŸãƒ—ラグインデータを削除ã—ã¾ã™ã‹ï¼Ÿ
+プラグインã®å‹•ä½œã«å½±éŸ¿ã‚’与ãˆã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>キー</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>値</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - 複製</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>åå‰</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>サイズ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>フォーム</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>追加</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>削除</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>é–‹ã</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>ä¿å­˜</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>ファイルをé¸æŠž</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>%n 個ã®æ·»ä»˜ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>削除ã®ç¢ºèª</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>添付ファイルをä¿å­˜</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>ディレクトリを作æˆã§ãã¾ã›ã‚“:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>既存ã®ãƒ•ã‚¡ã‚¤ãƒ« &quot;%1&quot; を上書ãã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>上書ãã®ç¢ºèª</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>添付ファイルをä¿å­˜ã§ãã¾ã›ã‚“:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>添付ファイルを開ã‘ã¾ã›ã‚“:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>添付ファイルを開ã‘ã¾ã›ã‚“:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>ファイルを開ã‘ã¾ã›ã‚“:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1897,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>å‚ç…§:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>グループ</translation>
</message>
@@ -1172,9 +1918,67 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>å‚ç…§:</translation>
+ <source>Never</source>
+ <translation>ãªã—</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>メモ</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>期é™</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>作æˆæ—¥æ™‚</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>編集日時</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>アクセス日時</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>添付ファイル</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>表示ã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚º</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>ユーザーåã‚’éš ã™</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>パスワードを隠ã™</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>ウィンドウã«åˆã‚ã›ã‚‹</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>内容ã«åˆã‚ã›ã‚‹</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>デフォルトã«ãƒªã‚»ãƒƒãƒˆ</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>添付ファイル (アイコン)</translation>
</message>
</context>
<context>
@@ -1185,6 +1989,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: ファイルをä¿å­˜ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Native messaging スクリプトファイルをä¿å­˜ã§ãã¾ã›ã‚“。</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2049,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>使用ã™ã‚‹æ–‡å­—種ã®æ–‡å­—ãŒå¿…ãšå«ã¾ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>æ‹¡å¼µ ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2066,361 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’発行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>キーãŒé–“é•ã£ã¦ã„ã‚‹ã‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ãŒç ´æã—ã¦ã„ã¾ã™ã€‚</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’発行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>データベースã®ãƒ˜ãƒƒãƒ€ãƒ¼ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>ヘッダーã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>ヘッダー SHA256 ãŒä¸€è‡´ã—ã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>キーãŒé–“é•ã£ã¦ã„ã‚‹ã‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ãŒç ´æã—ã¦ã„ã¾ã™ (HMAC ã®ä¸ä¸€è‡´)。</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>ä¸æ˜Žãªæš—å·ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>ヘッダー ID サイズãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>ヘッダーフィールド長ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>ヘッダーデータ長ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>ヘッダー㮠KDF パラメーターã®ãƒãƒƒãƒ•ã‚¡ãƒ¼ã‚’é–‹ãã®ã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„éµå°Žå‡ºé–¢æ•° (KDF) ã¾ãŸã¯ä¸æ­£ãªãƒ‘ラメーターã§ã™</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>KDBX4 ファイル内ã«ãƒ¬ã‚¬ã‚·ãƒ¼ãªãƒ˜ãƒƒãƒ€ãƒ¼ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>内部ヘッダー ID サイズãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>内部ヘッダーフィールド長ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>内部ヘッダーãƒã‚¤ãƒŠãƒªãƒ¼ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® KeePass VariantMap ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼åã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼åデータãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼å€¤ã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼å€¤ãƒ‡ãƒ¼ã‚¿ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã® Bool エントリー値ã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã® Int32 エントリー値ã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã® UInt32 エントリー値ã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã® Int64 エントリー値ã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã® UInt64 エントリー値ã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚¿ã‚¤ãƒ—ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>VariantMap ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚¿ã‚¤ãƒ—ã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>対称暗å·ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒä¸æ­£ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>対称暗å·ã®åˆæœŸåŒ–ベクトルã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>KDF パラメーター VariantMap ã®ã‚·ãƒªã‚¢ãƒ«åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>æš—å·ã® UUID ã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„æš—å·ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>圧縮フラグã®é•·ã•ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„圧縮アルゴリズムã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Master Seed ã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Transform Seed ã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>変æ›å›žæ•°ã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>StreamStartBytes ã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Random Stream ID ã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>内部 Random Stream æš—å·ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>KeePass データベースã§ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>é¸æŠžã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯å¤ã„ KeePass 1 ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ (.kdb) ã§ã™ã€‚
+
+データベース &gt; &apos;KeePass 1 データベースをインãƒãƒ¼ãƒˆ...&apos; をクリックã™ã‚‹ã“ã¨ã§ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚
+ã“ã‚Œã¯ä¸€æ–¹å‘ã®ç§»è¡Œæ“作ã§ã‚ã‚Šã€ã‚¤ãƒ³ãƒãƒ¼ãƒˆã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¯å¤ã„ KeePassX 0.4 ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯é–‹ãã“ã¨ã¯ã§ãã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® KeePass 2 データベースã§ã™ã€‚</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML ã®æ§‹æ–‡è§£æžã‚¨ãƒ©ãƒ¼: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>ルートグループãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>アイコン㮠UUID ã¾ãŸã¯ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>カスタムデータ㮠Key ã¾ãŸã¯ Value ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>グループè¦ç´ ãŒè¤‡æ•°ã‚ã‚Šã¾ã™</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>グループ㮠UUID ㌠NULL ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>グループã®ã‚¢ã‚¤ã‚³ãƒ³ç•ªå·ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>EnableAutoType ã®å€¤ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>EnableSearching ã®å€¤ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>グループ㮠UUID ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>DeletedObject ã® UUID ㌠NULL ã§ã™</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>DeletedObject ã® UUID ã¾ãŸã¯ DeletionTime ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>エントリー㮠UUID ㌠NULL ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>エントリーã®ã‚¢ã‚¤ã‚³ãƒ³ç•ªå·ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>履歴エントリー内ã«å±¥æ­´è¦ç´ ãŒå­˜åœ¨ã—ã¾ã™</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>エントリー㮠UUID ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>履歴è¦ç´ ã® UUID ãŒç•°ãªã‚Šã¾ã™</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>エントリーã®æ–‡å­—列を復å·ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>é‡è¤‡ã—ãŸã‚«ã‚¹ã‚¿ãƒ å±žæ€§ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>エントリーã®æ–‡å­—列 Key ã¾ãŸã¯ Value ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>é‡è¤‡ã—ãŸæ·»ä»˜ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>エントリーã®ãƒã‚¤ãƒŠãƒªãƒ¼ Key ã¾ãŸã¯ Value ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>自動入力ã®é–¢é€£ä»˜ã‘ウィンドウã¾ãŸã¯è‡ªå‹•å…¥åŠ›ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>真å½å€¤ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>日時ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>色ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>色㮠RGB ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>数値ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>UUID ã®å€¤ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>ãƒã‚¤ãƒŠãƒªãƒ¼ã‚’展開ã§ãã¾ã›ã‚“</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1254,14 +2428,14 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Unable to open the database.</source>
- <translation>データベースを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ <translation>データベースを開ã‘ã¾ã›ã‚“。</translation>
</message>
</context>
<context>
<name>KeePass1Reader</name>
<message>
<source>Unable to read keyfile.</source>
- <translation>キーファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ <translation>キーファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“。</translation>
</message>
<message>
<source>Not a KeePass database.</source>
@@ -1276,140 +2450,181 @@ Do you want to open it anyway?</source>
<translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® KeePass データベースã§ã™ã€‚</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Encryption IV (æš—å·åŒ–åˆæœŸåŒ–ベクトル) を読ã¿å–ã‚Œã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>グループã®æ•°ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>エントリーã®æ•°ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>コンテンツãƒãƒƒã‚·ãƒ¥ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Transform Seed ã®ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>変æ›å›žæ•°ã®æ•°ãŒä¸æ­£ã§ã™</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>グループツリーを構æˆã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>ルート</translation>
</message>
<message>
<source>Unable to calculate master key</source>
- <translation>マスターキーを計算ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
</message>
<message>
<source>Wrong key or database file is corrupt.</source>
<translation>キーãŒé–“é•ã£ã¦ã„ã‚‹ã‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ãŒç ´æã—ã¦ã„ã¾ã™ã€‚</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>KeePass データベースã§ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
+ <source>Key transformation failed</source>
+ <translation>キー変æ›ã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® KeePass データベースã§ã™ã€‚</translation>
+ <source>Invalid group field type number</source>
+ <translation>グループã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚¿ã‚¤ãƒ—æ•°ãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>キーãŒé–“é•ã£ã¦ã„ã‚‹ã‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ãŒç ´æã—ã¦ã„ã¾ã™ã€‚</translation>
+ <source>Invalid group field size</source>
+ <translation>グループã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>読ã¿è¾¼ã‚“ã ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãƒ‡ãƒ¼ã‚¿ã¯ã‚µã‚¤ã‚ºãŒä¸€è‡´ã—ã¾ã›ã‚“</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’発行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。</translation>
+ <source>Incorrect group id field size</source>
+ <translation>グループ㮠ID フィールドサイズãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>é¸æŠžã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯å¤ã„ KeePass 1 ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ (.kdb) ã§ã™ã€‚
-
-データベース &gt; &apos;KeePass 1 データベースをインãƒãƒ¼ãƒˆ...&apos; をクリックã™ã‚‹ã“ã¨ã§ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚
-ã“ã‚Œã¯ä¸€æ–¹å‘ã®ç§»è¡Œæ“作ã§ã‚ã‚Šã€ã‚¤ãƒ³ãƒãƒ¼ãƒˆã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¯å¤ã„ KeePassX 0.4 ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯é–‹ãã“ã¨ã¯ã§ãã¾ã›ã‚“。</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>グループã®ä½œæˆæ—¥æ™‚フィールドサイズãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>ãƒãƒ£ãƒ¬ãƒ³ã‚¸ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’発行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>グループã®ç·¨é›†æ—¥æ™‚フィールドサイズãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>マスターキーを計算ã§ãã¾ã›ã‚“</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>グループã®ã‚¢ã‚¯ã‚»ã‚¹æ—¥æ™‚フィールドサイズãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>æš—å·åŒ–機能ã®ãƒ†ã‚¹ãƒˆä¸­ã«è‡´å‘½çš„ãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>グループã®æœ‰åŠ¹æœŸé™ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - エラー</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>グループã®ã‚¢ã‚¤ã‚³ãƒ³ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>ロックファイルを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚シングルインスタンスモードã¯ç„¡åŠ¹ã§ã™ã€‚</translation>
+ <source>Incorrect group level field size</source>
+ <translation>グループã®ãƒ¬ãƒ™ãƒ«ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>KeePassXC ã®åˆ¥ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒæ—¢ã«èµ·å‹•ã—ã¦ã„ã¾ã™ã€‚</translation>
+ <source>Invalid group field type</source>
+ <translation>グループã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚¿ã‚¤ãƒ—ãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>既存ã®ã‚·ãƒ³ã‚°ãƒ«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãƒ­ãƒƒã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ã¯ç„¡åŠ¹ã§ã™ã€‚æ–°ã—ã„インスタンスを起動ã—ã¾ã™ã€‚</translation>
+ <source>Missing group id or level</source>
+ <translation>グループ㮠ID ã¾ãŸã¯ãƒ¬ãƒ™ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>データベースを開ã</translation>
+ <source>Missing entry field type number</source>
+ <translation>エントリーã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚¿ã‚¤ãƒ—番å·ãŒã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>データベースã®è¨­å®š</translation>
+ <source>Invalid entry field size</source>
+ <translation>エントリーã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>ユーザーåをコピー</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>読ã¿è¾¼ã‚“ã ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãƒ‡ãƒ¼ã‚¿ã¯ã‚µã‚¤ã‚ºãŒä¸€è‡´ã—ã¾ã›ã‚“</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>パスワードをコピー</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>エントリー㮠UUID フィールドサイズãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Settings</source>
- <translation>設定</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>エントリーã®ã‚°ãƒ«ãƒ¼ãƒ— ID フィールドサイズãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>ツールãƒãƒ¼ã‚’表示</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>エントリーã®ã‚¢ã‚¤ã‚³ãƒ³ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚µã‚¤ã‚ºãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>read-only</source>
- <translation>読ã¿å–り専用</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>エントリーã®ä½œæˆæ—¥æ™‚フィールドサイズãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>ウィンドウ切替</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>エントリーã®ç·¨é›†æ—¥æ™‚フィールドサイズãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 データベース</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>エントリーã®æœŸé™æ—¥æ™‚フィールドサイズãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>All files</source>
- <translation>å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«</translation>
+ <source>Invalid entry field type</source>
+ <translation>エントリーã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚¿ã‚¤ãƒ—ãŒä¸æ­£ã§ã™</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>修復ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>既存ã®ã‚·ãƒ³ã‚°ãƒ«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãƒ­ãƒƒã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ã¯ç„¡åŠ¹ã§ã™ã€‚æ–°ã—ã„インスタンスを起動ã—ã¾ã™ã€‚</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>データベースã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>ロックファイルを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚シングルインスタンスモードã¯ç„¡åŠ¹ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>KeePassXC ã®åˆ¥ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒæ—¢ã«èµ·å‹•ã—ã¦ã„ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>æš—å·åŒ–機能ã®ãƒ†ã‚¹ãƒˆä¸­ã«è‡´å‘½çš„ãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - エラー</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>データベース(&amp;D)</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>最近使用ã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹(&amp;R)</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>インãƒãƒ¼ãƒˆ</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>ヘルプ(&amp;H)</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>エントリー(&amp;N)</translation>
</message>
@@ -1418,12 +2633,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>クリップボードã«ã‚³ãƒ”ー(&amp;R)</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>タイムベースワンタイムパスワード</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>グループ(&amp;G)</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>表示(&amp;V)</translation>
+ <source>&amp;Tools</source>
+ <translation>ツール(&amp;T)</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1434,6 +2653,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>ã“ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã«ã¤ã„ã¦(&amp;A)</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>データベースを開ã(&amp;O)...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>データベースをä¿å­˜(&amp;S)</translation>
</message>
@@ -1474,24 +2697,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>グループを削除(&amp;D)</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>データベースã®è¨­å®š(&amp;D)</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>データベースを別åã§ä¿å­˜(&amp;V)...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>エントリーを複製(&amp;C)</translation>
+ <source>Change &amp;master key...</source>
+ <translation>マスターキーを変更(&amp;M)...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>時é™ãƒ¯ãƒ³ã‚¿ã‚¤ãƒ ãƒ‘スワード</translation>
+ <source>&amp;Database settings</source>
+ <translation>データベースã®è¨­å®š(&amp;D)</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>TOTP をコピー(&amp;T)</translation>
+ <source>Database settings</source>
+ <translation>データベースã®è¨­å®š</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>TOTP を表示</translation>
+ <source>&amp;Clone entry</source>
+ <translation>エントリーを複製(&amp;C)</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1502,14 +2725,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>ユーザーåをコピー(&amp;U)</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>ユーザーåをコピー</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>パスワードをコピー(&amp;Y)</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>パスワードをコピー</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>設定(&amp;S)</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>パスワード生æˆ</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>自動入力を実行(&amp;P)</translation>
</message>
@@ -1526,165 +2761,222 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>タイトル(&amp;T)</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>タイトルをコピー</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>URL(&amp;U)</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>URL をコピー</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>メモ(&amp;N)</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>パスワード生æˆ</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>メモをコピー</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>履歴を消去</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>CSV ファイルã¸ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ(&amp;E)...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>データベース(&amp;D)</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>KeePass 1 データベースをインãƒãƒ¼ãƒˆ...</translation>
</message>
<message>
- <source>Import</source>
- <translation>インãƒãƒ¼ãƒˆ</translation>
+ <source>Import CSV file...</source>
+ <translation>CSV ファイルをインãƒãƒ¼ãƒˆ...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>ツール(&amp;T)</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>データベースを修復(&amp;P)...</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>ゴミ箱を空ã«ã™ã‚‹</translation>
+ <source>Show TOTP</source>
+ <translation>TOTP を表示</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>TOTP ã®è¨­å®š...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>TOTP をコピー(&amp;T)</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>ゴミ箱を空ã«ã™ã‚‹(&amp;M)</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>履歴を消去</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>設定ファイル %1 ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚¨ãƒ©ãƒ¼</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>KeePassXC を終了</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;ブラウザー統åˆã« KeePassHTTP を使用ã—ã¦ã„ã¾ã™ã€‚ã“ã®æ©Ÿèƒ½ã¯å°†æ¥çš„ã«å»ƒæ­¢ã•ã‚Œã€å‰Šé™¤ã•ã‚Œã¾ã™ã€‚&lt;br&gt;代ã‚ã‚Šã« KeePassXC-Browser を使用ã—ã¦ãã ã•ã„。移行ã«é–¢ã™ã‚‹ãƒ˜ãƒ«ãƒ—㯠&lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; ã‚’å‚ç…§ã—ã¦ãã ã•ã„ (%1 / 3 回目ã®è­¦å‘Š)。&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>YubiKey ã®ãƒœã‚¿ãƒ³ã«ã‚¿ãƒƒãƒã—ã¦ãã ã•ã„</translation>
+ <source>read-only</source>
+ <translation>読ã¿å–り専用</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>ヘルプ(&amp;H)</translation>
+ <source>Settings</source>
+ <translation>設定</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>データベースを開ã(&amp;O)...</translation>
+ <source>Toggle window</source>
+ <translation>ウィンドウ切替</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>データベースを別åã§ä¿å­˜(&amp;V)...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>KeePassXC を終了</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>マスターキーを変更(&amp;M)...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 データベース</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>CSV ファイルã¸ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ(&amp;E)...</translation>
+ <source>All files</source>
+ <translation>å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>KeePass 1 データベースをインãƒãƒ¼ãƒˆ...</translation>
+ <source>Open database</source>
+ <translation>データベースを開ã</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>CSV ファイルをインãƒãƒ¼ãƒˆ...</translation>
+ <source>Save repaired database</source>
+ <translation>修復ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>データベースを修復(&amp;P)...</translation>
+ <source>Writing the database failed.</source>
+ <translation>データベースã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>TOTP ã®è¨­å®š...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>YubiKey ã®ãƒœã‚¿ãƒ³ã«ã‚¿ãƒƒãƒã—ã¦ãã ã•ã„</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>警告: KeePassXC ã®é–‹ç™ºç‰ˆã‚’使用ã—ã¦ã„ã¾ã™ã€‚
+データベース破æã®å±é™ºæ€§ãŒé«˜ã„ãŸã‚ã€ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—を維æŒã—ã¾ã™ã€‚
+ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯æ­£å¼ç‰ˆã§ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>ダイアログ</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>OpenSSH ã®éµãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>General</source>
- <translation>一般</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM ã®ãƒã‚¦ãƒ³ãƒ€ãƒªãƒ¼ãŒä¸ä¸€è‡´ã§ã™</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>クレデンシャルをè¦æ±‚ã•ã‚ŒãŸéš›ã«é€šçŸ¥ã‚’表示ã™ã‚‹(&amp;O)</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Base64 ã®ãƒ‡ã‚³ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>マッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’ユーザーåã§ä¸¦ã¹æ›¿ãˆã‚‹(&amp;U)</translation>
+ <source>Key file way too small.</source>
+ <translation>キーファイルãŒå°ã•ã™ãŽã¾ã™ã€‚</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«ä¿å­˜ã•ã‚ŒãŸã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’ã™ã¹ã¦å‰Šé™¤ã™ã‚‹(&amp;M)</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>キーファイルã®ãƒžã‚¸ãƒƒã‚¯ãƒ˜ãƒƒãƒ€ãƒ¼ ID ãŒä¸æ­£ã§ã™</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>詳細設定</translation>
+ <source>Found zero keys</source>
+ <translation>キー㌠0 ã§ã™</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>常ã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹(&amp;A)</translation>
+ <source>Failed to read public key.</source>
+ <translation>公開éµã®èª­ã¿å–ã‚Šã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>常ã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®æ›´æ–°ã‚’許å¯ã™ã‚‹(&amp;U)</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>キーファイルãŒç ´æã—ã¦ã„ã‚‹ãŸã‚ç§æœ‰éµã®èª­ã¿å–ã‚Šã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>ã™ã¹ã¦ã®é–‹ã‹ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ãƒžãƒƒãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’検索ã™ã‚‹(&amp;H)</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>復å·ã™ã‚‹ç§æœ‰éµã®ãƒšã‚¤ãƒ­ãƒ¼ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP ãƒãƒ¼ãƒˆ:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>æš—å·ãªã—㧠KDF を実行ã—よã†ã¨ã—ã¦ã„ã¾ã™</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>デフォルトã®ãƒãƒ¼ãƒˆ: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>ã“ã®éµã‚’復å·ã™ã‚‹ãƒ‘スフレーズãŒå¿…è¦ã§ã™</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>データベースãŒãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ãƒ­ãƒƒã‚¯ã®è§£é™¤ã‚’è¦æ±‚ã™ã‚‹(&amp;Q)</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>éµã®å°Žå‡ºã«å¤±æ•—ã—ã¾ã—ãŸã€‚キーファイルãŒå£Šã‚Œã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>マッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’タイトルã§ä¸¦ã¹æ›¿ãˆã‚‹(&amp;M)</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>復å·åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚パスフレーズãŒé–“é•ã£ã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC 㯠127.0.0.1 ã®ã“ã®ãƒãƒ¼ãƒˆã‚’リッスンã—ã¾ã™</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>公開éµã®èª­ã¿å–り中ã«äºˆæœŸã—ãªã„ EOF ãŒã‚ã‚Šã¾ã—ãŸ</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>特権ãƒãƒ¼ãƒˆã«ãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>ç§æœ‰éµã®èª­ã¿å–り中ã«äºˆæœŸã—ãªã„ EOF ãŒã‚ã‚Šã¾ã—ãŸ</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>1024 以下ã®ç‰¹æ¨©ãƒãƒ¼ãƒˆã«ãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“。
-デフォルトã®ãƒãƒ¼ãƒˆ 19455 を使用ã—ã¾ã™ã€‚</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>公開éµãŒç©ºã®ãŸã‚書ãè¾¼ã‚ã¾ã›ã‚“</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰å…±æœ‰æš—å·åŒ–キーをã™ã¹ã¦å‰Šé™¤ã™ã‚‹(&amp;E)</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>公開éµã®æ›¸ãè¾¼ã¿ä¸­ã«äºˆæœŸã—ãªã„ EOF ãŒã‚ã‚Šã¾ã—ãŸ</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&quot;KPH: &quot; ã‹ã‚‰å§‹ã¾ã‚‹æ‹¡å¼µã•ã‚ŒãŸæ–‡å­—列フィールドを返ã™(&amp;R)</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>ç§æœ‰éµãŒç©ºã®ãŸã‚書ãè¾¼ã‚ã¾ã›ã‚“</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>文字列フィールドã®è‡ªå‹•ä½œæˆã‚„自動更新ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>ç§æœ‰éµã®æ›¸ãè¾¼ã¿ä¸­ã«äºˆæœŸã—ãªã„ EOF ãŒã‚ã‚Šã¾ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„éµã®ç¨®é¡žã§ã™: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>ä¸æ˜Žãªæš—å·ã§ã™: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>æš—å·åˆæœŸåŒ–ベクトル㌠MD5 KDF ã«å¯¾ã—ã¦çŸ­ã™ãŽã¾ã™</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>ä¸æ˜Žãª KDF ã§ã™: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>ä¸æ˜Žãªéµã®ç¨®é¡žã§ã™: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>ダイアログ</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1695,14 +2987,27 @@ Using default port 19455.</source>
<translation>KeePassHTTP サーãƒãƒ¼ã‚’有効ã«ã™ã‚‹</translation>
</message>
<message>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>クレデンシャルをè¦æ±‚ã•ã‚ŒãŸéš›ã«é€šçŸ¥ã‚’表示ã™ã‚‹(&amp;O)</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation>ドメイン全体ã«ãƒžãƒƒãƒã™ã‚‹ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ä»£ã‚ã‚Šã«ã€ç‰¹å®šã® URL ã«æœ€ã‚‚マッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã¿ãŒè¿”ã•ã‚Œã¾ã™ã€‚</translation>
+ <translation>ドメイン全体ã«ãƒžãƒƒãƒã™ã‚‹å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ä»£ã‚ã‚Šã«ã€ç‰¹å®šã® URL ã«æœ€ã‚‚マッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã¿ãŒè¿”ã•ã‚Œã¾ã™ã€‚</translation>
</message>
<message>
<source>&amp;Return only best matching entries</source>
<translation>最もマッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã¿ã‚’è¿”ã™(&amp;R)</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>データベースãŒãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ãƒ­ãƒƒã‚¯ã®è§£é™¤ã‚’è¦æ±‚ã™ã‚‹(&amp;Q)</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>åŒã˜ã‚¹ã‚­ãƒ¼ãƒ  (http://, https://, ftp://, ...) ã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã¿ãŒè¿”ã•ã‚Œã¾ã™ã€‚</translation>
</message>
@@ -1711,27 +3016,108 @@ Using default port 19455.</source>
<translation>URL スキームã®ãƒžãƒƒãƒ(&amp;M)</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>マッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’ユーザーåã§ä¸¦ã¹æ›¿ãˆã‚‹(&amp;U)</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>マッãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’タイトルã§ä¸¦ã¹æ›¿ãˆã‚‹(&amp;M)</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰å…±æœ‰æš—å·åŒ–キーを全ã¦å‰Šé™¤ã™ã‚‹(&amp;E)</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«ä¿å­˜ã•ã‚ŒãŸã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’å…¨ã¦å‰Šé™¤ã™ã‚‹(&amp;M)</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>パスワード生æˆ</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>詳細設定</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>常ã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹(&amp;A)</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>常ã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®æ›´æ–°ã‚’許å¯ã™ã‚‹(&amp;U)</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>é¸æŠžã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã¿ãŒã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¨æŽ¥ç¶šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>以下ã¯å±é™ºãªã‚ªãƒ—ションã§ã™ã€‚
-設定ã®å†…容をç†è§£ã—ã¦ã„ã‚‹å ´åˆã«ã®ã¿ã€å¤‰æ›´ã‚’è¡Œã£ã¦ãã ã•ã„。</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>å…¨ã¦ã®é–‹ã‹ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ãƒžãƒƒãƒã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’検索ã™ã‚‹(&amp;H)</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>文字列フィールドã®è‡ªå‹•ä½œæˆã‚„自動更新ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot; ã‹ã‚‰å§‹ã¾ã‚‹æ‹¡å¼µã•ã‚ŒãŸæ–‡å­—列フィールドを返ã™(&amp;R)</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP ãƒãƒ¼ãƒˆ:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>デフォルトã®ãƒãƒ¼ãƒˆ: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC 㯠127.0.0.1 ã®ã“ã®ãƒãƒ¼ãƒˆã‚’リッスンã—ã¾ã™</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;警告:&lt;/b&gt; 以下ã¯å±é™ºãªã‚ªãƒ—ションã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP ã¯å°†æ¥çš„ã«å»ƒæ­¢ã•ã‚Œã€å‰Šé™¤ã•ã‚Œã¾ã™ã€‚&lt;br&gt;代ã‚ã‚Šã« KeePassXC-Browser を使用ã—ã¦ãã ã•ã„。移行ã«é–¢ã™ã‚‹ãƒ˜ãƒ«ãƒ—㯠&lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; ã‚’å‚ç…§ã—ã¦ãã ã•ã„。&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>特権ãƒãƒ¼ãƒˆã«ãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>1024 以下ã®ç‰¹æ¨©ãƒãƒ¼ãƒˆã«ãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“。
+デフォルトã®ãƒãƒ¼ãƒˆ 19455 を使用ã—ã¾ã™ã€‚</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>パスワード:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>強度</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>エントロピー</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>文字種</translation>
</message>
@@ -1752,38 +3138,50 @@ Change them only if you know what you are doing.</source>
<translation>特殊ãªæ–‡å­—</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>æ‹¡å¼µ ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>よãä¼¼ãŸæ–‡å­—を除外ã™ã‚‹</translation>
</message>
<message>
- <source>Accept</source>
- <translation>é©ç”¨</translation>
+ <source>Pick characters from every group</source>
+ <translation>å…¨ã¦ã®ä½¿ç”¨ã™ã‚‹æ–‡å­—種ã‹ã‚‰æ–‡å­—ã‚’é¸ã¶</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>é•·ã•(&amp;L):</translation>
</message>
<message>
- <source>strength</source>
- <translation>強度</translation>
+ <source>Passphrase</source>
+ <translation>パスフレーズ</translation>
</message>
<message>
- <source>entropy</source>
- <translation>エントロピー</translation>
+ <source>Wordlist:</source>
+ <translation>å˜èªžãƒªã‚¹ãƒˆ:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>é•·ã•(&amp;L):</translation>
+ <source>Word Count:</source>
+ <translation>å˜èªžæ•°:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>ã™ã¹ã¦ã®ä½¿ç”¨ã™ã‚‹æ–‡å­—種ã‹ã‚‰æ–‡å­—ã‚’é¸ã¶</translation>
+ <source>Word Separator:</source>
+ <translation>å˜èªžã®åŒºåˆ‡ã‚Šæ–‡å­—:</translation>
</message>
<message>
<source>Generate</source>
<translation>生æˆ</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>コピー</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>é©ç”¨</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>é–‰ã˜ã‚‹</translation>
</message>
@@ -1801,51 +3199,276 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>貧弱</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>å¼±ã„</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>良ã„</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>ã™ã°ã‚‰ã—ã„</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>パスワード</translation>
+ <source>Database not opened</source>
+ <translation>データベースãŒé–‹ã‹ã‚Œã¦ã„ã¾ã›ã‚“</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>æ‹¡å¼µ ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>データベースãƒãƒƒã‚·ãƒ¥ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>パスフレーズ</translation>
+ <source>Client public key not received</source>
+ <translation>クライアントã®å…¬é–‹éµã‚’å—ä¿¡ã—ã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>å˜èªžãƒªã‚¹ãƒˆ:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>メッセージを復å·ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>å˜èªžæ•°:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>KeePassXC ã«æŽ¥ç¶šã§ããªã„ã‹ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>å˜èªžã®åŒºåˆ‡ã‚Šæ–‡å­—:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>アクションãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã¾ãŸã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸ</translation>
</message>
<message>
- <source>Copy</source>
- <translation>コピー</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>メッセージを暗å·åŒ–ã§ããªã„ã‹ã€å…¬é–‹éµãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。Native Messaging 㯠KeePassXC ã§æœ‰åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC ã®ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã«å¤±æ•—ã—ã¾ã—ãŸã€‚å†è©¦è¡Œã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>キーã®å¤‰æ›´ã¯æˆåŠŸã—ã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>æš—å·åŒ–キーãŒèªè­˜ã•ã‚Œã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>ä¿å­˜ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>ä¸æ­£ç¢ºãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã§ã™</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>空ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å—ä¿¡ã—ã¾ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>URL ãŒã‚ã‚Šã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>ログインã—ã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã§ã™</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>データベースã«æ–°ã—ã„エントリーを追加ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>データベースã®ãƒ‘ス。</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>データベースã®ã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã€‚</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>パス</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>エントリーã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å。</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>ユーザーå</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>エントリー㮠URL。</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>エントリーã®ãƒ‘スワードをè¦æ±‚ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>エントリーã®ãƒ‘スワードを生æˆã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>生æˆã™ã‚‹ãƒ‘スワードã®é•·ã•ã€‚</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>é•·ã•</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>追加ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒ‘ス。</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>クリップボードã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒ‘スワードをコピーã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>クリップボードã«ã‚³ãƒ”ーã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒ‘ス。</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>クリップボードを消去ã™ã‚‹ã¾ã§ã®æ™‚é–“ (秒)</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>エントリーを編集ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>エントリーã®ã‚¿ã‚¤ãƒˆãƒ«ã€‚</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>タイトル</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>編集ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒ‘ス。</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>パスワードã®ã‚¨ãƒ³ãƒˆãƒ­ãƒ”ーã®æŽ¨å®šã€‚</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>エントロピーを推定ã™ã‚‹ãƒ‘スワード。</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>パスワードã®è©³ç´°ãªåˆ†æžã‚’実行ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>データベースã®å†…容を展開ã—ã¦å‡ºåŠ›ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>展開ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘ス。</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>%1 ã®ãƒ­ãƒƒã‚¯ã‚’解除ã™ã‚‹ãƒ‘スワードを入力ã—ã¦ãã ã•ã„: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>キーファイル %1 ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>警告: レガシーãªã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã¯ã€å°†æ¥çš„ã«ã€
+サãƒãƒ¼ãƒˆã•ã‚Œãªããªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
+
+æ–°ã—ã„キーファイルã®ç”Ÿæˆã‚’検討ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+利用å¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>実行ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã®åå‰ã€‚</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>データベースã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>リストを表示ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‘ス。デフォルト㯠/ (ルート)</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>ç´ æ—©ãエントリーを見ã¤ã‘出ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>検索語。</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>2ã¤ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’マージã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>マージ先ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘ス。</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>マージ元ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘ス。</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>両方ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦åŒä¸€ã®ã‚¯ãƒ¬ãƒ‡ãƒ³ã‚·ãƒ£ãƒ«ã‚’使用ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>マージ元ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã€‚</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>エントリーã®æƒ…報を表示ã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>表示ã™ã‚‹å±žæ€§ã®åå‰ã€‚ã“ã®ã‚ªãƒ—ションã¯ã„ãã¤ã§ã‚‚指定ã™ã‚‹ã“ã¨ãŒã§ãã€å„属性ã¯æŒ‡å®šã—ãŸé †ã«1è¡Œã«1ã¤ãšã¤è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚属性ã®æŒ‡å®šãŒãªã„å ´åˆã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å±žæ€§ã®æ¦‚è¦ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>属性</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®åå‰ã€‚</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL デãƒã‚¤ã‚¹</translation>
@@ -1857,7 +3480,8 @@ Change them only if you know what you are doing.</source>
<message>
<source>file empty !
</source>
- <translation>空ファイルã§ã™</translation>
+ <translation>空ファイルã§ã™
+</translation>
</message>
<message>
<source>malformed string</source>
@@ -1868,8 +3492,28 @@ Change them only if you know what you are doing.</source>
<translation>é–‰ã˜å¼•ç”¨ç¬¦ãŒã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>INTERNAL - unget ãŒä¸‹é™ã‚’超éŽã—ã¾ã—ãŸ</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256 ビット</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256 ビット</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256 ビット</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – 推奨)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1888,16 +3532,24 @@ Change them only if you know what you are doing.</source>
<translation>パスワード</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>メモ</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>最終更新日時</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>作æˆæ—¥æ™‚</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>レガシーãªãƒ–ラウザー統åˆ</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
- <translation>ブラウザ統åˆ</translation>
+ <translation>ブラウザー統åˆ</translation>
</message>
<message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
@@ -1911,6 +3563,56 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation>Passive</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH エージェント</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>æ–°ã—ã„ランダムãªãƒ€ã‚¤ã‚¹ã‚¦ã‚§ã‚¢ãƒ‘スフレーズを生æˆã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>ダイスウェアパスフレーズã®å˜èªžæ•°ã€‚</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>カウント</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>ダイスウェアジェãƒãƒ¬ãƒ¼ã‚¿ãƒ¼ã®å˜èªžãƒªã‚¹ãƒˆã€‚
+[デフォルト: EFF English]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>æ–°ã—ã„ランダムãªãƒ‘スワードを生æˆã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>生æˆã•ã‚Œã‚‹ãƒ‘スワードã®é•·ã•ã€‚</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>å°æ–‡å­—を使用ã—ãŸãƒ‘スワードを生æˆã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>大文字を使用ã—ãŸãƒ‘スワードを生æˆã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>数字を使用ã—ãŸãƒ‘スワードを生æˆã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>特殊ãªæ–‡å­—を使用ã—ãŸãƒ‘スワードを生æˆã™ã‚‹ã€‚</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>æ‹¡å¼µ ASCII を使用ã—ãŸãƒ‘スワードを生æˆã™ã‚‹ã€‚</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1943,14 +3645,14 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Internal zlib error: </source>
- <translation>内部㮠zlib エラー:</translation>
+ <translation>内部 zlib エラー: </translation>
</message>
</context>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>大文字ã¨å°æ–‡å­—ã®åŒºåˆ¥</translation>
+ <source>Search...</source>
+ <translation>検索...</translation>
</message>
<message>
<source>Search</source>
@@ -1961,8 +3663,8 @@ Change them only if you know what you are doing.</source>
<translation>消去</translation>
</message>
<message>
- <source>Search...</source>
- <translation>検索...</translation>
+ <source>Case Sensitive</source>
+ <translation>大文字ã¨å°æ–‡å­—ã®åŒºåˆ¥</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1972,50 +3674,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>共有暗å·åŒ–キー &quot;%1&quot; ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚
-上書ãã—ã¾ã™ã‹ï¼Ÿ</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>%1 - %2 ã®æƒ…報を更新ã—ã¾ã™ã‹ï¼Ÿ</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚
-é¸æŠžã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ­ãƒƒã‚¯ã‚’解除ã™ã‚‹ã‹ã€åˆ¥ã®ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ãªã„データベースをé¸æŠžã—ã¦ãã ã•ã„。</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>KeePassX/Http ã®è¨­å®šã‹ã‚‰ %1 個ã®æš—å·åŒ–%2ãŒç„¡äº‹ã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>KeePassHttp ã®è¨­å®šå†…ã«å…±æœ‰æš—å·åŒ–キーã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã« KeePassHttp ã®è¨­å®šã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>ä¿å­˜ã•ã‚ŒãŸã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’削除ã—ã¦ã„ã¾ã™â€¦</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>中止</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>%1 個ã®%2ã‹ã‚‰ç„¡äº‹ã«ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã¯ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒã‚るエントリーã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: æ–°ã—ã„キーã®ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³è¦æ±‚</translation>
</message>
@@ -2032,33 +3690,77 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<translation>KeePassXC: 既存ã®ã‚­ãƒ¼ã‚’上書ãã—ã¾ã™ã‹ï¼Ÿ</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>共有暗å·åŒ–キー &quot;%1&quot; ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚
+上書ãã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: エントリーを更新</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>%1 - %2 ã®æƒ…報を更新ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: データベースã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚
+é¸æŠžã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ­ãƒƒã‚¯ã‚’解除ã™ã‚‹ã‹ã€åˆ¥ã®ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ãªã„データベースをé¸æŠžã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: データベースã‹ã‚‰ã‚­ãƒ¼ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>KeePassX/Http ã®è¨­å®šã‹ã‚‰ %n 個ã®æš—å·åŒ–キーãŒæ­£å¸¸ã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: キーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>KeePassHttp ã®è¨­å®šå†…ã«å…±æœ‰æš—å·åŒ–キーã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: 設定ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã« KeePassHttp ã®è¨­å®šã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>ä¿å­˜ã•ã‚ŒãŸã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’削除ã—ã¦ã„ã¾ã™â€¦</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>中止</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: アクセス許å¯ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>%n 個ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒæ­£å¸¸ã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: アクセス許å¯ãŒã‚るエントリーã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>アクティブãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã¯ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒã‚るエントリーã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2082,10 +3784,26 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>基本設定</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>KeePassXC ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’一ã¤ã ã‘èµ·å‹•ã™ã‚‹</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>最近使用ã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’記憶ã™ã‚‹</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>最近使用ã—ãŸã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã¨ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ãƒ‰ãƒ³ã‚°ãƒ«ã‚’記憶ã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>起動時ã«å‰å›žã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’読ã¿è¾¼ã‚€</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>終了時ã«è‡ªå‹•çš„ã«ä¿å­˜ã™ã‚‹</translation>
</message>
@@ -2094,20 +3812,28 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<translation>変更ã™ã‚‹ãŸã³ã«è‡ªå‹•çš„ã«ä¿å­˜ã™ã‚‹</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>編集ã•ã‚ŒãŸéš›ã«è‡ªå‹•ã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’å†èª­ã¿è¾¼ã¿ã™ã‚‹</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>クリップボードã«ã‚³ãƒ”ーã—ãŸã‚‰æœ€å°åŒ–ã™ã‚‹</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>アプリケーション起動時ã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’最å°åŒ–ã™ã‚‹</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>エントリー作æˆæ™‚ã«ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’使用ã™ã‚‹</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>グローãƒãƒ«è‡ªå‹•å…¥åŠ›ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>データ以外ã®å¤‰æ›´ (例ãˆã°ã‚°ãƒ«ãƒ¼ãƒ—ã®å±•é–‹) ã«å¯¾ã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’修正済ã¿ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã—ãªã„よã†ã«ã™ã‚‹</translation>
</message>
<message>
- <source>Language</source>
- <translation>言語</translation>
+ <source>Hide the Details view</source>
+ <translation>詳細ビューをéžè¡¨ç¤ºã«ã™ã‚‹</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2118,66 +3844,84 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<translation>最å°åŒ–ã•ã‚ŒãŸéš›ã«ã‚·ã‚¹ãƒ†ãƒ ãƒˆãƒ¬ã‚¤ã¸æ ¼ç´ã™ã‚‹</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>起動時ã«å‰å›žã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’読ã¿è¾¼ã‚€</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>編集ã•ã‚ŒãŸéš›ã«è‡ªå‹•ã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’å†èª­ã¿è¾¼ã¿ã™ã‚‹</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>アプリケーション終了ã§ã¯ãªãシステムトレイã¸æ ¼ç´ã™ã‚‹</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>アプリケーション起動時ã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’最å°åŒ–ã™ã‚‹</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>基本設定</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>最近使用ã—ãŸã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã¨ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ãƒ‰ãƒ³ã‚°ãƒ«ã‚’記憶ã™ã‚‹</translation>
+ <source>Dark system tray icon</source>
+ <translation>ダークシステムトレイアイコン</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>データ以外ã®å¤‰æ›´ï¼ˆä¾‹ãˆã°ã‚°ãƒ«ãƒ¼ãƒ—ã®å±•é–‹ï¼‰ã«å¯¾ã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’修正済ã¿ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã—ãªã„よã†ã«ã™ã‚‹</translation>
+ <source>Language</source>
+ <translation>言語</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>自動入力</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>グローãƒãƒ«è‡ªå‹•å…¥åŠ›ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ç…§åˆã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã‚¿ã‚¤ãƒˆãƒ«ã¨ URL を使用ã™ã‚‹</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>グローãƒãƒ«è‡ªå‹•å…¥åŠ›ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ç…§åˆã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’使用ã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>グローãƒãƒ«è‡ªå‹•å…¥åŠ›ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ç…§åˆã«ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã® URL を使用ã™ã‚‹</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>自動入力を行ã†å‰ã«æ¯Žå›žç¢ºèªã™ã‚‹</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>グローãƒãƒ«è‡ªå‹•å…¥åŠ›ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>自動入力ã®é…延</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>ミリ秒</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>KeePassXC ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’一ã¤ã ã‘èµ·å‹•ã™ã‚‹</translation>
+ <source>Startup</source>
+ <translation>èµ·å‹•</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>ファイル管ç†</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>安全ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿å­˜ã™ã‚‹ (Dropbox ãªã©ã®ã‚µãƒ¼ãƒ“スã§ã¯å‹•ä½œã—ãªã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>ä¿å­˜ã™ã‚‹å‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã™ã‚‹</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>エントリー管ç†</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>一般</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>タイムアウト</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>次ã®æ™‚é–“ãŒéŽãŽãŸã‚‰ã‚¯ãƒªãƒƒãƒ—ボードを消去</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>秒</translation>
</message>
<message>
@@ -2185,8 +3929,12 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<translation>未æ“作ã®æ™‚é–“ãŒç¶šã„ãŸã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ロック</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>パスワードã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§å¹³æ–‡è¡¨ç¤ºã«ã™ã‚‹</translation>
+ <source>Convenience</source>
+ <translation>利便性</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>セッションãŒãƒ­ãƒƒã‚¯ã•ã‚ŒãŸã‚Šãƒ©ãƒƒãƒ—トップãŒé–‰ã˜ã‚‰ã‚ŒãŸéš›ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ロックã™ã‚‹</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2197,16 +3945,16 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<translation>パスワードãŒè¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€ãƒ‘スワードã®å†å…¥åŠ›ã‚’å¿…è¦ã¨ã—ãªã„よã†ã«ã™ã‚‹</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>タイムアウト</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>パスワードã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§å¹³æ–‡è¡¨ç¤ºã«ã™ã‚‹</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>利便性</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>プレビューパãƒãƒ«ã®ãƒ‘スワードをéžè¡¨ç¤ºã«ã™ã‚‹</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>セッションãŒãƒ­ãƒƒã‚¯ã•ã‚ŒãŸã‚Šãƒ©ãƒƒãƒ—トップãŒé–‰ã˜ã‚‰ã‚ŒãŸéš›ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ロックã™ã‚‹</translation>
+ <source>Hide entry notes by default</source>
+ <translation>エントリーã®ãƒ¡ãƒ¢ã‚’デフォルトã§éžè¡¨ç¤ºã«ã™ã‚‹</translation>
</message>
<message>
<source>Privacy</source>
@@ -2216,6 +3964,10 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<source>Use Google as fallback for downloading website icons</source>
<translation>ウェブサイトã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’ダウンロードã™ã‚‹ãŸã‚ã®ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ã¨ã—㦠Google を使用ã™ã‚‹</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>自動入力実行後ã«ä»¥å‰ãƒ­ãƒƒã‚¯ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’å†ãƒ­ãƒƒã‚¯ã™ã‚‹</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2228,6 +3980,14 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<translation>キー:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>デフォルト㮠RFC 6238 トークン設定</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam トークン設定</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>カスタム設定を使用ã™ã‚‹</translation>
</message>
@@ -2253,6 +4013,7 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>秒</translation>
</message>
</context>
@@ -2289,10 +4050,6 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>KeePassXC ã¸ã‚ˆã†ã“ã</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>KeePassXC データベースã«å®‰å…¨ã«ãƒ‘スワードをä¿ç®¡ã™ã‚‹</translation>
</message>
@@ -2316,92 +4073,48 @@ KeePassXC ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ãŸã„å ´åˆã¯ã€
<source>Recent databases</source>
<translation>最近使用ã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>KeePassXC %1 ã¸ã‚ˆã†ã“ã</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>カスタム設定ファイルã¸ã®ãƒ‘ス</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>データベースã®ã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - クロスプラットフォームã®ãƒ‘スワードマãƒãƒ¼ã‚¸ãƒ£ãƒ¼</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>標準入力ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘スワードを読ã¿è¾¼ã‚€</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>é–‹ãパスワードデータベースã®ãƒ•ã‚¡ã‚¤ãƒ«å (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>クリップボードã«ãƒ‘スワードをコピーã™ã‚‹</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>データベースã‹ã‚‰ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’削除ã™ã‚‹ã€‚</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>データベースã®ãƒ‘ス。</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>データベースã®ãƒ­ãƒƒã‚¯ã‚’解除ã™ã‚‹éš›ã« GUI プロンプトを使用ã™ã‚‹ã€‚</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>クリップã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®åå‰ã€‚</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>データベースã®å†…容を展開ã—ã¦å‡ºåŠ›ã™ã‚‹ã€‚</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>展開ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘ス。</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>実行ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã®åå‰ã€‚</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>データベースã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ã€‚</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>リストを表示ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‘ス。デフォルト㯠/ (ルート)</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>エントリーã¨ã‚°ãƒ«ãƒ¼ãƒ—ã® UUID を出力ã™ã‚‹ã€‚</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>削除ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®ãƒ‘ス。</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>2ã¤ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’マージã™ã‚‹ã€‚</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - クロスプラットフォームã®ãƒ‘スワードマãƒãƒ¼ã‚¸ãƒ£ãƒ¼</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>マージ先ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘ス。</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>é–‹ãパスワードデータベースã®ãƒ•ã‚¡ã‚¤ãƒ«å (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>マージ元ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘ス。</translation>
+ <source>path to a custom config file</source>
+ <translation>カスタム設定ファイルã¸ã®ãƒ‘ス</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>両方ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦åŒä¸€ã®ãƒ‘スワードを使用ã™ã‚‹ã€‚</translation>
+ <source>key file of the database</source>
+ <translation>データベースã®ã‚­ãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>パスワードを表示ã™ã‚‹ã€‚</translation>
+ <source>read password of the database from stdin</source>
+ <translation>標準入力ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‘スワードを読ã¿è¾¼ã‚€</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã®åå‰ã€‚</translation>
+ <source>Parent window handle</source>
+ <translation>親ウィンドウãƒãƒ³ãƒ‰ãƒ«</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_ko.ts b/share/translations/keepassx_ko.ts
index 9b00bbc2f..8dc271166 100644
--- a/share/translations/keepassx_ko.ts
+++ b/share/translations/keepassx_ko.ts
@@ -10,14 +10,30 @@
<translation>ì •ë³´</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation> &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt; 사ì´íŠ¸ì— 버그를 ë³´ê³ í•´ 주십시오</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC는 GNU ì¼ë°˜ 공중 ë¼ì´ì„ ìŠ¤(GPL) 버전 2 ë° (ì„ íƒì ìœ¼ë¡œ) 버전 3으로 ë°°í¬ë©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>기여ìž</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;GitHubì—ì„œ ê¸°ì—¬ìž ë³´ê¸°&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>디버그 정보</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>버그를 ë³´ê³ í•  ë•Œ ë‹¤ìŒ ì •ë³´ë¥¼ í¬í•¨í•˜ì‹­ì‹œì˜¤:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>í´ë¦½ë³´ë“œì— 복사</translation>
</message>
@@ -32,6 +48,10 @@
<translation>리비전: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>ë°°í¬íŒ: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>ë¼ì´ë¸ŒëŸ¬ë¦¬:</translation>
</message>
@@ -48,33 +68,26 @@ CPU 아키í…처: %2
<translation>í™œì„±í™”ëœ í™•ìž¥ 기능:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation> &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt; 사ì´íŠ¸ì— 버그를 ë³´ê³ í•´ 주십시오</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC는 GNU ì¼ë°˜ 공중 ë¼ì´ì„ ìŠ¤(GPL) 버전 2 ë° (ì„ íƒì ìœ¼ë¡œ) 버전 3으로 ë°°í¬ë©ë‹ˆë‹¤.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>프로ì íŠ¸ 관리ìž:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;GitHubì—ì„œ ê¸°ì—¬ìž ë³´ê¸°&lt;/a&gt;</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>버그를 ë³´ê³ í•  ë•Œ ë‹¤ìŒ ì •ë³´ë¥¼ í¬í•¨í•˜ì‹­ì‹œì˜¤:</translation>
- </message>
- <message>
- <source>Distribution: %1</source>
- <translation>ë°°í¬íŒ: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP ì ‘ê·¼ 확ì¸</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>ì´ ì„ íƒ ê¸°ì–µí•˜ê¸°</translation>
</message>
@@ -92,9 +105,12 @@ Please select whether you want to allow access.</source>
<translation>%1ì—ì„œ ë‹¤ìŒ í•­ëª©ì˜ ì•”í˜¸ë¥¼ 요청했습니다.
ì ‘ê·¼ì„ í—ˆìš©í•  지 여부를 ì„ íƒí•˜ì‹­ì‹œì˜¤.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP ì ‘ê·¼ 확ì¸</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>SSH ì—ì´ì „트 사용(다시 시작 í•„ìš”)</translation>
</message>
</context>
<context>
@@ -107,6 +123,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation>ìžë™ ìž…ë ¥ - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>ìžë™ ìž…ë ¥</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>ìžë™ ìž…ë ¥ 구문 ë¬¸ë²•ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>ìžë™ ìž…ë ¥ ëª…ë ¹ì— ê¸´ 지연 ì‹œê°„ì´ í¬í•¨ë˜ì–´ 있습니다. ê³„ì† ì§„í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>ìžë™ ìž…ë ¥ ëª…ë ¹ì— ëŠë¦° 키 ìž…ë ¥ì´ í¬í•¨ë˜ì–´ 있습니다. ê³„ì† ì§„í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>ìžë™ ìž…ë ¥ ëª…ë ¹ì— ë§Žì´ ë°˜ë³µë˜ëŠ” ì¸ìžê°€ í¬í•¨ë˜ì–´ 있습니다. ê³„ì† ì§„í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +160,318 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>그룹</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>제목</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ì‚¬ìš©ìž ì´ë¦„</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>시퀀스</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>ìžë™ ìž…ë ¥ - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>ìžë™ìœ¼ë¡œ 입력할 항목 ì„ íƒ:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>ìžë™ ìž…ë ¥ - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-브ë¼ìš°ì € ì ‘ê·¼ 확ì¸</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>ì´ ì„ íƒ ê¸°ì–µí•˜ê¸°</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>허용</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>거부</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1ì—ì„œ ë‹¤ìŒ í•­ëª©ì˜ ì•”í˜¸ë¥¼ 요청했습니다.
+ì ‘ê·¼ì„ í—ˆìš©í•  지 여부를 ì„ íƒí•˜ì‹­ì‹œì˜¤.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>대화 ìƒìž</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>KeePassXC-브ë¼ìš°ì €ì—ì„œ ë°ì´í„°ë² ì´ìŠ¤ì— 접근하려면 필요합니다</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>KeePassXC 브ë¼ìš°ì € 통합 사용</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ì¼ë°˜</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>ë‹¤ìŒ ë¸Œë¼ìš°ì €ì— 통합:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>Google í¬ë¡¬(&amp;G)</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>Firefox(&amp;F)</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>Chromium(&amp;C)</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>Vivaldi(&amp;V)</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>ì¸ì¦ ì •ë³´ê°€ 필요할 ë•Œ 알림 표시(&amp;N)</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ê°€ ìž ê²¼ì„ ë•Œ 잠금 í•´ì œ 요청(&amp;Q)</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>ê°™ì€ ìŠ¤í‚¤ë§ˆ(http://, https://, ftp://)를 사용하는 항목만 반환합니다.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>URL 스키마 ì¼ì¹˜(예: https://...)(&amp;M)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>ë„ë©”ì¸ì´ ì¼ì¹˜í•˜ëŠ” 모든 항목 대신 지정한 URLê³¼ ì¼ì¹˜í•˜ëŠ” 항목만 반환합니다.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>가장 잘 ì¼ì¹˜í•˜ëŠ” 항목만 반환(&amp;R)</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>제목 순으로 ì¼ì¹˜í•˜ëŠ” 항목 ì •ë ¬(&amp;M)</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>ì‚¬ìš©ìž ì´ë¦„ 순으로 ì¼ì¹˜í•˜ëŠ” 항목 ì •ë ¬(&amp;U)</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>모든 브ë¼ìš°ì € ì—°ê²° í•´ì œ(&amp;D)</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>모든 기억한 권한 잊기(&amp;P)</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>고급</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>ì €ìž¥ëœ ì•”í˜¸ì— ì ‘ê·¼í•˜ê¸° ì „ì— ë¬»ì§€ 않기(&amp;A)</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>ì €ìž¥ëœ ì•”í˜¸ë¥¼ ì—…ë°ì´íŠ¸í•˜ê¸° ì „ì— ë¬»ì§€ 않기(&amp;U)</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>ì„ íƒí•œ ë°ì´í„°ë² ì´ìŠ¤ë§Œ í´ë¼ì´ì–¸íŠ¸ì™€ ì—°ê²°í•  수 있습니다.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>모든 열린 ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ ì €ìž¥ëœ ì•”í˜¸ 검색(&amp;H)</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>문ìžì—´ 필드를 ìžë™ìœ¼ë¡œ 만들거나 ì—…ë°ì´íŠ¸í•˜ëŠ” ê²ƒì€ ì§€ì›ë˜ì§€ 않습니다.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot;ë¡œ 시작하는 고급 문ìžì—´ í•„ë“œ 반환(&amp;R)</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>네ì´í‹°ë¸Œ 메시징 스í¬ë¦½íŠ¸ì—ì„œ 사용하는 KeePassXC ë° keepassxc-proxy 실행 íŒŒì¼ ê²½ë¡œë¥¼ 시작할 ë•Œ ìžë™ìœ¼ë¡œ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>시작할 ë•Œ 네ì´í‹°ë¸Œ 메시징 ì„ ì–¸ íŒŒì¼ ì—…ë°ì´íŠ¸(&amp;N)</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>KeePassXC와 브ë¼ìš°ì € 확장 ê°„ 프ë¡ì‹œ í”„ë¡œê·¸ëž¨ì„ ì§€ì›í•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>KeePassXC와 브ë¼ìš°ì € 확장 ê°„ 프ë¡ì‹œ 프로그램 사용(&amp;P)</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>프ë¡ì‹œë¥¼ ì§ì ‘ 설치했으면 ì‚¬ìš©ìž ì •ì˜ í”„ë¡ì‹œ 위치를 지정하십시오.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>ì‚¬ìš©ìž ì •ì˜ í”„ë¡ì‹œ 위치 사용(&amp;C)</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>찾아보기...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;경고:&lt;/b&gt; ë‹¤ìŒ ì˜µì…˜ì€ ì‹ ì¤‘í•˜ê²Œ 사용하십시오!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>실행 íŒŒì¼ (*.exe);;모든 파ì¼(*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>실행 íŒŒì¼ (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>ì‚¬ìš©ìž ì •ì˜ í”„ë¡ì‹œ 위치 지정</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: 새 키 연결 요청</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>ìœ„ì— ìžˆëŠ” í‚¤ì˜ ì—°ê²° ìš”ì²­ì„ ë°›ì•˜ìŠµë‹ˆë‹¤.
+
+해당 키ì—ì„œ KeePassXC ë°ì´í„°ë² ì´ìŠ¤ ì ‘ê·¼ì„ í—ˆìš©í•˜ë ¤ë©´
+ì‹ë³„í•  수 있는 ì´ë¦„ì„ ë¶€ì—¬í•œ 후 수ë½í•˜ì‹­ì‹œì˜¤.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>저장하고 접근 허용</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: 기존 키를 ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>ì´ë¦„ì´ &quot;%1&quot;ì¸ ê³µìœ  암호화 키가 ì´ë¯¸ 있습니다.
+ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: 항목 ì—…ë°ì´íŠ¸</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>%1 - %2ì˜ ì •ë³´ë¥¼ ì—…ë°ì´íŠ¸í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: ë°ì´í„°ë² ì´ìŠ¤ ìž ê¹€!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ê°€ 잠겨 있습니다!
+ì„ íƒí•œ ë°ì´í„°ë² ì´ìŠ¤ì˜ ìž ê¸ˆì„ í’€ê±°ë‚˜ ìž ê¸ˆì´ í’€ë¦° ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì„ íƒí•˜ì‹­ì‹œì˜¤.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: ì„¤ì •ì„ ì‚¬ìš©í•  수 ì—†ìŒ!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— 설정 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: 키를 ì°¾ì„ ìˆ˜ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>KeePassXC 설정ì—ì„œ 공유 암호화 키를 ì°¾ì„ ìˆ˜ 없습니다.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ 키 ì‚­ì œë¨</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>ì €ìž¥ëœ ê¶Œí•œ ì‚­ì œ 중...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>중지</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: 권한 ì‚­ì œë¨</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: ê¶Œí•œì´ ìžˆëŠ” í•­ëª©ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— ê¶Œí•œì´ ë¶€ì—¬ëœ í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.</translation>
</message>
</context>
<context>
@@ -149,6 +489,10 @@ Please select whether you want to allow access.</source>
<translation>암호 확ì¸:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>키 파ì¼(&amp;K)</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>찾아보기</translation>
</message>
@@ -157,6 +501,14 @@ Please select whether you want to allow access.</source>
<translation>만들기</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>ì§ˆì˜ ì‘답(&amp;L)</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>새로 고침</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>키 파ì¼</translation>
</message>
@@ -177,6 +529,10 @@ Please select whether you want to allow access.</source>
<translation>키 íŒŒì¼ ì„ íƒ</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>빈 암호</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>빈 문ìžì—´ì„ 암호로 사용하시겠습니까?</translation>
</message>
@@ -190,20 +546,18 @@ Please select whether you want to allow access.</source>
<translation>%1ì„(를) 키 파ì¼ë¡œ 설정할 수 없습니다: %2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>키 파ì¼(&amp;K)</translation>
+ <source>Legacy key file format</source>
+ <translation>레거시 키 íŒŒì¼ í˜•ì‹</translation>
</message>
<message>
- <source>Cha&amp;llenge Response</source>
- <translation>ì§ˆì˜ ì‘답(&amp;L)</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>새로 고침</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>빈 암호</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>차후 버전ì—ì„œ 지ì›ì´ ì¤‘ë‹¨ë  ì˜ˆì •ì¸ ë ˆê±°ì‹œ 키 파ì¼
+형ì‹ì„ 사용하고 있습니다.
+
+새 키 파ì¼ì„ ìƒì„±í•˜ëŠ” ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -217,6 +571,10 @@ Please select whether you want to allow access.</source>
<translation>복제 옵션</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>ì œëª©ì— &apos; - 사본&apos; 추가</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>ì‚¬ìš©ìž ì´ë¦„ê³¼ 암호를 참조로 대체</translation>
</message>
@@ -224,10 +582,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>과거 ê¸°ë¡ ë³µì‚¬</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>ì œëª©ì— &apos; - 사본&apos; 추가</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -325,10 +679,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>CSV íŒŒì¼ ê°€ì ¸ì˜¤ê¸°</translation>
- </message>
- <message>
<source>Error</source>
<translation>오류</translation>
</message>
@@ -339,17 +689,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>ë°”ì´íŠ¸, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n ë°”ì´íŠ¸, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>줄, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n줄, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>칸</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n칸</numerusform></translation>
</message>
</context>
<context>
@@ -371,6 +721,14 @@ Please select whether you want to allow access.</source>
<translation>찾아보기</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>새로 고침</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>ì§ˆì˜ ì‘답:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì—´ 수 없습니다.</translation>
</message>
@@ -379,6 +737,24 @@ Please select whether you want to allow access.</source>
<translation>키 파ì¼ì„ ì—´ 수 ì—†ìŒ</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>레거시 키 íŒŒì¼ í˜•ì‹</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>차후 버전ì—ì„œ 지ì›ì´ ì¤‘ë‹¨ë  ì˜ˆì •ì¸ ë ˆê±°ì‹œ 키 파ì¼
+형ì‹ì„ 사용하고 있습니다.
+
+새 키 파ì¼ì„ ìƒì„±í•˜ëŠ” ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>ë” ì´ìƒ ì´ ê²½ê³  표시하지 않기</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>모든 파ì¼</translation>
</message>
@@ -390,14 +766,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>키 íŒŒì¼ ì„ íƒ</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>새로 고침</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>ì§ˆì˜ ì‘답:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -414,14 +782,14 @@ Please select whether you want to allow access.</source>
<translation>키 파ì¼ì„ ì—´ 수 ì—†ìŒ</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 열었습니다. í•  ì¼ì´ 없습니다.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì—´ 수 없습니다.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 열었습니다. í•  ì¼ì´ 없습니다.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>성공</translation>
</message>
@@ -439,28 +807,122 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ ì´ë¦„:</translation>
+ <source>General</source>
+ <translation>ì¼ë°˜</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 설명:</translation>
+ <source>Encryption</source>
+ <translation>암호화</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>ë¼ìš´ë“œ 수가 너무 높ìŒ</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Argon2 키 변형 ë¼ìš´ë“œ 수가 너무 높습니다.
+
+해당 수치를 사용하면 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì—´ ë•Œ 수 시간ì´ë‚˜ 수 ì¼ ì´ìƒ ì†Œìš”ë  ìˆ˜ 있습니다!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>ì´í•´í•¨, ìˆ«ìž ìœ ì§€</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>취소</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>ë¼ìš´ë“œ 수가 너무 ë‚®ìŒ</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>AES-KDF 키 변형 ë¼ìš´ë“œ 수가 너무 낮습니다.
+
+해당 수치를 ê³„ì† ì‚¬ìš©í•˜ë©´ ë°ì´í„°ë² ì´ìŠ¤ì˜ ë³´ì•ˆì„ ì‰½ê²Œ 해제할 수 있습니다!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>키 ìœ ë„ í•¨ìˆ˜ 변경ë˜ì§€ ì•ŠìŒ</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>새로운 키 ìœ ë„ í•¨ìˆ˜ ì¸ìžë¡œ 키를 변경할 수 없어서 키 ìœ ë„ í•¨ìˆ˜ë¥¼ 변경하지 않았습니다.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>암호화 알고리즘:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256비트(기본값)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256비트</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>키 ìœ ë„ í•¨ìˆ˜:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>변환 횟수:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>기본 ì‚¬ìš©ìž ì´ë¦„:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>1ì´ˆ 지연 벤치마í¬</translation>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>메모리 사용량:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>벤치마í¬</translation>
+ <source>Parallelism:</source>
+ <translation>스레드 수:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 메타ë°ì´í„°</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ ì´ë¦„:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 설명:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>기본 ì‚¬ìš©ìž ì´ë¦„:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>과거 ê¸°ë¡ ì„¤ì •</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -471,26 +933,27 @@ You can now save it.</source>
<translation>최대 과거 항목 í¬ê¸°:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>휴지통 사용</translation>
+ <source> MiB</source>
+ <translation>MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256비트(기본값)</translation>
+ <source>Use recycle bin</source>
+ <translation>휴지통 사용</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256비트</translation>
+ <source>Additional Database Settings</source>
+ <translation>추가 ë°ì´í„°ë² ì´ìŠ¤ 설정</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>알고리즘:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>압축 사용(추천)(&amp;C)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>루트</translation>
</message>
<message>
@@ -510,22 +973,48 @@ You can now save it.</source>
<translation>파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>KeePass 1 ë°ì´í„°ë² ì´ìŠ¤ 열기</translation>
+ <source>Unable to open the database.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì—´ 수 없습니다.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 ë°ì´í„°ë² ì´ìŠ¤</translation>
+ <source>File opened in read only mode.</source>
+ <translation>파ì¼ì„ ì½ê¸° ì „ìš© 모드로 열었습니다.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>CSV íŒŒì¼ ì—´ê¸°</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV 파ì¼</translation>
</message>
<message>
<source>All files (*)</source>
<translation>모든 íŒŒì¼ (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 합치기</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>KeePass 1 ë°ì´í„°ë² ì´ìŠ¤ 열기</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 ë°ì´í„°ë² ì´ìŠ¤</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>닫기 확�</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot;ì´(ê°€) 현재 편집 모드입니다.
+변경 ì‚¬í•­ì„ ë¬´ì‹œí•˜ê³  닫으시겠습니까?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>변경 사항 저장 확�</translation>
</message>
@@ -539,10 +1028,22 @@ Save changes?</source>
<translation>ë°ì´í„°ë² ì´ìŠ¤ì— 쓸 수 없습니다.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>암호</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>다른 ì´ë¦„으로 ë°ì´í„°ë² ì´ìŠ¤ 저장</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ CSV 파ì¼ë¡œ 내보내기</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>CSV 파ì¼ì— 기ë¡í•  수 없습니다.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>새 ë°ì´í„°ë² ì´ìŠ¤</translation>
</message>
@@ -561,12 +1062,6 @@ Please press cancel to finish your changes or discard them.</source>
취소를 눌러서 변경 ì‚¬í•­ì„ ì €ìž¥í•˜ê±°ë‚˜ 무시하십시오.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>ì´ ë°ì´í„°ë² ì´ìŠ¤ê°€ 저장ë˜ì§€ 않았습니다.
-ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 저장하거나 ìž ê¸ˆì„ í’€ 수 있습니다.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -575,69 +1070,23 @@ Otherwise your changes are lost.</source>
저장하지 ì•Šì€ ë³€ê²½ ì‚¬í•­ì€ ì†ì‹¤ë©ë‹ˆë‹¤.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot;ì´(ê°€) 현재 편집 모드입니다.
-변경 ì‚¬í•­ì„ ë¬´ì‹œí•˜ê³  닫으시겠습니까?</translation>
+ <source>Disable safe saves?</source>
+ <translation>안전 ì €ìž¥ì„ ë¹„í™œì„±í™” 하시겠습니까?</translation>
</message>
<message>
- <source>Export database to CSV file</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ CSV 파ì¼ë¡œ 내보내기</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV 파ì¼</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>CSV 파ì¼ì— 기ë¡í•  수 없습니다.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì—´ 수 없습니다.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 합치기</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>저장하려는 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 다른 KeePassXC ì¸ìŠ¤í„´ìŠ¤ì—ì„œ 잠갔습니다.
-ê·¸ëž˜ë„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>암호</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ê°€ ì´ë¯¸ 열림</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>열려는 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 다른 KeePassXC ì¸ìŠ¤í„´ìŠ¤ì—ì„œ 잠갔습니다.
-
-ê·¸ëž˜ë„ ì—¬ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>ì½ê¸° 전용으로 열기</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>파ì¼ì„ ì½ê¸° ì „ìš© 모드로 열었습니다.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>CSV íŒŒì¼ ì—´ê¸°</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXCì—ì„œ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 여러 번 저장하려고 ì‹œë„했으나 실패했습니다. íŒŒì¼ ë™ê¸°í™” 서비스ì—ì„œ ë°ì´í„°ë² ì´ìŠ¤ 파ì¼ì„ ìž ê·¼ 것 같습니다.
+안전 ì €ìž¥ì„ ë¹„í™œì„±í™” í•œ ë‹¤ìŒ ë‹¤ì‹œ ì‹œë„하시겠습니까?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>찾는 중...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>마스터 키 변경</translation>
</message>
@@ -658,6 +1107,14 @@ Do you want to open it anyway?</source>
<translation>ì •ë§ í•­ëª© %1개를 삭제하시겠습니까?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>í•­ëª©ì„ íœ´ì§€í†µìœ¼ë¡œ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>항목 &quot;%1&quot;ì„(를) 휴지통으로 ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>í•­ëª©ì„ íœ´ì§€í†µìœ¼ë¡œ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
</message>
@@ -666,28 +1123,28 @@ Do you want to open it anyway?</source>
<translation><numerusform>항목 %n개를 휴지통으로 ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>ê·¸ë£¹ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ <source>Execute command?</source>
+ <translation>ëª…ë ¹ì„ ì‹¤í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>ì •ë§ ê·¸ë£¹ &quot;%1&quot;ì„(를) 삭제하시겠습니까?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>ë‹¤ìŒ ëª…ë ¹ì„ ì‹¤í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>마스터 키를 계산할 수 ì—†ìŒ</translation>
+ <source>Remember my choice</source>
+ <translation>ì´ ì„ íƒ ê¸°ì–µí•˜ê¸°</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>í•­ëª©ì„ íœ´ì§€í†µìœ¼ë¡œ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ <source>Delete group?</source>
+ <translation>ê·¸ë£¹ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>항목 &quot;%1&quot;ì„(를) 휴지통으로 ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>ì •ë§ ê·¸ë£¹ &quot;%1&quot;ì„(를) 삭제하시겠습니까?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>찾는 중...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>마스터 키를 계산할 수 ì—†ìŒ</translation>
</message>
<message>
<source>No current database.</source>
@@ -706,20 +1163,8 @@ Do you want to open it anyway?</source>
<translation>ê²°ê³¼ ì—†ìŒ</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>ëª…ë ¹ì„ ì‹¤í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>ë‹¤ìŒ ëª…ë ¹ì„ ì‹¤í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>ì´ ì„ íƒ ê¸°ì–µí•˜ê¸°</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>요청 ìžë™ìœ¼ë¡œ 새로 고침</translation>
+ <source>File has changed</source>
+ <translation>íŒŒì¼ ë³€ê²½ë¨</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -730,8 +1175,10 @@ Do you want to open it anyway?</source>
<translation>요청 합치기</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 파ì¼ì´ 변경ë˜ì—ˆê³  저장하지 ì•Šì€ ë³€ê²½ ì‚¬í•­ì´ ìžˆìŠµë‹ˆë‹¤. 변경 ì‚¬í•­ì„ í•©ì¹˜ê² ìŠµë‹ˆê¹Œ?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 파ì¼ì´ 변경ë˜ì—ˆê³  저장하지 ì•Šì€ ë³€ê²½ ì‚¬í•­ì´ ìžˆìŠµë‹ˆë‹¤.
+변경 ì‚¬í•­ì„ í•©ì¹˜ê² ìŠµë‹ˆê¹Œ?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -747,6 +1194,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>TOTP í† í° ìƒì„±</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>닫기</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ì¼ë°˜</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>암호</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>만료</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ì‚¬ìš©ìž ì´ë¦„</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>ìžë™ ìž…ë ¥</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>찾기</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>ì†ì„±</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>첨부</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>메모</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>ì°½</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>시퀀스</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>찾기</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>비우기</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>하지 ì•ŠìŒ</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[보호ë¨]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>사용 안함</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>사용함</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -773,6 +1303,30 @@ Do you want to open it anyway?</source>
<translation>과거 기ë¡</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH ì—ì´ì „트</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(암호화ë¨)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>비밀 키 ì„ íƒ</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>비밀 키로 ì‚¬ìš©í•˜ê¸°ì— íŒŒì¼ì´ 너무 í¼</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>비밀 키를 ì—´ 수 ì—†ìŒ</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>항목 과거 기ë¡</translation>
</message>
@@ -793,21 +1347,20 @@ Do you want to open it anyway?</source>
<translation>새 ì†ì„±</translation>
</message>
<message>
- <source>Select file</source>
- <translation>íŒŒì¼ ì„ íƒ</translation>
+ <source>Confirm Remove</source>
+ <translation>ì‚­ì œ 확ì¸</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>파ì¼ì„ ì—´ 수 없습니다</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>ì´ ì†ì„±ì„ 삭제하시겠습니까?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>첨부 항목 저장</translation>
+ <source>[PROTECTED]</source>
+ <translation>[보호ë¨]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>첨부 í•­ëª©ì„ ì €ìž¥í•  수 없습니다:</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>보거나 편집하려면 누르십시오</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -826,20 +1379,16 @@ Do you want to open it anyway?</source>
<translation>1ë…„</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>ì‚­ì œ 확ì¸</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>ì´ ì†ì„±ì„ 삭제하시겠습니까?</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[보호ë¨] 보거나 편집하려면 누르십시오</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>ì´ ì²¨ë¶€ í•­ëª©ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -857,18 +1406,6 @@ Do you want to open it anyway?</source>
<translation>삭제</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>첨부</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>저장</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>열기</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>ì´ë¦„ 편집</translation>
</message>
@@ -880,24 +1417,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>ë³´ì´ê¸°</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>ì´ í•­ëª© ìžë™ ìž…ë ¥ 사용</translation>
+ <source>Attachments</source>
+ <translation>첨부</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>창 제목:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>ì´ í•­ëª© ìžë™ ìž…ë ¥ 사용</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -908,16 +1445,24 @@ Do you want to open it anyway?</source>
<translation>ì‚¬ìš©ìž ì •ì˜ ìžë™ ìž…ë ¥ 시퀀스 사용(&amp;U):</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>기본 시퀀스 사용(&amp;Q)</translation>
+ <source>Window Associations</source>
+ <translation>ì°½ ì—°ê²°</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>ì‚¬ìš©ìž ì •ì˜ ì‹œí€€ìŠ¤ 설정(&amp;M):</translation>
+ <source>-</source>
+ <translation>-</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>ì°½ ì—°ê²°</translation>
+ <source>Window title:</source>
+ <translation>창 제목:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -942,12 +1487,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>제목:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>ì‚¬ìš©ìž ì´ë¦„:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -958,20 +1499,104 @@ Do you want to open it anyway?</source>
<translation>암호 확ì¸:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>제목:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>만료 기간</translation>
+ <source>Notes</source>
+ <translation>메모</translation>
</message>
<message>
<source>Presets</source>
<translation>사전 설정</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>메모:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>메모 ë¶€ë¶„ì„ í‘œì‹œí•˜ë ¤ë©´ ì²´í¬ ìƒìžë¥¼ 전환하십시오.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>ì‚¬ìš©ìž ì´ë¦„:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>만료 기간</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>í¼</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>ë‹¤ìŒ ì‹œê°„ ì´í›„ì— ì—ì´ì „트ì—ì„œ 키 ì‚­ì œ</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>ì´ˆ</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>지문</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 잠그거나 ë‹«ì„ ë•Œ ì—ì´ì „트ì—ì„œ 키 ì‚­ì œ</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>공개 키</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 열거나 잠금 해제할 ë•Œ ì—ì´ì „íŠ¸ì— í‚¤ 추가</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>주ì„</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>복호화</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>í´ë¦½ë³´ë“œì— 복사</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>비밀 키</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>외부 파ì¼</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>찾아보기...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>첨부</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>ì—ì´ì „íŠ¸ì— ì¶”ê°€</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>ì—ì´ì „트ì—ì„œ ì‚­ì œ</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>ì´ í‚¤ë¥¼ 사용할 ë•Œ 사용ìžì—게 묻기</translation>
</message>
</context>
<context>
@@ -1043,6 +1668,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>기본 ì•„ì´ì½˜ 사용(&amp;U)</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>ì‚¬ìš©ìž ì •ì˜ ì•„ì´ì½˜ 사용(&amp;M)</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>ì‚¬ìš©ìž ì •ì˜ ì•„ì´ì½˜ 추가</translation>
</message>
@@ -1051,6 +1684,18 @@ Do you want to open it anyway?</source>
<translation>ì‚¬ìš©ìž ì •ì˜ ì•„ì´ì½˜ ì‚­ì œ</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>파비콘 다운로드</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>íŒŒë¹„ì½˜ì„ ë‹¤ìš´ë¡œë“œí•  수 없습니다.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>힌트: ë„구 &gt; 설정 &gt; 보안ì—ì„œ Googleì„ ëŒ€ì²´ 항목으로 사용할 수 있습니다</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>그림</translation>
</message>
@@ -1063,24 +1708,12 @@ Do you want to open it anyway?</source>
<translation>그림 ì„ íƒ</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>파비콘 다운로드</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>íŒŒë¹„ì½˜ì„ ë‹¤ìš´ë¡œë“œí•  수 없습니다.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>ì•„ì´ì½˜ì„ ì½ì„ 수 ì—†ìŒ</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>기본 ì•„ì´ì½˜ 사용(&amp;U)</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>ì‚¬ìš©ìž ì •ì˜ ì•„ì´ì½˜ 사용(&amp;M)</translation>
+ <source>Custom icon already exists</source>
+ <translation>ì‚¬ìš©ìž ì •ì˜ ì•„ì´ì½˜ì´ ì´ë¯¸ 존재함</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1090,14 +1723,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>ì´ ì•„ì´ì½˜ì„ 항목 %1ê°œì—ì„œ 사용하고 있으며, ì‚­ì œ ì‹œ 기본 ì•„ì´ì½˜ìœ¼ë¡œ 대체ë©ë‹ˆë‹¤. ê·¸ëž˜ë„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>힌트: ë„구 &gt; 설정 &gt; 보안ì—ì„œ Googleì„ ëŒ€ì²´ 항목으로 사용할 수 있습니다</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>ì‚¬ìš©ìž ì •ì˜ ì•„ì´ì½˜ì´ ì´ë¯¸ 존재함</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1117,15 +1742,129 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>삭제</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - 사본</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>ì´ë¦„</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>í¬ê¸°</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>í¼</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>추가</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>삭제</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>열기</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>저장</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>íŒŒì¼ ì„ íƒ</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>ì‚­ì œ 확ì¸</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>첨부 항목 저장</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>디렉터리를 만들 수 ì—†ìŒ:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>기존 íŒŒì¼ &quot;%1&quot;ì˜ ë‚´ìš©ì„ ì²¨ë¶€ 항목으로 ë®ì–´ 쓰시겠습니까?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>ë®ì–´ì“°ê¸° 확ì¸</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>첨부 í•­ëª©ì„ ì €ìž¥í•  수 ì—†ìŒ:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>첨부 í•­ëª©ì„ ì—´ 수 ì—†ìŒ:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>첨부 í•­ëª©ì„ ì—´ 수 ì—†ìŒ:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>파ì¼ì„ ì—´ 수 ì—†ìŒ:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1154,6 +1893,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>참조: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>그룹</translation>
</message>
@@ -1170,9 +1914,67 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>참조: </translation>
+ <source>Never</source>
+ <translation>하지 ì•ŠìŒ</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>암호</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>메모</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>만료 기간</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>ìƒì„±</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>수정ë¨</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>접근함</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>첨부</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>보기 ì‚¬ìš©ìž ì •ì˜</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>ì‚¬ìš©ìž ì´ë¦„ 숨기기</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>암호 숨기기</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>ì°½ì— ë§žì¶¤</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>ë‚´ìš©ì— ë§žì¶¤</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>기본값으로 ë³µì›</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1183,6 +1985,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: 파ì¼ì„ 저장할 수 ì—†ìŒ!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>네ì´í‹°ë¸Œ 메시징 스í¬ë¦½íŠ¸ 파ì¼ì„ 저장할 수 없습니다.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1232,6 +2045,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>모든 그룹ì—ì„œ 최소 1ê¸€ìž ì´ìƒ í¬í•¨</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>확장 ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1245,6 +2062,361 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>마스터 키를 계산할 수 없습니다</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>ì§ˆì˜ ì‘ë‹µì„ ì‹¤í–‰í•  수 없습니다.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>키가 잘못ë˜ì—ˆê±°ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>ì§ˆì˜ ì‘ë‹µì„ ì‹¤í–‰í•  수 없습니다.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>마스터 키를 계산할 수 없습니다</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ í—¤ë” ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>마스터 키를 계산할 수 없습니다</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>ìž˜ëª»ëœ í—¤ë” ì²´í¬ì„¬ í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>í—¤ë” SHA256ì´ ì¼ì¹˜í•˜ì§€ ì•ŠìŒ</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>키가 잘못ë˜ì—ˆê±°ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.(HMACì´ ì¼ì¹˜í•˜ì§€ ì•ŠìŒ)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>알 수 없는 암호화</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>ìž˜ëª»ëœ í—¤ë” ID í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>ìž˜ëª»ëœ í—¤ë” í•„ë“œ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>ìž˜ëª»ëœ í—¤ë” ë°ì´í„° 길ì´</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>í—¤ë”ì— ìžˆëŠ” 키 ìœ ë„ í•¨ìˆ˜ ì¸ìžì— 필요한 버í¼ë¥¼ ì—´ 수 ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>지ì›í•˜ì§€ 않는 키 ìœ ë„ í•¨ìˆ˜(KDF) ë° ìž˜ëª»ëœ ì¸ìž</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>KDBX4 파ì¼ì— 레거시 í—¤ë” í•„ë“œê°€ 있습니다.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>ìž˜ëª»ëœ ë‚´ë¶€ í—¤ë” ID í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>ìž˜ëª»ëœ ë‚´ë¶€ í—¤ë” í•„ë“œ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>ìž˜ëª»ëœ ë‚´ë¶€ í—¤ë” ë°”ì´ë„ˆë¦¬ í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>지ì›í•˜ì§€ 않는 KeePass 메타ë°ì´í„° 저장소 버전입니다.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 항목 ì´ë¦„ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 ì´ë¦„ ë°ì´í„°</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 ê°’ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 ê°’ ë°ì´í„°</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 Bool 항목 ê°’ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 Int32 항목 ê°’ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 UInt32 항목 ê°’ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 Int64 항목 ê°’ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 UInt64 항목 ê°’ 길ì´</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 항목 형ì‹</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ìž˜ëª»ëœ ë©”íƒ€ë°ì´í„° 저장소 í•„ë“œ í˜•ì‹ í¬ê¸°</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>ìž˜ëª»ëœ ëŒ€ì¹­ 키 암호화 알고리즘입니다.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>ìž˜ëª»ëœ ëŒ€ì¹­ 키 암호화 IV í¬ê¸°ìž…니다.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>마스터 키를 계산할 수 없습니다</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>키 ìœ ë„ í•¨ìˆ˜ ì¸ìž 메타ë°ì´í„° 저장소를 ì§ë ¬í™”í•  수 ì—†ìŒ</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>ìž˜ëª»ë¨ ì•”í˜¸í™” UUID 길ì´</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>지ì›í•˜ì§€ 않는 암호화</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>ìž˜ëª»ëœ ì••ì¶• 플래그 길ì´</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>지ì›í•˜ì§€ 않는 압축 알고리즘</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>ìž˜ëª»ëœ ë§ˆìŠ¤í„° 시드 í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>ìž˜ëª»ëœ ë³€í˜• 시드 í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>ìž˜ëª»ëœ ë³€í˜• ë¼ìš´ë“œ í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>ìž˜ëª»ëœ ì‹œìž‘ ë°”ì´íŠ¸ í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>ìž˜ëª»ëœ ë¬´ìž‘ìœ„ 스트림 ID í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>ìž˜ëª»ëœ ë‚´ë¶€ 무작위 스트림 암호화</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>KeePass ë°ì´í„°ë² ì´ìŠ¤ê°€ 아닙니다.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>ì„ íƒí•œ 파ì¼ì€ KeePass 1 ë°ì´í„°ë² ì´ìŠ¤(.kdb)입니다.
+
+ë°ì´í„°ë² ì´ìŠ¤ &gt; &apos;KeePass 1 ë°ì´í„°ë² ì´ìŠ¤ 가져오기...&apos; 메뉴ì—ì„œ í•­ëª©ì„ ê°€ì ¸ì˜¬ 수 있습니다.
+ì´ ìž‘ì—…ì€ í•œ 방향으로만 ì´ë¤„집니다. 가져온 ë°ì´í„°ë² ì´ìŠ¤ëŠ” KeePassX 0.4 버전ì—ì„œ ì—´ 수 없습니다.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>지ì›í•˜ì§€ 않는 KeePass 2 ë°ì´í„°ë² ì´ìŠ¤ 버전입니다.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML 처리 실패: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>루트 그룹 ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>ì•„ì´ì½˜ UUID나 ë°ì´í„° ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>ì‚¬ìš©ìž ì •ì˜ ë°ì´í„° 키나 ê°’ì´ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>여러 ê°œì˜ ê·¸ë£¹ ì›ì†Œ</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>빈 그룹 UUID</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ ì•„ì´ì½˜ 번호</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>ìž˜ëª»ëœ EnableAutoType ê°’</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>ìž˜ëª»ëœ EnableSearching ê°’</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>그룹 UUID를 ì°¾ì„ ìˆ˜ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>비어 있는 DeleteObject UUID</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>DeletedObject UUID나 ì‹œê°„ì´ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>빈 항목 UUID</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© ì•„ì´ì½˜ 번호</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>과거 ê¸°ë¡ í•­ëª©ì˜ ê³¼ê±° ê¸°ë¡ ì›ì†Œ</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>항목 UUID를 ì°¾ì„ ìˆ˜ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>다른 UUID를 사용하는 과거 ê¸°ë¡ ì›ì†Œ</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>항목 문ìžì—´ì„ 복호화할 수 ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>ì¤‘ë³µëœ ì‚¬ìš©ìž ì •ì˜ ì†ì„±ì´ 있ìŒ</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>항목 문ìžì—´ 키나 ê°’ì´ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>ì¤‘ë³µëœ ì²¨ë¶€ í•­ëª©ì´ ìžˆìŒ</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>항목 ë°”ì´ë„ˆë¦¬ 키나 ê°’ì´ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>ìžë™ ìž…ë ¥ ì—°ê²° ì°½ì´ë‚˜ 시퀀스가 ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>ìž˜ëª»ëœ ì´ì§„ê°’</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>ìž˜ëª»ëœ ë‚ ì§œ/시간 ê°’</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>ìž˜ëª»ëœ ìƒ‰ìƒ ê°’</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>ìž˜ëª»ëœ ìƒ‰ìƒ RGB 부분</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>ìž˜ëª»ëœ ìˆ«ìž ê°’</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>ìž˜ëª»ëœ UUID ê°’</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>ë°”ì´ë„ˆë¦¬ ì••ì¶•ì„ í•´ì œí•  수 ì—†ìŒ</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1274,6 +2446,35 @@ Do you want to open it anyway?</source>
<translation>지ì›í•˜ì§€ 않는 KeePass ë°ì´í„°ë² ì´ìŠ¤ 버전입니다.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>암호화 IV를 ì½ì„ 수 ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ 개수</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© 개수</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>ìž˜ëª»ëœ ë‚´ìš© í•´ì‹œ í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>ìž˜ëª»ëœ ë³€í˜• 시드 í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>ìž˜ëª»ëœ ë³€í˜• ë¼ìš´ë“œ í¬ê¸°</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>그룹 트리를 만들 수 ì—†ìŒ</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>루트</translation>
</message>
@@ -1285,129 +2486,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>키가 잘못ë˜ì—ˆê±°ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>KeePass ë°ì´í„°ë² ì´ìŠ¤ê°€ 아닙니다.</translation>
+ <source>Key transformation failed</source>
+ <translation>키 변형 실패</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>지ì›í•˜ì§€ 않는 KeePass ë°ì´í„°ë² ì´ìŠ¤ 버전입니다.</translation>
+ <source>Invalid group field type number</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ í•„ë“œ í˜•ì‹ ë²ˆí˜¸</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>키가 잘못ë˜ì—ˆê±°ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.</translation>
+ <source>Invalid group field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>마스터 키를 계산할 수 없습니다</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>ì½ì€ 그룹 í•„ë“œ ë°ì´í„°ì™€ í¬ê¸°ê°€ ì¼ì¹˜í•˜ì§€ ì•ŠìŒ</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>ì§ˆì˜ ì‘ë‹µì„ ì‹¤í–‰í•  수 없습니다.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ ID í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>ì„ íƒí•œ 파ì¼ì€ KeePass 1 ë°ì´í„°ë² ì´ìŠ¤(.kdb)입니다.
-
-ë°ì´í„°ë² ì´ìŠ¤ &gt; &apos;KeePass 1 ë°ì´í„°ë² ì´ìŠ¤ 가져오기...&apos; 메뉴ì—ì„œ í•­ëª©ì„ ê°€ì ¸ì˜¬ 수 있습니다.
-ì´ ìž‘ì—…ì€ í•œ 방향으로만 ì´ë¤„집니다. 가져온 ë°ì´í„°ë² ì´ìŠ¤ëŠ” KeePassX 0.4 버전ì—ì„œ ì—´ 수 없습니다.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ ìƒì„± 시간 í•„ë“œ í¬ê¸°</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>ì§ˆì˜ ì‘ë‹µì„ ì‹¤í–‰í•  수 없습니다.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ 수정 시간 í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>마스터 키를 계산할 수 없습니다</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ ì ‘ê·¼ 시간 í•„ë“œ í¬ê¸°</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>암호화 함수를 시험하는 중 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ 만료 시간 í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - 오류</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ ì•„ì´ì½˜ í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>잠금 파ì¼ì„ 만들 수 없습니다. ë‹¨ì¼ ì¸ìŠ¤í„´ìŠ¤ 모드가 비활성화ë˜ì—ˆìŠµë‹ˆë‹¤.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ 단계 í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>다른 KeePassXC ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ 실행 중입니다.</translation>
+ <source>Invalid group field type</source>
+ <translation>ìž˜ëª»ëœ ê·¸ë£¹ í•„ë“œ 형싞</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>존재하는 ë‹¨ì¼ ì¸ìŠ¤í„´ìŠ¤ 잠금 파ì¼ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. 새 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 실행합니다.</translation>
+ <source>Missing group id or level</source>
+ <translation>그룹 ID나 단계가 ì—†ìŒ</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 열기</translation>
+ <source>Missing entry field type number</source>
+ <translation>그룹 항목 í˜•ì‹ ë²ˆí˜¸ê°€ ì—†ìŒ</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 설정</translation>
+ <source>Invalid entry field size</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>í´ë¦½ë³´ë“œì— ì‚¬ìš©ìž ì´ë¦„ 복사</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>ì½ì€ 항목 í•„ë“œ ë°ì´í„°ì™€ í¬ê¸°ê°€ ì¼ì¹˜í•˜ì§€ ì•ŠìŒ</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>í´ë¦½ë³´ë“œì— 암호 복사</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© UUID í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>Settings</source>
- <translation>설정</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© 그룹 ID í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>ë„구 ëª¨ìŒ ë³´ì´ê¸°</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© ì•„ì´ì½˜ í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>read-only</source>
- <translation>ì½ê¸° ì „ìš©</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© ìƒì„± 시간 í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>창 전환</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© 수정 시간 í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 ë°ì´í„°ë² ì´ìŠ¤</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© 만료 시간 í•„ë“œ í¬ê¸°</translation>
</message>
<message>
- <source>All files</source>
- <translation>모든 파ì¼</translation>
+ <source>Invalid entry field type</source>
+ <translation>ìž˜ëª»ëœ í•­ëª© í•„ë“œ í¬ê¸°</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>복구한 ë°ì´í„°ë² ì´ìŠ¤ 저장</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>존재하는 ë‹¨ì¼ ì¸ìŠ¤í„´ìŠ¤ 잠금 파ì¼ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. 새 ì¸ìŠ¤í„´ìŠ¤ë¥¼ 실행합니다.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ì— 쓸 수 없습니다.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>잠금 파ì¼ì„ 만들 수 없습니다. ë‹¨ì¼ ì¸ìŠ¤í„´ìŠ¤ 모드가 비활성화ë˜ì—ˆìŠµë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>다른 KeePassXC ì¸ìŠ¤í„´ìŠ¤ê°€ ì´ë¯¸ 실행 중입니다.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>암호화 함수를 시험하는 중 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - 오류</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤(&amp;D)</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>최근 ë°ì´í„°ë² ì´ìŠ¤(&amp;R)</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>가져오기</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>ë„움ë§(&amp;H)</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>항목(&amp;N)</translation>
</message>
@@ -1416,12 +2629,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>ì†ì„±ì„ í´ë¦½ë³´ë“œì— 복사(&amp;R)</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>시간 기반 ì¼íšŒìš© 암호</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>그룹(&amp;G)</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>보기(&amp;V)</translation>
+ <source>&amp;Tools</source>
+ <translation>ë„구(&amp;T)</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1432,6 +2649,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>ì •ë³´(&amp;A)</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 열기(&amp;O)...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>ë°ì´í„°ë² ì´ìŠ¤ 저장(&amp;S)</translation>
</message>
@@ -1472,24 +2693,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>그룹 삭제(&amp;D)</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 설정(&amp;D)</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>다른 ì´ë¦„으로 ë°ì´í„°ë² ì´ìŠ¤ 저장(&amp;V)...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>항목 복제(&amp;C)</translation>
+ <source>Change &amp;master key...</source>
+ <translation>마스터 키 변경(&amp;M)...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>시간 ë™ê¸° ì¼íšŒìš© 암호</translation>
+ <source>&amp;Database settings</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 설정(&amp;D)</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>TOTP 복사(&amp;T)</translation>
+ <source>Database settings</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 설정</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>TOTP ë³´ì´ê¸°</translation>
+ <source>&amp;Clone entry</source>
+ <translation>항목 복제(&amp;C)</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1500,14 +2721,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>ì‚¬ìš©ìž ì´ë¦„ 복사(&amp;U)</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>í´ë¦½ë³´ë“œì— ì‚¬ìš©ìž ì´ë¦„ 복사</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>암호 복사(&amp;Y)</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>í´ë¦½ë³´ë“œì— 암호 복사</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>설정(&amp;S)</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>암호 ìƒì„±ê¸°</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>ìžë™ ìž…ë ¥ 실행(&amp;P)</translation>
</message>
@@ -1524,165 +2757,222 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>제목(&amp;T)</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>í´ë¦½ë³´ë“œì— 제목 복사</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>URL(&amp;U)</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>í´ë¦½ë³´ë“œì— URL 복사</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>메모(&amp;N)</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>암호 ìƒì„±ê¸°</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>í´ë¦½ë³´ë“œì— 메모 복사</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>과거 ê¸°ë¡ ì‚­ì œ</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>CSV 파ì¼ë¡œ 내보내기(&amp;E)...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤(&amp;D)</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>KeePass1 ë°ì´í„°ë² ì´ìŠ¤ 가져오기...</translation>
</message>
<message>
- <source>Import</source>
- <translation>가져오기</translation>
+ <source>Import CSV file...</source>
+ <translation>CSV íŒŒì¼ ê°€ì ¸ì˜¤ê¸°...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>ë„구(&amp;T)</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 복구(&amp;P)...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>TOTP ë³´ì´ê¸°</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>TOTP 설정...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>TOTP 복사(&amp;T)</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>휴지통 비우기(&amp;M)</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>휴지통 비우기</translation>
+ <source>Clear history</source>
+ <translation>과거 ê¸°ë¡ ì‚­ì œ</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>설정 íŒŒì¼ %1ì— ì ‘ê·¼í•  수 ì—†ìŒ</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>KeePassXC ë내기</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP 브ë¼ìš°ì € í†µí•©ì„ ì‚¬ìš©í•˜ê³  있는 것 같습니다. ì´ ê¸°ëŠ¥ì€ í기 예고ë˜ì—ˆê³  ì°¨í›„ì— ì‚­ì œë  ì˜ˆì •ìž…ë‹ˆë‹¤.&lt;br&gt;KeePassXC-브ë¼ìš°ì €ë¡œ êµì²´í•˜ì‹­ì‹œì˜¤! ì´ì „ ìž‘ì—…ì— ë„ì›€ì´ í•„ìš”í•˜ë©´ &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;ì´ì „ ê°€ì´ë“œ&lt;/a&gt;를 참고하십시오(경고 %1/3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>YubiKeyì˜ ë‹¨ì¶”ë¥¼ 누르십시오!</translation>
+ <source>read-only</source>
+ <translation>ì½ê¸° ì „ìš©</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>ë„움ë§(&amp;H)</translation>
+ <source>Settings</source>
+ <translation>설정</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 열기(&amp;O)...</translation>
+ <source>Toggle window</source>
+ <translation>창 전환</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>다른 ì´ë¦„으로 ë°ì´í„°ë² ì´ìŠ¤ 저장(&amp;V)...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>KeePassXC ë내기</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>마스터 키 변경(&amp;M)...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 ë°ì´í„°ë² ì´ìŠ¤</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>CSV 파ì¼ë¡œ 내보내기(&amp;E)...</translation>
+ <source>All files</source>
+ <translation>모든 파ì¼</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>KeePass1 ë°ì´í„°ë² ì´ìŠ¤ 가져오기...</translation>
+ <source>Open database</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 열기</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>CSV íŒŒì¼ ê°€ì ¸ì˜¤ê¸°...</translation>
+ <source>Save repaired database</source>
+ <translation>복구한 ë°ì´í„°ë² ì´ìŠ¤ 저장</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 복구(&amp;P)...</translation>
+ <source>Writing the database failed.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ì— 쓸 수 없습니다.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>TOTP 설정...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>YubiKeyì˜ ë‹¨ì¶”ë¥¼ 누르십시오!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>경고: KeePassXC 불안정 빌드를 사용하고 있습니다!
+ë°ì´í„°ë² ì´ìŠ¤ 파ì¼ì´ ìž˜ëª»ë  ê°€ëŠ¥ì„±ì´ ë†’ìœ¼ë¯€ë¡œ í•­ìƒ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 백업하십시오.
+ì´ ë²„ì „ì€ ì‹¤ì œ 환경ì—ì„œ ì‚¬ìš©ì„ ê°€ì •í•˜ì§€ 않습니다.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>대화 ìƒìž</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>ìž˜ëª»ëœ í‚¤ 파ì¼, OpenSSH 키가 필요함</translation>
</message>
<message>
- <source>General</source>
- <translation>ì¼ë°˜</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM 경계가 ì¼ì¹˜í•˜ì§€ ì•ŠìŒ</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>ì¸ì¦ ì •ë³´ê°€ 필요할 ë•Œ 알림 표시(&amp;O)</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Base64 디코드 실패</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>ì‚¬ìš©ìž ì´ë¦„ 순으로 ì¼ì¹˜í•˜ëŠ” 항목 ì •ë ¬(&amp;U)</translation>
+ <source>Key file way too small.</source>
+ <translation>키 파ì¼ì´ 너무 작습니다.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— 있는 항목ì—ì„œ 모든 ì €ìž¥ëœ ê¶Œí•œ ì‚­ì œ(&amp;M)</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>키 íŒŒì¼ ë§¤ì§ í—¤ë” IDê°€ 잘못ë¨</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>고급</translation>
+ <source>Found zero keys</source>
+ <translation>키를 ì°¾ì„ ìˆ˜ ì—†ìŒ</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>í•­ìƒ í•­ëª© ì ‘ê·¼ 허용(&amp;A)</translation>
+ <source>Failed to read public key.</source>
+ <translation>공개 키를 ì½ì„ 수 없습니다.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>í•­ìƒ í•­ëª© ì—…ë°ì´íŠ¸ 허용(&amp;U)</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>키 파ì¼ì´ 잘못ë¨, 비밀 키를 ì½ì„ 수 ì—†ìŒ</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>모든 열린 ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ ì¼ì¹˜í•˜ëŠ” 항목 검색(&amp;H)</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>암호화 해제할 비밀 키 페ì´ë¡œë“œê°€ ì—†ìŒ</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP í¬íŠ¸:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>키 ìœ ë„ í•¨ìˆ˜ë¥¼ 암호화 ì—†ì´ ì‹¤í–‰í•˜ë ¤ê³  함</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>기본 í¬íŠ¸: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>ì´ í‚¤ë¥¼ 복호화하려면 암호가 필요함</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ê°€ ìž ê²¼ì„ ë•Œ 잠금 í•´ì œ 요청(&amp;Q)</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>키 ìœ ë„ ì‹¤íŒ¨, 키 파ì¼ì´ 유효합니까?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>제목 순으로 ì¼ì¹˜í•˜ëŠ” 항목 ì •ë ¬(&amp;M)</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>복호화 실패, 암호가 올바릅니까?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC는 127.0.0.1ì˜ ë‹¤ìŒ í¬íŠ¸ì—ì„œ ì‘ë‹µì„ ê¸°ë‹¤ë¦½ë‹ˆë‹¤</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>공개 키를 ì½ëŠ” 중 예ìƒí•˜ì§€ 못한 ê³³ì—ì„œ 파ì¼ì´ ë남</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>권한 있는 í¬íŠ¸ì— ë°”ì¸ë“œí•  수 ì—†ìŒ</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>비밀 키를 ì½ëŠ” 중 예ìƒí•˜ì§€ 못한 ê³³ì—ì„œ 파ì¼ì´ ë남</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>1024 ì´í•˜ì˜ ê¶Œí•œì´ í•„ìš”í•œ í¬íŠ¸ì— ë°”ì¸ë“œí•  수 없습니다!
-기본 í¬íŠ¸ 19455를 사용합니다.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>공개 키가 비어 있어서 기ë¡í•  수 ì—†ìŒ</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— 있는 모든 ê³µìœ ëœ ì•”í˜¸í™” 키 ì‚­ì œ(&amp;E)</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>공개 키를 기ë¡í•˜ëŠ” 중 예ìƒí•˜ì§€ 못한 ê³³ì—ì„œ 파ì¼ì´ ë남</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&quot;KPH: &quot;ë¡œ 시작하는 고급 문ìžì—´ í•„ë“œ 반환(&amp;R)</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>비밀 키가 비어 있어서 기ë¡í•  수 ì—†ìŒ</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>문ìžì—´ 필드를 ìžë™ìœ¼ë¡œ 만들거나 ì—…ë°ì´íŠ¸í•˜ëŠ” ê²ƒì€ ì§€ì›ë˜ì§€ 않습니다.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>비밀 키를 기ë¡í•˜ëŠ” 중 예ìƒí•˜ì§€ 못한 ê³³ì—ì„œ 파ì¼ì´ ë남</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>대화 ìƒìž</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1693,6 +2983,15 @@ Using default port 19455.</source>
<translation>KeePassHTTP 서버 사용</translation>
</message>
<message>
+ <source>General</source>
+ <translation>ì¼ë°˜</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>ì¸ì¦ ì •ë³´ê°€ 필요할 ë•Œ 알림 표시(&amp;O)</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>ë„ë©”ì¸ì´ ì¼ì¹˜í•˜ëŠ” 모든 항목 대신 지정한 URLê³¼ ì¼ì¹˜í•˜ëŠ” 항목만 반환합니다.</translation>
</message>
@@ -1701,6 +3000,10 @@ Using default port 19455.</source>
<translation>URLê³¼ ì¼ì¹˜í•˜ëŠ” 항목만 반환(&amp;R)</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ê°€ ìž ê²¼ì„ ë•Œ 잠금 í•´ì œ 요청(&amp;Q)</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>ê°™ì€ ìŠ¤í‚¤ë§ˆ(http://, https://, ftp://)를 사용하는 항목만 반환합니다.</translation>
</message>
@@ -1709,27 +3012,108 @@ Using default port 19455.</source>
<translation>URL 스키마 ì¼ì¹˜(&amp;M)</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>ì‚¬ìš©ìž ì´ë¦„ 순으로 ì¼ì¹˜í•˜ëŠ” 항목 ì •ë ¬(&amp;U)</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>제목 순으로 ì¼ì¹˜í•˜ëŠ” 항목 ì •ë ¬(&amp;M)</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— 있는 모든 ê³µìœ ëœ ì•”í˜¸í™” 키 ì‚­ì œ(&amp;E)</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— 있는 항목ì—ì„œ 모든 ì €ìž¥ëœ ê¶Œí•œ ì‚­ì œ(&amp;M)</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>암호 ìƒì„±ê¸°</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>고급</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>í•­ìƒ í•­ëª© ì ‘ê·¼ 허용(&amp;A)</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>í•­ìƒ í•­ëª© ì—…ë°ì´íŠ¸ 허용(&amp;U)</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>ì„ íƒí•œ ë°ì´í„°ë² ì´ìŠ¤ë§Œ í´ë¼ì´ì–¸íŠ¸ì™€ ì—°ê²°í•  수 있습니다.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>ë‹¤ìŒ ì˜µì…˜ì€ ìœ„í—˜í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤!
-ë¬´ì—‡ì„ í•˜ëŠ” 지 알고 있는 경우ì—만 변경하십시오.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>모든 열린 ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ ì¼ì¹˜í•˜ëŠ” 항목 검색(&amp;H)</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>문ìžì—´ 필드를 ìžë™ìœ¼ë¡œ 만들거나 ì—…ë°ì´íŠ¸í•˜ëŠ” ê²ƒì€ ì§€ì›ë˜ì§€ 않습니다.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot;ë¡œ 시작하는 고급 문ìžì—´ í•„ë“œ 반환(&amp;R)</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP í¬íŠ¸:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>기본 í¬íŠ¸: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC는 127.0.0.1ì˜ ë‹¤ìŒ í¬íŠ¸ì—ì„œ ì‘ë‹µì„ ê¸°ë‹¤ë¦½ë‹ˆë‹¤</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;경고:&lt;/b&gt; ë‹¤ìŒ ì˜µì…˜ì€ ì‹ ì¤‘í•˜ê²Œ 사용하십시오!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP는 í기 예고ë˜ì—ˆê³  ì°¨í›„ì— ì‚­ì œë  ì˜ˆì •ìž…ë‹ˆë‹¤.&lt;br&gt;KeePassXC-브ë¼ìš°ì €ë¡œ êµì²´í•˜ì‹­ì‹œì˜¤! ì´ì „ ìž‘ì—…ì— ë„ì›€ì´ í•„ìš”í•˜ë©´ &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;ì´ì „ ê°€ì´ë“œ&lt;/a&gt;를 참고하십시오.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>권한 있는 í¬íŠ¸ì— ë°”ì¸ë“œí•  수 ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>1024 ì´í•˜ì˜ ê¶Œí•œì´ í•„ìš”í•œ í¬íŠ¸ì— ë°”ì¸ë“œí•  수 없습니다!
+기본 í¬íŠ¸ 19455를 사용합니다.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>암호:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>ê°•ë„</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>엔트로피</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>암호</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>ë¬¸ìž ì¢…ë¥˜</translation>
</message>
@@ -1750,38 +3134,50 @@ Change them only if you know what you are doing.</source>
<translation>특수 문ìž</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>확장 ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>비슷하게 ìƒê¸´ ë¬¸ìž ì œì™¸</translation>
</message>
<message>
- <source>Accept</source>
- <translation>사용</translation>
+ <source>Pick characters from every group</source>
+ <translation>모든 그룹ì—ì„œ ê¸€ìž ì„ íƒ</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>길ì´(&amp;L):</translation>
</message>
<message>
- <source>strength</source>
- <translation>ê°•ë„</translation>
+ <source>Passphrase</source>
+ <translation>암구호</translation>
</message>
<message>
- <source>entropy</source>
- <translation>엔트로피</translation>
+ <source>Wordlist:</source>
+ <translation>단어 목ë¡:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>길ì´(&amp;L):</translation>
+ <source>Word Count:</source>
+ <translation>단어 개수:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>모든 그룹ì—ì„œ ê¸€ìž ì„ íƒ</translation>
+ <source>Word Separator:</source>
+ <translation>단어 구분ìž:</translation>
</message>
<message>
<source>Generate</source>
<translation>ìƒì„±</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>복사</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>사용</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>닫기</translation>
</message>
@@ -1799,51 +3195,276 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>매우 약함</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>약함</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>좋ìŒ</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>매우 좋ìŒ</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>암호</translation>
+ <source>Database not opened</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 열지 않았ìŒ</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>확장 ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 해시를 사용할 수 ì—†ìŒ</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>암구호</translation>
+ <source>Client public key not received</source>
+ <translation>í´ë¼ì´ì–¸íŠ¸ 공개 키를 받지 않았ìŒ</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>단어 목ë¡:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>메시지를 복호화할 수 ì—†ìŒ</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>단어 개수:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>KeePassXCì— ì—°ê²°í•  수 없거나 시간 초과ë¨</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>단어 구분ìž:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>ì ‘ê·¼ì´ ì·¨ì†Œë˜ì—ˆê±°ë‚˜ 거부ë¨</translation>
</message>
<message>
- <source>Copy</source>
- <translation>복사</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>메시지를 암호화할 수 없거나 비밀 키를 ì°¾ì„ ìˆ˜ 없습니다. KeePassXC 네ì´í‹°ë¸Œ ë©”ì‹œì§•ì´ í™œì„±í™”ë˜ì–´ 있습니까?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC ì—°ê²° 실패, 다시 ì‹œë„하십시오</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>키 êµí™˜ 실패</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>암호화 키를 ì¸ì‹í•  수 ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>ì €ìž¥ëœ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì°¾ì„ ìˆ˜ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>ìž˜ëª»ëœ ë™ìž‘</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>빈 메시지 ë°›ìŒ</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>URLì´ ì§€ì •ë˜ì§€ ì•ŠìŒ</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>로그ì¸ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>알 수 없는 오류</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ì— 새 í•­ëª©ì„ ì¶”ê°€í•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ì˜ 경로입니다.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ì˜ 키 파ì¼ìž…니다.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>경로</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>í•­ëª©ì˜ ì‚¬ìš©ìž ì´ë¦„입니다.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>ì‚¬ìš©ìž ì´ë¦„</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>í•­ëª©ì˜ URL입니다.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>항목 ì•”í˜¸ì˜ í”„ë¡¬í”„íŠ¸ìž…ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>항목 암호를 ìƒì„±í•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>ìƒì„±ëœ ì•”í˜¸ì˜ ê¸¸ì´ìž…니다.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>길ì´</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>추가할 í•­ëª©ì˜ ê²½ë¡œìž…ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>항목 암호를 í´ë¦½ë³´ë“œì— 복사합니다.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>í´ë¦½ë³´ë“œì— 복사할 í•­ëª©ì˜ ê²½ë¡œìž…ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>í´ë¦½ë³´ë“œë¥¼ 지우기 ì „ 대기할 ì´ˆ 단위 시간입니다.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>í•­ëª©ì„ íŽ¸ì§‘í•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>í•­ëª©ì˜ ì œëª©ìž…ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>제목</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>편집할 í•­ëª©ì˜ ê²½ë¡œìž…ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>ì•”í˜¸ì˜ ì˜ˆìƒ ì—”íŠ¸ë¡œí”¼ë¥¼ 계산합니다.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>엔트로피를 예ìƒí•  암호입니다.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>ì•”í˜¸ì— ê³ ê¸‰ 분ì„ì„ ì‹œí–‰í•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ì˜ ë‚´ìš©ì„ ì¶”ì¶œí•˜ê³  표시합니다.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>표시할 ë°ì´í„°ë² ì´ìŠ¤ 경로입니다.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>%1ì˜ ìž ê¸ˆ í•´ì œ 암호 ìž…ë ¥: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>키 íŒŒì¼ %1ì„(를) 불러올 수 ì—†ìŒ: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>경고: 차후 버전ì—ì„œ 지ì›ì´ ì¤‘ë‹¨ë  ì˜ˆì •ì¸ ë ˆê±°ì‹œ 키 파ì¼
+형ì‹ì„ 사용하고 있습니다.
+
+새 키 파ì¼ì„ ìƒì„±í•˜ëŠ” ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+사용 가능한 명령:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>실행할 명령 ì´ë¦„입니다.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ í•­ëª©ì„ í‘œì‹œí•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>표시할 ê·¸ë£¹ì˜ ê²½ë¡œìž…ë‹ˆë‹¤. ê¸°ë³¸ê°’ì€ /입니다</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>빠르게 í•­ëª©ì„ ì°¾ìŠµë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>í•­ëª©ì„ ê²€ìƒ‰í•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>ë‘ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 합칩니다.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>í•©ì¹  ëŒ€ìƒ ë°ì´í„°ë² ì´ìŠ¤ 경로입니다.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>í•©ì¹  ì›ë³¸ ë°ì´í„°ë² ì´ìŠ¤ 경로입니다.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>ë‘ ë°ì´í„°ë² ì´ìŠ¤ 파ì¼ì— ê°™ì€ ì¸ì¦ 정보를 사용합니다.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>í•©ì¹  ë°ì´í„°ë² ì´ìŠ¤ 파ì¼ì˜ 키 파ì¼ìž…니다.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>항목 정보를 표시합니다.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>표시할 ì†ì„± ì´ë¦„입니다. ì´ ì˜µì…˜ì€ í•œ 번 ì´ìƒ 사용할 수 있으며, 주어진 순서대로 ê°ê° ì†ì„±ì„ í•œ ì¤„ì— í•˜ë‚˜ì”© 표시합니다. ì†ì„±ì„ 지정하지 않으면 기본 ì†ì„±ì˜ ìš”ì•½ì„ í‘œì‹œí•©ë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>ì†ì„±</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>표시할 항목 ì´ë¦„입니다.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL 장치</translation>
@@ -1867,8 +3488,28 @@ Change them only if you know what you are doing.</source>
<translation>닫는 따옴표 ì—†ìŒ</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>내부 - unget ìµœì†Œê°’ì„ ë²—ì–´ë‚¨</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256비트</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256비트</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256비트</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2(KDBX 4 – 추천)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF(KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF(KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1887,14 +3528,22 @@ Change them only if you know what you are doing.</source>
<translation>암호</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>메모</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>마지막 수정</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>ìƒì„±</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>레거시 브ë¼ìš°ì € 통합</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>브ë¼ìš°ì € 통합</translation>
</message>
@@ -1910,6 +3559,55 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation>수ë™ì </translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH ì—ì´ì „트</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1948,8 +3646,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>ëŒ€ì†Œë¬¸ìž êµ¬ë¶„</translation>
+ <source>Search...</source>
+ <translation>찾기...</translation>
</message>
<message>
<source>Search</source>
@@ -1960,8 +3658,8 @@ Change them only if you know what you are doing.</source>
<translation>비우기</translation>
</message>
<message>
- <source>Search...</source>
- <translation>찾기...</translation>
+ <source>Case Sensitive</source>
+ <translation>ëŒ€ì†Œë¬¸ìž êµ¬ë¶„</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1971,50 +3669,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>ì´ë¦„ì´ &quot;%1&quot;ì¸ ê³µìœ  암호화 키가 ì´ë¯¸ 있습니다.
-ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>%1 - %2ì˜ ì •ë³´ë¥¼ ì—…ë°ì´íŠ¸í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ê°€ 잠겨 있습니다!
-ì„ íƒí•œ ë°ì´í„°ë² ì´ìŠ¤ì˜ ìž ê¸ˆì„ í’€ê±°ë‚˜ ìž ê¸ˆì´ í’€ë¦° ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì„ íƒí•˜ì‹­ì‹œì˜¤.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>KeePassX/HTTP 설정ì—ì„œ %1 암호화-%2ì„(를) 삭제했습니다.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>KeePassHttp 설정ì—ì„œ 공유 암호화 키를 ì°¾ì„ ìˆ˜ 없습니다.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— KeePassHttp 설정 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>ì €ìž¥ëœ ê¶Œí•œ ì‚­ì œ 중...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>중지</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>%1 %2ì—ì„œ ê¶Œí•œì„ ì‚­ì œí–ˆìŠµë‹ˆë‹¤.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— ê¶Œí•œì´ ë¶€ì—¬ëœ í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: 새 키 연결 요청</translation>
</message>
@@ -2031,33 +3685,77 @@ give it a unique name to identify and accept it.</source>
<translation>KeePassXC: 기존 키를 ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>ì´ë¦„ì´ &quot;%1&quot;ì¸ ê³µìœ  암호화 키가 ì´ë¯¸ 있습니다.
+ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: 항목 ì—…ë°ì´íŠ¸</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>%1 - %2ì˜ ì •ë³´ë¥¼ ì—…ë°ì´íŠ¸í•˜ì‹œê² ìŠµë‹ˆê¹Œ?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: ë°ì´í„°ë² ì´ìŠ¤ ìž ê¹€!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ê°€ 잠겨 있습니다!
+ì„ íƒí•œ ë°ì´í„°ë² ì´ìŠ¤ì˜ ìž ê¸ˆì„ í’€ê±°ë‚˜ ìž ê¸ˆì´ í’€ë¦° ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì„ íƒí•˜ì‹­ì‹œì˜¤.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ 키 ì‚­ì œë¨</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>KeePassX/HTTP 설정ì—ì„œ 암호화 키 %n개를 삭제했습니다.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: 키를 ì°¾ì„ ìˆ˜ ì—†ìŒ</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>KeePassHttp 설정ì—ì„œ 공유 암호화 키를 ì°¾ì„ ìˆ˜ 없습니다.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: ì„¤ì •ì„ ì‚¬ìš©í•  수 ì—†ìŒ!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— KeePassHttp 설정 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>ì €ìž¥ëœ ê¶Œí•œ ì‚­ì œ 중...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>중지</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: 권한 ì‚­ì œë¨</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>항목 %nê°œì— ì €ìž¥ëœ ê¶Œí•œì„ ì‚­ì œí–ˆìŠµë‹ˆë‹¤.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: ê¶Œí•œì´ ìžˆëŠ” í•­ëª©ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>활성 ë°ì´í„°ë² ì´ìŠ¤ì— ê¶Œí•œì´ ë¶€ì—¬ëœ í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2081,10 +3779,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>기본 설정</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>KeePassXC ë‹¨ì¼ ì¸ìŠ¤í„´ìŠ¤ë§Œ 사용</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>마지막 ë°ì´í„°ë² ì´ìŠ¤ 기억</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>마지막 키 파ì¼ê³¼ 보안 ë™ê¸€ 기억</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>시작할 ë•Œ ì´ì „ ë°ì´í„°ë² ì´ìŠ¤ 불러오기</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>ë낼 ë•Œ ìžë™ 저장</translation>
</message>
@@ -2093,20 +3807,28 @@ give it a unique name to identify and accept it.</source>
<translation>í•­ëª©ì„ ë³€ê²½í•  ë•Œ ìžë™ 저장</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>외부ì—ì„œ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ìˆ˜ì •í–ˆì„ ë•Œ ìžë™ìœ¼ë¡œ 새로 고침</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>í´ë¦½ë³´ë“œì— 복사할 ë•Œ 최소화</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>프로그램 시작 시 창 최소화</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>í•­ëª©ì„ ë§Œë“¤ ë•Œ 그룹 ì•„ì´ì½˜ 사용</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>ì „ì—­ ìžë™ ìž…ë ¥ 단축키</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>ë°ì´í„°ê°€ 변경ë˜ì§€ ì•Šì•˜ì„ ë•Œ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ìˆ˜ì •ëœ ê²ƒìœ¼ë¡œ 표시하지 ì•ŠìŒ(예: 그룹 확장)</translation>
</message>
<message>
- <source>Language</source>
- <translation>언어</translation>
+ <source>Hide the Details view</source>
+ <translation>ìžì„¸ížˆ 보기 숨기기</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2117,66 +3839,84 @@ give it a unique name to identify and accept it.</source>
<translation>시스템 트레ì´ë¡œ 최소화</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>시작할 ë•Œ ì´ì „ ë°ì´í„°ë² ì´ìŠ¤ 불러오기</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>외부ì—ì„œ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ìˆ˜ì •í–ˆì„ ë•Œ ìžë™ìœ¼ë¡œ 새로 고침</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>í”„ë¡œê·¸ëž¨ì„ ë내지 ì•Šê³  시스템 트레ì´ë¡œ ì°½ 숨기기</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>프로그램 시작 시 창 최소화</translation>
+ <source>Dark system tray icon</source>
+ <translation>ì–´ë‘ìš´ 시스템 íŠ¸ë ˆì´ ì•„ì´ì½˜</translation>
</message>
<message>
- <source>Basic Settings</source>
- <translation>기본 설정</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>마지막 키 파ì¼ê³¼ 보안 ë™ê¸€ 기억</translation>
- </message>
- <message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>ë°ì´í„°ê°€ 변경ë˜ì§€ ì•Šì•˜ì„ ë•Œ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ìˆ˜ì •ëœ ê²ƒìœ¼ë¡œ 표시하지 ì•ŠìŒ(예: 그룹 확장)</translation>
+ <source>Language</source>
+ <translation>언어</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>ìžë™ ìž…ë ¥</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>ì „ì—­ ìžë™ ìž…ë ¥ ì°½ì„ ê²€ì‚¬í•  ë•Œ 항목 제목과 URL 사용</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>ì „ì—­ ìžë™ ìž…ë ¥ ì‹œ ì°½ ì œëª©ì„ í•­ëª© 제목ì—ì„œ 검색</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>ì „ì—­ ìžë™ ìž…ë ¥ ì‹œ ì°½ ì œëª©ì„ í•­ëª© URLì—ì„œ 검색</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>ìžë™ ìž…ë ¥ ì‹œ í•­ìƒ ë¬»ê¸°</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>ì „ì—­ ìžë™ ìž…ë ¥ 단축키</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>ìžë™ ìž…ë ¥ 지연 시간</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>KeePassXC ë‹¨ì¼ ì¸ìŠ¤í„´ìŠ¤ë§Œ 사용</translation>
+ <source>Startup</source>
+ <translation>시작</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>íŒŒì¼ ê´€ë¦¬</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ íŒŒì¼ ì•ˆì „ 저장(Dropbox 등과 호환ë˜ì§€ ì•Šì„ ìˆ˜ 있ìŒ)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>저장하기 ì „ì— ë°ì´í„°ë² ì´ìŠ¤ íŒŒì¼ ë°±ì—…</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>항목 관리</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ì¼ë°˜</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>시간 제한</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>ë‹¤ìŒ ì‹œê°„ ì´í›„ í´ë¦½ë³´ë“œ 비우기</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>ì´ˆ</translation>
</message>
<message>
@@ -2184,8 +3924,12 @@ give it a unique name to identify and accept it.</source>
<translation>ë‹¤ìŒ ì‹œê°„ ë™ì•ˆ 활ë™ì´ ì—†ì„ ë•Œ ë°ì´í„°ë² ì´ìŠ¤ 잠금</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>기본값으로 암호를 í‰ë¬¸ìœ¼ë¡œ 표시</translation>
+ <source>Convenience</source>
+ <translation>편ì˜ì„±</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>ì„¸ì…˜ì´ ìž ê²¼ì„ ë•Œë‚˜ ë®ê°œë¥¼ ë‹«ì•˜ì„ ë•Œ ë°ì´í„°ë² ì´ìŠ¤ 잠금</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2196,16 +3940,16 @@ give it a unique name to identify and accept it.</source>
<translation>암호가 ë³´ì¼ ë•Œ 반복하지 ì•ŠìŒ</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>시간 제한</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>기본값으로 암호를 í‰ë¬¸ìœ¼ë¡œ 표시</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>편ì˜ì„±</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>미리 보기 패ë„ì—ì„œ 암호 숨기기</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>ì„¸ì…˜ì´ ìž ê²¼ì„ ë•Œë‚˜ ë®ê°œë¥¼ ë‹«ì•˜ì„ ë•Œ ë°ì´í„°ë² ì´ìŠ¤ 잠금</translation>
+ <source>Hide entry notes by default</source>
+ <translation>기본값으로 암호 숨기기</translation>
</message>
<message>
<source>Privacy</source>
@@ -2215,6 +3959,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation>웹 사ì´íŠ¸ ì•„ì´ì½˜ì˜ 대체 ì•„ì´ì½˜ìœ¼ë¡œ Google 사용</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2227,6 +3975,14 @@ give it a unique name to identify and accept it.</source>
<translation>키:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>기본 RFC 6238 í† í° ì„¤ì •</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam í† í° ì„¤ì •</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>ì‚¬ìš©ìž ì •ì˜ ì„¤ì • 사용</translation>
</message>
@@ -2252,6 +4008,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>ì´ˆ</translation>
</message>
</context>
@@ -2288,10 +4045,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>KeePassXCì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>KeePassXC ë°ì´í„°ë² ì´ìŠ¤ì— 암호를 안전하게 저장하십시오</translation>
</message>
@@ -2315,92 +4068,48 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>최근 ë°ì´í„°ë² ì´ìŠ¤</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>KeePassXC %1ì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>ì‚¬ìš©ìž ì •ì˜ ì„¤ì • íŒŒì¼ ê²½ë¡œ</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ 키 파ì¼</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - í¬ë¡œìŠ¤ í”Œëž«í¼ ì•”í˜¸ 관리ìž</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>표준 ìž…ë ¥ì—ì„œ ë°ì´í„°ë² ì´ìŠ¤ 암호 ì½ê¸°</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>ì—´ 암호 ë°ì´í„°ë² ì´ìŠ¤ íŒŒì¼ ì´ë¦„(*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>í´ë¦½ë³´ë“œì— 암호 복사</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ í•­ëª©ì„ ì‚­ì œí•©ë‹ˆë‹¤.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>ë°ì´í„°ë² ì´ìŠ¤ì˜ 경로입니다.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ ìž ê¸ˆì„ í•´ì œí•  GUI 프롬프트를 표시합니다.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>í´ë¦½ë³´ë“œì— 복사할 항목 ì´ë¦„입니다.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ì˜ ë‚´ìš©ì„ ì¶”ì¶œí•˜ê³  표시합니다.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>표시할 ë°ì´í„°ë² ì´ìŠ¤ 경로입니다.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>실행할 명령 ì´ë¦„입니다.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>ë°ì´í„°ë² ì´ìŠ¤ í•­ëª©ì„ í‘œì‹œí•©ë‹ˆë‹¤.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>표시할 ê·¸ë£¹ì˜ ê²½ë¡œìž…ë‹ˆë‹¤. ê¸°ë³¸ê°’ì€ /입니다</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>항목과 ê·¸ë£¹ì˜ UUID를 표시합니다.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>삭제할 í•­ëª©ì˜ ê²½ë¡œìž…ë‹ˆë‹¤.</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>ë‘ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 합칩니다.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - í¬ë¡œìŠ¤ í”Œëž«í¼ ì•”í˜¸ 관리ìž</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>í•©ì¹  ëŒ€ìƒ ë°ì´í„°ë² ì´ìŠ¤ 경로입니다.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>ì—´ 암호 ë°ì´í„°ë² ì´ìŠ¤ íŒŒì¼ ì´ë¦„(*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>í•©ì¹  ì›ë³¸ ë°ì´í„°ë² ì´ìŠ¤ 경로입니다.</translation>
+ <source>path to a custom config file</source>
+ <translation>ì‚¬ìš©ìž ì •ì˜ ì„¤ì • íŒŒì¼ ê²½ë¡œ</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>ë‘ ë°ì´í„°ë² ì´ìŠ¤ì— ê°™ì€ ì•”í˜¸ë¥¼ 사용합니다.</translation>
+ <source>key file of the database</source>
+ <translation>ë°ì´í„°ë² ì´ìŠ¤ 키 파ì¼</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>암호를 표시합니다.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>표준 ìž…ë ¥ì—ì„œ ë°ì´í„°ë² ì´ìŠ¤ 암호 ì½ê¸°</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>표시할 항목 ì´ë¦„입니다.</translation>
+ <source>Parent window handle</source>
+ <translation>부모 창 핸들</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_lt.ts b/share/translations/keepassx_lt.ts
index a9a483836..8ec502b80 100644
--- a/share/translations/keepassx_lt.ts
+++ b/share/translations/keepassx_lt.ts
@@ -10,14 +10,30 @@
<translation>Apie</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Apie klaidas praneškite adresu: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC yra platinama GNU Bendrosios Viešosios Licencijos (GPL) versijos 2 arba (jūsų pasirinkimu) versijos 3 sąlygomis.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Talkininkai</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Žiūrėti talkinimus GitHub puslapyje&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Derinimo informacija</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Pranešdami apie klaidą, visuomet pateikite ir šią informaciją:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Kopijuoti į iškarpinę</translation>
</message>
@@ -29,7 +45,11 @@
</message>
<message>
<source>Revision: %1</source>
- <translation>Poversijis: %1</translation>
+ <translation>Revizija: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Platinimas: %1</translation>
</message>
<message>
<source>Libraries:</source>
@@ -48,33 +68,27 @@ Branduolys: %3 %4</translation>
<translation>Įjungti plėtiniai:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Apie klaidas praneškite adresu: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC yra platinama GNU Bendrosios Viešosios Licencijos (GPL) versijos 2 arba (jūsų pasirinkimu) versijos 3 sąlygomis.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Projektą prižiūri:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Žiūrėti talkinimus GitHub puslapyje&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Pranešdami apie klaidą, visuomet pateikite ir šią informaciją:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Ypatinga padėka nuo KeePassXC komandos yra skiriama debfx už pradinės KeePassX programos sukūrimą.</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>Platinimas: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Darinio tipas: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP prieigos patvirtinimas</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Prisiminti šį sprendimą</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 užklausė prieigos prie slaptažodžių šiam elementui(-ams).
Pasirinkite, ar norite leisti prieigÄ….</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP prieigos patvirtinimas</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Įjungti SSH agentą (reikalauja paleidimo iš naujo)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Automatinis rinkimas - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Automatinis rinkimas</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,315 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>GrupÄ—</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Antraštė</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Naudotojo vardas</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Seka</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Automatinis rinkimas - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Pasirinkite įrašą automatiniam rinkimui:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Automatinis rinkimas - KeePassXC</translation>
+ <source>Remember this decision</source>
+ <translation>Prisiminti šį sprendimą</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Leisti</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Atmesti</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 užklausė prieigos prie slaptažodžių šiam elementui(-ams).
+Pasirinkite, ar norite leisti prieigÄ….</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogas</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Įjungti KeepassXC naršyklės integraciją</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Bendra</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Įjungti integraciją šioms naršyklėms:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Rodyti pra&amp;nešimą, kai reikalaujama prisijungimo duomenų</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Už&amp;klausti atrakinti duomenų bazę, jeigu ji yra užrakinta</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Bus grąžinami įraÅ¡ai tik su ta paÄia schema (http://, https://, ...).</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Atitikti URL schemÄ… (pvz., https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Vietoj visos srities visų įrašų, grąžina tik geriausiai tam tikrÄ… URL atitinkanÄius įraÅ¡us.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Grąžinti tik labiausiai atitinkanÄius prisijungimo duomenis</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Rikiuoti atitinkanÄius prisijungimo duomenis pagal &amp;antraÅ¡tÄ™</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Rikiuoti atitinkanÄius prisijungimo duomenis pagal na&amp;udotojo vardÄ…</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Atjungti visas naršykles</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Užmiršti visus įsimintus &amp;leidimus</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>IÅ¡plÄ—stiniai</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Su klientu turi būti sujungta tik pasirinkta duomenų bazė.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatinis eilutės laukų kūrimas ar atnaujinimas nėra palaikomas.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Grąžinti išplėstines eilutes, kurios prasideda &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Naršyti...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Įspėjimas:&lt;/b&gt; Šie parametrai gali būti pavojingi!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Vykdomieji failai (*.exe);;Visi failai (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Vykdomieji failai (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Naujo rakto susiejimo užklausa</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Įrašyti ir leisti prieigą</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Perrašyti esamą raktą?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Bendrinamas Å¡ifravimo raktas, pavadinimu &quot;%1&quot; jau yra.
+Ar norite jį perrašyti?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Atnaujinti įrašą</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Ar norite atnaujinti informacijÄ… ties %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Duomenų bazė užrakinta!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Aktyvi duomenų bazė yra užrakinta!
+Prašome atrakinti pasirinktą duomenų bazę arba pasirinkti kitą, kuri būtų atrakinta.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Nustatymai neprieinami!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Aktyvioje duomenų bazėje nėra nustatymų įrašo.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Raktų nerasta</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>KeePassXC nustatymuose nerasti bendrinami Å¡ifravimo raktai.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Pašalinti raktai iš duomenų bazės</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Šalinami saugomi leidimai…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Nutraukti</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Pašalinti leidimai</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Nerasta jokių įrašų su leidimais!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Aktyvioje duomenų bazėje nėra įrašo su leidimais.</translation>
</message>
</context>
<context>
@@ -149,6 +487,10 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<translation>Pakartokite slaptažodį:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Rakto failas</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Naršyti</translation>
</message>
@@ -157,6 +499,14 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<translation>Kurti</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>IÅ¡Å¡Å«&amp;kio atsakymas</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Įkelti iš naujo</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Rakto failai</translation>
</message>
@@ -177,6 +527,10 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<translation>Pasirinkite rakto failÄ…</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>TuÅ¡Äias slaptažodis</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Ar tikrai norite naudoti tuÅ¡ÄiÄ… eilutÄ™ kaip slaptažodį?</translation>
</message>
@@ -191,20 +545,15 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Rakto failas</translation>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Cha&amp;llenge Response</source>
- <translation>IÅ¡Å¡Å«&amp;kio atsakymas</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Įkelti iš naujo</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>TuÅ¡Äias slaptažodis</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +567,10 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<translation>Dubliavimo parinktys</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Pridėti prie antraštės &quot; - Dublikatas&quot;</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Pakeisti naudotojo vardą ir slaptažodį nuorodomis</translation>
</message>
@@ -225,10 +578,6 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<source>Copy history</source>
<translation>Kopijuoti istorijÄ…</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>PridÄ—ti prie pavadinimo &quot; - Dublikatas&quot;</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +675,6 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importuoti CSV failÄ…</translation>
- </message>
- <message>
<source>Error</source>
<translation>Klaida</translation>
</message>
@@ -340,17 +685,17 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> baitų, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n baitas, </numerusform><numerusform>%n baitai, </numerusform><numerusform>%n baitų, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> eiluÄių, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n eilutÄ—, </numerusform><numerusform>%n eilutÄ—s, </numerusform><numerusform>%n eiluÄių, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> stulpelių</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n stulpelis</numerusform><numerusform>%n stulpeliai</numerusform><numerusform>%n stulpelių</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +717,14 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<translation>Naršyti</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Įkelti iš naujo</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>IÅ¡Å¡Å«kio atsakymas:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Nepavyko atverti duomenų bazės.</translation>
</message>
@@ -380,6 +733,21 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<translation>Nepavyksta atverti rakto failo</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Daugiau neberodyti šio įspėjimo</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Visi failai</translation>
</message>
@@ -391,14 +759,6 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<source>Select key file</source>
<translation>Pasirinkite rakto failÄ…</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Įkelti iš naujo</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>IÅ¡Å¡Å«kio atsakymas:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +775,14 @@ Pasirinkite, ar norite leisti prieigÄ….</translation>
<translation>Nepavyksta atverti rakto failo</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Duomenų bazė atsivėrė tvarkingai. Nėra ką atlikti.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Nepavyko atverti duomenų bazės.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Duomenų bazė atsivėrė tvarkingai. Nėra ką atlikti.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Pavyko</translation>
</message>
@@ -440,28 +800,118 @@ Dabar galite ją įrašyti.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Duomenų bazės pavadinimas:</translation>
+ <source>General</source>
+ <translation>Bendra</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Duomenų bazės aprašas:</translation>
+ <source>Encryption</source>
+ <translation>Å ifravimas</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Atsisakyti</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Å ifravimo algoritmas:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bitų (numatytasis)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bitų</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Rakto išvedimo funkcija:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Pasikeitimo ciklų:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Numatytasis naudotojo vardas:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>Atminties naudojimas:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Duomenų bazės metaduomenys</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Duomenų bazės pavadinimas:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Duomenų bazės aprašas:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Numatytasis naudotojo vardas:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Našumo testas</translation>
+ <source>History Settings</source>
+ <translation>Istorijos nustatymai</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +922,27 @@ Dabar galite ją įrašyti.</translation>
<translation>Didžiausias istorijos dydis:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Naudoti šiukšlinę</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bitų (numatytasis)</translation>
+ <source>Use recycle bin</source>
+ <translation>Naudoti šiukšlinę</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bitų</translation>
+ <source>Additional Database Settings</source>
+ <translation>Papildomi duomenų bazės nustatymai</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmas:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Įjungti &amp;glaudinimą (rekomenduojama)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Å aknis</translation>
</message>
<message>
@@ -511,20 +962,46 @@ Dabar galite ją įrašyti.</translation>
<translation>Failas nerastas!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Atverkite KeePass 1 duomenų bazę</translation>
+ <source>Unable to open the database.</source>
+ <translation>Nepavyko atverti duomenų bazės.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 duomenų bazė</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Failas atvertas tik skaitymo veiksenoje.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Atverti CSV failÄ…</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV failas</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Visi failai (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Sulieti duomenų bazę</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Atverti KeePass 1 duomenų bazę</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 duomenų bazė</translation>
+ </message>
+ <message>
<source>Close?</source>
- <translation>Užverti?</translation>
+ <translation>Uždaryti?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; yra taisymo veiksenoje.
+Vis tiek atmesti pakeitimus ir užverti?</translation>
</message>
<message>
<source>Save changes?</source>
@@ -541,10 +1018,22 @@ Save changes?</source>
<translation>Duomenų bazės rašymas nepavyko.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Slaptažodžiai</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Įrašyti duomenų bazę kaip</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Eksportuoti duomenų bazę į CSV failą</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>CSV failo įrašymas nepavyko.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nauja duomenų bazė</translation>
</message>
@@ -559,16 +1048,10 @@ Save changes?</source>
<message>
<source>Can't lock the database as you are currently editing it.
Please press cancel to finish your changes or discard them.</source>
- <translation>Nepavyksta užrakinti duomenų bazės, kadangi šiuo metu ją redaguojate.
+ <translation>Nepavyksta užrakinti duomenų bazės, kadangi šiuo metu ją taisote.
Spauskite atšaukti, kad užbaigtumėte savo pakeitimus arba juos atmestumėte.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Ši duomenų bazė niekada nebuvo įrašyta.
-Galite duomenų bazę įrašyti arba atsisakyti ją užrakinti.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,68 +1060,22 @@ Ar prieš užrakinant, norite įrašyti duomenų bazę?
Kitu atveju jūsų pakeitimai bus prarasti.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; yra redagavimo veiksenoje.
-Vis tiek atmesti pakeitimus ir užverti?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Eksportuoti duomenų bazę į CSV failą</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV failas</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>CSV failo įrašymas nepavyko.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Nepavyko atverti duomenų bazės.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Sulieti duomenų bazę</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Duomenų bazė, kurią bandote įrašyti yra užrakinta kito KeePassXC programos egzemplioriaus.
-Ar vis tiek norite ją įrašyti?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Slaptažodžiai</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Duomenų bazė jau atverta</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Duomenų bazė, kurią bandote atverti yra užrakinta kito KeePassXC programos egzemplioriaus.
-Ar vis tiek norite jÄ… atverti?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Atverti tik skaitymui</translation>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>File opened in read only mode.</source>
- <translation>Failas atvertas tik skaitymo veiksenoje.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Atverti CSV failÄ…</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Ieškoma...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Pakeisti pagrindinį raktą</translation>
</message>
@@ -659,6 +1096,14 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Ar tikrai norite ištrinti %1 įrašų?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Perkelti įrašą į šiukšlinę?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Ar tikrai norite perkelti įrašą &quot;%1&quot; į šiukšlinę?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Perkelti įrašus į šiukšlinę?</translation>
</message>
@@ -667,28 +1112,28 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation><numerusform>Ar tikrai norite perkelti %n įrašą į šiukšlinę?</numerusform><numerusform>Ar tikrai norite perkelti %n įrašus į šiukšlinę?</numerusform><numerusform>Ar tikrai norite perkelti %n įrašų į šiukšlinę?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>IÅ¡trinti grupÄ™?</translation>
+ <source>Execute command?</source>
+ <translation>Vykdyti komandÄ…?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Ar tikrai norite ištrinti grupę &quot;%1&quot;?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Ar tikrai norite vykdyti Å¡iÄ… komandÄ…?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
+ <source>Remember my choice</source>
+ <translation>Prisiminti mano pasirinkimÄ…</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Perkelti įrašą į šiukšlinę?</translation>
+ <source>Delete group?</source>
+ <translation>IÅ¡trinti grupÄ™?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Ar tikrai norite perkelti įrašą &quot;%1&quot; į šiukšlinę?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Ar tikrai norite ištrinti grupę &quot;%1&quot;?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Ieškoma...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1152,8 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Nėra rezultatų</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Vykdyti komandÄ…?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Ar tikrai norite vykdyti Å¡iÄ… komandÄ…?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Prisiminti mano pasirinkimÄ…</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Automatinio įkėlimo iš naujo užklausa</translation>
+ <source>File has changed</source>
+ <translation>Failas pasikeitÄ—</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1164,10 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Suliejimo užklausa</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Duomenų bazės failas pasikeitė ir jūs turite neįrašytų pakeitimų. Ar norite sulieti savo pakeitimus?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Duomenų bazės failas pasikeitė ir jūs turite neįrašytų pakeitimų.
+Ar norite sulieti savo pakeitimus?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -748,6 +1183,89 @@ Ar vis tiek norite jÄ… atverti?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Generuoti NTVS prieigos raktÄ…</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Užverti</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Bendra</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Slaptažodis</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Galiojimas</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Naudotojo vardas</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Automatinis rinkimas</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Paieška</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Požymiai</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Priedai</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Pastabos</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Langas</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Seka</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Paieška</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>IÅ¡valyti</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Niekada</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[APSAUGOTA]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>IÅ¡jungta</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Įjungta</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -774,6 +1292,30 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Istorija</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH agentas</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nÄ—ra</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(Å¡ifruota)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Pasirinkti privatųjį raktą</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Failas per didelis, kad būtų privatusis raktas</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Nepavyko atverti privaÄiojo rakto</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Įrašo istorija</translation>
</message>
@@ -783,7 +1325,7 @@ Ar vis tiek norite jÄ… atverti?</translation>
</message>
<message>
<source>Edit entry</source>
- <translation>Keisti įrašą</translation>
+ <translation>Taisyti įrašą</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -794,22 +1336,20 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Naujas požymis</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Pasirinkite failÄ…</translation>
+ <source>Confirm Remove</source>
+ <translation>Patvirtinti Å¡alinimÄ…</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Nepavyko atverti failo</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Ar tikrai norite pašalinti šį požymi?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Įrašyti priedą</translation>
+ <source>[PROTECTED]</source>
+ <translation>[APSAUGOTA]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Nepavyko įrašyti priedo:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>NorÄ—dami rodyti ar taisyti, paspauskite atskleisti</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1368,16 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>1 metai</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Patvirtinti Å¡alinimÄ…</translation>
+ <source>Apply generated password?</source>
+ <translation>Naudoti sugeneruotą slaptaždoį?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Ar tikrai norite pašalinti šį požymi?</translation>
- </message>
- <message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[APSAUGOTA] NorÄ—dami rodyti ar redaguoti, paspauskite atskleisti</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Ar tikrai norite pašalinti šį priedą?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -859,18 +1395,6 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Å alinti</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Priedai</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Įrašyti</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Atverti</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Taisyti pavadinimÄ…</translation>
</message>
@@ -882,24 +1406,24 @@ Ar vis tiek norite jÄ… atverti?</translation>
<source>Reveal</source>
<translation>Atskleisti</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Įjungti šiam įrašui automatinį rinkimą</translation>
+ <source>Attachments</source>
+ <translation>Priedai</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Lango antraštė:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Įjungti šiam įrašui automatinį rinkimą</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1434,24 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Na&amp;udoti tinkintÄ… automatinio rinkimo seka:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Naudoti numatytÄ…jÄ… se&amp;kÄ…</translation>
+ <source>Window Associations</source>
+ <translation>Lango asociacijos</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Nustatyti tinkintÄ… s&amp;ekÄ…:</translation>
+ <source>-</source>
+ <translation>-</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Lango asociacijos</translation>
+ <source>Window title:</source>
+ <translation>Lango antraštė:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -944,12 +1476,8 @@ Ar vis tiek norite jÄ… atverti?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Antraštė:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Naudotojo vardas:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1488,104 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Pakartokite:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Antraštė:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Baigia galioti</translation>
+ <source>Notes</source>
+ <translation>Pastabos</translation>
</message>
<message>
<source>Presets</source>
<translation>Parinktys</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Pastabos:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Norėdami atskleisti pastabų sekciją, perjunkite žymimąjį langelį.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Naudotojo vardas:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Baigia galioti</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Šalinti raktą iš agento po</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> sekundžių</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Kontrolinis kodas</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Užvėrus/užrakinus duomenų bazę, šalinti raktą iš agento</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Viešasis raktas</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Atvėrus/atrakinus duomenų bazę, pridėti raktą į agentą</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Komentaras</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>IÅ¡Å¡ifruoti</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nÄ—ra</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Kopijuoti į iškarpinę</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Privatusis raktas</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>IÅ¡orinis failas</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Naršyti...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Priedas</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Pridėti į agentą</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Šalinti iš agento</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Naudojant šį raktą, reikalauti naudotojo patvirtinimo</translation>
</message>
</context>
<context>
@@ -996,7 +1608,7 @@ Ar vis tiek norite jÄ… atverti?</translation>
</message>
<message>
<source>Edit group</source>
- <translation>Keisti grupÄ™</translation>
+ <translation>Taisyti grupÄ™</translation>
</message>
<message>
<source>Enable</source>
@@ -1045,6 +1657,14 @@ Ar vis tiek norite jÄ… atverti?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>Na&amp;udoti numatytÄ…jÄ… piktogramÄ…</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Naudoti tinkintÄ… piktogra&amp;mÄ…</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>PridÄ—ti tinkintÄ… piktogramÄ…</translation>
</message>
@@ -1053,6 +1673,18 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>IÅ¡trinti tinkintÄ… piktogramÄ…</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Atsisiųsti svetainės piktogramą</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Nepavyko gauti svetainÄ—s piktogramos.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Patarimas: Jūs galite įjungti Google kaip surogatą, perėję į Įrankiai&gt;Nustatymai&gt;Saugumas</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Paveikslai</translation>
</message>
@@ -1065,24 +1697,12 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Pasirinkite paveikslÄ…</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Atsisiųsti svetainės piktogramą</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Nepavyko gauti svetainÄ—s piktogramos.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Nepavyksta perskaityti piktogramos</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>Na&amp;udoti numatytÄ…jÄ… piktogramÄ…</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Naudoti tinkintÄ… piktogra&amp;mÄ…</translation>
+ <source>Custom icon already exists</source>
+ <translation>Tinkinta piktograma jau yra</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1712,6 @@ Ar vis tiek norite jÄ… atverti?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Šią piktogramą naudoja %1 įrašai ir ji bus pakeista numatytąja piktograma. Ar tikrai norite ją ištrinti?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Patarimas: Jūs galite įjungti Google kaip surogatą, perėję į Įrankiai&gt;Nustatymai&gt;Saugumas</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>Tinkinta piktograma jau yra</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,15 +1731,129 @@ Ar vis tiek norite jÄ… atverti?</translation>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Å alinti</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - Dublikatas</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Pavadinimas</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Dydis</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>PridÄ—ti</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Å alinti</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Atverti</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Įrašyti</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Pasirinkti failus</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Patvirtinti Å¡alinimÄ…</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Įrašyti priedus</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Nepavyko sukurti katalogÄ…:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Patvirtinti perrašymą</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Nepavyko įrašyti priedus:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Nepavyko atverti priedÄ…:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Nepavyko atverti priedus:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Nepavyko atverti failus:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1882,11 @@ Ar vis tiek norite jÄ… atverti?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Nuoroda: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>GrupÄ—</translation>
</message>
@@ -1172,9 +1903,67 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Nuoroda: </translation>
+ <source>Never</source>
+ <translation>Niekada</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Slaptažodis</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Pastabos</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Baigia galioti</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Sukurta</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Keista</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Prieiga</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Priedai</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>SlÄ—pti naudotojo vardus</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Slėpti slaptažodžius</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Priderinti prie lango</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Priderinti prie turinio</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Atstatyti į numatytuosius</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1185,6 +1974,17 @@ Ar vis tiek norite jÄ… atverti?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Nepavyksta įrašyti failo!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2034,10 @@ Ar vis tiek norite jÄ… atverti?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Užtikrinti, kad slaptažodyje būtų simboliai iš kiekvienos grupės</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Papildomi ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2051,361 @@ Ar vis tiek norite jÄ… atverti?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nepavyko išduoti iššūkio atsakymo.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Neteisingas raktas arba duomenų bazės failas yra pažeistas.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nepavyko išduoti iššūkio atsakymo.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>trÅ«ksta duomenų bazÄ—s antraÅ¡Äių</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Neteisingas antraštės kontrolinės sumos dydis</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Antraštės SHA256 neatitikimas</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Neteisingas raktas arba sugadintas duomenų bazės failas. (HMAC neatitikimas)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Nežinomas šifras</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Neteisingas antraštės id dydis</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Neteisingas antraštės duomenų ilgis</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Neteisingas vidinės antraštės id dydis</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Nepalaikomas Å¡ifras</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Nepalaikomas glaudinimo algoritmas</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Ne KeePass duomenų bazė.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Pasirinktas failas yra sena KeePass 1 duomenų bazė (.kdb).
+
+Jūs galite ją importuoti, nuspausdami Duomenų bazė &gt; &quot;Importuoti KeePass 1 duomenų bazę...&quot;.
+Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų bazės, naudodami senąją KeePassX 0.4 versija.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Nepalaikoma KeePass 2 duomenų bazės versija.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML nagrinÄ—jimo nesÄ—kmÄ—: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Trūksta piktogramos uuid ar duomenų</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Nerastas grupÄ—s uuid</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Istorijos elementas istorijos įraše</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Nerastas įrašo uuid</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Nepavyko iššifruoti įrašo eilutės</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Neteisinga spalvos reikšmė</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Neteisinga spalvos rgb dalis</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Neteisinga uuid reikšmė</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2435,35 @@ Ar vis tiek norite jÄ… atverti?</translation>
<translation>Nepalaikoma KeePass duomenų bazės versija.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Neteisingas grupių skaiÄius</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Neteisingas įrašų skaiÄius</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Neteisingas turinio maišos dydis</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Root</source>
<translation>Å aknis</translation>
</message>
@@ -1287,129 +2475,141 @@ Ar vis tiek norite jÄ… atverti?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Neteisingas raktas arba duomenų bazės failas yra pažeistas.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Ne KeePass duomenų bazė.</translation>
+ <source>Key transformation failed</source>
+ <translation>Rakto transformacija nepavyko</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Nepalaikoma KeePass duomenų bazės versija.</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Neteisingas raktas arba duomenų bazės failas yra pažeistas.</translation>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nepavyko išduoti iššūkio atsakymo.</translation>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Pasirinktas failas yra sena KeePass 1 duomenų bazė (.kdb).
-
-Jūs galite ją importuoti, nuspausdami Duomenų bazė &gt; &quot;Importuoti KeePass 1 duomenų bazę...&quot;.
-Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų bazės, naudodami senąją KeePassX 0.4 versija.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nepavyko išduoti iššūkio atsakymo.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nepavyko apskaiÄiuoti pagrindinio rakto</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Lemtingoji klaida, testuojant Å¡ifravimo funkcijas.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Klaida</translation>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Nepavyko sukurti užrakto. Vieno egzemplioriaus veiksena išjungta.</translation>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Jau yra paleistas kitas KeePassXC egzempliorius.</translation>
+ <source>Invalid group field type</source>
+ <translation>Neteisingas grupÄ—s lauko tipas</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>Esamas vieno egzemplioriaus užrakto failas yra neteisingas. Paleidžiamas naujas egzempliorius.</translation>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Atverti duomenų bazę</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Duomenų bazės nustatymai</translation>
+ <source>Invalid entry field size</source>
+ <translation>Neteisingas įrašo lauko dydis</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Kopijuoti naudotojo vardą į iškarpinę</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Kopijuoti slaptažodį į iškarpinę</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Neteisingas įrašo uuid lauko dydis</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Nustatymai</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Rodyti įrankių juostą</translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>tik skaitymui</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
- <translation>Perjungti langÄ…</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 duomenų bazė</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Visi failai</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Įrašyti pataisytą duomenų bazę</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Esamas vieno egzemplioriaus užrakto failas yra neteisingas. Paleidžiamas naujas egzempliorius.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Duomenų bazės rašymas nepavyko.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Nepavyko sukurti užrakto. Vieno egzemplioriaus veiksena išjungta.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Jau yra paleistas kitas KeePassXC egzempliorius.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Lemtingoji klaida, testuojant Å¡ifravimo funkcijas.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Klaida</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Duomenų bazė</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Paskiausiai naudotos duomenų bazės</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importuoti</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Ž&amp;inynas</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>Į&amp;rašai</translation>
</message>
@@ -1418,12 +2618,16 @@ Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų
<translation>Kopijuoti &amp;požymį į iškarpinę</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;GrupÄ—s</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>R&amp;odinys</translation>
+ <source>&amp;Tools</source>
+ <translation>Ä®&amp;rankiai</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1434,6 +2638,10 @@ Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų
<translation>&amp;Apie</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Atverti duomenų bazę...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Į&amp;rašyti duomenų bazę</translation>
</message>
@@ -1474,24 +2682,24 @@ Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų
<translation>&amp;IÅ¡trinti grupÄ™</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>&amp;Duomenų bazės nustatymai</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Įraš&amp;yti duomenų bazę kaip...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Dubliuoti įrašą</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Pakeisti &amp;pagrindinį raktą...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Numatytosios trukmės vienkartinis slaptažodis</translation>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Duomenų bazės nustatymai</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Kopijuoti &amp;NTVS</translation>
+ <source>Database settings</source>
+ <translation>Duomenų bazės nustatymai</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Rodyti NTVS</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Dubliuoti įrašą</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1502,14 +2710,26 @@ Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų
<translation>Kopijuoti &amp;naudotojo vardÄ…</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Kopijuoti naudotojo vardą į iškarpinę</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Kopijuoti &amp;slaptažodį</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Kopijuoti slaptažodį į iškarpinę</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Nustatymai</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Slaptažodžių generatorius</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Atlikti automatinį rinkimą</translation>
</message>
@@ -1526,165 +2746,220 @@ Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų
<translation>&amp;Antraštė</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Kopijuoti antraštę į iškarpinę</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Kopijuoti URL į iškarpinę</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Pastabos</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Slaptažodžių generatorius</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Kopijuoti pastabas į iškarpinę</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>IÅ¡valyti istorijÄ…</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Eksportuoti į CSV failą...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Duomenų bazė</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importuoti KeePass 1 duomenų bazę...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importuoti</translation>
+ <source>Import CSV file...</source>
+ <translation>Importuoti CSV failÄ…...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>Ä®&amp;rankiai</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Pa&amp;taisyti duomenų bazę...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Rodyti NTVS</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Nustatyti NTVS...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Kopijuoti &amp;NTVS</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Iš&amp;valyti šiukšlinę</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Išvalyti šiukšlinę</translation>
+ <source>Clear history</source>
+ <translation>IÅ¡valyti istorijÄ…</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Konfigūracijos failo %1 prieigos klaida</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Išeiti iš KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Prašome priliesti mygtuką ant savo YubiKey!</translation>
+ <source>read-only</source>
+ <translation>tik skaitymui</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>Ž&amp;inynas</translation>
+ <source>Settings</source>
+ <translation>Nustatymai</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Atverti duomenų bazę...</translation>
+ <source>Toggle window</source>
+ <translation>Perjungti langÄ…</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Įraš&amp;yti duomenų bazę kaip...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Išeiti iš KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Pakeisti &amp;pagrindinį raktą...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 duomenų bazė</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Eksportuoti į CSV failą...</translation>
+ <source>All files</source>
+ <translation>Visi failai</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Importuoti KeePass 1 duomenų bazę...</translation>
+ <source>Open database</source>
+ <translation>Atverti duomenų bazę</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importuoti CSV failÄ…...</translation>
+ <source>Save repaired database</source>
+ <translation>Įrašyti pataisytą duomenų bazę</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Pa&amp;taisyti duomenų bazę...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Duomenų bazės rašymas nepavyko.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Nustatyti NTVS...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Prašome priliesti mygtuką ant savo YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Dialogas</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Neteisingas rakto failas, tikimasi OpenSSH rakto</translation>
</message>
<message>
- <source>General</source>
- <translation>Bendra</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM ribos neatitikimas</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>R&amp;odyti pranešimą, kai reikalaujama prisijungimo duomenų</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Base64 dekodavimas patyrÄ— nesÄ—kmÄ™</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Rikiuoti atitinkanÄius įraÅ¡us pagal na&amp;udotojo vardÄ…</translation>
+ <source>Key file way too small.</source>
+ <translation>Rakto failas buvo per mažas.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Šal&amp;inti iš įrašų aktyvioje duomenų bazėje visus saugomus leidimus</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>Neteisingas rakto failo magiškosios antraštės id</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>IÅ¡plÄ—stiniai</translation>
+ <source>Found zero keys</source>
+ <translation>Rasta nulis raktų</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Visada leisti &amp;prieigą prie įrašų</translation>
+ <source>Failed to read public key.</source>
+ <translation>Nepavyko perskaityti viešojo rakto.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Visada leisti įrašų at&amp;naujinimą</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Sugadintas rakto failas, privaÄiojo rakto skaitymas nepavyko</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>IeÅ¡&amp;koti atitinkanÄių įrašų visose atvertose duomenų bazÄ—se</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>NÄ—ra jokios privaÄiojo rakto naudingosios apkrovos, kuriÄ… iÅ¡Å¡ifruoti</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP prievadas:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Bandoma paleisti KDF be Å¡ifro</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Numatytasis prievadas: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Norint iššifruoti šį raktą, reikalinga slaptafrazė</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Už&amp;klausti atrakinti duomenų bazę, jeigu ji yra užrakinta</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Rakto išvedimas nepavyko, pažeistas rakto failas?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Rikiuoti atitinkanÄius įraÅ¡us pagal &amp;antraÅ¡tÄ™</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>IÅ¡Å¡ifravimas nepavyko, neteisinga slaptafrazÄ—?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC klausysis Å¡io prievado ties 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Netikėta failo pabaiga, skaitant viešąjį raktą</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Nepavyksta susieti su privilegijuotais prievadais</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Netikėta failo pabaiga, skaitant privatųjį raktą</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Nepavyksta susieti su privilegijuotais prievadais žemiau 1024!
-Naudojamas numatytasis prievadas 19455.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Nepavyksta raÅ¡yti vieÅ¡ojo rakto, nes jis tuÅ¡Äias</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>Ša&amp;linti iš aktyvios duomenų bazės visus bendrinamus šifravimo raktus</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Netikėta failo pabaiga, rašant viešąjį raktą</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&amp;Grąžinti išplėstines eilutes, kurios prasideda &quot;KPH: &quot;</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Nepavyksta raÅ¡yti privaÄiojo rakto, nes jis tuÅ¡Äias</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Automatinis eilutės laukų kūrimas ar atnaujinimas nėra palaikomas.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Netikėta failo pabaiga, rašant privatųjį raktą</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Nepalaikomas rakto tipas: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Nežinomas šifras: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Nežinomas KDF: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Nežinomas rakto tipas: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogas</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1695,6 +2970,15 @@ Naudojamas numatytasis prievadas 19455.</translation>
<translation>Įjungti KeePassHTTP serverį</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Bendra</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>R&amp;odyti pranešimą, kai reikalaujama prisijungimo duomenų</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Vietoj visos srities visų įrašų, grąžina tik geriausiai tam tikrÄ… URL atitinkanÄius įraÅ¡us.</translation>
</message>
@@ -1703,6 +2987,10 @@ Naudojamas numatytasis prievadas 19455.</translation>
<translation>&amp;Grąžinti tik labiausiai atitinkanÄius įraÅ¡us</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Už&amp;klausti atrakinti duomenų bazę, jeigu ji yra užrakinta</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Bus grąžinami įraÅ¡ai tik su ta paÄia schema (http://, https://, ftp://, ...).</translation>
</message>
@@ -1711,27 +2999,108 @@ Naudojamas numatytasis prievadas 19455.</translation>
<translation>&amp;Atitikti URL schemas</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Rikiuoti atitinkanÄius įraÅ¡us pagal na&amp;udotojo vardÄ…</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Rikiuoti atitinkanÄius įraÅ¡us pagal &amp;antraÅ¡tÄ™</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Ša&amp;linti iš aktyvios duomenų bazės visus bendrinamus šifravimo raktus</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Šal&amp;inti iš įrašų aktyvioje duomenų bazėje visus saugomus leidimus</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Slaptažodžių generatorius</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>IÅ¡plÄ—stiniai</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Visada leisti &amp;prieigą prie įrašų</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Visada leisti įrašų at&amp;naujinimą</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Su klientu turi būti sujungta tik pasirinkta duomenų bazė.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Šie parametrai gali būti pavojingi!
-Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>IeÅ¡&amp;koti atitinkanÄių įrašų visose atvertose duomenų bazÄ—se</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatinis eilutės laukų kūrimas ar atnaujinimas nėra palaikomas.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Grąžinti išplėstines eilutes, kurios prasideda &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP prievadas:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Numatytasis prievadas: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC klausysis Å¡io prievado ties 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Įspėjimas:&lt;/b&gt; Šie parametrai gali būti pavojingi!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Nepavyksta susieti su privilegijuotais prievadais</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Nepavyksta susieti su privilegijuotais prievadais žemiau 1024!
+Naudojamas numatytasis prievadas 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Slaptažodis:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>stiprumas</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropija</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Slaptažodis</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Simbolių tipai</translation>
</message>
@@ -1752,38 +3121,50 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
<translation>Specialūs simboliai</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Papildomi ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>PaÅ¡alinti panaÅ¡iai atrodanÄius simbolius</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Priimti</translation>
+ <source>Pick characters from every group</source>
+ <translation>Parinkti simbolius iš kiekvienos grupės</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Ilgis:</translation>
</message>
<message>
- <source>strength</source>
- <translation>stiprumas</translation>
+ <source>Passphrase</source>
+ <translation>SlaptafrazÄ—</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropija</translation>
+ <source>Wordlist:</source>
+ <translation>Žodžių sąrašas:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Ilgis:</translation>
+ <source>Word Count:</source>
+ <translation>Žodžių skaiÄius:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Parinkti simbolius iš kiekvienos grupės</translation>
+ <source>Word Separator:</source>
+ <translation>Žodžių skirtukas:</translation>
</message>
<message>
<source>Generate</source>
<translation>Generuoti</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Kopijuoti</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Priimti</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Užverti</translation>
</message>
@@ -1801,51 +3182,273 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Blogas</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Silpnas</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Geras</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Puikus</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Slaptažodis</translation>
+ <source>Database not opened</source>
+ <translation>Duomenų bazė neatverta</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>Papildomi ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>Duomenų bazės maiša yra neprieinama</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>SlaptafrazÄ—</translation>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Žodžių sąrašas:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Nepavyksta iššifruoti žinutės</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Žodžių skaiÄius:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>BaigÄ—si laikas ar nepavyksta prisijungti prie KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Žodžių skirtukas:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Veiksmo atsisakyta arba jis atmestas</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Kopijuoti</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Rakto keitimas nepavyko</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Šifravimo raktas yra neatpažintas</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Nerasta įrašytų duomenų bazių</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Neteisingas veiksmas</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Gauta tuÅ¡Äia žinutÄ—</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Nepateiktas URL</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Nerasta prisijungimų</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Nežinoma klaida</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Pridėti naują įrašą į duomenų bazę.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Duomenų bazės kelias.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Duomenų bazės rakto failas.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>kelias</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Įrašo naudotojo vardas.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>naudotojo vardas</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>Įrašo URL.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Klausti įrašo slaptažodžio.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Generuoti įrašui slaptažodį.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Generuoto slaptažodžio ilgis.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>ilgis</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Įrašo, kurį pridėti, kelias.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Kopijuoti įrašo slaptažodį į iškarpinę.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Įrašo, kurį iškirpti, kelias.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Laiko limitas, sekundėmis, prieš išvalant iškarpinę.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Taisyti įrašą.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Įrašo antraštė.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>antraštė</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Įrašo, kurį taisyti, kelias.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>ApskaiÄiuoti slaptažodžio entropijÄ….</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Slaptažodis, kurio entropijÄ… apskaiÄiuoti</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Atlikti išplėstinę slaptažodžio analizę</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Išskleisti ir spausdinti duomenų bazės turinį.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Duomenų bazės, kurią išskleisti, kelias.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Norėdami atrakinti %1, įterpkite slaptažodį: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Nepavyko įkelti rakto failo %1 : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Prieinamos komandos:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Komandos, kuriÄ… vykdyti, pavadinimas.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Išvardyti duomenų bazės įrašus.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Grupės, kurią išvardyti, kelias. Numatytasis yra /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Greitai rasti įrašus.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Paieškos žodis.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Sulieti dvi duomenų bazes.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Duomenų bazės, į kurią sulieti, kelias.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Duomenų bazės, iš kurios sulieti, kelias.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Abiems duomenų bazių failams naudoti tuos paÄius prisijungimo duomenis.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Duomenų bazės, iš kurios sulieti, rakto failas.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Rodyti įrašo informaciją.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Požymių, kuriuos rodyti, pavadinimai. Ši parinktis gali būti nurodyta daugiau nei vieną kartą, kiekvienoje eilutėje nurodyta tvarka rodant po atskirą požymį. Jei nėra nurodyti jokie požymiai, bus nurodyta numatytųjų požymių santrauka.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>požymis</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Įrašo, kurį rodyti, pavadinimas.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NIEKINIS įrenginys</translation>
@@ -1869,8 +3472,28 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
<translation>trūksta užveriamosios kabutės</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>VIDINIS - viršyta apatinė negavimo riba</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256 bitų</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256 bitų</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256 bitų</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – rekomenduojama)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1889,14 +3512,22 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
<translation>Slaptažodis</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Pastabos</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Paskutinis keitimas</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Sukurta</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Naršyklės integracija</translation>
</message>
@@ -1912,6 +3543,55 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
<source>Passive</source>
<translation>Pasyvus</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH agentas</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>kiekis</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Generuoti naują atsitiktinį slaptažodį.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Generuoto slaptažodžio ilgis.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1950,8 +3630,8 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Skirti raidžių dydį</translation>
+ <source>Search...</source>
+ <translation>Ieškoti...</translation>
</message>
<message>
<source>Search</source>
@@ -1962,8 +3642,8 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
<translation>IÅ¡valyti</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Ieškoti...</translation>
+ <source>Case Sensitive</source>
+ <translation>Skirti raidžių dydį</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1973,50 +3653,6 @@ Keiskite juos tik tuo atveju, jeigu žinote ką darote.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Bendrinamas Å¡ifravimo raktas, pavadinimu &quot;%1&quot; jau yra.
-Ar norite jį perrašyti?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Ar norite atnaujinti informacijÄ… ties %1 - %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>Aktyvi duomenų bazė yra užrakinta!
-Prašome atrakinti pasirinktą duomenų bazę arba pasirinkti kitą, kuri būtų atrakinta.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Sėkmingai pašalinta %1 šifravimo-%2 iš KeePassX/Http nustatymų.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>KeePassHttp nustatymuose nerasta jokių bendrinamų šifravimo raktų.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Aktyvioje duomenų bazėje nėra KeePassHttp nustatymų įrašo.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Å alinami saugomi leidimai...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Nutraukti</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Leidimai sėkmingai pašalinti iš %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>Aktyvioje duomenų bazėje nėra įrašo su leidimais.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Naujo rakto susiejimo užklausa</translation>
</message>
@@ -2034,33 +3670,77 @@ ir priimtumėte jį.</translation>
<translation>KeePassXC: Perrašyti esamą raktą?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Bendrinamas Å¡ifravimo raktas, pavadinimu &quot;%1&quot; jau yra.
+Ar norite jį perrašyti?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Atnaujinti įrašą</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Ar norite atnaujinti informacijÄ… ties %1 - %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Duomenų bazė užrakinta!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Aktyvi duomenų bazė yra užrakinta!
+Prašome atrakinti pasirinktą duomenų bazę arba pasirinkti kitą, kuri būtų atrakinta.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Pašalinti raktai iš duomenų bazės</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>%n šifravimo raktas sėkmingai pašalintas iš KeePassX/Http nustatymų.</numerusform><numerusform>%n šifravimo raktai sėkmingai pašalinti iš KeePassX/Http nustatymų.</numerusform><numerusform>%n šifravimo raktų sėkmingai pašalinta iš KeePassX/Http nustatymų.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Raktų nerasta</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>KeePassHttp nustatymuose nerasta jokių bendrinamų šifravimo raktų.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Nustatymai neprieinami!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Aktyvioje duomenų bazėje nėra KeePassHttp nustatymų įrašo.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Å alinami saugomi leidimai...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Nutraukti</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Pašalinti leidimai</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Leidimai sėkmingai pašalinti iš %n įrašo.</numerusform><numerusform>Leidimai sėkmingai pašalinti iš %n įrašų.</numerusform><numerusform>Leidimai sėkmingai pašalinti iš %n įrašų.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Nerasta jokių įrašų su leidimais!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Aktyvioje duomenų bazėje nėra įrašo su leidimais.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2084,10 +3764,26 @@ ir priimtumėte jį.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Pagrindiniai nustatymai</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Paleisti tik vieną KeePassXC egzempliorių</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Prisiminti paskutines duomenų bazes</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Prisiminti paskutinius rakto failus ir saugumo saugiklius</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Paleidžiant programą, įkelti ankstesnes duomenų bazes</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Išeinant, automatiškai įrašyti</translation>
</message>
@@ -2096,20 +3792,28 @@ ir priimtumėte jį.</translation>
<translation>Automatiškai įrašyti po kiekvieno pakeitimo</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Išoriškai modifikavus duomenų bazę, automatiškai įkelti ją iš naujo</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Kopijuojant į iškarpinę, suskleisti langą</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Paleidus programÄ…, suskleisti langÄ…</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Kuriant įrašus, naudoti grupės piktogramą</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Visuotinis automatinio rinkimo spartusis klavišas</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>NežymÄ—ti duomenų bazÄ— kaip pakeistÄ…, jei buvo keiÄiami ne duomenys, o kita (pvz., iÅ¡skleidžiamos grupÄ—s)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Kalba</translation>
+ <source>Hide the Details view</source>
+ <translation>Slėpti išsamų rodinį</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2120,66 +3824,84 @@ ir priimtumėte jį.</translation>
<translation>Suskleidus langą, slėpti jį į sistemos dėklą</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Paleidžiant programą, įkelti ankstesnes duomenų bazes</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Išoriškai modifikavus duomenų bazę, automatiškai įkelti ją iš naujo</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Neužverti lango, bet vietoj to, suskleisti jį į sistemos dėklą</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Paleidus programÄ…, suskleisti langÄ…</translation>
+ <source>Dark system tray icon</source>
+ <translation>Tamsi sistemos dÄ—klo piktograma</translation>
</message>
<message>
- <source>Basic Settings</source>
- <translation>Pagrindiniai nustatymai</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Prisiminti paskutinius rakto failus ir saugumo saugiklius</translation>
- </message>
- <message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>NežymÄ—ti duomenų bazÄ— kaip pakeistÄ…, jei buvo keiÄiami ne duomenys, o kita (pvz., iÅ¡skleidžiamos grupÄ—s)</translation>
+ <source>Language</source>
+ <translation>Kalba</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automatinis rinkimas</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Naudoti įrašo antraštę ir URL, norint sutapatinti langus visuotiniam automatiniam rinkimui</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Naudoti įrašo antraštę, norint sutapatinti langus visuotiniam Automatiniam rinkimui</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Naudoti įrašo URL, norint sutapatinti langus visuotiniam Automatiniam rinkimui</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Visada klausti prieš atliekant automatinį rinkimą</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Visuotinis automatinio rinkimo spartusis klavišas</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Automatinio rinkimo delsa</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Paleisti tik vieną KeePassXC egzempliorių</translation>
+ <source>Startup</source>
+ <translation>Įjungimo</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Failų tvarkymas</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Saugiai įrašyti duomenų bazės failus (gali būti nesuderinama su Dropbox ir t.t.)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Išsaugoti duomenų bazę prieš išsaugant</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Įrašų tvarkymas</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Bendra</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Laiko limitai</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Išvalyti iškarpinę po</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek.</translation>
</message>
<message>
@@ -2187,8 +3909,12 @@ ir priimtumėte jį.</translation>
<translation>Užrakinti duomenų bazes, kai kompiuteris neaktyvus</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Pagal numatymą, rodyti slaptažodžius atviruoju tekstu</translation>
+ <source>Convenience</source>
+ <translation>Patogumas</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Užrakinti duomenų bazes, kai yra užrakinamas ekranas ar uždaromas nešiojamojo kompiuterio dangtis</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2199,16 +3925,16 @@ ir priimtumėte jį.</translation>
<translation>Nereikalauti pakartoti slaptažodį, kai šis yra matomas</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Laiko limitai</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Pagal numatymą, rodyti slaptažodžius atviruoju tekstu</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Patogumas</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Slėpti slaptažodžius peržiūros skydelyje</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Užrakinti duomenų bazes, kai yra užrakinamas ekranas ar uždaromas nešiojamojo kompiuterio dangtis</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Pagal numatymą, slėpti įrašo pastabas</translation>
</message>
<message>
<source>Privacy</source>
@@ -2218,6 +3944,10 @@ ir priimtumėte jį.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Naudoti Google kaip surogatą svetainių piktogramų atsiuntimui</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2230,6 +3960,14 @@ ir priimtumėte jį.</translation>
<translation>Raktas:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Numatytojo RFC 6238 prieigos rakto nustatymai</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam prieigos rakto nustatymai</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Naudoti tinkintus nustatymus</translation>
</message>
@@ -2255,6 +3993,7 @@ ir priimtumėte jį.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek.</translation>
</message>
</context>
@@ -2291,10 +4030,6 @@ ir priimtumėte jį.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Sveiki atvykę į KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Pradėkite saugiai laikyti savo slaptažodžius KeePassXC duomenų bazėje</translation>
</message>
@@ -2318,92 +4053,48 @@ ir priimtumėte jį.</translation>
<source>Recent databases</source>
<translation>Paskiausios duomenų bazės</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Sveiki atvykę į KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>kelias į tinkintą konfigūracijos failą</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>duomenų bazės rakto failas</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - daugiaplatformė slaptažodžių tvarkytuvė</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>nuskaityti duomenų bazės slaptažodį iš stdin</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>norimų atverti slaptažodžių duomenų bazių failų pavadinimai (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Kopijuoti slaptažodį į iškarpinę</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Šalinti įrašą iš duomenų bazės.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Duomenų bazės kelias.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Naudoti grafinę duomenų bazės atrakinimo užklausą.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Įrašo, kurį apkirpti, pavadinimas.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Įrašo, kurį šalinti, kelias.</translation>
</message>
<message>
- <source>Extract and print the content of a database.</source>
- <translation>Išskleisti ir spausdinti duomenų bazės turinį.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Duomenų bazės, kurią išskleisti, kelias.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Komandos, kuriÄ… vykdyti, pavadinimas.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Išvardyti duomenų bazės įrašus.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Grupės, kurią išvardyti, kelias. Numatytasis yra /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Spausdinti įrašų ir grupių UUID.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Sulieti dvi duomenų bazes.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - daugiaplatformė slaptažodžių tvarkytuvė</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Duomenų bazės, į kurią sulieti, kelias.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>norimų atverti slaptažodžių duomenų bazių failų pavadinimai (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Duomenų bazės, iš kurios sulieti, kelias.</translation>
+ <source>path to a custom config file</source>
+ <translation>kelias į tinkintą konfigūracijos failą</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Abiems duomenų bazių failams naudoti tą patį slaptažodį.</translation>
+ <source>key file of the database</source>
+ <translation>duomenų bazės rakto failas</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Rodyti slaptažodį.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>nuskaityti duomenų bazės slaptažodį iš stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Įrašo, kurį rodyti, pavadinimas.</translation>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_nl_NL.ts b/share/translations/keepassx_nl_NL.ts
index e18f1a908..1ea6ac0f7 100644
--- a/share/translations/keepassx_nl_NL.ts
+++ b/share/translations/keepassx_nl_NL.ts
@@ -10,68 +10,85 @@
<translation>Over</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Meld bugs op: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt; https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC wordt verspreid onder de voorwaarden van de GNU General Public License (GPL) versie 2 of (als je wenst) versie 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
- <translation type="unfinished"/>
+ <translation>Bijdragen van</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Toon bijdragen op GitHub&lt;/a&gt;</translation>
</message>
<message>
<source>Debug Info</source>
- <translation type="unfinished"/>
+ <translation>Debug informatie</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Voeg de volgende informatie bij het bugrapport:</translation>
</message>
<message>
<source>Copy to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopieer naar klembord</translation>
</message>
<message>
<source>Version %1
</source>
- <translation type="unfinished"/>
+ <translation>Versie %1
+</translation>
</message>
<message>
<source>Revision: %1</source>
- <translation type="unfinished"/>
+ <translation>Revisie: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Distributie: %1</translation>
</message>
<message>
<source>Libraries:</source>
- <translation type="unfinished"/>
+ <translation>Bibliotheken:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
- <translation type="unfinished"/>
+ <translation>Besturingssysteem: %1
+CPU-architectuur: %2
+Kernelversie: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC wordt verspreid onder de voorwaarden van de GNU General Public License (GPL) versie 2 of (als u wenst) versie 3.</translation>
+ <translation>Geactiveerde extensies:</translation>
</message>
<message>
<source>Project Maintainers:</source>
- <translation type="unfinished"/>
+ <translation>Projectbeheerders:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation type="unfinished"/>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Een extra dank-u-wel van het KeePassXC-team voor debfx voor het creëren van het oorspronkelijke KeePassX.</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation type="unfinished"/>
+ <source>Build Type: %1
+</source>
+ <translation>Bouw Type: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP-toegang bevestigen</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Deze keuze onthouden</translation>
</message>
@@ -86,24 +103,47 @@ Kernel: %3 %4</source>
<message>
<source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source>
- <translation>%1 vraagt toegang tot uw wachtwoorden voor het/de volgende item(s).
-Geef aan of u toegang wilt toestaan of niet.</translation>
+ <translation>%1 vraagt toegang tot jouw wachtwoorden voor het/de volgende item(s).
+Geef aan of je toegang wilt toestaan of niet.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP-toegang bevestigen</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Activeer SSH Agent (vereist herstart)</translation>
</message>
</context>
<context>
<name>AutoType</name>
<message>
<source>Couldn&apos;t find an entry that matches the window title:</source>
- <translation>Kon geen element vinden dat overeenkomt met de venstertitel:</translation>
+ <translation>Kon geen item vinden dat overeenkomt met de vensternaam:</translation>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
<translation>Auto-typen - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-typen</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>De syntaxis van de Auto-Type opdracht is onjuist!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Deze Auto-typen opdracht bevat een zeer lange vertraging. Wil je echt door gaan?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Deze Auto-typen opdracht bevat zeer traag toetsaanslagen. Wil je echt door gaan?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Deze Auto-Type opdracht bevat argumenten die zeer vaak worden herhaald. Wil je echt door gaan?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -121,14 +161,318 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Groep</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Naam</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Volgorde</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-typen - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Kies item om automatisch te typen:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Auto-typen - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser toegang bevestigen</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Deze keuze onthouden</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Toestaan</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Weigeren</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 vraagt toegang tot jouw wachtwoorden voor het/de volgende item(s).
+Geef aan of je toegang wilt toestaan of niet.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialoog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Dit is vereist voor toegang tot jouw databases met KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Activeer KeePassXC browser integratie</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Algemeen</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Activeer integratie voor deze browsers:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Toon een &amp;notificatie wanneer inloggegevens worden gevraagd</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Verzoek om database te ontgrendelen als deze vergrendeld is</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Alleen invoer van hetzelfde schema (http://, https://,...) worden gegeven.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>Vergelijk URL sche&amp;ma&apos;s (bijv. https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Geeft alleen de beste overeenkomsten terug voor een specifieke URL in plaats van alle invoer voor het hele domein.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Geef alleen de best ove&amp;reenkomende inloggegevens</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sorteer &amp;overeenkomende inloggegevens op naam</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sorteer overeenkomende inloggegevens op &amp;gebruikersnaam</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Verbreek verbinding met alle browsers</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Vergeet alle &amp;permissies</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Geavanceerd</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nooit &amp;waarschuwen bij toegang tot logingegevens</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nooit waarschuwen bij &amp;bijwerken van logingegevens</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Alleen de geselecteerde database hoeft met een client verbonden te zijn.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;Zoek in alle geopende databases voor overeenkomende logingegevens</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Het automatisch aanmaken of wijzigen van tekenreeks velden wordt niet ondersteund.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Geef geadvanceerde teken&amp;reeks velden die met &quot;KH: &quot; beginnen.</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Wijzig bij het opstarten automatisch het zoek pad van KeePassXC of keepassxc-proxy naar de native messaging scripts.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Vernieuw &amp;native messaging manifest-bestanden bij het opstarten</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Ondersteun een proxy programma tussen KeePassXC en browser extensie.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Gebruik een &amp;proxy programma tussen KeePassXC en browser extensie</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Gebruik een aangepaste proxy-locatie als je een proxy handmatig hebt geïnstalleerd.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Gebruik een &amp;aangepaste proxy locatie</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Bladeren...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Waarschuwing:&lt;/b&gt; De volgende opties kunnen gevaarlijk zijn!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Uitvoerbare bestanden (*.exe); Alle bestanden (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Uitvoerbare bestanden (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Selecteer aangepaste proxy locatie</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Nieuw verzoek voor sleutel koppeling</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Je hebt een koppeling verzoek ontvangen voor bovenstaande sleutel.
+
+Als je de sleutel toegang tot jouw KeePassXC database wil geven,
+geef het dan een unieke naam ter identificatie, en accepteer het verzoek.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Opslaan en sta toegang toe</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Huidige sleutel overschrijven?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Een gedeelde encryptiesleutel met de naam &quot;%1&quot; bestaat al.
+Wil je deze overschrjiven?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Item bijwerken</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Wil je de gegevens in %1 - %2 bijwerken?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database vergrendeld!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>De actieve database is vergrendeld!
+Ontgrendel de geselecteerde database of kies een ontgrendelde database.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Instellingen niet beschikbaar!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>De actieve database bevat geen instellingen-item.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Geen sleutels gevonden</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Geen gedeelde encryptiesleutels gevonden in KeePassXC instellingen.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Sleutels uit database verwijderd</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>%n encryptie-sleutel verwijderd uit KeePassXC-instellingen.</numerusform><numerusform>%n encryptie-sleutels verwijderd uit KeePassXC-instellingen.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Opgeslagen permissies verwijderen...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Afbreken</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Permissies verwijderd</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Permissies zijn verwijderd uit %n item.</numerusform><numerusform>Permissies zijn verwijderd uit %n items.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Geen item met permissies gevonden!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>De actieve database bevat geen items met permissies.</translation>
</message>
</context>
<context>
@@ -146,6 +490,10 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<translation>Wachtwoord herhalen:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Sleutelbestand</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Bladeren</translation>
</message>
@@ -154,6 +502,14 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<translation>Creëren</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Test - Antwoord</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Vernieuw</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Sleutelbestanden</translation>
</message>
@@ -174,8 +530,12 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<translation>Kies een sleutelbestand</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Leeg wachtwoord</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
- <translation>Weet u zeker dat u een leeg veld als wachtwoord wilt gebruiken?</translation>
+ <translation>Weet je zeker dat je een leeg veld als wachtwoord wil gebruiken?</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -188,126 +548,123 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Sleutelbestand</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Refresh</source>
- <translation type="unfinished"/>
+ <source>Legacy key file format</source>
+ <translation>Verouderd sleutelbestandsformaat</translation>
</message>
<message>
- <source>Empty password</source>
- <translation type="unfinished"/>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Je gebruikt een verouderd sleutelbestandsformaat welke in de toekomst niet ondersteund zal worden.
+
+Overweeg aub een nieuw sleutelbestand te genereren.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
- <translation type="unfinished"/>
+ <translation>Verandering sleutelbestand mislukt: geen YubiKey gedetecteerd</translation>
</message>
</context>
<context>
<name>CloneDialog</name>
<message>
<source>Clone Options</source>
- <translation type="unfinished"/>
+ <translation>Kloon Opties</translation>
</message>
<message>
- <source>Replace username and password with references</source>
- <translation type="unfinished"/>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Toevoegen&apos; - Kloon&apos; aan naam</translation>
</message>
<message>
- <source>Copy history</source>
- <translation type="unfinished"/>
+ <source>Replace username and password with references</source>
+ <translation>Vervang gebruikersnaam en wachtwoord door referenties</translation>
</message>
<message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation type="unfinished"/>
+ <source>Copy history</source>
+ <translation>Kopie historie</translation>
</message>
</context>
<context>
<name>CsvImportWidget</name>
<message>
<source>Import CSV fields</source>
- <translation type="unfinished"/>
+ <translation>Importeer CSV velden</translation>
</message>
<message>
<source>filename</source>
- <translation type="unfinished"/>
+ <translation>bestandsnaam</translation>
</message>
<message>
<source>size, rows, columns</source>
- <translation type="unfinished"/>
+ <translation>grootte, rijen, kolommen</translation>
</message>
<message>
<source>Encoding</source>
- <translation type="unfinished"/>
+ <translation>Koderen</translation>
</message>
<message>
<source>Codec</source>
- <translation type="unfinished"/>
+ <translation>Codec</translation>
</message>
<message>
<source>Text is qualified by</source>
- <translation type="unfinished"/>
+ <translation>Tekst is geschikt bevonden door</translation>
</message>
<message>
<source>Fields are separated by</source>
- <translation type="unfinished"/>
+ <translation>Velden worden gescheiden door</translation>
</message>
<message>
<source>Comments start with</source>
- <translation type="unfinished"/>
+ <translation>Kommentaar start met</translation>
</message>
<message>
<source>First record has field names</source>
- <translation type="unfinished"/>
+ <translation>Eerste record heeft veldnamen</translation>
</message>
<message>
<source>Number of headers line to discard</source>
- <translation type="unfinished"/>
+ <translation>Aantal kopregels te negeren</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
- <translation type="unfinished"/>
+ <translation>Beschouw &apos;\&apos; als excape karacter</translation>
</message>
<message>
<source>Preview</source>
- <translation type="unfinished"/>
+ <translation>voorvertoning</translation>
</message>
<message>
<source>Column layout</source>
- <translation type="unfinished"/>
+ <translation>Kolomsgewijs</translation>
</message>
<message>
<source>Not present in CSV file</source>
- <translation type="unfinished"/>
+ <translation>Niet aanwezig in CSV bestand</translation>
</message>
<message>
<source>Empty fieldname </source>
- <translation type="unfinished"/>
+ <translation>Lege veldnaam</translation>
</message>
<message>
<source>column </source>
- <translation type="unfinished"/>
+ <translation>Kolom</translation>
</message>
<message>
<source>Imported from CSV file</source>
- <translation type="unfinished"/>
+ <translation>Geimporteerd uit CSV bestand</translation>
</message>
<message>
<source>Original data: </source>
- <translation type="unfinished"/>
+ <translation>Orginele gegevens:</translation>
</message>
<message>
<source>Error(s) detected in CSV file !</source>
- <translation type="unfinished"/>
+ <translation>Fout(en) gedetecteerd in CSV bestand!</translation>
</message>
<message>
<source> more messages skipped]</source>
- <translation type="unfinished"/>
+ <translation>meer berichten overgeslagen]</translation>
</message>
<message>
<source>Error</source>
@@ -316,16 +673,13 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<message>
<source>CSV import: writer has errors:
</source>
- <translation type="unfinished"/>
+ <translation>CSV import: uitvoer bevat fouten:
+</translation>
</message>
</context>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Error</source>
<translation>Fout</translation>
</message>
@@ -336,17 +690,17 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>1 byte,</numerusform><numerusform>%n bytes,</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>1 rij,</numerusform><numerusform>%n rijen,</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>1 kolom</numerusform><numerusform>%n kolommen</numerusform></translation>
</message>
</context>
<context>
@@ -368,6 +722,14 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<translation>Bladeren</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Vernieuw</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Test - Resultaat:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Niet mogelijk om de database te openen.</translation>
</message>
@@ -376,6 +738,23 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<translation>Niet mogelijk om het sleutelbestand te openen</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Verouderd sleutelbestandsformaat</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Je gebruikt een verouderd sleutelbestandsformaat welke in de toekomst niet ondersteund zal worden.
+
+Overweeg aub een nieuw sleutelbestand te genereren.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Deze waarschuwing niet meer geven</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Alle bestanden</translation>
</message>
@@ -387,14 +766,6 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<source>Select key file</source>
<translation>Kies sleutelbestand</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -411,14 +782,14 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<translation>Niet mogelijk om het sleutelbestand te openen</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Database werd zonder problemen geopend. Niets te doen.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Niet mogelijk om de database te openen.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Database werd zonder problemen geopend. Niets te doen.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Gelukt</translation>
</message>
@@ -426,7 +797,7 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
<source>The database has been successfully repaired
You can now save it.</source>
<translation>De database is met succes gerepareerd
-U kunt deze nu opslaan.</translation>
+Je kunt deze nu opslaan.</translation>
</message>
<message>
<source>Unable to repair the database.</source>
@@ -436,28 +807,122 @@ U kunt deze nu opslaan.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Naam van de database:</translation>
+ <source>General</source>
+ <translation>Algemeen</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Beschrijving van de database:</translation>
+ <source>Encryption</source>
+ <translation>Versleuteling</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Aantal rondes te hoog</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Je gebruikt een zeer groot aantal sleuteltransformatie rondes met Argon2.
+
+Als je dit aantal aanhoud, kan het uren, dagen –of zelfs meer– duren om de database te openen!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Begrepen, aantal aanhouden</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Aantal rondes te laag</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Je gebruikt een zeer laag aantal sleuteltransformatie rondes met AES-KDF.
+
+Als je dit aantal aanhoud is het mogelijk heel gemakkelijk om de database te kraken!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF ongewijzigd</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Het transformeren van de sleutel met de nieuwe KDF parameters is mislukt; KDF is ongewijzigd.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform>MiB</numerusform><numerusform>MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform>executie thread</numerusform><numerusform> executie threads</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Coderingsalgoritme:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 bit (standaard)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Key Derivation Function:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Transformatierondes:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Standaard gebruikersnaam:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>Benchmark 1 seconde vertraging</translation>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>Geheugengebruik:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Parallellisme:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Database meta gegevens</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Naam van de database:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Beschrijving van de database:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Standaard gebruikersnaam:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Test</translation>
+ <source>History Settings</source>
+ <translation>Geschiedenis Instellingen</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -468,26 +933,27 @@ U kunt deze nu opslaan.</translation>
<translation>Max. geschiedenisgrootte:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Prullenbak gebruiken</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation type="unfinished"/>
+ <source>Use recycle bin</source>
+ <translation>Prullenbak gebruiken</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation type="unfinished"/>
+ <source>Additional Database Settings</source>
+ <translation>Extra database instellingen</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation type="unfinished"/>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Activeer &amp;compressie (aanbevolen)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Alles</translation>
</message>
<message>
@@ -507,22 +973,48 @@ U kunt deze nu opslaan.</translation>
<translation>Bestand niet gevonden!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>KeePass 1-database openen</translation>
+ <source>Unable to open the database.</source>
+ <translation>Het is niet mogelijk om de database te openen.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1-database</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Bestand geopend in lees-modus.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Open CSV bestand</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV-bestand</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Alle bestanden (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Database samenvoegen</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>KeePass 1-database openen</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1-database</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Sluiten?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; is gewijzigd.
+Wijzigingen ongedaan maken en doorgaan met sluiten?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Wijzigingen opslaan?</translation>
</message>
@@ -537,10 +1029,22 @@ Opslaan?</translation>
<translation>Het opslaan van de database is mislukt.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Wachtwoorden</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Database opslaan als</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Database exporteren naar CSV-bestand</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Schrijven van het CSV-bestand mislukt.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nieuwe database</translation>
</message>
@@ -555,96 +1059,45 @@ Opslaan?</translation>
<message>
<source>Can't lock the database as you are currently editing it.
Please press cancel to finish your changes or discard them.</source>
- <translation>Kan de database niet vergrendelen omdat u deze momenteel aan het bewerken bent.
-Druk op annuleren om uw wijzigingen aan te passen of gooi de wijzigingen weg.</translation>
- </message>
- <message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Deze database is nog niet opgeslagen.
-U kunt de database opslaan of het vergrendelen annuleren.</translation>
+ <translation>Kan de database niet vergrendelen omdat je deze momenteel aan het bewerken bent.
+Druk op annuleren om je wijzigingen aan te passen of gooi de wijzigingen weg.</translation>
</message>
<message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
<translation>Deze database is gewijzigd.
-Wilt u de database opslaan voordat u deze vergrendelt?
+Wil je de database opslaan voordat je deze vergrendelt?
Zo nee, dan gaan de wijzigingen verloren.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; is gewijzigd.
-Wijzigingen ongedaan maken en doorgaan met sluiten?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Database exporteren naar CSV-bestand</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV-bestand</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Schrijven van het CSV-bestand mislukt.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Het is niet mogelijk om de database te openen.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Database samenvoegen</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>De database die u op probeert te slaan is vergrendeld door een andere instantie van KeePassXC.
-Wilt u toch doorgaan met opslaan?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Wachtwoorden</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Database is al geopend</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>De database die u probeert te openen is vergrendeld door een andere instantie van KeePassXC.
-Wilt u toch doorgaan met openen?</translation>
+ <source>Disable safe saves?</source>
+ <translation>Veilig opslaan uitschakelen?</translation>
</message>
<message>
- <source>Open read-only</source>
- <translation>Openen als alleen-lezen</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation type="unfinished"/>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC heeft meerdere keren geprobeerd de database op te slaan. Dit wordt waarschijnlijk veroorzaakt door een lock op het op te slaan bestand door een bestanden-sync-service.
+Uitschakelen van veilig opslaan en opnieuw proberen?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Bezig met zoeken...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Wijzig hoofdsleutel</translation>
</message>
<message>
<source>Delete entry?</source>
- <translation>Element verwijderen?</translation>
+ <translation>Item verwijderen?</translation>
</message>
<message>
<source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
- <translation>Weet u zeker dat u het element &quot;%1&quot; wilt verwijderen?</translation>
+ <translation>Weet je zeker dat je het item &quot;%1&quot; wil verwijderen?</translation>
</message>
<message>
<source>Delete entries?</source>
@@ -652,7 +1105,15 @@ Wilt u toch doorgaan met openen?</translation>
</message>
<message>
<source>Do you really want to delete %1 entries for good?</source>
- <translation>Weet u zeker dat u %1 elementen wilt wissen?</translation>
+ <translation>Weet je zeker dat je %1 elementen wil wissen?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Wilt u het item naar de prullenbak verplaatsen?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Weet je zeker dat je item &quot;%1&quot; naar de prullenbak wil verplaatsen?</translation>
</message>
<message>
<source>Move entries to recycle bin?</source>
@@ -660,31 +1121,31 @@ Wilt u toch doorgaan met openen?</translation>
</message>
<message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation><numerusform>Weet u zeker dat u %n element naar de prullenbak wilt verplaatsen?</numerusform><numerusform>Weet u zeker dat u %n elementen naar de prullenbak wilt verplaatsen?</numerusform></translation>
+ <translation><numerusform>Wil je echt %n item naar de Prullenbak verplaatsen?</numerusform><numerusform>Wil je echt %n item(s) naar de Prullenbak verplaatsen?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Groep verwijderen?</translation>
+ <source>Execute command?</source>
+ <translation>Commando uitvoeren?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Weet u zeker dat u de groep &quot;%1&quot; wilt verwijderen?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Weet je zeker dat je het volgende commando wil uitvoeren? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
+ <source>Remember my choice</source>
+ <translation>Mijn keuze onthouden</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Wilt u het item naar de prullenbak verplaatsen?</translation>
+ <source>Delete group?</source>
+ <translation>Groep verwijderen?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Weet u zeker dat u item &quot;%1&quot; naar de prullenbak wilt verplaatsen?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Weet je zeker dat je de groep &quot;%1&quot; wil verwijderen?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Bezig met zoeken...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
</message>
<message>
<source>No current database.</source>
@@ -703,32 +1164,22 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Geen resultaten</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Commando uitvoeren?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Weet u zeker dat u het volgende commando wilt uitvoeren? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Mijn keuze onthouden</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Automatisch herladen-verzoeken</translation>
+ <source>File has changed</source>
+ <translation>Bestand is gewijzigd</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
- <translation>Het database-bestand is gewijzigd. Wilt u de wijzigingen laden?</translation>
+ <translation>Het database-bestand is gewijzigd. Wil je de wijzigingen laden?</translation>
</message>
<message>
<source>Merge Request</source>
<translation>Samenvoegingsverzoek</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Het database-bestand is gewijzigd en u heeft niet-opgeslagen wijzigingen. Wilt u uw wijzigingen samenvoegen?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Het databasebestand is veranderd en er zijn niet opgeslagen wijzigingen.
+Wil je de wijzigingen samenvoegen?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -736,18 +1187,101 @@ Wilt u toch doorgaan met openen?</translation>
</message>
<message>
<source>Empty recycle bin?</source>
- <translation type="unfinished"/>
+ <translation>Prullenbak legen?</translation>
</message>
<message>
<source>Are you sure you want to permanently delete everything from your recycle bin?</source>
- <translation type="unfinished"/>
+ <translation>Weet je zeker dat je alles uit de prullenbak definitief wil verwijderen?</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>TOTP Token genereren</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Sluiten</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Algemeen</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Vervaldatum</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Autotype</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Zoeken</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Eigenschappen</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Bijlagen</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Opmerkingen</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Venster</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Volgorde</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Zoeken</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Wissen</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Nooit</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[BEVEILIGD]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Uitgeschakeld</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Geactiveerd</translation>
</message>
</context>
<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
- <translation>Element</translation>
+ <translation>Item</translation>
</message>
<message>
<source>Advanced</source>
@@ -770,16 +1304,40 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Geschiedenis</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>niet van toepassing</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(versleuteld)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Kies persoonlijke sleutel</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Bestand te groot voor een persoonlijke sleutel</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Niet gelukt het sleutelbestand in openen</translation>
+ </message>
+ <message>
<source>Entry history</source>
- <translation>Geschiedenis van element</translation>
+ <translation>Geschiedenis van item</translation>
</message>
<message>
<source>Add entry</source>
- <translation>Element toevoegen</translation>
+ <translation>Item toevoegen</translation>
</message>
<message>
<source>Edit entry</source>
- <translation>Element wijzigen</translation>
+ <translation>Item wijzigen</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -790,22 +1348,20 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Nieuwe eigenschap</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Kies bestand</translation>
+ <source>Confirm Remove</source>
+ <translation>Bevestig verwijderen</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Niet mogelijk om bestand te openen</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Weet je zeker dat je deze eigenschap wil verwijderen?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Bijlage opslaan</translation>
+ <source>[PROTECTED]</source>
+ <translation>[BEVEILIGD]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Niet mogelijk om de bijlage op te slaan:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Druk Toon om te bekijken of bewerken</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -824,20 +1380,16 @@ Wilt u toch doorgaan met openen?</translation>
<translation>1 jaar</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation type="unfinished"/>
+ <source>Apply generated password?</source>
+ <translation>Pas gegenereerde wachtwoord toe?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation type="unfinished"/>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Wil je het gegenereerde wachtwoord instellen voor dit item?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation type="unfinished"/>
+ <source>Entry updated successfully.</source>
+ <translation>Het item is bijgewerkt.</translation>
</message>
</context>
<context>
@@ -855,47 +1407,35 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Verwijderen</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Bijlagen</translation>
+ <source>Edit Name</source>
+ <translation>Verander Naam</translation>
</message>
<message>
- <source>Save</source>
- <translation>Opslaan</translation>
+ <source>Protect</source>
+ <translation>Beveilig</translation>
</message>
<message>
- <source>Open</source>
- <translation>Open</translation>
+ <source>Reveal</source>
+ <translation>Toon</translation>
</message>
<message>
- <source>Edit Name</source>
- <translation type="unfinished"/>
+ <source>Attachments</source>
+ <translation>Bijlagen</translation>
</message>
<message>
- <source>Protect</source>
- <translation type="unfinished"/>
+ <source>Foreground Color:</source>
+ <translation>Voorgrond kleur:</translation>
</message>
<message>
- <source>Reveal</source>
- <translation type="unfinished"/>
+ <source>Background Color:</source>
+ <translation>Kleur achtergrond:</translation>
</message>
</context>
<context>
<name>EditEntryWidgetAutoType</name>
<message>
<source>Enable Auto-Type for this entry</source>
- <translation>Auto-typen inschakelen voor dit element</translation>
- </message>
- <message>
- <source>+</source>
- <translation>+</translation>
- </message>
- <message>
- <source>-</source>
- <translation>-</translation>
- </message>
- <message>
- <source>Window title:</source>
- <translation>Venstertitel:</translation>
+ <translation>Auto-typen inschakelen voor dit item</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -906,16 +1446,24 @@ Wilt u toch doorgaan met openen?</translation>
<translation>&amp;Gebruik aangepaste auto-typevolgorde:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Gebruik standaardvolgorde</translation>
+ <source>Window Associations</source>
+ <translation>Scherm-koppelingen</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Stel aangepaste volgorde in:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation type="unfinished"/>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Vensternaam:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Gebruik een specifieke volgorde voor deze associatie.</translation>
</message>
</context>
<context>
@@ -940,12 +1488,8 @@ Wilt u toch doorgaan met openen?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Titel:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Gebruikersnaam:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -956,20 +1500,104 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Herhalen:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Naam:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Verloopt</translation>
+ <source>Notes</source>
+ <translation>Opmerkingen</translation>
</message>
<message>
<source>Presets</source>
<translation>Ingebouwd</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Opmerkingen:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Vink het selectievakje aan om notities te zien.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Gebruikersnaam:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Verloopt</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Verwijder sleutel uit agent na</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>seconden</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Vingerafdruk</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Verwijder sleutel uit agent wanneer de database wordt gesloten/vergrendeld</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Openbare sleutel</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Voeg sleutel toe aan agent wanneer de database wordt geopend/ontgrendeld</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Opmerking</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Decoderen</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>niet van toepassing</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Kopieer naar klembord</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Persoonlijke sleutel</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Extern bestand</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Bladeren...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Bijlage</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Voeg toe aan agent</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Verwijder van agent</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Vereis bevestiging van de gebruiker wanneer deze sleutel wordt gebruikt</translation>
</message>
</context>
<context>
@@ -996,7 +1624,7 @@ Wilt u toch doorgaan met openen?</translation>
</message>
<message>
<source>Enable</source>
- <translation>Inschakelen</translation>
+ <translation>Activeren</translation>
</message>
<message>
<source>Disable</source>
@@ -1031,16 +1659,24 @@ Wilt u toch doorgaan met openen?</translation>
</message>
<message>
<source>&amp;Use default Auto-Type sequence of parent group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Gebruik de standaard autot-type volgorde van de bovenliggende groep</translation>
</message>
<message>
<source>Set default Auto-Type se&amp;quence</source>
- <translation type="unfinished"/>
+ <translation>Stel de standaard auto-type volgord&amp;e in</translation>
</message>
</context>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Gebruik standaardicoon</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Gebruik aangepast icoon</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Voeg icoon toe</translation>
</message>
@@ -1049,6 +1685,18 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Verwijder icoon</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Favicon downloaden</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Favicon kan niet worden opgehaald.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Tip: Je kunt Google gebruiken als alternatief via Tools&gt;Instellingen&gt;Beveiliging</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Afbeeldingen</translation>
</message>
@@ -1061,40 +1709,20 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Kies afbeelding</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Favicon downloaden</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Favicon kan niet worden opgehaald.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Kan icoon niet lezen</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Gebruik standaardicoon</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Gebruik aangepast icoon</translation>
+ <source>Custom icon already exists</source>
+ <translation>Speciaal pictogram bestaat al</translation>
</message>
<message>
<source>Confirm Delete</source>
- <translation type="unfinished"/>
+ <translation>Bevestig Verwijder</translation>
</message>
<message>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
+ <translation>Dit icoon wordt gebruikt door %1 entries en zal worden vervangen door de standaard icoon. Weet je zeker dat je het wil verwijderen?</translation>
</message>
</context>
<context>
@@ -1115,15 +1743,130 @@ Wilt u toch doorgaan met openen?</translation>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Plugingegevens:</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Verwijderen</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Verwijder plugingegevens?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Wil je echt de geselecteerde plugingegevens verwijderen?
+Hierdoor werken de plugins mogelijk niet meer goed.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Waarde</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation>- Kloon</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Naam</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Grootte</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Toevoegen</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Verwijderen</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Open</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Opslaan</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Kies bestanden</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Weet je zeker dat je %n bijlage wil verwijderen?</numerusform><numerusform>Weet je zeker dat je %n bijlagen wil verwijderen?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Bevestig verwijderen</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Bijlagen opslaan</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Map maken is niet gelukt:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Weet je zeker dat je het bestaande bestand &quot;%1&quot; wil overschrijven met de bijlage?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Overschrijven bevestigen</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Opslaan van bijlagen is niet gelukt:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Openen van bijlage is niet gelukt:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Openen van bijlagen is niet gelukt:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Openen van bestanden is niet gelukt:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1138,7 +1881,7 @@ Wilt u toch doorgaan met openen?</translation>
</message>
<message>
<source>Title</source>
- <translation>Titel</translation>
+ <translation>Naam</translation>
</message>
<message>
<source>Username</source>
@@ -1152,12 +1895,17 @@ Wilt u toch doorgaan met openen?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Groep</translation>
</message>
<message>
<source>Title</source>
- <translation>Titel</translation>
+ <translation>Naam</translation>
</message>
<message>
<source>Username</source>
@@ -1168,8 +1916,66 @@ Wilt u toch doorgaan met openen?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
+ <source>Never</source>
+ <translation>Nooit</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Opmerkingen</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Verloopt</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Aangemaakt</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Gewijzigd</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Gezien</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Bijlagen</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Pas weergave aan</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Gebruikersnamen verbergen</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Wachtwoorden verbergen</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Pas aan venster aan</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Pas aan inhoud aan</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Terugzetten op standaardwaarden</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1181,6 +1987,17 @@ Wilt u toch doorgaan met openen?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Kan bestand niet opslaan!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Kan het native messaging scriptbestand niet opslaan.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1230,16 +2047,375 @@ Wilt u toch doorgaan met openen?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Zorg ervoor dat het wachtwoord tekens uit iedere groep bevat</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Uitgebreide ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
<message>
<source>&amp;Close</source>
- <translation type="unfinished"/>
+ <translation>&amp;Sluiten</translation>
</message>
<message>
<source>Close message</source>
- <translation type="unfinished"/>
+ <translation>Sluit bericht</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Challenge-response uitgeven niet mogelijk.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Verkeerde sleutel of corrupte database.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Challenge-response uitgeven niet mogelijk.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>ontbrekende database headers</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Niet geldige grootte van header controlecijfer</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Header SHA256 mismatch</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Verkeerde sleutel of database bestand is beschadigd. (HMAC mismatch)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Onbekend versleutel algoritme</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Niet geldige grootte van header id</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Niet geldige lengte van header veld</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Niet geldige lengte van header data</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Fout bij het openen van de buffer voor KDF parameters in header</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Niet-ondersteunde key derivation function (KDF) of ongeldige parameters</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Verouderde header velden gevonden in KDBX4 bestand.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Niet geldige grootte van inner header id</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Niet geldige lengte van inner header veld</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Niet geldige binaire grootte van inner header</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet-ondersteunde versie van KeePass variant map.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige lengte van de variant map entry</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige data in de variant map entry name</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige lengte van de variant map waarde</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige data in de variant map waarde</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige lengte van een variant map Bool waarde</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige lengte van een variant map Int32 waarde</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige lengte van een variant map UInt32 waarde</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige lengte van een variant map Int64 waarde</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige lengte van een variant map UInt64 waarde</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige item type in variant map</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niet geldige grootte van variant map veld type</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Niet geldige symmetrisch versleutel algoritme.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Niet geldig grootte IV van symmetrisch versleutel algoritme.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Fout bij het serialisatie van KDF parameters variant map</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Niet geldige lengte versleutel uuid</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Niet ondersteund versleutel algoritme</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Niet geldige lengte van compressie opties</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Niet ondersteund compressie-algoritme</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Niet geldige grootte van master seed</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Niet geldige grootte van transform seed</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Niet geldige aantal transformatie rondes</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Niet geldige grootte van start bytes</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Niet geldige grootte van random stream id</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Niet geldig inner-random-stream versleutel algoritme</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Geen Keepass-database.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>He gekozen bestand is een oude KeePass 1 database (.kdb)
+
+Je kunt het importeren door te klikken op Database&gt;&apos;KeePass 1 database importeren&apos;.
+Deze actie is niet omkeerbaar. Je kunt de geïmporteerde database niet meer openen met de oude KeePassX 0.4 versie.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Niet-ondersteunde KeePass 2 databaseversie.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML parsing fout: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Geen hoofdgroep</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Ontbrekend icoon uuid of data</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Ontbrekende custom data sleutel of waarde</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Meerdere groepselementen</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Null groep uuid</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Niet geldig groep icon nummer</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Niet geldige EnableAutoType waarde</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Niet geldige EnableSearching waarde</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Geen groep uuid gevonden</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Null DeleteObject uuid</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Ontbrekende DeletedObject uuid of tijd</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Null item uuid</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Niet geldig icoon item nummer</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Geschiedenis element in geschiedenis item</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Geen item uuid gevonden</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Geschiedenis element met ander uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Het is niet gelukt om de tekst te ontcijferen</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Dubbel aangepaste eigenschap gevonden</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Item string sleutel of waarde ontbreekt</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Duplicaat bijlage gevonden</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Item binaire sleutel of waarde ontbreekt</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Auto-typen koppeling venster of sequence ontbreekt</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Niet geldige bool waarde</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Niet geldige datum-tijdwaarde</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Niet geldige kleurwaarde</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Niet geldige kleur in rgb deel</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Niet geldig getal</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Niet geldige uuid-waarde</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Het is niet gelukt om de binary uit te pakken</translation>
</message>
</context>
<context>
@@ -1272,6 +2448,35 @@ Wilt u toch doorgaan met openen?</translation>
<translation>Niet-ondersteunde versie van Keepass-database</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Initialization Vector kon niet gelezen worden</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Niet geldig aantal groepen</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Niet geldig aantal items</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Niet geldige grootte van inhoud-hash</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Niet geldige grootte van transform seed</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Niet geldig aantal transformatie rondes</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Opbouwen van de groepsboom is niet gelukt</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Alles</translation>
</message>
@@ -1283,126 +2488,141 @@ Wilt u toch doorgaan met openen?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Verkeerde sleutel of corrupte database.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Geen Keepass-database.</translation>
+ <source>Key transformation failed</source>
+ <translation>Sleutel transformatie is mislukt</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Niet-ondersteunde versie van Keepass-database.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Niet geldig groep veld typenummer</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Verkeerde sleutel of corrupte database.</translation>
+ <source>Invalid group field size</source>
+ <translation>Niet geldige grootte van groep veld</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Groep veld data komt niet overeen met grootte</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group id field size</source>
+ <translation>Onjuiste grootte van id veld</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group creation time field size</source>
+ <translation>Onjuiste grootte van aanmaaktijd veld</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group modification time field size</source>
+ <translation>Onjuiste grootte wijzigingstijd veld</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Onjuiste grootte toegangstijd veld</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Fatale fout bij het testen van de cryptografische functies.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Onjuiste grootte verloop-tijd veld</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassX - Fout</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Onjuiste grootte icoon veld</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group level field size</source>
+ <translation>Onjuiste grootte van groepsniveau veld</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation type="unfinished"/>
+ <source>Invalid group field type</source>
+ <translation>Niet geldig groep veldtype</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation type="unfinished"/>
+ <source>Missing group id or level</source>
+ <translation>Ontbrekende groeps-id of niveau</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Open database</translation>
+ <source>Missing entry field type number</source>
+ <translation>Ontbrekend item veld type nummer</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Database-instellingen</translation>
+ <source>Invalid entry field size</source>
+ <translation>Niet geldige grootte van item veld</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Kopieer gebruikersnaam naar klembord</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Item veld data komt niet overeen met grootte</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Kopieer wachtwoord naar klembord</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Niet geldige grootte van uuid veld</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Instellingen</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Niet geldige grootte van groep id veld</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Werkbalk weergeven</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Niet geldige grootte van icoon veld</translation>
</message>
<message>
- <source>read-only</source>
- <translation>alleen-lezen</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Niet geldige grootte van aanmaaktijd veld</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Wissel venster</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Niet geldige grootte van wijzigingstijd veld</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 Database</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Niet geldige grootte van verloop-tijd veld</translation>
</message>
<message>
- <source>All files</source>
- <translation>Alle bestanden</translation>
+ <source>Invalid entry field type</source>
+ <translation>Niet geldig item veld type</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Gerepareerde database opslaan</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Het bestaande single-instance vergrendelbestand is niet geldig. Een nieuwe instance wordt gestart.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Opslaan van de database is mislukt.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Het vergrendelbestand kon niet worden aangemaakt. Single-instance mode uitgeschakeld.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Een andere instance van KeePassXC is reeds gestart.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Fatale fout bij het testen van de cryptografische functies.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Fout</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Database</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Recente databases</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importeren</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Hulp</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>Items</translation>
</message>
@@ -1411,12 +2631,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Kopieer eigenschap naar klembord</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Tijd gebaseerd eenmalig wachtwoord</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Groepen</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Beeld</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Tools</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1427,6 +2651,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Over</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Open de database...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Sla database op</translation>
</message>
@@ -1467,24 +2695,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Verwijder groep</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>&amp;Database-instellingen</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Be&amp;waar de database als...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Kloon item</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Wijzig het &amp;master wachtwoord...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation type="unfinished"/>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Database-instellingen</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation type="unfinished"/>
+ <source>Database settings</source>
+ <translation>Database-instellingen</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation type="unfinished"/>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Kloon item</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1495,14 +2723,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Kopieer &amp;gebruikersnaam</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Kopieer gebruikersnaam naar klembord</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Kopieer wachtwoord</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Kopieer wachtwoord naar klembord</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Instellingen</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Wachtwoord generator</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Voer auto-typen uit</translation>
</message>
@@ -1516,87 +2756,218 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>&amp;Title</source>
- <translation>&amp;Titel</translation>
+ <translation>&amp;Naam</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation>Kopieer naam naar klembord</translation>
</message>
<message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Kopieer URL naar klembord</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Opmerkingen</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Wachtwoord generator</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Kopieer notities naar klembord</translation>
</message>
<message>
- <source>Clear history</source>
- <translation type="unfinished"/>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exporteer naar een CSVbestand...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation type="unfinished"/>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importeer een KeePass 1 database...</translation>
</message>
<message>
- <source>Import</source>
- <translation type="unfinished"/>
+ <source>Import CSV file...</source>
+ <translation>Importeer een CSV bestand...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation type="unfinished"/>
+ <source>Re&amp;pair database...</source>
+ <translation>Re&amp;pareer de database...</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation type="unfinished"/>
+ <source>Show TOTP</source>
+ <translation>Laat het TOTP zien</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Stel TOTP in...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Kopieer &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Leeg prullenbak</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Wis de geschiedenis</translation>
</message>
<message>
<source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <translation>Geen toegang tot configuratiebestand %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Het lijkt erop dat je KeePassHTTP voor integratie met de browser gebruikt. Deze functie is verouderd en zal worden verwijderd. &lt;br&gt;Schakel aub over naar KeePassXC-Browser! Voor hulp bij migratie, bezoek onze &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt; migratiehandleiding&lt;/a&gt; (waarschuwing %1 van 3).&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation>alleen-lezen</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>Wissel venster</translation>
</message>
<message>
<source>Quit KeePassXC</source>
- <translation type="unfinished"/>
+ <translation>Verlaat KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Database</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Alle bestanden</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Open database</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Gerepareerde database opslaan</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Opslaan van de database is mislukt.</translation>
</message>
<message>
<source>Please touch the button on your YubiKey!</source>
- <translation type="unfinished"/>
+ <translation>Raak de knop op de YubiKey aan!</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation type="unfinished"/>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>WAARSCHUWING: Je gebruikt een niet stabiele versie van KeePassXC!
+Er is een hoog risico op corruptie, beheer een back-up van jouw databases.
+Deze versie is niet bedoeld voor productie doeleinden.</translation>
</message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
<message>
- <source>&amp;Open database...</source>
- <translation type="unfinished"/>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Niet geldig sleutelbestand, er werd een OpenSSH sleutel verwacht</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation type="unfinished"/>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM grens fout</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation type="unfinished"/>
+ <source>Base64 decoding failed</source>
+ <translation>Base64 decoderen mislukt</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation type="unfinished"/>
+ <source>Key file way too small.</source>
+ <translation>Sleutelbestand veel te klein.</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation type="unfinished"/>
+ <source>Key file magic header id invalid</source>
+ <translation>Niet geldig magic header-id in sleutelbestand</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation type="unfinished"/>
+ <source>Found zero keys</source>
+ <translation>Nul sleutels gevonden</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation type="unfinished"/>
+ <source>Failed to read public key.</source>
+ <translation>Lezen publieke sleutel mislukt.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation type="unfinished"/>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Corrupt sleutelbestand, lezen prive-sleutel mislukt</translation>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation>Geen inhoud prive-sleutel om te decoderen</translation>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Probeer KDF te draaien zonder versleutel algoritme</translation>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Wachtwoord(-zin) nodig om sleutel te ontcijferen</translation>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Extractie sleutel mislukt, sleutelbestand corrupt?</translation>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Ontsleutelen mislukt, verkeerd wachtwoord(-zin)?</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Onverwacht bestandseinde publieke sleutel</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Onverwacht bestandseinde privesleutel</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Kan publieke sleutel niet opslaan: lege sleutel</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Onverwacht bestandseinde bij schrijven publieke sleutel</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Kan privesleutel niet opslaan: lege sleutel</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Onverwacht bestandseinde bij schrijven privesleutel</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Sleutel type %1 is niet ondersteund.</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Onbekende cipher: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Codering IV is te kort voor MD5 sleutel te verkrijgen.</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Onbekende functie om sleutel te verkrijgen: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Sleutel type %1 is onbekend.</translation>
</message>
</context>
<context>
@@ -1606,22 +2977,63 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Dialoog</translation>
</message>
<message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation>Dit wordt vereist om toegang te krijgen tot jouw databases vanaf ChromeIPass of PassIFox</translation>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Activeer de KeePassHTTP server</translation>
+ </message>
+ <message>
<source>General</source>
<translation>Algemeen</translation>
</message>
<message>
<source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
<translation>Toon een notificatie wanneer inloggegevens worden aangevraagd</translation>
</message>
<message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Geeft alleen de beste overeenkomsten terug voor een specifieke URL in plaats van alle invoer voor het hele domein.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation>Geef alleen de best ove&amp;reenkomende invoer terug</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Verzoek om database te ontgrendelen als deze vergrendeld is</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation>Alleen invoer van hetzelfde schema (http://, https://, ftp://,...) worden teruggegeven.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation>&amp;vergelijk URL sche&amp;ma&apos;s</translation>
+ </message>
+ <message>
<source>Sort matching entries by &amp;username</source>
<translation>Sorteer gegeven items op $gebruikersnaam</translation>
</message>
<message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Sorteer &amp;overeenkomende items op naam</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Verwijder alle gedeelde encryptiesleutels uit de actieve database</translation>
+ </message>
+ <message>
<source>Re&amp;move all stored permissions from entries in active database</source>
<translation>Verwijder alle opgeslagen permissies van items uit de actieve database</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Wachtwoord generator</translation>
+ </message>
+ <message>
<source>Advanced</source>
<translation>Geavanceerd</translation>
</message>
@@ -1634,10 +3046,22 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Altijd &amp;bewerken toestaan op items</translation>
</message>
<message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Alleen de geselecteerde database hoeft met een client verbonden te zijn.</translation>
+ </message>
+ <message>
<source>Searc&amp;h in all opened databases for matching entries</source>
<translation>Zoek in alle geopende databases naar overeenkomende items</translation>
</message>
<message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Het automatisch aanmaken of wijzigen van tekenreeks velden wordt niet ondersteund.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Geef geadvanceerde tekenreeks velden terug die met &quot;KH: &quot; beginnen.</translation>
+ </message>
+ <message>
<source>HTTP Port:</source>
<translation>HTTP-poort:</translation>
</message>
@@ -1646,16 +3070,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Standaard poort: 19455</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Verzoek om database te ontgrendelen als deze vergrendeld is</translation>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC zal op deze poort op 127.0.0.1 luisteren</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Sorteer &amp;overeenkomende items op titel</translation>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Waarschuwing:&lt;/b&gt; De volgende opties kunnen gevaarlijk zijn!</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC zal op deze poort op 127.0.0.1 luisteren</translation>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP is verouderd en zal worden verwijderd. &lt;br&gt;Schakel aub over naar KeePassXC-Browser! Voor hulp bij migratie, bezoek onze &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt; migratiehandleiding&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
<source>Cannot bind to privileged ports</source>
@@ -1667,61 +3091,29 @@ Using default port 19455.</source>
<translation>Kan niet binden naar bevoorrechte poorten onder 1024!
Standaardpoort 19455 wordt gebruikt.</translation>
</message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>Verwijder alle gedeelde encryptiesleutels uit de actieve database</translation>
- </message>
- <message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&amp;Geef geadvanceerde tekenreeks velden terug die met &quot;KH: &quot; beginnen.</translation>
- </message>
- <message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Het automatisch aanmaken of wijzigen van tekenreeks velden wordt niet ondersteund.</translation>
- </message>
- <message>
- <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Enable KeePassHTTP server</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>&amp;Return only best matching entries</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>&amp;Match URL schemes</source>
- <translation type="unfinished"/>
+ <source>%p%</source>
+ <translation>%p%</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Wachtwoord generator</translation>
+ <source>Password:</source>
+ <translation>Wachtwoord:</translation>
</message>
<message>
- <source>Only the selected database has to be connected with a client.</source>
- <translation type="unfinished"/>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>sterkte</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation type="unfinished"/>
+ <source>entropy</source>
+ <translation>entropie</translation>
</message>
-</context>
-<context>
- <name>PasswordGeneratorWidget</name>
<message>
- <source>Password:</source>
- <translation>Wachtwoord:</translation>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
</message>
<message>
<source>Character Types</source>
@@ -1744,38 +3136,50 @@ Change them only if you know what you are doing.</source>
<translation>Speciale tekens</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Uitgebreide ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Geen op elkaar lijkende tekens</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Accepteren</translation>
+ <source>Pick characters from every group</source>
+ <translation>Zorg dat het wachtwoord tekens uit iedere groep bevat</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Lengte:</translation>
</message>
<message>
- <source>strength</source>
- <translation>sterkte</translation>
+ <source>Passphrase</source>
+ <translation>Wachtwoord</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropie</translation>
+ <source>Wordlist:</source>
+ <translation>Woordenlijst</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Lengte:</translation>
+ <source>Word Count:</source>
+ <translation>Getelde woorden:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Zorg dat het wachtwoord tekens uit iedere groep bevat</translation>
+ <source>Word Separator:</source>
+ <translation>Woordscheiding:</translation>
</message>
<message>
<source>Generate</source>
<translation>Genereren</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Kopiëren</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Accepteren</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Sluiten</translation>
</message>
@@ -1793,75 +3197,320 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Slecht</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Zwak</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Goed</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Uitstekend</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Wachtwoord</translation>
+ <source>Database not opened</source>
+ <translation>Database niet geopend</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation type="unfinished"/>
+ <source>Database hash not available</source>
+ <translation>Database controlecijfer is niet beschikbaar</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation type="unfinished"/>
+ <source>Client public key not received</source>
+ <translation>Openbare sleutel van de client niet ontvangen</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation type="unfinished"/>
+ <source>Cannot decrypt message</source>
+ <translation>Kan het bericht niet ontcijferen</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation type="unfinished"/>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Timeout of kan geen verbinding maken met KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation type="unfinished"/>
+ <source>Action cancelled or denied</source>
+ <translation>Actie geannuleerd of geweigerd</translation>
</message>
<message>
- <source>Copy</source>
- <translation type="unfinished"/>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Kan bericht niet versleutelen of openbare sleutel niet gevonden. Is native messaging geactiveerd in KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC koppeling is mislukt, probeer het opnieuw</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Sleuteluitwisseling is mislukt</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>De coderingssleutel is niet herkend</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Geen opgeslagen databases gevonden</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Onjuiste actie</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Leeg bericht ontvangen</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Geen URL opgegeven</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Geen aanmeldingen gevonden</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Onbekende fout</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Voeg een nieuw item toe aan een database.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Pad naar de database.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Sleutelbestand van de database.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>pad</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Gebruikersnaam voor het item.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>gebruikersnaam</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL voor het item.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Vraag voor het item&apos;s wachtwoord.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Genereer een wachtwoord voor het item.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Lengte van het gegenereerde wachtwoord.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>lengte</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Pad van toe te voegen item.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Kopieer een gebruikerswachtwoord naar het klembord.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Pad van het vast te zetten item.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Wachttijd (sec) voor het leegmaken klembord.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Een item bewerken.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Naam voor deze invoer.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>naam</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Pad van het te wijzigen item.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Schat de entropie van een wachtwoord.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Wachtwoord waarvoor de entropie geschat moet worden.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Doe geavanceerde analyse op het wachtwoord.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extraheer en print de inhoud van de database.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Pad naar de te extraheren database.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Voor wachtwoord in voor ontsleutelen %1:</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Laden sleutelbestand mislukt %1: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>WAARSCHUWING: Je gebruikt een ouder sleutelbestandsformaat die in de toekomst mogelijk niet ondersteund zal worden.
+
+Overweeg aub een nieuw sleutelbestand te genereren.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Beschikbare instructies:
+:</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Naam van het uit te voeren commando.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Lijst van databaseinvoer.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Pad naar de groepslijst. Standaard is /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Zoek ingang snel.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Zoekterm.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Voeg twee databases samen.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Pad naar de samen te voegen doeldatabase.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Pad naar de samen te voegen brondatabase.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Gebruik dezelfde gegevens voor beide gegevensbestanden.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Sleutelbestand van gegevensbestand om samen te voegen.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Toon de informatie die hoort bij een item.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Namen van de te tonen eigenschappen. Deze optie kan meer dan eens worden opgegeven, waarbij elke eigenschap op een regel wordt getoond in de opgegeven volgorde. Als er geen eigenschappen worden opgegeven, wordt een samenvatting van de standaardeigenschappen gegeven.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>eigenschap</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Naam van het item dat getoond moet worden.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
- <translation type="unfinished"/>
+ <translation>NULL apparaat</translation>
</message>
<message>
<source>error reading from device</source>
- <translation type="unfinished"/>
+ <translation>fout bij het lezen van apparaat</translation>
</message>
<message>
<source>file empty !
</source>
- <translation type="unfinished"/>
+ <translation>leeg bestand!
+</translation>
</message>
<message>
<source>malformed string</source>
- <translation type="unfinished"/>
+ <translation>beschadigde tekst</translation>
</message>
<message>
<source>missing closing quote</source>
- <translation type="unfinished"/>
+ <translation>afsluitend aanhalingsteken ontbreekt</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – aanbevolen)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1869,7 +3518,7 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Title</source>
- <translation>Titel</translation>
+ <translation>Naam</translation>
</message>
<message>
<source>Username</source>
@@ -1880,28 +3529,86 @@ Change them only if you know what you are doing.</source>
<translation>Wachtwoord</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Opmerkingen</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Laatst bewerkt</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Aangemaakt</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Verouderde browser integratie</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
- <translation type="unfinished"/>
+ <translation>Browserintegratie</translation>
</message>
<message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
- <translation type="unfinished"/>
+ <translation>YubiKey[%1] Challenge Response - Slot %2 - %3</translation>
</message>
<message>
<source>Press</source>
- <translation type="unfinished"/>
+ <translation>Druk</translation>
</message>
<message>
<source>Passive</source>
- <translation type="unfinished"/>
+ <translation>Passief</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Genereer een nieuw willekeurig diceware wachtwoord zin</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Aantal woorden voor de Diceware wachtzin.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>hoeveelheid</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Woordenlijst voor de Diceware generator.
+[Standaard: EFF Engels]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Genereer een willekeurig wachtwoord</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Lengte van het gegenereerde wachtwoord.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Gebruik kleine letters in het gegenereerde wachtwoord</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Gebruik hoofdletters in het gegenereerde wachtwoord</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Gebruik cijfers in het gegenereerde wachtwoord</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Gebruik speciale karakters in het gegenereerde wachtwoord.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Gebruik uitgebreide ASCII tekens in het gegenereerde wachtwoord.</translation>
</message>
</context>
<context>
@@ -1941,8 +3648,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Hoofdlettergevoelig</translation>
+ <source>Search...</source>
+ <translation>Zoek...</translation>
</message>
<message>
<source>Search</source>
@@ -1953,41 +3660,77 @@ Change them only if you know what you are doing.</source>
<translation>Wissen</translation>
</message>
<message>
- <source>Search...</source>
- <translation type="unfinished"/>
+ <source>Case Sensitive</source>
+ <translation>Hoofdlettergevoelig</translation>
</message>
<message>
<source>Limit search to selected group</source>
- <translation type="unfinished"/>
+ <translation>Beperk het zoeken tot de geselecteerde groep</translation>
</message>
</context>
<context>
<name>Service</name>
<message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Nieuw verzoek voor sleutel koppeling</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation>Je hebt een koppeling verzoek ontvangen voor bovenstaande sleutel.
+Als je de sleutel toegang tot jouw KeePassXC database wil geven,
+geef het dan een unieke naam ter identificatie, en accepteer het verzoek.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Huidige sleutel overschrijven?</translation>
+ </message>
+ <message>
<source>A shared encryption-key with the name &quot;%1&quot; already exists.
Do you want to overwrite it?</source>
<translation>Een gedeelde encryptiesleutel met de naam &quot;%1&quot; bestaat al.
Wil je deze overschrjiven?</translation>
</message>
<message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Item bijwerken</translation>
+ </message>
+ <message>
<source>Do you want to update the information in %1 - %2?</source>
<translation>Wil je de gegevens in %1 - %2 bijwerken?</translation>
</message>
<message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database vergrendeld!</translation>
+ </message>
+ <message>
<source>The active database is locked!
Please unlock the selected database or choose another one which is unlocked.</source>
<translation>De actieve database is vergrendeld!
Ontgrendel de geselecteerde database of kies een ontgrendelde database.</translation>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>%1 encryptie%2 succesvol verwijderd uit de KeePassX/Http instellingen.</translation>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Sleutels uit database verwijderd</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Encryptie-sleutel verwijderd uit KeePassX/Http-instellingen.</numerusform><numerusform>%n encryptie-sleutels verwijderd uit KeePassX/Http-instellingen.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Geen sleutels gevonden</translation>
</message>
<message>
<source>No shared encryption-keys found in KeePassHttp Settings.</source>
<translation>Geen gedeelde encryptiesleutels gevonen in de KeePassHttp instellingen.</translation>
</message>
<message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Instellingen niet beschikbaar!</translation>
+ </message>
+ <message>
<source>The active database does not contain an entry of KeePassHttp Settings.</source>
<translation>De actieve database bevat geen KeePassHttp instellingen.</translation>
</message>
@@ -2000,56 +3743,21 @@ Ontgrendel de geselecteerde database of kies een ontgrendelde database.</transla
<translation>Afbreken</translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>De permissies zijn met succes verwijderd uit %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>De actieve database bevat geen items met permissies.</translation>
- </message>
- <message>
- <source>KeePassXC: New key association request</source>
- <translation>KeePassXC: Nieuw verzoek voor sleutel associatie</translation>
- </message>
- <message>
- <source>You have received an association request for the above key.
-If you would like to allow it access to your KeePassXC database
-give it a unique name to identify and accept it.</source>
- <translation>Je hebt verzoek voor sleutel associatie ontvangen voor de bovenstaande sleutel.
-Geef het een unieke identificerende naam en accepteer de associate wanneer je deze toestaan voor toegang tot je KeePassXC database.</translation>
- </message>
- <message>
- <source>KeePassXC: Overwrite existing key?</source>
- <translation>KeePassXC: Huidige sleutel overschrijven?</translation>
- </message>
- <message>
- <source>KeePassXC: Update Entry</source>
- <translation>KeePassXC: Item bijwerken</translation>
- </message>
- <message>
- <source>KeePassXC: Database locked!</source>
- <translation>KeePassXC: Database vergrendeld!</translation>
- </message>
- <message>
- <source>KeePassXC: Removed keys from database</source>
- <translation>KeePassXC: Sleutels uit database verwijderd</translation>
- </message>
- <message>
- <source>KeePassXC: No keys found</source>
- <translation>KeePassXC: Geen sleutels gevonden</translation>
- </message>
- <message>
- <source>KeePassXC: Settings not available!</source>
- <translation>KeePassXC: Instellingen niet beschikbaar!</translation>
- </message>
- <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Permissies verwijderd</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Permissies verwijderd uit %n item.</numerusform><numerusform>Permissies verwijderd uit %n items.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Geen item met permissies gevonden!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>De actieve database bevat geen items met permissies.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2067,16 +3775,32 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
</message>
<message>
<source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <translation>Geen toegang tot configuratiebestand %1</translation>
</message>
</context>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Basale instellingen</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Start slechts een enkele instance van KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Onthoud laatste databases</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Onthou de laatste sleutelbestanden en beveiligingsdongles</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Open vorige databases bij starten</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Automatisch opslaan bij afsluiten</translation>
</message>
@@ -2085,20 +3809,28 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
<translation>Automatisch opslaan na iedere wijziging</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Herlaad database automatisch als deze van buitenaf is gewijzigd</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimaliseer bij kopiëren naar klembord</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Scherm minimaliseren bij het opstarten</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
- <translation>Gebruik icoon van de groep voor nieuwe elementen</translation>
+ <translation>Gebruik icoon van de groep voor nieuwe items</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Globale sneltoets voor auto-typen</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Markeer de database niet als gewijzigd voor non-data wijzigingen (bijv. uitgebreide groepen)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Taal</translation>
+ <source>Hide the Details view</source>
+ <translation>Detail weergave verbergen</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2109,66 +3841,84 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
<translation>Bij minimaliseren enkel icoon in systray tonen</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Open vorige databases bij starten</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Herlaad database automatisch als deze van buitenaf is gewijzigd</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Bij sluiten icoon in systray tonen in plaats van volledig afsluiten</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Scherm minimaliseren bij het opstarten</translation>
+ <source>Dark system tray icon</source>
+ <translation>Donker systray icoon</translation>
</message>
<message>
- <source>Basic Settings</source>
- <translation type="unfinished"/>
+ <source>Language</source>
+ <translation>Taal</translation>
</message>
<message>
- <source>Remember last key files and security dongles</source>
- <translation type="unfinished"/>
+ <source>Auto-Type</source>
+ <translation>Auto-typen - KeePassX</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Gebruik naam van item als vensternaam voor auto-typen</translation>
</message>
<message>
- <source>Auto-Type</source>
- <translation>Auto-typen - KeePassX</translation>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Laat URL overeenkomen met item URL bij auto-typen</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <source>Always ask before performing Auto-Type</source>
+ <translation>Vraag altijd voordat auto-type gebruikt wordt</translation>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
- <translation type="unfinished"/>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Globale sneltoets voor auto-typen</translation>
</message>
<message>
<source>Auto-Type delay</source>
- <translation type="unfinished"/>
+ <translation>auto-typevertraging</translation>
</message>
<message>
<source> ms</source>
- <translation type="unfinished"/>
+ <comment>Milliseconds</comment>
+ <translation>ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation type="unfinished"/>
+ <source>Startup</source>
+ <translation>Opstarten</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Bestandsbeheer</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Veilig opslaan van databasebestanden (kan incompatibel zijn met Dropbox en dergelijke)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Back-up het databasebestand voor het opslaan</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Item beheer</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Algemeen</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Timeouts</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Leeg klembord na</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sec</translation>
</message>
<message>
@@ -2176,8 +3926,12 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
<translation>Vergrendel databases na inactiviteit van</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Laat wachtwoorden standaard zien</translation>
+ <source>Convenience</source>
+ <translation>Gemak</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Vergrendel de database wanneer de sessie is vergrendeld of het deksel is gesloten</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2188,62 +3942,75 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
<translation>Herhalen van wachtwoord niet vereisen als deze zichtbaar is</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Laat wachtwoorden standaard zien</translation>
</message>
<message>
- <source>Convenience</source>
- <translation type="unfinished"/>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Verberg wachtwoorden in informatiepaneel.</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation type="unfinished"/>
+ <source>Hide entry notes by default</source>
+ <translation>Verberg standaard item aantekeningen</translation>
</message>
<message>
<source>Privacy</source>
- <translation type="unfinished"/>
+ <translation>Privacy</translation>
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
- <translation type="unfinished"/>
+ <translation>Gebruik Google om op terug te vallen voor het downloaden van de websiteiconen</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Vergrendel de hiervoor vergrendelde database opnieuw na Auto-Type.</translation>
</message>
</context>
<context>
<name>SetupTotpDialog</name>
<message>
<source>Setup TOTP</source>
- <translation type="unfinished"/>
+ <translation>Stel TOTP in</translation>
</message>
<message>
<source>Key:</source>
- <translation type="unfinished"/>
+ <translation>Wachtwoord:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Standaard &quot;RFC 6238 token&quot; instellingen</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>&quot;Steam token&quot; instellingen</translation>
</message>
<message>
<source>Use custom settings</source>
- <translation type="unfinished"/>
+ <translation>Gebruik aangepaste instellingen</translation>
</message>
<message>
<source>Note: Change these settings only if you know what you are doing.</source>
- <translation type="unfinished"/>
+ <translation>Let op: wijzig deze instellingen alleen als je weet wat je doet.</translation>
</message>
<message>
<source>Time step:</source>
- <translation type="unfinished"/>
+ <translation>Tijdsinterval:</translation>
</message>
<message>
<source>8 digits</source>
- <translation type="unfinished"/>
+ <translation>8 digits</translation>
</message>
<message>
<source>6 digits</source>
- <translation type="unfinished"/>
+ <translation>6 digits</translation>
</message>
<message>
<source>Code size:</source>
- <translation type="unfinished"/>
+ <translation>Grootte van de code:</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sec</translation>
</message>
</context>
@@ -2251,23 +4018,23 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
<name>TotpDialog</name>
<message>
<source>Timed Password</source>
- <translation type="unfinished"/>
+ <translation>Getimed wachtwoord</translation>
</message>
<message>
<source>000000</source>
- <translation type="unfinished"/>
+ <translation>000000</translation>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"/>
+ <translation>Kopiëren</translation>
</message>
<message>
<source>Expires in</source>
- <translation type="unfinished"/>
+ <translation>Verloopt binnen</translation>
</message>
<message>
<source>seconds</source>
- <translation type="unfinished"/>
+ <translation>seconden</translation>
</message>
</context>
<context>
@@ -2280,119 +4047,71 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
- <translation type="unfinished"/>
+ <translation>Begin met het opslaan van jouw wachtwoorden in een KeePassXC database</translation>
</message>
<message>
<source>Create new database</source>
- <translation type="unfinished"/>
+ <translation>Maak nieuwe database</translation>
</message>
<message>
<source>Open existing database</source>
- <translation type="unfinished"/>
+ <translation>Open bestaande database</translation>
</message>
<message>
<source>Import from KeePass 1</source>
- <translation type="unfinished"/>
+ <translation>Importeer Keepass 1-database</translation>
</message>
<message>
<source>Import from CSV</source>
- <translation type="unfinished"/>
+ <translation>Uit CSV-bestand importeren</translation>
</message>
<message>
<source>Recent databases</source>
<translation>Recente databases</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Welkom bij KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>pad naar een configuratiebestand</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Verwijder een item uit het gegevensbestand.</translation>
</message>
<message>
- <source>key file of the database</source>
- <translation>sleutelbestand van de database</translation>
+ <source>Path of the database.</source>
+ <translation>Pad naar de database.</translation>
</message>
<message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeepassX - multi-platform wachtwoordbeheerder</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Pad van het te verwijderen item.</translation>
</message>
<message>
- <source>read password of the database from stdin</source>
- <translation>lees wachtwoord van de database uit stdin</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeepassXC - multi-platform wachtwoordbeheerder</translation>
</message>
<message>
<source>filenames of the password databases to open (*.kdbx)</source>
<translation>bestandsnamen van de te openen wachtwoorddatabases (*.kdbx)</translation>
</message>
<message>
- <source>Copy a password to the clipboard</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>List database entries.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database to merge into.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database to merge from.</source>
- <translation type="unfinished"/>
+ <source>path to a custom config file</source>
+ <translation>pad naar een configuratiebestand</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation type="unfinished"/>
+ <source>key file of the database</source>
+ <translation>sleutelbestand van de database</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation type="unfinished"/>
+ <source>read password of the database from stdin</source>
+ <translation>lees wachtwoord van de database uit stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation type="unfinished"/>
+ <source>Parent window handle</source>
+ <translation>Parent window handle</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_pl.ts b/share/translations/keepassx_pl.ts
index 66574202f..04c5dc4b5 100644
--- a/share/translations/keepassx_pl.ts
+++ b/share/translations/keepassx_pl.ts
@@ -10,14 +10,30 @@
<translation>O programie</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Zgłoś błędy na: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC jest dystrybuowany zgodnie z warunkami licencji GNU General Public License (GPL) w wersji 2 lub (opcjonalnie) w wersji 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Współtwórcy</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Zobacz wkłady na GitHubie&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Informacje debugowania</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Uwzględnij następujące informacje, gdy zgłaszasz błąd:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Skopiuj do schowka</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Rewizja: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Dystrybucja: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Biblioteki:</translation>
</message>
@@ -48,33 +68,27 @@ JÄ…dro: %3 %4</translation>
<translation>WÅ‚Ä…czone rozszerzenia:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Zgłoś błędy na: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC jest dystrybuowany zgodnie z warunkami licencji GNU General Public License (GPL) w wersji 2 lub (opcjonalnie) w wersji 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Opiekunowie projektu:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Zobacz wkłady na GitHubie&lt;/a&gt;</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Specjalne podziękowania od zespołu KeePassXC dla debfx za stworzenie oryginalnego KeePassX.</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Uwzględnij następujące informacje, gdy zgłaszasz błąd:</translation>
- </message>
- <message>
- <source>Distribution: %1</source>
- <translation>Dystrybucja: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Typ kompilacji: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>Potwierdź dostęp KeePassXC HTTP</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Zapamiętaj tę decyzję</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 zażądał dostępu do haseł dla następujących element(ów).
Wybierz, czy chcesz zezwolić na dostęp.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>Potwierdź dostęp KeePassXC HTTP</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>WÅ‚Ä…cz agenta SSH (wymaga ponownego uruchomienia)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Auto-uzupełnianie - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-uzupełnianie</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Składnia instrukcji auto-uzupełniania jest niepoprawna!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Polecenie auto-uzupełniania zawiera bardzo długie opóźnienie. Czy chcesz kontynuować?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Polecenie auto-uzupełniania zawiera bardzo wolne wciśnięcia klawiszy. Czy chcesz kontynuować?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Polecenie auto-uzupełniania zawiera argumenty, które powtarzają się bardzo często. Czy chcesz kontynuować?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grupa</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Tytuł</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Użytkownik</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekwencja</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-uzupełnianie - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Wybierz wpis do auto-uzupełniania:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Auto-uzupełnianie - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>Potwierdź dostęp KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Zapamiętaj tę decyzję</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Zezwól</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Odmów</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 zażądał dostępu do haseł dla następujących element(ów).
+Wybierz, czy chcesz zezwolić na dostęp.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Wymagane jest to w celu uzyskania dostępu do baz danych za pomocą KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>WÅ‚Ä…cz integracjÄ™ KeepassXC z przeglÄ…darkÄ…</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Ogólne</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>WÅ‚Ä…cz integracjÄ™ z tymi przeglÄ…darkami:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>P&amp;okaż powiadomienie, gdy wymagane są poświadczenia</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Żąda&amp;j odblokowania bazy danych, jeżeli jest zablokowana</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Tylko wpisy z tym samym schematem (http://, https://, ...) sÄ… zwracane.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Dopasuj schemat adresu URL (np. https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Zwracaj tylko najlepsze dopasowania wpisów dla URL zamiast wszystkich wpisów całej domeny.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Z&amp;wróć tylko najlepiej pasujące poświadczenia</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sortuj dopasowane poświadczenia według &amp;tytułu</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sortuj dopasowane poświadczenia według &amp;użytkownika</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Odłącz wszystkie przeglądarki</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Zapomnij wszystkie zapamiętane &amp;uprawnienia</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Zaawansowane</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nigdy nie &amp;pytaj przed uzyskaniem dostępu do poświadczeń</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nigdy nie &amp;pytaj przed aktualizacją poświadczeń</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Tylko wybrana baza danych musi być podłączona do klienta.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Szuk&amp;aj we wszystkich otwartych bazach danych dopasowanych poświadczeń</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatyczne tworzenie albo aktualizowanie pól ciągów znaków nie jest obsługiwane.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Zwracaj zaawansowane pola ciągów znaków, które zaczynają się od &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Aktualizuje automatycznie ścieżkę binarną KeePassXC albo keepassxc-proxy do skryptów Native Messaging podczas uruchamiania.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Aktualizuj pliki manifestu &amp;Native Messaging podczas uruchamiania</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Obsługuj aplikację proxy pomiędzy KeePassXC a rozszerzeniem przeglądarki.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Używaj aplikacj &amp;proxy pomiędzy KeePassXC a rozszerzeniem przeglądarki</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Używaj niestandardowej lokalizacji proxy, jeżeli zainstalowałeś proxy ręcznie.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Używaj &amp;niestandardowej lokalizacji proxy</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>PrzeglÄ…daj...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Ostrzeżenie:&lt;/b&gt; Poniższe opcje mogą być niebezpieczne!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Pliki wykonywalne (*.exe);;Wszystkie pliki (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Pliki wykonywalne (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Wybierz niestandardowÄ… lokalizacjÄ™ proxy</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Przykro nam, ale KeePassXC-Browser obecnie nie obsługuje wydań Snap.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Nowe żądanie skojarzenia klucza</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Otrzymałeś żądanie skojarzenia powyższego klucza.
+
+Jeżeli chcesz zezwolić na dostęp do twojej bazy danych KeePassXC,
+nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Zapisz i zezwól na dostęp</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Nadpisać istniejący klucz?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Współdzielony klucz szyfrujący o nazwie &quot;%1&quot; już istnieje.
+Czy chcesz go nadpisać?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Aktualizacja wpisu</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Czy chcesz uaktualnić informację w %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Baza danych zablokowana!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Aktywna baza danych jest zablokowana!
+Proszę odblokować wybraną bazę albo wybrać inną, która jest odblokowana.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Ustawienia niedostępne!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Aktywna baza danych nie zawiera wpisu z ustawieniami.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Nie znaleziono kluczy</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Nie znaleziono współdzielonych kluczy szyfrujących w ustawieniach KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Usunięto klucze z bazy danych</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Pomyślnie usunięto %n klucz szyfrowania z ustawień KeePassXC.</numerusform><numerusform>Pomyślnie usunięto %n klucze szyfrowania z ustawień KeePassXC.</numerusform><numerusform>Pomyślnie usunięto %n kluczy szyfrowania z ustawień KeePassXC.</numerusform><numerusform>Pomyślnie usunięto %n kluczy szyfrowania z ustawień KeePassXC.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Usuwanie przechowywanych uprawnień...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Zaniechaj</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Usunięto uprawnienia</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Pomyślnie usunięto uprawnienia z %n wpisu.</numerusform><numerusform>Pomyślnie usunięto uprawnienia z %n wpisów.</numerusform><numerusform>Pomyślnie usunięto uprawnienia z %n wpisów.</numerusform><numerusform>Pomyślnie usunięto uprawnienia z %n wpisów.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Nie znaleziono wpisu z uprawnieniami!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Aktywna baza danych nie zawiera wpisu z uprawnieniami.</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<translation>Wprowadź ponownie hasło:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Plik klucza</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>PrzeglÄ…daj</translation>
</message>
@@ -157,6 +502,14 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<translation>Stwórz</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>&amp;Wyzwanie-odpowiedź</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Odśwież</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Pliki kluczy</translation>
</message>
@@ -177,6 +530,10 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<translation>Wybierz plik z kluczem</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Puste hasło</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Czy na pewno chcesz używać pustego ciągu jako hasła?</translation>
</message>
@@ -191,20 +548,18 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Plik klucza</translation>
+ <source>Legacy key file format</source>
+ <translation>Przestarzały format pliku klucza</translation>
</message>
<message>
- <source>Cha&amp;llenge Response</source>
- <translation>&amp;Wyzwanie-odpowiedź</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Odśwież</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Puste hasło</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Używasz przestarzałego formatu pliku klucza, który może być
+nieobsługiwany w przyszłości.
+
+Proszę rozważyć wygenerowanie nowego pliku klucza.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +573,10 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<translation>Opcje klonowania</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Dodaj &apos; - Klon&apos; do nazwy</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Wymień nazwę użytkownika i hasło z odniesieniami</translation>
</message>
@@ -225,10 +584,6 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<source>Copy history</source>
<translation>Skopiuj historiÄ™</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Dodaj &apos; - Klon&apos; do nazwy</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +681,6 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importuj plik CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>BÅ‚Ä…d</translation>
</message>
@@ -340,17 +691,17 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> bajt, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n bajt, </numerusform><numerusform>%n bajty, </numerusform><numerusform>%n bajtów, </numerusform><numerusform>%n bajt, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> rzędy, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n rząd, </numerusform><numerusform>%n rzędy, </numerusform><numerusform>%n rzędów, </numerusform><numerusform>%n rząd, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> kolumny</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n kolumna</numerusform><numerusform>%n kolumny</numerusform><numerusform>%n kolumn</numerusform><numerusform>%n kolumna</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +723,14 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<translation>PrzeglÄ…daj</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Odśwież</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Wyzwanie-odpowiedź:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Nie można otworzyć bazy danych.</translation>
</message>
@@ -380,6 +739,24 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<translation>Nie mogę otworzyć pliku z kluczem</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Przestarzały format pliku klucza</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Używasz przestarzałego formatu pliku klucza, który może być
+nieobsługiwany w przyszłości.
+
+Proszę rozważyć wygenerowanie nowego pliku klucza.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Nie wyświetlaj ponownie tego ostrzeżenia</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Wszystkie pliki</translation>
</message>
@@ -391,14 +768,6 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<source>Select key file</source>
<translation>Wybierz plik z kluczem</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Odśwież</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Wyzwanie-odpowiedź:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +784,14 @@ Wybierz, czy chcesz zezwolić na dostęp.</translation>
<translation>Nie mogę otworzyć pliku z kluczem</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Pomyślnie otworzono bazę danych. Nic do zrobienia.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Nie można otworzyć bazy danych.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Pomyślnie otworzono bazę danych. Nic do zrobienia.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Sukces</translation>
</message>
@@ -440,28 +809,122 @@ Możesz teraz ją już zapisać.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Nazwa bazy danych:</translation>
+ <source>General</source>
+ <translation>Ogólne</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Opis bazy danych:</translation>
+ <source>Encryption</source>
+ <translation>Szyfrowanie</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Liczba rund zbyt duża</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Używasz bardzo dużej liczby rund transformacji klucza z Argon2.
+
+Jeśli zachowasz ten numer, otworzenie twojej bazy danych może zająć kilka godzin lub dni (lub nawet dłużej)!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Zrozumiano, zachowaj numer</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Liczba rund zbyt mała</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Używasz bardzo małej liczby rund transformacji klucza z AES-KDF.
+
+Jeśli zachowasz ten numer, twoja baza danych może być zbyt łatwa do złamania!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF niezmieniona</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Nie udało się transformować klucza za pomocą nowych parametrów KDF; KDF bez zmian.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform>wątek</numerusform><numerusform>wątki</numerusform><numerusform>wątków</numerusform><numerusform>wątków</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algorytm szyfrowania:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256-bitowy (domyślny)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256-bitowy</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Funkcja derywacji klucza:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Liczba rund szyfrowania:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Domyślny użytkownik:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>Przetestuj 1-sekundowe opóźnienie</translation>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>Zużycie pamięci:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Test sprawności</translation>
+ <source>Parallelism:</source>
+ <translation>Paralelizm:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Metadane bazy danych</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nazwa bazy danych:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Opis bazy danych:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Domyślny użytkownik:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>Ustawienia historii</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +935,27 @@ Możesz teraz ją już zapisać.</translation>
<translation>Maks. rozmiar historii:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Użyj kosza</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256-bitowy (domyślny)</translation>
+ <source>Use recycle bin</source>
+ <translation>Użyj kosza</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256-bitowy</translation>
+ <source>Additional Database Settings</source>
+ <translation>Dodatkowe ustawienia bazy danych</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algorytm:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>WÅ‚Ä…cz &amp;kompresjÄ™ (zalecane)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Główna</translation>
</message>
<message>
@@ -511,22 +975,48 @@ Możesz teraz ją już zapisać.</translation>
<translation>Nie znaleziono pliku!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Otwieranie bazy danych KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Nie można otworzyć bazy danych.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Baza danych KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Plik otwarty w trybie tylko do odczytu.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Otwieranie pliku CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>plik CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Wszystkie pliki (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Połączenie baz danych</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Otwieranie bazy danych KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Baza danych KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Zamknąć?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; jest w trybie edytowania.
+Odrzucić zmiany i zamknąć?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Zapisać zmiany?</translation>
</message>
@@ -541,10 +1031,22 @@ Zapisać zmiany?</translation>
<translation>BÅ‚Ä…d w zapisywaniu bazy danych.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Hasła</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Zapisz bazÄ™ danych jako</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Eksportowanie bazy danych do pliku CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>BÅ‚Ä…d przy zapisywaniu pliku CSV.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nowa baza danych</translation>
</message>
@@ -563,12 +1065,6 @@ Please press cancel to finish your changes or discard them.</source>
Naciśnij anuluj, aby zakończyć zmiany albo porzucić je.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Baza danych nie została nigdy zapisana.
-Możesz ją zapisać albo przestać blokować.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,69 +1073,23 @@ Czy chcesz zapisać przed zablokowaniem jej?
W przeciwnym wypadku zmiany zostanÄ… porzucone.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; jest w trybie edytowania.
-Odrzucić zmiany i zamknąć?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Eksportowanie bazy danych do pliku CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>plik CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>BÅ‚Ä…d przy zapisywaniu pliku CSV.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Nie można otworzyć bazy danych.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Połączenie baz danych</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Baza danyh, którą próbujesz zapisać, jest zablokowana przez inną instancję KeePassXC.
-Czy chcesz zapisać mimo to?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Hasła</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Baza danych jest już otwarta</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Baza danych, którą próbujesz otworzyć, jest zablokowana przez inną instancję KeePassXC.
-
-Czy chcesz ją otworzyć mimo to?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Otwórz tylko do odczytu</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Plik otwarty w trybie tylko do odczytu.</translation>
+ <source>Disable safe saves?</source>
+ <translation>Wyłączyć bezpieczne zapisywanie?</translation>
</message>
<message>
- <source>Open CSV file</source>
- <translation>Otwieranie pliku CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC nie zdołał wielokrotnie zapisać bazy danych. Jest to prawdopodobnie spowodowane przez usługi synchronizacji plików, które blokują plik zapisu.
+Wyłączyć bezpieczne zapisywanie i spróbować ponownie?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Wyszukiwanie...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Zmień główne hasło</translation>
</message>
@@ -660,6 +1110,14 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Czy na prawdę chcesz usunąć %1 wpisów na dobre?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Przenieść wpis do kosza?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Czy na pewno chcesz przenieść wpis&quot; %1&quot; do kosza?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Przenieść wpisy do kosza?</translation>
</message>
@@ -668,28 +1126,28 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation><numerusform>Czy na pewno chcesz przenieść %n wpis do kosza?</numerusform><numerusform>Czy na pewno chcesz przenieść %n wpisów do kosza?</numerusform><numerusform>Czy na pewno chcesz przenieść %n wpisów do kosza?</numerusform><numerusform>Czy na pewno chcesz przenieść %n wpisów do kosza?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Usunąć grupę?</translation>
+ <source>Execute command?</source>
+ <translation>Wykonać polecenie?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Czy na pewno całkowicie usunąć grupę &quot;%1&quot;?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Czy na pewno chcesz wykonać następujące polecenie?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nie mogę wyliczyć głównego klucza</translation>
+ <source>Remember my choice</source>
+ <translation>Zapamiętaj mój wybór</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Przenieść wpis do kosza?</translation>
+ <source>Delete group?</source>
+ <translation>Usunąć grupę?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Czy na pewno chcesz przenieść wpis&quot; %1&quot; do kosza?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Czy na pewno całkowicie usunąć grupę &quot;%1&quot;?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Wyszukiwanie...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Nie mogę wyliczyć głównego klucza</translation>
</message>
<message>
<source>No current database.</source>
@@ -708,20 +1166,8 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Brak wyników</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Wykonać polecenie?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Czy na pewno chcesz wykonać następujące polecenie?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Zapamiętaj mój wybór</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Żądanie automatycznego przeładowania</translation>
+ <source>File has changed</source>
+ <translation>Plik się zmienił</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -732,8 +1178,10 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Połącz żądanie</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Plik bazy danych został zmieniony, a masz niezapisane zmiany. Czy chcesz połączyć twoje zmiany?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Plik bazy danych został zmieniony, a masz niezapisane zmiany.
+Czy chcesz połączyć twoje zmiany?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -749,6 +1197,89 @@ Czy chcesz ją otworzyć mimo to?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Wygeneruj token TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Zamknij</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Ogólne</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Wygaśnięcie</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Użytkownik</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Autouzupełnianie</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Wyszukiwanie</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atrybuty</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Załączniki</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notatki</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Okno</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekwencja</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Szukaj</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Wyczyść</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Nigdy</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[CHRONIONE]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Wyłączone</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>WÅ‚Ä…czone</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -775,6 +1306,30 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Historia</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nie dotyczy</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(zaszyfrowane)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Wybierz klucz prywatny</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Plik jest zbyt duży, aby być kluczem prywatnym</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Nie udało się otworzyć klucza prywatnego</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Historia wpisu</translation>
</message>
@@ -795,22 +1350,20 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Nowy atrybut</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Wybierz plik</translation>
+ <source>Confirm Remove</source>
+ <translation>Potwierdź usunięcie</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Nie można otworzyć pliku</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Czy na pewno chcesz usunąć ten atrybut?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Zapisz załącznik</translation>
+ <source>[PROTECTED]</source>
+ <translation>[CHRONIONE]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Nie można zapisać załącznika:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Wciśnij Odsłoń, aby obejrzeć lub edytować</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -829,20 +1382,16 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>1 rok</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Potwierdź usunięcie</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Czy na pewno chcesz usunąć ten atrybut?</translation>
+ <source>Apply generated password?</source>
+ <translation>Zastosować wygenerowane hasło?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[CHRONIONE] Wciśnij Odsłoń, aby zobaczyć albo edytować</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Czy chcesz zastosować wygenerowane hasło do tego wpisu?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Czy na pewno chcesz usunąć ten załącznik?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Wpis został pomyślnie zaktualizowany.</translation>
</message>
</context>
<context>
@@ -860,18 +1409,6 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Usuń</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Załączniki</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Zapisz</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Otwórz</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Edytuj nazwÄ™</translation>
</message>
@@ -883,24 +1420,24 @@ Czy chcesz ją otworzyć mimo to?</translation>
<source>Reveal</source>
<translation>Odsłoń</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Włącz auto-uzupełnianie dla tego wpisu</translation>
+ <source>Attachments</source>
+ <translation>Załączniki</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Kolor pierwszego planu:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Kolor tła:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Tytuł okna:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Włącz auto-uzupełnianie dla tego wpisu</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -911,16 +1448,24 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>&amp;Używaj niestandardowej sekwencji auto-uzupełniania:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Korzystaj z dom&amp;yślnej sekwencji</translation>
+ <source>Window Associations</source>
+ <translation>Skojarzone okna</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Ustaw niest&amp;andardowÄ… sekwencjÄ™:</translation>
+ <source>-</source>
+ <translation>-</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Skojarzone okna</translation>
+ <source>Window title:</source>
+ <translation>Tytuł okna:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Użyj określonej sekwencji dla tego powiązania:</translation>
</message>
</context>
<context>
@@ -945,12 +1490,8 @@ Czy chcesz ją otworzyć mimo to?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Tytuł:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Użytkownik:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -961,20 +1502,104 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Powtórz:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Tytuł:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Wygasa</translation>
+ <source>Notes</source>
+ <translation>Notatki</translation>
</message>
<message>
<source>Presets</source>
<translation>Ustawienia</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Notatki:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Przełącz pole wyboru, aby wyświetlić sekcję notatek.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Użytkownik:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Wygasa</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Formularz</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Usuń klucz z agenta po jego wygaśnięciu</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> sekundy</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Odcisk palca</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Usuń klucz z agenta po zamknięciu/zablokowaniu bazy danych</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Klucz publiczny</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Dodaj klucz do agenta podczas otwierania/odblokowywania bazy danych</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Komentarz</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Odszyfruj</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nie dotyczy</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Skopiuj do schowka</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Klucz prywatny</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Plik zewnętrzny</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>PrzeglÄ…daj...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Załącznik</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Dodaj do agenta</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Usuń z agenta</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Wymagaj potwierdzenia użytkownika, gdy ten klucz jest używany</translation>
</message>
</context>
<context>
@@ -1046,6 +1671,14 @@ Czy chcesz ją otworzyć mimo to?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Użyj ikony domyślnej</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Użyj niesta&amp;ndardowej ikony</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Dodaj niestandardowÄ… ikonÄ™</translation>
</message>
@@ -1054,6 +1687,18 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Usuń niestandardową ikonę</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Pobierz ikonÄ™ ulubionych</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Nie można pobrać ikony ulubionych.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Wskazówka: możesz włączyć Google jako zastępstwo w menu Narzędzia&gt;Ustawienia&gt;Bezpieczeństwo</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Obrazy</translation>
</message>
@@ -1066,24 +1711,12 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Wybierz obraz</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Pobierz ikonÄ™ ulubionych</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Nie można pobrać ikony ulubionych.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Nie można odczytać ikony</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Użyj ikony domyślnej</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Użyj niesta&amp;ndardowej ikony</translation>
+ <source>Custom icon already exists</source>
+ <translation>Ikona niestandardowa już istnieje</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1093,14 +1726,6 @@ Czy chcesz ją otworzyć mimo to?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Ta ikona używana jest przez %1 wpisów i zostanie zamieniona na ikonę domyślną. Czy na pewno chcesz ją usunąć?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Wskazówka: możesz włączyć Google jako zastępstwo w menu Narzędzia&gt;Ustawienia&gt;Bezpieczeństwo</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>Ikona niestandardowa już istnieje</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1120,12 +1745,127 @@ Czy chcesz ją otworzyć mimo to?</translation>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Dane wtyczki</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Usuń</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Usunąć dane wtyczki?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Czy na pewno chcesz usunąć wybrane dane wtyczki?
+Może to spowodować nieprawidłowe działanie wtyczek.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Klucz</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Wartość</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
- <translation>- Klon</translation>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - Klon</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nazwa</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Rozmiar</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formularz</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Dodaj</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Usuń</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Otwórz</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Zapisz</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Wybierz pliki</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Czy na pewno chcesz usunąć %n załącznik?</numerusform><numerusform>Czy na pewno chcesz usunąć %n załączniki?</numerusform><numerusform>Czy na pewno chcesz usunąć %n załączników?</numerusform><numerusform>Czy na pewno chcesz usunąć %n załączników?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Potwierdź usunięcie</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Zapisz załączniki</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Nie można utworzyć katalogu:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Czy na pewno chcesz zastąpić istniejący plik &quot;%1&quot; załącznikiem?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Potwierdź zastąpienie</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Nie można zapisać załączników:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Nie można otworzyć załącznika:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Nie można otworzyć załączników:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Nie można otworzyć plików:
+%1</translation>
</message>
</context>
<context>
@@ -1157,6 +1897,11 @@ Czy chcesz ją otworzyć mimo to?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Odniesienie:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Grupa</translation>
</message>
@@ -1173,9 +1918,67 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Odniesienie:</translation>
+ <source>Never</source>
+ <translation>Nigdy</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notatki</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Wygasa</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Stworzone</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Modyfikowane</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Ostatnio używane</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Załączniki</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Dostosuj widok</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Ukryj użytkowników</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Ukryj hasła</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Dopasuj do okna</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Dopasuj do treści</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Przywróć domyślne</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Załączniki (ikona)</translation>
</message>
</context>
<context>
@@ -1186,6 +1989,17 @@ Czy chcesz ją otworzyć mimo to?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Nie można zapisać pliku!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Nie można zapisać pliku skryptu Native Messaging.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1235,6 +2049,10 @@ Czy chcesz ją otworzyć mimo to?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Zapewnij, że hasło będzie zawierało znaki ze wszystkich grup</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Rozszerzony ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1248,6 +2066,361 @@ Czy chcesz ją otworzyć mimo to?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nie mogę wyliczyć głównego klucza</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nie można wywołać wyzwania-odpowiedzi.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Błędny klucz lub baza danych jest uszkodzona.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Nie można wywołać wyzwania-odpowiedzi.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nie mogę wyliczyć głównego klucza</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>brakuje nagłówków bazy danych</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nie mogę wyliczyć głównego klucza</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Nieprawidłowy rozmiar sumy kontrolnej nagłówka</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Niepoprawny nagłówek SHA256</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Nieprawidłowy klucz lub uszkodzony plik bazy danych (niedopasowanie HMAC)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Nieznany szyfr</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Nieprawidłowy rozmiar identyfikatora nagłówka</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Nieprawidłowa długość pola nagłówka</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Nieprawidłowa długość danych nagłowka</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Nie można otworzyć bufora dla parametrów KDF w nagłówku</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Nieobsługiwana funkcja derywacji klucza (KDF) albo nieprawidłowe parametry</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>W pliku KDBX4 znaleziono przestarzałe pola nagłówków.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Nieprawidłowy rozmiar id wewnętrznego nagłówka</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Nieprawidłowa długość pola wewnętrznego nagłówka</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Nieprawidłowy rozmiar binarny wewnętrznego nagłówka</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Niewspierana wersja mapy odmian KeePass.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowa długość nazwy wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowe dane nazwy wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowa długość wartości wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowe dane wartości wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowa długość Bool wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowa długość Int32 wartości wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowa długość UInt32 wartości wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowa długość Int64 wartości wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowa długość UInt64 wartości wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowe typ wpisu mapy odmian</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Nieprawidłowy rozmiar typu pola mapy odmian</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Nieprawidłowy algorytm szyfrowania symetrycznego.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Nieprawidłowy rozmiar symetrycznego szyfru IV.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nie mogę wyliczyć głównego klucza</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Nie udało się serializować mapy odmian parametrów KDF</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Nieprawidłowa długość szyfru uuid</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Nieobsługiwany szyfr</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Nieprawidłowa długość flag kompresji</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Niewspierany algorytm kompresji</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Nieprawidłowy rozmiar głównej liczby losowej</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Nieprawidłowy rozmiar seedu transformacji</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Nieprawidłowy rozmiar rund transformacji</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Nieprawidłowy rozmiar początkowy bajtu</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Nieprawidłowy rozmiar losowy id strumienia</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Niepoprawny wewnętrzny szyfr losowy strumienia</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>To nie baza danych KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Wybrany plik jest starÄ… bazÄ… danych KeePassX 1 (.kdb).
+
+Możesz zaimportować ją przez wybranie Baza danych &gt; &apos;Importuj bazę danych KeePass 1...&apos;.
+Jest to migracja w jedną stronę. Nie będzie można otworzyć importowanej bazy danych za pomocą starej wersji KeePassX 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Nieobsługiwana wersja bazy danych KeePass 2.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>BÅ‚Ä…d parsowania XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Brak głównej grupy</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>BrakujÄ…ce uuid ikony lub danych</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Brakujący niestandardowy klucz danych lub wartość</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Elementy wielu grup</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Zerowa grupa uuid</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Nieprawidłowy numer ikony grupy</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Nieprawidłowa wartość EnableAutoType</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Nieprawidłowa wartość EnableSearching</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Nie znaleziono grupy uuid</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Zerowy uuid DeleteObject</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>BrakujÄ…ce uuid DeletedObject lub czasu</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Zerwoy wpis uuid</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Nieprawidłowy numer ikony wejściowej</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Element historii we wpisie historii</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Nie znaleziono wpisu uuid</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Element historii z innym uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Nie można odszyfrować ciągu wejściowego</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Znaleziono zduplikowany niestandardowy atrybut</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Brak klucza lub wartości dla wpisu</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Znaleziono zduplikowany załącznik</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Brak wejściowego klucza binarnego lub wartości</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Brak przypisanego okna lub sekwencji auto-uzupełniania</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Nieprawidłowa wartość bool</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Nieprawidłowa wartość czasu daty</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Nieprawidłowa wartość koloru</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Nieprawidłowa wartość części koloru rgb</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Nieprawidłowa wartość liczbowa</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Nieprawidłowa wartość uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Nie można zdekompresować pliku binarnego</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1277,6 +2450,35 @@ Czy chcesz ją otworzyć mimo to?</translation>
<translation>Niewspierana wersja bazy danych KeePass.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Nie można odczytać szyfrowania IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Nieprawidłowa liczba grup</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Nieprawidłowa liczba wpisów</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Nieprawidłowy rozmiar hashu zawartości</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Nieprawidłowy rozmiar seedu transformacji</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Nieprawidłowa liczba rund transformacji</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Nie można skonstruować drzewa grup</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Główna</translation>
</message>
@@ -1288,129 +2490,141 @@ Czy chcesz ją otworzyć mimo to?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Błędny klucz lub baza danych jest uszkodzona.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>To nie baza danych KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Nie udało się transformować klucza</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Niewspierana wersja bazy danych KeePass.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Nieprawidłowa liczba typu pola grupy</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Błędny klucz lub baza danych jest uszkodzona.</translation>
+ <source>Invalid group field size</source>
+ <translation>Nieprawidłowy rozmiar pola grupy</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nie mogę wyliczyć głównego klucza</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Odczytane dane pola grupy nie pasujÄ… do rozmiaru</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nie można wywołać wyzwania-odpowiedzi.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Niepoprawny rozmiar pola dla identyfikatora grupy</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Wybrany plik jest starÄ… bazÄ… danych KeePassX 1 (.kdb).
-
-Możesz zaimportować ją przez wybranie Baza danych &gt; &apos;Importuj bazę danych KeePass 1...&apos;.
-Jest to migracja w jedną stronę. Nie będzie można otworzyć importowanej bazy danych za pomocą starej wersji KeePassX 0.4.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Niepoprawny rozmiar pola dla czasu utworzenia grupy</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Nie można wywołać wyzwania-odpowiedzi.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Niepoprawny rozmiar pola dla czasu modyfikacji grupy</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Nie mogę wyliczyć głównego klucza</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Niepoprawny rozmiar pola dla czasu dostępu do grupy</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>BÅ‚Ä…d krytyczny podczas testowania funkcji kryptograficznych.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Niepoprawny rozmiar pola dla czasu wygaśnięcia grupy</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - BÅ‚Ä…d</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Niepoprawny rozmiar pola dla ikony grupy</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Nie można utworzyć pliku blokady. Tryb pojedynczej instancji jest wyłączony.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Niepoprawny rozmiar pola dla poziomu grupy</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Inna instancja KeePassXC jest już uruchomiona.</translation>
+ <source>Invalid group field type</source>
+ <translation>Nieprawidłowy typ pola grupy</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>Istniejący plik blokady pojedynczego wystąpienia jest nieprawidłowy. Uruchamianie nowego wystąpienia.</translation>
+ <source>Missing group id or level</source>
+ <translation>Brak poziomu lub identyfikatora grupy</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Otwieranie bazy danych</translation>
+ <source>Missing entry field type number</source>
+ <translation>Brak numeru typu dla pola wpisu</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Ustawienia bazy danych</translation>
+ <source>Invalid entry field size</source>
+ <translation>Nieprawidłowy rozmiar pola wpisu</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Skopiuj użytkownika do schowka</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Odczytane dane pola wpisu nie pasujÄ… do rozmiaru</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Skopiuj hasło do schowka</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Nieprawidłowy rozmiar pola wpisu uuid</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Ustawienia</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Nieprawidłowy rozmiar pola dla identyfikatora grupy wpisu</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Pokaż pasek narzędziowy</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Nieprawidłowy rozmiar pola dla ikony wpisu</translation>
</message>
<message>
- <source>read-only</source>
- <translation>Tylko do odczytu</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Nieprawidłowy rozmiar pola dla czasu utworzenia wpisu</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Pokaż/ukryj okno</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Nieprawidłowy rozmiar pola dla czasu modyfikacji wpisu</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Baza danych KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Nieprawidłowy rozmiar pola dla czasu wygaśnięcia wpisu</translation>
</message>
<message>
- <source>All files</source>
- <translation>Wszystkie pliki</translation>
+ <source>Invalid entry field type</source>
+ <translation>Nieprawidłowy typ pola wpisu</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Zapisz naprawionÄ… bazÄ™ danych</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Istniejący plik blokady pojedynczego wystąpienia jest nieprawidłowy. Uruchamianie nowego wystąpienia.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>BÅ‚Ä…d przy zapisie bazy danych.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Nie można utworzyć pliku blokady. Tryb pojedynczej instancji jest wyłączony.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Inna instancja KeePassXC jest już uruchomiona.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>BÅ‚Ä…d krytyczny podczas testowania funkcji kryptograficznych.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - BÅ‚Ä…d</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Baza danych</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Ostatnie bazy danych</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importuj</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Pomoc</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>W&amp;pisy</translation>
</message>
@@ -1419,12 +2633,16 @@ Jest to migracja w jedną stronę. Nie będzie można otworzyć importowanej baz
<translation>Skopiuj atry&amp;but do schowka</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Hasło jednorazowe zależne od czasu (TOTP)</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Grupy</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>Wi&amp;dok</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Narzędzia</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1435,6 +2653,10 @@ Jest to migracja w jedną stronę. Nie będzie można otworzyć importowanej baz
<translation>&amp;O programie</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>Ot&amp;wórz bazę danych...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Zapisz bazÄ™ danych</translation>
</message>
@@ -1475,24 +2697,24 @@ Jest to migracja w jedną stronę. Nie będzie można otworzyć importowanej baz
<translation>U&amp;suń grupę</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>Ustawienia bazy &amp;danych</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>&amp;Zapisz bazÄ™ danych jako...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Sklonuj wpis</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Zmień główne &amp;hasło...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Hasło jednorazowe zależne od czasu – TOTP</translation>
+ <source>&amp;Database settings</source>
+ <translation>Ustawienia bazy &amp;danych</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Skopiuj &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Ustawienia bazy danych</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Pokaż TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Sklonuj wpis</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1503,14 +2725,26 @@ Jest to migracja w jedną stronę. Nie będzie można otworzyć importowanej baz
<translation>Skopi&amp;uj użytkownika</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Skopiuj użytkownika do schowka</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Sko&amp;piuj hasło</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Skopiuj hasło do schowka</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Ustawienia</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Generator hasła</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Wykonaj auto-uzupełnianie</translation>
</message>
@@ -1527,165 +2761,222 @@ Jest to migracja w jedną stronę. Nie będzie można otworzyć importowanej baz
<translation>&amp;Tytuł</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Skopiuj tytuł do schowka</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Skopiuj adres URL do schowka</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Notatki</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Generator hasła</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Skopiuj notatki do schowka</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Wyczyść historię</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Eksportuj do pliku CSV...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Baza danych</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importuj bazÄ™ danych KeePass 1...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importuj</translation>
+ <source>Import CSV file...</source>
+ <translation>Importuj plik CSV...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Narzędzia</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Na&amp;praw bazÄ™ danych...</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Opróżnij kosz</translation>
+ <source>Show TOTP</source>
+ <translation>Pokaż TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Ustaw TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Skopiuj &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Opróżnij k&amp;osz</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Wyczyść historię</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Błąd dostępu pliku konfiguracyjnego %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Zakończ KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Wygląda na to, że używasz KeePassHTTP do integracji z przeglądarką. Ta funkcja została uznana za przestarzałą i zostanie usunięta w przyszłości.&lt;br&gt;Zamiast tego proszę przejść na KeePassXC-Browser! Aby uzyskać pomoc dotyczącą migracji, odwiedź nasz &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;przewodnik migracji&lt;/a&gt; (ostrzeżenie %1 z 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Proszę dotknąć przycisku na twoim YubiKey!</translation>
+ <source>read-only</source>
+ <translation>Tylko do odczytu</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>Pomoc</translation>
+ <source>Settings</source>
+ <translation>Ustawienia</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>Ot&amp;wórz bazę danych...</translation>
+ <source>Toggle window</source>
+ <translation>Pokaż/ukryj okno</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>&amp;Zapisz bazÄ™ danych jako...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Zakończ KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Zmień główne &amp;hasło...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Baza danych KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Eksportuj do pliku CSV...</translation>
+ <source>All files</source>
+ <translation>Wszystkie pliki</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Importuj bazÄ™ danych KeePass 1...</translation>
+ <source>Open database</source>
+ <translation>Otwieranie bazy danych</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importuj plik CSV...</translation>
+ <source>Save repaired database</source>
+ <translation>Zapisz naprawionÄ… bazÄ™ danych</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Na&amp;praw bazÄ™ danych...</translation>
+ <source>Writing the database failed.</source>
+ <translation>BÅ‚Ä…d przy zapisie bazy danych.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Ustaw TOTP...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Proszę dotknąć przycisku na twoim YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>OSTRZEŻENIE: Używasz niestabilnej kompilacji KeePassXC!
+Istnieje duże ryzyko uszkodzenia, utrzymuj kopie zapasowe baz danych.
+Ta wersja nie jest przeznaczona do użytku produkcyjnego.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Dialog</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Nieprawidłowy plik klucza, oczekiwany klucz OpenSSH</translation>
</message>
<message>
- <source>General</source>
- <translation>Ogólne</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>Niedopasowanie w granicy PEM</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>P&amp;okaż powiadomienie, gdy wymagane są poświadczenia</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Dekodowanie Base64 nie powiodło się</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Sortuj dopasowane wpisy według &amp;użytkownika</translation>
+ <source>Key file way too small.</source>
+ <translation>Plik klucza jest zbyt mały.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>U&amp;suń wszystkie przechowywane uprawnienia z wpisów w aktywnej bazie danych</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>Nieprawidłowy identyfikator nagłówka magicznego pliku klucza</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Zaawansowane</translation>
+ <source>Found zero keys</source>
+ <translation>Znaleziono zero kluczy</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Zawsze zezwalaj na d&amp;ostęp do wpisów</translation>
+ <source>Failed to read public key.</source>
+ <translation>Nie udało się odczytać klucza publicznego.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Zawsze zezwalaj na a&amp;ktualizowanie wpisów</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Uszkodzony plik klucza, odczytu klucza prywatnego nie powiodło się</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Szuk&amp;aj we wszystkich otwartych bazach danych dopasowanych wpisów</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Brak zawrtości prywatnego klucza do odszyfrowania</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Port HTTP:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Próbuję uruchomić KDF bez szyfru</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Port domyślny: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Do odszyfrowania tego klucza wymagane jest hasło</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Żąda&amp;j odblokowania bazy danych, jeżeli jest zablokowana</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Derywacja klucza nie powiodła się, plik klucza uszkodzony?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Sortuj dopasowane wpisy według &amp;tytułu</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Odszyfrowanie nie powiodło się, błędne hasło?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC będzie nasłuchiwać ten port na 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Nieoczekiwany koniec pliku (EOF) podczas odczytu klucza publicznego</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Nie można powiązać do uprzywilejowanych portów</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Nieoczekiwany koniec pliku (EOF) podczas odczytu klucza prywatnego</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Nie można powiązać do uprzywilejowanych portów poniżej 1024!
-Używam domyślnego portu 19455.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Nie można zapisać klucza publicznego, ponieważ jest pusty</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>U&amp;suń wszystkie współdzielone klucze szyfrujące z aktywnej bazy danych</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Nieoczekiwany koniec pliku (EOF) podczas zapisu klucza publicznego</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&amp;Zwracaj zaawansowane pola ciągów znaków, które zaczynają się od &quot;KPH: &quot;</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Nie można zapisać klucza prywatnego, ponieważ jest pusty</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Automatyczne tworzenie albo aktualizowanie pól ciągów znaków nie jest obsługiwane.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Nieoczekiwany koniec pliku (EOF) podczas zapisu klucza prywatnego</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Nieobsługiwany typ klucza: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Nieznany szyfr: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Szyfr IV jest za krótki dla kdf MD5</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>Nieznana KDF: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Nieznany typ klucza: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1696,6 +2987,15 @@ Używam domyślnego portu 19455.</translation>
<translation>WÅ‚Ä…cz serwer KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Ogólne</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>P&amp;okaż powiadomienie, gdy wymagane są poświadczenia</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Zwracaj tylko najlepsze dopasowania wpisów dla URL zamiast wszystkich wpisów całej domeny.</translation>
</message>
@@ -1704,6 +3004,10 @@ Używam domyślnego portu 19455.</translation>
<translation>Z&amp;wróć tylko najlepiej pasujące wpisy</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Żąda&amp;j odblokowania bazy danych, jeżeli jest zablokowana</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Tylko wpisy z tym samym schematem (http://, https://, ftp://, ...) sÄ… zwracane.</translation>
</message>
@@ -1712,27 +3016,108 @@ Używam domyślnego portu 19455.</translation>
<translation>&amp;Dopasuj schematy adresów URL</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Sortuj dopasowane wpisy według &amp;użytkownika</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Sortuj dopasowane wpisy według &amp;tytułu</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>U&amp;suń wszystkie współdzielone klucze szyfrujące z aktywnej bazy danych</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>U&amp;suń wszystkie przechowywane uprawnienia z wpisów w aktywnej bazie danych</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Generator hasła</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Zaawansowane</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Zawsze zezwalaj na d&amp;ostęp do wpisów</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Zawsze zezwalaj na a&amp;ktualizowanie wpisów</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Tylko wybrana baza danych musi być podłączona do klienta.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Poniższe opcje mogą być niebezpieczne!
-Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Szuk&amp;aj we wszystkich otwartych bazach danych dopasowanych wpisów</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatyczne tworzenie albo aktualizowanie pól ciągów znaków nie jest obsługiwane.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Zwracaj zaawansowane pola ciągów znaków, które zaczynają się od &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Port HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Port domyślny: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC będzie nasłuchiwać ten port na 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Ostrzeżenie:&lt;/b&gt; Poniższe opcje mogą być niebezpieczne!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP został porzucony i zostanie usunięty w przyszłości. &lt;br&gt;Proszę zamiast tego przejść na KeePassXC-browser! Aby uzyskać pomoc dotyczącą migracji, odwiedź nasz &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt; Przewodnik migracji&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Nie można powiązać do uprzywilejowanych portów</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Nie można powiązać do uprzywilejowanych portów poniżej 1024!
+Używam domyślnego portu 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Hasło:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>siła</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropia</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Typy znaków</translation>
</message>
@@ -1753,38 +3138,50 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
<translation>Znaki specjalne</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Rozszerzony ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Wyklucz podobnie wyglÄ…dajÄ…ce znaki</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Zaakceptuj</translation>
+ <source>Pick characters from every group</source>
+ <translation>Wybierz znaki ze wszystkich grup</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Długość:</translation>
</message>
<message>
- <source>strength</source>
- <translation>siła</translation>
+ <source>Passphrase</source>
+ <translation>Tekst szyfrujÄ…cy</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropia</translation>
+ <source>Wordlist:</source>
+ <translation>Lista słów:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Długość:</translation>
+ <source>Word Count:</source>
+ <translation>Liczba słów:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Wybierz znaki ze wszystkich grup</translation>
+ <source>Word Separator:</source>
+ <translation>Separator słów:</translation>
</message>
<message>
<source>Generate</source>
<translation>Wygeneruj</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Skopiuj</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Zaakceptuj</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Zamknij</translation>
</message>
@@ -1802,51 +3199,276 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Kiepska</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>SÅ‚aba</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Dobra</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Znakomita</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Hasło</translation>
+ <source>Database not opened</source>
+ <translation>Baza danych nie została otwarta</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>Rozszerzony ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>Hash bazy danych jest niedostępny</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Tekst szyfrujÄ…cy</translation>
+ <source>Client public key not received</source>
+ <translation>Klucz publiczny klienta nie został odebrany</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Lista słów:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Nie można odszyfrować wiadomości</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Liczba słów:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Przekroczony limit czasu lub nie można podłączyć się do KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Separator słów:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Działanie anulowane lub odrzucone</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Skopiuj</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Nie można zaszyfrować wiadomości lub nie znaleziono klucza publicznego. Czy Native Messaging jest włączone w KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>Skojarzenie KeePassXC nie powiodło się, spróbuj ponownie</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Zmiana klucza nie powiodła się</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Klucz szyfrowania nie jest rozpoznawany</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Nie znaleziono zapisanych baz danych</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Nieprawidłowe działanie</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Otrzymano pustą wiadomość</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Nie podano URL</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Nie znaleziono danych do logowania</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Nieznany błąd</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Dodaj nowy wpis do bazy danych.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Ścieżka bazy danych.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Plik z kluczem bazy danych.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>ścieżka</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Nazwa użytkownika dla wpisu.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>użytkownik</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>Adres URL wpisu.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Pytaj o hasło do wpisu.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Wygeneruj hasło dla wpisu.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Długość wygenerowanego hasła</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>długość</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Ścieżka wpisu do dodania.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Skopiuj hasło wpisu do schowka.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Ścieżka wpisu do zapamiętania.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Limit czasu w sekundach przed wyczyszczeniem Schowka.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Edycja wpisu.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Tytuł dla wpisu.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>tytuł</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Ścieżka wpisu do edycji.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Oszacuj złożoność hasła.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Hasło dla którego chcesz oszacować złożoność.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Wykonaj zaawansowaną analizę hasła.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Wyodrębnij i drukuj zawartość bazy danych.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Ścieżka bazy danych do wyodrębnienia.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Wprowadź hasło by odblokować %1: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Nieudane Å‚adowanie pliku z kluczem %1 : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>OSTRZEŻENIE: Używasz przestarzałego formatu pliku klucza, który może być
+nieobsługiwany w przyszłości.
+
+Proszę rozważyć wygenerowanie nowego pliku klucza.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Dostępne polecenia:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Nazwa polecenia do wykonania.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Wypisz wpisy bazy danych.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Ścieżka grupy do wymienienia. Domyślna to /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Szybkie wyszukiwanie wpisów. </translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Zapytanie wyszukiwania.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Połącz dwie bazy danych.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Ścieżka bazy danych, do której scalić.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Ścieżka bazy danych, z której scalić.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Użyj tych samych poświadczeń dla obu plików bazy danych.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Plik klucza bazy danych, z której scalić.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Pokaż informacje o wpisie.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Nazwy atrybutów do wyświetlenia. Tą opcję można zastosować więcej niż jeden raz, podając każdy atrybut w osobnym wierszu w określonej kolejności. Jeśli atrybuty nie są określone, wyświetla się podsumowanie domyślnych atrybutów.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>atrybut</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nazwa wpisu do pokazania.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>UrzÄ…dzenie NULL</translation>
@@ -1870,8 +3492,28 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
<translation>brak cytatu zamknięcia</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>WEWNĘTRZNE - przekroczono dolny limit unget</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bitowy</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bitowy</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bitowy</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – zalecany)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1890,14 +3532,22 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
<translation>Hasło</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notatki</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Ostatnia modyfikacja</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Stworzone</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Integracja ze starÄ… przeglÄ…darkÄ…</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Integracja z przeglÄ…darkÄ…</translation>
</message>
@@ -1913,6 +3563,56 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
<source>Passive</source>
<translation>Pasywny</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Wygeneruj nowe hasło losowe diceware.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Liczba słów dla hasła diceware.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>liczba</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Lista słów dla generatora diceware.
+[Domyślna: EFF English]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Wygeneruj nowe hasło losowe.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Długość wygenerowanego hasła.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Użyj małych liter w wygenerowanym haśle.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Użyj dużych liter w wygenerowanym haśle.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Użyj liczb w wygenerowanym haśle.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Użyj znaków specjalnych w wygenerowanym haśle.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Użyj rozszerzone ASCII w wygenerowanym haśle.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1951,8 +3651,8 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Rozróżniaj wielkość znaków</translation>
+ <source>Search...</source>
+ <translation>Szukaj...</translation>
</message>
<message>
<source>Search</source>
@@ -1963,8 +3663,8 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
<translation>Wyczyść</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Szukaj...</translation>
+ <source>Case Sensitive</source>
+ <translation>Rozróżniaj wielkość znaków</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1974,50 +3674,6 @@ Zmieniaj je tylko wtedy, gdy wiesz, co robisz.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Współdzielony klucz szyfrujący o nazwie &quot;%1&quot; już istnieje.
-Czy chcesz go nadpisać?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Czy chcesz uaktualnić informację w %1 - %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>Aktywna baza danych jest zablokowana!
-Proszę odblokować wybraną bazę albo wybrać inną, która jest odblokowana.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Pomyślnie usunięto %1 szyfrowanie-%2 z ustawień KeePassX/HTTP.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Nie znaleziono współdzielonych kluczy szyfrujących w ustawieniach KeePassHTTP.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Aktywna baza danych nie zawiera wpisu z ustawieniami KeePassHTTP.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Usuwanie przechowywanych uprawnień...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Zaniechaj</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Udanie usunięto uprawnienia z %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>Aktywna baza danych nie zawiera wpisu z uprawnieniami.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Nowe żądanie skojarzenia klucza</translation>
</message>
@@ -2034,33 +3690,77 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<translation>KeePassXC: Nadpisać istniejący klucz?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Współdzielony klucz szyfrujący o nazwie &quot;%1&quot; już istnieje.
+Czy chcesz go nadpisać?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Aktualizacja wpisu</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Czy chcesz uaktualnić informację w %1 - %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Baza danych zablokowana!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Aktywna baza danych jest zablokowana!
+Proszę odblokować wybraną bazę albo wybrać inną, która jest odblokowana.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Usunięto klucze z bazy danych</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Pomyślnie usunięto %n klucz szyfrowania z ustawień KeePassX/Http.</numerusform><numerusform>Pomyślnie usunięto %n klucze szyfrowania z ustawień KeePassX/Http.</numerusform><numerusform>Pomyślnie usunięto %n kluczy szyfrowania z ustawień KeePassX/Http.</numerusform><numerusform>Pomyślnie usunięto %n klucz szyfrowania z ustawień KeePassX/Http.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Nie znaleziono kluczy</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Nie znaleziono współdzielonych kluczy szyfrujących w ustawieniach KeePassHTTP.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Ustawienia niedostępne!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Aktywna baza danych nie zawiera wpisu z ustawieniami KeePassHTTP.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Usuwanie przechowywanych uprawnień...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Zaniechaj</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Usunięto uprawnienia</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Pomyślnie usunięto uprawnienia z %n wpisu.</numerusform><numerusform>Pomyślnie usunięto uprawnienia z %n wpisów.</numerusform><numerusform>Pomyślnie usunięto uprawnienia z %n wpisów.</numerusform><numerusform>Pomyślnie usunięto uprawnienia z %n wpisu.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Nie znaleziono wpisu z uprawnieniami!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Aktywna baza danych nie zawiera wpisu z uprawnieniami.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2084,10 +3784,26 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Ustawienia podstawowe</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Uruchom tylko jednÄ… instancjÄ™ KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Pamiętaj ostatnią bazę danych</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Zapamiętaj ostatnie pliki klucze i klucze sprzętowe</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Załaduj poprzednie bazy danych podczas uruchomienia</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Automatycznie zapisz przy wyjściu</translation>
</message>
@@ -2096,20 +3812,28 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<translation>Automatycznie zapisz po każdej zmianie</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Automatycznie przeładuj bazę danych, gdy zostanie zmodyfikowana zewnętrznie</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Zminimalizuj po skopiowaniu do schowka</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimalizuj okno podczas uruchomienia aplikacji</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Użyj ikony grupy podczas tworzenia wpisu</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Globalny skrót auto-uzupełnianie</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Nie zaznaczaj bazy danych jako zmodyfikowanej dla zmian innych niż dane (np. rozwijanie grup)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Język</translation>
+ <source>Hide the Details view</source>
+ <translation>Ukryj widok Szczegóły</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2120,75 +3844,97 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<translation>Schowaj okno do zasobnika podczas minimalizacji</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Załaduj poprzednie bazy danych podczas uruchomienia</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Automatycznie przeładuj bazę danych, gdy zostanie zmodyfikowana zewnętrznie</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Schowaj okno do zasobnika zamiast wyłączenia aplikacji</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Minimalizuj okno podczas uruchomienia aplikacji</translation>
+ <source>Dark system tray icon</source>
+ <translation>Ciemna ikona w zasobniku systemowym</translation>
</message>
<message>
- <source>Basic Settings</source>
- <translation>Ustawienia podstawowe</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Zapamiętaj ostatnie pliki klucze i klucze sprzętowe</translation>
- </message>
- <message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Nie zaznaczaj bazy danych jako zmodyfikowanej dla zmian innych niż dane (np. rozwijanie grup)</translation>
+ <source>Language</source>
+ <translation>Język</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-uzupełnianie</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Wykorzystaj tytuł wpisu oraz URL do dopasowania okien dla globalnego auto-uzupełniania</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Użyj tytułu wpisy, aby dopasować okna dla globalnego auto-uzupełniania</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Użyj adresu URL wpisy, aby dopasować okna dla globalnego auto-uzupełniania</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Zawsze pytaj przed wykonaniem auto-uzupełninia</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Globalny skrót auto-uzupełnianie</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Opóźnienie auto-uzupełniania</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Uruchom tylko jednÄ… instancjÄ™ KeePassXC</translation>
+ <source>Startup</source>
+ <translation>Uruchamianie</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>ZarzÄ…dzanie plikami</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Bezpiecznie zapisuj pliki bazy danych (może być niezgodne z Dropbox itp.)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Utwórz kopię zapasową pliku bazy danych przed zapisaniem</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>ZarzÄ…dzanie wpisami</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Ogólne</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Limity czasowe</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Wyczyść schowek po</translation>
</message>
<message>
<source> sec</source>
- <translation>s</translation>
+ <comment>Seconds</comment>
+ <translation> s</translation>
</message>
<message>
<source>Lock databases after inactivity of</source>
<translation>Zablokuj bazę danych po nieaktywności</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Domyślnie pokazuj hasła</translation>
+ <source>Convenience</source>
+ <translation>Poręczność</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Zablokuj bazy danych, gdy sesja jest zablokowana albo pokrywa jest zamknięta</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2199,16 +3945,16 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<translation>Nie wymagaj powtarzania hasła, gdy jest widoczne</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Limity czasowe</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Domyślnie pokazuj hasła</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Poręczność</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Ukryj hasła w panelu podglądu</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Zablokuj bazy danych, gdy sesja jest zablokowana albo pokrywa jest zamknięta</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Domyślnie ukrywaj wpisy notatek</translation>
</message>
<message>
<source>Privacy</source>
@@ -2218,6 +3964,11 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Użyj Google jako zastępstwa dla pobierania ikon witryn internetowych</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Ponownie zablokuj poprzednio zablokowaną bazę danych po wykonaniu auto-uzupełninia
+</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2230,6 +3981,14 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<translation>Klucz:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Domyślne ustawienia tokenu RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Ustawienia tokenu Steam</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Użyj niestandardowych ustawień</translation>
</message>
@@ -2255,7 +4014,8 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
</message>
<message>
<source> sec</source>
- <translation>s</translation>
+ <comment>Seconds</comment>
+ <translation> s</translation>
</message>
</context>
<context>
@@ -2291,10 +4051,6 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Witaj w KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Zacznij bezpiecznie przechowywać swoje hasła w bazie danych KeePassXC</translation>
</message>
@@ -2318,92 +4074,48 @@ nadaj unikatowÄ… nazwÄ™ do zidentyfikowania i zaakceptuj.</translation>
<source>Recent databases</source>
<translation>Niedawne bazy danych</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Witaj w KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>ścieżka do pliku z ustawieniami</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>plik klucza bazy danych</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - wieloplatformowy menedżer haseł</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>odczytaj hasło bazy danych z stdin</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>nazwy plików baz danych haseł do otwarcia (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Skopiuj hasło do schowka</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Usuń wpis z bazy danych.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Ścieżka bazy danych.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Użyj graficznego interfejsu, aby odblokować bazę danych.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Nazwa wpisu do wycięcia.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Wyodrębnij i drukuj zawartość bazy danych.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Ścieżka bazy danych do wyodrębnienia.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Nazwa polecenia do wykonania.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Wypisz wpisy bazy danych.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Ścieżka grupy do wymienienia. Domyślna to /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Pokaż UUID-y wpisów i grup.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Ścieżka wpisu do usunięcia.</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>Połącz dwie bazy danych.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - wieloplatformowy menedżer haseł</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Ścieżka bazy danych, do której scalić.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>nazwy plików baz danych haseł do otwarcia (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Ścieżka bazy danych, z której scalić.</translation>
+ <source>path to a custom config file</source>
+ <translation>ścieżka do pliku z ustawieniami</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Użyj tego samego hasła dla obu plików bazy danych.</translation>
+ <source>key file of the database</source>
+ <translation>plik klucza bazy danych</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Pokaż hasło.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>odczytaj hasło bazy danych z stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Nazwa wpisu do pokazania.</translation>
+ <source>Parent window handle</source>
+ <translation>Uchwyt okna nadrzędnego</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_pt_BR.ts b/share/translations/keepassx_pt_BR.ts
index 1ea54d854..aa99a2e17 100644
--- a/share/translations/keepassx_pt_BR.ts
+++ b/share/translations/keepassx_pt_BR.ts
@@ -10,14 +10,30 @@
<translation>Sobre</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Reporte erros em: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC é distribuído nos termos da Licença Pública Geral (GPL), versão 2 ou (à sua escolha) versão 3, do GNU.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Colaboradores</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ver Colaborações no GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Informações de Depuração</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Inclua as informações abaixo quando reportar um erro:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Copiar para a área de transferência</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revisão: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribuição: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Bibliotecas:</translation>
</message>
@@ -48,33 +68,27 @@ Kernel: %3 %4</translation>
<translation>Extensões habilitadas:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Reporte erros em: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC é distribuído nos termos da Licença Pública Geral (GPL), versão 2 ou (à sua escolha) versão 3, do GNU.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Mantedores do Projeto:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ver Colaborações no GitHub&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Inclua as informações abaixo quando reportar um erro:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>A equipe KeePassXC agradece especialmente a debfx pela criação do KeePassX original.</translation>
</message>
<message>
- <source>Distribution: %1</source>
- <translation type="unfinished"/>
+ <source>Build Type: %1
+</source>
+ <translation>Tipo de compilação: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Confirmar Acesso</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Lembrar esta escolha</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 solicitou acesso a senhas para o(s) seguinte(s) iten(s).
Selecione se deseja permitir o acesso.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP Confirmar Acesso</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Habilitar Agente SSH (requer reinicialização)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Selecione se deseja permitir o acesso.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Auto-Digitação - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Digitação</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>A sintaxe da sua sequência de Auto-Digitação está incorreta!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Este comando de Auto-Digitação contém um tempo de espera muito longo. Você tem certeza que deseja continuar?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Este comando Autotipo contém pressionamentos de teclas muito lentos. Você realmente deseja prosseguir?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Este comando Auto-Type contém os argumentos que são repetidos muitas vezes. Você realmente deseja prosseguir?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,317 @@ Selecione se deseja permitir o acesso.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grupo</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Título</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nome de usuário</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequência</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Digitação - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Escolha uma entrada para Auto-Digitar:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Auto-Digitação - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser Confirmar Acesso</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Lembrar esta escolha</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Permitir</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Negar</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 solicitou acesso a senhas para o(s) seguinte(s) iten(s).
+Selecione se deseja permitir o acesso.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Diálogo</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Isso é necessário para acessar os seus bancos de dados usando o KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Habilitar integração do KeepassXC com navegadores</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Habilitar integração para estes navegadores:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Mostrar &amp;notificação quando as credenciais forem requisitadas</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Pe&amp;dir para desbloquear a base de dados se estiver bloqueada</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Apenas entradas com o mesmo esquema (http://, https://,...) são retornados.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Corresponder ao esquema de URL (por exemplo, https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Retorna apenas os melhores encontrados para um URL específico em vez de todas entradas para o domínio todo.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Retornar apenas credenciais de melhor correspondência</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordenar credenciais &amp;correspondentes por título</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordenar credenciais correspondentes por &amp;nome de usuário</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Desconectar todos os navegadores</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Descartar todas as &amp;permissões salvas</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avançado</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nunca peça confirmação antes de &amp;acessar as credenciais</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nunca peça confirmação antes de at&amp;ualizar as credenciais</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Somente o banco de dados selecionado deve estar conectado com um cliente.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;Buscar em todos os bancos de dados abertos por credenciais correspondêntes</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Criação automática ou atualizações não são suportadas para os valores dos campos.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Mostrar também campos avançados que começam com &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Atualiza o KeePassXC ou keepassxc-proxy caminho binário automaticamente para o envio de mensagens de scripts nativo na inicialização.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Atualizar arquivos de manifesto de mensagens &amp;nativas na inicialização</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Suporte a um aplicativo de proxy entre KeePassXC e extensão de navegador.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Uso um aplicativo &amp;proxy entre KeePassXC e uma extensão do navegador</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Use um local de proxy personalizado se você instalou um proxy manualmente.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Use um endereço de proxy &amp;customizado</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Navegar...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;AVISO:&lt;/b&gt; As seguintes opções podem ser perigosas!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Arquivos Executáveis (*.exe);;Todos os Arquivos (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Arquivos Executáveis (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Selecione localização para o proxy</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Desculpe, o KeePassXC-Browser não é suportado em versões Snap no momento.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Nova associação de chaves requisitada</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Você recebeu uma solicitação de associação para a chave acima.
+
+Se você gostaria de permitir acesso ao seu banco de dados KeePassXC, atribua um nome exclusivo para identifica-lo e aceitá-lo.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Salvar e permitir acesso</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Substituir chave existente?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Uma chave de criptografia compartilhada com o nome &quot;%1&quot; já existe.
+Você deseja sobrescrever-la?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Atualizar entrada</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Deseja atualizar as informações em %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Banco de dados bloqueado!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>A base de dados ativa está bloqueada!
+Desbloqueie base de dados selecionada ou escolha outra que esteja desbloqueada.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Configurações não disponíveis!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>O banco de dados ativo não contém uma entrada de configuração.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Nenhuma chave localizada</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation> Nenhuma chave criptográfica compartilhada encontrada nas Configurações do KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Chaves removidas do banco de dados</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Removido com sucesso %n chave(s) criptográficas das configurações do KeePassXC.</numerusform><numerusform>Removido com sucesso %n chave(s) criptográficas das configurações do KeePassXC.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Removendo permissões armazenadas...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Permissões removidas</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Removido com êxito as permissões de %n entrada(s).</numerusform><numerusform>Removido com êxito as permissões de %n entrada(s).</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Nenhuma entrada com permissões localizada!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>A base de dados ativa não contém uma entrada com permissões.</translation>
</message>
</context>
<context>
@@ -149,6 +489,10 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Repita senha:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Arquivo-Chave</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Navegar</translation>
</message>
@@ -157,6 +501,14 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Criar</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>&amp;Desafio Resposta</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Atualizar</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Arquivos-Chave</translation>
</message>
@@ -177,6 +529,10 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Escolha um arquivo-chave</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Senha vazia</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Você realmente quer usar uma sequência vazia como senha?</translation>
</message>
@@ -191,24 +547,21 @@ Selecione se deseja permitir o acesso.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Arquivo-Chave</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation type="unfinished"/>
+ <source>Legacy key file format</source>
+ <translation>Formato de chave antigo</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>Atualizar</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Senha vazia</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Você está usando um formato de arquivo de chave legado que pode tornar-se sem suporte no futuro.
+
+Por favor, considere gerar um novo arquivo de chave.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
- <translation type="unfinished"/>
+ <translation>Mudança da senha mestre falhou: YubiKey não inserido.</translation>
</message>
</context>
<context>
@@ -218,6 +571,10 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Opções de Clonagem</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Anexar &apos;-Clonar&apos; ao título</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Substituir o usuário e senha com referências</translation>
</message>
@@ -225,10 +582,6 @@ Selecione se deseja permitir o acesso.</translation>
<source>Copy history</source>
<translation>Copiar histórico</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -254,27 +607,27 @@ Selecione se deseja permitir o acesso.</translation>
</message>
<message>
<source>Text is qualified by</source>
- <translation type="unfinished"/>
+ <translation>Texto é qualificado por</translation>
</message>
<message>
<source>Fields are separated by</source>
- <translation type="unfinished"/>
+ <translation>Campos são separados por</translation>
</message>
<message>
<source>Comments start with</source>
- <translation type="unfinished"/>
+ <translation>Comentários começam com</translation>
</message>
<message>
<source>First record has field names</source>
- <translation type="unfinished"/>
+ <translation>O primeiro registro contém os nomes dos campos</translation>
</message>
<message>
<source>Number of headers line to discard</source>
- <translation type="unfinished"/>
+ <translation>Número de linhas do cabeçalho a descartar</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
- <translation type="unfinished"/>
+ <translation>Considere &apos;\&apos; como caractere de escape</translation>
</message>
<message>
<source>Preview</source>
@@ -282,15 +635,15 @@ Selecione se deseja permitir o acesso.</translation>
</message>
<message>
<source>Column layout</source>
- <translation type="unfinished"/>
+ <translation>Organização das colunas</translation>
</message>
<message>
<source>Not present in CSV file</source>
- <translation type="unfinished"/>
+ <translation>Não existe no arquivo CSV</translation>
</message>
<message>
<source>Empty fieldname </source>
- <translation type="unfinished"/>
+ <translation>Nome de campo vazio</translation>
</message>
<message>
<source>column </source>
@@ -298,7 +651,7 @@ Selecione se deseja permitir o acesso.</translation>
</message>
<message>
<source>Imported from CSV file</source>
- <translation type="unfinished"/>
+ <translation>Importado do arquivo CSV</translation>
</message>
<message>
<source>Original data: </source>
@@ -306,11 +659,11 @@ Selecione se deseja permitir o acesso.</translation>
</message>
<message>
<source>Error(s) detected in CSV file !</source>
- <translation type="unfinished"/>
+ <translation>Erro(s) detectado(s) no arquivo CSV!</translation>
</message>
<message>
<source> more messages skipped]</source>
- <translation type="unfinished"/>
+ <translation>mais mensagens puladas]</translation>
</message>
<message>
<source>Error</source>
@@ -319,16 +672,13 @@ Selecione se deseja permitir o acesso.</translation>
<message>
<source>CSV import: writer has errors:
</source>
- <translation type="unfinished"/>
+ <translation>Importar CSV: escritor tem erros:
+</translation>
</message>
</context>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importar arquivo CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Erro</translation>
</message>
@@ -339,17 +689,17 @@ Selecione se deseja permitir o acesso.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n bytes(s),</numerusform><numerusform>%n bytes(s),</numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n linha(s), </numerusform><numerusform>%n row(s),</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>colunas</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>coluna (s) %n</numerusform><numerusform>%n coluna(s)</numerusform></translation>
</message>
</context>
<context>
@@ -371,6 +721,14 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Navegar</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Atualizar</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Resposta do Desafio:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Não foi possível abrir o banco de dados.</translation>
</message>
@@ -379,6 +737,23 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Não foi possível abrir o arquivo-chave</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Formato de chave antigo</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Você está usando um formato de arquivo de chave legado que pode tornar-se sem suporte no futuro.
+
+Por favor, considere gerar um novo arquivo de chave.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Não mostrar este alerta novamente</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Todos os arquivos</translation>
</message>
@@ -390,14 +765,6 @@ Selecione se deseja permitir o acesso.</translation>
<source>Select key file</source>
<translation>Escolha o arquivo-chave</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Atualizar</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -414,14 +781,14 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Não foi possível abrir arquivo-chave</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Banco de dados aberto com sucesso. Nada para fazer.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Não foi possível abrir o banco de dados.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Banco de dados aberto com sucesso. Nada para fazer.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Sucesso</translation>
</message>
@@ -439,28 +806,122 @@ Você pode salvá-lo agora.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Nome do banco de dados:</translation>
+ <source>General</source>
+ <translation>Geral</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Descrição do banco de dados:</translation>
+ <source>Encryption</source>
+ <translation>Encriptação</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Número de voltas muito alto</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Você está usando um número muito elevado de transformação chave rodadas com Argon2.
+
+Se você mantiver este número, seu banco de dados pode levar horas ou dias (ou até mais) para abrir!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Entendido, manter o número</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Número de voltas muito baixo</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Você está usando um número muito baixo de transformação chave rodadas com KDF-AES.
+
+Se você manter este número, seu banco de dados pode ser facilmente crackeado!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF não modificado</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Não foi possível transformar a chave com novos parâmetros KDF; KDF inalterado.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform> thread(s)</numerusform><numerusform> thread(s)</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algoritmo de Encriptação:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (padrão)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Função de Derivação de Chave:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Rodadas de transformação:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Usuário padrão:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>Testar atraso de 1 segundo</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MB</translation>
+ <source>Memory Usage:</source>
+ <translation>Uso de Memória:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Paralelismo:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Metadados do Banco de Dados</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nome do banco de dados:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Descrição do banco de dados:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Usuário padrão:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Benchmark</translation>
+ <source>History Settings</source>
+ <translation>Configurações de Histórico</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -471,27 +932,28 @@ Você pode salvá-lo agora.</translation>
<translation>Tamanho máx. do histórico:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Usar lixeira</translation>
+ <source> MiB</source>
+ <translation>MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation type="unfinished"/>
+ <source>Use recycle bin</source>
+ <translation>Usar lixeira</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation type="unfinished"/>
+ <source>Additional Database Settings</source>
+ <translation>Configurações do Banco de Dados</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation type="unfinished"/>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Ativar &amp;compressão (recomendado)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
- <translation>Raiz</translation>
+ <comment>Root group</comment>
+ <translation>Raíz</translation>
</message>
<message>
<source>KeePass 2 Database</source>
@@ -510,22 +972,48 @@ Você pode salvá-lo agora.</translation>
<translation>Arquivo não localizado!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Abrir banco de dados KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Não foi possível abrir o banco de dados.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Banco de dados KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Arquivo aberto no modo somente leitura.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Abrir arquivo CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Arquivo CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Todos os arquivos (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Juntar banco de dados</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Abrir banco de dados KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Banco de dados KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Fechar?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; está em modo de edição.
+Descartar alterações e fechar mesmo assim?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Salvar alterações?</translation>
</message>
@@ -540,10 +1028,22 @@ Salvar alterações?</translation>
<translation>Escrever no banco de dados falhou.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Senhas</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Salvar banco de dados como</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Exportar banco de dados para arquivo CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Falha ao gravar arquivo CSV.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Novo banco de dados</translation>
</message>
@@ -562,12 +1062,6 @@ Please press cancel to finish your changes or discard them.</source>
Por favor, aperte cancelar para finalizar suas alterações ou descartá-las.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Esse banco de dados nunca foi salvo.
-Você pode salvar o banco de dados ou parar de trancá-lo.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -576,69 +1070,23 @@ Você deseja salvar o banco de dados antes de travá-lo?
Do contrário, suas alterações serão perdidas.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; está em modo de edição.
-Descartar alterações e fechar mesmo assim?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Exportar banco de dados para arquivo CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>Arquivo CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Falha ao gravar arquivo CSV.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Não foi possível abrir o banco de dados.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Juntar banco de dados</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>A base de dados que você está tentando abrir está bloqueada por outra instância de KeePassXC.
-Mesmo assim deseja salvá-la?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Senhas</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Banco de dados já aberto</translation>
+ <source>Disable safe saves?</source>
+ <translation>Desativar armazenamento seguro?</translation>
</message>
<message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>O banco de dados que você está tentando abrir está bloqueada por outra instância do KeePassXC.
-
-Mesmo assim deseja salvá-la?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Abrir somente leitura</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation type="unfinished"/>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC não pôde salvar o banco de dados após várias tentativas. Isto é causado provavelmente pelo serviço de sincronização de arquivo que mantém um bloqueio ao salvar o arquivo.
+Deseja desabilitar salvamento seguro e tentar de novo?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Pesquisando...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Alterar chave mestra</translation>
</message>
@@ -659,6 +1107,14 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Você realmente quer apagar %1 entradas para sempre?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Mover entrada para a lixeira?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Pretende realmente mover a entrada &quot;%1&quot; para a lixeira?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Mover entradas para lixeira?</translation>
</message>
@@ -667,28 +1123,28 @@ Mesmo assim deseja salvá-la?</translation>
<translation><numerusform>Você realmente deseja mover %n entrada para a lixeira?</numerusform><numerusform>Você realmente deseja mover %n entradas para a lixeira?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Apagar grupo?</translation>
+ <source>Execute command?</source>
+ <translation>Executar comando?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Você realmente quer apagar o grupo &quot;%1&quot; para sempre?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Você quer realmente executar o comando seguinte?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Não foi possível calcular chave mestra</translation>
+ <source>Remember my choice</source>
+ <translation>Lembrar minha escolha</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Mover entrada para a lixeira?</translation>
+ <source>Delete group?</source>
+ <translation>Apagar grupo?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Pretende realmente mover a entrada &quot;%1&quot; para a lixeira?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Você realmente quer apagar o grupo &quot;%1&quot; para sempre?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Pesquisando...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular chave mestra</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1163,8 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Sem Resultados</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Executar comando?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Você quer realmente executar o comando seguinte?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Lembrar minha escolha</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Recarregar Automaticamente Pedido</translation>
+ <source>File has changed</source>
+ <translation>O arquivo foi modificado</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1175,10 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Juntar Pedido</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>A base de dados foi alterada e tem alterações não gravadas. Deseja juntar as suas alterações?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>O arquivo de banco de dados foi alterado e você tem alterações não salvas.
+Você deseja combinar suas alterações?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -744,7 +1190,90 @@ Mesmo assim deseja salvá-la?</translation>
</message>
<message>
<source>Are you sure you want to permanently delete everything from your recycle bin?</source>
- <translation type="unfinished"/>
+ <translation>Você tem certeza que deseja apagar permanentemente tudo que está na lixeira?</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Gerar Token TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Expiração</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nome de usuário</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Auto-Digitação</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Busca</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atributos</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Anexos</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notas</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Janela</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequência</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Pesquisar</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Limpar</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Nunca</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEGIDO]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Desabilitado</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Habilitado</translation>
</message>
</context>
<context>
@@ -774,6 +1303,30 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Histórico</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Agente SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/d</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(criptografado)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Escolha uma chave privada</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Este arquivo é muito grande para ser uma chave privada</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Falha ao abrir chave privada</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Histórico de Entradas</translation>
</message>
@@ -794,22 +1347,20 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Novo atributo</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Selecionar arquivo</translation>
+ <source>Confirm Remove</source>
+ <translation>Confirmar Exclusão</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Não foi possível abrir o arquivo</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Você tem certeza que deseja remover este atributo?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Salvar anexo</translation>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEGIDO]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Não foi possível salvar o anexo:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Aperte revelar para ver ou editar</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1379,16 @@ Mesmo assim deseja salvá-la?</translation>
<translation>1 ano</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation type="unfinished"/>
+ <source>Apply generated password?</source>
+ <translation>Utilizar senha gerada?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation type="unfinished"/>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Deseja aplicar a senha gerada a esta entrada?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation type="unfinished"/>
+ <source>Entry updated successfully.</source>
+ <translation>Item atualizado com sucesso.</translation>
</message>
</context>
<context>
@@ -859,18 +1406,6 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Remover</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Anexos</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Salvar</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Abrir</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Editar Nome</translation>
</message>
@@ -882,24 +1417,24 @@ Mesmo assim deseja salvá-la?</translation>
<source>Reveal</source>
<translation>Revelar</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Habilitar Auto-Digitação para esta entrada</translation>
+ <source>Attachments</source>
+ <translation>Anexos</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Cor de primeiro plano:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Cor de fundo:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Título da Janela:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Habilitar Auto-Digitação para esta entrada</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1445,24 @@ Mesmo assim deseja salvá-la?</translation>
<translation>&amp;Usar sequência de Auto-Digitação personalizada:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Usar se&amp;quência pré-definida</translation>
+ <source>Window Associations</source>
+ <translation>Associações de Janela</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Definir sequência &amp;personalizada:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Associações de Janela</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Título da Janela:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Usar sequência especifica para essa associação:</translation>
</message>
</context>
<context>
@@ -944,12 +1487,8 @@ Mesmo assim deseja salvá-la?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Título:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Nome de Usuário:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1499,104 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Repetir:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Título:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Expira em</translation>
+ <source>Notes</source>
+ <translation>Notas</translation>
</message>
<message>
<source>Presets</source>
<translation>Pré-definidos</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Notas:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Altere a caixa de checagem para revelar a seção de notas.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nome de Usuário:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira em</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Remover a chave do agente após</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>segundos</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Fingerprint</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Remover chave do agente ao fechar/bloquear o banco de dados</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Chave pública</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Adicionar chave ao agente quando abrir/desbloquear o banco de dados</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Comentário</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Descriptografar</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/d</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copiar para a área de transferência</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Chave privada</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Arquivo externo</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Navegar...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Anexo</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Adicionar ao agente</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Remover do agente</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Requer confirmação do usuário quando essa chave é usada</translation>
</message>
</context>
<context>
@@ -1035,16 +1658,24 @@ Mesmo assim deseja salvá-la?</translation>
</message>
<message>
<source>&amp;Use default Auto-Type sequence of parent group</source>
- <translation type="unfinished"/>
+ <translation>&amp;Usar a sequência padrão de Auto-Digitar do grupo pai</translation>
</message>
<message>
<source>Set default Auto-Type se&amp;quence</source>
- <translation type="unfinished"/>
+ <translation>Definir se&amp;quência padrão de Auto-Digitar</translation>
</message>
</context>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Usar ícone padrão</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Usar ícone &amp;personalizado</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Adicionar ícone personalizado</translation>
</message>
@@ -1053,6 +1684,18 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Excluir ícone personalizado</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Baixar favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Não foi possível obter favicon.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Dica: Você pode ativar o Google como um recurso em Ferramentas&gt;Configurações&gt;Segurança</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Imagens</translation>
</message>
@@ -1065,24 +1708,12 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Selecionar imagem</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Baixar favicon</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Não foi possível obter favicon.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Não foi possível ler ícone</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Usar ícone padrão</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Usar ícone &amp;personalizado</translation>
+ <source>Custom icon already exists</source>
+ <translation>Ãcone personalizado já existe</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1090,15 +1721,7 @@ Mesmo assim deseja salvá-la?</translation>
</message>
<message>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
+ <translation>Este ícone é usado por %1 entradas, e será substituido pelo ícone padrão. Você tem certeza que deseja apaga-lo?</translation>
</message>
</context>
<context>
@@ -1119,15 +1742,130 @@ Mesmo assim deseja salvá-la?</translation>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Dados do plugin</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remover</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Apagar dados do plugin?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Você quer realmente apagar os dados do plugin selecionados?
+Isto pode causar mal funcionamento dos plugins afetados.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Chave</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Valor</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - Clone</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nome</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Tamanho</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Adicionar</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remover</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Abrir</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Salvar</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Selecionar arquivos</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Tem certeza que deseja remover anexos de %n?</numerusform><numerusform>Tem certeza que deseja remover os %n anexo(s)?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirmar Exclusão</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Salvar anexos</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Não foi possível criar o diretório:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Tem certeza que deseja substituir o arquivo existente &quot;%1&quot; com o anexo?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confirmar sobrescrever</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Não foi possível salvar anexos:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Não foi possível abrir anexos:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Não foi possível abrir anexos:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Impossibilitado de abrir arquivos:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1894,11 @@ Mesmo assim deseja salvá-la?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Grupo</translation>
</message>
@@ -1172,9 +1915,67 @@ Mesmo assim deseja salvá-la?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref:</translation>
+ <source>Never</source>
+ <translation>Nunca</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notas</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira em</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Criado</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Modificado</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Acessado</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Anexos</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Visualização Personalizada</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Ocultar nome de usuários</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Ocultar Senhas</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Ajustar à janela</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Ajustar ao conteúdo</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Redefinir as configurações padrões</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Anexos (ícone)</translation>
</message>
</context>
<context>
@@ -1185,6 +1986,17 @@ Mesmo assim deseja salvá-la?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Não foi possível salvar o arquivo!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Não pode salvar o arquivo de script de envio de mensagens nativo.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2046,10 @@ Mesmo assim deseja salvá-la?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Verificar se a senha contém caracteres de todos os grupos</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII extendido</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2063,361 @@ Mesmo assim deseja salvá-la?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave mestre</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Impossibilitado de expedir o desafio-resposta.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Chave errada ou base de dados corrompida.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Impossibilitado de expedir o desafio-resposta.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave mestre</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>cabeçalhos de banco de dados ausente</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave mestre</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Tamanho de soma de verificação do cabeçalho inválido</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Incompatibilidade de cabeçalho SHA256</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Arquivo errado chave ou banco de dados está corrompido. (Incompatibilidade de HMAC)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Cifra desconhecida</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Tamanho de header id inválido</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Comprimento do campo de cabeçalho inválido</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Comprimento de dados cabeçalho inválido</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Falha ao abrir o buffer para parâmetros KDF no cabeçalho</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Função de derivação de chaves sem suporte (KDF) ou parâmetros inválidos</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Campos de cabeçalho de legado encontrados no arquivo KDBX4.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Cabeçalho interno inválido tamanho do id</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Comprimento do campo de cabeçalho interno inválido</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Tamanho binário cabeçalho interno inválido</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Versão não suportada do mapa variante KeePass.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa variante inválido item comprimento do nome</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa de variante inválido dados de nome da entrada</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Comprimento de valor de entrada inválida de mapa variante</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa de variante inválido dados de valor da entrada</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa de variante inválida valor do comprimento do item Bool</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa de variante inválida valor do comprimento do item Int32</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa de variante inválida valor do comprimento do item UInt32</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa de variante inválido Int64 comprimento de valor de entrada</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Mapa de variante inválida valor do comprimento do item UInt64</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Tipo de entrada mapa variante inválido</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Tamanho do campo de tipo de mapa de variante inválido</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Algoritmo de cifra simétrica inválido.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Tamanho de cifra simétrica IV inválida.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave mestre</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Falha ao serializar mapa variante do KDF parâmetros</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Comprimento de uuid cifra inválido</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Cifra não suportada</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Comprimento de flags de compressão inválido</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Algoritmo de compressão não suportado</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Tamanho da semente de mestre inválido</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Tamanho de semente de transformação inválido</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Tamanho do número de rodadas transformação inválido</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Tamanho de bytes de início inválido</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Tamanho de id de stream aleatório inválido</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Cifra de fluxo aleatório interno inválido</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Não é um banco de dados KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>O arquivo selecionado é um velho banco de dados do KeePass 1 (.kdb)
+
+Você pode importá-lo clicando em Banco de Dados &gt; &quot;Importar banco de dados do KeePss 1...&quot;
+Isto é uma migração de caminho único. Você não poderá abrir o banco de dados importado com a velha versão KeePassX 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Versão do banco de dados KeePass 2 não suportada.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Análise de falha de XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Sem grupo raiz</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Faltando uuid ou dados do ícone</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Chave de dados customizada ou valor ausente</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Elementos de grupo múltiplo</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Uuid group inválido</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Número do grupo de ícone inválido</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Valor de EnableAutoType inválido</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Valor EnableSearching inválido</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Nenhum uuid de grupo encontrado</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>DeleteObject uuid nulo</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>DeletedObject uuid ou tempo ausente</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Item uuid nulo</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Entrada de número de ícone inválida</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Elemento de histórico na entrada de histórico</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Nenhuma entrada uuid encontrado</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Elemento de história com diferente uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Não é possível descriptografar a sequência de caracteres de entrada</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Atributo customizado duplicado encontrado</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Chave de cadeia de caracteres de entrada ou valor ausente</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Anexo duplicado encontrado</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Entrada de chave binária ou valor ausente</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Janela associada ao Auto-Digitar ou sequência ausente</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Valor booleano inválido</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Valor de tempo e data inválido</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Valor de cor inválido</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Valor de número inválido</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Valor numérico inválido</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Valor uuid inválido</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Não é possível descompactar binário</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2447,35 @@ Mesmo assim deseja salvá-la?</translation>
<translation>Versão do banco de dados KeePass não suportada.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Não é possível ler criptografia IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Número de grupos inválido</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Número inválido de entradas</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Tamanho de hash conteúdo inválido</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Tamanho de semente de transformação inválido</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Número inválido de ciclos de transformção</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Não é possível construir árvore de grupo</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Raíz</translation>
</message>
@@ -1287,126 +2487,141 @@ Mesmo assim deseja salvá-la?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Chave errada ou base de dados corrompida.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Não é um banco de dados KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Transformação de chave falhou</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Versão não suportada do banco de dados KeePass.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Grupo inválido número do tipo de campo</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Chave errada ou arquivo de banco de dados está corrompido.</translation>
+ <source>Invalid group field size</source>
+ <translation>Tamanho do campo Grupo inválido</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Não foi possível calcular a chave mestre</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Leitura de grupo dados do campo não correspondem em tamanho</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group id field size</source>
+ <translation>Tamanho de campo de id de grupo incorreto</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group creation time field size</source>
+ <translation>Group incorreto tamanho do campo de hora de criação</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group modification time field size</source>
+ <translation>Grupo incorreto tamanho do campo de hora de criação</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Não foi possível calcular a chave mestre</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Grupo incorreto tamanho do campo de hora de acesso</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Erro fatal enquanto testava as funções criptográficas.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Grupo incorreto tamanho do campo de hora de expiração</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Erro</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Grupo incorreto tamanho do campo de ícone</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group level field size</source>
+ <translation>Grupo incorreto tamanho do campo de nível</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation type="unfinished"/>
+ <source>Invalid group field type</source>
+ <translation>Grupo incorreto tipo de campo</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation type="unfinished"/>
+ <source>Missing group id or level</source>
+ <translation>Id do grupo ou nível ausente</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Abrir banco de dados</translation>
+ <source>Missing entry field type number</source>
+ <translation>Item ausente número do tipo de campo</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Configurações do Banco de Dados</translation>
+ <source>Invalid entry field size</source>
+ <translation>Item inválido tamanho do campo</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Copiar nome de usuário para área de transferência</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Leitura do dados de campo de entrada não correspondem com o tamanho</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Copiar senha para área de transferência</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Entrada inválida tamanho do campo uuid</translation>
</message>
<message>
- <source>Settings</source>
- <translation>Configurações</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Item inválido tamanho do campo de id de groupo</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Mostrar barra de ferramentas</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Item inválido tamanho de campo de ícone</translation>
</message>
<message>
- <source>read-only</source>
- <translation>somente leitura</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Item inválido tamanho do campo de hora de criação</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Alternar Janela</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Item inválido Tamanho do campo de hora de modificação</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Banco de dados Keepass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Tamanho de campo de tempo de expiração entrada inválida</translation>
</message>
<message>
- <source>All files</source>
- <translation>Todos arquivos</translation>
+ <source>Invalid entry field type</source>
+ <translation>Tipo de campo de entrada inválido</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Salvar banco de dados reparado</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>O arquivo cadeado de instância única existente é inválido. Iniciando nova instância.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Escrita do banco de dados falhou.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>O arquivo cadeado não pode ser criado. Modo de instância única desabilitado.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Outra instância do KeePassXC já está rodando.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Erro fatal enquanto testava as funções criptográficas.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Erro</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>Banco de &amp;dados</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Bancos de dados recentes</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importar</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Ajuda</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>E&amp;ntradas</translation>
</message>
@@ -1415,12 +2630,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Copiar at&amp;ributo para área de transferência</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Senha única baseada em tempo</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Grupos</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Ver</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;Ferramentas</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1431,6 +2650,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Sobre</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Abrir base de dados...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Salvar base de dados</translation>
</message>
@@ -1471,24 +2694,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Apagar grupo</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>&amp;Definições da base de dados</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Sal&amp;var base de dados como...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Clonar entrada</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Alterar chave &amp;mestra...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Senha temporária de uso único</translation>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Definições da base de dados</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Copiar &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Configurações do Banco de Dados</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Mostrar TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Clonar entrada</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1499,14 +2722,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Copiar nome de &amp;usuário</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Copiar nome de usuário para área de transferência</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Cop&amp;iar senha</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Copiar senha para área de transferência</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Configurações</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Gerador de Senha</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;Executar escrita automática</translation>
</message>
@@ -1523,84 +2758,215 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Título</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Copiar título para a área de transferência</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Copiar URL para a área de transferência</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Notas</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Gerador de Senha</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Copiar notas para a área de transferência</translation>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exportar para arquivo CSV...</translation>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importar banco de dados KeePass1...</translation>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation>Importar arquivo CSV...</translation>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation>Re&amp;parar banco de dados...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Mostrar TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Configurar TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Copiar &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Esvaziar &amp;lixeira</translation>
</message>
<message>
<source>Clear history</source>
<translation>Limpar histórico</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>Banco de &amp;dados</translation>
+ <source>Access error for config file %1</source>
+ <translation>Erro de acesso para o arquivo de configuração %1</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importar</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Parece que você está usando KeePassHTTP para integração do navegador. Esse recurso é obsoleto e será removido no futuro. &lt;br&gt;Por favor mudar para KeePassXC-Browser! Para obter ajuda com a migração, visite o nosso &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt; guia de migração&lt;/a&gt; (aviso %1 de 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Ferramentas</translation>
+ <source>read-only</source>
+ <translation>somente leitura</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Esvaziar lixeira</translation>
+ <source>Settings</source>
+ <translation>Configurações</translation>
</message>
<message>
- <source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <source>Toggle window</source>
+ <translation>Alternar Janela</translation>
</message>
<message>
<source>Quit KeePassXC</source>
<translation>Fechar KeePassXC</translation>
</message>
<message>
+ <source>KeePass 2 Database</source>
+ <translation>Banco de dados Keepass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Todos arquivos</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Abrir banco de dados</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Salvar banco de dados reparado</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Escrita do banco de dados falhou.</translation>
+ </message>
+ <message>
<source>Please touch the button on your YubiKey!</source>
- <translation type="unfinished"/>
+ <translation>Por favor pressione o botão em seu YubiKey!</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation type="unfinished"/>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>AVISO: você está usando uma compilação instável do KeePassXC!
+Existe um alto risco de corrupção, mantenha um backup de seus bancos de dados.
+Esta versão não se destina ao uso em produção.</translation>
</message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
<message>
- <source>&amp;Open database...</source>
- <translation type="unfinished"/>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Arquivo chave inválido, é esperado uma chave OpenSSH</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation type="unfinished"/>
+ <source>PEM boundary mismatch</source>
+ <translation>Incompatibilidade de limite do PEM</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation type="unfinished"/>
+ <source>Base64 decoding failed</source>
+ <translation>Decodificação Base64 falhou</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation type="unfinished"/>
+ <source>Key file way too small.</source>
+ <translation>O modo do arquivo chave é muito pequeno.</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation type="unfinished"/>
+ <source>Key file magic header id invalid</source>
+ <translation>O id do cabeçalho mágico do arquivo chave é invalido</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation type="unfinished"/>
+ <source>Found zero keys</source>
+ <translation>Nenhuma chave encontrada</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation type="unfinished"/>
+ <source>Failed to read public key.</source>
+ <translation>Falha ao ler chave pública.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation type="unfinished"/>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Arquivo chave corrompido, leitura da chave privada falhou</translation>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation>Chave privada não carregada para decriptar</translation>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Tentando rodar KDF sem cifra</translation>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Senha é necessária para decriptar esta chave</translation>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>A derivação da chave falhou, o arquivo chave esta corrompido?</translation>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Decriptação falhou, senha errada?</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>EOF inesperado enquanto lendo a chave pública</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>EOF inesperado enquanto lendo a chave privada</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Não é possível escrever a chave pública enquanto estiver vazio</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>EOF inesperado enquanto escrevendo a chave pública</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Não é possível escrever a chave privada enquanto estiver vazio</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>EOF inesperado enquanto escrevendp a chave privada</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Tipo de chave não suportada: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Cifra desconhecida: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Cifra de IV é muito curta para MD5 kdf</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>KDF desconhecido: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Tipo de chave desconhecida: %1</translation>
</message>
</context>
<context>
@@ -1610,22 +2976,63 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Diálogo</translation>
</message>
<message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation>Isso é necessário para acessar seus bancos de dados com o ChomeIPass ou PassIFox</translation>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Habilitar servidor KeePassHTTP</translation>
+ </message>
+ <message>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
<source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
<translation>M&amp;ostrar uma notificação quando as credenciais forem solicitadas</translation>
</message>
<message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Retorna apenas os melhores encontrados para um URL específico em vez de todas entradas para o domínio todo.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation>&amp;Retorna apenas as melhores entradas encontradas</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Pe&amp;dir para desbloquear a base de dados se estiver bloqueada</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation>Apenas entradas com o mesmo esquema (http://, https://, ftp://, ...) são retornadas.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation>&amp;Combinar esquemas de URL</translation>
+ </message>
+ <message>
<source>Sort matching entries by &amp;username</source>
<translation>Ordenar entradas coincidentes por nome de &amp;usuário</translation>
</message>
<message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Ordenar &amp;entradas por título</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>R&amp;emover todas as chaves criptografadas compartilhadas da base de dados ativa</translation>
+ </message>
+ <message>
<source>Re&amp;move all stored permissions from entries in active database</source>
<translation>R&amp;emover todas as permissões armazenadas de entradas na base de dados ativa</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Gerador de Senha</translation>
+ </message>
+ <message>
<source>Advanced</source>
<translation>Avançado</translation>
</message>
@@ -1638,10 +3045,22 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Permitir sempre &amp;atualizar as entradas</translation>
</message>
<message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Somente o banco de dados selecionado deve estar conectado com um cliente.</translation>
+ </message>
+ <message>
<source>Searc&amp;h in all opened databases for matching entries</source>
<translation>Procurar em todas as base de dados abertas por entradas semel&amp;hantes</translation>
</message>
<message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Criação automática ou atualizações não são suportadas para os valores dos campos.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Mostrar também campos avançados que começam com &quot;KPH: &quot;</translation>
+ </message>
+ <message>
<source>HTTP Port:</source>
<translation>Porta HTTP:</translation>
</message>
@@ -1650,16 +3069,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Porta padrão: 19455</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Pe&amp;dir para desbloquear a base de dados se estiver bloqueada</translation>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC irá escutar esta porta em 127.0.0.1</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Ordenar &amp;entradas por título</translation>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;AVISO:&lt;/b&gt; As seguintes opções podem ser perigosas!</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC irá escutar esta porta em 127.0.0.1</translation>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP é obsoleto e será removido no futuro. &lt;br&gt;Por favor mudar para KeePassXC-navegador! Para obter ajuda com a migração, visite o nosso &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt; guia de migração&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
<source>Cannot bind to privileged ports</source>
@@ -1671,61 +3090,29 @@ Using default port 19455.</source>
<translation>Não é possível ligar a portas privilegiadas abaixo de 1024!
Usando porta padrão 19455.</translation>
</message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>R&amp;emover todas as chaves criptografadas compartilhadas da base de dados ativa</translation>
- </message>
- <message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>&amp;Mostrar também campos avançados que começam com &quot;KPH: &quot;</translation>
- </message>
- <message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Criação automática ou atualizações não são suportadas para os valores dos campos.</translation>
- </message>
- <message>
- <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Enable KeePassHTTP server</source>
- <translation>Habilitar servidor KeePassHTTP</translation>
- </message>
- <message>
- <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>&amp;Return only best matching entries</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>&amp;Match URL schemes</source>
- <translation type="unfinished"/>
+ <source>%p%</source>
+ <translation>%p%</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Gerador de Senha</translation>
+ <source>Password:</source>
+ <translation>Senha:</translation>
</message>
<message>
- <source>Only the selected database has to be connected with a client.</source>
- <translation type="unfinished"/>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>força</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation type="unfinished"/>
+ <source>entropy</source>
+ <translation>entropia</translation>
</message>
-</context>
-<context>
- <name>PasswordGeneratorWidget</name>
<message>
- <source>Password:</source>
- <translation>Senha:</translation>
+ <source>Password</source>
+ <translation>Senha</translation>
</message>
<message>
<source>Character Types</source>
@@ -1748,38 +3135,50 @@ Change them only if you know what you are doing.</source>
<translation>Caracteres Especiais</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>ASCII extendido</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Excluir caracteres similares</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Aceitar</translation>
+ <source>Pick characters from every group</source>
+ <translation>Selecione caracteres de todos os grupos</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Tamanho:</translation>
</message>
<message>
- <source>strength</source>
- <translation>força</translation>
+ <source>Passphrase</source>
+ <translation>Senha</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropia</translation>
+ <source>Wordlist:</source>
+ <translation>Lista de palavras:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Tamanho:</translation>
+ <source>Word Count:</source>
+ <translation>Número de Palavras:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Selecione caracteres de todos os grupos</translation>
+ <source>Word Separator:</source>
+ <translation>Separador de Palavras:</translation>
</message>
<message>
<source>Generate</source>
<translation>Gerar</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Copiar</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Aceitar</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Fechar</translation>
</message>
@@ -1797,75 +3196,320 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Pobre</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Fraco</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Bom</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Excelente</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Senha</translation>
+ <source>Database not opened</source>
+ <translation>Banco de dados não foi aberto</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation type="unfinished"/>
+ <source>Database hash not available</source>
+ <translation>Hash de banco de dados não disponível</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Senha</translation>
+ <source>Client public key not received</source>
+ <translation>Chave pública do cliente não recebida</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Lista de palavras:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Não é possível descriptografar a mensagem</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Número de Palavras:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Tempo limite ou não pode conectar ao KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Separador de Palavras:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Ação cancelada ou negada</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Copiar</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Não foi possível criptografar a mensagem ou chave pública não encontrada. O envio de mensagem nativo está habilitado no KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC associação falhou, tente novamente</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Mudança da chave não foi bem sucedida</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Chave criptográfica não é reconhecida</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Nenhum banco de dados salvo encontrado</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Ação incorreta</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Mensagem vazia recebida</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Nenhuma URL informada</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Nenhum login encontrado</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Erro desconhecido</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Adicionar uma nova entrada ao banco de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Caminho do banco de dados.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Arquivo-chave do banco de dados.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>caminho</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Usuário para a entrada.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>usuário</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL para a entrada.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Solicitar senha da entrada.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Gerar uma senha para a entrada.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Comprimento para a senha gerada.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>tamanho</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Caminho da entrada para adicionar.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Copiar a senha de uma entrada para a área de transferência.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Caminho da entrada para copiar.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Tempo limite em segundos antes de limpar a área de transferência.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Editar uma entrada.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Título para a entrada.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>título</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Caminho da entrada para editar.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Calcular a entropia da senha.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Senha para o qual deseja calcular a entropia.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Execute análise avançada sobre a senha.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extrair e imprimir o conteúdo do banco de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Caminho do banco de dados para extração.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Inserir a senha para desbloquear %1: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Falha ao carregar o arquivo de chave %1: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Aviso: Você está usando um formato de arquivo de chave legado que pode tornar-se sem suporte no futuro.
+
+Por favor, considere gerar um novo arquivo de chave.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Comandos disponíveis:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Nome do comando para executar.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Listar entradas do banco de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Caminho do grupo para à lista. O padrão é /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Encontrar entradas rapidamente.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Termo de pesquisa.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Juntar dois bancos de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Caminho do banco de dados para combinar.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Caminho do banco de dados para combinar como base.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Use as mesmas credenciais para ambos os arquivos de banco de dados.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Arquivo de chave do banco de dados para combinar como base.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Mostre informações de uma entrada.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Nomes de atributos para exibir. Esta opção pode ser especificada mais de uma vez, com cada atributo mostrado um-por-linha em ordem determinada. Se nenhum atributo é especificado, um resumo dos atributos padrão é fornecido.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>atributo</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nome da entrada para mostrar.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
- <translation type="unfinished"/>
+ <translation>Dispositivo nulo</translation>
</message>
<message>
<source>error reading from device</source>
- <translation type="unfinished"/>
+ <translation>erro ao ler dispositivo</translation>
</message>
<message>
<source>file empty !
</source>
- <translation type="unfinished"/>
+ <translation>Arquivo vazio!
+</translation>
</message>
<message>
<source>malformed string</source>
- <translation type="unfinished"/>
+ <translation>sequência de caracteres malformada</translation>
</message>
<message>
<source>missing closing quote</source>
- <translation type="unfinished"/>
+ <translation>cotação de fechamento ausente</translation>
+ </message>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256 bits</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256 bits</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256 bits</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – recomendado)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1884,20 +3528,28 @@ Change them only if you know what you are doing.</source>
<translation>Senha</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notas</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Última modificação</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Criado</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Integração do legado de navegador</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Integração com o Navegador</translation>
</message>
<message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
- <translation type="unfinished"/>
+ <translation>YubiKey [%1] desafio resposta - Slot %2 - %3</translation>
</message>
<message>
<source>Press</source>
@@ -1907,6 +3559,56 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation>Passivo</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agente SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Gere uma senha aleatória diceware novamente.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Contagem de palavra para a frase-chave diceware.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>contagem</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Lista de palavras para o gerador diceware.
+[Padrão: EFF inglês]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Gerar nova senha aleatória.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Tamanho da senha gerada.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Use caracteres minúsculos na senha gerada.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Use letras maiúsculas para a senha gerada.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Use números na senha gerada.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Use caracteres especiais na senha gerada.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Uso estendido ASCII na senha gerada.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1945,8 +3647,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Diferenciar maiúsculas e minúsculas</translation>
+ <source>Search...</source>
+ <translation>Buscar...</translation>
</message>
<message>
<source>Search</source>
@@ -1957,8 +3659,8 @@ Change them only if you know what you are doing.</source>
<translation>Limpar</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Buscar...</translation>
+ <source>Case Sensitive</source>
+ <translation>Diferenciar maiúsculas e minúsculas</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1968,50 +3670,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Já existe uma chave de criptografia compartilhada com o nome &quot;%1&quot;.
-Deseja substituí-la?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Deseja atualizar as informações em %1 - %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>A base de dados ativa está bloqueada!
-Desbloqueie base de dados selecionada ou escolha outra que esteja desbloqueada.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Removido com sucesso %1 criptografia-%2 do KeePassX/Http Configurações.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Nenhuma chave de criptografia compartilhada encontrada nas Configurações do KeePassHttp.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>A base de dados ativa não contém uma entrada de Configurações KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Removendo permissões armazenadas...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Cancelar</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Foram removidas com êxito as permissões de %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>A base de dados ativa não contém uma entrada com permissões.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Nova associação de chaves requisitada</translation>
</message>
@@ -2028,33 +3686,77 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<translation>KeePassXC: Substituir chave existente?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Já existe uma chave de criptografia compartilhada com o nome &quot;%1&quot;.
+Deseja substituí-la?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Atualizar entrada</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Deseja atualizar as informações em %1 - %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Banco de dados bloqueado!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>A base de dados ativa está bloqueada!
+Desbloqueie base de dados selecionada ou escolha outra que esteja desbloqueada.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Chaves removidas do banco de dados</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Removido com êxito %n chave(s) de criptografia das configurações do KeePassX/Http.</numerusform><numerusform>Removido com êxito %n chave(s) de criptografia das configurações do KeePassX/Http.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Nenhuma chave localizada</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Nenhuma chave de criptografia compartilhada encontrada nas Configurações do KeePassHttp.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Configurações não disponíveis!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>A base de dados ativa não contém uma entrada de Configurações KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Removendo permissões armazenadas...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Permissões removidas</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Removido com êxito as permissões de %n entradas.</numerusform><numerusform>Removido com êxito as permissões de %n entradas.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Nenhuma entrada com permissões localizada!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>A base de dados ativa não contém uma entrada com permissões.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2072,16 +3774,32 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
</message>
<message>
<source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <translation>Erro de acesso para o arquivo de configuração %1</translation>
</message>
</context>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Configurações Básicas</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Iniciar apenas uma única instância do KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Lembrar dos últimos bancos de dados</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Lembre-se de arquivos de chave passados e dongles de segurança</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Carregar bancos de dados anteriores na inicialização</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Salvar automaticamente ao sair</translation>
</message>
@@ -2090,20 +3808,28 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<translation>Salvar automaticamente depois de cada alteração</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Automaticamente recarregar o banco de dados quando houver modificações externas</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimizar ao copiar para área de transferência</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Iniciar programa com janela minimizada</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Usar ícone de grupo na criação da entrada</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Atalho para Auto-Digitação Global</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Não marcar o banco de dados como modificado para alterações sem dados (por exemplo, expansão de grupos)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Idioma</translation>
+ <source>Hide the Details view</source>
+ <translation>Ocultar a visualização de detalhes</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2114,66 +3840,84 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<translation>Ocultar janela na bandeja de sistema quando minimizada</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Carregar bancos de dados anteriores na inicialização</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Automaticamente recarregar o banco de dados quando houver modificações externas</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Ocultar janela na bandeja de sistema em vez de sair do programa</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Iniciar programa com janela minimizada</translation>
+ <source>Dark system tray icon</source>
+ <translation>Ãcone de bandeja do sistema escuro</translation>
</message>
<message>
- <source>Basic Settings</source>
- <translation>Configurações Básicas</translation>
+ <source>Language</source>
+ <translation>Idioma</translation>
</message>
<message>
- <source>Remember last key files and security dongles</source>
- <translation type="unfinished"/>
+ <source>Auto-Type</source>
+ <translation>Auto-Digitação</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Usar o título de entrada para coincidir com a janela para Auto-Digitar global</translation>
</message>
<message>
- <source>Auto-Type</source>
- <translation>Auto-Digitação</translation>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Use o URL de entrada para coincidir com a janela para Auto-Digitar global</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <source>Always ask before performing Auto-Type</source>
+ <translation>Sempre perguntar antes de executar o Auto-Digitar</translation>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
- <translation type="unfinished"/>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Atalho para Auto-Digitação Global</translation>
</message>
<message>
<source>Auto-Type delay</source>
- <translation type="unfinished"/>
+ <translation>Atraso de autotipo</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation type="unfinished"/>
+ <source>Startup</source>
+ <translation>Inicialização</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Gerenciamento de Arquivo</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Salvar seguramente os arquivos de banco de dados (pode ser incompatível com o Dropbox, etc)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Fazer cópia de segurança do banco de dados antes de salvar</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Gerenciamento de entrada</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Geral</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Tempos limite</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Limpar área de transferência após</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> seg</translation>
</message>
<message>
@@ -2181,8 +3925,12 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<translation>Travar bancos de dados após inatividade de</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Mostrar senhas em texto claro por padrão</translation>
+ <source>Convenience</source>
+ <translation>Conveniência</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Bloqueio de bancos de dados quando a sessão estiver bloqueada ou a tampa está fechada</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2193,16 +3941,16 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<translation>Quando a senha for visível não pedir para repeti-la</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Mostrar senhas em texto claro por padrão</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Conveniência</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Ocultar senhas no painel de visualização</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation type="unfinished"/>
+ <source>Hide entry notes by default</source>
+ <translation>Esconder notas de entrada por padrão</translation>
</message>
<message>
<source>Privacy</source>
@@ -2210,7 +3958,11 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
- <translation type="unfinished"/>
+ <translation>Usar o Google como fallback para baixar ícones do site</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Bloquear novamente o banco de dados anteriormente bloqueado depois de executar o Auto-Digitar</translation>
</message>
</context>
<context>
@@ -2224,6 +3976,14 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<translation>Chave:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Configurações de símbolo padrão RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Configurações de steam token</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Usar configurações personalizadas</translation>
</message>
@@ -2249,6 +4009,7 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> seg</translation>
</message>
</context>
@@ -2285,12 +4046,8 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Bem vindo ao KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
- <translation type="unfinished"/>
+ <translation>Começe a guardar suas senhas de maneira segura em um banco de dados do KeePassXC</translation>
</message>
<message>
<source>Create new database</source>
@@ -2312,92 +4069,48 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
<source>Recent databases</source>
<translation>Bancos de dados recentes</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Bem-vindo ao KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>caminho para um arquivo de configuração personalizado</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Remover entrada do banco de dados.</translation>
</message>
<message>
- <source>key file of the database</source>
- <translation>arquivo-chave do banco de dados</translation>
+ <source>Path of the database.</source>
+ <translation>Caminho do banco de dados.</translation>
</message>
<message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - gerenciador de senhas multiplataforma</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Caminho do item à ser removido.</translation>
</message>
<message>
- <source>read password of the database from stdin</source>
- <translation>ler a senha do banco de dados da entrada padrão</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - gerenciador de senhas multiplataforma</translation>
</message>
<message>
<source>filenames of the password databases to open (*.kdbx)</source>
<translation>nome de arquivo do banco de dados de senhas a ser aberto (*.kdbx)</translation>
</message>
<message>
- <source>Copy a password to the clipboard</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database.</source>
- <translation>Caminho do banco de dados</translation>
- </message>
- <message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Caminho do banco de dados para extração.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Nome do comando para executar.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Listar entradas do banco de dados.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Juntar dois bancos de dados.</translation>
- </message>
- <message>
- <source>Path of the database to merge into.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the database to merge from.</source>
- <translation type="unfinished"/>
+ <source>path to a custom config file</source>
+ <translation>caminho para um arquivo de configuração personalizado</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation type="unfinished"/>
+ <source>key file of the database</source>
+ <translation>arquivo-chave do banco de dados</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Mostrar uma senha.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>ler a senha do banco de dados da entrada padrão</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Nome da entrada para mostrar.</translation>
+ <source>Parent window handle</source>
+ <translation>Identificador de janela pai</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_pt_PT.ts b/share/translations/keepassx_pt_PT.ts
index 0a671ed70..878c18eec 100644
--- a/share/translations/keepassx_pt_PT.ts
+++ b/share/translations/keepassx_pt_PT.ts
@@ -10,14 +10,30 @@
<translation>Acerca</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Reporte os erros em: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC é distribuído sob os termos da GNU General Public License (GPL) versão 2 ou (em sua opção) versão 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Colaboradores</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Consulte os contributos no GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Informação de depuração</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Inclua as seguintes informações sempre que reportar um erro:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Copiar para a área de transferência</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Revisão: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Distribuição: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Bibliotecas:</translation>
</message>
@@ -48,33 +68,27 @@ Kernel: %3 %4</translation>
<translation>Extensões ativas:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Reporte os erros em: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC é distribuído sob os termos da GNU General Public License (GPL) versão 2 ou (em sua opção) versão 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Manutenção do projeto:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Consulte os contributos no GitHub&lt;/a&gt;</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Um agradecimento especial da equipa do KeePassXC a debfx por ter criado a aplicação KeePassX.</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Inclua as seguintes informações sempre que reportar um erro:</translation>
- </message>
- <message>
- <source>Distribution: %1</source>
- <translation>Distribuição: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Tipo de compilação: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP - Confirmar acesso</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Memorizar esta escolha</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 solicitou o acesso a palavras-passe para o(s) seguinte(s) iten(s).
Selecione se deseja permitir o acesso.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP - Confirmar acesso</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Ativar agente SSH (tem que reiniciar)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Selecione se deseja permitir o acesso.</translation>
<source>Auto-Type - KeePassXC</source>
<translation>Escrita automática - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Escrita automática</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>A sintaxe da instrução de escrita automática está errada!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>O comando de escrita automática tem um atraso muito grande. Deseja mesmo continuar?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>O comando de escrita automática tem uma pressão de teclas muito lento. Deseja mesmo continuar?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>O comando de escrita automática contém argumentos que se repetem muitas vezes. Deseja mesmo continuar?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Selecione se deseja permitir o acesso.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grupo</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Título</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nome de utilizador</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequência</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Escrita automática - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Selecionar entrada para escrita automática:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Escrita automática - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC Navegador - Confirmar acesso</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Memorizar esta escolha</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Permitir</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Recusar</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 solicitou o acesso a palavras-passe para o(s) seguinte(s) iten(s).
+Selecione se deseja permitir o acesso.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Diálogo</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Isto é necessário para aceder às suas bases de dados com KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Ativar integração com o navegador</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Ativar integração para estes navegadores:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Mostrar &amp;notificação se as credenciais forem solicitadas</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Pe&amp;dir para desbloquear a base de dados se esta estiver bloqueada</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Apenas serão devolvidas as entradas com o mesmo esquema (http://, https://, ...).</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>Corresponder com os esque&amp;mas do URL (https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Apenas devolve as melhores entradas para o URL específico em vez das entradas para o domínio.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Devolve&amp;r apenas as credenciais mais parecidas</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordenar &amp;entradas por título</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ordenar credenciais coincidentes por nome de &amp;utilizador</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Desconectar de todos os navegadores</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Esquecer todas as &amp;permissões memorizadas</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avançado</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nunc&amp;a perguntar antes de aceder às credenciais</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Nun&amp;ca perguntar antes de atualizar as credenciais</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Apenas a base de dados selecionada tem que estar conectada a um cliente.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Procurar em todas as base de dados abertas por credenciais semel&amp;hantes</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>A criação ou atualização dos campos de cadeias não é suportada.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Most&amp;rar campos avançados que começem com &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Atualiza automaticamente o caminho do KeePassXC ou do caminho do binário keepassxc-proxy para os &apos;sripts&apos; nativos de mensagens ao iniciar.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Atualizar ficheiros de mensagens &amp;nativas ao iniciar</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Suporte à utilização de uma aplicação proxy entre o KeePassXC a a extensão do navegador.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Utilizar uma aplicação de &amp;proxy entre o KeePassXC e a extensão do navegador</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Utilize um proxy personalizado caso o tenha instalado manualmente.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Utilizar pro&amp;xy personalizado</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Procurar...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;AVISO&lt;/b&gt;: as opções seguintes podem ser perigosas!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Ficheiros executáveis (*.exe);;Todos os ficheiros (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Ficheiros executáveis (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Selecionar localização do proxy personalizado</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Lamentamos mas, no momento, o KeePassXC-Browser não tem suporte a versões Snap.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Pedido de associação de nova chave</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Recebeu um pedido de associação para a chave acima indicada.
+
+Se quiser permitir o acesso à sua base de dados do KeePassXC,
+digite um nome identificável e aceite o pedido.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Guardar e permitir acesso</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Substituir chave existente?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Já existe uma chave de cifra partilhada com o nome &quot;%1&quot;.
+Deseja substituir a chave existente?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Atualizar entrada</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Deseja atualizar as informações em %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Base de dados bloqueada!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>A base de dados ativa está bloqueada!
+Desbloqueie a base de dados selecionada ou escolha outra que esteja desbloqueada.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Definições indisponíveis!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>A base de dados ativa não contém uma entrada de definições.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Nenhuma chave encontrada</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Não foram encontradas chaves de cifra partilhadas nas definições do KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Chaves removidas da base de dados</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>Removidas com sucesso %n chave de cifra das definições do KeePassXC.</numerusform><numerusform>Removidas com sucesso %n chaves de cifra das definições do KeePassXC.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>A remover permissões guardadas...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abortar</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Permissões removidas</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>Removidas com sucesso as permissões de %n entrada.</numerusform><numerusform>Removidas com sucesso as permissões de %n entradas.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Não existem entradas com permissões!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>A base de dados ativa não contém uma entrada com permissões.</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Repita a palavra-passe:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>Ficheiro-&amp;chave</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Procurar</translation>
</message>
@@ -157,6 +502,14 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Criar</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Pergunta de &amp;segurança</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Recarregar</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Ficheiros-chave</translation>
</message>
@@ -177,6 +530,10 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Selecione o ficheiro-chave</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Palavra-passe vazia</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Deseja mesmo utilizar uma cadeia vazia como palavra-passe?</translation>
</message>
@@ -191,20 +548,18 @@ Selecione se deseja permitir o acesso.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Ficheiro-&amp;chave</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Pergunta de &amp;segurança</translation>
+ <source>Legacy key file format</source>
+ <translation>Formato legado de ficheiro-chave</translation>
</message>
<message>
- <source>Refresh</source>
- <translation>Recarregar</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Palavra-passe vazia</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Está a utilizar um formato legado que pode, no futuro, deixar
+de ser suportado.
+
+Deve considerar a geração de uma novo ficheiro-chave.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +573,10 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Opções de clonagem</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Adicionar &apos; -Clone&apos; ao título</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Substituir nome de utilizador e palavra-passe por referências</translation>
</message>
@@ -225,10 +584,6 @@ Selecione se deseja permitir o acesso.</translation>
<source>Copy history</source>
<translation>Histórico de cópias</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Adicionar &apos; -Clone&apos; ao título</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +681,6 @@ Selecione se deseja permitir o acesso.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Importar ficheiro CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Erro</translation>
</message>
@@ -340,17 +691,17 @@ Selecione se deseja permitir o acesso.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> byte, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n bytes, </numerusform><numerusform>%n bytes, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>linhas, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n linha,</numerusform><numerusform>%n linhas,</numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>colunas</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n coluna,</numerusform><numerusform>%n colunas,</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +723,14 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Procurar</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Recarregar</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Pergunta de segurança:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Incapaz de abrir a base de dados.</translation>
</message>
@@ -380,6 +739,24 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Incapaz de abrir o ficheiro-chave</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>Formato legado de ficheiro-chave</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Está a utilizar um formato legado que pode, no futuro, deixar
+de ser suportado.
+
+Deve considerar a geração de uma novo ficheiro-chave.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Não mostrar novamente</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Todos os ficheiros</translation>
</message>
@@ -391,14 +768,6 @@ Selecione se deseja permitir o acesso.</translation>
<source>Select key file</source>
<translation>Selecione o ficheiro-chave</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Recarregar</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Pergunta de segurança:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +784,14 @@ Selecione se deseja permitir o acesso.</translation>
<translation>Incapaz de abrir o ficheiro-chave</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Base de dados aberta. Nada para fazer.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Incapaz de abrir a base de dados.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Base de dados aberta. Nada para fazer.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Sucesso</translation>
</message>
@@ -440,28 +809,122 @@ Agora já a pode guardar.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Nome da base de dados:</translation>
+ <source>General</source>
+ <translation>Geral</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Descrição da base de dados:</translation>
+ <source>Encryption</source>
+ <translation>Cifra</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Número de ciclos muito alto</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Está a utilizar um número muito alto para a transformação de chaves com Argon2.
+
+Se mantiver este número, a sua base de dados pode levar muitas horas/dias (ou ainda mais) para ser aberta!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Percebi, manter número</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Número de ciclos muito baixo</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Está a utilizar um número muito baixo para a transformação de chaves com Argon2.
+
+Se mantiver este número, a sua base de dados pode ser desbloqueada muito facilmente!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF inalterado</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Falha ao transformar a chave com os novos parâmetros KDF; KDF inalterado.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform>processo</numerusform><numerusform>processos</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Algoritmo de cifra:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 bits (padrão)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 bits</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Função derivação de chave:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Ciclos de transformação:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Nome de utilizador padrão:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>Utilização de memória:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Paralelismo:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Meta-dados da base de dados</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nome da base de dados:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Descrição da base de dados:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Nome de utilizador padrão:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Desempenho</translation>
+ <source>History Settings</source>
+ <translation>Definições do histórico</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +935,27 @@ Agora já a pode guardar.</translation>
<translation>Tamanho máximo para o histórico:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Utilizar reciclagem</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 bits (padrão)</translation>
+ <source>Use recycle bin</source>
+ <translation>Utilizar reciclagem</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 bits</translation>
+ <source>Additional Database Settings</source>
+ <translation>Definições extra da base de dados</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritmo:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Ativar compr&amp;essão (recomendado)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Raiz</translation>
</message>
<message>
@@ -511,22 +975,48 @@ Agora já a pode guardar.</translation>
<translation>Ficheiro não encontrado!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Abrir base de dados do KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Incapaz de abrir a base de dados.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Base de dados do KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Ficheiro aberto no modo de leitura.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Abrir ficheiro CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Ficheiro CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Todos os ficheiros (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Combinar base de dados</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Abrir base de dados do KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Base de dados do KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Fechar?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>%1 está em modo de edição.
+Deseja fechar e perder as alterações?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Guardar alterações?</translation>
</message>
@@ -541,10 +1031,22 @@ Guardar alterações?</translation>
<translation>Falha ao escrever na base de dados.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Palavras-passe</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Guardar base de dados como</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Exportar base de dados para ficheiro CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Falha ao escrever no ficheiro CSV.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Nova base de dados</translation>
</message>
@@ -563,12 +1065,6 @@ Please press cancel to finish your changes or discard them.</source>
Prima Cancelar para finalizar as alterações ou descarte-as.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Esta base de dados nunca foi guardada.
-Pode guardar a base de dados ou parar de a bloquear.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,69 +1073,23 @@ Deseja guardar a base de dados antes de a bloquear ?
Se não o fizer, perderá as suas alterações.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>%1 está em modo de edição.
-Deseja fechar e perder as alterações?</translation>
+ <source>Disable safe saves?</source>
+ <translation>Desativar salvaguardas?</translation>
</message>
<message>
- <source>Export database to CSV file</source>
- <translation>Exportar base de dados para ficheiro CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>Ficheiro CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Falha ao escrever no ficheiro CSV.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Incapaz de abrir a base de dados.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Combinar base de dados</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>A base de dados que está a tentar abrir está bloqueada por outra instância do KeePassXC.
-Ainda assim deseja guardar as alterações?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Palavras-passe</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Base de dados já aberta</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>A base de dados que está a tentar abrir está bloqueada por outra instância do KeePassXC.
-
-Ainda assim deseja abrir a base de dados?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Abrir no modo de leitura</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Ficheiro aberto no modo de leitura.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Abrir ficheiro CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>O KeePassXC não conseguiu guardar a base de dados múltiplas vezes. Muito provavelmente, os serviços de sincronização não permitira a gravação.
+Desativar salvaguardas e tentar novamente?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>A procurar...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Alterar chave-mestre</translation>
</message>
@@ -660,6 +1110,14 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Deseja mesmo apagar permanentemente %1 entradas?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Mover entrada para a reciclagem?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Deseja mesmo mover a entrada &quot;%1&quot; para a reciclagem?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Mover entradas para a reciclagem?</translation>
</message>
@@ -668,28 +1126,28 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation><numerusform>Pretende realmente mover a entrada(s) %n para a reciclagem ?</numerusform><numerusform>Deseja mesmo mover %n entrada(s) para a reciclagem?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Apagar grupo?</translation>
+ <source>Execute command?</source>
+ <translation>Executar comando?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Deseja mesmo apagar permanentemente o grupo &quot;%1&quot;?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Deseja mesmo executar o seguinte comando?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossível de calcular a chave-mestre</translation>
+ <source>Remember my choice</source>
+ <translation>Memorizar escolha</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Mover entrada para a reciclagem?</translation>
+ <source>Delete group?</source>
+ <translation>Apagar grupo?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Deseja mesmo mover a entrada &quot;%1&quot; para a reciclagem?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Deseja mesmo apagar permanentemente o grupo &quot;%1&quot;?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>A procurar...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Impossível de calcular a chave-mestre</translation>
</message>
<message>
<source>No current database.</source>
@@ -708,20 +1166,8 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Sem resultados</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Executar comando?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Deseja mesmo executar o seguinte comando?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Memorizar escolha</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Pedido de recarregamento automático</translation>
+ <source>File has changed</source>
+ <translation>Ficheiro alterado</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -732,8 +1178,10 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Pedido de união</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>O ficheiro da base de dados foi alterado e tem alterações por guardar. Deseja combinar as alterações?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>A base de dados foi alterada e tem alterações não gravadas.
+Deseja juntar as suas alterações?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -749,6 +1197,89 @@ Ainda assim deseja abrir a base de dados?</translation>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>A gerar token TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Palavra-passe</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Expira</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nome de utilizador</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Escrita automática</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>A procurar</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atributos</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Anexos</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notas</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Janela</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequência</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Pesquisa</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Limpar</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Nunca</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEGIDA]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Desativada</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Ativada</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -775,6 +1306,30 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Histórico</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>Agente SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/d</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(cifrada)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Selecionar chave privada</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Ficheiro muito grande para ser uma chave privada</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Falha ao abrir a chave privada</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Histórico da entrada</translation>
</message>
@@ -795,22 +1350,20 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Novo atributo</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Selecionar ficheiro</translation>
+ <source>Confirm Remove</source>
+ <translation>Confirmação de remoção</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Incapaz de abrir o ficheiro</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Tem a certeza de que deseja remover este atributo?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Guardar anexo</translation>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEGIDA]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Incapaz de guardar o anexo:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Prima Mostrar para ver ou editar</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -829,20 +1382,16 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>1 ano</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Confirmação de remoção</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Tem a certeza de que deseja remover este atributo?</translation>
+ <source>Apply generated password?</source>
+ <translation>Aplicar palavra-passe gerada?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[PROTEGIDA] Por favor revele para ver ou editar</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Deseja aplicar a palavra-passe gerada para esta entrada?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Tem a certeza de que deseja remover este anexo?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>Entrada atualizada com sucesso.</translation>
</message>
</context>
<context>
@@ -860,18 +1409,6 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Remover</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Anexos</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Guardar</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Abrir</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Editar nome</translation>
</message>
@@ -883,24 +1420,24 @@ Ainda assim deseja abrir a base de dados?</translation>
<source>Reveal</source>
<translation>Revelar</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Ativar escrita automática para esta entrada</translation>
+ <source>Attachments</source>
+ <translation>Anexos</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Cor principal:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Cor secundária:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Título da janela:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Ativar escrita automática para esta entrada</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -911,16 +1448,24 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>&amp;Usar sequência personalizada de escrita automática:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>Utilizar se&amp;quência padrão</translation>
+ <source>Window Associations</source>
+ <translation>Associação de janelas</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>Definir sequê&amp;ncia personalizada:</translation>
+ <source>-</source>
+ <translation>-</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Associação de janelas</translation>
+ <source>Window title:</source>
+ <translation>Título da janela:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>Utilizar sequência específica para esta associação:</translation>
</message>
</context>
<context>
@@ -945,12 +1490,8 @@ Ainda assim deseja abrir a base de dados?</translation>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Título:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Nome de utilizador:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -961,20 +1502,104 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Repetição:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Título:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>Expira</translation>
+ <source>Notes</source>
+ <translation>Notas</translation>
</message>
<message>
<source>Presets</source>
<translation>Predefinições</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Notas:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Alternar caixa de seleção para mostrar a secção de notas.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nome de utilizador:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Remover chave do agente depois de</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>segundos</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Impressão digital</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Remover chave do agente ao fechar/bloquear a base de dados</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Chave pública</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Adicionar chave ao agente ao abrir/desbloquear a base de dados</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Comentário</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Decifrar</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/d</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copiar para a área de transferência</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Chave privada</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Ficheiro externo</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Procurar...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Anexo</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Adicionar ao agente</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Remover do agente</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Solicitar confirmação para utilizar esta chave</translation>
</message>
</context>
<context>
@@ -1046,6 +1671,14 @@ Ainda assim deseja abrir a base de dados?</translation>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Utilizar ícone padrão</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Utilizar íco&amp;ne personalizado</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Adicionar ícone personalizado</translation>
</message>
@@ -1054,6 +1687,18 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Apagar ícone personalizado</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Descarregar &apos;favicon&apos;</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Incapaz de obter o &apos;favicon&apos;.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Dica: pode ativar o Google como recurso em Ferramentas -&gt; Definições -&gt; Segurança</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Imagens</translation>
</message>
@@ -1066,24 +1711,12 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Selecionar imagem</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Descarregar &apos;favicon&apos;</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Incapaz de obter o &apos;favicon&apos;.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Incapaz de ler o ícone</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Utilizar ícone padrão</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Utilizar íco&amp;ne personalizado</translation>
+ <source>Custom icon already exists</source>
+ <translation>Já existe um ícone personalizado</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1093,14 +1726,6 @@ Ainda assim deseja abrir a base de dados?</translation>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Este ícone está a ser utilizado por %1 entradas e será substituído pelo ícone padrão. Tem a certeza de que deseja apagar o ícone?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Dica: pode ativar o Google como recurso em Ferramentas -&gt; Definições -&gt; Segurança</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>Já existe um ícone personalizado</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1120,15 +1745,130 @@ Ainda assim deseja abrir a base de dados?</translation>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Dados do plugin</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remover</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Apagar dados do plugin?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Tem a certeza de que deseja apagar os dados do plugin?
+Esta ação pode implicar um funcionamento errático.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Chave</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Valor</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation>- Cópia</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nome</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Tamanho</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Adicionar</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remover</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Abrir</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Guardar</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Selecionar ficheiros</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Tem a certeza de que deseja remover %n anexo?</numerusform><numerusform>Tem a certeza de que deseja remover %n anexos?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirmação de remoção</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Guardar anexos</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Não foi possível criar o diretório:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Tem a certeza de que deseja substituir o ficheiro &quot;%1&quot; pelo anexo?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confirmação de substituição</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Não foi possível guardar os anexos:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Não foi possível abrir o anexo:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Não foi possível abrir os anexos:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Não foi possível abrir os ficheiros:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1157,6 +1897,11 @@ Ainda assim deseja abrir a base de dados?</translation>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Grupo</translation>
</message>
@@ -1173,9 +1918,67 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref: </translation>
+ <source>Never</source>
+ <translation>Nunca</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Palavra-passe</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notas</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expira</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Criada</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Modificada</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>Acedida</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Anexos</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Vista personalizada</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Ocultar nome de utilizador</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Ocultar palavras-passe</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Ajustar à janela</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>Ajustar ao conteúdo</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Repor predefinições</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Anexos (ícone)</translation>
</message>
</context>
<context>
@@ -1186,6 +1989,17 @@ Ainda assim deseja abrir a base de dados?</translation>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Ficheiro não guardado!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Não foi possível guardar o ficheiro de mensagens nativas.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1235,6 +2049,10 @@ Ainda assim deseja abrir a base de dados?</translation>
<source>Ensure that the password contains characters from every group</source>
<translation>Certificar de que a palavra-passe contém caracteres de todos os grupos</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>ASCII expandido</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1248,6 +2066,361 @@ Ainda assim deseja abrir a base de dados?</translation>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave-mestre</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Não foi possível emitir a pergunta de segurança.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Chave errada ou base de dados danificada.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Não foi possível emitir a pergunta de segurança.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave-mestre</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>cabeçalhos em falta</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave-mestre</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Tamanho inválido para o &apos;checksum&apos; do cabeçalho</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>Disparidade no cabeçalho SHA256</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Chave errada ou base de dados danificada (disparidade HMAC)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Cifra desconhecida</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Falha ao processar os parâmetros KDF no cabeçalho</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Função de derivação de chave (KDF) não suportada ou parâmetros inválidos</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Encontrados campos legados no ficheiro KDBX4.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Algoritmo inválido de cifra simétrica.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Algoritmo inválido de cifra simétrica IV.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Não foi possível calcular a chave-mestre</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Cifra não suportada</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Algoritmo de compressão não suportado</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Tamanho inválido para os ciclos de transformação </translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Não é uma base de dados do KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>O ficheiro selecionado é uma base de dados do KeePass 1 (.kdb).
+
+Pode importá-lo clicando em Base de dados - &gt; &apos;Importar base de dados do KeePass 1...&apos;.
+Esta é uma migração unidirecional. Não será possível abrir a base de dados importada com a versão 0.4 do KeePassX.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Versão da base de dados KeePass2 não suportada.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Falha no processamento XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Sem grupo root</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Dados ou uuid do ícone em falta</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Valor ou chave de dados personalizados em falta</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Múltiplos elementos de grupo</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Valor inválido para EnableAutoType</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Valor inválido para EnableSearching</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>UUID de grupo não encontrado</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Elemento de histórico na entrada do histórico</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Elemento do histórico com uuid diferente</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Não foi possível decifrar a cadeia vazia</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Encontrado atributo personalizado em duplicado</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Chave &apos;string&apos; ou valor em falta</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Encontrado anexo em duplicado</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Chave binária ou valor em falta</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Associação de escrita automática ou sequência em falta</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Valor booleano inválido</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Valor de data/hora inválido</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Valor de cor inválido</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Parte da cor RGB inválida</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Valor numérico inválido</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Valor uuid inválido</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Não foi possível descomprimir o binário</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1277,6 +2450,35 @@ Ainda assim deseja abrir a base de dados?</translation>
<translation>Versão da base de dados KeePass não suportada.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Não foi possível ler a cifra IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Número inválido de grupos</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Número inválido de entradas</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Tamanho inválido para a &apos;hash&apos; do conteúdo</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Número inválido para os ciclos de transformação</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Não foi possível criar a árvore de grupo</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Raiz</translation>
</message>
@@ -1288,129 +2490,141 @@ Ainda assim deseja abrir a base de dados?</translation>
<source>Wrong key or database file is corrupt.</source>
<translation>Chave errada ou base de dados danificada.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Não é uma base de dados do KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Falha ao transformar a chave</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Versão da base de dados KeePass não suportada.</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Chave errada ou base de dados danificada.</translation>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Incapaz de calcular a chave-mestre</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Incapaz de emitir a pergunta de segurança.</translation>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>O ficheiro selecionado é uma base de dados do KeePass 1 (.kdb).
-
-Pode importá-lo clicando em Base de dados - &gt; &apos;Importar base de dados do KeePass 1...&apos;.
-Esta é uma migração unidirecional. Não será possível abrir a base de dados importada com a versão 0.4 do KeePassX.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Incapaz de emitir a pergunta de segurança.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Impossível de calcular a chave-mestre</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Erro fatal ao testar as funções de criptografia.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Erro</translation>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Não foi possível criar o ficheiro de bloqueio. Modo de única instância desativado.</translation>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Já está em execução uma instância do KeePassXC.</translation>
+ <source>Invalid group field type</source>
+ <translation>Tipo inválido para o campo de grupo</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>O ficheiro de bloqueio da instância única é inválido. A iniciar nova instância.</translation>
+ <source>Missing group id or level</source>
+ <translation>ID ou nível de grupo em falta</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Abrir base de dados</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Definições da base de dados</translation>
+ <source>Invalid entry field size</source>
+ <translation>Tamanho inválido para o campo da entrada</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Copiar nome de utilizador para a área de transferência</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Copiar palavra-passe para a área de transferência</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
- <translation>Definições</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Mostrar barra de ferramentas</translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>apenas leitura</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
- <translation>Alternar janela</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Base de dados do KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Todos os ficheiros</translation>
+ <source>Invalid entry field type</source>
+ <translation>Tipo inválido para o campo da entrada</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Guardar base de dados reparada</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>O ficheiro de bloqueio da instância única é inválido. A iniciar nova instância.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Falha ao escrever na base de dados.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Não foi possível criar o ficheiro de bloqueio. Modo de única instância desativado.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Já está em execução uma instância do KeePassXC.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Erro fatal ao testar as funções de criptografia.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Erro</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>Base &amp;de dados</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>Bases de dados &amp;recentes</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Importar</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Aj&amp;uda</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>E&amp;ntradas</translation>
</message>
@@ -1419,12 +2633,16 @@ Esta é uma migração unidirecional. Não será possível abrir a base de dados
<translation>Copiar at&amp;ributo para a área de transferência</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Palavra-passe única baseada em tempo</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Grupos</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Ver</translation>
+ <source>&amp;Tools</source>
+ <translation>Ferramen&amp;tas</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1435,6 +2653,10 @@ Esta é uma migração unidirecional. Não será possível abrir a base de dados
<translation>&amp;Acerca</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>Abrir base de dad&amp;os...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Guardar base de dado&amp;s</translation>
</message>
@@ -1475,24 +2697,24 @@ Esta é uma migração unidirecional. Não será possível abrir a base de dados
<translation>Apagar g&amp;rupo</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>&amp;Definições da base de dados</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>G&amp;uardar base de dados como...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Clonar entrada</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Alterar chave-&amp;mestre...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Palavra-passe &apos;timed one-time&apos;</translation>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Definições da base de dados</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Copiar &amp;TOTP</translation>
+ <source>Database settings</source>
+ <translation>Definições da base de dados</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Mostrar TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Clonar entrada</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1503,14 +2725,26 @@ Esta é uma migração unidirecional. Não será possível abrir a base de dados
<translation>Copiar nome de &amp;utilizador</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Copiar nome de utilizador para a área de transferência</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Cop&amp;iar palavra-passe</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Copiar palavra-passe para a área de transferência</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>Definiçõe&amp;s</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Gerador de palavras-passe</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>E&amp;xecutar escrita automática</translation>
</message>
@@ -1527,165 +2761,222 @@ Esta é uma migração unidirecional. Não será possível abrir a base de dados
<translation>&amp;Título</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Copiar título para a área de transferência</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Copiar URL para a área de transferência</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Notas</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Gerador de palavras-passe</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Copiar notas para a área de transferência</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Limpar histórico</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Exportar para ficheiro CSV...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>Base &amp;de dados</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importar base de dados do KeePass 1...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Importar</translation>
+ <source>Import CSV file...</source>
+ <translation>Importar ficheiro CSV...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>Ferramen&amp;tas</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Re&amp;parar base de dados...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Mostrar TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Configurar TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Copiar &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>Limpar reciclage&amp;m</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>Limpar reciclagem</translation>
+ <source>Clear history</source>
+ <translation>Limpar histórico</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Erro de acesso ao ficheiro %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Sair do KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Parece que está a utilizar KeepassHTTP para integração com o navegador. Esta funcionalidade foi descontinuada e será removida brevemente.&lt;br&gt;Considere a utilização de KeePassXC-Browser! Para obter ajuda na migração, aceda ao nosso &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;guia de migração&lt;/a&gt; (aviso %1 de 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Toque no botão da sua YubiKey!</translation>
+ <source>read-only</source>
+ <translation>apenas leitura</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>Aj&amp;uda</translation>
+ <source>Settings</source>
+ <translation>Definições</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>Abrir base de dad&amp;os...</translation>
+ <source>Toggle window</source>
+ <translation>Alternar janela</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>G&amp;uardar base de dados como...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Sair do KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Alterar chave-&amp;mestre...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Base de dados do KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;Exportar para ficheiro CSV...</translation>
+ <source>All files</source>
+ <translation>Todos os ficheiros</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Importar base de dados do KeePass 1...</translation>
+ <source>Open database</source>
+ <translation>Abrir base de dados</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importar ficheiro CSV...</translation>
+ <source>Save repaired database</source>
+ <translation>Guardar base de dados reparada</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Re&amp;parar base de dados...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Falha ao escrever na base de dados.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Configurar TOTP...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Toque no botão da sua YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>AVISO: está a utilizar uma versão instável do KeepassXC!
+Existe um risco bastante grande e deve efetuar um backup da base de dados.
+Esta versão não deve ser utilizada para uma utilização regular.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Diálogo</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Chave inválida, esperada chave OpenSSH</translation>
</message>
<message>
- <source>General</source>
- <translation>Geral</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>Disparidade nos limites PEM</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>M&amp;ostrar notificação se as credenciais forem solicitadas</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Falha na descodificação Base64</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Ordenar entradas coincidentes por nome de &amp;utilizador</translation>
+ <source>Key file way too small.</source>
+ <translation>Ficheiro-chave muito pequeno</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Re&amp;mover todas as permissões guardadas para as entradas da base de dados ativa</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>ID do cabeçalho mágico do ficheiro-chave inválida</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Avançado</translation>
+ <source>Found zero keys</source>
+ <translation>Encontradas zero chaves</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Permitir sempre &amp;acesso às entradas</translation>
+ <source>Failed to read public key.</source>
+ <translation>Falha ao ler a chave pública.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Permitir sempre at&amp;ualizar as entradas</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Ficheiro danificado, erro ao ler a chave privada</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Procurar em todas as base de dados abertas por entradas semel&amp;hantes</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Não existe chave privada para decifrar</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Porta HTTP:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>A tentar executar KDF sem cifra</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Porta padrão: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Requer frase-chave para decifrar esta chave</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Pe&amp;dir para desbloquear a base de dados se esta estiver bloqueada</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Falha na derivação da chave, ficheiro chave danificado?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Ordenar &amp;entradas por título</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Falha ao decifrar, frase-chave errada?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>O KeePassXC vai escutar nesta porta em 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>EOF inesperado ao ler a chave pública</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Incapaz de associar às portas privilegiadas </translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>EOF inesperado ao ler a chave privada</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Não é possível associar a portas privilegiadas inferiores à 1024!
-Será utilizada a porta 19455 (padrão).</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Incapaz de escrever a chave pública porque está vazia</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>R&amp;emover todas as chaves cifradas partilhadas da base de dados ativa</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>EOF inesperado ao escrever a chave pública</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>Most&amp;rar campos avançados que começam com &quot;KPH: &quot;</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Incapaz de escrever a chave privada porque está vazia</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>A criação ou atualização dos campos de cadeias não é suportada.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>EOF inesperado ao escrever a chave privada</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Tipo de chave não suportado: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Cifra desconhecida: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Cifra IV é muito curta para MD kdf</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>KDF desconhecido: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Tipo de chave desconhecido: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Diálogo</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1696,6 +2987,15 @@ Será utilizada a porta 19455 (padrão).</translation>
<translation>Ativar servidor KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>M&amp;ostrar notificação se as credenciais forem solicitadas</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Apenas devolve as melhores entradas para o URL específico em vez das entradas para o domínio.</translation>
</message>
@@ -1704,6 +3004,10 @@ Será utilizada a porta 19455 (padrão).</translation>
<translation>Devolve&amp;r apenas as entradas coincidentes</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Pe&amp;dir para desbloquear a base de dados se esta estiver bloqueada</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Apenas serão devolvidas as entradas com o mesmo esquema (http://, https://, ftp://, ...).</translation>
</message>
@@ -1712,27 +3016,108 @@ Será utilizada a porta 19455 (padrão).</translation>
<translation>Corresponder com os esque&amp;mas do URL</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Ordenar entradas coincidentes por nome de &amp;utilizador</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Ordenar &amp;entradas por título</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>R&amp;emover todas as chaves cifradas partilhadas da base de dados ativa</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Re&amp;mover todas as permissões guardadas para as entradas da base de dados ativa</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Gerador de palavra-passe</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Avançado</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Permitir sempre &amp;acesso às entradas</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Permitir sempre at&amp;ualizar as entradas</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Apenas a base de dados selecionada tem que estar conectada a um cliente.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>As opções seguintes podem ser perigosas!
-Apenas as deve alterar se souber o que está a fazer.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Procurar em todas as base de dados abertas por entradas semel&amp;hantes</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>A criação ou atualização dos campos de cadeias não é suportada.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Most&amp;rar campos avançados que começam com &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Porta HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Porta padrão: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>O KeePassXC vai escutar nesta porta em 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;AVISO&lt;/b&gt;: as opções seguintes podem ser perigosas!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;A funcionalidade KeePassHTTP foi descontinuada e será removida brevemente.&lt;br&gt;Considere a utilização de KeePassXC-Browser! Para obter ajuda na migração, aceda ao nosso &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;guia de migração&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Incapaz de associar às portas privilegiadas </translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Não é possível associar a portas privilegiadas inferiores à 1024!
+Será utilizada a porta 19455 (padrão).</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Palavra-passe:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>qualidade</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropia</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Palavra-passe</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Tipos de caracteres</translation>
</message>
@@ -1753,38 +3138,50 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
<translation>Caracteres especiais</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>ASCII expandido</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Excluir caracteres semelhantes</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Aceitar</translation>
+ <source>Pick characters from every group</source>
+ <translation>Obter caracteres de todos os grupos</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Comprimento:</translation>
</message>
<message>
- <source>strength</source>
- <translation>qualidade</translation>
+ <source>Passphrase</source>
+ <translation>Frase-chave</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropia</translation>
+ <source>Wordlist:</source>
+ <translation>Lista de palavras:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Comprimento:</translation>
+ <source>Word Count:</source>
+ <translation>Número de palavras:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Obter caracteres de todos os grupos</translation>
+ <source>Word Separator:</source>
+ <translation>Separador de palavras:</translation>
</message>
<message>
<source>Generate</source>
<translation>Gerar</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Copiar</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Aceitar</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Fechar</translation>
</message>
@@ -1802,51 +3199,276 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Má</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Fraca</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Boa</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Excelente</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Palavra-passe</translation>
+ <source>Database not opened</source>
+ <translation>Base de dados não aberta</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>ASCII expandido</translation>
+ <source>Database hash not available</source>
+ <translation>&apos;Hash&apos; da base de dados não disponível</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Frase-chave</translation>
+ <source>Client public key not received</source>
+ <translation>Chave pública do cliente não recebida</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Lista de palavras:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Não foi possível decifrar a mensagem</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>Número de palavras:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Tempo limite atingido ou não foi possível comunicar com o KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Separador de palavras:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Ação cancelada ou recusada</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Copiar</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Mensagem não decifrada ou chave pública não encontrada, Ativou as mensagens nativas no KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>Falha ao associar o KeePassXC. Tente novamente.</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Alteração de chave não efetuada</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Chave de cifra não reconhecida</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Não existem bases de dados guardadas</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Ação incorreta</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Recebida mensagem vazia</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>URL não disponibilizado</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Não existem credenciais</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Erro desconhecido</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Adicionar entrada à base de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Caminho da base de dados.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Ficheiro-chave da base de dados.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>caminho</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Nome de utilizador para a entrada.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>nome de utilizador</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL para a entrada.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Pedir palavra-passe para a entrada.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Gerar palavra-passe para a entrada.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Tamanho da palavra-passe gerada.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>tamanho</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Caminho da entrada a adicionar.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Copiar palavra-passe da entrada para a área de transferência.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Caminho da entrada a copiar.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Tempo limite, em segundos, antes de limpar a área de transferência.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Editar entrada.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Título para a entrada.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>título</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Caminho da entrada a editar.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Estimar entropia da palavra-passe.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Palavra-passe para a qual será estimada a entropia.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Executar análise avançada da palavra-passe.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extrair e mostrar o conteúdo da base de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Caminho da base de dados a extrair.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Digite a palavra-passe para desbloquear %1.</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Falha ao carregar o ficheiro-chave %1: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>AVISO: está a utilizar um formato legado que pode, no futuro, deixar
+de ser suportado.
+
+Deve considerar a geração de uma novo ficheiro-chave.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Comandos disponíveis:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Nome do comando a executar.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Listar entradas da base de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Caminho do grupo a listar. Padrão é /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Localizar entradas rapidamente.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Termo de pesquisa</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Combinar duas bases de dados.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Caminho da base de dados de destino da combinação.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Caminho da base de dados de origem da combinação.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Utilizar as mesmas credenciais para ambos os ficheiros.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Ficheiro-chave da base de dados para a combinação.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Mostrar informações de uma entrada.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Nome dos atributos a mostrar. Esta opção pode ser especificada mais do que uma vez, sendo que os atributos são mostrados um por linha, na ordem indicada. Se não especificar atributos, será dado um resumo dos atributos padrão.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>atributo</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Nome da entrada a mostrar.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>Dispositivo NULL</translation>
@@ -1870,8 +3492,28 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
<translation>carácter de fecho em falta</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>INTERNO - limite inferior &apos;unget&apos; excedido</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – recomendado)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1890,14 +3532,22 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
<translation>Palavra-passe</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notas</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>Última modificação</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Criada</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Integração com navegador (legada)</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Integração com navegador</translation>
</message>
@@ -1913,6 +3563,56 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
<source>Passive</source>
<translation>Passiva</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agente SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Gerar uma nova palavra-passe baseada em dados (diceware).</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Número de palavras para a palavra-passe.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>número</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>Lista de palavras para o gerador.
+[Padrão: EFF inglês]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Gerar nova palavra-passe aleatória.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Tamanho da palavra-passe gerada.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Utilizar letras minúsculas para a palavra-passe gerada.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>Utilizar letras maiúsculas para a palavra-passe gerada.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Utilizar números para a palavra-passe gerada.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Utilizar caracteres especiais para a palavra-passe gerada.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Utilizar ASCII estendido para a palavra-passe gerada.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1951,8 +3651,8 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Maiúsculas/minúsculas</translation>
+ <source>Search...</source>
+ <translation>Pesquisa...</translation>
</message>
<message>
<source>Search</source>
@@ -1963,8 +3663,8 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
<translation>Limpar</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Pesquisa...</translation>
+ <source>Case Sensitive</source>
+ <translation>Maiúsculas/minúsculas</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1974,50 +3674,6 @@ Apenas as deve alterar se souber o que está a fazer.</translation>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Já existe uma chave de cifra partilhada com o nome &quot;%1&quot;.
-Deseja substituir a chave de cifra?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Deseja atualizar as informações em %1 - %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>A base de dados ativa está bloqueada!
-Desbloqueie a base de dados selecionada ou escolha outra que esteja desbloqueada.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>Removidas com sucesso %1 de cifra - %2 das definições do KeePassXHttp.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Nenhuma chaves de cifra partilhadas encontrada nas definições do KeePassHttp.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>A base de dados ativa não contém uma entrada de definições KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>A remover permissões guardadas...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Abortar</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Removidas com sucesso as permissões de %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>A base de dados ativa não contém uma entrada com permissões.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Pedido de associação de nova chave</translation>
</message>
@@ -2034,33 +3690,77 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<translation>KeePassXC: Substituir chave existente?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Já existe uma chave de cifra partilhada com o nome &quot;%1&quot;.
+Deseja substituir a chave de cifra?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Atualizar entrada</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Deseja atualizar as informações em %1 - %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Base de dados bloqueada!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>A base de dados ativa está bloqueada!
+Desbloqueie a base de dados selecionada ou escolha outra que esteja desbloqueada.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Remover chaves da base de dados</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>Removida com sucesso %n chave de cifra das definições KeePassX/Http.</numerusform><numerusform>Removidas com sucesso % chaves de cifra das definições KeePassX/Http.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Nenhuma chave encontrada</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Nenhuma chaves de cifra partilhadas encontrada nas definições do KeePassHttp.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Definições indisponíveis!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>A base de dados ativa não contém uma entrada de definições KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>A remover permissões guardadas...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abortar</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Permissões removidas</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>Removidas com sucesso as permissões de %n entrada.</numerusform><numerusform>Removidas com sucesso as permissões de %n entradas.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Não existem entradas com permissões!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>A base de dados ativa não contém uma entrada com permissões.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2084,10 +3784,26 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Definições básicas</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Abrir apenas uma instância do KeepassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Memorizar últimas bases de dados</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Memorizar últimos ficheiros-chave e dispositivos de segurança</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Ao iniciar, carregar a última base de dados utilizada</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Guardar automaticamente ao fechar</translation>
</message>
@@ -2096,20 +3812,28 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<translation>Guardar automaticamente a cada alteração</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Recarregar base de dados se esta for modificada externamente</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimizar ao copiar para a área de transferência</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimizar janela ao iniciar a aplicação</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Utilizar ícone do grupo ao criar a entrada</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Atalho global de escrita automática</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Não marcar base de dados como alterada para modificações não efetuadas em dados (ex.: expansão de grupos)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Idioma</translation>
+ <source>Hide the Details view</source>
+ <translation>Ocultar vista de detalhes</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2120,75 +3844,97 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<translation>Ao minimizar, ocultar a janela na bandeja do sistema</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Ao iniciar, carregar a última base de dados utilizada</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Recarregar base de dados se esta for modificada externamente</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Ao fechar, ocultar a janela na bandeja do sistema</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Minimizar janela ao iniciar a aplicação</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Definições básicas</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Memorizar últimos ficheiros-chave e dispositivos de segurança</translation>
+ <source>Dark system tray icon</source>
+ <translation>Ãcone escuro na bandeja</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Não marcar base de dados como alterada para modificações não efetuadas em dados (ex.: expansão de grupos)</translation>
+ <source>Language</source>
+ <translation>Idioma</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Escrita automática</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>Utilizar título da entrada e URL para correspondência entre as janelas e a escrita automática</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Utilizar título da entrada para fazer coincidir com a escrita automática</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Utilizar URL da entrada para fazer coincidir com a escrita automática</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Perguntar antes de executar a escrita automática</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Atalho global de escrita automática</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Atraso de escrita automática</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> ms</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>Abrir apenas uma instância do KeepassXC</translation>
+ <source>Startup</source>
+ <translation>Arranque</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Gestão de ficheiros</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Guardar bases de dados em segurança (pode ser incompatível com DropBox e outros serviços)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Criar backup da base de dados antes de guardar</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Gestão de entradas</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Geral</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Tempo limite</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Limpar área de transferência após</translation>
</message>
<message>
<source> sec</source>
- <translation> seg</translation>
+ <comment>Seconds</comment>
+ <translation> seg.</translation>
</message>
<message>
<source>Lock databases after inactivity of</source>
<translation>Bloquear base de dados se inativa durante</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Mostrar palavras-passe em texto simples</translation>
+ <source>Convenience</source>
+ <translation>Conveniência</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Bloquear base de dados ao bloquear a sessão ou ao fechar a tampa do portátil</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2199,16 +3945,16 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<translation>Não pedir repetição da palavra-passe se esta estiver visível</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Tempo limite</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Mostrar palavras-passe em texto simples</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>Conveniência</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Ocultar palavras-passe no painel de pré-visualização</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Bloquear base de dados ao bloquear a sessão ou ao fechar a tampa do portátil</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Por definição, ocultar notas da entrada</translation>
</message>
<message>
<source>Privacy</source>
@@ -2218,6 +3964,10 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<source>Use Google as fallback for downloading website icons</source>
<translation>Utilizar o Google como recurso para descarregar os ícones dos sites</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Bloquear novamente a base de dados depois de usar a escrita automática</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2230,6 +3980,14 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<translation>Chave:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Definições padrão do token RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Definições do token do fluxo</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Usar definições personalizadas</translation>
</message>
@@ -2255,6 +4013,7 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> seg.</translation>
</message>
</context>
@@ -2291,10 +4050,6 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Bem-vindo ao KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Armazene as suas palavras-passe em segurança com o KeePassXC</translation>
</message>
@@ -2318,92 +4073,48 @@ KeePassXC, atribua um nome único para a identificar e aceitar.</translation>
<source>Recent databases</source>
<translation>Bases de dados recentes</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Bem-vindo ao KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>caminho para um ficheiro de configuração personalizado</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>ficheiro-chave da base de dados</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - Gestor de palavras-passe multi-plataforma</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>ler palavra-passe da base de dados a partir de stdin</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>nome de ficheiro das bases de dados a abrir (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Copiar palavra-passe para a área de transferência</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Remover uma entrada da base de dados.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Caminho da base de dados.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>Usar um GUI para desbloquear a base de dados.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Nome da entrada a copiar.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Extrair e mostrar o conteúdo da base de dados.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Caminho da base de dados a extrair.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Nome do comando a executar.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Listar entradas da base de dados.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Caminho do grupo a listar. Padrão é /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Mostrar os UUID das entradas e dos grupos.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Caminho da entrada a remover.</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>Combinar duas bases de dados.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - Gestor de palavras-passe multi-plataforma</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Caminho da base de dados de destino da combinação.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>nome de ficheiro das bases de dados a abrir (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Caminho da base de dados de origem da combinação.</translation>
+ <source>path to a custom config file</source>
+ <translation>caminho para um ficheiro de configuração personalizado</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Utilizar a mesma palavra-passe para ambas as bases de dados.</translation>
+ <source>key file of the database</source>
+ <translation>ficheiro-chave da base de dados</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Mostrar palavra-passe.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>ler palavra-passe da base de dados a partir de stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Nome da entrada a mostrar.</translation>
+ <source>Parent window handle</source>
+ <translation>Gestão da janela parental</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_ro.ts b/share/translations/keepassx_ro.ts
new file mode 100644
index 000000000..553092057
--- /dev/null
+++ b/share/translations/keepassx_ro.ts
@@ -0,0 +1,4073 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ro" version="2.1">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <source>About KeePassXC</source>
+ <translation>Despre KeePassXC</translation>
+ </message>
+ <message>
+ <source>About</source>
+ <translation>Despre</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Raportați erorile la: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Contributors</source>
+ <translation>Contribuitori</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Vezi contribuțiile pe GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Debug Info</source>
+ <translation>Informații depanare</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Includeți următoarea informație când raportați o eroare:</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copiază în clipboard</translation>
+ </message>
+ <message>
+ <source>Version %1
+</source>
+ <translation>Versiune %1
+</translation>
+ </message>
+ <message>
+ <source>Revision: %1</source>
+ <translation>Revizie: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Distribuție: %1</translation>
+ </message>
+ <message>
+ <source>Libraries:</source>
+ <translation>Librării:</translation>
+ </message>
+ <message>
+ <source>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</source>
+ <translation>Sistem de operare: %1
+Arhitectura procesor (CPU): %2
+Nucleu (Kernel): %3 %4</translation>
+ </message>
+ <message>
+ <source>Enabled extensions:</source>
+ <translation>Extensii activate:</translation>
+ </message>
+ <message>
+ <source>Project Maintainers:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Build Type: %1
+</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccessControlDialog</name>
+ <message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Ține minte această decizie</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Permite</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Interzice</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
+ <message>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Activează Agentul SSH (necesită repornire)</translation>
+ </message>
+</context>
+<context>
+ <name>AutoType</name>
+ <message>
+ <source>Couldn&apos;t find an entry that matches the window title:</source>
+ <translation>Nu a putut fi gasită nicio intrare care să coincidă cu titlul ferestrei:</translation>
+ </message>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AutoTypeAssociationsModel</name>
+ <message>
+ <source>Window</source>
+ <translation>Fereastră</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Secvență</translation>
+ </message>
+ <message>
+ <source>Default sequence</source>
+ <translation>Secvență implicită</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grup</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titlu</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nume utilizator</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Secvență</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Ține minte această decizie</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Permite</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Interzice</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avansat</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Răsfoiește...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Anulează</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ChangeMasterKeyWidget</name>
+ <message>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <source>Enter password:</source>
+ <translation>Introdu parola:</translation>
+ </message>
+ <message>
+ <source>Repeat password:</source>
+ <translation>Repetă parola:</translation>
+ </message>
+ <message>
+ <source>&amp;Key file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Răsfoiește</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>Creează</translation>
+ </message>
+ <message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Actualizează</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Fișiere cheie</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Toate fișierele</translation>
+ </message>
+ <message>
+ <source>Create Key File...</source>
+ <translation>Creare fișier cheie...</translation>
+ </message>
+ <message>
+ <source>Unable to create Key File : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select a key file</source>
+ <translation>Selectați un fișier cheie</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>Parolă vidă</translation>
+ </message>
+ <message>
+ <source>Do you really want to use an empty string as password?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Au fost introduse parole diferite.</translation>
+ </message>
+ <message>
+ <source>Failed to set %1 as the Key file:
+%2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Changing master key failed: no YubiKey inserted.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CloneDialog</name>
+ <message>
+ <source>Clone Options</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Replace username and password with references</source>
+ <translation>Înlocuiește numele utilizator și parola cu referințe</translation>
+ </message>
+ <message>
+ <source>Copy history</source>
+ <translation>Copiază istoric</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWidget</name>
+ <message>
+ <source>Import CSV fields</source>
+ <translation>Importă câmpuri CSV</translation>
+ </message>
+ <message>
+ <source>filename</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>size, rows, columns</source>
+ <translation>dimensiune, rânduri, coloane</translation>
+ </message>
+ <message>
+ <source>Encoding</source>
+ <translation>Codificare</translation>
+ </message>
+ <message>
+ <source>Codec</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Text is qualified by</source>
+ <translation>Textul este calificat de</translation>
+ </message>
+ <message>
+ <source>Fields are separated by</source>
+ <translation>Câmpurile sunt separate de</translation>
+ </message>
+ <message>
+ <source>Comments start with</source>
+ <translation>Comentariile încep cu</translation>
+ </message>
+ <message>
+ <source>First record has field names</source>
+ <translation>Prima înregistrare conține denumirile de câmpuri</translation>
+ </message>
+ <message>
+ <source>Number of headers line to discard</source>
+ <translation>Număr de linii antet de eliminat</translation>
+ </message>
+ <message>
+ <source>Consider &apos;\&apos; an escape character</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Preview</source>
+ <translation>Previzualizare</translation>
+ </message>
+ <message>
+ <source>Column layout</source>
+ <translation>Aranjare coloane</translation>
+ </message>
+ <message>
+ <source>Not present in CSV file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty fieldname </source>
+ <translation>Denumire câmp vidă</translation>
+ </message>
+ <message>
+ <source>column </source>
+ <translation>coloană</translation>
+ </message>
+ <message>
+ <source>Imported from CSV file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Original data: </source>
+ <translation>Datele originale: </translation>
+ </message>
+ <message>
+ <source>Error(s) detected in CSV file !</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> more messages skipped]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Eroare</translation>
+ </message>
+ <message>
+ <source>CSV import: writer has errors:
+</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CsvImportWizard</name>
+ <message>
+ <source>Error</source>
+ <translation>Eroare</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nu a putut fi calculată cheia principală</translation>
+ </message>
+</context>
+<context>
+ <name>CsvParserModel</name>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n rând, </numerusform><numerusform>%n rânduri, </numerusform><numerusform>%n rânduri, </numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n coloană</numerusform><numerusform>%n coloane</numerusform><numerusform>%n coloane</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseOpenWidget</name>
+ <message>
+ <source>Enter master key</source>
+ <translation>Introduceți cheia principală</translation>
+ </message>
+ <message>
+ <source>Key File:</source>
+ <translation>Fișier cheie:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Parola:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Răsfoiește</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Actualizează</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Nu pot deschide baza de date.</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Fișierul cheie nu a putut fi deschis</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Toate fișierele</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Fișiere cheie</translation>
+ </message>
+ <message>
+ <source>Select key file</source>
+ <translation>Selectați fișier cheie</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseRepairWidget</name>
+ <message>
+ <source>Repair database</source>
+ <translation>Repară baza de date</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Eroare</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Fișierul cheie nu a putut fi deschis</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Baza de date nu poate fi deschisă.</translation>
+ </message>
+ <message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Success</source>
+ <translation>Succes</translation>
+ </message>
+ <message>
+ <source>The database has been successfully repaired
+You can now save it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to repair the database.</source>
+ <translation>Baza de date nu poate fi reparată.</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidget</name>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (implicit)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>Runde de transformare:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Nume bază de date:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Descriere bază de date:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Nume utilizator implicit:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>Utilizare coÈ™ de gunoi</translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
+ <message>
+ <source>Root</source>
+ <comment>Root group</comment>
+ <translation>Rădăcină</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>Bază de date KeePass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Toate fișierele</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Deschide baza de date</translation>
+ </message>
+ <message>
+ <source>File not found!</source>
+ <translation> Fișierul nu a fost găsit</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Baza de date nu poate fi deschisă.</translation>
+ </message>
+ <message>
+ <source>File opened in read only mode.</source>
+ <translation>Fișier deschis doar pentru citire.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Deschide fișier CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Fișier CSV</translation>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation>Toate fișierele (*)</translation>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation>ÃŽmbina baza de date</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Deschide bază de date KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Bază de date KeePass 1</translation>
+ </message>
+ <message>
+ <source>Close?</source>
+ <translation>ÃŽnchidere?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save changes?</source>
+ <translation>Salvare modificări?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
+ <translation>&quot;%1&quot; a fost modificat.
+Salvați modificările?</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>Parole</translation>
+ </message>
+ <message>
+ <source>Save database as</source>
+ <translation>Salvează bază de date ca</translation>
+ </message>
+ <message>
+ <source>Export database to CSV file</source>
+ <translation>Exportă baza de date în fișier CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Scrierea în fișierul CSV a eșuat.</translation>
+ </message>
+ <message>
+ <source>New database</source>
+ <translation>Bază de date nouă</translation>
+ </message>
+ <message>
+ <source>locked</source>
+ <translation>blocat</translation>
+ </message>
+ <message>
+ <source>Lock database</source>
+ <translation>Blocare bază de date</translation>
+ </message>
+ <message>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseWidget</name>
+ <message>
+ <source>Searching...</source>
+ <translation>Căutare...</translation>
+ </message>
+ <message>
+ <source>Change master key</source>
+ <translation>Modifică cheia principală</translation>
+ </message>
+ <message>
+ <source>Delete entry?</source>
+ <translation>Stergeți intrarea?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Delete entries?</source>
+ <translation>Ștergeți intrările?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete %1 entries for good?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Mutați intrarea în coșul de gunoi?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Move entries to recycle bin?</source>
+ <translation>Mutați intrările în coșul de gunoi?</translation>
+ </message>
+ <message numerus="yes">
+ <source>Do you really want to move %n entry(s) to the recycle bin?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Execute command?</source>
+ <translation>Executați comanda?</translation>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>Èšine minte alegerea mea</translation>
+ </message>
+ <message>
+ <source>Delete group?</source>
+ <translation>Ștergeți grupul?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nu a putut fi calculată cheia principală</translation>
+ </message>
+ <message>
+ <source>No current database.</source>
+ <translation>Nu există o bază de date curentă.</translation>
+ </message>
+ <message>
+ <source>No source database, nothing to do.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search Results (%1)</source>
+ <translation>Rezultatele căutării (%1)</translation>
+ </message>
+ <message>
+ <source>No Results</source>
+ <translation>Nu sunt rezultate</translation>
+ </message>
+ <message>
+ <source>File has changed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge Request</source>
+ <translation>Cerere îmbinare</translation>
+ </message>
+ <message>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty recycle bin?</source>
+ <translation>Goliți coșul de gunoi?</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Generează token TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>ÃŽnchide</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Expirare</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nume utilizator</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Căutare</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Atribute</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Atașamente</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notițe</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Fereastră</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Secvență</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Caută</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Golește</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Niciodată</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEJAT]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Dezactivat</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Activat</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidget</name>
+ <message>
+ <source>Entry</source>
+ <translation>Intrare</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avansat</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>Proprietăți</translation>
+ </message>
+ <message>
+ <source>History</source>
+ <translation>Istoric</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nu se aplică</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(criptat)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Selectați cheia privată</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Fișier prea mare pentru a fi cheie privată</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Deschiderea cheii private a eșuat</translation>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation>Istoric intrare</translation>
+ </message>
+ <message>
+ <source>Add entry</source>
+ <translation>Adaugă intrare</translation>
+ </message>
+ <message>
+ <source>Edit entry</source>
+ <translation>Editează intrare</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Au fost introduse parole diferite.</translation>
+ </message>
+ <message>
+ <source>New attribute</source>
+ <translation>Atribut nou</translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirmați înlăturarea</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Sigur doriți să eliminați acest atribut?</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[PROTEJAT]</translation>
+ </message>
+ <message>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Tomorrow</source>
+ <translation>Mâine</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation><numerusform>%n săptămână</numerusform><numerusform>%n săptămâni</numerusform><numerusform>%n săptămâni</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n month(s)</source>
+ <translation><numerusform>%n lună</numerusform><numerusform>%n luni</numerusform><numerusform>%n luni</numerusform></translation>
+ </message>
+ <message>
+ <source>1 year</source>
+ <translation>1 an</translation>
+ </message>
+ <message>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAdvanced</name>
+ <message>
+ <source>Additional attributes</source>
+ <translation>Atribute adiționale</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Adaugă</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation> Înlătură</translation>
+ </message>
+ <message>
+ <source>Edit Name</source>
+ <translation>Editează nume</translation>
+ </message>
+ <message>
+ <source>Protect</source>
+ <translation>Protejează</translation>
+ </message>
+ <message>
+ <source>Reveal</source>
+ <translation>Dezvăluie</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Atașamente</translation>
+ </message>
+ <message>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
+ <message>
+ <source>Enable Auto-Type for this entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Use custom Auto-Type sequence:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Window Associations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Titlu fereastră:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetHistory</name>
+ <message>
+ <source>Show</source>
+ <translation> Arată</translation>
+ </message>
+ <message>
+ <source>Restore</source>
+ <translation>Restaurează</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>Șterge</translation>
+ </message>
+ <message>
+ <source>Delete all</source>
+ <translation>Șterge toate</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetMain</name>
+ <message>
+ <source>URL:</source>
+ <translation>URL:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Parola:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>Repetă:</translation>
+ </message>
+ <message>
+ <source>Title:</source>
+ <translation>Titlu:</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notițe</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation>Presetări</translation>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Nume utilizator:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expiră</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>De la</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>secunde</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Cheie publică</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Comentariu</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Decriptează</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>nu se aplică</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copiază în clipboard</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Cheie privată</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Fișier extern</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Răsfoiește...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Atașament</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Adaugă în agent</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Elimină din agent</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidget</name>
+ <message>
+ <source>Group</source>
+ <translation>Grup</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>Proprietăți</translation>
+ </message>
+ <message>
+ <source>Add group</source>
+ <translation>Adaugă grup</translation>
+ </message>
+ <message>
+ <source>Edit group</source>
+ <translation>Editează grup</translation>
+ </message>
+ <message>
+ <source>Enable</source>
+ <translation>Activează</translation>
+ </message>
+ <message>
+ <source>Disable</source>
+ <translation>Dezactivează</translation>
+ </message>
+ <message>
+ <source>Inherit from parent group (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidgetMain</name>
+ <message>
+ <source>Name</source>
+ <translation>Nume</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notițe</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expiră</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Caută</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Use default Auto-Type sequence of parent group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set default Auto-Type se&amp;quence</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditWidgetIcons</name>
+ <message>
+ <source>&amp;Use default icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add custom icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Delete custom icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Download favicon</source>
+ <translation>Descarcă favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Images</source>
+ <translation>Imagini</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Toate fișierele</translation>
+ </message>
+ <message>
+ <source>Select Image</source>
+ <translation>Selectați imagine</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Custom icon already exists</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm Delete</source>
+ <translation>Confirmați ștergerea</translation>
+ </message>
+ <message>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditWidgetProperties</name>
+ <message>
+ <source>Created:</source>
+ <translation>Creat:</translation>
+ </message>
+ <message>
+ <source>Modified:</source>
+ <translation>Modificat:</translation>
+ </message>
+ <message>
+ <source>Accessed:</source>
+ <translation>Accesat:</translation>
+ </message>
+ <message>
+ <source>Uuid:</source>
+ <translation>Uuid:</translation>
+ </message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation> Înlătură</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Entry</name>
+ <message>
+ <source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nume</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Adaugă</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation> Înlătură</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Deschide</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Salvează</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Selectați fișierele</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Confirmați înlăturarea</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Salvați atașamentele</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confirmați suprascrierea</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttributesModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Nume</translation>
+ </message>
+</context>
+<context>
+ <name>EntryHistoryModel</name>
+ <message>
+ <source>Last modified</source>
+ <translation>Ultima modificare</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titlu</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nume utilizator</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+</context>
+<context>
+ <name>EntryModel</name>
+ <message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref: </translation>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Grup</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titlu</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nume utilizator</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Niciodată</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notițe</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expiră</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Atașamente</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Group</name>
+ <message>
+ <source>Recycle Bin</source>
+ <translation>CoÈ™ de gunoi</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>HttpPasswordGeneratorWidget</name>
+ <message>
+ <source>Length:</source>
+ <translation>Lungime:</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Tipuri de caractere</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>Litere mari</translation>
+ </message>
+ <message>
+ <source>A-Z</source>
+ <translation>A-Z</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>Litere mici</translation>
+ </message>
+ <message>
+ <source>a-z</source>
+ <translation>a-z</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>Numere</translation>
+ </message>
+ <message>
+ <source>0-9</source>
+ <translation>0-9</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>Caractere speciale</translation>
+ </message>
+ <message>
+ <source>/*_&amp; ...</source>
+ <translation>/*_&amp; ...</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>Exclude caractere asemănătoare</translation>
+ </message>
+ <message>
+ <source>Ensure that the password contains characters from every group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KMessageWidget</name>
+ <message>
+ <source>&amp;Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close message</source>
+ <translation>ÃŽnchide mesaj</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nu a putut fi calculată cheia principală</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Cheie greșită sau fișier bază de date corupt.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nu a putut fi calculată cheia principală</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nu a putut fi calculată cheia principală</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nu a putut fi calculată cheia principală</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Nu este o bază de date KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Nu pot deschide baza de date.</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation>Fișierul cheie nu poate fi citit.</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Nu este o bază de date KeePass.</translation>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation>Algoritm criptare nesuportat.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation>Versiune bază de date KeePass nesuportată.</translation>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation>Rădăcină</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Nu a putut fi calculată cheia principală</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Cheie greșită sau fișier bază de date corupt.</translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Eroare</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation>Îmbină dintr-o bază de date KeePass</translation>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sa&amp;ve database as...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Change &amp;master key...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation>Setări bază de date</translation>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation>&amp;Setări</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Generator de parole</translation>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;URL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Notes</source>
+ <translation>&amp;Notițe</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation>Importă bază de date KeePass 1...</translation>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation>Importă fișier CSV...</translation>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Golește istoric</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Setări</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>Bază de date KeePass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Toate fișierele</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Deschide baza de date</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Salvează bază de date reparată</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
+ <message>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to read public key.</source>
+ <translation>Citirea cheii publice a eșuat.</translation>
+ </message>
+ <message>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Actvați serverul KeePassHTTP</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Generator de parole</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avansat</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Port HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Port implicit: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Parola:</translation>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>putere</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropie</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Parolă</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Tipuri de caractere</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>Litere mari</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>Litere mici</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>Numere</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>Caractere speciale</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>Exclude caractere asemănătoare</translation>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation>Alegeți caractere din fiecare grup</translation>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>&amp;Lungime:</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>Număr cuvinte:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Separator cuvinte:</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>Generează</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Copiază</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Acceptă</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>ÃŽnchide</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>Aplică</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation>Entropie: %1 bit</translation>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation>Calitate parolă: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>Inacceptabil</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>Slab</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>Bun</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>Excelent</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Adaugă o intrare nouă în baza de date.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Calea către baza de date.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Fișier cheie al bazei de date.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>cale</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>nume utilizator</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Lungimea parolei generate.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>lungime</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Editați o intrare.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Titlu pentru intrare.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>titlu</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Calea bazei de date pentru extragere.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Comenzi disponibile:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Numele comenzii de executat.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Termen de căutare.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>ÃŽmbina doua baze de date</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>atribut</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation>fișier vid!
+</translation>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>missing closing quote</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Grup</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titlu</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Nume utilizator</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Parolă</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notițe</translation>
+ </message>
+ <message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation>Integrare cu browserul</translation>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation>Apasă</translation>
+ </message>
+ <message>
+ <source>Passive</source>
+ <translation>Pasiv</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>Agent SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor</name>
+ <message>
+ <source>Internal zlib error when compressing: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error writing to underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error opening underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error reading data from underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error when decompressing: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
+ <message>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error: </source>
+ <translation>Eroare internă zlib:</translation>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation>Caută...</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Caută</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Golește</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Limit search to selected group</source>
+ <translation>Limitați căutarea la grupul selectat</translation>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Anulează</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <source>Application Settings</source>
+ <translation>Setări aplicație</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation>Securitate</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetGeneral</name>
+ <message>
+ <source>Basic Settings</source>
+ <translation>Setări de bază</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember last databases</source>
+ <translation>Memorează ultimele baze de date</translation>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically save on exit</source>
+ <translation>Salvare automată la ieșire</translation>
+ </message>
+ <message>
+ <source>Automatically save after every change</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize when copying to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use group icon on entry creation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray when minimized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Language</source>
+ <translation>Limbă</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always ask before performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Global Auto-Type shortcut</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation> ms</translation>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetSecurity</name>
+ <message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear clipboard after</source>
+ <translation>Golește clipboard după</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation> sec</translation>
+ </message>
+ <message>
+ <source>Lock databases after inactivity of</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Convenience</source>
+ <translation>Comoditate</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases after minimizing the window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t require password repeat when it is visible</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show passwords in cleartext by default</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide passwords in the preview panel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide entry notes by default</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation>Confidențialitate</translation>
+ </message>
+ <message>
+ <source>Use Google as fallback for downloading website icons</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SetupTotpDialog</name>
+ <message>
+ <source>Setup TOTP</source>
+ <translation>Configurați TOTP</translation>
+ </message>
+ <message>
+ <source>Key:</source>
+ <translation>Cheie:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Setări implicite token RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Setări token Steam</translation>
+ </message>
+ <message>
+ <source>Use custom settings</source>
+ <translation>Utilizați setările personalizate</translation>
+ </message>
+ <message>
+ <source>Note: Change these settings only if you know what you are doing.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Time step:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>8 digits</source>
+ <translation>8 cifre</translation>
+ </message>
+ <message>
+ <source>6 digits</source>
+ <translation>6 cifre</translation>
+ </message>
+ <message>
+ <source>Code size:</source>
+ <translation>Dimensiune cod:</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation> sec</translation>
+ </message>
+</context>
+<context>
+ <name>TotpDialog</name>
+ <message>
+ <source>Timed Password</source>
+ <translation>Parolă temporizată</translation>
+ </message>
+ <message>
+ <source>000000</source>
+ <translation>000000</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Copiază</translation>
+ </message>
+ <message>
+ <source>Expires in</source>
+ <translation>Expiră în</translation>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation>secunde</translation>
+ </message>
+</context>
+<context>
+ <name>UnlockDatabaseWidget</name>
+ <message>
+ <source>Unlock database</source>
+ <translation>Deblocare bază de date</translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWidget</name>
+ <message>
+ <source>Start storing your passwords securely in a KeePassXC database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Create new database</source>
+ <translation>Creează o bază de date nouă</translation>
+ </message>
+ <message>
+ <source>Open existing database</source>
+ <translation>Deschide bază de date existentă</translation>
+ </message>
+ <message>
+ <source>Import from KeePass 1</source>
+ <translation>Importă din KeePass 1</translation>
+ </message>
+ <message>
+ <source>Import from CSV</source>
+ <translation>Importă din CSV</translation>
+ </message>
+ <message>
+ <source>Recent databases</source>
+ <translation>Baze de date recente</translation>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>main</name>
+ <message>
+ <source>Remove an entry from the database.</source>
+ <translation>Eliminați o intrare din baza de date.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Calea către baza de date</translation>
+ </message>
+ <message>
+ <source>Path of the entry to remove.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path to a custom config file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>key file of the database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read password of the database from stdin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_ru.ts b/share/translations/keepassx_ru.ts
index 3058bcf14..1b3b327fc 100644
--- a/share/translations/keepassx_ru.ts
+++ b/share/translations/keepassx_ru.ts
@@ -10,14 +10,30 @@
<translation>О программе</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Сообщать об ошибках: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC раÑпроÑтранÑетÑÑ Ð½Ð° уÑловиÑÑ… Стандартной общеÑтвенной лицензии GNU (GPL) верÑии 2 или (на ваше уÑмотрение) верÑии 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
- <translation>УчаÑтники</translation>
+ <translation>Ðвторы</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;ПоÑмотреть вклад на GitHub&lt;/a&gt;</translation>
</message>
<message>
<source>Debug Info</source>
<translation>ÐžÑ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Включите Ñледующую информацию, когда Ñообщаете об ошибке:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Скопировать в буфер обмена</translation>
</message>
@@ -32,6 +48,10 @@
<translation>РевизиÑ: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>ДиÑтрибутив: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Библиотеки:</translation>
</message>
@@ -48,33 +68,27 @@ Kernel: %3 %4</source>
<translation>Включенные раÑширениÑ:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Сообщать об ошибках: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC раÑпроÑтранÑетÑÑ Ð½Ð° уÑловиÑÑ… Стандартной общеÑтвенной лицензии GNU (GPL) верÑии 2 или (на ваше уÑмотрение) верÑии 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
- <translation>Сопровождающие проекта:</translation>
+ <translation>Проект Ñопровождают:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;ПоÑмотреть вклад на GitHub&lt;/a&gt;</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Команда KeePassXC выражает оÑобую благодарноÑÑ‚ÑŒ debfx за Ñоздание оригинального KeePassX.</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Включите Ñледующую информацию, когда Ñообщаете об ошибке:</translation>
- </message>
- <message>
- <source>Distribution: %1</source>
- <translation>ДиÑтрибутив: %1</translation>
+ <source>Build Type: %1
+</source>
+ <translation>Тип Ñборки: %1
+</translation>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>Подтверждение доÑтупа к KeePassXC HTTP</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Запомнить Ñто решение</translation>
</message>
@@ -92,9 +106,12 @@ Please select whether you want to allow access.</source>
<translation>%1 запроÑил доÑтуп к паролÑм Ð´Ð»Ñ Ñледующего Ñлемента(ов).
Разрешить доÑтуп?</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>Подтверждение доÑтупа к KeePassXC HTTP</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Включить SSH агент (необходим перезапуÑк)</translation>
</message>
</context>
<context>
@@ -107,6 +124,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation>Ðвтоввод - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Ðвтоввод</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð²Ð¾Ð´Ð°!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Слишком Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ° в инÑтрукции автоввода. ДейÑтвительно продолжить?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð²Ð¾Ð´Ð° Ñодержит очень медленные Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ. Ð’Ñ‹ дейÑтвительно хотите продолжить?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Эта команда автоввода Ñодержит чаÑто повторÑющиеÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹. Ð’Ñ‹ дейÑтвительно хотите продолжить?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +161,318 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Группа</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Ð˜Ð¼Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>ПоÑледовательноÑÑ‚ÑŒ</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Ðвтоввод - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Выберите запиÑÑŒ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð²Ð¾Ð´Ð°:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Ðвтоввод - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>Подтверждение доÑтупа Ð´Ð»Ñ KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Запомнить Ñто решение</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Разрешить</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Запретить</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 запроÑил доÑтуп к паролÑм Ð´Ð»Ñ Ñледующего Ñлемента(-ов).
+Разрешить доÑтуп?</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Диалог</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Это требуетÑÑ Ð´Ð»Ñ Ð´Ð¾Ñтупа к вашим базам данных при иÑпользовании KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Включить интеграцию Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð¾Ð¼</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Общие</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Включить интеграцию Ð´Ð»Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð¾Ð²:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Показывать &amp;уведомление при запроÑе учётных данных</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Запрашивать разблокировку базы данных, еÑли она заблокирована</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Возвращать запиÑи только при ÑоответÑтвии протокола (http://, https://,...).</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;ПроверÑÑ‚ÑŒ Ñовпадение Ñхем Ð´Ð»Ñ URL-адреÑов (например: https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Возвращать при поиÑке по URL только лучшие ÑовпадениÑ, а не вÑе запиÑи Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð°.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Возвращать только наиболее подходÑщие ÑовпадениÑ</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Сортировать &amp;подходÑщие учетные данные по названию</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Сортировать по &amp;имени пользователÑ</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Отключить вÑе браузеры</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Забыть вÑе &amp;разрешениÑ</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Дополнительные</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ðе &amp;запрашивать доÑтуп к запиÑÑм</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ðикогда не Ñпрашивать перед &amp;обновлением учетных данных</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>К клиенту должна быть подключена только Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>&amp;ПоиÑк во вÑех открытых базах данных Ð´Ð»Ñ ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ñ‹Ñ… данных</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>ÐвтоматичеÑкое Ñоздание или обновление полей, Ñодержащих Ñтроки, не поддерживаетÑÑ.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Возвращать дополнительные Ñтро&amp;ковые полÑ, начинающиеÑÑ Ñ &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>ÐвтоматичеÑки обновлÑÑ‚ÑŒ пути к ÑценариÑм механизма native messaging при запуÑке KeePassXC или keepassxc-proxy.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>ОбновлÑÑ‚ÑŒ при запуÑке файлы манифеÑта механизма &amp;native messaging</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Поддержка прокÑи Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ KeePassXC и раÑширением браузера.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>ИÑпользование &amp;прокÑи Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ KeePassXC и раÑширением браузера</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>ИÑпользовать пользовательÑкий путь к прокÑи, еÑли вы уÑтановили прокÑи вручную.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>ИÑпользовать &amp;пользовательÑкое меÑтоположение прокÑи</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Обзор...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Предупреждение:&lt;/b&gt; Следующие параметры могут быть опаÑны!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>ИÑполнÑемые файлы (*.exe);;Ð’Ñе файлы (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>ИÑполнÑемые файлы (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Выбрать другое раÑположение прокÑи</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>Извините, но KeePassXC-Browser не поддерживаетÑÑ Ð´Ð»Ñ Snap выпуÑков на данный момент.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° аÑÑоциацию нового ключа</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° аÑÑоциацию вышеуказанного ключа.
+
+ЕÑли хотите разрешить доÑтуп к базе данных KeePassXC,
+дайте ему уникальное имÑ, чтобы раÑпознать и принÑÑ‚ÑŒ ключ.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Сохранить и разрешить доÑтуп</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: ПерезапиÑать ÑущеÑтвующий ключ?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>РазделÑемый Ñекретный ключ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ &quot;%1&quot; уже ÑущеÑтвует.
+Ð’Ñ‹ дейÑтвительно хотите перезапиÑать его?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Обновить запиÑÑŒ</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Обновить информацию в %1 — %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: База данных заблокирована!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных заблокирована!
+Разблокируйте выбранную базу данных или выберите другую, незаблокированную.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Параметры недоÑтупны!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Ð’ базе данных отÑутÑтвует запиÑÑŒ Ñ Ð½Ð°Ñтройками.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Ключи не найдены</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>РазделÑемые Ñекретные ключи не найдены в наÑтройках KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Ключи удалены из базы данных</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation><numerusform>УÑпешно удален %n ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· параметров KeePassXC.</numerusform><numerusform>УÑпешно удалено %n ключей ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· параметров KeePassXC.</numerusform><numerusform>УÑпешно удалено %n ключей ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· параметров KeePassXC.</numerusform><numerusform>УÑпешно удалено %n ключей ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· параметров KeePassXC.</numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Удаление Ñохраненных разрешений...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Прервать</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Права доÑтупа удалены</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑи.</numerusform><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑей.</numerusform><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑей.</numerusform><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑей.</numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Ðе найдена запиÑÑŒ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ доÑтупа!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных не Ñодержит запиÑей Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ‹Ð¼Ð¸ правами доÑтупа.</translation>
</message>
</context>
<context>
@@ -149,6 +490,10 @@ Please select whether you want to allow access.</source>
<translation>Повторите пароль:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Ключ-файл</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Обзор</translation>
</message>
@@ -157,6 +502,14 @@ Please select whether you want to allow access.</source>
<translation>Создать</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Обновить</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Файлы-ключи</translation>
</message>
@@ -166,19 +519,23 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Create Key File...</source>
- <translation>Создать файл-ключ...</translation>
+ <translation>Создать ключ-файл...</translation>
</message>
<message>
<source>Unable to create Key File : </source>
- <translation>Ðевозможно Ñоздать файл-ключ:</translation>
+ <translation>Ðевозможно Ñоздать ключ-файл:</translation>
</message>
<message>
<source>Select a key file</source>
- <translation>Выбрать файл-ключ</translation>
+ <translation>Выбрать ключ-файл</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>ПуÑтой пароль</translation>
</message>
<message>
<source>Do you really want to use an empty string as password?</source>
- <translation>ИÑпользовать в качеÑтве Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿ÑƒÑтую Ñтроку?</translation>
+ <translation>Ð’Ñ‹ дейÑтвительно хотите иÑпользовать в качеÑтве Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿ÑƒÑтую Ñтроку?</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -191,20 +548,17 @@ Please select whether you want to allow access.</source>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Файл-&amp;ключ</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Обновить</translation>
+ <source>Legacy key file format</source>
+ <translation>УÑтаревший формат ключевого файла</translation>
</message>
<message>
- <source>Empty password</source>
- <translation>ПуÑтой пароль</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Ð’Ñ‹ иÑпользуете уÑтаревший формат ключевого файла, поддержка которого может быть прекращена в будущем.
+
+РаÑÑмотрите возможноÑÑ‚ÑŒ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ключевого файла.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +572,10 @@ Please select whether you want to allow access.</source>
<translation>Параметры клонированиÑ</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Добавить к названию « - клон»</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>ИÑпользовать ÑÑылки Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ паролÑ</translation>
</message>
@@ -225,10 +583,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>ИÑÑ‚Ð¾Ñ€Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Добавить к названию « - клон»</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -242,7 +596,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>size, rows, columns</source>
- <translation>Размер, Ñтроки, Ñтолбцы</translation>
+ <translation>размер, Ñтрок, Ñтолбцов</translation>
</message>
<message>
<source>Encoding</source>
@@ -326,10 +680,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Импорт CSV-файла</translation>
- </message>
- <message>
<source>Error</source>
<translation>Ошибка</translation>
</message>
@@ -340,17 +690,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> байт, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n байт, </numerusform><numerusform>%n байт(а), </numerusform><numerusform>%n байт(а), </numerusform><numerusform>%n байт(а), </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> Ñтрок, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n Ñтрока, </numerusform><numerusform>%n Ñтрок, </numerusform><numerusform>%n Ñтрок, </numerusform><numerusform>%n Ñтрок, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> Ñтолбцов</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n Ñтолбец</numerusform><numerusform>%n Ñтолбцов</numerusform><numerusform>%n Ñтолбцов</numerusform><numerusform>%n Ñтолбцов</numerusform></translation>
</message>
</context>
<context>
@@ -361,7 +711,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Key File:</source>
- <translation>Файл-ключ:</translation>
+ <translation>Ключ-файл:</translation>
</message>
<message>
<source>Password:</source>
@@ -372,12 +722,37 @@ Please select whether you want to allow access.</source>
<translation>Обзор</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Обновить</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Ðевозможно открыть базу данных.</translation>
</message>
<message>
<source>Can&apos;t open key file</source>
- <translation>Ðе могу открыть файл-ключ</translation>
+ <translation>Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ ключ-файл</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>УÑтаревший формат ключевого файла</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Ð’Ñ‹ иÑпользуете уÑтаревший формат ключевого файла, поддержка которого может быть прекращена в будущем.
+
+РаÑÑмотрите возможноÑÑ‚ÑŒ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ключевого файла.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Ðе показывать Ñто предупреждение</translation>
</message>
<message>
<source>All files</source>
@@ -385,20 +760,12 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Key files</source>
- <translation>Файлы-ключи</translation>
+ <translation>Ключ-файлы</translation>
</message>
<message>
<source>Select key file</source>
<translation>Выберите файл-ключ</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Обновить</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +782,14 @@ Please select whether you want to allow access.</source>
<translation>Ðе могу открыть файл-ключ</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>База данных открылоÑÑŒ прекраÑно. Больше нечего делать.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Ðевозможно открыть базу данных.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>База данных открылоÑÑŒ прекраÑно. Больше нечего делать.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>УÑпешно</translation>
</message>
@@ -440,58 +807,153 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Ðазвание базы данных:</translation>
+ <source>General</source>
+ <translation>Общие</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>ОпиÑание базы данных:</translation>
+ <source>Encryption</source>
+ <translation>Шифрование</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Слишком много раундов</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>ИÑпользуетÑÑ Ñлишком большое количеÑтво раундов Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° Argon2.
+
+При Ñохранении Ñтого значение открытие базы данных может занÑÑ‚ÑŒ чаÑÑ‹ или дни (или даже больше)!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>ПонÑтно, Ñохранить значение</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Слишком мало раундов</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Ð’Ñ‹ иÑпользуете Ñлишком мало раундов Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° AES-KDF.
+
+При Ñохранении Ñтого значениÑ, база данных может быть взломана Ñлишком легко!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>ФФК не изменена</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Ошибка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¤Ð¤Ðš Ñ Ð½Ð¾Ð²Ñ‹Ð¼Ð¸ параметрами; ФФК не изменена.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation><numerusform>МиБ</numerusform><numerusform>МиБ</numerusform><numerusform>МиБ</numerusform><numerusform>МиБ</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation><numerusform> поток</numerusform><numerusform>потоков</numerusform><numerusform>потоков</numerusform><numerusform>поток(ов)</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Ðлгоритм шифрованиÑ:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 бит (по умолчанию)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 бит</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð°:</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>Раундов преобразований:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ умолчанию:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>ТеÑÑ‚ 1-Ñекундной задержки</translation>
</message>
<message>
- <source> MiB</source>
- <translation>МиБ</translation>
+ <source>Memory Usage:</source>
+ <translation>ИÑпользование памÑти:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>Параллелизм:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Метаданные базы данных</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Ðазвание базы данных:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>ОпиÑание базы данных:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ умолчанию:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>Проверка</translation>
+ <source>History Settings</source>
+ <translation>ÐаÑтройки иÑтории</translation>
</message>
<message>
<source>Max. history items:</source>
- <translation>МакÑимум запиÑей иÑтории:</translation>
+ <translation>МакÑ. количеÑтво запиÑей иÑтории:</translation>
</message>
<message>
<source>Max. history size:</source>
<translation>МакÑимальный размер иÑтории:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>ИÑпользовать корзину</translation>
+ <source> MiB</source>
+ <translation>МиБ</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 бит (по умолчанию)</translation>
+ <source>Use recycle bin</source>
+ <translation>ИÑпользовать корзину</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 бит</translation>
+ <source>Additional Database Settings</source>
+ <translation>Дополнительные параметры базы данных</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Ðлгоритм:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Включить &amp;Ñжатие (рекомендуетÑÑ)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Корень</translation>
</message>
<message>
@@ -511,22 +973,48 @@ You can now save it.</source>
<translation>Файл не найден!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Открыть базу данных KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ базу данных.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>База данных KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Файл открыт в режиме только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Открыть файл CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Файл CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Ð’Ñе файлы (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Объединить базу данных</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Открыть базу данных KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>База данных KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Закрыть?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>«%1» в режиме правки.
+Отменить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ вÑÑ‘ равно закрыть?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Сохранить изменениÑ?</translation>
</message>
@@ -541,10 +1029,22 @@ Save changes?</source>
<translation>Ðе удалоÑÑŒ запиÑать базу данных.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Пароли</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Сохранить базу данных как</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>ЭкÑпортировать базу данных в файл CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Ðе удалоÑÑŒ запиÑать CSV файл.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>ÐÐ¾Ð²Ð°Ñ Ð±Ð°Ð·Ð° данных</translation>
</message>
@@ -563,12 +1063,6 @@ Please press cancel to finish your changes or discard them.</source>
Ðажмите Отмена, чтобы завершить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ отклонить их.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Эта база данных никогда не была Ñохранена.
-Можно Ñохранить базу данных или оÑтановить её заблокированной.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,69 +1071,23 @@ Otherwise your changes are lost.</source>
Ð’ противном Ñлучае вÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>«%1» в режиме правки.
-Отменить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ вÑÑ‘ равно закрыть?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>ЭкÑпортировать базу данных в файл CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>Файл CSV</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Ðе удалоÑÑŒ запиÑать CSV файл.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ базу данных.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Объединить базу данных</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>База данных, в которую пытаетеÑÑŒ Ñохранить, заблокирована другим ÑкземплÑром KeePassXC.
-Сохранить в любом Ñлучае?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>Пароли</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>База данных уже открыта</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>База данных, которую пытаетеÑÑŒ открыть, заблокирована другим ÑкземплÑром KeePassXC.
-
-Открыть в любом Ñлучае?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Открыть в режиме «только чтение»</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Файл открыт в режиме только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.</translation>
+ <source>Disable safe saves?</source>
+ <translation>Отключить безопаÑное Ñохранение?</translation>
</message>
<message>
- <source>Open CSV file</source>
- <translation>Открыть файл CSV</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC не удалоÑÑŒ Ñохранить базу данных неÑколько раз. Это могло быть вызвано Ñлужбами Ñинхронизации файлов, выполнÑющими блокировку ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°.
+Отключить безопаÑное Ñохранение и повторить попытку?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>ПоиÑк...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Изменить маÑтер-пароль</translation>
</message>
@@ -660,6 +1108,14 @@ Do you want to open it anyway?</source>
<translation>Удалить навÑегда %1 запиÑей?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>ПеремеÑтить запиÑÑŒ в корзину?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>ПеремеÑтить запиÑÑŒ «%1» в корзину?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>ПомеÑтить запиÑи в корзину?</translation>
</message>
@@ -668,28 +1124,28 @@ Do you want to open it anyway?</source>
<translation><numerusform>Ð’Ñ‹ дейÑтвительно хотите помеÑтить %n запиÑÑŒ в корзину?</numerusform><numerusform>Ð’Ñ‹ дейÑтвительно хотите помеÑтить %n запиÑи в корзину?</numerusform><numerusform>Ð’Ñ‹ дейÑтвительно хотите помеÑтить %n запиÑей в корзину?</numerusform><numerusform>Ð’Ñ‹ дейÑтвительно хотите помеÑтить %n запиÑей в корзину?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Удалить группу?</translation>
+ <source>Execute command?</source>
+ <translation>Выполнить команду?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Удалить навÑегда группу «%1»?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Выполнить Ñледующую команду?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
+ <source>Remember my choice</source>
+ <translation>Запомнить мой выбор</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>ПеремеÑтить запиÑÑŒ в корзину?</translation>
+ <source>Delete group?</source>
+ <translation>Удалить группу?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>ПеремеÑтить запиÑÑŒ «%1» в корзину?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Удалить навÑегда группу «%1»?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>ПоиÑк...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
</message>
<message>
<source>No current database.</source>
@@ -708,20 +1164,8 @@ Do you want to open it anyway?</source>
<translation>Ðет результатов</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Выполнить команду?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Выполнить Ñледующую команду?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Запомнить мой выбор</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° автозагрузку</translation>
+ <source>File has changed</source>
+ <translation>Файл был изменен</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -732,8 +1176,10 @@ Do you want to open it anyway?</source>
<translation>Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Файл базы данных изменилÑÑ, а также приÑутÑтвуют неÑохранённые изменениÑ. Объединить изменениÑ?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>База данных была изменена, а также приÑутÑтвуют неÑохраненные изменениÑ.
+Ð’Ñ‹ хотите объединить изменениÑ?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -749,6 +1195,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Генерировать TOTP токен</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Закрыть</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Общие</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL-адреÑ</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Срок дейÑтвиÑ</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>Ðвтоввод</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>ПоиÑк</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Ðтрибуты</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>ВложениÑ</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>ПримечаниÑ</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Окно</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>ПоÑледовательноÑÑ‚ÑŒ</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>ПоиÑк</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>ОчиÑтить</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Ðикогда</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[ЗÐЩИЩЕÐÐЫЙ]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Отключено</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Включено</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -775,6 +1304,30 @@ Do you want to open it anyway?</source>
<translation>ИÑториÑ</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH Ðгент</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>н/д</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(зашифровано)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Выберите закрытый ключ</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Слишком большой файл закрытого ключа</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Ðе удалоÑÑŒ открыть закрытый ключ</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
</message>
@@ -795,22 +1348,20 @@ Do you want to open it anyway?</source>
<translation>Ðовый атрибут</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Выбрать файл</translation>
+ <source>Confirm Remove</source>
+ <translation>Подтверждение удалениÑ</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Ðевозможно открыть файл</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Удалить Ñтот атрибут?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Сохранить вложение</translation>
+ <source>[PROTECTED]</source>
+ <translation>[ЗÐЩИЩЕÐÐЫЙ]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Ðевозможно Ñохранить вложение:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>Ðажмите Показать Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра или редактированиÑ</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -829,20 +1380,16 @@ Do you want to open it anyway?</source>
<translation>1 год</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Подтверждение удалениÑ</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Удалить Ñтот атрибут?</translation>
+ <source>Apply generated password?</source>
+ <translation>Применить Ñгенерированный пароль?</translation>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[Защищён] Ðажмите Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ñ€Ð¾Ñмотра или правки</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Ð’Ñ‹ дейÑтвительно хотите применить Ñгенерированный пароль к Ñтой запиÑи?</translation>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Удалить Ñто вложение?</translation>
+ <source>Entry updated successfully.</source>
+ <translation>ЗапиÑÑŒ уÑпешно обновлена.</translation>
</message>
</context>
<context>
@@ -860,18 +1407,6 @@ Do you want to open it anyway?</source>
<translation>Удалить</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>ВложениÑ</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Сохранить</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Открыть</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Изменить имÑ</translation>
</message>
@@ -883,24 +1418,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>Открытие</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Включить автоввод Ð´Ð»Ñ Ñтой запиÑи</translation>
+ <source>Attachments</source>
+ <translation>ВложениÑ</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation>Цвет переднего плана:</translation>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation>Цвет фона:</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Заголовок окна:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Включить автоввод Ð´Ð»Ñ Ñтой запиÑи</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -911,16 +1446,24 @@ Do you want to open it anyway?</source>
<translation>ИÑпользовать Ñво&amp;ÑŽ поÑледовательноÑÑ‚ÑŒ автоввода:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>ИÑпользовать Ñтан&amp;дартную поÑледовательноÑÑ‚ÑŒ</translation>
+ <source>Window Associations</source>
+ <translation>ÐÑÑоциации окон</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>УÑтановить Ñво&amp;ÑŽ поÑледовательноÑÑ‚ÑŒ:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>ÐÑÑоциации окон</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Заголовок окна:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>ИÑпользовать Ñпециальную поÑледовательноÑÑ‚ÑŒ Ð´Ð»Ñ Ñтой аÑÑоциации:</translation>
</message>
</context>
<context>
@@ -945,12 +1488,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Ðазвание:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:</translation>
+ <source>URL:</source>
+ <translation>ÐдреÑ:</translation>
</message>
<message>
<source>Password:</source>
@@ -961,20 +1500,104 @@ Do you want to open it anyway?</source>
<translation>Пароль ещё раз:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>ÐдреÑ:</translation>
+ <source>Title:</source>
+ <translation>Ðазвание:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>ИÑтекает</translation>
+ <source>Notes</source>
+ <translation>ПримечаниÑ</translation>
</message>
<message>
<source>Presets</source>
<translation>ПредуÑтановки</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>ПримечаниÑ:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>УÑтановите Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° примечаний.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>ИÑтекает</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Убрать ключ из агента через</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> Ñекунд</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Отпечаток</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Убрать ключ из агента при закрытии/блокировании базы данных</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Открытый ключ</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Добавить ключ в агент, поÑле открытиÑ/разблокировки базы данных</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Комментарий</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>РаÑшифровать</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>н/д</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Скопировать в буфер обмена</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Закрытый ключ</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Внешний файл</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Обзор...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Вложение</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Добавить в агент</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Убрать из агента</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Требовать Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, когда Ñтот ключ иÑпользуетÑÑ</translation>
</message>
</context>
<context>
@@ -1046,6 +1669,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>ИÑпользовать Ñ&amp;тандартный значок</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>ИÑпользовать Ñв&amp;ой значок</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Добавить Ñвой значок</translation>
</message>
@@ -1054,6 +1685,18 @@ Do you want to open it anyway?</source>
<translation>Удалить Ñвой значок</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Скачать значок Ñайта</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Ðе удалоÑÑŒ получить значок.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>ПодÑказка: в качеÑтве резервного варианта Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ¾Ð² Ñайтов возможно иÑпользовать Google. Включите Ñтот параметр в меню «ИнÑтрументы» -&gt; «ÐаÑтройки» -&gt; «БезопаÑноÑть»</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>ИзображениÑ</translation>
</message>
@@ -1066,24 +1709,12 @@ Do you want to open it anyway?</source>
<translation>Выбор изображениÑ</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Скачать значок Ñайта</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Ðе удалоÑÑŒ получить значок.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Ðе могу прочитать значок</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>ИÑпользовать Ñ&amp;тандартный значок</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>ИÑпользовать Ñв&amp;ой значок</translation>
+ <source>Custom icon already exists</source>
+ <translation>ПользовательÑкий значок уже ÑущеÑтвует</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1093,14 +1724,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Этот значок иÑпользует %1 запиÑей и будет заменен значком по умолчанию. Хотите удалить его?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>ПодÑказка: в качеÑтве резервного варианта Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ¾Ð² Ñайтов возможно иÑпользовать Google. Включите Ñтот параметр в меню «ИнÑтрументы» -&gt; «ÐаÑтройки» -&gt; «БезопаÑноÑть»</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>ПользовательÑкий значок уже ÑущеÑтвует</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1120,12 +1743,126 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>Данные плагина</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Удалить данные плагина?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Ð’Ñ‹ дейÑтвительно хотите удалить выбранные данные плагинов?
+Это может привеÑти к ÑбоÑм плагинов.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>Ключ</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>Значение</translation>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
- <translation> - клон</translation>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - КопиÑ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>ИмÑ</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Размер</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Создать</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Открыть</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Сохранить</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Выберите файлы</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation><numerusform>Вы уверены, что вы хотите удалить %n вложение?</numerusform><numerusform>Вы уверены, что вы хотите удалить %n вложений?</numerusform><numerusform>Вы уверены, что вы хотите удалить %n вложений?</numerusform><numerusform>Вы уверены, что вы хотите удалить %n вложений?</numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Подтверждение удалениÑ</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Сохранить вложениÑ</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Ðе удаетÑÑ Ñоздать каталог: %1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Ð’Ñ‹ уверены, что вы хотите, перезапиÑать ÑущеÑтвующий файл &quot;%1&quot; Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Подтвердить перезапиÑÑŒ</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Ðе удаетÑÑ Ñохранить вложение:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ вложение:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ вложение:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файлы:
+%1</translation>
</message>
</context>
<context>
@@ -1157,6 +1894,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>СÑылка: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Группа</translation>
</message>
@@ -1173,9 +1915,67 @@ Do you want to open it anyway?</source>
<translation>ÐдреÑ</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>СÑылка: </translation>
+ <source>Never</source>
+ <translation>Ðикогда</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>ПримечаниÑ</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>ИÑтекает</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Создан</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Изменение</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>ДоÑтуп</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>ВложениÑ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>ÐаÑтройка вида</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Скрыть имена пользователей</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Скрыть пароли</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>По размеру окна</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>По размеру Ñодержимого</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>ВоÑÑтановить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (иконки)</translation>
</message>
</context>
<context>
@@ -1186,6 +1986,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: Ðе удаетÑÑ Ñохранить файл!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Ðе удаетÑÑ Ñохранить файл ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð´Ð»Ñ Ð¼ÐµÑ…Ð°Ð½Ð¸Ð·Ð¼Ð° native messaging.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1235,6 +2046,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>УбедитьÑÑ, что пароль Ñодержит Ñимволы из каждой группы</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>РаÑширенный ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1248,6 +2063,361 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Ðе удалоÑÑŒ выполнить вызов-ответ.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Ðеверный ключ или файл базы данных повреждён.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Ðе удалоÑÑŒ выполнить вызов-ответ.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>отÑутÑтвуют заголовки базы данных</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>ÐедопуÑтимый размер контрольной Ñуммы заголовка</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>ÐеÑоответÑтвие SHA256 заголовка</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Ðеправильный ключ или файл базы данных поврежден. (неÑоответÑтвие HMAC)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>ÐеизвеÑтные шифр</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>ÐедопуÑтимый размер идентификатора заголовка</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð¿Ð¾Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° данных заголовка</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Ðе удалоÑÑŒ открыть буфер Ð´Ð»Ñ Ð¤Ð¤Ðš параметров в заголовке</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° (ФФК) не поддерживаетÑÑ Ð¸Ð»Ð¸ неверные параметры</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>УÑтаревшие Ð¿Ð¾Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² найденные в файле KDBX4.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>ÐедопуÑтимый внутренний идентификатор заголовка</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð¿Ð¾Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ заголовка</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>ÐедопуÑтимый двоичный размер внутреннего заголовка</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñтруктуры метаданных KeePass.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° имени Ñтруктуры метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑтимое Ð¸Ð¼Ñ Ð´Ð»Ñ Ñтруктуры метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑтимое значение длины запиÑи в Ñтруктуре метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑтимые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтруктуры метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° логичеÑкого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Ñтруктуре метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Int32 Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Ñтруктуре метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° UInt32 Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Ñтруктуре метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Int64 Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Ñтруктуре метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° UInt64 Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Ñтруктуре метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑтимый тип запиÑи в Ñтруктуре метаданных</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ Ð¿Ð¾Ð»Ñ Ð² Ñтруктуре метаданных</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>ÐедопуÑтимый Ñимметричный алгоритм шифрованиÑ.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>ÐедопуÑтимый размер Ñимметричного шифра IV.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Ошибка Ñериализации ФФК параметров Ñтруктуры матаданных</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° uuid шифра</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Ðеподдерживаемые шифр</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° флагов ÑжатиÑ</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Ðеподдерживаемый алгоритм ÑжатиÑ</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>ÐедопуÑтимый размер оÑновного seed</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>ÐедопуÑтимый размер seed Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½ÑформированиÑ</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>ÐедопуÑтимый размер раунда преобразованиÑ</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>ÐедопуÑтимый начальный размер байт</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>ÐедопуÑтимый размер индентификатора Ñлучайного потока</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>ÐедопуÑтимый шифр Ñлучайного внутреннего потока</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Ðе база данных KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Выбранный файл от Ñтарой KeePass 1 базы данных (.kdb).
+
+Вы можете импортировать его, нажав на База Данных &gt; «Импорт KeePass 1 базы данных...».
+Это одноÑтороннее перемещение. Ð’Ñ‹ не Ñможете открыть импортированную базу данных на Ñтарой верÑии KeePassX 0,4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð±Ð°Ð·Ñ‹ данных KeePass 2.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Ошибка разбора XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Ðет root группы</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Ðет значка uuid или данных</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>ОтÑутÑтвует ключ пользовательÑких данных или значение</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>ÐеÑколько Ñлементов группы</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Значение uuid Ð´Ð»Ñ NULL группы</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>ÐедопуÑтимый номер значка группы.</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>ÐедопуÑтимое значение EnableAutoType</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>ÐедопуÑтимое значение EnableSearching</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>ОтÑутÑтвует групповой uuid</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Null DeleteObject uuid</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Ðет uuid или времени Ð´Ð»Ñ DeletedObject </translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Null uuid Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>ÐедопуÑтимый номер значка запиÑи</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Элемент иÑтории в иÑтории запиÑи</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Ðет uuid Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Элемент иÑтории Ñ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸Ð¼ÑÑ uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Ðе удаетÑÑ Ñ€Ð°Ñшифровать Ñтроку запиÑи</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Ðайден повторÑющиеÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкий атрибут</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>ОтÑутÑтвует ключ или значение запиÑи</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Ðайден дубликат во вложениÑÑ…</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>ОтÑутÑтвует двоичный ключ или значение запиÑи</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>ОтÑутÑтвует окно или поÑледовательноÑÑ‚ÑŒ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð²Ð¾Ð´Ð°</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>ÐедопуÑтимое логичеÑкое значение</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>ÐедопуÑтимое значение даты времени </translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>ÐедопуÑтимое значение цвета</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>ÐедопуÑтимое значение чаÑти цвета rgb</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>ÐедопуÑтимое чиÑловое значение</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>ÐедопуÑтимое значение uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Ðе удаетÑÑ Ñ€Ð°Ñпаковать двоичные данные</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1277,6 +2447,35 @@ Do you want to open it anyway?</source>
<translation>ВерÑÐ¸Ñ Ð±Ð°Ð·Ñ‹ данных KeePass не поддерживаетÑÑ.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Ðе удаетÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>ÐедопуÑтимое количеÑтво групп</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>ÐедопуÑтимое количеÑтво запиÑей</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>ÐедопуÑтимый размер Ñ…Ñша Ñодержимого</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>ÐедопуÑтимый размер seed Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½ÑформированиÑ</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>ÐедопуÑтимое количеÑтво раундов преобразованиÑ</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Ðе удалоÑÑŒ Ñоздать дерево групп</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Корень</translation>
</message>
@@ -1288,129 +2487,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>Ðеверный ключ или файл базы данных повреждён.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Ðе база данных KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>Ðе удалоÑÑŒ выполнить преобразование ключа </translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>ВерÑÐ¸Ñ Ð±Ð°Ð·Ñ‹ данных KeePass не поддерживаетÑÑ.</translation>
+ <source>Invalid group field type number</source>
+ <translation>ÐедопуÑтимый тип Ð¿Ð¾Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Ðеверный ключ или файл базы данных повреждён.</translation>
+ <source>Invalid group field size</source>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Ðе ÑоответÑтвует размер облаÑти данных группы</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Ðе удалоÑÑŒ выполнить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Ðеверный размер Ð¿Ð¾Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° группы</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Выбранный файл от Ñтарой KeePass 1 базы данных (.kdb).
-
-Вы можете импортировать его, нажав на База Данных &gt; «Импорт KeePass 1 базы данных...».
-Это одноÑтороннее перемещение. Ð’Ñ‹ не Ñможете открыть импортированную базу данных на Ñтарой верÑии KeePassX 0,4.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Ðеверный размер Ð¿Ð¾Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Ðе удалоÑÑŒ выполнить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Ðеверный размер Ð¿Ð¾Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ðевозможно вычиÑлить маÑтер-пароль</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Ðеверный размер Ð¿Ð¾Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ доÑтупа к группе</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>ÐеиÑÐ¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в процеÑÑе теÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑких функций.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Ðеверное значение Ð¿Ð¾Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑÑ‚Ð²Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>Ошибка - KeePassXC</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Ðеверный размер Ð¿Ð¾Ð»Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° группы</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Файл блокировки не может быть Ñоздан. Режим недублирующего Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Ðеверный размер Ð¿Ð¾Ð»Ñ ÑƒÑ€Ð¾Ð²Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Другой ÑкземплÑÑ€ KeePassXC уже запущен.</translation>
+ <source>Invalid group field type</source>
+ <translation>ÐедопуÑтимый тип Ð¿Ð¾Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation>ЗапуÑкаетÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ ÑкземплÑÑ€ программы, Ñ‚.к. файл блокировки запуÑка повреждён.</translation>
+ <source>Missing group id or level</source>
+ <translation>ОтÑутÑтвует групповой идентификатор или уровень</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Открыть базу данных</translation>
+ <source>Missing entry field type number</source>
+ <translation>ОтÑутÑтвует номер типа Ð¿Ð¾Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Параметры базы данных</translation>
+ <source>Invalid entry field size</source>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Скопировать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² буфер обмена</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>ÐŸÐ¾Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… запиÑи не ÑоответÑтвуют размеру</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Скопировать пароль в буфер обмена</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ uuid запиÑи</translation>
</message>
<message>
- <source>Settings</source>
- <translation>ÐаÑтройки</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° запиÑи группы</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Показать панель инÑтрументов</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° запиÑи</translation>
</message>
<message>
- <source>read-only</source>
- <translation>только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>ÐедопуÑтимный размер Ð¿Ð¾Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Переключить окно</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ñ‚Ñ‹ ввода</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>База данных KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>ÐедопуÑтимый размер Ð¿Ð¾Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð´Ð»Ñ Ñрока дейÑтвиÑ</translation>
</message>
<message>
- <source>All files</source>
- <translation>Ð’Ñе файлы</translation>
+ <source>Invalid entry field type</source>
+ <translation>ÐедопуÑтимый тип Ð¿Ð¾Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Сохранить воÑÑтановленную базу данных</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>ЗапуÑкаетÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ ÑкземплÑÑ€ программы, Ñ‚.к. файл блокировки запуÑка повреждён.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Ðе удалоÑÑŒ запиÑать базу данных.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Файл блокировки не может быть Ñоздан. Режим недублирующего Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Другой ÑкземплÑÑ€ KeePassXC уже запущен.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>ÐеиÑÐ¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в процеÑÑе теÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑких функций.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>Ошибка - KeePassXC</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;База данных</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Ðедавние базы данных</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Импорт</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Помощь</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>&amp;ЗапиÑи</translation>
</message>
@@ -1419,12 +2630,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Скопировать &amp;атрибут в буфер обмена</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>Временной одноразовый пароль</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Группы</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>&amp;Вид</translation>
+ <source>&amp;Tools</source>
+ <translation>&amp;ИнÑтрументы</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1435,6 +2650,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;О программе</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Открыть базу данных...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>&amp;Сохранить базу данных</translation>
</message>
@@ -1475,24 +2694,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Удалить группу</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>ÐаÑтройки базы данных</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>&amp;Сохранить базу данных как...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Клонировать запиÑÑŒ</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Изменение &amp;маÑтер-паролÑ...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Временный разовый пароль</translation>
+ <source>&amp;Database settings</source>
+ <translation>ÐаÑтройки базы данных</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Копировать &amp;ВРП</translation>
+ <source>Database settings</source>
+ <translation>Параметры базы данных</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Показать ВРП</translation>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Клонировать запиÑÑŒ</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1503,14 +2722,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Скопировать &amp;Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Скопировать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² буфер обмена</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>&amp;Скопировать пароль</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Скопировать пароль в буфер обмена</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;ÐаÑтройки</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Генератор паролей</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>&amp;ПроизвеÑти автоввод</translation>
</message>
@@ -1527,165 +2758,222 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>&amp;Ð˜Ð¼Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Скопировать название в буфер обмена</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;ÐдреÑ</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Скопировать URL-Ð°Ð´Ñ€ÐµÑ Ð² буфер обмена</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;ПримечаниÑ</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Генератор паролей</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Скопировать Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð² буфер обмена</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>ОчиÑтить иÑторию</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;ЭкÑпорт в CSV-файл...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;База данных</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Импортировать базу данных KeePass 1...</translation>
</message>
<message>
- <source>Import</source>
- <translation>Импорт</translation>
+ <source>Import CSV file...</source>
+ <translation>Импорт CSV-файла...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;ИнÑтрументы</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Во&amp;ÑÑтановить базу данных...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Показать ВРП</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>УÑтановить ВРП...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Копировать &amp;ВРП</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>&amp;ПуÑÑ‚Ð°Ñ ÐºÐ¾Ñ€Ð·Ð¸Ð½Ð°</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>ОчиÑтить корзину</translation>
+ <source>Clear history</source>
+ <translation>ОчиÑтить иÑторию</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>Ошибка доÑтупа к файлу конфигурации %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Закрыть KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Похоже вы иÑпользуете KeePassHTTP Ð´Ð»Ñ Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ð¸ Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð¾Ð¼. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑвлÑетÑÑ ÑƒÑтаревшей и будет удалена в будущем.&lt;br&gt;ПожалуйÑта перейдите на KeePassXC-Browser! Чтобы получить помощь прочтите наше &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;руководÑтво по миграции&lt;/a&gt; (предупреждение %1 of 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Ðажмите кнопку на YubiKey!</translation>
+ <source>read-only</source>
+ <translation>только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>Помощь</translation>
+ <source>Settings</source>
+ <translation>ÐаÑтройки</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Открыть базу данных...</translation>
+ <source>Toggle window</source>
+ <translation>Переключить окно</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>&amp;Сохранить базу данных как...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Закрыть KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Изменение &amp;маÑтер-паролÑ...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>База данных KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;ЭкÑпорт в CSV-файл...</translation>
+ <source>All files</source>
+ <translation>Ð’Ñе файлы</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Импортировать базу данных KeePass 1...</translation>
+ <source>Open database</source>
+ <translation>Открыть базу данных</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Импорт CSV-файла...</translation>
+ <source>Save repaired database</source>
+ <translation>Сохранить воÑÑтановленную базу данных</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Во&amp;ÑÑтановить базу данных...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Ðе удалоÑÑŒ запиÑать базу данных.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>УÑтановить ВРП...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Ðажмите кнопку на YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>Предупреждение: Ð’Ñ‹ иÑпользуете неÑтабильную Ñборку KeePassXC!
+СущеÑтвует выÑокий риÑк Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных, Ñделайте резервную копию базы данных.
+Эта верÑÐ¸Ñ Ð½Ðµ предназначен Ð´Ð»Ñ Ð¿Ð¾Ð²Ñедневного иÑпользованиÑ.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Диалог</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>ÐедопуÑтимый файл ключа, ожидаетÑÑ OpenSSH ключ</translation>
</message>
<message>
- <source>General</source>
- <translation>Общие</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>ÐеÑоответÑтвие границ PEM</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>Показывать уведомление при запроÑе учётных данных</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Ðе удалоÑÑŒ декодировать Base64</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Сортировать Ñовпавшие запиÑи по &amp;имени пользователÑ</translation>
+ <source>Key file way too small.</source>
+ <translation>Ключевой файл Ñлишком мал.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Удалить вÑе Ñохранённые права доÑтупа из запиÑей активной базы данных</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>ÐедопуÑтимый идентификатор заголовка файла ключа</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Продвинутые</translation>
+ <source>Found zero keys</source>
+ <translation>Ðайдены пуÑтые ключи</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Ð’Ñегда разрешать доÑтуп к запиÑÑм</translation>
+ <source>Failed to read public key.</source>
+ <translation>Ðе удалоÑÑŒ прочеÑÑ‚ÑŒ открытый ключ.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Ð’Ñегда разрешать обновление запиÑей</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Поврежденный файл ключа, чтение закрытого ключа не удалоÑÑŒ</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>ИÑкать подходÑщие запиÑи во вÑех открытых базах данных</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>Ð’ закрытом ключе нет Ñведений Ð´Ð»Ñ Ð´ÐµÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Порт HTTP:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Попытка запуÑтить ФФК без шифрованиÑ</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Порт по умолчанию: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Пароль требуетÑÑ Ð´Ð»Ñ Ñ€Ð°Ñшифровки Ñтого ключа</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Запрашивать разблокировку базы данных, еÑли она заблокирована</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>Ð¤Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° не удалоÑÑŒ, ключевой файл поврежден?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Сортировать Ñовпадающие запиÑи по названию</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>РаÑшифровка не удалаÑÑŒ, неправильный пароль?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC будет Ñлушать Ñтот порт на 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Ðеожиданное EOF при чтении открытого ключа</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Ðе удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ привÑзку к привилегированным портам</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Ðеожиданный EOF при чтении закрытого ключа</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Ðе удаётÑÑ Ð¿Ñ€Ð¸Ð²Ñзать к привилегированным портам Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ меньше 1024!
-ИÑпользуетÑÑ Ð¿Ð¾Ñ€Ñ‚ по умолчанию: 19455.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Ðе удаетÑÑ Ð·Ð°Ð¿Ð¸Ñать открытый ключ, так как он пуÑÑ‚</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>&amp;Удалить вÑе общие ключи ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· активной базы данных</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Ðеожиданный EOF при запиÑе открытого ключа</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>Возвращать продвинутые Ñтро&amp;ковые полÑ, начинающиеÑÑ Ñ Â«KPH: »</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>ÐÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð¿Ð¸Ñать закрытый ключ, поÑкольку он пуÑтой</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>ÐвтоматичеÑкое Ñоздание или обновление полей, Ñодержащих Ñтроки, не поддерживаетÑÑ.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Ðеожиданный EOF при запиÑи закрытого ключа</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>ÐеизвеÑтный тип ключа: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>ÐеизвеÑтный шифр: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation>Слишком короткий Cipher IV Ð´Ð»Ñ MD5 ФФК</translation>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation>ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¤Ð¤Ðš: %1</translation>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>ÐеизвеÑтный тип ключа: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Диалог</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1696,6 +2984,15 @@ Using default port 19455.</source>
<translation>Включить Ñервер KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Общие</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Показывать уведомление при запроÑе учётных данных</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Возвращает только лучшие ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð³Ð¾ URL вмеÑто вÑех запиÑей Ð´Ð»Ñ Ð²Ñего домена.</translation>
</message>
@@ -1704,6 +3001,10 @@ Using default port 19455.</source>
<translation>&amp;Показывать только лучшие ÑовпадениÑ</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Запрашивать разблокировку базы данных, еÑли она заблокирована</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Будут отобраны только запиÑи Ñ Ñовпадающим протоколом (http://, https://, ftp://, ...).</translation>
</message>
@@ -1712,27 +3013,108 @@ Using default port 19455.</source>
<translation>&amp;ПроверÑÑ‚ÑŒ протокол</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Сортировать Ñовпавшие запиÑи по &amp;имени пользователÑ</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Сортировать Ñовпадающие запиÑи по названию</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>&amp;Удалить вÑе общие ключи ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· активной базы данных</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Удалить вÑе Ñохранённые права доÑтупа из запиÑей активной базы данных</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Генератор паролей</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Продвинутые</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Ð’Ñегда разрешать доÑтуп к запиÑÑм</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Ð’Ñегда разрешать обновление запиÑей</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>К клиенту должна быть подключена только Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Следующие параметры могут быть опаÑны!
-МенÑйте их, только еÑли знаете, что делаете.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>ИÑкать подходÑщие запиÑи во вÑех открытых базах данных</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>ÐвтоматичеÑкое Ñоздание или обновление полей, Ñодержащих Ñтроки, не поддерживаетÑÑ.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Возвращать продвинутые Ñтро&amp;ковые полÑ, начинающиеÑÑ Ñ Â«KPH: »</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Порт HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Порт по умолчанию: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC будет Ñлушать Ñтот порт на 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Предупреждение:&lt;/b&gt; Следующие параметры могут быть опаÑны!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP уÑтарел и будет удален в будущем.&lt;br&gt;ПоажлуйÑта перейдите на KeePassXC-Browser! Чтобы получить помощь прочтите наше &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;руководÑтво по миграции&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Ðе удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ привÑзку к привилегированным портам</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Ðе удаётÑÑ Ð¿Ñ€Ð¸Ð²Ñзать к привилегированным портам Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ меньше 1024!
+ИÑпользуетÑÑ Ð¿Ð¾Ñ€Ñ‚ по умолчанию: 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Пароль:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>надёжноÑÑ‚ÑŒ</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>ÑнтропиÑ</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Виды Ñимволов</translation>
</message>
@@ -1753,38 +3135,50 @@ Change them only if you know what you are doing.</source>
<translation>ОÑобые Ñимволы</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>РаÑширенный ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>ИÑключить похожие Ñимволы</translation>
</message>
<message>
- <source>Accept</source>
- <translation>ПринÑÑ‚ÑŒ</translation>
+ <source>Pick characters from every group</source>
+ <translation>Подобрать Ñимволы из каждой группы</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Длина:</translation>
</message>
<message>
- <source>strength</source>
- <translation>надёжноÑÑ‚ÑŒ</translation>
+ <source>Passphrase</source>
+ <translation>ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°</translation>
</message>
<message>
- <source>entropy</source>
- <translation>ÑнтропиÑ</translation>
+ <source>Wordlist:</source>
+ <translation>СпиÑок Ñлов:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Длина:</translation>
+ <source>Word Count:</source>
+ <translation>КоличеÑтво Ñлов:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Подобрать Ñимволы из каждой группы</translation>
+ <source>Word Separator:</source>
+ <translation>Разделитель Ñлов:</translation>
</message>
<message>
<source>Generate</source>
<translation>Генерировать</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Копировать</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>ПринÑÑ‚ÑŒ</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Закрыть</translation>
</message>
@@ -1802,51 +3196,276 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Плохое</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Слабое</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Хорошее</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Отличное</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Пароль</translation>
+ <source>Database not opened</source>
+ <translation>База данных не открыта</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>РаÑширенный ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>ОтÑутÑтвует Ñ…Ñш базы данных</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°</translation>
+ <source>Client public key not received</source>
+ <translation>Ðе получен открытый ключ клиента</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>СпиÑок Ñлов:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Ðе удаетÑÑ Ñ€Ð°Ñшифровать Ñообщение</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>КоличеÑтво Ñлов:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>ИÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ невозможно подключитьÑÑ Ðº KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Разделитель Ñлов:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>ДейÑтвие отменено или запрещено</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Копировать</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Ðе удаетÑÑ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñообщение или открытый ключ не найден. Механизм Native Messaging включен в KeePassXC?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC объединение не удалоÑÑŒ, попробуйте еще раз</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Изменение ключа не было уÑпешным</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ раÑпознан</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Ð¡Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных не найдена</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Ðеправильное дейÑтвие</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Получено пуÑтое Ñообщение</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>ОтÑутÑтвует URL-адреÑ</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Логины не найдены</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Добавить новую запиÑÑŒ в базу данных.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Путь к базе данных.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Ключ-файл базы данных.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>путь</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL-Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>ÐдреÑ</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Введите пароль запиÑи.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Сгенерировать пароль Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Длина Ñгенерированного паролÑ.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>длина</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Путь к запиÑе Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Скопировать пароль в буфер обмена.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>Скопировать путь до запиÑи.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð² Ñекундах до очиÑтки буфера обмена.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Редактирование запиÑи.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Ðазвание Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>название</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Путь к запиÑе Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Оценка Ñнтропии паролÑ.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Пароль Ð´Ð»Ñ Ð¾Ñ†ÐµÐ½ÐºÐ¸ Ñнтропии.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Выполнить раÑширенный анализ паролÑ.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Извлечь и раÑпечатать Ñодержимое базы данных.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Путь к базе данных Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Введите пароль Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ %1: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Ðе удалоÑÑŒ загрузить ключ-файл %1: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>ПРЕДУПРЕЖДЕÐИЕ: Ð’Ñ‹ иÑпользуете уÑтаревший формат файл ключа, поддержка которого
+может быть прекращена в будущем.
+
+РаÑÑмотрите возможноÑÑ‚ÑŒ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ файла ключа.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+ДоÑтупные команды:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Ð˜Ð¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñемой команды.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>СпиÑок запиÑей в базе данных.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Путь к ÑпиÑку группы. Значение по умолчанию /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Ðайти запиÑи быÑтро.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>ПоиÑковый запроÑ.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Объединить две базы данных.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Путь к базе данных Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð².</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Путь к базе данных Ð´Ð»Ñ ÑлиÑниÑ.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>ИÑпользуйте те же учетные данные Ð´Ð»Ñ Ð¾Ð±Ð¾Ð¸Ñ… файлов базы данных.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Файл ключа базы данных Ð´Ð»Ñ ÑлиÑниÑ.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Показать ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ запиÑÑÑ….</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Имена атрибутов Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ. Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть указана более одного раза, причем каждый атрибут будет показан по одному в Ñтроке в заданном порÑдке. ЕÑли атрибуты не указаны, даетÑÑ Ñводка атрибутов по умолчанию.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>атрибут</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Ðазвание запиÑи Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>УÑтройÑтво NULL</translation>
@@ -1870,8 +3489,28 @@ Change them only if you know what you are doing.</source>
<translation>ОтÑутÑтвует Ð·Ð°ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ†Ð¸Ñ‚Ð°Ñ‚Ð°</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>Внутренний - превышение нижней границы</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-бит</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-бит</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-бит</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – рекомендуемый)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1890,14 +3529,22 @@ Change them only if you know what you are doing.</source>
<translation>Пароль</translation>
</message>
<message>
- <source>URL</source>
- <translation>ÐдреÑ</translation>
- </message>
- <message>
<source>Notes</source>
<translation>ПримечаниÑ</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>ПоÑледнее изменение</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Создан</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>УÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð¾Ð¼</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð¾Ð¼</translation>
</message>
@@ -1913,6 +3560,56 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation>ПаÑÑивнаÑ</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Ðгент</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Сгенерировать новую парольную фразу.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>КоличеÑтво Ñлов Ð´Ð»Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ð¹ фразы.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation>количеÑтво</translation>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation>СпиÑок Ñлов Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° парольной фразы.
+[По умолчанию: ÐнглийÑкий EFF]</translation>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Сгенерировать новый Ñлучайный пароль.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Длина Ñгенерированного паролÑ.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>ИÑпользовать Ñимволы в нижнем региÑтре в генерируемом пароле.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation>ИÑпользовать заглавные буквы в генерируемом пароле.</translation>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>ИÑпользовать цифры в генерируемом пароле.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>ИÑпользовать Ñпециальные Ñимволы в генерируемом пароле.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>ИÑпользовать раÑширенный ASCII в генерируемом пароле.</translation>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1951,8 +3648,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>ЧувÑтвительно к региÑтру</translation>
+ <source>Search...</source>
+ <translation>ПоиÑк...</translation>
</message>
<message>
<source>Search</source>
@@ -1963,8 +3660,8 @@ Change them only if you know what you are doing.</source>
<translation>ОчиÑтить</translation>
</message>
<message>
- <source>Search...</source>
- <translation>ПоиÑк...</translation>
+ <source>Case Sensitive</source>
+ <translation>ЧувÑтвительно к региÑтру</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1974,50 +3671,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Общий ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «%1» уже ÑущеÑтвует.
-ПерезапиÑать его?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Обновить информацию в %1 - %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных заблокирована!
-Разблокируйте выбранную базу данных или выберите другую, незаблокированную.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>УÑпешно удалено %1 шифрование-%2 из наÑтроек KeePassXC/Http.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Ðе найдено общих ключей ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² наÑтройках KeePassHttp.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных не Ñодержит запиÑей наÑтроек KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>УдалÑÑŽ Ñохранённые права доÑтупа...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>Прервать</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>Права доÑтупа из %1 %2 уÑпешно удалены.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных не Ñодержит запиÑей Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ‹Ð¼Ð¸ правами доÑтупа.</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° аÑÑоциацию нового ключа</translation>
</message>
@@ -2034,33 +3687,77 @@ give it a unique name to identify and accept it.</source>
<translation>KeePassXC: ПерезапиÑать ÑущеÑтвующий ключ?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Общий ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «%1» уже ÑущеÑтвует.
+ПерезапиÑать его?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Обновить запиÑÑŒ</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Обновить информацию в %1 - %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: База данных заблокирована!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных заблокирована!
+Разблокируйте выбранную базу данных или выберите другую, незаблокированную.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Ключи удалены из базы данных</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>УÑпешно удалена %n шифрованиÑ-ключи от параметров KeePassX/Http.</numerusform><numerusform>УÑпешно удалена %n шифрованиÑ-ключи от параметров KeePassX/Http.</numerusform><numerusform>УÑпешно удалена %n шифрованиÑ-ключи от параметров KeePassX/Http.</numerusform><numerusform>УÑпешно удалено %n ключей ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· параметров KeePassX/Http.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Ключи не найдены</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Ðе найдено общих ключей ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² наÑтройках KeePassHttp.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: ÐаÑтройки недоÑтупны!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных не Ñодержит запиÑей наÑтроек KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>УдалÑÑŽ Ñохранённые права доÑтупа...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Прервать</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Права доÑтупа удалены</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑи.</numerusform><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑей.</numerusform><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑей.</numerusform><numerusform>УÑпешно удалены доÑтупы Ð´Ð»Ñ %n запиÑей.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Ðе найдена запиÑÑŒ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ доÑтупа!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных не Ñодержит запиÑей Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ‹Ð¼Ð¸ правами доÑтупа.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2084,10 +3781,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>ОÑновные параметры</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>ЗапуÑкать только один ÑкземплÑÑ€ KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Запоминать поÑледнюю базу данных</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Запоминать поÑледние иÑпользованные файлы ключей и уÑтройÑтва</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Загружать предыдущие базы данных при запуÑке</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>ÐвтоматичеÑки ÑохранÑÑ‚ÑŒ при выходе</translation>
</message>
@@ -2096,20 +3809,28 @@ give it a unique name to identify and accept it.</source>
<translation>ÐвтоматичеÑки ÑохранÑÑ‚ÑŒ поÑле каждого изменениÑ</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>ÐвтоматичеÑки перезагружать базу данных при её изменении извне</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Сворачивать при копировании в буфер обмена</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Сворачивать окно при запуÑке приложениÑ</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>ИÑпользовать значок группы Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… запиÑей</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð²Ð¾Ð´Ð°</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Ðе помечать базу данных изменённой при дейÑтвиÑÑ…, не ÑвÑзанных Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ данных (например, при раÑпахивании групп)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Язык</translation>
+ <source>Hide the Details view</source>
+ <translation>Скрыть подробную информацию</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2120,66 +3841,84 @@ give it a unique name to identify and accept it.</source>
<translation>При Ñворачивании Ñкрывать окно в ÑиÑтемный лоток</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Загружать предыдущие базы данных при запуÑке</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>ÐвтоматичеÑки перезагружать базу данных при её изменении извне</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Скрывать окно в ÑиÑтемный лоток вмеÑто выхода</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Сворачивать окно при запуÑке приложениÑ</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>ОÑновные параметры</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Запоминать поÑледние иÑпользованные файлы ключей и уÑтройÑтва</translation>
+ <source>Dark system tray icon</source>
+ <translation>Ð¢ÐµÐ¼Ð½Ð°Ñ Ð¸ÐºÐ¾Ð½ÐºÐ° в ÑиÑтемном трее</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Ðе помечать базу данных изменённой при дейÑтвиÑÑ…, не ÑвÑзанных Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ данных (например, при раÑпахивании групп)</translation>
+ <source>Language</source>
+ <translation>Язык</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Ðвтоввод</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>ИÑпользовать Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка URL и название запиÑи</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>ИÑпользовать название запиÑи, Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ автоввода</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>ИÑпользовать URL-Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ автоввода</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Ð’Ñегда Ñпрашивать перед выполнением автоввода</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð²Ð¾Ð´Ð°</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Задержка автоввода</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation> мÑ</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>ЗапуÑкать только один ÑкземплÑÑ€ KeePassXC</translation>
+ <source>Startup</source>
+ <translation>ЗапуÑк</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>Управление файлами</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>БезопаÑное Ñохранение файлов базы данных (может быть неÑовмеÑтимо Ñ Dropbox и другими)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Создавать резервную копию базы данных перед Ñохранением</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>Управление запиÑÑми</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Общие</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Таймауты</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Очищать буфер обмена через</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>Ñек</translation>
</message>
<message>
@@ -2187,8 +3926,12 @@ give it a unique name to identify and accept it.</source>
<translation>Блокировать базу данных при отÑутÑтвии активноÑти длительноÑтью</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>По умолчанию показывать пароль в открытую</translation>
+ <source>Convenience</source>
+ <translation>УдобÑтво</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Блокировать базу данных при закрытии ÑеанÑа или закрытии крышки</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2199,16 +3942,16 @@ give it a unique name to identify and accept it.</source>
<translation>Ðе требовать повторный ввод паролÑ, когда он показываетÑÑ</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Таймауты</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>По умолчанию показывать пароль в открытую</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>УдобÑтво</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Скрыть пароли в панели предварительного проÑмотра</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Блокировать базу данных при закрытии ÑеанÑа или закрытии крышки</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Скрыть Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи по умолчанию</translation>
</message>
<message>
<source>Privacy</source>
@@ -2218,6 +3961,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation>ИÑпользовать Google в качеÑтве резервного варианта Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ¾Ð² веб-Ñайтов</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>Заблокировать базу данных поÑле автоввода</translation>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2230,6 +3977,14 @@ give it a unique name to identify and accept it.</source>
<translation>Ключ:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Стандартные параметры токена RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Параметры токена Steam</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>ИÑпользовать пользовательÑкие наÑтройки</translation>
</message>
@@ -2255,6 +4010,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>Ñек</translation>
</message>
</context>
@@ -2291,10 +4047,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>Добро пожаловать в KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Ðачать безопаÑное хранение ваших паролей в базе данных KeePassXC</translation>
</message>
@@ -2318,92 +4070,48 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>Ðедавние базы данных</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Добро пожаловать в KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>путь к Ñвоему файлу наÑтроек</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>файл-ключ базы данных</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - кроÑÑплатформенный менеджер паролей</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>читать пароли базы данных из Ñтандартного ввода «stdin»</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>имена файлов открываемой базы данных паролей (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Скопировать пароль в буфер обмена</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Удалить запиÑÑŒ из базы данных.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>Путь к базе данных.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>ИÑпользовать подÑказку GUI Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ базы данных.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Ð˜Ð¼Ñ Ð·Ð°Ð¿Ð¸Ñи Ð´Ð»Ñ Ð¾Ñ‚ÑечениÑ.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Извлечь и раÑпечатать Ñодержимое базы данных.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Путь к базе данных Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Ð˜Ð¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñемой команды.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>СпиÑок запиÑей в базе данных.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>Путь к ÑпиÑку группы. Значение по умолчанию /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>РаÑпечатать UUID запиÑей и групп.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>Путь к запиÑи, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ.</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>Объединить две базы данных.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - кроÑÑплатформенный менеджер паролей</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Путь к базе данных Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð².</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>имена файлов открываемой базы данных паролей (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Путь к базе данных Ð´Ð»Ñ ÑлиÑниÑ.</translation>
+ <source>path to a custom config file</source>
+ <translation>путь к Ñвоему файлу наÑтроек</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>ИÑпользовать тот же пароль Ð´Ð»Ñ Ð¾Ð±Ð¾Ð¸Ñ… файлов базы данных.</translation>
+ <source>key file of the database</source>
+ <translation>файл-ключ базы данных</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Показать пароль.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>читать пароли базы данных из Ñтандартного ввода «stdin»</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Ðазвание запиÑи Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ.</translation>
+ <source>Parent window handle</source>
+ <translation>ДеÑкриптор родительÑкого окна</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_sr.ts b/share/translations/keepassx_sr.ts
new file mode 100644
index 000000000..676e8c1c0
--- /dev/null
+++ b/share/translations/keepassx_sr.ts
@@ -0,0 +1,4083 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sr" version="2.1">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <source>About KeePassXC</source>
+ <translation>О KeePassXC</translation>
+ </message>
+ <message>
+ <source>About</source>
+ <translation>О апликацији</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Пријавите грешке на: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC Ñе диÑтрибуира под уÑловима ГÐУ Опште Јавне Лиценце (GPL) верзије 2 (или уколико одаберете) верзије 3.</translation>
+ </message>
+ <message>
+ <source>Contributors</source>
+ <translation>Сарадници</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Погледајте доприноÑе на GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Debug Info</source>
+ <translation>Информације за отклањање грешака</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Укључите Ñледеће информације приликом пријављивања грешке:</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Копирај</translation>
+ </message>
+ <message>
+ <source>Version %1
+</source>
+ <translation>Верзија %1
+</translation>
+ </message>
+ <message>
+ <source>Revision: %1</source>
+ <translation>Ревизија %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>ДиÑтрибуција: %1</translation>
+ </message>
+ <message>
+ <source>Libraries:</source>
+ <translation>Библиотеке:</translation>
+ </message>
+ <message>
+ <source>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</source>
+ <translation>Оперативни ÑиÑтем: %1
+Ðрхитектура процеÑора: %2
+Језгро: %3 %4</translation>
+ </message>
+ <message>
+ <source>Enabled extensions:</source>
+ <translation>Укључена проширења:</translation>
+ </message>
+ <message>
+ <source>Project Maintainers:</source>
+ <translation>Вође пројекта:</translation>
+ </message>
+ <message>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Build Type: %1
+</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccessControlDialog</name>
+ <message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Потврдите ПриÑтуп</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Запамти ову одлуку</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>ДопуÑти</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Одбаци</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 тражи приÑтуп лозинкама за Ñледећу Ñтавку (или Ñтавке).
+Молим Ð²Ð°Ñ Ð¾Ð´Ð°Ð±ÐµÑ€Ð¸Ñ‚Ðµ да ли желите да одобрите приÑтуп.</translation>
+ </message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
+ <message>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Омогући SSH агента (захтева поновно покретање апликације)</translation>
+ </message>
+</context>
+<context>
+ <name>AutoType</name>
+ <message>
+ <source>Couldn&apos;t find an entry that matches the window title:</source>
+ <translation>Ставка која одговара наведеном наÑлову прозора није пронађена:</translation>
+ </message>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>AutoматÑко-Куцање - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>ÐутоматÑко-куцање</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AutoTypeAssociationsModel</name>
+ <message>
+ <source>Window</source>
+ <translation>Прозор</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>РедоÑлед</translation>
+ </message>
+ <message>
+ <source>Default sequence</source>
+ <translation>Подразумевани редоÑлед</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Група</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>ÐаÑлов</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>КориÑничко име</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>РедоÑлед</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>AutoматÑко-Куцање - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation>Одаберите Ñтавку за ÐутоматÑко-Куцање</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Запамти ову одлуку</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>ДопуÑти</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Одбаци</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 тражи приÑтуп лозинкама за Ñледећу Ñтавку (или Ñтавке).
+Молим Ð²Ð°Ñ Ð¾Ð´Ð°Ð±ÐµÑ€Ð¸Ñ‚Ðµ да ли желите да одобрите приÑтуп.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Дијалог</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Опште</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Ðапредно</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Разгледај...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ChangeMasterKeyWidget</name>
+ <message>
+ <source>Password</source>
+ <translation>Лозинка</translation>
+ </message>
+ <message>
+ <source>Enter password:</source>
+ <translation>УнеÑите лозинку:</translation>
+ </message>
+ <message>
+ <source>Repeat password:</source>
+ <translation>Поновите лозинку:</translation>
+ </message>
+ <message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Кључ-Датотека</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Преглед</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>Креирај</translation>
+ </message>
+ <message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Изазов Одговор</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>ОÑвежи</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Кључ-Датотеке</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Све датотеке</translation>
+ </message>
+ <message>
+ <source>Create Key File...</source>
+ <translation>Креирај Кључ-Датотеку...</translation>
+ </message>
+ <message>
+ <source>Unable to create Key File : </source>
+ <translation>Ðије могуће креирати Кључ-Датотеку:</translation>
+ </message>
+ <message>
+ <source>Select a key file</source>
+ <translation>Одаберите кључ-датотеку</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>Празна лозинка</translation>
+ </message>
+ <message>
+ <source>Do you really want to use an empty string as password?</source>
+ <translation>Да ли Ñте Ñигурни да желите да лозинка буде празна?</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Унете Ñу две различите лозинке.</translation>
+ </message>
+ <message>
+ <source>Failed to set %1 as the Key file:
+%2</source>
+ <translation>ÐеуÑпешно поÑтављање %1 као Кључ-Датотеку:
+%2</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Changing master key failed: no YubiKey inserted.</source>
+ <translation>ÐеуÑпешна промена главног кључа: YubiKey није унет.</translation>
+ </message>
+</context>
+<context>
+ <name>CloneDialog</name>
+ <message>
+ <source>Clone Options</source>
+ <translation>Клонирај Опције</translation>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Додај наÑлову ÑÑƒÑ„Ð¸ÐºÑ &apos; - дупликат&apos; </translation>
+ </message>
+ <message>
+ <source>Replace username and password with references</source>
+ <translation>Замени кориÑничко име и лозинку Ñа референцама</translation>
+ </message>
+ <message>
+ <source>Copy history</source>
+ <translation>Копирај иÑторију</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWidget</name>
+ <message>
+ <source>Import CSV fields</source>
+ <translation>Увези CSV поља</translation>
+ </message>
+ <message>
+ <source>filename</source>
+ <translation>датотека</translation>
+ </message>
+ <message>
+ <source>size, rows, columns</source>
+ <translation>величина, редови, колоне</translation>
+ </message>
+ <message>
+ <source>Encoding</source>
+ <translation>Кодирање</translation>
+ </message>
+ <message>
+ <source>Codec</source>
+ <translation>Кодек</translation>
+ </message>
+ <message>
+ <source>Text is qualified by</source>
+ <translation>ТекÑÑ‚ је означен Ñа</translation>
+ </message>
+ <message>
+ <source>Fields are separated by</source>
+ <translation>Поља Ñу одвојена Ñа</translation>
+ </message>
+ <message>
+ <source>Comments start with</source>
+ <translation>Коментари почињу Ñа</translation>
+ </message>
+ <message>
+ <source>First record has field names</source>
+ <translation>Први ред Ñадржи имена колона</translation>
+ </message>
+ <message>
+ <source>Number of headers line to discard</source>
+ <translation>ПреÑкочи колико првих линија</translation>
+ </message>
+ <message>
+ <source>Consider &apos;\&apos; an escape character</source>
+ <translation>Третирај &apos;\&apos; као командни знак</translation>
+ </message>
+ <message>
+ <source>Preview</source>
+ <translation>Преглед</translation>
+ </message>
+ <message>
+ <source>Column layout</source>
+ <translation>РаÑпоред по колонама</translation>
+ </message>
+ <message>
+ <source>Not present in CSV file</source>
+ <translation>Ðије приÑутан у CSV датотеци</translation>
+ </message>
+ <message>
+ <source>Empty fieldname </source>
+ <translation>Празно име поља</translation>
+ </message>
+ <message>
+ <source>column </source>
+ <translation>колона</translation>
+ </message>
+ <message>
+ <source>Imported from CSV file</source>
+ <translation>Увезено из CSV датотеке</translation>
+ </message>
+ <message>
+ <source>Original data: </source>
+ <translation>Изворни подаци:</translation>
+ </message>
+ <message>
+ <source>Error(s) detected in CSV file !</source>
+ <translation>Грешка(грешке) у CSV датотеци !</translation>
+ </message>
+ <message>
+ <source> more messages skipped]</source>
+ <translation>порука преÑкочено]</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Грешка</translation>
+ </message>
+ <message>
+ <source>CSV import: writer has errors:
+</source>
+ <translation>CSV увоз: грешке приликом упиÑа:
+</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWizard</name>
+ <message>
+ <source>Error</source>
+ <translation>Грешка</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðије могуће израчунати главни кључ</translation>
+ </message>
+</context>
+<context>
+ <name>CsvParserModel</name>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n бајт(ова),</numerusform><numerusform>%n бајт(ова),</numerusform><numerusform>%n бајт(ова),</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n ред(ова),</numerusform><numerusform>%n ред(ова),</numerusform><numerusform>%n ред(ова),</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n колона</numerusform><numerusform>%n колона</numerusform><numerusform>%n колона</numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseOpenWidget</name>
+ <message>
+ <source>Enter master key</source>
+ <translation>УнеÑите главни кључ</translation>
+ </message>
+ <message>
+ <source>Key File:</source>
+ <translation>Кључ-Датотека:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Лозинка:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Разгледај</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>ОÑвежи</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Изазов Одговор:</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ðије могуће отворити базу података.</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Ðије могуће отворити кључ-датотеку</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Све датотеке</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Датотеке Ñа кључем</translation>
+ </message>
+ <message>
+ <source>Select key file</source>
+ <translation>Одаберите кључ-датотеку</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseRepairWidget</name>
+ <message>
+ <source>Repair database</source>
+ <translation>Оправи базу података</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Грешка</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Ðије могуће отворити кључ-датотеку</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ðије могуће отворити базу података.</translation>
+ </message>
+ <message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>База података уÑпешно отворена. Ðема шта да Ñе уради.</translation>
+ </message>
+ <message>
+ <source>Success</source>
+ <translation>УÑпешно</translation>
+ </message>
+ <message>
+ <source>The database has been successfully repaired
+You can now save it.</source>
+ <translation>База података је уÑпешно оправљена
+Сада је можете Ñачувати.</translation>
+ </message>
+ <message>
+ <source>Unable to repair the database.</source>
+ <translation>Ðије могуће оправити базу података.</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidget</name>
+ <message>
+ <source>General</source>
+ <translation>Опште</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (подразумевано)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Име базе података:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>ÐžÐ¿Ð¸Ñ Ð±Ð°Ð·Ðµ података:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Подразумевано кориÑничко име:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation>МакÑималан број Ñтавки из иÑторије:</translation>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation>МакÑималан број Ñтавки у иÑторији:</translation>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation> MiB</translation>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>КориÑти корпу за отпатке</translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
+ <message>
+ <source>Root</source>
+ <comment>Root group</comment>
+ <translation>Корен</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 База података</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Све датотеке</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Отвори базу података</translation>
+ </message>
+ <message>
+ <source>File not found!</source>
+ <translation>Датотека није пронађена!</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ðије могуће отворити базу података.</translation>
+ </message>
+ <message>
+ <source>File opened in read only mode.</source>
+ <translation>Датотека је отворена у моду Ñамо за читање.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Отвори CSV датотеку</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV датотека</translation>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation>Све датотеке (*)</translation>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation>Удружи базу података</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Отвори KeePass 1 базу података</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 база података</translation>
+ </message>
+ <message>
+ <source>Close?</source>
+ <translation>Затвори?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; у моду за измене.
+Одбаци Ñве измене и Ñвеједно затвори?</translation>
+ </message>
+ <message>
+ <source>Save changes?</source>
+ <translation>Сними измене?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
+ <translation>&quot;%1&quot; је измењен.
+Сачувај измене?</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>УпиÑивање у базу података није уÑпело.</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>Лозинке</translation>
+ </message>
+ <message>
+ <source>Save database as</source>
+ <translation>Сними базу података као</translation>
+ </message>
+ <message>
+ <source>Export database to CSV file</source>
+ <translation>Извези базу података у CSV датотеку</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>УпиÑивање у CSV датотеку није уÑпело.</translation>
+ </message>
+ <message>
+ <source>New database</source>
+ <translation>Ðова база података</translation>
+ </message>
+ <message>
+ <source>locked</source>
+ <translation>закључано</translation>
+ </message>
+ <message>
+ <source>Lock database</source>
+ <translation>Закључај базу података</translation>
+ </message>
+ <message>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
+ <translation>Ðије могуће закључати базу података јер је тренутно ажурирате.
+Молим Ð²Ð°Ñ Ñачувајте измене или их одбаците.</translation>
+ </message>
+ <message>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation>Ова база података је измењена.
+Да ли желите да је Ñачувате пре закључавања?
+У Ñупротном Ñве измене ће бити изгубљене.</translation>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseWidget</name>
+ <message>
+ <source>Searching...</source>
+ <translation>Претрага је у току...</translation>
+ </message>
+ <message>
+ <source>Change master key</source>
+ <translation>Промени главни кључ</translation>
+ </message>
+ <message>
+ <source>Delete entry?</source>
+ <translation>Обриши Ñтавку?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
+ <translation>Да ли Ñте Ñигурни да желите да обришете Ñтавку &quot;%1&quot;?</translation>
+ </message>
+ <message>
+ <source>Delete entries?</source>
+ <translation>Обриши Ñтавке?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete %1 entries for good?</source>
+ <translation>Да ли Ñте Ñигурни да желите да обришете %1 Ñтавке?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>ПремеÑти Ñтавку у корпу за отпатке?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Да ли Ñте Ñигурни да желите да премеÑтите Ñтавку &quot;%1&quot; у корпу за отпатке?</translation>
+ </message>
+ <message>
+ <source>Move entries to recycle bin?</source>
+ <translation>ПремеÑти Ñтавке у корпу за отпатке?</translation>
+ </message>
+ <message numerus="yes">
+ <source>Do you really want to move %n entry(s) to the recycle bin?</source>
+ <translation><numerusform>Да ли Ñте Ñигурни да желите да премеÑтите %n Ñтавку у корпу за отпатке?</numerusform><numerusform>Да ли Ñте Ñигурни да желите да премеÑтите %n Ñтавке у корпу за отпатке?</numerusform><numerusform>Да ли Ñте Ñигурни да желите да премеÑтите %n Ñтавку(Ñтавке) у корпу за отпатке?</numerusform></translation>
+ </message>
+ <message>
+ <source>Execute command?</source>
+ <translation>Изврши команду?</translation>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Да ли Ñте Ñигурни да желите да извршите Ñледећу команду? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>Запамти мој избор</translation>
+ </message>
+ <message>
+ <source>Delete group?</source>
+ <translation>Обриши групу?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Да ли Ñте Ñигурни да желите да обришете групу &quot;%1&quot;?</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðије могуће израчунати главни кључ</translation>
+ </message>
+ <message>
+ <source>No current database.</source>
+ <translation>Ðема тренутне базе података.</translation>
+ </message>
+ <message>
+ <source>No source database, nothing to do.</source>
+ <translation>Ðема изворне базе података, нема шта да Ñе уради.</translation>
+ </message>
+ <message>
+ <source>Search Results (%1)</source>
+ <translation>Резултати претраге (%1)</translation>
+ </message>
+ <message>
+ <source>No Results</source>
+ <translation>Ðема резултата</translation>
+ </message>
+ <message>
+ <source>File has changed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation>Датотека базе података је измењена. Да ли желите да учитате измене?</translation>
+ </message>
+ <message>
+ <source>Merge Request</source>
+ <translation>Споји захтев</translation>
+ </message>
+ <message>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <translation>Ðије могуће отворити нову датотеку базе података током аутоматÑког учитавања тренутне базе.</translation>
+ </message>
+ <message>
+ <source>Empty recycle bin?</source>
+ <translation>ИÑпразни корпу за отпатке</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <translation>Да ли Ñте Ñигурни да желите да желите да трајно обришете Ñве Ñтавке из корпе за отпатке?</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Генериши TOTP токен</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Затвори</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Опште</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Лозинка</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Датум иÑтека</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>КориÑничко име</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>ÐутоматÑко куцање</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Претрага је у току...</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Ðтрибути</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Прилози</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Белешке</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Прозор</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>РедоÑлед</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Претрага</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>ОчиÑти</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Ðикада</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[ЗÐШТИЋЕÐО]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Онемогућено</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Омогућено</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidget</name>
+ <message>
+ <source>Entry</source>
+ <translation>УноÑ</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Ðапредно</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>Икона</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>ÐутоматÑко-куцање</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>ОÑобине</translation>
+ </message>
+ <message>
+ <source>History</source>
+ <translation>ИÑторија</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Ðгент</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>/</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(енкриптовано)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Одаберите приватни кључ</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Датотека је превелика да би била приватни кључ</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>ÐеуÑпешно отварање приватног кључа</translation>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation>ИÑторија уноÑа</translation>
+ </message>
+ <message>
+ <source>Add entry</source>
+ <translation>Додај уноÑ</translation>
+ </message>
+ <message>
+ <source>Edit entry</source>
+ <translation>Измени уноÑ</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Унете Ñу две различите лозинке.</translation>
+ </message>
+ <message>
+ <source>New attribute</source>
+ <translation>Ðови атрибут</translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Потврди уклањање</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Да ли Ñте Ñигурни да желите да уклоните атрибут?</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[ЗÐШТИЋЕÐО]</translation>
+ </message>
+ <message>
+ <source>Press reveal to view or edit</source>
+ <translation>Молимо Ð²Ð°Ñ Ð´Ð° откријете да биÑте видели или изменили </translation>
+ </message>
+ <message>
+ <source>Tomorrow</source>
+ <translation>Сутра</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation><numerusform>%n недеља</numerusform><numerusform>%n недеље(а)</numerusform><numerusform>%n недеље(а)</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n month(s)</source>
+ <translation><numerusform>%n меÑец</numerusform><numerusform>%n меÑеца(и)</numerusform><numerusform>%n меÑеца(и)</numerusform></translation>
+ </message>
+ <message>
+ <source>1 year</source>
+ <translation>1 година</translation>
+ </message>
+ <message>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAdvanced</name>
+ <message>
+ <source>Additional attributes</source>
+ <translation>Додатни атрибути</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Додај</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Уклони</translation>
+ </message>
+ <message>
+ <source>Edit Name</source>
+ <translation>Измени име</translation>
+ </message>
+ <message>
+ <source>Protect</source>
+ <translation>Заштити</translation>
+ </message>
+ <message>
+ <source>Reveal</source>
+ <translation>Откриј</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Прилози</translation>
+ </message>
+ <message>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
+ <message>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Омогући ÐутоматÑко-Куцање за овај уноÑ</translation>
+ </message>
+ <message>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <translation>ÐаÑледи подразумевану Ñеквенцу за ÐутоматÑко-Куцање од &amp;group</translation>
+ </message>
+ <message>
+ <source>&amp;Use custom Auto-Type sequence:</source>
+ <translation>&amp;КориÑти поÑебну Ñеквенцу за ÐутоматÑко-Куцање:</translation>
+ </message>
+ <message>
+ <source>Window Associations</source>
+ <translation>Везе Ñа прозорима</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>ÐаÑлов прозора:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetHistory</name>
+ <message>
+ <source>Show</source>
+ <translation>Прикажи</translation>
+ </message>
+ <message>
+ <source>Restore</source>
+ <translation>Обнови</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>Обриши</translation>
+ </message>
+ <message>
+ <source>Delete all</source>
+ <translation>Обриши Ñве</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetMain</name>
+ <message>
+ <source>URL:</source>
+ <translation>URL:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Лозинка:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>Понови:</translation>
+ </message>
+ <message>
+ <source>Title:</source>
+ <translation>ÐаÑлов:</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Белешке</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation>ПредефиниÑани</translation>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Штиклирај поље жа потврду да биÑте приказали Ñекцију за белешке.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>КориÑничко име:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>ИÑтиче</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>Уклони кључ Ñа агента након акције</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>Ñекунди</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>ОтиÑак прÑта</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Уклони кључ Ñа агента када је база података затворена/закључана</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Јавни кључ</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Додај кључ агенту када је база података отворена/откључана</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Коментар</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Декриптуј</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>/</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Копирај</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Приватни кључ</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Спољашња датотека</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Разгледај...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Прилог</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Додај агенту</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Уклони Ñа агента</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Захтевај потврду приликом коришћења овог кључа</translation>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidget</name>
+ <message>
+ <source>Group</source>
+ <translation>Група</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>Икона</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>ОÑобине</translation>
+ </message>
+ <message>
+ <source>Add group</source>
+ <translation>Додај групу</translation>
+ </message>
+ <message>
+ <source>Edit group</source>
+ <translation>Измени групу</translation>
+ </message>
+ <message>
+ <source>Enable</source>
+ <translation>Омогући</translation>
+ </message>
+ <message>
+ <source>Disable</source>
+ <translation>Онемогући</translation>
+ </message>
+ <message>
+ <source>Inherit from parent group (%1)</source>
+ <translation>ÐаÑледи од родитељÑке групе (%1)</translation>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidgetMain</name>
+ <message>
+ <source>Name</source>
+ <translation>Име</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Белешке</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>ИÑтиче</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Претрага</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>ÐутоматÑко-куцање</translation>
+ </message>
+ <message>
+ <source>&amp;Use default Auto-Type sequence of parent group</source>
+ <translation>КориÑти подразумевану Ñеквенцу за ÐутоматÑко-Куцање од родитељÑке групе</translation>
+ </message>
+ <message>
+ <source>Set default Auto-Type se&amp;quence</source>
+ <translation>ПодеÑи као подразумевану Ñеквенцу за ÐутоматÑко-Куцање</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetIcons</name>
+ <message>
+ <source>&amp;Use default icon</source>
+ <translation>КориÑти подражумевану иконицу</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>КориÑти поÑебну иконицу</translation>
+ </message>
+ <message>
+ <source>Add custom icon</source>
+ <translation>Додај поÑебну иконицу</translation>
+ </message>
+ <message>
+ <source>Delete custom icon</source>
+ <translation>Обриши поÑебну иконицу</translation>
+ </message>
+ <message>
+ <source>Download favicon</source>
+ <translation>Преузми иконицу Ñа Ñајта</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Ðије могуће добавити иконицу Ñа Ñајта.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Савет: Можете омогућити Гугл као резерву под Ðлатке&gt;Подешавања&gt;СигурноÑÑ‚</translation>
+ </message>
+ <message>
+ <source>Images</source>
+ <translation>Слике</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Све датотеке</translation>
+ </message>
+ <message>
+ <source>Select Image</source>
+ <translation>Одабери Ñлику</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
+ <translation>Ðије могуће учитати иконицу</translation>
+ </message>
+ <message>
+ <source>Custom icon already exists</source>
+ <translation>ПоÑебна иконица већ поÑтоји</translation>
+ </message>
+ <message>
+ <source>Confirm Delete</source>
+ <translation>Потврди бриÑање</translation>
+ </message>
+ <message>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <translation>Ову иконицу кориÑти %1 уноÑа, и биће замењена подразумеваном иконицом. Да ли Ñте Ñигурни да желите да је обришете?</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetProperties</name>
+ <message>
+ <source>Created:</source>
+ <translation>Креирано:</translation>
+ </message>
+ <message>
+ <source>Modified:</source>
+ <translation>Измењено:</translation>
+ </message>
+ <message>
+ <source>Accessed:</source>
+ <translation>ПриÑтупљено:</translation>
+ </message>
+ <message>
+ <source>Uuid:</source>
+ <translation>Uuid:</translation>
+ </message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Уклони</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Entry</name>
+ <message>
+ <source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation>- Дупликат</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Име</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Додај</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Уклони</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Отвори</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Сними</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Одаберите датотеке</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Потврди уклањање</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Сними прилоге</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Потврди пребриÑање</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Ðије могуће отворити датотеке:
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttributesModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Име</translation>
+ </message>
+</context>
+<context>
+ <name>EntryHistoryModel</name>
+ <message>
+ <source>Last modified</source>
+ <translation>ПоÑледњи пут измењено</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>ÐаÑлов</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>КориÑничко име</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+</context>
+<context>
+ <name>EntryModel</name>
+ <message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Референца:</translation>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Група</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>ÐаÑлов</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>КориÑничко име</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Ðикада</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Лозинка</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Белешке</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>ИÑтиче</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Прилози</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Group</name>
+ <message>
+ <source>Recycle Bin</source>
+ <translation>Корпа за отпатке</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>HttpPasswordGeneratorWidget</name>
+ <message>
+ <source>Length:</source>
+ <translation>Дужина:</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Типови карактера</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>Велика Ñлова</translation>
+ </message>
+ <message>
+ <source>A-Z</source>
+ <translation>A-Z</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>Мала Ñлова</translation>
+ </message>
+ <message>
+ <source>a-z</source>
+ <translation>a-z</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>Бројеви</translation>
+ </message>
+ <message>
+ <source>0-9</source>
+ <translation>0-9</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>ПоÑебни карактери</translation>
+ </message>
+ <message>
+ <source>/*_&amp; ...</source>
+ <translation>/*_&amp; ...</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>ИзоÑтави Ñличне карактере</translation>
+ </message>
+ <message>
+ <source>Ensure that the password contains characters from every group</source>
+ <translation>Обезбеди да лозинка Ñадржи карактере из Ñваке групе</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Проширени ASCII</translation>
+ </message>
+</context>
+<context>
+ <name>KMessageWidget</name>
+ <message>
+ <source>&amp;Close</source>
+ <translation>Затвори</translation>
+ </message>
+ <message>
+ <source>Close message</source>
+ <translation>Затвори поруку</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðије могуће израчунати главни кључ</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Издавање изазов-одговора није уÑпело.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>ÐеиÑправан кључ или неиÑправна база података.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Издавање изазов-одговора није уÑпело.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðије могуће израчунати главни кључ</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðије могуће израчунати главни кључ</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðије могуће израчунати главни кључ</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Ðије KeePass база података</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation>Увези KeePass1 базу података</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Ðије могуће отворити базу података.</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation>Ðије могуће прочитати Кључ-Датотеку:</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Ðије KeePass база података</translation>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation>Енкрипциони алгоритам није подржан.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation>Верзија KeePass базе података није подржана.</translation>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation>Корен</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðије могуће израчунати главни кључ</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>ÐеиÑправан кључ или неиÑправна база података.</translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Друга инÑтанца KeePassXC апликације је већ активна.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Грешка</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>База података</translation>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation>Скорашње базе података</translation>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation>Увези</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Помоћ</translation>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation>УноÑи</translation>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation>Копирај атрибут</translation>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Groups</source>
+ <translation>Групе</translation>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation>Ðлатке</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>ÐапуÑти</translation>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation>О апликацији</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Отвори базу података...</translation>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation>Сними базу података</translation>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation>Затвори базу података</translation>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation>Ðова база података</translation>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation>Удружи податке из KeePassX базе података</translation>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation>Додај нови уноÑ</translation>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation>Прикажи/Измени уноÑ</translation>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation>Обриши уноÑ</translation>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation>Додај нову групу</translation>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation>Измени групу</translation>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation>Обриши групу</translation>
+ </message>
+ <message>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Сачувај базу података као...</translation>
+ </message>
+ <message>
+ <source>Change &amp;master key...</source>
+ <translation>Промени главни кључ</translation>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation>Подешавања базе података</translation>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation>Подешавања базе података</translation>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation>Ðаправи дупликат уноÑа</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>Пронађи</translation>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation>Копирај кориÑничко име</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>Копирај кориÑничко име</translation>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation>Копирај лозинку</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>Копирај лозинку</translation>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation>Подешавања</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Генератор Лозинки</translation>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation>Изврши ÐутоматÑко-куцање</translation>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation>Отвори URL</translation>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation>Закључај базу података</translation>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation>ÐаÑлов</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation>Копирај назив</translation>
+ </message>
+ <message>
+ <source>&amp;URL</source>
+ <translation>&amp;URL</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation>Копирај URL</translation>
+ </message>
+ <message>
+ <source>&amp;Notes</source>
+ <translation>Белешке</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
+ <translation>Копирај белешке</translation>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation>Извези у CSV датотеку</translation>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation>Увези KeePass 1 базу података</translation>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation>Увези CSV датотеку...</translation>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation>Оправи базу података...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Прикажи TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>ПодеÑи TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Копирај &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>ИÑпразни корпу за отпатке</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>ОчиÑти иÑторију</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>Грешка приликом приÑтупа конфигурационој датотеци %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation>Ñамо-читање</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Подешавања</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation>ÐапуÑти KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 База података</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Све датотеке</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Отвори базу података</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Сними иÑправљену базу података</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>УпиÑивање у базу података није уÑпело.</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
+ <message>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>ÐеиÑправна датотека Ñа кључем, очекује Ñе OpenSSH кључ</translation>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation>Декодирање Base64 није уÑпело</translation>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation>Кључ-датотека је превише мала.</translation>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
+ <translation>Идентификатор магичног заглавља Кључ-датотеке није валидан </translation>
+ </message>
+ <message>
+ <source>Found zero keys</source>
+ <translation>Ðије пронађен ниједан кључ</translation>
+ </message>
+ <message>
+ <source>Failed to read public key.</source>
+ <translation>Ðије могуће прочитати јавни кључ.</translation>
+ </message>
+ <message>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Кључ-датотека је корумпирана, није уÑпело ишчитавање приватног кључа</translation>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation>Ðема приватног кључа за декриптовање</translation>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Ðије могуће запиÑати јавни кључ јер је празан</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Ðеочекиван крај датотеке приликом упиÑивања јавног кључа</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Ðије могуће запиÑати приватни кључ јер је празан</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Ðеочекиван крај датотеке приликом упиÑивања приватног кључа</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Дијалог</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Омогући KeePassHTTP Ñервер</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Опште</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Сортирај пронађене уноÑе по кориÑничком имену</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Сортирај пронађене уноÑе по наÑлову</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>Генератор Лозинки</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Ðапредно</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Увек дозволи приÑтуп уноÑима</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP Порт:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Подразумевани порт: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Лозинка:</translation>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>јачина</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>ентропија</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Лозинка</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Типови карактера</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>Велика Ñлова</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>Мала Ñлова</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>Бројеви</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>ПоÑебни карактери</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Проширени ASCII</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>ИзоÑтави Ñличне карактере</translation>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation>Обезбеди да лозинка Ñадржи карактере из Ñваке групе</translation>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>Дужина:</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>Фразална Лозинка</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation>ЛиÑта фраза:</translation>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>Број Фраза:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Разделник Фраза:</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>Генериши</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Кпирај</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Прихвати</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Затвори</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>Примени</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation>Ентропија: %1 бит</translation>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation>Квалитет Лозинке: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>Бедан</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>Слаб</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>Добар</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>Одличан</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Додај нови ÑƒÐ½Ð¾Ñ Ñƒ базу података.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Путања до базе података.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Кључ-Датотека базе података.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>путања</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>КориÑничко име за овај уноÑ.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>кориÑничко име</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL за овај уноÑ.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Питај за лозинку уноÑа.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Генериши лозинку за овај уноÑ.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Дужина генериÑане лозинке.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>дужина</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Путања уноÑа који треба да Ñе дода.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Копирај лозинку</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Измени уноÑ.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>ÐаÑлов уноÑа.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>наÑлов</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+ДоÑтупне команде:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation>NULL уређај</translation>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation>грешка приликом читања Ñа уређаја</translation>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation>датотека је празна!
+</translation>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation>неиÑправна ниÑка</translation>
+ </message>
+ <message>
+ <source>missing closing quote</source>
+ <translation>недоÑтаје завршни наводник</translation>
+ </message>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Група</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>ÐаÑлов</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>КориÑничко име</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Лозинка</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Белешке</translation>
+ </message>
+ <message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation>Интеграција Ñа прегледачем</translation>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation>ПритиÑни</translation>
+ </message>
+ <message>
+ <source>Passive</source>
+ <translation>ПаÑивно</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Ðгент</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor</name>
+ <message>
+ <source>Internal zlib error when compressing: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error writing to underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error opening underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error reading data from underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error when decompressing: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
+ <message>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Претрага</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>ОчиÑти</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Limit search to selected group</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <source>Application Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Опште</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>Грешка приликом приÑтупа конфигурационој датотеци %1</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetGeneral</name>
+ <message>
+ <source>Basic Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember last databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically save on exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically save after every change</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize when copying to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use group icon on entry creation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray when minimized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Language</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>ÐутоматÑко-куцање</translation>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always ask before performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Global Auto-Type shortcut</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Опште</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetSecurity</name>
+ <message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear clipboard after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases after inactivity of</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Convenience</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases after minimizing the window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t require password repeat when it is visible</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show passwords in cleartext by default</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide passwords in the preview panel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide entry notes by default</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use Google as fallback for downloading website icons</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SetupTotpDialog</name>
+ <message>
+ <source>Setup TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use custom settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Note: Change these settings only if you know what you are doing.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Time step:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>8 digits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>6 digits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Code size:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>TotpDialog</name>
+ <message>
+ <source>Timed Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>000000</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Кпирај</translation>
+ </message>
+ <message>
+ <source>Expires in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>UnlockDatabaseWidget</name>
+ <message>
+ <source>Unlock database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>WelcomeWidget</name>
+ <message>
+ <source>Start storing your passwords securely in a KeePassXC database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Create new database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Open existing database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import from KeePass 1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import from CSV</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Recent databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>main</name>
+ <message>
+ <source>Remove an entry from the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Путања до базе података.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to remove.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path to a custom config file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>key file of the database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read password of the database from stdin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_sv.ts b/share/translations/keepassx_sv.ts
index a9e8a85d7..e57292e61 100644
--- a/share/translations/keepassx_sv.ts
+++ b/share/translations/keepassx_sv.ts
@@ -10,16 +10,32 @@
<translation>Om</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Anmäl fel på: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC distribueras enligt villkoren i GNU General Public License (GPL) version 2 eller (om du vill) version 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
- <translation type="unfinished"/>
+ <translation>Medverkande</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Se Bidragsgivare på GitHub&lt;/a&gt;</translation>
</message>
<message>
<source>Debug Info</source>
- <translation type="unfinished"/>
+ <translation>Felsöknings Information</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Inkludera följande information när du rapporterar ett fel:</translation>
</message>
<message>
<source>Copy to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopiera till urklipp</translation>
</message>
<message>
<source>Version %1
@@ -29,52 +45,51 @@
</message>
<message>
<source>Revision: %1</source>
- <translation type="unfinished"/>
+ <translation>Ändring: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Utdelning: %1</translation>
</message>
<message>
<source>Libraries:</source>
- <translation type="unfinished"/>
+ <translation>Arkiv:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
- <translation type="unfinished"/>
+ <translation>Operativ system: %1
+CPU-arkitektur: %2
+Kärna: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC distribueras enligt villkoren i GNU General Public License (GPL) version 2 eller (om du vill) version 3.</translation>
+ <translation>Aktiverade tillägg:</translation>
</message>
<message>
<source>Project Maintainers:</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation type="unfinished"/>
+ <translation>Projekt Ansvariga:</translation>
</message>
<message>
- <source>Include the following information whenever you report a bug:</source>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
+ <source>Build Type: %1
+</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Bekräfta åtkomst</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
- <translation type="unfinished"/>
+ <translation>Kom ihåg detta val</translation>
</message>
<message>
<source>Allow</source>
@@ -87,11 +102,15 @@ Kernel: %3 %4</source>
<message>
<source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source>
- <translation type="unfinished"/>
+ <translation>%1 har begärt åtkomst till lösenord för följande objekt(en).
+Vänligen välj om du vill tillåta åtkomst.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation type="unfinished"/>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Aktivera SSH Agent (kräver omstart)</translation>
</message>
</context>
<context>
@@ -102,7 +121,27 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
- <translation type="unfinished"/>
+ <translation>Autoskriv – KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Autoskriv</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>Din autoskrivsats innehåller ett syntaxfel!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Det här autoskrivkommandot innehåller en lång fördröjning. Vill du verkligen fortsätta?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Det här autoskrivkommandot innehåller mycket långsamma tangenttryckningar. Vill du verkligen fortsätta?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Det här autoskrivkommandot innehåller parametrar som upprepas många gånger. Vill du verkligen fortsätta?</translation>
</message>
</context>
<context>
@@ -121,15 +160,314 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Grupp</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Titel</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Användarnamn</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekvens</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Autoskriv – KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Välj post att auto-skriva</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>Bekräfta åtkomst för KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Kom ihåg det här valet</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Tillåt</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Neka</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 har begärt åtkomst till lösenorden för följande objekt.
+Vill du tillåta det?</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogruta</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Det här krävs för KeePassXC-Browser ska kunna komma åt dina databaser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Aktivera KeepassXC:s webbläsarintegration</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Allmänt</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Aktivera integration i dessa webbläsare:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Visa ett &amp;meddelande när behörighetsuppgifter begärs</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Be&amp;gär att låsa upp databasen om den är låst</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Bara poster med samma protokoll (http://, https:// etc.) returneras.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Matcha adressens protokoll (t.ex. https://)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Returnerar bara de lämpligaste posterna för en viss webbadress istället för alla poster som rör den domänen.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Returnera bara de lämpligaste</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avancerat</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatiskt skapande eller uppdaterande av strängfält stöds inte.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Utforska...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Exekverbara filer (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Spara och tillåt åtkomst</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Skriv över befintlig nyckel?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Uppdatera post</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Vill du uppdatera informationen i %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Databasen är låst!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Inställningar är inte tillgängliga!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Hittade inga nycklar</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Nycklar borttagna från databasen</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Tog bort behörigheter</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Den aktiva databasen innehåller inte en post med behörigheter.</translation>
+ </message>
</context>
<context>
<name>ChangeMasterKeyWidget</name>
@@ -146,6 +484,10 @@ Please select whether you want to allow access.</source>
<translation>Repetera lösenord:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Browse</source>
<translation>Bläddra</translation>
</message>
@@ -154,6 +496,14 @@ Please select whether you want to allow access.</source>
<translation>Skapa</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Uppdatera</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Nyckel-filer</translation>
</message>
@@ -174,6 +524,10 @@ Please select whether you want to allow access.</source>
<translation>Välj nyckel-fil</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Tomt lösenord</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Vill du verkligen vill använda en tom sträng som lösenord?</translation>
</message>
@@ -188,22 +542,17 @@ Please select whether you want to allow access.</source>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
+ <source>Legacy key file format</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cha&amp;llenge Response</source>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Refresh</source>
- <translation>Uppdatera</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>Tomt lösenord</translation>
- </message>
- <message>
<source>Changing master key failed: no YubiKey inserted.</source>
<translation type="unfinished"/>
</message>
@@ -212,26 +561,26 @@ Please select whether you want to allow access.</source>
<name>CloneDialog</name>
<message>
<source>Clone Options</source>
- <translation type="unfinished"/>
+ <translation>Klonings alternativ</translation>
</message>
<message>
- <source>Replace username and password with references</source>
+ <source>Append &apos; - Clone&apos; to title</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy history</source>
- <translation type="unfinished"/>
+ <source>Replace username and password with references</source>
+ <translation>Ersätt användarnamn och lösenord med referenser</translation>
</message>
<message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation type="unfinished"/>
+ <source>Copy history</source>
+ <translation>Kopiera historik</translation>
</message>
</context>
<context>
<name>CsvImportWidget</name>
<message>
<source>Import CSV fields</source>
- <translation type="unfinished"/>
+ <translation>Importera CSV fält</translation>
</message>
<message>
<source>filename</source>
@@ -239,15 +588,15 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>size, rows, columns</source>
- <translation type="unfinished"/>
+ <translation>storlek, rader, kolumner</translation>
</message>
<message>
<source>Encoding</source>
- <translation type="unfinished"/>
+ <translation>Kodning</translation>
</message>
<message>
<source>Codec</source>
- <translation type="unfinished"/>
+ <translation>Codec</translation>
</message>
<message>
<source>Text is qualified by</source>
@@ -255,7 +604,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Fields are separated by</source>
- <translation type="unfinished"/>
+ <translation>Fält är separerade med</translation>
</message>
<message>
<source>Comments start with</source>
@@ -263,15 +612,15 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>First record has field names</source>
- <translation type="unfinished"/>
+ <translation>Första data har fältnamn</translation>
</message>
<message>
<source>Number of headers line to discard</source>
- <translation type="unfinished"/>
+ <translation>Antal av rubrik rader att kasta bort</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
- <translation type="unfinished"/>
+ <translation>Överväg &apos;\&apos; som ändelse tecken</translation>
</message>
<message>
<source>Preview</source>
@@ -279,11 +628,11 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Column layout</source>
- <translation type="unfinished"/>
+ <translation>Kolumn layout</translation>
</message>
<message>
<source>Not present in CSV file</source>
- <translation type="unfinished"/>
+ <translation>Finns inte i CSV fil</translation>
</message>
<message>
<source>Empty fieldname </source>
@@ -295,19 +644,19 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Imported from CSV file</source>
- <translation type="unfinished"/>
+ <translation>Importerat från CSV fil</translation>
</message>
<message>
<source>Original data: </source>
- <translation type="unfinished"/>
+ <translation>Ursprungsdata:</translation>
</message>
<message>
<source>Error(s) detected in CSV file !</source>
- <translation type="unfinished"/>
+ <translation>Ett eller flera fel upptäckta i CSV fil!</translation>
</message>
<message>
<source> more messages skipped]</source>
- <translation type="unfinished"/>
+ <translation>Fler meddelande hoppades över</translation>
</message>
<message>
<source>Error</source>
@@ -316,16 +665,12 @@ Please select whether you want to allow access.</source>
<message>
<source>CSV import: writer has errors:
</source>
- <translation type="unfinished"/>
+ <translation>CSV importering: skrivare har fel:</translation>
</message>
</context>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Error</source>
<translation>Fel</translation>
</message>
@@ -336,17 +681,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> rader, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> kolumner</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
</context>
<context>
@@ -368,6 +713,14 @@ Please select whether you want to allow access.</source>
<translation>Bläddra</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Uppdatera</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Utmanings respons</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Kunde inte öppna databas.</translation>
</message>
@@ -376,6 +729,21 @@ Please select whether you want to allow access.</source>
<translation>Kan inte öppna nyckel-fil</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>All files</source>
<translation>Alla filer</translation>
</message>
@@ -387,14 +755,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>Välj nyckel-fil</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Uppdatera</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -411,14 +771,14 @@ Please select whether you want to allow access.</source>
<translation>Kan inte öppna nyckelfilen</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Databas öppnades fint. Inget att göra.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Misslyckades att öppna databasen.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Databas öppnades fint. Inget att göra.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Succé</translation>
</message>
@@ -436,28 +796,118 @@ Du kan nu spara den.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Databasnamn:</translation>
+ <source>General</source>
+ <translation>Allmänt</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Databasbeskrivning:</translation>
+ <source>Encryption</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (standard)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Transform rounds:</source>
<translation>Transformerings varv:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>Standard användarnamn:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Benchmark</source>
- <translation>Benchmark</translation>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Databasnamn:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Databasbeskrivning:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Standard användarnamn:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Max. history items:</source>
@@ -468,19 +918,19 @@ Du kan nu spara den.</translation>
<translation>Maximal historik storlek:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation type="unfinished"/>
+ <source> MiB</source>
+ <translation>MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation type="unfinished"/>
+ <source>Use recycle bin</source>
+ <translation>Använd soptunnan</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
+ <source>Additional Database Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Algorithm:</source>
+ <source>Enable &amp;compression (recommended)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -488,6 +938,7 @@ Du kan nu spara den.</translation>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Root</translation>
</message>
<message>
@@ -507,22 +958,48 @@ Du kan nu spara den.</translation>
<translation>Filen kunde inte hittas!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Öppna KeePass 1 databas</translation>
+ <source>Unable to open the database.</source>
+ <translation>Kunde inte öppna databas.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 databas</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Fil öppnad i läs-enbart läge.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Öppna CSV fil</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV-fil</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Alla filer (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Slå samman databas</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Öppna KeePass 1 databas</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 databas</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Stäng?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; är i redigeringsläge.
+Kasta ändringarna och stäng ändå?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Spara ändringar?</translation>
</message>
@@ -537,10 +1014,22 @@ Spara ändringarna?</translation>
<translation>Kunde inte skriva till databasen.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Spara databas som</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Exportera databasen till en CSV-fil</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Kunde inte skriva till CSV-filen</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Ny databas</translation>
</message>
@@ -559,12 +1048,6 @@ Please press cancel to finish your changes or discard them.</source>
Tryck avbryt för att ansluta dina ändringar alternativt kasta dem.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Databasen has aldrig sparats.
-Spara databasen eller sluta lås den.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -573,66 +1056,22 @@ Vill du spara databasen innen du låser den?
I annat fall försvinner ändringarna.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>&quot;%1&quot; är i redigeringsläge.
-Kasta ändringarna och stäng ändå?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Exportera databasen till en CSV-fil</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV-fil</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>Kunde inte skriva till CSV-filen</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Kunde inte öppna databas.</translation>
- </message>
- <message>
- <source>Merge database</source>
+ <source>Disable safe saves?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
<translation type="unfinished"/>
</message>
- <message>
- <source>Passwords</source>
- <translation>Lösenord</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Open read-only</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Öppna CSV fil</translation>
- </message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Söker...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Ändra huvud lösenord</translation>
</message>
@@ -653,6 +1092,14 @@ Do you want to open it anyway?</source>
<translation>Vill du verkligen ta bort %1 poser för gott?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Flytta post till papperskorgen?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Vill du verkligen flytta %n poster till papperskorgen?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>Lägg poster i papperskorgen?</translation>
</message>
@@ -661,6 +1108,18 @@ Do you want to open it anyway?</source>
<translation><numerusform>Vill du verkligen flytta %n post till papperskorgen?</numerusform><numerusform>Vill du verkligen flytta %n poster till papperskorgen?</numerusform></translation>
</message>
<message>
+ <source>Execute command?</source>
+ <translation>Utför kommando?</translation>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>Kom ihåg mitt val</translation>
+ </message>
+ <message>
<source>Delete group?</source>
<translation>Ta bort grupp?</translation>
</message>
@@ -673,71 +1132,131 @@ Do you want to open it anyway?</source>
<translation>Kunde inte räkna nu master-nyckeln</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation type="unfinished"/>
+ <source>No current database.</source>
+ <translation>Ingen nuvarande databas.</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation type="unfinished"/>
+ <source>No source database, nothing to do.</source>
+ <translation>Ingen ursprungs databas, inget att göra.</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Söker...</translation>
+ <source>Search Results (%1)</source>
+ <translation>Sökresultat (%1)</translation>
</message>
<message>
- <source>No current database.</source>
- <translation type="unfinished"/>
+ <source>No Results</source>
+ <translation>Inget resultat</translation>
</message>
<message>
- <source>No source database, nothing to do.</source>
+ <source>File has changed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Search Results (%1)</source>
- <translation>Sökresultat (%1)</translation>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation>Databasfilen har ändrats. Vill du ladda in ändringarna?</translation>
</message>
<message>
- <source>No Results</source>
- <translation>Inget resultat</translation>
+ <source>Merge Request</source>
+ <translation>Slå samman begäran</translation>
</message>
<message>
- <source>Execute command?</source>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Remember my choice</source>
+ <source>Empty recycle bin?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Autoreload Request</source>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>DetailsWidget</name>
<message>
- <source>The database file has changed. Do you want to load the changes?</source>
+ <source>Generate TOTP Token</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Merge Request</source>
+ <source>Close</source>
+ <translation>Stäng</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Allmän</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
+ <source>Username</source>
+ <translation>Användarnamn</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <source>Searching</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Empty recycle bin?</source>
+ <source>Attributes</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <source>Attachments</source>
+ <translation>Bilagor</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Anteckningar</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Fönster</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sekvens</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Sök</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Rensa</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Aldrig</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enabled</source>
<translation type="unfinished"/>
</message>
</context>
@@ -768,6 +1287,30 @@ Do you want to open it anyway?</source>
<translation>Historik</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Posthistork</translation>
</message>
@@ -788,22 +1331,20 @@ Do you want to open it anyway?</source>
<translation>Nytt attribut</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Välj fil</translation>
+ <source>Confirm Remove</source>
+ <translation>Bekräfta borttagning</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Kunde inte öppna filen.</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Save attachment</source>
- <translation>Spara bifogad fil</translation>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Kunde inte spara bifogad fil:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Tomorrow</source>
@@ -822,19 +1363,15 @@ Do you want to open it anyway?</source>
<translation>1 år</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Bekräfta borttagning</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
+ <source>Apply generated password?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
+ <source>Do you want to apply the generated password to this entry?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
+ <source>Entry updated successfully.</source>
<translation type="unfinished"/>
</message>
</context>
@@ -853,18 +1390,6 @@ Do you want to open it anyway?</source>
<translation>Ta bort</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Bilagor</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Spara</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Öppna</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation type="unfinished"/>
</message>
@@ -876,24 +1401,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Slå på auto-skriv för denna post</translation>
+ <source>Attachments</source>
+ <translation>Bilagor</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Fönster titel:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Slå på auto-skriv för denna post</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -904,15 +1429,23 @@ Do you want to open it anyway?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Use default se&amp;quence</source>
+ <source>Window Associations</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation type="unfinished"/>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Fönster titel:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
<translation type="unfinished"/>
</message>
</context>
@@ -938,12 +1471,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Titel:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Användarnamn:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -954,20 +1483,104 @@ Do you want to open it anyway?</source>
<translation>Repetera:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Titel:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>GÃ¥r ut</translation>
+ <source>Notes</source>
+ <translation>Anteckningar</translation>
</message>
<message>
<source>Presets</source>
<translation>Förinställningar</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Anteckningar:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Användarnamn:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>GÃ¥r ut</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>sekunder</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Kopiera till urklipp</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Utforska...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1039,24 +1652,20 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
- <source>Add custom icon</source>
- <translation>Lägg till egen ikon</translation>
- </message>
- <message>
- <source>Delete custom icon</source>
- <translation>Ta bort egen ikon</translation>
+ <source>&amp;Use default icon</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Images</source>
- <translation>Bilder</translation>
+ <source>Use custo&amp;m icon</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Alla filer</translation>
+ <source>Add custom icon</source>
+ <translation>Lägg till egen ikon</translation>
</message>
<message>
- <source>Select Image</source>
- <translation>Välj bild</translation>
+ <source>Delete custom icon</source>
+ <translation>Ta bort egen ikon</translation>
</message>
<message>
<source>Download favicon</source>
@@ -1067,31 +1676,35 @@ Do you want to open it anyway?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Can&apos;t read icon</source>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation type="unfinished"/>
+ <source>Images</source>
+ <translation>Bilder</translation>
</message>
<message>
- <source>Use custo&amp;m icon</source>
- <translation type="unfinished"/>
+ <source>All files</source>
+ <translation>Alla filer</translation>
</message>
<message>
- <source>Confirm Delete</source>
+ <source>Select Image</source>
+ <translation>Välj bild</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
<translation type="unfinished"/>
</message>
<message>
- <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <source>Custom icon already exists</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <source>Confirm Delete</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Custom icon already exists</source>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1113,11 +1726,120 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Ta bort</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Namn</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Lägg till</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Ta bort</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Öppna</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Spara</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Bekräfta borttagning</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1150,6 +1872,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Group</source>
<translation>Grupp</translation>
</message>
@@ -1166,8 +1893,66 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
+ <source>Never</source>
+ <translation>Aldrig</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Anteckningar</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>GÃ¥r ut</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Skapad</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Bilagor</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1179,6 +1964,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1228,6 +2024,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>Säkerställ att lösenordet innehåller tecken från varje grupp</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Utökad ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1241,6 +2041,358 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kunde inte räkna nu master-nyckeln</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Fel lösenord eller korrupt databas-fil</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kunde inte räkna nu master-nyckeln</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kunde inte räkna nu master-nyckeln</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Kunde inte räkna nu master-nyckeln</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Inte en KeePass databas.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1270,6 +2422,35 @@ Do you want to open it anyway?</source>
<translation>KeePass databas versionen stöds ej.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Root</source>
<translation>Root</translation>
</message>
@@ -1281,126 +2462,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>Fel lösenord eller korrupt databas-fil</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Inte en KeePass databas.</translation>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>KeePass databas versionen stöds ej.</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Fel lösenord eller korrupt databas-fil</translation>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Kunde inte räkna nu master-nyckeln</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <source>Incorrect group creation time field size</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Kunde inte räkna nu master-nyckeln</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Allvarligt fel vid testning av kryptografiska funktioner.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
+ <source>Incorrect group icon field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <source>Incorrect group level field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
+ <source>Invalid group field type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Missing group id or level</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Öppna databas</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Databasinställningar</translation>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Kopiera användarnamn</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Kopiera lösenord</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
- <translation>Inställningar</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Visa verktygsfält</translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>läs bara</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
- <translation>Visa/dölj fönster</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 databas</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Alla filer</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Spara lagad databas</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Misslyckades med att skriva till databasen.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>En annan instans av KeePassXC körs redan.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Allvarligt fel vid testning av kryptografiska funktioner.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>&amp;Recent databases</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Import</source>
+ <translation>Importera</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation type="unfinished"/>
</message>
@@ -1409,11 +2605,15 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"/>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;View</source>
+ <source>&amp;Tools</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1425,6 +2625,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"/>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation type="unfinished"/>
</message>
@@ -1438,7 +2642,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Merge from KeePassX database</source>
- <translation type="unfinished"/>
+ <translation>Sammanfoga med KeePassX databas</translation>
</message>
<message>
<source>&amp;Add new entry</source>
@@ -1465,23 +2669,23 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Database settings</source>
+ <source>Sa&amp;ve database as...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Clone entry</source>
+ <source>Change &amp;master key...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Timed one-time password</source>
+ <source>&amp;Database settings</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation type="unfinished"/>
+ <source>Database settings</source>
+ <translation>Databasinställningar</translation>
</message>
<message>
- <source>Show TOTP</source>
+ <source>&amp;Clone entry</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1493,14 +2697,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"/>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Kopiera användarnamn</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Kopiera lösenord</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Lösenordsgenerator</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation type="unfinished"/>
</message>
@@ -1517,182 +2733,251 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation type="unfinished"/>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Kopiera titeln till Urklipp</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Kopiera URL till Urklipp</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password Generator</source>
- <translation type="unfinished"/>
+ <source>Copy notes to clipboard</source>
+ <translation>Kopiera anteckningar till Urklipp</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>Töm historiken</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Database</source>
+ <source>Import KeePass 1 database...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import</source>
- <translation>Importera</translation>
+ <source>Import CSV file...</source>
+ <translation>Importera CSV fil...</translation>
</message>
<message>
- <source>&amp;Tools</source>
+ <source>Re&amp;pair database...</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Empty recycle bin</source>
+ <source>Show TOTP</source>
+ <translation>Visa TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Konfigurera TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Kopiera &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Clear history</source>
+ <translation>Töm historiken</translation>
+ </message>
+ <message>
<source>Access error for config file %1</source>
+ <translation>Åtkomstfel för konfigurationsfil %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>read-only</source>
+ <translation>läs bara</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Inställningar</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>Visa/dölj fönster</translation>
+ </message>
+ <message>
<source>Quit KeePassXC</source>
- <translation type="unfinished"/>
+ <translation>Avsluta KeePassXC</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation type="unfinished"/>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 databas</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation type="unfinished"/>
+ <source>All files</source>
+ <translation>Alla filer</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation type="unfinished"/>
+ <source>Open database</source>
+ <translation>Öppna databas</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
+ <source>Save repaired database</source>
+ <translation>Spara lagad databas</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Misslyckades med att skriva till databasen.</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Change &amp;master key...</source>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
<message>
- <source>&amp;Export to CSV file...</source>
+ <source>Invalid key file, expecting an OpenSSH key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import KeePass 1 database...</source>
+ <source>PEM boundary mismatch</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Importera CSV fil...</translation>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;pair database...</source>
+ <source>Key file way too small.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Set up TOTP...</source>
+ <source>Key file magic header id invalid</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>OptionDialog</name>
<message>
- <source>Dialog</source>
+ <source>Found zero keys</source>
<translation type="unfinished"/>
</message>
<message>
- <source>General</source>
- <translation>Allmän</translation>
+ <source>Failed to read public key.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
+ <source>Corrupted key file, reading private key failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
+ <source>No private key payload to decrypt</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
+ <source>Trying to run KDF without cipher</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Advanced</source>
- <translation>Avancerat</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
+ <source>Key derivation failed, key file corrupted?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
+ <source>Decryption failed, wrong passphrase?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
+ <source>Unexpected EOF while reading public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>HTTP Port:</source>
+ <source>Unexpected EOF while reading private key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Default port: 19455</source>
+ <source>Can&apos;t write public key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
+ <source>Unexpected EOF when writing public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
+ <source>Can&apos;t write private key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <source>Unexpected EOF when writing private key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
+ <source>Unsupported key type: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
+ <source>Unknown cipher: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
+ <source>Cipher IV is too short for MD5 kdf</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <source>Unknown KDF: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
+ <source>Unknown key type: %1</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialogruta</translation>
+ </message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
<translation type="unfinished"/>
</message>
<message>
<source>Enable KeePassHTTP server</source>
+ <translation>Aktivera KeePassHTTP server</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Allmän</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
<translation type="unfinished"/>
</message>
<message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
+ <translation>Returnerar bara de lämpligaste posterna för en viss webbadress istället för alla poster som rör den domänen.</translation>
</message>
<message>
<source>&amp;Return only best matching entries</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Begär att låsa upp databasen om den är låst</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation type="unfinished"/>
</message>
@@ -1701,7 +2986,35 @@ Using default port 19455.</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Password Generator</source>
+ <translation>Lösenordsgenerator</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Avancerat</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
<translation type="unfinished"/>
</message>
<message>
@@ -1709,18 +3022,71 @@ Using default port 19455.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatiskt skapande eller uppdaterande av strängfält stöds inte.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Http-Port:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Standard port: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Lösenord:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>styrka</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropi</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Teckentyper</translation>
</message>
@@ -1741,124 +3107,379 @@ Change them only if you know what you are doing.</source>
<translation>Specialtecken</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Utökad ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Uteslut liknande tecken</translation>
</message>
<message>
+ <source>Pick characters from every group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>&amp;Längd:</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>Lösenfras</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation>Ordlista:</translation>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>Antal ord:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>Ord separator:</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>Generera</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Kopiera</translation>
+ </message>
+ <message>
<source>Accept</source>
<translation>Acceptera</translation>
</message>
<message>
- <source>%p%</source>
+ <source>Close</source>
+ <translation>Stäng</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>Utför</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
<translation type="unfinished"/>
</message>
<message>
- <source>strength</source>
+ <source>Password Quality: %1</source>
+ <translation>Lösenord kvalitet: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>DÃ¥lig</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>Svag</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>Bra</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>Utmärkt</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation>Databasen är inte öppen</translation>
+ </message>
+ <message>
+ <source>Database hash not available</source>
<translation type="unfinished"/>
</message>
<message>
- <source>entropy</source>
+ <source>Client public key not received</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Length:</source>
+ <source>Cannot decrypt message</source>
+ <translation>Kan inte avkoda meddelande</translation>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Pick characters from every group</source>
+ <source>Action cancelled or denied</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Generate</source>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Close</source>
- <translation>Stäng</translation>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Apply</source>
+ <source>Key change was not successful</source>
+ <translation>Nyckelbytet misslyckades</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Entropy: %1 bit</source>
+ <source>No saved databases found</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Password Quality: %1</source>
+ <source>Incorrect action</source>
+ <translation>Felaktig åtgärd</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Tomt meddelande mottaget</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>Ingen URL angiven</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Hittade inga inloggningar</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Okänt fel</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Lägga till en ny post i en databas.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Sökväg till databasen</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Nyckelfilen för databasen.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>sökväg</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Användarnamn för posten.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>användarnamn</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL för posten.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Poor</source>
+ <source>Generate a password for the entry.</source>
+ <translation>Generera ett lösenord för posten.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Weak</source>
+ <source>length</source>
+ <translation>längd</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Good</source>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Excellent</source>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>Password</source>
- <translation>Lösenord</translation>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Timeout i sekunder innan Urklipp rensas.</translation>
</message>
<message>
- <source>Extended ASCII</source>
+ <source>Edit an entry.</source>
+ <translation>Redigera en post.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Titel för posten.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>titel</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Sökvägen till posten att redigera.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
+ <source>Password for which to estimate the entropy.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Utföra avancerad analys av lösenordet.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
+ <source>Path of the database to extract.</source>
+ <translation>Sökvägen till databasen som skall extraheras.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Ange lösenordet för att låsa upp %1: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Misslyckades med att ladda nyckelfilen %1: %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+Tillgängliga kommandon:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Namnet på kommandot som ska köras.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Lista databasposter.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Sökvägen till gruppen att lista. Standard är /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Hitta poster snabbt.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Sökord.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Sammanfoga två databaser.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Sökvägen till databasen för att sammanfoga till.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Sökvägen till databasen för att sammanfoga från.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Använda samma autentiseringsuppgifter för båda databasfilerna.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Nyckelfilen för databasen att sammanfoga från.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Visa en posts information.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
- <translation>Kopiera</translation>
+ <source>attribute</source>
+ <translation>attribut</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Namnet på posten som skall visas.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation type="unfinished"/>
</message>
<message>
<source>error reading from device</source>
- <translation type="unfinished"/>
+ <translation>fel vid läsning från enhet</translation>
</message>
<message>
<source>file empty !
</source>
- <translation type="unfinished"/>
+ <translation>filen är tom!
+</translation>
</message>
<message>
<source>malformed string</source>
- <translation type="unfinished"/>
+ <translation>felaktigt uppbyggd sträng</translation>
</message>
<message>
<source>missing closing quote</source>
- <translation type="unfinished"/>
+ <translation>saknar avslutande citattecken</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bitar</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bitar</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bitar</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – rekommenderad)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1877,27 +3498,84 @@ Change them only if you know what you are doing.</source>
<translation>Lösenord</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Anteckningar</translation>
</message>
<message>
- <source>Browser Integration</source>
+ <source>Last Modified</source>
+ <translation>Senast ändrad</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Skapad</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Browser Integration</source>
+ <translation>Webbläsarintegration</translation>
+ </message>
+ <message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
<translation type="unfinished"/>
</message>
<message>
<source>Press</source>
- <translation type="unfinished"/>
+ <translation>Tryck</translation>
</message>
<message>
<source>Passive</source>
+ <translation>Passiv</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1938,8 +3616,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation type="unfinished"/>
+ <source>Search...</source>
+ <translation>Sök...</translation>
</message>
<message>
<source>Search</source>
@@ -1950,100 +3628,100 @@ Change them only if you know what you are doing.</source>
<translation>Rensa</translation>
</message>
<message>
- <source>Search...</source>
- <translation type="unfinished"/>
+ <source>Case Sensitive</source>
+ <translation>Skiftlägeskänslig</translation>
</message>
<message>
<source>Limit search to selected group</source>
- <translation type="unfinished"/>
+ <translation>Begränsa sökningen till vald grupp</translation>
</message>
</context>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
+ <source>KeePassXC: New key association request</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Skriv över befintlig nyckel?</translation>
</message>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Removing stored permissions...</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Uppdatera post</translation>
</message>
<message>
- <source>Abort</source>
- <translation>Avbryt</translation>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Vill du uppdatera informationen i %1 - %2?</translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Databasen är låst!</translation>
</message>
<message>
- <source>The active database does not contain an entry with permissions.</source>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Nycklar borttagna från databasen</translation>
</message>
- <message>
- <source>You have received an association request for the above key.
-If you would like to allow it access to your KeePassXC database
-give it a unique name to identify and accept it.</source>
- <translation type="unfinished"/>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <source>KeePassXC: Overwrite existing key?</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Inga nycklar hittade</translation>
</message>
<message>
- <source>KeePassXC: Update Entry</source>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: Database locked!</source>
- <translation type="unfinished"/>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Inställningar är inte tillgängliga!</translation>
</message>
<message>
- <source>KeePassXC: Removed keys from database</source>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC: No keys found</source>
- <translation type="unfinished"/>
+ <source>Removing stored permissions...</source>
+ <translation>Tar bort lagrade behörigheter...</translation>
</message>
<message>
- <source>KeePassXC: Settings not available!</source>
- <translation type="unfinished"/>
+ <source>Abort</source>
+ <translation>Avbryt</translation>
</message>
<message>
<source>KeePassXC: Removed permissions</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Tog bort behörigheter</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Den aktiva databasen innehåller inte en post med behörigheter.</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2061,16 +3739,32 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Access error for config file %1</source>
- <translation type="unfinished"/>
+ <translation>Åtkomstfel för konfigurationsfil %1</translation>
</message>
</context>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Grund inställningar</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Tillåt endast en öppen instans av KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Komihåg senaste databasen</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Ladda tidigare databaser vid uppstart</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Spara automatiskt när applikationen anslutas</translation>
</message>
@@ -2079,20 +3773,28 @@ give it a unique name to identify and accept it.</source>
<translation>Spara automatiskt efter varje ändring</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Ladda om databasen automatiskt när den ändras externt</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Minimera vid kopiering</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimera fönstret vid start av programmet</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Använd gruppens ikon för nya poster</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Globalt auto-skriv kortkommando</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Markera inte databasen som ändrad vi icke-data förändringar (t.ex. öppna grupper)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Språk</translation>
+ <source>Hide the Details view</source>
+ <translation>Dölj detaljvyn</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2103,66 +3805,84 @@ give it a unique name to identify and accept it.</source>
<translation>Vid minimering, minimera fönstret till systemfältet</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation type="unfinished"/>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation>Vid stängning, minimera fönstret till systemfältet istället</translation>
</message>
<message>
- <source>Automatically reload the database when modified externally</source>
- <translation type="unfinished"/>
+ <source>Dark system tray icon</source>
+ <translation>Mörk ikon för systemfältet</translation>
</message>
<message>
- <source>Hide window to system tray instead of app exit</source>
- <translation type="unfinished"/>
+ <source>Language</source>
+ <translation>Språk</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation type="unfinished"/>
+ <source>Auto-Type</source>
+ <translation>Auto-skriv</translation>
</message>
<message>
- <source>Basic Settings</source>
- <translation type="unfinished"/>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>Använd postens titel för att matcha fönster för global auto-skriv</translation>
</message>
<message>
- <source>Remember last key files and security dongles</source>
- <translation type="unfinished"/>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>Använd postens URL för att matcha fönster för global auto-skriv</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <source>Always ask before performing Auto-Type</source>
+ <translation>Fråga alltid innan auto-skriv utförs</translation>
</message>
<message>
- <source>Auto-Type</source>
- <translation>Auto-skriv</translation>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Globalt auto-skriv kortkommando</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <source>Auto-Type delay</source>
+ <translation>Auto-skriv fördröjning</translation>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
- <translation type="unfinished"/>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation>ms.</translation>
</message>
<message>
- <source>Auto-Type delay</source>
- <translation type="unfinished"/>
+ <source>Startup</source>
+ <translation>Uppstart</translation>
</message>
<message>
- <source> ms</source>
+ <source>File Management</source>
+ <translation>Filhantering</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Backup database file before saving</source>
+ <translation>Gör databasbackup innan sparning</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>General</source>
+ <translation>Allmänt</translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Tidsgränser</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Rensa urklipp efter</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek</translation>
</message>
<message>
@@ -2170,35 +3890,43 @@ give it a unique name to identify and accept it.</source>
<translation>LÃ¥s databaser efter inaktivitet i</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Visa lösenord i klartext som standard</translation>
+ <source>Convenience</source>
+ <translation>Bekvämlighet</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Lås databaserna när sessionen låses eller locket stängs</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
- <translation type="unfinished"/>
+ <translation>Lås databaserna när fönstret minimeras</translation>
</message>
<message>
<source>Don&apos;t require password repeat when it is visible</source>
- <translation type="unfinished"/>
+ <translation>Behöver inte upprepa lösenord när det är synligt</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Visa lösenord i klartext som standard</translation>
</message>
<message>
- <source>Convenience</source>
- <translation type="unfinished"/>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Dölj lösenord i förhandsgranskningsrutan</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation type="unfinished"/>
+ <source>Hide entry notes by default</source>
+ <translation>Dölj posters anteckningar som standard</translation>
</message>
<message>
<source>Privacy</source>
- <translation type="unfinished"/>
+ <translation>Integritet</translation>
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
+ <translation>Använd Google som reserv för att ladda ner webbplatsikoner</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2206,38 +3934,47 @@ give it a unique name to identify and accept it.</source>
<name>SetupTotpDialog</name>
<message>
<source>Setup TOTP</source>
- <translation type="unfinished"/>
+ <translation>Konfigurera TOTP</translation>
</message>
<message>
<source>Key:</source>
+ <translation>Nyckel:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Standard RFC 6238 token inställningar</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
<translation type="unfinished"/>
</message>
<message>
<source>Use custom settings</source>
- <translation type="unfinished"/>
+ <translation>Använd anpassade inställningar</translation>
</message>
<message>
<source>Note: Change these settings only if you know what you are doing.</source>
- <translation type="unfinished"/>
+ <translation>Obs: Ändra bara dessa inställningar om du vet vad du gör.</translation>
</message>
<message>
<source>Time step:</source>
- <translation type="unfinished"/>
+ <translation>Tidsteg:</translation>
</message>
<message>
<source>8 digits</source>
- <translation type="unfinished"/>
+ <translation>8 siffror</translation>
</message>
<message>
<source>6 digits</source>
- <translation type="unfinished"/>
+ <translation>6 siffror</translation>
</message>
<message>
<source>Code size:</source>
- <translation type="unfinished"/>
+ <translation>Kodstorlek:</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>sek</translation>
</message>
</context>
@@ -2245,11 +3982,11 @@ give it a unique name to identify and accept it.</source>
<name>TotpDialog</name>
<message>
<source>Timed Password</source>
- <translation type="unfinished"/>
+ <translation>Tidsinställt Lösenord</translation>
</message>
<message>
<source>000000</source>
- <translation type="unfinished"/>
+ <translation>000000</translation>
</message>
<message>
<source>Copy</source>
@@ -2257,11 +3994,11 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Expires in</source>
- <translation type="unfinished"/>
+ <translation>GÃ¥r ut om</translation>
</message>
<message>
<source>seconds</source>
- <translation type="unfinished"/>
+ <translation>sekunder</translation>
</message>
</context>
<context>
@@ -2274,12 +4011,8 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
- <translation type="unfinished"/>
+ <translation>Påbörja att spara dina lösenord säkert i en KeePassXC databas</translation>
</message>
<message>
<source>Create new database</source>
@@ -2291,7 +4024,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Import from KeePass 1</source>
- <translation type="unfinished"/>
+ <translation>Importera från KeePass 1</translation>
</message>
<message>
<source>Import from CSV</source>
@@ -2301,91 +4034,47 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>Senast använda databaser</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Välkommen till KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>Sökväg till egen konfigurations-fil</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>nyckel-fil för databas</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation type="unfinished"/>
+ <source>Remove an entry from the database.</source>
+ <translation>Ta bort en post från databasen</translation>
</message>
<message>
<source>Path of the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation type="unfinished"/>
+ <translation>Sökväg till databasen</translation>
</message>
<message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation type="unfinished"/>
+ <source>Path of the entry to remove.</source>
+ <translation>Sökväg till posten som tas bort</translation>
</message>
<message>
- <source>Path of the database to extract.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>List database entries.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - plattformsoberoende lösenordshanterare</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation type="unfinished"/>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>namnen på lösenordsdatabaserna som öppnas (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation type="unfinished"/>
+ <source>path to a custom config file</source>
+ <translation>Sökväg till egen konfigurations-fil</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation type="unfinished"/>
+ <source>key file of the database</source>
+ <translation>nyckel-fil för databas</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation type="unfinished"/>
+ <source>read password of the database from stdin</source>
+ <translation>mottag databaslösenord från stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
+ <source>Parent window handle</source>
<translation type="unfinished"/>
</message>
</context>
diff --git a/share/translations/keepassx_th.ts b/share/translations/keepassx_th.ts
new file mode 100644
index 000000000..4fd1c06ef
--- /dev/null
+++ b/share/translations/keepassx_th.ts
@@ -0,0 +1,4078 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="th" version="2.1">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <source>About KeePassXC</source>
+ <translation>เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š KeePassXC</translation>
+ </message>
+ <message>
+ <source>About</source>
+ <translation>เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>รายงานข้อผิดพลาดที่: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC เผยà¹à¸žà¸£à¹ˆà¸ à¸²à¸¢à¹ƒà¸•à¹‰à¹€à¸‡à¸·à¹ˆà¸­à¸™à¹„ขของสัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•à¸ªà¸²à¸˜à¸²à¸£à¸“ะทั่วไปของà¸à¸™à¸¹ (GNU GPL)
+รุ่น 2 หรือรุ่น 3 (คุณสามารถเลือà¸à¹„ด้)</translation>
+ </message>
+ <message>
+ <source>Contributors</source>
+ <translation>ผู้ร่วมสมทบ</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;ดูรายชื่อผู้สมทบบน GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Debug Info</source>
+ <translation>ข้อมูลดีบัà¸</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>ใส่ข้อมูลดังต่อไปนี้ทุà¸à¸„รั้งที่คุณรายงานข้อผิดปà¸à¸•à¸´à¸‚องซอฟต์à¹à¸§à¸£à¹Œ:</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>คัดลอà¸à¹„ปยังคลิปบอร์ด:</translation>
+ </message>
+ <message>
+ <source>Version %1
+</source>
+ <translation>รุ่น %1
+</translation>
+ </message>
+ <message>
+ <source>Revision: %1</source>
+ <translation>à¸à¸²à¸£à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>à¸à¸²à¸£à¸ˆà¸±à¸”จำหน่าย: %1</translation>
+ </message>
+ <message>
+ <source>Libraries:</source>
+ <translation>ไลบรารี:</translation>
+ </message>
+ <message>
+ <source>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</source>
+ <translation>ระบบปà¸à¸´à¸šà¸±à¸•à¸´à¸à¸²à¸£: %1
+สถาปัตยà¸à¸£à¸£à¸¡ CPU: %2
+เคอร์เนล: %3 %4</translation>
+ </message>
+ <message>
+ <source>Enabled extensions:</source>
+ <translation>ส่วนขยายที่เปิดใช้:</translation>
+ </message>
+ <message>
+ <source>Project Maintainers:</source>
+ <translation>ผู้บำรุงรัà¸à¸©à¸²à¹‚ครงà¸à¸²à¸£:</translation>
+ </message>
+ <message>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Build Type: %1
+</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccessControlDialog</name>
+ <message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>จำà¸à¸²à¸£à¸•à¸±à¸”สินใจนี้</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>อนุà¸à¸²à¸•</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>ปà¸à¸´à¹€à¸ªà¸˜</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
+ <message>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AutoType</name>
+ <message>
+ <source>Couldn&apos;t find an entry that matches the window title:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AutoTypeAssociationsModel</name>
+ <message>
+ <source>Window</source>
+ <translation>หน้าต่าง</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>ลำดับ</translation>
+ </message>
+ <message>
+ <source>Default sequence</source>
+ <translation>ลำดับมาตรà¸à¸²à¸™</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>à¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>หัวเรื่อง</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ชื่อผู้ใช้</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>ลำดับ</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>จำà¸à¸²à¸£à¸•à¸±à¸”สินใจนี้</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>อนุà¸à¸²à¸•</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>ปà¸à¸´à¹€à¸ªà¸˜</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>เปิดใช้à¸à¸²à¸£à¸œà¸ªà¸²à¸™ KeepassXC à¸à¸±à¸šà¹€à¸šà¸£à¸²à¸§à¹Œà¹€à¸‹à¸­à¸£à¹Œ</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ทั่วไป</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>เปิดใช้à¸à¸²à¸£à¸œà¸ªà¸²à¸™à¸à¸±à¸šà¹€à¸šà¸£à¸²à¸§à¹Œà¹€à¸‹à¸­à¸£à¹Œà¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>หยุดà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸à¸±à¸šà¸—ุà¸à¹€à¸šà¸£à¸²à¸§à¹Œà¹€à¸‹à¸­à¸£à¹Œ (&amp;D)</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>ลืมà¸à¸²à¸£à¸­à¸™à¸¸à¸à¸²à¸•à¸—ี่เคยจำไว้ทั้งหมด (&amp;P)</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>ขั้นสูง</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ดู...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: เขียนทับà¸à¸¸à¸à¹à¸ˆà¸—ี่มีอยู่เดิม?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: ปรับปรุงรายà¸à¸²à¸£</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: à¸à¸²à¸™à¸‚้อมูลถูà¸à¸¥à¹‡à¸­à¸!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: ไม่มีà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าที่ใช้ได้!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: ไม่พบà¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: à¸à¸¸à¸à¹à¸ˆà¸–ูà¸à¸™à¸³à¸­à¸­à¸à¸ˆà¸²à¸à¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>หยุด</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: à¸à¸²à¸£à¸­à¸™à¸¸à¸à¸²à¸•à¸–ูà¸à¸™à¸³à¸­à¸­à¸</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ChangeMasterKeyWidget</name>
+ <message>
+ <source>Password</source>
+ <translation>รหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>Enter password:</source>
+ <translation>ป้อนรหัสผ่าน:</translation>
+ </message>
+ <message>
+ <source>Repeat password:</source>
+ <translation>ทวนรหัสผ่าน:</translation>
+ </message>
+ <message>
+ <source>&amp;Key file</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ (&amp;K)</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>ดู</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>สร้าง</translation>
+ </message>
+ <message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>รหัสสอบถาม รหัสตอบà¸à¸¥à¸±à¸š (&amp;L)</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>เรียà¸à¹ƒà¸«à¸¡à¹ˆ</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>ทุà¸à¹à¸Ÿà¹‰à¸¡</translation>
+ </message>
+ <message>
+ <source>Create Key File...</source>
+ <translation>สร้างà¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ...</translation>
+ </message>
+ <message>
+ <source>Unable to create Key File : </source>
+ <translation>ไม่สามารถสร้างà¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆà¹„ด้ :</translation>
+ </message>
+ <message>
+ <source>Select a key file</source>
+ <translation>เลือà¸à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>รหัสผ่านว่างเปล่า</translation>
+ </message>
+ <message>
+ <source>Do you really want to use an empty string as password?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>รหัสผ่านที่ให้มาไม่ตรงà¸à¸±à¸™</translation>
+ </message>
+ <message>
+ <source>Failed to set %1 as the Key file:
+%2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Changing master key failed: no YubiKey inserted.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CloneDialog</name>
+ <message>
+ <source>Clone Options</source>
+ <translation>ตัวเลือà¸à¸à¸²à¸£à¹‚คลน</translation>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>เติม &apos;- โคลน&apos; ต่อท้ายชื่อ</translation>
+ </message>
+ <message>
+ <source>Replace username and password with references</source>
+ <translation>à¹à¸—นที่ชื่อผู้ใช้à¹à¸¥à¸°à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸”้วยà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡</translation>
+ </message>
+ <message>
+ <source>Copy history</source>
+ <translation>ทำสำเนาประวัติ</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWidget</name>
+ <message>
+ <source>Import CSV fields</source>
+ <translation>นำเข้าฟิลด์ CSV</translation>
+ </message>
+ <message>
+ <source>filename</source>
+ <translation>ชื่อà¹à¸Ÿà¹‰à¸¡</translation>
+ </message>
+ <message>
+ <source>size, rows, columns</source>
+ <translation>ขนาด, à¹à¸–ว, หลัà¸</translation>
+ </message>
+ <message>
+ <source>Encoding</source>
+ <translation>à¸à¸²à¸£à¹€à¸‚้ารหัส</translation>
+ </message>
+ <message>
+ <source>Codec</source>
+ <translation>ตัวเข้ารหัส</translation>
+ </message>
+ <message>
+ <source>Text is qualified by</source>
+ <translation>ข้อความถูà¸à¸à¸³à¸à¸±à¸šà¸”้วย</translation>
+ </message>
+ <message>
+ <source>Fields are separated by</source>
+ <translation>ฟิลด์ถูà¸à¹à¸šà¹ˆà¸‡à¸”้วย</translation>
+ </message>
+ <message>
+ <source>Comments start with</source>
+ <translation>บันทึà¸à¸„วามเห็นเริ่มต้นด้วย</translation>
+ </message>
+ <message>
+ <source>First record has field names</source>
+ <translation>เรคคอร์ดà¹à¸£à¸à¸¡à¸µà¸Šà¸·à¹ˆà¸­à¸Ÿà¸´à¸¥à¸”์</translation>
+ </message>
+ <message>
+ <source>Number of headers line to discard</source>
+ <translation>จำนวนบรรทัดส่วนหัวที่จะไม่สนใจ</translation>
+ </message>
+ <message>
+ <source>Consider &apos;\&apos; an escape character</source>
+ <translation>ให้นับ &apos;\&apos; เป็น escape character</translation>
+ </message>
+ <message>
+ <source>Preview</source>
+ <translation>ดูตัวอย่าง</translation>
+ </message>
+ <message>
+ <source>Column layout</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not present in CSV file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty fieldname </source>
+ <translation>ชื่อฟิลด์ว่างเปล่า</translation>
+ </message>
+ <message>
+ <source>column </source>
+ <translation>หลัà¸</translation>
+ </message>
+ <message>
+ <source>Imported from CSV file</source>
+ <translation>นำเข้าจาà¸à¹à¸Ÿà¹‰à¸¡ CSV à¹à¸¥à¹‰à¸§</translation>
+ </message>
+ <message>
+ <source>Original data: </source>
+ <translation>ข้อมูลต้นฉบับ:</translation>
+ </message>
+ <message>
+ <source>Error(s) detected in CSV file !</source>
+ <translation>พบข้อผิดพลาดในà¹à¸Ÿà¹‰à¸¡ CSV !</translation>
+ </message>
+ <message>
+ <source> more messages skipped]</source>
+ <translation>มีข้อความอีà¸à¸¡à¸²à¸à¸—ี่ถูà¸à¸‚้ามไป]</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>ผิดพลาด</translation>
+ </message>
+ <message>
+ <source>CSV import: writer has errors:
+</source>
+ <translation>à¸à¸²à¸£à¸™à¸³à¹€à¸‚้า CSV: ตัวเขียนมีข้อผิดพลาด:
+</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWizard</name>
+ <message>
+ <source>Error</source>
+ <translation>ผิดพลาด</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>ไม่สามารถคำนวà¸à¸à¸¸à¸à¹à¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œà¹„ด้</translation>
+ </message>
+</context>
+<context>
+ <name>CsvParserModel</name>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseOpenWidget</name>
+ <message>
+ <source>Enter master key</source>
+ <translation>ใส่à¸à¸¸à¸à¹à¸ˆà¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œ</translation>
+ </message>
+ <message>
+ <source>Key File:</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>รหัสผ่าน:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>ดู</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>เรียà¸à¹ƒà¸«à¸¡à¹ˆ</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>รหัสสอบถาม รหัสตอบà¸à¸¥à¸±à¸š:</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ไม่สามารถเปิดà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>ไม่ต้องà¹à¸ªà¸”งคำเตือนนี้อีà¸</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>ทุà¸à¹à¸Ÿà¹‰à¸¡</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+ <message>
+ <source>Select key file</source>
+ <translation>เลือà¸à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseRepairWidget</name>
+ <message>
+ <source>Repair database</source>
+ <translation>ซ่อมà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>ผิดพลาด</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ไม่สามารถเปิดà¸à¸²à¸™à¸‚้อมูลดังà¸à¸¥à¹ˆà¸²à¸§</translation>
+ </message>
+ <message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูลเปิดได้ปà¸à¸•à¸´ ไม่ต้องทำอะไร</translation>
+ </message>
+ <message>
+ <source>Success</source>
+ <translation>สำเร็จ</translation>
+ </message>
+ <message>
+ <source>The database has been successfully repaired
+You can now save it.</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูลดังà¸à¸¥à¹ˆà¸²à¸§à¸–ูà¸à¸‹à¹ˆà¸­à¸¡à¸ªà¸³à¹€à¸£à¹‡à¸ˆà¹à¸¥à¹‰à¸§
+ตอนนี้คุณสามารถบันทึà¸à¸¡à¸±à¸™à¹„ด้</translation>
+ </message>
+ <message>
+ <source>Unable to repair the database.</source>
+ <translation>ไม่สามารถซ่อมà¸à¸²à¸™à¸‚้อมูลดังà¸à¸¥à¹ˆà¸²à¸§</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidget</name>
+ <message>
+ <source>General</source>
+ <translation>ทั่วไป</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>à¸à¸²à¸£à¹€à¸‚้ารหัสลับ</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>ยà¸à¹€à¸¥à¸´à¸</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>อัลà¸à¸­à¸£à¸´à¸—ึมเข้ารหัสลับ:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 บิต (ค่าปริยาย)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 บิต</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>รอบเปลี่ยนรูป:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>เมทาดาทาà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>ชื่อà¸à¸²à¸™à¸‚้อมูล:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>รายละเอียดà¸à¸²à¸™à¸‚้อมูล:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>ชื่อผู้ใช้มาตรà¸à¸²à¸™:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าประวัติ</translation>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation>จำนวนมาà¸à¸ªà¸¸à¸”ของรายà¸à¸²à¸£à¸›à¸£à¸°à¸§à¸±à¸•à¸´:</translation>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation>ขนาดมาà¸à¸ªà¸¸à¸”ของรายà¸à¸²à¸£à¸›à¸£à¸°à¸§à¸±à¸•à¸´:</translation>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation> MiB</translation>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>ใช้ถังขยะรีไซเคิล</translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
+ <message>
+ <source>Root</source>
+ <comment>Root group</comment>
+ <translation>รูต</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูล KeePass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>ทุà¸à¹à¸Ÿà¹‰à¸¡</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>เปิดà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>File not found!</source>
+ <translation>ไม่พบà¹à¸Ÿà¹‰à¸¡!</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ไม่สามารถเปิดà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>File opened in read only mode.</source>
+ <translation>เปิดà¹à¸Ÿà¹‰à¸¡à¹à¸¥à¹‰à¸§à¹ƒà¸™à¹à¸šà¸šà¸­à¹ˆà¸²à¸™à¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸”ียว</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>เปิดà¹à¸Ÿà¹‰à¸¡ CSV</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡ CSV</translation>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation>ทุà¸à¹à¸Ÿà¹‰à¸¡ ()</translation>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation>ผสานà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>เปิดà¸à¸²à¸™à¸‚้อมูล KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูล KeePass 1</translation>
+ </message>
+ <message>
+ <source>Close?</source>
+ <translation>ปิด?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; อยู่ในระหว่าà¸à¸²à¸£à¹à¸à¹‰à¹„ข
+ละทิ้งà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ั้งหมดà¹à¸¥à¸°à¸›à¸´à¸”อยู่ดี?</translation>
+ </message>
+ <message>
+ <source>Save changes?</source>
+ <translation>บันทึà¸à¸„วามเปลี่ยนà¹à¸›à¸¥à¸‡?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
+ <translation>&quot;%1&quot; ถูà¸à¹à¸à¹‰à¹„ข
+บันทึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡?</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>à¸à¸²à¸£à¹€à¸‚ียนà¸à¸²à¸™à¸‚้อมูลล้มเหลว</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>รหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>Save database as</source>
+ <translation>บันทึà¸à¸à¸²à¸™à¸‚้อมูลเป็น</translation>
+ </message>
+ <message>
+ <source>Export database to CSV file</source>
+ <translation>ส่งออà¸à¸à¸²à¸™à¸‚้อมูลเป็นà¹à¸Ÿà¹‰à¸¡ CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>à¸à¸²à¸£à¹€à¸‚ียนà¹à¸Ÿà¹‰à¸¡ CSV ล้มเหลว</translation>
+ </message>
+ <message>
+ <source>New database</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูลใหม่</translation>
+ </message>
+ <message>
+ <source>locked</source>
+ <translation>ถูà¸à¸¥à¹‡à¸­à¸</translation>
+ </message>
+ <message>
+ <source>Lock database</source>
+ <translation>ล็อà¸à¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseWidget</name>
+ <message>
+ <source>Searching...</source>
+ <translation>ค้นหา...</translation>
+ </message>
+ <message>
+ <source>Change master key</source>
+ <translation>เปลี่ยนà¸à¸¸à¸à¹à¸ˆà¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œ</translation>
+ </message>
+ <message>
+ <source>Delete entry?</source>
+ <translation>ลบรายà¸à¸²à¸£?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
+ <translation>คุณต้องà¸à¸²à¸£à¸ˆà¸°à¸¥à¸šà¸£à¸²à¸¢à¸à¸²à¸£ &quot;%1&quot; ให้หายไปตลอดà¸à¸²à¸¥à¸ˆà¸£à¸´à¸‡à¹†?</translation>
+ </message>
+ <message>
+ <source>Delete entries?</source>
+ <translation>ลบรายà¸à¸²à¸£?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete %1 entries for good?</source>
+ <translation>คุณต้องà¸à¸²à¸£à¸ˆà¸°à¸¥à¸šà¸£à¸²à¸¢à¸à¸²à¸£ %1 รายà¸à¸²à¸£à¹ƒà¸«à¹‰à¸«à¸²à¸¢à¹„ปตลอดà¸à¸²à¸¥à¸ˆà¸£à¸´à¸‡à¹†?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Move entries to recycle bin?</source>
+ <translation>ย้ายรายà¸à¸²à¸£à¹„ปถังขยะ?</translation>
+ </message>
+ <message numerus="yes">
+ <source>Do you really want to move %n entry(s) to the recycle bin?</source>
+ <translation><numerusform>คุณต้องà¸à¸²à¸£à¸ˆà¸°à¸¢à¹‰à¸²à¸¢à¸£à¸²à¸¢à¸à¸²à¸£ %1 รายà¸à¸²à¸£à¹„ปยังถังขยะจริงๆ?</numerusform></translation>
+ </message>
+ <message>
+ <source>Execute command?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>จำที่ฉันเลือà¸</translation>
+ </message>
+ <message>
+ <source>Delete group?</source>
+ <translation>ลบà¸à¸¥à¸¸à¹ˆà¸¡?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>คุณต้องà¸à¸²à¸£à¸ˆà¸°à¸¥à¸šà¸à¸¥à¸¸à¹ˆà¸¡ &quot;%1&quot; ไปตลอดà¸à¸²à¸¥à¸ˆà¸£à¸´à¸‡à¸«à¸£à¸·à¸­?</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>ไม่สามารถคำนวà¸à¸à¸¸à¸à¹à¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œà¹„ด้</translation>
+ </message>
+ <message>
+ <source>No current database.</source>
+ <translation>ไม่มีà¸à¸²à¸™à¸‚้อมูลขณะนี้</translation>
+ </message>
+ <message>
+ <source>No source database, nothing to do.</source>
+ <translation>ไม่มีà¸à¸²à¸™à¸‚้อมูลต้นทาง ไม่มีงานให้ทำ</translation>
+ </message>
+ <message>
+ <source>Search Results (%1)</source>
+ <translation>ผลลัพธ์à¸à¸²à¸£à¸„้นหา (%1)</translation>
+ </message>
+ <message>
+ <source>No Results</source>
+ <translation>ไม่มีผลลัพธ์</translation>
+ </message>
+ <message>
+ <source>File has changed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge Request</source>
+ <translation>ผสานคำร้อง</translation>
+ </message>
+ <message>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>สร้างโทเคน TOTP</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>ปิด</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ทั่วไป</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>รหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>หมดอายุ</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ชื่อผู้ใช้</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>à¸à¸³à¸¥à¸±à¸‡à¸„้นหา</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>คุณสมบัติ</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>บันทึà¸</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>หน้าต่าง</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>ลำดับ</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>ค้นหา</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>ล้าง</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>ไม่เลย</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[ถูà¸à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¸­à¸¢à¸¹à¹ˆ]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>ปิดใช้</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>เปิดใช้</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidget</name>
+ <message>
+ <source>Entry</source>
+ <translation>รายà¸à¸²à¸£</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>ขั้นสูง</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>ไอคอน</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>คุณสมบัติ</translation>
+ </message>
+ <message>
+ <source>History</source>
+ <translation>ประวัติ</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ไม่มีข้อมูล</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(เข้ารหัสลับอยู่)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>เลือà¸à¸à¸¸à¸à¹à¸ˆà¸ªà¹ˆà¸§à¸™à¸•à¸±à¸§</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¹ƒà¸«à¸à¹ˆà¹€à¸à¸´à¸™à¸à¸§à¹ˆà¸²à¸ˆà¸°à¹€à¸›à¹‡à¸™à¸à¸¸à¸à¹à¸ˆà¸ªà¹ˆà¸§à¸™à¸•à¸±à¸§</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>ผิดพลาดระหว่างà¸à¸²à¸£à¹€à¸›à¸´à¸”à¸à¸¸à¸à¹à¸ˆà¸ªà¹ˆà¸§à¸™à¸•à¸±à¸§</translation>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation>ประวัติรายà¸à¸²à¸£</translation>
+ </message>
+ <message>
+ <source>Add entry</source>
+ <translation>เพิ่มรายà¸à¸²à¸£</translation>
+ </message>
+ <message>
+ <source>Edit entry</source>
+ <translation>à¹à¸à¹‰à¹„ขรายà¸à¸²à¸£</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>รหัสผ่านที่ให้มาไม่ตรงà¸à¸±à¸™</translation>
+ </message>
+ <message>
+ <source>New attribute</source>
+ <translation>คุณสมบัติใหม่</translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>ยืนยันà¸à¸²à¸£à¸™à¸³à¸­à¸­à¸</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[ถูà¸à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¸­à¸¢à¸¹à¹ˆ]</translation>
+ </message>
+ <message>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Tomorrow</source>
+ <translation>พรุ่งนี้</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation><numerusform>%n สัปดาห์</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n month(s)</source>
+ <translation><numerusform>%n เดือน</numerusform></translation>
+ </message>
+ <message>
+ <source>1 year</source>
+ <translation>1 ปี</translation>
+ </message>
+ <message>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAdvanced</name>
+ <message>
+ <source>Additional attributes</source>
+ <translation>คุณสมบัติเพิ่มเติม</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>เพิ่ม</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>นำออà¸</translation>
+ </message>
+ <message>
+ <source>Edit Name</source>
+ <translation> à¹à¸à¹‰à¹„ขชื่อ</translation>
+ </message>
+ <message>
+ <source>Protect</source>
+ <translation>ป้องà¸à¸±à¸™</translation>
+ </message>
+ <message>
+ <source>Reveal</source>
+ <translation>เปิดเผย</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š</translation>
+ </message>
+ <message>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
+ <message>
+ <source>Enable Auto-Type for this entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Use custom Auto-Type sequence:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Window Associations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>หัวเรื่องของหน้าต่าง:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetHistory</name>
+ <message>
+ <source>Show</source>
+ <translation>à¹à¸ªà¸”ง</translation>
+ </message>
+ <message>
+ <source>Restore</source>
+ <translation>เรียà¸à¸„ืน</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>ลบ</translation>
+ </message>
+ <message>
+ <source>Delete all</source>
+ <translation>ลบทั้งหมด</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetMain</name>
+ <message>
+ <source>URL:</source>
+ <translation>URL:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>รหัสผ่าน:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>ทำซ้ำ:</translation>
+ </message>
+ <message>
+ <source>Title:</source>
+ <translation>หัวเรื่อง:</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>บันทึà¸</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation>ค่าปรับà¹à¸•à¹ˆà¸‡à¸ªà¸³à¹€à¸£à¹‡à¸ˆà¸£à¸¹à¸›</translation>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>ชื่อผู้ใช้:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>หมดอายุ</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>วินาที</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>à¸à¸¸à¸à¹à¸ˆà¸ªà¸²à¸˜à¸²à¸£à¸“ะ</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>ความเห็น</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>ถอดรหัสลับ</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ไม่มีข้อมูล</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>คัดลอà¸à¹„ปยังคลิปบอร์ด:</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>à¸à¸¸à¸à¹à¸ˆà¸ªà¹ˆà¸§à¸™à¸•à¸±à¸§</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸ à¸²à¸¢à¸™à¸­à¸</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ดู...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidget</name>
+ <message>
+ <source>Group</source>
+ <translation>à¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>ไอคอน</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>คุณสมบัติ</translation>
+ </message>
+ <message>
+ <source>Add group</source>
+ <translation>เพิ่มà¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>Edit group</source>
+ <translation>à¹à¸à¹‰à¹„ขà¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>Enable</source>
+ <translation>เปิดใช้</translation>
+ </message>
+ <message>
+ <source>Disable</source>
+ <translation>ปิดใช้</translation>
+ </message>
+ <message>
+ <source>Inherit from parent group (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidgetMain</name>
+ <message>
+ <source>Name</source>
+ <translation>ชื่อ</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>บันทึà¸</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>หมดอายุ</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>ค้นหา</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>&amp;Use default Auto-Type sequence of parent group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set default Auto-Type se&amp;quence</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditWidgetIcons</name>
+ <message>
+ <source>&amp;Use default icon</source>
+ <translation>ใช้ไอคอนมาตรà¸à¸²à¸™ (&amp;U)</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>ใช้ไอคอนที่à¸à¸³à¸«à¸™à¸”เอง (&amp;M)</translation>
+ </message>
+ <message>
+ <source>Add custom icon</source>
+ <translation>เพิ่มไอคอนที่à¸à¸³à¸«à¸™à¸”เอง</translation>
+ </message>
+ <message>
+ <source>Delete custom icon</source>
+ <translation>ลบไอคอนที่à¸à¸³à¸«à¸™à¸”เอง</translation>
+ </message>
+ <message>
+ <source>Download favicon</source>
+ <translation>ดาวน์โหลด favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>ไม่สามารถดึง favicon ได้</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Images</source>
+ <translation>ภาพ</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>ทุà¸à¹à¸Ÿà¹‰à¸¡</translation>
+ </message>
+ <message>
+ <source>Select Image</source>
+ <translation>เลือà¸à¸ à¸²à¸ž</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
+ <translation>ไม่สามารถอ่านไอคอน</translation>
+ </message>
+ <message>
+ <source>Custom icon already exists</source>
+ <translation>มีไอคอนที่à¸à¸³à¸«à¸™à¸”เองอยู่à¹à¸¥à¹‰à¸§</translation>
+ </message>
+ <message>
+ <source>Confirm Delete</source>
+ <translation>ยืนยันà¸à¸²à¸£à¸¥à¸š</translation>
+ </message>
+ <message>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditWidgetProperties</name>
+ <message>
+ <source>Created:</source>
+ <translation>สร้าง:</translation>
+ </message>
+ <message>
+ <source>Modified:</source>
+ <translation>à¹à¸à¹‰à¹„ข:</translation>
+ </message>
+ <message>
+ <source>Accessed:</source>
+ <translation>เข้าถึง:</translation>
+ </message>
+ <message>
+ <source>Uuid:</source>
+ <translation>Uuid:</translation>
+ </message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>นำออà¸</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Entry</name>
+ <message>
+ <source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> - โคลน</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>ชื่อ</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>ขนาด</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>เพิ่ม</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>นำออà¸</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>เปิด</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>บันทึà¸</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>เลือà¸à¹à¸Ÿà¹‰à¸¡</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>ยืนยันà¸à¸²à¸£à¸™à¸³à¸­à¸­à¸</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>บันทึà¸à¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>ยืนยันà¸à¸²à¸£à¹€à¸‚ียนทับ</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>ไม่สามารถบันทึà¸à¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡:
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttributesModel</name>
+ <message>
+ <source>Name</source>
+ <translation>ชื่อ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryHistoryModel</name>
+ <message>
+ <source>Last modified</source>
+ <translation>ถูà¸à¹à¸à¹‰à¹„ขครั้งสุดท้าย</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>หัวเรื่อง</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ชื่อผู้ใช้</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+</context>
+<context>
+ <name>EntryModel</name>
+ <message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>อ้างอิง:</translation>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>à¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>หัวเรื่อง</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ชื่อผู้ใช้</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>ไม่เลย</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>รหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>บันทึà¸</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>หมดอายุ</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>สร้าง</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¹à¸™à¸š</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Group</name>
+ <message>
+ <source>Recycle Bin</source>
+ <translation>ถังขยะ</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: ไม่สามารถบันทึà¸à¹à¸Ÿà¹‰à¸¡!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>HttpPasswordGeneratorWidget</name>
+ <message>
+ <source>Length:</source>
+ <translation>ความยาว:</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>ชนิดอัà¸à¸‚ระ</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>อัà¸à¸©à¸£à¸•à¸±à¸§à¸žà¸´à¸¡à¸žà¹Œà¹ƒà¸«à¸à¹ˆ</translation>
+ </message>
+ <message>
+ <source>A-Z</source>
+ <translation>A-Z</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>อัà¸à¸©à¸£à¸•à¸±à¸§à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸</translation>
+ </message>
+ <message>
+ <source>a-z</source>
+ <translation>a-z</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>ตัวเลข</translation>
+ </message>
+ <message>
+ <source>0-9</source>
+ <translation>0-9</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>อัà¸à¸‚ระพิเศษ</translation>
+ </message>
+ <message>
+ <source>/*_&amp; ...</source>
+ <translation>/*_&amp; ...</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>ไม่ใช้อัà¸à¸‚ระที่หน้าตาคล้ายà¸à¸±à¸™</translation>
+ </message>
+ <message>
+ <source>Ensure that the password contains characters from every group</source>
+ <translation>ทำให้à¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸¡à¸µà¸­à¸±à¸à¸‚ระจาà¸à¸—ุà¸à¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KMessageWidget</name>
+ <message>
+ <source>&amp;Close</source>
+ <translation>ปิด (&amp;C)</translation>
+ </message>
+ <message>
+ <source>Close message</source>
+ <translation>ปิดข้อความ</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>ไม่สามารถคำนวà¸à¸à¸¸à¸à¹à¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œà¹„ด้</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>ไม่สามารถคำนวà¸à¸à¸¸à¸à¹à¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œà¹„ด้</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>ไม่สามารถคำนวà¸à¸à¸¸à¸à¹à¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œà¹„ด้</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>ไม่สามารถคำนวà¸à¸à¸¸à¸à¹à¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œà¹„ด้</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>ไม่ใช่à¸à¸²à¸™à¸‚้อมูล KeePass</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation>นำเข้าà¸à¸²à¸™à¸‚้อมูล KeePass1</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ไม่สามารถเปิดà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation>ไม่สามารถอ่านà¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆà¹„ด้</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>ไม่ใช่à¸à¸²à¸™à¸‚้อมูล KeePass</translation>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation>รูต</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>ไม่สามารถคำนวà¸à¸à¸¸à¸à¹à¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œà¹„ด้</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - ข้อผิดพลาด</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูล (&amp;D)</translation>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูลที่เพิ่งใช้ (&amp;R)</translation>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation>นำเข้า</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>ช่วยเหลือ (&amp;H)</translation>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Groups</source>
+ <translation>à¸à¸¥à¸¸à¹ˆà¸¡ (&amp;G)</translation>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation>เครื่องมือ (&amp;T)</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>ออภ(&amp;Q)</translation>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation>เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š (&amp;A)</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation>เปิดà¸à¸²à¸™à¸‚้อมูล (&amp;O)...</translation>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation>บันทึà¸à¸à¸²à¸™à¸‚้อมูล (&amp;S)</translation>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation>ปิดà¸à¸²à¸™à¸‚้อมูล (&amp;C)</translation>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูลใหม่ (&amp;N)</translation>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation>ผสานจาà¸à¸à¸²à¸™à¸‚้อมูล KeePassX</translation>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation>เพิ่มรายà¸à¸²à¸£à¹ƒà¸«à¸¡à¹ˆ (&amp;A)</translation>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation>ดูà¹à¸¥à¸°à¹à¸à¹‰à¹„ขรายà¸à¸²à¸£ (&amp;V)</translation>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation>ลบรายà¸à¸²à¸£ (&amp;D)</translation>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation>เพิ่มà¸à¸¥à¸¸à¹ˆà¸¡à¹ƒà¸«à¸¡à¹ˆ (&amp;A)</translation>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation>à¹à¸à¹‰à¹„ขà¸à¸¥à¸¸à¹ˆà¸¡ (&amp;E)</translation>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation>ลบà¸à¸¥à¸¸à¹ˆà¸¡ (&amp;D)</translation>
+ </message>
+ <message>
+ <source>Sa&amp;ve database as...</source>
+ <translation>บันทึà¸à¸à¸²à¸™à¸‚้อมูลเป็น (&amp;V)...</translation>
+ </message>
+ <message>
+ <source>Change &amp;master key...</source>
+ <translation>เปลี่ยนà¸à¸¸à¸à¹à¸ˆà¸¡à¸²à¸ªà¹€à¸•à¸­à¸£à¹Œ (&amp;M)</translation>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation>à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าà¸à¸²à¸™à¸‚้อมูล (&amp;D)</translation>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation>à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation>โคลนรายà¸à¸²à¸£ (&amp;C)</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>ค้นหา (&amp;F)</translation>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation>คัดลอà¸à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ (&amp;U)</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>คัดลอà¸à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹„ปคลิปบอร์ด</translation>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation>คัดลอà¸à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™ (&amp;Y)</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>คัดลอà¸à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¹„ปคลิปบอร์ด</translation>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation>à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า (&amp;S)</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>ตัวสร้างรหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation>เปิด URL (&amp;O)</translation>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation>ล็อà¸à¸à¸²à¸™à¸‚้อมูล (&amp;L)</translation>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation>หัวเรื่อง (&amp;T)</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;URL</source>
+ <translation>URL (&amp;U)</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Notes</source>
+ <translation>บันทึภ(&amp;N)</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation>ส่งออà¸à¹„ปเป็นà¹à¸Ÿà¹‰à¸¡ CSV... (&amp;E)</translation>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation>นำเข้าà¸à¸²à¸™à¸‚้อมูล KeePass1...</translation>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation>นำเข้าà¹à¸Ÿà¹‰à¸¡ CSV...</translation>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation>ซ่อมà¸à¸²à¸™à¸‚้อมูล... (&amp;P)</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>à¹à¸ªà¸”ง TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>ติดตั้ง TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>คัดลอภ&amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>เทถังรีไซเคิลทิ้ง (&amp;M)</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>ล้างประวัติ</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>มีข้อผิดพลาดในà¸à¸²à¸£à¹€à¸‚้าถึงà¹à¸Ÿà¹‰à¸¡à¸•à¸±à¹‰à¸‡à¸„่า %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation>อ่านอย่างเดียว</translation>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>ตั้งค่า</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>สลับหน้าต่าง</translation>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation>ออà¸à¸ˆà¸²à¸ KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูล KeePass 2</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>ทุà¸à¹à¸Ÿà¹‰à¸¡</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>เปิดà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>บันทึà¸à¸à¸²à¸™à¸‚้อมูลที่ซ่อมà¹à¸¥à¹‰à¸§</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>à¸à¸²à¸£à¹€à¸‚ียนà¸à¸²à¸™à¸‚้อมูลล้มเหลว</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>à¸à¸£à¸¸à¸“าà¹à¸•à¸°à¸›à¸¸à¹ˆà¸¡à¸šà¸™ YubiKey ของคุณ!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
+ <message>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to read public key.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ทั่วไป</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation>ตัวสร้างรหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>ขั้นสูง</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>พอร์ต HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>พอร์ตมาตรà¸à¸²à¸™: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>รหัสผ่าน:</translation>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>ความà¹à¸‚็งà¹à¸£à¸‡</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>เอนโทรปี</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>รหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>ชนิดอัà¸à¸‚ระ</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>อัà¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹ƒà¸«à¸à¹ˆ</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>อัà¸à¸©à¸£à¸•à¸±à¸§à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>ตัวเลข</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>อัà¸à¸‚ระพิเศษ</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>ไม่ใช้อัà¸à¸‚ระที่หน้าตาคล้ายà¸à¸±à¸™</translation>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation>เลือà¸à¹ƒà¸Šà¹‰à¸•à¸±à¸§à¸­à¸±à¸à¸‚ระจาà¸à¸—ุà¸à¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation>ความยาว (&amp;L):</translation>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>วลีรหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation>รายà¸à¸²à¸£à¸„ำ:</translation>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation>จำนวนคำ:</translation>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation>ตัวà¹à¸šà¹ˆà¸‡à¸„ำ:</translation>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>สร้าง</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>คัดลอà¸</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>ตà¸à¸¥à¸‡</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>ปิด</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>ใช้</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation>เอนโทรปี: %1 บิต</translation>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation>คุณภาพรหัสผ่าน: %1</translation>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation>à¹à¸¢à¹ˆ</translation>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation>อ่อนà¹à¸­</translation>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation>ดี</translation>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation>ดีมาà¸</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸à¸¸à¸à¹à¸ˆà¹„ม่สำเร็จ</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>ไม่รู้จัà¸à¸à¸¸à¸à¹à¸ˆà¹€à¸‚้ารหัสลับ</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>ไม่มีà¸à¸²à¸™à¸‚้อมูลที่ถูà¸à¸šà¸±à¸™à¸—ึà¸à¸­à¸¢à¸¹à¹ˆ</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>à¸à¸²à¸£à¸à¸£à¸°à¸—ำที่ไม่ถูà¸à¸•à¹‰à¸­à¸‡</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>ไม่มี URL ให้มา</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>ความผิดพลาดที่ไม่รู้จัà¸</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆà¸‚องà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>ชื่อผู้ใช้</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>ความยาว</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>หัวเรื่อง</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>สà¸à¸±à¸”à¹à¸¥à¸°à¹à¸ªà¸”งเนื้อหาของà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>path ของà¸à¸²à¸™à¸‚้อมูลที่จะสà¸à¸±à¸”เนื้อหา</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>ชื่อของคำสั่งที่จะดำเนินà¸à¸²à¸£</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>à¹à¸ˆà¸‡à¸£à¸²à¸¢à¸à¸²à¸£à¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>คำค้น</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>ผสานสองà¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>ชื่อของรายà¸à¸²à¸£à¸—ี่จะà¹à¸ªà¸”ง</translation>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation>อุปà¸à¸£à¸“์ NULL</translation>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²!
+</translation>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation>รูปà¹à¸šà¸šà¸ªà¸•à¸£à¸´à¸‡à¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡</translation>
+ </message>
+ <message>
+ <source>missing closing quote</source>
+ <translation>ไม่มีเครื่องหมายคำพูดปิด</translation>
+ </message>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256 บิต</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256 บิต</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256 บิต</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – à¹à¸™à¸°à¸™à¸³)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>à¸à¸¥à¸¸à¹ˆà¸¡</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>หัวเรื่อง</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ชื่อผู้ใช้</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>รหัสผ่าน</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>บันทึà¸</translation>
+ </message>
+ <message>
+ <source>Last Modified</source>
+ <translation>à¹à¸à¹‰à¹„ขล่าสุด</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>สร้าง</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation>à¸à¸²à¸£à¸—ำงานร่วมà¸à¸±à¸šà¹€à¸šà¸£à¸²à¸§à¹Œà¹€à¸‹à¸­à¸£à¹Œ</translation>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor</name>
+ <message>
+ <source>Internal zlib error when compressing: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error writing to underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error opening underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error reading data from underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error when decompressing: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
+ <message>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error: </source>
+ <translation>ความผิดพลาดภายในของ zlib: </translation>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation>ค้นหา...</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>ค้นหา</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>ล้าง</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation>คำนึงถึงอัà¸à¸©à¸£à¸•à¸±à¸§à¹ƒà¸«à¸à¹ˆà¹€à¸¥à¹‡à¸</translation>
+ </message>
+ <message>
+ <source>Limit search to selected group</source>
+ <translation>จำà¸à¸±à¸”à¸à¸²à¸£à¸„้นไว้เฉพาะในà¸à¸¥à¸¸à¹ˆà¸¡à¸—ี่เลือà¸</translation>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: เขียนทับà¸à¸¸à¸à¹à¸ˆà¸—ี่มีอยู่เดิม?</translation>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: ปรับปรุงรายà¸à¸²à¸£</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: à¸à¸²à¸™à¸‚้อมูลถูà¸à¸¥à¹‡à¸­à¸!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: à¸à¸¸à¸à¹à¸ˆà¸–ูà¸à¸™à¸³à¸­à¸­à¸à¸ˆà¸²à¸à¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: ไม่พบà¸à¸¸à¸à¹à¸ˆ</translation>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: ไม่มีà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าที่ใช้ได้!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>หยุด</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: à¸à¸²à¸£à¸­à¸™à¸¸à¸à¸²à¸•à¸–ูà¸à¸™à¸³à¸­à¸­à¸</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <source>Application Settings</source>
+ <translation>à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าà¹à¸­à¸›</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ทั่วไป</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation>ความมั่นคง</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>มีข้อผิดพลาดในà¸à¸²à¸£à¹€à¸‚้าถึงà¹à¸Ÿà¹‰à¸¡à¸•à¸±à¹‰à¸‡à¸„่า %1</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetGeneral</name>
+ <message>
+ <source>Basic Settings</source>
+ <translation>à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าพื้นà¸à¸²à¸™</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember last databases</source>
+ <translation>จำà¸à¸²à¸™à¸‚้อมูลล่าสุด</translation>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically save on exit</source>
+ <translation>บันทึà¸à¸­à¸±à¸•à¹‚นมัติตอนออà¸</translation>
+ </message>
+ <message>
+ <source>Automatically save after every change</source>
+ <translation>บันทึà¸à¸­à¸±à¸•à¹‚นมัติทุà¸à¸„รั้งที่มีà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡</translation>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize when copying to clipboard</source>
+ <translation>ย่อหน้าต่างเมื่อคัดลอà¸à¹„ปยังคลิปบอร์ด</translation>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation>ย่อหน้าต่างลงเล็à¸à¸ªà¸¸à¸”ตอนเริ่มà¹à¸­à¸›</translation>
+ </message>
+ <message>
+ <source>Use group icon on entry creation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide the Details view</source>
+ <translation>ซ่อนมุมมองละเอียด</translation>
+ </message>
+ <message>
+ <source>Show a system tray icon</source>
+ <translation>à¹à¸ªà¸”งไอคอนสำหรับ system tray</translation>
+ </message>
+ <message>
+ <source>Hide window to system tray when minimized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation>ซ่อนหน้าต่างไว้ที่ system tray à¹à¸—นà¸à¸²à¸£à¸­à¸­à¸à¸ˆà¸²à¸à¹à¸­à¸›</translation>
+ </message>
+ <message>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Language</source>
+ <translation>ภาษา</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always ask before performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Global Auto-Type shortcut</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation>à¸à¸²à¸£à¸«à¸™à¹ˆà¸§à¸‡ Auto-Type</translation>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation>มิลลิวิ</translation>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>ทั่วไป</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetSecurity</name>
+ <message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear clipboard after</source>
+ <translation>ล้างคลิปบอร์ดหลัง</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation>วิ</translation>
+ </message>
+ <message>
+ <source>Lock databases after inactivity of</source>
+ <translation>ล็อà¸à¸à¸²à¸™à¸‚้อมูลหลังไม่มีà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™</translation>
+ </message>
+ <message>
+ <source>Convenience</source>
+ <translation>ความสะดวà¸</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases after minimizing the window</source>
+ <translation>ล็อà¸à¸à¸²à¸™à¸‚้อมูลหลังย่อหน้าต่างลงเล็à¸à¸ªà¸¸à¸”</translation>
+ </message>
+ <message>
+ <source>Don&apos;t require password repeat when it is visible</source>
+ <translation>ไม่ต้องถามรหัสผ่านซ้ำถ้ามองเห็นรหัสผ่านอยู่</translation>
+ </message>
+ <message>
+ <source>Show passwords in cleartext by default</source>
+ <translation>à¹à¸ªà¸”งรหัสผ่านอย่างเปิดเผยโดยปริยาย</translation>
+ </message>
+ <message>
+ <source>Hide passwords in the preview panel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide entry notes by default</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation>ความเป็นส่วนตัว</translation>
+ </message>
+ <message>
+ <source>Use Google as fallback for downloading website icons</source>
+ <translation>ใช้à¸à¸¹à¹€à¸à¸´à¸¥à¹€à¸›à¹‡à¸™à¸§à¸´à¸˜à¸µà¸ªà¸³à¸£à¸­à¸‡à¹€à¸žà¸·à¹ˆà¸­à¸”าวน์โหลดไอคอนเว็บไซต์</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SetupTotpDialog</name>
+ <message>
+ <source>Setup TOTP</source>
+ <translation>ติดตั้ง TOTP</translation>
+ </message>
+ <message>
+ <source>Key:</source>
+ <translation>à¸à¸¸à¸à¹à¸ˆ:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use custom settings</source>
+ <translation>ใช้à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าที่à¸à¸³à¸«à¸™à¸”เอง</translation>
+ </message>
+ <message>
+ <source>Note: Change these settings only if you know what you are doing.</source>
+ <translation>หมายเหตุ: เปลี่ยนà¹à¸›à¸¥à¸‡à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าเหล่านี้à¸à¹‡à¸•à¹ˆà¸­à¹€à¸¡à¸·à¹ˆà¸­à¸„ุณรู้ว่าคุณà¸à¸³à¸¥à¸±à¸‡à¸—ำอะไรอยู่</translation>
+ </message>
+ <message>
+ <source>Time step:</source>
+ <translation>ขั้นเวลา:</translation>
+ </message>
+ <message>
+ <source>8 digits</source>
+ <translation>8 หลัà¸</translation>
+ </message>
+ <message>
+ <source>6 digits</source>
+ <translation>6 หลัà¸</translation>
+ </message>
+ <message>
+ <source>Code size:</source>
+ <translation>ขนาดรหัส:</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation>วิ</translation>
+ </message>
+</context>
+<context>
+ <name>TotpDialog</name>
+ <message>
+ <source>Timed Password</source>
+ <translation>รหัสผ่านà¸à¸³à¸«à¸™à¸”เวลา</translation>
+ </message>
+ <message>
+ <source>000000</source>
+ <translation>000000</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>คัดลอà¸</translation>
+ </message>
+ <message>
+ <source>Expires in</source>
+ <translation>หมดอายุใน</translation>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation>วินาที</translation>
+ </message>
+</context>
+<context>
+ <name>UnlockDatabaseWidget</name>
+ <message>
+ <source>Unlock database</source>
+ <translation>ปลดล็อà¸à¸à¸²à¸™à¸‚้อมูล</translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWidget</name>
+ <message>
+ <source>Start storing your passwords securely in a KeePassXC database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Create new database</source>
+ <translation>สร้างà¸à¸²à¸™à¸‚้อมูลใหม่</translation>
+ </message>
+ <message>
+ <source>Open existing database</source>
+ <translation>เปิดà¸à¸²à¸™à¸‚้อมูลที่มีอยู่</translation>
+ </message>
+ <message>
+ <source>Import from KeePass 1</source>
+ <translation>นำเข้าจาภKeePass 1</translation>
+ </message>
+ <message>
+ <source>Import from CSV</source>
+ <translation>นำเข้าจาภCSV</translation>
+ </message>
+ <message>
+ <source>Recent databases</source>
+ <translation>à¸à¸²à¸™à¸‚้อมูลที่เพิ่งใช้</translation>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>main</name>
+ <message>
+ <source>Remove an entry from the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to remove.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - à¹à¸­à¸›à¸ˆà¸±à¸”à¸à¸²à¸£à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸‚้ามà¹à¸žà¸¥à¸•à¸Ÿà¸­à¸£à¹Œà¸¡</translation>
+ </message>
+ <message>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path to a custom config file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>key file of the database</source>
+ <translation>à¹à¸Ÿà¹‰à¸¡à¸à¸¸à¸à¹à¸ˆà¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸™à¸‚้อมูลดังà¸à¸¥à¹ˆà¸²à¸§</translation>
+ </message>
+ <message>
+ <source>read password of the database from stdin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_tr.ts b/share/translations/keepassx_tr.ts
index 4514a4204..5b3b6f439 100644
--- a/share/translations/keepassx_tr.ts
+++ b/share/translations/keepassx_tr.ts
@@ -10,14 +10,30 @@
<translation>Hakkında</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Hataları bildir: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC GNU Genel Kamu Lisansı (GPL) sürüm 2 veya (isteğinize göre) sürüm 3 şartları altında dağıtılmıştır.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Katkıcılar</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Katkıları GitHub&apos;da Gör&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Hata Ayıklama Bilgisi</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Bir hata bildirirken ÅŸu bilgileri ekleyin:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Panoya kopyala</translation>
</message>
@@ -32,6 +48,10 @@
<translation>Düzeltme: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Dağıtım: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Kütüphaneler:</translation>
</message>
@@ -48,33 +68,26 @@ MÄ°B mimarisi: %2
<translation>Etkin eklentiler:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>Hataları bildir: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC GNU Genel Kamu Lisansı (GPL) sürüm 2 veya (isteğinize göre) sürüm 3 şartları altında dağıtılmıştır.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Tasarı Bakımcıları:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Katkıları GitHub&apos;da Gör&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Bir hata bildirirken ÅŸu bilgileri ekleyin:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
+ <source>Build Type: %1
+</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Erişim Onayı</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Bu kararı anımsa</translation>
</message>
@@ -92,9 +105,12 @@ Please select whether you want to allow access.</source>
<translation>%1, şu öge(ler) için parolalara erişim izni istedi.
Lütfen erişime izin vermek istediklerinizi seçin.</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP Erişim Onayı</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -105,7 +121,27 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
- <translation>Oto-Yaz - KeePassXC</translation>
+ <translation>Oto-Yazım - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Oto-Yazım</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -124,14 +160,314 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Küme</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Başlık</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Kullanıcı adı</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sıra</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Oto-Yazım - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
- <translation>Oto-Yazmak için girdi seçiniz:</translation>
+ <translation>Oto-Yazım için girdi seçiniz:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>Oto-Yaz - KeePassXC</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Bu kararı anımsa</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Ä°zin ver</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Reddet</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1, şu öge(ler) için parolalara erişim izni istedi.
+Lütfen erişime izin vermek istediklerinizi seçin.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Diyalog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Genel</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Eğer kilitliyse veri tabanını açmayı is&amp;te</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Tüm alan adı için tüm girdilerin yerine belirli bir URL için yalnızca en iyi eşleşmeyi döndürür.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>GeliÅŸmiÅŸ</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Yalnızca seçilen veri tabanı istemciyle bağlanmış olmalıdır.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Dizge alanlarını kendiliğinden oluşturma ve güncelleme desteklenmiyor.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot; ile başlayan gelişmiş dizge alanları &amp;döndür</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: Yeni anahtar iliÅŸkilendirme isteÄŸi</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Var olan anahtarın üstüne yaz?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Girdi Güncelle</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Veri tabanı kilitli!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Etkin veri tabanı kilitli!
+Lütfen seçilen veri tabanının kilidini kaldırın veya kilitli olmayan birini seçin.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Ayarlar kullanılabilir değil!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: Anahtar bulunamadı</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Anahtarlar veri tabanından kaldırıldı</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Ä°ptal</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Silinen yetkiler</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: İzinli girdi bulunamadı!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Etkin veri tabanı izinleri olan girdi barındırmıyor.</translation>
</message>
</context>
<context>
@@ -149,6 +485,10 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<translation>Parolayı yinele:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>&amp;Anahtar dosyası</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>Gözat</translation>
</message>
@@ -157,6 +497,14 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<translation>OluÅŸtur</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Yenile</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Anahtar dosyaları</translation>
</message>
@@ -177,6 +525,10 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<translation>Bir anahtar dosyası seç</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>BoÅŸ parola</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>BoÅŸ bir dizgeyi parola olarak kullanmak istediÄŸinize emin misiniz?</translation>
</message>
@@ -191,20 +543,15 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>&amp;Anahtar dosyası</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
+ <source>Legacy key file format</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Refresh</source>
- <translation>Yenile</translation>
- </message>
- <message>
- <source>Empty password</source>
- <translation>BoÅŸ parola</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +565,10 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<translation>Klonlama Ayarları</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Başlık sonuna &apos; - Klon&apos; ekle</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation type="unfinished"/>
</message>
@@ -225,10 +576,6 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<source>Copy history</source>
<translation>Kopyalama Geçmişi</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Başlık sonuna &apos; - Klon&apos; ekle</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -270,7 +617,7 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
</message>
<message>
<source>Number of headers line to discard</source>
- <translation>Kaldırılacak başlık satırı adedi</translation>
+ <translation>Vazgeçilecek başlık satırı adedi</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
@@ -326,10 +673,6 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>CSV dosyası içe aktar</translation>
- </message>
- <message>
<source>Error</source>
<translation>Hata</translation>
</message>
@@ -340,17 +683,17 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>bayt,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>satır,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>sütun,</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +715,14 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<translation>Gözat</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Yenile</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Veri tabanı açılamıyor.</translation>
</message>
@@ -380,6 +731,21 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<translation>Anahtar dosya açılamıyor</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>All files</source>
<translation>Tüm dosyalar</translation>
</message>
@@ -391,14 +757,6 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<source>Select key file</source>
<translation>Anahtar dosyası seç</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Yenile</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +773,14 @@ Lütfen erişime izin vermek istediklerinizi seçin.</translation>
<translation>Anahtar dosya açılamıyor</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Veri tabanı açıldı. Yapılacak bir şey yok.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Veri tabanı açılamıyor.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Veri tabanı açıldı. Yapılacak bir şey yok.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>Başarılı</translation>
</message>
@@ -440,28 +798,118 @@ Artık kaydedebilirsiniz.</translation>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>Veri tabanı adı:</translation>
+ <source>General</source>
+ <translation>Genel</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>Veri tabanı ayrıntısı:</translation>
+ <source>Encryption</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Transform rounds:</source>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
<translation type="unfinished"/>
</message>
<message>
- <source>Default username:</source>
- <translation>Öntanımlı kullanıcı adı:</translation>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
</message>
<message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
<source> MiB</source>
- <translation>MiB</translation>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
<message>
- <source>Benchmark</source>
- <translation>Karşılaştırmalı Değerlendirme</translation>
+ <source>Encryption Algorithm:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (öntanımlı)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Veri tabanı adı:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Veri tabanı ayrıntısı:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Öntanımlı kullanıcı adı:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +920,27 @@ Artık kaydedebilirsiniz.</translation>
<translation>Azami geçmiş boyutu:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>Geri dönüşüm kutusunu kullan</translation>
+ <source> MiB</source>
+ <translation>MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 Bit (öntanımlı)</translation>
+ <source>Use recycle bin</source>
+ <translation>Geri dönüşüm kutusunu kullan</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 Bit</translation>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Algoritma:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Kök</translation>
</message>
<message>
@@ -504,29 +953,55 @@ Artık kaydedebilirsiniz.</translation>
</message>
<message>
<source>Open database</source>
- <translation>Veritabanı aç</translation>
+ <translation>Veri tabanı aç</translation>
</message>
<message>
<source>File not found!</source>
<translation>Dosya bulunamadı!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>KeePass 1 veri tabanı aç</translation>
+ <source>Unable to open the database.</source>
+ <translation>Veri tabanı açılamıyor.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 veri tabanı</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Dosya salt okunur kipte açıldı.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>CSV dosyası aç</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV dosyası</translation>
</message>
<message>
<source>All files (*)</source>
<translation>Tüm dosyalar (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Veri tabanı birleştir</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>KeePass 1 veri tabanı aç</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 veri tabanı</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Kapat?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot;, düzenleme kipinde.
+Değişikliklerden vazgeç ve her durumda kapat?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>DeÄŸiÅŸiklikleri kaydet?</translation>
</message>
@@ -541,10 +1016,22 @@ DeÄŸiÅŸiklikleri kaydet?</translation>
<translation>Veri tabanına yazma başarısız.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>Parolalar</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Veri tabanını farklı kaydet</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>Veri tabanını CSV dosyasına dışa aktar</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>CSV dosyasına yazma başarısız.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Yeni veri tabanı</translation>
</message>
@@ -563,11 +1050,6 @@ Please press cancel to finish your changes or discard them.</source>
Lütfen değişikliklerinizi bitirmek için iptale basın veya onlardan vazgeçin.</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation type="unfinished"/>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -576,65 +1058,22 @@ Kilitlemeden önce veri tabanını kaydetmek ister misiniz?
Aksi halde deÄŸiÅŸiklikleriniz kaybolacak.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>Veri tabanını CSV dosyasına dışa aktar</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV dosyası</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>CSV dosyasına yazma başarısız.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Veri tabanı açılamıyor.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Veri tabanı birleştir</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
+ <source>Disable safe saves?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Passwords</source>
- <translation>Parolalar</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Veri tabanı zaten açıldı</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
<translation type="unfinished"/>
</message>
- <message>
- <source>Open read-only</source>
- <translation>Salt okunur aç</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Dosya salt okunur kipte açıldı.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>CSV dosyası aç</translation>
- </message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Aranıyor...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Ana anahtarı değiştir</translation>
</message>
@@ -644,7 +1083,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
- <translation type="unfinished"/>
+ <translation>&quot;%1&quot; girdisini tümüyle silmek istediğinize emin misiniz?</translation>
</message>
<message>
<source>Delete entries?</source>
@@ -652,7 +1091,15 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Do you really want to delete %1 entries for good?</source>
- <translation type="unfinished"/>
+ <translation>%1 girdiyi tümüyle silmek istediğinize emin misiniz?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Girdiyi geri dönüşüm kutusuna taşı?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>&quot;%1&quot; girdisini geri dönüşüm kutusuna taşımak istediğinize emin misiniz?</translation>
</message>
<message>
<source>Move entries to recycle bin?</source>
@@ -660,31 +1107,31 @@ Do you want to open it anyway?</source>
</message>
<message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n girdiyi geri dönüşüm kutusuna taşımak istediğinize emin misiniz?</numerusform><numerusform>%n girdiyi geri dönüşüm kutusuna taşımak istediğinize emin misiniz?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Kümeyi sil?</translation>
+ <source>Execute command?</source>
+ <translation>Komut çalıştır?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation type="unfinished"/>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Şu komutu çalıştırmak istediğinize emin misiniz?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ana anahtar hesaplanamıyor</translation>
+ <source>Remember my choice</source>
+ <translation>Seçimimi anımsa</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>Girdiyi geri dönüşüm kutusuna taşı?</translation>
+ <source>Delete group?</source>
+ <translation>Kümeyi sil?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>&quot;%1&quot; girdisini geri dönüşüm kutusuna taşımak istediğinize emin misiniz?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>&quot;%1&quot; kümesini tümüyle silmek istediğinize emin misiniz?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Aranıyor...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Ana anahtar hesaplanamıyor</translation>
</message>
<message>
<source>No current database.</source>
@@ -703,20 +1150,8 @@ Do you want to open it anyway?</source>
<translation>Sonuç Yok</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Komut çalıştır?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Şu komutu çalıştırmak istediğinize emin misiniz?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Seçimimi anımsa</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Kendinden yeniden yükleme isteği</translation>
+ <source>File has changed</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -727,12 +1162,13 @@ Do you want to open it anyway?</source>
<translation>BirleÅŸtirme Ä°steÄŸi</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Veri tabanı dosyası değiştirildi ve kaydedilmemiş değişiklikleriniz var. Değişikliklerinizi birleştirmek ister misiniz?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
- <translation type="unfinished"/>
+ <translation>Bu veri tabanını kendiliğinden yeniden yüklenirken yeni veri tabanı dosyası açılamadı.</translation>
</message>
<message>
<source>Empty recycle bin?</source>
@@ -744,6 +1180,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Kapat</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Genel</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Kullanıcı adı</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Ekler</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notlar</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Pencere</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sıra</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Ara</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Temizle</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -759,7 +1278,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Auto-Type</source>
- <translation>Oto-Yazma</translation>
+ <translation>Oto-Yazım</translation>
</message>
<message>
<source>Properties</source>
@@ -770,6 +1289,30 @@ Do you want to open it anyway?</source>
<translation>Geçmiş</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Girdi geçmişi</translation>
</message>
@@ -779,7 +1322,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Edit entry</source>
- <translation>Girdi düzenle</translation>
+ <translation>Girdiyi düzenle</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -790,22 +1333,20 @@ Do you want to open it anyway?</source>
<translation>Yeni öznitelik</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Dosya seç</translation>
+ <source>Confirm Remove</source>
+ <translation>Kaldırmayı Onayla</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Dosya açılamıyor</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Bu özniteliği silmek istediğinizden emin misiniz?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Eki kaydet</translation>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Ek kaydedilemiyor:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Tomorrow</source>
@@ -824,20 +1365,16 @@ Do you want to open it anyway?</source>
<translation>1 yıl</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Kaldırmayı Onayla</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Bu özniteliği silmek istediğinizden emin misiniz?</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[KORUMALI] Görmek veya düzenlemek için göstere bas</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Bu eki kaldırmak istediğinizden emin misiniz?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -855,18 +1392,6 @@ Do you want to open it anyway?</source>
<translation>Kaldır</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>Ekler</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Kaydet</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Aç</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Adı Düzenle</translation>
</message>
@@ -878,43 +1403,51 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>Göster</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation type="unfinished"/>
+ <source>Attachments</source>
+ <translation>Ekler</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Pencere başlığı:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Bu girdi için Oto-Yazımı etkinleştir</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
- <translation type="unfinished"/>
+ <translation>Öntanımlı Oto-Yazım dizilişini &amp;kümeden devral</translation>
</message>
<message>
<source>&amp;Use custom Auto-Type sequence:</source>
- <translation type="unfinished"/>
+ <translation>Özel Oto-Yazım dizilişi k&amp;ullan:</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation type="unfinished"/>
+ <source>Window Associations</source>
+ <translation>Pencere Ä°liÅŸkilendirmeleri</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation type="unfinished"/>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Pencere başlığı:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
<translation type="unfinished"/>
</message>
</context>
@@ -926,7 +1459,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Restore</source>
- <translation type="unfinished"/>
+ <translation>Geri yükle</translation>
</message>
<message>
<source>Delete</source>
@@ -940,36 +1473,116 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
+ <source>URL:</source>
+ <translation>URL:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>Parola:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>Yinele:</translation>
+ </message>
+ <message>
<source>Title:</source>
<translation>Başlık:</translation>
</message>
<message>
+ <source>Notes</source>
+ <translation>Notlar</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation>Öndeğerler</translation>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Username:</source>
<translation>Kullanıcı adı:</translation>
</message>
<message>
- <source>Password:</source>
- <translation>Parola:</translation>
+ <source>Expires</source>
+ <translation>Biter</translation>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
<message>
- <source>Repeat:</source>
- <translation>Yinele:</translation>
+ <source>Form</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Expires</source>
+ <source> seconds</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Presets</source>
+ <source>Fingerprint</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Notes:</source>
- <translation>Notlar</translation>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Panoya kopyala</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -992,7 +1605,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Edit group</source>
- <translation>Küme düzenle</translation>
+ <translation>Kümeyi düzenle</translation>
</message>
<message>
<source>Enable</source>
@@ -1004,7 +1617,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Inherit from parent group (%1)</source>
- <translation type="unfinished"/>
+ <translation>Üst kümeden devral (%1)</translation>
</message>
</context>
<context>
@@ -1019,7 +1632,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Expires</source>
- <translation type="unfinished"/>
+ <translation>Biter</translation>
</message>
<message>
<source>Search</source>
@@ -1027,20 +1640,28 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Auto-Type</source>
- <translation>Oto-Yazma</translation>
+ <translation>Oto-Yazım</translation>
</message>
<message>
<source>&amp;Use default Auto-Type sequence of parent group</source>
- <translation type="unfinished"/>
+ <translation>Üst kümenin öntanımlı Oto-Yazım dizilişini k&amp;ullan</translation>
</message>
<message>
<source>Set default Auto-Type se&amp;quence</source>
- <translation type="unfinished"/>
+ <translation>Öntanımlı Oto-Yazım &amp;dizilişi belirle</translation>
</message>
</context>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Öntanımlı simge kullan</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Öze&amp;l simge kullan</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Özel simge ekle</translation>
</message>
@@ -1049,6 +1670,18 @@ Do you want to open it anyway?</source>
<translation>Özel simgeyi sil</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Simge indir</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Simge alınamadı.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>İpucu: Araçlar&gt;Ayarlar&gt;Güvenlik altından Google&apos;ı yedek olarak etkinleştirebilirsiniz</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>Resimler</translation>
</message>
@@ -1061,24 +1694,12 @@ Do you want to open it anyway?</source>
<translation>Resim Seç</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Simge indir</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Simge alınamadı.</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Simge okunamadı</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>&amp;Öntanımlı simgeyi kullan</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>Öze&amp;l simge kullan</translation>
+ <source>Custom icon already exists</source>
+ <translation>Özel simge zaten var</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1088,14 +1709,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Bu simge %1 girdi tarafından kullanılıyor ve öntanımlı simge tarafından değiştirilecek. Silmek istediğinize emin misiniz?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1115,15 +1728,124 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Kaldır</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation>- Klon</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Ad</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Ekle</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Kaldır</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Aç</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Kaydet</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Kaldırmayı Onayla</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1152,6 +1874,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>Ref: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Küme</translation>
</message>
@@ -1168,9 +1895,67 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>Ref: </translation>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notlar</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Biter</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Ekler</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1181,6 +1966,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1208,7 +2004,7 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Numbers</source>
- <translation>Sayılar</translation>
+ <translation>Rakamlar</translation>
</message>
<message>
<source>0-9</source>
@@ -1228,7 +2024,11 @@ Do you want to open it anyway?</source>
</message>
<message>
<source>Ensure that the password contains characters from every group</source>
- <translation>Parolanın her kümeden karakter içerdiğine emin olun</translation>
+ <translation>Parolanın her kümeden karakter içerdiğine emin ol</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>GeniÅŸletilmiÅŸ ASCII</translation>
</message>
</context>
<context>
@@ -1243,6 +2043,361 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ana anahtar hesaplanamıyor</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Yanlış anahtar veya veri tabanı dosyası bozuk.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ana anahtar hesaplanamıyor</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ana anahtar hesaplanamıyor</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ana anahtar hesaplanamıyor</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>KeePass veri tabanı değil.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Seçilen dosya eski bir KeePass1 veri tabanıdır (.kdb).
+
+Veri tabanı &gt; &apos;KeePass1 veri tabanı içe aktar...&apos;a tıklayarak içe aktarabilirsiniz.
+Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski KeePassX 0.4 sürümüyle açamayacaksınız.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1272,6 +2427,35 @@ Do you want to open it anyway?</source>
<translation>Desteklenmeyen KeePass veri tabanı sürümü.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Root</source>
<translation>Kök</translation>
</message>
@@ -1283,129 +2467,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>Yanlış anahtar veya veri tabanı dosyası bozuk.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>KeePass veri tabanı değil.</translation>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>Desteklenmeyen KeePass veri tabanı sürümü.</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Yanlış anahtar veya veri tabanı dosyası bozuk.</translation>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ana anahtar hesaplanamaz</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group id field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Seçilen dosya eski bir KeePass1 veri tabanıdır (.kdb).
-
-Veri tabanı &gt; &apos;KeePass1 veri tabanı içe aktar...&apos;a tıklayarak içe aktarabilirsiniz.
-Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski KeePassX 0.4 sürümüyle açamayacaksınız.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
+ <source>Incorrect group modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ana anahtar hesaplanamıyor</translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Kriptografik işlevler sınanırken ölümcül hata.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - Hata</translation>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <source>Incorrect group level field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Başka bir KeePassXC oluşumu zaten çalışıyor.</translation>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Missing group id or level</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Veritabanı aç</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>Veri tabnı ayarları</translation>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Kullanıcı adını panoya kopyala</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Parolayı panoya kopyala</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
- <translation>Ayarlar</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Araç çubuğunu göster</translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>salt okunur</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
+ <source>Invalid entry modification time field size</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 Veri Tabanı</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>Tüm dosyalar</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Onarılan veri tabanını kaydet</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Var olan tekil oluşum kilit dosyası geçersiz. Yeni oluşum başlatılıyor.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>Veri tabanına yazma başarısız.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Kilit dosyası oluşturulamadı. Tekil oluşum kipi devre dışı bırakıldı.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Başka bir KeePassXC oluşumu zaten çalışıyor.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Kriptografik işlevler sınanırken ölümcül hata.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - Hata</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Veri tabanı</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>&amp;Son veri tabanları</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>İçe aktar</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Yardım</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>G&amp;irdiler</translation>
</message>
@@ -1414,12 +2610,16 @@ Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski Ke
<translation>Öznite&amp;liği panoya kopyala</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>&amp;Kümeler</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation type="unfinished"/>
+ <source>&amp;Tools</source>
+ <translation>&amp;Araçlar</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1430,6 +2630,10 @@ Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski Ke
<translation>&amp;Hakkında</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Veri tabanı aç...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Veri tabanını k&amp;aydet</translation>
</message>
@@ -1451,11 +2655,11 @@ Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski Ke
</message>
<message>
<source>&amp;View/Edit entry</source>
- <translation type="unfinished"/>
+ <translation>Girdiyi &amp;göster/düzenle</translation>
</message>
<message>
<source>&amp;Delete entry</source>
- <translation type="unfinished"/>
+ <translation>Girdiyi &amp;sil</translation>
</message>
<message>
<source>&amp;Add new group</source>
@@ -1463,31 +2667,31 @@ Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski Ke
</message>
<message>
<source>&amp;Edit group</source>
- <translation type="unfinished"/>
+ <translation>Kümeyi &amp;düzenle</translation>
</message>
<message>
<source>&amp;Delete group</source>
- <translation type="unfinished"/>
+ <translation>Kümeyi &amp;sil</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>&amp;Veri tabanı ayarları</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Veri tabanını farklı ka&amp;ydet...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>&amp;Girdi Klonla</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Ana anahtarı değiştir...</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>Zamanlanmış tek seferlik parola</translation>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Veri tabanı ayarları</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>&amp;ZTSP&apos;yi kopyala</translation>
+ <source>Database settings</source>
+ <translation>Veri tabnı ayarları</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>ZTSP&apos;yi göster</translation>
+ <source>&amp;Clone entry</source>
+ <translation>Girdiyi &amp;klonla</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1498,20 +2702,32 @@ Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski Ke
<translation>&amp;Kullanıcı adını kopyala</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Kullanıcı adını panoya kopyala</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Parolayı kop&amp;yala</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Parolayı panoya kopyala</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>&amp;Ayarlar</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Parola OluÅŸturucu</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Oto-Yazım &amp;gerçekleştir</translation>
</message>
<message>
<source>&amp;Open URL</source>
- <translation type="unfinished"/>
+ <translation>URL&apos;yi &amp;aç</translation>
</message>
<message>
<source>&amp;Lock databases</source>
@@ -1522,211 +2738,361 @@ Bu tek yönlü bir yer değiştirmedir. İçe aktarılan veri tabanını eski Ke
<translation>&amp;Başlık</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>&amp;Notlar</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Parola OluÅŸturucu</translation>
+ <source>Copy notes to clipboard</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Clear history</source>
- <translation>Geçmişi temizle</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;CSV dosyasına aktar...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>&amp;Veri tabanı</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>KeePass 1 veri tabanını içe aktar</translation>
</message>
<message>
- <source>Import</source>
- <translation>İçe aktar</translation>
+ <source>Import CSV file...</source>
+ <translation>CSV dosyasını içe aktar...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>&amp;Araçlar</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Veri tabanını onar...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>ZTSP&apos;yi göster</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>TOTP kurulumu yap...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>&amp;ZTSP&apos;yi kopyala</translation>
</message>
<message>
- <source>Empty recycle bin</source>
+ <source>E&amp;mpty recycle bin</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Clear history</source>
+ <translation>Geçmişi temizle</translation>
+ </message>
+ <message>
<source>Access error for config file %1</source>
<translation>%1 yapılandırma dosyası için erişim hatası</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>KeePassXC&apos;den Çık</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>Lütfen YubiKey&apos;inizdeki düğmeye dokunun!</translation>
+ <source>read-only</source>
+ <translation>salt okunur</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>&amp;Yardım</translation>
+ <source>Settings</source>
+ <translation>Ayarlar</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>&amp;Veritabanı aç...</translation>
+ <source>Toggle window</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Veribanını kaydet...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>KeePassXC&apos;den Çık</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Ana anahtarı değiştir...</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Veri Tabanı</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>&amp;CSV dosyasına aktar...</translation>
+ <source>All files</source>
+ <translation>Tüm dosyalar</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>KeePass 1 veritabanını içe aktar</translation>
+ <source>Open database</source>
+ <translation>Veri tabanı aç</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>CSV dosyasını içe aktar...</translation>
+ <source>Save repaired database</source>
+ <translation>Onarılan veri tabanını kaydet</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Veritabanını onar...</translation>
+ <source>Writing the database failed.</source>
+ <translation>Veri tabanına yazma başarısız.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>TOTP kurulumu yap...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Lütfen YubiKey&apos;inizdeki düğmeye dokunun!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Diyalog</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>General</source>
- <translation>Genel</translation>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
+ <source>Base64 decoding failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
+ <source>Key file way too small.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
+ <source>Key file magic header id invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Advanced</source>
- <translation>GeliÅŸmiÅŸ</translation>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
+ <source>Failed to read public key.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
+ <source>Corrupted key file, reading private key failed</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
+ <source>No private key payload to decrypt</source>
<translation type="unfinished"/>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP Bağlantı noktası:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>Öntanımlı bağlantı noktası: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
+ <source>Key derivation failed, key file corrupted?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
+ <source>Decryption failed, wrong passphrase?</source>
<translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC, 127.0.0.1 üzerinde bu bağlantı noktasını dinleyecek.</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
+ <source>Unexpected EOF while reading private key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
+ <source>Can&apos;t write public key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
+ <source>Unexpected EOF when writing public key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <source>Can&apos;t write private key as it is empty</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
+ <source>Unexpected EOF when writing private key</source>
<translation type="unfinished"/>
</message>
<message>
- <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <source>Unsupported key type: %1</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Diyalog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation>Bu, ChromeIPass veya PassIFox&apos;tan veri tabanlarınıza erişirken gereklidir</translation>
+ </message>
+ <message>
<source>Enable KeePassHTTP server</source>
<translation>KeePassHTTP sunucusunu etkinleÅŸtir</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Genel</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Kimlik bilgisi istendiğinde bildirim g&amp;öster</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
+ <translation>Tüm alan adı için tüm girdilerin yerine belirli bir URL için yalnızca en iyi eşleşmeyi döndürür.</translation>
</message>
<message>
<source>&amp;Return only best matching entries</source>
- <translation type="unfinished"/>
+ <translation>Yalnızca en iyi eşleşen girdileri &amp;döndür</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Eğer kilitliyse veri tabanını açmayı is&amp;te</translation>
</message>
<message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
- <translation type="unfinished"/>
+ <translation>Yalnızca aynı şemalı girdiler (http://, https://, ftp://, ...) döndürülür.</translation>
</message>
<message>
<source>&amp;Match URL schemes</source>
- <translation type="unfinished"/>
+ <translation>URL şemalarını &amp;eşle</translation>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Eşleşen girdileri &amp;kullanıcı adına göre sırala</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>&amp;Eşleşen girdileri başlığa göre sırala</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Paylaşılan tüm anahtarları etkin veri tabanından ka&amp;ldır</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Saklanan tüm izinleri etkin veri tabanındaki girdilerden kal&amp;dır</translation>
</message>
<message>
<source>Password Generator</source>
<translation>Parola OluÅŸturucu</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>GeliÅŸmiÅŸ</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Her zaman girdilere &amp;eriÅŸime izin ver</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Her zaman girdileri g&amp;üncellemeye izin ver</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
+ <translation>Yalnızca seçilen veri tabanı istemciyle bağlanmış olmalıdır.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Eşleşen girdiler için tüm açık veri tabanlarını a&amp;ra</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Dizge alanlarını kendiliğinden oluşturma ve güncelleme desteklenmiyor.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot; ile başlayan gelişmiş dizge alanları &amp;döndür</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP Bağlantı noktası:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Öntanımlı bağlantı noktası: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC, 127.0.0.1 üzerinde bu bağlantı noktasını dinleyecek.</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
<translation type="unfinished"/>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Aşağıdaki seçenekler tehlikeli olabilir!
-Yalnızca ne yaptığınızı biliyorsanız onları değiştirin.</translation>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>1024&apos;ün altındaki ayrıcalıklı bağlantı noktalarına bağlanamaz!
+Öntanımlı bağlantı noktası olan 19455 kullanılıyor.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%%p</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>Parola:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>güç</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Karakter Türleri</translation>
</message>
@@ -1740,45 +3106,57 @@ Yalnızca ne yaptığınızı biliyorsanız onları değiştirin.</translation>
</message>
<message>
<source>Numbers</source>
- <translation>Sayılar</translation>
+ <translation>Rakamlar</translation>
</message>
<message>
<source>Special Characters</source>
<translation>Özel Karakterler</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>GeniÅŸletilmiÅŸ ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Benzer karakterleri dışla</translation>
</message>
<message>
- <source>Accept</source>
- <translation>Onayla</translation>
+ <source>Pick characters from every group</source>
+ <translation>Her kümeden karakter seç</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%%p</translation>
+ <source>&amp;Length:</source>
+ <translation>&amp;Uzunluk:</translation>
</message>
<message>
- <source>strength</source>
- <translation>güç</translation>
+ <source>Passphrase</source>
+ <translation>Parola Öbeği</translation>
</message>
<message>
- <source>entropy</source>
- <translation type="unfinished"/>
+ <source>Wordlist:</source>
+ <translation>Sözcük listesi:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>&amp;Uzunluk:</translation>
+ <source>Word Count:</source>
+ <translation>Sözcük Sayısı:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>Her kümeden karakter seç</translation>
+ <source>Word Separator:</source>
+ <translation>Sözcük Ayırıcı:</translation>
</message>
<message>
<source>Generate</source>
<translation>OluÅŸtur</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Kopyala</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Onayla</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Kapat</translation>
</message>
@@ -1788,7 +3166,7 @@ Yalnızca ne yaptığınızı biliyorsanız onları değiştirin.</translation>
</message>
<message>
<source>Entropy: %1 bit</source>
- <translation type="unfinished"/>
+ <translation>Entropi: %1 bit</translation>
</message>
<message>
<source>Password Quality: %1</source>
@@ -1796,51 +3174,270 @@ Yalnızca ne yaptığınızı biliyorsanız onları değiştirin.</translation>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Kötü</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Zayıf</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Ä°yi</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Harika</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>Parola</translation>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>GeniÅŸletilmiÅŸ ASCII</translation>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
+ <source>Client public key not received</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Sözcük listesi:</translation>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
- <translation>Sözcük Sayısı:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Sözcük Ayırıcı:</translation>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
- <translation>Kopyala</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Veri tabanının yolu.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Veri tabanının içeriğini çıkar ve yazdır.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Veri tabanının çıkarılacağı yol.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Çalıştırılacak komutun adı.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Veri tabanı girdilerini listele.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>Listelenecek kümenin yolu. Öntanımlı: /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>İki veri tabanını birleştir.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Veri tabanının nereye birleştirileceği.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Veri tabanının nereden birleştirileceği.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Gösterilecek girdinin adı.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL aygıtı</translation>
@@ -1857,15 +3454,35 @@ Yalnızca ne yaptığınızı biliyorsanız onları değiştirin.</translation>
</message>
<message>
<source>malformed string</source>
- <translation type="unfinished"/>
+ <translation>kusurlu dizge</translation>
</message>
<message>
<source>missing closing quote</source>
<translation type="unfinished"/>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-bit</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-bit</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-bit</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – önerilen)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1884,18 +3501,26 @@ Yalnızca ne yaptığınızı biliyorsanız onları değiştirin.</translation>
<translation>Parola</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Notlar</translation>
</message>
<message>
- <source>Browser Integration</source>
+ <source>Last Modified</source>
<translation type="unfinished"/>
</message>
<message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation>Tarayıcı Tümleşmesi</translation>
+ </message>
+ <message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
<translation type="unfinished"/>
</message>
@@ -1907,149 +3532,202 @@ Yalnızca ne yaptığınızı biliyorsanız onları değiştirin.</translation>
<source>Passive</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>QtIOCompressor</name>
<message>
- <source>Internal zlib error when compressing: </source>
+ <source>SSH Agent</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error writing to underlying device: </source>
+ <source>Generate a new random diceware passphrase.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error opening underlying device: </source>
+ <source>Word count for the diceware passphrase.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Error reading data from underlying device: </source>
+ <source>count</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Internal zlib error when decompressing: </source>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>QtIOCompressor::open</name>
<message>
- <source>The gzip format not supported in this version of zlib.</source>
+ <source>Generate a new random password.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Internal zlib error: </source>
- <translation>zlib iç hatası:</translation>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>Büyük Küçük Harfe Duyarlı</translation>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Search</source>
- <translation>Ara</translation>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Clear</source>
- <translation>Temizle</translation>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Search...</source>
- <translation>Ara...</translation>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Limit search to selected group</source>
+ <source>Use extended ASCII in the generated password.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>Service</name>
+ <name>QtIOCompressor</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation type="unfinished"/>
+ <source>Internal zlib error when compressing: </source>
+ <translation>Sıkıştırılırken iç zlib hatası:</translation>
</message>
<message>
- <source>Do you want to update the information in %1 - %2?</source>
+ <source>Error writing to underlying device: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
+ <source>Error opening underlying device: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
+ <source>Error reading data from underlying device: </source>
<translation type="unfinished"/>
</message>
<message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>Internal zlib error when decompressing: </source>
+ <translation>Sıkıştırma açılırken iç zlib hatası:</translation>
</message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
<message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation>gzip biçimi zlib&apos;in bu sürümünde desteklenmiyor.</translation>
</message>
<message>
- <source>Removing stored permissions...</source>
- <translation type="unfinished"/>
+ <source>Internal zlib error: </source>
+ <translation>zlib iç hatası:</translation>
</message>
+</context>
+<context>
+ <name>SearchWidget</name>
<message>
- <source>Abort</source>
- <translation>Ä°ptal</translation>
+ <source>Search...</source>
+ <translation>Ara...</translation>
</message>
<message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation type="unfinished"/>
+ <source>Search</source>
+ <translation>Ara</translation>
</message>
<message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation type="unfinished"/>
+ <source>Clear</source>
+ <translation>Temizle</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation>Büyük Küçük Harfe Duyarlı</translation>
</message>
<message>
+ <source>Limit search to selected group</source>
+ <translation>Aramayı seçilen kümeye sınırla</translation>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
<source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Yeni anahtar iliÅŸkilendirme isteÄŸi</translation>
</message>
<message>
<source>You have received an association request for the above key.
If you would like to allow it access to your KeePassXC database
give it a unique name to identify and accept it.</source>
- <translation type="unfinished"/>
+ <translation>Yukarıdaki anahtar için ilişkilendirme isteği aldınız.
+Eğer KeePassXC veri tabanınıza erişmesine izin vermek isterseniz
+tanımlamak için ona eşsiz bir ad verin ve kabul edin.</translation>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
<translation>KeePassXC: Var olan anahtarın üstüne yaz?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>&quot;%1&quot; adlı bir paylaşılan şifreleme anahtarı zaten var.
+Ãœzerine yazmak ister misiniz?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: Girdi Güncelle</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
- <translation>KeePassXC: Veritabanı kitli!</translation>
+ <translation>KeePassXC: Veri tabanı kilitli!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Etkin veri tabanı kilitli!
+Lütfen seçilen veri tabanının kilidini kaldırın veya kilitli olmayan birini seçin.</translation>
</message>
<message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: Anahtarlar veri tabanından kaldırıldı</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: Anahtar bulunamadı</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>KeePassHttp Ayarlarında paylaşılan şifreleme anahtarı bulunamadı.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Ayarlar kullanılabilir değil!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Etkin veri tabanı KeePassHttp Ayarlarının girdisini barındırmıyor.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Saklanan izinler kaldırılıyor...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Ä°ptal</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: Silinen yetkiler</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: İzinli girdi bulunamadı!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Etkin veri tabanı izinleri olan girdi barındırmıyor.</translation>
</message>
</context>
<context>
@@ -2074,10 +3752,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Temel Ayarlar</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Yalnızca tek KeePassXC oluşumu başlat</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Son veri tabanlarını anımsa</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Son anahtar dosyalarını ve güvenlik aygıtlarını anımsa</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Başlangıçta önceki veri tabanlarını yükle</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Çıkışta kendiliğinden kaydet</translation>
</message>
@@ -2086,20 +3780,28 @@ give it a unique name to identify and accept it.</source>
<translation>Her değişiklik sonrası kendiliğinden kaydet</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Veri tabanı dışarıdan değiştirildiğinde kendiliğinden yeniden yükle</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Panoya kopyalarken simge durumuna küçült</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Uygulama başlangıcında pencereyi simge durumuna küçült</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>Girdi oluşturmada küme simgesini kullan</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation type="unfinished"/>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Veri dışı değişiklikler (kümeleri genişletmek gibi) için veri tabanını değiştirildi olarak imleme</translation>
</message>
<message>
- <source>Language</source>
- <translation>Dil</translation>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2110,95 +3812,117 @@ give it a unique name to identify and accept it.</source>
<translation>Simge durumuna küçültüldüğünde pencereyi sistem tepsisine gizle</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Başlangıçta önceki veri tabanlarını yükle</translation>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation>Uygulamadan çıkmak yerine pencereyi sistem tepsisine gizle</translation>
</message>
<message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Veri tabanı dışarıdan değiştirildiğinde kendiliğinden yeniden yükle</translation>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Hide window to system tray instead of app exit</source>
- <translation>Uygulamadan çıkmak yerine pencereyi sistem tepsisine gizle</translation>
+ <source>Language</source>
+ <translation>Dil</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Uygulama başlangıcında pencereyi simge durumuna küçült</translation>
+ <source>Auto-Type</source>
+ <translation>Oto-Yazım</translation>
</message>
<message>
- <source>Basic Settings</source>
- <translation>Temel Ayarlar</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Remember last key files and security dongles</source>
+ <source>Use entry URL to match windows for global Auto-Type</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <source>Always ask before performing Auto-Type</source>
+ <translation>Oto-Yazım gerçekleştirmeden önce her zaman sor</translation>
</message>
<message>
- <source>Auto-Type</source>
- <translation>Oto-Yazma</translation>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Küresel Oto-Yazım kısayolu</translation>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation>Oto-Yazım gecikmesi</translation>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation>ms</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
+ <source>Startup</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Always ask before performing Auto-Type</source>
+ <source>File Management</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Auto-Type delay</source>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
<translation type="unfinished"/>
</message>
<message>
- <source> ms</source>
+ <source>Backup database file before saving</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Entry Management</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>General</source>
+ <translation>Genel</translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Zaman Aşımları</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
- <translation type="unfinished"/>
+ <translation>Åžundan sonra panoyu temizle</translation>
</message>
<message>
<source> sec</source>
- <translation type="unfinished"/>
+ <comment>Seconds</comment>
+ <translation>san</translation>
</message>
<message>
<source>Lock databases after inactivity of</source>
- <translation type="unfinished"/>
+ <translation>Şu kadar hareketsizlikten sonra veri tabanlarını kilitle</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Parolaları öntanımlı olarak düz metinde göster</translation>
+ <source>Convenience</source>
+ <translation>ElveriÅŸlilik</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Oturum kilitlendiğinde veya kapak kapandığında veri tabanlarını kilitle</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
- <translation type="unfinished"/>
+ <translation>Pencereyi küçülttükten sonra veri tabanlarını kilitle</translation>
</message>
<message>
<source>Don&apos;t require password repeat when it is visible</source>
- <translation type="unfinished"/>
+ <translation>Parola görünür olduğunda yineleme gerektirme</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation type="unfinished"/>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Parolaları öntanımlı olarak düz metinde göster</translation>
</message>
<message>
- <source>Convenience</source>
+ <source>Hide passwords in the preview panel</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Oturum kilitlendiğinde veya kapak kapandığında veri tabanlarını kilitle</translation>
+ <source>Hide entry notes by default</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Privacy</source>
@@ -2206,6 +3930,10 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
+ <translation>Web site simgelerini indirmek için Google&apos;ı yedek olarak kullan</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2220,6 +3948,14 @@ give it a unique name to identify and accept it.</source>
<translation>Anahtar:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>Özel ayarlar kullan</translation>
</message>
@@ -2245,7 +3981,8 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
- <translation type="unfinished"/>
+ <comment>Seconds</comment>
+ <translation>san</translation>
</message>
</context>
<context>
@@ -2281,10 +4018,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>KeePassXC&apos;ye hoÅŸ geldiniz</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Parolalarınızı KeePassXC veri tabanında güvenle depolamaya başlayın</translation>
</message>
@@ -2308,31 +4041,15 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>Son veri tabanları</translation>
</message>
-</context>
-<context>
- <name>main</name>
- <message>
- <source>path to a custom config file</source>
- <translation type="unfinished"/>
- </message>
<message>
- <source>key file of the database</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
+ <source>Welcome to KeePassXC %1</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>main</name>
<message>
- <source>Copy a password to the clipboard</source>
+ <source>Remove an entry from the database.</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2340,60 +4057,32 @@ give it a unique name to identify and accept it.</source>
<translation>Veri tabanının yolu.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
+ <source>Path of the entry to remove.</source>
<translation type="unfinished"/>
</message>
<message>
- <source>Extract and print the content of a database.</source>
- <translation>Veri tabanının içeriğini çıkar ve yazdır.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>Veri tabanının çıkarılacağı yol.</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>Çalıştırılacak komutun adı.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Veri tabanı girdilerini listele.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation type="unfinished"/>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - çapraz platformlu parola yöneticisi</translation>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>İki veri tabanını birleştir.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>açılacak parola veri tabanlarının dosya adları (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>Veri tabanının nereye birleştirileceği.</translation>
+ <source>path to a custom config file</source>
+ <translation>özel yapılandırma dosyası yolu</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>Veri tabanının nereden birleştirileceği.</translation>
+ <source>key file of the database</source>
+ <translation>veri tabanının anahtar dosyası</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>Her iki veri tabanı dosyası için aynı parolayı kullan.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>veri tabanının parolasını stdin&apos;den oku</translation>
</message>
<message>
- <source>Show a password.</source>
+ <source>Parent window handle</source>
<translation type="unfinished"/>
</message>
- <message>
- <source>Name of the entry to show.</source>
- <translation>Gösterilecek girdinin adı.</translation>
- </message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_uk.ts b/share/translations/keepassx_uk.ts
index c8abb87fb..6c22350db 100644
--- a/share/translations/keepassx_uk.ts
+++ b/share/translations/keepassx_uk.ts
@@ -10,14 +10,30 @@
<translation>Про програму</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>ПовідомлÑйте про вади на &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC розповÑюджуєтьÑÑ Ð½Ð° умовах Загальної публічної ліцензії GNU (GPL) верÑÑ–Ñ— 2 або (на ваш вибір) верÑÑ–Ñ— 3.</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>Спільнота</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;ПереглÑнути внеÑок на GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ‰Ð¾Ð´Ð¾ зневадженнÑ</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Коли Ви повідомлÑєте про ваду, завжди долучайте таку інформацію:</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>Скопіювати у буфер обміну</translation>
</message>
@@ -32,6 +48,10 @@
<translation>РевізіÑ: %1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>Розподіл: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>Бібліотеки:</translation>
</message>
@@ -48,33 +68,26 @@ Kernel: %3 %4</source>
<translation>Увімкнені розширеннÑ:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>ПовідомлÑйте про вади на &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC розповÑюджуєтьÑÑ Ð½Ð° умовах Загальної публічної ліцензії GNU (GPL) верÑÑ–Ñ— 2 або (на ваш вибір) верÑÑ–Ñ— 3.</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>Супровідники проекту: </translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;ПереглÑнути внеÑок на GitHub&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>Коли Ви повідомлÑєте про ваду, завжди долучайте таку інформацію:</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
+ <source>Build Type: %1
+</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>Підтвердити доÑтуп KeePassXC до HTTP</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>Запам&apos;Ñтати цей вибір</translation>
</message>
@@ -92,9 +105,12 @@ Please select whether you want to allow access.</source>
<translation>%1 запроÑила доÑтуп до гаÑел Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… запиÑів(-у).
Будь лаÑка, вкажіть чи хочете ви дозволити доÑтуп?</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>Підтвердити доÑтуп KeePassXC до HTTP</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Увімкнути поÑередника SSH (вимагає перезапуÑк)</translation>
</message>
</context>
<context>
@@ -107,6 +123,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation>ÐÐ²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ â€“ KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>ÐвтозаповненнÑ</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>СинтакÑÐ¸Ñ Ð²Ð¸Ñ€Ð°Ð·Ñƒ ÐÐ²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¸Ð¹!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ÐÐ²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¼Ñ–Ñтить надзвичайно довгу затримку. Ви впевнені, що хочете продовжити?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ÐÐ²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¼Ñ–Ñтить надзвичайно довгі ÑƒÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ. Ви впевнені, що хочете продовжити?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ÐÐ²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¼Ñ–Ñтить надзвичайно чаÑто повторювані параметри. Ви впевнені, що хочете продовжити?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +160,318 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Група</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Заголовок</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>ПоÑлідовніÑÑ‚ÑŒ</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>ÐÐ²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ â€“ KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>Виберіть Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ:</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñдача KeePassXC</translation>
+ </message>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>ÐÐ²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ â€“ KeePassXC</translation>
+ <source>Remember this decision</source>
+ <translation>Запам&apos;Ñтати цей вибір</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Дозволити</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Заборонити</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 запроÑила доÑтуп до гаÑел Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… запиÑів(-у).
+Будь лаÑка, вкажіть чи хочете ви дозволити доÑтуп?</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Діалог</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>Це необхідно Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñдачу KeePassXC доÑтупу до Ваших Ñховищ</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Сполучити KeePassXC з переглÑдачем</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Загальні</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Сполучити з такими переглÑдачами:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Показувати повідомленнÑ, коли надходить запит на реєÑтраційні дані</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Запитувати щодо Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñховища, Ñкщо воно заблоковане</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Показані тільки запиÑи з такою Ñамою Ñхемою (http://, https://, ftp://, …).</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>Узгодити зі Ñхемами URL (напр. https:// …)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Показувати лише найкращі збіги Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ð³Ð¾ URL заміÑÑ‚ÑŒ уÑÑ–Ñ… запиÑів Ð´Ð»Ñ Ð²Ñієї облаÑÑ‚Ñ–. </translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>Показувати лише найкращі збіги реєÑтраційних даних</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Сортувати збіжні реєÑтраційні дані за заголовком</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Сортувати збіжні реєÑтраційні дані за іменем кориÑтувача</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>Від&apos;єднати від вÑÑ–Ñ… переглÑдачів</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Забути вÑÑ– збережені дозволи</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Розширені</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ðіколи не запитувати перед читаннÑм реєÑтраційних даних</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Ðіколи не запитувати перед оновленнÑм реєÑтраційних даних</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Тільки вибране Ñховище має бути під&apos;єднаним через клієнта.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Шукати збіги з реєÑтраційними даними у вÑÑ–Ñ… відкритих Ñховищах</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Ðвтоматичне ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð° Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑтових полів не втілене.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Показати розширені текÑтові полÑ, що починаютьÑÑ Ð· «KPH: »</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Ðвтоматично оновлює шлÑÑ… до Ñценаріїв влаÑного обміну повідомленнÑми Ð´Ð»Ñ KeePassXC або двійкового поÑередника KeePassXC під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>Оновлювати файли оголошень Ð´Ð»Ñ Ð²Ð»Ð°Ñного обміну повідомленнÑми під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Підтримувати поÑередницькі заÑтоÑунки між KeePassXC та додатками переглÑдача.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>ВикориÑтовувати поÑередницький заÑтоÑунок між KeePassXC та додатком переглÑдача</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>ВикориÑтовувати влаÑне Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñередника, Ñкщо Ви вÑтановили поÑередника вручну.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>ВикориÑтовувати влаÑне Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñередника</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ПереглÑнути...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;ПопередженнÑ:&lt;/b&gt; ці параметри можуть бути небезпечними!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>Виконавчі файли (*.exe);;Ð’ÑÑ– файли (*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Виконавчі файли (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Вибрати влаÑне Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñередника</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: новий запит на прив&apos;Ñзку ключа</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>Ви одержали запит на прив&apos;Ñзку вказаного ключа.
+
+Якщо Ви бажаєте надати доÑтуп до Вашого Ñховища KeePassXC,
+вкажіть унікальну назву та підтвердьте прив&apos;Ñзку.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Зберегти Ñ– дозволити доÑтуп</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: перезапиÑати наÑвний ключ?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Спільний ключ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· назвою «%1» вже Ñ–Ñнує.
+ПерезапиÑати його?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: оновити запиÑ</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Бажаєте оновити інформацію у %1 – %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Ñховище заблоковане!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Чинне Ñховище заблоковане!
+Будь лаÑка, розблокуйте обране Ñховище або виберіть інше незаблоковане.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупні!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>Поточне Ñховище не міÑтить запиÑу налаштувань.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: жодного ключа не знайдено</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>Ðе знайдено Ñпільних ключів ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ налаштуваннÑÑ… KeePassXC.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: ключі видалені зі Ñховища</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ñ… привілеїв...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>СкаÑувати</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: привілеї видалені</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: Ð·Ð°Ð¿Ð¸Ñ Ð· привілеÑми не знайдено!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Поточне Ñховище не міÑтить запиÑів з привілеÑми.</translation>
</message>
</context>
<context>
@@ -149,6 +489,10 @@ Please select whether you want to allow access.</source>
<translation>Повторіть гаÑло:</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>Файл-&amp;ключ</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>ОглÑд</translation>
</message>
@@ -157,6 +501,14 @@ Please select whether you want to allow access.</source>
<translation>Створити</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Виклик-відповідь</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Оновити</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>Файли-ключі</translation>
</message>
@@ -177,6 +529,10 @@ Please select whether you want to allow access.</source>
<translation>Обрати файл-ключ</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>Порожнє гаÑло</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>Ви дійÑно хочете викориÑтати порожній Ñ€Ñдок у ÑкоÑÑ‚Ñ– гаÑла?</translation>
</message>
@@ -191,20 +547,18 @@ Please select whether you want to allow access.</source>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>Файл-&amp;ключ</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>Виклик-відповідь</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>Оновити</translation>
+ <source>Legacy key file format</source>
+ <translation>ЗаÑтарілий формат файла-ключа</translation>
</message>
<message>
- <source>Empty password</source>
- <translation>Порожнє гаÑло</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Ви викориÑтовуєте заÑтарілий формат файла-ключа, підтримку Ñкого
+може бути ÑкаÑовано у майбутньому.
+
+Бажано Ñтворити новий файл-ключ.</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +572,10 @@ Please select whether you want to allow access.</source>
<translation>Параметри клонуваннÑ</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Додавати « – клон» до заголовка</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>Замінити ім&apos;Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ñ– гаÑло поÑиланнÑми</translation>
</message>
@@ -225,10 +583,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>Скопіювати журнал</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>Додавати « – клон» до заголовка</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +680,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>Імпортувати файл CSV</translation>
- </message>
- <message>
<source>Error</source>
<translation>Помилка</translation>
</message>
@@ -340,17 +690,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>байт,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation><numerusform>%n байт,%n byte(s), </numerusform><numerusform>%n байта, </numerusform><numerusform>%n байтів, </numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>Ñ€Ñдки,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation><numerusform>%n Ñ€Ñдок, </numerusform><numerusform>%n Ñ€Ñдка, </numerusform><numerusform>%n Ñ€Ñдків, </numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>колонки</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation><numerusform>%n колонка</numerusform><numerusform>%n колонки</numerusform><numerusform>%n колонок</numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +722,14 @@ Please select whether you want to allow access.</source>
<translation>ОглÑд</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>Оновити</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Виклик-відповідь:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>Ðеможливо відкрити Ñховище.</translation>
</message>
@@ -380,6 +738,24 @@ Please select whether you want to allow access.</source>
<translation>Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл-ключ</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>ЗаÑтарілий формат файла-ключа</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>Ви викориÑтовуєте заÑтарілий формат файла-ключа, підтримку Ñкого
+може бути ÑкаÑовано у майбутньому.
+
+Бажано Ñтворити новий файл-ключ.</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Більше не показувати це попередженнÑ</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>Ð’ÑÑ– файли</translation>
</message>
@@ -391,14 +767,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>Оберіть файл-ключ</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>Оновити</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>Виклик-відповідь:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +783,14 @@ Please select whether you want to allow access.</source>
<translation>Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл-ключ</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>Сховище відкрите без помилок. Обробка не потрібна.</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>Ðеможливо відкрити Ñховище.</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Сховище відкрите без помилок. Обробка не потрібна.</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>УÑпішно</translation>
</message>
@@ -440,6 +808,108 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
+ <source>General</source>
+ <translation>Загальні</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>ШифруваннÑ</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>КількіÑÑ‚ÑŒ циклів занадто виÑока</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Ви викориÑтовуєте занадто багато циклів Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° у форматі Argon2.
+
+Якщо Ви залишите таку кількіÑÑ‚ÑŒ циклів, Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð’Ð°ÑˆÐ¾Ð³Ð¾ Ñховища може тривати кілька годин або днів (чи навіть довше)!</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Зрозуміло, зберігайте чиÑло</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>СкаÑувати</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>КількіÑÑ‚ÑŒ циклів занадто низька</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>Ви викориÑтовуєте занадто мало циклів Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° у форматі AES-KDF.
+
+Якщо Ви залишите таку кількіÑÑ‚ÑŒ циклів, Ваше Ñховище буде легко зламати.</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>ФОК не змінено</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Спроба перетворити ключ згідно з новими налаштуваннÑми ФОК зазнала невдачі; ФОК залишилаÑÑŒ без змін</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>Ðлгоритм шифруваннÑ:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 біт (типове)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 біт</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°:</translation>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>Циклів перетвореннÑ:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation>Оцінити Ñекундну затримку еталонним теÑтом</translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>ВикориÑтана пам&apos;ÑÑ‚ÑŒ:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>ПаралельніÑÑ‚ÑŒ:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>Метадані Ñховища</translation>
+ </message>
+ <message>
<source>Database name:</source>
<translation>Ðазва Ñховища:</translation>
</message>
@@ -448,20 +918,12 @@ You can now save it.</source>
<translation>ÐžÐ¿Ð¸Ñ Ñховища:</translation>
</message>
<message>
- <source>Transform rounds:</source>
- <translation>Раундів перетворень:</translation>
- </message>
- <message>
<source>Default username:</source>
<translation>Типове Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача:</translation>
</message>
<message>
- <source> MiB</source>
- <translation> МіБ</translation>
- </message>
- <message>
- <source>Benchmark</source>
- <translation>Перевірка</translation>
+ <source>History Settings</source>
+ <translation>ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +934,27 @@ You can now save it.</source>
<translation>МакÑ. розмір журналу:</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>ВикориÑтовувати Ñмітник</translation>
+ <source> MiB</source>
+ <translation>МіБ</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 біт (типове)</translation>
+ <source>Use recycle bin</source>
+ <translation>ВикориÑтовувати Ñмітник</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 біт</translation>
+ <source>Additional Database Settings</source>
+ <translation>Додаткові Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñховища</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>Ðлгоритм:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Увімкнути ÑтиÑÐ½ÐµÐ½Ð½Ñ (рекомендовано)</translation>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>Корінь</translation>
</message>
<message>
@@ -511,22 +974,48 @@ You can now save it.</source>
<translation>Файл не знайдено!</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>Відкрити Ñховище KeePass 1</translation>
+ <source>Unable to open the database.</source>
+ <translation>Ðеможливо відкрити Ñховище.</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>Сховище KeePass 1</translation>
+ <source>File opened in read only mode.</source>
+ <translation>Файл відкритий лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ.</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Відкрити CSV файл</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>Файл CSV</translation>
</message>
<message>
<source>All files (*)</source>
<translation>УÑÑ– файли (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>Об&apos;єднати Ñховище</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Відкрити Ñховище KeePass 1</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>Сховище KeePass 1</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>Закрити?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>«%1» в режимі редагуваннÑ.
+Відхилити зміни Ñ– вÑе одно закрити?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>Зберегти зміни?</translation>
</message>
@@ -541,10 +1030,22 @@ Save changes?</source>
<translation>ЗапиÑати Ñховище не вдалоÑÑ.</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>ГаÑла</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>Зберегти Ñховище Ñк</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>ЕкÑпортувати Ñховище у файл CSV</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Ðе вдалоÑÑŒ запиÑати CSV файл.</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>Ðове Ñховище</translation>
</message>
@@ -563,12 +1064,6 @@ Please press cancel to finish your changes or discard them.</source>
ÐатиÑніть «ÑкаÑувати», щоб завершити зміни або відкинути Ñ—Ñ….</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>Це Ñховище не було збережене.
-Ви можете зберегти Ñховище або зупинити його блокуваннÑ.</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,69 +1072,23 @@ Otherwise your changes are lost.</source>
Інакше внеÑені зміни буде втрачено.</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>«%1» в режимі редагуваннÑ.
-Відхилити зміни Ñ– вÑе одно закрити?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>ЕкÑпортувати Ñховище у файл CSV</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>Файл CSV</translation>
+ <source>Disable safe saves?</source>
+ <translation>Вимкнути безпечне збереженнÑ?</translation>
</message>
<message>
- <source>Writing the CSV file failed.</source>
- <translation>Ðе вдалоÑÑŒ запиÑати CSV файл.</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>Ðеможливо відкрити Ñховище.</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>Об&apos;єднати Ñховище</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>Сховище, Ñке Ви намагаєтеÑÑŒ зберегти, заблоковане іншим примірником KeePassXC.
-Ð’Ñе одно зберегти?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>ГаÑла</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>Сховище вже відкрите</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>Сховище, Ñке Ви намагаєтеÑÑŒ відкрити, заблоковане іншим примірником KeePassXC.
-
-Ð’Ñе одно відкрити?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>Відкрити лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>Файл відкритий лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ.</translation>
- </message>
- <message>
- <source>Open CSV file</source>
- <translation>Відкрити CSV файл</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC не зміг зберегти Ñховище кілька разів поÑпіль. Швидше за вÑе це ÑталоÑÑ Ñ‚Ð¾Ð¼Ñƒ, що Ñлужба ÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² блокує файл Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу.
+Вимкнути безпечне Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ– Ñпробувати знов?</translation>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>Шукаю…</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>Змінити головний ключ</translation>
</message>
@@ -660,6 +1109,14 @@ Do you want to open it anyway?</source>
<translation>Ви дійÑно хочете оÑтаточно видалити %1 запиÑи(-ів)?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>ПереміÑтити Ð·Ð°Ð¿Ð¸Ñ Ñƒ Ñмітник?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Ви Ñправді хочете переміÑтити Ð·Ð°Ð¿Ð¸Ñ Â«%1» у Ñмітник?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>ПереміÑтити запиÑи до Ñмітника?</translation>
</message>
@@ -668,28 +1125,28 @@ Do you want to open it anyway?</source>
<translation><numerusform>Ви дійÑно хочете переміÑтити %n Ð·Ð°Ð¿Ð¸Ñ Ñƒ Ñмітник?</numerusform><numerusform>Ви дійÑно хочете переміÑтити %n запиÑи в Ñмітник?</numerusform><numerusform>Ви дійÑно хочете переміÑтити %n запиÑів у Ñмітник?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>Видалити групу?</translation>
+ <source>Execute command?</source>
+ <translation>Виконати команду?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>Ви дійÑно хочете оÑтаточно видалити групу «%1»?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>Ви Ñправді хочете виконати таку команду? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ðеможливо вирахувати головний ключ</translation>
+ <source>Remember my choice</source>
+ <translation>Запам&apos;Ñтати мій вибір</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>ПереміÑтити Ð·Ð°Ð¿Ð¸Ñ Ñƒ Ñмітник?</translation>
+ <source>Delete group?</source>
+ <translation>Видалити групу?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>Ви Ñправді хочете переміÑтити Ð·Ð°Ð¿Ð¸Ñ Â«%1» у Ñмітник?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Ви дійÑно хочете оÑтаточно видалити групу «%1»?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>Шукаю…</translation>
+ <source>Unable to calculate master key</source>
+ <translation>Ðеможливо вирахувати головний ключ</translation>
</message>
<message>
<source>No current database.</source>
@@ -708,20 +1165,8 @@ Do you want to open it anyway?</source>
<translation>Збіги відÑутні</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>Виконати команду?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>Ви Ñправді хочете виконати таку команду? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>Запам&apos;Ñтати мій вибір</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>Запит на автозавантаженнÑ</translation>
+ <source>File has changed</source>
+ <translation>Файл був змінений</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -732,8 +1177,10 @@ Do you want to open it anyway?</source>
<translation>Запит на об&apos;єднаннÑ</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>Файл Ñховища змінено, але Ви маєте незбережені зміни. Об&apos;єднати Ваші зміни зі змінами у файлі?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>Файл Ñховища було змінено, а Ви маєте незбережені зміни.
+Об‘єднати ці зміни?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -749,6 +1196,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>Створити позначку ТОГ</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Закрити</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Загальні</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>ГаÑло</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>Термін чинноÑÑ‚Ñ–</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>ÐвтозаповненнÑ</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>Шукаю</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>Ðтрибути</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>ВкладеннÑ</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Примітки</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Вікно</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>ПоÑлідовніÑÑ‚ÑŒ</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Пошук</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>ОчиÑтити</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Ðіколи</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[ЗÐХИЩЕÐО]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>Вимкнено</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>Увімкнено</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -775,6 +1305,30 @@ Do you want to open it anyway?</source>
<translation>Журнал</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>ПоÑередник SSH</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(зашифровано)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Вибрати таємний ключ</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>Файл занадто великий Ð´Ð»Ñ Ñ‚Ð°Ñ”Ð¼Ð½Ð¾Ð³Ð¾ ключа</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð°Ñ”Ð¼Ð½Ð¾Ð³Ð¾ ключа зазнало невдачі</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>Журнал запиÑу</translation>
</message>
@@ -795,22 +1349,20 @@ Do you want to open it anyway?</source>
<translation>Ðовий атрибут</translation>
</message>
<message>
- <source>Select file</source>
- <translation>Вибрати файл</translation>
+ <source>Confirm Remove</source>
+ <translation>Схваліть видаленнÑ</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>Ðеможливо відкрити файл</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Ви дійÑно бажаєте видалити цей атрибут?</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>Зберегти вкладеннÑ</translation>
+ <source>[PROTECTED]</source>
+ <translation>[ЗÐХИЩЕÐО]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>Ðеможливо зберегти вкладеннÑ:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>ÐатиÑніть «показати» Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду або редагуваннÑ</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -829,20 +1381,16 @@ Do you want to open it anyway?</source>
<translation>1 рік</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>Схваліть видаленнÑ</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>Ви дійÑно бажаєте видалити цей атрибут?</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[ЗÐХИЩЕÐО] ÐатиÑніть «показати», щоб переглÑнути або змінити</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>Ви дійÑно бажаєте видалити це вкладеннÑ?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -860,18 +1408,6 @@ Do you want to open it anyway?</source>
<translation>Видалити</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>ВкладеннÑ</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>Зберегти</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>Відкрити</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>Змінити назву</translation>
</message>
@@ -883,24 +1419,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>Показати</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>Увімкнути Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ запиÑу</translation>
+ <source>Attachments</source>
+ <translation>ВкладеннÑ</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>Заголовок вікна:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>Увімкнути Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ запиÑу</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -911,16 +1447,24 @@ Do you want to open it anyway?</source>
<translation>ВикориÑтати влаÑну поÑлідовніÑÑ‚ÑŒ автозаповненнÑ</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>ВикориÑтати типову поÑлідовніÑÑ‚ÑŒ</translation>
+ <source>Window Associations</source>
+ <translation>Прив&apos;Ñзки вікон</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>УÑтановити влаÑну поÑлідовніÑÑ‚ÑŒ:</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>Прив&apos;Ñзки вікон</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>Заголовок вікна:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -945,12 +1489,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>Заголовок:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача:</translation>
+ <source>URL:</source>
+ <translation>URL:</translation>
</message>
<message>
<source>Password:</source>
@@ -961,20 +1501,104 @@ Do you want to open it anyway?</source>
<translation>ГаÑло ще раз:</translation>
</message>
<message>
- <source>URL:</source>
- <translation>URL:</translation>
+ <source>Title:</source>
+ <translation>Заголовок:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>ЗакінчуєтьÑÑ</translation>
+ <source>Notes</source>
+ <translation>Примітки</translation>
</message>
<message>
<source>Presets</source>
<translation>Заготовки</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>Примітки:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>ÐатиÑніть перемикач, щоб показати розділ нотаток</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>ЗакінчуєтьÑÑ</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>ВидалÑти ключ з в&apos;Ñзки поÑередника піÑлÑ</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation>Ñекунд</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>Відбиток</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>ВидалÑти ключ з в&apos;Ñзки поÑередника під Ñ‡Ð°Ñ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñховища</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Відкритий ключ</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Ðадавати ключ поÑередникові під Ñ‡Ð°Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð°Ð±Ð¾ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñховища</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Коментар</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>Розшифрувати</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Скопіювати у буфер обміну</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Таємний ключ</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>Зовнішній файл</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ПереглÑнути...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>ВкладеннÑ</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Додати до в&apos;Ñзки поÑередника</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Видалити з в&apos;Ñзкі поÑередника</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Запрошувати Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ключа</translation>
</message>
</context>
<context>
@@ -1046,6 +1670,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>ВикориÑтати типовий значок</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>ВикориÑтати влаÑний значок</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>Додати Ñвій значок</translation>
</message>
@@ -1054,6 +1686,18 @@ Do you want to open it anyway?</source>
<translation>Видалити Ñвій значок</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>Завантажити фавікон</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Ðеможливо діÑтати фавікон</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>Порада: Ви можете увімкнути Google у ÑкоÑÑ‚Ñ– запаÑного варіанту шлÑхом вибору ІнÑтрументи&gt;ÐалаштуваннÑ&gt;Безпека</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>ЗображеннÑ</translation>
</message>
@@ -1066,24 +1710,12 @@ Do you want to open it anyway?</source>
<translation>Вибір зображеннÑ</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>Завантажити фавікон</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>Ðеможливо діÑтати фавікон</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>Ðеможливо прочитати значок</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>ВикориÑтати типовий значок</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>ВикориÑтати влаÑний значок</translation>
+ <source>Custom icon already exists</source>
+ <translation>Свій значок вже Ñ–Ñнує</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1093,14 +1725,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>Цей значок викориÑтовують %1 запиÑи. Він буде замінений типовим значком. Ви дійÑно бажаєте видалити його?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>Порада: Ви можете увімкнути Google у ÑкоÑÑ‚Ñ– запаÑного варіанту шлÑхом вибору ІнÑтрументи&gt;ÐалаштуваннÑ&gt;Безпека</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1120,15 +1744,129 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Видалити</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation>– клон</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Ðазва</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Розмір</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Додати</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Видалити</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Відкрити</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Зберегти</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Вибрати файли</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>Схваліть видаленнÑ</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Зберегти вкладеннÑ</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Ðеможливо Ñтворити директорію:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Ви дійÑно бажаєте перезапиÑати наÑвний файл «%1» цим вкладеннÑм?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Схваліть перезапиÑ</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Ðеможливо зберегти вкладеннÑ:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Ðеможливо відкрити вкладеннÑ:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Ðеможливо відкрити вкладеннÑ:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Ðеможливо відкрити файли:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1157,6 +1895,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>ПоÑ.:</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>Група</translation>
</message>
@@ -1173,9 +1916,67 @@ Do you want to open it anyway?</source>
<translation>URL</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>ПоÑ.:</translation>
+ <source>Never</source>
+ <translation>Ðіколи</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>ГаÑло</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Примітки</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>ЗакінчуєтьÑÑ</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Створено</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>Змінено</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>ДоÑтуп</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>ВкладеннÑ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>Ðалаштувати переглÑд</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>Ховати імена кориÑтувача</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>Ховати гаÑла</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>ПрипаÑувати до вікна</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation>ПрипаÑувати до вміÑту</translation>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>Повернути до типових налаштувань</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1186,6 +1987,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: неможливо зберегти файл!</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>Ðеможливо зберегти файл Ñценарію Ð´Ð»Ñ Ð²Ð»Ð°Ñного обміну повідомленнÑми.</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1235,6 +2047,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>Забезпечити викориÑÑ‚Ð°Ð½Ð½Ñ Ñимволів уÑÑ–Ñ… видів у гаÑлі</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Розширені ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1248,6 +2064,361 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðеможливо вирахувати головний ключ</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Ðеможливо видати виклик-відповідь.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Ðеправильний ключ або файл Ñховища пошкоджено.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Ðеможливо видати виклик-відповідь.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðеможливо вирахувати головний ключ</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>відÑутні заголовки Ñховища</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðеможливо вирахувати головний ключ</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>Хибний розмір контрольної Ñуми заголовка</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>ÐевідповідніÑÑ‚ÑŒ заголовку SHA256</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Хибний ключ або пошкоджене Ñховище. (невідповідніÑÑ‚ÑŒ HMAC)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Ðевідомий шифр</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>Хибний розмір ідентифікатора заголовка</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Хибна довжина Ð¿Ð¾Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Хибна довжина даних заголовка</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ буфер Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² ФОК у заголовку</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>Ðепідтримувана Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° (ФОК) або хибні параметри</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>Знайдені заÑтарілі Ð¿Ð¾Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° у файлі KDBX4.</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>Хибний розмір ідентифікатора внутрішнього заголовка</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>Хибна довжина Ð¿Ð¾Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ заголовка</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>Хибний розмір двійкового внутрішнього заголовка</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Ðепідтримувана верÑÑ–Ñ Ñтруктури метаданих KeePass.</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна довжина назви запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна назва запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна довжина запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибний запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна довжина логічного запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна довжина Int32 запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна довжина UInt32 запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна довжина Int64 запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибна довжина UInt64 запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибний тип запиÑу в Ñтруктурі метаданих</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>Хибний розмір типу Ð¿Ð¾Ð»Ñ Ð² Ñтруктурі метаданих</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>Хибний алгоритм Ñиметричного шифру.</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Хибний розмір IV Ñиметричного шифру.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Ðеможливо вирахувати головний ключ</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>ÐŸÐµÑ€ÐµÐ²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ поÑлідовний формат Ñтруктури параметрів ФОК зазнало невдачі</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>Хибна довжина uuid шифру</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>Ðепідтримуваний шифр</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>Хибна довжина прапорців ÑтиÑненнÑ</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>Ðепідтримуваний алгоритм ÑтиÑненнÑ</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>Хибний розмір головного початкового чиÑла</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Хибний розмір початкового чиÑла перетвореннÑ</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>Хибний розмір циклу перетвореннÑ</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>Хибний розмір початкових байтів</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>Хибний розмір ідентифікатора випадкового потоку</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>Хибний шифр внутрішнього випадкового потоку</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>Ðе Ñховище KeePass.</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>Вибраний файл Ñ” Ñтарим Ñховищем Ð´Ð»Ñ KeePass 1 (.kdb).
+
+Щоб імпортувати його, виберіть пункт меню «Сховище &gt; Імпортувати Ñховище KeePass 1…».
+ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ лише в одному напрÑмку. Ви не зможете відкрити імпортоване Ñховище Ñтарою верÑією KeePassX 0.4.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Ðепідтримувана верÑÑ–Ñ Ñховища KeePass 2.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>Помилка ÑинтакÑичного аналізу XML: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>Коренева група відÑутнÑ</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>Бракує uuid або даних значка</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>Бракує ключа або Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñних даних</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>Декілька елементів групи</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>Порожній uuid групи</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>Хибний номер значка групи</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>Хибне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ Ð²Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>Хибне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ Ð²Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>Uuid групи не знайдено</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>Порожній DeleteObject uuid</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>Бракує чаÑу або uuid Ð´Ð»Ñ DeleteObject</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>Порожній uuid запиÑу</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>Хибний номер значка запиÑу</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>Журнальний елемент у запиÑу журналу</translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>Uuid запиÑу не знайдено</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>Елемент журналу з відмінним uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Ðеможливо розшифрувати текÑÑ‚ запиÑу</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Знайдено дублікат Вашого влаÑного атрибута</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>Бракує текÑтового ключа або Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Знайдено дублікат вкладеннÑ</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>Бракує двійкового ключа або Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>Вікно або поÑлідовніÑÑ‚ÑŒ прив&apos;Ñзки Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ñутнє</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>Хибне логічне значеннÑ</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>Хибне чаÑове значеннÑ</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>Хибне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>Хибна чаÑтина кольору rgb</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>Хибне цифрове значеннÑ</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>Хибне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ uuid</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>Ðеможливо розпакувати двійковий код</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1277,6 +2448,35 @@ Do you want to open it anyway?</source>
<translation>ВерÑÑ–Ñ Ñховища KeePass не підтримуєтьÑÑ.</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>Ðеможливо прочитати ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>Хибна кількіÑÑ‚ÑŒ груп</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>Хибна кількіÑÑ‚ÑŒ запиÑів</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>Хибний розмір контрольної Ñуми вміÑту</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>Хибний розмір початкового чиÑла перетвореннÑ</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>Хибна кількіÑÑ‚ÑŒ циклів перетвореннÑ</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Ðеможливо побудувати дерево групи</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>Корінь</translation>
</message>
@@ -1288,129 +2488,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>Ðеправильний ключ або файл Ñховища пошкоджено.</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>Ðе Ñховище KeePass.</translation>
+ <source>Key transformation failed</source>
+ <translation>ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° зазнало невдачі</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>ВерÑÑ–Ñ Ñховища KeePass не підтримуєтьÑÑ.</translation>
+ <source>Invalid group field type number</source>
+ <translation>Хибна кількіÑÑ‚ÑŒ типів Ð¿Ð¾Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>Ðеправильний ключ або файл Ñховища пошкоджено.</translation>
+ <source>Invalid group field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ðеможливо вирахувати головний ключ</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>Дані у полі групи Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð½Ðµ відповідають розміру</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Ðеможливо видати виклик-відповідь.</translation>
+ <source>Incorrect group id field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° групи</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>Вибраний файл Ñ” Ñтарим Ñховищем Ð´Ð»Ñ KeePass 1 (.kdb).
-
-Щоб імпортувати його, виберіть пункт меню «Сховище &gt; Імпортувати Ñховище KeePass 1…».
-ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ лише в одному напрÑмку. Ви не зможете відкрити імпортоване Ñховище Ñтарою верÑією KeePassX 0.4.</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ñ‡Ð°Ñу ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>Ðеможливо видати виклик-відповідь.</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу у полі оÑтанньої зміни групи має хибний розмір</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>Ðеможливо вирахувати головний ключ</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу у полі оÑтаннього доÑтупу має хибний розмір</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>Ðевиправна помилка в процеÑÑ– теÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¸Ñ… функцій.</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу у полі Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‚ÐµÑ€Ð¼Ñ–Ð½Ñƒ чинноÑÑ‚Ñ– групи має хибний розмір</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC – помилка</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° групи</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>Ðеможливо Ñтворити блокувальний файл. Режим одного примірника вимкнено.</translation>
+ <source>Incorrect group level field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ñ€Ñ–Ð²Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>Інший примірник KeePassXC вже запущений.</translation>
+ <source>Invalid group field type</source>
+ <translation>Хибний тип Ð¿Ð¾Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation type="unfinished"/>
+ <source>Missing group id or level</source>
+ <translation>Бракує ідентифікатора або Ñ€Ñ–Ð²Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>Відкрити Ñховище</translation>
+ <source>Missing entry field type number</source>
+ <translation>Бракує номера типу Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>Параметри Ñховища</translation>
+ <source>Invalid entry field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>Копіювати Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача в буфер обміну</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>Дані у полі запиÑу Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð½Ðµ відповідають розміру</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>Копіювати гаÑло в буфер обміну</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ uuid запиÑу</translation>
</message>
<message>
- <source>Settings</source>
- <translation>ÐалаштуваннÑ</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° групи запиÑу</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>Показати панель инÑтрументів</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° запиÑу</translation>
</message>
<message>
- <source>read-only</source>
- <translation>тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>Хибний розмір Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ñ‡Ð°Ñу ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>Перемкнути вікно</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>Хибний розмір Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ полі оÑтанньої зміни запиÑу</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>Сховище KeePass 2</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>Поле Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‚ÐµÑ€Ð¼Ñ–Ð½Ñƒ чинноÑÑ‚Ñ– запиÑу має хибний розмір</translation>
</message>
<message>
- <source>All files</source>
- <translation>Ð’ÑÑ– файли</translation>
+ <source>Invalid entry field type</source>
+ <translation>Хибний тип Ð¿Ð¾Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>Зберегти налагоджене Ñховище</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>ÐаÑвний блокувальний файл режиму одного примірника Ñ” хибним. ЗапуÑкаю новий примірник.</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>ЗапиÑати Ñховище не вдалоÑÑ.</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>Ðеможливо Ñтворити блокувальний файл. Режим одного примірника вимкнено.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Інший примірник KeePassXC вже запущений.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Ðевиправна помилка в процеÑÑ– теÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¸Ñ… функцій.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC – помилка</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>Сховище</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>ОÑтанні Ñховища</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>Імпорт</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Довідка</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>ЗапиÑи</translation>
</message>
@@ -1419,12 +2631,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Копіювати атрибут до буферу обміну</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>ТимчаÑове одноразове гаÑло</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>Групи</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>ПереглÑд</translation>
+ <source>&amp;Tools</source>
+ <translation>ІнÑтрументи</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1435,6 +2651,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Про KeePassXC</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>Відкрити Ñховище…</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>Зберігти Ñховище</translation>
</message>
@@ -1475,24 +2695,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Видалити групу</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñховища</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Зберегти Ñховище Ñк…</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>Клонувати запиÑ</translation>
+ <source>Change &amp;master key...</source>
+ <translation>Змінити головний ключ…</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>ТимчаÑове одноразове гаÑло</translation>
+ <source>&amp;Database settings</source>
+ <translation>ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñховища</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>Скопіювати ТОГ</translation>
+ <source>Database settings</source>
+ <translation>Параметри Ñховища</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>Показати ТОГ</translation>
+ <source>&amp;Clone entry</source>
+ <translation>Клонувати запиÑ</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1503,14 +2723,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Копіювати ім&apos;Ñ ÐºÐ¾Ñ€Ð¸Ñтувача</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>Копіювати Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача в буфер обміну</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>Копіювати гаÑло</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>Копіювати гаÑло в буфер обміну</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>ÐалаштуваннÑ</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>Виробник гаÑел</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>Виконати автозаповненнÑ</translation>
</message>
@@ -1527,165 +2759,222 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>Заголовок</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>Скопіювати заголовок до кишені</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>&amp;URL</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>Скопіювати URL до кишені</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>Ðотатки</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>Виробник гаÑел</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>Скопіювати нотатки до кишені</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>ОчиÑтити журнал</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>ЕкÑпортувати до файлу CSV…</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>Сховище</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>Імпортувати Ñховище KeePass 1…</translation>
</message>
<message>
- <source>Import</source>
- <translation>Імпорт</translation>
+ <source>Import CSV file...</source>
+ <translation>Імпортувати файл CSV…</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>ІнÑтрументи</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>Полагодити Ñховище…</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Показати ТОГ</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Ðалаштувати ТОГ…</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Скопіювати ТОГ</translation>
</message>
<message>
- <source>Empty recycle bin</source>
+ <source>E&amp;mpty recycle bin</source>
<translation>Спорожнити Ñмітник</translation>
</message>
<message>
+ <source>Clear history</source>
+ <translation>ОчиÑтити журнал</translation>
+ </message>
+ <message>
<source>Access error for config file %1</source>
<translation>Помилка доÑтупу до файлу конфігурації %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>Вийти з KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Схоже, що Ви викориÑтовуєте KeePassHTTP Ð´Ð»Ñ ÑÐ¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð· переглÑдачем. Цей заÑіб заÑтарів Ñ– буде незабаром видалений. &lt;br&gt;ÐатоміÑÑ‚ÑŒ, перейдіть, будь лаÑка, до викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñдача KeePassXC! Інформацію щодо переходу Ви можете знайти у нашому &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;поÑібнику&lt;/a&gt; (Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ %1 of 3).&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>ÐатиÑніть, будь лаÑка, кнопку на вашому YubiKey!</translation>
+ <source>read-only</source>
+ <translation>тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>Довідка</translation>
+ <source>Settings</source>
+ <translation>ÐалаштуваннÑ</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>Відкрити Ñховище…</translation>
+ <source>Toggle window</source>
+ <translation>Перемкнути вікно</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>Зберегти Ñховище Ñк…</translation>
+ <source>Quit KeePassXC</source>
+ <translation>Вийти з KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>Змінити головний ключ…</translation>
+ <source>KeePass 2 Database</source>
+ <translation>Сховище KeePass 2</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>ЕкÑпортувати до файлу CSV…</translation>
+ <source>All files</source>
+ <translation>Ð’ÑÑ– файли</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>Імпортувати Ñховище KeePass 1…</translation>
+ <source>Open database</source>
+ <translation>Відкрити Ñховище</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>Імпортувати файл CSV…</translation>
+ <source>Save repaired database</source>
+ <translation>Зберегти налагоджене Ñховище</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>Полагодити Ñховище…</translation>
+ <source>Writing the database failed.</source>
+ <translation>ЗапиÑати Ñховище не вдалоÑÑ.</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>Ðалаштувати ТОГ…</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>ÐатиÑніть, будь лаÑка, кнопку на вашому YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>ПопередженнÑ: Ви викориÑтовуєте неÑтійку збірку KeePassXC!
+Зберігайте резервну копію Ваших Ñховищ через підвищений ризик Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ….
+Ð¦Ñ Ð²ÐµÑ€ÑÑ–Ñ Ð½Ðµ призначена Ð´Ð»Ñ Ð¿Ð¾Ð²ÑÑкденного кориÑтуваннÑ.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>Діалог</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>Хибний файл ключа. Ключ має бути у форматі OpenSSH.</translation>
</message>
<message>
- <source>General</source>
- <translation>Загальні</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>ÐевідповідніÑÑ‚ÑŒ межам PEM</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>Показувати повідомленнÑ, коли надходить запит на реєÑтраційні дані</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Ð Ð¾Ð·ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Base64 зазнало невдачі</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>Сортувати збіги за ім&apos;Ñм кориÑтувача</translation>
+ <source>Key file way too small.</source>
+ <translation>Файл ключа занадто маленький.</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>Видалити вÑÑ– збережені привілеї Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñів у активному Ñховищу</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>Хибний логічний код файлу ключа</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>Розширені</translation>
+ <source>Found zero keys</source>
+ <translation>Ðе знайдено жодного ключа</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>Завжди дозволÑти доÑтуп до запиÑів</translation>
+ <source>Failed to read public key.</source>
+ <translation>Ð—Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¾Ð³Ð¾ ключа зазнало невдачі.</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>Завжди дозволÑти Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñів</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>Файл ключа пошкоджений, Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð°Ñ”Ð¼Ð½Ð¾Ð³Ð¾ ключа зазнало невдачі</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>Шукати збіги у вÑÑ–Ñ… відкритих Ñховищах</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>КориÑної навантаги таємного ключа не знайдено</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>Шлюз HTTP:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>Пробуємо обчиÑлити ФОК без шифру</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation> Типовий шлюз: 19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Ð”Ð»Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ключа потрібен вираз гаÑла</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>Запитувати щодо Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñховища, Ñкщо воно заблоковане</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>ОбчиÑÐ»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° зазнало невдачі. Можливо, файл ключа пошкоджений?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>Сортувати збіги за заголовком</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>Ð Ð¾Ð·ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð¾ невдачі, можливо, через хибний вираз гаÑла</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC чекатиме на Ñигнали через цей шлюз за адреÑою 127.0.0.1</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>ÐеÑподіваний кінець файлу під Ñ‡Ð°Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¾Ð³Ð¾ ключа</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>Ðеможливо приєднатиÑÑŒ до привілейованих шлюзів</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>ÐеÑподіваний кінець файлу під Ñ‡Ð°Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð°Ñ”Ð¼Ð½Ð¾Ð³Ð¾ ключа</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>Ðеможливо приєднатиÑÑŒ до привілейованих шлюзів нижче 1024!
-ÐатоміÑÑ‚ÑŒ буде викориÑтано шлюз 19455.</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>Ðеможливо запиÑати відкритий ключ, оÑкільки він пуÑтий</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>Видалити вÑÑ– Ñпільні шифрувальні ключі з активного Ñховища</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>ÐеÑподіваний кінець файлу під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу відкритого ключа</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>Показати розширені текÑтові полÑ, що починаютьÑÑ Ð· «KPH: »</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>Ðеможливо запиÑати таємний ключ, оÑкільки він пуÑтий</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>Ðвтоматичне ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð° Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑтових полів не втілене.</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>ÐеÑподіваний кінець файлу під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу таємного ключа</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Діалог</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1696,6 +2985,15 @@ Using default port 19455.</source>
<translation>Увімкнути Ñервер KeePassHTTP</translation>
</message>
<message>
+ <source>General</source>
+ <translation>Загальні</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Показувати повідомленнÑ, коли надходить запит на реєÑтраційні дані</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>Показувати лише найкращі збіги Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ð³Ð¾ URL заміÑÑ‚ÑŒ уÑÑ–Ñ… запиÑів Ð´Ð»Ñ Ð²Ñієї облаÑÑ‚Ñ–. </translation>
</message>
@@ -1704,6 +3002,10 @@ Using default port 19455.</source>
<translation>Показувати лише найкращі збіги</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Запитувати щодо Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñховища, Ñкщо воно заблоковане</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>Показані тільки запиÑи з такою Ñамою Ñхемою (http://, https://, ftp://, …).</translation>
</message>
@@ -1712,27 +3014,108 @@ Using default port 19455.</source>
<translation>Узгодити зі Ñхемами URL</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Сортувати збіги за ім&apos;Ñм кориÑтувача</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Сортувати збіги за заголовком</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>Видалити вÑÑ– Ñпільні шифрувальні ключі з активного Ñховища</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Видалити вÑÑ– збережені привілеї Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñів у активному Ñховищу</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>Виробник гаÑел</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>Розширені</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Завжди дозволÑти доÑтуп до запиÑів</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>Завжди дозволÑти Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñів</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>Тільки вибране Ñховище має бути під&apos;єднаним через клієнта.</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>Ð—Ð¼Ñ–Ð½ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ… налаштувань може бути небезпечним!
-Змінюйте тільки Ñкщо Ви певно знаєте, що ви робите.</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Шукати збіги у вÑÑ–Ñ… відкритих Ñховищах</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Ðвтоматичне ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð° Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑтових полів не втілене.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>Показати розширені текÑтові полÑ, що починаютьÑÑ Ð· «KPH: »</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>Шлюз HTTP:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation> Типовий шлюз: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC чекатиме на Ñигнали через цей шлюз за адреÑою 127.0.0.1</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;ПопередженнÑ:&lt;/b&gt; ці параметри можуть бути небезпечними!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP заÑтарів Ñ– може бути видалений у майбутньому.&lt;br&gt;ÐатоміÑÑ‚ÑŒ, перейдіть, будь лаÑка, до викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñдача KeePassXC! Інформацію щодо переходу Ви можете знайти у нашому &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;поÑібнику&lt;/a&gt;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>Ðеможливо приєднатиÑÑŒ до привілейованих шлюзів</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>Ðеможливо приєднатиÑÑŒ до привілейованих шлюзів нижче 1024!
+ÐатоміÑÑ‚ÑŒ буде викориÑтано шлюз 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>ГаÑло:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>надійніÑÑ‚ÑŒ</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>ентропіÑ</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>ГаÑло</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>Види Ñимволів</translation>
</message>
@@ -1753,38 +3136,50 @@ Change them only if you know what you are doing.</source>
<translation>Спеціальні Ñимволи</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>Розширені ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>Виключити неоднозначні Ñимволи</translation>
</message>
<message>
- <source>Accept</source>
- <translation>ПрийнÑти</translation>
+ <source>Pick characters from every group</source>
+ <translation>ВикориÑтати Ñимволи з кожної групи</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>Довжина:</translation>
</message>
<message>
- <source>strength</source>
- <translation>надійніÑÑ‚ÑŒ</translation>
+ <source>Passphrase</source>
+ <translation>Вираз гаÑла</translation>
</message>
<message>
- <source>entropy</source>
- <translation>ентропіÑ</translation>
+ <source>Wordlist:</source>
+ <translation>Перелік Ñлів:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>Довжина:</translation>
+ <source>Word Count:</source>
+ <translation>КількіÑÑ‚ÑŒ Ñлів</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>ВикориÑтати Ñимволи з кожної групи</translation>
+ <source>Word Separator:</source>
+ <translation>Розділювач Ñлів</translation>
</message>
<message>
<source>Generate</source>
<translation>Створити</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>Копіювати</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>ПрийнÑти</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>Закрити</translation>
</message>
@@ -1802,51 +3197,276 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>Погана</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>Ðизька</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>Добра</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>Відмінна</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>ГаÑло</translation>
+ <source>Database not opened</source>
+ <translation>Сховище не відкрите</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>Розширені ASCII</translation>
+ <source>Database hash not available</source>
+ <translation>Контрольна Ñума Ñховища недоÑтупна</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>Вираз гаÑла</translation>
+ <source>Client public key not received</source>
+ <translation>Відкритий ключ кориÑтувача не одержано</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>Перелік Ñлів:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>Ðеможливо розшифрувати повідомленнÑ</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>КількіÑÑ‚ÑŒ Ñлів</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>Перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ неможливо під&apos;єднатиÑÑ Ð´Ð¾ KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>Розділювач Ñлів</translation>
+ <source>Action cancelled or denied</source>
+ <translation>Дію ÑкаÑовано або заборонено</translation>
</message>
<message>
- <source>Copy</source>
- <translation>Копіювати</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>Ðеможливо зашифрувати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ знайти відкритий ключ. ПереконайтеÑÑ, що влаÑний обмін повідомленнÑми у KeePassXC ввімкнено.</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>Прив&apos;Ñзка KeePassXC зазнала невдачі, Ñпробуйте ще раз</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Зміна ключа зазнала невдачі</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Шифрувальний ключ не розпізнано</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>Збережених Ñховищ не знайдено</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>Хибна діÑ</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Одержано порожнє повідомленнÑ</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>URL не надано</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>Імен кориÑтувача не знайдено</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>Ðевідома помилка</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Додати новий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ Ñховища</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>ШлÑÑ… до Ñховища.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Файл ключа Ð´Ð»Ñ Ñховища.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>шлÑÑ…</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Ім&apos;Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>ім&apos;Ñ ÐºÐ¾Ñ€Ð¸Ñтувача</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>ЗапроÑити гаÑло Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Створити гаÑло Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>Довжина Ñтворюваного гаÑла.</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>довжина</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>ШлÑÑ… до запиÑу, що треба додати.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Скопіювати гаÑло запиÑу в кишеню.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>ШлÑÑ… до запиÑу, що треба Ñкопіювати.</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Ð§Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ </translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Змінити запиÑ</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Заголовок запиÑу.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>Заголовок</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>ШлÑÑ… до запиÑу, що підлÑгає зміні.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Підрахувати ентропію гаÑла.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>ГаÑло, Ð´Ð»Ñ Ñкого треба підрахувати ентропію.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Виконати поглиблений аналіз гаÑла.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Видобути Ñ– надрукувати вміÑÑ‚ Ñховища.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>ШлÑÑ… до Ñховища, щоб відкрити.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>Ð’Ñтавте гаÑло Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ %1:</translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл ключа %1 : %2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>ПопередженнÑ: Ви викориÑтовуєте заÑтарілий формат ключа, підтримка Ñкого
+ може незабаром закінчитиÑÑŒ.
+
+ Бажано Ñтворити новий файл-ключ.</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+ДоÑтупні команди:
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Ðазва команди до виконаннÑ.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>Показати перелік Ñховищ.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>ШлÑÑ… групи. Типовим Ñ” /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Знаходити запиÑи швидко.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Слово Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Об&apos;єднати два Ñховища.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>ШлÑÑ… до Ñховища, з Ñким об&apos;єднати.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>ШлÑÑ… до Ñховища, Ñке об&apos;єднати.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>ВикориÑтовувати Ñ‚Ñ– ж Ñамі реєÑтраційні дані Ð´Ð»Ñ Ð¾Ð±Ð¾Ñ… Ñховищ.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Файл ключа Ð´Ð»Ñ Ñховища, з Ñкого треба взÑти дані Ð´Ð»Ñ Ð¾Ð±&apos;єднаннÑ.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Показати дані запиÑу.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Ðазви атрибутів Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ. Цей параметр можна вказати кілька разів, тим чаÑом у кожному Ñ€Ñдку може бути тільки один примірник у заданому порÑдку. Якщо атрибути не вказані, буде показано типові атрибути.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>атрибут</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Ðазва запиÑу Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ.</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL приÑтрій</translation>
@@ -1870,8 +3490,28 @@ Change them only if you know what you are doing.</source>
<translation>бракує закривальних лапок</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>Ð’ÐУТРІШÐЯ: уÑпішне Ð·Ð²Ñ–Ð»ÑŒÐ½ÐµÐ½Ð½Ñ Ð½Ð¸Ð¶Ð½ÑŒÐ¾Ñ— межі</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256-біт</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256-біт</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256-біт</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – рекомендовано)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1890,14 +3530,22 @@ Change them only if you know what you are doing.</source>
<translation>ГаÑло</translation>
</message>
<message>
- <source>URL</source>
- <translation>URL</translation>
- </message>
- <message>
<source>Notes</source>
<translation>Примітки</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>ОÑÑ‚Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð°</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>Створено</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>ЗаÑтарілий тип Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ переглÑдача</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ переглÑдача</translation>
</message>
@@ -1913,6 +3561,55 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation>ПаÑивне</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>ПоÑередник SSH</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1951,8 +3648,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>ЧутливіÑÑ‚ÑŒ до регіÑтру</translation>
+ <source>Search...</source>
+ <translation>Шукати...</translation>
</message>
<message>
<source>Search</source>
@@ -1963,8 +3660,8 @@ Change them only if you know what you are doing.</source>
<translation>ОчиÑтити</translation>
</message>
<message>
- <source>Search...</source>
- <translation>Шукати...</translation>
+ <source>Case Sensitive</source>
+ <translation>ЧутливіÑÑ‚ÑŒ до регіÑтру</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1974,50 +3671,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>Спільний ключ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· назвою «%1» вже Ñ–Ñнує.
-ПерезапиÑати його?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>Бажаєте оновити інформацію у %1 – %2?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>Чинне Ñховище заблоковане!
-Будь лаÑка, розблокуйте обране Ñховище або виберіть інше незаблоковане.</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>УÑпішно видалив %1 шифруваннÑ-%2 з налаштувань KeePassX/KeePassHttp.</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>Ðе знайдено Ñпільних ключів ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ налаштуваннÑÑ… KeePassHttp.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>Поточне Ñховище не міÑтить налаштувань KeePassHttp.</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ñ… привілеїв…</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>СкаÑувати</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>УÑпішно видалив привелеї Ð´Ð»Ñ %1 %2.</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>Поточне Ñховище не міÑтить запиÑів з привілеÑми…</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: новий запит на прив&apos;Ñзку ключа</translation>
</message>
@@ -2034,33 +3687,77 @@ give it a unique name to identify and accept it.</source>
<translation>KeePassXC: перезапиÑати наÑвний ключ?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>Спільний ключ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· назвою «%1» вже Ñ–Ñнує.
+ПерезапиÑати його?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC: оновити запиÑ</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Бажаєте оновити інформацію у %1 – %2?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC: Ñховище заблоковане!</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>Чинне Ñховище заблоковане!
+Будь лаÑка, розблокуйте обране Ñховище або виберіть інше незаблоковане.</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC: ключі видалені зі Ñховища</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation><numerusform>УÑпішно видалив %n шифрувальний ключ з HTTP налаштувань KeePassX.</numerusform><numerusform>УÑпішно видалив %n шифрувальних ключа з HTTP налаштувань KeePassX.</numerusform><numerusform>УÑпішно видалив %n шифрувальних ключів з HTTP налаштувань KeePassX.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC: жодного ключа не знайдено</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>Ðе знайдено Ñпільних ключів ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ налаштуваннÑÑ… KeePassHttp.</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC: Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупні!</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>Поточне Ñховище не міÑтить налаштувань KeePassHttp.</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ñ… привілеїв…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>СкаÑувати</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC: привілеї видалені</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation><numerusform>УÑпішно видалив привілеї Ð´Ð»Ñ %n запиÑу.</numerusform><numerusform>УÑпішно видалив привілеї Ð´Ð»Ñ %n запиÑів.</numerusform><numerusform>УÑпішно видалив привілеї Ð´Ð»Ñ %n запиÑів.</numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: Ð·Ð°Ð¿Ð¸Ñ Ð· привілеÑми не знайдено!</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>Поточне Ñховище не міÑтить запиÑів з привілеÑми…</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2084,10 +3781,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>Базові налаштуваннÑ</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>ЗапуÑкати лише один примірник KeePassXC</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>Пам’Ñтати оÑтаннє Ñховище</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>Пам&apos;Ñтати оÑтанні файли ключів Ñ– механізми захиÑту</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Завантажувати попереднє Ñховище під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>Ðвтоматично зберігати при виході</translation>
</message>
@@ -2096,20 +3809,28 @@ give it a unique name to identify and accept it.</source>
<translation>Ðвтоматично зберігати піÑÐ»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— зміни</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Ðвтоматично перезавантажувати Ñховище піÑÐ»Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… змін</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>Згортати при копіюванні до буфера обміну</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>Згорнути вікно піÑÐ»Ñ Ð·Ð°Ð¿ÑƒÑку заÑтоÑунку</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>ВикориÑтовувати Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ… запиÑів значок групи</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>Глобальні ÑÐ¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Ðе помічати Ñховище зміненим піÑÐ»Ñ Ð·Ð¼Ñ–Ð½, що не ÑтоÑуютьÑÑ Ð´Ð°Ð½Ð¸Ñ… (напр. Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð³Ñ€ÑƒÐ¿)</translation>
</message>
<message>
- <source>Language</source>
- <translation>Мова</translation>
+ <source>Hide the Details view</source>
+ <translation>Сховати докладний переглÑд</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2120,66 +3841,84 @@ give it a unique name to identify and accept it.</source>
<translation>При згортанні ховати вікно в облаÑÑ‚ÑŒ ÑиÑтемних повідомлень</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>Завантажувати попереднє Ñховище під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>Ðвтоматично перезавантажувати Ñховище піÑÐ»Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… змін</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>Ховати вікно у ÑиÑтемний лоток заміÑÑ‚ÑŒ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð·Ð°ÑтоÑунку.</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>Згорнути вікно піÑÐ»Ñ Ð·Ð°Ð¿ÑƒÑку заÑтоÑунку</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>Базові налаштуваннÑ</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>Пам&apos;Ñтати оÑтанні файли ключів Ñ– механізми захиÑту</translation>
+ <source>Dark system tray icon</source>
+ <translation>Темний значок у ÑиÑтемному лотку</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>Ðе помічати Ñховище зміненим піÑÐ»Ñ Ð·Ð¼Ñ–Ð½, що не ÑтоÑуютьÑÑ Ð´Ð°Ð½Ð¸Ñ… (напр. Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð³Ñ€ÑƒÐ¿)</translation>
+ <source>Language</source>
+ <translation>Мова</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>ÐвтозаповненнÑ</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>ВикориÑтовувати заголовок запиÑу Ñ– URL Ð´Ð»Ñ Ð´Ð¾Ð±Ð¾Ñ€Ñƒ вікон у загальному автозаповненні</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>ВикориÑтовувати заголовок запиÑу Ð´Ð»Ñ Ð·Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ вікна у глобальному автозаповненні</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>ВикориÑтовувати URL запиÑу Ð´Ð»Ñ Ð·Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ вікна у глобальному автозаповненні</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>Завжди питати перед автозаповненнÑм</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>Глобальні ÑÐ¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>Затримка автозаповненнÑ</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>мÑ</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>ЗапуÑкати лише один примірник KeePassXC</translation>
+ <source>Startup</source>
+ <translation>ЗапуÑк</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation> Безпечно зберігати файли Ñховища (може бути неÑуміÑним з Dropbox та ін.)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>Створювати резервну копію Ñховища перед збереженнÑм</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñами</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Загальні</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>Ð§Ð°Ñ Ð¾Ñ‡Ð¸ÐºÑƒÐ²Ð°Ð½Ð½Ñ</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>Очищати буфер обміну через</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>Ñек</translation>
</message>
<message>
@@ -2187,8 +3926,12 @@ give it a unique name to identify and accept it.</source>
<translation>Заблокувати Ñховище, неактивне протÑгом</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>Типово показувати гаÑло у відкритому виглÑді</translation>
+ <source>Convenience</source>
+ <translation>ЗручніÑÑ‚ÑŒ</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Блокувати Ñховища піÑÐ»Ñ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÑеÑÑ–Ñ— або Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ ÐºÑ€Ð¸ÑˆÐºÐ¸ приÑтрою</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2199,16 +3942,16 @@ give it a unique name to identify and accept it.</source>
<translation>Ðе запитувати Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð³Ð°Ñла, Ñкщо воно не приховане</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>Ð§Ð°Ñ Ð¾Ñ‡Ð¸ÐºÑƒÐ²Ð°Ð½Ð½Ñ</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Типово показувати гаÑло у відкритому виглÑді</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>ЗручніÑÑ‚ÑŒ</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Ховати гаÑла у панелі переглÑду</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>Блокувати Ñховища піÑÐ»Ñ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÑеÑÑ–Ñ— або Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ ÐºÑ€Ð¸ÑˆÐºÐ¸ приÑтрою</translation>
+ <source>Hide entry notes by default</source>
+ <translation>Типово ховати нотатки до запиÑу</translation>
</message>
<message>
<source>Privacy</source>
@@ -2218,6 +3961,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation>ВикориÑтовувати Google Ñк запаÑний варіант Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐºÑ–Ð² Ñторінок</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2230,6 +3977,14 @@ give it a unique name to identify and accept it.</source>
<translation>Ключ:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Типові Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ RFC 6238</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ потока</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>ВикориÑтовувати влаÑні налаштуваннÑ</translation>
</message>
@@ -2255,6 +4010,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>Ñек</translation>
</message>
</context>
@@ -2291,10 +4047,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>ЛаÑкаво проÑимо до KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>Почніть надійно Ñ– безпечно зберігати ваші гаÑла у Ñховищі KeePassXC</translation>
</message>
@@ -2318,92 +4070,48 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>Ðедавні Ñховища</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>ЛаÑкаво проÑимо до KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>шлÑÑ… до влаÑного файла налаштувань</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>файл-ключ Ñховища</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC – багатоплатформовий керманич гаÑел</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>прочитати гаÑло Ð´Ð»Ñ Ñховища зі stdin</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>Ðазви файлів Ñховищ, Ñкі треба відкрити (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>Скопіювати гаÑло до буферу обміну</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>Видалити Ð·Ð°Ð¿Ð¸Ñ Ð·Ñ– Ñховища.</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>ШлÑÑ… до Ñховища.</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>ВикориÑтовувати графічний Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñховища.</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>Ðазва запиÑу Ð´Ð»Ñ Ð²Ñ–Ð´Ñ‚Ð¸Ð½Ð°Ð½Ð½Ñ.</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>Видобути Ñ– надрукувати вміÑÑ‚ Ñховища.</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>ШлÑÑ… до Ñховища, щоб відкрити.</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>ШлÑÑ… до запиÑу, Ñкий треба видалити.</translation>
</message>
<message>
- <source>Name of the command to execute.</source>
- <translation>Ðазва команди до виконаннÑ.</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>Показати перелік Ñховищ.</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>ШлÑÑ… групи. Типовим Ñ” /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>Показувати UUID Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñів Ñ– груп.</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>Об&apos;єднати два Ñховища.</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC – багатоплатформовий керманич гаÑел</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>ШлÑÑ… до Ñховища, з Ñким об&apos;єднати.</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>Ðазви файлів Ñховищ, Ñкі треба відкрити (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>ШлÑÑ… до Ñховища, Ñке об&apos;єднати.</translation>
+ <source>path to a custom config file</source>
+ <translation>шлÑÑ… до влаÑного файла налаштувань</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>ВикориÑтовувати те Ñаме гаÑло Ð´Ð»Ñ Ð¾Ð±Ð¾Ñ… Ñховищ.</translation>
+ <source>key file of the database</source>
+ <translation>файл-ключ Ñховища</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>Показати гаÑло.</translation>
+ <source>read password of the database from stdin</source>
+ <translation>прочитати гаÑло Ð´Ð»Ñ Ñховища зі stdin</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>Ðазва запиÑу Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ.</translation>
+ <source>Parent window handle</source>
+ <translation>Логічний номер батьківÑького вікна</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_zh_CN.ts b/share/translations/keepassx_zh_CN.ts
index 0d5e2806f..4a2381a68 100644
--- a/share/translations/keepassx_zh_CN.ts
+++ b/share/translations/keepassx_zh_CN.ts
@@ -10,14 +10,30 @@
<translation>关于</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>å‰å¾€æŠ¥å‘Š bug:&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC 使用第 2 版 GNU 通用公共授æƒåè®®(GPL)分å‘,你也å¯ä»¥æ ¹æ®éœ€è¦é€‰ç”¨ç¬¬ 3 版。</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>贡献者</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;在 GitHub 上查阅贡献信æ¯&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>调试信æ¯</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>报告任何 bug 时,请包å«ä»¥ä¸‹ä¿¡æ¯ï¼š</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>å¤åˆ¶åˆ°å‰ªè´´æ¿</translation>
</message>
@@ -32,6 +48,10 @@
<translation>修订版本:%1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>å‘行版: %1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>库:</translation>
</message>
@@ -48,33 +68,26 @@ CPU 架构:%2
<translation>å·²å¯ç”¨çš„扩展:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>å‰å¾€æŠ¥å‘Š bug:&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC 使用第 2 版 GNU 通用公共授æƒåè®®(GPL)分å‘,你也å¯ä»¥æ ¹æ®éœ€è¦é€‰ç”¨ç¬¬ 3 版。</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>项目维护者:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;在 GitHub 上查阅贡献信æ¯&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>报告任何 bug 时,请包å«ä»¥ä¸‹ä¿¡æ¯ï¼š</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
+ <source>Build Type: %1
+</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP 确认访问</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>è®°ä½æ­¤é€‰é¡¹</translation>
</message>
@@ -92,9 +105,12 @@ Please select whether you want to allow access.</source>
<translation>%1 请求获å–这些æ¡ç›®çš„密ç ã€‚
请选择是å¦å…许。</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP 确认访问</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>å¯ç”¨ SSH 代ç†ï¼ˆéœ€è¦é‡å¯ï¼‰</translation>
</message>
</context>
<context>
@@ -107,6 +123,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation>KeePassXC - 自动输入</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>自动输入</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>自动输入的语法ä¸æ­£ç¡®!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>此自动输入命令包å«å¾ˆé•¿çš„延迟。你真的è¦ç»§ç»­å—?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>此自动输入命令包å«éžå¸¸æ…¢çš„按键æ“作。你真的è¦ç»§ç»­å—?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>此自动输入命令包å«é¢‘ç¹é‡å¤çš„å‚数。你真的è¦ç»§ç»­å—?</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +160,314 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>群组</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>标题</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>用户å</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>顺åº</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>KeePassXC - 自动输入</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>选择自动输入的项目</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>KeePassXC - 自动输入</translation>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser æµè§ˆå™¨æ‰©å±•åŠŸèƒ½è®¿é—®ç¡®è®¤</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>è®°ä½æ­¤é€‰é¡¹</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>å…许</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>æ‹’ç»</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 请求获å–这些æ¡ç›®çš„密ç ã€‚
+请选择是å¦å…许。</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>对è¯æ¡†</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>需è¦ä½¿ç”¨ KeePassXC-Browser æµè§ˆå™¨æ‰©å±•åŠŸèƒ½è®¿é—®ä½ çš„æ•°æ®åº“。</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>å¯ç”¨ KeepassXC æµè§ˆå™¨é›†æˆ</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>常规</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>为这些æµè§ˆå™¨å¼€å¯é›†æˆï¼š</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>æ•°æ®åº“é”定时请求解é”(Q)</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>åªè¿”回具有相åŒå½¢å¼çš„æ¡ç›®ã€‚ ( http://, https://,... ) </translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>åŒ¹é… URL å½¢å¼ ï¼ˆä¾‹å¦‚ï¼šhttps://……)(&amp;M)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>åªè¿”回特定网å€çš„最佳匹é…,而ä¸æ˜¯æ•´ä¸ªåŸŸå的所有æ¡ç›®ã€‚</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>åªè¿”回最匹é…的凭æ®</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>高级</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>åªæœ‰é€‰å®šçš„æ•°æ®åº“必须与一个客户端连接。</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>ä¸æ”¯æŒè‡ªåŠ¨åˆ›å»ºæˆ–更新字符串字段。</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>返回以“KPH:â€å¼€å¤´çš„高级字符串字段(R)</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>支æŒKeePassXCå’Œæµè§ˆå™¨æ‰©å±•ä¹‹é—´çš„代ç†åº”用程åº.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>æµè§ˆ...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;警告:&lt;/b&gt; 以下选项å¯èƒ½æœ‰å±é™©ï¼</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>å¯æ‰§è¡Œæ–‡ä»¶ï¼ˆ*.exe);;所有文件(*.*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>å¯æ‰§è¡Œæ–‡ä»¶ï¼ˆ*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: 新的密钥关è”请求</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC︰ 覆盖现有的密钥å—?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC︰ æ›´æ–°æ¡ç›®</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>你想更新 %1-%2 中的信æ¯å—?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC︰ æ•°æ®åº“被é”定 ï¼</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>激活的数æ®åº“被é”定 ï¼
+请解é”选定的数æ®åº“或选择å¦ä¸€å·²è§£é”çš„æ•°æ®åº“。</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC︰ 设置ä¸å¯ç”¨ ï¼</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC︰ 未找到键</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC︰ 从数æ®åº“中删除键</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>中断</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC︰ 已删除的æƒé™</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: 未找到æƒé™çš„æ¡ç›®ï¼</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>当å‰æ•°æ®åº“中ä¸åŒ…å«å…·æœ‰æƒé™çš„æ¡ç›®ã€‚</translation>
</message>
</context>
<context>
@@ -149,6 +485,10 @@ Please select whether you want to allow access.</source>
<translation>é‡å¤å¯†ç ï¼š</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>密钥文件(K)</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>æµè§ˆ</translation>
</message>
@@ -157,6 +497,14 @@ Please select whether you want to allow access.</source>
<translation>创建</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>挑战应答(L)</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>密钥文件</translation>
</message>
@@ -177,6 +525,10 @@ Please select whether you want to allow access.</source>
<translation>选择密钥文件</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>空密ç </translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>你确定è¦ä½¿ç”¨ç©ºå¯†ç ï¼Ÿ</translation>
</message>
@@ -191,20 +543,15 @@ Please select whether you want to allow access.</source>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>密钥文件(K)</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>挑战应答(L)</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>刷新</translation>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Empty password</source>
- <translation>空密ç </translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +565,10 @@ Please select whether you want to allow access.</source>
<translation>å¤åˆ¶é€‰é¡¹</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>标题åŽé™„加 “ - 副本â€</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>用å‚考æ¡ç›®æ›¿æ¢ç”¨æˆ·å和密ç </translation>
</message>
@@ -225,10 +576,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>å¤åˆ¶åŽ†å²</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>标题åŽé™„加 “ - 副本â€</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -326,10 +673,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>导入 CSV 文件</translation>
- </message>
- <message>
<source>Error</source>
<translation>错误</translation>
</message>
@@ -340,17 +683,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation>字节,</translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation>行,</translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation>列</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +715,14 @@ Please select whether you want to allow access.</source>
<translation>æµè§ˆ</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>挑战应答:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>无法打开数æ®åº“</translation>
</message>
@@ -380,6 +731,21 @@ Please select whether you want to allow access.</source>
<translation>无法打开密钥文件</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>All files</source>
<translation>所有文件</translation>
</message>
@@ -391,14 +757,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>选择密钥文件</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>刷新</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>挑战应答:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +773,14 @@ Please select whether you want to allow access.</source>
<translation>无法打开密钥文件</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>æ•°æ®åº“打开正常。没什么å¯åšçš„。</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>无法打开数æ®åº“</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>æ•°æ®åº“打开正常。没什么å¯åšçš„。</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>æˆåŠŸ</translation>
</message>
@@ -440,28 +798,118 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>æ•°æ®åº“å称:</translation>
+ <source>General</source>
+ <translation>常规</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>æ•°æ®åº“æ述:</translation>
+ <source>Encryption</source>
+ <translation>加密</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>å–消</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>加密算法:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 ä½ ï¼ˆé»˜è®¤ï¼‰</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 ä½</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Transform rounds:</source>
<translation>加密次数:</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>默认用户å:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source> MiB</source>
- <translation>MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>内存å ç”¨ï¼š</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>基准测试</translation>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>æ•°æ®åº“元数æ®</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>æ•°æ®åº“å称:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>æ•°æ®åº“æ述:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>默认用户å:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>历å²è®¾ç½®</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -472,26 +920,27 @@ You can now save it.</source>
<translation>最大历å²è®°å½•å¤§å°ï¼š</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>å¯ç”¨å›žæ”¶ç«™</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES: 256 ä½ ï¼ˆé»˜è®¤ï¼‰</translation>
+ <source>Use recycle bin</source>
+ <translation>å¯ç”¨å›žæ”¶ç«™</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish: 256 ä½</translation>
+ <source>Additional Database Settings</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Algorithm:</source>
- <translation>算法:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>根群组</translation>
</message>
<message>
@@ -511,22 +960,48 @@ You can now save it.</source>
<translation>找ä¸åˆ°æ–‡ä»¶ï¼</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>打开 KeePass 1 æ•°æ®åº“</translation>
+ <source>Unable to open the database.</source>
+ <translation>无法打开数æ®åº“</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 æ•°æ®åº“</translation>
+ <source>File opened in read only mode.</source>
+ <translation>文件在åªè¯»æ¨¡å¼ä¸‹æ‰“开。</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>打开 CSV 文件</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV 文件</translation>
</message>
<message>
<source>All files (*)</source>
<translation>所有文件 (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>åˆå¹¶æ•°æ®åº“</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>打开 KeePass 1 æ•°æ®åº“</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 æ•°æ®åº“</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>关闭?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>正在编辑 &quot;%1&quot; 。
+ä»ç„¶è¦æ”¾å¼ƒä¿®æ”¹å¹¶ä¸”关闭å—?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>ä¿å­˜ä¿®æ”¹ï¼Ÿ</translation>
</message>
@@ -541,10 +1016,22 @@ Save changes?</source>
<translation>æ•°æ®åº“写入失败</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>密ç </translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>æ•°æ®åº“å¦å­˜ä¸º</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>导出数æ®åº“为 CSV 文件</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>写入 CSV 文件失败</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>新建数æ®åº“</translation>
</message>
@@ -563,12 +1050,6 @@ Please press cancel to finish your changes or discard them.</source>
点击“å–消â€ç»§ç»­ç¼–辑, 点击“确定â€ä¸¢å¼ƒæ›´æ”¹ã€‚</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>æ•°æ®åº“尚未ä¿å­˜ã€‚
-ä½ å¯ä»¥ä¿å­˜æ•°æ®åº“或者å–消é”定。</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -577,68 +1058,22 @@ Otherwise your changes are lost.</source>
å¦åˆ™ä¿®æ”¹å°†ä¼šä¸¢å¤±ã€‚</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>正在编辑 &quot;%1&quot; 。
-ä»ç„¶è¦æ”¾å¼ƒä¿®æ”¹å¹¶ä¸”关闭å—?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>导出数æ®åº“为 CSV 文件</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV 文件</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>写入 CSV 文件失败</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>无法打开数æ®åº“</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>åˆå¹¶æ•°æ®åº“</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>ä½ è¦ä¿å­˜çš„æ•°æ®åº“已被å¦ä¸€ä¸ª KeePassXC 实例é”定。
-ä½ ä»ç„¶è¦ä¿å­˜å—?</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>密ç </translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>æ•°æ®åº“å·²ç»æ‰“å¼€</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>ä½ è¦æ‰“开的数æ®åº“已被å¦ä¸€ä¸ª KeePassXC 实例é”定。
-ä½ ä»ç„¶è¦æ‰“å¼€å—?</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>以åªè¯»æ–¹å¼æ‰“å¼€</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>文件在åªè¯»æ¨¡å¼ä¸‹æ‰“开。</translation>
+ <source>Disable safe saves?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Open CSV file</source>
- <translation>打开 CSV 文件</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>æœç´¢ä¸­...</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>更改主密ç </translation>
</message>
@@ -659,6 +1094,14 @@ Do you want to open it anyway?</source>
<translation>你确定永远删除 &quot;%1&quot; 项目å—?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>移动项目到回收站?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>是å¦åˆ é™¤ &quot;%1&quot; 项目到回收站?</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>移动项目到垃圾桶?</translation>
</message>
@@ -667,28 +1110,28 @@ Do you want to open it anyway?</source>
<translation><numerusform>你确定è¦å°† %n 个项目移到垃圾桶?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>删除群组?</translation>
+ <source>Execute command?</source>
+ <translation>执行命令?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>你确定永久删除 &quot;%1&quot; 群组å—?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>你确定è¦æ‰§è¡Œä»¥ä¸‹å‘½ä»¤ï¼Ÿ&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>无法计算主密ç </translation>
+ <source>Remember my choice</source>
+ <translation>è®°ä½æˆ‘的选择</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>移动项目到回收站?</translation>
+ <source>Delete group?</source>
+ <translation>删除群组?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>是å¦åˆ é™¤ &quot;%1&quot; 项目到回收站?</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>你确定永久删除 &quot;%1&quot; 群组å—?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>æœç´¢ä¸­...</translation>
+ <source>Unable to calculate master key</source>
+ <translation>无法计算主密ç </translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1150,8 @@ Do you want to open it anyway?</source>
<translation>无结果</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>执行命令?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>你确定è¦æ‰§è¡Œä»¥ä¸‹å‘½ä»¤ï¼Ÿ&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>è®°ä½æˆ‘的选择</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>自动加载请求</translation>
+ <source>File has changed</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1162,9 @@ Do you want to open it anyway?</source>
<translation>åˆå¹¶è¯·æ±‚</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>æ•°æ®åº“文件已更改,您有未ä¿å­˜çš„更改。是å¦åˆå¹¶æ‚¨çš„更改?</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -748,6 +1180,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>关闭</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>常规</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>密ç </translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>网å€</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>用户å</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>自动填充</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>æœç´¢</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>附件</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>备注</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>窗å£</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>顺åº</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>æœç´¢</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>清除</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>ç¦ç”¨</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>å¯ç”¨</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -774,6 +1289,30 @@ Do you want to open it anyway?</source>
<translation>历å²è®°å½•</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH 代ç†</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Entry history</source>
<translation>项目历å²</translation>
</message>
@@ -794,22 +1333,20 @@ Do you want to open it anyway?</source>
<translation>添加属性</translation>
</message>
<message>
- <source>Select file</source>
- <translation>选择文件</translation>
+ <source>Confirm Remove</source>
+ <translation>确认删除</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>无法打开文件</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>你确定è¦ç§»é™¤è¿™ä¸ªå±žæ€§ï¼Ÿ</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>ä¿å­˜é™„件</translation>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>无法ä¿å­˜é™„件:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Tomorrow</source>
@@ -828,20 +1365,16 @@ Do you want to open it anyway?</source>
<translation>1 å¹´</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>确认删除</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>你确定è¦ç§»é™¤è¿™ä¸ªå±žæ€§ï¼Ÿ</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[å—ä¿æŠ¤çš„内容] 点击“æ­ç¤ºâ€æ¥æŸ¥çœ‹æˆ–编辑</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>你确定è¦ç§»é™¤è¿™ä¸ªé™„加内容?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -859,18 +1392,6 @@ Do you want to open it anyway?</source>
<translation>移除</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>附件</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>ä¿å­˜</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>打开</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>编辑å称</translation>
</message>
@@ -882,24 +1403,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>æ­ç¤º</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>为此项目å¯ç”¨è‡ªåŠ¨è¾“å…¥</translation>
+ <source>Attachments</source>
+ <translation>附件</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>窗å£æ ‡é¢˜ï¼š</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>为此项目å¯ç”¨è‡ªåŠ¨è¾“å…¥</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1431,24 @@ Do you want to open it anyway?</source>
<translation>使用自定义自动输入顺åº(U)</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>使用默认顺åº(Q)</translation>
+ <source>Window Associations</source>
+ <translation>窗å£ç»„åˆ</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>设置自定义顺åº(M)</translation>
+ <source>-</source>
+ <translation>-</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>窗å£ç»„åˆ</translation>
+ <source>Window title:</source>
+ <translation>窗å£æ ‡é¢˜ï¼š</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -944,12 +1473,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>标题:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>用户å:</translation>
+ <source>URL:</source>
+ <translation>网å€ï¼š</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1485,104 @@ Do you want to open it anyway?</source>
<translation>é‡å¤å¯†ç ï¼š</translation>
</message>
<message>
- <source>URL:</source>
- <translation>网å€ï¼š</translation>
+ <source>Title:</source>
+ <translation>标题:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>过期</translation>
+ <source>Notes</source>
+ <translation>备注</translation>
</message>
<message>
<source>Presets</source>
<translation>预设</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>备注:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>用户å:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>过期</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>指纹</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>å¤åˆ¶åˆ°å‰ªè´´æ¿</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>æµè§ˆ...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1045,6 +1654,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>使用默认图标(U)</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>使用自定义图标(M)</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>添加自定义图标</translation>
</message>
@@ -1053,6 +1670,18 @@ Do you want to open it anyway?</source>
<translation>删除自定义图标</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>下载网站图标</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>无法获å–网站图标</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>æ示:你å¯ä»¥åœ¨ 工具 &gt; 设置 &gt; 安全 中å¯ç”¨ Google 作为备选</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>图片</translation>
</message>
@@ -1065,24 +1694,12 @@ Do you want to open it anyway?</source>
<translation>选择图片</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>下载网站图标</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>无法获å–网站图标</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>无法读å–图标</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>使用默认图标(U)</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>使用自定义图标(M)</translation>
+ <source>Custom icon already exists</source>
+ <translation>å·²ç»å­˜åœ¨è‡ªå®šä¹‰å›¾æ ‡</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1709,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>这个图标被 %1 个æ¡ç›®ä½¿ç”¨ï¼Œå°†ä¼šè¢«é»˜è®¤å›¾æ ‡æ›¿æ¢ã€‚你确定è¦åˆ é™¤å®ƒå—?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>æ示:你å¯ä»¥åœ¨ 工具 &gt; 设置 &gt; 安全 中å¯ç”¨ Google 作为备选</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,15 +1728,124 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>UUID:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>移除</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation>- 副本</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>å称</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>添加</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>移除</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>打开</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>ä¿å­˜</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>确认删除</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1874,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>å‚考æ¡ç›®ï¼š</translation>
+ </message>
+ <message>
<source>Group</source>
<translation>群组</translation>
</message>
@@ -1172,9 +1895,67 @@ Do you want to open it anyway?</source>
<translation>网å€</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>å‚考æ¡ç›®ï¼š</translation>
+ <source>Never</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>密ç </translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>备注</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>过期</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>附件</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1185,6 +1966,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2026,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>ç¡®ä¿å¯†ç åŒ…å«æ¯ä¸€ç§å­—符</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>扩展 ASCII</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2043,360 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>无法计算主密ç </translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>无法å‘出挑战应答</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>密钥错误或数æ®åº“æŸå</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>无法å‘出挑战应答</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>无法计算主密ç </translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>无法计算主密ç </translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>无法计算主密ç </translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>ä¸æ˜¯ KeePass æ•°æ®åº“</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>当å‰é€‰æ‹©çš„文件是旧版本的 KeePass 1 æ•°æ®åº“(.kdb)。
+ä½ å¯ä»¥é€šè¿‡ç‚¹å‡» æ•°æ®åº“ &gt; 导入 KeePass 1 æ•°æ®åº“ æ¥å¯¼å…¥ã€‚
+这是ä¸å¯é€†çš„è¿ç§»ï¼Œå¯¼å…¥åŽçš„æ•°æ®åº“将无法由旧版本的 KeePassX 0.4 打开。</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>EnableAutoType 值无效</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2426,35 @@ Do you want to open it anyway?</source>
<translation>ä¸æ”¯æŒçš„ KeePass æ•°æ®åº“版本</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Root</source>
<translation>根群组</translation>
</message>
@@ -1287,128 +2466,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>密钥错误或数æ®åº“æŸå</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>ä¸æ˜¯ KeePass æ•°æ®åº“</translation>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>ä¸æ”¯æŒçš„ KeePass æ•°æ®åº“版本</translation>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>密钥错误或数æ®åº“æŸå</translation>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>无法计算主密ç </translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>无法å‘出挑战应答</translation>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>当å‰é€‰æ‹©çš„文件是旧版本的 KeePass 1 æ•°æ®åº“(.kdb)。
-ä½ å¯ä»¥é€šè¿‡ç‚¹å‡» æ•°æ®åº“ &gt; 导入 KeePass 1 æ•°æ®åº“ æ¥å¯¼å…¥ã€‚
-这是ä¸å¯é€†çš„è¿ç§»ï¼Œå¯¼å…¥åŽçš„æ•°æ®åº“将无法由旧版本的 KeePassX 0.4 打开。</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation>无法å‘出挑战应答</translation>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>无法计算主密ç </translation>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>在测试加密函数时å‘生é‡å¤§é”™è¯¯ã€‚</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - 错误</translation>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>无法创建é”定文件。 å•å®žä¾‹æ¨¡å¼å·²ç¦ç”¨ã€‚</translation>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>å¦ä¸€ä¸ª KeePassXC 实例已在è¿è¡Œ</translation>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <source>Missing group id or level</source>
<translation type="unfinished"/>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>打开数æ®åº“</translation>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Database settings</source>
- <translation>æ•°æ®åº“设置</translation>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>将用户åå¤åˆ¶åˆ°å‰ªè´´æ¿</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>将密ç å¤åˆ¶åˆ°å‰ªè´´æ¿</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Settings</source>
- <translation>设置</translation>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Show toolbar</source>
- <translation>显示工具æ </translation>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>read-only</source>
- <translation>åªè¯»</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Toggle window</source>
- <translation>切æ¢çª—å£</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 æ•°æ®åº“</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>All files</source>
- <translation>所有文件</translation>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>ä¿å­˜ä¿®å¤åŽçš„æ•°æ®åº“</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>å•å®žä¾‹é”无效,正在é‡å¯å®žä¾‹</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>æ•°æ®åº“写入失败</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>无法创建é”定文件。 å•å®žä¾‹æ¨¡å¼å·²ç¦ç”¨ã€‚</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>å¦ä¸€ä¸ª KeePassXC 实例已在è¿è¡Œ</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>在测试加密函数时å‘生é‡å¤§é”™è¯¯ã€‚</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - 错误</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>æ•°æ®åº“(D)</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>最近的数æ®åº“(R)</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>导入</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>帮助(H)</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>项目(N)</translation>
</message>
@@ -1417,12 +2609,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>将属性å¤åˆ¶åˆ°å‰ªè´´æ¿(R)</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>群组(G)</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>显示(V)</translation>
+ <source>&amp;Tools</source>
+ <translation>工具(T)</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1433,6 +2629,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>关于(A)</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>打开数æ®åº“(O)...</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>ä¿å­˜æ•°æ®åº“(S)</translation>
</message>
@@ -1473,24 +2673,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>删除群组(D)</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>æ•°æ®åº“设置(D)</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>æ•°æ®åº“å¦å­˜ä¸º(V)...</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>å¤åˆ¶é¡¹ç›®(C)</translation>
+ <source>Change &amp;master key...</source>
+ <translation>更改主密ç (M),,,</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>动æ€å¯†ç  TOTP</translation>
+ <source>&amp;Database settings</source>
+ <translation>æ•°æ®åº“设置(D)</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>å¤åˆ¶ TOTP 密ç (T)</translation>
+ <source>Database settings</source>
+ <translation>æ•°æ®åº“设置</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>显示 TOTP 密ç </translation>
+ <source>&amp;Clone entry</source>
+ <translation>å¤åˆ¶é¡¹ç›®(C)</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1501,14 +2701,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>å¤åˆ¶ç”¨æˆ·å(U)</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>将用户åå¤åˆ¶åˆ°å‰ªè´´æ¿</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>å¤åˆ¶å¯†ç (Y)</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>将密ç å¤åˆ¶åˆ°å‰ªè´´æ¿</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>设置(S)</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>密ç ç”Ÿæˆå™¨</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>执行自动输入(P)</translation>
</message>
@@ -1525,165 +2737,220 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>标题(T)</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>å¤åˆ¶æ ‡é¢˜åˆ°å‰ªè´´æ¿</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>网å€(U)</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>å¤åˆ¶ URL 到剪贴æ¿</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>备注(N)</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>密ç ç”Ÿæˆå™¨</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>å¤åˆ¶å¤‡æ³¨åˆ°å‰ªè´´æ¿</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>清除历å²</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>导出为 CSV 文件(E)...</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>æ•°æ®åº“(D)</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>导入 KeePass 1 æ•°æ®åº“...</translation>
</message>
<message>
- <source>Import</source>
- <translation>导入</translation>
+ <source>Import CSV file...</source>
+ <translation>导入 CSV 文件...</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>工具(T)</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>ä¿®å¤æ•°æ®åº“(P)...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>显示 TOTP 密ç </translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>清空回收站</translation>
+ <source>Set up TOTP...</source>
+ <translation>设置 TOTP 密ç ...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>å¤åˆ¶ TOTP 密ç (T)</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>清除历å²</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>访问é…置文件出错 %1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>退出 KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;您å¯èƒ½æ­£åœ¨ä½¿ç”¨ KeePassHTTP æ¥è¿žæŽ¥æµè§ˆå™¨æ’件。该功能目å‰å·²è¢«å¼ƒç”¨ï¼Œå¹¶ä¸”在未æ¥å°†ä¼šè¢«ç§»é™¤ã€‚&lt;br&gt;请切æ¢åˆ° KeePassXC-Browserï¼ å¦‚æžœåœ¨è¿ç§»ä¸­æ‚¨éœ€è¦å¸®åŠ©ï¼Œè¯·è®¿é—®&lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;è¿ç§»æŒ‡å—&lt;/a&gt; (警告 %1/3)。&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>请触摸你 YubiKey 上的按键ï¼</translation>
+ <source>read-only</source>
+ <translation>åªè¯»</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>帮助(H)</translation>
+ <source>Settings</source>
+ <translation>设置</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>打开数æ®åº“(O)...</translation>
+ <source>Toggle window</source>
+ <translation>切æ¢çª—å£</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>æ•°æ®åº“å¦å­˜ä¸º(V)...</translation>
+ <source>Quit KeePassXC</source>
+ <translation>退出 KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>更改主密ç (M),,,</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 æ•°æ®åº“</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>导出为 CSV 文件(E)...</translation>
+ <source>All files</source>
+ <translation>所有文件</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>导入 KeePass 1 æ•°æ®åº“...</translation>
+ <source>Open database</source>
+ <translation>打开数æ®åº“</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>导入 CSV 文件...</translation>
+ <source>Save repaired database</source>
+ <translation>ä¿å­˜ä¿®å¤åŽçš„æ•°æ®åº“</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>ä¿®å¤æ•°æ®åº“(P)...</translation>
+ <source>Writing the database failed.</source>
+ <translation>æ•°æ®åº“写入失败</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>设置 TOTP 密ç ...</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>请触摸你 YubiKey 上的按键ï¼</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>对è¯æ¡†</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>General</source>
- <translation>常规</translation>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>当请求凭è¯æ—¶æ˜¾ç¤ºé€šçŸ¥(O)</translation>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>æ ¹æ®ç”¨æˆ·å排åºåŒ¹é…项(U)</translation>
+ <source>Key file way too small.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>从活动数æ®åº“çš„æ¡ç›®ä¸­ç§»é™¤å·²å­˜å‚¨çš„所有æƒé™(M)</translation>
+ <source>Key file magic header id invalid</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Advanced</source>
- <translation>高级</translation>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>永远å…许访问项目(A)</translation>
+ <source>Failed to read public key.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>永远å…许更新项目(U)</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>在所有打开的数æ®åº“中查找匹é…项目(H)</translation>
+ <source>No private key payload to decrypt</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP 端å£ï¼š</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>默认端å£ï¼š19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>æ•°æ®åº“é”定时请求解é”(Q)</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>æ ¹æ®æ ‡é¢˜æŽ’åºåŒ¹é…项(M)</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC å°†ç›‘å¬ 127.0.0.1 上的此端å£</translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>无法绑定到特æƒç«¯å£</translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>无法绑定低于 1024 的特æƒç«¯å£ ï¼
-ä½¿ç”¨é»˜è®¤ç«¯å£ 19455</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>移除所有激活数æ®åº“共享的加密密钥(E)</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>返回以“KPH:â€å¼€å¤´çš„高级字符串字段(R)</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>ä¸æ”¯æŒè‡ªåŠ¨åˆ›å»ºæˆ–更新字符串字段。</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>对è¯æ¡†</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1694,6 +2961,15 @@ Using default port 19455.</source>
<translation>å¯ç”¨ KeePassHTTP æœåŠ¡</translation>
</message>
<message>
+ <source>General</source>
+ <translation>常规</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>当请求凭è¯æ—¶æ˜¾ç¤ºé€šçŸ¥(O)</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>åªè¿”回特定网å€çš„最佳匹é…,而ä¸æ˜¯æ•´ä¸ªåŸŸå的所有æ¡ç›®ã€‚</translation>
</message>
@@ -1702,6 +2978,10 @@ Using default port 19455.</source>
<translation>åªè¿”回最匹é…çš„æ¡ç›®</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>æ•°æ®åº“é”定时请求解é”(Q)</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>仅返回具有相åŒåè®® (http://, https://, ftp://, ...) çš„æ¡ç›®</translation>
</message>
@@ -1710,27 +2990,108 @@ Using default port 19455.</source>
<translation>åŒ¹é… URL åè®®(M)</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>æ ¹æ®ç”¨æˆ·å排åºåŒ¹é…项(U)</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>æ ¹æ®æ ‡é¢˜æŽ’åºåŒ¹é…项(M)</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>移除所有激活数æ®åº“共享的加密密钥(E)</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>从活动数æ®åº“çš„æ¡ç›®ä¸­ç§»é™¤å·²å­˜å‚¨çš„所有æƒé™(M)</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>密ç ç”Ÿæˆå™¨</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>高级</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>永远å…许访问项目(A)</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>永远å…许更新项目(U)</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>åªæœ‰é€‰å®šçš„æ•°æ®åº“必须与一个客户端连接。</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>以下选项å¯èƒ½å¾ˆå±é™©ï¼
-除éžä½ çŸ¥é“自己在åšä»€ä¹ˆï¼Œå¦åˆ™ä¸è¦æ›´æ”¹è¿™äº›è®¾ç½®</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>在所有打开的数æ®åº“中查找匹é…项目(H)</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>ä¸æ”¯æŒè‡ªåŠ¨åˆ›å»ºæˆ–更新字符串字段。</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>返回以“KPH:â€å¼€å¤´çš„高级字符串字段(R)</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP 端å£ï¼š</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>默认端å£ï¼š19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC å°†ç›‘å¬ 127.0.0.1 上的此端å£</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;警告:&lt;/b&gt; 以下选项å¯èƒ½æœ‰å±é™©ï¼</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;KeePassHTTP 已被弃用,并且在未æ¥å°†ä¼šè¢«ç§»é™¤ã€‚&lt;br&gt;请切æ¢åˆ° KeePassXC-Browserï¼å¦‚果在è¿ç§»ä¸­æ‚¨éœ€è¦å¸®åŠ©ï¼Œè¯·è®¿é—®&lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;è¿ç§»æŒ‡å—&lt;/a&gt;。&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>无法绑定到特æƒç«¯å£</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>无法绑定低于 1024 的特æƒç«¯å£ ï¼
+ä½¿ç”¨é»˜è®¤ç«¯å£ 19455</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>密ç ï¼š</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>强度</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>熵</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>密ç </translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>字符类型</translation>
</message>
@@ -1751,38 +3112,50 @@ Change them only if you know what you are doing.</source>
<translation>特殊字符</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>扩展 ASCII</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>排除相似的字符</translation>
</message>
<message>
- <source>Accept</source>
- <translation>接å—</translation>
+ <source>Pick characters from every group</source>
+ <translation>包å«æ¯ä¸€ç§å­—符</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>长度(L)︰</translation>
</message>
<message>
- <source>strength</source>
- <translation>强度</translation>
+ <source>Passphrase</source>
+ <translation>å£ä»¤</translation>
</message>
<message>
- <source>entropy</source>
- <translation>熵</translation>
+ <source>Wordlist:</source>
+ <translation>字符列表:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>长度(L)︰</translation>
+ <source>Word Count:</source>
+ <translation>字数:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>包å«æ¯ä¸€ç§å­—符</translation>
+ <source>Word Separator:</source>
+ <translation>字符分隔符:</translation>
</message>
<message>
<source>Generate</source>
<translation>生æˆ</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>å¤åˆ¶</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>接å—</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>关闭</translation>
</message>
@@ -1800,51 +3173,270 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>å·®</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>å¼±</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>好</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>优秀</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>密ç </translation>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>扩展 ASCII</translation>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Passphrase</source>
- <translation>å£ä»¤</translation>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Wordlist:</source>
- <translation>字符列表:</translation>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Count:</source>
- <translation>字数:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Word Separator:</source>
- <translation>字符分隔符:</translation>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Copy</source>
- <translation>å¤åˆ¶</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>未知错误</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>æ•°æ®åº“路径</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>网å€</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>长度</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>标题</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>æå–并打å°æ•°æ®åº“内容</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>å°†æå–çš„æ•°æ®åº“路径</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>将执行的命令å称</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>列出数æ®åº“项目</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>è¦å°†åˆ—出的群组路径,默认为 /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>åˆå¹¶ä¸¤ä¸ªæ•°æ®åº“</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>åˆå¹¶æˆçš„æ•°æ®åº“路径</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>å°†åˆå¹¶çš„æ•°æ®åº“路径</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>项目å称</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>空设备</translation>
@@ -1868,8 +3460,28 @@ Change them only if you know what you are doing.</source>
<translation>缺少åŽå¼•å·</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation>å†…éƒ¨ä¿¡æ¯ - 未定义的下溢</translation>
+ <source>AES: 256-bit</source>
+ <translation>AES:256ä½</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish:256ä½</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20:256ä½</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2(推è KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF(KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF(KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1888,14 +3500,22 @@ Change them only if you know what you are doing.</source>
<translation>密ç </translation>
</message>
<message>
- <source>URL</source>
- <translation>网å€</translation>
- </message>
- <message>
<source>Notes</source>
<translation>备注</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>æµè§ˆå™¨é…åˆ</translation>
</message>
@@ -1911,6 +3531,55 @@ Change them only if you know what you are doing.</source>
<source>Passive</source>
<translation>被动</translation>
</message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH 代ç†</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>QtIOCompressor</name>
@@ -1949,8 +3618,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>区分大å°å†™</translation>
+ <source>Search...</source>
+ <translation>æœç´¢â€¦â€¦</translation>
</message>
<message>
<source>Search</source>
@@ -1961,8 +3630,8 @@ Change them only if you know what you are doing.</source>
<translation>清除</translation>
</message>
<message>
- <source>Search...</source>
- <translation>æœç´¢â€¦â€¦</translation>
+ <source>Case Sensitive</source>
+ <translation>区分大å°å†™</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1972,50 +3641,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>一个共享的加密密钥,å为&quot;%1&quot;已存在。
-你想è¦è¦†ç›–它å—?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>你想更新 %1-%2 中的信æ¯å—?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>激活的数æ®åº“被é”定 ï¼
-请解é”选定的数æ®åº“或选择å¦ä¸€å·²è§£é”çš„æ•°æ®åº“。</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>æˆåŠŸç§»é™¤ %1 加密 - %2 在 KeePassX/Http 设置中。</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>没有在 KeePassHttp 设置中找到共享加密密钥。</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>当å‰æ•°æ®åº“中没有 KeePassHttp 设置的æ¡ç›®ã€‚</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>正在删除存储的æƒé™...</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>中断</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>æˆåŠŸç§»é™¤ %1 %2 çš„æƒé™ã€‚</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>当å‰æ•°æ®åº“中ä¸åŒ…å«å…·æœ‰æƒé™çš„æ¡ç›®ã€‚</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC: 新的密钥关è”请求</translation>
</message>
@@ -2032,33 +3657,77 @@ give it a unique name to identify and accept it.</source>
<translation>KeePassXC︰ 覆盖现有的密钥å—?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>一个共享的加密密钥,å为&quot;%1&quot;已存在。
+你想è¦è¦†ç›–它å—?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC︰ æ›´æ–°æ¡ç›®</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>你想更新 %1-%2 中的信æ¯å—?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC︰ æ•°æ®åº“被é”定 ï¼</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>激活的数æ®åº“被é”定 ï¼
+请解é”选定的数æ®åº“或选择å¦ä¸€å·²è§£é”çš„æ•°æ®åº“。</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC︰ 从数æ®åº“中删除键</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC︰ 未找到键</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>没有在 KeePassHttp 设置中找到共享加密密钥。</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC︰ 设置ä¸å¯ç”¨ ï¼</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>当å‰æ•°æ®åº“中没有 KeePassHttp 设置的æ¡ç›®ã€‚</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>正在删除存储的æƒé™...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>中断</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC︰ 已删除的æƒé™</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC: 未找到æƒé™çš„æ¡ç›®ï¼</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>当å‰æ•°æ®åº“中ä¸åŒ…å«å…·æœ‰æƒé™çš„æ¡ç›®ã€‚</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2082,10 +3751,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>基础设置</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>åªå¯åŠ¨ä¸€ä¸ª KeePassXC 实例</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>è®°ä½æœ€è¿‘çš„æ•°æ®åº“</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>è®°ä½ä¸Šæ¬¡çš„密钥文件和安全模å—</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>在å¯åŠ¨æ—¶åŠ è½½æœ€è¿‘çš„æ•°æ®åº“</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>离开åŽè‡ªåŠ¨ä¿å­˜</translation>
</message>
@@ -2094,20 +3779,28 @@ give it a unique name to identify and accept it.</source>
<translation>修改åŽè‡ªåŠ¨ä¿å­˜</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>当外部修改时自动é‡æ–°åŠ è½½æ•°æ®åº“</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>å¤åˆ¶åˆ°å‰ªè´´æ¿åŽæœ€å°åŒ–</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>在应用程åºå¯åŠ¨æ—¶çª—å£æœ€å°åŒ–</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>新增项目时使用群组图标</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>自动输入全局快æ·é”®</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>ä¸è¦å› éžæ•°æ®çš„更改而将数æ®åº“标记为已修改 (比如增加群组)</translation>
</message>
<message>
- <source>Language</source>
- <translation>语言</translation>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2118,66 +3811,84 @@ give it a unique name to identify and accept it.</source>
<translation>将窗å£æœ€å°åŒ–至任务æ </translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>在å¯åŠ¨æ—¶åŠ è½½æœ€è¿‘çš„æ•°æ®åº“</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>当外部修改时自动é‡æ–°åŠ è½½æ•°æ®åº“</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>退出时将窗å£æœ€å°åŒ–至任务æ </translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>在应用程åºå¯åŠ¨æ—¶çª—å£æœ€å°åŒ–</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>基础设置</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>è®°ä½ä¸Šæ¬¡çš„密钥文件和安全模å—</translation>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>ä¸è¦å› éžæ•°æ®çš„更改而将数æ®åº“标记为已修改 (比如增加群组)</translation>
+ <source>Language</source>
+ <translation>语言</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>自动输入</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>使用项目标题和 URL æ¥åŒ¹é…自动输入的窗å£</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>总在执行自动输入å‰è¯¢é—®</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>自动输入全局快æ·é”®</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>自动输入延迟</translation>
</message>
<message>
<source> ms</source>
+ <comment>Milliseconds</comment>
<translation>毫秒</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
- <translation>åªå¯åŠ¨ä¸€ä¸ª KeePassXC 实例</translation>
+ <source>Startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>常规</translation>
</message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>超时</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>在多久åŽæ¸…除剪贴æ¿</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>秒</translation>
</message>
<message>
@@ -2185,8 +3896,12 @@ give it a unique name to identify and accept it.</source>
<translation>在多久没有动作之åŽé”ä½æ•°æ®åº“</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>默认以明ç æ˜¾ç¤ºå¯†ç </translation>
+ <source>Convenience</source>
+ <translation>便利性</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>系统é”定或盖å­åˆä¸Šæ—¶é”定数æ®åº“</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2197,16 +3912,16 @@ give it a unique name to identify and accept it.</source>
<translation>å¯è§æ—¶ä¸éœ€è¦é‡å¤è¾“入密ç </translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>超时</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>默认以明ç æ˜¾ç¤ºå¯†ç </translation>
</message>
<message>
- <source>Convenience</source>
- <translation>便利性</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>系统é”定或盖å­åˆä¸Šæ—¶é”定数æ®åº“</translation>
+ <source>Hide entry notes by default</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Privacy</source>
@@ -2216,6 +3931,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation>使用 Google 作为下载网站图标时的备选</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2228,6 +3947,14 @@ give it a unique name to identify and accept it.</source>
<translation>密钥:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>使用自定义设置</translation>
</message>
@@ -2253,6 +3980,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation>秒</translation>
</message>
</context>
@@ -2289,10 +4017,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>欢迎使用 KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>开始将你的密ç å®‰å…¨åœ°å­˜å‚¨åœ¨ KeePassXC æ•°æ®åº“中</translation>
</message>
@@ -2316,92 +4040,48 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>最近的数æ®åº“</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>自定义é…置文件路径</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>æ•°æ®åº“密钥文件</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - 跨平å°å¯†ç ç®¡ç†è½¯ä»¶</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>从标准输入读å–æ•°æ®åº“的密ç </translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>将打开的密ç æ•°æ®åº“文件å(*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>将密ç å¤åˆ¶åˆ°å‰ªè´´æ¿</translation>
+ <source>Remove an entry from the database.</source>
+ <translation type="unfinished"/>
</message>
<message>
<source>Path of the database.</source>
<translation>æ•°æ®åº“路径</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>使用图形界é¢è§£é”æ•°æ®åº“</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation>å°†å¤åˆ¶çš„项目å称</translation>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>æå–并打å°æ•°æ®åº“内容</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>å°†æå–çš„æ•°æ®åº“路径</translation>
- </message>
- <message>
- <source>Name of the command to execute.</source>
- <translation>将执行的命令å称</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>列出数æ®åº“项目</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>è¦å°†åˆ—出的群组路径,默认为 /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>打å°é¡¹ç›®å’Œç¾¤ç»„çš„ UUID</translation>
+ <source>Path of the entry to remove.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Merge two databases.</source>
- <translation>åˆå¹¶ä¸¤ä¸ªæ•°æ®åº“</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - 跨平å°å¯†ç ç®¡ç†è½¯ä»¶</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>åˆå¹¶æˆçš„æ•°æ®åº“路径</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>将打开的密ç æ•°æ®åº“文件å(*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>å°†åˆå¹¶çš„æ•°æ®åº“路径</translation>
+ <source>path to a custom config file</source>
+ <translation>自定义é…置文件路径</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>两个数æ®åº“使用相åŒå¯†ç </translation>
+ <source>key file of the database</source>
+ <translation>æ•°æ®åº“密钥文件</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>显示密ç </translation>
+ <source>read password of the database from stdin</source>
+ <translation>从标准输入读å–æ•°æ®åº“的密ç </translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>项目å称</translation>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_zh_TW.ts b/share/translations/keepassx_zh_TW.ts
index 54614e5cc..af8120977 100644
--- a/share/translations/keepassx_zh_TW.ts
+++ b/share/translations/keepassx_zh_TW.ts
@@ -10,14 +10,30 @@
<translation>關於</translation>
</message>
<message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>回報 Bug 請至:&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC éµå¾ª GNU 通用公共許å¯è­‰ (GPL) 第二版 或(ä¾ä½ çš„需求)以第三版發行。</translation>
+ </message>
+ <message>
<source>Contributors</source>
<translation>è²¢ç»è€…</translation>
</message>
<message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;在 GitHub 上看看有哪些貢ç»è€…&lt;/a&gt;</translation>
+ </message>
+ <message>
<source>Debug Info</source>
<translation>除錯資訊</translation>
</message>
<message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>回報 Bug 時會包å«ä»¥ä¸‹è³‡è¨Šï¼š</translation>
+ </message>
+ <message>
<source>Copy to clipboard</source>
<translation>複製到剪貼簿</translation>
</message>
@@ -32,6 +48,10 @@
<translation>修訂:%1</translation>
</message>
<message>
+ <source>Distribution: %1</source>
+ <translation>散佈:%1</translation>
+ </message>
+ <message>
<source>Libraries:</source>
<translation>函å¼åº«ï¼š</translation>
</message>
@@ -48,33 +68,26 @@ Kernel: %3 %4</source>
<translation>已啟用的擴充元件:</translation>
</message>
<message>
- <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
- <translation>回報 Bug 請至:&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
- </message>
- <message>
- <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
- <translation>KeePassXC éµå¾ª GNU 通用公共許å¯è­‰ (GPL) 第二版 或(ä¾ä½ çš„需求)以第三版發行。</translation>
- </message>
- <message>
<source>Project Maintainers:</source>
<translation>專案維護者:</translation>
</message>
<message>
- <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;在 GitHub 上看看有哪些貢ç»è€…&lt;/a&gt;</translation>
- </message>
- <message>
- <source>Include the following information whenever you report a bug:</source>
- <translation>回報 Bug 時會包å«ä»¥ä¸‹è³‡è¨Šï¼š</translation>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Distribution: %1</source>
- <translation>散佈:%1</translation>
+ <source>Build Type: %1
+</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>AccessControlDialog</name>
<message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP å­˜å–確èª</translation>
+ </message>
+ <message>
<source>Remember this decision</source>
<translation>記ä½æ­¤æ±ºå®š</translation>
</message>
@@ -92,9 +105,12 @@ Please select whether you want to allow access.</source>
<translation>%1 è¦æ±‚å­˜å–下列項目的密碼。
è«‹é¸æ“‡æ˜¯å¦å…許存å–。</translation>
</message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
<message>
- <source>KeePassXC HTTP Confirm Access</source>
- <translation>KeePassXC HTTP 確èªå­˜å–</translation>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>啟用 SSH ä»£ç† (需è¦é‡æ–°å•Ÿå‹•)</translation>
</message>
</context>
<context>
@@ -107,6 +123,26 @@ Please select whether you want to allow access.</source>
<source>Auto-Type - KeePassXC</source>
<translation>自動輸入 - KeePassXC</translation>
</message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>自動輸入</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>自動輸入語法ä¸æ­£ç¢ºï¼</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>此自動輸入命令包å«å¾ˆé•·çš„延é²ã€‚真的è¦ç¹¼çºŒå—Žï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>此自動輸入命令包å«éžå¸¸ç·©æ…¢çš„按éµæ“作。真的è¦ç¹¼çºŒå—Žï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>此自動輸入命令包å«é »ç¹é‡è¤‡çš„åƒæ•¸ã€‚真的è¦ç¹¼çºŒå—Žï¼Ÿ</translation>
+ </message>
</context>
<context>
<name>AutoTypeAssociationsModel</name>
@@ -124,14 +160,318 @@ Please select whether you want to allow access.</source>
</message>
</context>
<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>群組</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>標題</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>使用者å稱</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>åºåˆ—</translation>
+ </message>
+</context>
+<context>
<name>AutoTypeSelectDialog</name>
<message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>自動輸入 - KeePassXC</translation>
+ </message>
+ <message>
<source>Select entry to Auto-Type:</source>
<translation>é¸æ“‡è¦è‡ªå‹•è¼¸å…¥çš„é …ç›®</translation>
</message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser ç€è¦½å™¨æ“´å……功能存å–確èª</translation>
+ </message>
<message>
- <source>Auto-Type - KeePassXC</source>
- <translation>自動輸入 - KeePassXC</translation>
+ <source>Remember this decision</source>
+ <translation>記ä½æ­¤æ±ºå®š</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>å…許</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>ç¦æ­¢</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 è¦æ±‚å­˜å–下列項目的密碼。
+è«‹é¸æ“‡æ˜¯å¦å…許存å–。</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>å°è©±æ–¹å¡Š</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>需è¦ä½¿ç”¨ KeePassXC-Browser ç€è¦½å™¨æ“´å……功能存å–你的資料庫</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>啟用 KeepassXC browser ç€è¦½å™¨æ“´å……功能整åˆ</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>於下列ç€è¦½å™¨å•Ÿç”¨æ•´åˆåŠŸèƒ½ï¼š</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>è¦æ±‚èªè­‰æ™‚顯示通知 (&amp;N)</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>若資料庫已鎖定,則請求解鎖 (&amp;Q)</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>åªé¡¯ç¤ºç›¸åŒå”定的項目。(http://, https://, ...)</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>符åˆç¶²å€å”定 (例如:https://……) (&amp;M)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>åªå›žå‚³æœ€ä½³çš„網å€ç›¸ç¬¦é …目而éžæ‰€æœ‰ç¶²å€ç›¸ç¬¦çš„項目。(&amp;R)</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>åªå›žå‚³æœ€ä½³çš„相符憑證 (&amp;R)</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>ä¾å稱排åºç¬¦åˆèªè­‰ (&amp;M)</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>ä¾ä½¿ç”¨è€…å稱排åºç¬¦åˆèªè­‰ (&amp;U)</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>與所有ç€è¦½å™¨ä¸­æ–·é€£ç·š (&amp;D)</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>å–消所有先å‰è¨˜ä½çš„æ¬Šé™ (&amp;P)</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>進階</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>å­˜å–èªè­‰æ™‚ä¸å†è©¢å• (&amp;A)</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>æ›´æ–°èªè­‰æ™‚ä¸å†è©¢å• (&amp;U)</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>åªæœ‰æ‰€é¸çš„資料庫能連接到客戶端。</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>在所有開啟的資料庫內æœå°‹ç›¸ç¬¦çš„èªè­‰ (&amp;H)</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>ä¸æ”¯æ´è‡ªå‹•å»ºç«‹æˆ–更新文字欄ä½ã€‚</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>回傳 「KPH: ã€ èµ·é¦–çš„é€²éšŽæ–‡å­—æ¬„ä½ (&amp;R)</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>啟動時自動將 KeePassXC 或 KeePassXC 代ç†åŸ·è¡Œæª”路徑更新為 native messaging 腳本。</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>啟動時更新 native messaging 的 manifest 檔案 (&amp;N)</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>æ”¯æ´ KeePassXC å’Œç€è¦½å™¨æ“´å……功能之間的代ç†æ‡‰ç”¨ç¨‹å¼ã€‚</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>在 KeePassXC å’Œç€è¦½å™¨æ“´å……功能之間使用代ç†æ‡‰ç”¨ç¨‹å¼ (&amp;P)</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>如果自行安è£äº†ä»£ç†ï¼Œè«‹è¨­å®šè‡ªè¨‚代ç†ä½ç½®ã€‚</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>使用自訂代ç†ä½ç½® (&amp;C)</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ç€è¦½â€¦â€¦</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;警告:&lt;/b&gt;下列é¸é …å¯èƒ½æ¥µå…·é¢¨éšªï¼</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>å¯åŸ·è¡Œæª” (* .exe);;所有檔案 (*)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>å¯åŸ·è¡Œæª” (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>é¸æ“‡è‡ªè¨‚代ç†ä½ç½®</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC:新的金鑰關è¯è«‹æ±‚</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>你已接收到上述金鑰的關è¯è«‹æ±‚。
+
+如果你å…許é€éŽæ­¤é‡‘é‘°å­˜å–ä½ çš„ KeePassXC 資料庫,
+è«‹å–一個唯一識別å並按下接å—。</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>儲存並å…許存å–</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC:覆蓋ç¾æœ‰çš„金鑰?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>已存在å為「%1ã€çš„共用加密金鑰。
+是å¦è¦è¦†è“‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC:更新項目</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>是å¦è¦æ›´æ–° %1 到 %2 的資訊?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC:資料庫已鎖定ï¼</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>ç›®å‰çš„資料庫已鎖定ï¼
+請解鎖所é¸çš„資料庫或é¸æ“‡å…¶ä»–已解鎖的資料庫。</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC:設定ä¸å¯ç”¨ï¼</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>ç›®å‰çš„資料庫中沒有帶有設定的項目。</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC:找ä¸åˆ°é‡‘é‘°</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>KeePassXC 設定中找ä¸åˆ°å…±äº«åŠ å¯†é‡‘鑰。</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC:從資料庫中移除金鑰</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>正在移除所有已儲存的權é™â€¦â€¦</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>中止</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC:已移除權é™</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC:找ä¸åˆ°å¸¶æœ‰æ¬Šé™çš„é …ç›®ï¼</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>ç›®å‰çš„資料庫中沒有帶有權é™çš„項目。</translation>
</message>
</context>
<context>
@@ -149,6 +489,10 @@ Please select whether you want to allow access.</source>
<translation>å†æ¬¡è¼¸å…¥å¯†ç¢¼ï¼š</translation>
</message>
<message>
+ <source>&amp;Key file</source>
+ <translation>金鑰檔案 (&amp;K)</translation>
+ </message>
+ <message>
<source>Browse</source>
<translation>ç€è¦½</translation>
</message>
@@ -157,6 +501,14 @@ Please select whether you want to allow access.</source>
<translation>建立</translation>
</message>
<message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>挑戰回應</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>é‡æ–°æ•´ç†</translation>
+ </message>
+ <message>
<source>Key files</source>
<translation>金鑰檔案</translation>
</message>
@@ -177,6 +529,10 @@ Please select whether you want to allow access.</source>
<translation>é¸æ“‡é‡‘鑰檔案</translation>
</message>
<message>
+ <source>Empty password</source>
+ <translation>清空密碼</translation>
+ </message>
+ <message>
<source>Do you really want to use an empty string as password?</source>
<translation>真的è¦ä½¿ç”¨ç©ºç™½å¯†ç¢¼ï¼Ÿ</translation>
</message>
@@ -191,20 +547,17 @@ Please select whether you want to allow access.</source>
%2</translation>
</message>
<message>
- <source>&amp;Key file</source>
- <translation>金鑰檔案 (&amp;K)</translation>
- </message>
- <message>
- <source>Cha&amp;llenge Response</source>
- <translation>挑戰回應</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>é‡æ–°æ•´ç†</translation>
+ <source>Legacy key file format</source>
+ <translation>舊å¼é‡‘鑰檔案格å¼</translation>
</message>
<message>
- <source>Empty password</source>
- <translation>清空密碼</translation>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>你正在使用未來將ä¸å†æ”¯æ´çš„舊å¼é‡‘鑰檔案格å¼ã€‚
+
+請考慮產生新的金鑰。</translation>
</message>
<message>
<source>Changing master key failed: no YubiKey inserted.</source>
@@ -218,6 +571,10 @@ Please select whether you want to allow access.</source>
<translation>複製é¸é …</translation>
</message>
<message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>在標題後追加「 - 複製ã€å­—樣</translation>
+ </message>
+ <message>
<source>Replace username and password with references</source>
<translation>以引用資料å–代使用者å稱與密碼</translation>
</message>
@@ -225,10 +582,6 @@ Please select whether you want to allow access.</source>
<source>Copy history</source>
<translation>複製歷å²è¨˜éŒ„</translation>
</message>
- <message>
- <source>Append &apos; - Clone&apos; to title</source>
- <translation>在標題後追加「 - 複製ã€å­—樣</translation>
- </message>
</context>
<context>
<name>CsvImportWidget</name>
@@ -254,7 +607,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Text is qualified by</source>
- <translation type="unfinished"/>
+ <translation>文字資料標示符號</translation>
</message>
<message>
<source>Fields are separated by</source>
@@ -262,15 +615,15 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Comments start with</source>
- <translation type="unfinished"/>
+ <translation>註解標示符號</translation>
</message>
<message>
<source>First record has field names</source>
- <translation type="unfinished"/>
+ <translation>首行為欄ä½å稱</translation>
</message>
<message>
<source>Number of headers line to discard</source>
- <translation type="unfinished"/>
+ <translation>è¦æ¨æ£„的標題行數</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
@@ -282,7 +635,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Column layout</source>
- <translation type="unfinished"/>
+ <translation>欄ä½å¸ƒå±€</translation>
</message>
<message>
<source>Not present in CSV file</source>
@@ -326,10 +679,6 @@ Please select whether you want to allow access.</source>
<context>
<name>CsvImportWizard</name>
<message>
- <source>Import CSV file</source>
- <translation>匯入 CSV 檔</translation>
- </message>
- <message>
<source>Error</source>
<translation>錯誤</translation>
</message>
@@ -340,17 +689,17 @@ Please select whether you want to allow access.</source>
</context>
<context>
<name>CsvParserModel</name>
- <message>
- <source> byte, </source>
- <translation> ä½å…ƒçµ„, </translation>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
</message>
- <message>
- <source> rows, </source>
- <translation> 行, </translation>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
</message>
- <message>
- <source> columns</source>
- <translation> 列</translation>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
</message>
</context>
<context>
@@ -372,6 +721,14 @@ Please select whether you want to allow access.</source>
<translation>ç€è¦½</translation>
</message>
<message>
+ <source>Refresh</source>
+ <translation>é‡æ–°æ•´ç†</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>挑戰回應:</translation>
+ </message>
+ <message>
<source>Unable to open the database.</source>
<translation>無法開啟資料庫。</translation>
</message>
@@ -380,6 +737,23 @@ Please select whether you want to allow access.</source>
<translation>無法開啟金鑰檔案</translation>
</message>
<message>
+ <source>Legacy key file format</source>
+ <translation>舊å¼é‡‘鑰檔案格å¼</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>你正在使用未來將ä¸å†æ”¯æ´çš„舊å¼é‡‘鑰檔案格å¼ã€‚
+
+請考慮產生新的金鑰。</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>ä¸å†é¡¯ç¤ºæ­¤è­¦å‘Š</translation>
+ </message>
+ <message>
<source>All files</source>
<translation>所有檔案</translation>
</message>
@@ -391,14 +765,6 @@ Please select whether you want to allow access.</source>
<source>Select key file</source>
<translation>é¸æ“‡é‡‘鑰檔案</translation>
</message>
- <message>
- <source>Refresh</source>
- <translation>é‡æ–°æ•´ç†</translation>
- </message>
- <message>
- <source>Challenge Response:</source>
- <translation>挑戰驗證:</translation>
- </message>
</context>
<context>
<name>DatabaseRepairWidget</name>
@@ -415,14 +781,14 @@ Please select whether you want to allow access.</source>
<translation>無法開啟金鑰檔案</translation>
</message>
<message>
- <source>Database opened fine. Nothing to do.</source>
- <translation>資料庫正常開啟。什麼都ä¸åšã€‚</translation>
- </message>
- <message>
<source>Unable to open the database.</source>
<translation>無法開啟資料庫。</translation>
</message>
<message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>資料庫正常開啟。什麼都ä¸åšã€‚</translation>
+ </message>
+ <message>
<source>Success</source>
<translation>æˆåŠŸ</translation>
</message>
@@ -439,28 +805,122 @@ You can now save it.</source>
<context>
<name>DatabaseSettingsWidget</name>
<message>
- <source>Database name:</source>
- <translation>資料庫å稱:</translation>
+ <source>General</source>
+ <translation>一般</translation>
</message>
<message>
- <source>Database description:</source>
- <translation>資料庫æ述:</translation>
+ <source>Encryption</source>
+ <translation>加密</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>回åˆæ•¸å¤ªé«˜</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>ä½ æ­£åœ¨å° Argon2 使用相當高的金鑰轉æ›å›žåˆæ•¸ã€‚
+
+如果ä»åŸ·æ„使用此數é‡ï¼Œä½ çš„資料庫å¯èƒ½éœ€è¦èŠ±è²»æ•¸å°æ™‚ã€æ•¸å¤©ã€æˆ–是更久的時間æ‰èƒ½æ‰“é–‹ï¼</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>了解,ä»ä½¿ç”¨æ­¤æ•¸é‡</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>å–消</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>回åˆæ•¸å¤ªä½Ž</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>ä½ æ­£å° AES-KDF 使用éŽä½Žçš„金鑰轉æ›å›žåˆæ•¸ã€‚
+
+如果ä»åŸ·æ„使用此數é‡ï¼Œä½ çš„資料庫å¯èƒ½æœƒè®Šå¾—相當簡單å³èƒ½ç ´è§£ï¼</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF ä¸è®Š</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>無法用新的 KDF åƒæ•¸è½‰æ›é‡‘é‘°ï¼›KDF ä¸è®Šã€‚</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>加密演算法:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES:256 ä½å…ƒï¼ˆé è¨­ï¼‰</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish:256 ä½å…ƒ</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>金鑰è¡ç”Ÿå‡½æ•¸ï¼š</translation>
</message>
<message>
<source>Transform rounds:</source>
<translation>加密轉æ›æ¬¡æ•¸ï¼š</translation>
</message>
<message>
- <source>Default username:</source>
- <translation>é è¨­çš„使用者å稱:</translation>
+ <source>Benchmark 1-second delay</source>
+ <translation>效能測試一秒延é²</translation>
</message>
<message>
- <source> MiB</source>
- <translation> MiB</translation>
+ <source>Memory Usage:</source>
+ <translation>記憶體使用é‡ï¼š</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>平行é‹ç®—:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>資料庫中繼資料</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>資料庫å稱:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>資料庫æ述:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>é è¨­çš„使用者å稱:</translation>
</message>
<message>
- <source>Benchmark</source>
- <translation>效能測試</translation>
+ <source>History Settings</source>
+ <translation>æ­·å²è¨­å®š</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -471,26 +931,27 @@ You can now save it.</source>
<translation>最大歷å²è¨˜éŒ„大å°ï¼š</translation>
</message>
<message>
- <source>Use recycle bin</source>
- <translation>使用回收桶</translation>
+ <source> MiB</source>
+ <translation> MiB</translation>
</message>
<message>
- <source>AES: 256 Bit (default)</source>
- <translation>AES:256 ä½å…ƒï¼ˆé è¨­ï¼‰</translation>
+ <source>Use recycle bin</source>
+ <translation>使用回收桶</translation>
</message>
<message>
- <source>Twofish: 256 Bit</source>
- <translation>Twofish:256 ä½å…ƒ</translation>
+ <source>Additional Database Settings</source>
+ <translation>é¡å¤–的資料庫設定</translation>
</message>
<message>
- <source>Algorithm:</source>
- <translation>演算法:</translation>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseTabWidget</name>
<message>
<source>Root</source>
+ <comment>Root group</comment>
<translation>æ ¹</translation>
</message>
<message>
@@ -510,22 +971,48 @@ You can now save it.</source>
<translation>找ä¸åˆ°æª”案ï¼</translation>
</message>
<message>
- <source>Open KeePass 1 database</source>
- <translation>開啟 KeePass 1 資料庫</translation>
+ <source>Unable to open the database.</source>
+ <translation>無法開啟資料庫。</translation>
</message>
<message>
- <source>KeePass 1 database</source>
- <translation>KeePass 1 資料庫</translation>
+ <source>File opened in read only mode.</source>
+ <translation>已將檔案以唯讀模å¼é–‹å•Ÿã€‚</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>開啟 CSV 檔</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV 檔案</translation>
</message>
<message>
<source>All files (*)</source>
<translation>所有檔案 (*)</translation>
</message>
<message>
+ <source>Merge database</source>
+ <translation>åˆä½µè³‡æ–™åº«</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>開啟 KeePass 1 資料庫</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 資料庫</translation>
+ </message>
+ <message>
<source>Close?</source>
<translation>關閉?</translation>
</message>
<message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>「%1〠正在編輯模å¼ä¸­ã€‚
+是å¦è¦æ¨æ£„變更並關閉?</translation>
+ </message>
+ <message>
<source>Save changes?</source>
<translation>儲存修改?</translation>
</message>
@@ -540,10 +1027,22 @@ Save changes?</source>
<translation>寫入資料庫失敗。</translation>
</message>
<message>
+ <source>Passwords</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
<source>Save database as</source>
<translation>資料庫å¦å­˜ç‚º</translation>
</message>
<message>
+ <source>Export database to CSV file</source>
+ <translation>å°‡è³‡æ–™åº«è¼¸å‡ºæˆ CSV 檔案</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>寫入 CSV 檔案失敗。</translation>
+ </message>
+ <message>
<source>New database</source>
<translation>新的資料庫</translation>
</message>
@@ -562,12 +1061,6 @@ Please press cancel to finish your changes or discard them.</source>
請按å–消以完æˆä¿®æ”¹æˆ–æ¨æ£„修改。</translation>
</message>
<message>
- <source>This database has never been saved.
-You can save the database or stop locking it.</source>
- <translation>資料庫尚未儲存。
-å¯ä»¥å…ˆå„²å­˜è³‡æ–™åº«æˆ–是åœæ­¢éŽ–定資料庫</translation>
- </message>
- <message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
@@ -576,69 +1069,22 @@ Otherwise your changes are lost.</source>
ä¸ç„¶å‰‡æœƒéºå¤±æ‰€æœ‰ä¿®æ”¹ã€‚</translation>
</message>
<message>
- <source>&quot;%1&quot; is in edit mode.
-Discard changes and close anyway?</source>
- <translation>「%1〠正在編輯模å¼ä¸­ã€‚
-是å¦è¦æ¨æ£„變更並關閉?</translation>
- </message>
- <message>
- <source>Export database to CSV file</source>
- <translation>å°‡è³‡æ–™åº«è¼¸å‡ºæˆ CSV 檔案</translation>
- </message>
- <message>
- <source>CSV file</source>
- <translation>CSV 檔案</translation>
- </message>
- <message>
- <source>Writing the CSV file failed.</source>
- <translation>寫入 CSV 檔案失敗。</translation>
- </message>
- <message>
- <source>Unable to open the database.</source>
- <translation>無法開啟資料庫。</translation>
- </message>
- <message>
- <source>Merge database</source>
- <translation>åˆä½µè³‡æ–™åº«</translation>
- </message>
- <message>
- <source>The database you are trying to save as is locked by another instance of KeePassXC.
-Do you want to save it anyway?</source>
- <translation>欲儲存的資料庫已由其他 KeePassXC 程å¼éŽ–定。
-ä»è¦ç¹¼çºŒå„²å­˜ï¼Ÿ</translation>
- </message>
- <message>
- <source>Passwords</source>
- <translation>密碼</translation>
- </message>
- <message>
- <source>Database already opened</source>
- <translation>資料庫已開啟</translation>
- </message>
- <message>
- <source>The database you are trying to open is locked by another instance of KeePassXC.
-
-Do you want to open it anyway?</source>
- <translation>欲開啟的資料庫已由其他 KeePassXC 程å¼éŽ–定。
-
-ä»è¦ç¹¼çºŒé–‹å•Ÿï¼Ÿ</translation>
- </message>
- <message>
- <source>Open read-only</source>
- <translation>以唯讀模å¼é–‹å•Ÿ</translation>
- </message>
- <message>
- <source>File opened in read only mode.</source>
- <translation>已將檔案以唯讀模å¼é–‹å•Ÿã€‚</translation>
+ <source>Disable safe saves?</source>
+ <translation>關閉安全存檔?</translation>
</message>
<message>
- <source>Open CSV file</source>
- <translation>開啟 CSV 檔</translation>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>DatabaseWidget</name>
<message>
+ <source>Searching...</source>
+ <translation>æœå°‹ä¸­â€¦â€¦</translation>
+ </message>
+ <message>
<source>Change master key</source>
<translation>變更主金鑰</translation>
</message>
@@ -659,6 +1105,14 @@ Do you want to open it anyway?</source>
<translation>真的è¦æ°¸ä¹…刪除 %1 個項目?</translation>
</message>
<message>
+ <source>Move entry to recycle bin?</source>
+ <translation>將項目移到回收桶?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>真的è¦å°‡ã€Œ%1ã€ç§»åˆ°å›žæ”¶æ¡¶ï¼Ÿ</translation>
+ </message>
+ <message>
<source>Move entries to recycle bin?</source>
<translation>將項目移到回收桶?</translation>
</message>
@@ -667,28 +1121,28 @@ Do you want to open it anyway?</source>
<translation><numerusform>真的è¦å°‡ %n 個項目移到回收桶?</numerusform></translation>
</message>
<message>
- <source>Delete group?</source>
- <translation>刪除群組?</translation>
+ <source>Execute command?</source>
+ <translation>執行命令?</translation>
</message>
<message>
- <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation>真的è¦æ°¸é åˆªé™¤ã€Œ%1ã€ç¾¤çµ„?</translation>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>真的è¦åŸ·è¡Œä¸‹åˆ—命令?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>無法計算主金鑰</translation>
+ <source>Remember my choice</source>
+ <translation>記ä½æˆ‘çš„é¸æ“‡</translation>
</message>
<message>
- <source>Move entry to recycle bin?</source>
- <translation>將項目移到回收桶?</translation>
+ <source>Delete group?</source>
+ <translation>刪除群組?</translation>
</message>
<message>
- <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation>真的è¦å°‡ã€Œ%1ã€ç§»åˆ°å›žæ”¶æ¡¶ï¼Ÿ</translation>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>真的è¦æ°¸é åˆªé™¤ã€Œ%1ã€ç¾¤çµ„?</translation>
</message>
<message>
- <source>Searching...</source>
- <translation>æœå°‹ä¸­â€¦â€¦</translation>
+ <source>Unable to calculate master key</source>
+ <translation>無法計算主金鑰</translation>
</message>
<message>
<source>No current database.</source>
@@ -707,20 +1161,8 @@ Do you want to open it anyway?</source>
<translation>ç„¡çµæžœ</translation>
</message>
<message>
- <source>Execute command?</source>
- <translation>執行命令?</translation>
- </message>
- <message>
- <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation>真的è¦åŸ·è¡Œä¸‹åˆ—命令?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
- </message>
- <message>
- <source>Remember my choice</source>
- <translation>記ä½æˆ‘çš„é¸æ“‡</translation>
- </message>
- <message>
- <source>Autoreload Request</source>
- <translation>自動é‡æ–°è®€å–請求</translation>
+ <source>File has changed</source>
+ <translation>檔案已變更</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
@@ -731,8 +1173,10 @@ Do you want to open it anyway?</source>
<translation>åˆä½µè«‹æ±‚</translation>
</message>
<message>
- <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source>
- <translation>資料庫檔案已變更,且有尚未儲存的變更。åˆä½µè®Šæ›´ï¼Ÿ</translation>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>資料庫檔案已變更,且有尚未儲存的變更。
+åˆä½µè®Šæ›´ï¼Ÿ</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
@@ -748,6 +1192,89 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>產生 TOTP Token</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>關閉</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>網å€</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>éŽæœŸ</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>使用者å稱</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>自動輸入</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>æœå°‹ä¸­</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>屬性</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>附件</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>附註</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>視窗</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>åºåˆ—</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>æœå°‹</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>清除</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>從ä¸</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[被ä¿è­·]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>åœç”¨</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>啟用</translation>
+ </message>
+</context>
+<context>
<name>EditEntryWidget</name>
<message>
<source>Entry</source>
@@ -774,6 +1301,30 @@ Do you want to open it anyway?</source>
<translation>æ­·å²è¨˜éŒ„</translation>
</message>
<message>
+ <source>SSH Agent</source>
+ <translation>SSH 代ç†</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ç„¡</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(已加密)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>é¸æ“‡ç§å¯†é‡‘é‘°</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>檔案太大,無法作為ç§å¯†é‡‘é‘°</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>無法打開ç§å¯†é‡‘é‘°</translation>
+ </message>
+ <message>
<source>Entry history</source>
<translation>項目歷å²è¨˜éŒ„</translation>
</message>
@@ -794,22 +1345,20 @@ Do you want to open it anyway?</source>
<translation>新的屬性</translation>
</message>
<message>
- <source>Select file</source>
- <translation>é¸æ“‡æª”案</translation>
+ <source>Confirm Remove</source>
+ <translation>確èªç§»é™¤</translation>
</message>
<message>
- <source>Unable to open file</source>
- <translation>無法開啟檔案</translation>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>確定è¦ç§»é™¤æ­¤å±¬æ€§ï¼Ÿ</translation>
</message>
<message>
- <source>Save attachment</source>
- <translation>儲存附件</translation>
+ <source>[PROTECTED]</source>
+ <translation>[被ä¿è­·]</translation>
</message>
<message>
- <source>Unable to save the attachment:
-</source>
- <translation>無法儲存附件:
-</translation>
+ <source>Press reveal to view or edit</source>
+ <translation>請按「æ­ç¤ºã€ä»¥æª¢è¦–或編輯</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -828,27 +1377,23 @@ Do you want to open it anyway?</source>
<translation>1 å¹´</translation>
</message>
<message>
- <source>Confirm Remove</source>
- <translation>確èªç§»é™¤</translation>
- </message>
- <message>
- <source>Are you sure you want to remove this attribute?</source>
- <translation>確定è¦ç§»é™¤æ­¤å±¬æ€§ï¼Ÿ</translation>
+ <source>Apply generated password?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>[PROTECTED] Press reveal to view or edit</source>
- <translation>[å—ä¿è­·çš„內容] 請按「æ­ç¤ºã€ä»¥æª¢è¦–或編輯</translation>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>Are you sure you want to remove this attachment?</source>
- <translation>確定è¦ç§»é™¤æ­¤é™„件?</translation>
+ <source>Entry updated successfully.</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
<name>EditEntryWidgetAdvanced</name>
<message>
<source>Additional attributes</source>
- <translation>é¡å¤–屬性</translation>
+ <translation>é¡å¤–的屬性</translation>
</message>
<message>
<source>Add</source>
@@ -859,18 +1404,6 @@ Do you want to open it anyway?</source>
<translation>移除</translation>
</message>
<message>
- <source>Attachments</source>
- <translation>附件</translation>
- </message>
- <message>
- <source>Save</source>
- <translation>儲存</translation>
- </message>
- <message>
- <source>Open</source>
- <translation>é–‹å•Ÿ</translation>
- </message>
- <message>
<source>Edit Name</source>
<translation>編輯å稱</translation>
</message>
@@ -882,24 +1415,24 @@ Do you want to open it anyway?</source>
<source>Reveal</source>
<translation>æ­ç¤º</translation>
</message>
-</context>
-<context>
- <name>EditEntryWidgetAutoType</name>
<message>
- <source>Enable Auto-Type for this entry</source>
- <translation>啟用此項目的自動輸入</translation>
+ <source>Attachments</source>
+ <translation>附件</translation>
</message>
<message>
- <source>+</source>
- <translation>+</translation>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
</message>
<message>
- <source>-</source>
- <translation>-</translation>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
<message>
- <source>Window title:</source>
- <translation>視窗標題:</translation>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>啟用此項目的自動輸入</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
@@ -910,16 +1443,24 @@ Do you want to open it anyway?</source>
<translation>使用自訂的自動輸入åºåˆ— (&amp;U):</translation>
</message>
<message>
- <source>Use default se&amp;quence</source>
- <translation>使用é è¨­åºåˆ— (&amp;Q)</translation>
+ <source>Window Associations</source>
+ <translation>視窗關è¯</translation>
</message>
<message>
- <source>Set custo&amp;m sequence:</source>
- <translation>設定自訂åºåˆ— (&amp;M):</translation>
+ <source>+</source>
+ <translation>+</translation>
</message>
<message>
- <source>Window Associations</source>
- <translation>視窗關è¯</translation>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>視窗標題:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -944,12 +1485,8 @@ Do you want to open it anyway?</source>
<context>
<name>EditEntryWidgetMain</name>
<message>
- <source>Title:</source>
- <translation>標題:</translation>
- </message>
- <message>
- <source>Username:</source>
- <translation>使用者å稱:</translation>
+ <source>URL:</source>
+ <translation>網å€ï¼š</translation>
</message>
<message>
<source>Password:</source>
@@ -960,20 +1497,104 @@ Do you want to open it anyway?</source>
<translation>é‡è¤‡ï¼š</translation>
</message>
<message>
- <source>URL:</source>
- <translation>網å€ï¼š</translation>
+ <source>Title:</source>
+ <translation>標題:</translation>
</message>
<message>
- <source>Expires</source>
- <translation>éŽæœŸ</translation>
+ <source>Notes</source>
+ <translation>附註</translation>
</message>
<message>
<source>Presets</source>
<translation>é è¨­</translation>
</message>
<message>
- <source>Notes:</source>
- <translation>附註:</translation>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>切æ›æ ¸å–方塊以æ­ç¤ºå‚™è¨»æ¬„ä½ã€‚</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>使用者å稱:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>éŽæœŸ</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>從代ç†ä¸­åˆªé™¤é‡‘é‘°æ–¼</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> 秒</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>指紋</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>當關閉/鎖定資料庫時從代ç†ä¸­åˆªé™¤é‡‘é‘°</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>公開金鑰</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>當打開/解鎖資料庫時å‘代ç†æ–°å¢žé‡‘é‘°</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>註解</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>解密</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>ç„¡</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>複製到剪貼簿</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>ç§å¯†é‡‘é‘°</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>外部檔案</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ç€è¦½â€¦â€¦</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>附件</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>新增到代ç†</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>從代ç†ä¸­åˆªé™¤</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>使用此金鑰時需è¦ä½¿ç”¨è€…確èª</translation>
</message>
</context>
<context>
@@ -1045,6 +1666,14 @@ Do you want to open it anyway?</source>
<context>
<name>EditWidgetIcons</name>
<message>
+ <source>&amp;Use default icon</source>
+ <translation>使用é è¨­åœ–示 (&amp;U)</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>使用自訂圖示 (&amp;M)</translation>
+ </message>
+ <message>
<source>Add custom icon</source>
<translation>加入自訂圖示</translation>
</message>
@@ -1053,6 +1682,18 @@ Do you want to open it anyway?</source>
<translation>刪除自訂圖示</translation>
</message>
<message>
+ <source>Download favicon</source>
+ <translation>下載圖示</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>無法擷å–圖示。</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>æ示:å¯ä»¥å•Ÿç”¨ Google 當作備案。é¸é …請至 工具&gt;設定&gt;安全性</translation>
+ </message>
+ <message>
<source>Images</source>
<translation>圖片</translation>
</message>
@@ -1065,24 +1706,12 @@ Do you want to open it anyway?</source>
<translation>é¸æ“‡åœ–片</translation>
</message>
<message>
- <source>Download favicon</source>
- <translation>下載圖示</translation>
- </message>
- <message>
- <source>Unable to fetch favicon.</source>
- <translation>無法擷å–圖示。</translation>
- </message>
- <message>
<source>Can&apos;t read icon</source>
<translation>無法讀å–圖示</translation>
</message>
<message>
- <source>&amp;Use default icon</source>
- <translation>使用é è¨­åœ–示 (&amp;U)</translation>
- </message>
- <message>
- <source>Use custo&amp;m icon</source>
- <translation>使用自訂圖示 (&amp;M)</translation>
+ <source>Custom icon already exists</source>
+ <translation>自訂圖示已經存在</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1092,14 +1721,6 @@ Do you want to open it anyway?</source>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation>有 %1 個項目使用此圖示,並將以é è¨­åœ–示å–代。確定è¦åˆªé™¤åœ–示?</translation>
</message>
- <message>
- <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation>æ示:å¯ä»¥å•Ÿç”¨ Google 當作備案。é¸é …請至 工具&gt;設定&gt;安全性</translation>
- </message>
- <message>
- <source>Custom icon already exists</source>
- <translation>自訂圖示已經存在</translation>
- </message>
</context>
<context>
<name>EditWidgetProperties</name>
@@ -1119,15 +1740,129 @@ Do you want to open it anyway?</source>
<source>Uuid:</source>
<translation>Uuid:</translation>
</message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>移除</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>Entry</name>
<message>
<source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
<translation> - 複製</translation>
</message>
</context>
<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>å稱</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>大å°</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>加入</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>移除</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>é–‹å•Ÿ</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>儲存</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>é¸æ“‡æª”案</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>確èªç§»é™¤</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>儲存附件</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>無法建立資料夾:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>確定è¦ä»¥é™„件覆蓋ç¾æœ‰çš„檔案 &quot;%1&quot; 嗎?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>確èªè¦†è“‹</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>無法ä¿å­˜é™„件:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>無法打開附件:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>無法打開附件:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>無法打開檔案:
+%1</translation>
+ </message>
+</context>
+<context>
<name>EntryAttributesModel</name>
<message>
<source>Name</source>
@@ -1156,6 +1891,11 @@ Do you want to open it anyway?</source>
<context>
<name>EntryModel</name>
<message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>引用: </translation>
+ </message>
+ <message>
<source>Group</source>
<translation>群組</translation>
</message>
@@ -1172,9 +1912,67 @@ Do you want to open it anyway?</source>
<translation>網å€</translation>
</message>
<message>
- <source>Ref: </source>
- <comment>Reference abbreviation</comment>
- <translation>引用: </translation>
+ <source>Never</source>
+ <translation>從ä¸</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>附註</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>éŽæœŸ</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>已建立</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>已修改</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation>已存å–</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>附件</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>éš±è—使用者å稱</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>éš±è—密碼</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>é‡è¨­ç‚ºé è¨­</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -1185,6 +1983,17 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation>KeePassXC: 無法ä¿å­˜æª”案ï¼</translation>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation>無法ä¿å­˜ native messaging 指令檔。</translation>
+ </message>
+</context>
+<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
@@ -1234,6 +2043,10 @@ Do you want to open it anyway?</source>
<source>Ensure that the password contains characters from every group</source>
<translation>確ä¿å¯†ç¢¼åŒ…å«æ¯ä¸€çµ„å­—å…ƒ</translation>
</message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>擴展 ASCII 碼</translation>
+ </message>
</context>
<context>
<name>KMessageWidget</name>
@@ -1247,6 +2060,361 @@ Do you want to open it anyway?</source>
</message>
</context>
<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>無法計算主金鑰</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>無法發出挑戰-回應。</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>金鑰ä¸æ­£ç¢ºæˆ–是資料庫æ壞。</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>無法發出挑戰-回應。</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>無法計算主金鑰</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>缺少資料庫標頭</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>無法計算主金鑰</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>無效的標頭校驗大å°</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>SHA256 標頭ä¸ç›¸ç¬¦</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>金鑰ä¸æ­£ç¢ºæˆ–是資料庫æ壞。(HMAC ä¸ç›¸ç¬¦ï¼‰</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>未知的加密</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>無效的標頭 ID 大å°</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>無效的標頭欄ä½é•·åº¦</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>無效的資料長度</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation>無法打開標頭中 KDF åƒæ•¸çš„ç·©è¡å€</translation>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation>ä¸æ”¯æ´çš„金鑰è¡ç”Ÿå‡½æ•¸ (KDF) 或åƒæ•¸ç„¡æ•ˆ</translation>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation>在 KDBX4 檔中找到的舊å¼æ¨™é ­æ¬„ä½ã€‚</translation>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation>無效的內部標頭 ID 大å°</translation>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation>無效的內部標頭欄ä½é•·åº¦</translation>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation>無效的內部標頭二進ä½å¤§å°</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>ä¸æ”¯æ´çš„ KeePass 變體映射版本。</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射項目å稱長度</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射項目å稱資料</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射項目值長度</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變數映射項目值資料</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射布林項目值長度</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射 Int32 項目值長度</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射 UInt32 項目值長度</translation>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射 Int64 項目值長度</translation>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射 UInt64 項目值長度</translation>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射項目類型</translation>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation>無效的變體映射欄ä½é¡žåž‹å¤§å°</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation>無效的å°ç¨±å¯†ç¢¼æ¼”算法。</translation>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>無效的å°ç¨±å¯†ç¢¼ IV 大å°ã€‚</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>無法計算主金鑰</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation>無法åºåˆ—化 KDF åƒæ•¸è®Šé«”映射</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation>無效的加密法 uuid 長度</translation>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation>ä¸æ”¯æ´çš„加密</translation>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation>ä¸æ­£ç¢ºå£“縮旗幟長度</translation>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation>ä¸æ”¯æ´çš„壓縮演算法</translation>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation>無效的主種å­å¤§å°</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>無效的轉æ›ç¨®å­å¤§å°</translation>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation>無效的轉æ›å›žåˆæ•¸</translation>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation>無效的起始ä½å…ƒçµ„大å°</translation>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation>ç„¡æ•ˆçš„éš¨æ©Ÿè³‡æ–™æµ ID 大å°</translation>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation>無效的內部隨機資料æµå¯†ç¢¼</translation>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation>ä¸¦éž KeePass 資料庫。</translation>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>é¸æ“‡çš„檔案是舊的 KeePass 1 資料庫 (.kdb)。
+
+ä½ å¯ä»¥é»žé¸ 資料庫 &gt; 「匯入 KeePass 1 資料庫……ã€ã€‚
+這是單å‘é·ç§»ã€‚你無法用舊的 KeePassX 0.4 的版本開啟已匯入的資料庫。</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>ä¸æ”¯æ´çš„ KeePass 2 資料庫版本。</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML 分æžå¤±æ•—:%1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>無根權é™ç¾¤çµ„</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation>缺少圖示的 uuid 或資料</translation>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation>缺少自訂資料éµæˆ–值</translation>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation>多é‡ç¾¤çµ„元素</translation>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation>空的群組 uuid</translation>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation>無效的群組圖示標號</translation>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation>無效的 EnableAutoType 值</translation>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation>無效的 EnableSearching 值</translation>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation>找ä¸åˆ°ç¾¤çµ„ uuid</translation>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation>空的 DeleteObject uuid</translation>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation>缺少 DeletedObject uuid 或時間</translation>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation>空的項目 uuid</translation>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation>無效的項目圖示編號</translation>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation>æ­·å²è¨˜éŒ„項目中的歷å²å…ƒç´ </translation>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation>找ä¸åˆ°é …ç›® uuid</translation>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation>具有ä¸åŒ uuid çš„æ­·å²å…ƒç´ </translation>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>無法解密項目字串</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>找到é‡è¤‡çš„自訂屬性</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation>缺少項目字串或值</translation>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>找到é‡è¤‡çš„附件</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation>缺少項目二進ä½é‡‘鑰或值</translation>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation>缺少自動輸入關è¯è¦–窗或åºåˆ—</translation>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation>無效的布林值</translation>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation>無效的日期時間值</translation>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation>無效的é¡è‰²å€¼</translation>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation>無效的 rgb é¡è‰²éƒ¨åˆ†</translation>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation>無效的數值</translation>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation>無效的 uuid 值</translation>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation>無法解壓縮二進ä½è³‡æ–™</translation>
+ </message>
+</context>
+<context>
<name>KeePass1OpenWidget</name>
<message>
<source>Import KeePass1 database</source>
@@ -1276,6 +2444,35 @@ Do you want to open it anyway?</source>
<translation>ä¸æ”¯æ´çš„ KeePass 資料庫版本。</translation>
</message>
<message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation>無法讀å–加密 IV</translation>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation>無效的群組數</translation>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation>無效的項目數</translation>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation>無效的內容雜湊大å°</translation>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation>無效的轉æ›ç¨®å­å¤§å°</translation>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation>無效的轉æ›å›žåˆæ•¸</translation>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>無法構æˆç¾¤çµ„樹</translation>
+ </message>
+ <message>
<source>Root</source>
<translation>æ ¹</translation>
</message>
@@ -1287,129 +2484,141 @@ Do you want to open it anyway?</source>
<source>Wrong key or database file is corrupt.</source>
<translation>金鑰ä¸æ­£ç¢ºæˆ–是資料庫æ壞。</translation>
</message>
-</context>
-<context>
- <name>KeePass2Reader</name>
<message>
- <source>Not a KeePass database.</source>
- <translation>ä¸¦éž KeePass 資料庫。</translation>
+ <source>Key transformation failed</source>
+ <translation>金鑰轉æ›å¤±æ•—</translation>
</message>
<message>
- <source>Unsupported KeePass database version.</source>
- <translation>ä¸æ”¯æ´çš„ KeePass 資料庫版本。</translation>
+ <source>Invalid group field type number</source>
+ <translation>無效的群組欄ä½é¡žåž‹ç·¨è™Ÿ</translation>
</message>
<message>
- <source>Wrong key or database file is corrupt.</source>
- <translation>金鑰ä¸æ­£ç¢ºæˆ–是資料庫æ壞。</translation>
+ <source>Invalid group field size</source>
+ <translation>無效的群組欄ä½å¤§å°</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>無法計算主金鑰</translation>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation>讀å–群組欄ä½è³‡æ–™å¤§å°ä¸ç›¸ç¬¦</translation>
</message>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group id field size</source>
+ <translation>無效的群組 id 欄ä½å¤§å°</translation>
</message>
<message>
- <source>The selected file is an old KeePass 1 database (.kdb).
-
-You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
-This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
- <translation>é¸æ“‡çš„檔案是舊的 KeePass 1 資料庫 (.kdb)。
-
-ä½ å¯ä»¥é»žé¸ 資料庫 &gt; 「匯入 KeePass 1 資料庫……ã€ã€‚
-這是單å‘é·ç§»ã€‚你無法用舊的 KeePassX 0.4 的版本開啟已匯入的資料庫。</translation>
+ <source>Incorrect group creation time field size</source>
+ <translation>無效的群組建立時間欄ä½å¤§å°</translation>
</message>
-</context>
-<context>
- <name>KeePass2Writer</name>
<message>
- <source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <source>Incorrect group modification time field size</source>
+ <translation>無效的群組修改時間欄ä½å¤§å°</translation>
</message>
<message>
- <source>Unable to calculate master key</source>
- <translation>無法計算主金鑰</translation>
+ <source>Incorrect group access time field size</source>
+ <translation>無效的群組存å–時間欄ä½å¤§å°</translation>
</message>
-</context>
-<context>
- <name>Main</name>
<message>
- <source>Fatal error while testing the cryptographic functions.</source>
- <translation>測試加密函數時發生é‡å¤§éŒ¯èª¤ã€‚</translation>
+ <source>Incorrect group expiry time field size</source>
+ <translation>無效的群組éŽæœŸæ™‚間欄ä½å¤§å°</translation>
</message>
<message>
- <source>KeePassXC - Error</source>
- <translation>KeePassXC - 錯誤</translation>
+ <source>Incorrect group icon field size</source>
+ <translation>無效的群組圖示欄ä½å¤§å°</translation>
</message>
<message>
- <source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation>無法建立鎖定文件。已åœç”¨å–®ä¸€å¯¦ä¾‹æ¨¡å¼ã€‚</translation>
+ <source>Incorrect group level field size</source>
+ <translation>無效的群組級別欄ä½å¤§å°</translation>
</message>
<message>
- <source>Another instance of KeePassXC is already running.</source>
- <translation>其他 KeePassXC 程å¼æ­£åœ¨é‹è¡Œä¸­ã€‚</translation>
+ <source>Invalid group field type</source>
+ <translation>無效的群組欄ä½é¡žåž‹</translation>
</message>
<message>
- <source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation type="unfinished"/>
+ <source>Missing group id or level</source>
+ <translation>缺少群組 id 或級別</translation>
</message>
-</context>
-<context>
- <name>MainWindow</name>
<message>
- <source>Open database</source>
- <translation>開啟資料庫</translation>
+ <source>Missing entry field type number</source>
+ <translation>缺少項目欄ä½é¡žåž‹ç·¨è™Ÿ</translation>
</message>
<message>
- <source>Database settings</source>
- <translation>資料庫設定</translation>
+ <source>Invalid entry field size</source>
+ <translation>無效的項目欄ä½å¤§å°</translation>
</message>
<message>
- <source>Copy username to clipboard</source>
- <translation>將使用者å稱複製到剪貼簿</translation>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation>讀å–的項目欄ä½è³‡æ–™èˆ‡å¤§å°ä¸ç›¸ç¬¦</translation>
</message>
<message>
- <source>Copy password to clipboard</source>
- <translation>將密碼複製到剪貼簿</translation>
+ <source>Invalid entry uuid field size</source>
+ <translation>無效的項目 uuid 欄ä½å¤§å°</translation>
</message>
<message>
- <source>Settings</source>
- <translation>設定</translation>
+ <source>Invalid entry group id field size</source>
+ <translation>無效的項目群組 id 欄ä½å¤§å°</translation>
</message>
<message>
- <source>Show toolbar</source>
- <translation>顯示工具列</translation>
+ <source>Invalid entry icon field size</source>
+ <translation>無效的項目圖示欄ä½å¤§å°</translation>
</message>
<message>
- <source>read-only</source>
- <translation>唯讀</translation>
+ <source>Invalid entry creation time field size</source>
+ <translation>無效的項目建立時間欄ä½å¤§å°</translation>
</message>
<message>
- <source>Toggle window</source>
- <translation>切æ›è¦–窗</translation>
+ <source>Invalid entry modification time field size</source>
+ <translation>無效的項目修改時間欄ä½å¤§å°</translation>
</message>
<message>
- <source>KeePass 2 Database</source>
- <translation>KeePass 2 資料庫</translation>
+ <source>Invalid entry expiry time field size</source>
+ <translation>無效的項目éŽæœŸæ™‚間欄ä½å¤§å°</translation>
</message>
<message>
- <source>All files</source>
- <translation>所有檔案</translation>
+ <source>Invalid entry field type</source>
+ <translation>無效的項目欄ä½é¡žåž‹</translation>
</message>
+</context>
+<context>
+ <name>Main</name>
<message>
- <source>Save repaired database</source>
- <translation>儲存已修復的資料庫</translation>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>ç¾æœ‰çš„單實例鎖定檔無效。正在啟動新實例。</translation>
</message>
<message>
- <source>Writing the database failed.</source>
- <translation>寫入資料庫失敗。</translation>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>無法建立鎖定文件。已åœç”¨å–®ä¸€å¯¦ä¾‹æ¨¡å¼ã€‚</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>其他 KeePassXC 程å¼æ­£åœ¨é‹è¡Œä¸­ã€‚</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>測試加密函數時發生é‡å¤§éŒ¯èª¤ã€‚</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation>KeePassXC - 錯誤</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>資料庫 (&amp;D)</translation>
</message>
<message>
<source>&amp;Recent databases</source>
<translation>最近的資料庫 (&amp;R)</translation>
</message>
<message>
+ <source>Import</source>
+ <translation>匯入</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>幫助 (&amp;H)</translation>
+ </message>
+ <message>
<source>E&amp;ntries</source>
<translation>é …ç›® (&amp;N)</translation>
</message>
@@ -1418,12 +2627,16 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>複製屬性到剪貼簿 (&amp;R)</translation>
</message>
<message>
+ <source>Time-based one-time password</source>
+ <translation>é™æ™‚單次密碼</translation>
+ </message>
+ <message>
<source>&amp;Groups</source>
<translation>群組 (&amp;G)</translation>
</message>
<message>
- <source>&amp;View</source>
- <translation>檢視 (&amp;V)</translation>
+ <source>&amp;Tools</source>
+ <translation>工具 (&amp;T)</translation>
</message>
<message>
<source>&amp;Quit</source>
@@ -1434,6 +2647,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>關於 (&amp;A)</translation>
</message>
<message>
+ <source>&amp;Open database...</source>
+ <translation>開啟資料庫…… (&amp;O)</translation>
+ </message>
+ <message>
<source>&amp;Save database</source>
<translation>儲存資料庫 (&amp;S)</translation>
</message>
@@ -1474,24 +2691,24 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>刪除群組 (&amp;D)</translation>
</message>
<message>
- <source>&amp;Database settings</source>
- <translation>資料庫設定 (&amp;D)</translation>
+ <source>Sa&amp;ve database as...</source>
+ <translation>將資料庫儲存為…… (&amp;V)</translation>
</message>
<message>
- <source>&amp;Clone entry</source>
- <translation>複製項目 (&amp;C)</translation>
+ <source>Change &amp;master key...</source>
+ <translation>變更主金鑰…… (&amp;M)</translation>
</message>
<message>
- <source>Timed one-time password</source>
- <translation>定時型一次性密碼 (TOTP)</translation>
+ <source>&amp;Database settings</source>
+ <translation>資料庫設定 (&amp;D)</translation>
</message>
<message>
- <source>Copy &amp;TOTP</source>
- <translation>複製 TOTP (&amp;T)</translation>
+ <source>Database settings</source>
+ <translation>資料庫設定</translation>
</message>
<message>
- <source>Show TOTP</source>
- <translation>顯示 TOTP</translation>
+ <source>&amp;Clone entry</source>
+ <translation>複製項目 (&amp;C)</translation>
</message>
<message>
<source>&amp;Find</source>
@@ -1502,14 +2719,26 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>複製使用者å稱 (&amp;U)</translation>
</message>
<message>
+ <source>Copy username to clipboard</source>
+ <translation>將使用者å稱複製到剪貼簿</translation>
+ </message>
+ <message>
<source>Cop&amp;y password</source>
<translation>複製密碼 (&amp;Y)</translation>
</message>
<message>
+ <source>Copy password to clipboard</source>
+ <translation>將密碼複製到剪貼簿</translation>
+ </message>
+ <message>
<source>&amp;Settings</source>
<translation>設定 (&amp;S)</translation>
</message>
<message>
+ <source>Password Generator</source>
+ <translation>密碼產生器</translation>
+ </message>
+ <message>
<source>&amp;Perform Auto-Type</source>
<translation>執行自動輸入 (&amp;P)</translation>
</message>
@@ -1526,165 +2755,222 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<translation>標題 (&amp;T)</translation>
</message>
<message>
+ <source>Copy title to clipboard</source>
+ <translation>將標題複製到剪貼簿</translation>
+ </message>
+ <message>
<source>&amp;URL</source>
<translation>ç¶²å€ (&amp;U)</translation>
</message>
<message>
+ <source>Copy URL to clipboard</source>
+ <translation>將 URL 複製到剪貼簿</translation>
+ </message>
+ <message>
<source>&amp;Notes</source>
<translation>附註 (&amp;N)</translation>
</message>
<message>
- <source>Password Generator</source>
- <translation>密碼產生器</translation>
+ <source>Copy notes to clipboard</source>
+ <translation>將備註複製到剪貼簿</translation>
</message>
<message>
- <source>Clear history</source>
- <translation>清除歷å²è¨˜éŒ„</translation>
+ <source>&amp;Export to CSV file...</source>
+ <translation>匯出到 CSV 檔案…… (&amp;E)</translation>
</message>
<message>
- <source>&amp;Database</source>
- <translation>資料庫 (&amp;D)</translation>
+ <source>Import KeePass 1 database...</source>
+ <translation>匯入 KeePass 1 資料庫……</translation>
</message>
<message>
- <source>Import</source>
- <translation>匯入</translation>
+ <source>Import CSV file...</source>
+ <translation>匯入 CSV 檔……</translation>
</message>
<message>
- <source>&amp;Tools</source>
- <translation>工具 (&amp;T)</translation>
+ <source>Re&amp;pair database...</source>
+ <translation>修復資料庫…… (&amp;P)</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>顯示 TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>å®‰è£ TOTP</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>複製 TOTP (&amp;T)</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>清空回收桶 (&amp;M)</translation>
</message>
<message>
- <source>Empty recycle bin</source>
- <translation>清空回收桶</translation>
+ <source>Clear history</source>
+ <translation>清除歷å²è¨˜éŒ„</translation>
</message>
<message>
<source>Access error for config file %1</source>
<translation>設定檔存å–錯誤:%1</translation>
</message>
<message>
- <source>Quit KeePassXC</source>
- <translation>退出 KeePassXC</translation>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation>&lt;p&gt;您似乎正在使用 KeePassHTTP ç€è¦½å™¨æ•´åˆåŠŸèƒ½&gt;此功能已經棄用,未來我們將進行移除。&lt;br&gt;並請改用 KeePassXC-Browser ç€è¦½å™¨æ“´å……功能ï¼æœ‰é—œé·ç§»çš„說明,請造訪我們的 &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;é·ç§»æŒ‡å—&lt;/a&gt; (警告 %1/3)&lt;/p&gt;</translation>
</message>
<message>
- <source>Please touch the button on your YubiKey!</source>
- <translation>請觸摸你 YubiKey 上的按鈕ï¼</translation>
+ <source>read-only</source>
+ <translation>唯讀</translation>
</message>
<message>
- <source>&amp;Help</source>
- <translation>幫助 (&amp;H)</translation>
+ <source>Settings</source>
+ <translation>設定</translation>
</message>
<message>
- <source>&amp;Open database...</source>
- <translation>開啟資料庫…… (&amp;O)</translation>
+ <source>Toggle window</source>
+ <translation>切æ›è¦–窗</translation>
</message>
<message>
- <source>Sa&amp;ve database as...</source>
- <translation>將資料庫儲存為…… (&amp;V)</translation>
+ <source>Quit KeePassXC</source>
+ <translation>退出 KeePassXC</translation>
</message>
<message>
- <source>Change &amp;master key...</source>
- <translation>變更主金鑰…… (&amp;M)</translation>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 資料庫</translation>
</message>
<message>
- <source>&amp;Export to CSV file...</source>
- <translation>匯出到 CSV 檔案…… (&amp;E)</translation>
+ <source>All files</source>
+ <translation>所有檔案</translation>
</message>
<message>
- <source>Import KeePass 1 database...</source>
- <translation>匯入 KeePass 1 資料庫……</translation>
+ <source>Open database</source>
+ <translation>開啟資料庫</translation>
</message>
<message>
- <source>Import CSV file...</source>
- <translation>匯入 CSV 檔……</translation>
+ <source>Save repaired database</source>
+ <translation>儲存已修復的資料庫</translation>
</message>
<message>
- <source>Re&amp;pair database...</source>
- <translation>修復資料庫…… (&amp;P)</translation>
+ <source>Writing the database failed.</source>
+ <translation>寫入資料庫失敗。</translation>
</message>
<message>
- <source>Set up TOTP...</source>
- <translation>å®‰è£ TOTP</translation>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>請觸摸你 YubiKey 上的按鈕ï¼</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation>警告: 你正在使用éžç©©å®šç‰ˆæœ¬çš„ KeePassXC!
+具有高風險的破壞å¯èƒ½, 請備份你的資料庫.
+這個版本ä¸æ˜¯çµ¦ä¸€èˆ¬ä½¿ç”¨è€…使用.</translation>
</message>
</context>
<context>
- <name>OptionDialog</name>
+ <name>OpenSSHKey</name>
<message>
- <source>Dialog</source>
- <translation>å°è©±æ–¹å¡Š</translation>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation>無效的金鑰檔案,é æœŸæ‡‰æ˜¯ OpenSSH 金鑰</translation>
</message>
<message>
- <source>General</source>
- <translation>一般</translation>
+ <source>PEM boundary mismatch</source>
+ <translation>PEM 邊界數é‡ä¸å°ç¨±</translation>
</message>
<message>
- <source>Sh&amp;ow a notification when credentials are requested</source>
- <translation>è¦æ±‚憑證時顯示通知 (&amp;O)</translation>
+ <source>Base64 decoding failed</source>
+ <translation>Base64 解碼失敗</translation>
</message>
<message>
- <source>Sort matching entries by &amp;username</source>
- <translation>ä¾ä½¿ç”¨è€…å稱排åºç¬¦åˆé …ç›® (&amp;U)</translation>
+ <source>Key file way too small.</source>
+ <translation>金鑰檔太å°ã€‚</translation>
</message>
<message>
- <source>Re&amp;move all stored permissions from entries in active database</source>
- <translation>從目å‰çš„資料庫項目中移除所有權é™ã€‚</translation>
+ <source>Key file magic header id invalid</source>
+ <translation>金鑰檔魔術標頭 id 無效</translation>
</message>
<message>
- <source>Advanced</source>
- <translation>進階</translation>
+ <source>Found zero keys</source>
+ <translation>找到零個金鑰</translation>
</message>
<message>
- <source>Always allow &amp;access to entries</source>
- <translation>總是å…許存å–é …ç›® (&amp;A)</translation>
+ <source>Failed to read public key.</source>
+ <translation>無法讀å–公開金鑰。</translation>
</message>
<message>
- <source>Always allow &amp;updating entries</source>
- <translation>總是å…許更新項目 (&amp;U)</translation>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation>金鑰檔æ壞,讀å–ç§å¯†é‡‘鑰失敗</translation>
</message>
<message>
- <source>Searc&amp;h in all opened databases for matching entries</source>
- <translation>在所有開啟的資料庫內æœå°‹ç›¸ç¬¦çš„é …ç›® (&amp;H)</translation>
+ <source>No private key payload to decrypt</source>
+ <translation>ç§å¯†é‡‘鑰中沒有載體å¯è§£å¯†</translation>
</message>
<message>
- <source>HTTP Port:</source>
- <translation>HTTP 埠:</translation>
+ <source>Trying to run KDF without cipher</source>
+ <translation>嘗試é‹è¡Œç„¡åŠ å¯†çš„ KDF</translation>
</message>
<message>
- <source>Default port: 19455</source>
- <translation>é è¨­åŸ ï¼š19455</translation>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>需è¦å¯†ç¢¼çŸ­èªžä»¥è§£å¯†æ­¤é‡‘é‘°</translation>
</message>
<message>
- <source>Re&amp;quest to unlock the database if it is locked</source>
- <translation>若資料庫已鎖定,則請求解鎖 (&amp;Q)</translation>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation>金鑰è¡ç”Ÿå¤±æ•—,金鑰檔已æ壞?</translation>
</message>
<message>
- <source>Sort &amp;matching entries by title</source>
- <translation>ä¾å稱排åºç¬¦åˆé …ç›® (&amp;M)</translation>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation>解密失敗,密碼短語錯誤?</translation>
</message>
<message>
- <source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation>KeePassXC 會在 127.0.0.1 上監è½æ­¤åŸ </translation>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>讀å–公開金鑰時出ç¾æ„外的檔案çµå°¾</translation>
</message>
<message>
- <source>Cannot bind to privileged ports</source>
- <translation>無法ç¶å®šåˆ°ç‰¹æ®Šæ¬Šé™åŸ </translation>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>讀å–ç§å¯†é‡‘鑰時出ç¾æ„外的檔案çµå°¾</translation>
</message>
<message>
- <source>Cannot bind to privileged ports below 1024!
-Using default port 19455.</source>
- <translation>無法ç¶å®šåˆ° 1024 以下的特殊權é™åŸ ï¼
-將使用é è¨­åŸ  19455。</translation>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation>無法寫入公開金鑰,因為它是空的</translation>
</message>
<message>
- <source>R&amp;emove all shared encryption keys from active database</source>
- <translation>從目å‰çš„資料庫移除所有共用的加密金鑰 (&amp;E)</translation>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>編寫公開金鑰時出ç¾æ„外的檔案çµå°¾</translation>
</message>
<message>
- <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation>回傳 「KPH: ã€ èµ·é¦–çš„é€²éšŽæ–‡å­—æ¬„ä½ (&amp;R)</translation>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation>無法寫入ç§å¯†é‡‘鑰,因為它是空的</translation>
</message>
<message>
- <source>Automatically creating or updating string fields is not supported.</source>
- <translation>ä¸æ”¯æ´è‡ªå‹•å»ºç«‹æˆ–更新文字欄ä½ã€‚</translation>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>編寫ç§å¯†é‡‘鑰時出ç¾æ„外的檔案çµå°¾</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>å°è©±æ–¹å¡Š</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -1695,6 +2981,15 @@ Using default port 19455.</source>
<translation>啟用 KeePassHTTP 伺æœå™¨</translation>
</message>
<message>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>è¦æ±‚èªè­‰æ™‚顯示通知 (&amp;O)</translation>
+ </message>
+ <message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
<translation>åªå›žå‚³æœ€ä½³çš„網å€ç›¸ç¬¦é …目而éžæ‰€æœ‰ç¶²å€ç›¸ç¬¦çš„項目。(&amp;R)</translation>
</message>
@@ -1703,6 +2998,10 @@ Using default port 19455.</source>
<translation>åªå›žå‚³æœ€ä½³çš„相符項目 (&amp;R)</translation>
</message>
<message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>若資料庫已鎖定,則請求解鎖 (&amp;Q)</translation>
+ </message>
+ <message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
<translation>åªé¡¯ç¤ºç›¸åŒå”定的項目。(http://, https://, ftp://, ...)</translation>
</message>
@@ -1711,27 +3010,108 @@ Using default port 19455.</source>
<translation>符åˆç¶²å€å”定 (&amp;M)</translation>
</message>
<message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>ä¾ä½¿ç”¨è€…å稱排åºç¬¦åˆé …ç›® (&amp;U)</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>ä¾å稱排åºç¬¦åˆé …ç›® (&amp;M)</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>從目å‰çš„資料庫移除所有共用的加密金鑰 (&amp;E)</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>從目å‰çš„資料庫項目中移除所有權é™ã€‚</translation>
+ </message>
+ <message>
<source>Password Generator</source>
<translation>密碼產生器</translation>
</message>
<message>
+ <source>Advanced</source>
+ <translation>進階</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>總是å…許存å–é …ç›® (&amp;A)</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation>總是å…許更新項目 (&amp;U)</translation>
+ </message>
+ <message>
<source>Only the selected database has to be connected with a client.</source>
<translation>åªæœ‰æ‰€é¸çš„資料庫能連接到客戶端。</translation>
</message>
<message>
- <source>The following options can be dangerous!
-Change them only if you know what you are doing.</source>
- <translation>下列é¸é …具有相當風險ï¼
-了解其作用å‰åˆ‡å‹¿è®Šæ›´ã€‚</translation>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>在所有開啟的資料庫內æœå°‹ç›¸ç¬¦çš„é …ç›® (&amp;H)</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>ä¸æ”¯æ´è‡ªå‹•å»ºç«‹æˆ–更新文字欄ä½ã€‚</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>回傳 「KPH: ã€ èµ·é¦–çš„é€²éšŽæ–‡å­—æ¬„ä½ (&amp;R)</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation>HTTP 埠:</translation>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>é è¨­åŸ ï¼š19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation>KeePassXC 會在 127.0.0.1 上監è½æ­¤åŸ </translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;警告:&lt;/b&gt;下列é¸é …å¯èƒ½æ¥µå…·é¢¨éšªï¼</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation>KeePassHTTP 已經棄用,未來我們將進行移除。&lt;br&gt;並請改用 KeePassXC-Browser ç€è¦½å™¨æ“´å……功能ï¼æœ‰é—œé·ç§»çš„說明,請造訪我們的 &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;é·ç§»æŒ‡å—&lt;/a&gt;。&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation>無法ç¶å®šåˆ°ç‰¹æ®Šæ¬Šé™åŸ </translation>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation>無法ç¶å®šåˆ° 1024 以下的特殊權é™åŸ ï¼
+將使用é è¨­åŸ  19455。</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
+ <source>%p%</source>
+ <translation>%p%</translation>
+ </message>
+ <message>
<source>Password:</source>
<translation>密碼:</translation>
</message>
<message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation>強度</translation>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation>entropy</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
<source>Character Types</source>
<translation>字元類型</translation>
</message>
@@ -1752,38 +3132,50 @@ Change them only if you know what you are doing.</source>
<translation>特殊字元</translation>
</message>
<message>
+ <source>Extended ASCII</source>
+ <translation>擴展 ASCII 碼</translation>
+ </message>
+ <message>
<source>Exclude look-alike characters</source>
<translation>去除相似的字元</translation>
</message>
<message>
- <source>Accept</source>
- <translation>接å—</translation>
+ <source>Pick characters from every group</source>
+ <translation>從æ¯ä¸€çµ„中é¸æ“‡å­—å…ƒ</translation>
</message>
<message>
- <source>%p%</source>
- <translation>%p%</translation>
+ <source>&amp;Length:</source>
+ <translation>長度 (&amp;L):</translation>
</message>
<message>
- <source>strength</source>
- <translation>強度</translation>
+ <source>Passphrase</source>
+ <translation>密語</translation>
</message>
<message>
- <source>entropy</source>
- <translation>entropy</translation>
+ <source>Wordlist:</source>
+ <translation>詞彙表:</translation>
</message>
<message>
- <source>&amp;Length:</source>
- <translation>長度 (&amp;L):</translation>
+ <source>Word Count:</source>
+ <translation>詞彙數:</translation>
</message>
<message>
- <source>Pick characters from every group</source>
- <translation>從æ¯ä¸€çµ„中é¸æ“‡å­—å…ƒ</translation>
+ <source>Word Separator:</source>
+ <translation>單詞分隔符號:</translation>
</message>
<message>
<source>Generate</source>
<translation>產生</translation>
</message>
<message>
+ <source>Copy</source>
+ <translation>複製</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>接å—</translation>
+ </message>
+ <message>
<source>Close</source>
<translation>關閉</translation>
</message>
@@ -1793,7 +3185,7 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Entropy: %1 bit</source>
- <translation type="unfinished"/>
+ <translation>資訊熵:%1 ä½å…ƒ</translation>
</message>
<message>
<source>Password Quality: %1</source>
@@ -1801,51 +3193,275 @@ Change them only if you know what you are doing.</source>
</message>
<message>
<source>Poor</source>
+ <comment>Password quality</comment>
<translation>極弱</translation>
</message>
<message>
<source>Weak</source>
+ <comment>Password quality</comment>
<translation>較弱</translation>
</message>
<message>
<source>Good</source>
+ <comment>Password quality</comment>
<translation>較好</translation>
</message>
<message>
<source>Excellent</source>
+ <comment>Password quality</comment>
<translation>極好</translation>
</message>
+</context>
+<context>
+ <name>QObject</name>
<message>
- <source>Password</source>
- <translation>密碼</translation>
+ <source>Database not opened</source>
+ <translation>資料庫未開啟</translation>
</message>
<message>
- <source>Extended ASCII</source>
- <translation>擴展 ASCII 碼</translation>
+ <source>Database hash not available</source>
+ <translation>資料庫雜湊ä¸å¯ç”¨</translation>
</message>
<message>
- <source>Passphrase</source>
- <translation>密語</translation>
+ <source>Client public key not received</source>
+ <translation>未收到用戶端公開金鑰</translation>
</message>
<message>
- <source>Wordlist:</source>
- <translation>詞彙表:</translation>
+ <source>Cannot decrypt message</source>
+ <translation>無法解密訊æ¯</translation>
</message>
<message>
- <source>Word Count:</source>
- <translation>詞彙數:</translation>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation>逾時或無法連接到 KeePassXC</translation>
</message>
<message>
- <source>Word Separator:</source>
- <translation>單詞分隔符號:</translation>
+ <source>Action cancelled or denied</source>
+ <translation>æ“作被å–消或被拒絕</translation>
</message>
<message>
- <source>Copy</source>
- <translation>複製</translation>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation>無法加密訊æ¯æˆ–未找到公開金鑰。是å¦åœ¨ KeePassXC 中啟用了 native messaging 功能?</translation>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation>KeePassXC é—œè¯å¤±æ•—,請é‡è©¦</translation>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>金鑰更改ä¸æˆåŠŸ</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>加密金鑰未被識別</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>找ä¸åˆ°å·²ä¿å­˜çš„資料庫</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation>錯誤的æ“作</translation>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>收到空消æ¯</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>未æä¾› URL</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>找ä¸åˆ°ç™»å…¥è³‡è¨Š</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation>未知的錯誤</translation>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>新增項目到資料庫</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>資料庫的路徑。</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>資料庫的金鑰檔案。</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation>路徑</translation>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>此項目的使用者å稱。</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation>使用者å稱</translation>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>此項目的網å€</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>網å€</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>æ示此項目的密碼。</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>產生此項目的密碼。</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation>欲產生的密碼長度。</translation>
+ </message>
+ <message>
+ <source>length</source>
+ <translation>長度</translation>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>欲新增的項目路徑</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>å°‡æ¢ç›®çš„密碼複製到剪貼簿。</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation>欲剪輯的項目路徑。</translation>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>清除剪貼簿之å‰ä¿å­˜å¤šä¹… (秒)。</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>編輯項目。</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>項目標題。</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation>標題</translation>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>欲編輯的項目路徑。</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>估計密碼的 entropy。</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>用於估計 entropy 的密碼。</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>å°å¯†ç¢¼åŸ·è¡Œé«˜ç´šåˆ†æžã€‚</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>æå–與列å°è³‡æ–™åº«å…§å®¹ã€‚</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>è¦æå–的資料庫路徑。</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation>æ’入密碼以解除鎖定 %1: </translation>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation>未能載入金鑰檔 %1:%2</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>警告:你正在使用未來將ä¸å†æ”¯æ´çš„舊å¼é‡‘鑰檔案格å¼ã€‚
+
+請考慮產生新的金鑰。</translation>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation>
+
+å¯ç”¨å‘½ä»¤ï¼š
+</translation>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>è¦åŸ·è¡Œçš„命令的å稱。</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>列出資料庫項目。</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation>è¦åˆ—出的群組路徑。é è¨­æ˜¯ /</translation>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>快速尋找項目。</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>æœå°‹å­—詞。</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>åˆä½µå…©å€‹è³‡æ–™åº«ã€‚</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>åˆä½µæ™‚的目標資料庫路徑。</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>åˆä½µæ™‚的來æºè³‡æ–™åº«è·¯å¾‘。</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>å°å…©å€‹è³‡æ–™åº«æª”案使用相åŒçš„èªè­‰ã€‚</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>用於åˆä½µè³‡æ–™åº«çš„金鑰檔案。</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>顯示項目資訊。</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>欲顯示的屬性å稱。此é¸é …å¯ä»¥å¤šæ¬¡æŒ‡å®šï¼Œæ¯å€‹å±¬æ€§æœƒç…§é †åºé€è¡Œé¡¯ç¤ºã€‚如果未指定任何屬性,則會給出é è¨­å±¬æ€§çš„摘è¦ã€‚</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation>屬性</translation>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>è¦é¡¯ç¤ºçš„é …ç›®å稱。</translation>
</message>
-</context>
-<context>
- <name>QObject</name>
<message>
<source>NULL device</source>
<translation>NULL è£ç½®</translation>
@@ -1869,8 +3485,28 @@ Change them only if you know what you are doing.</source>
<translation>缺少å³å¼•è™Ÿ</translation>
</message>
<message>
- <source>INTERNAL - unget lower bound exceeded</source>
- <translation type="unfinished"/>
+ <source>AES: 256-bit</source>
+ <translation>AES: 256 ä½å…ƒ</translation>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation>Twofish: 256 ä½å…ƒ</translation>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation>ChaCha20: 256 ä½å…ƒ</translation>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation>Argon2 (KDBX 4 – 推薦)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation>AES-KDF (KDBX 4)</translation>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Group</source>
@@ -1889,27 +3525,84 @@ Change them only if you know what you are doing.</source>
<translation>密碼</translation>
</message>
<message>
- <source>URL</source>
- <translation>網å€</translation>
- </message>
- <message>
<source>Notes</source>
<translation>附註</translation>
</message>
<message>
+ <source>Last Modified</source>
+ <translation>最後編輯</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>已建立</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>舊å¼ç€è¦½å™¨æ•´åˆ</translation>
+ </message>
+ <message>
<source>Browser Integration</source>
<translation>ç€è¦½å™¨æ•´åˆ</translation>
</message>
<message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
- <translation type="unfinished"/>
+ <translation>YubiKey[%1] 挑戰回應 - æ’槽 %2 - %3</translation>
</message>
<message>
<source>Press</source>
- <translation type="unfinished"/>
+ <translation>按</translation>
</message>
<message>
<source>Passive</source>
+ <translation>被動</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH 代ç†</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
<translation type="unfinished"/>
</message>
</context>
@@ -1950,8 +3643,8 @@ Change them only if you know what you are doing.</source>
<context>
<name>SearchWidget</name>
<message>
- <source>Case Sensitive</source>
- <translation>å€åˆ†å¤§å°å¯«</translation>
+ <source>Search...</source>
+ <translation>æœå°‹â€¦â€¦</translation>
</message>
<message>
<source>Search</source>
@@ -1962,8 +3655,8 @@ Change them only if you know what you are doing.</source>
<translation>清除</translation>
</message>
<message>
- <source>Search...</source>
- <translation>æœå°‹â€¦â€¦</translation>
+ <source>Case Sensitive</source>
+ <translation>å€åˆ†å¤§å°å¯«</translation>
</message>
<message>
<source>Limit search to selected group</source>
@@ -1973,50 +3666,6 @@ Change them only if you know what you are doing.</source>
<context>
<name>Service</name>
<message>
- <source>A shared encryption-key with the name &quot;%1&quot; already exists.
-Do you want to overwrite it?</source>
- <translation>已存在å為「%1ã€çš„共用加密金鑰。
-進行覆蓋?</translation>
- </message>
- <message>
- <source>Do you want to update the information in %1 - %2?</source>
- <translation>更新 %1 到 %2 的資訊?</translation>
- </message>
- <message>
- <source>The active database is locked!
-Please unlock the selected database or choose another one which is unlocked.</source>
- <translation>ç›®å‰çš„資料庫已鎖定ï¼
-請解鎖所é¸çš„資料庫或é¸æ“‡å…¶ä»–已解鎖的資料庫。</translation>
- </message>
- <message>
- <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source>
- <translation>æˆåŠŸå¾ž KeePassX/Http Settings 移除 %1 encryption-%2。</translation>
- </message>
- <message>
- <source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation>KeePassHttp Settings 中找ä¸åˆ°å…±äº«åŠ å¯†é‡‘鑰。</translation>
- </message>
- <message>
- <source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation>ç›®å‰çš„資料庫沒有 KeePassHttp Settings 項目。</translation>
- </message>
- <message>
- <source>Removing stored permissions...</source>
- <translation>正在移除所有已儲存的權é™â€¦â€¦</translation>
- </message>
- <message>
- <source>Abort</source>
- <translation>中止</translation>
- </message>
- <message>
- <source>Successfully removed permissions from %1 %2.</source>
- <translation>æˆåŠŸå¾ž %1 %2 移除權é™ã€‚</translation>
- </message>
- <message>
- <source>The active database does not contain an entry with permissions.</source>
- <translation>ç›®å‰çš„資料庫中沒有帶有權é™çš„項目。</translation>
- </message>
- <message>
<source>KeePassXC: New key association request</source>
<translation>KeePassXC:新的金鑰關è¯è«‹æ±‚</translation>
</message>
@@ -2033,33 +3682,77 @@ give it a unique name to identify and accept it.</source>
<translation>KeePassXC:覆蓋ç¾æœ‰çš„金鑰?</translation>
</message>
<message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>已存在å為「%1ã€çš„共用加密金鑰。
+進行覆蓋?</translation>
+ </message>
+ <message>
<source>KeePassXC: Update Entry</source>
<translation>KeePassXC:更新項目</translation>
</message>
<message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>更新 %1 到 %2 的資訊?</translation>
+ </message>
+ <message>
<source>KeePassXC: Database locked!</source>
<translation>KeePassXC:資料庫已鎖定ï¼</translation>
</message>
<message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>ç›®å‰çš„資料庫已鎖定ï¼
+請解鎖所é¸çš„資料庫或é¸æ“‡å…¶ä»–已解鎖的資料庫。</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed keys from database</source>
<translation>KeePassXC:從資料庫中移除金鑰</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No keys found</source>
<translation>KeePassXC:找ä¸åˆ°é‡‘é‘°</translation>
</message>
<message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation>KeePassHttp Settings 中找ä¸åˆ°å…±äº«åŠ å¯†é‡‘鑰。</translation>
+ </message>
+ <message>
<source>KeePassXC: Settings not available!</source>
<translation>KeePassXC:設定ä¸å¯ç”¨ï¼</translation>
</message>
<message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation>ç›®å‰çš„資料庫沒有 KeePassHttp Settings 項目。</translation>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>正在移除所有已儲存的權é™â€¦â€¦</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>中止</translation>
+ </message>
+ <message>
<source>KeePassXC: Removed permissions</source>
<translation>KeePassXC:已移除權é™</translation>
</message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
<translation>KeePassXC:找ä¸åˆ°å¸¶æœ‰æ¬Šé™çš„é …ç›®ï¼</translation>
</message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>ç›®å‰çš„資料庫中沒有帶有權é™çš„項目。</translation>
+ </message>
</context>
<context>
<name>SettingsWidget</name>
@@ -2083,10 +3776,26 @@ give it a unique name to identify and accept it.</source>
<context>
<name>SettingsWidgetGeneral</name>
<message>
+ <source>Basic Settings</source>
+ <translation>基本設定</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>åªèƒ½å•Ÿå‹•å–®ä¸€ KeePassXC 程å¼</translation>
+ </message>
+ <message>
<source>Remember last databases</source>
<translation>記ä½æœ€è¿‘的資料庫</translation>
</message>
<message>
+ <source>Remember last key files and security dongles</source>
+ <translation>記ä½æœ€è¿‘的金鑰檔案與安全加密狗</translation>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>啟動時載入之å‰çš„資料庫</translation>
+ </message>
+ <message>
<source>Automatically save on exit</source>
<translation>離開時,自動儲存</translation>
</message>
@@ -2095,20 +3804,28 @@ give it a unique name to identify and accept it.</source>
<translation>修改後,自動儲存</translation>
</message>
<message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>當有外部修改時自動é‡æ–°è¼‰å…¥è³‡æ–™åº«</translation>
+ </message>
+ <message>
<source>Minimize when copying to clipboard</source>
<translation>在複製到剪貼簿時最å°åŒ–</translation>
</message>
<message>
+ <source>Minimize window at application startup</source>
+ <translation>程å¼å•Ÿå‹•æ™‚視窗最å°åŒ–</translation>
+ </message>
+ <message>
<source>Use group icon on entry creation</source>
<translation>新增項目時使用群組圖示</translation>
</message>
<message>
- <source>Global Auto-Type shortcut</source>
- <translation>全域自動輸入快æ·éµ</translation>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>未變更資料時(例如:擴展群組時)ä¸è¦å°‡è³‡æ–™åº«æ¨™è¨˜ç‚ºå·²ä¿®æ”¹</translation>
</message>
<message>
- <source>Language</source>
- <translation>語言</translation>
+ <source>Hide the Details view</source>
+ <translation>éš±è—詳細資訊檢視</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -2119,66 +3836,84 @@ give it a unique name to identify and accept it.</source>
<translation>將視窗最å°åŒ–至工作列</translation>
</message>
<message>
- <source>Load previous databases on startup</source>
- <translation>啟動時載入之å‰çš„資料庫</translation>
- </message>
- <message>
- <source>Automatically reload the database when modified externally</source>
- <translation>當有外部修改時自動é‡æ–°è¼‰å…¥è³‡æ–™åº«</translation>
- </message>
- <message>
<source>Hide window to system tray instead of app exit</source>
<translation>將視窗最å°åŒ–至工作列而éžé—œé–‰ç¨‹å¼</translation>
</message>
<message>
- <source>Minimize window at application startup</source>
- <translation>程å¼å•Ÿå‹•æ™‚視窗最å°åŒ–</translation>
- </message>
- <message>
- <source>Basic Settings</source>
- <translation>基本設定</translation>
- </message>
- <message>
- <source>Remember last key files and security dongles</source>
- <translation>記ä½æœ€è¿‘的金鑰檔案與安全鎖</translation>
+ <source>Dark system tray icon</source>
+ <translation>深色系統列圖示</translation>
</message>
<message>
- <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation>未變更資料時(例如:擴展群組時)ä¸è¦å°‡è³‡æ–™åº«æ¨™è¨˜ç‚ºå·²ä¿®æ”¹</translation>
+ <source>Language</source>
+ <translation>語言</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>自動輸入</translation>
</message>
<message>
- <source>Use entry title and URL to match windows for global Auto-Type</source>
- <translation>使用項目標題與網å€ä¾†æ‰¾å°‹è‡ªå‹•è¼¸å…¥çš„目標視窗</translation>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation>使用項目標題來匹é…全域自動輸入的視窗</translation>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation>使用項目 URL 來匹é…全域自動輸入的視窗</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
<translation>在執行自動輸入å‰å§‹çµ‚è©¢å•</translation>
</message>
<message>
+ <source>Global Auto-Type shortcut</source>
+ <translation>全域自動輸入快æ·éµ</translation>
+ </message>
+ <message>
<source>Auto-Type delay</source>
<translation>自動輸入延é²</translation>
</message>
<message>
<source> ms</source>
- <translation>毫秒</translation>
+ <comment>Milliseconds</comment>
+ <translation> 毫秒</translation>
</message>
<message>
- <source>Start only a single instance of KeePassXC</source>
+ <source>Startup</source>
+ <translation>å•Ÿå‹•</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>檔案管ç†</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
<translation type="unfinished"/>
</message>
+ <message>
+ <source>Entry Management</source>
+ <translation>項目管ç†</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
<message>
+ <source>Timeouts</source>
+ <translation>超時</translation>
+ </message>
+ <message>
<source>Clear clipboard after</source>
<translation>多久後清除剪貼簿</translation>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> 秒</translation>
</message>
<message>
@@ -2186,8 +3921,12 @@ give it a unique name to identify and accept it.</source>
<translation>多久沒有動作之後鎖定資料庫</translation>
</message>
<message>
- <source>Show passwords in cleartext by default</source>
- <translation>é è¨­ä»¥æ˜Žç¢¼é¡¯ç¤ºå¯†ç¢¼</translation>
+ <source>Convenience</source>
+ <translation>便利</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>當工作階段鎖定或蓋上螢幕時鎖定資料庫</translation>
</message>
<message>
<source>Lock databases after minimizing the window</source>
@@ -2198,16 +3937,16 @@ give it a unique name to identify and accept it.</source>
<translation>顯示密碼時ä¸éœ€è¦é‡è¤‡è¼¸å…¥å¯†ç¢¼</translation>
</message>
<message>
- <source>Timeouts</source>
- <translation>超時</translation>
+ <source>Show passwords in cleartext by default</source>
+ <translation>é è¨­ä»¥æ˜Žç¢¼é¡¯ç¤ºå¯†ç¢¼</translation>
</message>
<message>
- <source>Convenience</source>
- <translation>便利</translation>
+ <source>Hide passwords in the preview panel</source>
+ <translation>在é è¦½é¢æ¿ä¸­éš±è—密碼</translation>
</message>
<message>
- <source>Lock databases when session is locked or lid is closed</source>
- <translation>當工作階段鎖定或蓋上螢幕時鎖定資料庫</translation>
+ <source>Hide entry notes by default</source>
+ <translation>é è¨­éš±è—項目備註</translation>
</message>
<message>
<source>Privacy</source>
@@ -2217,6 +3956,10 @@ give it a unique name to identify and accept it.</source>
<source>Use Google as fallback for downloading website icons</source>
<translation>使用 Google æœå°‹ä½œç‚ºä¸‹è¼‰ç¶²ç«™åœ–示的備案</translation>
</message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>SetupTotpDialog</name>
@@ -2229,6 +3972,14 @@ give it a unique name to identify and accept it.</source>
<translation>金鑰:</translation>
</message>
<message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>é è¨­ RFC 6238 token 設定</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam token 設定</translation>
+ </message>
+ <message>
<source>Use custom settings</source>
<translation>使用自訂設定</translation>
</message>
@@ -2254,6 +4005,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source> sec</source>
+ <comment>Seconds</comment>
<translation> 秒</translation>
</message>
</context>
@@ -2290,10 +4042,6 @@ give it a unique name to identify and accept it.</source>
<context>
<name>WelcomeWidget</name>
<message>
- <source>Welcome to KeePassXC</source>
- <translation>歡迎來到 KeePassXC</translation>
- </message>
- <message>
<source>Start storing your passwords securely in a KeePassXC database</source>
<translation>開始安全的ä¿å­˜ä½ çš„密碼到 KeePassXC 資料庫</translation>
</message>
@@ -2317,92 +4065,48 @@ give it a unique name to identify and accept it.</source>
<source>Recent databases</source>
<translation>近期的資料庫</translation>
</message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>歡迎來到 KeePassXC %1</translation>
+ </message>
</context>
<context>
<name>main</name>
<message>
- <source>path to a custom config file</source>
- <translation>自訂設定檔路徑</translation>
- </message>
- <message>
- <source>key file of the database</source>
- <translation>資料庫的金鑰檔案</translation>
- </message>
- <message>
- <source>KeePassXC - cross-platform password manager</source>
- <translation>KeePassXC - 跨平å°çš„密碼管ç†å·¥å…·</translation>
- </message>
- <message>
- <source>read password of the database from stdin</source>
- <translation>從 stdin 讀å–資料庫密碼</translation>
- </message>
- <message>
- <source>filenames of the password databases to open (*.kdbx)</source>
- <translation>欲開啟的密碼資料庫檔å (*.kdbx)</translation>
- </message>
- <message>
- <source>Copy a password to the clipboard</source>
- <translation>將密碼複製到剪貼簿</translation>
+ <source>Remove an entry from the database.</source>
+ <translation>從資料庫中移除項目。</translation>
</message>
<message>
<source>Path of the database.</source>
<translation>資料庫的路徑。</translation>
</message>
<message>
- <source>Use a GUI prompt unlocking the database.</source>
- <translation>使用 GUI æ示來解鎖資料庫。</translation>
- </message>
- <message>
- <source>Name of the entry to clip.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <source>Extract and print the content of a database.</source>
- <translation>æå–與列å°è³‡æ–™åº«å…§å®¹ã€‚</translation>
- </message>
- <message>
- <source>Path of the database to extract.</source>
- <translation>è¦æå–的資料庫路徑。</translation>
+ <source>Path of the entry to remove.</source>
+ <translation>欲移除的項目路徑。</translation>
</message>
<message>
- <source>Name of the command to execute.</source>
- <translation>è¦åŸ·è¡Œçš„命令的å稱。</translation>
- </message>
- <message>
- <source>List database entries.</source>
- <translation>列出資料庫項目。</translation>
- </message>
- <message>
- <source>Path of the group to list. Default is /</source>
- <translation>è¦åˆ—出的群組路徑。é è¨­æ˜¯ /</translation>
- </message>
- <message>
- <source>Print the UUIDs of the entries and groups.</source>
- <translation>列å°é …目與群組的 UUID</translation>
- </message>
- <message>
- <source>Merge two databases.</source>
- <translation>åˆä½µå…©å€‹è³‡æ–™åº«ã€‚</translation>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - 跨平å°çš„密碼管ç†å·¥å…·</translation>
</message>
<message>
- <source>Path of the database to merge into.</source>
- <translation>åˆä½µæ™‚的目標資料庫路徑。</translation>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>欲開啟的密碼資料庫檔å (*.kdbx)</translation>
</message>
<message>
- <source>Path of the database to merge from.</source>
- <translation>åˆä½µæ™‚的來æºè³‡æ–™åº«è·¯å¾‘。</translation>
+ <source>path to a custom config file</source>
+ <translation>自訂設定檔路徑</translation>
</message>
<message>
- <source>Use the same password for both database files.</source>
- <translation>在這兩個資料庫檔案使用相åŒçš„密碼。</translation>
+ <source>key file of the database</source>
+ <translation>資料庫的金鑰檔案</translation>
</message>
<message>
- <source>Show a password.</source>
- <translation>顯示密碼。</translation>
+ <source>read password of the database from stdin</source>
+ <translation>從 stdin 讀å–資料庫密碼</translation>
</message>
<message>
- <source>Name of the entry to show.</source>
- <translation>è¦é¡¯ç¤ºçš„é …ç›®å稱。</translation>
+ <source>Parent window handle</source>
+ <translation>父層視窗控制</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/update.sh b/share/translations/update.sh
index 134d7b996..c8b7da40c 100755
--- a/share/translations/update.sh
+++ b/share/translations/update.sh
@@ -32,10 +32,12 @@ elif [ "$1" == "update" ]; then
PULL=false
elif [ "$1" != "" ]; then
echo "Unknown command '${1}'"
- echo "Usage: $(basename $0) [update|pull|push]"
+ echo "Usage: $(basename $0) [update|pull|push] [additional tx options]"
exit 1
fi
+shift
+
cd "${BASEDIR}/../.."
if $UPDATE; then
@@ -47,18 +49,17 @@ if $UPDATE; then
LUPDATE=lupdate
fi
$LUPDATE -no-ui-lines -disable-heuristic similartext -locations none -no-obsolete src -ts share/translations/keepassx_en.ts
- $LUPDATE -no-ui-lines -disable-heuristic similartext -locations none -pluralonly src -ts share/translations/keepassx_en_plurals.ts
echo
fi
if $PUSH; then
echo "Pushing English source files to Transifex..."
- tx push -s
+ tx push -s $@
echo
fi
if $PULL; then
echo "Pulling translations from Transifex..."
- tx pull -af --minimum-perc=40
+ tx pull -af --minimum-perc=40 $@
echo
fi
diff --git a/share/windows/wix-banner.bmp b/share/windows/wix-banner.bmp
new file mode 100644
index 000000000..14a13b8f1
--- /dev/null
+++ b/share/windows/wix-banner.bmp
Binary files differ
diff --git a/share/windows/wix-dialog.bmp b/share/windows/wix-dialog.bmp
new file mode 100644
index 000000000..b26ad1e25
--- /dev/null
+++ b/share/windows/wix-dialog.bmp
Binary files differ
diff --git a/share/windows/wix-patch.xml b/share/windows/wix-patch.xml
new file mode 100644
index 000000000..1c1d222a9
--- /dev/null
+++ b/share/windows/wix-patch.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CPackWiXPatch>
+ <CPackWiXFragment Id="CM_FP_KeePassXC.exe">
+ <Shortcut Id="CM_SP_KeePassXC.exe" Directory="ProgramMenuFolder"
+ Name="KeePassXC" Icon="ProductIcon.ico"
+ WorkingDirectory="INSTALL_ROOT" Advertise="yes" />
+ </CPackWiXFragment>
+</CPackWiXPatch>
diff --git a/share/windows/wix-template.xml b/share/windows/wix-template.xml
new file mode 100644
index 000000000..44cab1641
--- /dev/null
+++ b/share/windows/wix-template.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?include "cpack_variables.wxi"?>
+
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
+ xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
+ RequiredVersion="3.6.3303.0">
+
+ <Product Id="$(var.CPACK_WIX_PRODUCT_GUID)"
+ Name="$(var.CPACK_PACKAGE_NAME)"
+ Language="1033"
+ Version="$(var.CPACK_PACKAGE_VERSION)"
+ Manufacturer="$(var.CPACK_PACKAGE_VENDOR)"
+ UpgradeCode="$(var.CPACK_WIX_UPGRADE_GUID)">
+
+ <Package InstallScope="perMachine" InstallerVersion="301" Compressed="yes"/>
+
+ <Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>
+
+ <MajorUpgrade
+ Schedule="afterInstallInitialize"
+ AllowSameVersionUpgrades="yes"
+ DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."/>
+
+ <WixVariable Id="WixUILicenseRtf" Value="$(var.CPACK_WIX_LICENSE_RTF)"/>
+ <Property Id="WIXUI_INSTALLDIR" Value="INSTALL_ROOT"/>
+
+ <?ifdef CPACK_WIX_PRODUCT_ICON?>
+ <Property Id="ARPPRODUCTICON">ProductIcon.ico</Property>
+ <Icon Id="ProductIcon.ico" SourceFile="$(var.CPACK_WIX_PRODUCT_ICON)"/>
+ <?endif?>
+
+ <?ifdef CPACK_WIX_UI_BANNER?>
+ <WixVariable Id="WixUIBannerBmp" Value="$(var.CPACK_WIX_UI_BANNER)"/>
+ <?endif?>
+
+ <?ifdef CPACK_WIX_UI_DIALOG?>
+ <WixVariable Id="WixUIDialogBmp" Value="$(var.CPACK_WIX_UI_DIALOG)"/>
+ <?endif?>
+
+ <FeatureRef Id="ProductFeature"/>
+
+ <UIRef Id="$(var.CPACK_WIX_UI_REF)" />
+
+ <?include "properties.wxi"?>
+ <?include "product_fragment.wxi"?>
+
+ <DirectoryRef Id="TARGETDIR">
+ <Directory Id="ProgramMenuFolder" />
+ </DirectoryRef>
+
+ <Property Id="WixSilentExecCmdLine" Value='"Taskkill" /IM KeePassXC.exe'/>
+ <CustomAction Id="KillKeePassXCInstall" BinaryKey="WixCA" DllEntry="WixSilentExec" Execute="immediate" Return="ignore"/>
+ <CustomAction Id="KillKeePassXCUninstall" BinaryKey="WixCA" DllEntry="WixSilentExec" Execute="immediate" Return="ignore"/>
+
+ <Property Id="WixQuietExecCmdLine" Value='"Taskkill" /IM keepassxc-proxy.exe /F'/>
+ <CustomAction Id="KillProxyInstall" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="immediate" Return="ignore"/>
+ <CustomAction Id="KillProxyUninstall" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="immediate" Return="ignore"/>
+
+ <InstallExecuteSequence>
+ <Custom Action="KillKeePassXCInstall" After="InstallInitialize"/>
+ <Custom Action="KillProxyInstall" After="InstallInitialize"/>
+ <Custom Action="KillKeePassXCUninstall" Before="InstallValidate">Installed</Custom>
+ <Custom Action="KillProxyUninstall" Before="InstallValidate">Installed</Custom>
+ </InstallExecuteSequence>
+ </Product>
+</Wix>
diff --git a/snapcraft.yaml b/snapcraft.yaml
index b8d9747ec..f4b906619 100644
--- a/snapcraft.yaml
+++ b/snapcraft.yaml
@@ -1,5 +1,5 @@
name: keepassxc
-version: 2.2.4
+version: 2.3.0
grade: stable
summary: Community-driven port of the Windows application “KeePass Password Safeâ€
description: |
@@ -16,6 +16,9 @@ apps:
cli:
command: keepassxc-cli
plugs: [gsettings, home, removable-media, raw-usb]
+ proxy:
+ command: keepassxc-proxy
+ plugs: [home]
parts:
keepassxc:
@@ -26,9 +29,7 @@ parts:
- -DCMAKE_INSTALL_PREFIX=/usr
- -DKEEPASSXC_DIST_TYPE=Snap
- -DWITH_TESTS=OFF
- - -DWITH_XC_AUTOTYPE=ON
- - -DWITH_XC_HTTP=ON
- - -DWITH_XC_YUBIKEY=ON
+ - -DWITH_XC_ALL=ON
build-packages:
- g++
- libgcrypt20-dev
@@ -41,8 +42,15 @@ parts:
- libxtst-dev
- libyubikey-dev
- libykpers-1-dev
+ - libcurl4-openssl-dev
+ - libsodium-dev
+ stage-packages:
+ - dbus
+ - qttranslations5-l10n # common translations
install: |
sed -i 's|Icon=keepassxc|Icon=${SNAP}/usr/share/icons/hicolor/256x256/apps/keepassxc.png|g' $SNAPCRAFT_PART_INSTALL/usr/share/applications/org.keepassxc.KeePassXC.desktop
+ organize:
+ usr/share/qt5/translations/*.qm: usr/share/keepassxc/translations/
after: [desktop-qt5]
# Redefine desktop-qt5 stage packages to work with Ubuntu 17.04
@@ -52,19 +60,11 @@ parts:
- ttf-ubuntu-font-family
- dmz-cursor-theme
- light-themes
+ - adwaita-icon-theme
+ - gnome-themes-standard
- shared-mime-info
- libqt5gui5
- libgdk-pixbuf2.0-0
- libqt5svg5 # for loading icon themes which are svg
- locales-all
-
- # Overcome limitation in snapd to support URL loading (CTRL+U)
- # client needs to install "snapd-xdg-open" on their system
- snapd-xdg-open:
- source: https://github.com/ubuntu-core/snapd-xdg-open.git
- source-depth: 1
- plugin: nil
- install: |
- install -D -t $SNAPCRAFT_PART_INSTALL/usr/bin/ data/xdg-open
- stage-packages:
- - dbus
+ - xdg-user-dirs
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 5255186ea..69526967c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
-# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -27,15 +27,24 @@ if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
set(GIT_DESCRIBE "")
endif()
+find_library(ZXCVBN_LIBRARIES zxcvbn)
+if(NOT ZXCVBN_LIBRARIES)
+ add_library(zxcvbn STATIC zxcvbn/zxcvbn.c)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zxcvbn)
+ set(ZXCVBN_LIBRARIES zxcvbn)
+endif(NOT ZXCVBN_LIBRARIES)
+
configure_file(version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h @ONLY)
set(keepassx_SOURCES
core/AutoTypeAssociations.cpp
+ core/AsyncTask.h
+ core/AutoTypeMatch.cpp
core/Config.cpp
core/CsvParser.cpp
+ core/CustomData.cpp
core/Database.cpp
core/DatabaseIcons.cpp
- core/Endian.cpp
core/Entry.cpp
core/EntryAttachments.cpp
core/EntryAttributes.cpp
@@ -55,30 +64,39 @@ set(keepassx_SOURCES
core/ScreenLockListenerPrivate.cpp
core/TimeDelta.cpp
core/TimeInfo.cpp
- core/ToDbExporter.cpp
core/Tools.cpp
core/Translator.cpp
core/Uuid.cpp
core/Base32.h
core/Base32.cpp
- cli/PasswordInput.cpp
- cli/PasswordInput.h
+ cli/Utils.cpp
+ cli/Utils.h
crypto/Crypto.cpp
crypto/CryptoHash.cpp
crypto/Random.cpp
crypto/SymmetricCipher.cpp
crypto/SymmetricCipherBackend.h
crypto/SymmetricCipherGcrypt.cpp
+ crypto/kdf/Kdf.cpp
+ crypto/kdf/Kdf_p.h
+ crypto/kdf/AesKdf.cpp
+ crypto/kdf/Argon2Kdf.cpp
format/CsvExporter.cpp
format/KeePass1.h
format/KeePass1Reader.cpp
- format/KeePass2.h
+ format/KeePass2.cpp
format/KeePass2RandomStream.cpp
- format/KeePass2Reader.cpp
format/KeePass2Repair.cpp
+ format/KdbxReader.cpp
+ format/KdbxWriter.cpp
+ format/KdbxXmlReader.cpp
+ format/KeePass2Reader.cpp
format/KeePass2Writer.cpp
- format/KeePass2XmlReader.cpp
- format/KeePass2XmlWriter.cpp
+ format/Kdbx3Reader.cpp
+ format/Kdbx3Writer.cpp
+ format/Kdbx4Reader.cpp
+ format/Kdbx4Writer.cpp
+ format/KdbxXmlWriter.cpp
gui/AboutDialog.cpp
gui/Application.cpp
gui/CategoryListWidget.cpp
@@ -91,12 +109,14 @@ set(keepassx_SOURCES
gui/DatabaseTabWidget.cpp
gui/DatabaseWidget.cpp
gui/DatabaseWidgetStateSync.cpp
+ gui/DetailsWidget.cpp
gui/DialogyWidget.cpp
gui/DragTabBar.cpp
gui/EditWidget.cpp
gui/EditWidgetIcons.cpp
gui/EditWidgetProperties.cpp
gui/FileDialog.cpp
+ gui/Font.cpp
gui/IconModels.cpp
gui/KeePass1OpenWidget.cpp
gui/KMessageWidget.cpp
@@ -114,13 +134,17 @@ set(keepassx_SOURCES
gui/UnlockDatabaseWidget.cpp
gui/UnlockDatabaseDialog.cpp
gui/WelcomeWidget.cpp
+ gui/widgets/ElidedLabel.cpp
gui/csvImport/CsvImportWidget.cpp
gui/csvImport/CsvImportWizard.cpp
gui/csvImport/CsvParserModel.cpp
gui/entry/AutoTypeAssociationsModel.cpp
+ gui/entry/AutoTypeMatchModel.cpp
+ gui/entry/AutoTypeMatchView.cpp
gui/entry/EditEntryWidget.cpp
gui/entry/EditEntryWidget_p.h
gui/entry/EntryAttachmentsModel.cpp
+ gui/entry/EntryAttachmentsWidget.cpp
gui/entry/EntryAttributesModel.cpp
gui/entry/EntryHistoryModel.cpp
gui/entry/EntryModel.cpp
@@ -129,13 +153,13 @@ set(keepassx_SOURCES
gui/group/GroupModel.cpp
gui/group/GroupView.cpp
keys/CompositeKey.cpp
- keys/CompositeKey_p.h
keys/drivers/YubiKey.h
keys/FileKey.cpp
keys/Key.h
keys/PasswordKey.cpp
keys/YkChallengeResponseKey.cpp
streams/HashedBlockStream.cpp
+ streams/HmacBlockStream.cpp
streams/LayeredStream.cpp
streams/qtiocompressor.cpp
streams/StoreDataStream.cpp
@@ -147,12 +171,15 @@ if(APPLE)
set(keepassx_SOURCES ${keepassx_SOURCES}
core/ScreenLockListenerMac.h
core/ScreenLockListenerMac.cpp
+ core/MacPasteboard.h
+ core/MacPasteboard.cpp
)
endif()
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
set(keepassx_SOURCES ${keepassx_SOURCES}
core/ScreenLockListenerDBus.h
core/ScreenLockListenerDBus.cpp
+ gui/MainWindowAdaptor.cpp
)
endif()
if(MINGW)
@@ -166,18 +193,33 @@ set(keepassx_SOURCES_MAINEXE
main.cpp
)
-add_feature_info(AutoType WITH_XC_AUTOTYPE "Automatic password typing")
-add_feature_info(KeePassHTTP WITH_XC_HTTP "Browser integration compatible with ChromeIPass and PassIFox")
+add_feature_info(Auto-Type WITH_XC_AUTOTYPE "Automatic password typing")
+add_feature_info(Networking WITH_XC_NETWORKING "Compile KeePassXC with network access code (e.g. for downloading website icons)")
+add_feature_info(KeePassXC-Browser WITH_XC_BROWSER "Browser integration with KeePassXC-Browser")
+add_feature_info(KeePassHTTP WITH_XC_HTTP "Browser integration compatible with ChromeIPass and PassIFox (deprecated, implies Networking)")
+add_feature_info(SSHAgent WITH_XC_SSHAGENT "SSH agent integration compatible with KeeAgent")
add_feature_info(YubiKey WITH_XC_YUBIKEY "YubiKey HMAC-SHA1 challenge-response")
add_subdirectory(http)
-if(WITH_XC_HTTP)
- set(keepasshttp_LIB keepasshttp qhttp Qt5::Network)
+if(WITH_XC_NETWORKING)
+ find_package(CURL REQUIRED)
+endif()
+
+set(BROWSER_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/browser)
+add_subdirectory(browser)
+add_subdirectory(proxy)
+if(WITH_XC_BROWSER)
+ set(keepassxcbrowser_LIB keepassxcbrowser)
endif()
add_subdirectory(autotype)
add_subdirectory(cli)
+add_subdirectory(sshagent)
+if(WITH_XC_SSHAGENT)
+ set(sshagent_LIB sshagent)
+endif()
+
set(autotype_SOURCES
core/Tools.cpp
autotype/AutoType.cpp
@@ -203,32 +245,34 @@ else()
list(APPEND keepassx_SOURCES keys/drivers/YubiKeyStub.cpp)
endif()
-add_library(zxcvbn STATIC zxcvbn/zxcvbn.cpp)
-target_link_libraries(zxcvbn)
-
add_library(autotype STATIC ${autotype_SOURCES})
target_link_libraries(autotype Qt5::Core Qt5::Widgets)
-set(autotype_LIB autotype)
-
add_library(keepassx_core STATIC ${keepassx_SOURCES})
set_target_properties(keepassx_core PROPERTIES COMPILE_DEFINITIONS KEEPASSX_BUILDING_CORE)
target_link_libraries(keepassx_core
- ${keepasshttp_LIB}
- ${autotype_LIB}
- ${YUBIKEY_LIBRARIES}
- zxcvbn
+ autotype
+ ${keepassxchttp_LIB}
+ ${keepassxcbrowser_LIB}
+ ${sshagent_LIB}
Qt5::Core
Qt5::Network
Qt5::Concurrent
Qt5::Widgets
+ ${CURL_LIBRARIES}
+ ${YUBIKEY_LIBRARIES}
+ ${ZXCVBN_LIBRARIES}
+ ${ARGON2_LIBRARIES}
${GCRYPT_LIBRARIES}
${GPGERROR_LIBRARIES}
${ZLIB_LIBRARIES})
if(APPLE)
target_link_libraries(keepassx_core "-framework Foundation")
+ if(Qt5MacExtras_FOUND)
+ target_link_libraries(keepassx_core Qt5::MacExtras)
+ endif()
endif()
if (UNIX AND NOT APPLE)
target_link_libraries(keepassx_core Qt5::DBus)
@@ -259,13 +303,7 @@ if(APPLE AND WITH_APP_BUNDLE)
set_target_properties(${PROGNAME} PROPERTIES
MACOSX_BUNDLE ON
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
-endif()
-
-install(TARGETS ${PROGNAME}
- BUNDLE DESTINATION . COMPONENT Runtime
- RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT Runtime)
-if(APPLE AND WITH_APP_BUNDLE)
if(QT_MAC_USE_COCOA AND EXISTS "${QT_LIBRARY_DIR}/Resources/qt_menu.nib")
install(DIRECTORY "${QT_LIBRARY_DIR}/Resources/qt_menu.nib"
DESTINATION "${DATA_INSTALL_DIR}")
@@ -273,22 +311,25 @@ if(APPLE AND WITH_APP_BUNDLE)
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_FORMAT "UDBZ")
+ set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/share/macosx/DS_Store.in")
+ set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/share/macosx/background.tiff")
set(CPACK_DMG_VOLUME_NAME "${PROGNAME}")
set(CPACK_SYSTEM_NAME "OSX")
set(CPACK_STRIP_FILES ON)
set(CPACK_PACKAGE_FILE_NAME "${PROGNAME}-${KEEPASSXC_VERSION}")
include(CPack)
- if(NOT DEFINED QT_BINARY_DIR)
- set(QT_BINARY_DIR "/usr/local/opt/qt5/bin" CACHE PATH "QT binary folder")
- endif()
add_custom_command(TARGET ${PROGNAME}
POST_BUILD
- COMMAND ${QT_BINARY_DIR}/macdeployqt ${PROGNAME}.app
+ COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
COMMENT "Deploying app bundle")
endif()
+install(TARGETS ${PROGNAME}
+ BUNDLE DESTINATION . COMPONENT Runtime
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT Runtime)
+
if(MINGW)
if(${CMAKE_SIZEOF_VOID_P} EQUAL "8")
set(OUTPUT_FILE_POSTFIX "Win64")
@@ -296,14 +337,23 @@ if(MINGW)
set(OUTPUT_FILE_POSTFIX "Win32")
endif()
+ # We have to copy the license file in the configuration phase.
+ # CMake checks that CPACK_RESOURCE_FILE_LICENSE actually exists and
+ # we have to copy it because WiX needs it to have a .txt extension.
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy
+ "${CMAKE_SOURCE_DIR}/LICENSE.GPL-2"
+ "${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt")
+
+ string(REGEX REPLACE "-snapshot$" "" KEEPASSXC_VERSION_CLEAN ${KEEPASSXC_VERSION})
+
set(CPACK_GENERATOR "ZIP;NSIS")
set(CPACK_STRIP_FILES ON)
set(CPACK_PACKAGE_FILE_NAME "${PROGNAME}-${KEEPASSXC_VERSION}-${OUTPUT_FILE_POSTFIX}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROGNAME})
- set(CPACK_PACKAGE_VERSION ${KEEPASSXC_VERSION})
+ set(CPACK_PACKAGE_VERSION ${KEEPASSXC_VERSION_CLEAN})
set(CPACK_PACKAGE_VENDOR "${PROGNAME} Team")
string(REGEX REPLACE "/" "\\\\\\\\" CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share/windows/installer-header.bmp")
- set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.GPL-2")
+ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/share/windows/keepassxc.ico")
set(CPACK_NSIS_MUI_UNIICON "${CPACK_NSIS_MUI_ICON}")
@@ -312,10 +362,22 @@ if(MINGW)
set(CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP "${CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP}")
set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROGNAME}.lnk' '$INSTDIR\\\\${PROGNAME}.exe'")
set(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete '$SMPROGRAMS\\\\$START_MENU\\\\${PROGNAME}.lnk'")
+ set(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "ExecWait 'Taskkill /IM KeePassXC.exe'")
+ set(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS}\nExecWait 'Taskkill /IM keepassxc-proxy.exe /F'")
+ set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecWait 'Taskkill /IM KeePassXC.exe'")
+ set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\nExecWait 'Taskkill /IM keepassxc-proxy.exe /F'")
set(CPACK_NSIS_URL_INFO_ABOUT "https://keepassxc.org")
set(CPACK_NSIS_DISPLAY_NAME ${PROGNAME})
set(CPACK_NSIS_PACKAGE_NAME "${PROGNAME} v${KEEPASSXC_VERSION}")
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "../${PROGNAME}.exe")
+ set(CPACK_WIX_UPGRADE_GUID 88785A72-3EAE-4F29-89E3-BC6B19BA9A5B)
+ set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/share/windows/keepassxc.ico")
+ set(CPACK_WIX_UI_BANNER "${CMAKE_SOURCE_DIR}/share/windows/wix-banner.bmp")
+ set(CPACK_WIX_UI_DIALOG "${CMAKE_SOURCE_DIR}/share/windows/wix-dialog.bmp")
+ set(CPACK_WIX_TEMPLATE "${CMAKE_SOURCE_DIR}/share/windows/wix-template.xml")
+ set(CPACK_WIX_PATCH_FILE "${CMAKE_SOURCE_DIR}/share/windows/wix-patch.xml")
+ set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "https://keepassxc.org")
+ set(CPACK_WIX_EXTENSIONS "WixUtilExtension.dll")
include(CPack)
install(CODE "
@@ -324,8 +386,25 @@ if(MINGW)
include(DeployQt4)
install_qt4_executable(${PROGNAME}.exe)
- add_custom_command(TARGET ${PROGNAME} POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${Qt5Core_DIR}/../../../share/qt5/plugins/platforms/qwindows$<$<CONFIG:Debug>:d>.dll
- $<TARGET_FILE_DIR:${PROGNAME}>)
- install(FILES $<TARGET_FILE_DIR:${PROGNAME}>/qwindows$<$<CONFIG:Debug>:d>.dll DESTINATION "platforms")
+
+ # install Qt5 plugins
+ set(PLUGINS_DIR ${Qt5_PREFIX}/share/qt5/plugins)
+ install(FILES
+ ${PLUGINS_DIR}/platforms/qwindows$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/platforms/qdirect2d$<$<CONFIG:Debug>:d>.dll
+ DESTINATION "platforms")
+ install(FILES ${PLUGINS_DIR}/styles/qwindowsvistastyle$<$<CONFIG:Debug>:d>.dll DESTINATION "styles")
+ install(FILES ${PLUGINS_DIR}/platforminputcontexts/qtvirtualkeyboardplugin$<$<CONFIG:Debug>:d>.dll DESTINATION "platforminputcontexts")
+ install(FILES ${PLUGINS_DIR}/iconengines/qsvgicon$<$<CONFIG:Debug>:d>.dll DESTINATION "iconengines")
+ install(FILES
+ ${PLUGINS_DIR}/imageformats/qgif$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qicns$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qico$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qjpeg$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qsvg$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qwebp$<$<CONFIG:Debug>:d>.dll
+ DESTINATION "imageformats")
+
+ # install CA cert chains
+ install(FILES ${Qt5_PREFIX}/ssl/certs/ca-bundle.crt DESTINATION "ssl/certs")
endif()
diff --git a/src/autotype/AutoType.cpp b/src/autotype/AutoType.cpp
index 46d6687d3..92dab488a 100644
--- a/src/autotype/AutoType.cpp
+++ b/src/autotype/AutoType.cpp
@@ -20,12 +20,14 @@
#include <QApplication>
#include <QPluginLoader>
+#include <QRegularExpression>
#include "config-keepassx.h"
#include "autotype/AutoTypePlatformPlugin.h"
#include "autotype/AutoTypeSelectDialog.h"
#include "autotype/WildcardMatcher.h"
+#include "core/AutoTypeMatch.h"
#include "core/Config.h"
#include "core/Database.h"
#include "core/Entry.h"
@@ -39,7 +41,6 @@ AutoType* AutoType::m_instance = nullptr;
AutoType::AutoType(QObject* parent, bool test)
: QObject(parent)
- , m_inAutoType(false)
, m_autoTypeDelay(0)
, m_currentGlobalKey(static_cast<Qt::Key>(0))
, m_currentGlobalModifiers(0)
@@ -54,17 +55,16 @@ AutoType::AutoType(QObject* parent, bool test)
QString pluginName = "keepassx-autotype-";
if (!test) {
pluginName += QApplication::platformName();
- }
- else {
+ } else {
pluginName += "test";
}
QString pluginPath = filePath()->pluginPath(pluginName);
if (!pluginPath.isEmpty()) {
- #ifdef WITH_XC_AUTOTYPE
+#ifdef WITH_XC_AUTOTYPE
loadPlugin(pluginPath);
- #endif
+#endif
}
connect(qApp, SIGNAL(aboutToQuit()), SLOT(unloadPlugin()));
@@ -91,8 +91,7 @@ void AutoType::loadPlugin(const QString& pluginPath)
if (m_plugin->isAvailable()) {
m_executor = m_plugin->createExecutor();
connect(pluginInstance, SIGNAL(globalShortcutTriggered()), SIGNAL(globalShortcutTriggered()));
- }
- else {
+ } else {
unloadPlugin();
}
}
@@ -103,6 +102,19 @@ void AutoType::loadPlugin(const QString& pluginPath)
}
}
+void AutoType::unloadPlugin()
+{
+ if (m_executor) {
+ delete m_executor;
+ m_executor = nullptr;
+ }
+
+ if (m_plugin) {
+ m_plugin->unload();
+ m_plugin = nullptr;
+ }
+}
+
AutoType* AutoType::instance()
{
if (!m_instance) {
@@ -128,29 +140,76 @@ QStringList AutoType::windowTitles()
return m_plugin->windowTitles();
}
-void AutoType::performAutoType(const Entry* entry, QWidget* hideWindow, const QString& customSequence, WId window)
+void AutoType::resetInAutoType()
{
- if (m_inAutoType || !m_plugin) {
- return;
+ m_inAutoType.unlock();
+
+ emit autotypeRejected();
+}
+
+void AutoType::raiseWindow()
+{
+#if defined(Q_OS_MAC)
+ m_plugin->raiseOwnWindow();
+#endif
+}
+
+bool AutoType::registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers)
+{
+ Q_ASSERT(key);
+ Q_ASSERT(modifiers);
+
+ if (!m_plugin) {
+ return false;
}
- m_inAutoType = true;
- QString sequence;
- if (customSequence.isEmpty()) {
- sequence = autoTypeSequence(entry);
+ if (key != m_currentGlobalKey || modifiers != m_currentGlobalModifiers) {
+ if (m_currentGlobalKey && m_currentGlobalModifiers) {
+ m_plugin->unregisterGlobalShortcut(m_currentGlobalKey, m_currentGlobalModifiers);
+ }
+
+ if (m_plugin->registerGlobalShortcut(key, modifiers)) {
+ m_currentGlobalKey = key;
+ m_currentGlobalModifiers = modifiers;
+ return true;
+ }
+ return false;
}
- else {
- sequence = customSequence;
+ return true;
+}
+
+void AutoType::unregisterGlobalShortcut()
+{
+ if (m_plugin && m_currentGlobalKey && m_currentGlobalModifiers) {
+ m_plugin->unregisterGlobalShortcut(m_currentGlobalKey, m_currentGlobalModifiers);
}
+}
- sequence.replace("{{}", "{LEFTBRACE}");
- sequence.replace("{}}", "{RIGHTBRACE}");
+int AutoType::callEventFilter(void* event)
+{
+ if (!m_plugin) {
+ return -1;
+ }
+
+ return m_plugin->platformEventFilter(event);
+}
+
+/**
+ * Core Autotype function that will execute actions
+ */
+void AutoType::executeAutoTypeActions(const Entry* entry, QWidget* hideWindow, const QString& sequence, WId window)
+{
+ // no edit to the sequence beyond this point
+ if (!verifyAutoTypeSyntax(sequence)) {
+ emit autotypeRejected();
+ return;
+ }
QList<AutoTypeAction*> actions;
ListDeleter<AutoTypeAction*> actionsDeleter(&actions);
if (!parseActions(sequence, entry, actions)) {
- m_inAutoType = false; // TODO: make this automatic
+ emit autotypeRejected();
return;
}
@@ -173,19 +232,49 @@ void AutoType::performAutoType(const Entry* entry, QWidget* hideWindow, const QS
for (AutoTypeAction* action : asConst(actions)) {
if (m_plugin->activeWindow() != window) {
qWarning("Active window changed, interrupting auto-type.");
- break;
+ emit autotypeRejected();
+ return;
}
action->accept(m_executor);
QCoreApplication::processEvents(QEventLoop::AllEvents, 10);
}
- m_inAutoType = false;
+ // emit signal only if autotype performed correctly
+ emit autotypePerformed();
+}
+
+/**
+ * Single Autotype entry-point function
+ * Perfom autotype sequence in the active window
+ */
+void AutoType::performAutoType(const Entry* entry, QWidget* hideWindow)
+{
+ if (!m_plugin) {
+ return;
+ }
+
+ QList<QString> sequences = autoTypeSequences(entry);
+ if (sequences.isEmpty()) {
+ return;
+ }
+
+ if (!m_inAutoType.tryLock()) {
+ return;
+ }
+
+ executeAutoTypeActions(entry, hideWindow, sequences.first());
+
+ m_inAutoType.unlock();
}
+/**
+ * Global Autotype entry-point function
+ * Perform global Auto-Type on the active window
+ */
void AutoType::performGlobalAutoType(const QList<Database*>& dbList)
{
- if (m_inAutoType || !m_plugin) {
+ if (!m_plugin) {
return;
}
@@ -195,40 +284,51 @@ void AutoType::performGlobalAutoType(const QList<Database*>& dbList)
return;
}
- m_inAutoType = true;
+ if (!m_inAutoType.tryLock()) {
+ return;
+ }
- QList<Entry*> entryList;
- QHash<Entry*, QString> sequenceHash;
+ QList<AutoTypeMatch> matchList;
for (Database* db : dbList) {
const QList<Entry*> dbEntries = db->rootGroup()->entriesRecursive();
for (Entry* entry : dbEntries) {
- QString sequence = autoTypeSequence(entry, windowTitle);
- if (!sequence.isEmpty()) {
- entryList << entry;
- sequenceHash.insert(entry, sequence);
+ const QSet<QString> sequences = autoTypeSequences(entry, windowTitle).toSet();
+ for (const QString& sequence : sequences) {
+ if (!sequence.isEmpty()) {
+ matchList << AutoTypeMatch(entry, sequence);
+ }
}
}
}
- if (entryList.isEmpty()) {
- m_inAutoType = false;
- QString message = tr("Couldn't find an entry that matches the window title:");
- message.append("\n\n");
- message.append(windowTitle);
- MessageBox::information(nullptr, tr("Auto-Type - KeePassXC"), message);
- }
- else if ((entryList.size() == 1) && !config()->get("security/autotypeask").toBool()) {
- m_inAutoType = false;
- performAutoType(entryList.first(), nullptr, sequenceHash[entryList.first()]);
- }
- else {
+ if (matchList.isEmpty()) {
+ m_inAutoType.unlock();
+
+ if (qobject_cast<QApplication*>(QCoreApplication::instance())) {
+ auto* msgBox = new QMessageBox();
+ msgBox->setAttribute(Qt::WA_DeleteOnClose);
+ msgBox->setWindowTitle(tr("Auto-Type - KeePassXC"));
+ msgBox->setText(tr("Couldn't find an entry that matches the window title:").append("\n\n")
+ .append(windowTitle));
+ msgBox->setIcon(QMessageBox::Information);
+ msgBox->setStandardButtons(QMessageBox::Ok);
+ msgBox->show();
+ msgBox->raise();
+ msgBox->activateWindow();
+ }
+
+ emit autotypeRejected();
+ } else if ((matchList.size() == 1) && !config()->get("security/autotypeask").toBool()) {
+ executeAutoTypeActions(matchList.first().entry, nullptr, matchList.first().sequence);
+ m_inAutoType.unlock();
+ } else {
m_windowFromGlobal = m_plugin->activeWindow();
- AutoTypeSelectDialog* selectDialog = new AutoTypeSelectDialog();
- connect(selectDialog, SIGNAL(entryActivated(Entry*,QString)),
- SLOT(performAutoTypeFromGlobal(Entry*,QString)));
+ auto* selectDialog = new AutoTypeSelectDialog();
+ connect(selectDialog, SIGNAL(matchActivated(AutoTypeMatch)),
+ SLOT(performAutoTypeFromGlobal(AutoTypeMatch)));
connect(selectDialog, SIGNAL(rejected()), SLOT(resetInAutoType()));
- selectDialog->setEntries(entryList, sequenceHash);
+ selectDialog->setMatchList(matchList);
#if defined(Q_OS_MAC)
m_plugin->raiseOwnWindow();
Tools::wait(500);
@@ -239,110 +339,52 @@ void AutoType::performGlobalAutoType(const QList<Database*>& dbList)
}
}
-void AutoType::performAutoTypeFromGlobal(Entry* entry, const QString& sequence)
+void AutoType::performAutoTypeFromGlobal(AutoTypeMatch match)
{
- Q_ASSERT(m_inAutoType);
+ // We don't care about the result here, the mutex should already be locked. Now it's locked for sure
+ m_inAutoType.tryLock();
m_plugin->raiseWindow(m_windowFromGlobal);
- m_inAutoType = false;
- performAutoType(entry, nullptr, sequence, m_windowFromGlobal);
-}
-
-void AutoType::resetInAutoType()
-{
- Q_ASSERT(m_inAutoType);
-
- m_inAutoType = false;
-}
-
-void AutoType::unloadPlugin()
-{
- if (m_executor) {
- delete m_executor;
- m_executor = nullptr;
- }
-
- if (m_plugin) {
- m_plugin->unload();
- m_plugin = nullptr;
- }
-}
-
-bool AutoType::registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers)
-{
- Q_ASSERT(key);
- Q_ASSERT(modifiers);
-
- if (!m_plugin) {
- return false;
- }
-
- if (key != m_currentGlobalKey || modifiers != m_currentGlobalModifiers) {
- if (m_currentGlobalKey && m_currentGlobalModifiers) {
- m_plugin->unregisterGlobalShortcut(m_currentGlobalKey, m_currentGlobalModifiers);
- }
-
- if (m_plugin->registerGlobalShortcut(key, modifiers)) {
- m_currentGlobalKey = key;
- m_currentGlobalModifiers = modifiers;
- return true;
- }
- else {
- return false;
- }
- }
- else {
- return true;
- }
-}
-
-void AutoType::unregisterGlobalShortcut()
-{
- if (m_plugin && m_currentGlobalKey && m_currentGlobalModifiers) {
- m_plugin->unregisterGlobalShortcut(m_currentGlobalKey, m_currentGlobalModifiers);
- }
-}
+ executeAutoTypeActions(match.entry, nullptr, match.sequence, m_windowFromGlobal);
-int AutoType::callEventFilter(void* event)
-{
- if (!m_plugin) {
- return -1;
- }
-
- return m_plugin->platformEventFilter(event);
+ m_inAutoType.unlock();
}
-bool AutoType::parseActions(const QString& sequence, const Entry* entry, QList<AutoTypeAction*>& actions)
+/**
+ * Parse an autotype sequence and resolve its Template/command inside as AutoTypeActions
+ */
+bool AutoType::parseActions(const QString& actionSequence, const Entry* entry, QList<AutoTypeAction*>& actions)
{
QString tmpl;
bool inTmpl = false;
m_autoTypeDelay = config()->get("AutoTypeDelay").toInt();
+ QString sequence = actionSequence;
+ sequence.replace("{{}", "{LEFTBRACE}");
+ sequence.replace("{}}", "{RIGHTBRACE}");
for (const QChar& ch : sequence) {
if (inTmpl) {
if (ch == '{') {
- qWarning("Syntax error in auto-type sequence.");
+ qWarning("Syntax error in Auto-Type sequence.");
return false;
- }
- else if (ch == '}') {
- actions.append(createActionFromTemplate(tmpl, entry));
+ } else if (ch == '}') {
+ QList<AutoTypeAction*> autoType = createActionFromTemplate(tmpl, entry);
+ if (!autoType.isEmpty()) {
+ actions.append(autoType);
+ }
inTmpl = false;
tmpl.clear();
- }
- else {
+ } else {
tmpl += ch;
}
- }
- else if (ch == '{') {
+ } else if (ch == '{') {
inTmpl = true;
- }
- else if (ch == '}') {
- qWarning("Syntax error in auto-type sequence.");
+ } else if (ch == '}') {
+ qWarning("Syntax error in Auto-Type sequence.");
return false;
- }
- else {
+ } else {
actions.append(new AutoTypeChar(ch));
}
}
@@ -360,6 +402,9 @@ bool AutoType::parseActions(const QString& sequence, const Entry* entry, QList<A
return true;
}
+/**
+ * Convert an autotype Template/command to its AutoTypeAction that will be executed by the plugin executor
+ */
QList<AutoTypeAction*> AutoType::createActionFromTemplate(const QString& tmpl, const Entry* entry)
{
QString tmplName = tmpl;
@@ -381,120 +426,78 @@ QList<AutoTypeAction*> AutoType::createActionFromTemplate(const QString& tmpl, c
if (num == 0) {
return list;
}
- // some safety checks
- else if (tmplName.compare("delay",Qt::CaseInsensitive)==0) {
- if (num > 10000) {
- return list;
- }
- }
- else if (num > 100) {
- return list;
- }
}
- if (tmplName.compare("tab",Qt::CaseInsensitive)==0) {
+ if (tmplName.compare("tab", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Tab));
- }
- else if (tmplName.compare("enter",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("enter", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Enter));
- }
- else if (tmplName.compare("space",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("space", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Space));
- }
- else if (tmplName.compare("up",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("up", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Up));
- }
- else if (tmplName.compare("down",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("down", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Down));
- }
- else if (tmplName.compare("left",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("left", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Left));
- }
- else if (tmplName.compare("right",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("right", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Right));
- }
- else if (tmplName.compare("insert",Qt::CaseInsensitive)==0 ||
- tmplName.compare("ins",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("insert", Qt::CaseInsensitive) == 0 ||
+ tmplName.compare("ins", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Insert));
- }
- else if (tmplName.compare("delete",Qt::CaseInsensitive)==0 ||
- tmplName.compare("del",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("delete", Qt::CaseInsensitive) == 0 ||
+ tmplName.compare("del", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Delete));
- }
- else if (tmplName.compare("home",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("home", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Home));
- }
- else if (tmplName.compare("end",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("end", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_End));
- }
- else if (tmplName.compare("pgup",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("pgup", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_PageUp));
- }
- else if (tmplName.compare("pgdown",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("pgdown", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_PageDown));
- }
- else if (tmplName.compare("backspace",Qt::CaseInsensitive)==0 ||
- tmplName.compare("bs",Qt::CaseInsensitive)==0 ||
- tmplName.compare("bksp",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("backspace", Qt::CaseInsensitive) == 0 ||
+ tmplName.compare("bs", Qt::CaseInsensitive) == 0 || tmplName.compare("bksp", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Backspace));
- }
- else if (tmplName.compare("break",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("break", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Pause));
- }
- else if (tmplName.compare("capslock",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("capslock", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_CapsLock));
- }
- else if (tmplName.compare("esc",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("esc", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Escape));
- }
- else if (tmplName.compare("help",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("help", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Help));
- }
- else if (tmplName.compare("numlock",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("numlock", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_NumLock));
- }
- else if (tmplName.compare("ptrsc",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("ptrsc", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_Print));
- }
- else if (tmplName.compare("scrolllock",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("scrolllock", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeKey(Qt::Key_ScrollLock));
}
// Qt doesn't know about keypad keys so use the normal ones instead
- else if (tmplName.compare("add",Qt::CaseInsensitive)==0 ||
- tmplName.compare("+",Qt::CaseInsensitive)==0) {
+ else if (tmplName.compare("add", Qt::CaseInsensitive) == 0 || tmplName.compare("+", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('+'));
- }
- else if (tmplName.compare("subtract",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("subtract", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('-'));
- }
- else if (tmplName.compare("multiply",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("multiply", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('*'));
- }
- else if (tmplName.compare("divide",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("divide", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('/'));
- }
- else if (tmplName.compare("^",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("^", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('^'));
- }
- else if (tmplName.compare("%",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("%", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('%'));
- }
- else if (tmplName.compare("~",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("~", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('~'));
- }
- else if (tmplName.compare("(",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("(", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('('));
- }
- else if (tmplName.compare(")",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare(")", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar(')'));
- }
- else if (tmplName.compare("leftbrace",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("leftbrace", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('{'));
- }
- else if (tmplName.compare("rightbrace",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("rightbrace", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeChar('}'));
- }
- else {
+ } else {
QRegExp fnRegexp("f(\\d+)", Qt::CaseInsensitive, QRegExp::RegExp2);
if (fnRegexp.exactMatch(tmplName)) {
int fnNo = fnRegexp.cap(1).toInt();
@@ -508,18 +511,14 @@ QList<AutoTypeAction*> AutoType::createActionFromTemplate(const QString& tmpl, c
for (int i = 1; i < num; i++) {
list.append(list.at(0)->clone());
}
-
return list;
}
-
- if (tmplName.compare("delay",Qt::CaseInsensitive)==0 && num > 0) {
+ if (tmplName.compare("delay", Qt::CaseInsensitive) == 0 && num > 0) {
list.append(new AutoTypeDelay(num));
- }
- else if (tmplName.compare("clearfield",Qt::CaseInsensitive)==0) {
+ } else if (tmplName.compare("clearfield", Qt::CaseInsensitive) == 0) {
list.append(new AutoTypeClearField());
- }
- else if (tmplName.compare("totp", Qt::CaseInsensitive) == 0) {
+ } else if (tmplName.compare("totp", Qt::CaseInsensitive) == 0) {
QString totp = entry->totp();
if (!totp.isEmpty()) {
for (const QChar& ch : totp) {
@@ -538,11 +537,9 @@ QList<AutoTypeAction*> AutoType::createActionFromTemplate(const QString& tmpl, c
for (const QChar& ch : resolved) {
if (ch == '\n') {
list.append(new AutoTypeKey(Qt::Key_Enter));
- }
- else if (ch == '\t') {
+ } else if (ch == '\t') {
list.append(new AutoTypeKey(Qt::Key_Tab));
- }
- else {
+ } else {
list.append(new AutoTypeChar(ch));
}
}
@@ -551,94 +548,88 @@ QList<AutoTypeAction*> AutoType::createActionFromTemplate(const QString& tmpl, c
return list;
}
-QString AutoType::autoTypeSequence(const Entry* entry, const QString& windowTitle)
+/**
+ * Retrive the autotype sequences matches for a given windowTitle
+ * This returns a list with priority ordering. If you don't want duplicates call .toSet() on it.
+ */
+QList<QString> AutoType::autoTypeSequences(const Entry* entry, const QString& windowTitle)
{
+ QList<QString> sequenceList;
+
if (!entry->autoTypeEnabled()) {
- return QString();
+ return sequenceList;
}
- bool enableSet = false;
- QString sequence;
+ const Group* group = entry->group();
+ do {
+ if (group->autoTypeEnabled() == Group::Disable) {
+ return sequenceList;
+ } else if (group->autoTypeEnabled() == Group::Enable) {
+ break;
+ }
+ group = group->parentGroup();
+
+ } while (group);
+
if (!windowTitle.isEmpty()) {
- bool match = false;
const QList<AutoTypeAssociations::Association> assocList = entry->autoTypeAssociations()->getAll();
for (const AutoTypeAssociations::Association& assoc : assocList) {
- if (windowMatches(windowTitle, assoc.window)) {
+ const QString window = entry->resolveMultiplePlaceholders(assoc.window);
+ if (windowMatches(windowTitle, window)) {
if (!assoc.sequence.isEmpty()) {
- sequence = assoc.sequence;
- }
- else {
- sequence = entry->defaultAutoTypeSequence();
+ sequenceList.append(assoc.sequence);
+ } else {
+ sequenceList.append(entry->effectiveAutoTypeSequence());
}
- match = true;
- break;
}
}
- if (!match && config()->get("AutoTypeEntryTitleMatch").toBool()
- && (windowMatchesTitle(windowTitle, entry->resolvePlaceholder(entry->title()))
- || windowMatchesUrl(windowTitle, entry->resolvePlaceholder(entry->url())))) {
- sequence = entry->defaultAutoTypeSequence();
- match = true;
+ if (config()->get("AutoTypeEntryTitleMatch").toBool() &&
+ windowMatchesTitle(windowTitle, entry->resolvePlaceholder(entry->title()))) {
+ sequenceList.append(entry->effectiveAutoTypeSequence());
}
- if (!match) {
- return QString();
+ if (config()->get("AutoTypeEntryURLMatch").toBool() &&
+ windowMatchesUrl(windowTitle, entry->resolvePlaceholder(entry->url()))) {
+ sequenceList.append(entry->effectiveAutoTypeSequence());
}
- }
- else {
- sequence = entry->defaultAutoTypeSequence();
- }
- const Group* group = entry->group();
- do {
- if (!enableSet) {
- if (group->autoTypeEnabled() == Group::Disable) {
- return QString();
- }
- else if (group->autoTypeEnabled() == Group::Enable) {
- enableSet = true;
- }
- }
-
- if (sequence.isEmpty()) {
- sequence = group->defaultAutoTypeSequence();
- }
-
- group = group->parentGroup();
- } while (group && (!enableSet || sequence.isEmpty()));
-
- if (sequence.isEmpty() && (!entry->resolvePlaceholder(entry->username()).isEmpty() || !entry->resolvePlaceholder(entry->password()).isEmpty())) {
- if (entry->resolvePlaceholder(entry->username()).isEmpty()) {
- sequence = "{PASSWORD}{ENTER}";
- }
- else if (entry->resolvePlaceholder(entry->password()).isEmpty()) {
- sequence = "{USERNAME}{ENTER}";
- }
- else {
- sequence = "{USERNAME}{TAB}{PASSWORD}{ENTER}";
+ if (sequenceList.isEmpty()) {
+ return sequenceList;
}
+ } else {
+ sequenceList.append(entry->effectiveAutoTypeSequence());
}
- return sequence;
+ return sequenceList;
}
+/**
+ * Checks if a window title matches a pattern
+ */
bool AutoType::windowMatches(const QString& windowTitle, const QString& windowPattern)
{
if (windowPattern.startsWith("//") && windowPattern.endsWith("//") && windowPattern.size() >= 4) {
QRegExp regExp(windowPattern.mid(2, windowPattern.size() - 4), Qt::CaseInsensitive, QRegExp::RegExp2);
return (regExp.indexIn(windowTitle) != -1);
- }
- else {
+ } else {
return WildcardMatcher(windowTitle).match(windowPattern);
}
}
+/**
+ * Checks if a window title matches an entry Title
+ * The entry title should be Spr-compiled by the caller
+ */
bool AutoType::windowMatchesTitle(const QString& windowTitle, const QString& resolvedTitle)
{
return !resolvedTitle.isEmpty() && windowTitle.contains(resolvedTitle, Qt::CaseInsensitive);
}
+/**
+ * Checks if a window title matches an entry URL
+ * The entry URL should be Spr-compiled by the caller
+ */
bool AutoType::windowMatchesUrl(const QString& windowTitle, const QString& resolvedUrl)
{
if (!resolvedUrl.isEmpty() && windowTitle.contains(resolvedUrl, Qt::CaseInsensitive)) {
@@ -652,3 +643,101 @@ bool AutoType::windowMatchesUrl(const QString& windowTitle, const QString& resol
return false;
}
+
+/**
+ * Checks if the overall syntax of an autotype sequence is fine
+ */
+bool AutoType::checkSyntax(const QString& string)
+{
+ QString allowRepetition = "(?:\\s\\d+)?";
+ // the ":" allows custom commands with syntax S:Field
+ // exclude BEEP otherwise will be checked as valid
+ QString normalCommands = "(?!BEEP\\s)[A-Z:]*" + allowRepetition;
+ QString specialLiterals = "[\\^\\%\\(\\)~\\{\\}\\[\\]\\+]" + allowRepetition;
+ QString functionKeys = "(?:F[1-9]" + allowRepetition + "|F1[0-2])" + allowRepetition;
+ QString numpad = "NUMPAD\\d" + allowRepetition;
+ QString delay = "DELAY=\\d+";
+ QString beep = "BEEP\\s\\d+\\s\\d+";
+ QString vkey = "VKEY(?:-[EN]X)?\\s\\w+";
+
+ // these chars aren't in parentheses
+ QString shortcutKeys = "[\\^\\%~\\+@]";
+ // a normal string not in parentheses
+ QString fixedStrings = "[^\\^\\%~\\+@\\{\\}]*";
+
+ QRegularExpression autoTypeSyntax("^(?:" + shortcutKeys + "|" + fixedStrings + "|\\{(?:" + normalCommands + "|" + specialLiterals +
+ "|" + functionKeys + "|" + numpad + "|" + delay + "|" + beep + "|" + vkey + ")\\})*$",
+ QRegularExpression::CaseInsensitiveOption);
+ QRegularExpressionMatch match = autoTypeSyntax.match(string);
+ return match.hasMatch();
+}
+
+/**
+ * Checks an autotype sequence for high delay
+ */
+bool AutoType::checkHighDelay(const QString& string)
+{
+ // 5 digit numbers(10 seconds) are too much
+ QRegularExpression highDelay("\\{DELAY\\s\\d{5,}\\}", QRegularExpression::CaseInsensitiveOption);
+ QRegularExpressionMatch match = highDelay.match(string);
+ return match.hasMatch();
+}
+
+/**
+ * Checks an autotype sequence for slow keypress
+ */
+bool AutoType::checkSlowKeypress(const QString& string)
+{
+ // 3 digit numbers(100 milliseconds) are too much
+ QRegularExpression slowKeypress("\\{DELAY=\\d{3,}\\}", QRegularExpression::CaseInsensitiveOption);
+ QRegularExpressionMatch match = slowKeypress.match(string);
+ return match.hasMatch();
+}
+
+/**
+ * Checks an autotype sequence for high repetition command
+ */
+bool AutoType::checkHighRepetition(const QString& string)
+{
+ // 3 digit numbers are too much
+ QRegularExpression highRepetition("\\{(?!DELAY\\s)\\w+\\s\\d{3,}\\}", QRegularExpression::CaseInsensitiveOption);
+ QRegularExpressionMatch match = highRepetition.match(string);
+ return match.hasMatch();
+}
+
+/**
+ * Verify if the syntax of an autotype sequence is correct and doesn't have silly parameters
+ */
+bool AutoType::verifyAutoTypeSyntax(const QString& sequence)
+{
+ if (!AutoType::checkSyntax(sequence)) {
+ QMessageBox messageBox;
+ messageBox.critical(nullptr, tr("Auto-Type"), tr("The Syntax of your Auto-Type statement is incorrect!"));
+ return false;
+ } else if (AutoType::checkHighDelay(sequence)) {
+ QMessageBox::StandardButton reply;
+ reply = QMessageBox::question(nullptr, tr("Auto-Type"),
+ tr("This Auto-Type command contains a very long delay. Do you really want to proceed?"));
+
+ if (reply == QMessageBox::No) {
+ return false;
+ }
+ } else if (AutoType::checkSlowKeypress(sequence)) {
+ QMessageBox::StandardButton reply;
+ reply = QMessageBox::question(nullptr, tr("Auto-Type"),
+ tr("This Auto-Type command contains very slow key presses. Do you really want to proceed?"));
+
+ if (reply == QMessageBox::No) {
+ return false;
+ }
+ } else if (AutoType::checkHighRepetition(sequence)) {
+ QMessageBox::StandardButton reply;
+ reply = QMessageBox::question(nullptr, tr("Auto-Type"),
+ tr("This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?"));
+
+ if (reply == QMessageBox::No) {
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/src/autotype/AutoType.h b/src/autotype/AutoType.h
index 6f4a815f8..98a7bd7fa 100644
--- a/src/autotype/AutoType.h
+++ b/src/autotype/AutoType.h
@@ -1,4 +1,4 @@
-/*
+ /*
* Copyright (C) 2012 Felix Geyer <debfx@fobos.de>
* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
@@ -22,6 +22,9 @@
#include <QObject>
#include <QStringList>
#include <QWidget>
+#include <QMutex>
+
+#include "core/AutoTypeMatch.h"
class AutoTypeAction;
class AutoTypeExecutor;
@@ -36,13 +39,19 @@ class AutoType : public QObject
public:
QStringList windowTitles();
- void performAutoType(const Entry* entry, QWidget* hideWindow = nullptr,
- const QString& customSequence = QString(), WId window = 0);
bool registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers);
void unregisterGlobalShortcut();
int callEventFilter(void* event);
+ static bool checkSyntax(const QString& string);
+ static bool checkHighRepetition(const QString& string);
+ static bool checkSlowKeypress(const QString& string);
+ static bool checkHighDelay(const QString& string);
+ static bool verifyAutoTypeSyntax(const QString& sequence);
+ void performAutoType(const Entry* entry,
+ QWidget* hideWindow = nullptr);
- inline bool isAvailable() {
+ inline bool isAvailable()
+ {
return m_plugin;
}
@@ -51,12 +60,15 @@ public:
public slots:
void performGlobalAutoType(const QList<Database*>& dbList);
+ void raiseWindow();
signals:
void globalShortcutTriggered();
+ void autotypePerformed();
+ void autotypeRejected();
private slots:
- void performAutoTypeFromGlobal(Entry* entry, const QString& sequence);
+ void performAutoTypeFromGlobal(AutoTypeMatch match);
void resetInAutoType();
void unloadPlugin();
@@ -64,14 +76,18 @@ private:
explicit AutoType(QObject* parent = nullptr, bool test = false);
~AutoType();
void loadPlugin(const QString& pluginPath);
+ void executeAutoTypeActions(const Entry* entry,
+ QWidget* hideWindow = nullptr,
+ const QString& customSequence = QString(),
+ WId window = 0);
bool parseActions(const QString& sequence, const Entry* entry, QList<AutoTypeAction*>& actions);
QList<AutoTypeAction*> createActionFromTemplate(const QString& tmpl, const Entry* entry);
- QString autoTypeSequence(const Entry* entry, const QString& windowTitle = QString());
+ QList<QString> autoTypeSequences(const Entry* entry, const QString& windowTitle = QString());
bool windowMatchesTitle(const QString& windowTitle, const QString& resolvedTitle);
bool windowMatchesUrl(const QString& windowTitle, const QString& resolvedUrl);
bool windowMatches(const QString& windowTitle, const QString& windowPattern);
- bool m_inAutoType;
+ QMutex m_inAutoType;
int m_autoTypeDelay;
Qt::Key m_currentGlobalKey;
Qt::KeyboardModifiers m_currentGlobalModifiers;
@@ -84,7 +100,8 @@ private:
Q_DISABLE_COPY(AutoType)
};
-inline AutoType* autoType() {
+inline AutoType* autoType()
+{
return AutoType::instance();
}
diff --git a/src/autotype/AutoTypeAction.h b/src/autotype/AutoTypeAction.h
index 490f0d89f..7f0d829c0 100644
--- a/src/autotype/AutoTypeAction.h
+++ b/src/autotype/AutoTypeAction.h
@@ -20,6 +20,7 @@
#include <QChar>
#include <Qt>
+#include <QObject>
#include "core/Global.h"
diff --git a/src/autotype/AutoTypeSelectDialog.cpp b/src/autotype/AutoTypeSelectDialog.cpp
index 240dd723b..eae9e6ffb 100644
--- a/src/autotype/AutoTypeSelectDialog.cpp
+++ b/src/autotype/AutoTypeSelectDialog.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2012 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,14 +26,16 @@
#include <QVBoxLayout>
#include "autotype/AutoTypeSelectView.h"
+#include "core/AutoTypeMatch.h"
#include "core/Config.h"
#include "core/FilePath.h"
-#include "gui/entry/EntryModel.h"
+#include "gui/entry/AutoTypeMatchModel.h"
AutoTypeSelectDialog::AutoTypeSelectDialog(QWidget* parent)
: QDialog(parent)
, m_view(new AutoTypeSelectView(this))
- , m_entryActivatedEmitted(false)
+ , m_matchActivatedEmitted(false)
+ , m_rejected(false)
{
setAttribute(Qt::WA_DeleteOnClose);
// Places the window on the active (virtual) desktop instead of where the main window is.
@@ -42,7 +45,7 @@ AutoTypeSelectDialog::AutoTypeSelectDialog(QWidget* parent)
setWindowIcon(filePath()->applicationIcon());
QRect screenGeometry = QApplication::desktop()->availableGeometry(QCursor::pos());
- QSize size = config()->get("GUI/AutoTypeSelectDialogSize", QSize(400, 250)).toSize();
+ QSize size = config()->get("GUI/AutoTypeSelectDialogSize", QSize(600, 250)).toSize();
size.setWidth(qMin(size.width(), screenGeometry.width()));
size.setHeight(qMin(size.height(), screenGeometry.height()));
resize(size);
@@ -56,9 +59,10 @@ AutoTypeSelectDialog::AutoTypeSelectDialog(QWidget* parent)
QLabel* descriptionLabel = new QLabel(tr("Select entry to Auto-Type:"), this);
layout->addWidget(descriptionLabel);
- connect(m_view, SIGNAL(activated(QModelIndex)), SLOT(emitEntryActivated(QModelIndex)));
- connect(m_view, SIGNAL(clicked(QModelIndex)), SLOT(emitEntryActivated(QModelIndex)));
- connect(m_view->model(), SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(entryRemoved()));
+ connect(m_view, SIGNAL(activated(QModelIndex)), SLOT(emitMatchActivated(QModelIndex)));
+ connect(m_view, SIGNAL(clicked(QModelIndex)), SLOT(emitMatchActivated(QModelIndex)));
+ connect(m_view->model(), SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(matchRemoved()));
+ connect(m_view, SIGNAL(rejected()), SLOT(reject()));
layout->addWidget(m_view);
QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel, Qt::Horizontal, this);
@@ -66,10 +70,9 @@ AutoTypeSelectDialog::AutoTypeSelectDialog(QWidget* parent)
layout->addWidget(buttonBox);
}
-void AutoTypeSelectDialog::setEntries(const QList<Entry*>& entries, const QHash<Entry*, QString>& sequences)
+void AutoTypeSelectDialog::setMatchList(const QList<AutoTypeMatch>& matchList)
{
- m_sequences = sequences;
- m_view->setEntryList(entries);
+ m_view->setMatchList(matchList);
m_view->header()->resizeSections(QHeaderView::ResizeToContents);
}
@@ -81,21 +84,32 @@ void AutoTypeSelectDialog::done(int r)
QDialog::done(r);
}
-void AutoTypeSelectDialog::emitEntryActivated(const QModelIndex& index)
+void AutoTypeSelectDialog::reject()
+{
+ m_rejected = true;
+
+ QDialog::reject();
+}
+
+void AutoTypeSelectDialog::emitMatchActivated(const QModelIndex& index)
{
// make sure we don't emit the signal twice when both activated() and clicked() are triggered
- if (m_entryActivatedEmitted) {
+ if (m_matchActivatedEmitted) {
return;
}
- m_entryActivatedEmitted = true;
+ m_matchActivatedEmitted = true;
- Entry* entry = m_view->entryFromIndex(index);
+ AutoTypeMatch match = m_view->matchFromIndex(index);
accept();
- emit entryActivated(entry, m_sequences[entry]);
+ emit matchActivated(match);
}
-void AutoTypeSelectDialog::entryRemoved()
+void AutoTypeSelectDialog::matchRemoved()
{
+ if (m_rejected) {
+ return;
+ }
+
if (m_view->model()->rowCount() == 0) {
reject();
}
diff --git a/src/autotype/AutoTypeSelectDialog.h b/src/autotype/AutoTypeSelectDialog.h
index 3d9c684ed..cee3c4087 100644
--- a/src/autotype/AutoTypeSelectDialog.h
+++ b/src/autotype/AutoTypeSelectDialog.h
@@ -22,8 +22,9 @@
#include <QDialog>
#include <QHash>
+#include "core/AutoTypeMatch.h"
+
class AutoTypeSelectView;
-class Entry;
class AutoTypeSelectDialog : public QDialog
{
@@ -31,22 +32,23 @@ class AutoTypeSelectDialog : public QDialog
public:
explicit AutoTypeSelectDialog(QWidget* parent = nullptr);
- void setEntries(const QList<Entry*>& entries, const QHash<Entry*, QString>& sequences);
+ void setMatchList(const QList<AutoTypeMatch>& matchList);
signals:
- void entryActivated(Entry* entry, const QString& sequence);
+ void matchActivated(AutoTypeMatch match);
public slots:
void done(int r) override;
+ void reject() override;
private slots:
- void emitEntryActivated(const QModelIndex& index);
- void entryRemoved();
+ void emitMatchActivated(const QModelIndex& index);
+ void matchRemoved();
private:
AutoTypeSelectView* const m_view;
- QHash<Entry*, QString> m_sequences;
- bool m_entryActivatedEmitted;
+ bool m_matchActivatedEmitted;
+ bool m_rejected;
};
#endif // KEEPASSX_AUTOTYPESELECTDIALOG_H
diff --git a/src/autotype/AutoTypeSelectView.cpp b/src/autotype/AutoTypeSelectView.cpp
index 717e20a31..e4dba0515 100644
--- a/src/autotype/AutoTypeSelectView.cpp
+++ b/src/autotype/AutoTypeSelectView.cpp
@@ -17,18 +17,16 @@
#include "AutoTypeSelectView.h"
+#include <QKeyEvent>
#include <QMouseEvent>
AutoTypeSelectView::AutoTypeSelectView(QWidget* parent)
- : EntryView(parent)
+ : AutoTypeMatchView(parent)
{
- hideColumn(3);
setMouseTracking(true);
setAllColumnsShowFocus(true);
- setDragEnabled(false);
- setSelectionMode(QAbstractItemView::SingleSelection);
- connect(model(), SIGNAL(modelReset()), SLOT(selectFirstEntry()));
+ connect(model(), SIGNAL(modelReset()), SLOT(selectFirstMatch()));
}
void AutoTypeSelectView::mouseMoveEvent(QMouseEvent* event)
@@ -43,10 +41,10 @@ void AutoTypeSelectView::mouseMoveEvent(QMouseEvent* event)
unsetCursor();
}
- EntryView::mouseMoveEvent(event);
+ AutoTypeMatchView::mouseMoveEvent(event);
}
-void AutoTypeSelectView::selectFirstEntry()
+void AutoTypeSelectView::selectFirstMatch()
{
QModelIndex index = model()->index(0, 0);
@@ -54,3 +52,12 @@ void AutoTypeSelectView::selectFirstEntry()
setCurrentIndex(index);
}
}
+
+void AutoTypeSelectView::keyReleaseEvent(QKeyEvent* e)
+{
+ if (e->key() == Qt::Key_Escape) {
+ emit rejected();
+ } else {
+ e->ignore();
+ }
+} \ No newline at end of file
diff --git a/src/autotype/AutoTypeSelectView.h b/src/autotype/AutoTypeSelectView.h
index a781757b8..e6a2ec652 100644
--- a/src/autotype/AutoTypeSelectView.h
+++ b/src/autotype/AutoTypeSelectView.h
@@ -18,11 +18,9 @@
#ifndef KEEPASSX_AUTOTYPESELECTVIEW_H
#define KEEPASSX_AUTOTYPESELECTVIEW_H
-#include "gui/entry/EntryView.h"
+#include "gui/entry/AutoTypeMatchView.h"
-class Entry;
-
-class AutoTypeSelectView : public EntryView
+class AutoTypeSelectView : public AutoTypeMatchView
{
Q_OBJECT
@@ -31,9 +29,13 @@ public:
protected:
void mouseMoveEvent(QMouseEvent* event) override;
+ void keyReleaseEvent(QKeyEvent* e) override;
private slots:
- void selectFirstEntry();
+ void selectFirstMatch();
+
+signals:
+ void rejected();
};
#endif // KEEPASSX_AUTOTYPESELECTVIEW_H
diff --git a/src/autotype/mac/CMakeLists.txt b/src/autotype/mac/CMakeLists.txt
index ac93de0e7..08c532784 100644
--- a/src/autotype/mac/CMakeLists.txt
+++ b/src/autotype/mac/CMakeLists.txt
@@ -9,14 +9,12 @@ set(autotype_mac_mm_SOURCES
add_library(keepassx-autotype-cocoa MODULE ${autotype_mac_SOURCES} ${autotype_mac_mm_SOURCES})
set_target_properties(keepassx-autotype-cocoa PROPERTIES LINK_FLAGS "-framework Foundation -framework AppKit -framework Carbon")
target_link_libraries(keepassx-autotype-cocoa ${PROGNAME} Qt5::Core Qt5::Widgets)
-if(NOT DEFINED QT_BINARY_DIR)
- set(QT_BINARY_DIR "/usr/local/opt/qt5/bin" CACHE PATH "QT binary folder")
-endif()
+
if(WITH_APP_BUNDLE)
add_custom_command(TARGET keepassx-autotype-cocoa
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libkeepassx-autotype-cocoa.so ${PLUGIN_INSTALL_DIR}
- COMMAND ${QT_BINARY_DIR}/macdeployqt ${PROGNAME}.app -executable=${PLUGIN_INSTALL_DIR}/libkeepassx-autotype-cocoa.so -no-plugins
+ COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app -executable=${PLUGIN_INSTALL_DIR}/libkeepassx-autotype-cocoa.so -no-plugins
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
COMMENT "Deploying autotype plugin")
else()
diff --git a/src/browser/BrowserAccessControlDialog.cpp b/src/browser/BrowserAccessControlDialog.cpp
new file mode 100755
index 000000000..7090a4d16
--- /dev/null
+++ b/src/browser/BrowserAccessControlDialog.cpp
@@ -0,0 +1,59 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "BrowserAccessControlDialog.h"
+#include "ui_BrowserAccessControlDialog.h"
+#include "core/Entry.h"
+
+BrowserAccessControlDialog::BrowserAccessControlDialog(QWidget* parent) :
+ QDialog(parent),
+ ui(new Ui::BrowserAccessControlDialog())
+{
+ this->setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
+
+ ui->setupUi(this);
+ connect(ui->allowButton, SIGNAL(clicked()), this, SLOT(accept()));
+ connect(ui->denyButton, SIGNAL(clicked()), this, SLOT(reject()));
+}
+
+BrowserAccessControlDialog::~BrowserAccessControlDialog()
+{
+}
+
+void BrowserAccessControlDialog::setUrl(const QString& url)
+{
+ ui->label->setText(QString(tr("%1 has requested access to passwords for the following item(s).\n"
+ "Please select whether you want to allow access.")).arg(QUrl(url).host()));
+}
+
+void BrowserAccessControlDialog::setItems(const QList<Entry*>& items)
+{
+ for (Entry* entry : items) {
+ ui->itemsList->addItem(entry->title() + " - " + entry->username());
+ }
+}
+
+bool BrowserAccessControlDialog::remember() const
+{
+ return ui->rememberDecisionCheckBox->isChecked();
+}
+
+void BrowserAccessControlDialog::setRemember(bool r)
+{
+ ui->rememberDecisionCheckBox->setChecked(r);
+}
diff --git a/src/browser/BrowserAccessControlDialog.h b/src/browser/BrowserAccessControlDialog.h
new file mode 100755
index 000000000..d2a66ce0d
--- /dev/null
+++ b/src/browser/BrowserAccessControlDialog.h
@@ -0,0 +1,48 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef BROWSERACCESSCONTROLDIALOG_H
+#define BROWSERACCESSCONTROLDIALOG_H
+
+#include <QDialog>
+#include <QScopedPointer>
+
+class Entry;
+
+namespace Ui {
+class BrowserAccessControlDialog;
+}
+
+class BrowserAccessControlDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit BrowserAccessControlDialog(QWidget* parent = nullptr);
+ ~BrowserAccessControlDialog();
+
+ void setUrl(const QString& url);
+ void setItems(const QList<Entry*>& items);
+ bool remember() const;
+ void setRemember(bool r);
+
+private:
+ QScopedPointer<Ui::BrowserAccessControlDialog> ui;
+};
+
+#endif // BROWSERACCESSCONTROLDIALOG_H
diff --git a/src/browser/BrowserAccessControlDialog.ui b/src/browser/BrowserAccessControlDialog.ui
new file mode 100755
index 000000000..29715314d
--- /dev/null
+++ b/src/browser/BrowserAccessControlDialog.ui
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BrowserAccessControlDialog</class>
+ <widget class="QDialog" name="BrowserAccessControlDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>221</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>KeePassXC-Browser Confirm Access</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QListWidget" name="itemsList"/>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="rememberDecisionCheckBox">
+ <property name="text">
+ <string>Remember this decision</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="allowButton">
+ <property name="text">
+ <string>Allow</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="denyButton">
+ <property name="text">
+ <string>Deny</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/browser/BrowserAction.cpp b/src/browser/BrowserAction.cpp
new file mode 100755
index 000000000..b15d8ed59
--- /dev/null
+++ b/src/browser/BrowserAction.cpp
@@ -0,0 +1,554 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <QJsonDocument>
+#include <QJsonParseError>
+#include "BrowserAction.h"
+#include "BrowserSettings.h"
+#include "sodium.h"
+#include "sodium/crypto_box.h"
+#include "sodium/randombytes.h"
+#include "config-keepassx.h"
+
+BrowserAction::BrowserAction(BrowserService& browserService) :
+ m_mutex(QMutex::Recursive),
+ m_browserService(browserService),
+ m_associated(false)
+{
+
+}
+
+QJsonObject BrowserAction::readResponse(const QJsonObject& json)
+{
+ if (json.isEmpty()) {
+ return QJsonObject();
+ }
+
+ bool triggerUnlock = false;
+ const QString trigger = json.value("triggerUnlock").toString();
+ if (!trigger.isEmpty() && trigger.compare("true", Qt::CaseSensitive) == 0) {
+ triggerUnlock = true;
+ }
+
+ const QString action = json.value("action").toString();
+ if (action.isEmpty()) {
+ return QJsonObject();
+ }
+
+ QMutexLocker locker(&m_mutex);
+ if (action.compare("change-public-keys", Qt::CaseSensitive) != 0 && !m_browserService.isDatabaseOpened()) {
+ if (m_clientPublicKey.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CLIENT_PUBLIC_KEY_NOT_RECEIVED);
+ } else if (!m_browserService.openDatabase(triggerUnlock)) {
+ return getErrorReply(action, ERROR_KEEPASS_DATABASE_NOT_OPENED);
+ }
+ }
+
+ return handleAction(json);
+}
+
+
+// Private functions
+///////////////////////
+
+QJsonObject BrowserAction::handleAction(const QJsonObject& json)
+{
+ QString action = json.value("action").toString();
+ if (action.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_INCORRECT_ACTION);
+ }
+
+ if (action.compare("change-public-keys", Qt::CaseSensitive) == 0) {
+ return handleChangePublicKeys(json, action);
+ } else if (action.compare("get-databasehash", Qt::CaseSensitive) == 0) {
+ return handleGetDatabaseHash(json, action);
+ } else if (action.compare("associate", Qt::CaseSensitive) == 0) {
+ return handleAssociate(json, action);
+ } else if (action.compare("test-associate", Qt::CaseSensitive) == 0) {
+ return handleTestAssociate(json, action);
+ } else if (action.compare("get-logins", Qt::CaseSensitive) == 0) {
+ return handleGetLogins(json, action);
+ } else if (action.compare("generate-password", Qt::CaseSensitive) == 0) {
+ return handleGeneratePassword(json, action);
+ } else if (action.compare("set-login", Qt::CaseSensitive) == 0) {
+ return handleSetLogin(json, action);
+ } else if (action.compare("lock-database", Qt::CaseSensitive) == 0) {
+ return handleLockDatabase(json, action);
+ }
+
+ // Action was not recognized
+ return getErrorReply(action, ERROR_KEEPASS_INCORRECT_ACTION);
+}
+
+QJsonObject BrowserAction::handleChangePublicKeys(const QJsonObject& json, const QString& action)
+{
+ QMutexLocker locker(&m_mutex);
+ const QString nonce = json.value("nonce").toString();
+ const QString clientPublicKey = json.value("publicKey").toString();
+
+ if (clientPublicKey.isEmpty() || nonce.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CLIENT_PUBLIC_KEY_NOT_RECEIVED);
+ }
+
+ m_associated = false;
+ unsigned char pk[crypto_box_PUBLICKEYBYTES];
+ unsigned char sk[crypto_box_SECRETKEYBYTES];
+ crypto_box_keypair(pk, sk);
+
+ const QString publicKey = getBase64FromKey(pk, crypto_box_PUBLICKEYBYTES);
+ const QString secretKey = getBase64FromKey(sk, crypto_box_SECRETKEYBYTES);
+ m_clientPublicKey = clientPublicKey;
+ m_publicKey = publicKey;
+ m_secretKey = secretKey;
+
+ QJsonObject response = buildMessage(incrementNonce(nonce));
+ response["action"] = action;
+ response["publicKey"] = publicKey;
+
+ return response;
+}
+
+QJsonObject BrowserAction::handleGetDatabaseHash(const QJsonObject& json, const QString& action)
+{
+ const QString hash = getDatabaseHash();
+ const QString nonce = json.value("nonce").toString();
+ const QString encrypted = json.value("message").toString();
+ const QJsonObject decrypted = decryptMessage(encrypted, nonce, action);
+
+ if (decrypted.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+ }
+
+ if (hash.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_DATABASE_HASH_NOT_RECEIVED);
+ }
+
+ QString command = decrypted.value("action").toString();
+ if (!command.isEmpty() && command.compare("get-databasehash", Qt::CaseSensitive) == 0) {
+ const QString newNonce = incrementNonce(nonce);
+
+ QJsonObject message = buildMessage(newNonce);
+ message["hash"] = hash;
+ return buildResponse(action, message, newNonce);
+ }
+
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+}
+
+QJsonObject BrowserAction::handleAssociate(const QJsonObject& json, const QString& action)
+{
+ const QString hash = getDatabaseHash();
+ const QString nonce = json.value("nonce").toString();
+ const QString encrypted = json.value("message").toString();
+ const QJsonObject decrypted = decryptMessage(encrypted, nonce, action);
+
+ if (decrypted.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+ }
+
+ const QString key = decrypted.value("key").toString();
+ if (key.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_ASSOCIATION_FAILED);
+ }
+
+ QMutexLocker locker(&m_mutex);
+ if (key.compare(m_clientPublicKey, Qt::CaseSensitive) == 0) {
+ const QString id = m_browserService.storeKey(key);
+ if (id.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_ACTION_CANCELLED_OR_DENIED);
+ }
+
+ m_associated = true;
+ const QString newNonce = incrementNonce(nonce);
+
+ QJsonObject message = buildMessage(newNonce);
+ message["hash"] = hash;
+ message["id"] = id;
+ return buildResponse(action, message, newNonce);
+ }
+
+ return getErrorReply(action, ERROR_KEEPASS_ASSOCIATION_FAILED);
+}
+
+QJsonObject BrowserAction::handleTestAssociate(const QJsonObject& json, const QString& action)
+{
+ const QString hash = getDatabaseHash();
+ const QString nonce = json.value("nonce").toString();
+ const QString encrypted = json.value("message").toString();
+ const QJsonObject decrypted = decryptMessage(encrypted, nonce, action);
+
+ if (decrypted.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+ }
+
+ const QString responseKey = decrypted.value("key").toString();
+ const QString id = decrypted.value("id").toString();
+ if (responseKey.isEmpty() || id.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_DATABASE_NOT_OPENED);
+ }
+
+ QMutexLocker locker(&m_mutex);
+ const QString key = m_browserService.getKey(id);
+ if (key.isEmpty() || key.compare(responseKey, Qt::CaseSensitive) != 0) {
+ return getErrorReply(action, ERROR_KEEPASS_ASSOCIATION_FAILED);
+ }
+
+ m_associated = true;
+ const QString newNonce = incrementNonce(nonce);
+
+ QJsonObject message = buildMessage(newNonce);
+ message["hash"] = hash;
+ message["id"] = id;
+
+ return buildResponse(action, message, newNonce);
+}
+
+QJsonObject BrowserAction::handleGetLogins(const QJsonObject& json, const QString& action)
+{
+ const QString hash = getDatabaseHash();
+ const QString nonce = json.value("nonce").toString();
+ const QString encrypted = json.value("message").toString();
+
+ QMutexLocker locker(&m_mutex);
+ if (!m_associated) {
+ return getErrorReply(action, ERROR_KEEPASS_ASSOCIATION_FAILED);
+ }
+
+ const QJsonObject decrypted = decryptMessage(encrypted, nonce, action);
+ if (decrypted.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+ }
+
+ const QString url = decrypted.value("url").toString();
+ if (url.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_NO_URL_PROVIDED);
+ }
+
+ const QString id = decrypted.value("id").toString();
+ const QString submit = decrypted.value("submitUrl").toString();
+ const QJsonArray users = m_browserService.findMatchingEntries(id, url, submit, "");
+
+ if (users.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_NO_LOGINS_FOUND);
+ }
+
+ const QString newNonce = incrementNonce(nonce);
+
+ QJsonObject message = buildMessage(newNonce);
+ message["count"] = users.count();
+ message["entries"] = users;
+ message["hash"] = hash;
+ message["id"] = id;
+
+ return buildResponse(action, message, newNonce);
+}
+
+QJsonObject BrowserAction::handleGeneratePassword(const QJsonObject& json, const QString& action)
+{
+ const QString nonce = json.value("nonce").toString();
+ const QString password = BrowserSettings::generatePassword();
+ const QString bits = QString::number(BrowserSettings::getbits()); // For some reason this always returns 1140 bits?
+
+ if (nonce.isEmpty() || password.isEmpty()) {
+ return QJsonObject();
+ }
+
+ QJsonArray arr;
+ QJsonObject passwd;
+ passwd["login"] = QString::number(password.length() * 8); //bits;
+ passwd["password"] = password;
+ arr.append(passwd);
+
+ const QString newNonce = incrementNonce(nonce);
+
+ QJsonObject message = buildMessage(newNonce);
+ message["entries"] = arr;
+
+ return buildResponse(action, message, newNonce);
+}
+
+QJsonObject BrowserAction::handleSetLogin(const QJsonObject& json, const QString& action)
+{
+ const QString hash = getDatabaseHash();
+ const QString nonce = json.value("nonce").toString();
+ const QString encrypted = json.value("message").toString();
+
+ QMutexLocker locker(&m_mutex);
+ if (!m_associated) {
+ return getErrorReply(action, ERROR_KEEPASS_ASSOCIATION_FAILED);
+ }
+
+ const QJsonObject decrypted = decryptMessage(encrypted, nonce, action);
+ if (decrypted.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+ }
+
+ const QString url = decrypted.value("url").toString();
+ if (url.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_NO_URL_PROVIDED);
+ }
+
+ const QString id = decrypted.value("id").toString();
+ const QString login = decrypted.value("login").toString();
+ const QString password = decrypted.value("password").toString();
+ const QString submitUrl = decrypted.value("submitUrl").toString();
+ const QString uuid = decrypted.value("uuid").toString();
+ const QString realm;
+
+ if (uuid.isEmpty()) {
+ m_browserService.addEntry(id, login, password, url, submitUrl, realm);
+ } else {
+ m_browserService.updateEntry(id, uuid, login, password, url);
+ }
+
+ const QString newNonce = incrementNonce(nonce);
+
+ QJsonObject message = buildMessage(newNonce);
+ message["count"] = QJsonValue::Null;
+ message["entries"] = QJsonValue::Null;
+ message["error"] = "";
+ message["hash"] = hash;
+
+ return buildResponse(action, message, newNonce);
+}
+
+QJsonObject BrowserAction::handleLockDatabase(const QJsonObject& json, const QString& action)
+{
+ const QString hash = getDatabaseHash();
+ const QString nonce = json.value("nonce").toString();
+ const QString encrypted = json.value("message").toString();
+ const QJsonObject decrypted = decryptMessage(encrypted, nonce, action);
+
+ if (decrypted.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+ }
+
+ if (hash.isEmpty()) {
+ return getErrorReply(action, ERROR_KEEPASS_DATABASE_HASH_NOT_RECEIVED);
+ }
+
+ QString command = decrypted.value("action").toString();
+ if (!command.isEmpty() && command.compare("lock-database", Qt::CaseSensitive) == 0) {
+ QMutexLocker locker(&m_mutex);
+ m_browserService.lockDatabase();
+
+ const QString newNonce = incrementNonce(nonce);
+ QJsonObject message = buildMessage(newNonce);
+
+ return buildResponse(action, message, newNonce);
+ }
+
+ return getErrorReply(action, ERROR_KEEPASS_DATABASE_HASH_NOT_RECEIVED);
+}
+
+QJsonObject BrowserAction::getErrorReply(const QString& action, const int errorCode) const
+{
+ QJsonObject response;
+ response["action"] = action;
+ response["errorCode"] = QString::number(errorCode);
+ response["error"] = getErrorMessage(errorCode);
+ return response;
+}
+
+QJsonObject BrowserAction::buildMessage(const QString& nonce) const
+{
+ QJsonObject message;
+ message["version"] = KEEPASSX_VERSION;
+ message["success"] = "true";
+ message["nonce"] = nonce;
+ return message;
+}
+
+QJsonObject BrowserAction::buildResponse(const QString& action, const QJsonObject& message, const QString& nonce)
+{
+ QJsonObject response;
+ response["action"] = action;
+ response["message"] = encryptMessage(message, nonce);
+ response["nonce"] = nonce;
+ return response;
+}
+
+QString BrowserAction::getErrorMessage(const int errorCode) const
+{
+ switch (errorCode) {
+ case ERROR_KEEPASS_DATABASE_NOT_OPENED: return QObject::tr("Database not opened");
+ case ERROR_KEEPASS_DATABASE_HASH_NOT_RECEIVED: return QObject::tr("Database hash not available");
+ case ERROR_KEEPASS_CLIENT_PUBLIC_KEY_NOT_RECEIVED: return QObject::tr("Client public key not received");
+ case ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE: return QObject::tr("Cannot decrypt message");
+ case ERROR_KEEPASS_TIMEOUT_OR_NOT_CONNECTED: return QObject::tr("Timeout or cannot connect to KeePassXC");
+ case ERROR_KEEPASS_ACTION_CANCELLED_OR_DENIED: return QObject::tr("Action cancelled or denied");
+ case ERROR_KEEPASS_CANNOT_ENCRYPT_MESSAGE: return QObject::tr("Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?");
+ case ERROR_KEEPASS_ASSOCIATION_FAILED: return QObject::tr("KeePassXC association failed, try again");
+ case ERROR_KEEPASS_KEY_CHANGE_FAILED: return QObject::tr("Key change was not successful");
+ case ERROR_KEEPASS_ENCRYPTION_KEY_UNRECOGNIZED: return QObject::tr("Encryption key is not recognized");
+ case ERROR_KEEPASS_NO_SAVED_DATABASES_FOUND: return QObject::tr("No saved databases found");
+ case ERROR_KEEPASS_INCORRECT_ACTION: return QObject::tr("Incorrect action");
+ case ERROR_KEEPASS_EMPTY_MESSAGE_RECEIVED: return QObject::tr("Empty message received");
+ case ERROR_KEEPASS_NO_URL_PROVIDED: return QObject::tr("No URL provided");
+ case ERROR_KEEPASS_NO_LOGINS_FOUND: return QObject::tr("No logins found");
+ default: return QObject::tr("Unknown error");
+ }
+}
+
+QString BrowserAction::getDatabaseHash()
+{
+ QMutexLocker locker(&m_mutex);
+ QByteArray hash = QCryptographicHash::hash(
+ (m_browserService.getDatabaseRootUuid() + m_browserService.getDatabaseRecycleBinUuid()).toUtf8(),
+ QCryptographicHash::Sha256).toHex();
+ return QString(hash);
+}
+
+QString BrowserAction::encryptMessage(const QJsonObject& message, const QString& nonce)
+{
+ if (message.isEmpty() || nonce.isEmpty()) {
+ return QString();
+ }
+
+ const QString reply(QJsonDocument(message).toJson());
+ if (!reply.isEmpty()) {
+ return encrypt(reply, nonce);
+ }
+
+ return QString();
+}
+
+QJsonObject BrowserAction::decryptMessage(const QString& message, const QString& nonce, const QString& action)
+{
+ if (message.isEmpty() || nonce.isEmpty()) {
+ return QJsonObject();
+ }
+
+ QByteArray ba = decrypt(message, nonce);
+ if (!ba.isEmpty()) {
+ return getJsonObject(ba);
+ }
+
+ return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
+}
+
+QString BrowserAction::encrypt(const QString plaintext, const QString nonce)
+{
+ QMutexLocker locker(&m_mutex);
+ const QByteArray ma = plaintext.toUtf8();
+ const QByteArray na = base64Decode(nonce);
+ const QByteArray ca = base64Decode(m_clientPublicKey);
+ const QByteArray sa = base64Decode(m_secretKey);
+
+ std::vector<unsigned char> m(ma.cbegin(), ma.cend());
+ std::vector<unsigned char> n(na.cbegin(), na.cend());
+ std::vector<unsigned char> ck(ca.cbegin(), ca.cend());
+ std::vector<unsigned char> sk(sa.cbegin(), sa.cend());
+
+ std::vector<unsigned char> e;
+ e.resize(max_length);
+
+ if (m.empty() || n.empty() || ck.empty() || sk.empty()) {
+ return QString();
+ }
+
+ if (crypto_box_easy(e.data(), m.data(), m.size(), n.data(), ck.data(), sk.data()) == 0) {
+ QByteArray res = getQByteArray(e.data(), (crypto_box_MACBYTES + ma.length()));
+ return res.toBase64();
+ }
+
+ return QString();
+}
+
+QByteArray BrowserAction::decrypt(const QString encrypted, const QString nonce)
+{
+ QMutexLocker locker(&m_mutex);
+ const QByteArray ma = base64Decode(encrypted);
+ const QByteArray na = base64Decode(nonce);
+ const QByteArray ca = base64Decode(m_clientPublicKey);
+ const QByteArray sa = base64Decode(m_secretKey);
+
+ std::vector<unsigned char> m(ma.cbegin(), ma.cend());
+ std::vector<unsigned char> n(na.cbegin(), na.cend());
+ std::vector<unsigned char> ck(ca.cbegin(), ca.cend());
+ std::vector<unsigned char> sk(sa.cbegin(), sa.cend());
+
+ std::vector<unsigned char> d;
+ d.resize(max_length);
+
+ if (m.empty() || n.empty() || ck.empty() || sk.empty()) {
+ return QByteArray();
+ }
+
+ if (crypto_box_open_easy(d.data(), m.data(), ma.length(), n.data(), ck.data(), sk.data()) == 0) {
+ return getQByteArray(d.data(), std::char_traits<char>::length(reinterpret_cast<const char *>(d.data())));
+ }
+
+ return QByteArray();
+}
+
+QString BrowserAction::getBase64FromKey(const uchar* array, const uint len)
+{
+ return getQByteArray(array, len).toBase64();
+}
+
+QByteArray BrowserAction::getQByteArray(const uchar* array, const uint len) const
+{
+ QByteArray qba;
+ qba.reserve(len);
+ for (uint i = 0; i < len; ++i) {
+ qba.append(static_cast<char>(array[i]));
+ }
+ return qba;
+}
+
+QJsonObject BrowserAction::getJsonObject(const uchar* pArray, const uint len) const
+{
+ QByteArray arr = getQByteArray(pArray, len);
+ QJsonParseError err;
+ QJsonDocument doc(QJsonDocument::fromJson(arr, &err));
+ return doc.object();
+}
+
+QJsonObject BrowserAction::getJsonObject(const QByteArray ba) const
+{
+ QJsonParseError err;
+ QJsonDocument doc(QJsonDocument::fromJson(ba, &err));
+ return doc.object();
+}
+
+QByteArray BrowserAction::base64Decode(const QString str)
+{
+ return QByteArray::fromBase64(str.toUtf8());
+}
+
+QString BrowserAction::incrementNonce(const QString& nonce)
+{
+ const QByteArray nonceArray = base64Decode(nonce);
+ std::vector<unsigned char> n(nonceArray.cbegin(), nonceArray.cend());
+
+ sodium_increment(n.data(), n.size());
+ return getQByteArray(n.data(), n.size()).toBase64();
+}
+
+void BrowserAction::removeSharedEncryptionKeys()
+{
+ QMutexLocker locker(&m_mutex);
+ m_browserService.removeSharedEncryptionKeys();
+}
+
+void BrowserAction::removeStoredPermissions()
+{
+ QMutexLocker locker(&m_mutex);
+ m_browserService.removeStoredPermissions();
+}
diff --git a/src/browser/BrowserAction.h b/src/browser/BrowserAction.h
new file mode 100755
index 000000000..c4d59d3c9
--- /dev/null
+++ b/src/browser/BrowserAction.h
@@ -0,0 +1,98 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef BROWSERACTION_H
+#define BROWSERACTION_H
+
+#include <QtCore>
+#include <QObject>
+#include <QJsonObject>
+#include <QMutex>
+#include "BrowserService.h"
+
+class BrowserAction : public QObject
+{
+ Q_OBJECT
+
+ enum {
+ ERROR_KEEPASS_DATABASE_NOT_OPENED = 1,
+ ERROR_KEEPASS_DATABASE_HASH_NOT_RECEIVED = 2,
+ ERROR_KEEPASS_CLIENT_PUBLIC_KEY_NOT_RECEIVED = 3,
+ ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE = 4,
+ ERROR_KEEPASS_TIMEOUT_OR_NOT_CONNECTED = 5,
+ ERROR_KEEPASS_ACTION_CANCELLED_OR_DENIED = 6,
+ ERROR_KEEPASS_CANNOT_ENCRYPT_MESSAGE = 7,
+ ERROR_KEEPASS_ASSOCIATION_FAILED = 8,
+ ERROR_KEEPASS_KEY_CHANGE_FAILED = 9,
+ ERROR_KEEPASS_ENCRYPTION_KEY_UNRECOGNIZED = 10,
+ ERROR_KEEPASS_NO_SAVED_DATABASES_FOUND = 11,
+ ERROR_KEEPASS_INCORRECT_ACTION = 12,
+ ERROR_KEEPASS_EMPTY_MESSAGE_RECEIVED = 13,
+ ERROR_KEEPASS_NO_URL_PROVIDED = 14,
+ ERROR_KEEPASS_NO_LOGINS_FOUND = 15
+ };
+
+public:
+ BrowserAction(BrowserService& browserService);
+ ~BrowserAction() = default;
+
+ QJsonObject readResponse(const QJsonObject& json);
+
+public slots:
+ void removeSharedEncryptionKeys();
+ void removeStoredPermissions();
+
+private:
+ QJsonObject handleAction(const QJsonObject& json);
+ QJsonObject handleChangePublicKeys(const QJsonObject& json, const QString& action);
+ QJsonObject handleGetDatabaseHash(const QJsonObject& json, const QString& action);
+ QJsonObject handleAssociate(const QJsonObject& json, const QString& action);
+ QJsonObject handleTestAssociate(const QJsonObject& json, const QString& action);
+ QJsonObject handleGetLogins(const QJsonObject& json, const QString& action);
+ QJsonObject handleGeneratePassword(const QJsonObject& json, const QString& action);
+ QJsonObject handleSetLogin(const QJsonObject& json, const QString& action);
+ QJsonObject handleLockDatabase(const QJsonObject& json, const QString& action);
+
+ QJsonObject buildMessage(const QString& nonce) const;
+ QJsonObject buildResponse(const QString& action, const QJsonObject& message, const QString& nonce);
+ QJsonObject getErrorReply(const QString& action, const int errorCode) const;
+ QString getErrorMessage(const int errorCode) const;
+ QString getDatabaseHash();
+
+ QString encryptMessage(const QJsonObject& message, const QString& nonce);
+ QJsonObject decryptMessage(const QString& message, const QString& nonce, const QString& action = QString());
+ QString encrypt(const QString plaintext, const QString nonce);
+ QByteArray decrypt(const QString encrypted, const QString nonce);
+
+ QString getBase64FromKey(const uchar* array, const uint len);
+ QByteArray getQByteArray(const uchar* array, const uint len) const;
+ QJsonObject getJsonObject(const uchar* pArray, const uint len) const;
+ QJsonObject getJsonObject(const QByteArray ba) const;
+ QByteArray base64Decode(const QString str);
+ QString incrementNonce(const QString& nonce);
+
+private:
+ QMutex m_mutex;
+ BrowserService& m_browserService;
+ QString m_clientPublicKey;
+ QString m_publicKey;
+ QString m_secretKey;
+ bool m_associated;
+};
+
+#endif // BROWSERACTION_H
diff --git a/src/browser/BrowserClients.cpp b/src/browser/BrowserClients.cpp
new file mode 100755
index 000000000..9c47fdd46
--- /dev/null
+++ b/src/browser/BrowserClients.cpp
@@ -0,0 +1,77 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <QJsonValue>
+#include <QJsonParseError>
+#include "BrowserClients.h"
+
+BrowserClients::BrowserClients(BrowserService& browserService) :
+ m_mutex(QMutex::Recursive),
+ m_browserService(browserService)
+{
+ m_clients.reserve(1000);
+}
+
+QJsonObject BrowserClients::readResponse(const QByteArray& arr)
+{
+ QJsonObject json;
+ const QJsonObject message = byteArrayToJson(arr);
+ const QString clientID = getClientID(message);
+
+ if (!clientID.isEmpty()) {
+ const ClientPtr client = getClient(clientID);
+ if (client->browserAction) {
+ json = client->browserAction->readResponse(message);
+ }
+ }
+
+ return json;
+}
+
+QJsonObject BrowserClients::byteArrayToJson(const QByteArray& arr) const
+{
+ QJsonObject json;
+ QJsonParseError err;
+ QJsonDocument doc(QJsonDocument::fromJson(arr, &err));
+ if (doc.isObject()) {
+ json = doc.object();
+ }
+
+ return json;
+}
+
+QString BrowserClients::getClientID(const QJsonObject& json) const
+{
+ return json["clientID"].toString();
+}
+
+BrowserClients::ClientPtr BrowserClients::getClient(const QString& clientID)
+{
+ QMutexLocker locker(&m_mutex);
+ for (const auto &i : m_clients) {
+ if (i->clientID.compare(clientID, Qt::CaseSensitive) == 0) {
+ return i;
+ }
+ }
+
+ // clientID not found, create a new client
+ QSharedPointer<BrowserAction> ba = QSharedPointer<BrowserAction>::create(m_browserService);
+ ClientPtr client = ClientPtr::create(clientID, ba);
+ m_clients.push_back(client);
+ return m_clients.back();
+}
diff --git a/src/browser/BrowserClients.h b/src/browser/BrowserClients.h
new file mode 100755
index 000000000..f9052e7de
--- /dev/null
+++ b/src/browser/BrowserClients.h
@@ -0,0 +1,56 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef BROWSERCLIENTS_H
+#define BROWSERCLIENTS_H
+
+#include <QJsonObject>
+#include <QMutex>
+#include <QVector>
+#include <QSharedPointer>
+#include <QLocalSocket>
+#include "BrowserAction.h"
+
+class BrowserClients
+{
+ struct Client {
+ Client(const QString& id, QSharedPointer<BrowserAction> ba) : clientID(id), browserAction(ba) {}
+ QString clientID;
+ QSharedPointer<BrowserAction> browserAction;
+ };
+
+ typedef QSharedPointer<Client> ClientPtr;
+
+public:
+ BrowserClients(BrowserService& browserService);
+ ~BrowserClients() = default;
+
+ QJsonObject readResponse(const QByteArray& arr);
+
+private:
+ QJsonObject byteArrayToJson(const QByteArray& arr) const;
+ QString getClientID(const QJsonObject& json) const;
+ ClientPtr getClient(const QString& clientID);
+
+private:
+ QMutex m_mutex;
+ QVector<ClientPtr> m_clients;
+ BrowserService& m_browserService;
+};
+
+#endif // BROWSERCLIENTS_H
diff --git a/src/browser/BrowserEntryConfig.cpp b/src/browser/BrowserEntryConfig.cpp
new file mode 100644
index 000000000..36d0c7339
--- /dev/null
+++ b/src/browser/BrowserEntryConfig.cpp
@@ -0,0 +1,109 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "BrowserEntryConfig.h"
+#include <QtCore>
+#include "core/Entry.h"
+#include "core/EntryAttributes.h"
+
+static const char KEEPASSBROWSER_NAME[] = "KeePassXC-Browser Settings";
+
+
+BrowserEntryConfig::BrowserEntryConfig(QObject* parent) :
+ QObject(parent)
+{
+}
+
+QStringList BrowserEntryConfig::allowedHosts() const
+{
+ return m_allowedHosts.toList();
+}
+
+void BrowserEntryConfig::setAllowedHosts(const QStringList& allowedHosts)
+{
+ m_allowedHosts = allowedHosts.toSet();
+}
+
+QStringList BrowserEntryConfig::deniedHosts() const
+{
+ return m_deniedHosts.toList();
+}
+
+void BrowserEntryConfig::setDeniedHosts(const QStringList& deniedHosts)
+{
+ m_deniedHosts = deniedHosts.toSet();
+}
+
+bool BrowserEntryConfig::isAllowed(const QString& host) const
+{
+ return m_allowedHosts.contains(host);
+}
+
+void BrowserEntryConfig::allow(const QString& host)
+{
+ m_allowedHosts.insert(host);
+ m_deniedHosts.remove(host);
+}
+
+bool BrowserEntryConfig::isDenied(const QString& host) const
+{
+ return m_deniedHosts.contains(host);
+}
+
+void BrowserEntryConfig::deny(const QString& host)
+{
+ m_deniedHosts.insert(host);
+ m_allowedHosts.remove(host);
+}
+
+QString BrowserEntryConfig::realm() const
+{
+ return m_realm;
+}
+
+void BrowserEntryConfig::setRealm(const QString& realm)
+{
+ m_realm = realm;
+}
+
+bool BrowserEntryConfig::load(const Entry* entry)
+{
+ QString s = entry->attributes()->value(KEEPASSBROWSER_NAME);
+ if (s.isEmpty()) {
+ return false;
+ }
+
+ QJsonDocument doc = QJsonDocument::fromJson(s.toUtf8());
+ if (doc.isNull()) {
+ return false;
+ }
+
+ QVariantMap map = doc.object().toVariantMap();
+ for (QVariantMap::const_iterator iter = map.cbegin(); iter != map.cend(); ++iter) {
+ setProperty(iter.key().toLatin1(), iter.value());
+ }
+ return true;
+}
+
+void BrowserEntryConfig::save(Entry* entry)
+{
+ QVariantMap v = qo2qv(this);
+ QJsonObject o = QJsonObject::fromVariantMap(v);
+ QByteArray json = QJsonDocument(o).toJson(QJsonDocument::Compact);
+ entry->attributes()->set(KEEPASSBROWSER_NAME, json);
+}
diff --git a/src/browser/BrowserEntryConfig.h b/src/browser/BrowserEntryConfig.h
new file mode 100644
index 000000000..0ffaf985b
--- /dev/null
+++ b/src/browser/BrowserEntryConfig.h
@@ -0,0 +1,60 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef BROWSERENTRYCONFIG_H
+#define BROWSERENTRYCONFIG_H
+
+#include <QtCore/QObject>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QSet>
+#include "Variant.h"
+
+class Entry;
+
+class BrowserEntryConfig : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QStringList Allow READ allowedHosts WRITE setAllowedHosts)
+ Q_PROPERTY(QStringList Deny READ deniedHosts WRITE setDeniedHosts )
+ Q_PROPERTY(QString Realm READ realm WRITE setRealm )
+
+public:
+ BrowserEntryConfig(QObject* object = 0);
+
+ bool load(const Entry* entry);
+ void save(Entry* entry);
+ bool isAllowed(const QString& host) const;
+ void allow(const QString& host);
+ bool isDenied(const QString& host) const;
+ void deny(const QString& host);
+ QString realm() const;
+ void setRealm(const QString& realm);
+
+private:
+ QStringList allowedHosts() const;
+ void setAllowedHosts(const QStringList& allowedHosts);
+ QStringList deniedHosts() const;
+ void setDeniedHosts(const QStringList& deniedHosts);
+
+ QSet<QString> m_allowedHosts;
+ QSet<QString> m_deniedHosts;
+ QString m_realm;
+};
+
+#endif // BROWSERENTRYCONFIG_H
diff --git a/src/browser/BrowserOptionDialog.cpp b/src/browser/BrowserOptionDialog.cpp
new file mode 100755
index 000000000..693e62d26
--- /dev/null
+++ b/src/browser/BrowserOptionDialog.cpp
@@ -0,0 +1,141 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "BrowserOptionDialog.h"
+#include "ui_BrowserOptionDialog.h"
+#include "config-keepassx.h"
+#include "BrowserSettings.h"
+#include "core/FilePath.h"
+
+#include <QMessageBox>
+#include <QFileDialog>
+
+BrowserOptionDialog::BrowserOptionDialog(QWidget* parent) :
+ QWidget(parent),
+ m_ui(new Ui::BrowserOptionDialog())
+{
+ m_ui->setupUi(this);
+ connect(m_ui->removeSharedEncryptionKeys, SIGNAL(clicked()), this, SIGNAL(removeSharedEncryptionKeys()));
+ connect(m_ui->removeStoredPermissions, SIGNAL(clicked()), this, SIGNAL(removeStoredPermissions()));
+
+ m_ui->warningWidget->showMessage(tr("<b>Warning:</b> The following options can be dangerous!"), MessageWidget::Warning);
+ m_ui->warningWidget->setCloseButtonVisible(false);
+ m_ui->warningWidget->setAutoHideTimeout(-1);
+
+ m_ui->tabWidget->setEnabled(m_ui->enableBrowserSupport->isChecked());
+ connect(m_ui->enableBrowserSupport, SIGNAL(toggled(bool)), m_ui->tabWidget, SLOT(setEnabled(bool)));
+
+ m_ui->customProxyLocation->setEnabled(m_ui->useCustomProxy->isChecked());
+ m_ui->customProxyLocationBrowseButton->setEnabled(m_ui->useCustomProxy->isChecked());
+ connect(m_ui->useCustomProxy, SIGNAL(toggled(bool)), m_ui->customProxyLocation, SLOT(setEnabled(bool)));
+ connect(m_ui->useCustomProxy, SIGNAL(toggled(bool)), m_ui->customProxyLocationBrowseButton, SLOT(setEnabled(bool)));
+ connect(m_ui->customProxyLocationBrowseButton, SIGNAL(clicked()), this, SLOT(showProxyLocationFileDialog()));
+
+ m_ui->browserGlobalWarningWidget->setVisible(false);
+}
+
+BrowserOptionDialog::~BrowserOptionDialog()
+{
+}
+
+void BrowserOptionDialog::loadSettings()
+{
+ BrowserSettings settings;
+ m_ui->enableBrowserSupport->setChecked(settings.isEnabled());
+
+ m_ui->showNotification->setChecked(settings.showNotification());
+ m_ui->bestMatchOnly->setChecked(settings.bestMatchOnly());
+ m_ui->unlockDatabase->setChecked(settings.unlockDatabase());
+ m_ui->matchUrlScheme->setChecked(settings.matchUrlScheme());
+
+ // hide unimplemented options
+ // TODO: fix this
+ m_ui->showNotification->hide();
+ m_ui->bestMatchOnly->hide();
+
+ if (settings.sortByUsername()) {
+ m_ui->sortByUsername->setChecked(true);
+ } else {
+ m_ui->sortByTitle->setChecked(true);
+ }
+
+ m_ui->alwaysAllowAccess->setChecked(settings.alwaysAllowAccess());
+ m_ui->alwaysAllowUpdate->setChecked(settings.alwaysAllowUpdate());
+ m_ui->searchInAllDatabases->setChecked(settings.searchInAllDatabases());
+ m_ui->supportKphFields->setChecked(settings.supportKphFields());
+ m_ui->supportBrowserProxy->setChecked(settings.supportBrowserProxy());
+ m_ui->useCustomProxy->setChecked(settings.useCustomProxy());
+ m_ui->customProxyLocation->setText(settings.customProxyLocation());
+ m_ui->updateBinaryPath->setChecked(settings.updateBinaryPath());
+ m_ui->chromeSupport->setChecked(settings.chromeSupport());
+ m_ui->chromiumSupport->setChecked(settings.chromiumSupport());
+ m_ui->firefoxSupport->setChecked(settings.firefoxSupport());
+ m_ui->vivaldiSupport->setChecked(settings.vivaldiSupport());
+
+#if defined(KEEPASSXC_DIST_APPIMAGE)
+ m_ui->supportBrowserProxy->setChecked(true);
+ m_ui->supportBrowserProxy->setEnabled(false);
+#elif defined(KEEPASSXC_DIST_SNAP)
+ m_ui->enableBrowserSupport->setChecked(false);
+ m_ui->enableBrowserSupport->setEnabled(false);
+ m_ui->browserGlobalWarningWidget->showMessage(
+ tr("We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment."), MessageWidget::Warning);
+ m_ui->browserGlobalWarningWidget->setCloseButtonVisible(false);
+ m_ui->browserGlobalWarningWidget->setAutoHideTimeout(-1);
+#endif
+}
+
+void BrowserOptionDialog::saveSettings()
+{
+ BrowserSettings settings;
+ settings.setEnabled(m_ui->enableBrowserSupport->isChecked());
+ settings.setShowNotification(m_ui->showNotification->isChecked());
+ settings.setBestMatchOnly(m_ui->bestMatchOnly->isChecked());
+ settings.setUnlockDatabase(m_ui->unlockDatabase->isChecked());
+ settings.setMatchUrlScheme(m_ui->matchUrlScheme->isChecked());
+ settings.setSortByUsername(m_ui->sortByUsername->isChecked());
+
+ settings.setSupportBrowserProxy(m_ui->supportBrowserProxy->isChecked());
+ settings.setUseCustomProxy(m_ui->useCustomProxy->isChecked());
+ settings.setCustomProxyLocation(m_ui->customProxyLocation->text());
+
+ settings.setUpdateBinaryPath(m_ui->updateBinaryPath->isChecked());
+ settings.setAlwaysAllowAccess(m_ui->alwaysAllowAccess->isChecked());
+ settings.setAlwaysAllowUpdate(m_ui->alwaysAllowUpdate->isChecked());
+ settings.setSearchInAllDatabases(m_ui->searchInAllDatabases->isChecked());
+ settings.setSupportKphFields(m_ui->supportKphFields->isChecked());
+
+ settings.setChromeSupport(m_ui->chromeSupport->isChecked());
+ settings.setChromiumSupport(m_ui->chromiumSupport->isChecked());
+ settings.setFirefoxSupport(m_ui->firefoxSupport->isChecked());
+ settings.setVivaldiSupport(m_ui->vivaldiSupport->isChecked());
+}
+
+void BrowserOptionDialog::showProxyLocationFileDialog()
+{
+#ifdef Q_OS_WIN
+ QString fileTypeFilter(tr("Executable Files (*.exe);;All Files (*.*)"));
+#else
+ QString fileTypeFilter(tr("Executable Files (*)"));
+#endif
+ auto proxyLocation = QFileDialog::getOpenFileName(this, tr("Select custom proxy location"),
+ QFileInfo(QCoreApplication::applicationDirPath()).filePath(),
+ fileTypeFilter);
+ m_ui->customProxyLocation->setText(proxyLocation);
+}
diff --git a/src/browser/BrowserOptionDialog.h b/src/browser/BrowserOptionDialog.h
new file mode 100755
index 000000000..b562f6c18
--- /dev/null
+++ b/src/browser/BrowserOptionDialog.h
@@ -0,0 +1,53 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef BROWSEROPTIONDIALOG_H
+#define BROWSEROPTIONDIALOG_H
+
+#include <QWidget>
+#include <QScopedPointer>
+
+namespace Ui {
+class BrowserOptionDialog;
+}
+
+class BrowserOptionDialog : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit BrowserOptionDialog(QWidget* parent = nullptr);
+ ~BrowserOptionDialog();
+
+public slots:
+ void loadSettings();
+ void saveSettings();
+
+signals:
+ void removeSharedEncryptionKeys();
+ void removeStoredPermissions();
+
+private slots:
+ void showProxyLocationFileDialog();
+
+private:
+ QScopedPointer<Ui::BrowserOptionDialog> m_ui;
+};
+
+#endif // BROWSEROPTIONDIALOG_H
diff --git a/src/browser/BrowserOptionDialog.ui b/src/browser/BrowserOptionDialog.ui
new file mode 100755
index 000000000..e82379452
--- /dev/null
+++ b/src/browser/BrowserOptionDialog.ui
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BrowserOptionDialog</class>
+ <widget class="QWidget" name="BrowserOptionDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>523</width>
+ <height>456</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="MessageWidget" name="browserGlobalWarningWidget" native="true"/>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="enableBrowserSupport">
+ <property name="toolTip">
+ <string>This is required for accessing your databases with KeePassXC-Browser</string>
+ </property>
+ <property name="text">
+ <string>Enable KeepassXC browser integration</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>General</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="browsersGroupBox">
+ <property name="title">
+ <string>Enable integration for these browsers:</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="horizontalSpacing">
+ <number>40</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="chromeSupport">
+ <property name="text">
+ <string>&amp;Google Chrome</string>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="firefoxSupport">
+ <property name="text">
+ <string>&amp;Firefox</string>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>179</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="chromiumSupport">
+ <property name="text">
+ <string>&amp;Chromium</string>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="vivaldiSupport">
+ <property name="text">
+ <string>&amp;Vivaldi</string>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>4</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="showNotification">
+ <property name="text">
+ <string extracomment="Credentials mean login data requested via browser extension">Show a &amp;notification when credentials are requested</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="unlockDatabase">
+ <property name="text">
+ <string>Re&amp;quest to unlock the database if it is locked</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="matchUrlScheme">
+ <property name="toolTip">
+ <string>Only entries with the same scheme (http://, https://, ...) are returned.</string>
+ </property>
+ <property name="text">
+ <string>&amp;Match URL scheme (e.g., https://...)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="bestMatchOnly">
+ <property name="toolTip">
+ <string>Only returns the best matches for a specific URL instead of all entries for the whole domain.</string>
+ </property>
+ <property name="text">
+ <string>&amp;Return only best-matching credentials</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="sortByTitle">
+ <property name="text">
+ <string extracomment="Credentials mean login data requested via browser extension">Sort &amp;matching credentials by title</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="sortByUsername">
+ <property name="text">
+ <string extracomment="Credentials mean login data requested via browser extension">Sort matching credentials by &amp;username</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>10</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QPushButton" name="removeSharedEncryptionKeys">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&amp;Disconnect all browsers</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="removeStoredPermissions">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Forget all remembered &amp;permissions</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_2">
+ <attribute name="title">
+ <string>Advanced</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="MessageWidget" name="warningWidget" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="alwaysAllowAccess">
+ <property name="text">
+ <string extracomment="Credentials mean login data requested via browser extension">Never &amp;ask before accessing credentials</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="alwaysAllowUpdate">
+ <property name="text">
+ <string extracomment="Credentials mean login data requested via browser extension">Never ask before &amp;updating credentials</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="searchInAllDatabases">
+ <property name="toolTip">
+ <string>Only the selected database has to be connected with a client.</string>
+ </property>
+ <property name="text">
+ <string extracomment="Credentials mean login data requested via browser extension">Searc&amp;h in all opened databases for matching credentials</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="supportKphFields">
+ <property name="toolTip">
+ <string>Automatically creating or updating string fields is not supported.</string>
+ </property>
+ <property name="text">
+ <string>&amp;Return advanced string fields which start with &quot;KPH: &quot;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="updateBinaryPath">
+ <property name="toolTip">
+ <string>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</string>
+ </property>
+ <property name="text">
+ <string>Update &amp;native messaging manifest files at startup</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="supportBrowserProxy">
+ <property name="toolTip">
+ <string>Support a proxy application between KeePassXC and browser extension.</string>
+ </property>
+ <property name="text">
+ <string>Use a &amp;proxy application between KeePassXC and browser extension</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="useCustomProxy">
+ <property name="toolTip">
+ <string>Use a custom proxy location if you installed a proxy manually.</string>
+ </property>
+ <property name="text">
+ <string comment="Meant is the proxy for KeePassXC-Browser">Use a &amp;custom proxy location</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLineEdit" name="customProxyLocation">
+ <property name="maxLength">
+ <number>999</number>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="customProxyLocationBrowseButton">
+ <property name="text">
+ <string extracomment="Button for opening file dialog">Browse...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MessageWidget</class>
+ <extends>QWidget</extends>
+ <header>gui/MessageWidget.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp
new file mode 100644
index 000000000..fb89e8bcb
--- /dev/null
+++ b/src/browser/BrowserService.cpp
@@ -0,0 +1,744 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <QJsonArray>
+#include <QInputDialog>
+#include <QProgressDialog>
+#include <QMessageBox>
+#include "BrowserService.h"
+#include "BrowserSettings.h"
+#include "BrowserEntryConfig.h"
+#include "BrowserAccessControlDialog.h"
+#include "core/Database.h"
+#include "core/Group.h"
+#include "core/EntrySearcher.h"
+#include "core/Metadata.h"
+#include "core/Uuid.h"
+#include "core/PasswordGenerator.h"
+#include "gui/MainWindow.h"
+
+
+// de887cc3-0363-43b8-974b-5911b8816224
+static const unsigned char KEEPASSXCBROWSER_UUID_DATA[] = {
+ 0xde, 0x88, 0x7c, 0xc3, 0x03, 0x63, 0x43, 0xb8,
+ 0x97, 0x4b, 0x59, 0x11, 0xb8, 0x81, 0x62, 0x24
+};
+static const Uuid KEEPASSXCBROWSER_UUID = Uuid(QByteArray::fromRawData(reinterpret_cast<const char *>(KEEPASSXCBROWSER_UUID_DATA), sizeof(KEEPASSXCBROWSER_UUID_DATA)));
+static const char KEEPASSXCBROWSER_NAME[] = "KeePassXC-Browser Settings";
+static const char ASSOCIATE_KEY_PREFIX[] = "Public Key: ";
+static const char KEEPASSXCBROWSER_GROUP_NAME[] = "KeePassXC-Browser Passwords";
+static int KEEPASSXCBROWSER_DEFAULT_ICON = 1;
+
+BrowserService::BrowserService(DatabaseTabWidget* parent) :
+ m_dbTabWidget(parent),
+ m_dialogActive(false)
+{
+ connect(m_dbTabWidget, SIGNAL(databaseLocked(DatabaseWidget*)), this, SLOT(databaseLocked(DatabaseWidget*)));
+ connect(m_dbTabWidget, SIGNAL(databaseUnlocked(DatabaseWidget*)), this, SLOT(databaseUnlocked(DatabaseWidget*)));
+ connect(m_dbTabWidget, SIGNAL(activateDatabaseChanged(DatabaseWidget*)), this, SLOT(activateDatabaseChanged(DatabaseWidget*)));
+}
+
+bool BrowserService::isDatabaseOpened() const
+{
+ DatabaseWidget* dbWidget = m_dbTabWidget->currentDatabaseWidget();
+ if (!dbWidget) {
+ return false;
+ }
+
+ return dbWidget->currentMode() == DatabaseWidget::ViewMode || dbWidget->currentMode() == DatabaseWidget::EditMode;
+
+}
+
+bool BrowserService::openDatabase(bool triggerUnlock)
+{
+ if (!BrowserSettings::unlockDatabase()) {
+ return false;
+ }
+
+ DatabaseWidget* dbWidget = m_dbTabWidget->currentDatabaseWidget();
+ if (!dbWidget) {
+ return false;
+ }
+
+ if (dbWidget->currentMode() == DatabaseWidget::ViewMode || dbWidget->currentMode() == DatabaseWidget::EditMode) {
+ return true;
+ }
+
+ if (triggerUnlock) {
+ KEEPASSXC_MAIN_WINDOW->bringToFront();
+ }
+
+ return false;
+}
+
+void BrowserService::lockDatabase()
+{
+ if (thread() != QThread::currentThread()) {
+ QMetaObject::invokeMethod(this, "lockDatabase", Qt::BlockingQueuedConnection);
+ }
+
+ DatabaseWidget* dbWidget = m_dbTabWidget->currentDatabaseWidget();
+ if (!dbWidget) {
+ return;
+ }
+
+ if (dbWidget->currentMode() == DatabaseWidget::ViewMode || dbWidget->currentMode() == DatabaseWidget::EditMode) {
+ dbWidget->lock();
+ }
+}
+
+QString BrowserService::getDatabaseRootUuid()
+{
+ Database* db = getDatabase();
+ if (!db) {
+ return QString();
+ }
+
+ Group* rootGroup = db->rootGroup();
+ if (!rootGroup) {
+ return QString();
+ }
+
+ return rootGroup->uuid().toHex();
+}
+
+QString BrowserService::getDatabaseRecycleBinUuid()
+{
+ Database* db = getDatabase();
+ if (!db) {
+ return QString();
+ }
+
+ Group* recycleBin = db->metadata()->recycleBin();
+ if (!recycleBin) {
+ return QString();
+ }
+ return recycleBin->uuid().toHex();
+}
+
+Entry* BrowserService::getConfigEntry(bool create)
+{
+ Entry* entry = nullptr;
+ Database* db = getDatabase();
+ if (!db) {
+ return nullptr;
+ }
+
+ entry = db->resolveEntry(KEEPASSXCBROWSER_UUID);
+ if (!entry && create) {
+ entry = new Entry();
+ entry->setTitle(QLatin1String(KEEPASSXCBROWSER_NAME));
+ entry->setUuid(KEEPASSXCBROWSER_UUID);
+ entry->setAutoTypeEnabled(false);
+ entry->setGroup(db->rootGroup());
+ return entry;
+ }
+
+ if (entry && entry->group() == db->metadata()->recycleBin()) {
+ if (!create) {
+ return nullptr;
+ } else {
+ entry->setGroup(db->rootGroup());
+ return entry;
+ }
+ }
+
+ return entry;
+}
+
+QString BrowserService::storeKey(const QString& key)
+{
+ QString id;
+
+ if (thread() != QThread::currentThread()) {
+ QMetaObject::invokeMethod(this, "storeKey", Qt::BlockingQueuedConnection,
+ Q_RETURN_ARG(QString, id),
+ Q_ARG(const QString&, key));
+ return id;
+ }
+
+ Entry* config = getConfigEntry(true);
+ if (!config) {
+ return {};
+ }
+
+ bool contains;
+ QMessageBox::StandardButton dialogResult = QMessageBox::No;
+
+ do {
+ QInputDialog keyDialog;
+ keyDialog.setWindowTitle(tr("KeePassXC: New key association request"));
+ keyDialog.setLabelText(tr("You have received an association request for the above key.\n\n"
+ "If you would like to allow it access to your KeePassXC database,\n"
+ "give it a unique name to identify and accept it."));
+ keyDialog.setOkButtonText(tr("Save and allow access"));
+ keyDialog.setWindowFlags(keyDialog.windowFlags() | Qt::WindowStaysOnTopHint);
+ keyDialog.show();
+ keyDialog.activateWindow();
+ keyDialog.raise();
+ auto ok = keyDialog.exec();
+
+ id = keyDialog.textValue();
+
+ if (ok != QDialog::Accepted || id.isEmpty()) {
+ return {};
+ }
+
+ contains = config->attributes()->contains(QLatin1String(ASSOCIATE_KEY_PREFIX) + id);
+ if (contains) {
+ dialogResult = QMessageBox::warning(nullptr, tr("KeePassXC: Overwrite existing key?"),
+ tr("A shared encryption key with the name \"%1\" "
+ "already exists.\nDo you want to overwrite it?")
+ .arg(id),
+ QMessageBox::Yes | QMessageBox::No);
+ }
+ } while (contains && dialogResult == QMessageBox::No);
+
+ config->attributes()->set(QLatin1String(ASSOCIATE_KEY_PREFIX) + id, key, true);
+ return id;
+}
+
+QString BrowserService::getKey(const QString& id)
+{
+ Entry* config = getConfigEntry();
+ if (!config) {
+ return QString();
+ }
+
+ return config->attributes()->value(QLatin1String(ASSOCIATE_KEY_PREFIX) + id);
+}
+
+QJsonArray BrowserService::findMatchingEntries(const QString& id, const QString& url, const QString& submitUrl, const QString& realm)
+{
+ QJsonArray result;
+ if (thread() != QThread::currentThread()) {
+ QMetaObject::invokeMethod(this, "findMatchingEntries", Qt::BlockingQueuedConnection,
+ Q_RETURN_ARG(QJsonArray, result),
+ Q_ARG(const QString&, id),
+ Q_ARG(const QString&, url),
+ Q_ARG(const QString&, submitUrl),
+ Q_ARG(const QString&, realm));
+ return result;
+ }
+
+ const bool alwaysAllowAccess = BrowserSettings::alwaysAllowAccess();
+ const QString host = QUrl(url).host();
+ const QString submitHost = QUrl(submitUrl).host();
+
+ // Check entries for authorization
+ QList<Entry*> pwEntriesToConfirm;
+ QList<Entry*> pwEntries;
+ for (Entry* entry : searchEntries(url)) {
+ switch (checkAccess(entry, host, submitHost, realm)) {
+ case Denied:
+ continue;
+
+ case Unknown:
+ if (alwaysAllowAccess) {
+ pwEntries.append(entry);
+ } else {
+ pwEntriesToConfirm.append(entry);
+ }
+ break;
+
+ case Allowed:
+ pwEntries.append(entry);
+ break;
+ }
+ }
+
+ // Confirm entries
+ if (confirmEntries(pwEntriesToConfirm, url, host, submitHost, realm)) {
+ pwEntries.append(pwEntriesToConfirm);
+ }
+
+ if (pwEntries.isEmpty()) {
+ return QJsonArray();
+ }
+
+ // Sort results
+ pwEntries = sortEntries(pwEntries, host, submitUrl);
+
+ // Fill the list
+ for (Entry* entry : pwEntries) {
+ result << prepareEntry(entry);
+ }
+
+ return result;
+}
+
+void BrowserService::addEntry(const QString&, const QString& login, const QString& password, const QString& url, const QString& submitUrl, const QString& realm)
+{
+ Group* group = findCreateAddEntryGroup();
+ if (!group) {
+ return;
+ }
+
+ Entry* entry = new Entry();
+ entry->setUuid(Uuid::random());
+ entry->setTitle(QUrl(url).host());
+ entry->setUrl(url);
+ entry->setIcon(KEEPASSXCBROWSER_DEFAULT_ICON);
+ entry->setUsername(login);
+ entry->setPassword(password);
+ entry->setGroup(group);
+
+ const QString host = QUrl(url).host();
+ const QString submitHost = QUrl(submitUrl).host();
+ BrowserEntryConfig config;
+ config.allow(host);
+
+ if (!submitHost.isEmpty()) {
+ config.allow(submitHost);
+ }
+ if (!realm.isEmpty()) {
+ config.setRealm(realm);
+ }
+ config.save(entry);
+}
+
+void BrowserService::updateEntry(const QString& id, const QString& uuid, const QString& login, const QString& password, const QString& url)
+{
+ if (thread() != QThread::currentThread()) {
+ QMetaObject::invokeMethod(this, "updateEntry", Qt::BlockingQueuedConnection,
+ Q_ARG(const QString&, id),
+ Q_ARG(const QString&, uuid),
+ Q_ARG(const QString&, login),
+ Q_ARG(const QString&, password),
+ Q_ARG(const QString&, url));
+ }
+
+ Database* db = getDatabase();
+ if (!db) {
+ return;
+ }
+
+ Entry* entry = db->resolveEntry(Uuid::fromHex(uuid));
+ if (!entry) {
+ return;
+ }
+
+ QString username = entry->username();
+ if (username.isEmpty()) {
+ return;
+ }
+
+ if (username.compare(login, Qt::CaseSensitive) != 0 || entry->password().compare(password, Qt::CaseSensitive) != 0) {
+ QMessageBox::StandardButton dialogResult = QMessageBox::No;
+ if (!BrowserSettings::alwaysAllowUpdate()) {
+ dialogResult = QMessageBox::warning(0, tr("KeePassXC: Update Entry"),
+ tr("Do you want to update the information in %1 - %2?")
+ .arg(QUrl(url).host()).arg(username),
+ QMessageBox::Yes|QMessageBox::No);
+ }
+
+ if (BrowserSettings::alwaysAllowUpdate() || dialogResult == QMessageBox::Yes) {
+ entry->beginUpdate();
+ entry->setUsername(login);
+ entry->setPassword(password);
+ entry->endUpdate();
+ }
+ }
+}
+
+QList<Entry*> BrowserService::searchEntries(Database* db, const QString& hostname)
+{
+ QList<Entry*> entries;
+ Group* rootGroup = db->rootGroup();
+ if (!rootGroup) {
+ return entries;
+ }
+
+ for (Entry* entry : EntrySearcher().search(hostname, rootGroup, Qt::CaseInsensitive)) {
+ QString title = entry->title();
+ QString url = entry->url();
+
+ // Filter to match hostname in Title and Url fields
+ if ((!title.isEmpty() && hostname.contains(title))
+ || (!url.isEmpty() && hostname.contains(url))
+ || (matchUrlScheme(title) && hostname.endsWith(QUrl(title).host()))
+ || (matchUrlScheme(url) && hostname.endsWith(QUrl(url).host())) ) {
+ entries.append(entry);
+ }
+ }
+
+ return entries;
+}
+
+QList<Entry*> BrowserService::searchEntries(const QString& text)
+{
+ // Get the list of databases to search
+ QList<Database*> databases;
+ if (BrowserSettings::searchInAllDatabases()) {
+ const int count = m_dbTabWidget->count();
+ for (int i = 0; i < count; ++i) {
+ if (DatabaseWidget* dbWidget = qobject_cast<DatabaseWidget*>(m_dbTabWidget->widget(i))) {
+ if (Database* db = dbWidget->database()) {
+ databases << db;
+ }
+ }
+ }
+ } else if (Database* db = getDatabase()) {
+ databases << db;
+ }
+
+ // Search entries matching the hostname
+ QString hostname = QUrl(text).host();
+ QList<Entry*> entries;
+ do {
+ for (Database* db : databases) {
+ entries << searchEntries(db, hostname);
+ }
+ } while (entries.isEmpty() && removeFirstDomain(hostname));
+
+ return entries;
+}
+
+void BrowserService::removeSharedEncryptionKeys()
+{
+ if (!isDatabaseOpened()) {
+ QMessageBox::critical(0, tr("KeePassXC: Database locked!"),
+ tr("The active database is locked!\n"
+ "Please unlock the selected database or choose another one which is unlocked."),
+ QMessageBox::Ok);
+ return;
+ }
+
+ Entry* entry = getConfigEntry();
+ if (!entry) {
+ QMessageBox::information(0, tr("KeePassXC: Settings not available!"),
+ tr("The active database does not contain a settings entry."),
+ QMessageBox::Ok);
+ return;
+ }
+
+ QStringList keysToRemove;
+ for (const QString& key : entry->attributes()->keys()) {
+ if (key.startsWith(ASSOCIATE_KEY_PREFIX)) {
+ keysToRemove << key;
+ }
+ }
+
+ if (keysToRemove.isEmpty()) {
+ QMessageBox::information(0, tr("KeePassXC: No keys found"),
+ tr("No shared encryption keys found in KeePassXC Settings."),
+ QMessageBox::Ok);
+ return;
+ }
+
+ entry->beginUpdate();
+ for (const QString& key : keysToRemove) {
+ entry->attributes()->remove(key);
+ }
+ entry->endUpdate();
+
+ const int count = keysToRemove.count();
+ QMessageBox::information(0, tr("KeePassXC: Removed keys from database"),
+ tr("Successfully removed %n encryption key(s) from KeePassXC settings.", "", count),
+ QMessageBox::Ok);
+
+}
+
+void BrowserService::removeStoredPermissions()
+{
+ if (!isDatabaseOpened()) {
+ QMessageBox::critical(0, tr("KeePassXC: Database locked!"),
+ tr("The active database is locked!\n"
+ "Please unlock the selected database or choose another one which is unlocked."),
+ QMessageBox::Ok);
+ return;
+ }
+
+ Database* db = m_dbTabWidget->currentDatabaseWidget()->database();
+ if (!db) {
+ return;
+ }
+
+ QList<Entry*> entries = db->rootGroup()->entriesRecursive();
+
+ QProgressDialog progress(tr("Removing stored permissions…"), tr("Abort"), 0, entries.count());
+ progress.setWindowModality(Qt::WindowModal);
+
+ uint counter = 0;
+ for (Entry* entry : entries) {
+ if (progress.wasCanceled()) {
+ return;
+ }
+
+ if (entry->attributes()->contains(KEEPASSXCBROWSER_NAME)) {
+ entry->beginUpdate();
+ entry->attributes()->remove(KEEPASSXCBROWSER_NAME);
+ entry->endUpdate();
+ ++counter;
+ }
+ progress.setValue(progress.value() + 1);
+ }
+ progress.reset();
+
+ if (counter > 0) {
+ QMessageBox::information(0, tr("KeePassXC: Removed permissions"),
+ tr("Successfully removed permissions from %n entry(s).", "", counter),
+ QMessageBox::Ok);
+ } else {
+ QMessageBox::information(0, tr("KeePassXC: No entry with permissions found!"),
+ tr("The active database does not contain an entry with permissions."),
+ QMessageBox::Ok);
+ }
+}
+
+QList<Entry*> BrowserService::sortEntries(QList<Entry*>& pwEntries, const QString& host, const QString& entryUrl)
+{
+ QUrl url(entryUrl);
+ if (url.scheme().isEmpty()) {
+ url.setScheme("http");
+ }
+
+ const QString submitUrl = url.toString(QUrl::StripTrailingSlash);
+ const QString baseSubmitUrl = url.toString(QUrl::StripTrailingSlash | QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment);
+
+ QMultiMap<int, const Entry*> priorities;
+ for (const Entry* entry : pwEntries) {
+ priorities.insert(sortPriority(entry, host, submitUrl, baseSubmitUrl), entry);
+ }
+
+ QString field = BrowserSettings::sortByTitle() ? "Title" : "UserName";
+ std::sort(pwEntries.begin(), pwEntries.end(), [&priorities, &field](const Entry* left, const Entry* right) {
+ int res = priorities.key(left) - priorities.key(right);
+ if (res == 0) {
+ return QString::localeAwareCompare(left->attributes()->value(field), right->attributes()->value(field)) < 0;
+ }
+ return res < 0;
+ });
+
+ return pwEntries;
+}
+
+bool BrowserService::confirmEntries(QList<Entry*>& pwEntriesToConfirm, const QString& url, const QString& host, const QString& submitHost, const QString& realm)
+{
+ if (pwEntriesToConfirm.isEmpty() || m_dialogActive) {
+ return false;
+ }
+
+ m_dialogActive = true;
+ BrowserAccessControlDialog accessControlDialog;
+ accessControlDialog.setUrl(url);
+ accessControlDialog.setItems(pwEntriesToConfirm);
+
+ int res = accessControlDialog.exec();
+ if (accessControlDialog.remember()) {
+ for (Entry* entry : pwEntriesToConfirm) {
+ BrowserEntryConfig config;
+ config.load(entry);
+ if (res == QDialog::Accepted) {
+ config.allow(host);
+ if (!submitHost.isEmpty() && host != submitHost)
+ config.allow(submitHost);
+ } else if (res == QDialog::Rejected) {
+ config.deny(host);
+ if (!submitHost.isEmpty() && host != submitHost) {
+ config.deny(submitHost);
+ }
+ }
+ if (!realm.isEmpty()) {
+ config.setRealm(realm);
+ }
+ config.save(entry);
+ }
+ }
+
+ m_dialogActive = false;
+ if (res == QDialog::Accepted) {
+ return true;
+ }
+
+ return false;
+}
+
+QJsonObject BrowserService::prepareEntry(const Entry* entry)
+{
+ QJsonObject res;
+ res["login"] = entry->resolveMultiplePlaceholders(entry->username());
+ res["password"] = entry->resolveMultiplePlaceholders(entry->password());
+ res["name"] = entry->resolveMultiplePlaceholders(entry->title());
+ res["uuid"] = entry->resolveMultiplePlaceholders(entry->uuid().toHex());
+
+ if (BrowserSettings::supportKphFields()) {
+ const EntryAttributes* attr = entry->attributes();
+ QJsonArray stringFields;
+ for (const QString& key : attr->keys()) {
+ if (key.startsWith(QLatin1String("KPH: "))) {
+ QJsonObject sField;
+ sField[key] = entry->resolveMultiplePlaceholders(attr->value(key));
+ stringFields << sField;
+ }
+ }
+ res["stringFields"] = stringFields;
+ }
+ return res;
+}
+
+BrowserService::Access BrowserService::checkAccess(const Entry* entry, const QString& host, const QString& submitHost, const QString& realm)
+{
+ BrowserEntryConfig config;
+ if (!config.load(entry)) {
+ return Unknown;
+ }
+ if ((config.isAllowed(host)) && (submitHost.isEmpty() || config.isAllowed(submitHost))) {
+ return Allowed;
+ }
+ if ((config.isDenied(host)) || (!submitHost.isEmpty() && config.isDenied(submitHost))) {
+ return Denied;
+ }
+ if (!realm.isEmpty() && config.realm() != realm) {
+ return Denied;
+ }
+ return Unknown;
+}
+
+Group* BrowserService::findCreateAddEntryGroup()
+{
+ Database* db = getDatabase();
+ if (!db) {
+ return nullptr;
+ }
+
+ Group* rootGroup = db->rootGroup();
+ if (!rootGroup) {
+ return nullptr;
+ }
+
+ const QString groupName = QLatin1String(KEEPASSXCBROWSER_GROUP_NAME); //TODO: setting to decide where new keys are created
+
+ for (const Group* g : rootGroup->groupsRecursive(true)) {
+ if (g->name() == groupName) {
+ return db->resolveGroup(g->uuid());
+ }
+ }
+
+ Group* group = new Group();
+ group->setUuid(Uuid::random());
+ group->setName(groupName);
+ group->setIcon(KEEPASSXCBROWSER_DEFAULT_ICON);
+ group->setParent(rootGroup);
+ return group;
+}
+
+int BrowserService::sortPriority(const Entry* entry, const QString& host, const QString& submitUrl, const QString& baseSubmitUrl) const
+{
+ QUrl url(entry->url());
+ if (url.scheme().isEmpty()) {
+ url.setScheme("http");
+ }
+ const QString entryURL = url.toString(QUrl::StripTrailingSlash);
+ const QString baseEntryURL = url.toString(QUrl::StripTrailingSlash | QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment);
+
+ if (submitUrl == entryURL) {
+ return 100;
+ }
+ if (submitUrl.startsWith(entryURL) && entryURL != host && baseSubmitUrl != entryURL) {
+ return 90;
+ }
+ if (submitUrl.startsWith(baseEntryURL) && entryURL != host && baseSubmitUrl != baseEntryURL) {
+ return 80;
+ }
+ if (entryURL == host) {
+ return 70;
+ }
+ if (entryURL == baseSubmitUrl) {
+ return 60;
+ }
+ if (entryURL.startsWith(submitUrl)) {
+ return 50;
+ }
+ if (entryURL.startsWith(baseSubmitUrl) && baseSubmitUrl != host) {
+ return 40;
+ }
+ if (submitUrl.startsWith(entryURL)) {
+ return 30;
+ }
+ if (submitUrl.startsWith(baseEntryURL)) {
+ return 20;
+ }
+ if (entryURL.startsWith(host)) {
+ return 10;
+ }
+ if (host.startsWith(entryURL)) {
+ return 5;
+ }
+ return 0;
+}
+
+bool BrowserService::matchUrlScheme(const QString& url)
+{
+ QUrl address(url);
+ return !address.scheme().isEmpty();
+}
+
+bool BrowserService::removeFirstDomain(QString& hostname)
+{
+ int pos = hostname.indexOf(".");
+ if (pos < 0) {
+ return false;
+ }
+
+ // Don't remove the second-level domain if it's the only one
+ if (hostname.count(".") > 1) {
+ hostname = hostname.mid(pos + 1);
+ return !hostname.isEmpty();
+ }
+
+ // Nothing removed
+ return false;
+}
+
+Database* BrowserService::getDatabase()
+{
+ if (DatabaseWidget* dbWidget = m_dbTabWidget->currentDatabaseWidget()) {
+ if (Database* db = dbWidget->database()) {
+ return db;
+ }
+ }
+ return nullptr;
+}
+
+void BrowserService::databaseLocked(DatabaseWidget* dbWidget)
+{
+ if (dbWidget) {
+ emit databaseLocked();
+ }
+}
+
+void BrowserService::databaseUnlocked(DatabaseWidget* dbWidget)
+{
+ if (dbWidget) {
+ emit databaseUnlocked();
+ }
+}
+
+void BrowserService::activateDatabaseChanged(DatabaseWidget* dbWidget)
+{
+ if (dbWidget) {
+ auto currentMode = dbWidget->currentMode();
+ if (currentMode == DatabaseWidget::ViewMode || currentMode == DatabaseWidget::EditMode) {
+ emit databaseUnlocked();
+ } else {
+ emit databaseLocked();
+ }
+ }
+}
diff --git a/src/browser/BrowserService.h b/src/browser/BrowserService.h
new file mode 100644
index 000000000..5a96e1ecd
--- /dev/null
+++ b/src/browser/BrowserService.h
@@ -0,0 +1,82 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 or (at your option)
+* version 3 of the License.
+*
+* 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef BROWSERSERVICE_H
+#define BROWSERSERVICE_H
+
+#include <QtCore>
+#include <QObject>
+#include "gui/DatabaseTabWidget.h"
+#include "core/Entry.h"
+
+enum { max_length = 16*1024 };
+
+class BrowserService : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit BrowserService(DatabaseTabWidget* parent);
+
+ bool isDatabaseOpened() const;
+ bool openDatabase(bool triggerUnlock);
+ QString getDatabaseRootUuid();
+ QString getDatabaseRecycleBinUuid();
+ Entry* getConfigEntry(bool create = false);
+ QString getKey(const QString& id);
+ void addEntry(const QString& id, const QString& login, const QString& password, const QString& url, const QString& submitUrl, const QString& realm);
+ QList<Entry*> searchEntries(Database* db, const QString& hostname);
+ QList<Entry*> searchEntries(const QString& text);
+ void removeSharedEncryptionKeys();
+ void removeStoredPermissions();
+
+public slots:
+ QJsonArray findMatchingEntries(const QString& id, const QString& url, const QString& submitUrl, const QString& realm);
+ QString storeKey(const QString& key);
+ void updateEntry(const QString& id, const QString& uuid, const QString& login, const QString& password, const QString& url);
+ void databaseLocked(DatabaseWidget* dbWidget);
+ void databaseUnlocked(DatabaseWidget* dbWidget);
+ void activateDatabaseChanged(DatabaseWidget* dbWidget);
+ void lockDatabase();
+
+signals:
+ void databaseLocked();
+ void databaseUnlocked();
+ void databaseChanged();
+
+private:
+ enum Access { Denied, Unknown, Allowed};
+
+private:
+ QList<Entry*> sortEntries(QList<Entry*>& pwEntries, const QString& host, const QString& submitUrl);
+ bool confirmEntries(QList<Entry*>& pwEntriesToConfirm, const QString& url, const QString& host, const QString& submitHost, const QString& realm);
+ QJsonObject prepareEntry(const Entry* entry);
+ Access checkAccess(const Entry* entry, const QString& host, const QString& submitHost, const QString& realm);
+ Group* findCreateAddEntryGroup();
+ int sortPriority(const Entry* entry, const QString &host, const QString& submitUrl, const QString& baseSubmitUrl) const;
+ bool matchUrlScheme(const QString& url);
+ bool removeFirstDomain(QString& hostname);
+ Database* getDatabase();
+
+private:
+ DatabaseTabWidget* const m_dbTabWidget;
+ bool m_dialogActive;
+};
+
+#endif // BROWSERSERVICE_H
diff --git a/src/browser/BrowserSettings.cpp b/src/browser/BrowserSettings.cpp
new file mode 100755
index 000000000..ecaf8e23e
--- /dev/null
+++ b/src/browser/BrowserSettings.cpp
@@ -0,0 +1,380 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "BrowserSettings.h"
+#include "core/Config.h"
+
+PasswordGenerator BrowserSettings::m_passwordGenerator;
+PassphraseGenerator BrowserSettings::m_passPhraseGenerator;
+HostInstaller BrowserSettings::m_hostInstaller;
+
+bool BrowserSettings::isEnabled()
+{
+ return config()->get("Browser/Enabled", false).toBool();
+}
+
+void BrowserSettings::setEnabled(bool enabled)
+{
+ config()->set("Browser/Enabled", enabled);
+}
+
+bool BrowserSettings::showNotification()
+{
+ return config()->get("Browser/ShowNotification", true).toBool();
+}
+
+void BrowserSettings::setShowNotification(bool showNotification)
+{
+ config()->set("Browser/ShowNotification", showNotification);
+}
+
+bool BrowserSettings::bestMatchOnly()
+{
+ return config()->get("Browser/BestMatchOnly", false).toBool();
+}
+
+void BrowserSettings::setBestMatchOnly(bool bestMatchOnly)
+{
+ config()->set("Browser/BestMatchOnly", bestMatchOnly);
+}
+
+bool BrowserSettings::unlockDatabase()
+{
+ return config()->get("Browser/UnlockDatabase", true).toBool();
+}
+
+void BrowserSettings::setUnlockDatabase(bool unlockDatabase)
+{
+ config()->set("Browser/UnlockDatabase", unlockDatabase);
+}
+
+bool BrowserSettings::matchUrlScheme()
+{
+ return config()->get("Browser/MatchUrlScheme", true).toBool();
+}
+
+void BrowserSettings::setMatchUrlScheme(bool matchUrlScheme)
+{
+ config()->set("Browser/MatchUrlScheme", matchUrlScheme);
+}
+
+bool BrowserSettings::sortByUsername()
+{
+ return config()->get("Browser/SortByUsername", false).toBool();
+}
+
+void BrowserSettings::setSortByUsername(bool sortByUsername)
+{
+ config()->set("Browser/SortByUsername", sortByUsername);
+}
+
+bool BrowserSettings::sortByTitle()
+{
+ return !sortByUsername();
+}
+
+void BrowserSettings::setSortByTitle(bool sortByUsertitle)
+{
+ setSortByUsername(!sortByUsertitle);
+}
+
+bool BrowserSettings::alwaysAllowAccess()
+{
+ return config()->get("Browser/AlwaysAllowAccess", false).toBool();
+}
+
+void BrowserSettings::setAlwaysAllowAccess(bool alwaysAllowAccess)
+{
+ config()->set("Browser/AlwaysAllowAccess", alwaysAllowAccess);
+}
+
+bool BrowserSettings::alwaysAllowUpdate()
+{
+ return config()->get("Browser/AlwaysAllowUpdate", false).toBool();
+}
+
+void BrowserSettings::setAlwaysAllowUpdate(bool alwaysAllowUpdate)
+{
+ config()->set("Browser/AlwaysAllowUpdate", alwaysAllowUpdate);
+}
+
+bool BrowserSettings::searchInAllDatabases()
+{
+ return config()->get("Browser/SearchInAllDatabases", false).toBool();
+}
+
+void BrowserSettings::setSearchInAllDatabases(bool searchInAllDatabases)
+{
+ config()->set("Browser/SearchInAllDatabases", searchInAllDatabases);
+}
+
+bool BrowserSettings::supportKphFields()
+{
+ return config()->get("Browser/SupportKphFields", true).toBool();
+}
+
+void BrowserSettings::setSupportKphFields(bool supportKphFields)
+{
+ config()->set("Browser/SupportKphFields", supportKphFields);
+}
+
+bool BrowserSettings::supportBrowserProxy()
+{
+ return config()->get("Browser/SupportBrowserProxy", true).toBool();
+}
+
+void BrowserSettings::setSupportBrowserProxy(bool enabled)
+{
+ config()->set("Browser/SupportBrowserProxy", enabled);
+}
+
+bool BrowserSettings::useCustomProxy()
+{
+ return config()->get("Browser/UseCustomProxy", false).toBool();
+}
+
+void BrowserSettings::setUseCustomProxy(bool enabled)
+{
+ config()->set("Browser/UseCustomProxy", enabled);
+}
+
+QString BrowserSettings::customProxyLocation()
+{
+ if (!useCustomProxy()) {
+ return QString();
+ }
+ return config()->get("Browser/CustomProxyLocation", "").toString();
+}
+
+void BrowserSettings::setCustomProxyLocation(QString location)
+{
+ config()->set("Browser/CustomProxyLocation", location);
+}
+
+bool BrowserSettings::updateBinaryPath()
+{
+ return config()->get("Browser/UpdateBinaryPath", false).toBool();
+}
+
+void BrowserSettings::setUpdateBinaryPath(bool enabled)
+{
+ config()->set("Browser/UpdateBinaryPath", enabled);
+}
+
+bool BrowserSettings::chromeSupport() {
+ return m_hostInstaller.checkIfInstalled(HostInstaller::SupportedBrowsers::CHROME);
+}
+
+void BrowserSettings::setChromeSupport(bool enabled) {
+ m_hostInstaller.installBrowser(HostInstaller::SupportedBrowsers::CHROME, enabled, supportBrowserProxy(), customProxyLocation());
+}
+
+bool BrowserSettings::chromiumSupport() {
+ return m_hostInstaller.checkIfInstalled(HostInstaller::SupportedBrowsers::CHROMIUM);
+}
+
+void BrowserSettings::setChromiumSupport(bool enabled) {
+ m_hostInstaller.installBrowser(HostInstaller::SupportedBrowsers::CHROMIUM, enabled, supportBrowserProxy(), customProxyLocation());
+}
+
+bool BrowserSettings::firefoxSupport() {
+ return m_hostInstaller.checkIfInstalled(HostInstaller::SupportedBrowsers::FIREFOX);
+}
+
+void BrowserSettings::setFirefoxSupport(bool enabled) {
+ m_hostInstaller.installBrowser(HostInstaller::SupportedBrowsers::FIREFOX, enabled, supportBrowserProxy(), customProxyLocation());
+}
+
+bool BrowserSettings::vivaldiSupport() {
+ return m_hostInstaller.checkIfInstalled(HostInstaller::SupportedBrowsers::VIVALDI);
+}
+
+void BrowserSettings::setVivaldiSupport(bool enabled) {
+ m_hostInstaller.installBrowser(HostInstaller::SupportedBrowsers::VIVALDI, enabled, supportBrowserProxy(), customProxyLocation());
+}
+
+bool BrowserSettings::passwordUseNumbers()
+{
+ return config()->get("generator/Numbers", PasswordGenerator::DefaultNumbers).toBool();
+}
+
+void BrowserSettings::setPasswordUseNumbers(bool useNumbers)
+{
+ config()->set("generator/Numbers", useNumbers);
+}
+
+bool BrowserSettings::passwordUseLowercase()
+{
+ return config()->get("generator/LowerCase", PasswordGenerator::DefaultLower).toBool();
+}
+
+void BrowserSettings::setPasswordUseLowercase(bool useLowercase)
+{
+ config()->set("generator/LowerCase", useLowercase);
+}
+
+bool BrowserSettings::passwordUseUppercase()
+{
+ return config()->get("generator/UpperCase", PasswordGenerator::DefaultUpper).toBool();
+}
+
+void BrowserSettings::setPasswordUseUppercase(bool useUppercase)
+{
+ config()->set("generator/UpperCase", useUppercase);
+}
+
+bool BrowserSettings::passwordUseSpecial()
+{
+ return config()->get("generator/SpecialChars", PasswordGenerator::DefaultSpecial).toBool();
+}
+
+void BrowserSettings::setPasswordUseSpecial(bool useSpecial)
+{
+ config()->set("generator/SpecialChars", useSpecial);
+}
+
+bool BrowserSettings::passwordUseEASCII()
+{
+ return config()->get("generator/EASCII", PasswordGenerator::DefaultEASCII).toBool();
+}
+
+void BrowserSettings::setPasswordUseEASCII(bool useEASCII)
+{
+ config()->set("generator/EASCII", useEASCII);
+}
+
+int BrowserSettings::passPhraseWordCount()
+{
+ return config()->get("generator/WordCount", PassphraseGenerator::DefaultWordCount).toInt();
+}
+
+void BrowserSettings::setPassPhraseWordCount(int wordCount)
+{
+ config()->set("generator/WordCount", wordCount);
+}
+
+QString BrowserSettings::passPhraseWordSeparator()
+{
+ return config()->get("generator/WordSeparator", PassphraseGenerator::DefaultSeparator).toString();
+}
+
+void BrowserSettings::setPassPhraseWordSeparator(QString separator)
+{
+ config()->set("generator/WordSeparator", separator);
+}
+
+int BrowserSettings::generatorType()
+{
+ return config()->get("generator/Type", 0).toInt();
+}
+
+void BrowserSettings::setGeneratorType(int type)
+{
+ config()->set("generator/Type", type);
+}
+
+bool BrowserSettings::passwordEveryGroup()
+{
+ return config()->get("generator/EnsureEvery", PasswordGenerator::DefaultFromEveryGroup).toBool();
+}
+
+void BrowserSettings::setPasswordEveryGroup(bool everyGroup)
+{
+ config()->get("generator/EnsureEvery", everyGroup);
+}
+
+bool BrowserSettings::passwordExcludeAlike()
+{
+ return config()->get("generator/ExcludeAlike", PasswordGenerator::DefaultLookAlike).toBool();
+}
+
+void BrowserSettings::setPasswordExcludeAlike(bool excludeAlike)
+{
+ config()->set("generator/ExcludeAlike", excludeAlike);
+}
+
+int BrowserSettings::passwordLength()
+{
+ return config()->get("generator/Length", PasswordGenerator::DefaultLength).toInt();
+}
+
+void BrowserSettings::setPasswordLength(int length)
+{
+ config()->set("generator/Length", length);
+ m_passwordGenerator.setLength(length);
+}
+
+PasswordGenerator::CharClasses BrowserSettings::passwordCharClasses()
+{
+ PasswordGenerator::CharClasses classes;
+ if (passwordUseLowercase()) {
+ classes |= PasswordGenerator::LowerLetters;
+ }
+ if (passwordUseUppercase()) {
+ classes |= PasswordGenerator::UpperLetters;
+ }
+ if (passwordUseNumbers()) {
+ classes |= PasswordGenerator::Numbers;
+ }
+ if (passwordUseSpecial()) {
+ classes |= PasswordGenerator::SpecialCharacters;
+ }
+ if (passwordUseEASCII()) {
+ classes |= PasswordGenerator::EASCII;
+ }
+ return classes;
+}
+
+PasswordGenerator::GeneratorFlags BrowserSettings::passwordGeneratorFlags()
+{
+ PasswordGenerator::GeneratorFlags flags;
+ if (passwordExcludeAlike()) {
+ flags |= PasswordGenerator::ExcludeLookAlike;
+ }
+ if (passwordEveryGroup()) {
+ flags |= PasswordGenerator::CharFromEveryGroup;
+ }
+ return flags;
+}
+
+QString BrowserSettings::generatePassword()
+{
+ if (generatorType() == 0) {
+ m_passwordGenerator.setLength(passwordLength());
+ m_passwordGenerator.setCharClasses(passwordCharClasses());
+ m_passwordGenerator.setFlags(passwordGeneratorFlags());
+ return m_passwordGenerator.generatePassword();
+ } else {
+ m_passPhraseGenerator.setDefaultWordList();
+ m_passPhraseGenerator.setWordCount(passPhraseWordCount());
+ m_passPhraseGenerator.setWordSeparator(passPhraseWordSeparator());
+ return m_passPhraseGenerator.generatePassphrase();
+ }
+}
+
+int BrowserSettings::getbits()
+{
+ return m_passwordGenerator.getbits();
+}
+
+void BrowserSettings::updateBinaryPaths(QString customProxyLocation)
+{
+ bool isProxy = supportBrowserProxy();
+ m_hostInstaller.updateBinaryPaths(isProxy, customProxyLocation);
+}
diff --git a/src/browser/BrowserSettings.h b/src/browser/BrowserSettings.h
new file mode 100755
index 000000000..eb59fa5ac
--- /dev/null
+++ b/src/browser/BrowserSettings.h
@@ -0,0 +1,105 @@
+/*
+* Copyright (C) 2013 Francois Ferrand
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef BROWSERSETTINGS_H
+#define BROWSERSETTINGS_H
+
+#include "core/PasswordGenerator.h"
+#include "core/PassphraseGenerator.h"
+#include "HostInstaller.h"
+
+class BrowserSettings
+{
+public:
+ static bool isEnabled();
+ static void setEnabled(bool enabled);
+
+ static bool showNotification(); //TODO!!
+ static void setShowNotification(bool showNotification);
+ static bool bestMatchOnly(); //TODO!!
+ static void setBestMatchOnly(bool bestMatchOnly);
+ static bool unlockDatabase();
+ static void setUnlockDatabase(bool unlockDatabase);
+ static bool matchUrlScheme();
+ static void setMatchUrlScheme(bool matchUrlScheme);
+ static bool sortByUsername();
+ static void setSortByUsername(bool sortByUsername = true);
+ static bool sortByTitle();
+ static void setSortByTitle(bool sortByUsertitle = true);
+ static bool alwaysAllowAccess();
+ static void setAlwaysAllowAccess(bool alwaysAllowAccess);
+ static bool alwaysAllowUpdate();
+ static void setAlwaysAllowUpdate(bool alwaysAllowUpdate);
+ static bool searchInAllDatabases();//TODO!!
+ static void setSearchInAllDatabases(bool searchInAllDatabases);
+ static bool supportKphFields();
+ static void setSupportKphFields(bool supportKphFields);
+
+ static bool supportBrowserProxy();
+ static void setSupportBrowserProxy(bool enabled);
+ static bool useCustomProxy();
+ static void setUseCustomProxy(bool enabled);
+ static QString customProxyLocation();
+ static void setCustomProxyLocation(QString location);
+ static bool updateBinaryPath();
+ static void setUpdateBinaryPath(bool enabled);
+ static bool chromeSupport();
+ static void setChromeSupport(bool enabled);
+ static bool chromiumSupport();
+ static void setChromiumSupport(bool enabled);
+ static bool firefoxSupport();
+ static void setFirefoxSupport(bool enabled);
+ static bool vivaldiSupport();
+ static void setVivaldiSupport(bool enabled);
+
+ static bool passwordUseNumbers();
+ static void setPasswordUseNumbers(bool useNumbers);
+ static bool passwordUseLowercase();
+ static void setPasswordUseLowercase(bool useLowercase);
+ static bool passwordUseUppercase();
+ static void setPasswordUseUppercase(bool useUppercase);
+ static bool passwordUseSpecial();
+ static void setPasswordUseSpecial(bool useSpecial);
+ static bool passwordUseEASCII();
+ static void setPasswordUseEASCII(bool useEASCII);
+ static int passPhraseWordCount();
+ static void setPassPhraseWordCount(int wordCount);
+ static QString passPhraseWordSeparator();
+ static void setPassPhraseWordSeparator(QString separator);
+ static int generatorType();
+ static void setGeneratorType(int type);
+ static bool passwordEveryGroup();
+ static void setPasswordEveryGroup(bool everyGroup);
+ static bool passwordExcludeAlike();
+ static void setPasswordExcludeAlike(bool excludeAlike);
+ static int passwordLength();
+ static void setPasswordLength(int length);
+ static PasswordGenerator::CharClasses passwordCharClasses();
+ static PasswordGenerator::GeneratorFlags passwordGeneratorFlags();
+ static QString generatePassword();
+ static int getbits();
+ static void updateBinaryPaths(QString customProxyLocation = QString());
+
+private:
+ static PasswordGenerator m_passwordGenerator;
+ static PassphraseGenerator m_passPhraseGenerator;
+ static HostInstaller m_hostInstaller;
+};
+
+#endif // BROWSERSETTINGS_H
diff --git a/src/browser/CMakeLists.txt b/src/browser/CMakeLists.txt
new file mode 100755
index 000000000..61215c181
--- /dev/null
+++ b/src/browser/CMakeLists.txt
@@ -0,0 +1,37 @@
+# Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if(WITH_XC_BROWSER)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+ find_package(sodium 1.0.12 REQUIRED)
+
+ set(keepassxcbrowser_SOURCES
+ BrowserAccessControlDialog.cpp
+ BrowserAction.cpp
+ BrowserClients.cpp
+ BrowserEntryConfig.cpp
+ BrowserOptionDialog.cpp
+ BrowserService.cpp
+ BrowserSettings.cpp
+ HostInstaller.cpp
+ NativeMessagingBase.cpp
+ NativeMessagingHost.cpp
+ Variant.cpp
+ )
+
+ add_library(keepassxcbrowser STATIC ${keepassxcbrowser_SOURCES})
+ target_link_libraries(keepassxcbrowser Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Network sodium)
+endif()
diff --git a/src/browser/HostInstaller.cpp b/src/browser/HostInstaller.cpp
new file mode 100644
index 000000000..9b27ab1cf
--- /dev/null
+++ b/src/browser/HostInstaller.cpp
@@ -0,0 +1,240 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "HostInstaller.h"
+#include "config-keepassx.h"
+#include <QDir>
+#include <QFile>
+#include <QStandardPaths>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QCoreApplication>
+#include <QProcessEnvironment>
+#include <QMessageBox>
+
+const QString HostInstaller::HOST_NAME = "org.keepassxc.keepassxc_browser";
+const QStringList HostInstaller::ALLOWED_ORIGINS = QStringList()
+ << "chrome-extension://iopaggbpplllidnfmcghoonnokmjoicf/"
+ << "chrome-extension://oboonakemofpalcgghocfoadofidjkkk/";
+
+const QStringList HostInstaller::ALLOWED_EXTENSIONS = QStringList()
+ << "keepassxc-browser@keepassxc.org";
+
+#if defined(Q_OS_OSX)
+ const QString HostInstaller::TARGET_DIR_CHROME = "/Library/Application Support/Google/Chrome/NativeMessagingHosts";
+ const QString HostInstaller::TARGET_DIR_CHROMIUM = "/Library/Application Support/Chromium/NativeMessagingHosts";
+ const QString HostInstaller::TARGET_DIR_FIREFOX = "/Library/Application Support/Mozilla/NativeMessagingHosts";
+ const QString HostInstaller::TARGET_DIR_VIVALDI = "/Library/Application Support/Vivaldi/NativeMessagingHosts";
+#elif defined(Q_OS_LINUX)
+ const QString HostInstaller::TARGET_DIR_CHROME = "/.config/google-chrome/NativeMessagingHosts";
+ const QString HostInstaller::TARGET_DIR_CHROMIUM = "/.config/chromium/NativeMessagingHosts";
+ const QString HostInstaller::TARGET_DIR_FIREFOX = "/.mozilla/native-messaging-hosts";
+ const QString HostInstaller::TARGET_DIR_VIVALDI = "/.config/vivaldi/NativeMessagingHosts";
+#elif defined(Q_OS_WIN)
+ const QString HostInstaller::TARGET_DIR_CHROME = "HKEY_CURRENT_USER\\Software\\Google\\Chrome\\NativeMessagingHosts\\" + HostInstaller::HOST_NAME;
+ const QString HostInstaller::TARGET_DIR_CHROMIUM = "HKEY_CURRENT_USER\\Software\\Chromium\\NativeMessagingHosts\\" + HostInstaller::HOST_NAME;
+ const QString HostInstaller::TARGET_DIR_FIREFOX = "HKEY_CURRENT_USER\\Software\\Mozilla\\NativeMessagingHosts\\" + HostInstaller::HOST_NAME;
+ const QString HostInstaller::TARGET_DIR_VIVALDI = "HKEY_CURRENT_USER\\Software\\Vivaldi\\NativeMessagingHosts\\" + HostInstaller::HOST_NAME;
+#endif
+
+HostInstaller::HostInstaller()
+{
+
+}
+
+bool HostInstaller::checkIfInstalled(SupportedBrowsers browser)
+{
+ QString fileName = getPath(browser);
+#ifdef Q_OS_WIN
+ QSettings settings(getTargetPath(browser), QSettings::NativeFormat);
+ return registryEntryFound(settings);
+#else
+ return QFile::exists(fileName);
+#endif
+}
+
+void HostInstaller::installBrowser(SupportedBrowsers browser, const bool& enabled, const bool& proxy, const QString& location)
+{
+ if (enabled) {
+ #ifdef Q_OS_WIN
+ // Create a registry key
+ QSettings settings(getTargetPath(browser), QSettings::NativeFormat);
+ if (!registryEntryFound(settings)) {
+ settings.setValue("Default", getPath(browser));
+ }
+ #endif
+ // Always create the script file
+ QJsonObject script = constructFile(browser, proxy, location);
+ if (!saveFile(browser, script)) {
+ QMessageBox::critical(0, tr("KeePassXC: Cannot save file!"),
+ tr("Cannot save the native messaging script file."), QMessageBox::Ok);
+ }
+ } else {
+ // Remove the script file
+ QString fileName = getPath(browser);
+ QFile::remove(fileName);
+ #ifdef Q_OS_WIN
+ // Remove the registry entry
+ QSettings settings(getTargetPath(browser), QSettings::NativeFormat);
+ if (registryEntryFound(settings)) {
+ settings.remove("Default");
+ }
+ #endif
+ }
+}
+
+void HostInstaller::updateBinaryPaths(const bool& proxy, const QString& location)
+{
+ for (int i = 0; i < 4; ++i) {
+ if (checkIfInstalled(static_cast<SupportedBrowsers>(i))) {
+ installBrowser(static_cast<SupportedBrowsers>(i), true, proxy, location);
+ }
+ }
+}
+
+QString HostInstaller::getTargetPath(SupportedBrowsers browser) const
+{
+ switch (browser) {
+ case SupportedBrowsers::CHROME: return HostInstaller::TARGET_DIR_CHROME;
+ case SupportedBrowsers::CHROMIUM: return HostInstaller::TARGET_DIR_CHROMIUM;
+ case SupportedBrowsers::FIREFOX: return HostInstaller::TARGET_DIR_FIREFOX;
+ case SupportedBrowsers::VIVALDI: return HostInstaller::TARGET_DIR_VIVALDI;
+ default: return QString();
+ }
+}
+
+QString HostInstaller::getBrowserName(SupportedBrowsers browser) const
+{
+ switch (browser) {
+ case SupportedBrowsers::CHROME: return "chrome";
+ case SupportedBrowsers::CHROMIUM: return "chromium";
+ case SupportedBrowsers::FIREFOX: return "firefox";
+ case SupportedBrowsers::VIVALDI: return "vivaldi";
+ default: return QString();
+ }
+}
+
+QString HostInstaller::getPath(SupportedBrowsers browser) const
+{
+#ifdef Q_OS_WIN
+ // If portable settings file exists save the JSON scripts to application folder
+ QString userPath;
+ QString portablePath = QCoreApplication::applicationDirPath() + "/keepassxc.ini";
+ if (QFile::exists(portablePath)) {
+ userPath = QCoreApplication::applicationDirPath();
+ } else {
+ userPath = QDir::fromNativeSeparators(QStandardPaths::writableLocation(QStandardPaths::DataLocation));
+ }
+
+ QString winPath = QString("%1/%2_%3.json").arg(userPath, HostInstaller::HOST_NAME, getBrowserName(browser));
+ winPath.replace("/","\\");
+ return winPath;
+#else
+ QString path = getTargetPath(browser);
+ return QString("%1%2/%3.json").arg(QDir::homePath(), path, HostInstaller::HOST_NAME);
+#endif
+}
+
+QString HostInstaller::getInstallDir(SupportedBrowsers browser) const
+{
+ QString path = getTargetPath(browser);
+#ifdef Q_OS_WIN
+ return QCoreApplication::applicationDirPath();
+#else
+ return QString("%1%2").arg(QDir::homePath(), path);
+#endif
+}
+
+QJsonObject HostInstaller::constructFile(SupportedBrowsers browser, const bool& proxy, const QString& location)
+{
+ QString path;
+#ifdef KEEPASSXC_DIST_APPIMAGE
+ if (proxy && !location.isEmpty()) {
+ path = location;
+ } else {
+ path = QProcessEnvironment::systemEnvironment().value("APPIMAGE");
+ }
+#else
+ if (proxy) {
+ if (!location.isEmpty()) {
+ path = location;
+ } else {
+ path = QFileInfo(QCoreApplication::applicationFilePath()).absolutePath();
+ path.append("/keepassxc-proxy");
+#ifdef Q_OS_WIN
+ path.append(".exe");
+#endif
+ }
+ } else {
+ path = QFileInfo(QCoreApplication::applicationFilePath()).absoluteFilePath();
+ }
+#ifdef Q_OS_WIN
+ path.replace("/","\\");
+#endif
+
+#endif // #ifdef KEEPASSXC_DIST_APPIMAGE
+
+ QJsonObject script;
+ script["name"] = HostInstaller::HOST_NAME;
+ script["description"] = "KeePassXC integration with native messaging support";
+ script["path"] = path;
+ script["type"] = "stdio";
+
+ QJsonArray arr;
+ if (browser == SupportedBrowsers::FIREFOX) {
+ for (const QString extension : HostInstaller::ALLOWED_EXTENSIONS) {
+ arr.append(extension);
+ }
+ script["allowed_extensions"] = arr;
+ } else {
+ for (const QString origin : HostInstaller::ALLOWED_ORIGINS) {
+ arr.append(origin);
+ }
+ script["allowed_origins"] = arr;
+ }
+
+ return script;
+}
+
+bool HostInstaller::registryEntryFound(const QSettings& settings)
+{
+ return !settings.value("Default").isNull();
+}
+
+bool HostInstaller::saveFile(SupportedBrowsers browser, const QJsonObject& script)
+{
+ QString path = getPath(browser);
+ QString installDir = getInstallDir(browser);
+ QDir dir(installDir);
+ if (!dir.exists()) {
+ QDir().mkpath(installDir);
+ }
+
+ QFile scriptFile(path);
+ if (!scriptFile.open(QIODevice::WriteOnly)) {
+ return false;
+ }
+
+ QJsonDocument doc(script);
+ qint64 bytesWritten = scriptFile.write(doc.toJson());
+ if (bytesWritten < 0) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/src/browser/HostInstaller.h b/src/browser/HostInstaller.h
new file mode 100644
index 000000000..c3fc85620
--- /dev/null
+++ b/src/browser/HostInstaller.h
@@ -0,0 +1,63 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef HOSTINSTALLER_H
+#define HOSTINSTALLER_H
+
+#include <QObject>
+#include <QJsonObject>
+#include <QSettings>
+
+class HostInstaller : public QObject
+{
+ Q_OBJECT
+
+public:
+ enum SupportedBrowsers : int {
+ CHROME = 0,
+ CHROMIUM = 1,
+ FIREFOX = 2,
+ VIVALDI = 3
+ };
+
+public:
+ HostInstaller();
+ bool checkIfInstalled(SupportedBrowsers browser);
+ void installBrowser(SupportedBrowsers browser, const bool& enabled, const bool& proxy = false, const QString& location = "");
+ void updateBinaryPaths(const bool& proxy, const QString& location = "");
+
+private:
+ QString getTargetPath(SupportedBrowsers browser) const;
+ QString getBrowserName(SupportedBrowsers browser) const;
+ QString getPath(SupportedBrowsers browser) const;
+ QString getInstallDir(SupportedBrowsers browser) const;
+ QJsonObject constructFile(SupportedBrowsers browser, const bool& proxy, const QString& location);
+ bool registryEntryFound(const QSettings& settings);
+ bool saveFile(SupportedBrowsers browser, const QJsonObject& script);
+
+private:
+ static const QString HOST_NAME;
+ static const QStringList ALLOWED_EXTENSIONS;
+ static const QStringList ALLOWED_ORIGINS;
+ static const QString TARGET_DIR_CHROME;
+ static const QString TARGET_DIR_CHROMIUM;
+ static const QString TARGET_DIR_FIREFOX;
+ static const QString TARGET_DIR_VIVALDI;
+};
+
+#endif // HOSTINSTALLER_H
diff --git a/src/browser/NativeMessagingBase.cpp b/src/browser/NativeMessagingBase.cpp
new file mode 100644
index 000000000..743953e95
--- /dev/null
+++ b/src/browser/NativeMessagingBase.cpp
@@ -0,0 +1,141 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "NativeMessagingBase.h"
+#include <QStandardPaths>
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_LINUX)
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#ifdef Q_OS_LINUX
+#include <sys/epoll.h>
+#include <unistd.h>
+#endif
+
+#ifdef Q_OS_WIN
+#include <fcntl.h>
+#include <io.h>
+#endif
+
+NativeMessagingBase::NativeMessagingBase()
+{
+#ifdef Q_OS_WIN
+ _setmode(_fileno(stdin), _O_BINARY);
+ _setmode(_fileno(stdout), _O_BINARY);
+#else
+ m_notifier.reset(new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this));
+ connect(m_notifier.data(), SIGNAL(activated(int)), this, SLOT(newNativeMessage()));
+#endif
+}
+
+void NativeMessagingBase::newNativeMessage()
+{
+#if defined(Q_OS_UNIX) && !defined(Q_OS_LINUX)
+ struct kevent ev[1];
+ struct timespec ts = { 5, 0 };
+
+ int fd = kqueue();
+ if (fd == -1) {
+ m_notifier->setEnabled(false);
+ return;
+ }
+
+ EV_SET(ev, fileno(stdin), EVFILT_READ, EV_ADD, 0, 0, nullptr);
+ if (kevent(fd, ev, 1, nullptr, 0, &ts) == -1) {
+ m_notifier->setEnabled(false);
+ return;
+ }
+
+ int ret = kevent(fd, NULL, 0, ev, 1, &ts);
+ if (ret < 1) {
+ m_notifier->setEnabled(false);
+ ::close(fd);
+ return;
+ }
+#elif defined(Q_OS_LINUX)
+ int fd = epoll_create(5);
+ struct epoll_event event;
+ event.events = EPOLLIN;
+ event.data.fd = 0;
+ if (epoll_ctl(fd, EPOLL_CTL_ADD, 0, &event) != 0) {
+ m_notifier->setEnabled(false);
+ return;
+ }
+
+ if (epoll_wait(fd, &event, 1, 5000) < 1) {
+ m_notifier->setEnabled(false);
+ ::close(fd);
+ return;
+ }
+#endif
+ readLength();
+#ifndef Q_OS_WIN
+ ::close(fd);
+#endif
+}
+
+void NativeMessagingBase::readNativeMessages()
+{
+#ifdef Q_OS_WIN
+ quint32 length = 0;
+ while (m_running.load() && !std::cin.eof()) {
+ length = 0;
+ std::cin.read(reinterpret_cast<char*>(&length), 4);
+ readStdIn(length);
+ QThread::msleep(1);
+ }
+#endif
+}
+
+QString NativeMessagingBase::jsonToString(const QJsonObject& json) const
+{
+ return QString(QJsonDocument(json).toJson(QJsonDocument::Compact));
+}
+
+void NativeMessagingBase::sendReply(const QJsonObject& json)
+{
+ if (!json.isEmpty()) {
+ sendReply(jsonToString(json));
+ }
+}
+
+void NativeMessagingBase::sendReply(const QString& reply)
+{
+ if (!reply.isEmpty()) {
+ uint len = reply.length();
+ std::cout << char(((len>>0) & 0xFF)) << char(((len>>8) & 0xFF)) << char(((len>>16) & 0xFF)) << char(((len>>24) & 0xFF));
+ std::cout << reply.toStdString() << std::flush;
+ }
+}
+
+QString NativeMessagingBase::getLocalServerPath() const
+{
+#if defined(Q_OS_WIN)
+ return QStandardPaths::writableLocation(QStandardPaths::TempLocation) + "/kpxc_server";
+#elif defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+ // Use XDG_RUNTIME_DIR instead of /tmp/ if it's available
+ QString path = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation) + "/kpxc_server";
+ return path.isEmpty() ? "/tmp/kpxc_server" : path;
+#else // Q_OS_MAC and others
+ return "/tmp/kpxc_server";
+#endif
+}
diff --git a/src/browser/NativeMessagingBase.h b/src/browser/NativeMessagingBase.h
new file mode 100644
index 000000000..4253b7585
--- /dev/null
+++ b/src/browser/NativeMessagingBase.h
@@ -0,0 +1,61 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef NATIVEMESSAGINGBASE_H
+#define NATIVEMESSAGINGBASE_H
+
+#include <QObject>
+#include <QJsonObject>
+#include <QJsonDocument>
+#include <QFuture>
+#include <QtConcurrent/QtConcurrent>
+#include <QMutex>
+#include <QSocketNotifier>
+#include <QLocalServer>
+#include <QLocalSocket>
+#include <QAtomicInteger>
+#include <iostream>
+#include <unistd.h>
+
+class NativeMessagingBase : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit NativeMessagingBase();
+ ~NativeMessagingBase() = default;
+
+protected slots:
+ void newNativeMessage();
+
+protected:
+ virtual void readLength() = 0;
+ virtual void readStdIn(const quint32 length) = 0;
+ void readNativeMessages();
+ QString jsonToString(const QJsonObject& json) const;
+ void sendReply(const QJsonObject& json);
+ void sendReply(const QString& reply);
+ QString getLocalServerPath() const;
+
+protected:
+ QAtomicInteger<quint8> m_running;
+ QSharedPointer<QSocketNotifier> m_notifier;
+ QFuture<void> m_future;
+};
+
+#endif // NATIVEMESSAGINGBASE_H
diff --git a/src/browser/NativeMessagingHost.cpp b/src/browser/NativeMessagingHost.cpp
new file mode 100755
index 000000000..4dfa87d51
--- /dev/null
+++ b/src/browser/NativeMessagingHost.cpp
@@ -0,0 +1,208 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <QMutexLocker>
+#include <QtNetwork>
+#include <iostream>
+#include "sodium.h"
+#include "NativeMessagingHost.h"
+#include "BrowserSettings.h"
+
+NativeMessagingHost::NativeMessagingHost(DatabaseTabWidget* parent) :
+ NativeMessagingBase(),
+ m_mutex(QMutex::Recursive),
+ m_browserClients(m_browserService),
+ m_browserService(parent)
+{
+ m_localServer.reset(new QLocalServer(this));
+ m_localServer->setSocketOptions(QLocalServer::UserAccessOption);
+ m_running.store(false);
+
+ if (BrowserSettings::isEnabled() && !m_running) {
+ run();
+ }
+
+ connect(&m_browserService, SIGNAL(databaseLocked()), this, SLOT(databaseLocked()));
+ connect(&m_browserService, SIGNAL(databaseUnlocked()), this, SLOT(databaseUnlocked()));
+}
+
+NativeMessagingHost::~NativeMessagingHost()
+{
+ stop();
+}
+
+int NativeMessagingHost::init()
+{
+ QMutexLocker locker(&m_mutex);
+ return sodium_init();
+}
+
+void NativeMessagingHost::run()
+{
+ QMutexLocker locker(&m_mutex);
+ if (!m_running.load() && init() == -1) {
+ return;
+ }
+
+ // Update KeePassXC/keepassxc-proxy binary paths to Native Messaging scripts
+ if (BrowserSettings::updateBinaryPath()) {
+ BrowserSettings::updateBinaryPaths(BrowserSettings::useCustomProxy() ? BrowserSettings::customProxyLocation() : "");
+ }
+
+ m_running.store(true);
+#ifdef Q_OS_WIN
+ m_future = QtConcurrent::run(this, static_cast<void(NativeMessagingHost::*)()>(&NativeMessagingHost::readNativeMessages));
+#endif
+
+ if (BrowserSettings::supportBrowserProxy()) {
+ QString serverPath = getLocalServerPath();
+ QFile::remove(serverPath);
+
+ if (m_localServer->isListening()) {
+ m_localServer->close();
+ }
+
+ m_localServer->listen(serverPath);
+ connect(m_localServer.data(), SIGNAL(newConnection()), this, SLOT(newLocalConnection()));
+ } else {
+ m_localServer->close();
+ }
+}
+
+void NativeMessagingHost::stop()
+{
+ databaseLocked();
+ QMutexLocker locker(&m_mutex);
+ m_socketList.clear();
+ m_running.testAndSetOrdered(true, false);
+ m_future.waitForFinished();
+ m_localServer->close();
+}
+
+void NativeMessagingHost::readLength()
+{
+ quint32 length = 0;
+ std::cin.read(reinterpret_cast<char*>(&length), 4);
+ if (!std::cin.eof() && length > 0) {
+ readStdIn(length);
+ } else {
+ m_notifier->setEnabled(false);
+ }
+}
+
+void NativeMessagingHost::readStdIn(const quint32 length)
+{
+ if (length > 0) {
+ QByteArray arr;
+ arr.reserve(length);
+
+ for (quint32 i = 0; i < length; ++i) {
+ arr.append(getchar());
+ }
+
+ if (arr.length() > 0) {
+ QMutexLocker locker(&m_mutex);
+ sendReply(m_browserClients.readResponse(arr));
+ }
+ }
+}
+
+void NativeMessagingHost::newLocalConnection()
+{
+ QLocalSocket* socket = m_localServer->nextPendingConnection();
+ if (socket) {
+ connect(socket, SIGNAL(readyRead()), this, SLOT(newLocalMessage()));
+ connect(socket, SIGNAL(disconnected()), this, SLOT(disconnectSocket()));
+ }
+}
+
+void NativeMessagingHost::newLocalMessage()
+{
+ QLocalSocket* socket = qobject_cast<QLocalSocket*>(QObject::sender());
+
+ if (!socket || socket->bytesAvailable() <= 0) {
+ return;
+ }
+
+ QByteArray arr = socket->readAll();
+ if (arr.isEmpty()) {
+ return;
+ }
+
+ QMutexLocker locker(&m_mutex);
+ if (!m_socketList.contains(socket)) {
+ m_socketList.push_back(socket);
+ }
+
+ QString reply = jsonToString(m_browserClients.readResponse(arr));
+ if (socket && socket->isValid() && socket->state() == QLocalSocket::ConnectedState) {
+ QByteArray arr = reply.toUtf8();
+ socket->write(arr.constData(), arr.length());
+ socket->flush();
+ }
+}
+
+void NativeMessagingHost::sendReplyToAllClients(const QJsonObject& json)
+{
+ QString reply = jsonToString(json);
+ QMutexLocker locker(&m_mutex);
+ for (const auto socket : m_socketList) {
+ if (socket && socket->isValid() && socket->state() == QLocalSocket::ConnectedState) {
+ QByteArray arr = reply.toUtf8();
+ socket->write(arr.constData(), arr.length());
+ socket->flush();
+ }
+ }
+}
+
+void NativeMessagingHost::disconnectSocket()
+{
+ QLocalSocket* socket(qobject_cast<QLocalSocket*>(QObject::sender()));
+ QMutexLocker locker(&m_mutex);
+ for (auto s : m_socketList) {
+ if (s == socket) {
+ m_socketList.removeOne(s);
+ }
+ }
+}
+
+void NativeMessagingHost::removeSharedEncryptionKeys()
+{
+ QMutexLocker locker(&m_mutex);
+ m_browserService.removeSharedEncryptionKeys();
+}
+
+void NativeMessagingHost::removeStoredPermissions()
+{
+ QMutexLocker locker(&m_mutex);
+ m_browserService.removeStoredPermissions();
+}
+
+void NativeMessagingHost::databaseLocked()
+{
+ QJsonObject response;
+ response["action"] = "database-locked";
+ sendReplyToAllClients(response);
+}
+
+void NativeMessagingHost::databaseUnlocked()
+{
+ QJsonObject response;
+ response["action"] = "database-unlocked";
+ sendReplyToAllClients(response);
+}
diff --git a/src/browser/NativeMessagingHost.h b/src/browser/NativeMessagingHost.h
new file mode 100755
index 000000000..80825237b
--- /dev/null
+++ b/src/browser/NativeMessagingHost.h
@@ -0,0 +1,67 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef NATIVEMESSAGINGHOST_H
+#define NATIVEMESSAGINGHOST_H
+
+#include "NativeMessagingBase.h"
+#include "BrowserClients.h"
+#include "BrowserService.h"
+#include "gui/DatabaseTabWidget.h"
+
+class NativeMessagingHost : public NativeMessagingBase
+{
+ Q_OBJECT
+
+ typedef QList<QLocalSocket*> SocketList;
+
+public:
+ explicit NativeMessagingHost(DatabaseTabWidget* parent = 0);
+ ~NativeMessagingHost();
+ int init();
+ void run();
+ void stop();
+
+public slots:
+ void removeSharedEncryptionKeys();
+ void removeStoredPermissions();
+
+signals:
+ void quit();
+
+private:
+ void readLength();
+ void readStdIn(const quint32 length);
+ void sendReplyToAllClients(const QJsonObject& json);
+
+private slots:
+ void databaseLocked();
+ void databaseUnlocked();
+ void newLocalConnection();
+ void newLocalMessage();
+ void disconnectSocket();
+
+private:
+ QMutex m_mutex;
+ BrowserClients m_browserClients;
+ BrowserService m_browserService;
+ QSharedPointer<QLocalServer> m_localServer;
+ SocketList m_socketList;
+};
+
+#endif // NATIVEMESSAGINGHOST_H
diff --git a/src/browser/Variant.cpp b/src/browser/Variant.cpp
new file mode 100644
index 000000000..2d42ac4ec
--- /dev/null
+++ b/src/browser/Variant.cpp
@@ -0,0 +1,37 @@
+/*
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "Variant.h"
+
+QVariantMap qo2qv(const QObject* object, const QStringList& ignoredProperties)
+{
+ QVariantMap result;
+ const QMetaObject* metaobject = object->metaObject();
+ int count = metaobject->propertyCount();
+ for (int i = 0; i < count; ++i) {
+ QMetaProperty metaproperty = metaobject->property(i);
+ const char* name = metaproperty.name();
+
+ if (ignoredProperties.contains(QLatin1String(name)) || (!metaproperty.isReadable())) {
+ continue;
+ }
+
+ QVariant value = object->property(name);
+ result[QLatin1String(name)] = value;
+ }
+ return result;
+}
diff --git a/src/keys/CompositeKey_p.h b/src/browser/Variant.h
index 27fa7abc4..e467b4211 100644
--- a/src/keys/CompositeKey_p.h
+++ b/src/browser/Variant.h
@@ -1,10 +1,10 @@
/*
-* Copyright (C) 2012 Felix Geyer <debfx@fobos.de>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 2 or (at your option)
-* version 3 of the License.
+* 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
@@ -15,25 +15,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_COMPOSITEKEY_P_H
-#define KEEPASSX_COMPOSITEKEY_P_H
+#ifndef VARIANT_H
+#define VARIANT_H
-#include <QThread>
+#include <QtCore>
-class TransformKeyBenchmarkThread : public QThread
-{
- Q_OBJECT
+QVariantMap qo2qv(const QObject* object, const QStringList& ignoredProperties = QStringList(QString(QLatin1String("objectName"))));
-public:
- explicit TransformKeyBenchmarkThread(int msec);
- int rounds();
-
-protected:
- void run();
-
-private:
- int m_msec;
- int m_rounds;
-};
-
-#endif // KEEPASSX_COMPOSITEKEY_P_H
+#endif // VARIANT_H
diff --git a/src/cli/Add.cpp b/src/cli/Add.cpp
new file mode 100644
index 000000000..5c97299b8
--- /dev/null
+++ b/src/cli/Add.cpp
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <cstdlib>
+#include <stdio.h>
+
+#include "Add.h"
+
+#include <QCommandLineParser>
+#include <QTextStream>
+
+#include "cli/Utils.h"
+#include "core/Database.h"
+#include "core/Entry.h"
+#include "core/Group.h"
+#include "core/PasswordGenerator.h"
+
+Add::Add()
+{
+ name = QString("add");
+ description = QObject::tr("Add a new entry to a database.");
+}
+
+Add::~Add()
+{
+}
+
+int Add::execute(const QStringList& arguments)
+{
+
+ QTextStream inputTextStream(stdin, QIODevice::ReadOnly);
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database", QObject::tr("Path of the database."));
+
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+
+ QCommandLineOption username(QStringList() << "u"
+ << "username",
+ QObject::tr("Username for the entry."),
+ QObject::tr("username"));
+ parser.addOption(username);
+
+ QCommandLineOption url(QStringList() << "url", QObject::tr("URL for the entry."), QObject::tr("URL"));
+ parser.addOption(url);
+
+ QCommandLineOption prompt(QStringList() << "p"
+ << "password-prompt",
+ QObject::tr("Prompt for the entry's password."));
+ parser.addOption(prompt);
+
+ QCommandLineOption generate(QStringList() << "g"
+ << "generate",
+ QObject::tr("Generate a password for the entry."));
+ parser.addOption(generate);
+
+ QCommandLineOption length(QStringList() << "l"
+ << "password-length",
+ QObject::tr("Length for the generated password."),
+ QObject::tr("length"));
+ parser.addOption(length);
+
+ parser.addPositionalArgument("entry", QObject::tr("Path of the entry to add."));
+ parser.process(arguments);
+
+ const QStringList args = parser.positionalArguments();
+ if (args.size() != 2) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli add");
+ return EXIT_FAILURE;
+ }
+
+ QString databasePath = args.at(0);
+ QString entryPath = args.at(1);
+
+ Database* db = Database::unlockFromStdin(databasePath, parser.value(keyFile));
+ if (db == nullptr) {
+ return EXIT_FAILURE;
+ }
+
+ // Validating the password length here, before we actually create
+ // the entry.
+ QString passwordLength = parser.value(length);
+ if (!passwordLength.isEmpty() && !passwordLength.toInt()) {
+ qCritical("Invalid value for password length %s.", qPrintable(passwordLength));
+ return EXIT_FAILURE;
+ }
+
+ Entry* entry = db->rootGroup()->addEntryWithPath(entryPath);
+ if (!entry) {
+ qCritical("Could not create entry with path %s.", qPrintable(entryPath));
+ return EXIT_FAILURE;
+ }
+
+ if (!parser.value("username").isEmpty()) {
+ entry->setUsername(parser.value("username"));
+ }
+
+ if (!parser.value("url").isEmpty()) {
+ entry->setUrl(parser.value("url"));
+ }
+
+ if (parser.isSet(prompt)) {
+ outputTextStream << "Enter password for new entry: ";
+ outputTextStream.flush();
+ QString password = Utils::getPassword();
+ entry->setPassword(password);
+ } else if (parser.isSet(generate)) {
+ PasswordGenerator passwordGenerator;
+
+ if (passwordLength.isEmpty()) {
+ passwordGenerator.setLength(PasswordGenerator::DefaultLength);
+ } else {
+ passwordGenerator.setLength(passwordLength.toInt());
+ }
+
+ passwordGenerator.setCharClasses(PasswordGenerator::DefaultCharset);
+ passwordGenerator.setFlags(PasswordGenerator::DefaultFlags);
+ QString password = passwordGenerator.generatePassword();
+ entry->setPassword(password);
+ }
+
+ QString errorMessage = db->saveToFile(databasePath);
+ if (!errorMessage.isEmpty()) {
+ qCritical("Writing the database failed %s.", qPrintable(errorMessage));
+ return EXIT_FAILURE;
+ }
+
+ outputTextStream << "Successfully added entry " << entry->title() << "." << endl;
+ return EXIT_SUCCESS;
+}
diff --git a/src/core/ToDbExporter.h b/src/cli/Add.h
index 58c5efeb3..5769249c9 100644
--- a/src/core/ToDbExporter.h
+++ b/src/cli/Add.h
@@ -1,6 +1,5 @@
/*
- * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,18 +15,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_TODBEXPORTER_H
-#define KEEPASSX_TODBEXPORTER_H
+#ifndef KEEPASSXC_ADD_H
+#define KEEPASSXC_ADD_H
-#include "core/Exporter.h"
+#include "Command.h"
-class Database;
-class Group;
-
-class ToDbExporter : Exporter
+class Add : public Command
{
public:
- Database* exportGroup(Group* group);
+ Add();
+ ~Add();
+ int execute(const QStringList& arguments);
};
-#endif // KEEPASSX_TODBEXPORTER_H
+#endif // KEEPASSXC_ADD_H
diff --git a/src/cli/CMakeLists.txt b/src/cli/CMakeLists.txt
index 86edb9c01..a5126f999 100644
--- a/src/cli/CMakeLists.txt
+++ b/src/cli/CMakeLists.txt
@@ -14,16 +14,30 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set(cli_SOURCES
+ Add.cpp
+ Add.h
Clip.cpp
Clip.h
- EntropyMeter.cpp
- EntropyMeter.h
+ Command.cpp
+ Command.h
+ Diceware.cpp
+ Diceware.h
+ Edit.cpp
+ Edit.h
+ Estimate.cpp
+ Estimate.h
Extract.cpp
Extract.h
+ Generate.cpp
+ Generate.h
List.cpp
List.h
+ Locate.cpp
+ Locate.h
Merge.cpp
Merge.h
+ Remove.cpp
+ Remove.h
Show.cpp
Show.h)
@@ -36,10 +50,16 @@ target_link_libraries(keepassxc-cli
keepassx_core
Qt5::Core
${GCRYPT_LIBRARIES}
+ ${ARGON2_LIBRARIES}
${GPGERROR_LIBRARIES}
${ZLIB_LIBRARIES}
- zxcvbn)
+ ${ZXCVBN_LIBRARIES})
install(TARGETS keepassxc-cli
BUNDLE DESTINATION . COMPONENT Runtime
RUNTIME DESTINATION ${CLI_INSTALL_DIR} COMPONENT Runtime)
+
+if(APPLE OR UNIX)
+ install(FILES keepassxc-cli.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1/)
+ execute_process(COMMAND mandb -q)
+endif()
diff --git a/src/cli/Clip.cpp b/src/cli/Clip.cpp
index 70d97c0e2..886f8ecc7 100644
--- a/src/cli/Clip.cpp
+++ b/src/cli/Clip.cpp
@@ -15,68 +15,100 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <chrono>
#include <cstdlib>
#include <stdio.h>
+#include <thread>
#include "Clip.h"
-#include <QApplication>
-#include <QClipboard>
#include <QCommandLineParser>
-#include <QStringList>
#include <QTextStream>
-#include "gui/UnlockDatabaseDialog.h"
+#include "cli/Utils.h"
#include "core/Database.h"
#include "core/Entry.h"
#include "core/Group.h"
-#include "gui/Clipboard.h"
-int Clip::execute(int argc, char** argv)
+Clip::Clip()
+{
+ name = QString("clip");
+ description = QObject::tr("Copy an entry's password to the clipboard.");
+}
+
+Clip::~Clip()
+{
+}
+
+int Clip::execute(const QStringList& arguments)
{
- QStringList arguments;
- for (int i = 0; i < argc; ++i) {
- arguments << QString(argv[i]);
- }
QTextStream out(stdout);
QCommandLineParser parser;
- parser.setApplicationDescription(QCoreApplication::translate("main", "Copy a password to the clipboard"));
- parser.addPositionalArgument("database", QCoreApplication::translate("main", "Path of the database."));
- QCommandLineOption guiPrompt(
- QStringList() << "g"
- << "gui-prompt",
- QCoreApplication::translate("main", "Use a GUI prompt unlocking the database."));
- parser.addOption(guiPrompt);
- parser.addPositionalArgument("entry", QCoreApplication::translate("main", "Name of the entry to clip."));
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database", QObject::tr("Path of the database."));
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+ parser.addPositionalArgument("entry", QObject::tr("Path of the entry to clip.", "clip = copy to clipboard"));
+ parser.addPositionalArgument(
+ "timeout", QObject::tr("Timeout in seconds before clearing the clipboard."), QString("[timeout]"));
parser.process(arguments);
const QStringList args = parser.positionalArguments();
- if (args.size() != 2) {
- QCoreApplication app(argc, argv);
- parser.showHelp(EXIT_FAILURE);
+ if (args.size() != 2 && args.size() != 3) {
+ out << parser.helpText().replace("keepassxc-cli", "keepassxc-cli clip");
+ return EXIT_FAILURE;
}
- Database* db = nullptr;
- QApplication app(argc, argv);
- if (parser.isSet("gui-prompt")) {
- db = UnlockDatabaseDialog::openDatabasePrompt(args.at(0));
- } else {
- db = Database::unlockFromStdin(args.at(0));
+ Database* db = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
+ if (!db) {
+ return EXIT_FAILURE;
}
- if (!db) {
+ return this->clipEntry(db, args.at(1), args.value(2));
+}
+
+int Clip::clipEntry(Database* database, QString entryPath, QString timeout)
+{
+
+ int timeoutSeconds = 0;
+ if (!timeout.isEmpty() && !timeout.toInt()) {
+ qCritical("Invalid timeout value %s.", qPrintable(timeout));
return EXIT_FAILURE;
+ } else if (!timeout.isEmpty()) {
+ timeoutSeconds = timeout.toInt();
}
- QString entryId = args.at(1);
- Entry* entry = db->rootGroup()->findEntry(entryId);
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+ Entry* entry = database->rootGroup()->findEntry(entryPath);
if (!entry) {
- qCritical("Entry %s not found.", qPrintable(entryId));
+ qCritical("Entry %s not found.", qPrintable(entryPath));
return EXIT_FAILURE;
}
- Clipboard::instance()->setText(entry->password());
+ int exitCode = Utils::clipText(entry->password());
+ if (exitCode != EXIT_SUCCESS) {
+ return exitCode;
+ }
+
+ outputTextStream << "Entry's password copied to the clipboard!" << endl;
+
+ if (!timeoutSeconds) {
+ return exitCode;
+ }
+
+ while (timeoutSeconds > 0) {
+ outputTextStream << "\rClearing the clipboard in " << timeoutSeconds << " seconds...";
+ outputTextStream.flush();
+ std::this_thread::sleep_for(std::chrono::milliseconds(1000));
+ timeoutSeconds--;
+ }
+ Utils::clipText("");
+ outputTextStream << "\nClipboard cleared!" << endl;
+
return EXIT_SUCCESS;
}
diff --git a/src/cli/Clip.h b/src/cli/Clip.h
index cb72e4299..e94231236 100644
--- a/src/cli/Clip.h
+++ b/src/cli/Clip.h
@@ -18,10 +18,15 @@
#ifndef KEEPASSXC_CLIP_H
#define KEEPASSXC_CLIP_H
-class Clip
+#include "Command.h"
+
+class Clip : public Command
{
public:
- static int execute(int argc, char** argv);
+ Clip();
+ ~Clip();
+ int execute(const QStringList& arguments);
+ int clipEntry(Database* database, QString entryPath, QString timeout);
};
#endif // KEEPASSXC_CLIP_H
diff --git a/src/cli/Command.cpp b/src/cli/Command.cpp
new file mode 100644
index 000000000..ef6948888
--- /dev/null
+++ b/src/cli/Command.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <cstdlib>
+#include <stdio.h>
+
+#include <QMap>
+
+#include "Command.h"
+
+#include "Add.h"
+#include "Clip.h"
+#include "Diceware.h"
+#include "Edit.h"
+#include "Estimate.h"
+#include "Extract.h"
+#include "Generate.h"
+#include "List.h"
+#include "Locate.h"
+#include "Merge.h"
+#include "Remove.h"
+#include "Show.h"
+
+QMap<QString, Command*> commands;
+
+Command::~Command()
+{
+}
+
+int Command::execute(const QStringList&)
+{
+ return EXIT_FAILURE;
+}
+
+QString Command::getDescriptionLine()
+{
+
+ QString response = this->name;
+ QString space(" ");
+ QString spaces = space.repeated(15 - this->name.length());
+ response = response.append(spaces);
+ response = response.append(this->description);
+ response = response.append("\n");
+ return response;
+}
+
+void populateCommands()
+{
+ if (commands.isEmpty()) {
+ commands.insert(QString("add"), new Add());
+ commands.insert(QString("clip"), new Clip());
+ commands.insert(QString("diceware"), new Diceware());
+ commands.insert(QString("edit"), new Edit());
+ commands.insert(QString("estimate"), new Estimate());
+ commands.insert(QString("extract"), new Extract());
+ commands.insert(QString("generate"), new Generate());
+ commands.insert(QString("locate"), new Locate());
+ commands.insert(QString("ls"), new List());
+ commands.insert(QString("merge"), new Merge());
+ commands.insert(QString("rm"), new Remove());
+ commands.insert(QString("show"), new Show());
+ }
+}
+
+Command* Command::getCommand(QString commandName)
+{
+ populateCommands();
+ if (commands.contains(commandName)) {
+ return commands[commandName];
+ }
+ return nullptr;
+}
+
+QList<Command*> Command::getCommands()
+{
+ populateCommands();
+ return commands.values();
+}
diff --git a/src/cli/Command.h b/src/cli/Command.h
new file mode 100644
index 000000000..2ebdd77b9
--- /dev/null
+++ b/src/cli/Command.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_COMMAND_H
+#define KEEPASSXC_COMMAND_H
+
+#include <QList>
+#include <QObject>
+#include <QString>
+#include <QStringList>
+
+#include "core/Database.h"
+
+class Command
+{
+public:
+ virtual ~Command();
+ virtual int execute(const QStringList& arguments);
+ QString name;
+ QString description;
+ QString getDescriptionLine();
+
+ static QList<Command*> getCommands();
+ static Command* getCommand(QString commandName);
+};
+
+#endif // KEEPASSXC_COMMAND_H
diff --git a/src/cli/Diceware.cpp b/src/cli/Diceware.cpp
new file mode 100644
index 000000000..c71b57d7e
--- /dev/null
+++ b/src/cli/Diceware.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <cstdlib>
+#include <stdio.h>
+
+#include "Diceware.h"
+
+#include <QCommandLineParser>
+#include <QTextStream>
+
+#include "core/PassphraseGenerator.h"
+
+Diceware::Diceware()
+{
+ name = QString("diceware");
+ description = QObject::tr("Generate a new random diceware passphrase.");
+}
+
+Diceware::~Diceware()
+{
+}
+
+int Diceware::execute(const QStringList& arguments)
+{
+ QTextStream inputTextStream(stdin, QIODevice::ReadOnly);
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(this->description);
+ QCommandLineOption words(QStringList() << "W" << "words",
+ QObject::tr("Word count for the diceware passphrase."),
+ QObject::tr("count"));
+ parser.addOption(words);
+ QCommandLineOption wordlistFile(QStringList() << "w"
+ << "word-list",
+ QObject::tr("Wordlist for the diceware generator.\n[Default: EFF English]"),
+ QObject::tr("path"));
+ parser.addOption(wordlistFile);
+ parser.process(arguments);
+
+ const QStringList args = parser.positionalArguments();
+ if (!args.isEmpty()) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli diceware");
+ return EXIT_FAILURE;
+ }
+
+ PassphraseGenerator dicewareGenerator;
+
+ if (parser.value(words).isEmpty()) {
+ dicewareGenerator.setWordCount(PassphraseGenerator::DefaultWordCount);
+ } else {
+ int wordcount = parser.value(words).toInt();
+ dicewareGenerator.setWordCount(wordcount);
+ }
+
+ if (!parser.value(wordlistFile).isEmpty()) {
+ dicewareGenerator.setWordList(parser.value(wordlistFile));
+ } else {
+ dicewareGenerator.setDefaultWordList();
+ }
+
+ if (!dicewareGenerator.isValid()) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli diceware");
+ return EXIT_FAILURE;
+ }
+
+ QString password = dicewareGenerator.generatePassphrase();
+ outputTextStream << password << endl;
+
+ return EXIT_SUCCESS;
+}
diff --git a/src/cli/Diceware.h b/src/cli/Diceware.h
new file mode 100644
index 000000000..61fe724ca
--- /dev/null
+++ b/src/cli/Diceware.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_DICEWARE_H
+#define KEEPASSXC_DICEWARE_H
+
+#include "Command.h"
+
+class Diceware : public Command
+{
+public:
+ Diceware();
+ ~Diceware();
+ int execute(const QStringList& arguments);
+};
+
+#endif // KEEPASSXC_DICEWARE_H
diff --git a/src/cli/Edit.cpp b/src/cli/Edit.cpp
new file mode 100644
index 000000000..967ddd8ed
--- /dev/null
+++ b/src/cli/Edit.cpp
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <cstdlib>
+#include <stdio.h>
+
+#include "Edit.h"
+
+#include <QCommandLineParser>
+#include <QTextStream>
+
+#include "cli/Utils.h"
+#include "core/Database.h"
+#include "core/Entry.h"
+#include "core/Group.h"
+#include "core/PasswordGenerator.h"
+
+Edit::Edit()
+{
+ name = QString("edit");
+ description = QObject::tr("Edit an entry.");
+}
+
+Edit::~Edit()
+{
+}
+
+int Edit::execute(const QStringList& arguments)
+{
+
+ QTextStream inputTextStream(stdin, QIODevice::ReadOnly);
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database", QObject::tr("Path of the database."));
+
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+
+ QCommandLineOption username(QStringList() << "u"
+ << "username",
+ QObject::tr("Username for the entry."),
+ QObject::tr("username"));
+ parser.addOption(username);
+
+ QCommandLineOption url(QStringList() << "url", QObject::tr("URL for the entry."), QObject::tr("URL"));
+ parser.addOption(url);
+
+ QCommandLineOption title(QStringList() << "t"
+ << "title",
+ QObject::tr("Title for the entry."),
+ QObject::tr("title"));
+ parser.addOption(title);
+
+ QCommandLineOption prompt(QStringList() << "p"
+ << "password-prompt",
+ QObject::tr("Prompt for the entry's password."));
+ parser.addOption(prompt);
+
+ QCommandLineOption generate(QStringList() << "g"
+ << "generate",
+ QObject::tr("Generate a password for the entry."));
+ parser.addOption(generate);
+
+ QCommandLineOption length(QStringList() << "l"
+ << "password-length",
+ QObject::tr("Length for the generated password."),
+ QObject::tr("length"));
+ parser.addOption(length);
+
+ parser.addPositionalArgument("entry", QObject::tr("Path of the entry to edit."));
+ parser.process(arguments);
+
+ const QStringList args = parser.positionalArguments();
+ if (args.size() != 2) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli edit");
+ return EXIT_FAILURE;
+ }
+
+ QString databasePath = args.at(0);
+ QString entryPath = args.at(1);
+
+ Database* db = Database::unlockFromStdin(databasePath, parser.value(keyFile));
+ if (db == nullptr) {
+ return EXIT_FAILURE;
+ }
+
+ QString passwordLength = parser.value(length);
+ if (!passwordLength.isEmpty() && !passwordLength.toInt()) {
+ qCritical("Invalid value for password length %s.", qPrintable(passwordLength));
+ return EXIT_FAILURE;
+ }
+
+ Entry* entry = db->rootGroup()->findEntryByPath(entryPath);
+ if (!entry) {
+ qCritical("Could not find entry with path %s.", qPrintable(entryPath));
+ return EXIT_FAILURE;
+ }
+
+ if (parser.value("username").isEmpty() && parser.value("url").isEmpty() && parser.value("title").isEmpty() &&
+ !parser.isSet(prompt) && !parser.isSet(generate)) {
+ qCritical("Not changing any field for entry %s.", qPrintable(entryPath));
+ return EXIT_FAILURE;
+ }
+
+ entry->beginUpdate();
+
+ if (!parser.value("title").isEmpty()) {
+ entry->setTitle(parser.value("title"));
+ }
+
+ if (!parser.value("username").isEmpty()) {
+ entry->setUsername(parser.value("username"));
+ }
+
+ if (!parser.value("url").isEmpty()) {
+ entry->setUrl(parser.value("url"));
+ }
+
+ if (parser.isSet(prompt)) {
+ outputTextStream << "Enter new password for entry: ";
+ outputTextStream.flush();
+ QString password = Utils::getPassword();
+ entry->setPassword(password);
+ } else if (parser.isSet(generate)) {
+ PasswordGenerator passwordGenerator;
+
+ if (passwordLength.isEmpty()) {
+ passwordGenerator.setLength(PasswordGenerator::DefaultLength);
+ } else {
+ passwordGenerator.setLength(passwordLength.toInt());
+ }
+
+ passwordGenerator.setCharClasses(PasswordGenerator::DefaultCharset);
+ passwordGenerator.setFlags(PasswordGenerator::DefaultFlags);
+ QString password = passwordGenerator.generatePassword();
+ entry->setPassword(password);
+ }
+
+ entry->endUpdate();
+
+ QString errorMessage = db->saveToFile(databasePath);
+ if (!errorMessage.isEmpty()) {
+ qCritical("Writing the database failed %s.", qPrintable(errorMessage));
+ return EXIT_FAILURE;
+ }
+
+ outputTextStream << "Successfully edited entry " << entry->title() << "." << endl;
+ return EXIT_SUCCESS;
+}
diff --git a/src/cli/Edit.h b/src/cli/Edit.h
new file mode 100644
index 000000000..2c413bea0
--- /dev/null
+++ b/src/cli/Edit.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_EDIT_H
+#define KEEPASSXC_EDIT_H
+
+#include "Command.h"
+
+class Edit : public Command
+{
+public:
+ Edit();
+ ~Edit();
+ int execute(const QStringList& arguments);
+};
+
+#endif // KEEPASSXC_EDIT_H
diff --git a/src/cli/EntropyMeter.cpp b/src/cli/EntropyMeter.cpp
deleted file mode 100644
index a62cd3077..000000000
--- a/src/cli/EntropyMeter.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "EntropyMeter.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "zxcvbn/zxcvbn.h"
-
-/* For pre-compiled headers under windows */
-#ifdef _WIN32
-#ifndef __MINGW32__
-#include "stdafx.h"
-#endif
-#endif
-
-static void calculate(const char *pwd, int advanced)
-{
- double e;
- int len = strlen(pwd);
- if (advanced == 0){
- e = ZxcvbnMatch(pwd, 0, 0);
- printf("Pass '%s' \tLength %d\tEntropy %.3f\tLog10 %.3f\n", pwd, len, e, e * 0.301029996);
- } else {
- int ChkLen;
- ZxcMatch_t *info, *p;
- double m = 0.0;
- e = ZxcvbnMatch(pwd, 0, &info);
- for(p = info; p; p = p->Next) {
- m += p->Entrpy;
- }
- m = e - m;
- printf("Pass '%s' \tLength %d\tEntropy %.3f\tLog10 %.3f\n Multi-word extra bits %.1f\n", pwd, len, e, e * 0.301029996, m);
- p = info;
- ChkLen = 0;
- while(p) {
- int n;
- switch(static_cast<int>(p->Type))
- {
- case BRUTE_MATCH: printf(" Type: Bruteforce "); break;
- case DICTIONARY_MATCH: printf(" Type: Dictionary "); break;
- case DICT_LEET_MATCH: printf(" Type: Dict+Leet "); break;
- case USER_MATCH: printf(" Type: User Words "); break;
- case USER_LEET_MATCH: printf(" Type: User+Leet "); break;
- case REPEATS_MATCH: printf(" Type: Repeated "); break;
- case SEQUENCE_MATCH: printf(" Type: Sequence "); break;
- case SPATIAL_MATCH: printf(" Type: Spatial "); break;
- case DATE_MATCH: printf(" Type: Date "); break;
- case BRUTE_MATCH+MULTIPLE_MATCH: printf(" Type: Bruteforce(Rep)"); break;
- case DICTIONARY_MATCH+MULTIPLE_MATCH: printf(" Type: Dictionary(Rep)"); break;
- case DICT_LEET_MATCH+MULTIPLE_MATCH: printf(" Type: Dict+Leet(Rep) "); break;
- case USER_MATCH+MULTIPLE_MATCH: printf(" Type: User Words(Rep)"); break;
- case USER_LEET_MATCH+MULTIPLE_MATCH: printf(" Type: User+Leet(Rep) "); break;
- case REPEATS_MATCH+MULTIPLE_MATCH: printf(" Type: Repeated(Rep) "); break;
- case SEQUENCE_MATCH+MULTIPLE_MATCH: printf(" Type: Sequence(Rep) "); break;
- case SPATIAL_MATCH+MULTIPLE_MATCH: printf(" Type: Spatial(Rep) "); break;
- case DATE_MATCH+MULTIPLE_MATCH: printf(" Type: Date(Rep) "); break;
-
- default: printf(" Type: Unknown%d ", p->Type); break;
- }
- ChkLen += p->Length;
- printf(" Length %d Entropy %6.3f (%.2f) ", p->Length, p->Entrpy, p->Entrpy * 0.301029996);
- for(n = 0; n < p->Length; ++n, ++pwd) {
- printf("%c", *pwd);
- }
- printf("\n");
- p = p->Next;
- }
- ZxcvbnFreeInfo(info);
- if (ChkLen != len)
- printf("*** Password length (%d) != sum of length of parts (%d) ***\n", len, ChkLen);
- }
-}
-
-int EntropyMeter::execute(int argc, char **argv)
-{
- printf("KeePassXC Entropy Meter, based on zxcvbn-c.\nEnter your password below or pass it as argv\n");
- printf(" Usage: entropy-meter [-a] [pwd1 pwd2 ...]\n> ");
- int i, advanced;
- if ((argc > 1) && (argv[1][0] == '-') && (!strcmp(argv[1], "-a")))
- {
- advanced = 1;
- }
- i = 2;
- if (i >= argc)
- {
- /* No test passwords on command line, so get them from stdin */
- char line[500];
- while(fgets(line, sizeof line, stdin))
- {
- /* Drop the trailing newline character */
- for(i = 0; i < static_cast<int>(sizeof line - 1); ++i)
- {
- if (line[i] < ' ')
- {
- line[i] = 0;
- break;
- }
- }
- if (line[0]) {
- calculate(line,advanced);
- printf("> ");
- }
- }
- }
- else
- {
- /* Do the test passwords on the command line */
- for(; i < argc; ++i)
- {
- calculate(argv[i],advanced);
- }
- }
- return 0;
-}
diff --git a/src/cli/Estimate.cpp b/src/cli/Estimate.cpp
new file mode 100644
index 000000000..9a2ab0b0f
--- /dev/null
+++ b/src/cli/Estimate.cpp
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Estimate.h"
+
+#include <QCommandLineParser>
+#include <QTextStream>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <zxcvbn.h>
+
+/* For pre-compiled headers under windows */
+#ifdef _WIN32
+#ifndef __MINGW32__
+#include "stdafx.h"
+#endif
+#endif
+
+Estimate::Estimate()
+{
+ name = QString("estimate");
+ description = QObject::tr("Estimate the entropy of a password.");
+}
+
+Estimate::~Estimate()
+{
+}
+
+static void estimate(const char* pwd, bool advanced)
+{
+ double e;
+ int len = strlen(pwd);
+ if (!advanced) {
+ e = ZxcvbnMatch(pwd, 0, 0);
+ printf("Length %d\tEntropy %.3f\tLog10 %.3f\n", len, e, e * 0.301029996);
+ } else {
+ int ChkLen;
+ ZxcMatch_t *info, *p;
+ double m = 0.0;
+ e = ZxcvbnMatch(pwd, 0, &info);
+ for (p = info; p; p = p->Next) {
+ m += p->Entrpy;
+ }
+ m = e - m;
+ printf("Length %d\tEntropy %.3f\tLog10 %.3f\n Multi-word extra bits %.1f\n", len, e, e * 0.301029996, m);
+ p = info;
+ ChkLen = 0;
+ while (p) {
+ int n;
+ switch (static_cast<int>(p->Type)) {
+ case BRUTE_MATCH:
+ printf(" Type: Bruteforce ");
+ break;
+ case DICTIONARY_MATCH:
+ printf(" Type: Dictionary ");
+ break;
+ case DICT_LEET_MATCH:
+ printf(" Type: Dict+Leet ");
+ break;
+ case USER_MATCH:
+ printf(" Type: User Words ");
+ break;
+ case USER_LEET_MATCH:
+ printf(" Type: User+Leet ");
+ break;
+ case REPEATS_MATCH:
+ printf(" Type: Repeated ");
+ break;
+ case SEQUENCE_MATCH:
+ printf(" Type: Sequence ");
+ break;
+ case SPATIAL_MATCH:
+ printf(" Type: Spatial ");
+ break;
+ case DATE_MATCH:
+ printf(" Type: Date ");
+ break;
+ case BRUTE_MATCH + MULTIPLE_MATCH:
+ printf(" Type: Bruteforce(Rep)");
+ break;
+ case DICTIONARY_MATCH + MULTIPLE_MATCH:
+ printf(" Type: Dictionary(Rep)");
+ break;
+ case DICT_LEET_MATCH + MULTIPLE_MATCH:
+ printf(" Type: Dict+Leet(Rep) ");
+ break;
+ case USER_MATCH + MULTIPLE_MATCH:
+ printf(" Type: User Words(Rep)");
+ break;
+ case USER_LEET_MATCH + MULTIPLE_MATCH:
+ printf(" Type: User+Leet(Rep) ");
+ break;
+ case REPEATS_MATCH + MULTIPLE_MATCH:
+ printf(" Type: Repeated(Rep) ");
+ break;
+ case SEQUENCE_MATCH + MULTIPLE_MATCH:
+ printf(" Type: Sequence(Rep) ");
+ break;
+ case SPATIAL_MATCH + MULTIPLE_MATCH:
+ printf(" Type: Spatial(Rep) ");
+ break;
+ case DATE_MATCH + MULTIPLE_MATCH:
+ printf(" Type: Date(Rep) ");
+ break;
+
+ default:
+ printf(" Type: Unknown%d ", p->Type);
+ break;
+ }
+ ChkLen += p->Length;
+ printf(" Length %d Entropy %6.3f (%.2f) ", p->Length, p->Entrpy, p->Entrpy * 0.301029996);
+ for (n = 0; n < p->Length; ++n, ++pwd) {
+ printf("%c", *pwd);
+ }
+ printf("\n");
+ p = p->Next;
+ }
+ ZxcvbnFreeInfo(info);
+ if (ChkLen != len) {
+ printf("*** Password length (%d) != sum of length of parts (%d) ***\n", len, ChkLen);
+ }
+ }
+}
+
+int Estimate::execute(const QStringList& arguments)
+{
+ QTextStream inputTextStream(stdin, QIODevice::ReadOnly);
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("password", QObject::tr("Password for which to estimate the entropy."), "[password]");
+ QCommandLineOption advancedOption(QStringList() << "a"
+ << "advanced",
+ QObject::tr("Perform advanced analysis on the password."));
+ parser.addOption(advancedOption);
+ parser.process(arguments);
+
+ const QStringList args = parser.positionalArguments();
+ if (args.size() > 1) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli estimate");
+ return EXIT_FAILURE;
+ }
+
+ QString password;
+ if (args.size() == 1) {
+ password = args.at(0);
+ } else {
+ password = inputTextStream.readLine();
+ }
+
+ estimate(password.toLatin1(), parser.isSet(advancedOption));
+ return EXIT_SUCCESS;
+}
diff --git a/src/cli/Estimate.h b/src/cli/Estimate.h
new file mode 100644
index 000000000..15f922752
--- /dev/null
+++ b/src/cli/Estimate.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_ESTIMATE_H
+#define KEEPASSXC_ESTIMATE_H
+
+#include "Command.h"
+
+class Estimate : public Command
+{
+public:
+ Estimate();
+ ~Estimate();
+ int execute(const QStringList& arguments);
+};
+
+#endif // KEEPASSXC_ESTIMATE_H
diff --git a/src/cli/Extract.cpp b/src/cli/Extract.cpp
index b9433801c..b48d5a6aa 100644
--- a/src/cli/Extract.cpp
+++ b/src/cli/Extract.cpp
@@ -21,37 +21,76 @@
#include "Extract.h"
#include <QCommandLineParser>
-#include <QCoreApplication>
#include <QFile>
-#include <QStringList>
#include <QTextStream>
+#include "cli/Utils.h"
#include "core/Database.h"
#include "format/KeePass2Reader.h"
#include "keys/CompositeKey.h"
-#include "cli/PasswordInput.h"
+#include "keys/FileKey.h"
+#include "keys/PasswordKey.h"
-int Extract::execute(int argc, char** argv)
+Extract::Extract()
+{
+ name = QString("extract");
+ description = QObject::tr("Extract and print the content of a database.");
+}
+
+Extract::~Extract()
+{
+}
+
+int Extract::execute(const QStringList& arguments)
{
- QCoreApplication app(argc, argv);
QTextStream out(stdout);
+ QTextStream errorTextStream(stderr);
QCommandLineParser parser;
- parser.setApplicationDescription(
- QCoreApplication::translate("main", "Extract and print the content of a database."));
- parser.addPositionalArgument("database", QCoreApplication::translate("main", "Path of the database to extract."));
- parser.process(app);
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database", QObject::tr("Path of the database to extract."));
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+ parser.process(arguments);
const QStringList args = parser.positionalArguments();
if (args.size() != 1) {
- parser.showHelp(EXIT_FAILURE);
+ out << parser.helpText().replace("keepassxc-cli", "keepassxc-cli extract");
+ return EXIT_FAILURE;
}
- out << "Insert the database password\n> ";
+ out << QObject::tr("Insert password to unlock %1: ").arg(args.at(0));
out.flush();
- QString line = PasswordInput::getPassword();
- CompositeKey key = CompositeKey::readFromLine(line);
+ CompositeKey compositeKey;
+
+ QString line = Utils::getPassword();
+ PasswordKey passwordKey;
+ passwordKey.setPassword(line);
+ compositeKey.addKey(passwordKey);
+
+ QString keyFilePath = parser.value(keyFile);
+ if (!keyFilePath.isEmpty()) {
+ FileKey fileKey;
+ QString errorMsg;
+ if (!fileKey.load(keyFilePath, &errorMsg)) {
+ errorTextStream << QObject::tr("Failed to load key file %1 : %2").arg(keyFilePath).arg(errorMsg);
+ errorTextStream << endl;
+ return EXIT_FAILURE;
+ }
+
+ if (fileKey.type() != FileKey::Hashed) {
+ errorTextStream << QObject::tr("WARNING: You are using a legacy key file format which may become\n"
+ "unsupported in the future.\n\n"
+ "Please consider generating a new key file.");
+ errorTextStream << endl;
+ }
+
+ compositeKey.addKey(fileKey);
+ }
QString databaseFilename = args.at(0);
QFile dbFile(databaseFilename);
@@ -66,10 +105,10 @@ int Extract::execute(int argc, char** argv)
KeePass2Reader reader;
reader.setSaveXml(true);
- Database* db = reader.readDatabase(&dbFile, key);
+ Database* db = reader.readDatabase(&dbFile, compositeKey);
delete db;
- QByteArray xmlData = reader.xmlData();
+ QByteArray xmlData = reader.reader()->xmlData();
if (reader.hasError()) {
if (xmlData.isEmpty()) {
diff --git a/src/cli/Extract.h b/src/cli/Extract.h
index e1b0672ec..2939afddb 100644
--- a/src/cli/Extract.h
+++ b/src/cli/Extract.h
@@ -18,10 +18,14 @@
#ifndef KEEPASSXC_EXTRACT_H
#define KEEPASSXC_EXTRACT_H
-class Extract
+#include "Command.h"
+
+class Extract : public Command
{
public:
- static int execute(int argc, char** argv);
+ Extract();
+ ~Extract();
+ int execute(const QStringList& arguments);
};
#endif // KEEPASSXC_EXTRACT_H
diff --git a/src/cli/Generate.cpp b/src/cli/Generate.cpp
new file mode 100644
index 000000000..eb8fea5e8
--- /dev/null
+++ b/src/cli/Generate.cpp
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <cstdlib>
+#include <stdio.h>
+
+#include "Generate.h"
+
+#include <QCommandLineParser>
+#include <QTextStream>
+
+#include "core/PasswordGenerator.h"
+
+Generate::Generate()
+{
+ name = QString("generate");
+ description = QObject::tr("Generate a new random password.");
+}
+
+Generate::~Generate()
+{
+}
+
+int Generate::execute(const QStringList& arguments)
+{
+ QTextStream inputTextStream(stdin, QIODevice::ReadOnly);
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(this->description);
+ QCommandLineOption len(QStringList() << "L" << "length",
+ QObject::tr("Length of the generated password."),
+ QObject::tr("length"));
+ parser.addOption(len);
+ QCommandLineOption lower(QStringList() << "l",
+ QObject::tr("Use lowercase characters in the generated password."));
+ parser.addOption(lower);
+ QCommandLineOption upper(QStringList() << "u",
+ QObject::tr("Use uppercase characters in the generated password."));
+ parser.addOption(upper);
+ QCommandLineOption numeric(QStringList() << "n",
+ QObject::tr("Use numbers in the generated password."));
+ parser.addOption(numeric);
+ QCommandLineOption special(QStringList() << "s",
+ QObject::tr("Use special characters in the generated password."));
+ parser.addOption(special);
+ QCommandLineOption extended(QStringList() << "e",
+ QObject::tr("Use extended ASCII in the generated password."));
+ parser.addOption(extended);
+ parser.process(arguments);
+
+ const QStringList args = parser.positionalArguments();
+ if (!args.isEmpty()) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli generate");
+ return EXIT_FAILURE;
+ }
+
+ PasswordGenerator passwordGenerator;
+
+ if (parser.value(len).isEmpty()) {
+ passwordGenerator.setLength(PasswordGenerator::DefaultLength);
+ } else {
+ int length = parser.value(len).toInt();
+ passwordGenerator.setLength(length);
+ }
+
+ PasswordGenerator::CharClasses classes = 0x0;
+
+ if (parser.isSet(lower)) {
+ classes |= PasswordGenerator::LowerLetters;
+ }
+ if (parser.isSet(upper)) {
+ classes |= PasswordGenerator::UpperLetters;
+ }
+ if (parser.isSet(numeric)) {
+ classes |= PasswordGenerator::Numbers;
+ }
+ if (parser.isSet(special)) {
+ classes |= PasswordGenerator::SpecialCharacters;
+ }
+ if (parser.isSet(extended)) {
+ classes |= PasswordGenerator::EASCII;
+ }
+
+ passwordGenerator.setCharClasses(classes);
+ passwordGenerator.setFlags(PasswordGenerator::DefaultFlags);
+
+ if (!passwordGenerator.isValid()) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli generate");
+ return EXIT_FAILURE;
+ }
+
+ QString password = passwordGenerator.generatePassword();
+ outputTextStream << password << endl;
+
+ return EXIT_SUCCESS;
+}
diff --git a/src/cli/Generate.h b/src/cli/Generate.h
new file mode 100644
index 000000000..607fc105c
--- /dev/null
+++ b/src/cli/Generate.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_GENERATE_H
+#define KEEPASSXC_GENERATE_H
+
+#include "Command.h"
+
+class Generate : public Command
+{
+public:
+ Generate();
+ ~Generate();
+ int execute(const QStringList& arguments);
+};
+
+#endif // KEEPASSXC_GENERATE_H
diff --git a/src/cli/List.cpp b/src/cli/List.cpp
index de6bd5ef5..bdedaf210 100644
--- a/src/cli/List.cpp
+++ b/src/cli/List.cpp
@@ -20,75 +20,71 @@
#include "List.h"
-#include <QApplication>
#include <QCommandLineParser>
-#include <QCoreApplication>
-#include <QStringList>
#include <QTextStream>
-#include "gui/UnlockDatabaseDialog.h"
#include "core/Database.h"
#include "core/Entry.h"
#include "core/Group.h"
-#include "keys/CompositeKey.h"
+List::List()
+{
+ name = QString("ls");
+ description = QObject::tr("List database entries.");
+}
-int List::execute(int argc, char** argv)
+List::~List()
+{
+}
+
+int List::execute(const QStringList& arguments)
{
- QStringList arguments;
- for (int i = 0; i < argc; ++i) {
- arguments << QString(argv[i]);
- }
QTextStream out(stdout);
QCommandLineParser parser;
- parser.setApplicationDescription(QCoreApplication::translate("main", "List database entries."));
- parser.addPositionalArgument("database", QCoreApplication::translate("main", "Path of the database."));
- parser.addPositionalArgument("group",
- QCoreApplication::translate("main", "Path of the group to list. Default is /"),
- QString("[group]"));
- QCommandLineOption printUuidsOption(
- QStringList() << "u"
- << "print-uuids",
- QCoreApplication::translate("main", "Print the UUIDs of the entries and groups."));
- parser.addOption(printUuidsOption);
- QCommandLineOption guiPrompt(
- QStringList() << "g"
- << "gui-prompt",
- QCoreApplication::translate("main", "Use a GUI prompt unlocking the database."));
- parser.addOption(guiPrompt);
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database", QObject::tr("Path of the database."));
+ parser.addPositionalArgument("group", QObject::tr("Path of the group to list. Default is /"), QString("[group]"));
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
parser.process(arguments);
const QStringList args = parser.positionalArguments();
if (args.size() != 1 && args.size() != 2) {
- QCoreApplication app(argc, argv);
- parser.showHelp(EXIT_FAILURE);
- }
-
- Database* db = nullptr;
- if (parser.isSet("gui-prompt")) {
- QApplication app(argc, argv);
- db = UnlockDatabaseDialog::openDatabasePrompt(args.at(0));
- } else {
- QCoreApplication app(argc, argv);
- db = Database::unlockFromStdin(args.at(0));
+ out << parser.helpText().replace("keepassxc-cli", "keepassxc-cli ls");
+ return EXIT_FAILURE;
}
+ Database* db = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
if (db == nullptr) {
return EXIT_FAILURE;
}
- Group* group = db->rootGroup();
if (args.size() == 2) {
- QString groupPath = args.at(1);
- group = db->rootGroup()->findGroupByPath(groupPath);
- if (group == nullptr) {
- qCritical("Cannot find group %s.", qPrintable(groupPath));
- return EXIT_FAILURE;
- }
+ return this->listGroup(db, args.at(1));
+ }
+ return this->listGroup(db);
+}
+
+int List::listGroup(Database* database, QString groupPath)
+{
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+ if (groupPath.isEmpty()) {
+ outputTextStream << database->rootGroup()->print();
+ outputTextStream.flush();
+ return EXIT_SUCCESS;
+ }
+
+ Group* group = database->rootGroup()->findGroupByPath(groupPath);
+ if (group == nullptr) {
+ qCritical("Cannot find group %s.", qPrintable(groupPath));
+ return EXIT_FAILURE;
}
- out << group->print(parser.isSet("print-uuids"));
- out.flush();
+ outputTextStream << group->print();
+ outputTextStream.flush();
return EXIT_SUCCESS;
}
diff --git a/src/cli/List.h b/src/cli/List.h
index 18528bd78..98b8b5a45 100644
--- a/src/cli/List.h
+++ b/src/cli/List.h
@@ -18,10 +18,15 @@
#ifndef KEEPASSXC_LIST_H
#define KEEPASSXC_LIST_H
-class List
+#include "Command.h"
+
+class List : public Command
{
public:
- static int execute(int argc, char** argv);
+ List();
+ ~List();
+ int execute(const QStringList& arguments);
+ int listGroup(Database* database, QString groupPath = QString(""));
};
#endif // KEEPASSXC_LIST_H
diff --git a/src/cli/Locate.cpp b/src/cli/Locate.cpp
new file mode 100644
index 000000000..f80372885
--- /dev/null
+++ b/src/cli/Locate.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <cstdlib>
+#include <stdio.h>
+
+#include "Locate.h"
+
+#include <QCommandLineParser>
+#include <QStringList>
+#include <QTextStream>
+
+#include "cli/Utils.h"
+#include "core/Database.h"
+#include "core/Entry.h"
+#include "core/Group.h"
+
+Locate::Locate()
+{
+ name = QString("locate");
+ description = QObject::tr("Find entries quickly.");
+}
+
+Locate::~Locate()
+{
+}
+
+int Locate::execute(const QStringList& arguments)
+{
+
+ QTextStream out(stdout);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database", QObject::tr("Path of the database."));
+ parser.addPositionalArgument("term", QObject::tr("Search term."));
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+ parser.process(arguments);
+
+ const QStringList args = parser.positionalArguments();
+ if (args.size() != 2) {
+ out << parser.helpText().replace("keepassxc-cli", "keepassxc-cli locate");
+ return EXIT_FAILURE;
+ }
+
+ Database* db = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
+ if (!db) {
+ return EXIT_FAILURE;
+ }
+
+ return this->locateEntry(db, args.at(1));
+}
+
+int Locate::locateEntry(Database* database, QString searchTerm)
+{
+
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+ QStringList results = database->rootGroup()->locate(searchTerm);
+ if (results.isEmpty()) {
+ outputTextStream << "No results for that search term" << endl;
+ return EXIT_SUCCESS;
+ }
+
+ for (QString result : results) {
+ outputTextStream << result << endl;
+ }
+ return EXIT_SUCCESS;
+}
diff --git a/src/cli/Locate.h b/src/cli/Locate.h
new file mode 100644
index 000000000..3677a034d
--- /dev/null
+++ b/src/cli/Locate.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_LOCATE_H
+#define KEEPASSXC_LOCATE_H
+
+#include "Command.h"
+
+class Locate : public Command
+{
+public:
+ Locate();
+ ~Locate();
+ int execute(const QStringList& arguments);
+ int locateEntry(Database* database, QString searchTerm);
+};
+
+#endif // KEEPASSXC_LOCATE_H
diff --git a/src/cli/Merge.cpp b/src/cli/Merge.cpp
index a179d69be..6b114bff3 100644
--- a/src/cli/Merge.cpp
+++ b/src/cli/Merge.cpp
@@ -19,79 +19,71 @@
#include "Merge.h"
-#include <QApplication>
#include <QCommandLineParser>
-#include <QCoreApplication>
-#include <QStringList>
#include <QTextStream>
#include "core/Database.h"
-#include "gui/UnlockDatabaseDialog.h"
-int Merge::execute(int argc, char** argv)
+Merge::Merge()
{
+ name = QString("merge");
+ description = QObject::tr("Merge two databases.");
+}
- QStringList arguments;
- for (int i = 0; i < argc; ++i) {
- arguments << QString(argv[i]);
- }
+Merge::~Merge()
+{
+}
+
+int Merge::execute(const QStringList& arguments)
+{
QTextStream out(stdout);
QCommandLineParser parser;
- parser.setApplicationDescription(QCoreApplication::translate("main", "Merge two databases."));
- parser.addPositionalArgument("database1",
- QCoreApplication::translate("main", "Path of the database to merge into."));
- parser.addPositionalArgument("database2",
- QCoreApplication::translate("main", "Path of the database to merge from."));
-
- QCommandLineOption samePasswordOption(
- QStringList() << "s"
- << "same-password",
- QCoreApplication::translate("main", "Use the same password for both database files."));
-
- QCommandLineOption guiPrompt(
- QStringList() << "g"
- << "gui-prompt",
- QCoreApplication::translate("main", "Use a GUI prompt unlocking the database."));
- parser.addOption(guiPrompt);
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database1", QObject::tr("Path of the database to merge into."));
+ parser.addPositionalArgument("database2", QObject::tr("Path of the database to merge from."));
+
+ QCommandLineOption samePasswordOption(QStringList() << "s"
+ << "same-credentials",
+ QObject::tr("Use the same credentials for both database files."));
+
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+ QCommandLineOption keyFileFrom(QStringList() << "f"
+ << "key-file-from",
+ QObject::tr("Key file of the database to merge from."),
+ QObject::tr("path"));
+ parser.addOption(keyFileFrom);
parser.addOption(samePasswordOption);
parser.process(arguments);
const QStringList args = parser.positionalArguments();
if (args.size() != 2) {
- QCoreApplication app(argc, argv);
- parser.showHelp(EXIT_FAILURE);
+ out << parser.helpText().replace("keepassxc-cli", "keepassxc-cli merge");
+ return EXIT_FAILURE;
}
- Database* db1;
- Database* db2;
-
- if (parser.isSet("gui-prompt")) {
- QApplication app(argc, argv);
- db1 = UnlockDatabaseDialog::openDatabasePrompt(args.at(0));
- if (!parser.isSet("same-password")) {
- db2 = UnlockDatabaseDialog::openDatabasePrompt(args.at(1));
- } else {
- db2 = Database::openDatabaseFile(args.at(1), *(db1->key().clone()));
- }
- } else {
- QCoreApplication app(argc, argv);
- db1 = Database::unlockFromStdin(args.at(0));
- if (!parser.isSet("same-password")) {
- db2 = Database::unlockFromStdin(args.at(1));
- } else {
- db2 = Database::openDatabaseFile(args.at(1), *(db1->key().clone()));
- }
- }
+ Database* db1 = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
if (db1 == nullptr) {
return EXIT_FAILURE;
}
+
+ Database* db2;
+ if (!parser.isSet("same-credentials")) {
+ db2 = Database::unlockFromStdin(args.at(1), parser.value(keyFileFrom));
+ } else {
+ db2 = Database::openDatabaseFile(args.at(1), *(db1->key().clone()));
+ }
if (db2 == nullptr) {
return EXIT_FAILURE;
}
db1->merge(db2);
+
QString errorMessage = db1->saveToFile(args.at(0));
if (!errorMessage.isEmpty()) {
qCritical("Unable to save database to file : %s", qPrintable(errorMessage));
@@ -100,5 +92,4 @@ int Merge::execute(int argc, char** argv)
out << "Successfully merged the database files.\n";
return EXIT_SUCCESS;
-
}
diff --git a/src/cli/Merge.h b/src/cli/Merge.h
index 95da7af81..496c66b86 100644
--- a/src/cli/Merge.h
+++ b/src/cli/Merge.h
@@ -18,10 +18,14 @@
#ifndef KEEPASSXC_MERGE_H
#define KEEPASSXC_MERGE_H
-class Merge
+#include "Command.h"
+
+class Merge : public Command
{
public:
- static int execute(int argc, char** argv);
+ Merge();
+ ~Merge();
+ int execute(const QStringList& arguments);
};
#endif // KEEPASSXC_MERGE_H
diff --git a/src/cli/Remove.cpp b/src/cli/Remove.cpp
new file mode 100644
index 000000000..64a5976e9
--- /dev/null
+++ b/src/cli/Remove.cpp
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <cstdlib>
+#include <stdio.h>
+
+#include "Remove.h"
+
+#include <QCommandLineParser>
+#include <QCoreApplication>
+#include <QStringList>
+#include <QTextStream>
+
+#include "cli/Utils.h"
+#include "core/Database.h"
+#include "core/Entry.h"
+#include "core/Group.h"
+#include "core/Metadata.h"
+#include "core/Tools.h"
+
+Remove::Remove()
+{
+ name = QString("rm");
+ description = QString("Remove an entry from the database.");
+}
+
+Remove::~Remove()
+{
+}
+
+int Remove::execute(const QStringList& arguments)
+{
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(QCoreApplication::translate("main", "Remove an entry from the database."));
+ parser.addPositionalArgument("database", QCoreApplication::translate("main", "Path of the database."));
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+ parser.addPositionalArgument("entry", QCoreApplication::translate("main", "Path of the entry to remove."));
+ parser.process(arguments);
+
+ const QStringList args = parser.positionalArguments();
+ if (args.size() != 2) {
+ outputTextStream << parser.helpText().replace("keepassxc-cli", "keepassxc-cli rm");
+ return EXIT_FAILURE;
+ }
+
+ Database* db = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
+ if (db == nullptr) {
+ return EXIT_FAILURE;
+ }
+
+ return this->removeEntry(db, args.at(0), args.at(1));
+}
+
+int Remove::removeEntry(Database* database, QString databasePath, QString entryPath)
+{
+
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+ Entry* entry = database->rootGroup()->findEntryByPath(entryPath);
+ if (!entry) {
+ qCritical("Entry %s not found.", qPrintable(entryPath));
+ return EXIT_FAILURE;
+ }
+
+ QString entryTitle = entry->title();
+ bool recycled = true;
+ if (Tools::hasChild(database->metadata()->recycleBin(), entry) || !database->metadata()->recycleBinEnabled()) {
+ delete entry;
+ recycled = false;
+ } else {
+ database->recycleEntry(entry);
+ };
+
+ QString errorMessage = database->saveToFile(databasePath);
+ if (!errorMessage.isEmpty()) {
+ qCritical("Unable to save database to file : %s", qPrintable(errorMessage));
+ return EXIT_FAILURE;
+ }
+
+ if (recycled) {
+ outputTextStream << "Successfully recycled entry " << entryTitle << "." << endl;
+ } else {
+ outputTextStream << "Successfully deleted entry " << entryTitle << "." << endl;
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/src/cli/Remove.h b/src/cli/Remove.h
new file mode 100644
index 000000000..5465530ed
--- /dev/null
+++ b/src/cli/Remove.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_REMOVE_H
+#define KEEPASSXC_REMOVE_H
+
+#include "Command.h"
+
+#include "core/Database.h"
+
+class Remove : public Command
+{
+public:
+ Remove();
+ ~Remove();
+ int execute(const QStringList& arguments);
+ int removeEntry(Database* database, QString databasePath, QString entryPath);
+};
+
+#endif // KEEPASSXC_REMOVE_H
diff --git a/src/cli/Show.cpp b/src/cli/Show.cpp
index c212a9d61..54561b1f7 100644
--- a/src/cli/Show.cpp
+++ b/src/cli/Show.cpp
@@ -21,50 +21,88 @@
#include "Show.h"
#include <QCommandLineParser>
-#include <QCoreApplication>
-#include <QStringList>
#include <QTextStream>
#include "core/Database.h"
#include "core/Entry.h"
#include "core/Group.h"
-#include "keys/CompositeKey.h"
-#include "cli/PasswordInput.h"
-int Show::execute(int argc, char** argv)
+Show::Show()
+{
+ name = QString("show");
+ description = QObject::tr("Show an entry's information.");
+}
+
+Show::~Show()
+{
+}
+
+int Show::execute(const QStringList& arguments)
{
- QCoreApplication app(argc, argv);
QTextStream out(stdout);
QCommandLineParser parser;
- parser.setApplicationDescription(QCoreApplication::translate("main", "Show a password."));
- parser.addPositionalArgument("database", QCoreApplication::translate("main", "Path of the database."));
- parser.addPositionalArgument("entry", QCoreApplication::translate("main", "Name of the entry to show."));
- parser.process(app);
+ parser.setApplicationDescription(this->description);
+ parser.addPositionalArgument("database", QObject::tr("Path of the database."));
+ QCommandLineOption keyFile(QStringList() << "k"
+ << "key-file",
+ QObject::tr("Key file of the database."),
+ QObject::tr("path"));
+ parser.addOption(keyFile);
+ QCommandLineOption attributes(QStringList() << "a"
+ << "attributes",
+ QObject::tr("Names of the attributes to show. "
+ "This option can be specified more than once, with each attribute shown one-per-line in the given order. "
+ "If no attributes are specified, a summary of the default attributes is given."),
+ QObject::tr("attribute"));
+ parser.addOption(attributes);
+ parser.addPositionalArgument("entry", QObject::tr("Name of the entry to show."));
+ parser.process(arguments);
const QStringList args = parser.positionalArguments();
if (args.size() != 2) {
- parser.showHelp(EXIT_FAILURE);
+ out << parser.helpText().replace("keepassxc-cli", "keepassxc-cli show");
+ return EXIT_FAILURE;
}
- out << "Insert the database password\n> ";
- out.flush();
-
- QString line = PasswordInput::getPassword();
- CompositeKey key = CompositeKey::readFromLine(line);
-
- Database* db = Database::openDatabaseFile(args.at(0), key);
+ Database* db = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
if (db == nullptr) {
return EXIT_FAILURE;
}
- QString entryId = args.at(1);
- Entry* entry = db->rootGroup()->findEntry(entryId);
+ return this->showEntry(db, parser.values(attributes), args.at(1));
+}
+
+int Show::showEntry(Database* database, QStringList attributes, QString entryPath)
+{
+
+ QTextStream inputTextStream(stdin, QIODevice::ReadOnly);
+ QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
+
+ Entry* entry = database->rootGroup()->findEntry(entryPath);
if (!entry) {
- qCritical("Entry %s not found.", qPrintable(entryId));
+ qCritical("Could not find entry with path %s.", qPrintable(entryPath));
return EXIT_FAILURE;
}
- out << entry->password() << "\n";
- return EXIT_SUCCESS;
+ // If no attributes specified, output the default attribute set.
+ bool showAttributeNames = attributes.isEmpty();
+ if (attributes.isEmpty()) {
+ attributes = EntryAttributes::DefaultAttributes;
+ }
+
+ // Iterate over the attributes and output them line-by-line.
+ bool sawUnknownAttribute = false;
+ for (QString attribute : attributes) {
+ if (!entry->attributes()->contains(attribute)) {
+ sawUnknownAttribute = true;
+ qCritical("ERROR: unknown attribute '%s'.", qPrintable(attribute));
+ continue;
+ }
+ if (showAttributeNames) {
+ outputTextStream << attribute << ": ";
+ }
+ outputTextStream << entry->resolveMultiplePlaceholders(entry->attributes()->value(attribute)) << endl;
+ }
+ return sawUnknownAttribute ? EXIT_FAILURE : EXIT_SUCCESS;
}
diff --git a/src/cli/Show.h b/src/cli/Show.h
index 630b18f80..18b6d7049 100644
--- a/src/cli/Show.h
+++ b/src/cli/Show.h
@@ -18,10 +18,15 @@
#ifndef KEEPASSXC_SHOW_H
#define KEEPASSXC_SHOW_H
-class Show
+#include "Command.h"
+
+class Show : public Command
{
public:
- static int execute(int argc, char** argv);
+ Show();
+ ~Show();
+ int execute(const QStringList& arguments);
+ int showEntry(Database* database, QStringList attributes, QString entryPath);
};
#endif // KEEPASSXC_SHOW_H
diff --git a/src/cli/PasswordInput.cpp b/src/cli/Utils.cpp
index 16913e956..35e7cce38 100644
--- a/src/cli/PasswordInput.cpp
+++ b/src/cli/Utils.cpp
@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "PasswordInput.h"
+#include "Utils.h"
#ifdef Q_OS_WIN
#include <windows.h>
@@ -24,14 +24,10 @@
#include <unistd.h>
#endif
+#include <QProcess>
#include <QTextStream>
-
-PasswordInput::PasswordInput()
-{
-}
-
-void PasswordInput::setStdinEcho(bool enable = true)
+void Utils::setStdinEcho(bool enable = true)
{
#ifdef Q_OS_WIN
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
@@ -60,7 +56,7 @@ void PasswordInput::setStdinEcho(bool enable = true)
#endif
}
-QString PasswordInput::getPassword()
+QString Utils::getPassword()
{
static QTextStream inputTextStream(stdin, QIODevice::ReadOnly);
static QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
@@ -75,3 +71,52 @@ QString PasswordInput::getPassword()
return line;
}
+
+/*
+ * A valid and running event loop is needed to use the global QClipboard,
+ * so we need to use this from the CLI.
+ */
+int Utils::clipText(const QString& text)
+{
+
+ QString programName = "";
+ QStringList arguments;
+
+#ifdef Q_OS_UNIX
+ programName = "xclip";
+ arguments << "-i"
+ << "-selection"
+ << "clipboard";
+#endif
+
+#ifdef Q_OS_MACOS
+ programName = "pbcopy";
+#endif
+
+#ifdef Q_OS_WIN
+ programName = "clip";
+#endif
+
+ if (programName.isEmpty()) {
+ qCritical("No program defined for clipboard manipulation");
+ return EXIT_FAILURE;
+ }
+
+ QProcess* clipProcess = new QProcess(nullptr);
+ clipProcess->start(programName, arguments);
+ clipProcess->waitForStarted();
+
+ if (clipProcess->state() != QProcess::Running) {
+ qCritical("Unable to start program %s", qPrintable(programName));
+ return EXIT_FAILURE;
+ }
+
+ if (clipProcess->write(text.toLatin1()) == -1) {
+ qDebug("Unable to write to process : %s", qPrintable(clipProcess->errorString()));
+ }
+ clipProcess->waitForBytesWritten();
+ clipProcess->closeWriteChannel();
+ clipProcess->waitForFinished();
+
+ return clipProcess->exitCode();
+}
diff --git a/src/cli/PasswordInput.h b/src/cli/Utils.h
index b76061864..1f8051183 100644
--- a/src/cli/PasswordInput.h
+++ b/src/cli/Utils.h
@@ -15,17 +15,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSXC_PASSWORDINPUT_H
-#define KEEPASSXC_PASSWORDINPUT_H
+#ifndef KEEPASSXC_UTILS_H
+#define KEEPASSXC_UTILS_H
#include <QtCore/qglobal.h>
-class PasswordInput
+class Utils
{
public:
- PasswordInput();
static void setStdinEcho(bool enable);
static QString getPassword();
+ static int clipText(const QString& text);
};
-#endif // KEEPASSXC_PASSWORDINPUT_H
+#endif // KEEPASSXC_UTILS_H
diff --git a/src/cli/keepassxc-cli.1 b/src/cli/keepassxc-cli.1
new file mode 100644
index 000000000..cc1e7b8d7
--- /dev/null
+++ b/src/cli/keepassxc-cli.1
@@ -0,0 +1,150 @@
+.TH KEEPASSXC-CLI 1 "Jan 19, 2018"
+
+.SH NAME
+keepassxc-cli \- command line interface for the \fBKeePassXC\fP password manager.
+
+.SH SYNOPSIS
+.B keepassxc-cli
+.RI [ options ]
+.I command
+
+.SH DESCRIPTION
+\fBkeepassxc-cli\fP is the command line interface for the \fBKeePassXC\fP password manager. It provides the ability to query and modify the entries of a KeePass database, directly from the command line.
+
+.SH COMMANDS
+
+.IP "add [options] <database> <entry>"
+Adds a new entry to a database. A password can be generated (\fI-g\fP option), or a prompt can be displayed to input the password (\fI-p\fP option).
+
+.IP "clip [options] <database> <entry> [timeout]"
+Copies the password of a database entry to the clipboard. If multiple entries with the same name exist in different groups, only the password for the first one is going to be copied. For copying the password of an entry in a specific group, the group path to the entry should be specified as well, instead of just the name. Optionally, a timeout in seconds can be specified to automatically clear the clipboard.
+
+.IP "diceware [options]"
+Generate a random diceware passphrase.
+
+.IP "edit [options] <database> <entry>"
+Edits a database entry. A password can be generated (\fI-g\fP option), or a prompt can be displayed to input the password (\fI-p\fP option).
+
+.IP "estimate [options] [password]"
+Estimates the entropy of a password. The password to estimate can be provided as a positional argument, or using the standard input.
+
+.IP "extract [options] <database>"
+Extracts and prints the contents of a database to standard output in XML format.
+
+.IP "generate [options]"
+Generate a random password.
+
+.IP "locate [options] <database> <term>"
+Locates all the entries that match a specific search term in a database.
+
+.IP "ls [options] <database> [group]"
+Lists the contents of a group in a database. If no group is specified, it will default to the root group.
+
+.IP "merge [options] <database1> <database2>"
+Merges two databases together. The first database file is going to be replaced by the result of the merge, for that reason it is advisable to keep a backup of the two database files before attempting a merge. In the case that both databases make use of the same credentials, the \fI--same-credentials\fP or \fI-s\fP option can be used.
+
+.IP "rm [options] <database> <entry>"
+Removes an entry from a database. If the database has a recycle bin, the entry will be moved there. If the entry is already in the recycle bin, it will be removed permanently.
+
+.IP "show [options] <database> <entry>"
+Shows the title, username, password, URL and notes of a database entry. Regarding the occurrence of multiple entries with the same name in different groups, everything stated in the \fIclip\fP command section also applies here.
+
+.SH OPTIONS
+
+.SS "General options"
+
+.IP "-k, --key-file <path>"
+Specifies a path to a key file for unlocking the database. In a merge operation this option is used to specify the key file path for the first database.
+
+.IP "-h, --help"
+Displays help information.
+
+.IP "-v, --version"
+Shows the program version.
+
+
+.SS "Merge options"
+
+.IP "-f, --key-file-from <path>"
+Path of the key file for the second database.
+
+.IP "-s, --same-credentials"
+Use the same credentials for unlocking both database.
+
+
+.SS "Add and edit options"
+
+.IP "-u, --username <username>"
+Specify the username of the entry.
+
+.IP "--url <url>"
+Specify the URL of the entry.
+
+.IP "-p, --password-prompt"
+Use a password prompt for the entry's password.
+
+.IP "-g, --generate"
+Generate a new password for the entry.
+
+.IP "-l, --password-length"
+Specify the length of the password to generate.
+
+
+.SS "Edit options"
+
+.IP "-t, --title <title>"
+Specify the title of the entry.
+
+
+.SS "Estimate options"
+
+.IP "-a, --advanced"
+Perform advanced analysis on the password.
+
+
+.SS "Show options"
+
+.IP "-a, --attributes <attribute>..."
+Names of the attributes to show. This option can be specified more than once,
+with each attribute shown one-per-line in the given order. If no attributes are
+specified, a summary of the default attributes is given.
+
+
+.SS "Diceware options"
+
+.IP "-W, --words <count>"
+Desired number of words for the generated passphrase. [Default: 7]
+
+.IP "-w, --word-list <path>"
+Path of the wordlist for the diceware generator. The wordlist must have > 1000 words,
+otherwise the program will fail. If the wordlist has < 4000 words a warning will
+be printed to STDERR.
+
+
+.SS "Generate options"
+
+.IP "-L, --length <length>"
+Desired length for the generated password. [Default: 16]
+
+.IP "-l"
+Use lowercase characters for the generated password. [Default: Enabled]
+
+.IP "-u"
+Use uppercase characters for the generated password. [Default: Enabled]
+
+.IP "-n"
+Use numbers characters for the generated password. [Default: Enabled]
+
+.IP "-s"
+Use special characters for the generated password. [Default: Disabled]
+
+.IP "-e"
+Use extended ASCII characters for the generated password. [Default: Disabled]
+
+
+
+.SH REPORTING BUGS
+Bugs and feature requests can be reported on GitHub at https://github.com/keepassxreboot/keepassxc/issues.
+
+.SH AUTHOR
+This manual page was written by Manolis Agkopian <m.agkopian@gmail.com>.
diff --git a/src/cli/keepassxc-cli.cpp b/src/cli/keepassxc-cli.cpp
index 18bb224ec..1462f92b9 100644
--- a/src/cli/keepassxc-cli.cpp
+++ b/src/cli/keepassxc-cli.cpp
@@ -22,12 +22,7 @@
#include <QStringList>
#include <QTextStream>
-#include <cli/Clip.h>
-#include <cli/EntropyMeter.h>
-#include <cli/Extract.h>
-#include <cli/List.h>
-#include <cli/Merge.h>
-#include <cli/Show.h>
+#include <cli/Command.h>
#include "config-keepassx.h"
#include "core/Tools.h"
@@ -48,6 +43,10 @@ int main(int argc, char** argv)
return EXIT_FAILURE;
}
+ QCoreApplication app(argc, argv);
+ app.setApplicationVersion(KEEPASSX_VERSION);
+
+ QTextStream out(stdout);
QStringList arguments;
for (int i = 0; i < argc; ++i) {
arguments << QString(argv[i]);
@@ -55,16 +54,13 @@ int main(int argc, char** argv)
QCommandLineParser parser;
QString description("KeePassXC command line interface.");
- description = description.append(QString("\n\nAvailable commands:"));
- description = description.append(QString("\n clip\t\tCopy a password to the clipboard."));
- description = description.append(QString("\n extract\tExtract and print the content of a database."));
- description = description.append(QString("\n entropy-meter\tCalculate password entropy."));
- description = description.append(QString("\n list\t\tList database entries."));
- description = description.append(QString("\n merge\t\tMerge two databases."));
- description = description.append(QString("\n show\t\tShow a password."));
- parser.setApplicationDescription(QCoreApplication::translate("main", qPrintable(description)));
+ description = description.append(QObject::tr("\n\nAvailable commands:\n"));
+ for (Command* command : Command::getCommands()) {
+ description = description.append(command->getDescriptionLine());
+ }
+ parser.setApplicationDescription(description);
- parser.addPositionalArgument("command", QCoreApplication::translate("main", "Name of the command to execute."));
+ parser.addPositionalArgument("command", QObject::tr("Name of the command to execute."));
parser.addHelpOption();
parser.addVersionOption();
@@ -74,62 +70,28 @@ int main(int argc, char** argv)
parser.parse(arguments);
if (parser.positionalArguments().size() < 1) {
- QCoreApplication app(argc, argv);
- app.setApplicationVersion(KEEPASSX_VERSION);
if (parser.isSet("version")) {
// Switch to parser.showVersion() when available (QT 5.4).
- QTextStream out(stdout);
- out << KEEPASSX_VERSION << "\n";
- out.flush();
+ out << KEEPASSX_VERSION << endl;
return EXIT_SUCCESS;
}
parser.showHelp();
}
QString commandName = parser.positionalArguments().at(0);
+ Command* command = Command::getCommand(commandName);
- int exitCode = EXIT_FAILURE;
-
- if (commandName == "clip") {
- // Removing the first cli argument before dispatching.
- ++argv;
- --argc;
- argv[0] = const_cast<char*>("keepassxc-cli clip");
- exitCode = Clip::execute(argc, argv);
- } else if (commandName == "entropy-meter") {
- ++argv;
- --argc;
- argv[0] = const_cast<char*>("keepassxc-cli entropy-meter");
- exitCode = EntropyMeter::execute(argc, argv);
- } else if (commandName == "extract") {
- ++argv;
- --argc;
- argv[0] = const_cast<char*>("keepassxc-cli extract");
- exitCode = Extract::execute(argc, argv);
- } else if (commandName == "list") {
- ++argv;
- --argc;
- argv[0] = const_cast<char*>("keepassxc-cli list");
- exitCode = List::execute(argc, argv);
- } else if (commandName == "merge") {
- ++argv;
- --argc;
- argv[0] = const_cast<char*>("keepassxc-cli merge");
- exitCode = Merge::execute(argc, argv);
- } else if (commandName == "show") {
- ++argv;
- --argc;
- argv[0] = const_cast<char*>("keepassxc-cli show");
- exitCode = Show::execute(argc, argv);
- } else {
+ if (command == nullptr) {
qCritical("Invalid command %s.", qPrintable(commandName));
- QCoreApplication app(argc, argv);
- app.setApplicationVersion(KEEPASSX_VERSION);
// showHelp exits the application immediately, so we need to set the
// exit code here.
parser.showHelp(EXIT_FAILURE);
}
+ // Removing the first argument (keepassxc).
+ arguments.removeFirst();
+ int exitCode = command->execute(arguments);
+
#if defined(WITH_ASAN) && defined(WITH_LSAN)
// do leak check here to prevent massive tail of end-of-process leak errors from third-party libraries
__lsan_do_leak_check();
diff --git a/src/config-keepassx.h.cmake b/src/config-keepassx.h.cmake
index e06c69382..9f3952b04 100644
--- a/src/config-keepassx.h.cmake
+++ b/src/config-keepassx.h.cmake
@@ -3,18 +3,26 @@
#ifndef KEEPASSX_CONFIG_KEEPASSX_H
#define KEEPASSX_CONFIG_KEEPASSX_H
-#define KEEPASSX_VERSION "${KEEPASSXC_VERSION}"
+#define KEEPASSX_VERSION "@KEEPASSXC_VERSION@"
-#define KEEPASSX_SOURCE_DIR "${CMAKE_SOURCE_DIR}"
-#define KEEPASSX_BINARY_DIR "${CMAKE_BINARY_DIR}"
+#define KEEPASSX_SOURCE_DIR "@CMAKE_SOURCE_DIR@"
+#define KEEPASSX_BINARY_DIR "@CMAKE_BINARY_DIR@"
-#define KEEPASSX_PREFIX_DIR "${CMAKE_INSTALL_PREFIX}"
-#define KEEPASSX_PLUGIN_DIR "${PLUGIN_INSTALL_DIR}"
-#define KEEPASSX_DATA_DIR "${DATA_INSTALL_DIR}"
+#define KEEPASSX_PREFIX_DIR "@CMAKE_INSTALL_PREFIX@"
+#define KEEPASSX_PLUGIN_DIR "@PLUGIN_INSTALL_DIR@"
+#define KEEPASSX_DATA_DIR "@DATA_INSTALL_DIR@"
-#cmakedefine WITH_XC_HTTP
#cmakedefine WITH_XC_AUTOTYPE
+#cmakedefine WITH_XC_NETWORKING
+#cmakedefine WITH_XC_BROWSER
+#cmakedefine WITH_XC_HTTP
#cmakedefine WITH_XC_YUBIKEY
+#cmakedefine WITH_XC_SSHAGENT
+
+#cmakedefine KEEPASSXC_BUILD_TYPE "@KEEPASSXC_BUILD_TYPE@"
+#cmakedefine KEEPASSXC_BUILD_TYPE_RELEASE
+#cmakedefine KEEPASSXC_BUILD_TYPE_PRE_RELEASE
+#cmakedefine KEEPASSXC_BUILD_TYPE_SNAPSHOT
#cmakedefine KEEPASSXC_DIST
#cmakedefine KEEPASSXC_DIST_TYPE "@KEEPASSXC_DIST_TYPE@"
diff --git a/src/core/AsyncTask.h b/src/core/AsyncTask.h
new file mode 100644
index 000000000..67cab1609
--- /dev/null
+++ b/src/core/AsyncTask.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef KEEPASSXC_ASYNCTASK_HPP
+#define KEEPASSXC_ASYNCTASK_HPP
+
+#include <QFuture>
+#include <QFutureWatcher>
+#include <QtConcurrent>
+
+
+/**
+ * Asynchronously run computations outside the GUI thread.
+ */
+namespace AsyncTask
+{
+
+/**
+ * Wait for the given future without blocking the event loop.
+ *
+ * @param future future to wait for
+ * @return async task result
+ */
+template<typename FunctionObject>
+typename std::result_of<FunctionObject()>::type waitForFuture(QFuture<typename std::result_of<FunctionObject()>::type> future)
+{
+ QEventLoop loop;
+ QFutureWatcher<typename std::result_of<FunctionObject()>::type> watcher;
+ QObject::connect(&watcher, SIGNAL(finished()), &loop, SLOT(quit()));
+ watcher.setFuture(future);
+ loop.exec();
+ return future.result();
+}
+
+/**
+ * Run a given task and wait for it to finish without blocking the event loop.
+ *
+ * @param task std::function object to run
+ * @return async task result
+ */
+template<typename FunctionObject>
+typename std::result_of<FunctionObject()>::type runAndWaitForFuture(FunctionObject task)
+{
+ return waitForFuture<FunctionObject>(QtConcurrent::run(task));
+}
+
+}; // namespace AsyncTask
+
+#endif //KEEPASSXC_ASYNCTASK_HPP
diff --git a/src/core/AutoTypeAssociations.cpp b/src/core/AutoTypeAssociations.cpp
index 5ec4eb3b3..04221733f 100644
--- a/src/core/AutoTypeAssociations.cpp
+++ b/src/core/AutoTypeAssociations.cpp
@@ -103,6 +103,15 @@ int AutoTypeAssociations::size() const
return m_associations.size();
}
+int AutoTypeAssociations::associationsSize() const
+{
+ int size = 0;
+ for (const Association &association : m_associations) {
+ size += association.sequence.toUtf8().size() + association.window.toUtf8().size();
+ }
+ return size;
+}
+
void AutoTypeAssociations::clear()
{
m_associations.clear();
diff --git a/src/core/AutoTypeAssociations.h b/src/core/AutoTypeAssociations.h
index 61ef3fd4a..31e58cda0 100644
--- a/src/core/AutoTypeAssociations.h
+++ b/src/core/AutoTypeAssociations.h
@@ -43,6 +43,7 @@ public:
AutoTypeAssociations::Association get(int index) const;
QList<AutoTypeAssociations::Association> getAll() const;
int size() const;
+ int associationsSize() const;
void clear();
private:
diff --git a/src/core/AutoTypeMatch.cpp b/src/core/AutoTypeMatch.cpp
new file mode 100644
index 000000000..c1faab9e6
--- /dev/null
+++ b/src/core/AutoTypeMatch.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 David Wu <lightvector@gmail.com>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AutoTypeMatch.h"
+
+AutoTypeMatch::AutoTypeMatch()
+ : entry(nullptr),
+ sequence()
+{}
+
+AutoTypeMatch::AutoTypeMatch(Entry* entry, QString sequence)
+ : entry(entry),
+ sequence(sequence)
+{}
+
+bool AutoTypeMatch::operator==(const AutoTypeMatch& other) const
+{
+ return entry == other.entry && sequence == other.sequence;
+}
+
+bool AutoTypeMatch::operator!=(const AutoTypeMatch& other) const
+{
+ return entry != other.entry || sequence != other.sequence;
+}
diff --git a/src/core/AutoTypeMatch.h b/src/core/AutoTypeMatch.h
new file mode 100644
index 000000000..768cf1682
--- /dev/null
+++ b/src/core/AutoTypeMatch.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2015 David Wu <lightvector@gmail.com>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_AUTOTYPEMATCH_H
+#define KEEPASSX_AUTOTYPEMATCH_H
+
+#include <QObject>
+#include <QString>
+
+class Entry;
+
+struct AutoTypeMatch
+{
+ Entry* entry;
+ QString sequence;
+
+ AutoTypeMatch();
+ AutoTypeMatch(Entry* entry, QString sequence);
+
+ bool operator==(const AutoTypeMatch& other) const;
+ bool operator!=(const AutoTypeMatch& other) const;
+};
+
+Q_DECLARE_TYPEINFO(AutoTypeMatch, Q_MOVABLE_TYPE);
+
+#endif // KEEPASSX_AUTOTYPEMATCH_H
diff --git a/src/core/Base32.cpp b/src/core/Base32.cpp
index 13228a37f..78448ffb5 100644
--- a/src/core/Base32.cpp
+++ b/src/core/Base32.cpp
@@ -52,8 +52,9 @@ QVariant Base32::decode(const QByteArray& encodedData)
int nPads = 0;
for (int i = -1; i > -7; --i) {
- if ('=' == encodedData[encodedData.size() + i])
+ if ('=' == encodedData[encodedData.size() + i]) {
++nPads;
+ }
}
int specialOffset;
@@ -95,11 +96,12 @@ QVariant Base32::decode(const QByteArray& encodedData)
int nQuantumBytes = 5;
for (int n = 0; n < 8; ++n) {
- quint8 ch = static_cast<quint8>(encodedData[i++]);
+ auto ch = static_cast<quint8>(encodedData[i++]);
if ((ASCII_A <= ch && ch <= ASCII_Z) || (ASCII_a <= ch && ch <= ASCII_z)) {
ch -= ASCII_A;
- if (ch >= ALPH_POS_2)
+ if (ch >= ALPH_POS_2) {
ch -= ASCII_a - ASCII_A;
+ }
} else {
if (ASCII_2 <= ch && ch <= ASCII_7) {
ch -= ASCII_2;
@@ -126,8 +128,8 @@ QVariant Base32::decode(const QByteArray& encodedData)
const int offset = (nQuantumBytes - 1) * 8;
quint64 mask = quint64(0xFF) << offset;
for (int n = offset; n >= 0 && o < nBytes; n -= 8) {
- data[o++] = static_cast<char>((quantum & mask) >> n);
- mask >>= 8;
+ data[o++] = static_cast<char>((quantum & mask) >> n);
+ mask >>= 8;
}
}
@@ -147,7 +149,7 @@ QByteArray Base32::encode(const QByteArray& data)
const int rBits = nBits % 40; // in {0, 8, 16, 24, 32}
const int nQuanta = nBits / 40 + (rBits > 0 ? 1 : 0);
const int nBytes = nQuanta * 8;
- QByteArray encodedData(nQuanta * 8, Qt::Uninitialized);
+ QByteArray encodedData(nBytes, Qt::Uninitialized);
int i = 0;
int o = 0;
@@ -166,6 +168,7 @@ QByteArray Base32::encode(const QByteArray& data)
int index;
for (n = 35; n >= 0; n -= 5) {
index = (quantum & mask) >> n;
+ Q_ASSERT(0 <= index && index <= 31);
encodedData[o++] = alphabet[index];
mask >>= 5;
}
@@ -173,10 +176,11 @@ QByteArray Base32::encode(const QByteArray& data)
// < 40-bits of input at final input group
if (i < data.size()) {
- Q_ASSERT(rBits > 0);
+ Q_ASSERT(8 <= rBits && rBits <= 32);
quantum = 0;
- for (n = rBits - 8; n >= 0; n -= 8)
+ for (n = rBits - 8; n >= 0; n -= 8) {
quantum |= static_cast<quint64>(data[i++]) << n;
+ }
switch (rBits) {
case 8: // expand to 10 bits
@@ -195,7 +199,7 @@ QByteArray Base32::encode(const QByteArray& data)
n = 20;
break;
default: // expand to 35 bits
- Q_ASSERT(rBits == 32);
+ Q_ASSERT(32 == rBits);
quantum <<= 3;
mask = MASK_35BIT;
n = 30;
@@ -203,6 +207,7 @@ QByteArray Base32::encode(const QByteArray& data)
while (n >= 0) {
int index = (quantum & mask) >> n;
+ Q_ASSERT(0 <= index && index <= 31);
encodedData[o++] = alphabet[index];
mask >>= 5;
n -= 5;
diff --git a/src/core/Config.cpp b/src/core/Config.cpp
index 052db34bb..461ab1f74 100644
--- a/src/core/Config.cpp
+++ b/src/core/Config.cpp
@@ -21,8 +21,8 @@
#include <QCoreApplication>
#include <QDir>
#include <QSettings>
-#include <QStandardPaths>
#include <QTemporaryFile>
+#include <QStandardPaths>
Config* Config::m_instance(nullptr);
@@ -51,6 +51,18 @@ void Config::set(const QString& key, const QVariant& value)
m_settings->setValue(key, value);
}
+/**
+ * Sync configuration with persistent storage.
+ *
+ * Usually, you don't need to call this method manually, but if you are writing
+ * configurations after an emitted \link QCoreApplication::aboutToQuit() signal,
+ * use it to guarantee your config values are persisted.
+ */
+void Config::sync()
+{
+ m_settings->sync();
+}
+
Config::Config(const QString& fileName, QObject* parent)
: QObject(parent)
{
@@ -106,19 +118,22 @@ Config::~Config()
void Config::init(const QString& fileName)
{
m_settings.reset(new QSettings(fileName, QSettings::IniFormat));
+ connect(qApp, &QCoreApplication::aboutToQuit, this, &Config::sync);
m_defaults.insert("SingleInstance", true);
m_defaults.insert("RememberLastDatabases", true);
m_defaults.insert("RememberLastKeyFiles", true);
m_defaults.insert("OpenPreviousDatabasesOnStartup", true);
- m_defaults.insert("AutoSaveAfterEveryChange", false);
+ m_defaults.insert("AutoSaveAfterEveryChange", true);
m_defaults.insert("AutoReloadOnChange", true);
m_defaults.insert("AutoSaveOnExit", false);
- m_defaults.insert("ShowToolbar", true);
+ m_defaults.insert("BackupBeforeSave", false);
+ m_defaults.insert("UseAtomicSaves", true);
m_defaults.insert("SearchLimitGroup", false);
m_defaults.insert("MinimizeOnCopy", false);
m_defaults.insert("UseGroupIconOnEntryCreation", false);
m_defaults.insert("AutoTypeEntryTitleMatch", true);
+ m_defaults.insert("AutoTypeEntryURLMatch", true);
m_defaults.insert("AutoTypeDelay", 25);
m_defaults.insert("UseGroupIconOnEntryCreation", true);
m_defaults.insert("IgnoreGroupExpansion", true);
@@ -130,12 +145,16 @@ void Config::init(const QString& fileName)
m_defaults.insert("security/lockdatabasescreenlock", true);
m_defaults.insert("security/passwordsrepeat", false);
m_defaults.insert("security/passwordscleartext", false);
+ m_defaults.insert("security/hidepassworddetails", true);
m_defaults.insert("security/autotypeask", true);
m_defaults.insert("security/IconDownloadFallbackToGoogle", false);
m_defaults.insert("GUI/Language", "system");
m_defaults.insert("GUI/ShowTrayIcon", false);
+ m_defaults.insert("GUI/DarkTrayIcon", false);
m_defaults.insert("GUI/MinimizeToTray", false);
m_defaults.insert("GUI/MinimizeOnClose", false);
+ m_defaults.insert("GUI/HideUsernames", false);
+ m_defaults.insert("GUI/HidePasswords", true);
}
Config* Config::instance()
@@ -156,7 +175,7 @@ void Config::createConfigFromFile(const QString& file)
void Config::createTempFileInstance()
{
Q_ASSERT(!m_instance);
- QTemporaryFile* tmpFile = new QTemporaryFile();
+ auto* tmpFile = new QTemporaryFile();
bool openResult = tmpFile->open();
Q_ASSERT(openResult);
Q_UNUSED(openResult);
diff --git a/src/core/Config.h b/src/core/Config.h
index 2ee3f4dce..eb7978622 100644
--- a/src/core/Config.h
+++ b/src/core/Config.h
@@ -26,15 +26,18 @@ class QSettings;
class Config : public QObject
{
- Q_OBJECT
+Q_OBJECT
public:
- ~Config();
+ Q_DISABLE_COPY(Config)
+
+ ~Config() override;
QVariant get(const QString& key);
QVariant get(const QString& key, const QVariant& defaultValue);
QString getFileName();
void set(const QString& key, const QVariant& value);
bool hasAccessError();
+ void sync();
static Config* instance();
static void createConfigFromFile(const QString& file);
@@ -49,8 +52,6 @@ private:
QScopedPointer<QSettings> m_settings;
QHash<QString, QVariant> m_defaults;
-
- Q_DISABLE_COPY(Config)
};
inline Config* config() {
diff --git a/src/core/CsvParser.cpp b/src/core/CsvParser.cpp
index 70493804e..6a963fc45 100644
--- a/src/core/CsvParser.cpp
+++ b/src/core/CsvParser.cpp
@@ -268,8 +268,10 @@ void CsvParser::getChar(QChar& c) {
}
void CsvParser::ungetChar() {
- if (!m_ts.seek(m_lastPos))
- appendStatusMsg(QObject::tr("INTERNAL - unget lower bound exceeded"), true);
+ if (!m_ts.seek(m_lastPos)) {
+ qWarning("CSV Parser: unget lower bound exceeded");
+ m_isGood = false;
+ }
}
void CsvParser::peek(QChar& c) {
@@ -380,5 +382,5 @@ void CsvParser::appendStatusMsg(QString s, bool isCritical) {
.append(",")
.append(QString::number(m_currCol))
.append("\n");
- m_isGood = not isCritical;
+ m_isGood = !isCritical;
}
diff --git a/src/core/CustomData.cpp b/src/core/CustomData.cpp
new file mode 100644
index 000000000..61ac2980e
--- /dev/null
+++ b/src/core/CustomData.cpp
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "CustomData.h"
+
+CustomData::CustomData(QObject* parent)
+ : QObject(parent)
+{
+}
+
+QList<QString> CustomData::keys() const
+{
+ return m_data.keys();
+}
+
+bool CustomData::hasKey(const QString& key) const
+{
+ return m_data.contains(key);
+}
+
+QString CustomData::value(const QString& key) const
+{
+ return m_data.value(key);
+}
+
+bool CustomData::contains(const QString& key) const
+{
+ return m_data.contains(key);
+}
+
+bool CustomData::containsValue(const QString& value) const
+{
+ return m_data.values().contains(value);
+}
+
+void CustomData::set(const QString& key, const QString& value)
+{
+ bool addAttribute = !m_data.contains(key);
+ bool changeValue = !addAttribute && (m_data.value(key) != value);
+
+ if (addAttribute) {
+ emit aboutToBeAdded(key);
+ }
+
+ if (addAttribute || changeValue) {
+ m_data.insert(key, value);
+ emit modified();
+ }
+
+ if (addAttribute) {
+ emit added(key);
+ }
+}
+
+void CustomData::remove(const QString& key)
+{
+ emit aboutToBeRemoved(key);
+
+ m_data.remove(key);
+
+ emit removed(key);
+ emit modified();
+}
+
+void CustomData::rename(const QString& oldKey, const QString& newKey)
+{
+ const bool containsOldKey = m_data.contains(oldKey);
+ const bool containsNewKey = m_data.contains(newKey);
+ Q_ASSERT(containsOldKey && !containsNewKey);
+ if (!containsOldKey || containsNewKey) {
+ return;
+ }
+
+ QString data = value(oldKey);
+
+ emit aboutToRename(oldKey, newKey);
+
+ m_data.remove(oldKey);
+ m_data.insert(newKey, data);
+
+ emit modified();
+ emit renamed(oldKey, newKey);
+}
+
+void CustomData::copyDataFrom(const CustomData* other)
+{
+ if (*this == *other) {
+ return;
+ }
+
+ emit aboutToBeReset();
+
+ m_data = other->m_data;
+
+ emit reset();
+ emit modified();
+}
+bool CustomData::operator==(const CustomData& other) const
+{
+ return (m_data == other.m_data);
+}
+
+bool CustomData::operator!=(const CustomData& other) const
+{
+ return (m_data != other.m_data);
+}
+
+void CustomData::clear()
+{
+ emit aboutToBeReset();
+
+ m_data.clear();
+
+ emit reset();
+ emit modified();
+}
+
+bool CustomData::isEmpty() const
+{
+ return m_data.isEmpty();
+}
+
+int CustomData::size() const
+{
+ return m_data.size();
+}
+
+int CustomData::dataSize() const
+{
+ int size = 0;
+
+ QHashIterator<QString, QString> i(m_data);
+ while (i.hasNext()) {
+ i.next();
+ size += i.key().toUtf8().size() + i.value().toUtf8().size();
+ }
+ return size;
+}
diff --git a/src/core/CustomData.h b/src/core/CustomData.h
new file mode 100644
index 000000000..3a6b64bce
--- /dev/null
+++ b/src/core/CustomData.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_CUSTOMDATA_H
+#define KEEPASSXC_CUSTOMDATA_H
+
+#include <QHash>
+#include <QObject>
+#include <QSet>
+#include <QStringList>
+
+class CustomData : public QObject
+{
+Q_OBJECT
+
+public:
+ explicit CustomData(QObject* parent = nullptr);
+ QList<QString> keys() const;
+ bool hasKey(const QString& key) const;
+ QString value(const QString& key) const;
+ bool contains(const QString& key) const;
+ bool containsValue(const QString& value) const;
+ void set(const QString& key, const QString& value);
+ void remove(const QString& key);
+ void rename(const QString& oldKey, const QString& newKey);
+ void clear();
+ bool isEmpty() const;
+ int size() const;
+ int dataSize() const;
+ void copyDataFrom(const CustomData* other);
+ bool operator==(const CustomData& other) const;
+ bool operator!=(const CustomData& other) const;
+
+
+signals:
+ void modified();
+ void aboutToBeAdded(const QString& key);
+ void added(const QString& key);
+ void aboutToBeRemoved(const QString& key);
+ void removed(const QString& key);
+ void aboutToRename(const QString& oldKey, const QString& newKey);
+ void renamed(const QString& oldKey, const QString& newKey);
+ void aboutToBeReset();
+ void reset();
+
+private:
+ QHash<QString, QString> m_data;
+};
+
+#endif // KEEPASSXC_CUSTOMDATA_H
diff --git a/src/core/Database.cpp b/src/core/Database.cpp
index 864dd758e..00cb76f48 100644
--- a/src/core/Database.cpp
+++ b/src/core/Database.cpp
@@ -20,17 +20,20 @@
#include <QFile>
#include <QSaveFile>
+#include <QTemporaryFile>
#include <QTextStream>
#include <QTimer>
#include <QXmlStreamReader>
-#include "cli/PasswordInput.h"
+#include "cli/Utils.h"
#include "core/Group.h"
#include "core/Metadata.h"
-#include "crypto/Random.h"
+#include "crypto/kdf/AesKdf.h"
#include "format/KeePass2.h"
#include "format/KeePass2Reader.h"
#include "format/KeePass2Writer.h"
+#include "keys/PasswordKey.h"
+#include "keys/FileKey.h"
QHash<Uuid, Database*> Database::m_uuidMap;
@@ -42,7 +45,11 @@ Database::Database()
{
m_data.cipher = KeePass2::CIPHER_AES;
m_data.compressionAlgo = CompressionGZip;
- m_data.transformRounds = 100000;
+
+ // instantiate default AES-KDF with legacy KDBX3 flag set
+ // KDBX4+ will re-initialize the KDF using parameters read from the KDBX file
+ m_data.kdf = QSharedPointer<AesKdf>::create(true);
+ m_data.kdf->randomizeSeed();
m_data.hasKey = false;
setRootGroup(new Group());
@@ -92,10 +99,15 @@ const Metadata* Database::metadata() const
Entry* Database::resolveEntry(const Uuid& uuid)
{
- return recFindEntry(uuid, m_rootGroup);
+ return findEntryRecursive(uuid, m_rootGroup);
+}
+
+Entry* Database::resolveEntry(const QString& text, EntryReferenceType referenceType)
+{
+ return findEntryRecursive(text, referenceType, m_rootGroup);
}
-Entry* Database::recFindEntry(const Uuid& uuid, Group* group)
+Entry* Database::findEntryRecursive(const Uuid& uuid, Group* group)
{
const QList<Entry*> entryList = group->entries();
for (Entry* entry : entryList) {
@@ -106,7 +118,57 @@ Entry* Database::recFindEntry(const Uuid& uuid, Group* group)
const QList<Group*> children = group->children();
for (Group* child : children) {
- Entry* result = recFindEntry(uuid, child);
+ Entry* result = findEntryRecursive(uuid, child);
+ if (result) {
+ return result;
+ }
+ }
+
+ return nullptr;
+}
+
+Entry* Database::findEntryRecursive(const QString& text, EntryReferenceType referenceType, Group* group)
+{
+ Q_ASSERT_X(referenceType != EntryReferenceType::Unknown, "Database::findEntryRecursive",
+ "Can't search entry with \"referenceType\" parameter equal to \"Unknown\"");
+
+ bool found = false;
+ const QList<Entry*> entryList = group->entries();
+ for (Entry* entry : entryList) {
+ switch (referenceType) {
+ case EntryReferenceType::Unknown:
+ return nullptr;
+ case EntryReferenceType::Title:
+ found = entry->title() == text;
+ break;
+ case EntryReferenceType::UserName:
+ found = entry->username() == text;
+ break;
+ case EntryReferenceType::Password:
+ found = entry->password() == text;
+ break;
+ case EntryReferenceType::Url:
+ found = entry->url() == text;
+ break;
+ case EntryReferenceType::Notes:
+ found = entry->notes() == text;
+ break;
+ case EntryReferenceType::Uuid:
+ found = entry->uuid() == Uuid::fromHex(text);
+ break;
+ case EntryReferenceType::CustomAttributes:
+ found = entry->attributes()->containsValue(text);
+ break;
+ }
+
+ if (found) {
+ return entry;
+ }
+ }
+
+ const QList<Group*> children = group->children();
+ for (Group* child : children) {
+ Entry* result = findEntryRecursive(text, referenceType, child);
if (result) {
return result;
}
@@ -117,10 +179,10 @@ Entry* Database::recFindEntry(const Uuid& uuid, Group* group)
Group* Database::resolveGroup(const Uuid& uuid)
{
- return recFindGroup(uuid, m_rootGroup);
+ return findGroupRecursive(uuid, m_rootGroup);
}
-Group* Database::recFindGroup(const Uuid& uuid, Group* group)
+Group* Database::findGroupRecursive(const Uuid& uuid, Group* group)
{
if (group->uuid() == uuid) {
return group;
@@ -128,7 +190,7 @@ Group* Database::recFindGroup(const Uuid& uuid, Group* group)
const QList<Group*> children = group->children();
for (Group* child : children) {
- Group* result = recFindGroup(uuid, child);
+ Group* result = findGroupRecursive(uuid, child);
if (result) {
return result;
}
@@ -167,16 +229,6 @@ Database::CompressionAlgorithm Database::compressionAlgo() const
return m_data.compressionAlgo;
}
-QByteArray Database::transformSeed() const
-{
- return m_data.transformSeed;
-}
-
-quint64 Database::transformRounds() const
-{
- return m_data.transformRounds;
-}
-
QByteArray Database::transformedMasterKey() const
{
return m_data.transformedMasterKey;
@@ -207,49 +259,39 @@ void Database::setCompressionAlgo(Database::CompressionAlgorithm algo)
m_data.compressionAlgo = algo;
}
-bool Database::setTransformRounds(quint64 rounds)
+/**
+ * Set and transform a new encryption key.
+ *
+ * @param key key to set and transform
+ * @param updateChangedTime true to update database change time
+ * @param updateTransformSalt true to update the transform salt
+ * @return true on success
+ */
+bool Database::setKey(const CompositeKey& key, bool updateChangedTime, bool updateTransformSalt)
{
- if (m_data.transformRounds != rounds) {
- quint64 oldRounds = m_data.transformRounds;
-
- m_data.transformRounds = rounds;
-
- if (m_data.hasKey) {
- if (!setKey(m_data.key)) {
- m_data.transformRounds = oldRounds;
- return false;
- }
- }
+ if (updateTransformSalt) {
+ m_data.kdf->randomizeSeed();
+ Q_ASSERT(!m_data.kdf->seed().isEmpty());
}
- return true;
-}
-
-bool Database::setKey(const CompositeKey& key, const QByteArray& transformSeed, bool updateChangedTime)
-{
- bool ok;
- QString errorString;
-
- QByteArray transformedMasterKey = key.transform(transformSeed, transformRounds(), &ok, &errorString);
- if (!ok) {
+ QByteArray oldTransformedMasterKey = m_data.transformedMasterKey;
+ QByteArray transformedMasterKey;
+ if (!key.transform(*m_data.kdf, transformedMasterKey)) {
return false;
}
m_data.key = key;
- m_data.transformSeed = transformSeed;
m_data.transformedMasterKey = transformedMasterKey;
m_data.hasKey = true;
if (updateChangedTime) {
m_metadata->setMasterKeyChanged(QDateTime::currentDateTimeUtc());
}
- emit modifiedImmediate();
- return true;
-}
+ if (oldTransformedMasterKey != m_data.transformedMasterKey) {
+ emit modifiedImmediate();
+ }
-bool Database::setKey(const CompositeKey& key)
-{
- return setKey(key, randomGen()->randomArray(32));
+ return true;
}
bool Database::hasKey() const
@@ -257,25 +299,6 @@ bool Database::hasKey() const
return m_data.hasKey;
}
-bool Database::transformKeyWithSeed(const QByteArray& transformSeed)
-{
- Q_ASSERT(hasKey());
-
- bool ok;
- QString errorString;
-
- QByteArray transformedMasterKey =
- m_data.key.transform(transformSeed, transformRounds(), &ok, &errorString);
- if (!ok) {
- return false;
- }
-
- m_data.transformSeed = transformSeed;
- m_data.transformedMasterKey = transformedMasterKey;
-
- return true;
-}
-
bool Database::verifyKey(const CompositeKey& key) const
{
Q_ASSERT(hasKey());
@@ -297,6 +320,17 @@ bool Database::verifyKey(const CompositeKey& key) const
return (m_data.key.rawKey() == key.rawKey());
}
+QVariantMap Database::publicCustomData() const
+{
+ return m_data.publicCustomData;
+}
+
+void Database::setPublicCustomData(const QVariantMap& customData)
+{
+ m_data.publicCustomData = customData;
+}
+
+
void Database::createRecycleBin()
{
Group* recycleBin = Group::createRecycleBin();
@@ -368,11 +402,6 @@ void Database::setEmitModified(bool value)
m_emitModified = value;
}
-void Database::copyAttributesFrom(const Database* other)
-{
- m_data = other->m_data;
- m_metadata->copyAttributesFrom(other->m_metadata);
-}
Uuid Database::uuid()
{
@@ -425,38 +454,161 @@ Database* Database::openDatabaseFile(QString fileName, CompositeKey key)
return db;
}
-Database* Database::unlockFromStdin(QString databaseFilename)
+Database* Database::unlockFromStdin(QString databaseFilename, QString keyFilename)
{
+ CompositeKey compositeKey;
QTextStream outputTextStream(stdout);
+ QTextStream errorTextStream(stderr);
- outputTextStream << QString("Insert password to unlock " + databaseFilename + "\n> ");
+ outputTextStream << QObject::tr("Insert password to unlock %1: ").arg(databaseFilename);
outputTextStream.flush();
- QString line = PasswordInput::getPassword();
- CompositeKey key = CompositeKey::readFromLine(line);
- return Database::openDatabaseFile(databaseFilename, key);
+ QString line = Utils::getPassword();
+ PasswordKey passwordKey;
+ passwordKey.setPassword(line);
+ compositeKey.addKey(passwordKey);
+
+ if (!keyFilename.isEmpty()) {
+ FileKey fileKey;
+ QString errorMessage;
+ if (!fileKey.load(keyFilename, &errorMessage)) {
+ errorTextStream << QObject::tr("Failed to load key file %1 : %2").arg(keyFilename, errorMessage);
+ errorTextStream << endl;
+ return nullptr;
+ }
+ compositeKey.addKey(fileKey);
+ }
+
+ return Database::openDatabaseFile(databaseFilename, compositeKey);
}
-QString Database::saveToFile(QString filePath)
-{
- KeePass2Writer writer;
- QSaveFile saveFile(filePath);
- if (saveFile.open(QIODevice::WriteOnly)) {
+/**
+ * Save the database to a file.
+ *
+ * This function uses QTemporaryFile instead of QSaveFile due to a bug
+ * in Qt (https://bugreports.qt.io/browse/QTBUG-57299) that may prevent
+ * the QSaveFile from renaming itself when using Dropbox, Drive, or OneDrive.
+ *
+ * The risk in using QTemporaryFile is that the rename function is not atomic
+ * and may result in loss of data if there is a crash or power loss at the
+ * wrong moment.
+ *
+ * @param filePath Absolute path of the file to save
+ * @param atomic Use atomic file transactions
+ * @param backup Backup the existing database file, if exists
+ * @return error string, if any
+ */
+QString Database::saveToFile(QString filePath, bool atomic, bool backup)
+{
+ QString error;
+ if (atomic) {
+ QSaveFile saveFile(filePath);
+ if (saveFile.open(QIODevice::WriteOnly)) {
+ // write the database to the file
+ error = writeDatabase(&saveFile);
+ if (!error.isEmpty()) {
+ return error;
+ }
- // write the database to the file
- writer.writeDatabase(&saveFile, this);
+ if (backup) {
+ backupDatabase(filePath);
+ }
- if (writer.hasError()) {
- return writer.errorString();
+ if (saveFile.commit()) {
+ // successfully saved database file
+ return {};
+ }
}
+ error = saveFile.errorString();
+ } else {
+ QTemporaryFile tempFile;
+ if (tempFile.open()) {
+ // write the database to the file
+ error = writeDatabase(&tempFile);
+ if (!error.isEmpty()) {
+ return error;
+ }
- if (saveFile.commit()) {
- // successfully saved database file
- return QString();
- } else {
- return saveFile.errorString();
+ tempFile.close(); // flush to disk
+
+ if (backup) {
+ backupDatabase(filePath);
+ }
+
+ // Delete the original db and move the temp file in place
+ QFile::remove(filePath);
+#ifdef Q_OS_LINUX
+ // workaround to make this workaround work, see: https://bugreports.qt.io/browse/QTBUG-64008
+ if (tempFile.copy(filePath)) {
+ // successfully saved database file
+ return {};
+ }
+#else
+ if (tempFile.rename(filePath)) {
+ // successfully saved database file
+ tempFile.setAutoRemove(false);
+ return {};
+ }
+#endif
}
- } else {
- return saveFile.errorString();
+ error = tempFile.errorString();
+ }
+ // Saving failed
+ return error;
+}
+
+QString Database::writeDatabase(QIODevice* device)
+{
+ KeePass2Writer writer;
+ setEmitModified(false);
+ writer.writeDatabase(device, this);
+ setEmitModified(true);
+
+ if (writer.hasError()) {
+ // the writer failed
+ return writer.errorString();
}
+ return {};
+}
+
+/**
+ * Remove the old backup and replace it with a new one
+ * backups are named <filename>.old.kdbx
+ *
+ * @param filePath Path to the file to backup
+ * @return
+ */
+
+bool Database::backupDatabase(QString filePath)
+{
+ QString backupFilePath = filePath;
+ auto re = QRegularExpression("\\.kdbx$|(?<!\\.kdbx)$", QRegularExpression::CaseInsensitiveOption);
+ backupFilePath.replace(re, ".old.kdbx");
+ QFile::remove(backupFilePath);
+ return QFile::copy(filePath, backupFilePath);
+}
+
+QSharedPointer<Kdf> Database::kdf() const
+{
+ return m_data.kdf;
+}
+
+void Database::setKdf(QSharedPointer<Kdf> kdf)
+{
+ m_data.kdf = std::move(kdf);
+}
+
+bool Database::changeKdf(QSharedPointer<Kdf> kdf)
+{
+ kdf->randomizeSeed();
+ QByteArray transformedMasterKey;
+ if (!m_data.key.transform(*kdf, transformedMasterKey)) {
+ return false;
+ }
+
+ setKdf(kdf);
+ m_data.transformedMasterKey = transformedMasterKey;
+ emit modifiedImmediate();
+
+ return true;
}
diff --git a/src/core/Database.h b/src/core/Database.h
index b08233e57..394e31475 100644
--- a/src/core/Database.h
+++ b/src/core/Database.h
@@ -23,13 +23,16 @@
#include <QHash>
#include <QObject>
+#include "crypto/kdf/Kdf.h"
#include "core/Uuid.h"
#include "keys/CompositeKey.h"
class Entry;
+enum class EntryReferenceType;
class Group;
class Metadata;
class QTimer;
+class QIODevice;
struct DeletedObject
{
@@ -55,17 +58,17 @@ public:
{
Uuid cipher;
CompressionAlgorithm compressionAlgo;
- QByteArray transformSeed;
- quint64 transformRounds;
QByteArray transformedMasterKey;
+ QSharedPointer<Kdf> kdf;
CompositeKey key;
bool hasKey;
QByteArray masterSeed;
QByteArray challengeResponseKey;
+ QVariantMap publicCustomData;
};
Database();
- ~Database();
+ ~Database() override;
Group* rootGroup();
const Group* rootGroup() const;
@@ -81,6 +84,7 @@ public:
Metadata* metadata();
const Metadata* metadata() const;
Entry* resolveEntry(const Uuid& uuid);
+ Entry* resolveEntry(const QString& text, EntryReferenceType referenceType);
Group* resolveGroup(const Uuid& uuid);
QList<DeletedObject> deletedObjects();
void addDeletedObject(const DeletedObject& delObj);
@@ -88,8 +92,7 @@ public:
Uuid cipher() const;
Database::CompressionAlgorithm compressionAlgo() const;
- QByteArray transformSeed() const;
- quint64 transformRounds() const;
+ QSharedPointer<Kdf> kdf() const;
QByteArray transformedMasterKey() const;
const CompositeKey& key() const;
QByteArray challengeResponseKey() const;
@@ -97,33 +100,29 @@ public:
void setCipher(const Uuid& cipher);
void setCompressionAlgo(Database::CompressionAlgorithm algo);
- bool setTransformRounds(quint64 rounds);
- bool setKey(const CompositeKey& key, const QByteArray& transformSeed,
- bool updateChangedTime = true);
-
- /**
- * Sets the database key and generates a random transform seed.
- */
- bool setKey(const CompositeKey& key);
+ void setKdf(QSharedPointer<Kdf> kdf);
+ bool setKey(const CompositeKey& key, bool updateChangedTime = true,
+ bool updateTransformSalt = false);
bool hasKey() const;
- bool transformKeyWithSeed(const QByteArray& transformSeed);
bool verifyKey(const CompositeKey& key) const;
+ QVariantMap publicCustomData() const;
+ void setPublicCustomData(const QVariantMap& customData);
void recycleEntry(Entry* entry);
void recycleGroup(Group* group);
void emptyRecycleBin();
void setEmitModified(bool value);
- void copyAttributesFrom(const Database* other);
void merge(const Database* other);
- QString saveToFile(QString filePath);
+ QString saveToFile(QString filePath, bool atomic = true, bool backup = false);
/**
* Returns a unique id that is only valid as long as the Database exists.
*/
Uuid uuid();
+ bool changeKdf(QSharedPointer<Kdf> kdf);
static Database* databaseByUuid(const Uuid& uuid);
static Database* openDatabaseFile(QString fileName, CompositeKey key);
- static Database* unlockFromStdin(QString databaseFilename);
+ static Database* unlockFromStdin(QString databaseFilename, QString keyFilename = QString(""));
signals:
void groupDataChanged(Group* group);
@@ -141,10 +140,13 @@ private slots:
void startModifiedTimer();
private:
- Entry* recFindEntry(const Uuid& uuid, Group* group);
- Group* recFindGroup(const Uuid& uuid, Group* group);
+ Entry* findEntryRecursive(const Uuid& uuid, Group* group);
+ Entry* findEntryRecursive(const QString& text, EntryReferenceType referenceType, Group* group);
+ Group* findGroupRecursive(const Uuid& uuid, Group* group);
void createRecycleBin();
+ QString writeDatabase(QIODevice* device);
+ bool backupDatabase(QString filePath);
Metadata* const m_metadata;
Group* m_rootGroup;
diff --git a/src/core/Endian.cpp b/src/core/Endian.cpp
deleted file mode 100644
index bf838abcb..000000000
--- a/src/core/Endian.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "Endian.h"
-
-#include <QtEndian>
-#include <QIODevice>
-
-namespace Endian {
-
-qint16 bytesToInt16(const QByteArray& ba, QSysInfo::Endian byteOrder)
-{
- Q_ASSERT(ba.size() == 2);
-
- if (byteOrder == QSysInfo::LittleEndian) {
- return qFromLittleEndian<qint16>(reinterpret_cast<const uchar*>(ba.constData()));
- }
- else {
- return qFromBigEndian<qint16>(reinterpret_cast<const uchar*>(ba.constData()));
- }
-}
-
-qint32 bytesToInt32(const QByteArray& ba, QSysInfo::Endian byteOrder)
-{
- Q_ASSERT(ba.size() == 4);
-
- if (byteOrder == QSysInfo::LittleEndian) {
- return qFromLittleEndian<qint32>(reinterpret_cast<const uchar*>(ba.constData()));
- }
- else {
- return qFromBigEndian<qint32>(reinterpret_cast<const uchar*>(ba.constData()));
- }
-}
-
-qint64 bytesToInt64(const QByteArray& ba, QSysInfo::Endian byteOrder)
-{
- Q_ASSERT(ba.size() == 8);
-
- if (byteOrder == QSysInfo::LittleEndian) {
- return qFromLittleEndian<qint64>(reinterpret_cast<const uchar*>(ba.constData()));
- }
- else {
- return qFromBigEndian<qint64>(reinterpret_cast<const uchar*>(ba.constData()));
- }
-}
-
-quint16 bytesToUInt16(const QByteArray& ba, QSysInfo::Endian byteOrder)
-{
- return static_cast<quint16>(bytesToInt16(ba, byteOrder));
-}
-
-quint32 bytesToUInt32(const QByteArray& ba, QSysInfo::Endian byteOrder)
-{
- return static_cast<quint32>(bytesToInt32(ba, byteOrder));
-}
-
-quint64 bytesToUInt64(const QByteArray& ba, QSysInfo::Endian byteOrder)
-{
- return static_cast<quint64>(bytesToInt64(ba, byteOrder));
-}
-
-qint16 readInt16(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok)
-{
- QByteArray ba = device->read(2);
-
- if (ba.size() != 2) {
- *ok = false;
- return 0;
- }
- else {
- *ok = true;
- return bytesToInt16(ba, byteOrder);
- }
-}
-
-qint32 readInt32(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok)
-{
- QByteArray ba = device->read(4);
-
- if (ba.size() != 4) {
- *ok = false;
- return 0;
- }
- else {
- *ok = true;
- return bytesToInt32(ba, byteOrder);
- }
-}
-
-qint64 readInt64(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok)
-{
- QByteArray ba = device->read(8);
-
- if (ba.size() != 8) {
- *ok = false;
- return 0;
- }
- else {
- *ok = true;
- return bytesToInt64(ba, byteOrder);
- }
-}
-
-quint16 readUInt16(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok)
-{
- return static_cast<quint16>(readInt16(device, byteOrder, ok));
-}
-
-quint32 readUInt32(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok)
-{
- return static_cast<quint32>(readInt32(device, byteOrder, ok));
-}
-
-quint64 readUInt64(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok)
-{
- return static_cast<quint64>(readInt64(device, byteOrder, ok));
-}
-
-QByteArray int16ToBytes(qint16 num, QSysInfo::Endian byteOrder)
-{
- QByteArray ba;
- ba.resize(2);
-
- if (byteOrder == QSysInfo::LittleEndian) {
- qToLittleEndian<qint16>(num, reinterpret_cast<uchar*>(ba.data()));
- }
- else {
- qToBigEndian<qint64>(num, reinterpret_cast<uchar*>(ba.data()));
- }
-
- return ba;
-}
-
-QByteArray int32ToBytes(qint32 num, QSysInfo::Endian byteOrder)
-{
- QByteArray ba;
- ba.resize(4);
-
- if (byteOrder == QSysInfo::LittleEndian) {
- qToLittleEndian<qint32>(num, reinterpret_cast<uchar*>(ba.data()));
- }
- else {
- qToBigEndian<qint32>(num, reinterpret_cast<uchar*>(ba.data()));
- }
-
- return ba;
-}
-
-QByteArray int64ToBytes(qint64 num, QSysInfo::Endian byteOrder)
-{
- QByteArray ba;
- ba.resize(8);
-
- if (byteOrder == QSysInfo::LittleEndian) {
- qToLittleEndian<qint64>(num, reinterpret_cast<uchar*>(ba.data()));
- }
- else {
- qToBigEndian<qint64>(num, reinterpret_cast<uchar*>(ba.data()));
- }
-
- return ba;
-}
-
-bool writeInt16(qint16 num, QIODevice* device, QSysInfo::Endian byteOrder)
-{
- QByteArray ba = int16ToBytes(num, byteOrder);
- int bytesWritten = device->write(ba);
- return (bytesWritten == ba.size());
-}
-
-bool writeInt32(qint32 num, QIODevice* device, QSysInfo::Endian byteOrder)
-{
- QByteArray ba = int32ToBytes(num, byteOrder);
- int bytesWritten = device->write(ba);
- return (bytesWritten == ba.size());
-}
-
-bool writeInt64(qint64 num, QIODevice* device, QSysInfo::Endian byteOrder)
-{
- QByteArray ba = int64ToBytes(num, byteOrder);
- int bytesWritten = device->write(ba);
- return (bytesWritten == ba.size());
-}
-
-} // namespace Endian
diff --git a/src/core/Endian.h b/src/core/Endian.h
index 0cea617c6..cd01eb483 100644
--- a/src/core/Endian.h
+++ b/src/core/Endian.h
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -20,32 +21,58 @@
#include <QByteArray>
#include <QSysInfo>
+#include <QtEndian>
+#include <QIODevice>
-class QIODevice;
+namespace Endian
+{
-namespace Endian {
+template<typename SizedQInt>
+SizedQInt bytesToSizedInt(const QByteArray& ba, QSysInfo::Endian byteOrder)
+{
+ Q_ASSERT(ba.size() == sizeof(SizedQInt));
- qint16 bytesToInt16(const QByteArray& ba, QSysInfo::Endian byteOrder);
- quint16 bytesToUInt16(const QByteArray& ba, QSysInfo::Endian byteOrder);
- qint32 bytesToInt32(const QByteArray& ba, QSysInfo::Endian byteOrder);
- quint32 bytesToUInt32(const QByteArray& ba, QSysInfo::Endian byteOrder);
- qint64 bytesToInt64(const QByteArray& ba, QSysInfo::Endian byteOrder);
- quint64 bytesToUInt64(const QByteArray& ba, QSysInfo::Endian byteOrder);
+ if (byteOrder == QSysInfo::LittleEndian) {
+ return qFromLittleEndian<SizedQInt>(reinterpret_cast<const uchar*>(ba.constData()));
+ }
+ return qFromBigEndian<SizedQInt>(reinterpret_cast<const uchar*>(ba.constData()));
+}
- qint16 readInt16(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok);
- quint16 readUInt16(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok);
- qint32 readInt32(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok);
- quint32 readUInt32(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok);
- qint64 readInt64(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok);
- quint64 readUInt64(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok);
+template<typename SizedQInt>
+SizedQInt readSizedInt(QIODevice* device, QSysInfo::Endian byteOrder, bool* ok)
+{
+ QByteArray ba = device->read(sizeof(SizedQInt));
- QByteArray int16ToBytes(qint16 num, QSysInfo::Endian byteOrder);
- QByteArray int32ToBytes(qint32 num, QSysInfo::Endian byteOrder);
- QByteArray int64ToBytes(qint64 num, QSysInfo::Endian byteOrder);
+ if (ba.size() != sizeof(SizedQInt)) {
+ *ok = false;
+ return 0;
+ }
+ *ok = true;
+ return bytesToSizedInt<SizedQInt>(ba, byteOrder);
+}
- bool writeInt16(qint16 num, QIODevice* device, QSysInfo::Endian byteOrder);
- bool writeInt32(qint32 num, QIODevice* device, QSysInfo::Endian byteOrder);
- bool writeInt64(qint64 num, QIODevice* device, QSysInfo::Endian byteOrder);
+template<typename SizedQInt>
+QByteArray sizedIntToBytes(SizedQInt num, QSysInfo::Endian byteOrder)
+{
+ QByteArray ba;
+ ba.resize(sizeof(SizedQInt));
+
+ if (byteOrder == QSysInfo::LittleEndian) {
+ qToLittleEndian<SizedQInt>(num, reinterpret_cast<uchar*>(ba.data()));
+ } else {
+ qToBigEndian<SizedQInt>(num, reinterpret_cast<uchar*>(ba.data()));
+ }
+
+ return ba;
+}
+
+template<typename SizedQInt>
+bool writeSizedInt(SizedQInt num, QIODevice* device, QSysInfo::Endian byteOrder)
+{
+ QByteArray ba = sizedIntToBytes<SizedQInt>(num, byteOrder);
+ qint64 bytesWritten = device->write(ba);
+ return (bytesWritten == ba.size());
+}
} // namespace Endian
diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp
index 64ce5297c..fa45ca5e4 100644
--- a/src/core/Entry.cpp
+++ b/src/core/Entry.cpp
@@ -25,12 +25,19 @@
#include "core/Metadata.h"
#include "totp/totp.h"
+#include <QRegularExpression>
+
const int Entry::DefaultIconNumber = 0;
+const int Entry::ResolveMaximumDepth = 10;
+const QString Entry::AutoTypeSequenceUsername = "{USERNAME}{ENTER}";
+const QString Entry::AutoTypeSequencePassword = "{PASSWORD}{ENTER}";
+
Entry::Entry()
: m_attributes(new EntryAttributes(this))
, m_attachments(new EntryAttachments(this))
, m_autoTypeAssociations(new AutoTypeAssociations(this))
+ , m_customData(new CustomData(this))
, m_tmpHistoryItem(nullptr)
, m_modifiedSinceBegin(false)
, m_updateTimeinfo(true)
@@ -38,13 +45,15 @@ Entry::Entry()
m_data.iconNumber = DefaultIconNumber;
m_data.autoTypeEnabled = true;
m_data.autoTypeObfuscation = 0;
- m_data.totpStep = QTotp::defaultStep;
- m_data.totpDigits = QTotp::defaultDigits;
+ m_data.totpStep = Totp::defaultStep;
+ m_data.totpDigits = Totp::defaultDigits;
+ connect(m_attributes, SIGNAL(modified()), SLOT(updateTotp()));
connect(m_attributes, SIGNAL(modified()), this, SIGNAL(modified()));
connect(m_attributes, SIGNAL(defaultKeyModified()), SLOT(emitDataChanged()));
connect(m_attachments, SIGNAL(modified()), this, SIGNAL(modified()));
connect(m_autoTypeAssociations, SIGNAL(modified()), SIGNAL(modified()));
+ connect(m_customData, SIGNAL(modified()), this, SIGNAL(modified()));
connect(this, SIGNAL(modified()), SLOT(updateTimeinfo()));
connect(this, SIGNAL(modified()), SLOT(updateModifiedSinceBegin()));
@@ -88,6 +97,29 @@ void Entry::setUpdateTimeinfo(bool value)
m_updateTimeinfo = value;
}
+EntryReferenceType Entry::referenceType(const QString& referenceStr)
+{
+ const QString referenceLowerStr = referenceStr.toLower();
+ EntryReferenceType result = EntryReferenceType::Unknown;
+ if (referenceLowerStr == QLatin1String("t")) {
+ result = EntryReferenceType::Title;
+ } else if (referenceLowerStr == QLatin1String("u")) {
+ result = EntryReferenceType::UserName;
+ } else if (referenceLowerStr == QLatin1String("p")) {
+ result = EntryReferenceType::Password;
+ } else if (referenceLowerStr == QLatin1String("a")) {
+ result = EntryReferenceType::Url;
+ } else if (referenceLowerStr == QLatin1String("n")) {
+ result = EntryReferenceType::Notes;
+ } else if (referenceLowerStr == QLatin1String("i")) {
+ result = EntryReferenceType::Uuid;
+ } else if (referenceLowerStr == QLatin1String("o")) {
+ result = EntryReferenceType::CustomAttributes;
+ }
+
+ return result;
+}
+
Uuid Entry::uuid() const
{
return m_uuid;
@@ -190,30 +222,37 @@ QString Entry::defaultAutoTypeSequence() const
return m_data.defaultAutoTypeSequence;
}
+/**
+ * Determine the effective sequence that will be injected
+ * This function return an empty string if a parent group has autotype disabled or if the entry has no parent
+ */
QString Entry::effectiveAutoTypeSequence() const
{
- if (!m_data.defaultAutoTypeSequence.isEmpty()) {
- return m_data.defaultAutoTypeSequence;
+ if (!autoTypeEnabled()) {
+ return {};
}
- QString sequence;
- const Group* grp = group();
- if(grp) {
- sequence = grp->effectiveAutoTypeSequence();
- } else {
- return QString();
+ const Group* parent = group();
+ if (!parent) {
+ return {};
}
- if (sequence.isEmpty() && (!username().isEmpty() || !password().isEmpty())) {
+ QString sequence = parent->effectiveAutoTypeSequence();
+ if (sequence.isEmpty()) {
+ return {};
+ }
+
+ if (!m_data.defaultAutoTypeSequence.isEmpty()) {
+ return m_data.defaultAutoTypeSequence;
+ }
+
+ if (sequence == Group::RootAutoTypeSequence && (!username().isEmpty() || !password().isEmpty())) {
if (username().isEmpty()) {
- sequence = "{PASSWORD}{ENTER}";
- }
- else if (password().isEmpty()) {
- sequence = "{USERNAME}{ENTER}";
- }
- else {
- sequence = "{USERNAME}{TAB}{PASSWORD}{ENTER}";
+ return AutoTypeSequencePassword;
+ } else if (password().isEmpty()) {
+ return AutoTypeSequenceUsername;
}
+ return Group::RootAutoTypeSequence;
}
return sequence;
@@ -241,7 +280,15 @@ QString Entry::url() const
QString Entry::webUrl() const
{
- return resolveUrl(m_attributes->value(EntryAttributes::URLKey));
+ QString url = resolveMultiplePlaceholders(m_attributes->value(EntryAttributes::URLKey));
+ return resolveUrl(url);
+}
+
+QString Entry::displayUrl() const
+{
+ QString url = maskPasswordPlaceholders(m_attributes->value(EntryAttributes::URLKey));
+ url = resolveMultiplePlaceholders(url);
+ return resolveUrl(url);
}
QString Entry::username() const
@@ -295,6 +342,16 @@ const EntryAttachments* Entry::attachments() const
return m_attachments;
}
+CustomData* Entry::customData()
+{
+ return m_customData;
+}
+
+const CustomData* Entry::customData() const
+{
+ return m_customData;
+}
+
bool Entry::hasTotp() const
{
return m_attributes->hasKey("TOTP Seed") || m_attributes->hasKey("otp");
@@ -305,30 +362,43 @@ QString Entry::totp() const
if (hasTotp()) {
QString seed = totpSeed();
quint64 time = QDateTime::currentDateTime().toTime_t();
- QString output = QTotp::generateTotp(seed.toLatin1(), time, m_data.totpDigits, m_data.totpStep);
+ QString output = Totp::generateTotp(seed.toLatin1(), time, m_data.totpDigits, m_data.totpStep);
return QString(output);
- } else {
- return QString("");
}
+ return {};
}
void Entry::setTotp(const QString& seed, quint8& step, quint8& digits)
{
+ beginUpdate();
if (step == 0) {
- step = QTotp::defaultStep;
+ step = Totp::defaultStep;
}
if (digits == 0) {
- digits = QTotp::defaultDigits;
+ digits = Totp::defaultDigits;
}
+ QString data;
+
+ const Totp::Encoder & enc = Totp::encoders.value(digits, Totp::defaultEncoder);
if (m_attributes->hasKey("otp")) {
- m_attributes->set("otp", QString("key=%1&step=%2&size=%3").arg(seed).arg(step).arg(digits), true);
+ data = QString("key=%1&step=%2&size=%3").arg(seed).arg(step).arg(enc.digits == 0 ? digits : enc.digits);
+ if (!enc.name.isEmpty()) {
+ data.append("&enocder=").append(enc.name);
+ }
+ m_attributes->set("otp", data, true);
} else {
m_attributes->set("TOTP Seed", seed, true);
- m_attributes->set("TOTP Settings", QString("%1;%2").arg(step).arg(digits));
+ if (!enc.shortName.isEmpty()) {
+ data = QString("%1;%2").arg(step).arg(enc.shortName);
+ } else {
+ data = QString("%1;%2").arg(step).arg(digits);
+ }
+ m_attributes->set("TOTP Settings", data);
}
+ endUpdate();
}
QString Entry::totpSeed() const
@@ -341,19 +411,7 @@ QString Entry::totpSeed() const
secret = m_attributes->value("TOTP Seed");
}
- m_data.totpDigits = QTotp::defaultDigits;
- m_data.totpStep = QTotp::defaultStep;
-
- if (m_attributes->hasKey("TOTP Settings")) {
- QRegExp rx("(\\d+);(\\d)", Qt::CaseInsensitive, QRegExp::RegExp);
- int pos = rx.indexIn(m_attributes->value("TOTP Settings"));
- if (pos > -1) {
- m_data.totpStep = rx.cap(1).toUInt();
- m_data.totpDigits = rx.cap(2).toUInt();
- }
- }
-
- return QTotp::parseOtpString(secret, m_data.totpDigits, m_data.totpStep);
+ return Totp::parseOtpString(secret, m_data.totpDigits, m_data.totpStep);
}
quint8 Entry::totpStep() const
@@ -547,22 +605,25 @@ void Entry::truncateHistory()
int histMaxSize = db->metadata()->historyMaxSize();
if (histMaxSize > -1) {
int size = 0;
- QSet<QByteArray> foundAttachments = attachments()->values().toSet();
+ QSet<QByteArray> foundAttachments = attachments()->values();
QMutableListIterator<Entry*> i(m_history);
i.toBack();
+ const QRegularExpression delimiter(",|:|;");
while (i.hasPrevious()) {
Entry* historyItem = i.previous();
// don't calculate size if it's already above the maximum
if (size <= histMaxSize) {
size += historyItem->attributes()->attributesSize();
-
- const QSet<QByteArray> newAttachments = historyItem->attachments()->values().toSet() - foundAttachments;
- for (const QByteArray& attachment : newAttachments) {
- size += attachment.size();
+ size += historyItem->autoTypeAssociations()->associationsSize();
+ size += historyItem->attachments()->attachmentsSize();
+ size += historyItem->customData()->dataSize();
+ const QStringList tags = historyItem->tags().split(delimiter, QString::SkipEmptyParts);
+ for (const QString& tag : tags) {
+ size += tag.toUtf8().size();
}
- foundAttachments += newAttachments;
+ foundAttachments += historyItem->attachments()->values();
}
if (size > histMaxSize) {
@@ -584,11 +645,12 @@ Entry* Entry::clone(CloneFlags flags) const
entry->m_uuid = m_uuid;
}
entry->m_data = m_data;
+ entry->m_customData->copyDataFrom(m_customData);
entry->m_attributes->copyDataFrom(m_attributes);
entry->m_attachments->copyDataFrom(m_attachments);
if (flags & CloneUserAsRef) {
- // Build the username refrence
+ // Build the username reference
QString username = "{REF:U@I:" + m_uuid.toHex() + "}";
entry->m_attributes->set(EntryAttributes::UserNameKey, username.toUpper(), m_attributes->isProtected(EntryAttributes::UserNameKey));
}
@@ -598,7 +660,7 @@ Entry* Entry::clone(CloneFlags flags) const
entry->m_attributes->set(EntryAttributes::PasswordKey, password.toUpper(), m_attributes->isProtected(EntryAttributes::PasswordKey));
}
- entry->m_autoTypeAssociations->copyDataFrom(this->m_autoTypeAssociations);
+ entry->m_autoTypeAssociations->copyDataFrom(m_autoTypeAssociations);
if (flags & CloneIncludeHistory) {
for (Entry* historyItem : m_history) {
Entry* historyItemClone = historyItem->clone(flags & ~CloneIncludeHistory & ~CloneNewUuid);
@@ -619,7 +681,7 @@ Entry* Entry::clone(CloneFlags flags) const
}
if (flags & CloneRenameTitle)
- entry->setTitle(entry->title() + tr(" - Clone"));
+ entry->setTitle(entry->title() + tr(" - Clone", "Suffix added to cloned entries"));
return entry;
}
@@ -628,6 +690,7 @@ void Entry::copyDataFrom(const Entry* other)
{
setUpdateTimeinfo(false);
m_data = other->m_data;
+ m_customData->copyDataFrom(other->m_customData);
m_attributes->copyDataFrom(other->m_attributes);
m_attachments->copyDataFrom(other->m_attachments);
m_autoTypeAssociations->copyDataFrom(other->m_autoTypeAssociations);
@@ -644,6 +707,7 @@ void Entry::beginUpdate()
m_tmpHistoryItem->m_data = m_data;
m_tmpHistoryItem->m_attributes->copyDataFrom(m_attributes);
m_tmpHistoryItem->m_attachments->copyDataFrom(m_attachments);
+ m_tmpHistoryItem->m_autoTypeAssociations->copyDataFrom(m_autoTypeAssociations);
m_modifiedSinceBegin = false;
}
@@ -670,6 +734,180 @@ void Entry::updateModifiedSinceBegin()
m_modifiedSinceBegin = true;
}
+/**
+ * Update TOTP data whenever entry attributes have changed.
+ */
+void Entry::updateTotp()
+{
+ m_data.totpDigits = Totp::defaultDigits;
+ m_data.totpStep = Totp::defaultStep;
+
+ if (!m_attributes->hasKey("TOTP Settings")) {
+ return;
+ }
+
+ // this regex must be kept in sync with the set of allowed short names Totp::shortNameToEncoder
+ QRegularExpression rx(QString("(\\d+);((?:\\d+)|S)"));
+ QRegularExpressionMatch m = rx.match(m_attributes->value("TOTP Settings"));
+ if (!m.hasMatch()) {
+ return;
+ }
+
+ m_data.totpStep = static_cast<quint8>(m.captured(1).toUInt());
+ if (Totp::shortNameToEncoder.contains(m.captured(2))) {
+ m_data.totpDigits = Totp::shortNameToEncoder[m.captured(2)];
+ } else {
+ m_data.totpDigits = static_cast<quint8>(m.captured(2).toUInt());
+ }
+}
+
+QString Entry::resolveMultiplePlaceholdersRecursive(const QString& str, int maxDepth) const
+{
+ if (maxDepth <= 0) {
+ qWarning("Maximum depth of replacement has been reached. Entry uuid: %s", qPrintable(uuid().toHex()));
+ return str;
+ }
+
+ QString result = str;
+ QRegExp placeholderRegEx("(\\{[^\\}]+\\})", Qt::CaseInsensitive, QRegExp::RegExp2);
+ placeholderRegEx.setMinimal(true);
+ int pos = 0;
+ while ((pos = placeholderRegEx.indexIn(str, pos)) != -1) {
+ const QString found = placeholderRegEx.cap(1);
+ result.replace(found, resolvePlaceholderRecursive(found, maxDepth - 1));
+ pos += placeholderRegEx.matchedLength();
+ }
+
+ if (result != str) {
+ result = resolveMultiplePlaceholdersRecursive(result, maxDepth - 1);
+ }
+
+ return result;
+}
+
+QString Entry::resolvePlaceholderRecursive(const QString& placeholder, int maxDepth) const
+{
+ if (maxDepth <= 0) {
+ qWarning("Maximum depth of replacement has been reached. Entry uuid: %s", qPrintable(uuid().toHex()));
+ return placeholder;
+ }
+
+ const PlaceholderType typeOfPlaceholder = placeholderType(placeholder);
+ switch (typeOfPlaceholder) {
+ case PlaceholderType::NotPlaceholder:
+ case PlaceholderType::Unknown:
+ return placeholder;
+ case PlaceholderType::Title:
+ if (placeholderType(title()) == PlaceholderType::Title) {
+ return title();
+ }
+ return resolvePlaceholderRecursive(title(), maxDepth - 1);
+ case PlaceholderType::UserName:
+ if (placeholderType(username()) == PlaceholderType::UserName) {
+ return username();
+ }
+ return resolvePlaceholderRecursive(username(), maxDepth - 1);
+ case PlaceholderType::Password:
+ if (placeholderType(password()) == PlaceholderType::Password) {
+ return password();
+ }
+ return resolvePlaceholderRecursive(password(), maxDepth - 1);
+ case PlaceholderType::Notes:
+ if (placeholderType(notes()) == PlaceholderType::Notes) {
+ return notes();
+ }
+ return resolvePlaceholderRecursive(notes(), maxDepth - 1);
+ case PlaceholderType::Url:
+ if (placeholderType(url()) == PlaceholderType::Url) {
+ return url();
+ }
+ return resolvePlaceholderRecursive(url(), maxDepth - 1);
+ case PlaceholderType::UrlWithoutScheme:
+ case PlaceholderType::UrlScheme:
+ case PlaceholderType::UrlHost:
+ case PlaceholderType::UrlPort:
+ case PlaceholderType::UrlPath:
+ case PlaceholderType::UrlQuery:
+ case PlaceholderType::UrlFragment:
+ case PlaceholderType::UrlUserInfo:
+ case PlaceholderType::UrlUserName:
+ case PlaceholderType::UrlPassword: {
+ const QString strUrl = resolveMultiplePlaceholdersRecursive(url(), maxDepth - 1);
+ return resolveUrlPlaceholder(strUrl, typeOfPlaceholder);
+ }
+ case PlaceholderType::Totp:
+ // totp can't have placeholder inside
+ return totp();
+ case PlaceholderType::CustomAttribute: {
+ const QString key = placeholder.mid(3, placeholder.length() - 4); // {S:attr} => mid(3, len - 4)
+ return attributes()->hasKey(key) ? attributes()->value(key) : QString();
+ }
+ case PlaceholderType::Reference:
+ return resolveReferencePlaceholderRecursive(placeholder, maxDepth);
+ }
+
+ return placeholder;
+}
+
+QString Entry::resolveReferencePlaceholderRecursive(const QString& placeholder, int maxDepth) const
+{
+ if (maxDepth <= 0) {
+ qWarning("Maximum depth of replacement has been reached. Entry uuid: %s", qPrintable(uuid().toHex()));
+ return placeholder;
+ }
+
+ // resolving references in format: {REF:<WantedField>@<SearchIn>:<SearchText>}
+ // using format from http://keepass.info/help/base/fieldrefs.html at the time of writing
+
+ QRegularExpressionMatch match = EntryAttributes::matchReference(placeholder);
+ if (!match.hasMatch()) {
+ return placeholder;
+ }
+
+ QString result;
+ const QString searchIn = match.captured(EntryAttributes::SearchInGroupName);
+ const QString searchText = match.captured(EntryAttributes::SearchTextGroupName);
+
+ const EntryReferenceType searchInType = Entry::referenceType(searchIn);
+
+ Q_ASSERT(m_group);
+ Q_ASSERT(m_group->database());
+ const Entry* refEntry = m_group->database()->resolveEntry(searchText, searchInType);
+
+ if (refEntry) {
+ const QString wantedField = match.captured(EntryAttributes::WantedFieldGroupName);
+ result = refEntry->referenceFieldValue(Entry::referenceType(wantedField));
+
+ // Referencing fields of other entries only works with standard fields, not with custom user strings.
+ // If you want to reference a custom user string, you need to place a redirection in a standard field
+ // of the entry with the custom string, using {S:<Name>}, and reference the standard field.
+ result = refEntry->resolveMultiplePlaceholdersRecursive(result, maxDepth - 1);
+ }
+
+ return result;
+}
+
+QString Entry::referenceFieldValue(EntryReferenceType referenceType) const
+{
+ switch (referenceType) {
+ case EntryReferenceType::Title:
+ return title();
+ case EntryReferenceType::UserName:
+ return username();
+ case EntryReferenceType::Password:
+ return password();
+ case EntryReferenceType::Url:
+ return url();
+ case EntryReferenceType::Notes:
+ return notes();
+ case EntryReferenceType::Uuid:
+ return uuid().toHex();
+ default:
+ break;
+ }
+ return QString();
+}
+
Group* Entry::group()
{
return m_group;
@@ -727,7 +965,7 @@ const Database* Entry::database() const
}
}
-QString Entry::maskPasswordPlaceholders(const QString &str) const
+QString Entry::maskPasswordPlaceholders(const QString& str) const
{
QString result = str;
result.replace(QRegExp("(\\{PASSWORD\\})", Qt::CaseInsensitive, QRegExp::RegExp2), "******");
@@ -736,67 +974,82 @@ QString Entry::maskPasswordPlaceholders(const QString &str) const
QString Entry::resolveMultiplePlaceholders(const QString& str) const
{
- QString result = str;
- QRegExp tmplRegEx("(\\{.*\\})", Qt::CaseInsensitive, QRegExp::RegExp2);
- tmplRegEx.setMinimal(true);
- QStringList tmplList;
- int pos = 0;
-
- while ((pos = tmplRegEx.indexIn(str, pos)) != -1) {
- QString found = tmplRegEx.cap(1);
- result.replace(found,resolvePlaceholder(found));
- pos += tmplRegEx.matchedLength();
+ return resolveMultiplePlaceholdersRecursive(str, ResolveMaximumDepth);
+}
+
+QString Entry::resolvePlaceholder(const QString& placeholder) const
+{
+ return resolvePlaceholderRecursive(placeholder, ResolveMaximumDepth);
+}
+
+QString Entry::resolveUrlPlaceholder(const QString& str, Entry::PlaceholderType placeholderType) const
+{
+ if (str.isEmpty())
+ return QString();
+
+ const QUrl qurl(str);
+ switch (placeholderType) {
+ case PlaceholderType::UrlWithoutScheme:
+ return qurl.toString(QUrl::RemoveScheme | QUrl::FullyDecoded);
+ case PlaceholderType::UrlScheme:
+ return qurl.scheme();
+ case PlaceholderType::UrlHost:
+ return qurl.host();
+ case PlaceholderType::UrlPort:
+ return QString::number(qurl.port());
+ case PlaceholderType::UrlPath:
+ return qurl.path();
+ case PlaceholderType::UrlQuery:
+ return qurl.query();
+ case PlaceholderType::UrlFragment:
+ return qurl.fragment();
+ case PlaceholderType::UrlUserInfo:
+ return qurl.userInfo();
+ case PlaceholderType::UrlUserName:
+ return qurl.userName();
+ case PlaceholderType::UrlPassword:
+ return qurl.password();
+ default: {
+ Q_ASSERT_X(false, "Entry::resolveUrlPlaceholder", "Bad url placeholder type");
+ break;
+ }
}
- return result;
+ return QString();
}
-QString Entry::resolvePlaceholder(const QString& str) const
+Entry::PlaceholderType Entry::placeholderType(const QString& placeholder) const
{
- QString result = str;
-
- const QList<QString> keyList = attributes()->keys();
- for (const QString& key : keyList) {
- Qt::CaseSensitivity cs = Qt::CaseInsensitive;
- QString k = key;
-
- if (!EntryAttributes::isDefaultAttribute(key)) {
- cs = Qt::CaseSensitive;
- k.prepend("{S:");
- } else {
- k.prepend("{");
- }
-
-
- k.append("}");
- if (result.compare(k,cs)==0) {
- result.replace(result,attributes()->value(key));
- break;
- }
+ if (!placeholder.startsWith(QLatin1Char('{')) || !placeholder.endsWith(QLatin1Char('}'))) {
+ return PlaceholderType::NotPlaceholder;
+ } else if (placeholder.startsWith(QLatin1Literal("{S:"))) {
+ return PlaceholderType::CustomAttribute;
+ } else if (placeholder.startsWith(QLatin1Literal("{REF:"))) {
+ return PlaceholderType::Reference;
}
- // resolving references in format: {REF:<WantedField>@I:<uuid of referenced entry>}
- // using format from http://keepass.info/help/base/fieldrefs.html at the time of writing,
- // but supporting lookups of standard fields and references by UUID only
-
- QRegExp* tmpRegExp = m_attributes->referenceRegExp();
- if (tmpRegExp->indexIn(result) != -1) {
- // cap(0) contains the whole reference
- // cap(1) contains which field is wanted
- // cap(2) contains the uuid of the referenced entry
- Entry* tmpRefEntry = m_group->database()->resolveEntry(Uuid(QByteArray::fromHex(tmpRegExp->cap(2).toLatin1())));
- if (tmpRefEntry) {
- // entry found, get the relevant field
- QString tmpRefField = tmpRegExp->cap(1).toLower();
- if (tmpRefField == "t") result.replace(tmpRegExp->cap(0), tmpRefEntry->title(), Qt::CaseInsensitive);
- else if (tmpRefField == "u") result.replace(tmpRegExp->cap(0), tmpRefEntry->username(), Qt::CaseInsensitive);
- else if (tmpRefField == "p") result.replace(tmpRegExp->cap(0), tmpRefEntry->password(), Qt::CaseInsensitive);
- else if (tmpRefField == "a") result.replace(tmpRegExp->cap(0), tmpRefEntry->url(), Qt::CaseInsensitive);
- else if (tmpRefField == "n") result.replace(tmpRegExp->cap(0), tmpRefEntry->notes(), Qt::CaseInsensitive);
- }
- }
-
- return result;
+ static const QMap<QString, PlaceholderType> placeholders {
+ { QStringLiteral("{TITLE}"), PlaceholderType::Title },
+ { QStringLiteral("{USERNAME}"), PlaceholderType::UserName },
+ { QStringLiteral("{PASSWORD}"), PlaceholderType::Password },
+ { QStringLiteral("{NOTES}"), PlaceholderType::Notes },
+ { QStringLiteral("{TOTP}"), PlaceholderType::Totp },
+ { QStringLiteral("{URL}"), PlaceholderType::Url },
+ { QStringLiteral("{URL:RMVSCM}"), PlaceholderType::UrlWithoutScheme },
+ { QStringLiteral("{URL:WITHOUTSCHEME}"), PlaceholderType::UrlWithoutScheme },
+ { QStringLiteral("{URL:SCM}"), PlaceholderType::UrlScheme },
+ { QStringLiteral("{URL:SCHEME}"), PlaceholderType::UrlScheme },
+ { QStringLiteral("{URL:HOST}"), PlaceholderType::UrlHost },
+ { QStringLiteral("{URL:PORT}"), PlaceholderType::UrlPort },
+ { QStringLiteral("{URL:PATH}"), PlaceholderType::UrlPath },
+ { QStringLiteral("{URL:QUERY}"), PlaceholderType::UrlQuery },
+ { QStringLiteral("{URL:FRAGMENT}"), PlaceholderType::UrlFragment },
+ { QStringLiteral("{URL:USERINFO}"), PlaceholderType::UrlUserInfo },
+ { QStringLiteral("{URL:USERNAME}"), PlaceholderType::UrlUserName },
+ { QStringLiteral("{URL:PASSWORD}"), PlaceholderType::UrlPassword }
+ };
+
+ return placeholders.value(placeholder.toUpper(), PlaceholderType::Unknown);
}
QString Entry::resolveUrl(const QString& url) const
diff --git a/src/core/Entry.h b/src/core/Entry.h
index 40abb4e3e..6ddf87dea 100644
--- a/src/core/Entry.h
+++ b/src/core/Entry.h
@@ -28,6 +28,7 @@
#include <QUrl>
#include "core/AutoTypeAssociations.h"
+#include "core/CustomData.h"
#include "core/EntryAttachments.h"
#include "core/EntryAttributes.h"
#include "core/TimeInfo.h"
@@ -36,6 +37,17 @@
class Database;
class Group;
+enum class EntryReferenceType {
+ Unknown,
+ Title,
+ UserName,
+ Password,
+ Url,
+ Notes,
+ Uuid,
+ CustomAttributes
+};
+
struct EntryData
{
int iconNumber;
@@ -74,11 +86,13 @@ public:
int autoTypeObfuscation() const;
QString defaultAutoTypeSequence() const;
QString effectiveAutoTypeSequence() const;
+ QString effectiveNewAutoTypeSequence() const;
AutoTypeAssociations* autoTypeAssociations();
const AutoTypeAssociations* autoTypeAssociations() const;
QString title() const;
QString url() const;
QString webUrl() const;
+ QString displayUrl() const;
QString username() const;
QString password() const;
QString notes() const;
@@ -94,8 +108,13 @@ public:
const EntryAttributes* attributes() const;
EntryAttachments* attachments();
const EntryAttachments* attachments() const;
+ CustomData* customData();
+ const CustomData* customData() const;
static const int DefaultIconNumber;
+ static const int ResolveMaximumDepth;
+ static const QString AutoTypeSequenceUsername;
+ static const QString AutoTypeSequencePassword;
void setUuid(const Uuid& uuid);
void setIcon(int iconNumber);
@@ -129,11 +148,34 @@ public:
CloneResetTimeInfo = 2, // set all TimeInfo attributes to the current time
CloneIncludeHistory = 4, // clone the history items
CloneRenameTitle = 8, // add "-Clone" after the original title
- CloneUserAsRef = 16, // Add the user as a refrence to the origional entry
- ClonePassAsRef = 32, // Add the password as a refrence to the origional entry
+ CloneUserAsRef = 16, // Add the user as a reference to the original entry
+ ClonePassAsRef = 32, // Add the password as a reference to the original entry
};
Q_DECLARE_FLAGS(CloneFlags, CloneFlag)
+ enum class PlaceholderType {
+ NotPlaceholder,
+ Unknown,
+ Title,
+ UserName,
+ Password,
+ Notes,
+ Totp,
+ Url,
+ UrlWithoutScheme,
+ UrlScheme,
+ UrlHost,
+ UrlPort,
+ UrlPath,
+ UrlQuery,
+ UrlFragment,
+ UrlUserInfo,
+ UrlUserName,
+ UrlPassword,
+ Reference,
+ CustomAttribute
+ };
+
/**
* Creates a duplicate of this entry except that the returned entry isn't
* part of any group.
@@ -145,6 +187,8 @@ public:
QString maskPasswordPlaceholders(const QString& str) const;
QString resolveMultiplePlaceholders(const QString& str) const;
QString resolvePlaceholder(const QString& str) const;
+ QString resolveUrlPlaceholder(const QString& str, PlaceholderType placeholderType) const;
+ PlaceholderType placeholderType(const QString& placeholder) const;
QString resolveUrl(const QString& url) const;
/**
@@ -172,16 +216,25 @@ private slots:
void emitDataChanged();
void updateTimeinfo();
void updateModifiedSinceBegin();
+ void updateTotp();
private:
+ QString resolveMultiplePlaceholdersRecursive(const QString& str, int maxDepth) const;
+ QString resolvePlaceholderRecursive(const QString& placeholder, int maxDepth) const;
+ QString resolveReferencePlaceholderRecursive(const QString& placeholder, int maxDepth) const;
+ QString referenceFieldValue(EntryReferenceType referenceType) const;
+
+ static EntryReferenceType referenceType(const QString& referenceStr);
+
const Database* database() const;
template <class T> bool set(T& property, const T& value);
Uuid m_uuid;
EntryData m_data;
- EntryAttributes* const m_attributes;
- EntryAttachments* const m_attachments;
- AutoTypeAssociations* const m_autoTypeAssociations;
+ QPointer<EntryAttributes> m_attributes;
+ QPointer<EntryAttachments> m_attachments;
+ QPointer<AutoTypeAssociations> m_autoTypeAssociations;
+ QPointer<CustomData> m_customData;
QList<Entry*> m_history;
Entry* m_tmpHistoryItem;
diff --git a/src/core/EntryAttachments.cpp b/src/core/EntryAttachments.cpp
index a53a3c997..4dcc0262b 100644
--- a/src/core/EntryAttachments.cpp
+++ b/src/core/EntryAttachments.cpp
@@ -17,6 +17,9 @@
#include "EntryAttachments.h"
+#include <QStringList>
+#include <QSet>
+
EntryAttachments::EntryAttachments(QObject* parent)
: QObject(parent)
{
@@ -29,12 +32,12 @@ QList<QString> EntryAttachments::keys() const
bool EntryAttachments::hasKey(const QString& key) const
{
- return m_attachments.keys().contains(key);
+ return m_attachments.contains(key);
}
-QList<QByteArray> EntryAttachments::values() const
+QSet<QByteArray> EntryAttachments::values() const
{
- return m_attachments.values();
+ return m_attachments.values().toSet();
}
QByteArray EntryAttachments::value(const QString& key) const
@@ -71,7 +74,8 @@ void EntryAttachments::set(const QString& key, const QByteArray& value)
void EntryAttachments::remove(const QString& key)
{
if (!m_attachments.contains(key)) {
- Q_ASSERT(false);
+ Q_ASSERT_X(false, "EntryAttachments::remove",
+ qPrintable(QString("Can't find attachment for key %1").arg(key)));
return;
}
@@ -83,6 +87,36 @@ void EntryAttachments::remove(const QString& key)
emit modified();
}
+void EntryAttachments::remove(const QStringList& keys)
+{
+ if (keys.isEmpty()) {
+ return;
+ }
+
+ bool isModified = false;
+ for (const QString &key: keys) {
+ if (!m_attachments.contains(key)) {
+ Q_ASSERT_X(false, "EntryAttachments::remove",
+ qPrintable(QString("Can't find attachment for key %1").arg(key)));
+ continue;
+ }
+
+ isModified = true;
+ emit aboutToBeRemoved(key);
+ m_attachments.remove(key);
+ emit removed(key);
+ }
+
+ if (isModified) {
+ emit modified();
+ }
+}
+
+bool EntryAttachments::isEmpty() const
+{
+ return m_attachments.isEmpty();
+}
+
void EntryAttachments::clear()
{
if (m_attachments.isEmpty()) {
@@ -118,3 +152,12 @@ bool EntryAttachments::operator!=(const EntryAttachments& other) const
{
return m_attachments != other.m_attachments;
}
+
+int EntryAttachments::attachmentsSize() const
+{
+ int size = 0;
+ for (auto it = m_attachments.constBegin(); it != m_attachments.constEnd(); ++it) {
+ size += it.key().toUtf8().size() + it.value().size();
+ }
+ return size;
+}
diff --git a/src/core/EntryAttachments.h b/src/core/EntryAttachments.h
index 04c22cb34..c2fa55b44 100644
--- a/src/core/EntryAttachments.h
+++ b/src/core/EntryAttachments.h
@@ -21,6 +21,8 @@
#include <QMap>
#include <QObject>
+class QStringList;
+
class EntryAttachments : public QObject
{
Q_OBJECT
@@ -29,14 +31,17 @@ public:
explicit EntryAttachments(QObject* parent = nullptr);
QList<QString> keys() const;
bool hasKey(const QString& key) const;
- QList<QByteArray> values() const;
+ QSet<QByteArray> values() const;
QByteArray value(const QString& key) const;
void set(const QString& key, const QByteArray& value);
void remove(const QString& key);
+ void remove(const QStringList& keys);
+ bool isEmpty() const;
void clear();
void copyDataFrom(const EntryAttachments* other);
bool operator==(const EntryAttachments& other) const;
bool operator!=(const EntryAttachments& other) const;
+ int attachmentsSize() const;
signals:
void modified();
diff --git a/src/core/EntryAttributes.cpp b/src/core/EntryAttributes.cpp
index a5143aa04..772a56611 100644
--- a/src/core/EntryAttributes.cpp
+++ b/src/core/EntryAttributes.cpp
@@ -25,11 +25,15 @@ const QString EntryAttributes::URLKey = "URL";
const QString EntryAttributes::NotesKey = "Notes";
const QStringList EntryAttributes::DefaultAttributes(QStringList() << TitleKey << UserNameKey
<< PasswordKey << URLKey << NotesKey);
+
+const QString EntryAttributes::WantedFieldGroupName = "WantedField";
+const QString EntryAttributes::SearchInGroupName = "SearchIn";
+const QString EntryAttributes::SearchTextGroupName = "SearchText";
+
const QString EntryAttributes::RememberCmdExecAttr = "_EXEC_CMD";
EntryAttributes::EntryAttributes(QObject* parent)
: QObject(parent)
- , m_referenceRegExp("\\{REF:([TUPAN])@I:([^}]+)\\}", Qt::CaseInsensitive, QRegExp::RegExp2)
{
clear();
}
@@ -41,10 +45,10 @@ QList<QString> EntryAttributes::keys() const
bool EntryAttributes::hasKey(const QString& key) const
{
- return m_attributes.keys().contains(key);
+ return m_attributes.contains(key);
}
-QList<QString> EntryAttributes::customKeys()
+QList<QString> EntryAttributes::customKeys() const
{
QList<QString> customKeys;
const QList<QString> keyList = keys();
@@ -61,11 +65,16 @@ QString EntryAttributes::value(const QString& key) const
return m_attributes.value(key);
}
-bool EntryAttributes::contains(const QString &key) const
+bool EntryAttributes::contains(const QString& key) const
{
return m_attributes.contains(key);
}
+bool EntryAttributes::containsValue(const QString& value) const
+{
+ return m_attributes.values().contains(value);
+}
+
bool EntryAttributes::isProtected(const QString& key) const
{
return m_protectedAttributes.contains(key);
@@ -78,16 +87,8 @@ bool EntryAttributes::isReference(const QString& key) const
return false;
}
- QString data = value(key);
- if (m_referenceRegExp.indexIn(data) != -1) {
- return true;
- }
- return false;
-}
-
-QRegExp* EntryAttributes::referenceRegExp()
-{
- return &m_referenceRegExp;
+ const QString data = value(key);
+ return matchReference(data).hasMatch();
}
void EntryAttributes::set(const QString& key, const QString& value, bool protect)
@@ -258,6 +259,15 @@ bool EntryAttributes::operator!=(const EntryAttributes& other) const
|| m_protectedAttributes != other.m_protectedAttributes);
}
+QRegularExpressionMatch EntryAttributes::matchReference(const QString& text)
+{
+ static QRegularExpression referenceRegExp(
+ "\\{REF:(?<WantedField>[TUPANI])@(?<SearchIn>[TUPANIO]):(?<SearchText>[^}]+)\\}",
+ QRegularExpression::CaseInsensitiveOption);
+
+ return referenceRegExp.match(text);
+}
+
void EntryAttributes::clear()
{
emit aboutToBeReset();
@@ -273,14 +283,11 @@ void EntryAttributes::clear()
emit modified();
}
-int EntryAttributes::attributesSize()
+int EntryAttributes::attributesSize() const
{
int size = 0;
-
- QMapIterator<QString, QString> i(m_attributes);
- while (i.hasNext()) {
- i.next();
- size += i.value().toUtf8().size();
+ for (auto it = m_attributes.constBegin(); it != m_attributes.constEnd(); ++it) {
+ size += it.key().toUtf8().size() + it.value().toUtf8().size();
}
return size;
}
diff --git a/src/core/EntryAttributes.h b/src/core/EntryAttributes.h
index 40fc5dec4..91cc50879 100644
--- a/src/core/EntryAttributes.h
+++ b/src/core/EntryAttributes.h
@@ -21,6 +21,7 @@
#include <QMap>
#include <QObject>
+#include <QRegularExpression>
#include <QSet>
#include <QStringList>
@@ -32,23 +33,25 @@ public:
explicit EntryAttributes(QObject* parent = nullptr);
QList<QString> keys() const;
bool hasKey(const QString& key) const;
- QList<QString> customKeys();
+ QList<QString> customKeys() const;
QString value(const QString& key) const;
bool contains(const QString& key) const;
+ bool containsValue(const QString& value) const;
bool isProtected(const QString& key) const;
bool isReference(const QString& key) const;
- QRegExp* referenceRegExp();
void set(const QString& key, const QString& value, bool protect = false);
void remove(const QString& key);
void rename(const QString& oldKey, const QString& newKey);
void copyCustomKeysFrom(const EntryAttributes* other);
bool areCustomKeysDifferent(const EntryAttributes* other);
void clear();
- int attributesSize();
+ int attributesSize() const;
void copyDataFrom(const EntryAttributes* other);
bool operator==(const EntryAttributes& other) const;
bool operator!=(const EntryAttributes& other) const;
+ static QRegularExpressionMatch matchReference(const QString& text);
+
static const QString TitleKey;
static const QString UserNameKey;
static const QString PasswordKey;
@@ -58,6 +61,10 @@ public:
static const QString RememberCmdExecAttr;
static bool isDefaultAttribute(const QString& key);
+ static const QString WantedFieldGroupName;
+ static const QString SearchInGroupName;
+ static const QString SearchTextGroupName;
+
signals:
void modified();
void defaultKeyModified();
@@ -74,7 +81,6 @@ signals:
private:
QMap<QString, QString> m_attributes;
QSet<QString> m_protectedAttributes;
- QRegExp m_referenceRegExp;
};
#endif // KEEPASSX_ENTRYATTRIBUTES_H
diff --git a/src/core/FilePath.cpp b/src/core/FilePath.cpp
index b5c9d1020..330542eb9 100644
--- a/src/core/FilePath.cpp
+++ b/src/core/FilePath.cpp
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -23,6 +24,7 @@
#include "config-keepassx.h"
#include "core/Global.h"
+#include "core/Config.h"
FilePath* FilePath::m_instance(nullptr);
@@ -89,15 +91,23 @@ QString FilePath::pluginPath(const QString& name)
return QString();
}
+QString FilePath::wordlistPath(const QString& name)
+{
+ return dataPath("wordlists/" + name);
+}
+
QIcon FilePath::applicationIcon()
{
+ bool darkIcon = useDarkIcon();
+
#ifdef KEEPASSXC_DIST_SNAP
- return icon("apps", "keepassxc", false);
+ return (darkIcon) ? icon("apps", "keepassxc-dark", false) : icon("apps", "keepassxc", false);
#else
- return icon("apps", "keepassxc");
+ return (darkIcon) ? icon("apps", "keepassxc-dark") : icon("apps", "keepassxc");
#endif
}
+
QIcon FilePath::trayIconLocked()
{
#ifdef KEEPASSXC_DIST_SNAP
@@ -109,10 +119,12 @@ QIcon FilePath::trayIconLocked()
QIcon FilePath::trayIconUnlocked()
{
+ bool darkIcon = useDarkIcon();
+
#ifdef KEEPASSXC_DIST_SNAP
- return icon("apps", "keepassxc-unlocked", false);
+ return darkIcon ? icon("apps", "keepassxc-dark", false) : icon("apps", "keepassxc-unlocked", false);
#else
- return icon("apps", "keepassxc-unlocked");
+ return darkIcon ? icon("apps", "keepassxc-dark") : icon("apps", "keepassxc-unlocked");
#endif
}
@@ -246,6 +258,11 @@ bool FilePath::testSetDir(const QString& dir)
}
}
+bool FilePath::useDarkIcon()
+{
+ return config()->get("GUI/DarkTrayIcon").toBool();
+}
+
FilePath* FilePath::instance()
{
if (!m_instance) {
diff --git a/src/core/FilePath.h b/src/core/FilePath.h
index 34edcbc93..f84f84e0e 100644
--- a/src/core/FilePath.h
+++ b/src/core/FilePath.h
@@ -27,6 +27,7 @@ class FilePath
public:
QString dataPath(const QString& name);
QString pluginPath(const QString& name);
+ QString wordlistPath(const QString& name);
QIcon applicationIcon();
QIcon trayIconLocked();
QIcon trayIconUnlocked();
@@ -38,6 +39,7 @@ public:
private:
FilePath();
bool testSetDir(const QString& dir);
+ bool useDarkIcon();
static FilePath* m_instance;
diff --git a/src/core/Group.cpp b/src/core/Group.cpp
index a34421e63..692672652 100644
--- a/src/core/Group.cpp
+++ b/src/core/Group.cpp
@@ -25,15 +25,25 @@
const int Group::DefaultIconNumber = 48;
const int Group::RecycleBinIconNumber = 43;
+const QString Group::RootAutoTypeSequence = "{USERNAME}{TAB}{PASSWORD}{ENTER}";
+
+Group::CloneFlags Group::DefaultCloneFlags = static_cast<Group::CloneFlags>(
+ Group::CloneNewUuid | Group::CloneResetTimeInfo | Group::CloneIncludeEntries);
+Entry::CloneFlags Group::DefaultEntryCloneFlags = static_cast<Entry::CloneFlags>(
+ Entry::CloneNewUuid | Entry::CloneResetTimeInfo);
Group::Group()
- : m_updateTimeinfo(true)
+ : m_customData(new CustomData(this))
+ , m_updateTimeinfo(true)
{
m_data.iconNumber = DefaultIconNumber;
m_data.isExpanded = true;
m_data.autoTypeEnabled = Inherit;
m_data.searchingEnabled = Inherit;
m_data.mergeMode = ModeInherit;
+
+ connect(m_customData, SIGNAL(modified()), this, SIGNAL(modified()));
+ connect(this, SIGNAL(modified()), SLOT(updateTimeinfo()));
}
Group::~Group()
@@ -74,11 +84,9 @@ Group* Group::createRecycleBin()
template <class P, class V> inline bool Group::set(P& property, const V& value) {
if (property != value) {
property = value;
- updateTimeinfo();
emit modified();
return true;
- }
- else {
+ } else {
return false;
}
}
@@ -188,6 +196,10 @@ QString Group::defaultAutoTypeSequence() const
return m_data.defaultAutoTypeSequence;
}
+/**
+ * Determine the effective sequence that will be injected
+ * This function return an empty string if the current group or any parent has autotype disabled
+ */
QString Group::effectiveAutoTypeSequence() const
{
QString sequence;
@@ -203,7 +215,7 @@ QString Group::effectiveAutoTypeSequence() const
} while (group && sequence.isEmpty());
if (sequence.isEmpty()) {
- sequence = "{USERNAME}{TAB}{PASSWORD}{ENTER}";
+ sequence = RootAutoTypeSequence;
}
return sequence;
@@ -242,6 +254,16 @@ bool Group::isExpired() const
return m_data.timeInfo.expires() && m_data.timeInfo.expiryTime() < QDateTime::currentDateTimeUtc();
}
+CustomData* Group::customData()
+{
+ return m_customData;
+}
+
+const CustomData* Group::customData() const
+{
+ return m_customData;
+}
+
void Group::setUuid(const Uuid& uuid)
{
set(m_uuid, uuid);
@@ -266,8 +288,6 @@ void Group::setIcon(int iconNumber)
if (m_data.iconNumber != iconNumber || !m_data.customIcon.isNull()) {
m_data.iconNumber = iconNumber;
m_data.customIcon = Uuid();
-
- updateTimeinfo();
emit modified();
emit dataChanged(this);
}
@@ -280,8 +300,6 @@ void Group::setIcon(const Uuid& uuid)
if (m_data.customIcon != uuid) {
m_data.customIcon = uuid;
m_data.iconNumber = 0;
-
- updateTimeinfo();
emit modified();
emit dataChanged(this);
}
@@ -296,8 +314,8 @@ void Group::setExpanded(bool expanded)
{
if (m_data.isExpanded != expanded) {
m_data.isExpanded = expanded;
- updateTimeinfo();
if (config()->get("IgnoreGroupExpansion").toBool()) {
+ updateTimeinfo();
return;
}
emit modified();
@@ -328,7 +346,6 @@ void Group::setExpires(bool value)
{
if (m_data.timeInfo.expires() != value) {
m_data.timeInfo.setExpires(value);
- updateTimeinfo();
emit modified();
}
}
@@ -337,7 +354,6 @@ void Group::setExpiryTime(const QDateTime& dateTime)
{
if (m_data.timeInfo.expiryTime() != dateTime) {
m_data.timeInfo.setExpiryTime(dateTime);
- updateTimeinfo();
emit modified();
}
}
@@ -435,6 +451,23 @@ void Group::setParent(Database* db)
QObject::setParent(db);
}
+QStringList Group::hierarchy() const
+{
+ QStringList hierarchy;
+ const Group* group = this;
+ const Group* parent = m_parent;
+ hierarchy.prepend(group->name());
+
+ while (parent) {
+ group = group->parentGroup();
+ parent = group->parentGroup();
+
+ hierarchy.prepend(group->name());
+ }
+
+ return hierarchy;
+}
+
Database* Group::database()
{
return m_db;
@@ -488,18 +521,17 @@ Entry* Group::findEntry(QString entryId)
{
Q_ASSERT(!entryId.isNull());
+ Entry* entry;
if (Uuid::isUuid(entryId)) {
- Uuid entryUuid = Uuid::fromHex(entryId);
- for (Entry* entry : entriesRecursive(false)) {
- if (entry->uuid() == entryUuid) {
- return entry;
- }
+ entry = findEntryByUuid(Uuid::fromHex(entryId));
+ if (entry) {
+ return entry;
}
}
- Entry* entry = findEntryByPath(entryId);
+ entry = findEntryByPath(entryId);
if (entry) {
- return entry;
+ return entry;
}
for (Entry* entry : entriesRecursive(false)) {
@@ -514,7 +546,7 @@ Entry* Group::findEntry(QString entryId)
Entry* Group::findEntryByUuid(const Uuid& uuid)
{
Q_ASSERT(!uuid.isNull());
- for (Entry* entry : asConst(m_entries)) {
+ for (Entry* entry : entriesRecursive(false)) {
if (entry->uuid() == uuid) {
return entry;
}
@@ -575,10 +607,9 @@ Group* Group::findGroupByPath(QString groupPath, QString basePath)
}
return nullptr;
-
}
-QString Group::print(bool printUuids, QString baseName, int depth)
+QString Group::print(bool recursive, int depth)
{
QString response;
@@ -590,21 +621,14 @@ QString Group::print(bool printUuids, QString baseName, int depth)
}
for (Entry* entry : entries()) {
- response += indentation + entry->title();
- if (printUuids) {
- response += " " + entry->uuid().toHex();
- }
- response += "\n";
+ response += indentation + entry->title() + "\n";
}
for (Group* innerGroup : children()) {
- QString newBaseName = baseName + innerGroup->name() + "/";
- response += indentation + newBaseName;
- if (printUuids) {
- response += " " + innerGroup->uuid().toHex();
+ response += indentation + innerGroup->name() + "/\n";
+ if (recursive) {
+ response += innerGroup->print(recursive, depth + 1);
}
- response += "\n";
- response += innerGroup->print(printUuids, newBaseName, depth + 1);
}
return response;
@@ -662,31 +686,71 @@ QSet<Uuid> Group::customIconsRecursive() const
void Group::merge(const Group* other)
{
+
+ Group* rootGroup = this;
+ while (rootGroup->parentGroup()) {
+ rootGroup = rootGroup->parentGroup();
+ }
+
// merge entries
const QList<Entry*> dbEntries = other->entries();
for (Entry* entry : dbEntries) {
- // entries are searched by uuid
- if (!findEntryByUuid(entry->uuid())) {
+
+ Entry* existingEntry = rootGroup->findEntryByUuid(entry->uuid());
+
+ if (!existingEntry) {
+ // This entry does not exist at all. Create it.
+ qDebug("New entry %s detected. Creating it.", qPrintable(entry->title()));
entry->clone(Entry::CloneIncludeHistory)->setGroup(this);
} else {
- resolveConflict(findEntryByUuid(entry->uuid()), entry);
+ // Entry is already present in the database. Update it.
+ bool locationChanged = existingEntry->timeInfo().locationChanged() < entry->timeInfo().locationChanged();
+ if (locationChanged && existingEntry->group() != this) {
+ existingEntry->setGroup(this);
+ qDebug("Location changed for entry %s. Updating it", qPrintable(existingEntry->title()));
+ }
+ resolveEntryConflict(existingEntry, entry);
}
}
- // merge groups (recursively)
+ // merge groups recursively
const QList<Group*> dbChildren = other->children();
for (Group* group : dbChildren) {
- // groups are searched by name instead of uuid
- if (findChildByName(group->name())) {
- findChildByName(group->name())->merge(group);
+
+ Group* existingGroup = rootGroup->findChildByUuid(group->uuid());
+
+ if (!existingGroup) {
+ qDebug("New group %s detected. Creating it.", qPrintable(group->name()));
+ Group* newGroup = group->clone(Entry::CloneNoFlags, Group::CloneNoFlags);
+ newGroup->setParent(this);
+ newGroup->merge(group);
} else {
- group->setParent(this);
+ bool locationChanged = existingGroup->timeInfo().locationChanged() < group->timeInfo().locationChanged();
+ if (locationChanged && existingGroup->parent() != this) {
+ existingGroup->setParent(this);
+ qDebug("Location changed for group %s. Updating it", qPrintable(existingGroup->name()));
+ }
+ resolveGroupConflict(existingGroup, group);
+ existingGroup->merge(group);
}
+
}
emit modified();
}
+Group* Group::findChildByUuid(const Uuid& uuid)
+{
+ Q_ASSERT(!uuid.isNull());
+ for (Group* group : groupsRecursive(true)) {
+ if (group->uuid() == uuid) {
+ return group;
+ }
+ }
+
+ return nullptr;
+}
+
Group* Group::findChildByName(const QString& name)
{
for (Group* group : asConst(m_children)) {
@@ -698,34 +762,44 @@ Group* Group::findChildByName(const QString& name)
return nullptr;
}
-Group* Group::clone(Entry::CloneFlags entryFlags) const
+Group* Group::clone(Entry::CloneFlags entryFlags, Group::CloneFlags groupFlags) const
{
Group* clonedGroup = new Group();
clonedGroup->setUpdateTimeinfo(false);
- clonedGroup->setUuid(Uuid::random());
+ if (groupFlags & Group::CloneNewUuid) {
+ clonedGroup->setUuid(Uuid::random());
+ } else {
+ clonedGroup->setUuid(this->uuid());
+ }
+
clonedGroup->m_data = m_data;
+ clonedGroup->m_customData->copyDataFrom(m_customData);
- const QList<Entry*> entryList = entries();
- for (Entry* entry : entryList) {
- Entry* clonedEntry = entry->clone(entryFlags);
- clonedEntry->setGroup(clonedGroup);
- }
+ if (groupFlags & Group::CloneIncludeEntries) {
+ const QList<Entry*> entryList = entries();
+ for (Entry* entry : entryList) {
+ Entry* clonedEntry = entry->clone(entryFlags);
+ clonedEntry->setGroup(clonedGroup);
+ }
- const QList<Group*> childrenGroups = children();
- for (Group* groupChild : childrenGroups) {
- Group* clonedGroupChild = groupChild->clone(entryFlags);
- clonedGroupChild->setParent(clonedGroup);
+ const QList<Group*> childrenGroups = children();
+ for (Group* groupChild : childrenGroups) {
+ Group* clonedGroupChild = groupChild->clone(entryFlags, groupFlags);
+ clonedGroupChild->setParent(clonedGroup);
+ }
}
clonedGroup->setUpdateTimeinfo(true);
+ if (groupFlags & Group::CloneResetTimeInfo) {
- QDateTime now = QDateTime::currentDateTimeUtc();
- clonedGroup->m_data.timeInfo.setCreationTime(now);
- clonedGroup->m_data.timeInfo.setLastModificationTime(now);
- clonedGroup->m_data.timeInfo.setLastAccessTime(now);
- clonedGroup->m_data.timeInfo.setLocationChanged(now);
+ QDateTime now = QDateTime::currentDateTimeUtc();
+ clonedGroup->m_data.timeInfo.setCreationTime(now);
+ clonedGroup->m_data.timeInfo.setLastModificationTime(now);
+ clonedGroup->m_data.timeInfo.setLastAccessTime(now);
+ clonedGroup->m_data.timeInfo.setLocationChanged(now);
+ }
return clonedGroup;
}
@@ -733,6 +807,7 @@ Group* Group::clone(Entry::CloneFlags entryFlags) const
void Group::copyDataFrom(const Group* other)
{
m_data = other->m_data;
+ m_customData->copyDataFrom(other->m_customData);
m_lastTopVisibleEntry = other->m_lastTopVisibleEntry;
}
@@ -836,8 +911,7 @@ void Group::markOlderEntry(Entry* entry)
{
entry->attributes()->set(
"merged",
- QString("older entry merged from database \"%1\"").arg(entry->group()->database()->metadata()->name())
- );
+ QString("older entry merged from database \"%1\"").arg(entry->group()->database()->metadata()->name()));
}
bool Group::resolveSearchingEnabled() const
@@ -880,39 +954,110 @@ bool Group::resolveAutoTypeEnabled() const
}
}
-void Group::resolveConflict(Entry* existingEntry, Entry* otherEntry)
+void Group::resolveEntryConflict(Entry* existingEntry, Entry* otherEntry)
{
const QDateTime timeExisting = existingEntry->timeInfo().lastModificationTime();
const QDateTime timeOther = otherEntry->timeInfo().lastModificationTime();
Entry* clonedEntry;
- switch(mergeMode()) {
- case KeepBoth:
- // if one entry is newer, create a clone and add it to the group
- if (timeExisting > timeOther) {
- clonedEntry = otherEntry->clone(Entry::CloneIncludeHistory);
- clonedEntry->setGroup(this);
- markOlderEntry(clonedEntry);
- } else if (timeExisting < timeOther) {
- clonedEntry = otherEntry->clone(Entry::CloneIncludeHistory);
- clonedEntry->setGroup(this);
- markOlderEntry(existingEntry);
- }
- break;
- case KeepNewer:
- if (timeExisting < timeOther) {
- // only if other entry is newer, replace existing one
- removeEntry(existingEntry);
- clonedEntry = otherEntry->clone(Entry::CloneIncludeHistory);
- clonedEntry->setGroup(this);
- }
+ switch (mergeMode()) {
+ case KeepBoth:
+ // if one entry is newer, create a clone and add it to the group
+ if (timeExisting > timeOther) {
+ clonedEntry = otherEntry->clone(Entry::CloneNewUuid | Entry::CloneIncludeHistory);
+ clonedEntry->setGroup(this);
+ markOlderEntry(clonedEntry);
+ } else if (timeExisting < timeOther) {
+ clonedEntry = otherEntry->clone(Entry::CloneNewUuid | Entry::CloneIncludeHistory);
+ clonedEntry->setGroup(this);
+ markOlderEntry(existingEntry);
+ }
+ break;
+ case KeepNewer:
+ if (timeExisting < timeOther) {
+ qDebug("Updating entry %s.", qPrintable(existingEntry->title()));
+ // only if other entry is newer, replace existing one
+ Group* currentGroup = existingEntry->group();
+ currentGroup->removeEntry(existingEntry);
+ otherEntry->clone(Entry::CloneIncludeHistory)->setGroup(currentGroup);
+ }
- break;
- case KeepExisting:
- break;
- default:
- // do nothing
- break;
+ break;
+ case KeepExisting:
+ break;
+ default:
+ // do nothing
+ break;
+ }
+}
+
+void Group::resolveGroupConflict(Group* existingGroup, Group* otherGroup)
+{
+ const QDateTime timeExisting = existingGroup->timeInfo().lastModificationTime();
+ const QDateTime timeOther = otherGroup->timeInfo().lastModificationTime();
+
+ // only if the other group is newer, update the existing one.
+ if (timeExisting < timeOther) {
+ qDebug("Updating group %s.", qPrintable(existingGroup->name()));
+ existingGroup->setName(otherGroup->name());
+ existingGroup->setNotes(otherGroup->notes());
+ if (otherGroup->iconNumber() == 0) {
+ existingGroup->setIcon(otherGroup->iconUuid());
+ } else {
+ existingGroup->setIcon(otherGroup->iconNumber());
+ }
+ existingGroup->setExpiryTime(otherGroup->timeInfo().expiryTime());
}
+
+}
+
+QStringList Group::locate(QString locateTerm, QString currentPath)
+{
+ Q_ASSERT(!locateTerm.isNull());
+ QStringList response;
+
+ for (Entry* entry : asConst(m_entries)) {
+ QString entryPath = currentPath + entry->title();
+ if (entryPath.toLower().contains(locateTerm.toLower())) {
+ response << entryPath;
+ }
+ }
+
+ for (Group* group : asConst(m_children)) {
+ for (QString path : group->locate(locateTerm, currentPath + group->name() + QString("/"))) {
+ response << path;
+ }
+ }
+
+ return response;
+}
+
+Entry* Group::addEntryWithPath(QString entryPath)
+{
+ Q_ASSERT(!entryPath.isNull());
+ if (this->findEntryByPath(entryPath)) {
+ return nullptr;
+ }
+
+ QStringList groups = entryPath.split("/");
+ QString entryTitle = groups.takeLast();
+ QString groupPath = groups.join("/");
+ if (groupPath.isNull()) {
+ groupPath = QString("");
+ }
+
+ Q_ASSERT(!groupPath.isNull());
+ Group* group = this->findGroupByPath(groupPath);
+ if (!group) {
+ return nullptr;
+ }
+
+ Entry* entry = new Entry();
+ entry->setTitle(entryTitle);
+ entry->setUuid(Uuid::random());
+ entry->setGroup(group);
+
+ return entry;
+
}
diff --git a/src/core/Group.h b/src/core/Group.h
index f8c976eeb..cc923e43b 100644
--- a/src/core/Group.h
+++ b/src/core/Group.h
@@ -26,6 +26,7 @@
#include "core/Database.h"
#include "core/Entry.h"
+#include "core/CustomData.h"
#include "core/TimeInfo.h"
#include "core/Uuid.h"
@@ -37,6 +38,14 @@ public:
enum TriState { Inherit, Enable, Disable };
enum MergeMode { ModeInherit, KeepBoth, KeepNewer, KeepExisting };
+ enum CloneFlag {
+ CloneNoFlags = 0,
+ CloneNewUuid = 1, // generate a random uuid for the clone
+ CloneResetTimeInfo = 2, // set all TimeInfo attributes to the current time
+ CloneIncludeEntries = 4, // clone the group entries
+ };
+ Q_DECLARE_FLAGS(CloneFlags, CloneFlag)
+
struct GroupData
{
QString name;
@@ -75,15 +84,23 @@ public:
bool resolveAutoTypeEnabled() const;
Entry* lastTopVisibleEntry() const;
bool isExpired() const;
+ CustomData* customData();
+ const CustomData* customData() const;
static const int DefaultIconNumber;
static const int RecycleBinIconNumber;
+ static CloneFlags DefaultCloneFlags;
+ static Entry::CloneFlags DefaultEntryCloneFlags;
+ static const QString RootAutoTypeSequence;
Group* findChildByName(const QString& name);
+ Group* findChildByUuid(const Uuid& uuid);
Entry* findEntry(QString entryId);
Entry* findEntryByUuid(const Uuid& uuid);
Entry* findEntryByPath(QString entryPath, QString basePath = QString(""));
Group* findGroupByPath(QString groupPath, QString basePath = QString("/"));
+ QStringList locate(QString locateTerm, QString currentPath = QString("/"));
+ Entry* addEntryWithPath(QString entryPath);
void setUuid(const Uuid& uuid);
void setName(const QString& name);
void setNotes(const QString& notes);
@@ -104,6 +121,7 @@ public:
Group* parentGroup();
const Group* parentGroup() const;
void setParent(Group* parent, int index = -1);
+ QStringList hierarchy() const;
Database* database();
const Database* database() const;
@@ -116,16 +134,16 @@ public:
QList<Group*> groupsRecursive(bool includeSelf);
QSet<Uuid> customIconsRecursive() const;
/**
- * Creates a duplicate of this group including all child entries and groups.
- * The exceptions are that the returned group doesn't have a parent group
- * and all TimeInfo attributes are set to the current time.
+ * Creates a duplicate of this group.
* Note that you need to copy the custom icons manually when inserting the
* new group into another database.
*/
- Group* clone(Entry::CloneFlags entryFlags = Entry::CloneNewUuid | Entry::CloneResetTimeInfo) const;
+ Group* clone(Entry::CloneFlags entryFlags = DefaultEntryCloneFlags,
+ CloneFlags groupFlags = DefaultCloneFlags) const;
+
void copyDataFrom(const Group* other);
void merge(const Group* other);
- QString print(bool printUuids = false, QString baseName = QString(""), int depth = 0);
+ QString print(bool recursive = false, int depth = 0);
signals:
void dataChanged(Group* group);
@@ -149,6 +167,9 @@ signals:
void modified();
+private slots:
+ void updateTimeinfo();
+
private:
template <class P, class V> bool set(P& property, const V& value);
@@ -156,12 +177,12 @@ private:
void removeEntry(Entry* entry);
void setParent(Database* db);
void markOlderEntry(Entry* entry);
- void resolveConflict(Entry* existingEntry, Entry* otherEntry);
+ void resolveEntryConflict(Entry* existingEntry, Entry* otherEntry);
+ void resolveGroupConflict(Group* existingGroup, Group* otherGroup);
void recSetDatabase(Database* db);
void cleanupParent();
void recCreateDelObjects();
- void updateTimeinfo();
QPointer<Database> m_db;
Uuid m_uuid;
@@ -170,6 +191,8 @@ private:
QList<Group*> m_children;
QList<Entry*> m_entries;
+ QPointer<CustomData> m_customData;
+
QPointer<Group> m_parent;
bool m_updateTimeinfo;
@@ -179,4 +202,6 @@ private:
friend void Entry::setGroup(Group* group);
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(Group::CloneFlags)
+
#endif // KEEPASSX_GROUP_H
diff --git a/src/core/MacPasteboard.cpp b/src/core/MacPasteboard.cpp
new file mode 100644
index 000000000..98dc6f7ab
--- /dev/null
+++ b/src/core/MacPasteboard.cpp
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "MacPasteboard.h"
+
+QString MacPasteboard::convertorName() { return QLatin1String("MacPasteboard"); }
+
+QString MacPasteboard::flavorFor(const QString& mimetype) {
+ if (mimetype == QLatin1String("text/plain")) {
+ return QLatin1String("public.utf8-plain-text");
+ } else if (mimetype == QLatin1String("application/x-nspasteboard-concealed-type")) {
+ return QLatin1String("org.nspasteboard.ConcealedType");
+ }
+
+ int i = mimetype.indexOf(QLatin1String("charset="));
+
+ if (i >= 0) {
+ QString cs(mimetype.mid(i + 8).toLower());
+ i = cs.indexOf(QLatin1Char(';'));
+
+ if (i >= 0) {
+ cs = cs.left(i);
+ }
+
+ if (cs == QLatin1String("system")) {
+ return QLatin1String("public.utf8-plain-text");
+ } else if (cs == QLatin1String("iso-10646-ucs-2") ||
+ cs == QLatin1String("utf16")) {
+ return QLatin1String("public.utf16-plain-text");
+ }
+ }
+ return QString();
+}
+
+QString MacPasteboard::mimeFor(QString flavor) {
+ if (flavor == QLatin1String("public.utf8-plain-text"))
+ return QLatin1String("text/plain");
+ if (flavor == QLatin1String("org.nspasteboard.ConcealedType"))
+ return QLatin1String("application/x-nspasteboard-concealed-type");
+ if (flavor == QLatin1String("public.utf16-plain-text"))
+ return QLatin1String("text/plain;charset=utf16");
+ return QString();
+}
+
+bool MacPasteboard::canConvert(const QString& mimetype, QString flavor) {
+ Q_UNUSED(mimetype);
+ Q_UNUSED(flavor);
+ return true;
+}
+
+QVariant MacPasteboard::convertToMime(const QString& mimetype, QList<QByteArray> data, QString flavor) {
+ if (data.count() > 1)
+ qWarning("QMime::convertToMime: Cannot handle multiple member data");
+ const QByteArray& firstData = data.first();
+ QVariant ret;
+ if (flavor == QLatin1String("public.utf8-plain-text")) {
+ ret = QString::fromUtf8(firstData);
+ } else if (flavor == QLatin1String("org.nspasteboard.ConcealedType")) {
+ ret = QString::fromUtf8(firstData);
+ } else if (flavor == QLatin1String("public.utf16-plain-text")) {
+ ret = QTextCodec::codecForName("UTF-16")->toUnicode(firstData);
+ } else {
+ qWarning("QMime::convertToMime: unhandled mimetype: %s",
+ qPrintable(mimetype));
+ }
+ return ret;
+}
+
+QList<QByteArray> MacPasteboard::convertFromMime(const QString&, QVariant data, QString flavor) {
+ QList<QByteArray> ret;
+ QString string = data.toString();
+ if (flavor == QLatin1String("public.utf8-plain-text"))
+ ret.append(string.toUtf8());
+ else if (flavor == QLatin1String("org.nspasteboard.ConcealedType"))
+ ret.append(string.toUtf8());
+ else if (flavor == QLatin1String("public.utf16-plain-text"))
+ ret.append(QTextCodec::codecForName("UTF-16")->fromUnicode(string));
+ return ret;
+}
+
diff --git a/src/core/MacPasteboard.h b/src/core/MacPasteboard.h
new file mode 100644
index 000000000..8461cbc5d
--- /dev/null
+++ b/src/core/MacPasteboard.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_MACPASTEBOARD_H
+#define KEEPASSXC_MACPASTEBOARD_H
+
+#include <QMacPasteboardMime>
+#include <QTextCodec>
+
+class MacPasteboard : public QMacPasteboardMime
+{
+public:
+ explicit MacPasteboard() : QMacPasteboardMime(MIME_ALL) {}
+
+ QString convertorName() override;
+ bool canConvert(const QString &mime, QString flav) override;
+ QString mimeFor(QString flav) override;
+ QString flavorFor(const QString &mime) override;
+ QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav) override;
+ QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav) override;
+};
+
+#endif // KEEPASSXC_MACPASTEBOARD_H
diff --git a/src/core/Metadata.cpp b/src/core/Metadata.cpp
index 6377c5846..9da2f30dc 100644
--- a/src/core/Metadata.cpp
+++ b/src/core/Metadata.cpp
@@ -27,6 +27,7 @@ const int Metadata::DefaultHistoryMaxSize = 6 * 1024 * 1024;
Metadata::Metadata(QObject* parent)
: QObject(parent)
+ , m_customData(new CustomData(this))
, m_updateDatetime(true)
{
m_data.generator = "KeePassXC";
@@ -41,7 +42,6 @@ Metadata::Metadata(QObject* parent)
m_data.protectPassword = true;
m_data.protectUrl = false;
m_data.protectNotes = false;
- // m_data.autoEnableVisualHiding = false;
QDateTime now = QDateTime::currentDateTimeUtc();
m_data.nameChanged = now;
@@ -50,6 +50,9 @@ Metadata::Metadata(QObject* parent)
m_recycleBinChanged = now;
m_entryTemplatesGroupChanged = now;
m_masterKeyChanged = now;
+ m_settingsChanged = now;
+
+ connect(m_customData, SIGNAL(modified()), this, SIGNAL(modified()));
}
template <class P, class V> bool Metadata::set(P& property, const V& value)
@@ -158,11 +161,6 @@ bool Metadata::protectNotes() const
return m_data.protectNotes;
}
-/*bool Metadata::autoEnableVisualHiding() const
-{
- return m_autoEnableVisualHiding;
-}*/
-
QImage Metadata::customIcon(const Uuid& uuid) const
{
return m_customIcons.value(uuid);
@@ -296,9 +294,14 @@ int Metadata::historyMaxSize() const
return m_data.historyMaxSize;
}
-QHash<QString, QString> Metadata::customFields() const
+CustomData* Metadata::customData()
{
- return m_customFields;
+ return m_customData;
+}
+
+const CustomData* Metadata::customData() const
+{
+ return m_customData;
}
void Metadata::setGenerator(const QString& value)
@@ -376,11 +379,6 @@ void Metadata::setProtectNotes(bool value)
set(m_data.protectNotes, value);
}
-/*void Metadata::setAutoEnableVisualHiding(bool value)
-{
- set(m_autoEnableVisualHiding, value);
-}*/
-
void Metadata::addCustomIcon(const Uuid& uuid, const QImage& icon)
{
Q_ASSERT(!uuid.isNull());
@@ -521,18 +519,13 @@ void Metadata::setHistoryMaxSize(int value)
set(m_data.historyMaxSize, value);
}
-void Metadata::addCustomField(const QString& key, const QString& value)
+QDateTime Metadata::settingsChanged() const
{
- Q_ASSERT(!m_customFields.contains(key));
-
- m_customFields.insert(key, value);
- emit modified();
+ return m_settingsChanged;
}
-void Metadata::removeCustomField(const QString& key)
+void Metadata::setSettingsChanged(const QDateTime& value)
{
- Q_ASSERT(m_customFields.contains(key));
-
- m_customFields.remove(key);
- emit modified();
+ Q_ASSERT(value.timeSpec() == Qt::UTC);
+ m_settingsChanged = value;
}
diff --git a/src/core/Metadata.h b/src/core/Metadata.h
index 2104868c2..a52cb0a78 100644
--- a/src/core/Metadata.h
+++ b/src/core/Metadata.h
@@ -27,6 +27,7 @@
#include <QPointer>
#include "core/Uuid.h"
+#include "core/CustomData.h"
class Database;
class Group;
@@ -60,7 +61,6 @@ public:
bool protectPassword;
bool protectUrl;
bool protectNotes;
- // bool autoEnableVisualHiding;
};
QString generator() const;
@@ -70,6 +70,7 @@ public:
QDateTime descriptionChanged() const;
QString defaultUserName() const;
QDateTime defaultUserNameChanged() const;
+ QDateTime settingsChanged() const;
int maintenanceHistoryDays() const;
QColor color() const;
bool protectTitle() const;
@@ -77,7 +78,6 @@ public:
bool protectPassword() const;
bool protectUrl() const;
bool protectNotes() const;
- // bool autoEnableVisualHiding() const;
QImage customIcon(const Uuid& uuid) const;
QPixmap customIconPixmap(const Uuid& uuid) const;
QPixmap customIconScaledPixmap(const Uuid& uuid) const;
@@ -98,7 +98,8 @@ public:
int masterKeyChangeForce() const;
int historyMaxItems() const;
int historyMaxSize() const;
- QHash<QString, QString> customFields() const;
+ CustomData* customData();
+ const CustomData* customData() const;
static const int DefaultHistoryMaxItems;
static const int DefaultHistoryMaxSize;
@@ -110,6 +111,7 @@ public:
void setDescriptionChanged(const QDateTime& value);
void setDefaultUserName(const QString& value);
void setDefaultUserNameChanged(const QDateTime& value);
+ void setSettingsChanged(const QDateTime& value);
void setMaintenanceHistoryDays(int value);
void setColor(const QColor& value);
void setProtectTitle(bool value);
@@ -117,7 +119,6 @@ public:
void setProtectPassword(bool value);
void setProtectUrl(bool value);
void setProtectNotes(bool value);
- // void setAutoEnableVisualHiding(bool value);
void addCustomIcon(const Uuid& uuid, const QImage& icon);
void addCustomIconScaled(const Uuid& uuid, const QImage& icon);
void removeCustomIcon(const Uuid& uuid);
@@ -135,8 +136,6 @@ public:
void setMasterKeyChangeForce(int value);
void setHistoryMaxItems(int value);
void setHistoryMaxSize(int value);
- void addCustomField(const QString& key, const QString& value);
- void removeCustomField(const QString& key);
void setUpdateDatetime(bool value);
/*
* Copy all attributes from other except:
@@ -144,6 +143,7 @@ public:
* - Master key changed date
* - Custom icons
* - Custom fields
+ * - Settings changed date
*/
void copyAttributesFrom(const Metadata* other);
@@ -173,8 +173,9 @@ private:
QPointer<Group> m_lastTopVisibleGroup;
QDateTime m_masterKeyChanged;
+ QDateTime m_settingsChanged;
- QHash<QString, QString> m_customFields;
+ QPointer<CustomData> m_customData;
bool m_updateDatetime;
};
diff --git a/src/core/PassphraseGenerator.cpp b/src/core/PassphraseGenerator.cpp
index 1af614795..88871eb8c 100644
--- a/src/core/PassphraseGenerator.cpp
+++ b/src/core/PassphraseGenerator.cpp
@@ -17,44 +17,45 @@
#include "PassphraseGenerator.h"
-#include <math.h>
+#include <cmath>
#include <QFile>
#include <QTextStream>
#include "crypto/Random.h"
#include "core/FilePath.h"
+const char* PassphraseGenerator::DefaultSeparator = " ";
+const char* PassphraseGenerator::DefaultWordList = "eff_large.wordlist";
+
PassphraseGenerator::PassphraseGenerator()
: m_wordCount(0)
- , m_separator(' ')
+ , m_separator(PassphraseGenerator::DefaultSeparator)
{
- const QString path = filePath()->dataPath("wordlists/eff_large.wordlist");
- setWordList(path);
}
-double PassphraseGenerator::calculateEntropy(QString passphrase)
+double PassphraseGenerator::calculateEntropy(const QString& passphrase)
{
Q_UNUSED(passphrase);
- if (m_wordlist.size() == 0) {
- return 0;
+ if (m_wordlist.isEmpty()) {
+ return 0.0;
}
- return log(m_wordlist.size()) / log(2.0) * m_wordCount;
+ return std::log2(m_wordlist.size()) * m_wordCount;
}
void PassphraseGenerator::setWordCount(int wordCount)
{
if (wordCount > 0) {
- m_wordCount = wordCount;
+ m_wordCount = wordCount;
} else {
// safe default if something goes wrong
- m_wordCount = 7;
+ m_wordCount = DefaultWordCount;
}
-
+
}
-void PassphraseGenerator::setWordList(QString path)
+void PassphraseGenerator::setWordList(const QString& path)
{
m_wordlist.clear();
@@ -75,7 +76,13 @@ void PassphraseGenerator::setWordList(QString path)
}
}
-void PassphraseGenerator::setWordSeparator(QString separator) {
+void PassphraseGenerator::setDefaultWordList()
+{
+ const QString path = filePath()->wordlistPath(PassphraseGenerator::DefaultWordList);
+ setWordList(path);
+}
+
+void PassphraseGenerator::setWordSeparator(const QString& separator) {
m_separator = separator;
}
@@ -89,8 +96,8 @@ QString PassphraseGenerator::generatePassphrase() const
}
QStringList words;
- for (int i = 0; i < m_wordCount; i++) {
- int wordIndex = randomGen()->randomUInt(m_wordlist.length());
+ for (int i = 0; i < m_wordCount; ++i) {
+ int wordIndex = randomGen()->randomUInt(static_cast<quint32>(m_wordlist.length()));
words.append(m_wordlist.at(wordIndex));
}
@@ -103,9 +110,5 @@ bool PassphraseGenerator::isValid() const
return false;
}
- if (m_wordlist.size() < 1000) {
- return false;
- }
-
- return true;
+ return m_wordlist.size() >= 1000;
}
diff --git a/src/core/PassphraseGenerator.h b/src/core/PassphraseGenerator.h
index 3be2d5836..a4e0e426b 100644
--- a/src/core/PassphraseGenerator.h
+++ b/src/core/PassphraseGenerator.h
@@ -26,21 +26,25 @@ class PassphraseGenerator
{
public:
PassphraseGenerator();
+ Q_DISABLE_COPY(PassphraseGenerator)
- double calculateEntropy(QString passphrase);
+ double calculateEntropy(const QString& passphrase);
void setWordCount(int wordCount);
- void setWordList(QString path);
- void setWordSeparator(QString separator);
+ void setWordList(const QString& path);
+ void setDefaultWordList();
+ void setWordSeparator(const QString& separator);
bool isValid() const;
QString generatePassphrase() const;
+ static constexpr int DefaultWordCount = 7;
+ static const char* DefaultSeparator;
+ static const char* DefaultWordList;
+
private:
int m_wordCount;
QString m_separator;
QVector<QString> m_wordlist;
-
- Q_DISABLE_COPY(PassphraseGenerator)
};
-#endif // KEEPASSX_PASSPHRASEGENERATOR_H \ No newline at end of file
+#endif // KEEPASSX_PASSPHRASEGENERATOR_H
diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp
index cdff204a0..740fb5467 100644
--- a/src/core/PasswordGenerator.cpp
+++ b/src/core/PasswordGenerator.cpp
@@ -19,7 +19,7 @@
#include "PasswordGenerator.h"
#include "crypto/Random.h"
-#include "zxcvbn/zxcvbn.h"
+#include <zxcvbn.h>
PasswordGenerator::PasswordGenerator()
: m_length(0)
@@ -35,11 +35,19 @@ double PasswordGenerator::calculateEntropy(QString password)
void PasswordGenerator::setLength(int length)
{
+ if (length <= 0) {
+ m_length = DefaultLength;
+ return;
+ }
m_length = length;
}
void PasswordGenerator::setCharClasses(const CharClasses& classes)
{
+ if (classes == 0) {
+ m_classes = DefaultCharset;
+ return;
+ }
m_classes = classes;
}
diff --git a/src/core/PasswordGenerator.h b/src/core/PasswordGenerator.h
index 5a5c7a3f6..15a0dcefe 100644
--- a/src/core/PasswordGenerator.h
+++ b/src/core/PasswordGenerator.h
@@ -34,14 +34,16 @@ public:
UpperLetters = 0x2,
Numbers = 0x4,
SpecialCharacters = 0x8,
- EASCII = 0x10
+ EASCII = 0x10,
+ DefaultCharset = LowerLetters | UpperLetters | Numbers
};
Q_DECLARE_FLAGS(CharClasses, CharClass)
enum GeneratorFlag
{
ExcludeLookAlike = 0x1,
- CharFromEveryGroup = 0x2
+ CharFromEveryGroup = 0x2,
+ DefaultFlags = ExcludeLookAlike | CharFromEveryGroup
};
Q_DECLARE_FLAGS(GeneratorFlags, GeneratorFlag)
@@ -58,6 +60,15 @@ public:
QString generatePassword() const;
int getbits() const;
+ static const int DefaultLength = 16;
+ static constexpr bool DefaultLower = (DefaultCharset & LowerLetters) != 0;
+ static constexpr bool DefaultUpper = (DefaultCharset & UpperLetters) != 0;
+ static constexpr bool DefaultNumbers = (DefaultCharset & Numbers) != 0;
+ static constexpr bool DefaultSpecial = (DefaultCharset & SpecialCharacters) != 0;
+ static constexpr bool DefaultEASCII = (DefaultCharset & EASCII) != 0;
+ static constexpr bool DefaultLookAlike = (DefaultFlags & ExcludeLookAlike) != 0;
+ static constexpr bool DefaultFromEveryGroup = (DefaultFlags & CharFromEveryGroup) != 0;
+
private:
QVector<PasswordGroup> passwordGroups() const;
int numCharClasses() const;
diff --git a/src/core/ScreenLockListenerDBus.cpp b/src/core/ScreenLockListenerDBus.cpp
index 1976b47ea..03eed58ad 100644
--- a/src/core/ScreenLockListenerDBus.cpp
+++ b/src/core/ScreenLockListenerDBus.cpp
@@ -20,6 +20,7 @@
#include <QDBusConnection>
#include <QDBusInterface>
#include <QDBusReply>
+#include <QProcessEnvironment>
ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent):
ScreenLockListenerPrivate(parent)
@@ -34,7 +35,15 @@ ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent):
"ActiveChanged", // signal name
this, //receiver
SLOT(freedesktopScreenSaver(bool)));
-
+
+ sessionBus.connect(
+ "org.gnome.ScreenSaver", // service
+ "/org/gnome/ScreenSaver", // path
+ "org.gnome.ScreenSaver", // interface
+ "ActiveChanged", // signal name
+ this, //receiver
+ SLOT(freedesktopScreenSaver(bool)));
+
sessionBus.connect(
"org.gnome.SessionManager", // service
"/org/gnome/SessionManager/Presence", // path
@@ -51,6 +60,15 @@ ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent):
this, //receiver
SLOT(logindPrepareForSleep(bool)));
+ QString sessionId = QProcessEnvironment::systemEnvironment().value("XDG_SESSION_ID");
+ systemBus.connect(
+ "", // service
+ QString("/org/freedesktop/login1/session/") + sessionId, // path
+ "org.freedesktop.login1.Session", // interface
+ "Lock", // signal name
+ this, //receiver
+ SLOT(unityLocked()));
+
sessionBus.connect(
"com.canonical.Unity", // service
"/com/canonical/Unity/Session", // path
@@ -84,4 +102,4 @@ void ScreenLockListenerDBus::freedesktopScreenSaver(bool status)
if (status) {
emit screenLocked();
}
-} \ No newline at end of file
+}
diff --git a/src/core/ScreenLockListenerPrivate.cpp b/src/core/ScreenLockListenerPrivate.cpp
index 36ee301f2..b36b9a33a 100644
--- a/src/core/ScreenLockListenerPrivate.cpp
+++ b/src/core/ScreenLockListenerPrivate.cpp
@@ -16,13 +16,11 @@
*/
#include "ScreenLockListenerPrivate.h"
-#if defined(Q_OS_OSX)
+#if defined(Q_OS_MAC)
#include "ScreenLockListenerMac.h"
-#endif
-#if defined(Q_OS_LINUX)
+#elif defined(Q_OS_UNIX)
#include "ScreenLockListenerDBus.h"
-#endif
-#if defined(Q_OS_WIN)
+#elif defined(Q_OS_WIN)
#include "ScreenLockListenerWin.h"
#endif
@@ -33,10 +31,10 @@ ScreenLockListenerPrivate::ScreenLockListenerPrivate(QWidget* parent)
ScreenLockListenerPrivate* ScreenLockListenerPrivate::instance(QWidget* parent)
{
-#if defined(Q_OS_OSX)
+#if defined(Q_OS_MAC)
Q_UNUSED(parent);
return ScreenLockListenerMac::instance();
-#elif defined(Q_OS_LINUX)
+#elif defined(Q_OS_UNIX)
return new ScreenLockListenerDBus(parent);
#elif defined(Q_OS_WIN)
return new ScreenLockListenerWin(parent);
diff --git a/src/core/ToDbExporter.cpp b/src/core/ToDbExporter.cpp
deleted file mode 100644
index 1f76fb744..000000000
--- a/src/core/ToDbExporter.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ToDbExporter.h"
-#include "core/Database.h"
-#include "core/Group.h"
-#include "core/Metadata.h"
-
-Database* ToDbExporter::exportGroup(Group* group)
-{
- Database* oldDb = group->database();
- Q_ASSERT(oldDb);
-
- Database* db = new Database();
- Group* clonedGroup = group->clone(Entry::CloneNewUuid | Entry::CloneIncludeHistory);
- clonedGroup->setParent(db->rootGroup());
-
- QSet<Uuid> customIcons = group->customIconsRecursive();
- db->metadata()->copyCustomIcons(customIcons, oldDb->metadata());
-
- db->copyAttributesFrom(oldDb);
-
- return db;
-}
diff --git a/src/core/Translator.cpp b/src/core/Translator.cpp
index 713727ea1..94aed3adf 100644
--- a/src/core/Translator.cpp
+++ b/src/core/Translator.cpp
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -21,33 +22,48 @@
#include <QDir>
#include <QLibraryInfo>
#include <QLocale>
-#include <QRegExp>
#include <QTranslator>
+#include <QRegularExpression>
#include "config-keepassx.h"
#include "core/Config.h"
#include "core/FilePath.h"
-void Translator::installTranslator()
+/**
+ * Install all KeePassXC and Qt translators.
+ */
+void Translator::installTranslators()
{
QString language = config()->get("GUI/Language").toString();
if (language == "system" || language.isEmpty()) {
language = QLocale::system().name();
}
-
- if (!installTranslator(language)) {
- // English fallback still needs translations for plurals
- if (!installTranslator("en_plurals")) {
- qWarning("Couldn't load translations.");
- }
+ if (language == "en") {
+ // use actual English translation instead of the English locale source language
+ language = "en_US";
}
- installQtTranslator(language);
+ const QStringList paths = {
+#ifdef QT_DEBUG
+ QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR),
+#endif
+ filePath()->dataPath("translations")
+ };
- availableLanguages();
+ bool translationsLoaded = false;
+ for (const QString& path : paths) {
+ translationsLoaded |= installTranslator(language, path) || installTranslator("en_US", path);
+ }
+ if (!translationsLoaded) {
+ // couldn't load configured language or fallback
+ qWarning("Couldn't load translations.");
+ }
}
-QList<QPair<QString, QString> > Translator::availableLanguages()
+/**
+ * @return list of pairs of available language codes and names
+ */
+QList<QPair<QString, QString>> Translator::availableLanguages()
{
const QStringList paths = {
#ifdef QT_DEBUG
@@ -59,18 +75,23 @@ QList<QPair<QString, QString> > Translator::availableLanguages()
QList<QPair<QString, QString> > languages;
languages.append(QPair<QString, QString>("system", "System default"));
- QRegExp regExp("keepassx_([a-zA-Z_]+)\\.qm", Qt::CaseInsensitive, QRegExp::RegExp2);
+ QRegularExpression regExp("^keepassx_([a-zA-Z_]+)\\.qm$", QRegularExpression::CaseInsensitiveOption);
for (const QString& path : paths) {
const QStringList fileList = QDir(path).entryList();
for (const QString& filename : fileList) {
- if (regExp.exactMatch(filename)) {
- QString langcode = regExp.cap(1);
- if (langcode == "en_plurals") {
- langcode = "en";
+ QRegularExpressionMatch match = regExp.match(filename);
+ if (match.hasMatch()) {
+ QString langcode = match.captured(1);
+ if (langcode == "en") {
+ continue;
}
QLocale locale(langcode);
QString languageStr = QLocale::languageToString(locale.language());
+ if (langcode == "la") {
+ // langcode "la" (Latin) is translated into "C" by QLocale::languageToString()
+ languageStr = "Latin";
+ }
QString countryStr;
if (langcode.contains("_")) {
countryStr = QString(" (%1)").arg(QLocale::countryToString(locale.country()));
@@ -85,46 +106,37 @@ QList<QPair<QString, QString> > Translator::availableLanguages()
return languages;
}
-bool Translator::installTranslator(const QString& language)
-{
- const QStringList paths = {
-#ifdef QT_DEBUG
- QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR),
-#endif
- filePath()->dataPath("translations")
- };
-
- for (const QString& path : paths) {
- if (installTranslator(language, path)) {
- return true;
- }
- }
-
- return false;
-}
-
+/**
+ * Install KeePassXC translator.
+ *
+ * @param language translator language
+ * @param path local search path
+ * @return true on success
+ */
bool Translator::installTranslator(const QString& language, const QString& path)
{
- QTranslator* translator = new QTranslator(qApp);
- if (translator->load(QString("keepassx_").append(language), path)) {
- QCoreApplication::installTranslator(translator);
- return true;
- }
- else {
- delete translator;
- return false;
+ QScopedPointer<QTranslator> translator(new QTranslator(qApp));
+ if (translator->load(QString("keepassx_%1").arg(language), path)) {
+ return QCoreApplication::installTranslator(translator.take());
}
+ return false;
}
-bool Translator::installQtTranslator(const QString& language)
+/**
+ * Install Qt5 base translator from the specified local search path or the default system path
+ * if no qtbase_* translations were found at the local path.
+ *
+ * @param language translator language
+ * @param path local search path
+ * @return true on success
+ */
+bool Translator::installQtTranslator(const QString& language, const QString& path)
{
- QTranslator* qtTranslator = new QTranslator(qApp);
- if (qtTranslator->load(QString("%1/qtbase_%2").arg(QLibraryInfo::location(QLibraryInfo::TranslationsPath), language))) {
- QCoreApplication::installTranslator(qtTranslator);
- return true;
- }
- else {
- delete qtTranslator;
- return false;
+ QScopedPointer<QTranslator> qtTranslator(new QTranslator(qApp));
+ if (qtTranslator->load(QString("qtbase_%1").arg(language), path)) {
+ return QCoreApplication::installTranslator(qtTranslator.take());
+ } else if (qtTranslator->load(QString("qtbase_%1").arg(language), QLibraryInfo::location(QLibraryInfo::TranslationsPath))) {
+ return QCoreApplication::installTranslator(qtTranslator.take());
}
+ return false;
}
diff --git a/src/core/Translator.h b/src/core/Translator.h
index 4bc4fca3e..cf62f48e4 100644
--- a/src/core/Translator.h
+++ b/src/core/Translator.h
@@ -24,13 +24,12 @@
class Translator
{
public:
- static void installTranslator();
- static QList<QPair<QString, QString> > availableLanguages();
+ static void installTranslators();
+ static QList<QPair<QString, QString>> availableLanguages();
private:
- static bool installTranslator(const QString& language);
static bool installTranslator(const QString& language, const QString& path);
- static bool installQtTranslator(const QString& language);
+ static bool installQtTranslator(const QString& language, const QString& path);
};
#endif // KEEPASSX_TRANSLATOR_H
diff --git a/src/crypto/Crypto.cpp b/src/crypto/Crypto.cpp
index d00be720b..7ba78a6b3 100644
--- a/src/crypto/Crypto.cpp
+++ b/src/crypto/Crypto.cpp
@@ -95,18 +95,28 @@ bool Crypto::checkAlgorithms()
qWarning("Crypto::checkAlgorithms: %s", qPrintable(m_errorStr));
return false;
}
+ if (gcry_cipher_algo_info(GCRY_CIPHER_CHACHA20, GCRYCTL_TEST_ALGO, nullptr, nullptr) != 0) {
+ m_errorStr = "GCRY_CIPHER_CHACHA20 not found.";
+ qWarning("Crypto::checkAlgorithms: %s", qPrintable(m_errorStr));
+ return false;
+ }
if (gcry_md_test_algo(GCRY_MD_SHA256) != 0) {
m_errorStr = "GCRY_MD_SHA256 not found.";
qWarning("Crypto::checkAlgorithms: %s", qPrintable(m_errorStr));
return false;
}
+ if (gcry_md_test_algo(GCRY_MD_SHA512) != 0) {
+ m_errorStr = "GCRY_MD_SHA512 not found.";
+ qWarning("Crypto::checkAlgorithms: %s", qPrintable(m_errorStr));
+ return false;
+ }
return true;
}
bool Crypto::selfTest()
{
- return testSha256() && testAes256Cbc() && testAes256Ecb() && testTwofish() && testSalsa20();
+ return testSha256() && testSha512() && testAes256Cbc() && testAes256Ecb() && testTwofish() && testSalsa20() && testChaCha20();
}
void Crypto::raiseError(const QString& str)
@@ -128,6 +138,19 @@ bool Crypto::testSha256()
return true;
}
+bool Crypto::testSha512()
+{
+ QByteArray sha512Test = CryptoHash::hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
+ CryptoHash::Sha512);
+
+ if (sha512Test != QByteArray::fromHex("204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445")) {
+ raiseError("SHA-512 mismatch.");
+ return false;
+ }
+
+ return true;
+}
+
bool Crypto::testAes256Cbc()
{
QByteArray key = QByteArray::fromHex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4");
@@ -285,3 +308,30 @@ bool Crypto::testSalsa20()
return true;
}
+
+bool Crypto::testChaCha20() {
+ QByteArray chacha20Key = QByteArray::fromHex("0000000000000000000000000000000000000000000000000000000000000000");
+ QByteArray chacha20iv = QByteArray::fromHex("0000000000000000");
+ QByteArray chacha20Plain = QByteArray::fromHex("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
+ QByteArray chacha20Cipher = QByteArray::fromHex("76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586");
+ bool ok;
+
+ SymmetricCipher chacha20Stream(SymmetricCipher::ChaCha20, SymmetricCipher::Stream,
+ SymmetricCipher::Encrypt);
+ if (!chacha20Stream.init(chacha20Key, chacha20iv)) {
+ raiseError(chacha20Stream.errorString());
+ return false;
+ }
+
+ QByteArray chacha20Processed = chacha20Stream.process(chacha20Plain, &ok);
+ if (!ok) {
+ raiseError(chacha20Stream.errorString());
+ return false;
+ }
+ if (chacha20Processed != chacha20Cipher) {
+ raiseError("ChaCha20 stream cipher mismatch.");
+ return false;
+ }
+
+ return true;
+} \ No newline at end of file
diff --git a/src/crypto/Crypto.h b/src/crypto/Crypto.h
index 0ce2903c6..379068eb4 100644
--- a/src/crypto/Crypto.h
+++ b/src/crypto/Crypto.h
@@ -35,10 +35,12 @@ private:
static bool selfTest();
static void raiseError(const QString& str);
static bool testSha256();
+ static bool testSha512();
static bool testAes256Cbc();
static bool testAes256Ecb();
static bool testTwofish();
static bool testSalsa20();
+ static bool testChaCha20();
static bool m_initalized;
static QString m_errorStr;
diff --git a/src/crypto/CryptoHash.cpp b/src/crypto/CryptoHash.cpp
index d116451fc..12c6bf791 100644
--- a/src/crypto/CryptoHash.cpp
+++ b/src/crypto/CryptoHash.cpp
@@ -28,28 +28,40 @@ public:
int hashLen;
};
-CryptoHash::CryptoHash(CryptoHash::Algorithm algo)
+CryptoHash::CryptoHash(Algorithm algo, bool hmac)
: d_ptr(new CryptoHashPrivate())
{
Q_D(CryptoHash);
Q_ASSERT(Crypto::initalized());
- int algoGcrypt;
+ int algoGcrypt = -1;
+ unsigned int flagsGcrypt = GCRY_MD_FLAG_SECURE;
switch (algo) {
case CryptoHash::Sha256:
algoGcrypt = GCRY_MD_SHA256;
break;
+ case CryptoHash::Sha512:
+ algoGcrypt = GCRY_MD_SHA512;
+ break;
+
default:
Q_ASSERT(false);
break;
}
- gcry_error_t error = gcry_md_open(&d->ctx, algoGcrypt, 0);
+ if (hmac) {
+ flagsGcrypt |= GCRY_MD_FLAG_HMAC;
+ }
+
+ gcry_error_t error = gcry_md_open(&d->ctx, algoGcrypt, flagsGcrypt);
+ if (error != GPG_ERR_NO_ERROR) {
+ qWarning("Gcrypt error (ctor): %s", gcry_strerror(error));
+ qWarning("Gcrypt error (ctor): %s", gcry_strsource(error));
+ }
Q_ASSERT(error == 0); // TODO: error handling
- Q_UNUSED(error);
d->hashLen = gcry_md_get_algo_dlen(algoGcrypt);
}
@@ -71,7 +83,19 @@ void CryptoHash::addData(const QByteArray& data)
return;
}
- gcry_md_write(d->ctx, data.constData(), data.size());
+ gcry_md_write(d->ctx, data.constData(), static_cast<size_t>(data.size()));
+}
+
+void CryptoHash::setKey(const QByteArray& data)
+{
+ Q_D(CryptoHash);
+
+ gcry_error_t error = gcry_md_setkey(d->ctx, data.constData(), static_cast<size_t>(data.size()));
+ if (error) {
+ qWarning("Gcrypt error (setKey): %s", gcry_strerror(error));
+ qWarning("Gcrypt error (setKey): %s", gcry_strsource(error));
+ }
+ Q_ASSERT(error == 0);
}
void CryptoHash::reset()
@@ -85,14 +109,23 @@ QByteArray CryptoHash::result() const
{
Q_D(const CryptoHash);
- const char* result = reinterpret_cast<const char*>(gcry_md_read(d->ctx, 0));
+ const auto result = reinterpret_cast<const char*>(gcry_md_read(d->ctx, 0));
return QByteArray(result, d->hashLen);
}
-QByteArray CryptoHash::hash(const QByteArray& data, CryptoHash::Algorithm algo)
+QByteArray CryptoHash::hash(const QByteArray& data, Algorithm algo)
{
// replace with gcry_md_hash_buffer()?
CryptoHash cryptoHash(algo);
cryptoHash.addData(data);
return cryptoHash.result();
}
+
+QByteArray CryptoHash::hmac(const QByteArray& data, const QByteArray& key, Algorithm algo)
+{
+ // replace with gcry_md_hash_buffer()?
+ CryptoHash cryptoHash(algo, true);
+ cryptoHash.setKey(key);
+ cryptoHash.addData(data);
+ return cryptoHash.result();
+}
diff --git a/src/crypto/CryptoHash.h b/src/crypto/CryptoHash.h
index 80df056f1..bd312121a 100644
--- a/src/crypto/CryptoHash.h
+++ b/src/crypto/CryptoHash.h
@@ -27,16 +27,19 @@ class CryptoHash
public:
enum Algorithm
{
- Sha256
+ Sha256,
+ Sha512
};
- explicit CryptoHash(CryptoHash::Algorithm algo);
+ explicit CryptoHash(Algorithm algo, bool hmac = false);
~CryptoHash();
void addData(const QByteArray& data);
void reset();
QByteArray result() const;
+ void setKey(const QByteArray& data);
- static QByteArray hash(const QByteArray& data, CryptoHash::Algorithm algo);
+ static QByteArray hash(const QByteArray& data, Algorithm algo);
+ static QByteArray hmac(const QByteArray& data, const QByteArray& key, Algorithm algo);
private:
CryptoHashPrivate* const d_ptr;
diff --git a/src/crypto/SymmetricCipher.cpp b/src/crypto/SymmetricCipher.cpp
index 98d481969..1ba42a537 100644
--- a/src/crypto/SymmetricCipher.cpp
+++ b/src/crypto/SymmetricCipher.cpp
@@ -20,10 +20,10 @@
#include "config-keepassx.h"
#include "crypto/SymmetricCipherGcrypt.h"
-SymmetricCipher::SymmetricCipher(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode,
- SymmetricCipher::Direction direction)
+SymmetricCipher::SymmetricCipher(Algorithm algo, Mode mode, Direction direction)
: m_backend(createBackend(algo, mode, direction))
, m_initialized(false)
+ , m_algo(algo)
{
}
@@ -54,13 +54,14 @@ bool SymmetricCipher::isInitalized() const
return m_initialized;
}
-SymmetricCipherBackend* SymmetricCipher::createBackend(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode,
- SymmetricCipher::Direction direction)
+SymmetricCipherBackend* SymmetricCipher::createBackend(Algorithm algo, Mode mode, Direction direction)
{
switch (algo) {
- case SymmetricCipher::Aes256:
- case SymmetricCipher::Twofish:
- case SymmetricCipher::Salsa20:
+ case Aes128:
+ case Aes256:
+ case Twofish:
+ case Salsa20:
+ case ChaCha20:
return new SymmetricCipherGcrypt(algo, mode, direction);
default:
@@ -74,6 +75,11 @@ bool SymmetricCipher::reset()
return m_backend->reset();
}
+int SymmetricCipher::keySize() const
+{
+ return m_backend->keySize();
+}
+
int SymmetricCipher::blockSize() const
{
return m_backend->blockSize();
@@ -87,19 +93,62 @@ QString SymmetricCipher::errorString() const
SymmetricCipher::Algorithm SymmetricCipher::cipherToAlgorithm(Uuid cipher)
{
if (cipher == KeePass2::CIPHER_AES) {
- return SymmetricCipher::Aes256;
- }
- else {
- return SymmetricCipher::Twofish;
+ return Aes256;
+ } else if (cipher == KeePass2::CIPHER_CHACHA20) {
+ return ChaCha20;
+ } else if (cipher == KeePass2::CIPHER_TWOFISH) {
+ return Twofish;
}
+
+ qWarning("SymmetricCipher::cipherToAlgorithm: invalid Uuid %s", cipher.toByteArray().toHex().data());
+ return InvalidAlgorithm;
}
-Uuid SymmetricCipher::algorithmToCipher(SymmetricCipher::Algorithm algo)
+Uuid SymmetricCipher::algorithmToCipher(Algorithm algo)
{
switch (algo) {
- case SymmetricCipher::Aes256:
+ case Aes256:
return KeePass2::CIPHER_AES;
- default:
+ case ChaCha20:
+ return KeePass2::CIPHER_CHACHA20;
+ case Twofish:
return KeePass2::CIPHER_TWOFISH;
+ default:
+ qWarning("SymmetricCipher::algorithmToCipher: invalid algorithm %d", algo);
+ return Uuid();
+ }
+}
+
+int SymmetricCipher::algorithmIvSize(Algorithm algo)
+{
+ switch (algo) {
+ case ChaCha20:
+ return 12;
+ case Aes256:
+ return 16;
+ case Twofish:
+ return 16;
+ default:
+ qWarning("SymmetricCipher::algorithmIvSize: invalid algorithm %d", algo);
+ return -1;
}
}
+
+SymmetricCipher::Mode SymmetricCipher::algorithmMode(Algorithm algo)
+{
+ switch (algo) {
+ case ChaCha20:
+ return Stream;
+ case Aes256:
+ case Twofish:
+ return Cbc;
+ default:
+ qWarning("SymmetricCipher::algorithmMode: invalid algorithm %d", algo);
+ return InvalidMode;
+ }
+}
+
+SymmetricCipher::Algorithm SymmetricCipher::algorithm() const
+{
+ return m_algo;
+}
diff --git a/src/crypto/SymmetricCipher.h b/src/crypto/SymmetricCipher.h
index b85c58b7c..0c683d224 100644
--- a/src/crypto/SymmetricCipher.h
+++ b/src/crypto/SymmetricCipher.h
@@ -24,22 +24,28 @@
#include "crypto/SymmetricCipherBackend.h"
#include "format/KeePass2.h"
+#include "core/Uuid.h"
class SymmetricCipher
{
public:
enum Algorithm
{
+ Aes128,
Aes256,
Twofish,
- Salsa20
+ Salsa20,
+ ChaCha20,
+ InvalidAlgorithm = -1
};
enum Mode
{
Cbc,
+ Ctr,
Ecb,
- Stream
+ Stream,
+ InvalidMode = -1
};
enum Direction
@@ -48,41 +54,46 @@ public:
Encrypt
};
- SymmetricCipher(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode,
- SymmetricCipher::Direction direction);
+ SymmetricCipher(Algorithm algo, Mode mode, Direction direction);
~SymmetricCipher();
+ Q_DISABLE_COPY(SymmetricCipher)
bool init(const QByteArray& key, const QByteArray& iv);
bool isInitalized() const;
- inline QByteArray process(const QByteArray& data, bool* ok) {
+ inline QByteArray process(const QByteArray& data, bool* ok)
+ {
return m_backend->process(data, ok);
}
- Q_REQUIRED_RESULT inline bool processInPlace(QByteArray& data) {
+ Q_REQUIRED_RESULT inline bool processInPlace(QByteArray& data)
+ {
return m_backend->processInPlace(data);
}
- Q_REQUIRED_RESULT inline bool processInPlace(QByteArray& data, quint64 rounds) {
+ Q_REQUIRED_RESULT inline bool processInPlace(QByteArray& data, quint64 rounds)
+ {
Q_ASSERT(rounds > 0);
return m_backend->processInPlace(data, rounds);
}
bool reset();
+ int keySize() const;
int blockSize() const;
QString errorString() const;
+ Algorithm algorithm() const;
- static SymmetricCipher::Algorithm cipherToAlgorithm(Uuid cipher);
- static Uuid algorithmToCipher(SymmetricCipher::Algorithm algo);
+ static Algorithm cipherToAlgorithm(Uuid cipher);
+ static Uuid algorithmToCipher(Algorithm algo);
+ static int algorithmIvSize(Algorithm algo);
+ static Mode algorithmMode(Algorithm algo);
private:
- static SymmetricCipherBackend* createBackend(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode,
- SymmetricCipher::Direction direction);
+ static SymmetricCipherBackend* createBackend(Algorithm algo, Mode mode, Direction direction);
const QScopedPointer<SymmetricCipherBackend> m_backend;
bool m_initialized;
-
- Q_DISABLE_COPY(SymmetricCipher)
+ Algorithm m_algo;
};
#endif // KEEPASSX_SYMMETRICCIPHER_H
diff --git a/src/crypto/SymmetricCipherBackend.h b/src/crypto/SymmetricCipherBackend.h
index 78ec60c60..dd493d2df 100644
--- a/src/crypto/SymmetricCipherBackend.h
+++ b/src/crypto/SymmetricCipherBackend.h
@@ -33,6 +33,7 @@ public:
Q_REQUIRED_RESULT virtual bool processInPlace(QByteArray& data, quint64 rounds) = 0;
virtual bool reset() = 0;
+ virtual int keySize() const = 0;
virtual int blockSize() const = 0;
virtual QString errorString() const = 0;
diff --git a/src/crypto/SymmetricCipherGcrypt.cpp b/src/crypto/SymmetricCipherGcrypt.cpp
index 1805afb0b..97d53cd83 100644
--- a/src/crypto/SymmetricCipherGcrypt.cpp
+++ b/src/crypto/SymmetricCipherGcrypt.cpp
@@ -26,7 +26,6 @@ SymmetricCipherGcrypt::SymmetricCipherGcrypt(SymmetricCipher::Algorithm algo, Sy
, m_algo(gcryptAlgo(algo))
, m_mode(gcryptMode(mode))
, m_direction(direction)
- , m_blockSize(-1)
{
}
@@ -38,6 +37,9 @@ SymmetricCipherGcrypt::~SymmetricCipherGcrypt()
int SymmetricCipherGcrypt::gcryptAlgo(SymmetricCipher::Algorithm algo)
{
switch (algo) {
+ case SymmetricCipher::Aes128:
+ return GCRY_CIPHER_AES128;
+
case SymmetricCipher::Aes256:
return GCRY_CIPHER_AES256;
@@ -47,6 +49,9 @@ int SymmetricCipherGcrypt::gcryptAlgo(SymmetricCipher::Algorithm algo)
case SymmetricCipher::Salsa20:
return GCRY_CIPHER_SALSA20;
+ case SymmetricCipher::ChaCha20:
+ return GCRY_CIPHER_CHACHA20;
+
default:
Q_ASSERT(false);
return -1;
@@ -62,6 +67,9 @@ int SymmetricCipherGcrypt::gcryptMode(SymmetricCipher::Mode mode)
case SymmetricCipher::Cbc:
return GCRY_CIPHER_MODE_CBC;
+ case SymmetricCipher::Ctr:
+ return GCRY_CIPHER_MODE_CTR;
+
case SymmetricCipher::Stream:
return GCRY_CIPHER_MODE_STREAM;
@@ -94,14 +102,6 @@ bool SymmetricCipherGcrypt::init()
return false;
}
- size_t blockSizeT;
- error = gcry_cipher_algo_info(m_algo, GCRYCTL_GET_BLKLEN, nullptr, &blockSizeT);
- if (error != 0) {
- setErrorString(error);
- return false;
- }
-
- m_blockSize = blockSizeT;
return true;
}
@@ -121,7 +121,13 @@ bool SymmetricCipherGcrypt::setKey(const QByteArray& key)
bool SymmetricCipherGcrypt::setIv(const QByteArray& iv)
{
m_iv = iv;
- gcry_error_t error = gcry_cipher_setiv(m_ctx, m_iv.constData(), m_iv.size());
+ gcry_error_t error;
+
+ if (m_mode == GCRY_CIPHER_MODE_CTR) {
+ error = gcry_cipher_setctr(m_ctx, m_iv.constData(), m_iv.size());
+ } else {
+ error = gcry_cipher_setiv(m_ctx, m_iv.constData(), m_iv.size());
+ }
if (error != 0) {
setErrorString(error);
@@ -142,8 +148,7 @@ QByteArray SymmetricCipherGcrypt::process(const QByteArray& data, bool* ok)
if (m_direction == SymmetricCipher::Decrypt) {
error = gcry_cipher_decrypt(m_ctx, result.data(), data.size(), data.constData(), data.size());
- }
- else {
+ } else {
error = gcry_cipher_encrypt(m_ctx, result.data(), data.size(), data.constData(), data.size());
}
@@ -151,7 +156,7 @@ QByteArray SymmetricCipherGcrypt::process(const QByteArray& data, bool* ok)
setErrorString(error);
*ok = false;
} else {
- *ok = true;
+ *ok = true;
}
return result;
@@ -165,8 +170,7 @@ bool SymmetricCipherGcrypt::processInPlace(QByteArray& data)
if (m_direction == SymmetricCipher::Decrypt) {
error = gcry_cipher_decrypt(m_ctx, data.data(), data.size(), nullptr, 0);
- }
- else {
+ } else {
error = gcry_cipher_encrypt(m_ctx, data.data(), data.size(), nullptr, 0);
}
@@ -196,8 +200,7 @@ bool SymmetricCipherGcrypt::processInPlace(QByteArray& data, quint64 rounds)
return false;
}
}
- }
- else {
+ } else {
for (quint64 i = 0; i != rounds; ++i) {
error = gcry_cipher_encrypt(m_ctx, rawData, size, nullptr, 0);
@@ -230,9 +233,28 @@ bool SymmetricCipherGcrypt::reset()
return true;
}
+int SymmetricCipherGcrypt::keySize() const
+{
+ gcry_error_t error;
+ size_t keySizeT;
+
+ error = gcry_cipher_algo_info(m_algo, GCRYCTL_GET_KEYLEN, nullptr, &keySizeT);
+ if (error != 0)
+ return -1;
+
+ return keySizeT;
+}
+
int SymmetricCipherGcrypt::blockSize() const
{
- return m_blockSize;
+ gcry_error_t error;
+ size_t blockSizeT;
+
+ error = gcry_cipher_algo_info(m_algo, GCRYCTL_GET_BLKLEN, nullptr, &blockSizeT);
+ if (error != 0)
+ return -1;
+
+ return blockSizeT;
}
QString SymmetricCipherGcrypt::errorString() const
diff --git a/src/crypto/SymmetricCipherGcrypt.h b/src/crypto/SymmetricCipherGcrypt.h
index d3ad8d15b..2436c3be1 100644
--- a/src/crypto/SymmetricCipherGcrypt.h
+++ b/src/crypto/SymmetricCipherGcrypt.h
@@ -23,7 +23,7 @@
#include "crypto/SymmetricCipher.h"
#include "crypto/SymmetricCipherBackend.h"
-class SymmetricCipherGcrypt : public SymmetricCipherBackend
+class SymmetricCipherGcrypt: public SymmetricCipherBackend
{
public:
SymmetricCipherGcrypt(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode,
@@ -39,6 +39,7 @@ public:
Q_REQUIRED_RESULT bool processInPlace(QByteArray& data, quint64 rounds);
bool reset();
+ int keySize() const;
int blockSize() const;
QString errorString() const;
@@ -54,7 +55,6 @@ private:
const SymmetricCipher::Direction m_direction;
QByteArray m_key;
QByteArray m_iv;
- int m_blockSize;
QString m_errorString;
};
diff --git a/src/crypto/SymmetricCipherSalsa20.cpp b/src/crypto/SymmetricCipherSalsa20.cpp
deleted file mode 100644
index 7e477656a..000000000
--- a/src/crypto/SymmetricCipherSalsa20.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-* Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 2 or (at your option)
-* version 3 of the License.
-*
-* 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 General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "SymmetricCipherSalsa20.h"
-
-SymmetricCipherSalsa20::SymmetricCipherSalsa20(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode,
- SymmetricCipher::Direction direction)
-{
- Q_ASSERT(algo == SymmetricCipher::Salsa20);
- Q_UNUSED(algo);
-
- Q_ASSERT(mode == SymmetricCipher::Stream);
- Q_UNUSED(mode);
-
- Q_UNUSED(direction);
-}
-
-SymmetricCipherSalsa20::~SymmetricCipherSalsa20()
-{
-}
-
-bool SymmetricCipherSalsa20::init()
-{
- return true;
-}
-
-bool SymmetricCipherSalsa20::setKey(const QByteArray& key)
-{
- Q_ASSERT((key.size() == 16) || (key.size() == 32));
-
- m_key = key;
- ECRYPT_keysetup(&m_ctx, reinterpret_cast<const u8*>(m_key.constData()), m_key.size()*8, 64);
-
- return true;
-}
-
-bool SymmetricCipherSalsa20::setIv(const QByteArray& iv)
-{
- Q_ASSERT(iv.size() == 8);
-
- m_iv = iv;
- ECRYPT_ivsetup(&m_ctx, reinterpret_cast<const u8*>(m_iv.constData()));
-
- return true;
-}
-
-QByteArray SymmetricCipherSalsa20::process(const QByteArray& data, bool* ok)
-{
- Q_ASSERT((data.size() < blockSize()) || ((data.size() % blockSize()) == 0));
-
- QByteArray result;
- result.resize(data.size());
-
- ECRYPT_encrypt_bytes(&m_ctx, reinterpret_cast<const u8*>(data.constData()),
- reinterpret_cast<u8*>(result.data()), data.size());
-
- *ok = true;
- return result;
-}
-
-bool SymmetricCipherSalsa20::processInPlace(QByteArray& data)
-{
- Q_ASSERT((data.size() < blockSize()) || ((data.size() % blockSize()) == 0));
-
- ECRYPT_encrypt_bytes(&m_ctx, reinterpret_cast<const u8*>(data.constData()),
- reinterpret_cast<u8*>(data.data()), data.size());
-
- return true;
-}
-
-bool SymmetricCipherSalsa20::processInPlace(QByteArray& data, quint64 rounds)
-{
- Q_ASSERT((data.size() < blockSize()) || ((data.size() % blockSize()) == 0));
-
- for (quint64 i = 0; i != rounds; ++i) {
- ECRYPT_encrypt_bytes(&m_ctx, reinterpret_cast<const u8*>(data.constData()),
- reinterpret_cast<u8*>(data.data()), data.size());
- }
-
- return true;
-}
-
-bool SymmetricCipherSalsa20::reset()
-{
- ECRYPT_ivsetup(&m_ctx, reinterpret_cast<const u8*>(m_iv.constData()));
-
- return true;
-}
-
-int SymmetricCipherSalsa20::blockSize() const
-{
- return 64;
-}
-
-QString SymmetricCipherSalsa20::errorString() const
-{
- return QString();
-}
diff --git a/src/crypto/SymmetricCipherSalsa20.h b/src/crypto/SymmetricCipherSalsa20.h
deleted file mode 100644
index 443d4ec8b..000000000
--- a/src/crypto/SymmetricCipherSalsa20.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-* Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 2 or (at your option)
-* version 3 of the License.
-*
-* 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 General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef KEEPASSX_SYMMETRICCIPHERSALSA20_H
-#define KEEPASSX_SYMMETRICCIPHERSALSA20_H
-
-#include "crypto/SymmetricCipher.h"
-#include "crypto/SymmetricCipherBackend.h"
-#include "crypto/salsa20/ecrypt-sync.h"
-
-class SymmetricCipherSalsa20 : public SymmetricCipherBackend
-{
-public:
- SymmetricCipherSalsa20(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode,
- SymmetricCipher::Direction direction);
- ~SymmetricCipherSalsa20();
- bool init();
- void setAlgorithm(SymmetricCipher::Algorithm algo);
- void setMode(SymmetricCipher::Mode mode);
- void setDirection(SymmetricCipher::Direction direction);
- bool setKey(const QByteArray& key);
- bool setIv(const QByteArray& iv);
-
- QByteArray process(const QByteArray& data, bool* ok);
- bool processInPlace(QByteArray& data);
- bool processInPlace(QByteArray& data, quint64 rounds);
-
- bool reset();
- int blockSize() const;
-
- QString errorString() const;
-
-private:
- ECRYPT_ctx m_ctx;
- QByteArray m_key;
- QByteArray m_iv;
-};
-
-#endif // KEEPASSX_SYMMETRICCIPHERSALSA20_H
diff --git a/src/crypto/argon2/argon2.h b/src/crypto/argon2/argon2.h
new file mode 100644
index 000000000..8ea6108aa
--- /dev/null
+++ b/src/crypto/argon2/argon2.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_CRYPTO_ARGON2_H
+#define KEEPASSXC_CRYPTO_ARGON2_H
+
+/*
+ Argon2 wrapper header with redefined symbols to be used with the
+ patched libargon2 binary which is generated by the build system.
+ This is to avoid link-time definition clashes with libsodium on Windows.
+ */
+
+#ifdef Q_OS_WIN
+#define argon2_hash libargon2_argon2_hash
+#define argon2_error_message libargon2_argon2_error_message
+#endif
+
+#include <argon2.h>
+
+#endif //KEEPASSXC_CRYPTO_ARGON2_H
diff --git a/src/crypto/kdf/AesKdf.cpp b/src/crypto/kdf/AesKdf.cpp
new file mode 100644
index 000000000..593b01c24
--- /dev/null
+++ b/src/crypto/kdf/AesKdf.cpp
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AesKdf.h"
+
+#include <QtConcurrent>
+
+#include "format/KeePass2.h"
+#include "crypto/CryptoHash.h"
+
+AesKdf::AesKdf()
+ : Kdf::Kdf(KeePass2::KDF_AES_KDBX4)
+{
+}
+
+/**
+ * @param legacyKdbx3 initialize as legacy KDBX3 KDF
+ */
+AesKdf::AesKdf(bool legacyKdbx3)
+ : Kdf::Kdf(legacyKdbx3 ? KeePass2::KDF_AES_KDBX3 : KeePass2::KDF_AES_KDBX4)
+{
+}
+
+bool AesKdf::processParameters(const QVariantMap &p)
+{
+ bool ok;
+ int rounds = p.value(KeePass2::KDFPARAM_AES_ROUNDS).toInt(&ok);
+ if (!ok || !setRounds(rounds)) {
+ return false;
+ }
+
+ QByteArray seed = p.value(KeePass2::KDFPARAM_AES_SEED).toByteArray();
+ return setSeed(seed);
+}
+
+QVariantMap AesKdf::writeParameters()
+{
+ QVariantMap p;
+
+ // always write old KDBX3 AES-KDF UUID for compatibility with other applications
+ p.insert(KeePass2::KDFPARAM_UUID, KeePass2::KDF_AES_KDBX3.toByteArray());
+
+ p.insert(KeePass2::KDFPARAM_AES_ROUNDS, static_cast<quint64>(rounds()));
+ p.insert(KeePass2::KDFPARAM_AES_SEED, seed());
+ return p;
+}
+
+bool AesKdf::transform(const QByteArray& raw, QByteArray& result) const
+{
+ QByteArray resultLeft;
+ QByteArray resultRight;
+
+ QFuture<bool> future = QtConcurrent::run(transformKeyRaw, raw.left(16), m_seed, m_rounds, &resultLeft);
+
+ bool rightResult = transformKeyRaw(raw.right(16), m_seed, m_rounds, &resultRight);
+ bool leftResult = future.result();
+
+ if (!rightResult || !leftResult) {
+ return false;
+ }
+
+ QByteArray transformed;
+ transformed.append(resultLeft);
+ transformed.append(resultRight);
+
+ result = CryptoHash::hash(transformed, CryptoHash::Sha256);
+ return true;
+}
+
+bool AesKdf::transformKeyRaw(const QByteArray& key, const QByteArray& seed, int rounds, QByteArray* result)
+{
+ QByteArray iv(16, 0);
+ SymmetricCipher cipher(SymmetricCipher::Aes256, SymmetricCipher::Ecb,
+ SymmetricCipher::Encrypt);
+ if (!cipher.init(seed, iv)) {
+ qWarning("AesKdf::transformKeyRaw: error in SymmetricCipher::init: %s", cipher.errorString().toUtf8().data());
+ return false;
+ }
+
+ *result = key;
+
+ if (!cipher.processInPlace(*result, rounds)) {
+ qWarning("AesKdf::transformKeyRaw: error in SymmetricCipher::processInPlace: %s",
+ cipher.errorString().toUtf8().data());
+ return false;
+ }
+
+ return true;
+}
+
+QSharedPointer<Kdf> AesKdf::clone() const
+{
+ return QSharedPointer<AesKdf>::create(*this);
+}
+
+int AesKdf::benchmarkImpl(int msec) const
+{
+ QByteArray key = QByteArray(16, '\x7E');
+ QByteArray seed = QByteArray(32, '\x4B');
+ QByteArray iv(16, 0);
+
+ SymmetricCipher cipher(SymmetricCipher::Aes256, SymmetricCipher::Ecb, SymmetricCipher::Encrypt);
+ cipher.init(seed, iv);
+
+ quint64 rounds = 1000000;
+ QElapsedTimer timer;
+ timer.start();
+
+ if (!cipher.processInPlace(key, rounds)) {
+ return -1;
+ }
+
+ return static_cast<int>(rounds * (static_cast<float>(msec) / timer.elapsed()));
+}
diff --git a/src/crypto/kdf/AesKdf.h b/src/crypto/kdf/AesKdf.h
new file mode 100644
index 000000000..31ee1fa70
--- /dev/null
+++ b/src/crypto/kdf/AesKdf.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_AESKDF_H
+#define KEEPASSX_AESKDF_H
+
+#include "Kdf.h"
+
+class AesKdf: public Kdf
+{
+public:
+ AesKdf();
+ explicit AesKdf(bool legacyKdbx3);
+
+ bool processParameters(const QVariantMap& p) override;
+ QVariantMap writeParameters() override;
+ bool transform(const QByteArray& raw, QByteArray& result) const override;
+ QSharedPointer<Kdf> clone() const override;
+
+protected:
+ int benchmarkImpl(int msec) const override;
+
+private:
+ static bool transformKeyRaw(const QByteArray& key,
+ const QByteArray& seed,
+ int rounds,
+ QByteArray* result) Q_REQUIRED_RESULT;
+};
+
+#endif // KEEPASSX_AESKDF_H
diff --git a/src/crypto/kdf/Argon2Kdf.cpp b/src/crypto/kdf/Argon2Kdf.cpp
new file mode 100644
index 000000000..f67c9c1fb
--- /dev/null
+++ b/src/crypto/kdf/Argon2Kdf.cpp
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Argon2Kdf.h"
+
+#include <QtConcurrent>
+
+#include "crypto/argon2/argon2.h"
+#include "format/KeePass2.h"
+
+/**
+ * KeePass' Argon2 implementation supports all parameters that are defined in the official specification,
+ * but only the number of iterations, the memory size and the degree of parallelism can be configured by
+ * the user in the database settings dialog. For the other parameters, KeePass chooses reasonable defaults:
+ * a 256-bit salt is generated each time the database is saved, the tag length is 256 bits, no secret key
+ * or associated data. KeePass uses the latest version of Argon2, v1.3.
+ */
+Argon2Kdf::Argon2Kdf()
+ : Kdf::Kdf(KeePass2::KDF_ARGON2)
+ , m_version(0x13)
+ , m_memory(1 << 16)
+ , m_parallelism(static_cast<quint32>(QThread::idealThreadCount()))
+{
+ m_rounds = 1;
+}
+
+quint32 Argon2Kdf::version() const
+{
+ return m_version;
+}
+
+bool Argon2Kdf::setVersion(quint32 version)
+{
+ // MIN=0x10; MAX=0x13)
+ if (version >= 0x10 && version <= 0x13) {
+ m_version = version;
+ return true;
+ }
+ m_version = 0x13;
+ return false;
+}
+
+quint64 Argon2Kdf::memory() const
+{
+ return m_memory;
+}
+
+bool Argon2Kdf::setMemory(quint64 kibibytes)
+{
+ // MIN=8KB; MAX=2,147,483,648KB
+ if (kibibytes >= 8 && kibibytes < (1ULL << 32)) {
+ m_memory = kibibytes;
+ return true;
+ }
+ m_memory = 16;
+ return false;
+}
+
+quint32 Argon2Kdf::parallelism() const
+{
+ return m_parallelism;
+}
+
+bool Argon2Kdf::setParallelism(quint32 threads)
+{
+ // MIN=1; MAX=16,777,215
+ if (threads >= 1 && threads < (1 << 24)) {
+ m_parallelism = threads;
+ return true;
+ }
+ m_parallelism = 1;
+ return false;
+}
+
+bool Argon2Kdf::processParameters(const QVariantMap &p)
+{
+ QByteArray salt = p.value(KeePass2::KDFPARAM_ARGON2_SALT).toByteArray();
+ if (!setSeed(salt)) {
+ return false;
+ }
+
+ bool ok;
+ quint32 version = p.value(KeePass2::KDFPARAM_ARGON2_VERSION).toUInt(&ok);
+ if (!ok || !setVersion(version)) {
+ return false;
+ }
+
+ quint32 lanes = p.value(KeePass2::KDFPARAM_ARGON2_PARALLELISM).toUInt(&ok);
+ if (!ok || !setParallelism(lanes)) {
+ return false;
+ }
+
+ quint64 memory = p.value(KeePass2::KDFPARAM_ARGON2_MEMORY).toULongLong(&ok) / 1024ULL;
+ if (!ok || !setMemory(memory)) {
+ return false;
+ }
+
+ quint64 iterations = p.value(KeePass2::KDFPARAM_ARGON2_ITERATIONS).toULongLong(&ok);
+ if (!ok || !setRounds(iterations)) {
+ return false;
+ }
+
+ /* KeePass2 does not currently implement these parameters
+ *
+ QByteArray secret = p.value(KeePass2::KDFPARAM_ARGON2_SECRET).toByteArray();
+ if (!argon2Kdf->setSecret(secret)) {
+ return nullptr;
+ }
+
+ QByteArray ad = p.value(KeePass2::KDFPARAM_ARGON2_ASSOCDATA).toByteArray();
+ if (!argon2Kdf->setAssocData(ad)) {
+ return nullptr;
+ }
+ */
+
+ return true;
+}
+
+QVariantMap Argon2Kdf::writeParameters()
+{
+ QVariantMap p;
+ p.insert(KeePass2::KDFPARAM_UUID, KeePass2::KDF_ARGON2.toByteArray());
+ p.insert(KeePass2::KDFPARAM_ARGON2_VERSION, version());
+ p.insert(KeePass2::KDFPARAM_ARGON2_PARALLELISM, parallelism());
+ p.insert(KeePass2::KDFPARAM_ARGON2_MEMORY, memory() * 1024);
+ p.insert(KeePass2::KDFPARAM_ARGON2_ITERATIONS, static_cast<quint64>(rounds()));
+ p.insert(KeePass2::KDFPARAM_ARGON2_SALT, seed());
+
+ /* KeePass2 does not currently implement these
+ *
+ if (!assocData().isEmpty()) {
+ p.insert(KeePass2::KDFPARAM_ARGON2_ASSOCDATA, argon2Kdf.assocData());
+ }
+
+ if (!secret().isEmpty()) {
+ p.insert(KeePass2::KDFPARAM_ARGON2_SECRET, argon2Kdf.secret());
+ }
+ */
+
+ return p;
+}
+
+bool Argon2Kdf::transform(const QByteArray& raw, QByteArray& result) const
+{
+ result.clear();
+ result.resize(32);
+ return transformKeyRaw(raw, seed(), version(), rounds(), memory(), parallelism(), result);
+}
+
+bool Argon2Kdf::transformKeyRaw(const QByteArray& key, const QByteArray& seed, quint32 version,
+ quint32 rounds, quint64 memory, quint32 parallelism, QByteArray& result)
+{
+ // Time Cost, Mem Cost, Threads/Lanes, Password, length, Salt, length, out, length
+ int rc = argon2_hash(rounds, memory, parallelism, key.data(), key.size(),
+ seed.data(), seed.size(), result.data(), result.size(),
+ nullptr, 0, Argon2_d, version);
+ if (rc != ARGON2_OK) {
+ qWarning("Argon2 error: %s", argon2_error_message(rc));
+ return false;
+ }
+
+ return true;
+}
+
+QSharedPointer<Kdf> Argon2Kdf::clone() const
+{
+ return QSharedPointer<Argon2Kdf>::create(*this);
+}
+
+int Argon2Kdf::benchmarkImpl(int msec) const
+{
+ QByteArray key = QByteArray(16, '\x7E');
+ QByteArray seed = QByteArray(32, '\x4B');
+
+ QElapsedTimer timer;
+ timer.start();
+
+ int rounds = 4;
+ if (transformKeyRaw(key, seed, version(), rounds, memory(), parallelism(), key)) {
+ return static_cast<int>(rounds * (static_cast<float>(msec) / timer.elapsed()));
+ }
+
+ return 1;
+}
diff --git a/src/crypto/kdf/Argon2Kdf.h b/src/crypto/kdf/Argon2Kdf.h
new file mode 100644
index 000000000..fe62b2953
--- /dev/null
+++ b/src/crypto/kdf/Argon2Kdf.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_ARGON2KDF_H
+#define KEEPASSX_ARGON2KDF_H
+
+#include "Kdf.h"
+
+class Argon2Kdf : public Kdf {
+public:
+ Argon2Kdf();
+
+ bool processParameters(const QVariantMap& p) override;
+ QVariantMap writeParameters() override;
+ bool transform(const QByteArray& raw, QByteArray& result) const override;
+ QSharedPointer<Kdf> clone() const override;
+
+ quint32 version() const;
+ bool setVersion(quint32 version);
+ quint64 memory() const;
+ bool setMemory(quint64 kibibytes);
+ quint32 parallelism() const;
+ bool setParallelism(quint32 threads);
+
+protected:
+ int benchmarkImpl(int msec) const override;
+
+ quint32 m_version;
+ quint64 m_memory;
+ quint32 m_parallelism;
+
+private:
+ static bool transformKeyRaw(const QByteArray& key,
+ const QByteArray& seed,
+ quint32 version,
+ quint32 rounds,
+ quint64 memory,
+ quint32 parallelism,
+ QByteArray& result) Q_REQUIRED_RESULT;
+};
+
+#endif // KEEPASSX_ARGON2KDF_H
diff --git a/src/crypto/kdf/Kdf.cpp b/src/crypto/kdf/Kdf.cpp
new file mode 100644
index 000000000..e500dbe6f
--- /dev/null
+++ b/src/crypto/kdf/Kdf.cpp
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Kdf.h"
+#include "Kdf_p.h"
+
+#include <QtConcurrent>
+
+#include "crypto/Random.h"
+
+Kdf::Kdf(Uuid uuid)
+ : m_rounds(KDF_DEFAULT_ROUNDS)
+ , m_seed(QByteArray(KDF_DEFAULT_SEED_SIZE, 0))
+ , m_uuid(uuid)
+{
+}
+
+Uuid Kdf::uuid() const
+{
+ return m_uuid;
+}
+
+int Kdf::rounds() const
+{
+ return m_rounds;
+}
+
+QByteArray Kdf::seed() const
+{
+ return m_seed;
+}
+
+bool Kdf::setRounds(int rounds)
+{
+ if (rounds >= 1 && rounds < INT_MAX) {
+ m_rounds = rounds;
+ return true;
+ }
+ m_rounds = 1;
+ return false;
+}
+
+bool Kdf::setSeed(const QByteArray& seed)
+{
+ if (seed.size() != m_seed.size()) {
+ return false;
+ }
+
+ m_seed = seed;
+ return true;
+}
+
+void Kdf::randomizeSeed()
+{
+ setSeed(randomGen()->randomArray(m_seed.size()));
+}
+
+int Kdf::benchmark(int msec) const
+{
+ BenchmarkThread thread1(msec, this);
+ BenchmarkThread thread2(msec, this);
+
+ thread1.start();
+ thread2.start();
+
+ thread1.wait();
+ thread2.wait();
+
+ return qMax(1, qMin(thread1.rounds(), thread2.rounds()));
+}
+
+Kdf::BenchmarkThread::BenchmarkThread(int msec, const Kdf* kdf)
+ : m_msec(msec)
+ , m_kdf(kdf)
+{
+}
+
+int Kdf::BenchmarkThread::rounds()
+{
+ return m_rounds;
+}
+
+void Kdf::BenchmarkThread::run()
+{
+ m_rounds = m_kdf->benchmarkImpl(m_msec);
+}
diff --git a/src/crypto/kdf/Kdf.h b/src/crypto/kdf/Kdf.h
new file mode 100644
index 000000000..216224a6f
--- /dev/null
+++ b/src/crypto/kdf/Kdf.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_KDF_H
+#define KEEPASSX_KDF_H
+
+#include <QVariant>
+
+#include "core/Uuid.h"
+
+#define KDF_DEFAULT_SEED_SIZE 32
+#define KDF_DEFAULT_ROUNDS 1000000ull
+
+class Kdf
+{
+public:
+ explicit Kdf(Uuid uuid);
+ virtual ~Kdf() = default;
+
+ Uuid uuid() const;
+
+ int rounds() const;
+ virtual bool setRounds(int rounds);
+ QByteArray seed() const;
+ virtual bool setSeed(const QByteArray& seed);
+ virtual void randomizeSeed();
+
+ virtual bool processParameters(const QVariantMap& p) = 0;
+ virtual QVariantMap writeParameters() = 0;
+ virtual bool transform(const QByteArray& raw, QByteArray& result) const = 0;
+ virtual QSharedPointer<Kdf> clone() const = 0;
+
+ int benchmark(int msec) const;
+
+protected:
+ virtual int benchmarkImpl(int msec) const = 0;
+
+ int m_rounds;
+ QByteArray m_seed;
+
+private:
+ class BenchmarkThread;
+ const Uuid m_uuid;
+
+};
+
+#endif // KEEPASSX_KDF_H
diff --git a/src/crypto/kdf/Kdf_p.h b/src/crypto/kdf/Kdf_p.h
new file mode 100644
index 000000000..5606c0bf5
--- /dev/null
+++ b/src/crypto/kdf/Kdf_p.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Kdf.h"
+
+#include <QThread>
+
+#ifndef KEEPASSXC_KDF_P_H
+#define KEEPASSXC_KDF_P_H
+
+class Kdf::BenchmarkThread: public QThread
+{
+Q_OBJECT
+
+public:
+ explicit BenchmarkThread(int msec, const Kdf* kdf);
+
+ int rounds();
+
+protected:
+ void run();
+
+private:
+ int m_rounds;
+ int m_msec;
+ const Kdf* m_kdf;
+};
+
+#endif // KEEPASSXC_KDF_P_H
diff --git a/src/format/Kdbx3Reader.cpp b/src/format/Kdbx3Reader.cpp
new file mode 100644
index 000000000..84f7db67e
--- /dev/null
+++ b/src/format/Kdbx3Reader.cpp
@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Kdbx3Reader.h"
+
+#include "core/Group.h"
+#include "core/Endian.h"
+#include "crypto/CryptoHash.h"
+#include "format/KeePass2RandomStream.h"
+#include "format/KdbxXmlReader.h"
+#include "streams/HashedBlockStream.h"
+#include "streams/QtIOCompressor"
+#include "streams/SymmetricCipherStream.h"
+
+#include <QBuffer>
+
+Database* Kdbx3Reader::readDatabaseImpl(QIODevice* device, const QByteArray& headerData,
+ const CompositeKey& key, bool keepDatabase)
+{
+ Q_ASSERT(m_kdbxVersion <= KeePass2::FILE_VERSION_3_1);
+
+ if (hasError()) {
+ return nullptr;
+ }
+
+ // check if all required headers were present
+ if (m_masterSeed.isEmpty() || m_encryptionIV.isEmpty()
+ || m_streamStartBytes.isEmpty() || m_protectedStreamKey.isEmpty()
+ || m_db->cipher().isNull()) {
+ raiseError("missing database headers");
+ return nullptr;
+ }
+
+ if (!m_db->setKey(key, false)) {
+ raiseError(tr("Unable to calculate master key"));
+ return nullptr;
+ }
+
+ if (!m_db->challengeMasterSeed(m_masterSeed)) {
+ raiseError(tr("Unable to issue challenge-response."));
+ return nullptr;
+ }
+
+ CryptoHash hash(CryptoHash::Sha256);
+ hash.addData(m_masterSeed);
+ hash.addData(m_db->challengeResponseKey());
+ hash.addData(m_db->transformedMasterKey());
+ QByteArray finalKey = hash.result();
+
+ SymmetricCipher::Algorithm cipher = SymmetricCipher::cipherToAlgorithm(m_db->cipher());
+ SymmetricCipherStream cipherStream(device, cipher,
+ SymmetricCipher::algorithmMode(cipher), SymmetricCipher::Decrypt);
+ if (!cipherStream.init(finalKey, m_encryptionIV)) {
+ raiseError(cipherStream.errorString());
+ return nullptr;
+ }
+ if (!cipherStream.open(QIODevice::ReadOnly)) {
+ raiseError(cipherStream.errorString());
+ return nullptr;
+ }
+
+ QByteArray realStart = cipherStream.read(32);
+
+ if (realStart != m_streamStartBytes) {
+ raiseError(tr("Wrong key or database file is corrupt."));
+ return nullptr;
+ }
+
+ HashedBlockStream hashedStream(&cipherStream);
+ if (!hashedStream.open(QIODevice::ReadOnly)) {
+ raiseError(hashedStream.errorString());
+ return nullptr;
+ }
+
+ QIODevice* xmlDevice = nullptr;
+ QScopedPointer<QtIOCompressor> ioCompressor;
+
+ if (m_db->compressionAlgo() == Database::CompressionNone) {
+ xmlDevice = &hashedStream;
+ } else {
+ ioCompressor.reset(new QtIOCompressor(&hashedStream));
+ ioCompressor->setStreamFormat(QtIOCompressor::GzipFormat);
+ if (!ioCompressor->open(QIODevice::ReadOnly)) {
+ raiseError(ioCompressor->errorString());
+ return nullptr;
+ }
+ xmlDevice = ioCompressor.data();
+ }
+
+ KeePass2RandomStream randomStream(KeePass2::ProtectedStreamAlgo::Salsa20);
+ if (!randomStream.init(m_protectedStreamKey)) {
+ raiseError(randomStream.errorString());
+ return nullptr;
+ }
+
+ QBuffer buffer;
+ if (saveXml()) {
+ m_xmlData = xmlDevice->readAll();
+ buffer.setBuffer(&m_xmlData);
+ buffer.open(QIODevice::ReadOnly);
+ xmlDevice = &buffer;
+ }
+
+ Q_ASSERT(xmlDevice);
+
+ KdbxXmlReader xmlReader(KeePass2::FILE_VERSION_3_1);
+ xmlReader.readDatabase(xmlDevice, m_db.data(), &randomStream);
+
+ if (xmlReader.hasError()) {
+ raiseError(xmlReader.errorString());
+ if (keepDatabase) {
+ return m_db.take();
+ }
+ return nullptr;
+ }
+
+ Q_ASSERT(!xmlReader.headerHash().isEmpty() || m_kdbxVersion < KeePass2::FILE_VERSION_3_1);
+
+ if (!xmlReader.headerHash().isEmpty()) {
+ QByteArray headerHash = CryptoHash::hash(headerData, CryptoHash::Sha256);
+ if (headerHash != xmlReader.headerHash()) {
+ raiseError("Header doesn't match hash");
+ return nullptr;
+ }
+ }
+
+ return m_db.take();
+}
+
+bool Kdbx3Reader::readHeaderField(StoreDataStream& headerStream)
+{
+ QByteArray fieldIDArray = headerStream.read(1);
+ if (fieldIDArray.size() != 1) {
+ raiseError("Invalid header id size");
+ return false;
+ }
+ char fieldID = fieldIDArray.at(0);
+
+ bool ok;
+ auto fieldLen = Endian::readSizedInt<quint16>(&headerStream, KeePass2::BYTEORDER, &ok);
+ if (!ok) {
+ raiseError("Invalid header field length");
+ return false;
+ }
+
+ QByteArray fieldData;
+ if (fieldLen != 0) {
+ fieldData = headerStream.read(fieldLen);
+ if (fieldData.size() != fieldLen) {
+ raiseError("Invalid header data length");
+ return false;
+ }
+ }
+
+ bool headerEnd = false;
+ switch (static_cast<KeePass2::HeaderFieldID>(fieldID)) {
+ case KeePass2::HeaderFieldID::EndOfHeader:
+ headerEnd = true;
+ break;
+
+ case KeePass2::HeaderFieldID::CipherID:
+ setCipher(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::CompressionFlags:
+ setCompressionFlags(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::MasterSeed:
+ setMasterSeed(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::TransformSeed:
+ setTransformSeed(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::TransformRounds:
+ setTransformRounds(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::EncryptionIV:
+ setEncryptionIV(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::ProtectedStreamKey:
+ setProtectedStreamKey(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::StreamStartBytes:
+ setStreamStartBytes(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::InnerRandomStreamID:
+ setInnerRandomStreamID(fieldData);
+ break;
+
+ default:
+ qWarning("Unknown header field read: id=%d", fieldID);
+ break;
+ }
+
+ return !headerEnd;
+}
diff --git a/tests/TestKeePass2Writer.h b/src/format/Kdbx3Reader.h
index 36a51dce6..e62901578 100644
--- a/tests/TestKeePass2Writer.h
+++ b/src/format/Kdbx3Reader.h
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -15,30 +16,24 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_TESTKEEPASS2WRITER_H
-#define KEEPASSX_TESTKEEPASS2WRITER_H
+#ifndef KEEPASSX_KDBX3READER_H
+#define KEEPASSX_KDBX3READER_H
-#include <QObject>
+#include "format/KdbxReader.h"
-class Database;
-
-class TestKeePass2Writer : public QObject
+/**
+ * KDBX 2/3 reader implementation.
+ */
+class Kdbx3Reader: public KdbxReader
{
- Q_OBJECT
+Q_DECLARE_TR_FUNCTIONS(Kdbx3Reader)
-private slots:
- void initTestCase();
- void testBasic();
- void testProtectedAttributes();
- void testAttachments();
- void testNonAsciiPasswords();
- void testDeviceFailure();
- void testRepair();
- void cleanupTestCase();
+public:
+ Database* readDatabaseImpl(QIODevice* device, const QByteArray& headerData,
+ const CompositeKey& key, bool keepDatabase) override;
-private:
- Database* m_dbOrg;
- Database* m_dbTest;
+protected:
+ bool readHeaderField(StoreDataStream& headerStream) override;
};
-#endif // KEEPASSX_TESTKEEPASS2WRITER_H
+#endif // KEEPASSX_KDBX3READER_H
diff --git a/src/format/Kdbx3Writer.cpp b/src/format/Kdbx3Writer.cpp
new file mode 100644
index 000000000..c2fefff1b
--- /dev/null
+++ b/src/format/Kdbx3Writer.cpp
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Kdbx3Writer.h"
+
+#include <QBuffer>
+
+#include "core/Database.h"
+#include "crypto/CryptoHash.h"
+#include "crypto/Random.h"
+#include "format/KeePass2.h"
+#include "format/KeePass2RandomStream.h"
+#include "format/KdbxXmlWriter.h"
+#include "streams/HashedBlockStream.h"
+#include "streams/QtIOCompressor"
+#include "streams/SymmetricCipherStream.h"
+
+bool Kdbx3Writer::writeDatabase(QIODevice* device, Database* db)
+{
+ m_error = false;
+ m_errorStr.clear();
+
+ QByteArray masterSeed = randomGen()->randomArray(32);
+ QByteArray encryptionIV = randomGen()->randomArray(16);
+ QByteArray protectedStreamKey = randomGen()->randomArray(32);
+ QByteArray startBytes = randomGen()->randomArray(32);
+ QByteArray endOfHeader = "\r\n\r\n";
+
+ if (!db->challengeMasterSeed(masterSeed)) {
+ raiseError(tr("Unable to issue challenge-response."));
+ return false;
+ }
+
+ if (!db->setKey(db->key(), false, true)) {
+ raiseError(tr("Unable to calculate master key"));
+ return false;
+ }
+
+ // generate transformed master key
+ CryptoHash hash(CryptoHash::Sha256);
+ hash.addData(masterSeed);
+ hash.addData(db->challengeResponseKey());
+ Q_ASSERT(!db->transformedMasterKey().isEmpty());
+ hash.addData(db->transformedMasterKey());
+ QByteArray finalKey = hash.result();
+
+ // write header
+ QBuffer header;
+ header.open(QIODevice::WriteOnly);
+
+ writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, KeePass2::FILE_VERSION_3_1);
+
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::CipherID, db->cipher().toByteArray()));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::CompressionFlags,
+ Endian::sizedIntToBytes<qint32>(db->compressionAlgo(),
+ KeePass2::BYTEORDER)));
+ auto kdf = db->kdf();
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::MasterSeed, masterSeed));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::TransformSeed, kdf->seed()));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::TransformRounds,
+ Endian::sizedIntToBytes<qint64>(kdf->rounds(),
+ KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::EncryptionIV, encryptionIV));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::ProtectedStreamKey, protectedStreamKey));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::StreamStartBytes, startBytes));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::InnerRandomStreamID,
+ Endian::sizedIntToBytes<qint32>(static_cast<qint32>(
+ KeePass2::ProtectedStreamAlgo::Salsa20),
+ KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::EndOfHeader, endOfHeader));
+ header.close();
+
+ // write header data
+ CHECK_RETURN_FALSE(writeData(device, header.data()));
+
+ // hash header
+ const QByteArray headerHash = CryptoHash::hash(header.data(), CryptoHash::Sha256);
+
+ // write cipher stream
+ SymmetricCipher::Algorithm algo = SymmetricCipher::cipherToAlgorithm(db->cipher());
+ SymmetricCipherStream cipherStream(device, algo,
+ SymmetricCipher::algorithmMode(algo), SymmetricCipher::Encrypt);
+ cipherStream.init(finalKey, encryptionIV);
+ if (!cipherStream.open(QIODevice::WriteOnly)) {
+ raiseError(cipherStream.errorString());
+ return false;
+ }
+ CHECK_RETURN_FALSE(writeData(&cipherStream, startBytes));
+
+ HashedBlockStream hashedStream(&cipherStream);
+ if (!hashedStream.open(QIODevice::WriteOnly)) {
+ raiseError(hashedStream.errorString());
+ return false;
+ }
+
+ QIODevice* outputDevice = nullptr;
+ QScopedPointer<QtIOCompressor> ioCompressor;
+
+ if (db->compressionAlgo() == Database::CompressionNone) {
+ outputDevice = &hashedStream;
+ } else {
+ ioCompressor.reset(new QtIOCompressor(&hashedStream));
+ ioCompressor->setStreamFormat(QtIOCompressor::GzipFormat);
+ if (!ioCompressor->open(QIODevice::WriteOnly)) {
+ raiseError(ioCompressor->errorString());
+ return false;
+ }
+ outputDevice = ioCompressor.data();
+ }
+
+ Q_ASSERT(outputDevice);
+
+ KeePass2RandomStream randomStream(KeePass2::ProtectedStreamAlgo::Salsa20);
+ if (!randomStream.init(protectedStreamKey)) {
+ raiseError(randomStream.errorString());
+ return false;
+ }
+
+ KdbxXmlWriter xmlWriter(KeePass2::FILE_VERSION_3_1);
+ xmlWriter.writeDatabase(outputDevice, db, &randomStream, headerHash);
+
+ // Explicitly close/reset streams so they are flushed and we can detect
+ // errors. QIODevice::close() resets errorString() etc.
+ if (ioCompressor) {
+ ioCompressor->close();
+ }
+ if (!hashedStream.reset()) {
+ raiseError(hashedStream.errorString());
+ return false;
+ }
+ if (!cipherStream.reset()) {
+ raiseError(cipherStream.errorString());
+ return false;
+ }
+
+ if (xmlWriter.hasError()) {
+ raiseError(xmlWriter.errorString());
+ return false;
+ }
+
+ return true;
+}
diff --git a/src/format/Kdbx3Writer.h b/src/format/Kdbx3Writer.h
new file mode 100644
index 000000000..8acc198a5
--- /dev/null
+++ b/src/format/Kdbx3Writer.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_KDBX3WRITER_H
+#define KEEPASSX_KDBX3WRITER_H
+
+#include "KdbxWriter.h"
+
+/**
+ * KDBX2/3 writer implementation.
+ */
+class Kdbx3Writer: public KdbxWriter
+{
+Q_DECLARE_TR_FUNCTIONS(Kdbx3Writer)
+
+public:
+ bool writeDatabase(QIODevice* device, Database* db) override;
+};
+
+#endif // KEEPASSX_KDBX3WRITER_H
diff --git a/src/format/Kdbx4Reader.cpp b/src/format/Kdbx4Reader.cpp
new file mode 100644
index 000000000..2919db785
--- /dev/null
+++ b/src/format/Kdbx4Reader.cpp
@@ -0,0 +1,448 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Kdbx4Reader.h"
+
+#include <QBuffer>
+
+#include "core/Group.h"
+#include "core/Endian.h"
+#include "crypto/CryptoHash.h"
+#include "format/KeePass2RandomStream.h"
+#include "format/KdbxXmlReader.h"
+#include "streams/HmacBlockStream.h"
+#include "streams/QtIOCompressor"
+#include "streams/SymmetricCipherStream.h"
+
+Database* Kdbx4Reader::readDatabaseImpl(QIODevice* device, const QByteArray& headerData,
+ const CompositeKey& key, bool keepDatabase)
+{
+ Q_ASSERT(m_kdbxVersion == KeePass2::FILE_VERSION_4);
+
+ m_binaryPoolInverse.clear();
+
+ if (hasError()) {
+ return nullptr;
+ }
+
+ // check if all required headers were present
+ if (m_masterSeed.isEmpty()
+ || m_encryptionIV.isEmpty()
+ || m_db->cipher().isNull()) {
+ raiseError(tr("missing database headers"));
+ return nullptr;
+ }
+
+ if (!m_db->setKey(key, false, false)) {
+ raiseError(tr("Unable to calculate master key"));
+ return nullptr;
+ }
+
+ CryptoHash hash(CryptoHash::Sha256);
+ hash.addData(m_masterSeed);
+ hash.addData(m_db->transformedMasterKey());
+ QByteArray finalKey = hash.result();
+
+ QByteArray headerSha256 = device->read(32);
+ QByteArray headerHmac = device->read(32);
+ if (headerSha256.size() != 32 || headerHmac.size() != 32) {
+ raiseError(tr("Invalid header checksum size"));
+ return nullptr;
+ }
+ if (headerSha256 != CryptoHash::hash(headerData, CryptoHash::Sha256)) {
+ raiseError(tr("Header SHA256 mismatch"));
+ return nullptr;
+ }
+
+ QByteArray hmacKey = KeePass2::hmacKey(m_masterSeed, m_db->transformedMasterKey());
+ if (headerHmac != CryptoHash::hmac(headerData,
+ HmacBlockStream::getHmacKey(UINT64_MAX, hmacKey), CryptoHash::Sha256)) {
+ raiseError(tr("Wrong key or database file is corrupt. (HMAC mismatch)"));
+ return nullptr;
+ }
+ HmacBlockStream hmacStream(device, hmacKey);
+ if (!hmacStream.open(QIODevice::ReadOnly)) {
+ raiseError(hmacStream.errorString());
+ return nullptr;
+ }
+
+ SymmetricCipher::Algorithm cipher = SymmetricCipher::cipherToAlgorithm(m_db->cipher());
+ if (cipher == SymmetricCipher::InvalidAlgorithm) {
+ raiseError(tr("Unknown cipher"));
+ return nullptr;
+ }
+ SymmetricCipherStream cipherStream(&hmacStream, cipher,
+ SymmetricCipher::algorithmMode(cipher), SymmetricCipher::Decrypt);
+ if (!cipherStream.init(finalKey, m_encryptionIV)) {
+ raiseError(cipherStream.errorString());
+ return nullptr;
+ }
+ if (!cipherStream.open(QIODevice::ReadOnly)) {
+ raiseError(cipherStream.errorString());
+ return nullptr;
+ }
+
+ QIODevice* xmlDevice = nullptr;
+ QScopedPointer<QtIOCompressor> ioCompressor;
+
+ if (m_db->compressionAlgo() == Database::CompressionNone) {
+ xmlDevice = &cipherStream;
+ } else {
+ ioCompressor.reset(new QtIOCompressor(&cipherStream));
+ ioCompressor->setStreamFormat(QtIOCompressor::GzipFormat);
+ if (!ioCompressor->open(QIODevice::ReadOnly)) {
+ raiseError(ioCompressor->errorString());
+ return nullptr;
+ }
+ xmlDevice = ioCompressor.data();
+ }
+
+ while (readInnerHeaderField(xmlDevice) && !hasError()) {
+ }
+
+ if (hasError()) {
+ return nullptr;
+ }
+
+ KeePass2RandomStream randomStream(m_irsAlgo);
+ if (!randomStream.init(m_protectedStreamKey)) {
+ raiseError(randomStream.errorString());
+ return nullptr;
+ }
+
+ QBuffer buffer;
+ if (saveXml()) {
+ m_xmlData = xmlDevice->readAll();
+ buffer.setBuffer(&m_xmlData);
+ buffer.open(QIODevice::ReadOnly);
+ xmlDevice = &buffer;
+ }
+
+ Q_ASSERT(xmlDevice);
+
+ KdbxXmlReader xmlReader(KeePass2::FILE_VERSION_4, binaryPool());
+ xmlReader.readDatabase(xmlDevice, m_db.data(), &randomStream);
+
+ if (xmlReader.hasError()) {
+ raiseError(xmlReader.errorString());
+ if (keepDatabase) {
+ return m_db.take();
+ }
+ return nullptr;
+ }
+
+ return m_db.take();
+}
+
+bool Kdbx4Reader::readHeaderField(StoreDataStream& device)
+{
+ QByteArray fieldIDArray = device.read(1);
+ if (fieldIDArray.size() != 1) {
+ raiseError(tr("Invalid header id size"));
+ return false;
+ }
+ char fieldID = fieldIDArray.at(0);
+
+ bool ok;
+ auto fieldLen = Endian::readSizedInt<quint32>(&device, KeePass2::BYTEORDER, &ok);
+ if (!ok) {
+ raiseError(tr("Invalid header field length"));
+ return false;
+ }
+
+ QByteArray fieldData;
+ if (fieldLen != 0) {
+ fieldData = device.read(fieldLen);
+ if (static_cast<quint32>(fieldData.size()) != fieldLen) {
+ raiseError(tr("Invalid header data length"));
+ return false;
+ }
+ }
+
+ switch (static_cast<KeePass2::HeaderFieldID>(fieldID)) {
+ case KeePass2::HeaderFieldID::EndOfHeader:
+ return false;
+
+ case KeePass2::HeaderFieldID::CipherID:
+ setCipher(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::CompressionFlags:
+ setCompressionFlags(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::MasterSeed:
+ setMasterSeed(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::EncryptionIV:
+ setEncryptionIV(fieldData);
+ break;
+
+ case KeePass2::HeaderFieldID::KdfParameters: {
+ QBuffer bufIoDevice(&fieldData);
+ if (!bufIoDevice.open(QIODevice::ReadOnly)) {
+ raiseError(tr("Failed to open buffer for KDF parameters in header"));
+ return false;
+ }
+ QVariantMap kdfParams = readVariantMap(&bufIoDevice);
+ QSharedPointer<Kdf> kdf = KeePass2::kdfFromParameters(kdfParams);
+ if (!kdf) {
+ raiseError(tr("Unsupported key derivation function (KDF) or invalid parameters"));
+ return false;
+ }
+ m_db->setKdf(kdf);
+ break;
+ }
+
+ case KeePass2::HeaderFieldID::PublicCustomData: {
+ QBuffer variantBuffer;
+ variantBuffer.setBuffer(&fieldData);
+ variantBuffer.open(QBuffer::ReadOnly);
+ QVariantMap data = readVariantMap(&variantBuffer);
+ m_db->setPublicCustomData(data);
+ break;
+ }
+
+ case KeePass2::HeaderFieldID::ProtectedStreamKey:
+ case KeePass2::HeaderFieldID::TransformRounds:
+ case KeePass2::HeaderFieldID::TransformSeed:
+ case KeePass2::HeaderFieldID::StreamStartBytes:
+ case KeePass2::HeaderFieldID::InnerRandomStreamID:
+ raiseError(tr("Legacy header fields found in KDBX4 file."));
+ return false;
+
+ default:
+ qWarning("Unknown header field read: id=%d", fieldID);
+ break;
+ }
+
+ return true;
+}
+
+/**
+ * Helper method for reading KDBX4 inner header fields.
+ *
+ * @param device input device
+ * @return true if there are more inner header fields
+ */
+bool Kdbx4Reader::readInnerHeaderField(QIODevice* device)
+{
+ QByteArray fieldIDArray = device->read(1);
+ if (fieldIDArray.size() != 1) {
+ raiseError(tr("Invalid inner header id size"));
+ return false;
+ }
+ auto fieldID = static_cast<KeePass2::InnerHeaderFieldID>(fieldIDArray.at(0));
+
+ bool ok;
+ auto fieldLen = Endian::readSizedInt<quint32>(device, KeePass2::BYTEORDER, &ok);
+ if (!ok) {
+ raiseError(tr("Invalid inner header field length"));
+ return false;
+ }
+
+ QByteArray fieldData;
+ if (fieldLen != 0) {
+ fieldData = device->read(fieldLen);
+ if (static_cast<quint32>(fieldData.size()) != fieldLen) {
+ raiseError(tr("Invalid header data length"));
+ return false;
+ }
+ }
+
+ switch (fieldID) {
+ case KeePass2::InnerHeaderFieldID::End:
+ return false;
+
+ case KeePass2::InnerHeaderFieldID::InnerRandomStreamID:
+ setInnerRandomStreamID(fieldData);
+ break;
+
+ case KeePass2::InnerHeaderFieldID::InnerRandomStreamKey:
+ setProtectedStreamKey(fieldData);
+ break;
+
+ case KeePass2::InnerHeaderFieldID::Binary: {
+ if (fieldLen < 1) {
+ raiseError(tr("Invalid inner header binary size"));
+ return false;
+ }
+ auto data = fieldData.mid(1);
+ if (m_binaryPoolInverse.contains(data)) {
+ qWarning("Skipping duplicate binary record");
+ break;
+ }
+ m_binaryPoolInverse.insert(data, QString::number(m_binaryPoolInverse.size()));
+ break;
+ }
+ }
+
+ return true;
+}
+
+/**
+ * Helper method for reading a serialized variant map.
+ *
+ * @param device input device
+ * @return de-serialized variant map
+ */
+QVariantMap Kdbx4Reader::readVariantMap(QIODevice* device)
+{
+ bool ok;
+ quint16 version = Endian::readSizedInt<quint16>(device, KeePass2::BYTEORDER, &ok)
+ & KeePass2::VARIANTMAP_CRITICAL_MASK;
+ quint16 maxVersion = KeePass2::VARIANTMAP_VERSION & KeePass2::VARIANTMAP_CRITICAL_MASK;
+ if (!ok || (version > maxVersion)) {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Unsupported KeePass variant map version."));
+ return {};
+ }
+
+ QVariantMap vm;
+ QByteArray fieldTypeArray;
+ KeePass2::VariantMapFieldType fieldType = KeePass2::VariantMapFieldType::End;
+ while (((fieldTypeArray = device->read(1)).size() == 1)
+ && ((fieldType = static_cast<KeePass2::VariantMapFieldType>(fieldTypeArray.at(0)))
+ != KeePass2::VariantMapFieldType::End)) {
+ auto nameLen = Endian::readSizedInt<quint32>(device, KeePass2::BYTEORDER, &ok);
+ if (!ok) {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map entry name length"));
+ return {};
+ }
+ QByteArray nameBytes;
+ if (nameLen != 0) {
+ nameBytes = device->read(nameLen);
+ if (static_cast<quint32>(nameBytes.size()) != nameLen) {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map entry name data"));
+ return {};
+ }
+ }
+ QString name = QString::fromUtf8(nameBytes);
+
+ auto valueLen = Endian::readSizedInt<quint32>(device, KeePass2::BYTEORDER, &ok);
+ if (!ok) {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map entry value length"));
+ return {};
+ }
+ QByteArray valueBytes;
+ if (valueLen != 0) {
+ valueBytes = device->read(valueLen);
+ if (static_cast<quint32>(valueBytes.size()) != valueLen) {
+ //: Translation comment: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map entry value data"));
+ return {};
+ }
+ }
+
+ switch (fieldType) {
+ case KeePass2::VariantMapFieldType::Bool:
+ if (valueLen == 1) {
+ vm.insert(name, QVariant(valueBytes.at(0) != 0));
+ } else {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map Bool entry value length"));
+ return {};
+ }
+ break;
+
+ case KeePass2::VariantMapFieldType::Int32:
+ if (valueLen == 4) {
+ vm.insert(name, QVariant(Endian::bytesToSizedInt<qint32>(valueBytes, KeePass2::BYTEORDER)));
+ } else {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map Int32 entry value length"));
+ return {};
+ }
+ break;
+
+ case KeePass2::VariantMapFieldType::UInt32:
+ if (valueLen == 4) {
+ vm.insert(name, QVariant(Endian::bytesToSizedInt<quint32>(valueBytes, KeePass2::BYTEORDER)));
+ } else {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map UInt32 entry value length"));
+ return {};
+ }
+ break;
+
+ case KeePass2::VariantMapFieldType::Int64:
+ if (valueLen == 8) {
+ vm.insert(name, QVariant(Endian::bytesToSizedInt<qint64>(valueBytes, KeePass2::BYTEORDER)));
+ } else {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map Int64 entry value length"));
+ return {};
+ }
+ break;
+
+ case KeePass2::VariantMapFieldType::UInt64:
+ if (valueLen == 8) {
+ vm.insert(name, QVariant(Endian::bytesToSizedInt<quint64>(valueBytes, KeePass2::BYTEORDER)));
+ } else {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map UInt64 entry value length"));
+ return {};
+ }
+ break;
+
+ case KeePass2::VariantMapFieldType::String:
+ vm.insert(name, QVariant(QString::fromUtf8(valueBytes)));
+ break;
+
+ case KeePass2::VariantMapFieldType::ByteArray:
+ vm.insert(name, QVariant(valueBytes));
+ break;
+
+ default:
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map entry type"));
+ return {};
+ }
+ }
+
+ if (fieldTypeArray.size() != 1) {
+ //: Translation: variant map = data structure for storing meta data
+ raiseError(tr("Invalid variant map field type size"));
+ return {};
+ }
+
+ return vm;
+}
+
+/**
+ * @return mapping from attachment keys to binary data
+ */
+QHash<QString, QByteArray> Kdbx4Reader::binaryPool() const
+{
+ QHash<QString, QByteArray> binaryPool;
+ for (auto it = m_binaryPoolInverse.cbegin(); it != m_binaryPoolInverse.cend(); ++it) {
+ binaryPool.insert(it.value(), it.key());
+ }
+ return binaryPool;
+}
+
+/**
+ * @return mapping from binary data to attachment keys
+ */
+QHash<QByteArray, QString> Kdbx4Reader::binaryPoolInverse() const
+{
+ return m_binaryPoolInverse;
+}
diff --git a/src/format/Kdbx4Reader.h b/src/format/Kdbx4Reader.h
new file mode 100644
index 000000000..24d4a9142
--- /dev/null
+++ b/src/format/Kdbx4Reader.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_KDBX4READER_H
+#define KEEPASSX_KDBX4READER_H
+
+#include "format/KdbxReader.h"
+
+#include <QVariantMap>
+
+/**
+ * KDBX4 reader implementation.
+ */
+class Kdbx4Reader : public KdbxReader
+{
+Q_DECLARE_TR_FUNCTIONS(Kdbx4Reader)
+
+public:
+ Database* readDatabaseImpl(QIODevice* device, const QByteArray& headerData,
+ const CompositeKey& key, bool keepDatabase) override;
+ QHash<QByteArray, QString> binaryPoolInverse() const;
+ QHash<QString, QByteArray> binaryPool() const;
+
+protected:
+ bool readHeaderField(StoreDataStream& headerStream) override;
+
+private:
+ bool readInnerHeaderField(QIODevice* device);
+ QVariantMap readVariantMap(QIODevice* device);
+
+ QHash<QByteArray, QString> m_binaryPoolInverse;
+};
+
+#endif // KEEPASSX_KDBX4READER_H
diff --git a/src/format/Kdbx4Writer.cpp b/src/format/Kdbx4Writer.cpp
new file mode 100644
index 000000000..bd671d9c7
--- /dev/null
+++ b/src/format/Kdbx4Writer.cpp
@@ -0,0 +1,311 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Kdbx4Writer.h"
+
+#include <QBuffer>
+#include <QFile>
+
+#include "streams/HmacBlockStream.h"
+#include "core/Database.h"
+#include "core/Metadata.h"
+#include "core/CustomData.h"
+#include "crypto/CryptoHash.h"
+#include "crypto/Random.h"
+#include "format/KeePass2RandomStream.h"
+#include "format/KdbxXmlWriter.h"
+#include "streams/QtIOCompressor"
+#include "streams/SymmetricCipherStream.h"
+
+bool Kdbx4Writer::writeDatabase(QIODevice* device, Database* db)
+{
+ m_error = false;
+ m_errorStr.clear();
+
+ SymmetricCipher::Algorithm algo = SymmetricCipher::cipherToAlgorithm(db->cipher());
+ if (algo == SymmetricCipher::InvalidAlgorithm) {
+ raiseError(tr("Invalid symmetric cipher algorithm."));
+ return false;
+ }
+ int ivSize = SymmetricCipher::algorithmIvSize(algo);
+ if (ivSize < 0) {
+ raiseError(tr("Invalid symmetric cipher IV size.", "IV = Initialization Vector for symmetric cipher"));
+ return false;
+ }
+
+ QByteArray masterSeed = randomGen()->randomArray(32);
+ QByteArray encryptionIV = randomGen()->randomArray(ivSize);
+ QByteArray protectedStreamKey = randomGen()->randomArray(64);
+ QByteArray startBytes;
+ QByteArray endOfHeader = "\r\n\r\n";
+
+ if (!db->setKey(db->key(), false, true)) {
+ raiseError(tr("Unable to calculate master key"));
+ return false;
+ }
+
+ // generate transformed master key
+ CryptoHash hash(CryptoHash::Sha256);
+ hash.addData(masterSeed);
+ Q_ASSERT(!db->transformedMasterKey().isEmpty());
+ hash.addData(db->transformedMasterKey());
+ QByteArray finalKey = hash.result();
+
+ // write header
+ QByteArray headerData;
+ {
+ QBuffer header;
+ header.open(QIODevice::WriteOnly);
+
+ writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, KeePass2::FILE_VERSION_4);
+
+ CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::CipherID, db->cipher().toByteArray()));
+ CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::CompressionFlags,
+ Endian::sizedIntToBytes(static_cast<int>(db->compressionAlgo()),
+ KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::MasterSeed, masterSeed));
+ CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::EncryptionIV, encryptionIV));
+
+ // convert current Kdf to basic parameters
+ QVariantMap kdfParams = KeePass2::kdfToParameters(db->kdf());
+ QByteArray kdfParamBytes;
+ if (!serializeVariantMap(kdfParams, kdfParamBytes)) {
+ //: Translation comment: variant map = data structure for storing meta data
+ raiseError(tr("Failed to serialize KDF parameters variant map"));
+ return false;
+ }
+
+ CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::KdfParameters, kdfParamBytes));
+ QVariantMap publicCustomData = db->publicCustomData();
+ if (!publicCustomData.isEmpty()) {
+ QByteArray serialized;
+ serializeVariantMap(publicCustomData, serialized);
+ CHECK_RETURN_FALSE(writeHeaderField<quint32>(
+ &header, KeePass2::HeaderFieldID::PublicCustomData, serialized));
+ }
+
+ CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::EndOfHeader, endOfHeader));
+ header.close();
+ headerData = header.data();
+ }
+ CHECK_RETURN_FALSE(writeData(device, headerData));
+
+ // hash header
+ QByteArray headerHash = CryptoHash::hash(headerData, CryptoHash::Sha256);
+
+ // write HMAC-authenticated cipher stream
+ QByteArray hmacKey = KeePass2::hmacKey(masterSeed, db->transformedMasterKey());
+ QByteArray headerHmac = CryptoHash::hmac(headerData, HmacBlockStream::getHmacKey(UINT64_MAX, hmacKey),
+ CryptoHash::Sha256);
+ CHECK_RETURN_FALSE(writeData(device, headerHash));
+ CHECK_RETURN_FALSE(writeData(device, headerHmac));
+
+ QScopedPointer<HmacBlockStream> hmacBlockStream;
+ QScopedPointer<SymmetricCipherStream> cipherStream;
+
+ hmacBlockStream.reset(new HmacBlockStream(device, hmacKey));
+ if (!hmacBlockStream->open(QIODevice::WriteOnly)) {
+ raiseError(hmacBlockStream->errorString());
+ return false;
+ }
+
+ cipherStream.reset(new SymmetricCipherStream(hmacBlockStream.data(), algo,
+ SymmetricCipher::algorithmMode(algo),
+ SymmetricCipher::Encrypt));
+
+ if (!cipherStream->init(finalKey, encryptionIV)) {
+ raiseError(cipherStream->errorString());
+ return false;
+ }
+ if (!cipherStream->open(QIODevice::WriteOnly)) {
+ raiseError(cipherStream->errorString());
+ return false;
+ }
+
+ QIODevice* outputDevice = nullptr;
+ QScopedPointer<QtIOCompressor> ioCompressor;
+
+ if (db->compressionAlgo() == Database::CompressionNone) {
+ outputDevice = cipherStream.data();
+ } else {
+ ioCompressor.reset(new QtIOCompressor(cipherStream.data()));
+ ioCompressor->setStreamFormat(QtIOCompressor::GzipFormat);
+ if (!ioCompressor->open(QIODevice::WriteOnly)) {
+ raiseError(ioCompressor->errorString());
+ return false;
+ }
+ outputDevice = ioCompressor.data();
+ }
+
+ Q_ASSERT(outputDevice);
+
+ CHECK_RETURN_FALSE(writeInnerHeaderField(outputDevice, KeePass2::InnerHeaderFieldID::InnerRandomStreamID,
+ Endian::sizedIntToBytes(static_cast<int>(KeePass2::ProtectedStreamAlgo::ChaCha20),
+ KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeInnerHeaderField(outputDevice, KeePass2::InnerHeaderFieldID::InnerRandomStreamKey,
+ protectedStreamKey));
+
+ // Write attachments to the inner header
+ writeAttachments(outputDevice, db);
+
+ CHECK_RETURN_FALSE(writeInnerHeaderField(outputDevice, KeePass2::InnerHeaderFieldID::End, QByteArray()));
+
+ KeePass2RandomStream randomStream(KeePass2::ProtectedStreamAlgo::ChaCha20);
+ if (!randomStream.init(protectedStreamKey)) {
+ raiseError(randomStream.errorString());
+ return false;
+ }
+
+ KdbxXmlWriter xmlWriter(KeePass2::FILE_VERSION_4);
+ xmlWriter.writeDatabase(outputDevice, db, &randomStream, headerHash);
+
+ // Explicitly close/reset streams so they are flushed and we can detect
+ // errors. QIODevice::close() resets errorString() etc.
+ if (ioCompressor) {
+ ioCompressor->close();
+ }
+ if (!cipherStream->reset()) {
+ raiseError(cipherStream->errorString());
+ return false;
+ }
+ if (!hmacBlockStream->reset()) {
+ raiseError(hmacBlockStream->errorString());
+ return false;
+ }
+
+ if (xmlWriter.hasError()) {
+ raiseError(xmlWriter.errorString());
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Write KDBX4 inner header field.
+ *
+ * @param device output device
+ * @param fieldId field identifier
+ * @param data header payload
+ * @return true on success
+ */
+bool Kdbx4Writer::writeInnerHeaderField(QIODevice* device, KeePass2::InnerHeaderFieldID fieldId, const QByteArray& data)
+{
+ QByteArray fieldIdArr;
+ fieldIdArr[0] = static_cast<char>(fieldId);
+ CHECK_RETURN_FALSE(writeData(device, fieldIdArr));
+ CHECK_RETURN_FALSE(writeData(device, Endian::sizedIntToBytes(static_cast<quint32>(data.size()), KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeData(device, data));
+
+ return true;
+}
+
+void Kdbx4Writer::writeAttachments(QIODevice* device, Database* db)
+{
+ const QList<Entry*> allEntries = db->rootGroup()->entriesRecursive(true);
+ QSet<QByteArray> writtenAttachments;
+
+ for (Entry* entry : allEntries) {
+ const QList<QString> attachmentKeys = entry->attachments()->keys();
+ for (const QString& key : attachmentKeys) {
+ QByteArray data("\x01");
+ data.append(entry->attachments()->value(key));
+
+ if (writtenAttachments.contains(data)) {
+ continue;
+ }
+
+ writeInnerHeaderField(device, KeePass2::InnerHeaderFieldID::Binary, data);
+ writtenAttachments.insert(data);
+ }
+ }
+}
+
+/**
+ * Serialize variant map to byte array.
+ *
+ * @param map input variant map
+ * @param outputBytes output byte array
+ * @return true on success
+ */
+bool Kdbx4Writer::serializeVariantMap(const QVariantMap& map, QByteArray& outputBytes)
+{
+ QBuffer buf(&outputBytes);
+ buf.open(QIODevice::WriteOnly);
+ CHECK_RETURN_FALSE(buf.write(Endian::sizedIntToBytes(KeePass2::VARIANTMAP_VERSION, KeePass2::BYTEORDER)) == 2);
+
+ bool ok;
+ QList<QString> keys = map.keys();
+ for (const auto& k : keys) {
+ KeePass2::VariantMapFieldType fieldType;
+ QByteArray data;
+ QVariant v = map.value(k);
+ switch (static_cast<QMetaType::Type>(v.type())) {
+ case QMetaType::Type::Int:
+ fieldType = KeePass2::VariantMapFieldType::Int32;
+ data = Endian::sizedIntToBytes(v.toInt(&ok), KeePass2::BYTEORDER);
+ CHECK_RETURN_FALSE(ok);
+ break;
+ case QMetaType::Type::UInt:
+ fieldType = KeePass2::VariantMapFieldType::UInt32;
+ data = Endian::sizedIntToBytes(v.toUInt(&ok), KeePass2::BYTEORDER);
+ CHECK_RETURN_FALSE(ok);
+ break;
+ case QMetaType::Type::LongLong:
+ fieldType = KeePass2::VariantMapFieldType::Int64;
+ data = Endian::sizedIntToBytes(v.toLongLong(&ok), KeePass2::BYTEORDER);
+ CHECK_RETURN_FALSE(ok);
+ break;
+ case QMetaType::Type::ULongLong:
+ fieldType = KeePass2::VariantMapFieldType::UInt64;
+ data = Endian::sizedIntToBytes(v.toULongLong(&ok), KeePass2::BYTEORDER);
+ CHECK_RETURN_FALSE(ok);
+ break;
+ case QMetaType::Type::QString:
+ fieldType = KeePass2::VariantMapFieldType::String;
+ data = v.toString().toUtf8();
+ break;
+ case QMetaType::Type::Bool:
+ fieldType = KeePass2::VariantMapFieldType::Bool;
+ data = QByteArray(1, static_cast<char>(v.toBool() ? '\1' : '\0'));
+ break;
+ case QMetaType::Type::QByteArray:
+ fieldType = KeePass2::VariantMapFieldType::ByteArray;
+ data = v.toByteArray();
+ break;
+ default:
+ qWarning("Unknown object type %d in QVariantMap", v.type());
+ return false;
+ }
+ QByteArray typeBytes;
+ typeBytes[0] = static_cast<char>(fieldType);
+ QByteArray nameBytes = k.toUtf8();
+ QByteArray nameLenBytes = Endian::sizedIntToBytes(nameBytes.size(), KeePass2::BYTEORDER);
+ QByteArray dataLenBytes = Endian::sizedIntToBytes(data.size(), KeePass2::BYTEORDER);
+
+ CHECK_RETURN_FALSE(buf.write(typeBytes) == 1);
+ CHECK_RETURN_FALSE(buf.write(nameLenBytes) == 4);
+ CHECK_RETURN_FALSE(buf.write(nameBytes) == nameBytes.size());
+ CHECK_RETURN_FALSE(buf.write(dataLenBytes) == 4);
+ CHECK_RETURN_FALSE(buf.write(data) == data.size());
+ }
+
+ QByteArray endBytes;
+ endBytes[0] = static_cast<char>(KeePass2::VariantMapFieldType::End);
+ CHECK_RETURN_FALSE(buf.write(endBytes) == 1);
+ return true;
+}
diff --git a/src/format/Kdbx4Writer.h b/src/format/Kdbx4Writer.h
new file mode 100644
index 000000000..90a8e658e
--- /dev/null
+++ b/src/format/Kdbx4Writer.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_KDBX4WRITER_H
+#define KEEPASSX_KDBX4WRITER_H
+
+#include "KdbxWriter.h"
+
+/**
+ * KDBX4 writer implementation.
+ */
+class Kdbx4Writer : public KdbxWriter
+{
+Q_DECLARE_TR_FUNCTIONS(Kdbx4Writer)
+
+public:
+ bool writeDatabase(QIODevice* device, Database* db) override;
+
+private:
+ bool writeInnerHeaderField(QIODevice* device, KeePass2::InnerHeaderFieldID fieldId, const QByteArray& data);
+ void writeAttachments(QIODevice* device, Database* db);
+ static bool serializeVariantMap(const QVariantMap& map, QByteArray& outputBytes);
+};
+
+#endif // KEEPASSX_KDBX4WRITER_H
diff --git a/src/format/KdbxReader.cpp b/src/format/KdbxReader.cpp
new file mode 100644
index 000000000..36ff6d197
--- /dev/null
+++ b/src/format/KdbxReader.cpp
@@ -0,0 +1,267 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "KdbxReader.h"
+#include "core/Database.h"
+#include "core/Endian.h"
+
+/**
+ * Read KDBX magic header numbers from a device.
+ *
+ * @param device input device
+ * @param sig1 KDBX signature 1
+ * @param sig2 KDBX signature 2
+ * @param version KDBX version
+ * @return true if magic numbers were read successfully
+ */
+bool KdbxReader::readMagicNumbers(QIODevice* device, quint32& sig1, quint32& sig2, quint32& version)
+{
+ bool ok;
+ sig1 = Endian::readSizedInt<quint32>(device, KeePass2::BYTEORDER, &ok);
+ if (!ok) {
+ return false;
+ }
+
+ sig2 = Endian::readSizedInt<quint32>(device, KeePass2::BYTEORDER, &ok);
+ if (!ok) {
+ return false;
+ }
+
+ version = Endian::readSizedInt<quint32>(device, KeePass2::BYTEORDER, &ok);
+
+ return ok;
+}
+
+/**
+ * Read KDBX stream from device.
+ * The device will automatically be reset to 0 before reading.
+ *
+ * @param device input device
+ * @param key database encryption composite key
+ * @param keepDatabase keep database in case of read failure
+ * @return pointer to the read database, nullptr on failure
+ */
+Database* KdbxReader::readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase)
+{
+ device->seek(0);
+
+ m_db.reset(new Database());
+ m_xmlData.clear();
+ m_masterSeed.clear();
+ m_encryptionIV.clear();
+ m_streamStartBytes.clear();
+ m_protectedStreamKey.clear();
+
+ StoreDataStream headerStream(device);
+ headerStream.open(QIODevice::ReadOnly);
+
+ // read KDBX magic numbers
+ quint32 sig1, sig2;
+ readMagicNumbers(&headerStream, sig1, sig2, m_kdbxVersion);
+ m_kdbxSignature = qMakePair(sig1, sig2);
+
+ // mask out minor version
+ m_kdbxVersion &= KeePass2::FILE_VERSION_CRITICAL_MASK;
+
+ // read header fields
+ while (readHeaderField(headerStream) && !hasError()) {
+ }
+
+ headerStream.close();
+
+ if (hasError()) {
+ return nullptr;
+ }
+
+ // read payload
+ return readDatabaseImpl(device, headerStream.storedData(), key, keepDatabase);
+}
+
+bool KdbxReader::hasError() const
+{
+ return m_error;
+}
+
+QString KdbxReader::errorString() const
+{
+ return m_errorStr;
+}
+
+bool KdbxReader::saveXml() const
+{
+ return m_saveXml;
+}
+
+void KdbxReader::setSaveXml(bool save)
+{
+ m_saveXml = save;
+}
+
+QByteArray KdbxReader::xmlData() const
+{
+ return m_xmlData;
+}
+
+QByteArray KdbxReader::streamKey() const
+{
+ return m_protectedStreamKey;
+}
+
+KeePass2::ProtectedStreamAlgo KdbxReader::protectedStreamAlgo() const
+{
+ return m_irsAlgo;
+}
+
+/**
+ * @param data stream cipher UUID as bytes
+ */
+void KdbxReader::setCipher(const QByteArray& data)
+{
+ if (data.size() != Uuid::Length) {
+ raiseError(tr("Invalid cipher uuid length"));
+ return;
+ }
+
+ Uuid uuid(data);
+
+ if (SymmetricCipher::cipherToAlgorithm(uuid) == SymmetricCipher::InvalidAlgorithm) {
+ raiseError(tr("Unsupported cipher"));
+ return;
+ }
+ m_db->setCipher(uuid);
+}
+
+/**
+ * @param data compression flags as bytes
+ */
+void KdbxReader::setCompressionFlags(const QByteArray& data)
+{
+ if (data.size() != 4) {
+ raiseError(tr("Invalid compression flags length"));
+ return;
+ }
+ auto id = Endian::bytesToSizedInt<quint32>(data, KeePass2::BYTEORDER);
+
+ if (id > Database::CompressionAlgorithmMax) {
+ raiseError(tr("Unsupported compression algorithm"));
+ return;
+ }
+ m_db->setCompressionAlgo(static_cast<Database::CompressionAlgorithm>(id));
+}
+
+/**
+ * @param data master seed as bytes
+ */
+void KdbxReader::setMasterSeed(const QByteArray& data)
+{
+ if (data.size() != 32) {
+ raiseError(tr("Invalid master seed size"));
+ return;
+ }
+ m_masterSeed = data;
+}
+
+/**
+ * @param data KDF seed as bytes
+ */
+void KdbxReader::setTransformSeed(const QByteArray& data)
+{
+ if (data.size() != 32) {
+ raiseError(tr("Invalid transform seed size"));
+ return;
+ }
+
+ auto kdf = m_db->kdf();
+ if (!kdf.isNull()) {
+ kdf->setSeed(data);
+ }
+}
+
+/**
+ * @param data KDF transform rounds as bytes
+ */
+void KdbxReader::setTransformRounds(const QByteArray& data)
+{
+ if (data.size() != 8) {
+ raiseError(tr("Invalid transform rounds size"));
+ return;
+ }
+
+ auto rounds = Endian::bytesToSizedInt<quint64>(data, KeePass2::BYTEORDER);
+ auto kdf = m_db->kdf();
+ if (!kdf.isNull()) {
+ kdf->setRounds(static_cast<int>(rounds));
+ }
+}
+
+/**
+ * @param data cipher stream IV as bytes
+ */
+void KdbxReader::setEncryptionIV(const QByteArray& data)
+{
+ m_encryptionIV = data;
+}
+
+/**
+ * @param data key for random (inner) stream as bytes
+ */
+void KdbxReader::setProtectedStreamKey(const QByteArray& data)
+{
+ m_protectedStreamKey = data;
+}
+
+/**
+ * @param data start bytes for cipher stream
+ */
+void KdbxReader::setStreamStartBytes(const QByteArray& data)
+{
+ if (data.size() != 32) {
+ raiseError(tr("Invalid start bytes size"));
+ return;
+ }
+ m_streamStartBytes = data;
+}
+
+/**
+ * @param data id of inner cipher stream algorithm
+ */
+void KdbxReader::setInnerRandomStreamID(const QByteArray& data)
+{
+ if (data.size() != 4) {
+ raiseError(tr("Invalid random stream id size"));
+ return;
+ }
+ auto id = Endian::bytesToSizedInt<quint32>(data, KeePass2::BYTEORDER);
+ KeePass2::ProtectedStreamAlgo irsAlgo = KeePass2::idToProtectedStreamAlgo(id);
+ if (irsAlgo == KeePass2::ProtectedStreamAlgo::InvalidProtectedStreamAlgo ||
+ irsAlgo == KeePass2::ProtectedStreamAlgo::ArcFourVariant) {
+ raiseError(tr("Invalid inner random stream cipher"));
+ return;
+ }
+ m_irsAlgo = irsAlgo;
+}
+
+/**
+ * Raise an error. Use in case of an unexpected read error.
+ *
+ * @param errorMessage error message
+ */
+void KdbxReader::raiseError(const QString& errorMessage)
+{
+ m_error = true;
+ m_errorStr = errorMessage;
+}
diff --git a/src/format/KdbxReader.h b/src/format/KdbxReader.h
new file mode 100644
index 000000000..994cfb7ef
--- /dev/null
+++ b/src/format/KdbxReader.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_KDBXREADER_H
+#define KEEPASSXC_KDBXREADER_H
+
+#include "KeePass2.h"
+#include "keys/CompositeKey.h"
+#include "streams/StoreDataStream.h"
+
+#include <QCoreApplication>
+#include <QPointer>
+
+class Database;
+class QIODevice;
+
+/**
+ * Abstract KDBX reader base class.
+ */
+class KdbxReader
+{
+Q_DECLARE_TR_FUNCTIONS(KdbxReader)
+
+public:
+ KdbxReader() = default;
+ virtual ~KdbxReader() = default;
+
+ static bool readMagicNumbers(QIODevice* device, quint32& sig1, quint32& sig2, quint32& version);
+ Database* readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase = false);
+
+ bool hasError() const;
+ QString errorString() const;
+
+ bool saveXml() const;
+ void setSaveXml(bool save);
+ QByteArray xmlData() const;
+ QByteArray streamKey() const;
+ KeePass2::ProtectedStreamAlgo protectedStreamAlgo() const;
+
+protected:
+ /**
+ * Concrete reader implementation for reading database from device.
+ *
+ * @param device input device at the payload starting position
+ * @param KDBX header data as bytes
+ * @param key database encryption composite key
+ * @param keepDatabase keep database in case of read failure
+ * @return pointer to the read database, nullptr on failure
+ */
+ virtual Database* readDatabaseImpl(QIODevice* device, const QByteArray& headerData,
+ const CompositeKey& key, bool keepDatabase) = 0;
+
+ /**
+ * Read next header field from stream.
+ *
+ * @param headerStream input header stream
+ * @return true if there are more header fields
+ */
+ virtual bool readHeaderField(StoreDataStream& headerStream) = 0;
+
+ virtual void setCipher(const QByteArray& data);
+ virtual void setCompressionFlags(const QByteArray& data);
+ virtual void setMasterSeed(const QByteArray& data);
+ virtual void setTransformSeed(const QByteArray& data);
+ virtual void setTransformRounds(const QByteArray& data);
+ virtual void setEncryptionIV(const QByteArray& data);
+ virtual void setProtectedStreamKey(const QByteArray& data);
+ virtual void setStreamStartBytes(const QByteArray& data);
+ virtual void setInnerRandomStreamID(const QByteArray& data);
+
+ void raiseError(const QString& errorMessage);
+
+ QScopedPointer<Database> m_db;
+
+ QPair<quint32, quint32> m_kdbxSignature;
+ quint32 m_kdbxVersion = 0;
+
+ QByteArray m_masterSeed;
+ QByteArray m_encryptionIV;
+ QByteArray m_streamStartBytes;
+ QByteArray m_protectedStreamKey;
+ KeePass2::ProtectedStreamAlgo m_irsAlgo = KeePass2::ProtectedStreamAlgo::InvalidProtectedStreamAlgo;
+
+ QByteArray m_xmlData;
+
+private:
+ bool m_saveXml = false;
+ bool m_error = false;
+ QString m_errorStr = "";
+};
+
+
+#endif //KEEPASSXC_KDBXREADER_H
diff --git a/src/format/KdbxWriter.cpp b/src/format/KdbxWriter.cpp
new file mode 100644
index 000000000..6016cf3a6
--- /dev/null
+++ b/src/format/KdbxWriter.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "KdbxWriter.h"
+
+bool KdbxWriter::hasError() const
+{
+ return m_error;
+}
+
+QString KdbxWriter::errorString() const
+{
+ return m_errorStr;
+}
+
+/**
+ * Write KDBX magic header numbers to a device.
+ *
+ * @param device output device
+ * @param sig1 KDBX signature 1
+ * @param sig2 KDBX signature 2
+ * @param version KDBX version
+ * @return true if magic numbers were written successfully
+ */
+bool KdbxWriter::writeMagicNumbers(QIODevice* device, quint32 sig1, quint32 sig2, quint32 version)
+{
+ CHECK_RETURN_FALSE(writeData(device, Endian::sizedIntToBytes<qint32>(sig1, KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeData(device, Endian::sizedIntToBytes<qint32>(sig2, KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeData(device, Endian::sizedIntToBytes<qint32>(version, KeePass2::BYTEORDER)));
+
+ return true;
+}
+
+/**
+ * Helper method for writing bytes to the device and raising an error
+ * in case of write failure.
+ *
+ * @param device output device
+ * @param data byte contents
+ * @return true on success
+ */
+bool KdbxWriter::writeData(QIODevice* device, const QByteArray& data)
+{
+ if (device->write(data) != data.size()) {
+ raiseError(device->errorString());
+ return false;
+ }
+ return true;
+}
+
+/**
+ * Raise an error. Use in case of an unexpected write error.
+ *
+ * @param errorMessage error message
+ */
+void KdbxWriter::raiseError(const QString& errorMessage)
+{
+ m_error = true;
+ m_errorStr = errorMessage;
+}
diff --git a/src/format/KdbxWriter.h b/src/format/KdbxWriter.h
new file mode 100644
index 000000000..5aa41766e
--- /dev/null
+++ b/src/format/KdbxWriter.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_KDBXWRITER_H
+#define KEEPASSXC_KDBXWRITER_H
+
+#include "KeePass2.h"
+#include "core/Endian.h"
+
+#include <QCoreApplication>
+
+#define CHECK_RETURN_FALSE(x) if (!(x)) return false;
+
+class QIODevice;
+class Database;
+
+/**
+ * Abstract KDBX writer base class.
+ */
+class KdbxWriter
+{
+Q_DECLARE_TR_FUNCTIONS(KdbxWriter)
+
+public:
+ KdbxWriter() = default;
+ virtual ~KdbxWriter() = default;
+
+ bool writeMagicNumbers(QIODevice* device, quint32 sig1, quint32 sig2, quint32 version);
+
+ /**
+ * Write a database to a device in KDBX format.
+ *
+ * @param device output device
+ * @param db source database
+ * @return true on success
+ */
+ virtual bool writeDatabase(QIODevice* device, Database* db) = 0;
+
+ bool hasError() const;
+ QString errorString() const;
+
+protected:
+
+ /**
+ * Helper method for writing a KDBX header field to a device.
+ *
+ * @tparam SizedQInt field width
+ * @param device output device
+ * @param fieldId field identifier
+ * @param data field contents
+ * @return true on success
+ */
+ template <typename SizedQInt>
+ bool writeHeaderField(QIODevice* device, KeePass2::HeaderFieldID fieldId, const QByteArray& data)
+ {
+ Q_ASSERT(static_cast<unsigned long>(data.size()) < (1ull << (sizeof(SizedQInt) * 8)));
+
+ QByteArray fieldIdArr;
+ fieldIdArr[0] = static_cast<char>(fieldId);
+ CHECK_RETURN_FALSE(writeData(device, fieldIdArr));
+ CHECK_RETURN_FALSE(writeData(device, Endian::sizedIntToBytes<SizedQInt>(static_cast<SizedQInt>(data.size()),
+ KeePass2::BYTEORDER)));
+ CHECK_RETURN_FALSE(writeData(device, data));
+
+ return true;
+ }
+
+ bool writeData(QIODevice* device, const QByteArray& data);
+ void raiseError(const QString& errorMessage);
+
+ bool m_error = false;
+ QString m_errorStr = "";
+};
+
+
+#endif //KEEPASSXC_KDBXWRITER_H
diff --git a/src/format/KeePass2XmlReader.cpp b/src/format/KdbxXmlReader.cpp
index e4ceb1762..8f6bd2835 100644
--- a/src/format/KeePass2XmlReader.cpp
+++ b/src/format/KdbxXmlReader.cpp
@@ -1,51 +1,86 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
*
- * 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 General Public License for more details.
+ * 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 General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "KeePass2XmlReader.h"
+#include "KdbxXmlReader.h"
+#include "KeePass2RandomStream.h"
+#include "core/Global.h"
+#include "core/Tools.h"
+#include "core/Entry.h"
+#include "core/Group.h"
+#include "core/DatabaseIcons.h"
+#include "core/Endian.h"
+#include "streams/QtIOCompressor"
-#include <QBuffer>
#include <QFile>
+#include <QBuffer>
-#include "core/Database.h"
-#include "core/DatabaseIcons.h"
-#include "core/Group.h"
-#include "core/Metadata.h"
-#include "core/Tools.h"
-#include "format/KeePass2RandomStream.h"
-#include "streams/QtIOCompressor"
+/**
+ * @param version KDBX version
+ */
+KdbxXmlReader::KdbxXmlReader(quint32 version)
+ : m_kdbxVersion(version)
+{
+}
-typedef QPair<QString, QString> StringPair;
+/**
+ * @param version KDBX version
+ * @param binaryPool binary pool
+ */
+KdbxXmlReader::KdbxXmlReader(quint32 version, const QHash<QString, QByteArray>& binaryPool)
+ : m_kdbxVersion(version)
+ , m_binaryPool(binaryPool)
+{
+}
-KeePass2XmlReader::KeePass2XmlReader()
- : m_randomStream(nullptr)
- , m_db(nullptr)
- , m_meta(nullptr)
- , m_tmpParent(nullptr)
- , m_error(false)
- , m_strictMode(false)
+/**
+ * Read XML contents from a file into a new database.
+ *
+ * @param device input file
+ * @return pointer to the new database
+ */
+Database* KdbxXmlReader::readDatabase(const QString& filename)
{
+ QFile file(filename);
+ file.open(QIODevice::ReadOnly);
+ return readDatabase(&file);
}
-void KeePass2XmlReader::setStrictMode(bool strictMode)
+/**
+ * Read XML stream from a device into a new database.
+ *
+ * @param device input device
+ * @return pointer to the new database
+ */
+Database* KdbxXmlReader::readDatabase(QIODevice* device)
{
- m_strictMode = strictMode;
+ auto db = new Database();
+ readDatabase(device, db);
+ return db;
}
-void KeePass2XmlReader::readDatabase(QIODevice* device, Database* db, KeePass2RandomStream* randomStream)
+/**
+ * Read XML contents from a device into a given database using a \link KeePass2RandomStream.
+ *
+ * @param device input device
+ * @param db database to read into
+ * @param randomStream random stream to use for decryption
+ */
+#include "QDebug"
+void KdbxXmlReader::readDatabase(QIODevice* device, Database* db, KeePass2RandomStream* randomStream)
{
m_error = false;
m_errorStr.clear();
@@ -60,30 +95,32 @@ void KeePass2XmlReader::readDatabase(QIODevice* device, Database* db, KeePass2Ra
m_randomStream = randomStream;
m_headerHash.clear();
- m_tmpParent = new Group();
+ m_tmpParent.reset(new Group());
bool rootGroupParsed = false;
- if (!m_xml.error() && m_xml.readNextStartElement()) {
- if (m_xml.name() == "KeePassFile") {
- rootGroupParsed = parseKeePassFile();
- }
+ if (m_xml.hasError()) {
+ raiseError(tr("XML parsing failure: %1").arg(m_xml.error()));
+ return;
}
- if (!m_xml.error() && !rootGroupParsed) {
- raiseError("No root group");
+ if (m_xml.readNextStartElement() && m_xml.name() == "KeePassFile") {
+ rootGroupParsed = parseKeePassFile();
}
- if (!m_xml.error()) {
- if (!m_tmpParent->children().isEmpty()) {
- qWarning("KeePass2XmlReader::readDatabase: found %d invalid group reference(s)",
- m_tmpParent->children().size());
- }
+ if (!rootGroupParsed) {
+ raiseError(tr("No root group"));
+ return;
+ }
- if (!m_tmpParent->entries().isEmpty()) {
- qWarning("KeePass2XmlReader::readDatabase: found %d invalid entry reference(s)",
- m_tmpParent->children().size());
- }
+ if (!m_tmpParent->children().isEmpty()) {
+ qWarning("KdbxXmlReader::readDatabase: found %d invalid group reference(s)",
+ m_tmpParent->children().size());
+ }
+
+ if (!m_tmpParent->entries().isEmpty()) {
+ qWarning("KdbxXmlReader::readDatabase: found %d invalid entry reference(s)",
+ m_tmpParent->children().size());
}
const QSet<QString> poolKeys = m_binaryPool.keys().toSet();
@@ -92,13 +129,11 @@ void KeePass2XmlReader::readDatabase(QIODevice* device, Database* db, KeePass2Ra
const QSet<QString> unusedKeys = poolKeys - entryKeys;
if (!unmappedKeys.isEmpty()) {
- raiseError("Unmapped keys left.");
+ qWarning("Unmapped keys left.");
}
- if (!m_xml.error()) {
- for (const QString& key : unusedKeys) {
- qWarning("KeePass2XmlReader::readDatabase: found unused key \"%s\"", qPrintable(key));
- }
+ for (const QString& key : unusedKeys) {
+ qWarning("KdbxXmlReader::readDatabase: found unused key \"%s\"", qPrintable(key));
}
QHash<QString, QPair<Entry*, QString> >::const_iterator i;
@@ -123,230 +158,187 @@ void KeePass2XmlReader::readDatabase(QIODevice* device, Database* db, KeePass2Ra
histEntry->setUpdateTimeinfo(true);
}
}
-
- delete m_tmpParent;
}
-Database* KeePass2XmlReader::readDatabase(QIODevice* device)
+bool KdbxXmlReader::strictMode() const
{
- Database* db = new Database();
- readDatabase(device, db);
- return db;
+ return m_strictMode;
}
-Database* KeePass2XmlReader::readDatabase(const QString& filename)
+void KdbxXmlReader::setStrictMode(bool strictMode)
{
- QFile file(filename);
- file.open(QIODevice::ReadOnly);
- return readDatabase(&file);
+ m_strictMode = strictMode;
}
-bool KeePass2XmlReader::hasError()
+bool KdbxXmlReader::hasError() const
{
return m_error || m_xml.hasError();
}
-QString KeePass2XmlReader::errorString()
+QString KdbxXmlReader::errorString() const
{
if (m_error) {
return m_errorStr;
- }
- else if (m_xml.hasError()) {
+ }if (m_xml.hasError()) {
return QString("XML error:\n%1\nLine %2, column %3")
- .arg(m_xml.errorString())
- .arg(m_xml.lineNumber())
- .arg(m_xml.columnNumber());
- }
- else {
- return QString();
+ .arg(m_xml.errorString())
+ .arg(m_xml.lineNumber())
+ .arg(m_xml.columnNumber());
}
+ return QString();
}
-void KeePass2XmlReader::raiseError(const QString& errorMessage)
+void KdbxXmlReader::raiseError(const QString& errorMessage)
{
m_error = true;
m_errorStr = errorMessage;
}
-QByteArray KeePass2XmlReader::headerHash()
+QByteArray KdbxXmlReader::headerHash() const
{
return m_headerHash;
}
-bool KeePass2XmlReader::parseKeePassFile()
+bool KdbxXmlReader::parseKeePassFile()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "KeePassFile");
bool rootElementFound = false;
bool rootParsedSuccessfully = false;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Meta") {
parseMeta();
+ continue;
}
- else if (m_xml.name() == "Root") {
+
+ if (m_xml.name() == "Root") {
if (rootElementFound) {
rootParsedSuccessfully = false;
- raiseError("Multiple root elements");
- }
- else {
+ qWarning("Multiple root elements");
+ } else {
rootParsedSuccessfully = parseRoot();
rootElementFound = true;
}
+ continue;
}
- else {
- skipCurrentElement();
- }
+
+ skipCurrentElement();
}
return rootParsedSuccessfully;
}
-void KeePass2XmlReader::parseMeta()
+void KdbxXmlReader::parseMeta()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Meta");
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Generator") {
m_meta->setGenerator(readString());
- }
- else if (m_xml.name() == "HeaderHash") {
+ } else if (m_xml.name() == "HeaderHash") {
m_headerHash = readBinary();
- }
- else if (m_xml.name() == "DatabaseName") {
+ } else if (m_xml.name() == "DatabaseName") {
m_meta->setName(readString());
- }
- else if (m_xml.name() == "DatabaseNameChanged") {
+ } else if (m_xml.name() == "DatabaseNameChanged") {
m_meta->setNameChanged(readDateTime());
- }
- else if (m_xml.name() == "DatabaseDescription") {
+ } else if (m_xml.name() == "DatabaseDescription") {
m_meta->setDescription(readString());
- }
- else if (m_xml.name() == "DatabaseDescriptionChanged") {
+ } else if (m_xml.name() == "DatabaseDescriptionChanged") {
m_meta->setDescriptionChanged(readDateTime());
- }
- else if (m_xml.name() == "DefaultUserName") {
+ } else if (m_xml.name() == "DefaultUserName") {
m_meta->setDefaultUserName(readString());
- }
- else if (m_xml.name() == "DefaultUserNameChanged") {
+ } else if (m_xml.name() == "DefaultUserNameChanged") {
m_meta->setDefaultUserNameChanged(readDateTime());
- }
- else if (m_xml.name() == "MaintenanceHistoryDays") {
+ } else if (m_xml.name() == "MaintenanceHistoryDays") {
m_meta->setMaintenanceHistoryDays(readNumber());
- }
- else if (m_xml.name() == "Color") {
+ } else if (m_xml.name() == "Color") {
m_meta->setColor(readColor());
- }
- else if (m_xml.name() == "MasterKeyChanged") {
+ } else if (m_xml.name() == "MasterKeyChanged") {
m_meta->setMasterKeyChanged(readDateTime());
- }
- else if (m_xml.name() == "MasterKeyChangeRec") {
+ } else if (m_xml.name() == "MasterKeyChangeRec") {
m_meta->setMasterKeyChangeRec(readNumber());
- }
- else if (m_xml.name() == "MasterKeyChangeForce") {
+ } else if (m_xml.name() == "MasterKeyChangeForce") {
m_meta->setMasterKeyChangeForce(readNumber());
- }
- else if (m_xml.name() == "MemoryProtection") {
+ } else if (m_xml.name() == "MemoryProtection") {
parseMemoryProtection();
- }
- else if (m_xml.name() == "CustomIcons") {
+ } else if (m_xml.name() == "CustomIcons") {
parseCustomIcons();
- }
- else if (m_xml.name() == "RecycleBinEnabled") {
+ } else if (m_xml.name() == "RecycleBinEnabled") {
m_meta->setRecycleBinEnabled(readBool());
- }
- else if (m_xml.name() == "RecycleBinUUID") {
+ } else if (m_xml.name() == "RecycleBinUUID") {
m_meta->setRecycleBin(getGroup(readUuid()));
- }
- else if (m_xml.name() == "RecycleBinChanged") {
+ } else if (m_xml.name() == "RecycleBinChanged") {
m_meta->setRecycleBinChanged(readDateTime());
- }
- else if (m_xml.name() == "EntryTemplatesGroup") {
+ } else if (m_xml.name() == "EntryTemplatesGroup") {
m_meta->setEntryTemplatesGroup(getGroup(readUuid()));
- }
- else if (m_xml.name() == "EntryTemplatesGroupChanged") {
+ } else if (m_xml.name() == "EntryTemplatesGroupChanged") {
m_meta->setEntryTemplatesGroupChanged(readDateTime());
- }
- else if (m_xml.name() == "LastSelectedGroup") {
+ } else if (m_xml.name() == "LastSelectedGroup") {
m_meta->setLastSelectedGroup(getGroup(readUuid()));
- }
- else if (m_xml.name() == "LastTopVisibleGroup") {
+ } else if (m_xml.name() == "LastTopVisibleGroup") {
m_meta->setLastTopVisibleGroup(getGroup(readUuid()));
- }
- else if (m_xml.name() == "HistoryMaxItems") {
+ } else if (m_xml.name() == "HistoryMaxItems") {
int value = readNumber();
if (value >= -1) {
m_meta->setHistoryMaxItems(value);
+ } else {
+ qWarning("HistoryMaxItems invalid number");
}
- else {
- raiseError("HistoryMaxItems invalid number");
- }
- }
- else if (m_xml.name() == "HistoryMaxSize") {
+ } else if (m_xml.name() == "HistoryMaxSize") {
int value = readNumber();
if (value >= -1) {
m_meta->setHistoryMaxSize(value);
+ } else {
+ qWarning("HistoryMaxSize invalid number");
}
- else {
- raiseError("HistoryMaxSize invalid number");
- }
- }
- else if (m_xml.name() == "Binaries") {
+ } else if (m_xml.name() == "Binaries") {
parseBinaries();
- }
- else if (m_xml.name() == "CustomData") {
- parseCustomData();
- }
- else {
+ } else if (m_xml.name() == "CustomData") {
+ parseCustomData(m_meta->customData());
+ } else if (m_xml.name() == "SettingsChanged") {
+ m_meta->setSettingsChanged(readDateTime());
+ } else {
skipCurrentElement();
}
}
}
-void KeePass2XmlReader::parseMemoryProtection()
+void KdbxXmlReader::parseMemoryProtection()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "MemoryProtection");
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "ProtectTitle") {
m_meta->setProtectTitle(readBool());
- }
- else if (m_xml.name() == "ProtectUserName") {
+ } else if (m_xml.name() == "ProtectUserName") {
m_meta->setProtectUsername(readBool());
- }
- else if (m_xml.name() == "ProtectPassword") {
+ } else if (m_xml.name() == "ProtectPassword") {
m_meta->setProtectPassword(readBool());
- }
- else if (m_xml.name() == "ProtectURL") {
+ } else if (m_xml.name() == "ProtectURL") {
m_meta->setProtectUrl(readBool());
- }
- else if (m_xml.name() == "ProtectNotes") {
+ } else if (m_xml.name() == "ProtectNotes") {
m_meta->setProtectNotes(readBool());
- }
- /*else if (m_xml.name() == "AutoEnableVisualHiding") {
- m_meta->setAutoEnableVisualHiding(readBool());
- }*/
- else {
+ } else {
skipCurrentElement();
}
}
}
-void KeePass2XmlReader::parseCustomIcons()
+void KdbxXmlReader::parseCustomIcons()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "CustomIcons");
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Icon") {
parseIcon();
- }
- else {
+ } else {
skipCurrentElement();
}
}
}
-void KeePass2XmlReader::parseIcon()
+void KdbxXmlReader::parseIcon()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Icon");
@@ -355,74 +347,70 @@ void KeePass2XmlReader::parseIcon()
bool uuidSet = false;
bool iconSet = false;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "UUID") {
uuid = readUuid();
uuidSet = !uuid.isNull();
- }
- else if (m_xml.name() == "Data") {
+ } else if (m_xml.name() == "Data") {
icon.loadFromData(readBinary());
iconSet = true;
- }
- else {
+ } else {
skipCurrentElement();
}
}
if (uuidSet && iconSet) {
m_meta->addCustomIcon(uuid, icon);
+ return;
}
- else {
- raiseError("Missing icon uuid or data");
- }
+
+ raiseError(tr("Missing icon uuid or data"));
}
-void KeePass2XmlReader::parseBinaries()
+void KdbxXmlReader::parseBinaries()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Binaries");
- while (!m_xml.error() && m_xml.readNextStartElement()) {
- if (m_xml.name() == "Binary") {
- QXmlStreamAttributes attr = m_xml.attributes();
-
- QString id = attr.value("ID").toString();
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
+ if (m_xml.name() != "Binary") {
+ skipCurrentElement();
+ continue;
+ }
- QByteArray data;
- if (attr.value("Compressed").compare(QLatin1String("True"), Qt::CaseInsensitive) == 0) {
- data = readCompressedBinary();
- }
- else {
- data = readBinary();
- }
+ QXmlStreamAttributes attr = m_xml.attributes();
- if (m_binaryPool.contains(id)) {
- qWarning("KeePass2XmlReader::parseBinaries: overwriting binary item \"%s\"",
- qPrintable(id));
- }
+ QString id = attr.value("ID").toString();
- m_binaryPool.insert(id, data);
+ QByteArray data;
+ if (attr.value("Compressed").compare(QLatin1String("True"), Qt::CaseInsensitive) == 0) {
+ data = readCompressedBinary();
+ } else {
+ data = readBinary();
}
- else {
- skipCurrentElement();
+
+ if (m_binaryPool.contains(id)) {
+ qWarning("KdbxXmlReader::parseBinaries: overwriting binary item \"%s\"",
+ qPrintable(id));
}
+
+ m_binaryPool.insert(id, data);
}
}
-void KeePass2XmlReader::parseCustomData()
+void KdbxXmlReader::parseCustomData(CustomData* customData)
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "CustomData");
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Item") {
- parseCustomDataItem();
- }
- else {
- skipCurrentElement();
+ parseCustomDataItem(customData);
+ continue;
}
+ skipCurrentElement();
}
}
-void KeePass2XmlReader::parseCustomDataItem()
+void KdbxXmlReader::parseCustomDataItem(CustomData* customData)
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Item");
@@ -431,40 +419,38 @@ void KeePass2XmlReader::parseCustomDataItem()
bool keySet = false;
bool valueSet = false;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Key") {
key = readString();
keySet = true;
- }
- else if (m_xml.name() == "Value") {
+ } else if (m_xml.name() == "Value") {
value = readString();
valueSet = true;
- }
- else {
+ } else {
skipCurrentElement();
}
}
if (keySet && valueSet) {
- m_meta->addCustomField(key, value);
- }
- else {
- raiseError("Missing custom data key or value");
+ customData->set(key, value);
+ return;
}
+
+ raiseError(tr("Missing custom data key or value"));
}
-bool KeePass2XmlReader::parseRoot()
+bool KdbxXmlReader::parseRoot()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Root");
bool groupElementFound = false;
bool groupParsedSuccessfully = false;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Group") {
if (groupElementFound) {
groupParsedSuccessfully = false;
- raiseError("Multiple group elements");
+ raiseError(tr("Multiple group elements"));
continue;
}
@@ -477,11 +463,9 @@ bool KeePass2XmlReader::parseRoot()
}
groupElementFound = true;
- }
- else if (m_xml.name() == "DeletedObjects") {
+ } else if (m_xml.name() == "DeletedObjects") {
parseDeletedObjects();
- }
- else {
+ } else {
skipCurrentElement();
}
}
@@ -489,115 +473,122 @@ bool KeePass2XmlReader::parseRoot()
return groupParsedSuccessfully;
}
-Group* KeePass2XmlReader::parseGroup()
+Group* KdbxXmlReader::parseGroup()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Group");
- Group* group = new Group();
+ auto group = new Group();
group->setUpdateTimeinfo(false);
QList<Group*> children;
QList<Entry*> entries;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "UUID") {
Uuid uuid = readUuid();
if (uuid.isNull()) {
if (m_strictMode) {
- raiseError("Null group uuid");
- }
- else {
+ raiseError(tr("Null group uuid"));
+ } else {
group->setUuid(Uuid::random());
}
- }
- else {
+ } else {
group->setUuid(uuid);
}
+ continue;
}
- else if (m_xml.name() == "Name") {
+ if (m_xml.name() == "Name") {
group->setName(readString());
+ continue;
}
- else if (m_xml.name() == "Notes") {
+ if (m_xml.name() == "Notes") {
group->setNotes(readString());
+ continue;
}
- else if (m_xml.name() == "IconID") {
+ if (m_xml.name() == "IconID") {
int iconId = readNumber();
if (iconId < 0) {
if (m_strictMode) {
- raiseError("Invalid group icon number");
+ raiseError(tr("Invalid group icon number"));
}
iconId = 0;
+ } else if (iconId >= DatabaseIcons::IconCount) {
+ qWarning("KdbxXmlReader::parseGroup: icon id \"%d\" not supported", iconId);
+ iconId = DatabaseIcons::IconCount - 1;
}
- else {
- if (iconId >= DatabaseIcons::IconCount) {
- qWarning("KeePass2XmlReader::parseGroup: icon id \"%d\" not supported", iconId);
- }
- group->setIcon(iconId);
- }
+
+ group->setIcon(iconId);
+ continue;
}
- else if (m_xml.name() == "CustomIconUUID") {
+ if (m_xml.name() == "CustomIconUUID") {
Uuid uuid = readUuid();
if (!uuid.isNull()) {
group->setIcon(uuid);
}
+ continue;
}
- else if (m_xml.name() == "Times") {
+ if (m_xml.name() == "Times") {
group->setTimeInfo(parseTimes());
+ continue;
}
- else if (m_xml.name() == "IsExpanded") {
+ if (m_xml.name() == "IsExpanded") {
group->setExpanded(readBool());
+ continue;
}
- else if (m_xml.name() == "DefaultAutoTypeSequence") {
+ if (m_xml.name() == "DefaultAutoTypeSequence") {
group->setDefaultAutoTypeSequence(readString());
+ continue;
}
- else if (m_xml.name() == "EnableAutoType") {
+ if (m_xml.name() == "EnableAutoType") {
QString str = readString();
if (str.compare("null", Qt::CaseInsensitive) == 0) {
group->setAutoTypeEnabled(Group::Inherit);
- }
- else if (str.compare("true", Qt::CaseInsensitive) == 0) {
+ } else if (str.compare("true", Qt::CaseInsensitive) == 0) {
group->setAutoTypeEnabled(Group::Enable);
- }
- else if (str.compare("false", Qt::CaseInsensitive) == 0) {
+ } else if (str.compare("false", Qt::CaseInsensitive) == 0) {
group->setAutoTypeEnabled(Group::Disable);
+ } else {
+ raiseError(tr("Invalid EnableAutoType value"));
}
- else {
- raiseError("Invalid EnableAutoType value");
- }
+ continue;
}
- else if (m_xml.name() == "EnableSearching") {
+ if (m_xml.name() == "EnableSearching") {
QString str = readString();
if (str.compare("null", Qt::CaseInsensitive) == 0) {
group->setSearchingEnabled(Group::Inherit);
- }
- else if (str.compare("true", Qt::CaseInsensitive) == 0) {
+ } else if (str.compare("true", Qt::CaseInsensitive) == 0) {
group->setSearchingEnabled(Group::Enable);
- }
- else if (str.compare("false", Qt::CaseInsensitive) == 0) {
+ } else if (str.compare("false", Qt::CaseInsensitive) == 0) {
group->setSearchingEnabled(Group::Disable);
+ } else {
+ raiseError(tr("Invalid EnableSearching value"));
}
- else {
- raiseError("Invalid EnableSearching value");
- }
+ continue;
}
- else if (m_xml.name() == "LastTopVisibleEntry") {
+ if (m_xml.name() == "LastTopVisibleEntry") {
group->setLastTopVisibleEntry(getEntry(readUuid()));
+ continue;
}
- else if (m_xml.name() == "Group") {
+ if (m_xml.name() == "Group") {
Group* newGroup = parseGroup();
if (newGroup) {
children.append(newGroup);
}
+ continue;
}
- else if (m_xml.name() == "Entry") {
+ if (m_xml.name() == "Entry") {
Entry* newEntry = parseEntry(false);
if (newEntry) {
entries.append(newEntry);
}
+ continue;
}
- else {
- skipCurrentElement();
+ if (m_xml.name() == "CustomData") {
+ parseCustomData(group->customData());
+ continue;
}
+
+ skipCurrentElement();
}
if (group->uuid().isNull() && !m_strictMode) {
@@ -610,9 +601,8 @@ Group* KeePass2XmlReader::parseGroup()
group->copyDataFrom(tmpGroup);
group->setUpdateTimeinfo(false);
delete tmpGroup;
- }
- else if (!hasError()) {
- raiseError("No group uuid found");
+ } else if (!hasError()) {
+ raiseError(tr("No group uuid found"));
}
for (Group* child : asConst(children)) {
@@ -626,134 +616,143 @@ Group* KeePass2XmlReader::parseGroup()
return group;
}
-void KeePass2XmlReader::parseDeletedObjects()
+void KdbxXmlReader::parseDeletedObjects()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "DeletedObjects");
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "DeletedObject") {
parseDeletedObject();
- }
- else {
+ } else {
skipCurrentElement();
}
}
}
-void KeePass2XmlReader::parseDeletedObject()
+void KdbxXmlReader::parseDeletedObject()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "DeletedObject");
- DeletedObject delObj;
+ DeletedObject delObj{{}, {}};
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "UUID") {
Uuid uuid = readUuid();
if (uuid.isNull()) {
if (m_strictMode) {
- raiseError("Null DeleteObject uuid");
+ raiseError(tr("Null DeleteObject uuid"));
}
+ continue;
}
- else {
- delObj.uuid = uuid;
- }
+ delObj.uuid = uuid;
+ continue;
}
- else if (m_xml.name() == "DeletionTime") {
+ if (m_xml.name() == "DeletionTime") {
delObj.deletionTime = readDateTime();
+ continue;
}
- else {
- skipCurrentElement();
- }
+ skipCurrentElement();
}
if (!delObj.uuid.isNull() && !delObj.deletionTime.isNull()) {
m_db->addDeletedObject(delObj);
+ return;
}
- else if (m_strictMode) {
- raiseError("Missing DeletedObject uuid or time");
+
+ if (m_strictMode) {
+ raiseError(tr("Missing DeletedObject uuid or time"));
}
}
-Entry* KeePass2XmlReader::parseEntry(bool history)
+Entry* KdbxXmlReader::parseEntry(bool history)
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Entry");
- Entry* entry = new Entry();
+ auto entry = new Entry();
entry->setUpdateTimeinfo(false);
QList<Entry*> historyItems;
QList<StringPair> binaryRefs;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "UUID") {
Uuid uuid = readUuid();
if (uuid.isNull()) {
if (m_strictMode) {
- raiseError("Null entry uuid");
- }
- else {
+ raiseError(tr("Null entry uuid"));
+ } else {
entry->setUuid(Uuid::random());
}
- }
- else {
+ } else {
entry->setUuid(uuid);
}
+ continue;
}
- else if (m_xml.name() == "IconID") {
+ if (m_xml.name() == "IconID") {
int iconId = readNumber();
if (iconId < 0) {
if (m_strictMode) {
- raiseError("Invalid entry icon number");
+ raiseError(tr("Invalid entry icon number"));
}
iconId = 0;
}
- else {
- entry->setIcon(iconId);
- }
+ entry->setIcon(iconId);
+ continue;
}
- else if (m_xml.name() == "CustomIconUUID") {
+ if (m_xml.name() == "CustomIconUUID") {
Uuid uuid = readUuid();
if (!uuid.isNull()) {
entry->setIcon(uuid);
}
+ continue;
}
- else if (m_xml.name() == "ForegroundColor") {
+ if (m_xml.name() == "ForegroundColor") {
entry->setForegroundColor(readColor());
+ continue;
}
- else if (m_xml.name() == "BackgroundColor") {
+ if (m_xml.name() == "BackgroundColor") {
entry->setBackgroundColor(readColor());
+ continue;
}
- else if (m_xml.name() == "OverrideURL") {
+ if (m_xml.name() == "OverrideURL") {
entry->setOverrideUrl(readString());
+ continue;
}
- else if (m_xml.name() == "Tags") {
+ if (m_xml.name() == "Tags") {
entry->setTags(readString());
+ continue;
}
- else if (m_xml.name() == "Times") {
+ if (m_xml.name() == "Times") {
entry->setTimeInfo(parseTimes());
+ continue;
}
- else if (m_xml.name() == "String") {
+ if (m_xml.name() == "String") {
parseEntryString(entry);
+ continue;
}
- else if (m_xml.name() == "Binary") {
+ if (m_xml.name() == "Binary") {
QPair<QString, QString> ref = parseEntryBinary(entry);
if (!ref.first.isNull() && !ref.second.isNull()) {
binaryRefs.append(ref);
}
+ continue;
}
- else if (m_xml.name() == "AutoType") {
+ if (m_xml.name() == "AutoType") {
parseAutoType(entry);
+ continue;
}
- else if (m_xml.name() == "History") {
+ if (m_xml.name() == "History") {
if (history) {
- raiseError("History element in history entry");
- }
- else {
+ raiseError(tr("History element in history entry"));
+ } else {
historyItems = parseEntryHistory();
}
+ continue;
}
- else {
- skipCurrentElement();
+ if (m_xml.name() == "CustomData") {
+ parseCustomData(entry->customData());
+ continue;
}
+ skipCurrentElement();
}
if (entry->uuid().isNull() && !m_strictMode) {
@@ -763,8 +762,7 @@ Entry* KeePass2XmlReader::parseEntry(bool history)
if (!entry->uuid().isNull()) {
if (history) {
entry->setUpdateTimeinfo(false);
- }
- else {
+ } else {
Entry* tmpEntry = entry;
entry = getEntry(tmpEntry->uuid());
@@ -773,15 +771,14 @@ Entry* KeePass2XmlReader::parseEntry(bool history)
delete tmpEntry;
}
- }
- else if (!hasError()) {
- raiseError("No entry uuid found");
+ } else if (!hasError()) {
+ raiseError(tr("No entry uuid found"));
}
for (Entry* historyItem : asConst(historyItems)) {
if (historyItem->uuid() != entry->uuid()) {
if (m_strictMode) {
- raiseError("History element with different uuid");
+ raiseError(tr("History element with different uuid"));
} else {
historyItem->setUuid(entry->uuid());
}
@@ -796,7 +793,7 @@ Entry* KeePass2XmlReader::parseEntry(bool history)
return entry;
}
-void KeePass2XmlReader::parseEntryString(Entry* entry)
+void KdbxXmlReader::parseEntryString(Entry* entry)
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "String");
@@ -806,12 +803,14 @@ void KeePass2XmlReader::parseEntryString(Entry* entry)
bool keySet = false;
bool valueSet = false;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Key") {
key = readString();
keySet = true;
+ continue;
}
- else if (m_xml.name() == "Value") {
+
+ if (m_xml.name() == "Value") {
QXmlStreamAttributes attr = m_xml.attributes();
value = readString();
@@ -826,39 +825,37 @@ void KeePass2XmlReader::parseEntryString(Entry* entry)
if (!ok) {
value.clear();
raiseError(m_randomStream->errorString());
- }
- else {
+ } else {
value = QString::fromUtf8(plaintext);
}
- }
- else {
- raiseError("Unable to decrypt entry string");
+ } else {
+ raiseError(tr("Unable to decrypt entry string"));
+ continue;
}
}
protect = isProtected || protectInMemory;
valueSet = true;
+ continue;
}
- else {
- skipCurrentElement();
- }
+
+ skipCurrentElement();
}
if (keySet && valueSet) {
// the default attributes are always there so additionally check if it's empty
if (entry->attributes()->hasKey(key) && !entry->attributes()->value(key).isEmpty()) {
- raiseError("Duplicate custom attribute found");
- }
- else {
- entry->attributes()->set(key, value, protect);
+ raiseError(tr("Duplicate custom attribute found"));
+ return;
}
+ entry->attributes()->set(key, value, protect);
+ return;
}
- else {
- raiseError("Entry string key or value missing");
- }
+
+ raiseError(tr("Entry string key or value missing"));
}
-QPair<QString, QString> KeePass2XmlReader::parseEntryBinary(Entry* entry)
+QPair<QString, QString> KdbxXmlReader::parseEntryBinary(Entry* entry)
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Binary");
@@ -869,23 +866,23 @@ QPair<QString, QString> KeePass2XmlReader::parseEntryBinary(Entry* entry)
bool keySet = false;
bool valueSet = false;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Key") {
key = readString();
keySet = true;
+ continue;
}
- else if (m_xml.name() == "Value") {
+ if (m_xml.name() == "Value") {
QXmlStreamAttributes attr = m_xml.attributes();
if (attr.hasAttribute("Ref")) {
poolRef = qMakePair(attr.value("Ref").toString(), key);
m_xml.skipCurrentElement();
- }
- else {
+ } else {
// format compatibility
value = readBinary();
bool isProtected = attr.hasAttribute("Protected")
- && (attr.value("Protected") == "True");
+ && (attr.value("Protected") == "True");
if (isProtected && !value.isEmpty()) {
if (!m_randomStream->processInPlace(value)) {
@@ -895,51 +892,44 @@ QPair<QString, QString> KeePass2XmlReader::parseEntryBinary(Entry* entry)
}
valueSet = true;
+ continue;
}
- else {
- skipCurrentElement();
- }
+ skipCurrentElement();
}
if (keySet && valueSet) {
if (entry->attachments()->hasKey(key)) {
- raiseError("Duplicate attachment found");
- }
- else {
+ raiseError(tr("Duplicate attachment found"));
+ } else {
entry->attachments()->set(key, value);
}
- }
- else {
- raiseError("Entry binary key or value missing");
+ } else {
+ raiseError(tr("Entry binary key or value missing"));
}
return poolRef;
}
-void KeePass2XmlReader::parseAutoType(Entry* entry)
+void KdbxXmlReader::parseAutoType(Entry* entry)
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "AutoType");
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Enabled") {
entry->setAutoTypeEnabled(readBool());
- }
- else if (m_xml.name() == "DataTransferObfuscation") {
+ } else if (m_xml.name() == "DataTransferObfuscation") {
entry->setAutoTypeObfuscation(readNumber());
- }
- else if (m_xml.name() == "DefaultSequence") {
+ } else if (m_xml.name() == "DefaultSequence") {
entry->setDefaultAutoTypeSequence(readString());
- }
- else if (m_xml.name() == "Association") {
+ } else if (m_xml.name() == "Association") {
parseAutoTypeAssoc(entry);
- }
- else {
+ } else {
skipCurrentElement();
}
}
}
-void KeePass2XmlReader::parseAutoTypeAssoc(Entry* entry)
+void KdbxXmlReader::parseAutoTypeAssoc(Entry* entry)
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Association");
@@ -947,39 +937,35 @@ void KeePass2XmlReader::parseAutoTypeAssoc(Entry* entry)
bool windowSet = false;
bool sequenceSet = false;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Window") {
assoc.window = readString();
windowSet = true;
- }
- else if (m_xml.name() == "KeystrokeSequence") {
+ } else if (m_xml.name() == "KeystrokeSequence") {
assoc.sequence = readString();
sequenceSet = true;
- }
- else {
+ } else {
skipCurrentElement();
}
}
if (windowSet && sequenceSet) {
entry->autoTypeAssociations()->add(assoc);
+ return;
}
- else {
- raiseError("Auto-type association window or sequence missing");
- }
+ raiseError(tr("Auto-type association window or sequence missing"));
}
-QList<Entry*> KeePass2XmlReader::parseEntryHistory()
+QList<Entry*> KdbxXmlReader::parseEntryHistory()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "History");
QList<Entry*> historyItems;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "Entry") {
historyItems.append(parseEntry(true));
- }
- else {
+ } else {
skipCurrentElement();
}
}
@@ -987,34 +973,27 @@ QList<Entry*> KeePass2XmlReader::parseEntryHistory()
return historyItems;
}
-TimeInfo KeePass2XmlReader::parseTimes()
+TimeInfo KdbxXmlReader::parseTimes()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Times");
TimeInfo timeInfo;
- while (!m_xml.error() && m_xml.readNextStartElement()) {
+ while (!m_xml.hasError() && m_xml.readNextStartElement()) {
if (m_xml.name() == "LastModificationTime") {
timeInfo.setLastModificationTime(readDateTime());
- }
- else if (m_xml.name() == "CreationTime") {
+ } else if (m_xml.name() == "CreationTime") {
timeInfo.setCreationTime(readDateTime());
- }
- else if (m_xml.name() == "LastAccessTime") {
+ } else if (m_xml.name() == "LastAccessTime") {
timeInfo.setLastAccessTime(readDateTime());
- }
- else if (m_xml.name() == "ExpiryTime") {
+ } else if (m_xml.name() == "ExpiryTime") {
timeInfo.setExpiryTime(readDateTime());
- }
- else if (m_xml.name() == "Expires") {
+ } else if (m_xml.name() == "Expires") {
timeInfo.setExpires(readBool());
- }
- else if (m_xml.name() == "UsageCount") {
+ } else if (m_xml.name() == "UsageCount") {
timeInfo.setUsageCount(readNumber());
- }
- else if (m_xml.name() == "LocationChanged") {
+ } else if (m_xml.name() == "LocationChanged") {
timeInfo.setLocationChanged(readDateTime());
- }
- else {
+ } else {
skipCurrentElement();
}
}
@@ -1022,81 +1001,83 @@ TimeInfo KeePass2XmlReader::parseTimes()
return timeInfo;
}
-QString KeePass2XmlReader::readString()
+QString KdbxXmlReader::readString()
{
return m_xml.readElementText();
}
-bool KeePass2XmlReader::readBool()
+bool KdbxXmlReader::readBool()
{
QString str = readString();
if (str.compare("True", Qt::CaseInsensitive) == 0) {
return true;
}
- else if (str.compare("False", Qt::CaseInsensitive) == 0) {
- return false;
- }
- else if (str.length() == 0) {
+ if (str.compare("False", Qt::CaseInsensitive) == 0) {
return false;
}
- else {
- raiseError("Invalid bool value");
+ if (str.length() == 0) {
return false;
}
+ raiseError(tr("Invalid bool value"));
+ return false;
}
-QDateTime KeePass2XmlReader::readDateTime()
+QDateTime KdbxXmlReader::readDateTime()
{
+ static QRegularExpression b64regex("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$");
QString str = readString();
+
+ if (b64regex.match(str).hasMatch()) {
+ QByteArray secsBytes = QByteArray::fromBase64(str.toUtf8()).leftJustified(8, '\0', true).left(8);
+ qint64 secs = Endian::bytesToSizedInt<quint64>(secsBytes, KeePass2::BYTEORDER);
+ return QDateTime(QDate(1, 1, 1), QTime(0, 0, 0, 0), Qt::UTC).addSecs(secs);
+ }
+
QDateTime dt = QDateTime::fromString(str, Qt::ISODate);
+ if (dt.isValid()) {
+ return dt;
+ }
- if (!dt.isValid()) {
- if (m_strictMode) {
- raiseError("Invalid date time value");
- }
- else {
- dt = QDateTime::currentDateTimeUtc();
- }
+ if (m_strictMode) {
+ raiseError(tr("Invalid date time value"));
}
- return dt;
+ return QDateTime::currentDateTimeUtc();
}
-QColor KeePass2XmlReader::readColor()
+QColor KdbxXmlReader::readColor()
{
QString colorStr = readString();
if (colorStr.isEmpty()) {
- return QColor();
+ return {};
}
if (colorStr.length() != 7 || colorStr[0] != '#') {
if (m_strictMode) {
- raiseError("Invalid color value");
+ raiseError(tr("Invalid color value"));
}
- return QColor();
+ return {};
}
QColor color;
- for (int i = 0; i <= 2; i++) {
- QString rgbPartStr = colorStr.mid(1 + 2*i, 2);
+ for (int i = 0; i <= 2; ++i) {
+ QString rgbPartStr = colorStr.mid(1 + 2 * i, 2);
bool ok;
int rgbPart = rgbPartStr.toInt(&ok, 16);
if (!ok || rgbPart > 255) {
if (m_strictMode) {
- raiseError("Invalid color rgb part");
+ raiseError(tr("Invalid color rgb part"));
}
- return QColor();
+ return {};
}
if (i == 0) {
color.setRed(rgbPart);
- }
- else if (i == 1) {
+ } else if (i == 1) {
color.setGreen(rgbPart);
- }
- else {
+ } else {
color.setBlue(rgbPart);
}
}
@@ -1104,39 +1085,37 @@ QColor KeePass2XmlReader::readColor()
return color;
}
-int KeePass2XmlReader::readNumber()
+int KdbxXmlReader::readNumber()
{
bool ok;
int result = readString().toInt(&ok);
if (!ok) {
- raiseError("Invalid number value");
+ raiseError(tr("Invalid number value"));
}
return result;
}
-Uuid KeePass2XmlReader::readUuid()
+Uuid KdbxXmlReader::readUuid()
{
QByteArray uuidBin = readBinary();
if (uuidBin.isEmpty()) {
- return Uuid();
+ return {};
}
- else if (uuidBin.length() != Uuid::Length) {
+ if (uuidBin.length() != Uuid::Length) {
if (m_strictMode) {
- raiseError("Invalid uuid value");
+ raiseError(tr("Invalid uuid value"));
}
- return Uuid();
- }
- else {
- return Uuid(uuidBin);
+ return {};
}
+ return Uuid(uuidBin);
}
-QByteArray KeePass2XmlReader::readBinary()
+QByteArray KdbxXmlReader::readBinary()
{
return QByteArray::fromBase64(readString().toLatin1());
}
-QByteArray KeePass2XmlReader::readCompressedBinary()
+QByteArray KdbxXmlReader::readCompressedBinary()
{
QByteArray rawData = readBinary();
@@ -1149,12 +1128,13 @@ QByteArray KeePass2XmlReader::readCompressedBinary()
QByteArray result;
if (!Tools::readAllFromDevice(&compressor, result)) {
- raiseError("Unable to decompress binary");
+ //: Translator meant is a binary data inside an entry
+ raiseError(tr("Unable to decompress binary"));
}
return result;
}
-Group* KeePass2XmlReader::getGroup(const Uuid& uuid)
+Group* KdbxXmlReader::getGroup(const Uuid& uuid)
{
if (uuid.isNull()) {
return nullptr;
@@ -1163,17 +1143,16 @@ Group* KeePass2XmlReader::getGroup(const Uuid& uuid)
if (m_groups.contains(uuid)) {
return m_groups.value(uuid);
}
- else {
- Group* group = new Group();
- group->setUpdateTimeinfo(false);
- group->setUuid(uuid);
- group->setParent(m_tmpParent);
- m_groups.insert(uuid, group);
- return group;
- }
+
+ auto group = new Group();
+ group->setUpdateTimeinfo(false);
+ group->setUuid(uuid);
+ group->setParent(m_tmpParent.data());
+ m_groups.insert(uuid, group);
+ return group;
}
-Entry* KeePass2XmlReader::getEntry(const Uuid& uuid)
+Entry* KdbxXmlReader::getEntry(const Uuid& uuid)
{
if (uuid.isNull()) {
return nullptr;
@@ -1182,18 +1161,18 @@ Entry* KeePass2XmlReader::getEntry(const Uuid& uuid)
if (m_entries.contains(uuid)) {
return m_entries.value(uuid);
}
- else {
- Entry* entry = new Entry();
- entry->setUpdateTimeinfo(false);
- entry->setUuid(uuid);
- entry->setGroup(m_tmpParent);
- m_entries.insert(uuid, entry);
- return entry;
- }
+
+ auto entry = new Entry();
+ entry->setUpdateTimeinfo(false);
+ entry->setUuid(uuid);
+ entry->setGroup(m_tmpParent.data());
+ m_entries.insert(uuid, entry);
+ return entry;
}
-void KeePass2XmlReader::skipCurrentElement()
+void KdbxXmlReader::skipCurrentElement()
{
- qWarning("KeePass2XmlReader::skipCurrentElement: skip element \"%s\"", qPrintable(m_xml.name().toString()));
+ qWarning("KdbxXmlReader::skipCurrentElement: skip element \"%s\"", qPrintable(m_xml.name().toString()));
m_xml.skipCurrentElement();
}
+
diff --git a/src/format/KdbxXmlReader.h b/src/format/KdbxXmlReader.h
new file mode 100644
index 000000000..b080094ba
--- /dev/null
+++ b/src/format/KdbxXmlReader.h
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_KDBXXMLREADER_H
+#define KEEPASSXC_KDBXXMLREADER_H
+
+#include "core/Metadata.h"
+#include "core/TimeInfo.h"
+#include "core/Uuid.h"
+#include "core/Database.h"
+
+#include <QCoreApplication>
+#include <QString>
+#include <QPair>
+#include <QXmlStreamReader>
+
+class QIODevice;
+class Group;
+class Entry;
+class KeePass2RandomStream;
+
+/**
+ * KDBX XML payload reader.
+ */
+class KdbxXmlReader
+{
+Q_DECLARE_TR_FUNCTIONS(KdbxXmlReader)
+
+public:
+ explicit KdbxXmlReader(quint32 version);
+ explicit KdbxXmlReader(quint32 version, const QHash<QString, QByteArray>& binaryPool);
+ virtual ~KdbxXmlReader() = default;
+
+ virtual Database* readDatabase(const QString& filename);
+ virtual Database* readDatabase(QIODevice* device);
+ virtual void readDatabase(QIODevice* device, Database* db, KeePass2RandomStream* randomStream = nullptr);
+
+ bool hasError() const;
+ QString errorString() const;
+
+ QByteArray headerHash() const;
+
+ bool strictMode() const;
+ void setStrictMode(bool strictMode);
+
+protected:
+ typedef QPair<QString, QString> StringPair;
+
+ virtual bool parseKeePassFile();
+ virtual void parseMeta();
+ virtual void parseMemoryProtection();
+ virtual void parseCustomIcons();
+ virtual void parseIcon();
+ virtual void parseBinaries();
+ virtual void parseCustomData(CustomData* customData);
+ virtual void parseCustomDataItem(CustomData* customData);
+ virtual bool parseRoot();
+ virtual Group* parseGroup();
+ virtual void parseDeletedObjects();
+ virtual void parseDeletedObject();
+ virtual Entry* parseEntry(bool history);
+ virtual void parseEntryString(Entry* entry);
+ virtual QPair<QString, QString> parseEntryBinary(Entry* entry);
+ virtual void parseAutoType(Entry* entry);
+ virtual void parseAutoTypeAssoc(Entry* entry);
+ virtual QList<Entry*> parseEntryHistory();
+ virtual TimeInfo parseTimes();
+
+ virtual QString readString();
+ virtual bool readBool();
+ virtual QDateTime readDateTime();
+ virtual QColor readColor();
+ virtual int readNumber();
+ virtual Uuid readUuid();
+ virtual QByteArray readBinary();
+ virtual QByteArray readCompressedBinary();
+
+ virtual void skipCurrentElement();
+
+ virtual Group* getGroup(const Uuid& uuid);
+ virtual Entry* getEntry(const Uuid& uuid);
+
+ virtual void raiseError(const QString& errorMessage);
+
+ const quint32 m_kdbxVersion;
+
+ bool m_strictMode = false;
+
+ QPointer<Database> m_db;
+ QPointer<Metadata> m_meta;
+ KeePass2RandomStream* m_randomStream = nullptr;
+ QXmlStreamReader m_xml;
+
+ QScopedPointer<Group> m_tmpParent;
+ QHash<Uuid, Group*> m_groups;
+ QHash<Uuid, Entry*> m_entries;
+
+ QHash<QString, QByteArray> m_binaryPool;
+ QHash<QString, QPair<Entry*, QString> > m_binaryMap;
+ QByteArray m_headerHash;
+
+ bool m_error = false;
+ QString m_errorStr = "";
+};
+
+#endif //KEEPASSXC_KDBXXMLREADER_H
diff --git a/src/format/KeePass2XmlWriter.cpp b/src/format/KdbxXmlWriter.cpp
index f8dfa1581..8f405aca0 100644
--- a/src/format/KeePass2XmlWriter.cpp
+++ b/src/format/KdbxXmlWriter.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,47 +15,45 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "KeePass2XmlWriter.h"
+#include "KdbxXmlWriter.h"
#include <QBuffer>
#include <QFile>
+#include "core/Endian.h"
#include "core/Metadata.h"
#include "format/KeePass2RandomStream.h"
#include "streams/QtIOCompressor"
-KeePass2XmlWriter::KeePass2XmlWriter()
- : m_db(nullptr)
- , m_meta(nullptr)
- , m_randomStream(nullptr)
- , m_error(false)
+/**
+ * @param version KDBX version
+ */
+KdbxXmlWriter::KdbxXmlWriter(quint32 version)
+ : m_kdbxVersion(version)
{
- m_xml.setAutoFormatting(true);
- m_xml.setAutoFormattingIndent(-1); // 1 tab
- m_xml.setCodec("UTF-8");
}
-void KeePass2XmlWriter::writeDatabase(QIODevice* device, Database* db, KeePass2RandomStream* randomStream,
- const QByteArray& headerHash)
+void KdbxXmlWriter::writeDatabase(QIODevice* device, Database* db, KeePass2RandomStream* randomStream, const QByteArray& headerHash)
{
m_db = db;
m_meta = db->metadata();
m_randomStream = randomStream;
m_headerHash = headerHash;
+ m_xml.setAutoFormatting(true);
+ m_xml.setAutoFormattingIndent(-1); // 1 tab
+ m_xml.setCodec("UTF-8");
+
generateIdMap();
m_xml.setDevice(device);
-
m_xml.writeStartDocument("1.0", true);
-
m_xml.writeStartElement("KeePassFile");
writeMetadata();
writeRoot();
m_xml.writeEndElement();
-
m_xml.writeEndDocument();
if (m_xml.hasError()) {
@@ -63,24 +61,24 @@ void KeePass2XmlWriter::writeDatabase(QIODevice* device, Database* db, KeePass2R
}
}
-void KeePass2XmlWriter::writeDatabase(const QString& filename, Database* db)
+void KdbxXmlWriter::writeDatabase(const QString& filename, Database* db)
{
QFile file(filename);
file.open(QIODevice::WriteOnly|QIODevice::Truncate);
writeDatabase(&file, db);
}
-bool KeePass2XmlWriter::hasError()
+bool KdbxXmlWriter::hasError()
{
return m_error;
}
-QString KeePass2XmlWriter::errorString()
+QString KdbxXmlWriter::errorString()
{
return m_errorStr;
}
-void KeePass2XmlWriter::generateIdMap()
+void KdbxXmlWriter::generateIdMap()
{
const QList<Entry*> allEntries = m_db->rootGroup()->entriesRecursive(true);
int nextId = 0;
@@ -96,12 +94,11 @@ void KeePass2XmlWriter::generateIdMap()
}
}
-void KeePass2XmlWriter::writeMetadata()
+void KdbxXmlWriter::writeMetadata()
{
m_xml.writeStartElement("Meta");
-
writeString("Generator", m_meta->generator());
- if (!m_headerHash.isEmpty()) {
+ if (m_kdbxVersion < KeePass2::FILE_VERSION_4 && !m_headerHash.isEmpty()) {
writeBinary("HeaderHash", m_headerHash);
}
writeString("DatabaseName", m_meta->name());
@@ -126,13 +123,20 @@ void KeePass2XmlWriter::writeMetadata()
writeUuid("LastTopVisibleGroup", m_meta->lastTopVisibleGroup());
writeNumber("HistoryMaxItems", m_meta->historyMaxItems());
writeNumber("HistoryMaxSize", m_meta->historyMaxSize());
- writeBinaries();
- writeCustomData();
+ if (m_kdbxVersion >= KeePass2::FILE_VERSION_4) {
+ writeDateTime("SettingsChanged", m_meta->settingsChanged());
+ }
+ if (m_kdbxVersion < KeePass2::FILE_VERSION_4) {
+ writeBinaries();
+ }
+ if (m_kdbxVersion >= KeePass2::FILE_VERSION_4) {
+ writeCustomData(m_meta->customData());
+ }
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeMemoryProtection()
+void KdbxXmlWriter::writeMemoryProtection()
{
m_xml.writeStartElement("MemoryProtection");
@@ -141,12 +145,11 @@ void KeePass2XmlWriter::writeMemoryProtection()
writeBool("ProtectPassword", m_meta->protectPassword());
writeBool("ProtectURL", m_meta->protectUrl());
writeBool("ProtectNotes", m_meta->protectNotes());
- // writeBool("AutoEnableVisualHiding", m_meta->autoEnableVisualHiding());
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeCustomIcons()
+void KdbxXmlWriter::writeCustomIcons()
{
m_xml.writeStartElement("CustomIcons");
@@ -158,7 +161,7 @@ void KeePass2XmlWriter::writeCustomIcons()
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeIcon(const Uuid& uuid, const QImage& icon)
+void KdbxXmlWriter::writeIcon(const Uuid& uuid, const QImage& icon)
{
m_xml.writeStartElement("Icon");
@@ -175,7 +178,7 @@ void KeePass2XmlWriter::writeIcon(const Uuid& uuid, const QImage& icon)
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeBinaries()
+void KdbxXmlWriter::writeBinaries()
{
m_xml.writeStartElement("Binaries");
@@ -217,20 +220,22 @@ void KeePass2XmlWriter::writeBinaries()
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeCustomData()
+void KdbxXmlWriter::writeCustomData(const CustomData* customData)
{
+ if (customData->isEmpty()) {
+ return;
+ }
m_xml.writeStartElement("CustomData");
- QHash<QString, QString> customFields = m_meta->customFields();
- const QList<QString> keyList = customFields.keys();
+ const QList<QString> keyList = customData->keys();
for (const QString& key : keyList) {
- writeCustomDataItem(key, customFields.value(key));
+ writeCustomDataItem(key, customData->value(key));
}
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeCustomDataItem(const QString& key, const QString& value)
+void KdbxXmlWriter::writeCustomDataItem(const QString& key, const QString& value)
{
m_xml.writeStartElement("Item");
@@ -240,7 +245,7 @@ void KeePass2XmlWriter::writeCustomDataItem(const QString& key, const QString& v
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeRoot()
+void KdbxXmlWriter::writeRoot()
{
Q_ASSERT(m_db->rootGroup());
@@ -252,7 +257,7 @@ void KeePass2XmlWriter::writeRoot()
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeGroup(const Group* group)
+void KdbxXmlWriter::writeGroup(const Group* group)
{
Q_ASSERT(!group->uuid().isNull());
@@ -276,12 +281,16 @@ void KeePass2XmlWriter::writeGroup(const Group* group)
writeUuid("LastTopVisibleEntry", group->lastTopVisibleEntry());
- const QList<Entry*> entryList = group->entries();
+ if (m_kdbxVersion >= KeePass2::FILE_VERSION_4) {
+ writeCustomData(group->customData());
+ }
+
+ const QList<Entry*>& entryList = group->entries();
for (const Entry* entry : entryList) {
writeEntry(entry);
}
- const QList<Group*> children = group->children();
+ const QList<Group*>& children = group->children();
for (const Group* child : children) {
writeGroup(child);
}
@@ -289,7 +298,7 @@ void KeePass2XmlWriter::writeGroup(const Group* group)
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeTimes(const TimeInfo& ti)
+void KdbxXmlWriter::writeTimes(const TimeInfo& ti)
{
m_xml.writeStartElement("Times");
@@ -304,7 +313,7 @@ void KeePass2XmlWriter::writeTimes(const TimeInfo& ti)
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeDeletedObjects()
+void KdbxXmlWriter::writeDeletedObjects()
{
m_xml.writeStartElement("DeletedObjects");
@@ -316,7 +325,7 @@ void KeePass2XmlWriter::writeDeletedObjects()
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeDeletedObject(const DeletedObject& delObj)
+void KdbxXmlWriter::writeDeletedObject(const DeletedObject& delObj)
{
m_xml.writeStartElement("DeletedObject");
@@ -326,7 +335,7 @@ void KeePass2XmlWriter::writeDeletedObject(const DeletedObject& delObj)
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeEntry(const Entry* entry)
+void KdbxXmlWriter::writeEntry(const Entry* entry)
{
Q_ASSERT(!entry->uuid().isNull());
@@ -400,6 +409,11 @@ void KeePass2XmlWriter::writeEntry(const Entry* entry)
}
writeAutoType(entry);
+
+ if (m_kdbxVersion >= KeePass2::FILE_VERSION_4) {
+ writeCustomData(entry->customData());
+ }
+
// write history only for entries that are not history items
if (entry->parent()) {
writeEntryHistory(entry);
@@ -408,7 +422,7 @@ void KeePass2XmlWriter::writeEntry(const Entry* entry)
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeAutoType(const Entry* entry)
+void KdbxXmlWriter::writeAutoType(const Entry* entry)
{
m_xml.writeStartElement("AutoType");
@@ -424,7 +438,7 @@ void KeePass2XmlWriter::writeAutoType(const Entry* entry)
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeAutoTypeAssoc(const AutoTypeAssociations::Association& assoc)
+void KdbxXmlWriter::writeAutoTypeAssoc(const AutoTypeAssociations::Association& assoc)
{
m_xml.writeStartElement("Association");
@@ -434,7 +448,7 @@ void KeePass2XmlWriter::writeAutoTypeAssoc(const AutoTypeAssociations::Associati
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeEntryHistory(const Entry* entry)
+void KdbxXmlWriter::writeEntryHistory(const Entry* entry)
{
m_xml.writeStartElement("History");
@@ -446,7 +460,7 @@ void KeePass2XmlWriter::writeEntryHistory(const Entry* entry)
m_xml.writeEndElement();
}
-void KeePass2XmlWriter::writeString(const QString& qualifiedName, const QString& string)
+void KdbxXmlWriter::writeString(const QString& qualifiedName, const QString& string)
{
if (string.isEmpty()) {
m_xml.writeEmptyElement(qualifiedName);
@@ -456,12 +470,12 @@ void KeePass2XmlWriter::writeString(const QString& qualifiedName, const QString&
}
}
-void KeePass2XmlWriter::writeNumber(const QString& qualifiedName, int number)
+void KdbxXmlWriter::writeNumber(const QString& qualifiedName, int number)
{
writeString(qualifiedName, QString::number(number));
}
-void KeePass2XmlWriter::writeBool(const QString& qualifiedName, bool b)
+void KdbxXmlWriter::writeBool(const QString& qualifiedName, bool b)
{
if (b) {
writeString(qualifiedName, "True");
@@ -471,27 +485,33 @@ void KeePass2XmlWriter::writeBool(const QString& qualifiedName, bool b)
}
}
-void KeePass2XmlWriter::writeDateTime(const QString& qualifiedName, const QDateTime& dateTime)
+void KdbxXmlWriter::writeDateTime(const QString& qualifiedName, const QDateTime& dateTime)
{
Q_ASSERT(dateTime.isValid());
Q_ASSERT(dateTime.timeSpec() == Qt::UTC);
- QString dateTimeStr = dateTime.toString(Qt::ISODate);
+ QString dateTimeStr;
+ if (m_kdbxVersion < KeePass2::FILE_VERSION_4) {
+ dateTimeStr = dateTime.toString(Qt::ISODate);
- // Qt < 4.8 doesn't append a 'Z' at the end
- if (!dateTimeStr.isEmpty() && dateTimeStr[dateTimeStr.size() - 1] != 'Z') {
- dateTimeStr.append('Z');
+ // Qt < 4.8 doesn't append a 'Z' at the end
+ if (!dateTimeStr.isEmpty() && dateTimeStr[dateTimeStr.size() - 1] != 'Z') {
+ dateTimeStr.append('Z');
+ }
+ } else {
+ qint64 secs = QDateTime(QDate(1, 1, 1), QTime(0, 0, 0, 0), Qt::UTC).secsTo(dateTime);
+ QByteArray secsBytes = Endian::sizedIntToBytes(secs, KeePass2::BYTEORDER);
+ dateTimeStr = QString::fromLatin1(secsBytes.toBase64());
}
-
writeString(qualifiedName, dateTimeStr);
}
-void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Uuid& uuid)
+void KdbxXmlWriter::writeUuid(const QString& qualifiedName, const Uuid& uuid)
{
writeString(qualifiedName, uuid.toBase64());
}
-void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Group* group)
+void KdbxXmlWriter::writeUuid(const QString& qualifiedName, const Group* group)
{
if (group) {
writeUuid(qualifiedName, group->uuid());
@@ -501,7 +521,7 @@ void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Group* gro
}
}
-void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Entry* entry)
+void KdbxXmlWriter::writeUuid(const QString& qualifiedName, const Entry* entry)
{
if (entry) {
writeUuid(qualifiedName, entry->uuid());
@@ -511,25 +531,25 @@ void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Entry* ent
}
}
-void KeePass2XmlWriter::writeBinary(const QString& qualifiedName, const QByteArray& ba)
+void KdbxXmlWriter::writeBinary(const QString& qualifiedName, const QByteArray& ba)
{
writeString(qualifiedName, QString::fromLatin1(ba.toBase64()));
}
-void KeePass2XmlWriter::writeColor(const QString& qualifiedName, const QColor& color)
+void KdbxXmlWriter::writeColor(const QString& qualifiedName, const QColor& color)
{
QString colorStr;
if (color.isValid()) {
- colorStr = QString("#%1%2%3").arg(colorPartToString(color.red()))
- .arg(colorPartToString(color.green()))
- .arg(colorPartToString(color.blue()));
+ colorStr = QString("#%1%2%3").arg(colorPartToString(color.red()),
+ colorPartToString(color.green()),
+ colorPartToString(color.blue()));
}
writeString(qualifiedName, colorStr);
}
-void KeePass2XmlWriter::writeTriState(const QString& qualifiedName, Group::TriState triState)
+void KdbxXmlWriter::writeTriState(const QString& qualifiedName, Group::TriState triState)
{
QString value;
@@ -546,7 +566,7 @@ void KeePass2XmlWriter::writeTriState(const QString& qualifiedName, Group::TriSt
writeString(qualifiedName, value);
}
-QString KeePass2XmlWriter::colorPartToString(int value)
+QString KdbxXmlWriter::colorPartToString(int value)
{
QString str = QString::number(value, 16).toUpper();
if (str.length() == 1) {
@@ -556,7 +576,7 @@ QString KeePass2XmlWriter::colorPartToString(int value)
return str;
}
-QString KeePass2XmlWriter::stripInvalidXml10Chars(QString str)
+QString KdbxXmlWriter::stripInvalidXml10Chars(QString str)
{
for (int i = str.size() - 1; i >= 0; i--) {
const QChar ch = str.at(i);
@@ -581,7 +601,7 @@ QString KeePass2XmlWriter::stripInvalidXml10Chars(QString str)
return str;
}
-void KeePass2XmlWriter::raiseError(const QString& errorMessage)
+void KdbxXmlWriter::raiseError(const QString& errorMessage)
{
m_error = true;
m_errorStr = errorMessage;
diff --git a/src/format/KeePass2XmlWriter.h b/src/format/KdbxXmlWriter.h
index 23e148dbb..e2c5b73c8 100644
--- a/src/format/KeePass2XmlWriter.h
+++ b/src/format/KdbxXmlWriter.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,8 +15,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_KEEPASS2XMLWRITER_H
-#define KEEPASSX_KEEPASS2XMLWRITER_H
+#ifndef KEEPASSX_KDBXXMLWRITER_H
+#define KEEPASSX_KDBXXMLWRITER_H
#include <QColor>
#include <QDateTime>
@@ -32,10 +32,11 @@
class KeePass2RandomStream;
class Metadata;
-class KeePass2XmlWriter
+class KdbxXmlWriter
{
public:
- KeePass2XmlWriter();
+ explicit KdbxXmlWriter(quint32 version);
+
void writeDatabase(QIODevice* device, Database* db, KeePass2RandomStream* randomStream = nullptr,
const QByteArray& headerHash = QByteArray());
void writeDatabase(const QString& filename, Database* db);
@@ -50,7 +51,7 @@ private:
void writeCustomIcons();
void writeIcon(const Uuid& uuid, const QImage& icon);
void writeBinaries();
- void writeCustomData();
+ void writeCustomData(const CustomData* customData);
void writeCustomDataItem(const QString& key, const QString& value);
void writeRoot();
void writeGroup(const Group* group);
@@ -77,14 +78,18 @@ private:
void raiseError(const QString& errorMessage);
+ const quint32 m_kdbxVersion;
+
QXmlStreamWriter m_xml;
- Database* m_db;
- Metadata* m_meta;
- KeePass2RandomStream* m_randomStream;
- QByteArray m_headerHash;
+ QPointer<Database> m_db;
+ QPointer<Metadata> m_meta;
+ KeePass2RandomStream* m_randomStream = nullptr;
QHash<QByteArray, int> m_idMap;
- bool m_error;
- QString m_errorStr;
+ QByteArray m_headerHash;
+
+ bool m_error = false;
+
+ QString m_errorStr = "";
};
-#endif // KEEPASSX_KEEPASS2XMLWRITER_H
+#endif // KEEPASSX_KDBXXMLWRITER_H
diff --git a/src/format/KeePass1Reader.cpp b/src/format/KeePass1Reader.cpp
index 4747d7f87..390857075 100644
--- a/src/format/KeePass1Reader.cpp
+++ b/src/format/KeePass1Reader.cpp
@@ -21,6 +21,7 @@
#include <QImage>
#include <QTextCodec>
+#include "crypto/kdf/AesKdf.h"
#include "core/Database.h"
#include "core/Endian.h"
#include "core/Entry.h"
@@ -29,7 +30,6 @@
#include "core/Tools.h"
#include "crypto/CryptoHash.h"
#include "format/KeePass1.h"
-#include "keys/CompositeKey.h"
#include "keys/FileKey.h"
#include "keys/PasswordKey.h"
#include "streams/SymmetricCipherStream.h"
@@ -93,25 +93,25 @@ Database* KeePass1Reader::readDatabase(QIODevice* device, const QString& passwor
bool ok;
- quint32 signature1 = Endian::readUInt32(m_device, KeePass1::BYTEORDER, &ok);
+ auto signature1 = Endian::readSizedInt<quint32>(m_device, KeePass1::BYTEORDER, &ok);
if (!ok || signature1 != KeePass1::SIGNATURE_1) {
raiseError(tr("Not a KeePass database."));
return nullptr;
}
- quint32 signature2 = Endian::readUInt32(m_device, KeePass1::BYTEORDER, &ok);
+ auto signature2 = Endian::readSizedInt<quint32>(m_device, KeePass1::BYTEORDER, &ok);
if (!ok || signature2 != KeePass1::SIGNATURE_2) {
raiseError(tr("Not a KeePass database."));
return nullptr;
}
- m_encryptionFlags = Endian::readUInt32(m_device, KeePass1::BYTEORDER, &ok);
+ m_encryptionFlags = Endian::readSizedInt<quint32>(m_device, KeePass1::BYTEORDER, &ok);
if (!ok || !(m_encryptionFlags & KeePass1::Rijndael || m_encryptionFlags & KeePass1::Twofish)) {
raiseError(tr("Unsupported encryption algorithm."));
return nullptr;
}
- quint32 version = Endian::readUInt32(m_device, KeePass1::BYTEORDER, &ok);
+ auto version = Endian::readSizedInt<quint32>(m_device, KeePass1::BYTEORDER, &ok);
if (!ok || (version & KeePass1::FILE_VERSION_CRITICAL_MASK)
!= (KeePass1::FILE_VERSION & KeePass1::FILE_VERSION_CRITICAL_MASK)) {
raiseError(tr("Unsupported KeePass database version."));
@@ -126,43 +126,43 @@ Database* KeePass1Reader::readDatabase(QIODevice* device, const QString& passwor
m_encryptionIV = m_device->read(16);
if (m_encryptionIV.size() != 16) {
- raiseError("Unable to read encryption IV");
+ raiseError(tr("Unable to read encryption IV", "IV = Initialization Vector for symmetric cipher"));
return nullptr;
}
- quint32 numGroups = Endian::readUInt32(m_device, KeePass1::BYTEORDER, &ok);
+ auto numGroups = Endian::readSizedInt<quint32>(m_device, KeePass1::BYTEORDER, &ok);
if (!ok) {
- raiseError("Invalid number of groups");
+ raiseError(tr("Invalid number of groups"));
return nullptr;
}
- quint32 numEntries = Endian::readUInt32(m_device, KeePass1::BYTEORDER, &ok);
+ auto numEntries = Endian::readSizedInt<quint32>(m_device, KeePass1::BYTEORDER, &ok);
if (!ok) {
- raiseError("Invalid number of entries");
+ raiseError(tr("Invalid number of entries"));
return nullptr;
}
m_contentHashHeader = m_device->read(32);
if (m_contentHashHeader.size() != 32) {
- raiseError("Invalid content hash size");
+ raiseError(tr("Invalid content hash size"));
return nullptr;
}
m_transformSeed = m_device->read(32);
if (m_transformSeed.size() != 32) {
- raiseError("Invalid transform seed size");
+ raiseError(tr("Invalid transform seed size"));
return nullptr;
}
- m_transformRounds = Endian::readUInt32(m_device, KeePass1::BYTEORDER, &ok);
+ m_transformRounds = Endian::readSizedInt<quint32>(m_device, KeePass1::BYTEORDER, &ok);
if (!ok) {
- raiseError("Invalid number of transform rounds");
- return nullptr;
- }
- if (!m_db->setTransformRounds(m_transformRounds)) {
- raiseError(tr("Unable to calculate master key"));
+ raiseError(tr("Invalid number of transform rounds"));
return nullptr;
}
+ auto kdf = QSharedPointer<AesKdf>::create(true);
+ kdf->setRounds(m_transformRounds);
+ kdf->setSeed(m_transformSeed);
+ db->setKdf(kdf);
qint64 contentPos = m_device->pos();
@@ -191,7 +191,7 @@ Database* KeePass1Reader::readDatabase(QIODevice* device, const QString& passwor
}
if (!constructGroupTree(groups)) {
- raiseError("Unable to construct group tree");
+ raiseError(tr("Unable to construct group tree"));
return nullptr;
}
@@ -397,12 +397,11 @@ QByteArray KeePass1Reader::key(const QByteArray& password, const QByteArray& key
key.setPassword(password);
key.setKeyfileData(keyfileData);
- bool ok;
- QString errorString;
- QByteArray transformedKey = key.transform(m_transformSeed, m_transformRounds, &ok, &errorString);
+ QByteArray transformedKey;
+ bool result = key.transform(*m_db->kdf(), transformedKey);
- if (!ok) {
- raiseError(errorString);
+ if (!result) {
+ raiseError(tr("Key transformation failed"));
return QByteArray();
}
@@ -444,21 +443,21 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
bool reachedEnd = false;
do {
- quint16 fieldType = Endian::readUInt16(cipherStream, KeePass1::BYTEORDER, &ok);
+ quint16 fieldType = Endian::readSizedInt<quint16>(cipherStream, KeePass1::BYTEORDER, &ok);
if (!ok) {
- raiseError("Invalid group field type number");
+ raiseError(tr("Invalid group field type number"));
return nullptr;
}
- int fieldSize = static_cast<int>(Endian::readUInt32(cipherStream, KeePass1::BYTEORDER, &ok));
+ int fieldSize = static_cast<int>(Endian::readSizedInt<quint32>(cipherStream, KeePass1::BYTEORDER, &ok));
if (!ok) {
- raiseError("Invalid group field size");
+ raiseError(tr("Invalid group field size"));
return nullptr;
}
QByteArray fieldData = cipherStream->read(fieldSize);
if (fieldData.size() != fieldSize) {
- raiseError("Read group field data doesn't match size");
+ raiseError(tr("Read group field data doesn't match size"));
return nullptr;
}
@@ -468,10 +467,10 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
break;
case 0x0001:
if (fieldSize != 4) {
- raiseError("Incorrect group id field size");
+ raiseError(tr("Incorrect group id field size"));
return nullptr;
}
- groupId = Endian::bytesToUInt32(fieldData, KeePass1::BYTEORDER);
+ groupId = Endian::bytesToSizedInt<quint32>(fieldData, KeePass1::BYTEORDER);
groupIdSet = true;
break;
case 0x0002:
@@ -480,7 +479,7 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
case 0x0003:
{
if (fieldSize != 5) {
- raiseError("Incorrect group creation time field size");
+ raiseError(tr("Incorrect group creation time field size"));
return nullptr;
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
@@ -492,7 +491,7 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
case 0x0004:
{
if (fieldSize != 5) {
- raiseError("Incorrect group modification time field size");
+ raiseError(tr("Incorrect group modification time field size"));
return nullptr;
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
@@ -504,7 +503,7 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
case 0x0005:
{
if (fieldSize != 5) {
- raiseError("Incorrect group access time field size");
+ raiseError(tr("Incorrect group access time field size"));
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
if (dateTime.isValid()) {
@@ -515,7 +514,7 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
case 0x0006:
{
if (fieldSize != 5) {
- raiseError("Incorrect group expiry time field size");
+ raiseError(tr("Incorrect group expiry time field size"));
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
if (dateTime.isValid()) {
@@ -527,20 +526,20 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
case 0x0007:
{
if (fieldSize != 4) {
- raiseError("Incorrect group icon field size");
+ raiseError(tr("Incorrect group icon field size"));
return nullptr;
}
- quint32 iconNumber = Endian::bytesToUInt32(fieldData, KeePass1::BYTEORDER);
+ quint32 iconNumber = Endian::bytesToSizedInt<quint32>(fieldData, KeePass1::BYTEORDER);
group->setIcon(iconNumber);
break;
}
case 0x0008:
{
if (fieldSize != 2) {
- raiseError("Incorrect group level field size");
+ raiseError(tr("Incorrect group level field size"));
return nullptr;
}
- groupLevel = Endian::bytesToUInt16(fieldData, KeePass1::BYTEORDER);
+ groupLevel = Endian::bytesToSizedInt<quint16>(fieldData, KeePass1::BYTEORDER);
groupLevelSet = true;
break;
}
@@ -552,13 +551,13 @@ Group* KeePass1Reader::readGroup(QIODevice* cipherStream)
break;
default:
// invalid field
- raiseError("Invalid group field type");
+ raiseError(tr("Invalid group field type"));
return nullptr;
}
} while (!reachedEnd);
if (!groupIdSet || !groupLevelSet) {
- raiseError("Missing group id or level");
+ raiseError(tr("Missing group id or level"));
return nullptr;
}
@@ -582,21 +581,21 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
bool reachedEnd = false;
do {
- quint16 fieldType = Endian::readUInt16(cipherStream, KeePass1::BYTEORDER, &ok);
+ quint16 fieldType = Endian::readSizedInt<quint16>(cipherStream, KeePass1::BYTEORDER, &ok);
if (!ok) {
- raiseError("Missing entry field type number");
+ raiseError(tr("Missing entry field type number"));
return nullptr;
}
- int fieldSize = static_cast<int>(Endian::readUInt32(cipherStream, KeePass1::BYTEORDER, &ok));
+ int fieldSize = static_cast<int>(Endian::readSizedInt<quint32>(cipherStream, KeePass1::BYTEORDER, &ok));
if (!ok) {
- raiseError("Invalid entry field size");
+ raiseError(tr("Invalid entry field size"));
return nullptr;
}
QByteArray fieldData = cipherStream->read(fieldSize);
if (fieldData.size() != fieldSize) {
- raiseError("Read entry field data doesn't match size");
+ raiseError(tr("Read entry field data doesn't match size"));
return nullptr;
}
@@ -606,7 +605,7 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
break;
case 0x0001:
if (fieldSize != 16) {
- raiseError("Invalid entry uuid field size");
+ raiseError(tr("Invalid entry uuid field size"));
return nullptr;
}
m_entryUuids.insert(fieldData, entry.data());
@@ -614,20 +613,20 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
case 0x0002:
{
if (fieldSize != 4) {
- raiseError("Invalid entry group id field size");
+ raiseError(tr("Invalid entry group id field size"));
return nullptr;
}
- quint32 groupId = Endian::bytesToUInt32(fieldData, KeePass1::BYTEORDER);
+ quint32 groupId = Endian::bytesToSizedInt<quint32>(fieldData, KeePass1::BYTEORDER);
m_entryGroupIds.insert(entry.data(), groupId);
break;
}
case 0x0003:
{
if (fieldSize != 4) {
- raiseError("Invalid entry icon field size");
+ raiseError(tr("Invalid entry icon field size"));
return nullptr;
}
- quint32 iconNumber = Endian::bytesToUInt32(fieldData, KeePass1::BYTEORDER);
+ quint32 iconNumber = Endian::bytesToSizedInt<quint32>(fieldData, KeePass1::BYTEORDER);
entry->setIcon(iconNumber);
break;
}
@@ -649,7 +648,7 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
case 0x0009:
{
if (fieldSize != 5) {
- raiseError("Invalid entry creation time field size");
+ raiseError(tr("Invalid entry creation time field size"));
return nullptr;
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
@@ -661,7 +660,7 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
case 0x000A:
{
if (fieldSize != 5) {
- raiseError("Invalid entry modification time field size");
+ raiseError(tr("Invalid entry modification time field size"));
return nullptr;
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
@@ -673,7 +672,7 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
case 0x000B:
{
if (fieldSize != 5) {
- raiseError("Invalid entry creation time field size");
+ raiseError(tr("Invalid entry creation time field size"));
return nullptr;
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
@@ -685,7 +684,7 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
case 0x000C:
{
if (fieldSize != 5) {
- raiseError("Invalid entry expiry time field size");
+ raiseError(tr("Invalid entry expiry time field size"));
return nullptr;
}
QDateTime dateTime = dateFromPackedStruct(fieldData);
@@ -708,7 +707,7 @@ Entry* KeePass1Reader::readEntry(QIODevice* cipherStream)
break;
default:
// invalid field
- raiseError("Invalid entry field type");
+ raiseError(tr("Invalid entry field type"));
return nullptr;
}
} while (!reachedEnd);
@@ -837,7 +836,7 @@ bool KeePass1Reader::parseGroupTreeState(const QByteArray& data)
}
int pos = 0;
- quint32 num = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 num = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
if (static_cast<quint32>(data.size() - 4) != (num * 5)) {
@@ -845,7 +844,7 @@ bool KeePass1Reader::parseGroupTreeState(const QByteArray& data)
}
for (quint32 i = 0; i < num; i++) {
- quint32 groupId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 groupId = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
bool expanded = data.at(pos);
@@ -867,13 +866,13 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data)
int pos = 0;
- quint32 numIcons = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 numIcons = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
- quint32 numEntries = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 numEntries = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
- quint32 numGroups = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 numGroups = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
QList<Uuid> iconUuids;
@@ -882,7 +881,7 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data)
if (data.size() < (pos + 4)) {
return false;
}
- quint32 iconSize = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 iconSize = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
if (static_cast<quint32>(data.size()) < (pos + iconSize)) {
@@ -908,7 +907,7 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data)
QByteArray entryUuid = data.mid(pos, 16);
pos += 16;
- quint32 iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 iconId = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
if (m_entryUuids.contains(entryUuid) && (iconId < static_cast<quint32>(iconUuids.size()))) {
@@ -921,10 +920,10 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data)
}
for (quint32 i = 0; i < numGroups; i++) {
- quint32 groupId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 groupId = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
- quint32 iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
+ quint32 iconId = Endian::bytesToSizedInt<quint32>(data.mid(pos, 4), KeePass1::BYTEORDER);
pos += 4;
if (m_groupIds.contains(groupId) && (iconId < static_cast<quint32>(iconUuids.size()))) {
diff --git a/src/format/KeePass2.cpp b/src/format/KeePass2.cpp
new file mode 100644
index 000000000..30fb304c7
--- /dev/null
+++ b/src/format/KeePass2.cpp
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "KeePass2.h"
+#include <QSharedPointer>
+#include "crypto/kdf/AesKdf.h"
+#include "crypto/kdf/Argon2Kdf.h"
+#include "crypto/CryptoHash.h"
+
+const Uuid KeePass2::CIPHER_AES = Uuid(QByteArray::fromHex("31c1f2e6bf714350be5805216afc5aff"));
+const Uuid KeePass2::CIPHER_TWOFISH = Uuid(QByteArray::fromHex("ad68f29f576f4bb9a36ad47af965346c"));
+const Uuid KeePass2::CIPHER_CHACHA20 = Uuid(QByteArray::fromHex("D6038A2B8B6F4CB5A524339A31DBB59A"));
+
+const Uuid KeePass2::KDF_AES_KDBX3 = Uuid(QByteArray::fromHex("C9D9F39A628A4460BF740D08C18A4FEA"));
+const Uuid KeePass2::KDF_AES_KDBX4 = Uuid(QByteArray::fromHex("7C02BB8279A74AC0927D114A00648238"));
+const Uuid KeePass2::KDF_ARGON2 = Uuid(QByteArray::fromHex("EF636DDF8C29444B91F7A9A403E30A0C"));
+
+const QByteArray KeePass2::INNER_STREAM_SALSA20_IV("\xE8\x30\x09\x4B\x97\x20\x5D\x2A");
+
+const QString KeePass2::KDFPARAM_UUID("$UUID");
+// AES parameters
+const QString KeePass2::KDFPARAM_AES_ROUNDS("R");
+const QString KeePass2::KDFPARAM_AES_SEED("S");
+// Argon2 parameters
+const QString KeePass2::KDFPARAM_ARGON2_SALT("S");
+const QString KeePass2::KDFPARAM_ARGON2_PARALLELISM("P");
+const QString KeePass2::KDFPARAM_ARGON2_MEMORY("M");
+const QString KeePass2::KDFPARAM_ARGON2_ITERATIONS("I");
+const QString KeePass2::KDFPARAM_ARGON2_VERSION("V");
+const QString KeePass2::KDFPARAM_ARGON2_SECRET("K");
+const QString KeePass2::KDFPARAM_ARGON2_ASSOCDATA("A");
+
+const QList<QPair<Uuid, QString>> KeePass2::CIPHERS{
+ qMakePair(KeePass2::CIPHER_AES, QObject::tr("AES: 256-bit")),
+ qMakePair(KeePass2::CIPHER_TWOFISH, QObject::tr("Twofish: 256-bit")),
+ qMakePair(KeePass2::CIPHER_CHACHA20, QObject::tr("ChaCha20: 256-bit"))
+};
+
+const QList<QPair<Uuid, QString>> KeePass2::KDFS{
+ qMakePair(KeePass2::KDF_ARGON2, QObject::tr("Argon2 (KDBX 4 – recommended)")),
+ qMakePair(KeePass2::KDF_AES_KDBX4, QObject::tr("AES-KDF (KDBX 4)")),
+ qMakePair(KeePass2::KDF_AES_KDBX3, QObject::tr("AES-KDF (KDBX 3.1)"))
+};
+
+QByteArray KeePass2::hmacKey(QByteArray masterSeed, QByteArray transformedMasterKey) {
+ CryptoHash hmacKeyHash(CryptoHash::Sha512);
+ hmacKeyHash.addData(masterSeed);
+ hmacKeyHash.addData(transformedMasterKey);
+ hmacKeyHash.addData(QByteArray(1, '\x01'));
+ return hmacKeyHash.result();
+}
+
+/**
+ * Create KDF object from KDBX4+ KDF parameters.
+ *
+ * @param p variant map containing parameters
+ * @return initialized KDF
+ */
+QSharedPointer<Kdf> KeePass2::kdfFromParameters(const QVariantMap& p)
+{
+ QByteArray uuidBytes = p.value(KDFPARAM_UUID).toByteArray();
+ if (uuidBytes.size() != Uuid::Length) {
+ return {};
+ }
+
+ Uuid kdfUuid(uuidBytes);
+ if (kdfUuid == KDF_AES_KDBX3) {
+ // upgrade to non-legacy AES-KDF, since KDBX3 doesn't have any KDF parameters
+ kdfUuid = KDF_AES_KDBX4;
+ }
+ QSharedPointer<Kdf> kdf = uuidToKdf(kdfUuid);
+ if (kdf.isNull()) {
+ return {};
+ }
+
+ if (!kdf->processParameters(p)) {
+ return {};
+ }
+
+ return kdf;
+}
+
+QVariantMap KeePass2::kdfToParameters(QSharedPointer<Kdf> kdf)
+{
+ return kdf->writeParameters();
+}
+
+QSharedPointer<Kdf> KeePass2::uuidToKdf(const Uuid& uuid)
+{
+ if (uuid == KDF_AES_KDBX3) {
+ return QSharedPointer<AesKdf>::create(true);
+ }
+ if (uuid == KDF_AES_KDBX4) {
+ return QSharedPointer<AesKdf>::create();
+ }
+ if (uuid == KDF_ARGON2) {
+ return QSharedPointer<Argon2Kdf>::create();
+ }
+
+ return {};
+}
+
+KeePass2::ProtectedStreamAlgo KeePass2::idToProtectedStreamAlgo(quint32 id)
+{
+ switch (id) {
+ case static_cast<quint32>(KeePass2::ProtectedStreamAlgo::ArcFourVariant):
+ return KeePass2::ProtectedStreamAlgo::ArcFourVariant;
+ case static_cast<quint32>(KeePass2::ProtectedStreamAlgo::Salsa20):
+ return KeePass2::ProtectedStreamAlgo::Salsa20;
+ case static_cast<quint32>(KeePass2::ProtectedStreamAlgo::ChaCha20):
+ return KeePass2::ProtectedStreamAlgo::ChaCha20;
+ default:
+ return KeePass2::ProtectedStreamAlgo::InvalidProtectedStreamAlgo;
+ }
+}
diff --git a/src/format/KeePass2.h b/src/format/KeePass2.h
index 91ee48293..67779121f 100644
--- a/src/format/KeePass2.h
+++ b/src/format/KeePass2.h
@@ -19,44 +19,119 @@
#define KEEPASSX_KEEPASS2_H
#include <QtGlobal>
+#include <QMap>
+#include <QVariantMap>
+#include <QList>
+#include <QSharedPointer>
+#include "crypto/SymmetricCipher.h"
+#include "crypto/kdf/Kdf.h"
#include "core/Uuid.h"
namespace KeePass2
{
- const quint32 SIGNATURE_1 = 0x9AA2D903;
- const quint32 SIGNATURE_2 = 0xB54BFB67;
- const quint32 FILE_VERSION = 0x00030001;
- const quint32 FILE_VERSION_MIN = 0x00020000;
- const quint32 FILE_VERSION_CRITICAL_MASK = 0xFFFF0000;
-
- const QSysInfo::Endian BYTEORDER = QSysInfo::LittleEndian;
-
- const Uuid CIPHER_AES = Uuid(QByteArray::fromHex("31c1f2e6bf714350be5805216afc5aff"));
- const Uuid CIPHER_TWOFISH = Uuid(QByteArray::fromHex("ad68f29f576f4bb9a36ad47af965346c"));
-
- const QByteArray INNER_STREAM_SALSA20_IV("\xE8\x30\x09\x4B\x97\x20\x5D\x2A");
-
- enum HeaderFieldID
- {
- EndOfHeader = 0,
- Comment = 1,
- CipherID = 2,
- CompressionFlags = 3,
- MasterSeed = 4,
- TransformSeed = 5,
- TransformRounds = 6,
- EncryptionIV = 7,
- ProtectedStreamKey = 8,
- StreamStartBytes = 9,
- InnerRandomStreamID = 10
- };
-
- enum ProtectedStreamAlgo
- {
- ArcFourVariant = 1,
- Salsa20 = 2
- };
-}
+
+constexpr quint32 SIGNATURE_1 = 0x9AA2D903;
+constexpr quint32 SIGNATURE_2 = 0xB54BFB67;
+
+constexpr quint32 FILE_VERSION_CRITICAL_MASK = 0xFFFF0000;
+constexpr quint32 FILE_VERSION_4 = 0x00040000;
+constexpr quint32 FILE_VERSION_3_1 = 0x00030001;
+constexpr quint32 FILE_VERSION_3 = 0x00030000;
+constexpr quint32 FILE_VERSION_2 = 0x00020000;
+constexpr quint32 FILE_VERSION_MIN = FILE_VERSION_2;
+
+constexpr quint16 VARIANTMAP_VERSION = 0x0100;
+constexpr quint16 VARIANTMAP_CRITICAL_MASK = 0xFF00;
+
+const QSysInfo::Endian BYTEORDER = QSysInfo::LittleEndian;
+
+extern const Uuid CIPHER_AES;
+extern const Uuid CIPHER_TWOFISH;
+extern const Uuid CIPHER_CHACHA20;
+
+extern const Uuid KDF_AES_KDBX3;
+extern const Uuid KDF_AES_KDBX4;
+extern const Uuid KDF_ARGON2;
+
+extern const QByteArray INNER_STREAM_SALSA20_IV;
+
+extern const QString KDFPARAM_UUID;
+extern const QString KDFPARAM_AES_ROUNDS;
+extern const QString KDFPARAM_AES_SEED;
+extern const QString KDFPARAM_ARGON2_SALT;
+extern const QString KDFPARAM_ARGON2_PARALLELISM;
+extern const QString KDFPARAM_ARGON2_MEMORY;
+extern const QString KDFPARAM_ARGON2_ITERATIONS;
+extern const QString KDFPARAM_ARGON2_VERSION;
+extern const QString KDFPARAM_ARGON2_SECRET;
+extern const QString KDFPARAM_ARGON2_ASSOCDATA;
+
+extern const QList<QPair<Uuid, QString>> CIPHERS;
+extern const QList<QPair<Uuid, QString>> KDFS;
+
+enum class HeaderFieldID
+{
+ EndOfHeader = 0,
+ Comment = 1,
+ CipherID = 2,
+ CompressionFlags = 3,
+ MasterSeed = 4,
+ TransformSeed = 5,
+ TransformRounds = 6,
+ EncryptionIV = 7,
+ ProtectedStreamKey = 8,
+ StreamStartBytes = 9,
+ InnerRandomStreamID = 10,
+ KdfParameters = 11,
+ PublicCustomData = 12
+};
+
+enum class InnerHeaderFieldID : quint8
+{
+ End = 0,
+ InnerRandomStreamID = 1,
+ InnerRandomStreamKey = 2,
+ Binary = 3
+};
+
+enum class ProtectedStreamAlgo
+{
+ ArcFourVariant = 1,
+ Salsa20 = 2,
+ ChaCha20 = 3,
+ InvalidProtectedStreamAlgo = -1
+};
+
+enum class VariantMapFieldType : quint8
+{
+ End = 0,
+ // Byte = 0x02,
+ // UInt16 = 0x03,
+ UInt32 = 0x04,
+ UInt64 = 0x05,
+ // Signed mask: 0x08
+ Bool = 0x08,
+ // SByte = 0x0A,
+ // Int16 = 0x0B,
+ Int32 = 0x0C,
+ Int64 = 0x0D,
+ // Float = 0x10,
+ // Double = 0x11,
+ // Decimal = 0x12,
+ // Char = 0x17, // 16-bit Unicode character
+ String = 0x18,
+ // Array mask: 0x40
+ ByteArray = 0x42
+};
+
+QByteArray hmacKey(QByteArray masterSeed, QByteArray transformedMasterKey);
+QSharedPointer<Kdf> kdfFromParameters(const QVariantMap& p);
+QVariantMap kdfToParameters(QSharedPointer<Kdf> kdf);
+QSharedPointer<Kdf> uuidToKdf(const Uuid& uuid);
+Uuid kdfToUuid(QSharedPointer<Kdf> kdf);
+ProtectedStreamAlgo idToProtectedStreamAlgo(quint32 id);
+
+} // namespace KeePass2
#endif // KEEPASSX_KEEPASS2_H
diff --git a/src/format/KeePass2RandomStream.cpp b/src/format/KeePass2RandomStream.cpp
index 1944e5d5b..26824b7e5 100644
--- a/src/format/KeePass2RandomStream.cpp
+++ b/src/format/KeePass2RandomStream.cpp
@@ -20,16 +20,27 @@
#include "crypto/CryptoHash.h"
#include "format/KeePass2.h"
-KeePass2RandomStream::KeePass2RandomStream()
- : m_cipher(SymmetricCipher::Salsa20, SymmetricCipher::Stream, SymmetricCipher::Encrypt)
+KeePass2RandomStream::KeePass2RandomStream(KeePass2::ProtectedStreamAlgo algo)
+ : m_cipher(mapAlgo(algo), SymmetricCipher::Stream, SymmetricCipher::Encrypt)
, m_offset(0)
{
}
bool KeePass2RandomStream::init(const QByteArray& key)
{
- return m_cipher.init(CryptoHash::hash(key, CryptoHash::Sha256),
- KeePass2::INNER_STREAM_SALSA20_IV);
+ switch (m_cipher.algorithm()) {
+ case SymmetricCipher::Salsa20:
+ return m_cipher.init(CryptoHash::hash(key, CryptoHash::Sha256),
+ KeePass2::INNER_STREAM_SALSA20_IV);
+ case SymmetricCipher::ChaCha20: {
+ QByteArray keyIv = CryptoHash::hash(key, CryptoHash::Sha512);
+ return m_cipher.init(keyIv.left(32), keyIv.mid(32, 12));
+ }
+ default:
+ qWarning("Invalid stream algorithm (%d)", m_cipher.algorithm());
+ break;
+ }
+ return false;
}
QByteArray KeePass2RandomStream::randomBytes(int size, bool* ok)
@@ -109,3 +120,14 @@ bool KeePass2RandomStream::loadBlock()
return true;
}
+
+SymmetricCipher::Algorithm KeePass2RandomStream::mapAlgo(KeePass2::ProtectedStreamAlgo algo) {
+ switch (algo) {
+ case KeePass2::ProtectedStreamAlgo::ChaCha20:
+ return SymmetricCipher::ChaCha20;
+ case KeePass2::ProtectedStreamAlgo::Salsa20:
+ return SymmetricCipher::Salsa20;
+ default:
+ return SymmetricCipher::InvalidAlgorithm;
+ }
+} \ No newline at end of file
diff --git a/src/format/KeePass2RandomStream.h b/src/format/KeePass2RandomStream.h
index 584d738b3..1e341bacc 100644
--- a/src/format/KeePass2RandomStream.h
+++ b/src/format/KeePass2RandomStream.h
@@ -21,11 +21,13 @@
#include <QByteArray>
#include "crypto/SymmetricCipher.h"
+#include "KeePass2.h"
class KeePass2RandomStream
{
public:
- KeePass2RandomStream();
+ KeePass2RandomStream(KeePass2::ProtectedStreamAlgo algo);
+
bool init(const QByteArray& key);
QByteArray randomBytes(int size, bool* ok);
QByteArray process(const QByteArray& data, bool* ok);
@@ -38,6 +40,8 @@ private:
SymmetricCipher m_cipher;
QByteArray m_buffer;
int m_offset;
+
+ static SymmetricCipher::Algorithm mapAlgo(KeePass2::ProtectedStreamAlgo algo);
};
#endif // KEEPASSX_KEEPASS2RANDOMSTREAM_H
diff --git a/src/format/KeePass2Reader.cpp b/src/format/KeePass2Reader.cpp
index bb737beda..abc7f54e1 100644
--- a/src/format/KeePass2Reader.cpp
+++ b/src/format/KeePass2Reader.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,222 +15,100 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "KeePass2Reader.h"
+#include "format/KeePass2Reader.h"
+#include "format/KeePass1.h"
+#include "format/Kdbx3Reader.h"
+#include "format/Kdbx4Reader.h"
-#include <QBuffer>
#include <QFile>
-#include <QIODevice>
-
-#include "core/Database.h"
-#include "core/Endian.h"
-#include "crypto/CryptoHash.h"
-#include "format/KeePass1.h"
-#include "format/KeePass2.h"
-#include "format/KeePass2RandomStream.h"
-#include "format/KeePass2XmlReader.h"
-#include "streams/HashedBlockStream.h"
-#include "streams/QtIOCompressor"
-#include "streams/StoreDataStream.h"
-#include "streams/SymmetricCipherStream.h"
-KeePass2Reader::KeePass2Reader()
- : m_device(nullptr)
- , m_headerStream(nullptr)
- , m_error(false)
- , m_headerEnd(false)
- , m_saveXml(false)
- , m_db(nullptr)
+/**
+ * Read database from file and detect correct file format.
+ *
+ * @param filename input file
+ * @param key database encryption composite key
+ * @return pointer to the read database, nullptr on failure
+ */
+Database* KeePass2Reader::readDatabase(const QString& filename, const CompositeKey& key)
{
+ QFile file(filename);
+ if (!file.open(QFile::ReadOnly)) {
+ raiseError(file.errorString());
+ return nullptr;
+ }
+
+ QScopedPointer<Database> db(readDatabase(&file, key));
+
+ if (file.error() != QFile::NoError) {
+ raiseError(file.errorString());
+ return nullptr;
+ }
+
+ return db.take();
}
+/**
+ * Read database from device and detect correct file format.
+ *
+ * @param device input device
+ * @param key database encryption composite key
+ * @param keepDatabase keep database in case of read failure
+ * @return pointer to the read database, nullptr on failure
+ */
Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase)
{
- QScopedPointer<Database> db(new Database());
- m_db = db.data();
- m_device = device;
m_error = false;
m_errorStr.clear();
- m_headerEnd = false;
- m_xmlData.clear();
- m_masterSeed.clear();
- m_transformSeed.clear();
- m_encryptionIV.clear();
- m_streamStartBytes.clear();
- m_protectedStreamKey.clear();
- StoreDataStream headerStream(m_device);
- headerStream.open(QIODevice::ReadOnly);
- m_headerStream = &headerStream;
+ quint32 signature1, signature2;
+ bool ok = KdbxReader::readMagicNumbers(device, signature1, signature2, m_version);
- bool ok;
+ // mask out minor version
+ m_version &= KeePass2::FILE_VERSION_CRITICAL_MASK;
- quint32 signature1 = Endian::readUInt32(m_headerStream, KeePass2::BYTEORDER, &ok);
- if (!ok || signature1 != KeePass2::SIGNATURE_1) {
+ if (!ok || signature1 != KeePass2::SIGNATURE_1 || signature2 != KeePass2::SIGNATURE_2) {
raiseError(tr("Not a KeePass database."));
return nullptr;
}
- quint32 signature2 = Endian::readUInt32(m_headerStream, KeePass2::BYTEORDER, &ok);
- if (ok && signature2 == KeePass1::SIGNATURE_2) {
+ if (signature2 == KeePass1::SIGNATURE_2) {
raiseError(tr("The selected file is an old KeePass 1 database (.kdb).\n\n"
"You can import it by clicking on Database > 'Import KeePass 1 database...'.\n"
"This is a one-way migration. You won't be able to open the imported "
"database with the old KeePassX 0.4 version."));
return nullptr;
}
- else if (!ok || signature2 != KeePass2::SIGNATURE_2) {
- raiseError(tr("Not a KeePass database."));
- return nullptr;
- }
-
- quint32 version = Endian::readUInt32(m_headerStream, KeePass2::BYTEORDER, &ok)
- & KeePass2::FILE_VERSION_CRITICAL_MASK;
- quint32 maxVersion = KeePass2::FILE_VERSION & KeePass2::FILE_VERSION_CRITICAL_MASK;
- if (!ok || (version < KeePass2::FILE_VERSION_MIN) || (version > maxVersion)) {
- raiseError(tr("Unsupported KeePass database version."));
- return nullptr;
- }
-
- while (readHeaderField() && !hasError()) {
- }
-
- headerStream.close();
-
- if (hasError()) {
- return nullptr;
- }
-
- // check if all required headers were present
- if (m_masterSeed.isEmpty() || m_transformSeed.isEmpty() || m_encryptionIV.isEmpty()
- || m_streamStartBytes.isEmpty() || m_protectedStreamKey.isEmpty()
- || m_db->cipher().isNull()) {
- raiseError("missing database headers");
- return nullptr;
- }
-
- if (!m_db->setKey(key, m_transformSeed, false)) {
- raiseError(tr("Unable to calculate master key"));
- return nullptr;
- }
-
- if (m_db->challengeMasterSeed(m_masterSeed) == false) {
- raiseError(tr("Unable to issue challenge-response."));
- return nullptr;
- }
-
- CryptoHash hash(CryptoHash::Sha256);
- hash.addData(m_masterSeed);
- hash.addData(m_db->challengeResponseKey());
- hash.addData(m_db->transformedMasterKey());
- QByteArray finalKey = hash.result();
-
- SymmetricCipherStream cipherStream(m_device, SymmetricCipher::cipherToAlgorithm(m_db->cipher()),
- SymmetricCipher::Cbc, SymmetricCipher::Decrypt);
- if (!cipherStream.init(finalKey, m_encryptionIV)) {
- raiseError(cipherStream.errorString());
- return nullptr;
- }
- if (!cipherStream.open(QIODevice::ReadOnly)) {
- raiseError(cipherStream.errorString());
- return nullptr;
- }
- QByteArray realStart = cipherStream.read(32);
-
- if (realStart != m_streamStartBytes) {
- raiseError(tr("Wrong key or database file is corrupt."));
+ quint32 maxVersion = KeePass2::FILE_VERSION_4 & KeePass2::FILE_VERSION_CRITICAL_MASK;
+ if (m_version < KeePass2::FILE_VERSION_MIN || m_version > maxVersion) {
+ raiseError(tr("Unsupported KeePass 2 database version."));
return nullptr;
}
- HashedBlockStream hashedStream(&cipherStream);
- if (!hashedStream.open(QIODevice::ReadOnly)) {
- raiseError(hashedStream.errorString());
- return nullptr;
- }
-
- QIODevice* xmlDevice;
- QScopedPointer<QtIOCompressor> ioCompressor;
-
- if (m_db->compressionAlgo() == Database::CompressionNone) {
- xmlDevice = &hashedStream;
- }
- else {
- ioCompressor.reset(new QtIOCompressor(&hashedStream));
- ioCompressor->setStreamFormat(QtIOCompressor::GzipFormat);
- if (!ioCompressor->open(QIODevice::ReadOnly)) {
- raiseError(ioCompressor->errorString());
- return nullptr;
- }
- xmlDevice = ioCompressor.data();
- }
-
- KeePass2RandomStream randomStream;
- if (!randomStream.init(m_protectedStreamKey)) {
- raiseError(randomStream.errorString());
- return nullptr;
+ // determine file format (KDBX 2/3 or 4)
+ if (m_version < KeePass2::FILE_VERSION_4) {
+ m_reader.reset(new Kdbx3Reader());
+ } else {
+ m_reader.reset(new Kdbx4Reader());
}
- QScopedPointer<QBuffer> buffer;
-
- if (m_saveXml) {
- m_xmlData = xmlDevice->readAll();
- buffer.reset(new QBuffer(&m_xmlData));
- buffer->open(QIODevice::ReadOnly);
- xmlDevice = buffer.data();
- }
-
- KeePass2XmlReader xmlReader;
- xmlReader.readDatabase(xmlDevice, m_db, &randomStream);
-
- if (xmlReader.hasError()) {
- raiseError(xmlReader.errorString());
- if (keepDatabase) {
- return db.take();
- }
- else {
- return nullptr;
- }
- }
-
- Q_ASSERT(version < 0x00030001 || !xmlReader.headerHash().isEmpty());
-
- if (!xmlReader.headerHash().isEmpty()) {
- QByteArray headerHash = CryptoHash::hash(headerStream.storedData(), CryptoHash::Sha256);
- if (headerHash != xmlReader.headerHash()) {
- raiseError("Header doesn't match hash");
- return nullptr;
- }
- }
-
- return db.take();
+ m_reader->setSaveXml(m_saveXml);
+ return m_reader->readDatabase(device, key, keepDatabase);
}
-Database* KeePass2Reader::readDatabase(const QString& filename, const CompositeKey& key)
+bool KeePass2Reader::hasError() const
{
- QFile file(filename);
- if (!file.open(QFile::ReadOnly)) {
- raiseError(file.errorString());
- return nullptr;
- }
-
- QScopedPointer<Database> db(readDatabase(&file, key));
-
- if (file.error() != QFile::NoError) {
- raiseError(file.errorString());
- return nullptr;
- }
-
- return db.take();
+ return m_error || (!m_reader.isNull() && m_reader->hasError());
}
-bool KeePass2Reader::hasError()
+QString KeePass2Reader::errorString() const
{
- return m_error;
+ return !m_reader.isNull() ? m_reader->errorString() : m_errorStr;
}
-QString KeePass2Reader::errorString()
+bool KeePass2Reader::saveXml() const
{
- return m_errorStr;
+ return m_saveXml;
}
void KeePass2Reader::setSaveXml(bool save)
@@ -238,202 +116,29 @@ void KeePass2Reader::setSaveXml(bool save)
m_saveXml = save;
}
-QByteArray KeePass2Reader::xmlData()
+/**
+ * @return detected KDBX version
+ */
+quint32 KeePass2Reader::version() const
{
- return m_xmlData;
+ return m_version;
}
-QByteArray KeePass2Reader::streamKey()
+/**
+ * @return KDBX reader used for reading the input file
+ */
+QSharedPointer<KdbxReader> KeePass2Reader::reader() const
{
- return m_protectedStreamKey;
+ return m_reader;
}
+/**
+ * Raise an error. Use in case of an unexpected read error.
+ *
+ * @param errorMessage error message
+ */
void KeePass2Reader::raiseError(const QString& errorMessage)
{
m_error = true;
m_errorStr = errorMessage;
}
-
-bool KeePass2Reader::readHeaderField()
-{
- QByteArray fieldIDArray = m_headerStream->read(1);
- if (fieldIDArray.size() != 1) {
- raiseError("Invalid header id size");
- return false;
- }
- quint8 fieldID = fieldIDArray.at(0);
-
- bool ok;
- quint16 fieldLen = Endian::readUInt16(m_headerStream, KeePass2::BYTEORDER, &ok);
- if (!ok) {
- raiseError("Invalid header field length");
- return false;
- }
-
- QByteArray fieldData;
- if (fieldLen != 0) {
- fieldData = m_headerStream->read(fieldLen);
- if (fieldData.size() != fieldLen) {
- raiseError("Invalid header data length");
- return false;
- }
- }
-
- switch (fieldID) {
- case KeePass2::EndOfHeader:
- m_headerEnd = true;
- break;
-
- case KeePass2::CipherID:
- setCipher(fieldData);
- break;
-
- case KeePass2::CompressionFlags:
- setCompressionFlags(fieldData);
- break;
-
- case KeePass2::MasterSeed:
- setMasterSeed(fieldData);
- break;
-
- case KeePass2::TransformSeed:
- setTransformSeed(fieldData);
- break;
-
- case KeePass2::TransformRounds:
- setTransformRounds(fieldData);
- break;
-
- case KeePass2::EncryptionIV:
- setEncryptionIV(fieldData);
- break;
-
- case KeePass2::ProtectedStreamKey:
- setProtectedStreamKey(fieldData);
- break;
-
- case KeePass2::StreamStartBytes:
- setStreamStartBytes(fieldData);
- break;
-
- case KeePass2::InnerRandomStreamID:
- setInnerRandomStreamID(fieldData);
- break;
-
- default:
- qWarning("Unknown header field read: id=%d", fieldID);
- break;
- }
-
- return !m_headerEnd;
-}
-
-void KeePass2Reader::setCipher(const QByteArray& data)
-{
- if (data.size() != Uuid::Length) {
- raiseError("Invalid cipher uuid length");
- }
- else {
- Uuid uuid(data);
-
- if (uuid != KeePass2::CIPHER_AES && uuid != KeePass2::CIPHER_TWOFISH) {
- raiseError("Unsupported cipher");
- }
- else {
- m_db->setCipher(uuid);
- }
- }
-}
-
-void KeePass2Reader::setCompressionFlags(const QByteArray& data)
-{
- if (data.size() != 4) {
- raiseError("Invalid compression flags length");
- }
- else {
- quint32 id = Endian::bytesToUInt32(data, KeePass2::BYTEORDER);
-
- if (id > Database::CompressionAlgorithmMax) {
- raiseError("Unsupported compression algorithm");
- }
- else {
- m_db->setCompressionAlgo(static_cast<Database::CompressionAlgorithm>(id));
- }
- }
-}
-
-void KeePass2Reader::setMasterSeed(const QByteArray& data)
-{
- if (data.size() != 32) {
- raiseError("Invalid master seed size");
- }
- else {
- m_masterSeed = data;
- }
-}
-
-void KeePass2Reader::setTransformSeed(const QByteArray& data)
-{
- if (data.size() != 32) {
- raiseError("Invalid transform seed size");
- }
- else {
- m_transformSeed = data;
- }
-}
-
-void KeePass2Reader::setTransformRounds(const QByteArray& data)
-{
- if (data.size() != 8) {
- raiseError("Invalid transform rounds size");
- }
- else {
- if (!m_db->setTransformRounds(Endian::bytesToUInt64(data, KeePass2::BYTEORDER))) {
- raiseError(tr("Unable to calculate master key"));
- }
- }
-}
-
-void KeePass2Reader::setEncryptionIV(const QByteArray& data)
-{
- if (data.size() != 16) {
- raiseError("Invalid encryption iv size");
- }
- else {
- m_encryptionIV = data;
- }
-}
-
-void KeePass2Reader::setProtectedStreamKey(const QByteArray& data)
-{
- if (data.size() != 32) {
- raiseError("Invalid stream key size");
- }
- else {
- m_protectedStreamKey = data;
- }
-}
-
-void KeePass2Reader::setStreamStartBytes(const QByteArray& data)
-{
- if (data.size() != 32) {
- raiseError("Invalid start bytes size");
- }
- else {
- m_streamStartBytes = data;
- }
-}
-
-void KeePass2Reader::setInnerRandomStreamID(const QByteArray& data)
-{
- if (data.size() != 4) {
- raiseError("Invalid random stream id size");
- }
- else {
- quint32 id = Endian::bytesToUInt32(data, KeePass2::BYTEORDER);
-
- if (id != KeePass2::Salsa20) {
- raiseError("Unsupported random stream algorithm");
- }
- }
-}
diff --git a/src/format/KeePass2Reader.h b/src/format/KeePass2Reader.h
index f8b962535..1b91223ee 100644
--- a/src/format/KeePass2Reader.h
+++ b/src/format/KeePass2Reader.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,56 +18,43 @@
#ifndef KEEPASSX_KEEPASS2READER_H
#define KEEPASSX_KEEPASS2READER_H
-#include <QCoreApplication>
-
+#include "format/KeePass2.h"
+#include "core/Database.h"
#include "keys/CompositeKey.h"
+#include "KdbxReader.h"
-class Database;
-class QIODevice;
+#include <QtGlobal>
+#include <QByteArray>
+#include <QString>
+#include <QCoreApplication>
+#include <QScopedPointer>
+#include <QIODevice>
class KeePass2Reader
{
- Q_DECLARE_TR_FUNCTIONS(KeePass2Reader)
+Q_DECLARE_TR_FUNCTIONS(KdbxReader)
public:
- KeePass2Reader();
- Database* readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase = false);
Database* readDatabase(const QString& filename, const CompositeKey& key);
- bool hasError();
- QString errorString();
+ Database* readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase = false);
+
+ bool hasError() const;
+ QString errorString() const;
+
+ bool saveXml() const;
void setSaveXml(bool save);
- QByteArray xmlData();
- QByteArray streamKey();
+ QSharedPointer<KdbxReader> reader() const;
+ quint32 version() const;
private:
void raiseError(const QString& errorMessage);
- bool readHeaderField();
-
- void setCipher(const QByteArray& data);
- void setCompressionFlags(const QByteArray& data);
- void setMasterSeed(const QByteArray& data);
- void setTransformSeed(const QByteArray& data);
- void setTransformRounds(const QByteArray& data);
- void setEncryptionIV(const QByteArray& data);
- void setProtectedStreamKey(const QByteArray& data);
- void setStreamStartBytes(const QByteArray& data);
- void setInnerRandomStreamID(const QByteArray& data);
-
- QIODevice* m_device;
- QIODevice* m_headerStream;
- bool m_error;
- QString m_errorStr;
- bool m_headerEnd;
- bool m_saveXml;
- QByteArray m_xmlData;
+ bool m_saveXml = false;
+ bool m_error = false;
+ QString m_errorStr = "";
- Database* m_db;
- QByteArray m_masterSeed;
- QByteArray m_transformSeed;
- QByteArray m_encryptionIV;
- QByteArray m_streamStartBytes;
- QByteArray m_protectedStreamKey;
+ QSharedPointer<KdbxReader> m_reader;
+ quint32 m_version = 0;
};
#endif // KEEPASSX_KEEPASS2READER_H
diff --git a/src/format/KeePass2Repair.cpp b/src/format/KeePass2Repair.cpp
index 8d18457d4..47ed59dc9 100644
--- a/src/format/KeePass2Repair.cpp
+++ b/src/format/KeePass2Repair.cpp
@@ -19,12 +19,13 @@
#include "KeePass2Repair.h"
#include <QBuffer>
-#include <QScopedPointer>
-#include <QRegExp>
+#include "core/Group.h"
+#include "format/KeePass2.h"
#include "format/KeePass2RandomStream.h"
#include "format/KeePass2Reader.h"
-#include "format/KeePass2XmlReader.h"
+#include "format/Kdbx4Reader.h"
+#include "format/KdbxXmlReader.h"
KeePass2Repair::RepairOutcome KeePass2Repair::repairDatabase(QIODevice* device, const CompositeKey& key)
{
@@ -38,7 +39,7 @@ KeePass2Repair::RepairOutcome KeePass2Repair::repairDatabase(QIODevice* device,
return qMakePair(NothingTodo, nullptr);
}
- QByteArray xmlData = reader.xmlData();
+ QByteArray xmlData = reader.reader()->xmlData();
if (!db || xmlData.isEmpty()) {
m_errorStr = reader.errorString();
return qMakePair(UnableToOpen, nullptr);
@@ -59,7 +60,7 @@ KeePass2Repair::RepairOutcome KeePass2Repair::repairDatabase(QIODevice* device,
// try to fix broken databases because of bug #392
for (int i = (xmlData.size() - 1); i >= 0; i--) {
- quint8 ch = static_cast<quint8>(xmlData.at(i));
+ auto ch = static_cast<quint8>(xmlData.at(i));
if (ch < 0x20 && ch != 0x09 && ch != 0x0A && ch != 0x0D) {
xmlData.remove(i, 1);
repairAction = true;
@@ -71,14 +72,25 @@ KeePass2Repair::RepairOutcome KeePass2Repair::repairDatabase(QIODevice* device,
return qMakePair(RepairFailed, nullptr);
}
- KeePass2RandomStream randomStream;
- randomStream.init(reader.streamKey());
- KeePass2XmlReader xmlReader;
+ KeePass2RandomStream randomStream(reader.reader()->protectedStreamAlgo());
+ randomStream.init(reader.reader()->streamKey());
+ bool hasError;
+
QBuffer buffer(&xmlData);
buffer.open(QIODevice::ReadOnly);
- xmlReader.readDatabase(&buffer, db.data(), &randomStream);
+ if ((reader.version() & KeePass2::FILE_VERSION_CRITICAL_MASK) < KeePass2::FILE_VERSION_4) {
+ KdbxXmlReader xmlReader(KeePass2::FILE_VERSION_3_1);
+ xmlReader.readDatabase(&buffer, db.data(), &randomStream);
+ hasError = xmlReader.hasError();
+ } else {
+ auto reader4 = reader.reader().staticCast<Kdbx4Reader>();
+ QHash<QString, QByteArray> pool = reader4->binaryPool();
+ KdbxXmlReader xmlReader(KeePass2::FILE_VERSION_4, pool);
+ xmlReader.readDatabase(&buffer, db.data(), &randomStream);
+ hasError = xmlReader.hasError();
+ }
- if (xmlReader.hasError()) {
+ if (hasError) {
return qMakePair(RepairFailed, nullptr);
}
else {
diff --git a/src/format/KeePass2Writer.cpp b/src/format/KeePass2Writer.cpp
index f8f60f11e..68cf3af99 100644
--- a/src/format/KeePass2Writer.cpp
+++ b/src/format/KeePass2Writer.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,196 +15,102 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "KeePass2Writer.h"
-
-#include <QBuffer>
-#include <QFile>
#include <QIODevice>
+#include <QFile>
#include "core/Database.h"
-#include "core/Endian.h"
-#include "crypto/CryptoHash.h"
-#include "crypto/Random.h"
-#include "format/KeePass2RandomStream.h"
-#include "format/KeePass2XmlWriter.h"
-#include "streams/HashedBlockStream.h"
-#include "streams/QtIOCompressor"
-#include "streams/SymmetricCipherStream.h"
-
-#define CHECK_RETURN(x) if (!(x)) return;
-#define CHECK_RETURN_FALSE(x) if (!(x)) return false;
-
-KeePass2Writer::KeePass2Writer()
- : m_device(0)
- , m_error(false)
+#include "core/Group.h"
+#include "core/Metadata.h"
+#include "crypto/kdf/AesKdf.h"
+#include "format/KeePass2Writer.h"
+#include "format/Kdbx3Writer.h"
+#include "format/Kdbx4Writer.h"
+
+/**
+ * Write a database to a KDBX file.
+ *
+ * @param filename output filename
+ * @param db source database
+ * @return true on success
+ */
+bool KeePass2Writer::writeDatabase(const QString& filename, Database* db)
{
+ QFile file(filename);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
+ raiseError(file.errorString());
+ return false;
+ }
+ return writeDatabase(&file, db);
}
-void KeePass2Writer::writeDatabase(QIODevice* device, Database* db)
-{
+/**
+ * Write a database to a device in KDBX format.
+ *
+ * @param device output device
+ * @param db source database
+ * @return true on success
+ */
+
+bool KeePass2Writer::writeDatabase(QIODevice* device, Database* db) {
m_error = false;
m_errorStr.clear();
- QByteArray transformSeed = randomGen()->randomArray(32);
- QByteArray masterSeed = randomGen()->randomArray(32);
- QByteArray encryptionIV = randomGen()->randomArray(16);
- QByteArray protectedStreamKey = randomGen()->randomArray(32);
- QByteArray startBytes = randomGen()->randomArray(32);
- QByteArray endOfHeader = "\r\n\r\n";
-
- if (db->challengeMasterSeed(masterSeed) == false) {
- raiseError(tr("Unable to issue challenge-response."));
- return;
- }
-
- if (!db->transformKeyWithSeed(transformSeed)) {
- raiseError(tr("Unable to calculate master key"));
- return;
- }
-
- CryptoHash hash(CryptoHash::Sha256);
- hash.addData(masterSeed);
- hash.addData(db->challengeResponseKey());
- Q_ASSERT(!db->transformedMasterKey().isEmpty());
- hash.addData(db->transformedMasterKey());
- QByteArray finalKey = hash.result();
-
- QBuffer header;
- header.open(QIODevice::WriteOnly);
- m_device = &header;
-
- CHECK_RETURN(writeData(Endian::int32ToBytes(KeePass2::SIGNATURE_1, KeePass2::BYTEORDER)));
- CHECK_RETURN(writeData(Endian::int32ToBytes(KeePass2::SIGNATURE_2, KeePass2::BYTEORDER)));
- CHECK_RETURN(writeData(Endian::int32ToBytes(KeePass2::FILE_VERSION, KeePass2::BYTEORDER)));
-
- CHECK_RETURN(writeHeaderField(KeePass2::CipherID, db->cipher().toByteArray()));
- CHECK_RETURN(writeHeaderField(KeePass2::CompressionFlags,
- Endian::int32ToBytes(db->compressionAlgo(),
- KeePass2::BYTEORDER)));
- CHECK_RETURN(writeHeaderField(KeePass2::MasterSeed, masterSeed));
- CHECK_RETURN(writeHeaderField(KeePass2::TransformSeed, db->transformSeed()));
- CHECK_RETURN(writeHeaderField(KeePass2::TransformRounds,
- Endian::int64ToBytes(db->transformRounds(),
- KeePass2::BYTEORDER)));
- CHECK_RETURN(writeHeaderField(KeePass2::EncryptionIV, encryptionIV));
- CHECK_RETURN(writeHeaderField(KeePass2::ProtectedStreamKey, protectedStreamKey));
- CHECK_RETURN(writeHeaderField(KeePass2::StreamStartBytes, startBytes));
- CHECK_RETURN(writeHeaderField(KeePass2::InnerRandomStreamID,
- Endian::int32ToBytes(KeePass2::Salsa20,
- KeePass2::BYTEORDER)));
- CHECK_RETURN(writeHeaderField(KeePass2::EndOfHeader, endOfHeader));
-
- header.close();
- m_device = device;
- QByteArray headerHash = CryptoHash::hash(header.data(), CryptoHash::Sha256);
- CHECK_RETURN(writeData(header.data()));
-
- SymmetricCipherStream cipherStream(device, SymmetricCipher::cipherToAlgorithm(db->cipher()),
- SymmetricCipher::Cbc, SymmetricCipher::Encrypt);
- cipherStream.init(finalKey, encryptionIV);
- if (!cipherStream.open(QIODevice::WriteOnly)) {
- raiseError(cipherStream.errorString());
- return;
- }
- m_device = &cipherStream;
- CHECK_RETURN(writeData(startBytes));
-
- HashedBlockStream hashedStream(&cipherStream);
- if (!hashedStream.open(QIODevice::WriteOnly)) {
- raiseError(hashedStream.errorString());
- return;
- }
-
- QScopedPointer<QtIOCompressor> ioCompressor;
-
- if (db->compressionAlgo() == Database::CompressionNone) {
- m_device = &hashedStream;
- }
- else {
- ioCompressor.reset(new QtIOCompressor(&hashedStream));
- ioCompressor->setStreamFormat(QtIOCompressor::GzipFormat);
- if (!ioCompressor->open(QIODevice::WriteOnly)) {
- raiseError(ioCompressor->errorString());
- return;
+ // determine KDBX3 vs KDBX4
+ bool hasCustomData = !db->publicCustomData().isEmpty() || (db->metadata()->customData() && !db->metadata()->customData()->isEmpty());
+ if (!hasCustomData) {
+ for (const auto& entry: db->rootGroup()->entriesRecursive(true)) {
+ if ((entry->customData() && !entry->customData()->isEmpty()) ||
+ (entry->group() && entry->group()->customData() && !entry->group()->customData()->isEmpty())) {
+ hasCustomData = true;
+ break;
+ }
}
- m_device = ioCompressor.data();
- }
-
- KeePass2RandomStream randomStream;
- if (!randomStream.init(protectedStreamKey)) {
- raiseError(randomStream.errorString());
- return;
}
- KeePass2XmlWriter xmlWriter;
- xmlWriter.writeDatabase(m_device, db, &randomStream, headerHash);
-
- // Explicitly close/reset streams so they are flushed and we can detect
- // errors. QIODevice::close() resets errorString() etc.
- if (ioCompressor) {
- ioCompressor->close();
- }
- if (!hashedStream.reset()) {
- raiseError(hashedStream.errorString());
- return;
- }
- if (!cipherStream.reset()) {
- raiseError(cipherStream.errorString());
- return;
+ if (db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3 && !hasCustomData) {
+ m_version = KeePass2::FILE_VERSION_3_1;
+ m_writer.reset(new Kdbx3Writer());
+ } else {
+ m_version = KeePass2::FILE_VERSION_4;
+ m_writer.reset(new Kdbx4Writer());
}
- if (xmlWriter.hasError()) {
- raiseError(xmlWriter.errorString());
- }
+ return m_writer->writeDatabase(device, db);
}
-bool KeePass2Writer::writeData(const QByteArray& data)
+bool KeePass2Writer::hasError() const
{
- if (m_device->write(data) != data.size()) {
- raiseError(m_device->errorString());
- return false;
- }
- else {
- return true;
- }
+ return m_error || (m_writer && m_writer->hasError());
}
-bool KeePass2Writer::writeHeaderField(KeePass2::HeaderFieldID fieldId, const QByteArray& data)
+QString KeePass2Writer::errorString() const
{
- Q_ASSERT(data.size() <= 65535);
-
- QByteArray fieldIdArr;
- fieldIdArr[0] = fieldId;
- CHECK_RETURN_FALSE(writeData(fieldIdArr));
- CHECK_RETURN_FALSE(writeData(Endian::int16ToBytes(static_cast<quint16>(data.size()),
- KeePass2::BYTEORDER)));
- CHECK_RETURN_FALSE(writeData(data));
-
- return true;
+ return m_writer ? m_writer->errorString() : m_errorStr;
}
-void KeePass2Writer::writeDatabase(const QString& filename, Database* db)
-{
- QFile file(filename);
- if (!file.open(QIODevice::WriteOnly|QIODevice::Truncate)) {
- raiseError(file.errorString());
- return;
- }
- writeDatabase(&file, db);
-}
-
-bool KeePass2Writer::hasError()
+/**
+ * Raise an error. Use in case of an unexpected write error.
+ *
+ * @param errorMessage error message
+ */
+void KeePass2Writer::raiseError(const QString& errorMessage)
{
- return m_error;
+ m_error = true;
+ m_errorStr = errorMessage;
}
-QString KeePass2Writer::errorString()
+/**
+ * @return KDBX writer used for writing the output file
+ */
+QSharedPointer<KdbxWriter> KeePass2Writer::writer() const
{
- return m_errorStr;
+ return QSharedPointer<KdbxWriter>();
}
-void KeePass2Writer::raiseError(const QString& errorMessage)
+/**
+ * @return KDBX version used for writing the output file
+ */
+quint32 KeePass2Writer::version() const
{
- m_error = true;
- m_errorStr = errorMessage;
+ return m_version;
}
diff --git a/src/format/KeePass2Writer.h b/src/format/KeePass2Writer.h
index 184aa1a71..98daed5e3 100644
--- a/src/format/KeePass2Writer.h
+++ b/src/format/KeePass2Writer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,33 +18,36 @@
#ifndef KEEPASSX_KEEPASS2WRITER_H
#define KEEPASSX_KEEPASS2WRITER_H
-#include <QCoreApplication>
+#include "KdbxWriter.h"
-#include "format/KeePass2.h"
-#include "keys/CompositeKey.h"
+#include <QCoreApplication>
+#include <QScopedPointer>
-class Database;
class QIODevice;
+class Database;
class KeePass2Writer
{
- Q_DECLARE_TR_FUNCTIONS(KeePass2Writer)
+Q_DECLARE_TR_FUNCTIONS(KeePass2Writer)
public:
- KeePass2Writer();
- void writeDatabase(QIODevice* device, Database* db);
- void writeDatabase(const QString& filename, Database* db);
- bool hasError();
- QString errorString();
+ bool writeDatabase(const QString& filename, Database* db);
+ bool writeDatabase(QIODevice* device, Database* db);
+
+ QSharedPointer<KdbxWriter> writer() const;
+ quint32 version() const;
+
+ bool hasError() const;
+ QString errorString() const;
private:
- bool writeData(const QByteArray& data);
- bool writeHeaderField(KeePass2::HeaderFieldID fieldId, const QByteArray& data);
void raiseError(const QString& errorMessage);
- QIODevice* m_device;
- bool m_error;
- QString m_errorStr;
+ bool m_error = false;
+ QString m_errorStr = "";
+
+ QScopedPointer<KdbxWriter> m_writer;
+ quint32 m_version = 0;
};
-#endif // KEEPASSX_KEEPASS2WRITER_H
+#endif // KEEPASSX_KEEPASS2READER_H
diff --git a/src/format/KeePass2XmlReader.h b/src/format/KeePass2XmlReader.h
deleted file mode 100644
index d2e0e0025..000000000
--- a/src/format/KeePass2XmlReader.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef KEEPASSX_KEEPASS2XMLREADER_H
-#define KEEPASSX_KEEPASS2XMLREADER_H
-
-#include <QColor>
-#include <QCoreApplication>
-#include <QDateTime>
-#include <QHash>
-#include <QPair>
-#include <QXmlStreamReader>
-
-#include "core/TimeInfo.h"
-#include "core/Uuid.h"
-
-class Database;
-class Entry;
-class Group;
-class KeePass2RandomStream;
-class Metadata;
-
-class KeePass2XmlReader
-{
- Q_DECLARE_TR_FUNCTIONS(KeePass2XmlReader)
-
-public:
- KeePass2XmlReader();
- Database* readDatabase(QIODevice* device);
- void readDatabase(QIODevice* device, Database* db, KeePass2RandomStream* randomStream = nullptr);
- Database* readDatabase(const QString& filename);
- bool hasError();
- QString errorString();
- QByteArray headerHash();
- void setStrictMode(bool strictMode);
-
-private:
- bool parseKeePassFile();
- void parseMeta();
- void parseMemoryProtection();
- void parseCustomIcons();
- void parseIcon();
- void parseBinaries();
- void parseCustomData();
- void parseCustomDataItem();
- bool parseRoot();
- Group* parseGroup();
- void parseDeletedObjects();
- void parseDeletedObject();
- Entry* parseEntry(bool history);
- void parseEntryString(Entry* entry);
- QPair<QString, QString> parseEntryBinary(Entry* entry);
- void parseAutoType(Entry* entry);
- void parseAutoTypeAssoc(Entry* entry);
- QList<Entry*> parseEntryHistory();
- TimeInfo parseTimes();
-
- QString readString();
- bool readBool();
- QDateTime readDateTime();
- QColor readColor();
- int readNumber();
- Uuid readUuid();
- QByteArray readBinary();
- QByteArray readCompressedBinary();
-
- Group* getGroup(const Uuid& uuid);
- Entry* getEntry(const Uuid& uuid);
- void raiseError(const QString& errorMessage);
- void skipCurrentElement();
-
- QXmlStreamReader m_xml;
- KeePass2RandomStream* m_randomStream;
- Database* m_db;
- Metadata* m_meta;
- Group* m_tmpParent;
- QHash<Uuid, Group*> m_groups;
- QHash<Uuid, Entry*> m_entries;
- QHash<QString, QByteArray> m_binaryPool;
- QHash<QString, QPair<Entry*, QString> > m_binaryMap;
- QByteArray m_headerHash;
- bool m_error;
- QString m_errorStr;
- bool m_strictMode;
-};
-
-#endif // KEEPASSX_KEEPASS2XMLREADER_H
diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp
index 5978cd956..adfdea0a7 100644
--- a/src/gui/AboutDialog.cpp
+++ b/src/gui/AboutDialog.cpp
@@ -54,6 +54,9 @@ AboutDialog::AboutDialog(QWidget* parent)
QString debugInfo = "KeePassXC - ";
debugInfo.append(tr("Version %1\n").arg(KEEPASSX_VERSION));
+#ifndef KEEPASSXC_BUILD_TYPE_RELEASE
+ debugInfo.append(tr("Build Type: %1\n").arg(KEEPASSXC_BUILD_TYPE));
+#endif
if (!commitHash.isEmpty()) {
debugInfo.append(tr("Revision: %1").arg(commitHash.left(7)).append("\n"));
}
@@ -69,21 +72,27 @@ AboutDialog::AboutDialog(QWidget* parent)
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
debugInfo.append(tr("Operating system: %1\nCPU architecture: %2\nKernel: %3 %4")
- .arg(QSysInfo::prettyProductName())
- .arg(QSysInfo::currentCpuArchitecture())
- .arg(QSysInfo::kernelType())
- .arg(QSysInfo::kernelVersion()));
+ .arg(QSysInfo::prettyProductName(),
+ QSysInfo::currentCpuArchitecture(),
+ QSysInfo::kernelType(),
+ QSysInfo::kernelVersion()));
debugInfo.append("\n\n");
#endif
QString extensions;
-#ifdef WITH_XC_HTTP
- extensions += "\n- KeePassHTTP";
-#endif
#ifdef WITH_XC_AUTOTYPE
extensions += "\n- Auto-Type";
#endif
+#ifdef WITH_XC_BROWSER
+ extensions += "\n- Browser Integration";
+#endif
+#ifdef WITH_XC_HTTP
+ extensions += "\n- Legacy Browser Integration (KeePassHTTP)";
+#endif
+#ifdef WITH_XC_SSHAGENT
+ extensions += "\n- SSH Agent";
+#endif
#ifdef WITH_XC_YUBIKEY
extensions += "\n- YubiKey";
#endif
diff --git a/src/gui/AboutDialog.ui b/src/gui/AboutDialog.ui
index 3671934dc..39963c121 100644
--- a/src/gui/AboutDialog.ui
+++ b/src/gui/AboutDialog.ui
@@ -148,7 +148,7 @@
</spacer>
</item>
<item>
- <widget class="QLabel" name="label_7">
+ <widget class="QLabel" name="label_8">
<property name="text">
<string>Project Maintainers:</string>
</property>
@@ -168,13 +168,28 @@
&lt;li&gt;phoerious&lt;/li&gt;
&lt;li&gt;TheZ3ro&lt;/li&gt;
&lt;li&gt;louib&lt;/li&gt;
- &lt;li&gt;Weslly&lt;/li&gt;
- &lt;li&gt;debfx (KeePassX)&lt;/li&gt;
+ &lt;li&gt;weslly&lt;/li&gt;
&lt;/ul&gt;</string>
</property>
</widget>
</item>
<item>
+ <widget class="QLabel" name="label_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -204,8 +219,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>591</width>
- <height>760</height>
+ <width>449</width>
+ <height>803</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
@@ -221,40 +236,55 @@
<cursorShape>IBeamCursor</cursorShape>
</property>
<property name="text">
- <string notr="true">&lt;h2&gt;Code:&lt;/h2&gt;
+ <string notr="true">&lt;h3&gt;Notable Code Contributions:&lt;/h3&gt;
&lt;ul&gt;
-&lt;li&gt;debfx (KeePassX) &lt;/li&gt;
-&lt;li&gt;BlueIce (KeePassX) &lt;/li&gt;
-&lt;li&gt;droidmonkey &lt;/li&gt;
-&lt;li&gt;phoerious &lt;/li&gt;
-&lt;li&gt;TheZ3ro &lt;/li&gt;
-&lt;li&gt;louib &lt;/li&gt;
-&lt;li &gt;weslly &lt;/li&gt;
-&lt;li&gt;keithbennett (KeePassHTTP) &lt;/li&gt;
-&lt;li&gt;Typz (KeePassHTTP) &lt;/li&gt;
-&lt;li&gt;denk-mal (KeePassHTTP) &lt;/li&gt;
-&lt;li&gt;kylemanna (YubiKey) &lt;/li&gt;
-&lt;li&gt;seatedscribe (CSV Importer) &lt;/li&gt;
-&lt;li&gt;pgalves (Inline Messages) &lt;/li&gt;
+&lt;li&gt;droidmonkey&lt;/li&gt;
+&lt;li&gt;phoerious&lt;/li&gt;
+&lt;li&gt;TheZ3ro&lt;/li&gt;
+&lt;li&gt;louib&lt;/li&gt;
+&lt;li &gt;weslly&lt;/li&gt;
+&lt;li&gt;varjolintu (KeePassXC-Browser)&lt;/li&gt;
+&lt;li&gt;hifi (SSH Agent)&lt;/li&gt;
+&lt;li&gt;frostasm&lt;/li&gt;
+&lt;li&gt;fonic (Entry Table View)&lt;/li&gt;
+&lt;li&gt;kylemanna (YubiKey)&lt;/li&gt;
+&lt;li&gt;keithbennett (KeePassHTTP)&lt;/li&gt;
+&lt;li&gt;Typz (KeePassHTTP)&lt;/li&gt;
+&lt;li&gt;denk-mal (KeePassHTTP)&lt;/li&gt;
+&lt;li&gt;angelsl (KDBX 4)&lt;/li&gt;
+&lt;li&gt;seatedscribe (CSV Import)&lt;/li&gt;
+&lt;li&gt;debfx (KeePassX)&lt;/li&gt;
+&lt;li&gt;BlueIce (KeePassX)&lt;/li&gt;
&lt;/ul&gt;
-&lt;h2&gt;Translations:&lt;/h2&gt;
+&lt;h3&gt;Translations:&lt;/h3&gt;
&lt;ul&gt;
-&lt;li&gt;&lt;b&gt;Chinese:&lt;/b&gt; Biggulu, ligyxy, BestSteve &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Czech:&lt;/b&gt; pavelb, JosefVitu &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Dutch:&lt;/b&gt; Vistaus, KnooL, apie &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Finnish:&lt;/b&gt; MawKKe &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;French:&lt;/b&gt; Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;German:&lt;/b&gt; Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Greek:&lt;/b&gt; nplatis &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Italian:&lt;/b&gt; TheZ3ro, FranzMari, Mte90, tosky &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Kazakh:&lt;/b&gt; sotrud_nik &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Lithuanian:&lt;/b&gt; Moo &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Polish:&lt;/b&gt; konradmb, mrerexx &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Portuguese: &lt;/b&gt;vitor895, weslly, American_Jesus, mihai.ile &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Russian:&lt;/b&gt; vsvyatski, KekcuHa, wkill95 &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Spanish:&lt;/b&gt; EdwardNavarro, antifaz, piegope, pquin, vsvyatski &lt;/li&gt;
-&lt;li&gt;&lt;b&gt;Swedish:&lt;/b&gt; henziger &lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Basque:&lt;/b&gt; azken_tximinoa, Hey_neken&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Catalan:&lt;/b&gt; capitantrueno, dsoms, mcus, raulua, ZJaume&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Chinese (China):&lt;/b&gt; Biggulu, Brandon_c, hoilc, ligyxy, vc5, Small_Ku&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Chinese (Taiwan):&lt;/b&gt; BestSteve, MiauLightouch, Small_Ku, yan12125, ymhuang0808&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Czech:&lt;/b&gt; DanielMilde, JosefVitu, pavelb, tpavelek&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Danish:&lt;/b&gt; nlkl&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Dutch:&lt;/b&gt; apie, bartlibert, evanoosten, fvw, KnooL, srgvg, Vistaus, wanderingidea&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Finnish:&lt;/b&gt; artnay, Jarppi, MawKKe &lt;/li&gt;
+&lt;li&gt;&lt;b&gt;French:&lt;/b&gt; A1RO, aghilas.messara, bisaloo, frgnca, ggtr1138, gilbsgilbs, gtalbot, Gui13, iannick, jlutran, kyodev, logut, MartialBis, narzb, pBouillon, plunkets, Raphi111, Scrat15, tl_pierre, wilfriedroset&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;German:&lt;/b&gt; antsas, BasicBaer, Calyrx, codejunky, DavidHamburg, eth0, for1real, jensrutschmann, joe776, kflesch, MarcEdinger, marcbone, mcliquid, mfernau77, montilo, nursoda, omnisome4, origin_de, pcrcoding, phoerious, rgloor, transi_222, vlenzer, waster&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Greek:&lt;/b&gt; magkopian, nplatis, tassos.b, xinomilo&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Hungarian:&lt;/b&gt; bubu, meskobalazs, urbalazs&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Indonesian:&lt;/b&gt; zk&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Italian:&lt;/b&gt; amaxis, bovirus, duncanmid, FranzMari, lucaim, Mte90, Peo, TheZ3ro, tosky, VosaxAlo&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Japanese:&lt;/b&gt; masoo, metalic_cat, p2635, Shinichirou_Yamada, vargas.peniel, vmemjp, yukinakato&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Korean:&lt;/b&gt; cancantun, peremen&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Lithuanian:&lt;/b&gt; Moo&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Polish:&lt;/b&gt; keypress, konradmb, mrerexx, psobczak&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Portuguese (Brazil): &lt;/b&gt; danielbibit, fabiom, flaviobn, vitor895, weslly&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Portuguese (Portugal): &lt;/b&gt; American_Jesus, hds, mihai.ile, VictorR2007, smarquespt&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Russian:&lt;/b&gt; _nomoretears_, agag11507, anm, denoos, KekcuHa, Mogost, NcNZllQnHVU, netforhack, NetWormKido, RKuchma, VictorR2007, vsvyatski, wkill95&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Spanish:&lt;/b&gt; antifaz, EdwardNavarro, eliluminado, gonrial, jojobrambs, LeoBeltran, piegope, pquin, puchrojo, vargas.peniel, vsvyatski, Zranz&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Swedish:&lt;/b&gt; Anders_Bergqvist, LIINdd, henziger, jpyllman, peron&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Thai:&lt;/b&gt; arthit&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Turkish:&lt;/b&gt; etc, N3pp&lt;/li&gt;
+&lt;li&gt;&lt;b&gt;Ukrainian:&lt;/b&gt; brisk022, netforhack, zoresvit&lt;/li&gt;
&lt;/ul&gt;</string>
</property>
<property name="textFormat">
diff --git a/src/gui/Application.cpp b/src/gui/Application.cpp
index 98ae83a6c..48cd0d8d7 100644
--- a/src/gui/Application.cpp
+++ b/src/gui/Application.cpp
@@ -22,13 +22,15 @@
#include "core/Config.h"
#include <QAbstractNativeEventFilter>
+#include <QFileInfo>
#include <QFileOpenEvent>
-#include <QSocketNotifier>
#include <QLockFile>
+#include <QSocketNotifier>
#include <QStandardPaths>
#include <QtNetwork/QLocalSocket>
#include "autotype/AutoType.h"
+#include "core/Global.h"
#if defined(Q_OS_UNIX)
#include <signal.h>
@@ -36,6 +38,11 @@
#include <sys/socket.h>
#endif
+namespace {
+constexpr int WaitTimeoutMSec = 150;
+const char BlockSizeProperty[] = "blockSize";
+}
+
#if defined(Q_OS_UNIX) && !defined(Q_OS_OSX)
class XcbEventFilter : public QAbstractNativeEventFilter
{
@@ -105,8 +112,8 @@ Application::Application(int& argc, char** argv)
// In DEBUG mode don't interfere with Release instances
identifier += "-DEBUG";
#endif
- QString socketName = identifier + ".socket";
QString lockName = identifier + ".lock";
+ m_socketName = identifier + ".socket";
// According to documentation we should use RuntimeLocation on *nixes, but even Qt doesn't respect
// this and creates sockets in TempLocation, so let's be consistent.
@@ -114,20 +121,22 @@ Application::Application(int& argc, char** argv)
m_lockFile->setStaleLockTime(0);
m_lockFile->tryLock();
+ m_lockServer.setSocketOptions(QLocalServer::UserAccessOption);
+ connect(&m_lockServer, SIGNAL(newConnection()), this, SIGNAL(anotherInstanceStarted()));
+ connect(&m_lockServer, SIGNAL(newConnection()), this, SLOT(processIncomingConnection()));
+
switch (m_lockFile->error()) {
case QLockFile::NoError:
// No existing lock was found, start listener
- m_lockServer.setSocketOptions(QLocalServer::UserAccessOption);
- m_lockServer.listen(socketName);
- connect(&m_lockServer, SIGNAL(newConnection()), this, SIGNAL(anotherInstanceStarted()));
+ m_lockServer.listen(m_socketName);
break;
case QLockFile::LockFailedError: {
if (config()->get("SingleInstance").toBool()) {
// Attempt to connect to the existing instance
QLocalSocket client;
- for (int i = 0; i < 3; i++) {
- client.connectToServer(socketName);
- if (client.waitForConnected(150)) {
+ for (int i = 0; i < 3; ++i) {
+ client.connectToServer(m_socketName);
+ if (client.waitForConnected(WaitTimeoutMSec)) {
// Connection succeeded, this will raise the existing window if minimized
client.abort();
m_alreadyRunning = true;
@@ -145,9 +154,7 @@ Application::Application(int& argc, char** argv)
m_lockFile->removeStaleLockFile();
m_lockFile->tryLock();
// start the listen server
- m_lockServer.setSocketOptions(QLocalServer::UserAccessOption);
- m_lockServer.listen(socketName);
- connect(&m_lockServer, SIGNAL(newConnection()), this, SIGNAL(anotherInstanceStarted()));
+ m_lockServer.listen(m_socketName);
}
}
break;
@@ -187,12 +194,8 @@ bool Application::event(QEvent* event)
}
#ifdef Q_OS_MAC
// restore main window when clicking on the docker icon
- else if ((event->type() == QEvent::ApplicationActivate) && m_mainWindow) {
- m_mainWindow->ensurePolished();
- m_mainWindow->setWindowState(m_mainWindow->windowState() & ~Qt::WindowMinimized);
- m_mainWindow->show();
- m_mainWindow->raise();
- m_mainWindow->activateWindow();
+ else if (event->type() == QEvent::ApplicationActivate) {
+ emit applicationActivated();
}
#endif
@@ -247,12 +250,54 @@ void Application::quitBySignal()
m_unixSignalNotifier->setEnabled(false);
char buf;
Q_UNUSED(::read(unixSignalSocket[1], &buf, sizeof(buf)));
-
- if (nullptr != m_mainWindow)
- static_cast<MainWindow*>(m_mainWindow)->appExit();
+ emit quitSignalReceived();
}
#endif
+void Application::processIncomingConnection()
+{
+ if (m_lockServer.hasPendingConnections()) {
+ QLocalSocket* socket = m_lockServer.nextPendingConnection();
+ socket->setProperty(BlockSizeProperty, 0);
+ connect(socket, SIGNAL(readyRead()), this, SLOT(socketReadyRead()));
+ }
+}
+
+void Application::socketReadyRead()
+{
+ QLocalSocket* socket = qobject_cast<QLocalSocket*>(sender());
+ if (!socket) {
+ return;
+ }
+
+ QDataStream in(socket);
+ in.setVersion(QDataStream::Qt_5_0);
+
+ int blockSize = socket->property(BlockSizeProperty).toInt();
+ if (blockSize == 0) {
+ // Relies on the fact that QDataStream format streams a quint32 into sizeof(quint32) bytes
+ if (socket->bytesAvailable() < qint64(sizeof(quint32))) {
+ return;
+ }
+ in >> blockSize;
+ }
+
+ if (socket->bytesAvailable() < blockSize || in.atEnd()) {
+ socket->setProperty(BlockSizeProperty, blockSize);
+ return;
+ }
+
+ QStringList fileNames;
+ in >> fileNames;
+ for (const QString& fileName: asConst(fileNames)) {
+ const QFileInfo fInfo(fileName);
+ if (fInfo.isFile() && fInfo.suffix().toLower() == "kdbx") {
+ emit openFile(fileName);
+ }
+ }
+ socket->deleteLater();
+}
+
bool Application::isAlreadyRunning() const
{
#ifdef QT_DEBUG
@@ -262,3 +307,26 @@ bool Application::isAlreadyRunning() const
return config()->get("SingleInstance").toBool() && m_alreadyRunning;
}
+bool Application::sendFileNamesToRunningInstance(const QStringList& fileNames)
+{
+ QLocalSocket client;
+ client.connectToServer(m_socketName);
+ const bool connected = client.waitForConnected(WaitTimeoutMSec);
+ if (!connected) {
+ return false;
+ }
+
+ QByteArray data;
+ QDataStream out(&data, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_5_0);
+ out << quint32(0)
+ << fileNames;
+ out.device()->seek(0);
+ out << quint32(data.size() - sizeof(quint32));
+
+ const bool writeOk = client.write(data) != -1 && client.waitForBytesWritten(WaitTimeoutMSec);
+ client.disconnectFromServer();
+ const bool disconnected = client.waitForDisconnected(WaitTimeoutMSec);
+ return writeOk && disconnected;
+}
+
diff --git a/src/gui/Application.h b/src/gui/Application.h
index 670342ca4..1f5759368 100644
--- a/src/gui/Application.h
+++ b/src/gui/Application.h
@@ -39,14 +39,20 @@ public:
bool event(QEvent* event) override;
bool isAlreadyRunning() const;
+ bool sendFileNamesToRunningInstance(const QStringList& fileNames);
+
signals:
void openFile(const QString& filename);
void anotherInstanceStarted();
+ void applicationActivated();
+ void quitSignalReceived();
private slots:
#if defined(Q_OS_UNIX)
void quitBySignal();
#endif
+ void processIncomingConnection();
+ void socketReadyRead();
private:
QWidget* m_mainWindow;
@@ -63,6 +69,7 @@ private:
bool m_alreadyRunning;
QLockFile* m_lockFile;
QLocalServer m_lockServer;
+ QString m_socketName;
};
#endif // KEEPASSX_APPLICATION_H
diff --git a/src/gui/ChangeMasterKeyWidget.cpp b/src/gui/ChangeMasterKeyWidget.cpp
index ef4b61ef2..28a0991db 100644
--- a/src/gui/ChangeMasterKeyWidget.cpp
+++ b/src/gui/ChangeMasterKeyWidget.cpp
@@ -162,6 +162,14 @@ void ChangeMasterKeyWidget::generateKey()
tr("Failed to set %1 as the Key file:\n%2").arg(fileKeyName, errorMsg), MessageWidget::Error);
return;
}
+ if (fileKey.type() != FileKey::Hashed) {
+ QMessageBox::warning(this,
+ tr("Legacy key file format"),
+ tr("You are using a legacy key file format which may become\n"
+ "unsupported in the future.\n\n"
+ "Please consider generating a new key file."),
+ QMessageBox::Ok);
+ }
m_key.addKey(fileKey);
}
diff --git a/src/gui/Clipboard.cpp b/src/gui/Clipboard.cpp
index bf4db8ff5..78bad2731 100644
--- a/src/gui/Clipboard.cpp
+++ b/src/gui/Clipboard.cpp
@@ -28,6 +28,9 @@ Clipboard* Clipboard::m_instance(nullptr);
Clipboard::Clipboard(QObject* parent)
: QObject(parent)
, m_timer(new QTimer(this))
+#ifdef Q_OS_MAC
+ , m_pasteboard(new MacPasteboard)
+#endif
{
m_timer->setSingleShot(true);
connect(m_timer, SIGNAL(timeout()), SLOT(clearClipboard()));
@@ -38,10 +41,17 @@ void Clipboard::setText(const QString& text)
{
QClipboard* clipboard = QApplication::clipboard();
+#ifdef Q_OS_MAC
+ QMimeData* mime = new QMimeData;
+ mime->setText(text);
+ mime->setData("application/x-nspasteboard-concealed-type", text.toUtf8());
+ clipboard->setMimeData(mime, QClipboard::Clipboard);
+#else
clipboard->setText(text, QClipboard::Clipboard);
if (clipboard->supportsSelection()) {
clipboard->setText(text, QClipboard::Selection);
}
+#endif
if (config()->get("security/clearclipboard").toBool()) {
int timeout = config()->get("security/clearclipboardtimeout").toInt();
diff --git a/src/gui/Clipboard.h b/src/gui/Clipboard.h
index e0a16d26d..6f8ff9ace 100644
--- a/src/gui/Clipboard.h
+++ b/src/gui/Clipboard.h
@@ -19,6 +19,9 @@
#define KEEPASSX_CLIPBOARD_H
#include <QObject>
+#ifdef Q_OS_MAC
+#include "core/MacPasteboard.h"
+#endif
class QTimer;
@@ -43,6 +46,9 @@ private:
static Clipboard* m_instance;
QTimer* m_timer;
+#ifdef Q_OS_MAC
+ QScopedPointer<MacPasteboard> m_pasteboard;
+#endif
QString m_lastCopied;
};
diff --git a/src/gui/CloneDialog.cpp b/src/gui/CloneDialog.cpp
index 5985e26a8..7af504395 100644
--- a/src/gui/CloneDialog.cpp
+++ b/src/gui/CloneDialog.cpp
@@ -63,7 +63,7 @@ void CloneDialog::cloneEntry()
Entry* entry = m_entry->clone(flags);
entry->setGroup(m_entry->group());
- emit m_parent->refreshSearch();
+ m_parent->refreshSearch();
close();
}
diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp
index e487f97ca..3af0c6e8f 100644
--- a/src/gui/DatabaseOpenWidget.cpp
+++ b/src/gui/DatabaseOpenWidget.cpp
@@ -218,6 +218,23 @@ QSharedPointer<CompositeKey> DatabaseOpenWidget::databaseKey()
MessageWidget::Error);
return QSharedPointer<CompositeKey>();
}
+ if (key.type() != FileKey::Hashed && !config()->get("Messages/NoLegacyKeyFileWarning").toBool()) {
+ QMessageBox legacyWarning;
+ legacyWarning.setWindowTitle(tr("Legacy key file format"));
+ legacyWarning.setText(tr("You are using a legacy key file format which may become\n"
+ "unsupported in the future.\n\n"
+ "Please consider generating a new key file."));
+ legacyWarning.setIcon(QMessageBox::Icon::Warning);
+ legacyWarning.addButton(QMessageBox::Ok);
+ legacyWarning.setDefaultButton(QMessageBox::Ok);
+ legacyWarning.setCheckBox(new QCheckBox(tr("Don't show this warning again")));
+
+ connect(legacyWarning.checkBox(), &QCheckBox::stateChanged, [](int state){
+ config()->set("Messages/NoLegacyKeyFileWarning", state == Qt::CheckState::Checked);
+ });
+
+ legacyWarning.exec();
+ }
masterKey->addKey(key);
lastKeyFiles[m_filename] = keyFilename;
} else {
@@ -277,6 +294,9 @@ void DatabaseOpenWidget::activateChallengeResponse()
void DatabaseOpenWidget::browseKeyFile()
{
QString filters = QString("%1 (*);;%2 (*.key)").arg(tr("All files"), tr("Key files"));
+ if (!config()->get("RememberLastKeyFiles").toBool()) {
+ fileDialog()->setNextForgetDialog();
+ }
QString filename = fileDialog()->getOpenFileName(this, tr("Select key file"), QString(), filters);
if (!filename.isEmpty()) {
diff --git a/src/gui/DatabaseSettingsWidget.cpp b/src/gui/DatabaseSettingsWidget.cpp
index 7c51edfd4..cad04b297 100644
--- a/src/gui/DatabaseSettingsWidget.cpp
+++ b/src/gui/DatabaseSettingsWidget.cpp
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2012 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -17,28 +18,54 @@
#include "DatabaseSettingsWidget.h"
#include "ui_DatabaseSettingsWidget.h"
+#include "ui_DatabaseSettingsWidgetGeneral.h"
+#include "ui_DatabaseSettingsWidgetEncryption.h"
+#include <QMessageBox>
+#include <QPushButton>
+#include <QThread>
+
+#include "core/Global.h"
+#include "core/FilePath.h"
+#include "core/AsyncTask.h"
#include "core/Database.h"
#include "core/Group.h"
#include "core/Metadata.h"
#include "crypto/SymmetricCipher.h"
-#include "format/KeePass2.h"
-#include "keys/CompositeKey.h"
+#include "crypto/kdf/Argon2Kdf.h"
+#include "MessageBox.h"
DatabaseSettingsWidget::DatabaseSettingsWidget(QWidget* parent)
: DialogyWidget(parent)
, m_ui(new Ui::DatabaseSettingsWidget())
+ , m_uiGeneral(new Ui::DatabaseSettingsWidgetGeneral())
+ , m_uiEncryption(new Ui::DatabaseSettingsWidgetEncryption())
+ , m_uiGeneralPage(new QWidget())
+ , m_uiEncryptionPage(new QWidget())
, m_db(nullptr)
{
m_ui->setupUi(this);
+ m_uiGeneral->setupUi(m_uiGeneralPage);
+ m_uiEncryption->setupUi(m_uiEncryptionPage);
connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(save()));
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject()));
- connect(m_ui->historyMaxItemsCheckBox, SIGNAL(toggled(bool)),
- m_ui->historyMaxItemsSpinBox, SLOT(setEnabled(bool)));
- connect(m_ui->historyMaxSizeCheckBox, SIGNAL(toggled(bool)),
- m_ui->historyMaxSizeSpinBox, SLOT(setEnabled(bool)));
- connect(m_ui->transformBenchmarkButton, SIGNAL(clicked()), SLOT(transformRoundsBenchmark()));
+ connect(m_uiGeneral->historyMaxItemsCheckBox, SIGNAL(toggled(bool)),
+ m_uiGeneral->historyMaxItemsSpinBox, SLOT(setEnabled(bool)));
+ connect(m_uiGeneral->historyMaxSizeCheckBox, SIGNAL(toggled(bool)),
+ m_uiGeneral->historyMaxSizeSpinBox, SLOT(setEnabled(bool)));
+ connect(m_uiEncryption->transformBenchmarkButton, SIGNAL(clicked()), SLOT(transformRoundsBenchmark()));
+ connect(m_uiEncryption->kdfComboBox, SIGNAL(currentIndexChanged(int)), SLOT(kdfChanged(int)));
+
+ connect(m_uiEncryption->memorySpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryChanged(int)));
+ connect(m_uiEncryption->parallelismSpinBox, SIGNAL(valueChanged(int)), this, SLOT(parallelismChanged(int)));
+
+ m_ui->categoryList->addCategory(tr("General"), FilePath::instance()->icon("categories", "preferences-other"));
+ m_ui->categoryList->addCategory(tr("Encryption"), FilePath::instance()->icon("actions", "document-encrypt"));
+ m_ui->stackedWidget->addWidget(m_uiGeneralPage);
+ m_ui->stackedWidget->addWidget(m_uiEncryptionPage);
+
+ connect(m_ui->categoryList, SIGNAL(categoryChanged(int)), m_ui->stackedWidget, SLOT(setCurrentIndex(int)));
}
DatabaseSettingsWidget::~DatabaseSettingsWidget()
@@ -51,56 +78,117 @@ void DatabaseSettingsWidget::load(Database* db)
Metadata* meta = m_db->metadata();
- m_ui->dbNameEdit->setText(meta->name());
- m_ui->dbDescriptionEdit->setText(meta->description());
- m_ui->recycleBinEnabledCheckBox->setChecked(meta->recycleBinEnabled());
- m_ui->defaultUsernameEdit->setText(meta->defaultUserName());
- m_ui->AlgorithmComboBox->setCurrentIndex(SymmetricCipher::cipherToAlgorithm(m_db->cipher()));
- m_ui->transformRoundsSpinBox->setValue(m_db->transformRounds());
+ m_uiGeneral->dbNameEdit->setText(meta->name());
+ m_uiGeneral->dbDescriptionEdit->setText(meta->description());
+ m_uiGeneral->recycleBinEnabledCheckBox->setChecked(meta->recycleBinEnabled());
+ m_uiGeneral->defaultUsernameEdit->setText(meta->defaultUserName());
+ m_uiGeneral->compressionCheckbox->setChecked(m_db->compressionAlgo() != Database::CompressionNone);
+
if (meta->historyMaxItems() > -1) {
- m_ui->historyMaxItemsSpinBox->setValue(meta->historyMaxItems());
- m_ui->historyMaxItemsCheckBox->setChecked(true);
- }
- else {
- m_ui->historyMaxItemsSpinBox->setValue(Metadata::DefaultHistoryMaxItems);
- m_ui->historyMaxItemsCheckBox->setChecked(false);
+ m_uiGeneral->historyMaxItemsSpinBox->setValue(meta->historyMaxItems());
+ m_uiGeneral->historyMaxItemsCheckBox->setChecked(true);
+ } else {
+ m_uiGeneral->historyMaxItemsSpinBox->setValue(Metadata::DefaultHistoryMaxItems);
+ m_uiGeneral->historyMaxItemsCheckBox->setChecked(false);
}
int historyMaxSizeMiB = qRound(meta->historyMaxSize() / qreal(1048576));
if (historyMaxSizeMiB > 0) {
- m_ui->historyMaxSizeSpinBox->setValue(historyMaxSizeMiB);
- m_ui->historyMaxSizeCheckBox->setChecked(true);
+ m_uiGeneral->historyMaxSizeSpinBox->setValue(historyMaxSizeMiB);
+ m_uiGeneral->historyMaxSizeCheckBox->setChecked(true);
+ } else {
+ m_uiGeneral->historyMaxSizeSpinBox->setValue(Metadata::DefaultHistoryMaxSize);
+ m_uiGeneral->historyMaxSizeCheckBox->setChecked(false);
}
- else {
- m_ui->historyMaxSizeSpinBox->setValue(Metadata::DefaultHistoryMaxSize);
- m_ui->historyMaxSizeCheckBox->setChecked(false);
+
+ m_uiEncryption->algorithmComboBox->clear();
+ for (auto& cipher: asConst(KeePass2::CIPHERS)) {
+ m_uiEncryption->algorithmComboBox->addItem(cipher.second, cipher.first.toByteArray());
+ }
+ int cipherIndex = m_uiEncryption->algorithmComboBox->findData(m_db->cipher().toByteArray());
+ if (cipherIndex > -1) {
+ m_uiEncryption->algorithmComboBox->setCurrentIndex(cipherIndex);
+ }
+
+ // Setup kdf combo box
+ m_uiEncryption->kdfComboBox->blockSignals(true);
+ m_uiEncryption->kdfComboBox->clear();
+ for (auto& kdf: asConst(KeePass2::KDFS)) {
+ m_uiEncryption->kdfComboBox->addItem(kdf.second, kdf.first.toByteArray());
+ }
+ m_uiEncryption->kdfComboBox->blockSignals(false);
+
+ auto kdfUuid = m_db->kdf()->uuid();
+ int kdfIndex = m_uiEncryption->kdfComboBox->findData(kdfUuid.toByteArray());
+ if (kdfIndex > -1) {
+ m_uiEncryption->kdfComboBox->setCurrentIndex(kdfIndex);
+ kdfChanged(kdfIndex);
}
- m_ui->dbNameEdit->setFocus();
+ m_uiEncryption->memorySpinBox->setValue(64);
+ m_uiEncryption->parallelismSpinBox->setValue(QThread::idealThreadCount());
+
+ // Setup kdf parameters
+ auto kdf = m_db->kdf();
+ m_uiEncryption->transformRoundsSpinBox->setValue(kdf->rounds());
+ if (kdfUuid == KeePass2::KDF_ARGON2) {
+ auto argon2Kdf = kdf.staticCast<Argon2Kdf>();
+ m_uiEncryption->memorySpinBox->setValue(static_cast<int>(argon2Kdf->memory()) / (1 << 10));
+ m_uiEncryption->parallelismSpinBox->setValue(argon2Kdf->parallelism());
+ }
+
+ m_uiGeneral->dbNameEdit->setFocus();
+ m_ui->categoryList->setCurrentCategory(0);
}
void DatabaseSettingsWidget::save()
{
+ // first perform safety check for KDF rounds
+ auto kdf = KeePass2::uuidToKdf(Uuid(m_uiEncryption->kdfComboBox->currentData().toByteArray()));
+ if (kdf->uuid() == KeePass2::KDF_ARGON2 && m_uiEncryption->transformRoundsSpinBox->value() > 10000) {
+ QMessageBox warning;
+ warning.setIcon(QMessageBox::Warning);
+ warning.setWindowTitle(tr("Number of rounds too high", "Key transformation rounds"));
+ warning.setText(tr("You are using a very high number of key transform rounds with Argon2.\n\n"
+ "If you keep this number, your database may take hours or days (or even longer) to open!"));
+ auto ok = warning.addButton(tr("Understood, keep number"), QMessageBox::ButtonRole::AcceptRole);
+ auto cancel = warning.addButton(tr("Cancel"), QMessageBox::ButtonRole::RejectRole);
+ warning.setDefaultButton(cancel);
+ warning.exec();
+ if (warning.clickedButton() != ok) {
+ return;
+ }
+ } else if ((kdf->uuid() == KeePass2::KDF_AES_KDBX3 || kdf->uuid() == KeePass2::KDF_AES_KDBX4)
+ && m_uiEncryption->transformRoundsSpinBox->value() < 100000) {
+ QMessageBox warning;
+ warning.setIcon(QMessageBox::Warning);
+ warning.setWindowTitle(tr("Number of rounds too low", "Key transformation rounds"));
+ warning.setText(tr("You are using a very low number of key transform rounds with AES-KDF.\n\n"
+ "If you keep this number, your database may be too easy to crack!"));
+ auto ok = warning.addButton(tr("Understood, keep number"), QMessageBox::ButtonRole::AcceptRole);
+ auto cancel = warning.addButton(tr("Cancel"), QMessageBox::ButtonRole::RejectRole);
+ warning.setDefaultButton(cancel);
+ warning.exec();
+ if (warning.clickedButton() != ok) {
+ return;
+ }
+ }
+
+ m_db->setCompressionAlgo(m_uiGeneral->compressionCheckbox->isChecked() ? Database::CompressionGZip : Database::CompressionNone);
+
Metadata* meta = m_db->metadata();
- meta->setName(m_ui->dbNameEdit->text());
- meta->setDescription(m_ui->dbDescriptionEdit->text());
- meta->setDefaultUserName(m_ui->defaultUsernameEdit->text());
- m_db->setCipher(SymmetricCipher::algorithmToCipher(static_cast<SymmetricCipher::Algorithm>
- (m_ui->AlgorithmComboBox->currentIndex())));
- meta->setRecycleBinEnabled(m_ui->recycleBinEnabledCheckBox->isChecked());
- if (static_cast<quint64>(m_ui->transformRoundsSpinBox->value()) != m_db->transformRounds()) {
- QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
- m_db->setTransformRounds(m_ui->transformRoundsSpinBox->value());
- QApplication::restoreOverrideCursor();
- }
+ meta->setName(m_uiGeneral->dbNameEdit->text());
+ meta->setDescription(m_uiGeneral->dbDescriptionEdit->text());
+ meta->setDefaultUserName(m_uiGeneral->defaultUsernameEdit->text());
+ meta->setRecycleBinEnabled(m_uiGeneral->recycleBinEnabledCheckBox->isChecked());
+ meta->setSettingsChanged(QDateTime::currentDateTimeUtc());
bool truncate = false;
int historyMaxItems;
- if (m_ui->historyMaxItemsCheckBox->isChecked()) {
- historyMaxItems = m_ui->historyMaxItemsSpinBox->value();
- }
- else {
+ if (m_uiGeneral->historyMaxItemsCheckBox->isChecked()) {
+ historyMaxItems = m_uiGeneral->historyMaxItemsSpinBox->value();
+ } else {
historyMaxItems = -1;
}
if (historyMaxItems != meta->historyMaxItems()) {
@@ -109,10 +197,9 @@ void DatabaseSettingsWidget::save()
}
int historyMaxSize;
- if (m_ui->historyMaxSizeCheckBox->isChecked()) {
- historyMaxSize = m_ui->historyMaxSizeSpinBox->value() * 1048576;
- }
- else {
+ if (m_uiGeneral->historyMaxSizeCheckBox->isChecked()) {
+ historyMaxSize = m_uiGeneral->historyMaxSizeSpinBox->value() * 1048576;
+ } else {
historyMaxSize = -1;
}
if (historyMaxSize != meta->historyMaxSize()) {
@@ -124,6 +211,28 @@ void DatabaseSettingsWidget::save()
truncateHistories();
}
+ m_db->setCipher(Uuid(m_uiEncryption->algorithmComboBox->currentData().toByteArray()));
+
+ // Save kdf parameters
+ kdf->setRounds(m_uiEncryption->transformRoundsSpinBox->value());
+ if (kdf->uuid() == KeePass2::KDF_ARGON2) {
+ auto argon2Kdf = kdf.staticCast<Argon2Kdf>();
+ argon2Kdf->setMemory(static_cast<quint64>(m_uiEncryption->memorySpinBox->value()) * (1 << 10));
+ argon2Kdf->setParallelism(static_cast<quint32>(m_uiEncryption->parallelismSpinBox->value()));
+ }
+
+ QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+ // TODO: we should probably use AsyncTask::runAndWaitForFuture() here,
+ // but not without making Database thread-safe
+ bool ok = m_db->changeKdf(kdf);
+ QApplication::restoreOverrideCursor();
+
+ if (!ok) {
+ MessageBox::warning(this, tr("KDF unchanged"),
+ tr("Failed to transform key with new KDF parameters; KDF unchanged."),
+ QMessageBox::Ok);
+ }
+
emit editFinished(true);
}
@@ -135,10 +244,29 @@ void DatabaseSettingsWidget::reject()
void DatabaseSettingsWidget::transformRoundsBenchmark()
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
- int rounds = CompositeKey::transformKeyBenchmark(1000);
- if (rounds != -1) {
- m_ui->transformRoundsSpinBox->setValue(rounds);
+ m_uiEncryption->transformBenchmarkButton->setEnabled(false);
+ m_uiEncryption->transformRoundsSpinBox->setFocus();
+
+ // Create a new kdf with the current parameters
+ auto kdf = KeePass2::uuidToKdf(Uuid(m_uiEncryption->kdfComboBox->currentData().toByteArray()));
+ kdf->setRounds(m_uiEncryption->transformRoundsSpinBox->value());
+ if (kdf->uuid() == KeePass2::KDF_ARGON2) {
+ auto argon2Kdf = kdf.staticCast<Argon2Kdf>();
+ if (!argon2Kdf->setMemory(static_cast<quint64>(m_uiEncryption->memorySpinBox->value()) * (1 << 10))) {
+ m_uiEncryption->memorySpinBox->setValue(static_cast<int>(argon2Kdf->memory() / (1 << 10)));
+ }
+ if (!argon2Kdf->setParallelism(static_cast<quint32>(m_uiEncryption->parallelismSpinBox->value()))) {
+ m_uiEncryption->parallelismSpinBox->setValue(argon2Kdf->parallelism());
+ }
}
+
+ // Determine the number of rounds required to meet 1 second delay
+ int rounds = AsyncTask::runAndWaitForFuture([&kdf]() {
+ return kdf->benchmark(1000);
+ });
+
+ m_uiEncryption->transformRoundsSpinBox->setValue(rounds);
+ m_uiEncryption->transformBenchmarkButton->setEnabled(true);
QApplication::restoreOverrideCursor();
}
@@ -149,3 +277,36 @@ void DatabaseSettingsWidget::truncateHistories()
entry->truncateHistory();
}
}
+
+void DatabaseSettingsWidget::kdfChanged(int index)
+{
+ Uuid id(m_uiEncryption->kdfComboBox->itemData(index).toByteArray());
+
+ bool memoryEnabled = id == KeePass2::KDF_ARGON2;
+ m_uiEncryption->memoryUsageLabel->setEnabled(memoryEnabled);
+ m_uiEncryption->memorySpinBox->setEnabled(memoryEnabled);
+
+ bool parallelismEnabled = id == KeePass2::KDF_ARGON2;
+ m_uiEncryption->parallelismLabel->setEnabled(parallelismEnabled);
+ m_uiEncryption->parallelismSpinBox->setEnabled(parallelismEnabled);
+
+ transformRoundsBenchmark();
+}
+
+/**
+ * Update memory spin box suffix on value change.
+ */
+void DatabaseSettingsWidget::memoryChanged(int value)
+{
+ m_uiEncryption->memorySpinBox->setSuffix(
+ tr(" MiB", "Abbreviation for Mebibytes (KDF settings)", value));
+}
+
+/**
+ * Update parallelism spin box suffix on value change.
+ */
+void DatabaseSettingsWidget::parallelismChanged(int value)
+{
+ m_uiEncryption->parallelismSpinBox->setSuffix(
+ tr(" thread(s)", "Threads for parallel execution (KDF settings)", value));
+}
diff --git a/src/gui/DatabaseSettingsWidget.h b/src/gui/DatabaseSettingsWidget.h
index 733b32f87..b0cae5dbc 100644
--- a/src/gui/DatabaseSettingsWidget.h
+++ b/src/gui/DatabaseSettingsWidget.h
@@ -19,22 +19,30 @@
#define KEEPASSX_DATABASESETTINGSWIDGET_H
#include <QScopedPointer>
+#include <QWidget>
+#include <QSpinBox>
+#include <QLayout>
#include "gui/DialogyWidget.h"
+#include "crypto/kdf/Kdf.h"
class Database;
-namespace Ui {
- class DatabaseSettingsWidget;
+namespace Ui
+{
+class DatabaseSettingsWidget;
+class DatabaseSettingsWidgetGeneral;
+class DatabaseSettingsWidgetEncryption;
}
-class DatabaseSettingsWidget : public DialogyWidget
+class DatabaseSettingsWidget: public DialogyWidget
{
- Q_OBJECT
+Q_OBJECT
public:
explicit DatabaseSettingsWidget(QWidget* parent = nullptr);
~DatabaseSettingsWidget();
+ Q_DISABLE_COPY(DatabaseSettingsWidget)
void load(Database* db);
@@ -45,14 +53,19 @@ private slots:
void save();
void reject();
void transformRoundsBenchmark();
+ void kdfChanged(int index);
+ void memoryChanged(int value);
+ void parallelismChanged(int value);
private:
void truncateHistories();
const QScopedPointer<Ui::DatabaseSettingsWidget> m_ui;
+ const QScopedPointer<Ui::DatabaseSettingsWidgetGeneral> m_uiGeneral;
+ const QScopedPointer<Ui::DatabaseSettingsWidgetEncryption> m_uiEncryption;
+ QWidget* m_uiGeneralPage;
+ QWidget* m_uiEncryptionPage;
Database* m_db;
-
- Q_DISABLE_COPY(DatabaseSettingsWidget)
};
#endif // KEEPASSX_DATABASESETTINGSWIDGET_H
diff --git a/src/gui/DatabaseSettingsWidget.ui b/src/gui/DatabaseSettingsWidget.ui
index c38aebc8c..9b45feaa7 100644
--- a/src/gui/DatabaseSettingsWidget.ui
+++ b/src/gui/DatabaseSettingsWidget.ui
@@ -6,263 +6,46 @@
<rect>
<x>0</x>
<y>0</y>
- <width>600</width>
- <height>340</height>
+ <width>1082</width>
+ <height>578</height>
</rect>
</property>
- <layout class="QVBoxLayout" name="verticalLayout" stretch="1,2,5,1">
+ <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0">
<item>
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_5" stretch="0,1,0">
+ <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1">
<item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
+ <widget class="CategoryListWidget" name="categoryList" native="true"/>
</item>
<item>
- <widget class="QWidget" name="widget" native="true">
- <property name="maximumSize">
- <size>
- <width>800</width>
- <height>16777215</height>
- </size>
+ <widget class="QStackedWidget" name="stackedWidget">
+ <property name="currentIndex">
+ <number>-1</number>
</property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="3" column="2">
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <item>
- <widget class="QSpinBox" name="transformRoundsSpinBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>1000000000</number>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="transformBenchmarkButton">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>25</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Benchmark</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="0" column="1" alignment="Qt::AlignRight">
- <widget class="QLabel" name="dbNameLabel">
- <property name="text">
- <string>Database name:</string>
- </property>
- </widget>
- </item>
- <item row="7" column="1">
- <widget class="QCheckBox" name="historyMaxSizeCheckBox">
- <property name="text">
- <string>Max. history size:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1" alignment="Qt::AlignRight">
- <widget class="QLabel" name="transformRoundsLabel">
- <property name="text">
- <string>Transform rounds:</string>
- </property>
- </widget>
- </item>
- <item row="6" column="1">
- <widget class="QCheckBox" name="historyMaxItemsCheckBox">
- <property name="text">
- <string>Max. history items:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QLineEdit" name="dbNameEdit"/>
- </item>
- <item row="6" column="2">
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QSpinBox" name="historyMaxItemsSpinBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximum">
- <number>2000000000</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="4" column="1" alignment="Qt::AlignRight">
- <widget class="QLabel" name="defaultUsernameLabel">
- <property name="text">
- <string>Default username:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2">
- <widget class="QLineEdit" name="dbDescriptionEdit"/>
- </item>
- <item row="7" column="2">
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QSpinBox" name="historyMaxSizeSpinBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="suffix">
- <string> MiB</string>
- </property>
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>2000000000</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="5" column="2">
- <widget class="QCheckBox" name="recycleBinEnabledCheckBox">
- <property name="text">
- <string>Use recycle bin</string>
- </property>
- </widget>
- </item>
- <item row="4" column="2">
- <widget class="QLineEdit" name="defaultUsernameEdit">
- <property name="enabled">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="1" alignment="Qt::AlignRight">
- <widget class="QLabel" name="dbDescriptionLabel">
- <property name="text">
- <string>Database description:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="2">
- <widget class="QComboBox" name="AlgorithmComboBox">
- <item>
- <property name="text">
- <string>AES: 256 Bit (default)</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Twofish: 256 Bit</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="2" column="1" alignment="Qt::AlignRight">
- <widget class="QLabel" name="AlgorithmLabel">
- <property name="text">
- <string>Algorithm:</string>
- </property>
- </widget>
- </item>
- </layout>
</widget>
</item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
<item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
+ </widget>
</item>
</layout>
</item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
</layout>
</widget>
- <tabstops>
- <tabstop>dbNameEdit</tabstop>
- <tabstop>dbDescriptionEdit</tabstop>
- <tabstop>transformRoundsSpinBox</tabstop>
- <tabstop>transformBenchmarkButton</tabstop>
- <tabstop>defaultUsernameEdit</tabstop>
- <tabstop>recycleBinEnabledCheckBox</tabstop>
- <tabstop>historyMaxItemsCheckBox</tabstop>
- <tabstop>historyMaxItemsSpinBox</tabstop>
- <tabstop>historyMaxSizeCheckBox</tabstop>
- <tabstop>historyMaxSizeSpinBox</tabstop>
- <tabstop>buttonBox</tabstop>
- </tabstops>
+ <customwidgets>
+ <customwidget>
+ <class>CategoryListWidget</class>
+ <extends>QWidget</extends>
+ <header>gui/CategoryListWidget.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
<resources/>
<connections/>
-</ui>
+</ui> \ No newline at end of file
diff --git a/src/gui/DatabaseSettingsWidgetEncryption.ui b/src/gui/DatabaseSettingsWidgetEncryption.ui
new file mode 100644
index 000000000..502bc012c
--- /dev/null
+++ b/src/gui/DatabaseSettingsWidgetEncryption.ui
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DatabaseSettingsWidgetEncryption</class>
+ <widget class="QWidget" name="DatabaseSettingsWidgetEncryption">
+ <layout class="QFormLayout" name="formLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="algorithmLabel">
+ <property name="text">
+ <string>Encryption Algorithm:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="algorithmComboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <item>
+ <property name="text">
+ <string>AES: 256 Bit (default)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Twofish: 256 Bit</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="kdfLabel">
+ <property name="text">
+ <string>Key Derivation Function:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="kdfComboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="transformRoundsLabel">
+ <property name="text">
+ <string>Transform rounds:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout" stretch="40,40,0">
+ <item>
+ <widget class="QSpinBox" name="transformRoundsSpinBox">
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>1000000000</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="transformBenchmarkButton">
+ <property name="focusPolicy">
+ <enum>Qt::WheelFocus</enum>
+ </property>
+ <property name="text">
+ <string>Benchmark 1-second delay</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="memoryUsageLabel">
+ <property name="text">
+ <string>Memory Usage:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="memorySpinBox">
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>1048576</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="parallelismLabel">
+ <property name="text">
+ <string>Parallelism:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QSpinBox" name="parallelismSpinBox">
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>128</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gui/DatabaseSettingsWidgetGeneral.ui b/src/gui/DatabaseSettingsWidgetGeneral.ui
new file mode 100644
index 000000000..d3baf6132
--- /dev/null
+++ b/src/gui/DatabaseSettingsWidgetGeneral.ui
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DatabaseSettingsWidgetGeneral</class>
+ <widget class="QWidget" name="DatabaseSettingsWidgetGeneral">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Database Meta Data</string>
+ </property>
+ <layout class="QFormLayout" name="formLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="dbNameLabel">
+ <property name="text">
+ <string>Database name:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="dbNameEdit"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="dbDescriptionLabel">
+ <property name="text">
+ <string>Database description:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="dbDescriptionEdit"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="defaultUsernameLabel">
+ <property name="text">
+ <string>Default username:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="defaultUsernameEdit">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>History Settings</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="historyMaxItemsCheckBox">
+ <property name="text">
+ <string>Max. history items:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="historyMaxSizeCheckBox">
+ <property name="text">
+ <string>Max. history size:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="historyMaxSizeSpinBox">
+ <property name="suffix">
+ <string> MiB</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>2000000000</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="historyMaxItemsSpinBox">
+ <property name="maximum">
+ <number>2000000000</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="recycleBinEnabledCheckBox">
+ <property name="text">
+ <string>Use recycle bin</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Additional Database Settings</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="compressionCheckbox">
+ <property name="text">
+ <string>Enable &amp;compression (recommended)</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp
index f70df4c79..b3963f7b1 100644
--- a/src/gui/DatabaseTabWidget.cpp
+++ b/src/gui/DatabaseTabWidget.cpp
@@ -19,7 +19,6 @@
#include "DatabaseTabWidget.h"
#include <QFileInfo>
-#include <QLockFile>
#include <QTabWidget>
#include <QPushButton>
@@ -29,6 +28,7 @@
#include "core/Database.h"
#include "core/Group.h"
#include "core/Metadata.h"
+#include "core/AsyncTask.h"
#include "format/CsvExporter.h"
#include "gui/Clipboard.h"
#include "gui/DatabaseWidget.h"
@@ -42,10 +42,9 @@
DatabaseManagerStruct::DatabaseManagerStruct()
: dbWidget(nullptr)
- , lockFile(nullptr)
- , saveToFilename(false)
, modified(false)
, readOnly(false)
+ , saveAttempts(0)
{
}
@@ -55,6 +54,7 @@ const int DatabaseTabWidget::LastDatabasesCount = 5;
DatabaseTabWidget::DatabaseTabWidget(QWidget* parent)
: QTabWidget(parent)
, m_dbWidgetStateSync(new DatabaseWidgetStateSync(this))
+ , m_dbPendingLock(nullptr)
{
DragTabBar* tabBar = new DragTabBar(this);
setTabBar(tabBar);
@@ -64,6 +64,7 @@ DatabaseTabWidget::DatabaseTabWidget(QWidget* parent)
connect(this, SIGNAL(currentChanged(int)), SLOT(emitActivateDatabaseChanged()));
connect(this, SIGNAL(activateDatabaseChanged(DatabaseWidget*)), m_dbWidgetStateSync, SLOT(setActive(DatabaseWidget*)));
connect(autoType(), SIGNAL(globalShortcutTriggered()), SLOT(performGlobalAutoType()));
+ connect(autoType(), SIGNAL(autotypePerformed()), SLOT(relockPendingDatabase()));
}
DatabaseTabWidget::~DatabaseTabWidget()
@@ -88,14 +89,14 @@ void DatabaseTabWidget::newDatabase()
{
DatabaseManagerStruct dbStruct;
Database* db = new Database();
- db->rootGroup()->setName(tr("Root"));
+ db->rootGroup()->setName(tr("Root", "Root group"));
dbStruct.dbWidget = new DatabaseWidget(db, this);
-
+
CompositeKey emptyKey;
db->setKey(emptyKey);
insertDatabase(db, dbStruct);
-
+
if (!saveDatabaseAs(db)) {
closeDatabase(db);
return;
@@ -107,7 +108,7 @@ void DatabaseTabWidget::newDatabase()
void DatabaseTabWidget::openDatabase()
{
QString filter = QString("%1 (*.kdbx);;%2 (*)").arg(tr("KeePass 2 Database"), tr("All files"));
- QString fileName = fileDialog()->getOpenFileName(this, tr("Open database"), QString(),
+ QString fileName = fileDialog()->getOpenFileName(this, tr("Open database"), QDir::homePath(),
filter);
if (!fileName.isEmpty()) {
openDatabase(fileName);
@@ -128,10 +129,10 @@ void DatabaseTabWidget::openDatabase(const QString& fileName, const QString& pw,
QHashIterator<Database*, DatabaseManagerStruct> i(m_dbList);
while (i.hasNext()) {
i.next();
- if (i.value().canonicalFilePath == canonicalFilePath) {
+ if (i.value().fileInfo.canonicalFilePath() == canonicalFilePath) {
if (!i.value().dbWidget->dbHasKey() && !(pw.isNull() && keyFile.isEmpty())) {
// If the database is locked and a pw or keyfile is provided, unlock it
- i.value().dbWidget->switchToOpenDatabase(i.value().filePath, pw, keyFile);
+ i.value().dbWidget->switchToOpenDatabase(i.value().fileInfo.absoluteFilePath(), pw, keyFile);
} else {
setCurrentIndex(databaseIndex(i.key()));
}
@@ -157,49 +158,9 @@ void DatabaseTabWidget::openDatabase(const QString& fileName, const QString& pw,
}
file.close();
- QLockFile* lockFile = new QLockFile(QString("%1/.%2.lock").arg(fileInfo.canonicalPath(), fileInfo.fileName()));
- lockFile->setStaleLockTime(0);
-
- if (!dbStruct.readOnly && !lockFile->tryLock()) {
- // for now silently ignore if we can't create a lock file
- // due to lack of permissions
- if (lockFile->error() != QLockFile::PermissionError) {
- QMessageBox msgBox;
- msgBox.setWindowTitle(tr("Database already opened"));
- msgBox.setText(tr("The database you are trying to open is locked by another instance of KeePassXC.\n\n"
- "Do you want to open it anyway?"));
- msgBox.setIcon(QMessageBox::Question);
- msgBox.addButton(QMessageBox::Yes);
- msgBox.addButton(QMessageBox::No);
- auto readOnlyButton = msgBox.addButton(tr("Open read-only"), QMessageBox::NoRole);
- msgBox.setDefaultButton(readOnlyButton);
- msgBox.setEscapeButton(QMessageBox::No);
- auto result = msgBox.exec();
-
- if (msgBox.clickedButton() == readOnlyButton) {
- dbStruct.readOnly = true;
- delete lockFile;
- lockFile = nullptr;
- } else if (result == QMessageBox::Yes) {
- // take over the lock file if possible
- if (lockFile->removeStaleLockFile()) {
- lockFile->tryLock();
- }
- } else {
- delete lockFile;
- return;
- }
- }
- }
-
Database* db = new Database();
dbStruct.dbWidget = new DatabaseWidget(db, this);
- dbStruct.lockFile = lockFile;
- dbStruct.saveToFilename = !dbStruct.readOnly;
-
- dbStruct.filePath = fileInfo.absoluteFilePath();
- dbStruct.canonicalFilePath = canonicalFilePath;
- dbStruct.fileName = fileInfo.fileName();
+ dbStruct.fileInfo = fileInfo;
insertDatabase(db, dbStruct);
@@ -207,15 +168,15 @@ void DatabaseTabWidget::openDatabase(const QString& fileName, const QString& pw,
emit messageTab(tr("File opened in read only mode."), MessageWidget::Warning);
}
- updateLastDatabases(dbStruct.filePath);
+ updateLastDatabases(dbStruct.fileInfo.absoluteFilePath());
- if (!(pw.isNull() && keyFile.isEmpty())) {
- dbStruct.dbWidget->switchToOpenDatabase(dbStruct.filePath, pw, keyFile);
- }
- else {
- dbStruct.dbWidget->switchToOpenDatabase(dbStruct.filePath);
+ if (!pw.isNull() || !keyFile.isEmpty()) {
+ dbStruct.dbWidget->switchToOpenDatabase(dbStruct.fileInfo.absoluteFilePath(), pw, keyFile);
+ } else {
+ dbStruct.dbWidget->switchToOpenDatabase(dbStruct.fileInfo.absoluteFilePath());
}
- emit messageDismissGlobal();
+
+ emit messageDismissTab();
}
void DatabaseTabWidget::importCsv()
@@ -322,15 +283,14 @@ bool DatabaseTabWidget::closeDatabase(Database* db)
void DatabaseTabWidget::deleteDatabase(Database* db)
{
const DatabaseManagerStruct dbStruct = m_dbList.value(db);
- bool emitDatabaseWithFileClosed = dbStruct.saveToFilename;
- QString filePath = dbStruct.filePath;
+ bool emitDatabaseWithFileClosed = dbStruct.fileInfo.exists() && !dbStruct.readOnly;
+ QString filePath = dbStruct.fileInfo.absoluteFilePath();
int index = databaseIndex(db);
removeTab(index);
toggleTabbar();
m_dbList.remove(db);
- delete dbStruct.lockFile;
delete dbStruct.dbWidget;
delete db;
@@ -349,24 +309,34 @@ bool DatabaseTabWidget::closeAllDatabases()
return true;
}
-bool DatabaseTabWidget::saveDatabase(Database* db)
+bool DatabaseTabWidget::saveDatabase(Database* db, QString filePath)
{
DatabaseManagerStruct& dbStruct = m_dbList[db];
+ // Never allow saving a locked database; it causes corruption
+ Q_ASSERT(dbStruct.dbWidget->currentMode() != DatabaseWidget::LockedMode);
+ // Release build interlock
if (dbStruct.dbWidget->currentMode() == DatabaseWidget::LockedMode) {
- // Never allow saving a locked database; it causes corruption
// We return true since a save is not required
return true;
}
- if (dbStruct.saveToFilename) {
+ if (!dbStruct.readOnly) {
+ if (filePath.isEmpty()) {
+ filePath = dbStruct.fileInfo.canonicalFilePath();
+ }
+
dbStruct.dbWidget->blockAutoReload(true);
- QString errorMessage = db->saveToFile(dbStruct.canonicalFilePath);
+ // TODO: Make this async, but lock out the database widget to prevent re-entrance
+ bool useAtomicSaves = config()->get("UseAtomicSaves", true).toBool();
+ QString errorMessage = db->saveToFile(filePath, useAtomicSaves, config()->get("BackupBeforeSave").toBool());
dbStruct.dbWidget->blockAutoReload(false);
if (errorMessage.isEmpty()) {
// successfully saved database file
dbStruct.modified = false;
+ dbStruct.saveAttempts = 0;
+ dbStruct.fileInfo = QFileInfo(filePath);
dbStruct.dbWidget->databaseSaved();
updateTabName(db);
emit messageDismissTab();
@@ -374,6 +344,22 @@ bool DatabaseTabWidget::saveDatabase(Database* db)
} else {
dbStruct.modified = true;
updateTabName(db);
+
+ if (++dbStruct.saveAttempts > 2 && useAtomicSaves) {
+ // Saving failed 3 times, issue a warning and attempt to resolve
+ auto choice = MessageBox::question(this, tr("Disable safe saves?"),
+ tr("KeePassXC has failed to save the database multiple times. "
+ "This is likely caused by file sync services holding a lock on "
+ "the save file.\nDisable safe saves and try again?"),
+ QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+ if (choice == QMessageBox::Yes) {
+ config()->set("UseAtomicSaves", false);
+ return saveDatabase(db, filePath);
+ }
+ // Reset save attempts without changing anything
+ dbStruct.saveAttempts = 0;
+ }
+
emit messageTab(tr("Writing the database failed.").append("\n").append(errorMessage),
MessageWidget::Error);
return false;
@@ -387,76 +373,31 @@ bool DatabaseTabWidget::saveDatabaseAs(Database* db)
{
while (true) {
DatabaseManagerStruct& dbStruct = m_dbList[db];
- QString oldFileName;
- if (dbStruct.saveToFilename) {
- oldFileName = dbStruct.filePath;
+ QString oldFilePath;
+ if (dbStruct.fileInfo.exists()) {
+ oldFilePath = dbStruct.fileInfo.absoluteFilePath();
} else {
- oldFileName = tr("Passwords").append(".kdbx");
+ oldFilePath = QDir::toNativeSeparators(QDir::homePath() + "/" + tr("Passwords").append(".kdbx"));
}
- QString fileName = fileDialog()->getSaveFileName(this, tr("Save database as"),
- oldFileName, tr("KeePass 2 Database").append(" (*.kdbx)"),
- nullptr, 0, "kdbx");
- if (!fileName.isEmpty()) {
- QFileInfo fileInfo(fileName);
- QString lockFilePath;
- if (fileInfo.exists()) {
- // returns empty string when file doesn't exist
- lockFilePath = fileInfo.canonicalPath();
- } else {
- lockFilePath = fileInfo.absolutePath();
- }
- QString lockFileName = QString("%1/.%2.lock").arg(lockFilePath, fileInfo.fileName());
- QScopedPointer<QLockFile> lockFile(new QLockFile(lockFileName));
- lockFile->setStaleLockTime(0);
- if (!lockFile->tryLock()) {
- // for now silently ignore if we can't create a lock file
- // due to lack of permissions
- if (lockFile->error() != QLockFile::PermissionError) {
- QMessageBox::StandardButton result = MessageBox::question(this, tr("Save database as"),
- tr("The database you are trying to save as is locked by another instance of KeePassXC.\n"
- "Do you want to save it anyway?"),
- QMessageBox::Yes | QMessageBox::No);
-
- if (result == QMessageBox::No) {
- return false;
- } else {
- // take over the lock file if possible
- if (lockFile->removeStaleLockFile()) {
- lockFile->tryLock();
- }
- }
- }
- }
-
- // setup variables so saveDatabase succeeds
- dbStruct.saveToFilename = true;
- dbStruct.canonicalFilePath = fileName;
+ QString newFilePath = fileDialog()->getSaveFileName(this, tr("Save database as"), oldFilePath,
+ tr("KeePass 2 Database").append(" (*.kdbx)"),
+ nullptr, 0, "kdbx");
+ if (!newFilePath.isEmpty()) {
+ // Ensure we don't recurse back into this function
+ dbStruct.readOnly = false;
- if (!saveDatabase(db)) {
- // failed to save, revert back
- dbStruct.saveToFilename = false;
- dbStruct.canonicalFilePath = oldFileName;
+ if (!saveDatabase(db, newFilePath)) {
+ // Failed to save, try again
continue;
}
- // refresh fileinfo since the file didn't exist before
- fileInfo.refresh();
-
- dbStruct.modified = false;
- dbStruct.saveToFilename = true;
- dbStruct.readOnly = false;
- dbStruct.filePath = fileInfo.absoluteFilePath();
- dbStruct.canonicalFilePath = fileInfo.canonicalFilePath();
- dbStruct.fileName = fileInfo.fileName();
- dbStruct.dbWidget->updateFilename(dbStruct.filePath);
- delete dbStruct.lockFile;
- dbStruct.lockFile = lockFile.take();
- updateTabName(db);
- updateLastDatabases(dbStruct.filePath);
+ dbStruct.dbWidget->updateFilePath(dbStruct.fileInfo.absoluteFilePath());
+ updateLastDatabases(dbStruct.fileInfo.absoluteFilePath());
return true;
- } else {
- return false;
}
+
+ // Canceled file selection
+ return false;
}
}
@@ -541,6 +482,16 @@ bool DatabaseTabWidget::readOnly(int index)
return indexDatabaseManagerStruct(index).readOnly;
}
+bool DatabaseTabWidget::canSave(int index)
+{
+ if (index == -1) {
+ index = currentIndex();
+ }
+
+ const DatabaseManagerStruct& dbStruct = indexDatabaseManagerStruct(index);
+ return dbStruct.modified && !dbStruct.readOnly;
+}
+
bool DatabaseTabWidget::isModified(int index)
{
if (index == -1) {
@@ -556,7 +507,7 @@ QString DatabaseTabWidget::databasePath(int index)
index = currentIndex();
}
- return indexDatabaseManagerStruct(index).filePath;
+ return indexDatabaseManagerStruct(index).fileInfo.absoluteFilePath();
}
@@ -569,21 +520,18 @@ void DatabaseTabWidget::updateTabName(Database* db)
QString tabName;
- if (dbStruct.saveToFilename || dbStruct.readOnly) {
+ if (dbStruct.fileInfo.exists()) {
if (db->metadata()->name().isEmpty()) {
- tabName = dbStruct.fileName;
- }
- else {
+ tabName = dbStruct.fileInfo.fileName();
+ } else {
tabName = db->metadata()->name();
}
- setTabToolTip(index, dbStruct.filePath);
- }
- else {
+ setTabToolTip(index, dbStruct.fileInfo.absoluteFilePath());
+ } else {
if (db->metadata()->name().isEmpty()) {
tabName = tr("New database");
- }
- else {
+ } else {
tabName = QString("%1 [%2]").arg(db->metadata()->name(), tr("New database"));
}
}
@@ -614,6 +562,35 @@ void DatabaseTabWidget::updateTabNameFromDbWidgetSender()
DatabaseWidget* dbWidget = static_cast<DatabaseWidget*>(sender());
updateTabName(databaseFromDatabaseWidget(dbWidget));
+
+ Database* db = dbWidget->database();
+ Group *autoload = db->rootGroup()->findChildByName("AutoOpen");
+ if (autoload) {
+ const DatabaseManagerStruct& dbStruct = m_dbList.value(db);
+ QDir dbFolder(dbStruct.fileInfo.canonicalPath());
+ for (auto entry : autoload->entries()) {
+ if (entry->url().isEmpty() || entry->password().isEmpty()) {
+ continue;
+ }
+ QFileInfo filepath;
+ if (entry->url().startsWith("file://")) {
+ QUrl url(entry->url());
+ filepath.setFile(url.toLocalFile());
+ }
+ else {
+ filepath.setFile(entry->url());
+ if (filepath.isRelative()) {
+ filepath.setFile(dbFolder, entry->url());
+ }
+ }
+
+ if (!filepath.isFile()) {
+ continue;
+ }
+
+ openDatabase(filepath.canonicalFilePath(), entry->password(), "");
+ }
+ }
}
int DatabaseTabWidget::databaseIndex(Database* db)
@@ -716,17 +693,14 @@ void DatabaseTabWidget::lockDatabases()
DatabaseWidget* dbWidget = static_cast<DatabaseWidget*>(widget(i));
Database* db = databaseFromDatabaseWidget(dbWidget);
- DatabaseWidget::Mode mode = dbWidget->currentMode();
-
- if ((mode != DatabaseWidget::ViewMode && mode != DatabaseWidget::EditMode)
- || !dbWidget->dbHasKey()) {
+ if (dbWidget->currentMode() == DatabaseWidget::LockedMode || !dbWidget->dbHasKey()) {
continue;
}
// show the correct tab widget before we are asking questions about it
setCurrentWidget(dbWidget);
- if (mode == DatabaseWidget::EditMode && dbWidget->isEditWidgetModified()) {
+ if (dbWidget->currentMode() == DatabaseWidget::EditMode && dbWidget->isEditWidgetModified()) {
QMessageBox::StandardButton result =
MessageBox::question(
this, tr("Lock database"),
@@ -737,23 +711,7 @@ void DatabaseTabWidget::lockDatabases()
}
}
-
- if (m_dbList[db].modified && !m_dbList[db].saveToFilename) {
- QMessageBox::StandardButton result =
- MessageBox::question(
- this, tr("Lock database"),
- tr("This database has never been saved.\nYou can save the database or stop locking it."),
- QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Cancel);
- if (result == QMessageBox::Save) {
- if (!saveDatabase(db)) {
- continue;
- }
- }
- else if (result == QMessageBox::Cancel) {
- continue;
- }
- }
- else if (m_dbList[db].modified) {
+ if (m_dbList[db].modified) {
QMessageBox::StandardButton result =
MessageBox::question(
this, tr("Lock database"),
@@ -781,6 +739,27 @@ void DatabaseTabWidget::lockDatabases()
}
}
+/**
+ * This function relock the pending database when autotype has been performed successfully
+ * A database is marked as pending when it's unlocked after a global Auto-Type invocation
+ */
+void DatabaseTabWidget::relockPendingDatabase()
+{
+ if (!m_dbPendingLock || !config()->get("security/relockautotype").toBool()) {
+ return;
+ }
+
+ if (m_dbPendingLock->currentMode() == DatabaseWidget::LockedMode || !m_dbPendingLock->dbHasKey()) {
+ m_dbPendingLock = nullptr;
+ return;
+ }
+
+ m_dbPendingLock->lock();
+
+ emit databaseLocked(m_dbPendingLock);
+ m_dbPendingLock = nullptr;
+}
+
void DatabaseTabWidget::modified()
{
Q_ASSERT(qobject_cast<Database*>(sender()));
@@ -788,7 +767,7 @@ void DatabaseTabWidget::modified()
Database* db = static_cast<Database*>(sender());
DatabaseManagerStruct& dbStruct = m_dbList[db];
- if (config()->get("AutoSaveAfterEveryChange").toBool() && dbStruct.saveToFilename) {
+ if (config()->get("AutoSaveAfterEveryChange").toBool() && !dbStruct.readOnly) {
saveDatabase(db);
return;
}
@@ -871,6 +850,7 @@ void DatabaseTabWidget::performGlobalAutoType()
if (unlockedDatabases.size() > 0) {
autoType()->performGlobalAutoType(unlockedDatabases);
} else if (m_dbList.size() > 0){
- indexDatabaseManagerStruct(0).dbWidget->showUnlockDialog();
+ m_dbPendingLock = indexDatabaseManagerStruct(0).dbWidget;
+ m_dbPendingLock->showUnlockDialog();
}
}
diff --git a/src/gui/DatabaseTabWidget.h b/src/gui/DatabaseTabWidget.h
index 847eaef05..38f9b8474 100644
--- a/src/gui/DatabaseTabWidget.h
+++ b/src/gui/DatabaseTabWidget.h
@@ -1,19 +1,19 @@
/*
- * Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
*
- * 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 General Public License for more details.
+ * 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 General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef KEEPASSX_DATABASETABWIDGET_H
@@ -21,6 +21,7 @@
#include <QHash>
#include <QTabWidget>
+#include <QFileInfo>
#include "gui/DatabaseWidget.h"
#include "gui/MessageWidget.h"
@@ -29,7 +30,6 @@ class DatabaseWidget;
class DatabaseWidgetStateSync;
class DatabaseOpenWidget;
class QFile;
-class QLockFile;
class MessageWidget;
struct DatabaseManagerStruct
@@ -37,13 +37,10 @@ struct DatabaseManagerStruct
DatabaseManagerStruct();
DatabaseWidget* dbWidget;
- QLockFile* lockFile;
- QString filePath;
- QString canonicalFilePath;
- QString fileName;
- bool saveToFilename;
+ QFileInfo fileInfo;
bool modified;
bool readOnly;
+ int saveAttempts;
};
Q_DECLARE_TYPEINFO(DatabaseManagerStruct, Q_MOVABLE_TYPE);
@@ -54,7 +51,7 @@ class DatabaseTabWidget : public QTabWidget
public:
explicit DatabaseTabWidget(QWidget* parent = nullptr);
- ~DatabaseTabWidget();
+ ~DatabaseTabWidget() override;
void openDatabase(const QString& fileName, const QString& pw = QString(),
const QString& keyFile = QString());
void mergeDatabase(const QString& fileName);
@@ -78,9 +75,11 @@ public slots:
void changeMasterKey();
void changeDatabaseSettings();
bool readOnly(int index = -1);
+ bool canSave(int index = -1);
bool isModified(int index = -1);
void performGlobalAutoType();
void lockDatabases();
+ void relockPendingDatabase();
QString databasePath(int index = -1);
signals:
@@ -105,7 +104,7 @@ private slots:
void emitDatabaseUnlockedFromDbWidgetSender();
private:
- bool saveDatabase(Database* db);
+ bool saveDatabase(Database* db, QString filePath = "");
bool saveDatabaseAs(Database* db);
bool closeDatabase(Database* db);
void deleteDatabase(Database* db);
@@ -118,7 +117,8 @@ private:
void connectDatabase(Database* newDb, Database* oldDb = nullptr);
QHash<Database*, DatabaseManagerStruct> m_dbList;
- DatabaseWidgetStateSync* m_dbWidgetStateSync;
+ QPointer<DatabaseWidgetStateSync> m_dbWidgetStateSync;
+ QPointer<DatabaseWidget> m_dbPendingLock;
};
#endif // KEEPASSX_DATABASETABWIDGET_H
diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp
index 453b2009b..ff9d15fc0 100644
--- a/src/gui/DatabaseWidget.cpp
+++ b/src/gui/DatabaseWidget.cpp
@@ -1,19 +1,19 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
*
- * 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 General Public License for more details.
+ * 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 General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "DatabaseWidget.h"
@@ -47,6 +47,7 @@
#include "gui/TotpDialog.h"
#include "gui/DatabaseOpenWidget.h"
#include "gui/DatabaseSettingsWidget.h"
+#include "gui/DetailsWidget.h"
#include "gui/KeePass1OpenWidget.h"
#include "gui/MessageBox.h"
#include "gui/UnlockDatabaseWidget.h"
@@ -56,28 +57,38 @@
#include "gui/group/EditGroupWidget.h"
#include "gui/group/GroupView.h"
+#include "config-keepassx.h"
+
+#ifdef WITH_XC_SSHAGENT
+#include "sshagent/SSHAgent.h"
+#endif
+
DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
: QStackedWidget(parent)
, m_db(db)
, m_newGroup(nullptr)
, m_newEntry(nullptr)
, m_newParent(nullptr)
+ , m_importingCsv(false)
{
m_mainWidget = new QWidget(this);
m_messageWidget = new MessageWidget(this);
m_messageWidget->setHidden(true);
- QVBoxLayout* mainLayout = new QVBoxLayout();
+ auto* mainLayout = new QVBoxLayout();
QLayout* layout = new QHBoxLayout();
mainLayout->addWidget(m_messageWidget);
mainLayout->addLayout(layout);
- m_splitter = new QSplitter(m_mainWidget);
- m_splitter->setChildrenCollapsible(false);
+ m_mainSplitter = new QSplitter(m_mainWidget);
+ m_mainSplitter->setChildrenCollapsible(false);
+ m_detailSplitter = new QSplitter(m_mainWidget);
+ m_detailSplitter->setOrientation(Qt::Vertical);
+ m_detailSplitter->setChildrenCollapsible(true);
- QWidget* rightHandSideWidget = new QWidget(m_splitter);
+ QWidget* rightHandSideWidget = new QWidget(m_mainSplitter);
- m_groupView = new GroupView(db, m_splitter);
+ m_groupView = new GroupView(db, m_mainSplitter);
m_groupView->setObjectName("groupView");
m_groupView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(m_groupView, SIGNAL(customContextMenuRequested(QPoint)),
@@ -99,10 +110,25 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
"border: 2px solid rgb(190, 190, 190);"
"border-radius: 5px;");
- QVBoxLayout* vLayout = new QVBoxLayout(rightHandSideWidget);
+ m_detailsView = new DetailsWidget(this);
+ m_detailsView->hide();
+ connect(this, SIGNAL(pressedEntry(Entry*)), m_detailsView, SLOT(setEntry(Entry*)));
+ connect(this, SIGNAL(pressedGroup(Group*)), m_detailsView, SLOT(setGroup(Group*)));
+ connect(this, SIGNAL(currentModeChanged(DatabaseWidget::Mode)),
+ m_detailsView, SLOT(setDatabaseMode(DatabaseWidget::Mode)));
+ connect(m_detailsView, SIGNAL(errorOccurred(QString)), this, SLOT(showErrorMessage(QString)));
+
+
+ auto* vLayout = new QVBoxLayout(rightHandSideWidget);
vLayout->setMargin(0);
vLayout->addWidget(m_searchingLabel);
- vLayout->addWidget(m_entryView);
+ vLayout->addWidget(m_detailSplitter);
+
+ m_detailSplitter->addWidget(m_entryView);
+ m_detailSplitter->addWidget(m_detailsView);
+
+ m_detailSplitter->setStretchFactor(0, 100);
+ m_detailSplitter->setStretchFactor(1, 0);
m_searchingLabel->setVisible(false);
@@ -110,13 +136,13 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
setTabOrder(m_entryView, m_groupView);
- m_splitter->addWidget(m_groupView);
- m_splitter->addWidget(rightHandSideWidget);
+ m_mainSplitter->addWidget(m_groupView);
+ m_mainSplitter->addWidget(rightHandSideWidget);
- m_splitter->setStretchFactor(0, 30);
- m_splitter->setStretchFactor(1, 70);
+ m_mainSplitter->setStretchFactor(0, 30);
+ m_mainSplitter->setStretchFactor(1, 70);
- layout->addWidget(m_splitter);
+ layout->addWidget(m_mainSplitter);
m_mainWidget->setLayout(mainLayout);
m_editEntryWidget = new EditEntryWidget();
@@ -125,13 +151,14 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
m_editGroupWidget = new EditGroupWidget();
m_editGroupWidget->setObjectName("editGroupWidget");
m_changeMasterKeyWidget = new ChangeMasterKeyWidget();
+ m_changeMasterKeyWidget->setObjectName("changeMasterKeyWidget");
m_changeMasterKeyWidget->headlineLabel()->setText(tr("Change master key"));
- m_csvImportWizard = new CsvImportWizard();
- m_csvImportWizard->setObjectName("csvImportWizard");
QFont headlineLabelFont = m_changeMasterKeyWidget->headlineLabel()->font();
headlineLabelFont.setBold(true);
headlineLabelFont.setPointSize(headlineLabelFont.pointSize() + 2);
m_changeMasterKeyWidget->headlineLabel()->setFont(headlineLabelFont);
+ m_csvImportWizard = new CsvImportWizard();
+ m_csvImportWizard->setObjectName("csvImportWizard");
m_databaseSettingsWidget = new DatabaseSettingsWidget();
m_databaseSettingsWidget->setObjectName("databaseSettingsWidget");
m_databaseOpenWidget = new DatabaseOpenWidget();
@@ -156,8 +183,9 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
addWidget(m_keepass1OpenWidget);
addWidget(m_unlockDatabaseWidget);
- connect(m_splitter, SIGNAL(splitterMoved(int,int)), SIGNAL(splitterSizesChanged()));
- connect(m_entryView->header(), SIGNAL(sectionResized(int,int,int)), SIGNAL(entryColumnSizesChanged()));
+ connect(m_mainSplitter, SIGNAL(splitterMoved(int,int)), SIGNAL(mainSplitterSizesChanged()));
+ connect(m_detailSplitter, SIGNAL(splitterMoved(int,int)), SIGNAL(detailSplitterSizesChanged()));
+ connect(m_entryView, SIGNAL(viewStateChanged()), SIGNAL(entryViewStateChanged()));
connect(m_groupView, SIGNAL(groupChanged(Group*)), this, SLOT(onGroupChanged(Group*)));
connect(m_groupView, SIGNAL(groupChanged(Group*)), SIGNAL(groupChanged()));
connect(m_entryView, SIGNAL(entryActivated(Entry*, EntryModel::ModelColumn)),
@@ -180,6 +208,12 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
connect(&m_fileWatchUnblockTimer, SIGNAL(timeout()), this, SLOT(unblockAutoReload()));
connect(this, SIGNAL(currentChanged(int)), this, SLOT(emitCurrentModeChanged()));
+ connect(m_groupView, SIGNAL(groupPressed(Group*)), SLOT(emitPressedGroup(Group*)));
+ connect(m_groupView, SIGNAL(groupChanged(Group*)), SLOT(emitPressedGroup(Group*)));
+ connect(m_entryView, SIGNAL(entryPressed(Entry*)), SLOT(emitPressedEntry(Entry*)));
+ connect(m_entryView, SIGNAL(entrySelectionChanged()), SLOT(emitPressedEntry()));
+ connect(m_editEntryWidget, SIGNAL(editFinished(bool)), SLOT(emitPressedEntry()));
+
m_databaseModified = false;
m_fileWatchTimer.setSingleShot(true);
@@ -189,6 +223,13 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
m_searchCaseSensitive = false;
m_searchLimitGroup = config()->get("SearchLimitGroup", false).toBool();
+#ifdef WITH_XC_SSHAGENT
+ if (config()->get("SSHAgent", false).toBool()) {
+ connect(this, SIGNAL(currentModeChanged(DatabaseWidget::Mode)), SSHAgent::instance(), SLOT(databaseModeChanged(DatabaseWidget::Mode)));
+ connect(this, SIGNAL(closeRequest()), SSHAgent::instance(), SLOT(databaseModeChanged()));
+ }
+#endif
+
setCurrentWidget(m_mainWidget);
}
@@ -233,37 +274,72 @@ bool DatabaseWidget::isEditWidgetModified() const
}
}
-QList<int> DatabaseWidget::splitterSizes() const
+QList<int> DatabaseWidget::mainSplitterSizes() const
{
- return m_splitter->sizes();
+ return m_mainSplitter->sizes();
}
-void DatabaseWidget::setSplitterSizes(const QList<int>& sizes)
+void DatabaseWidget::setMainSplitterSizes(const QList<int>& sizes)
{
- m_splitter->setSizes(sizes);
+ m_mainSplitter->setSizes(sizes);
}
-QList<int> DatabaseWidget::entryHeaderViewSizes() const
+QList<int> DatabaseWidget::detailSplitterSizes() const
{
- QList<int> sizes;
+ return m_detailSplitter->sizes();
+}
- for (int i = 0; i < m_entryView->header()->count(); i++) {
- sizes.append(m_entryView->header()->sectionSize(i));
- }
+void DatabaseWidget::setDetailSplitterSizes(const QList<int> &sizes)
+{
+ m_detailSplitter->setSizes(sizes);
+}
- return sizes;
+/**
+ * Get current state of entry view 'Hide Usernames' setting
+ */
+bool DatabaseWidget::isUsernamesHidden() const
+{
+ return m_entryView->isUsernamesHidden();
}
-void DatabaseWidget::setEntryViewHeaderSizes(const QList<int>& sizes)
+/**
+ * Set state of entry view 'Hide Usernames' setting
+ */
+void DatabaseWidget::setUsernamesHidden(const bool hide)
{
- if (sizes.size() != m_entryView->header()->count()) {
- Q_ASSERT(false);
- return;
- }
+ m_entryView->setUsernamesHidden(hide);
+}
- for (int i = 0; i < sizes.size(); i++) {
- m_entryView->header()->resizeSection(i, sizes[i]);
- }
+/**
+ * Get current state of entry view 'Hide Passwords' setting
+ */
+bool DatabaseWidget::isPasswordsHidden() const
+{
+ return m_entryView->isPasswordsHidden();
+}
+
+/**
+ * Set state of entry view 'Hide Passwords' setting
+ */
+void DatabaseWidget::setPasswordsHidden(const bool hide)
+{
+ m_entryView->setPasswordsHidden(hide);
+}
+
+/**
+ * Get current view state of entry view
+ */
+QByteArray DatabaseWidget::entryViewState() const
+{
+ return m_entryView->viewState();
+}
+
+/**
+ * Set view state of entry view
+ */
+bool DatabaseWidget::setEntryViewState(const QByteArray& state) const
+{
+ return m_entryView->setViewState(state);
}
void DatabaseWidget::clearAllWidgets()
@@ -285,12 +361,17 @@ Database* DatabaseWidget::database()
void DatabaseWidget::createEntry()
{
+ Q_ASSERT(m_groupView->currentGroup());
if (!m_groupView->currentGroup()) {
- Q_ASSERT(false);
return;
}
m_newEntry = new Entry();
+
+ if (isInSearchMode()) {
+ m_newEntry->setTitle(getCurrentSearch());
+ endSearch();
+ }
m_newEntry->setUuid(Uuid::random());
m_newEntry->setUsername(m_db->metadata()->defaultUserName());
m_newParent = m_groupView->currentGroup();
@@ -328,33 +409,32 @@ void DatabaseWidget::replaceDatabase(Database* db)
void DatabaseWidget::cloneEntry()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
- CloneDialog* cloneDialog = new CloneDialog(this, m_db, currentEntry);
+ auto cloneDialog = new CloneDialog(this, m_db, currentEntry);
cloneDialog->show();
- return;
}
void DatabaseWidget::showTotp()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
- TotpDialog* totpDialog = new TotpDialog(this, currentEntry);
+ auto totpDialog = new TotpDialog(this, currentEntry);
totpDialog->open();
}
void DatabaseWidget::copyTotp()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
setClipboardTextAndMinimize(currentEntry->totp());
@@ -363,20 +443,21 @@ void DatabaseWidget::copyTotp()
void DatabaseWidget::setupTotp()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
- SetupTotpDialog* setupTotpDialog = new SetupTotpDialog(this, currentEntry);
+ auto setupTotpDialog = new SetupTotpDialog(this, currentEntry);
if (currentEntry->hasTotp()) {
setupTotpDialog->setSeed(currentEntry->totpSeed());
setupTotpDialog->setStep(currentEntry->totpStep());
setupTotpDialog->setDigits(currentEntry->totpDigits());
+ // now that all settings are set, decide whether it's default, steam or custom
+ setupTotpDialog->setSettings(currentEntry->totpDigits());
}
setupTotpDialog->open();
-
}
@@ -384,8 +465,8 @@ void DatabaseWidget::deleteEntries()
{
const QModelIndexList selected = m_entryView->selectionModel()->selectedRows();
+ Q_ASSERT(!selected.isEmpty());
if (selected.isEmpty()) {
- Q_ASSERT(false);
return;
}
@@ -456,8 +537,8 @@ void DatabaseWidget::setFocus()
void DatabaseWidget::copyTitle()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -467,8 +548,8 @@ void DatabaseWidget::copyTitle()
void DatabaseWidget::copyUsername()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -478,8 +559,8 @@ void DatabaseWidget::copyUsername()
void DatabaseWidget::copyPassword()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -489,8 +570,8 @@ void DatabaseWidget::copyPassword()
void DatabaseWidget::copyURL()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -500,8 +581,8 @@ void DatabaseWidget::copyURL()
void DatabaseWidget::copyNotes()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -511,8 +592,8 @@ void DatabaseWidget::copyNotes()
void DatabaseWidget::copyAttribute(QAction* action)
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -530,8 +611,8 @@ void DatabaseWidget::setClipboardTextAndMinimize(const QString& text)
void DatabaseWidget::performAutoType()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -541,8 +622,8 @@ void DatabaseWidget::performAutoType()
void DatabaseWidget::openUrl()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return;
}
@@ -564,7 +645,7 @@ void DatabaseWidget::openUrlForEntry(Entry* entry)
}
return;
}
-
+
// otherwise ask user
if (urlString.length() > 6) {
QString cmdTruncated = urlString.mid(6);
@@ -578,7 +659,7 @@ void DatabaseWidget::openUrlForEntry(Entry* entry)
this
);
msgbox.setDefaultButton(QMessageBox::No);
-
+
QCheckBox* checkbox = new QCheckBox(tr("Remember my choice"), &msgbox);
msgbox.setCheckBox(checkbox);
bool remember = false;
@@ -587,12 +668,12 @@ void DatabaseWidget::openUrlForEntry(Entry* entry)
remember = true;
}
});
-
+
int result = msgbox.exec();
if (result == QMessageBox::Yes) {
QProcess::startDetached(urlString.mid(6));
}
-
+
if (remember) {
entry->attributes()->set(EntryAttributes::RememberCmdExecAttr,
result == QMessageBox::Yes ? "1" : "0");
@@ -607,8 +688,8 @@ void DatabaseWidget::openUrlForEntry(Entry* entry)
void DatabaseWidget::createGroup()
{
+ Q_ASSERT(m_groupView->currentGroup());
if (!m_groupView->currentGroup()) {
- Q_ASSERT(false);
return;
}
@@ -621,8 +702,8 @@ void DatabaseWidget::createGroup()
void DatabaseWidget::deleteGroup()
{
Group* currentGroup = m_groupView->currentGroup();
+ Q_ASSERT(currentGroup && canDeleteCurrentGroup());
if (!currentGroup || !canDeleteCurrentGroup()) {
- Q_ASSERT(false);
return;
}
@@ -695,21 +776,18 @@ void DatabaseWidget::switchToView(bool accepted)
m_newGroup->setParent(m_newParent);
m_groupView->setCurrentGroup(m_newGroup);
m_groupView->expandGroup(m_newParent);
- }
- else {
+ } else {
delete m_newGroup;
}
m_newGroup = nullptr;
m_newParent = nullptr;
- }
- else if (m_newEntry) {
+ } else if (m_newEntry) {
if (accepted) {
m_newEntry->setGroup(m_newParent);
m_entryView->setFocus();
m_entryView->setCurrentEntry(m_newEntry);
- }
- else {
+ } else {
delete m_newEntry;
}
@@ -738,7 +816,16 @@ void DatabaseWidget::switchToEntryEdit(Entry* entry)
void DatabaseWidget::switchToEntryEdit(Entry* entry, bool create)
{
- Group* group = currentGroup();
+ // If creating an entry, it will be in `currentGroup()` so it's
+ // okay to use but when editing, the entry may not be in
+ // `currentGroup()` so we get the entry's group.
+ Group* group;
+ if (create) {
+ group = currentGroup();
+ } else {
+ group = entry->group();
+ }
+
Q_ASSERT(group);
m_editEntryWidget->loadEntry(entry, create, false, group->name(), m_db);
@@ -753,9 +840,15 @@ void DatabaseWidget::switchToGroupEdit(Group* group, bool create)
void DatabaseWidget::updateMasterKey(bool accepted)
{
+ if (m_importingCsv) {
+ setCurrentWidget(m_csvImportWizard);
+ m_csvImportWizard->keyFinished(accepted, m_changeMasterKeyWidget->newMasterKey());
+ return;
+ }
+
if (accepted) {
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
- bool result = m_db->setKey(m_changeMasterKeyWidget->newMasterKey());
+ bool result = m_db->setKey(m_changeMasterKeyWidget->newMasterKey(), true, true);
QApplication::restoreOverrideCursor();
if (!result) {
@@ -784,10 +877,10 @@ void DatabaseWidget::openDatabase(bool accepted)
m_databaseOpenWidget = nullptr;
delete m_keepass1OpenWidget;
m_keepass1OpenWidget = nullptr;
- m_fileWatcher.addPath(m_filename);
+ m_fileWatcher.addPath(m_filePath);
}
else {
- m_fileWatcher.removePath(m_filename);
+ m_fileWatcher.removePath(m_filePath);
if (m_databaseOpenWidget->database()) {
delete m_databaseOpenWidget->database();
}
@@ -825,7 +918,7 @@ void DatabaseWidget::unlockDatabase(bool accepted)
return;
}
- Database *db = Q_NULLPTR;
+ Database* db = nullptr;
if (sender() == m_unlockDatabaseDialog) {
db = m_unlockDatabaseDialog->database();
} else if (sender() == m_unlockDatabaseWidget) {
@@ -851,10 +944,31 @@ void DatabaseWidget::unlockDatabase(bool accepted)
void DatabaseWidget::entryActivationSignalReceived(Entry* entry, EntryModel::ModelColumn column)
{
- if (column == EntryModel::Url && !entry->url().isEmpty()) {
- openUrlForEntry(entry);
+ Q_ASSERT(entry);
+ if (!entry) {
+ return;
}
- else {
+
+ // Implement 'copy-on-doubleclick' functionality for certain columns
+ switch (column) {
+ case EntryModel::Username:
+ setClipboardTextAndMinimize(entry->resolveMultiplePlaceholders(entry->username()));
+ break;
+ case EntryModel::Password:
+ setClipboardTextAndMinimize(entry->resolveMultiplePlaceholders(entry->password()));
+ break;
+ case EntryModel::Url:
+ if (!entry->url().isEmpty()) {
+ openUrlForEntry(entry);
+ }
+ break;
+ // TODO: switch to 'Notes' tab in details view/pane
+ //case EntryModel::Notes:
+ // break;
+ // TODO: switch to 'Attachments' tab in details view/pane
+ //case EntryModel::Attachments:
+ // break;
+ default:
switchToEntryEdit(entry);
}
}
@@ -862,7 +976,7 @@ void DatabaseWidget::entryActivationSignalReceived(Entry* entry, EntryModel::Mod
void DatabaseWidget::switchToEntryEdit()
{
Entry* entry = m_entryView->currentEntry();
-
+
if (!entry) {
return;
}
@@ -873,7 +987,7 @@ void DatabaseWidget::switchToEntryEdit()
void DatabaseWidget::switchToGroupEdit()
{
Group* group = m_groupView->currentGroup();
-
+
if (!group) {
return;
}
@@ -886,6 +1000,7 @@ void DatabaseWidget::switchToMasterKeyChange(bool disableCancel)
m_changeMasterKeyWidget->clearForms();
m_changeMasterKeyWidget->setCancelEnabled(!disableCancel);
setCurrentWidget(m_changeMasterKeyWidget);
+ m_importingCsv = false;
}
void DatabaseWidget::switchToDatabaseSettings()
@@ -894,48 +1009,59 @@ void DatabaseWidget::switchToDatabaseSettings()
setCurrentWidget(m_databaseSettingsWidget);
}
-void DatabaseWidget::switchToOpenDatabase(const QString& fileName)
+void DatabaseWidget::switchToOpenDatabase(const QString& filePath)
{
- updateFilename(fileName);
- m_databaseOpenWidget->load(fileName);
- setCurrentWidget(m_databaseOpenWidget);
+ updateFilePath(filePath);
+ if (m_databaseOpenWidget) {
+ m_databaseOpenWidget->load(filePath);
+ setCurrentWidget(m_databaseOpenWidget);
+ } else if (m_unlockDatabaseWidget) {
+ m_unlockDatabaseWidget->load(filePath);
+ setCurrentWidget(m_unlockDatabaseWidget);
+ }
}
-void DatabaseWidget::switchToOpenDatabase(const QString& fileName, const QString& password,
+void DatabaseWidget::switchToOpenDatabase(const QString& filePath, const QString& password,
const QString& keyFile)
{
- updateFilename(fileName);
- switchToOpenDatabase(fileName);
- m_databaseOpenWidget->enterKey(password, keyFile);
+ updateFilePath(filePath);
+ switchToOpenDatabase(filePath);
+ if (m_databaseOpenWidget) {
+ m_databaseOpenWidget->enterKey(password, keyFile);
+ } else if (m_unlockDatabaseWidget) {
+ m_unlockDatabaseWidget->enterKey(password, keyFile);
+ }
}
-void DatabaseWidget::switchToImportCsv(const QString& fileName)
+void DatabaseWidget::switchToImportCsv(const QString& filePath)
{
- updateFilename(fileName);
- switchToMasterKeyChange();
- m_csvImportWizard->load(fileName, m_db);
- setCurrentWidget(m_csvImportWizard);
+ updateFilePath(filePath);
+ m_csvImportWizard->load(filePath, m_db);
+ m_changeMasterKeyWidget->clearForms();
+ m_changeMasterKeyWidget->setCancelEnabled(false);
+ setCurrentWidget(m_changeMasterKeyWidget);
+ m_importingCsv = true;
}
-void DatabaseWidget::switchToOpenMergeDatabase(const QString& fileName)
+void DatabaseWidget::switchToOpenMergeDatabase(const QString& filePath)
{
m_databaseOpenMergeWidget->clearForms();
- m_databaseOpenMergeWidget->load(fileName);
+ m_databaseOpenMergeWidget->load(filePath);
setCurrentWidget(m_databaseOpenMergeWidget);
}
-void DatabaseWidget::switchToOpenMergeDatabase(const QString& fileName, const QString& password,
+void DatabaseWidget::switchToOpenMergeDatabase(const QString& filePath, const QString& password,
const QString& keyFile)
{
- switchToOpenMergeDatabase(fileName);
+ switchToOpenMergeDatabase(filePath);
m_databaseOpenMergeWidget->enterKey(password, keyFile);
}
-void DatabaseWidget::switchToImportKeepass1(const QString& fileName)
+void DatabaseWidget::switchToImportKeepass1(const QString& filePath)
{
- updateFilename(fileName);
- m_keepass1OpenWidget->load(fileName);
+ updateFilePath(filePath);
+ m_keepass1OpenWidget->load(filePath);
setCurrentWidget(m_keepass1OpenWidget);
}
@@ -1041,6 +1167,32 @@ void DatabaseWidget::emitEntryContextMenuRequested(const QPoint& pos)
emit entryContextMenuRequested(m_entryView->viewport()->mapToGlobal(pos));
}
+void DatabaseWidget::emitPressedEntry()
+{
+ Entry* currentEntry = m_entryView->currentEntry();
+ emitPressedEntry(currentEntry);
+}
+
+void DatabaseWidget::emitPressedEntry(Entry* currentEntry)
+{
+ if (!currentEntry) {
+ // if no entry is pressed, leave in details the last entry
+ return;
+ }
+
+ emit pressedEntry(currentEntry);
+}
+
+void DatabaseWidget::emitPressedGroup(Group* currentGroup)
+{
+ if (!currentGroup) {
+ // if no group is pressed, leave in details the last group
+ return;
+ }
+
+ emit pressedGroup(currentGroup);
+}
+
bool DatabaseWidget::dbHasKey() const
{
return m_db->hasKey();
@@ -1054,7 +1206,7 @@ bool DatabaseWidget::canDeleteCurrentGroup() const
bool DatabaseWidget::isInSearchMode() const
{
- return m_entryView->inEntryListMode();
+ return m_entryView->inSearchMode();
}
Group* DatabaseWidget::currentGroup() const
@@ -1079,21 +1231,21 @@ void DatabaseWidget::lock()
endSearch();
clearAllWidgets();
- m_unlockDatabaseWidget->load(m_filename);
+ m_unlockDatabaseWidget->load(m_filePath);
setCurrentWidget(m_unlockDatabaseWidget);
Database* newDb = new Database();
newDb->metadata()->setName(m_db->metadata()->name());
replaceDatabase(newDb);
}
-void DatabaseWidget::updateFilename(const QString& fileName)
+void DatabaseWidget::updateFilePath(const QString &filePath)
{
- if (!m_filename.isEmpty()) {
- m_fileWatcher.removePath(m_filename);
+ if (!m_filePath.isEmpty()) {
+ m_fileWatcher.removePath(m_filePath);
}
- m_fileWatcher.addPath(fileName);
- m_filename = fileName;
+ m_fileWatcher.addPath(filePath);
+ m_filePath = filePath;
}
void DatabaseWidget::blockAutoReload(bool block)
@@ -1109,7 +1261,7 @@ void DatabaseWidget::blockAutoReload(bool block)
void DatabaseWidget::unblockAutoReload()
{
m_ignoreAutoReload = false;
- updateFilename(m_filename);
+ updateFilePath(m_filePath);
}
void DatabaseWidget::onWatchedFileChanged()
@@ -1125,12 +1277,17 @@ void DatabaseWidget::onWatchedFileChanged()
void DatabaseWidget::reloadDatabaseFile()
{
- if (m_db == nullptr || currentMode() == DatabaseWidget::LockedMode)
+ if (!m_db || currentMode() == DatabaseWidget::LockedMode) {
+ return;
+ }
+
+ if (currentMode() == DatabaseWidget::LockedMode) {
return;
+ }
if (! config()->get("AutoReloadOnChange").toBool()) {
// Ask if we want to reload the db
- QMessageBox::StandardButton mb = MessageBox::question(this, tr("Autoreload Request"),
+ QMessageBox::StandardButton mb = MessageBox::question(this, tr("File has changed"),
tr("The database file has changed. Do you want to load the changes?"),
QMessageBox::Yes | QMessageBox::No);
@@ -1139,20 +1296,20 @@ void DatabaseWidget::reloadDatabaseFile()
emit m_db->modified();
m_databaseModified = true;
// Rewatch the database file
- m_fileWatcher.addPath(m_filename);
+ m_fileWatcher.addPath(m_filePath);
return;
}
}
KeePass2Reader reader;
- QFile file(m_filename);
+ QFile file(m_filePath);
if (file.open(QIODevice::ReadOnly)) {
Database* db = reader.readDatabase(&file, database()->key());
if (db != nullptr) {
if (m_databaseModified) {
// Ask if we want to merge changes into new database
QMessageBox::StandardButton mb = MessageBox::question(this, tr("Merge Request"),
- tr("The database file has changed and you have unsaved changes."
+ tr("The database file has changed and you have unsaved changes.\n"
"Do you want to merge your changes?"),
QMessageBox::Yes | QMessageBox::No);
@@ -1186,12 +1343,16 @@ void DatabaseWidget::reloadDatabaseFile()
}
} else {
m_messageWidget->showMessage(
- tr("Could not open the new database file while attempting to autoreload this database."),
+ tr("Could not open the new database file while attempting to autoreload this database.")
+ .append("\n").append(file.errorString()),
MessageWidget::Error);
+ // HACK: Directly calling the database's signal
+ // Mark db as modified since existing data may differ from file or file was deleted
+ m_db->modified();
}
// Rewatch the database file
- m_fileWatcher.addPath(m_filename);
+ m_fileWatcher.addPath(m_filePath);
}
int DatabaseWidget::numberOfSelectedEntries() const
@@ -1246,8 +1407,8 @@ bool DatabaseWidget::isGroupSelected() const
bool DatabaseWidget::currentEntryHasTitle()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return false;
}
return !currentEntry->title().isEmpty();
@@ -1256,8 +1417,8 @@ bool DatabaseWidget::currentEntryHasTitle()
bool DatabaseWidget::currentEntryHasUsername()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return false;
}
return !currentEntry->resolveMultiplePlaceholders(currentEntry->username()).isEmpty();
@@ -1266,8 +1427,8 @@ bool DatabaseWidget::currentEntryHasUsername()
bool DatabaseWidget::currentEntryHasPassword()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return false;
}
return !currentEntry->resolveMultiplePlaceholders(currentEntry->password()).isEmpty();
@@ -1276,8 +1437,8 @@ bool DatabaseWidget::currentEntryHasPassword()
bool DatabaseWidget::currentEntryHasUrl()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return false;
}
return !currentEntry->resolveMultiplePlaceholders(currentEntry->url()).isEmpty();
@@ -1287,8 +1448,8 @@ bool DatabaseWidget::currentEntryHasUrl()
bool DatabaseWidget::currentEntryHasTotp()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return false;
}
return currentEntry->hasTotp();
@@ -1297,8 +1458,8 @@ bool DatabaseWidget::currentEntryHasTotp()
bool DatabaseWidget::currentEntryHasNotes()
{
Entry* currentEntry = m_entryView->currentEntry();
+ Q_ASSERT(currentEntry);
if (!currentEntry) {
- Q_ASSERT(false);
return false;
}
return !currentEntry->resolveMultiplePlaceholders(currentEntry->notes()).isEmpty();
@@ -1315,7 +1476,13 @@ EntryView* DatabaseWidget::entryView() {
void DatabaseWidget::showUnlockDialog()
{
m_unlockDatabaseDialog->clearForms();
- m_unlockDatabaseDialog->setDBFilename(m_filename);
+ m_unlockDatabaseDialog->setFilePath(m_filePath);
+
+#if defined(Q_OS_MAC)
+ autoType()->raiseWindow();
+ Tools::wait(500);
+#endif
+
m_unlockDatabaseDialog->show();
m_unlockDatabaseDialog->activateWindow();
}
@@ -1325,9 +1492,15 @@ void DatabaseWidget::closeUnlockDialog()
m_unlockDatabaseDialog->close();
}
-void DatabaseWidget::showMessage(const QString& text, MessageWidget::MessageType type)
+void DatabaseWidget::showMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton, int autoHideTimeout)
+{
+ m_messageWidget->setCloseButtonVisible(showClosebutton);
+ m_messageWidget->showMessage(text, type, autoHideTimeout);
+}
+
+void DatabaseWidget::showErrorMessage(const QString& errorMessage)
{
- m_messageWidget->showMessage(text, type);
+ showMessage(errorMessage, MessageWidget::MessageType::Error);
}
void DatabaseWidget::hideMessage()
diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h
index 734e979e7..464a543ab 100644
--- a/src/gui/DatabaseWidget.h
+++ b/src/gui/DatabaseWidget.h
@@ -47,6 +47,7 @@ class QSplitter;
class QLabel;
class UnlockDatabaseWidget;
class MessageWidget;
+class DetailsWidget;
class UnlockDatabaseDialog;
class QFileSystemWatcher;
@@ -81,16 +82,22 @@ public:
void setCurrentWidget(QWidget* widget);
DatabaseWidget::Mode currentMode() const;
void lock();
- void updateFilename(const QString& filename);
+ void updateFilePath(const QString &filePath);
int numberOfSelectedEntries() const;
QStringList customEntryAttributes() const;
bool isGroupSelected() const;
bool isInEditMode() const;
bool isEditWidgetModified() const;
- QList<int> splitterSizes() const;
- void setSplitterSizes(const QList<int>& sizes);
- QList<int> entryHeaderViewSizes() const;
- void setEntryViewHeaderSizes(const QList<int>& sizes);
+ QList<int> mainSplitterSizes() const;
+ void setMainSplitterSizes(const QList<int>& sizes);
+ QList<int> detailSplitterSizes() const;
+ void setDetailSplitterSizes(const QList<int>& sizes);
+ bool isUsernamesHidden() const;
+ void setUsernamesHidden(const bool hide);
+ bool isPasswordsHidden() const;
+ void setPasswordsHidden(const bool hide);
+ QByteArray entryViewState() const;
+ bool setEntryViewState(const QByteArray& state) const;
void clearAllWidgets();
bool currentEntryHasTitle();
bool currentEntryHasUsername();
@@ -115,13 +122,16 @@ signals:
void databaseMerged(Database* mergedDb);
void groupContextMenuRequested(const QPoint& globalPos);
void entryContextMenuRequested(const QPoint& globalPos);
+ void pressedEntry(Entry* selectedEntry);
+ void pressedGroup(Group* selectedGroup);
void unlockedDatabase();
void listModeAboutToActivate();
void listModeActivated();
void searchModeAboutToActivate();
void searchModeActivated();
- void splitterSizesChanged();
- void entryColumnSizesChanged();
+ void mainSplitterSizesChanged();
+ void detailSplitterSizesChanged();
+ void entryViewStateChanged();
void updateSearch(QString text);
public slots:
@@ -149,13 +159,13 @@ public slots:
void switchToGroupEdit();
void switchToMasterKeyChange(bool disableCancel = false);
void switchToDatabaseSettings();
- void switchToOpenDatabase(const QString& fileName);
- void switchToOpenDatabase(const QString& fileName, const QString& password, const QString& keyFile);
- void switchToImportCsv(const QString& fileName);
+ void switchToOpenDatabase(const QString& filePath);
+ void switchToOpenDatabase(const QString& filePath, const QString& password, const QString& keyFile);
+ void switchToImportCsv(const QString& filePath);
void csvImportFinished(bool accepted);
- void switchToOpenMergeDatabase(const QString& fileName);
- void switchToOpenMergeDatabase(const QString& fileName, const QString& password, const QString& keyFile);
- void switchToImportKeepass1(const QString& fileName);
+ void switchToOpenMergeDatabase(const QString& filePath);
+ void switchToOpenMergeDatabase(const QString& filePath, const QString& password, const QString& keyFile);
+ void switchToImportKeepass1(const QString& filePath);
void databaseModified();
void databaseSaved();
void emptyRecycleBin();
@@ -166,7 +176,9 @@ public slots:
void setSearchLimitGroup(bool state);
void endSearch();
- void showMessage(const QString& text, MessageWidget::MessageType type);
+ void showMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton = true,
+ int autoHideTimeout = MessageWidget::DefaultAutoHideTimeout);
+ void showErrorMessage(const QString& errorMessage);
void hideMessage();
private slots:
@@ -178,6 +190,9 @@ private slots:
void switchToGroupEdit(Group* entry, bool create);
void emitGroupContextMenuRequested(const QPoint& pos);
void emitEntryContextMenuRequested(const QPoint& pos);
+ void emitPressedEntry();
+ void emitPressedEntry(Entry* currentEntry);
+ void emitPressedGroup(Group* currentGroup);
void updateMasterKey(bool accepted);
void openDatabase(bool accepted);
void mergeDatabase(bool accepted);
@@ -207,23 +222,28 @@ private:
KeePass1OpenWidget* m_keepass1OpenWidget;
UnlockDatabaseWidget* m_unlockDatabaseWidget;
UnlockDatabaseDialog* m_unlockDatabaseDialog;
- QSplitter* m_splitter;
+ QSplitter* m_mainSplitter;
+ QSplitter* m_detailSplitter;
GroupView* m_groupView;
EntryView* m_entryView;
QLabel* m_searchingLabel;
Group* m_newGroup;
Entry* m_newEntry;
Group* m_newParent;
- QString m_filename;
+ QString m_filePath;
Uuid m_groupBeforeLock;
Uuid m_entryBeforeLock;
MessageWidget* m_messageWidget;
+ DetailsWidget* m_detailsView;
// Search state
QString m_lastSearchText;
bool m_searchCaseSensitive;
bool m_searchLimitGroup;
+ // CSV import state
+ bool m_importingCsv;
+
// Autoreload
QFileSystemWatcher m_fileWatcher;
QTimer m_fileWatchTimer;
diff --git a/src/gui/DatabaseWidgetStateSync.cpp b/src/gui/DatabaseWidgetStateSync.cpp
index 1510d8440..9b89412ea 100644
--- a/src/gui/DatabaseWidgetStateSync.cpp
+++ b/src/gui/DatabaseWidgetStateSync.cpp
@@ -1,46 +1,64 @@
/*
- * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
*
- * 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 General Public License for more details.
+ * 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 General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "DatabaseWidgetStateSync.h"
#include "core/Config.h"
+#include <QCoreApplication>
DatabaseWidgetStateSync::DatabaseWidgetStateSync(QObject* parent)
: QObject(parent)
, m_activeDbWidget(nullptr)
, m_blockUpdates(false)
{
- m_splitterSizes = variantToIntList(config()->get("GUI/SplitterState"));
- m_columnSizesList = variantToIntList(config()->get("GUI/EntryListColumnSizes"));
- m_columnSizesSearch = variantToIntList(config()->get("GUI/EntrySearchColumnSizes"));
+ m_mainSplitterSizes = variantToIntList(config()->get("GUI/SplitterState"));
+ m_detailSplitterSizes = variantToIntList(config()->get("GUI/DetailSplitterState"));
+ m_hideUsernames = config()->get("GUI/HideUsernames").toBool();
+ m_hidePasswords = config()->get("GUI/HidePasswords").toBool();
+ m_listViewState = config()->get("GUI/ListViewState").toByteArray();
+ m_searchViewState = config()->get("GUI/SearchViewState").toByteArray();
+
+ connect(qApp, &QCoreApplication::aboutToQuit, this, &DatabaseWidgetStateSync::sync);
}
DatabaseWidgetStateSync::~DatabaseWidgetStateSync()
{
- config()->set("GUI/SplitterState", intListToVariant(m_splitterSizes));
- config()->set("GUI/EntryListColumnSizes", intListToVariant(m_columnSizesList));
- config()->set("GUI/EntrySearchColumnSizes", intListToVariant(m_columnSizesSearch));
+}
+
+/**
+ * Sync state with persistent storage.
+ */
+void DatabaseWidgetStateSync::sync()
+{
+ config()->set("GUI/SplitterState", intListToVariant(m_mainSplitterSizes));
+ config()->set("GUI/DetailSplitterState", intListToVariant(m_detailSplitterSizes));
+ config()->set("GUI/HideUsernames", m_hideUsernames);
+ config()->set("GUI/HidePasswords", m_hidePasswords);
+ config()->set("GUI/ListViewState", m_listViewState);
+ config()->set("GUI/SearchViewState", m_searchViewState);
+ config()->sync();
}
void DatabaseWidgetStateSync::setActive(DatabaseWidget* dbWidget)
{
if (m_activeDbWidget) {
- disconnect(m_activeDbWidget, 0, this, 0);
+ disconnect(m_activeDbWidget, nullptr, this, nullptr);
}
m_activeDbWidget = dbWidget;
@@ -48,20 +66,28 @@ void DatabaseWidgetStateSync::setActive(DatabaseWidget* dbWidget)
if (m_activeDbWidget) {
m_blockUpdates = true;
- if (!m_splitterSizes.isEmpty())
- m_activeDbWidget->setSplitterSizes(m_splitterSizes);
+ if (!m_mainSplitterSizes.isEmpty()) {
+ m_activeDbWidget->setMainSplitterSizes(m_mainSplitterSizes);
+ }
+
+ if (!m_detailSplitterSizes.isEmpty()) {
+ m_activeDbWidget->setDetailSplitterSizes(m_detailSplitterSizes);
+ }
- if (m_activeDbWidget->isInSearchMode())
+ if (m_activeDbWidget->isInSearchMode()) {
restoreSearchView();
- else
+ } else {
restoreListView();
+ }
m_blockUpdates = false;
- connect(m_activeDbWidget, SIGNAL(splitterSizesChanged()),
+ connect(m_activeDbWidget, SIGNAL(mainSplitterSizesChanged()),
+ SLOT(updateSplitterSizes()));
+ connect(m_activeDbWidget, SIGNAL(detailSplitterSizesChanged()),
SLOT(updateSplitterSizes()));
- connect(m_activeDbWidget, SIGNAL(entryColumnSizesChanged()),
- SLOT(updateColumnSizes()));
+ connect(m_activeDbWidget, SIGNAL(entryViewStateChanged()),
+ SLOT(updateViewState()));
connect(m_activeDbWidget, SIGNAL(listModeActivated()),
SLOT(restoreListView()));
connect(m_activeDbWidget, SIGNAL(searchModeActivated()),
@@ -73,19 +99,55 @@ void DatabaseWidgetStateSync::setActive(DatabaseWidget* dbWidget)
}
}
+/**
+ * Restore entry view list view state
+ *
+ * NOTE:
+ * States of entry view 'Hide Usernames'/'Hide Passwords' settings are global,
+ * i.e. they are the same for both list and search mode
+ *
+ * NOTE:
+ * If m_listViewState is empty, the list view has been activated for the first
+ * time after starting with a clean (or invalid) config. Thus, save the current
+ * state. Without this, m_listViewState would remain empty until there is an
+ * actual view state change (e.g. column is resized)
+ */
void DatabaseWidgetStateSync::restoreListView()
{
- if (!m_columnSizesList.isEmpty()) {
- m_activeDbWidget->setEntryViewHeaderSizes(m_columnSizesList);
+ m_activeDbWidget->setUsernamesHidden(m_hideUsernames);
+ m_activeDbWidget->setPasswordsHidden(m_hidePasswords);
+
+ if (!m_listViewState.isEmpty()) {
+ m_activeDbWidget->setEntryViewState(m_listViewState);
+ } else {
+ m_listViewState = m_activeDbWidget->entryViewState();
}
m_blockUpdates = false;
}
+/**
+ * Restore entry view search view state
+ *
+ * NOTE:
+ * States of entry view 'Hide Usernames'/'Hide Passwords' settings are global,
+ * i.e. they are the same for both list and search mode
+ *
+ * NOTE:
+ * If m_searchViewState is empty, the search view has been activated for the
+ * first time after starting with a clean (or invalid) config. Thus, save the
+ * current state. Without this, m_searchViewState would remain empty until
+ * there is an actual view state change (e.g. column is resized)
+ */
void DatabaseWidgetStateSync::restoreSearchView()
{
- if (!m_columnSizesSearch.isEmpty()) {
- m_activeDbWidget->setEntryViewHeaderSizes(m_columnSizesSearch);
+ m_activeDbWidget->setUsernamesHidden(m_hideUsernames);
+ m_activeDbWidget->setPasswordsHidden(m_hidePasswords);
+
+ if (!m_searchViewState.isEmpty()) {
+ m_activeDbWidget->setEntryViewState(m_searchViewState);
+ } else {
+ m_searchViewState = m_activeDbWidget->entryViewState();
}
m_blockUpdates = false;
@@ -102,20 +164,30 @@ void DatabaseWidgetStateSync::updateSplitterSizes()
return;
}
- m_splitterSizes = m_activeDbWidget->splitterSizes();
+ m_mainSplitterSizes = m_activeDbWidget->mainSplitterSizes();
+ m_detailSplitterSizes = m_activeDbWidget->detailSplitterSizes();
}
-void DatabaseWidgetStateSync::updateColumnSizes()
+/**
+ * Update entry view list/search view state
+ *
+ * NOTE:
+ * States of entry view 'Hide Usernames'/'Hide Passwords' settings are global,
+ * i.e. they are the same for both list and search mode
+ */
+void DatabaseWidgetStateSync::updateViewState()
{
if (m_blockUpdates) {
return;
}
- if (m_activeDbWidget->isGroupSelected()) {
- m_columnSizesList = m_activeDbWidget->entryHeaderViewSizes();
- }
- else {
- m_columnSizesSearch = m_activeDbWidget->entryHeaderViewSizes();
+ m_hideUsernames = m_activeDbWidget->isUsernamesHidden();
+ m_hidePasswords = m_activeDbWidget->isPasswordsHidden();
+
+ if (m_activeDbWidget->isInSearchMode()) {
+ m_searchViewState = m_activeDbWidget->entryViewState();
+ } else {
+ m_listViewState = m_activeDbWidget->entryViewState();
}
}
@@ -129,8 +201,7 @@ QList<int> DatabaseWidgetStateSync::variantToIntList(const QVariant& variant)
int size = var.toInt(&ok);
if (ok) {
result.append(size);
- }
- else {
+ } else {
result.clear();
break;
}
@@ -149,4 +220,3 @@ QVariant DatabaseWidgetStateSync::intListToVariant(const QList<int>& list)
return result;
}
-
diff --git a/src/gui/DatabaseWidgetStateSync.h b/src/gui/DatabaseWidgetStateSync.h
index 96ecd104a..0b1c9b7cb 100644
--- a/src/gui/DatabaseWidgetStateSync.h
+++ b/src/gui/DatabaseWidgetStateSync.h
@@ -1,19 +1,20 @@
/*
- * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
*
- * 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 General Public License for more details.
+ * 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 General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef KEEPASSX_DATABASEWIDGETSTATESYNC_H
@@ -27,7 +28,7 @@ class DatabaseWidgetStateSync : public QObject
public:
explicit DatabaseWidgetStateSync(QObject* parent = nullptr);
- ~DatabaseWidgetStateSync();
+ ~DatabaseWidgetStateSync() override;
public slots:
void setActive(DatabaseWidget* dbWidget);
@@ -37,18 +38,24 @@ public slots:
private slots:
void blockUpdates();
void updateSplitterSizes();
- void updateColumnSizes();
+ void updateViewState();
+ void sync();
private:
static QList<int> variantToIntList(const QVariant& variant);
static QVariant intListToVariant(const QList<int>& list);
- DatabaseWidget* m_activeDbWidget;
+ QPointer<DatabaseWidget> m_activeDbWidget;
bool m_blockUpdates;
- QList<int> m_splitterSizes;
- QList<int> m_columnSizesList;
- QList<int> m_columnSizesSearch;
+ QList<int> m_mainSplitterSizes;
+ QList<int> m_detailSplitterSizes;
+
+ bool m_hideUsernames;
+ bool m_hidePasswords;
+
+ QByteArray m_listViewState;
+ QByteArray m_searchViewState;
};
#endif // KEEPASSX_DATABASEWIDGETSTATESYNC_H
diff --git a/src/gui/DetailsWidget.cpp b/src/gui/DetailsWidget.cpp
new file mode 100644
index 000000000..77de24666
--- /dev/null
+++ b/src/gui/DetailsWidget.cpp
@@ -0,0 +1,335 @@
+/*
+ * Copyright (C) 2012 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "DetailsWidget.h"
+#include "ui_DetailsWidget.h"
+
+#include <QDebug>
+#include <QDir>
+#include <QDesktopServices>
+
+#include "core/Config.h"
+#include "core/FilePath.h"
+#include "gui/Clipboard.h"
+#include "entry/EntryAttachmentsModel.h"
+
+namespace {
+constexpr int GeneralTabIndex = 0;
+}
+
+DetailsWidget::DetailsWidget(QWidget* parent)
+ : QWidget(parent)
+ , m_ui(new Ui::DetailsWidget())
+ , m_locked(false)
+ , m_currentEntry(nullptr)
+ , m_currentGroup(nullptr)
+ , m_step(0)
+ , m_totpTimer(nullptr)
+ , m_selectedTabEntry(0)
+ , m_selectedTabGroup(0)
+{
+ m_ui->setupUi(this);
+
+ // Entry
+ m_ui->entryTotpButton->setIcon(filePath()->icon("actions", "chronometer"));
+ m_ui->entryCloseButton->setIcon(filePath()->icon("actions", "dialog-close"));
+
+ m_ui->entryAttachmentsWidget->setReadOnly(true);
+ m_ui->entryAttachmentsWidget->setButtonsVisible(false);
+
+ connect(m_ui->entryTotpButton, SIGNAL(toggled(bool)), m_ui->entryTotpWidget, SLOT(setVisible(bool)));
+ connect(m_ui->entryCloseButton, SIGNAL(toggled(bool)), SLOT(hide()));
+ connect(m_ui->entryTabWidget, SIGNAL(tabBarClicked(int)), SLOT(updateTabIndexes()), Qt::QueuedConnection);
+
+ // Group
+ m_ui->groupCloseButton->setIcon(filePath()->icon("actions", "dialog-close"));
+ connect(m_ui->groupCloseButton, SIGNAL(toggled(bool)), SLOT(hide()));
+ connect(m_ui->groupTabWidget, SIGNAL(tabBarClicked(int)), SLOT(updateTabIndexes()), Qt::QueuedConnection);
+}
+
+DetailsWidget::~DetailsWidget()
+{
+ deleteTotpTimer();
+}
+
+void DetailsWidget::setEntry(Entry* selectedEntry)
+{
+ if (!selectedEntry) {
+ hide();
+ return;
+ }
+
+ m_currentEntry = selectedEntry;
+
+ updateEntryHeaderLine();
+ updateEntryTotp();
+ updateEntryGeneralTab();
+ updateEntryNotesTab();
+ updateEntryAttributesTab();
+ updateEntryAttachmentsTab();
+ updateEntryAutotypeTab();
+
+ setVisible(!config()->get("GUI/HideDetailsView").toBool());
+
+ m_ui->stackedWidget->setCurrentWidget(m_ui->pageEntry);
+ const int tabIndex = m_ui->entryTabWidget->isTabEnabled(m_selectedTabEntry) ? m_selectedTabEntry
+ : GeneralTabIndex;
+ Q_ASSERT(m_ui->entryTabWidget->isTabEnabled(GeneralTabIndex));
+ m_ui->entryTabWidget->setCurrentIndex(tabIndex);
+}
+
+void DetailsWidget::setGroup(Group* selectedGroup)
+{
+ if (!selectedGroup) {
+ hide();
+ return;
+ }
+
+ m_currentGroup = selectedGroup;
+ updateGroupHeaderLine();
+ updateGroupGeneralTab();
+ updateGroupNotesTab();
+
+ setVisible(!config()->get("GUI/HideDetailsView").toBool());
+
+ m_ui->stackedWidget->setCurrentWidget(m_ui->pageGroup);
+ const int tabIndex = m_ui->groupTabWidget->isTabEnabled(m_selectedTabGroup) ? m_selectedTabGroup
+ : GeneralTabIndex;
+ Q_ASSERT(m_ui->groupTabWidget->isTabEnabled(GeneralTabIndex));
+ m_ui->groupTabWidget->setCurrentIndex(tabIndex);
+}
+
+void DetailsWidget::setDatabaseMode(DatabaseWidget::Mode mode)
+{
+ m_locked = mode == DatabaseWidget::LockedMode;
+ if (m_locked) {
+ return;
+ }
+
+ if (mode == DatabaseWidget::ViewMode) {
+ if (m_ui->stackedWidget->currentWidget() == m_ui->pageGroup) {
+ setGroup(m_currentGroup);
+ } else {
+ setEntry(m_currentEntry);
+ }
+ }
+}
+
+void DetailsWidget::updateEntryHeaderLine()
+{
+ Q_ASSERT(m_currentEntry);
+ const QString title = m_currentEntry->resolveMultiplePlaceholders(m_currentEntry->title());
+ m_ui->entryTitleLabel->setRawText(hierarchy(m_currentEntry->group(), title));
+ m_ui->entryIcon->setPixmap(preparePixmap(m_currentEntry->iconPixmap(), 16));
+}
+
+void DetailsWidget::updateEntryTotp()
+{
+ Q_ASSERT(m_currentEntry);
+ const bool hasTotp = m_currentEntry->hasTotp();
+ m_ui->entryTotpButton->setVisible(hasTotp);
+ m_ui->entryTotpWidget->hide();
+ m_ui->entryTotpButton->setChecked(false);
+
+ if (hasTotp) {
+ deleteTotpTimer();
+ m_totpTimer = new QTimer(m_currentEntry);
+ connect(m_totpTimer, SIGNAL(timeout()), this, SLOT(updateTotpLabel()));
+ m_totpTimer->start(1000);
+
+ m_step = m_currentEntry->totpStep();
+ updateTotpLabel();
+ } else {
+ m_ui->entryTotpLabel->clear();
+ stopTotpTimer();
+ }
+}
+
+void DetailsWidget::updateEntryGeneralTab()
+{
+ Q_ASSERT(m_currentEntry);
+ m_ui->entryUsernameLabel->setText(m_currentEntry->resolveMultiplePlaceholders(m_currentEntry->username()));
+
+ if (!config()->get("security/hidepassworddetails").toBool()) {
+ const QString password = m_currentEntry->resolveMultiplePlaceholders(m_currentEntry->password());
+ m_ui->entryPasswordLabel->setRawText(password);
+ m_ui->entryPasswordLabel->setToolTip(password);
+ } else {
+ m_ui->entryPasswordLabel->setRawText(QString("\u25cf").repeated(6));
+ m_ui->entryPasswordLabel->setToolTip({});
+ }
+
+ const QString url = m_currentEntry->webUrl();
+ if (!url.isEmpty()) {
+ // URL is well formed and can be opened in a browser
+ // create a new display url that masks password placeholders
+ // the actual link will use the password
+ m_ui->entryUrlLabel->setRawText(m_currentEntry->displayUrl());
+ m_ui->entryUrlLabel->setUrl(url);
+ } else {
+ // Fallback to the raw url string
+ m_ui->entryUrlLabel->setRawText(m_currentEntry->resolveMultiplePlaceholders(m_currentEntry->url()));
+ m_ui->entryUrlLabel->setUrl({});
+ }
+
+ const TimeInfo entryTime = m_currentEntry->timeInfo();
+ const QString expires = entryTime.expires() ? entryTime.expiryTime().toString(Qt::DefaultLocaleShortDate)
+ : tr("Never");
+ m_ui->entryExpirationLabel->setText(expires);
+}
+
+void DetailsWidget::updateEntryNotesTab()
+{
+ Q_ASSERT(m_currentEntry);
+ const QString notes = m_currentEntry->notes();
+ setTabEnabled(m_ui->entryTabWidget, m_ui->entryNotesTab, !notes.isEmpty());
+ m_ui->entryNotesEdit->setText(m_currentEntry->resolveMultiplePlaceholders(notes));
+}
+
+void DetailsWidget::updateEntryAttributesTab()
+{
+ Q_ASSERT(m_currentEntry);
+ m_ui->entryAttributesEdit->clear();
+ const EntryAttributes* attributes = m_currentEntry->attributes();
+ const QStringList customAttributes = attributes->customKeys();
+ const bool haveAttributes = customAttributes.size() > 0;
+ setTabEnabled(m_ui->entryTabWidget, m_ui->entryAttributesTab, haveAttributes);
+ if (haveAttributes) {
+ QString attributesText;
+ for (const QString& key : customAttributes) {
+ QString value = m_currentEntry->attributes()->value(key);
+ if (m_currentEntry->attributes()->isProtected(key)) {
+ value = "<i>" + tr("[PROTECTED]") + "</i>";
+ }
+ attributesText.append(QString("<b>%1</b>: %2<br/>").arg(key, value));
+ }
+ m_ui->entryAttributesEdit->setText(attributesText);
+ }
+}
+
+void DetailsWidget::updateEntryAttachmentsTab()
+{
+ Q_ASSERT(m_currentEntry);
+ const bool hasAttachments = !m_currentEntry->attachments()->isEmpty();
+ setTabEnabled(m_ui->entryTabWidget, m_ui->entryAttachmentsTab, hasAttachments);
+ m_ui->entryAttachmentsWidget->setEntryAttachments(m_currentEntry->attachments());
+}
+
+void DetailsWidget::updateEntryAutotypeTab()
+{
+ Q_ASSERT(m_currentEntry);
+ m_ui->entryAutotypeTree->clear();
+ QList<QTreeWidgetItem*> items;
+ const AutoTypeAssociations* autotypeAssociations = m_currentEntry->autoTypeAssociations();
+ const auto associations = autotypeAssociations->getAll();
+ for (const auto& assoc : associations) {
+ const QString sequence = assoc.sequence.isEmpty() ? m_currentEntry->effectiveAutoTypeSequence()
+ : assoc.sequence;
+ items.append(new QTreeWidgetItem(m_ui->entryAutotypeTree, {assoc.window, sequence}));
+ }
+
+ m_ui->entryAutotypeTree->addTopLevelItems(items);
+ setTabEnabled(m_ui->entryTabWidget, m_ui->entryAutotypeTab, !items.isEmpty());
+}
+
+void DetailsWidget::updateGroupHeaderLine()
+{
+ Q_ASSERT(m_currentGroup);
+ m_ui->groupTitleLabel->setRawText(hierarchy(m_currentGroup, {}));
+ m_ui->groupIcon->setPixmap(preparePixmap(m_currentGroup->iconPixmap(), 32));
+}
+
+void DetailsWidget::updateGroupGeneralTab()
+{
+ Q_ASSERT(m_currentGroup);
+ const QString searchingText = m_currentGroup->resolveSearchingEnabled() ? tr("Enabled") : tr("Disabled");
+ m_ui->groupSearchingLabel->setText(searchingText);
+
+ const QString autotypeText = m_currentGroup->resolveAutoTypeEnabled() ? tr("Enabled") : tr("Disabled");
+ m_ui->groupAutotypeLabel->setText(autotypeText);
+
+ const TimeInfo groupTime = m_currentGroup->timeInfo();
+ const QString expiresText = groupTime.expires() ? groupTime.expiryTime().toString(Qt::DefaultLocaleShortDate)
+ : tr("Never");
+ m_ui->groupExpirationLabel->setText(expiresText);
+}
+
+void DetailsWidget::updateGroupNotesTab()
+{
+ Q_ASSERT(m_currentGroup);
+ const QString notes = m_currentGroup->notes();
+ setTabEnabled(m_ui->groupTabWidget, m_ui->groupNotesTab, !notes.isEmpty());
+ m_ui->groupNotesEdit->setText(notes);
+}
+
+void DetailsWidget::stopTotpTimer()
+{
+ if (m_totpTimer) {
+ m_totpTimer->stop();
+ }
+}
+
+void DetailsWidget::deleteTotpTimer()
+{
+ if (m_totpTimer) {
+ delete m_totpTimer;
+ }
+}
+
+void DetailsWidget::updateTotpLabel()
+{
+ if (!m_locked && m_currentEntry) {
+ const QString totpCode = m_currentEntry->totp();
+ const QString firstHalf = totpCode.left(totpCode.size() / 2);
+ const QString secondHalf = totpCode.mid(totpCode.size() / 2);
+ m_ui->entryTotpLabel->setText(firstHalf + " " + secondHalf);
+ } else {
+ m_ui->entryTotpLabel->clear();
+ stopTotpTimer();
+ }
+}
+
+void DetailsWidget::updateTabIndexes()
+{
+ m_selectedTabEntry = m_ui->entryTabWidget->currentIndex();
+ m_selectedTabGroup = m_ui->groupTabWidget->currentIndex();
+}
+
+void DetailsWidget::setTabEnabled(QTabWidget* tabWidget, QWidget* widget, bool enabled)
+{
+ const int tabIndex = tabWidget->indexOf(widget);
+ Q_ASSERT(tabIndex != -1);
+ tabWidget->setTabEnabled(tabIndex, enabled);
+}
+
+QPixmap DetailsWidget::preparePixmap(const QPixmap& pixmap, int size)
+{
+ if (pixmap.width() > size || pixmap.height() > size) {
+ return pixmap.scaled(size, size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ }
+ return pixmap;
+}
+
+QString DetailsWidget::hierarchy(const Group* group, const QString& title)
+{
+ const QString separator(" / ");
+ QStringList hierarchy = group->hierarchy();
+ hierarchy.removeFirst();
+ hierarchy.append(title);
+ return QString("%1%2").arg(separator, hierarchy.join(separator));
+}
diff --git a/src/gui/DetailsWidget.h b/src/gui/DetailsWidget.h
new file mode 100644
index 000000000..abec33400
--- /dev/null
+++ b/src/gui/DetailsWidget.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_DETAILSWIDGET_H
+#define KEEPASSX_DETAILSWIDGET_H
+
+#include "gui/DatabaseWidget.h"
+
+#include <QWidget>
+
+namespace Ui {
+ class DetailsWidget;
+}
+
+class DetailsWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit DetailsWidget(QWidget* parent = nullptr);
+ ~DetailsWidget();
+
+public slots:
+ void setEntry(Entry* selectedEntry);
+ void setGroup(Group* selectedGroup);
+ void setDatabaseMode(DatabaseWidget::Mode mode);
+
+signals:
+ void errorOccurred(const QString& error);
+
+private slots:
+ void updateEntryHeaderLine();
+ void updateEntryTotp();
+ void updateEntryGeneralTab();
+ void updateEntryNotesTab();
+ void updateEntryAttributesTab();
+ void updateEntryAttachmentsTab();
+ void updateEntryAutotypeTab();
+
+ void updateGroupHeaderLine();
+ void updateGroupGeneralTab();
+ void updateGroupNotesTab();
+
+ void stopTotpTimer();
+ void deleteTotpTimer();
+ void updateTotpLabel();
+ void updateTabIndexes();
+
+private:
+ void setTabEnabled(QTabWidget* tabWidget, QWidget* widget, bool enabled);
+
+ static QPixmap preparePixmap(const QPixmap& pixmap, int size);
+ static QString hierarchy(const Group* group, const QString& title);
+
+ const QScopedPointer<Ui::DetailsWidget> m_ui;
+ bool m_locked;
+ Entry* m_currentEntry;
+ Group* m_currentGroup;
+ quint8 m_step;
+ QPointer<QTimer> m_totpTimer;
+ quint8 m_selectedTabEntry;
+ quint8 m_selectedTabGroup;
+};
+
+#endif // KEEPASSX_DETAILSWIDGET_H
diff --git a/src/gui/DetailsWidget.ui b/src/gui/DetailsWidget.ui
new file mode 100644
index 000000000..53787d713
--- /dev/null
+++ b/src/gui/DetailsWidget.ui
@@ -0,0 +1,734 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DetailsWidget</class>
+ <widget class="QWidget" name="DetailsWidget">
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QStackedWidget" name="stackedWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="pageEntry">
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="entryHorizontalLayout" stretch="0,0,0,0,0">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <property name="leftMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="entryIcon">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="ElidedLabel" name="entryTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>12</pointsize>
+ </font>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::AutoText</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="entryTotpWidget" native="true">
+ <layout class="QGridLayout" name="gridLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="entryTotpLabel">
+ <property name="font">
+ <font>
+ <pointsize>10</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="entryTotpButton">
+ <property name="toolTip">
+ <string>Generate TOTP Token</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="entryCloseButton">
+ <property name="toolTip">
+ <string>Close</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QTabWidget" name="entryTabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <property name="documentMode">
+ <bool>false</bool>
+ </property>
+ <property name="tabsClosable">
+ <bool>false</bool>
+ </property>
+ <property name="movable">
+ <bool>false</bool>
+ </property>
+ <widget class="QWidget" name="entryGeneralTab">
+ <attribute name="title">
+ <string>General</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <item>
+ <widget class="QWidget" name="entryGeneralWidget" native="true">
+ <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0" columnstretch="0,0,0">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item row="1" column="2">
+ <widget class="ElidedLabel" name="entryPasswordLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>0</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="ElidedLabel" name="entryUrlLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="cursor">
+ <cursorShape>PointingHandCursor</cursorShape>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="entryUsernameLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="textInteractionFlags">
+ <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="entryUsernameTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="text">
+ <string>Username</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="entryExpirationTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Expiration</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QLabel" name="entryExpirationLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="entryUrlTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>URL</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <spacer name="entryLeftHorizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="entryPasswordTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Password</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="entryAttributesTab">
+ <attribute name="title">
+ <string>Attributes</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QTextEdit" name="entryAttributesEdit">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="entryAttachmentsTab">
+ <attribute name="title">
+ <string>Attachments</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="EntryAttachmentsWidget" name="entryAttachmentsWidget" native="true"/>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="entryNotesTab">
+ <attribute name="title">
+ <string>Notes</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QTextEdit" name="entryNotesEdit">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="entryAutotypeTab">
+ <attribute name="title">
+ <string>Autotype</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QTreeWidget" name="entryAutotypeTree">
+ <property name="frameShadow">
+ <enum>QFrame::Sunken</enum>
+ </property>
+ <property name="showDropIndicator" stdset="0">
+ <bool>true</bool>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>true</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ <property name="columnCount">
+ <number>2</number>
+ </property>
+ <attribute name="headerCascadingSectionResizes">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="headerDefaultSectionSize">
+ <number>250</number>
+ </attribute>
+ <attribute name="headerMinimumSectionSize">
+ <number>50</number>
+ </attribute>
+ <attribute name="headerStretchLastSection">
+ <bool>true</bool>
+ </attribute>
+ <column>
+ <property name="text">
+ <string>Window</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Sequence</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="pageGroup">
+ <layout class="QVBoxLayout" name="verticalLayout_13">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="groupHorizontalLayout" stretch="0,0,0">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <property name="leftMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="groupIcon">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="ElidedLabel" name="groupTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>12</pointsize>
+ </font>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::AutoText</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="groupCloseButton">
+ <property name="toolTip">
+ <string>Close</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QTabWidget" name="groupTabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <property name="documentMode">
+ <bool>false</bool>
+ </property>
+ <property name="tabsClosable">
+ <bool>false</bool>
+ </property>
+ <property name="movable">
+ <bool>false</bool>
+ </property>
+ <widget class="QWidget" name="groupGeneralTab">
+ <attribute name="title">
+ <string>General</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_8">
+ <item>
+ <widget class="QWidget" name="groupGeneralWidget" native="true">
+ <layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,0">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item row="2" column="2">
+ <widget class="QLabel" name="groupExpirationLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="groupExpirationTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Expiration</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="groupAutotypeTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Autotype</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="groupAutotypeLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QLabel" name="groupSearchingLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <spacer name="groupLeftHorizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="groupSearchingTitleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Searching</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="groupNotesTab">
+ <attribute name="title">
+ <string>Notes</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_11">
+ <item>
+ <widget class="QTextEdit" name="groupNotesEdit">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ <action name="searchIcon">
+ <property name="text">
+ <string>Search</string>
+ </property>
+ </action>
+ <action name="clearIcon">
+ <property name="text">
+ <string>Clear</string>
+ </property>
+ </action>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>EntryAttachmentsWidget</class>
+ <extends>QWidget</extends>
+ <header>gui/entry/EntryAttachmentsWidget.h</header>
+ <container>1</container>
+ </customwidget>
+ <customwidget>
+ <class>ElidedLabel</class>
+ <extends>QLabel</extends>
+ <header>gui/widgets/ElidedLabel.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gui/EditWidget.cpp b/src/gui/EditWidget.cpp
index daa2f7922..65c6306e1 100644
--- a/src/gui/EditWidget.cpp
+++ b/src/gui/EditWidget.cpp
@@ -119,7 +119,8 @@ bool EditWidget::readOnly() const
void EditWidget::showMessage(const QString& text, MessageWidget::MessageType type)
{
- m_ui->messageWidget->showMessage(text, type);
+ m_ui->messageWidget->setCloseButtonVisible(false);
+ m_ui->messageWidget->showMessage(text, type, 2000);
}
void EditWidget::hideMessage()
diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp
index 7c01b31f1..1c33150b5 100644
--- a/src/gui/EditWidgetIcons.cpp
+++ b/src/gui/EditWidgetIcons.cpp
@@ -30,11 +30,10 @@
#include "gui/IconModels.h"
#include "gui/MessageBox.h"
-#ifdef WITH_XC_HTTP
-#include "http/qhttp/qhttpclient.hpp"
-#include "http/qhttp/qhttpclientresponse.hpp"
-
-using namespace qhttp::client;
+#ifdef WITH_XC_NETWORKING
+#include <curl/curl.h>
+#include "core/AsyncTask.h"
+#undef MessageBox
#endif
IconStruct::IconStruct()
@@ -49,11 +48,6 @@ EditWidgetIcons::EditWidgetIcons(QWidget* parent)
, m_database(nullptr)
, m_defaultIconModel(new DefaultIconModel(this))
, m_customIconModel(new CustomIconModel(this))
- #ifdef WITH_XC_HTTP
- , m_fallbackToGoogle(true)
- , m_redirectCount(0)
- , m_httpClient(nullptr)
- #endif
{
m_ui->setupUi(this);
@@ -89,17 +83,14 @@ IconStruct EditWidgetIcons::state()
QModelIndex index = m_ui->defaultIconsView->currentIndex();
if (index.isValid()) {
iconStruct.number = index.row();
- }
- else {
+ } else {
Q_ASSERT(false);
}
- }
- else {
+ } else {
QModelIndex index = m_ui->customIconsView->currentIndex();
if (index.isValid()) {
iconStruct.uuid = m_customIconModel->uuidFromIndex(m_ui->customIconsView->currentIndex());
- }
- else {
+ } else {
iconStruct.number = -1;
}
}
@@ -130,14 +121,12 @@ void EditWidgetIcons::load(const Uuid& currentUuid, Database* database, const Ic
int iconNumber = iconStruct.number;
m_ui->defaultIconsView->setCurrentIndex(m_defaultIconModel->index(iconNumber, 0));
m_ui->defaultIconsRadio->setChecked(true);
- }
- else {
+ } else {
QModelIndex index = m_customIconModel->indexFromUuid(iconUuid);
if (index.isValid()) {
m_ui->customIconsView->setCurrentIndex(index);
m_ui->customIconsRadio->setChecked(true);
- }
- else {
+ } else {
m_ui->defaultIconsView->setCurrentIndex(m_defaultIconModel->index(0, 0));
m_ui->defaultIconsRadio->setChecked(true);
}
@@ -146,10 +135,9 @@ void EditWidgetIcons::load(const Uuid& currentUuid, Database* database, const Ic
void EditWidgetIcons::setUrl(const QString& url)
{
-#ifdef WITH_XC_HTTP
+#ifdef WITH_XC_NETWORKING
m_url = url;
m_ui->faviconButton->setVisible(!url.isEmpty());
- resetFaviconDownload();
#else
Q_UNUSED(url);
m_ui->faviconButton->setVisible(false);
@@ -158,108 +146,83 @@ void EditWidgetIcons::setUrl(const QString& url)
void EditWidgetIcons::downloadFavicon()
{
-#ifdef WITH_XC_HTTP
+#ifdef WITH_XC_NETWORKING
+ m_ui->faviconButton->setDisabled(true);
+
QUrl url = QUrl(m_url);
url.setPath("/favicon.ico");
- fetchFavicon(url);
+ // Attempt to simply load the favicon.ico file
+ QImage image = fetchFavicon(url);
+ if (!image.isNull()) {
+ addCustomIcon(image);
+ } else if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool()) {
+ QUrl faviconUrl = QUrl("https://www.google.com/s2/favicons");
+ faviconUrl.setQuery("domain=" + QUrl::toPercentEncoding(url.host()));
+ // Attempt to load favicon from Google
+ image = fetchFavicon(faviconUrl);
+ if (!image.isNull()) {
+ addCustomIcon(image);
+ } else {
+ emit messageEditEntry(tr("Unable to fetch favicon."), MessageWidget::Error);
+ }
+ } else {
+ emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" +
+ tr("Hint: You can enable Google as a fallback under Tools>Settings>Security"),
+ MessageWidget::Error);
+ }
+
+ m_ui->faviconButton->setDisabled(false);
#endif
}
-#ifdef WITH_XC_HTTP
-void EditWidgetIcons::fetchFavicon(const QUrl& url)
+#ifdef WITH_XC_NETWORKING
+namespace {
+std::size_t writeCurlResponse(char* ptr, std::size_t size, std::size_t nmemb, void* data)
{
- if (nullptr == m_httpClient) {
- m_httpClient = new QHttpClient(this);
- }
+ QByteArray* response = static_cast<QByteArray*>(data);
+ std::size_t realsize = size * nmemb;
+ response->append(ptr, realsize);
+ return realsize;
+}
+}
- bool requestMade = m_httpClient->request(qhttp::EHTTP_GET, url, [this, url](QHttpResponse* response) {
- if (m_database == nullptr) {
- return;
+QImage EditWidgetIcons::fetchFavicon(const QUrl& url)
+{
+ QImage image;
+ CURL* curl = curl_easy_init();
+ if (curl) {
+ QByteArray imagedata;
+ QByteArray baUrl = url.url().toLatin1();
+
+ curl_easy_setopt(curl, CURLOPT_URL, baUrl.data());
+ curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 5L);
+ curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
+ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+ curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 5L);
+ curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, &imagedata);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &writeCurlResponse);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
+#ifdef Q_OS_WIN
+ const QDir appDir = QFileInfo(QCoreApplication::applicationFilePath()).absoluteDir();
+ if (appDir.exists("ssl\\certs")) {
+ curl_easy_setopt(curl, CURLOPT_CAINFO, (appDir.absolutePath() + "\\ssl\\certs\\ca-bundle.crt").toLatin1().data());
}
+#endif
- response->collectData();
- response->onEnd([this, response, &url]() {
- int status = response->status();
- if (200 == status) {
- QImage image;
- image.loadFromData(response->collectedData());
-
- if (!image.isNull()) {
- addCustomIcon(image);
- resetFaviconDownload();
- } else {
- fetchFaviconFromGoogle(url.host());
- }
- } else if (301 == status || 302 == status) {
- // Check if server has sent a redirect
- QUrl possibleRedirectUrl(response->headers().value("location", ""));
- if (!possibleRedirectUrl.isEmpty() && possibleRedirectUrl != m_redirectUrl && m_redirectCount < 3) {
- resetFaviconDownload(false);
- m_redirectUrl = possibleRedirectUrl;
- ++m_redirectCount;
- fetchFavicon(m_redirectUrl);
- } else {
- // website is trying to redirect to itself or
- // maximum number of redirects has been reached, fall back to Google
- fetchFaviconFromGoogle(url.host());
- }
- } else {
- fetchFaviconFromGoogle(url.host());
- }
+ // Perform the request in another thread
+ CURLcode result = AsyncTask::runAndWaitForFuture([curl]() {
+ return curl_easy_perform(curl);
});
- });
- if (!requestMade) {
- resetFaviconDownload();
- return;
- }
-
- m_httpClient->setConnectingTimeOut(5000, [this]() {
- QUrl tempurl = QUrl(m_url);
- if (tempurl.scheme() == "http") {
- resetFaviconDownload();
- emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" +
- tr("Hint: You can enable Google as a fallback under Tools>Settings>Security"),
- MessageWidget::Error);
- } else {
- tempurl.setScheme("http");
- m_url = tempurl.url();
- tempurl.setPath("/favicon.ico");
- fetchFavicon(tempurl);
+ if (result == CURLE_OK) {
+ image.loadFromData(imagedata);
}
- });
-
- m_ui->faviconButton->setDisabled(true);
-}
-
-void EditWidgetIcons::fetchFaviconFromGoogle(const QString& domain)
-{
- if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool() && m_fallbackToGoogle) {
- resetFaviconDownload();
- m_fallbackToGoogle = false;
- QUrl faviconUrl = QUrl("https://www.google.com/s2/favicons");
- faviconUrl.setQuery("domain=" + QUrl::toPercentEncoding(domain));
- fetchFavicon(faviconUrl);
- } else {
- resetFaviconDownload();
- emit messageEditEntry(tr("Unable to fetch favicon."), MessageWidget::Error);
- }
-}
-void EditWidgetIcons::resetFaviconDownload(bool clearRedirect)
-{
- if (clearRedirect) {
- m_redirectUrl.clear();
- m_redirectCount = 0;
+ curl_easy_cleanup(curl);
}
- if (nullptr != m_httpClient) {
- m_httpClient->deleteLater();
- m_httpClient = nullptr;
- }
-
- m_fallbackToGoogle = true;
- m_ui->faviconButton->setDisabled(false);
+ return image;
}
#endif
@@ -282,7 +245,7 @@ void EditWidgetIcons::addCustomIconFromFile()
}
}
-void EditWidgetIcons::addCustomIcon(const QImage &icon)
+void EditWidgetIcons::addCustomIcon(const QImage& icon)
{
if (m_database) {
Uuid uuid = m_database->metadata()->findCustomIcon(icon);
@@ -393,8 +356,7 @@ void EditWidgetIcons::updateWidgetsDefaultIcons(bool check)
QModelIndex index = m_ui->defaultIconsView->currentIndex();
if (!index.isValid()) {
m_ui->defaultIconsView->setCurrentIndex(m_defaultIconModel->index(0, 0));
- }
- else {
+ } else {
m_ui->defaultIconsView->setCurrentIndex(index);
}
m_ui->customIconsView->selectionModel()->clearSelection();
@@ -409,8 +371,7 @@ void EditWidgetIcons::updateWidgetsCustomIcons(bool check)
QModelIndex index = m_ui->customIconsView->currentIndex();
if (!index.isValid()) {
m_ui->customIconsView->setCurrentIndex(m_customIconModel->index(0, 0));
- }
- else {
+ } else {
m_ui->customIconsView->setCurrentIndex(index);
}
m_ui->defaultIconsView->selectionModel()->clearSelection();
diff --git a/src/gui/EditWidgetIcons.h b/src/gui/EditWidgetIcons.h
index 5c27ffe29..7b5edf80c 100644
--- a/src/gui/EditWidgetIcons.h
+++ b/src/gui/EditWidgetIcons.h
@@ -32,14 +32,6 @@ class Database;
class DefaultIconModel;
class CustomIconModel;
-#ifdef WITH_XC_HTTP
-namespace qhttp {
- namespace client {
- class QHttpClient;
- }
-}
-#endif
-
namespace Ui {
class EditWidgetIcons;
}
@@ -73,10 +65,8 @@ signals:
private slots:
void downloadFavicon();
-#ifdef WITH_XC_HTTP
- void fetchFavicon(const QUrl& url);
- void fetchFaviconFromGoogle(const QString& domain);
- void resetFaviconDownload(bool clearRedirect = true);
+#ifdef WITH_XC_NETWORKING
+ QImage fetchFavicon(const QUrl& url);
#endif
void addCustomIconFromFile();
void addCustomIcon(const QImage& icon);
@@ -93,12 +83,6 @@ private:
QString m_url;
DefaultIconModel* const m_defaultIconModel;
CustomIconModel* const m_customIconModel;
-#ifdef WITH_XC_HTTP
- QUrl m_redirectUrl;
- bool m_fallbackToGoogle;
- unsigned short m_redirectCount;
- qhttp::client::QHttpClient* m_httpClient;
-#endif
Q_DISABLE_COPY(EditWidgetIcons)
};
diff --git a/src/gui/EditWidgetProperties.cpp b/src/gui/EditWidgetProperties.cpp
index a278d6cb3..a06928c46 100644
--- a/src/gui/EditWidgetProperties.cpp
+++ b/src/gui/EditWidgetProperties.cpp
@@ -17,21 +17,30 @@
#include "EditWidgetProperties.h"
#include "ui_EditWidgetProperties.h"
+#include "MessageBox.h"
EditWidgetProperties::EditWidgetProperties(QWidget* parent)
: QWidget(parent)
, m_ui(new Ui::EditWidgetProperties())
+ , m_customData(new CustomData(this))
+ , m_customDataModel(new QStandardItemModel(this))
{
m_ui->setupUi(this);
+ m_ui->removeCustomDataButton->setEnabled(false);
+ m_ui->customDataTable->setModel(m_customDataModel);
+
+ connect(m_ui->customDataTable->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+ SLOT(toggleRemoveButton(QItemSelection)));
+ connect(m_ui->removeCustomDataButton, SIGNAL(clicked()), SLOT(removeSelectedPluginData()));
}
EditWidgetProperties::~EditWidgetProperties()
{
}
-void EditWidgetProperties::setFields(TimeInfo timeInfo, Uuid uuid)
+void EditWidgetProperties::setFields(const TimeInfo& timeInfo, const Uuid& uuid)
{
- QString timeFormat("d MMM yyyy HH:mm:ss");
+ static const QString timeFormat("d MMM yyyy HH:mm:ss");
m_ui->modifiedEdit->setText(
timeInfo.lastModificationTime().toLocalTime().toString(timeFormat));
m_ui->createdEdit->setText(
@@ -40,3 +49,56 @@ void EditWidgetProperties::setFields(TimeInfo timeInfo, Uuid uuid)
timeInfo.lastAccessTime().toLocalTime().toString(timeFormat));
m_ui->uuidEdit->setText(uuid.toHex());
}
+
+void EditWidgetProperties::setCustomData(const CustomData* customData)
+{
+ Q_ASSERT(customData);
+ m_customData->copyDataFrom(customData);
+
+ updateModel();
+}
+
+const CustomData* EditWidgetProperties::customData() const
+{
+ return m_customData;
+}
+
+void EditWidgetProperties::removeSelectedPluginData()
+{
+ if (QMessageBox::Yes != MessageBox::question(this,
+ tr("Delete plugin data?"),
+ tr("Do you really want to delete the selected plugin data?\n"
+ "This may cause the affected plugins to malfunction."),
+ QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel)) {
+ return;
+ }
+
+ const QItemSelectionModel* itemSelectionModel = m_ui->customDataTable->selectionModel();
+ if (itemSelectionModel) {
+ for (const QModelIndex& index : itemSelectionModel->selectedRows(0)) {
+ const QString key = index.data().toString();
+ m_customData->remove(key);
+ }
+ updateModel();
+ }
+}
+
+void EditWidgetProperties::toggleRemoveButton(const QItemSelection& selected)
+{
+ m_ui->removeCustomDataButton->setEnabled(!selected.isEmpty());
+}
+
+void EditWidgetProperties::updateModel()
+{
+ m_customDataModel->clear();
+
+ m_customDataModel->setHorizontalHeaderLabels({tr("Key"), tr("Value")});
+
+ for (const QString& key : m_customData->keys()) {
+ m_customDataModel->appendRow(QList<QStandardItem*>()
+ << new QStandardItem(key)
+ << new QStandardItem(m_customData->value(key)));
+ }
+
+ m_ui->removeCustomDataButton->setEnabled(false);
+}
diff --git a/src/gui/EditWidgetProperties.h b/src/gui/EditWidgetProperties.h
index 4a2c05917..a1fd198d7 100644
--- a/src/gui/EditWidgetProperties.h
+++ b/src/gui/EditWidgetProperties.h
@@ -18,8 +18,12 @@
#ifndef KEEPASSX_EDITWIDGETPROPERTIES_H
#define KEEPASSX_EDITWIDGETPROPERTIES_H
+#include <QStandardItemModel>
+#include <QItemSelection>
+#include <QPointer>
#include <QWidget>
+#include "core/CustomData.h"
#include "core/TimeInfo.h"
#include "core/Uuid.h"
@@ -35,11 +39,22 @@ public:
explicit EditWidgetProperties(QWidget* parent = nullptr);
~EditWidgetProperties();
- void setFields(TimeInfo timeInfo, Uuid uuid);
+ void setFields(const TimeInfo& timeInfo, const Uuid& uuid);
+ void setCustomData(const CustomData* customData);
+
+ const CustomData* customData() const;
+
+private slots:
+ void removeSelectedPluginData();
+ void toggleRemoveButton(const QItemSelection& selected);
private:
+ void updateModel();
+
const QScopedPointer<Ui::EditWidgetProperties> m_ui;
+ QPointer<CustomData> m_customData;
+ QPointer<QStandardItemModel> m_customDataModel;
Q_DISABLE_COPY(EditWidgetProperties)
};
diff --git a/src/gui/EditWidgetProperties.ui b/src/gui/EditWidgetProperties.ui
index bf49cc925..f97562661 100644
--- a/src/gui/EditWidgetProperties.ui
+++ b/src/gui/EditWidgetProperties.ui
@@ -10,9 +10,12 @@
<height>328</height>
</rect>
</property>
- <layout class="QFormLayout" name="formLayout">
- <property name="fieldGrowthPolicy">
- <enum>QFormLayout::ExpandingFieldsGrow</enum>
+ <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0">
+ <property name="spacing">
+ <number>5</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
</property>
<property name="topMargin">
<number>0</number>
@@ -23,72 +26,128 @@
<property name="bottomMargin">
<number>0</number>
</property>
- <item row="1" column="1">
- <widget class="QLineEdit" name="createdEdit">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="readOnly">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QLineEdit" name="modifiedEdit">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="readOnly">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Created:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Modified:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Accessed:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
- <widget class="QLineEdit" name="accessedEdit">
- <property name="readOnly">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Uuid:</string>
- </property>
- </widget>
+ <item>
+ <layout class="QFormLayout" name="formLayout_2">
+ <item row="1" column="0">
+ <widget class="QLabel" name="labelCreated">
+ <property name="text">
+ <string>Created:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="createdEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="labelModfied">
+ <property name="text">
+ <string>Modified:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="modifiedEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="labelAccessed">
+ <property name="text">
+ <string>Accessed:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="accessedEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="labelUuid">
+ <property name="text">
+ <string>Uuid:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QLineEdit" name="uuidEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
</item>
- <item row="4" column="1">
- <widget class="QLineEdit" name="uuidEdit">
- <property name="readOnly">
- <bool>true</bool>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Plugin Data</string>
</property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QTableView" name="customDataTable">
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <attribute name="horizontalHeaderDefaultSectionSize">
+ <number>200</number>
+ </attribute>
+ <attribute name="horizontalHeaderStretchLastSection">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QPushButton" name="removeCustomDataButton">
+ <property name="text">
+ <string>Remove</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
</item>
</layout>
diff --git a/src/gui/FileDialog.cpp b/src/gui/FileDialog.cpp
index e293db2ba..9f3caf6da 100644
--- a/src/gui/FileDialog.cpp
+++ b/src/gui/FileDialog.cpp
@@ -27,7 +27,7 @@ QString FileDialog::getOpenFileName(QWidget* parent, const QString& caption, QSt
{
if (!m_nextFileName.isEmpty()) {
QString result = m_nextFileName;
- m_nextFileName = "";
+ m_nextFileName.clear();
return result;
}
else {
@@ -43,11 +43,37 @@ QString FileDialog::getOpenFileName(QWidget* parent, const QString& caption, QSt
parent->activateWindow();
}
- if (!result.isEmpty()) {
- config()->set("LastDir", QFileInfo(result).absolutePath());
+ saveLastDir(result);
+ return result;
+ }
+}
+
+QStringList FileDialog::getOpenFileNames(QWidget *parent, const QString &caption, QString dir,
+ const QString &filter, QString *selectedFilter,
+ QFileDialog::Options options)
+{
+ if (!m_nextFileNames.isEmpty()) {
+ QStringList results = m_nextFileNames;
+ m_nextFileNames.clear();
+ return results;
+ }
+ else {
+ if (dir.isEmpty()) {
+ dir = config()->get("LastDir").toString();
}
- return result;
+ QStringList results = QFileDialog::getOpenFileNames(parent, caption, dir, filter,
+ selectedFilter, options);
+
+ // on Mac OS X the focus is lost after closing the native dialog
+ if (parent) {
+ parent->activateWindow();
+ }
+
+ if (!results.isEmpty()) {
+ saveLastDir(results[0]);
+ }
+ return results;
}
}
@@ -57,7 +83,7 @@ QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, QSt
{
if (!m_nextFileName.isEmpty()) {
QString result = m_nextFileName;
- m_nextFileName = "";
+ m_nextFileName.clear();
return result;
}
else {
@@ -95,12 +121,34 @@ QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, QSt
parent->activateWindow();
}
- if (!result.isEmpty()) {
- config()->set("LastDir", QFileInfo(result).absolutePath());
- }
+ saveLastDir(result);
+ return result;
+ }
+}
+QString FileDialog::getExistingDirectory(QWidget *parent, const QString &caption, QString dir,
+ QFileDialog::Options options)
+{
+ if (!m_nextDirName.isEmpty()) {
+ QString result = m_nextDirName;
+ m_nextDirName.clear();
return result;
}
+ else {
+ if (dir.isEmpty()) {
+ dir = config()->get("LastDir").toString();
+ }
+
+ dir = QFileDialog::getExistingDirectory(parent, caption, dir, options);
+
+ // on Mac OS X the focus is lost after closing the native dialog
+ if (parent) {
+ parent->activateWindow();
+ }
+
+ saveLastDir(dir);
+ return dir;
+ }
}
void FileDialog::setNextFileName(const QString& fileName)
@@ -108,10 +156,33 @@ void FileDialog::setNextFileName(const QString& fileName)
m_nextFileName = fileName;
}
+void FileDialog::setNextFileNames(const QStringList &fileNames)
+{
+ m_nextFileNames = fileNames;
+}
+
+void FileDialog::setNextDirName(const QString &dirName)
+{
+ m_nextDirName = dirName;
+}
+
+void FileDialog::setNextForgetDialog()
+{
+ m_forgetLastDir = true;
+}
+
FileDialog::FileDialog()
{
}
+void FileDialog::saveLastDir(QString dir) {
+ if (!dir.isEmpty() && !m_forgetLastDir) {
+ config()->set("LastDir", QFileInfo(dir).absolutePath());
+ }
+
+ m_forgetLastDir = false;
+}
+
FileDialog* FileDialog::instance()
{
if (!m_instance) {
diff --git a/src/gui/FileDialog.h b/src/gui/FileDialog.h
index 9f8fbb547..9a57a9218 100644
--- a/src/gui/FileDialog.h
+++ b/src/gui/FileDialog.h
@@ -26,22 +26,35 @@ public:
QString getOpenFileName(QWidget* parent = nullptr, const QString& caption = QString(),
QString dir = QString(), const QString& filter = QString(),
QString* selectedFilter = nullptr, QFileDialog::Options options = 0);
+ QStringList getOpenFileNames(QWidget* parent = nullptr, const QString& caption = QString(),
+ QString dir = QString(), const QString& filter = QString(),
+ QString* selectedFilter = nullptr, QFileDialog::Options options = 0);
QString getSaveFileName(QWidget* parent = nullptr, const QString& caption = QString(),
QString dir = QString(), const QString& filter = QString(),
QString* selectedFilter = nullptr, QFileDialog::Options options = 0,
const QString& defaultExtension = QString());
+ QString getExistingDirectory(QWidget* parent = nullptr, const QString& caption = QString(),
+ QString dir = QString(), QFileDialog::Options options = QFileDialog::ShowDirsOnly);
+ void setNextForgetDialog();
/**
* Sets the result of the next get* method call.
* Use only for testing.
*/
void setNextFileName(const QString& fileName);
+ void setNextFileNames(const QStringList& fileNames);
+ void setNextDirName(const QString& dirName);
static FileDialog* instance();
private:
FileDialog();
QString m_nextFileName;
+ QStringList m_nextFileNames;
+ QString m_nextDirName;
+ bool m_forgetLastDir = false;
+
+ void saveLastDir(QString);
static FileDialog* m_instance;
diff --git a/src/gui/Font.cpp b/src/gui/Font.cpp
new file mode 100644
index 000000000..3583622dd
--- /dev/null
+++ b/src/gui/Font.cpp
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Font.h"
+
+#include <QFontDatabase>
+
+QFont Font::fixedFont()
+{
+ QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);
+
+#ifdef Q_OS_WIN
+ // try to use Consolas on Windows, because the default Courier New has too many similar characters
+ QFont consolasFont = QFontDatabase().font("Consolas", fixedFont.styleName(), fixedFont.pointSize());
+ const QFont defaultFont;
+ if (fixedFont != defaultFont) {
+ fixedFont = consolasFont;
+ }
+#endif
+
+ return fixedFont;
+}
diff --git a/src/cli/EntropyMeter.h b/src/gui/Font.h
index d160115bf..bfc3d7d36 100644
--- a/src/cli/EntropyMeter.h
+++ b/src/gui/Font.h
@@ -15,13 +15,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSXC_ENTROPYMETER_H
-#define KEEPASSXC_ENTROPYMETER_H
+#ifndef KEEPASSX_FONT_H
+#define KEEPASSX_FONT_H
-class EntropyMeter
+#include <QFont>
+
+class Font
{
public:
- static int execute(int argc, char** argv);
+ static QFont fixedFont();
+private:
+ Font() {}
};
-#endif // KEEPASSXC_ENTROPYMETER_H
+#endif // KEEPASSX_FONT_H
diff --git a/src/gui/KMessageWidget.cpp b/src/gui/KMessageWidget.cpp
index 7f4cb94f4..910f0c91b 100644
--- a/src/gui/KMessageWidget.cpp
+++ b/src/gui/KMessageWidget.cpp
@@ -33,6 +33,7 @@
#include <QTimeLine>
#include <QToolButton>
#include <QStyle>
+#include <QtGui/QBitmap>
//---------------------------------------------------------------------
// KMessageWidgetPrivate
@@ -49,6 +50,7 @@ public:
QToolButton *closeButton;
QTimeLine *timeLine;
QIcon icon;
+ QPixmap closeButtonPixmap;
KMessageWidget::MessageType messageType;
bool wordWrap;
@@ -95,10 +97,11 @@ void KMessageWidgetPrivate::init(KMessageWidget *q_ptr)
closeAction->setIcon(FilePath::instance()->icon("actions", "message-close", false));
QObject::connect(closeAction, SIGNAL(triggered(bool)), q, SLOT(animatedHide()));
-
+
closeButton = new QToolButton(content);
closeButton->setAutoRaise(true);
closeButton->setDefaultAction(closeAction);
+ closeButtonPixmap = QPixmap(closeButton->icon().pixmap(closeButton->icon().actualSize(QSize(16, 16))));
#ifdef Q_OS_MAC
closeButton->setStyleSheet("QToolButton { background: transparent;"
"border-radius: 2px; padding: 3px; }"
@@ -256,49 +259,42 @@ KMessageWidget::MessageType KMessageWidget::messageType() const
return d->messageType;
}
-static QColor darkShade(QColor c)
-{
- qreal contrast = 0.7; // taken from kcolorscheme for the dark shade
-
- qreal darkAmount;
- if (c.lightnessF() < 0.006) { /* too dark */
- darkAmount = 0.02 + 0.40 * contrast;
- } else if (c.lightnessF() > 0.93) { /* too bright */
- darkAmount = -0.06 - 0.60 * contrast;
- } else {
- darkAmount = (-c.lightnessF()) * (0.55 + contrast * 0.35);
- }
-
- qreal v = c.lightnessF() + darkAmount;
- v = v > 0.0 ? (v < 1.0 ? v : 1.0) : 0.0;
- c.setHsvF(c.hslHueF(), c.hslSaturationF(), v);
- return c;
-}
-
void KMessageWidget::setMessageType(KMessageWidget::MessageType type)
{
d->messageType = type;
- QColor bg0, bg1, bg2, border, fg;
+ QColor bg0, bg1, bg2, border;
+ QColor fg = palette().light().color();
switch (type) {
- case Positive:
- bg1.setRgb(0, 110, 40); // values taken from kcolorscheme.cpp (Positive)
- break;
- case Information:
- bg1 = palette().highlight().color();
- break;
- case Warning:
- bg1.setRgb(181, 102, 0); // values taken from kcolorscheme.cpp (Neutral)
- break;
- case Error:
- bg1.setRgb(191, 3, 3); // values taken from kcolorscheme.cpp (Negative)
- break;
+ case Positive:
+ bg1.setRgb(37, 163, 83);
+ break;
+ case Information:
+ bg1.setRgb(24, 187, 242);
+ break;
+ case Warning:
+ bg1.setRgb(252, 193, 57);
+ fg = palette().foreground().color();
+ break;
+ case Error:
+ bg1.setRgb(198, 69, 21);
+ break;
}
-
+
// Colors
- fg = palette().light().color();
- bg0 = bg1.lighter(110);
- bg2 = bg1.darker(110);
- border = darkShade(bg1);
+ bg0 = bg1.lighter(105);
+ bg2 = bg1.darker(105);
+ border = bg1.darker(115);
+
+ // Tint close icon
+ auto closeButtonPixmap = d->closeButtonPixmap;
+ QPixmap mask(closeButtonPixmap);
+ QPainter painter;
+ painter.begin(&closeButtonPixmap);
+ painter.setRenderHints(QPainter::HighQualityAntialiasing);
+ painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ painter.fillRect(QRect(0, 0, 16, 16), fg);
+ painter.end();
+ d->closeButton->setIcon(closeButtonPixmap);
d->content->setStyleSheet(
QString(QLatin1String(".QFrame {"
@@ -306,10 +302,10 @@ void KMessageWidget::setMessageType(KMessageWidget::MessageType type)
" stop: 0 %1,"
" stop: 0.1 %2,"
" stop: 1.0 %3);"
- "border-radius: 5px;"
- "border: 1px solid %4;"
- "margin: %5px;"
- "padding: 5px;"
+ " border-radius: 2px;"
+ " border: 1px solid %4;"
+ " margin: %5px;"
+ " padding: 5px;"
"}"
".QLabel { color: %6; }"
))
@@ -317,8 +313,9 @@ void KMessageWidget::setMessageType(KMessageWidget::MessageType type)
.arg(bg1.name())
.arg(bg2.name())
.arg(border.name())
- // DefaultFrameWidth returns the size of the external margin + border width. We know our border is 1px, so we subtract this from the frame normal QStyle FrameWidth to get our margin
- .arg(style()->pixelMetric(QStyle::PM_DefaultFrameWidth, 0, this) - 1)
+ // DefaultFrameWidth returns the size of the external margin + border width. We know our border is 1px,
+ // so we subtract this from the frame normal QStyle FrameWidth to get our margin
+ .arg(style()->pixelMetric(QStyle::PM_DefaultFrameWidth, nullptr, this) - 1)
.arg(fg.name())
);
}
diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp
index e37a7d28c..76f1ffb60 100644
--- a/src/gui/MainWindow.cpp
+++ b/src/gui/MainWindow.cpp
@@ -20,14 +20,10 @@
#include "ui_MainWindow.h"
#include <QCloseEvent>
+#include <QMimeData>
#include <QShortcut>
#include <QTimer>
-#if defined(Q_OS_LINUX) && ! defined(QT_NO_DBUS)
-#include <QList>
-#include <QtDBus/QtDBus>
-#endif
-
#include "config-keepassx.h"
#include "autotype/AutoType.h"
@@ -49,6 +45,23 @@
#include "http/OptionDialog.h"
#endif
+#ifdef WITH_XC_SSHAGENT
+#include "sshagent/AgentSettingsPage.h"
+#include "sshagent/SSHAgent.h"
+#endif
+
+#ifdef WITH_XC_BROWSER
+#include "browser/NativeMessagingHost.h"
+#include "browser/BrowserSettings.h"
+#include "browser/BrowserOptionDialog.h"
+#endif
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) && !defined(QT_NO_DBUS)
+#include <QList>
+#include <QtDBus/QtDBus>
+#include "gui/MainWindowAdaptor.h"
+#endif
+
#include "gui/SettingsWidget.h"
#include "gui/PasswordGeneratorWidget.h"
@@ -56,7 +69,7 @@
class HttpPlugin: public ISettingsPage
{
public:
- HttpPlugin(DatabaseTabWidget * tabWidget)
+ HttpPlugin(DatabaseTabWidget* tabWidget)
{
m_service = new Service(tabWidget);
}
@@ -65,7 +78,7 @@ public:
QString name() override
{
- return QObject::tr("Browser Integration");
+ return QObject::tr("Legacy Browser Integration");
}
QIcon icon() override
@@ -75,18 +88,18 @@ public:
QWidget * createWidget() override
{
- OptionDialog * dlg = new OptionDialog();
+ OptionDialog* dlg = new OptionDialog();
QObject::connect(dlg, SIGNAL(removeSharedEncryptionKeys()), m_service, SLOT(removeSharedEncryptionKeys()));
QObject::connect(dlg, SIGNAL(removeStoredPermissions()), m_service, SLOT(removeStoredPermissions()));
return dlg;
}
- void loadSettings(QWidget * widget) override
+ void loadSettings(QWidget* widget) override
{
qobject_cast<OptionDialog*>(widget)->loadSettings();
}
- void saveSettings(QWidget * widget) override
+ void saveSettings(QWidget* widget) override
{
qobject_cast<OptionDialog*>(widget)->saveSettings();
if (HttpSettings::isEnabled())
@@ -95,7 +108,55 @@ public:
m_service->stop();
}
private:
- Service *m_service;
+ Service* m_service;
+};
+#endif
+
+#ifdef WITH_XC_BROWSER
+class BrowserPlugin: public ISettingsPage
+{
+ public:
+ BrowserPlugin(DatabaseTabWidget* tabWidget) {
+ m_nativeMessagingHost = QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget));
+ }
+
+ ~BrowserPlugin() {
+
+ }
+
+ QString name() override
+ {
+ return QObject::tr("Browser Integration");
+ }
+
+ QIcon icon() override
+ {
+ return FilePath::instance()->icon("apps", "internet-web-browser");
+ }
+
+ QWidget* createWidget() override {
+ BrowserOptionDialog* dlg = new BrowserOptionDialog();
+ QObject::connect(dlg, SIGNAL(removeSharedEncryptionKeys()), m_nativeMessagingHost.data(), SLOT(removeSharedEncryptionKeys()));
+ QObject::connect(dlg, SIGNAL(removeStoredPermissions()), m_nativeMessagingHost.data(), SLOT(removeStoredPermissions()));
+ return dlg;
+ }
+
+ void loadSettings(QWidget* widget) override
+ {
+ qobject_cast<BrowserOptionDialog*>(widget)->loadSettings();
+ }
+
+ void saveSettings(QWidget* widget) override
+ {
+ qobject_cast<BrowserOptionDialog*>(widget)->saveSettings();
+ if (BrowserSettings::isEnabled()) {
+ m_nativeMessagingHost->run();
+ } else {
+ m_nativeMessagingHost->stop();
+ }
+ }
+ private:
+ QSharedPointer<NativeMessagingHost> m_nativeMessagingHost;
};
#endif
@@ -108,6 +169,17 @@ MainWindow::MainWindow()
, m_appExiting(false)
{
m_ui->setupUi(this);
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) && !defined(QT_NO_DBUS)
+ new MainWindowAdaptor(this);
+ QDBusConnection dbus = QDBusConnection::sessionBus();
+ dbus.registerObject("/keepassxc", this);
+ dbus.registerService("org.keepassxc.KeePassXC.MainWindow");
+#endif
+
+ setAcceptDrops(true);
+
+ m_ui->toolBar->setContextMenuPolicy(Qt::PreventContextMenu);
// Setup the search widget in the toolbar
SearchWidget *search = new SearchWidget();
@@ -118,18 +190,22 @@ MainWindow::MainWindow()
m_countDefaultAttributes = m_ui->menuEntryCopyAttribute->actions().size();
restoreGeometry(config()->get("GUI/MainWindowGeometry").toByteArray());
- #ifdef WITH_XC_HTTP
+#ifdef WITH_XC_BROWSER
+ m_ui->settingsWidget->addSettingsPage(new BrowserPlugin(m_ui->tabWidget));
+#endif
+#ifdef WITH_XC_HTTP
m_ui->settingsWidget->addSettingsPage(new HttpPlugin(m_ui->tabWidget));
- #endif
+#endif
+#ifdef WITH_XC_SSHAGENT
+ SSHAgent::init(this);
+ m_ui->settingsWidget->addSettingsPage(new AgentSettingsPage(m_ui->tabWidget));
+#endif
setWindowIcon(filePath()->applicationIcon());
m_ui->globalMessageWidget->setHidden(true);
- QAction* toggleViewAction = m_ui->toolBar->toggleViewAction();
- toggleViewAction->setText(tr("Show toolbar"));
- m_ui->menuView->addAction(toggleViewAction);
- bool showToolbar = config()->get("ShowToolbar").toBool();
- m_ui->toolBar->setVisible(showToolbar);
- connect(m_ui->toolBar, SIGNAL(visibilityChanged(bool)), this, SLOT(saveToolbarState(bool)));
+ connect(m_ui->globalMessageWidget, &MessageWidget::linkActivated, &MessageWidget::openHttpUrl);
+ connect(m_ui->globalMessageWidget, SIGNAL(showAnimationStarted()), m_ui->globalMessageWidgetContainer, SLOT(show()));
+ connect(m_ui->globalMessageWidget, SIGNAL(hideAnimationFinished()), m_ui->globalMessageWidgetContainer, SLOT(hide()));
m_clearHistoryAction = new QAction(tr("Clear history"), m_ui->menuFile);
m_lastDatabasesActions = new QActionGroup(m_ui->menuRecentDatabases);
@@ -167,6 +243,7 @@ MainWindow::MainWindow()
setShortcut(m_ui->actionEntryNew, QKeySequence::New, Qt::CTRL + Qt::Key_N);
m_ui->actionEntryEdit->setShortcut(Qt::CTRL + Qt::Key_E);
m_ui->actionEntryDelete->setShortcut(Qt::CTRL + Qt::Key_D);
+ m_ui->actionEntryDelete->setShortcut(Qt::Key_Delete);
m_ui->actionEntryClone->setShortcut(Qt::CTRL + Qt::Key_K);
m_ui->actionEntryTotp->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_T);
m_ui->actionEntryCopyTotp->setShortcut(Qt::CTRL + Qt::Key_T);
@@ -187,7 +264,6 @@ MainWindow::MainWindow()
m_ui->actionChangeMasterKey->setIcon(filePath()->icon("actions", "database-change-key", false));
m_ui->actionLockDatabases->setIcon(filePath()->icon("actions", "document-encrypt", false));
m_ui->actionQuit->setIcon(filePath()->icon("actions", "application-exit"));
- m_ui->actionQuit->setMenuRole(QAction::QuitRole);
m_ui->actionEntryNew->setIcon(filePath()->icon("actions", "entry-new", false));
m_ui->actionEntryClone->setIcon(filePath()->icon("actions", "entry-clone", false));
@@ -196,6 +272,7 @@ MainWindow::MainWindow()
m_ui->actionEntryAutoType->setIcon(filePath()->icon("actions", "auto-type", false));
m_ui->actionEntryCopyUsername->setIcon(filePath()->icon("actions", "username-copy", false));
m_ui->actionEntryCopyPassword->setIcon(filePath()->icon("actions", "password-copy", false));
+ m_ui->actionEntryCopyURL->setIcon(filePath()->icon("actions", "url-copy", false));
m_ui->actionGroupNew->setIcon(filePath()->icon("actions", "group-new", false));
m_ui->actionGroupEdit->setIcon(filePath()->icon("actions", "group-edit", false));
@@ -203,11 +280,9 @@ MainWindow::MainWindow()
m_ui->actionGroupEmptyRecycleBin->setIcon(filePath()->icon("actions", "group-empty-trash", false));
m_ui->actionSettings->setIcon(filePath()->icon("actions", "configure"));
- m_ui->actionSettings->setMenuRole(QAction::PreferencesRole);
m_ui->actionPasswordGenerator->setIcon(filePath()->icon("actions", "password-generator", false));
m_ui->actionAbout->setIcon(filePath()->icon("actions", "help-about"));
- m_ui->actionAbout->setMenuRole(QAction::AboutRole);
m_actionMultiplexer.connect(SIGNAL(currentModeChanged(DatabaseWidget::Mode)),
this, SLOT(setMenuActionState(DatabaseWidget::Mode)));
@@ -343,13 +418,42 @@ MainWindow::MainWindow()
m_ui->globalMessageWidget->showMessage(
tr("Access error for config file %1").arg(config()->getFileName()), MessageWidget::Error);
}
+#ifdef WITH_XC_HTTP
+ if (config()->get("Http/Enabled", false).toBool() && config()->get("Http/DeprecationNoticeShown", 0).toInt() < 3) {
+ // show message after global widget dismissed all messages
+ connect(m_ui->globalMessageWidget, SIGNAL(hideAnimationFinished()), this, SLOT(showKeePassHTTPDeprecationNotice()));
+ }
+#endif
+#ifndef KEEPASSXC_BUILD_TYPE_RELEASE
+ m_ui->globalMessageWidget->showMessage(tr("WARNING: You are using an unstable build of KeePassXC!\n"
+ "There is a high risk of corruption, maintain a backup of your databases.\n"
+ "This version is not meant for production use."),
+ MessageWidget::Warning, -1);
+#else
+ // Show the HTTP deprecation message if enabled above
+ emit m_ui->globalMessageWidget->hideAnimationFinished();
+#endif
}
MainWindow::~MainWindow()
{
}
+void MainWindow::showKeePassHTTPDeprecationNotice()
+{
+ int warningNum = config()->get("Http/DeprecationNoticeShown", 0).toInt();
+ displayGlobalMessage(tr("<p>It looks like you are using KeePassHTTP for browser integration. "
+ "This feature has been deprecated and will be removed in the future.<br>"
+ "Please switch to KeePassXC-Browser instead! For help with migration, "
+ "visit our <a class=\"link\" href=\"https://keepassxc.org/docs/keepassxc-browser-migration\">"
+ "migration guide</a> (warning %1 of 3).</p>").arg(warningNum + 1),
+ MessageWidget::Warning, true, -1);
+
+ config()->set("Http/DeprecationNoticeShown", warningNum + 1);
+ disconnect(m_ui->globalMessageWidget, SIGNAL(hideAnimationFinished()), this, SLOT(showKeePassHTTPDeprecationNotice()));
+}
+
void MainWindow::appExit()
{
m_appExitCalled = true;
@@ -429,13 +533,13 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode)
switch (mode) {
case DatabaseWidget::ViewMode: {
- bool inSearch = dbWidget->isInSearchMode();
+ //bool inSearch = dbWidget->isInSearchMode();
bool singleEntrySelected = dbWidget->numberOfSelectedEntries() == 1;
bool entriesSelected = dbWidget->numberOfSelectedEntries() > 0;
bool groupSelected = dbWidget->isGroupSelected();
bool recycleBinSelected = dbWidget->isRecycleBinSelected();
- m_ui->actionEntryNew->setEnabled(!inSearch);
+ m_ui->actionEntryNew->setEnabled(true);
m_ui->actionEntryClone->setEnabled(singleEntrySelected);
m_ui->actionEntryEdit->setEnabled(singleEntrySelected);
m_ui->actionEntryDelete->setEnabled(entriesSelected);
@@ -458,12 +562,13 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode)
m_ui->actionGroupEmptyRecycleBin->setEnabled(recycleBinSelected);
m_ui->actionChangeMasterKey->setEnabled(true);
m_ui->actionChangeDatabaseSettings->setEnabled(true);
- m_ui->actionDatabaseSave->setEnabled(true);
+ m_ui->actionDatabaseSave->setEnabled(m_ui->tabWidget->canSave());
m_ui->actionDatabaseSaveAs->setEnabled(true);
m_ui->actionExportCsv->setEnabled(true);
m_ui->actionDatabaseMerge->setEnabled(m_ui->tabWidget->currentIndex() != -1);
m_searchWidgetAction->setEnabled(true);
+
break;
}
case DatabaseWidget::EditMode:
@@ -563,6 +668,7 @@ void MainWindow::updateWindowTitle()
if (m_ui->tabWidget->readOnly(tabWidgetIndex)) {
customWindowTitlePart.append(QString(" [%1]").arg(tr("read-only")));
}
+ m_ui->actionDatabaseSave->setEnabled(m_ui->tabWidget->canSave(tabWidgetIndex));
} else if (stackedWidgetIndex == 1) {
customWindowTitlePart = tr("Settings");
}
@@ -729,7 +835,9 @@ void MainWindow::changeEvent(QEvent* event)
void MainWindow::saveWindowInformation()
{
- config()->set("GUI/MainWindowGeometry", saveGeometry());
+ if (isVisible()) {
+ config()->set("GUI/MainWindowGeometry", saveGeometry());
+ }
}
bool MainWindow::saveLastDatabases()
@@ -764,7 +872,6 @@ void MainWindow::updateTrayIcon()
if (isTrayIconEnabled()) {
if (!m_trayIcon) {
m_trayIcon = new QSystemTrayIcon(this);
-
QMenu* menu = new QMenu(this);
QAction* actionToggle = new QAction(tr("Toggle window"), menu);
@@ -784,6 +891,7 @@ void MainWindow::updateTrayIcon()
connect(actionToggle, SIGNAL(triggered()), SLOT(toggleWindow()));
m_trayIcon->setContextMenu(menu);
+
m_trayIcon->setIcon(filePath()->applicationIcon());
m_trayIcon->show();
}
@@ -813,11 +921,6 @@ void MainWindow::showGroupContextMenu(const QPoint& globalPos)
m_ui->menuGroups->popup(globalPos);
}
-void MainWindow::saveToolbarState(bool value)
-{
- config()->set("ShowToolbar", value);
-}
-
void MainWindow::setShortcut(QAction* action, QKeySequence::StandardKey standard, int fallback)
{
if (!QKeySequence::keyBindings(standard).isEmpty()) {
@@ -853,13 +956,14 @@ void MainWindow::applySettingsChanges()
void MainWindow::trayIconTriggered(QSystemTrayIcon::ActivationReason reason)
{
- if (reason == QSystemTrayIcon::Trigger) {
+ if (reason == QSystemTrayIcon::Trigger || reason == QSystemTrayIcon::MiddleClick) {
toggleWindow();
}
}
void MainWindow::hideWindow()
{
+ saveWindowInformation();
#ifndef Q_OS_MAC
setWindowState(windowState() | Qt::WindowMinimized);
#endif
@@ -875,13 +979,9 @@ void MainWindow::toggleWindow()
if ((QApplication::activeWindow() == this) && isVisible() && !isMinimized()) {
hideWindow();
} else {
- ensurePolished();
- setWindowState(windowState() & ~Qt::WindowMinimized);
- show();
- raise();
- activateWindow();
+ bringToFront();
-#if defined(Q_OS_LINUX) && ! defined(QT_NO_DBUS) && (QT_VERSION < QT_VERSION_CHECK(5, 9, 0))
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) && !defined(QT_NO_DBUS) && (QT_VERSION < QT_VERSION_CHECK(5, 9, 0))
// re-register global D-Bus menu (needed on Ubuntu with Unity)
// see https://github.com/keepassxreboot/keepassxc/issues/271
// and https://bugreports.qt.io/browse/QTBUG-58723
@@ -949,16 +1049,17 @@ bool MainWindow::isTrayIconEnabled() const
&& QSystemTrayIcon::isSystemTrayAvailable();
}
-void MainWindow::displayGlobalMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton)
+void MainWindow::displayGlobalMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton,
+ int autoHideTimeout)
{
m_ui->globalMessageWidget->setCloseButtonVisible(showClosebutton);
- m_ui->globalMessageWidget->showMessage(text, type);
+ m_ui->globalMessageWidget->showMessage(text, type, autoHideTimeout);
}
-void MainWindow::displayTabMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton)
+void MainWindow::displayTabMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton,
+ int autoHideTimeout)
{
- m_ui->globalMessageWidget->setCloseButtonVisible(showClosebutton);
- m_ui->tabWidget->currentDatabaseWidget()->showMessage(text, type);
+ m_ui->tabWidget->currentDatabaseWidget()->showMessage(text, type, showClosebutton, autoHideTimeout);
}
void MainWindow::hideGlobalMessage()
@@ -975,7 +1076,8 @@ void MainWindow::hideTabMessage()
void MainWindow::showYubiKeyPopup()
{
- displayGlobalMessage(tr("Please touch the button on your YubiKey!"), MessageWidget::Information, false);
+ displayGlobalMessage(tr("Please touch the button on your YubiKey!"), MessageWidget::Information,
+ false, MessageWidget::DisableAutoHide);
setEnabled(false);
}
@@ -985,9 +1087,67 @@ void MainWindow::hideYubiKeyPopup()
setEnabled(true);
}
+void MainWindow::bringToFront()
+{
+ ensurePolished();
+ setWindowState(windowState() & ~Qt::WindowMinimized);
+ show();
+ raise();
+ activateWindow();
+}
+
void MainWindow::handleScreenLock()
{
if (config()->get("security/lockdatabasescreenlock").toBool()){
lockDatabasesAfterInactivity();
}
}
+
+QStringList MainWindow::kdbxFilesFromUrls(const QList<QUrl>& urls)
+{
+ QStringList kdbxFiles;
+ for (const QUrl& url: urls) {
+ const QFileInfo fInfo(url.toLocalFile());
+ const bool isKdbxFile = fInfo.isFile() && fInfo.suffix().toLower() == "kdbx";
+ if (isKdbxFile) {
+ kdbxFiles.append(fInfo.absoluteFilePath());
+ }
+ }
+
+ return kdbxFiles;
+}
+
+void MainWindow::dragEnterEvent(QDragEnterEvent* event)
+{
+ const QMimeData* mimeData = event->mimeData();
+ if (mimeData->hasUrls()) {
+ const QStringList kdbxFiles = kdbxFilesFromUrls(mimeData->urls());
+ if (!kdbxFiles.isEmpty()) {
+ event->acceptProposedAction();
+ }
+ }
+}
+
+void MainWindow::dropEvent(QDropEvent* event)
+{
+ const QMimeData* mimeData = event->mimeData();
+ if (mimeData->hasUrls()) {
+ const QStringList kdbxFiles = kdbxFilesFromUrls(mimeData->urls());
+ if (!kdbxFiles.isEmpty()) {
+ event->acceptProposedAction();
+ }
+ for (const QString& kdbxFile: kdbxFiles) {
+ openDatabase(kdbxFile);
+ }
+ }
+}
+
+void MainWindow::closeAllDatabases()
+{
+ m_ui->tabWidget->closeAllDatabases();
+}
+
+void MainWindow::lockAllDatabases()
+{
+ lockDatabasesAfterInactivity();
+} \ No newline at end of file
diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h
index caf3f5854..fd31fab0b 100644
--- a/src/gui/MainWindow.h
+++ b/src/gui/MainWindow.h
@@ -37,6 +37,10 @@ class InactivityTimer;
class MainWindow : public QMainWindow
{
Q_OBJECT
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) && !defined(QT_NO_DBUS)
+ Q_CLASSINFO("D-Bus Interface", "org.keepassxc.KeePassXC.MainWindow")
+#endif
public:
MainWindow();
@@ -54,15 +58,20 @@ public slots:
void openDatabase(const QString& fileName, const QString& pw = QString(),
const QString& keyFile = QString());
void appExit();
- void displayGlobalMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton = true);
- void displayTabMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton = true);
+ void displayGlobalMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton = true,
+ int autoHideTimeout = MessageWidget::DefaultAutoHideTimeout);
+ void displayTabMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton = true,
+ int autoHideTimeout = MessageWidget::DefaultAutoHideTimeout);
void hideGlobalMessage();
void showYubiKeyPopup();
void hideYubiKeyPopup();
+ void bringToFront();
+ void closeAllDatabases();
+ void lockAllDatabases();
protected:
- void closeEvent(QCloseEvent* event) override;
- void changeEvent(QEvent* event) override;
+ void closeEvent(QCloseEvent* event) override;
+ void changeEvent(QEvent* event) override;
private slots:
void setMenuActionState(DatabaseWidget::Mode mode = DatabaseWidget::None);
@@ -85,7 +94,6 @@ private slots:
void updateCopyAttributesMenu();
void showEntryContextMenu(const QPoint& globalPos);
void showGroupContextMenu(const QPoint& globalPos);
- void saveToolbarState(bool value);
void rememberOpenDatabases(const QString& filePath);
void applySettingsChanges();
void trayIconTriggered(QSystemTrayIcon::ActivationReason reason);
@@ -95,6 +103,7 @@ private slots:
void repairDatabase();
void hideTabMessage();
void handleScreenLock();
+ void showKeePassHTTPDeprecationNotice();
private:
static void setShortcut(QAction* action, QKeySequence::StandardKey standard, int fallback = 0);
@@ -106,6 +115,10 @@ private:
void updateTrayIcon();
bool isTrayIconEnabled() const;
+ static QStringList kdbxFilesFromUrls(const QList<QUrl>& urls);
+ void dragEnterEvent(QDragEnterEvent* event) override;
+ void dropEvent(QDropEvent* event) override;
+
const QScopedPointer<Ui::MainWindow> m_ui;
SignalMultiplexer m_actionMultiplexer;
QAction* m_clearHistoryAction;
diff --git a/src/gui/MainWindow.ui b/src/gui/MainWindow.ui
index 5991077f5..397f7c267 100644
--- a/src/gui/MainWindow.ui
+++ b/src/gui/MainWindow.ui
@@ -21,6 +21,9 @@
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
<property name="leftMargin">
<number>0</number>
</property>
@@ -34,13 +37,28 @@
<number>0</number>
</property>
<item>
- <widget class="MessageWidget" name="globalMessageWidget" native="true">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
+ <widget class="QWidget" name="globalMessageWidgetContainer" native="true">
+ <layout class="QVBoxLayout" name="globalMessageWidgetLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="MessageWidget" name="globalMessageWidget" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">MessageWidget {margin: 90px}</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
<item>
@@ -162,7 +180,7 @@
<x>0</x>
<y>0</y>
<width>800</width>
- <height>21</height>
+ <height>34</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@@ -225,7 +243,7 @@
<bool>false</bool>
</property>
<property name="title">
- <string>Timed one-time password</string>
+ <string>Time-based one-time password</string>
</property>
<addaction name="actionEntryCopyTotp"/>
<addaction name="actionEntryTotp"/>
@@ -260,15 +278,9 @@
<addaction name="actionPasswordGenerator"/>
<addaction name="actionSettings"/>
</widget>
- <widget class="QMenu" name="menuView">
- <property name="title">
- <string>&amp;View</string>
- </property>
- </widget>
<addaction name="menuFile"/>
<addaction name="menuEntries"/>
<addaction name="menuGroups"/>
- <addaction name="menuView"/>
<addaction name="menuTools"/>
<addaction name="menuHelp"/>
</widget>
@@ -292,6 +304,8 @@
<addaction name="separator"/>
<addaction name="actionEntryCopyUsername"/>
<addaction name="actionEntryCopyPassword"/>
+ <addaction name="actionEntryCopyURL"/>
+ <addaction name="actionEntryAutoType"/>
<addaction name="separator"/>
<addaction name="actionPasswordGenerator"/>
<addaction name="actionLockDatabases"/>
@@ -301,11 +315,17 @@
<property name="text">
<string>&amp;Quit</string>
</property>
+ <property name="menuRole">
+ <enum>QAction::QuitRole</enum>
+ </property>
</action>
<action name="actionAbout">
<property name="text">
<string>&amp;About</string>
</property>
+ <property name="menuRole">
+ <enum>QAction::AboutRole</enum>
+ </property>
</action>
<action name="actionDatabaseOpen">
<property name="text">
@@ -412,6 +432,9 @@
<property name="toolTip">
<string>Database settings</string>
</property>
+ <property name="menuRole">
+ <enum>QAction::NoRole</enum>
+ </property>
</action>
<action name="actionEntryClone">
<property name="enabled">
@@ -455,6 +478,9 @@
<property name="text">
<string>&amp;Settings</string>
</property>
+ <property name="menuRole">
+ <enum>QAction::PreferencesRole</enum>
+ </property>
</action>
<action name="actionPasswordGenerator">
<property name="checkable">
@@ -495,6 +521,9 @@
<property name="text">
<string>&amp;Title</string>
</property>
+ <property name="toolTip">
+ <string>Copy title to clipboard</string>
+ </property>
</action>
<action name="actionEntryCopyURL">
<property name="enabled">
@@ -503,6 +532,9 @@
<property name="text">
<string>&amp;URL</string>
</property>
+ <property name="toolTip">
+ <string>Copy URL to clipboard</string>
+ </property>
</action>
<action name="actionEntryCopyNotes">
<property name="enabled">
@@ -511,6 +543,9 @@
<property name="text">
<string>&amp;Notes</string>
</property>
+ <property name="toolTip">
+ <string>Copy notes to clipboard</string>
+ </property>
</action>
<action name="actionExportCsv">
<property name="enabled">
@@ -552,7 +587,7 @@
</action>
<action name="actionGroupEmptyRecycleBin">
<property name="text">
- <string>Empty recycle bin</string>
+ <string>E&amp;mpty recycle bin</string>
</property>
<property name="visible">
<bool>false</bool>
diff --git a/src/gui/MainWindowAdaptor.cpp b/src/gui/MainWindowAdaptor.cpp
new file mode 100644
index 000000000..8b229ce34
--- /dev/null
+++ b/src/gui/MainWindowAdaptor.cpp
@@ -0,0 +1,63 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was: qdbusxml2cpp -c MainWindowAdaptor -a MainWindowAdaptor.h:MainWindowAdaptor.cpp org.keepassxc.MainWindow.xml
+ *
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#include "MainWindowAdaptor.h"
+#include <QtCore/QMetaObject>
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+
+/*
+ * Implementation of adaptor class MainWindowAdaptor
+ */
+
+MainWindowAdaptor::MainWindowAdaptor(QObject *parent)
+ : QDBusAbstractAdaptor(parent)
+{
+ setAutoRelaySignals(true);
+}
+
+MainWindowAdaptor::~MainWindowAdaptor()
+{
+}
+
+void MainWindowAdaptor::appExit()
+{
+ QMetaObject::invokeMethod(parent(), "appExit");
+}
+
+void MainWindowAdaptor::closeAllDatabases()
+{
+ QMetaObject::invokeMethod(parent(), "closeAllDatabases");
+}
+
+void MainWindowAdaptor::lockAllDatabases()
+{
+ QMetaObject::invokeMethod(parent(), "lockAllDatabases");
+}
+
+void MainWindowAdaptor::openDatabase(const QString &fileName)
+{
+ QMetaObject::invokeMethod(parent(), "openDatabase", Q_ARG(QString, fileName));
+}
+
+void MainWindowAdaptor::openDatabase(const QString &fileName, const QString &pw)
+{
+ QMetaObject::invokeMethod(parent(), "openDatabase", Q_ARG(QString, fileName), Q_ARG(QString, pw));
+}
+
+void MainWindowAdaptor::openDatabase(const QString &fileName, const QString &pw, const QString &keyFile)
+{
+ QMetaObject::invokeMethod(parent(), "openDatabase", Q_ARG(QString, fileName), Q_ARG(QString, pw), Q_ARG(QString, keyFile));
+}
+
diff --git a/src/gui/MainWindowAdaptor.h b/src/gui/MainWindowAdaptor.h
new file mode 100644
index 000000000..06e0ce87e
--- /dev/null
+++ b/src/gui/MainWindowAdaptor.h
@@ -0,0 +1,67 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was: qdbusxml2cpp -c MainWindowAdaptor -a MainWindowAdaptor.h:MainWindowAdaptor.cpp org.keepassxc.MainWindow.xml
+ *
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#ifndef MAINWINDOWADAPTOR_H
+#define MAINWINDOWADAPTOR_H
+
+#include <QtCore/QObject>
+#include <QtDBus/QtDBus>
+QT_BEGIN_NAMESPACE
+class QByteArray;
+template<class T> class QList;
+template<class Key, class Value> class QMap;
+class QString;
+class QStringList;
+class QVariant;
+QT_END_NAMESPACE
+
+/*
+ * Adaptor class for interface org.keepassxc.MainWindow
+ */
+class MainWindowAdaptor: public QDBusAbstractAdaptor
+{
+ Q_OBJECT
+ Q_CLASSINFO("D-Bus Interface", "org.keepassxc.MainWindow")
+ Q_CLASSINFO("D-Bus Introspection", ""
+" <interface name=\"org.keepassxc.MainWindow\">\n"
+" <method name=\"openDatabase\">\n"
+" <arg direction=\"in\" type=\"s\" name=\"fileName\"/>\n"
+" <arg direction=\"in\" type=\"s\" name=\"pw\"/>\n"
+" <arg direction=\"in\" type=\"s\" name=\"keyFile\"/>\n"
+" </method>\n"
+" <method name=\"openDatabase\">\n"
+" <arg direction=\"in\" type=\"s\" name=\"fileName\"/>\n"
+" <arg direction=\"in\" type=\"s\" name=\"pw\"/>\n"
+" </method>\n"
+" <method name=\"openDatabase\">\n"
+" <arg direction=\"in\" type=\"s\" name=\"fileName\"/>\n"
+" </method>\n"
+" <method name=\"appExit\"/>\n"
+" <method name=\"lockAllDatabases\"/>\n"
+" <method name=\"closeAllDatabases\"/>\n"
+" </interface>\n"
+ "")
+public:
+ MainWindowAdaptor(QObject *parent);
+ virtual ~MainWindowAdaptor();
+
+public:
+public slots:
+ void appExit();
+ void closeAllDatabases();
+ void lockAllDatabases();
+ void openDatabase(const QString &fileName);
+ void openDatabase(const QString &fileName, const QString &pw);
+ void openDatabase(const QString &fileName, const QString &pw, const QString &keyFile);
+signals:
+};
+
+#endif
diff --git a/src/gui/MessageWidget.cpp b/src/gui/MessageWidget.cpp
index de981b92a..f40e5aad0 100644
--- a/src/gui/MessageWidget.cpp
+++ b/src/gui/MessageWidget.cpp
@@ -18,20 +18,69 @@
#include "MessageWidget.h"
+#include <QTimer>
+#include <QDesktopServices>
+#include <QUrl>
+
+const int MessageWidget::DefaultAutoHideTimeout = 6000;
+const int MessageWidget::DisableAutoHide = -1;
+
MessageWidget::MessageWidget(QWidget* parent)
- :KMessageWidget(parent)
+ : KMessageWidget(parent)
+ , m_autoHideTimer(new QTimer(this))
+ , m_autoHideTimeout(DefaultAutoHideTimeout)
{
+ m_autoHideTimer->setSingleShot(true);
+ connect(m_autoHideTimer, SIGNAL(timeout()), this, SLOT(animatedHide()));
+ connect(this, SIGNAL(hideAnimationFinished()), m_autoHideTimer, SLOT(stop()));
+}
+int MessageWidget::autoHideTimeout() const
+{
+ return m_autoHideTimeout;
}
void MessageWidget::showMessage(const QString& text, MessageWidget::MessageType type)
{
+ showMessage(text, type, m_autoHideTimeout);
+}
+
+void MessageWidget::showMessage(const QString &text, KMessageWidget::MessageType type, int autoHideTimeout)
+{
setMessageType(type);
setText(text);
+ emit showAnimationStarted();
animatedShow();
+ if (autoHideTimeout > 0) {
+ m_autoHideTimer->start(autoHideTimeout);
+ } else {
+ m_autoHideTimer->stop();
+ }
}
void MessageWidget::hideMessage()
{
animatedHide();
+ m_autoHideTimer->stop();
}
+
+void MessageWidget::setAutoHideTimeout(int autoHideTimeout)
+{
+ m_autoHideTimeout = autoHideTimeout;
+ if (autoHideTimeout <= 0) {
+ m_autoHideTimer->stop();
+ }
+}
+
+/**
+ * Open a link using the system's default handler.
+ * Links that are not HTTP(S) links are ignored.
+ *
+ * @param link link URL
+ */
+void MessageWidget::openHttpUrl(const QString& link)
+{
+ if (link.startsWith("http://") || link.startsWith("https://")) {
+ QDesktopServices::openUrl(QUrl(link));
+ }
+} \ No newline at end of file
diff --git a/src/gui/MessageWidget.h b/src/gui/MessageWidget.h
index 03ebee3eb..73f0b2108 100644
--- a/src/gui/MessageWidget.h
+++ b/src/gui/MessageWidget.h
@@ -21,6 +21,8 @@
#include "gui/KMessageWidget.h"
+class QTimer;
+
class MessageWidget : public KMessageWidget
{
Q_OBJECT
@@ -28,10 +30,24 @@ class MessageWidget : public KMessageWidget
public:
explicit MessageWidget(QWidget* parent = 0);
+ int autoHideTimeout() const;
+
+ static const int DefaultAutoHideTimeout;
+ static const int DisableAutoHide;
+
+signals:
+ void showAnimationStarted();
+
public slots:
void showMessage(const QString& text, MessageWidget::MessageType type);
+ void showMessage(const QString& text, MessageWidget::MessageType type, int autoHideTimeout);
void hideMessage();
+ void setAutoHideTimeout(int autoHideTimeout);
+ static void openHttpUrl(QString const& url);
+private:
+ QTimer* m_autoHideTimer;
+ int m_autoHideTimeout;
};
#endif // MESSAGEWIDGET_H
diff --git a/src/gui/PasswordEdit.cpp b/src/gui/PasswordEdit.cpp
index ad736bf20..b084f9cf0 100644
--- a/src/gui/PasswordEdit.cpp
+++ b/src/gui/PasswordEdit.cpp
@@ -19,8 +19,7 @@
#include "PasswordEdit.h"
#include "core/Config.h"
-
-#include <QFontDatabase>
+#include "gui/Font.h"
const QColor PasswordEdit::CorrectSoFarColor = QColor(255, 205, 15);
const QColor PasswordEdit::ErrorColor = QColor(255, 125, 125);
@@ -33,16 +32,7 @@ PasswordEdit::PasswordEdit(QWidget* parent)
updateStylesheet();
// use a monospace font for the password field
- QFont passwordFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);
-#ifdef Q_OS_WIN
- // try to use Consolas on Windows, because the default Courier New has too many similar characters
- QFont consolasFont = QFontDatabase().font("Consolas", passwordFont.styleName(), passwordFont.pointSize());
- const QFont defaultFont;
- if (passwordFont != defaultFont) {
- passwordFont = consolasFont;
- }
-#endif
-
+ QFont passwordFont = Font::fixedFont();
passwordFont.setLetterSpacing(QFont::PercentageSpacing, 110);
setFont(passwordFont);
}
diff --git a/src/gui/PasswordGeneratorWidget.cpp b/src/gui/PasswordGeneratorWidget.cpp
index 3753071d1..7a93f86bd 100644
--- a/src/gui/PasswordGeneratorWidget.cpp
+++ b/src/gui/PasswordGeneratorWidget.cpp
@@ -21,6 +21,7 @@
#include <QLineEdit>
#include <QDir>
+#include <QKeyEvent>
#include "core/Config.h"
#include "core/PasswordGenerator.h"
@@ -67,9 +68,9 @@ PasswordGeneratorWidget::PasswordGeneratorWidget(QWidget* parent)
}
// set default separator to Space
- m_ui->editWordSeparator->setText(" ");
+ m_ui->editWordSeparator->setText(PassphraseGenerator::DefaultSeparator);
- QDir path(filePath()->dataPath("wordlists/"));
+ QDir path(filePath()->wordlistPath(""));
QStringList files = path.entryList(QDir::Files);
m_ui->comboBoxWordList->addItems(files);
if (files.size() > 1) {
@@ -79,7 +80,8 @@ PasswordGeneratorWidget::PasswordGeneratorWidget(QWidget* parent)
m_ui->comboBoxWordList->setVisible(false);
m_ui->labelWordList->setVisible(false);
}
-
+
+ m_dicewareGenerator->setDefaultWordList();
loadSettings();
reset();
}
@@ -91,19 +93,19 @@ PasswordGeneratorWidget::~PasswordGeneratorWidget()
void PasswordGeneratorWidget::loadSettings()
{
// Password config
- m_ui->checkBoxLower->setChecked(config()->get("generator/LowerCase", true).toBool());
- m_ui->checkBoxUpper->setChecked(config()->get("generator/UpperCase", true).toBool());
- m_ui->checkBoxNumbers->setChecked(config()->get("generator/Numbers", true).toBool());
- m_ui->checkBoxSpecialChars->setChecked(config()->get("generator/SpecialChars", false).toBool());
- m_ui->checkBoxExtASCII->setChecked(config()->get("generator/EASCII", false).toBool());
- m_ui->checkBoxExcludeAlike->setChecked(config()->get("generator/ExcludeAlike", true).toBool());
- m_ui->checkBoxEnsureEvery->setChecked(config()->get("generator/EnsureEvery", true).toBool());
- m_ui->spinBoxLength->setValue(config()->get("generator/Length", 16).toInt());
+ m_ui->checkBoxLower->setChecked(config()->get("generator/LowerCase", PasswordGenerator::DefaultLower).toBool());
+ m_ui->checkBoxUpper->setChecked(config()->get("generator/UpperCase", PasswordGenerator::DefaultUpper).toBool());
+ m_ui->checkBoxNumbers->setChecked(config()->get("generator/Numbers", PasswordGenerator::DefaultNumbers).toBool());
+ m_ui->checkBoxSpecialChars->setChecked(config()->get("generator/SpecialChars", PasswordGenerator::DefaultSpecial).toBool());
+ m_ui->checkBoxExtASCII->setChecked(config()->get("generator/EASCII", PasswordGenerator::DefaultEASCII).toBool());
+ m_ui->checkBoxExcludeAlike->setChecked(config()->get("generator/ExcludeAlike", PasswordGenerator::DefaultLookAlike).toBool());
+ m_ui->checkBoxEnsureEvery->setChecked(config()->get("generator/EnsureEvery", PasswordGenerator::DefaultFromEveryGroup).toBool());
+ m_ui->spinBoxLength->setValue(config()->get("generator/Length", PasswordGenerator::DefaultLength).toInt());
// Diceware config
- m_ui->spinBoxWordCount->setValue(config()->get("generator/WordCount", 6).toInt());
- m_ui->editWordSeparator->setText(config()->get("generator/WordSeparator", " ").toString());
- m_ui->comboBoxWordList->setCurrentText(config()->get("generator/WordList", "eff_large.wordlist").toString());
+ m_ui->spinBoxWordCount->setValue(config()->get("generator/WordCount", PassphraseGenerator::DefaultWordCount).toInt());
+ m_ui->editWordSeparator->setText(config()->get("generator/WordSeparator", PassphraseGenerator::DefaultSeparator).toString());
+ m_ui->comboBoxWordList->setCurrentText(config()->get("generator/WordList", PassphraseGenerator::DefaultWordList).toString());
// Password or diceware?
m_ui->tabWidget->setCurrentIndex(config()->get("generator/Type", 0).toInt());
@@ -149,8 +151,22 @@ void PasswordGeneratorWidget::setStandaloneMode(bool standalone)
}
}
+QString PasswordGeneratorWidget::getGeneratedPassword()
+{
+ return m_ui->editNewPassword->text();
+}
+
+void PasswordGeneratorWidget::keyPressEvent(QKeyEvent* e)
+{
+ if (e->key() == Qt::Key_Escape && m_standalone == true) {
+ emit dialogTerminated();
+ } else {
+ e->ignore();
+ }
+}
+
void PasswordGeneratorWidget::regeneratePassword()
-{
+{
if (m_ui->tabWidget->currentIndex() == Password) {
if (m_passwordGenerator->isValid()) {
QString password = m_passwordGenerator->generatePassword();
@@ -268,16 +284,16 @@ void PasswordGeneratorWidget::colorStrengthIndicator(double entropy)
// <https://community.kde.org/KDE_Visual_Design_Group/HIG/Color>
if (entropy < 40) {
m_ui->entropyProgressBar->setStyleSheet(style.arg("#c0392b"));
- m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Poor")));
+ m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Poor", "Password quality")));
} else if (entropy >= 40 && entropy < 65) {
m_ui->entropyProgressBar->setStyleSheet(style.arg("#f39c1f"));
- m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Weak")));
+ m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Weak", "Password quality")));
} else if (entropy >= 65 && entropy < 100) {
m_ui->entropyProgressBar->setStyleSheet(style.arg("#11d116"));
- m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Good")));
+ m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Good", "Password quality")));
} else {
m_ui->entropyProgressBar->setStyleSheet(style.arg("#27ae60"));
- m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Excellent")));
+ m_ui->strengthLabel->setText(tr("Password Quality: %1").arg(tr("Excellent", "Password quality")));
}
}
@@ -383,7 +399,7 @@ void PasswordGeneratorWidget::updateGenerator()
m_dicewareGenerator->setWordCount(m_ui->spinBoxWordCount->value());
if (!m_ui->comboBoxWordList->currentText().isEmpty()) {
- QString path = filePath()->dataPath("wordlists/" + m_ui->comboBoxWordList->currentText());
+ QString path = filePath()->wordlistPath(m_ui->comboBoxWordList->currentText());
m_dicewareGenerator->setWordList(path);
}
m_dicewareGenerator->setWordSeparator(m_ui->editWordSeparator->text());
diff --git a/src/gui/PasswordGeneratorWidget.h b/src/gui/PasswordGeneratorWidget.h
index 130106461..ed4414377 100644
--- a/src/gui/PasswordGeneratorWidget.h
+++ b/src/gui/PasswordGeneratorWidget.h
@@ -49,16 +49,18 @@ public:
void saveSettings();
void reset();
void setStandaloneMode(bool standalone);
-public Q_SLOTS:
+ QString getGeneratedPassword();
+
+public slots:
void regeneratePassword();
+ void applyPassword();
+ void copyPassword();
signals:
void appliedPassword(const QString& password);
void dialogTerminated();
private slots:
- void applyPassword();
- void copyPassword();
void updateButtonsEnabled(const QString& password);
void updatePasswordStrength(const QString& password);
void togglePasswordShown(bool hidden);
@@ -81,6 +83,9 @@ private:
const QScopedPointer<PasswordGenerator> m_passwordGenerator;
const QScopedPointer<PassphraseGenerator> m_dicewareGenerator;
const QScopedPointer<Ui::PasswordGeneratorWidget> m_ui;
+
+protected:
+ void keyPressEvent(QKeyEvent* e) override;
};
#endif // KEEPASSX_PASSWORDGENERATORWIDGET_H
diff --git a/src/gui/PasswordGeneratorWidget.ui b/src/gui/PasswordGeneratorWidget.ui
index a04719c33..03f70806f 100644
--- a/src/gui/PasswordGeneratorWidget.ui
+++ b/src/gui/PasswordGeneratorWidget.ui
@@ -2,6 +2,14 @@
<ui version="4.0">
<class>PasswordGeneratorWidget</class>
<widget class="QWidget" name="PasswordGeneratorWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>547</width>
+ <height>352</height>
+ </rect>
+ </property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
@@ -100,7 +108,7 @@ QProgressBar::chunk {
</size>
</property>
<property name="text">
- <string>strength</string>
+ <string comment="Password strength">strength</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
@@ -318,7 +326,7 @@ QProgressBar::chunk {
<string>Extended ASCII</string>
</property>
<property name="text">
- <string notr="true">Extended ASCII</string>
+ <string>Extended ASCII</string>
</property>
<property name="checkable">
<bool>true</bool>
diff --git a/src/gui/SearchWidget.cpp b/src/gui/SearchWidget.cpp
index 7aa5f2901..ed3a50b2a 100644
--- a/src/gui/SearchWidget.cpp
+++ b/src/gui/SearchWidget.cpp
@@ -119,7 +119,8 @@ void SearchWidget::databaseChanged(DatabaseWidget* dbWidget)
if (dbWidget != nullptr) {
// Set current search text from this database
m_ui->searchEdit->setText(dbWidget->getCurrentSearch());
-
+ // Keyboard focus on search widget at database unlocking
+ connect(dbWidget, SIGNAL(unlockedDatabase()), this, SLOT(searchFocus()));
// Enforce search policy
emit caseSensitiveChanged(m_actionCaseSensitive->isChecked());
emit limitGroupChanged(m_actionLimitGroup->isChecked());
diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp
index 420778be4..56b1b2a38 100644
--- a/src/gui/SettingsWidget.cpp
+++ b/src/gui/SettingsWidget.cpp
@@ -82,7 +82,7 @@ SettingsWidget::SettingsWidget(QWidget* parent)
connect(m_secUi->lockDatabaseIdleCheckBox, SIGNAL(toggled(bool)),
m_secUi->lockDatabaseIdleSpinBox, SLOT(setEnabled(bool)));
-#ifndef WITH_XC_HTTP
+#ifndef WITH_XC_NETWORKING
m_secUi->privacy->setVisible(false);
#endif
}
@@ -117,10 +117,13 @@ void SettingsWidget::loadSettings()
config()->get("OpenPreviousDatabasesOnStartup").toBool());
m_generalUi->autoSaveAfterEveryChangeCheckBox->setChecked(config()->get("AutoSaveAfterEveryChange").toBool());
m_generalUi->autoSaveOnExitCheckBox->setChecked(config()->get("AutoSaveOnExit").toBool());
+ m_generalUi->backupBeforeSaveCheckBox->setChecked(config()->get("BackupBeforeSave").toBool());
+ m_generalUi->useAtomicSavesCheckBox->setChecked(config()->get("UseAtomicSaves").toBool());
m_generalUi->autoReloadOnChangeCheckBox->setChecked(config()->get("AutoReloadOnChange").toBool());
m_generalUi->minimizeOnCopyCheckBox->setChecked(config()->get("MinimizeOnCopy").toBool());
m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(config()->get("UseGroupIconOnEntryCreation").toBool());
m_generalUi->autoTypeEntryTitleMatchCheckBox->setChecked(config()->get("AutoTypeEntryTitleMatch").toBool());
+ m_generalUi->autoTypeEntryURLMatchCheckBox->setChecked(config()->get("AutoTypeEntryURLMatch").toBool());
m_generalUi->ignoreGroupExpansionCheckBox->setChecked(config()->get("IgnoreGroupExpansion").toBool());
m_generalUi->languageComboBox->clear();
@@ -133,7 +136,9 @@ void SettingsWidget::loadSettings()
m_generalUi->languageComboBox->setCurrentIndex(defaultIndex);
}
+ m_generalUi->detailsHideCheckBox->setChecked(config()->get("GUI/HideDetailsView").toBool());
m_generalUi->systrayShowCheckBox->setChecked(config()->get("GUI/ShowTrayIcon").toBool());
+ m_generalUi->systrayDarkIconCheckBox->setChecked(config()->get("GUI/DarkTrayIcon").toBool());
m_generalUi->systrayMinimizeToTrayCheckBox->setChecked(config()->get("GUI/MinimizeToTray").toBool());
m_generalUi->systrayMinimizeOnCloseCheckBox->setChecked(config()->get("GUI/MinimizeOnClose").toBool());
m_generalUi->systrayMinimizeOnStartup->setChecked(config()->get("GUI/MinimizeOnStartup").toBool());
@@ -145,6 +150,7 @@ void SettingsWidget::loadSettings()
if (m_globalAutoTypeKey > 0 && m_globalAutoTypeModifiers > 0) {
m_generalUi->autoTypeShortcutWidget->setShortcut(m_globalAutoTypeKey, m_globalAutoTypeModifiers);
}
+ m_generalUi->autoTypeShortcutWidget->setAttribute(Qt::WA_MacShowFocusRect, true);
m_generalUi->autoTypeDelaySpinBox->setValue(config()->get("AutoTypeDelay").toInt());
}
@@ -156,10 +162,13 @@ void SettingsWidget::loadSettings()
m_secUi->lockDatabaseIdleSpinBox->setValue(config()->get("security/lockdatabaseidlesec").toInt());
m_secUi->lockDatabaseMinimizeCheckBox->setChecked(config()->get("security/lockdatabaseminimize").toBool());
m_secUi->lockDatabaseOnScreenLockCheckBox->setChecked(config()->get("security/lockdatabasescreenlock").toBool());
+ m_secUi->relockDatabaseAutoTypeCheckBox->setChecked(config()->get("security/relockautotype").toBool());
m_secUi->fallbackToGoogle->setChecked(config()->get("security/IconDownloadFallbackToGoogle").toBool());
m_secUi->passwordCleartextCheckBox->setChecked(config()->get("security/passwordscleartext").toBool());
+ m_secUi->passwordDetailsCleartextCheckBox->setChecked(config()->get("security/hidepassworddetails").toBool());
m_secUi->passwordRepeatCheckBox->setChecked(config()->get("security/passwordsrepeat").toBool());
+ m_secUi->hideNotesCheckBox->setChecked(config()->get("security/hidenotes").toBool());
for (const ExtraPage& page: asConst(m_extraPages)) {
@@ -188,6 +197,8 @@ void SettingsWidget::saveSettings()
config()->set("AutoSaveAfterEveryChange",
m_generalUi->autoSaveAfterEveryChangeCheckBox->isChecked());
config()->set("AutoSaveOnExit", m_generalUi->autoSaveOnExitCheckBox->isChecked());
+ config()->set("BackupBeforeSave", m_generalUi->backupBeforeSaveCheckBox->isChecked());
+ config()->set("UseAtomicSaves", m_generalUi->useAtomicSavesCheckBox->isChecked());
config()->set("AutoReloadOnChange", m_generalUi->autoReloadOnChangeCheckBox->isChecked());
config()->set("MinimizeOnCopy", m_generalUi->minimizeOnCopyCheckBox->isChecked());
config()->set("UseGroupIconOnEntryCreation",
@@ -196,11 +207,15 @@ void SettingsWidget::saveSettings()
m_generalUi->ignoreGroupExpansionCheckBox->isChecked());
config()->set("AutoTypeEntryTitleMatch",
m_generalUi->autoTypeEntryTitleMatchCheckBox->isChecked());
+ config()->set("AutoTypeEntryURLMatch",
+ m_generalUi->autoTypeEntryURLMatchCheckBox->isChecked());
int currentLangIndex = m_generalUi->languageComboBox->currentIndex();
config()->set("GUI/Language", m_generalUi->languageComboBox->itemData(currentLangIndex).toString());
+ config()->set("GUI/HideDetailsView", m_generalUi->detailsHideCheckBox->isChecked());
config()->set("GUI/ShowTrayIcon", m_generalUi->systrayShowCheckBox->isChecked());
+ config()->set("GUI/DarkTrayIcon", m_generalUi->systrayDarkIconCheckBox->isChecked());
config()->set("GUI/MinimizeToTray", m_generalUi->systrayMinimizeToTrayCheckBox->isChecked());
config()->set("GUI/MinimizeOnClose", m_generalUi->systrayMinimizeOnCloseCheckBox->isChecked());
config()->set("GUI/MinimizeOnStartup", m_generalUi->systrayMinimizeOnStartup->isChecked());
@@ -220,10 +235,13 @@ void SettingsWidget::saveSettings()
config()->set("security/lockdatabaseidlesec", m_secUi->lockDatabaseIdleSpinBox->value());
config()->set("security/lockdatabaseminimize", m_secUi->lockDatabaseMinimizeCheckBox->isChecked());
config()->set("security/lockdatabasescreenlock", m_secUi->lockDatabaseOnScreenLockCheckBox->isChecked());
+ config()->set("security/relockautotype", m_secUi->relockDatabaseAutoTypeCheckBox->isChecked());
config()->set("security/IconDownloadFallbackToGoogle", m_secUi->fallbackToGoogle->isChecked());
config()->set("security/passwordscleartext", m_secUi->passwordCleartextCheckBox->isChecked());
+ config()->set("security/hidepassworddetails", m_secUi->passwordDetailsCleartextCheckBox->isChecked());
config()->set("security/passwordsrepeat", m_secUi->passwordRepeatCheckBox->isChecked());
+ config()->set("security/hidenotes", m_secUi->hideNotesCheckBox->isChecked());
// Security: clear storage if related settings are disabled
if (!config()->get("RememberLastDatabases").toBool()) {
@@ -232,6 +250,7 @@ void SettingsWidget::saveSettings()
if (!config()->get("RememberLastKeyFiles").toBool()) {
config()->set("LastKeyFiles", QVariant());
+ config()->set("LastDir", "");
}
for (const ExtraPage& page: asConst(m_extraPages)) {
@@ -255,6 +274,7 @@ void SettingsWidget::enableAutoSaveOnExit(bool checked)
void SettingsWidget::enableSystray(bool checked)
{
+ m_generalUi->systrayDarkIconCheckBox->setEnabled(checked);
m_generalUi->systrayMinimizeToTrayCheckBox->setEnabled(checked);
m_generalUi->systrayMinimizeOnCloseCheckBox->setEnabled(checked);
}
diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui
index c35440cd4..5ed952f1f 100644
--- a/src/gui/SettingsWidgetGeneral.ui
+++ b/src/gui/SettingsWidgetGeneral.ui
@@ -34,126 +34,152 @@
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
- <widget class="QCheckBox" name="singleInstanceCheckBox">
- <property name="text">
- <string>Start only a single instance of KeePassXC</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="rememberLastDatabasesCheckBox">
- <property name="text">
- <string>Remember last databases</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="rememberLastKeyFilesCheckBox">
- <property name="text">
- <string>Remember last key files and security dongles</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="openPreviousDatabasesOnStartupCheckBox">
- <property name="text">
- <string>Load previous databases on startup</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="autoSaveOnExitCheckBox">
- <property name="text">
- <string>Automatically save on exit</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="autoSaveAfterEveryChangeCheckBox">
- <property name="text">
- <string>Automatically save after every change</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="autoReloadOnChangeCheckBox">
- <property name="text">
- <string>Automatically reload the database when modified externally</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="minimizeOnCopyCheckBox">
- <property name="text">
- <string>Minimize when copying to clipboard</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="systrayMinimizeOnStartup">
- <property name="text">
- <string>Minimize window at application startup</string>
+ <widget class="QGroupBox" name="startupGroup">
+ <property name="title">
+ <string>Startup</string>
</property>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="singleInstanceCheckBox">
+ <property name="text">
+ <string>Start only a single instance of KeePassXC</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="rememberLastDatabasesCheckBox">
+ <property name="text">
+ <string>Remember last databases</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="rememberLastKeyFilesCheckBox">
+ <property name="text">
+ <string>Remember last key files and security dongles</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="openPreviousDatabasesOnStartupCheckBox">
+ <property name="text">
+ <string>Load previous databases on startup</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="systrayMinimizeOnStartup">
+ <property name="text">
+ <string>Minimize window at application startup</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
<item>
- <widget class="QCheckBox" name="useGroupIconOnEntryCreationCheckBox">
- <property name="text">
- <string>Use group icon on entry creation</string>
- </property>
- <property name="checked">
- <bool>true</bool>
+ <widget class="QGroupBox" name="saveGroup">
+ <property name="title">
+ <string>File Management</string>
</property>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <item>
+ <widget class="QCheckBox" name="useAtomicSavesCheckBox">
+ <property name="text">
+ <string>Safely save database files (may be incompatible with Dropbox, etc)</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="backupBeforeSaveCheckBox">
+ <property name="text">
+ <string>Backup database file before saving</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="autoSaveAfterEveryChangeCheckBox">
+ <property name="text">
+ <string>Automatically save after every change</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="autoSaveOnExitCheckBox">
+ <property name="text">
+ <string>Automatically save on exit</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="ignoreGroupExpansionCheckBox">
+ <property name="text">
+ <string>Don't mark database as modified for non-data changes (e.g., expanding groups)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="autoReloadOnChangeCheckBox">
+ <property name="text">
+ <string>Automatically reload the database when modified externally</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
<item>
- <widget class="QCheckBox" name="ignoreGroupExpansionCheckBox">
- <property name="text">
- <string>Don't mark database as modified for non-data changes (e.g., expanding groups)</string>
+ <widget class="QGroupBox" name="entryGroup">
+ <property name="title">
+ <string>Entry Management</string>
</property>
- </widget>
- </item>
- <item>
- <widget class="QWidget" name="systraySettings" native="true">
- <layout class="QVBoxLayout" name="systrayLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
<item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
+ <widget class="QCheckBox" name="useGroupIconOnEntryCreationCheckBox">
+ <property name="text">
+ <string>Use group icon on entry creation</string>
</property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
+ <property name="checked">
+ <bool>true</bool>
</property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>30</height>
- </size>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="minimizeOnCopyCheckBox">
+ <property name="text">
+ <string>Minimize when copying to clipboard</string>
</property>
- </spacer>
+ </widget>
</item>
<item>
+ <widget class="QCheckBox" name="detailsHideCheckBox">
+ <property name="text">
+ <string>Hide the Details view</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="generalGroup">
+ <property name="title">
+ <string>General</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
<widget class="QCheckBox" name="systrayShowCheckBox">
<property name="text">
<string>Show a system tray icon</string>
@@ -161,78 +187,162 @@
</widget>
</item>
<item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <widget class="QWidget" name="systraySettings" native="true">
+ <layout class="QVBoxLayout" name="systrayLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetMaximumSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="systrayMinimizeToTrayCheckBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Hide window to system tray when minimized</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetMaximumSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="systrayMinimizeOnCloseCheckBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Hide window to system tray instead of app exit</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetMaximumSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="systrayDarkIconCheckBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Dark system tray icon</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="languageLabelLayout_2">
<property name="spacing">
- <number>0</number>
- </property>
- <property name="sizeConstraint">
- <enum>QLayout::SetMaximumSize</enum>
+ <number>15</number>
</property>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QCheckBox" name="systrayMinimizeToTrayCheckBox">
- <property name="enabled">
- <bool>false</bool>
- </property>
+ <item alignment="Qt::AlignRight">
+ <widget class="QLabel" name="languageLabel_2">
<property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Hide window to system tray when minimized</string>
+ <string>Language</string>
</property>
</widget>
</item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="sizeConstraint">
- <enum>QLayout::SetMaximumSize</enum>
- </property>
<item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QCheckBox" name="systrayMinimizeOnCloseCheckBox">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Hide window to system tray instead of app exit</string>
+ <widget class="QComboBox" name="languageComboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
</widget>
</item>
@@ -242,52 +352,6 @@
</widget>
</item>
<item>
- <spacer name="trayIconSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>30</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <layout class="QHBoxLayout" name="languageLabelLayout_2">
- <property name="spacing">
- <number>15</number>
- </property>
- <item alignment="Qt::AlignRight">
- <widget class="QLabel" name="languageLabel_2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Language</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="languageComboBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -313,7 +377,14 @@
<item>
<widget class="QCheckBox" name="autoTypeEntryTitleMatchCheckBox">
<property name="text">
- <string>Use entry title and URL to match windows for global Auto-Type</string>
+ <string>Use entry title to match windows for global Auto-Type</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="autoTypeEntryURLMatchCheckBox">
+ <property name="text">
+ <string>Use entry URL to match windows for global Auto-Type</string>
</property>
</widget>
</item>
@@ -365,7 +436,7 @@
</sizepolicy>
</property>
<property name="suffix">
- <string> ms</string>
+ <string comment="Milliseconds"> ms</string>
</property>
<property name="prefix">
<string/>
diff --git a/src/gui/SettingsWidgetSecurity.ui b/src/gui/SettingsWidgetSecurity.ui
index 4233fdbd1..da3def868 100644
--- a/src/gui/SettingsWidgetSecurity.ui
+++ b/src/gui/SettingsWidgetSecurity.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>595</width>
- <height>443</height>
+ <height>446</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@@ -48,7 +48,7 @@
</sizepolicy>
</property>
<property name="suffix">
- <string> sec</string>
+ <string comment="Seconds"> sec</string>
</property>
<property name="minimum">
<number>1</number>
@@ -86,7 +86,7 @@
</sizepolicy>
</property>
<property name="suffix">
- <string> sec</string>
+ <string comment="Seconds"> sec</string>
</property>
<property name="minimum">
<number>10</number>
@@ -122,6 +122,13 @@
</property>
</widget>
</item>
+ <item row="6" column="0">
+ <widget class="QCheckBox" name="relockDatabaseAutoTypeCheckBox">
+ <property name="text">
+ <string>Re-lock previously locked database after performing Auto-Type</string>
+ </property>
+ </widget>
+ </item>
<item>
<widget class="QCheckBox" name="passwordRepeatCheckBox">
<property name="text">
@@ -136,6 +143,20 @@
</property>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="passwordDetailsCleartextCheckBox">
+ <property name="text">
+ <string>Hide passwords in the preview panel</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="hideNotesCheckBox">
+ <property name="text">
+ <string>Hide entry notes by default</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/src/gui/SetupTotpDialog.cpp b/src/gui/SetupTotpDialog.cpp
index 5521773bd..52d63f0ef 100644
--- a/src/gui/SetupTotpDialog.cpp
+++ b/src/gui/SetupTotpDialog.cpp
@@ -35,7 +35,9 @@ SetupTotpDialog::SetupTotpDialog(DatabaseWidget* parent, Entry* entry)
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(close()));
connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(setupTotp()));
- connect(m_ui->customSettingsCheckBox, SIGNAL(toggled(bool)), SLOT(toggleCustom(bool)));
+ connect(m_ui->radioDefault, SIGNAL(toggled(bool)), SLOT(toggleDefault(bool)));
+ connect(m_ui->radioSteam, SIGNAL(toggled(bool)), SLOT(toggleSteam(bool)));
+ connect(m_ui->radioCustom, SIGNAL(toggled(bool)), SLOT(toggleCustom(bool)));
}
@@ -43,19 +45,37 @@ void SetupTotpDialog::setupTotp()
{
quint8 digits;
- if (m_ui->radio8Digits->isChecked()) {
+ if (m_ui->radioSteam->isChecked()) {
+ digits = Totp::ENCODER_STEAM;
+ } else if (m_ui->radio8Digits->isChecked()) {
digits = 8;
} else {
digits = 6;
}
quint8 step = m_ui->stepSpinBox->value();
- QString seed = QTotp::parseOtpString(m_ui->seedEdit->text(), digits, step);
+ QString seed = Totp::parseOtpString(m_ui->seedEdit->text(), digits, step);
m_entry->setTotp(seed, step, digits);
emit m_parent->entrySelectionChanged();
close();
}
+void SetupTotpDialog::toggleDefault(bool status)
+{
+ if (status) {
+ setStep(Totp::defaultStep);
+ setDigits(Totp::defaultDigits);
+ }
+}
+
+void SetupTotpDialog::toggleSteam(bool status)
+{
+ if (status) {
+ setStep(Totp::defaultStep);
+ setDigits(Totp::ENCODER_STEAM);
+ }
+}
+
void SetupTotpDialog::toggleCustom(bool status)
{
m_ui->digitsLabel->setEnabled(status);
@@ -72,13 +92,25 @@ void SetupTotpDialog::setSeed(QString value)
m_ui->seedEdit->setText(value);
}
+void SetupTotpDialog::setSettings(quint8 digits) {
+ quint8 step = m_ui->stepSpinBox->value();
+
+ bool isDefault = ((step == Totp::defaultStep) &&
+ (digits == Totp::defaultDigits));
+ bool isSteam = (digits == Totp::ENCODER_STEAM);
+
+ if (isSteam) {
+ m_ui->radioSteam->setChecked(true);
+ } else if (isDefault) {
+ m_ui->radioDefault->setChecked(true);
+ } else {
+ m_ui->radioCustom->setChecked(true);
+ }
+}
+
void SetupTotpDialog::setStep(quint8 step)
{
m_ui->stepSpinBox->setValue(step);
-
- if (step != QTotp::defaultStep) {
- m_ui->customSettingsCheckBox->setChecked(true);
- }
}
void SetupTotpDialog::setDigits(quint8 digits)
@@ -90,13 +122,8 @@ void SetupTotpDialog::setDigits(quint8 digits)
m_ui->radio6Digits->setChecked(true);
m_ui->radio8Digits->setChecked(false);
}
-
- if (digits != QTotp::defaultDigits) {
- m_ui->customSettingsCheckBox->setChecked(true);
- }
}
-
SetupTotpDialog::~SetupTotpDialog()
{
}
diff --git a/src/gui/SetupTotpDialog.h b/src/gui/SetupTotpDialog.h
index 243a05f9f..9e90e9686 100644
--- a/src/gui/SetupTotpDialog.h
+++ b/src/gui/SetupTotpDialog.h
@@ -39,8 +39,11 @@ public:
void setSeed(QString value);
void setStep(quint8 step);
void setDigits(quint8 digits);
+ void setSettings(quint8 digits);
private Q_SLOTS:
+ void toggleDefault(bool status);
+ void toggleSteam(bool status);
void toggleCustom(bool status);
void setupTotp();
diff --git a/src/gui/SetupTotpDialog.ui b/src/gui/SetupTotpDialog.ui
index a6d806287..327ca6d0a 100644
--- a/src/gui/SetupTotpDialog.ui
+++ b/src/gui/SetupTotpDialog.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>282</width>
- <height>257</height>
+ <height>364</height>
</rect>
</property>
<property name="windowTitle">
@@ -29,11 +29,38 @@
</layout>
</item>
<item>
- <widget class="QCheckBox" name="customSettingsCheckBox">
- <property name="text">
- <string>Use custom settings</string>
- </property>
- </widget>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QRadioButton" name="radioDefault">
+ <property name="text">
+ <string>Default RFC 6238 token settings</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">settingsButtonGroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="radioSteam">
+ <property name="text">
+ <string>Steam token settings</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">settingsButtonGroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="radioCustom">
+ <property name="text">
+ <string>Use custom settings</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">settingsButtonGroup</string>
+ </attribute>
+ </widget>
+ </item>
+ </layout>
</item>
<item>
<widget class="QLabel" name="label_4">
@@ -105,7 +132,7 @@
<bool>false</bool>
</property>
<property name="suffix">
- <string> sec</string>
+ <string comment="Seconds"> sec</string>
</property>
<property name="minimum">
<number>1</number>
@@ -134,4 +161,7 @@
</widget>
<resources/>
<connections/>
+ <buttongroups>
+ <buttongroup name="settingsButtonGroup"/>
+ </buttongroups>
</ui>
diff --git a/src/gui/TotpDialog.cpp b/src/gui/TotpDialog.cpp
index 17cc1120f..7325d2536 100644
--- a/src/gui/TotpDialog.cpp
+++ b/src/gui/TotpDialog.cpp
@@ -20,33 +20,24 @@
#include "ui_TotpDialog.h"
#include "core/Config.h"
-#include "core/Entry.h"
-#include "gui/DatabaseWidget.h"
#include "gui/Clipboard.h"
-#include <QTimer>
-#include <QDateTime>
-#include <QPushButton>
-
TotpDialog::TotpDialog(DatabaseWidget* parent, Entry* entry)
: QDialog(parent)
, m_ui(new Ui::TotpDialog())
+ , m_totpUpdateTimer(new QTimer(entry))
+ , m_entry(entry)
{
- m_entry = entry;
- m_parent = parent;
- m_step = m_entry->totpStep();
-
m_ui->setupUi(this);
+ m_step = m_entry->totpStep();
uCounter = resetCounter();
updateProgressBar();
- QTimer* timer = new QTimer(this);
- connect(timer, SIGNAL(timeout()), this, SLOT(updateProgressBar()));
- connect(timer, SIGNAL(timeout()), this, SLOT(updateSeconds()));
- timer->start(m_step * 10);
-
+ connect(m_totpUpdateTimer, SIGNAL(timeout()), this, SLOT(updateProgressBar()));
+ connect(m_totpUpdateTimer, SIGNAL(timeout()), this, SLOT(updateSeconds()));
+ m_totpUpdateTimer->start(m_step * 10);
updateTotp();
setAttribute(Qt::WA_DeleteOnClose);
@@ -61,7 +52,7 @@ void TotpDialog::copyToClipboard()
{
clipboard()->setText(m_entry->totp());
if (config()->get("MinimizeOnCopy").toBool()) {
- m_parent->window()->showMinimized();
+ qobject_cast<DatabaseWidget*>(parent())->window()->showMinimized();
}
}
@@ -87,8 +78,8 @@ void TotpDialog::updateSeconds()
void TotpDialog::updateTotp()
{
QString totpCode = m_entry->totp();
- QString firstHalf = totpCode.left(totpCode.size()/2);
- QString secondHalf = totpCode.right(totpCode.size()/2);
+ QString firstHalf = totpCode.left(totpCode.size() / 2);
+ QString secondHalf = totpCode.mid(totpCode.size() / 2);
m_ui->totpLabel->setText(firstHalf + " " + secondHalf);
}
@@ -101,4 +92,7 @@ double TotpDialog::resetCounter()
TotpDialog::~TotpDialog()
{
+ if (m_totpUpdateTimer) {
+ delete m_totpUpdateTimer;
+ }
}
diff --git a/src/gui/TotpDialog.h b/src/gui/TotpDialog.h
index 33eac6658..ce21a66fd 100644
--- a/src/gui/TotpDialog.h
+++ b/src/gui/TotpDialog.h
@@ -21,6 +21,8 @@
#include <QDialog>
#include <QScopedPointer>
+#include <QTimer>
+#include <totp/totp.h>
#include "core/Entry.h"
#include "core/Database.h"
#include "gui/DatabaseWidget.h"
@@ -39,8 +41,9 @@ public:
private:
double uCounter;
- quint8 m_step;
+ quint8 m_step = Totp::defaultStep;
QScopedPointer<Ui::TotpDialog> m_ui;
+ QPointer<QTimer> m_totpUpdateTimer;
private Q_SLOTS:
void updateTotp();
@@ -51,7 +54,6 @@ private Q_SLOTS:
protected:
Entry* m_entry;
- DatabaseWidget* m_parent;
};
#endif // KEEPASSX_TOTPDIALOG_H
diff --git a/src/gui/UnlockDatabaseDialog.cpp b/src/gui/UnlockDatabaseDialog.cpp
index bf5cbdbc0..cea5918a9 100644
--- a/src/gui/UnlockDatabaseDialog.cpp
+++ b/src/gui/UnlockDatabaseDialog.cpp
@@ -30,9 +30,9 @@ UnlockDatabaseDialog::UnlockDatabaseDialog(QWidget* parent)
connect(m_view, SIGNAL(editFinished(bool)), this, SLOT(complete(bool)));
}
-void UnlockDatabaseDialog::setDBFilename(const QString& filename)
+void UnlockDatabaseDialog::setFilePath(const QString &filePath)
{
- m_view->load(filename);
+ m_view->load(filePath);
}
void UnlockDatabaseDialog::clearForms()
@@ -54,20 +54,3 @@ void UnlockDatabaseDialog::complete(bool r)
reject();
}
}
-
-Database* UnlockDatabaseDialog::openDatabasePrompt(QString databaseFilename)
-{
-
- UnlockDatabaseDialog* unlockDatabaseDialog = new UnlockDatabaseDialog();
- unlockDatabaseDialog->setObjectName("Open database");
- unlockDatabaseDialog->setDBFilename(databaseFilename);
- unlockDatabaseDialog->show();
- unlockDatabaseDialog->exec();
-
- Database* db = unlockDatabaseDialog->database();
- if (!db) {
- qWarning("Could not open database %s.", qPrintable(databaseFilename));
- }
- delete unlockDatabaseDialog;
- return db;
-}
diff --git a/src/gui/UnlockDatabaseDialog.h b/src/gui/UnlockDatabaseDialog.h
index 55830c97e..7dec06765 100644
--- a/src/gui/UnlockDatabaseDialog.h
+++ b/src/gui/UnlockDatabaseDialog.h
@@ -31,11 +31,10 @@ class UnlockDatabaseDialog : public QDialog
{
Q_OBJECT
public:
- explicit UnlockDatabaseDialog(QWidget* parent = Q_NULLPTR);
- void setDBFilename(const QString& filename);
+ explicit UnlockDatabaseDialog(QWidget* parent = nullptr);
+ void setFilePath(const QString &filePath);
void clearForms();
Database* database();
- static Database* openDatabasePrompt(QString databaseFilename);
signals:
void unlockDone(bool);
diff --git a/src/gui/WelcomeWidget.cpp b/src/gui/WelcomeWidget.cpp
index 9dc23d528..ed9d025a9 100644
--- a/src/gui/WelcomeWidget.cpp
+++ b/src/gui/WelcomeWidget.cpp
@@ -29,7 +29,7 @@ WelcomeWidget::WelcomeWidget(QWidget* parent)
{
m_ui->setupUi(this);
- m_ui->welcomeLabel->setText(m_ui->welcomeLabel->text() + " " + KEEPASSX_VERSION);
+ m_ui->welcomeLabel->setText(tr("Welcome to KeePassXC %1").arg(KEEPASSX_VERSION));
QFont welcomeLabelFont = m_ui->welcomeLabel->font();
welcomeLabelFont.setBold(true);
welcomeLabelFont.setPointSize(welcomeLabelFont.pointSize() + 4);
@@ -73,4 +73,4 @@ void WelcomeWidget::refreshLastDatabases()
itm->setText(database);
m_ui->recentListWidget->addItem(itm);
}
-} \ No newline at end of file
+}
diff --git a/src/gui/WelcomeWidget.ui b/src/gui/WelcomeWidget.ui
index da6bc859c..a842ff41b 100644
--- a/src/gui/WelcomeWidget.ui
+++ b/src/gui/WelcomeWidget.ui
@@ -72,9 +72,6 @@
</item>
<item>
<widget class="QLabel" name="welcomeLabel">
- <property name="text">
- <string>Welcome to KeePassXC</string>
- </property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
diff --git a/src/gui/csvImport/CsvImportWidget.cpp b/src/gui/csvImport/CsvImportWidget.cpp
index 23db871f3..ad56a873b 100644
--- a/src/gui/csvImport/CsvImportWidget.cpp
+++ b/src/gui/csvImport/CsvImportWidget.cpp
@@ -37,6 +37,8 @@ const QStringList CsvImportWidget::m_columnHeader = QStringList()
<< QObject::tr("Password")
<< QObject::tr("URL")
<< QObject::tr("Notes")
+ << QObject::tr("Last Modified")
+ << QObject::tr("Created")
// << QObject::tr("Future field1")
// << QObject::tr("Future field2")
// << QObject::tr("Future field3")
@@ -223,6 +225,21 @@ void CsvImportWidget::writeDatabase() {
entry->setPassword(m_parserModel->data(m_parserModel->index(r, 3)).toString());
entry->setUrl(m_parserModel->data(m_parserModel->index(r, 4)).toString());
entry->setNotes(m_parserModel->data(m_parserModel->index(r, 5)).toString());
+
+ TimeInfo timeInfo;
+ if (m_parserModel->data(m_parserModel->index(r, 6)).isValid()) {
+ qint64 lastModified = m_parserModel->data(m_parserModel->index(r, 6)).toString().toLongLong();
+ if (lastModified) {
+ timeInfo.setLastModificationTime(QDateTime::fromMSecsSinceEpoch(lastModified * 1000).toTimeSpec(Qt::UTC));
+ }
+ }
+ if (m_parserModel->data(m_parserModel->index(r, 7)).isValid()) {
+ qint64 created = m_parserModel->data(m_parserModel->index(r, 7)).toString().toLongLong();
+ if (created) {
+ timeInfo.setCreationTime(QDateTime::fromMSecsSinceEpoch(created * 1000).toTimeSpec(Qt::UTC));
+ }
+ }
+ entry->setTimeInfo(timeInfo);
}
QBuffer buffer;
buffer.open(QBuffer::ReadWrite);
diff --git a/src/gui/csvImport/CsvImportWizard.cpp b/src/gui/csvImport/CsvImportWizard.cpp
index 06ee23110..e9a8f4984 100644
--- a/src/gui/csvImport/CsvImportWizard.cpp
+++ b/src/gui/csvImport/CsvImportWizard.cpp
@@ -28,19 +28,9 @@ CsvImportWizard::CsvImportWizard(QWidget *parent)
: DialogyWidget(parent)
{
m_layout = new QGridLayout(this);
- m_pages = new QStackedWidget(parent);
- m_layout->addWidget(m_pages, 0, 0);
+ m_layout->addWidget(m_parse = new CsvImportWidget(this), 0, 0);
- m_pages->addWidget(key = new ChangeMasterKeyWidget(m_pages));
- m_pages->addWidget(parse = new CsvImportWidget(m_pages));
- key->headlineLabel()->setText(tr("Import CSV file"));
- QFont headLineFont = key->headlineLabel()->font();
- headLineFont.setBold(true);
- headLineFont.setPointSize(headLineFont.pointSize() + 2);
- key->headlineLabel()->setFont(headLineFont);
-
- connect(key, SIGNAL(editFinished(bool)), this, SLOT(keyFinished(bool)));
- connect(parse, SIGNAL(editFinished(bool)), this, SLOT(parseFinished(bool)));
+ connect(m_parse, SIGNAL(editFinished(bool)), this, SLOT(parseFinished(bool)));
}
CsvImportWizard::~CsvImportWizard()
@@ -49,30 +39,27 @@ CsvImportWizard::~CsvImportWizard()
void CsvImportWizard::load(const QString& filename, Database* database)
{
m_db = database;
- parse->load(filename, database);
- key->clearForms();
+ m_parse->load(filename, database);
}
-void CsvImportWizard::keyFinished(bool accepted)
+void CsvImportWizard::keyFinished(bool accepted, CompositeKey key)
{
if (!accepted) {
- emit(importFinished(false));
+ emit importFinished(false);
return;
}
- m_pages->setCurrentIndex(m_pages->currentIndex()+1);
-
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
- bool result = m_db->setKey(key->newMasterKey());
+ bool result = m_db->setKey(key);
QApplication::restoreOverrideCursor();
if (!result) {
MessageBox::critical(this, tr("Error"), tr("Unable to calculate master key"));
- emit(importFinished(false));
+ emit importFinished(false);
}
}
void CsvImportWizard::parseFinished(bool accepted)
{
- emit(importFinished(accepted));
+ emit importFinished(accepted);
}
diff --git a/src/gui/csvImport/CsvImportWizard.h b/src/gui/csvImport/CsvImportWizard.h
index 317018d99..b6414c0c9 100644
--- a/src/gui/csvImport/CsvImportWizard.h
+++ b/src/gui/csvImport/CsvImportWizard.h
@@ -38,19 +38,17 @@ public:
explicit CsvImportWizard(QWidget *parent = nullptr);
~CsvImportWizard();
void load(const QString& filename, Database *database);
+ void keyFinished(bool accepted, CompositeKey key);
signals:
void importFinished(bool accepted);
private slots:
- void keyFinished(bool accepted);
void parseFinished(bool accepted);
private:
Database* m_db;
- CsvImportWidget* parse;
- ChangeMasterKeyWidget* key;
- QStackedWidget *m_pages;
+ CsvImportWidget* m_parse;
QGridLayout *m_layout;
};
diff --git a/src/gui/csvImport/CsvParserModel.cpp b/src/gui/csvImport/CsvParserModel.cpp
index d4af2b785..29f389df2 100644
--- a/src/gui/csvImport/CsvParserModel.cpp
+++ b/src/gui/csvImport/CsvParserModel.cpp
@@ -31,9 +31,9 @@ void CsvParserModel::setFilename(const QString& filename) {
}
QString CsvParserModel::getFileInfo(){
- QString a(QString::number(getFileSize()).append(tr(" byte, ")));
- a.append(QString::number(getCsvRows())).append(tr(" rows, "));
- a.append(QString::number(qMax(0, getCsvCols()-1))).append(tr(" columns"));
+ QString a(tr("%n byte(s), ", nullptr, getFileSize()));
+ a.append(tr("%n row(s), ", nullptr, getCsvRows()));
+ a.append(tr("%n column(s)", nullptr, qMax(0, getCsvCols() - 1)));
return a;
}
diff --git a/src/gui/entry/AutoTypeAssociationsModel.cpp b/src/gui/entry/AutoTypeAssociationsModel.cpp
index 4a76233b4..442453de0 100644
--- a/src/gui/entry/AutoTypeAssociationsModel.cpp
+++ b/src/gui/entry/AutoTypeAssociationsModel.cpp
@@ -17,9 +17,12 @@
#include "AutoTypeAssociationsModel.h"
+#include "core/Entry.h"
+
AutoTypeAssociationsModel::AutoTypeAssociationsModel(QObject* parent)
: QAbstractListModel(parent)
, m_autoTypeAssociations(nullptr)
+ , m_entry(nullptr)
{
}
@@ -46,6 +49,11 @@ void AutoTypeAssociationsModel::setAutoTypeAssociations(AutoTypeAssociations* au
endResetModel();
}
+void AutoTypeAssociationsModel::setEntry(const Entry *entry)
+{
+ m_entry = entry;
+}
+
int AutoTypeAssociationsModel::rowCount(const QModelIndex& parent) const
{
if (!m_autoTypeAssociations || parent.isValid()) {
@@ -86,7 +94,12 @@ QVariant AutoTypeAssociationsModel::data(const QModelIndex& index, int role) con
if (role == Qt::DisplayRole) {
if (index.column() == 0) {
- return m_autoTypeAssociations->get(index.row()).window;
+ QString window = m_autoTypeAssociations->get(index.row()).window;
+ if (m_entry) {
+ window = m_entry->maskPasswordPlaceholders(window);
+ window = m_entry->resolveMultiplePlaceholders(window);
+ }
+ return window;
}
else {
QString sequence = m_autoTypeAssociations->get(index.row()).sequence;
diff --git a/src/gui/entry/AutoTypeAssociationsModel.h b/src/gui/entry/AutoTypeAssociationsModel.h
index cef8bc66b..1daa4a9c7 100644
--- a/src/gui/entry/AutoTypeAssociationsModel.h
+++ b/src/gui/entry/AutoTypeAssociationsModel.h
@@ -19,10 +19,11 @@
#define KEEPASSX_AUTOTYPEASSOCIATIONSMODEL_H
#include <QAbstractListModel>
+#include <QPointer>
#include "core/AutoTypeAssociations.h"
-class EntryAttributes;
+class Entry;
class AutoTypeAssociationsModel : public QAbstractListModel
{
@@ -31,6 +32,7 @@ class AutoTypeAssociationsModel : public QAbstractListModel
public:
explicit AutoTypeAssociationsModel(QObject* parent = nullptr);
void setAutoTypeAssociations(AutoTypeAssociations* autoTypeAssociations);
+ void setEntry(const Entry* entry);
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
@@ -47,6 +49,7 @@ public slots:
private:
AutoTypeAssociations* m_autoTypeAssociations;
+ QPointer<const Entry> m_entry;
};
#endif // KEEPASSX_AUTOTYPEASSOCIATIONSMODEL_H
diff --git a/src/gui/entry/AutoTypeMatchModel.cpp b/src/gui/entry/AutoTypeMatchModel.cpp
new file mode 100644
index 000000000..6a370dea5
--- /dev/null
+++ b/src/gui/entry/AutoTypeMatchModel.cpp
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2015 David Wu <lightvector@gmail.com>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AutoTypeMatchModel.h"
+
+#include <QFont>
+
+#include "core/DatabaseIcons.h"
+#include "core/Entry.h"
+#include "core/Global.h"
+#include "core/Group.h"
+#include "core/Metadata.h"
+
+AutoTypeMatchModel::AutoTypeMatchModel(QObject* parent)
+ : QAbstractTableModel(parent)
+{
+}
+
+AutoTypeMatch AutoTypeMatchModel::matchFromIndex(const QModelIndex& index) const
+{
+ Q_ASSERT(index.isValid() && index.row() < m_matches.size());
+ return m_matches.at(index.row());
+}
+
+QModelIndex AutoTypeMatchModel::indexFromMatch(AutoTypeMatch match) const
+{
+ int row = m_matches.indexOf(match);
+ Q_ASSERT(row != -1);
+ return index(row, 1);
+}
+
+void AutoTypeMatchModel::setMatchList(const QList<AutoTypeMatch>& matches)
+{
+ beginResetModel();
+
+ severConnections();
+
+ m_allGroups.clear();
+ m_matches = matches;
+
+ QSet<Database*> databases;
+
+ for (AutoTypeMatch& match : m_matches) {
+ databases.insert(match.entry->group()->database());
+ }
+
+ for (Database* db : asConst(databases)) {
+ Q_ASSERT(db);
+ for (const Group* group : db->rootGroup()->groupsRecursive(true)) {
+ m_allGroups.append(group);
+ }
+
+ if (db->metadata()->recycleBin()) {
+ m_allGroups.removeOne(db->metadata()->recycleBin());
+ }
+ }
+
+ for (const Group* group : asConst(m_allGroups)) {
+ makeConnections(group);
+ }
+
+ endResetModel();
+}
+
+int AutoTypeMatchModel::rowCount(const QModelIndex& parent) const
+{
+ if (parent.isValid()) {
+ return 0;
+ }
+ return m_matches.size();
+}
+
+int AutoTypeMatchModel::columnCount(const QModelIndex& parent) const
+{
+ Q_UNUSED(parent);
+
+ return 4;
+}
+
+QVariant AutoTypeMatchModel::data(const QModelIndex& index, int role) const
+{
+ if (!index.isValid()) {
+ return {};
+ }
+
+ AutoTypeMatch match = matchFromIndex(index);
+
+ if (role == Qt::DisplayRole) {
+ QString result;
+ switch (index.column()) {
+ case ParentGroup:
+ if (match.entry->group()) {
+ return match.entry->group()->name();
+ }
+ break;
+ case Title:
+ return match.entry->resolveMultiplePlaceholders(match.entry->title());
+ case Username:
+ return match.entry->resolveMultiplePlaceholders(match.entry->username());
+ case Sequence:
+ return match.sequence;
+ }
+ } else if (role == Qt::DecorationRole) {
+ switch (index.column()) {
+ case ParentGroup:
+ if (match.entry->group()) {
+ return match.entry->group()->iconScaledPixmap();
+ }
+ break;
+ case Title:
+ if (match.entry->isExpired()) {
+ return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex);
+ } else {
+ return match.entry->iconScaledPixmap();
+ }
+ }
+ } else if (role == Qt::FontRole) {
+ QFont font;
+ if (match.entry->isExpired()) {
+ font.setStrikeOut(true);
+ }
+ return font;
+ }
+
+ return {};
+}
+
+QVariant AutoTypeMatchModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
+ switch (section) {
+ case ParentGroup:
+ return tr("Group");
+ case Title:
+ return tr("Title");
+ case Username:
+ return tr("Username");
+ case Sequence:
+ return tr("Sequence");
+ }
+ }
+
+ return {};
+}
+
+void AutoTypeMatchModel::entryDataChanged(Entry* entry)
+{
+ for (int row = 0; row < m_matches.size(); ++row) {
+ AutoTypeMatch match = m_matches[row];
+ if (match.entry == entry) {
+ emit dataChanged(index(row, 0), index(row, columnCount()-1));
+ }
+ }
+}
+
+
+void AutoTypeMatchModel::entryAboutToRemove(Entry* entry)
+{
+ for (int row = 0; row < m_matches.size(); ++row) {
+ AutoTypeMatch match = m_matches[row];
+ if (match.entry == entry) {
+ beginRemoveRows(QModelIndex(), row, row);
+ m_matches.removeAt(row);
+ endRemoveRows();
+ --row;
+ }
+ }
+}
+
+void AutoTypeMatchModel::entryRemoved()
+{
+}
+
+void AutoTypeMatchModel::severConnections()
+{
+ for (const Group* group : asConst(m_allGroups)) {
+ disconnect(group, nullptr, this, nullptr);
+ }
+}
+
+void AutoTypeMatchModel::makeConnections(const Group* group)
+{
+ connect(group, SIGNAL(entryAboutToRemove(Entry*)), SLOT(entryAboutToRemove(Entry*)));
+ connect(group, SIGNAL(entryRemoved(Entry*)), SLOT(entryRemoved()));
+ connect(group, SIGNAL(entryDataChanged(Entry*)), SLOT(entryDataChanged(Entry*)));
+}
diff --git a/src/gui/entry/AutoTypeMatchModel.h b/src/gui/entry/AutoTypeMatchModel.h
new file mode 100644
index 000000000..791dbc3df
--- /dev/null
+++ b/src/gui/entry/AutoTypeMatchModel.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2015 David Wu <lightvector@gmail.com>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_AUTOTYPEMATCHMODEL_H
+#define KEEPASSX_AUTOTYPEMATCHMODEL_H
+
+#include <QAbstractTableModel>
+
+#include "core/AutoTypeMatch.h"
+
+class Entry;
+class Group;
+
+class AutoTypeMatchModel : public QAbstractTableModel
+{
+ Q_OBJECT
+
+public:
+ enum ModelColumn
+ {
+ ParentGroup = 0,
+ Title = 1,
+ Username = 2,
+ Sequence = 3
+ };
+
+ explicit AutoTypeMatchModel(QObject* parent = nullptr);
+ AutoTypeMatch matchFromIndex(const QModelIndex& index) const;
+ QModelIndex indexFromMatch(AutoTypeMatch match) const;
+
+ int rowCount(const QModelIndex& parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex& parent = QModelIndex()) const override;
+ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
+ QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
+
+ void setMatchList(const QList<AutoTypeMatch>& matches);
+
+private slots:
+ void entryAboutToRemove(Entry* entry);
+ void entryRemoved();
+ void entryDataChanged(Entry* entry);
+
+private:
+ void severConnections();
+ void makeConnections(const Group* group);
+
+ QList<AutoTypeMatch> m_matches;
+ QList<const Group*> m_allGroups;
+};
+
+#endif // KEEPASSX_AUTOTYPEMATCHMODEL_H
diff --git a/src/gui/entry/AutoTypeMatchView.cpp b/src/gui/entry/AutoTypeMatchView.cpp
new file mode 100644
index 000000000..67f38c79e
--- /dev/null
+++ b/src/gui/entry/AutoTypeMatchView.cpp
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2015 David Wu <lightvector@gmail.com>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AutoTypeMatchView.h"
+
+#include <QHeaderView>
+#include <QKeyEvent>
+
+#include "gui/SortFilterHideProxyModel.h"
+
+AutoTypeMatchView::AutoTypeMatchView(QWidget* parent)
+ : QTreeView(parent)
+ , m_model(new AutoTypeMatchModel(this))
+ , m_sortModel(new SortFilterHideProxyModel(this))
+{
+ m_sortModel->setSourceModel(m_model);
+ m_sortModel->setDynamicSortFilter(true);
+ m_sortModel->setSortLocaleAware(true);
+ m_sortModel->setSortCaseSensitivity(Qt::CaseInsensitive);
+ QTreeView::setModel(m_sortModel);
+
+ setUniformRowHeights(true);
+ setRootIsDecorated(false);
+ setAlternatingRowColors(true);
+ setDragEnabled(false);
+ setSortingEnabled(true);
+ setSelectionMode(QAbstractItemView::SingleSelection);
+ header()->setDefaultSectionSize(150);
+
+ connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(emitMatchActivated(QModelIndex)));
+ connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SIGNAL(matchSelectionChanged()));
+}
+
+void AutoTypeMatchView::keyPressEvent(QKeyEvent* event)
+{
+ if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) && currentIndex().isValid()) {
+ emitMatchActivated(currentIndex());
+#ifdef Q_OS_MAC
+ // Pressing return does not emit the QTreeView::activated signal on mac os
+ emit activated(currentIndex());
+#endif
+ }
+
+ QTreeView::keyPressEvent(event);
+}
+
+void AutoTypeMatchView::setMatchList(const QList<AutoTypeMatch>& matches)
+{
+ m_model->setMatchList(matches);
+ for (int i = 0; i < m_model->columnCount(); ++i) {
+ resizeColumnToContents(i);
+ if (columnWidth(i) > 250) {
+ setColumnWidth(i, 250);
+ }
+ }
+ setFirstMatchActive();
+}
+
+void AutoTypeMatchView::setFirstMatchActive()
+{
+ if (m_model->rowCount() > 0) {
+ QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(0, 0));
+ setCurrentMatch(m_model->matchFromIndex(index));
+ } else {
+ emit matchSelectionChanged();
+ }
+}
+
+void AutoTypeMatchView::emitMatchActivated(const QModelIndex& index)
+{
+ AutoTypeMatch match = matchFromIndex(index);
+
+ emit matchActivated(match);
+}
+
+AutoTypeMatch AutoTypeMatchView::currentMatch()
+{
+ QModelIndexList list = selectionModel()->selectedRows();
+ if (list.size() == 1) {
+ return m_model->matchFromIndex(m_sortModel->mapToSource(list.first()));
+ }
+ return AutoTypeMatch();
+}
+
+void AutoTypeMatchView::setCurrentMatch(AutoTypeMatch match)
+{
+ selectionModel()->setCurrentIndex(m_sortModel->mapFromSource(m_model->indexFromMatch(match)),
+ QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+}
+
+AutoTypeMatch AutoTypeMatchView::matchFromIndex(const QModelIndex& index)
+{
+ if (index.isValid()) {
+ return m_model->matchFromIndex(m_sortModel->mapToSource(index));
+ }
+ return AutoTypeMatch();
+}
diff --git a/src/gui/entry/AutoTypeMatchView.h b/src/gui/entry/AutoTypeMatchView.h
new file mode 100644
index 000000000..14ad9ea2a
--- /dev/null
+++ b/src/gui/entry/AutoTypeMatchView.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2015 David Wu <lightvector@gmail.com>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_AUTOTYPEMATCHVIEW_H
+#define KEEPASSX_AUTOTYPEMATCHVIEW_H
+
+#include <QTreeView>
+
+#include "core/AutoTypeMatch.h"
+
+#include "gui/entry/AutoTypeMatchModel.h"
+
+class SortFilterHideProxyModel;
+
+class AutoTypeMatchView : public QTreeView
+{
+ Q_OBJECT
+
+public:
+ explicit AutoTypeMatchView(QWidget* parent = nullptr);
+ AutoTypeMatch currentMatch();
+ void setCurrentMatch(AutoTypeMatch match);
+ AutoTypeMatch matchFromIndex(const QModelIndex& index);
+ void setMatchList(const QList<AutoTypeMatch>& matches);
+ void setFirstMatchActive();
+
+signals:
+ void matchActivated(AutoTypeMatch match);
+ void matchSelectionChanged();
+
+protected:
+ void keyPressEvent(QKeyEvent* event) override;
+
+private slots:
+ void emitMatchActivated(const QModelIndex& index);
+
+private:
+ AutoTypeMatchModel* const m_model;
+ SortFilterHideProxyModel* const m_sortModel;
+};
+
+#endif // KEEPASSX_AUTOTYPEMATCHVIEW_H
diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp
index 5a058bda4..3b70e4453 100644
--- a/src/gui/entry/EditEntryWidget.cpp
+++ b/src/gui/entry/EditEntryWidget.cpp
@@ -19,6 +19,7 @@
#include "EditEntryWidget.h"
#include "ui_EditEntryWidgetAdvanced.h"
#include "ui_EditEntryWidgetAutoType.h"
+#include "ui_EditEntryWidgetSSHAgent.h"
#include "ui_EditEntryWidgetHistory.h"
#include "ui_EditEntryWidgetMain.h"
@@ -28,7 +29,11 @@
#include <QMenu>
#include <QSortFilterProxyModel>
#include <QTemporaryFile>
+#include <QMimeData>
+#include <QEvent>
+#include <QColorDialog>
+#include "autotype/AutoType.h"
#include "core/Config.h"
#include "core/Database.h"
#include "core/Entry.h"
@@ -36,10 +41,17 @@
#include "core/Metadata.h"
#include "core/TimeDelta.h"
#include "core/Tools.h"
+#ifdef WITH_XC_SSHAGENT
+#include "sshagent/KeeAgentSettings.h"
+#include "sshagent/OpenSSHKey.h"
+#include "sshagent/SSHAgent.h"
+#endif
#include "gui/EditWidgetIcons.h"
#include "gui/EditWidgetProperties.h"
#include "gui/FileDialog.h"
#include "gui/MessageBox.h"
+#include "gui/Clipboard.h"
+#include "gui/Font.h"
#include "gui/entry/AutoTypeAssociationsModel.h"
#include "gui/entry/EntryAttachmentsModel.h"
#include "gui/entry/EntryAttributesModel.h"
@@ -51,15 +63,15 @@ EditEntryWidget::EditEntryWidget(QWidget* parent)
, m_mainUi(new Ui::EditEntryWidgetMain())
, m_advancedUi(new Ui::EditEntryWidgetAdvanced())
, m_autoTypeUi(new Ui::EditEntryWidgetAutoType())
+ , m_sshAgentUi(new Ui::EditEntryWidgetSSHAgent())
, m_historyUi(new Ui::EditEntryWidgetHistory())
, m_mainWidget(new QWidget())
, m_advancedWidget(new QWidget())
, m_iconsWidget(new EditWidgetIcons())
, m_autoTypeWidget(new QWidget())
+ , m_sshAgentWidget(new QWidget())
, m_editWidgetProperties(new EditWidgetProperties())
, m_historyWidget(new QWidget())
- , m_entryAttachments(new EntryAttachments(this))
- , m_attachmentsModel(new EntryAttachmentsModel(m_advancedWidget))
, m_entryAttributes(new EntryAttributes(this))
, m_attributesModel(new EntryAttributesModel(m_advancedWidget))
, m_historyModel(new EntryHistoryModel(this))
@@ -73,12 +85,20 @@ EditEntryWidget::EditEntryWidget(QWidget* parent)
setupAdvanced();
setupIcon();
setupAutoType();
+#ifdef WITH_XC_SSHAGENT
+ if (config()->get("SSHAgent", false).toBool()) {
+ setupSSHAgent();
+ m_sshAgentEnabled = true;
+ } else {
+ m_sshAgentEnabled = false;
+ }
+#endif
setupProperties();
setupHistory();
connect(this, SIGNAL(accepted()), SLOT(acceptEntry()));
connect(this, SIGNAL(rejected()), SLOT(cancel()));
- connect(this, SIGNAL(apply()), SLOT(saveEntry()));
+ connect(this, SIGNAL(apply()), SLOT(commitEntry()));
connect(m_iconsWidget, SIGNAL(messageEditEntry(QString, MessageWidget::MessageType)), SLOT(showMessage(QString, MessageWidget::MessageType)));
connect(m_iconsWidget, SIGNAL(messageEditEntryDismiss()), SLOT(hideMessage()));
@@ -99,6 +119,7 @@ void EditEntryWidget::setupMain()
connect(m_mainUi->togglePasswordButton, SIGNAL(toggled(bool)), m_mainUi->passwordEdit, SLOT(setShowPassword(bool)));
connect(m_mainUi->togglePasswordGeneratorButton, SIGNAL(toggled(bool)), SLOT(togglePasswordGeneratorButton(bool)));
connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool)));
+ connect(m_mainUi->notesEnabled, SIGNAL(toggled(bool)), this, SLOT(toggleHideNotes(bool)));
m_mainUi->passwordRepeatEdit->enableVerifyMode(m_mainUi->passwordEdit);
connect(m_mainUi->passwordGenerator, SIGNAL(appliedPassword(QString)), SLOT(setGeneratedPassword(QString)));
@@ -107,7 +128,7 @@ void EditEntryWidget::setupMain()
QAction *action = new QAction(this);
action->setShortcut(Qt::CTRL | Qt::Key_Return);
- connect(action, SIGNAL(triggered()), this, SLOT(saveEntry()));
+ connect(action, SIGNAL(triggered()), this, SLOT(commitEntry()));
this->addAction(action);
m_mainUi->passwordGenerator->hide();
@@ -119,15 +140,12 @@ void EditEntryWidget::setupAdvanced()
m_advancedUi->setupUi(m_advancedWidget);
addPage(tr("Advanced"), FilePath::instance()->icon("categories", "preferences-other"), m_advancedWidget);
- m_attachmentsModel->setEntryAttachments(m_entryAttachments);
- m_advancedUi->attachmentsView->setModel(m_attachmentsModel);
- connect(m_advancedUi->attachmentsView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
- SLOT(updateAttachmentButtonsEnabled(QModelIndex)));
- connect(m_advancedUi->attachmentsView, SIGNAL(doubleClicked(QModelIndex)), SLOT(openAttachment(QModelIndex)));
- connect(m_advancedUi->saveAttachmentButton, SIGNAL(clicked()), SLOT(saveCurrentAttachment()));
- connect(m_advancedUi->openAttachmentButton, SIGNAL(clicked()), SLOT(openCurrentAttachment()));
- connect(m_advancedUi->addAttachmentButton, SIGNAL(clicked()), SLOT(insertAttachment()));
- connect(m_advancedUi->removeAttachmentButton, SIGNAL(clicked()), SLOT(removeCurrentAttachment()));
+ m_advancedUi->attachmentsWidget->setReadOnly(false);
+ m_advancedUi->attachmentsWidget->setButtonsVisible(true);
+
+ connect(m_advancedUi->attachmentsWidget, &EntryAttachmentsWidget::errorOccurred, this, [this](const QString &error) {
+ showMessage(error, MessageWidget::Error);
+ });
m_attributesModel->setEntryAttributes(m_entryAttributes);
m_advancedUi->attributesView->setModel(m_attributesModel);
@@ -139,6 +157,8 @@ void EditEntryWidget::setupAdvanced()
connect(m_advancedUi->attributesView->selectionModel(),
SIGNAL(currentChanged(QModelIndex,QModelIndex)),
SLOT(updateCurrentAttribute()));
+ connect(m_advancedUi->fgColorButton, SIGNAL(clicked()), SLOT(pickColor()));
+ connect(m_advancedUi->bgColorButton, SIGNAL(clicked()), SLOT(pickColor()));
}
void EditEntryWidget::setupIcon()
@@ -153,8 +173,6 @@ void EditEntryWidget::setupAutoType()
m_autoTypeDefaultSequenceGroup->addButton(m_autoTypeUi->inheritSequenceButton);
m_autoTypeDefaultSequenceGroup->addButton(m_autoTypeUi->customSequenceButton);
- m_autoTypeWindowSequenceGroup->addButton(m_autoTypeUi->defaultWindowSequenceButton);
- m_autoTypeWindowSequenceGroup->addButton(m_autoTypeUi->customWindowSequenceButton);
m_autoTypeAssocModel->setAutoTypeAssociations(m_autoTypeAssoc);
m_autoTypeUi->assocView->setModel(m_autoTypeAssocModel);
m_autoTypeUi->assocView->setColumnHidden(1, true);
@@ -173,7 +191,7 @@ void EditEntryWidget::setupAutoType()
connect(m_autoTypeAssocModel, SIGNAL(modelReset()), SLOT(clearCurrentAssoc()));
connect(m_autoTypeUi->windowTitleCombo, SIGNAL(editTextChanged(QString)),
SLOT(applyCurrentAssoc()));
- connect(m_autoTypeUi->defaultWindowSequenceButton, SIGNAL(toggled(bool)),
+ connect(m_autoTypeUi->customWindowSequenceButton, SIGNAL(toggled(bool)),
SLOT(applyCurrentAssoc()));
connect(m_autoTypeUi->windowSequenceEdit, SIGNAL(textChanged(QString)),
SLOT(applyCurrentAssoc()));
@@ -243,6 +261,257 @@ void EditEntryWidget::updateHistoryButtons(const QModelIndex& current, const QMo
}
}
+#ifdef WITH_XC_SSHAGENT
+void EditEntryWidget::setupSSHAgent()
+{
+ m_sshAgentUi->setupUi(m_sshAgentWidget);
+
+ QFont fixedFont = Font::fixedFont();
+ m_sshAgentUi->fingerprintTextLabel->setFont(fixedFont);
+ m_sshAgentUi->commentTextLabel->setFont(fixedFont);
+ m_sshAgentUi->publicKeyEdit->setFont(fixedFont);
+
+ connect(m_sshAgentUi->attachmentRadioButton, SIGNAL(clicked(bool)), SLOT(updateSSHAgentKeyInfo()));
+ connect(m_sshAgentUi->attachmentComboBox, SIGNAL(currentIndexChanged(int)), SLOT(updateSSHAgentAttachment()));
+ connect(m_sshAgentUi->externalFileRadioButton, SIGNAL(clicked(bool)), SLOT(updateSSHAgentKeyInfo()));
+ connect(m_sshAgentUi->externalFileEdit, SIGNAL(textChanged(QString)), SLOT(updateSSHAgentKeyInfo()));
+ connect(m_sshAgentUi->browseButton, SIGNAL(clicked()), SLOT(browsePrivateKey()));
+ connect(m_sshAgentUi->addToAgentButton, SIGNAL(clicked()), SLOT(addKeyToAgent()));
+ connect(m_sshAgentUi->removeFromAgentButton, SIGNAL(clicked()), SLOT(removeKeyFromAgent()));
+ connect(m_sshAgentUi->decryptButton, SIGNAL(clicked()), SLOT(decryptPrivateKey()));
+ connect(m_sshAgentUi->copyToClipboardButton, SIGNAL(clicked()), SLOT(copyPublicKey()));
+
+ addPage(tr("SSH Agent"), FilePath::instance()->icon("apps", "utilities-terminal"), m_sshAgentWidget);
+}
+
+void EditEntryWidget::updateSSHAgent()
+{
+ KeeAgentSettings settings;
+ settings.fromXml(m_advancedUi->attachmentsWidget->getAttachment("KeeAgent.settings"));
+
+ m_sshAgentUi->addKeyToAgentCheckBox->setChecked(settings.addAtDatabaseOpen());
+ m_sshAgentUi->removeKeyFromAgentCheckBox->setChecked(settings.removeAtDatabaseClose());
+ m_sshAgentUi->requireUserConfirmationCheckBox->setChecked(settings.useConfirmConstraintWhenAdding());
+ m_sshAgentUi->lifetimeCheckBox->setChecked(settings.useLifetimeConstraintWhenAdding());
+ m_sshAgentUi->lifetimeSpinBox->setValue(settings.lifetimeConstraintDuration());
+ m_sshAgentUi->attachmentComboBox->clear();
+ m_sshAgentUi->addToAgentButton->setEnabled(false);
+ m_sshAgentUi->removeFromAgentButton->setEnabled(false);
+ m_sshAgentUi->copyToClipboardButton->setEnabled(false);
+
+ m_sshAgentUi->attachmentComboBox->addItem("");
+
+ auto attachments = m_advancedUi->attachmentsWidget->entryAttachments();
+ for (const QString& fileName : attachments->keys()) {
+ if (fileName == "KeeAgent.settings") {
+ continue;
+ }
+
+ m_sshAgentUi->attachmentComboBox->addItem(fileName);
+ }
+
+ m_sshAgentUi->attachmentComboBox->setCurrentText(settings.attachmentName());
+ m_sshAgentUi->externalFileEdit->setText(settings.fileName());
+
+ if (settings.selectedType() == "attachment") {
+ m_sshAgentUi->attachmentRadioButton->setChecked(true);
+ } else {
+ m_sshAgentUi->externalFileRadioButton->setChecked(true);
+ }
+
+ m_sshAgentSettings = settings;
+
+ updateSSHAgentKeyInfo();
+}
+
+void EditEntryWidget::updateSSHAgentAttachment()
+{
+ m_sshAgentUi->attachmentRadioButton->setChecked(true);
+ updateSSHAgentKeyInfo();
+}
+
+void EditEntryWidget::updateSSHAgentKeyInfo()
+{
+ m_sshAgentUi->addToAgentButton->setEnabled(false);
+ m_sshAgentUi->removeFromAgentButton->setEnabled(false);
+ m_sshAgentUi->copyToClipboardButton->setEnabled(false);
+ m_sshAgentUi->fingerprintTextLabel->setText(tr("n/a"));
+ m_sshAgentUi->commentTextLabel->setText(tr("n/a"));
+ m_sshAgentUi->decryptButton->setEnabled(false);
+ m_sshAgentUi->publicKeyEdit->document()->setPlainText("");
+
+ OpenSSHKey key;
+
+ if (!getOpenSSHKey(key)) {
+ return;
+ }
+
+ m_sshAgentUi->fingerprintTextLabel->setText(key.fingerprint());
+
+ if (key.encrypted()) {
+ m_sshAgentUi->commentTextLabel->setText(tr("(encrypted)"));
+ m_sshAgentUi->decryptButton->setEnabled(true);
+ } else {
+ m_sshAgentUi->commentTextLabel->setText(key.comment());
+ }
+
+ m_sshAgentUi->publicKeyEdit->document()->setPlainText(key.publicKey());
+
+ // enable agent buttons only if we have an agent running
+ if (SSHAgent::instance()->isAgentRunning()) {
+ m_sshAgentUi->addToAgentButton->setEnabled(true);
+ m_sshAgentUi->removeFromAgentButton->setEnabled(true);
+ }
+
+ m_sshAgentUi->copyToClipboardButton->setEnabled(true);
+}
+
+void EditEntryWidget::saveSSHAgentConfig()
+{
+ KeeAgentSettings settings;
+ QString privateKeyPath = m_sshAgentUi->attachmentComboBox->currentText();
+
+ settings.setAddAtDatabaseOpen(m_sshAgentUi->addKeyToAgentCheckBox->isChecked());
+ settings.setRemoveAtDatabaseClose(m_sshAgentUi->removeKeyFromAgentCheckBox->isChecked());
+ settings.setUseConfirmConstraintWhenAdding(m_sshAgentUi->requireUserConfirmationCheckBox->isChecked());
+ settings.setUseLifetimeConstraintWhenAdding(m_sshAgentUi->lifetimeCheckBox->isChecked());
+ settings.setLifetimeConstraintDuration(m_sshAgentUi->lifetimeSpinBox->value());
+
+ if (m_sshAgentUi->attachmentRadioButton->isChecked()) {
+ settings.setSelectedType("attachment");
+ } else {
+ settings.setSelectedType("file");
+ }
+ settings.setAttachmentName(m_sshAgentUi->attachmentComboBox->currentText());
+ settings.setFileName(m_sshAgentUi->externalFileEdit->text());
+
+ // we don't use this as we don't run an agent but for compatibility we set it if necessary
+ settings.setAllowUseOfSshKey(settings.addAtDatabaseOpen() || settings.removeAtDatabaseClose());
+
+ // we don't use this either but we don't want it to dirty flag the config
+ settings.setSaveAttachmentToTempFile(m_sshAgentSettings.saveAttachmentToTempFile());
+
+ if (settings.isDefault()) {
+ m_advancedUi->attachmentsWidget->removeAttachment("KeeAgent.settings");
+ } else if (settings != m_sshAgentSettings) {
+ m_advancedUi->attachmentsWidget->setAttachment("KeeAgent.settings", settings.toXml());
+ }
+
+ m_sshAgentSettings = settings;
+}
+
+void EditEntryWidget::browsePrivateKey()
+{
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Select private key"), "");
+ if (!fileName.isEmpty()) {
+ m_sshAgentUi->externalFileEdit->setText(fileName);
+ m_sshAgentUi->externalFileRadioButton->setChecked(true);
+ updateSSHAgentKeyInfo();
+ }
+}
+
+bool EditEntryWidget::getOpenSSHKey(OpenSSHKey& key)
+{
+ QByteArray privateKeyData;
+
+ if (m_sshAgentUi->attachmentRadioButton->isChecked()) {
+ privateKeyData = m_advancedUi->attachmentsWidget->getAttachment(m_sshAgentUi->attachmentComboBox->currentText());
+ } else {
+ QFile localFile(m_sshAgentUi->externalFileEdit->text());
+
+ if (localFile.fileName().isEmpty()) {
+ return false;
+ }
+
+ if (localFile.size() > 1024 * 1024) {
+ showMessage(tr("File too large to be a private key"), MessageWidget::Error);
+ return false;
+ }
+
+ if (!localFile.open(QIODevice::ReadOnly)) {
+ showMessage(tr("Failed to open private key"), MessageWidget::Error);
+ return false;
+ }
+
+ privateKeyData = localFile.readAll();
+ }
+
+ if (privateKeyData.length() == 0) {
+ return false;
+ }
+
+ if (!key.parse(privateKeyData)) {
+ showMessage(key.errorString(), MessageWidget::Error);
+ return false;
+ }
+
+ if (key.comment().isEmpty()) {
+ key.setComment(m_entry->username());
+ }
+
+ return true;
+}
+
+void EditEntryWidget::addKeyToAgent()
+{
+ OpenSSHKey key;
+
+ if (!getOpenSSHKey(key)) {
+ return;
+ }
+
+ if (!key.openPrivateKey(m_entry->password())) {
+ showMessage(key.errorString(), MessageWidget::Error);
+ } else {
+ m_sshAgentUi->commentTextLabel->setText(key.comment());
+ m_sshAgentUi->publicKeyEdit->document()->setPlainText(key.publicKey());
+ }
+
+ quint32 lifetime = 0;
+ bool confirm = m_sshAgentUi->requireUserConfirmationCheckBox->isChecked();
+
+ if (m_sshAgentUi->lifetimeCheckBox->isChecked()) {
+ lifetime = m_sshAgentUi->lifetimeSpinBox->value();
+ }
+
+ SSHAgent::instance()->addIdentity(key, lifetime, confirm);
+
+ if (m_sshAgentUi->removeKeyFromAgentCheckBox->isChecked()) {
+ SSHAgent::instance()->removeIdentityAtLock(key, m_entry->uuid());
+ }
+}
+
+void EditEntryWidget::removeKeyFromAgent()
+{
+ OpenSSHKey key;
+
+ if (getOpenSSHKey(key)) {
+ SSHAgent::instance()->removeIdentity(key);
+ }
+}
+
+void EditEntryWidget::decryptPrivateKey()
+{
+ OpenSSHKey key;
+
+ if (!getOpenSSHKey(key)) {
+ return;
+ }
+
+ if (!key.openPrivateKey(m_entry->password())) {
+ showMessage(key.errorString(), MessageWidget::Error);
+ } else {
+ m_sshAgentUi->commentTextLabel->setText(key.comment());
+ m_sshAgentUi->publicKeyEdit->document()->setPlainText(key.publicKey());
+ }
+}
+
+void EditEntryWidget::copyPublicKey()
+{
+ clipboard()->setText(m_sshAgentUi->publicKeyEdit->document()->toPlainText());
+}
+#endif
+
void EditEntryWidget::useExpiryPreset(QAction* action)
{
m_mainUi->expireCheck->setChecked(true);
@@ -252,13 +521,10 @@ void EditEntryWidget::useExpiryPreset(QAction* action)
m_mainUi->expireDatePicker->setDateTime(expiryDateTime);
}
-void EditEntryWidget::updateAttachmentButtonsEnabled(const QModelIndex& current)
+void EditEntryWidget::toggleHideNotes(bool visible)
{
- bool enable = current.isValid();
-
- m_advancedUi->saveAttachmentButton->setEnabled(enable);
- m_advancedUi->openAttachmentButton->setEnabled(enable);
- m_advancedUi->removeAttachmentButton->setEnabled(enable && !m_history);
+ m_mainUi->notesEdit->setVisible(visible);
+ m_mainUi->notesHint->setVisible(!visible);
}
QString EditEntryWidget::entryTitle() const
@@ -309,12 +575,15 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
m_mainUi->passwordRepeatEdit->setReadOnly(m_history);
m_mainUi->expireCheck->setEnabled(!m_history);
m_mainUi->expireDatePicker->setReadOnly(m_history);
+ m_mainUi->notesEnabled->setChecked(!config()->get("security/hidenotes").toBool());
m_mainUi->notesEdit->setReadOnly(m_history);
+ m_mainUi->notesEdit->setVisible(!config()->get("security/hidenotes").toBool());
+ m_mainUi->notesHint->setVisible(config()->get("security/hidenotes").toBool());
m_mainUi->togglePasswordGeneratorButton->setChecked(false);
m_mainUi->togglePasswordGeneratorButton->setDisabled(m_history);
m_mainUi->passwordGenerator->reset();
- m_advancedUi->addAttachmentButton->setEnabled(!m_history);
- updateAttachmentButtonsEnabled(m_advancedUi->attachmentsView->currentIndex());
+
+ m_advancedUi->attachmentsWidget->setReadOnly(m_history);
m_advancedUi->addAttributeButton->setEnabled(!m_history);
m_advancedUi->editAttributeButton->setEnabled(false);
m_advancedUi->removeAttributeButton->setEnabled(false);
@@ -327,6 +596,8 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
editTriggers = QAbstractItemView::DoubleClicked;
}
m_advancedUi->attributesView->setEditTriggers(editTriggers);
+ setupColorButton(true, entry->foregroundColor());
+ setupColorButton(false, entry->backgroundColor());
m_iconsWidget->setEnabled(!m_history);
m_autoTypeUi->sequenceEdit->setReadOnly(m_history);
m_autoTypeUi->windowTitleCombo->lineEdit()->setReadOnly(m_history);
@@ -345,7 +616,7 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
m_mainUi->notesEdit->setPlainText(entry->notes());
- m_entryAttachments->copyDataFrom(entry->attachments());
+ m_advancedUi->attachmentsWidget->setEntryAttachments(entry->attachments());
m_entryAttributes->copyCustomKeysFrom(entry->attributes());
if (m_attributesModel->rowCount() != 0) {
@@ -376,9 +647,10 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
}
m_autoTypeUi->sequenceEdit->setText(entry->effectiveAutoTypeSequence());
m_autoTypeUi->windowTitleCombo->lineEdit()->clear();
- m_autoTypeUi->defaultWindowSequenceButton->setChecked(true);
+ m_autoTypeUi->customWindowSequenceButton->setChecked(false);
m_autoTypeUi->windowSequenceEdit->setText("");
m_autoTypeAssoc->copyDataFrom(entry->autoTypeAssociations());
+ m_autoTypeAssocModel->setEntry(entry);
if (m_autoTypeAssoc->size() != 0) {
m_autoTypeUi->assocView->setCurrentIndex(m_autoTypeAssocModel->index(0, 0));
}
@@ -387,7 +659,14 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
}
updateAutoTypeEnabled();
+#ifdef WITH_XC_SSHAGENT
+ if (m_sshAgentEnabled) {
+ updateSSHAgent();
+ }
+#endif
+
m_editWidgetProperties->setFields(entry->timeInfo(), entry->uuid());
+ m_editWidgetProperties->setCustomData(entry->customData());
if (!m_history && !restore) {
m_historyModel->setEntries(entry->historyItems());
@@ -405,20 +684,39 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
m_mainUi->titleEdit->setFocus();
}
-void EditEntryWidget::saveEntry()
+/**
+ * Commit the form values to in-memory database representation
+ *
+ * @return true is commit successful, otherwise false
+ */
+bool EditEntryWidget::commitEntry()
{
if (m_history) {
clear();
hideMessage();
emit editFinished(false);
- return;
+ return true;
}
if (!passwordsEqual()) {
showMessage(tr("Different passwords supplied."), MessageWidget::Error);
- return;
+ return false;
+ }
+
+ // Ask the user to apply the generator password, if open
+ if (m_mainUi->togglePasswordGeneratorButton->isChecked() &&
+ m_mainUi->passwordGenerator->getGeneratedPassword() != m_mainUi->passwordEdit->text()) {
+ auto answer = MessageBox::question(this, tr("Apply generated password?"),
+ tr("Do you want to apply the generated password to this entry?"),
+ QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+ if (answer == QMessageBox::Yes) {
+ m_mainUi->passwordGenerator->applyPassword();
+ }
}
+ // Hide the password generator
+ m_mainUi->togglePasswordGeneratorButton->setChecked(false);
+
if (m_advancedUi->attributesView->currentIndex().isValid() && m_advancedUi->attributesEdit->isEnabled()) {
QString key = m_attributesModel->keyByIndex(m_advancedUi->attributesView->currentIndex());
m_entryAttributes->set(key, m_advancedUi->attributesEdit->toPlainText(),
@@ -434,6 +732,12 @@ void EditEntryWidget::saveEntry()
m_autoTypeAssoc->removeEmpty();
+#ifdef WITH_XC_SSHAGENT
+ if (m_sshAgentEnabled) {
+ saveSSHAgentConfig();
+ }
+#endif
+
if (!m_create) {
m_entry->beginUpdate();
}
@@ -444,52 +748,72 @@ void EditEntryWidget::saveEntry()
if (!m_create) {
m_entry->endUpdate();
}
+
+#ifdef WITH_XC_SSHAGENT
+ if (m_sshAgentEnabled) {
+ updateSSHAgent();
+ }
+#endif
+
+ m_historyModel->setEntries(m_entry->historyItems());
+
+ showMessage(tr("Entry updated successfully."), MessageWidget::Positive);
+ return true;
}
void EditEntryWidget::acceptEntry()
{
- // Check if passwords are mismatched first to prevent saving
- if (!passwordsEqual()) {
- showMessage(tr("Different passwords supplied."), MessageWidget::Error);
- return;
+ if (commitEntry()) {
+ clear();
+ hideMessage();
+ emit editFinished(true);
}
-
- saveEntry();
- clear();
- emit editFinished(true);
}
void EditEntryWidget::updateEntryData(Entry* entry) const
{
+ QRegularExpression newLineRegex("(?:\r?\n|\r)");
+
entry->attributes()->copyCustomKeysFrom(m_entryAttributes);
- entry->attachments()->copyDataFrom(m_entryAttachments);
-
- entry->setTitle(m_mainUi->titleEdit->text());
- entry->setUsername(m_mainUi->usernameEdit->text());
- entry->setUrl(m_mainUi->urlEdit->text());
+ entry->attachments()->copyDataFrom(m_advancedUi->attachmentsWidget->entryAttachments());
+ entry->customData()->copyDataFrom(m_editWidgetProperties->customData());
+ entry->setTitle(m_mainUi->titleEdit->text().replace(newLineRegex, " "));
+ entry->setUsername(m_mainUi->usernameEdit->text().replace(newLineRegex, " "));
+ entry->setUrl(m_mainUi->urlEdit->text().replace(newLineRegex, " "));
entry->setPassword(m_mainUi->passwordEdit->text());
entry->setExpires(m_mainUi->expireCheck->isChecked());
entry->setExpiryTime(m_mainUi->expireDatePicker->dateTime().toUTC());
entry->setNotes(m_mainUi->notesEdit->toPlainText());
+ if (m_advancedUi->fgColorCheckBox->isChecked() &&
+ m_advancedUi->fgColorButton->property("color").isValid()) {
+ entry->setForegroundColor(QColor(m_advancedUi->fgColorButton->property("color").toString()));
+ } else {
+ entry->setForegroundColor(QColor());
+ }
+
+ if (m_advancedUi->bgColorCheckBox->isChecked() &&
+ m_advancedUi->bgColorButton->property("color").isValid()) {
+ entry->setBackgroundColor(QColor(m_advancedUi->bgColorButton->property("color").toString()));
+ } else {
+ entry->setBackgroundColor(QColor());
+ }
+
IconStruct iconStruct = m_iconsWidget->state();
if (iconStruct.number < 0) {
entry->setIcon(Entry::DefaultIconNumber);
- }
- else if (iconStruct.uuid.isNull()) {
+ } else if (iconStruct.uuid.isNull()) {
entry->setIcon(iconStruct.number);
- }
- else {
+ } else {
entry->setIcon(iconStruct.uuid);
}
entry->setAutoTypeEnabled(m_autoTypeUi->enableButton->isChecked());
if (m_autoTypeUi->inheritSequenceButton->isChecked()) {
entry->setDefaultAutoTypeSequence(QString());
- }
- else {
+ } else if (AutoType::verifyAutoTypeSyntax(m_autoTypeUi->sequenceEdit->text())) {
entry->setDefaultAutoTypeSequence(m_autoTypeUi->sequenceEdit->text());
}
@@ -520,7 +844,7 @@ void EditEntryWidget::clear()
m_entry = nullptr;
m_database = nullptr;
m_entryAttributes->clear();
- m_entryAttachments->clear();
+ m_advancedUi->attachmentsWidget->clearAttachments();
m_autoTypeAssoc->clear();
m_historyModel->clear();
m_iconsWidget->reset();
@@ -633,7 +957,7 @@ void EditEntryWidget::displayAttribute(QModelIndex index, bool showProtected)
if (index.isValid()) {
QString key = m_attributesModel->keyByIndex(index);
if (showProtected) {
- m_advancedUi->attributesEdit->setPlainText(tr("[PROTECTED] Press reveal to view or edit"));
+ m_advancedUi->attributesEdit->setPlainText(tr("[PROTECTED]") + " " + tr("Press reveal to view or edit"));
m_advancedUi->attributesEdit->setEnabled(false);
m_advancedUi->revealAttributeButton->setEnabled(true);
m_advancedUi->protectAttributeButton->setChecked(true);
@@ -693,123 +1017,6 @@ void EditEntryWidget::revealCurrentAttribute()
}
}
-void EditEntryWidget::insertAttachment()
-{
- Q_ASSERT(!m_history);
-
- QString defaultDir = config()->get("LastAttachmentDir").toString();
- if (defaultDir.isEmpty() || !QDir(defaultDir).exists()) {
- defaultDir = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).value(0);
- }
- QString filename = fileDialog()->getOpenFileName(this, tr("Select file"), defaultDir);
- if (filename.isEmpty() || !QFile::exists(filename)) {
- return;
- }
-
- QFile file(filename);
- if (!file.open(QIODevice::ReadOnly)) {
- showMessage(tr("Unable to open file").append(":\n").append(file.errorString()), MessageWidget::Error);
- return;
- }
-
- QByteArray data;
- if (!Tools::readAllFromDevice(&file, data)) {
- showMessage(tr("Unable to open file").append(":\n").append(file.errorString()), MessageWidget::Error);
- return;
- }
-
- m_entryAttachments->set(QFileInfo(filename).fileName(), data);
-}
-
-void EditEntryWidget::saveCurrentAttachment()
-{
- QModelIndex index = m_advancedUi->attachmentsView->currentIndex();
- if (!index.isValid()) {
- return;
- }
-
- QString filename = m_attachmentsModel->keyByIndex(index);
- QString defaultDirName = config()->get("LastAttachmentDir").toString();
- if (defaultDirName.isEmpty() || !QDir(defaultDirName).exists()) {
- defaultDirName = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
- }
- QDir dir(defaultDirName);
- QString savePath = fileDialog()->getSaveFileName(this, tr("Save attachment"),
- dir.filePath(filename));
- if (!savePath.isEmpty()) {
- QByteArray attachmentData = m_entryAttachments->value(filename);
-
- QFile file(savePath);
- if (!file.open(QIODevice::WriteOnly)) {
- showMessage(tr("Unable to save the attachment:\n").append(file.errorString()), MessageWidget::Error);
- return;
- }
- if (file.write(attachmentData) != attachmentData.size()) {
- showMessage(tr("Unable to save the attachment:\n").append(file.errorString()), MessageWidget::Error);
- return;
- }
- }
-}
-
-void EditEntryWidget::openAttachment(const QModelIndex& index)
-{
- if (!index.isValid()) {
- Q_ASSERT(false);
- return;
- }
-
- QString filename = m_attachmentsModel->keyByIndex(index);
- QByteArray attachmentData = m_entryAttachments->value(filename);
-
- // tmp file will be removed once the database (or the application) has been closed
- QString tmpFileTemplate = QDir::temp().absoluteFilePath(QString("XXXXXX.").append(filename));
- QTemporaryFile* file = new QTemporaryFile(tmpFileTemplate, this);
-
- if (!file->open()) {
- showMessage(tr("Unable to save the attachment:\n").append(file->errorString()), MessageWidget::Error);
- return;
- }
-
- if (file->write(attachmentData) != attachmentData.size()) {
- showMessage(tr("Unable to save the attachment:\n").append(file->errorString()), MessageWidget::Error);
- return;
- }
-
- if (!file->flush()) {
- showMessage(tr("Unable to save the attachment:\n").append(file->errorString()), MessageWidget::Error);
- return;
- }
-
- file->close();
-
- QDesktopServices::openUrl(QUrl::fromLocalFile(file->fileName()));
-}
-
-void EditEntryWidget::openCurrentAttachment()
-{
- QModelIndex index = m_advancedUi->attachmentsView->currentIndex();
-
- openAttachment(index);
-}
-
-void EditEntryWidget::removeCurrentAttachment()
-{
- Q_ASSERT(!m_history);
-
- QModelIndex index = m_advancedUi->attachmentsView->currentIndex();
- if (!index.isValid()) {
- return;
- }
-
- QMessageBox::StandardButton ans = MessageBox::question(this, tr("Confirm Remove"),
- tr("Are you sure you want to remove this attachment?"),
- QMessageBox::Yes | QMessageBox::No);
- if (ans == QMessageBox::Yes) {
- QString key = m_attachmentsModel->keyByIndex(index);
- m_entryAttachments->remove(key);
- }
-}
-
void EditEntryWidget::updateAutoTypeEnabled()
{
bool autoTypeEnabled = m_autoTypeUi->enableButton->isChecked();
@@ -826,7 +1033,6 @@ void EditEntryWidget::updateAutoTypeEnabled()
m_autoTypeUi->windowTitleLabel->setEnabled(autoTypeEnabled && validIndex);
m_autoTypeUi->windowTitleCombo->setEnabled(autoTypeEnabled && validIndex);
- m_autoTypeUi->defaultWindowSequenceButton->setEnabled(!m_history && autoTypeEnabled && validIndex);
m_autoTypeUi->customWindowSequenceButton->setEnabled(!m_history && autoTypeEnabled && validIndex);
m_autoTypeUi->windowSequenceEdit->setEnabled(autoTypeEnabled && validIndex
&& m_autoTypeUi->customWindowSequenceButton->isChecked());
@@ -857,16 +1063,15 @@ void EditEntryWidget::loadCurrentAssoc(const QModelIndex& current)
AutoTypeAssociations::Association assoc = m_autoTypeAssoc->get(current.row());
m_autoTypeUi->windowTitleCombo->setEditText(assoc.window);
if (assoc.sequence.isEmpty()) {
- m_autoTypeUi->defaultWindowSequenceButton->setChecked(true);
- }
- else {
+ m_autoTypeUi->customWindowSequenceButton->setChecked(false);
+ m_autoTypeUi->windowSequenceEdit->setText(m_entry->effectiveAutoTypeSequence());
+ } else {
m_autoTypeUi->customWindowSequenceButton->setChecked(true);
+ m_autoTypeUi->windowSequenceEdit->setText(assoc.sequence);
}
- m_autoTypeUi->windowSequenceEdit->setText(assoc.sequence);
updateAutoTypeEnabled();
- }
- else {
+ } else {
clearCurrentAssoc();
}
}
@@ -875,7 +1080,7 @@ void EditEntryWidget::clearCurrentAssoc()
{
m_autoTypeUi->windowTitleCombo->setEditText("");
- m_autoTypeUi->defaultWindowSequenceButton->setChecked(true);
+ m_autoTypeUi->customWindowSequenceButton->setChecked(false);
m_autoTypeUi->windowSequenceEdit->setText("");
updateAutoTypeEnabled();
@@ -954,3 +1159,38 @@ QMenu* EditEntryWidget::createPresetsMenu()
expirePresetsMenu->addAction(tr("1 year"))->setData(QVariant::fromValue(TimeDelta::fromYears(1)));
return expirePresetsMenu;
}
+
+void EditEntryWidget::setupColorButton(bool foreground, const QColor& color)
+{
+ QWidget* button = m_advancedUi->fgColorButton;
+ QCheckBox* checkBox = m_advancedUi->fgColorCheckBox;
+ if (!foreground) {
+ button = m_advancedUi->bgColorButton;
+ checkBox = m_advancedUi->bgColorCheckBox;
+ }
+
+ if (color.isValid()) {
+ button->setStyleSheet(QString("background-color:%1").arg(color.name()));
+ button->setProperty("color", color.name());
+ checkBox->setChecked(true);
+ } else {
+ button->setStyleSheet("");
+ button->setProperty("color", QVariant());
+ checkBox->setChecked(false);
+ }
+}
+
+void EditEntryWidget::pickColor()
+{
+ bool isForeground = (sender() == m_advancedUi->fgColorButton);
+ QColor oldColor = QColor(m_advancedUi->fgColorButton->property("color").toString());
+ if (!isForeground) {
+ oldColor = QColor(m_advancedUi->bgColorButton->property("color").toString());
+ }
+
+ QColorDialog colorDialog(this);
+ QColor newColor = colorDialog.getColor(oldColor);
+ if (newColor.isValid()) {
+ setupColorButton(isForeground, newColor);
+ }
+}
diff --git a/src/gui/entry/EditEntryWidget.h b/src/gui/entry/EditEntryWidget.h
index 628f8f8ed..66d89dbfb 100644
--- a/src/gui/entry/EditEntryWidget.h
+++ b/src/gui/entry/EditEntryWidget.h
@@ -23,6 +23,7 @@
#include <QScopedPointer>
#include "gui/EditWidget.h"
+#include "config-keepassx.h"
class AutoTypeAssociations;
class AutoTypeAssociationsModel;
@@ -30,8 +31,6 @@ class Database;
class EditWidgetIcons;
class EditWidgetProperties;
class Entry;
-class EntryAttachments;
-class EntryAttachmentsModel;
class EntryAttributes;
class EntryAttributesModel;
class EntryHistoryModel;
@@ -39,10 +38,15 @@ class QButtonGroup;
class QMenu;
class QSortFilterProxyModel;
class QStackedLayout;
+#ifdef WITH_XC_SSHAGENT
+#include "sshagent/KeeAgentSettings.h"
+class OpenSSHKey;
+#endif
namespace Ui {
class EditEntryWidgetAdvanced;
class EditEntryWidgetAutoType;
+ class EditEntryWidgetSSHAgent;
class EditEntryWidgetMain;
class EditEntryWidgetHistory;
class EditWidget;
@@ -70,7 +74,7 @@ signals:
private slots:
void acceptEntry();
- void saveEntry();
+ bool commitEntry();
void cancel();
void togglePasswordGeneratorButton(bool checked);
void setGeneratedPassword(const QString& password);
@@ -80,11 +84,6 @@ private slots:
void updateCurrentAttribute();
void protectCurrentAttribute(bool state);
void revealCurrentAttribute();
- void insertAttachment();
- void saveCurrentAttachment();
- void openAttachment(const QModelIndex& index);
- void openCurrentAttachment();
- void removeCurrentAttachment();
void updateAutoTypeEnabled();
void insertAutoTypeAssoc();
void removeAutoTypeAssoc();
@@ -99,20 +98,39 @@ private slots:
void histEntryActivated(const QModelIndex& index);
void updateHistoryButtons(const QModelIndex& current, const QModelIndex& previous);
void useExpiryPreset(QAction* action);
- void updateAttachmentButtonsEnabled(const QModelIndex& current);
+ void toggleHideNotes(bool visible);
+ void pickColor();
+#ifdef WITH_XC_SSHAGENT
+ void updateSSHAgent();
+ void updateSSHAgentAttachment();
+ void updateSSHAgentKeyInfo();
+ void browsePrivateKey();
+ void addKeyToAgent();
+ void removeKeyFromAgent();
+ void decryptPrivateKey();
+ void copyPublicKey();
+#endif
private:
void setupMain();
void setupAdvanced();
void setupIcon();
void setupAutoType();
+#ifdef WITH_XC_SSHAGENT
+ void setupSSHAgent();
+#endif
void setupProperties();
void setupHistory();
+ void setupColorButton(bool foreground, const QColor& color);
bool passwordsEqual();
void setForms(const Entry* entry, bool restore = false);
QMenu* createPresetsMenu();
void updateEntryData(Entry* entry) const;
+#ifdef WITH_XC_SSHAGENT
+ bool getOpenSSHKey(OpenSSHKey& key);
+ void saveSSHAgentConfig();
+#endif
void displayAttribute(QModelIndex index, bool showProtected);
@@ -122,18 +140,22 @@ private:
bool m_create;
bool m_history;
bool m_saved;
+#ifdef WITH_XC_SSHAGENT
+ bool m_sshAgentEnabled;
+ KeeAgentSettings m_sshAgentSettings;
+#endif
const QScopedPointer<Ui::EditEntryWidgetMain> m_mainUi;
const QScopedPointer<Ui::EditEntryWidgetAdvanced> m_advancedUi;
const QScopedPointer<Ui::EditEntryWidgetAutoType> m_autoTypeUi;
+ const QScopedPointer<Ui::EditEntryWidgetSSHAgent> m_sshAgentUi;
const QScopedPointer<Ui::EditEntryWidgetHistory> m_historyUi;
QWidget* const m_mainWidget;
QWidget* const m_advancedWidget;
EditWidgetIcons* const m_iconsWidget;
QWidget* const m_autoTypeWidget;
+ QWidget* const m_sshAgentWidget;
EditWidgetProperties* const m_editWidgetProperties;
QWidget* const m_historyWidget;
- EntryAttachments* const m_entryAttachments;
- EntryAttachmentsModel* const m_attachmentsModel;
EntryAttributes* const m_entryAttributes;
EntryAttributesModel* const m_attributesModel;
EntryHistoryModel* const m_historyModel;
diff --git a/src/gui/entry/EditEntryWidgetAdvanced.ui b/src/gui/entry/EditEntryWidgetAdvanced.ui
index 2c7f95dde..9556eee19 100644
--- a/src/gui/entry/EditEntryWidgetAdvanced.ui
+++ b/src/gui/entry/EditEntryWidgetAdvanced.ui
@@ -6,23 +6,11 @@
<rect>
<x>0</x>
<y>0</y>
- <width>400</width>
- <height>366</height>
+ <width>532</width>
+ <height>364</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
<item>
<widget class="QGroupBox" name="attributesBox">
<property name="title">
@@ -153,68 +141,104 @@
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
- <widget class="QListView" name="attachmentsView">
- <property name="flow">
- <enum>QListView::LeftToRight</enum>
+ <widget class="EntryAttachmentsWidget" name="attachmentsWidget" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>100</height>
+ </size>
</property>
- <property name="isWrapping" stdset="0">
- <bool>true</bool>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="colorsBox" native="true">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="fgColorCheckBox">
+ <property name="text">
+ <string>Foreground Color:</string>
</property>
</widget>
</item>
<item>
- <layout class="QVBoxLayout" name="attachmentsButtonLayout">
- <item>
- <widget class="QPushButton" name="addAttachmentButton">
- <property name="text">
- <string>Add</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="removeAttachmentButton">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Remove</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="openAttachmentButton">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Open</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="saveAttachmentButton">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Save</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
+ <widget class="QPushButton" name="fgColorButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Maximum</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>30</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="bgColorCheckBox">
+ <property name="text">
+ <string>Background Color:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="bgColorButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
</item>
</layout>
</widget>
@@ -223,6 +247,12 @@
</widget>
<customwidgets>
<customwidget>
+ <class>EntryAttachmentsWidget</class>
+ <extends>QWidget</extends>
+ <header>gui/entry/EntryAttachmentsWidget.h</header>
+ <container>1</container>
+ </customwidget>
+ <customwidget>
<class>AttributesListView</class>
<extends>QListView</extends>
<header>gui/entry/EditEntryWidget_p.h</header>
@@ -234,11 +264,6 @@
<tabstop>addAttributeButton</tabstop>
<tabstop>removeAttributeButton</tabstop>
<tabstop>editAttributeButton</tabstop>
- <tabstop>attachmentsView</tabstop>
- <tabstop>addAttachmentButton</tabstop>
- <tabstop>removeAttachmentButton</tabstop>
- <tabstop>openAttachmentButton</tabstop>
- <tabstop>saveAttachmentButton</tabstop>
</tabstops>
<resources/>
<connections/>
diff --git a/src/gui/entry/EditEntryWidgetAutoType.ui b/src/gui/entry/EditEntryWidgetAutoType.ui
index a8090f768..3d4ec7a3e 100644
--- a/src/gui/entry/EditEntryWidgetAutoType.ui
+++ b/src/gui/entry/EditEntryWidgetAutoType.ui
@@ -203,16 +203,9 @@
</spacer>
</item>
<item>
- <widget class="QRadioButton" name="defaultWindowSequenceButton">
+ <widget class="QCheckBox" name="customWindowSequenceButton">
<property name="text">
- <string>Use default se&amp;quence</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="customWindowSequenceButton">
- <property name="text">
- <string>Set custo&amp;m sequence:</string>
+ <string>Use a specific sequence for this association:</string>
</property>
</widget>
</item>
@@ -277,7 +270,6 @@
<tabstop>sequenceEdit</tabstop>
<tabstop>assocView</tabstop>
<tabstop>windowTitleCombo</tabstop>
- <tabstop>defaultWindowSequenceButton</tabstop>
<tabstop>customWindowSequenceButton</tabstop>
<tabstop>windowSequenceEdit</tabstop>
<tabstop>assocAddButton</tabstop>
diff --git a/src/gui/entry/EditEntryWidgetMain.ui b/src/gui/entry/EditEntryWidgetMain.ui
index afc1d4f26..dc07603aa 100644
--- a/src/gui/entry/EditEntryWidgetMain.ui
+++ b/src/gui/entry/EditEntryWidgetMain.ui
@@ -79,10 +79,10 @@
</property>
</widget>
</item>
- <item row="9" column="0" alignment="Qt::AlignRight|Qt::AlignTop">
- <widget class="QLabel" name="notesLabel">
+ <item row="9" column="0" alignment="Qt::AlignLeft|Qt::AlignTop">
+ <widget class="QCheckBox" name="notesEnabled">
<property name="text">
- <string>Notes:</string>
+ <string>Notes</string>
</property>
</widget>
</item>
@@ -129,6 +129,19 @@
</property>
</widget>
</item>
+ <item row="9" column="1">
+ <widget class="QLabel" name="notesHint">
+ <property name="visible">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Toggle the checkbox to reveal the notes section.</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
<item row="1" column="0" alignment="Qt::AlignRight">
<widget class="QLabel" name="usernameLabel">
<property name="text">
diff --git a/src/gui/entry/EditEntryWidgetSSHAgent.ui b/src/gui/entry/EditEntryWidgetSSHAgent.ui
new file mode 100644
index 000000000..5957f6572
--- /dev/null
+++ b/src/gui/entry/EditEntryWidgetSSHAgent.ui
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EditEntryWidgetSSHAgent</class>
+ <widget class="QWidget" name="EditEntryWidgetSSHAgent">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>498</width>
+ <height>518</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item row="3" column="1" colspan="4">
+ <layout class="QHBoxLayout" name="removeKeyLayout">
+ <item>
+ <widget class="QCheckBox" name="lifetimeCheckBox">
+ <property name="text">
+ <string>Remove key from agent after</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="lifetimeSpinBox">
+ <property name="suffix">
+ <string> seconds</string>
+ </property>
+ <property name="maximum">
+ <number>999999999</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="removeKeySpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item row="11" column="1">
+ <widget class="QLabel" name="fingerprintLabel">
+ <property name="text">
+ <string>Fingerprint</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="4">
+ <widget class="QCheckBox" name="removeKeyFromAgentCheckBox">
+ <property name="text">
+ <string>Remove key from agent when database is closed/locked</string>
+ </property>
+ </widget>
+ </item>
+ <item row="13" column="1">
+ <widget class="QLabel" name="publicKeyLabel">
+ <property name="text">
+ <string>Public key</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="4">
+ <widget class="QCheckBox" name="addKeyToAgentCheckBox">
+ <property name="text">
+ <string>Add key to agent when database is opened/unlocked</string>
+ </property>
+ </widget>
+ </item>
+ <item row="12" column="1">
+ <widget class="QLabel" name="commentLabel">
+ <property name="text">
+ <string>Comment</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="12" column="4">
+ <widget class="QPushButton" name="decryptButton">
+ <property name="text">
+ <string>Decrypt</string>
+ </property>
+ </widget>
+ </item>
+ <item row="11" column="3" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="fingerprintTextLabel">
+ <property name="font">
+ <font>
+ <family>Monospace</family>
+ </font>
+ </property>
+ <property name="text">
+ <string>n/a</string>
+ </property>
+ <property name="textInteractionFlags">
+ <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item row="14" column="3" colspan="2">
+ <widget class="QPushButton" name="copyToClipboardButton">
+ <property name="text">
+ <string>Copy to clipboard</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1" colspan="4">
+ <widget class="QGroupBox" name="privateKeyGroupBox">
+ <property name="title">
+ <string>Private key</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="3" column="0">
+ <widget class="QRadioButton" name="externalFileRadioButton">
+ <property name="text">
+ <string>External file</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QPushButton" name="browseButton">
+ <property name="text">
+ <string extracomment="Button for opening file dialog">Browse...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QRadioButton" name="attachmentRadioButton">
+ <property name="text">
+ <string>Attachment</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="externalFileEdit"/>
+ </item>
+ <item row="4" column="1">
+ <layout class="QHBoxLayout" name="agentActionsLayout" stretch="0,0">
+ <item>
+ <widget class="QPushButton" name="addToAgentButton">
+ <property name="text">
+ <string>Add to agent</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="removeFromAgentButton">
+ <property name="text">
+ <string>Remove from agent</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="0" column="1" colspan="2">
+ <widget class="QComboBox" name="attachmentComboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="editable">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="4">
+ <widget class="QCheckBox" name="requireUserConfirmationCheckBox">
+ <property name="text">
+ <string>Require user confirmation when this key is used</string>
+ </property>
+ </widget>
+ </item>
+ <item row="13" column="3" colspan="2">
+ <widget class="QPlainTextEdit" name="publicKeyEdit">
+ <property name="font">
+ <font>
+ <family>Monospace</family>
+ </font>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="12" column="3">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QLabel" name="commentTextLabel">
+ <property name="font">
+ <font>
+ <family>Monospace</family>
+ </font>
+ </property>
+ <property name="text">
+ <string>n/a</string>
+ </property>
+ <property name="textInteractionFlags">
+ <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gui/entry/EntryAttachmentsModel.cpp b/src/gui/entry/EntryAttachmentsModel.cpp
index 082641380..608744841 100644
--- a/src/gui/entry/EntryAttachmentsModel.cpp
+++ b/src/gui/entry/EntryAttachmentsModel.cpp
@@ -26,6 +26,8 @@ EntryAttachmentsModel::EntryAttachmentsModel(QObject* parent)
: QAbstractListModel(parent)
, m_entryAttachments(nullptr)
{
+ m_headers << tr("Name")
+ << tr("Size");
}
void EntryAttachmentsModel::setEntryAttachments(EntryAttachments* entryAttachments)
@@ -65,7 +67,17 @@ int EntryAttachmentsModel::columnCount(const QModelIndex& parent) const
{
Q_UNUSED(parent);
- return 1;
+ return Columns::ColumnsCount;
+}
+
+QVariant EntryAttachmentsModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
+ Q_ASSERT(m_headers.size() == columnCount());
+ return m_headers[section];
+ }
+
+ return QAbstractListModel::headerData(section, orientation, role);
}
QVariant EntryAttachmentsModel::data(const QModelIndex& index, int role) const
@@ -74,15 +86,21 @@ QVariant EntryAttachmentsModel::data(const QModelIndex& index, int role) const
return QVariant();
}
- if (role == Qt::DisplayRole && index.column() == 0) {
- QString key = keyByIndex(index);
-
- return QString("%1 (%2)").arg(key,
- Tools::humanReadableFileSize(m_entryAttachments->value(key).size()));
- }
- else {
- return QVariant();
+ if (role == Qt::DisplayRole || role == Qt::EditRole) {
+ const QString key = keyByIndex(index);
+ const int column = index.column();
+ if (column == Columns::NameColumn) {
+ return key;
+ } else if (column == SizeColumn) {
+ const int attachmentSize = m_entryAttachments->value(key).size();
+ if (role == Qt::DisplayRole) {
+ return Tools::humanReadableFileSize(attachmentSize);
+ }
+ return attachmentSize;
+ }
}
+
+ return QVariant();
}
QString EntryAttachmentsModel::keyByIndex(const QModelIndex& index) const
diff --git a/src/gui/entry/EntryAttachmentsModel.h b/src/gui/entry/EntryAttachmentsModel.h
index 6abcdc2e2..fa8d35548 100644
--- a/src/gui/entry/EntryAttachmentsModel.h
+++ b/src/gui/entry/EntryAttachmentsModel.h
@@ -27,10 +27,17 @@ class EntryAttachmentsModel : public QAbstractListModel
Q_OBJECT
public:
+ enum Columns {
+ NameColumn,
+ SizeColumn,
+ ColumnsCount
+ };
+
explicit EntryAttachmentsModel(QObject* parent = nullptr);
void setEntryAttachments(EntryAttachments* entry);
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
+ QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
QString keyByIndex(const QModelIndex& index) const;
@@ -45,6 +52,7 @@ private slots:
private:
EntryAttachments* m_entryAttachments;
+ QStringList m_headers;
};
#endif // KEEPASSX_ENTRYATTACHMENTSMODEL_H
diff --git a/src/gui/entry/EntryAttachmentsWidget.cpp b/src/gui/entry/EntryAttachmentsWidget.cpp
new file mode 100644
index 000000000..16908361a
--- /dev/null
+++ b/src/gui/entry/EntryAttachmentsWidget.cpp
@@ -0,0 +1,370 @@
+#include "EntryAttachmentsWidget.h"
+#include "ui_EntryAttachmentsWidget.h"
+
+#include <QDesktopServices>
+#include <QDir>
+#include <QDropEvent>
+#include <QFile>
+#include <QFileInfo>
+#include <QMimeData>
+#include <QTemporaryFile>
+
+#include "EntryAttachmentsModel.h"
+#include "core/Config.h"
+#include "core/EntryAttachments.h"
+#include "core/Tools.h"
+#include "gui/FileDialog.h"
+#include "gui/MessageBox.h"
+
+
+EntryAttachmentsWidget::EntryAttachmentsWidget(QWidget* parent) :
+ QWidget(parent)
+ , m_ui(new Ui::EntryAttachmentsWidget)
+ , m_entryAttachments(new EntryAttachments(this))
+ , m_attachmentsModel(new EntryAttachmentsModel(this))
+ , m_readOnly(false)
+ , m_buttonsVisible(true)
+{
+ m_ui->setupUi(this);
+
+ m_ui->attachmentsView->setAcceptDrops(false);
+ m_ui->attachmentsView->viewport()->setAcceptDrops(true);
+ m_ui->attachmentsView->viewport()->installEventFilter(this);
+
+ m_attachmentsModel->setEntryAttachments(m_entryAttachments);
+ m_ui->attachmentsView->setModel(m_attachmentsModel);
+ m_ui->attachmentsView->verticalHeader()->hide();
+ m_ui->attachmentsView->horizontalHeader()->setStretchLastSection(true);
+ m_ui->attachmentsView->horizontalHeader()->resizeSection(EntryAttachmentsModel::NameColumn, 400);
+ m_ui->attachmentsView->setSelectionBehavior(QAbstractItemView::SelectRows);
+ m_ui->attachmentsView->setSelectionMode(QAbstractItemView::ExtendedSelection);
+
+ m_ui->actionsWidget->setVisible(m_buttonsVisible);
+ connect(this, SIGNAL(buttonsVisibleChanged(bool)), m_ui->actionsWidget, SLOT(setVisible(bool)));
+
+ connect(this, SIGNAL(readOnlyChanged(bool)), SLOT(updateButtonsEnabled()));
+ connect(m_attachmentsModel, SIGNAL(modelReset()), SLOT(updateButtonsEnabled()));
+ connect(m_ui->attachmentsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
+ SLOT(updateButtonsEnabled()));
+
+ connect(m_ui->attachmentsView, SIGNAL(doubleClicked(QModelIndex)), SLOT(openAttachment(QModelIndex)));
+ connect(m_ui->saveAttachmentButton, SIGNAL(clicked()), SLOT(saveSelectedAttachments()));
+ connect(m_ui->openAttachmentButton, SIGNAL(clicked()), SLOT(openSelectedAttachments()));
+ connect(m_ui->addAttachmentButton, SIGNAL(clicked()), SLOT(insertAttachments()));
+ connect(m_ui->removeAttachmentButton, SIGNAL(clicked()), SLOT(removeSelectedAttachments()));
+
+ updateButtonsEnabled();
+}
+
+EntryAttachmentsWidget::~EntryAttachmentsWidget()
+{
+}
+
+const EntryAttachments* EntryAttachmentsWidget::entryAttachments() const
+{
+ return m_entryAttachments;
+}
+
+bool EntryAttachmentsWidget::isReadOnly() const
+{
+ return m_readOnly;
+}
+
+bool EntryAttachmentsWidget::isButtonsVisible() const
+{
+ return m_buttonsVisible;
+}
+
+void EntryAttachmentsWidget::setEntryAttachments(const EntryAttachments* attachments)
+{
+ Q_ASSERT(attachments != nullptr);
+ m_entryAttachments->copyDataFrom(attachments);
+}
+
+void EntryAttachmentsWidget::clearAttachments()
+{
+ m_entryAttachments->clear();
+}
+
+void EntryAttachmentsWidget::setReadOnly(bool readOnly)
+{
+ if (m_readOnly == readOnly) {
+ return;
+ }
+
+ m_readOnly = readOnly;
+ emit readOnlyChanged(m_readOnly);
+}
+
+void EntryAttachmentsWidget::setButtonsVisible(bool buttonsVisible)
+{
+ if (m_buttonsVisible == buttonsVisible) {
+ return;
+ }
+
+ m_buttonsVisible = buttonsVisible;
+ emit buttonsVisibleChanged(m_buttonsVisible);
+}
+
+QByteArray EntryAttachmentsWidget::getAttachment(const QString& name)
+{
+ return m_entryAttachments->value(name);
+}
+
+void EntryAttachmentsWidget::setAttachment(const QString& name, const QByteArray& value)
+{
+ m_entryAttachments->set(name, value);
+}
+
+void EntryAttachmentsWidget::removeAttachment(const QString& name)
+{
+ if (!isReadOnly() && m_entryAttachments->hasKey(name)) {
+ m_entryAttachments->remove(name);
+ }
+}
+
+void EntryAttachmentsWidget::insertAttachments()
+{
+ Q_ASSERT(!isReadOnly());
+ if (isReadOnly()) {
+ return;
+ }
+
+ QString defaultDirPath = config()->get("LastAttachmentDir").toString();
+ const bool dirExists = !defaultDirPath.isEmpty() && QDir(defaultDirPath).exists();
+ if (!dirExists) {
+ defaultDirPath = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).first();
+ }
+
+ const QStringList filenames = fileDialog()->getOpenFileNames(this, tr("Select files"), defaultDirPath);
+ if (filenames.isEmpty()) {
+ return;
+ }
+
+ config()->set("LastAttachmentDir", QFileInfo(filenames.first()).absolutePath());
+
+ QString errorMessage;
+ if (!insertAttachments(filenames, errorMessage)) {
+ errorOccurred(errorMessage);
+ }
+}
+
+void EntryAttachmentsWidget::removeSelectedAttachments()
+{
+ Q_ASSERT(!isReadOnly());
+ if (isReadOnly()) {
+ return;
+ }
+
+ const QModelIndexList indexes = m_ui->attachmentsView->selectionModel()->selectedRows(0);
+ if (indexes.isEmpty()) {
+ return;
+ }
+
+ const QString question = tr("Are you sure you want to remove %n attachment(s)?", "", indexes.count());
+ QMessageBox::StandardButton answer = MessageBox::question(this, tr("Confirm Remove"),
+ question, QMessageBox::Yes | QMessageBox::No);
+ if (answer == QMessageBox::Yes) {
+ QStringList keys;
+ for (const QModelIndex& index: indexes) {
+ keys.append(m_attachmentsModel->keyByIndex(index));
+ }
+ m_entryAttachments->remove(keys);
+ }
+}
+
+void EntryAttachmentsWidget::saveSelectedAttachments()
+{
+ const QModelIndexList indexes = m_ui->attachmentsView->selectionModel()->selectedRows(0);
+ if (indexes.isEmpty()) {
+ return;
+ }
+
+ QString defaultDirPath = config()->get("LastAttachmentDir").toString();
+ const bool dirExists = !defaultDirPath.isEmpty() && QDir(defaultDirPath).exists();
+ if (!dirExists) {
+ defaultDirPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
+ }
+
+ const QString saveDirPath = fileDialog()->getExistingDirectory(this, tr("Save attachments"), defaultDirPath);
+ if (saveDirPath.isEmpty()) {
+ return;
+ }
+
+ QDir saveDir(saveDirPath);
+ if (!saveDir.exists()) {
+ if (saveDir.mkpath(saveDir.absolutePath())) {
+ errorOccurred(tr("Unable to create directory:\n%1").arg(saveDir.absolutePath()));
+ return;
+ }
+ }
+ config()->set("LastAttachmentDir", QFileInfo(saveDir.absolutePath()).absolutePath());
+
+ QStringList errors;
+ for (const QModelIndex& index: indexes) {
+ const QString filename = m_attachmentsModel->keyByIndex(index);
+ const QString attachmentPath = saveDir.absoluteFilePath(filename);
+
+ if (QFileInfo::exists(attachmentPath)) {
+ const QString question(tr("Are you sure you want to overwrite the existing file \"%1\" with the attachment?"));
+ auto answer = MessageBox::question(this, tr("Confirm overwrite"), question.arg(filename),
+ QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
+ if (answer == QMessageBox::No) {
+ continue;
+ } else if (answer == QMessageBox::Cancel) {
+ return;
+ }
+ }
+
+ QFile file(attachmentPath);
+ const QByteArray attachmentData = m_entryAttachments->value(filename);
+ const bool saveOk = file.open(QIODevice::WriteOnly) && file.write(attachmentData) == attachmentData.size();
+ if (!saveOk) {
+ errors.append(QString("%1 - %2").arg(filename, file.errorString()));
+ }
+ }
+
+ if (!errors.isEmpty()) {
+ errorOccurred(tr("Unable to save attachments:\n%1").arg(errors.join('\n')));
+ }
+}
+
+void EntryAttachmentsWidget::openAttachment(const QModelIndex& index)
+{
+ Q_ASSERT(index.isValid());
+ if (!index.isValid()) {
+ return;
+ }
+
+ QString errorMessage;
+ if (!openAttachment(index, errorMessage)) {
+ errorOccurred(tr("Unable to open attachment:\n%1").arg(errorMessage));
+ }
+}
+
+void EntryAttachmentsWidget::openSelectedAttachments()
+{
+ const QModelIndexList indexes = m_ui->attachmentsView->selectionModel()->selectedRows(0);
+ if (indexes.isEmpty()) {
+ return;
+ }
+
+ QStringList errors;
+ for (const QModelIndex& index: indexes) {
+ QString errorMessage;
+ if (!openAttachment(index, errorMessage)) {
+ const QString filename = m_attachmentsModel->keyByIndex(index);
+ errors.append(QString("%1 - %2").arg(filename, errorMessage));
+ };
+ }
+
+ if (!errors.isEmpty()) {
+ errorOccurred(tr("Unable to open attachments:\n%1").arg(errors.join('\n')));
+ }
+}
+
+void EntryAttachmentsWidget::updateButtonsEnabled()
+{
+ const bool hasSelection = m_ui->attachmentsView->selectionModel()->hasSelection();
+
+ m_ui->addAttachmentButton->setEnabled(!m_readOnly);
+ m_ui->removeAttachmentButton->setEnabled(hasSelection && !m_readOnly);
+
+ m_ui->saveAttachmentButton->setEnabled(hasSelection);
+ m_ui->openAttachmentButton->setEnabled(hasSelection);
+}
+
+bool EntryAttachmentsWidget::insertAttachments(const QStringList& filenames, QString& errorMessage)
+{
+ Q_ASSERT(!isReadOnly());
+ if (isReadOnly()) {
+ return false;
+ }
+
+ QStringList errors;
+ for (const QString &filename: filenames) {
+ QByteArray data;
+ QFile file(filename);
+ const QFileInfo fInfo(filename);
+ const bool readOk = file.open(QIODevice::ReadOnly) && Tools::readAllFromDevice(&file, data);
+ if (readOk) {
+ m_entryAttachments->set(fInfo.fileName(), data);
+ } else {
+ errors.append(QString("%1 - %2").arg(fInfo.fileName(), file.errorString()));
+ }
+ }
+
+ if (!errors.isEmpty()) {
+ errorMessage = tr("Unable to open files:\n%1").arg(errors.join('\n'));
+ }
+
+ return errors.isEmpty();
+}
+
+bool EntryAttachmentsWidget::openAttachment(const QModelIndex& index, QString& errorMessage)
+{
+ const QString filename = m_attachmentsModel->keyByIndex(index);
+ const QByteArray attachmentData = m_entryAttachments->value(filename);
+
+ // tmp file will be removed once the database (or the application) has been closed
+ const QString tmpFileTemplate = QDir::temp().absoluteFilePath(QString("XXXXXX.").append(filename));
+
+ QScopedPointer<QTemporaryFile> tmpFile(new QTemporaryFile(tmpFileTemplate, this));
+
+ const bool saveOk = tmpFile->open()
+ && tmpFile->write(attachmentData) == attachmentData.size()
+ && tmpFile->flush();
+ if (!saveOk) {
+ errorMessage = QString("%1 - %2").arg(filename, tmpFile->errorString());
+ return false;
+ }
+
+ tmpFile->close();
+ const bool openOk = QDesktopServices::openUrl(QUrl::fromLocalFile(tmpFile->fileName()));
+ if (!openOk) {
+ errorMessage = QString("Can't open file \"%1\"").arg(filename);
+ return false;
+ }
+
+ // take ownership of the tmpFile pointer
+ tmpFile.take();
+ return true;
+}
+
+bool EntryAttachmentsWidget::eventFilter(QObject* watched, QEvent* e)
+{
+ if (watched == m_ui->attachmentsView->viewport() && !isReadOnly()) {
+ const QEvent::Type eventType = e->type();
+ if (eventType == QEvent::DragEnter || eventType == QEvent::DragMove) {
+ QDropEvent* dropEv = static_cast<QDropEvent*>(e);
+ const QMimeData* mimeData = dropEv->mimeData();
+ if (mimeData->hasUrls()) {
+ dropEv->acceptProposedAction();
+ return true;
+ }
+ } else if (eventType == QEvent::Drop) {
+ QDropEvent* dropEv = static_cast<QDropEvent*>(e);
+ const QMimeData* mimeData = dropEv->mimeData();
+ if (mimeData->hasUrls()) {
+ dropEv->acceptProposedAction();
+ QStringList filenames;
+ const QList<QUrl> urls = mimeData->urls();
+ for (const QUrl& url: urls) {
+ const QFileInfo fInfo(url.toLocalFile());
+ if (fInfo.isFile()) {
+ filenames.append(fInfo.absoluteFilePath());
+ }
+ }
+
+ QString errorMessage;
+ if (!insertAttachments(filenames, errorMessage)) {
+ errorOccurred(errorMessage);
+ }
+
+ return true;
+ }
+ }
+ }
+
+ return QWidget::eventFilter(watched, e);
+}
diff --git a/src/gui/entry/EntryAttachmentsWidget.h b/src/gui/entry/EntryAttachmentsWidget.h
new file mode 100644
index 000000000..5fd19415e
--- /dev/null
+++ b/src/gui/entry/EntryAttachmentsWidget.h
@@ -0,0 +1,64 @@
+#ifndef ENTRYATTACHMENTSWIDGET_H
+#define ENTRYATTACHMENTSWIDGET_H
+
+#include <QPointer>
+#include <QWidget>
+
+namespace Ui {
+class EntryAttachmentsWidget;
+}
+
+class QByteArray;
+class EntryAttachments;
+class EntryAttachmentsModel;
+
+class EntryAttachmentsWidget : public QWidget
+{
+ Q_OBJECT
+ Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged)
+ Q_PROPERTY(bool isButtonsVisible READ isButtonsVisible WRITE setButtonsVisible NOTIFY buttonsVisibleChanged)
+public:
+ explicit EntryAttachmentsWidget(QWidget* parent = nullptr);
+ ~EntryAttachmentsWidget();
+
+ const EntryAttachments* entryAttachments() const;
+ bool isReadOnly() const;
+ bool isButtonsVisible() const;
+
+ QByteArray getAttachment(const QString& name);
+ void setAttachment(const QString& name, const QByteArray& value);
+ void removeAttachment(const QString& name);
+
+public slots:
+ void setEntryAttachments(const EntryAttachments* attachments);
+ void clearAttachments();
+ void setReadOnly(bool readOnly);
+ void setButtonsVisible(bool isButtonsVisible);
+
+signals:
+ void errorOccurred(const QString& error);
+ void readOnlyChanged(bool readOnly);
+ void buttonsVisibleChanged(bool isButtonsVisible);
+
+private slots:
+ void insertAttachments();
+ void removeSelectedAttachments();
+ void saveSelectedAttachments();
+ void openAttachment(const QModelIndex& index);
+ void openSelectedAttachments();
+ void updateButtonsEnabled();
+
+private:
+ bool insertAttachments(const QStringList& fileNames, QString& errorMessage);
+ bool openAttachment(const QModelIndex& index, QString& errorMessage);
+
+ bool eventFilter(QObject* watched, QEvent* event) override;
+
+ QScopedPointer<Ui::EntryAttachmentsWidget> m_ui;
+ QPointer<EntryAttachments> m_entryAttachments;
+ QPointer<EntryAttachmentsModel> m_attachmentsModel;
+ bool m_readOnly;
+ bool m_buttonsVisible;
+};
+
+#endif // ENTRYATTACHMENTSWIDGET_H
diff --git a/src/gui/entry/EntryAttachmentsWidget.ui b/src/gui/entry/EntryAttachmentsWidget.ui
new file mode 100644
index 000000000..60292309f
--- /dev/null
+++ b/src/gui/entry/EntryAttachmentsWidget.ui
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EntryAttachmentsWidget</class>
+ <widget class="QWidget" name="EntryAttachmentsWidget">
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QTableView" name="attachmentsView"/>
+ </item>
+ <item>
+ <widget class="QWidget" name="actionsWidget" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="addAttachmentButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Add</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="removeAttachmentButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Remove</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="openAttachmentButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Open</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="saveAttachmentButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Save</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>173</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gui/entry/EntryModel.cpp b/src/gui/entry/EntryModel.cpp
index 2f79f02d9..6f7ebf6af 100644
--- a/src/gui/entry/EntryModel.cpp
+++ b/src/gui/entry/EntryModel.cpp
@@ -18,8 +18,11 @@
#include "EntryModel.h"
#include <QFont>
+#include <QFontMetrics>
#include <QMimeData>
#include <QPalette>
+#include <QDateTime>
+#include <QPainter>
#include "core/DatabaseIcons.h"
#include "core/Entry.h"
@@ -27,9 +30,17 @@
#include "core/Group.h"
#include "core/Metadata.h"
+// String being displayed when hiding content
+const QString EntryModel::HiddenContentDisplay(QString("\u25cf").repeated(6));
+
+// Format used to display dates
+const Qt::DateFormat EntryModel::DateFormat = Qt::DefaultLocaleShortDate;
+
EntryModel::EntryModel(QObject* parent)
: QAbstractTableModel(parent)
, m_group(nullptr)
+ , m_hideUsernames(false)
+ , m_hidePasswords(true)
{
}
@@ -64,7 +75,7 @@ void EntryModel::setGroup(Group* group)
makeConnections(group);
endResetModel();
- emit switchedToGroupMode();
+ emit switchedToListMode();
}
void EntryModel::setEntryList(const QList<Entry*>& entries)
@@ -101,24 +112,26 @@ void EntryModel::setEntryList(const QList<Entry*>& entries)
}
endResetModel();
- emit switchedToEntryListMode();
+ emit switchedToSearchMode();
}
int EntryModel::rowCount(const QModelIndex& parent) const
{
if (parent.isValid()) {
return 0;
- }
- else {
+ } else {
return m_entries.size();
}
}
int EntryModel::columnCount(const QModelIndex& parent) const
{
- Q_UNUSED(parent);
+ // Advised by Qt documentation
+ if (parent.isValid()) {
+ return 0;
+ }
- return 4;
+ return 12;
}
QVariant EntryModel::data(const QModelIndex& index, int role) const
@@ -141,25 +154,92 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
case Title:
result = entry->resolveMultiplePlaceholders(entry->title());
if (attr->isReference(EntryAttributes::TitleKey)) {
- result.prepend(tr("Ref: ","Reference abbreviation"));
+ result.prepend(tr("Ref: ", "Reference abbreviation"));
}
return result;
case Username:
- result = entry->resolveMultiplePlaceholders(entry->username());
+ if (m_hideUsernames) {
+ result = EntryModel::HiddenContentDisplay;
+ } else {
+ result = entry->resolveMultiplePlaceholders(entry->username());
+ }
if (attr->isReference(EntryAttributes::UserNameKey)) {
- result.prepend(tr("Ref: ","Reference abbreviation"));
+ result.prepend(tr("Ref: ", "Reference abbreviation"));
+ }
+ return result;
+ case Password:
+ if (m_hidePasswords) {
+ result = EntryModel::HiddenContentDisplay;
+ } else {
+ result = entry->resolveMultiplePlaceholders(entry->password());
+ }
+ if (attr->isReference(EntryAttributes::PasswordKey)) {
+ result.prepend(tr("Ref: ", "Reference abbreviation"));
}
return result;
case Url:
- result = entry->maskPasswordPlaceholders(entry->url());
- result = entry->resolveMultiplePlaceholders(result);
+ result = entry->resolveMultiplePlaceholders(entry->displayUrl());
if (attr->isReference(EntryAttributes::URLKey)) {
- result.prepend(tr("Ref: ","Reference abbreviation"));
+ result.prepend(tr("Ref: ", "Reference abbreviation"));
+ }
+ return result;
+ case Notes:
+ // Display only first line of notes in simplified format
+ result = entry->resolveMultiplePlaceholders(entry->notes().section("\n", 0, 0).simplified());
+ if (attr->isReference(EntryAttributes::NotesKey)) {
+ result.prepend(tr("Ref: ", "Reference abbreviation"));
+ }
+ return result;
+ case Expires:
+ // Display either date of expiry or 'Never'
+ result = entry->timeInfo().expires() ? entry->timeInfo().expiryTime().toLocalTime().toString(EntryModel::DateFormat) : tr("Never");
+ return result;
+ case Created:
+ result = entry->timeInfo().creationTime().toLocalTime().toString(EntryModel::DateFormat);
+ return result;
+ case Modified:
+ result = entry->timeInfo().lastModificationTime().toLocalTime().toString(EntryModel::DateFormat);
+ return result;
+ case Accessed:
+ result = entry->timeInfo().lastAccessTime().toLocalTime().toString(EntryModel::DateFormat);
+ return result;
+ case Attachments:
+ // Display comma-separated list of attachments
+ QList<QString> attachments = entry->attachments()->keys();
+ for (int i = 0; i < attachments.size(); ++i) {
+ if (result.isEmpty()) {
+ result.append(attachments.at(i));
+ continue;
+ }
+ result.append(QString(", ") + attachments.at(i));
}
return result;
}
- }
- else if (role == Qt::DecorationRole) {
+ } else if (role == Qt::UserRole) { // Qt::UserRole is used as sort role, see EntryView::EntryView()
+ switch (index.column()) {
+ case Username:
+ return entry->resolveMultiplePlaceholders(entry->username());
+ case Password:
+ return entry->resolveMultiplePlaceholders(entry->password());
+ case Expires:
+ // There seems to be no better way of expressing 'infinity'
+ return entry->timeInfo().expires() ? entry->timeInfo().expiryTime() : QDateTime(QDate(9999, 1, 1));
+ case Created:
+ return entry->timeInfo().creationTime();
+ case Modified:
+ return entry->timeInfo().lastModificationTime();
+ case Accessed:
+ return entry->timeInfo().lastAccessTime();
+ case Paperclip:
+ // Display entries with attachments above those without when
+ // sorting ascendingly (and vice versa when sorting descendingly)
+ return entry->attachments()->isEmpty() ? 1 : 0;
+ default:
+ // For all other columns, simply use data provided by Qt::Display-
+ // Role for sorting
+ return data(index, Qt::DisplayRole);
+ }
+ } else if (role == Qt::DecorationRole) {
switch (index.column()) {
case ParentGroup:
if (entry->group()) {
@@ -170,30 +250,44 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
if (entry->isExpired()) {
return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex);
}
- else {
- return entry->iconScaledPixmap();
+ return entry->iconScaledPixmap();
+ case Paperclip:
+ if (!entry->attachments()->isEmpty()) {
+ return m_paperClipPixmap;
}
+ break;
}
- }
- else if (role == Qt::FontRole) {
+ } else if (role == Qt::FontRole) {
QFont font;
if (entry->isExpired()) {
font.setStrikeOut(true);
}
return font;
- }
- else if (role == Qt::TextColorRole) {
+ } else if (role == Qt::ForegroundRole) {
if (entry->hasReferences()) {
QPalette p;
return QVariant(p.color(QPalette::Active, QPalette::Mid));
+ } else if (entry->foregroundColor().isValid()) {
+ return QVariant(entry->foregroundColor());
+ }
+ } else if (role == Qt::BackgroundRole) {
+ if (entry->backgroundColor().isValid()) {
+ return QVariant(entry->backgroundColor());
+ }
+ } else if (role == Qt::TextAlignmentRole) {
+ if (index.column() == Paperclip) {
+ return Qt::AlignCenter;
}
}
return QVariant();
}
+
QVariant EntryModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
+ Q_UNUSED(orientation);
+
+ if (role == Qt::DisplayRole) {
switch (section) {
case ParentGroup:
return tr("Group");
@@ -201,8 +295,26 @@ QVariant EntryModel::headerData(int section, Qt::Orientation orientation, int ro
return tr("Title");
case Username:
return tr("Username");
+ case Password:
+ return tr("Password");
case Url:
return tr("URL");
+ case Notes:
+ return tr("Notes");
+ case Expires:
+ return tr("Expires");
+ case Created:
+ return tr("Created");
+ case Modified:
+ return tr("Modified");
+ case Accessed:
+ return tr("Accessed");
+ case Attachments:
+ return tr("Attachments");
+ }
+ } else if (role == Qt::DecorationRole) {
+ if (section == Paperclip) {
+ return m_paperClipPixmap;
}
}
@@ -223,8 +335,7 @@ Qt::ItemFlags EntryModel::flags(const QModelIndex& modelIndex) const
{
if (!modelIndex.isValid()) {
return Qt::NoItemFlags;
- }
- else {
+ } else {
return QAbstractItemModel::flags(modelIndex) | Qt::ItemIsDragEnabled;
}
}
@@ -265,8 +376,7 @@ QMimeData* EntryModel::mimeData(const QModelIndexList& indexes) const
if (seenEntries.isEmpty()) {
delete data;
return nullptr;
- }
- else {
+ } else {
data->setData(mimeTypes().at(0), encoded);
return data;
}
@@ -338,3 +448,58 @@ void EntryModel::makeConnections(const Group* group)
connect(group, SIGNAL(entryRemoved(Entry*)), SLOT(entryRemoved()));
connect(group, SIGNAL(entryDataChanged(Entry*)), SLOT(entryDataChanged(Entry*)));
}
+
+/**
+ * Get current state of 'Hide Usernames' setting
+ */
+bool EntryModel::isUsernamesHidden() const
+{
+ return m_hideUsernames;
+}
+
+/**
+ * Set state of 'Hide Usernames' setting and signal change
+ */
+void EntryModel::setUsernamesHidden(const bool hide)
+{
+ m_hideUsernames = hide;
+ emit usernamesHiddenChanged();
+}
+
+/**
+ * Get current state of 'Hide Passwords' setting
+ */
+bool EntryModel::isPasswordsHidden() const
+{
+ return m_hidePasswords;
+}
+
+/**
+ * Set state of 'Hide Passwords' setting and signal change
+ */
+void EntryModel::setPasswordsHidden(const bool hide)
+{
+ m_hidePasswords = hide;
+ emit passwordsHiddenChanged();
+}
+
+/**
+ * Toggle state of 'Hide Usernames' setting
+ */
+void EntryModel::toggleUsernamesHidden(const bool hide)
+{
+ setUsernamesHidden(hide);
+}
+
+/**
+ * Toggle state of 'Hide Passwords' setting
+ */
+void EntryModel::togglePasswordsHidden(const bool hide)
+{
+ setPasswordsHidden(hide);
+}
+
+void EntryModel::setPaperClipPixmap(const QPixmap& paperclip)
+{
+ m_paperClipPixmap = paperclip;
+}
diff --git a/src/gui/entry/EntryModel.h b/src/gui/entry/EntryModel.h
index d12982d83..4fc765044 100644
--- a/src/gui/entry/EntryModel.h
+++ b/src/gui/entry/EntryModel.h
@@ -19,6 +19,7 @@
#define KEEPASSX_ENTRYMODEL_H
#include <QAbstractTableModel>
+#include <QPixmap>
class Entry;
class Group;
@@ -33,7 +34,15 @@ public:
ParentGroup = 0,
Title = 1,
Username = 2,
- Url = 3
+ Password = 3,
+ Url = 4,
+ Notes = 5,
+ Expires = 6,
+ Created = 7,
+ Modified = 8,
+ Accessed = 9,
+ Paperclip = 10,
+ Attachments = 11
};
explicit EntryModel(QObject* parent = nullptr);
@@ -52,12 +61,23 @@ public:
void setEntryList(const QList<Entry*>& entries);
+ bool isUsernamesHidden() const;
+ void setUsernamesHidden(const bool hide);
+ bool isPasswordsHidden() const;
+ void setPasswordsHidden(const bool hide);
+
+ void setPaperClipPixmap(const QPixmap& paperclip);
+
signals:
- void switchedToEntryListMode();
- void switchedToGroupMode();
+ void switchedToListMode();
+ void switchedToSearchMode();
+ void usernamesHiddenChanged();
+ void passwordsHiddenChanged();
public slots:
void setGroup(Group* group);
+ void toggleUsernamesHidden(const bool hide);
+ void togglePasswordsHidden(const bool hide);
private slots:
void entryAboutToAdd(Entry* entry);
@@ -74,6 +94,14 @@ private:
QList<Entry*> m_entries;
QList<Entry*> m_orgEntries;
QList<const Group*> m_allGroups;
+
+ bool m_hideUsernames;
+ bool m_hidePasswords;
+
+ QPixmap m_paperClipPixmap;
+
+ static const QString HiddenContentDisplay;
+ static const Qt::DateFormat DateFormat;
};
#endif // KEEPASSX_ENTRYMODEL_H
diff --git a/src/gui/entry/EntryView.cpp b/src/gui/entry/EntryView.cpp
index 1bdd4fbcf..19978a808 100644
--- a/src/gui/entry/EntryView.cpp
+++ b/src/gui/entry/EntryView.cpp
@@ -1,37 +1,42 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
*
- * 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 General Public License for more details.
+ * 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 General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "EntryView.h"
#include <QHeaderView>
#include <QKeyEvent>
+#include <QMenu>
+#include "core/FilePath.h"
#include "gui/SortFilterHideProxyModel.h"
EntryView::EntryView(QWidget* parent)
: QTreeView(parent)
, m_model(new EntryModel(this))
, m_sortModel(new SortFilterHideProxyModel(this))
- , m_inEntryListMode(false)
+ , m_inSearchMode(false)
{
m_sortModel->setSourceModel(m_model);
m_sortModel->setDynamicSortFilter(true);
m_sortModel->setSortLocaleAware(true);
m_sortModel->setSortCaseSensitivity(Qt::CaseInsensitive);
+ // Use Qt::UserRole as sort role, see EntryModel::data()
+ m_sortModel->setSortRole(Qt::UserRole);
QTreeView::setModel(m_sortModel);
setUniformRowHeights(true);
@@ -40,15 +45,77 @@ EntryView::EntryView(QWidget* parent)
setDragEnabled(true);
setSortingEnabled(true);
setSelectionMode(QAbstractItemView::ExtendedSelection);
- header()->setDefaultSectionSize(150);
// QAbstractItemView::startDrag() uses this property as the default drag action
setDefaultDropAction(Qt::MoveAction);
connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(emitEntryActivated(QModelIndex)));
connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SIGNAL(entrySelectionChanged()));
- connect(m_model, SIGNAL(switchedToEntryListMode()), SLOT(switchToEntryListMode()));
- connect(m_model, SIGNAL(switchedToGroupMode()), SLOT(switchToGroupMode()));
+ connect(m_model, SIGNAL(switchedToListMode()), SLOT(switchToListMode()));
+ connect(m_model, SIGNAL(switchedToSearchMode()), SLOT(switchToSearchMode()));
+ connect(m_model, SIGNAL(usernamesHiddenChanged()), SIGNAL(viewStateChanged()));
+ connect(m_model, SIGNAL(passwordsHiddenChanged()), SIGNAL(viewStateChanged()));
+ connect(this, SIGNAL(clicked(QModelIndex)), SLOT(emitEntryPressed(QModelIndex)));
+
+ m_headerMenu = new QMenu(this);
+ m_headerMenu->setTitle(tr("Customize View"));
+ m_headerMenu->addSection(tr("Customize View"));
+
+ m_hideUsernamesAction = m_headerMenu->addAction(tr("Hide Usernames"), m_model, SLOT(toggleUsernamesHidden(bool)));
+ m_hideUsernamesAction->setCheckable(true);
+ m_hidePasswordsAction = m_headerMenu->addAction(tr("Hide Passwords"), m_model, SLOT(togglePasswordsHidden(bool)));
+ m_hidePasswordsAction->setCheckable(true);
+ m_headerMenu->addSeparator();
+
+ // Actions to toggle column visibility, each carrying the corresponding
+ // colummn index as data
+ m_columnActions = new QActionGroup(this);
+ m_columnActions->setExclusive(false);
+ for (int columnIndex = 1; columnIndex < header()->count(); ++columnIndex) {
+ QString caption = m_model->headerData(columnIndex, Qt::Horizontal, Qt::DisplayRole).toString();
+ if (columnIndex == EntryModel::Paperclip) {
+ caption = tr("Attachments (icon)");
+ }
+
+ QAction* action = m_headerMenu->addAction(caption);
+ action->setCheckable(true);
+ action->setData(columnIndex);
+ m_columnActions->addAction(action);
+ }
+ connect(m_columnActions, SIGNAL(triggered(QAction*)), this, SLOT(toggleColumnVisibility(QAction*)));
+
+ m_headerMenu->addSeparator();
+ m_headerMenu->addAction(tr("Fit to window"), this, SLOT(fitColumnsToWindow()));
+ m_headerMenu->addAction(tr("Fit to contents"), this, SLOT(fitColumnsToContents()));
+ m_headerMenu->addSeparator();
+ m_headerMenu->addAction(tr("Reset to defaults"), this, SLOT(resetViewToDefaults()));
+
+ header()->setMinimumSectionSize(24);
+ header()->setDefaultSectionSize(100);
+ header()->setStretchLastSection(false);
+ header()->setContextMenuPolicy(Qt::CustomContextMenu);
+
+ connect(header(), SIGNAL(customContextMenuRequested(QPoint)), SLOT(showHeaderMenu(QPoint)));
+ connect(header(), SIGNAL(sectionCountChanged(int, int)), SIGNAL(viewStateChanged()));
+ connect(header(), SIGNAL(sectionMoved(int, int, int)), SIGNAL(viewStateChanged()));
+ connect(header(), SIGNAL(sectionResized(int, int, int)), SIGNAL(viewStateChanged()));
+ connect(header(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), SIGNAL(viewStateChanged()));
+
+ resetFixedColumns();
+
+ // Configure default search view state and save for later use
+ header()->showSection(EntryModel::ParentGroup);
+ m_sortModel->sort(EntryModel::ParentGroup, Qt::AscendingOrder);
+ sortByColumn(EntryModel::ParentGroup, Qt::AscendingOrder);
+ m_defaultSearchViewState = header()->saveState();
+
+ // Configure default list view state and save for later use
+ header()->hideSection(EntryModel::ParentGroup);
+ m_sortModel->sort(EntryModel::Title, Qt::AscendingOrder);
+ sortByColumn(EntryModel::Title, Qt::AscendingOrder);
+ m_defaultListViewState = header()->saveState();
+
+ m_model->setPaperClipPixmap(filePath()->icon("actions", "paperclip").pixmap(16));
}
void EntryView::keyPressEvent(QKeyEvent* event)
@@ -61,6 +128,20 @@ void EntryView::keyPressEvent(QKeyEvent* event)
#endif
}
+ int last = m_model->rowCount() - 1;
+
+ if (event->key() == Qt::Key_Up && currentIndex().row() == 0) {
+ QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(last, 0));
+ setCurrentEntry(m_model->entryFromIndex(index));
+ return;
+ }
+
+ if (event->key() == Qt::Key_Down && currentIndex().row() == last) {
+ QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(0, 0));
+ setCurrentEntry(m_model->entryFromIndex(index));
+ return;
+ }
+
QTreeView::keyPressEvent(event);
}
@@ -81,15 +162,14 @@ void EntryView::setFirstEntryActive()
if (m_model->rowCount() > 0) {
QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(0, 0));
setCurrentEntry(m_model->entryFromIndex(index));
- }
- else {
+ } else {
emit entrySelectionChanged();
}
}
-bool EntryView::inEntryListMode()
+bool EntryView::inSearchMode()
{
- return m_inEntryListMode;
+ return m_inSearchMode;
}
void EntryView::emitEntryActivated(const QModelIndex& index)
@@ -99,6 +179,11 @@ void EntryView::emitEntryActivated(const QModelIndex& index)
emit entryActivated(entry, static_cast<EntryModel::ModelColumn>(m_sortModel->mapToSource(index).column()));
}
+void EntryView::emitEntryPressed(const QModelIndex& index)
+{
+ emit entryPressed(entryFromIndex(index));
+}
+
void EntryView::setModel(QAbstractItemModel* model)
{
Q_UNUSED(model);
@@ -110,8 +195,7 @@ Entry* EntryView::currentEntry()
QModelIndexList list = selectionModel()->selectedRows();
if (list.size() == 1) {
return m_model->entryFromIndex(m_sortModel->mapToSource(list.first()));
- }
- else {
+ } else {
return nullptr;
}
}
@@ -131,30 +215,240 @@ Entry* EntryView::entryFromIndex(const QModelIndex& index)
{
if (index.isValid()) {
return m_model->entryFromIndex(m_sortModel->mapToSource(index));
- }
- else {
+ } else {
return nullptr;
}
}
-void EntryView::switchToEntryListMode()
+/**
+ * Switch to list mode, i.e. list entries of group
+ */
+void EntryView::switchToListMode()
+{
+ if (!m_inSearchMode) {
+ return;
+ }
+
+ header()->hideSection(EntryModel::ParentGroup);
+ m_inSearchMode = false;
+}
+
+/**
+ * Switch to search mode, i.e. list search results
+ */
+void EntryView::switchToSearchMode()
+{
+ if (m_inSearchMode) {
+ return;
+ }
+
+ header()->showSection(EntryModel::ParentGroup);
+
+ // Always set sorting to column 'Group', as it does not feel right to
+ // have the last known sort configuration of search view restored by
+ // 'DatabaseWidgetStateSync', which is what happens without this
+ m_sortModel->sort(EntryModel::ParentGroup, Qt::AscendingOrder);
+ sortByColumn(EntryModel::ParentGroup, Qt::AscendingOrder);
+
+ m_inSearchMode = true;
+}
+
+/**
+ * Get current state of 'Hide Usernames' setting (NOTE: just pass-through for
+ * m_model)
+ */
+bool EntryView::isUsernamesHidden() const
+{
+ return m_model->isUsernamesHidden();
+}
+
+/**
+ * Set state of 'Hide Usernames' setting (NOTE: just pass-through for m_model)
+ */
+void EntryView::setUsernamesHidden(const bool hide)
+{
+ m_model->setUsernamesHidden(hide);
+}
+
+/**
+ * Get current state of 'Hide Passwords' setting (NOTE: just pass-through for
+ * m_model)
+ */
+bool EntryView::isPasswordsHidden() const
+{
+ return m_model->isPasswordsHidden();
+}
+
+/**
+ * Set state of 'Hide Passwords' setting (NOTE: just pass-through for m_model)
+ */
+void EntryView::setPasswordsHidden(const bool hide)
+{
+ m_model->setPasswordsHidden(hide);
+}
+
+/**
+ * Get current view state
+ */
+QByteArray EntryView::viewState() const
+{
+ return header()->saveState();
+}
+
+/**
+ * Set view state
+ */
+bool EntryView::setViewState(const QByteArray& state)
+{
+ bool status = header()->restoreState(state);
+ resetFixedColumns();
+ return status;
+}
+
+/**
+ * Sync checkable menu actions to current state and display header context
+ * menu at specified position
+ */
+void EntryView::showHeaderMenu(const QPoint& position)
+{
+ m_hideUsernamesAction->setChecked(m_model->isUsernamesHidden());
+ m_hidePasswordsAction->setChecked(m_model->isPasswordsHidden());
+ const QList<QAction*> actions = m_columnActions->actions();
+ for (auto& action : actions) {
+ Q_ASSERT(static_cast<QMetaType::Type>(action->data().type()) == QMetaType::Int);
+ if (static_cast<QMetaType::Type>(action->data().type()) != QMetaType::Int) {
+ continue;
+ }
+ int columnIndex = action->data().toInt();
+ bool hidden = header()->isSectionHidden(columnIndex) || (header()->sectionSize(columnIndex) == 0);
+ action->setChecked(!hidden);
+ }
+
+ m_headerMenu->popup(mapToGlobal(position));
+}
+
+/**
+ * Toggle visibility of column referenced by triggering action
+ */
+void EntryView::toggleColumnVisibility(QAction *action)
{
- m_sortModel->hideColumn(0, false);
+ // Verify action carries a column index as data. Since QVariant.toInt()
+ // below will accept anything that's interpretable as int, perform a type
+ // check here to make sure data actually IS int
+ Q_ASSERT(static_cast<QMetaType::Type>(action->data().type()) == QMetaType::Int);
+ if (static_cast<QMetaType::Type>(action->data().type()) != QMetaType::Int) {
+ return;
+ }
- m_sortModel->sort(1, Qt::AscendingOrder);
- m_sortModel->sort(0, Qt::AscendingOrder);
- sortByColumn(0, Qt::AscendingOrder);
+ // Toggle column visibility. Visible columns will only be hidden if at
+ // least one visible column remains, as the table header will disappear
+ // entirely when all columns are hidden
+ int columnIndex = action->data().toInt();
+ if (action->isChecked()) {
+ header()->showSection(columnIndex);
+ if (header()->sectionSize(columnIndex) == 0) {
+ header()->resizeSection(columnIndex, header()->defaultSectionSize());
+ }
+ return;
+ }
+ if ((header()->count() - header()->hiddenSectionCount()) > 1) {
+ header()->hideSection(columnIndex);
+ return;
+ }
+ action->setChecked(true);
+}
+
+/**
+ * Resize columns to fit all visible columns within the available space
+ *
+ * NOTE:
+ * If EntryView::resizeEvent() is overridden at some point in the future,
+ * its implementation MUST call the corresponding parent method using
+ * 'QTreeView::resizeEvent(event)'. Without this, fitting to window will
+ * be broken and/or work unreliably (stumbled upon during testing)
+ *
+ * NOTE:
+ * Testing showed that it is absolutely necessary to emit signal 'viewState
+ * Changed' here. Without this, an incomplete view state might get saved by
+ * 'DatabaseWidgetStateSync' (e.g. only some columns resized)
+ */
+void EntryView::fitColumnsToWindow()
+{
+ header()->resizeSections(QHeaderView::Stretch);
+ resetFixedColumns();
+ fillRemainingWidth(true);
+ emit viewStateChanged();
+}
+
+/**
+ * Resize columns to fit current table contents, i.e. make all contents
+ * entirely visible
+ */
+void EntryView::fitColumnsToContents()
+{
+ // Resize columns to fit contents
+ header()->resizeSections(QHeaderView::ResizeToContents);
+ resetFixedColumns();
+ fillRemainingWidth(false);
+ emit viewStateChanged();
+}
+
+/**
+ * Reset view to defaults
+ */
+void EntryView::resetViewToDefaults()
+{
+ m_model->setUsernamesHidden(false);
+ m_model->setPasswordsHidden(true);
+
+ if (m_inSearchMode) {
+ header()->restoreState(m_defaultSearchViewState);
+ } else {
+ header()->restoreState(m_defaultListViewState);
+ }
- m_inEntryListMode = true;
+ fitColumnsToWindow();
}
-void EntryView::switchToGroupMode()
+void EntryView::fillRemainingWidth(bool lastColumnOnly)
{
- m_sortModel->hideColumn(0, true);
+ // Determine total width of currently visible columns
+ int width = 0;
+ int lastColumnIndex = 0;
+ for (int columnIndex = 0; columnIndex < header()->count(); ++columnIndex) {
+ if (!header()->isSectionHidden(columnIndex)) {
+ width += header()->sectionSize(columnIndex);
+ }
+ if (header()->visualIndex(columnIndex) > lastColumnIndex) {
+ lastColumnIndex = header()->visualIndex(columnIndex);
+ }
+ }
+
+ int numColumns = header()->count() - header()->hiddenSectionCount();
+ int availWidth = header()->width() - width;
+ if ((numColumns <= 0) || (availWidth <= 0)) {
+ return;
+ }
+
+ if (!lastColumnOnly) {
+ // Equally distribute remaining width to visible columns
+ int add = availWidth / numColumns;
+ width = 0;
+ for (int columnIndex = 0; columnIndex < header()->count(); ++columnIndex) {
+ if (!header()->isSectionHidden(columnIndex)) {
+ header()->resizeSection(columnIndex, header()->sectionSize(columnIndex) + add);
+ width += header()->sectionSize(columnIndex);
+ }
+ }
+ }
- m_sortModel->sort(-1, Qt::AscendingOrder);
- m_sortModel->sort(0, Qt::AscendingOrder);
- sortByColumn(0, Qt::AscendingOrder);
+ // Add remaining width to last column
+ header()->resizeSection(header()->logicalIndex(lastColumnIndex), header()->sectionSize(lastColumnIndex) + (header()->width() - width));
+}
- m_inEntryListMode = false;
+void EntryView::resetFixedColumns()
+{
+ header()->setSectionResizeMode(EntryModel::Paperclip, QHeaderView::Fixed);
+ header()->resizeSection(EntryModel::Paperclip, header()->minimumSectionSize());
}
+
diff --git a/src/gui/entry/EntryView.h b/src/gui/entry/EntryView.h
index 6a545f62a..a8422c563 100644
--- a/src/gui/entry/EntryView.h
+++ b/src/gui/entry/EntryView.h
@@ -1,18 +1,19 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
*
- * 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 General Public License for more details.
+ * 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 General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef KEEPASSX_ENTRYVIEW_H
@@ -26,6 +27,7 @@ class Entry;
class EntryModel;
class Group;
class SortFilterHideProxyModel;
+class QActionGroup;
class EntryView : public QTreeView
{
@@ -38,29 +40,54 @@ public:
void setCurrentEntry(Entry* entry);
Entry* entryFromIndex(const QModelIndex& index);
void setEntryList(const QList<Entry*>& entries);
- bool inEntryListMode();
+ bool inSearchMode();
int numberOfSelectedEntries();
void setFirstEntryActive();
+ bool isUsernamesHidden() const;
+ void setUsernamesHidden(const bool hide);
+ bool isPasswordsHidden() const;
+ void setPasswordsHidden(const bool hide);
+ QByteArray viewState() const;
+ bool setViewState(const QByteArray& state);
public slots:
void setGroup(Group* group);
signals:
void entryActivated(Entry* entry, EntryModel::ModelColumn column);
+ void entryPressed(Entry* entry);
void entrySelectionChanged();
+ void viewStateChanged();
protected:
void keyPressEvent(QKeyEvent* event) override;
private slots:
void emitEntryActivated(const QModelIndex& index);
- void switchToEntryListMode();
- void switchToGroupMode();
+ void emitEntryPressed(const QModelIndex& index);
+ void switchToListMode();
+ void switchToSearchMode();
+ void showHeaderMenu(const QPoint& position);
+ void toggleColumnVisibility(QAction *action);
+ void fitColumnsToWindow();
+ void fitColumnsToContents();
+ void resetViewToDefaults();
private:
+ void fillRemainingWidth(bool lastColumnOnly);
+ void resetFixedColumns();
+
EntryModel* const m_model;
SortFilterHideProxyModel* const m_sortModel;
- bool m_inEntryListMode;
+ bool m_inSearchMode;
+
+ QByteArray m_defaultListViewState;
+ QByteArray m_defaultSearchViewState;
+
+ QMenu* m_headerMenu;
+ QAction* m_hideUsernamesAction;
+ QAction* m_hidePasswordsAction;
+ QActionGroup* m_columnActions;
};
#endif // KEEPASSX_ENTRYVIEW_H
diff --git a/src/gui/group/EditGroupWidget.cpp b/src/gui/group/EditGroupWidget.cpp
index da9875fb4..9ffd31a5e 100644
--- a/src/gui/group/EditGroupWidget.cpp
+++ b/src/gui/group/EditGroupWidget.cpp
@@ -95,6 +95,7 @@ void EditGroupWidget::loadGroup(Group* group, bool create, Database* database)
m_editGroupWidgetIcons->load(group->uuid(), database, iconStruct);
m_editWidgetProperties->setFields(group->timeInfo(), group->uuid());
+ m_editWidgetProperties->setCustomData(group->customData());
setCurrentPage(0);
@@ -118,6 +119,8 @@ void EditGroupWidget::apply()
m_group->setSearchingEnabled(triStateFromIndex(m_mainUi->searchComboBox->currentIndex()));
m_group->setAutoTypeEnabled(triStateFromIndex(m_mainUi->autotypeComboBox->currentIndex()));
+ m_group->customData()->copyDataFrom(m_editWidgetProperties->customData());
+
if (m_mainUi->autoTypeSequenceInherit->isChecked()) {
m_group->setDefaultAutoTypeSequence(QString());
}
diff --git a/src/gui/group/GroupView.cpp b/src/gui/group/GroupView.cpp
index e9649e441..82d01e31c 100644
--- a/src/gui/group/GroupView.cpp
+++ b/src/gui/group/GroupView.cpp
@@ -41,6 +41,8 @@ GroupView::GroupView(Database* db, QWidget* parent)
connect(selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(emitGroupChanged()));
+ connect(this, SIGNAL(clicked(QModelIndex)), SLOT(emitGroupPressed(QModelIndex)));
+
modelReset();
setDragEnabled(true);
@@ -126,6 +128,11 @@ void GroupView::emitGroupChanged()
emit groupChanged(currentGroup());
}
+void GroupView::emitGroupPressed(const QModelIndex& index)
+{
+ emit groupPressed(m_model->groupFromIndex(index));
+}
+
void GroupView::syncExpandedState(const QModelIndex& parent, int start, int end)
{
for (int row = start; row <= end; row++) {
diff --git a/src/gui/group/GroupView.h b/src/gui/group/GroupView.h
index eaa290725..0a084425d 100644
--- a/src/gui/group/GroupView.h
+++ b/src/gui/group/GroupView.h
@@ -38,11 +38,13 @@ public:
signals:
void groupChanged(Group* group);
+ void groupPressed(Group* group);
private slots:
void expandedChanged(const QModelIndex& index);
void emitGroupChanged(const QModelIndex& index);
void emitGroupChanged();
+ void emitGroupPressed(const QModelIndex& index);
void syncExpandedState(const QModelIndex& parent, int start, int end);
void modelReset();
diff --git a/src/gui/org.keepassxc.KeePassXC.MainWindow.xml b/src/gui/org.keepassxc.KeePassXC.MainWindow.xml
new file mode 100644
index 000000000..635a66b93
--- /dev/null
+++ b/src/gui/org.keepassxc.KeePassXC.MainWindow.xml
@@ -0,0 +1,23 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node>
+ <interface name="org.keepassxc.KeePassXC.MainWindow">
+ <method name="openDatabase">
+ <arg name="fileName" type="s" direction="in"/>
+ <arg name="pw" type="s" direction="in"/>
+ <arg name="keyFile" type="s" direction="in"/>
+ </method>
+ <method name="openDatabase">
+ <arg name="fileName" type="s" direction="in"/>
+ <arg name="pw" type="s" direction="in"/>
+ </method>
+ <method name="openDatabase">
+ <arg name="fileName" type="s" direction="in"/>
+ </method>
+ <method name="appExit">
+ </method>
+ <method name="lockAllDatabases">
+ </method>
+ <method name="closeAllDatabases">
+ </method>
+ </interface>
+</node>
diff --git a/src/gui/widgets/ElidedLabel.cpp b/src/gui/widgets/ElidedLabel.cpp
new file mode 100644
index 000000000..1642bdec8
--- /dev/null
+++ b/src/gui/widgets/ElidedLabel.cpp
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ElidedLabel.h"
+
+#include <QResizeEvent>
+#include <QDebug>
+
+namespace {
+const QString htmlLinkTemplate("<a href=\"%1\">%2</a>");
+}
+
+ElidedLabel::ElidedLabel(QWidget* parent, Qt::WindowFlags f)
+ : QLabel(parent, f)
+ , m_elideMode(Qt::ElideMiddle)
+{
+ connect(this, SIGNAL(elideModeChanged(Qt::TextElideMode)), this, SLOT(updateElidedText()));
+ connect(this, SIGNAL(rawTextChanged(QString)), this, SLOT(updateElidedText()));
+ connect(this, SIGNAL(urlChanged(QString)), this, SLOT(updateElidedText()));
+}
+
+ElidedLabel::ElidedLabel(const QString& text, QWidget* parent, Qt::WindowFlags f)
+ : ElidedLabel(parent, f)
+{
+ setText(text);
+}
+
+Qt::TextElideMode ElidedLabel::elideMode() const
+{
+ return m_elideMode;
+}
+
+QString ElidedLabel::rawText() const
+{
+ return m_rawText;
+}
+
+QString ElidedLabel::url() const
+{
+ return m_url;
+}
+
+void ElidedLabel::setElideMode(Qt::TextElideMode elideMode)
+{
+ if (m_elideMode == elideMode)
+ return;
+
+ if (m_elideMode != Qt::ElideNone) {
+ setWordWrap(false);
+ }
+
+ m_elideMode = elideMode;
+ emit elideModeChanged(m_elideMode);
+}
+
+void ElidedLabel::setRawText(const QString& elidedText)
+{
+ if (m_rawText == elidedText)
+ return;
+
+ m_rawText = elidedText;
+ emit rawTextChanged(m_rawText);
+}
+
+void ElidedLabel::setUrl(const QString& url)
+{
+ if (m_url == url)
+ return;
+
+ m_url = url;
+ emit urlChanged(m_url);
+}
+
+void ElidedLabel::clear()
+{
+ setRawText(QString());
+ setElideMode(Qt::ElideMiddle);
+ setUrl(QString());
+ QLabel::clear();
+}
+
+void ElidedLabel::updateElidedText()
+{
+ if (m_rawText.isEmpty()) {
+ QLabel::clear();
+ return;
+ }
+
+ QString displayText = m_rawText;
+ if (m_elideMode != Qt::ElideNone) {
+ const QFontMetrics metrix(font());
+ displayText = metrix.elidedText(m_rawText, m_elideMode, width() - 2);
+ }
+ setText(m_url.isEmpty() ? displayText : htmlLinkTemplate.arg(m_url, displayText));
+ setOpenExternalLinks(!m_url.isEmpty());
+}
+
+void ElidedLabel::resizeEvent(QResizeEvent* event)
+{
+ updateElidedText();
+ QLabel::resizeEvent(event);
+}
diff --git a/src/gui/widgets/ElidedLabel.h b/src/gui/widgets/ElidedLabel.h
new file mode 100644
index 000000000..c7694b5a1
--- /dev/null
+++ b/src/gui/widgets/ElidedLabel.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_ELIDEDLABEL_H
+#define KEEPASSX_ELIDEDLABEL_H
+
+#include <QLabel>
+
+class QResizeEvent;
+
+class ElidedLabel : public QLabel
+{
+ Q_OBJECT
+ Q_PROPERTY(Qt::TextElideMode elideMode READ elideMode WRITE setElideMode NOTIFY elideModeChanged)
+ Q_PROPERTY(QString rawText READ rawText WRITE setRawText NOTIFY rawTextChanged)
+ Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged)
+public:
+ explicit ElidedLabel(QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags());
+ explicit ElidedLabel(const QString &text, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags());
+
+ Qt::TextElideMode elideMode() const;
+ QString rawText() const;
+ QString url() const;
+
+public slots:
+ void setElideMode(Qt::TextElideMode elideMode);
+ void setRawText(const QString& rawText);
+ void setUrl(const QString& url);
+ void clear();
+
+signals:
+ void elideModeChanged(Qt::TextElideMode elideMode);
+ void rawTextChanged(QString rawText);
+ void urlChanged(QString url);
+
+private slots:
+ void updateElidedText();
+
+private:
+ void resizeEvent(QResizeEvent* event);
+
+ Qt::TextElideMode m_elideMode;
+ QString m_rawText;
+ QString m_url;
+};
+
+#endif // KEEPASSX_ELIDEDLABEL_H
diff --git a/src/http/AccessControlDialog.cpp b/src/http/AccessControlDialog.cpp
index ef02215a3..30ab3f21c 100644
--- a/src/http/AccessControlDialog.cpp
+++ b/src/http/AccessControlDialog.cpp
@@ -44,7 +44,9 @@ void AccessControlDialog::setUrl(const QString &url)
void AccessControlDialog::setItems(const QList<Entry*> &items)
{
for (Entry* entry: items) {
- ui->itemsList->addItem(entry->title() + " - " + entry->username());
+ QString title = entry->resolveMultiplePlaceholders(entry->title());
+ QString username = entry->resolveMultiplePlaceholders(entry->username());
+ ui->itemsList->addItem(title + " - " + username);
}
}
diff --git a/src/http/CMakeLists.txt b/src/http/CMakeLists.txt
index 8a3b197ab..962f78c36 100644
--- a/src/http/CMakeLists.txt
+++ b/src/http/CMakeLists.txt
@@ -1,6 +1,6 @@
-add_subdirectory(qhttp)
-
if(WITH_XC_HTTP)
+ add_subdirectory(qhttp)
+
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
set(keepasshttp_SOURCES
@@ -15,5 +15,7 @@ if(WITH_XC_HTTP)
)
add_library(keepasshttp STATIC ${keepasshttp_SOURCES})
- target_link_libraries(keepasshttp qhttp Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Network)
+ target_link_libraries(keepasshttp PUBLIC qhttp Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Network)
+
+ set(keepassxchttp_LIB keepasshttp PARENT_SCOPE)
endif()
diff --git a/src/http/HttpPasswordGeneratorWidget.cpp b/src/http/HttpPasswordGeneratorWidget.cpp
index 55e5b08fc..f08bc3d36 100644
--- a/src/http/HttpPasswordGeneratorWidget.cpp
+++ b/src/http/HttpPasswordGeneratorWidget.cpp
@@ -48,15 +48,16 @@ HttpPasswordGeneratorWidget::~HttpPasswordGeneratorWidget()
void HttpPasswordGeneratorWidget::loadSettings()
{
- m_ui->checkBoxLower->setChecked(config()->get("Http/generator/LowerCase", true).toBool());
- m_ui->checkBoxUpper->setChecked(config()->get("Http/generator/UpperCase", true).toBool());
- m_ui->checkBoxNumbers->setChecked(config()->get("Http/generator/Numbers", true).toBool());
- m_ui->checkBoxSpecialChars->setChecked(config()->get("Http/generator/SpecialChars", false).toBool());
+ m_ui->checkBoxLower->setChecked(config()->get("Http/generator/LowerCase", PasswordGenerator::DefaultLower).toBool());
+ m_ui->checkBoxUpper->setChecked(config()->get("Http/generator/UpperCase", PasswordGenerator::DefaultUpper).toBool());
+ m_ui->checkBoxNumbers->setChecked(config()->get("Http/generator/Numbers", PasswordGenerator::DefaultNumbers).toBool());
+ m_ui->checkBoxSpecialChars->setChecked(config()->get("Http/generator/SpecialChars", PasswordGenerator::DefaultSpecial).toBool());
+ m_ui->checkBoxSpecialChars->setChecked(config()->get("Http/generator/EASCII", PasswordGenerator::DefaultEASCII).toBool());
- m_ui->checkBoxExcludeAlike->setChecked(config()->get("Http/generator/ExcludeAlike", true).toBool());
- m_ui->checkBoxEnsureEvery->setChecked(config()->get("Http/generator/EnsureEvery", true).toBool());
+ m_ui->checkBoxExcludeAlike->setChecked(config()->get("Http/generator/ExcludeAlike", PasswordGenerator::DefaultLookAlike).toBool());
+ m_ui->checkBoxEnsureEvery->setChecked(config()->get("Http/generator/EnsureEvery", PasswordGenerator::DefaultFromEveryGroup).toBool());
- m_ui->spinBoxLength->setValue(config()->get("Http/generator/Length", 16).toInt());
+ m_ui->spinBoxLength->setValue(config()->get("Http/generator/Length", PasswordGenerator::DefaultLength).toInt());
}
void HttpPasswordGeneratorWidget::saveSettings()
@@ -65,6 +66,7 @@ void HttpPasswordGeneratorWidget::saveSettings()
config()->set("Http/generator/UpperCase", m_ui->checkBoxUpper->isChecked());
config()->set("Http/generator/Numbers", m_ui->checkBoxNumbers->isChecked());
config()->set("Http/generator/SpecialChars", m_ui->checkBoxSpecialChars->isChecked());
+ config()->set("Http/generator/EASCII", m_ui->checkBoxExtASCII->isChecked());
config()->set("Http/generator/ExcludeAlike", m_ui->checkBoxExcludeAlike->isChecked());
config()->set("Http/generator/EnsureEvery", m_ui->checkBoxEnsureEvery->isChecked());
@@ -120,6 +122,10 @@ PasswordGenerator::CharClasses HttpPasswordGeneratorWidget::charClasses()
classes |= PasswordGenerator::SpecialCharacters;
}
+ if (m_ui->checkBoxExtASCII->isChecked()) {
+ classes |= PasswordGenerator::EASCII;
+ }
+
return classes;
}
diff --git a/src/http/HttpPasswordGeneratorWidget.ui b/src/http/HttpPasswordGeneratorWidget.ui
index 066b9c512..71df88730 100644
--- a/src/http/HttpPasswordGeneratorWidget.ui
+++ b/src/http/HttpPasswordGeneratorWidget.ui
@@ -143,6 +143,22 @@
</widget>
</item>
<item>
+ <widget class="QToolButton" name="checkBoxExtASCII">
+ <property name="toolTip">
+ <string>Extended ASCII</string>
+ </property>
+ <property name="text">
+ <string>Extended ASCII</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">optionButtons</string>
+ </attribute>
+ </widget>
+ </item>
+ <item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
diff --git a/src/http/HttpSettings.cpp b/src/http/HttpSettings.cpp
index 60a35940c..7ff0dbaa4 100644
--- a/src/http/HttpSettings.cpp
+++ b/src/http/HttpSettings.cpp
@@ -145,7 +145,7 @@ void HttpSettings::setHttpPort(int port)
bool HttpSettings::passwordUseNumbers()
{
- return config()->get("Http/generator/Numbers", true).toBool();
+ return config()->get("Http/generator/Numbers", PasswordGenerator::DefaultNumbers).toBool();
}
void HttpSettings::setPasswordUseNumbers(bool useNumbers)
@@ -155,7 +155,7 @@ void HttpSettings::setPasswordUseNumbers(bool useNumbers)
bool HttpSettings::passwordUseLowercase()
{
- return config()->get("Http/generator/LowerCase", true).toBool();
+ return config()->get("Http/generator/LowerCase", PasswordGenerator::DefaultLower).toBool();
}
void HttpSettings::setPasswordUseLowercase(bool useLowercase)
@@ -165,7 +165,7 @@ void HttpSettings::setPasswordUseLowercase(bool useLowercase)
bool HttpSettings::passwordUseUppercase()
{
- return config()->get("Http/generator/UpperCase", true).toBool();
+ return config()->get("Http/generator/UpperCase", PasswordGenerator::DefaultUpper).toBool();
}
void HttpSettings::setPasswordUseUppercase(bool useUppercase)
@@ -175,7 +175,7 @@ void HttpSettings::setPasswordUseUppercase(bool useUppercase)
bool HttpSettings::passwordUseSpecial()
{
- return config()->get("Http/generator/SpecialChars", false).toBool();
+ return config()->get("Http/generator/SpecialChars", PasswordGenerator::DefaultSpecial).toBool();
}
void HttpSettings::setPasswordUseSpecial(bool useSpecial)
@@ -183,9 +183,19 @@ void HttpSettings::setPasswordUseSpecial(bool useSpecial)
config()->set("Http/generator/SpecialChars", useSpecial);
}
+bool HttpSettings::passwordUseEASCII()
+{
+ return config()->get("Http/generator/EASCII", PasswordGenerator::DefaultEASCII).toBool();
+}
+
+void HttpSettings::setPasswordUseEASCII(bool useExtended)
+{
+ config()->set("Http/generator/EASCII", useExtended);
+}
+
bool HttpSettings::passwordEveryGroup()
{
- return config()->get("Http/generator/EnsureEvery", true).toBool();
+ return config()->get("Http/generator/EnsureEvery", PasswordGenerator::DefaultFromEveryGroup).toBool();
}
void HttpSettings::setPasswordEveryGroup(bool everyGroup)
@@ -195,7 +205,7 @@ void HttpSettings::setPasswordEveryGroup(bool everyGroup)
bool HttpSettings::passwordExcludeAlike()
{
- return config()->get("Http/generator/ExcludeAlike", true).toBool();
+ return config()->get("Http/generator/ExcludeAlike", PasswordGenerator::DefaultLookAlike).toBool();
}
void HttpSettings::setPasswordExcludeAlike(bool excludeAlike)
@@ -205,7 +215,7 @@ void HttpSettings::setPasswordExcludeAlike(bool excludeAlike)
int HttpSettings::passwordLength()
{
- return config()->get("Http/generator/Length", 20).toInt();
+ return config()->get("Http/generator/Length", PasswordGenerator::DefaultLength).toInt();
}
void HttpSettings::setPasswordLength(int length)
@@ -217,14 +227,21 @@ void HttpSettings::setPasswordLength(int length)
PasswordGenerator::CharClasses HttpSettings::passwordCharClasses()
{
PasswordGenerator::CharClasses classes;
- if (passwordUseLowercase())
+ if (passwordUseLowercase()) {
classes |= PasswordGenerator::LowerLetters;
- if (passwordUseUppercase())
+ }
+ if (passwordUseUppercase()) {
classes |= PasswordGenerator::UpperLetters;
- if (passwordUseNumbers())
+ }
+ if (passwordUseNumbers()) {
classes |= PasswordGenerator::Numbers;
- if (passwordUseSpecial())
+ }
+ if (passwordUseSpecial()) {
classes |= PasswordGenerator::SpecialCharacters;
+ }
+ if (passwordUseEASCII()) {
+ classes |= PasswordGenerator::EASCII;
+ }
return classes;
}
diff --git a/src/http/HttpSettings.h b/src/http/HttpSettings.h
index a4aee1a63..63c2963cf 100644
--- a/src/http/HttpSettings.h
+++ b/src/http/HttpSettings.h
@@ -58,6 +58,8 @@ public:
static void setPasswordUseUppercase(bool useUppercase);
static bool passwordUseSpecial();
static void setPasswordUseSpecial(bool useSpecial);
+ static bool passwordUseEASCII();
+ static void setPasswordUseEASCII(bool useExtended);
static bool passwordEveryGroup();
static void setPasswordEveryGroup(bool everyGroup);
static bool passwordExcludeAlike();
diff --git a/src/http/OptionDialog.cpp b/src/http/OptionDialog.cpp
index 9fb66bd6f..dd5a51f73 100644
--- a/src/http/OptionDialog.cpp
+++ b/src/http/OptionDialog.cpp
@@ -32,12 +32,20 @@ OptionDialog::OptionDialog(QWidget *parent) :
connect(m_ui->removeSharedEncryptionKeys, SIGNAL(clicked()), this, SIGNAL(removeSharedEncryptionKeys()));
connect(m_ui->removeStoredPermissions, SIGNAL(clicked()), this, SIGNAL(removeStoredPermissions()));
- m_ui->warningWidget->showMessage(tr("The following options can be dangerous!\nChange them only if you know what you are doing."), MessageWidget::Warning);
- m_ui->warningWidget->setIcon(FilePath::instance()->icon("status", "dialog-warning"));
+ m_ui->warningWidget->showMessage(tr("<b>Warning:</b> The following options can be dangerous!"), MessageWidget::Warning);
m_ui->warningWidget->setCloseButtonVisible(false);
+ m_ui->warningWidget->setAutoHideTimeout(MessageWidget::DisableAutoHide);
m_ui->tabWidget->setEnabled(m_ui->enableHttpServer->isChecked());
connect(m_ui->enableHttpServer, SIGNAL(toggled(bool)), m_ui->tabWidget, SLOT(setEnabled(bool)));
+
+ m_ui->deprecationNotice->showMessage(tr("<p>KeePassHTTP has been deprecated and will be removed in the future.<br>"
+ "Please switch to KeePassXC-Browser instead! For help with migration, visit "
+ "our <a href=\"https://keepassxc.org/docs/keepassxc-browser-migration\">"
+ "migration guide</a>.</p>"), MessageWidget::Warning);
+ m_ui->deprecationNotice->setCloseButtonVisible(false);
+ m_ui->deprecationNotice->setAutoHideTimeout(-1);
+ connect(m_ui->deprecationNotice, &MessageWidget::linkActivated, &MessageWidget::openHttpUrl);
}
OptionDialog::~OptionDialog()
diff --git a/src/http/OptionDialog.ui b/src/http/OptionDialog.ui
index abe994772..472f9f62a 100644
--- a/src/http/OptionDialog.ui
+++ b/src/http/OptionDialog.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>577</width>
- <height>404</height>
+ <width>803</width>
+ <height>433</height>
</rect>
</property>
<property name="windowTitle">
@@ -37,6 +37,9 @@
</widget>
</item>
<item>
+ <widget class="MessageWidget" name="deprecationNotice" native="true"/>
+ </item>
+ <item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
@@ -49,7 +52,7 @@
<item>
<widget class="QCheckBox" name="showNotification">
<property name="text">
- <string>Sh&amp;ow a notification when credentials are requested</string>
+ <string extracomment="Credentials mean login data requested via browser extension">Sh&amp;ow a notification when credentials are requested</string>
</property>
<property name="checked">
<bool>true</bool>
diff --git a/src/http/Server.cpp b/src/http/Server.cpp
index faac7be23..6a9cd94b1 100644
--- a/src/http/Server.cpp
+++ b/src/http/Server.cpp
@@ -170,7 +170,7 @@ void Server::handleRequest(const QByteArray& data, QHttpResponse* response)
// THIS IS A FAKE HACK!!!
// the real "error" is a misbehavior in the QJSON qobject2qvariant method
// 1. getLogins returns an empty QList<Entry> into protocolResp->m_entries
- // in toJson() function the following happend:
+ // in toJson() function the following happened:
// 2. QJson::QObjectHelper::qobject2qvariant marks m_entries as invalid !!!
// 3. QJson::Serializer write out Entries as null instead of empty list
//(4. ChromeIPass tries to access Entries.length and fails with null pointer exception)
diff --git a/src/http/Service.cpp b/src/http/Service.cpp
index 768a5774d..7f74a3ae8 100644
--- a/src/http/Service.cpp
+++ b/src/http/Service.cpp
@@ -259,13 +259,16 @@ Service::Access Service::checkAccess(const Entry *entry, const QString & host, c
KeepassHttpProtocol::Entry Service::prepareEntry(const Entry* entry)
{
- KeepassHttpProtocol::Entry res(entry->resolvePlaceholder(entry->title()), entry->resolvePlaceholder(entry->username()), entry->resolvePlaceholder(entry->password()), entry->uuid().toHex());
+ KeepassHttpProtocol::Entry res(entry->resolveMultiplePlaceholders(entry->title()),
+ entry->resolveMultiplePlaceholders(entry->username()),
+ entry->resolveMultiplePlaceholders(entry->password()),
+ entry->uuid().toHex());
if (HttpSettings::supportKphFields()) {
const EntryAttributes * attr = entry->attributes();
const auto keys = attr->keys();
for (const QString& key: keys) {
if (key.startsWith(QLatin1String("KPH: "))) {
- res.addStringField(key, attr->value(key));
+ res.addStringField(key, entry->resolveMultiplePlaceholders(attr->value(key)));
}
}
}
@@ -545,7 +548,7 @@ void Service::removeSharedEncryptionKeys()
const int count = keysToRemove.count();
QMessageBox::information(0, tr("KeePassXC: Removed keys from database"),
- tr("Successfully removed %1 encryption-%2 from KeePassX/Http Settings.").arg(count).arg(count ? "keys" : "key"),
+ tr("Successfully removed %n encryption-key(s) from KeePassX/Http Settings.", "", count),
QMessageBox::Ok);
} else {
QMessageBox::information(0, tr("KeePassXC: No keys found"),
@@ -589,7 +592,7 @@ void Service::removeStoredPermissions()
if (counter > 0) {
QMessageBox::information(0, tr("KeePassXC: Removed permissions"),
- tr("Successfully removed permissions from %1 %2.").arg(counter).arg(counter ? "entries" : "entry"),
+ tr("Successfully removed permissions from %n entries.", "", counter),
QMessageBox::Ok);
} else {
QMessageBox::information(0, tr("KeePassXC: No entry with permissions found!"),
diff --git a/src/http/qhttp/http-parser/http_parser.c b/src/http/qhttp/http-parser/http_parser.c
index 895bf0c73..ab48d0cb5 100644
--- a/src/http/qhttp/http-parser/http_parser.c
+++ b/src/http/qhttp/http-parser/http_parser.c
@@ -1815,6 +1815,9 @@ reexecute:
case 2:
parser->upgrade = 1;
+#if __GNUC__ >= 7
+ __attribute__ ((fallthrough));
+#endif
case 1:
parser->flags |= F_SKIPBODY;
@@ -2374,6 +2377,9 @@ http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
case s_req_server_with_at:
found_at = 1;
+#if __GNUC__ >= 7
+ __attribute__ ((fallthrough));
+#endif
/* FALLTROUGH */
case s_req_server:
diff --git a/src/keys/CompositeKey.cpp b/src/keys/CompositeKey.cpp
index 3b1a82a22..e5e507c77 100644
--- a/src/keys/CompositeKey.cpp
+++ b/src/keys/CompositeKey.cpp
@@ -17,18 +17,13 @@
*/
#include "CompositeKey.h"
-#include "CompositeKey_p.h"
-#include "ChallengeResponseKey.h"
-
-#include <QElapsedTimer>
#include <QFile>
#include <QtConcurrent>
+#include <format/KeePass2.h>
#include "core/Global.h"
+#include "crypto/kdf/AesKdf.h"
#include "crypto/CryptoHash.h"
-#include "crypto/SymmetricCipher.h"
-#include "keys/FileKey.h"
-#include "keys/PasswordKey.h"
CompositeKey::CompositeKey()
{
@@ -80,30 +75,31 @@ CompositeKey& CompositeKey::operator=(const CompositeKey& key)
return *this;
}
-/*
- * Read a key from a line of input.
- * If the line references a valid file
- * path, the key is loaded from file.
+/**
+ * Get raw key hash as bytes.
+ *
+ * The key hash does not contain contributions by challenge-response components for
+ * backwards compatibility with KeePassXC's pre-KDBX4 challenge-response
+ * implementation. To include challenge-response in the raw key,
+ * use \link CompositeKey::rawKey(const QByteArray*) instead.
+ *
+ * @return key hash
*/
-CompositeKey CompositeKey::readFromLine(QString line)
+QByteArray CompositeKey::rawKey() const
{
-
- CompositeKey key;
- if (QFile::exists(line)) {
- FileKey fileKey;
- fileKey.load(line);
- key.addKey(fileKey);
- }
- else {
- PasswordKey password;
- password.setPassword(line);
- key.addKey(password);
- }
- return key;
-
+ return rawKey(nullptr);
}
-QByteArray CompositeKey::rawKey() const
+/**
+ * Get raw key hash as bytes.
+ *
+ * Challenge-response key components will use the provided <tt>transformSeed</tt>
+ * as a challenge to acquire their key contribution.
+ *
+ * @param transformSeed transform seed to challenge or nullptr to exclude challenge-response components
+ * @return key hash
+ */
+QByteArray CompositeKey::rawKey(const QByteArray* transformSeed) const
{
CryptoHash cryptoHash(CryptoHash::Sha256);
@@ -111,67 +107,38 @@ QByteArray CompositeKey::rawKey() const
cryptoHash.addData(key->rawKey());
}
- return cryptoHash.result();
-}
-
-QByteArray CompositeKey::transform(const QByteArray& seed, quint64 rounds,
- bool* ok, QString* errorString) const
-{
- Q_ASSERT(seed.size() == 32);
- Q_ASSERT(rounds > 0);
-
- bool okLeft;
- QString errorStringLeft;
- bool okRight;
- QString errorStringRight;
-
- QByteArray key = rawKey();
-
- QFuture<QByteArray> future = QtConcurrent::run(transformKeyRaw, key.left(16), seed, rounds,
- &okLeft, &errorStringLeft);
- QByteArray result2 = transformKeyRaw(key.right(16), seed, rounds, &okRight, &errorStringRight);
-
- QByteArray transformed;
- transformed.append(future.result());
- transformed.append(result2);
-
- *ok = (okLeft && okRight);
-
- if (!okLeft) {
- *errorString = errorStringLeft;
- return QByteArray();
+ if (transformSeed) {
+ QByteArray challengeResult;
+ challenge(*transformSeed, challengeResult);
+ cryptoHash.addData(challengeResult);
}
- if (!okRight) {
- *errorString = errorStringRight;
- return QByteArray();
- }
-
- return CryptoHash::hash(transformed, CryptoHash::Sha256);
+ return cryptoHash.result();
}
-QByteArray CompositeKey::transformKeyRaw(const QByteArray& key, const QByteArray& seed,
- quint64 rounds, bool* ok, QString* errorString)
+/**
+ * Transform this composite key.
+ *
+ * If using AES-KDF as transform function, the transformed key will not include
+ * any challenge-response components. Only static key components will be hashed
+ * for backwards-compatibility with KeePassXC's KDBX3 implementation, which added
+ * challenge response key components after key transformation.
+ * KDBX4+ KDFs transform the whole key including challenge-response components.
+ *
+ * @param kdf key derivation function
+ * @param result transformed key hash
+ * @return true on success
+ */
+bool CompositeKey::transform(const Kdf& kdf, QByteArray& result) const
{
- QByteArray iv(16, 0);
- SymmetricCipher cipher(SymmetricCipher::Aes256, SymmetricCipher::Ecb,
- SymmetricCipher::Encrypt);
- if (!cipher.init(seed, iv)) {
- *ok = false;
- *errorString = cipher.errorString();
- return QByteArray();
+ if (kdf.uuid() == KeePass2::KDF_AES_KDBX3) {
+ // legacy KDBX3 AES-KDF, challenge response is added later to the hash
+ return kdf.transform(rawKey(), result);
}
- QByteArray result = key;
-
- if (!cipher.processInPlace(result, rounds)) {
- *ok = false;
- *errorString = cipher.errorString();
- return QByteArray();
- }
-
- *ok = true;
- return result;
+ QByteArray seed = kdf.seed();
+ Q_ASSERT(!seed.isEmpty());
+ return kdf.transform(rawKey(&seed), result);
}
bool CompositeKey::challenge(const QByteArray& seed, QByteArray& result) const
@@ -188,6 +155,7 @@ bool CompositeKey::challenge(const QByteArray& seed, QByteArray& result) const
for (const auto key : m_challengeResponseKeys) {
// if the device isn't present or fails, return an error
if (!key->challenge(seed)) {
+ qWarning("Failed to issue challenge");
return false;
}
cryptoHash.addData(key->rawKey());
@@ -206,53 +174,3 @@ void CompositeKey::addChallengeResponseKey(QSharedPointer<ChallengeResponseKey>
{
m_challengeResponseKeys.append(key);
}
-
-
-int CompositeKey::transformKeyBenchmark(int msec)
-{
- TransformKeyBenchmarkThread thread1(msec);
- TransformKeyBenchmarkThread thread2(msec);
-
- thread1.start();
- thread2.start();
-
- thread1.wait();
- thread2.wait();
-
- return qMin(thread1.rounds(), thread2.rounds());
-}
-
-
-TransformKeyBenchmarkThread::TransformKeyBenchmarkThread(int msec)
- : m_msec(msec)
- , m_rounds(0)
-{
- Q_ASSERT(msec > 0);
-}
-
-int TransformKeyBenchmarkThread::rounds()
-{
- return m_rounds;
-}
-
-void TransformKeyBenchmarkThread::run()
-{
- QByteArray key = QByteArray(16, '\x7E');
- QByteArray seed = QByteArray(32, '\x4B');
- QByteArray iv(16, 0);
-
- SymmetricCipher cipher(SymmetricCipher::Aes256, SymmetricCipher::Ecb,
- SymmetricCipher::Encrypt);
- cipher.init(seed, iv);
-
- QElapsedTimer t;
- t.start();
-
- do {
- if (!cipher.processInPlace(key, 10000)) {
- m_rounds = -1;
- return;
- }
- m_rounds += 10000;
- } while (!t.hasExpired(m_msec));
-}
diff --git a/src/keys/CompositeKey.h b/src/keys/CompositeKey.h
index 12e2d955d..9018276c3 100644
--- a/src/keys/CompositeKey.h
+++ b/src/keys/CompositeKey.h
@@ -23,6 +23,7 @@
#include <QString>
#include <QSharedPointer>
+#include "crypto/kdf/Kdf.h"
#include "keys/Key.h"
#include "keys/ChallengeResponseKey.h"
@@ -31,27 +32,21 @@ class CompositeKey : public Key
public:
CompositeKey();
CompositeKey(const CompositeKey& key);
- ~CompositeKey();
+ ~CompositeKey() override;
void clear();
bool isEmpty() const;
- CompositeKey* clone() const;
+ CompositeKey* clone() const override;
CompositeKey& operator=(const CompositeKey& key);
- QByteArray rawKey() const;
- QByteArray transform(const QByteArray& seed, quint64 rounds,
- bool* ok, QString* errorString) const;
+ QByteArray rawKey() const override;
+ QByteArray rawKey(const QByteArray* transformSeed) const;
+ bool transform(const Kdf& kdf, QByteArray& result) const Q_REQUIRED_RESULT;
bool challenge(const QByteArray& seed, QByteArray &result) const;
void addKey(const Key& key);
void addChallengeResponseKey(QSharedPointer<ChallengeResponseKey> key);
- static int transformKeyBenchmark(int msec);
- static CompositeKey readFromLine(QString line);
-
private:
- static QByteArray transformKeyRaw(const QByteArray& key, const QByteArray& seed,
- quint64 rounds, bool* ok, QString* errorString);
-
QList<Key*> m_keys;
QList<QSharedPointer<ChallengeResponseKey>> m_challengeResponseKeys;
};
diff --git a/src/keys/FileKey.cpp b/src/keys/FileKey.cpp
index d3cdfe040..26db40d85 100644
--- a/src/keys/FileKey.cpp
+++ b/src/keys/FileKey.cpp
@@ -1,4 +1,5 @@
/*
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -18,18 +19,34 @@
#include "FileKey.h"
#include <QFile>
-#include <QXmlStreamReader>
#include "core/Tools.h"
#include "crypto/CryptoHash.h"
#include "crypto/Random.h"
-FileKey::FileKey()
-{
-}
-
+/**
+ * Read key file from device while trying to detect its file format.
+ *
+ * If no legacy key file format was detected, the SHA-256 hash of the
+ * key file will be used, allowing usage of arbitrary files as key files.
+ * In case of a detected legacy key file format, the raw byte contents
+ * will be extracted from the file.
+ *
+ * Supported legacy formats are:
+ * - KeePass 2 XML key file
+ * - Fixed 32 byte binary
+ * - Fixed 32 byte ASCII hex-encoded binary
+ *
+ * Usage of legacy formats is discouraged and support for them may be
+ * removed in a future version.
+ *
+ * @param device input device
+ * @return true if key file was loaded successfully
+ */
bool FileKey::load(QIODevice* device)
{
+ m_type = None;
+
// we may need to read the file multiple times
if (device->isSequential()) {
return false;
@@ -39,12 +56,12 @@ bool FileKey::load(QIODevice* device)
return false;
}
- // try different key file formats
-
+ // try different legacy key file formats
if (!device->reset()) {
return false;
}
if (loadXml(device)) {
+ m_type = KeePass2XML;
return true;
}
@@ -52,6 +69,7 @@ bool FileKey::load(QIODevice* device)
return false;
}
if (loadBinary(device)) {
+ m_type = FixedBinary;
return true;
}
@@ -59,19 +77,42 @@ bool FileKey::load(QIODevice* device)
return false;
}
if (loadHex(device)) {
+ m_type = FixedBinaryHex;
return true;
}
+ // if no legacy format was detected, generate SHA-256 hash of key file
if (!device->reset()) {
return false;
}
if (loadHashed(device)) {
+ m_type = Hashed;
return true;
}
return false;
}
+/**
+ * Load key file from path while trying to detect its file format.
+ *
+ * If no legacy key file format was detected, the SHA-256 hash of the
+ * key file will be used, allowing usage of arbitrary files as key files.
+ * In case of a detected legacy key file format, the raw byte contents
+ * will be extracted from the file.
+ *
+ * Supported legacy formats are:
+ * - KeePass 2 XML key file
+ * - Fixed 32 byte binary
+ * - Fixed 32 byte ASCII hex-encoded binary
+ *
+ * Usage of legacy formats is discouraged and support for them may be
+ * removed in a future version.
+ *
+ * @param fileName input file name
+ * @param errorMsg error message if loading failed
+ * @return true if key file was loaded successfully
+ */
bool FileKey::load(const QString& fileName, QString* errorMsg)
{
QFile file(fileName);
@@ -95,41 +136,42 @@ bool FileKey::load(const QString& fileName, QString* errorMsg)
return result;
}
+/**
+ * @return key data as bytes
+ */
QByteArray FileKey::rawKey() const
{
return m_key;
}
+/**
+ * @return cloned \link FileKey instance
+ */
FileKey* FileKey::clone() const
{
return new FileKey(*this);
}
-void FileKey::create(QIODevice* device)
+/**
+ * Generate a new key file from random bytes.
+ *
+ * @param device output device
+ * @param number of random bytes to generate
+ */
+void FileKey::create(QIODevice* device, int size)
{
- QXmlStreamWriter xmlWriter(device);
-
- xmlWriter.writeStartDocument("1.0");
-
- xmlWriter.writeStartElement("KeyFile");
-
- xmlWriter.writeStartElement("Meta");
-
- xmlWriter.writeTextElement("Version", "1.00");
-
- xmlWriter.writeEndElement();
-
- xmlWriter.writeStartElement("Key");
-
- QByteArray data = randomGen()->randomArray(32);
- xmlWriter.writeTextElement("Data", QString::fromLatin1(data.toBase64()));
-
- xmlWriter.writeEndElement();
-
- xmlWriter.writeEndDocument();
+ device->write(randomGen()->randomArray(size));
}
-bool FileKey::create(const QString& fileName, QString* errorMsg)
+/**
+ * Create a new key file from random bytes.
+ *
+ * @param fileName output file name
+ * @param errorMsg error message if generation failed
+ * @param number of random bytes to generate
+ * @return true on successful creation
+ */
+bool FileKey::create(const QString& fileName, QString* errorMsg, int size)
{
QFile file(fileName);
if (!file.open(QFile::WriteOnly)) {
@@ -138,8 +180,7 @@ bool FileKey::create(const QString& fileName, QString* errorMsg)
}
return false;
}
- create(&file);
-
+ create(&file, size);
file.close();
if (file.error()) {
@@ -149,11 +190,17 @@ bool FileKey::create(const QString& fileName, QString* errorMsg)
return false;
}
- else {
- return true;
- }
+
+ return true;
}
+/**
+ * Load key file in legacy KeePass 2 XML format.
+ *
+ * @param device input device
+ * @return true on success
+ * @deprecated
+ */
bool FileKey::loadXml(QIODevice* device)
{
QXmlStreamReader xmlReader(device);
@@ -162,8 +209,7 @@ bool FileKey::loadXml(QIODevice* device)
if (xmlReader.name() != "KeyFile") {
return false;
}
- }
- else {
+ } else {
return false;
}
@@ -173,8 +219,7 @@ bool FileKey::loadXml(QIODevice* device)
while (!xmlReader.error() && xmlReader.readNextStartElement()) {
if (xmlReader.name() == "Meta") {
correctMeta = loadXmlMeta(xmlReader);
- }
- else if (xmlReader.name() == "Key") {
+ } else if (xmlReader.name() == "Key") {
data = loadXmlKey(xmlReader);
}
}
@@ -183,18 +228,23 @@ bool FileKey::loadXml(QIODevice* device)
m_key = data;
return true;
}
- else {
- return false;
- }
+
+ return false;
}
+/**
+ * Load meta data from legacy KeePass 2 XML key file.
+ *
+ * @param xmlReader input XML reader
+ * @return true on success
+ * @deprecated
+ */
bool FileKey::loadXmlMeta(QXmlStreamReader& xmlReader)
{
bool correctVersion = false;
while (!xmlReader.error() && xmlReader.readNextStartElement()) {
if (xmlReader.name() == "Version") {
- // TODO: error message about incompatible key file version
if (xmlReader.readElementText() == "1.00") {
correctVersion = true;
}
@@ -204,13 +254,19 @@ bool FileKey::loadXmlMeta(QXmlStreamReader& xmlReader)
return correctVersion;
}
+/**
+ * Load base64 key data from legacy KeePass 2 XML key file.
+ *
+ * @param xmlReader input XML reader
+ * @return true on success
+ * @deprecated
+ */
QByteArray FileKey::loadXmlKey(QXmlStreamReader& xmlReader)
{
QByteArray data;
while (!xmlReader.error() && xmlReader.readNextStartElement()) {
if (xmlReader.name() == "Data") {
- // TODO: do we need to enforce a specific data.size()?
QByteArray rawData = xmlReader.readElementText().toLatin1();
if (Tools::isBase64(rawData)) {
data = QByteArray::fromBase64(rawData);
@@ -221,6 +277,13 @@ QByteArray FileKey::loadXmlKey(QXmlStreamReader& xmlReader)
return data;
}
+/**
+ * Load fixed 32-bit binary key file.
+ *
+ * @param device input device
+ * @return true on success
+ * @deprecated
+ */
bool FileKey::loadBinary(QIODevice* device)
{
if (device->size() != 32) {
@@ -230,13 +293,19 @@ bool FileKey::loadBinary(QIODevice* device)
QByteArray data;
if (!Tools::readAllFromDevice(device, data) || data.size() != 32) {
return false;
- }
- else {
+ } else {
m_key = data;
return true;
}
}
+/**
+ * Load hex-encoded representation of fixed 32-bit binary key file.
+ *
+ * @param device input device
+ * @return true on success
+ * @deprecated
+ */
bool FileKey::loadHex(QIODevice* device)
{
if (device->size() != 64) {
@@ -262,6 +331,12 @@ bool FileKey::loadHex(QIODevice* device)
return true;
}
+/**
+ * Generate SHA-256 hash of arbitrary text or binary key file.
+ *
+ * @param device input device
+ * @return true on success
+ */
bool FileKey::loadHashed(QIODevice* device)
{
CryptoHash cryptoHash(CryptoHash::Sha256);
@@ -272,9 +347,18 @@ bool FileKey::loadHashed(QIODevice* device)
return false;
}
cryptoHash.addData(buffer);
- } while (!buffer.isEmpty());
+ }
+ while (!buffer.isEmpty());
m_key = cryptoHash.result();
return true;
}
+
+/**
+ * @return type of loaded key file
+ */
+FileKey::Type FileKey::type() const
+{
+ return m_type;
+}
diff --git a/src/keys/FileKey.h b/src/keys/FileKey.h
index 7a9b1caf0..2aa48909b 100644
--- a/src/keys/FileKey.h
+++ b/src/keys/FileKey.h
@@ -1,4 +1,5 @@
/*
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -24,16 +25,24 @@
class QIODevice;
-class FileKey : public Key
+class FileKey: public Key
{
public:
- FileKey();
+ enum Type {
+ None,
+ Hashed,
+ KeePass2XML,
+ FixedBinary,
+ FixedBinaryHex
+ };
+
bool load(QIODevice* device);
bool load(const QString& fileName, QString* errorMsg = nullptr);
- QByteArray rawKey() const;
- FileKey* clone() const;
- static void create(QIODevice* device);
- static bool create(const QString& fileName, QString* errorMsg = nullptr);
+ QByteArray rawKey() const override;
+ FileKey* clone() const override;
+ Type type() const;
+ static void create(QIODevice* device, int size = 128);
+ static bool create(const QString& fileName, QString* errorMsg = nullptr, int size = 128);
private:
bool loadXml(QIODevice* device);
@@ -44,6 +53,7 @@ private:
bool loadHashed(QIODevice* device);
QByteArray m_key;
+ Type m_type = None;
};
#endif // KEEPASSX_FILEKEY_H
diff --git a/src/main.cpp b/src/main.cpp
index 2018d29ea..da71739c4 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -27,7 +27,6 @@
#include "crypto/Crypto.h"
#include "gui/Application.h"
#include "gui/MainWindow.h"
-#include "gui/csvImport/CsvImportWizard.h"
#include "gui/MessageBox.h"
#if defined(WITH_ASAN) && defined(WITH_LSAN)
@@ -37,9 +36,9 @@
#ifdef QT_STATIC
#include <QtPlugin>
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN)
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
-#elif Q_OS_LINUX
+#elif defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
#endif
#endif
@@ -57,22 +56,6 @@ int main(int argc, char** argv)
// don't set organizationName as that changes the return value of
// QStandardPaths::writableLocation(QDesktopServices::DataLocation)
- if (app.isAlreadyRunning()) {
- qWarning() << QCoreApplication::translate("Main", "Another instance of KeePassXC is already running.").toUtf8().constData();
- return 0;
- }
-
- QApplication::setQuitOnLastWindowClosed(false);
-
- if (!Crypto::init()) {
- QString error = QCoreApplication::translate("Main",
- "Fatal error while testing the cryptographic functions.");
- error.append("\n");
- error.append(Crypto::errorString());
- MessageBox::critical(nullptr, QCoreApplication::translate("Main", "KeePassXC - Error"), error);
- return 1;
- }
-
QCommandLineParser parser;
parser.setApplicationDescription(QCoreApplication::translate("main", "KeePassXC - cross-platform password manager"));
parser.addPositionalArgument("filename", QCoreApplication::translate("main", "filenames of the password databases to open (*.kdbx)"), "[filename(s)]");
@@ -85,21 +68,46 @@ int main(int argc, char** argv)
"keyfile");
QCommandLineOption pwstdinOption("pw-stdin",
QCoreApplication::translate("main", "read password of the database from stdin"));
+ // This is needed under Windows where clients send --parent-window parameter with Native Messaging connect method
+ QCommandLineOption parentWindowOption(QStringList() << "pw"
+ << "parent-window",
+ QCoreApplication::translate("main", "Parent window handle"),
+ "handle");
parser.addHelpOption();
parser.addVersionOption();
parser.addOption(configOption);
parser.addOption(keyfileOption);
parser.addOption(pwstdinOption);
+ parser.addOption(parentWindowOption);
parser.process(app);
- const QStringList args = parser.positionalArguments();
+ const QStringList fileNames = parser.positionalArguments();
+
+ if (app.isAlreadyRunning()) {
+ if (!fileNames.isEmpty()) {
+ app.sendFileNamesToRunningInstance(fileNames);
+ }
+ qWarning() << QCoreApplication::translate("Main", "Another instance of KeePassXC is already running.").toUtf8().constData();
+ return 0;
+ }
+
+ QApplication::setQuitOnLastWindowClosed(false);
+
+ if (!Crypto::init()) {
+ QString error = QCoreApplication::translate("Main",
+ "Fatal error while testing the cryptographic functions.");
+ error.append("\n");
+ error.append(Crypto::errorString());
+ MessageBox::critical(nullptr, QCoreApplication::translate("Main", "KeePassXC - Error"), error);
+ return 1;
+ }
if (parser.isSet(configOption)) {
Config::createConfigFromFile(parser.value(configOption));
}
- Translator::installTranslator();
+ Translator::installTranslators();
#ifdef Q_OS_MAC
// Don't show menu icons on OSX
@@ -109,16 +117,11 @@ int main(int argc, char** argv)
MainWindow mainWindow;
app.setMainWindow(&mainWindow);
- QObject::connect(&app, &Application::anotherInstanceStarted,
- [&]() {
- mainWindow.ensurePolished();
- mainWindow.setWindowState(mainWindow.windowState() & ~Qt::WindowMinimized);
- mainWindow.show();
- mainWindow.raise();
- mainWindow.activateWindow();
- });
+ QObject::connect(&app, SIGNAL(anotherInstanceStarted()), &mainWindow, SLOT(bringToFront()));
+ QObject::connect(&app, SIGNAL(applicationActivated()), &mainWindow, SLOT(bringToFront()));
QObject::connect(&app, SIGNAL(openFile(QString)), &mainWindow, SLOT(openDatabase(QString)));
-
+ QObject::connect(&app, SIGNAL(quitSignalReceived()), &mainWindow, SLOT(appExit()), Qt::DirectConnection);
+
// start minimized if configured
bool minimizeOnStartup = config()->get("GUI/MinimizeOnStartup").toBool();
bool minimizeToTray = config()->get("GUI/MinimizeToTray").toBool();
@@ -128,25 +131,24 @@ int main(int argc, char** argv)
if (!(minimizeOnStartup && minimizeToTray)) {
mainWindow.show();
}
-
+
if (config()->get("OpenPreviousDatabasesOnStartup").toBool()) {
- const QStringList filenames = config()->get("LastOpenedDatabases").toStringList();
- for (const QString& filename : filenames) {
+ const QStringList fileNames = config()->get("LastOpenedDatabases").toStringList();
+ for (const QString& filename: fileNames) {
if (!filename.isEmpty() && QFile::exists(filename)) {
- mainWindow.openDatabase(filename, QString(), QString());
+ mainWindow.openDatabase(filename);
}
}
}
- for (int ii=0; ii < args.length(); ii++) {
- QString filename = args[ii];
- if (!filename.isEmpty() && QFile::exists(filename)) {
+ const bool pwstdin = parser.isSet(pwstdinOption);
+ for (const QString& filename: fileNames) {
+ if (!filename.isEmpty() && QFile::exists(filename) && !filename.endsWith(".json", Qt::CaseInsensitive)) {
QString password;
- if (parser.isSet(pwstdinOption)) {
+ if (pwstdin) {
static QTextStream in(stdin, QIODevice::ReadOnly);
password = in.readLine();
}
- mainWindow.openDatabase(filename, password, parser.value(keyfileOption));
}
}
diff --git a/src/proxy/CMakeLists.txt b/src/proxy/CMakeLists.txt
new file mode 100755
index 000000000..f4c197e39
--- /dev/null
+++ b/src/proxy/CMakeLists.txt
@@ -0,0 +1,58 @@
+# Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if(WITH_XC_BROWSER)
+ include_directories(${BROWSER_SOURCE_DIR})
+
+ set(proxy_SOURCES
+ keepassxc-proxy.cpp
+ ${BROWSER_SOURCE_DIR}/NativeMessagingBase.cpp
+ NativeMessagingHost.cpp)
+
+ add_library(proxy STATIC ${proxy_SOURCES})
+ target_link_libraries(proxy Qt5::Core Qt5::Network)
+ add_executable(keepassxc-proxy keepassxc-proxy.cpp)
+ target_link_libraries(keepassxc-proxy proxy)
+
+ install(TARGETS keepassxc-proxy
+ BUNDLE DESTINATION . COMPONENT Runtime
+ RUNTIME DESTINATION ${PROXY_INSTALL_DIR} COMPONENT Runtime)
+
+ if(APPLE AND WITH_APP_BUNDLE)
+ set(PROXY_BINARY_DIR "${CMAKE_BINARY_DIR}/src/proxy/keepassxc-proxy")
+ set(PROXY_APP_DIR "KeePassXC.app/Contents/MacOS/keepassxc-proxy")
+ add_custom_command(TARGET keepassxc-proxy
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy ${PROXY_BINARY_DIR} ${PROXY_APP_DIR}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
+ COMMENT "Copying keepassxc-proxy inside the application")
+
+ add_custom_command(TARGET keepassxc-proxy
+ POST_BUILD
+ COMMAND ${CMAKE_INSTALL_NAME_TOOL}
+ -change ${Qt5_PREFIX}/lib/QtCore.framework/Versions/5/QtCore
+ "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore"
+ -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore
+ "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore"
+ -change ${Qt5_PREFIX}/lib/QtNetwork.framework/Versions/5/QtNetwork
+ "@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork"
+ -change /usr/local/opt/qt/lib/QtNetwork.framework/Versions/5/QtNetwork
+ "@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork"
+ ${PROXY_APP_DIR}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
+ COMMENT "Changing linking of keepassxc-proxy")
+ endif()
+endif()
diff --git a/src/proxy/NativeMessagingHost.cpp b/src/proxy/NativeMessagingHost.cpp
new file mode 100755
index 000000000..2add63814
--- /dev/null
+++ b/src/proxy/NativeMessagingHost.cpp
@@ -0,0 +1,95 @@
+/*
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <QCoreApplication>
+#include "NativeMessagingHost.h"
+
+NativeMessagingHost::NativeMessagingHost() : NativeMessagingBase()
+{
+ m_localSocket = new QLocalSocket();
+ m_localSocket->connectToServer(getLocalServerPath());
+#ifdef Q_OS_WIN
+ m_running.store(true);
+ m_future = QtConcurrent::run(this, static_cast<void(NativeMessagingHost::*)()>(&NativeMessagingHost::readNativeMessages));
+#endif
+ connect(m_localSocket, SIGNAL(readyRead()), this, SLOT(newLocalMessage()));
+ connect(m_localSocket, SIGNAL(disconnected()), this, SLOT(deleteSocket()));
+ connect(m_localSocket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)), this, SLOT(socketStateChanged(QLocalSocket::LocalSocketState)));
+}
+
+NativeMessagingHost::~NativeMessagingHost()
+{
+#ifdef Q_OS_WIN
+ m_future.waitForFinished();
+#endif
+}
+
+void NativeMessagingHost::readLength()
+{
+ quint32 length = 0;
+ std::cin.read(reinterpret_cast<char*>(&length), 4);
+ if (!std::cin.eof() && length > 0) {
+ readStdIn(length);
+ } else {
+ QCoreApplication::quit();
+ }
+}
+
+void NativeMessagingHost::readStdIn(const quint32 length)
+{
+ if (length > 0) {
+ QByteArray arr;
+ arr.reserve(length);
+
+ for (quint32 i = 0; i < length; ++i) {
+ arr.append(getchar());
+ }
+
+ if (arr.length() > 0 && m_localSocket && m_localSocket->state() == QLocalSocket::ConnectedState) {
+ m_localSocket->write(arr.constData(), arr.length());
+ m_localSocket->flush();
+ }
+ }
+}
+
+void NativeMessagingHost::newLocalMessage()
+{
+ if (!m_localSocket || m_localSocket->bytesAvailable() <= 0) {
+ return;
+ }
+
+ QByteArray arr = m_localSocket->readAll();
+ if (!arr.isEmpty()) {
+ sendReply(arr);
+ }
+}
+
+void NativeMessagingHost::deleteSocket()
+{
+ if (m_notifier) {
+ m_notifier->setEnabled(false);
+ }
+ m_localSocket->deleteLater();
+ QCoreApplication::quit();
+}
+
+void NativeMessagingHost::socketStateChanged(QLocalSocket::LocalSocketState socketState)
+{
+ if (socketState == QLocalSocket::UnconnectedState || socketState == QLocalSocket::ClosingState) {
+ m_running.testAndSetOrdered(true, false);
+ }
+}
diff --git a/src/proxy/NativeMessagingHost.h b/src/proxy/NativeMessagingHost.h
new file mode 100755
index 000000000..41f3ed753
--- /dev/null
+++ b/src/proxy/NativeMessagingHost.h
@@ -0,0 +1,43 @@
+/*
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef NATIVEMESSAGINGHOST_H
+#define NATIVEMESSAGINGHOST_H
+
+#include "NativeMessagingBase.h"
+
+class NativeMessagingHost : public NativeMessagingBase
+{
+ Q_OBJECT
+public:
+ NativeMessagingHost();
+ ~NativeMessagingHost();
+
+public slots:
+ void newLocalMessage();
+ void deleteSocket();
+ void socketStateChanged(QLocalSocket::LocalSocketState socketState);
+
+private:
+ void readLength();
+ void readStdIn(const quint32 length);
+
+private:
+ QLocalSocket* m_localSocket;
+};
+
+#endif // NATIVEMESSAGINGHOST_H
diff --git a/src/proxy/keepassxc-proxy.cpp b/src/proxy/keepassxc-proxy.cpp
new file mode 100644
index 000000000..9509c1eab
--- /dev/null
+++ b/src/proxy/keepassxc-proxy.cpp
@@ -0,0 +1,66 @@
+/*
+* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <QCoreApplication>
+#include <iostream>
+#include "NativeMessagingHost.h"
+
+#ifndef Q_OS_WIN
+#include <initializer_list>
+#include <signal.h>
+#include <unistd.h>
+
+// (C) Gist: https://gist.github.com/azadkuh/a2ac6869661ebd3f8588
+void ignoreUnixSignals(std::initializer_list<int> ignoreSignals) {
+ for (int sig : ignoreSignals) {
+ signal(sig, SIG_IGN);
+ }
+}
+
+void catchUnixSignals(std::initializer_list<int> quitSignals) {
+ auto handler = [](int sig) -> void {
+ std::cerr << sig;
+ QCoreApplication::quit();
+ };
+
+ sigset_t blocking_mask;
+ sigemptyset(&blocking_mask);
+ for (auto sig : quitSignals) {
+ sigaddset(&blocking_mask, sig);
+ }
+
+ struct sigaction sa;
+ sa.sa_handler = handler;
+ sa.sa_mask = blocking_mask;
+ sa.sa_flags = 0;
+
+ for (auto sig : quitSignals) {
+ sigaction(sig, &sa, nullptr);
+ }
+}
+#endif
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication a(argc, argv);
+#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX)
+ catchUnixSignals({SIGQUIT, SIGINT, SIGTERM, SIGHUP});
+#endif
+ NativeMessagingHost host;
+ return a.exec();
+}
diff --git a/src/sshagent/ASN1Key.cpp b/src/sshagent/ASN1Key.cpp
new file mode 100644
index 000000000..c46b8fa0b
--- /dev/null
+++ b/src/sshagent/ASN1Key.cpp
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2018 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ASN1Key.h"
+#include <gcrypt.h>
+
+namespace {
+ constexpr quint8 TAG_INT = 0x02;
+ constexpr quint8 TAG_SEQUENCE = 0x30;
+ constexpr quint8 KEY_ZERO = 0x0;
+
+ bool nextTag(BinaryStream& stream, quint8& tag, quint32& len)
+ {
+ stream.read(tag);
+
+ quint8 lenByte;
+ stream.read(lenByte);
+
+ if (lenByte & 0x80) {
+ quint32 bytes = lenByte & ~0x80;
+ if (bytes == 1) {
+ stream.read(lenByte);
+ len = lenByte;
+ } else if (bytes == 2) {
+ quint16 lenShort;
+ stream.read(lenShort);
+ len = lenShort;
+ } else if (bytes == 4) {
+ stream.read(len);
+ } else {
+ return false;
+ }
+ } else {
+ len = lenByte;
+ }
+
+ return true;
+ }
+
+ bool parseHeader(BinaryStream& stream, quint8 wantedType)
+ {
+ quint8 tag;
+ quint32 len;
+
+ nextTag(stream, tag, len);
+
+ if (tag != TAG_SEQUENCE) {
+ return false;
+ }
+
+ nextTag(stream, tag, len);
+
+ if (tag != TAG_INT || len != 1) {
+ return false;
+ }
+
+ quint8 keyType;
+ stream.read(keyType);
+
+ return (keyType == wantedType);
+ }
+
+ bool readInt(BinaryStream& stream, QByteArray& target)
+ {
+ quint8 tag;
+ quint32 len;
+
+ nextTag(stream, tag, len);
+
+ if (tag != TAG_INT) {
+ return false;
+ }
+
+ target.resize(len);
+ stream.read(target);
+ return true;
+ }
+
+ QByteArray calculateIqmp(QByteArray& bap, QByteArray& baq)
+ {
+ gcry_mpi_t u, p, q;
+ QByteArray iqmp_hex;
+
+ u = gcry_mpi_snew(bap.length() * 8);
+ gcry_mpi_scan(&p, GCRYMPI_FMT_HEX, bap.toHex().data(), 0, nullptr);
+ gcry_mpi_scan(&q, GCRYMPI_FMT_HEX, baq.toHex().data(), 0, nullptr);
+
+ mpi_invm(u, q, p);
+
+ iqmp_hex.resize((bap.length() + 1) * 2);
+ gcry_mpi_print(GCRYMPI_FMT_HEX, reinterpret_cast<unsigned char*>(iqmp_hex.data()), iqmp_hex.length(), nullptr, u);
+
+ gcry_mpi_release(u);
+ gcry_mpi_release(p);
+ gcry_mpi_release(q);
+
+ return QByteArray::fromHex(iqmp_hex);
+ }
+}
+
+bool ASN1Key::parseDSA(QByteArray& ba, OpenSSHKey& key)
+{
+ BinaryStream stream(&ba);
+
+ if (!parseHeader(stream, KEY_ZERO)) {
+ return false;
+ }
+
+ QByteArray p,q,g,y,x;
+ readInt(stream, p);
+ readInt(stream, q);
+ readInt(stream, g);
+ readInt(stream, y);
+ readInt(stream, x);
+
+ QList<QByteArray> publicData;
+ publicData.append(p);
+ publicData.append(q);
+ publicData.append(g);
+ publicData.append(y);
+
+ QList<QByteArray> privateData;
+ privateData.append(p);
+ privateData.append(q);
+ privateData.append(g);
+ privateData.append(y);
+ privateData.append(x);
+
+ key.setType("ssh-dss");
+ key.setPublicData(publicData);
+ key.setPrivateData(privateData);
+ key.setComment("");
+ return true;
+}
+
+bool ASN1Key::parseRSA(QByteArray& ba, OpenSSHKey& key)
+{
+ BinaryStream stream(&ba);
+
+ if (!parseHeader(stream, KEY_ZERO)) {
+ return false;
+ }
+
+ QByteArray n,e,d,p,q,dp,dq,qinv;
+ readInt(stream, n);
+ readInt(stream, e);
+ readInt(stream, d);
+ readInt(stream, p);
+ readInt(stream, q);
+ readInt(stream, dp);
+ readInt(stream, dq);
+ readInt(stream, qinv);
+
+ QList<QByteArray> publicData;
+ publicData.append(e);
+ publicData.append(n);
+
+ QList<QByteArray> privateData;
+ privateData.append(n);
+ privateData.append(e);
+ privateData.append(d);
+ privateData.append(calculateIqmp(p, q));
+ privateData.append(p);
+ privateData.append(q);
+
+ key.setType("ssh-rsa");
+ key.setPublicData(publicData);
+ key.setPrivateData(privateData);
+ key.setComment("");
+ return true;
+}
diff --git a/src/sshagent/ASN1Key.h b/src/sshagent/ASN1Key.h
new file mode 100644
index 000000000..59f8d4e81
--- /dev/null
+++ b/src/sshagent/ASN1Key.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ASN1KEY_H
+#define ASN1KEY_H
+
+#include "OpenSSHKey.h"
+#include <QtCore>
+
+namespace ASN1Key
+{
+ bool parseDSA(QByteArray& ba, OpenSSHKey& key);
+ bool parseRSA(QByteArray& ba, OpenSSHKey& key);
+}
+
+#endif // ASN1KEY_H
diff --git a/src/sshagent/AgentSettingsPage.cpp b/src/sshagent/AgentSettingsPage.cpp
new file mode 100644
index 000000000..70fa04bde
--- /dev/null
+++ b/src/sshagent/AgentSettingsPage.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AgentSettingsPage.h"
+#include "AgentSettingsWidget.h"
+#include "core/FilePath.h"
+
+AgentSettingsPage::AgentSettingsPage(DatabaseTabWidget* tabWidget)
+{
+ Q_UNUSED(tabWidget);
+}
+
+AgentSettingsPage::~AgentSettingsPage()
+{
+
+}
+
+QString AgentSettingsPage::name()
+{
+ return QObject::tr("SSH Agent");
+}
+
+QIcon AgentSettingsPage::icon()
+{
+ return FilePath::instance()->icon("apps", "utilities-terminal");
+}
+
+QWidget* AgentSettingsPage::createWidget()
+{
+ return new AgentSettingsWidget();
+}
+
+void AgentSettingsPage::loadSettings(QWidget* widget)
+{
+ AgentSettingsWidget* agentWidget = reinterpret_cast<AgentSettingsWidget*>(widget);
+ agentWidget->loadSettings();
+}
+
+void AgentSettingsPage::saveSettings(QWidget* widget)
+{
+ AgentSettingsWidget* agentWidget = reinterpret_cast<AgentSettingsWidget*>(widget);
+ agentWidget->saveSettings();
+}
diff --git a/src/sshagent/AgentSettingsPage.h b/src/sshagent/AgentSettingsPage.h
new file mode 100644
index 000000000..f9d1be3f9
--- /dev/null
+++ b/src/sshagent/AgentSettingsPage.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AGENTSETTINGSPAGE_H
+#define AGENTSETTINGSPAGE_H
+
+#include "gui/SettingsWidget.h"
+#include "gui/DatabaseTabWidget.h"
+
+class AgentSettingsPage : public ISettingsPage
+{
+public:
+ AgentSettingsPage(DatabaseTabWidget* tabWidget);
+ ~AgentSettingsPage() override;
+
+ QString name() override;
+ QIcon icon() override;
+ QWidget* createWidget() override;
+ void loadSettings(QWidget* widget) override;
+ void saveSettings(QWidget* widget) override;
+
+private:
+};
+
+#endif // AGENTSETTINGSPAGE_H
diff --git a/src/sshagent/AgentSettingsWidget.cpp b/src/sshagent/AgentSettingsWidget.cpp
new file mode 100644
index 000000000..81b6808fe
--- /dev/null
+++ b/src/sshagent/AgentSettingsWidget.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AgentSettingsWidget.h"
+#include "ui_AgentSettingsWidget.h"
+#include "core/Config.h"
+
+AgentSettingsWidget::AgentSettingsWidget(QWidget* parent)
+ : QWidget(parent)
+ , m_ui(new Ui::AgentSettingsWidget())
+{
+ m_ui->setupUi(this);
+}
+
+AgentSettingsWidget::~AgentSettingsWidget()
+{
+}
+
+void AgentSettingsWidget::loadSettings()
+{
+ m_ui->enableSSHAgentCheckBox->setChecked(config()->get("SSHAgent", false).toBool());
+}
+
+void AgentSettingsWidget::saveSettings()
+{
+ config()->set("SSHAgent", m_ui->enableSSHAgentCheckBox->isChecked());
+}
diff --git a/src/sshagent/AgentSettingsWidget.h b/src/sshagent/AgentSettingsWidget.h
new file mode 100644
index 000000000..90d1b1973
--- /dev/null
+++ b/src/sshagent/AgentSettingsWidget.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AGENTSETTINGSWIDGET_H
+#define AGENTSETTINGSWIDGET_H
+
+#include <QWidget>
+#include <QScopedPointer>
+
+namespace Ui {
+ class AgentSettingsWidget;
+}
+
+class AgentSettingsWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit AgentSettingsWidget(QWidget* parent = nullptr);
+ ~AgentSettingsWidget();
+
+public slots:
+ void loadSettings();
+ void saveSettings();
+
+private:
+ QScopedPointer<Ui::AgentSettingsWidget> m_ui;
+};
+
+#endif // AGENTSETTINGSWIDGET_H
diff --git a/src/sshagent/AgentSettingsWidget.ui b/src/sshagent/AgentSettingsWidget.ui
new file mode 100644
index 000000000..c00c62f39
--- /dev/null
+++ b/src/sshagent/AgentSettingsWidget.ui
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AgentSettingsWidget</class>
+ <widget class="QWidget" name="AgentSettingsWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QCheckBox" name="enableSSHAgentCheckBox">
+ <property name="text">
+ <string>Enable SSH Agent (requires restart)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/sshagent/BinaryStream.cpp b/src/sshagent/BinaryStream.cpp
new file mode 100644
index 000000000..b9ed236fd
--- /dev/null
+++ b/src/sshagent/BinaryStream.cpp
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "BinaryStream.h"
+#include <QtEndian>
+
+BinaryStream::BinaryStream(QObject* parent)
+ : QObject(parent)
+ , m_timeout(-1)
+{
+
+}
+
+BinaryStream::BinaryStream(QIODevice* device)
+ : QObject(device)
+ , m_timeout(-1)
+ , m_device(device)
+{
+
+}
+
+BinaryStream::BinaryStream(QByteArray* ba, QObject* parent)
+ : QObject(parent)
+ , m_timeout(-1)
+{
+ setData(ba);
+}
+
+BinaryStream::~BinaryStream()
+{
+}
+
+const QString BinaryStream::errorString() const
+{
+ return m_error;
+}
+
+QIODevice* BinaryStream::device() const
+{
+ return m_device;
+}
+
+void BinaryStream::setDevice(QIODevice* device)
+{
+ m_device = device;
+}
+
+void BinaryStream::setData(QByteArray* ba)
+{
+ m_buffer.reset(new QBuffer(ba));
+ m_buffer->open(QIODevice::ReadWrite);
+
+ m_device = m_buffer.data();
+}
+
+void BinaryStream::setTimeout(int timeout)
+{
+ m_timeout = timeout;
+}
+
+bool BinaryStream::read(char* ptr, qint64 size)
+{
+ qint64 pos = 0;
+
+ while (pos < size) {
+ if (m_device->bytesAvailable() == 0) {
+ if (!m_device->waitForReadyRead(m_timeout)) {
+ m_error = m_device->errorString();
+ return false;
+ }
+ }
+
+ qint64 nread = m_device->read(ptr + pos, size - pos);
+
+ if (nread == -1) {
+ m_error = m_device->errorString();
+ return false;
+ }
+
+ pos += nread;
+ }
+
+ return true;
+}
+
+bool BinaryStream::read(QByteArray& ba)
+{
+ return read(ba.data(), ba.length());
+}
+
+bool BinaryStream::read(quint32& i)
+{
+ if (read(reinterpret_cast<char *>(&i), sizeof(i))) {
+ i = qFromBigEndian<quint32>(i);
+ return true;
+ }
+
+ return false;
+}
+
+bool BinaryStream::read(quint16& i)
+{
+ if (read(reinterpret_cast<char *>(&i), sizeof(i))) {
+ i = qFromBigEndian<quint16>(i);
+ return true;
+ }
+
+ return false;
+}
+
+bool BinaryStream::read(quint8& i)
+{
+ return read(reinterpret_cast<char *>(&i), sizeof(i));
+}
+
+bool BinaryStream::readString(QByteArray& ba)
+{
+ quint32 length;
+
+ if (!read(length)) {
+ return false;
+ }
+
+ ba.resize(length);
+
+ if (!read(ba.data(), ba.length())) {
+ return false;
+ }
+
+ return true;
+}
+
+bool BinaryStream::readString(QString& str)
+{
+ QByteArray ba;
+
+ if (!readString(ba)) {
+ return false;
+ }
+
+ str = str.fromLatin1(ba);
+ return true;
+}
+
+
+bool BinaryStream::write(const char* ptr, qint64 size)
+{
+ if (m_device->write(ptr, size) < 0) {
+ m_error = m_device->errorString();
+ return false;
+ }
+
+ return true;
+}
+
+bool BinaryStream::flush()
+{
+ if (!m_device->waitForBytesWritten(m_timeout)) {
+ m_error = m_device->errorString();
+ return false;
+ }
+
+ return true;
+}
+
+bool BinaryStream::write(const QByteArray& ba)
+{
+ return write(ba.data(), ba.length());
+}
+
+bool BinaryStream::write(quint32 i)
+{
+ i = qToBigEndian<quint32>(i);
+ return write(reinterpret_cast<char *>(&i), sizeof(i));
+}
+
+bool BinaryStream::write(quint16 i)
+{
+ i = qToBigEndian<quint16>(i);
+ return write(reinterpret_cast<char *>(&i), sizeof(i));
+}
+
+bool BinaryStream::write(quint8 i)
+{
+ return write(reinterpret_cast<char *>(&i), sizeof(i));
+}
+
+bool BinaryStream::writeString(const QByteArray& ba)
+{
+ if (!write(static_cast<quint32>(ba.length()))) {
+ return false;
+ }
+
+ if (!write(ba)) {
+ return false;
+ }
+
+ return true;
+}
+
+bool BinaryStream::writeString(const QString& s)
+{
+ return writeString(s.toLatin1());
+}
diff --git a/src/sshagent/BinaryStream.h b/src/sshagent/BinaryStream.h
new file mode 100644
index 000000000..c61010180
--- /dev/null
+++ b/src/sshagent/BinaryStream.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef BINARYSTREAM_H
+#define BINARYSTREAM_H
+
+#include <QObject>
+#include <QIODevice>
+#include <QBuffer>
+
+class BinaryStream : QObject
+{
+ Q_OBJECT
+public:
+ BinaryStream(QObject* parent = nullptr);
+ BinaryStream(QIODevice* device);
+ BinaryStream(QByteArray* ba, QObject* parent = nullptr);
+ ~BinaryStream();
+
+ const QString errorString() const;
+ QIODevice* device() const;
+ void setDevice(QIODevice* device);
+ void setData(QByteArray* ba);
+ void setTimeout(int timeout);
+
+ bool read(QByteArray& ba);
+ bool read(quint32& i);
+ bool read(quint16& i);
+ bool read(quint8& i);
+ bool readString(QByteArray& ba);
+ bool readString(QString& s);
+
+ bool write(const QByteArray& ba);
+ bool write(quint32 i);
+ bool write(quint16 i);
+ bool write(quint8 i);
+ bool writeString(const QByteArray& ba);
+ bool writeString(const QString& s);
+
+ bool flush();
+
+protected:
+ bool read(char* ptr, qint64 len);
+ bool write(const char* ptr, qint64 len);
+
+private:
+ int m_timeout;
+ QString m_error;
+ QIODevice* m_device;
+ QScopedPointer<QBuffer> m_buffer;
+};
+
+#endif // BINARYSTREAM_H
diff --git a/src/sshagent/CMakeLists.txt b/src/sshagent/CMakeLists.txt
new file mode 100644
index 000000000..a612ff076
--- /dev/null
+++ b/src/sshagent/CMakeLists.txt
@@ -0,0 +1,18 @@
+if(WITH_XC_SSHAGENT)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+
+ set(sshagent_SOURCES
+ bcrypt_pbkdf.cpp
+ blowfish.c
+ AgentSettingsPage.cpp
+ AgentSettingsWidget.cpp
+ BinaryStream.cpp
+ KeeAgentSettings.cpp
+ OpenSSHKey.cpp
+ ASN1Key.cpp
+ SSHAgent.cpp
+ )
+
+ add_library(sshagent STATIC ${sshagent_SOURCES})
+ target_link_libraries(sshagent Qt5::Core Qt5::Widgets Qt5::Network ${GCRYPT_LIBRARIES})
+endif()
diff --git a/src/sshagent/KeeAgentSettings.cpp b/src/sshagent/KeeAgentSettings.cpp
new file mode 100644
index 000000000..218e98acb
--- /dev/null
+++ b/src/sshagent/KeeAgentSettings.cpp
@@ -0,0 +1,278 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "KeeAgentSettings.h"
+
+KeeAgentSettings::KeeAgentSettings()
+ : m_allowUseOfSshKey(false)
+ , m_addAtDatabaseOpen(false)
+ , m_removeAtDatabaseClose(false)
+ , m_useConfirmConstraintWhenAdding(false)
+ , m_useLifetimeConstraintWhenAdding(false)
+ , m_lifetimeConstraintDuration(600)
+ , m_selectedType(QString("file"))
+ , m_attachmentName(QString())
+ , m_saveAttachmentToTempFile(false)
+ , m_fileName(QString())
+{
+
+}
+
+bool KeeAgentSettings::operator==(KeeAgentSettings& other)
+{
+ return (m_allowUseOfSshKey == other.m_allowUseOfSshKey
+ && m_addAtDatabaseOpen == other.m_addAtDatabaseOpen
+ && m_removeAtDatabaseClose == other.m_removeAtDatabaseClose
+ && m_useConfirmConstraintWhenAdding == other.m_useConfirmConstraintWhenAdding
+ && m_useLifetimeConstraintWhenAdding == other.m_useLifetimeConstraintWhenAdding
+ && m_lifetimeConstraintDuration == other.m_lifetimeConstraintDuration
+ && m_selectedType == other.m_selectedType
+ && m_attachmentName == other.m_attachmentName
+ && m_saveAttachmentToTempFile == other.m_saveAttachmentToTempFile
+ && m_fileName == other.m_fileName);
+}
+
+bool KeeAgentSettings::operator!=(KeeAgentSettings& other)
+{
+ return !(*this == other);
+}
+
+bool KeeAgentSettings::isDefault()
+{
+ KeeAgentSettings defaultSettings;
+ return (*this == defaultSettings);
+}
+
+bool KeeAgentSettings::allowUseOfSshKey() const
+{
+ return m_allowUseOfSshKey;
+}
+
+bool KeeAgentSettings::addAtDatabaseOpen() const
+{
+ return m_addAtDatabaseOpen;
+}
+
+bool KeeAgentSettings::removeAtDatabaseClose() const
+{
+ return m_removeAtDatabaseClose;
+}
+
+bool KeeAgentSettings::useConfirmConstraintWhenAdding() const
+{
+ return m_useConfirmConstraintWhenAdding;
+}
+
+bool KeeAgentSettings::useLifetimeConstraintWhenAdding() const
+{
+ return m_useLifetimeConstraintWhenAdding;
+}
+
+int KeeAgentSettings::lifetimeConstraintDuration() const
+{
+ return m_lifetimeConstraintDuration;
+}
+
+const QString KeeAgentSettings::selectedType() const
+{
+ return m_selectedType;
+}
+
+const QString KeeAgentSettings::attachmentName() const
+{
+ return m_attachmentName;
+}
+
+bool KeeAgentSettings::saveAttachmentToTempFile() const
+{
+ return m_saveAttachmentToTempFile;
+}
+
+const QString KeeAgentSettings::fileName() const
+{
+ return m_fileName;
+}
+
+void KeeAgentSettings::setAllowUseOfSshKey(bool allowUseOfSshKey)
+{
+ m_allowUseOfSshKey = allowUseOfSshKey;
+}
+
+void KeeAgentSettings::setAddAtDatabaseOpen(bool addAtDatabaseOpen)
+{
+ m_addAtDatabaseOpen = addAtDatabaseOpen;
+}
+
+void KeeAgentSettings::setRemoveAtDatabaseClose(bool removeAtDatabaseClose)
+{
+ m_removeAtDatabaseClose = removeAtDatabaseClose;
+}
+
+void KeeAgentSettings::setUseConfirmConstraintWhenAdding(bool useConfirmConstraintWhenAdding)
+{
+ m_useConfirmConstraintWhenAdding = useConfirmConstraintWhenAdding;
+}
+
+void KeeAgentSettings::setUseLifetimeConstraintWhenAdding(bool useLifetimeConstraintWhenAdding)
+{
+ m_useLifetimeConstraintWhenAdding = useLifetimeConstraintWhenAdding;
+}
+
+void KeeAgentSettings::setLifetimeConstraintDuration(int lifetimeConstraintDuration)
+{
+ m_lifetimeConstraintDuration = lifetimeConstraintDuration;
+}
+
+void KeeAgentSettings::setSelectedType(const QString& selectedType)
+{
+ m_selectedType = selectedType;
+}
+
+void KeeAgentSettings::setAttachmentName(const QString& attachmentName)
+{
+ m_attachmentName = attachmentName;
+}
+
+void KeeAgentSettings::setSaveAttachmentToTempFile(bool saveAttachmentToTempFile)
+{
+ m_saveAttachmentToTempFile = saveAttachmentToTempFile;
+}
+
+void KeeAgentSettings::setFileName(const QString& fileName)
+{
+ m_fileName = fileName;
+}
+
+bool KeeAgentSettings::readBool(QXmlStreamReader& reader)
+{
+ reader.readNext();
+ bool ret = (reader.text().startsWith("t", Qt::CaseInsensitive));
+ reader.readNext(); // tag end
+ return ret;
+}
+
+int KeeAgentSettings::readInt(QXmlStreamReader& reader)
+{
+ reader.readNext();
+ int ret = reader.text().toInt();
+ reader.readNext(); // tag end
+ return ret;
+}
+
+bool KeeAgentSettings::fromXml(const QByteArray& ba)
+{
+ QXmlStreamReader reader;
+ reader.addData(ba);
+
+ if (reader.error() || !reader.readNextStartElement()) {
+ return false;
+ }
+
+ if (reader.qualifiedName() != "EntrySettings") {
+ return false;
+ }
+
+ while (!reader.error() && reader.readNextStartElement()) {
+ if (reader.name() == "AllowUseOfSshKey") {
+ m_allowUseOfSshKey = readBool(reader);
+ } else if (reader.name() == "AddAtDatabaseOpen") {
+ m_addAtDatabaseOpen = readBool(reader);
+ } else if (reader.name() == "RemoveAtDatabaseClose") {
+ m_removeAtDatabaseClose = readBool(reader);
+ } else if (reader.name() == "UseConfirmConstraintWhenAdding") {
+ m_useConfirmConstraintWhenAdding = readBool(reader);
+ } else if (reader.name() == "UseLifetimeConstraintWhenAdding") {
+ m_useLifetimeConstraintWhenAdding = readBool(reader);
+ } else if (reader.name() == "LifetimeConstraintDuration") {
+ m_lifetimeConstraintDuration = readInt(reader);
+ } else if (reader.name() == "Location") {
+ while (!reader.error() && reader.readNextStartElement()) {
+ if (reader.name() == "SelectedType") {
+ reader.readNext();
+ m_selectedType = reader.text().toString();
+ reader.readNext();
+ } else if (reader.name() == "AttachmentName") {
+ reader.readNext();
+ m_attachmentName = reader.text().toString();
+ reader.readNext();
+ } else if (reader.name() == "SaveAttachmentToTempFile") {
+ m_saveAttachmentToTempFile = readBool(reader);
+ } else if (reader.name() == "FileName") {
+ reader.readNext();
+ m_fileName = reader.text().toString();
+ reader.readNext();
+ } else {
+ qWarning() << "Skipping location element" << reader.name();
+ reader.skipCurrentElement();
+ }
+ }
+ } else {
+ qWarning() << "Skipping element" << reader.name();
+ reader.skipCurrentElement();
+ }
+ }
+
+ return true;
+}
+
+QByteArray KeeAgentSettings::toXml()
+{
+ QByteArray ba;
+ QXmlStreamWriter writer(&ba);
+
+ // real KeeAgent can only read UTF-16
+ writer.setCodec(QTextCodec::codecForName("UTF-16"));
+ writer.setAutoFormatting(true);
+ writer.setAutoFormattingIndent(2);
+
+ writer.writeStartDocument();
+
+ writer.writeStartElement("EntrySettings");
+ writer.writeAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
+ writer.writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
+
+ writer.writeTextElement("AllowUseOfSshKey", m_allowUseOfSshKey ? "true" : "false");
+ writer.writeTextElement("AddAtDatabaseOpen", m_addAtDatabaseOpen ? "true" : "false");
+ writer.writeTextElement("RemoveAtDatabaseClose", m_removeAtDatabaseClose ? "true" : "false");
+ writer.writeTextElement("UseConfirmConstraintWhenAdding", m_useConfirmConstraintWhenAdding ? "true" : "false");
+ writer.writeTextElement("UseLifetimeConstraintWhenAdding", m_useLifetimeConstraintWhenAdding ? "true" : "false");
+ writer.writeTextElement("LifetimeConstraintDuration", QString::number(m_lifetimeConstraintDuration));
+
+ writer.writeStartElement("Location");
+ writer.writeTextElement("SelectedType", m_selectedType);
+
+ if (!m_attachmentName.isEmpty()) {
+ writer.writeTextElement("AttachmentName", m_attachmentName);
+ } else {
+ writer.writeEmptyElement("AttachmentName");
+ }
+
+ writer.writeTextElement("SaveAttachmentToTempFile", m_saveAttachmentToTempFile ? "true" : "false");
+
+ if (!m_fileName.isEmpty()) {
+ writer.writeTextElement("FileName", m_fileName);
+ } else {
+ writer.writeEmptyElement("FileName");
+ }
+
+ writer.writeEndElement(); // Location
+ writer.writeEndElement(); // EntrySettings
+ writer.writeEndDocument();
+
+ return ba;
+}
diff --git a/src/sshagent/KeeAgentSettings.h b/src/sshagent/KeeAgentSettings.h
new file mode 100644
index 000000000..4022750d1
--- /dev/null
+++ b/src/sshagent/KeeAgentSettings.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEAGENTSETTINGS_H
+#define KEEAGENTSETTINGS_H
+
+#include <QtCore>
+#include <QXmlStreamReader>
+
+class KeeAgentSettings
+{
+public:
+ KeeAgentSettings();
+
+ bool operator==(KeeAgentSettings& other);
+ bool operator!=(KeeAgentSettings& other);
+ bool isDefault();
+
+ bool fromXml(const QByteArray &ba);
+ QByteArray toXml();
+
+ bool allowUseOfSshKey() const;
+ bool addAtDatabaseOpen() const;
+ bool removeAtDatabaseClose() const;
+ bool useConfirmConstraintWhenAdding() const;
+ bool useLifetimeConstraintWhenAdding() const;
+ int lifetimeConstraintDuration() const;
+
+ const QString selectedType() const;
+ const QString attachmentName() const;
+ bool saveAttachmentToTempFile() const;
+ const QString fileName() const;
+
+ void setAllowUseOfSshKey(bool allowUseOfSshKey);
+ void setAddAtDatabaseOpen(bool addAtDatabaseOpen);
+ void setRemoveAtDatabaseClose(bool removeAtDatabaseClose);
+ void setUseConfirmConstraintWhenAdding(bool useConfirmConstraintWhenAdding);
+ void setUseLifetimeConstraintWhenAdding(bool useLifetimeConstraintWhenAdding);
+ void setLifetimeConstraintDuration(int lifetimeConstraintDuration);
+
+ void setSelectedType(const QString& type);
+ void setAttachmentName(const QString& attachmentName);
+ void setSaveAttachmentToTempFile(bool);
+ void setFileName(const QString& fileName);
+
+private:
+ bool readBool(QXmlStreamReader& reader);
+ int readInt(QXmlStreamReader& reader);
+
+ bool m_allowUseOfSshKey;
+ bool m_addAtDatabaseOpen;
+ bool m_removeAtDatabaseClose;
+ bool m_useConfirmConstraintWhenAdding;
+ bool m_useLifetimeConstraintWhenAdding;
+ int m_lifetimeConstraintDuration;
+
+ // location
+ QString m_selectedType;
+ QString m_attachmentName;
+ bool m_saveAttachmentToTempFile;
+ QString m_fileName;
+};
+
+#endif // KEEAGENTSETTINGS_H
diff --git a/src/sshagent/OpenSSHKey.cpp b/src/sshagent/OpenSSHKey.cpp
new file mode 100644
index 000000000..ce867a95f
--- /dev/null
+++ b/src/sshagent/OpenSSHKey.cpp
@@ -0,0 +1,558 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "OpenSSHKey.h"
+#include "ASN1Key.h"
+#include <QRegularExpression>
+#include <QStringList>
+#include <QCryptographicHash>
+#include "crypto/SymmetricCipher.h"
+
+const QString OpenSSHKey::TYPE_DSA = "DSA PRIVATE KEY";
+const QString OpenSSHKey::TYPE_RSA = "RSA PRIVATE KEY";
+const QString OpenSSHKey::TYPE_OPENSSH = "OPENSSH PRIVATE KEY";
+
+// bcrypt_pbkdf.cpp
+int bcrypt_pbkdf(const QByteArray& pass, const QByteArray& salt, QByteArray& key, quint32 rounds);
+
+OpenSSHKey::OpenSSHKey(QObject *parent)
+ : QObject(parent)
+ , m_type(QString())
+ , m_cipherName(QString("none"))
+ , m_kdfName(QString("none"))
+ , m_kdfOptions(QByteArray())
+ , m_rawPrivateData(QByteArray())
+ , m_publicData(QList<QByteArray>())
+ , m_privateData(QList<QByteArray>())
+ , m_privateType(QString())
+ , m_comment(QString())
+ , m_error(QString())
+{
+
+}
+
+OpenSSHKey::OpenSSHKey(const OpenSSHKey& other)
+ : QObject(nullptr)
+ , m_type(other.m_type)
+ , m_cipherName(other.m_cipherName)
+ , m_kdfName(other.m_kdfName)
+ , m_kdfOptions(other.m_kdfOptions)
+ , m_rawPrivateData(other.m_rawPrivateData)
+ , m_publicData(other.m_publicData)
+ , m_privateData(other.m_privateData)
+ , m_comment(other.m_comment)
+ , m_error(other.m_error)
+{
+
+}
+
+bool OpenSSHKey::operator==(const OpenSSHKey& other) const
+{
+ // close enough for now
+ return (fingerprint() == other.fingerprint());
+}
+
+const QString OpenSSHKey::cipherName() const
+{
+ return m_cipherName;
+}
+
+const QString OpenSSHKey::type() const
+{
+ return m_type;
+}
+
+int OpenSSHKey::keyLength() const
+{
+ if (m_type == "ssh-dss" && m_publicData.length() == 4) {
+ return (m_publicData[0].length() - 1) * 8;
+ } else if (m_type == "ssh-rsa" && m_publicData.length() == 2) {
+ return (m_publicData[1].length() - 1) * 8;
+ } else if (m_type.startsWith("ecdsa-sha2-") && m_publicData.length() == 2) {
+ return (m_publicData[1].length() - 1) * 4;
+ } else if (m_type == "ssh-ed25519" && m_publicData.length() == 1) {
+ return m_publicData[0].length() * 8;
+ }
+
+ return 0;
+}
+
+const QString OpenSSHKey::fingerprint() const
+{
+ QByteArray publicKey;
+ BinaryStream stream(&publicKey);
+
+ stream.writeString(m_type);
+
+ for (QByteArray ba : m_publicData) {
+ stream.writeString(ba);
+ }
+
+ QByteArray rawHash = QCryptographicHash::hash(publicKey, QCryptographicHash::Sha256);
+
+ return "SHA256:" + QString::fromLatin1(rawHash.toBase64(QByteArray::OmitTrailingEquals));
+}
+
+const QString OpenSSHKey::comment() const
+{
+ return m_comment;
+}
+
+const QString OpenSSHKey::publicKey() const
+{
+ QByteArray publicKey;
+ BinaryStream stream(&publicKey);
+
+ stream.writeString(m_type);
+
+ for (QByteArray ba : m_publicData) {
+ stream.writeString(ba);
+ }
+
+ return m_type + " " + QString::fromLatin1(publicKey.toBase64()) + " " + m_comment;
+}
+
+const QString OpenSSHKey::errorString() const
+{
+ return m_error;
+}
+
+void OpenSSHKey::setType(const QString& type)
+{
+ m_type = type;
+}
+
+void OpenSSHKey::setPublicData(const QList<QByteArray>& data)
+{
+ m_publicData = data;
+}
+
+void OpenSSHKey::setPrivateData(const QList<QByteArray>& data)
+{
+ m_privateData = data;
+}
+
+void OpenSSHKey::setComment(const QString& comment)
+{
+ m_comment = comment;
+}
+
+void OpenSSHKey::clearPrivate()
+{
+ m_rawPrivateData.clear();
+ m_privateData.clear();
+}
+
+bool OpenSSHKey::parsePEM(const QByteArray& in, QByteArray& out)
+{
+ QString pem = QString::fromLatin1(in);
+ QStringList rows = pem.split(QRegularExpression("(?:\r?\n|\r)"), QString::SkipEmptyParts);
+
+ if (rows.length() < 3) {
+ m_error = tr("Invalid key file, expecting an OpenSSH key");
+ return false;
+ }
+
+ QString begin = rows.first();
+ QString end = rows.last();
+
+ QRegularExpressionMatch beginMatch = QRegularExpression("^-----BEGIN ([^\\-]+)-----$").match(begin);
+ QRegularExpressionMatch endMatch = QRegularExpression("^-----END ([^\\-]+)-----$").match(end);
+
+ if (!beginMatch.hasMatch() || !endMatch.hasMatch()) {
+ m_error = tr("Invalid key file, expecting an OpenSSH key");
+ return false;
+ }
+
+ if (beginMatch.captured(1) != endMatch.captured(1)) {
+ m_error = tr("PEM boundary mismatch");
+ return false;
+ }
+
+ m_privateType = beginMatch.captured(1);
+
+ rows.removeFirst();
+ rows.removeLast();
+
+ QRegularExpression keyValueExpr = QRegularExpression("^([A-Za-z0-9-]+): (.+)$");
+ QMap<QString, QString> pemOptions;
+
+ do {
+ QRegularExpressionMatch keyValueMatch = keyValueExpr.match(rows.first());
+
+ if (!keyValueMatch.hasMatch()) {
+ break;
+ }
+
+ pemOptions.insert(keyValueMatch.captured(1), keyValueMatch.captured(2));
+
+ rows.removeFirst();
+ } while (!rows.isEmpty());
+
+ if (pemOptions.value("Proc-Type").compare("4,encrypted", Qt::CaseInsensitive) == 0) {
+ m_kdfName = "md5";
+ m_cipherName = pemOptions.value("DEK-Info").section(",", 0, 0);
+ m_cipherIV = QByteArray::fromHex(pemOptions.value("DEK-Info").section(",", 1, 1).toLatin1());
+ }
+
+ out = QByteArray::fromBase64(rows.join("").toLatin1());
+
+ if (out.isEmpty()) {
+ m_error = tr("Base64 decoding failed");
+ return false;
+ }
+
+ return true;
+}
+
+bool OpenSSHKey::parse(const QByteArray& in)
+{
+ QByteArray data;
+
+ if (!parsePEM(in, data)) {
+ return false;
+ }
+
+ if (m_privateType == TYPE_DSA || m_privateType == TYPE_RSA) {
+ m_rawPrivateData = data;
+ } else if (m_privateType == TYPE_OPENSSH) {
+ BinaryStream stream(&data);
+
+ QByteArray magic;
+ magic.resize(15);
+
+ if (!stream.read(magic)) {
+ m_error = tr("Key file way too small.");
+ return false;
+ }
+
+ if (QString::fromLatin1(magic) != "openssh-key-v1") {
+ m_error = tr("Key file magic header id invalid");
+ return false;
+ }
+
+ stream.readString(m_cipherName);
+ stream.readString(m_kdfName);
+ stream.readString(m_kdfOptions);
+
+ quint32 numberOfKeys;
+ stream.read(numberOfKeys);
+
+ if (numberOfKeys == 0) {
+ m_error = tr("Found zero keys");
+ return false;
+ }
+
+ for (quint32 i = 0; i < numberOfKeys; ++i) {
+ QByteArray publicKey;
+ if (!stream.readString(publicKey)) {
+ m_error = tr("Failed to read public key.");
+ return false;
+ }
+
+ if (i == 0) {
+ BinaryStream publicStream(&publicKey);
+ if (!readPublic(publicStream)) {
+ return false;
+ }
+ }
+ }
+
+ // padded list of keys
+ if (!stream.readString(m_rawPrivateData)) {
+ m_error = tr("Corrupted key file, reading private key failed");
+ return false;
+ }
+ } else {
+ m_error = tr("Unsupported key type: %1").arg(m_privateType);
+ return false;
+ }
+
+ // load private if no encryption
+ if (!encrypted()) {
+ return openPrivateKey();
+ }
+
+ return true;
+}
+
+bool OpenSSHKey::encrypted() const
+{
+ return (m_cipherName != "none");
+}
+
+bool OpenSSHKey::openPrivateKey(const QString& passphrase)
+{
+ QScopedPointer<SymmetricCipher> cipher;
+
+ if (!m_privateData.isEmpty()) {
+ return true;
+ }
+
+ if (m_rawPrivateData.isEmpty()) {
+ m_error = tr("No private key payload to decrypt");
+ return false;
+ }
+
+ if (m_cipherName.compare("aes-128-cbc", Qt::CaseInsensitive) == 0) {
+ cipher.reset(new SymmetricCipher(SymmetricCipher::Aes128, SymmetricCipher::Cbc, SymmetricCipher::Decrypt));
+ } else if (m_cipherName == "aes256-cbc") {
+ cipher.reset(new SymmetricCipher(SymmetricCipher::Aes256, SymmetricCipher::Cbc, SymmetricCipher::Decrypt));
+ } else if (m_cipherName == "aes256-ctr") {
+ cipher.reset(new SymmetricCipher(SymmetricCipher::Aes256, SymmetricCipher::Ctr, SymmetricCipher::Decrypt));
+ } else if (m_cipherName != "none") {
+ m_error = tr("Unknown cipher: %1").arg(m_cipherName);
+ return false;
+ }
+
+ if (m_kdfName == "bcrypt") {
+ if (!cipher) {
+ m_error = tr("Trying to run KDF without cipher");
+ return false;
+ }
+
+ if (passphrase.length() == 0) {
+ m_error = tr("Passphrase is required to decrypt this key");
+ return false;
+ }
+
+ BinaryStream optionStream(&m_kdfOptions);
+
+ QByteArray salt;
+ quint32 rounds;
+
+ optionStream.readString(salt);
+ optionStream.read(rounds);
+
+ QByteArray decryptKey;
+ decryptKey.fill(0, cipher->keySize() + cipher->blockSize());
+
+ QByteArray phraseData = passphrase.toLatin1();
+ if (bcrypt_pbkdf(phraseData, salt, decryptKey, rounds) < 0) {
+ m_error = tr("Key derivation failed, key file corrupted?");
+ return false;
+ }
+
+ QByteArray keyData, ivData;
+ keyData.setRawData(decryptKey.data(), cipher->keySize());
+ ivData.setRawData(decryptKey.data() + cipher->keySize(), cipher->blockSize());
+
+ cipher->init(keyData, ivData);
+
+ if (!cipher->init(keyData, ivData)) {
+ m_error = cipher->errorString();
+ return false;
+ }
+ } else if (m_kdfName == "md5") {
+ if (m_cipherIV.length() < 8) {
+ m_error = tr("Cipher IV is too short for MD5 kdf");
+ return false;
+ }
+
+ QCryptographicHash hash(QCryptographicHash::Md5);
+ hash.addData(passphrase.toUtf8());
+ hash.addData(m_cipherIV.data(), 8);
+ QByteArray keyData = hash.result();
+
+ if (!cipher->init(keyData, m_cipherIV)) {
+ m_error = cipher->errorString();
+ return false;
+ }
+ } else if (m_kdfName != "none") {
+ m_error = tr("Unknown KDF: %1").arg(m_kdfName);
+ return false;
+ }
+
+ QByteArray rawPrivateData = m_rawPrivateData;
+
+ if (cipher && cipher->isInitalized()) {
+ bool ok = false;
+ rawPrivateData = cipher->process(rawPrivateData, &ok);
+ if (!ok) {
+ m_error = tr("Decryption failed, wrong passphrase?");
+ return false;
+ }
+ }
+
+ if (m_privateType == TYPE_DSA) {
+ if (!ASN1Key::parseDSA(rawPrivateData, *this)) {
+ m_error = tr("Decryption failed, wrong passphrase?");
+ return false;
+ }
+
+ return true;
+ } else if (m_privateType == TYPE_RSA) {
+ if (!ASN1Key::parseRSA(rawPrivateData, *this)) {
+ m_error = tr("Decryption failed, wrong passphrase?");
+ return false;
+ }
+
+ return true;
+ } else if (m_privateType == TYPE_OPENSSH) {
+ BinaryStream keyStream(&rawPrivateData);
+
+ quint32 checkInt1;
+ quint32 checkInt2;
+
+ keyStream.read(checkInt1);
+ keyStream.read(checkInt2);
+
+ if (checkInt1 != checkInt2) {
+ m_error = tr("Decryption failed, wrong passphrase?");
+ return false;
+ }
+
+ return readPrivate(keyStream);
+ }
+
+ m_error = tr("Unsupported key type: %1").arg(m_privateType);
+ return false;
+}
+
+bool OpenSSHKey::readPublic(BinaryStream& stream)
+{
+ m_publicData.clear();
+
+ if (!stream.readString(m_type)) {
+ m_error = tr("Unexpected EOF while reading public key");
+ return false;
+ }
+
+ int keyParts;
+ if (m_type == "ssh-dss") {
+ keyParts = 4;
+ } else if (m_type == "ssh-rsa") {
+ keyParts = 2;
+ } else if (m_type.startsWith("ecdsa-sha2-")) {
+ keyParts = 2;
+ } else if (m_type == "ssh-ed25519") {
+ keyParts = 1;
+ } else {
+ m_error = tr("Unknown key type: %1").arg(m_type);
+ return false;
+ }
+
+ for (int i = 0; i < keyParts; ++i) {
+ QByteArray t;
+
+ if (!stream.readString(t)) {
+ m_error = tr("Unexpected EOF while reading public key");
+ return false;
+ }
+
+ m_publicData.append(t);
+ }
+
+ return true;
+}
+
+bool OpenSSHKey::readPrivate(BinaryStream& stream)
+{
+ m_privateData.clear();
+
+ if (!stream.readString(m_type)) {
+ m_error = tr("Unexpected EOF while reading private key");
+ return false;
+ }
+
+ int keyParts;
+ if (m_type == "ssh-dss") {
+ keyParts = 5;
+ } else if (m_type == "ssh-rsa") {
+ keyParts = 6;
+ } else if (m_type.startsWith("ecdsa-sha2-")) {
+ keyParts = 3;
+ } else if (m_type == "ssh-ed25519") {
+ keyParts = 2;
+ } else {
+ m_error = tr("Unknown key type: %1").arg(m_type);
+ return false;
+ }
+
+ for (int i = 0; i < keyParts; ++i) {
+ QByteArray t;
+
+ if (!stream.readString(t)) {
+ m_error = tr("Unexpected EOF while reading private key");
+ return false;
+ }
+
+ m_privateData.append(t);
+ }
+
+ if (!stream.readString(m_comment)) {
+ m_error = tr("Unexpected EOF while reading private key");
+ return false;
+ }
+
+ return true;
+}
+
+bool OpenSSHKey::writePublic(BinaryStream& stream)
+{
+ if (m_publicData.isEmpty()) {
+ m_error = tr("Can't write public key as it is empty");
+ return false;
+ }
+
+ if (!stream.writeString(m_type)) {
+ m_error = tr("Unexpected EOF when writing public key");
+ return false;
+ }
+
+ for (QByteArray t : m_publicData) {
+ if (!stream.writeString(t)) {
+ m_error = tr("Unexpected EOF when writing public key");
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool OpenSSHKey::writePrivate(BinaryStream& stream)
+{
+ if (m_privateData.isEmpty()) {
+ m_error = tr("Can't write private key as it is empty");
+ return false;
+ }
+
+ if (!stream.writeString(m_type)) {
+ m_error = tr("Unexpected EOF when writing private key");
+ return false;
+ }
+
+ for (QByteArray t : m_privateData) {
+ if (!stream.writeString(t)) {
+ m_error = tr("Unexpected EOF when writing private key");
+ return false;
+ }
+ }
+
+ if (!stream.writeString(m_comment)) {
+ m_error = tr("Unexpected EOF when writing private key");
+ return false;
+ }
+
+ return true;
+}
+
+uint qHash(const OpenSSHKey& key)
+{
+ return qHash(key.fingerprint());
+}
diff --git a/src/sshagent/OpenSSHKey.h b/src/sshagent/OpenSSHKey.h
new file mode 100644
index 000000000..e06af2201
--- /dev/null
+++ b/src/sshagent/OpenSSHKey.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef OPENSSHKEY_H
+#define OPENSSHKEY_H
+
+#include <QtCore>
+#include "BinaryStream.h"
+
+class OpenSSHKey : QObject
+{
+ Q_OBJECT
+public:
+ explicit OpenSSHKey(QObject* parent = nullptr);
+ OpenSSHKey(const OpenSSHKey& other);
+ bool operator==(const OpenSSHKey& other) const;
+
+ bool parse(const QByteArray& in);
+ bool encrypted() const;
+ bool openPrivateKey(const QString& passphrase = QString());
+
+ const QString cipherName() const;
+ const QString type() const;
+ int keyLength() const;
+ const QString fingerprint() const;
+ const QString comment() const;
+ const QString publicKey() const;
+ const QString errorString() const;
+
+ void setType(const QString& type);
+ void setPublicData(const QList<QByteArray>& data);
+ void setPrivateData(const QList<QByteArray>& data);
+ void setComment(const QString& comment);
+
+ void clearPrivate();
+
+ bool readPublic(BinaryStream& stream);
+ bool readPrivate(BinaryStream& stream);
+ bool writePublic(BinaryStream& stream);
+ bool writePrivate(BinaryStream& stream);
+
+private:
+ static const QString TYPE_DSA;
+ static const QString TYPE_RSA;
+ static const QString TYPE_OPENSSH;
+
+ bool parsePEM(const QByteArray& in, QByteArray& out);
+
+ QString m_type;
+ QString m_cipherName;
+ QByteArray m_cipherIV;
+ QString m_kdfName;
+ QByteArray m_kdfOptions;
+ QByteArray m_rawPrivateData;
+ QList<QByteArray> m_publicData;
+ QList<QByteArray> m_privateData;
+ QString m_privateType;
+ QString m_comment;
+ QString m_error;
+};
+
+uint qHash(const OpenSSHKey& key);
+
+#endif // OPENSSHKEY_H
diff --git a/src/sshagent/SSHAgent.cpp b/src/sshagent/SSHAgent.cpp
new file mode 100644
index 000000000..a65c6e4f1
--- /dev/null
+++ b/src/sshagent/SSHAgent.cpp
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "SSHAgent.h"
+#include "BinaryStream.h"
+#include "KeeAgentSettings.h"
+
+#ifndef Q_OS_WIN
+#include <QtNetwork>
+#else
+#include <windows.h>
+#endif
+
+SSHAgent* SSHAgent::m_instance;
+
+SSHAgent::SSHAgent(QObject* parent) : QObject(parent)
+{
+#ifndef Q_OS_WIN
+ m_socketPath = QProcessEnvironment::systemEnvironment().value("SSH_AUTH_SOCK");
+#endif
+}
+
+SSHAgent::~SSHAgent()
+{
+ for (QSet<OpenSSHKey> keys : m_keys.values()) {
+ for (OpenSSHKey key : keys) {
+ removeIdentity(key);
+ }
+ }
+}
+
+SSHAgent* SSHAgent::instance()
+{
+ if (m_instance == nullptr) {
+ qFatal("Race condition: instance wanted before it was initialized, this is a bug.");
+ }
+
+ return m_instance;
+}
+
+void SSHAgent::init(QObject* parent)
+{
+ m_instance = new SSHAgent(parent);
+}
+
+bool SSHAgent::isAgentRunning() const
+{
+#ifndef Q_OS_WIN
+ return !m_socketPath.isEmpty();
+#else
+ return (FindWindowA("Pageant", "Pageant") != nullptr);
+#endif
+}
+
+bool SSHAgent::sendMessage(const QByteArray& in, QByteArray& out) const
+{
+#ifndef Q_OS_WIN
+ QLocalSocket socket;
+ BinaryStream stream(&socket);
+
+ socket.connectToServer(m_socketPath);
+ if (!socket.waitForConnected(500)) {
+ return false;
+ }
+
+ stream.writeString(in);
+ stream.flush();
+
+ if (!stream.readString(out)) {
+ return false;
+ }
+
+ socket.close();
+
+ return true;
+#else
+ HWND hWnd = FindWindowA("Pageant", "Pageant");
+
+ if (!hWnd) {
+ return false;
+ }
+
+ if (static_cast<quint32>(in.length()) > AGENT_MAX_MSGLEN - 4) {
+ return false;
+ }
+
+ QByteArray mapName = (QString("SSHAgentRequest") + reinterpret_cast<intptr_t>(QThread::currentThreadId())).toLatin1();
+
+ HANDLE handle = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, AGENT_MAX_MSGLEN, mapName.data());
+
+ if (!handle) {
+ return false;
+ }
+
+ LPVOID ptr = MapViewOfFile(handle, FILE_MAP_WRITE, 0, 0, 0);
+
+ if (!ptr) {
+ CloseHandle(handle);
+ return false;
+ }
+
+ quint32 *requestLength = reinterpret_cast<quint32*>(ptr);
+ void *requestData = reinterpret_cast<void*>(reinterpret_cast<char*>(ptr) + 4);
+
+ *requestLength = qToBigEndian<quint32>(in.length());
+ memcpy(requestData, in.data(), in.length());
+
+ COPYDATASTRUCT data;
+ data.dwData = AGENT_COPYDATA_ID;
+ data.cbData = mapName.length() + 1;
+ data.lpData = reinterpret_cast<LPVOID>(mapName.data());
+
+ LRESULT res = SendMessageA(hWnd, WM_COPYDATA, 0, reinterpret_cast<LPARAM>(&data));
+
+ if (res) {
+ quint32 responseLength = qFromBigEndian<quint32>(*requestLength);
+ if (responseLength <= AGENT_MAX_MSGLEN) {
+ out.resize(responseLength);
+ memcpy(out.data(), requestData, responseLength);
+ }
+ }
+
+ UnmapViewOfFile(ptr);
+ CloseHandle(handle);
+
+ return (res > 0);
+#endif
+}
+
+
+bool SSHAgent::addIdentity(OpenSSHKey& key, quint32 lifetime, bool confirm) const
+{
+ QByteArray requestData;
+ BinaryStream request(&requestData);
+
+ request.write((lifetime > 0 || confirm) ? SSH_AGENTC_ADD_ID_CONSTRAINED : SSH_AGENTC_ADD_IDENTITY);
+ key.writePrivate(request);
+
+ if (lifetime > 0) {
+ request.write(SSH_AGENT_CONSTRAIN_LIFETIME);
+ request.write(lifetime);
+ }
+
+ if (confirm) {
+ request.write(SSH_AGENT_CONSTRAIN_CONFIRM);
+ }
+
+ QByteArray responseData;
+ sendMessage(requestData, responseData);
+
+ if (responseData.length() < 1 || static_cast<quint8>(responseData[0]) != SSH_AGENT_SUCCESS) {
+ return false;
+ }
+
+ return true;
+}
+
+bool SSHAgent::removeIdentity(OpenSSHKey& key) const
+{
+ QByteArray requestData;
+ BinaryStream request(&requestData);
+
+ QByteArray keyData;
+ BinaryStream keyStream(&keyData);
+ key.writePublic(keyStream);
+
+ request.write(SSH_AGENTC_REMOVE_IDENTITY);
+ request.writeString(keyData);
+
+ QByteArray responseData;
+ sendMessage(requestData, responseData);
+
+ if (responseData.length() < 1 || static_cast<quint8>(responseData[0]) != SSH_AGENT_SUCCESS) {
+ return false;
+ }
+
+ return true;
+}
+
+void SSHAgent::removeIdentityAtLock(const OpenSSHKey& key, const Uuid& uuid)
+{
+ OpenSSHKey copy = key;
+ copy.clearPrivate();
+ m_keys[uuid.toHex()].insert(copy);
+}
+
+void SSHAgent::databaseModeChanged(DatabaseWidget::Mode mode)
+{
+ DatabaseWidget* widget = qobject_cast<DatabaseWidget*>(sender());
+
+ if (widget == nullptr) {
+ return;
+ }
+
+ Uuid uuid = widget->database()->uuid();
+
+ if (mode == DatabaseWidget::LockedMode && m_keys.contains(uuid.toHex())) {
+ QSet<OpenSSHKey> keys = m_keys.take(uuid.toHex());
+ for (OpenSSHKey key : keys) {
+ removeIdentity(key);
+ }
+ } else if (mode == DatabaseWidget::ViewMode && !m_keys.contains(uuid.toHex())) {
+ for (Entry* e : widget->database()->rootGroup()->entriesRecursive()) {
+
+ if (widget->database()->metadata()->recycleBinEnabled()
+ && e->group() == widget->database()->metadata()->recycleBin()) {
+ continue;
+ }
+
+ if (!e->attachments()->hasKey("KeeAgent.settings")) {
+ continue;
+ }
+
+ KeeAgentSettings settings;
+ settings.fromXml(e->attachments()->value("KeeAgent.settings"));
+
+ if (!settings.allowUseOfSshKey()) {
+ continue;
+ }
+
+ QByteArray keyData;
+ if (settings.selectedType() == "attachment") {
+ keyData = e->attachments()->value(settings.attachmentName());
+ } else if (!settings.fileName().isEmpty()) {
+ QFile file(settings.fileName());
+
+ if (file.size() > 1024 * 1024) {
+ continue;
+ }
+
+ if (!file.open(QIODevice::ReadOnly)) {
+ continue;
+ }
+
+ keyData = file.readAll();
+ }
+
+ if (keyData.isEmpty()) {
+ continue;
+ }
+
+ OpenSSHKey key;
+
+ if (!key.parse(keyData)) {
+ continue;
+ }
+
+ if (key.comment().isEmpty()) {
+ key.setComment(e->username());
+ }
+
+ if (settings.removeAtDatabaseClose()) {
+ removeIdentityAtLock(key, uuid);
+ }
+
+ if (settings.addAtDatabaseOpen() && key.openPrivateKey(e->password())) {
+ int lifetime = 0;
+
+ if (settings.useLifetimeConstraintWhenAdding()) {
+ lifetime = settings.lifetimeConstraintDuration();
+ }
+
+ addIdentity(key, lifetime, settings.useConfirmConstraintWhenAdding());
+ }
+ }
+ }
+}
diff --git a/src/sshagent/SSHAgent.h b/src/sshagent/SSHAgent.h
new file mode 100644
index 000000000..078ff7b0d
--- /dev/null
+++ b/src/sshagent/SSHAgent.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AGENTCLIENT_H
+#define AGENTCLIENT_H
+
+#include <QtCore>
+#include <QList>
+#include "OpenSSHKey.h"
+
+#include "gui/DatabaseWidget.h"
+
+class SSHAgent : public QObject
+{
+ Q_OBJECT
+
+public:
+ static SSHAgent* instance();
+ static void init(QObject* parent);
+
+ bool isAgentRunning() const;
+ bool addIdentity(OpenSSHKey& key, quint32 lifetime = 0, bool confirm = false) const;
+ bool removeIdentity(OpenSSHKey& key) const;
+ void removeIdentityAtLock(const OpenSSHKey& key, const Uuid& uuid);
+
+public slots:
+ void databaseModeChanged(DatabaseWidget::Mode mode = DatabaseWidget::LockedMode);
+
+private:
+ const quint8 SSH_AGENT_FAILURE = 5;
+ const quint8 SSH_AGENT_SUCCESS = 6;
+ const quint8 SSH_AGENTC_REQUEST_IDENTITIES = 11;
+ const quint8 SSH_AGENT_IDENTITIES_ANSWER = 12;
+ const quint8 SSH_AGENTC_ADD_IDENTITY = 17;
+ const quint8 SSH_AGENTC_REMOVE_IDENTITY = 18;
+ const quint8 SSH_AGENTC_ADD_ID_CONSTRAINED = 25;
+
+ const quint8 SSH_AGENT_CONSTRAIN_LIFETIME = 1;
+ const quint8 SSH_AGENT_CONSTRAIN_CONFIRM = 2;
+
+ explicit SSHAgent(QObject* parent = nullptr);
+ ~SSHAgent();
+
+ bool sendMessage(const QByteArray& in, QByteArray& out) const;
+
+ static SSHAgent* m_instance;
+
+#ifndef Q_OS_WIN
+ QString m_socketPath;
+#else
+ const quint32 AGENT_MAX_MSGLEN = 8192;
+ const quint32 AGENT_COPYDATA_ID = 0x804e50ba;
+#endif
+
+ QMap<QString, QSet<OpenSSHKey>> m_keys;
+};
+
+#endif // AGENTCLIENT_H
diff --git a/src/sshagent/bcrypt_pbkdf.cpp b/src/sshagent/bcrypt_pbkdf.cpp
new file mode 100644
index 000000000..fed4cdb29
--- /dev/null
+++ b/src/sshagent/bcrypt_pbkdf.cpp
@@ -0,0 +1,172 @@
+/* $OpenBSD: bcrypt_pbkdf.c,v 1.13 2015/01/12 03:20:04 tedu Exp $ */
+/*
+ * Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <QtCore>
+
+extern "C" {
+#include "blf.h"
+}
+
+#define MINIMUM(a,b) (((a) < (b)) ? (a) : (b))
+
+/*
+ * pkcs #5 pbkdf2 implementation using the "bcrypt" hash
+ *
+ * The bcrypt hash function is derived from the bcrypt password hashing
+ * function with the following modifications:
+ * 1. The input password and salt are preprocessed with SHA512.
+ * 2. The output length is expanded to 256 bits.
+ * 3. Subsequently the magic string to be encrypted is lengthened and modifed
+ * to "OxychromaticBlowfishSwatDynamite"
+ * 4. The hash function is defined to perform 64 rounds of initial state
+ * expansion. (More rounds are performed by iterating the hash.)
+ *
+ * Note that this implementation pulls the SHA512 operations into the caller
+ * as a performance optimization.
+ *
+ * One modification from official pbkdf2. Instead of outputting key material
+ * linearly, we mix it. pbkdf2 has a known weakness where if one uses it to
+ * generate (e.g.) 512 bits of key material for use as two 256 bit keys, an
+ * attacker can merely run once through the outer loop, but the user
+ * always runs it twice. Shuffling output bytes requires computing the
+ * entirety of the key material to assemble any subkey. This is something a
+ * wise caller could do; we just do it for you.
+ */
+
+#define BCRYPT_WORDS 8
+#define BCRYPT_HASHSIZE (BCRYPT_WORDS * 4)
+#define SHA512_DIGEST_LENGTH 64
+
+// FIXME: explicit_bzero exists to ensure bzero is not optimized out
+#define explicit_bzero bzero
+
+static void
+bcrypt_hash(const quint8* sha2pass, const quint8* sha2salt, quint8* out)
+{
+ blf_ctx state;
+ quint8 ciphertext[BCRYPT_HASHSIZE] = // "OxychromaticBlowfishSwatDynamite"
+ { 0x4f, 0x78, 0x79, 0x63, 0x68, 0x72, 0x6f, 0x6d,
+ 0x61, 0x74, 0x69, 0x63, 0x42, 0x6c, 0x6f, 0x77,
+ 0x66, 0x69, 0x73, 0x68, 0x53, 0x77, 0x61, 0x74,
+ 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x74, 0x65 };
+ quint32 cdata[BCRYPT_WORDS];
+ int i;
+ quint16 j;
+ size_t shalen = SHA512_DIGEST_LENGTH;
+
+ /* key expansion */
+ Blowfish_initstate(&state);
+ Blowfish_expandstate(&state, sha2salt, shalen, sha2pass, shalen);
+ for (i = 0; i < 64; i++) {
+ Blowfish_expand0state(&state, sha2salt, shalen);
+ Blowfish_expand0state(&state, sha2pass, shalen);
+ }
+
+ /* encryption */
+ j = 0;
+ for (i = 0; i < BCRYPT_WORDS; i++)
+ cdata[i] = Blowfish_stream2word(ciphertext, sizeof(ciphertext),
+ &j);
+ for (i = 0; i < 64; i++)
+ blf_enc(&state, cdata, sizeof(cdata) / sizeof(uint64_t));
+
+ /* copy out */
+ for (i = 0; i < BCRYPT_WORDS; i++) {
+ out[4 * i + 3] = (cdata[i] >> 24) & 0xff;
+ out[4 * i + 2] = (cdata[i] >> 16) & 0xff;
+ out[4 * i + 1] = (cdata[i] >> 8) & 0xff;
+ out[4 * i + 0] = cdata[i] & 0xff;
+ }
+
+ /* zap */
+ explicit_bzero(ciphertext, sizeof(ciphertext));
+ explicit_bzero(cdata, sizeof(cdata));
+ explicit_bzero(&state, sizeof(state));
+}
+
+int bcrypt_pbkdf(const QByteArray& pass, const QByteArray& salt, QByteArray& key, quint32 rounds)
+{
+ QCryptographicHash ctx(QCryptographicHash::Sha512);
+ QByteArray sha2pass;
+ QByteArray sha2salt;
+ quint8 out[BCRYPT_HASHSIZE];
+ quint8 tmpout[BCRYPT_HASHSIZE];
+ quint8 countsalt[4];
+
+ /* nothing crazy */
+ if (rounds < 1) {
+ return -1;
+ }
+
+ if (pass.isEmpty() || salt.isEmpty() || key.isEmpty() ||
+ static_cast<quint32>(key.length()) > sizeof(out) * sizeof(out)) {
+ return -1;
+ }
+
+ quint32 stride = (key.length() + sizeof(out) - 1) / sizeof(out);
+ quint32 amt = (key.length() + stride - 1) / stride;
+
+ /* collapse password */
+ ctx.reset();
+ ctx.addData(pass);
+ sha2pass = ctx.result();
+
+ /* generate key, sizeof(out) at a time */
+ for (quint32 count = 1, keylen = key.length(); keylen > 0; count++) {
+ countsalt[0] = (count >> 24) & 0xff;
+ countsalt[1] = (count >> 16) & 0xff;
+ countsalt[2] = (count >> 8) & 0xff;
+ countsalt[3] = count & 0xff;
+
+ /* first round, salt is salt */
+ ctx.reset();
+ ctx.addData(salt);
+ ctx.addData(reinterpret_cast<char *>(countsalt), sizeof(countsalt));
+ sha2salt = ctx.result();
+
+ bcrypt_hash(reinterpret_cast<quint8 *>(sha2pass.data()), reinterpret_cast<quint8 *>(sha2salt.data()), tmpout);
+ memcpy(out, tmpout, sizeof(out));
+
+ for (quint32 i = 1; i < rounds; i++) {
+ /* subsequent rounds, salt is previous output */
+ ctx.reset();
+ ctx.addData(reinterpret_cast<char *>(tmpout), sizeof(tmpout));
+ sha2salt = ctx.result();
+ bcrypt_hash(reinterpret_cast<quint8 *>(sha2pass.data()), reinterpret_cast<quint8 *>(sha2salt.data()), tmpout);
+ for (quint32 j = 0; j < sizeof(out); j++)
+ out[j] ^= tmpout[j];
+ }
+
+ /*
+ * pbkdf2 deviation: output the key material non-linearly.
+ */
+ amt = MINIMUM(amt, keylen);
+ quint32 i;
+ for (i = 0; i < amt; i++) {
+ int dest = i * stride + (count - 1);
+ if (dest >= key.length())
+ break;
+ key.data()[dest] = out[i];
+ }
+ keylen -= i;
+ }
+
+ /* zap */
+ explicit_bzero(out, sizeof(out));
+
+ return 0;
+}
diff --git a/src/sshagent/blf.h b/src/sshagent/blf.h
new file mode 100644
index 000000000..4878e5588
--- /dev/null
+++ b/src/sshagent/blf.h
@@ -0,0 +1,98 @@
+/* $OpenBSD: blf.h,v 1.7 2007/03/14 17:59:41 grunk Exp $ */
+/*
+ * Blowfish - a fast block cipher designed by Bruce Schneier
+ *
+ * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Niels Provos.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _BLF_H_
+#define _BLF_H_
+
+#ifdef _WIN32
+
+#include <stdint.h>
+
+typedef uint32_t u_int32_t;
+typedef uint16_t u_int16_t;
+typedef uint8_t u_int8_t;
+
+#define bzero(p,s) memset(p, 0, s)
+
+#endif
+
+#if !defined(HAVE_BCRYPT_PBKDF) && !defined(HAVE_BLH_H)
+
+/* Schneier specifies a maximum key length of 56 bytes.
+ * This ensures that every key bit affects every cipher
+ * bit. However, the subkeys can hold up to 72 bytes.
+ * Warning: For normal blowfish encryption only 56 bytes
+ * of the key affect all cipherbits.
+ */
+
+#define BLF_N 16 /* Number of Subkeys */
+#define BLF_MAXKEYLEN ((BLF_N-2)*4) /* 448 bits */
+#define BLF_MAXUTILIZED ((BLF_N+2)*4) /* 576 bits */
+
+/* Blowfish context */
+typedef struct BlowfishContext {
+ u_int32_t S[4][256]; /* S-Boxes */
+ u_int32_t P[BLF_N + 2]; /* Subkeys */
+} blf_ctx;
+
+/* Raw access to customized Blowfish
+ * blf_key is just:
+ * Blowfish_initstate( state )
+ * Blowfish_expand0state( state, key, keylen )
+ */
+
+void Blowfish_encipher(blf_ctx *, u_int32_t *, u_int32_t *);
+void Blowfish_decipher(blf_ctx *, u_int32_t *, u_int32_t *);
+void Blowfish_initstate(blf_ctx *);
+void Blowfish_expand0state(blf_ctx *, const u_int8_t *, u_int16_t);
+void Blowfish_expandstate
+(blf_ctx *, const u_int8_t *, u_int16_t, const u_int8_t *, u_int16_t);
+
+/* Standard Blowfish */
+
+void blf_key(blf_ctx *, const u_int8_t *, u_int16_t);
+void blf_enc(blf_ctx *, u_int32_t *, u_int16_t);
+void blf_dec(blf_ctx *, u_int32_t *, u_int16_t);
+
+void blf_ecb_encrypt(blf_ctx *, u_int8_t *, u_int32_t);
+void blf_ecb_decrypt(blf_ctx *, u_int8_t *, u_int32_t);
+
+void blf_cbc_encrypt(blf_ctx *, u_int8_t *, u_int8_t *, u_int32_t);
+void blf_cbc_decrypt(blf_ctx *, u_int8_t *, u_int8_t *, u_int32_t);
+
+/* Converts u_int8_t to u_int32_t */
+u_int32_t Blowfish_stream2word(const u_int8_t *, u_int16_t , u_int16_t *);
+
+#endif /* !defined(HAVE_BCRYPT_PBKDF) && !defined(HAVE_BLH_H) */
+#endif /* _BLF_H */
+
diff --git a/src/sshagent/blowfish.c b/src/sshagent/blowfish.c
new file mode 100644
index 000000000..02e9ac0bd
--- /dev/null
+++ b/src/sshagent/blowfish.c
@@ -0,0 +1,696 @@
+/* $OpenBSD: blowfish.c,v 1.18 2004/11/02 17:23:26 hshoexer Exp $ */
+/*
+ * Blowfish block cipher for OpenBSD
+ * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
+ * All rights reserved.
+ *
+ * Implementation advice by David Mazieres <dm@lcs.mit.edu>.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Niels Provos.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * This code is derived from section 14.3 and the given source
+ * in section V of Applied Cryptography, second edition.
+ * Blowfish is an unpatented fast block cipher designed by
+ * Bruce Schneier.
+ */
+
+#define HAVE_BLF_H
+
+#if !defined(HAVE_BCRYPT_PBKDF) && (!defined(HAVE_BLOWFISH_INITSTATE) || \
+ !defined(HAVE_BLOWFISH_EXPAND0STATE) || !defined(HAVE_BLF_ENC))
+
+#if 0
+#include <stdio.h> /* used for debugging */
+#include <string.h>
+#endif
+
+#include <sys/types.h>
+#ifdef HAVE_BLF_H
+#include "blf.h"
+#endif
+
+#undef inline
+#ifdef __GNUC__
+#define inline __inline
+#else /* !__GNUC__ */
+#define inline
+#endif /* !__GNUC__ */
+
+/* Function for Feistel Networks */
+
+#define F(s, x) ((((s)[ (((x)>>24)&0xFF)] \
+ + (s)[0x100 + (((x)>>16)&0xFF)]) \
+ ^ (s)[0x200 + (((x)>> 8)&0xFF)]) \
+ + (s)[0x300 + ( (x) &0xFF)])
+
+#define BLFRND(s,p,i,j,n) (i ^= F(s,j) ^ (p)[n])
+
+void
+Blowfish_encipher(blf_ctx *c, u_int32_t *xl, u_int32_t *xr)
+{
+ u_int32_t Xl;
+ u_int32_t Xr;
+ u_int32_t *s = c->S[0];
+ u_int32_t *p = c->P;
+
+ Xl = *xl;
+ Xr = *xr;
+
+ Xl ^= p[0];
+ BLFRND(s, p, Xr, Xl, 1); BLFRND(s, p, Xl, Xr, 2);
+ BLFRND(s, p, Xr, Xl, 3); BLFRND(s, p, Xl, Xr, 4);
+ BLFRND(s, p, Xr, Xl, 5); BLFRND(s, p, Xl, Xr, 6);
+ BLFRND(s, p, Xr, Xl, 7); BLFRND(s, p, Xl, Xr, 8);
+ BLFRND(s, p, Xr, Xl, 9); BLFRND(s, p, Xl, Xr, 10);
+ BLFRND(s, p, Xr, Xl, 11); BLFRND(s, p, Xl, Xr, 12);
+ BLFRND(s, p, Xr, Xl, 13); BLFRND(s, p, Xl, Xr, 14);
+ BLFRND(s, p, Xr, Xl, 15); BLFRND(s, p, Xl, Xr, 16);
+
+ *xl = Xr ^ p[17];
+ *xr = Xl;
+}
+
+void
+Blowfish_decipher(blf_ctx *c, u_int32_t *xl, u_int32_t *xr)
+{
+ u_int32_t Xl;
+ u_int32_t Xr;
+ u_int32_t *s = c->S[0];
+ u_int32_t *p = c->P;
+
+ Xl = *xl;
+ Xr = *xr;
+
+ Xl ^= p[17];
+ BLFRND(s, p, Xr, Xl, 16); BLFRND(s, p, Xl, Xr, 15);
+ BLFRND(s, p, Xr, Xl, 14); BLFRND(s, p, Xl, Xr, 13);
+ BLFRND(s, p, Xr, Xl, 12); BLFRND(s, p, Xl, Xr, 11);
+ BLFRND(s, p, Xr, Xl, 10); BLFRND(s, p, Xl, Xr, 9);
+ BLFRND(s, p, Xr, Xl, 8); BLFRND(s, p, Xl, Xr, 7);
+ BLFRND(s, p, Xr, Xl, 6); BLFRND(s, p, Xl, Xr, 5);
+ BLFRND(s, p, Xr, Xl, 4); BLFRND(s, p, Xl, Xr, 3);
+ BLFRND(s, p, Xr, Xl, 2); BLFRND(s, p, Xl, Xr, 1);
+
+ *xl = Xr ^ p[0];
+ *xr = Xl;
+}
+
+void
+Blowfish_initstate(blf_ctx *c)
+{
+ /* P-box and S-box tables initialized with digits of Pi */
+
+ static const blf_ctx initstate =
+ { {
+ {
+ 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
+ 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
+ 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
+ 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
+ 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
+ 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
+ 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
+ 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
+ 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
+ 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
+ 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
+ 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
+ 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
+ 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
+ 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
+ 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
+ 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
+ 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
+ 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
+ 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
+ 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
+ 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
+ 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
+ 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
+ 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
+ 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
+ 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
+ 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
+ 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
+ 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
+ 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
+ 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
+ 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
+ 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
+ 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
+ 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
+ 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
+ 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
+ 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
+ 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
+ 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
+ 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
+ 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
+ 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
+ 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
+ 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
+ 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
+ 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
+ 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
+ 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
+ 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
+ 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
+ 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
+ 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
+ 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
+ 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
+ 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
+ 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
+ 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
+ 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
+ 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
+ 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
+ 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
+ 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a},
+ {
+ 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
+ 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
+ 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
+ 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
+ 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
+ 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
+ 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
+ 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
+ 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
+ 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
+ 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
+ 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
+ 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
+ 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
+ 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
+ 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
+ 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
+ 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
+ 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
+ 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
+ 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
+ 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
+ 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
+ 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
+ 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
+ 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
+ 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
+ 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
+ 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
+ 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
+ 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
+ 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
+ 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
+ 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
+ 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
+ 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
+ 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
+ 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
+ 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
+ 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
+ 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
+ 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
+ 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
+ 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
+ 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
+ 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
+ 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
+ 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
+ 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
+ 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
+ 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
+ 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
+ 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
+ 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
+ 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
+ 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
+ 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
+ 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
+ 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
+ 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
+ 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
+ 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
+ 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
+ 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7},
+ {
+ 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
+ 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
+ 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
+ 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
+ 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
+ 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
+ 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
+ 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
+ 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
+ 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
+ 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
+ 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
+ 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
+ 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
+ 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
+ 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
+ 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
+ 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
+ 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
+ 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
+ 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
+ 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
+ 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
+ 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
+ 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
+ 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
+ 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
+ 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
+ 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
+ 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
+ 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
+ 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
+ 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
+ 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
+ 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
+ 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
+ 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
+ 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
+ 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
+ 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
+ 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
+ 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
+ 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
+ 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
+ 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
+ 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
+ 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
+ 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
+ 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
+ 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
+ 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
+ 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
+ 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
+ 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
+ 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
+ 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
+ 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
+ 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
+ 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
+ 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
+ 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
+ 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
+ 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
+ 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0},
+ {
+ 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
+ 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
+ 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
+ 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
+ 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
+ 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
+ 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
+ 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
+ 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
+ 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
+ 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
+ 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
+ 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
+ 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
+ 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
+ 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
+ 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
+ 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
+ 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
+ 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
+ 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
+ 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
+ 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
+ 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
+ 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
+ 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
+ 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
+ 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
+ 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
+ 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
+ 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
+ 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
+ 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
+ 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
+ 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
+ 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
+ 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
+ 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
+ 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
+ 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
+ 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
+ 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
+ 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
+ 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
+ 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
+ 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
+ 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
+ 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
+ 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
+ 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
+ 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
+ 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
+ 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
+ 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
+ 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
+ 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
+ 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
+ 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
+ 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
+ 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
+ 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
+ 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
+ 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
+ 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6}
+ },
+ {
+ 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
+ 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
+ 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
+ 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
+ 0x9216d5d9, 0x8979fb1b
+ } };
+
+ *c = initstate;
+}
+
+u_int32_t
+Blowfish_stream2word(const u_int8_t *data, u_int16_t databytes,
+ u_int16_t *current)
+{
+ u_int8_t i;
+ u_int16_t j;
+ u_int32_t temp;
+
+ temp = 0x00000000;
+ j = *current;
+
+ for (i = 0; i < 4; i++, j++) {
+ if (j >= databytes)
+ j = 0;
+ temp = (temp << 8) | data[j];
+ }
+
+ *current = j;
+ return temp;
+}
+
+void
+Blowfish_expand0state(blf_ctx *c, const u_int8_t *key, u_int16_t keybytes)
+{
+ u_int16_t i;
+ u_int16_t j;
+ u_int16_t k;
+ u_int32_t temp;
+ u_int32_t datal;
+ u_int32_t datar;
+
+ j = 0;
+ for (i = 0; i < BLF_N + 2; i++) {
+ /* Extract 4 int8 to 1 int32 from keystream */
+ temp = Blowfish_stream2word(key, keybytes, &j);
+ c->P[i] = c->P[i] ^ temp;
+ }
+
+ j = 0;
+ datal = 0x00000000;
+ datar = 0x00000000;
+ for (i = 0; i < BLF_N + 2; i += 2) {
+ Blowfish_encipher(c, &datal, &datar);
+
+ c->P[i] = datal;
+ c->P[i + 1] = datar;
+ }
+
+ for (i = 0; i < 4; i++) {
+ for (k = 0; k < 256; k += 2) {
+ Blowfish_encipher(c, &datal, &datar);
+
+ c->S[i][k] = datal;
+ c->S[i][k + 1] = datar;
+ }
+ }
+}
+
+
+void
+Blowfish_expandstate(blf_ctx *c, const u_int8_t *data, u_int16_t databytes,
+ const u_int8_t *key, u_int16_t keybytes)
+{
+ u_int16_t i;
+ u_int16_t j;
+ u_int16_t k;
+ u_int32_t temp;
+ u_int32_t datal;
+ u_int32_t datar;
+
+ j = 0;
+ for (i = 0; i < BLF_N + 2; i++) {
+ /* Extract 4 int8 to 1 int32 from keystream */
+ temp = Blowfish_stream2word(key, keybytes, &j);
+ c->P[i] = c->P[i] ^ temp;
+ }
+
+ j = 0;
+ datal = 0x00000000;
+ datar = 0x00000000;
+ for (i = 0; i < BLF_N + 2; i += 2) {
+ datal ^= Blowfish_stream2word(data, databytes, &j);
+ datar ^= Blowfish_stream2word(data, databytes, &j);
+ Blowfish_encipher(c, &datal, &datar);
+
+ c->P[i] = datal;
+ c->P[i + 1] = datar;
+ }
+
+ for (i = 0; i < 4; i++) {
+ for (k = 0; k < 256; k += 2) {
+ datal ^= Blowfish_stream2word(data, databytes, &j);
+ datar ^= Blowfish_stream2word(data, databytes, &j);
+ Blowfish_encipher(c, &datal, &datar);
+
+ c->S[i][k] = datal;
+ c->S[i][k + 1] = datar;
+ }
+ }
+
+}
+
+void
+blf_key(blf_ctx *c, const u_int8_t *k, u_int16_t len)
+{
+ /* Initialize S-boxes and subkeys with Pi */
+ Blowfish_initstate(c);
+
+ /* Transform S-boxes and subkeys with key */
+ Blowfish_expand0state(c, k, len);
+}
+
+void
+blf_enc(blf_ctx *c, u_int32_t *data, u_int16_t blocks)
+{
+ u_int32_t *d;
+ u_int16_t i;
+
+ d = data;
+ for (i = 0; i < blocks; i++) {
+ Blowfish_encipher(c, d, d + 1);
+ d += 2;
+ }
+}
+
+void
+blf_dec(blf_ctx *c, u_int32_t *data, u_int16_t blocks)
+{
+ u_int32_t *d;
+ u_int16_t i;
+
+ d = data;
+ for (i = 0; i < blocks; i++) {
+ Blowfish_decipher(c, d, d + 1);
+ d += 2;
+ }
+}
+
+void
+blf_ecb_encrypt(blf_ctx *c, u_int8_t *data, u_int32_t len)
+{
+ u_int32_t l, r;
+ u_int32_t i;
+
+ for (i = 0; i < len; i += 8) {
+ l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
+ r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
+ Blowfish_encipher(c, &l, &r);
+ data[0] = l >> 24 & 0xff;
+ data[1] = l >> 16 & 0xff;
+ data[2] = l >> 8 & 0xff;
+ data[3] = l & 0xff;
+ data[4] = r >> 24 & 0xff;
+ data[5] = r >> 16 & 0xff;
+ data[6] = r >> 8 & 0xff;
+ data[7] = r & 0xff;
+ data += 8;
+ }
+}
+
+void
+blf_ecb_decrypt(blf_ctx *c, u_int8_t *data, u_int32_t len)
+{
+ u_int32_t l, r;
+ u_int32_t i;
+
+ for (i = 0; i < len; i += 8) {
+ l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
+ r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
+ Blowfish_decipher(c, &l, &r);
+ data[0] = l >> 24 & 0xff;
+ data[1] = l >> 16 & 0xff;
+ data[2] = l >> 8 & 0xff;
+ data[3] = l & 0xff;
+ data[4] = r >> 24 & 0xff;
+ data[5] = r >> 16 & 0xff;
+ data[6] = r >> 8 & 0xff;
+ data[7] = r & 0xff;
+ data += 8;
+ }
+}
+
+void
+blf_cbc_encrypt(blf_ctx *c, u_int8_t *iv, u_int8_t *data, u_int32_t len)
+{
+ u_int32_t l, r;
+ u_int32_t i, j;
+
+ for (i = 0; i < len; i += 8) {
+ for (j = 0; j < 8; j++)
+ data[j] ^= iv[j];
+ l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
+ r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
+ Blowfish_encipher(c, &l, &r);
+ data[0] = l >> 24 & 0xff;
+ data[1] = l >> 16 & 0xff;
+ data[2] = l >> 8 & 0xff;
+ data[3] = l & 0xff;
+ data[4] = r >> 24 & 0xff;
+ data[5] = r >> 16 & 0xff;
+ data[6] = r >> 8 & 0xff;
+ data[7] = r & 0xff;
+ iv = data;
+ data += 8;
+ }
+}
+
+void
+blf_cbc_decrypt(blf_ctx *c, u_int8_t *iva, u_int8_t *data, u_int32_t len)
+{
+ u_int32_t l, r;
+ u_int8_t *iv;
+ u_int32_t i, j;
+
+ iv = data + len - 16;
+ data = data + len - 8;
+ for (i = len - 8; i >= 8; i -= 8) {
+ l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
+ r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
+ Blowfish_decipher(c, &l, &r);
+ data[0] = l >> 24 & 0xff;
+ data[1] = l >> 16 & 0xff;
+ data[2] = l >> 8 & 0xff;
+ data[3] = l & 0xff;
+ data[4] = r >> 24 & 0xff;
+ data[5] = r >> 16 & 0xff;
+ data[6] = r >> 8 & 0xff;
+ data[7] = r & 0xff;
+ for (j = 0; j < 8; j++)
+ data[j] ^= iv[j];
+ iv -= 8;
+ data -= 8;
+ }
+ l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
+ r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
+ Blowfish_decipher(c, &l, &r);
+ data[0] = l >> 24 & 0xff;
+ data[1] = l >> 16 & 0xff;
+ data[2] = l >> 8 & 0xff;
+ data[3] = l & 0xff;
+ data[4] = r >> 24 & 0xff;
+ data[5] = r >> 16 & 0xff;
+ data[6] = r >> 8 & 0xff;
+ data[7] = r & 0xff;
+ for (j = 0; j < 8; j++)
+ data[j] ^= iva[j];
+}
+
+#if 0
+void
+report(u_int32_t data[], u_int16_t len)
+{
+ u_int16_t i;
+ for (i = 0; i < len; i += 2)
+ printf("Block %0hd: %08lx %08lx.\n",
+ i / 2, data[i], data[i + 1]);
+}
+void
+main(void)
+{
+
+ blf_ctx c;
+ char key[] = "AAAAA";
+ char key2[] = "abcdefghijklmnopqrstuvwxyz";
+
+ u_int32_t data[10];
+ u_int32_t data2[] =
+ {0x424c4f57l, 0x46495348l};
+
+ u_int16_t i;
+
+ /* First test */
+ for (i = 0; i < 10; i++)
+ data[i] = i;
+
+ blf_key(&c, (u_int8_t *) key, 5);
+ blf_enc(&c, data, 5);
+ blf_dec(&c, data, 1);
+ blf_dec(&c, data + 2, 4);
+ printf("Should read as 0 - 9.\n");
+ report(data, 10);
+
+ /* Second test */
+ blf_key(&c, (u_int8_t *) key2, strlen(key2));
+ blf_enc(&c, data2, 1);
+ printf("\nShould read as: 0x324ed0fe 0xf413a203.\n");
+ report(data2, 2);
+ blf_dec(&c, data2, 1);
+ report(data2, 2);
+}
+#endif
+
+#endif /* !defined(HAVE_BCRYPT_PBKDF) && (!defined(HAVE_BLOWFISH_INITSTATE) || \
+ !defined(HAVE_BLOWFISH_EXPAND0STATE) || !defined(HAVE_BLF_ENC)) */
+
diff --git a/src/streams/HashedBlockStream.cpp b/src/streams/HashedBlockStream.cpp
index ec59769aa..dd323a6d5 100644
--- a/src/streams/HashedBlockStream.cpp
+++ b/src/streams/HashedBlockStream.cpp
@@ -130,7 +130,7 @@ bool HashedBlockStream::readHashedBlock()
{
bool ok;
- quint32 index = Endian::readUInt32(m_baseDevice, ByteOrder, &ok);
+ quint32 index = Endian::readSizedInt<quint32>(m_baseDevice, ByteOrder, &ok);
if (!ok || index != m_blockIndex) {
m_error = true;
setErrorString("Invalid block index.");
@@ -144,7 +144,7 @@ bool HashedBlockStream::readHashedBlock()
return false;
}
- m_blockSize = Endian::readInt32(m_baseDevice, ByteOrder, &ok);
+ m_blockSize = Endian::readSizedInt<qint32>(m_baseDevice, ByteOrder, &ok);
if (!ok || m_blockSize < 0) {
m_error = true;
setErrorString("Invalid block size.");
@@ -217,7 +217,7 @@ qint64 HashedBlockStream::writeData(const char* data, qint64 maxSize)
bool HashedBlockStream::writeHashedBlock()
{
- if (!Endian::writeInt32(m_blockIndex, m_baseDevice, ByteOrder)) {
+ if (!Endian::writeSizedInt<qint32>(m_blockIndex, m_baseDevice, ByteOrder)) {
m_error = true;
setErrorString(m_baseDevice->errorString());
return false;
@@ -238,7 +238,7 @@ bool HashedBlockStream::writeHashedBlock()
return false;
}
- if (!Endian::writeInt32(m_buffer.size(), m_baseDevice, ByteOrder)) {
+ if (!Endian::writeSizedInt<qint32>(m_buffer.size(), m_baseDevice, ByteOrder)) {
m_error = true;
setErrorString(m_baseDevice->errorString());
return false;
@@ -256,3 +256,7 @@ bool HashedBlockStream::writeHashedBlock()
return true;
}
+
+bool HashedBlockStream::atEnd() const {
+ return m_eof;
+}
diff --git a/src/streams/HashedBlockStream.h b/src/streams/HashedBlockStream.h
index 93e4af59c..60a15a8c9 100644
--- a/src/streams/HashedBlockStream.h
+++ b/src/streams/HashedBlockStream.h
@@ -34,6 +34,8 @@ public:
bool reset() override;
void close() override;
+ bool atEnd() const override;
+
protected:
qint64 readData(char* data, qint64 maxSize) override;
qint64 writeData(const char* data, qint64 maxSize) override;
diff --git a/src/streams/HmacBlockStream.cpp b/src/streams/HmacBlockStream.cpp
new file mode 100644
index 000000000..780db98c1
--- /dev/null
+++ b/src/streams/HmacBlockStream.cpp
@@ -0,0 +1,261 @@
+/*
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 or (at your option)
+* version 3 of the License.
+*
+* 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "HmacBlockStream.h"
+
+#include "core/Endian.h"
+#include "crypto/CryptoHash.h"
+
+const QSysInfo::Endian HmacBlockStream::ByteOrder = QSysInfo::LittleEndian;
+
+HmacBlockStream::HmacBlockStream(QIODevice* baseDevice, QByteArray key)
+ : LayeredStream(baseDevice)
+ , m_blockSize(1024 * 1024)
+ , m_key(key)
+{
+ init();
+}
+
+HmacBlockStream::HmacBlockStream(QIODevice* baseDevice, QByteArray key, qint32 blockSize)
+ : LayeredStream(baseDevice)
+ , m_blockSize(blockSize)
+ , m_key(key)
+{
+ init();
+}
+
+HmacBlockStream::~HmacBlockStream()
+{
+ close();
+}
+
+void HmacBlockStream::init()
+{
+ m_buffer.clear();
+ m_bufferPos = 0;
+ m_blockIndex = 0;
+ m_eof = false;
+ m_error = false;
+}
+
+bool HmacBlockStream::reset()
+{
+ // Write final block(s) only if device is writable and we haven't
+ // already written a final block.
+ if (isWritable() && (!m_buffer.isEmpty() || m_blockIndex != 0)) {
+ if (!m_buffer.isEmpty() && !writeHashedBlock()) {
+ return false;
+ }
+
+ // write empty final block
+ if (!writeHashedBlock()) {
+ return false;
+ }
+ }
+
+ init();
+
+ return true;
+}
+
+void HmacBlockStream::close()
+{
+ // Write final block(s) only if device is writable and we haven't
+ // already written a final block.
+ if (isWritable() && (!m_buffer.isEmpty() || m_blockIndex != 0)) {
+ if (!m_buffer.isEmpty()) {
+ writeHashedBlock();
+ }
+
+ // write empty final block
+ writeHashedBlock();
+ }
+
+ LayeredStream::close();
+}
+
+qint64 HmacBlockStream::readData(char* data, qint64 maxSize)
+{
+ if (m_error) {
+ return -1;
+ } else if (m_eof) {
+ return 0;
+ }
+
+ qint64 bytesRemaining = maxSize;
+ qint64 offset = 0;
+
+ while (bytesRemaining > 0) {
+ if (m_bufferPos == m_buffer.size()) {
+ if (!readHashedBlock()) {
+ if (m_error) {
+ return -1;
+ }
+ return maxSize - bytesRemaining;
+ }
+ }
+
+ qint64 bytesToCopy = qMin(bytesRemaining, static_cast<qint64>(m_buffer.size() - m_bufferPos));
+
+ memcpy(data + offset, m_buffer.constData() + m_bufferPos, static_cast<size_t>(bytesToCopy));
+
+ offset += bytesToCopy;
+ m_bufferPos += bytesToCopy;
+ bytesRemaining -= bytesToCopy;
+ }
+
+ return maxSize;
+}
+
+bool HmacBlockStream::readHashedBlock()
+{
+ if (m_eof) {
+ return false;
+ }
+ QByteArray hmac = m_baseDevice->read(32);
+ if (hmac.size() != 32) {
+ m_error = true;
+ setErrorString("Invalid HMAC size.");
+ return false;
+ }
+
+ QByteArray blockSizeBytes = m_baseDevice->read(4);
+ if (blockSizeBytes.size() != 4) {
+ m_error = true;
+ setErrorString("Invalid block size size.");
+ return false;
+ }
+ auto blockSize = Endian::bytesToSizedInt<qint32>(blockSizeBytes, ByteOrder);
+ if (blockSize < 0) {
+ m_error = true;
+ setErrorString("Invalid block size.");
+ return false;
+ }
+
+ m_buffer = m_baseDevice->read(blockSize);
+ if (m_buffer.size() != blockSize) {
+ m_error = true;
+ setErrorString("Block too short.");
+ return false;
+ }
+
+ CryptoHash hasher(CryptoHash::Sha256, true);
+ hasher.setKey(getCurrentHmacKey());
+ hasher.addData(Endian::sizedIntToBytes<quint64>(m_blockIndex, ByteOrder));
+ hasher.addData(blockSizeBytes);
+ hasher.addData(m_buffer);
+
+ if (hmac != hasher.result()) {
+ m_error = true;
+ setErrorString("Mismatch between hash and data.");
+ return false;
+ }
+
+ m_bufferPos = 0;
+ ++m_blockIndex;
+
+ if (blockSize == 0) {
+ m_eof = true;
+ return false;
+ }
+
+ return true;
+}
+
+qint64 HmacBlockStream::writeData(const char* data, qint64 maxSize)
+{
+ Q_ASSERT(maxSize >= 0);
+
+ if (m_error) {
+ return 0;
+ }
+
+ qint64 bytesRemaining = maxSize;
+ qint64 offset = 0;
+
+ while (bytesRemaining > 0) {
+ qint64 bytesToCopy = qMin(bytesRemaining, static_cast<qint64>(m_blockSize - m_buffer.size()));
+
+ m_buffer.append(data + offset, static_cast<int>(bytesToCopy));
+
+ offset += bytesToCopy;
+ bytesRemaining -= bytesToCopy;
+
+ if (m_buffer.size() == m_blockSize && !writeHashedBlock()) {
+ if (m_error) {
+ return -1;
+ }
+ return maxSize - bytesRemaining;
+ }
+ }
+
+ return maxSize;
+}
+
+bool HmacBlockStream::writeHashedBlock()
+{
+ CryptoHash hasher(CryptoHash::Sha256, true);
+ hasher.setKey(getCurrentHmacKey());
+ hasher.addData(Endian::sizedIntToBytes<quint64>(m_blockIndex, ByteOrder));
+ hasher.addData(Endian::sizedIntToBytes<qint32>(m_buffer.size(), ByteOrder));
+ hasher.addData(m_buffer);
+ QByteArray hash = hasher.result();
+
+ if (m_baseDevice->write(hash) != hash.size()) {
+ m_error = true;
+ setErrorString(m_baseDevice->errorString());
+ return false;
+ }
+
+ if (!Endian::writeSizedInt<qint32>(m_buffer.size(), m_baseDevice, ByteOrder)) {
+ m_error = true;
+ setErrorString(m_baseDevice->errorString());
+ return false;
+ }
+
+ if (!m_buffer.isEmpty()) {
+ if (m_baseDevice->write(m_buffer) != m_buffer.size()) {
+ m_error = true;
+ setErrorString(m_baseDevice->errorString());
+ return false;
+ }
+
+ m_buffer.clear();
+ }
+ ++m_blockIndex;
+ return true;
+}
+
+QByteArray HmacBlockStream::getCurrentHmacKey() const
+{
+ return getHmacKey(m_blockIndex, m_key);
+}
+
+QByteArray HmacBlockStream::getHmacKey(quint64 blockIndex, QByteArray key)
+{
+ Q_ASSERT(key.size() == 64);
+ QByteArray indexBytes = Endian::sizedIntToBytes<quint64>(blockIndex, ByteOrder);
+ CryptoHash hasher(CryptoHash::Sha512);
+ hasher.addData(indexBytes);
+ hasher.addData(key);
+ return hasher.result();
+}
+
+bool HmacBlockStream::atEnd() const
+{
+ return m_eof;
+}
diff --git a/src/streams/HmacBlockStream.h b/src/streams/HmacBlockStream.h
new file mode 100644
index 000000000..592cf844c
--- /dev/null
+++ b/src/streams/HmacBlockStream.h
@@ -0,0 +1,61 @@
+/*
+* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 or (at your option)
+* version 3 of the License.
+*
+* 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef KEEPASSX_HMACBLOCKSTREAM_H
+#define KEEPASSX_HMACBLOCKSTREAM_H
+
+#include <QSysInfo>
+
+#include "streams/LayeredStream.h"
+
+class HmacBlockStream: public LayeredStream
+{
+Q_OBJECT
+
+public:
+ explicit HmacBlockStream(QIODevice* baseDevice, QByteArray key);
+ HmacBlockStream(QIODevice* baseDevice, QByteArray key, qint32 blockSize);
+ ~HmacBlockStream();
+
+ bool reset() override;
+ void close() override;
+
+ static QByteArray getHmacKey(quint64 blockIndex, QByteArray key);
+
+ bool atEnd() const override;
+
+protected:
+ qint64 readData(char* data, qint64 maxSize) override;
+ qint64 writeData(const char* data, qint64 maxSize) override;
+
+private:
+ void init();
+ bool readHashedBlock();
+ bool writeHashedBlock();
+ QByteArray getCurrentHmacKey() const;
+
+ static const QSysInfo::Endian ByteOrder;
+ qint32 m_blockSize;
+ QByteArray m_buffer;
+ QByteArray m_key;
+ int m_bufferPos;
+ quint64 m_blockIndex;
+ bool m_eof;
+ bool m_error;
+};
+
+#endif // KEEPASSX_HMACBLOCKSTREAM_H
diff --git a/src/streams/SymmetricCipherStream.cpp b/src/streams/SymmetricCipherStream.cpp
index 643aa0339..78476c618 100644
--- a/src/streams/SymmetricCipherStream.cpp
+++ b/src/streams/SymmetricCipherStream.cpp
@@ -24,7 +24,7 @@ SymmetricCipherStream::SymmetricCipherStream(QIODevice* baseDevice, SymmetricCip
, m_bufferPos(0)
, m_bufferFilling(false)
, m_error(false)
- , m_isInitalized(false)
+ , m_isInitialized(false)
, m_dataWritten(false)
{
}
@@ -36,12 +36,12 @@ SymmetricCipherStream::~SymmetricCipherStream()
bool SymmetricCipherStream::init(const QByteArray& key, const QByteArray& iv)
{
- m_isInitalized = m_cipher->init(key, iv);
- if (!m_isInitalized) {
+ m_isInitialized = m_cipher->init(key, iv);
+ if (!m_isInitialized) {
setErrorString(m_cipher->errorString());
}
-
- return m_isInitalized;
+ m_streamCipher = m_cipher->blockSize() == 1;
+ return m_isInitialized;
}
void SymmetricCipherStream::resetInternalState()
@@ -56,11 +56,8 @@ void SymmetricCipherStream::resetInternalState()
bool SymmetricCipherStream::open(QIODevice::OpenMode mode)
{
- if (!m_isInitalized) {
- return false;
- }
+ return m_isInitialized && LayeredStream::open(mode);
- return LayeredStream::open(mode);
}
bool SymmetricCipherStream::reset()
@@ -127,11 +124,11 @@ bool SymmetricCipherStream::readBlock()
QByteArray newData;
if (m_bufferFilling) {
- newData.resize(m_cipher->blockSize() - m_buffer.size());
+ newData.resize(blockSize() - m_buffer.size());
}
else {
m_buffer.clear();
- newData.resize(m_cipher->blockSize());
+ newData.resize(blockSize());
}
int readResult = m_baseDevice->read(newData.data(), newData.size());
@@ -140,12 +137,11 @@ bool SymmetricCipherStream::readBlock()
m_error = true;
setErrorString(m_baseDevice->errorString());
return false;
- }
- else {
+ } else {
m_buffer.append(newData.left(readResult));
}
- if (m_buffer.size() != m_cipher->blockSize()) {
+ if (!m_streamCipher && m_buffer.size() != blockSize()) {
m_bufferFilling = true;
return false;
}
@@ -159,26 +155,28 @@ bool SymmetricCipherStream::readBlock()
m_bufferFilling = false;
if (m_baseDevice->atEnd()) {
- // PKCS7 padding
- quint8 padLength = m_buffer.at(m_buffer.size() - 1);
-
- if (padLength == m_cipher->blockSize()) {
- Q_ASSERT(m_buffer == QByteArray(m_cipher->blockSize(), m_cipher->blockSize()));
- // full block with just padding: discard
- m_buffer.clear();
- return false;
- }
- else if (padLength > m_cipher->blockSize()) {
- // invalid padding
- m_error = true;
- setErrorString("Invalid padding.");
- return false;
- }
- else {
- Q_ASSERT(m_buffer.right(padLength) == QByteArray(padLength, padLength));
- // resize buffer to strip padding
- m_buffer.resize(m_cipher->blockSize() - padLength);
- return true;
+ if (!m_streamCipher) {
+ // PKCS7 padding
+ quint8 padLength = m_buffer.at(m_buffer.size() - 1);
+
+ if (padLength == blockSize()) {
+ Q_ASSERT(m_buffer == QByteArray(blockSize(), blockSize()));
+ // full block with just padding: discard
+ m_buffer.clear();
+ return false;
+ } else if (padLength > blockSize()) {
+ // invalid padding
+ m_error = true;
+ setErrorString("Invalid padding.");
+ return false;
+ } else {
+ Q_ASSERT(m_buffer.right(padLength) == QByteArray(padLength, padLength));
+ // resize buffer to strip padding
+ m_buffer.resize(blockSize() - padLength);
+ return true;
+ }
+ } else {
+ return m_buffer.size() > 0;
}
}
else {
@@ -200,14 +198,14 @@ qint64 SymmetricCipherStream::writeData(const char* data, qint64 maxSize)
qint64 offset = 0;
while (bytesRemaining > 0) {
- int bytesToCopy = qMin(bytesRemaining, static_cast<qint64>(m_cipher->blockSize() - m_buffer.size()));
+ int bytesToCopy = qMin(bytesRemaining, static_cast<qint64>(blockSize() - m_buffer.size()));
m_buffer.append(data + offset, bytesToCopy);
offset += bytesToCopy;
bytesRemaining -= bytesToCopy;
- if (m_buffer.size() == m_cipher->blockSize()) {
+ if (m_buffer.size() == blockSize()) {
if (!writeBlock(false)) {
if (m_error) {
return -1;
@@ -224,11 +222,11 @@ qint64 SymmetricCipherStream::writeData(const char* data, qint64 maxSize)
bool SymmetricCipherStream::writeBlock(bool lastBlock)
{
- Q_ASSERT(lastBlock || (m_buffer.size() == m_cipher->blockSize()));
+ Q_ASSERT(m_streamCipher || lastBlock || (m_buffer.size() == blockSize()));
- if (lastBlock) {
+ if (lastBlock && !m_streamCipher) {
// PKCS7 padding
- int padLen = m_cipher->blockSize() - m_buffer.size();
+ int padLen = blockSize() - m_buffer.size();
for (int i = 0; i < padLen; i++) {
m_buffer.append(static_cast<char>(padLen));
}
@@ -250,3 +248,10 @@ bool SymmetricCipherStream::writeBlock(bool lastBlock)
return true;
}
}
+
+int SymmetricCipherStream::blockSize() const {
+ if (m_streamCipher) {
+ return 1024;
+ }
+ return m_cipher->blockSize();
+}
diff --git a/src/streams/SymmetricCipherStream.h b/src/streams/SymmetricCipherStream.h
index b6228e1b8..b68dba01f 100644
--- a/src/streams/SymmetricCipherStream.h
+++ b/src/streams/SymmetricCipherStream.h
@@ -45,14 +45,16 @@ private:
void resetInternalState();
bool readBlock();
bool writeBlock(bool lastBlock);
+ int blockSize() const;
const QScopedPointer<SymmetricCipher> m_cipher;
QByteArray m_buffer;
int m_bufferPos;
bool m_bufferFilling;
bool m_error;
- bool m_isInitalized;
+ bool m_isInitialized;
bool m_dataWritten;
+ bool m_streamCipher;
};
#endif // KEEPASSX_SYMMETRICCIPHERSTREAM_H
diff --git a/src/totp/totp.cpp b/src/totp/totp.cpp
index 7a584def2..f102335aa 100644
--- a/src/totp/totp.cpp
+++ b/src/totp/totp.cpp
@@ -28,14 +28,47 @@
#include <QtEndian>
#include <cmath>
-const quint8 QTotp::defaultStep = 30;
-const quint8 QTotp::defaultDigits = 6;
+const quint8 Totp::defaultStep = 30;
+const quint8 Totp::defaultDigits = 6;
-QTotp::QTotp()
+/**
+ * Custom encoder types. Each should be unique and >= 128 and < 255
+ * Values have no meaning outside of keepassxc
+ */
+/**
+ * Encoder for Steam Guard TOTP
+ */
+const quint8 Totp::ENCODER_STEAM = 254;
+
+const Totp::Encoder Totp::defaultEncoder = { "", "", "0123456789", 0, 0, false };
+const QMap<quint8, Totp::Encoder> Totp::encoders{
+ { Totp::ENCODER_STEAM, { "steam", "S", "23456789BCDFGHJKMNPQRTVWXY", 5, 30, true } },
+};
+
+/**
+ * These map the second field of the "TOTP Settings" field to our internal encoder number
+ * that overloads the digits field. Make sure that the key matches the shortName value
+ * in the corresponding Encoder
+ * NOTE: when updating this map, a corresponding edit to the settings regex must be made
+ * in Entry::totpSeed()
+ */
+const QMap<QString, quint8> Totp::shortNameToEncoder{
+ { "S", Totp::ENCODER_STEAM },
+};
+/**
+ * These map the "encoder=" URL parameter of the "otp" field to our internal encoder number
+ * that overloads the digits field. Make sure that the key matches the name value
+ * in the corresponding Encoder
+ */
+const QMap<QString, quint8> Totp::nameToEncoder{
+ { "steam", Totp::ENCODER_STEAM },
+};
+
+Totp::Totp()
{
}
-QString QTotp::parseOtpString(QString key, quint8& digits, quint8& step)
+QString Totp::parseOtpString(QString key, quint8& digits, quint8& step)
{
QUrl url(key);
@@ -57,7 +90,10 @@ QString QTotp::parseOtpString(QString key, quint8& digits, quint8& step)
if (q_step > 0 && q_step <= 60) {
step = q_step;
}
-
+ QString encName = query.queryItemValue("encoder");
+ if (!encName.isEmpty() && nameToEncoder.contains(encName)) {
+ digits = nameToEncoder[encName];
+ }
} else {
// Compatibility with "KeeOtp" plugin string format
QRegExp rx("key=(.+)", Qt::CaseInsensitive, QRegExp::RegExp);
@@ -92,7 +128,7 @@ QString QTotp::parseOtpString(QString key, quint8& digits, quint8& step)
return seed;
}
-QString QTotp::generateTotp(const QByteArray key,
+QString Totp::generateTotp(const QByteArray key,
quint64 time,
const quint8 numDigits = defaultDigits,
const quint8 step = defaultStep)
@@ -119,20 +155,34 @@ QString QTotp::generateTotp(const QByteArray key,
| (hmac[offset + 3] & 0xff);
// clang-format on
- quint32 digitsPower = pow(10, numDigits);
+ const Encoder& encoder = encoders.value(numDigits, defaultEncoder);
+ // if encoder.digits is 0, we need to use the passed-in number of digits (default encoder)
+ quint8 digits = encoder.digits == 0 ? numDigits : encoder.digits;
+ int direction = -1;
+ int startpos = digits - 1;
+ if (encoder.reverse) {
+ direction = 1;
+ startpos = 0;
+ }
+ quint32 digitsPower = pow(encoder.alphabet.size(), digits);
quint64 password = binary % digitsPower;
- return QString("%1").arg(password, numDigits, 10, QChar('0'));
+ QString retval(int(digits), encoder.alphabet[0]);
+ for (quint8 pos = startpos; password > 0; pos += direction) {
+ retval[pos] = encoder.alphabet[int(password % encoder.alphabet.size())];
+ password /= encoder.alphabet.size();
+ }
+ return retval;
}
// See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format
-QUrl QTotp::generateOtpString(const QString& secret,
+QUrl Totp::generateOtpString(const QString& secret,
const QString& type,
const QString& issuer,
const QString& username,
const QString& algorithm,
- const quint8& digits,
- const quint8& step)
+ quint8 digits,
+ quint8 step)
{
QUrl keyUri;
keyUri.setScheme("otpauth");
diff --git a/src/totp/totp.h b/src/totp/totp.h
index d5d8aa679..7d4c78c1d 100644
--- a/src/totp/totp.h
+++ b/src/totp/totp.h
@@ -20,13 +20,15 @@
#define QTOTP_H
#include <QtCore/qglobal.h>
+#include <QString>
+#include <QMap>
class QUrl;
-class QTotp
+class Totp
{
public:
- QTotp();
+ Totp();
static QString parseOtpString(QString rawSecret, quint8& digits, quint8& step);
static QString generateTotp(const QByteArray key, quint64 time, const quint8 numDigits, const quint8 step);
static QUrl generateOtpString(const QString& secret,
@@ -34,10 +36,25 @@ public:
const QString& issuer,
const QString& username,
const QString& algorithm,
- const quint8& digits,
- const quint8& step);
+ quint8 digits,
+ quint8 step);
static const quint8 defaultStep;
static const quint8 defaultDigits;
+ struct Encoder
+ {
+ QString name;
+ QString shortName;
+ QString alphabet;
+ quint8 digits;
+ quint8 step;
+ bool reverse;
+ };
+ static const Encoder defaultEncoder;
+ // custom encoder values that overload the digits field
+ static const quint8 ENCODER_STEAM;
+ static const QMap<quint8, Encoder> encoders;
+ static const QMap<QString, quint8> shortNameToEncoder;
+ static const QMap<QString, quint8> nameToEncoder;
};
#endif // QTOTP_H
diff --git a/src/zxcvbn/dict-src.h b/src/zxcvbn/dict-src.h
index 3f890e504..495cc7843 100644
--- a/src/zxcvbn/dict-src.h
+++ b/src/zxcvbn/dict-src.h
@@ -1,8 +1,3 @@
-/*
-This file is autogenerated by dictgen from zxcvbn-c
-For more info visit: https://github.com/tsyrogit/zxcvbn-c
-*/
-
#define ROOT_NODE_LOC 0
#define BITS_CHILD_PATT_INDEX 14
#define BITS_CHILD_MAP_INDEX 18
@@ -10,12 +5,12 @@ For more info visit: https://github.com/tsyrogit/zxcvbn-c
#define SHIFT_WORD_ENDING_BIT (SHIFT_CHILD_MAP_INDEX + BITS_CHILD_MAP_INDEX)
static const unsigned int DictNodes[84251] =
{
- 0, 7766135, 15548619, 21217533, 22479111, 23937299, 24428822, 57672227, 104104744, 109380421, 120275860, 130630613, 145753146, 160777371, 174671103,
- 187303246, 197363087, 214894070, 222512664, 230868551, 252724930, 265094915, 270567208, 287983495, 289261455, 302696413, 309741569, 314542111, 325453919, 337086629,
- 337528998, 350210288, 356567314, 362219827, 378390933, 383879608, 402590246, 402754087, 419121039, 439175935, 454331212, 454724430, 463784837, 470076330, 476122062,
- 483478513, 488459276, 502090831, 515935376, 517295254, 524209343, 530140382, 534039794, 544066853, 556567908, 562679169, 572100016, 581832155, 582274524, 595349025,
- 602656335, 619531939, 628657875, 628821716, 642174746, 650645311, 658198366, 666636156, 688394177, 698748913, 706465810, 706695187, 717361230, 725389431, 741560511,
- 744786085, 753225968, 767299892, 785011079, 793399719, 806801884, 819991062, 838832740, 853332628, 873321185, 884036373, 902075247, 903041906, 924881868, 936219636,
+ 0, 7766135, 15548619, 21217533, 22479111, 23937299, 24428822, 57672227, 104104744, 109380421, 120275860, 130630613, 145753146, 160777371, 174671103,
+ 187303246, 197363087, 214894070, 222512664, 230868551, 252724930, 265094915, 270567208, 287983495, 289261455, 302696413, 309741569, 314542111, 325453919, 337086629,
+ 337528998, 350210288, 356567314, 362219827, 378390933, 383879608, 402590246, 402754087, 419121039, 439175935, 454331212, 454724430, 463784837, 470076330, 476122062,
+ 483478513, 488459276, 502090831, 515935376, 517295254, 524209343, 530140382, 534039794, 544066853, 556567908, 562679169, 572100016, 581832155, 582274524, 595349025,
+ 602656335, 619531939, 628657875, 628821716, 642174746, 650645311, 658198366, 666636156, 688394177, 698748913, 706465810, 706695187, 717361230, 725389431, 741560511,
+ 744786085, 753225968, 767299892, 785011079, 793399719, 806801884, 819991062, 838832740, 853332628, 873321185, 884036373, 902075247, 903041906, 924881868, 936219636,
941673551, 956273727, 961320018, 973952133, 978064534, 988091559, 989222059, 1008178430,1016337702,1023169859,1039029641,1049990584,1055610321,1066063354,1066292731,
1071273491,1084053062,1095620212,1096503830,1100584585,1108935783,1120130786,1141184310,1154537325,1163663255,1184733172,1184995317,1192990746,1198479410,1202247747,
1209505893,1226692782,1227888820,1243158773,1249220875,1268193637,1279007125,1288327105,1298254229,1312510612,1319279157,1343902230,1356602064,1361713886,1375771416,
@@ -30,2092 +25,2092 @@ static const unsigned int DictNodes[84251] =
2540737172,2558537173,2558815702,2562108900,2577362474,2577870379,2589912670,2599333502,2603314831,2609704615,2619043543,2623162773,2623680234,2638556952,2648409657,
2655448915,2662575977,2663427947,2684359316,2703044605,2705174159,2719789127,2732300645,2751033548,2751295693,2759127272,2763321592,2777116972,2792223072,2800251267,
2831446496,2832019937,2838400545,2854498848,2860321008,2869080665,2885595803,2896556742,2897761451,2902749634,2918036242,2934600520,2937697113,2943005549,2947740545,
- 2953573269,2963927998,2986259482,2987155375,2993385447,2999202894,3007231086,3008074388,3016897686,3022550193,786433, 802818, 819203, 835588, 868357,
- 884742, 901127, 8, 917510, 933893, 901129, 950282, 966658, 983051, 999436, 901133, 1015822, 1048591, 1064962, 1081350,
- 1097734, 1114117, 901136, 1130505, 1146897, 1163282, 1179657, 1196049, 1212418, 901139, 1228820, 1753109, 1769494, 901132, 1785879,
- 901126, 1802264, 1900569, 1785858, 1933333, 1949708, 901146, 1966107, 1998850, 2015260, 2031618, 901149, 901136, 2048030, 2080794,
- 2097183, 2113555, 2129922, 901130, 2146336, 901151, 2179105, 901148, 2228258, 2342947, 901156, 901157, 2408469, 1769510, 2424871,
- 2457640, 2474005, 2490399, 2506793, 2523176, 901158, 901141, 901162, 2539563, 2359315, 2326568, 2572319, 2588693, 2605087, 2621446,
- 901142, 2637868, 2719784, 1769478, 2736159, 2752524, 901161, 2342933, 2768898, 2785286, 2801670, 1212447, 2818059, 2834477, 2129936,
- 2867246, 2359322, 2916354, 2932768, 2965551, 2408476, 2998320, 2326534, 3047466, 2588710, 3063857, 3145778, 3178527, 2342950, 1933334,
- 3194931, 3227700, 3260469, 3293238, 3325964, 3342365, 3309584, 901131, 2523174, 3358775, 3424312, 3457036, 3473434, 2523138, 1769529,
- 3489850, 3538973, 2129932, 3555387, 2031626, 3588155, 3620924, 3702845, 2342927, 3751998, 3801151, 3833877, 3850256, 2342938, 3866688,
- 2113547, 3948554, 3964949, 3981324, 3997722, 4014090, 4030466, 4046869, 4063263, 4079632, 3473418, 4096065, 2129942, 4145218, 4177932,
- 1933327, 2261002, 4194371, 4276292, 3244101, 4325446, 2326550, 4407362, 4440135, 4554824, 4620361, 1785862, 4685898, 4751372, 2129946,
- 4767819, 4833301, 4849740, 4882458, 4898818, 4915210, 4931626, 4947990, 4964364, 4980757, 901122, 4997197, 5029966, 5095474, 5128271,
- 5259305, 5275679, 5292051, 3473439, 5308496, 5341265, 2129932, 5373983, 5390378, 4079647, 5406802, 5439494, 5455893, 5472258, 5488650,
- 5505053, 4161567, 5521491, 5603412, 1769491, 2408463, 5603330, 5636181, 5701663, 5718037, 5734431, 3473427, 5750815, 5603338, 5767254,
- 2801702, 5799976, 5177356, 5816407, 5865560, 4341802, 5898329, 5947482, 1769513, 6111254, 6127632, 2523152, 6144091, 6176860, 2326540,
- 6209629, 1933369, 2408490, 3129346, 6258782, 2621461, 5275660, 6340610, 6357087, 6406173, 6422530, 2031642, 6439008, 1769509, 3309570,
- 6553697, 3211362, 6619235, 1769484, 6373476, 2195557, 6651947, 6684701, 4030495, 6701158, 1949698, 1933341, 6733836, 2342938, 6750311,
- 6832232, 6881385, 6914154, 6373483, 1769493, 6996076, 2195565, 7028846, 2031654, 7061558, 7094311, 7127080, 7143531, 7176202, 3129384,
- 7192687, 7225456, 7241840, 7258225, 7307280, 901160, 7323677, 7340044, 7356426, 7372816, 7389205, 1785868, 7405682, 1785971, 7520285,
- 7536682, 7553140, 7569419, 7585807, 7602197, 901125, 7618676, 7634951, 2752538, 7651445, 7684214, 7634955, 7634975, 7716886, 7733314,
- 8093719, 8110200, 8126487, 8142969, 8175639, 8159255, 901143, 8192122, 8355963, 8503420, 8585341, 8749182, 8847487, 8896640, 8929303,
- 2195585, 8945794, 8962178, 901250, 8978434, 4980738, 8994947, 901251, 9011332, 9027716, 9044009, 9060393, 4980777, 9076869, 9109638,
- 934023, 9126018, 9142290, 9158674, 901138, 9175176, 901257, 9240714, 8175750, 9175179, 8175731, 8175746, 9273484, 9355287, 8388749,
- 9371763, 9207943, 3555344, 9388174, 7389195, 9175183, 9420944, 9453586, 9469961, 8159369, 9486479, 9519122, 9535620, 901252, 9551884,
- 5177401, 9568401, 9699474, 9830547, 9896066, 9912468, 2195605, 10027158, 10027158, 8601751, 10190871, 10207381, 10240149, 10272905, 10289280,
- 10322054, 10338327, 10354803, 10371095, 901255, 10387586, 8159362, 10403971, 10420354, 10436626, 8388760, 10453123, 10469506, 10485778, 2195609,
- 10502275, 10518658, 10535066, 10567811, 10584194, 10371090, 10600579, 10616962, 10633234, 10649754, 10682499, 10698882, 10715154, 2195611, 10731529,
- 10748060, 10780802, 10797074, 2195613, 9158771, 10813598, 10846367, 10879091, 10895495, 10911876, 10928146, 10944642, 8159363, 10961056, 10993798,
- 11010180, 8962066, 11026450, 11042948, 11059334, 901235, 3309608, 11075745, 8962180, 11124870, 11059218, 11141135, 11157545, 4980739, 11174020,
- 11190434, 11239433, 11255923, 11272210, 11288599, 11305097, 8962183, 11321459, 11288594, 11337888, 11370505, 11387043, 11419783, 11436169, 11059209,
- 11452548, 11468915, 8994950, 11485193, 11501586, 11518089, 11534468, 11550854, 11059335, 11567116, 11583526, 11599884, 11616267, 11632671, 11649061,
- 11665420, 8994839, 11681956, 11763877, 11911299, 11927682, 11944074, 2195622, 11976853, 12009602, 12026023, 8388776, 10027173, 12075139, 12091522,
- 12107914, 8601769, 10027178, 12140675, 12157058, 12173450, 8601771, 12206211, 12222594, 12238986, 8601772, 12271747, 12288130, 12304522, 8601773,
- 10027182, 12337283, 12353666, 12370058, 8601775, 10027184, 12402819, 12419202, 12435594, 8601777, 12468355, 12484738, 12501130, 8601778, 8601779,
- 12533940, 12566659, 12583042, 12599434, 8388789, 8601782, 12632201, 12648471, 10371095, 12664967, 8159250, 12681369, 12714115, 12730503, 8159364,
- 12746770, 12763251, 8159241, 12779635, 10371081, 12796067, 12828855, 12878008, 12910723, 12927106, 12943514, 12632073, 12976151, 12992521, 13008914,
- 7602191, 13025465, 13107386, 13172867, 13189250, 13205658, 13238403, 9158786, 13254843, 13287539, 13303938, 10371187, 1114138, 13320324, 13336691,
- 13303940, 13352983, 13369532, 13402296, 13435010, 13451282, 8388797, 13467671, 13484147, 13500442, 13516816, 13533190, 13549589, 2359327, 13566142,
- 13631623, 13648063, 13697154, 13713426, 901255, 13729815, 13746306, 3309703, 13762752, 13795443, 9470082, 13811843, 12648579, 13828125, 13844516,
- 13860980, 2342952, 13877441, 13959323, 13992127, 14041218, 14057610, 10256515, 11665542, 14090377, 14106758, 14123139, 2359428, 14139529, 14155907,
- 14172275, 11059223, 14188738, 14270659, 14319747, 14336130, 14352402, 2195644, 14368917, 9142402, 14401728, 14434438, 14450820, 8994947, 14467268,
- 14499849, 12664947, 14516227, 14532611, 2162689, 14549126, 8994825, 14450711, 14565519, 14598296, 14647427, 11042946, 14663703, 14680202, 14712833,
- 1769477, 14729239, 2326658, 14745797, 9207817, 14811334, 14844019, 14860422, 14876809, 14893065, 14909571, 2195655, 10387474, 2162704, 14925853,
- 14942230, 14958615, 14975033, 14991490, 15007874, 1769512, 2261004, 15024146, 15040549, 15056915, 15073302, 2359308, 15089864, 15122463, 15138834,
- 15155240, 15171716, 15188004, 2326663, 15204363, 15220866, 15237151, 2130036, 15253705, 15286288, 15302674, 15319071, 7307396, 15335426, 15352010,
- 1769514, 15384607, 15400972, 8159270, 15417375, 15433734, 15450133, 15466508, 8159258, 15482898, 934019, 15499274, 15515654, 15532068, 8159248,
- 16203799, 16220183, 6324247, 16236560, 2326547, 16253132, 901254, 16302285, 933899, 16351438, 16662735, 16892112, 16941205, 901143, 16974033,
- 2129951, 17022999, 17039383, 8175753, 14385283, 901138, 17055893, 17088642, 9535506, 17105080, 901131, 17137676, 17154050, 1785882, 17170642,
- 17268947, 17350868, 17383558, 2342948, 3309699, 17399939, 17416405, 9207939, 17449174, 901177, 17481943, 17580169, 17596565, 17629400, 17678359,
- 17694835, 17711127, 8159367, 17727625, 17743890, 17760390, 17776772, 17793241, 17825927, 901121, 901135, 17842394, 17875163, 17907721, 17924114,
- 901121, 17940530, 17973468, 18006237, 18039006, 2195679, 2932960, 18087959, 18104343, 16597217, 18120714, 18137107, 18153494, 1785868, 18169866,
- 8994828, 18186466, 18481379, 18645123, 11665431, 18661385, 18677875, 10371207, 18694288, 2261123, 18727043, 18743426, 18759834, 18792579, 11124866,
- 18808963, 11010178, 18825444, 19021847, 19038231, 901123, 19054821, 19153126, 19235047, 19333352, 19398889, 19431555, 19447811, 901123, 901122,
- 19070985, 19464201, 933897, 8568834, 19480710, 16269446, 19496961, 17924097, 19513557, 19546346, 19579011, 19595398, 11059331, 19611657, 19628267,
- 19677321, 19693705, 19710188, 19759238, 19775622, 18890867, 11059315, 9207945, 19792105, 19824877, 1933315, 17924097, 19857411, 19431427, 19874030,
- 19972335, 20021379, 20037641, 14450697, 20054153, 20070640, 20168838, 20185305, 20217971, 10371207, 20234241, 7602181, 20250865, 20283507, 20299911,
- 901252, 20316178, 20332675, 20349065, 20365321, 901251, 20381827, 19464326, 20398322, 20447475, 20496499, 20512900, 20529284, 8962178, 20545702,
- 20578548, 20611317, 20660470, 20693239, 20726008, 20775161, 20807930, 20856981, 20889731, 20906007, 2179187, 20922616, 20971654, 20988036, 16269335,
- 21004539, 21053692, 21086234, 21102594, 1114169, 21119111, 21135494, 21151859, 2752541, 2539522, 21168129, 21184725, 20234249, 21528830, 17072259,
- 14385283, 21676163, 21692546, 21708818, 2195711, 10371204, 21725440, 21856387, 21872774, 934018, 21889155, 21905417, 4980873, 21922049, 21987586,
- 8601859, 22020250, 22053124, 22085641, 14549123, 16269449, 22102276, 22134918, 22151299, 22167667, 10371203, 22184067, 22200455, 9158787, 22216732,
- 2342914, 22233349, 22315145, 22331526, 9207942, 22347913, 22364422, 22397062, 22413446, 22429830, 22446214, 22462579, 19775603, 14745731, 22970632,
- 23019529, 23036041, 23052553, 23248905, 14909577, 8994825, 13713523, 2031622, 23265546, 23298060, 14712833, 23314699, 23363852, 23413005, 17825929,
- 11042953, 23461906, 23478542, 23511311, 23576707, 23593232, 23789577, 901257, 23806067, 23822471, 23838855, 16269427, 2195729, 23855378, 23904268,
- 23920652, 17924101, 2195648, 24182996, 24215561, 24232073, 24248580, 24281251, 24314132, 24346901, 24395785, 24412291, 2195655, 24936578, 21610514,
- 24952841, 24969495, 901254, 25002147, 25034889, 20365321, 25051295, 25084041, 24395785, 25100568, 23773397, 25673887, 14549129, 25706684, 25739398,
- 14549129, 25755929, 26099847, 26116211, 25673862, 26132762, 26378372, 26099847, 26394907, 26902812, 27099348, 26476562, 26378372, 27132189, 27164684,
- 2670618, 19447811, 27181195, 26476562, 27214110, 901149, 27263250, 27312140, 27328538, 2342933, 27345183, 901139, 1769477, 27377669, 27394060,
- 27410458, 27426837, 7307300, 2195611, 27443354, 27476254, 27525394, 27574284, 27590682, 27607061, 901156, 27623477, 901126, 27656479, 27688979,
- 27705401, 2129948, 27721885, 901250, 27754650, 27787550, 27836435, 27852829, 901132, 27869213, 2261033, 3375120, 27885842, 27934723, 868357,
- 27951116, 27967514, 27983893, 2195744, 28000398, 23920652, 28033031, 28049427, 2179129, 23478527, 28065810, 8159362, 11550852, 28082194, 10371204,
- 28098846, 27246611, 28147741, 901161, 28164108, 1212453, 28180754, 28229644, 28246042, 28262689, 28295174, 28311581, 28327977, 24166403, 28344327,
- 17448979, 28360749, 2179129, 28393762, 28475547, 8962066, 28508314, 28541058, 8994931, 28557576, 23085193, 28606755, 28688518, 28705060, 28786706,
- 28803202, 2195584, 28819610, 28852376, 28901508, 28918053, 2195622, 28950822, 28999810, 29016305, 13713523, 29048984, 29098279, 29163652, 13303942,
- 29180200, 29294889, 29327658, 884748, 29360426, 14745731, 29393195, 29442064, 29458453, 8994822, 29474900, 29507884, 29540353, 29556738, 29573126,
- 29589533, 29605907, 19447815, 29622509, 1949736, 29655341, 3702799, 29687924, 29704221, 29720613, 29737091, 9535622, 29753646, 1933349, 29786415,
- 29819182, 22478886, 29851952, 29901105, 4980758, 6701085, 29933874, 30015491, 30032179, 29327668, 30064949, 30113798, 884739, 30130486, 30228595,
- 27164807, 30244870, 30261277, 30277635, 27344903, 30294037, 29376548, 30310711, 30359611, 2998284, 30392632, 4980773, 30425401, 30458170, 30490742,
- 30523707, 30556447, 29376531, 30589244, 9158793, 30687420, 30720135, 9535506, 30736701, 30785554, 30802050, 23789703, 30818435, 30834823, 934025,
- 30851390, 9535623, 29049151, 30998695, 30802050, 31048000, 31080579, 31096963, 10371202, 31113537, 31162506, 13238407, 31195458, 31244611, 31277066,
- 31293469, 31309850, 31326239, 31342628, 16269443, 31359113, 31375372, 13303942, 31391760, 31408147, 31424549, 2031628, 31440912, 31457290, 31473701,
- 31490060, 24838180, 31506756, 31555909, 31588486, 31604741, 31621235, 1769607, 31637830, 31703049, 7602177, 31719558, 31735820, 31752218, 31768691,
- 2670727, 31784966, 31801347, 901127, 27328538, 31817947, 31850517, 31867014, 18890767, 31883294, 31916359, 32096584, 32227459, 32243842, 32260114,
- 2195594, 32276809, 32358730, 20365449, 32391334, 9535619, 32424267, 32522572, 32571507, 32587910, 32604295, 9535603, 32620742, 9158788, 9158791,
- 32653427, 13238404, 10371206, 32669712, 32686106, 6209548, 32702797, 32768166, 32800902, 32817283, 16269321, 32833546, 32849949, 1769498, 32866638,
- 32932095, 32964738, 32981327, 33063104, 16941065, 33095683, 33112092, 17809439, 33128784, 33226889, 33243251, 2179074, 8994953, 934022, 33259857,
- 33341571, 9207939, 33357958, 16728199, 33374342, 33390930, 33423699, 33570959, 33177735, 33603740, 901235, 33636486, 33652871, 16941074, 33161331,
- 33177735, 33505412, 33669460, 33734674, 8159366, 33751370, 33783939, 2326570, 23380298, 33800341, 33833301, 12664841, 33882353, 33915126, 33947990,
- 34177367, 34275512, 34308227, 34324610, 8994946, 34341048, 34373976, 34455561, 34472067, 11059337, 34488567, 34521097, 11059335, 9535497, 34537817,
- 34586787, 34619527, 11010180, 9535603, 34636122, 34701659, 34734214, 31342729, 34750812, 34799965, 10371209, 11042947, 29049182, 34865353, 34898271,
- 35045491, 35061778, 35078281, 28786823, 35094663, 35111042, 32981179, 35127530, 20693344, 35160224, 35192841, 35209569, 27738247, 35258503, 35275106,
- 28917769, 35307655, 35324041, 10764297, 35340510, 35389795, 9142406, 35438948, 8159255, 35504146, 11124871, 9142278, 35520521, 17448970, 35536924,
- 35553281, 35569701, 17809538, 35586405, 35799398, 2195815, 35913912, 35946626, 35963034, 8994834, 35996008, 36094083, 36110468, 9158787, 36126727,
- 36143220, 2326539, 36159849, 36225161, 36241523, 11059334, 36257804, 36274195, 2129923, 36290922, 1785884, 8994931, 8962163, 36421995, 36487303,
- 32620681, 36503594, 36519948, 7307295, 36536684, 36618371, 36634759, 934025, 36651328, 36684141, 9207923, 36749675, 934020, 36814860, 1900585,
- 36831598, 36995439, 37044339, 37060740, 37077360, 37208252, 934003, 20627609, 37240969, 37257408, 37290137, 37322889, 37339505, 23789577, 37503346,
- 37552316, 37585031, 37158930, 37601535, 37634289, 20349065, 37667004, 37699715, 36388995, 37716098, 37732367, 37748776, 9207831, 37765491, 37978484,
- 38027637, 38076790, 38125943, 38158712, 38224220, 25034889, 38273401, 38322554, 38371354, 38387724, 2179093, 38404423, 38584699, 38699388, 38748291,
- 38764674, 38781058, 4980870, 38797693, 38862871, 38879366, 901236, 38895747, 38912132, 38928515, 8978564, 8962179, 38945150, 39043204, 933906,
- 23838857, 39059593, 29163650, 39076217, 22069380, 39125375, 39207043, 39223428, 39239812, 1785987, 39256436, 39305600, 39354560, 39387521, 39584130,
- 39682232, 39715203, 8061059, 39764356, 39846022, 9142281, 39862409, 11042951, 39879045, 8994951, 39928192, 39977095, 36765811, 39993734, 40042524,
- 1949722, 40059271, 40124808, 40173699, 14549001, 40189961, 40206354, 40222730, 38780937, 40239497, 40452490, 40534225, 17105291, 8994818, 40583564,
- 40648839, 40665106, 20856981, 40681609, 40697988, 40714374, 40730759, 40747123, 2195673, 40763789, 40861828, 40878103, 40894601, 40910963, 40927367,
- 18874391, 40943829, 40976386, 38879268, 32456722, 40992791, 22200343, 41009542, 41058447, 41091087, 41107482, 3686416, 41124238, 41238690, 34324615,
- 41288007, 41468113, 41517268, 12730386, 41550223, 41582614, 17448972, 41599139, 34324612, 41632144, 2195857, 41664661, 39157972, 41697303, 2195595,
- 41713814, 41877906, 41943170, 41959442, 2195732, 41975957, 42008706, 9207826, 42025363, 8389012, 34324498, 42074517, 2195856, 42123670, 42172823,
- 42238164, 42270738, 17809523, 42287512, 2195619, 42385434, 42401794, 42418195, 30392342, 42434572, 1785877, 42451214, 8388735, 42483903, 8389017,
- 42533274, 42614996, 42647963, 42811804, 2195636, 42877077, 21872770, 42910099, 42958978, 9207938, 42975641, 43024514, 10371203, 43041181, 2195615,
- 43122711, 43139095, 31342726, 43155870, 2195599, 43204631, 43221015, 43237506, 4980742, 43254175, 43319431, 43335811, 43352087, 43368479, 43384870,
- 4980852, 34308228, 43401403, 43433996, 4964390, 43450389, 43466767, 43483178, 43499522, 38830091, 43515926, 43532310, 2408464, 43549088, 43745566,
- 43794569, 43810818, 43827334, 43843586, 43860083, 43876354, 4980871, 43892873, 43909139, 43925638, 43941917, 1769587, 43958409, 43974685, 43991174,
- 44007465, 44023923, 44040234, 2621575, 44056578, 44072962, 44089346, 19267586, 44105747, 44122529, 44154892, 44171305, 901162, 44187667, 44204086,
- 44236802, 15482891, 44253602, 44285964, 2326554, 44302343, 1785887, 44319139, 44351498, 4980765, 44368292, 44400732, 3178506, 44433420, 2195741,
- 44449804, 44466214, 2195495, 44482784, 4079628, 29622294, 44515749, 44564521, 44580906, 44597270, 901236, 44613670, 2342924, 44630438, 6422544,
- 44663207, 2998312, 17006613, 44711952, 1900559, 44728744, 44859817, 44990890, 1785894, 45023320, 4980746, 2326559, 44613642, 45056427, 3473436,
- 45088796, 45105180, 45121564, 45137948, 901148, 45154363, 45187123, 30343234, 45220268, 45285805, 45351342, 2031645, 45400066, 2195887, 42434591,
- 45416486, 45433264, 45465629, 1769503, 45482417, 1769483, 45514817, 45564338, 2031632, 45597107, 45629876, 1114128, 2850837, 45679022, 45728181,
- 2850845, 3162133, 45760950, 4980764, 2342941, 45842470, 45859255, 2261008, 2162710, 45891605, 45907990, 4980748, 45924792, 46039481, 13074434,
- 46088634, 1785872, 17006630, 46137396, 46170131, 46186515, 46202899, 1212435, 46219302, 2801685, 46235745, 46301291, 46333990, 46350402, 46383547,
- 45907974, 46448659, 5177381, 46465055, 46481414, 2162709, 46497832, 46514197, 2621459, 46531004, 4980762, 6602793, 46645263, 6946856, 46662077,
- 46694457, 46710796, 2326549, 46727196, 31490064, 46743998, 46809535, 46841858, 46858261, 17448991, 46874643, 6193189, 46891014, 3473429, 46907840,
- 47006145, 4964368, 1900582, 47104450, 2523148, 17842242, 47136797, 47153181, 27246621, 47169987, 47202756, 47251909, 1114150, 46891039, 47284315,
- 47317013, 1949712, 47333830, 17006614, 47366599, 2850858, 47415307, 1933323, 47432136, 47530026, 47546406, 24838156, 6406149, 47562764, 47579148,
- 47595532, 1769484, 47611961, 1785887, 47628307, 47644688, 47661084, 47677442, 933914, 47693839, 47710246, 32849936, 47727049, 47857691, 2850835,
- 47890539, 47923226, 47939586, 2162714, 47956009, 47972393, 28147753, 47988835, 48021526, 4161567, 48038346, 48070956, 44351519, 17154060, 48103516,
- 45056021, 6209548, 48136651, 2359306, 48185804, 3342365, 48218572, 48250899, 48267301, 7258225, 48284109, 48398798, 48447514, 47120415, 48463901,
- 48480258, 2752550, 48496652, 22216709, 48513487, 48545823, 2162698, 15351834, 48562218, 48578602, 48594986, 44171306, 48611792, 42434570, 1933354,
- 48660518, 48676905, 1949708, 48693707, 48742403, 3178499, 48758815, 6701077, 48775633, 48873938, 48939475, 48988628, 49020930, 2162719, 49037781,
- 49086492, 1933343, 49102870, 49119254, 49135638, 2621462, 49152470, 44613669, 3867095, 45858845, 49250314, 49266720, 31424538, 49299484, 49315856,
- 49332225, 49348650, 24838153, 49365464, 3686412, 49430559, 49446943, 49463327, 2162719, 49479686, 49496095, 1769501, 49512921, 49610764, 49627268,
- 49643561, 2752647, 49660378, 49725477, 49742299, 49774603, 49791007, 1769482, 49807836, 49872937, 44613658, 49889290, 5947423, 49906141, 49938463,
- 4980755, 49954932, 49971316, 49987700, 44597364, 50004446, 50069514, 50086359, 2113565, 50119135, 2621455, 4980776, 50151895, 47317023, 50184672,
- 45465621, 17006649, 50266593, 1933350, 50315301, 2359333, 5832735, 50332130, 50429981, 50446372, 50462748, 2261032, 50479587, 3555340, 50511883,
- 17006604, 50528740, 3129382, 50577845, 50610188, 50626658, 50659347, 2342949, 50676197, 50774502, 50889191, 50937868, 1114133, 48627714, 50954728,
- 50987090, 884767, 51019798, 7602188, 51036172, 2801690, 51053033, 51101727, 43237382, 1933340, 51118171, 49496076, 51151338, 51200491, 51232827,
- 51265574, 51281986, 51314699, 3309579, 51331564, 51429869, 51495406, 51528175, 2113578, 51560919, 51593237, 2162690, 51610096, 17006633, 51658767,
- 2342934, 51675157, 4161538, 51692017, 51773446, 6701075, 51789829, 49889318, 51806642, 2113542, 51838986, 2129930, 51855381, 51871746, 2326538,
- 51888626, 6209567, 45629456, 51937282, 15351818, 51954163, 52117520, 2162825, 52134388, 48054309, 52215820, 4980774, 52232213, 52249077, 52281350,
- 52298035, 52330511, 15351810, 52346896, 27246618, 52363290, 2539551, 52380150, 52445615, 7389206, 52477994, 17006632, 52494352, 52510732, 50987018,
- 52527607, 52576294, 7602192, 6602762, 52592699, 1933348, 2719746, 52625912, 45465637, 52674566, 1753107, 52690975, 52707765, 6946818, 52740132,
- 52756499, 1114134, 52773305, 52822031, 17006629, 2342918, 52838905, 52936705, 52953219, 8994817, 52969978, 19447945, 53051529, 53067777, 53084294,
- 53100545, 17924211, 1212553, 53117065, 53133324, 53149830, 53166106, 53182579, 53198869, 2343047, 53215244, 53231731, 53248021, 53264516, 53280808,
- 1114242, 53297659, 53362693, 53379078, 53395593, 53411852, 53428253, 53444742, 53461018, 53477417, 53493875, 2261013, 53510149, 53526537, 31424649,
- 53543420, 53690369, 19447810, 53706768, 3309605, 53723141, 53739526, 53755911, 53772425, 53788684, 53805085, 53821459, 53837958, 53854234, 17449001,
- 53870604, 1212445, 16269324, 53886982, 53903367, 53870604, 53920253, 11059226, 53968901, 53985289, 54001801, 54018060, 54034461, 54050835, 54067257,
- 54083625, 16269338, 52953090, 18956289, 54100478, 54132873, 54149132, 16269338, 54166015, 54198293, 54214692, 54231552, 54296607, 17809424, 54313020,
- 54395393, 45039644, 47120406, 54460930, 54493196, 24838170, 52576284, 54460458, 49217565, 54509587, 6406166, 54526467, 54575141, 54592004, 54640652,
- 54657052, 2031656, 54673513, 54706693, 54919190, 54935683, 54951948, 54968451, 8994857, 54985222, 47317030, 55050242, 6324234, 2621442, 55066640,
- 55083527, 55132175, 1114143, 55149064, 6193178, 55197753, 5603359, 55214601, 31424538, 55246894, 55296522, 3178534, 933909, 55329291, 46530586,
- 55377935, 2850822, 55394347, 6324255, 55427088, 3702800, 55443980, 1933331, 45465622, 55476683, 55525483, 55558577, 55591437, 55640090, 55656974,
- 55689743, 5177366, 55754762, 1933322, 55771664, 55869969, 4571148, 27623476, 47349766, 55902220, 55918618, 4980747, 1933353, 55935506, 54984740,
- 56050195, 47611914, 56099348, 56148078, 2539536, 1900555, 6717450, 56181269, 56246313, 56262658, 2342922, 56279574, 56311819, 2342923, 56328429,
- 2965544, 56360986, 56377879, 56410648, 52985874, 56492063, 31424533, 56508536, 3342355, 56524840, 7307304, 56541721, 56607258, 56639503, 32849951,
- 6946837, 56656411, 1114124, 50806820, 56689180, 56787485, 56836233, 56852506, 2326662, 56869001, 56885274, 1769606, 56901769, 56918021, 7602310,
- 56934426, 50151450, 6946847, 56951326, 57000045, 57032723, 2326530, 6455327, 57049631, 7045146, 20234245, 57098784, 57180163, 57196581, 57212970,
- 7602194, 49086521, 57229354, 57245830, 57262117, 17924115, 57278471, 57294855, 57311239, 31801351, 57328161, 57376870, 29900802, 57409573, 7389196,
- 52527142, 17383460, 57426466, 57475359, 57507977, 57524243, 57540742, 57557049, 2179187, 57573395, 57589817, 57606172, 16826378, 57622531, 57638915,
- 57655299, 19038211, 58212900, 9207849, 58245669, 58311206, 58507815, 58704424, 8388735, 58769420, 17809420, 58785922, 58802199, 7307290, 49020949,
- 17105080, 58819113, 58851459, 58867861, 901674, 58900664, 58933803, 58966025, 58982423, 8962071, 58998915, 59015298, 59031706, 24248474, 59064876,
- 7602177, 59179017, 59195415, 59211907, 59228295, 17809448, 59244556, 59260957, 19447846, 59277321, 10764418, 33734679, 59293719, 8159367, 59310563,
- 2162709, 59342863, 59359234, 59375626, 1785893, 59392557, 59556398, 59621507, 59637890, 59654298, 59686930, 2130050, 59703435, 59736459, 59769391,
- 59818115, 8159347, 2605096, 19447844, 59834928, 59916311, 59932802, 59949187, 16269447, 59965449, 59981955, 59998769, 11059209, 12648563, 60031538,
- 60096646, 60113031, 11075602, 60129285, 60112908, 60145801, 60162183, 60178547, 60194834, 60211332, 8962071, 17088646, 60227721, 3309594, 60244156,
- 17924105, 18399258, 60277299, 60473908, 60571779, 60588162, 60604434, 2195589, 60620931, 60637314, 16269330, 60653699, 11468930, 60670083, 60686570,
- 60719219, 1785861, 60735659, 60867125, 14450819, 60948748, 24281216, 18874505, 60998198, 61047351, 61128838, 11059315, 9109619, 61145251, 11075719,
- 61177990, 61194808, 61259911, 9158674, 61276406, 29049401, 61276295, 61309066, 61341827, 61358089, 17924230, 19464210, 61374487, 61390982, 61407237,
- 61423746, 1769495, 61440002, 61456394, 1114154, 61473338, 61686331, 38879243, 61767927, 61800585, 9535511, 61816850, 60243977, 61833331, 19447940,
- 61850172, 61882503, 61898781, 61915252, 61931551, 61947961, 61964290, 61980682, 61997097, 46088218, 62013711, 36634633, 8962057, 62079549, 62111956,
- 62144753, 62177854, 62210623, 62259223, 62275602, 4980867, 62292102, 62308489, 62324765, 62341151, 4980747, 62357519, 884870, 62373904, 50036762,
- 62390309, 62406687, 45629469, 62423616, 62455814, 62472221, 1212423, 62488592, 62504962, 62521367, 62537769, 62554127, 62570628, 62586898, 2359325,
- 62603841, 62833218, 62882371, 62914572, 13074461, 62931204, 62963972, 62996615, 63012873, 34799731, 63029286, 63045672, 63062057, 17924111, 63078980,
- 63128133, 63209621, 63242377, 11075699, 63258787, 934019, 63291507, 27738244, 8962183, 11550857, 63308358, 63357141, 42958980, 63389812, 63406090,
- 2359337, 48054284, 63422480, 45727770, 6209552, 63438858, 63455235, 28164231, 63472199, 63652424, 63799881, 63848563, 63864947, 2162820, 63881802,
- 2621451, 21528585, 63914235, 36388999, 63963349, 59883657, 934003, 22069383, 63995911, 64012309, 4571151, 64029259, 1114249, 64094796, 64209485,
- 37142671, 64274708, 33652851, 64307359, 64340100, 64356483, 16269444, 64373326, 64488015, 64586058, 64618630, 64634889, 46530596, 64651274, 64667669,
- 1212431, 64684169, 9535618, 64700425, 64716930, 64733241, 64749570, 64765981, 3309599, 22331527, 64782928, 64815110, 64831524, 2752628, 64847879,
- 17809445, 64864849, 64995485, 65028228, 65044617, 901714, 65060882, 9158665, 62062610, 65077379, 11059331, 65093769, 64880771, 65110148, 65126537,
- 8962182, 65143379, 65274452, 65323139, 65339522, 41697410, 59293714, 65355891, 42958982, 18890887, 65372182, 65388585, 65405060, 2621571, 65421322,
- 4685865, 65438293, 65520214, 41992323, 65618052, 36339721, 65634436, 65650818, 65667081, 10764422, 65683458, 65699878, 1785867, 65716243, 55869459,
- 65733207, 65830941, 65847306, 868409, 65863706, 65880095, 65896460, 2326557, 65912941, 7307398, 65945642, 65962228, 65994844, 66027530, 66043920,
- 66060309, 45137929, 66076695, 2179081, 66093656, 66125855, 66142246, 66158621, 5177370, 66174992, 65912870, 66191961, 66224139, 66240540, 66256905,
- 66273318, 3375135, 1818634, 66290266, 66322438, 65912853, 66338838, 2261020, 66355287, 44908570, 66404368, 65912861, 66421339, 66453525, 45498502,
- 66469909, 66486406, 66503260, 66551923, 66568233, 66584605, 66600986, 17449000, 66617770, 66650118, 66666518, 66683015, 17924099, 51593221, 66699276,
- 66716131, 66748456, 66764819, 65912854, 66781789, 18890775, 66846725, 17924153, 66863393, 66896009, 56885253, 66912862, 66961415, 66977828, 66994452,
- 44285968, 6193164, 67027551, 67059743, 1785866, 67076122, 10371101, 67093088, 67158028, 67174534, 67190810, 2326643, 67207305, 67223668, 67239951,
- 16269314, 67256329, 67272741, 67289218, 38879248, 67305479, 67322465, 67420189, 9207820, 67436581, 67452938, 67469427, 67485715, 2752531, 67502690,
- 67928675, 68108900, 68338277, 10567811, 18792579, 68386823, 2326549, 33161348, 68403814, 68435973, 68452355, 1949734, 68468932, 68501638, 8175748,
- 68518414, 68550668, 68567059, 68583440, 68599818, 1785885, 68616807, 68763861, 68796547, 59949193, 68813416, 2785320, 68846154, 68878468, 68894729,
- 68911113, 68927619, 68943895, 68960265, 14434436, 68976832, 69009538, 21872663, 69026409, 69058675, 69075074, 69091337, 69107910, 24969331, 69141098,
- 12763159, 11059332, 69190251, 8994948, 69255788, 69386861, 69484799, 69517447, 17088642, 69533951, 69566598, 69582978, 20299794, 69599854, 69648393,
- 30867587, 69664780, 36634645, 14745609, 69681286, 15483014, 61014148, 69697803, 69746803, 69763202, 69779590, 69795858, 69812847, 69845008, 65699866,
- 34422802, 69862000, 22069257, 70041609, 70058140, 70091377, 70254601, 70271189, 14450819, 70304370, 5325427, 70353030, 24969350, 70369415, 70385799,
- 8945794, 70402182, 70418786, 20217971, 70451315, 70467934, 70500489, 4980738, 70516895, 32636951, 70549738, 18874500, 14450825, 70582278, 884851,
- 70599284, 70631446, 68599924, 18874389, 70648437, 70779140, 70811671, 50659462, 11042825, 70828055, 36765827, 70844659, 70893830, 37159046, 65077266,
- 70926451, 70942727, 884743, 9158788, 70959130, 70975517, 28344361, 70992502, 30950007, 71123576, 36339842, 2260994, 71205497, 71237669, 17809444,
- 71254650, 71451162, 71483408, 5177373, 71500106, 71532660, 71548947, 2261003, 71565947, 71614595, 4980851, 19480691, 71631089, 71664017, 71696519,
- 71712791, 11468937, 71729490, 65126515, 71761932, 71778420, 71794710, 2621471, 71811708, 71925875, 71942162, 71958659, 20299910, 71975167, 71942153,
- 72007814, 72024195, 33619977, 72040605, 72073853, 72138936, 72171657, 30867474, 72187906, 45629443, 72204926, 72335363, 72351782, 72368159, 2162725,
- 72384647, 70729860, 72401137, 72434303, 72466562, 72482931, 72499315, 933911, 72515613, 72532084, 2523193, 72548992, 21610611, 72581129, 34324503,
- 72597620, 72613930, 72630284, 72646696, 72663081, 2031637, 72680065, 35864708, 72728710, 33734665, 72745075, 44285983, 72761986, 72810525, 19447924,
- 72827194, 11042828, 72860291, 72908805, 17924227, 72925210, 2326643, 72941587, 72958596, 72990857, 73007145, 73023503, 73039894, 73056277, 54296708,
- 73072863, 73105423, 73121924, 73138311, 933925, 73154591, 73171589, 884745, 1785898, 73204326, 73236483, 1949830, 9207810, 73252921, 45531137,
- 73269876, 73302022, 73318531, 73334822, 73351170, 73367684, 1769473, 73384582, 73433104, 73449488, 7389226, 73465857, 73482256, 73498755, 73515123,
- 73531414, 2523167, 73548423, 73596947, 73613334, 73629702, 2523162, 73646090, 38879244, 73663112, 73695247, 1949703, 73711632, 73728028, 73744400,
- 1114140, 73761417, 74269322, 74416779, 74530834, 19464322, 74547380, 61800582, 74579991, 74597004, 74629760, 74661899, 2605058, 74678925, 2195640,
- 74776585, 74793092, 74809479, 74825859, 72908930, 22331401, 74842325, 74875017, 33177623, 74891282, 74907667, 74924061, 74940546, 74956818, 74973225,
- 74989591, 2179095, 75006606, 75186831, 75284489, 75300887, 934022, 75317381, 75350150, 75366409, 75382807, 75399186, 75415686, 75431945, 75448343,
- 19775506, 75464715, 6438928, 38830211, 75481106, 75497603, 11059330, 75513878, 75530252, 2162699, 75547280, 75579408, 46530588, 23838743, 75595910,
- 75612290, 75628679, 75645060, 31096841, 75661317, 75677708, 75694106, 75710485, 33177636, 75727505, 75792956, 75825287, 14549124, 75841667, 75858051,
- 72908931, 75874435, 75891346, 75940499, 76087634, 76120724, 76153012, 76185737, 76201993, 8372233, 76219029, 76365977, 61128819, 76398707, 76415091,
- 18677895, 76431475, 76447879, 76464263, 9535620, 76480649, 76496908, 44351516, 76513282, 76529706, 10829834, 76546710, 76743057, 18890886, 76775442,
- 76791831, 4980745, 76808201, 34603145, 76824599, 76841092, 2326665, 76858007, 76890153, 57262091, 11042950, 76907160, 77070345, 77086857, 77103769,
- 77135987, 11042951, 77152274, 77168770, 37355651, 77185378, 77217946, 2031622, 50937896, 77250576, 2326566, 77266953, 77283357, 77299728, 36307059,
- 3309583, 77316762, 77414532, 32817289, 77430941, 70893703, 77463684, 77480051, 69156979, 77496330, 933917, 77512720, 47611930, 77529755, 77660292,
- 12730483, 77676660, 77692957, 77709369, 2752553, 11304978, 11468823, 77725812, 77742121, 77758470, 2359299, 77774985, 9207940, 77791238, 884754,
- 77808284, 77906050, 77922419, 61358210, 77938803, 77955203, 77971591, 77987849, 78004361, 78020742, 78037001, 78054045, 78103198, 18890761, 78135305,
- 78151795, 78168090, 1212435, 78185119, 78282886, 78299142, 78315655, 78332036, 78348420, 69156887, 62062707, 78364884, 78398112, 78446724, 22331410,
- 78463016, 38830086, 78479386, 20365318, 78496417, 78544906, 47120403, 78561282, 29769738, 78577978, 78610489, 38879348, 78627490, 78659600, 78676008,
- 78692392, 9158663, 78708748, 24969242, 78725795, 78774290, 78790665, 78807062, 884772, 3293196, 78824100, 78872607, 78888963, 78905366, 884752,
- 78921754, 78938115, 78954508, 17924107, 52740212, 68599839, 78971557, 79037094, 79069863, 52576266, 79102009, 2621452, 79119016, 79151239, 2326537,
- 79167507, 9158693, 79184553, 79265833, 79282194, 43384842, 52805638, 79299242, 79413260, 72859657, 79429653, 2343047, 79446073, 79462754, 79495189,
- 2179114, 79511567, 2326565, 79527951, 79544338, 79560706, 9535516, 79577771, 79659692, 79691782, 67059728, 79708163, 2261122, 79724582, 79740944,
- 2850827, 31424524, 79757997, 67059724, 31424569, 79807150, 15237121, 47120396, 6946873, 79856303, 79921175, 16826391, 79937541, 1949812, 79954608,
- 79987377, 80019494, 42434583, 80035842, 2752552, 80052914, 80494707, 80511111, 80527367, 80543878, 51314803, 80560819, 80741044, 16941749, 80888242,
- 80920588, 80936970, 24838165, 80954038, 81035424, 81068163, 81084439, 81100915, 81117315, 36339735, 81133702, 81149981, 81166367, 2162717, 29737095,
- 81182859, 81216183, 15483011, 81313907, 81330313, 16269427, 81346694, 81362953, 22331507, 81380024, 34734211, 37158921, 81510534, 81526899, 13303826,
- 81543865, 81592338, 9519239, 37159042, 81608715, 884738, 81625786, 81690642, 81707278, 9158679, 81739906, 81756201, 19447839, 81772659, 81789065,
- 81805321, 8978563, 81822395, 81936652, 81985551, 82001951, 1114123, 82018441, 82034825, 82051206, 81969289, 82067465, 33177734, 70729863, 82084540,
- 82133123, 82150077, 82198537, 11042953, 82215614, 82264085, 82280469, 2342969, 82296854, 82280460, 82313273, 32637060, 82330303, 82510219, 82542611,
- 82558978, 2162694, 82575929, 82608482, 82641028, 82657298, 81707031, 82674368, 82723170, 82755721, 76201993, 82772083, 32456836, 82788355, 2015247,
- 82805441, 82985666, 83034325, 83067587, 83116224, 83148988, 83182276, 2195544, 18677895, 83329159, 83346060, 9519236, 83378331, 83411079, 83428037,
- 61259908, 83492996, 83509866, 83558537, 83574793, 14450706, 83591210, 7372802, 83608262, 83722355, 83738754, 10387479, 83755139, 10944643, 83772103,
- 83820582, 83836970, 1114113, 83854024, 83918884, 1949717, 83935242, 83951637, 3309625, 83968156, 21872777, 84000903, 37748754, 84017174, 1785863,
- 84034249, 84148354, 36618249, 84164738, 84181122, 22069382, 84197385, 10387588, 84214333, 21610519, 84246543, 8962185, 84263158, 84295837, 84328563,
- 23838729, 84344850, 84361331, 84377715, 84393986, 1212444, 84410587, 84443154, 84459529, 84476035, 84492419, 84508809, 84525093, 84541452, 84557881,
- 84574239, 17809418, 84590615, 76709911, 84607106, 84623369, 84639801, 84656243, 10371094, 84672571, 2179079, 84705318, 84721676, 84738059, 51871756,
- 84754567, 84770834, 8962069, 84787221, 84803626, 84819999, 84836354, 3309575, 84852742, 84869160, 84885636, 84902003, 84918309, 84934671, 2326544,
- 84951076, 84967436, 2129949, 84983839, 11157507, 85000202, 85016579, 884852, 85032967, 85049380, 2129935, 85066442, 85114917, 9535494, 5505050,
- 85131979, 85196826, 79298697, 85213220, 85229700, 85245992, 2162706, 85262364, 85279436, 4112420, 85311510, 10371108, 85327914, 14532636, 85344266,
- 85360646, 49774614, 85377741, 85409927, 85426202, 85442570, 17809409, 85458953, 85475359, 85491844, 9158678, 85508814, 85852879, 85983952, 86048899,
- 11305092, 86065289, 86081565, 2752549, 86097943, 33177618, 86115025, 86179994, 86212631, 86229010, 39895058, 86246098, 86343795, 86360075, 86376479,
- 86392870, 86409218, 86425735, 65077257, 14549107, 86442041, 86458394, 66338832, 86474883, 86491268, 65077385, 56557580, 86508243, 86605954, 86622227,
- 86638602, 2621469, 10993779, 11468809, 36634761, 86655700, 86720519, 86736901, 86753321, 17448997, 86770233, 86802435, 86818826, 4980868, 86835925,
- 59818099, 86934230, 86999049, 87015555, 8389335, 87031848, 87048198, 2113557, 87064692, 19464249, 87081688, 87261207, 87277683, 22200450, 18677897,
- 87294681, 87343263, 60637319, 87376602, 87589132, 87638346, 87671060, 87703685, 87736455, 8389339, 87752834, 76415106, 3129356, 87048194, 87769220,
- 87785629, 20529170, 87818972, 87851123, 18169993, 87867432, 87883782, 87900181, 87916546, 44171274, 87933661, 88096809, 88113158, 88129538, 88146052,
- 88162419, 2326564, 88178818, 88195095, 34799750, 12746883, 88211586, 88228087, 88261102, 46039051, 88294110, 88408439, 88440844, 88457258, 2621477,
- 88473735, 88490021, 88506410, 1949833, 88522759, 88539137, 88555527, 2261033, 17088530, 88260610, 88572639, 88785027, 32800905, 17072137, 88801410,
- 88817862, 13713538, 88850565, 88883209, 4980759, 49496104, 79249448, 88899747, 88932468, 88948793, 1769487, 88965142, 88981535, 9158685, 88997907,
- 89014313, 89030791, 89047177, 2162823, 89063434, 52445203, 89079830, 89096197, 89112587, 89128961, 7307301, 85098517, 89145382, 89161757, 9158713,
- 89178124, 89194514, 89210996, 89227273, 16269315, 89244384, 89276456, 2162706, 89292810, 89309316, 89325608, 3309684, 89342689, 89784455, 89800713,
- 89817826, 89849971, 51314819, 89866979, 90014436, 9535511, 36339844, 90079366, 90095746, 90112130, 2621481, 90128402, 90144791, 90161175, 90177668,
- 90193943, 12664964, 90210704, 90243202, 19267607, 90259593, 16269442, 90276581, 90341511, 11010179, 90357769, 90374276, 64356489, 42958857, 90391270,
- 90488966, 9371780, 90505239, 19447923, 90521715, 2129941, 90538727, 90587536, 81707143, 90620648, 90735337, 90866233, 90898547, 90800146, 9371778,
- 90915170, 90947719, 90964098, 33619986, 90980467, 90996745, 91013320, 91046023, 16941193, 91062407, 37585033, 91079230, 20381828, 91111555, 91127940,
- 91144215, 91160599, 91176983, 34422807, 91193542, 9535625, 91226246, 19447942, 83918857, 91243242, 2179100, 91308198, 91340915, 91357314, 9371657,
- 91374315, 89882759, 91472579, 91521139, 91537539, 91554144, 91586910, 91619462, 91635735, 8159274, 91652844, 11042931, 75497604, 884777, 91718381,
- 91783430, 91815938, 91832436, 8994854, 91848841, 62275593, 91865838, 91897986, 75497481, 91914282, 91930662, 2342913, 91947759, 92110979, 92127241,
- 92143746, 2162804, 92160134, 92177024, 92209506, 34324611, 72040798, 92242055, 92258559, 92291824, 92504087, 2195726, 70058197, 92520563, 92536947,
- 18874505, 92553354, 92586737, 92635251, 92651651, 60243991, 92668569, 8602354, 92700690, 70385682, 92717290, 92749834, 47120426, 2015270, 92766346,
- 9519234, 92799016, 92815370, 6193158, 92832499, 15482995, 93012369, 93045492, 93094019, 14745737, 93110426, 93143195, 93175962, 9158786, 93209333,
- 93372425, 29163657, 93388915, 93405319, 93421699, 93437961, 93454473, 8389366, 93470963, 93520226, 93552649, 93569155, 93585542, 2195711, 29376646,
- 93601810, 70729858, 93618935, 22478979, 73629727, 93667465, 93683718, 93700211, 2752514, 93716724, 93749383, 93765763, 93782153, 93798969, 93831210,
- 93847583, 2359297, 93864696, 93896716, 93913849, 93945878, 93962242, 93978634, 24838165, 93995029, 94011432, 68599945, 94028128, 94060573, 94076969,
- 36339846, 44285958, 94093404, 94126106, 87539717, 2293776, 94142490, 94158877, 94175242, 14745605, 94191718, 94224500, 94240809, 7585798, 94257168,
- 94273573, 94289927, 94306436, 94322716, 94339202, 7307293, 94355484, 94371852, 2031746, 94388476, 94421018, 9207844, 71188491, 94438138, 49774602,
- 94470165, 94486570, 94502943, 1212427, 94519353, 56852490, 94535726, 94584843, 94601256, 51593242, 94617657, 94633996, 20299786, 45760523, 94651131,
- 94699551, 94716034, 94732304, 17809431, 78807061, 94748701, 94765171, 94781462, 94797855, 94814223, 38879241, 94830951, 94863475, 17924122, 94879749,
- 94896131, 17924098, 94913276, 95290109, 95421182, 95518743, 95535239, 95551625, 64667785, 95568007, 95584387, 95600775, 84361351, 95617161, 95633540,
- 95649810, 95666291, 95682569, 9470084, 95698950, 52723733, 95715623, 95780998, 95797383, 95813650, 95830151, 61358214, 95846409, 95862919, 14418050,
- 95879186, 95895561, 95912067, 95928338, 12779651, 95945471, 96010255, 96026626, 1212438, 96043017, 38994055, 96059432, 28164133, 96076544, 96157714,
- 96174116, 96190471, 19447849, 9109636, 96207500, 96239731, 96256018, 36716659, 96272393, 96288902, 1785874, 96305921, 96387090, 33161347, 96403593,
- 96419852, 45776925, 38830195, 96436359, 17448975, 96453249, 7045138, 70516867, 96502530, 96600835, 96714932, 10764297, 72040724, 96747920, 96780306,
- 19464327, 96797324, 37158930, 20988038, 96829555, 82657289, 96846596, 96927746, 96944156, 96960554, 2260998, 96977011, 96993417, 97009687, 27738242,
- 97026070, 97042444, 78807097, 97059589, 97173639, 97189897, 97206403, 97222793, 33620102, 97239066, 97255462, 97271827, 1114153, 97288307, 97304710,
- 97321097, 97337353, 97353859, 97370886, 97402917, 97419283, 97435685, 2342919, 97452147, 97468426, 97484819, 97501222, 97517599, 3850243, 97534727,
- 21151766, 97567496, 97714317, 97763337, 97779735, 97796119, 97812503, 8175751, 33161239, 97828979, 97845379, 36634755, 19464307, 97861764, 97878173,
- 97911561, 98009255, 9519236, 98058370, 98074767, 98107404, 1785892, 6438943, 98124554, 98255627, 98353282, 14827538, 98369651, 98386051, 98402436,
- 98418825, 23838854, 21872772, 98435081, 98451479, 98467972, 98484361, 32637059, 98500740, 98517015, 98533399, 98549897, 22331529, 98566281, 98582551,
- 98599049, 98615305, 98631689, 98648073, 3309591, 98665228, 98713609, 98730119, 98746503, 9453702, 98762761, 98779268, 98795657, 98812019, 36765714,
- 98828419, 98844787, 98861079, 98877449, 22069385, 98894446, 98943107, 98959497, 98975876, 98992243, 36388996, 99008643, 99024905, 99041414, 99057801,
- 99074183, 96288883, 99090563, 88883330, 14745735, 99106965, 99139607, 99156083, 99172375, 99188871, 11075716, 99205254, 99221636, 99238020, 99254406,
- 35864707, 99270788, 99287175, 99303447, 99319943, 99336307, 99352599, 99369090, 99385481, 81608730, 99401740, 99418123, 99434517, 99450886, 99467290,
- 99483679, 2670632, 99500034, 99516454, 24838182, 99532866, 99565590, 10371091, 99582733, 99614854, 99631140, 99647500, 99664009, 19447848, 99680268,
- 99696661, 48054293, 99713046, 99729434, 99745808, 99762181, 99778563, 99795079, 41959433, 99811359, 99827714, 17809411, 99844878, 99876886, 2752522,
- 99893251, 1785896, 99909648, 98107403, 99926056, 99942440, 99958800, 53624860, 99975951, 100320016, 100467473, 32637063, 100565123, 16941079, 82313331,
- 62062727, 100581776, 100614545, 100646930, 62029958, 100663319, 18661513, 100680466, 100810886, 17088627, 100827923, 39895170, 1949702, 100892712, 73744410,
- 96796806, 100909065, 100925458, 70729865, 100941955, 100958338, 18956311, 100974601, 100991108, 77136009, 101007369, 89948290, 101024532, 101105795, 67485701,
- 91193481, 101122071, 101138441, 11010183, 101154953, 101171332, 101187607, 101204098, 17432604, 101221141, 101269634, 101286018, 101302402, 24412169, 69156874,
- 101319446, 100876309, 88948741, 101368599, 101450520, 101531801, 37585033, 101564551, 34471959, 24936457, 101581593, 101647130, 101729051, 101777542, 90964100,
- 101793810, 11468932, 101810972, 101842953, 101859460, 101875846, 16941187, 64356467, 101892893, 101990531, 102006899, 102023283, 102039689, 64684163, 10944649,
- 33161350, 102055954, 59293826, 102073118, 69140611, 102219891, 102236295, 22200435, 36634739, 102253343, 102367241, 23822467, 102383782, 102416393, 102432905,
- 33620103, 102449287, 102465673, 101875721, 102482108, 102514822, 102531228, 102563849, 102580355, 8389408, 102596626, 13238404, 102613001, 102629510, 102645894,
- 102662281, 76791942, 62062594, 102679329, 102842505, 9109635, 102859106, 2179098, 102891655, 32768234, 102908102, 8142857, 102940690, 102957858, 103006340,
- 103022727, 61128839, 103039779, 103186563, 103202947, 103219330, 103235714, 17924226, 103252103, 92536967, 103268370, 83361810, 103284738, 48627722, 103301141,
- 103317530, 103333900, 5832714, 103350435, 103383503, 103415846, 103432207, 103448612, 2031732, 103464981, 103481359, 17006608, 103497764, 103514113, 103530631,
- 15351849, 103546911, 7389241, 103563280, 103579679, 103596035, 8962060, 103612453, 103628805, 2261107, 103645315, 51314818, 103661683, 103678009, 103694348,
- 103710850, 103727130, 103743514, 19447827, 103759878, 103776277, 103792642, 103809050, 103825429, 901924, 103842597, 2736166, 1196058, 103956482, 47317108,
- 103972876, 103989286, 104005634, 66273301, 45498399, 104022018, 104039206, 104071197, 104087592, 2523943, 104727337, 104760106, 901240, 1212536, 3309688,
- 4980856, 104956024, 104759308, 27246712, 104972311, 8142871, 104989483, 105136341, 105169027, 105185411, 20365443, 18874377, 105201820, 15482889, 105235244,
- 105300781, 105349341, 105382702, 105447442, 16941186, 105463974, 17432713, 105496706, 105513310, 105545766, 105562243, 12664962, 105578505, 105594882, 105611401,
- 105627650, 105644166, 11059202, 105660629, 8994835, 105693203, 105709705, 105725981, 105742470, 11059212, 105758729, 105775116, 105791625, 16269319, 105807881,
- 105824285, 105840777, 105857065, 105873542, 105889834, 105906291, 10371094, 105923133, 105955462, 105971827, 32620679, 105988911, 2195668, 106152256, 106184761,
- 44908562, 106201251, 106233993, 106250263, 69189747, 106266655, 106283046, 106299403, 106315785, 106332166, 2342921, 48545813, 106348565, 46514188, 106365169,
- 106398512, 83165319, 106446879, 2031638, 106464049, 106512516, 98009220, 106528898, 106545286, 106561651, 22478983, 106577923, 106594322, 32456819, 106611506,
- 106643587, 43024407, 106659869, 106676358, 106692740, 11059257, 106709150, 106741778, 106758276, 106774663, 88883332, 106791731, 107070260, 107118723, 107135107,
- 107151593, 107184265, 107201138, 107249779, 107266183, 77103925, 107283254, 107512021, 107544713, 107561649, 107593990, 107627319, 107708547, 20447445, 107725624,
- 107791161, 107856698, 107905026, 107921902, 8978434, 901142, 107954627, 107986970, 108003354, 108019738, 108036122, 108052522, 108068906, 108085290, 108101654,
- 2621462, 91275292, 106905622, 107757590, 4571142, 108118044, 108134428, 78168083, 2621482, 1785862, 108151611, 108199955, 108216339, 2031645, 2261018,
- 108233532, 108282685, 3555330, 108348222, 2523164, 108413070, 108446527, 108576822, 108609548, 108625946, 48136223, 108642775, 3555368, 55033892, 108675609,
- 901146, 3244064, 108741068, 108773388, 54657050, 108789867, 108823360, 3244865, 108987202, 2867202, 109035526, 2015253, 109052398, 109084682, 109101891,
- 2129936, 109183033, 7045136, 109200196, 901130, 109264984, 109297693, 2752553, 109314074, 109330434, 109346857, 2752523, 109363205, 7602181, 109772809,
- 109790022, 23101574, 22069277, 109822067, 60637318, 109839175, 5308701, 110084936, 99893269, 110183241, 73531394, 110231982, 110280720, 110297930, 110346660,
- 110379024, 110395402, 110412619, 110478156, 110527309, 110575647, 110592029, 1769475, 110609230, 110674458, 3129356, 110707535, 1949727, 110740304, 110773073,
- 110904146, 111001654, 111034384, 6946826, 111051603, 24838173, 111116354, 111149068, 47251494, 111166292, 111034370, 18153478, 111247391, 2408486, 111264597,
- 4980752, 111313750, 111362474, 59310090, 111395671, 111427808, 44646441, 111460391, 111493721, 111525945, 111542303, 111558658, 111575061, 111591490, 111624208,
- 24838154, 111640579, 111656963, 2719756, 111673642, 111706968, 111837193, 111853922, 111887025, 111919219, 34619527, 1212444, 111935516, 18890771, 111952729,
- 111984649, 109789321, 112001882, 112033801, 36241545, 112051035, 112083004, 112164902, 112181275, 107757570, 112214054, 112231260, 112362333, 112394242, 5177380,
- 112410626, 112427019, 2031647, 6717442, 59310120, 112443394, 3686422, 112459778, 31424534, 112476591, 112508930, 112525333, 112541762, 112575326, 55033894,
- 112656450, 112689162, 112706011, 112738314, 112754690, 901158, 112771110, 112787458, 1769508, 112804703, 112869397, 112886624, 7733708, 112952161, 112984930,
- 81756163, 113082370, 64765978, 113098754, 113116003, 901151, 113164813, 5799957, 112427027, 113213450, 113229855, 3309580, 112328730, 113247076, 113459266,
- 55033894, 113492076, 113525605, 113639450, 1982493, 113656267, 113705048, 113737754, 6324240, 113754149, 4964392, 113771366, 2850873, 113950812, 113983598,
- 45465628, 114016272, 114032651, 114049052, 3211696, 114065467, 114098188, 114114570, 114130950, 56639510, 114147330, 114163769, 114180108, 56262666, 44285954,
- 114196539, 114229269, 114245654, 2196327, 51658773, 114262018, 114278456, 111607839, 114311174, 114327573, 114343941, 6324260, 114361192, 48545794, 110411842,
- 114426145, 114459153, 114492265, 114557802, 114638870, 114655234, 62341146, 114671618, 27426826, 17448962, 114688501, 114720794, 114737178, 114753548, 114770434,
- 3211895, 4980737, 114803563, 114967404, 115015779, 115048450, 115065709, 20365350, 115114862, 3211466, 115179541, 115196336, 115229098, 115261472, 115295087,
- 2129960, 115344240, 2162716, 16236556, 115393393, 115442546, 2343028, 115474443, 49086476, 115490818, 115507203, 115523615, 109215746, 115540851, 115622772,
- 115703839, 115721077, 115753846, 901141, 2130807, 115818517, 2850847, 115835011, 32817161, 115851318, 8389496, 115884058, 115900427, 115916802, 115933222,
- 115949595, 115983225, 116162562, 1114141, 116179834, 116228137, 4980767, 116244704, 116277270, 110412423, 116293663, 116310032, 116326410, 116342815, 116359174,
- 116375602, 116408351, 116424714, 116441090, 116458007, 2195488, 116490728, 116523050, 116539423, 116555786, 116572219, 116604994, 116638581, 116670486, 116686879,
- 116703254, 4964354, 116720507, 116801839, 116834326, 54657040, 51822598, 116850717, 116867964, 116916226, 79101990, 116933501, 116965388, 116982654, 6406160,
- 117014554, 108658704, 117031718, 117063682, 117080074, 117096450, 17809446, 117112892, 117195647, 117342702, 117375005, 117391362, 46530588, 117407775, 117424138,
- 50659334, 117440514, 117456907, 117473755, 2130522, 117506102, 117538818, 117555229, 75579394, 117572448, 117638016, 117686575, 117719671, 117752283, 19447829,
- 117784607, 117801845, 117833730, 47120394, 117851009, 3244509, 117998466, 118063146, 118079533, 110674458, 118113155, 46088214, 118195076, 118243349, 2342950,
- 1114118, 118259715, 118276183, 1114122, 118326149, 118456358, 118472720, 2195558, 118489142, 118521862, 18153478, 118538250, 31424541, 118554634, 118571639,
- 118603842, 118636556, 118652959, 3309574, 118669378, 27623566, 7258142, 1228810, 118702173, 118752134, 118784021, 118801287, 118850440, 48136232, 118899593,
- 2195506, 118947894, 118981514, 119014283, 119079820, 119128973, 119210015, 119226378, 110411842, 119242762, 114294805, 119259146, 5750796, 119275522, 119291923,
- 119308309, 119325582, 119390234, 119406621, 119423003, 119455968, 119488564, 119521311, 119537702, 4161576, 119554959, 4964383, 119767042, 118669349, 17449001,
- 119783462, 119800111, 116178946, 119832664, 119865647, 119898122, 119915127, 2196368, 119948177, 119997330, 120046005, 120078377, 45039618, 120095635, 93962252,
- 120143884, 1949718, 120160695, 120193383, 120226095, 120258570, 115523615, 120635395, 120651783, 2670621, 120669077, 120799263, 7733291, 120815682, 120848395,
- 120865686, 120914839, 120963992, 118243366, 111624194, 121012226, 44466186, 121028623, 46530576, 121045013, 99893270, 121061416, 121077798, 1114131, 121094154,
- 121110530, 116228106, 52215830, 121127833, 121258906, 19480713, 121323532, 116228107, 121339933, 2196303, 121357211, 121454658, 121487372, 121503770, 121520212,
- 121552952, 121585751, 2195895, 121634827, 121651212, 54460437, 121667605, 121684892, 121733262, 121765909, 121783197, 121865118, 121896987, 121929766, 2670623,
- 121946118, 121963423, 122110880, 2195595, 2195895, 122176417, 122224666, 122241456, 122274722, 122306581, 122322987, 122356643, 122404876, 122421258, 122437653,
- 122454948, 122503206, 119357545, 122519583, 122535957, 122552350, 122585119, 122601501, 1769474, 122618159, 122651557, 122683403, 2031628, 115589122, 122699787,
- 122716162, 122732565, 27246604, 122749862, 122847234, 47546397, 122864551, 122913199, 122945552, 122961949, 122978306, 122994709, 121585730, 123012008, 123043850,
- 123060656, 123093929, 123142175, 123158962, 123191318, 123208327, 123257346, 123290538, 123372385, 118243370, 123404298, 2998747, 13074444, 123420693, 17842235,
- 123437112, 123469845, 123487147, 123585438, 123617911, 123650086, 1212432, 123666458, 123682828, 123699211, 48611340, 123716524, 123781152, 123813919, 123830293,
- 123847563, 123912258, 123944970, 45613098, 123961803, 124011437, 124092437, 124108840, 122667034, 124126126, 124157990, 124174338, 121569301, 124190759, 124224119,
- 118243340, 6619190, 124257199, 124321813, 116621343, 124338192, 31424523, 124354572, 45711362, 124371377, 124403724, 2113558, 124421040, 124666259, 34701468,
- 66600998, 124715062, 124748721, 124780565, 124796968, 1114122, 55132179, 124814258, 51019807, 124928947, 107462687, 124961716, 125027253, 125075485, 125091852,
- 125108246, 49496100, 125124639, 125141002, 125157392, 55721999, 125173770, 125190210, 125222933, 125239322, 2408479, 125255718, 125273014, 125337622, 125354000,
- 125370406, 125386783, 125403146, 125419532, 125435910, 125452309, 125468684, 52609050, 125485082, 125501442, 125517834, 125534214, 125452329, 116162572, 125550651,
- 125583799, 2195540, 111247362, 125617079, 125764536, 125812988, 24838154, 125845516, 112427018, 4980772, 125862841, 126009355, 126025743, 4161552, 2113567,
- 126042530, 46514178, 126074918, 2113548, 126092218, 126156857, 126173643, 126223291, 126287910, 24838156, 118243370, 126304754, 2195970, 126353424, 126369803,
- 46219266, 126386777, 126418970, 126435350, 2752528, 126451778, 126485436, 126567357, 126648363, 126682046, 126730271, 122667027, 47611910, 17006594, 124796954,
- 126746640, 2801721, 126763967, 126796736, 126926955, 126960577, 119358402, 127025154, 109215754, 127042499, 2130355, 127091147, 8389572, 127139856, 127156229,
- 127172646, 127189004, 127205405, 127221802, 127238791, 127288261, 127336464, 2031652, 127353798, 2621449, 127435211, 16269449, 127483942, 127500290, 20365322,
- 127517639, 127681088, 52215846, 127713316, 47546389, 127729683, 127746050, 50135082, 127762500, 125583381, 127812063, 127844358, 127860757, 127877151, 127893523,
- 127909927, 118243366, 127942696, 127959343, 127992120, 128024586, 128040981, 128057403, 128090122, 47546387, 128106527, 4980793, 128123848, 128204806, 128221203,
- 128237580, 128254466, 128286786, 119242783, 128319509, 128335931, 128368746, 128451529, 128516634, 128548880, 128565258, 128582064, 99893264, 128615370, 128712706,
- 128729312, 128762331, 24838163, 128794636, 128811034, 128827411, 128843792, 1785871, 128860176, 121045007, 128876976, 4964371, 24838155, 128909328, 128926456,
- 128958688, 1212447, 128991270, 128761887, 129008587, 129139660, 129221288, 47546397, 129253386, 129270733, 129335298, 129351709, 129368121, 129384460, 129400842,
- 129417237, 32849960, 129433619, 129450010, 129466399, 2326543, 129483211, 119358414, 129532128, 129565647, 129613931, 129647568, 129679389, 129695775, 129712154,
- 129728524, 47284243, 129744950, 30588937, 129777703, 129811409, 129859611, 129892469, 129925552, 129957947, 129990743, 130040786, 130203674, 1982495, 130220098,
- 130252810, 130269186, 130285589, 2195515, 130302931, 130334741, 884867, 130351144, 130367498, 130383891, 130400277, 130416680, 130433050, 78102594, 130449410,
- 130466772, 130531350, 6193162, 130547771, 130580496, 6324250, 130596955, 125321237, 131006473, 131022985, 131039366, 81838195, 131056598, 2162710, 131334210,
- 131367895, 131416076, 131432474, 1982485, 131449816, 131612681, 24969353, 131630041, 47611925, 131694613, 131711003, 131744059, 131777383, 8389594, 131810267,
- 131875804, 72368134, 131908573, 2195888, 44302346, 132005904, 2129925, 8389598, 132022293, 132039581, 132121111, 132154335, 132203488, 2932788, 46530581,
- 132252116, 2360289, 132285410, 132449251, 132498404, 10829853, 132579433, 132613093, 132711398, 132744060, 1114154, 132792362, 2850837, 132809172, 132841488,
- 132857867, 1769500, 132874271, 132891509, 127893514, 132923404, 110232090, 4571138, 132939788, 132956166, 132972550, 132989387, 8389607, 133038099, 133055464,
- 27623859, 133104617, 133284143, 1114148, 133317610, 133497777, 130285597, 133529681, 112427020, 133563371, 2162691, 2195515, 133627947, 133660694, 19267615,
- 133678060, 108167180, 133742604, 48627738, 133759981, 133841729, 118145045, 133874670, 133955586, 133971994, 133988371, 134004767, 134021130, 62341136, 134037535,
- 99893274, 52723750, 134053928, 124190722, 134071279, 134135824, 134152230, 134168608, 125583366, 134201346, 2506778, 82001932, 134218736, 134266891, 134283279,
- 134299669, 901125, 134316910, 113115147, 134382009, 134430786, 134463556, 134513271, 47923237, 134546417, 134791199, 11059229, 126369820, 7389221, 134807554,
- 134823942, 134841330, 2195669, 901160, 134905868, 134923251, 134938630, 134955048, 134971421, 134987797, 135004191, 6127642, 135021556, 135069780, 135102502,
- 2162729, 2719760, 135118864, 135135242, 135151645, 135168002, 135184403, 24838181, 5308848, 3686402, 135201781, 135267318, 135299084, 135315466, 119358071,
- 135332290, 135364629, 135381023, 135397433, 135413819, 135446604, 135479306, 135496695, 135561242, 135577610, 135594029, 135627768, 135709352, 135741459, 135757826,
- 135774229, 135790679, 135840609, 93978643, 135872533, 135889913, 2195978, 135970882, 55377946, 136004055, 109166598, 110182835, 136036889, 2196389, 136102906,
- 132661258, 136152059, 2195927, 136250364, 136332285, 136397369, 136429683, 136446089, 136462473, 9109641, 136478726, 136495125, 136511518, 116850714, 136544258,
- 136561271, 136593495, 136643552, 136692171, 136741886, 136790054, 2196418, 8700927, 136806406, 136822815, 136840192, 136872160, 136905163, 118243357, 136953866,
- 136970271, 136986848, 137019414, 122044428, 137035835, 137069569, 2195554, 137118722, 137249795, 137297926, 137314323, 137330700, 134479882, 2834867, 137347094,
- 137364380, 117506102, 137412610, 131629087, 137429295, 20365318, 137461781, 137479036, 137527607, 137577476, 137642519, 137675781, 137757209, 51495363, 137822218,
- 137838638, 137887782, 137904603, 27852810, 137936922, 2801706, 137954310, 138036231, 138101768, 136118331, 2408463, 138199071, 1982483, 138215434, 6374409,
- 138232842, 138281995, 3211296, 138346522, 138363786, 138395674, 6455308, 138413068, 87539741, 138478605, 138544142, 138608666, 138626063, 123797525, 45531152,
- 138674178, 73646109, 138691600, 34422914, 138788873, 69156996, 138806193, 138839057, 138887234, 138920978, 138985474, 139001898, 139018252, 139035667, 139084820,
- 139132949, 139149388, 139182304, 128581663, 139214874, 139231319, 139281429, 139330582, 3473883, 139379147, 129826842, 139428315, 139460614, 126189634, 139478039,
- 139526681, 139592635, 139657242, 115196952, 139674649, 139722754, 139740186, 139788347, 139821137, 139853836, 139870246, 17088643, 139887018, 139919382, 139935746,
- 139952156, 139968514, 139984933, 2113572, 140002331, 140230678, 45907979, 140247519, 140279895, 140329102, 5325271, 140362030, 27607080, 140394584, 140428316,
- 140461085, 140510117, 120668198, 140542018, 38125871, 140575774, 140607564, 140641311, 123797525, 140787796, 140820769, 140854304, 141001007, 128991253, 141033570,
- 141066256, 47546379, 141082634, 141099010, 141115403, 141131807, 141148179, 141164583, 141197614, 141230111, 141246474, 1900556, 141262860, 141280289, 121077791,
- 141312002, 141328424, 141344789, 141361183, 141378594, 141410343, 141443110, 141459458, 47546378, 141476899, 141541407, 107757589, 141557762, 141574775, 141606943,
- 2408450, 141623338, 141639711, 141656074, 43237392, 141673508, 141770774, 141788197, 141836290, 3162131, 141852703, 126877707, 99893286, 141869068, 51593245,
- 141885462, 141901836, 141115413, 141919270, 141983756, 142001173, 142050343, 142114875, 4341786, 142147821, 120258598, 142180362, 1949724, 142196738, 142213157,
- 142229515, 142245919, 142262403, 9207817, 142279720, 142574633, 128106498, 142639106, 142655927, 142688287, 77709324, 142704756, 27705366, 142722090, 142820395,
- 50937858, 142868506, 140247092, 142885932, 142934037, 142951307, 143016928, 143065098, 143081511, 124239893, 143114272, 102793242, 143148077, 143228930, 143245369,
- 93978655, 122961951, 143261762, 143294688, 143327243, 143344523, 143410065, 143458323, 143475686, 119324738, 143507468, 114786314, 143524600, 143557068, 143590283,
- 121864220, 143654918, 122667029, 143671726, 143720467, 127713282, 143736842, 143753237, 2195522, 143769622, 143785986, 143802378, 143819227, 87048198, 143852282,
- 143884329, 143900677, 84967445, 143918126, 143982623, 143998992, 144015370, 144031746, 144048157, 24838160, 144064596, 144098351, 144146460, 2752569, 144163888,
- 1114118, 144244748, 144262035, 144310284, 144326666, 144343061, 144359455, 144375824, 31424522, 112427010, 144392214, 144408592, 5832744, 144426033, 2031647,
- 144507954, 144588802, 144606259, 27852810, 144655412, 144736258, 144753717, 72499223, 144802870, 144900102, 126369823, 57032716, 130269215, 144916506, 144932880,
- 5718031, 144950327, 1769483, 144982319, 113115162, 145015864, 145080427, 145113103, 145129488, 145145862, 5177365, 145163321, 145293352, 55754778, 145309734,
- 134299664, 145326082, 145342546, 111607824, 145376311, 145408084, 145441262, 6946822, 145473620, 145506330, 24838173, 145522698, 145539100, 145555494, 145571842,
- 6193181, 145588984, 145621008, 145637386, 145653797, 145670146, 145686554, 145702914, 145719318, 145735711, 6701062, 146063495, 59375750, 146080827, 146260034,
- 43384834, 146292746, 3228043, 146309179, 2195891, 146341899, 146358282, 109215760, 146374710, 10764345, 146408508, 146489363, 1785896, 52215810, 146505952,
- 19038239, 146539581, 146604078, 146653615, 7389222, 146686793, 114393124, 113180710, 45039622, 146735106, 146751504, 146767903, 2162726, 146784715, 131629062,
- 146834494, 4571148, 146981951, 147063702, 24838146, 147113024, 147210464, 147243062, 147275807, 147292198, 99893250, 147309633, 147390563, 3473413, 147423244,
- 2195851, 147439853, 147472395, 147488780, 147505178, 119242754, 147521557, 147537951, 147554314, 147570690, 115654677, 147588162, 147652665, 147668994, 147685397,
- 135790658, 147701823, 147734534, 147751759, 147784565, 147816460, 147833886, 79790092, 147865602, 3228739, 147883076, 148013515, 3227862, 148063301, 148111376,
- 44285992, 148127969, 148160533, 148176983, 54296602, 148226507, 148275260, 148358214, 121339942, 148455903, 148488198, 30392323, 148504592, 47939605, 148521059,
- 148554216, 148586527, 148602899, 148619739, 148653127, 148735048, 111149087, 148816784, 148849737, 148881429, 148897804, 50987034, 148914260, 148948042, 148979734,
- 148996112, 116228124, 149012501, 149029294, 149078026, 149095499, 146767910, 149160018, 111280130, 149193241, 149259340, 149324877, 118292482, 149390414, 149471260,
- 149487654, 149504012, 55869450, 149520405, 8389145, 149537871, 149635112, 149651462, 149667871, 55869450, 149684461, 130285606, 149717030, 149733397, 149749800,
- 149766170, 149782987, 149831718, 149848091, 93978630, 59310086, 149880844, 50937866, 149897439, 149930287, 149963856, 150028304, 150044698, 150061068, 150077446,
- 3850261, 150093840, 150110219, 2998704, 6701078, 150126594, 150143002, 17809410, 150160465, 150324306, 150389166, 150437907, 150454274, 150470694, 150487071,
- 150503436, 7372810, 150519854, 150569427, 150619219, 150684756, 2195555, 19267610, 150732846, 150782382, 150832213, 4980778, 6373406, 150864982, 150914135,
- 19447820, 2195931, 150962465, 150995399, 151044101, 151060492, 151076870, 151093269, 108298278, 151109642, 8388654, 151127128, 151175184, 1212442, 151192665,
- 151487578, 5309531, 151634807, 151666698, 148636495, 151684188, 118882826, 151732234, 2195508, 151748644, 151764997, 19447836, 151781855, 151814166, 151830550,
- 107429910, 151848028, 63816157, 151896101, 151912564, 28147741, 151929949, 152126558, 152174604, 4341779, 152192095, 52592652, 152256543, 7045132, 64765964,
- 2129922, 152272936, 2998303, 152289301, 152305694, 152338437, 152354818, 116228134, 152371246, 152421472, 152487009, 152552388, 152600588, 2015348, 152616962,
- 6701098, 2834903, 152633376, 152667234, 152715276, 5866232, 152732771, 152814596, 2195566, 152879114, 152896612, 152962149, 153010192, 153026598, 23855221,
- 153042965, 153059344, 77709338, 153076015, 153108783, 153141254, 47923202, 153158758, 44351490, 153223222, 153257063, 153633896, 2359307, 153699433, 153747522,
- 5177382, 153781354, 153862154, 2195689, 153878596, 153928811, 146767888, 153961580, 154043304, 154076269, 154109038, 4980741, 25560175, 154190338, 154222594,
- 154238986, 9158799, 154256496, 154371185, 154453106, 154502259, 154567796, 153878839, 154697740, 154714118, 118243334, 154731637, 154895478, 154943504, 107462696,
- 3866690, 6602778, 153191454, 154961015, 155010168, 114393126, 155041804, 155058202, 155074566, 126042127, 155092089, 116228102, 155403386, 155467839, 155500570,
- 155516938, 2196313, 155533355, 7389221, 155567160, 155631675, 2326569, 24838149, 155664526, 155697999, 155729932, 155746320, 155762698, 155779103, 67059714,
- 3212411, 155796604, 2408450, 155845757, 155926540, 145506342, 155943721, 155975699, 20365324, 141066242, 155992123, 156024842, 156041258, 2834656, 156057616,
- 156074010, 115523613, 156090798, 156140670, 122683413, 156188684, 25559139, 156205102, 117900415, 125239324, 156255360, 156303362, 139478127, 156320044, 156353665,
- 156435279, 24838159, 156467259, 156500110, 156532802, 156565949, 156599426, 4342893, 156663892, 156697731, 156746488, 156778517, 156794902, 156811696, 156845188,
- 156943493, 156991509, 58802188, 157007874, 125796378, 13074472, 157025414, 1769487, 157106198, 157122626, 157155394, 131334251, 157188128, 1114114, 157221389,
- 2523141, 157271175, 157435016, 5308904, 8994839, 157564968, 157581343, 157597753, 157614109, 11010057, 150536292, 157630474, 157646860, 2752548, 157663291,
- 2196510, 157696116, 157712424, 157728790, 157745193, 157761538, 19447836, 157779081, 157827101, 7602187, 157844618, 158138500, 158154901, 31096962, 158188683,
- 158416908, 158433291, 158449695, 8389772, 158466086, 7962655, 158482463, 150585451, 158499981, 149128334, 158548462, 158581039, 158613510, 72368168, 158629890,
- 158646282, 45465603, 158663345, 158695450, 111460655, 158712975, 124796944, 4980774, 158844048, 158925400, 158958737, 159072693, 159105034, 145145858, 159121410,
- 159137813, 128106512, 159155346, 159350810, 159367180, 159383583, 5177350, 159400239, 159432732, 46530562, 159449170, 159481858, 2196627, 159499412, 151520405,
- 7307276, 159564950, 41582604, 159645708, 2850857, 159662096, 112787472, 4980746, 142245890, 25559124, 159678548, 45875206, 159711691, 159760413, 2113567,
- 3686426, 159776778, 48545804, 159793211, 2195977, 159825922, 5079800, 159843479, 159891993, 159957412, 159989816, 47939615, 160023704, 160122009, 160170403,
- 160202781, 160219174, 160235522, 160251910, 160268317, 160284674, 160301093, 160317556, 160333842, 60113026, 160350219, 6946847, 160367439, 160399414, 160432138,
- 160448554, 160464908, 160481286, 160497676, 160514086, 160530470, 160546822, 160563219, 160579606, 155631618, 160597146, 160677900, 47939620, 160694274, 160710698,
- 160727042, 4980741, 160743426, 160759834, 10829855, 2146363, 161236124, 31375497, 161284227, 134299783, 161300482, 2031658, 161318045, 161644546, 161662110,
- 142245890, 161726485, 108707852, 161743521, 161793183, 1982474, 161825633, 161858720, 127680543, 161923112, 161939468, 161955878, 161972283, 2719754, 162004994,
- 6455299, 162022561, 162152458, 162169263, 162202783, 5325314, 162235554, 125583398, 162299967, 162332688, 116162586, 162350243, 51658754, 162546852, 7733551,
- 162611425, 162644008, 29900803, 162661541, 144621584, 8389798, 162710396, 162759127, 162792615, 110723074, 162840578, 116375766, 162857044, 162890920, 162938979,
- 162972162, 17006621, 163004458, 163020815, 125796354, 152945099, 163038367, 47546389, 5309609, 163071146, 163202219, 163333292, 163381250, 163397661, 163414028,
- 1114228, 163431597, 3212176, 125812738, 163529902, 163595439, 163627010, 163643823, 163676252, 163708944, 111198214, 163726512, 163856386, 2408474, 19447839,
- 163873969, 4407599, 164020240, 59310101, 2195914, 164037810, 901129, 7733462, 164200458, 8389067, 2195670, 157155382, 164218035, 164364300, 164380682,
- 125927430, 164397128, 3309574, 164462630, 164478988, 5947433, 5324876, 164495386, 164512948, 19447824, 164561433, 164626866, 164659729, 164692451, 164725623,
- 164757588, 107462696, 164791477, 2130395, 164888616, 164904972, 164921370, 164937729, 1769512, 164955318, 165070007, 6373464, 165199893, 165216315, 19267683,
- 49790992, 165249054, 165281891, 165314572, 165330955, 165347760, 165380530, 165414072, 165478431, 165494786, 7389213, 165512377, 27624000, 165658640, 165675046,
- 165691867, 165724594, 165756956, 50249754, 165774522, 3850280, 165807291, 165855298, 165889212, 166053053, 5308558, 166215696, 116162570, 166232080, 154894362,
- 166249662, 166346795, 115523610, 107462682, 129237028, 6455318, 166380735, 166543386, 3375120, 166559803, 166592983, 166626496, 166674442, 166691350, 51282347,
- 166724801, 166805530, 166821890, 166838282, 48513053, 2719746, 166854677, 166871052, 165134362, 166887511, 166937794, 1769514, 166986947, 167051722, 167085252,
- 1769478, 167445701, 167494854, 5308482, 167560391, 10829864, 4981960, 167624788, 167657482, 167673885, 167690266, 167707161, 167773385, 167821771, 167870474,
- 167886877, 167904458, 167952468, 167985229, 46514207, 168018838, 19267641, 168067084, 167985209, 168083458, 168101067, 168133836, 168181791, 2196058, 168199373,
- 168313045, 168345858, 10944535, 147243092, 42418182, 168379598, 168427744, 168461519, 168527056, 168641502, 6373518, 168690123, 168738826, 168755229, 168771610,
- 168788398, 2147497, 2162698, 2195540, 168837614, 168231371, 168869909, 120979487, 168887505, 45023263, 168951839, 137102546, 168969427, 169280724, 169346261,
- 169443465, 33620102, 169460950, 8602839, 8602840, 8602841, 169526490, 169623701, 33620083, 169657563, 169705766, 8389846, 169755868, 24838175, 169821343,
- 169854173, 169902106, 169919710, 169967654, 117751810, 169984060, 170067113, 170099935, 2506768, 170148785, 170181836, 170231008, 8389857, 37437589, 170311695,
- 170328080, 170344488, 46088230, 170360834, 170377226, 170393629, 27623454, 56131586, 170409986, 170426378, 170442781, 150913050, 170460386, 170591459, 170672369,
- 170705025, 170737680, 170754059, 1982476, 170770514, 170803246, 170852404, 170885338, 170917995, 170951568, 170983511, 171032588, 171050212, 171099365, 2850822,
- 171181286, 171279591, 115720504, 171328744, 171409434, 171425794, 171443433, 171491347, 55263234, 171507743, 1900570, 171525041, 171556923, 171589634, 81166347,
- 171606046, 116375659, 1901004, 171640042, 171720705, 171737128, 171753503, 2131113, 171769922, 171802645, 171819030, 171835403, 42598875, 171851842, 171884570,
- 171900934, 47923240, 171917767, 171967723, 2015261, 172016034, 13549579, 172048390, 172064774, 48513036, 172082412, 172459245, 19252462, 172524423, 172573209,
- 172639471, 15073283, 172672240, 172769336, 172802080, 172836081, 20365314, 5177372, 172901618, 172967155, 173016308, 173080658, 173113832, 47939596, 173147381,
- 173228792, 155631628, 173260831, 173277226, 173293590, 173309973, 173327606, 7356473, 173342749, 173359106, 19447834, 173375542, 173408266, 173424661, 173441108,
- 119357877, 173475063, 173555925, 173588738, 173621378, 8389880, 173637655, 173654165, 8389881, 173688058, 173719608, 5309303, 173753595, 173801512, 173818703,
- 173850639, 4980751, 173867020, 19252112, 173884668, 174015741, 174047238, 1900581, 174064075, 20365322, 162857019, 174112852, 116228134, 174146061, 174194747,
- 79101981, 174227468, 3473419, 174245118, 174359703, 174408527, 174440458, 174456898, 145506335, 174489659, 174522409, 22478869, 174538854, 46350443, 6701058,
- 174571562, 174587920, 13549606, 174605342, 174637058, 174653461, 135807007, 175015168, 175080705, 175146242, 175357954, 107447105, 175375619, 175439874, 175456293,
- 6701084, 175472724, 175506692, 175571032, 5603364, 175603766, 45023248, 119357743, 175637765, 3227678, 7389194, 175702047, 175718883, 137379861, 175751184,
- 175768566, 175801546, 175849484, 15351837, 175867142, 176047367, 176144440, 176177591, 176209979, 115179530, 176243881, 176275466, 139477623, 176291932, 176325040,
- 176357809, 176390204, 176472085, 176488469, 2195759, 176504851, 2162707, 176522129, 176570452, 27246602, 176604424, 176734270, 176784649, 176816174, 176866570,
- 176899339, 176997270, 177046796, 177094659, 1114115, 177111987, 2637840, 177144111, 1114133, 177177869, 31490050, 177259033, 177325326, 1933352, 177390863,
- 49774604, 68583426, 177440016, 177586186, 177603857, 8389906, 177651796, 177684501, 177700880, 24838170, 177718547, 177767700, 177816439, 177848332, 147554330,
- 177864764, 177946634, 177963037, 103284767, 177979829, 178012166, 178028575, 178044947, 56508536, 178061388, 178095381, 178291990, 178339862, 141459472, 178356513,
- 134037544, 178389042, 178422667, 178488599, 178537752, 178602071, 178652441, 178782234, 178798608, 135184400, 133382166, 178814991, 901135, 178831663, 178864212,
- 178896978, 3227704, 178929676, 178946058, 178962438, 2113573, 178979915, 179044411, 2196683, 179078426, 111607839, 179159071, 179175467, 179208276, 179241058,
- 179275035, 179373340, 179504413, 118882363, 179651870, 179699734, 179716112, 2179112, 179733791, 179781651, 2195951, 108707842, 179799328, 179863773, 179897633,
- 180028706, 170442754, 180077003, 131334746, 49905685, 3260475, 180126147, 2670614, 180158548, 6946826, 5325854, 180192547, 180273168, 179765305, 145506306,
- 180290852, 180338690, 174424121, 180356296, 180387856, 180404264, 47546374, 180420620, 180436994, 115785757, 180454693, 3227872, 180520230, 180764729, 46530572,
- 180781140, 121028619, 158253095, 180815143, 180929404, 180977676, 116228115, 5308705, 4980757, 180995368, 127713301, 181043206, 99893279, 181060905, 181142793,
- 181174575, 181208362, 181257515, 181322282, 181338141, 181354508, 181371434, 181387286, 181403650, 181420072, 181436437, 181452812, 181469738, 181485583, 181501978,
- 181518352, 119259193, 181535257, 181601580, 2195786, 181862973, 181895283, 181911684, 181928066, 181944329, 32637062, 181960734, 181993493, 182010776, 182059455,
- 127909890, 182091816, 50872331, 182108262, 182140940, 4980778, 182157324, 4964373, 2261023, 182174749, 182222858, 182239238, 110133780, 182256458, 182305708,
- 182370344, 182386754, 4964358, 182420781, 46530591, 182469145, 182535470, 44646441, 182584623, 182632470, 27607061, 182650160, 182846769, 47317021, 182912286,
- 3850266, 182960182, 47415327, 182994123, 2195882, 183025693, 183042164, 183058473, 44171286, 183076146, 176734210, 183125299, 17220609, 183174452, 183403829,
- 183566390, 45023242, 183599130, 180977666, 2196470, 183615918, 183664666, 183681067, 183715126, 183762975, 128090124, 183779359, 183795817, 7634960, 183829815,
- 183944504, 184025613, 2113574, 184074256, 5177385, 184090655, 184107034, 55722003, 184124729, 114294805, 131334564, 7144289, 178880514, 184238082, 184255078,
- 184287234, 184303654, 184320016, 11157520, 184336471, 184386874, 184435680, 122486843, 184483900, 184567099, 48676870, 184598831, 47088087, 184632636, 184680511,
- 184713222, 1933318, 184730941, 184860698, 2195888, 184877581, 184926246, 124796930, 184942632, 184959005, 184975426, 185008431, 185041003, 185074424, 185107774,
- 185237516, 185253926, 185270310, 2196303, 45711372, 185286740, 185319450, 2195522, 118882363, 884738, 185337151, 185401354, 185419072, 6455318, 15351850,
- 185450527, 185466886, 185483314, 185517377, 185532438, 50266152, 185581570, 6897696, 1818626, 7389215, 185599298, 185729050, 185745467, 185778479, 185810970,
- 20365341, 185827412, 185861443, 154943490, 185942026, 185958855, 186007568, 186023952, 186040341, 73531413, 186057159, 55033885, 186105962, 186189124, 186270155,
- 186319296, 1114141, 186417994, 125583402, 186467653, 186597414, 27623727, 186615110, 124863663, 3244944, 186729799, 8389960, 170803259, 186826778, 170803660,
- 186844489, 186893642, 115785757, 186959179, 187072983, 187106636, 187204941, 150569443, 6947931, 182960140, 187269162, 187285506, 22216730, 3309609, 187678742,
- 187695241, 187711618, 187727901, 187744274, 2621450, 10993799, 187761999, 188055579, 188088811, 188121625, 188186861, 188219398, 188236355, 188268565, 188284969,
- 47317011, 19252560, 188301913, 188335441, 188432415, 184926229, 188448770, 188465163, 188481538, 188497941, 148176962, 188515666, 188662063, 188695891, 188761428,
- 188825681, 126599178, 188859733, 189007190, 189054997, 8389975, 59310082, 50937877, 189071376, 4980742, 189088680, 189120550, 25559124, 189136898, 2621461,
- 901157, 189153318, 189169702, 189186079, 189202871, 189235202, 189251603, 122601484, 189268973, 189349948, 189431861, 189464578, 7307270, 189480986, 189498712,
- 159481862, 150241311, 189546526, 129876050, 189579295, 49938438, 189596185, 110674885, 189662553, 189693994, 5342554, 189710346, 189728091, 189825058, 189941084,
- 190038022, 190054402, 190070813, 190087184, 190103578, 190120411, 33112086, 190154077, 6701093, 190203230, 47611930, 190366658, 190399839, 190513164, 190529543,
- 190545941, 128581658, 190562344, 190579535, 154714152, 190611487, 190627856, 190645057, 190676994, 143441958, 190693388, 180944995, 190711136, 3212297, 190775383,
- 190825825, 190874978, 190939223, 190989667, 191053855, 2359298, 191071588, 2523158, 191135746, 191152184, 126287891, 132580697, 191184918, 123207746, 191201289,
- 191217687, 9519113, 191234094, 191284581, 191546654, 2195510, 2195563, 191594512, 116015130, 130859023, 191612262, 2261002, 191677799, 112476186, 125796383,
- 191743336, 191857669, 191938571, 57032726, 191954960, 58769429, 191972480, 192021865, 192120170, 192217160, 192284011, 192365932, 192463760, 142950459, 128843802,
- 192496076, 120979487, 1212428, 192529773, 66928656, 192578926, 192626728, 192643103, 192659883, 192693615, 2998308, 192759152, 119570472, 192807644, 192839739,
- 192872474, 127795503, 192888858, 192905222, 192921621, 192938012, 108167208, 192955761, 2408476, 193152370, 136740892, 1769482, 193233821, 5309811, 2195931,
- 193316040, 128843807, 110134644, 193347668, 193381749, 8390006, 182288475, 193447287, 2015260, 193529208, 193593363, 2523172, 193610648, 193660281, 193709434,
- 193790036, 113115165, 193824123, 193888284, 19267606, 2621459, 111214649, 49496066, 193904943, 2179103, 193937468, 194019435, 194053330, 194084890, 2113547,
- 194102474, 99893258, 194150402, 194166805, 8389038, 194183178, 194200956, 194266493, 128172042, 194315339, 194379782, 194396648, 27344898, 194428944, 194445943,
- 194478092, 194494474, 194510869, 126599180, 194527298, 194561406, 131334635, 194757608, 4980764, 46514182, 194807167, 2326534, 194889088, 131432479, 195052929,
- 195102082, 118292511, 195166685, 8388695, 128581654, 195199007, 192479235, 195216682, 116850709, 195264564, 884776, 195298691, 195446148, 170999892, 195511685,
- 195559476, 195593606, 195657749, 195674114, 195690507, 141459487, 195707884, 195772447, 195788884, 195821584, 195838061, 195872135, 195903500, 195919874, 118685717,
- 195936286, 27852802, 195969043, 195985439, 46120998, 196002710, 120602665, 196051013, 196084144, 196116913, 119997330, 129237032, 196149270, 3129375, 196165740,
- 196198459, 196231189, 196247618, 196280423, 196363656, 196396219, 180600871, 196445577, 196575291, 196608012, 5866526, 196625438, 137052172, 196657236, 196691338,
- 196756875, 5799993, 196804637, 196820994, 20365323, 110411860, 196837468, 1933317, 196871564, 93978636, 196952586, 137379846, 196984919, 197034043, 112608341,
- 197068173, 146456605, 197182862, 197247007, 197263389, 126599184, 1900565, 197279765, 197296210, 197328912, 197345295, 2801686, 128843817, 197804169, 197820531,
- 197836934, 197853319, 197869698, 197885961, 197902467, 197918722, 17432586, 197936528, 198231441, 198295567, 198311957, 149815327, 198328358, 1769510, 198346130,
- 198426650, 198443037, 189202463, 198459418, 198475792, 198492170, 198508575, 198524934, 198541362, 198575492, 116228117, 2850828, 198641043, 198721562, 1114149,
- 7307302, 198737936, 198754404, 198788500, 198852624, 2801692, 198869013, 198885398, 198901772, 198918368, 198950943, 194691506, 198968725, 199016464, 199032838,
- 199049237, 7307280, 128892930, 199066513, 199115182, 45908006, 199163914, 33390839, 199181718, 42434579, 2539560, 199327756, 199344134, 199360543, 116376154,
- 199376980, 199409706, 199427479, 199508049, 199542168, 199590888, 8389522, 7143895, 199639106, 124272706, 199673241, 133660698, 199737370, 199753743, 128974870,
- 199771546, 199868641, 199902377, 29622287, 199933974, 199951375, 199999526, 200015874, 200033249, 200066459, 200130582, 200148380, 200196530, 200228914, 200262503,
- 200295837, 200344990, 149569538, 200376404, 200409522, 168722463, 200442288, 200476063, 7389213, 200556903, 126599184, 200590587, 62341132, 200638564, 200672150,
- 171000679, 200720396, 200736825, 46514207, 200753584, 200786354, 200818830, 2326636, 200851458, 4964374, 200867842, 1966106, 200885664, 201032725, 1918152,
- 201080937, 201115041, 933890, 201162773, 201179228, 201213257, 201261143, 5308498, 201311650, 201360377, 201441763, 201475491, 201555978, 122503189, 201572390,
- 3850242, 201589929, 126763609, 201622264, 201655716, 201835941, 201933332, 201982386, 202014751, 125812738, 202031106, 202047498, 2719756, 202063884, 49496090,
- 202081702, 202163623, 2261034, 202309648, 3309606, 202326082, 202360232, 202440714, 202458537, 202490703, 202522645, 127795266, 202539038, 202573226, 8390059,
- 202687916, 202768687, 202802605, 115523610, 202851758, 202999215, 203080171, 203112494, 2196368, 203162280, 2342918, 203195824, 203425201, 8389011, 203572658,
- 2129986, 203638195, 203703732, 203752885, 51871760, 203818422, 203867575, 204064184, 8388876, 204144642, 52625427, 204162489, 204210434, 204244410, 2195947,
- 204374022, 5177350, 5325759, 204391627, 204424635, 204571586, 171835402, 128581642, 204603404, 204619781, 103743519, 204636219, 204668957, 27852802, 204685343,
- 204702682, 17448976, 204751377, 204783632, 204800042, 17006634, 204817852, 204866448, 204898341, 204914719, 204931084, 2801669, 204947468, 204963956, 204980657,
- 131760131, 131891205, 205014461, 27623508, 205063614, 24281227, 2342928, 19464221, 205193292, 47611942, 205227455, 205424064, 205471760, 135397397, 205489601,
- 205521743, 2196058, 205555138, 205602818, 205619210, 44531718, 205636184, 205668364, 205684960, 205717535, 205733972, 205766694, 205783056, 150110250, 205800899,
- 133709852, 205848602, 205865392, 128892934, 77250562, 205897759, 205915075, 185810982, 5309892, 205964741, 206210452, 3178498, 118030420, 206276038, 206325191,
- 206667925, 206702024, 206799251, 206848149, 206880901, 20299908, 164036739, 206913595, 206947785, 207012143, 27852819, 2932835, 207046090, 207192129, 8389145,
- 27852840, 207241262, 59310101, 207291851, 207488055, 180602316, 118883789, 207520178, 207553998, 207650875, 151715871, 207685071, 8389461, 207782996, 207831800,
- 207865296, 207962142, 194510858, 207994882, 208012411, 208044098, 208076838, 208093186, 2670598, 208109583, 208125964, 128892954, 208142348, 208158730, 17006598,
- 208175164, 208258513, 208307666, 208453662, 208486402, 65896458, 208503655, 2342924, 208537043, 208585007, 148602890, 208618384, 208651732, 208700885, 208830495,
- 121077779, 208848342, 208896021, 46530600, 208912422, 45498380, 208930121, 208979415, 209043477, 152305806, 209061208, 209109924, 122683414, 209158228, 209190994,
- 209224703, 209272863, 209289517, 152354832, 184926239, 209323480, 184713256, 209420310, 113229840, 3588856, 209437132, 209469466, 209486671, 113229864, 209520089,
- 209748459, 49791007, 209780796, 209864154, 209946075, 8175639, 46219270, 199492441, 210026527, 210042882, 1785875, 210059286, 115294210, 210075703, 210141200,
- 128991242, 172835211, 210157574, 128958514, 210174051, 210206735, 1785878, 210224604, 183975938, 210273310, 2359308, 29261862, 210305067, 210337821, 29902301,
- 210355678, 210469167, 210501642, 210518018, 132857858, 204537867, 210534421, 210550810, 210567184, 210583567, 42598832, 210601240, 210665532, 210747485, 210796603,
- 210830427, 210862118, 210878767, 210911709, 210945503, 211058714, 211075074, 211091498, 211107880, 7307283, 211124331, 110249440, 211157051, 2195680, 211189825,
- 17809423, 29769759, 211240417, 211355106, 211551715, 36241545, 211615911, 8603108, 8603109, 211665602, 211714197, 211747924, 211796945, 133414950, 211845163,
- 211878795, 2195508, 130285574, 211943426, 211961063, 133414943, 155795485, 212009197, 169787430, 45023258, 212043238, 212090891, 124862927, 212108775, 5505062,
- 212256232, 212304871, 27852806, 212353026, 212369434, 27852831, 133677084, 154797545, 212385813, 24297531, 212402635, 212452842, 212600299, 212631574, 212664351,
- 212680706, 141295642, 212698604, 212795423, 135741478, 212811788, 212828186, 212844550, 212860930, 115179546, 212877314, 45465626, 212895213, 212959535, 189251603,
- 212992010, 139460627, 213009291, 123371530, 213075438, 213188646, 213206360, 31424515, 213255663, 213320127, 122667039, 116703263, 30392342, 4161552, 213353968,
- 213598274, 213630986, 119226389, 213647426, 2359730, 213680431, 213712934, 213730716, 213778864, 19267595, 213811211, 213828927, 213893160, 118243334, 213909526,
- 146653196, 213926315, 213958663, 205520927, 200556566, 213975062, 213991436, 20365338, 214009329, 2621478, 214040616, 186040332, 214056972, 214073360, 133611523,
- 214091250, 214286429, 2195759, 214335630, 214368275, 48676886, 214385240, 214418931, 4571176, 214450284, 214483044, 214516167, 214564951, 2130205, 214615209,
- 214646805, 214663180, 214679594, 2162728, 5325275, 214697460, 214746613, 45711400, 214794252, 214810650, 214827915, 215156215, 215269392, 215285770, 215302175,
- 215319440, 4980772, 215352186, 215400919, 215433218, 215449626, 215466015, 215482425, 2195693, 215499671, 215547925, 215564319, 19267603, 6422559, 191053827,
- 215582200, 215745474, 215777318, 10829862, 215794143, 120094749, 215826434, 51068939, 215843118, 47546383, 215875596, 5292061, 215893347, 215957506, 8390121,
- 180764712, 215974735, 216006672, 118243354, 216023082, 193134618, 216040953, 216122874, 216203739, 7734537, 160760247, 216237563, 216285220, 216301570, 67043338,
- 216317968, 216334378, 216351152, 216384418, 216417788, 216450557, 216596564, 216630241, 216662031, 216679247, 216712702, 216776716, 2801674, 216793104, 165330986,
- 216809488, 197328922, 216825872, 216842255, 216858646, 216875440, 216909311, 217219103, 217235482, 217251859, 160579610, 217268761, 217333779, 217350165, 217366540,
- 5292058, 141000720, 115179549, 217384448, 55443466, 217497692, 217530406, 217546783, 217563146, 137854988, 217579535, 217595906, 217612309, 217628759, 217677911,
- 5718042, 217727078, 217759746, 46219283, 217776147, 217792549, 217808901, 2719775, 217825328, 217874474, 217890856, 93945894, 217907211, 217923624, 152272906,
- 217940025, 217956392, 217972774, 93945862, 217989139, 165134374, 218005558, 218038287, 218054682, 218071052, 217972742, 6455317, 218088961, 218152966, 152272915,
- 218169356, 110592012, 218185738, 3473450, 218202789, 218267658, 218284945, 218333250, 195592198, 218366888, 218398766, 2129959, 218448302, 218497132, 217366530,
- 218529811, 218546202, 218562576, 5292060, 218579028, 218611738, 149094412, 218628149, 218662402, 218742806, 140607564, 218759180, 6946837, 116228136, 218775583,
- 93945885, 218793475, 218873960, 218923010, 218939430, 47120422, 208994783, 218957316, 118652959, 219004964, 219021331, 217301014, 219037736, 219054539, 219103314,
- 219136432, 219168827, 219201592, 219234316, 219250709, 219267098, 219283472, 219299897, 3457055, 219317765, 219416070, 219463711, 219480085, 219496479, 126763442,
- 219512834, 219529273, 3850252, 219545628, 219561995, 219578370, 49774618, 219594763, 219611147, 219627532, 51036181, 219645447, 219725836, 219742432, 17006599,
- 47317003, 219775042, 219807754, 219824975, 219856922, 129957931, 219873296, 219889669, 191053855, 219906060, 25559138, 219923976, 220037122, 220053546, 182386690,
- 220069898, 218759180, 220086702, 158253735, 220136969, 220267025, 130203667, 220300810, 220348454, 119996846, 220364821, 8389054, 220382731, 2197004, 220496398,
- 220528700, 220612109, 2195951, 220742393, 220774703, 220807190, 5309892, 220824399, 220857870, 220906802, 220954640, 220971046, 220987408, 116228138, 158744607,
- 221003786, 221020219, 221053387, 221102106, 221118479, 118883161, 221136399, 137445407, 221233164, 55033882, 213778434, 221249538, 221266340, 221298710, 221315074,
- 208896015, 205946902, 99516447, 137052162, 221331487, 221347894, 221382131, 46219300, 221414928, 221560842, 5309969, 221577232, 221593629, 221610020, 2032423,
- 221626384, 2196746, 5537830, 221644306, 221692849, 221724683, 221741068, 221757461, 221773840, 22216733, 221790702, 32849932, 221824531, 221906452, 221954177,
- 5308653, 221986945, 222019726, 222052494, 44351526, 222086677, 222299670, 222332439, 222396456, 222413793, 47939600, 2196480, 222446056, 222478348, 222494722,
- 111280154, 62341122, 222807577, 222953951, 222986252, 223004186, 223051860, 223084546, 223101559, 223133718, 223150146, 223182867, 52215824, 223200795, 48070675,
- 223282323, 223315195, 223364034, 223396828, 178356226, 223430172, 223544861, 223608848, 4751376, 195690506, 223626782, 223674384, 2801693, 223690792, 223707162,
- 116375611, 45039638, 112607291, 223724429, 116228102, 223806414, 25559479, 223838234, 205881375, 223854608, 223871005, 223887391, 223903968, 1196063, 223938079,
- 224018491, 44302374, 191905897, 224051266, 224084505, 224149975, 224182282, 132792362, 2179083, 5308475, 224200224, 224362558, 224411686, 224428068, 224444431,
- 224461024, 224493604, 224509967, 112738326, 189202442, 224526766, 130285587, 224577057, 224608272, 224624666, 224641035, 224657420, 224673798, 224690217, 224706562,
- 3145739, 224723028, 224755750, 224772127, 126599183, 193314854, 224790050, 224839203, 224886800, 224903183, 224919578, 224935952, 50511893, 216875855, 224953167,
- 224985098, 225001474, 225018665, 225052196, 8390181, 134037520, 225116191, 225132587, 225166681, 225198998, 225248806, 225313768, 4980767, 225363495, 97435660,
- 225427472, 225444064, 225476629, 225494568, 225560074, 225607718, 225624494, 225673232, 1753103, 225689622, 225705996, 225722836, 225755439, 225789481, 225935453,
- 225985664, 226033683, 226050070, 202014751, 166936578, 226066891, 226115605, 118521896, 118178846, 226133546, 226214933, 226263947, 226328642, 226362923, 10829826,
- 226476174, 226508884, 226541624, 226574402, 2129951, 226608303, 226640331, 47546410, 226690604, 226721813, 56311824, 226739757, 226787394, 226820108, 226836518,
- 48676902, 226854446, 226902026, 3178517, 226918431, 226934901, 226967618, 227001903, 2197040, 227065962, 227147816, 227164599, 227198513, 122110220, 227460658,
- 227524638, 227557378, 227573842, 227606571, 227639327, 1769491, 227657267, 5603368, 227722804, 227770390, 227787055, 227821109, 227901442, 227918286, 45465610,
- 227967494, 228032522, 228048917, 228066123, 116376012, 228131118, 228163586, 228179989, 78905365, 228196373, 228212767, 228229136, 228245514, 135594029, 46497794,
- 228262425, 228327455, 228343814, 228360251, 116376074, 228394550, 228442143, 228458498, 228475415, 228507714, 228541408, 228589580, 228605962, 228622775, 228655125,
- 228671519, 228687891, 228704268, 228721079, 228753430, 156434463, 31424518, 228771383, 228851731, 228868118, 228884939, 228933658, 228950047, 228966402, 228982805,
- 228999234, 229033528, 229097931, 229146655, 229163019, 229179394, 229195832, 229228610, 229262905, 116228103, 19251239, 229361210, 93978640, 206176294, 229410363,
- 22216715, 10027669, 8603196, 229606603, 229639741, 2195977, 3473437, 1212437, 229738046, 4980773, 229802000, 88948762, 229819967, 229869120, 229949446,
- 147013653, 229965890, 99893279, 229998623, 1196043, 121339907, 2113576, 230016577, 230131266, 230162437, 230178825, 67420189, 230195485, 230227997, 230244364,
- 1949737, 230261195, 230311491, 42434562, 230457384, 129400870, 230473730, 230490219, 230522911, 230540868, 25559399, 230604831, 44466195, 230622789, 135643176,
- 230688326, 230769099, 2195486, 153191209, 125583370, 140247124, 230817794, 230835121, 53641219, 231309348, 231325736, 9207845, 231343688, 231671369, 125927540,
- 231751785, 15007745, 231786058, 224772112, 231899615, 231933515, 25559472, 231982668, 232030237, 216776720, 232046658, 74072080, 232079444, 1900554, 232112171,
- 232144961, 232195661, 232243307, 232276034, 1769493, 232310350, 4980739, 232358191, 232392271, 232440991, 232474192, 42598888, 232554733, 232587291, 108315095,
- 232621649, 148996127, 232767725, 4980743, 232800258, 232816662, 27852816, 2326530, 232833046, 232849439, 1114138, 110133313, 232867410, 232915028, 232947819,
- 232982099, 233047636, 233145941, 233195094, 48676885, 29900821, 233260631, 233324574, 233357396, 233390508, 233456048, 147833886, 233488471, 233539160, 233619499,
- 233652290, 233685004, 233701665, 233734602, 6324226, 233768537, 233816593, 233850458, 84934666, 233883227, 234047068, 234127426, 234161757, 49790978, 234210910,
- 234307596, 1982502, 234325599, 234438668, 195264514, 234456672, 234636897, 234717268, 234750406, 234782736, 234799146, 234815920, 234848690, 127909890, 234881045,
- 234897420, 78807066, 234913820, 234930235, 77250600, 234962946, 234979368, 2326566, 234996138, 235028492, 24838182, 235044951, 235094022, 235110422, 235126800,
- 235143183, 235159651, 235193260, 235257858, 235274259, 235290640, 235307018, 119357539, 235323408, 235339795, 235356172, 235372550, 235388987, 235422225, 55869462,
- 235456098, 56311820, 216727590, 235618306, 235634714, 51658771, 8390243, 235651108, 235667471, 235684299, 235734628, 235880494, 27246630, 235930179, 235962399,
- 235978758, 235995155, 236011536, 3473423, 5309352, 236027963, 236060682, 236077085, 56721434, 236093469, 218415116, 153944079, 236109876, 236142630, 236158978,
- 144048170, 236175390, 236208147, 236224533, 236242533, 236290074, 236306491, 236339202, 47546425, 236356043, 236405207, 236437975, 236470274, 17154088, 236486682,
- 22888479, 236503071, 3473465, 236519532, 236552204, 180699157, 236570214, 236701287, 150241292, 236750440, 176504834, 68550668, 236815216, 236863938, 236896262,
- 236912661, 236929026, 236945423, 236961814, 170344484, 236979817, 237045354, 237241963, 110723094, 237356652, 237471208, 237519702, 237569645, 8389883, 237651182,
- 237682772, 237717102, 124796959, 150241316, 237782639, 44613670, 237830991, 121339914, 237864560, 37439089, 238141499, 238175318, 165134365, 238223362, 6537323,
- 238240017, 150241282, 238272550, 238288955, 238321674, 140247094, 238339698, 238519923, 157220880, 184042073, 238585460, 238665833, 2195537, 238698553, 238714882,
- 2195555, 238732151, 238764072, 173850655, 1114131, 238780895, 238813227, 238845954, 144048166, 238862573, 238895141, 238911500, 1212422, 238928196, 238978677,
- 239109750, 239157273, 239191671, 239257208, 239321148, 73531432, 239404665, 239452697, 2129959, 177963014, 239518297, 239551416, 239600159, 239649961, 93978664,
- 239681620, 239715962, 136740892, 2130767, 239847035, 239910950, 163545142, 239928956, 179814481, 239976460, 239993346, 240025621, 240042023, 240075512, 240107601,
- 240140304, 240156896, 240189442, 121110540, 240206349, 240255083, 48627750, 240289405, 240567934, 130285578, 240682623, 240780928, 240828418, 146456604, 240845103,
- 240879233, 6374746, 240943592, 240977536, 154042671, 204374045, 241025108, 241058016, 241092226, 241157763, 241223300, 2195927, 112936105, 241352716, 241369098,
- 150913053, 241385902, 241434650, 121045011, 241452207, 45056002, 241485445, 141819944, 241582106, 241598466, 241615479, 241647632, 241664019, 116228118, 241680406,
- 175669250, 241696849, 125927462, 241730030, 241762315, 241778700, 241795093, 241811487, 241827859, 2523138, 241844308, 29622310, 241878662, 241942540, 81166346,
- 241959966, 241992693, 2196591, 242057226, 170999867, 242075271, 242188356, 242238358, 242286630, 241664015, 242303039, 242337416, 133677084, 242384898, 242401382,
- 242434090, 242450444, 242466854, 2359302, 242483210, 2195519, 242499594, 242516257, 50659330, 242550409, 242647050, 4980765, 242665098, 242795720, 242828939,
- 242894099, 242943176, 119799864, 242976396, 243205773, 2998288, 243368239, 3211369, 243400742, 243417126, 24838160, 243435150, 243499037, 243515521, 243549839,
- 243597742, 94109722, 99893269, 243647610, 5488642, 3211363, 243712142, 243744875, 243778449, 1818630, 233193478, 162791446, 243828368, 243925029, 243941392,
- 128843802, 109215775, 243959441, 244023298, 244039706, 244056130, 244089741, 244170764, 7389210, 152256543, 244188818, 198328322, 244334630, 244351035, 244383770,
- 5325232, 244401811, 244482091, 118636554, 94109722, 244515703, 244547650, 244582036, 244680341, 244744274, 244777878, 244827798, 244875276, 244891650, 1933338,
- 244909150, 6619278, 244957200, 244973578, 24838186, 244990415, 245022761, 118883789, 245040791, 245237400, 124862573, 245301357, 2326540, 245335705, 55853082,
- 245384858, 133414933, 245497902, 245547046, 167706656, 245565083, 7389205, 2195729, 245663388, 245760029, 8390301, 245778078, 48627743, 245841932, 245859113,
- 245892504, 245940262, 1982505, 245958303, 246120942, 8388654, 246153519, 246186527, 246236246, 246284300, 246300698, 3702786, 246318412, 77250562, 246416256,
- 246466208, 117751839, 246498167, 246530054, 246546453, 246562832, 2359312, 246579233, 246628363, 45023244, 246646058, 246694347, 45023234, 246743947, 246810065,
- 246857770, 246874154, 144048159, 246890536, 246906946, 246941345, 6373665, 247005292, 155762726, 247038482, 247154338, 247251903, 49479708, 247285411, 54820875,
- 6619188, 247350948, 247529923, 247562542, 247595046, 247611695, 247644189, 247660598, 247693333, 247710560, 52215824, 247776194, 229965834, 247808021, 247824406,
- 247840779, 147013663, 247858853, 248039078, 193200144, 248086948, 180174864, 248119755, 248168887, 248201228, 176504858, 248217684, 248252071, 125583382, 143507458,
- 248414235, 248447005, 248463391, 248479750, 248496134, 248512524, 120094731, 49479695, 248530600, 248610828, 111067138, 248628694, 248678057, 248791059, 38125634,
- 248807446, 248823846, 248840208, 107757587, 248857801, 248906187, 248956501, 249005738, 23380244, 234962946, 249120427, 249200642, 249218732, 249266186, 1769488,
- 249282562, 159760394, 249298954, 149815327, 249317037, 249610813, 105463939, 249644718, 249708556, 1114228, 249724940, 249741338, 7389191, 249757698, 55279622,
- 249775791, 135643138, 249890480, 250020098, 250052738, 8603313, 250069015, 9912469, 250085402, 113229845, 250102195, 5310130, 250136243, 250200665, 241991706,
- 250232878, 250282089, 250314771, 250331174, 250347532, 200556570, 250364392, 250396909, 10829850, 250431156, 250512207, 250545226, 145506320, 250576915, 250593296,
- 2801679, 250609771, 250644149, 250709686, 250906295, 250970128, 126287909, 121585676, 250986534, 251002882, 251019346, 251052119, 251101487, 251133971, 234831938,
- 251150417, 251183116, 251199514, 251216304, 5177355, 251249320, 251281437, 251297794, 251314195, 251330581, 52215844, 251348136, 251396106, 5865511, 251414200,
- 251494419, 251510786, 3178534, 251528889, 6701061, 251609520, 251643578, 251691107, 251725499, 251789328, 135184410, 3309584, 251805762, 251840188, 52215848,
- 251986832, 252018776, 252051475, 252067862, 252084226, 252100646, 3309570, 252117471, 112754726, 252151485, 252233406, 131629087, 252282300, 252331711, 136019974,
- 252428389, 252461094, 65912838, 92454914, 252478548, 252527518, 252561088, 252659393, 252706847, 79101988, 253132809, 253150163, 14745603, 253181993, 253198377,
- 253214723, 63864963, 253232835, 193445890, 253493291, 153190499, 6455298, 253526863, 253560516, 118882607, 253624412, 253658821, 253756437, 46088213, 175849503,
- 253806278, 253920967, 125583391, 253984863, 254035656, 254116747, 254181890, 2342931, 254215881, 254263317, 119128066, 254281418, 254379218, 254410793, 254427148,
- 254443530, 192938012, 254461081, 254509084, 254525582, 254558220, 254574602, 254592009, 51838978, 147063272, 254623756, 229965839, 254641867, 3915842, 254738468,
- 47022099, 254754831, 244170768, 254771231, 128155676, 254789324, 255016969, 255033481, 255049944, 255098886, 255115293, 255133389, 255182542, 255394005, 255426914,
- 255459460, 3309578, 255475718, 255492125, 20365353, 43237405, 255510223, 169377801, 255542992, 255590409, 29163657, 255608332, 142245926, 255639589, 255655974,
- 2197201, 255672357, 107757684, 29605907, 255688711, 255705107, 901177, 2523173, 38879269, 255721477, 255737868, 37355651, 255754247, 29376531, 255772370,
- 255934753, 255968979, 256032784, 116228122, 234848296, 256050017, 256081942, 18677802, 256100052, 256147482, 159760413, 256165589, 256493270, 256589855, 256606218,
- 256622613, 256639016, 115343388, 256655419, 256689879, 256787721, 256819240, 49791002, 256835610, 256853720, 256901146, 256917588, 256950288, 118884057, 256968410,
- 257048617, 257064972, 1818662, 257081774, 257130638, 57032732, 257164425, 132776362, 257212428, 257229281, 257277954, 257294339, 257311152, 2197211, 257343594,
- 6619243, 257425854, 257492180, 188761820, 2195732, 113247241, 109215754, 257556526, 6620329, 257606392, 257640157, 109215746, 257703938, 132155102, 257721651,
- 257769558, 257802322, 257835294, 257884162, 257900554, 236011551, 2605072, 257917015, 113115146, 257966172, 258000607, 258180832, 258277392, 258293779, 121094156,
- 258311905, 258408463, 258424834, 258441235, 258457631, 2801705, 258474093, 1785858, 17448976, 258506773, 258523148, 180977674, 258541282, 158253166, 258672355,
- 258770553, 2261023, 258818507, 258867302, 258901732, 258965514, 1933354, 258982901, 19251307, 259047453, 259063820, 259081957, 259129803, 2179084, 259178929,
- 259211793, 259244063, 259260418, 115818515, 259278566, 259409639, 259473697, 259506218, 259522636, 259555631, 137101362, 259589864, 259671785, 259735618, 141819942,
- 259769191, 259801095, 259817503, 259833858, 115818517, 259850347, 259883293, 259916235, 259964984, 259997762, 251346960, 260030474, 8390378, 260047761, 160760943,
- 119357506, 260097771, 260128852, 260163308, 260441837, 260620297, 24969353, 260636710, 260653115, 137101795, 260686299, 260720306, 260751370, 260767783, 195215398,
- 260801010, 260851438, 260981711, 261029916, 261046310, 261063102, 261129967, 219186185, 261195504, 117506107, 261226546, 261259285, 261276540, 261325792, 261373958,
- 261392113, 261455915, 261488659, 261505061, 132432729, 261521454, 123912481, 261570598, 261586956, 172836594, 261605107, 261701672, 261718032, 261734440, 3178502,
- 261750794, 261768011, 2195916, 261832735, 147652646, 261849768, 261881884, 261898256, 261914655, 6374569, 261931496, 261964683, 262030159, 262062099, 262078501,
- 108707852, 262094913, 262144471, 6438922, 46514186, 262177782, 262209567, 262225922, 262243601, 262291522, 262325216, 165134367, 228245525, 262373428, 262407924,
- 262473461, 262521291, 262570831, 226050074, 262604534, 262784759, 262897666, 262914105, 182386719, 262931305, 262995994, 263014136, 189252018, 263096057, 25560826,
- 263159819, 263176194, 2801685, 263194363, 263241739, 263258114, 218841109, 123273254, 27607052, 263276284, 2162729, 263341821, 263389190, 263405590, 263422599,
- 263471106, 263487514, 17006613, 263503903, 158744614, 263520936, 131335337, 263553034, 119226397, 263571001, 263669502, 263815305, 18661510, 141819906, 263831564,
- 263847946, 49938444, 263866111, 84738090, 263915264, 264094543, 264126480, 264142886, 264159248, 2342954, 7372836, 264175632, 6374509, 264192084, 264224810,
- 264242566, 264306747, 264339540, 264372264, 264388629, 264405467, 264437779, 5865511, 264454155, 264242070, 264470550, 264486948, 264503302, 264519711, 264536083,
- 264553368, 7634984, 264603393, 264650783, 136183810, 264668930, 264734252, 264765499, 2195970, 264799390, 128892968, 264864891, 264896524, 264912917, 264929306,
- 264946096, 182059027, 264978453, 264994832, 265011250, 171458591, 265043987, 265060374, 265076762, 204587024, 43532309, 265453610, 265469993, 265486357, 7602214,
- 265502722, 17809414, 265520900, 265682984, 265699330, 173850662, 265716648, 4964362, 265748783, 265781258, 265797651, 265814019, 2359332, 265830402, 132481458,
- 24838175, 2867240, 265848581, 265912387, 265994281, 266010626, 163020838, 2834531, 266027551, 2670613, 266076182, 53706793, 266094342, 54460447, 266209031,
- 266258184, 266356489, 266452994, 266469382, 266486289, 266518567, 266551302, 266567711, 266584301, 2195933, 1769501, 266618634, 200212486, 266716939, 266797913,
- 35799080, 3309608, 266831628, 250298374, 165134357, 266911798, 266944533, 266960962, 266993683, 267010968, 267059210, 223020813, 267076993, 267126542, 11157514,
- 267224148, 267272251, 267306767, 266027107, 267355920, 267436503, 267468821, 267485643, 111624194, 267536145, 8390418, 47546408, 152946451, 267601684, 267665439,
- 125583379, 267681814, 21151860, 267699989, 267763811, 267796495, 267812886, 267829260, 267845658, 267862082, 267896598, 268044055, 224133136, 165724594, 268091451,
- 84738059, 268124697, 268190171, 268224280, 268289817, 268353593, 268369932, 268386314, 268402709, 268419098, 268435487, 268451859, 268468264, 6701094, 268486426,
- 268533791, 268551031, 253788191, 268583413, 216400304, 268616969, 268650267, 268699420, 268879645, 269009387, 269042311, 269092638, 116376074, 269156362, 269174559,
- 269287426, 55132166, 269305632, 269386329, 269418522, 119357538, 195215375, 269436705, 269501323, 269565962, 156566135, 269582367, 269599605, 269631490, 269647893,
- 269664715, 269715234, 269746777, 14712848, 269780771, 111656970, 110135076, 131334447, 269893663, 55377926, 269910028, 269928229, 269975568, 269991962, 164610064,
- 270009334, 31473674, 270041391, 270073875, 270090261, 270107488, 270173152, 270223142, 270270504, 270286869, 270303691, 31424522, 270352438, 270385689, 270450780,
- 270485287, 7307266, 270533109, 270927657, 271024888, 271058730, 2196489, 271107010, 159975211, 271140652, 2850838, 271187978, 271204650, 271238957, 271336357,
- 271368202, 271384614, 2539532, 271400976, 45776912, 271417425, 271450171, 271482890, 271499293, 168329225, 271515714, 271548432, 271564810, 271582076, 271630796,
- 271664942, 271763247, 271826975, 271844215, 271876577, 271925270, 2359336, 271943472, 8390449, 272089169, 272121866, 272138259, 272154690, 272189234, 272318521,
- 272334879, 56655901, 125239318, 272351270, 3375106, 88948738, 272367647, 272384006, 3473448, 272402227, 2934010, 272434996, 272515937, 116850698, 272547866,
- 272565272, 272613613, 272646590, 2196327, 272712704, 272745208, 272779042, 272809989, 7045122, 272828213, 272875532, 272891930, 272908310, 49479692, 272926518,
- 273072221, 224935942, 273121346, 273155895, 273203210, 185860124, 273219694, 273252811, 110592031, 273301516, 273317898, 273334293, 273351563, 273417098, 273449000,
- 273465370, 48676906, 133742632, 273481827, 273514517, 273532728, 273727494, 273743884, 273760271, 273776661, 215826444, 8603449, 8603450, 273793461, 273825802,
- 273842713, 190922762, 273907750, 7733307, 273925947, 17809419, 273973347, 274007868, 185860124, 274138941, 119799890, 110249790, 274186699, 274236758, 274284554,
- 2195488, 274301019, 2195947, 274335551, 45907994, 274450240, 45776936, 274515064, 163856396, 274548545, 274646167, 274694564, 274727185, 274761538, 47611942,
- 274825247, 274842613, 274908995, 274990916, 55132182, 275039761, 275071007, 275087398, 229965862, 275105605, 166215711, 275152955, 2196826, 275185695, 274989075,
- 275203910, 275384135, 275431440, 59375632, 275447830, 275464197, 117751839, 275480588, 47710219, 159727628, 275497019, 275529830, 48676893, 249987115, 275562527,
- 275578899, 275595330, 147341343, 275629896, 275742813, 275793737, 182910988, 275874846, 275908426, 13713539, 276038062, 276086889, 276120089, 120258566, 276185127,
- 276217871, 276234271, 276250645, 276267030, 276283404, 99893267, 276300969, 164380684, 276334411, 73744424, 276465484, 32849942, 135414569, 276531021, 49496080,
- 276595865, 276643861, 276660255, 276676627, 276693295, 276725868, 276758554, 276775804, 276825934, 276906443, 276956489, 277006159, 277053471, 277069826, 118636554,
- 212402635, 277088080, 277137233, 277364746, 277381141, 277397535, 277413916, 277430288, 183369757, 277446716, 277528592, 277545002, 277561370, 277577730, 277594127,
- 176308246, 123617312, 277612370, 277709708, 2850826, 277757967, 277774358, 277790722, 128581670, 277807125, 265076758, 277823514, 277839898, 277856268, 122667046,
- 277872642, 277889655, 277923316, 277970973, 16236546, 82001936, 276283408, 277989203, 278036482, 278052879, 247234582, 278069259, 278085643, 278102056, 174440458,
- 278118416, 128581674, 278134868, 278169428, 278217241, 278284117, 278349654, 278396959, 278413350, 25559106, 278429711, 278446102, 278462495, 272613810, 278479306,
- 278511627, 278528948, 3228082, 278595415, 278659078, 2195851, 264159234, 278675561, 46645264, 278710104, 153174042, 263536671, 278757921, 278808200, 278855690,
- 112607465, 278872130, 278904858, 49791018, 278921218, 278937630, 1818650, 278970434, 32849946, 279004532, 279052319, 279068731, 279101494, 4407349, 279136059,
- 49790986, 279185241, 279380100, 279396489, 17448989, 279412745, 4571271, 279431002, 279527462, 143589435, 279544960, 279592970, 279609363, 126287894, 279626889,
- 279674911, 279691285, 279707660, 279724038, 159432761, 279742299, 159268876, 124796959, 279840604, 202063874, 279905971, 46514216, 279969794, 147423258, 279986242,
- 280018975, 30392377, 280037213, 280282974, 280346634, 8390495, 280363438, 280412267, 280444982, 256032770, 280479584, 280608834, 147407370, 5309789, 280641612,
- 3211735, 280676193, 128155690, 280838203, 280872458, 27852821, 280920172, 7389200, 280953291, 2196073, 115523605, 281002015, 139984902, 2850842, 2998312,
- 281020258, 281249635, 4980755, 130007887, 281314193, 281362434, 45023272, 281379330, 281412692, 281462187, 2621446, 281509898, 210042911, 281526727, 281576230,
- 27623490, 281610084, 281706555, 281739296, 62914562, 281772061, 281789323, 281854878, 281888613, 281935888, 6324264, 281954150, 282036071, 282083366, 282099750,
- 282116098, 282132537, 278904863, 282150279, 282181716, 282214510, 282247199, 6193173, 282265448, 282558599, 10371100, 282576745, 158253550, 116850709, 282755084,
- 282771927, 282805116, 282853386, 24838186, 282870220, 269517692, 282902554, 282920810, 282951716, 282968180, 117096479, 282984516, 283033616, 283049995, 283066380,
- 172835029, 127909928, 280445036, 283083037, 2031642, 283115522, 283131930, 147816477, 72368130, 283148720, 283182955, 283246618, 283262983, 283279497, 283295749,
- 283312130, 2326546, 109215756, 1097744, 283328944, 283361334, 1949725, 126959642, 283394333, 283428716, 283461485, 283608942, 283673621, 283721812, 283756399,
- 283836521, 283869195, 223363111, 283887092, 283935774, 283967504, 2523157, 283985776, 202309644, 284051313, 284329842, 284493683, 284524584, 189579266, 284542080,
- 284591737, 2162699, 5309328, 284639248, 113459238, 284657524, 284688412, 284704784, 4751400, 284723061, 284786726, 46710800, 284804117, 194084870, 284852250,
- 284868624, 283722160, 284886902, 284999779, 285034359, 2360310, 120602629, 285081903, 285114452, 19251307, 285147166, 285181816, 125796374, 285279333, 285329273,
- 110166070, 285378426, 285507605, 285523970, 285540363, 149585951, 285556793, 285573132, 192872477, 285589525, 163020822, 285605931, 285640571, 115523599, 285687810,
- 45875203, 285704220, 145506335, 285722492, 286031881, 286048393, 29016198, 286066557, 286195778, 286228546, 25559099, 5309287, 286261674, 286294018, 2621466,
- 149880863, 286310487, 30392330, 286361470, 286394239, 286426001, 286474324, 286507023, 286523408, 286539797, 286556163, 121061378, 286574464, 286656385, 286720002,
- 286736816, 286769268, 286785538, 265601034, 286801956, 286819581, 286851103, 17809424, 286867471, 101908499, 286883924, 286918530, 14712863, 286982220, 287014933,
- 241827862, 207290787, 287031298, 2113564, 287049156, 287080457, 11468931, 287097057, 287129651, 29622288, 49479706, 287164291, 239468556, 22216742, 287244347,
- 2523148, 287277063, 287293469, 287309843, 287327066, 287359033, 2179114, 287377284, 287441889, 170984691, 287473676, 287490064, 6455306, 287508357, 287622487,
- 2342914, 287670284, 287686684, 287703071, 152338453, 287721350, 287818905, 287867417, 287932431, 287948802, 81166362, 287965210, 194166810, 288524168, 288587782,
- 288604172, 113229862, 288622473, 901240, 288769930, 19267704, 2261112, 2179192, 2197387, 288801715, 288835468, 288915892, 288964745, 2179113, 288981030,
- 288997399, 59375635, 289015693, 289046550, 2015244, 289064846, 289112201, 289128582, 289144947, 20299911, 46530601, 289161353, 9207819, 289177611, 271925290,
- 289193993, 289210498, 289226764, 289243139, 2621443, 289718274, 289734764, 289767446, 2998303, 289783923, 29737075, 289802128, 289964084, 289996842, 6406146,
- 15073308, 7733472, 2197393, 290015122, 290228115, 290373869, 5325102, 48070698, 290406440, 49496074, 290424393, 3211715, 290505247, 290553922, 290587471,
- 290621332, 24183042, 242368518, 290816002, 290832426, 245301258, 202162595, 6308317, 290850709, 291014550, 291061776, 225181706, 291080087, 291143682, 31801384,
- 291160066, 72368147, 46514182, 2359355, 291178392, 258769743, 2130807, 291243929, 291309466, 291620763, 24297930, 291684354, 139477990, 3129360, 207011842,
- 291700812, 291733530, 134840358, 44613672, 291749904, 291766709, 291800988, 291864879, 291897365, 226951189, 291915677, 292128670, 292208951, 20365343, 292259743,
- 292323817, 292372482, 292388904, 292405274, 292421644, 280903682, 3244335, 292438092, 52674600, 292472736, 292668804, 46514178, 292733688, 292767649, 292814874,
- 292831284, 51068968, 292865044, 292913164, 5325322, 292929595, 45646256, 292962330, 72368134, 292978772, 293011502, 293062562, 293158914, 293175334, 293191720,
- 121339919, 293210019, 293519414, 293553321, 293584915, 293601302, 54493196, 293618857, 293650448, 293666856, 293683307, 293717924, 1949719, 293781588, 115785769,
- 293816229, 293896631, 134709269, 293928987, 293963581, 294011022, 79740939, 294043664, 294060072, 145506314, 294076481, 36406081, 294127526, 294174792, 294240740,
- 2195939, 117506132, 294291367, 294323112, 294354963, 294371365, 294388604, 3342352, 294438824, 294535170, 1818645, 294552883, 294601598, 294633500, 294649922,
- 5342328, 294682678, 294715819, 3213050, 294748186, 294764546, 294780947, 48021541, 294799273, 294846548, 294879314, 294912029, 168493527, 145473538, 294930346,
- 135905296, 8390070, 294995444, 295043098, 295059487, 295075905, 295125446, 295157776, 295174186, 295190960, 295223730, 295256086, 226639874, 295274411, 1114127,
- 204996620, 295339948, 295665877, 295700397, 295863119, 295895078, 295911455, 295927810, 49938451, 19447824, 295944214, 124403718, 295960660, 295993355, 111362060,
- 8388695, 296009770, 55132200, 296026546, 296058896, 296077230, 296109999, 296174993, 296239967, 174065584, 296306609, 296372146, 296419340, 50266143, 296435733,
- 141836294, 296452127, 296468951, 296503219, 296566858, 296634292, 296714347, 296747010, 178127301, 296765365, 296845314, 296861706, 296878089, 296894482, 8175625,
- 296911151, 296945202, 297009254, 297042350, 297091082, 146358293, 297109430, 48005141, 297156667, 297189378, 297205771, 221806614, 127042524, 297224119, 55132198,
- 297287756, 233734154, 162971677, 297321748, 77709352, 297370069, 297418783, 131891210, 297437112, 29769740, 1769588, 297599249, 297633721, 297730506, 297764794,
- 297813947, 297863100, 24838146, 297945021, 298207166, 84934693, 51822623, 111247372, 298287188, 298320311, 298352642, 125927450, 258080778, 298370635, 298420159,
- 298518464, 298598406, 298614805, 4571152, 298633153, 24297535, 8159363, 162119788, 298682306, 298745858, 298764227, 298811422, 298844267, 298876994, 298909698,
- 2146360, 298926617, 298993162, 45875219, 299042756, 299106380, 299139156, 299171890, 299204684, 257933328, 299239365, 299270228, 299304902, 270401602, 299370439,
- 299550664, 299663436, 284640039, 299696168, 2195486, 299712584, 299778050, 299794470, 29622287, 5324907, 2147497, 299811753, 299859970, 158254001, 299878345,
- 299927498, 300024741, 300056578, 47120390, 110248784, 300074955, 300351490, 7734511, 152027158, 5325037, 300367898, 2196392, 300384340, 29622282, 300419020,
- 300549004, 300599245, 300681166, 300763087, 24838185, 300827070, 300892186, 198410282, 2196311, 300908598, 300942672, 300992464, 253706266, 8390609, 301105163,
- 301121538, 222281754, 50937877, 301139922, 301252614, 141606941, 52576277, 301270995, 301385684, 132431931, 301483989, 8390614, 301645931, 301678608, 301695013,
- 71188486, 15073306, 301711397, 301727760, 17448986, 301746135, 301909976, 301973563, 302006274, 174030888, 302024665, 302153794, 302188506, 243040297, 302301408,
- 159760406, 302333983, 302351529, 302385115, 302433269, 302498317, 5308853, 302548418, 302598108, 302678018, 189464597, 303056862, 303349762, 5324902, 303367539,
- 303398966, 303431696, 197115944, 303448919, 303482251, 41582618, 303530015, 303546374, 303562774, 115523594, 303579138, 30392351, 303597535, 303663072, 8390625,
- 2113562, 303712226, 303824924, 303841306, 303857666, 114393099, 118882388, 303874108, 303957161, 157499880, 303990755, 6701059, 304087849, 191053827, 232079400,
- 304121828, 304153695, 27852828, 304220133, 304400358, 304447507, 237732341, 304463911, 304496642, 304513131, 158811338, 304547815, 304628163, 27852838, 304660492,
- 13074474, 304678888, 5325159, 304726075, 110183287, 304759896, 304809575, 186777631, 304859113, 116162562, 304939926, 304990186, 305039339, 305119664, 305154028,
- 305317465, 238256159, 305365023, 184074252, 305381407, 5325665, 305397781, 305414170, 305430831, 305463308, 131629066, 305479726, 30326837, 305528916, 2195501,
- 305563629, 158253547, 17842260, 305694702, 110723078, 305741826, 2113551, 305759897, 305808584, 305840154, 305856578, 305891311, 306005694, 290406412, 306055152,
- 306300913, 306431986, 140247534, 306496119, 306528688, 3244120, 306563059, 306726900, 299696140, 306791421, 306855946, 25559343, 306872341, 306888763, 306921498,
- 306937872, 7733725, 306954464, 264175618, 306989045, 134169102, 307070966, 307150854, 249266214, 307167248, 307183654, 258637862, 2129956, 307200059, 307234807,
- 307347466, 307365662, 29491671, 116883931, 307430528, 307478530, 54460452, 51871775, 307494966, 128892944, 307529720, 307659923, 307692052, 307740779, 307773546,
- 307855810, 44351500, 129925219, 307890169, 308068843, 143818783, 118883930, 45465615, 308101553, 308133900, 50937862, 2197498, 308150356, 308185083, 186794086,
- 4997183, 308283388, 308414461, 167903316, 308461710, 308429712, 308496382, 308576272, 27852826, 308593154, 308625484, 308658181, 45039628, 308674641, 5866232,
- 308708953, 308756502, 308772930, 308805653, 308822046, 308854786, 250937373, 308871170, 19447818, 308887855, 292962314, 308920366, 308970516, 309018655, 185319434,
- 309037055, 309167628, 309199378, 309315584, 8978453, 309413856, 124796970, 309462036, 48676906, 209305626, 306954454, 309510381, 309543824, 122732582, 309575779,
- 107757610, 309609295, 2916378, 309641262, 309690437, 309723172, 49496102, 310085634, 310248793, 240844866, 310281195, 310347779, 310444347, 131776571, 253706293,
- 310478852, 310575157, 155631632, 310609925, 310888454, 168232967, 310968462, 311001098, 97681410, 273924098, 311019528, 311099418, 311115778, 7372810, 190644308,
- 311134217, 84934672, 2196136, 311199754, 311279628, 170197863, 311296059, 311329311, 311377931, 48054300, 311394314, 2850828, 311410747, 311444680, 311478283,
- 78102831, 311542063, 6324253, 311576436, 311607311, 311623682, 311640093, 311656470, 22216740, 311674892, 311820404, 3211330, 311837724, 311869521, 311904269,
- 312100878, 312147970, 312164362, 312180765, 7307286, 312197173, 312230410, 312262740, 20365349, 312295483, 312328221, 312344588, 312360966, 265601046, 312377346,
- 312393739, 13074448, 5309225, 312410114, 3227758, 312428559, 312493256, 312525447, 312574017, 110233616, 312625169, 17842985, 312805394, 127713296, 312887315,
- 312934637, 312967206, 119226406, 312983567, 312999957, 313016753, 313051156, 313131024, 118884373, 313147452, 313229368, 49791012, 313264150, 313328553, 313377239,
- 313411607, 313458725, 284704796, 313477144, 117751860, 313540648, 313557004, 307298325, 313575449, 147341324, 313690108, 313820640, 313852892, 50249740, 266764752,
- 313886746, 170344460, 313933890, 313966651, 241238018, 313999854, 314034203, 314097666, 13713436, 314116124, 314212829, 3309571, 314245136, 6193163, 314261535,
- 314279965, 314329118, 314378226, 314442641, 314490906, 1998850, 314507330, 124862546, 314935328, 315197473, 315278634, 2162725, 315328546, 5325239, 315392046,
- 315441236, 127041620, 315473985, 127680552, 315525155, 315621378, 24838180, 315639844, 127795503, 131940389, 315688997, 315753885, 150241320, 315803686, 315951143,
- 316080975, 316113832, 316146772, 116703270, 316194922, 52215846, 316278824, 316359133, 110134128, 316393513, 128155688, 19267689, 316540970, 316639275, 54296598,
- 316702944, 316737580, 316866778, 149094416, 316899368, 143720474, 316917805, 5308455, 317014475, 2342941, 317063242, 317130798, 317293598, 317325614, 19268055,
- 317359020, 2196932, 317424075, 317472809, 2195525, 317489690, 317524015, 317655088, 317720625, 317818930, 304808479, 317900851, 317950004, 318111831, 29786204,
- 318161001, 318193702, 140248002, 5310517, 318212150, 64765968, 154665435, 133414933, 318277687, 318391305, 152158218, 318424002, 318457912, 318572601, 318638138,
- 318702003, 56164373, 112312336, 318734346, 182288918, 318750741, 65896450, 318768143, 2998298, 318818363, 319029472, 270516236, 194068971, 253788170, 319063457,
- 319111252, 191004771, 319144895, 27623476, 319178141, 319225915, 319258634, 319275036, 279904282, 319293500, 319456286, 270401773, 319490109, 319602710, 319619074,
- 5177386, 319635532, 319669257, 319702639, 20365348, 141606941, 319750204, 319834174, 319898715, 319932479, 319963182, 320013165, 131940364, 320062852, 50266133,
- 320127029, 320161856, 320374849, 25559911, 320487426, 2392070, 320505922, 27852821, 311197905, 320634952, 108724250, 320702531, 6374849, 320768068, 320815188,
- 320848778, 320880666, 320897035, 320913474, 177111062, 320948293, 119357569, 321077260, 321093653, 321110046, 321144902, 321257696, 321292359, 129957947, 321339432,
- 321355788, 4980762, 321374280, 321505353, 321652810, 321717322, 297844765, 44351528, 321751115, 161857576, 321800268, 321961990, 321978387, 321994778, 322011138,
- 45613066, 125583386, 322028430, 322095181, 322176665, 322226254, 77250600, 322389053, 322455631, 322519061, 322535478, 322568251, 322601041, 322634262, 109052046,
- 322666923, 322700488, 177700876, 322734160, 110248295, 322865233, 322947154, 323126920, 323174879, 323207197, 47317008, 323224661, 7602178, 2195985, 323258451,
- 323321940, 5866762, 2130411, 323356756, 323683713, 323733393, 323766357, 190318090, 323847713, 290553922, 323881046, 323945873, 324011159, 324059659, 249987131,
- 324108326, 324126807, 51019787, 324208368, 324239419, 2195503, 138641510, 324273008, 324321285, 324338139, 324370519, 324421720, 324486005, 257656921, 324517947,
- 24838150, 324550722, 2359825, 324585562, 324667483, 46481429, 324731905, 324780633, 8389488, 316211212, 324814940, 324879500, 324928450, 324960321, 325011075,
- 176488467, 5308907, 325077085, 325173549, 81166374, 325206863, 325238871, 325290078, 325337100, 219627530, 325353494, 325369866, 325386271, 204537893, 325403083,
- 325781464, 325845871, 214319125, 45137922, 325896288, 304152587, 325994593, 326139906, 326158434, 326206810, 326240355, 326336578, 152946641, 326371428, 326418478,
- 326467624, 326483978, 54460426, 7307283, 6422544, 326502501, 19253350, 68239671, 326615277, 326647915, 232981014, 326681423, 326713370, 326729749, 87031824,
- 27852826, 326748263, 326879336, 326928489, 327026794, 327106562, 5308640, 327125099, 327172148, 75464725, 327205401, 327270482, 327303225, 327319583, 47530022,
- 327338092, 327417858, 327434278, 147423270, 327450634, 8390765, 327467020, 2195554, 327483458, 3227730, 327518318, 327581736, 327598146, 327633007, 327860437,
- 327895152, 57032720, 327977073, 328073324, 7602178, 328106831, 328138811, 328173682, 328253974, 328286734, 328318998, 328335365, 328351746, 328368159, 328384554,
- 6946838, 328400962, 328433666, 328450519, 328483118, 328516344, 328549972, 328647465, 328679512, 8390771, 328714356, 328779893, 328892426, 149094412, 328908846,
- 328960118, 329023542, 329058423, 131334433, 151093264, 329123960, 329468025, 329613350, 329629734, 118882358, 329647232, 329695766, 6373415, 4161538, 329728494,
- 6374549, 329760780, 329778197, 329826362, 167903286, 329877626, 329974645, 3212318, 330008699, 152945554, 330170378, 5325220, 330187512, 330220367, 330253312,
- 330285078, 45760524, 330303612, 330400375, 330433452, 330499560, 4997591, 330547284, 330579978, 330598525, 330711966, 330743915, 330777516, 330842131, 330858518,
- 330874892, 46530589, 330891727, 330926206, 331090047, 331153446, 331169823, 170886313, 51675164, 331188352, 331303041, 331368578, 132187145, 331466883, 56246308,
- 331532420, 331628546, 111280166, 2196415, 331644949, 331661849, 185319434, 331726914, 331761797, 1769479, 331923482, 331939880, 331956255, 54460422, 331974790,
- 332021786, 332038160, 332054568, 6620363, 332070924, 332087306, 332103701, 6619188, 332121288, 209584555, 113115238, 332154087, 332204167, 332447782, 332464194,
- 332499080, 332563324, 183369743, 332613769, 332694264, 332726274, 332742687, 47546394, 332759116, 332792240, 332824614, 6406182, 332840986, 332859530, 332939276,
- 4177931, 226443276, 332955660, 243777567, 332972073, 332988428, 3555359, 333006157, 333072523, 333135924, 333168943, 333201418, 333217858, 7094903, 333252748,
- 333414925, 333464361, 333496322, 2359334, 333512706, 333529114, 333547661, 4997176, 333595657, 8388701, 333627408, 333643857, 243777548, 333676575, 333692954,
- 333709331, 55754774, 333725777, 333758476, 51675176, 333774907, 333809806, 333908111, 130269190, 333972768, 334037018, 334054542, 311690261, 334104720, 2342922,
- 334217453, 2130882, 2196719, 334252177, 301252618, 334348342, 334383250, 334694547, 334807500, 334840409, 334874772, 334973077, 335036422, 335052819, 161726486,
- 335070554, 335102761, 335134804, 59375621, 2113546, 335167595, 335200266, 119537666, 335218054, 119996932, 335284374, 131810324, 335332695, 335382679, 335431289,
- 247234581, 2932960, 335478843, 335513752, 335593986, 335626256, 207620115, 335644825, 335775274, 50135069, 335856105, 47611906, 335905822, 264716369, 335938401,
- 53690410, 335970413, 336005274, 336085002, 127680566, 336103579, 336281609, 336298121, 336314502, 10371187, 336330790, 336347174, 336365724, 336414877, 336464030,
- 336496798, 336529567, 336576548, 78807047, 336594031, 336626600, 336660640, 336822303, 336838668, 68599846, 336855081, 151765028, 336873633, 151765014, 336906402,
- 337002532, 337021091, 337068061, 148637860, 337788982, 337822296, 337856679, 178814987, 338100461, 215826448, 338135208, 203325466, 49496095, 338215014, 302252038,
- 338249897, 112607341, 338346050, 2867216, 338379688, 235552780, 181256240, 338413033, 338462890, 6701068, 338527133, 338609042, 338657309, 245350412, 211812823,
- 338675883, 338805672, 338837520, 338853894, 3342342, 338871119, 338903182, 72499223, 333299733, 338938028, 339230910, 34422921, 2195610, 2850832, 339298477,
- 147423253, 339364014, 339445935, 339492902, 136790028, 339511472, 308576258, 339642545, 339708082, 23363797, 339839155, 116375659, 340101300, 340164639, 340181425,
- 340213772, 340232373, 8389186, 340280530, 340312095, 249137334, 257657015, 340330680, 340591401, 340625593, 340705339, 340738981, 340771175, 2867212, 340803639,
- 340869344, 340902753, 118882984, 340935574, 340984238, 341033002, 121651222, 116064282, 341049346, 341065754, 341082122, 341098580, 341131280, 341147686, 47611906,
- 341164491, 2196535, 341213196, 2196358, 341229998, 341278827, 341311938, 341147670, 280903690, 341345587, 341393434, 51855398, 19038220, 341409804, 341426218,
- 341442603, 341476524, 287146100, 341524518, 73531404, 341541782, 341592250, 341625019, 189693990, 341672020, 341704770, 341737579, 341772476, 246546458, 341868546,
- 159383592, 341885399, 33390922, 317898833, 341919933, 341985470, 342065678, 168722453, 342100159, 342132928, 342345019, 342378689, 116211930, 342425707, 2146593,
- 342458510, 112607535, 342493378, 342606801, 342656172, 342704130, 342720522, 151093250, 342739139, 342984900, 343097366, 343113794, 343148741, 343195650, 343213321,
- 343247046, 257098575, 343343106, 343359499, 23364340, 343378119, 141606918, 343442321, 8390609, 343490619, 308674572, 343524505, 116867964, 343572501, 343588894,
- 343621716, 343655247, 343687631, 343722184, 344033481, 282853416, 215810070, 344096874, 344179881, 344211498, 344227909, 344262858, 344312011, 344426700, 344457232,
- 344473626, 114114589, 344491380, 115818534, 344539178, 243040297, 344555823, 344588319, 243777546, 344604718, 344653850, 344672461, 344770766, 111624223, 344883284,
- 344916055, 344966700, 345000030, 345049295, 42369036, 289046554, 345145390, 345196752, 345474465, 3229887, 345524433, 345573586, 257949712, 316735533, 345704659,
- 345786580, 6438914, 113836044, 345866925, 345915419, 345949097, 345997342, 226951183, 346032341, 346144796, 47611944, 346161164, 179716124, 346177582, 346227598,
- 124928012, 269108092, 346294486, 127451145, 346521616, 346539568, 346570989, 191644566, 346604045, 42434600, 346654935, 84934678, 1769588, 346704088, 346802393,
- 346882132, 283197497, 346914828, 346933466, 55197736, 346996790, 317898833, 347031124, 347127846, 3538982, 347144213, 5505045, 347160602, 347177387, 108298262,
- 347209794, 347242508, 116752394, 347261147, 347457756, 347523293, 347603028, 347635733, 2359327, 347653003, 6127637, 347717642, 347736286, 347783234, 347816020,
- 347850975, 175849512, 347932896, 348014817, 348178658, 164775081, 348258370, 348291937, 348323893, 348357528, 251396122, 348408035, 207422664, 348506340, 348553245,
- 348570588, 348602384, 68599824, 348618754, 79101981, 348637413, 2195563, 348702950, 348750126, 348782621, 348635148, 348801255, 348897290, 348915944, 273465354,
- 226443274, 348965097, 349175889, 349208602, 349224988, 349241356, 6438931, 349257740, 110248046, 349274219, 349306985, 349339667, 349356054, 349372427, 46710815,
- 349389279, 2326554, 349421676, 157663248, 89128976, 349456618, 55377930, 349554923, 349619297, 177340479, 349685996, 2196216, 349716492, 349798459, 349833453,
- 349931758, 350028585, 161808386, 184926234, 350062831, 202097400, 350160097, 159694850, 350603505, 2195538, 350750962, 174080066, 350816499, 168869894, 136921100,
- 350865024, 350912518, 13074453, 350929355, 350978913, 351011649, 5177354, 351043671, 351095028, 351223850, 351240232, 49266700, 351256607, 351272996, 351289356,
- 351305734, 47317007, 351322124, 351338506, 7389190, 108298271, 351357173, 351453655, 351488246, 196837392, 351535157, 351568781, 351651102, 351699785, 351750391,
- 45531162, 351813634, 351832312, 351879211, 351911947, 29622284, 351930617, 17842936, 352092182, 2539551, 352110842, 352190923, 352241915, 352306088, 352337946,
- 352354335, 7733485, 352370805, 4390950, 352403468, 7307266, 352419899, 352454333, 131891205, 352536828, 352831741, 353075216, 353092953, 47710239, 353126654,
- 353206509, 353241343, 353304668, 353337647, 119799847, 6946832, 353370114, 45776906, 353388800, 353600929, 111214632, 353648650, 353665045, 306774075, 351895592,
- 170705767, 353681437, 346177602, 353698958, 353748042, 353779733, 353796943, 353828940, 353861670, 353878070, 54460421, 353910800, 353929407, 353962241, 354156556,
- 120094746, 354175234, 354273539, 354336770, 203654459, 341819414, 354353154, 48545802, 354371844, 55132186, 354435156, 354470149, 274989075, 8389647, 113115157,
- 54345759, 354583128, 141541416, 354617606, 48513035, 2162707, 354730038, 354765063, 354811923, 5505046, 354828328, 132792341, 354844756, 354877547, 19447820,
- 354910315, 354943008, 354975746, 2196554, 354994440, 355191049, 355238780, 355288697, 355336232, 164380678, 2146731, 355352582, 355369395, 355403579, 355453194,
- 254574614, 8390923, 355565627, 355600652, 355633421, 355778562, 47316995, 355794990, 355846414, 355895567, 355959321, 356025485, 356075792, 356122670, 41582628,
- 356172301, 47317034, 2196470, 356223249, 356337236, 227524715, 356434352, 3244139, 356468280, 144375810, 356533071, 356927763, 165494815, 357171238, 158500169,
- 152946964, 357188531, 357221535, 357253186, 357285917, 119881740, 357303390, 357351531, 357386517, 357468438, 8389522, 357548034, 357564442, 307298341, 357580857,
- 357597196, 150241290, 357613580, 357629962, 183189533, 357646695, 357681431, 357845272, 357927193, 357992730, 171163685, 358088763, 358123803, 1769498, 358187051,
- 358222108, 2932818, 358450065, 358499302, 121339925, 358533405, 358597606, 358630256, 358679393, 3213019, 358711599, 358744083, 358760469, 54493200, 358777676,
- 358826050, 114786775, 358858754, 143295224, 358876151, 358940674, 2195561, 358958579, 358992158, 109166613, 359071831, 5308446, 359120983, 359170481, 359205151,
- 359333926, 359352608, 359399462, 357629958, 133611522, 198672424, 359415820, 5324908, 359432257, 10650533, 359483681, 237731851, 60227600, 185270282, 359661570,
- 52756509, 359680290, 211910658, 340280530, 150913064, 359762211, 359811364, 359875006, 359940107, 359956546, 294944778, 359989302, 115769451, 50659334, 71483394,
- 360023999, 360122661, 360171814, 134103399, 360269076, 360319271, 2196032, 360416785, 360450344, 61800471, 360515881, 360565034, 134168800, 360630571, 4653656,
- 126435344, 360808458, 360826575, 318783528, 360859948, 361037834, 148062227, 361055148, 5865572, 361120181, 361152566, 45023274, 297222186, 361186242, 24297570,
- 361218058, 361234744, 361267801, 361300034, 361334249, 361381900, 361398282, 358514728, 361415115, 361463906, 8390957, 361496660, 361529454, 361564462, 361679151,
- 361761072, 361810225, 361873439, 361889794, 361906179, 361922572, 195690511, 361938963, 361955350, 361971714, 47120389, 361990450, 2015258, 3162154, 48480296,
- 362070031, 2196057, 362086443, 362119234, 362153518, 362201109, 119226390, 362613044, 362692637, 362709839, 362741770, 232980534, 128286786, 362758603, 204537877,
- 362807395, 362840956, 362891335, 3212608, 362940725, 363020968, 22216716, 363054056, 363102220, 363118598, 356761642, 5866434, 363135859, 117901622, 238551474,
- 124864823, 363219256, 363364409, 118079500, 363383097, 363479099, 363513240, 363561485, 225181722, 363610580, 45433744, 363645242, 191053860, 363709795, 2360167,
- 117424185, 363773971, 363790373, 2342943, 363809083, 364070041, 364118863, 364150901, 47120387, 364183568, 364200696, 364235068, 127025154, 364382525, 56164373,
- 364448062, 364544459, 364593168, 364611903, 2197310, 296354755, 364642347, 364675131, 364710208, 364757023, 335151146, 364773388, 2130953, 364792129, 364871710,
- 3244546, 364904502, 364937262, 364988738, 365037891, 365136196, 44597250, 365168965, 365346847, 50266154, 365365574, 125239324, 365445579, 365494372, 56492038,
- 365527936, 365576223, 365593207, 7094719, 365627719, 365674527, 126287898, 365690906, 184549388, 365709640, 365805999, 365838756, 365873481, 365939018, 11042946,
- 366036140, 1769529, 366084320, 366116883, 48545808, 366133308, 366217547, 366297098, 185417770, 366313482, 366329885, 44613638, 366346269, 366363083, 366414156,
- 366610765, 366772278, 2195532, 366805521, 366837847, 232292373, 111149087, 6373915, 366886941, 366905678, 207126538, 113115146, 366116883, 367020367, 150913046,
- 367067737, 252297440, 367102288, 1917504, 19267605, 367214651, 367247811, 367282513, 5310694, 367364434, 342608211, 246464551, 367427586, 367443974, 47120405,
- 367462740, 131940389, 367528277, 367591440, 294535180, 367608926, 137379846, 367657066, 367741270, 214303944, 367790423, 8389930, 367905112, 140247574, 367970649,
- 368036186, 368150875, 368197670, 173113375, 368214038, 177324034, 262062106, 368230402, 117424157, 368246865, 368281948, 368494941, 368558090, 368574548, 368607270,
- 2146331, 368624768, 368672873, 368707934, 368755613, 368837075, 368888159, 368936569, 45498408, 368984102, 2197025, 369001844, 369049687, 369098818, 369133920,
- 369248609, 369328487, 121339914, 369362809, 369410091, 369442918, 2195585, 369475603, 369491990, 2196418, 369510754, 11059332, 369559907, 135823426, 369608009,
- 369655827, 114114597, 369672230, 160759846, 369689516, 369756516, 370002277, 370050649, 240943134, 370098776, 145293328, 370133350, 370262045, 245350416, 370278446,
- 5325100, 370327694, 6373811, 370362727, 370425898, 370442306, 7733770, 370475545, 370540603, 370573343, 46514202, 370589752, 370622551, 370671635, 370688021,
- 370704386, 370720787, 31424550, 370739560, 370851866, 370868312, 120258588, 370903401, 370999334, 159547423, 371018090, 371100011, 129876205, 17220498, 371212314,
- 50479135, 371231084, 371278584, 2670623, 2195990, 371312661, 371343372, 371359782, 226951206, 371376144, 109035535, 371394925, 371657070, 371802131, 371819028,
- 371867688, 141541402, 371884044, 2850842, 179994646, 371902071, 371965994, 2637836, 371984162, 372017519, 372214027, 372262092, 372312432, 372391948, 372410737,
- 372473963, 16597593, 168706272, 372507663, 372556911, 372589451, 372654101, 128319510, 372672882, 372752406, 372769020, 372802932, 372853107, 373049716, 151994390,
- 373115253, 373164406, 373293570, 373325883, 209338370, 373359555, 373410167, 10371209, 373492088, 373587984, 178814992, 19267622, 373604404, 111624204, 373639545,
- 373721466, 373885307, 5669800, 373932044, 373948516, 107757570, 373981215, 319619082, 373997620, 79757349, 3899993, 374032764, 2196216, 147243074, 92749826,
- 374114685, 374195220, 50135041, 374245758, 374311295, 374194195, 374376009, 374457238, 374507904, 374571944, 374604834, 291094591, 374638977, 374704514, 374767645,
- 374784012, 374800410, 110412423, 374816787, 114409494, 374835460, 374898700, 374915108, 374931478, 233734156, 374950275, 113247603, 193134630, 375145600, 375196036,
- 375259241, 17006604, 183189533, 375292751, 375326041, 375359020, 375392645, 375490586, 375537695, 15073299, 207291422, 375555166, 375603237, 375619590, 375636270,
- 375668764, 375685132, 375701530, 189513766, 375720326, 50135061, 375785863, 375816202, 375832692, 86081552, 375851400, 375996439, 10944521, 376015241, 376274997,
- 376307714, 376324133, 146767874, 376341637, 376392074, 376438786, 376457357, 376504814, 68257097, 376537114, 376553474, 45875221, 376569858, 158253112, 376586266,
- 376602708, 214319161, 376635413, 376652079, 376684601, 376700940, 376717341, 376733698, 4964362, 376751411, 376799258, 376815618, 376832010, 376848415, 222281764,
- 376867211, 376930306, 376946714, 376964062, 377014668, 377094200, 377129357, 377192458, 377208834, 377225237, 6455332, 2130223, 377241605, 38879234, 215187487,
- 377260430, 377323522, 257638426, 377341516, 377389359, 377421843, 377438230, 377454594, 377471002, 377489807, 377521785, 214319114, 377571728, 28147738, 377620881,
- 377668652, 377719186, 377798693, 377815062, 168820776, 285343783, 62341142, 377833875, 377929953, 144982056, 2408454, 377962997, 377995287, 378011670, 378028041,
- 378044432, 378060816, 378077225, 378093703, 378109959, 378126364, 378142721, 79102068, 7307306, 378161556, 378273794, 378290186, 378306572, 251527174, 378322975,
- 6127644, 378340218, 378784150, 378962012, 378994991, 379028321, 379062679, 379174918, 292110339, 344736273, 379192190, 379224090, 379240451, 379256844, 2162730,
- 379273222, 379289621, 324567056, 379308440, 379373471, 379437163, 111132703, 379469855, 379486218, 2147249, 379503114, 379536206, 379601975, 379633702, 379650102,
- 379685273, 379799962, 379881883, 379947420, 379994178, 380029341, 380078494, 380125210, 380141570, 380157967, 380174358, 380191638, 380240305, 380273119, 153190929,
- 380305420, 380324255, 380373408, 380502126, 380534812, 380551184, 52723722, 380570017, 380633109, 380649484, 380665866, 380683433, 380717474, 380799395, 380848548,
- 380995176, 381060467, 381091842, 129466408, 381110693, 381157397, 77709314, 381173772, 381192614, 381255739, 240582761, 381288486, 1949712, 381304838, 74072079,
- 381321235, 381337638, 381354050, 381387223, 381421991, 381618600, 381700521, 381733290, 132808723, 381812748, 381830875, 45498384, 50118694, 381864363, 381976683,
- 382009356, 4030483, 156123195, 204996624, 382025749, 59228186, 382044588, 382271500, 382288632, 382320670, 382355885, 211189762, 382402588, 56131596, 382420720,
- 48480272, 382452974, 291160100, 382484561, 110216222, 382519726, 382634415, 382683568, 382730306, 180437030, 382765489, 382812736, 382847410, 382962093, 318717958,
- 383009071, 383041602, 207142922, 383076787, 383288627, 177324034, 383336464, 56557594, 383353794, 2130352, 383385659, 344736375, 383420852, 383483926, 126042140,
- 383500347, 383533359, 383568309, 6438934, 383631791, 383664149, 3473430, 383680524, 383696936, 47120441, 383713292, 133546091, 383732150, 383781303, 383844378,
- 383860755, 138625026, 67059752, 384256441, 384338362, 384403899, 384534972, 384614438, 68241211, 384631982, 384697080, 384729153, 384780733, 384893463, 384928190,
- 384975695, 214368277, 385010111, 385107584, 385155091, 147423269, 385171993, 385239488, 319701021, 20365354, 5865531, 385303057, 147423269, 385336665, 385370561,
- 385452482, 385499235, 385531964, 385613905, 385646598, 20365334, 385663068, 20365333, 385698243, 385843310, 385875984, 2261034, 385893674, 381124614, 385944004,
- 386008002, 386039814, 386056197, 386072660, 386107845, 386173382, 386252853, 154763735, 386285640, 386353607, 386402760, 73187370, 386449467, 115294230, 386482263,
- 7734475, 386533833, 386613678, 386664906, 216466956, 884743, 386730443, 386778101, 386842729, 386877900, 386926528, 25560002, 387006494, 387039292, 387121167,
- 5308641, 387138669, 387170319, 171000753, 387187159, 387219543, 2360640, 2195481, 387271117, 387399687, 387416182, 387448848, 2195982, 387465259, 387498060,
- 148637217, 387533262, 8391119, 387629106, 387661836, 2195674, 387678432, 8391120, 387711447, 387744174, 387794005, 184860710, 387825756, 387860945, 158254070,
- 387942866, 388024787, 388071515, 388106708, 169232853, 388139478, 388236327, 388303319, 388349962, 116376232, 388368856, 388581849, 388710412, 234848282, 388729306,
- 388811223, 2260994, 388857910, 2197979, 196854261, 388893148, 388939883, 388972572, 367067195, 388988938, 389005354, 41091078, 389024221, 389137905, 389169206,
- 377241626, 389204446, 389286367, 389333032, 389349378, 148602918, 389365800, 17006620, 389382603, 3228162, 389433824, 260620297, 389693716, 389728737, 389792046,
- 389824552, 389840908, 6946842, 389857334, 220987418, 389890467, 389925346, 390086696, 318832669, 390105571, 390135827, 27607042, 390153207, 390220260, 390348910,
- 8391141, 390381631, 390416643, 318767147, 390480678, 390513602, 390545464, 390578215, 2197990, 390613479, 185319445, 152946601, 390695400, 390922256, 2197422,
- 4980752, 390941161, 6373600, 391006698, 391072235, 391121256, 2196510, 391233552, 391252460, 391299093, 391315458, 5767206, 391334029, 391381013, 3178518,
- 391399917, 391645678, 391727599, 391824120, 251593181, 282853386, 391858164, 391924208, 293371915, 146767884, 392069122, 132792331, 172837361, 392088050, 392151071,
- 5505034, 392169971, 392265740, 204619781, 392283797, 392350196, 392398555, 392431194, 392462374, 54493186, 392478789, 392514037, 77709343, 392610552, 392642562,
- 17006603, 392661494, 392937769, 392970242, 392986655, 393003046, 393019394, 393035804, 121896991, 393054078, 393084940, 393101323, 393117727, 393134514, 6733845,
- 393167766, 393216042, 393232410, 393248770, 393265181, 137576450, 393284087, 393314316, 393330714, 121929734, 393347082, 393363458, 2801675, 393379896, 393413142,
- 264159258, 393445407, 393461770, 393478156, 85098508, 393494550, 210042911, 393511825, 393560076, 393576477, 18399260, 128892966, 99516428, 393594058, 393642849,
- 393674818, 393707744, 393740330, 393756698, 393773058, 393789455, 393805846, 393822640, 393854978, 393871375, 393887766, 393905046, 393953282, 393969667, 52346882,
- 393986058, 394002473, 394018832, 394035226, 394051595, 394067970, 393494549, 394084417, 394133546, 394150320, 394184775, 394231819, 394248223, 394264586, 394280972,
- 394297350, 143441939, 394313774, 394364292, 54460453, 394428428, 394444826, 394461215, 44908546, 394480120, 394543126, 394559490, 394575882, 264405023, 394592287,
- 394608659, 394625327, 128991258, 394657830, 394674188, 394690579, 394706984, 394723366, 30343227, 394740895, 394772910, 148733990, 198328339, 394824185, 394871655,
- 394903578, 394919947, 394936322, 394952723, 394969100, 5701672, 394575878, 394986048, 395019373, 395051020, 213319709, 395069946, 395182121, 2670604, 395198495,
- 128057356, 395214867, 395231272, 121929754, 395247618, 395264021, 395280415, 394067974, 395297239, 395329557, 395345942, 225427468, 395362325, 65699852, 395381243,
- 395445238, 395477014, 264093706, 395493402, 395509776, 218841114, 158811323, 32849922, 395528700, 395608163, 395640853, 395657247, 395673824, 395706370, 395722762,
- 395739142, 33112086, 180600941, 140249557, 395758077, 396052913, 10829846, 396100075, 396134910, 128336632, 17219688, 396215153, 396263455, 396279827, 50266134,
- 396298751, 23789705, 396542094, 396574815, 396624905, 396657174, 117014554, 396689711, 2197525, 396722222, 396773888, 396820526, 396869653, 396886035, 320897046,
- 396904961, 396967962, 396984351, 397000714, 119259178, 397017113, 397049922, 397082645, 130285589, 397100062, 397134338, 397298179, 397380100, 397443118, 397492311,
- 397543743, 397574251, 159432741, 397607215, 6373890, 49086466, 5341243, 397639983, 397672458, 397688874, 252100630, 397707023, 117901829, 397754839, 397788049,
- 397836309, 397852693, 127680524, 397871622, 397969927, 398098434, 398115931, 398150152, 398262435, 398297609, 398377026, 398412298, 398674443, 398753830, 2850854,
- 5308938, 3212226, 398772748, 398854669, 232195214, 152354858, 398903822, 398952975, 339296287, 399018512, 343539733, 399097896, 399114242, 399130662, 399147483,
- 399182353, 17842283, 8391186, 299794472, 399264275, 399313428, 52723754, 399378965, 184926218, 399425567, 131891226, 399442860, 7143480, 399507468, 3245147,
- 399524295, 324567066, 399573030, 399590312, 399624726, 399690079, 399737333, 399769646, 6127626, 399818758, 399835151, 52723734, 399851560, 3227714, 399870487,
- 5326707, 399936024, 400000030, 400032777, 400065797, 400130478, 153191031, 400181785, 2196871, 400458328, 400493082, 400638391, 178815016, 400671606, 400736268,
- 400755227, 121110564, 400802846, 400837148, 400902685, 401014877, 382402588, 401066526, 333135924, 66945029, 401179055, 401211499, 84738074, 401244270, 401276994,
- 401309708, 401326173, 401375254, 55853072, 401392153, 401458206, 401491113, 140247103, 401523521, 401555515, 401588236, 3178533, 401607199, 401656352, 401784858,
- 401801242, 176177206, 51101698, 6946898, 401820087, 401883162, 8390561, 401902113, 402014231, 402030615, 402046988, 8994823, 309018650, 402064120, 402098722,
- 402145282, 2031626, 6701113, 402161701, 402179081, 135102506, 402210923, 402246179, 332761591, 402328100, 402392866, 402424695, 402456718, 6324236, 402491941,
- 402540727, 2129961, 11157525, 403097614, 403144770, 403177994, 403211173, 403243010, 2523164, 403261992, 403326369, 403376681, 122110361, 2196029, 37208197,
- 403819050, 403914812, 370720806, 403997141, 115179546, 111067162, 404048427, 404111470, 404144212, 188940307, 404179078, 118884908, 404226050, 2850858, 404245037,
- 2342940, 27623851, 404341802, 2933207, 17137695, 404439887, 404472821, 404539950, 24838181, 404586498, 315686994, 404603640, 404638255, 404160514, 404701721,
- 287244316, 128453168, 213630982, 404767733, 404834865, 404897830, 372605820, 5062751, 404915605, 404963387, 7733347, 404998706, 405045485, 112754704, 405078032,
- 319930802, 405097011, 405225538, 405259466, 405307418, 7733675, 405323807, 405340181, 307298326, 405356554, 398753820, 405373012, 2195978, 319930799, 405406971,
- 405454864, 144621594, 118884916, 405471335, 382484588, 405553190, 4997229, 269664558, 405572149, 405670454, 254443526, 405815336, 405831690, 1933322, 405848535,
- 405883447, 405932600, 405962809, 361988138, 200720396, 405981753, 131612681, 112197670, 406063674, 406194679, 406224917, 406241296, 406257702, 406274064, 406290474,
- 406306847, 42434566, 302121420, 406325819, 406407740, 296961647, 406569012, 45613062, 384729172, 406601794, 406637117, 406719038, 406899263, 406995048, 407046720,
- 320585749, 407095873, 407191562, 25559999, 407210562, 407373965, 407422754, 407454221, 407503862, 407537089, 407569417, 407601215, 407634999, 407666699, 6602758,
- 407683112, 310591547, 407702083, 237683146, 407751236, 407816773, 407978584, 408010847, 408062534, 45498370, 2359298, 408095179, 408142504, 408174895, 408207447,
- 200736825, 408256534, 408272908, 408289291, 138641866, 408305695, 408322058, 408059946, 408339296, 408404490, 8390812, 408439367, 408485890, 408502278, 408518687,
- 408535479, 408568410, 408603208, 118194186, 408698902, 408717631, 408748044, 408764442, 408781407, 324567071, 408816201, 341983701, 408881738, 408977835, 77250572,
- 409010178, 117424149, 409027014, 409059366, 409075728, 143654943, 409094416, 409141335, 409193035, 409307636, 2195882, 409354711, 409387045, 4751381, 409406028,
- 409684557, 409780246, 269107266, 406357022, 409797099, 409832014, 409879003, 307150854, 409911380, 409946703, 48676901, 410026876, 316637718, 410077776, 410189846,
- 254592009, 191070220, 410206220, 4571167, 51937311, 410222658, 410258001, 410354556, 8389516, 410402828, 128892959, 410420118, 410468378, 410484758, 410501122,
- 410517510, 46694406, 99893277, 84934687, 410536530, 117424169, 410602067, 410666947, 410714122, 410730538, 410748005, 2129979, 410796877, 44531734, 410845643,
- 410895228, 410946132, 410995285, 411222592, 411254796, 411272345, 411320326, 381157397, 158812758, 411337183, 122683413, 411369488, 49496121, 411388503, 411437656,
- 411568729, 411729936, 411746342, 122683421, 411762719, 122732573, 3850268, 411779100, 411795494, 191610911, 411814490, 164036626, 7389187, 411912795, 411978332,
- 115785749, 412041228, 307298330, 412060253, 412106764, 412123896, 412157369, 412205082, 412221471, 2261004, 2130347, 412238097, 412270594, 412287002, 147423261,
- 412306014, 119359266, 412650079, 412713378, 412748384, 412893604, 412925992, 412942342, 54460437, 412960513, 413007926, 297418788, 46694442, 413043297, 413108834,
- 413171728, 224935946, 413190755, 413237254, 297205775, 413256292, 191070210, 374030348, 413401990, 413433877, 343605274, 413452901, 413517461, 413583974, 413664265,
- 413698663, 413764200, 414007312, 414023720, 145506314, 414040076, 3228087, 414057361, 414105824, 115785734, 414141033, 4292662, 414221619, 414269471, 332103690,
- 379109807, 414285843, 226951205, 414302230, 414318623, 208093210, 414334992, 414351386, 2933734, 414370410, 414482442, 414498858, 414515232, 414548503, 414580776,
- 414597146, 2197354, 414616171, 414679062, 414695455, 414711827, 191053846, 414728246, 414760971, 414779228, 414844505, 414892054, 129024962, 414908503, 414960236,
- 415025773, 415236180, 415268880, 415285276, 181667354, 415301644, 337857051, 370573328, 415320686, 132432332, 415367204, 415383562, 415399964, 415416322, 415432732,
- 415449114, 151748649, 415468143, 415678883, 415711244, 48021530, 415730220, 415760396, 415776784, 122683402, 415795824, 8389011, 416270961, 416402034, 188762739,
- 8389308, 8391284, 2195794, 2195714, 56311834, 416514585, 416580053, 416628762, 115196336, 416647797, 416694356, 416729718, 416792633, 235028511, 47366146,
- 147063746, 416809807, 416844407, 416908073, 416940091, 416972859, 147423268, 417005599, 4343129, 417021998, 2198136, 417071120, 137101536, 417087580, 93962271,
- 417120310, 319832499, 417155705, 417300511, 42434586, 417317296, 417349678, 417401466, 417448239, 417481877, 73187338, 417514142, 417548709, 417595616, 417630843,
- 417759339, 417794684, 417873946, 417890306, 153026570, 417907319, 50511894, 367607862, 417939458, 65896474, 417957031, 418005046, 418037853, 418086971, 418122365,
- 418220670, 116867990, 418283607, 334185672, 8389804, 288620573, 418335359, 418431576, 418466432, 418546324, 418578451, 418594825, 36716681, 418611211, 418627721,
- 418643980, 418660486, 418676871, 83918890, 418695809, 418824460, 418873501, 418908802, 354697239, 418971917, 8391299, 113115159, 419020915, 419037207, 2523167,
- 7405700, 51789958, 419056260, 151765029, 419577990, 67059849, 419596933, 419809926, 45907987, 1769508, 163643831, 419859079, 419924616, 420036618, 420053034,
- 331334579, 420069679, 385026534, 420102165, 420121225, 420186762, 420364395, 385286154, 2015248, 420397363, 420432523, 420774291, 169443465, 37208197, 420825740,
- 420907661, 421022350, 421134364, 131336350, 421153423, 122126905, 421396496, 2197422, 1769488, 421412866, 421429269, 216465803, 421446090, 6374485, 421481104,
- 2195939, 421563025, 175669264, 421626315, 421675010, 421691499, 262684710, 421726866, 421789999, 192200735, 421823311, 421857316, 421907091, 422002700, 422020255,
- 1933341, 5177375, 422054548, 422218389, 422264844, 46530602, 422281319, 422364180, 422414522, 118210600, 422445087, 422463988, 422513302, 422562455, 422642825,
- 422690868, 275185683, 174080066, 422726296, 422840985, 422904303, 65880085, 422936592, 422952986, 3228119, 422969387, 423002169, 348635148, 423018533, 423034896,
- 2752527, 131776980, 47317029, 423053978, 423316123, 423395434, 4997799, 423478281, 423512732, 2834537, 423642035, 423673915, 423707757, 423740236, 169967638,
- 423788556, 423804959, 48676874, 423822121, 423854519, 423886850, 423903253, 423919637, 147013689, 423938717, 173490710, 150241296, 424050700, 110248368, 346177995,
- 167903291, 424069790, 424149034, 424165414, 36143135, 424182673, 109052775, 424231371, 424282783, 424394792, 424411167, 424427558, 226951197, 293503016, 51314690,
- 424445530, 424476726, 424509471, 56262672, 424528544, 424820773, 299813537, 424837186, 424872610, 424921753, 424985740, 425034892, 425085603, 425148426, 425164842,
- 425181824, 27443772, 425214431, 233243678, 425247213, 425314980, 425380501, 120258581, 425429669, 425558066, 1933350, 425593510, 425689181, 425740229, 425771049,
- 50462758, 425788237, 425839271, 425888424, 425937577, 426150570, 108317355, 426262560, 7733849, 426295599, 176504863, 426328110, 426377226, 426394884, 426459193,
- 426475823, 426509411, 426590214, 426606611, 426622998, 426640193, 426674860, 7733687, 426786862, 426835984, 426852358, 426869211, 426902467, 328073254, 426950722,
- 426984437, 427049846, 427117229, 427198949, 427248302, 427428527, 427543216, 427589643, 427606103, 427655599, 427690673, 275546122, 365053273, 427787404, 427837370,
- 427887282, 427952819, 44662822, 427982941, 359612417, 428034740, 428114391, 428146726, 428163074, 2195893, 428182197, 428361289, 428444342, 428509879, 428556290,
- 54460453, 428574225, 428608184, 428640953, 162791462, 428769296, 45465638, 428787311, 428835752, 428867594, 428885001, 234930178, 428916795, 190545932, 428951489,
- 429001402, 429064623, 429098411, 428015642, 429148859, 429263220, 200720400, 157663234, 429329084, 429623997, 113115158, 429722302, 429771455, 430000186, 7602192,
- 430063818, 179716134, 430096855, 181258944, 430131905, 430293017, 430328276, 430358566, 430374914, 430394050, 192200735, 430440973, 430492355, 2198212, 430623429,
- 430686626, 75464730, 2342949, 254083566, 430719435, 159760410, 430768130, 267534346, 253526446, 430787270, 430918343, 430982532, 237731861, 431049416, 431147721,
- 138575877, 383402050, 431213258, 431276042, 431292875, 185319430, 431344331, 431423534, 431472697, 431489055, 431505903, 431538235, 119226394, 431573708, 8389516,
- 431652874, 320307242, 254345227, 125583799, 431669250, 17842985, 124796930, 431688397, 431850794, 431901390, 432016079, 432095261, 432112263, 135824393, 128974869,
- 432161290, 432196304, 432275887, 25559999, 121929734, 432308725, 252117004, 122568723, 432340994, 432357402, 55754781, 118031272, 432373819, 432406554, 50937887,
- 432423215, 3735659, 432458449, 432786130, 432996371, 433013583, 433045530, 121339910, 433062768, 161628170, 433111080, 433128233, 75530280, 433161039, 433195731,
- 20365314, 433242114, 280903706, 2162717, 46530572, 2147191, 433258562, 433291274, 433307669, 433324072, 130285594, 433341998, 433392340, 433569815, 206668046,
- 61800471, 433588949, 433635340, 198721546, 433654486, 433700880, 433717286, 48054301, 6373807, 433733678, 433783339, 433815578, 433831938, 2326538, 433851095,
- 434061338, 434077999, 434111311, 293044276, 2015244, 434143313, 434178252, 385370840, 434211545, 434275741, 6422530, 434323487, 434342618, 434391771, 434520873,
- 434552874, 2850818, 170803232, 1785882, 434571996, 434618394, 168935453, 434634803, 61440012, 434667566, 434716717, 55853097, 434752221, 150536952, 434848203,
- 434899678, 159301670, 434948831, 136118356, 435027984, 435047136, 20365338, 435093558, 435129057, 435224602, 131334273, 435243746, 51855401, 113246432, 435391203,
- 178078184, 435470362, 385875999, 435489508, 168821583, 435587813, 338133019, 317836006, 435683370, 47710218, 27624369, 435700830, 435750619, 435781647, 2195891,
- 435800807, 435880002, 435912714, 32849941, 435929126, 435945510, 163643451, 435962145, 296026196, 435997416, 436325097, 384632157, 436437044, 134840326, 436469776,
- 436488731, 33392154, 436538090, 436587243, 436652780, 45629478, 436765560, 24297867, 436814284, 5309002, 186466358, 436849389, 437062382, 437108767, 437125130,
- 294633501, 437141998, 437177071, 320634882, 437240771, 437288972, 437305356, 294633487, 437321794, 437354926, 437406125, 50266150, 437454100, 437502006, 437534758,
- 147063546, 332742672, 437551188, 152027148, 437586672, 437698644, 10652401, 437731850, 437766898, 49774614, 437829716, 437865203, 135168016, 437963508, 438029045,
- 438078198, 438127351, 438225656, 438289276, 147407370, 438340345, 153749422, 8390714, 438520570, 438617027, 438665228, 438681642, 438698047, 269107266, 438733563,
- 438812698, 438829058, 438845455, 5505039, 438864636, 252116994, 438943803, 149129981, 425082946, 438979326, 439009320, 439025685, 439042070, 439058434, 439074837,
- 439091206, 246087685, 439109108, 439156776, 115785740, 439536384, 131334720, 439665971, 439715418, 439749377, 180437018, 439796472, 439830467, 439877658, 439894028,
- 108625977, 439913218, 440060675, 440141217, 440191748, 440238111, 141836314, 440255374, 7733770, 440320303, 440353903, 13074434, 440385602, 440421125, 440598633,
- 440632320, 440664080, 65912863, 440680532, 440713227, 138575877, 440730536, 8389038, 224935942, 440765190, 440928628, 118882358, 440991831, 2195598, 441040917,
- 441057310, 441092871, 5310042, 441191176, 220758073, 260964436, 441287755, 441352202, 319602710, 441368592, 6717478, 441385948, 441418031, 3738377, 441451021,
- 2195680, 441502474, 115294234, 441649931, 6602778, 441712656, 441729784, 50511893, 441499664, 441764620, 441958440, 29622301, 441975243, 168722442, 442023972,
- 287113245, 1949727, 442040623, 442074609, 442105894, 442122271, 52723731, 442138666, 442155030, 442173218, 442204172, 170803831, 442221019, 442256141, 442318870,
- 178962472, 442335292, 442419982, 442469135, 306774975, 442548251, 442583519, 150536297, 442632976, 442731172, 442796817, 2162714, 442925164, 237731878, 8388676,
- 6995970, 442960658, 52363269, 277725226, 443058963, 6422540, 443187634, 443220898, 443253195, 443304724, 443550485, 443632406, 6193192, 176488485, 443665175,
- 443728172, 443760706, 443794009, 3227678, 443829016, 443910937, 443991044, 444058394, 444137526, 2801721, 115851276, 444170543, 444203010, 140788391, 444222235,
- 444301912, 275316762, 444334120, 444350476, 8390040, 444369692, 444612634, 444629024, 444663717, 444743708, 444760090, 15073296, 110247986, 444776532, 44171306,
- 444811764, 444858427, 444893981, 444989533, 126877707, 445039194, 445073431, 445123358, 445169751, 445221663, 445497350, 445513747, 445530134, 50315280, 445547730,
- 61456400, 445579696, 445614880, 5865556, 445678199, 445710358, 135905292, 445729569, 52756518, 445809325, 124863311, 445860642, 445973240, 347669372, 350633996,
- 446008099, 48545794, 446055822, 446121420, 446155556, 446317589, 446368549, 437370911, 446447644, 290996264, 446464012, 383483914, 446483111, 446529548, 148357158,
- 446547029, 8390247, 446578754, 446613562, 446677046, 446712473, 446777530, 446809577, 446857761, 140247561, 446906406, 446922783, 185975255, 446939167, 446955530,
- 13549578, 446971935, 352092170, 446991142, 447299600, 447316008, 137102366, 447335207, 447414731, 430931998, 8391464, 447463505, 428883987, 447496232, 447512633,
- 47038466, 447531817, 447627269, 67059748, 447643658, 2326544, 271925264, 348635167, 447660098, 291143682, 447692841, 447709268, 447744810, 447823903, 447840266,
- 111214649, 447859499, 4997222, 147243062, 447938572, 318832666, 447955025, 447987750, 316621647, 50249738, 448006956, 448169164, 448217980, 418054251, 448269101,
- 448348191, 3211698, 403947522, 329859126, 448364598, 77512744, 2834498, 154665023, 448397399, 448446474, 448462890, 177111062, 448479265, 448528413, 448544799,
- 49790988, 448561174, 448577538, 6602809, 448596782, 448660374, 448711471, 2293772, 448807779, 448856066, 448872463, 448888834, 125796362, 448907450, 448938024,
- 448954434, 448990000, 189071366, 449232942, 449282993, 449315287, 49086486, 449348121, 449413800, 449445900, 2195509, 2196454, 449463285, 449529540, 449593375,
- 449609734, 1769503, 449628977, 110215639, 449691714, 55263248, 449724719, 449760050, 125927427, 449839463, 449871912, 118882370, 449888315, 449921483, 449970177,
- 84934696, 449989427, 450134056, 4309419, 450153268, 450297878, 6406180, 450317109, 303579174, 450380623, 450412582, 86327334, 450431798, 450510904, 450543626,
- 221806623, 450560066, 450592850, 450628407, 440811532, 450674772, 450707915, 450757417, 2195536, 450792248, 450890553, 450972474, 451248223, 451297517, 451332233,
- 451413593, 2130865, 451463995, 2195561, 451562300, 120045770, 451625423, 451657771, 451690506, 262078485, 451707913, 451742525, 34701713, 451873325, 451969455,
- 452002326, 2195612, 452034619, 193871882, 452067788, 452100633, 452168510, 45039642, 452231669, 452266815, 452447040, 212731873, 452509737, 55197737, 452526507,
- 452558860, 147423258, 452578113, 452873026, 452902928, 452919312, 14745638, 452935720, 452952073, 452968464, 452984837, 453001226, 453017610, 1212452, 453036867,
- 49742455, 367476742, 453099607, 195215381, 453151556, 5866526, 453214229, 117506285, 453233477, 5324863, 453312538, 453328927, 294060044, 453345751, 453378135,
- 453429051, 453476779, 453512006, 453607891, 453656618, 66371615, 453674014, 275791900, 453705782, 290406416, 49790992, 453741383, 453870831, 453905224, 453970761,
- 454036298, 454099031, 454150987, 454197364, 454213670, 454230045, 454246406, 454262826, 454279284, 454295590, 454311965, 99844117, 157646869, 454626125, 454656037,
- 307134502, 454672405, 56246293, 454688902, 454705282, 2195668, 1196053, 455148435, 455199567, 455248720, 455360714, 455395797, 455428945, 455557220, 455589904,
- 127713290, 5325647, 455609170, 455740243, 455819348, 348602383, 455854932, 455969621, 242368518, 32849956, 456084310, 456131031, 385515586, 456163340, 5868006,
- 456182615, 456477528, 456524234, 2359727, 456559449, 456622960, 456674138, 456737758, 456786882, 24298434, 137052172, 456819912, 456851515, 66945050, 1769509,
- 424230971, 456887131, 456949762, 456966170, 116228125, 456985436, 457048076, 457064486, 254345227, 457083741, 457116510, 457211972, 153190847, 2195538, 457261963,
- 457328871, 113115147, 457425747, 457493343, 47923222, 25559079, 457539624, 46530581, 457558880, 457673569, 457739106, 457821027, 457998830, 7045151, 269664778,
- 458031163, 458063893, 458080310, 458113050, 48021515, 458129410, 458147241, 458178987, 458212499, 458244101, 56721410, 458263396, 458345317, 458443264, 458489922,
- 458525542, 458720407, 5324881, 458769896, 235765798, 458817548, 3227872, 361054210, 458833986, 324453467, 458866707, 158221367, 458885991, 459147798, 2130414,
- 459213672, 459311977, 459376478, 341984558, 154469545, 459440194, 459472937, 389840912, 459492202, 429673323, 459688812, 3555330, 459819166, 459850329, 459885421,
- 5505046, 438240194, 459948044, 2195756, 459967342, 237830175, 460065647, 460210258, 460242974, 460278640, 460327747, 460390459, 118472706, 460426097, 114606118,
- 460537910, 460570681, 248840223, 460587068, 460671655, 2195512, 460721010, 460816621, 460849163, 110215586, 460867252, 460950387, 461062154, 166314026, 461081460,
- 113115736, 461275617, 461324747, 461373582, 461407604, 461456263, 321863711, 188809275, 461504524, 134169691, 461523829, 461622134, 2198391, 461720440, 212959234,
- 401834014, 461769593, 461946902, 327483404, 458244101, 461963303, 7307274, 142589990, 461998817, 2132858, 462094348, 312393756, 462113659, 462275051, 462309237,
- 290996245, 462372886, 109166613, 124862952, 462392188, 462503948, 462521334, 44908556, 462556029, 462602262, 462618629, 462635020, 462651423, 27852842, 130580482,
- 462667807, 6455338, 462685173, 462751489, 462801790, 462913548, 349388802, 292766156, 110249440, 462930261, 462982015, 463047552, 463111036, 25559138, 463162241,
- 296960054, 463274443, 463326082, 463424387, 2196979, 2834540, 463488372, 463539076, 463601727, 238551139, 463636318, 372327160, 463701444, 463735197, 464145286,
- 464309127, 464420902, 234176540, 464437390, 45039656, 52363285, 55623711, 464472968, 464685961, 464732244, 464764938, 4390931, 111624197, 464783877, 464830767,
- 80936966, 464863254, 464879642, 464896016, 464912424, 464928810, 24838166, 121651202, 464946345, 154796141, 464979144, 465013642, 465092620, 5488652, 430686229,
- 465109008, 59375642, 465125398, 465144715, 465257254, 19841060, 465289272, 465321986, 5505061, 3230604, 465338380, 304627714, 465354764, 148636125, 465374093,
- 465456014, 465535007, 465551441, 465585652, 465635913, 465698909, 465748067, 301006858, 465780795, 369623056, 465816289, 2523158, 465914767, 275464202, 3211695,
- 466013072, 466158047, 466193297, 27623505, 466289558, 466340754, 466419722, 48513045, 170803293, 185483701, 466439059, 6898497, 27607050, 41582602, 466520980,
- 466698306, 466732062, 466764822, 466813231, 466845762, 466881429, 466930582, 467058690, 467076086, 467107947, 467143575, 467190285, 467238924, 65896486, 467255388,
- 467288076, 117751848, 87916575, 467304460, 184713247, 467323800, 467372953, 467484779, 467518664, 9551874, 467550210, 145145882, 6324236, 467569562, 237257837,
- 467747295, 467781009, 467848091, 467910749, 467960744, 409829442, 467995548, 468058193, 468090901, 44613653, 468107266, 112936251, 468124185, 136101990, 468192157,
- 468271110, 468287509, 191070248, 468304303, 468339614, 468388767, 163594347, 214564930, 468533264, 27246608, 173490235, 468552608, 468697119, 168820738, 468715550,
- 468763161, 468828207, 2195533, 468860930, 110249520, 468879638, 163315794, 468962209, 469060514, 469107768, 45613082, 469172695, 469205463, 195264524, 469240739,
- 469319699, 469336086, 272908298, 469355428, 427720735, 141852675, 469418521, 469483628, 31424533, 469519269, 2198438, 469617575, 29769730, 51019802, 469746572,
- 469795814, 142868511, 469829818, 6225936, 469863336, 469943929, 469991855, 470027177, 308117506, 49905721, 470368293, 470384652, 10371129, 470404011, 470485932,
- 136118331, 470829997, 392544294, 470876226, 184386450, 470909961, 470944686, 188874764, 471010223, 471157680, 225181734, 471236667, 471272369, 325238850, 471436210,
- 293421082, 471518131, 471564347, 471599812, 29769747, 381665296, 49774613, 471630995, 174424066, 471665588, 471780277, 309624848, 180207628, 165134357, 471960502,
- 472006667, 124403728, 472023106, 22216709, 472058807, 472206264, 180404226, 472288185, 472368072, 472452026, 472613378, 472646169, 472712864, 472743976, 244891670,
- 472763261, 472809538, 191545354, 472843177, 472891833, 472943547, 473025468, 473204010, 473251842, 17809434, 473268256, 260063316, 473301038, 163595294, 118882767,
- 346538043, 473353149, 216449545, 473415783, 473498026, 473530378, 473547383, 473582526, 473631679, 1917026, 473743819, 162660373, 473795520, 473973900, 474021940,
- 474054682, 474071062, 77709328, 474090433, 287145995, 474188738, 474254275, 474367274, 474415160, 474450884, 474500037, 474578970, 474071062, 474598342, 468452193,
- 474646011, 474696647, 474825652, 474891185, 474923018, 474942142, 474991560, 475054539, 475103286, 475137115, 475170209, 475220937, 2198474, 475270091, 475431857,
- 475464908, 475512863, 475529818, 7733291, 475562006, 238714892, 475578434, 464783846, 475611238, 475644372, 475676694, 2162730, 475696076, 475841457, 475874198,
- 475922442, 282036094, 475940009, 185417770, 266765206, 128974858, 475974605, 476054105, 476086282, 306774145, 476102668, 200736789, 476512765, 476564431, 476839995,
- 476872788, 476905478, 294371349, 476923178, 318144528, 476971609, 477004738, 477036598, 477069314, 477085725, 60719120, 477102082, 2195574, 477121488, 477185331,
- 17154079, 477233198, 4998235, 477283196, 468304886, 477334481, 150585376, 148357136, 477431117, 47546394, 477496161, 477531090, 477759402, 477823076, 477855828,
- 477888524, 477907923, 48136194, 2342940, 477973460, 478235605, 478332695, 478380072, 472743948, 478396941, 478448598, 478511163, 478543898, 47120421, 478560715,
- 478609427, 2147780, 478626283, 478661591, 287244325, 478740492, 302055534, 478756874, 6438924, 478776280, 478825433, 478871568, 131891257, 478890970, 478986306,
- 479020619, 479071022, 135905292, 3686403, 479133698, 381550629, 479153115, 479235036, 479282895, 479313932, 479330306, 56492058, 479347626, 479428618, 2195519,
- 479448029, 479497182, 252298585, 479674427, 479707162, 2359830, 479723558, 479739935, 479756290, 479774252, 137101826, 166428714, 479805506, 479841247, 480070378,
- 480116802, 480149793, 480182561, 480217244, 8389364, 480265019, 480313839, 480349152, 480395310, 2129956, 202457401, 480445830, 480512993, 480594914, 480676835,
- 152947684, 480854100, 368902195, 480887817, 25559103, 480920905, 480971749, 481051083, 3211724, 481099788, 481116170, 481132554, 45776908, 481149231, 481184742,
- 5865577, 481247291, 481280021, 135168031, 481299431, 481461499, 117407775, 481512424, 481561577, 481624353, 481656924, 481692650, 481771622, 481804290, 481820698,
- 2408485, 481837115, 481869917, 481922027, 250544144, 482036716, 482181142, 482197537, 482246658, 63817095, 482263078, 482279462, 482295867, 482330427, 482377787,
- 482413549, 482574348, 482590722, 48021525, 132154252, 482610158, 2261008, 482855429, 482903691, 482967639, 483019759, 340770870, 483131458, 232374325, 483165206,
- 256720912, 483213366, 483247475, 483280262, 483347440, 5309449, 483409997, 483442780, 483786811, 343212561, 483822578, 483934445, 173113382, 483970035, 23363723,
- 313245698, 484082601, 484133876, 484230153, 484261995, 484294722, 484330485, 484426219, 372949094, 484461558, 484524044, 441565294, 484542740, 193953804, 484591043,
- 484639390, 484674551, 484786221, 343295129, 484819010, 484854776, 484900927, 64275072, 484933698, 153879442, 484967841, 485018617, 485163688, 64765974, 485198205,
- 485280762, 115769426, 485326902, 3214331, 485359703, 485409745, 485460988, 485720555, 485752854, 318783504, 485772285, 167005090, 485870590, 485982246, 485998658,
- 299008006, 486031381, 352109081, 439746562, 486049275, 486098092, 486146132, 486179295, 486214655, 309723167, 486280192, 486378497, 5799958, 338363215, 404160543,
- 2131182, 486476802, 486640407, 325912806, 486706179, 486801429, 486817818, 155533328, 270434320, 204537894, 486834188, 486851029, 486902583, 47038476, 486951940,
- 487079974, 487096347, 2326752, 107757574, 487129154, 170705929, 487161915, 487196524, 487227867, 487263237, 487489643, 487525382, 2835430, 487639286, 487689223,
- 487768163, 487800891, 55377958, 55377932, 487836680, 263946262, 155779088, 487883352, 487918601, 487984138, 131334673, 488047439, 488079791, 344736265, 488113040,
- 488145894, 488177718, 488210451, 488226838, 488243202, 131891238, 488262667, 488374284, 488390668, 69156879, 2179108, 488409588, 44613748, 181175326, 488866216,
- 32163586, 488999293, 489081869, 489275660, 154190257, 489325462, 489376782, 16826408, 115769451, 489440145, 170804198, 489489438, 489524239, 489701483, 489734203,
- 489766996, 489799691, 357597186, 489819152, 489931806, 322715660, 489963558, 142835750, 489979970, 490014329, 121339930, 490062671, 279904268, 490094630, 490110978,
- 148897813, 162499601, 490130450, 490343443, 1933333, 490425008, 117506132, 2998284, 490471490, 490506463, 490586397, 490618934, 118915103, 490651704, 315588614,
- 490684875, 490733986, 490766338, 490782758, 1916960, 490802196, 23380541, 491078392, 491110454, 491146261, 7602188, 491228182, 147423244, 2998274, 491291637,
- 491357832, 491408048, 491455224, 491488265, 491520042, 491536406, 491552770, 114114571, 491569611, 491621399, 491700683, 4653527, 491750430, 491782190, 491831353,
- 46497823, 491847746, 491883544, 223608854, 491963478, 492011532, 115785730, 492027942, 42599247, 492044314, 149569548, 139035887, 492063769, 352518160, 492129306,
- 492440603, 492489756, 2197199, 492617830, 492650799, 457706525, 492684297, 492716044, 4980852, 492735518, 492978389, 493014047, 55164944, 493076546, 493109280,
- 493142923, 112935945, 282034229, 493209944, 493274541, 493323087, 493355491, 385662998, 493387842, 493423171, 2113573, 493469750, 336789581, 493502483, 243220490,
- 493518935, 493568031, 161726470, 493584816, 493618313, 292110339, 493666314, 291110951, 493685792, 493830635, 493864308, 110215928, 493915169, 493961309, 494010413,
- 348651547, 494046242, 494111779, 494241193, 494272578, 208764938, 350863376, 494305311, 346488834, 494323483, 494370837, 56557570, 494390308, 349765654, 494453582,
- 1917873, 494521381, 494603302, 494734375, 494780432, 261131304, 494799913, 24297696, 494863369, 45613098, 494896533, 494947370, 495029291, 495075435, 495111212,
- 495324205, 427098551, 495419458, 495453912, 495502997, 495567370, 495602734, 495682569, 495714370, 495747507, 495779899, 495815727, 495861800, 466485258, 179716138,
- 4408143, 495881264, 336724025, 135823426, 496009273, 496025612, 49152019, 115738362, 496045105, 147407424, 55918604, 496157988, 496208946, 496271584, 496304182,
- 402309146, 496336922, 496353364, 496389171, 131876079, 496484402, 496519326, 496549928, 496566388, 3309590, 496583178, 884764, 178962442, 496615435, 208896028,
- 496634932, 496746552, 496779266, 496795674, 156827951, 277725216, 496812109, 496845720, 496894427, 496927753, 496962613, 497241142, 126746640, 133283842, 497354341,
- 497404095, 497434646, 215744548, 497451024, 1918366, 3245167, 497467458, 497500257, 497566959, 497599356, 497650743, 497732067, 497762306, 474071050, 497781816,
- 27624457, 497863737, 498139243, 8390102, 498171988, 2260997, 498206110, 498240570, 228376588, 498386518, 498453563, 498519100, 360693786, 498598697, 498630698,
- 498647062, 498663445, 414909308, 498679820, 411746306, 498699325, 498797023, 498843688, 498860053, 498876422, 498892809, 37748759, 498910473, 116376043, 498942553,
- 498974796, 499008002, 499043390, 499105823, 499122197, 120111721, 499138591, 499154954, 198328357, 499174463, 346177595, 499223616, 499289153, 5324910, 499352011,
- 481820682, 499403842, 355729464, 499551299, 499613787, 499646530, 499679260, 126287884, 129876027, 51675162, 499695853, 499728386, 499744794, 499761666, 499797060,
- 190644701, 499909035, 499944517, 500173894, 278216763, 500239431, 500370504, 500450826, 500498469, 108298262, 500517961, 500629544, 500645909, 500662288, 500531228,
- 4112386, 500678677, 500695066, 500711426, 2719750, 2359315, 500727874, 8389756, 500760642, 500793363, 500809750, 2621480, 119800032, 500829258, 500959749,
- 155648016, 52576278, 115769374, 501009072, 501058588, 2196941, 501188245, 501253129, 501288011, 501350454, 501384222, 152190987, 501419084, 501563499, 126042140,
- 501596697, 17842283, 501662218, 501697613, 501761192, 501812302, 183582736, 501891078, 82559007, 501909211, 501940236, 295272459, 501958459, 502006904, 502038540,
- 502054918, 122568725, 502071336, 3244086, 502500432, 204996624, 3227736, 502579688, 502615121, 502729383, 2197364, 167002626, 2195512, 502778962, 502860883,
- 17842286, 502924810, 502972447, 235880460, 502989854, 150799529, 503021590, 439746562, 503041108, 503186906, 503267380, 45498384, 427213747, 503303253, 2359727,
- 503385174, 503463976, 503483479, 503529498, 503545858, 503562871, 2196403, 503595095, 503647320, 503907423, 503971856, 48660506, 503991385, 504119377, 504155226,
- 504218035, 93700122, 504252799, 504315957, 8390593, 504348975, 504384603, 504479803, 504512514, 504529658, 504561686, 183353356, 504579081, 504610845, 120979888,
- 504627503, 504663132, 504709136, 126615574, 504725981, 122568714, 504761437, 25560094, 22216710, 504876126, 116064282, 505023583, 505118766, 505168361, 1933323,
- 505217062, 505233437, 363560972, 505249848, 505282599, 1769500, 505316750, 2195914, 505380885, 108298266, 505400416, 505531489, 1982493, 505597026, 505678947,
- 505709719, 505757738, 505775517, 505825083, 505873609, 505922011, 1917355, 505957476, 506121317, 506236006, 506349195, 506413098, 282035123, 227705432, 2326568,
- 506432615, 506511391, 151093254, 506529359, 506577760, 506645608, 506776681, 506841460, 113115174, 2130355, 506907754, 1818646, 507035747, 409273207, 507071595,
- 464928831, 507134844, 507185065, 507235436, 507347043, 507380312, 5868006, 507412492, 2196960, 507432045, 507513966, 110624790, 507675678, 507707398, 328073238,
- 107479052, 206471178, 45875219, 282034275, 507723878, 507756573, 507773004, 507805783, 507855279, 507887919, 225181717, 507923567, 507972720, 508266507, 508330513,
- 508362754, 299008019, 508380550, 508445130, 508478807, 508527043, 176488459, 508561607, 66273306, 508628081, 508742115, 508775538, 500973868, 509004915, 509116447,
- 509132830, 509168756, 509214779, 509247547, 509281417, 3245225, 509330850, 117424159, 509378644, 54444042, 509412418, 2361131, 509476866, 52133907, 509495633,
- 2197364, 509578357, 509643894, 509689862, 509706246, 509725815, 509804556, 509821020, 509853750, 261193739, 50659331, 509886551, 509935714, 2031656, 4456555,
- 509968438, 510001154, 131859486, 510020728, 510181483, 510217019, 510313254, 510346249, 188106257, 191070224, 113246310, 510381177, 510495471, 510558267, 510591498,
- 510626938, 510757922, 144048166, 5309854, 510820411, 510855140, 510885942, 510921851, 511167612, 511297441, 511344662, 511364221, 511442974, 135497365, 511478910,
- 511577215, 244908044, 511624048, 324894772, 511672779, 511722887, 1212418, 511754327, 126517259, 214368275, 511806592, 512082934, 8391809, 512117568, 512183426,
- 512376891, 512411123, 512442395, 512476169, 48054314, 512508336, 512541530, 512574287, 512606227, 46497808, 512622635, 512655414, 512688130, 2195754, 512705537,
- 2196415, 512753718, 512786475, 248840202, 512819801, 512853499, 512902942, 512968249, 513065481, 137019398, 884788, 513100931, 513146946, 513179658, 354304042,
- 513199236, 513261622, 88686614, 513297541, 119998004, 495682050, 513409061, 513425414, 237322252, 513444998, 6619189, 131795015, 513576071, 513769579, 288997392,
- 513805448, 143753254, 513886443, 513949717, 513966102, 513984716, 514015242, 2621556, 47923242, 514031635, 514048010, 514064412, 514080778, 514097209, 27705401,
- 514113565, 224133160, 514133129, 514477194, 514588708, 514605084, 2179082, 514621462, 514637881, 514654249, 514670602, 7634972, 6602758, 514687057, 2195537,
- 514721799, 351010844, 514769322, 514801680, 514818054, 103743491, 514835477, 514883638, 115589139, 355106842, 514916406, 124862574, 514952331, 515033109, 515067020,
- 515178518, 90521636, 515196671, 515245363, 515293190, 191184902, 515309584, 230621213, 515329165, 115769446, 211337222, 515473448, 515489828, 515506204, 38879242,
- 515522612, 24297574, 515558542, 515621006, 515653642, 54460445, 515670863, 189464586, 515703980, 515755151, 515801100, 355729708, 156829424, 313786839, 515817474,
- 515834971, 515866626, 515883018, 515899413, 515915807, 194282305, 139984918, 516538413, 237699126, 904337, 516574354, 516620408, 8391827, 516637510, 515951761,
- 516672660, 516721302, 8159263, 516767767, 516784154, 516800514, 8159261, 86327353, 516816918, 516833395, 2621456, 516850303, 516882567, 516898950, 34455682,
- 516915216, 516931610, 77496329, 516948105, 516967573, 516997122, 517013516, 517029906, 517046404, 2031750, 517062671, 517079080, 517095462, 173359219, 517111830,
- 517128323, 517144585, 10371088, 517161041, 517193862, 517210153, 517226514, 517242892, 517259267, 2621441, 517275674, 7307269, 517737623, 357597215, 517803160,
- 517980171, 8945666, 517999769, 518127654, 518144054, 518176867, 518209995, 518258912, 5324905, 518291561, 147013670, 518327450, 518375262, 518438954, 518455308,
- 338771974, 51888154, 518474907, 182419468, 518553638, 518570038, 518605980, 260964436, 518655133, 518734630, 3211566, 518767908, 518818974, 518897888, 518930791,
- 518963659, 519015583, 519143455, 115818502, 519163040, 519258217, 519290882, 137104545, 73744386, 519307801, 519373289, 182157314, 519425186, 116375636, 519474339,
- 6193190, 519538538, 519572644, 519720101, 519816015, 2162703, 519848239, 519882120, 3916623, 519913556, 519946261, 185286672, 400801900, 519962684, 366215242,
- 520047782, 520129703, 321552386, 295272463, 520177057, 520224783, 424509462, 520241607, 520293544, 6455315, 520539305, 3457045, 520585282, 499270092, 520621226,
- 141411358, 520703147, 520768684, 51494939, 520847362, 520863770, 222183445, 520883373, 47120386, 520945676, 17006618, 520965294, 521044006, 128761858, 68386828,
- 521061292, 521129135, 521208711, 461963398, 163315936, 521256979, 99893260, 521273403, 521306150, 521323432, 521355348, 521391280, 521519180, 521551910, 225116191,
- 521568272, 521584646, 521601045, 521617424, 99893259, 521633808, 521650202, 521666582, 521682946, 521699356, 137412637, 521718961, 521781250, 159645722, 521797654,
- 55263263, 521814475, 521863194, 521881014, 237830146, 521931954, 522030259, 522076214, 522108966, 176488486, 522125536, 522158092, 247840794, 522174561, 522240026,
- 522256396, 522272806, 2162726, 522292404, 522371082, 522387515, 522420245, 47611907, 522439861, 290996255, 522485800, 15073306, 522505398, 110232687, 522620087,
- 522698783, 522715178, 347144214, 522731586, 522764372, 109199414, 522797359, 45056011, 522831750, 522929782, 522978216, 523013251, 105562135, 523060455, 523108390,
- 49790978, 523127992, 7733304, 523173954, 150241290, 523209913, 523406522, 523436086, 523468838, 523485721, 245301288, 2130223, 523553979, 45039654, 177094659,
- 523652284, 523731379, 523763799, 523816125, 523865278, 523961729, 524009474, 49938458, 1900586, 524027387, 524078057, 524141532, 524173986, 524569792, 524782785,
- 524828771, 524861527, 524910816, 2506763, 524946626, 525041690, 525058114, 525094044, 525139989, 525156378, 525172752, 29900815, 525190170, 142589978, 525238284,
- 147013658, 22216723, 525254668, 525271182, 525305363, 525388995, 525484977, 198754363, 55328780, 525520068, 525598828, 525631943, 19267605, 525683909, 525779043,
- 525811766, 297386744, 525847750, 525896903, 125583459, 2834539, 525995208, 526172176, 526188554, 257638431, 526204953, 526237793, 526303284, 526336059, 526368794,
- 20365348, 526385236, 526421193, 526650570, 526712891, 112525333, 168394851, 526745665, 526794762, 526811168, 526847179, 526909466, 526925834, 526942239, 526961053,
- 119997814, 527007787, 527040967, 47939624, 527089691, 527122491, 1982490, 527155212, 211107846, 527174860, 527237159, 6373484, 527270315, 527304320, 527351820,
- 393494538, 527368213, 131318878, 111624223, 527387853, 527584462, 130859034, 527779710, 208502872, 110234831, 527813840, 527958455, 152964305, 527994066, 528138477,
- 6897953, 528171070, 528220162, 528236559, 528252950, 528270230, 241434626, 456559827, 528321748, 528367637, 528384016, 528400395, 528416770, 122568725, 528433178,
- 528449552, 47611919, 528466807, 528498734, 528551125, 99483677, 528629826, 111624234, 466157927, 528665814, 188580754, 528760861, 46121000, 528777675, 528828123,
- 528859151, 528875541, 160727052, 528895191, 529056238, 529088528, 110100506, 529105367, 529137685, 152354847, 529154079, 529173720, 529219596, 529235989, 208994334,
- 529252374, 529268738, 194101259, 330874890, 529286000, 247775258, 529335793, 529370329, 529452250, 166871071, 529498143, 529514502, 181813254, 7095265, 529530882,
- 249988017, 529549493, 29491259, 529596953, 529662860, 529714008, 529763547, 124862766, 529860950, 529908766, 529943772, 530025693, 530055174, 20365328, 530071636,
- 530104740, 530402527, 124862955, 453214220, 530549149, 106446867, 530599136, 530694176, 212877324, 530727019, 6373613, 530760734, 530795745, 16728073, 13074453,
- 530876859, 173113370, 531006200, 531041506, 531087444, 108314983, 531120650, 531153433, 531221731, 531267626, 114114572, 193200138, 531287268, 51675174, 531333204,
- 515653658, 531369189, 531500262, 2196649, 147013663, 531645030, 531677186, 531693594, 531709981, 205209602, 44253212, 531726403, 531811559, 531909864, 8604905,
- 531972106, 110248411, 531988546, 532021274, 6455325, 532040938, 532172011, 532234300, 2146522, 532316247, 532365418, 532448276, 532499120, 166068280, 532545548,
- 3178508, 532565228, 162168859, 5324899, 532643881, 532660262, 532676610, 122732586, 532696301, 32325655, 532942062, 533037066, 533053977, 533120345, 345374730,
- 4980758, 533152627, 533234600, 533266513, 533299238, 533315692, 533348576, 533384431, 2196289, 452853798, 533512202, 50937858, 437682615, 533529576, 46088202,
- 294027290, 533581040, 25559466, 533643274, 115015739, 533662961, 533774338, 118210566, 533791567, 61456394, 110100496, 533823519, 199459243, 533840784, 533872949,
- 533923214, 6373847, 533988552, 534020098, 93978665, 501170182, 534416627, 534609930, 127713311, 534626750, 534695156, 534773819, 534806538, 3211735, 141606949,
- 534826229, 241190296, 534888480, 534921218, 127746079, 534939034, 535039222, 535118295, 535150651, 535183459, 535217090, 535248926, 535284983, 535397112, 535430030,
- 535495115, 535543890, 535576879, 535610377, 535645432, 535694585, 18153482, 535743738, 29622388, 535890884, 535937492, 535971047, 536019880, 536051798, 536087803,
- 536182851, 536265335, 536298385, 126599170, 536347083, 536399100, 536510495, 159973859, 536530173, 536612094, 522977339, 536775935, 536954257, 537021696, 537083930,
- 537100718, 5308843, 537149442, 537169153, 537199051, 537251074, 82558992, 537296898, 537314334, 537349379, 25561334, 537477608, 537509890, 402195192, 537529038,
- 537644292, 537755679, 537772503, 174424080, 115114855, 32849936, 150388795, 537807421, 537886758, 110133294, 537906437, 537985067, 538017830, 538034651, 538067856,
- 538099733, 46039066, 538116099, 520093780, 538135814, 538201351, 538312706, 99516454, 538329109, 46710786, 538348808, 538496265, 538545418, 538640819, 538675554,
- 538722388, 538757307, 122044428, 538806171, 538870686, 538905867, 539118860, 539263785, 539296047, 539328552, 237731843, 539344912, 88948776, 428720165, 539361339,
- 539394132, 539430157, 539526144, 539561230, 539623505, 539656249, 539672588, 122683418, 539692303, 539754550, 539790608, 539853817, 8391953, 539938066, 540000315,
- 540036371, 27852838, 54296597, 540085524, 78479397, 540147771, 540180486, 540196916, 6766604, 540230479, 540262410, 442793996, 540279239, 50036778, 185319462,
- 540331285, 540577046, 540721179, 540753958, 115163167, 540770363, 49938442, 540803522, 540835861, 540853172, 46352887, 540921111, 51380234, 5325665, 540968030,
- 447840268, 541018040, 17842230, 541183256, 541229593, 541294644, 541330713, 541392898, 541409311, 428769318, 541426152, 541458574, 541492770, 76644355, 541543706,
- 541655640, 541688744, 404029442, 17006607, 541721207, 541753370, 161808386, 541769793, 541819757, 541871387, 541950864, 541986076, 542048294, 154665435, 112476198,
- 2162691, 542065099, 542115273, 258965514, 542182685, 542326815, 542343170, 121077770, 542359618, 5308634, 13074474, 542392779, 103940138, 124551187, 542441907,
- 542474243, 298959695, 542493982, 542623471, 542687248, 120258579, 542705945, 542769233, 542801980, 542884873, 149160990, 542916627, 542933442, 542965791, 144048138,
- 542982574, 543032310, 182157328, 543067423, 543179825, 543260703, 144179216, 366968858, 543277096, 543293478, 122568746, 400801900, 543313184, 543408159, 17006611,
- 155648002, 543427873, 543473748, 543506470, 543522875, 543558946, 543637535, 543653898, 543673635, 543802229, 543834571, 121356309, 128155674, 543886628, 543982069,
- 544014390, 544047144, 1900575, 112033801, 544476454, 544768060, 544853287, 150537053, 544899586, 544932299, 544981004, 150290458, 545000744, 545063957, 545112095,
- 162250768, 545129295, 149930415, 545164585, 49905674, 545226790, 110120216, 545246506, 47251468, 545309730, 148733992, 545342268, 545390604, 545407068, 3833885,
- 545439803, 545475096, 55132202, 545538272, 94601228, 545574187, 246136870, 545622734, 545738028, 1114150, 545833912, 545882626, 545918253, 545964068, 316899357,
- 545983790, 546096940, 128581644, 546145192, 546180399, 546209828, 546226630, 546259247, 546291724, 546308111, 546324501, 546340895, 52609053, 546357355, 2408467,
- 546390028, 546406421, 546424473, 546472039, 546557232, 546603014, 546619446, 432914463, 546653817, 546701328, 546718829, 546750476, 546766858, 546784124, 371277843,
- 546835761, 547048754, 547127312, 6373478, 547147059, 440746022, 547258452, 547291152, 515653670, 547310900, 547454978, 547471370, 547487750, 56639510, 547506015,
- 547569769, 547604041, 547687733, 6455322, 547782692, 547799056, 547815948, 114212866, 547848232, 547864614, 547880971, 547897360, 201572362, 547913750, 547930128,
- 547946522, 547962882, 2801683, 547979266, 268435462, 547999030, 306676249, 233473023, 548064567, 84246546, 548307051, 548339765, 548372511, 226951225, 548389972,
- 548438022, 147816454, 48021510, 548455837, 548504883, 124796970, 548556088, 514687014, 548621625, 180879423, 548851002, 548913236, 548945941, 548962344, 548978714,
- 548995138, 3214173, 549028718, 150536297, 541753354, 549093414, 243516239, 549113147, 120258582, 549208498, 549244220, 549322778, 75464720, 549339630, 549373488,
- 549408061, 549571902, 549670207, 164774775, 549800050, 549883200, 549945413, 549981505, 116375636, 550047042, 550210075, 23773323, 550260035, 550355003, 44171290,
- 550388830, 127500304, 550440260, 550518851, 550601176, 2196571, 550666261, 114081814, 550686021, 550767851, 550833308, 116375611, 229461318, 550880763, 550930811,
- 550977595, 5866408, 240582737, 551013703, 551079240, 551226697, 551371055, 19267622, 551404021, 176980436, 551439690, 130285599, 110247963, 551587147, 115523622,
- 551747668, 151732262, 551780378, 551796782, 1785866, 551849292, 50184198, 551931213, 552127822, 110134493, 552288266, 552308047, 191644078, 552386570, 8392016,
- 552406132, 552452108, 6193190, 552468546, 552502338, 552566794, 552583700, 552632544, 48054294, 2129958, 552665155, 552748970, 552815953, 552894495, 16826380,
- 552911336, 552943713, 144982028, 296634142, 553010017, 553043609, 553091084, 13074468, 553107891, 553140255, 553156618, 553173295, 553207353, 553307474, 108315153,
- 553536851, 553599019, 553635156, 553828398, 8391102, 553880917, 553946454, 554156074, 554172475, 177226716, 554207092, 554237993, 554254348, 554270746, 99893290,
- 554288402, 554355457, 124862766, 291095487, 554401876, 150913062, 554434644, 18153510, 554470743, 132792358, 165494786, 554617885, 554663942, 465551419, 554681366,
- 5308835, 554729494, 17154060, 87916575, 554749272, 554876930, 153714726, 2196591, 554893314, 45613094, 45727746, 554909742, 554959657, 554991626, 3538950,
- 555011417, 555224410, 555270198, 19267594, 555306331, 108314729, 555437404, 2195648, 555502941, 555581482, 555597890, 192495626, 25561445, 192495622, 555631988,
- 555679746, 555696170, 555712578, 555745739, 555794891, 555843594, 397266270, 555863391, 528187418, 555925514, 555943145, 555991511, 116376776, 556023874, 556056996,
- 556090759, 393543692, 556125536, 556205086, 556237259, 556287612, 556338529, 556387682, 556483614, 556515787, 470535523, 556911973, 557105454, 557137922, 557154314,
- 147013651, 557171121, 557204878, 557269018, 557285378, 133496842, 557302603, 280445399, 379256874, 557367355, 557401199, 557434326, 4980793, 557485414, 557550951,
- 557613096, 544047132, 297386419, 557629499, 557662733, 122324359, 557711790, 557761695, 557793739, 557842516, 159449144, 557875216, 50118682, 557895016, 558039127,
- 558088494, 2197040, 558124393, 558186555, 199458872, 240943531, 558222698, 558304619, 3244558, 558465040, 268468262, 558484844, 558598081, 558645294, 558694507,
- 3261249, 558730605, 124862935, 558891089, 558923822, 558972959, 168722458, 558990951, 559040315, 25560155, 559087682, 559120477, 6733826, 559169995, 559218787,
- 559251888, 559284250, 559304046, 122126909, 559369583, 559517040, 559646025, 559694990, 559743006, 559779185, 307610490, 559857723, 559893874, 126615578, 560057715,
- 560120110, 560152597, 119996961, 560172404, 1982474, 387416935, 560316503, 560369013, 560414732, 195952671, 560431163, 560464303, 154042828, 560496652, 79757369,
- 560516470, 560647543, 560709642, 560726446, 560775705, 125583389, 560842077, 560893304, 560991609, 561089914, 561168462, 561234457, 561301525, 561333979, 561365035,
- 21102608, 561397819, 561431042, 322143140, 561466747, 561546152, 561578015, 353189972, 561596315, 561660441, 46088202, 530730364, 116376086, 561725506, 561761661,
- 561938491, 56164362, 561971202, 154665905, 561987596, 107462658, 562004920, 562053162, 562070406, 562102331, 562135100, 562216981, 562233881, 562302334, 562367352,
- 562417023, 562495519, 562511888, 254345273, 562528310, 125583417, 562561055, 176504842, 119817125, 562580864, 562627537, 536233482, 51675151, 308003249, 563023234,
- 563200016, 218841126, 563219843, 563265572, 563281926, 128974859, 563298315, 24838172, 110231608, 563318148, 563462615, 563495763, 82001922, 563560458, 25559086,
- 563578201, 563612722, 563676568, 563725288, 563773524, 563806234, 563823194, 48611368, 563858821, 241680424, 563953666, 563970155, 6947663, 564002859, 335446054,
- 564035887, 564068373, 564084762, 564101136, 564117519, 564133910, 564150338, 564183056, 213958666, 564201955, 564232279, 564281366, 564301190, 25559139, 564396044,
- 93978634, 564413016, 472203290, 564445268, 564481415, 564625430, 564643135, 118915078, 564707366, 564723714, 564740107, 175669279, 79757323, 564756496, 564772890,
- 564789680, 564825480, 276906043, 564904395, 564953391, 564986870, 565022089, 565116959, 565133350, 392462374, 565149698, 212107304, 565166927, 565198911, 565231638,
- 7734105, 283721820, 565251466, 565381637, 565430693, 223707146, 565480843, 565575706, 565592066, 151732262, 565611916, 133414922, 565706764, 565723162, 565739995,
- 122667011, 565775757, 176521282, 565821471, 565838882, 565873793, 565920176, 565955982, 114393098, 566018075, 566054287, 566116439, 566165536, 566198315, 566231050,
- 131334442, 566250896, 566362401, 566394932, 566428185, 566493195, 165134364, 566511716, 566562193, 73187344, 99500063, 52576268, 566676882, 566807516, 189513754,
- 566853678, 566902868, 554270760, 566936312, 566970789, 567017531, 567051744, 567084062, 567116823, 567165012, 135184422, 567201171, 46088195, 567379668, 567427078,
- 567443532, 2130378, 567479700, 141411278, 234307622, 567575580, 567607318, 567627157, 567725462, 567823767, 567869481, 351387686, 67059743, 567889304, 567984236,
- 568016923, 568053145, 568118682, 568180762, 568197196, 568231006, 353239147, 568279342, 568312641, 568348059, 568413596, 568528285, 568655882, 232849410, 568673177,
- 568803330, 568820226, 185319445, 568852492, 568868890, 8389472, 568885785, 445841434, 455442458, 568950820, 261193739, 568967227, 569003422, 569049147, 569081885,
- 569098256, 82558982, 569118111, 305119291, 569278924, 569311298, 569345175, 138641843, 569396640, 133447699, 569510367, 569560481, 569638965, 94109715, 569675170,
- 47710223, 17843041, 569770006, 569786460, 144605291, 569819624, 569855395, 570033054, 33243172, 570068388, 463028270, 86327336, 150569023, 570166693, 570245146,
- 570261516, 8390685, 570279499, 570327124, 116228153, 52215834, 570359862, 6373590, 570396070, 570621975, 570638468, 2523142, 570658215, 44531749, 570687590,
- 570720282, 2197708, 144146453, 570736652, 183369756, 570753559, 570789288, 21151755, 570818676, 570834966, 570854825, 570884132, 38879258, 570903978, 570998807,
- 571015191, 571034025, 8388877, 571064459, 571097111, 1949722, 571097218, 571113513, 571129878, 99876885, 157646964, 571149739, 571313580, 571362250, 571395018,
- 66816970, 82001932, 73531421, 571424770, 571441183, 1900580, 6620267, 571461037, 571752477, 2031673, 571768868, 19447819, 571788718, 53837958, 49938434,
- 94846982, 571850789, 84836468, 571867146, 571887023, 571968698, 571998244, 148638121, 79937543, 572015603, 189464595, 572030986, 572047476, 572063763, 572080165,
- 2031657, 572460465, 572523361, 121045013, 572556875, 572604953, 572673458, 572751878, 527155212, 572768781, 170344486, 181191592, 572820915, 153192767, 572932590,
- 572964930, 572997642, 115015983, 573014109, 48545823, 573063206, 573083060, 136118318, 108314680, 573178765, 573262181, 437980597, 573309836, 573359906, 573390869,
- 3342362, 573408286, 573440847, 573474093, 573523113, 573555448, 164020226, 573589365, 488243212, 573653295, 573685782, 573702186, 573720762, 6324266, 573751318,
- 53706868, 573769331, 573833247, 573850114, 22478879, 573885878, 574080702, 574131639, 574229944, 574292427, 574341176, 251052119, 416628757, 574377401, 574423061,
- 574439883, 574489769, 574524858, 574636034, 3867255, 574652418, 2326570, 5309581, 574672315, 56164390, 574819772, 574882890, 234176534, 574914582, 574930960,
- 126287882, 574950845, 574996910, 575046107, 575078472, 575147454, 575209987, 298352652, 575262143, 9142290, 575340635, 575374324, 575422520, 575455291, 575491520,
- 575635515, 1900660, 575668243, 61997068, 575688129, 575733762, 125927434, 50118658, 2801680, 575753666, 575799322, 575816572, 575864931, 575901123, 576048580,
- 108315489, 576110618, 110119986, 576127083, 576162480, 576208922, 124862896, 576225311, 99516418, 576245189, 576357199, 576390662, 576438284, 576454880, 576487454,
- 129237004, 576520952, 181174338, 576553020, 576635816, 576670596, 576736710, 576802076, 576867783, 131383323, 576962591, 5603340, 576982472, 577060904, 577077290,
- 577093691, 264716396, 46891020, 3720113, 577126510, 577159600, 577191990, 108625958, 577228233, 150503426, 577277386, 308592739, 201523722, 577389069, 577437801,
- 577471311, 577506763, 577568783, 577585168, 67043354, 577602015, 99385360, 27246623, 577634316, 218611733, 577650700, 115294224, 577670604, 577965517, 578062819,
- 431996964, 578093565, 578143088, 47251472, 578191406, 475545626, 578242771, 578322434, 215187466, 578342350, 578536734, 578584614, 578600998, 531316779, 578617409,
- 578667945, 5390351, 578699276, 578716170, 578748447, 115818538, 237731862, 578764816, 578781194, 578798000, 578830382, 116228099, 578879519, 578895878, 122601503,
- 578915791, 578994198, 231817247, 579011019, 46039050, 579061305, 344064056, 152354858, 579158861, 579207178, 579224444, 518488104, 579272764, 556337293, 579355105,
- 579403884, 579436598, 327909847, 579472848, 579551259, 579584010, 579603921, 579650206, 579682736, 579715991, 579764226, 579780629, 579797058, 579829766, 114917679,
- 579849681, 579895377, 579928124, 580009994, 580026389, 179798068, 580046290, 580111827, 379404591, 580175405, 580226516, 580354857, 580386903, 8389153, 165494796,
- 580439509, 580517972, 580550787, 216449279, 580568174, 580652502, 580747283, 202014732, 297484298, 580763670, 497336325, 580780065, 580829291, 102858774, 580861993,
- 2752534, 580879731, 202031120, 580911563, 154665067, 22085658, 580963799, 581173783, 581206053, 17924124, 581222441, 37748738, 581238825, 103448586, 581258712,
- 581304357, 423446334, 7700516, 581320745, 581337145, 581353513, 581369892, 580861990, 157646889, 580861964, 581389785, 27426828, 581468182, 17924137, 90521637,
- 581484556, 581500950, 1949737, 581517362, 581553626, 581632022, 581500938, 581648425, 581664797, 581681268, 581697543, 142180388, 581713925, 581730332, 581746729,
- 581763109, 581779484, 2129939, 581795881, 581812250, 80035862, 582172693, 582189077, 2539651, 582206278, 9207814, 582238808, 516833289, 153649162, 582651357,
- 582749662, 582814977, 2359723, 582847565, 6865743, 582913503, 582995424, 121077800, 583041561, 583107139, 571441168, 258080778, 583142881, 583270637, 405454888,
- 583306410, 583385100, 165134342, 583405026, 513278554, 583451083, 583503331, 170803627, 583548994, 8392164, 583585253, 583648778, 583698892, 415776799, 583745538,
- 583762680, 583794699, 383664130, 583814630, 23856066, 583958566, 3227702, 583978471, 2195536, 155648002, 584060392, 8389985, 534020127, 584171579, 584204298,
- 584220678, 228753430, 584237068, 584253466, 111607814, 584270949, 584319118, 584355305, 584450050, 584466470, 584482818, 3473445, 584499503, 584535530, 584581204,
- 584613914, 131940373, 2670618, 584630274, 584646682, 584663061, 119359358, 584682987, 584863212, 584908812, 60456970, 584925239, 584990749, 249282576, 585007142,
- 585023519, 197345301, 585039926, 585076205, 585138606, 585190894, 585269264, 461684776, 585289199, 585354736, 132808723, 585433098, 585449892, 124272706, 180060631,
- 585482252, 585498706, 585534961, 585584114, 147013668, 585633267, 585829876, 585908250, 585928181, 586023215, 586056908, 586105750, 152945156, 7733719, 586154744,
- 586186764, 125812752, 586204190, 586235942, 586252319, 586268688, 586285066, 56639490, 586301499, 519667722, 586337782, 586419703, 586582539, 2129962, 586662753,
- 586694666, 586714616, 164757807, 586794483, 586829305, 587042298, 587091451, 587156988, 587251750, 587268150, 587300890, 587317254, 587337213, 110231789, 587369982,
- 587547384, 587579926, 587612232, 587681279, 587776040, 4964367, 587792424, 45875237, 587808780, 587825189, 587842030, 587874314, 120078346, 587890690, 587907077,
- 587923458, 587939850, 587956266, 2621468, 587976192, 188583425, 588025346, 588189187, 108167184, 44171274, 588382230, 253625167, 2196649, 588398652, 588483077,
- 588533252, 588611786, 55033893, 588645404, 588680709, 136120806, 588811782, 588873730, 588890589, 588922891, 43237414, 588942855, 589004838, 1933324, 589022182,
- 589057544, 589137589, 7290902, 589205001, 589430810, 589447194, 141410388, 589463564, 589479974, 49774594, 589499914, 589562901, 589611024, 362659850, 589627851,
- 589676575, 589692938, 119357874, 181257806, 2196135, 589709396, 589745675, 589860364, 589906387, 589955153, 589987948, 590020629, 590037004, 192200719, 590056973,
- 590384654, 590462997, 590479372, 590495770, 590512603, 590545808, 590578607, 590643230, 590675999, 224542751, 590692368, 590708746, 590726153, 590757900, 590777809,
- 590823440, 5865761, 590840655, 590872586, 22216714, 590891348, 590954517, 260964406, 590970890, 590987363, 591020034, 61997096, 591037759, 591104694, 591167490,
- 93700134, 591187471, 591282197, 4997172, 591299497, 263176194, 591347818, 591433232, 591560760, 591597073, 47611920, 591757396, 591793682, 313131024, 115721079,
- 591987535, 592020660, 592072211, 70058197, 592314389, 592330773, 592347195, 592383508, 235438927, 592446347, 144621599, 136118794, 592512169, 592547349, 422691250,
- 592627060, 592674882, 592707594, 49086485, 592725382, 592789516, 2198785, 592809400, 592871946, 592907798, 592987075, 593035323, 6621205, 3899869, 593068068,
- 94896139, 593084475, 8390154, 593117212, 47611933, 593137175, 593268248, 593365133, 170999892, 593412633, 593477642, 6127647, 271630389, 119357879, 593494475,
- 593544113, 2130953, 593576479, 593628697, 593855597, 49086474, 593887701, 593936424, 593956378, 351158298, 22216744, 80035852, 195264528, 594034747, 451772470,
- 345686021, 594067562, 594150960, 594182160, 594198544, 594214931, 6602774, 424017936, 594234907, 594300444, 311607311, 594395162, 594412693, 81166348, 594447901,
- 256032794, 594658379, 594723491, 594772009, 594788364, 1949736, 594804824, 594837541, 17006630, 126959635, 594853894, 27852812, 594870575, 374194216, 594903499,
- 163315820, 594952202, 209813535, 594969113, 595036427, 147063977, 595084073, 595119646, 2195495, 595185183, 595263528, 595279878, 45465621, 595299872, 115294324,
- 595742242, 595887593, 17220906, 595938851, 132156964, 596069925, 596148246, 55033877, 51380260, 596164634, 596181051, 41566214, 596217382, 596296713, 596332071,
- 596510465, 596559653, 596607032, 453283368, 417103888, 182272841, 596643369, 2196056, 596839978, 596905515, 420365153, 597016588, 597032962, 597049804, 597084755,
- 597151276, 597298733, 54444058, 456425474, 597345920, 147423254, 564314124, 3228566, 597397038, 597458949, 597475359, 71483421, 597491771, 131842854, 182289190,
- 597528111, 597574126, 597610032, 597753912, 597786690, 597819860, 597852172, 122601498, 152946054, 597869015, 597902230, 597951335, 597986865, 598147126, 185417738,
- 598179842, 598196252, 598212639, 242466826, 598232626, 598329903, 122454018, 598392853, 115114083, 598410214, 598442478, 47611911, 598474764, 598491162, 598507522,
- 598523919, 598541250, 46219304, 598576691, 598674996, 198328358, 2130008, 441466918, 598756917, 598802444, 3244130, 598818904, 300400650, 598851665, 598884354,
- 193675340, 598904374, 598949904, 160759837, 58409026, 598969911, 2130346, 599015899, 599048232, 599064588, 599081059, 599117368, 599395897, 599457823, 599474195,
- 45039638, 192938000, 599494202, 599576123, 599605706, 42369081, 599641660, 404242911, 52805634, 109215780, 599752810, 421855753, 599838269, 82558997, 599903806,
- 599998480, 42369050, 600014885, 491208770, 600032150, 6946933, 600081417, 600116799, 600181358, 600227868, 600244699, 600277094, 117506114, 600309826, 600342566,
- 8392256, 600362561, 600540363, 345784332, 520093782, 600575554, 600653870, 600703577, 600739395, 600899586, 600916439, 600952388, 601030666, 2195876, 601047351,
- 601099845, 601260072, 211173397, 601280070, 57032742, 135184415, 182288816, 3555364, 601391541, 601427527, 601523221, 54460447, 601574984, 475873361, 601653675,
- 3244467, 601686103, 163315936, 601736222, 601771593, 8159347, 34701707, 601968202, 602062850, 602079251, 19251802, 474399753, 602097273, 602144778, 602161162,
- 20365324, 602177552, 602193948, 602210314, 2261021, 602226748, 602312267, 602377804, 299794458, 602423298, 189038607, 602439711, 602456070, 286277674, 602475676,
- 602521702, 602554397, 159432709, 602574413, 207621710, 603016784, 603180625, 603228142, 603275285, 121339925, 603292185, 218611722, 603358318, 603440520, 603472926,
- 194166822, 603505494, 603553798, 156925971, 146358278, 603570178, 153944090, 603587588, 603655762, 603770451, 603848720, 603868756, 132153390, 604012628, 933897,
- 604045849, 111132698, 604111301, 604147285, 604278358, 47546380, 604340240, 604356619, 56262687, 604372994, 150241320, 604389483, 604425815, 604586015, 604602378,
- 604618794, 11665539, 604638808, 604749845, 75530271, 604766254, 604815371, 604831772, 547684354, 4653495, 604851801, 605015642, 605143042, 605159455, 605175818,
- 605192626, 605227327, 605257820, 605294171, 605388812, 50937875, 605405639, 605454338, 605470742, 257638440, 605490780, 605556317, 605749485, 605782305, 203817960,
- 605818462, 605945922, 85098498, 605981526, 606027842, 137101991, 606060556, 606080607, 606146144, 131827474, 606224452, 606276302, 220663332, 606391905, 1228816,
- 606470198, 111624218, 606506594, 606587848, 606651690, 170886007, 606699823, 606733342, 606768739, 606814218, 604274691, 606834276, 607096421, 252117008, 607207440,
- 125812741, 607224408, 263503903, 607256597, 607272972, 607289346, 15007786, 607309414, 607339039, 47611910, 607391335, 607454764, 607485974, 246546474, 607502967,
- 607536044, 108315058, 607604328, 607666192, 607682597, 607698960, 2850827, 44613669, 607719017, 607833706, 607882859, 54296598, 608043308, 608075841, 135184394,
- 608126613, 608194156, 608257501, 608292461, 608339731, 608387112, 608403487, 608419861, 608436654, 608489070, 608603759, 608698484, 608714764, 608731148, 2162745,
- 111149068, 608751216, 608796756, 50135062, 608830667, 608862290, 608894978, 608911379, 608927765, 608944975, 116883888, 608980593, 2146414, 476921956, 609190775,
- 270516234, 609222710, 609257997, 207228530, 609308275, 46530586, 609421331, 609468719, 609501293, 609533992, 150241306, 609551929, 609652340, 609697794, 609714186,
- 2113652, 609731031, 609767029, 286277674, 609812564, 609845348, 609878075, 609910889, 609943582, 609977756, 610025498, 2834656, 44351504, 610041901, 610074753,
- 610108405, 610173466, 456966180, 610205724, 610222681, 610254878, 610289633, 610337198, 610388109, 610435131, 610471542, 610517030, 146817060, 610533392, 122650650,
- 610551155, 3129380, 149815298, 610582557, 295649283, 610599825, 610648102, 610664751, 610697745, 610729996, 610746406, 610762806, 421773317, 610799223, 126287893,
- 611156815, 611192440, 611304755, 611353382, 611385346, 611401749, 235552780, 611421817, 204488735, 204537882, 150913055, 3473444, 611503738, 611581954, 51822630,
- 611598811, 611634811, 243777538, 2506764, 611680266, 611697070, 611746684, 611795858, 6455334, 611844696, 611876874, 13549597, 611896956, 612008431, 612042953,
- 612106261, 135004172, 612123055, 612155404, 612171875, 612204560, 612220938, 612237341, 44531724, 612257405, 226967618, 612372094, 612433946, 612451151, 44679199,
- 120114275, 612485897, 612532246, 1114128, 612549526, 140247139, 612601471, 168902747, 612696982, 612746071, 288997407, 612778027, 612814464, 126287910, 612961921,
- 613023786, 613040154, 613056514, 613072911, 613089302, 613106582, 613157364, 613207682, 50086315, 613253174, 599932939, 613289603, 613367827, 124796931, 2195745,
- 613387908, 613515286, 613531691, 6406154, 613565449, 613598293, 613629954, 234176527, 613646338, 192200714, 613666437, 613777418, 613793844, 613827039, 613859338,
- 196149270, 613879430, 613990428, 614006786, 614023174, 614039555, 19447827, 614057061, 194084885, 614105312, 614141575, 614600328, 614682249, 27738242, 614793976,
- 27852816, 4112400, 614826050, 117506114, 614860105, 47546405, 614911626, 615124619, 615219212, 615235622, 615251983, 192495638, 615268374, 370573352, 615288460,
- 615370381, 613305998, 615468687, 615564457, 615599760, 615697862, 615762051, 615825410, 2129977, 615842699, 615907394, 615940098, 615957729, 616007396, 616074897,
- 616202256, 616218664, 7290918, 616235678, 616267788, 616284920, 191545350, 7290906, 616316944, 216858666, 616334508, 616382476, 616399608, 616432011, 156827702,
- 155533314, 616467760, 616514073, 616579128, 616611927, 616664722, 616710186, 616726554, 616742914, 616759311, 210583574, 525553299, 616779412, 616825290, 616857626,
- 616874015, 122568733, 616890378, 616906754, 393494539, 47710230, 616923152, 135397387, 616939607, 616989106, 617025173, 617088510, 575701018, 617152528, 617168938,
- 617185712, 564838833, 617218104, 617251250, 48447507, 617283590, 617303702, 617366558, 617398293, 617414678, 617431052, 10829835, 617447430, 3342357, 617463810,
- 617480202, 617496592, 292962309, 232030230, 617516695, 474399665, 617860760, 617926297, 617988587, 618024602, 296698889, 618172059, 618233887, 131875495, 618251691,
- 4407599, 618303132, 30392341, 618383292, 618466973, 618512400, 618528778, 618545194, 223608869, 312180757, 618565278, 618660776, 618692613, 94568450, 618712735,
- 198410262, 618807825, 618840086, 126025740, 618860192, 117555237, 618922024, 618938399, 571801606, 618958497, 6374603, 619036694, 619056802, 619200571, 619233306,
- 373604381, 135905346, 619249692, 619266088, 121077766, 619283435, 55033871, 619347970, 2933231, 619364354, 362037258, 619380767, 375406630, 619397423, 15073318,
- 619429900, 113737754, 619447326, 619481776, 402309125, 619876004, 620068904, 47939610, 253935635, 620085549, 620118042, 366116893, 620134481, 620167183, 620183855,
- 397852682, 620220069, 620282357, 164020236, 620314861, 620347500, 620380920, 620413231, 620449446, 620511334, 620544031, 46039061, 111149096, 620560430, 508362768,
- 620609538, 166838298, 620629671, 620757018, 620773386, 620789772, 141295637, 620806237, 620855334, 620874665, 620924584, 621037849, 621101515, 621153047, 621215770,
- 621232182, 621264980, 218611738, 621298718, 621330525, 621383310, 621432489, 621481642, 621543440, 287572075, 621559915, 621592607, 621608991, 224591913, 5308719,
- 621629099, 621690911, 10584093, 621711020, 621821974, 79069186, 621838352, 621855667, 621891245, 621936680, 621953036, 46088234, 621973166, 622084108, 204996611,
- 622104239, 622166070, 30392358, 622199239, 308903972, 622250157, 622313511, 622346347, 622380470, 622428181, 126287893, 175767636, 622448304, 622542858, 122323831,
- 358498983, 622562993, 622624850, 269664315, 622657566, 50937882, 622691229, 622775986, 622887363, 16826384, 622919736, 622953641, 312770647, 622985282, 623019119,
- 164020240, 307986539, 623054515, 623247827, 623300276, 45023248, 623362058, 623378442, 623394818, 623411221, 7733324, 4964373, 623431349, 623509534, 623542324,
- 623578806, 623660727, 182157343, 623738882, 623759032, 623804435, 623820816, 137102456, 623838459, 231768076, 623886378, 623902746, 623919106, 623935503, 623951894,
- 528270230, 623968315, 139034708, 624001064, 624017446, 624033794, 6373458, 624050260, 624082946, 624099781, 176570384, 358514709, 624132136, 624148539, 624184157,
- 73531408, 624215320, 7307301, 624283321, 389136465, 624398010, 624508940, 624525338, 624541920, 624574476, 2326535, 624590886, 624607534, 624640847, 173113354,
- 624673615, 359530498, 624709307, 624856764, 624905917, 624984503, 146767910, 625016898, 8390595, 625053374, 625115157, 625135295, 625197140, 625229906, 625266368,
- 625360927, 123797510, 625377361, 625410074, 625426444, 625442826, 625459831, 625491970, 625508409, 625524767, 112476202, 268468240, 625541751, 625573914, 138346527,
- 625590331, 625623050, 625640055, 625672204, 625688586, 625704981, 625721410, 625757889, 333348883, 625823426, 191004974, 625918383, 625954499, 625999882, 262275091,
- 626020036, 626180856, 49774607, 626212880, 626233029, 626278454, 626311180, 626327650, 203128848, 626360358, 44679170, 626377666, 112754726, 626413254, 626475034,
- 626491823, 626524179, 626540560, 122568742, 626560711, 626708168, 183582722, 626773705, 626868250, 59228176, 626884620, 626901002, 605192291, 626917448, 144097336,
- 438044205, 626983945, 627015682, 627032093, 627048514, 627085002, 451772653, 627179539, 215859202, 627199691, 627311262, 307855386, 627347148, 627425388, 627461837,
- 627527374, 627625679, 627707334, 123846715, 123847115, 627769403, 627803561, 627834892, 241647635, 162250790, 627855056, 627998748, 7634963, 628015125, 628032567,
- 628064287, 628080661, 628097060, 628113427, 628129802, 38879261, 628146292, 628162586, 628181196, 628214159, 628244509, 17924117, 628264657, 628310047, 44597274,
- 628326407, 96190500, 628342900, 267681829, 628359196, 628375561, 31342615, 628391986, 628424711, 628441114, 2196238, 628461266, 628506627, 628523018, 33177615,
- 628539501, 628572246, 581206042, 628604964, 628621847, 79937572, 203653219, 629178433, 242696245, 629228649, 629276924, 629309442, 629325834, 629342218, 629358594,
- 629374986, 114130950, 629393499, 629457199, 141000710, 547684394, 629490185, 79757318, 629524799, 629558997, 46710796, 629640918, 256819216, 629703563, 629771991,
- 629833812, 248266788, 6455334, 629870296, 629965762, 629998460, 3227680, 29491256, 87539734, 630050521, 630197080, 630243340, 630259718, 630276117, 630292511,
- 124239882, 630309339, 630341651, 146653186, 2031618, 630358047, 279855123, 2131182, 630378202, 630456322, 630472733, 2408477, 630492891, 630673116, 630755037,
- 630801212, 630853342, 6373802, 630981040, 631013809, 631046604, 123404309, 133578791, 631082719, 631128090, 631144464, 631160843, 543408164, 631181024, 631259148,
- 115785738, 631279329, 631361250, 631492323, 8388676, 631623396, 631702757, 631783856, 631816625, 631849874, 307511312, 631901925, 631980044, 631996523, 632031715,
- 632065766, 632143894, 584597516, 632160322, 396577253, 632195538, 45613078, 632278759, 632377064, 140477249, 632438810, 632455184, 632471567, 632487958, 632504336,
- 213958684, 632520770, 632557289, 493092895, 632622826, 457770355, 632686428, 632753899, 632897585, 632980816, 633028624, 607617889, 633045018, 2196825, 633061460,
- 633094228, 633126928, 633143598, 633176118, 136118379, 633212652, 633491181, 633605870, 412959634, 633716802, 633753327, 233193474, 2196403, 633979339, 634031856,
- 634109989, 634127390, 634162929, 634257430, 634273808, 634290202, 7389199, 634309190, 634342365, 634390702, 195838008, 634470410, 634490610, 634553238, 634602364,
- 130285578, 634650711, 634702091, 7733472, 634748938, 140247479, 634769042, 634814523, 48447498, 634847242, 634867443, 385515574, 634932980, 175669260, 635060226,
- 150700053, 635077706, 635113205, 635240454, 3833877, 635256851, 635275026, 118636582, 635323881, 635372034, 635405132, 635454952, 635506422, 176570370, 635601950,
- 635633730, 5865577, 635670263, 635912429, 635945451, 635978690, 636011727, 636076088, 636108821, 636129016, 636174342, 636190732, 6209562, 636210937, 636260090,
- 452034576, 99696646, 636371956, 636423931, 636469335, 616120358, 636522236, 636604157, 636715030, 357466178, 636735099, 636784382, 636878955, 79822863, 636911626,
- 636928042, 636944390, 54820875, 636960787, 636978072, 637027196, 637075563, 637108252, 6406156, 637124618, 637141886, 637173779, 47529986, 637191629, 147423242,
- 637226751, 637272523, 637321226, 319143978, 637338079, 637374208, 637485068, 249266202, 637501466, 129958191, 149930050, 637518086, 637554433, 637927953, 539656220,
- 637960683, 637996802, 394379266, 638108495, 188940314, 638144259, 638190712, 73531433, 638226180, 638271494, 638287893, 638304268, 247234586, 638324485, 250185306,
- 638435387, 638468115, 638484490, 217808912, 423448326, 638501335, 175783995, 638534246, 638566859, 280445399, 638619367, 638717703, 638861369, 299008006, 638877783,
- 638926878, 598949919, 638963464, 639042428, 639091836, 49774630, 639143689, 639225610, 639336470, 639352913, 639386027, 109052046, 639422219, 639467586, 639502708,
- 639567162, 93700108, 639618828, 635977827, 639700749, 547962911, 639799054, 640028431, 129466370, 640155660, 52396042, 640173508, 369098818, 640206459, 640270402,
- 640304202, 301418718, 640339728, 42598459, 112919490, 640418790, 136511500, 640454417, 640518495, 640565274, 640583439, 640634642, 640745531, 640780759, 640827438,
- 640876556, 640892939, 640909322, 640925708, 457539590, 640945939, 641105930, 7307279, 641122306, 641138698, 8994858, 641155606, 641187861, 641204281, 9535504,
- 154812887, 641220738, 641237034, 289243178, 641257236, 641449993, 38879233, 641467914, 307134485, 641519381, 641601302, 641630323, 641646724, 641663111, 641679369,
- 58982409, 17924102, 641695772, 514654227, 572047388, 641715991, 641763115, 641797912, 641826826, 53706773, 641844463, 30461353, 423034996, 641875997, 641892354,
- 641908762, 641925151, 551796738, 641941561, 641957929, 641974282, 641990772, 642007077, 7307380, 642027289, 642105385, 642122160, 151912564, 642154525, 377619214,
- 2179091, 642646153, 57032836, 642666267, 642859030, 642879260, 643006504, 547291167, 582829370, 643025295, 47284264, 277856296, 643055656, 52215839, 643075869,
- 643186714, 643203088, 643219472, 301252645, 643235846, 643252243, 643268674, 155861023, 643301432, 5324832, 643334583, 643366924, 266766853, 643383723, 643419934,
- 6406184, 643518239, 193855927, 282838025, 120602629, 643629058, 44908575, 643645461, 643661846, 638304272, 643679121, 643731232, 643927841, 557514778, 644009762,
- 3227730, 644087820, 644108067, 178339861, 644189929, 644252129, 644303536, 644349964, 332480619, 644370212, 218841117, 644432331, 644484901, 563298316, 644632358,
- 644779815, 644825104, 172703782, 644841488, 362037288, 644858286, 644908201, 644940842, 645038108, 645054466, 645070859, 19267612, 645090476, 645169164, 2523174,
- 645186007, 645222030, 168935446, 179765260, 645268469, 645336872, 645631785, 645693442, 45465611, 144048144, 310558746, 645712937, 645779242, 645840927, 645857814,
- 482590742, 645890064, 645906460, 50266140, 645922903, 645972028, 646055283, 646088052, 646136109, 646168616, 646184979, 612319269, 197722114, 646205227, 416284885,
- 499269716, 646398036, 646430796, 646463725, 646496686, 646545492, 646578179, 125583363, 646598444, 646776296, 646827821, 454968232, 647054835, 519815183, 647086082,
- 647102935, 647135234, 250937355, 647151628, 647168010, 84738077, 647186237, 20365341, 392921110, 145473552, 647237422, 647348290, 647384879, 647413925, 647561648,
- 647593996, 519143434, 647610383, 354549776, 647626818, 461963266, 647663408, 23363852, 647745329, 647889373, 647921683, 647938050, 647954453, 647970847, 647987216,
- 241827850, 648003625, 648019999, 648036371, 120094751, 648056626, 648102818, 45498404, 648134953, 648167490, 6602755, 648200208, 648216614, 115589160, 648233448,
- 648265734, 648282133, 648298562, 128254466, 648331276, 648347658, 66273286, 648367923, 648466228, 648548149, 648630070, 2195564, 648693108, 2031654, 648742690,
- 648774465, 648806410, 479100957, 648822843, 648855562, 648871955, 619266060, 648892215, 649052236, 649085972, 649134507, 649167755, 649232390, 6029334, 649248795,
- 545030252, 209010754, 649281966, 199459447, 649330805, 649363487, 136659829, 5177355, 87539717, 649383736, 649498425, 649576479, 649592853, 649609519, 649645599,
- 318423475, 649723916, 649740298, 473547383, 649756703, 649773941, 649809722, 649858875, 116375776, 649922322, 649973564, 129417257, 650085244, 650133532, 650150030,
- 47710229, 650186557, 650264607, 650280989, 650297410, 650330180, 650379895, 2195510, 650412269, 650444802, 650461194, 121077802, 650479080, 650530622, 119358402,
- 651005760, 651265226, 353239094, 651313236, 142835722, 651345946, 651362306, 651378698, 648871955, 651395103, 651411472, 354074681, 651431686, 651477423, 49938472,
- 651509762, 237731866, 651530049, 651595309, 55132170, 651640863, 651658249, 651690221, 651722795, 651759426, 651804764, 124796938, 651837532, 361168936, 651873629,
- 176784215, 651954019, 652020925, 652067275, 4653155, 306774450, 652116052, 129417222, 652152643, 652345420, 143933470, 652382020, 652443698, 270385211, 652480325,
- 652705934, 652738576, 652754960, 27852837, 652771796, 652804905, 119816276, 652836910, 131334196, 652886031, 652903624, 652935184, 553156634, 652951855, 652988230,
- 164184353, 653067665, 2605068, 653135687, 6373432, 653197314, 49086467, 653217608, 653365065, 653443084, 126763245, 653460961, 653578058, 653754384, 653770778,
- 653787138, 653803541, 653819991, 653870048, 241238028, 653918214, 653934658, 653968286, 654004043, 654082114, 654115338, 654147586, 654164006, 213205023, 654184268,
- 267567146, 654344213, 654364304, 47530012, 654462797, 654524482, 654558616, 654606402, 654640125, 654704650, 654721030, 654737439, 654753821, 654770188, 56442906,
- 654786625, 654836193, 654885751, 8389067, 654921550, 655052623, 633716802, 139657242, 56492034, 655101776, 1949698, 655199953, 45531152, 655249233, 655313530,
- 655363922, 251396125, 655507496, 655524272, 655556651, 655589414, 655605787, 655639483, 655704109, 655736891, 655770922, 655818811, 655851579, 655888211, 656031981,
- 137102257, 34553868, 656068436, 656114201, 656180857, 656232277, 589692966, 656362888, 656441449, 656474587, 656506913, 656556491, 656605243, 250937373, 656637958,
- 55427091, 45434750, 656658262, 656769056, 656801868, 656836140, 656868170, 116375978, 656916955, 1114123, 656950188, 657014810, 657035095, 657129931, 657179057,
- 19841045, 42434581, 657211432, 657228277, 657264472, 3538966, 657326082, 657342474, 657362777, 657375443, 657440777, 902390, 657458422, 657473557, 657490157,
- 657522714, 94109706, 79938806, 657543002, 14450818, 657670447, 115721137, 16728195, 657706843, 112427034, 657805148, 657850417, 657932395, 657968989, 19267594,
- 658014246, 179765286, 658031499, 658096587, 115785754, 153748510, 361432002, 658145326, 658526047, 658620925, 47546390, 658669614, 658722656, 658833632, 658870113,
- 658948105, 658964617, 23838855, 658982639, 659046410, 659066722, 659128341, 659145551, 659177498, 659193887, 129958490, 113737744, 659210246, 659226645, 659243095,
- 659293184, 659324930, 659341318, 20365333, 2129950, 659361635, 659603496, 2195574, 659620272, 659653527, 154665431, 659704320, 659754852, 659816479, 5865556,
- 659833657, 659898383, 659914767, 5750786, 659931594, 659963930, 659980309, 659997610, 660078594, 163856415, 660098917, 660242718, 660291600, 660307984, 660324389,
- 2179511, 67059714, 660344678, 660410215, 126025759, 660488238, 139034732, 660537404, 660621973, 660668445, 660688744, 660819817, 660885354, 660963344, 660979738,
- 660996098, 661012501, 270319682, 661031416, 661094466, 661128075, 661193239, 661226319, 136790042, 661258283, 52723738, 661291915, 661356626, 121798743, 661393259,
- 661438530, 661471234, 661487654, 661505368, 661554064, 576802668, 477904924, 661589869, 661654446, 661717295, 661749786, 661767192, 661815312, 661831690, 442745724,
- 661852014, 661917551, 661979596, 662014093, 662062399, 662130544, 662179697, 194691171, 662274060, 662290434, 6324262, 662306872, 662340043, 662392690, 662441843,
- 662536194, 662553038, 662601815, 116375602, 662652233, 662700491, 662749205, 662766415, 662798402, 662835060, 662915261, 662978591, 371277853, 662998901, 663162742,
- 663322645, 663342967, 663454366, 663486474, 372244910, 663503715, 663552046, 663601162, 190136326, 109101212, 663620539, 663699991, 663732251, 663765839, 124239929,
- 663798231, 663830534, 663847815, 663896080, 663912458, 6946818, 663929641, 229359647, 663963178, 664043625, 664076727, 664109058, 664125461, 664141911, 27607066,
- 664191042, 664223812, 664273527, 664306582, 664354872, 664388431, 270189429, 664421865, 664469963, 124796940, 664519539, 664601026, 664633354, 664650858, 664735608,
- 664797196, 664813578, 664829973, 664847243, 664911954, 399147440, 664944706, 664978295, 665014137, 665092399, 665124876, 665141258, 493125653, 665157653, 161988620,
- 665175265, 665223222, 665259898, 665321528, 665354327, 665404257, 665436226, 665469015, 665519305, 665567244, 665583626, 665600439, 665632799, 665653115, 191545373,
- 665698310, 665714775, 665767757, 128155654, 665829387, 665485343, 665846647, 665878566, 241647628, 665895004, 437370896, 665929226, 665976838, 665994063, 665666421,
- 666026010, 639500720, 666042427, 3375130, 666075595, 666126118, 150700048, 666173471, 132890640, 666191122, 666256617, 666305424, 666337739, 666386461, 663601164,
- 666403447, 666435638, 2719750, 666468823, 666501579, 666550781, 666599426, 666615827, 420593695, 667012989, 1933334, 202622343, 140247121, 667205647, 397852698,
- 4997641, 180125738, 667225982, 667357055, 2752514, 667418636, 667436062, 667471744, 667598886, 667616075, 667684737, 667730379, 667779093, 667795482, 667812143,
- 667844629, 667861079, 667911185, 667961632, 668008450, 668024870, 668041243, 668074896, 668106808, 668143490, 668254220, 668270620, 668286992, 7602216, 125583370,
- 668303366, 668319775, 668336144, 668352522, 668368935, 668402473, 668434862, 124862903, 668483670, 668516354, 27624233, 668535168, 668598379, 150585827, 668631071,
- 668647508, 668680274, 668713807, 668745771, 668778935, 649363487, 668815235, 668893215, 668909589, 408600578, 668925981, 668942795, 114786360, 668991514, 126287878,
- 669007884, 669024277, 669040706, 669076310, 669122659, 669155394, 669188610, 669221495, 124321798, 669257604, 669368858, 669405061, 669483944, 123830282, 669515782,
- 669532619, 669581333, 453476418, 669597715, 669614092, 669630474, 48021533, 669650822, 669746042, 669794320, 669810698, 669827979, 669894347, 669990924, 670008329,
- 670040539, 670072842, 264798239, 121454658, 444580274, 670089237, 123273247, 670107022, 266768263, 291111383, 670175112, 670220776, 670253981, 670335968, 670388105,
- 184863206, 119359974, 424017941, 670531586, 124864362, 670548002, 670666634, 670715787, 670793749, 670810143, 670826512, 670842890, 670859316, 670892044, 670908442,
- 670924802, 670941815, 45433264, 670977932, 671039498, 338264083, 671055878, 671072343, 671125389, 671220171, 671268874, 151732245, 671285316, 671335031, 671367195,
- 671399938, 567984166, 671416360, 671432730, 671449547, 671498775, 586186783, 671531019, 671548299, 671612949, 671630159, 671662099, 188481538, 671678919, 671728099,
- 195215379, 671764366, 671809586, 671843211, 671908321, 260014111, 671957535, 672006190, 672055317, 672071692, 672088090, 540753930, 672104458, 672120853, 672138123,
- 671940629, 672203186, 672235551, 672251947, 672284738, 672318305, 672354191, 672466218, 672514114, 672547105, 371277862, 672579605, 672596034, 672628790, 672661515,
- 672677900, 672694298, 669532162, 111656998, 672711669, 672776213, 672793053, 672825382, 672841730, 672858133, 672874583, 672924513, 672960400, 673005570, 673022008,
- 673054786, 673088353, 673120266, 673136679, 249298982, 673169843, 673206161, 673267728, 234848266, 673288082, 287572271, 673382412, 569360410, 673398822, 538116127,
- 673415702, 477937670, 673448468, 673497107, 673513493, 673529896, 673546266, 236355643, 673562655, 673579018, 6619563, 673598165, 673644546, 673663044, 673710711,
- 673742869, 673759263, 673776501, 673808843, 673861523, 8392596, 673939522, 673972255, 4342243, 673988714, 674072726, 133547353, 674120126, 6127644, 674189205,
- 674303894, 2834464, 462159914, 674385815, 119440883, 674562069, 674580404, 149504029, 674664344, 543850562, 674728422, 674759172, 674811801, 674910106, 675004458,
- 134104264, 675021103, 675057563, 675135494, 675151878, 675168268, 54493224, 184388096, 311214475, 675184699, 675221404, 675315728, 675332111, 675348502, 675364895,
- 224739366, 675383808, 220776114, 675430440, 675446850, 675479651, 121799520, 675512326, 675528725, 675545090, 675561501, 142852112, 675578895, 675631005, 8605598,
- 8392607, 675696544, 675840093, 675889194, 675905576, 675921951, 121929738, 675939113, 675971126, 676003850, 676020855, 676053023, 675987472, 548438056, 676069407,
- 676085775, 676102165, 562250620, 676122529, 676233269, 676265986, 676282389, 676298839, 676347925, 663765023, 676364512, 264421977, 676397948, 512720906, 676446248,
- 676462604, 676478986, 676495991, 676528155, 676560953, 676577739, 676626488, 676660047, 676692873, 122503180, 676741929, 676774936, 676823572, 676874349, 676921410,
- 676954138, 676971403, 677036567, 677069854, 677101599, 170704950, 677117973, 677135200, 677200386, 677233271, 677265501, 677318562, 677396597, 677429762, 2196136,
- 677462018, 677478410, 677495415, 677527573, 677544411, 677577757, 677625922, 677658643, 677675039, 128991273, 677692406, 677724200, 190595088, 677741003, 677790327,
- 677822480, 139329562, 677838945, 677905310, 677938675, 677973746, 163726230, 678037065, 678118429, 678166615, 678215719, 678249208, 147505190, 122667018, 678282787,
- 678330408, 678347596, 678395914, 678412919, 678445122, 678478816, 678526986, 678543399, 678576166, 678592539, 654557408, 678625735, 678674463, 678690826, 678708215,
- 678772755, 678789141, 678805591, 678855089, 678887445, 678904672, 678973261, 679034946, 679068171, 462734421, 679118382, 199458898, 679166890, 679247928, 679284643,
- 679363474, 631734747, 679413332, 679514020, 679624725, 679641998, 679706655, 679723024, 7734081, 679739402, 679756619, 679821343, 679837706, 679854082, 679870520,
- 679907237, 680017935, 680037675, 680083458, 228491285, 680099866, 680116226, 680136614, 680181772, 680198228, 154714152, 680230988, 680263712, 680297477, 518307982,
- 680378592, 680411157, 5079517, 680428889, 198754541, 680464295, 680542218, 680559889, 680607783, 678363148, 680640572, 680722913, 680775592, 680869890, 117424166,
- 680886328, 680919106, 217923600, 680952345, 681021353, 681181186, 681198039, 681230342, 2850832, 681247147, 681279503, 681295893, 681312287, 449397621, 681332650,
- 681413881, 681459743, 681476115, 681492501, 681509728, 681574507, 681607197, 681623583, 681639955, 681656322, 681672725, 681689154, 681722145, 3424277, 681755479,
- 46891018, 681788745, 175784872, 681836971, 261981052, 681869371, 681902106, 51855391, 681918474, 681935275, 681968723, 682034232, 682102699, 682164264, 682180629,
- 682197079, 229654554, 682247275, 682282924, 682361291, 682409996, 682426394, 682442758, 682459568, 682491963, 682524710, 682541083, 114294790, 682575146, 250396701,
- 122667036, 682623036, 682704923, 682737676, 682754054, 682770451, 682786882, 682823597, 682902350, 682968073, 682999818, 683016823, 683052974, 683118511, 683180098,
- 114769988, 683213337, 683278392, 683311135, 683327504, 683343882, 683360295, 289767462, 683393916, 683443102, 683474971, 683508637, 683591163, 683638805, 683656060,
- 683704339, 229113922, 683724720, 138625064, 683786278, 683802630, 672890911, 683822773, 683901961, 683933755, 357285926, 229965835, 683970481, 449609750, 684213186,
- 684245051, 684281778, 684444208, 266766796, 684491715, 684543923, 684605482, 345704143, 684625844, 684691381, 416284885, 2196029, 685033008, 685064675, 685098040,
- 685162785, 320127042, 685195501, 685232054, 685294023, 45252634, 685346743, 685408340, 685442036, 685490228, 685526968, 685670703, 685703252, 685739961, 685820464,
- 685871034, 685998563, 686030914, 686064608, 6717471, 686112818, 686145590, 686181061, 686244315, 686276618, 686292994, 686309397, 686325847, 686376282, 686407711,
- 686424547, 2326550, 686457739, 686522379, 529023016, 658112524, 686542779, 686770953, 686817339, 246087708, 686854076, 686965039, 686997560, 687030348, 122601482,
- 687063541, 687095810, 687113074, 687144970, 687161375, 687177747, 249987115, 687198141, 687276569, 434963396, 687342622, 687374372, 54460427, 687393681, 687492848,
- 687574974, 687734815, 7045132, 687751470, 687784367, 687816795, 687849902, 687898643, 687915020, 687931398, 47316998, 687951807, 687997820, 688046185, 688078850,
- 688095253, 688111703, 688164800, 688242719, 688259114, 335446038, 688275482, 1818655, 688291880, 688308290, 688341941, 688754626, 688914862, 688964494, 689029967,
- 49676344, 310297838, 689064379, 689196995, 689258601, 6619202, 689295213, 207650915, 689360836, 520077371, 689426373, 689622982, 689721287, 5324827, 110248399,
- 689835976, 1982490, 689897510, 166346764, 689917897, 689997433, 118292783, 205144090, 690048970, 690192413, 1114152, 214319142, 47120390, 110233510, 690209071,
- 690245579, 690421816, 4997249, 690458572, 690552854, 690570063, 690602022, 690618671, 45760543, 690655181, 690765922, 129942900, 469630995, 690800104, 690851790,
- 690946058, 690962444, 2162694, 690979246, 691028399, 691061655, 93945882, 691113935, 691340278, 691372174, 691404812, 27246594, 691425232, 2196979, 691572689,
- 691654273, 691720146, 691783579, 691847170, 18153509, 691864432, 691912742, 316293186, 691929094, 293601317, 691948079, 154767315, 692011067, 692043815, 692078169,
- 692125712, 116228111, 692142139, 224018470, 692178900, 692256795, 235307010, 692289538, 692305930, 47120413, 692322763, 692375509, 119997393, 692506582, 692617323,
- 116884303, 692650025, 692666379, 692682768, 52805642, 692699162, 692715566, 692768006, 692830274, 692863411, 113541165, 692896656, 146653203, 692932567, 693063640,
- 693158735, 693194713, 3212787, 693403669, 693423318, 693519328, 693568168, 693600794, 306954382, 693633960, 661012501, 693665807, 693682192, 693698570, 693714973,
- 693732220, 269550082, 693784538, 693960788, 557219947, 693993579, 594886715, 694030299, 694095836, 694173712, 147652634, 694194141, 694226910, 694324139, 597475330,
- 694406889, 2146528, 694470139, 657965058, 131334251, 694521823, 474169546, 694669280, 694751201, 694812718, 694861830, 694878229, 694894604, 537772058, 694911035,
- 694943843, 694976528, 6374430, 694992898, 180437002, 695010851, 569098242, 695062498, 51855379, 695124028, 695206765, 695259107, 695320896, 147407705, 695353412,
- 3211303, 7733485, 695402562, 695439332, 695484432, 168902763, 112608168, 449659310, 695504869, 124862935, 695782477, 695844981, 695877658, 695894446, 695943184,
- 291096639, 695963622, 696074670, 51429406, 696123438, 2197525, 696173081, 696238101, 696255311, 696287663, 696324071, 696434780, 239648770, 696468343, 696500262,
- 696516639, 277053461, 696533004, 696549402, 696565791, 696584503, 696616353, 696664074, 696680454, 696696848, 332103706, 696713675, 696762881, 118456336, 696830294,
- 110231652, 696881079, 696946664, 697094121, 697204774, 223182879, 697225194, 697271081, 697307115, 697384998, 697401428, 697434138, 122568735, 1114117, 3375135,
- 697452283, 697499950, 2195990, 697533830, 128155659, 345161782, 697602028, 697811870, 110445027, 697847789, 2196311, 500711436, 697942949, 204587039, 697976010,
- 698023962, 381190192, 138018862, 698040358, 698056742, 307610030, 698073142, 199049226, 698105910, 698139560, 170754058, 698171999, 155926544, 698208238, 698352749,
- 698384396, 152945493, 698404847, 64765994, 698466951, 698516852, 698564710, 698601456, 698695785, 698728460, 79691805, 698990604, 44679194, 699008894, 699039789,
- 699072580, 699121694, 699154539, 699187206, 66928655, 6193183, 699204951, 699252762, 699269515, 699305970, 287130114, 117506351, 699387891, 699535348, 6377461,
- 699581223, 699596821, 3375911, 206225436, 699613286, 27852828, 699648702, 699698393, 699781110, 699844576, 50266150, 699891750, 699912183, 54493200, 699990075,
- 700022886, 700055564, 700071974, 700092408, 700190713, 700351674, 700387322, 700469243, 700695159, 700727317, 700743682, 700760083, 247234597, 700776450, 700792870,
- 700809218, 700825610, 122732563, 700843507, 217710608, 700874790, 700891157, 700907560, 385187866, 700924961, 700956674, 700973067, 47529999, 700989499, 701022227,
- 272384021, 701038623, 701054997, 320913474, 701071370, 701088167, 701136936, 701153306, 701169706, 701186060, 254197770, 701203033, 701235238, 701251622, 397000735,
- 104005663, 701268427, 701317122, 701333510, 332742696, 519143430, 701349929, 701366313, 701382668, 701399147, 701433139, 701480986, 229654549, 701497360, 701513757,
- 701530152, 104005651, 701546508, 701562937, 701579280, 701595686, 701612072, 701628437, 547880991, 701644821, 97681434, 701661196, 701677675, 701710348, 701726751,
- 701743146, 93978646, 606405571, 701759920, 701796348, 701877862, 701911037, 701974333, 249987148, 702022091, 702074878, 702156799, 702367065, 702398476, 190595088,
- 702418944, 702464066, 175014359, 2196571, 702499316, 702545974, 702578754, 702611543, 702664705, 702763010, 702957427, 702992387, 703102978, 52674570, 136856423,
- 136627209, 467960679, 703119419, 152962252, 703152975, 703185397, 703217806, 145473538, 703254532, 2130729, 152963339, 703348746, 703367519, 703418373, 703578122,
- 115196535, 703594526, 703627275, 703643650, 2605082, 703660042, 124863064, 703676442, 1916994, 703692866, 592707610, 703725606, 703741990, 147226655, 703758873,
- 703824339, 357597200, 703873451, 703906601, 703938600, 703955618, 159301663, 703991003, 185270310, 704086049, 704135178, 704151573, 112918580, 175784028, 704172038,
- 704300117, 704331835, 704367896, 704417799, 704480627, 704513451, 2195573, 524910648, 704565256, 704793564, 704839712, 704873816, 704922718, 704970788, 704991241,
- 8388798, 705056778, 2031639, 705134699, 374931484, 705171467, 705282114, 705315576, 52346892, 705350132, 110248427, 705396802, 705429560, 394379290, 705462338,
- 140247147, 147064137, 705495070, 2408488, 705531916, 705646605, 126615557, 705712142, 131334346, 705855500, 705871882, 6029341, 705888545, 705925135, 706052618,
- 7259145, 47120395, 706084970, 706167838, 706203664, 2195890, 706363402, 706379779, 9109527, 19267590, 706400273, 50118693, 51658757, 706445340, 96256135,
- 293716083, 182552597, 707039252, 5619727, 8389124, 707170325, 707264534, 578043935, 707285014, 464748560, 707445258, 707481623, 608731148, 707530776, 707579929,
- 707674992, 301023244, 707723333, 115966006, 707759213, 707839099, 707870779, 707903500, 5619728, 707923994, 708071451, 708169756, 708329904, 152272934, 150683660,
- 708366365, 708431902, 6897730, 708477943, 708546591, 708789342, 416612378, 708837429, 708871569, 708936527, 708968513, 709017641, 5275650, 709038112, 709115926,
- 709132290, 569116108, 640843830, 709149634, 709183815, 709234721, 709312522, 184926211, 709330581, 709398562, 709480483, 709544282, 554270732, 709657490, 709705833,
- 207620196, 709742628, 6422568, 709804034, 709820422, 709836821, 709853200, 709869594, 122585119, 709886398, 709951596, 5309640, 709988389, 124863411, 710086694,
- 710198128, 710246426, 710262813, 447840262, 710280853, 119999024, 710344726, 388857858, 710364026, 710397991, 200492062, 710496296, 710558729, 115769443, 710594601,
- 710787156, 45858842, 710819856, 167084058, 710840362, 711168043, 2197374, 27623903, 711315500, 300925450, 711413805, 8392630, 711479342, 711558112, 711607725,
- 656441354, 711656327, 184389679, 711708720, 711772059, 711839793, 711886097, 711933983, 711950338, 116850726, 711967742, 712020018, 712118323, 712279474, 227639306,
- 712347700, 712409325, 712445037, 712524809, 712560693, 327483404, 712655331, 712687643, 712720921, 712786002, 712818775, 712868291, 712901040, 126763051, 712934602,
- 712982635, 3899451, 713019446, 713064486, 654983206, 713080844, 15351846, 713098391, 713150519, 109051943, 713228294, 713244691, 713261096, 205029414, 713281592,
- 713392194, 713424906, 713445433, 25559515, 713491486, 713524047, 713560122, 713658427, 713769047, 713819019, 713884079, 713917293, 713966027, 180404230, 714014828,
- 714048780, 714100796, 714162235, 714195046, 54460444, 714231869, 157646876, 714276892, 7634986, 714297406, 714559551, 714621848, 714674240, 714735724, 97271818,
- 714772545, 714833976, 714870850, 714948667, 714985539, 715051076, 715132997, 702201868, 715194449, 715231302, 208848462, 715309066, 715326479, 715374630, 715392344,
- 715441560, 715493447, 6373457, 715571238, 319717435, 510771238, 715589545, 715637646, 715706440, 715916402, 715964492, 715998064, 716046638, 280445033, 141705282,
- 716079110, 277954581, 716098254, 117899357, 716214345, 716341274, 716357648, 228294662, 716374122, 716456044, 587432396, 716488797, 716539513, 168722442, 716591178,
- 716652628, 716689483, 716783638, 716804172, 319455992, 716850197, 716898335, 716914753, 716964898, 716997528, 567984166, 717046672, 225313415, 717079969, 717127787,
- 137379869, 717160507, 717193238, 717212833, 115458076, 255459347, 717242517, 32817287, 717279309, 717340788, 126746636, 717738063, 629964852, 115294219, 334070235,
- 717803600, 717918289, 87539738, 717963346, 717996061, 718012848, 718045222, 718061634, 146489350, 718098514, 718160719, 718193504, 718262355, 718324017, 718356561,
- 718393428, 718537748, 114049045, 718590037, 718667788, 718684198, 159760422, 718704726, 718917681, 718965003, 719014388, 227787253, 450334807, 148620209, 719065176,
- 719110196, 719144136, 608108546, 294649922, 719176584, 719229017, 719438256, 719471051, 719523930, 719783219, 719833109, 252297575, 719863820, 719880652, 719913560,
- 719945768, 150077450, 558499776, 719962143, 719978526, 477184002, 720011723, 720060426, 5505061, 278167989, 720076884, 720109652, 720142439, 720225452, 720277595,
- 703365636, 720408668, 720502806, 720519234, 8390401, 1933343, 720553132, 720605277, 706002946, 27623478, 720670814, 720814164, 720849545, 5472296, 720912400,
- 720928808, 720945178, 114409491, 720964416, 721031263, 721125386, 721141823, 243040278, 721178720, 54460438, 721227224, 523599981, 721273291, 721326177, 721567810,
- 721604706, 721666156, 721700252, 721752163, 721780802, 721817700, 119358494, 721881141, 721930836, 7733317, 721981541, 722043456, 722075654, 477904918, 722092098,
- 722125714, 313839718, 722178151, 722291148, 722338710, 152948662, 140476887, 722387862, 722437014, 722489448, 3228075, 722554824, 722616849, 722649110, 722666390,
- 291455002, 722714651, 45613068, 6833909, 722751593, 722846210, 722878530, 722911879, 722960394, 275791900, 722980451, 723026011, 120979468, 723062890, 723140630,
- 723161164, 8391849, 723206210, 723238971, 723275883, 723324838, 723374188, 477937666, 723521645, 723566604, 265027594, 723583002, 723599372, 723615750, 723632140,
- 723648538, 122667065, 723664917, 723682131, 723746826, 723763202, 723779622, 126599204, 696288812, 723800174, 723845146, 723861506, 723877903, 723894294, 687997846,
- 723910710, 210583594, 723943460, 250085382, 723964015, 724026280, 724058150, 724078704, 724173647, 724205770, 564903995, 408833666, 724242545, 724422770, 273924112,
- 724484203, 200736774, 724516892, 724533274, 17383539, 724551677, 724598795, 456966146, 724615260, 724649925, 724683320, 83918855, 724717683, 580861962, 724828229,
- 724860947, 724877322, 724893812, 573751338, 724910102, 641531940, 724926470, 724942879, 271138831, 724963444, 2326533, 725027412, 725075546, 20365352, 725110901,
- 725139485, 725160054, 725206387, 725237781, 725254154, 38879268, 725271011, 725303334, 725319696, 725336092, 725352460, 725368843, 456966156, 151896100, 725766264,
- 725860378, 725876820, 725911193, 62341126, 2293779, 725958678, 725975061, 725991436, 123650059, 726012025, 726156439, 726204447, 308576284, 726222153, 726270004,
- 726302794, 726372474, 47546406, 8392827, 726487164, 127500319, 726536317, 726663278, 726695938, 29900819, 726715159, 726777887, 321863682, 726796976, 726843847,
- 726892582, 726908930, 51839007, 726925322, 726941742, 726991150, 515031342, 727027838, 727121951, 727139884, 119570460, 533069883, 727175295, 119359024, 727304573,
- 727385890, 727418416, 727450518, 24297911, 727502976, 635633666, 727650433, 727711746, 571801657, 147013653, 727728169, 727748738, 2195916, 191678073, 608108575,
- 727859503, 727896195, 727957506, 727973894, 601522182, 727990303, 728006666, 728023099, 728055892, 8994953, 728088641, 728141180, 291160095, 159137818, 728174724,
- 22216820, 728432670, 728465434, 728482016, 2835379, 728514572, 32063777, 113672278, 728534172, 728581601, 728699013, 728780934, 522980563, 728895623, 728957820,
- 729006090, 729022466, 729038869, 217628738, 729055253, 161595413, 729071713, 121864220, 729137167, 254595208, 729157550, 729223305, 729268226, 729286486, 729333859,
- 729366987, 729415692, 729432090, 729449276, 729501834, 729809950, 729845899, 7733287, 729956382, 729992897, 730054715, 275546122, 730087426, 7045160, 184894633,
- 730104279, 154767500, 730136630, 386535413, 730169410, 730202138, 108658716, 730218967, 730251327, 126959653, 730284048, 2361407, 730301470, 730333408, 57032744,
- 730370189, 84934694, 339296272, 409944083, 730447910, 730464299, 730501262, 730678570, 730726832, 730763407, 730808322, 523976715, 730827386, 730874526, 730908501,
- 164479007, 730972619, 731025552, 27852841, 731086890, 731104669, 731152386, 110215270, 731173009, 59228176, 731271314, 731353235, 293502992, 731512834, 147341349,
- 731529309, 731579223, 558841883, 731613567, 731676754, 87539722, 731709494, 731742214, 99893254, 112427029, 731762836, 732074133, 732136777, 4161548, 732184663,
- 732234488, 732269677, 732350914, 2197979, 732397644, 500910540, 732434582, 732545069, 732582039, 732725725, 732758863, 732790790, 732810116, 45760543, 732875162,
- 732958872, 162791446, 313786839, 733052968, 300892189, 733069844, 280903701, 125927434, 733118504, 295731215, 733134954, 733221017, 116375776, 733267928, 733333081,
- 733383183, 733446184, 733462566, 733478955, 110215267, 733513023, 300925035, 733579000, 733659167, 733676574, 733712538, 361316784, 733790654, 733856375, 733892763,
- 733955102, 733986847, 338493450, 118883151, 734007452, 734184635, 11157514, 734236829, 734347371, 734384224, 734430078, 247234570, 734463707, 734496667, 734560793,
- 734625899, 734659525, 734708144, 734740564, 116376606, 734774155, 734839696, 734872011, 184926219, 734924958, 735154335, 735199687, 735248406, 735265227, 700022894,
- 735318176, 735400097, 735461388, 735477786, 171163669, 735496896, 459785438, 735560139, 137445382, 340283554, 735613091, 735674455, 735724280, 4341802, 735760548,
- 141459468, 735821826, 5869158, 735842469, 327663642, 735952952, 735985676, 436717993, 736002507, 736052595, 736085120, 424017942, 736137382, 736215887, 736252071,
- 736346246, 33243267, 736364080, 736395285, 736413556, 736448680, 736493609, 736509974, 102858780, 736526343, 736542852, 2621575, 736559116, 736575529, 736591894,
- 736608387, 736624682, 27344933, 736645289, 295649318, 736724108, 146456613, 573620262, 303611932, 736776362, 30392338, 736821267, 736837642, 736855802, 736886812,
- 96190493, 736903189, 717226005, 736919581, 736935942, 28016642, 736956587, 737230904, 737263703, 737312796, 737329154, 737345555, 737361941, 256032780, 737379924,
- 737477368, 737513644, 737689640, 737706022, 737722406, 5505060, 103940122, 737738764, 737755157, 128761887, 737771530, 49774630, 737792136, 737821665, 584990746,
- 282853402, 96026645, 737857709, 737902684, 19447814, 737935897, 738001861, 738054318, 738136239, 738201776, 738328605, 738344989, 115589151, 298614810, 207962124,
- 738361356, 234176519, 738378641, 738430156, 738492435, 738508857, 738525196, 738541625, 142180374, 738562225, 738591184, 738639882, 204488735, 738657169, 738705414,
- 8994823, 521617444, 738721821, 738738182, 738754617, 738770984, 738787444, 738803750, 17449076, 738824370, 738885642, 738902045, 738918430, 738955425, 739016763,
- 576880678, 593117194, 739053747, 739147795, 739165080, 739213334, 172703775, 739233972, 739295258, 7734103, 739311628, 211173402, 739328913, 739377376, 739411303,
- 739475487, 739491869, 1769474, 739512501, 739607561, 567083067, 739640270, 202522662, 739672169, 739704853, 739722108, 116213292, 739771010, 739823798, 739950614,
- 381829146, 739967007, 739983370, 739999756, 44302342, 150077452, 740016166, 563265538, 740036791, 740081676, 740098086, 740114444, 740130837, 452100180, 128974886,
- 740147216, 740163591, 546799647, 740182584, 7454742, 142180381, 740214257, 7602198, 740249784, 740364473, 740425750, 740442128, 502497306, 740459972, 740491348,
- 740528314, 740590027, 441385391, 740643003, 740708540, 487965248, 740802576, 740818970, 131891236, 740839613, 740933654, 740950451, 740983772, 741015590, 741031952,
- 741048377, 741064706, 201998373, 741081172, 131875664, 153174054, 741113896, 741130246, 219889674, 741150910, 741213596, 2360772, 131891257, 741261420, 741294096,
- 741310483, 741326870, 160727056, 741343275, 295649295, 500842515, 741376105, 741409674, 741441839, 381550629, 741474330, 45023268, 741490690, 48447525, 741509117,
- 204996620, 742133952, 742281409, 742523418, 742555679, 742572042, 742588447, 742604806, 124108821, 742623657, 742653954, 244170783, 231768095, 742671201, 742703110,
- 181141525, 742723778, 742768742, 742805699, 742883420, 269287440, 312033333, 176963596, 742920388, 742998056, 743014410, 55132163, 743035077, 743100614, 743145503,
- 743161877, 743178252, 129400851, 743194636, 131432458, 274120758, 743214479, 743277717, 743309328, 49790987, 278872076, 442974239, 743328854, 743407682, 659914794,
- 743440405, 743456794, 743473164, 743489555, 743505922, 743522310, 234405909, 743538912, 412139579, 743572131, 743621455, 743653382, 743669781, 56639504, 743687378,
- 743718953, 307134490, 743735810, 743772075, 743833612, 447840282, 743854279, 743964712, 332742713, 743981087, 518488121, 743997456, 354369577, 744018106, 49774634,
- 155779084, 744079372, 312180742, 744095760, 11157544, 744112235, 253624404, 744149192, 288620664, 744308755, 293715989, 744329417, 744390665, 9207837, 744407049,
- 744423435, 67240073, 744439810, 410206245, 744456215, 744472599, 744488983, 2179110, 744505479, 744521754, 744538149, 744554497, 77709341, 744571011, 744587293,
- 1212434, 744603671, 51839018, 744621322, 76709906, 13074442, 744652818, 744669224, 744685578, 744701974, 17924103, 744718937, 744751132, 9535525, 744767498,
- 2523178, 745230538, 745390112, 745423893, 542425090, 112918670, 745472131, 59883651, 745490613, 745537552, 470007813, 44908582, 745558219, 745767014, 745801531,
- 108658710, 745849121, 5865526, 47120424, 745882132, 745931223, 201524424, 275447820, 745967820, 746192912, 461963269, 746210275, 746260415, 746356822, 25559094,
- 746393805, 92930090, 746536999, 746574030, 4998174, 746701334, 98107418, 746737871, 746803408, 197722141, 746881053, 404160552, 746898441, 746930400, 118865935,
- 746967249, 149127263, 747192358, 747208706, 245301277, 747227508, 747292776, 312410114, 747340000, 257933314, 747373060, 747421778, 4964383, 747455886, 6373475,
- 747524183, 747569211, 747601979, 747636469, 747683866, 747700250, 747716620, 747733008, 747749397, 88948772, 747770066, 134627338, 747901139, 8392916, 748060731,
- 748094633, 236716042, 748128059, 748175823, 748212437, 748470294, 748486722, 748523734, 748620744, 748687575, 748748812, 748765210, 748781587, 748797974, 748814362,
- 748830756, 50266118, 748848234, 140247145, 484016226, 748929064, 748945439, 169787418, 748962710, 749015256, 749113561, 136790018, 749207611, 749244634, 749355018,
- 8391135, 749371413, 749387778, 749408475, 749502486, 749519151, 749555932, 749867229, 749961761, 750014686, 225181738, 750063839, 2195614, 750288922, 16728082,
- 510312866, 750308265, 62914570, 750354735, 750387216, 118210570, 750404520, 2588738, 750436436, 750470022, 45465606, 750506208, 750633019, 750666160, 750702817,
- 750801122, 750899427, 66928681, 2195669, 751014116, 750305282, 751093326, 751141323, 751190446, 751241367, 751288623, 171556948, 751323406, 266190887, 751371339,
- 161988624, 751435883, 751468976, 5619723, 5619723, 751502749, 751550556, 751583339, 751616011, 751632400, 51871784, 751648834, 751685861, 751866086, 751976514,
- 37438738, 752009254, 752025606, 178765881, 752043382, 435781663, 752095463, 533544991, 752174136, 752239121, 752271672, 752304212, 752337808, 168706114, 752373992,
- 361431094, 752472297, 752582666, 8392938, 119799864, 752600843, 207622379, 6833854, 752685292, 752779293, 752797453, 752832749, 752931054, 752996591, 753057808,
- 500711464, 753075209, 357793818, 753106998, 456738835, 753139778, 753172518, 753190560, 115179558, 753619185, 27624386, 173443541, 753684722, 2719784, 753799411,
- 753958924, 753975334, 753991692, 754008083, 754024469, 232030234, 323207206, 66928655, 117751820, 754045172, 754172958, 124864998, 754204732, 754290933, 274120763,
- 754402216, 8390624, 754435560, 754483960, 140247887, 754520310, 754585847, 754761766, 754782456, 2195605, 8389314, 2130209, 755056642, 755073043, 55377957,
- 153878574, 755093753, 371605516, 755159290, 13238295, 19267641, 118882904, 755241211, 115785754, 73187368, 755351554, 607617131, 755370056, 4292690, 755503356,
- 132579433, 755615948, 755646476, 184713254, 755663786, 755744806, 3211369, 24969226, 755765501, 2342928, 755896574, 755978495, 756074213, 756121626, 270516236,
- 756142336, 756252684, 115523595, 756269527, 1982495, 47087643, 756302870, 110231618, 756351042, 756383798, 540049446, 756416618, 756498508, 756535553, 756663217,
- 341573698, 756698946, 756744734, 146456578, 76742696, 756793420, 756826143, 756846135, 180158466, 756896002, 757256451, 51871760, 757350516, 110248368, 757371140,
- 357597186, 757465921, 757498251, 757532217, 757628938, 545259562, 757645418, 757731589, 1196042, 757792780, 146653222, 59310102, 757813510, 416727052, 757891078,
- 599130140, 757907915, 366907655, 8389571, 757960968, 758087690, 1114115, 132776362, 19038214, 758104076, 758120507, 758157577, 758431754, 758448170, 112754700,
- 458014742, 758466932, 17154064, 758530058, 758546463, 686424106, 758564252, 758612052, 758646105, 758677570, 78479366, 758710755, 115785750, 758747402, 283721794,
- 758825807, 758858187, 27246602, 758911243, 758956042, 758972950, 759008278, 759073921, 759119931, 759157004, 338133459, 2359927, 759267349, 65880066, 759288077,
- 5325291, 759350841, 759451918, 759516513, 759566607, 759648528, 759714065, 759812370, 25562369, 759943443, 760004610, 112754728, 275546114, 760021008, 760037613,
- 760071678, 760136592, 628981762, 760168514, 760202391, 113246289, 760250827, 760302345, 760350386, 219824167, 760382376, 2523146, 760418580, 760610909, 760659990,
- 760677504, 2130865, 760729877, 760860950, 760905730, 29900806, 760926058, 761004886, 761053230, 761103390, 153191302, 761135106, 2195556, 761151490, 761167979,
- 232079391, 761201542, 761233492, 761267256, 761331819, 3178525, 761368855, 761614616, 761709480, 57950220, 761742159, 761774095, 22216726, 761793344, 761856066,
- 761890134, 761937951, 150241322, 761954763, 762003477, 762019866, 125796364, 445841446, 162499484, 50266148, 762040601, 762266563, 762314859, 762348485, 15073311,
- 271384591, 110247986, 762397672, 762445931, 383320086, 762479959, 762531829, 762560737, 318832666, 762597658, 196149274, 762658911, 762709086, 762757146, 184389915,
- 762774422, 762822689, 2196680, 132481106, 762871829, 762888219, 442859957, 762920982, 762937375, 762953738, 131858491, 762970178, 266191121, 763003724, 763056412,
- 763101237, 763134885, 763166786, 203325451, 763199490, 3244114, 763220253, 763400478, 150585791, 763498783, 763756812, 763810080, 19841055, 19251671, 205144092,
- 763875617, 764055842, 188760254, 8392995, 764494720, 81756200, 764547364, 24838150, 764612901, 108315125, 764678438, 2196343, 764759844, 764821525, 764837904,
- 198672426, 764854301, 764870710, 764907815, 765100054, 125796368, 4393446, 765120808, 765181981, 5882713, 765198795, 765248395, 765313261, 113115165, 385515574,
- 765346081, 765382953, 765628714, 402145282, 765689882, 191053836, 765706266, 765722636, 765739010, 307298315, 2195566, 765755629, 765788247, 367886857, 180601320,
- 765837399, 172703754, 765886466, 765902886, 405865446, 765923627, 766001179, 766033986, 766071084, 766198194, 766230549, 7634980, 766246949, 766263317, 99876874,
- 766280075, 766312457, 766328969, 3309597, 766345257, 766361637, 766382381, 154423598, 766415151, 766493201, 22069379, 766525556, 766541846, 766560417, 766591005,
- 766609326, 766640244, 766656552, 766672918, 2523177, 766693680, 27705384, 53870611, 608731143, 766803973, 766820380, 98107408, 766841137, 766873906, 766935156,
- 766951461, 2523252, 766967829, 628326436, 766985536, 767017076, 767033363, 255459369, 767051717, 48480271, 767082524, 767098909, 118882373, 56426506, 767119667,
- 767182817, 767230250, 767263018, 66814250, 767754370, 767770642, 62341252, 767791413, 768037174, 768098325, 768115120, 52609062, 768147466, 768165693, 768213023,
- 112476217, 768233783, 768458806, 93978626, 768493835, 768541481, 768574876, 768623742, 3227747, 768671763, 122683429, 768688174, 768738113, 256656305, 768770132,
- 768807224, 768853615, 768902153, 768935411, 768966722, 768999856, 769036601, 769146978, 228737030, 340132705, 48070668, 769184058, 769327246, 769359931, 537837667,
- 769392652, 769409062, 769426751, 237715693, 769495355, 769704468, 433750123, 769754121, 769786393, 769851499, 769884236, 769917815, 769951110, 770019644, 770085181,
- 13713543, 770277457, 52330522, 333136834, 770310165, 770326670, 770359362, 770392102, 6374312, 770412862, 770609471, 770740544, 468189815, 770785301, 770801670,
- 3375116, 770822465, 770932748, 770949158, 172752898, 1785872, 770965523, 219529238, 770986306, 771032073, 771068227, 763166760, 771212200, 152945070, 771245332,
- 771293213, 771309634, 358514709, 771342967, 771379524, 771440661, 771457055, 771473450, 183369738, 771494213, 771572183, 771604511, 771620885, 771637250, 114409493,
- 771654062, 771704033, 152813570, 771756358, 2197929, 771899695, 771933325, 20365334, 771982905, 229527879, 772080247, 385597919, 772113509, 119226409, 772165960,
- 772247881, 772329802, 772378955, 294633514, 119226405, 8701882, 772457578, 772538378, 772554773, 25559092, 772572329, 772608332, 772788557, 772980795, 773013939,
- 773050702, 773099855, 773165392, 773210133, 172982331, 773230929, 773341200, 773357575, 773373988, 773390374, 773406722, 773423328, 232079414, 445726722, 773456161,
- 773489111, 773522050, 773574994, 122732550, 773719189, 2506793, 773750865, 773783580, 773799966, 773832730, 773853523, 773902676, 773980920, 774012930, 774029350,
- 208601119, 774045717, 774062111, 774082901, 774128075, 774181206, 774259594, 126615590, 774292216, 502759443, 774328663, 774489004, 774554514, 131842129, 774602795,
- 774635628, 774668310, 774684684, 116277274, 774705496, 774799827, 774848965, 774881340, 774964319, 775033177, 775094293, 775111503, 775143430, 775159839, 775176233,
- 31424543, 775192671, 775242257, 564887562, 86327336, 775278938, 264717286, 679755842, 775471116, 119259162, 775487572, 775520266, 775536671, 775553936, 775590235,
- 775634975, 775651334, 775667718, 775684127, 119210000, 775700572, 775733254, 775749698, 775782412, 775798790, 775815174, 2850847, 775831776, 775864747, 775897107,
- 654983194, 775913498, 775929896, 625688595, 775946543, 775979019, 678264863, 775996797, 776045768, 776077399, 776130908, 300335125, 776196445, 776258472, 776294750,
- 776357433, 776456174, 776504233, 776552479, 776568842, 776585218, 776601638, 776618015, 776635280, 776667157, 776683536, 776699945, 776716372, 119800243, 776749279,
- 776781845, 123912258, 776799627, 776851807, 139039072, 777015649, 232996930, 777076767, 274300947, 323305531, 777097570, 777160132, 777191445, 777207895, 8389607,
- 777257062, 777289759, 777306122, 777322527, 47611923, 777339183, 357990419, 777371667, 777389032, 777437250, 777473915, 777523555, 555270154, 777799012, 24297932,
- 143393071, 2129972, 777864075, 149128082, 3260475, 777933156, 778146149, 15007782, 778174767, 778207911, 778240040, 5619738, 19808322, 778256406, 778272794,
- 231555088, 161710082, 778293606, 778403880, 233193482, 538198082, 778424679, 208977979, 778485770, 778502184, 119881749, 778522984, 778735977, 186466370, 778863051,
- 668696597, 778911782, 552878101, 778928144, 778944522, 2195716, 778965354, 779075873, 448102421, 779109216, 779178347, 779239436, 779257217, 779305867, 779371018,
- 4998816, 779403801, 779470702, 779535010, 779567134, 779599882, 779617881, 779665867, 779714626, 273203210, 779751788, 779911178, 779928183, 779960462, 779993119,
- 780009510, 780025894, 47284226, 780042271, 780059051, 780091402, 321307255, 780109299, 780140610, 780173327, 780189711, 25559887, 780206617, 780272151, 780304440,
- 780337218, 780369966, 780419596, 780451861, 780469088, 9535497, 780534060, 780570989, 780669294, 780746758, 780763157, 142950459, 780779979, 780828678, 211173388,
- 780845593, 780915055, 780996976, 781041751, 781090822, 781107219, 108315224, 238059526, 781123650, 137101746, 781156654, 781189591, 781223801, 781275505, 781455730,
- 184926229, 781565967, 781582395, 781615209, 781652339, 781762978, 781799796, 781877274, 781893691, 781927031, 441368588, 781963637, 277954579, 545472538, 782041104,
- 563347494, 782058009, 782123018, 437932406, 782142004, 782172619, 782225783, 782289079, 782337013, 782406008, 782565417, 782581772, 782598154, 782614554, 782630978,
- 782664100, 155832456, 143753222, 782696460, 2408486, 782715115, 238551511, 354369552, 782782841, 113246240, 782848378, 137101411, 782897531, 783061372, 48054283,
- 2196343, 783176061, 180764698, 462487580, 114393110, 783237186, 783269942, 783307134, 32849948, 783351867, 115294237, 783384605, 783400986, 783417428, 783450133,
- 783466955, 783515690, 783532044, 52609034, 783552895, 783827025, 3228408, 783860213, 783892622, 617923019, 783925274, 50511910, 783946112, 110182689, 511656173,
- 783991883, 3244131, 784056330, 241434660, 23085066, 155828312, 784077185, 784175490, 784286709, 784355715, 381829157, 784470251, 733102092, 126042123, 784517191,
- 784568708, 784646154, 56557580, 784662570, 2195935, 50118668, 784683397, 784830854, 784876655, 211189791, 45646736, 784908300, 2359322, 784927149, 756006968,
- 784974425, 2752543, 4177956, 785371528, 278970370, 785682825, 44351514, 785760309, 785793261, 785825804, 4965801, 785843056, 785891435, 589479957, 111034380,
- 785928586, 786022922, 786055471, 786088001, 786138223, 786174347, 786219014, 112771078, 3211371, 786236915, 786268206, 786317394, 1917355, 786354572, 112754700,
- 533399339, 786485645, 786579466, 5308910, 786595866, 786612245, 150388802, 786633102, 153190834, 786731407, 726695946, 786809084, 786841676, 786874887, 786923551,
- 786939914, 171966495, 786960784, 119357499, 787038667, 787087819, 787136963, 787173777, 787220148, 118210598, 4702315, 787300873, 787334000, 787383526, 787481017,
- 787530634, 252280932, 148733973, 158813300, 787564019, 787595796, 787648914, 787922965, 2965506, 7602216, 787939387, 787972128, 788004948, 2670602, 788042131,
- 788086794, 788103227, 788135962, 788152349, 140247887, 788169637, 788201696, 788235240, 788284306, 788336086, 310493621, 788431881, 13074458, 788465236, 788563713,
- 788611502, 529760294, 131335031, 132481131, 788660264, 55197725, 788676654, 788725826, 124551194, 788759375, 788430860, 788792800, 788828564, 789053452, 789069923,
- 789102881, 789135381, 789151831, 5341293, 789201199, 789234295, 789266444, 789282921, 789315668, 789348374, 789364757, 789385621, 789431208, 789463343, 789500310,
- 729022466, 789561384, 789577740, 123600906, 789594415, 789627117, 789664151, 789774348, 789790746, 789811608, 789889950, 789926297, 389840898, 23363797, 790122906,
- 790270363, 173817872, 790315010, 158711827, 790331408, 790347883, 790381081, 790446096, 180764710, 790462474, 153190456, 4964378, 790479721, 625918386, 790544986,
- 790577183, 295927848, 790593562, 790609951, 790626314, 15351850, 790647196, 790729117, 608731152, 624656396, 790808595, 790859101, 790941957, 791004044, 791052381,
- 791102330, 117899310, 791150699, 791183414, 791216579, 791253406, 451428983, 791429344, 791464705, 7733314, 791515551, 791630240, 791695777, 791773194, 791790051,
- 791822417, 791855170, 7389220, 791887874, 791904266, 144048149, 791921927, 792023005, 792051738, 51675165, 792068399, 792102355, 185958466, 792151047, 792215618,
- 792249185, 792281107, 88948767, 792298009, 792363529, 792395815, 792428974, 55132217, 435667478, 792482210, 792546682, 792629667, 792854544, 5603354, 792874918,
- 792924580, 793072037, 793134166, 184388353, 793182239, 793198676, 1114143, 793231819, 793285030, 793347102, 793378854, 27623483, 52674591, 793661864, 793821864,
- 793853958, 77512725, 793871765, 793919515, 637944228, 793956777, 794117324, 794166261, 794232875, 499269698, 237830175, 794297320, 794346073, 794379929, 794427479,
- 794481066, 8392239, 794574904, 794608604, 131891216, 794640406, 794656814, 794710443, 794902538, 794919759, 794951692, 61997087, 794969634, 795017248, 540770320,
- 795050071, 795099195, 795136428, 51855382, 435323104, 452100180, 795263006, 795296281, 46088229, 795365805, 2195933, 795447726, 795644335, 795689026, 7716902,
- 795723827, 795770901, 795787266, 195002394, 191645214, 795808176, 462651418, 795852802, 795869194, 271925364, 795885674, 115770104, 795972017, 774012959, 796196890,
- 796213551, 796246647, 796279216, 796312027, 796348850, 796426324, 796459034, 796475394, 796491791, 796508182, 796524976, 298270726, 796557615, 796590304, 796627379,
- 796819482, 115294220, 8393140, 796835861, 796852250, 796868610, 796885527, 796917847, 796967904, 797016130, 56262698, 797052597, 797131806, 797163551, 797180816,
- 797214297, 634978326, 797262824, 118882772, 797313375, 382435333, 797364661, 797413331, 8389526, 797462966, 2850819, 209175646, 460390459, 797561271, 797966470,
- 41615383, 797987256, 798114958, 25559887, 798162984, 192479258, 798179359, 126697513, 798200249, 798261290, 114114582, 27623738, 798281683, 270516262, 798330340,
- 798376783, 565772309, 798409914, 798441494, 798457882, 798474256, 264093706, 798495162, 426934291, 6373688, 798656685, 232197679, 798720046, 798770268, 45858837,
- 6717466, 798822843, 799032102, 799066638, 549999036, 558628930, 799113247, 52477953, 799134141, 799310082, 799342610, 8606142, 799359057, 379797570, 799391828,
- 799424619, 11059218, 799457386, 799543743, 799624150, 156041258, 799691200, 799773121, 799949733, 799981578, 799997954, 800014357, 800030807, 1918063, 800080905,
- 128155667, 800112652, 146653944, 145735682, 800133570, 800245352, 800309675, 800346563, 800506833, 8390928, 800559556, 800620565, 184387560, 763166732, 800637442,
- 800670143, 147505183, 800702476, 800718874, 2196096, 800735286, 800768892, 800818664, 113247262, 800870853, 800997378, 765313034, 501940226, 801013844, 51855386,
- 743981087, 801047721, 801079322, 801095711, 115721385, 801116614, 801313223, 5325263, 801456160, 801493448, 149585931, 126222874, 801587212, 801603594, 251396117,
- 801622806, 141606952, 801656422, 7733551, 801690057, 801800214, 801816588, 801833546, 801865816, 801899403, 227918750, 801964546, 801997431, 802029672, 802078736,
- 802095114, 802111490, 802127910, 565739551, 788152346, 802148810, 802226258, 191545370, 727664029, 802258998, 802291810, 802324539, 802358265, 802443723, 802570670,
- 802127898, 131334368, 802619432, 383860774, 802635797, 802652619, 152946415, 802701749, 802734146, 802766904, 802800541, 159809562, 154796256, 802884510, 802930795,
- 802963680, 802996243, 803012630, 803029003, 65896479, 803045913, 803112085, 803143746, 803181004, 803275055, 803307522, 803323925, 79691807, 803340294, 803357209,
- 803426765, 803492302, 123273231, 678264848, 803541455, 803590608, 803668414, 803735581, 2326557, 803782696, 803799343, 350912533, 803836369, 804213202, 804340766,
- 804377043, 804439469, 804487218, 804519948, 450543626, 804536766, 3244503, 178472820, 804601868, 125911147, 804622804, 804799344, 804847622, 351240213, 804864031,
- 804880403, 775815189, 804896834, 804934101, 176357877, 124864372, 805012979, 805044683, 805093419, 5603338, 805126170, 805142530, 125927446, 805158914, 505184267,
- 805179862, 805357428, 805388748, 177094666, 805421098, 51282347, 805437506, 152945070, 805470667, 805519416, 805552159, 805569397, 805601319, 7094706, 805634585,
- 805704151, 805765967, 295125030, 805797920, 1917231, 805835224, 806043729, 806076442, 806092821, 140247515, 806110263, 138232242, 806141954, 806158357, 806175567,
- 806212057, 132431931, 600719414, 806291542, 782516230, 135004162, 806355050, 8391085, 806441434, 806537076, 109136925, 806569015, 806600758, 348831775, 806638043,
- 47611916, 5325400, 806715423, 18137094, 806731842, 806764600, 389136815, 807162333, 807309790, 807354452, 807387359, 807424479, 807486876, 807537875, 807583770,
- 111149072, 807600236, 807632906, 48054303, 807649292, 243367974, 807666511, 807701721, 807780462, 807813130, 807829536, 807863179, 148800002, 807927907, 807960578,
- 807976998, 807993375, 116015107, 808011654, 808110350, 808158090, 808191179, 808222770, 7389212, 447660044, 808255519, 808272778, 808304661, 808321871, 808353858,
- 808386571, 555270160, 808407520, 112476186, 808484890, 625524748, 808501287, 808534047, 802127893, 808554977, 808633212, 808686050, 262537282, 808730640, 808747107,
- 808779802, 808796244, 808828934, 541392908, 808849891, 808980964, 341147658, 809074775, 88457256, 809123896, 290406402, 809161189, 352305164, 809305257, 809337770,
- 809423334, 163725742, 809467988, 809501209, 809566626, 809599084, 809631746, 325353493, 809648130, 809664538, 809681005, 809713695, 190646293, 809734631, 659341324,
- 156434448, 809828398, 809879703, 266125338, 809927193, 809992218, 810008879, 140247079, 789873495, 3719275, 810041428, 48054308, 810078696, 810172719, 448102421,
- 810209769, 810287158, 5865526, 153191312, 810320781, 810406378, 704036971, 591593994, 136986643, 810451051, 810483714, 810500128, 810532930, 810570180, 810632580,
- 810696725, 810713154, 810746159, 392921128, 810779156, 810827833, 810844191, 810860550, 318832646, 810881515, 417300492, 596803606, 810942495, 810958854, 234405894,
- 810975769, 811044722, 811090988, 811139169, 811206434, 811237407, 811253798, 811270175, 811287440, 811323554, 811352066, 780189706, 811368470, 247611451, 811389420,
- 811450474, 779075624, 811532820, 811581476, 811598716, 811646995, 811663381, 811682945, 6619945, 811731540, 811778060, 811794458, 175669290, 811815405, 812044782,
- 812122134, 802361199, 812139550, 812171911, 812221440, 812255209, 812335125, 812352413, 812434400, 226557973, 812487151, 812598113, 729006106, 812630319, 812662794,
- 812679627, 812728376, 812761154, 812794327, 812826690, 812860279, 812894011, 812945904, 246562854, 813023244, 813039657, 3538950, 813056011, 813072386, 44302342,
- 813088784, 122732554, 813105233, 813137932, 813155066, 813187126, 813224433, 813302012, 118210562, 525631547, 147062814, 813334559, 808682706, 813351342, 813401408,
- 813432853, 71401526, 813453810, 813498380, 813514762, 241827861, 813531163, 813568499, 813678699, 813712207, 813744187, 813776922, 158811636, 813793373, 279150604,
- 813842498, 382484561, 813879796, 45646878, 814039052, 216451228, 814056184, 814088625, 550944790, 814123037, 814170138, 814187343, 814219695, 814252034, 814268426,
- 814284816, 5718026, 814301203, 814317590, 814334475, 814384426, 294060034, 814436853, 814567926, 814698999, 814764536, 814846457, 2113652, 814907880, 814940162,
- 814956565, 814973015, 815022945, 815059450, 171753494, 815108603, 815206908, 815251471, 815272006, 815349772, 815366154, 127893525, 815387133, 815513692, 238552875,
- 815550872, 884776, 815628331, 815665662, 815841336, 25563091, 815878655, 206880901, 311411535, 816021596, 816054278, 118243350, 816071115, 816119810, 816137327,
- 816168979, 816185370, 24969252, 816206336, 816300044, 816316426, 816332917, 816366441, 816431592, 816468481, 12648580, 816665090, 816730627, 268189735, 689799227,
- 816824407, 119997415, 693503937, 816873554, 816907158, 816960004, 817123845, 8389487, 817250343, 817283093, 817299458, 817315850, 817332226, 2113541, 817348715,
- 817385990, 817446988, 817484295, 817598984, 817659919, 817676300, 817692710, 221806594, 110215285, 817709358, 817741865, 2197690, 165773340, 7258164, 817759432,
- 817792286, 817840154, 817858226, 817889364, 817923061, 817988847, 818020363, 260064079, 146854409, 818041354, 818153432, 818219311, 164020264, 818303499, 818483724,
- 818528293, 818549261, 340280354, 151912469, 818593814, 1212532, 818613960, 307134505, 818675734, 2113577, 818692132, 251806149, 818708530, 818742008, 818774037,
- 90112057, 336887836, 818795022, 818841804, 8393231, 818875554, 571965468, 818921500, 7635001, 818937878, 7667724, 818958864, 819003421, 40960041, 819023510,
- 52215938, 819085444, 819101719, 59293830, 283967510, 819122705, 819286546, 147390495, 174080045, 819414502, 819466771, 819514672, 819560454, 819577326, 819609659,
- 819643512, 819675179, 452100162, 819712532, 4980871, 45875212, 819757066, 819773497, 819789860, 819806229, 819822628, 179716212, 819843605, 3245215, 819937320,
- 819954425, 714244134, 820400663, 820659601, 820723733, 820740162, 820772918, 820808408, 820871206, 820888399, 820920849, 820957720, 433635340, 52723722, 821002271,
- 821018645, 821035039, 251396115, 821051446, 821084260, 194510874, 821121561, 821198879, 41582630, 821215248, 821231622, 821249000, 821297183, 531972115, 598327306,
- 821316083, 821412831, 821461013, 821478296, 821526570, 821545248, 821592601, 821658969, 821690378, 46219276, 821706784, 821739607, 821788687, 821805072, 47251496,
- 821821461, 821837854, 821870623, 821886995, 55263234, 821903370, 821919773, 821940762, 135168002, 822137371, 822249628, 822297193, 822329356, 788152358, 42418195,
- 822347095, 822395357, 822427674, 822444034, 128892970, 822462886, 444107103, 822525995, 822559214, 822591542, 822624870, 822657040, 822673434, 176521519, 5767184,
- 822694424, 822739046, 822771743, 47546396, 822788556, 822820876, 198410278, 6455311, 822841884, 822986540, 823034344, 823066640, 823083046, 823099408, 56655883,
- 262914069, 823117289, 118882411, 151732236, 823165021, 823214092, 823230493, 823246914, 823282844, 823328794, 237731869, 162332674, 431308802, 823345211, 691912710,
- 823377930, 823394306, 823410745, 494272524, 823427985, 159449144, 823480861, 823628318, 823705823, 320946229, 163726464, 823743007, 823854205, 287113232, 823935026,
- 77512716, 408272912, 823967775, 823984134, 824000533, 824016912, 3162127, 824037920, 142180363, 824119841, 824349218, 824426502, 824447523, 824509331, 824557614,
- 441466920, 824609399, 109150271, 824672322, 824705083, 824742436, 703250444, 458178619, 824786946, 824803368, 55132189, 824820575, 773095948, 824885298, 805224450,
- 824918471, 824967189, 824983639, 825032730, 825049563, 825081872, 825098250, 825115817, 825152037, 825381362, 825428454, 825459606, 825507947, 825540620, 62390298,
- 825558681, 3248678, 825606246, 825638978, 141295626, 825672873, 788152341, 825704479, 159383589, 165773340, 825725479, 825999790, 139821147, 826049988, 826081310,
- 826114074, 826130463, 464928787, 826147275, 498909203, 826198202, 826228746, 826245145, 483786754, 826277942, 826310668, 826327050, 826343452, 214335490, 826361151,
- 826425668, 826479144, 826525866, 219627539, 826589238, 826626601, 388825109, 826691720, 826720266, 826736668, 56164378, 826757674, 826852220, 826901480, 409273374,
- 122601498, 826954283, 827150892, 827213875, 128843788, 827260947, 27852822, 52199436, 827277835, 827326493, 279150608, 827343305, 433144614, 827478573, 827544110,
- 827626031, 827703325, 827719739, 827752459, 827768848, 827785242, 827801615, 218841110, 827818876, 827867650, 827900535, 827932699, 827965442, 827982846, 828031409,
- 828063820, 574324774, 828096514, 138625043, 828112902, 828129346, 828162350, 828194843, 520142879, 828227668, 828260362, 828276755, 828293207, 828346928, 828559921,
- 828604653, 828641842, 828703009, 828736380, 828788557, 828854050, 409272419, 828932152, 25559103, 2834721, 828969523, 829148994, 829195087, 829227036, 829243394,
- 829259797, 152272917, 829276172, 829292550, 829308949, 144375839, 829329972, 130203690, 324567042, 829390864, 829407270, 829423700, 829457309, 829538342, 829559349,
- 829636634, 94339088, 829653904, 829685865, 829718540, 88948751, 829735371, 829784133, 829818185, 829866043, 829901832, 829947967, 829980678, 79691807, 829997068,
- 391692397, 830013677, 830049730, 457539590, 830097338, 830149174, 48381974, 830231095, 830493240, 830586911, 654983197, 830603723, 830652428, 830669814, 830701590,
- 830718011, 830751668, 830820921, 147013643, 823296010, 111181845, 830947387, 830984762, 831094796, 606650394, 831115835, 831246908, 831340584, 182632458, 831361597,
- 366428188, 831443518, 831537154, 654017008, 831554070, 831586783, 831620719, 831668289, 831720311, 831750156, 831766584, 831799790, 816255551, 831836736, 5309018,
- 831902273, 832098882, 832361027, 832405658, 8393284, 832438295, 832454805, 20299908, 183975967, 1753107, 832492101, 832574022, 832639559, 832716821, 166068290,
- 832733222, 477937676, 832754248, 832897030, 832913439, 832929808, 832946186, 832963492, 833016393, 615694783, 833078663, 45727760, 833112073, 833178179, 833229386,
- 833290674, 833326668, 833373596, 833425995, 340280058, 414909334, 833504115, 833586363, 833638988, 760955371, 833770061, 833830927, 219480086, 833847334, 833863682,
- 47611941, 833880095, 73531402, 833901134, 833963891, 833995199, 834027551, 469499925, 834048591, 834294352, 475136847, 834422301, 4997720, 834487119, 2506794,
- 834523729, 834605650, 834835027, 834912365, 823759444, 834945083, 152946102, 10649684, 834982485, 835077465, 835111596, 7734302, 116376585, 128450619, 835223554,
- 62341131, 835240023, 835290040, 413270045, 835342033, 835387411, 805224460, 835408470, 42434576, 835551270, 835567618, 835584042, 835600396, 835616806, 83591206,
- 675168258, 835633690, 835665936, 7258204, 835686999, 835731547, 835764236, 835780624, 49479701, 835797839, 45252637, 45252624, 835834456, 836042833, 836075532,
- 125927445, 836091958, 836124779, 139198483, 836157972, 836211289, 340280992, 836272134, 836289359, 836321286, 836338544, 836386838, 836403202, 471547914, 836419887,
- 6374263, 836457050, 836517904, 356925466, 563347462, 61997092, 836534704, 134513154, 836571739, 836734192, 836796457, 47251487, 836813858, 1212456, 836846455,
- 836878358, 836894774, 836932188, 786022602, 837025874, 131334236, 837058586, 837075028, 837107722, 366116885, 837124112, 837145181, 837189691, 837224025, 171459035,
- 837272606, 837304779, 837354886, 837419475, 432406566, 837469460, 837518274, 837550106, 837566548, 837599251, 837615618, 837632026, 837648399, 189235202, 837669470,
- 727664618, 837882463, 837943927, 837980768, 3262323, 838124512, 838172682, 838189095, 838221850, 838242913, 838320143, 838336538, 838352912, 838369309, 55443496,
- 65699842, 838387463, 838437610, 2965535, 838485929, 558628918, 838534167, 838586978, 838664495, 768622604, 838701667, 208995151, 838796176, 839176805, 839355357,
- 839401529, 839417858, 839434250, 839450645, 839467010, 839483434, 139018252, 839499817, 839516226, 839548966, 654983199, 839565338, 839581708, 839598092, 839615566,
- 839697515, 839729168, 119226373, 839745966, 839794716, 839811103, 839827498, 122667048, 839846590, 839893007, 839910494, 839958530, 226230298, 839974943, 839991306,
- 840007701, 840024907, 840089616, 246677561, 840110694, 840156043, 237731881, 840220896, 840253494, 840286219, 840302620, 840319014, 118948802, 840335379, 122699807,
- 840351774, 840384528, 31424517, 840404170, 840466539, 116277277, 2654246, 840499226, 363364358, 840520295, 840712952, 209191514, 840745067, 840777738, 840794759,
- 840844989, 840925210, 128155690, 840941583, 840957979, 840990786, 841023498, 841040331, 757350426, 841089108, 841121823, 479100939, 841138182, 841155473, 841208424,
- 841384035, 51625986, 841416720, 780763162, 841434299, 841482252, 347144218, 775929868, 841498690, 156155914, 841531402, 841547816, 841564697, 841629752, 841662493,
- 591773999, 841678870, 841695244, 267567105, 841711723, 841745966, 661028906, 841793548, 841809946, 841827989, 841891906, 841929321, 213631007, 841990146, 842006538,
- 115179539, 842022978, 842056942, 842088458, 3850242, 842104843, 842121247, 842137610, 842153986, 842170424, 842203235, 842235910, 842252354, 56754192, 583630850,
- 842289770, 250937350, 842399772, 842416212, 842448922, 842465317, 273351115, 775176221, 842486379, 842530838, 842547202, 262193162, 842563610, 842579970, 842596362,
- 842612755, 842629142, 840499231, 842645506, 842661930, 110608396, 842678312, 842694687, 842711078, 842727455, 160743452, 842743829, 842760194, 842776604, 842792998,
- 842809375, 842825734, 228245526, 842845377, 47317049, 842891306, 842907688, 842924058, 842940482, 842973237, 843005995, 843038739, 843055116, 723289633, 843071498,
- 370720789, 843088347, 843120661, 213025660, 843141740, 843252012, 505463247, 843289197, 843366426, 843382805, 843399180, 114409482, 370720780, 843416745, 843448330,
- 843466998, 182632454, 843513882, 214827067, 843530242, 843546729, 612319254, 843581064, 843629675, 843661352, 843677702, 843694111, 135561232, 350863372, 843715182,
- 843776054, 843808787, 843825173, 843841839, 843874330, 122667019, 843890700, 843907082, 128581672, 843923468, 843939866, 156155935, 843956236, 843973059, 844005406,
- 156155910, 844038381, 841498655, 844070922, 844087315, 844103701, 115703839, 844120928, 844186030, 128155685, 844239471, 121356330, 844283906, 27328550, 844300348,
- 844386928, 844448227, 121356326, 844480523, 844496924, 844513292, 135577626, 844529670, 844546054, 844562891, 844611637, 844644364, 844660772, 844681841, 844730994,
- 844808204, 844824656, 143441951, 844862067, 844922939, 844955674, 844973545, 845021186, 845037578, 666271775, 845053964, 845070346, 845086741, 273351115, 845103138,
- 845217896, 845267834, 845316579, 845348930, 845381638, 380534815, 845398035, 845414422, 709509186, 845430877, 114409510, 845480848, 845513163, 845561938, 845594630,
- 845611467, 845660186, 845676575, 124207125, 845692987, 845727531, 127238210, 845763188, 845824002, 845840390, 845857369, 845890007, 845923211, 356090662, 845987852,
- 625360902, 846004240, 846021369, 846053392, 846069786, 846086165, 846102559, 846118928, 846135306, 143081474, 846151746, 564887573, 846184488, 846201291, 846250022,
- 846266399, 846282793, 846299568, 846332337, 846365197, 846418549, 846462978, 116752410, 846479403, 846512149, 588218427, 846528527, 846544908, 846561299, 846577685,
- 420122083, 846594063, 846610453, 846627680, 846697078, 846807096, 846839810, 345784356, 846856223, 846872582, 846889001, 846905647, 846942839, 143491093, 728973343,
- 847020256, 847053973, 847090296, 268468255, 847152635, 847200287, 847216642, 847233045, 847249474, 847283078, 411762690, 847319673, 847450746, 3538985, 847528567,
- 847561192, 773718028, 847598203, 847660062, 847692078, 847725003, 139641354, 847775040, 847806485, 847822875, 847855656, 847872031, 228851718, 683589658, 847889324,
- 847955209, 847986694, 119226374, 848007804, 848052264, 848068629, 848085529, 848150534, 848166933, 420120762, 848183322, 848199708, 848216971, 848282775, 49479721,
- 848335485, 848494614, 848514531, 848560173, 848592898, 848609306, 184107014, 848625748, 848658921, 848707836, 7096107, 848745086, 848887838, 55623692, 321716334,
- 848920635, 170999915, 848954412, 784091648, 849003256, 849036297, 849072767, 849217080, 849281036, 55115883, 849301232, 58769420, 849380155, 849429605, 113656045,
- 849482368, 849559618, 849592388, 849641538, 849678192, 849723402, 173441063, 849740668, 849789030, 849821717, 849838727, 849887288, 849924737, 850018370, 850053178,
- 850121346, 850236035, 10829850, 850346026, 297222175, 850367108, 850432645, 850493450, 117901115, 850510584, 2196392, 850542611, 809517122, 532676646, 850558978,
- 108315678, 850576224, 850642585, 850694790, 850739202, 850760327, 850804764, 850821122, 110723109, 850839844, 480608884, 850906056, 4409010, 850973320, 851214438,
- 3473410, 851251849, 851284618, 851361804, 164036634, 851382923, 851427356, 851443740, 2179206, 851460124, 33243164, 851481228, 151175196, 851510174, 851542032,
- 851558440, 851574805, 152027167, 851595917, 851656820, 851673197, 851705884, 2752517, 851722356, 851740177, 851773764, 851804276, 766951453, 851821035, 14450698,
- 308101151, 851853338, 851870376, 619200514, 851907214, 851968091, 852000778, 852017173, 477937701, 852033564, 852054671, 852115572, 852131859, 79937546, 852148252,
- 852164630, 766574708, 852181033, 852197418, 62586902, 852213825, 852267664, 852313006, 852347462, 758071312, 852382353, 852574229, 852590595, 852606982, 17809450,
- 852623467, 852656315, 852688919, 9961603, 852705287, 641990678, 65077382, 852721772, 852754470, 852770828, 852787226, 852803715, 1900553, 852819994, 852836784,
- 852873874, 852939411, 853033721, 853065754, 853082128, 853098511, 853114892, 853131285, 853147674, 853164048, 242466873, 853184648, 853214282, 853245978, 853262352,
- 853098511, 853278731, 6701092, 853295393, 853758613, 853807766, 853987991, 854065178, 854083232, 854119064, 854197139, 854247051, 19038214, 368099796, 854311759,
- 289932355, 854347398, 854458911, 854507951, 854540763, 854574044, 854606259, 854641656, 131891210, 854687780, 854704807, 854741657, 70909975, 854900792, 854936324,
- 854982763, 150585444, 855020186, 855197812, 855261672, 855295070, 855343130, 855364251, 199458924, 855490591, 855506954, 556400699, 855523866, 855556108, 855572490,
- 855588885, 855606155, 855670866, 855703984, 855741084, 855903497, 855950326, 855982082, 856000048, 856031244, 371884061, 856049301, 856117917, 856229107, 4177951,
- 856280280, 856328949, 856375327, 856391789, 856429214, 856588369, 212107290, 391118860, 856622165, 153993895, 856658591, 856784934, 783237186, 856805159, 5505065,
- 856855200, 857163348, 659341338, 857260044, 141541378, 857276418, 857292821, 3162131, 857309256, 4703222, 857374783, 857412257, 857491201, 482919433, 857540577,
- 857587733, 198328356, 857604150, 3900247, 857636918, 857669691, 857706004, 857767967, 159878231, 659341314, 857785595, 857833503, 857849894, 857866377, 59818119,
- 857887394, 598852455, 857936547, 858062905, 192200725, 858079339, 858112002, 858129438, 2162724, 858163470, 858215076, 858342335, 3244507, 52576266, 858374991,
- 858406922, 45875206, 858428069, 2195889, 185484713, 858538003, 275464214, 858559142, 269664935, 858850694, 858916042, 563495391, 858965086, 65699880, 859017895,
- 389136960, 859144495, 859176981, 2196313, 3211711, 859193647, 859226171, 798310438, 859263656, 859340822, 859357200, 859373597, 134037516, 859393235, 859443881,
- 859572433, 859624106, 8393387, 859701291, 859738796, 859799615, 859834063, 859865147, 555402064, 859898302, 859963502, 127713311, 859996247, 860045334, 860062128,
- 860094474, 498291373, 860115630, 860312239, 67059844, 860389378, 860405798, 860423076, 860471306, 860489193, 860536848, 860553235, 860569637, 860585993, 14172183,
- 860605036, 860672688, 860717072, 860734428, 860770993, 860900672, 860962835, 8391354, 860979232, 861011999, 861028371, 861045039, 861077612, 861111137, 861143042,
- 861159451, 861196978, 352354314, 309559327, 861278899, 861421624, 861454391, 135840609, 861520834, 861553653, 203128884, 861622964, 861737653, 861831208, 19038220,
- 861852342, 341377064, 861913897, 861948097, 740491318, 325239087, 861997504, 862060598, 561381405, 862098103, 862453781, 29901234, 862474936, 862666774, 862686040,
- 862732820, 862781879, 862819001, 862883886, 862963002, 863015266, 863076364, 863092742, 863109139, 373800982, 863125998, 863158331, 19447829, 863191121, 863228602,
- 863388142, 863425211, 863486176, 863523516, 222789654, 8389930, 319832148, 863670973, 863830076, 863913883, 863977570, 864010297, 6193168, 609632461, 864026730,
- 864108628, 153993314, 864146110, 864244415, 126959654, 864321558, 864337922, 107757597, 864354316, 177963046, 864373017, 864438732, 864486798, 864553460, 341803036,
- 864604864, 15007766, 864735937, 864785090, 864834243, 6193194, 749994036, 527090158, 45039632, 865009680, 3309589, 865030852, 383796118, 865260229, 2196957,
- 865321026, 379865559, 865356632, 865405917, 865452335, 730234899, 7258178, 865485246, 865550392, 865584566, 22216733, 370540603, 865637062, 865779714, 295944218,
- 865796106, 563298320, 502661122, 865812899, 58753641, 865850055, 865978596, 866025503, 866041866, 866058252, 137936922, 866079432, 866157755, 866205777, 866238502,
- 102793258, 866254905, 9207809, 866276041, 866603722, 2342934, 866731387, 866796574, 866829250, 866862174, 866915019, 29900821, 152242362, 867026120, 110234461,
- 507461678, 867062476, 867209933, 140247498, 867291854, 867418171, 505544714, 867451805, 867535118, 7307275, 867582796, 867631160, 867664719, 867701455, 867831341,
- 867879429, 7094703, 784990220, 867930832, 868059901, 868106734, 868139553, 868189270, 868237322, 868253738, 147292182, 868270617, 868340433, 868434821, 868567223,
- 868614154, 427132053, 385499163, 405831702, 868631643, 868663520, 319636303, 566396073, 868697118, 681721858, 868733650, 868827681, 868876747, 868925478, 49086502,
- 868941883, 868979411, 869140219, 869192124, 494043202, 869253136, 73531411, 869270638, 253788170, 869351484, 869434306, 363741196, 869470932, 869646395, 51019805,
- 869679991, 869715065, 869827082, 869864149, 200736780, 869913302, 5310647, 870187976, 870269846, 870322903, 112279564, 657052376, 870416863, 870449164, 71188508,
- 110118736, 870470361, 141411358, 870568666, 870662251, 568017384, 870699216, 870776834, 147423238, 870794270, 870827176, 124715092, 870876987, 870929115, 870973899,
- 871022623, 871040084, 871088182, 871120993, 871190880, 871224028, 871334341, 133742594, 871366696, 396279820, 871383435, 97681423, 871420637, 269189571, 871631663,
- 871729112, 871792671, 111149058, 871809483, 871858232, 110134570, 871895774, 491620261, 872153518, 872202266, 872218626, 121356317, 872235438, 872284590, 872333597,
- 214810653, 872367232, 52199445, 872415234, 119226404, 872431682, 642695210, 872465266, 872501983, 872547503, 872579214, 189546984, 872613369, 597475344, 538198118,
- 872694063, 872727374, 2130352, 872796896, 872906859, 872939560, 543309852, 872955906, 329842709, 872972307, 872988708, 737771539, 873006543, 873103372, 873119750,
- 131989525, 873139621, 873218956, 873271832, 59818121, 873599714, 873955787, 874005122, 310296621, 874055030, 218415135, 874107619, 874155117, 874234167, 874287844,
- 2196304, 874496087, 3227707, 874549989, 874648294, 8393447, 603869928, 8606441, 2195810, 874943210, 2195654, 2195610, 874987522, 875003942, 19038246,
- 875021858, 805093378, 147423242, 423215125, 875069921, 875122318, 5308640, 875167846, 875205355, 875303660, 875385581, 192872486, 875462737, 875499375, 875561875,
- 875610188, 875645282, 875692065, 875741243, 875778798, 875842135, 875891382, 875955174, 7095351, 875991791, 876036118, 876056672, 81166338, 876103518, 876167197,
- 110231855, 876188400, 876331150, 876365065, 876398191, 116376566, 876446694, 136855618, 876479544, 876548849, 876891684, 876942066, 877035536, 701726760, 877056755,
- 877281364, 408404490, 877314079, 99516442, 877330891, 639107082, 877382602, 877412418, 877445204, 877477914, 38127041, 136183820, 877494763, 877528354, 877576198,
- 877593513, 877644047, 877712116, 877777653, 877871116, 877887526, 47611932, 877905701, 869615505, 156123163, 877957878, 878019097, 878085491, 878116903, 878154487,
- 208503817, 878269176, 878366448, 423411714, 178080634, 5865947, 878449401, 878560872, 878624849, 878662394, 836812802, 324534312, 805224464, 878711547, 878886940,
- 338264102, 878908156, 2801690, 878973693, 248398878, 879034437, 879070049, 879132714, 879149963, 879214630, 879231840, 879297457, 879334142, 879416063, 879529440,
- 879575343, 879612672, 135497365, 879661825, 879738967, 879788491, 879842050, 738230314, 879956739, 160579606, 880018217, 880050491, 880085043, 880132132, 880148490,
- 880164905, 51871770, 880186116, 880525318, 23920651, 119440225, 880541759, 880574509, 880607666, 880644869, 880721952, 207438812, 285344320, 880754769, 103284767,
- 880789750, 201572381, 43532304, 880841478, 880923399, 881003158, 881054472, 881197122, 881234697, 881328143, 643055638, 140607951, 881349386, 881411102, 881442882,
- 881476055, 881509400, 881557542, 71483398, 881574348, 881606702, 487211013, 881655820, 4177935, 499433493, 881677067, 412139938, 881969382, 882021132, 47398914,
- 882065942, 882103053, 882180162, 882213827, 47710229, 882262018, 32325668, 882278432, 4980751, 882316046, 882507786, 882458653, 130859036, 882524214, 529022992,
- 882556944, 153731374, 882573324, 882589723, 882622551, 409258544, 882671626, 202440733, 882692879, 882755089, 882789787, 882851947, 882889488, 882967699, 449692127,
- 883004177, 883179588, 883228725, 500760630, 467321135, 883261499, 883294211, 381550634, 883310597, 883327007, 496910769, 883348242, 883490819, 883507202, 883523595,
- 7602186, 883539970, 210206739, 883557294, 52363269, 883594003, 818937892, 668287110, 883741460, 883785764, 142180359, 883802230, 883834908, 883854199, 717226100,
- 883884148, 883900435, 883916828, 283967530, 144146443, 883769380, 883933646, 883982377, 477937721, 883998748, 884015141, 513998851, 884424797, 884478742, 884555807,
- 1212422, 884572384, 56164374, 884609815, 884839192, 108314733, 884949856, 885015050, 119357548, 885052185, 885162083, 885199642, 117424138, 885342274, 554729482,
- 885379867, 6193162, 885489710, 885541720, 885592860, 885638007, 885674781, 885723934, 885869059, 885949308, 886002463, 886046786, 886084384, 886199073, 886276108,
- 886292518, 49086502, 886312240, 6374409, 886358487, 886390796, 109052775, 886412066, 886456339, 886472726, 244891660, 886493987, 46710824, 886688809, 886751764,
- 886801231, 886838052, 345161812, 551239904, 541589516, 886887205, 681411614, 886969126, 887161818, 5882357, 887210902, 887264039, 887423796, 887472212, 887506885,
- 367427600, 887537680, 434716684, 318554118, 887554060, 887570953, 887603231, 887624488, 887690025, 887869118, 201393061, 887935786, 888050475, 888111539, 888144718,
- 242368522, 888209420, 888225818, 888244165, 316293344, 888279852, 888422440, 888438875, 888476461, 888640302, 888736244, 212730154, 888782907, 888820527, 888982747,
- 889078219, 155828278, 889127745, 889160139, 889212861, 889295664, 889377585, 238370844, 889471410, 889508658, 889590579, 48513140, 889672500, 2200373, 889864208,
- 2196589, 889880616, 552894501, 889898184, 118685727, 889929744, 56262713, 889948660, 5313334, 890000183, 890213176, 890306626, 890343985, 890388520, 153567270,
- 890409785, 890471326, 890505879, 890590010, 112935343, 416874528, 890671931, 890852156, 890945576, 6946828, 890966845, 891076707, 565231622, 891109613, 118505512,
- 891142156, 891158560, 891191897, 891224906, 73531402, 891273242, 891289631, 891305996, 114114566, 891322450, 891355162, 891372121, 150601787, 891409214, 891469906,
- 281935883, 194691499, 891503425, 891536428, 891589439, 115769866, 282820639, 891700087, 891736896, 892130113, 191545360, 30392326, 892257408, 892305434, 892321813,
- 629358608, 892339575, 892420106, 892438684, 892485713, 699613195, 892522890, 2359401, 892616734, 892649482, 7045122, 892670786, 618464425, 892747830, 892780574,
- 737771531, 892813857, 892862571, 2850826, 2113593, 892900163, 892961223, 893014852, 893077065, 893160987, 648740889, 87539733, 893227845, 893272171, 2834495,
- 893304898, 893338427, 893386798, 5341945, 893439989, 2198068, 893469209, 893535801, 893637446, 893714735, 893752135, 893801288, 893845509, 893861910, 11010064,
- 893883209, 136790038, 893948746, 137101378, 894107885, 894140462, 153748382, 894194507, 894271554, 894305103, 894339965, 894386268, 894418956, 3686438, 894440268,
- 894517260, 179159050, 118031295, 3178512, 894538573, 894669646, 108315119, 894764783, 894829558, 894861771, 894911833, 169787413, 894948175, 586481686, 895009243,
- 140247472, 895041967, 895074607, 408289301, 895107905, 895139861, 223019518, 318554118, 895156683, 8392987, 895205416, 895221819, 895254752, 895292240, 895636305,
- 895815635, 895862259, 895895203, 895959106, 131335406, 895992238, 328073242, 896042382, 896111442, 113115174, 119357935, 896237871, 199869643, 896275283, 896385499,
- 896419808, 896467403, 896516527, 896552019, 260461396, 896617721, 896668501, 273121332, 896761919, 158843359, 896798801, 896845360, 110298129, 896878199, 896942082,
- 506904595, 896963414, 208994363, 50266124, 897024006, 897040403, 185319446, 110232779, 897056822, 897089565, 246087702, 897110871, 897291096, 897356633, 897417244,
- 897434201, 897467844, 897499984, 3211682, 112935591, 897533318, 897597499, 897631041, 897663912, 897700698, 897794058, 23368539, 897810730, 72040706, 573653863,
- 897848156, 897990678, 898011997, 116375651, 109052840, 898109516, 898154926, 898203694, 2965515, 898253268, 457064470, 898288413, 898384331, 898433062, 4997147,
- 898450385, 898498570, 898514998, 898549079, 898598368, 285034700, 181256737, 898634590, 898696351, 441074098, 898727962, 898744359, 898782047, 898909536, 898974750,
- 899006476, 132857868, 899027808, 899073822, 858996762, 899140472, 899186796, 899220348, 119999024, 899268618, 506413098, 899289953, 899353158, 899383756, 10944647,
- 899416102, 2752642, 899432474, 899453794, 899498513, 899530811, 899568483, 899813104, 158744578, 899896164, 899956782, 900010853, 900122810, 900156620, 250364263,
- 900219117, 900253607, 900284447, 5177347, 900301908, 900349962, 900371302, 900434446, 3228327, 900485991, 900563303, 900596559, 900630105, 900677991, 1818636,
- 900710421, 900728137, 7733681, 56721419, 900779711, 900841494, 900857858, 900874259, 160759830, 900895592, 901070870, 901087263, 229965850, 901103723, 219529237,
- 901136424, 901152778, 672137235, 901169183, 901185546, 223723532, 213925900, 901205345, 223723522, 872431628, 901251164, 901285067, 51626000, 901316639, 431996934,
- 901337961, 901465850, 48545832, 901496858, 901513219, 117358614, 901534570, 901616491, 901660701, 1097744, 901682028, 2801667, 901759007, 901775372, 292110374,
- 901742595, 901791746, 381550602, 901813101, 610779138, 901857292, 901677085, 901875033, 901906474, 29900837, 901925852, 901972010, 901988354, 214630426, 902009710,
- 902053904, 479133706, 572047381, 902632304, 902726490, 902758534, 902774825, 902791194, 14549004, 902807553, 902824068, 902840361, 38879235, 902856709, 52953097,
- 902873103, 902889513, 7307285, 902910833, 902938627, 902955026, 902971526, 902987777, 903004201, 38879251, 514015250, 903020556, 103596162, 903348361, 11059242,
- 903366023, 903402355, 152962346, 903495689, 903512195, 34553987, 903531233, 882835563, 903626818, 903664500, 903877493, 903971726, 904041334, 159727632, 904134710,
- 904168387, 904221559, 904495864, 904532856, 50249769, 904577083, 904614777, 904760900, 49774597, 154812514, 904840201, 3227747, 904871979, 904904811, 332103717,
- 904937513, 1785897, 904958842, 905039798, 905101333, 905118573, 905166907, 134152218, 328073238, 905204603, 84934678, 905265174, 905286524, 905461770, 392921093,
- 905478576, 905510922, 140248593, 905527336, 614858754, 4980748, 905543696, 905560090, 140789498, 905576878, 905630589, 905794430, 905872756, 905921430, 905974655,
- 22888453, 906199105, 906248232, 586072171, 906267920, 906335104, 906413385, 906466177, 906511276, 3736231, 906576303, 2197009, 906609177, 906679170, 48021520,
- 446873602, 906761091, 906903991, 139640939, 216006668, 313786424, 906937742, 907006852, 124732225, 907116620, 907149334, 659341343, 907165708, 907183044, 907231261,
- 907247642, 907264016, 907280399, 114409487, 907301765, 907481990, 907580295, 907673704, 907724121, 907755561, 66945062, 907776904, 907870260, 1920257, 907907977,
- 908034966, 697483274, 908088202, 727760934, 191646201, 908148776, 160710698, 908170123, 908231115, 908283129, 908329878, 908383070, 908445232, 908476447, 158695435,
- 440156593, 908497804, 908741565, 908805150, 908836902, 267141132, 908853269, 908869658, 908886047, 908902419, 732758491, 908918796, 908935174, 908952040, 908984404,
- 909018601, 909066261, 909082690, 141377555, 45039673, 909120121, 909249248, 909295675, 909333389, 112394256, 909411328, 909443084, 456966154, 909459515, 909492250,
- 234357545, 909508634, 909525018, 19268016, 909546382, 909606996, 909639709, 69845004, 909661071, 909754370, 909770778, 909787165, 909803551, 909819920, 909836330,
- 841383962, 909855071, 6701077, 909901836, 909918234, 126042122, 427658620, 909939600, 910114897, 910150004, 276529178, 910218129, 910311465, 202063888, 910332818,
- 910377044, 910409788, 910492495, 3719457, 910524437, 910542324, 910590411, 910639913, 910671891, 910688277, 910704671, 118636563, 910721039, 910737632, 910770263,
- 8606611, 473251871, 910824340, 243220496, 44613673, 910983222, 911015947, 792854540, 911032336, 911048715, 911070101, 394526741, 911152022, 538722343, 911245772,
- 114294826, 911281361, 911327238, 911343637, 128892940, 911360016, 395509800, 911377015, 911409154, 911427161, 911475123, 911512471, 911605772, 911622170, 241827851,
- 121274397, 911638564, 911654931, 911671312, 911687706, 911704090, 911720470, 911736863, 3473411, 911756253, 911802394, 911818754, 911835142, 7372831, 118652930,
- 911852636, 911900701, 911917072, 159760410, 911933452, 911949834, 911966239, 911983026, 6375907, 912020376, 912376108, 912408582, 53542919, 912427823, 912524297,
- 912561049, 912654399, 410748005, 391921676, 266878982, 912692122, 912823195, 912933624, 912965935, 246498167, 912998412, 324534303, 913014786, 2129930, 913036188,
- 913101725, 913260570, 316293418, 406339586, 913277165, 913314718, 892403728, 119357521, 913473620, 913507850, 913555886, 913605641, 913642399, 913834003, 303611906,
- 913851880, 913904544, 913948703, 913965489, 913998283, 914052001, 914112552, 309575706, 914133088, 914179254, 914292762, 914310027, 213073922, 366116895, 914374716,
- 6620001, 583403473, 914456636, 914539305, 914571735, 914604919, 895991862, 914636810, 914655171, 110183287, 914702346, 914719159, 914751923, 914785280, 914817483,
- 667664465, 914871202, 914932015, 914969507, 915035044, 915111966, 869466606, 915149733, 915210266, 915226653, 24298957, 915243010, 915260023, 915292247, 915342304,
- 915390474, 915407768, 915456002, 915472415, 84721674, 915488770, 446792440, 915505455, 915538442, 915570717, 915592102, 915701800, 153714726, 915723175, 153862154,
- 915783701, 113246702, 915805096, 916013370, 916045836, 916063065, 66814809, 916100009, 916160592, 916193306, 152174594, 916214698, 271925289, 916275658, 155975706,
- 916313003, 3211790, 916471827, 916488194, 916504591, 916520962, 11665417, 232325591, 916542380, 5505043, 916689837, 916750357, 916767584, 916832693, 380551199,
- 916867575, 916897804, 916914182, 84738067, 916935598, 916996399, 128565267, 917028876, 917045258, 917062263, 917094442, 177766879, 917111309, 665227363, 917159962,
- 917176352, 917209193, 115654662, 917241902, 917291496, 2195558, 917323878, 917357911, 457490469, 917405727, 917422091, 7290911, 7962650, 917443503, 917700701,
- 917749791, 917766165, 917782530, 277020698, 349388812, 917801241, 917866600, 917914725, 110182835, 917967792, 918164401, 152158234, 918257692, 273448972, 918274150,
- 434980635, 918306828, 918323304, 918372374, 99500044, 918389037, 918421533, 918437925, 918454293, 918470692, 2326556, 918492082, 918553113, 918620968, 918684119,
- 918716432, 918732907, 918765614, 918819763, 918962182, 113246258, 918978562, 918994954, 919011359, 241811458, 919032756, 919076895, 919093472, 919126066, 919158796,
- 915472410, 919175222, 919212981, 919276742, 919322897, 278970399, 919355432, 608796688, 919371791, 919388181, 919408874, 919453734, 919470096, 919486506, 658063792,
- 919507894, 1918323, 919688119, 919748645, 2031644, 919765023, 919782569, 919819192, 919900070, 919946380, 919999417, 920109599, 920163258, 920207372, 122044454,
- 437370892, 905166850, 920224178, 920256578, 920289299, 194084886, 171753474, 920310715, 920567867, 920601067, 920638396, 920780893, 920835005, 920884158, 179716098,
- 920944656, 920961784, 920993861, 921026619, 921064204, 921108496, 921127337, 921159476, 921240729, 437370911, 921293141, 921339224, 921391180, 921441215, 921534571,
- 921572288, 921616424, 921632778, 803307539, 143720469, 921649211, 267567142, 921681970, 921719745, 921845772, 335413258, 16498700, 921867202, 453689354, 722960396,
- 921949123, 6619192, 922025996, 138232822, 922042380, 634699802, 922063812, 922141587, 901988364, 922194885, 922370101, 922402838, 9551888, 8389727, 922424262,
- 922484757, 922501123, 922517546, 922533914, 922550312, 922566671, 283197455, 922583052, 922599453, 552091660, 120143874, 922616721, 109215775, 922664986, 306020355,
- 922681370, 922698031, 758710291, 257064962, 922735559, 922797225, 307235395, 922833864, 923025410, 409305521, 923041814, 923058188, 515031985, 923077273, 923140141,
- 923177929, 923288778, 923338119, 923370281, 923402324, 923437792, 923484219, 923516978, 923549755, 47398943, 299827250, 496025616, 923582566, 923615316, 923648059,
- 6225960, 923680780, 923697612, 923729949, 45531177, 923751370, 923828255, 118669324, 923845067, 923893779, 923910184, 923926566, 779075586, 923943926, 923975701,
- 923992989, 432406547, 924079051, 924305347, 924352524, 924368922, 924385311, 924401674, 924418467, 8159241, 924451849, 924483600, 924502335, 924537745, 6111247,
- 924631682, 924680223, 103743530, 924696849, 5881963, 924729365, 924745758, 924778561, 924828327, 924860454, 43237378, 925319302, 925335667, 15483015, 925352070,
- 925368455, 22200329, 925389773, 925614096, 925630490, 925646850, 925663253, 925679682, 925712406, 925728799, 925745158, 553156629, 925761538, 263716892, 925777930,
- 925794363, 29032661, 925827375, 68206667, 925860787, 925892634, 925909008, 99893263, 925925397, 925941791, 925958163, 174457135, 925974594, 926007735, 2343506,
- 926040523, 926090282, 926192590, 121929749, 926269729, 926302237, 2162700, 926319043, 926351389, 570884112, 926370088, 926435884, 926466124, 926500480, 237731851,
- 926548877, 926631210, 926684111, 926761379, 47251484, 926793835, 926826555, 926859330, 926892064, 926929416, 474054698, 926995408, 927273937, 927334416, 927350810,
- 8388917, 927367189, 927388626, 927465498, 927481895, 927515161, 927583535, 927613848, 927662369, 927699923, 927891475, 927907856, 209993768, 927926175, 927989786,
- 928006173, 928022559, 629440528, 928038924, 928055307, 928071711, 928088498, 928120842, 928137273, 928153640, 648347686, 928170946, 928202762, 928219155, 928235532,
- 928251919, 928268310, 928284674, 909803558, 928303573, 928334048, 928366651, 928399402, 928415754, 928432140, 928448533, 928465371, 928497683, 928514070, 814284802,
- 928531324, 928579626, 928595970, 928612373, 928628767, 174440505, 928645139, 796426279, 928664765, 928712092, 928759814, 928776223, 636502032, 347144194, 928793800,
- 928825356, 928841747, 814284822, 928861772, 928907286, 928923660, 928940058, 46088223, 928957769, 929005578, 929023577, 66863163, 929071125, 929087514, 390594990,
- 929103884, 929120266, 929136661, 929155826, 655409912, 929223636, 929335452, 929382658, 11944068, 929415227, 133414938, 929447946, 929316880, 929464342, 929480706,
- 929497098, 929513493, 449660137, 929530904, 929579232, 929611798, 929628172, 929644570, 929660944, 929677341, 929693698, 929710099, 929726485, 141819940, 929742907,
- 929775637, 929792087, 929842017, 929874974, 929907711, 929960917, 930087019, 50511900, 119048613, 22888488, 930119746, 930153481, 930185751, 910557276, 930218044,
- 930300008, 280035435, 930349115, 241467395, 930381908, 930419670, 193660063, 48545798, 930485207, 930742340, 930793823, 930842097, 371310881, 508297675, 930876602,
- 930906142, 275464218, 930938911, 809567232, 930955295, 930971658, 667811842, 930993112, 931071523, 931124185, 931250204, 931266572, 931282965, 5309640, 186318858,
- 931300220, 136120476, 931348492, 420757530, 931364866, 7307286, 931384617, 931451866, 931545100, 931561493, 931577878, 931599323, 931643418, 171507714, 402309148,
- 5947404, 931664860, 345703535, 931790932, 931823626, 583403629, 931845085, 932055791, 299696130, 2834871, 932118554, 15351820, 932139998, 932315234, 932347963,
- 64765971, 932385759, 932495892, 932547738, 932594115, 932631520, 932746209, 2359729, 932806958, 359039026, 45433056, 932844514, 655065142, 8390672, 932989353,
- 933019679, 704462869, 933038636, 933073891, 885424365, 933167147, 159383588, 933204964, 385662997, 933249248, 933281879, 933330975, 241827869, 933350326, 229752854,
- 933401573, 450773008, 933450726, 933528153, 371867664, 933560366, 933609564, 210206741, 2834903, 933647335, 933792469, 933838870, 933855258, 115343362, 933873028,
- 933939356, 153190507, 4309099, 933986734, 934035887, 934073320, 934248524, 133414918, 269484074, 649691176, 934282306, 934347055, 912506890, 934379607, 934430252,
- 654018238, 934466537, 934679530, 934740025, 182861826, 934757662, 934810603, 934903814, 4112400, 934920792, 336838682, 934953019, 251806641, 934986537, 935019529,
- 935052223, 935084091, 935121900, 935199567, 935236589, 366166047, 935334894, 935411743, 147652637, 935429003, 935498735, 935564272, 935628319, 173490602, 935706626,
- 10371081, 935728113, 1900546, 935842802, 935938315, 275972223, 117900309, 935986581, 936034408, 936083522, 219824171, 936121331, 4947999, 248398857, 936547317,
- 936708601, 936755238, 654017974, 936771899, 936809462, 936869919, 383860751, 936886324, 936919078, 233473851, 936935443, 936951848, 928677926, 936973303, 937135323,
- 619003915, 248512549, 937235448, 937312258, 123273245, 18153488, 937328699, 937361414, 937377798, 937394823, 115179526, 937448441, 937509303, 282804290, 937541740,
- 937574431, 937590790, 937607190, 661848109, 937628666, 122568707, 937721922, 937754627, 937771046, 937787458, 110677540, 804847637, 937820705, 144359427, 937874427,
- 937923580, 937984432, 938016813, 938050719, 144375820, 114409478, 938082323, 129417238, 938102109, 938181900, 244170792, 938229791, 938246253, 938278924, 938295322,
- 6620098, 938311696, 938333181, 139477471, 938393659, 2196489, 938431486, 938546175, 938607785, 820953098, 938644480, 412287014, 938770498, 938803268, 938852983,
- 147063702, 938885751, 8391421, 173965328, 938917919, 938935305, 938972161, 939099527, 59260944, 939130939, 939168574, 939229230, 939283458, 939360268, 939380016,
- 134840451, 939425831, 278413333, 939458995, 939491631, 939524981, 939557088, 939592061, 939674705, 939791363, 939917352, 198246412, 939935658, 3473429, 940004356,
- 940086277, 940146912, 122044426, 373555305, 940184582, 184386535, 940262223, 940295029, 940326922, 940344228, 940397575, 940556512, 940589078, 940606358, 6373823,
- 940659371, 940720144, 146653203, 52330506, 940737383, 940769504, 940802114, 940835728, 200589318, 940867614, 940900418, 136118667, 940933139, 631718191, 940949550,
- 940998675, 801505292, 941015076, 941032441, 140771639, 941118472, 941162527, 207192129, 941178892, 110395418, 941195276, 941211654, 941228071, 941261718, 941311064,
- 941360022, 941413385, 941458698, 941490479, 941523791, 941560842, 941604903, 941637644, 941654056, 187744258, 55033887, 942085131, 654934054, 942145557, 137675595,
- 942161966, 942211110, 942228969, 942276661, 942309435, 942342165, 942358559, 942374928, 942391655, 942424076, 942440486, 701530124, 942456924, 942494732, 942658573,
- 942752680, 942784527, 661848109, 942800902, 942817320, 729006118, 942833720, 942866886, 410435586, 942899222, 942915586, 942932006, 942949199, 547831823, 942981423,
- 943013898, 943030293, 943051790, 943113514, 943161774, 518308129, 943210515, 661028902, 943226964, 943264783, 943325250, 943358175, 943391321, 515244034, 943423595,
- 640434197, 841744386, 943461392, 943505410, 943521811, 943538198, 137675399, 771637254, 625688591, 943554571, 351240220, 943570963, 943587366, 943604559, 576225299,
- 943636495, 943652923, 943685644, 213958685, 943702045, 943718431, 25559959, 943739921, 943931402, 941146154, 943952914, 944029747, 944062480, 944078901, 944112463,
- 944149523, 235439104, 944215060, 944291906, 944324707, 944362517, 944521278, 521699354, 944570399, 944586762, 944603190, 200556565, 60227596, 944635963, 128581643,
- 944668726, 944701461, 944717850, 944734239, 944750657, 944799784, 944816147, 944832550, 52609036, 944848934, 944865282, 393363462, 944886806, 2801676, 67043350,
- 944947266, 944980923, 945046028, 945079687, 945111052, 945128184, 726695967, 945160258, 117489670, 140247092, 945192986, 945209881, 115818507, 945280023, 945406015,
- 945440134, 945509400, 945571412, 945668112, 945684521, 31424553, 945702260, 945750042, 945767031, 945799234, 945837081, 61456396, 945919002, 946164763, 946209448,
- 946242791, 946290714, 2834495, 946307084, 55377941, 946328604, 946438170, 946454540, 196952085, 946476061, 946570442, 417596406, 294207514, 946618370, 946634805,
- 946667586, 318590256, 946705438, 539656221, 329842694, 946750287, 946782218, 946798604, 946820127, 946914220, 946979724, 947027997, 271631193, 947049504, 947211748,
- 107757589, 947257815, 947290134, 261182497, 947306580, 947340680, 947372098, 947406496, 947437606, 119226409, 947454011, 947486722, 947503211, 232030219, 947541026,
- 947650571, 947666946, 947688483, 947732492, 246562837, 947748880, 947765680, 947803172, 947896779, 947946232, 7307293, 947978670, 948028201, 845725738, 948065317,
- 948125718, 948142101, 948158476, 116277258, 415776780, 2195770, 948175385, 948240855, 948273171, 191594498, 112459782, 948292302, 518766683, 948405879, 948470195,
- 948507686, 948551696, 114212890, 915701791, 370720796, 948573223, 948719571, 124551178, 180764714, 948764674, 948781539, 50937872, 948813835, 948831055, 948863014,
- 948879362, 123666442, 948895784, 948912159, 948928538, 948945814, 948999208, 250937386, 949064745, 949125720, 774227546, 949157928, 949174284, 162501674, 949191710,
- 949223524, 949257035, 31342724, 428015647, 949326891, 949502552, 949534730, 31424531, 949556268, 949616666, 949633055, 250937354, 949650777, 949682713, 226246713,
- 949749236, 949802029, 949965870, 950009894, 129400834, 950026282, 940998694, 950043689, 950108192, 950146095, 950337562, 950353951, 338264070, 950370306, 950386719,
- 950403082, 950420299, 950485667, 3702822, 950534228, 950566950, 114409510, 363364362, 950583302, 950599746, 950632450, 950648838, 837238834, 950667107, 950730764,
- 129876076, 950749367, 950797627, 950830080, 950863417, 950965296, 951043102, 951075447, 951107596, 738085096, 951125115, 951161905, 183369749, 951255132, 951287820,
- 951304202, 951320588, 190087208, 951337536, 951370826, 177963019, 951402527, 951419351, 153731180, 951454812, 951500812, 951517210, 951533570, 951550487, 839548947,
- 951584134, 951648349, 951697424, 951713807, 951730823, 843874320, 951784498, 951861264, 951877642, 951894375, 951926796, 951943178, 951959573, 951975975, 952008742,
- 952025115, 952058159, 272531472, 683851918, 952090683, 952125039, 383320074, 952172555, 952188974, 952243251, 952402399, 952435182, 952467466, 952483842, 200851475,
- 952500239, 251330582, 952516639, 952533002, 952549392, 952565775, 952582166, 952598559, 952614950, 42598875, 46088249, 325173250, 952636468, 952849461, 952909855,
- 952926218, 952942608, 952958986, 1900573, 952975379, 115179542, 8994844, 952991782, 953008180, 7372821, 953042151, 953095222, 953139230, 953172933, 953221146,
- 353239343, 953237516, 953253914, 953270575, 115196343, 656982092, 953303100, 953385935, 953439287, 953634066, 195919882, 953696282, 140608089, 953713241, 953746585,
- 953794591, 953813405, 637501451, 953860098, 953876490, 125584207, 953892894, 953925642, 141000716, 953942018, 953959547, 953991190, 42598832, 954007606, 954040335,
- 911442144, 954056763, 954089487, 219578390, 954105878, 954123279, 954171402, 954188694, 954237165, 954274872, 954318864, 954335247, 954351618, 954370116, 954417181,
- 738377794, 954434977, 954482699, 636486479, 954500736, 464928783, 954548236, 954564716, 954597407, 954613803, 954647675, 954679362, 954712976, 954744848, 394067984,
- 939606082, 954766393, 116376046, 954843568, 702398475, 685212080, 954878865, 954975530, 955028538, 955090486, 955138582, 955173498, 549519398, 24297574, 282558580,
- 955220060, 955252776, 955270060, 955334764, 955368334, 955438139, 955498955, 955547735, 68228156, 955597251, 955629608, 955645983, 126074890, 112738335, 955662435,
- 955695125, 192495642, 955716669, 955858975, 51757062, 955876932, 955940892, 955957274, 712900639, 955973686, 18153479, 956011582, 956072382, 956137556, 956171000,
- 956203020, 956219402, 956236407, 956666944, 56655910, 956809247, 147652627, 956830785, 956924504, 956956678, 797245461, 138641871, 956975039, 957072682, 957120533,
- 957136922, 2293762, 375259157, 957156831, 957235210, 59523100, 957251622, 627064891, 957273154, 3244132, 957399083, 110247999, 957436995, 957628492, 544882776,
- 957661205, 957678911, 957746425, 957792287, 957812725, 750469151, 957841410, 514015243, 200736794, 957862980, 957907476, 2261030, 957956142, 958005355, 958038028,
- 2850853, 958056589, 958103568, 128991243, 205209612, 958125125, 958190662, 958387271, 958529749, 958565322, 958595111, 371884044, 958627879, 958663007, 958710231,
- 165904412, 958743897, 958775312, 10829834, 110231804, 958793095, 115523596, 958826726, 958877152, 183975976, 958927944, 958988719, 959023213, 959075401, 959136162,
- 959168943, 110118163, 959201817, 177963029, 959267576, 44318751, 959299640, 959332354, 445841418, 959348778, 944635916, 959370314, 959480487, 628981800, 150914207,
- 959512675, 959545365, 959566058, 959612574, 959676446, 959714379, 204587020, 959856671, 959873909, 959905823, 959922705, 959955247, 959987764, 960021534, 960054157,
- 960140364, 25560719, 171442479, 960184360, 81756186, 960205901, 960266671, 960299101, 677724172, 960353358, 960462932, 47415298, 960499793, 960549967, 960611413,
- 27607052, 960643100, 960659487, 960675846, 474054675, 960695669, 779075615, 960741397, 960758652, 960807371, 960856367, 960888940, 172752908, 960926800, 960970774,
- 960987166, 961019915, 961036290, 961052693, 731742224, 961069903, 961103642, 961150992, 961167391, 44679180, 961188945, 961265676, 961282076, 48529439, 2097162,
- 961298444, 6193180, 961675287, 5177479, 961696851, 961462282, 55377922, 961775037, 961822730, 961839110, 961855967, 961889799, 961975380, 202457230, 962117670,
- 962134032, 49790981, 962150446, 962201741, 125583442, 962251235, 962283970, 962330708, 962363851, 962417749, 962494935, 962532438, 962630743, 928776213, 962723886,
- 962773070, 962838556, 962855587, 241647647, 6373803, 962909272, 963019211, 149115993, 963067933, 116162591, 963089498, 963166239, 109215760, 963182651, 963216207,
- 523375707, 963252506, 520093750, 29261855, 963314114, 963346539, 246497887, 963379202, 747356182, 963395637, 963433564, 963543133, 963592220, 848904218, 963608588,
- 472891502, 17224797, 963630174, 110234025, 963744863, 963822750, 963887110, 281362453, 963903500, 963919894, 963936287, 963952666, 351305734, 787317039, 963969483,
- 964019592, 462520751, 964051481, 896123312, 964116506, 964132923, 321699878, 964166519, 964198410, 110215200, 964220000, 208912395, 964265562, 964296706, 964313130,
- 176357977, 964329484, 910688282, 964351073, 964482146, 601292838, 964592655, 964644614, 964695139, 234848287, 48693551, 964791576, 964838455, 782614550, 964871017,
- 964935690, 964953361, 965001235, 4948008, 965022820, 965083211, 519407036, 965148703, 965165088, 965198127, 961856433, 965235813, 965301350, 965394453, 965411708,
- 965460456, 965492802, 965525556, 144048134, 965563495, 965591106, 965625181, 130285594, 965678184, 965787650, 116162598, 965804098, 2196317, 2197987, 965842025,
- 965989482, 966069377, 966120555, 966230949, 966265725, 966311967, 966328322, 966344742, 966362456, 966410280, 73744415, 966431852, 166707242, 966508610, 966541322,
- 423002154, 193200138, 966562925, 966743150, 966905671, 966967327, 123174918, 966983983, 967017295, 967049651, 967082434, 967114758, 967131174, 215482370, 967152751,
- 322060390, 967327746, 967344138, 19251503, 967360534, 3473446, 464946088, 967382128, 967491586, 2342915, 967508400, 371245066, 967540795, 110216033, 6701084,
- 967573516, 185483346, 967592106, 967655426, 967672343, 967709809, 47120399, 230048424, 967802940, 967885314, 967918105, 363364394, 967983627, 968033192, 685244846,
- 968067344, 112427037, 968115545, 968148270, 968196122, 968212912, 46351369, 968245279, 968261716, 968294421, 968310796, 968327194, 3342378, 968348786, 968643699,
- 968709236, 180764693, 968786567, 968835539, 968884695, 453476415, 968917023, 968933378, 968949789, 17006595, 968966170, 968982538, 968999215, 711671846, 5341473,
- 969036917, 969162762, 969184374, 969228381, 969278267, 969331831, 969408600, 914981378, 969445730, 969506831, 969523231, 171557466, 553156639, 969540431, 969572881,
- 969605423, 7734095, 969640063, 969703450, 969719810, 969736207, 969752598, 969769878, 969818128, 969834538, 969853115, 969900072, 969916422, 969932831, 969949203,
- 205750288, 3309604, 969965673, 926466895, 969998374, 49790988, 970019960, 601292802, 147063087, 970134649, 970227743, 75464723, 155779103, 409305147, 970245009,
- 970293347, 120979475, 970326092, 2670613, 1114149, 970362595, 132153437, 970490819, 49790986, 970539117, 970571781, 16269317, 970588171, 970604560, 617103398,
- 970623651, 970691706, 970981913, 971051181, 971096102, 971112484, 971128847, 306937877, 971145218, 971161626, 971178015, 432062470, 971194399, 971210781, 971227868,
- 971261551, 971314299, 971375352, 971407419, 971440813, 971489290, 971506123, 971560060, 971636738, 971653146, 971669540, 971685904, 194461717, 971702339, 116213107,
- 971786707, 971833375, 971849757, 131629072, 553156619, 971870173, 122568726, 971898892, 971915735, 971948487, 972002429, 972079125, 160743440, 972096568, 972161035,
- 972177439, 272613415, 972193899, 972229091, 461717535, 972259412, 313245702, 972292117, 180666390, 972308492, 972324890, 502054928, 972346494, 972537977, 972570647,
- 8148095, 972587031, 972570647, 226050054, 400802287, 972606892, 972657792, 972898363, 46874630, 972932326, 973029378, 973045798, 973062182, 51937292, 1818639,
- 973078559, 506904618, 973094978, 973127682, 50036767, 973145026, 973177369, 973247617, 973291522, 973307945, 49905690, 973329538, 973406220, 46219279, 183369754,
- 350633986, 74661914, 973422624, 616906774, 973460611, 973537286, 18169896, 973553750, 973586463, 274858049, 973603246, 973652599, 6373855, 238552094, 973689988,
- 973783131, 57032710, 973815810, 973832202, 973848879, 973881360, 973897743, 126697494, 458489937, 6406170, 973914166, 100565015, 974132358, 974274600, 974291003,
- 974326229, 974356482, 662585365, 974378119, 974520342, 974537743, 974585868, 974602278, 974619471, 974656648, 974733362, 974767000, 160759834, 974816928, 974853257,
- 974913552, 974930002, 974962690, 974979093, 974995543, 975044634, 975060994, 975077386, 975093766, 975110159, 124108831, 975127016, 975159746, 975192104, 2179109,
- 975211739, 975306858, 759681514, 938409994, 975393930, 975505049, 135905282, 975557771, 975634434, 975650924, 975688844, 975979031, 3736003, 644988966, 976011488,
- 151732245, 976044792, 976076859, 125812748, 976109627, 976144525, 976191594, 482590726, 7095387, 976273448, 414089228, 976290234, 976339998, 976376973, 976453642,
- 2196314, 976475278, 976585205, 976617503, 976633866, 976650282, 635634471, 976666848, 976699404, 976716247, 976748976, 976786575, 59768947, 976852112, 976977932,
- 976994314, 977011319, 977043483, 977076226, 5341944, 977097873, 977190943, 329842691, 977208389, 977257079, 977289228, 122699802, 116375841, 977310866, 977409171,
- 977453077, 977469506, 977502224, 977518602, 977535015, 977567850, 5325898, 977654932, 977797213, 140247072, 977848692, 977911835, 287572647, 977945945, 977977386,
- 23385237, 977994030, 29180060, 978027361, 2146775, 134299653, 978326679, 978436523, 978468890, 978485276, 978501634, 121356309, 978519528, 978567210, 978583564,
- 671662106, 192479253, 978604660, 978665482, 978682315, 978732783, 978796563, 663912470, 978812943, 978829324, 978845722, 978862082, 978878485, 625721410, 978898814,
- 979027051, 979058719, 979075100, 979092057, 148127746, 979129496, 843120669, 979210287, 979255362, 979288578, 669221495, 979321135, 108707856, 979353621, 979370050,
- 979403617, 979435530, 979451943, 979485196, 180404255, 979517446, 979533890, 979566651, 979599370, 979615786, 979632194, 979667638, 177324033, 979731347, 979780121,
- 979845655, 979878843, 979943467, 979977981, 116850699, 980025783, 980058143, 980075381, 849723402, 980107330, 980140043, 980156427, 980172840, 980189194, 980205599,
- 112476179, 980222553, 980254770, 980288025, 980353043, 980369439, 980385794, 980402197, 213041183, 980419605, 980467727, 635240450, 980484162, 8389985, 980522137,
- 980632029, 980664341, 980681241, 980747232, 704151562, 980795407, 980811884, 980844847, 980877353, 980894128, 980927095, 980959248, 980976376, 52723743, 981008456,
- 981075443, 981106694, 981123093, 981140348, 981189600, 981238566, 981270559, 981286933, 981304160, 978829314, 981368858, 627752981, 564871179, 981390490, 981467737,
- 981499914, 183370359, 981517201, 981565461, 981582716, 981631490, 981664375, 981696543, 981712898, 981729318, 564658207, 981746528, 981811266, 981843984, 981860589,
- 981898395, 982025154, 982057019, 982090244, 982138918, 982155266, 196886538, 982172858, 51757087, 982204447, 982220806, 119998494, 982237221, 982253580, 722731046,
- 982270453, 982302732, 393363482, 982319138, 982433848, 982466999, 982500235, 982564930, 982598517, 679378954, 982630499, 143720479, 982668444, 982745109, 982762379,
- 982827064, 982859807, 982876587, 982908994, 980074512, 982941801, 949256258, 982974903, 983007691, 983056440, 983089218, 983122408, 983158636, 983203850, 983220855,
- 983253004, 983269386, 983285781, 983303051, 983367788, 983401816, 983449626, 983466430, 983532057, 983598001, 671547394, 983629843, 983646511, 983684253, 983744533,
- 983761803, 983826967, 983859659, 451872018, 983908383, 983925621, 122503180, 983961009, 984023052, 984039434, 984055829, 984072667, 983302146, 984104981, 984122251,
- 984187793, 984236088, 984269647, 984301622, 984334342, 984350726, 984372382, 984482784, 984530954, 529990107, 984547343, 984563738, 383860767, 984581150, 31424554,
- 984612904, 984629279, 984645638, 143081503, 984662925, 984746761, 984794265, 984842255, 984858640, 984875034, 984891394, 546095114, 984913055, 984974219, 985039278,
- 985091963, 985139470, 985186335, 676233226, 985202690, 985219110, 985235483, 985268331, 985302791, 179126293, 985350184, 985366559, 409681926, 985383005, 985432085,
- 985448514, 985482081, 289767434, 985514044, 985601184, 9912483, 985827804, 985874470, 268451878, 985890842, 985907226, 985923615, 985939987, 392445992, 112508959,
- 985956354, 217727014, 985972776, 985989149, 5275679, 986005547, 47235098, 986038298, 986054685, 986071071, 986087434, 986103810, 986121001, 261832720, 268468240,
- 986152990, 986185754, 986202138, 986218562, 986251270, 986267669, 576176154, 986284053, 217366544, 986300475, 986333226, 986349570, 986365962, 986383633, 519143450,
- 986431499, 986448331, 986497133, 986530016, 986562991, 986595385, 479330316, 986612151, 986649761, 986710028, 248266778, 986726416, 986742794, 986759179, 986775568,
- 73531420, 986797218, 987005037, 987037725, 987054101, 987070486, 987086867, 987103260, 90521610, 987120107, 55754754, 987157667, 987332750, 987365414, 164806694,
- 1212432, 987381798, 987398146, 351338502, 987414831, 987447810, 987480367, 987518116, 345882731, 809419210, 987578827, 987627541, 987643914, 118489100, 987660747,
- 220774466, 987709867, 2539530, 987742676, 79101980, 987780261, 987922444, 131891228, 987944102, 48447528, 18399242, 44941328, 988020795, 11157530, 4948006,
- 988053558, 304627750, 2359408, 988681384, 2162808, 988758136, 988774402, 1949816, 988791183, 988824087, 167903921, 6029340, 29458472, 988861609, 988921877,
- 988938256, 56999947, 988956543, 6225922, 988987401, 989003817, 989020297, 16269353, 989036553, 989052954, 989069314, 47284239, 989090986, 11550742, 61784199,
- 989118596, 33177737, 989134884, 989151258, 989167656, 67289095, 989184038, 989200395, 2031621, 119816667, 989631660, 989790227, 989807071, 989839452, 989873196,
- 131335080, 3211747, 989922127, 989959341, 440745994, 137904138, 990054498, 990101516, 990119875, 990172334, 189251613, 990217606, 1900586, 990287023, 990348171,
- 148160533, 695369759, 990415638, 990445673, 990478420, 990516400, 990663857, 5537833, 132005904, 990856680, 156155945, 237682991, 2326559, 990905212, 990953494,
- 990969872, 990986259, 991002646, 991019014, 991035411, 705511446, 991055805, 147423270, 991133762, 991166485, 991184201, 991234565, 991281183, 991297547, 47530015,
- 991319218, 991412240, 991428618, 635273255, 991445801, 991479445, 991544299, 991609886, 991641632, 991674814, 991745203, 249987138, 991892660, 112935966, 991990965,
- 2408458, 992085478, 50266118, 992138422, 992198697, 992215059, 992231877, 992269495, 992411755, 992449720, 992511935, 239616066, 992608340, 992641034, 2195944,
- 992658371, 238321693, 992711865, 207290448, 399147106, 992886822, 99876892, 992903174, 992920040, 992952386, 992985187, 993020489, 993083402, 993105082, 199213082,
- 50462746, 109182998, 684212290, 993203387, 993427478, 177963029, 993444894, 993476635, 993514684, 5947394, 993640875, 993674126, 17220498, 993744061, 994050723,
- 994100145, 45711376, 994133363, 235880479, 651870224, 994168758, 994230702, 994279467, 994312504, 994345993, 994378174, 3867138, 994444312, 154059286, 994492500,
- 994526017, 994558254, 994590732, 55164954, 994607246, 994640331, 994689132, 994721794, 994738203, 994776254, 1966118, 994836502, 994858175, 994951208, 994967590,
- 994984990, 995016801, 116162586, 995085653, 995153088, 995229788, 995262504, 131940378, 7143531, 995284161, 995579074, 124862993, 130285610, 995690467, 995786853,
- 250396674, 995824835, 995873988, 8391195, 113115162, 996070597, 118882762, 996119750, 996196406, 996229160, 3244256, 131812105, 996248790, 996343915, 996381895,
- 996442114, 634898282, 996458526, 294060034, 996496584, 996655109, 57950239, 996676809, 996737456, 954187830, 996772107, 996824266, 996889803, 996971724, 997031957,
- 492819661, 360466080, 997048339, 997064726, 997081119, 997097498, 997113867, 50806900, 55033972, 997131086, 997201102, 997244997, 997277755, 997315791, 997408794,
- 201376391, 45858853, 119357494, 997425236, 997463248, 997572671, 997605977, 188874790, 997638904, 997676241, 997785638, 997802015, 164003899, 997820599, 997867579,
- 997901048, 997934424, 997982325, 115589179, 998020306, 392921126, 998085843, 998359122, 998391839, 998413524, 983400532, 998462677, 998525114, 998556557, 157499502,
- 540295206, 998642902, 998738212, 176488451, 372899862, 998802822, 317837204, 998867977, 153748489, 998903602, 287604795, 998954199, 999052504, 277790760, 999161882,
- 999178242, 393396239, 999199961, 999262500, 999325727, 999343138, 999380186, 229933059, 316867239, 999442660, 110166075, 999489555, 764624915, 559661903, 400195615,
+ 2953573269,2963927998,2986259482,2987155375,2993385447,2999202894,3007231086,3008074388,3016897686,3022550193,786433, 802818, 819203, 835588, 868357,
+ 884742, 901127, 8, 917510, 933893, 901129, 950282, 966658, 983051, 999436, 901133, 1015822, 1048591, 1064962, 1081350,
+ 1097734, 1114117, 901136, 1130505, 1146897, 1163282, 1179657, 1196049, 1212418, 901139, 1228820, 1753109, 1769494, 901132, 1785879,
+ 901126, 1802264, 1900569, 1785858, 1933333, 1949708, 901146, 1966107, 1998850, 2015260, 2031618, 901149, 901136, 2048030, 2080794,
+ 2097183, 2113555, 2129922, 901130, 2146336, 901151, 2179105, 901148, 2228258, 2342947, 901156, 901157, 2408469, 1769510, 2424871,
+ 2457640, 2474005, 2490399, 2506793, 2523176, 901158, 901141, 901162, 2539563, 2359315, 2326568, 2572319, 2588693, 2605087, 2621446,
+ 901142, 2637868, 2719784, 1769478, 2736159, 2752524, 901161, 2342933, 2768898, 2785286, 2801670, 1212447, 2818059, 2834477, 2129936,
+ 2867246, 2359322, 2916354, 2932768, 2965551, 2408476, 2998320, 2326534, 3047466, 2588710, 3063857, 3145778, 3178527, 2342950, 1933334,
+ 3194931, 3227700, 3260469, 3293238, 3325964, 3342365, 3309584, 901131, 2523174, 3358775, 3424312, 3457036, 3473434, 2523138, 1769529,
+ 3489850, 3538973, 2129932, 3555387, 2031626, 3588155, 3620924, 3702845, 2342927, 3751998, 3801151, 3833877, 3850256, 2342938, 3866688,
+ 2113547, 3948554, 3964949, 3981324, 3997722, 4014090, 4030466, 4046869, 4063263, 4079632, 3473418, 4096065, 2129942, 4145218, 4177932,
+ 1933327, 2261002, 4194371, 4276292, 3244101, 4325446, 2326550, 4407362, 4440135, 4554824, 4620361, 1785862, 4685898, 4751372, 2129946,
+ 4767819, 4833301, 4849740, 4882458, 4898818, 4915210, 4931626, 4947990, 4964364, 4980757, 901122, 4997197, 5029966, 5095474, 5128271,
+ 5259305, 5275679, 5292051, 3473439, 5308496, 5341265, 2129932, 5373983, 5390378, 4079647, 5406802, 5439494, 5455893, 5472258, 5488650,
+ 5505053, 4161567, 5521491, 5603412, 1769491, 2408463, 5603330, 5636181, 5701663, 5718037, 5734431, 3473427, 5750815, 5603338, 5767254,
+ 2801702, 5799976, 5177356, 5816407, 5865560, 4341802, 5898329, 5947482, 1769513, 6111254, 6127632, 2523152, 6144091, 6176860, 2326540,
+ 6209629, 1933369, 2408490, 3129346, 6258782, 2621461, 5275660, 6340610, 6357087, 6406173, 6422530, 2031642, 6439008, 1769509, 3309570,
+ 6553697, 3211362, 6619235, 1769484, 6373476, 2195557, 6651947, 6684701, 4030495, 6701158, 1949698, 1933341, 6733836, 2342938, 6750311,
+ 6832232, 6881385, 6914154, 6373483, 1769493, 6996076, 2195565, 7028846, 2031654, 7061558, 7094311, 7127080, 7143531, 7176202, 3129384,
+ 7192687, 7225456, 7241840, 7258225, 7307280, 901160, 7323677, 7340044, 7356426, 7372816, 7389205, 1785868, 7405682, 1785971, 7520285,
+ 7536682, 7553140, 7569419, 7585807, 7602197, 901125, 7618676, 7634951, 2752538, 7651445, 7684214, 7634955, 7634975, 7716886, 7733314,
+ 8093719, 8110200, 8126487, 8142969, 8175639, 8159255, 901143, 8192122, 8355963, 8503420, 8585341, 8749182, 8847487, 8896640, 8929303,
+ 2195585, 8945794, 8962178, 901250, 8978434, 4980738, 8994947, 901251, 9011332, 9027716, 9044009, 9060393, 4980777, 9076869, 9109638,
+ 934023, 9126018, 9142290, 9158674, 901138, 9175176, 901257, 9240714, 8175750, 9175179, 8175731, 8175746, 9273484, 9355287, 8388749,
+ 9371763, 9207943, 3555344, 9388174, 7389195, 9175183, 9420944, 9453586, 9469961, 8159369, 9486479, 9519122, 9535620, 901252, 9551884,
+ 5177401, 9568401, 9699474, 9830547, 9896066, 9912468, 2195605, 10027158, 10027158, 8601751, 10190871, 10207381, 10240149, 10272905, 10289280,
+ 10322054, 10338327, 10354803, 10371095, 901255, 10387586, 8159362, 10403971, 10420354, 10436626, 8388760, 10453123, 10469506, 10485778, 2195609,
+ 10502275, 10518658, 10535066, 10567811, 10584194, 10371090, 10600579, 10616962, 10633234, 10649754, 10682499, 10698882, 10715154, 2195611, 10731529,
+ 10748060, 10780802, 10797074, 2195613, 9158771, 10813598, 10846367, 10879091, 10895495, 10911876, 10928146, 10944642, 8159363, 10961056, 10993798,
+ 11010180, 8962066, 11026450, 11042948, 11059334, 901235, 3309608, 11075745, 8962180, 11124870, 11059218, 11141135, 11157545, 4980739, 11174020,
+ 11190434, 11239433, 11255923, 11272210, 11288599, 11305097, 8962183, 11321459, 11288594, 11337888, 11370505, 11387043, 11419783, 11436169, 11059209,
+ 11452548, 11468915, 8994950, 11485193, 11501586, 11518089, 11534468, 11550854, 11059335, 11567116, 11583526, 11599884, 11616267, 11632671, 11649061,
+ 11665420, 8994839, 11681956, 11763877, 11911299, 11927682, 11944074, 2195622, 11976853, 12009602, 12026023, 8388776, 10027173, 12075139, 12091522,
+ 12107914, 8601769, 10027178, 12140675, 12157058, 12173450, 8601771, 12206211, 12222594, 12238986, 8601772, 12271747, 12288130, 12304522, 8601773,
+ 10027182, 12337283, 12353666, 12370058, 8601775, 10027184, 12402819, 12419202, 12435594, 8601777, 12468355, 12484738, 12501130, 8601778, 8601779,
+ 12533940, 12566659, 12583042, 12599434, 8388789, 8601782, 12632201, 12648471, 10371095, 12664967, 8159250, 12681369, 12714115, 12730503, 8159364,
+ 12746770, 12763251, 8159241, 12779635, 10371081, 12796067, 12828855, 12878008, 12910723, 12927106, 12943514, 12632073, 12976151, 12992521, 13008914,
+ 7602191, 13025465, 13107386, 13172867, 13189250, 13205658, 13238403, 9158786, 13254843, 13287539, 13303938, 10371187, 1114138, 13320324, 13336691,
+ 13303940, 13352983, 13369532, 13402296, 13435010, 13451282, 8388797, 13467671, 13484147, 13500442, 13516816, 13533190, 13549589, 2359327, 13566142,
+ 13631623, 13648063, 13697154, 13713426, 901255, 13729815, 13746306, 3309703, 13762752, 13795443, 9470082, 13811843, 12648579, 13828125, 13844516,
+ 13860980, 2342952, 13877441, 13959323, 13992127, 14041218, 14057610, 10256515, 11665542, 14090377, 14106758, 14123139, 2359428, 14139529, 14155907,
+ 14172275, 11059223, 14188738, 14270659, 14319747, 14336130, 14352402, 2195644, 14368917, 9142402, 14401728, 14434438, 14450820, 8994947, 14467268,
+ 14499849, 12664947, 14516227, 14532611, 2162689, 14549126, 8994825, 14450711, 14565519, 14598296, 14647427, 11042946, 14663703, 14680202, 14712833,
+ 1769477, 14729239, 2326658, 14745797, 9207817, 14811334, 14844019, 14860422, 14876809, 14893065, 14909571, 2195655, 10387474, 2162704, 14925853,
+ 14942230, 14958615, 14975033, 14991490, 15007874, 1769512, 2261004, 15024146, 15040549, 15056915, 15073302, 2359308, 15089864, 15122463, 15138834,
+ 15155240, 15171716, 15188004, 2326663, 15204363, 15220866, 15237151, 2130036, 15253705, 15286288, 15302674, 15319071, 7307396, 15335426, 15352010,
+ 1769514, 15384607, 15400972, 8159270, 15417375, 15433734, 15450133, 15466508, 8159258, 15482898, 934019, 15499274, 15515654, 15532068, 8159248,
+ 16203799, 16220183, 6324247, 16236560, 2326547, 16253132, 901254, 16302285, 933899, 16351438, 16662735, 16892112, 16941205, 901143, 16974033,
+ 2129951, 17022999, 17039383, 8175753, 14385283, 901138, 17055893, 17088642, 9535506, 17105080, 901131, 17137676, 17154050, 1785882, 17170642,
+ 17268947, 17350868, 17383558, 2342948, 3309699, 17399939, 17416405, 9207939, 17449174, 901177, 17481943, 17580169, 17596565, 17629400, 17678359,
+ 17694835, 17711127, 8159367, 17727625, 17743890, 17760390, 17776772, 17793241, 17825927, 901121, 901135, 17842394, 17875163, 17907721, 17924114,
+ 901121, 17940530, 17973468, 18006237, 18039006, 2195679, 2932960, 18087959, 18104343, 16597217, 18120714, 18137107, 18153494, 1785868, 18169866,
+ 8994828, 18186466, 18481379, 18645123, 11665431, 18661385, 18677875, 10371207, 18694288, 2261123, 18727043, 18743426, 18759834, 18792579, 11124866,
+ 18808963, 11010178, 18825444, 19021847, 19038231, 901123, 19054821, 19153126, 19235047, 19333352, 19398889, 19431555, 19447811, 901123, 901122,
+ 19070985, 19464201, 933897, 8568834, 19480710, 16269446, 19496961, 17924097, 19513557, 19546346, 19579011, 19595398, 11059331, 19611657, 19628267,
+ 19677321, 19693705, 19710188, 19759238, 19775622, 18890867, 11059315, 9207945, 19792105, 19824877, 1933315, 17924097, 19857411, 19431427, 19874030,
+ 19972335, 20021379, 20037641, 14450697, 20054153, 20070640, 20168838, 20185305, 20217971, 10371207, 20234241, 7602181, 20250865, 20283507, 20299911,
+ 901252, 20316178, 20332675, 20349065, 20365321, 901251, 20381827, 19464326, 20398322, 20447475, 20496499, 20512900, 20529284, 8962178, 20545702,
+ 20578548, 20611317, 20660470, 20693239, 20726008, 20775161, 20807930, 20856981, 20889731, 20906007, 2179187, 20922616, 20971654, 20988036, 16269335,
+ 21004539, 21053692, 21086234, 21102594, 1114169, 21119111, 21135494, 21151859, 2752541, 2539522, 21168129, 21184725, 20234249, 21528830, 17072259,
+ 14385283, 21676163, 21692546, 21708818, 2195711, 10371204, 21725440, 21856387, 21872774, 934018, 21889155, 21905417, 4980873, 21922049, 21987586,
+ 8601859, 22020250, 22053124, 22085641, 14549123, 16269449, 22102276, 22134918, 22151299, 22167667, 10371203, 22184067, 22200455, 9158787, 22216732,
+ 2342914, 22233349, 22315145, 22331526, 9207942, 22347913, 22364422, 22397062, 22413446, 22429830, 22446214, 22462579, 19775603, 14745731, 22970632,
+ 23019529, 23036041, 23052553, 23248905, 14909577, 8994825, 13713523, 2031622, 23265546, 23298060, 14712833, 23314699, 23363852, 23413005, 17825929,
+ 11042953, 23461906, 23478542, 23511311, 23576707, 23593232, 23789577, 901257, 23806067, 23822471, 23838855, 16269427, 2195729, 23855378, 23904268,
+ 23920652, 17924101, 2195648, 24182996, 24215561, 24232073, 24248580, 24281251, 24314132, 24346901, 24395785, 24412291, 2195655, 24936578, 21610514,
+ 24952841, 24969495, 901254, 25002147, 25034889, 20365321, 25051295, 25084041, 24395785, 25100568, 23773397, 25673887, 14549129, 25706684, 25739398,
+ 14549129, 25755929, 26099847, 26116211, 25673862, 26132762, 26378372, 26099847, 26394907, 26902812, 27099348, 26476562, 26378372, 27132189, 27164684,
+ 2670618, 19447811, 27181195, 26476562, 27214110, 901149, 27263250, 27312140, 27328538, 2342933, 27345183, 901139, 1769477, 27377669, 27394060,
+ 27410458, 27426837, 7307300, 2195611, 27443354, 27476254, 27525394, 27574284, 27590682, 27607061, 901156, 27623477, 901126, 27656479, 27688979,
+ 27705401, 2129948, 27721885, 901250, 27754650, 27787550, 27836435, 27852829, 901132, 27869213, 2261033, 3375120, 27885842, 27934723, 868357,
+ 27951116, 27967514, 27983893, 2195744, 28000398, 23920652, 28033031, 28049427, 2179129, 23478527, 28065810, 8159362, 11550852, 28082194, 10371204,
+ 28098846, 27246611, 28147741, 901161, 28164108, 1212453, 28180754, 28229644, 28246042, 28262689, 28295174, 28311581, 28327977, 24166403, 28344327,
+ 17448979, 28360749, 2179129, 28393762, 28475547, 8962066, 28508314, 28541058, 8994931, 28557576, 23085193, 28606755, 28688518, 28705060, 28786706,
+ 28803202, 2195584, 28819610, 28852376, 28901508, 28918053, 2195622, 28950822, 28999810, 29016305, 13713523, 29048984, 29098279, 29163652, 13303942,
+ 29180200, 29294889, 29327658, 884748, 29360426, 14745731, 29393195, 29442064, 29458453, 8994822, 29474900, 29507884, 29540353, 29556738, 29573126,
+ 29589533, 29605907, 19447815, 29622509, 1949736, 29655341, 3702799, 29687924, 29704221, 29720613, 29737091, 9535622, 29753646, 1933349, 29786415,
+ 29819182, 22478886, 29851952, 29901105, 4980758, 6701085, 29933874, 30015491, 30032179, 29327668, 30064949, 30113798, 884739, 30130486, 30228595,
+ 27164807, 30244870, 30261277, 30277635, 27344903, 30294037, 29376548, 30310711, 30359611, 2998284, 30392632, 4980773, 30425401, 30458170, 30490742,
+ 30523707, 30556447, 29376531, 30589244, 9158793, 30687420, 30720135, 9535506, 30736701, 30785554, 30802050, 23789703, 30818435, 30834823, 934025,
+ 30851390, 9535623, 29049151, 30998695, 30802050, 31048000, 31080579, 31096963, 10371202, 31113537, 31162506, 13238407, 31195458, 31244611, 31277066,
+ 31293469, 31309850, 31326239, 31342628, 16269443, 31359113, 31375372, 13303942, 31391760, 31408147, 31424549, 2031628, 31440912, 31457290, 31473701,
+ 31490060, 24838180, 31506756, 31555909, 31588486, 31604741, 31621235, 1769607, 31637830, 31703049, 7602177, 31719558, 31735820, 31752218, 31768691,
+ 2670727, 31784966, 31801347, 901127, 27328538, 31817947, 31850517, 31867014, 18890767, 31883294, 31916359, 32096584, 32227459, 32243842, 32260114,
+ 2195594, 32276809, 32358730, 20365449, 32391334, 9535619, 32424267, 32522572, 32571507, 32587910, 32604295, 9535603, 32620742, 9158788, 9158791,
+ 32653427, 13238404, 10371206, 32669712, 32686106, 6209548, 32702797, 32768166, 32800902, 32817283, 16269321, 32833546, 32849949, 1769498, 32866638,
+ 32932095, 32964738, 32981327, 33063104, 16941065, 33095683, 33112092, 17809439, 33128784, 33226889, 33243251, 2179074, 8994953, 934022, 33259857,
+ 33341571, 9207939, 33357958, 16728199, 33374342, 33390930, 33423699, 33570959, 33177735, 33603740, 901235, 33636486, 33652871, 16941074, 33161331,
+ 33177735, 33505412, 33669460, 33734674, 8159366, 33751370, 33783939, 2326570, 23380298, 33800341, 33833301, 12664841, 33882353, 33915126, 33947990,
+ 34177367, 34275512, 34308227, 34324610, 8994946, 34341048, 34373976, 34455561, 34472067, 11059337, 34488567, 34521097, 11059335, 9535497, 34537817,
+ 34586787, 34619527, 11010180, 9535603, 34636122, 34701659, 34734214, 31342729, 34750812, 34799965, 10371209, 11042947, 29049182, 34865353, 34898271,
+ 35045491, 35061778, 35078281, 28786823, 35094663, 35111042, 32981179, 35127530, 20693344, 35160224, 35192841, 35209569, 27738247, 35258503, 35275106,
+ 28917769, 35307655, 35324041, 10764297, 35340510, 35389795, 9142406, 35438948, 8159255, 35504146, 11124871, 9142278, 35520521, 17448970, 35536924,
+ 35553281, 35569701, 17809538, 35586405, 35799398, 2195815, 35913912, 35946626, 35963034, 8994834, 35996008, 36094083, 36110468, 9158787, 36126727,
+ 36143220, 2326539, 36159849, 36225161, 36241523, 11059334, 36257804, 36274195, 2129923, 36290922, 1785884, 8994931, 8962163, 36421995, 36487303,
+ 32620681, 36503594, 36519948, 7307295, 36536684, 36618371, 36634759, 934025, 36651328, 36684141, 9207923, 36749675, 934020, 36814860, 1900585,
+ 36831598, 36995439, 37044339, 37060740, 37077360, 37208252, 934003, 20627609, 37240969, 37257408, 37290137, 37322889, 37339505, 23789577, 37503346,
+ 37552316, 37585031, 37158930, 37601535, 37634289, 20349065, 37667004, 37699715, 36388995, 37716098, 37732367, 37748776, 9207831, 37765491, 37978484,
+ 38027637, 38076790, 38125943, 38158712, 38224220, 25034889, 38273401, 38322554, 38371354, 38387724, 2179093, 38404423, 38584699, 38699388, 38748291,
+ 38764674, 38781058, 4980870, 38797693, 38862871, 38879366, 901236, 38895747, 38912132, 38928515, 8978564, 8962179, 38945150, 39043204, 933906,
+ 23838857, 39059593, 29163650, 39076217, 22069380, 39125375, 39207043, 39223428, 39239812, 1785987, 39256436, 39305600, 39354560, 39387521, 39584130,
+ 39682232, 39715203, 8061059, 39764356, 39846022, 9142281, 39862409, 11042951, 39879045, 8994951, 39928192, 39977095, 36765811, 39993734, 40042524,
+ 1949722, 40059271, 40124808, 40173699, 14549001, 40189961, 40206354, 40222730, 38780937, 40239497, 40452490, 40534225, 17105291, 8994818, 40583564,
+ 40648839, 40665106, 20856981, 40681609, 40697988, 40714374, 40730759, 40747123, 2195673, 40763789, 40861828, 40878103, 40894601, 40910963, 40927367,
+ 18874391, 40943829, 40976386, 38879268, 32456722, 40992791, 22200343, 41009542, 41058447, 41091087, 41107482, 3686416, 41124238, 41238690, 34324615,
+ 41288007, 41468113, 41517268, 12730386, 41550223, 41582614, 17448972, 41599139, 34324612, 41632144, 2195857, 41664661, 39157972, 41697303, 2195595,
+ 41713814, 41877906, 41943170, 41959442, 2195732, 41975957, 42008706, 9207826, 42025363, 8389012, 34324498, 42074517, 2195856, 42123670, 42172823,
+ 42238164, 42270738, 17809523, 42287512, 2195619, 42385434, 42401794, 42418195, 30392342, 42434572, 1785877, 42451214, 8388735, 42483903, 8389017,
+ 42533274, 42614996, 42647963, 42811804, 2195636, 42877077, 21872770, 42910099, 42958978, 9207938, 42975641, 43024514, 10371203, 43041181, 2195615,
+ 43122711, 43139095, 31342726, 43155870, 2195599, 43204631, 43221015, 43237506, 4980742, 43254175, 43319431, 43335811, 43352087, 43368479, 43384870,
+ 4980852, 34308228, 43401403, 43433996, 4964390, 43450389, 43466767, 43483178, 43499522, 38830091, 43515926, 43532310, 2408464, 43549088, 43745566,
+ 43794569, 43810818, 43827334, 43843586, 43860083, 43876354, 4980871, 43892873, 43909139, 43925638, 43941917, 1769587, 43958409, 43974685, 43991174,
+ 44007465, 44023923, 44040234, 2621575, 44056578, 44072962, 44089346, 19267586, 44105747, 44122529, 44154892, 44171305, 901162, 44187667, 44204086,
+ 44236802, 15482891, 44253602, 44285964, 2326554, 44302343, 1785887, 44319139, 44351498, 4980765, 44368292, 44400732, 3178506, 44433420, 2195741,
+ 44449804, 44466214, 2195495, 44482784, 4079628, 29622294, 44515749, 44564521, 44580906, 44597270, 901236, 44613670, 2342924, 44630438, 6422544,
+ 44663207, 2998312, 17006613, 44711952, 1900559, 44728744, 44859817, 44990890, 1785894, 45023320, 4980746, 2326559, 44613642, 45056427, 3473436,
+ 45088796, 45105180, 45121564, 45137948, 901148, 45154363, 45187123, 30343234, 45220268, 45285805, 45351342, 2031645, 45400066, 2195887, 42434591,
+ 45416486, 45433264, 45465629, 1769503, 45482417, 1769483, 45514817, 45564338, 2031632, 45597107, 45629876, 1114128, 2850837, 45679022, 45728181,
+ 2850845, 3162133, 45760950, 4980764, 2342941, 45842470, 45859255, 2261008, 2162710, 45891605, 45907990, 4980748, 45924792, 46039481, 13074434,
+ 46088634, 1785872, 17006630, 46137396, 46170131, 46186515, 46202899, 1212435, 46219302, 2801685, 46235745, 46301291, 46333990, 46350402, 46383547,
+ 45907974, 46448659, 5177381, 46465055, 46481414, 2162709, 46497832, 46514197, 2621459, 46531004, 4980762, 6602793, 46645263, 6946856, 46662077,
+ 46694457, 46710796, 2326549, 46727196, 31490064, 46743998, 46809535, 46841858, 46858261, 17448991, 46874643, 6193189, 46891014, 3473429, 46907840,
+ 47006145, 4964368, 1900582, 47104450, 2523148, 17842242, 47136797, 47153181, 27246621, 47169987, 47202756, 47251909, 1114150, 46891039, 47284315,
+ 47317013, 1949712, 47333830, 17006614, 47366599, 2850858, 47415307, 1933323, 47432136, 47530026, 47546406, 24838156, 6406149, 47562764, 47579148,
+ 47595532, 1769484, 47611961, 1785887, 47628307, 47644688, 47661084, 47677442, 933914, 47693839, 47710246, 32849936, 47727049, 47857691, 2850835,
+ 47890539, 47923226, 47939586, 2162714, 47956009, 47972393, 28147753, 47988835, 48021526, 4161567, 48038346, 48070956, 44351519, 17154060, 48103516,
+ 45056021, 6209548, 48136651, 2359306, 48185804, 3342365, 48218572, 48250899, 48267301, 7258225, 48284109, 48398798, 48447514, 47120415, 48463901,
+ 48480258, 2752550, 48496652, 22216709, 48513487, 48545823, 2162698, 15351834, 48562218, 48578602, 48594986, 44171306, 48611792, 42434570, 1933354,
+ 48660518, 48676905, 1949708, 48693707, 48742403, 3178499, 48758815, 6701077, 48775633, 48873938, 48939475, 48988628, 49020930, 2162719, 49037781,
+ 49086492, 1933343, 49102870, 49119254, 49135638, 2621462, 49152470, 44613669, 3867095, 45858845, 49250314, 49266720, 31424538, 49299484, 49315856,
+ 49332225, 49348650, 24838153, 49365464, 3686412, 49430559, 49446943, 49463327, 2162719, 49479686, 49496095, 1769501, 49512921, 49610764, 49627268,
+ 49643561, 2752647, 49660378, 49725477, 49742299, 49774603, 49791007, 1769482, 49807836, 49872937, 44613658, 49889290, 5947423, 49906141, 49938463,
+ 4980755, 49954932, 49971316, 49987700, 44597364, 50004446, 50069514, 50086359, 2113565, 50119135, 2621455, 4980776, 50151895, 47317023, 50184672,
+ 45465621, 17006649, 50266593, 1933350, 50315301, 2359333, 5832735, 50332130, 50429981, 50446372, 50462748, 2261032, 50479587, 3555340, 50511883,
+ 17006604, 50528740, 3129382, 50577845, 50610188, 50626658, 50659347, 2342949, 50676197, 50774502, 50889191, 50937868, 1114133, 48627714, 50954728,
+ 50987090, 884767, 51019798, 7602188, 51036172, 2801690, 51053033, 51101727, 43237382, 1933340, 51118171, 49496076, 51151338, 51200491, 51232827,
+ 51265574, 51281986, 51314699, 3309579, 51331564, 51429869, 51495406, 51528175, 2113578, 51560919, 51593237, 2162690, 51610096, 17006633, 51658767,
+ 2342934, 51675157, 4161538, 51692017, 51773446, 6701075, 51789829, 49889318, 51806642, 2113542, 51838986, 2129930, 51855381, 51871746, 2326538,
+ 51888626, 6209567, 45629456, 51937282, 15351818, 51954163, 52117520, 2162825, 52134388, 48054309, 52215820, 4980774, 52232213, 52249077, 52281350,
+ 52298035, 52330511, 15351810, 52346896, 27246618, 52363290, 2539551, 52380150, 52445615, 7389206, 52477994, 17006632, 52494352, 52510732, 50987018,
+ 52527607, 52576294, 7602192, 6602762, 52592699, 1933348, 2719746, 52625912, 45465637, 52674566, 1753107, 52690975, 52707765, 6946818, 52740132,
+ 52756499, 1114134, 52773305, 52822031, 17006629, 2342918, 52838905, 52936705, 52953219, 8994817, 52969978, 19447945, 53051529, 53067777, 53084294,
+ 53100545, 17924211, 1212553, 53117065, 53133324, 53149830, 53166106, 53182579, 53198869, 2343047, 53215244, 53231731, 53248021, 53264516, 53280808,
+ 1114242, 53297659, 53362693, 53379078, 53395593, 53411852, 53428253, 53444742, 53461018, 53477417, 53493875, 2261013, 53510149, 53526537, 31424649,
+ 53543420, 53690369, 19447810, 53706768, 3309605, 53723141, 53739526, 53755911, 53772425, 53788684, 53805085, 53821459, 53837958, 53854234, 17449001,
+ 53870604, 1212445, 16269324, 53886982, 53903367, 53870604, 53920253, 11059226, 53968901, 53985289, 54001801, 54018060, 54034461, 54050835, 54067257,
+ 54083625, 16269338, 52953090, 18956289, 54100478, 54132873, 54149132, 16269338, 54166015, 54198293, 54214692, 54231552, 54296607, 17809424, 54313020,
+ 54395393, 45039644, 47120406, 54460930, 54493196, 24838170, 52576284, 54460458, 49217565, 54509587, 6406166, 54526467, 54575141, 54592004, 54640652,
+ 54657052, 2031656, 54673513, 54706693, 54919190, 54935683, 54951948, 54968451, 8994857, 54985222, 47317030, 55050242, 6324234, 2621442, 55066640,
+ 55083527, 55132175, 1114143, 55149064, 6193178, 55197753, 5603359, 55214601, 31424538, 55246894, 55296522, 3178534, 933909, 55329291, 46530586,
+ 55377935, 2850822, 55394347, 6324255, 55427088, 3702800, 55443980, 1933331, 45465622, 55476683, 55525483, 55558577, 55591437, 55640090, 55656974,
+ 55689743, 5177366, 55754762, 1933322, 55771664, 55869969, 4571148, 27623476, 47349766, 55902220, 55918618, 4980747, 1933353, 55935506, 54984740,
+ 56050195, 47611914, 56099348, 56148078, 2539536, 1900555, 6717450, 56181269, 56246313, 56262658, 2342922, 56279574, 56311819, 2342923, 56328429,
+ 2965544, 56360986, 56377879, 56410648, 52985874, 56492063, 31424533, 56508536, 3342355, 56524840, 7307304, 56541721, 56607258, 56639503, 32849951,
+ 6946837, 56656411, 1114124, 50806820, 56689180, 56787485, 56836233, 56852506, 2326662, 56869001, 56885274, 1769606, 56901769, 56918021, 7602310,
+ 56934426, 50151450, 6946847, 56951326, 57000045, 57032723, 2326530, 6455327, 57049631, 7045146, 20234245, 57098784, 57180163, 57196581, 57212970,
+ 7602194, 49086521, 57229354, 57245830, 57262117, 17924115, 57278471, 57294855, 57311239, 31801351, 57328161, 57376870, 29900802, 57409573, 7389196,
+ 52527142, 17383460, 57426466, 57475359, 57507977, 57524243, 57540742, 57557049, 2179187, 57573395, 57589817, 57606172, 16826378, 57622531, 57638915,
+ 57655299, 19038211, 58212900, 9207849, 58245669, 58311206, 58507815, 58704424, 8388735, 58769420, 17809420, 58785922, 58802199, 7307290, 49020949,
+ 17105080, 58819113, 58851459, 58867861, 901674, 58900664, 58933803, 58966025, 58982423, 8962071, 58998915, 59015298, 59031706, 24248474, 59064876,
+ 7602177, 59179017, 59195415, 59211907, 59228295, 17809448, 59244556, 59260957, 19447846, 59277321, 10764418, 33734679, 59293719, 8159367, 59310563,
+ 2162709, 59342863, 59359234, 59375626, 1785893, 59392557, 59556398, 59621507, 59637890, 59654298, 59686930, 2130050, 59703435, 59736459, 59769391,
+ 59818115, 8159347, 2605096, 19447844, 59834928, 59916311, 59932802, 59949187, 16269447, 59965449, 59981955, 59998769, 11059209, 12648563, 60031538,
+ 60096646, 60113031, 11075602, 60129285, 60112908, 60145801, 60162183, 60178547, 60194834, 60211332, 8962071, 17088646, 60227721, 3309594, 60244156,
+ 17924105, 18399258, 60277299, 60473908, 60571779, 60588162, 60604434, 2195589, 60620931, 60637314, 16269330, 60653699, 11468930, 60670083, 60686570,
+ 60719219, 1785861, 60735659, 60867125, 14450819, 60948748, 24281216, 18874505, 60998198, 61047351, 61128838, 11059315, 9109619, 61145251, 11075719,
+ 61177990, 61194808, 61259911, 9158674, 61276406, 29049401, 61276295, 61309066, 61341827, 61358089, 17924230, 19464210, 61374487, 61390982, 61407237,
+ 61423746, 1769495, 61440002, 61456394, 1114154, 61473338, 61686331, 38879243, 61767927, 61800585, 9535511, 61816850, 60243977, 61833331, 19447940,
+ 61850172, 61882503, 61898781, 61915252, 61931551, 61947961, 61964290, 61980682, 61997097, 46088218, 62013711, 36634633, 8962057, 62079549, 62111956,
+ 62144753, 62177854, 62210623, 62259223, 62275602, 4980867, 62292102, 62308489, 62324765, 62341151, 4980747, 62357519, 884870, 62373904, 50036762,
+ 62390309, 62406687, 45629469, 62423616, 62455814, 62472221, 1212423, 62488592, 62504962, 62521367, 62537769, 62554127, 62570628, 62586898, 2359325,
+ 62603841, 62833218, 62882371, 62914572, 13074461, 62931204, 62963972, 62996615, 63012873, 34799731, 63029286, 63045672, 63062057, 17924111, 63078980,
+ 63128133, 63209621, 63242377, 11075699, 63258787, 934019, 63291507, 27738244, 8962183, 11550857, 63308358, 63357141, 42958980, 63389812, 63406090,
+ 2359337, 48054284, 63422480, 45727770, 6209552, 63438858, 63455235, 28164231, 63472199, 63652424, 63799881, 63848563, 63864947, 2162820, 63881802,
+ 2621451, 21528585, 63914235, 36388999, 63963349, 59883657, 934003, 22069383, 63995911, 64012309, 4571151, 64029259, 1114249, 64094796, 64209485,
+ 37142671, 64274708, 33652851, 64307359, 64340100, 64356483, 16269444, 64373326, 64488015, 64586058, 64618630, 64634889, 46530596, 64651274, 64667669,
+ 1212431, 64684169, 9535618, 64700425, 64716930, 64733241, 64749570, 64765981, 3309599, 22331527, 64782928, 64815110, 64831524, 2752628, 64847879,
+ 17809445, 64864849, 64995485, 65028228, 65044617, 901714, 65060882, 9158665, 62062610, 65077379, 11059331, 65093769, 64880771, 65110148, 65126537,
+ 8962182, 65143379, 65274452, 65323139, 65339522, 41697410, 59293714, 65355891, 42958982, 18890887, 65372182, 65388585, 65405060, 2621571, 65421322,
+ 4685865, 65438293, 65520214, 41992323, 65618052, 36339721, 65634436, 65650818, 65667081, 10764422, 65683458, 65699878, 1785867, 65716243, 55869459,
+ 65733207, 65830941, 65847306, 868409, 65863706, 65880095, 65896460, 2326557, 65912941, 7307398, 65945642, 65962228, 65994844, 66027530, 66043920,
+ 66060309, 45137929, 66076695, 2179081, 66093656, 66125855, 66142246, 66158621, 5177370, 66174992, 65912870, 66191961, 66224139, 66240540, 66256905,
+ 66273318, 3375135, 1818634, 66290266, 66322438, 65912853, 66338838, 2261020, 66355287, 44908570, 66404368, 65912861, 66421339, 66453525, 45498502,
+ 66469909, 66486406, 66503260, 66551923, 66568233, 66584605, 66600986, 17449000, 66617770, 66650118, 66666518, 66683015, 17924099, 51593221, 66699276,
+ 66716131, 66748456, 66764819, 65912854, 66781789, 18890775, 66846725, 17924153, 66863393, 66896009, 56885253, 66912862, 66961415, 66977828, 66994452,
+ 44285968, 6193164, 67027551, 67059743, 1785866, 67076122, 10371101, 67093088, 67158028, 67174534, 67190810, 2326643, 67207305, 67223668, 67239951,
+ 16269314, 67256329, 67272741, 67289218, 38879248, 67305479, 67322465, 67420189, 9207820, 67436581, 67452938, 67469427, 67485715, 2752531, 67502690,
+ 67928675, 68108900, 68338277, 10567811, 18792579, 68386823, 2326549, 33161348, 68403814, 68435973, 68452355, 1949734, 68468932, 68501638, 8175748,
+ 68518414, 68550668, 68567059, 68583440, 68599818, 1785885, 68616807, 68763861, 68796547, 59949193, 68813416, 2785320, 68846154, 68878468, 68894729,
+ 68911113, 68927619, 68943895, 68960265, 14434436, 68976832, 69009538, 21872663, 69026409, 69058675, 69075074, 69091337, 69107910, 24969331, 69141098,
+ 12763159, 11059332, 69190251, 8994948, 69255788, 69386861, 69484799, 69517447, 17088642, 69533951, 69566598, 69582978, 20299794, 69599854, 69648393,
+ 30867587, 69664780, 36634645, 14745609, 69681286, 15483014, 61014148, 69697803, 69746803, 69763202, 69779590, 69795858, 69812847, 69845008, 65699866,
+ 34422802, 69862000, 22069257, 70041609, 70058140, 70091377, 70254601, 70271189, 14450819, 70304370, 5325427, 70353030, 24969350, 70369415, 70385799,
+ 8945794, 70402182, 70418786, 20217971, 70451315, 70467934, 70500489, 4980738, 70516895, 32636951, 70549738, 18874500, 14450825, 70582278, 884851,
+ 70599284, 70631446, 68599924, 18874389, 70648437, 70779140, 70811671, 50659462, 11042825, 70828055, 36765827, 70844659, 70893830, 37159046, 65077266,
+ 70926451, 70942727, 884743, 9158788, 70959130, 70975517, 28344361, 70992502, 30950007, 71123576, 36339842, 2260994, 71205497, 71237669, 17809444,
+ 71254650, 71451162, 71483408, 5177373, 71500106, 71532660, 71548947, 2261003, 71565947, 71614595, 4980851, 19480691, 71631089, 71664017, 71696519,
+ 71712791, 11468937, 71729490, 65126515, 71761932, 71778420, 71794710, 2621471, 71811708, 71925875, 71942162, 71958659, 20299910, 71975167, 71942153,
+ 72007814, 72024195, 33619977, 72040605, 72073853, 72138936, 72171657, 30867474, 72187906, 45629443, 72204926, 72335363, 72351782, 72368159, 2162725,
+ 72384647, 70729860, 72401137, 72434303, 72466562, 72482931, 72499315, 933911, 72515613, 72532084, 2523193, 72548992, 21610611, 72581129, 34324503,
+ 72597620, 72613930, 72630284, 72646696, 72663081, 2031637, 72680065, 35864708, 72728710, 33734665, 72745075, 44285983, 72761986, 72810525, 19447924,
+ 72827194, 11042828, 72860291, 72908805, 17924227, 72925210, 2326643, 72941587, 72958596, 72990857, 73007145, 73023503, 73039894, 73056277, 54296708,
+ 73072863, 73105423, 73121924, 73138311, 933925, 73154591, 73171589, 884745, 1785898, 73204326, 73236483, 1949830, 9207810, 73252921, 45531137,
+ 73269876, 73302022, 73318531, 73334822, 73351170, 73367684, 1769473, 73384582, 73433104, 73449488, 7389226, 73465857, 73482256, 73498755, 73515123,
+ 73531414, 2523167, 73548423, 73596947, 73613334, 73629702, 2523162, 73646090, 38879244, 73663112, 73695247, 1949703, 73711632, 73728028, 73744400,
+ 1114140, 73761417, 74269322, 74416779, 74530834, 19464322, 74547380, 61800582, 74579991, 74597004, 74629760, 74661899, 2605058, 74678925, 2195640,
+ 74776585, 74793092, 74809479, 74825859, 72908930, 22331401, 74842325, 74875017, 33177623, 74891282, 74907667, 74924061, 74940546, 74956818, 74973225,
+ 74989591, 2179095, 75006606, 75186831, 75284489, 75300887, 934022, 75317381, 75350150, 75366409, 75382807, 75399186, 75415686, 75431945, 75448343,
+ 19775506, 75464715, 6438928, 38830211, 75481106, 75497603, 11059330, 75513878, 75530252, 2162699, 75547280, 75579408, 46530588, 23838743, 75595910,
+ 75612290, 75628679, 75645060, 31096841, 75661317, 75677708, 75694106, 75710485, 33177636, 75727505, 75792956, 75825287, 14549124, 75841667, 75858051,
+ 72908931, 75874435, 75891346, 75940499, 76087634, 76120724, 76153012, 76185737, 76201993, 8372233, 76219029, 76365977, 61128819, 76398707, 76415091,
+ 18677895, 76431475, 76447879, 76464263, 9535620, 76480649, 76496908, 44351516, 76513282, 76529706, 10829834, 76546710, 76743057, 18890886, 76775442,
+ 76791831, 4980745, 76808201, 34603145, 76824599, 76841092, 2326665, 76858007, 76890153, 57262091, 11042950, 76907160, 77070345, 77086857, 77103769,
+ 77135987, 11042951, 77152274, 77168770, 37355651, 77185378, 77217946, 2031622, 50937896, 77250576, 2326566, 77266953, 77283357, 77299728, 36307059,
+ 3309583, 77316762, 77414532, 32817289, 77430941, 70893703, 77463684, 77480051, 69156979, 77496330, 933917, 77512720, 47611930, 77529755, 77660292,
+ 12730483, 77676660, 77692957, 77709369, 2752553, 11304978, 11468823, 77725812, 77742121, 77758470, 2359299, 77774985, 9207940, 77791238, 884754,
+ 77808284, 77906050, 77922419, 61358210, 77938803, 77955203, 77971591, 77987849, 78004361, 78020742, 78037001, 78054045, 78103198, 18890761, 78135305,
+ 78151795, 78168090, 1212435, 78185119, 78282886, 78299142, 78315655, 78332036, 78348420, 69156887, 62062707, 78364884, 78398112, 78446724, 22331410,
+ 78463016, 38830086, 78479386, 20365318, 78496417, 78544906, 47120403, 78561282, 29769738, 78577978, 78610489, 38879348, 78627490, 78659600, 78676008,
+ 78692392, 9158663, 78708748, 24969242, 78725795, 78774290, 78790665, 78807062, 884772, 3293196, 78824100, 78872607, 78888963, 78905366, 884752,
+ 78921754, 78938115, 78954508, 17924107, 52740212, 68599839, 78971557, 79037094, 79069863, 52576266, 79102009, 2621452, 79119016, 79151239, 2326537,
+ 79167507, 9158693, 79184553, 79265833, 79282194, 43384842, 52805638, 79299242, 79413260, 72859657, 79429653, 2343047, 79446073, 79462754, 79495189,
+ 2179114, 79511567, 2326565, 79527951, 79544338, 79560706, 9535516, 79577771, 79659692, 79691782, 67059728, 79708163, 2261122, 79724582, 79740944,
+ 2850827, 31424524, 79757997, 67059724, 31424569, 79807150, 15237121, 47120396, 6946873, 79856303, 79921175, 16826391, 79937541, 1949812, 79954608,
+ 79987377, 80019494, 42434583, 80035842, 2752552, 80052914, 80494707, 80511111, 80527367, 80543878, 51314803, 80560819, 80741044, 16941749, 80888242,
+ 80920588, 80936970, 24838165, 80954038, 81035424, 81068163, 81084439, 81100915, 81117315, 36339735, 81133702, 81149981, 81166367, 2162717, 29737095,
+ 81182859, 81216183, 15483011, 81313907, 81330313, 16269427, 81346694, 81362953, 22331507, 81380024, 34734211, 37158921, 81510534, 81526899, 13303826,
+ 81543865, 81592338, 9519239, 37159042, 81608715, 884738, 81625786, 81690642, 81707278, 9158679, 81739906, 81756201, 19447839, 81772659, 81789065,
+ 81805321, 8978563, 81822395, 81936652, 81985551, 82001951, 1114123, 82018441, 82034825, 82051206, 81969289, 82067465, 33177734, 70729863, 82084540,
+ 82133123, 82150077, 82198537, 11042953, 82215614, 82264085, 82280469, 2342969, 82296854, 82280460, 82313273, 32637060, 82330303, 82510219, 82542611,
+ 82558978, 2162694, 82575929, 82608482, 82641028, 82657298, 81707031, 82674368, 82723170, 82755721, 76201993, 82772083, 32456836, 82788355, 2015247,
+ 82805441, 82985666, 83034325, 83067587, 83116224, 83148988, 83182276, 2195544, 18677895, 83329159, 83346060, 9519236, 83378331, 83411079, 83428037,
+ 61259908, 83492996, 83509866, 83558537, 83574793, 14450706, 83591210, 7372802, 83608262, 83722355, 83738754, 10387479, 83755139, 10944643, 83772103,
+ 83820582, 83836970, 1114113, 83854024, 83918884, 1949717, 83935242, 83951637, 3309625, 83968156, 21872777, 84000903, 37748754, 84017174, 1785863,
+ 84034249, 84148354, 36618249, 84164738, 84181122, 22069382, 84197385, 10387588, 84214333, 21610519, 84246543, 8962185, 84263158, 84295837, 84328563,
+ 23838729, 84344850, 84361331, 84377715, 84393986, 1212444, 84410587, 84443154, 84459529, 84476035, 84492419, 84508809, 84525093, 84541452, 84557881,
+ 84574239, 17809418, 84590615, 76709911, 84607106, 84623369, 84639801, 84656243, 10371094, 84672571, 2179079, 84705318, 84721676, 84738059, 51871756,
+ 84754567, 84770834, 8962069, 84787221, 84803626, 84819999, 84836354, 3309575, 84852742, 84869160, 84885636, 84902003, 84918309, 84934671, 2326544,
+ 84951076, 84967436, 2129949, 84983839, 11157507, 85000202, 85016579, 884852, 85032967, 85049380, 2129935, 85066442, 85114917, 9535494, 5505050,
+ 85131979, 85196826, 79298697, 85213220, 85229700, 85245992, 2162706, 85262364, 85279436, 4112420, 85311510, 10371108, 85327914, 14532636, 85344266,
+ 85360646, 49774614, 85377741, 85409927, 85426202, 85442570, 17809409, 85458953, 85475359, 85491844, 9158678, 85508814, 85852879, 85983952, 86048899,
+ 11305092, 86065289, 86081565, 2752549, 86097943, 33177618, 86115025, 86179994, 86212631, 86229010, 39895058, 86246098, 86343795, 86360075, 86376479,
+ 86392870, 86409218, 86425735, 65077257, 14549107, 86442041, 86458394, 66338832, 86474883, 86491268, 65077385, 56557580, 86508243, 86605954, 86622227,
+ 86638602, 2621469, 10993779, 11468809, 36634761, 86655700, 86720519, 86736901, 86753321, 17448997, 86770233, 86802435, 86818826, 4980868, 86835925,
+ 59818099, 86934230, 86999049, 87015555, 8389335, 87031848, 87048198, 2113557, 87064692, 19464249, 87081688, 87261207, 87277683, 22200450, 18677897,
+ 87294681, 87343263, 60637319, 87376602, 87589132, 87638346, 87671060, 87703685, 87736455, 8389339, 87752834, 76415106, 3129356, 87048194, 87769220,
+ 87785629, 20529170, 87818972, 87851123, 18169993, 87867432, 87883782, 87900181, 87916546, 44171274, 87933661, 88096809, 88113158, 88129538, 88146052,
+ 88162419, 2326564, 88178818, 88195095, 34799750, 12746883, 88211586, 88228087, 88261102, 46039051, 88294110, 88408439, 88440844, 88457258, 2621477,
+ 88473735, 88490021, 88506410, 1949833, 88522759, 88539137, 88555527, 2261033, 17088530, 88260610, 88572639, 88785027, 32800905, 17072137, 88801410,
+ 88817862, 13713538, 88850565, 88883209, 4980759, 49496104, 79249448, 88899747, 88932468, 88948793, 1769487, 88965142, 88981535, 9158685, 88997907,
+ 89014313, 89030791, 89047177, 2162823, 89063434, 52445203, 89079830, 89096197, 89112587, 89128961, 7307301, 85098517, 89145382, 89161757, 9158713,
+ 89178124, 89194514, 89210996, 89227273, 16269315, 89244384, 89276456, 2162706, 89292810, 89309316, 89325608, 3309684, 89342689, 89784455, 89800713,
+ 89817826, 89849971, 51314819, 89866979, 90014436, 9535511, 36339844, 90079366, 90095746, 90112130, 2621481, 90128402, 90144791, 90161175, 90177668,
+ 90193943, 12664964, 90210704, 90243202, 19267607, 90259593, 16269442, 90276581, 90341511, 11010179, 90357769, 90374276, 64356489, 42958857, 90391270,
+ 90488966, 9371780, 90505239, 19447923, 90521715, 2129941, 90538727, 90587536, 81707143, 90620648, 90735337, 90866233, 90898547, 90800146, 9371778,
+ 90915170, 90947719, 90964098, 33619986, 90980467, 90996745, 91013320, 91046023, 16941193, 91062407, 37585033, 91079230, 20381828, 91111555, 91127940,
+ 91144215, 91160599, 91176983, 34422807, 91193542, 9535625, 91226246, 19447942, 83918857, 91243242, 2179100, 91308198, 91340915, 91357314, 9371657,
+ 91374315, 89882759, 91472579, 91521139, 91537539, 91554144, 91586910, 91619462, 91635735, 8159274, 91652844, 11042931, 75497604, 884777, 91718381,
+ 91783430, 91815938, 91832436, 8994854, 91848841, 62275593, 91865838, 91897986, 75497481, 91914282, 91930662, 2342913, 91947759, 92110979, 92127241,
+ 92143746, 2162804, 92160134, 92177024, 92209506, 34324611, 72040798, 92242055, 92258559, 92291824, 92504087, 2195726, 70058197, 92520563, 92536947,
+ 18874505, 92553354, 92586737, 92635251, 92651651, 60243991, 92668569, 8602354, 92700690, 70385682, 92717290, 92749834, 47120426, 2015270, 92766346,
+ 9519234, 92799016, 92815370, 6193158, 92832499, 15482995, 93012369, 93045492, 93094019, 14745737, 93110426, 93143195, 93175962, 9158786, 93209333,
+ 93372425, 29163657, 93388915, 93405319, 93421699, 93437961, 93454473, 8389366, 93470963, 93520226, 93552649, 93569155, 93585542, 2195711, 29376646,
+ 93601810, 70729858, 93618935, 22478979, 73629727, 93667465, 93683718, 93700211, 2752514, 93716724, 93749383, 93765763, 93782153, 93798969, 93831210,
+ 93847583, 2359297, 93864696, 93896716, 93913849, 93945878, 93962242, 93978634, 24838165, 93995029, 94011432, 68599945, 94028128, 94060573, 94076969,
+ 36339846, 44285958, 94093404, 94126106, 87539717, 2293776, 94142490, 94158877, 94175242, 14745605, 94191718, 94224500, 94240809, 7585798, 94257168,
+ 94273573, 94289927, 94306436, 94322716, 94339202, 7307293, 94355484, 94371852, 2031746, 94388476, 94421018, 9207844, 71188491, 94438138, 49774602,
+ 94470165, 94486570, 94502943, 1212427, 94519353, 56852490, 94535726, 94584843, 94601256, 51593242, 94617657, 94633996, 20299786, 45760523, 94651131,
+ 94699551, 94716034, 94732304, 17809431, 78807061, 94748701, 94765171, 94781462, 94797855, 94814223, 38879241, 94830951, 94863475, 17924122, 94879749,
+ 94896131, 17924098, 94913276, 95290109, 95421182, 95518743, 95535239, 95551625, 64667785, 95568007, 95584387, 95600775, 84361351, 95617161, 95633540,
+ 95649810, 95666291, 95682569, 9470084, 95698950, 52723733, 95715623, 95780998, 95797383, 95813650, 95830151, 61358214, 95846409, 95862919, 14418050,
+ 95879186, 95895561, 95912067, 95928338, 12779651, 95945471, 96010255, 96026626, 1212438, 96043017, 38994055, 96059432, 28164133, 96076544, 96157714,
+ 96174116, 96190471, 19447849, 9109636, 96207500, 96239731, 96256018, 36716659, 96272393, 96288902, 1785874, 96305921, 96387090, 33161347, 96403593,
+ 96419852, 45776925, 38830195, 96436359, 17448975, 96453249, 7045138, 70516867, 96502530, 96600835, 96714932, 10764297, 72040724, 96747920, 96780306,
+ 19464327, 96797324, 37158930, 20988038, 96829555, 82657289, 96846596, 96927746, 96944156, 96960554, 2260998, 96977011, 96993417, 97009687, 27738242,
+ 97026070, 97042444, 78807097, 97059589, 97173639, 97189897, 97206403, 97222793, 33620102, 97239066, 97255462, 97271827, 1114153, 97288307, 97304710,
+ 97321097, 97337353, 97353859, 97370886, 97402917, 97419283, 97435685, 2342919, 97452147, 97468426, 97484819, 97501222, 97517599, 3850243, 97534727,
+ 21151766, 97567496, 97714317, 97763337, 97779735, 97796119, 97812503, 8175751, 33161239, 97828979, 97845379, 36634755, 19464307, 97861764, 97878173,
+ 97911561, 98009255, 9519236, 98058370, 98074767, 98107404, 1785892, 6438943, 98124554, 98255627, 98353282, 14827538, 98369651, 98386051, 98402436,
+ 98418825, 23838854, 21872772, 98435081, 98451479, 98467972, 98484361, 32637059, 98500740, 98517015, 98533399, 98549897, 22331529, 98566281, 98582551,
+ 98599049, 98615305, 98631689, 98648073, 3309591, 98665228, 98713609, 98730119, 98746503, 9453702, 98762761, 98779268, 98795657, 98812019, 36765714,
+ 98828419, 98844787, 98861079, 98877449, 22069385, 98894446, 98943107, 98959497, 98975876, 98992243, 36388996, 99008643, 99024905, 99041414, 99057801,
+ 99074183, 96288883, 99090563, 88883330, 14745735, 99106965, 99139607, 99156083, 99172375, 99188871, 11075716, 99205254, 99221636, 99238020, 99254406,
+ 35864707, 99270788, 99287175, 99303447, 99319943, 99336307, 99352599, 99369090, 99385481, 81608730, 99401740, 99418123, 99434517, 99450886, 99467290,
+ 99483679, 2670632, 99500034, 99516454, 24838182, 99532866, 99565590, 10371091, 99582733, 99614854, 99631140, 99647500, 99664009, 19447848, 99680268,
+ 99696661, 48054293, 99713046, 99729434, 99745808, 99762181, 99778563, 99795079, 41959433, 99811359, 99827714, 17809411, 99844878, 99876886, 2752522,
+ 99893251, 1785896, 99909648, 98107403, 99926056, 99942440, 99958800, 53624860, 99975951, 100320016, 100467473, 32637063, 100565123, 16941079, 82313331,
+ 62062727, 100581776, 100614545, 100646930, 62029958, 100663319, 18661513, 100680466, 100810886, 17088627, 100827923, 39895170, 1949702, 100892712, 73744410,
+ 96796806, 100909065, 100925458, 70729865, 100941955, 100958338, 18956311, 100974601, 100991108, 77136009, 101007369, 89948290, 101024532, 101105795, 67485701,
+ 91193481, 101122071, 101138441, 11010183, 101154953, 101171332, 101187607, 101204098, 17432604, 101221141, 101269634, 101286018, 101302402, 24412169, 69156874,
+ 101319446, 100876309, 88948741, 101368599, 101450520, 101531801, 37585033, 101564551, 34471959, 24936457, 101581593, 101647130, 101729051, 101777542, 90964100,
+ 101793810, 11468932, 101810972, 101842953, 101859460, 101875846, 16941187, 64356467, 101892893, 101990531, 102006899, 102023283, 102039689, 64684163, 10944649,
+ 33161350, 102055954, 59293826, 102073118, 69140611, 102219891, 102236295, 22200435, 36634739, 102253343, 102367241, 23822467, 102383782, 102416393, 102432905,
+ 33620103, 102449287, 102465673, 101875721, 102482108, 102514822, 102531228, 102563849, 102580355, 8389408, 102596626, 13238404, 102613001, 102629510, 102645894,
+ 102662281, 76791942, 62062594, 102679329, 102842505, 9109635, 102859106, 2179098, 102891655, 32768234, 102908102, 8142857, 102940690, 102957858, 103006340,
+ 103022727, 61128839, 103039779, 103186563, 103202947, 103219330, 103235714, 17924226, 103252103, 92536967, 103268370, 83361810, 103284738, 48627722, 103301141,
+ 103317530, 103333900, 5832714, 103350435, 103383503, 103415846, 103432207, 103448612, 2031732, 103464981, 103481359, 17006608, 103497764, 103514113, 103530631,
+ 15351849, 103546911, 7389241, 103563280, 103579679, 103596035, 8962060, 103612453, 103628805, 2261107, 103645315, 51314818, 103661683, 103678009, 103694348,
+ 103710850, 103727130, 103743514, 19447827, 103759878, 103776277, 103792642, 103809050, 103825429, 901924, 103842597, 2736166, 1196058, 103956482, 47317108,
+ 103972876, 103989286, 104005634, 66273301, 45498399, 104022018, 104039206, 104071197, 104087592, 2523943, 104727337, 104760106, 901240, 1212536, 3309688,
+ 4980856, 104956024, 104759308, 27246712, 104972311, 8142871, 104989483, 105136341, 105169027, 105185411, 20365443, 18874377, 105201820, 15482889, 105235244,
+ 105300781, 105349341, 105382702, 105447442, 16941186, 105463974, 17432713, 105496706, 105513310, 105545766, 105562243, 12664962, 105578505, 105594882, 105611401,
+ 105627650, 105644166, 11059202, 105660629, 8994835, 105693203, 105709705, 105725981, 105742470, 11059212, 105758729, 105775116, 105791625, 16269319, 105807881,
+ 105824285, 105840777, 105857065, 105873542, 105889834, 105906291, 10371094, 105923133, 105955462, 105971827, 32620679, 105988911, 2195668, 106152256, 106184761,
+ 44908562, 106201251, 106233993, 106250263, 69189747, 106266655, 106283046, 106299403, 106315785, 106332166, 2342921, 48545813, 106348565, 46514188, 106365169,
+ 106398512, 83165319, 106446879, 2031638, 106464049, 106512516, 98009220, 106528898, 106545286, 106561651, 22478983, 106577923, 106594322, 32456819, 106611506,
+ 106643587, 43024407, 106659869, 106676358, 106692740, 11059257, 106709150, 106741778, 106758276, 106774663, 88883332, 106791731, 107070260, 107118723, 107135107,
+ 107151593, 107184265, 107201138, 107249779, 107266183, 77103925, 107283254, 107512021, 107544713, 107561649, 107593990, 107627319, 107708547, 20447445, 107725624,
+ 107791161, 107856698, 107905026, 107921902, 8978434, 901142, 107954627, 107986970, 108003354, 108019738, 108036122, 108052522, 108068906, 108085290, 108101654,
+ 2621462, 91275292, 106905622, 107757590, 4571142, 108118044, 108134428, 78168083, 2621482, 1785862, 108151611, 108199955, 108216339, 2031645, 2261018,
+ 108233532, 108282685, 3555330, 108348222, 2523164, 108413070, 108446527, 108576822, 108609548, 108625946, 48136223, 108642775, 3555368, 55033892, 108675609,
+ 901146, 3244064, 108741068, 108773388, 54657050, 108789867, 108823360, 3244865, 108987202, 2867202, 109035526, 2015253, 109052398, 109084682, 109101891,
+ 2129936, 109183033, 7045136, 109200196, 901130, 109264984, 109297693, 2752553, 109314074, 109330434, 109346857, 2752523, 109363205, 7602181, 109772809,
+ 109790022, 23101574, 22069277, 109822067, 60637318, 109839175, 5308701, 110084936, 99893269, 110183241, 73531394, 110231982, 110280720, 110297930, 110346660,
+ 110379024, 110395402, 110412619, 110478156, 110527309, 110575647, 110592029, 1769475, 110609230, 110674458, 3129356, 110707535, 1949727, 110740304, 110773073,
+ 110904146, 111001654, 111034384, 6946826, 111051603, 24838173, 111116354, 111149068, 47251494, 111166292, 111034370, 18153478, 111247391, 2408486, 111264597,
+ 4980752, 111313750, 111362474, 59310090, 111395671, 111427808, 44646441, 111460391, 111493721, 111525945, 111542303, 111558658, 111575061, 111591490, 111624208,
+ 24838154, 111640579, 111656963, 2719756, 111673642, 111706968, 111837193, 111853922, 111887025, 111919219, 34619527, 1212444, 111935516, 18890771, 111952729,
+ 111984649, 109789321, 112001882, 112033801, 36241545, 112051035, 112083004, 112164902, 112181275, 107757570, 112214054, 112231260, 112362333, 112394242, 5177380,
+ 112410626, 112427019, 2031647, 6717442, 59310120, 112443394, 3686422, 112459778, 31424534, 112476591, 112508930, 112525333, 112541762, 112575326, 55033894,
+ 112656450, 112689162, 112706011, 112738314, 112754690, 901158, 112771110, 112787458, 1769508, 112804703, 112869397, 112886624, 7733708, 112952161, 112984930,
+ 81756163, 113082370, 64765978, 113098754, 113116003, 901151, 113164813, 5799957, 112427027, 113213450, 113229855, 3309580, 112328730, 113247076, 113459266,
+ 55033894, 113492076, 113525605, 113639450, 1982493, 113656267, 113705048, 113737754, 6324240, 113754149, 4964392, 113771366, 2850873, 113950812, 113983598,
+ 45465628, 114016272, 114032651, 114049052, 3211696, 114065467, 114098188, 114114570, 114130950, 56639510, 114147330, 114163769, 114180108, 56262666, 44285954,
+ 114196539, 114229269, 114245654, 2196327, 51658773, 114262018, 114278456, 111607839, 114311174, 114327573, 114343941, 6324260, 114361192, 48545794, 110411842,
+ 114426145, 114459153, 114492265, 114557802, 114638870, 114655234, 62341146, 114671618, 27426826, 17448962, 114688501, 114720794, 114737178, 114753548, 114770434,
+ 3211895, 4980737, 114803563, 114967404, 115015779, 115048450, 115065709, 20365350, 115114862, 3211466, 115179541, 115196336, 115229098, 115261472, 115295087,
+ 2129960, 115344240, 2162716, 16236556, 115393393, 115442546, 2343028, 115474443, 49086476, 115490818, 115507203, 115523615, 109215746, 115540851, 115622772,
+ 115703839, 115721077, 115753846, 901141, 2130807, 115818517, 2850847, 115835011, 32817161, 115851318, 8389496, 115884058, 115900427, 115916802, 115933222,
+ 115949595, 115983225, 116162562, 1114141, 116179834, 116228137, 4980767, 116244704, 116277270, 110412423, 116293663, 116310032, 116326410, 116342815, 116359174,
+ 116375602, 116408351, 116424714, 116441090, 116458007, 2195488, 116490728, 116523050, 116539423, 116555786, 116572219, 116604994, 116638581, 116670486, 116686879,
+ 116703254, 4964354, 116720507, 116801839, 116834326, 54657040, 51822598, 116850717, 116867964, 116916226, 79101990, 116933501, 116965388, 116982654, 6406160,
+ 117014554, 108658704, 117031718, 117063682, 117080074, 117096450, 17809446, 117112892, 117195647, 117342702, 117375005, 117391362, 46530588, 117407775, 117424138,
+ 50659334, 117440514, 117456907, 117473755, 2130522, 117506102, 117538818, 117555229, 75579394, 117572448, 117638016, 117686575, 117719671, 117752283, 19447829,
+ 117784607, 117801845, 117833730, 47120394, 117851009, 3244509, 117998466, 118063146, 118079533, 110674458, 118113155, 46088214, 118195076, 118243349, 2342950,
+ 1114118, 118259715, 118276183, 1114122, 118326149, 118456358, 118472720, 2195558, 118489142, 118521862, 18153478, 118538250, 31424541, 118554634, 118571639,
+ 118603842, 118636556, 118652959, 3309574, 118669378, 27623566, 7258142, 1228810, 118702173, 118752134, 118784021, 118801287, 118850440, 48136232, 118899593,
+ 2195506, 118947894, 118981514, 119014283, 119079820, 119128973, 119210015, 119226378, 110411842, 119242762, 114294805, 119259146, 5750796, 119275522, 119291923,
+ 119308309, 119325582, 119390234, 119406621, 119423003, 119455968, 119488564, 119521311, 119537702, 4161576, 119554959, 4964383, 119767042, 118669349, 17449001,
+ 119783462, 119800111, 116178946, 119832664, 119865647, 119898122, 119915127, 2196368, 119948177, 119997330, 120046005, 120078377, 45039618, 120095635, 93962252,
+ 120143884, 1949718, 120160695, 120193383, 120226095, 120258570, 115523615, 120635395, 120651783, 2670621, 120669077, 120799263, 7733291, 120815682, 120848395,
+ 120865686, 120914839, 120963992, 118243366, 111624194, 121012226, 44466186, 121028623, 46530576, 121045013, 99893270, 121061416, 121077798, 1114131, 121094154,
+ 121110530, 116228106, 52215830, 121127833, 121258906, 19480713, 121323532, 116228107, 121339933, 2196303, 121357211, 121454658, 121487372, 121503770, 121520212,
+ 121552952, 121585751, 2195895, 121634827, 121651212, 54460437, 121667605, 121684892, 121733262, 121765909, 121783197, 121865118, 121896987, 121929766, 2670623,
+ 121946118, 121963423, 122110880, 2195595, 2195895, 122176417, 122224666, 122241456, 122274722, 122306581, 122322987, 122356643, 122404876, 122421258, 122437653,
+ 122454948, 122503206, 119357545, 122519583, 122535957, 122552350, 122585119, 122601501, 1769474, 122618159, 122651557, 122683403, 2031628, 115589122, 122699787,
+ 122716162, 122732565, 27246604, 122749862, 122847234, 47546397, 122864551, 122913199, 122945552, 122961949, 122978306, 122994709, 121585730, 123012008, 123043850,
+ 123060656, 123093929, 123142175, 123158962, 123191318, 123208327, 123257346, 123290538, 123372385, 118243370, 123404298, 2998747, 13074444, 123420693, 17842235,
+ 123437112, 123469845, 123487147, 123585438, 123617911, 123650086, 1212432, 123666458, 123682828, 123699211, 48611340, 123716524, 123781152, 123813919, 123830293,
+ 123847563, 123912258, 123944970, 45613098, 123961803, 124011437, 124092437, 124108840, 122667034, 124126126, 124157990, 124174338, 121569301, 124190759, 124224119,
+ 118243340, 6619190, 124257199, 124321813, 116621343, 124338192, 31424523, 124354572, 45711362, 124371377, 124403724, 2113558, 124421040, 124666259, 34701468,
+ 66600998, 124715062, 124748721, 124780565, 124796968, 1114122, 55132179, 124814258, 51019807, 124928947, 107462687, 124961716, 125027253, 125075485, 125091852,
+ 125108246, 49496100, 125124639, 125141002, 125157392, 55721999, 125173770, 125190210, 125222933, 125239322, 2408479, 125255718, 125273014, 125337622, 125354000,
+ 125370406, 125386783, 125403146, 125419532, 125435910, 125452309, 125468684, 52609050, 125485082, 125501442, 125517834, 125534214, 125452329, 116162572, 125550651,
+ 125583799, 2195540, 111247362, 125617079, 125764536, 125812988, 24838154, 125845516, 112427018, 4980772, 125862841, 126009355, 126025743, 4161552, 2113567,
+ 126042530, 46514178, 126074918, 2113548, 126092218, 126156857, 126173643, 126223291, 126287910, 24838156, 118243370, 126304754, 2195970, 126353424, 126369803,
+ 46219266, 126386777, 126418970, 126435350, 2752528, 126451778, 126485436, 126567357, 126648363, 126682046, 126730271, 122667027, 47611910, 17006594, 124796954,
+ 126746640, 2801721, 126763967, 126796736, 126926955, 126960577, 119358402, 127025154, 109215754, 127042499, 2130355, 127091147, 8389572, 127139856, 127156229,
+ 127172646, 127189004, 127205405, 127221802, 127238791, 127288261, 127336464, 2031652, 127353798, 2621449, 127435211, 16269449, 127483942, 127500290, 20365322,
+ 127517639, 127681088, 52215846, 127713316, 47546389, 127729683, 127746050, 50135082, 127762500, 125583381, 127812063, 127844358, 127860757, 127877151, 127893523,
+ 127909927, 118243366, 127942696, 127959343, 127992120, 128024586, 128040981, 128057403, 128090122, 47546387, 128106527, 4980793, 128123848, 128204806, 128221203,
+ 128237580, 128254466, 128286786, 119242783, 128319509, 128335931, 128368746, 128451529, 128516634, 128548880, 128565258, 128582064, 99893264, 128615370, 128712706,
+ 128729312, 128762331, 24838163, 128794636, 128811034, 128827411, 128843792, 1785871, 128860176, 121045007, 128876976, 4964371, 24838155, 128909328, 128926456,
+ 128958688, 1212447, 128991270, 128761887, 129008587, 129139660, 129221288, 47546397, 129253386, 129270733, 129335298, 129351709, 129368121, 129384460, 129400842,
+ 129417237, 32849960, 129433619, 129450010, 129466399, 2326543, 129483211, 119358414, 129532128, 129565647, 129613931, 129647568, 129679389, 129695775, 129712154,
+ 129728524, 47284243, 129744950, 30588937, 129777703, 129811409, 129859611, 129892469, 129925552, 129957947, 129990743, 130040786, 130203674, 1982495, 130220098,
+ 130252810, 130269186, 130285589, 2195515, 130302931, 130334741, 884867, 130351144, 130367498, 130383891, 130400277, 130416680, 130433050, 78102594, 130449410,
+ 130466772, 130531350, 6193162, 130547771, 130580496, 6324250, 130596955, 125321237, 131006473, 131022985, 131039366, 81838195, 131056598, 2162710, 131334210,
+ 131367895, 131416076, 131432474, 1982485, 131449816, 131612681, 24969353, 131630041, 47611925, 131694613, 131711003, 131744059, 131777383, 8389594, 131810267,
+ 131875804, 72368134, 131908573, 2195888, 44302346, 132005904, 2129925, 8389598, 132022293, 132039581, 132121111, 132154335, 132203488, 2932788, 46530581,
+ 132252116, 2360289, 132285410, 132449251, 132498404, 10829853, 132579433, 132613093, 132711398, 132744060, 1114154, 132792362, 2850837, 132809172, 132841488,
+ 132857867, 1769500, 132874271, 132891509, 127893514, 132923404, 110232090, 4571138, 132939788, 132956166, 132972550, 132989387, 8389607, 133038099, 133055464,
+ 27623859, 133104617, 133284143, 1114148, 133317610, 133497777, 130285597, 133529681, 112427020, 133563371, 2162691, 2195515, 133627947, 133660694, 19267615,
+ 133678060, 108167180, 133742604, 48627738, 133759981, 133841729, 118145045, 133874670, 133955586, 133971994, 133988371, 134004767, 134021130, 62341136, 134037535,
+ 99893274, 52723750, 134053928, 124190722, 134071279, 134135824, 134152230, 134168608, 125583366, 134201346, 2506778, 82001932, 134218736, 134266891, 134283279,
+ 134299669, 901125, 134316910, 113115147, 134382009, 134430786, 134463556, 134513271, 47923237, 134546417, 134791199, 11059229, 126369820, 7389221, 134807554,
+ 134823942, 134841330, 2195669, 901160, 134905868, 134923251, 134938630, 134955048, 134971421, 134987797, 135004191, 6127642, 135021556, 135069780, 135102502,
+ 2162729, 2719760, 135118864, 135135242, 135151645, 135168002, 135184403, 24838181, 5308848, 3686402, 135201781, 135267318, 135299084, 135315466, 119358071,
+ 135332290, 135364629, 135381023, 135397433, 135413819, 135446604, 135479306, 135496695, 135561242, 135577610, 135594029, 135627768, 135709352, 135741459, 135757826,
+ 135774229, 135790679, 135840609, 93978643, 135872533, 135889913, 2195978, 135970882, 55377946, 136004055, 109166598, 110182835, 136036889, 2196389, 136102906,
+ 132661258, 136152059, 2195927, 136250364, 136332285, 136397369, 136429683, 136446089, 136462473, 9109641, 136478726, 136495125, 136511518, 116850714, 136544258,
+ 136561271, 136593495, 136643552, 136692171, 136741886, 136790054, 2196418, 8700927, 136806406, 136822815, 136840192, 136872160, 136905163, 118243357, 136953866,
+ 136970271, 136986848, 137019414, 122044428, 137035835, 137069569, 2195554, 137118722, 137249795, 137297926, 137314323, 137330700, 134479882, 2834867, 137347094,
+ 137364380, 117506102, 137412610, 131629087, 137429295, 20365318, 137461781, 137479036, 137527607, 137577476, 137642519, 137675781, 137757209, 51495363, 137822218,
+ 137838638, 137887782, 137904603, 27852810, 137936922, 2801706, 137954310, 138036231, 138101768, 136118331, 2408463, 138199071, 1982483, 138215434, 6374409,
+ 138232842, 138281995, 3211296, 138346522, 138363786, 138395674, 6455308, 138413068, 87539741, 138478605, 138544142, 138608666, 138626063, 123797525, 45531152,
+ 138674178, 73646109, 138691600, 34422914, 138788873, 69156996, 138806193, 138839057, 138887234, 138920978, 138985474, 139001898, 139018252, 139035667, 139084820,
+ 139132949, 139149388, 139182304, 128581663, 139214874, 139231319, 139281429, 139330582, 3473883, 139379147, 129826842, 139428315, 139460614, 126189634, 139478039,
+ 139526681, 139592635, 139657242, 115196952, 139674649, 139722754, 139740186, 139788347, 139821137, 139853836, 139870246, 17088643, 139887018, 139919382, 139935746,
+ 139952156, 139968514, 139984933, 2113572, 140002331, 140230678, 45907979, 140247519, 140279895, 140329102, 5325271, 140362030, 27607080, 140394584, 140428316,
+ 140461085, 140510117, 120668198, 140542018, 38125871, 140575774, 140607564, 140641311, 123797525, 140787796, 140820769, 140854304, 141001007, 128991253, 141033570,
+ 141066256, 47546379, 141082634, 141099010, 141115403, 141131807, 141148179, 141164583, 141197614, 141230111, 141246474, 1900556, 141262860, 141280289, 121077791,
+ 141312002, 141328424, 141344789, 141361183, 141378594, 141410343, 141443110, 141459458, 47546378, 141476899, 141541407, 107757589, 141557762, 141574775, 141606943,
+ 2408450, 141623338, 141639711, 141656074, 43237392, 141673508, 141770774, 141788197, 141836290, 3162131, 141852703, 126877707, 99893286, 141869068, 51593245,
+ 141885462, 141901836, 141115413, 141919270, 141983756, 142001173, 142050343, 142114875, 4341786, 142147821, 120258598, 142180362, 1949724, 142196738, 142213157,
+ 142229515, 142245919, 142262403, 9207817, 142279720, 142574633, 128106498, 142639106, 142655927, 142688287, 77709324, 142704756, 27705366, 142722090, 142820395,
+ 50937858, 142868506, 140247092, 142885932, 142934037, 142951307, 143016928, 143065098, 143081511, 124239893, 143114272, 102793242, 143148077, 143228930, 143245369,
+ 93978655, 122961951, 143261762, 143294688, 143327243, 143344523, 143410065, 143458323, 143475686, 119324738, 143507468, 114786314, 143524600, 143557068, 143590283,
+ 121864220, 143654918, 122667029, 143671726, 143720467, 127713282, 143736842, 143753237, 2195522, 143769622, 143785986, 143802378, 143819227, 87048198, 143852282,
+ 143884329, 143900677, 84967445, 143918126, 143982623, 143998992, 144015370, 144031746, 144048157, 24838160, 144064596, 144098351, 144146460, 2752569, 144163888,
+ 1114118, 144244748, 144262035, 144310284, 144326666, 144343061, 144359455, 144375824, 31424522, 112427010, 144392214, 144408592, 5832744, 144426033, 2031647,
+ 144507954, 144588802, 144606259, 27852810, 144655412, 144736258, 144753717, 72499223, 144802870, 144900102, 126369823, 57032716, 130269215, 144916506, 144932880,
+ 5718031, 144950327, 1769483, 144982319, 113115162, 145015864, 145080427, 145113103, 145129488, 145145862, 5177365, 145163321, 145293352, 55754778, 145309734,
+ 134299664, 145326082, 145342546, 111607824, 145376311, 145408084, 145441262, 6946822, 145473620, 145506330, 24838173, 145522698, 145539100, 145555494, 145571842,
+ 6193181, 145588984, 145621008, 145637386, 145653797, 145670146, 145686554, 145702914, 145719318, 145735711, 6701062, 146063495, 59375750, 146080827, 146260034,
+ 43384834, 146292746, 3228043, 146309179, 2195891, 146341899, 146358282, 109215760, 146374710, 10764345, 146408508, 146489363, 1785896, 52215810, 146505952,
+ 19038239, 146539581, 146604078, 146653615, 7389222, 146686793, 114393124, 113180710, 45039622, 146735106, 146751504, 146767903, 2162726, 146784715, 131629062,
+ 146834494, 4571148, 146981951, 147063702, 24838146, 147113024, 147210464, 147243062, 147275807, 147292198, 99893250, 147309633, 147390563, 3473413, 147423244,
+ 2195851, 147439853, 147472395, 147488780, 147505178, 119242754, 147521557, 147537951, 147554314, 147570690, 115654677, 147588162, 147652665, 147668994, 147685397,
+ 135790658, 147701823, 147734534, 147751759, 147784565, 147816460, 147833886, 79790092, 147865602, 3228739, 147883076, 148013515, 3227862, 148063301, 148111376,
+ 44285992, 148127969, 148160533, 148176983, 54296602, 148226507, 148275260, 148358214, 121339942, 148455903, 148488198, 30392323, 148504592, 47939605, 148521059,
+ 148554216, 148586527, 148602899, 148619739, 148653127, 148735048, 111149087, 148816784, 148849737, 148881429, 148897804, 50987034, 148914260, 148948042, 148979734,
+ 148996112, 116228124, 149012501, 149029294, 149078026, 149095499, 146767910, 149160018, 111280130, 149193241, 149259340, 149324877, 118292482, 149390414, 149471260,
+ 149487654, 149504012, 55869450, 149520405, 8389145, 149537871, 149635112, 149651462, 149667871, 55869450, 149684461, 130285606, 149717030, 149733397, 149749800,
+ 149766170, 149782987, 149831718, 149848091, 93978630, 59310086, 149880844, 50937866, 149897439, 149930287, 149963856, 150028304, 150044698, 150061068, 150077446,
+ 3850261, 150093840, 150110219, 2998704, 6701078, 150126594, 150143002, 17809410, 150160465, 150324306, 150389166, 150437907, 150454274, 150470694, 150487071,
+ 150503436, 7372810, 150519854, 150569427, 150619219, 150684756, 2195555, 19267610, 150732846, 150782382, 150832213, 4980778, 6373406, 150864982, 150914135,
+ 19447820, 2195931, 150962465, 150995399, 151044101, 151060492, 151076870, 151093269, 108298278, 151109642, 8388654, 151127128, 151175184, 1212442, 151192665,
+ 151487578, 5309531, 151634807, 151666698, 148636495, 151684188, 118882826, 151732234, 2195508, 151748644, 151764997, 19447836, 151781855, 151814166, 151830550,
+ 107429910, 151848028, 63816157, 151896101, 151912564, 28147741, 151929949, 152126558, 152174604, 4341779, 152192095, 52592652, 152256543, 7045132, 64765964,
+ 2129922, 152272936, 2998303, 152289301, 152305694, 152338437, 152354818, 116228134, 152371246, 152421472, 152487009, 152552388, 152600588, 2015348, 152616962,
+ 6701098, 2834903, 152633376, 152667234, 152715276, 5866232, 152732771, 152814596, 2195566, 152879114, 152896612, 152962149, 153010192, 153026598, 23855221,
+ 153042965, 153059344, 77709338, 153076015, 153108783, 153141254, 47923202, 153158758, 44351490, 153223222, 153257063, 153633896, 2359307, 153699433, 153747522,
+ 5177382, 153781354, 153862154, 2195689, 153878596, 153928811, 146767888, 153961580, 154043304, 154076269, 154109038, 4980741, 25560175, 154190338, 154222594,
+ 154238986, 9158799, 154256496, 154371185, 154453106, 154502259, 154567796, 153878839, 154697740, 154714118, 118243334, 154731637, 154895478, 154943504, 107462696,
+ 3866690, 6602778, 153191454, 154961015, 155010168, 114393126, 155041804, 155058202, 155074566, 126042127, 155092089, 116228102, 155403386, 155467839, 155500570,
+ 155516938, 2196313, 155533355, 7389221, 155567160, 155631675, 2326569, 24838149, 155664526, 155697999, 155729932, 155746320, 155762698, 155779103, 67059714,
+ 3212411, 155796604, 2408450, 155845757, 155926540, 145506342, 155943721, 155975699, 20365324, 141066242, 155992123, 156024842, 156041258, 2834656, 156057616,
+ 156074010, 115523613, 156090798, 156140670, 122683413, 156188684, 25559139, 156205102, 117900415, 125239324, 156255360, 156303362, 139478127, 156320044, 156353665,
+ 156435279, 24838159, 156467259, 156500110, 156532802, 156565949, 156599426, 4342893, 156663892, 156697731, 156746488, 156778517, 156794902, 156811696, 156845188,
+ 156943493, 156991509, 58802188, 157007874, 125796378, 13074472, 157025414, 1769487, 157106198, 157122626, 157155394, 131334251, 157188128, 1114114, 157221389,
+ 2523141, 157271175, 157435016, 5308904, 8994839, 157564968, 157581343, 157597753, 157614109, 11010057, 150536292, 157630474, 157646860, 2752548, 157663291,
+ 2196510, 157696116, 157712424, 157728790, 157745193, 157761538, 19447836, 157779081, 157827101, 7602187, 157844618, 158138500, 158154901, 31096962, 158188683,
+ 158416908, 158433291, 158449695, 8389772, 158466086, 7962655, 158482463, 150585451, 158499981, 149128334, 158548462, 158581039, 158613510, 72368168, 158629890,
+ 158646282, 45465603, 158663345, 158695450, 111460655, 158712975, 124796944, 4980774, 158844048, 158925400, 158958737, 159072693, 159105034, 145145858, 159121410,
+ 159137813, 128106512, 159155346, 159350810, 159367180, 159383583, 5177350, 159400239, 159432732, 46530562, 159449170, 159481858, 2196627, 159499412, 151520405,
+ 7307276, 159564950, 41582604, 159645708, 2850857, 159662096, 112787472, 4980746, 142245890, 25559124, 159678548, 45875206, 159711691, 159760413, 2113567,
+ 3686426, 159776778, 48545804, 159793211, 2195977, 159825922, 5079800, 159843479, 159891993, 159957412, 159989816, 47939615, 160023704, 160122009, 160170403,
+ 160202781, 160219174, 160235522, 160251910, 160268317, 160284674, 160301093, 160317556, 160333842, 60113026, 160350219, 6946847, 160367439, 160399414, 160432138,
+ 160448554, 160464908, 160481286, 160497676, 160514086, 160530470, 160546822, 160563219, 160579606, 155631618, 160597146, 160677900, 47939620, 160694274, 160710698,
+ 160727042, 4980741, 160743426, 160759834, 10829855, 2146363, 161236124, 31375497, 161284227, 134299783, 161300482, 2031658, 161318045, 161644546, 161662110,
+ 142245890, 161726485, 108707852, 161743521, 161793183, 1982474, 161825633, 161858720, 127680543, 161923112, 161939468, 161955878, 161972283, 2719754, 162004994,
+ 6455299, 162022561, 162152458, 162169263, 162202783, 5325314, 162235554, 125583398, 162299967, 162332688, 116162586, 162350243, 51658754, 162546852, 7733551,
+ 162611425, 162644008, 29900803, 162661541, 144621584, 8389798, 162710396, 162759127, 162792615, 110723074, 162840578, 116375766, 162857044, 162890920, 162938979,
+ 162972162, 17006621, 163004458, 163020815, 125796354, 152945099, 163038367, 47546389, 5309609, 163071146, 163202219, 163333292, 163381250, 163397661, 163414028,
+ 1114228, 163431597, 3212176, 125812738, 163529902, 163595439, 163627010, 163643823, 163676252, 163708944, 111198214, 163726512, 163856386, 2408474, 19447839,
+ 163873969, 4407599, 164020240, 59310101, 2195914, 164037810, 901129, 7733462, 164200458, 8389067, 2195670, 157155382, 164218035, 164364300, 164380682,
+ 125927430, 164397128, 3309574, 164462630, 164478988, 5947433, 5324876, 164495386, 164512948, 19447824, 164561433, 164626866, 164659729, 164692451, 164725623,
+ 164757588, 107462696, 164791477, 2130395, 164888616, 164904972, 164921370, 164937729, 1769512, 164955318, 165070007, 6373464, 165199893, 165216315, 19267683,
+ 49790992, 165249054, 165281891, 165314572, 165330955, 165347760, 165380530, 165414072, 165478431, 165494786, 7389213, 165512377, 27624000, 165658640, 165675046,
+ 165691867, 165724594, 165756956, 50249754, 165774522, 3850280, 165807291, 165855298, 165889212, 166053053, 5308558, 166215696, 116162570, 166232080, 154894362,
+ 166249662, 166346795, 115523610, 107462682, 129237028, 6455318, 166380735, 166543386, 3375120, 166559803, 166592983, 166626496, 166674442, 166691350, 51282347,
+ 166724801, 166805530, 166821890, 166838282, 48513053, 2719746, 166854677, 166871052, 165134362, 166887511, 166937794, 1769514, 166986947, 167051722, 167085252,
+ 1769478, 167445701, 167494854, 5308482, 167560391, 10829864, 4981960, 167624788, 167657482, 167673885, 167690266, 167707161, 167773385, 167821771, 167870474,
+ 167886877, 167904458, 167952468, 167985229, 46514207, 168018838, 19267641, 168067084, 167985209, 168083458, 168101067, 168133836, 168181791, 2196058, 168199373,
+ 168313045, 168345858, 10944535, 147243092, 42418182, 168379598, 168427744, 168461519, 168527056, 168641502, 6373518, 168690123, 168738826, 168755229, 168771610,
+ 168788398, 2147497, 2162698, 2195540, 168837614, 168231371, 168869909, 120979487, 168887505, 45023263, 168951839, 137102546, 168969427, 169280724, 169346261,
+ 169443465, 33620102, 169460950, 8602839, 8602840, 8602841, 169526490, 169623701, 33620083, 169657563, 169705766, 8389846, 169755868, 24838175, 169821343,
+ 169854173, 169902106, 169919710, 169967654, 117751810, 169984060, 170067113, 170099935, 2506768, 170148785, 170181836, 170231008, 8389857, 37437589, 170311695,
+ 170328080, 170344488, 46088230, 170360834, 170377226, 170393629, 27623454, 56131586, 170409986, 170426378, 170442781, 150913050, 170460386, 170591459, 170672369,
+ 170705025, 170737680, 170754059, 1982476, 170770514, 170803246, 170852404, 170885338, 170917995, 170951568, 170983511, 171032588, 171050212, 171099365, 2850822,
+ 171181286, 171279591, 115720504, 171328744, 171409434, 171425794, 171443433, 171491347, 55263234, 171507743, 1900570, 171525041, 171556923, 171589634, 81166347,
+ 171606046, 116375659, 1901004, 171640042, 171720705, 171737128, 171753503, 2131113, 171769922, 171802645, 171819030, 171835403, 42598875, 171851842, 171884570,
+ 171900934, 47923240, 171917767, 171967723, 2015261, 172016034, 13549579, 172048390, 172064774, 48513036, 172082412, 172459245, 19252462, 172524423, 172573209,
+ 172639471, 15073283, 172672240, 172769336, 172802080, 172836081, 20365314, 5177372, 172901618, 172967155, 173016308, 173080658, 173113832, 47939596, 173147381,
+ 173228792, 155631628, 173260831, 173277226, 173293590, 173309973, 173327606, 7356473, 173342749, 173359106, 19447834, 173375542, 173408266, 173424661, 173441108,
+ 119357877, 173475063, 173555925, 173588738, 173621378, 8389880, 173637655, 173654165, 8389881, 173688058, 173719608, 5309303, 173753595, 173801512, 173818703,
+ 173850639, 4980751, 173867020, 19252112, 173884668, 174015741, 174047238, 1900581, 174064075, 20365322, 162857019, 174112852, 116228134, 174146061, 174194747,
+ 79101981, 174227468, 3473419, 174245118, 174359703, 174408527, 174440458, 174456898, 145506335, 174489659, 174522409, 22478869, 174538854, 46350443, 6701058,
+ 174571562, 174587920, 13549606, 174605342, 174637058, 174653461, 135807007, 175015168, 175080705, 175146242, 175357954, 107447105, 175375619, 175439874, 175456293,
+ 6701084, 175472724, 175506692, 175571032, 5603364, 175603766, 45023248, 119357743, 175637765, 3227678, 7389194, 175702047, 175718883, 137379861, 175751184,
+ 175768566, 175801546, 175849484, 15351837, 175867142, 176047367, 176144440, 176177591, 176209979, 115179530, 176243881, 176275466, 139477623, 176291932, 176325040,
+ 176357809, 176390204, 176472085, 176488469, 2195759, 176504851, 2162707, 176522129, 176570452, 27246602, 176604424, 176734270, 176784649, 176816174, 176866570,
+ 176899339, 176997270, 177046796, 177094659, 1114115, 177111987, 2637840, 177144111, 1114133, 177177869, 31490050, 177259033, 177325326, 1933352, 177390863,
+ 49774604, 68583426, 177440016, 177586186, 177603857, 8389906, 177651796, 177684501, 177700880, 24838170, 177718547, 177767700, 177816439, 177848332, 147554330,
+ 177864764, 177946634, 177963037, 103284767, 177979829, 178012166, 178028575, 178044947, 56508536, 178061388, 178095381, 178291990, 178339862, 141459472, 178356513,
+ 134037544, 178389042, 178422667, 178488599, 178537752, 178602071, 178652441, 178782234, 178798608, 135184400, 133382166, 178814991, 901135, 178831663, 178864212,
+ 178896978, 3227704, 178929676, 178946058, 178962438, 2113573, 178979915, 179044411, 2196683, 179078426, 111607839, 179159071, 179175467, 179208276, 179241058,
+ 179275035, 179373340, 179504413, 118882363, 179651870, 179699734, 179716112, 2179112, 179733791, 179781651, 2195951, 108707842, 179799328, 179863773, 179897633,
+ 180028706, 170442754, 180077003, 131334746, 49905685, 3260475, 180126147, 2670614, 180158548, 6946826, 5325854, 180192547, 180273168, 179765305, 145506306,
+ 180290852, 180338690, 174424121, 180356296, 180387856, 180404264, 47546374, 180420620, 180436994, 115785757, 180454693, 3227872, 180520230, 180764729, 46530572,
+ 180781140, 121028619, 158253095, 180815143, 180929404, 180977676, 116228115, 5308705, 4980757, 180995368, 127713301, 181043206, 99893279, 181060905, 181142793,
+ 181174575, 181208362, 181257515, 181322282, 181338141, 181354508, 181371434, 181387286, 181403650, 181420072, 181436437, 181452812, 181469738, 181485583, 181501978,
+ 181518352, 119259193, 181535257, 181601580, 2195786, 181862973, 181895283, 181911684, 181928066, 181944329, 32637062, 181960734, 181993493, 182010776, 182059455,
+ 127909890, 182091816, 50872331, 182108262, 182140940, 4980778, 182157324, 4964373, 2261023, 182174749, 182222858, 182239238, 110133780, 182256458, 182305708,
+ 182370344, 182386754, 4964358, 182420781, 46530591, 182469145, 182535470, 44646441, 182584623, 182632470, 27607061, 182650160, 182846769, 47317021, 182912286,
+ 3850266, 182960182, 47415327, 182994123, 2195882, 183025693, 183042164, 183058473, 44171286, 183076146, 176734210, 183125299, 17220609, 183174452, 183403829,
+ 183566390, 45023242, 183599130, 180977666, 2196470, 183615918, 183664666, 183681067, 183715126, 183762975, 128090124, 183779359, 183795817, 7634960, 183829815,
+ 183944504, 184025613, 2113574, 184074256, 5177385, 184090655, 184107034, 55722003, 184124729, 114294805, 131334564, 7144289, 178880514, 184238082, 184255078,
+ 184287234, 184303654, 184320016, 11157520, 184336471, 184386874, 184435680, 122486843, 184483900, 184567099, 48676870, 184598831, 47088087, 184632636, 184680511,
+ 184713222, 1933318, 184730941, 184860698, 2195888, 184877581, 184926246, 124796930, 184942632, 184959005, 184975426, 185008431, 185041003, 185074424, 185107774,
+ 185237516, 185253926, 185270310, 2196303, 45711372, 185286740, 185319450, 2195522, 118882363, 884738, 185337151, 185401354, 185419072, 6455318, 15351850,
+ 185450527, 185466886, 185483314, 185517377, 185532438, 50266152, 185581570, 6897696, 1818626, 7389215, 185599298, 185729050, 185745467, 185778479, 185810970,
+ 20365341, 185827412, 185861443, 154943490, 185942026, 185958855, 186007568, 186023952, 186040341, 73531413, 186057159, 55033885, 186105962, 186189124, 186270155,
+ 186319296, 1114141, 186417994, 125583402, 186467653, 186597414, 27623727, 186615110, 124863663, 3244944, 186729799, 8389960, 170803259, 186826778, 170803660,
+ 186844489, 186893642, 115785757, 186959179, 187072983, 187106636, 187204941, 150569443, 6947931, 182960140, 187269162, 187285506, 22216730, 3309609, 187678742,
+ 187695241, 187711618, 187727901, 187744274, 2621450, 10993799, 187761999, 188055579, 188088811, 188121625, 188186861, 188219398, 188236355, 188268565, 188284969,
+ 47317011, 19252560, 188301913, 188335441, 188432415, 184926229, 188448770, 188465163, 188481538, 188497941, 148176962, 188515666, 188662063, 188695891, 188761428,
+ 188825681, 126599178, 188859733, 189007190, 189054997, 8389975, 59310082, 50937877, 189071376, 4980742, 189088680, 189120550, 25559124, 189136898, 2621461,
+ 901157, 189153318, 189169702, 189186079, 189202871, 189235202, 189251603, 122601484, 189268973, 189349948, 189431861, 189464578, 7307270, 189480986, 189498712,
+ 159481862, 150241311, 189546526, 129876050, 189579295, 49938438, 189596185, 110674885, 189662553, 189693994, 5342554, 189710346, 189728091, 189825058, 189941084,
+ 190038022, 190054402, 190070813, 190087184, 190103578, 190120411, 33112086, 190154077, 6701093, 190203230, 47611930, 190366658, 190399839, 190513164, 190529543,
+ 190545941, 128581658, 190562344, 190579535, 154714152, 190611487, 190627856, 190645057, 190676994, 143441958, 190693388, 180944995, 190711136, 3212297, 190775383,
+ 190825825, 190874978, 190939223, 190989667, 191053855, 2359298, 191071588, 2523158, 191135746, 191152184, 126287891, 132580697, 191184918, 123207746, 191201289,
+ 191217687, 9519113, 191234094, 191284581, 191546654, 2195510, 2195563, 191594512, 116015130, 130859023, 191612262, 2261002, 191677799, 112476186, 125796383,
+ 191743336, 191857669, 191938571, 57032726, 191954960, 58769429, 191972480, 192021865, 192120170, 192217160, 192284011, 192365932, 192463760, 142950459, 128843802,
+ 192496076, 120979487, 1212428, 192529773, 66928656, 192578926, 192626728, 192643103, 192659883, 192693615, 2998308, 192759152, 119570472, 192807644, 192839739,
+ 192872474, 127795503, 192888858, 192905222, 192921621, 192938012, 108167208, 192955761, 2408476, 193152370, 136740892, 1769482, 193233821, 5309811, 2195931,
+ 193316040, 128843807, 110134644, 193347668, 193381749, 8390006, 182288475, 193447287, 2015260, 193529208, 193593363, 2523172, 193610648, 193660281, 193709434,
+ 193790036, 113115165, 193824123, 193888284, 19267606, 2621459, 111214649, 49496066, 193904943, 2179103, 193937468, 194019435, 194053330, 194084890, 2113547,
+ 194102474, 99893258, 194150402, 194166805, 8389038, 194183178, 194200956, 194266493, 128172042, 194315339, 194379782, 194396648, 27344898, 194428944, 194445943,
+ 194478092, 194494474, 194510869, 126599180, 194527298, 194561406, 131334635, 194757608, 4980764, 46514182, 194807167, 2326534, 194889088, 131432479, 195052929,
+ 195102082, 118292511, 195166685, 8388695, 128581654, 195199007, 192479235, 195216682, 116850709, 195264564, 884776, 195298691, 195446148, 170999892, 195511685,
+ 195559476, 195593606, 195657749, 195674114, 195690507, 141459487, 195707884, 195772447, 195788884, 195821584, 195838061, 195872135, 195903500, 195919874, 118685717,
+ 195936286, 27852802, 195969043, 195985439, 46120998, 196002710, 120602665, 196051013, 196084144, 196116913, 119997330, 129237032, 196149270, 3129375, 196165740,
+ 196198459, 196231189, 196247618, 196280423, 196363656, 196396219, 180600871, 196445577, 196575291, 196608012, 5866526, 196625438, 137052172, 196657236, 196691338,
+ 196756875, 5799993, 196804637, 196820994, 20365323, 110411860, 196837468, 1933317, 196871564, 93978636, 196952586, 137379846, 196984919, 197034043, 112608341,
+ 197068173, 146456605, 197182862, 197247007, 197263389, 126599184, 1900565, 197279765, 197296210, 197328912, 197345295, 2801686, 128843817, 197804169, 197820531,
+ 197836934, 197853319, 197869698, 197885961, 197902467, 197918722, 17432586, 197936528, 198231441, 198295567, 198311957, 149815327, 198328358, 1769510, 198346130,
+ 198426650, 198443037, 189202463, 198459418, 198475792, 198492170, 198508575, 198524934, 198541362, 198575492, 116228117, 2850828, 198641043, 198721562, 1114149,
+ 7307302, 198737936, 198754404, 198788500, 198852624, 2801692, 198869013, 198885398, 198901772, 198918368, 198950943, 194691506, 198968725, 199016464, 199032838,
+ 199049237, 7307280, 128892930, 199066513, 199115182, 45908006, 199163914, 33390839, 199181718, 42434579, 2539560, 199327756, 199344134, 199360543, 116376154,
+ 199376980, 199409706, 199427479, 199508049, 199542168, 199590888, 8389522, 7143895, 199639106, 124272706, 199673241, 133660698, 199737370, 199753743, 128974870,
+ 199771546, 199868641, 199902377, 29622287, 199933974, 199951375, 199999526, 200015874, 200033249, 200066459, 200130582, 200148380, 200196530, 200228914, 200262503,
+ 200295837, 200344990, 149569538, 200376404, 200409522, 168722463, 200442288, 200476063, 7389213, 200556903, 126599184, 200590587, 62341132, 200638564, 200672150,
+ 171000679, 200720396, 200736825, 46514207, 200753584, 200786354, 200818830, 2326636, 200851458, 4964374, 200867842, 1966106, 200885664, 201032725, 1918152,
+ 201080937, 201115041, 933890, 201162773, 201179228, 201213257, 201261143, 5308498, 201311650, 201360377, 201441763, 201475491, 201555978, 122503189, 201572390,
+ 3850242, 201589929, 126763609, 201622264, 201655716, 201835941, 201933332, 201982386, 202014751, 125812738, 202031106, 202047498, 2719756, 202063884, 49496090,
+ 202081702, 202163623, 2261034, 202309648, 3309606, 202326082, 202360232, 202440714, 202458537, 202490703, 202522645, 127795266, 202539038, 202573226, 8390059,
+ 202687916, 202768687, 202802605, 115523610, 202851758, 202999215, 203080171, 203112494, 2196368, 203162280, 2342918, 203195824, 203425201, 8389011, 203572658,
+ 2129986, 203638195, 203703732, 203752885, 51871760, 203818422, 203867575, 204064184, 8388876, 204144642, 52625427, 204162489, 204210434, 204244410, 2195947,
+ 204374022, 5177350, 5325759, 204391627, 204424635, 204571586, 171835402, 128581642, 204603404, 204619781, 103743519, 204636219, 204668957, 27852802, 204685343,
+ 204702682, 17448976, 204751377, 204783632, 204800042, 17006634, 204817852, 204866448, 204898341, 204914719, 204931084, 2801669, 204947468, 204963956, 204980657,
+ 131760131, 131891205, 205014461, 27623508, 205063614, 24281227, 2342928, 19464221, 205193292, 47611942, 205227455, 205424064, 205471760, 135397397, 205489601,
+ 205521743, 2196058, 205555138, 205602818, 205619210, 44531718, 205636184, 205668364, 205684960, 205717535, 205733972, 205766694, 205783056, 150110250, 205800899,
+ 133709852, 205848602, 205865392, 128892934, 77250562, 205897759, 205915075, 185810982, 5309892, 205964741, 206210452, 3178498, 118030420, 206276038, 206325191,
+ 206667925, 206702024, 206799251, 206848149, 206880901, 20299908, 164036739, 206913595, 206947785, 207012143, 27852819, 2932835, 207046090, 207192129, 8389145,
+ 27852840, 207241262, 59310101, 207291851, 207488055, 180602316, 118883789, 207520178, 207553998, 207650875, 151715871, 207685071, 8389461, 207782996, 207831800,
+ 207865296, 207962142, 194510858, 207994882, 208012411, 208044098, 208076838, 208093186, 2670598, 208109583, 208125964, 128892954, 208142348, 208158730, 17006598,
+ 208175164, 208258513, 208307666, 208453662, 208486402, 65896458, 208503655, 2342924, 208537043, 208585007, 148602890, 208618384, 208651732, 208700885, 208830495,
+ 121077779, 208848342, 208896021, 46530600, 208912422, 45498380, 208930121, 208979415, 209043477, 152305806, 209061208, 209109924, 122683414, 209158228, 209190994,
+ 209224703, 209272863, 209289517, 152354832, 184926239, 209323480, 184713256, 209420310, 113229840, 3588856, 209437132, 209469466, 209486671, 113229864, 209520089,
+ 209748459, 49791007, 209780796, 209864154, 209946075, 8175639, 46219270, 199492441, 210026527, 210042882, 1785875, 210059286, 115294210, 210075703, 210141200,
+ 128991242, 172835211, 210157574, 128958514, 210174051, 210206735, 1785878, 210224604, 183975938, 210273310, 2359308, 29261862, 210305067, 210337821, 29902301,
+ 210355678, 210469167, 210501642, 210518018, 132857858, 204537867, 210534421, 210550810, 210567184, 210583567, 42598832, 210601240, 210665532, 210747485, 210796603,
+ 210830427, 210862118, 210878767, 210911709, 210945503, 211058714, 211075074, 211091498, 211107880, 7307283, 211124331, 110249440, 211157051, 2195680, 211189825,
+ 17809423, 29769759, 211240417, 211355106, 211551715, 36241545, 211615911, 8603108, 8603109, 211665602, 211714197, 211747924, 211796945, 133414950, 211845163,
+ 211878795, 2195508, 130285574, 211943426, 211961063, 133414943, 155795485, 212009197, 169787430, 45023258, 212043238, 212090891, 124862927, 212108775, 5505062,
+ 212256232, 212304871, 27852806, 212353026, 212369434, 27852831, 133677084, 154797545, 212385813, 24297531, 212402635, 212452842, 212600299, 212631574, 212664351,
+ 212680706, 141295642, 212698604, 212795423, 135741478, 212811788, 212828186, 212844550, 212860930, 115179546, 212877314, 45465626, 212895213, 212959535, 189251603,
+ 212992010, 139460627, 213009291, 123371530, 213075438, 213188646, 213206360, 31424515, 213255663, 213320127, 122667039, 116703263, 30392342, 4161552, 213353968,
+ 213598274, 213630986, 119226389, 213647426, 2359730, 213680431, 213712934, 213730716, 213778864, 19267595, 213811211, 213828927, 213893160, 118243334, 213909526,
+ 146653196, 213926315, 213958663, 205520927, 200556566, 213975062, 213991436, 20365338, 214009329, 2621478, 214040616, 186040332, 214056972, 214073360, 133611523,
+ 214091250, 214286429, 2195759, 214335630, 214368275, 48676886, 214385240, 214418931, 4571176, 214450284, 214483044, 214516167, 214564951, 2130205, 214615209,
+ 214646805, 214663180, 214679594, 2162728, 5325275, 214697460, 214746613, 45711400, 214794252, 214810650, 214827915, 215156215, 215269392, 215285770, 215302175,
+ 215319440, 4980772, 215352186, 215400919, 215433218, 215449626, 215466015, 215482425, 2195693, 215499671, 215547925, 215564319, 19267603, 6422559, 191053827,
+ 215582200, 215745474, 215777318, 10829862, 215794143, 120094749, 215826434, 51068939, 215843118, 47546383, 215875596, 5292061, 215893347, 215957506, 8390121,
+ 180764712, 215974735, 216006672, 118243354, 216023082, 193134618, 216040953, 216122874, 216203739, 7734537, 160760247, 216237563, 216285220, 216301570, 67043338,
+ 216317968, 216334378, 216351152, 216384418, 216417788, 216450557, 216596564, 216630241, 216662031, 216679247, 216712702, 216776716, 2801674, 216793104, 165330986,
+ 216809488, 197328922, 216825872, 216842255, 216858646, 216875440, 216909311, 217219103, 217235482, 217251859, 160579610, 217268761, 217333779, 217350165, 217366540,
+ 5292058, 141000720, 115179549, 217384448, 55443466, 217497692, 217530406, 217546783, 217563146, 137854988, 217579535, 217595906, 217612309, 217628759, 217677911,
+ 5718042, 217727078, 217759746, 46219283, 217776147, 217792549, 217808901, 2719775, 217825328, 217874474, 217890856, 93945894, 217907211, 217923624, 152272906,
+ 217940025, 217956392, 217972774, 93945862, 217989139, 165134374, 218005558, 218038287, 218054682, 218071052, 217972742, 6455317, 218088961, 218152966, 152272915,
+ 218169356, 110592012, 218185738, 3473450, 218202789, 218267658, 218284945, 218333250, 195592198, 218366888, 218398766, 2129959, 218448302, 218497132, 217366530,
+ 218529811, 218546202, 218562576, 5292060, 218579028, 218611738, 149094412, 218628149, 218662402, 218742806, 140607564, 218759180, 6946837, 116228136, 218775583,
+ 93945885, 218793475, 218873960, 218923010, 218939430, 47120422, 208994783, 218957316, 118652959, 219004964, 219021331, 217301014, 219037736, 219054539, 219103314,
+ 219136432, 219168827, 219201592, 219234316, 219250709, 219267098, 219283472, 219299897, 3457055, 219317765, 219416070, 219463711, 219480085, 219496479, 126763442,
+ 219512834, 219529273, 3850252, 219545628, 219561995, 219578370, 49774618, 219594763, 219611147, 219627532, 51036181, 219645447, 219725836, 219742432, 17006599,
+ 47317003, 219775042, 219807754, 219824975, 219856922, 129957931, 219873296, 219889669, 191053855, 219906060, 25559138, 219923976, 220037122, 220053546, 182386690,
+ 220069898, 218759180, 220086702, 158253735, 220136969, 220267025, 130203667, 220300810, 220348454, 119996846, 220364821, 8389054, 220382731, 2197004, 220496398,
+ 220528700, 220612109, 2195951, 220742393, 220774703, 220807190, 5309892, 220824399, 220857870, 220906802, 220954640, 220971046, 220987408, 116228138, 158744607,
+ 221003786, 221020219, 221053387, 221102106, 221118479, 118883161, 221136399, 137445407, 221233164, 55033882, 213778434, 221249538, 221266340, 221298710, 221315074,
+ 208896015, 205946902, 99516447, 137052162, 221331487, 221347894, 221382131, 46219300, 221414928, 221560842, 5309969, 221577232, 221593629, 221610020, 2032423,
+ 221626384, 2196746, 5537830, 221644306, 221692849, 221724683, 221741068, 221757461, 221773840, 22216733, 221790702, 32849932, 221824531, 221906452, 221954177,
+ 5308653, 221986945, 222019726, 222052494, 44351526, 222086677, 222299670, 222332439, 222396456, 222413793, 47939600, 2196480, 222446056, 222478348, 222494722,
+ 111280154, 62341122, 222807577, 222953951, 222986252, 223004186, 223051860, 223084546, 223101559, 223133718, 223150146, 223182867, 52215824, 223200795, 48070675,
+ 223282323, 223315195, 223364034, 223396828, 178356226, 223430172, 223544861, 223608848, 4751376, 195690506, 223626782, 223674384, 2801693, 223690792, 223707162,
+ 116375611, 45039638, 112607291, 223724429, 116228102, 223806414, 25559479, 223838234, 205881375, 223854608, 223871005, 223887391, 223903968, 1196063, 223938079,
+ 224018491, 44302374, 191905897, 224051266, 224084505, 224149975, 224182282, 132792362, 2179083, 5308475, 224200224, 224362558, 224411686, 224428068, 224444431,
+ 224461024, 224493604, 224509967, 112738326, 189202442, 224526766, 130285587, 224577057, 224608272, 224624666, 224641035, 224657420, 224673798, 224690217, 224706562,
+ 3145739, 224723028, 224755750, 224772127, 126599183, 193314854, 224790050, 224839203, 224886800, 224903183, 224919578, 224935952, 50511893, 216875855, 224953167,
+ 224985098, 225001474, 225018665, 225052196, 8390181, 134037520, 225116191, 225132587, 225166681, 225198998, 225248806, 225313768, 4980767, 225363495, 97435660,
+ 225427472, 225444064, 225476629, 225494568, 225560074, 225607718, 225624494, 225673232, 1753103, 225689622, 225705996, 225722836, 225755439, 225789481, 225935453,
+ 225985664, 226033683, 226050070, 202014751, 166936578, 226066891, 226115605, 118521896, 118178846, 226133546, 226214933, 226263947, 226328642, 226362923, 10829826,
+ 226476174, 226508884, 226541624, 226574402, 2129951, 226608303, 226640331, 47546410, 226690604, 226721813, 56311824, 226739757, 226787394, 226820108, 226836518,
+ 48676902, 226854446, 226902026, 3178517, 226918431, 226934901, 226967618, 227001903, 2197040, 227065962, 227147816, 227164599, 227198513, 122110220, 227460658,
+ 227524638, 227557378, 227573842, 227606571, 227639327, 1769491, 227657267, 5603368, 227722804, 227770390, 227787055, 227821109, 227901442, 227918286, 45465610,
+ 227967494, 228032522, 228048917, 228066123, 116376012, 228131118, 228163586, 228179989, 78905365, 228196373, 228212767, 228229136, 228245514, 135594029, 46497794,
+ 228262425, 228327455, 228343814, 228360251, 116376074, 228394550, 228442143, 228458498, 228475415, 228507714, 228541408, 228589580, 228605962, 228622775, 228655125,
+ 228671519, 228687891, 228704268, 228721079, 228753430, 156434463, 31424518, 228771383, 228851731, 228868118, 228884939, 228933658, 228950047, 228966402, 228982805,
+ 228999234, 229033528, 229097931, 229146655, 229163019, 229179394, 229195832, 229228610, 229262905, 116228103, 19251239, 229361210, 93978640, 206176294, 229410363,
+ 22216715, 10027669, 8603196, 229606603, 229639741, 2195977, 3473437, 1212437, 229738046, 4980773, 229802000, 88948762, 229819967, 229869120, 229949446,
+ 147013653, 229965890, 99893279, 229998623, 1196043, 121339907, 2113576, 230016577, 230131266, 230162437, 230178825, 67420189, 230195485, 230227997, 230244364,
+ 1949737, 230261195, 230311491, 42434562, 230457384, 129400870, 230473730, 230490219, 230522911, 230540868, 25559399, 230604831, 44466195, 230622789, 135643176,
+ 230688326, 230769099, 2195486, 153191209, 125583370, 140247124, 230817794, 230835121, 53641219, 231309348, 231325736, 9207845, 231343688, 231671369, 125927540,
+ 231751785, 15007745, 231786058, 224772112, 231899615, 231933515, 25559472, 231982668, 232030237, 216776720, 232046658, 74072080, 232079444, 1900554, 232112171,
+ 232144961, 232195661, 232243307, 232276034, 1769493, 232310350, 4980739, 232358191, 232392271, 232440991, 232474192, 42598888, 232554733, 232587291, 108315095,
+ 232621649, 148996127, 232767725, 4980743, 232800258, 232816662, 27852816, 2326530, 232833046, 232849439, 1114138, 110133313, 232867410, 232915028, 232947819,
+ 232982099, 233047636, 233145941, 233195094, 48676885, 29900821, 233260631, 233324574, 233357396, 233390508, 233456048, 147833886, 233488471, 233539160, 233619499,
+ 233652290, 233685004, 233701665, 233734602, 6324226, 233768537, 233816593, 233850458, 84934666, 233883227, 234047068, 234127426, 234161757, 49790978, 234210910,
+ 234307596, 1982502, 234325599, 234438668, 195264514, 234456672, 234636897, 234717268, 234750406, 234782736, 234799146, 234815920, 234848690, 127909890, 234881045,
+ 234897420, 78807066, 234913820, 234930235, 77250600, 234962946, 234979368, 2326566, 234996138, 235028492, 24838182, 235044951, 235094022, 235110422, 235126800,
+ 235143183, 235159651, 235193260, 235257858, 235274259, 235290640, 235307018, 119357539, 235323408, 235339795, 235356172, 235372550, 235388987, 235422225, 55869462,
+ 235456098, 56311820, 216727590, 235618306, 235634714, 51658771, 8390243, 235651108, 235667471, 235684299, 235734628, 235880494, 27246630, 235930179, 235962399,
+ 235978758, 235995155, 236011536, 3473423, 5309352, 236027963, 236060682, 236077085, 56721434, 236093469, 218415116, 153944079, 236109876, 236142630, 236158978,
+ 144048170, 236175390, 236208147, 236224533, 236242533, 236290074, 236306491, 236339202, 47546425, 236356043, 236405207, 236437975, 236470274, 17154088, 236486682,
+ 22888479, 236503071, 3473465, 236519532, 236552204, 180699157, 236570214, 236701287, 150241292, 236750440, 176504834, 68550668, 236815216, 236863938, 236896262,
+ 236912661, 236929026, 236945423, 236961814, 170344484, 236979817, 237045354, 237241963, 110723094, 237356652, 237471208, 237519702, 237569645, 8389883, 237651182,
+ 237682772, 237717102, 124796959, 150241316, 237782639, 44613670, 237830991, 121339914, 237864560, 37439089, 238141499, 238175318, 165134365, 238223362, 6537323,
+ 238240017, 150241282, 238272550, 238288955, 238321674, 140247094, 238339698, 238519923, 157220880, 184042073, 238585460, 238665833, 2195537, 238698553, 238714882,
+ 2195555, 238732151, 238764072, 173850655, 1114131, 238780895, 238813227, 238845954, 144048166, 238862573, 238895141, 238911500, 1212422, 238928196, 238978677,
+ 239109750, 239157273, 239191671, 239257208, 239321148, 73531432, 239404665, 239452697, 2129959, 177963014, 239518297, 239551416, 239600159, 239649961, 93978664,
+ 239681620, 239715962, 136740892, 2130767, 239847035, 239910950, 163545142, 239928956, 179814481, 239976460, 239993346, 240025621, 240042023, 240075512, 240107601,
+ 240140304, 240156896, 240189442, 121110540, 240206349, 240255083, 48627750, 240289405, 240567934, 130285578, 240682623, 240780928, 240828418, 146456604, 240845103,
+ 240879233, 6374746, 240943592, 240977536, 154042671, 204374045, 241025108, 241058016, 241092226, 241157763, 241223300, 2195927, 112936105, 241352716, 241369098,
+ 150913053, 241385902, 241434650, 121045011, 241452207, 45056002, 241485445, 141819944, 241582106, 241598466, 241615479, 241647632, 241664019, 116228118, 241680406,
+ 175669250, 241696849, 125927462, 241730030, 241762315, 241778700, 241795093, 241811487, 241827859, 2523138, 241844308, 29622310, 241878662, 241942540, 81166346,
+ 241959966, 241992693, 2196591, 242057226, 170999867, 242075271, 242188356, 242238358, 242286630, 241664015, 242303039, 242337416, 133677084, 242384898, 242401382,
+ 242434090, 242450444, 242466854, 2359302, 242483210, 2195519, 242499594, 242516257, 50659330, 242550409, 242647050, 4980765, 242665098, 242795720, 242828939,
+ 242894099, 242943176, 119799864, 242976396, 243205773, 2998288, 243368239, 3211369, 243400742, 243417126, 24838160, 243435150, 243499037, 243515521, 243549839,
+ 243597742, 94109722, 99893269, 243647610, 5488642, 3211363, 243712142, 243744875, 243778449, 1818630, 233193478, 162791446, 243828368, 243925029, 243941392,
+ 128843802, 109215775, 243959441, 244023298, 244039706, 244056130, 244089741, 244170764, 7389210, 152256543, 244188818, 198328322, 244334630, 244351035, 244383770,
+ 5325232, 244401811, 244482091, 118636554, 94109722, 244515703, 244547650, 244582036, 244680341, 244744274, 244777878, 244827798, 244875276, 244891650, 1933338,
+ 244909150, 6619278, 244957200, 244973578, 24838186, 244990415, 245022761, 118883789, 245040791, 245237400, 124862573, 245301357, 2326540, 245335705, 55853082,
+ 245384858, 133414933, 245497902, 245547046, 167706656, 245565083, 7389205, 2195729, 245663388, 245760029, 8390301, 245778078, 48627743, 245841932, 245859113,
+ 245892504, 245940262, 1982505, 245958303, 246120942, 8388654, 246153519, 246186527, 246236246, 246284300, 246300698, 3702786, 246318412, 77250562, 246416256,
+ 246466208, 117751839, 246498167, 246530054, 246546453, 246562832, 2359312, 246579233, 246628363, 45023244, 246646058, 246694347, 45023234, 246743947, 246810065,
+ 246857770, 246874154, 144048159, 246890536, 246906946, 246941345, 6373665, 247005292, 155762726, 247038482, 247154338, 247251903, 49479708, 247285411, 54820875,
+ 6619188, 247350948, 247529923, 247562542, 247595046, 247611695, 247644189, 247660598, 247693333, 247710560, 52215824, 247776194, 229965834, 247808021, 247824406,
+ 247840779, 147013663, 247858853, 248039078, 193200144, 248086948, 180174864, 248119755, 248168887, 248201228, 176504858, 248217684, 248252071, 125583382, 143507458,
+ 248414235, 248447005, 248463391, 248479750, 248496134, 248512524, 120094731, 49479695, 248530600, 248610828, 111067138, 248628694, 248678057, 248791059, 38125634,
+ 248807446, 248823846, 248840208, 107757587, 248857801, 248906187, 248956501, 249005738, 23380244, 234962946, 249120427, 249200642, 249218732, 249266186, 1769488,
+ 249282562, 159760394, 249298954, 149815327, 249317037, 249610813, 105463939, 249644718, 249708556, 1114228, 249724940, 249741338, 7389191, 249757698, 55279622,
+ 249775791, 135643138, 249890480, 250020098, 250052738, 8603313, 250069015, 9912469, 250085402, 113229845, 250102195, 5310130, 250136243, 250200665, 241991706,
+ 250232878, 250282089, 250314771, 250331174, 250347532, 200556570, 250364392, 250396909, 10829850, 250431156, 250512207, 250545226, 145506320, 250576915, 250593296,
+ 2801679, 250609771, 250644149, 250709686, 250906295, 250970128, 126287909, 121585676, 250986534, 251002882, 251019346, 251052119, 251101487, 251133971, 234831938,
+ 251150417, 251183116, 251199514, 251216304, 5177355, 251249320, 251281437, 251297794, 251314195, 251330581, 52215844, 251348136, 251396106, 5865511, 251414200,
+ 251494419, 251510786, 3178534, 251528889, 6701061, 251609520, 251643578, 251691107, 251725499, 251789328, 135184410, 3309584, 251805762, 251840188, 52215848,
+ 251986832, 252018776, 252051475, 252067862, 252084226, 252100646, 3309570, 252117471, 112754726, 252151485, 252233406, 131629087, 252282300, 252331711, 136019974,
+ 252428389, 252461094, 65912838, 92454914, 252478548, 252527518, 252561088, 252659393, 252706847, 79101988, 253132809, 253150163, 14745603, 253181993, 253198377,
+ 253214723, 63864963, 253232835, 193445890, 253493291, 153190499, 6455298, 253526863, 253560516, 118882607, 253624412, 253658821, 253756437, 46088213, 175849503,
+ 253806278, 253920967, 125583391, 253984863, 254035656, 254116747, 254181890, 2342931, 254215881, 254263317, 119128066, 254281418, 254379218, 254410793, 254427148,
+ 254443530, 192938012, 254461081, 254509084, 254525582, 254558220, 254574602, 254592009, 51838978, 147063272, 254623756, 229965839, 254641867, 3915842, 254738468,
+ 47022099, 254754831, 244170768, 254771231, 128155676, 254789324, 255016969, 255033481, 255049944, 255098886, 255115293, 255133389, 255182542, 255394005, 255426914,
+ 255459460, 3309578, 255475718, 255492125, 20365353, 43237405, 255510223, 169377801, 255542992, 255590409, 29163657, 255608332, 142245926, 255639589, 255655974,
+ 2197201, 255672357, 107757684, 29605907, 255688711, 255705107, 901177, 2523173, 38879269, 255721477, 255737868, 37355651, 255754247, 29376531, 255772370,
+ 255934753, 255968979, 256032784, 116228122, 234848296, 256050017, 256081942, 18677802, 256100052, 256147482, 159760413, 256165589, 256493270, 256589855, 256606218,
+ 256622613, 256639016, 115343388, 256655419, 256689879, 256787721, 256819240, 49791002, 256835610, 256853720, 256901146, 256917588, 256950288, 118884057, 256968410,
+ 257048617, 257064972, 1818662, 257081774, 257130638, 57032732, 257164425, 132776362, 257212428, 257229281, 257277954, 257294339, 257311152, 2197211, 257343594,
+ 6619243, 257425854, 257492180, 188761820, 2195732, 113247241, 109215754, 257556526, 6620329, 257606392, 257640157, 109215746, 257703938, 132155102, 257721651,
+ 257769558, 257802322, 257835294, 257884162, 257900554, 236011551, 2605072, 257917015, 113115146, 257966172, 258000607, 258180832, 258277392, 258293779, 121094156,
+ 258311905, 258408463, 258424834, 258441235, 258457631, 2801705, 258474093, 1785858, 17448976, 258506773, 258523148, 180977674, 258541282, 158253166, 258672355,
+ 258770553, 2261023, 258818507, 258867302, 258901732, 258965514, 1933354, 258982901, 19251307, 259047453, 259063820, 259081957, 259129803, 2179084, 259178929,
+ 259211793, 259244063, 259260418, 115818515, 259278566, 259409639, 259473697, 259506218, 259522636, 259555631, 137101362, 259589864, 259671785, 259735618, 141819942,
+ 259769191, 259801095, 259817503, 259833858, 115818517, 259850347, 259883293, 259916235, 259964984, 259997762, 251346960, 260030474, 8390378, 260047761, 160760943,
+ 119357506, 260097771, 260128852, 260163308, 260441837, 260620297, 24969353, 260636710, 260653115, 137101795, 260686299, 260720306, 260751370, 260767783, 195215398,
+ 260801010, 260851438, 260981711, 261029916, 261046310, 261063102, 261129967, 219186185, 261195504, 117506107, 261226546, 261259285, 261276540, 261325792, 261373958,
+ 261392113, 261455915, 261488659, 261505061, 132432729, 261521454, 123912481, 261570598, 261586956, 172836594, 261605107, 261701672, 261718032, 261734440, 3178502,
+ 261750794, 261768011, 2195916, 261832735, 147652646, 261849768, 261881884, 261898256, 261914655, 6374569, 261931496, 261964683, 262030159, 262062099, 262078501,
+ 108707852, 262094913, 262144471, 6438922, 46514186, 262177782, 262209567, 262225922, 262243601, 262291522, 262325216, 165134367, 228245525, 262373428, 262407924,
+ 262473461, 262521291, 262570831, 226050074, 262604534, 262784759, 262897666, 262914105, 182386719, 262931305, 262995994, 263014136, 189252018, 263096057, 25560826,
+ 263159819, 263176194, 2801685, 263194363, 263241739, 263258114, 218841109, 123273254, 27607052, 263276284, 2162729, 263341821, 263389190, 263405590, 263422599,
+ 263471106, 263487514, 17006613, 263503903, 158744614, 263520936, 131335337, 263553034, 119226397, 263571001, 263669502, 263815305, 18661510, 141819906, 263831564,
+ 263847946, 49938444, 263866111, 84738090, 263915264, 264094543, 264126480, 264142886, 264159248, 2342954, 7372836, 264175632, 6374509, 264192084, 264224810,
+ 264242566, 264306747, 264339540, 264372264, 264388629, 264405467, 264437779, 5865511, 264454155, 264242070, 264470550, 264486948, 264503302, 264519711, 264536083,
+ 264553368, 7634984, 264603393, 264650783, 136183810, 264668930, 264734252, 264765499, 2195970, 264799390, 128892968, 264864891, 264896524, 264912917, 264929306,
+ 264946096, 182059027, 264978453, 264994832, 265011250, 171458591, 265043987, 265060374, 265076762, 204587024, 43532309, 265453610, 265469993, 265486357, 7602214,
+ 265502722, 17809414, 265520900, 265682984, 265699330, 173850662, 265716648, 4964362, 265748783, 265781258, 265797651, 265814019, 2359332, 265830402, 132481458,
+ 24838175, 2867240, 265848581, 265912387, 265994281, 266010626, 163020838, 2834531, 266027551, 2670613, 266076182, 53706793, 266094342, 54460447, 266209031,
+ 266258184, 266356489, 266452994, 266469382, 266486289, 266518567, 266551302, 266567711, 266584301, 2195933, 1769501, 266618634, 200212486, 266716939, 266797913,
+ 35799080, 3309608, 266831628, 250298374, 165134357, 266911798, 266944533, 266960962, 266993683, 267010968, 267059210, 223020813, 267076993, 267126542, 11157514,
+ 267224148, 267272251, 267306767, 266027107, 267355920, 267436503, 267468821, 267485643, 111624194, 267536145, 8390418, 47546408, 152946451, 267601684, 267665439,
+ 125583379, 267681814, 21151860, 267699989, 267763811, 267796495, 267812886, 267829260, 267845658, 267862082, 267896598, 268044055, 224133136, 165724594, 268091451,
+ 84738059, 268124697, 268190171, 268224280, 268289817, 268353593, 268369932, 268386314, 268402709, 268419098, 268435487, 268451859, 268468264, 6701094, 268486426,
+ 268533791, 268551031, 253788191, 268583413, 216400304, 268616969, 268650267, 268699420, 268879645, 269009387, 269042311, 269092638, 116376074, 269156362, 269174559,
+ 269287426, 55132166, 269305632, 269386329, 269418522, 119357538, 195215375, 269436705, 269501323, 269565962, 156566135, 269582367, 269599605, 269631490, 269647893,
+ 269664715, 269715234, 269746777, 14712848, 269780771, 111656970, 110135076, 131334447, 269893663, 55377926, 269910028, 269928229, 269975568, 269991962, 164610064,
+ 270009334, 31473674, 270041391, 270073875, 270090261, 270107488, 270173152, 270223142, 270270504, 270286869, 270303691, 31424522, 270352438, 270385689, 270450780,
+ 270485287, 7307266, 270533109, 270927657, 271024888, 271058730, 2196489, 271107010, 159975211, 271140652, 2850838, 271187978, 271204650, 271238957, 271336357,
+ 271368202, 271384614, 2539532, 271400976, 45776912, 271417425, 271450171, 271482890, 271499293, 168329225, 271515714, 271548432, 271564810, 271582076, 271630796,
+ 271664942, 271763247, 271826975, 271844215, 271876577, 271925270, 2359336, 271943472, 8390449, 272089169, 272121866, 272138259, 272154690, 272189234, 272318521,
+ 272334879, 56655901, 125239318, 272351270, 3375106, 88948738, 272367647, 272384006, 3473448, 272402227, 2934010, 272434996, 272515937, 116850698, 272547866,
+ 272565272, 272613613, 272646590, 2196327, 272712704, 272745208, 272779042, 272809989, 7045122, 272828213, 272875532, 272891930, 272908310, 49479692, 272926518,
+ 273072221, 224935942, 273121346, 273155895, 273203210, 185860124, 273219694, 273252811, 110592031, 273301516, 273317898, 273334293, 273351563, 273417098, 273449000,
+ 273465370, 48676906, 133742632, 273481827, 273514517, 273532728, 273727494, 273743884, 273760271, 273776661, 215826444, 8603449, 8603450, 273793461, 273825802,
+ 273842713, 190922762, 273907750, 7733307, 273925947, 17809419, 273973347, 274007868, 185860124, 274138941, 119799890, 110249790, 274186699, 274236758, 274284554,
+ 2195488, 274301019, 2195947, 274335551, 45907994, 274450240, 45776936, 274515064, 163856396, 274548545, 274646167, 274694564, 274727185, 274761538, 47611942,
+ 274825247, 274842613, 274908995, 274990916, 55132182, 275039761, 275071007, 275087398, 229965862, 275105605, 166215711, 275152955, 2196826, 275185695, 274989075,
+ 275203910, 275384135, 275431440, 59375632, 275447830, 275464197, 117751839, 275480588, 47710219, 159727628, 275497019, 275529830, 48676893, 249987115, 275562527,
+ 275578899, 275595330, 147341343, 275629896, 275742813, 275793737, 182910988, 275874846, 275908426, 13713539, 276038062, 276086889, 276120089, 120258566, 276185127,
+ 276217871, 276234271, 276250645, 276267030, 276283404, 99893267, 276300969, 164380684, 276334411, 73744424, 276465484, 32849942, 135414569, 276531021, 49496080,
+ 276595865, 276643861, 276660255, 276676627, 276693295, 276725868, 276758554, 276775804, 276825934, 276906443, 276956489, 277006159, 277053471, 277069826, 118636554,
+ 212402635, 277088080, 277137233, 277364746, 277381141, 277397535, 277413916, 277430288, 183369757, 277446716, 277528592, 277545002, 277561370, 277577730, 277594127,
+ 176308246, 123617312, 277612370, 277709708, 2850826, 277757967, 277774358, 277790722, 128581670, 277807125, 265076758, 277823514, 277839898, 277856268, 122667046,
+ 277872642, 277889655, 277923316, 277970973, 16236546, 82001936, 276283408, 277989203, 278036482, 278052879, 247234582, 278069259, 278085643, 278102056, 174440458,
+ 278118416, 128581674, 278134868, 278169428, 278217241, 278284117, 278349654, 278396959, 278413350, 25559106, 278429711, 278446102, 278462495, 272613810, 278479306,
+ 278511627, 278528948, 3228082, 278595415, 278659078, 2195851, 264159234, 278675561, 46645264, 278710104, 153174042, 263536671, 278757921, 278808200, 278855690,
+ 112607465, 278872130, 278904858, 49791018, 278921218, 278937630, 1818650, 278970434, 32849946, 279004532, 279052319, 279068731, 279101494, 4407349, 279136059,
+ 49790986, 279185241, 279380100, 279396489, 17448989, 279412745, 4571271, 279431002, 279527462, 143589435, 279544960, 279592970, 279609363, 126287894, 279626889,
+ 279674911, 279691285, 279707660, 279724038, 159432761, 279742299, 159268876, 124796959, 279840604, 202063874, 279905971, 46514216, 279969794, 147423258, 279986242,
+ 280018975, 30392377, 280037213, 280282974, 280346634, 8390495, 280363438, 280412267, 280444982, 256032770, 280479584, 280608834, 147407370, 5309789, 280641612,
+ 3211735, 280676193, 128155690, 280838203, 280872458, 27852821, 280920172, 7389200, 280953291, 2196073, 115523605, 281002015, 139984902, 2850842, 2998312,
+ 281020258, 281249635, 4980755, 130007887, 281314193, 281362434, 45023272, 281379330, 281412692, 281462187, 2621446, 281509898, 210042911, 281526727, 281576230,
+ 27623490, 281610084, 281706555, 281739296, 62914562, 281772061, 281789323, 281854878, 281888613, 281935888, 6324264, 281954150, 282036071, 282083366, 282099750,
+ 282116098, 282132537, 278904863, 282150279, 282181716, 282214510, 282247199, 6193173, 282265448, 282558599, 10371100, 282576745, 158253550, 116850709, 282755084,
+ 282771927, 282805116, 282853386, 24838186, 282870220, 269517692, 282902554, 282920810, 282951716, 282968180, 117096479, 282984516, 283033616, 283049995, 283066380,
+ 172835029, 127909928, 280445036, 283083037, 2031642, 283115522, 283131930, 147816477, 72368130, 283148720, 283182955, 283246618, 283262983, 283279497, 283295749,
+ 283312130, 2326546, 109215756, 1097744, 283328944, 283361334, 1949725, 126959642, 283394333, 283428716, 283461485, 283608942, 283673621, 283721812, 283756399,
+ 283836521, 283869195, 223363111, 283887092, 283935774, 283967504, 2523157, 283985776, 202309644, 284051313, 284329842, 284493683, 284524584, 189579266, 284542080,
+ 284591737, 2162699, 5309328, 284639248, 113459238, 284657524, 284688412, 284704784, 4751400, 284723061, 284786726, 46710800, 284804117, 194084870, 284852250,
+ 284868624, 283722160, 284886902, 284999779, 285034359, 2360310, 120602629, 285081903, 285114452, 19251307, 285147166, 285181816, 125796374, 285279333, 285329273,
+ 110166070, 285378426, 285507605, 285523970, 285540363, 149585951, 285556793, 285573132, 192872477, 285589525, 163020822, 285605931, 285640571, 115523599, 285687810,
+ 45875203, 285704220, 145506335, 285722492, 286031881, 286048393, 29016198, 286066557, 286195778, 286228546, 25559099, 5309287, 286261674, 286294018, 2621466,
+ 149880863, 286310487, 30392330, 286361470, 286394239, 286426001, 286474324, 286507023, 286523408, 286539797, 286556163, 121061378, 286574464, 286656385, 286720002,
+ 286736816, 286769268, 286785538, 265601034, 286801956, 286819581, 286851103, 17809424, 286867471, 101908499, 286883924, 286918530, 14712863, 286982220, 287014933,
+ 241827862, 207290787, 287031298, 2113564, 287049156, 287080457, 11468931, 287097057, 287129651, 29622288, 49479706, 287164291, 239468556, 22216742, 287244347,
+ 2523148, 287277063, 287293469, 287309843, 287327066, 287359033, 2179114, 287377284, 287441889, 170984691, 287473676, 287490064, 6455306, 287508357, 287622487,
+ 2342914, 287670284, 287686684, 287703071, 152338453, 287721350, 287818905, 287867417, 287932431, 287948802, 81166362, 287965210, 194166810, 288524168, 288587782,
+ 288604172, 113229862, 288622473, 901240, 288769930, 19267704, 2261112, 2179192, 2197387, 288801715, 288835468, 288915892, 288964745, 2179113, 288981030,
+ 288997399, 59375635, 289015693, 289046550, 2015244, 289064846, 289112201, 289128582, 289144947, 20299911, 46530601, 289161353, 9207819, 289177611, 271925290,
+ 289193993, 289210498, 289226764, 289243139, 2621443, 289718274, 289734764, 289767446, 2998303, 289783923, 29737075, 289802128, 289964084, 289996842, 6406146,
+ 15073308, 7733472, 2197393, 290015122, 290228115, 290373869, 5325102, 48070698, 290406440, 49496074, 290424393, 3211715, 290505247, 290553922, 290587471,
+ 290621332, 24183042, 242368518, 290816002, 290832426, 245301258, 202162595, 6308317, 290850709, 291014550, 291061776, 225181706, 291080087, 291143682, 31801384,
+ 291160066, 72368147, 46514182, 2359355, 291178392, 258769743, 2130807, 291243929, 291309466, 291620763, 24297930, 291684354, 139477990, 3129360, 207011842,
+ 291700812, 291733530, 134840358, 44613672, 291749904, 291766709, 291800988, 291864879, 291897365, 226951189, 291915677, 292128670, 292208951, 20365343, 292259743,
+ 292323817, 292372482, 292388904, 292405274, 292421644, 280903682, 3244335, 292438092, 52674600, 292472736, 292668804, 46514178, 292733688, 292767649, 292814874,
+ 292831284, 51068968, 292865044, 292913164, 5325322, 292929595, 45646256, 292962330, 72368134, 292978772, 293011502, 293062562, 293158914, 293175334, 293191720,
+ 121339919, 293210019, 293519414, 293553321, 293584915, 293601302, 54493196, 293618857, 293650448, 293666856, 293683307, 293717924, 1949719, 293781588, 115785769,
+ 293816229, 293896631, 134709269, 293928987, 293963581, 294011022, 79740939, 294043664, 294060072, 145506314, 294076481, 36406081, 294127526, 294174792, 294240740,
+ 2195939, 117506132, 294291367, 294323112, 294354963, 294371365, 294388604, 3342352, 294438824, 294535170, 1818645, 294552883, 294601598, 294633500, 294649922,
+ 5342328, 294682678, 294715819, 3213050, 294748186, 294764546, 294780947, 48021541, 294799273, 294846548, 294879314, 294912029, 168493527, 145473538, 294930346,
+ 135905296, 8390070, 294995444, 295043098, 295059487, 295075905, 295125446, 295157776, 295174186, 295190960, 295223730, 295256086, 226639874, 295274411, 1114127,
+ 204996620, 295339948, 295665877, 295700397, 295863119, 295895078, 295911455, 295927810, 49938451, 19447824, 295944214, 124403718, 295960660, 295993355, 111362060,
+ 8388695, 296009770, 55132200, 296026546, 296058896, 296077230, 296109999, 296174993, 296239967, 174065584, 296306609, 296372146, 296419340, 50266143, 296435733,
+ 141836294, 296452127, 296468951, 296503219, 296566858, 296634292, 296714347, 296747010, 178127301, 296765365, 296845314, 296861706, 296878089, 296894482, 8175625,
+ 296911151, 296945202, 297009254, 297042350, 297091082, 146358293, 297109430, 48005141, 297156667, 297189378, 297205771, 221806614, 127042524, 297224119, 55132198,
+ 297287756, 233734154, 162971677, 297321748, 77709352, 297370069, 297418783, 131891210, 297437112, 29769740, 1769588, 297599249, 297633721, 297730506, 297764794,
+ 297813947, 297863100, 24838146, 297945021, 298207166, 84934693, 51822623, 111247372, 298287188, 298320311, 298352642, 125927450, 258080778, 298370635, 298420159,
+ 298518464, 298598406, 298614805, 4571152, 298633153, 24297535, 8159363, 162119788, 298682306, 298745858, 298764227, 298811422, 298844267, 298876994, 298909698,
+ 2146360, 298926617, 298993162, 45875219, 299042756, 299106380, 299139156, 299171890, 299204684, 257933328, 299239365, 299270228, 299304902, 270401602, 299370439,
+ 299550664, 299663436, 284640039, 299696168, 2195486, 299712584, 299778050, 299794470, 29622287, 5324907, 2147497, 299811753, 299859970, 158254001, 299878345,
+ 299927498, 300024741, 300056578, 47120390, 110248784, 300074955, 300351490, 7734511, 152027158, 5325037, 300367898, 2196392, 300384340, 29622282, 300419020,
+ 300549004, 300599245, 300681166, 300763087, 24838185, 300827070, 300892186, 198410282, 2196311, 300908598, 300942672, 300992464, 253706266, 8390609, 301105163,
+ 301121538, 222281754, 50937877, 301139922, 301252614, 141606941, 52576277, 301270995, 301385684, 132431931, 301483989, 8390614, 301645931, 301678608, 301695013,
+ 71188486, 15073306, 301711397, 301727760, 17448986, 301746135, 301909976, 301973563, 302006274, 174030888, 302024665, 302153794, 302188506, 243040297, 302301408,
+ 159760406, 302333983, 302351529, 302385115, 302433269, 302498317, 5308853, 302548418, 302598108, 302678018, 189464597, 303056862, 303349762, 5324902, 303367539,
+ 303398966, 303431696, 197115944, 303448919, 303482251, 41582618, 303530015, 303546374, 303562774, 115523594, 303579138, 30392351, 303597535, 303663072, 8390625,
+ 2113562, 303712226, 303824924, 303841306, 303857666, 114393099, 118882388, 303874108, 303957161, 157499880, 303990755, 6701059, 304087849, 191053827, 232079400,
+ 304121828, 304153695, 27852828, 304220133, 304400358, 304447507, 237732341, 304463911, 304496642, 304513131, 158811338, 304547815, 304628163, 27852838, 304660492,
+ 13074474, 304678888, 5325159, 304726075, 110183287, 304759896, 304809575, 186777631, 304859113, 116162562, 304939926, 304990186, 305039339, 305119664, 305154028,
+ 305317465, 238256159, 305365023, 184074252, 305381407, 5325665, 305397781, 305414170, 305430831, 305463308, 131629066, 305479726, 30326837, 305528916, 2195501,
+ 305563629, 158253547, 17842260, 305694702, 110723078, 305741826, 2113551, 305759897, 305808584, 305840154, 305856578, 305891311, 306005694, 290406412, 306055152,
+ 306300913, 306431986, 140247534, 306496119, 306528688, 3244120, 306563059, 306726900, 299696140, 306791421, 306855946, 25559343, 306872341, 306888763, 306921498,
+ 306937872, 7733725, 306954464, 264175618, 306989045, 134169102, 307070966, 307150854, 249266214, 307167248, 307183654, 258637862, 2129956, 307200059, 307234807,
+ 307347466, 307365662, 29491671, 116883931, 307430528, 307478530, 54460452, 51871775, 307494966, 128892944, 307529720, 307659923, 307692052, 307740779, 307773546,
+ 307855810, 44351500, 129925219, 307890169, 308068843, 143818783, 118883930, 45465615, 308101553, 308133900, 50937862, 2197498, 308150356, 308185083, 186794086,
+ 4997183, 308283388, 308414461, 167903316, 308461710, 308429712, 308496382, 308576272, 27852826, 308593154, 308625484, 308658181, 45039628, 308674641, 5866232,
+ 308708953, 308756502, 308772930, 308805653, 308822046, 308854786, 250937373, 308871170, 19447818, 308887855, 292962314, 308920366, 308970516, 309018655, 185319434,
+ 309037055, 309167628, 309199378, 309315584, 8978453, 309413856, 124796970, 309462036, 48676906, 209305626, 306954454, 309510381, 309543824, 122732582, 309575779,
+ 107757610, 309609295, 2916378, 309641262, 309690437, 309723172, 49496102, 310085634, 310248793, 240844866, 310281195, 310347779, 310444347, 131776571, 253706293,
+ 310478852, 310575157, 155631632, 310609925, 310888454, 168232967, 310968462, 311001098, 97681410, 273924098, 311019528, 311099418, 311115778, 7372810, 190644308,
+ 311134217, 84934672, 2196136, 311199754, 311279628, 170197863, 311296059, 311329311, 311377931, 48054300, 311394314, 2850828, 311410747, 311444680, 311478283,
+ 78102831, 311542063, 6324253, 311576436, 311607311, 311623682, 311640093, 311656470, 22216740, 311674892, 311820404, 3211330, 311837724, 311869521, 311904269,
+ 312100878, 312147970, 312164362, 312180765, 7307286, 312197173, 312230410, 312262740, 20365349, 312295483, 312328221, 312344588, 312360966, 265601046, 312377346,
+ 312393739, 13074448, 5309225, 312410114, 3227758, 312428559, 312493256, 312525447, 312574017, 110233616, 312625169, 17842985, 312805394, 127713296, 312887315,
+ 312934637, 312967206, 119226406, 312983567, 312999957, 313016753, 313051156, 313131024, 118884373, 313147452, 313229368, 49791012, 313264150, 313328553, 313377239,
+ 313411607, 313458725, 284704796, 313477144, 117751860, 313540648, 313557004, 307298325, 313575449, 147341324, 313690108, 313820640, 313852892, 50249740, 266764752,
+ 313886746, 170344460, 313933890, 313966651, 241238018, 313999854, 314034203, 314097666, 13713436, 314116124, 314212829, 3309571, 314245136, 6193163, 314261535,
+ 314279965, 314329118, 314378226, 314442641, 314490906, 1998850, 314507330, 124862546, 314935328, 315197473, 315278634, 2162725, 315328546, 5325239, 315392046,
+ 315441236, 127041620, 315473985, 127680552, 315525155, 315621378, 24838180, 315639844, 127795503, 131940389, 315688997, 315753885, 150241320, 315803686, 315951143,
+ 316080975, 316113832, 316146772, 116703270, 316194922, 52215846, 316278824, 316359133, 110134128, 316393513, 128155688, 19267689, 316540970, 316639275, 54296598,
+ 316702944, 316737580, 316866778, 149094416, 316899368, 143720474, 316917805, 5308455, 317014475, 2342941, 317063242, 317130798, 317293598, 317325614, 19268055,
+ 317359020, 2196932, 317424075, 317472809, 2195525, 317489690, 317524015, 317655088, 317720625, 317818930, 304808479, 317900851, 317950004, 318111831, 29786204,
+ 318161001, 318193702, 140248002, 5310517, 318212150, 64765968, 154665435, 133414933, 318277687, 318391305, 152158218, 318424002, 318457912, 318572601, 318638138,
+ 318702003, 56164373, 112312336, 318734346, 182288918, 318750741, 65896450, 318768143, 2998298, 318818363, 319029472, 270516236, 194068971, 253788170, 319063457,
+ 319111252, 191004771, 319144895, 27623476, 319178141, 319225915, 319258634, 319275036, 279904282, 319293500, 319456286, 270401773, 319490109, 319602710, 319619074,
+ 5177386, 319635532, 319669257, 319702639, 20365348, 141606941, 319750204, 319834174, 319898715, 319932479, 319963182, 320013165, 131940364, 320062852, 50266133,
+ 320127029, 320161856, 320374849, 25559911, 320487426, 2392070, 320505922, 27852821, 311197905, 320634952, 108724250, 320702531, 6374849, 320768068, 320815188,
+ 320848778, 320880666, 320897035, 320913474, 177111062, 320948293, 119357569, 321077260, 321093653, 321110046, 321144902, 321257696, 321292359, 129957947, 321339432,
+ 321355788, 4980762, 321374280, 321505353, 321652810, 321717322, 297844765, 44351528, 321751115, 161857576, 321800268, 321961990, 321978387, 321994778, 322011138,
+ 45613066, 125583386, 322028430, 322095181, 322176665, 322226254, 77250600, 322389053, 322455631, 322519061, 322535478, 322568251, 322601041, 322634262, 109052046,
+ 322666923, 322700488, 177700876, 322734160, 110248295, 322865233, 322947154, 323126920, 323174879, 323207197, 47317008, 323224661, 7602178, 2195985, 323258451,
+ 323321940, 5866762, 2130411, 323356756, 323683713, 323733393, 323766357, 190318090, 323847713, 290553922, 323881046, 323945873, 324011159, 324059659, 249987131,
+ 324108326, 324126807, 51019787, 324208368, 324239419, 2195503, 138641510, 324273008, 324321285, 324338139, 324370519, 324421720, 324486005, 257656921, 324517947,
+ 24838150, 324550722, 2359825, 324585562, 324667483, 46481429, 324731905, 324780633, 8389488, 316211212, 324814940, 324879500, 324928450, 324960321, 325011075,
+ 176488467, 5308907, 325077085, 325173549, 81166374, 325206863, 325238871, 325290078, 325337100, 219627530, 325353494, 325369866, 325386271, 204537893, 325403083,
+ 325781464, 325845871, 214319125, 45137922, 325896288, 304152587, 325994593, 326139906, 326158434, 326206810, 326240355, 326336578, 152946641, 326371428, 326418478,
+ 326467624, 326483978, 54460426, 7307283, 6422544, 326502501, 19253350, 68239671, 326615277, 326647915, 232981014, 326681423, 326713370, 326729749, 87031824,
+ 27852826, 326748263, 326879336, 326928489, 327026794, 327106562, 5308640, 327125099, 327172148, 75464725, 327205401, 327270482, 327303225, 327319583, 47530022,
+ 327338092, 327417858, 327434278, 147423270, 327450634, 8390765, 327467020, 2195554, 327483458, 3227730, 327518318, 327581736, 327598146, 327633007, 327860437,
+ 327895152, 57032720, 327977073, 328073324, 7602178, 328106831, 328138811, 328173682, 328253974, 328286734, 328318998, 328335365, 328351746, 328368159, 328384554,
+ 6946838, 328400962, 328433666, 328450519, 328483118, 328516344, 328549972, 328647465, 328679512, 8390771, 328714356, 328779893, 328892426, 149094412, 328908846,
+ 328960118, 329023542, 329058423, 131334433, 151093264, 329123960, 329468025, 329613350, 329629734, 118882358, 329647232, 329695766, 6373415, 4161538, 329728494,
+ 6374549, 329760780, 329778197, 329826362, 167903286, 329877626, 329974645, 3212318, 330008699, 152945554, 330170378, 5325220, 330187512, 330220367, 330253312,
+ 330285078, 45760524, 330303612, 330400375, 330433452, 330499560, 4997591, 330547284, 330579978, 330598525, 330711966, 330743915, 330777516, 330842131, 330858518,
+ 330874892, 46530589, 330891727, 330926206, 331090047, 331153446, 331169823, 170886313, 51675164, 331188352, 331303041, 331368578, 132187145, 331466883, 56246308,
+ 331532420, 331628546, 111280166, 2196415, 331644949, 331661849, 185319434, 331726914, 331761797, 1769479, 331923482, 331939880, 331956255, 54460422, 331974790,
+ 332021786, 332038160, 332054568, 6620363, 332070924, 332087306, 332103701, 6619188, 332121288, 209584555, 113115238, 332154087, 332204167, 332447782, 332464194,
+ 332499080, 332563324, 183369743, 332613769, 332694264, 332726274, 332742687, 47546394, 332759116, 332792240, 332824614, 6406182, 332840986, 332859530, 332939276,
+ 4177931, 226443276, 332955660, 243777567, 332972073, 332988428, 3555359, 333006157, 333072523, 333135924, 333168943, 333201418, 333217858, 7094903, 333252748,
+ 333414925, 333464361, 333496322, 2359334, 333512706, 333529114, 333547661, 4997176, 333595657, 8388701, 333627408, 333643857, 243777548, 333676575, 333692954,
+ 333709331, 55754774, 333725777, 333758476, 51675176, 333774907, 333809806, 333908111, 130269190, 333972768, 334037018, 334054542, 311690261, 334104720, 2342922,
+ 334217453, 2130882, 2196719, 334252177, 301252618, 334348342, 334383250, 334694547, 334807500, 334840409, 334874772, 334973077, 335036422, 335052819, 161726486,
+ 335070554, 335102761, 335134804, 59375621, 2113546, 335167595, 335200266, 119537666, 335218054, 119996932, 335284374, 131810324, 335332695, 335382679, 335431289,
+ 247234581, 2932960, 335478843, 335513752, 335593986, 335626256, 207620115, 335644825, 335775274, 50135069, 335856105, 47611906, 335905822, 264716369, 335938401,
+ 53690410, 335970413, 336005274, 336085002, 127680566, 336103579, 336281609, 336298121, 336314502, 10371187, 336330790, 336347174, 336365724, 336414877, 336464030,
+ 336496798, 336529567, 336576548, 78807047, 336594031, 336626600, 336660640, 336822303, 336838668, 68599846, 336855081, 151765028, 336873633, 151765014, 336906402,
+ 337002532, 337021091, 337068061, 148637860, 337788982, 337822296, 337856679, 178814987, 338100461, 215826448, 338135208, 203325466, 49496095, 338215014, 302252038,
+ 338249897, 112607341, 338346050, 2867216, 338379688, 235552780, 181256240, 338413033, 338462890, 6701068, 338527133, 338609042, 338657309, 245350412, 211812823,
+ 338675883, 338805672, 338837520, 338853894, 3342342, 338871119, 338903182, 72499223, 333299733, 338938028, 339230910, 34422921, 2195610, 2850832, 339298477,
+ 147423253, 339364014, 339445935, 339492902, 136790028, 339511472, 308576258, 339642545, 339708082, 23363797, 339839155, 116375659, 340101300, 340164639, 340181425,
+ 340213772, 340232373, 8389186, 340280530, 340312095, 249137334, 257657015, 340330680, 340591401, 340625593, 340705339, 340738981, 340771175, 2867212, 340803639,
+ 340869344, 340902753, 118882984, 340935574, 340984238, 341033002, 121651222, 116064282, 341049346, 341065754, 341082122, 341098580, 341131280, 341147686, 47611906,
+ 341164491, 2196535, 341213196, 2196358, 341229998, 341278827, 341311938, 341147670, 280903690, 341345587, 341393434, 51855398, 19038220, 341409804, 341426218,
+ 341442603, 341476524, 287146100, 341524518, 73531404, 341541782, 341592250, 341625019, 189693990, 341672020, 341704770, 341737579, 341772476, 246546458, 341868546,
+ 159383592, 341885399, 33390922, 317898833, 341919933, 341985470, 342065678, 168722453, 342100159, 342132928, 342345019, 342378689, 116211930, 342425707, 2146593,
+ 342458510, 112607535, 342493378, 342606801, 342656172, 342704130, 342720522, 151093250, 342739139, 342984900, 343097366, 343113794, 343148741, 343195650, 343213321,
+ 343247046, 257098575, 343343106, 343359499, 23364340, 343378119, 141606918, 343442321, 8390609, 343490619, 308674572, 343524505, 116867964, 343572501, 343588894,
+ 343621716, 343655247, 343687631, 343722184, 344033481, 282853416, 215810070, 344096874, 344179881, 344211498, 344227909, 344262858, 344312011, 344426700, 344457232,
+ 344473626, 114114589, 344491380, 115818534, 344539178, 243040297, 344555823, 344588319, 243777546, 344604718, 344653850, 344672461, 344770766, 111624223, 344883284,
+ 344916055, 344966700, 345000030, 345049295, 42369036, 289046554, 345145390, 345196752, 345474465, 3229887, 345524433, 345573586, 257949712, 316735533, 345704659,
+ 345786580, 6438914, 113836044, 345866925, 345915419, 345949097, 345997342, 226951183, 346032341, 346144796, 47611944, 346161164, 179716124, 346177582, 346227598,
+ 124928012, 269108092, 346294486, 127451145, 346521616, 346539568, 346570989, 191644566, 346604045, 42434600, 346654935, 84934678, 1769588, 346704088, 346802393,
+ 346882132, 283197497, 346914828, 346933466, 55197736, 346996790, 317898833, 347031124, 347127846, 3538982, 347144213, 5505045, 347160602, 347177387, 108298262,
+ 347209794, 347242508, 116752394, 347261147, 347457756, 347523293, 347603028, 347635733, 2359327, 347653003, 6127637, 347717642, 347736286, 347783234, 347816020,
+ 347850975, 175849512, 347932896, 348014817, 348178658, 164775081, 348258370, 348291937, 348323893, 348357528, 251396122, 348408035, 207422664, 348506340, 348553245,
+ 348570588, 348602384, 68599824, 348618754, 79101981, 348637413, 2195563, 348702950, 348750126, 348782621, 348635148, 348801255, 348897290, 348915944, 273465354,
+ 226443274, 348965097, 349175889, 349208602, 349224988, 349241356, 6438931, 349257740, 110248046, 349274219, 349306985, 349339667, 349356054, 349372427, 46710815,
+ 349389279, 2326554, 349421676, 157663248, 89128976, 349456618, 55377930, 349554923, 349619297, 177340479, 349685996, 2196216, 349716492, 349798459, 349833453,
+ 349931758, 350028585, 161808386, 184926234, 350062831, 202097400, 350160097, 159694850, 350603505, 2195538, 350750962, 174080066, 350816499, 168869894, 136921100,
+ 350865024, 350912518, 13074453, 350929355, 350978913, 351011649, 5177354, 351043671, 351095028, 351223850, 351240232, 49266700, 351256607, 351272996, 351289356,
+ 351305734, 47317007, 351322124, 351338506, 7389190, 108298271, 351357173, 351453655, 351488246, 196837392, 351535157, 351568781, 351651102, 351699785, 351750391,
+ 45531162, 351813634, 351832312, 351879211, 351911947, 29622284, 351930617, 17842936, 352092182, 2539551, 352110842, 352190923, 352241915, 352306088, 352337946,
+ 352354335, 7733485, 352370805, 4390950, 352403468, 7307266, 352419899, 352454333, 131891205, 352536828, 352831741, 353075216, 353092953, 47710239, 353126654,
+ 353206509, 353241343, 353304668, 353337647, 119799847, 6946832, 353370114, 45776906, 353388800, 353600929, 111214632, 353648650, 353665045, 306774075, 351895592,
+ 170705767, 353681437, 346177602, 353698958, 353748042, 353779733, 353796943, 353828940, 353861670, 353878070, 54460421, 353910800, 353929407, 353962241, 354156556,
+ 120094746, 354175234, 354273539, 354336770, 203654459, 341819414, 354353154, 48545802, 354371844, 55132186, 354435156, 354470149, 274989075, 8389647, 113115157,
+ 54345759, 354583128, 141541416, 354617606, 48513035, 2162707, 354730038, 354765063, 354811923, 5505046, 354828328, 132792341, 354844756, 354877547, 19447820,
+ 354910315, 354943008, 354975746, 2196554, 354994440, 355191049, 355238780, 355288697, 355336232, 164380678, 2146731, 355352582, 355369395, 355403579, 355453194,
+ 254574614, 8390923, 355565627, 355600652, 355633421, 355778562, 47316995, 355794990, 355846414, 355895567, 355959321, 356025485, 356075792, 356122670, 41582628,
+ 356172301, 47317034, 2196470, 356223249, 356337236, 227524715, 356434352, 3244139, 356468280, 144375810, 356533071, 356927763, 165494815, 357171238, 158500169,
+ 152946964, 357188531, 357221535, 357253186, 357285917, 119881740, 357303390, 357351531, 357386517, 357468438, 8389522, 357548034, 357564442, 307298341, 357580857,
+ 357597196, 150241290, 357613580, 357629962, 183189533, 357646695, 357681431, 357845272, 357927193, 357992730, 171163685, 358088763, 358123803, 1769498, 358187051,
+ 358222108, 2932818, 358450065, 358499302, 121339925, 358533405, 358597606, 358630256, 358679393, 3213019, 358711599, 358744083, 358760469, 54493200, 358777676,
+ 358826050, 114786775, 358858754, 143295224, 358876151, 358940674, 2195561, 358958579, 358992158, 109166613, 359071831, 5308446, 359120983, 359170481, 359205151,
+ 359333926, 359352608, 359399462, 357629958, 133611522, 198672424, 359415820, 5324908, 359432257, 10650533, 359483681, 237731851, 60227600, 185270282, 359661570,
+ 52756509, 359680290, 211910658, 340280530, 150913064, 359762211, 359811364, 359875006, 359940107, 359956546, 294944778, 359989302, 115769451, 50659334, 71483394,
+ 360023999, 360122661, 360171814, 134103399, 360269076, 360319271, 2196032, 360416785, 360450344, 61800471, 360515881, 360565034, 134168800, 360630571, 4653656,
+ 126435344, 360808458, 360826575, 318783528, 360859948, 361037834, 148062227, 361055148, 5865572, 361120181, 361152566, 45023274, 297222186, 361186242, 24297570,
+ 361218058, 361234744, 361267801, 361300034, 361334249, 361381900, 361398282, 358514728, 361415115, 361463906, 8390957, 361496660, 361529454, 361564462, 361679151,
+ 361761072, 361810225, 361873439, 361889794, 361906179, 361922572, 195690511, 361938963, 361955350, 361971714, 47120389, 361990450, 2015258, 3162154, 48480296,
+ 362070031, 2196057, 362086443, 362119234, 362153518, 362201109, 119226390, 362613044, 362692637, 362709839, 362741770, 232980534, 128286786, 362758603, 204537877,
+ 362807395, 362840956, 362891335, 3212608, 362940725, 363020968, 22216716, 363054056, 363102220, 363118598, 356761642, 5866434, 363135859, 117901622, 238551474,
+ 124864823, 363219256, 363364409, 118079500, 363383097, 363479099, 363513240, 363561485, 225181722, 363610580, 45433744, 363645242, 191053860, 363709795, 2360167,
+ 117424185, 363773971, 363790373, 2342943, 363809083, 364070041, 364118863, 364150901, 47120387, 364183568, 364200696, 364235068, 127025154, 364382525, 56164373,
+ 364448062, 364544459, 364593168, 364611903, 2197310, 296354755, 364642347, 364675131, 364710208, 364757023, 335151146, 364773388, 2130953, 364792129, 364871710,
+ 3244546, 364904502, 364937262, 364988738, 365037891, 365136196, 44597250, 365168965, 365346847, 50266154, 365365574, 125239324, 365445579, 365494372, 56492038,
+ 365527936, 365576223, 365593207, 7094719, 365627719, 365674527, 126287898, 365690906, 184549388, 365709640, 365805999, 365838756, 365873481, 365939018, 11042946,
+ 366036140, 1769529, 366084320, 366116883, 48545808, 366133308, 366217547, 366297098, 185417770, 366313482, 366329885, 44613638, 366346269, 366363083, 366414156,
+ 366610765, 366772278, 2195532, 366805521, 366837847, 232292373, 111149087, 6373915, 366886941, 366905678, 207126538, 113115146, 366116883, 367020367, 150913046,
+ 367067737, 252297440, 367102288, 1917504, 19267605, 367214651, 367247811, 367282513, 5310694, 367364434, 342608211, 246464551, 367427586, 367443974, 47120405,
+ 367462740, 131940389, 367528277, 367591440, 294535180, 367608926, 137379846, 367657066, 367741270, 214303944, 367790423, 8389930, 367905112, 140247574, 367970649,
+ 368036186, 368150875, 368197670, 173113375, 368214038, 177324034, 262062106, 368230402, 117424157, 368246865, 368281948, 368494941, 368558090, 368574548, 368607270,
+ 2146331, 368624768, 368672873, 368707934, 368755613, 368837075, 368888159, 368936569, 45498408, 368984102, 2197025, 369001844, 369049687, 369098818, 369133920,
+ 369248609, 369328487, 121339914, 369362809, 369410091, 369442918, 2195585, 369475603, 369491990, 2196418, 369510754, 11059332, 369559907, 135823426, 369608009,
+ 369655827, 114114597, 369672230, 160759846, 369689516, 369756516, 370002277, 370050649, 240943134, 370098776, 145293328, 370133350, 370262045, 245350416, 370278446,
+ 5325100, 370327694, 6373811, 370362727, 370425898, 370442306, 7733770, 370475545, 370540603, 370573343, 46514202, 370589752, 370622551, 370671635, 370688021,
+ 370704386, 370720787, 31424550, 370739560, 370851866, 370868312, 120258588, 370903401, 370999334, 159547423, 371018090, 371100011, 129876205, 17220498, 371212314,
+ 50479135, 371231084, 371278584, 2670623, 2195990, 371312661, 371343372, 371359782, 226951206, 371376144, 109035535, 371394925, 371657070, 371802131, 371819028,
+ 371867688, 141541402, 371884044, 2850842, 179994646, 371902071, 371965994, 2637836, 371984162, 372017519, 372214027, 372262092, 372312432, 372391948, 372410737,
+ 372473963, 16597593, 168706272, 372507663, 372556911, 372589451, 372654101, 128319510, 372672882, 372752406, 372769020, 372802932, 372853107, 373049716, 151994390,
+ 373115253, 373164406, 373293570, 373325883, 209338370, 373359555, 373410167, 10371209, 373492088, 373587984, 178814992, 19267622, 373604404, 111624204, 373639545,
+ 373721466, 373885307, 5669800, 373932044, 373948516, 107757570, 373981215, 319619082, 373997620, 79757349, 3899993, 374032764, 2196216, 147243074, 92749826,
+ 374114685, 374195220, 50135041, 374245758, 374311295, 374194195, 374376009, 374457238, 374507904, 374571944, 374604834, 291094591, 374638977, 374704514, 374767645,
+ 374784012, 374800410, 110412423, 374816787, 114409494, 374835460, 374898700, 374915108, 374931478, 233734156, 374950275, 113247603, 193134630, 375145600, 375196036,
+ 375259241, 17006604, 183189533, 375292751, 375326041, 375359020, 375392645, 375490586, 375537695, 15073299, 207291422, 375555166, 375603237, 375619590, 375636270,
+ 375668764, 375685132, 375701530, 189513766, 375720326, 50135061, 375785863, 375816202, 375832692, 86081552, 375851400, 375996439, 10944521, 376015241, 376274997,
+ 376307714, 376324133, 146767874, 376341637, 376392074, 376438786, 376457357, 376504814, 68257097, 376537114, 376553474, 45875221, 376569858, 158253112, 376586266,
+ 376602708, 214319161, 376635413, 376652079, 376684601, 376700940, 376717341, 376733698, 4964362, 376751411, 376799258, 376815618, 376832010, 376848415, 222281764,
+ 376867211, 376930306, 376946714, 376964062, 377014668, 377094200, 377129357, 377192458, 377208834, 377225237, 6455332, 2130223, 377241605, 38879234, 215187487,
+ 377260430, 377323522, 257638426, 377341516, 377389359, 377421843, 377438230, 377454594, 377471002, 377489807, 377521785, 214319114, 377571728, 28147738, 377620881,
+ 377668652, 377719186, 377798693, 377815062, 168820776, 285343783, 62341142, 377833875, 377929953, 144982056, 2408454, 377962997, 377995287, 378011670, 378028041,
+ 378044432, 378060816, 378077225, 378093703, 378109959, 378126364, 378142721, 79102068, 7307306, 378161556, 378273794, 378290186, 378306572, 251527174, 378322975,
+ 6127644, 378340218, 378784150, 378962012, 378994991, 379028321, 379062679, 379174918, 292110339, 344736273, 379192190, 379224090, 379240451, 379256844, 2162730,
+ 379273222, 379289621, 324567056, 379308440, 379373471, 379437163, 111132703, 379469855, 379486218, 2147249, 379503114, 379536206, 379601975, 379633702, 379650102,
+ 379685273, 379799962, 379881883, 379947420, 379994178, 380029341, 380078494, 380125210, 380141570, 380157967, 380174358, 380191638, 380240305, 380273119, 153190929,
+ 380305420, 380324255, 380373408, 380502126, 380534812, 380551184, 52723722, 380570017, 380633109, 380649484, 380665866, 380683433, 380717474, 380799395, 380848548,
+ 380995176, 381060467, 381091842, 129466408, 381110693, 381157397, 77709314, 381173772, 381192614, 381255739, 240582761, 381288486, 1949712, 381304838, 74072079,
+ 381321235, 381337638, 381354050, 381387223, 381421991, 381618600, 381700521, 381733290, 132808723, 381812748, 381830875, 45498384, 50118694, 381864363, 381976683,
+ 382009356, 4030483, 156123195, 204996624, 382025749, 59228186, 382044588, 382271500, 382288632, 382320670, 382355885, 211189762, 382402588, 56131596, 382420720,
+ 48480272, 382452974, 291160100, 382484561, 110216222, 382519726, 382634415, 382683568, 382730306, 180437030, 382765489, 382812736, 382847410, 382962093, 318717958,
+ 383009071, 383041602, 207142922, 383076787, 383288627, 177324034, 383336464, 56557594, 383353794, 2130352, 383385659, 344736375, 383420852, 383483926, 126042140,
+ 383500347, 383533359, 383568309, 6438934, 383631791, 383664149, 3473430, 383680524, 383696936, 47120441, 383713292, 133546091, 383732150, 383781303, 383844378,
+ 383860755, 138625026, 67059752, 384256441, 384338362, 384403899, 384534972, 384614438, 68241211, 384631982, 384697080, 384729153, 384780733, 384893463, 384928190,
+ 384975695, 214368277, 385010111, 385107584, 385155091, 147423269, 385171993, 385239488, 319701021, 20365354, 5865531, 385303057, 147423269, 385336665, 385370561,
+ 385452482, 385499235, 385531964, 385613905, 385646598, 20365334, 385663068, 20365333, 385698243, 385843310, 385875984, 2261034, 385893674, 381124614, 385944004,
+ 386008002, 386039814, 386056197, 386072660, 386107845, 386173382, 386252853, 154763735, 386285640, 386353607, 386402760, 73187370, 386449467, 115294230, 386482263,
+ 7734475, 386533833, 386613678, 386664906, 216466956, 884743, 386730443, 386778101, 386842729, 386877900, 386926528, 25560002, 387006494, 387039292, 387121167,
+ 5308641, 387138669, 387170319, 171000753, 387187159, 387219543, 2360640, 2195481, 387271117, 387399687, 387416182, 387448848, 2195982, 387465259, 387498060,
+ 148637217, 387533262, 8391119, 387629106, 387661836, 2195674, 387678432, 8391120, 387711447, 387744174, 387794005, 184860710, 387825756, 387860945, 158254070,
+ 387942866, 388024787, 388071515, 388106708, 169232853, 388139478, 388236327, 388303319, 388349962, 116376232, 388368856, 388581849, 388710412, 234848282, 388729306,
+ 388811223, 2260994, 388857910, 2197979, 196854261, 388893148, 388939883, 388972572, 367067195, 388988938, 389005354, 41091078, 389024221, 389137905, 389169206,
+ 377241626, 389204446, 389286367, 389333032, 389349378, 148602918, 389365800, 17006620, 389382603, 3228162, 389433824, 260620297, 389693716, 389728737, 389792046,
+ 389824552, 389840908, 6946842, 389857334, 220987418, 389890467, 389925346, 390086696, 318832669, 390105571, 390135827, 27607042, 390153207, 390220260, 390348910,
+ 8391141, 390381631, 390416643, 318767147, 390480678, 390513602, 390545464, 390578215, 2197990, 390613479, 185319445, 152946601, 390695400, 390922256, 2197422,
+ 4980752, 390941161, 6373600, 391006698, 391072235, 391121256, 2196510, 391233552, 391252460, 391299093, 391315458, 5767206, 391334029, 391381013, 3178518,
+ 391399917, 391645678, 391727599, 391824120, 251593181, 282853386, 391858164, 391924208, 293371915, 146767884, 392069122, 132792331, 172837361, 392088050, 392151071,
+ 5505034, 392169971, 392265740, 204619781, 392283797, 392350196, 392398555, 392431194, 392462374, 54493186, 392478789, 392514037, 77709343, 392610552, 392642562,
+ 17006603, 392661494, 392937769, 392970242, 392986655, 393003046, 393019394, 393035804, 121896991, 393054078, 393084940, 393101323, 393117727, 393134514, 6733845,
+ 393167766, 393216042, 393232410, 393248770, 393265181, 137576450, 393284087, 393314316, 393330714, 121929734, 393347082, 393363458, 2801675, 393379896, 393413142,
+ 264159258, 393445407, 393461770, 393478156, 85098508, 393494550, 210042911, 393511825, 393560076, 393576477, 18399260, 128892966, 99516428, 393594058, 393642849,
+ 393674818, 393707744, 393740330, 393756698, 393773058, 393789455, 393805846, 393822640, 393854978, 393871375, 393887766, 393905046, 393953282, 393969667, 52346882,
+ 393986058, 394002473, 394018832, 394035226, 394051595, 394067970, 393494549, 394084417, 394133546, 394150320, 394184775, 394231819, 394248223, 394264586, 394280972,
+ 394297350, 143441939, 394313774, 394364292, 54460453, 394428428, 394444826, 394461215, 44908546, 394480120, 394543126, 394559490, 394575882, 264405023, 394592287,
+ 394608659, 394625327, 128991258, 394657830, 394674188, 394690579, 394706984, 394723366, 30343227, 394740895, 394772910, 148733990, 198328339, 394824185, 394871655,
+ 394903578, 394919947, 394936322, 394952723, 394969100, 5701672, 394575878, 394986048, 395019373, 395051020, 213319709, 395069946, 395182121, 2670604, 395198495,
+ 128057356, 395214867, 395231272, 121929754, 395247618, 395264021, 395280415, 394067974, 395297239, 395329557, 395345942, 225427468, 395362325, 65699852, 395381243,
+ 395445238, 395477014, 264093706, 395493402, 395509776, 218841114, 158811323, 32849922, 395528700, 395608163, 395640853, 395657247, 395673824, 395706370, 395722762,
+ 395739142, 33112086, 180600941, 140249557, 395758077, 396052913, 10829846, 396100075, 396134910, 128336632, 17219688, 396215153, 396263455, 396279827, 50266134,
+ 396298751, 23789705, 396542094, 396574815, 396624905, 396657174, 117014554, 396689711, 2197525, 396722222, 396773888, 396820526, 396869653, 396886035, 320897046,
+ 396904961, 396967962, 396984351, 397000714, 119259178, 397017113, 397049922, 397082645, 130285589, 397100062, 397134338, 397298179, 397380100, 397443118, 397492311,
+ 397543743, 397574251, 159432741, 397607215, 6373890, 49086466, 5341243, 397639983, 397672458, 397688874, 252100630, 397707023, 117901829, 397754839, 397788049,
+ 397836309, 397852693, 127680524, 397871622, 397969927, 398098434, 398115931, 398150152, 398262435, 398297609, 398377026, 398412298, 398674443, 398753830, 2850854,
+ 5308938, 3212226, 398772748, 398854669, 232195214, 152354858, 398903822, 398952975, 339296287, 399018512, 343539733, 399097896, 399114242, 399130662, 399147483,
+ 399182353, 17842283, 8391186, 299794472, 399264275, 399313428, 52723754, 399378965, 184926218, 399425567, 131891226, 399442860, 7143480, 399507468, 3245147,
+ 399524295, 324567066, 399573030, 399590312, 399624726, 399690079, 399737333, 399769646, 6127626, 399818758, 399835151, 52723734, 399851560, 3227714, 399870487,
+ 5326707, 399936024, 400000030, 400032777, 400065797, 400130478, 153191031, 400181785, 2196871, 400458328, 400493082, 400638391, 178815016, 400671606, 400736268,
+ 400755227, 121110564, 400802846, 400837148, 400902685, 401014877, 382402588, 401066526, 333135924, 66945029, 401179055, 401211499, 84738074, 401244270, 401276994,
+ 401309708, 401326173, 401375254, 55853072, 401392153, 401458206, 401491113, 140247103, 401523521, 401555515, 401588236, 3178533, 401607199, 401656352, 401784858,
+ 401801242, 176177206, 51101698, 6946898, 401820087, 401883162, 8390561, 401902113, 402014231, 402030615, 402046988, 8994823, 309018650, 402064120, 402098722,
+ 402145282, 2031626, 6701113, 402161701, 402179081, 135102506, 402210923, 402246179, 332761591, 402328100, 402392866, 402424695, 402456718, 6324236, 402491941,
+ 402540727, 2129961, 11157525, 403097614, 403144770, 403177994, 403211173, 403243010, 2523164, 403261992, 403326369, 403376681, 122110361, 2196029, 37208197,
+ 403819050, 403914812, 370720806, 403997141, 115179546, 111067162, 404048427, 404111470, 404144212, 188940307, 404179078, 118884908, 404226050, 2850858, 404245037,
+ 2342940, 27623851, 404341802, 2933207, 17137695, 404439887, 404472821, 404539950, 24838181, 404586498, 315686994, 404603640, 404638255, 404160514, 404701721,
+ 287244316, 128453168, 213630982, 404767733, 404834865, 404897830, 372605820, 5062751, 404915605, 404963387, 7733347, 404998706, 405045485, 112754704, 405078032,
+ 319930802, 405097011, 405225538, 405259466, 405307418, 7733675, 405323807, 405340181, 307298326, 405356554, 398753820, 405373012, 2195978, 319930799, 405406971,
+ 405454864, 144621594, 118884916, 405471335, 382484588, 405553190, 4997229, 269664558, 405572149, 405670454, 254443526, 405815336, 405831690, 1933322, 405848535,
+ 405883447, 405932600, 405962809, 361988138, 200720396, 405981753, 131612681, 112197670, 406063674, 406194679, 406224917, 406241296, 406257702, 406274064, 406290474,
+ 406306847, 42434566, 302121420, 406325819, 406407740, 296961647, 406569012, 45613062, 384729172, 406601794, 406637117, 406719038, 406899263, 406995048, 407046720,
+ 320585749, 407095873, 407191562, 25559999, 407210562, 407373965, 407422754, 407454221, 407503862, 407537089, 407569417, 407601215, 407634999, 407666699, 6602758,
+ 407683112, 310591547, 407702083, 237683146, 407751236, 407816773, 407978584, 408010847, 408062534, 45498370, 2359298, 408095179, 408142504, 408174895, 408207447,
+ 200736825, 408256534, 408272908, 408289291, 138641866, 408305695, 408322058, 408059946, 408339296, 408404490, 8390812, 408439367, 408485890, 408502278, 408518687,
+ 408535479, 408568410, 408603208, 118194186, 408698902, 408717631, 408748044, 408764442, 408781407, 324567071, 408816201, 341983701, 408881738, 408977835, 77250572,
+ 409010178, 117424149, 409027014, 409059366, 409075728, 143654943, 409094416, 409141335, 409193035, 409307636, 2195882, 409354711, 409387045, 4751381, 409406028,
+ 409684557, 409780246, 269107266, 406357022, 409797099, 409832014, 409879003, 307150854, 409911380, 409946703, 48676901, 410026876, 316637718, 410077776, 410189846,
+ 254592009, 191070220, 410206220, 4571167, 51937311, 410222658, 410258001, 410354556, 8389516, 410402828, 128892959, 410420118, 410468378, 410484758, 410501122,
+ 410517510, 46694406, 99893277, 84934687, 410536530, 117424169, 410602067, 410666947, 410714122, 410730538, 410748005, 2129979, 410796877, 44531734, 410845643,
+ 410895228, 410946132, 410995285, 411222592, 411254796, 411272345, 411320326, 381157397, 158812758, 411337183, 122683413, 411369488, 49496121, 411388503, 411437656,
+ 411568729, 411729936, 411746342, 122683421, 411762719, 122732573, 3850268, 411779100, 411795494, 191610911, 411814490, 164036626, 7389187, 411912795, 411978332,
+ 115785749, 412041228, 307298330, 412060253, 412106764, 412123896, 412157369, 412205082, 412221471, 2261004, 2130347, 412238097, 412270594, 412287002, 147423261,
+ 412306014, 119359266, 412650079, 412713378, 412748384, 412893604, 412925992, 412942342, 54460437, 412960513, 413007926, 297418788, 46694442, 413043297, 413108834,
+ 413171728, 224935946, 413190755, 413237254, 297205775, 413256292, 191070210, 374030348, 413401990, 413433877, 343605274, 413452901, 413517461, 413583974, 413664265,
+ 413698663, 413764200, 414007312, 414023720, 145506314, 414040076, 3228087, 414057361, 414105824, 115785734, 414141033, 4292662, 414221619, 414269471, 332103690,
+ 379109807, 414285843, 226951205, 414302230, 414318623, 208093210, 414334992, 414351386, 2933734, 414370410, 414482442, 414498858, 414515232, 414548503, 414580776,
+ 414597146, 2197354, 414616171, 414679062, 414695455, 414711827, 191053846, 414728246, 414760971, 414779228, 414844505, 414892054, 129024962, 414908503, 414960236,
+ 415025773, 415236180, 415268880, 415285276, 181667354, 415301644, 337857051, 370573328, 415320686, 132432332, 415367204, 415383562, 415399964, 415416322, 415432732,
+ 415449114, 151748649, 415468143, 415678883, 415711244, 48021530, 415730220, 415760396, 415776784, 122683402, 415795824, 8389011, 416270961, 416402034, 188762739,
+ 8389308, 8391284, 2195794, 2195714, 56311834, 416514585, 416580053, 416628762, 115196336, 416647797, 416694356, 416729718, 416792633, 235028511, 47366146,
+ 147063746, 416809807, 416844407, 416908073, 416940091, 416972859, 147423268, 417005599, 4343129, 417021998, 2198136, 417071120, 137101536, 417087580, 93962271,
+ 417120310, 319832499, 417155705, 417300511, 42434586, 417317296, 417349678, 417401466, 417448239, 417481877, 73187338, 417514142, 417548709, 417595616, 417630843,
+ 417759339, 417794684, 417873946, 417890306, 153026570, 417907319, 50511894, 367607862, 417939458, 65896474, 417957031, 418005046, 418037853, 418086971, 418122365,
+ 418220670, 116867990, 418283607, 334185672, 8389804, 288620573, 418335359, 418431576, 418466432, 418546324, 418578451, 418594825, 36716681, 418611211, 418627721,
+ 418643980, 418660486, 418676871, 83918890, 418695809, 418824460, 418873501, 418908802, 354697239, 418971917, 8391299, 113115159, 419020915, 419037207, 2523167,
+ 7405700, 51789958, 419056260, 151765029, 419577990, 67059849, 419596933, 419809926, 45907987, 1769508, 163643831, 419859079, 419924616, 420036618, 420053034,
+ 331334579, 420069679, 385026534, 420102165, 420121225, 420186762, 420364395, 385286154, 2015248, 420397363, 420432523, 420774291, 169443465, 37208197, 420825740,
+ 420907661, 421022350, 421134364, 131336350, 421153423, 122126905, 421396496, 2197422, 1769488, 421412866, 421429269, 216465803, 421446090, 6374485, 421481104,
+ 2195939, 421563025, 175669264, 421626315, 421675010, 421691499, 262684710, 421726866, 421789999, 192200735, 421823311, 421857316, 421907091, 422002700, 422020255,
+ 1933341, 5177375, 422054548, 422218389, 422264844, 46530602, 422281319, 422364180, 422414522, 118210600, 422445087, 422463988, 422513302, 422562455, 422642825,
+ 422690868, 275185683, 174080066, 422726296, 422840985, 422904303, 65880085, 422936592, 422952986, 3228119, 422969387, 423002169, 348635148, 423018533, 423034896,
+ 2752527, 131776980, 47317029, 423053978, 423316123, 423395434, 4997799, 423478281, 423512732, 2834537, 423642035, 423673915, 423707757, 423740236, 169967638,
+ 423788556, 423804959, 48676874, 423822121, 423854519, 423886850, 423903253, 423919637, 147013689, 423938717, 173490710, 150241296, 424050700, 110248368, 346177995,
+ 167903291, 424069790, 424149034, 424165414, 36143135, 424182673, 109052775, 424231371, 424282783, 424394792, 424411167, 424427558, 226951197, 293503016, 51314690,
+ 424445530, 424476726, 424509471, 56262672, 424528544, 424820773, 299813537, 424837186, 424872610, 424921753, 424985740, 425034892, 425085603, 425148426, 425164842,
+ 425181824, 27443772, 425214431, 233243678, 425247213, 425314980, 425380501, 120258581, 425429669, 425558066, 1933350, 425593510, 425689181, 425740229, 425771049,
+ 50462758, 425788237, 425839271, 425888424, 425937577, 426150570, 108317355, 426262560, 7733849, 426295599, 176504863, 426328110, 426377226, 426394884, 426459193,
+ 426475823, 426509411, 426590214, 426606611, 426622998, 426640193, 426674860, 7733687, 426786862, 426835984, 426852358, 426869211, 426902467, 328073254, 426950722,
+ 426984437, 427049846, 427117229, 427198949, 427248302, 427428527, 427543216, 427589643, 427606103, 427655599, 427690673, 275546122, 365053273, 427787404, 427837370,
+ 427887282, 427952819, 44662822, 427982941, 359612417, 428034740, 428114391, 428146726, 428163074, 2195893, 428182197, 428361289, 428444342, 428509879, 428556290,
+ 54460453, 428574225, 428608184, 428640953, 162791462, 428769296, 45465638, 428787311, 428835752, 428867594, 428885001, 234930178, 428916795, 190545932, 428951489,
+ 429001402, 429064623, 429098411, 428015642, 429148859, 429263220, 200720400, 157663234, 429329084, 429623997, 113115158, 429722302, 429771455, 430000186, 7602192,
+ 430063818, 179716134, 430096855, 181258944, 430131905, 430293017, 430328276, 430358566, 430374914, 430394050, 192200735, 430440973, 430492355, 2198212, 430623429,
+ 430686626, 75464730, 2342949, 254083566, 430719435, 159760410, 430768130, 267534346, 253526446, 430787270, 430918343, 430982532, 237731861, 431049416, 431147721,
+ 138575877, 383402050, 431213258, 431276042, 431292875, 185319430, 431344331, 431423534, 431472697, 431489055, 431505903, 431538235, 119226394, 431573708, 8389516,
+ 431652874, 320307242, 254345227, 125583799, 431669250, 17842985, 124796930, 431688397, 431850794, 431901390, 432016079, 432095261, 432112263, 135824393, 128974869,
+ 432161290, 432196304, 432275887, 25559999, 121929734, 432308725, 252117004, 122568723, 432340994, 432357402, 55754781, 118031272, 432373819, 432406554, 50937887,
+ 432423215, 3735659, 432458449, 432786130, 432996371, 433013583, 433045530, 121339910, 433062768, 161628170, 433111080, 433128233, 75530280, 433161039, 433195731,
+ 20365314, 433242114, 280903706, 2162717, 46530572, 2147191, 433258562, 433291274, 433307669, 433324072, 130285594, 433341998, 433392340, 433569815, 206668046,
+ 61800471, 433588949, 433635340, 198721546, 433654486, 433700880, 433717286, 48054301, 6373807, 433733678, 433783339, 433815578, 433831938, 2326538, 433851095,
+ 434061338, 434077999, 434111311, 293044276, 2015244, 434143313, 434178252, 385370840, 434211545, 434275741, 6422530, 434323487, 434342618, 434391771, 434520873,
+ 434552874, 2850818, 170803232, 1785882, 434571996, 434618394, 168935453, 434634803, 61440012, 434667566, 434716717, 55853097, 434752221, 150536952, 434848203,
+ 434899678, 159301670, 434948831, 136118356, 435027984, 435047136, 20365338, 435093558, 435129057, 435224602, 131334273, 435243746, 51855401, 113246432, 435391203,
+ 178078184, 435470362, 385875999, 435489508, 168821583, 435587813, 338133019, 317836006, 435683370, 47710218, 27624369, 435700830, 435750619, 435781647, 2195891,
+ 435800807, 435880002, 435912714, 32849941, 435929126, 435945510, 163643451, 435962145, 296026196, 435997416, 436325097, 384632157, 436437044, 134840326, 436469776,
+ 436488731, 33392154, 436538090, 436587243, 436652780, 45629478, 436765560, 24297867, 436814284, 5309002, 186466358, 436849389, 437062382, 437108767, 437125130,
+ 294633501, 437141998, 437177071, 320634882, 437240771, 437288972, 437305356, 294633487, 437321794, 437354926, 437406125, 50266150, 437454100, 437502006, 437534758,
+ 147063546, 332742672, 437551188, 152027148, 437586672, 437698644, 10652401, 437731850, 437766898, 49774614, 437829716, 437865203, 135168016, 437963508, 438029045,
+ 438078198, 438127351, 438225656, 438289276, 147407370, 438340345, 153749422, 8390714, 438520570, 438617027, 438665228, 438681642, 438698047, 269107266, 438733563,
+ 438812698, 438829058, 438845455, 5505039, 438864636, 252116994, 438943803, 149129981, 425082946, 438979326, 439009320, 439025685, 439042070, 439058434, 439074837,
+ 439091206, 246087685, 439109108, 439156776, 115785740, 439536384, 131334720, 439665971, 439715418, 439749377, 180437018, 439796472, 439830467, 439877658, 439894028,
+ 108625977, 439913218, 440060675, 440141217, 440191748, 440238111, 141836314, 440255374, 7733770, 440320303, 440353903, 13074434, 440385602, 440421125, 440598633,
+ 440632320, 440664080, 65912863, 440680532, 440713227, 138575877, 440730536, 8389038, 224935942, 440765190, 440928628, 118882358, 440991831, 2195598, 441040917,
+ 441057310, 441092871, 5310042, 441191176, 220758073, 260964436, 441287755, 441352202, 319602710, 441368592, 6717478, 441385948, 441418031, 3738377, 441451021,
+ 2195680, 441502474, 115294234, 441649931, 6602778, 441712656, 441729784, 50511893, 441499664, 441764620, 441958440, 29622301, 441975243, 168722442, 442023972,
+ 287113245, 1949727, 442040623, 442074609, 442105894, 442122271, 52723731, 442138666, 442155030, 442173218, 442204172, 170803831, 442221019, 442256141, 442318870,
+ 178962472, 442335292, 442419982, 442469135, 306774975, 442548251, 442583519, 150536297, 442632976, 442731172, 442796817, 2162714, 442925164, 237731878, 8388676,
+ 6995970, 442960658, 52363269, 277725226, 443058963, 6422540, 443187634, 443220898, 443253195, 443304724, 443550485, 443632406, 6193192, 176488485, 443665175,
+ 443728172, 443760706, 443794009, 3227678, 443829016, 443910937, 443991044, 444058394, 444137526, 2801721, 115851276, 444170543, 444203010, 140788391, 444222235,
+ 444301912, 275316762, 444334120, 444350476, 8390040, 444369692, 444612634, 444629024, 444663717, 444743708, 444760090, 15073296, 110247986, 444776532, 44171306,
+ 444811764, 444858427, 444893981, 444989533, 126877707, 445039194, 445073431, 445123358, 445169751, 445221663, 445497350, 445513747, 445530134, 50315280, 445547730,
+ 61456400, 445579696, 445614880, 5865556, 445678199, 445710358, 135905292, 445729569, 52756518, 445809325, 124863311, 445860642, 445973240, 347669372, 350633996,
+ 446008099, 48545794, 446055822, 446121420, 446155556, 446317589, 446368549, 437370911, 446447644, 290996264, 446464012, 383483914, 446483111, 446529548, 148357158,
+ 446547029, 8390247, 446578754, 446613562, 446677046, 446712473, 446777530, 446809577, 446857761, 140247561, 446906406, 446922783, 185975255, 446939167, 446955530,
+ 13549578, 446971935, 352092170, 446991142, 447299600, 447316008, 137102366, 447335207, 447414731, 430931998, 8391464, 447463505, 428883987, 447496232, 447512633,
+ 47038466, 447531817, 447627269, 67059748, 447643658, 2326544, 271925264, 348635167, 447660098, 291143682, 447692841, 447709268, 447744810, 447823903, 447840266,
+ 111214649, 447859499, 4997222, 147243062, 447938572, 318832666, 447955025, 447987750, 316621647, 50249738, 448006956, 448169164, 448217980, 418054251, 448269101,
+ 448348191, 3211698, 403947522, 329859126, 448364598, 77512744, 2834498, 154665023, 448397399, 448446474, 448462890, 177111062, 448479265, 448528413, 448544799,
+ 49790988, 448561174, 448577538, 6602809, 448596782, 448660374, 448711471, 2293772, 448807779, 448856066, 448872463, 448888834, 125796362, 448907450, 448938024,
+ 448954434, 448990000, 189071366, 449232942, 449282993, 449315287, 49086486, 449348121, 449413800, 449445900, 2195509, 2196454, 449463285, 449529540, 449593375,
+ 449609734, 1769503, 449628977, 110215639, 449691714, 55263248, 449724719, 449760050, 125927427, 449839463, 449871912, 118882370, 449888315, 449921483, 449970177,
+ 84934696, 449989427, 450134056, 4309419, 450153268, 450297878, 6406180, 450317109, 303579174, 450380623, 450412582, 86327334, 450431798, 450510904, 450543626,
+ 221806623, 450560066, 450592850, 450628407, 440811532, 450674772, 450707915, 450757417, 2195536, 450792248, 450890553, 450972474, 451248223, 451297517, 451332233,
+ 451413593, 2130865, 451463995, 2195561, 451562300, 120045770, 451625423, 451657771, 451690506, 262078485, 451707913, 451742525, 34701713, 451873325, 451969455,
+ 452002326, 2195612, 452034619, 193871882, 452067788, 452100633, 452168510, 45039642, 452231669, 452266815, 452447040, 212731873, 452509737, 55197737, 452526507,
+ 452558860, 147423258, 452578113, 452873026, 452902928, 452919312, 14745638, 452935720, 452952073, 452968464, 452984837, 453001226, 453017610, 1212452, 453036867,
+ 49742455, 367476742, 453099607, 195215381, 453151556, 5866526, 453214229, 117506285, 453233477, 5324863, 453312538, 453328927, 294060044, 453345751, 453378135,
+ 453429051, 453476779, 453512006, 453607891, 453656618, 66371615, 453674014, 275791900, 453705782, 290406416, 49790992, 453741383, 453870831, 453905224, 453970761,
+ 454036298, 454099031, 454150987, 454197364, 454213670, 454230045, 454246406, 454262826, 454279284, 454295590, 454311965, 99844117, 157646869, 454626125, 454656037,
+ 307134502, 454672405, 56246293, 454688902, 454705282, 2195668, 1196053, 455148435, 455199567, 455248720, 455360714, 455395797, 455428945, 455557220, 455589904,
+ 127713290, 5325647, 455609170, 455740243, 455819348, 348602383, 455854932, 455969621, 242368518, 32849956, 456084310, 456131031, 385515586, 456163340, 5868006,
+ 456182615, 456477528, 456524234, 2359727, 456559449, 456622960, 456674138, 456737758, 456786882, 24298434, 137052172, 456819912, 456851515, 66945050, 1769509,
+ 424230971, 456887131, 456949762, 456966170, 116228125, 456985436, 457048076, 457064486, 254345227, 457083741, 457116510, 457211972, 153190847, 2195538, 457261963,
+ 457328871, 113115147, 457425747, 457493343, 47923222, 25559079, 457539624, 46530581, 457558880, 457673569, 457739106, 457821027, 457998830, 7045151, 269664778,
+ 458031163, 458063893, 458080310, 458113050, 48021515, 458129410, 458147241, 458178987, 458212499, 458244101, 56721410, 458263396, 458345317, 458443264, 458489922,
+ 458525542, 458720407, 5324881, 458769896, 235765798, 458817548, 3227872, 361054210, 458833986, 324453467, 458866707, 158221367, 458885991, 459147798, 2130414,
+ 459213672, 459311977, 459376478, 341984558, 154469545, 459440194, 459472937, 389840912, 459492202, 429673323, 459688812, 3555330, 459819166, 459850329, 459885421,
+ 5505046, 438240194, 459948044, 2195756, 459967342, 237830175, 460065647, 460210258, 460242974, 460278640, 460327747, 460390459, 118472706, 460426097, 114606118,
+ 460537910, 460570681, 248840223, 460587068, 460671655, 2195512, 460721010, 460816621, 460849163, 110215586, 460867252, 460950387, 461062154, 166314026, 461081460,
+ 113115736, 461275617, 461324747, 461373582, 461407604, 461456263, 321863711, 188809275, 461504524, 134169691, 461523829, 461622134, 2198391, 461720440, 212959234,
+ 401834014, 461769593, 461946902, 327483404, 458244101, 461963303, 7307274, 142589990, 461998817, 2132858, 462094348, 312393756, 462113659, 462275051, 462309237,
+ 290996245, 462372886, 109166613, 124862952, 462392188, 462503948, 462521334, 44908556, 462556029, 462602262, 462618629, 462635020, 462651423, 27852842, 130580482,
+ 462667807, 6455338, 462685173, 462751489, 462801790, 462913548, 349388802, 292766156, 110249440, 462930261, 462982015, 463047552, 463111036, 25559138, 463162241,
+ 296960054, 463274443, 463326082, 463424387, 2196979, 2834540, 463488372, 463539076, 463601727, 238551139, 463636318, 372327160, 463701444, 463735197, 464145286,
+ 464309127, 464420902, 234176540, 464437390, 45039656, 52363285, 55623711, 464472968, 464685961, 464732244, 464764938, 4390931, 111624197, 464783877, 464830767,
+ 80936966, 464863254, 464879642, 464896016, 464912424, 464928810, 24838166, 121651202, 464946345, 154796141, 464979144, 465013642, 465092620, 5488652, 430686229,
+ 465109008, 59375642, 465125398, 465144715, 465257254, 19841060, 465289272, 465321986, 5505061, 3230604, 465338380, 304627714, 465354764, 148636125, 465374093,
+ 465456014, 465535007, 465551441, 465585652, 465635913, 465698909, 465748067, 301006858, 465780795, 369623056, 465816289, 2523158, 465914767, 275464202, 3211695,
+ 466013072, 466158047, 466193297, 27623505, 466289558, 466340754, 466419722, 48513045, 170803293, 185483701, 466439059, 6898497, 27607050, 41582602, 466520980,
+ 466698306, 466732062, 466764822, 466813231, 466845762, 466881429, 466930582, 467058690, 467076086, 467107947, 467143575, 467190285, 467238924, 65896486, 467255388,
+ 467288076, 117751848, 87916575, 467304460, 184713247, 467323800, 467372953, 467484779, 467518664, 9551874, 467550210, 145145882, 6324236, 467569562, 237257837,
+ 467747295, 467781009, 467848091, 467910749, 467960744, 409829442, 467995548, 468058193, 468090901, 44613653, 468107266, 112936251, 468124185, 136101990, 468192157,
+ 468271110, 468287509, 191070248, 468304303, 468339614, 468388767, 163594347, 214564930, 468533264, 27246608, 173490235, 468552608, 468697119, 168820738, 468715550,
+ 468763161, 468828207, 2195533, 468860930, 110249520, 468879638, 163315794, 468962209, 469060514, 469107768, 45613082, 469172695, 469205463, 195264524, 469240739,
+ 469319699, 469336086, 272908298, 469355428, 427720735, 141852675, 469418521, 469483628, 31424533, 469519269, 2198438, 469617575, 29769730, 51019802, 469746572,
+ 469795814, 142868511, 469829818, 6225936, 469863336, 469943929, 469991855, 470027177, 308117506, 49905721, 470368293, 470384652, 10371129, 470404011, 470485932,
+ 136118331, 470829997, 392544294, 470876226, 184386450, 470909961, 470944686, 188874764, 471010223, 471157680, 225181734, 471236667, 471272369, 325238850, 471436210,
+ 293421082, 471518131, 471564347, 471599812, 29769747, 381665296, 49774613, 471630995, 174424066, 471665588, 471780277, 309624848, 180207628, 165134357, 471960502,
+ 472006667, 124403728, 472023106, 22216709, 472058807, 472206264, 180404226, 472288185, 472368072, 472452026, 472613378, 472646169, 472712864, 472743976, 244891670,
+ 472763261, 472809538, 191545354, 472843177, 472891833, 472943547, 473025468, 473204010, 473251842, 17809434, 473268256, 260063316, 473301038, 163595294, 118882767,
+ 346538043, 473353149, 216449545, 473415783, 473498026, 473530378, 473547383, 473582526, 473631679, 1917026, 473743819, 162660373, 473795520, 473973900, 474021940,
+ 474054682, 474071062, 77709328, 474090433, 287145995, 474188738, 474254275, 474367274, 474415160, 474450884, 474500037, 474578970, 474071062, 474598342, 468452193,
+ 474646011, 474696647, 474825652, 474891185, 474923018, 474942142, 474991560, 475054539, 475103286, 475137115, 475170209, 475220937, 2198474, 475270091, 475431857,
+ 475464908, 475512863, 475529818, 7733291, 475562006, 238714892, 475578434, 464783846, 475611238, 475644372, 475676694, 2162730, 475696076, 475841457, 475874198,
+ 475922442, 282036094, 475940009, 185417770, 266765206, 128974858, 475974605, 476054105, 476086282, 306774145, 476102668, 200736789, 476512765, 476564431, 476839995,
+ 476872788, 476905478, 294371349, 476923178, 318144528, 476971609, 477004738, 477036598, 477069314, 477085725, 60719120, 477102082, 2195574, 477121488, 477185331,
+ 17154079, 477233198, 4998235, 477283196, 468304886, 477334481, 150585376, 148357136, 477431117, 47546394, 477496161, 477531090, 477759402, 477823076, 477855828,
+ 477888524, 477907923, 48136194, 2342940, 477973460, 478235605, 478332695, 478380072, 472743948, 478396941, 478448598, 478511163, 478543898, 47120421, 478560715,
+ 478609427, 2147780, 478626283, 478661591, 287244325, 478740492, 302055534, 478756874, 6438924, 478776280, 478825433, 478871568, 131891257, 478890970, 478986306,
+ 479020619, 479071022, 135905292, 3686403, 479133698, 381550629, 479153115, 479235036, 479282895, 479313932, 479330306, 56492058, 479347626, 479428618, 2195519,
+ 479448029, 479497182, 252298585, 479674427, 479707162, 2359830, 479723558, 479739935, 479756290, 479774252, 137101826, 166428714, 479805506, 479841247, 480070378,
+ 480116802, 480149793, 480182561, 480217244, 8389364, 480265019, 480313839, 480349152, 480395310, 2129956, 202457401, 480445830, 480512993, 480594914, 480676835,
+ 152947684, 480854100, 368902195, 480887817, 25559103, 480920905, 480971749, 481051083, 3211724, 481099788, 481116170, 481132554, 45776908, 481149231, 481184742,
+ 5865577, 481247291, 481280021, 135168031, 481299431, 481461499, 117407775, 481512424, 481561577, 481624353, 481656924, 481692650, 481771622, 481804290, 481820698,
+ 2408485, 481837115, 481869917, 481922027, 250544144, 482036716, 482181142, 482197537, 482246658, 63817095, 482263078, 482279462, 482295867, 482330427, 482377787,
+ 482413549, 482574348, 482590722, 48021525, 132154252, 482610158, 2261008, 482855429, 482903691, 482967639, 483019759, 340770870, 483131458, 232374325, 483165206,
+ 256720912, 483213366, 483247475, 483280262, 483347440, 5309449, 483409997, 483442780, 483786811, 343212561, 483822578, 483934445, 173113382, 483970035, 23363723,
+ 313245698, 484082601, 484133876, 484230153, 484261995, 484294722, 484330485, 484426219, 372949094, 484461558, 484524044, 441565294, 484542740, 193953804, 484591043,
+ 484639390, 484674551, 484786221, 343295129, 484819010, 484854776, 484900927, 64275072, 484933698, 153879442, 484967841, 485018617, 485163688, 64765974, 485198205,
+ 485280762, 115769426, 485326902, 3214331, 485359703, 485409745, 485460988, 485720555, 485752854, 318783504, 485772285, 167005090, 485870590, 485982246, 485998658,
+ 299008006, 486031381, 352109081, 439746562, 486049275, 486098092, 486146132, 486179295, 486214655, 309723167, 486280192, 486378497, 5799958, 338363215, 404160543,
+ 2131182, 486476802, 486640407, 325912806, 486706179, 486801429, 486817818, 155533328, 270434320, 204537894, 486834188, 486851029, 486902583, 47038476, 486951940,
+ 487079974, 487096347, 2326752, 107757574, 487129154, 170705929, 487161915, 487196524, 487227867, 487263237, 487489643, 487525382, 2835430, 487639286, 487689223,
+ 487768163, 487800891, 55377958, 55377932, 487836680, 263946262, 155779088, 487883352, 487918601, 487984138, 131334673, 488047439, 488079791, 344736265, 488113040,
+ 488145894, 488177718, 488210451, 488226838, 488243202, 131891238, 488262667, 488374284, 488390668, 69156879, 2179108, 488409588, 44613748, 181175326, 488866216,
+ 32163586, 488999293, 489081869, 489275660, 154190257, 489325462, 489376782, 16826408, 115769451, 489440145, 170804198, 489489438, 489524239, 489701483, 489734203,
+ 489766996, 489799691, 357597186, 489819152, 489931806, 322715660, 489963558, 142835750, 489979970, 490014329, 121339930, 490062671, 279904268, 490094630, 490110978,
+ 148897813, 162499601, 490130450, 490343443, 1933333, 490425008, 117506132, 2998284, 490471490, 490506463, 490586397, 490618934, 118915103, 490651704, 315588614,
+ 490684875, 490733986, 490766338, 490782758, 1916960, 490802196, 23380541, 491078392, 491110454, 491146261, 7602188, 491228182, 147423244, 2998274, 491291637,
+ 491357832, 491408048, 491455224, 491488265, 491520042, 491536406, 491552770, 114114571, 491569611, 491621399, 491700683, 4653527, 491750430, 491782190, 491831353,
+ 46497823, 491847746, 491883544, 223608854, 491963478, 492011532, 115785730, 492027942, 42599247, 492044314, 149569548, 139035887, 492063769, 352518160, 492129306,
+ 492440603, 492489756, 2197199, 492617830, 492650799, 457706525, 492684297, 492716044, 4980852, 492735518, 492978389, 493014047, 55164944, 493076546, 493109280,
+ 493142923, 112935945, 282034229, 493209944, 493274541, 493323087, 493355491, 385662998, 493387842, 493423171, 2113573, 493469750, 336789581, 493502483, 243220490,
+ 493518935, 493568031, 161726470, 493584816, 493618313, 292110339, 493666314, 291110951, 493685792, 493830635, 493864308, 110215928, 493915169, 493961309, 494010413,
+ 348651547, 494046242, 494111779, 494241193, 494272578, 208764938, 350863376, 494305311, 346488834, 494323483, 494370837, 56557570, 494390308, 349765654, 494453582,
+ 1917873, 494521381, 494603302, 494734375, 494780432, 261131304, 494799913, 24297696, 494863369, 45613098, 494896533, 494947370, 495029291, 495075435, 495111212,
+ 495324205, 427098551, 495419458, 495453912, 495502997, 495567370, 495602734, 495682569, 495714370, 495747507, 495779899, 495815727, 495861800, 466485258, 179716138,
+ 4408143, 495881264, 336724025, 135823426, 496009273, 496025612, 49152019, 115738362, 496045105, 147407424, 55918604, 496157988, 496208946, 496271584, 496304182,
+ 402309146, 496336922, 496353364, 496389171, 131876079, 496484402, 496519326, 496549928, 496566388, 3309590, 496583178, 884764, 178962442, 496615435, 208896028,
+ 496634932, 496746552, 496779266, 496795674, 156827951, 277725216, 496812109, 496845720, 496894427, 496927753, 496962613, 497241142, 126746640, 133283842, 497354341,
+ 497404095, 497434646, 215744548, 497451024, 1918366, 3245167, 497467458, 497500257, 497566959, 497599356, 497650743, 497732067, 497762306, 474071050, 497781816,
+ 27624457, 497863737, 498139243, 8390102, 498171988, 2260997, 498206110, 498240570, 228376588, 498386518, 498453563, 498519100, 360693786, 498598697, 498630698,
+ 498647062, 498663445, 414909308, 498679820, 411746306, 498699325, 498797023, 498843688, 498860053, 498876422, 498892809, 37748759, 498910473, 116376043, 498942553,
+ 498974796, 499008002, 499043390, 499105823, 499122197, 120111721, 499138591, 499154954, 198328357, 499174463, 346177595, 499223616, 499289153, 5324910, 499352011,
+ 481820682, 499403842, 355729464, 499551299, 499613787, 499646530, 499679260, 126287884, 129876027, 51675162, 499695853, 499728386, 499744794, 499761666, 499797060,
+ 190644701, 499909035, 499944517, 500173894, 278216763, 500239431, 500370504, 500450826, 500498469, 108298262, 500517961, 500629544, 500645909, 500662288, 500531228,
+ 4112386, 500678677, 500695066, 500711426, 2719750, 2359315, 500727874, 8389756, 500760642, 500793363, 500809750, 2621480, 119800032, 500829258, 500959749,
+ 155648016, 52576278, 115769374, 501009072, 501058588, 2196941, 501188245, 501253129, 501288011, 501350454, 501384222, 152190987, 501419084, 501563499, 126042140,
+ 501596697, 17842283, 501662218, 501697613, 501761192, 501812302, 183582736, 501891078, 82559007, 501909211, 501940236, 295272459, 501958459, 502006904, 502038540,
+ 502054918, 122568725, 502071336, 3244086, 502500432, 204996624, 3227736, 502579688, 502615121, 502729383, 2197364, 167002626, 2195512, 502778962, 502860883,
+ 17842286, 502924810, 502972447, 235880460, 502989854, 150799529, 503021590, 439746562, 503041108, 503186906, 503267380, 45498384, 427213747, 503303253, 2359727,
+ 503385174, 503463976, 503483479, 503529498, 503545858, 503562871, 2196403, 503595095, 503647320, 503907423, 503971856, 48660506, 503991385, 504119377, 504155226,
+ 504218035, 93700122, 504252799, 504315957, 8390593, 504348975, 504384603, 504479803, 504512514, 504529658, 504561686, 183353356, 504579081, 504610845, 120979888,
+ 504627503, 504663132, 504709136, 126615574, 504725981, 122568714, 504761437, 25560094, 22216710, 504876126, 116064282, 505023583, 505118766, 505168361, 1933323,
+ 505217062, 505233437, 363560972, 505249848, 505282599, 1769500, 505316750, 2195914, 505380885, 108298266, 505400416, 505531489, 1982493, 505597026, 505678947,
+ 505709719, 505757738, 505775517, 505825083, 505873609, 505922011, 1917355, 505957476, 506121317, 506236006, 506349195, 506413098, 282035123, 227705432, 2326568,
+ 506432615, 506511391, 151093254, 506529359, 506577760, 506645608, 506776681, 506841460, 113115174, 2130355, 506907754, 1818646, 507035747, 409273207, 507071595,
+ 464928831, 507134844, 507185065, 507235436, 507347043, 507380312, 5868006, 507412492, 2196960, 507432045, 507513966, 110624790, 507675678, 507707398, 328073238,
+ 107479052, 206471178, 45875219, 282034275, 507723878, 507756573, 507773004, 507805783, 507855279, 507887919, 225181717, 507923567, 507972720, 508266507, 508330513,
+ 508362754, 299008019, 508380550, 508445130, 508478807, 508527043, 176488459, 508561607, 66273306, 508628081, 508742115, 508775538, 500973868, 509004915, 509116447,
+ 509132830, 509168756, 509214779, 509247547, 509281417, 3245225, 509330850, 117424159, 509378644, 54444042, 509412418, 2361131, 509476866, 52133907, 509495633,
+ 2197364, 509578357, 509643894, 509689862, 509706246, 509725815, 509804556, 509821020, 509853750, 261193739, 50659331, 509886551, 509935714, 2031656, 4456555,
+ 509968438, 510001154, 131859486, 510020728, 510181483, 510217019, 510313254, 510346249, 188106257, 191070224, 113246310, 510381177, 510495471, 510558267, 510591498,
+ 510626938, 510757922, 144048166, 5309854, 510820411, 510855140, 510885942, 510921851, 511167612, 511297441, 511344662, 511364221, 511442974, 135497365, 511478910,
+ 511577215, 244908044, 511624048, 324894772, 511672779, 511722887, 1212418, 511754327, 126517259, 214368275, 511806592, 512082934, 8391809, 512117568, 512183426,
+ 512376891, 512411123, 512442395, 512476169, 48054314, 512508336, 512541530, 512574287, 512606227, 46497808, 512622635, 512655414, 512688130, 2195754, 512705537,
+ 2196415, 512753718, 512786475, 248840202, 512819801, 512853499, 512902942, 512968249, 513065481, 137019398, 884788, 513100931, 513146946, 513179658, 354304042,
+ 513199236, 513261622, 88686614, 513297541, 119998004, 495682050, 513409061, 513425414, 237322252, 513444998, 6619189, 131795015, 513576071, 513769579, 288997392,
+ 513805448, 143753254, 513886443, 513949717, 513966102, 513984716, 514015242, 2621556, 47923242, 514031635, 514048010, 514064412, 514080778, 514097209, 27705401,
+ 514113565, 224133160, 514133129, 514477194, 514588708, 514605084, 2179082, 514621462, 514637881, 514654249, 514670602, 7634972, 6602758, 514687057, 2195537,
+ 514721799, 351010844, 514769322, 514801680, 514818054, 103743491, 514835477, 514883638, 115589139, 355106842, 514916406, 124862574, 514952331, 515033109, 515067020,
+ 515178518, 90521636, 515196671, 515245363, 515293190, 191184902, 515309584, 230621213, 515329165, 115769446, 211337222, 515473448, 515489828, 515506204, 38879242,
+ 515522612, 24297574, 515558542, 515621006, 515653642, 54460445, 515670863, 189464586, 515703980, 515755151, 515801100, 355729708, 156829424, 313786839, 515817474,
+ 515834971, 515866626, 515883018, 515899413, 515915807, 194282305, 139984918, 516538413, 237699126, 904337, 516574354, 516620408, 8391827, 516637510, 515951761,
+ 516672660, 516721302, 8159263, 516767767, 516784154, 516800514, 8159261, 86327353, 516816918, 516833395, 2621456, 516850303, 516882567, 516898950, 34455682,
+ 516915216, 516931610, 77496329, 516948105, 516967573, 516997122, 517013516, 517029906, 517046404, 2031750, 517062671, 517079080, 517095462, 173359219, 517111830,
+ 517128323, 517144585, 10371088, 517161041, 517193862, 517210153, 517226514, 517242892, 517259267, 2621441, 517275674, 7307269, 517737623, 357597215, 517803160,
+ 517980171, 8945666, 517999769, 518127654, 518144054, 518176867, 518209995, 518258912, 5324905, 518291561, 147013670, 518327450, 518375262, 518438954, 518455308,
+ 338771974, 51888154, 518474907, 182419468, 518553638, 518570038, 518605980, 260964436, 518655133, 518734630, 3211566, 518767908, 518818974, 518897888, 518930791,
+ 518963659, 519015583, 519143455, 115818502, 519163040, 519258217, 519290882, 137104545, 73744386, 519307801, 519373289, 182157314, 519425186, 116375636, 519474339,
+ 6193190, 519538538, 519572644, 519720101, 519816015, 2162703, 519848239, 519882120, 3916623, 519913556, 519946261, 185286672, 400801900, 519962684, 366215242,
+ 520047782, 520129703, 321552386, 295272463, 520177057, 520224783, 424509462, 520241607, 520293544, 6455315, 520539305, 3457045, 520585282, 499270092, 520621226,
+ 141411358, 520703147, 520768684, 51494939, 520847362, 520863770, 222183445, 520883373, 47120386, 520945676, 17006618, 520965294, 521044006, 128761858, 68386828,
+ 521061292, 521129135, 521208711, 461963398, 163315936, 521256979, 99893260, 521273403, 521306150, 521323432, 521355348, 521391280, 521519180, 521551910, 225116191,
+ 521568272, 521584646, 521601045, 521617424, 99893259, 521633808, 521650202, 521666582, 521682946, 521699356, 137412637, 521718961, 521781250, 159645722, 521797654,
+ 55263263, 521814475, 521863194, 521881014, 237830146, 521931954, 522030259, 522076214, 522108966, 176488486, 522125536, 522158092, 247840794, 522174561, 522240026,
+ 522256396, 522272806, 2162726, 522292404, 522371082, 522387515, 522420245, 47611907, 522439861, 290996255, 522485800, 15073306, 522505398, 110232687, 522620087,
+ 522698783, 522715178, 347144214, 522731586, 522764372, 109199414, 522797359, 45056011, 522831750, 522929782, 522978216, 523013251, 105562135, 523060455, 523108390,
+ 49790978, 523127992, 7733304, 523173954, 150241290, 523209913, 523406522, 523436086, 523468838, 523485721, 245301288, 2130223, 523553979, 45039654, 177094659,
+ 523652284, 523731379, 523763799, 523816125, 523865278, 523961729, 524009474, 49938458, 1900586, 524027387, 524078057, 524141532, 524173986, 524569792, 524782785,
+ 524828771, 524861527, 524910816, 2506763, 524946626, 525041690, 525058114, 525094044, 525139989, 525156378, 525172752, 29900815, 525190170, 142589978, 525238284,
+ 147013658, 22216723, 525254668, 525271182, 525305363, 525388995, 525484977, 198754363, 55328780, 525520068, 525598828, 525631943, 19267605, 525683909, 525779043,
+ 525811766, 297386744, 525847750, 525896903, 125583459, 2834539, 525995208, 526172176, 526188554, 257638431, 526204953, 526237793, 526303284, 526336059, 526368794,
+ 20365348, 526385236, 526421193, 526650570, 526712891, 112525333, 168394851, 526745665, 526794762, 526811168, 526847179, 526909466, 526925834, 526942239, 526961053,
+ 119997814, 527007787, 527040967, 47939624, 527089691, 527122491, 1982490, 527155212, 211107846, 527174860, 527237159, 6373484, 527270315, 527304320, 527351820,
+ 393494538, 527368213, 131318878, 111624223, 527387853, 527584462, 130859034, 527779710, 208502872, 110234831, 527813840, 527958455, 152964305, 527994066, 528138477,
+ 6897953, 528171070, 528220162, 528236559, 528252950, 528270230, 241434626, 456559827, 528321748, 528367637, 528384016, 528400395, 528416770, 122568725, 528433178,
+ 528449552, 47611919, 528466807, 528498734, 528551125, 99483677, 528629826, 111624234, 466157927, 528665814, 188580754, 528760861, 46121000, 528777675, 528828123,
+ 528859151, 528875541, 160727052, 528895191, 529056238, 529088528, 110100506, 529105367, 529137685, 152354847, 529154079, 529173720, 529219596, 529235989, 208994334,
+ 529252374, 529268738, 194101259, 330874890, 529286000, 247775258, 529335793, 529370329, 529452250, 166871071, 529498143, 529514502, 181813254, 7095265, 529530882,
+ 249988017, 529549493, 29491259, 529596953, 529662860, 529714008, 529763547, 124862766, 529860950, 529908766, 529943772, 530025693, 530055174, 20365328, 530071636,
+ 530104740, 530402527, 124862955, 453214220, 530549149, 106446867, 530599136, 530694176, 212877324, 530727019, 6373613, 530760734, 530795745, 16728073, 13074453,
+ 530876859, 173113370, 531006200, 531041506, 531087444, 108314983, 531120650, 531153433, 531221731, 531267626, 114114572, 193200138, 531287268, 51675174, 531333204,
+ 515653658, 531369189, 531500262, 2196649, 147013663, 531645030, 531677186, 531693594, 531709981, 205209602, 44253212, 531726403, 531811559, 531909864, 8604905,
+ 531972106, 110248411, 531988546, 532021274, 6455325, 532040938, 532172011, 532234300, 2146522, 532316247, 532365418, 532448276, 532499120, 166068280, 532545548,
+ 3178508, 532565228, 162168859, 5324899, 532643881, 532660262, 532676610, 122732586, 532696301, 32325655, 532942062, 533037066, 533053977, 533120345, 345374730,
+ 4980758, 533152627, 533234600, 533266513, 533299238, 533315692, 533348576, 533384431, 2196289, 452853798, 533512202, 50937858, 437682615, 533529576, 46088202,
+ 294027290, 533581040, 25559466, 533643274, 115015739, 533662961, 533774338, 118210566, 533791567, 61456394, 110100496, 533823519, 199459243, 533840784, 533872949,
+ 533923214, 6373847, 533988552, 534020098, 93978665, 501170182, 534416627, 534609930, 127713311, 534626750, 534695156, 534773819, 534806538, 3211735, 141606949,
+ 534826229, 241190296, 534888480, 534921218, 127746079, 534939034, 535039222, 535118295, 535150651, 535183459, 535217090, 535248926, 535284983, 535397112, 535430030,
+ 535495115, 535543890, 535576879, 535610377, 535645432, 535694585, 18153482, 535743738, 29622388, 535890884, 535937492, 535971047, 536019880, 536051798, 536087803,
+ 536182851, 536265335, 536298385, 126599170, 536347083, 536399100, 536510495, 159973859, 536530173, 536612094, 522977339, 536775935, 536954257, 537021696, 537083930,
+ 537100718, 5308843, 537149442, 537169153, 537199051, 537251074, 82558992, 537296898, 537314334, 537349379, 25561334, 537477608, 537509890, 402195192, 537529038,
+ 537644292, 537755679, 537772503, 174424080, 115114855, 32849936, 150388795, 537807421, 537886758, 110133294, 537906437, 537985067, 538017830, 538034651, 538067856,
+ 538099733, 46039066, 538116099, 520093780, 538135814, 538201351, 538312706, 99516454, 538329109, 46710786, 538348808, 538496265, 538545418, 538640819, 538675554,
+ 538722388, 538757307, 122044428, 538806171, 538870686, 538905867, 539118860, 539263785, 539296047, 539328552, 237731843, 539344912, 88948776, 428720165, 539361339,
+ 539394132, 539430157, 539526144, 539561230, 539623505, 539656249, 539672588, 122683418, 539692303, 539754550, 539790608, 539853817, 8391953, 539938066, 540000315,
+ 540036371, 27852838, 54296597, 540085524, 78479397, 540147771, 540180486, 540196916, 6766604, 540230479, 540262410, 442793996, 540279239, 50036778, 185319462,
+ 540331285, 540577046, 540721179, 540753958, 115163167, 540770363, 49938442, 540803522, 540835861, 540853172, 46352887, 540921111, 51380234, 5325665, 540968030,
+ 447840268, 541018040, 17842230, 541183256, 541229593, 541294644, 541330713, 541392898, 541409311, 428769318, 541426152, 541458574, 541492770, 76644355, 541543706,
+ 541655640, 541688744, 404029442, 17006607, 541721207, 541753370, 161808386, 541769793, 541819757, 541871387, 541950864, 541986076, 542048294, 154665435, 112476198,
+ 2162691, 542065099, 542115273, 258965514, 542182685, 542326815, 542343170, 121077770, 542359618, 5308634, 13074474, 542392779, 103940138, 124551187, 542441907,
+ 542474243, 298959695, 542493982, 542623471, 542687248, 120258579, 542705945, 542769233, 542801980, 542884873, 149160990, 542916627, 542933442, 542965791, 144048138,
+ 542982574, 543032310, 182157328, 543067423, 543179825, 543260703, 144179216, 366968858, 543277096, 543293478, 122568746, 400801900, 543313184, 543408159, 17006611,
+ 155648002, 543427873, 543473748, 543506470, 543522875, 543558946, 543637535, 543653898, 543673635, 543802229, 543834571, 121356309, 128155674, 543886628, 543982069,
+ 544014390, 544047144, 1900575, 112033801, 544476454, 544768060, 544853287, 150537053, 544899586, 544932299, 544981004, 150290458, 545000744, 545063957, 545112095,
+ 162250768, 545129295, 149930415, 545164585, 49905674, 545226790, 110120216, 545246506, 47251468, 545309730, 148733992, 545342268, 545390604, 545407068, 3833885,
+ 545439803, 545475096, 55132202, 545538272, 94601228, 545574187, 246136870, 545622734, 545738028, 1114150, 545833912, 545882626, 545918253, 545964068, 316899357,
+ 545983790, 546096940, 128581644, 546145192, 546180399, 546209828, 546226630, 546259247, 546291724, 546308111, 546324501, 546340895, 52609053, 546357355, 2408467,
+ 546390028, 546406421, 546424473, 546472039, 546557232, 546603014, 546619446, 432914463, 546653817, 546701328, 546718829, 546750476, 546766858, 546784124, 371277843,
+ 546835761, 547048754, 547127312, 6373478, 547147059, 440746022, 547258452, 547291152, 515653670, 547310900, 547454978, 547471370, 547487750, 56639510, 547506015,
+ 547569769, 547604041, 547687733, 6455322, 547782692, 547799056, 547815948, 114212866, 547848232, 547864614, 547880971, 547897360, 201572362, 547913750, 547930128,
+ 547946522, 547962882, 2801683, 547979266, 268435462, 547999030, 306676249, 233473023, 548064567, 84246546, 548307051, 548339765, 548372511, 226951225, 548389972,
+ 548438022, 147816454, 48021510, 548455837, 548504883, 124796970, 548556088, 514687014, 548621625, 180879423, 548851002, 548913236, 548945941, 548962344, 548978714,
+ 548995138, 3214173, 549028718, 150536297, 541753354, 549093414, 243516239, 549113147, 120258582, 549208498, 549244220, 549322778, 75464720, 549339630, 549373488,
+ 549408061, 549571902, 549670207, 164774775, 549800050, 549883200, 549945413, 549981505, 116375636, 550047042, 550210075, 23773323, 550260035, 550355003, 44171290,
+ 550388830, 127500304, 550440260, 550518851, 550601176, 2196571, 550666261, 114081814, 550686021, 550767851, 550833308, 116375611, 229461318, 550880763, 550930811,
+ 550977595, 5866408, 240582737, 551013703, 551079240, 551226697, 551371055, 19267622, 551404021, 176980436, 551439690, 130285599, 110247963, 551587147, 115523622,
+ 551747668, 151732262, 551780378, 551796782, 1785866, 551849292, 50184198, 551931213, 552127822, 110134493, 552288266, 552308047, 191644078, 552386570, 8392016,
+ 552406132, 552452108, 6193190, 552468546, 552502338, 552566794, 552583700, 552632544, 48054294, 2129958, 552665155, 552748970, 552815953, 552894495, 16826380,
+ 552911336, 552943713, 144982028, 296634142, 553010017, 553043609, 553091084, 13074468, 553107891, 553140255, 553156618, 553173295, 553207353, 553307474, 108315153,
+ 553536851, 553599019, 553635156, 553828398, 8391102, 553880917, 553946454, 554156074, 554172475, 177226716, 554207092, 554237993, 554254348, 554270746, 99893290,
+ 554288402, 554355457, 124862766, 291095487, 554401876, 150913062, 554434644, 18153510, 554470743, 132792358, 165494786, 554617885, 554663942, 465551419, 554681366,
+ 5308835, 554729494, 17154060, 87916575, 554749272, 554876930, 153714726, 2196591, 554893314, 45613094, 45727746, 554909742, 554959657, 554991626, 3538950,
+ 555011417, 555224410, 555270198, 19267594, 555306331, 108314729, 555437404, 2195648, 555502941, 555581482, 555597890, 192495626, 25561445, 192495622, 555631988,
+ 555679746, 555696170, 555712578, 555745739, 555794891, 555843594, 397266270, 555863391, 528187418, 555925514, 555943145, 555991511, 116376776, 556023874, 556056996,
+ 556090759, 393543692, 556125536, 556205086, 556237259, 556287612, 556338529, 556387682, 556483614, 556515787, 470535523, 556911973, 557105454, 557137922, 557154314,
+ 147013651, 557171121, 557204878, 557269018, 557285378, 133496842, 557302603, 280445399, 379256874, 557367355, 557401199, 557434326, 4980793, 557485414, 557550951,
+ 557613096, 544047132, 297386419, 557629499, 557662733, 122324359, 557711790, 557761695, 557793739, 557842516, 159449144, 557875216, 50118682, 557895016, 558039127,
+ 558088494, 2197040, 558124393, 558186555, 199458872, 240943531, 558222698, 558304619, 3244558, 558465040, 268468262, 558484844, 558598081, 558645294, 558694507,
+ 3261249, 558730605, 124862935, 558891089, 558923822, 558972959, 168722458, 558990951, 559040315, 25560155, 559087682, 559120477, 6733826, 559169995, 559218787,
+ 559251888, 559284250, 559304046, 122126909, 559369583, 559517040, 559646025, 559694990, 559743006, 559779185, 307610490, 559857723, 559893874, 126615578, 560057715,
+ 560120110, 560152597, 119996961, 560172404, 1982474, 387416935, 560316503, 560369013, 560414732, 195952671, 560431163, 560464303, 154042828, 560496652, 79757369,
+ 560516470, 560647543, 560709642, 560726446, 560775705, 125583389, 560842077, 560893304, 560991609, 561089914, 561168462, 561234457, 561301525, 561333979, 561365035,
+ 21102608, 561397819, 561431042, 322143140, 561466747, 561546152, 561578015, 353189972, 561596315, 561660441, 46088202, 530730364, 116376086, 561725506, 561761661,
+ 561938491, 56164362, 561971202, 154665905, 561987596, 107462658, 562004920, 562053162, 562070406, 562102331, 562135100, 562216981, 562233881, 562302334, 562367352,
+ 562417023, 562495519, 562511888, 254345273, 562528310, 125583417, 562561055, 176504842, 119817125, 562580864, 562627537, 536233482, 51675151, 308003249, 563023234,
+ 563200016, 218841126, 563219843, 563265572, 563281926, 128974859, 563298315, 24838172, 110231608, 563318148, 563462615, 563495763, 82001922, 563560458, 25559086,
+ 563578201, 563612722, 563676568, 563725288, 563773524, 563806234, 563823194, 48611368, 563858821, 241680424, 563953666, 563970155, 6947663, 564002859, 335446054,
+ 564035887, 564068373, 564084762, 564101136, 564117519, 564133910, 564150338, 564183056, 213958666, 564201955, 564232279, 564281366, 564301190, 25559139, 564396044,
+ 93978634, 564413016, 472203290, 564445268, 564481415, 564625430, 564643135, 118915078, 564707366, 564723714, 564740107, 175669279, 79757323, 564756496, 564772890,
+ 564789680, 564825480, 276906043, 564904395, 564953391, 564986870, 565022089, 565116959, 565133350, 392462374, 565149698, 212107304, 565166927, 565198911, 565231638,
+ 7734105, 283721820, 565251466, 565381637, 565430693, 223707146, 565480843, 565575706, 565592066, 151732262, 565611916, 133414922, 565706764, 565723162, 565739995,
+ 122667011, 565775757, 176521282, 565821471, 565838882, 565873793, 565920176, 565955982, 114393098, 566018075, 566054287, 566116439, 566165536, 566198315, 566231050,
+ 131334442, 566250896, 566362401, 566394932, 566428185, 566493195, 165134364, 566511716, 566562193, 73187344, 99500063, 52576268, 566676882, 566807516, 189513754,
+ 566853678, 566902868, 554270760, 566936312, 566970789, 567017531, 567051744, 567084062, 567116823, 567165012, 135184422, 567201171, 46088195, 567379668, 567427078,
+ 567443532, 2130378, 567479700, 141411278, 234307622, 567575580, 567607318, 567627157, 567725462, 567823767, 567869481, 351387686, 67059743, 567889304, 567984236,
+ 568016923, 568053145, 568118682, 568180762, 568197196, 568231006, 353239147, 568279342, 568312641, 568348059, 568413596, 568528285, 568655882, 232849410, 568673177,
+ 568803330, 568820226, 185319445, 568852492, 568868890, 8389472, 568885785, 445841434, 455442458, 568950820, 261193739, 568967227, 569003422, 569049147, 569081885,
+ 569098256, 82558982, 569118111, 305119291, 569278924, 569311298, 569345175, 138641843, 569396640, 133447699, 569510367, 569560481, 569638965, 94109715, 569675170,
+ 47710223, 17843041, 569770006, 569786460, 144605291, 569819624, 569855395, 570033054, 33243172, 570068388, 463028270, 86327336, 150569023, 570166693, 570245146,
+ 570261516, 8390685, 570279499, 570327124, 116228153, 52215834, 570359862, 6373590, 570396070, 570621975, 570638468, 2523142, 570658215, 44531749, 570687590,
+ 570720282, 2197708, 144146453, 570736652, 183369756, 570753559, 570789288, 21151755, 570818676, 570834966, 570854825, 570884132, 38879258, 570903978, 570998807,
+ 571015191, 571034025, 8388877, 571064459, 571097111, 1949722, 571097218, 571113513, 571129878, 99876885, 157646964, 571149739, 571313580, 571362250, 571395018,
+ 66816970, 82001932, 73531421, 571424770, 571441183, 1900580, 6620267, 571461037, 571752477, 2031673, 571768868, 19447819, 571788718, 53837958, 49938434,
+ 94846982, 571850789, 84836468, 571867146, 571887023, 571968698, 571998244, 148638121, 79937543, 572015603, 189464595, 572030986, 572047476, 572063763, 572080165,
+ 2031657, 572460465, 572523361, 121045013, 572556875, 572604953, 572673458, 572751878, 527155212, 572768781, 170344486, 181191592, 572820915, 153192767, 572932590,
+ 572964930, 572997642, 115015983, 573014109, 48545823, 573063206, 573083060, 136118318, 108314680, 573178765, 573262181, 437980597, 573309836, 573359906, 573390869,
+ 3342362, 573408286, 573440847, 573474093, 573523113, 573555448, 164020226, 573589365, 488243212, 573653295, 573685782, 573702186, 573720762, 6324266, 573751318,
+ 53706868, 573769331, 573833247, 573850114, 22478879, 573885878, 574080702, 574131639, 574229944, 574292427, 574341176, 251052119, 416628757, 574377401, 574423061,
+ 574439883, 574489769, 574524858, 574636034, 3867255, 574652418, 2326570, 5309581, 574672315, 56164390, 574819772, 574882890, 234176534, 574914582, 574930960,
+ 126287882, 574950845, 574996910, 575046107, 575078472, 575147454, 575209987, 298352652, 575262143, 9142290, 575340635, 575374324, 575422520, 575455291, 575491520,
+ 575635515, 1900660, 575668243, 61997068, 575688129, 575733762, 125927434, 50118658, 2801680, 575753666, 575799322, 575816572, 575864931, 575901123, 576048580,
+ 108315489, 576110618, 110119986, 576127083, 576162480, 576208922, 124862896, 576225311, 99516418, 576245189, 576357199, 576390662, 576438284, 576454880, 576487454,
+ 129237004, 576520952, 181174338, 576553020, 576635816, 576670596, 576736710, 576802076, 576867783, 131383323, 576962591, 5603340, 576982472, 577060904, 577077290,
+ 577093691, 264716396, 46891020, 3720113, 577126510, 577159600, 577191990, 108625958, 577228233, 150503426, 577277386, 308592739, 201523722, 577389069, 577437801,
+ 577471311, 577506763, 577568783, 577585168, 67043354, 577602015, 99385360, 27246623, 577634316, 218611733, 577650700, 115294224, 577670604, 577965517, 578062819,
+ 431996964, 578093565, 578143088, 47251472, 578191406, 475545626, 578242771, 578322434, 215187466, 578342350, 578536734, 578584614, 578600998, 531316779, 578617409,
+ 578667945, 5390351, 578699276, 578716170, 578748447, 115818538, 237731862, 578764816, 578781194, 578798000, 578830382, 116228099, 578879519, 578895878, 122601503,
+ 578915791, 578994198, 231817247, 579011019, 46039050, 579061305, 344064056, 152354858, 579158861, 579207178, 579224444, 518488104, 579272764, 556337293, 579355105,
+ 579403884, 579436598, 327909847, 579472848, 579551259, 579584010, 579603921, 579650206, 579682736, 579715991, 579764226, 579780629, 579797058, 579829766, 114917679,
+ 579849681, 579895377, 579928124, 580009994, 580026389, 179798068, 580046290, 580111827, 379404591, 580175405, 580226516, 580354857, 580386903, 8389153, 165494796,
+ 580439509, 580517972, 580550787, 216449279, 580568174, 580652502, 580747283, 202014732, 297484298, 580763670, 497336325, 580780065, 580829291, 102858774, 580861993,
+ 2752534, 580879731, 202031120, 580911563, 154665067, 22085658, 580963799, 581173783, 581206053, 17924124, 581222441, 37748738, 581238825, 103448586, 581258712,
+ 581304357, 423446334, 7700516, 581320745, 581337145, 581353513, 581369892, 580861990, 157646889, 580861964, 581389785, 27426828, 581468182, 17924137, 90521637,
+ 581484556, 581500950, 1949737, 581517362, 581553626, 581632022, 581500938, 581648425, 581664797, 581681268, 581697543, 142180388, 581713925, 581730332, 581746729,
+ 581763109, 581779484, 2129939, 581795881, 581812250, 80035862, 582172693, 582189077, 2539651, 582206278, 9207814, 582238808, 516833289, 153649162, 582651357,
+ 582749662, 582814977, 2359723, 582847565, 6865743, 582913503, 582995424, 121077800, 583041561, 583107139, 571441168, 258080778, 583142881, 583270637, 405454888,
+ 583306410, 583385100, 165134342, 583405026, 513278554, 583451083, 583503331, 170803627, 583548994, 8392164, 583585253, 583648778, 583698892, 415776799, 583745538,
+ 583762680, 583794699, 383664130, 583814630, 23856066, 583958566, 3227702, 583978471, 2195536, 155648002, 584060392, 8389985, 534020127, 584171579, 584204298,
+ 584220678, 228753430, 584237068, 584253466, 111607814, 584270949, 584319118, 584355305, 584450050, 584466470, 584482818, 3473445, 584499503, 584535530, 584581204,
+ 584613914, 131940373, 2670618, 584630274, 584646682, 584663061, 119359358, 584682987, 584863212, 584908812, 60456970, 584925239, 584990749, 249282576, 585007142,
+ 585023519, 197345301, 585039926, 585076205, 585138606, 585190894, 585269264, 461684776, 585289199, 585354736, 132808723, 585433098, 585449892, 124272706, 180060631,
+ 585482252, 585498706, 585534961, 585584114, 147013668, 585633267, 585829876, 585908250, 585928181, 586023215, 586056908, 586105750, 152945156, 7733719, 586154744,
+ 586186764, 125812752, 586204190, 586235942, 586252319, 586268688, 586285066, 56639490, 586301499, 519667722, 586337782, 586419703, 586582539, 2129962, 586662753,
+ 586694666, 586714616, 164757807, 586794483, 586829305, 587042298, 587091451, 587156988, 587251750, 587268150, 587300890, 587317254, 587337213, 110231789, 587369982,
+ 587547384, 587579926, 587612232, 587681279, 587776040, 4964367, 587792424, 45875237, 587808780, 587825189, 587842030, 587874314, 120078346, 587890690, 587907077,
+ 587923458, 587939850, 587956266, 2621468, 587976192, 188583425, 588025346, 588189187, 108167184, 44171274, 588382230, 253625167, 2196649, 588398652, 588483077,
+ 588533252, 588611786, 55033893, 588645404, 588680709, 136120806, 588811782, 588873730, 588890589, 588922891, 43237414, 588942855, 589004838, 1933324, 589022182,
+ 589057544, 589137589, 7290902, 589205001, 589430810, 589447194, 141410388, 589463564, 589479974, 49774594, 589499914, 589562901, 589611024, 362659850, 589627851,
+ 589676575, 589692938, 119357874, 181257806, 2196135, 589709396, 589745675, 589860364, 589906387, 589955153, 589987948, 590020629, 590037004, 192200719, 590056973,
+ 590384654, 590462997, 590479372, 590495770, 590512603, 590545808, 590578607, 590643230, 590675999, 224542751, 590692368, 590708746, 590726153, 590757900, 590777809,
+ 590823440, 5865761, 590840655, 590872586, 22216714, 590891348, 590954517, 260964406, 590970890, 590987363, 591020034, 61997096, 591037759, 591104694, 591167490,
+ 93700134, 591187471, 591282197, 4997172, 591299497, 263176194, 591347818, 591433232, 591560760, 591597073, 47611920, 591757396, 591793682, 313131024, 115721079,
+ 591987535, 592020660, 592072211, 70058197, 592314389, 592330773, 592347195, 592383508, 235438927, 592446347, 144621599, 136118794, 592512169, 592547349, 422691250,
+ 592627060, 592674882, 592707594, 49086485, 592725382, 592789516, 2198785, 592809400, 592871946, 592907798, 592987075, 593035323, 6621205, 3899869, 593068068,
+ 94896139, 593084475, 8390154, 593117212, 47611933, 593137175, 593268248, 593365133, 170999892, 593412633, 593477642, 6127647, 271630389, 119357879, 593494475,
+ 593544113, 2130953, 593576479, 593628697, 593855597, 49086474, 593887701, 593936424, 593956378, 351158298, 22216744, 80035852, 195264528, 594034747, 451772470,
+ 345686021, 594067562, 594150960, 594182160, 594198544, 594214931, 6602774, 424017936, 594234907, 594300444, 311607311, 594395162, 594412693, 81166348, 594447901,
+ 256032794, 594658379, 594723491, 594772009, 594788364, 1949736, 594804824, 594837541, 17006630, 126959635, 594853894, 27852812, 594870575, 374194216, 594903499,
+ 163315820, 594952202, 209813535, 594969113, 595036427, 147063977, 595084073, 595119646, 2195495, 595185183, 595263528, 595279878, 45465621, 595299872, 115294324,
+ 595742242, 595887593, 17220906, 595938851, 132156964, 596069925, 596148246, 55033877, 51380260, 596164634, 596181051, 41566214, 596217382, 596296713, 596332071,
+ 596510465, 596559653, 596607032, 453283368, 417103888, 182272841, 596643369, 2196056, 596839978, 596905515, 420365153, 597016588, 597032962, 597049804, 597084755,
+ 597151276, 597298733, 54444058, 456425474, 597345920, 147423254, 564314124, 3228566, 597397038, 597458949, 597475359, 71483421, 597491771, 131842854, 182289190,
+ 597528111, 597574126, 597610032, 597753912, 597786690, 597819860, 597852172, 122601498, 152946054, 597869015, 597902230, 597951335, 597986865, 598147126, 185417738,
+ 598179842, 598196252, 598212639, 242466826, 598232626, 598329903, 122454018, 598392853, 115114083, 598410214, 598442478, 47611911, 598474764, 598491162, 598507522,
+ 598523919, 598541250, 46219304, 598576691, 598674996, 198328358, 2130008, 441466918, 598756917, 598802444, 3244130, 598818904, 300400650, 598851665, 598884354,
+ 193675340, 598904374, 598949904, 160759837, 58409026, 598969911, 2130346, 599015899, 599048232, 599064588, 599081059, 599117368, 599395897, 599457823, 599474195,
+ 45039638, 192938000, 599494202, 599576123, 599605706, 42369081, 599641660, 404242911, 52805634, 109215780, 599752810, 421855753, 599838269, 82558997, 599903806,
+ 599998480, 42369050, 600014885, 491208770, 600032150, 6946933, 600081417, 600116799, 600181358, 600227868, 600244699, 600277094, 117506114, 600309826, 600342566,
+ 8392256, 600362561, 600540363, 345784332, 520093782, 600575554, 600653870, 600703577, 600739395, 600899586, 600916439, 600952388, 601030666, 2195876, 601047351,
+ 601099845, 601260072, 211173397, 601280070, 57032742, 135184415, 182288816, 3555364, 601391541, 601427527, 601523221, 54460447, 601574984, 475873361, 601653675,
+ 3244467, 601686103, 163315936, 601736222, 601771593, 8159347, 34701707, 601968202, 602062850, 602079251, 19251802, 474399753, 602097273, 602144778, 602161162,
+ 20365324, 602177552, 602193948, 602210314, 2261021, 602226748, 602312267, 602377804, 299794458, 602423298, 189038607, 602439711, 602456070, 286277674, 602475676,
+ 602521702, 602554397, 159432709, 602574413, 207621710, 603016784, 603180625, 603228142, 603275285, 121339925, 603292185, 218611722, 603358318, 603440520, 603472926,
+ 194166822, 603505494, 603553798, 156925971, 146358278, 603570178, 153944090, 603587588, 603655762, 603770451, 603848720, 603868756, 132153390, 604012628, 933897,
+ 604045849, 111132698, 604111301, 604147285, 604278358, 47546380, 604340240, 604356619, 56262687, 604372994, 150241320, 604389483, 604425815, 604586015, 604602378,
+ 604618794, 11665539, 604638808, 604749845, 75530271, 604766254, 604815371, 604831772, 547684354, 4653495, 604851801, 605015642, 605143042, 605159455, 605175818,
+ 605192626, 605227327, 605257820, 605294171, 605388812, 50937875, 605405639, 605454338, 605470742, 257638440, 605490780, 605556317, 605749485, 605782305, 203817960,
+ 605818462, 605945922, 85098498, 605981526, 606027842, 137101991, 606060556, 606080607, 606146144, 131827474, 606224452, 606276302, 220663332, 606391905, 1228816,
+ 606470198, 111624218, 606506594, 606587848, 606651690, 170886007, 606699823, 606733342, 606768739, 606814218, 604274691, 606834276, 607096421, 252117008, 607207440,
+ 125812741, 607224408, 263503903, 607256597, 607272972, 607289346, 15007786, 607309414, 607339039, 47611910, 607391335, 607454764, 607485974, 246546474, 607502967,
+ 607536044, 108315058, 607604328, 607666192, 607682597, 607698960, 2850827, 44613669, 607719017, 607833706, 607882859, 54296598, 608043308, 608075841, 135184394,
+ 608126613, 608194156, 608257501, 608292461, 608339731, 608387112, 608403487, 608419861, 608436654, 608489070, 608603759, 608698484, 608714764, 608731148, 2162745,
+ 111149068, 608751216, 608796756, 50135062, 608830667, 608862290, 608894978, 608911379, 608927765, 608944975, 116883888, 608980593, 2146414, 476921956, 609190775,
+ 270516234, 609222710, 609257997, 207228530, 609308275, 46530586, 609421331, 609468719, 609501293, 609533992, 150241306, 609551929, 609652340, 609697794, 609714186,
+ 2113652, 609731031, 609767029, 286277674, 609812564, 609845348, 609878075, 609910889, 609943582, 609977756, 610025498, 2834656, 44351504, 610041901, 610074753,
+ 610108405, 610173466, 456966180, 610205724, 610222681, 610254878, 610289633, 610337198, 610388109, 610435131, 610471542, 610517030, 146817060, 610533392, 122650650,
+ 610551155, 3129380, 149815298, 610582557, 295649283, 610599825, 610648102, 610664751, 610697745, 610729996, 610746406, 610762806, 421773317, 610799223, 126287893,
+ 611156815, 611192440, 611304755, 611353382, 611385346, 611401749, 235552780, 611421817, 204488735, 204537882, 150913055, 3473444, 611503738, 611581954, 51822630,
+ 611598811, 611634811, 243777538, 2506764, 611680266, 611697070, 611746684, 611795858, 6455334, 611844696, 611876874, 13549597, 611896956, 612008431, 612042953,
+ 612106261, 135004172, 612123055, 612155404, 612171875, 612204560, 612220938, 612237341, 44531724, 612257405, 226967618, 612372094, 612433946, 612451151, 44679199,
+ 120114275, 612485897, 612532246, 1114128, 612549526, 140247139, 612601471, 168902747, 612696982, 612746071, 288997407, 612778027, 612814464, 126287910, 612961921,
+ 613023786, 613040154, 613056514, 613072911, 613089302, 613106582, 613157364, 613207682, 50086315, 613253174, 599932939, 613289603, 613367827, 124796931, 2195745,
+ 613387908, 613515286, 613531691, 6406154, 613565449, 613598293, 613629954, 234176527, 613646338, 192200714, 613666437, 613777418, 613793844, 613827039, 613859338,
+ 196149270, 613879430, 613990428, 614006786, 614023174, 614039555, 19447827, 614057061, 194084885, 614105312, 614141575, 614600328, 614682249, 27738242, 614793976,
+ 27852816, 4112400, 614826050, 117506114, 614860105, 47546405, 614911626, 615124619, 615219212, 615235622, 615251983, 192495638, 615268374, 370573352, 615288460,
+ 615370381, 613305998, 615468687, 615564457, 615599760, 615697862, 615762051, 615825410, 2129977, 615842699, 615907394, 615940098, 615957729, 616007396, 616074897,
+ 616202256, 616218664, 7290918, 616235678, 616267788, 616284920, 191545350, 7290906, 616316944, 216858666, 616334508, 616382476, 616399608, 616432011, 156827702,
+ 155533314, 616467760, 616514073, 616579128, 616611927, 616664722, 616710186, 616726554, 616742914, 616759311, 210583574, 525553299, 616779412, 616825290, 616857626,
+ 616874015, 122568733, 616890378, 616906754, 393494539, 47710230, 616923152, 135397387, 616939607, 616989106, 617025173, 617088510, 575701018, 617152528, 617168938,
+ 617185712, 564838833, 617218104, 617251250, 48447507, 617283590, 617303702, 617366558, 617398293, 617414678, 617431052, 10829835, 617447430, 3342357, 617463810,
+ 617480202, 617496592, 292962309, 232030230, 617516695, 474399665, 617860760, 617926297, 617988587, 618024602, 296698889, 618172059, 618233887, 131875495, 618251691,
+ 4407599, 618303132, 30392341, 618383292, 618466973, 618512400, 618528778, 618545194, 223608869, 312180757, 618565278, 618660776, 618692613, 94568450, 618712735,
+ 198410262, 618807825, 618840086, 126025740, 618860192, 117555237, 618922024, 618938399, 571801606, 618958497, 6374603, 619036694, 619056802, 619200571, 619233306,
+ 373604381, 135905346, 619249692, 619266088, 121077766, 619283435, 55033871, 619347970, 2933231, 619364354, 362037258, 619380767, 375406630, 619397423, 15073318,
+ 619429900, 113737754, 619447326, 619481776, 402309125, 619876004, 620068904, 47939610, 253935635, 620085549, 620118042, 366116893, 620134481, 620167183, 620183855,
+ 397852682, 620220069, 620282357, 164020236, 620314861, 620347500, 620380920, 620413231, 620449446, 620511334, 620544031, 46039061, 111149096, 620560430, 508362768,
+ 620609538, 166838298, 620629671, 620757018, 620773386, 620789772, 141295637, 620806237, 620855334, 620874665, 620924584, 621037849, 621101515, 621153047, 621215770,
+ 621232182, 621264980, 218611738, 621298718, 621330525, 621383310, 621432489, 621481642, 621543440, 287572075, 621559915, 621592607, 621608991, 224591913, 5308719,
+ 621629099, 621690911, 10584093, 621711020, 621821974, 79069186, 621838352, 621855667, 621891245, 621936680, 621953036, 46088234, 621973166, 622084108, 204996611,
+ 622104239, 622166070, 30392358, 622199239, 308903972, 622250157, 622313511, 622346347, 622380470, 622428181, 126287893, 175767636, 622448304, 622542858, 122323831,
+ 358498983, 622562993, 622624850, 269664315, 622657566, 50937882, 622691229, 622775986, 622887363, 16826384, 622919736, 622953641, 312770647, 622985282, 623019119,
+ 164020240, 307986539, 623054515, 623247827, 623300276, 45023248, 623362058, 623378442, 623394818, 623411221, 7733324, 4964373, 623431349, 623509534, 623542324,
+ 623578806, 623660727, 182157343, 623738882, 623759032, 623804435, 623820816, 137102456, 623838459, 231768076, 623886378, 623902746, 623919106, 623935503, 623951894,
+ 528270230, 623968315, 139034708, 624001064, 624017446, 624033794, 6373458, 624050260, 624082946, 624099781, 176570384, 358514709, 624132136, 624148539, 624184157,
+ 73531408, 624215320, 7307301, 624283321, 389136465, 624398010, 624508940, 624525338, 624541920, 624574476, 2326535, 624590886, 624607534, 624640847, 173113354,
+ 624673615, 359530498, 624709307, 624856764, 624905917, 624984503, 146767910, 625016898, 8390595, 625053374, 625115157, 625135295, 625197140, 625229906, 625266368,
+ 625360927, 123797510, 625377361, 625410074, 625426444, 625442826, 625459831, 625491970, 625508409, 625524767, 112476202, 268468240, 625541751, 625573914, 138346527,
+ 625590331, 625623050, 625640055, 625672204, 625688586, 625704981, 625721410, 625757889, 333348883, 625823426, 191004974, 625918383, 625954499, 625999882, 262275091,
+ 626020036, 626180856, 49774607, 626212880, 626233029, 626278454, 626311180, 626327650, 203128848, 626360358, 44679170, 626377666, 112754726, 626413254, 626475034,
+ 626491823, 626524179, 626540560, 122568742, 626560711, 626708168, 183582722, 626773705, 626868250, 59228176, 626884620, 626901002, 605192291, 626917448, 144097336,
+ 438044205, 626983945, 627015682, 627032093, 627048514, 627085002, 451772653, 627179539, 215859202, 627199691, 627311262, 307855386, 627347148, 627425388, 627461837,
+ 627527374, 627625679, 627707334, 123846715, 123847115, 627769403, 627803561, 627834892, 241647635, 162250790, 627855056, 627998748, 7634963, 628015125, 628032567,
+ 628064287, 628080661, 628097060, 628113427, 628129802, 38879261, 628146292, 628162586, 628181196, 628214159, 628244509, 17924117, 628264657, 628310047, 44597274,
+ 628326407, 96190500, 628342900, 267681829, 628359196, 628375561, 31342615, 628391986, 628424711, 628441114, 2196238, 628461266, 628506627, 628523018, 33177615,
+ 628539501, 628572246, 581206042, 628604964, 628621847, 79937572, 203653219, 629178433, 242696245, 629228649, 629276924, 629309442, 629325834, 629342218, 629358594,
+ 629374986, 114130950, 629393499, 629457199, 141000710, 547684394, 629490185, 79757318, 629524799, 629558997, 46710796, 629640918, 256819216, 629703563, 629771991,
+ 629833812, 248266788, 6455334, 629870296, 629965762, 629998460, 3227680, 29491256, 87539734, 630050521, 630197080, 630243340, 630259718, 630276117, 630292511,
+ 124239882, 630309339, 630341651, 146653186, 2031618, 630358047, 279855123, 2131182, 630378202, 630456322, 630472733, 2408477, 630492891, 630673116, 630755037,
+ 630801212, 630853342, 6373802, 630981040, 631013809, 631046604, 123404309, 133578791, 631082719, 631128090, 631144464, 631160843, 543408164, 631181024, 631259148,
+ 115785738, 631279329, 631361250, 631492323, 8388676, 631623396, 631702757, 631783856, 631816625, 631849874, 307511312, 631901925, 631980044, 631996523, 632031715,
+ 632065766, 632143894, 584597516, 632160322, 396577253, 632195538, 45613078, 632278759, 632377064, 140477249, 632438810, 632455184, 632471567, 632487958, 632504336,
+ 213958684, 632520770, 632557289, 493092895, 632622826, 457770355, 632686428, 632753899, 632897585, 632980816, 633028624, 607617889, 633045018, 2196825, 633061460,
+ 633094228, 633126928, 633143598, 633176118, 136118379, 633212652, 633491181, 633605870, 412959634, 633716802, 633753327, 233193474, 2196403, 633979339, 634031856,
+ 634109989, 634127390, 634162929, 634257430, 634273808, 634290202, 7389199, 634309190, 634342365, 634390702, 195838008, 634470410, 634490610, 634553238, 634602364,
+ 130285578, 634650711, 634702091, 7733472, 634748938, 140247479, 634769042, 634814523, 48447498, 634847242, 634867443, 385515574, 634932980, 175669260, 635060226,
+ 150700053, 635077706, 635113205, 635240454, 3833877, 635256851, 635275026, 118636582, 635323881, 635372034, 635405132, 635454952, 635506422, 176570370, 635601950,
+ 635633730, 5865577, 635670263, 635912429, 635945451, 635978690, 636011727, 636076088, 636108821, 636129016, 636174342, 636190732, 6209562, 636210937, 636260090,
+ 452034576, 99696646, 636371956, 636423931, 636469335, 616120358, 636522236, 636604157, 636715030, 357466178, 636735099, 636784382, 636878955, 79822863, 636911626,
+ 636928042, 636944390, 54820875, 636960787, 636978072, 637027196, 637075563, 637108252, 6406156, 637124618, 637141886, 637173779, 47529986, 637191629, 147423242,
+ 637226751, 637272523, 637321226, 319143978, 637338079, 637374208, 637485068, 249266202, 637501466, 129958191, 149930050, 637518086, 637554433, 637927953, 539656220,
+ 637960683, 637996802, 394379266, 638108495, 188940314, 638144259, 638190712, 73531433, 638226180, 638271494, 638287893, 638304268, 247234586, 638324485, 250185306,
+ 638435387, 638468115, 638484490, 217808912, 423448326, 638501335, 175783995, 638534246, 638566859, 280445399, 638619367, 638717703, 638861369, 299008006, 638877783,
+ 638926878, 598949919, 638963464, 639042428, 639091836, 49774630, 639143689, 639225610, 639336470, 639352913, 639386027, 109052046, 639422219, 639467586, 639502708,
+ 639567162, 93700108, 639618828, 635977827, 639700749, 547962911, 639799054, 640028431, 129466370, 640155660, 52396042, 640173508, 369098818, 640206459, 640270402,
+ 640304202, 301418718, 640339728, 42598459, 112919490, 640418790, 136511500, 640454417, 640518495, 640565274, 640583439, 640634642, 640745531, 640780759, 640827438,
+ 640876556, 640892939, 640909322, 640925708, 457539590, 640945939, 641105930, 7307279, 641122306, 641138698, 8994858, 641155606, 641187861, 641204281, 9535504,
+ 154812887, 641220738, 641237034, 289243178, 641257236, 641449993, 38879233, 641467914, 307134485, 641519381, 641601302, 641630323, 641646724, 641663111, 641679369,
+ 58982409, 17924102, 641695772, 514654227, 572047388, 641715991, 641763115, 641797912, 641826826, 53706773, 641844463, 30461353, 423034996, 641875997, 641892354,
+ 641908762, 641925151, 551796738, 641941561, 641957929, 641974282, 641990772, 642007077, 7307380, 642027289, 642105385, 642122160, 151912564, 642154525, 377619214,
+ 2179091, 642646153, 57032836, 642666267, 642859030, 642879260, 643006504, 547291167, 582829370, 643025295, 47284264, 277856296, 643055656, 52215839, 643075869,
+ 643186714, 643203088, 643219472, 301252645, 643235846, 643252243, 643268674, 155861023, 643301432, 5324832, 643334583, 643366924, 266766853, 643383723, 643419934,
+ 6406184, 643518239, 193855927, 282838025, 120602629, 643629058, 44908575, 643645461, 643661846, 638304272, 643679121, 643731232, 643927841, 557514778, 644009762,
+ 3227730, 644087820, 644108067, 178339861, 644189929, 644252129, 644303536, 644349964, 332480619, 644370212, 218841117, 644432331, 644484901, 563298316, 644632358,
+ 644779815, 644825104, 172703782, 644841488, 362037288, 644858286, 644908201, 644940842, 645038108, 645054466, 645070859, 19267612, 645090476, 645169164, 2523174,
+ 645186007, 645222030, 168935446, 179765260, 645268469, 645336872, 645631785, 645693442, 45465611, 144048144, 310558746, 645712937, 645779242, 645840927, 645857814,
+ 482590742, 645890064, 645906460, 50266140, 645922903, 645972028, 646055283, 646088052, 646136109, 646168616, 646184979, 612319269, 197722114, 646205227, 416284885,
+ 499269716, 646398036, 646430796, 646463725, 646496686, 646545492, 646578179, 125583363, 646598444, 646776296, 646827821, 454968232, 647054835, 519815183, 647086082,
+ 647102935, 647135234, 250937355, 647151628, 647168010, 84738077, 647186237, 20365341, 392921110, 145473552, 647237422, 647348290, 647384879, 647413925, 647561648,
+ 647593996, 519143434, 647610383, 354549776, 647626818, 461963266, 647663408, 23363852, 647745329, 647889373, 647921683, 647938050, 647954453, 647970847, 647987216,
+ 241827850, 648003625, 648019999, 648036371, 120094751, 648056626, 648102818, 45498404, 648134953, 648167490, 6602755, 648200208, 648216614, 115589160, 648233448,
+ 648265734, 648282133, 648298562, 128254466, 648331276, 648347658, 66273286, 648367923, 648466228, 648548149, 648630070, 2195564, 648693108, 2031654, 648742690,
+ 648774465, 648806410, 479100957, 648822843, 648855562, 648871955, 619266060, 648892215, 649052236, 649085972, 649134507, 649167755, 649232390, 6029334, 649248795,
+ 545030252, 209010754, 649281966, 199459447, 649330805, 649363487, 136659829, 5177355, 87539717, 649383736, 649498425, 649576479, 649592853, 649609519, 649645599,
+ 318423475, 649723916, 649740298, 473547383, 649756703, 649773941, 649809722, 649858875, 116375776, 649922322, 649973564, 129417257, 650085244, 650133532, 650150030,
+ 47710229, 650186557, 650264607, 650280989, 650297410, 650330180, 650379895, 2195510, 650412269, 650444802, 650461194, 121077802, 650479080, 650530622, 119358402,
+ 651005760, 651265226, 353239094, 651313236, 142835722, 651345946, 651362306, 651378698, 648871955, 651395103, 651411472, 354074681, 651431686, 651477423, 49938472,
+ 651509762, 237731866, 651530049, 651595309, 55132170, 651640863, 651658249, 651690221, 651722795, 651759426, 651804764, 124796938, 651837532, 361168936, 651873629,
+ 176784215, 651954019, 652020925, 652067275, 4653155, 306774450, 652116052, 129417222, 652152643, 652345420, 143933470, 652382020, 652443698, 270385211, 652480325,
+ 652705934, 652738576, 652754960, 27852837, 652771796, 652804905, 119816276, 652836910, 131334196, 652886031, 652903624, 652935184, 553156634, 652951855, 652988230,
+ 164184353, 653067665, 2605068, 653135687, 6373432, 653197314, 49086467, 653217608, 653365065, 653443084, 126763245, 653460961, 653578058, 653754384, 653770778,
+ 653787138, 653803541, 653819991, 653870048, 241238028, 653918214, 653934658, 653968286, 654004043, 654082114, 654115338, 654147586, 654164006, 213205023, 654184268,
+ 267567146, 654344213, 654364304, 47530012, 654462797, 654524482, 654558616, 654606402, 654640125, 654704650, 654721030, 654737439, 654753821, 654770188, 56442906,
+ 654786625, 654836193, 654885751, 8389067, 654921550, 655052623, 633716802, 139657242, 56492034, 655101776, 1949698, 655199953, 45531152, 655249233, 655313530,
+ 655363922, 251396125, 655507496, 655524272, 655556651, 655589414, 655605787, 655639483, 655704109, 655736891, 655770922, 655818811, 655851579, 655888211, 656031981,
+ 137102257, 34553868, 656068436, 656114201, 656180857, 656232277, 589692966, 656362888, 656441449, 656474587, 656506913, 656556491, 656605243, 250937373, 656637958,
+ 55427091, 45434750, 656658262, 656769056, 656801868, 656836140, 656868170, 116375978, 656916955, 1114123, 656950188, 657014810, 657035095, 657129931, 657179057,
+ 19841045, 42434581, 657211432, 657228277, 657264472, 3538966, 657326082, 657342474, 657362777, 657375443, 657440777, 902390, 657458422, 657473557, 657490157,
+ 657522714, 94109706, 79938806, 657543002, 14450818, 657670447, 115721137, 16728195, 657706843, 112427034, 657805148, 657850417, 657932395, 657968989, 19267594,
+ 658014246, 179765286, 658031499, 658096587, 115785754, 153748510, 361432002, 658145326, 658526047, 658620925, 47546390, 658669614, 658722656, 658833632, 658870113,
+ 658948105, 658964617, 23838855, 658982639, 659046410, 659066722, 659128341, 659145551, 659177498, 659193887, 129958490, 113737744, 659210246, 659226645, 659243095,
+ 659293184, 659324930, 659341318, 20365333, 2129950, 659361635, 659603496, 2195574, 659620272, 659653527, 154665431, 659704320, 659754852, 659816479, 5865556,
+ 659833657, 659898383, 659914767, 5750786, 659931594, 659963930, 659980309, 659997610, 660078594, 163856415, 660098917, 660242718, 660291600, 660307984, 660324389,
+ 2179511, 67059714, 660344678, 660410215, 126025759, 660488238, 139034732, 660537404, 660621973, 660668445, 660688744, 660819817, 660885354, 660963344, 660979738,
+ 660996098, 661012501, 270319682, 661031416, 661094466, 661128075, 661193239, 661226319, 136790042, 661258283, 52723738, 661291915, 661356626, 121798743, 661393259,
+ 661438530, 661471234, 661487654, 661505368, 661554064, 576802668, 477904924, 661589869, 661654446, 661717295, 661749786, 661767192, 661815312, 661831690, 442745724,
+ 661852014, 661917551, 661979596, 662014093, 662062399, 662130544, 662179697, 194691171, 662274060, 662290434, 6324262, 662306872, 662340043, 662392690, 662441843,
+ 662536194, 662553038, 662601815, 116375602, 662652233, 662700491, 662749205, 662766415, 662798402, 662835060, 662915261, 662978591, 371277853, 662998901, 663162742,
+ 663322645, 663342967, 663454366, 663486474, 372244910, 663503715, 663552046, 663601162, 190136326, 109101212, 663620539, 663699991, 663732251, 663765839, 124239929,
+ 663798231, 663830534, 663847815, 663896080, 663912458, 6946818, 663929641, 229359647, 663963178, 664043625, 664076727, 664109058, 664125461, 664141911, 27607066,
+ 664191042, 664223812, 664273527, 664306582, 664354872, 664388431, 270189429, 664421865, 664469963, 124796940, 664519539, 664601026, 664633354, 664650858, 664735608,
+ 664797196, 664813578, 664829973, 664847243, 664911954, 399147440, 664944706, 664978295, 665014137, 665092399, 665124876, 665141258, 493125653, 665157653, 161988620,
+ 665175265, 665223222, 665259898, 665321528, 665354327, 665404257, 665436226, 665469015, 665519305, 665567244, 665583626, 665600439, 665632799, 665653115, 191545373,
+ 665698310, 665714775, 665767757, 128155654, 665829387, 665485343, 665846647, 665878566, 241647628, 665895004, 437370896, 665929226, 665976838, 665994063, 665666421,
+ 666026010, 639500720, 666042427, 3375130, 666075595, 666126118, 150700048, 666173471, 132890640, 666191122, 666256617, 666305424, 666337739, 666386461, 663601164,
+ 666403447, 666435638, 2719750, 666468823, 666501579, 666550781, 666599426, 666615827, 420593695, 667012989, 1933334, 202622343, 140247121, 667205647, 397852698,
+ 4997641, 180125738, 667225982, 667357055, 2752514, 667418636, 667436062, 667471744, 667598886, 667616075, 667684737, 667730379, 667779093, 667795482, 667812143,
+ 667844629, 667861079, 667911185, 667961632, 668008450, 668024870, 668041243, 668074896, 668106808, 668143490, 668254220, 668270620, 668286992, 7602216, 125583370,
+ 668303366, 668319775, 668336144, 668352522, 668368935, 668402473, 668434862, 124862903, 668483670, 668516354, 27624233, 668535168, 668598379, 150585827, 668631071,
+ 668647508, 668680274, 668713807, 668745771, 668778935, 649363487, 668815235, 668893215, 668909589, 408600578, 668925981, 668942795, 114786360, 668991514, 126287878,
+ 669007884, 669024277, 669040706, 669076310, 669122659, 669155394, 669188610, 669221495, 124321798, 669257604, 669368858, 669405061, 669483944, 123830282, 669515782,
+ 669532619, 669581333, 453476418, 669597715, 669614092, 669630474, 48021533, 669650822, 669746042, 669794320, 669810698, 669827979, 669894347, 669990924, 670008329,
+ 670040539, 670072842, 264798239, 121454658, 444580274, 670089237, 123273247, 670107022, 266768263, 291111383, 670175112, 670220776, 670253981, 670335968, 670388105,
+ 184863206, 119359974, 424017941, 670531586, 124864362, 670548002, 670666634, 670715787, 670793749, 670810143, 670826512, 670842890, 670859316, 670892044, 670908442,
+ 670924802, 670941815, 45433264, 670977932, 671039498, 338264083, 671055878, 671072343, 671125389, 671220171, 671268874, 151732245, 671285316, 671335031, 671367195,
+ 671399938, 567984166, 671416360, 671432730, 671449547, 671498775, 586186783, 671531019, 671548299, 671612949, 671630159, 671662099, 188481538, 671678919, 671728099,
+ 195215379, 671764366, 671809586, 671843211, 671908321, 260014111, 671957535, 672006190, 672055317, 672071692, 672088090, 540753930, 672104458, 672120853, 672138123,
+ 671940629, 672203186, 672235551, 672251947, 672284738, 672318305, 672354191, 672466218, 672514114, 672547105, 371277862, 672579605, 672596034, 672628790, 672661515,
+ 672677900, 672694298, 669532162, 111656998, 672711669, 672776213, 672793053, 672825382, 672841730, 672858133, 672874583, 672924513, 672960400, 673005570, 673022008,
+ 673054786, 673088353, 673120266, 673136679, 249298982, 673169843, 673206161, 673267728, 234848266, 673288082, 287572271, 673382412, 569360410, 673398822, 538116127,
+ 673415702, 477937670, 673448468, 673497107, 673513493, 673529896, 673546266, 236355643, 673562655, 673579018, 6619563, 673598165, 673644546, 673663044, 673710711,
+ 673742869, 673759263, 673776501, 673808843, 673861523, 8392596, 673939522, 673972255, 4342243, 673988714, 674072726, 133547353, 674120126, 6127644, 674189205,
+ 674303894, 2834464, 462159914, 674385815, 119440883, 674562069, 674580404, 149504029, 674664344, 543850562, 674728422, 674759172, 674811801, 674910106, 675004458,
+ 134104264, 675021103, 675057563, 675135494, 675151878, 675168268, 54493224, 184388096, 311214475, 675184699, 675221404, 675315728, 675332111, 675348502, 675364895,
+ 224739366, 675383808, 220776114, 675430440, 675446850, 675479651, 121799520, 675512326, 675528725, 675545090, 675561501, 142852112, 675578895, 675631005, 8605598,
+ 8392607, 675696544, 675840093, 675889194, 675905576, 675921951, 121929738, 675939113, 675971126, 676003850, 676020855, 676053023, 675987472, 548438056, 676069407,
+ 676085775, 676102165, 562250620, 676122529, 676233269, 676265986, 676282389, 676298839, 676347925, 663765023, 676364512, 264421977, 676397948, 512720906, 676446248,
+ 676462604, 676478986, 676495991, 676528155, 676560953, 676577739, 676626488, 676660047, 676692873, 122503180, 676741929, 676774936, 676823572, 676874349, 676921410,
+ 676954138, 676971403, 677036567, 677069854, 677101599, 170704950, 677117973, 677135200, 677200386, 677233271, 677265501, 677318562, 677396597, 677429762, 2196136,
+ 677462018, 677478410, 677495415, 677527573, 677544411, 677577757, 677625922, 677658643, 677675039, 128991273, 677692406, 677724200, 190595088, 677741003, 677790327,
+ 677822480, 139329562, 677838945, 677905310, 677938675, 677973746, 163726230, 678037065, 678118429, 678166615, 678215719, 678249208, 147505190, 122667018, 678282787,
+ 678330408, 678347596, 678395914, 678412919, 678445122, 678478816, 678526986, 678543399, 678576166, 678592539, 654557408, 678625735, 678674463, 678690826, 678708215,
+ 678772755, 678789141, 678805591, 678855089, 678887445, 678904672, 678973261, 679034946, 679068171, 462734421, 679118382, 199458898, 679166890, 679247928, 679284643,
+ 679363474, 631734747, 679413332, 679514020, 679624725, 679641998, 679706655, 679723024, 7734081, 679739402, 679756619, 679821343, 679837706, 679854082, 679870520,
+ 679907237, 680017935, 680037675, 680083458, 228491285, 680099866, 680116226, 680136614, 680181772, 680198228, 154714152, 680230988, 680263712, 680297477, 518307982,
+ 680378592, 680411157, 5079517, 680428889, 198754541, 680464295, 680542218, 680559889, 680607783, 678363148, 680640572, 680722913, 680775592, 680869890, 117424166,
+ 680886328, 680919106, 217923600, 680952345, 681021353, 681181186, 681198039, 681230342, 2850832, 681247147, 681279503, 681295893, 681312287, 449397621, 681332650,
+ 681413881, 681459743, 681476115, 681492501, 681509728, 681574507, 681607197, 681623583, 681639955, 681656322, 681672725, 681689154, 681722145, 3424277, 681755479,
+ 46891018, 681788745, 175784872, 681836971, 261981052, 681869371, 681902106, 51855391, 681918474, 681935275, 681968723, 682034232, 682102699, 682164264, 682180629,
+ 682197079, 229654554, 682247275, 682282924, 682361291, 682409996, 682426394, 682442758, 682459568, 682491963, 682524710, 682541083, 114294790, 682575146, 250396701,
+ 122667036, 682623036, 682704923, 682737676, 682754054, 682770451, 682786882, 682823597, 682902350, 682968073, 682999818, 683016823, 683052974, 683118511, 683180098,
+ 114769988, 683213337, 683278392, 683311135, 683327504, 683343882, 683360295, 289767462, 683393916, 683443102, 683474971, 683508637, 683591163, 683638805, 683656060,
+ 683704339, 229113922, 683724720, 138625064, 683786278, 683802630, 672890911, 683822773, 683901961, 683933755, 357285926, 229965835, 683970481, 449609750, 684213186,
+ 684245051, 684281778, 684444208, 266766796, 684491715, 684543923, 684605482, 345704143, 684625844, 684691381, 416284885, 2196029, 685033008, 685064675, 685098040,
+ 685162785, 320127042, 685195501, 685232054, 685294023, 45252634, 685346743, 685408340, 685442036, 685490228, 685526968, 685670703, 685703252, 685739961, 685820464,
+ 685871034, 685998563, 686030914, 686064608, 6717471, 686112818, 686145590, 686181061, 686244315, 686276618, 686292994, 686309397, 686325847, 686376282, 686407711,
+ 686424547, 2326550, 686457739, 686522379, 529023016, 658112524, 686542779, 686770953, 686817339, 246087708, 686854076, 686965039, 686997560, 687030348, 122601482,
+ 687063541, 687095810, 687113074, 687144970, 687161375, 687177747, 249987115, 687198141, 687276569, 434963396, 687342622, 687374372, 54460427, 687393681, 687492848,
+ 687574974, 687734815, 7045132, 687751470, 687784367, 687816795, 687849902, 687898643, 687915020, 687931398, 47316998, 687951807, 687997820, 688046185, 688078850,
+ 688095253, 688111703, 688164800, 688242719, 688259114, 335446038, 688275482, 1818655, 688291880, 688308290, 688341941, 688754626, 688914862, 688964494, 689029967,
+ 49676344, 310297838, 689064379, 689196995, 689258601, 6619202, 689295213, 207650915, 689360836, 520077371, 689426373, 689622982, 689721287, 5324827, 110248399,
+ 689835976, 1982490, 689897510, 166346764, 689917897, 689997433, 118292783, 205144090, 690048970, 690192413, 1114152, 214319142, 47120390, 110233510, 690209071,
+ 690245579, 690421816, 4997249, 690458572, 690552854, 690570063, 690602022, 690618671, 45760543, 690655181, 690765922, 129942900, 469630995, 690800104, 690851790,
+ 690946058, 690962444, 2162694, 690979246, 691028399, 691061655, 93945882, 691113935, 691340278, 691372174, 691404812, 27246594, 691425232, 2196979, 691572689,
+ 691654273, 691720146, 691783579, 691847170, 18153509, 691864432, 691912742, 316293186, 691929094, 293601317, 691948079, 154767315, 692011067, 692043815, 692078169,
+ 692125712, 116228111, 692142139, 224018470, 692178900, 692256795, 235307010, 692289538, 692305930, 47120413, 692322763, 692375509, 119997393, 692506582, 692617323,
+ 116884303, 692650025, 692666379, 692682768, 52805642, 692699162, 692715566, 692768006, 692830274, 692863411, 113541165, 692896656, 146653203, 692932567, 693063640,
+ 693158735, 693194713, 3212787, 693403669, 693423318, 693519328, 693568168, 693600794, 306954382, 693633960, 661012501, 693665807, 693682192, 693698570, 693714973,
+ 693732220, 269550082, 693784538, 693960788, 557219947, 693993579, 594886715, 694030299, 694095836, 694173712, 147652634, 694194141, 694226910, 694324139, 597475330,
+ 694406889, 2146528, 694470139, 657965058, 131334251, 694521823, 474169546, 694669280, 694751201, 694812718, 694861830, 694878229, 694894604, 537772058, 694911035,
+ 694943843, 694976528, 6374430, 694992898, 180437002, 695010851, 569098242, 695062498, 51855379, 695124028, 695206765, 695259107, 695320896, 147407705, 695353412,
+ 3211303, 7733485, 695402562, 695439332, 695484432, 168902763, 112608168, 449659310, 695504869, 124862935, 695782477, 695844981, 695877658, 695894446, 695943184,
+ 291096639, 695963622, 696074670, 51429406, 696123438, 2197525, 696173081, 696238101, 696255311, 696287663, 696324071, 696434780, 239648770, 696468343, 696500262,
+ 696516639, 277053461, 696533004, 696549402, 696565791, 696584503, 696616353, 696664074, 696680454, 696696848, 332103706, 696713675, 696762881, 118456336, 696830294,
+ 110231652, 696881079, 696946664, 697094121, 697204774, 223182879, 697225194, 697271081, 697307115, 697384998, 697401428, 697434138, 122568735, 1114117, 3375135,
+ 697452283, 697499950, 2195990, 697533830, 128155659, 345161782, 697602028, 697811870, 110445027, 697847789, 2196311, 500711436, 697942949, 204587039, 697976010,
+ 698023962, 381190192, 138018862, 698040358, 698056742, 307610030, 698073142, 199049226, 698105910, 698139560, 170754058, 698171999, 155926544, 698208238, 698352749,
+ 698384396, 152945493, 698404847, 64765994, 698466951, 698516852, 698564710, 698601456, 698695785, 698728460, 79691805, 698990604, 44679194, 699008894, 699039789,
+ 699072580, 699121694, 699154539, 699187206, 66928655, 6193183, 699204951, 699252762, 699269515, 699305970, 287130114, 117506351, 699387891, 699535348, 6377461,
+ 699581223, 699596821, 3375911, 206225436, 699613286, 27852828, 699648702, 699698393, 699781110, 699844576, 50266150, 699891750, 699912183, 54493200, 699990075,
+ 700022886, 700055564, 700071974, 700092408, 700190713, 700351674, 700387322, 700469243, 700695159, 700727317, 700743682, 700760083, 247234597, 700776450, 700792870,
+ 700809218, 700825610, 122732563, 700843507, 217710608, 700874790, 700891157, 700907560, 385187866, 700924961, 700956674, 700973067, 47529999, 700989499, 701022227,
+ 272384021, 701038623, 701054997, 320913474, 701071370, 701088167, 701136936, 701153306, 701169706, 701186060, 254197770, 701203033, 701235238, 701251622, 397000735,
+ 104005663, 701268427, 701317122, 701333510, 332742696, 519143430, 701349929, 701366313, 701382668, 701399147, 701433139, 701480986, 229654549, 701497360, 701513757,
+ 701530152, 104005651, 701546508, 701562937, 701579280, 701595686, 701612072, 701628437, 547880991, 701644821, 97681434, 701661196, 701677675, 701710348, 701726751,
+ 701743146, 93978646, 606405571, 701759920, 701796348, 701877862, 701911037, 701974333, 249987148, 702022091, 702074878, 702156799, 702367065, 702398476, 190595088,
+ 702418944, 702464066, 175014359, 2196571, 702499316, 702545974, 702578754, 702611543, 702664705, 702763010, 702957427, 702992387, 703102978, 52674570, 136856423,
+ 136627209, 467960679, 703119419, 152962252, 703152975, 703185397, 703217806, 145473538, 703254532, 2130729, 152963339, 703348746, 703367519, 703418373, 703578122,
+ 115196535, 703594526, 703627275, 703643650, 2605082, 703660042, 124863064, 703676442, 1916994, 703692866, 592707610, 703725606, 703741990, 147226655, 703758873,
+ 703824339, 357597200, 703873451, 703906601, 703938600, 703955618, 159301663, 703991003, 185270310, 704086049, 704135178, 704151573, 112918580, 175784028, 704172038,
+ 704300117, 704331835, 704367896, 704417799, 704480627, 704513451, 2195573, 524910648, 704565256, 704793564, 704839712, 704873816, 704922718, 704970788, 704991241,
+ 8388798, 705056778, 2031639, 705134699, 374931484, 705171467, 705282114, 705315576, 52346892, 705350132, 110248427, 705396802, 705429560, 394379290, 705462338,
+ 140247147, 147064137, 705495070, 2408488, 705531916, 705646605, 126615557, 705712142, 131334346, 705855500, 705871882, 6029341, 705888545, 705925135, 706052618,
+ 7259145, 47120395, 706084970, 706167838, 706203664, 2195890, 706363402, 706379779, 9109527, 19267590, 706400273, 50118693, 51658757, 706445340, 96256135,
+ 293716083, 182552597, 707039252, 5619727, 8389124, 707170325, 707264534, 578043935, 707285014, 464748560, 707445258, 707481623, 608731148, 707530776, 707579929,
+ 707674992, 301023244, 707723333, 115966006, 707759213, 707839099, 707870779, 707903500, 5619728, 707923994, 708071451, 708169756, 708329904, 152272934, 150683660,
+ 708366365, 708431902, 6897730, 708477943, 708546591, 708789342, 416612378, 708837429, 708871569, 708936527, 708968513, 709017641, 5275650, 709038112, 709115926,
+ 709132290, 569116108, 640843830, 709149634, 709183815, 709234721, 709312522, 184926211, 709330581, 709398562, 709480483, 709544282, 554270732, 709657490, 709705833,
+ 207620196, 709742628, 6422568, 709804034, 709820422, 709836821, 709853200, 709869594, 122585119, 709886398, 709951596, 5309640, 709988389, 124863411, 710086694,
+ 710198128, 710246426, 710262813, 447840262, 710280853, 119999024, 710344726, 388857858, 710364026, 710397991, 200492062, 710496296, 710558729, 115769443, 710594601,
+ 710787156, 45858842, 710819856, 167084058, 710840362, 711168043, 2197374, 27623903, 711315500, 300925450, 711413805, 8392630, 711479342, 711558112, 711607725,
+ 656441354, 711656327, 184389679, 711708720, 711772059, 711839793, 711886097, 711933983, 711950338, 116850726, 711967742, 712020018, 712118323, 712279474, 227639306,
+ 712347700, 712409325, 712445037, 712524809, 712560693, 327483404, 712655331, 712687643, 712720921, 712786002, 712818775, 712868291, 712901040, 126763051, 712934602,
+ 712982635, 3899451, 713019446, 713064486, 654983206, 713080844, 15351846, 713098391, 713150519, 109051943, 713228294, 713244691, 713261096, 205029414, 713281592,
+ 713392194, 713424906, 713445433, 25559515, 713491486, 713524047, 713560122, 713658427, 713769047, 713819019, 713884079, 713917293, 713966027, 180404230, 714014828,
+ 714048780, 714100796, 714162235, 714195046, 54460444, 714231869, 157646876, 714276892, 7634986, 714297406, 714559551, 714621848, 714674240, 714735724, 97271818,
+ 714772545, 714833976, 714870850, 714948667, 714985539, 715051076, 715132997, 702201868, 715194449, 715231302, 208848462, 715309066, 715326479, 715374630, 715392344,
+ 715441560, 715493447, 6373457, 715571238, 319717435, 510771238, 715589545, 715637646, 715706440, 715916402, 715964492, 715998064, 716046638, 280445033, 141705282,
+ 716079110, 277954581, 716098254, 117899357, 716214345, 716341274, 716357648, 228294662, 716374122, 716456044, 587432396, 716488797, 716539513, 168722442, 716591178,
+ 716652628, 716689483, 716783638, 716804172, 319455992, 716850197, 716898335, 716914753, 716964898, 716997528, 567984166, 717046672, 225313415, 717079969, 717127787,
+ 137379869, 717160507, 717193238, 717212833, 115458076, 255459347, 717242517, 32817287, 717279309, 717340788, 126746636, 717738063, 629964852, 115294219, 334070235,
+ 717803600, 717918289, 87539738, 717963346, 717996061, 718012848, 718045222, 718061634, 146489350, 718098514, 718160719, 718193504, 718262355, 718324017, 718356561,
+ 718393428, 718537748, 114049045, 718590037, 718667788, 718684198, 159760422, 718704726, 718917681, 718965003, 719014388, 227787253, 450334807, 148620209, 719065176,
+ 719110196, 719144136, 608108546, 294649922, 719176584, 719229017, 719438256, 719471051, 719523930, 719783219, 719833109, 252297575, 719863820, 719880652, 719913560,
+ 719945768, 150077450, 558499776, 719962143, 719978526, 477184002, 720011723, 720060426, 5505061, 278167989, 720076884, 720109652, 720142439, 720225452, 720277595,
+ 703365636, 720408668, 720502806, 720519234, 8390401, 1933343, 720553132, 720605277, 706002946, 27623478, 720670814, 720814164, 720849545, 5472296, 720912400,
+ 720928808, 720945178, 114409491, 720964416, 721031263, 721125386, 721141823, 243040278, 721178720, 54460438, 721227224, 523599981, 721273291, 721326177, 721567810,
+ 721604706, 721666156, 721700252, 721752163, 721780802, 721817700, 119358494, 721881141, 721930836, 7733317, 721981541, 722043456, 722075654, 477904918, 722092098,
+ 722125714, 313839718, 722178151, 722291148, 722338710, 152948662, 140476887, 722387862, 722437014, 722489448, 3228075, 722554824, 722616849, 722649110, 722666390,
+ 291455002, 722714651, 45613068, 6833909, 722751593, 722846210, 722878530, 722911879, 722960394, 275791900, 722980451, 723026011, 120979468, 723062890, 723140630,
+ 723161164, 8391849, 723206210, 723238971, 723275883, 723324838, 723374188, 477937666, 723521645, 723566604, 265027594, 723583002, 723599372, 723615750, 723632140,
+ 723648538, 122667065, 723664917, 723682131, 723746826, 723763202, 723779622, 126599204, 696288812, 723800174, 723845146, 723861506, 723877903, 723894294, 687997846,
+ 723910710, 210583594, 723943460, 250085382, 723964015, 724026280, 724058150, 724078704, 724173647, 724205770, 564903995, 408833666, 724242545, 724422770, 273924112,
+ 724484203, 200736774, 724516892, 724533274, 17383539, 724551677, 724598795, 456966146, 724615260, 724649925, 724683320, 83918855, 724717683, 580861962, 724828229,
+ 724860947, 724877322, 724893812, 573751338, 724910102, 641531940, 724926470, 724942879, 271138831, 724963444, 2326533, 725027412, 725075546, 20365352, 725110901,
+ 725139485, 725160054, 725206387, 725237781, 725254154, 38879268, 725271011, 725303334, 725319696, 725336092, 725352460, 725368843, 456966156, 151896100, 725766264,
+ 725860378, 725876820, 725911193, 62341126, 2293779, 725958678, 725975061, 725991436, 123650059, 726012025, 726156439, 726204447, 308576284, 726222153, 726270004,
+ 726302794, 726372474, 47546406, 8392827, 726487164, 127500319, 726536317, 726663278, 726695938, 29900819, 726715159, 726777887, 321863682, 726796976, 726843847,
+ 726892582, 726908930, 51839007, 726925322, 726941742, 726991150, 515031342, 727027838, 727121951, 727139884, 119570460, 533069883, 727175295, 119359024, 727304573,
+ 727385890, 727418416, 727450518, 24297911, 727502976, 635633666, 727650433, 727711746, 571801657, 147013653, 727728169, 727748738, 2195916, 191678073, 608108575,
+ 727859503, 727896195, 727957506, 727973894, 601522182, 727990303, 728006666, 728023099, 728055892, 8994953, 728088641, 728141180, 291160095, 159137818, 728174724,
+ 22216820, 728432670, 728465434, 728482016, 2835379, 728514572, 32063777, 113672278, 728534172, 728581601, 728699013, 728780934, 522980563, 728895623, 728957820,
+ 729006090, 729022466, 729038869, 217628738, 729055253, 161595413, 729071713, 121864220, 729137167, 254595208, 729157550, 729223305, 729268226, 729286486, 729333859,
+ 729366987, 729415692, 729432090, 729449276, 729501834, 729809950, 729845899, 7733287, 729956382, 729992897, 730054715, 275546122, 730087426, 7045160, 184894633,
+ 730104279, 154767500, 730136630, 386535413, 730169410, 730202138, 108658716, 730218967, 730251327, 126959653, 730284048, 2361407, 730301470, 730333408, 57032744,
+ 730370189, 84934694, 339296272, 409944083, 730447910, 730464299, 730501262, 730678570, 730726832, 730763407, 730808322, 523976715, 730827386, 730874526, 730908501,
+ 164479007, 730972619, 731025552, 27852841, 731086890, 731104669, 731152386, 110215270, 731173009, 59228176, 731271314, 731353235, 293502992, 731512834, 147341349,
+ 731529309, 731579223, 558841883, 731613567, 731676754, 87539722, 731709494, 731742214, 99893254, 112427029, 731762836, 732074133, 732136777, 4161548, 732184663,
+ 732234488, 732269677, 732350914, 2197979, 732397644, 500910540, 732434582, 732545069, 732582039, 732725725, 732758863, 732790790, 732810116, 45760543, 732875162,
+ 732958872, 162791446, 313786839, 733052968, 300892189, 733069844, 280903701, 125927434, 733118504, 295731215, 733134954, 733221017, 116375776, 733267928, 733333081,
+ 733383183, 733446184, 733462566, 733478955, 110215267, 733513023, 300925035, 733579000, 733659167, 733676574, 733712538, 361316784, 733790654, 733856375, 733892763,
+ 733955102, 733986847, 338493450, 118883151, 734007452, 734184635, 11157514, 734236829, 734347371, 734384224, 734430078, 247234570, 734463707, 734496667, 734560793,
+ 734625899, 734659525, 734708144, 734740564, 116376606, 734774155, 734839696, 734872011, 184926219, 734924958, 735154335, 735199687, 735248406, 735265227, 700022894,
+ 735318176, 735400097, 735461388, 735477786, 171163669, 735496896, 459785438, 735560139, 137445382, 340283554, 735613091, 735674455, 735724280, 4341802, 735760548,
+ 141459468, 735821826, 5869158, 735842469, 327663642, 735952952, 735985676, 436717993, 736002507, 736052595, 736085120, 424017942, 736137382, 736215887, 736252071,
+ 736346246, 33243267, 736364080, 736395285, 736413556, 736448680, 736493609, 736509974, 102858780, 736526343, 736542852, 2621575, 736559116, 736575529, 736591894,
+ 736608387, 736624682, 27344933, 736645289, 295649318, 736724108, 146456613, 573620262, 303611932, 736776362, 30392338, 736821267, 736837642, 736855802, 736886812,
+ 96190493, 736903189, 717226005, 736919581, 736935942, 28016642, 736956587, 737230904, 737263703, 737312796, 737329154, 737345555, 737361941, 256032780, 737379924,
+ 737477368, 737513644, 737689640, 737706022, 737722406, 5505060, 103940122, 737738764, 737755157, 128761887, 737771530, 49774630, 737792136, 737821665, 584990746,
+ 282853402, 96026645, 737857709, 737902684, 19447814, 737935897, 738001861, 738054318, 738136239, 738201776, 738328605, 738344989, 115589151, 298614810, 207962124,
+ 738361356, 234176519, 738378641, 738430156, 738492435, 738508857, 738525196, 738541625, 142180374, 738562225, 738591184, 738639882, 204488735, 738657169, 738705414,
+ 8994823, 521617444, 738721821, 738738182, 738754617, 738770984, 738787444, 738803750, 17449076, 738824370, 738885642, 738902045, 738918430, 738955425, 739016763,
+ 576880678, 593117194, 739053747, 739147795, 739165080, 739213334, 172703775, 739233972, 739295258, 7734103, 739311628, 211173402, 739328913, 739377376, 739411303,
+ 739475487, 739491869, 1769474, 739512501, 739607561, 567083067, 739640270, 202522662, 739672169, 739704853, 739722108, 116213292, 739771010, 739823798, 739950614,
+ 381829146, 739967007, 739983370, 739999756, 44302342, 150077452, 740016166, 563265538, 740036791, 740081676, 740098086, 740114444, 740130837, 452100180, 128974886,
+ 740147216, 740163591, 546799647, 740182584, 7454742, 142180381, 740214257, 7602198, 740249784, 740364473, 740425750, 740442128, 502497306, 740459972, 740491348,
+ 740528314, 740590027, 441385391, 740643003, 740708540, 487965248, 740802576, 740818970, 131891236, 740839613, 740933654, 740950451, 740983772, 741015590, 741031952,
+ 741048377, 741064706, 201998373, 741081172, 131875664, 153174054, 741113896, 741130246, 219889674, 741150910, 741213596, 2360772, 131891257, 741261420, 741294096,
+ 741310483, 741326870, 160727056, 741343275, 295649295, 500842515, 741376105, 741409674, 741441839, 381550629, 741474330, 45023268, 741490690, 48447525, 741509117,
+ 204996620, 742133952, 742281409, 742523418, 742555679, 742572042, 742588447, 742604806, 124108821, 742623657, 742653954, 244170783, 231768095, 742671201, 742703110,
+ 181141525, 742723778, 742768742, 742805699, 742883420, 269287440, 312033333, 176963596, 742920388, 742998056, 743014410, 55132163, 743035077, 743100614, 743145503,
+ 743161877, 743178252, 129400851, 743194636, 131432458, 274120758, 743214479, 743277717, 743309328, 49790987, 278872076, 442974239, 743328854, 743407682, 659914794,
+ 743440405, 743456794, 743473164, 743489555, 743505922, 743522310, 234405909, 743538912, 412139579, 743572131, 743621455, 743653382, 743669781, 56639504, 743687378,
+ 743718953, 307134490, 743735810, 743772075, 743833612, 447840282, 743854279, 743964712, 332742713, 743981087, 518488121, 743997456, 354369577, 744018106, 49774634,
+ 155779084, 744079372, 312180742, 744095760, 11157544, 744112235, 253624404, 744149192, 288620664, 744308755, 293715989, 744329417, 744390665, 9207837, 744407049,
+ 744423435, 67240073, 744439810, 410206245, 744456215, 744472599, 744488983, 2179110, 744505479, 744521754, 744538149, 744554497, 77709341, 744571011, 744587293,
+ 1212434, 744603671, 51839018, 744621322, 76709906, 13074442, 744652818, 744669224, 744685578, 744701974, 17924103, 744718937, 744751132, 9535525, 744767498,
+ 2523178, 745230538, 745390112, 745423893, 542425090, 112918670, 745472131, 59883651, 745490613, 745537552, 470007813, 44908582, 745558219, 745767014, 745801531,
+ 108658710, 745849121, 5865526, 47120424, 745882132, 745931223, 201524424, 275447820, 745967820, 746192912, 461963269, 746210275, 746260415, 746356822, 25559094,
+ 746393805, 92930090, 746536999, 746574030, 4998174, 746701334, 98107418, 746737871, 746803408, 197722141, 746881053, 404160552, 746898441, 746930400, 118865935,
+ 746967249, 149127263, 747192358, 747208706, 245301277, 747227508, 747292776, 312410114, 747340000, 257933314, 747373060, 747421778, 4964383, 747455886, 6373475,
+ 747524183, 747569211, 747601979, 747636469, 747683866, 747700250, 747716620, 747733008, 747749397, 88948772, 747770066, 134627338, 747901139, 8392916, 748060731,
+ 748094633, 236716042, 748128059, 748175823, 748212437, 748470294, 748486722, 748523734, 748620744, 748687575, 748748812, 748765210, 748781587, 748797974, 748814362,
+ 748830756, 50266118, 748848234, 140247145, 484016226, 748929064, 748945439, 169787418, 748962710, 749015256, 749113561, 136790018, 749207611, 749244634, 749355018,
+ 8391135, 749371413, 749387778, 749408475, 749502486, 749519151, 749555932, 749867229, 749961761, 750014686, 225181738, 750063839, 2195614, 750288922, 16728082,
+ 510312866, 750308265, 62914570, 750354735, 750387216, 118210570, 750404520, 2588738, 750436436, 750470022, 45465606, 750506208, 750633019, 750666160, 750702817,
+ 750801122, 750899427, 66928681, 2195669, 751014116, 750305282, 751093326, 751141323, 751190446, 751241367, 751288623, 171556948, 751323406, 266190887, 751371339,
+ 161988624, 751435883, 751468976, 5619723, 5619723, 751502749, 751550556, 751583339, 751616011, 751632400, 51871784, 751648834, 751685861, 751866086, 751976514,
+ 37438738, 752009254, 752025606, 178765881, 752043382, 435781663, 752095463, 533544991, 752174136, 752239121, 752271672, 752304212, 752337808, 168706114, 752373992,
+ 361431094, 752472297, 752582666, 8392938, 119799864, 752600843, 207622379, 6833854, 752685292, 752779293, 752797453, 752832749, 752931054, 752996591, 753057808,
+ 500711464, 753075209, 357793818, 753106998, 456738835, 753139778, 753172518, 753190560, 115179558, 753619185, 27624386, 173443541, 753684722, 2719784, 753799411,
+ 753958924, 753975334, 753991692, 754008083, 754024469, 232030234, 323207206, 66928655, 117751820, 754045172, 754172958, 124864998, 754204732, 754290933, 274120763,
+ 754402216, 8390624, 754435560, 754483960, 140247887, 754520310, 754585847, 754761766, 754782456, 2195605, 8389314, 2130209, 755056642, 755073043, 55377957,
+ 153878574, 755093753, 371605516, 755159290, 13238295, 19267641, 118882904, 755241211, 115785754, 73187368, 755351554, 607617131, 755370056, 4292690, 755503356,
+ 132579433, 755615948, 755646476, 184713254, 755663786, 755744806, 3211369, 24969226, 755765501, 2342928, 755896574, 755978495, 756074213, 756121626, 270516236,
+ 756142336, 756252684, 115523595, 756269527, 1982495, 47087643, 756302870, 110231618, 756351042, 756383798, 540049446, 756416618, 756498508, 756535553, 756663217,
+ 341573698, 756698946, 756744734, 146456578, 76742696, 756793420, 756826143, 756846135, 180158466, 756896002, 757256451, 51871760, 757350516, 110248368, 757371140,
+ 357597186, 757465921, 757498251, 757532217, 757628938, 545259562, 757645418, 757731589, 1196042, 757792780, 146653222, 59310102, 757813510, 416727052, 757891078,
+ 599130140, 757907915, 366907655, 8389571, 757960968, 758087690, 1114115, 132776362, 19038214, 758104076, 758120507, 758157577, 758431754, 758448170, 112754700,
+ 458014742, 758466932, 17154064, 758530058, 758546463, 686424106, 758564252, 758612052, 758646105, 758677570, 78479366, 758710755, 115785750, 758747402, 283721794,
+ 758825807, 758858187, 27246602, 758911243, 758956042, 758972950, 759008278, 759073921, 759119931, 759157004, 338133459, 2359927, 759267349, 65880066, 759288077,
+ 5325291, 759350841, 759451918, 759516513, 759566607, 759648528, 759714065, 759812370, 25562369, 759943443, 760004610, 112754728, 275546114, 760021008, 760037613,
+ 760071678, 760136592, 628981762, 760168514, 760202391, 113246289, 760250827, 760302345, 760350386, 219824167, 760382376, 2523146, 760418580, 760610909, 760659990,
+ 760677504, 2130865, 760729877, 760860950, 760905730, 29900806, 760926058, 761004886, 761053230, 761103390, 153191302, 761135106, 2195556, 761151490, 761167979,
+ 232079391, 761201542, 761233492, 761267256, 761331819, 3178525, 761368855, 761614616, 761709480, 57950220, 761742159, 761774095, 22216726, 761793344, 761856066,
+ 761890134, 761937951, 150241322, 761954763, 762003477, 762019866, 125796364, 445841446, 162499484, 50266148, 762040601, 762266563, 762314859, 762348485, 15073311,
+ 271384591, 110247986, 762397672, 762445931, 383320086, 762479959, 762531829, 762560737, 318832666, 762597658, 196149274, 762658911, 762709086, 762757146, 184389915,
+ 762774422, 762822689, 2196680, 132481106, 762871829, 762888219, 442859957, 762920982, 762937375, 762953738, 131858491, 762970178, 266191121, 763003724, 763056412,
+ 763101237, 763134885, 763166786, 203325451, 763199490, 3244114, 763220253, 763400478, 150585791, 763498783, 763756812, 763810080, 19841055, 19251671, 205144092,
+ 763875617, 764055842, 188760254, 8392995, 764494720, 81756200, 764547364, 24838150, 764612901, 108315125, 764678438, 2196343, 764759844, 764821525, 764837904,
+ 198672426, 764854301, 764870710, 764907815, 765100054, 125796368, 4393446, 765120808, 765181981, 5882713, 765198795, 765248395, 765313261, 113115165, 385515574,
+ 765346081, 765382953, 765628714, 402145282, 765689882, 191053836, 765706266, 765722636, 765739010, 307298315, 2195566, 765755629, 765788247, 367886857, 180601320,
+ 765837399, 172703754, 765886466, 765902886, 405865446, 765923627, 766001179, 766033986, 766071084, 766198194, 766230549, 7634980, 766246949, 766263317, 99876874,
+ 766280075, 766312457, 766328969, 3309597, 766345257, 766361637, 766382381, 154423598, 766415151, 766493201, 22069379, 766525556, 766541846, 766560417, 766591005,
+ 766609326, 766640244, 766656552, 766672918, 2523177, 766693680, 27705384, 53870611, 608731143, 766803973, 766820380, 98107408, 766841137, 766873906, 766935156,
+ 766951461, 2523252, 766967829, 628326436, 766985536, 767017076, 767033363, 255459369, 767051717, 48480271, 767082524, 767098909, 118882373, 56426506, 767119667,
+ 767182817, 767230250, 767263018, 66814250, 767754370, 767770642, 62341252, 767791413, 768037174, 768098325, 768115120, 52609062, 768147466, 768165693, 768213023,
+ 112476217, 768233783, 768458806, 93978626, 768493835, 768541481, 768574876, 768623742, 3227747, 768671763, 122683429, 768688174, 768738113, 256656305, 768770132,
+ 768807224, 768853615, 768902153, 768935411, 768966722, 768999856, 769036601, 769146978, 228737030, 340132705, 48070668, 769184058, 769327246, 769359931, 537837667,
+ 769392652, 769409062, 769426751, 237715693, 769495355, 769704468, 433750123, 769754121, 769786393, 769851499, 769884236, 769917815, 769951110, 770019644, 770085181,
+ 13713543, 770277457, 52330522, 333136834, 770310165, 770326670, 770359362, 770392102, 6374312, 770412862, 770609471, 770740544, 468189815, 770785301, 770801670,
+ 3375116, 770822465, 770932748, 770949158, 172752898, 1785872, 770965523, 219529238, 770986306, 771032073, 771068227, 763166760, 771212200, 152945070, 771245332,
+ 771293213, 771309634, 358514709, 771342967, 771379524, 771440661, 771457055, 771473450, 183369738, 771494213, 771572183, 771604511, 771620885, 771637250, 114409493,
+ 771654062, 771704033, 152813570, 771756358, 2197929, 771899695, 771933325, 20365334, 771982905, 229527879, 772080247, 385597919, 772113509, 119226409, 772165960,
+ 772247881, 772329802, 772378955, 294633514, 119226405, 8701882, 772457578, 772538378, 772554773, 25559092, 772572329, 772608332, 772788557, 772980795, 773013939,
+ 773050702, 773099855, 773165392, 773210133, 172982331, 773230929, 773341200, 773357575, 773373988, 773390374, 773406722, 773423328, 232079414, 445726722, 773456161,
+ 773489111, 773522050, 773574994, 122732550, 773719189, 2506793, 773750865, 773783580, 773799966, 773832730, 773853523, 773902676, 773980920, 774012930, 774029350,
+ 208601119, 774045717, 774062111, 774082901, 774128075, 774181206, 774259594, 126615590, 774292216, 502759443, 774328663, 774489004, 774554514, 131842129, 774602795,
+ 774635628, 774668310, 774684684, 116277274, 774705496, 774799827, 774848965, 774881340, 774964319, 775033177, 775094293, 775111503, 775143430, 775159839, 775176233,
+ 31424543, 775192671, 775242257, 564887562, 86327336, 775278938, 264717286, 679755842, 775471116, 119259162, 775487572, 775520266, 775536671, 775553936, 775590235,
+ 775634975, 775651334, 775667718, 775684127, 119210000, 775700572, 775733254, 775749698, 775782412, 775798790, 775815174, 2850847, 775831776, 775864747, 775897107,
+ 654983194, 775913498, 775929896, 625688595, 775946543, 775979019, 678264863, 775996797, 776045768, 776077399, 776130908, 300335125, 776196445, 776258472, 776294750,
+ 776357433, 776456174, 776504233, 776552479, 776568842, 776585218, 776601638, 776618015, 776635280, 776667157, 776683536, 776699945, 776716372, 119800243, 776749279,
+ 776781845, 123912258, 776799627, 776851807, 139039072, 777015649, 232996930, 777076767, 274300947, 323305531, 777097570, 777160132, 777191445, 777207895, 8389607,
+ 777257062, 777289759, 777306122, 777322527, 47611923, 777339183, 357990419, 777371667, 777389032, 777437250, 777473915, 777523555, 555270154, 777799012, 24297932,
+ 143393071, 2129972, 777864075, 149128082, 3260475, 777933156, 778146149, 15007782, 778174767, 778207911, 778240040, 5619738, 19808322, 778256406, 778272794,
+ 231555088, 161710082, 778293606, 778403880, 233193482, 538198082, 778424679, 208977979, 778485770, 778502184, 119881749, 778522984, 778735977, 186466370, 778863051,
+ 668696597, 778911782, 552878101, 778928144, 778944522, 2195716, 778965354, 779075873, 448102421, 779109216, 779178347, 779239436, 779257217, 779305867, 779371018,
+ 4998816, 779403801, 779470702, 779535010, 779567134, 779599882, 779617881, 779665867, 779714626, 273203210, 779751788, 779911178, 779928183, 779960462, 779993119,
+ 780009510, 780025894, 47284226, 780042271, 780059051, 780091402, 321307255, 780109299, 780140610, 780173327, 780189711, 25559887, 780206617, 780272151, 780304440,
+ 780337218, 780369966, 780419596, 780451861, 780469088, 9535497, 780534060, 780570989, 780669294, 780746758, 780763157, 142950459, 780779979, 780828678, 211173388,
+ 780845593, 780915055, 780996976, 781041751, 781090822, 781107219, 108315224, 238059526, 781123650, 137101746, 781156654, 781189591, 781223801, 781275505, 781455730,
+ 184926229, 781565967, 781582395, 781615209, 781652339, 781762978, 781799796, 781877274, 781893691, 781927031, 441368588, 781963637, 277954579, 545472538, 782041104,
+ 563347494, 782058009, 782123018, 437932406, 782142004, 782172619, 782225783, 782289079, 782337013, 782406008, 782565417, 782581772, 782598154, 782614554, 782630978,
+ 782664100, 155832456, 143753222, 782696460, 2408486, 782715115, 238551511, 354369552, 782782841, 113246240, 782848378, 137101411, 782897531, 783061372, 48054283,
+ 2196343, 783176061, 180764698, 462487580, 114393110, 783237186, 783269942, 783307134, 32849948, 783351867, 115294237, 783384605, 783400986, 783417428, 783450133,
+ 783466955, 783515690, 783532044, 52609034, 783552895, 783827025, 3228408, 783860213, 783892622, 617923019, 783925274, 50511910, 783946112, 110182689, 511656173,
+ 783991883, 3244131, 784056330, 241434660, 23085066, 155828312, 784077185, 784175490, 784286709, 784355715, 381829157, 784470251, 733102092, 126042123, 784517191,
+ 784568708, 784646154, 56557580, 784662570, 2195935, 50118668, 784683397, 784830854, 784876655, 211189791, 45646736, 784908300, 2359322, 784927149, 756006968,
+ 784974425, 2752543, 4177956, 785371528, 278970370, 785682825, 44351514, 785760309, 785793261, 785825804, 4965801, 785843056, 785891435, 589479957, 111034380,
+ 785928586, 786022922, 786055471, 786088001, 786138223, 786174347, 786219014, 112771078, 3211371, 786236915, 786268206, 786317394, 1917355, 786354572, 112754700,
+ 533399339, 786485645, 786579466, 5308910, 786595866, 786612245, 150388802, 786633102, 153190834, 786731407, 726695946, 786809084, 786841676, 786874887, 786923551,
+ 786939914, 171966495, 786960784, 119357499, 787038667, 787087819, 787136963, 787173777, 787220148, 118210598, 4702315, 787300873, 787334000, 787383526, 787481017,
+ 787530634, 252280932, 148733973, 158813300, 787564019, 787595796, 787648914, 787922965, 2965506, 7602216, 787939387, 787972128, 788004948, 2670602, 788042131,
+ 788086794, 788103227, 788135962, 788152349, 140247887, 788169637, 788201696, 788235240, 788284306, 788336086, 310493621, 788431881, 13074458, 788465236, 788563713,
+ 788611502, 529760294, 131335031, 132481131, 788660264, 55197725, 788676654, 788725826, 124551194, 788759375, 788430860, 788792800, 788828564, 789053452, 789069923,
+ 789102881, 789135381, 789151831, 5341293, 789201199, 789234295, 789266444, 789282921, 789315668, 789348374, 789364757, 789385621, 789431208, 789463343, 789500310,
+ 729022466, 789561384, 789577740, 123600906, 789594415, 789627117, 789664151, 789774348, 789790746, 789811608, 789889950, 789926297, 389840898, 23363797, 790122906,
+ 790270363, 173817872, 790315010, 158711827, 790331408, 790347883, 790381081, 790446096, 180764710, 790462474, 153190456, 4964378, 790479721, 625918386, 790544986,
+ 790577183, 295927848, 790593562, 790609951, 790626314, 15351850, 790647196, 790729117, 608731152, 624656396, 790808595, 790859101, 790941957, 791004044, 791052381,
+ 791102330, 117899310, 791150699, 791183414, 791216579, 791253406, 451428983, 791429344, 791464705, 7733314, 791515551, 791630240, 791695777, 791773194, 791790051,
+ 791822417, 791855170, 7389220, 791887874, 791904266, 144048149, 791921927, 792023005, 792051738, 51675165, 792068399, 792102355, 185958466, 792151047, 792215618,
+ 792249185, 792281107, 88948767, 792298009, 792363529, 792395815, 792428974, 55132217, 435667478, 792482210, 792546682, 792629667, 792854544, 5603354, 792874918,
+ 792924580, 793072037, 793134166, 184388353, 793182239, 793198676, 1114143, 793231819, 793285030, 793347102, 793378854, 27623483, 52674591, 793661864, 793821864,
+ 793853958, 77512725, 793871765, 793919515, 637944228, 793956777, 794117324, 794166261, 794232875, 499269698, 237830175, 794297320, 794346073, 794379929, 794427479,
+ 794481066, 8392239, 794574904, 794608604, 131891216, 794640406, 794656814, 794710443, 794902538, 794919759, 794951692, 61997087, 794969634, 795017248, 540770320,
+ 795050071, 795099195, 795136428, 51855382, 435323104, 452100180, 795263006, 795296281, 46088229, 795365805, 2195933, 795447726, 795644335, 795689026, 7716902,
+ 795723827, 795770901, 795787266, 195002394, 191645214, 795808176, 462651418, 795852802, 795869194, 271925364, 795885674, 115770104, 795972017, 774012959, 796196890,
+ 796213551, 796246647, 796279216, 796312027, 796348850, 796426324, 796459034, 796475394, 796491791, 796508182, 796524976, 298270726, 796557615, 796590304, 796627379,
+ 796819482, 115294220, 8393140, 796835861, 796852250, 796868610, 796885527, 796917847, 796967904, 797016130, 56262698, 797052597, 797131806, 797163551, 797180816,
+ 797214297, 634978326, 797262824, 118882772, 797313375, 382435333, 797364661, 797413331, 8389526, 797462966, 2850819, 209175646, 460390459, 797561271, 797966470,
+ 41615383, 797987256, 798114958, 25559887, 798162984, 192479258, 798179359, 126697513, 798200249, 798261290, 114114582, 27623738, 798281683, 270516262, 798330340,
+ 798376783, 565772309, 798409914, 798441494, 798457882, 798474256, 264093706, 798495162, 426934291, 6373688, 798656685, 232197679, 798720046, 798770268, 45858837,
+ 6717466, 798822843, 799032102, 799066638, 549999036, 558628930, 799113247, 52477953, 799134141, 799310082, 799342610, 8606142, 799359057, 379797570, 799391828,
+ 799424619, 11059218, 799457386, 799543743, 799624150, 156041258, 799691200, 799773121, 799949733, 799981578, 799997954, 800014357, 800030807, 1918063, 800080905,
+ 128155667, 800112652, 146653944, 145735682, 800133570, 800245352, 800309675, 800346563, 800506833, 8390928, 800559556, 800620565, 184387560, 763166732, 800637442,
+ 800670143, 147505183, 800702476, 800718874, 2196096, 800735286, 800768892, 800818664, 113247262, 800870853, 800997378, 765313034, 501940226, 801013844, 51855386,
+ 743981087, 801047721, 801079322, 801095711, 115721385, 801116614, 801313223, 5325263, 801456160, 801493448, 149585931, 126222874, 801587212, 801603594, 251396117,
+ 801622806, 141606952, 801656422, 7733551, 801690057, 801800214, 801816588, 801833546, 801865816, 801899403, 227918750, 801964546, 801997431, 802029672, 802078736,
+ 802095114, 802111490, 802127910, 565739551, 788152346, 802148810, 802226258, 191545370, 727664029, 802258998, 802291810, 802324539, 802358265, 802443723, 802570670,
+ 802127898, 131334368, 802619432, 383860774, 802635797, 802652619, 152946415, 802701749, 802734146, 802766904, 802800541, 159809562, 154796256, 802884510, 802930795,
+ 802963680, 802996243, 803012630, 803029003, 65896479, 803045913, 803112085, 803143746, 803181004, 803275055, 803307522, 803323925, 79691807, 803340294, 803357209,
+ 803426765, 803492302, 123273231, 678264848, 803541455, 803590608, 803668414, 803735581, 2326557, 803782696, 803799343, 350912533, 803836369, 804213202, 804340766,
+ 804377043, 804439469, 804487218, 804519948, 450543626, 804536766, 3244503, 178472820, 804601868, 125911147, 804622804, 804799344, 804847622, 351240213, 804864031,
+ 804880403, 775815189, 804896834, 804934101, 176357877, 124864372, 805012979, 805044683, 805093419, 5603338, 805126170, 805142530, 125927446, 805158914, 505184267,
+ 805179862, 805357428, 805388748, 177094666, 805421098, 51282347, 805437506, 152945070, 805470667, 805519416, 805552159, 805569397, 805601319, 7094706, 805634585,
+ 805704151, 805765967, 295125030, 805797920, 1917231, 805835224, 806043729, 806076442, 806092821, 140247515, 806110263, 138232242, 806141954, 806158357, 806175567,
+ 806212057, 132431931, 600719414, 806291542, 782516230, 135004162, 806355050, 8391085, 806441434, 806537076, 109136925, 806569015, 806600758, 348831775, 806638043,
+ 47611916, 5325400, 806715423, 18137094, 806731842, 806764600, 389136815, 807162333, 807309790, 807354452, 807387359, 807424479, 807486876, 807537875, 807583770,
+ 111149072, 807600236, 807632906, 48054303, 807649292, 243367974, 807666511, 807701721, 807780462, 807813130, 807829536, 807863179, 148800002, 807927907, 807960578,
+ 807976998, 807993375, 116015107, 808011654, 808110350, 808158090, 808191179, 808222770, 7389212, 447660044, 808255519, 808272778, 808304661, 808321871, 808353858,
+ 808386571, 555270160, 808407520, 112476186, 808484890, 625524748, 808501287, 808534047, 802127893, 808554977, 808633212, 808686050, 262537282, 808730640, 808747107,
+ 808779802, 808796244, 808828934, 541392908, 808849891, 808980964, 341147658, 809074775, 88457256, 809123896, 290406402, 809161189, 352305164, 809305257, 809337770,
+ 809423334, 163725742, 809467988, 809501209, 809566626, 809599084, 809631746, 325353493, 809648130, 809664538, 809681005, 809713695, 190646293, 809734631, 659341324,
+ 156434448, 809828398, 809879703, 266125338, 809927193, 809992218, 810008879, 140247079, 789873495, 3719275, 810041428, 48054308, 810078696, 810172719, 448102421,
+ 810209769, 810287158, 5865526, 153191312, 810320781, 810406378, 704036971, 591593994, 136986643, 810451051, 810483714, 810500128, 810532930, 810570180, 810632580,
+ 810696725, 810713154, 810746159, 392921128, 810779156, 810827833, 810844191, 810860550, 318832646, 810881515, 417300492, 596803606, 810942495, 810958854, 234405894,
+ 810975769, 811044722, 811090988, 811139169, 811206434, 811237407, 811253798, 811270175, 811287440, 811323554, 811352066, 780189706, 811368470, 247611451, 811389420,
+ 811450474, 779075624, 811532820, 811581476, 811598716, 811646995, 811663381, 811682945, 6619945, 811731540, 811778060, 811794458, 175669290, 811815405, 812044782,
+ 812122134, 802361199, 812139550, 812171911, 812221440, 812255209, 812335125, 812352413, 812434400, 226557973, 812487151, 812598113, 729006106, 812630319, 812662794,
+ 812679627, 812728376, 812761154, 812794327, 812826690, 812860279, 812894011, 812945904, 246562854, 813023244, 813039657, 3538950, 813056011, 813072386, 44302342,
+ 813088784, 122732554, 813105233, 813137932, 813155066, 813187126, 813224433, 813302012, 118210562, 525631547, 147062814, 813334559, 808682706, 813351342, 813401408,
+ 813432853, 71401526, 813453810, 813498380, 813514762, 241827861, 813531163, 813568499, 813678699, 813712207, 813744187, 813776922, 158811636, 813793373, 279150604,
+ 813842498, 382484561, 813879796, 45646878, 814039052, 216451228, 814056184, 814088625, 550944790, 814123037, 814170138, 814187343, 814219695, 814252034, 814268426,
+ 814284816, 5718026, 814301203, 814317590, 814334475, 814384426, 294060034, 814436853, 814567926, 814698999, 814764536, 814846457, 2113652, 814907880, 814940162,
+ 814956565, 814973015, 815022945, 815059450, 171753494, 815108603, 815206908, 815251471, 815272006, 815349772, 815366154, 127893525, 815387133, 815513692, 238552875,
+ 815550872, 884776, 815628331, 815665662, 815841336, 25563091, 815878655, 206880901, 311411535, 816021596, 816054278, 118243350, 816071115, 816119810, 816137327,
+ 816168979, 816185370, 24969252, 816206336, 816300044, 816316426, 816332917, 816366441, 816431592, 816468481, 12648580, 816665090, 816730627, 268189735, 689799227,
+ 816824407, 119997415, 693503937, 816873554, 816907158, 816960004, 817123845, 8389487, 817250343, 817283093, 817299458, 817315850, 817332226, 2113541, 817348715,
+ 817385990, 817446988, 817484295, 817598984, 817659919, 817676300, 817692710, 221806594, 110215285, 817709358, 817741865, 2197690, 165773340, 7258164, 817759432,
+ 817792286, 817840154, 817858226, 817889364, 817923061, 817988847, 818020363, 260064079, 146854409, 818041354, 818153432, 818219311, 164020264, 818303499, 818483724,
+ 818528293, 818549261, 340280354, 151912469, 818593814, 1212532, 818613960, 307134505, 818675734, 2113577, 818692132, 251806149, 818708530, 818742008, 818774037,
+ 90112057, 336887836, 818795022, 818841804, 8393231, 818875554, 571965468, 818921500, 7635001, 818937878, 7667724, 818958864, 819003421, 40960041, 819023510,
+ 52215938, 819085444, 819101719, 59293830, 283967510, 819122705, 819286546, 147390495, 174080045, 819414502, 819466771, 819514672, 819560454, 819577326, 819609659,
+ 819643512, 819675179, 452100162, 819712532, 4980871, 45875212, 819757066, 819773497, 819789860, 819806229, 819822628, 179716212, 819843605, 3245215, 819937320,
+ 819954425, 714244134, 820400663, 820659601, 820723733, 820740162, 820772918, 820808408, 820871206, 820888399, 820920849, 820957720, 433635340, 52723722, 821002271,
+ 821018645, 821035039, 251396115, 821051446, 821084260, 194510874, 821121561, 821198879, 41582630, 821215248, 821231622, 821249000, 821297183, 531972115, 598327306,
+ 821316083, 821412831, 821461013, 821478296, 821526570, 821545248, 821592601, 821658969, 821690378, 46219276, 821706784, 821739607, 821788687, 821805072, 47251496,
+ 821821461, 821837854, 821870623, 821886995, 55263234, 821903370, 821919773, 821940762, 135168002, 822137371, 822249628, 822297193, 822329356, 788152358, 42418195,
+ 822347095, 822395357, 822427674, 822444034, 128892970, 822462886, 444107103, 822525995, 822559214, 822591542, 822624870, 822657040, 822673434, 176521519, 5767184,
+ 822694424, 822739046, 822771743, 47546396, 822788556, 822820876, 198410278, 6455311, 822841884, 822986540, 823034344, 823066640, 823083046, 823099408, 56655883,
+ 262914069, 823117289, 118882411, 151732236, 823165021, 823214092, 823230493, 823246914, 823282844, 823328794, 237731869, 162332674, 431308802, 823345211, 691912710,
+ 823377930, 823394306, 823410745, 494272524, 823427985, 159449144, 823480861, 823628318, 823705823, 320946229, 163726464, 823743007, 823854205, 287113232, 823935026,
+ 77512716, 408272912, 823967775, 823984134, 824000533, 824016912, 3162127, 824037920, 142180363, 824119841, 824349218, 824426502, 824447523, 824509331, 824557614,
+ 441466920, 824609399, 109150271, 824672322, 824705083, 824742436, 703250444, 458178619, 824786946, 824803368, 55132189, 824820575, 773095948, 824885298, 805224450,
+ 824918471, 824967189, 824983639, 825032730, 825049563, 825081872, 825098250, 825115817, 825152037, 825381362, 825428454, 825459606, 825507947, 825540620, 62390298,
+ 825558681, 3248678, 825606246, 825638978, 141295626, 825672873, 788152341, 825704479, 159383589, 165773340, 825725479, 825999790, 139821147, 826049988, 826081310,
+ 826114074, 826130463, 464928787, 826147275, 498909203, 826198202, 826228746, 826245145, 483786754, 826277942, 826310668, 826327050, 826343452, 214335490, 826361151,
+ 826425668, 826479144, 826525866, 219627539, 826589238, 826626601, 388825109, 826691720, 826720266, 826736668, 56164378, 826757674, 826852220, 826901480, 409273374,
+ 122601498, 826954283, 827150892, 827213875, 128843788, 827260947, 27852822, 52199436, 827277835, 827326493, 279150608, 827343305, 433144614, 827478573, 827544110,
+ 827626031, 827703325, 827719739, 827752459, 827768848, 827785242, 827801615, 218841110, 827818876, 827867650, 827900535, 827932699, 827965442, 827982846, 828031409,
+ 828063820, 574324774, 828096514, 138625043, 828112902, 828129346, 828162350, 828194843, 520142879, 828227668, 828260362, 828276755, 828293207, 828346928, 828559921,
+ 828604653, 828641842, 828703009, 828736380, 828788557, 828854050, 409272419, 828932152, 25559103, 2834721, 828969523, 829148994, 829195087, 829227036, 829243394,
+ 829259797, 152272917, 829276172, 829292550, 829308949, 144375839, 829329972, 130203690, 324567042, 829390864, 829407270, 829423700, 829457309, 829538342, 829559349,
+ 829636634, 94339088, 829653904, 829685865, 829718540, 88948751, 829735371, 829784133, 829818185, 829866043, 829901832, 829947967, 829980678, 79691807, 829997068,
+ 391692397, 830013677, 830049730, 457539590, 830097338, 830149174, 48381974, 830231095, 830493240, 830586911, 654983197, 830603723, 830652428, 830669814, 830701590,
+ 830718011, 830751668, 830820921, 147013643, 823296010, 111181845, 830947387, 830984762, 831094796, 606650394, 831115835, 831246908, 831340584, 182632458, 831361597,
+ 366428188, 831443518, 831537154, 654017008, 831554070, 831586783, 831620719, 831668289, 831720311, 831750156, 831766584, 831799790, 816255551, 831836736, 5309018,
+ 831902273, 832098882, 832361027, 832405658, 8393284, 832438295, 832454805, 20299908, 183975967, 1753107, 832492101, 832574022, 832639559, 832716821, 166068290,
+ 832733222, 477937676, 832754248, 832897030, 832913439, 832929808, 832946186, 832963492, 833016393, 615694783, 833078663, 45727760, 833112073, 833178179, 833229386,
+ 833290674, 833326668, 833373596, 833425995, 340280058, 414909334, 833504115, 833586363, 833638988, 760955371, 833770061, 833830927, 219480086, 833847334, 833863682,
+ 47611941, 833880095, 73531402, 833901134, 833963891, 833995199, 834027551, 469499925, 834048591, 834294352, 475136847, 834422301, 4997720, 834487119, 2506794,
+ 834523729, 834605650, 834835027, 834912365, 823759444, 834945083, 152946102, 10649684, 834982485, 835077465, 835111596, 7734302, 116376585, 128450619, 835223554,
+ 62341131, 835240023, 835290040, 413270045, 835342033, 835387411, 805224460, 835408470, 42434576, 835551270, 835567618, 835584042, 835600396, 835616806, 83591206,
+ 675168258, 835633690, 835665936, 7258204, 835686999, 835731547, 835764236, 835780624, 49479701, 835797839, 45252637, 45252624, 835834456, 836042833, 836075532,
+ 125927445, 836091958, 836124779, 139198483, 836157972, 836211289, 340280992, 836272134, 836289359, 836321286, 836338544, 836386838, 836403202, 471547914, 836419887,
+ 6374263, 836457050, 836517904, 356925466, 563347462, 61997092, 836534704, 134513154, 836571739, 836734192, 836796457, 47251487, 836813858, 1212456, 836846455,
+ 836878358, 836894774, 836932188, 786022602, 837025874, 131334236, 837058586, 837075028, 837107722, 366116885, 837124112, 837145181, 837189691, 837224025, 171459035,
+ 837272606, 837304779, 837354886, 837419475, 432406566, 837469460, 837518274, 837550106, 837566548, 837599251, 837615618, 837632026, 837648399, 189235202, 837669470,
+ 727664618, 837882463, 837943927, 837980768, 3262323, 838124512, 838172682, 838189095, 838221850, 838242913, 838320143, 838336538, 838352912, 838369309, 55443496,
+ 65699842, 838387463, 838437610, 2965535, 838485929, 558628918, 838534167, 838586978, 838664495, 768622604, 838701667, 208995151, 838796176, 839176805, 839355357,
+ 839401529, 839417858, 839434250, 839450645, 839467010, 839483434, 139018252, 839499817, 839516226, 839548966, 654983199, 839565338, 839581708, 839598092, 839615566,
+ 839697515, 839729168, 119226373, 839745966, 839794716, 839811103, 839827498, 122667048, 839846590, 839893007, 839910494, 839958530, 226230298, 839974943, 839991306,
+ 840007701, 840024907, 840089616, 246677561, 840110694, 840156043, 237731881, 840220896, 840253494, 840286219, 840302620, 840319014, 118948802, 840335379, 122699807,
+ 840351774, 840384528, 31424517, 840404170, 840466539, 116277277, 2654246, 840499226, 363364358, 840520295, 840712952, 209191514, 840745067, 840777738, 840794759,
+ 840844989, 840925210, 128155690, 840941583, 840957979, 840990786, 841023498, 841040331, 757350426, 841089108, 841121823, 479100939, 841138182, 841155473, 841208424,
+ 841384035, 51625986, 841416720, 780763162, 841434299, 841482252, 347144218, 775929868, 841498690, 156155914, 841531402, 841547816, 841564697, 841629752, 841662493,
+ 591773999, 841678870, 841695244, 267567105, 841711723, 841745966, 661028906, 841793548, 841809946, 841827989, 841891906, 841929321, 213631007, 841990146, 842006538,
+ 115179539, 842022978, 842056942, 842088458, 3850242, 842104843, 842121247, 842137610, 842153986, 842170424, 842203235, 842235910, 842252354, 56754192, 583630850,
+ 842289770, 250937350, 842399772, 842416212, 842448922, 842465317, 273351115, 775176221, 842486379, 842530838, 842547202, 262193162, 842563610, 842579970, 842596362,
+ 842612755, 842629142, 840499231, 842645506, 842661930, 110608396, 842678312, 842694687, 842711078, 842727455, 160743452, 842743829, 842760194, 842776604, 842792998,
+ 842809375, 842825734, 228245526, 842845377, 47317049, 842891306, 842907688, 842924058, 842940482, 842973237, 843005995, 843038739, 843055116, 723289633, 843071498,
+ 370720789, 843088347, 843120661, 213025660, 843141740, 843252012, 505463247, 843289197, 843366426, 843382805, 843399180, 114409482, 370720780, 843416745, 843448330,
+ 843466998, 182632454, 843513882, 214827067, 843530242, 843546729, 612319254, 843581064, 843629675, 843661352, 843677702, 843694111, 135561232, 350863372, 843715182,
+ 843776054, 843808787, 843825173, 843841839, 843874330, 122667019, 843890700, 843907082, 128581672, 843923468, 843939866, 156155935, 843956236, 843973059, 844005406,
+ 156155910, 844038381, 841498655, 844070922, 844087315, 844103701, 115703839, 844120928, 844186030, 128155685, 844239471, 121356330, 844283906, 27328550, 844300348,
+ 844386928, 844448227, 121356326, 844480523, 844496924, 844513292, 135577626, 844529670, 844546054, 844562891, 844611637, 844644364, 844660772, 844681841, 844730994,
+ 844808204, 844824656, 143441951, 844862067, 844922939, 844955674, 844973545, 845021186, 845037578, 666271775, 845053964, 845070346, 845086741, 273351115, 845103138,
+ 845217896, 845267834, 845316579, 845348930, 845381638, 380534815, 845398035, 845414422, 709509186, 845430877, 114409510, 845480848, 845513163, 845561938, 845594630,
+ 845611467, 845660186, 845676575, 124207125, 845692987, 845727531, 127238210, 845763188, 845824002, 845840390, 845857369, 845890007, 845923211, 356090662, 845987852,
+ 625360902, 846004240, 846021369, 846053392, 846069786, 846086165, 846102559, 846118928, 846135306, 143081474, 846151746, 564887573, 846184488, 846201291, 846250022,
+ 846266399, 846282793, 846299568, 846332337, 846365197, 846418549, 846462978, 116752410, 846479403, 846512149, 588218427, 846528527, 846544908, 846561299, 846577685,
+ 420122083, 846594063, 846610453, 846627680, 846697078, 846807096, 846839810, 345784356, 846856223, 846872582, 846889001, 846905647, 846942839, 143491093, 728973343,
+ 847020256, 847053973, 847090296, 268468255, 847152635, 847200287, 847216642, 847233045, 847249474, 847283078, 411762690, 847319673, 847450746, 3538985, 847528567,
+ 847561192, 773718028, 847598203, 847660062, 847692078, 847725003, 139641354, 847775040, 847806485, 847822875, 847855656, 847872031, 228851718, 683589658, 847889324,
+ 847955209, 847986694, 119226374, 848007804, 848052264, 848068629, 848085529, 848150534, 848166933, 420120762, 848183322, 848199708, 848216971, 848282775, 49479721,
+ 848335485, 848494614, 848514531, 848560173, 848592898, 848609306, 184107014, 848625748, 848658921, 848707836, 7096107, 848745086, 848887838, 55623692, 321716334,
+ 848920635, 170999915, 848954412, 784091648, 849003256, 849036297, 849072767, 849217080, 849281036, 55115883, 849301232, 58769420, 849380155, 849429605, 113656045,
+ 849482368, 849559618, 849592388, 849641538, 849678192, 849723402, 173441063, 849740668, 849789030, 849821717, 849838727, 849887288, 849924737, 850018370, 850053178,
+ 850121346, 850236035, 10829850, 850346026, 297222175, 850367108, 850432645, 850493450, 117901115, 850510584, 2196392, 850542611, 809517122, 532676646, 850558978,
+ 108315678, 850576224, 850642585, 850694790, 850739202, 850760327, 850804764, 850821122, 110723109, 850839844, 480608884, 850906056, 4409010, 850973320, 851214438,
+ 3473410, 851251849, 851284618, 851361804, 164036634, 851382923, 851427356, 851443740, 2179206, 851460124, 33243164, 851481228, 151175196, 851510174, 851542032,
+ 851558440, 851574805, 152027167, 851595917, 851656820, 851673197, 851705884, 2752517, 851722356, 851740177, 851773764, 851804276, 766951453, 851821035, 14450698,
+ 308101151, 851853338, 851870376, 619200514, 851907214, 851968091, 852000778, 852017173, 477937701, 852033564, 852054671, 852115572, 852131859, 79937546, 852148252,
+ 852164630, 766574708, 852181033, 852197418, 62586902, 852213825, 852267664, 852313006, 852347462, 758071312, 852382353, 852574229, 852590595, 852606982, 17809450,
+ 852623467, 852656315, 852688919, 9961603, 852705287, 641990678, 65077382, 852721772, 852754470, 852770828, 852787226, 852803715, 1900553, 852819994, 852836784,
+ 852873874, 852939411, 853033721, 853065754, 853082128, 853098511, 853114892, 853131285, 853147674, 853164048, 242466873, 853184648, 853214282, 853245978, 853262352,
+ 853098511, 853278731, 6701092, 853295393, 853758613, 853807766, 853987991, 854065178, 854083232, 854119064, 854197139, 854247051, 19038214, 368099796, 854311759,
+ 289932355, 854347398, 854458911, 854507951, 854540763, 854574044, 854606259, 854641656, 131891210, 854687780, 854704807, 854741657, 70909975, 854900792, 854936324,
+ 854982763, 150585444, 855020186, 855197812, 855261672, 855295070, 855343130, 855364251, 199458924, 855490591, 855506954, 556400699, 855523866, 855556108, 855572490,
+ 855588885, 855606155, 855670866, 855703984, 855741084, 855903497, 855950326, 855982082, 856000048, 856031244, 371884061, 856049301, 856117917, 856229107, 4177951,
+ 856280280, 856328949, 856375327, 856391789, 856429214, 856588369, 212107290, 391118860, 856622165, 153993895, 856658591, 856784934, 783237186, 856805159, 5505065,
+ 856855200, 857163348, 659341338, 857260044, 141541378, 857276418, 857292821, 3162131, 857309256, 4703222, 857374783, 857412257, 857491201, 482919433, 857540577,
+ 857587733, 198328356, 857604150, 3900247, 857636918, 857669691, 857706004, 857767967, 159878231, 659341314, 857785595, 857833503, 857849894, 857866377, 59818119,
+ 857887394, 598852455, 857936547, 858062905, 192200725, 858079339, 858112002, 858129438, 2162724, 858163470, 858215076, 858342335, 3244507, 52576266, 858374991,
+ 858406922, 45875206, 858428069, 2195889, 185484713, 858538003, 275464214, 858559142, 269664935, 858850694, 858916042, 563495391, 858965086, 65699880, 859017895,
+ 389136960, 859144495, 859176981, 2196313, 3211711, 859193647, 859226171, 798310438, 859263656, 859340822, 859357200, 859373597, 134037516, 859393235, 859443881,
+ 859572433, 859624106, 8393387, 859701291, 859738796, 859799615, 859834063, 859865147, 555402064, 859898302, 859963502, 127713311, 859996247, 860045334, 860062128,
+ 860094474, 498291373, 860115630, 860312239, 67059844, 860389378, 860405798, 860423076, 860471306, 860489193, 860536848, 860553235, 860569637, 860585993, 14172183,
+ 860605036, 860672688, 860717072, 860734428, 860770993, 860900672, 860962835, 8391354, 860979232, 861011999, 861028371, 861045039, 861077612, 861111137, 861143042,
+ 861159451, 861196978, 352354314, 309559327, 861278899, 861421624, 861454391, 135840609, 861520834, 861553653, 203128884, 861622964, 861737653, 861831208, 19038220,
+ 861852342, 341377064, 861913897, 861948097, 740491318, 325239087, 861997504, 862060598, 561381405, 862098103, 862453781, 29901234, 862474936, 862666774, 862686040,
+ 862732820, 862781879, 862819001, 862883886, 862963002, 863015266, 863076364, 863092742, 863109139, 373800982, 863125998, 863158331, 19447829, 863191121, 863228602,
+ 863388142, 863425211, 863486176, 863523516, 222789654, 8389930, 319832148, 863670973, 863830076, 863913883, 863977570, 864010297, 6193168, 609632461, 864026730,
+ 864108628, 153993314, 864146110, 864244415, 126959654, 864321558, 864337922, 107757597, 864354316, 177963046, 864373017, 864438732, 864486798, 864553460, 341803036,
+ 864604864, 15007766, 864735937, 864785090, 864834243, 6193194, 749994036, 527090158, 45039632, 865009680, 3309589, 865030852, 383796118, 865260229, 2196957,
+ 865321026, 379865559, 865356632, 865405917, 865452335, 730234899, 7258178, 865485246, 865550392, 865584566, 22216733, 370540603, 865637062, 865779714, 295944218,
+ 865796106, 563298320, 502661122, 865812899, 58753641, 865850055, 865978596, 866025503, 866041866, 866058252, 137936922, 866079432, 866157755, 866205777, 866238502,
+ 102793258, 866254905, 9207809, 866276041, 866603722, 2342934, 866731387, 866796574, 866829250, 866862174, 866915019, 29900821, 152242362, 867026120, 110234461,
+ 507461678, 867062476, 867209933, 140247498, 867291854, 867418171, 505544714, 867451805, 867535118, 7307275, 867582796, 867631160, 867664719, 867701455, 867831341,
+ 867879429, 7094703, 784990220, 867930832, 868059901, 868106734, 868139553, 868189270, 868237322, 868253738, 147292182, 868270617, 868340433, 868434821, 868567223,
+ 868614154, 427132053, 385499163, 405831702, 868631643, 868663520, 319636303, 566396073, 868697118, 681721858, 868733650, 868827681, 868876747, 868925478, 49086502,
+ 868941883, 868979411, 869140219, 869192124, 494043202, 869253136, 73531411, 869270638, 253788170, 869351484, 869434306, 363741196, 869470932, 869646395, 51019805,
+ 869679991, 869715065, 869827082, 869864149, 200736780, 869913302, 5310647, 870187976, 870269846, 870322903, 112279564, 657052376, 870416863, 870449164, 71188508,
+ 110118736, 870470361, 141411358, 870568666, 870662251, 568017384, 870699216, 870776834, 147423238, 870794270, 870827176, 124715092, 870876987, 870929115, 870973899,
+ 871022623, 871040084, 871088182, 871120993, 871190880, 871224028, 871334341, 133742594, 871366696, 396279820, 871383435, 97681423, 871420637, 269189571, 871631663,
+ 871729112, 871792671, 111149058, 871809483, 871858232, 110134570, 871895774, 491620261, 872153518, 872202266, 872218626, 121356317, 872235438, 872284590, 872333597,
+ 214810653, 872367232, 52199445, 872415234, 119226404, 872431682, 642695210, 872465266, 872501983, 872547503, 872579214, 189546984, 872613369, 597475344, 538198118,
+ 872694063, 872727374, 2130352, 872796896, 872906859, 872939560, 543309852, 872955906, 329842709, 872972307, 872988708, 737771539, 873006543, 873103372, 873119750,
+ 131989525, 873139621, 873218956, 873271832, 59818121, 873599714, 873955787, 874005122, 310296621, 874055030, 218415135, 874107619, 874155117, 874234167, 874287844,
+ 2196304, 874496087, 3227707, 874549989, 874648294, 8393447, 603869928, 8606441, 2195810, 874943210, 2195654, 2195610, 874987522, 875003942, 19038246,
+ 875021858, 805093378, 147423242, 423215125, 875069921, 875122318, 5308640, 875167846, 875205355, 875303660, 875385581, 192872486, 875462737, 875499375, 875561875,
+ 875610188, 875645282, 875692065, 875741243, 875778798, 875842135, 875891382, 875955174, 7095351, 875991791, 876036118, 876056672, 81166338, 876103518, 876167197,
+ 110231855, 876188400, 876331150, 876365065, 876398191, 116376566, 876446694, 136855618, 876479544, 876548849, 876891684, 876942066, 877035536, 701726760, 877056755,
+ 877281364, 408404490, 877314079, 99516442, 877330891, 639107082, 877382602, 877412418, 877445204, 877477914, 38127041, 136183820, 877494763, 877528354, 877576198,
+ 877593513, 877644047, 877712116, 877777653, 877871116, 877887526, 47611932, 877905701, 869615505, 156123163, 877957878, 878019097, 878085491, 878116903, 878154487,
+ 208503817, 878269176, 878366448, 423411714, 178080634, 5865947, 878449401, 878560872, 878624849, 878662394, 836812802, 324534312, 805224464, 878711547, 878886940,
+ 338264102, 878908156, 2801690, 878973693, 248398878, 879034437, 879070049, 879132714, 879149963, 879214630, 879231840, 879297457, 879334142, 879416063, 879529440,
+ 879575343, 879612672, 135497365, 879661825, 879738967, 879788491, 879842050, 738230314, 879956739, 160579606, 880018217, 880050491, 880085043, 880132132, 880148490,
+ 880164905, 51871770, 880186116, 880525318, 23920651, 119440225, 880541759, 880574509, 880607666, 880644869, 880721952, 207438812, 285344320, 880754769, 103284767,
+ 880789750, 201572381, 43532304, 880841478, 880923399, 881003158, 881054472, 881197122, 881234697, 881328143, 643055638, 140607951, 881349386, 881411102, 881442882,
+ 881476055, 881509400, 881557542, 71483398, 881574348, 881606702, 487211013, 881655820, 4177935, 499433493, 881677067, 412139938, 881969382, 882021132, 47398914,
+ 882065942, 882103053, 882180162, 882213827, 47710229, 882262018, 32325668, 882278432, 4980751, 882316046, 882507786, 882458653, 130859036, 882524214, 529022992,
+ 882556944, 153731374, 882573324, 882589723, 882622551, 409258544, 882671626, 202440733, 882692879, 882755089, 882789787, 882851947, 882889488, 882967699, 449692127,
+ 883004177, 883179588, 883228725, 500760630, 467321135, 883261499, 883294211, 381550634, 883310597, 883327007, 496910769, 883348242, 883490819, 883507202, 883523595,
+ 7602186, 883539970, 210206739, 883557294, 52363269, 883594003, 818937892, 668287110, 883741460, 883785764, 142180359, 883802230, 883834908, 883854199, 717226100,
+ 883884148, 883900435, 883916828, 283967530, 144146443, 883769380, 883933646, 883982377, 477937721, 883998748, 884015141, 513998851, 884424797, 884478742, 884555807,
+ 1212422, 884572384, 56164374, 884609815, 884839192, 108314733, 884949856, 885015050, 119357548, 885052185, 885162083, 885199642, 117424138, 885342274, 554729482,
+ 885379867, 6193162, 885489710, 885541720, 885592860, 885638007, 885674781, 885723934, 885869059, 885949308, 886002463, 886046786, 886084384, 886199073, 886276108,
+ 886292518, 49086502, 886312240, 6374409, 886358487, 886390796, 109052775, 886412066, 886456339, 886472726, 244891660, 886493987, 46710824, 886688809, 886751764,
+ 886801231, 886838052, 345161812, 551239904, 541589516, 886887205, 681411614, 886969126, 887161818, 5882357, 887210902, 887264039, 887423796, 887472212, 887506885,
+ 367427600, 887537680, 434716684, 318554118, 887554060, 887570953, 887603231, 887624488, 887690025, 887869118, 201393061, 887935786, 888050475, 888111539, 888144718,
+ 242368522, 888209420, 888225818, 888244165, 316293344, 888279852, 888422440, 888438875, 888476461, 888640302, 888736244, 212730154, 888782907, 888820527, 888982747,
+ 889078219, 155828278, 889127745, 889160139, 889212861, 889295664, 889377585, 238370844, 889471410, 889508658, 889590579, 48513140, 889672500, 2200373, 889864208,
+ 2196589, 889880616, 552894501, 889898184, 118685727, 889929744, 56262713, 889948660, 5313334, 890000183, 890213176, 890306626, 890343985, 890388520, 153567270,
+ 890409785, 890471326, 890505879, 890590010, 112935343, 416874528, 890671931, 890852156, 890945576, 6946828, 890966845, 891076707, 565231622, 891109613, 118505512,
+ 891142156, 891158560, 891191897, 891224906, 73531402, 891273242, 891289631, 891305996, 114114566, 891322450, 891355162, 891372121, 150601787, 891409214, 891469906,
+ 281935883, 194691499, 891503425, 891536428, 891589439, 115769866, 282820639, 891700087, 891736896, 892130113, 191545360, 30392326, 892257408, 892305434, 892321813,
+ 629358608, 892339575, 892420106, 892438684, 892485713, 699613195, 892522890, 2359401, 892616734, 892649482, 7045122, 892670786, 618464425, 892747830, 892780574,
+ 737771531, 892813857, 892862571, 2850826, 2113593, 892900163, 892961223, 893014852, 893077065, 893160987, 648740889, 87539733, 893227845, 893272171, 2834495,
+ 893304898, 893338427, 893386798, 5341945, 893439989, 2198068, 893469209, 893535801, 893637446, 893714735, 893752135, 893801288, 893845509, 893861910, 11010064,
+ 893883209, 136790038, 893948746, 137101378, 894107885, 894140462, 153748382, 894194507, 894271554, 894305103, 894339965, 894386268, 894418956, 3686438, 894440268,
+ 894517260, 179159050, 118031295, 3178512, 894538573, 894669646, 108315119, 894764783, 894829558, 894861771, 894911833, 169787413, 894948175, 586481686, 895009243,
+ 140247472, 895041967, 895074607, 408289301, 895107905, 895139861, 223019518, 318554118, 895156683, 8392987, 895205416, 895221819, 895254752, 895292240, 895636305,
+ 895815635, 895862259, 895895203, 895959106, 131335406, 895992238, 328073242, 896042382, 896111442, 113115174, 119357935, 896237871, 199869643, 896275283, 896385499,
+ 896419808, 896467403, 896516527, 896552019, 260461396, 896617721, 896668501, 273121332, 896761919, 158843359, 896798801, 896845360, 110298129, 896878199, 896942082,
+ 506904595, 896963414, 208994363, 50266124, 897024006, 897040403, 185319446, 110232779, 897056822, 897089565, 246087702, 897110871, 897291096, 897356633, 897417244,
+ 897434201, 897467844, 897499984, 3211682, 112935591, 897533318, 897597499, 897631041, 897663912, 897700698, 897794058, 23368539, 897810730, 72040706, 573653863,
+ 897848156, 897990678, 898011997, 116375651, 109052840, 898109516, 898154926, 898203694, 2965515, 898253268, 457064470, 898288413, 898384331, 898433062, 4997147,
+ 898450385, 898498570, 898514998, 898549079, 898598368, 285034700, 181256737, 898634590, 898696351, 441074098, 898727962, 898744359, 898782047, 898909536, 898974750,
+ 899006476, 132857868, 899027808, 899073822, 858996762, 899140472, 899186796, 899220348, 119999024, 899268618, 506413098, 899289953, 899353158, 899383756, 10944647,
+ 899416102, 2752642, 899432474, 899453794, 899498513, 899530811, 899568483, 899813104, 158744578, 899896164, 899956782, 900010853, 900122810, 900156620, 250364263,
+ 900219117, 900253607, 900284447, 5177347, 900301908, 900349962, 900371302, 900434446, 3228327, 900485991, 900563303, 900596559, 900630105, 900677991, 1818636,
+ 900710421, 900728137, 7733681, 56721419, 900779711, 900841494, 900857858, 900874259, 160759830, 900895592, 901070870, 901087263, 229965850, 901103723, 219529237,
+ 901136424, 901152778, 672137235, 901169183, 901185546, 223723532, 213925900, 901205345, 223723522, 872431628, 901251164, 901285067, 51626000, 901316639, 431996934,
+ 901337961, 901465850, 48545832, 901496858, 901513219, 117358614, 901534570, 901616491, 901660701, 1097744, 901682028, 2801667, 901759007, 901775372, 292110374,
+ 901742595, 901791746, 381550602, 901813101, 610779138, 901857292, 901677085, 901875033, 901906474, 29900837, 901925852, 901972010, 901988354, 214630426, 902009710,
+ 902053904, 479133706, 572047381, 902632304, 902726490, 902758534, 902774825, 902791194, 14549004, 902807553, 902824068, 902840361, 38879235, 902856709, 52953097,
+ 902873103, 902889513, 7307285, 902910833, 902938627, 902955026, 902971526, 902987777, 903004201, 38879251, 514015250, 903020556, 103596162, 903348361, 11059242,
+ 903366023, 903402355, 152962346, 903495689, 903512195, 34553987, 903531233, 882835563, 903626818, 903664500, 903877493, 903971726, 904041334, 159727632, 904134710,
+ 904168387, 904221559, 904495864, 904532856, 50249769, 904577083, 904614777, 904760900, 49774597, 154812514, 904840201, 3227747, 904871979, 904904811, 332103717,
+ 904937513, 1785897, 904958842, 905039798, 905101333, 905118573, 905166907, 134152218, 328073238, 905204603, 84934678, 905265174, 905286524, 905461770, 392921093,
+ 905478576, 905510922, 140248593, 905527336, 614858754, 4980748, 905543696, 905560090, 140789498, 905576878, 905630589, 905794430, 905872756, 905921430, 905974655,
+ 22888453, 906199105, 906248232, 586072171, 906267920, 906335104, 906413385, 906466177, 906511276, 3736231, 906576303, 2197009, 906609177, 906679170, 48021520,
+ 446873602, 906761091, 906903991, 139640939, 216006668, 313786424, 906937742, 907006852, 124732225, 907116620, 907149334, 659341343, 907165708, 907183044, 907231261,
+ 907247642, 907264016, 907280399, 114409487, 907301765, 907481990, 907580295, 907673704, 907724121, 907755561, 66945062, 907776904, 907870260, 1920257, 907907977,
+ 908034966, 697483274, 908088202, 727760934, 191646201, 908148776, 160710698, 908170123, 908231115, 908283129, 908329878, 908383070, 908445232, 908476447, 158695435,
+ 440156593, 908497804, 908741565, 908805150, 908836902, 267141132, 908853269, 908869658, 908886047, 908902419, 732758491, 908918796, 908935174, 908952040, 908984404,
+ 909018601, 909066261, 909082690, 141377555, 45039673, 909120121, 909249248, 909295675, 909333389, 112394256, 909411328, 909443084, 456966154, 909459515, 909492250,
+ 234357545, 909508634, 909525018, 19268016, 909546382, 909606996, 909639709, 69845004, 909661071, 909754370, 909770778, 909787165, 909803551, 909819920, 909836330,
+ 841383962, 909855071, 6701077, 909901836, 909918234, 126042122, 427658620, 909939600, 910114897, 910150004, 276529178, 910218129, 910311465, 202063888, 910332818,
+ 910377044, 910409788, 910492495, 3719457, 910524437, 910542324, 910590411, 910639913, 910671891, 910688277, 910704671, 118636563, 910721039, 910737632, 910770263,
+ 8606611, 473251871, 910824340, 243220496, 44613673, 910983222, 911015947, 792854540, 911032336, 911048715, 911070101, 394526741, 911152022, 538722343, 911245772,
+ 114294826, 911281361, 911327238, 911343637, 128892940, 911360016, 395509800, 911377015, 911409154, 911427161, 911475123, 911512471, 911605772, 911622170, 241827851,
+ 121274397, 911638564, 911654931, 911671312, 911687706, 911704090, 911720470, 911736863, 3473411, 911756253, 911802394, 911818754, 911835142, 7372831, 118652930,
+ 911852636, 911900701, 911917072, 159760410, 911933452, 911949834, 911966239, 911983026, 6375907, 912020376, 912376108, 912408582, 53542919, 912427823, 912524297,
+ 912561049, 912654399, 410748005, 391921676, 266878982, 912692122, 912823195, 912933624, 912965935, 246498167, 912998412, 324534303, 913014786, 2129930, 913036188,
+ 913101725, 913260570, 316293418, 406339586, 913277165, 913314718, 892403728, 119357521, 913473620, 913507850, 913555886, 913605641, 913642399, 913834003, 303611906,
+ 913851880, 913904544, 913948703, 913965489, 913998283, 914052001, 914112552, 309575706, 914133088, 914179254, 914292762, 914310027, 213073922, 366116895, 914374716,
+ 6620001, 583403473, 914456636, 914539305, 914571735, 914604919, 895991862, 914636810, 914655171, 110183287, 914702346, 914719159, 914751923, 914785280, 914817483,
+ 667664465, 914871202, 914932015, 914969507, 915035044, 915111966, 869466606, 915149733, 915210266, 915226653, 24298957, 915243010, 915260023, 915292247, 915342304,
+ 915390474, 915407768, 915456002, 915472415, 84721674, 915488770, 446792440, 915505455, 915538442, 915570717, 915592102, 915701800, 153714726, 915723175, 153862154,
+ 915783701, 113246702, 915805096, 916013370, 916045836, 916063065, 66814809, 916100009, 916160592, 916193306, 152174594, 916214698, 271925289, 916275658, 155975706,
+ 916313003, 3211790, 916471827, 916488194, 916504591, 916520962, 11665417, 232325591, 916542380, 5505043, 916689837, 916750357, 916767584, 916832693, 380551199,
+ 916867575, 916897804, 916914182, 84738067, 916935598, 916996399, 128565267, 917028876, 917045258, 917062263, 917094442, 177766879, 917111309, 665227363, 917159962,
+ 917176352, 917209193, 115654662, 917241902, 917291496, 2195558, 917323878, 917357911, 457490469, 917405727, 917422091, 7290911, 7962650, 917443503, 917700701,
+ 917749791, 917766165, 917782530, 277020698, 349388812, 917801241, 917866600, 917914725, 110182835, 917967792, 918164401, 152158234, 918257692, 273448972, 918274150,
+ 434980635, 918306828, 918323304, 918372374, 99500044, 918389037, 918421533, 918437925, 918454293, 918470692, 2326556, 918492082, 918553113, 918620968, 918684119,
+ 918716432, 918732907, 918765614, 918819763, 918962182, 113246258, 918978562, 918994954, 919011359, 241811458, 919032756, 919076895, 919093472, 919126066, 919158796,
+ 915472410, 919175222, 919212981, 919276742, 919322897, 278970399, 919355432, 608796688, 919371791, 919388181, 919408874, 919453734, 919470096, 919486506, 658063792,
+ 919507894, 1918323, 919688119, 919748645, 2031644, 919765023, 919782569, 919819192, 919900070, 919946380, 919999417, 920109599, 920163258, 920207372, 122044454,
+ 437370892, 905166850, 920224178, 920256578, 920289299, 194084886, 171753474, 920310715, 920567867, 920601067, 920638396, 920780893, 920835005, 920884158, 179716098,
+ 920944656, 920961784, 920993861, 921026619, 921064204, 921108496, 921127337, 921159476, 921240729, 437370911, 921293141, 921339224, 921391180, 921441215, 921534571,
+ 921572288, 921616424, 921632778, 803307539, 143720469, 921649211, 267567142, 921681970, 921719745, 921845772, 335413258, 16498700, 921867202, 453689354, 722960396,
+ 921949123, 6619192, 922025996, 138232822, 922042380, 634699802, 922063812, 922141587, 901988364, 922194885, 922370101, 922402838, 9551888, 8389727, 922424262,
+ 922484757, 922501123, 922517546, 922533914, 922550312, 922566671, 283197455, 922583052, 922599453, 552091660, 120143874, 922616721, 109215775, 922664986, 306020355,
+ 922681370, 922698031, 758710291, 257064962, 922735559, 922797225, 307235395, 922833864, 923025410, 409305521, 923041814, 923058188, 515031985, 923077273, 923140141,
+ 923177929, 923288778, 923338119, 923370281, 923402324, 923437792, 923484219, 923516978, 923549755, 47398943, 299827250, 496025616, 923582566, 923615316, 923648059,
+ 6225960, 923680780, 923697612, 923729949, 45531177, 923751370, 923828255, 118669324, 923845067, 923893779, 923910184, 923926566, 779075586, 923943926, 923975701,
+ 923992989, 432406547, 924079051, 924305347, 924352524, 924368922, 924385311, 924401674, 924418467, 8159241, 924451849, 924483600, 924502335, 924537745, 6111247,
+ 924631682, 924680223, 103743530, 924696849, 5881963, 924729365, 924745758, 924778561, 924828327, 924860454, 43237378, 925319302, 925335667, 15483015, 925352070,
+ 925368455, 22200329, 925389773, 925614096, 925630490, 925646850, 925663253, 925679682, 925712406, 925728799, 925745158, 553156629, 925761538, 263716892, 925777930,
+ 925794363, 29032661, 925827375, 68206667, 925860787, 925892634, 925909008, 99893263, 925925397, 925941791, 925958163, 174457135, 925974594, 926007735, 2343506,
+ 926040523, 926090282, 926192590, 121929749, 926269729, 926302237, 2162700, 926319043, 926351389, 570884112, 926370088, 926435884, 926466124, 926500480, 237731851,
+ 926548877, 926631210, 926684111, 926761379, 47251484, 926793835, 926826555, 926859330, 926892064, 926929416, 474054698, 926995408, 927273937, 927334416, 927350810,
+ 8388917, 927367189, 927388626, 927465498, 927481895, 927515161, 927583535, 927613848, 927662369, 927699923, 927891475, 927907856, 209993768, 927926175, 927989786,
+ 928006173, 928022559, 629440528, 928038924, 928055307, 928071711, 928088498, 928120842, 928137273, 928153640, 648347686, 928170946, 928202762, 928219155, 928235532,
+ 928251919, 928268310, 928284674, 909803558, 928303573, 928334048, 928366651, 928399402, 928415754, 928432140, 928448533, 928465371, 928497683, 928514070, 814284802,
+ 928531324, 928579626, 928595970, 928612373, 928628767, 174440505, 928645139, 796426279, 928664765, 928712092, 928759814, 928776223, 636502032, 347144194, 928793800,
+ 928825356, 928841747, 814284822, 928861772, 928907286, 928923660, 928940058, 46088223, 928957769, 929005578, 929023577, 66863163, 929071125, 929087514, 390594990,
+ 929103884, 929120266, 929136661, 929155826, 655409912, 929223636, 929335452, 929382658, 11944068, 929415227, 133414938, 929447946, 929316880, 929464342, 929480706,
+ 929497098, 929513493, 449660137, 929530904, 929579232, 929611798, 929628172, 929644570, 929660944, 929677341, 929693698, 929710099, 929726485, 141819940, 929742907,
+ 929775637, 929792087, 929842017, 929874974, 929907711, 929960917, 930087019, 50511900, 119048613, 22888488, 930119746, 930153481, 930185751, 910557276, 930218044,
+ 930300008, 280035435, 930349115, 241467395, 930381908, 930419670, 193660063, 48545798, 930485207, 930742340, 930793823, 930842097, 371310881, 508297675, 930876602,
+ 930906142, 275464218, 930938911, 809567232, 930955295, 930971658, 667811842, 930993112, 931071523, 931124185, 931250204, 931266572, 931282965, 5309640, 186318858,
+ 931300220, 136120476, 931348492, 420757530, 931364866, 7307286, 931384617, 931451866, 931545100, 931561493, 931577878, 931599323, 931643418, 171507714, 402309148,
+ 5947404, 931664860, 345703535, 931790932, 931823626, 583403629, 931845085, 932055791, 299696130, 2834871, 932118554, 15351820, 932139998, 932315234, 932347963,
+ 64765971, 932385759, 932495892, 932547738, 932594115, 932631520, 932746209, 2359729, 932806958, 359039026, 45433056, 932844514, 655065142, 8390672, 932989353,
+ 933019679, 704462869, 933038636, 933073891, 885424365, 933167147, 159383588, 933204964, 385662997, 933249248, 933281879, 933330975, 241827869, 933350326, 229752854,
+ 933401573, 450773008, 933450726, 933528153, 371867664, 933560366, 933609564, 210206741, 2834903, 933647335, 933792469, 933838870, 933855258, 115343362, 933873028,
+ 933939356, 153190507, 4309099, 933986734, 934035887, 934073320, 934248524, 133414918, 269484074, 649691176, 934282306, 934347055, 912506890, 934379607, 934430252,
+ 654018238, 934466537, 934679530, 934740025, 182861826, 934757662, 934810603, 934903814, 4112400, 934920792, 336838682, 934953019, 251806641, 934986537, 935019529,
+ 935052223, 935084091, 935121900, 935199567, 935236589, 366166047, 935334894, 935411743, 147652637, 935429003, 935498735, 935564272, 935628319, 173490602, 935706626,
+ 10371081, 935728113, 1900546, 935842802, 935938315, 275972223, 117900309, 935986581, 936034408, 936083522, 219824171, 936121331, 4947999, 248398857, 936547317,
+ 936708601, 936755238, 654017974, 936771899, 936809462, 936869919, 383860751, 936886324, 936919078, 233473851, 936935443, 936951848, 928677926, 936973303, 937135323,
+ 619003915, 248512549, 937235448, 937312258, 123273245, 18153488, 937328699, 937361414, 937377798, 937394823, 115179526, 937448441, 937509303, 282804290, 937541740,
+ 937574431, 937590790, 937607190, 661848109, 937628666, 122568707, 937721922, 937754627, 937771046, 937787458, 110677540, 804847637, 937820705, 144359427, 937874427,
+ 937923580, 937984432, 938016813, 938050719, 144375820, 114409478, 938082323, 129417238, 938102109, 938181900, 244170792, 938229791, 938246253, 938278924, 938295322,
+ 6620098, 938311696, 938333181, 139477471, 938393659, 2196489, 938431486, 938546175, 938607785, 820953098, 938644480, 412287014, 938770498, 938803268, 938852983,
+ 147063702, 938885751, 8391421, 173965328, 938917919, 938935305, 938972161, 939099527, 59260944, 939130939, 939168574, 939229230, 939283458, 939360268, 939380016,
+ 134840451, 939425831, 278413333, 939458995, 939491631, 939524981, 939557088, 939592061, 939674705, 939791363, 939917352, 198246412, 939935658, 3473429, 940004356,
+ 940086277, 940146912, 122044426, 373555305, 940184582, 184386535, 940262223, 940295029, 940326922, 940344228, 940397575, 940556512, 940589078, 940606358, 6373823,
+ 940659371, 940720144, 146653203, 52330506, 940737383, 940769504, 940802114, 940835728, 200589318, 940867614, 940900418, 136118667, 940933139, 631718191, 940949550,
+ 940998675, 801505292, 941015076, 941032441, 140771639, 941118472, 941162527, 207192129, 941178892, 110395418, 941195276, 941211654, 941228071, 941261718, 941311064,
+ 941360022, 941413385, 941458698, 941490479, 941523791, 941560842, 941604903, 941637644, 941654056, 187744258, 55033887, 942085131, 654934054, 942145557, 137675595,
+ 942161966, 942211110, 942228969, 942276661, 942309435, 942342165, 942358559, 942374928, 942391655, 942424076, 942440486, 701530124, 942456924, 942494732, 942658573,
+ 942752680, 942784527, 661848109, 942800902, 942817320, 729006118, 942833720, 942866886, 410435586, 942899222, 942915586, 942932006, 942949199, 547831823, 942981423,
+ 943013898, 943030293, 943051790, 943113514, 943161774, 518308129, 943210515, 661028902, 943226964, 943264783, 943325250, 943358175, 943391321, 515244034, 943423595,
+ 640434197, 841744386, 943461392, 943505410, 943521811, 943538198, 137675399, 771637254, 625688591, 943554571, 351240220, 943570963, 943587366, 943604559, 576225299,
+ 943636495, 943652923, 943685644, 213958685, 943702045, 943718431, 25559959, 943739921, 943931402, 941146154, 943952914, 944029747, 944062480, 944078901, 944112463,
+ 944149523, 235439104, 944215060, 944291906, 944324707, 944362517, 944521278, 521699354, 944570399, 944586762, 944603190, 200556565, 60227596, 944635963, 128581643,
+ 944668726, 944701461, 944717850, 944734239, 944750657, 944799784, 944816147, 944832550, 52609036, 944848934, 944865282, 393363462, 944886806, 2801676, 67043350,
+ 944947266, 944980923, 945046028, 945079687, 945111052, 945128184, 726695967, 945160258, 117489670, 140247092, 945192986, 945209881, 115818507, 945280023, 945406015,
+ 945440134, 945509400, 945571412, 945668112, 945684521, 31424553, 945702260, 945750042, 945767031, 945799234, 945837081, 61456396, 945919002, 946164763, 946209448,
+ 946242791, 946290714, 2834495, 946307084, 55377941, 946328604, 946438170, 946454540, 196952085, 946476061, 946570442, 417596406, 294207514, 946618370, 946634805,
+ 946667586, 318590256, 946705438, 539656221, 329842694, 946750287, 946782218, 946798604, 946820127, 946914220, 946979724, 947027997, 271631193, 947049504, 947211748,
+ 107757589, 947257815, 947290134, 261182497, 947306580, 947340680, 947372098, 947406496, 947437606, 119226409, 947454011, 947486722, 947503211, 232030219, 947541026,
+ 947650571, 947666946, 947688483, 947732492, 246562837, 947748880, 947765680, 947803172, 947896779, 947946232, 7307293, 947978670, 948028201, 845725738, 948065317,
+ 948125718, 948142101, 948158476, 116277258, 415776780, 2195770, 948175385, 948240855, 948273171, 191594498, 112459782, 948292302, 518766683, 948405879, 948470195,
+ 948507686, 948551696, 114212890, 915701791, 370720796, 948573223, 948719571, 124551178, 180764714, 948764674, 948781539, 50937872, 948813835, 948831055, 948863014,
+ 948879362, 123666442, 948895784, 948912159, 948928538, 948945814, 948999208, 250937386, 949064745, 949125720, 774227546, 949157928, 949174284, 162501674, 949191710,
+ 949223524, 949257035, 31342724, 428015647, 949326891, 949502552, 949534730, 31424531, 949556268, 949616666, 949633055, 250937354, 949650777, 949682713, 226246713,
+ 949749236, 949802029, 949965870, 950009894, 129400834, 950026282, 940998694, 950043689, 950108192, 950146095, 950337562, 950353951, 338264070, 950370306, 950386719,
+ 950403082, 950420299, 950485667, 3702822, 950534228, 950566950, 114409510, 363364362, 950583302, 950599746, 950632450, 950648838, 837238834, 950667107, 950730764,
+ 129876076, 950749367, 950797627, 950830080, 950863417, 950965296, 951043102, 951075447, 951107596, 738085096, 951125115, 951161905, 183369749, 951255132, 951287820,
+ 951304202, 951320588, 190087208, 951337536, 951370826, 177963019, 951402527, 951419351, 153731180, 951454812, 951500812, 951517210, 951533570, 951550487, 839548947,
+ 951584134, 951648349, 951697424, 951713807, 951730823, 843874320, 951784498, 951861264, 951877642, 951894375, 951926796, 951943178, 951959573, 951975975, 952008742,
+ 952025115, 952058159, 272531472, 683851918, 952090683, 952125039, 383320074, 952172555, 952188974, 952243251, 952402399, 952435182, 952467466, 952483842, 200851475,
+ 952500239, 251330582, 952516639, 952533002, 952549392, 952565775, 952582166, 952598559, 952614950, 42598875, 46088249, 325173250, 952636468, 952849461, 952909855,
+ 952926218, 952942608, 952958986, 1900573, 952975379, 115179542, 8994844, 952991782, 953008180, 7372821, 953042151, 953095222, 953139230, 953172933, 953221146,
+ 353239343, 953237516, 953253914, 953270575, 115196343, 656982092, 953303100, 953385935, 953439287, 953634066, 195919882, 953696282, 140608089, 953713241, 953746585,
+ 953794591, 953813405, 637501451, 953860098, 953876490, 125584207, 953892894, 953925642, 141000716, 953942018, 953959547, 953991190, 42598832, 954007606, 954040335,
+ 911442144, 954056763, 954089487, 219578390, 954105878, 954123279, 954171402, 954188694, 954237165, 954274872, 954318864, 954335247, 954351618, 954370116, 954417181,
+ 738377794, 954434977, 954482699, 636486479, 954500736, 464928783, 954548236, 954564716, 954597407, 954613803, 954647675, 954679362, 954712976, 954744848, 394067984,
+ 939606082, 954766393, 116376046, 954843568, 702398475, 685212080, 954878865, 954975530, 955028538, 955090486, 955138582, 955173498, 549519398, 24297574, 282558580,
+ 955220060, 955252776, 955270060, 955334764, 955368334, 955438139, 955498955, 955547735, 68228156, 955597251, 955629608, 955645983, 126074890, 112738335, 955662435,
+ 955695125, 192495642, 955716669, 955858975, 51757062, 955876932, 955940892, 955957274, 712900639, 955973686, 18153479, 956011582, 956072382, 956137556, 956171000,
+ 956203020, 956219402, 956236407, 956666944, 56655910, 956809247, 147652627, 956830785, 956924504, 956956678, 797245461, 138641871, 956975039, 957072682, 957120533,
+ 957136922, 2293762, 375259157, 957156831, 957235210, 59523100, 957251622, 627064891, 957273154, 3244132, 957399083, 110247999, 957436995, 957628492, 544882776,
+ 957661205, 957678911, 957746425, 957792287, 957812725, 750469151, 957841410, 514015243, 200736794, 957862980, 957907476, 2261030, 957956142, 958005355, 958038028,
+ 2850853, 958056589, 958103568, 128991243, 205209612, 958125125, 958190662, 958387271, 958529749, 958565322, 958595111, 371884044, 958627879, 958663007, 958710231,
+ 165904412, 958743897, 958775312, 10829834, 110231804, 958793095, 115523596, 958826726, 958877152, 183975976, 958927944, 958988719, 959023213, 959075401, 959136162,
+ 959168943, 110118163, 959201817, 177963029, 959267576, 44318751, 959299640, 959332354, 445841418, 959348778, 944635916, 959370314, 959480487, 628981800, 150914207,
+ 959512675, 959545365, 959566058, 959612574, 959676446, 959714379, 204587020, 959856671, 959873909, 959905823, 959922705, 959955247, 959987764, 960021534, 960054157,
+ 960140364, 25560719, 171442479, 960184360, 81756186, 960205901, 960266671, 960299101, 677724172, 960353358, 960462932, 47415298, 960499793, 960549967, 960611413,
+ 27607052, 960643100, 960659487, 960675846, 474054675, 960695669, 779075615, 960741397, 960758652, 960807371, 960856367, 960888940, 172752908, 960926800, 960970774,
+ 960987166, 961019915, 961036290, 961052693, 731742224, 961069903, 961103642, 961150992, 961167391, 44679180, 961188945, 961265676, 961282076, 48529439, 2097162,
+ 961298444, 6193180, 961675287, 5177479, 961696851, 961462282, 55377922, 961775037, 961822730, 961839110, 961855967, 961889799, 961975380, 202457230, 962117670,
+ 962134032, 49790981, 962150446, 962201741, 125583442, 962251235, 962283970, 962330708, 962363851, 962417749, 962494935, 962532438, 962630743, 928776213, 962723886,
+ 962773070, 962838556, 962855587, 241647647, 6373803, 962909272, 963019211, 149115993, 963067933, 116162591, 963089498, 963166239, 109215760, 963182651, 963216207,
+ 523375707, 963252506, 520093750, 29261855, 963314114, 963346539, 246497887, 963379202, 747356182, 963395637, 963433564, 963543133, 963592220, 848904218, 963608588,
+ 472891502, 17224797, 963630174, 110234025, 963744863, 963822750, 963887110, 281362453, 963903500, 963919894, 963936287, 963952666, 351305734, 787317039, 963969483,
+ 964019592, 462520751, 964051481, 896123312, 964116506, 964132923, 321699878, 964166519, 964198410, 110215200, 964220000, 208912395, 964265562, 964296706, 964313130,
+ 176357977, 964329484, 910688282, 964351073, 964482146, 601292838, 964592655, 964644614, 964695139, 234848287, 48693551, 964791576, 964838455, 782614550, 964871017,
+ 964935690, 964953361, 965001235, 4948008, 965022820, 965083211, 519407036, 965148703, 965165088, 965198127, 961856433, 965235813, 965301350, 965394453, 965411708,
+ 965460456, 965492802, 965525556, 144048134, 965563495, 965591106, 965625181, 130285594, 965678184, 965787650, 116162598, 965804098, 2196317, 2197987, 965842025,
+ 965989482, 966069377, 966120555, 966230949, 966265725, 966311967, 966328322, 966344742, 966362456, 966410280, 73744415, 966431852, 166707242, 966508610, 966541322,
+ 423002154, 193200138, 966562925, 966743150, 966905671, 966967327, 123174918, 966983983, 967017295, 967049651, 967082434, 967114758, 967131174, 215482370, 967152751,
+ 322060390, 967327746, 967344138, 19251503, 967360534, 3473446, 464946088, 967382128, 967491586, 2342915, 967508400, 371245066, 967540795, 110216033, 6701084,
+ 967573516, 185483346, 967592106, 967655426, 967672343, 967709809, 47120399, 230048424, 967802940, 967885314, 967918105, 363364394, 967983627, 968033192, 685244846,
+ 968067344, 112427037, 968115545, 968148270, 968196122, 968212912, 46351369, 968245279, 968261716, 968294421, 968310796, 968327194, 3342378, 968348786, 968643699,
+ 968709236, 180764693, 968786567, 968835539, 968884695, 453476415, 968917023, 968933378, 968949789, 17006595, 968966170, 968982538, 968999215, 711671846, 5341473,
+ 969036917, 969162762, 969184374, 969228381, 969278267, 969331831, 969408600, 914981378, 969445730, 969506831, 969523231, 171557466, 553156639, 969540431, 969572881,
+ 969605423, 7734095, 969640063, 969703450, 969719810, 969736207, 969752598, 969769878, 969818128, 969834538, 969853115, 969900072, 969916422, 969932831, 969949203,
+ 205750288, 3309604, 969965673, 926466895, 969998374, 49790988, 970019960, 601292802, 147063087, 970134649, 970227743, 75464723, 155779103, 409305147, 970245009,
+ 970293347, 120979475, 970326092, 2670613, 1114149, 970362595, 132153437, 970490819, 49790986, 970539117, 970571781, 16269317, 970588171, 970604560, 617103398,
+ 970623651, 970691706, 970981913, 971051181, 971096102, 971112484, 971128847, 306937877, 971145218, 971161626, 971178015, 432062470, 971194399, 971210781, 971227868,
+ 971261551, 971314299, 971375352, 971407419, 971440813, 971489290, 971506123, 971560060, 971636738, 971653146, 971669540, 971685904, 194461717, 971702339, 116213107,
+ 971786707, 971833375, 971849757, 131629072, 553156619, 971870173, 122568726, 971898892, 971915735, 971948487, 972002429, 972079125, 160743440, 972096568, 972161035,
+ 972177439, 272613415, 972193899, 972229091, 461717535, 972259412, 313245702, 972292117, 180666390, 972308492, 972324890, 502054928, 972346494, 972537977, 972570647,
+ 8148095, 972587031, 972570647, 226050054, 400802287, 972606892, 972657792, 972898363, 46874630, 972932326, 973029378, 973045798, 973062182, 51937292, 1818639,
+ 973078559, 506904618, 973094978, 973127682, 50036767, 973145026, 973177369, 973247617, 973291522, 973307945, 49905690, 973329538, 973406220, 46219279, 183369754,
+ 350633986, 74661914, 973422624, 616906774, 973460611, 973537286, 18169896, 973553750, 973586463, 274858049, 973603246, 973652599, 6373855, 238552094, 973689988,
+ 973783131, 57032710, 973815810, 973832202, 973848879, 973881360, 973897743, 126697494, 458489937, 6406170, 973914166, 100565015, 974132358, 974274600, 974291003,
+ 974326229, 974356482, 662585365, 974378119, 974520342, 974537743, 974585868, 974602278, 974619471, 974656648, 974733362, 974767000, 160759834, 974816928, 974853257,
+ 974913552, 974930002, 974962690, 974979093, 974995543, 975044634, 975060994, 975077386, 975093766, 975110159, 124108831, 975127016, 975159746, 975192104, 2179109,
+ 975211739, 975306858, 759681514, 938409994, 975393930, 975505049, 135905282, 975557771, 975634434, 975650924, 975688844, 975979031, 3736003, 644988966, 976011488,
+ 151732245, 976044792, 976076859, 125812748, 976109627, 976144525, 976191594, 482590726, 7095387, 976273448, 414089228, 976290234, 976339998, 976376973, 976453642,
+ 2196314, 976475278, 976585205, 976617503, 976633866, 976650282, 635634471, 976666848, 976699404, 976716247, 976748976, 976786575, 59768947, 976852112, 976977932,
+ 976994314, 977011319, 977043483, 977076226, 5341944, 977097873, 977190943, 329842691, 977208389, 977257079, 977289228, 122699802, 116375841, 977310866, 977409171,
+ 977453077, 977469506, 977502224, 977518602, 977535015, 977567850, 5325898, 977654932, 977797213, 140247072, 977848692, 977911835, 287572647, 977945945, 977977386,
+ 23385237, 977994030, 29180060, 978027361, 2146775, 134299653, 978326679, 978436523, 978468890, 978485276, 978501634, 121356309, 978519528, 978567210, 978583564,
+ 671662106, 192479253, 978604660, 978665482, 978682315, 978732783, 978796563, 663912470, 978812943, 978829324, 978845722, 978862082, 978878485, 625721410, 978898814,
+ 979027051, 979058719, 979075100, 979092057, 148127746, 979129496, 843120669, 979210287, 979255362, 979288578, 669221495, 979321135, 108707856, 979353621, 979370050,
+ 979403617, 979435530, 979451943, 979485196, 180404255, 979517446, 979533890, 979566651, 979599370, 979615786, 979632194, 979667638, 177324033, 979731347, 979780121,
+ 979845655, 979878843, 979943467, 979977981, 116850699, 980025783, 980058143, 980075381, 849723402, 980107330, 980140043, 980156427, 980172840, 980189194, 980205599,
+ 112476179, 980222553, 980254770, 980288025, 980353043, 980369439, 980385794, 980402197, 213041183, 980419605, 980467727, 635240450, 980484162, 8389985, 980522137,
+ 980632029, 980664341, 980681241, 980747232, 704151562, 980795407, 980811884, 980844847, 980877353, 980894128, 980927095, 980959248, 980976376, 52723743, 981008456,
+ 981075443, 981106694, 981123093, 981140348, 981189600, 981238566, 981270559, 981286933, 981304160, 978829314, 981368858, 627752981, 564871179, 981390490, 981467737,
+ 981499914, 183370359, 981517201, 981565461, 981582716, 981631490, 981664375, 981696543, 981712898, 981729318, 564658207, 981746528, 981811266, 981843984, 981860589,
+ 981898395, 982025154, 982057019, 982090244, 982138918, 982155266, 196886538, 982172858, 51757087, 982204447, 982220806, 119998494, 982237221, 982253580, 722731046,
+ 982270453, 982302732, 393363482, 982319138, 982433848, 982466999, 982500235, 982564930, 982598517, 679378954, 982630499, 143720479, 982668444, 982745109, 982762379,
+ 982827064, 982859807, 982876587, 982908994, 980074512, 982941801, 949256258, 982974903, 983007691, 983056440, 983089218, 983122408, 983158636, 983203850, 983220855,
+ 983253004, 983269386, 983285781, 983303051, 983367788, 983401816, 983449626, 983466430, 983532057, 983598001, 671547394, 983629843, 983646511, 983684253, 983744533,
+ 983761803, 983826967, 983859659, 451872018, 983908383, 983925621, 122503180, 983961009, 984023052, 984039434, 984055829, 984072667, 983302146, 984104981, 984122251,
+ 984187793, 984236088, 984269647, 984301622, 984334342, 984350726, 984372382, 984482784, 984530954, 529990107, 984547343, 984563738, 383860767, 984581150, 31424554,
+ 984612904, 984629279, 984645638, 143081503, 984662925, 984746761, 984794265, 984842255, 984858640, 984875034, 984891394, 546095114, 984913055, 984974219, 985039278,
+ 985091963, 985139470, 985186335, 676233226, 985202690, 985219110, 985235483, 985268331, 985302791, 179126293, 985350184, 985366559, 409681926, 985383005, 985432085,
+ 985448514, 985482081, 289767434, 985514044, 985601184, 9912483, 985827804, 985874470, 268451878, 985890842, 985907226, 985923615, 985939987, 392445992, 112508959,
+ 985956354, 217727014, 985972776, 985989149, 5275679, 986005547, 47235098, 986038298, 986054685, 986071071, 986087434, 986103810, 986121001, 261832720, 268468240,
+ 986152990, 986185754, 986202138, 986218562, 986251270, 986267669, 576176154, 986284053, 217366544, 986300475, 986333226, 986349570, 986365962, 986383633, 519143450,
+ 986431499, 986448331, 986497133, 986530016, 986562991, 986595385, 479330316, 986612151, 986649761, 986710028, 248266778, 986726416, 986742794, 986759179, 986775568,
+ 73531420, 986797218, 987005037, 987037725, 987054101, 987070486, 987086867, 987103260, 90521610, 987120107, 55754754, 987157667, 987332750, 987365414, 164806694,
+ 1212432, 987381798, 987398146, 351338502, 987414831, 987447810, 987480367, 987518116, 345882731, 809419210, 987578827, 987627541, 987643914, 118489100, 987660747,
+ 220774466, 987709867, 2539530, 987742676, 79101980, 987780261, 987922444, 131891228, 987944102, 48447528, 18399242, 44941328, 988020795, 11157530, 4948006,
+ 988053558, 304627750, 2359408, 988681384, 2162808, 988758136, 988774402, 1949816, 988791183, 988824087, 167903921, 6029340, 29458472, 988861609, 988921877,
+ 988938256, 56999947, 988956543, 6225922, 988987401, 989003817, 989020297, 16269353, 989036553, 989052954, 989069314, 47284239, 989090986, 11550742, 61784199,
+ 989118596, 33177737, 989134884, 989151258, 989167656, 67289095, 989184038, 989200395, 2031621, 119816667, 989631660, 989790227, 989807071, 989839452, 989873196,
+ 131335080, 3211747, 989922127, 989959341, 440745994, 137904138, 990054498, 990101516, 990119875, 990172334, 189251613, 990217606, 1900586, 990287023, 990348171,
+ 148160533, 695369759, 990415638, 990445673, 990478420, 990516400, 990663857, 5537833, 132005904, 990856680, 156155945, 237682991, 2326559, 990905212, 990953494,
+ 990969872, 990986259, 991002646, 991019014, 991035411, 705511446, 991055805, 147423270, 991133762, 991166485, 991184201, 991234565, 991281183, 991297547, 47530015,
+ 991319218, 991412240, 991428618, 635273255, 991445801, 991479445, 991544299, 991609886, 991641632, 991674814, 991745203, 249987138, 991892660, 112935966, 991990965,
+ 2408458, 992085478, 50266118, 992138422, 992198697, 992215059, 992231877, 992269495, 992411755, 992449720, 992511935, 239616066, 992608340, 992641034, 2195944,
+ 992658371, 238321693, 992711865, 207290448, 399147106, 992886822, 99876892, 992903174, 992920040, 992952386, 992985187, 993020489, 993083402, 993105082, 199213082,
+ 50462746, 109182998, 684212290, 993203387, 993427478, 177963029, 993444894, 993476635, 993514684, 5947394, 993640875, 993674126, 17220498, 993744061, 994050723,
+ 994100145, 45711376, 994133363, 235880479, 651870224, 994168758, 994230702, 994279467, 994312504, 994345993, 994378174, 3867138, 994444312, 154059286, 994492500,
+ 994526017, 994558254, 994590732, 55164954, 994607246, 994640331, 994689132, 994721794, 994738203, 994776254, 1966118, 994836502, 994858175, 994951208, 994967590,
+ 994984990, 995016801, 116162586, 995085653, 995153088, 995229788, 995262504, 131940378, 7143531, 995284161, 995579074, 124862993, 130285610, 995690467, 995786853,
+ 250396674, 995824835, 995873988, 8391195, 113115162, 996070597, 118882762, 996119750, 996196406, 996229160, 3244256, 131812105, 996248790, 996343915, 996381895,
+ 996442114, 634898282, 996458526, 294060034, 996496584, 996655109, 57950239, 996676809, 996737456, 954187830, 996772107, 996824266, 996889803, 996971724, 997031957,
+ 492819661, 360466080, 997048339, 997064726, 997081119, 997097498, 997113867, 50806900, 55033972, 997131086, 997201102, 997244997, 997277755, 997315791, 997408794,
+ 201376391, 45858853, 119357494, 997425236, 997463248, 997572671, 997605977, 188874790, 997638904, 997676241, 997785638, 997802015, 164003899, 997820599, 997867579,
+ 997901048, 997934424, 997982325, 115589179, 998020306, 392921126, 998085843, 998359122, 998391839, 998413524, 983400532, 998462677, 998525114, 998556557, 157499502,
+ 540295206, 998642902, 998738212, 176488451, 372899862, 998802822, 317837204, 998867977, 153748489, 998903602, 287604795, 998954199, 999052504, 277790760, 999161882,
+ 999178242, 393396239, 999199961, 999262500, 999325727, 999343138, 999380186, 229933059, 316867239, 999442660, 110166075, 999489555, 764624915, 559661903, 400195615,
999511259, 18677892, 999920860, 1000112587,1000162476,124403749, 608501869, 1000210477,1000244724,1000297693,1000439867,1000474363,1000521836,112459795, 1000555173,
1000620979,135970818, 1000652802,886687860, 1000674526,1000784097,1000821983,207520178, 2850845, 1000898572,109035526, 1000917185,1000964633,1001034391,1001116896,
- 1001275476,668991528, 1001309529,1001341454,988053535, 1001373780,52133914, 1001411809,1001526498,1001587365,27852806, 1001652264,1001669975,1001717762,171163674,
+ 1001275476,668991528, 1001309529,1001341454,988053535, 1001373780,52133914, 1001411809,1001526498,1001587365,27852806, 1001652264,1001669975,1001717762,171163674,
1001735737,1001837795,1001965528,27607078, 1002030543,115245098, 1002130929,2359318, 1002178065,320946856, 1002214628,155975709, 65880121, 1002296549,1002405954,
881655839, 389040661, 1002444006,1002652149,1002689767,1002767190,1002817011,1002848294,1002864642,697434138, 1002882078,52592651, 1002914251,1002963379,1002995722,
1003013003,1003082984,1003159618,1003193185,4998079, 1003230441,825999362, 1003440186,1003503853,1003540114,1003585538,410813342, 1003607274,1003951339,1003998084,
1004060896,1004098796,24299438, 1004160640,1004208558,1004262637,1004328174,1004421262,1004459247,1004552737,1004606704,1004666923,1004699951,1004733152,1004765299,
- 1004781705,34553993, 1004797992,1004814393,11304986, 1004831023,287572075, 1004863564,1004896362,1004979498,1005032689,1005262066,115770104, 1005339723,435339285,
+ 1004781705,34553993, 1004797992,1004814393,11304986, 1004831023,287572075, 1004863564,1004896362,1004979498,1005032689,1005262066,115770104, 1005339723,435339285,
593854474, 383483930, 1005404182,152027192, 1005425907,423804944, 51068930, 1005552847,1005618474,1005666332,1005683289,777060373, 1005717914,1005802740,1005862950,
- 689569804, 49086504, 1005880414,1005933813,296601942, 1006026754,1006043176,758710314, 1006064886,194166794, 195264991, 1006125122,1006159444,1006261495,321863696,
+ 689569804, 49086504, 1005880414,1005933813,296601942, 1006026754,1006043176,758710314, 1006064886,194166794, 195264991, 1006125122,1006159444,1006261495,321863696,
1006306040,25559976, 995148211, 1006339473,133579688, 1006407538,1006453643,1006518328,1006551127,8606968, 1006600218,1006617483,1006682168,1006714946,1006747702,
253625009, 998785027, 1006785785,244220937, 1006944683,1006977111,1007031546,17842698, 182911016, 1007159041,1007206421,193871884, 1007224986,1007307181,1007353881,
- 2195758, 1007387054,1007436641,5309867, 1007468571,1007501443,1007517827,17432585, 1007539451,61685763, 1007632386,1007648866,1007681555,1007697932,175620134,
+ 2195758, 1007387054,1007436641,5309867, 1007468571,1007501443,1007517827,17432585, 1007539451,61685763, 1007632386,1007648866,1007681555,1007697932,175620134,
1007719676,1007747082,1007763493,933924, 1007779868,477937686, 1007796265,1007812645,1007829033,1007845405,1007861788,99876883, 622657552, 1007883517,1008042948,
93700137, 1008091176,191070249, 580862068, 43237397, 31424644, 1008109967,1008140310,1008156700,415449103, 581779468, 1008631817,572080263, 1008653567,1008830302,
- 142868490, 119358555, 1008899328,548405260, 1009059233,1009107944,1009161473,1009205260,1009221658,1009243394,162660373, 1009352730,1009369154,1009403515,756383756,
- 1009472771,1009582172,55132162, 1009615761,1009664002,1009680410,1009696804,1009714163,1009729547,370573314, 1009751300,2195564, 1009845078,1009896350,168493358,
- 273121334, 1009942538,121929757, 1009964293,1010111750,1010155532,1010172003,160170089, 1010210055,1010291976,1010405952,608502063, 1010467726,1010533264,116604994,
+ 142868490, 119358555, 1008899328,548405260, 1009059233,1009107944,1009161473,1009205260,1009221658,1009243394,162660373, 1009352730,1009369154,1009403515,756383756,
+ 1009472771,1009582172,55132162, 1009615761,1009664002,1009680410,1009696804,1009714163,1009729547,370573314, 1009751300,2195564, 1009845078,1009896350,168493358,
+ 273121334, 1009942538,121929757, 1009964293,1010111750,1010155532,1010172003,160170089, 1010210055,1010291976,1010405952,608502063, 1010467726,1010533264,116604994,
5799962, 1010565139,8392781, 1010581581,110232086, 1010614354,1010652425,1010747281,131776555, 1010778543,1010816266,2540456, 1010996491,437862421, 1011090516,
1011143948,1011254217,1011319832,947454006, 1011367990,141295654, 1011406093,453279826, 159809548, 1011499038,29622314, 1011533700,1011598245,1011633972,1011712926,
1011750158,1011941867,254574613, 44285964, 1011974170,1011990578,1012025800,1012073502,226361372, 453577884, 1012110607,1012159760,1012269137,46514216, 1012301845,
1012323601,1012384223,1012416524,136790037, 1012438290,210878571, 1012711436,1012727834,226361372, 1012744693,1012782355,194084890, 1012940802,1772228, 1012957643,
- 1013006395,1013039211,1013071878,649232403, 446447618, 1013088870,1013121548,762069004, 1013159188,1013334553,1013404949,27836418, 25559585, 119996462, 5308910,
+ 1013006395,1013039211,1013071878,649232403, 446447618, 1013088870,1013121548,762069004, 1013159188,1013334553,1013404949,27836418, 25559585, 119996462, 5308910,
1013486870,268730389, 162332674, 1013564623,1013634327,1013765400,1013830937,1013911853,1013940234,188105384, 1013958677,1013989428,1014023252,1014071306,1014088728,
- 1014136878,1014191386,383647754, 1014289691,1014433066,133709852, 5325857, 1014486300,139477100, 1014595594,230801439, 1014613161,1014645039,1014678346,174456898,
+ 1014136878,1014191386,383647754, 1014289691,1014433066,133709852, 5325857, 1014486300,139477100, 1014595594,230801439, 1014613161,1014645039,1014678346,174456898,
112738330, 1014732061,1014974014,1015040832,119357875, 1015104089,1015137910,1015190814,1015267850,1015300491,1015332923,1015371039,249974147, 1015447580,1015463938,
- 207011862, 1015480341,259817498, 1015502112,214679574, 51675167, 1015584033,1015676974,1015727494,1015797026,126959622, 1015895331,1015955462,1015971859,909443074,
+ 207011862, 1015480341,259817498, 1015502112,214679574, 51675167, 1015584033,1015676974,1015727494,1015797026,126959622, 1015895331,1015955462,1015971859,909443074,
1015993636,161808396, 1016037407,307238181, 1016056580,1016102924,1016119322,1016135691,1016152066,425837073, 1016169875,193593354, 296960303, 1016250477,1016283152,
- 1016299546,1016315920,45023289, 450543656, 1016632615,619266079, 162583848, 1016709150,52674562, 1016741975,1016796078,1016856578,1016872970,1016889373,285344179,
+ 1016299546,1016315920,45023289, 450543656, 1016632615,619266079, 162583848, 1016709150,52674562, 1016741975,1016796078,1016856578,1016872970,1016889373,285344179,
1016908745,1016960297,1017074986,1017140523,1017184258,1017200666,1017217040,113115142, 1017234662,1017332887,1017382186,1017430022,933479287, 1017446499,1017480981,
15482890, 499433484, 1017544758,1017577931,1017627055,1017659434,620281878, 1017676313,1017741368,107462658, 1017774187,842465301, 1017810169,1017861420,1018041645,
- 1018118173,1018138021,152963069, 1018216507,1018251178,59260944, 5309346, 1018314860,1018347662,1018385710,1018462239,1018479479,1018512953,1018615087,153944095,
+ 1018118173,1018138021,152963069, 1018216507,1018251178,59260944, 5309346, 1018314860,1018347662,1018385710,1018462239,1018479479,1018512953,1018615087,153944095,
150537454, 1018757152,193708879, 1018790739,124551187, 1018860848,1019008305,1019073842,219676688, 8389459, 1019216895,1019270451,1019429778,7733307, 1019480403,
410748569, 125583398, 1019532596,1019641858,1019658266,1019674650,554434591, 1019691046,826523660, 1019707394,821657642, 1019723807,998686779, 1019745589,1019822111,
1019838474,1019854902,1019893046,1019937622,1019986379,1020040503,1020100674,1020134808,984121403, 1020182987,1020232789,1020264502,1020302648,1020461163,1020494277,
@@ -2123,12 +2118,12 @@ static const unsigned int DictNodes[84251] =
1021083674,1021100467,1021132806,1021150263,1021187386,1021248406,1021296739,1021334843,2932799, 466158043, 1021416764,1021526923,1021591660,212860944, 1021624346,
1021646141,1021689902,1021739020,108707862, 116015125, 4997595, 1021755447,1021820954,536379867, 1021837393,1021871125,1021924670,1022001259,52314128, 1022033923,
513278255, 1022055743,1022149699,1022181397,1022197791,1022214154,45858847, 1022230569,1022247770,1022280538,66814810, 1022312490,133283876, 1022330015,1022361716,
- 64356486, 1022383424,1022459945,1022476330,88555549, 1022494401,1022541940,2179094, 107462678, 1022560930,1022607370,2359412, 1022623772,1022640164,336887849,
- 1022656553,1022672933,1022689308,1022705706,84394003, 7634965, 1022722085,1022738443,477937683, 1022760257,1022902704,1022935061,581206052, 1022951465,477937693,
- 406339600, 1022968235,883785750, 1023000633,1023022402,13238402, 1023066153,581206054, 1023082517,1023098916,714244106, 1023115305,1023131688,1023148053,115458086,
+ 64356486, 1022383424,1022459945,1022476330,88555549, 1022494401,1022541940,2179094, 107462678, 1022560930,1022607370,2359412, 1022623772,1022640164,336887849,
+ 1022656553,1022672933,1022689308,1022705706,84394003, 7634965, 1022722085,1022738443,477937683, 1022760257,1022902704,1022935061,581206052, 1022951465,477937693,
+ 406339600, 1022968235,883785750, 1023000633,1023022402,13238402, 1023066153,581206054, 1023082517,1023098916,714244106, 1023115305,1023131688,1023148053,115458086,
1023563076,1023640631,126042138, 1023677765,1023738287,27852812, 1023770643,863814232, 1023792454,1023901722,1023918143,130859046, 1023950858,176455682, 1023967319,
1024017438,774963305, 319619088, 1024054599,610566182, 1024131108,1024147458,220987430, 1024163852,44679187, 1024185672,192184999, 1024311723,427803657, 1024349513,
- 496566288, 1024464202,175472706, 66601076, 1024540698,149094431, 1024557087,1024578891,1024622602,1024644428,1024720934,1024737311,1024754576,1024791885,61456422,
+ 496566288, 1024464202,175472706, 66601076, 1024540698,149094431, 1024557087,1024578891,1024622602,1024644428,1024720934,1024737311,1024754576,1024791885,61456422,
1024917585,6438950, 1024952217,1025018845,8685252, 482590732, 963067933, 1025064979,559120415, 1025086798,1025245250,618545190, 7095616, 1025278443,1025314091,
1025359898,204603408, 7290917, 1025376695,1025409104,1025447247,132154252, 1025573751,1025605716,1025641588,1025693008,1025835020,119439465, 1025851476,1025885849,
273974008, 1025933364,1025966499,1026004305,1026097161,1026113559,1026130069,2342953, 1026166170,1026228236,189136906, 16941171, 1026250066,1026457626,1026479443,
@@ -2137,74 +2132,74 @@ static const unsigned int DictNodes[84251] =
1027544407,1027637260,1027653642,569360405, 1027670129,545161232, 168017936, 1027724257,1027786688,1027866683,911310884, 330318671, 1027904856,193676787, 1028047449,
207273996, 1028079700,316478809, 1028117850,298960321, 1028195497,1028227129,248840223, 1028243543,1028293122,327909813, 718602327, 1028330843,1028478300,1028560221,
1028620330,1028642142,1028707679,112935343, 414285826, 1028836053,1028887904,1028964436,1028997550,1029051745,1029111950,307594087, 696123394, 1029144604,1029160986,
- 1029177410,1029215586,1029510499,1029608804,1029734402,1029750794,599195669, 1029768600,656523691, 1029816339,1029832770,1029867129,122503206, 1029914626,108707866,
- 1029934559,1030018405,1030116710,1030258728,1030275087,1030291458,1030307871,433405978, 1030324683,1030378855,541854182, 800228853, 500908256, 1030587476,149111251,
+ 1029177410,1029215586,1029510499,1029608804,1029734402,1029750794,599195669, 1029768600,656523691, 1029816339,1029832770,1029867129,122503206, 1029914626,108707866,
+ 1029934559,1030018405,1030116710,1030258728,1030275087,1030291458,1030307871,433405978, 1030324683,1030378855,541854182, 800228853, 500908256, 1030587476,149111251,
1030635546,1030657384,1030815828,1030848654,1030881311,482590730, 1030897695,195215370, 1030914935,2408484, 1030946875,1030985065,1031095496,1031127052,1031143450,
- 6373406, 1031165290,1031225356,55754783, 1031242782,1031274855,1031307292,1031323679,1031340042,1933772, 1031356428,1031378283,1031438395,1031472239,225181725,
+ 6373406, 1031165290,1031225356,55754783, 1031242782,1031274855,1031307292,1031323679,1031340042,1933772, 1031356428,1031378283,1031438395,1031472239,225181725,
1031509356,1031624045,175784225, 1031755118,1031848367,1031881306,1031913494,46039071, 1031935343,1031995414,1032011798,184074242, 30326843, 528777300, 1032028179,
144621570, 5865538, 1032050032,136119465, 1032127342,1032192437,111362050, 108298278, 1032225249,1032274037,1006059551,1032310022,131318952, 1032372240,1032388637,
1032405023,1032421387,1032437791,1032454165,191053850, 1032472020,1032519692,176504838, 1032537690,222494732, 1032574321,1032770930,763773501, 1033082227,1033180532,
- 1033224194,27852829, 1033246069,5505052, 1033306254,1033338882,394379283, 1033355310,1033405986,1033453610,1033469974,612319253, 1033486768,1033519188,2359301,
- 1033552349,1033584699,1033617906,1033666603,1033699816,1033732633,490340378, 1033797739,1033830426,404160552, 1033847214,1033896044,116377025, 1033928796,705937474,
+ 1033224194,27852829, 1033246069,5505052, 1033306254,1033338882,394379283, 1033355310,1033405986,1033453610,1033469974,612319253, 1033486768,1033519188,2359301,
+ 1033552349,1033584699,1033617906,1033666603,1033699816,1033732633,490340378, 1033797739,1033830426,404160552, 1033847214,1033896044,116377025, 1033928796,705937474,
449052703, 1033966966,110444646, 1034093806,1034125315,1034141724,1034158082,4341797, 1034175095,1034212727,1034371087,1034387458,1034403846,1034420245,1034437162,
1034453013,1034469398,1034485772,1034502698,243220495, 1034518538,29376524, 1966083, 1034540408,52363274, 1034700109,1034764326,299221019, 1034786169,1034879035,
- 1034912721,163315794, 1034966394,1035256821,1035326843,175768002, 1035375996,1035425149,1035523454,558628923, 1035605032,1035665462,1035699209,778944554, 397771055,
- 1035731028,512491530, 294060048, 612745237, 1035763731,397852694, 1035781439,141411064, 235438382, 1035845658,1035862028,1035879738,1035933055,1036025932,2359387,
- 1036064128,356925450, 1036255254,1036276046,1036321057,872366082, 1036353548,272810010, 316735554, 1036369979,1036403222,1036440961,1036552250,1036616907,122503210,
- 1036653954,1036877931,1036910658,1036943386,1036960213,145506342, 1037008924,111607836, 1037025881,1037058155,9388034, 1037091246,1037140008,55197722, 77512730,
+ 1034912721,163315794, 1034966394,1035256821,1035326843,175768002, 1035375996,1035425149,1035523454,558628923, 1035605032,1035665462,1035699209,778944554, 397771055,
+ 1035731028,512491530, 294060048, 612745237, 1035763731,397852694, 1035781439,141411064, 235438382, 1035845658,1035862028,1035879738,1035933055,1036025932,2359387,
+ 1036064128,356925450, 1036255254,1036276046,1036321057,872366082, 1036353548,272810010, 316735554, 1036369979,1036403222,1036440961,1036552250,1036616907,122503210,
+ 1036653954,1036877931,1036910658,1036943386,1036960213,145506342, 1037008924,111607836, 1037025881,1037058155,9388034, 1037091246,1037140008,55197722, 77512730,
1037156436,1037189130,471531549, 1037205535,1037221899,1037238735,1037271343,1037303916,1037336684,1037369382,57016358, 1037385739,1037402171,1037434921,1037451290,
- 1037467660,116162589, 1037484450,1037522307,1037648815,1037715286,1037763771,1037817220,122732582, 1037882757,570638373, 1037977098,1038024705,1038041106,65077378,
+ 1037467660,116162589, 1037484450,1037522307,1037648815,1037715286,1037763771,1037817220,122732582, 1037882757,570638373, 1037977098,1038024705,1038041106,65077378,
1038057498,1038073885,154664999, 1038090246,96092197, 1038112134,1038221340,1038237718,1038254116,2179101, 1038272299,1038305681,1038352533,1038385284,1038401558,
1038418054,1038434345,470384777, 1038451881,1038483525,1038516246,1038532644,1038549033,1038565386,21151772, 1038581876,1038598154,79495303, 1038614644,1038630952,
1038647412,142180389, 1038669191,1038731689,64929927, 1038762003,1038778437,1038811172,1038827558,1038845128,1038882184,1038925853,725160054, 1038946421,1038976445,
1039209866,1039553931,1039614832,1039665072,1039701388,1039844088,1039876134,1039892523,1039926472,1039958100,1039991243,1040039987,1040078221,1040143758,1040225679,
1040334902,1040367714,1040405904,556354453, 1040515094,1040531482,353894416, 1040548705,1040582247,1040629762,1040649180,79626261, 1040695322,47923221, 1040717201,
- 1040843203,273220035, 1040876412,169673226, 1040925131,300925688, 1040979346,372605846, 1041023467,1041061267,1041301506,1041318319,1041350672,47448090, 307462160,
- 1041372564,1041599094,1041662799,1041694732,36405390, 1041711550,1041779039,1041825899,390153877, 1041858665,1041891412,1041924188,1041962389,48021525, 2998760,
- 1042055228,1042137193,79757331, 1042171235,1042236752,1042287241,1042351593,1042399270,1212457, 1042416707,402538522, 1042453910,1042748823,1042808834,6374745,
+ 1040843203,273220035, 1040876412,169673226, 1040925131,300925688, 1040979346,372605846, 1041023467,1041061267,1041301506,1041318319,1041350672,47448090, 307462160,
+ 1041372564,1041599094,1041662799,1041694732,36405390, 1041711550,1041779039,1041825899,390153877, 1041858665,1041891412,1041924188,1041962389,48021525, 2998760,
+ 1042055228,1042137193,79757331, 1042171235,1042236752,1042287241,1042351593,1042399270,1212457, 1042416707,402538522, 1042453910,1042748823,1042808834,6374745,
1042826345,1042876219,1042925033,1042973186,1043005974,1043038234,147292171, 1043056104,1043109272,7258193, 1043256729,1043301460,584597506, 1043349927,1043400246,
1043447830,1043469722,471580674, 494010413, 1043550060,1043595301,1043611660,1043628073,44646516, 1043647695,1043694039,1043726423,1043781019,107446325, 1043906647,
450773018, 1043956163,1043994012,1044059549,1044141470,1044217878,412156761, 1044234266,1044256159,1044348938,226443285, 1044365417,1044398086,307462146, 1044414476,
- 1044430886,1044447270,153075778, 1044467250,1044562849,1044611154,1044643876,852017193, 1044665760,1044824640,1044862369,1040073226,1044958313,1045020684,243843098,
- 1045037535,1045069845,406640034, 1045087904,1045124515,1045234155,1045271972,1045337509,1045415112,1045446672,47546378, 1045468582,54296614, 1045579142,451871628,
+ 1044430886,1044447270,153075778, 1044467250,1044562849,1044611154,1044643876,852017193, 1044665760,1044824640,1044862369,1040073226,1044958313,1045020684,243843098,
+ 1045037535,1045069845,406640034, 1045087904,1045124515,1045234155,1045271972,1045337509,1045415112,1045446672,47546378, 1045468582,54296614, 1045579142,451871628,
1045643285,1045664152,679542805, 1917152, 1045743193,1045790807,1045845415,1046102072,1046139508,1046204847,1046254942,305086986, 1046319709,1046364259,1046397457,
177963030, 1046429738,135905346, 1046451624,1046517161,1046626335,1046643171,1046675494,344850434, 1046691842,1046709339,1046745042,1046806612,52576278, 1046844842,
1046893995,1047037079,1047090604,1047205293,168706114, 1047298079,1013219338,1047315063,1047352750,1047445514,1047467439,1047511055,205209616, 44318760, 1047527854,
166152443, 1047576800,1047609819,493093296, 1047647664,518291494, 1047740523,1047773213,431554572, 1047790513,191119366, 1047822382,1047872719,1047937546,1047975345,
147423261, 714244133, 1048073650,1048366624,122961960, 1048417715,240583190, 370163936, 1048494121,512918422, 1048511065,1048544286,1048576252,1048608800,1048642011,
- 668057717, 1048674951,1048723482,408944681, 665157642, 1048741393,789824406, 1048775543,1048805463,1048854534,1048870931,1048887308,1048904625,1048938637,913997883,
+ 668057717, 1048674951,1048723482,408944681, 665157642, 1048741393,789824406, 1048775543,1048805463,1048854534,1048870931,1048887308,1048904625,1048938637,913997883,
616792079, 471547916, 321306722, 1048986445,1049040308,127042137, 1049100316,1049118590,1049149468,1049165843,1049182218,1049198614,513998889, 1049220533,1049479140,
- 1049510346,1049542658,1049559061,720797715, 1049575450,1049592203,1049630134,1049673759,429637638, 668401707, 1049690122,255705130, 1049709724,54460473, 202211350,
+ 1049510346,1049542658,1049559061,720797715, 1049575450,1049592203,1049630134,1049673759,429637638, 668401707, 1049690122,255705130, 1049709724,54460473, 202211350,
1049757015,1049810359,1049870345,1017495563,1049889314,1049935913,1049952292,1049968650,48480284, 1050366508,119047192, 127041954, 1050432953,1050510222,1050574854,
1050593054,123207746, 1050662330,1050755102,1050787947,232849410, 1050826171,4390949, 1050918924,189038618, 48676902, 1050935520,1050968695,1051000844,1051017242,
5505062, 1051039164,174457592, 1051181816,1051219389,266043616, 1051264661,274366523, 1051328596,1051361346,1051394489,1051448766,171507754, 1051542396,1051591771,
- 4997615, 1051628991,769851448, 1051837323,1051901998,1051956672,1052051242,1052104129,1052231044,1052296015,1052327962,1052344386,148799922, 1052378524,98107394,
+ 4997615, 1051628991,769851448, 1051837323,1051901998,1051956672,1052051242,1052104129,1052231044,1052296015,1052327962,1052344386,148799922, 1052378524,98107394,
1052431810,1052524554,1052541367,6602780, 1052576552,1052644803,1052726724,1052770309,1052792261,1052869075,167116854, 8392454, 1052917819,1052952765,1053016074,
1053032469,116867159, 1053054406,210895424, 1053251015,1053398472,650085270, 1053458498,1053493201,1053542903,1053573262,1053605926,53690406, 1053622288,1053638666,
43237418, 1053655052,1053671523,271384604, 200589334, 1053704204,1053721105,1053758921,1053868977,1053900810,1053917196,1053935394,318832678, 1053966795,1054021066,
1054065694,1054102987,1054212142,1054264785,47038502, 1054315980,1054491672,1054540203,1054572584,300777513, 1054588994,1054627277,1054720002,45776922, 1054738256,
- 1054785558,229034082, 733888930, 1054807502,1055032627,1055080486,1055098202,1055135183,1055260703,226639901, 1055277903,2179088, 1055310671,1055342634,42434582,
- 1055359968,1055408270,464928789, 1055446480,1055522870,1055555638,1055588367,273268802, 1055970770,1056079938,1056112650,1056129327,180764713, 1056165003,184682028,
- 1056245736,659914778, 1056292932,1056342455,1056374850,1056413139,1056511444,654000616, 1056608092,1056658901,1056932083,1056981136,1057019350,1057079315,24838184,
+ 1054785558,229034082, 733888930, 1054807502,1055032627,1055080486,1055098202,1055135183,1055260703,226639901, 1055277903,2179088, 1055310671,1055342634,42434582,
+ 1055359968,1055408270,464928789, 1055446480,1055522870,1055555638,1055588367,273268802, 1055970770,1056079938,1056112650,1056129327,180764713, 1056165003,184682028,
+ 1056245736,659914778, 1056292932,1056342455,1056374850,1056413139,1056511444,654000616, 1056608092,1056658901,1056932083,1056981136,1057019350,1057079315,24838184,
1057095701,8159366, 1057117655,272614136, 1057440824,1057506432,1057554438,1057570837,1057588110,1057652752,1057669126,1057686105,1057718414,720797717, 1057751132,
348652465, 1057783867,1057816618,293601290, 1057832970,1057849360,1057865733,175833126, 1057882571,1057931310,1057980455,1058013421,1058051544,1058160652,1058182617,
1058242644,1058275357,1058291728,116850693, 1058313690,1058455590,122683430, 1058472536,1058504716,1058521114,1058543067,119537680, 1058587054,144375834, 1058639050,
114114586, 1058701343,1058717717,1058737202,1058803588,184680745, 1058919772,1059001820,1059094568,149504038, 1059110924,84934666, 1059127755,1059182045,1059242050,
1059275223,1059308008,1059340776,2834484, 1059374019,1059422634,1059460574,1059586478,2147673, 1059640799,1059689952,1059850776,913817642, 1059919329,1059964312,
- 300582942, 1060013065,1060044806,1060061221,1060077570,1060093967,1060110342,1060126749,1060143135,1060159494,1060175893,1060192282,79511583, 1060210484,440254530,
+ 300582942, 1060013065,1060044806,1060061221,1060077570,1060093967,1060110342,1060126749,1060143135,1060159494,1060175893,1060192282,79511583, 1060210484,440254530,
1060296162,5309786, 1060377507,307986926, 225116166, 1060438054,1060454402,1060476387,1060585637,1060733078,1060898167,1060978770,1061017060,2031632, 1061112696,
- 1061158996,44351498, 1061192616,1061225862,1061292111,1061355541,1061372213,1061426661,1061635521,1061672422,1061732411,1061766033,185008130, 1061817256,3244554,
+ 1061158996,44351498, 1061192616,1061225862,1061292111,1061355541,1061372213,1061426661,1061635521,1061672422,1061732411,1061766033,185008130, 1061817256,3244554,
434716688, 827260949, 1061901799,1062094138,11157516, 1062147560,15007763, 1062213097,1062273040,5505035, 1062295018,18595944, 81985542, 78905354, 1062371787,
- 1062420522,118194198, 1062436923,1062470860,677724181, 1062520206,1062584341,1062601236,1062650879,1062704619,1062764555,251580518, 1062781012,1062813722,552878109,
+ 1062420522,118194198, 1062436923,1062470860,677724181, 1062520206,1062584341,1062601236,1062650879,1062704619,1062764555,251580518, 1062781012,1062813722,552878109,
109052339, 1062830383,134021146, 1062868460,1063044382,1063092267,1063125451,994312258, 1063174228,1063206972,2146731, 1063291925,1063370790,1063388393,1063441901,
1063485494,1063521143,1063556590,116211819, 1063638511,1063731284,1063764006,1063780390,1063796777,1063813136,1063829530,108658716, 1063845900,1063862298,1063879336,
1063915485,1063949808,1064141294,1064176072,1064228337,1064353824,1064392178,1064484885,1064501279,251346960, 371311114, 1064518550,1064566786,1064583199,1064599562,
491227081, 1064615976,366837772, 1064637939,1064845314,1064861706,1064878109,1064895018,1064910850,1064927786,48463894, 787169809, 5668930, 1064949236,1064998389,
1065060611,1065129462,1065244151,1065307099,1065391608,1065631828,1065664604,18874410, 166543398, 1065697296,1065719289,1065762859,1065796702,659341328, 1065844790,
- 1065877596,1065910293,27607062, 1065927416,45776898, 97435664, 1065962068,114049027, 147013674, 1066011332,1066041349,3309683, 53706764, 1066270857,98648093,
+ 1065877596,1065910293,27607062, 1065927416,45776898, 97435664, 1065962068,114049027, 147013674, 1066011332,1066041349,3309683, 53706764, 1066270857,98648093,
1066632015,1066663939,1066680635,525615125, 1066718716,133234694, 1066795608,1066828231,1066876944,1066894145,1066926119,1066964477,478543882, 1067013630,1067122793,
- 1067155494,1067171906,5341408, 1067205067,1067253770,1067270165,1067288379,1067335762,530727824, 176242690, 27623469, 1067374079,675381675, 2195883, 358105567,
- 1067483217,1067515970,163299760, 764266029, 1067554304,1067619841,1067718146,1067947523,668991519, 1068094980,1068176901,1068254848,1068302367,176488458, 143753226,
+ 1067155494,1067171906,5341408, 1067205067,1067253770,1067270165,1067288379,1067335762,530727824, 176242690, 27623469, 1067374079,675381675, 2195883, 358105567,
+ 1067483217,1067515970,163299760, 764266029, 1067554304,1067619841,1067718146,1067947523,668991519, 1068094980,1068176901,1068254848,1068302367,176488458, 143753226,
1068318786,1068351592,1068406278,1068466242,1068500431,1068597719,1068635655,1068712001,1068761142,1068799496,1067401222,161808415, 1068941334,1068957712,1068974090,
154763330, 1068991753,1069023254,1069039618,128843787, 1069056052,1069094409,1069351966,1069389322,1069481996,1069498394,5341635, 364560450, 688275468, 1069514989,
1069547546,342605856, 1069563930,48676885, 209338384, 1069585068,1010581811,1069646426,1069679945,132792330, 1069733387,1069776898,881786895, 922615848, 1069794144,
@@ -2214,14 +2209,14 @@ static const unsigned int DictNodes[84251] =
1071765012,1071923203,112427024, 1071940055,145309718, 550371340, 1071972843,366837772, 1072005201,1072037954,1072076309,1072289302,1072403991,238370844, 1072480287,
1072499103,1072551448,1072627751,1072666137,1072709671,1072743281,1072794257,1072858001,116228106, 1072906699,196149290, 1072955921,1072989636,1073020934,1073041531,
1073092122,401834236, 1073501723,116588574, 285081742, 1073594394,188106073, 1073610833,1073649180,1073725499,1073758219,10032669, 1073774676,1073808512,1073858879,
- 293601309, 1073894942,1073971210,1073989164,679755842, 1074022764,1074069610,1074153694,178471529, 387826497, 1074200660,502661146, 1074234865,1074271775,20365319,
+ 293601309, 1073894942,1073971210,1073989164,679755842, 1074022764,1074069610,1074153694,178471529, 387826497, 1074200660,502661146, 1074234865,1074271775,20365319,
1074370080,1074432791,1074496335,52133898, 1074529366,1074579973,1074626572,212107276, 1074643010,1074681377,727664669, 1074774068,247840774, 307740777, 1074812450,
- 1075036761,1075068954,188105187, 1075090979,891469850, 1075183638,1075200021,1075216465,1075249164,523485993, 1075265602,1075298735,1075331115,1075366820,140247849,
+ 1075036761,1075068954,188105187, 1075090979,891469850, 1075183638,1075200021,1075216465,1075249164,523485993, 1075265602,1075298735,1075331115,1075366820,140247849,
396279848, 479428610, 1075429463,1075481692,1075527722,1075544086,933183528, 1075566116,1075658762,1075675157,1075691558,1075707916,725368843, 1075729957,1075904534,
1075926566,1076035605,911278568, 1076052898,157663244, 1076085654,1076133928,1076150284,1076166666,1076183671,1076216718,1076283622,1076330515,190644715, 1076352551,
1076446848,1076496165,1076549160,1076659498,1076713001,1076822070,1076855298,1076887618,1076920330,1076937750,1076986457,208503210, 1077018653,200736806, 1077040682,
130531359, 891469850, 1077198905,1077215273,1077231626,99876905, 923336747, 1077248038,1077264405,151765049, 1077286443,618627171, 1077626273,1077679660,1077739576,
- 236339231, 1077773198,1077843501,1077971430,122126731, 401834065, 1078002424,1078034498,126435444, 1078072878,1078236719,1078400295,1078477335,1078509599,184680977,
+ 236339231, 1077773198,1077843501,1077971430,122126731, 401834065, 1078002424,1078034498,126435444, 1078072878,1078236719,1078400295,1078477335,1078509599,184680977,
1078526398,1078591519,1078607891,1078624747,1078657030,1078673887,1078706235,1078739003,1078771741,1078792239,1078838166,1078891170,1078935991,1078974000,1079099402,
500531222, 1079115815,1079154225,1079230485,1079246860,1079265058,1079296031,68599834, 673939522, 1079312405,1079331002,843120650, 1079363483,1079428948,1079479346,
1079542814,1079580210,1079706518,1079756027,1079806775,371605542, 1079822074,1079854249,191972779, 1079890521,1079957043,1080066070,1080082955,1080131622,1080148006,
@@ -2237,17 +2232,17 @@ static const unsigned int DictNodes[84251] =
1085671040,1085718625,1085785840,3129346, 1085822541,4292911, 1085882414,1085931560,1085953614,98107432, 11304996, 1086133839,1086195195,1086242882,1086281296,
1086391182,1086455819,50266124, 1086472213,1086490427,1086543441,177963034, 1086636053,1086652428,1086668810,1086685603,795623436, 1086717964,1086735785,1086767328,
1086799882,1086816297,1086832666,1086849046,1086865436,514605075, 1086887506,1087014487,2195883, 1087080247,1087127602,188874768, 1087160808,1087193140,1087225915,
- 111280227, 1087258723,1087297107,1087356954,1087373340,78561320, 1087389699,1212458, 1087406139,1087439151,221233183, 1087477332,202309663, 1087651924,287573868,
+ 111280227, 1087258723,1087297107,1087356954,1087373340,78561320, 1087389699,1212458, 1087406139,1087439151,221233183, 1087477332,202309663, 1087651924,287573868,
1087684845,157188178, 253624359, 1087717436,201523714, 1087800329,111656970, 1087837781,89128976, 62324758, 1087968854,1088241694,1088280151,1088340647,1088373021,
1088405591,1088454694,1088472449,1088522208,265830410, 16597035, 1088569354,59310111, 1088585730,1088602123,1212457, 1088618548,171163674, 1088656984,1088851572,
- 1088897166,1088930911,1088997228,1089028523,1089061345,1089110062,5079122, 115720284, 1089160015,1089191982,118472720, 181259906, 1089241518,1089291087,45645933,
+ 1088897166,1088930911,1088997228,1089028523,1089061345,1089110062,5079122, 115720284, 1089160015,1089191982,118472720, 181259906, 1089241518,1089291087,45645933,
1089328729,1089391317,149094402, 312180755, 128155686, 124862563, 1089443418,1089508955,1089771100,1089848143,1089880148,1089918557,1089978427,590037002, 1090011983,
1090043920,1090060298,1090077579,1090142968,1090176344,1090225560,1090274129,1090406107,1090437132,1090453514,1090469909,1090486274,1090502694,1090520408,1090569100,
1090619170,1090650713,1090682987,113247761, 1090715650,1090732063,226951174, 1090752030,1090813954,655409912, 1090830401,45498394, 1090879498,7307305, 1090896327,
1090946234,129237023, 1090979547,1091011161,1091049054,1091141661,5767180, 131973737, 1091158934,1091207206,300582377, 710557708, 1091229279,1091322283,1091354861,
1091387423,1091405562,1091436560,1091452947,1091469348,1091485736,1091502095,1091518466,1091534858,214679553, 390135848, 1091556960,1091851873,131812506, 1091950178,
1091996165,1092042811,1092076460,1092142439,1092207069,1092239406,1092294243,116376086, 1092354050,347635722, 1092370969,1092441381,709869599, 1092490603,1092552238,
- 1092600755,1092632642,308576296, 1092668923,247234565, 1092731307,888143884, 1092769380,149116517, 1092845580,1092862051,1092895737,379109673, 1092976642,365346826,
+ 1092600755,1092632642,308576296, 1092668923,247234565, 1092731307,888143884, 1092769380,149116517, 1092845580,1092862051,1092895737,379109673, 1092976642,365346826,
1092998758,1093058576,145145877, 55918594, 1093080679,1093222426,208667471, 1093240735,116162598, 188874764, 1093305658,1093353775,1093386695,1093441128,1093517339,
7735216, 1093550090,1093570607,1093621353,1093698590,110231652, 1093736042,1093926996,174440486, 1093959739,1093992555,1094025753,1094090976,433405962, 1094126415,
1094178411,418086955, 1094227564,1094287370,1094303765,1094320150,53854246, 1022492682,514670614, 1094336907,705052802, 84967426, 1094369417,690192405, 1094391405,
@@ -2257,48 +2252,48 @@ static const unsigned int DictNodes[84251] =
1095551863,1095581838,1096177269,104759325, 1096238606,1096291958,1096336254,1096368131,1096384643,1096400934,16269350, 289062921, 1096417320,498172020, 1096433669,
1096450085,8962054, 1096466435,1096482826,16269318, 1096914551,1097007543,1097045624,1097193081,2834520, 1097286092,1097322165,1097404628,799572050, 1097468434,
1097515479,1097548738,1097580563,1097596931,2539556, 1097616817,1097679695,1097711646,1097745798,1097810974,13549587, 1097842747,1097875494,1097897594,1098012283,
- 1098138433,158501460, 1098176124,1019056093,1098400757,1098466633,1098516499,1098563600,117751846, 210436567, 1098585725,1098629151,160759818, 1098651262,711163906,
+ 1098138433,158501460, 1098176124,1019056093,1098400757,1098466633,1098516499,1098563600,117751846, 210436567, 1098585725,1098629151,160759818, 1098651262,711163906,
1098711887,1098749567,1098891724,864767590, 1098928239,1098989676,1099028096,185270282, 1099104557,29900810, 1099142785,1099224706,1099384144,8388701, 1099433448,
1099481119,1099497556,1099530347,1099563037,563512143, 1099579479,125911511, 1099634307,110249305, 1099716228,1099923538,124863579, 1099961989,341442863, 1100043910,
1100124086,1100185837,7733301, 1100218396,1100234768,1100251189,1100285657,407111866, 1100322439,1100398604,405749786, 87539749, 1100415854,1100486280,1100548804,
- 108314708, 1100912266,1101169128,1101202288,1101256331,1101316180,1101354636,1101436557,1101480239,1101513794,1101578246,1101594626,390135834, 551796738, 119881759,
+ 108314708, 1100912266,1101169128,1101202288,1101256331,1101316180,1101354636,1101436557,1101480239,1101513794,1101578246,1101594626,390135834, 551796738, 119881759,
1101611440,137543739, 1101648936,5341621, 1101709371,1101742510,357285899, 1101797006,1101939530,239550753, 432947221, 1101987871,874234381, 1102004308,1102037051,
- 273088522, 1102075535,1102266399,1102283945,1102315551,1102331906,833847306, 1102348300,181256729, 1102369276,1102413883,59310106, 1102452368,23855158, 273121334,
+ 273088522, 1102075535,1102266399,1102283945,1102315551,1102331906,833847306, 1102348300,181256729, 1102369276,1102413883,59310106, 1102452368,23855158, 273121334,
1102550673,1102714514,1102892431,1102954528,1102988519,1103042195,2342927, 171000240, 1103102372,1103134758,1103151106,6717469, 1103173268,1103320725,1103384699,
- 1103430580,1103495457,1103533718,1103763095,1103822955,1103855708,208503278, 1103888985,1103921236,1103959704,121339930, 1104003126,1104035842,1104052234,5505045,
+ 1103430580,1103495457,1103533718,1103763095,1103822955,1103855708,208503278, 1103888985,1103921236,1103959704,121339930, 1104003126,1104035842,1104052234,5505045,
1104074393,119357479, 420593685, 1104189082,1933318, 1104254619,147243074, 1104352924,1104396825,1104462922,1104500381,1104560587,1104613472,1104659279,1104693602,
900677643, 1104741194,146358293, 1104789550,1104844446,1105041055,47120415, 1105139360,1105266059,397852701, 1105317859,533070504, 1105385121,448659522, 1105462859,
1105510466,1105544222,1105581730,1105789165,666025986, 4145164, 1105824733,491700226, 1917365, 1105871317,1105925795,1106001930,1106018341,417464351, 1106040484,
- 1106137286,29884418, 1106182199,1106247695,1106264086,6946852, 1106280450,1106296863,48054310, 1106313226,8390247, 1106330059,1106378858,158504613, 121585674,
- 520722086, 1106461815,1106509826,1106526245,1106542614,456949800, 1106564775,1106826920,1106886658,1106903061,868090357, 1106925225,1107037743,1107083305,8603064,
+ 1106137286,29884418, 1106182199,1106247695,1106264086,6946852, 1106280450,1106296863,48054310, 1106313226,8390247, 1106330059,1106378858,158504613, 121585674,
+ 520722086, 1106461815,1106509826,1106526245,1106542614,456949800, 1106564775,1106826920,1106886658,1106903061,868090357, 1106925225,1107037743,1107083305,8603064,
1107099951,1107133939,621576230, 1107170986,1107232073,1107279898,5312501, 1107302059,1107346462,185270313, 1107383980,1107444206,1107482285,1107689986,1107724158,
152616962, 1107755051,1107787786,122683434, 1107809966,778290547, 2015253, 1107904057,1108000827,694976524, 1108033557,1108049979,131940390, 1108083225,1108154031,
319176763, 1108263367,152027147, 1900572, 1108312989,1108394066,158253280, 1108432560,1108498097,1108575650,1108629170,1108756837,254591042, 51118091, 1108804126,
116883693, 1108857460,1108918282,291110975, 1109317299,1109524492,125927453, 162185666, 1109540948,159450142, 8389826, 1109573691,1109607454,1109639650,1109743284,
- 1109792437,1109874358,1109951400,1109983234,159450000, 1110005431,1110136504,1110251193,132187305, 1110343691,5177360, 1110361097,1110396224,911917068, 344736175,
+ 1109792437,1109874358,1109951400,1109983234,159450000, 1110005431,1110136504,1110251193,132187305, 1110343691,5177360, 1110361097,1110396224,911917068, 344736175,
445841418, 1110464186,1110557500,1110611643,1110674307,647184422, 550944805, 1110738876,1110818918,1110854266,115523624, 153911773, 47530020, 150536667, 1110901893,
1110955708,1111146498,1111165111,185270301, 8391421, 129876582, 1111212113,692410045, 1111245337,1111311547,1111364380,1111409565,1111491882,47939615, 1111545534,
- 1111671215,1111709375,1111786764,1111840448,1111900244,425001993, 1111933034,1112020673,1112151746,1112228064,109135286, 1112266435,1112391723,1112427118,45433353,
+ 1111671215,1111709375,1111786764,1111840448,1111900244,425001993, 1111933034,1112020673,1112151746,1112228064,109135286, 1112266435,1112391723,1112427118,45433353,
1112479428,1112577733,1112690511,1112741574,1112883307,1112917139,52592642, 1112949050,1112985337,1113031115,352092258, 1113080655,361529646, 1113113006,1113167559,
1113425941,1113456642,122323395, 1113474688,3213172, 1113528008,1113589300,247530811, 1113642697,1113688085,1113719243,17809419, 1113770326,135414814, 1113817119,
1113834841,209616934, 1113866699,1113915418,1113933915,236667934, 1113997834,168820767, 1114035914,1114164982,355731477, 1114261641,1114342795,2195658, 1114393987,
- 318832650, 1114439690,1114457517,1114506063,1114543819,1114603530,1114619925,1114636300,1114652698,1114669903,1114701834,1114718229,1114734604,1114750982,5390357,
+ 318832650, 1114439690,1114457517,1114506063,1114543819,1114603530,1114619925,1114636300,1114652698,1114669903,1114701834,1114718229,1114734604,1114750982,5390357,
1114767376,210583563, 1114783760,44466205, 1114805964,1115013142,1115029963,125927462, 1115084493,1115242508,1115258892,293601295, 866080462, 1115275348,1115308068,
10032847, 1115330256,1115406362,1115423612,1115473241,1115509188,1115576017,1115619394,1115653330,880919422, 1115686186,1115739858,37191927, 1115838163,1115887316,
- 5325234, 109150260, 6029334, 713786191, 1115983695,1116034773,1116324341,1116356662,1116393141,1116474524,2147216, 1116525379,1116586060,1116624598,316735630,
+ 5325234, 109150260, 6029334, 713786191, 1115983695,1116034773,1116324341,1116356662,1116393141,1116474524,2147216, 1116525379,1116586060,1116624598,316735630,
1116700674,2146386, 1116717086,48627728, 1116755671,351043650, 110480021, 592561073, 1116897334,116064266, 1116931098,1116979681,601260044, 1117028782,1117081454,
- 1117148888,1117260993,1117308718,1117411033,273679519, 1117492554,1117574874,1117701032,1117732866,18153482, 860423411, 1117749279,1117767105,1117804251,118883487,
- 1117929538,1117962699,1118011850,1118044182,473251856, 1118066396,1118273592,1118307719,1118339118,1118388270,110298410, 1118437422,1118486582,1118520341,790069683,
+ 1117148888,1117260993,1117308718,1117411033,273679519, 1117492554,1117574874,1117701032,1117732866,18153482, 860423411, 1117749279,1117767105,1117804251,118883487,
+ 1117929538,1117962699,1118011850,1118044182,473251856, 1118066396,1118273592,1118307719,1118339118,1118388270,110298410, 1118437422,1118486582,1118520341,790069683,
884748, 1118574301,1118705374,1118765515,1118814646,223707174, 1118896417,1118928908,3260876, 1118946466,1119010826,1119027221,1119043596,963952655, 1119060006,
1119076383,1026228240,1119092878,1119126041,1119196895,1119436915,1119453221,8945721, 73744426, 1119469587,210206730, 1119486487,7700499, 7634954, 1119522095,
- 933929, 1049968697,1119551509,1786867, 1119567900,1119584296,1119600662,17448988, 1119617806,1119649814,1119666217,1119682579,628180770, 1119698966,128761897,
+ 933929, 1049968697,1119551509,1786867, 1119567900,1119584296,1119600662,17448988, 1119617806,1119649814,1119666217,1119682579,628180770, 1119698966,128761897,
1119715354,11747385, 1119732648,1119764549,1119797253,96616579, 331776041, 1022951464,1119819488,1119899825,1119928339,1119944741,1119961104,115785768, 1119983329,
1120092170,1120108550,214319141, 157500274, 288964634, 1120540387,1120669819,170328079, 1120720612,955990032, 1120895035,1120927746,3228170, 318259229, 1120944728,
251527209, 154812521, 1120977375,1121015525,1121108728,174129376, 1121140738,47120420, 1121159933,1121206574,1121244902,1121371526,1121436611,6602790, 1121484892,
761184267, 1121523431,1121703656,2031747, 153075796, 1121763412,1121801961,1121882056,1121944642,1122009090,1122025498,1122041898,111656982, 177700876, 1122064106,
150241299, 1122144944,1122189419,404045883, 1122222513,1122254858,187236374, 1122277099,1122354097,1122391788,1122457325,319555329, 365054613, 1122566210,1122604782,
1122797433,1917982, 1122844753,1122877492,270516230, 1122916079,874201181, 1123024906,1123041343,1123079920,794363332, 1123145457,1123435031,1123468111,1123500042,
- 99893264, 1123519465,1123587826,1032142874,1123664916,969080854, 1123713108,1123745802,1123762222,1123815279,674316370, 1123876963,45465615, 1123910103,55885866,
+ 99893264, 1123519465,1123587826,1032142874,1123664916,969080854, 1123713108,1123745802,1123762222,1123815279,674316370, 1123876963,45465615, 1123910103,55885866,
359481370, 1123943400,1123991562,184008741, 881786922, 1124008002,1124046579,1124158948,1124204566,200736806, 1124222814,381550618, 212107290, 1124288734,1124335626,
1124352430,1124402714,1124450763,338149469, 336658540, 1124505332,37748873, 163726900, 1124811904,1124859916,1124876314,1124892700,1124909087,1124925466,1124941862,
379256863, 1124964085,1125040888,1125072907,1125089292,450592867, 1125106424,1125139395,174587906, 1125187638,1125226230,1125351462,1125367824,1125384234,1125401008,
@@ -2311,36 +2306,36 @@ static const unsigned int DictNodes[84251] =
1128663341,1128710170,1128726543,928776214, 1128744576,1128792102,1128808479,394575893, 1128825252,1128863487,1128973342,127041595, 1129010944,613302740, 1129202551,
1129240321,1129355010,127041602, 1129416270,2195769, 1129469699,1129529346,5292053, 701612034, 264830986, 1129546207,1129578508,174227482, 1129600772,1129676812,
1129693266,1129727079,1130108677,158500832, 1130251492,1130305286,1130397725,1130414960,1130463263,1130479627,168017936, 1130496907,220758042, 1130564120,1130632967,
- 1130693738,110232961, 1130777904,1130829576,1130922897,115115038, 1130971220,1131003957,1131036704,1131075337,126763608, 1131170747,1131250095,1131282863,3211684,
+ 1130693738,110232961, 1130777904,1130829576,1130922897,115115038, 1130971220,1131003957,1131036704,1131075337,126763608, 1131170747,1131250095,1131282863,3211684,
730762543, 1131321098,1131463601,1131501323,1131665164,1131741189,1131757580,155631642, 1131774051,354304006, 1131806730,1131823106,1131840465,911786022, 1131888650,
55377949, 1131906875,134168674, 1131960077,1132103311,650051595, 1132151631,264142886, 1132183998,1132249848,16793729, 1132287758,1132364297,1132402447,1132445698,
1132462090,393478173, 1132484368,1132566289,805356655, 1132643258,1132711846,1132759731,1132795666,1132987245,4407339, 1133035560,791494685, 1133052337,1133085726,
- 1133117899,1133167067,1133199426,366903780, 1133238035,1133287188,166133771, 1133477910,1133500181,328384531, 1133543462,1133559846,160546822, 1133576623,241942544,
- 1133608972,44285978, 1133631254,1133708024,3244520, 1133740972,1133811479,1133854751,1133871969,372850912, 135397402, 1133905065,121307174, 1133936669,308658198,
+ 1133117899,1133167067,1133199426,366903780, 1133238035,1133287188,166133771, 1133477910,1133500181,328384531, 1133543462,1133559846,160546822, 1133576623,241942544,
+ 1133608972,44285978, 1133631254,1133708024,3244520, 1133740972,1133811479,1133854751,1133871969,372850912, 135397402, 1133905065,121307174, 1133936669,308658198,
1133958936,1134270233,51019798, 1134362683,1134395414,1134415727,31391784, 1134478204,7095641, 1134526476,234176523, 1134542904,385466582, 1134576481,1134608430,
- 1134657582,31408130, 355043239, 1134706754,1134745370,515768422, 1134840553,1134952541,510314274, 1135004309,319143978, 1135050758,1135067164,1135083560,2261018,
+ 1134657582,31408130, 355043239, 1134706754,1134745370,515768422, 1134840553,1134952541,510314274, 1135004309,319143978, 1135050758,1135067164,1135083560,2261018,
132481478, 1135100009,112443411, 1135138587,7634973, 249987560, 1135215129,1135280181,1135312922,1135330833,712147376, 1135362585,1135427594,1135444000,1135478954,
1135542274,139984934, 1135564572,1135772992,1135804836,191070324, 4112500, 1135837221,1135855777,1135892253,1135968371,9535510, 19447845, 1135990558,1136050217,
- 254967830, 144146473, 1136072479,1136170784,1136296052,7700517, 1136312436,1136328719,1949724, 1136345109,1136361509,1136377972,1136394280,53854230, 151175284,
+ 254967830, 144146473, 1136072479,1136170784,1136296052,7700517, 1136312436,1136328719,1949724, 1136345109,1136361509,1136377972,1136394280,53854230, 151175284,
1136410666,1136427049,1136443449,53854250, 1136459892,1136482081,1136525851,17809524, 1136564002,1136629539,1136754956,573734953, 1136803881,641466425, 1136820252,
1026048015,1136836677,1136869398,1136887969,2133372, 886472720, 255459331, 1136918529,1136934919,10584199, 1136952530,1136984083,581697652, 580861973, 1137000490,
1137016874,1137034075,1137066843,66814811, 1137104676,1137301285,1137491979,1137508363,1137524738,1137541162,1137557526,75530242, 6701097, 45137951, 1137579814,
1137656240,1137694503,112935838, 1137737952,2359335, 1137776424,193250334, 1137836257,1137869726,1137901871,1137934393,111067167, 1137956649,572080138, 1138081861,
- 1138114570,1138136874,1138212890,2197662, 1138229267,17448981, 1138251563,1138278428,90521629, 1138294825,1138311194,1138327590,86081557, 48480372, 987086870,
+ 1138114570,1138136874,1138212890,2197662, 1138229267,17448981, 1138251563,1138278428,90521629, 1138294825,1138311194,1138327590,86081557, 48480372, 987086870,
1138343948,1138360342,1138380156,1138409588,1138425893,1138442693,1138477077,67469333, 1138513708,1138671642,1138688012,1138704395,1138720799,520372243, 1138739221,
1138769946,1138786346,1138802710,253624386, 1138825005,1138884634,1138901021,168820767, 1138922223,581697574, 1138966550,1138983046,1138999428,1139015702,1139032180,
1139048580,1139064967,27738246, 1139087150,48545802, 1139197012,1139245094,195690534, 48545808, 118210586, 1139261467,1139294218,1139310634,218611734, 1139326978,
1139343370,1009598493,1139359782,592445442, 1139382063,1139556373,1139572755,1139589139,1139607713,1139638388,63406116, 1139656025,1139689633,1139720629,1119502348,
59801621, 1139758896,1135902748,1139873585,1139916815,7585830, 1139933300,515506195, 435060777, 1136689194,1139949597,1139965993,1139982367,1140000972,1140031509,
7634966, 1140050106,1949715, 1140080680,1094959145,1140099233,1140129821,1140146292,1140163849,1140195338,1140211828,918454275, 17809449, 1140228203,1140263480,
- 1140293654,1140310798,581107722, 1140342826,570867733, 1140359190,1140375621,1140408377,1140425378,1140459724,1140490261,628244490, 1140512562,1140588583,467747068,
- 1140627251,1140692788,23380542, 635748392, 1140883522,1140916332,1140949295,1140982693,1141020469,1141080085,1141096486,1141112889,1141129237,1141145638,283967517,
+ 1140293654,1140310798,581107722, 1140342826,570867733, 1140359190,1140375621,1140408377,1140425378,1140459724,1140490261,628244490, 1140512562,1140588583,467747068,
+ 1140627251,1140692788,23380542, 635748392, 1140883522,1140916332,1140949295,1140982693,1141020469,1141080085,1141096486,1141112889,1141129237,1141145638,283967517,
717226005, 641794089, 1141162012,641466406, 1141528375,1141708600,1141785851,1141833794,1141867256,1141905209,1141981238,1142014489,1142079596,1142112294,1142128656,
835387418, 1142150970,1142228170,1142276577,1142325313,1142374419,520372246, 1142390868,1142423855,1142456421,350912524, 1142495035,1142685706,274350109, 1142702164,
- 1142734947,13074447, 1142767670,1142800395,825638924, 542326810, 1142816794,1142833206,782729258, 1142866599,1142898728,1142915522,1142948377,1143019324,821772304,
+ 1142734947,13074447, 1142767670,1142800395,825638924, 542326810, 1142816794,1142833206,782729258, 1142866599,1142898728,1142915522,1142948377,1143019324,821772304,
268959765, 1143064644,1143111699,48513046, 1143128607,1070104632,1143183127,170328301, 1143227826,37191846, 1143291944,1143308319,127631370, 1143330621,1006059551,
1143373867,1143408163,1143461694,1143587861,1143639161,1143752068,1143816202,140247103, 1143832586,119357492, 1143850984,1143898152,3244140, 45433056, 1143914562,
- 116375634, 1143947266,1143964702,1143996437,430718978, 1144012816,1144029194,112935307, 1144051519,1144100672,1144226710,1144280897,1144456564,1144504332,167985178,
+ 116375634, 1143947266,1143964702,1143996437,430718978, 1144012816,1144029194,112935307, 1144051519,1144100672,1144226710,1144280897,1144456564,1144504332,167985178,
1144523363,1144575810,1144717783,1144750383,1144788803,1144887108,1144964584,3538947, 1145018181,1145078297,2932792, 1145144188,149504029, 1145197751,1145344087,
1145389488,1145421845,1145438295,131334575, 1145487470,73187330, 1145521737,8391216, 1145602966,1145652298,37438972, 1145684034,207274000, 270942224, 1145722694,
1146061708,1146110391,1146143800,1146208318,1146257891,1146296135,61800580, 1146388546,1146425880,1146470430,233619522, 1146503234,1146535975,1087045638,1146574664,
@@ -2352,37 +2347,37 @@ static const unsigned int DictNodes[84251] =
112935966, 1149685243,49774597, 1149748212,1149802326,1149976595,1149994039,459980822, 44318736, 32849961, 1150025755,620281884, 1150060840,1150124058,1037467679,
1150146391,1150206799,1150241456,153747540, 1150287893,1150304272,48513034, 1150321099,1150369802,1150389150,331677999, 1150435338,124862932, 1150457688,1150518761,
1150566403,111280165, 1150588761,1150818138,47546409, 1150943261,1150959703,404045912, 1151010164,1151058025,48513062, 1151090754,1151129435,1151178588,1151287322,
- 1151303711,414023692, 1151321027,1151375197,1151467522,264716490, 1151489886,1151582210,121339915, 1151599757,603947467, 404051807, 759469920, 1151651323,138019275,
+ 1151303711,414023692, 1151321027,1151375197,1151467522,264716490, 1151489886,1151582210,121339915, 1151599757,603947467, 404051807, 759469920, 1151651323,138019275,
1151719265,1151895168,1151942694,158811220, 1151959099,1151991824,922370262, 1152009704,1152063330,1152172139,87539734, 1152205401,1152237634,131875116, 1152276323,
1152354676,1152417802,319143999, 1152434257,1152472932,1152614441,1152630810,247119938, 1152647199,1152663598,788430850, 36519978, 1152713131,1152745487,1152761871,
149930050, 1152779087,1152811018,114393119, 1152832306,134168632, 1152915301,177242117, 1085079573,476365234, 1153040898,1933319, 1153079142,1153155088,1153177447,
- 1153286160,8393563, 198721555, 1153308520,1153390441,159137829, 1153613845,1153630245,641794076, 1153647637,1153696033,303349772, 1153728544,1153763896,581468200,
+ 1153286160,8393563, 198721555, 1153308520,1153390441,159137829, 1153613845,1153630245,641794076, 1153647637,1153696033,303349772, 1153728544,1153763896,581468200,
883852321, 1153794164,1153810922,628637717, 1153859625,1153875987,1153892468,102858753, 1153909999,1153941532,1153957917,454180883, 1153974288,611647525, 1153996650,
- 377602084, 1154072605,766230556, 1154089076,581697565, 1154105350,1154121729,1154138154,1139867676,267681818, 1154157871,1154187274,21151785, 79937558, 7585807,
+ 377602084, 1154072605,766230556, 1154089076,581697565, 1154105350,1154121729,1154138154,1139867676,267681818, 1154157871,1154187274,21151785, 79937558, 7585807,
1154209643,1154269212,919748618, 1154285589,115458105, 1154301980,514015270, 1154324332,1154367545,1154383913,1154400278,21151765, 1154416678,1154433045,1154449445,
- 581697547, 1154465833,1154483902,918454313, 1154684782,1154990110,1155025126,1155075346,1155137644,1155176303,1155383599,1155422064,1155498005,1155514384,139329562,
+ 581697547, 1154465833,1154483902,918454313, 1154684782,1154990110,1155025126,1155075346,1155137644,1155176303,1155383599,1155422064,1155498005,1155514384,139329562,
1155531639,1155563574,361431106, 1155596294,292110651, 1155612688,1155629094,46219295, 1155646320,1155694645,1155728811,114098178, 1155782513,480445334, 1155880818,
1155943474,1035895219,1156011891,1156218978,1156251664,1156268876,1156317486,20365317, 1156350006,157499443, 1156388724,1156612333,500269072, 1156650869,1156726786,
412140199, 1156743252,1156776028,825327626, 1156808716,125927466, 1156831094,1156880247,1156973120,1157005377,1157060472,1157103638,77512706, 254591042, 1157120459,
1157170345,1157201936,1157218310,1157234699,1157251103,1157267477,1157283862,737771557, 1785885, 1157302935,1157388153,204537866, 56655883, 1157486458,1157666683,
- 1157742638,50266149, 1157793942,55263272, 1157846908,1157939222,1157957834,1158004764,291160080, 1158027133,1158283348,4751391, 1158316078,1158365222,507379766,
+ 1157742638,50266149, 1157793942,55263272, 1157846908,1157939222,1157957834,1158004764,291160080, 1158027133,1158283348,4751391, 1158316078,1158365222,507379766,
1158381578,1064420273,487360869, 1158398888,146653226, 182910978, 1158436734,1158545434,208011866, 1158561808,52445205, 303611920, 1158578207,1158594641,1158627380,
284918705, 1158666111,1158873579,824492969, 1158911872,1158977409,6373735, 1159023056,250937350, 1159075714,1159151675,1159184412,1159200806,1159217154,1159233542,
134021141, 1159255939,1159331899,1159365905,1159414235,1159452548,1159758837,1159823398,1159845765,1159894918,1159954458,99680272, 1159970921,1160004043,1160052773,
1160075143,8388876, 3309579, 1160167434,1160183814,48447503, 1160200279,1160249363,813875237, 617496592, 1160267557,268451866, 1160318500,1160369151,1160435592,
5308630, 1160511920,1160544689,1160577067,1092207069,1160610620,1160664969,1160746890,1160806412,2670630, 1160823087,1160855580,1160871995,1160904723,1160921100,
- 1160937478,1160953877,1058635788,1160970306,1161004041,1161041803,315588627, 1161150483,1161166874,1161183263,42434575, 1161205644,1161379859,1161396227,5603364,
+ 1160937478,1160953877,1058635788,1160970306,1161004041,1161041803,315588627, 1161150483,1161166874,1161183263,42434575, 1161205644,1161379859,1161396227,5603364,
1161416527,45432895, 472891751, 1161464585,1161510928,1161527322,1161543701,1161560095,537772051, 1161576460,879837200, 1161593278,1161658406,125321237, 1161675261,
1011957797,1161729149,1161805874,1161838895,262275094, 1161877389,466485264, 1161942926,1162002519,1162051694,1162084782,125026342, 1162139535,126599204, 1162199066,
1162215440,1162231829,344850444, 1162248624,565772317, 1162282449,1162334289,483164188, 1162379286,1162398849,148848655, 1162445239,1162483600,260460327, 1162614673,
- 56000543, 1162658552,728154122, 147013642, 1162691031,526368780, 1162729362,1162870919,1162887210,13303818, 1162909587,1163035657,1163068339,1163100172,142262298,
+ 56000543, 1162658552,728154122, 147013642, 1162691031,526368780, 1162729362,1162870919,1162887210,13303818, 1162909587,1163035657,1163068339,1163100172,142262298,
1163116575,1163132938,132857898, 1163149364,1163188116,1163231238,1163247668,273121387, 1163280396,1163299084,1163335573,1163411543,1163461541,1163493387,1163509776,
1163526150,1053147155,1163543016,1163581334,1163624486,1163640863,195264522, 1164105624,858325013, 1164154777,155926568, 1164285850,1164394562,345997324, 1164427283,
294633509, 406306832, 1164443667,1164460048,226951194, 1164476428,1164492810,226951197, 5341722, 1164515227,8390461, 1164613532,1164756514,1164804108,1164821394,
- 1164870594,1164904202,1165006749,1165082646,1165099020,1165115413,1165131797,1165148191,1165164559,1165180930,1165197350,377225218, 193708131, 1165214609,116375634,
- 1165262955,1165296148,67059717, 1165350814,739377647, 1165393961,164036614, 1165411144,1165508703,1165558788,287130654, 1165623352,1165656148,1165688913,498483960,
- 1165727647,1166071712,178126950, 1166170017,1166202786,8392164, 1166265455,1166311470,1166365286,1166412046,4292674, 1166459351,565231622, 1166497699,425361896,
- 1166624296,1166688277,322715670, 1166704666,1166721030,46448642, 1166743460,1166791903,1166869589,1166901340,1166934032,27852857, 1166951814,1167021989,108315119,
+ 1164870594,1164904202,1165006749,1165082646,1165099020,1165115413,1165131797,1165148191,1165164559,1165180930,1165197350,377225218, 193708131, 1165214609,116375634,
+ 1165262955,1165296148,67059717, 1165350814,739377647, 1165393961,164036614, 1165411144,1165508703,1165558788,287130654, 1165623352,1165656148,1165688913,498483960,
+ 1165727647,1166071712,178126950, 1166170017,1166202786,8392164, 1166265455,1166311470,1166365286,1166412046,4292674, 1166459351,565231622, 1166497699,425361896,
+ 1166624296,1166688277,322715670, 1166704666,1166721030,46448642, 1166743460,1166791903,1166869589,1166901340,1166934032,27852857, 1166951814,1167021989,108315119,
1050706599,1167065172,1167103910,47349775, 1167228930,1167245411,1167278146,2196084, 1167316903,6620271, 456523778, 1167458316,396771409, 1167477169,1167524272,
1167556664,1167589407,1167607233,1167639460,85115014, 1167693736,1167933858,758448165, 1167972265,407978415, 1168031837,1168085938,5325295, 1168147459,1168195643,
716260273, 1168234410,1168359851,1168392223,1168409207,469352500, 1168447403,850214971, 1168527156,112936281, 827260947, 1168607462,1168660396,1168807853,1168885081,
@@ -2392,9 +2387,9 @@ static const unsigned int DictNodes[84251] =
269189229, 1171243971,1171293959,896664631, 1171341742,1171396536,1171462073,1171522472,1171554759,1171603563,1171636300,2933834, 1171675066,1171785327,1171832863,
1171849248,1171882030,1171935768,1171981578,1172013058,280903711, 750665829, 182829115, 1172030793,1172078696,120045675, 1172133819,1172258857,44171270, 1172275231,
1172291638,1172324638,1172373963,52576287, 1172428732,763762621, 1172685736,1172717594,1172740030,1172815882,20365354, 10371098, 1172833103,1172865641,1172903871,
- 1173084096,1173144152,864256021, 307134470, 1173176623,1173215169,1173373442,45434247, 1173411439,7258155, 1173477314,657145887, 1173526467,1173618716,379093004,
+ 1173084096,1173144152,864256021, 307134470, 1173176623,1173215169,1173373442,45434247, 1173411439,7258155, 1173477314,657145887, 1173526467,1173618716,379093004,
157499871, 390515969, 1173635525,1173673924,655851722, 1173815342,294207514, 1173870533,1173962857,1173996280,1174028430,1174063680,441466906, 683933698, 1174116294,
- 1174345671,1174406930,1174454293,1174470682,541589520, 1174490511,1174552614,147063669, 1174569044,258097178, 1174604573,1174700792,1174733103,460407817, 2130791,
+ 1174345671,1174406930,1174454293,1174470682,541589520, 1174490511,1174552614,147063669, 1174569044,258097178, 1174604573,1174700792,1174733103,460407817, 2130791,
1174771656,1174849298,1174896678,1157908983,2129960, 48054282, 1174913083,1174947270,1174995704,45891610, 1175029111,1175110392,1175146982,1175191606,1175224799,
1175257134,1175306286,1175356501,1175388697,8392454, 1175453734,1175470139,1175506991,1175558089,1175781457,421429274, 1175820234,1176223753,1176240265,1176256671,
1176295371,1176360908,1176421999,560022025, 1176469588,1176506245,1176585216,163299375, 871219559, 1176617015,1176682534,1176698918,1176715348,1176748092,1176831381,
@@ -2403,18 +2398,18 @@ static const unsigned int DictNodes[84251] =
1177868241,1177917394,477938185, 1918121, 398426140, 1177995747,1178026891,1178092874,37437649, 17842305, 1178163155,1178245076,1178387033,3212194, 1178425301,
1178550363,132644901, 1178583265,1178616487,1178648602,1178664991,1178681350,335151126, 1178698761,6324226, 1178736598,1179047895,299794454, 109150683, 1179141682,
1179205723,1027620874,1179238403,1179254820,1179271599,1179310040,1179423441,1179517365,124862569, 45645890, 1179551842,1179598860,11124748, 398198940, 1179621337,
- 1179749035,78905350, 1179779099,1179817946,1179893827,1179975787,1180014555,191053834, 1180124072,1180155906,8394716, 166156253, 1180172354,1180205687,2195935,
+ 1179749035,78905350, 1179779099,1179817946,1179893827,1179975787,1180014555,191053834, 1180124072,1180155906,8394716, 166156253, 1180172354,1180205687,2195935,
1180238976,1180288030,1180325854,702661479, 1180437059,1180488054,2359312, 1180516418,1180550174,144097700, 1180587999,1104415070,1180647857,1180680650,1180719072,
1180991989,203571659, 1181026950,1181073945,2361819, 2130220, 1181139403,1181189439,1181259745,1181358050,1181419434,418055371, 8390745, 1181489123,1181568569,
124469332, 55754764, 1181630767,1181669348,176753126, 1181892630,68239905, 1181915109,737427472, 1785893, 1181976331,17842286, 254443530, 174064049, 1182062566,
1182122414,333496351, 1182177255,1182220591,865420474, 1182254135,1182285846,454099003, 1182308328,103284748, 1182516319,920190992, 1182580765,1182597122,1182613515,
- 1182629899,1182646284,119537690, 775176218, 1182662715,319619082, 1182695511,17809434, 1182745655,1182777366,1182793787,1182826534,2196929, 1182842934,333135915,
- 1182881769,865107990, 1183127530,1183220648,1183254496,203822169, 287145994, 1183307755,1183367267,1183400173,1183433547,269189249, 1183504364,17842653, 522977755,
+ 1182629899,1182646284,119537690, 775176218, 1182662715,319619082, 1182695511,17809434, 1182745655,1182777366,1182793787,1182826534,2196929, 1182842934,333135915,
+ 1182881769,865107990, 1183127530,1183220648,1183254496,203822169, 287145994, 1183307755,1183367267,1183400173,1183433547,269189249, 1183504364,17842653, 522977755,
1183586285,1183645708,94109707, 1183662092,1183679273,351911946, 1183712103,1183750126,1183842446,1183879264,1183930351,404325406, 1184022554,1184038951,1184072873,
- 1184104477,1184120891,1184153631,1137557510,1184171159,1184225264,306937866, 1184338466,828932106, 1184416174,1184471025,1184547870,7734801, 1184585714,150913062,
+ 1184104477,1184120891,1184153631,1137557510,1184171159,1184225264,306937866, 1184338466,828932106, 1184416174,1184471025,1184547870,7734801, 1184585714,150913062,
1184634867,1184694409,1184710791,51658883, 82280471, 1184957086,1185337506,1185367712,1185398803,150142998, 1185421302,1185563984,174047238, 1185612694,1185661021,
1185711134,1185742911,1185777683,1185825243,291160076, 1185863671,49905674, 1185961976,23380306, 1186088871,844137319, 1186123709,1186202071,5309786, 1186235880,
- 1186289657,1186486266,1186584571,1186676738,1186693228,1186725942,1186764796,5308846, 27624354, 1186879485,273088522, 1186956292,1187021933,237731850, 108320766,
+ 1186289657,1186486266,1186584571,1186676738,1186693228,1186725942,1186764796,5308846, 27624354, 1186879485,273088522, 1186956292,1187021933,237731850, 108320766,
1187054432,1187125247,153207306, 1187207168,1187299430,1187333558,131989525, 1196089, 1187387393,1187485698,1187561531,1126880869,1187595348,1187649539,1103026180,
1187846050,1187907389,2342931, 1187954754,1187988878,1188053074,120979931, 1188085791,1188102163,1188118571,1188152523,1188187703,165134358, 1188234820,1188304901,
1188648966,8390272, 1188726383,1188780039,24298010, 1189085230,1189134358,1189150751,1189167142,1189183517,5177370, 1189199874,1189218163,1189255176,1189331247,
@@ -2425,40 +2420,40 @@ static const unsigned int DictNodes[84251] =
835420176, 423444938, 1191483410,1191581715,1191647252,1191739824,1191772206,895090719, 1191827477,1191920141,71483402, 1191972363,1192083512,1192122390,1192247327,
258965546, 1192269847,885162036, 1192330216,137101344, 141459472, 1192378911,1192433688,1192509664,1192542274,1192574992,182059018, 880918946, 1192597529,1192755266,
3244091, 275480578, 1192788436,1192821182,1192887655,191906552, 1192952906,448544806, 139984912, 1193296002,13549605, 1193318427,1193444742,733894684, 1193515037,
- 324534284, 1193706703,1193777182,175800780, 1193859103,1194067356,1194115078,138575914, 1194134542,1194203168,206723105, 16941248, 1194691529,1194737666,3246566,
+ 324534284, 1193706703,1193777182,175800780, 1193859103,1194067356,1194115078,138575914, 1194134542,1194203168,206723105, 16941248, 1194691529,1194737666,3246566,
1194759925,1194842146,319143973, 1194902264,1194935186,1194983426,1195000032,1195032660,404638182, 1195071523,1195163735,1195216429,333135931, 1195262382,1195317284,
1180205098,1195360303,1195399205,1195460153,1195558933,1195589664,1195628582,1195707985,1195754511,1195803913,1195835446,227639298, 1195868969,1195907111,1195999469,
465846274, 1196033118,1196082270,1196130841,1196202024,427901807, 468320283, 1196262338,1196300329,1196349482,788284714, 366575642, 227495121, 1196491561,1196526701,
1196610550,1196671863,1196709931,1196851252,7258688, 1196884983,544556377, 1196951830,1197034745,1197080642,1197113410,1197152300,1197377068,1197408715,1197459065,
- 1197506619,136119326, 1197540361,719487060, 1197578285,1197655209,1197687307,1197742126,1197889583,27738148, 1197938736,1197998146,1198030953,1198063654,19267596,
- 1198080059,1198118961,194101250, 1198309468,1198342228,1198374952,111067146, 336838672, 1198392183,1198424148,1198456872,717340698, 1198768934,1198801806,25559096,
+ 1197506619,136119326, 1197540361,719487060, 1197578285,1197655209,1197687307,1197742126,1197889583,27738148, 1197938736,1197998146,1198030953,1198063654,19267596,
+ 1198080059,1198118961,194101250, 1198309468,1198342228,1198374952,111067146, 336838672, 1198392183,1198424148,1198456872,717340698, 1198768934,1198801806,25559096,
1198866911,44351526, 1198905395,1198987316,1199145041,27623478, 1199177740,1199194122,710705173, 1199216693,1170882562,1199325268,48627722, 1199358489,1199429686,
1199507081,1199609911,1199705965,8394405, 140788936, 1199773752,1199882345,1199915855,232079400, 460406836, 285081684, 1199947802,1199965574,385516544, 1200029698,
128106534, 1200046185,1200079712,1200150585,1200216122,1200363579,1200424326,1200489366,308576287, 1200537612,1200553986,48676879, 1200576572,1200635950,1200691261,
1200904254,1201013496,1201051711,1201094677,1201111124,1201144267,1201193574,1201230452,1201291351,342720552, 1201346624,1201520748,1201553410,5001872, 1201576001,
- 1201635865,1201701387,1201750062,1201800691,1201838146,1201914487,1201948038,1202013817,1202062173,1202096567,1202162089,1202193302,1202602040,1202640964,313786467,
+ 1201635865,1201701387,1201750062,1201800691,1201838146,1201914487,1201948038,1202013817,1202062173,1202096567,1202162089,1202193302,1202602040,1202640964,313786467,
1202717868,1202765934,1202799055,1202837573,460325908, 242466847, 1202919494,1203013862,1203065634,265814045, 1203110403,1168458223,2195525, 479461802, 1203165255,
1203230792,1203274638,1203340197,108658699, 1203378249,735724651, 1203492938,1203667247,1203700012,1203732536,794608604, 1203771467,1203851218,425771010, 1203913622,
1203963637,140477249, 27623490, 1204017228,1204192150,1204243645,88686594, 1204289967,134709286, 1204322350,1204371554,373325908, 1204410445,1204600844,1204617256,
- 1204633621,1204649990,1204666387,151093270, 1204684736,141787164, 6948505, 112935945, 1204765170,1204814283,1204863007,481820691, 1204879372,47317002, 611434533,
+ 1204633621,1204649990,1204666387,151093270, 1204684736,141787164, 6948505, 112935945, 1204765170,1204814283,1204863007,481820691, 1204879372,47317002, 611434533,
1204901966,1205010537,1205043240,848609292, 1205059630,1205109769,1205141533,271384607, 1091930463,1168623089,1205164111,1205272598,136118730, 1205288989,1205311568,
1205436442,465223692, 44171280, 1205452866,1205491793,1205534804,1205573714,1205649417,17432599, 437240841, 1205665858,1205699605,1205750749,1205803091,1205928537,
5342377, 1205961513,51609641, 1205994232,1206032468,1206310997,1206407576,1206491222,1206566978,1206599711,1206617721,19447837, 1206671447,1206747163,1206786136,
- 348931036, 1206867481,1206911017,1206929877,407979038, 1206966361,1207010753,1207048282,1207143389,1207195739,1207392348,1207500816,55853068, 490684475, 258637881,
+ 348931036, 1206867481,1206911017,1206929877,407979038, 1206966361,1207010753,1207048282,1207143389,1207195739,1207392348,1207500816,55853068, 490684475, 258637881,
1207519334,1207566767,1207605341,1207703646,1207762990,1207812106,472711209, 1207834719,501383178, 1207926850,1207965792,1208107039,150585775, 271925279, 1208123395,
1208139792,30392325, 1208157122,1208195169,1208254480,1208270874,2360226, 741212191, 1208289252,1208320303,1208359010,1208467478,1208483845,364642370, 1208503910,
1208533033,2539531, 1208549404,1208565762,32637065, 1208583475,1208631322,1208647925,1208696981,1208735843,1208909864,628981798, 1208927258,1208977569,1209009142,
1209040906,1209057302,1209073780,7634945, 1209092420,1209122826,1209139228,1209155626,79511668, 852115477, 1209172281,17449095, 1209210980,1209237561,1209253909,
1209270308,2195909, 1209286678,1209305656,1209339308,1209385001,1209401373,1209417844,1140047910,1209434154,1209450517,22331408, 581287957, 1209466890,1209483305,
- 115458088, 1209866342,1210089474,43532299, 1210106315,1210161255,1210204170,545767440, 1210222839,159432820, 4079618, 1210286120,1210302495,110723129, 27852815,
+ 115458088, 1209866342,1210089474,43532299, 1210106315,1210161255,1210204170,545767440, 1210222839,159432820, 4079618, 1210286120,1210302495,110723129, 27852815,
1210318886,539344912, 555270146, 1210335313,1210368031,1210384386,300548203, 186974318, 1210401071,1210433568,1210472552,1210620009,145440770, 142835752, 1210669162,
2195532, 3212129, 49774598, 1210712066,563347466, 126025750, 1210734699,1210826762,1210843624,1210877551,1210925068,191649900, 1210947693,1211040266,1211078766,
663601162, 1211140757,253935654, 1211187287,176488474, 1211236655,237731859, 864289382, 1211269547,1211301899,1211318274,257638438, 1211334704,1211390063,1211455600,
- 1211547714,140247905, 1211580442,1211596902,1211629871,1211662357,1211679320,1211711544,1211750513,1211809823,1211831727,121307162, 238714946, 1211881586,771359208,
+ 1211547714,140247905, 1211580442,1211596902,1211629871,1211662357,1211679320,1211711544,1211750513,1211809823,1211831727,121307162, 238714946, 1211881586,771359208,
1211973739,79970341, 1212012659,1212039180,1212056050,1212105667,1212153896,1212170250,1212186653,1212203485,1212236013,27623884, 1212274804,1212448827,1212483005,
- 621101095, 1212536949,88948742, 1212615120,1212662606,1212727767,1212760106,3686406, 1212776927,1212813833,1212864630,1212991331,131319091, 1213056030,115770191,
- 1213088219,1213120618,1213202634,1213239786,1213287296,185270298, 1213349928,1114119, 1213367187,1213421687,1213500950,1213582677,1213644826,1213661190,516833318,
- 1213677580,170442778, 1213694411,1213743211,1213775913,1213792702,1213864056,547619576, 1213923340,1213939814,1213972546,1214005780,1214054438,1214070795,899842895,
+ 621101095, 1212536949,88948742, 1212615120,1212662606,1212727767,1212760106,3686406, 1212776927,1212813833,1212864630,1212991331,131319091, 1213056030,115770191,
+ 1213088219,1213120618,1213202634,1213239786,1213287296,185270298, 1213349928,1114119, 1213367187,1213421687,1213500950,1213582677,1213644826,1213661190,516833318,
+ 1213677580,170442778, 1213694411,1213743211,1213775913,1213792702,1213864056,547619576, 1213923340,1213939814,1213972546,1214005780,1214054438,1214070795,899842895,
176472085, 1214093433,1214388346,1214447628,1214464026,756121621, 108331487, 1214481293,1214563230,1214601339,499007919, 1214748796,1214826095,8392160, 1214879869,
326615124, 1214929022,1215086638,1215135886,1215168552,3245006, 1215191167,1215266923,1215299590,4685845, 176750697, 1215315984,1215338624,1090846732,1215399081,
1215430666,560316503, 1215447577,1215516150,27852811, 1215600769,1215676470,1215713132,51495759, 1215764610,1215808488,1215856699,183189525, 1215894105,1215955028,
@@ -2466,15 +2461,15 @@ static const unsigned int DictNodes[84251] =
1216747655,1216921657,1216938000,394461203, 1216954374,1216970773,1216988112,1217019961,1217036304,1217052691,1217069058,152272934, 1217085466,1217101854,1217134651,
1217167819,1217216619,150913034, 170442764, 1217250944,1217304712,1217347610,354549762, 1217363970,1217380833,146456581, 1217435785,1217714314,1217796023,1217871882,
125927461, 1217888258,1217905833,1217937847,1217971983,790626306, 1218019430,8393711, 1218053194,1218084885,1218101274,252100620, 1218123915,233475201, 1218199841,
- 1218235086,1218353292,1218413796,1218467981,1218609607,19257486, 1218664591,1218713744,1218844190,1218921862,1218986010,1219002374,1219019246,1219057809,249266198,
+ 1218235086,1218353292,1218413796,1218467981,1218609607,19257486, 1218664591,1218713744,1218844190,1218921862,1218986010,1219002374,1219019246,1219057809,249266198,
1219123346,712149548, 1219399337,1219451027,1219544173,1219582100,1219609336,1219642259,157155382, 10652117, 1219690527,1219707331,233193494, 1219740952,1219808721,
1219854348,194084902, 1219872703,252330010, 1219971353,25559145, 1220040853,652378583, 1220100112,1220117087,1220155542,1220264783,1220297551,1220329510,1155286515,
1220345948,1220384919,762331162, 1220461770,1220510708,1220559902,1220592230,404636080, 1220624814,1220679832,1220974745,1221040282,299794438, 525238274, 1221116201,
- 1221149780,1221198689,1221230668,1221269659,1221346370,1221410868,886691996, 1221443683,1221476458,797442085, 208503729, 1221564573,858144770, 1221689346,29622308,
+ 1221149780,1221198689,1221230668,1221269659,1221346370,1221410868,886691996, 1221443683,1221476458,797442085, 208503729, 1221564573,858144770, 1221689346,29622308,
1221705794,1221744798,121028639, 1221923618,1221974175,1222072480,1222115330,8390037, 1222134038,1222214481,1222349760,1222399858,1222459935,1222514849,1222740397,
- 1222787112,2998282, 1222804502,1222853049,1217101890,1222901772,87539718, 1222924450,1223000095,128451020, 1223017758,1223065707,1223098398,1223131148,8394915,
+ 1222787112,2998282, 1222804502,1222853049,1217101890,1222901772,87539718, 1222924450,1223000095,128451020, 1223017758,1223065707,1223098398,1223131148,8394915,
1223152494,1223196684,1223213109,1223252132,1223294998,258768950, 1223311845,1223410572,1223465125,792281098, 1223541688,1223589914,55377931, 1223612452,1223655426,
- 189038614, 1223678118,712982538, 59785242, 1223886593,1223938569,115769400, 1223989415,1224022184,191053862, 1010583404,1224133389,1224196184,225181706, 131876885,
+ 189038614, 1223678118,712982538, 59785242, 1223886593,1223938569,115769400, 1223989415,1224022184,191053862, 1010583404,1224133389,1224196184,225181706, 131876885,
1224228931,1224310843,1224343578,123273242, 1224366249,1224480938,1224573416,1224607280,1224638506,7307380, 44941333, 44941334, 385564712, 1224654858,1224673421,
1224720468,1224753190,1224770454,1224820747,1224884246,17007399, 1224902998,712589322, 1224949800,2261129, 1206616067,1224966658,1224998943,2130012, 1225016329,
1225050051,1225097254,1225113611,1225129991,1225146396,1225162764,969687045, 1225185451,1225375780,1225392149,1225408521,1225424922,44908586, 1225446233,1225507430,
@@ -2488,7 +2483,7 @@ static const unsigned int DictNodes[84251] =
802848780, 109215770, 1229373524,1229406267,171000279, 1229440200,516833306, 1229478074,1229602892,1229635615,1229652192,1229686564,1229734423,154403291, 1229766695,
1229799471,617922606, 1229832220,737427496, 1229848578,1229864986,1229881375,246087691, 1229904059,1229997032,1230051516,1230117053,1753104, 1230176268,1230192650,
147013661, 1230215358,1230389330,1230422062,1230477503,3229362, 1230573179,414580748, 1230624960,1230701768,1230733324,343294970, 1230749755,1933348, 1230782958,
- 125927439, 1230821569,1231100098,55033862, 1231192601,1231263939,1231323243,1231357485,1231411396,1231476933,1231552538,1231568898,957136907, 1231591622,131842155,
+ 125927439, 1230821569,1231100098,55033862, 1231192601,1231263939,1231323243,1231357485,1231411396,1231476933,1231552538,1231568898,957136907, 1231591622,131842155,
44466198, 1231634478,1231689927,1231755464,1231783796,1231815503,1231847470,1231902921,1232076837,349716492, 407536649, 1232093196,3212024, 1232109584,1232132298,
1232175142,389365776, 1232191510,1232207903,1232224294,247529548, 1232240666,52330518, 1232261610,1232306228,1232338971,1232371718,1232388148,1232427211,1232525516,
1232617531,1232652066,310640677, 1232686114,1232748642,310640677, 521830466, 1232781371,55033882, 1232820429,1233082574,1233158160,235438187, 7094311, 1233180879,
@@ -2497,10 +2492,10 @@ static const unsigned int DictNodes[84251] =
1234290383,533135362, 1234321420,1207517294,1234344148,1234534459,154796968, 1234572297,109052141, 1234619233,1234685878,456067230, 1234748616,414236688, 1234786517,
1234862913,3244140, 1234896849,1072857154,1234944314,1234983126,1235173518,1235206236,1235238924,1090732038,112607341, 270942239, 1235255910,1235294423,1235356244,
1235402818,1235441880,56164371, 291225659, 1235491033,1235583019,738639909, 1235616891,1235648815,1235687642,1235818715,1235900636,1236008971,152027167, 1236025647,
- 478954526, 1236058155,1236094813,1236146397,1236500503,9961495, 1236523230,192872470, 50659359, 1236683978,1236746266,1236768991,1236829384,1236860930,3244570,
+ 478954526, 1236058155,1236094813,1236146397,1236500503,9961495, 1236523230,192872470, 50659359, 1236683978,1236746266,1236768991,1236829384,1236860930,3244570,
1236878159,433831962, 1236910538,1236943873,1236992537,1237058713,1237106940,1237145824,1237288698,198721558, 1237319696,5177349, 1237342433,32849939, 1237532703,
- 1237550290,164036620, 1237581908,1237614658,4310219, 1237647502,1237680194,1237719266,1237876776,291094610, 1237894596,1237925914,1237942282,731709442, 163643446,
- 1237965027,1238194404,271925251, 1238325477,996638760, 271384604, 1238472934,469123112, 421970346, 1238646868,1238685927,1238782425,1238863844,1238908947,209191403,
+ 1237550290,164036620, 1237581908,1237614658,4310219, 1237647502,1237680194,1237719266,1237876776,291094610, 1237894596,1237925914,1237942282,731709442, 163643446,
+ 1237965027,1238194404,271925251, 1238325477,996638760, 271384604, 1238472934,469123112, 421970346, 1238646868,1238685927,1238782425,1238863844,1238908947,209191403,
1238925333,1238942922,1238992603,1239023647,1239040010,1239056468,1239089173,1239105623,1239154730,204570636, 1239171979,1239238192,1239269397,1239285819,1239324904,
1239416891,1239449610,522387495, 126042124, 1239472361,466485279, 1239547930,181257804, 1239570666,1239636203,1239696478,6619224, 1239745376,194069002, 1239812117,
1239842903,1239892882,196952090, 1239941550,7094801, 1239996652,1240291565,299008040, 1240449026,1240466929,1240498260,2196321, 72368130, 1240537326,1240645642,
@@ -2510,102 +2505,102 @@ static const unsigned int DictNodes[84251] =
1242515395,935166044, 1242562653,1242613699,1242667251,371311352, 1242794311,244908044, 1242841547,55132189, 1242896628,1242988582,1243004940,29900837, 1243021342,
1243054222,1208532994,1243086858,1243103234,457539599, 1243119919,1243535606,528777519, 1243693058,108314726, 1243711026,389136475, 1243776075,1243846903,1244202106,
1244270702,1244319277,1244364802,335446057, 1244381225,247234601, 1244398035,1244450176,111624232, 1244502264,1244561550,1244594191,664044618, 1244610626,1244643354,
- 1244659731,1244676118,1244692511,300777484, 1244710278,1244777911,1244879097,1244939049,1244971467,1245026554,1245134870,1245151272,469614603, 1245167700,3213164,
- 1245203293,1245233164,800244757, 1245249566,409944090, 1245282335,1245298709,1245315560,110232138, 1245347921,1245387003,1245544507,1245579955,57032730, 404046711,
+ 1244659731,1244676118,1244692511,300777484, 1244710278,1244777911,1244879097,1244939049,1244971467,1245026554,1245134870,1245151272,469614603, 1245167700,3213164,
+ 1245203293,1245233164,800244757, 1245249566,409944090, 1245282335,1245298709,1245315560,110232138, 1245347921,1245387003,1245544507,1245579955,57032730, 404046711,
1245616380,1245790968,388120800, 1245823878,889274434, 1245855746,1245872235,1245911293,240583592, 1246003729,1246042366,1246152664,1155957211,1246217155,1246265450,
1246353108,1246451967,992117583, 1246593426,1246664960,1246796033,2130454, 1246872918,5324900, 1246927106,1247019010,159449195, 1247036745,1247085768,1247123715,
1247347998,1247395866,423346627, 288768600, 1247415043,1247494603,115606679, 1247544968,20365328, 1247592514,1247631620,1247756372,1247789061,96419842, 1247805531,
- 159137814, 836517890, 1247844613,1247887426,1247920174,116883499, 1247969965,27607078, 1248024838,110248046, 1248198658,1248215043,1248231426,136921114, 280035394,
+ 159137814, 836517890, 1247844613,1247887426,1247920174,116883499, 1247969965,27607078, 1248024838,110248046, 1248198658,1248215043,1248231426,136921114, 280035394,
1248247862,1248286983,1248346134,1248362522,1248378896,47611915, 1248395290,1248411664,156434472, 1248432729,1248493661,1248549128,1248626036,1248680201,1249018046,
- 34701461, 1249083476,1249117007,1249148938,1249165318,6029333, 1249188106,1249597708,1249789427,1249821111,1249853539,131269455, 251822305, 8389526, 116277254,
- 1249892621,1250004627,1250052931,609714178, 1250118409,476020799, 1250171150,1250236687,1250345411,1250380425,1250448677,1250498832,131858953, 1250607106,13549594,
- 910163980, 1250623541,1250662673,1251039506,1251147860,1251181727,1251219731,1251268884,24298329, 1251328809,1251367189,1251512274,1251575070,1251622933,27624386,
+ 34701461, 1249083476,1249117007,1249148938,1249165318,6029333, 1249188106,1249597708,1249789427,1249821111,1249853539,131269455, 251822305, 8389526, 116277254,
+ 1249892621,1250004627,1250052931,609714178, 1250118409,476020799, 1250171150,1250236687,1250345411,1250380425,1250448677,1250498832,131858953, 1250607106,13549594,
+ 910163980, 1250623541,1250662673,1251039506,1251147860,1251181727,1251219731,1251268884,24298329, 1251328809,1251367189,1251512274,1251575070,1251622933,27624386,
1251640606,1251688532,1251721275,1251760406,935166094, 1251837674,1251902327,1251934640,1251966986,434405388, 1251983372,1252004123,1252049743,1252083244,1252115032,
1252147737,2130021, 7144651, 1252213166,1252261986,144424972, 1252295670,1252327516,1252366615,1252507674,829308930, 2834537, 564232246, 1252530456,1252612377,
1252687971,1252720686,103546882, 177346842, 1252776219,1252966685,166346754, 134627330, 1252999210,50086315, 1253017927,1253064723,1253081110,529022978, 1253097709,
594214931, 1253136668,1253265620,870334490, 1253326860,1253345233,1253392400,3719256, 351010826, 1253409071,1253442461,1253529885,1253621800,125812767, 1253644574,
2195612, 1253803017,1253834794,110182827, 1253857567,1253939488,1254049701,1254129674,1254152481,1254201634,1254326311,639500393, 1254359354,1254391892,1254428940,
386357539, 1254544732,191184902, 1254621190,307233613, 1254644004,1254703133,137363851, 1254719544,575733800, 1254758693,1254803528,687013926, 1254932573,1254982066,
- 1255014416,1255030822,67043366, 1255048131,1255096622,1255129576,1255161875,1255178262,1255194640,1255211034,123404317, 1255227498,1255315750,1255391319,84721670,
- 1255443675,1255538793,1255577895,1255735370,1255801775,1255866410,1255883041,1255921960,1256015893,1149749406,1256053033,1256167722,1256308820,1256341520,490340373,
+ 1255014416,1255030822,67043366, 1255048131,1255096622,1255129576,1255161875,1255178262,1255194640,1255211034,123404317, 1255227498,1255315750,1255391319,84721670,
+ 1255443675,1255538793,1255577895,1255735370,1255801775,1255866410,1255883041,1255921960,1256015893,1149749406,1256053033,1256167722,1256308820,1256341520,490340373,
1256364331,1256462636,2197209, 1256570939,1256603658,2621482, 896532564, 1256626477,1256986926,22888460, 994247503, 1257062430,1257095252,1257131708,1257182205,
805421098, 1257242678,1257275838,3736921, 1257347375,1257439248,99516432, 1257455659,241238026, 1257488396,1257511216,1257573077,1257620339,155631626, 1257707825,
1257822514,1257898015,159383594, 1257914434,1257948480,1257986355,1258068276,1258143809,1258194782,1258258514,1258296546,1258356757,1258379573,899979574, 1258461495,
1258538516,199213078, 1258586649,1258652079,1258690872,1258980489,2621442, 1259029432,1259078887,1259126800,2539560, 1259144916,1259192346,45056040, 1259215161,
- 1259313466,1259372781,565920591, 1259411771,477282316, 1259470901,1259510076,1259620709,1259668411,232292383, 1259736368,1259782286,1259815426,1259847711,207195279,
+ 1259313466,1259372781,565920591, 1259411771,477282316, 1259470901,1259510076,1259620709,1259668411,232292383, 1259736368,1259782286,1259815426,1259847711,207195279,
1259864601,1259936061,1259995193,42598454, 1260012057,1260083518,32849932, 372835531, 1260143439,2327335, 1260177403,1260275824,1785972, 1260358733,1260427583,
- 1260536916,1260591424,1260640577,1260717625,1260815244,1260864884,1260919106,1261164867,1261256726,1261279556,1261361477,1261437976,1261492550,1261617178,122732556,
+ 1260536916,1260591424,1260640577,1260717625,1260815244,1260864884,1260919106,1261164867,1261256726,1261279556,1261361477,1261437976,1261492550,1261617178,122732556,
7290916, 1261640007,1261715472,1261738312,1261781292,137904154, 1261815432,583548940, 1261863010,7094575, 1261895746,304989740, 1261934921,1261977612,1261993999,
2293766, 1262016842,1262147915,1262192907,1262239783,1262272524,592380003, 2146411, 1262288955,1262322718,1262354460,1262370892,1262404063,1262442828,1262717380,
- 1262780428,1262796810,1262813200,1262829574,1262845954,52543528, 1262862443,1148944390,1025296703,1262901581,1262977443,1263011114,1263059798,2130378, 1900603,
+ 1262780428,1262796810,1262813200,1262829574,1262845954,52543528, 1262862443,1148944390,1025296703,1262901581,1262977443,1263011114,1263059798,2130378, 1900603,
1263114574,1263222843,282771477, 1263255979,1263291763,1263353858,1263370262,1263386634,126435350, 1263403639,1263435816,1263452186,1263468555,472711209, 1263486281,
- 108315303, 1263540559,1918267, 1263747094,382730271, 1263763515,1263796283,1263829046,1263865036,1263928968,1263982928,1264125316,5311644, 1264195921,127500328,
+ 108315303, 1263540559,1918267, 1263747094,382730271, 1263763515,1263796283,1263829046,1263865036,1263928968,1263982928,1264125316,5311644, 1264195921,127500328,
1264343378,1264408915,1264474452,1264616271,1264648218,1264664605,22888453, 1264680962,235439134, 1264697365,1264715910,1264769365,1264862120,1264893983,1264912817,
1264960064,17449000, 1264998742,1265222441,1265260887,1265310040,109052009, 1265375577,1265516560,11075626, 1265538031,1265598474,1265621338,110182484, 1265670491,
1265763151,1224015908,1265796487,1265827932,151715866, 1265867100,1265916253,1266211166,43237416, 1266304276,242647071, 1266352171,372818680, 1266384988,1266424159,
169330036, 27852837, 1266517762,1266581741,1266614359,886687460, 138235183, 1266663470,1266715053,3244467, 1266762635,1234894947,1266827330,162971677, 1266866224,
1266925634,1266959532,1267007918,1267056732,46694438, 1267095904,1267253355,1267286894,1267354291,1267387914,1267456353,1267646507,444792863, 1108901990,1267679298,
1267718498,3228262, 399179778, 1267800419,1267875867,259129356, 1267915108,1268007047,1268023430,1268039690,1268056069,1268072563,1268088861,1268105348,1268121612,
- 1268138115,1268154425,1268170780,2195769, 317839718, 1753094, 1268652391,1268908044,46120986, 132268048, 1268930920,658620435, 1269235777,1269284874,554615204,
+ 1268138115,1268154425,1268170780,2195769, 317839718, 1753094, 1268652391,1268908044,46120986, 132268048, 1268930920,658620435, 1269235777,1269284874,554615204,
1269301332,987643930, 318783519, 1269334056,1269350410,293601301, 1269366794,1269383210,1269401098,1269448810,1269530726,24838159, 152945156, 1269564761,1269596591,
1269629387,1269678551,1269710854,1269727253,987643930, 1269744117,1269776424,1269792770,638271514, 1269809239,1269864809,7634946, 1269941071,993460527, 1269974323,
1270022575,141787148, 1270054971,458490889, 1270094186,1270153273,46120991, 1270176107,1270300694,1270323564,1270382673,266766601, 1270420830,1270487405,1270628404,
1270666545,1270733166,1270940958,1270988854,646184962, 1271021627,1271060847,1106018330,1271103510,1054900250,1271119956,1062273050,1271152748,1271185474,1271224688,
1271355761,1271480622,379110007, 1271513195,1271552370,1271710175,52133900, 1271742548,1271778484,1271857666,1271896435,1271957888,1272022345,333136406, 1272076660,
- 813514764, 1272158581,1272287262,1272332300,1272348693,458211350, 1272365102,1272418203,1272496134,1272512533,308658202, 1272531540,1272578966,1272627737,4472939,
+ 813514764, 1272158581,1272287262,1272332300,1272348693,458211350, 1272365102,1272418203,1272496134,1272512533,308658202, 1272531540,1272578966,1272627737,4472939,
1272692765,218415116, 1272715638,1272873935,1272928631,1273041915,405405718, 1273086045,1273135129,343294867, 1273168330,1273207160,1273234039,1273266606,1273321849,
- 1273596285,1273675788,1273692166,301351799, 1273715066,1273774164,1273812480,1273878907,282853392, 58409019, 155648016, 402309135, 1273973852,1274019842,188252175,
+ 1273596285,1273675788,1273692166,301351799, 1273715066,1273774164,1273812480,1273878907,282853392, 58409019, 155648016, 402309135, 1273973852,1274019842,188252175,
1274036233,61358090, 1274053133,924696578, 1274101772,182566918, 1274118154,1274135208,1274167730,1274200095,1274222972,1274282598,1274321277,1274546398,1274595131,
1274648958,6029350, 196771850, 48136223, 7094705, 1274780031,2195483, 1274861952,1274938104,1274972364,1275009409,117506107, 1275068482,68256662, 1275107714,
174456939, 1275297851,1275337091,1275412564,953991178, 1275446173,487768535, 7734281, 1275528108,1275599236,1275692926,1275723788,1275740182,1275756556,1275772950,
2621452, 1275795845,1276068441,365052664, 889307627, 1276107142,1276297242,6717452, 1276320135,1276428314,1276444738,1076936732,257409026, 1276481820,1276526604,
- 46448666, 1276549512,1276631433,431636506, 1276675081,170803282, 1276708211,1276739605,1276756020,299008002, 1276791310,1236041759,1276844426,1276919834,957399277,
+ 46448666, 1276549512,1276631433,431636506, 1276675081,170803282, 1276708211,1276739605,1276756020,299008002, 1276791310,1236041759,1276844426,1276919834,957399277,
1276936202,1276952618,1015562356,1276975499,1277083743,1277133255,55754794, 1277182966,1277214746,1003929709,214335519, 1277232717,1277280282,1277296671,1277313034,
52215850, 1277335948,5865553, 1277565325,1277673474,1277689882,55754773, 1277712782,1277805506,1277841457,1277886495,1277903479,319143958, 1277935619,1277952045,
1277991311,1278066781,1278122384,1278199374,1278253457,1278410768,434716698, 1278433682,1278509068,48676890, 830718011, 1278531987,1278706189,1278761364,1278853132,
1278869533,258637853, 1278885890,29376522, 1278904350,1278951426,1278967864,1934177, 1279345585,137101419, 1279378920,1279426596,1279442950,1279459349,1279475728,
1279492138,834175002, 1279515030,1279574123,505380892, 1279606886,1279643035,1279711639,1279770731,1279805218,1279836170,471547910, 1279852610,1279885943,1279918989,
1280003283,1280050792,1280121240,120733706, 1280262190,6373481, 1280312626,1280360450,1818643, 1280383385,1280426068,1280465306,6373898, 1280754783,1280820641,
- 1280868459,19841026, 844138965, 1280906223,1280968463,538052962, 203325455, 1281015824,1281033715,1281071515,1281146943,1281179720,1281251740,1281524115,8395165,
- 1281572895,27328533, 1281589294,1982480, 1281638422,357793804, 1281654838,648691738, 1281687855,184582175, 92749836, 1281726878,1281785858,109215749, 240944520,
+ 1280868459,19841026, 844138965, 1280906223,1280968463,538052962, 203325455, 1281015824,1281033715,1281071515,1281146943,1281179720,1281251740,1281524115,8395165,
+ 1281572895,27328533, 1281589294,1982480, 1281638422,357793804, 1281654838,648691738, 1281687855,184582175, 92749836, 1281726878,1281785858,109215749, 240944520,
828604482, 1281802299,1281837032,1281890719,333201434, 1282082752,1282165415,323749361, 1245544507,1282212758,1282261821,1282326540,1282342944,45645932, 1282382240,
1282431393,242466828, 1282588738,1282621450,471547910, 1282637890,1282670651,37176116, 1282709922,1282805481,1282867210,1282885137,1282920956,1282966835,1283021219,
1283081110,1283132200,1283194911,19257764, 1283211723,1283266981,1283459223,220599415, 1283507023,1283545510,1283588112,821690399, 1283608036,1283655279,1283709351,
119359974, 1283824040,1283900351,1283936310,1283984126,1284014102,1284030476,1284046874,1284063298,1284096087,1284151721,414991705, 1284194763,1284243512,1284282794,
1284391592,4751362, 412139628, 1284426032,1284472874,1284493366,1284544939,723746847, 225427492, 529137686, 1284636698,1284653078,1284669524,1284702250,1284718658,
1284757932,467747576, 289046549, 1284850096,204259347, 1284889005,1284954542,1285282223,150913053, 1285378003,1285423149,1285462448,1285555556,1285623994,1285685267,
- 1285701669,109166598, 2129926, 1285718616,412008464, 193871882, 1285750890,1285839281,1285898735,364314929, 233474204, 1058669568,1285937586,348635138, 285344215,
+ 1285701669,109166598, 2129926, 1285718616,412008464, 193871882, 1285750890,1285839281,1285898735,364314929, 233474204, 1058669568,1285937586,348635138, 285344215,
1286085043,8389783, 1286166964,1286242346,1286265269,1286309438,1286378096,1286438918,1286455327,1286471692,46448681, 1286489478,5177359, 1286553706,1286635971,
1286674870,1286815756,1286832154,306446787, 1286849033,190366658, 1286887863,1286980951,341868546, 1287028778,1287046245,1287095190,119817307, 1287150008,1287248313,
318095381, 1287307304,203128844, 1287330234,122126612, 1287407571,1287520278,1287537216,300581741, 188105758, 1287569495,1287625147,54411283, 380715089, 1287788988,
- 1287979090,1288012623,131842679, 1288044563,1288061890,1288093698,1288110092,110100486, 626540546, 1288129408,1288192469,119357548, 1288241455,1288273941,398753814,
+ 1287979090,1288012623,131842679, 1288044563,1288061890,1288093698,1288110092,110100486, 626540546, 1288129408,1288192469,119357548, 1288241455,1288273941,398753814,
1288290344,1288306700,757891083, 1288690109,1288814630,1288831042,481526615, 1288863782,721780802, 1288880157,1288900024,3230015, 1288964031,1289066942,1289127307,
1289175463,1289230783,1289324017,1289355280,1289371674,1289389679,1289437222,1289454007,187236374, 1289492928,1289551910,1289568715,1289617418,10829836, 1289640385,
1289755074,1818665, 1289961775,1289994529,173441895, 10650793, 1290027096,149128499, 1290061051,47710249, 1290108987,1290141750,1290174559,1290223642,1290240046,
4293495, 1290295747,1290387458,1290404734,1290442373,1290518621,538329114, 117751824, 1290567701,1290584090,900677648, 1290600535,1290651184,1290682799,1290720980,
- 1290814667,1290852804,1010582492,1290962585,1291010070,1291026458,1291042832,1291059229,798375967, 1291082181,1291175739,1291225008,965787679, 1291259298,149127627,
- 1291355019,1291420119,1291452871,1291508166,1291616770,1291650189,1291700516,25561085, 769720336, 1291764905,1052066016,1291803079,1291960407,1292012297,1982475,
+ 1290814667,1290852804,1010582492,1290962585,1291010070,1291026458,1291042832,1291059229,798375967, 1291082181,1291175739,1291225008,965787679, 1291259298,149127627,
+ 1291355019,1291420119,1291452871,1291508166,1291616770,1291650189,1291700516,25561085, 769720336, 1291764905,1052066016,1291803079,1291960407,1292012297,1982475,
1292058676,2201598, 1292093531,473251852, 1292157152,133939257, 1292189734,1289469958,1292212680,1292387212,354893853, 467238928, 1292438275,1292523977,1292648490,
- 1292665878,241352706, 654018832, 1292720586,1292861462,1292877883,1247429368,340281830, 1292917195,1293046150,508723779, 1917033, 1293090832,379505204, 275447824,
+ 1292665878,241352706, 654018832, 1292720586,1292861462,1292877883,1247429368,340281830, 1292917195,1293046150,508723779, 1917033, 1293090832,379505204, 275447824,
1293107216,1293123641,1293139999,7733879, 1293156436,1293195724,1293353053,1293402124,2130729, 1293418538,1293434892,1293451274,1293467676,290996240, 1293490637,
318427686, 1293549655,3244130, 1293598807,1293654478,1293746206,1293781717,1293828112,1293844537,1293860895,1293877258,110231855, 125796383, 1293900239,1294107224,
240583232, 471547942, 1294140279,1294172162,1294188600,1294221324,1294238811,2196680, 1294270551,8395177, 1294319652,1294336002,142245899, 1294352396,1294368875,
1294401612,1294436630,1294520117,1294604752,1294712851,47448086, 1294729237,1294745622,50266114, 1294764720,425082946, 1294811182,1294860314,418170241, 1294876691,
- 911786006, 1294899665,1295089686,1295106161,1295155226,1295171600,1295194578,1295302692,5767187, 1295320476,1295368204,1295384586,1080328204,1295400982,127680548,
+ 911786006, 1294899665,1295089686,1295106161,1295155226,1295171600,1295194578,1295302692,5767187, 1295320476,1295368204,1295384586,1080328204,1295400982,127680548,
1295417356,399081479, 197296154, 278118436, 1295434161,1295466512,3217406, 1295482906,1295500197,48136208, 663896066, 202752302, 1295538643,1295630807,1295665652,
- 179994666, 1144455249,1295718868,1295941642,1295958058,1295974457,287211551, 333431385, 1295992800,1296040407,1296079317,478543894, 1296171018,1296187429,152256569,
+ 179994666, 1144455249,1295718868,1295941642,1295958058,1295974457,287211551, 333431385, 1295992800,1296040407,1296079317,478543894, 1296171018,1296187429,152256569,
1007337517,1066336287,1296210390,1296304081,1296351259,119357961, 1296384045,117506895, 1296423383,4292690, 1296570672,177061944, 451313730, 1296635005,1296718296,
- 1296809996,1296826387,174227487, 1296842790,823885864, 1296859228,1296891906,84738086, 361431124, 1296914905,1297170574,1297209818,1297301602,1297335326,869875738,
+ 1296809996,1296826387,174227487, 1296842790,823885864, 1296859228,1296891906,84738086, 361431124, 1296914905,1297170574,1297209818,1297301602,1297335326,869875738,
379110956, 1297368362,1297416429,54296592, 1297448991,4998489, 1297465398,1297498591,1297532896,825327622, 1297580116,109052362, 1297614607,936525861, 1297668571,
1297795930,1297858585,1297891356,1297907727,66682918, 1297926348,1026048057,1297958074,1297989748,151765030, 1298008632,1298038825,1298055178,17924108, 1298071661,
1298104349,1298120745,1022541834,53706780, 1298137109,102858762, 1298153494,1298169878,1298187983,1298220751,66815695, 1298651612,55033868, 866910210, 1298700765,
1298826825,1298907231,1298956344,1298989086,1299021880,1299055022,597770261, 1299104239,3686422, 1299143134,1299218491,1299257823,1299385365,1299464998,1299496976,
617447445, 1299513360,4177936, 1299530271,1299579913,1299612542,1299644432,185417749, 1299660828,1299677200,1299693589,1299711176,1299742786,1299782112,1299464220,
1299864033,1299978722,1300037698,1300077027,1300154220,1300185128,664289504, 1300201709,309493770, 1300240868,658112524, 233242690, 6701066, 1300430900,1300465155,
- 1300547372,1300594707,1300611094,1300628504,1300676624,1300693030,45646271, 1300712540,1300758566,1300774948,1300791311,128745494, 1300808107,200736794, 191906081,
+ 1300547372,1300594707,1300611094,1300628504,1300676624,1300693030,45646271, 1300712540,1300758566,1300774948,1300791311,128745494, 1300808107,200736794, 191906081,
1126630897,1300847077,1301037527,1266319382,257655702, 1301070749,1301151754,1301169954,1301200906,1301219106,1301250064,1301266453,1301284040,1301322214,1301581002,
512411123, 754238287, 1301643295,1301664340,273924136, 1301709246,1301774346,704151581, 1301797351,1301839894,1301856277,1301873532,1301921846,1301961192,1302026729,
- 1058455583,137101850, 249266198, 1302118830,1302167588,501303312, 1302183946,1299611676,1302200386,1302233521,1302265882,7733332, 1302284856,1302315020,9371666,
+ 1058455583,137101850, 249266198, 1302118830,1302167588,501303312, 1302183946,1299611676,1302200386,1302233521,1302265882,7733332, 1302284856,1302315020,9371666,
1302336552,1302403562,1302446117,442744898, 1302463143,140253675, 1302495671,1302528012,113754127, 1302548335,1210679322,261131072, 309362744, 1302616556,1302925291,
1303003568,1303037096,944325441, 1303091693,456343574, 1303206382,117885510, 1303314472,513179674, 1303337455,1303412762,1303429122,134152202, 1303445506,1033224218,
1303462341,694566938, 365052937, 1303494722,597235372, 1303527490,45647377, 1303560204,1303583216,1303642154,1303658498,277725220, 755253260, 1303681521,1303927282,
@@ -2613,51 +2608,51 @@ static const unsigned int DictNodes[84251] =
1304353268,1304433870,1304477712,93978650, 292519962, 1304494134,1304531710,1000849450,1304608799,48627754, 1304631797,1304756240,1304772623,554632266, 1304789451,
117424185, 1304844790,1304952939,1304985625,896532564, 1305025015,1305149468,1305165836,367443999, 1305182220,1305198618,266731526, 1305215035,1305254392,1305380347,
1305427970,310050852, 1305451001,1305544352,102858754, 1305575532,1305609633,1305657382,1305680378,1305740170,48480268, 1305778683,1306040828,1306120147,1306171901,
- 1306198054,1306230815,731037737, 1306247273,1306286590,1306477663,1306547955,1306656834,36306955, 1306689538,144441451, 1306705960,1306722306,99696666, 128057346,
- 1306741967,1306790309,747356181, 1306843647,154665392, 1306958336,1307038698,8393328, 1307099195,1307132011,1307171329,1307230224,19267590, 1307246613,184320026,
- 1307263007,1307279379,554991638, 1307302402,1307396812,1307476490,1307515395,109215756, 1203159085,1307564548,1307688976,1307705359,199491882, 1307721766,50937887,
+ 1306198054,1306230815,731037737, 1306247273,1306286590,1306477663,1306547955,1306656834,36306955, 1306689538,144441451, 1306705960,1306722306,99696666, 128057346,
+ 1306741967,1306790309,747356181, 1306843647,154665392, 1306958336,1307038698,8393328, 1307099195,1307132011,1307171329,1307230224,19267590, 1307246613,184320026,
+ 1307263007,1307279379,554991638, 1307302402,1307396812,1307476490,1307515395,109215756, 1203159085,1307564548,1307688976,1307705359,199491882, 1307721766,50937887,
1307741305,1307852826,1307869203,481526360, 1307889392,1307967494,1307983893,1308000322,655409579, 1308039685,1308131470,1308164107,219856911, 971685890, 1308180516,
- 1308196885,110133773, 1308213264,1308229653,521617410, 1308251342,1308301830,1308563975,162579809, 274317396, 1308721218,217808908, 1308760584,1308901407,189464597,
- 760954919, 1308919127,1308966943,287573101, 1308989961,1082228762,1309081622,1309104650,1309212715,1309247429,8395275, 1309278218,1309294621,504643615, 351010832,
+ 1308196885,110133773, 1308213264,1308229653,521617410, 1308251342,1308301830,1308563975,162579809, 274317396, 1308721218,217808908, 1308760584,1308901407,189464597,
+ 760954919, 1308919127,1308966943,287573101, 1308989961,1082228762,1309081622,1309104650,1309212715,1309247429,8395275, 1309278218,1309294621,504643615, 351010832,
1309317644,1309530637,8391173, 1309589591,923337007, 1309638658,1309655050,1309672271,1309706653,1309754264,1309802602,1309886632,112935014, 1309967245,1310052587,
2293786, 49774621, 1310104078,1310212112,1310228491,1310244879,1310261250,1310277653,393019423, 1310294032,264929322, 1310310402,1310326805,264093718, 1310343600,
- 1310382607,116376585, 1310458286,1310507050,1310523418,1310539778,1310556175,1310572566,1310589846,210124831, 1310644752,652773083, 1310818326,1310841361,119996484,
+ 1310382607,116376585, 1310458286,1310507050,1310523418,1310539778,1310556175,1310572566,1310589846,210124831, 1310644752,652773083, 1310818326,1310841361,119996484,
1310933023,290471973, 506380298, 1310956050,1311014924,1311031322,421036459, 404979724, 1311047739,1311080458,64274692, 1311097191,2113999, 1311136275,1311227960,
1311264844,1311315073,74072066, 1311358978,407666694, 1311377759,1311431188,284639272, 1311496725,31621123, 1311621158,1001701387,1311637935,1311672481,1311704054,
- 1311736568,3211364, 1000898571,1311768604,1311791638,975192085, 1311834138,412139602, 1311851278,1311883696,255492122, 1311916880,377585692, 1311952083,59310091,
- 1311997964,1312014362,10584073, 1312031603,1312119319,131776578, 146456597, 1312163268,1312195191,1312227552,328073237, 1312266776,1312392315,16826379, 1785859,
+ 1311736568,3211364, 1000898571,1311768604,1311791638,975192085, 1311834138,412139602, 1311851278,1311883696,255492122, 1311916880,377585692, 1311952083,59310091,
+ 1311997964,1312014362,10584073, 1312031603,1312119319,131776578, 146456597, 1312163268,1312195191,1312227552,328073237, 1312266776,1312392315,16826379, 1785859,
1312430617,430014485, 140247090, 1312938522,1313036827,1313128903,3538986, 1313184284,1313249821,1313457996,1313524122,206471174, 1313604438,704365089, 1313654744,
- 1313724958,1313783824,1313801216,1313833993,57032723, 2867231, 251805762, 1313865744,1313882140,5505052, 1313901123,1313948535,1313982498,1314052639,919650826,
+ 1313724958,1313783824,1313801216,1313833993,57032723, 2867231, 251805762, 1313865744,1313882140,5505052, 1313901123,1313948535,1313982498,1314052639,919650826,
238256166, 1314177026,1314194931,692305922, 1314226807,1314258966,1314275404,1314308555,1314358927,1314407269,1314527776,1314609325,1314653470,1314701324,1314717727,
1314734091,5505050, 1314757153,603871778, 751878182, 1314881760,277200911, 1314920995,251583012, 1315078225,1315117605,1315176459,1315192834,117424154, 1315215910,
1315310896,1315356703,1315373527,349487135, 1315405890,1315438661,300925027, 316620929, 1315478055,1315717611,1315756584,1315816820,1297448991,1315864642,1315897823,
112754714, 1315931049,1315985961,1316045114,1316078460,1316127747,1316182570,1316290572,299827310, 1316312007,1316379179,1316569131,1316608556,141541402, 1316772397,
152191026, 4997655, 1316847675,1316880855,1316913584,1316945979,1316978690,1316995974,1317028684,1317077014,1317093386,685948940, 1317109806,1317158978,1317191739,
- 1317224880,1317257237,1317274826,490340381, 1091092512,1317322783,19841036, 1317345838,1317586518,1317657135,711163925, 1317702004,509215023, 1317765479,5963795,
+ 1317224880,1317257237,1317274826,490340381, 1091092512,1317322783,19841036, 1317345838,1317586518,1317657135,711163925, 1317702004,509215023, 1317765479,5963795,
1317799774,1317863519,1317913101,1317962155,453279776, 521061470, 122732575, 1317994799,1318028309,1318083120,1318227878,1318279729,1318338590,1318371755,1318404155,
- 184074280, 1318436880,1318453286,4685862, 597475368, 1318471976,490684475, 1318535220,1318569836,1318607410,1318699067,1318733685,1318798204,1318850914,38879263,
+ 184074280, 1318436880,1318453286,4685862, 597475368, 1318471976,490684475, 1318535220,1318569836,1318607410,1318699067,1318733685,1318798204,1318850914,38879263,
1318918707,1318994022,1319033396,1319109035,1319141679,1319175089,1319208552,89128991, 2130004, 1319672374,632897839, 1319815642,1319901751,109150691, 1319976976,
1319993360,151732261, 1320016440,1320098361,1320371353,1320426042,208667495, 1320517658,55853058, 1320534026,1320550934,1320586692,374390850, 33783824, 1320655419,
2360226, 245022730, 1320796760,1320829453,1320884796,1321058306,1321074724,1321097226,52133890, 319554858, 1321156674,1321191903,148242926, 1321245245,1321392702,
1321533469,1321550762,1321638463,1321736768,15073282, 1321782195,1321828411,1321862409,1321893942,1321933377,1322015298,3867050, 1322142899,1322195523,1322271142,
- 1239695372,1322303509,435060748, 1322326596,1322420027,1176469563,1322474053,59375618, 1322614800,647184400, 1322637894,1322811446,1322845482,1322893349,915701776,
- 130580511, 1146486824,1322909717,1238958110,1322932807,1323073595,219709456, 1323106316,175669274, 1323122714,1323139074,1323156603,1323188308,1323221032,422952991,
+ 1239695372,1322303509,435060748, 1322326596,1322420027,1176469563,1322474053,59375618, 1322614800,647184400, 1322637894,1322811446,1322845482,1322893349,915701776,
+ 130580511, 1146486824,1322909717,1238958110,1322932807,1323073595,219709456, 1323106316,175669274, 1323122714,1323139074,1323156603,1323188308,1323221032,422952991,
1323244104,1323386227,1323417837,1323451270,1323484678,1323533197,1036487217,1323614224,1065893914,1323637321,194068587, 1323810842,1323827212,137102796, 1323843649,
7734587, 148635755, 251609546, 1323893204,1323932234,655114268, 1324007436,838451298, 1324023867,1324063307,1324187740,1324220500,529285204, 1324254660,1324292684,
- 45858832, 1324400750,1324433933,1324483019,1324531724,159974390, 1324548180,1324587597,1324795643,1324848097,52363286, 1324915278,1325188218,137101807, 123617360,
- 1325253083,295272460, 1325285402,1325301814,1325335337,1281785872,1325367841,1325416454,149504006, 1325432834,1325449755,346488834, 1325488719,1325563920,833716250,
- 1325580290,616759317, 1325596693,225427458, 1325613066,1325629452,663601178, 1325645908,156155930, 1325685328,3309599, 1325865553,1325940758,1325957136,950566928,
- 1325973523,149504037, 1325989900,1326006274,1326022685,1326045778,1326104617,1326120962,1326137370,1326153739,1284816902,1326171443,1326219356,17843649, 471580684,
+ 45858832, 1324400750,1324433933,1324483019,1324531724,159974390, 1324548180,1324587597,1324795643,1324848097,52363286, 1324915278,1325188218,137101807, 123617360,
+ 1325253083,295272460, 1325285402,1325301814,1325335337,1281785872,1325367841,1325416454,149504006, 1325432834,1325449755,346488834, 1325488719,1325563920,833716250,
+ 1325580290,616759317, 1325596693,225427458, 1325613066,1325629452,663601178, 1325645908,156155930, 1325685328,3309599, 1325865553,1325940758,1325957136,950566928,
+ 1325973523,149504037, 1325989900,1326006274,1326022685,1326045778,1326104617,1326120962,1326137370,1326153739,1284816902,1326171443,1326219356,17843649, 471580684,
1326258771,1326334632,140788226, 1326366779,1326400533,5505053, 1326455380,1326612516,1326628870,177405973, 1326645274,46219280, 1326661644,1326678026,1326694487,
1326747471,1326792746,1326815829,1326907408,1326923802,1326940175,223838230, 1326956580,1123500043,1326972950,1326989328,1327006622,1295417356,1327038495,1327056192,
- 458490335, 1327087626,241483795, 1327110742,1327438423,212369418, 1327513622,1327530516,1327580852,1327667800,1327825296,1327864409,128974905, 2202202, 8142857,
+ 458490335, 1327087626,241483795, 1327110742,1327438423,212369418, 1327513622,1327530516,1327580852,1327667800,1327825296,1327864409,128974905, 2202202, 8142857,
1327923418,264650778, 1327962715,670466069, 1328093788,1328267865,1116356667,1328300269,1328332850,1328365622,1328398375,1328431188,1328463888,1328480266,1328497532,
4703055, 1328545832,1328562195,1043120165,1328585309,1328709683,76660758, 51675158, 1328745479,124863358, 1328828824,1328906294,1328939103,1328994910,1329070082,
641105960, 1329088371,1329120170,1329201238,208667056, 116376012, 1329240671,1002995738,1329305324,8392322, 1329365032,528842763, 293011515, 1329388128,1329660395,
6375090, 1329699425,1329791007,31408138, 1329813702,1329856549,500695078, 1329873581,1329922058,223559709, 1329941635,1329994338,131335728, 1330122276,1330167874,
- 1330203206,208584706, 1330240099,1330332970,431734826, 1330381745,1330413610,145293314, 527942249, 119358633, 1330430039,319455683, 1330485860,1330577515,114180098,
+ 1330203206,208584706, 1330240099,1330332970,431734826, 1330381745,1330413610,145293314, 527942249, 119358633, 1330430039,319455683, 1330485860,1330577515,114180098,
1330610182,2195786, 1330626641,1330666085,126025766, 1330862694,1330970664,1330987046,300929071, 1331003451,1331036267,1331068984,1331101783,1331153621,1331200224,
- 324475495, 1331239528,1331367664,1331445859,1107853707,1331485289,1331550826,1331862123,163727590, 1331960428,2130019, 1332021763,878018619, 1332107885,159694864,
+ 324475495, 1331239528,1331367664,1331445859,1107853707,1331485289,1331550826,1331862123,163727590, 1331960428,2130019, 1332021763,878018619, 1332107885,159694864,
1332281360,1332297738,1332315135,127909947, 1332370030,1332445244,1332527114,4997634, 2031619, 1332543690,7094389, 1332583023,1332763248,1332828785,1332942796,
1333009010,2197242, 1333051446,1333084654,1333116944,1333133354,2196315, 1333156467,1333271156,340281769, 1333385845,1333444638,1333484150,1333647991,1333707831,
1333740120,1333772394,1333855262,128581661, 1333893752,1333969328,17842609, 1334002678,1334041209,1334205050,1334378498,1334396460,1334429391,1334461263,1334493614,
@@ -2666,22 +2661,22 @@ static const unsigned int DictNodes[84251] =
1335821321,109150271, 1335854577,1335888102,491028518, 1335935607,1335967746,1335984934,1336018264,1336067480,123846715, 1336121982,257933343, 1336183929,1336299254,
4997225, 1336393836,254591057, 1336427550,1336459330,1336493266,1336531583,1336885269,84934682, 7290916, 1336908325,2197363, 1336967705,1337039488,1337116575,
1337181681,1337212959,116376023, 3227750, 1337229742,2129931, 421429290, 1337279937,1337318017,1035158105,1337393228,1337425966,1337475178,1770699, 1337557076,
- 532137608, 6374792, 1337590197,1337622593,1337672693,1337744002,63111175, 1337819983,1337852141,1337884712,1337902625,1337940611,1338083700,1338147849,70942732,
- 5309342, 1338180694,137103785, 1338235524,1338507294,1338540523,1338573259,1338622018,1338660600,1338723793,1338770833,212107302, 343621675, 1338838424,133678080,
+ 532137608, 6374792, 1337590197,1337622593,1337672693,1337744002,63111175, 1337819983,1337852141,1337884712,1337902625,1337940611,1338083700,1338147849,70942732,
+ 5309342, 1338180694,137103785, 1338235524,1338507294,1338540523,1338573259,1338622018,1338660600,1338723793,1338770833,212107302, 343621675, 1338838424,133678080,
1338933549,1338972805,1339038342,1339131251,1339163924,443629584, 1339218567,712149574, 1339300488,1339457592,1339497097,1339769950,46448656, 1339818920,1339850764,
392151042, 1339867176,149815308, 1339883536,1301774374,1339900937,1339932715,1339966763,1340036136,1340096538,122273837, 1340113658,441368592, 1340145723,1340178486,
- 1340217994,79757334, 7094331, 1340332683,1340473439,1340522923,258867634, 156827707, 1340562060,1340643981,301351799, 1340751874,175669258, 1340771081,30392346,
- 1229963276,1340824206,1341102735,1341194322,1341228324,1341276196,134627344, 1341293462,1341342167,1341342091,1341381264,1341490404,1341541461,109150603, 278167669,
+ 1340217994,79757334, 7094331, 1340332683,1340473439,1340522923,258867634, 156827707, 1340562060,1340643981,301351799, 1340751874,175669258, 1340771081,30392346,
+ 1229963276,1340824206,1341102735,1341194322,1341228324,1341276196,134627344, 1341293462,1341342167,1341342091,1341381264,1341490404,1341541461,109150603, 278167669,
1341621131,886688552, 1341685770,1341702186,382435333, 268189755, 1341719399,1341751342,118882904, 1341807249,1341889170,1342029929,1342062594,4980743, 1342079009,
- 1342129459,1342178313,173850635, 1342216851,1342324754,84967554, 67289094, 1342341129,1212417, 1342357530,1342373916,11468811, 1342390274,1342406694,22216746,
- 259129365, 1342429844,865009700, 1342642837,1342701652,1342734402,430669843, 1342767163,1342799910,1342816287,30392339, 5326384, 59260931, 1342839446,349716482,
- 1342914581,255705104, 406030225, 1342937751,1343029314,152616982, 1343063842,1343095216,1343127564,1343143942,52576259, 1343160404,1343193109,1343209478,164200485,
- 1343226287,1343259200,1343291423,1343307788,200736773, 1343330968,1343422505,1343438877,1343455366,1343471626,11075593, 1343494809,1343554880,1343586306,904337,
- 1228736139,1343609498,1343750154,1343766644,1026048022,1343782950,1343806107,1343832092,1343850283,1343881226,415449110, 1344314012,651100182, 2113546, 168395171,
+ 1342129459,1342178313,173850635, 1342216851,1342324754,84967554, 67289094, 1342341129,1212417, 1342357530,1342373916,11468811, 1342390274,1342406694,22216746,
+ 259129365, 1342429844,865009700, 1342642837,1342701652,1342734402,430669843, 1342767163,1342799910,1342816287,30392339, 5326384, 59260931, 1342839446,349716482,
+ 1342914581,255705104, 406030225, 1342937751,1343029314,152616982, 1343063842,1343095216,1343127564,1343143942,52576259, 1343160404,1343193109,1343209478,164200485,
+ 1343226287,1343259200,1343291423,1343307788,200736773, 1343330968,1343422505,1343438877,1343455366,1343471626,11075593, 1343494809,1343554880,1343586306,904337,
+ 1228736139,1343609498,1343750154,1343766644,1026048022,1343782950,1343806107,1343832092,1343850283,1343881226,415449110, 1344314012,651100182, 2113546, 168395171,
1344445085,1344503810,1344523259,1344552972,49905702, 1225611934,1344569975,1344608927,1344767483,1344821920,1344914823,1344946936,156434434, 1344983458,1345044530,
152965515, 2360489, 684212290, 1345077279,1345094725,1345142803,1345159190,349372427, 1345176043,1345215137,1345323036,1345340814,390513446, 453689356, 1345404949,
- 1345421371,2196600, 1345460898,1345652784,1345718784,1345766136,344539142, 1345798210,1258504631,1345833008,1345896514,1345930081,1345962071,1346011661,131811761,
- 1346060389,1346099875,1346356163,3686437, 1346405185,1346437132,584892437, 1346457033,1346505527,1346551874,1346584686,417677354, 1346617771,1346656932,110166863,
+ 1345421371,2196600, 1345460898,1345652784,1345718784,1345766136,344539142, 1345798210,1258504631,1345833008,1345896514,1345930081,1345962071,1346011661,131811761,
+ 1346060389,1346099875,1346356163,3686437, 1346405185,1346437132,584892437, 1346457033,1346505527,1346551874,1346584686,417677354, 1346617771,1346656932,110166863,
1346766024,1346804389,1346902694,1347043338,1347060246,1347092501,1347109777,1157513235,1282359317,1347158037,1347174412,1347190816,1347230375,1347392828,1347508904,
1026572319,1347601417,1347639977,886687177, 298614812, 1347732969,1347782263,1347846991,1347885738,1347977227,2015243, 1347993602,1348010089,1348049579,1348161322,
1348229804,906592266, 1348288514,50135059, 1348304999,401834011, 1348393645,1348636825,1348682329,1223885343,1348721326,1348780924,1348832389,1348943900,1348960258,
@@ -2689,37 +2684,37 @@ static const unsigned int DictNodes[84251] =
1917348, 1349993208,1350025440,1350058831,392353460, 1350092164,1350156319,5884612, 1350173127,1350221843,320307237, 1350238238,1350272568,1350337359,1350369349,
1350402079,1350420014,344735968, 1350474420,1350549971,1350605493,1350664202,1350680618,1350696988,145473567, 1350714704,128581695, 1350765457,1350867638,1350992394,
1351024672,987709471, 1351057438,1351090202,116376073, 1351107478,1351162551,1351385579,1351418274,1351454691,1351517337,1351565420,109019147, 1351598092,1351614493,
- 1171849440,1351637688,159432720, 886505491, 1351703225,1351799803,1351845276,111427610, 1351894677,3212024, 1351959446,1352014522,1352075764,412008488, 115294236,
+ 1171849440,1351637688,159432720, 886505491, 1351703225,1351799803,1351845276,111427610, 1351894677,3212024, 1351959446,1352014522,1352075764,412008488, 115294236,
1352129211,1276330415,1352286511,173490690, 1352325820,72499218, 1352467340,1352522429,1352663050,1352679466,1352702654,114098192, 118883169, 1352751807,1247346700,
1352810955,1021953473,1352859743,47939586, 1352915648,1353023500,1353039979,383320092, 1353079489,1353304576,1353351234,1353390786,1353482841,1353515090,1353554627,
1353632420,1353697661,117900936, 1353784004,574930946, 176177591, 1353875532,1353909524,1353964229,996919957, 217808924, 1354144454,1354406599,1354482343,1354515303,
1354547210,235307037, 1354563606,7258193, 1354586824,1354694959,1354728369,1354764600,17842613, 1354809384,332595215, 1354830232,1354907746,1354942433,1354990531,
1355038777,212025346, 1355060674,1355154217,1355193033,1355251745,1355301346,1355399256,1355438794,1355628566,1355651787,1355711786,1355760050,1355792855,1355825215,
1355859361,1355912556,869351483, 1356028620,1356110541,379814367, 2195950, 1356234797,1356274382,1356300290,17843591, 1356323535,1356398601,279396375, 1356416175,
- 1356447760,32849977, 46088221, 1356464187,1356496906,1356513322,122601494, 1356532957,1356562458,1356578873,254197765, 1356896977,1356988447,1061617674,131843417,
+ 1356447760,32849977, 46088221, 1356464187,1356496906,1356513322,122601494, 1356532957,1356562458,1356578873,254197765, 1356896977,1356988447,1061617674,131843417,
566329365, 1357006026,1357053983,1357070365,1357087195,1357120400,1357159122,1357203923,1357250562,1357266972,765313026, 1357283758,1357339347,1357414883,1357447234,
- 141115430, 1270023724,1357486804,1357661527,1037008922,1357709327,263716886, 1357725734,1357742096,1357758490,1357774879,6374956, 1357791268,1357807626,958103554,
+ 141115430, 1270023724,1357486804,1357661527,1037008922,1357709327,263716886, 1357725734,1357742096,1357758490,1357774879,6374956, 1357791268,1357807626,958103554,
1357824038,1357840396,1357856787,1357873173,740163610, 1357889838,1357922344,51036176, 1357938718,1357971466,610435111, 1357988879,393805866, 1358037904,1358073021,
- 1358119759,1358153749,126369813, 1358184470,1358200844,1358217242,1358233852,1358266800,1358299174,773406722, 1358322389,1358403476,1358447625,1358479370,278528066,
- 1358495760,250560518, 1358512180,1358551766,1358643307,1358676482,1358710461,1358793076,1358857039,1358888975,1358905365,166346764, 379504661, 1358928599,110232489,
- 110237957, 1358987751,1359043288,1359151125,1359167519,5308668, 1359184786,1359239897,928595987, 1359462484,1359495206,1359512089,1359577131,1359609937,219594768,
+ 1358119759,1358153749,126369813, 1358184470,1358200844,1358217242,1358233852,1358266800,1358299174,773406722, 1358322389,1358403476,1358447625,1358479370,278528066,
+ 1358495760,250560518, 1358512180,1358551766,1358643307,1358676482,1358710461,1358793076,1358857039,1358888975,1358905365,166346764, 379504661, 1358928599,110232489,
+ 110237957, 1358987751,1359043288,1359151125,1359167519,5308668, 1359184786,1359239897,928595987, 1359462484,1359495206,1359512089,1359577131,1359609937,219594768,
1359642660,121274387, 1359661156,277856297, 1359708191,385024056, 1359724603,1359757338,196886565, 1359773734,1359790082,1130840535,1359810872,1359855626,1359872006,
1359888415,1359904789,1359921183,121929785, 1359941916,1359989368,1360020418,121323546, 1360052250,1360068624,644382751, 616742928, 1360085058,1360117770,1360134165,
1360150559,1360166950,1360183298,4390933, 1360199739,1360232464,1360250819,114180098, 1360298485,1360333154,1360386778,1360512391,1360544046,1360576522,1360592925,
223903770, 1360609311,1360625888,235700290, 1360658470,1360674852,1360691219,1360707596,213958667, 901218342, 1360723979,1360740368,134021139, 1360757215,1360789514,
1360806365,1360839201,1360887846,1360904194,1360920587,66863180, 1360937064,1360986178,1361019792,1361051679,234848275, 1361068048,56721446, 1361084432,1361100815,
220987428, 1361124059,1361205980,474398822, 1361330216,1361346591,162332684, 1361362956,1361379354,1361395778,1361428914,394183258, 1361465628,1361517277,1361559972,
- 1361593758,1361625130,1361641602,94502952, 1361657868,1361674370,1361690633,2179202, 1362221791,1126636256,207231713, 5308668, 1362320098,2261108, 1785976,
+ 1361593758,1361625130,1361641602,94502952, 1361657868,1361674370,1361690633,2179202, 1362221791,1126636256,207231713, 5308668, 1362320098,2261108, 1785976,
82198537, 1362362377,581206058, 1362378883,1362396078,1362434787,1362694306,1362723458,1362778852,1362854489,212008998, 1362886743,1362935916,1362969047,1363001346,
223182874, 1363017744,1363034214,1363073765,1363247109,1363263500,381829126, 1363279903,5080384, 1363297587,1363345454,56262682, 391970835, 1363394600,1363410970,
1363427340,1363443734,1363460098,1363476502,933890, 1363492910,6111251, 1363542038,1363558412,1363581670,1363630823,165134355, 1363705916,1363787867,1363821012,
- 111149108, 1363853759,110100492, 1363892968,1363968434,1364007279,1364049922,223182874, 166871042, 73138218, 1364073193,1364312104,8962076, 1364334586,315277454,
+ 111149108, 1363853759,110100492, 1363892968,1363968434,1364007279,1364049922,223182874, 166871042, 73138218, 1364073193,1364312104,8962076, 1364334586,315277454,
197115935, 1364426806,1364466410,1364525087,1126630409,1364548331,1364623362,1364639755,1364656140,1364672538,1364688927,246087699, 1364712172,1364770854,1364794093,
113655918, 1364853166,1364904518,1364934687,258097163, 1364951343,1364983819,1365000276,1365039854,183992346, 118652938, 1365105391,1365383920,1365475462,1365491752,
2179078, 1365508610,1365544333,1365592255,1365629681,1365836856,1365901454,1028767756,1365935226,1365999628,16826370, 155975708, 1366016303,1366048784,1366067120,
- 1366097922,1366114314,1366130717,1366147138,1366179842,1366196234,1366219506,1366295803,1123696943,1366350579,45531164, 1366432500,1366540304,1366557587,276332550,
+ 1366097922,1366114314,1366130717,1366147138,1366179842,1366196234,1366219506,1366295803,1123696943,1366350579,45531164, 1366432500,1366540304,1366557587,276332550,
28540944, 1366605846,1366622244,1366638608,1366655081,1366687760,152272938, 675168258, 1366704559,199458843, 1366743797,1366805808,1366854785,1366901829,1366949926,
- 209813506, 536215573, 1366966274,1366982678,1366999052,1367015453,740130842, 8395510, 15482898, 1367038711,1367317240,1367382777,1367408669,1367431930,206848154,
+ 209813506, 536215573, 1366966274,1366982678,1366999052,1367015453,740130842, 8395510, 15482898, 1367038711,1367317240,1367382777,1367408669,1367431930,206848154,
1367457821,1367474715,2031617, 1367513851,1367639562,1367688536,1367737232,1367771166,1367819383,1367867408,84738069, 1367883797,1367900635,1367933886,1367982512,
1368015767,1368064038,1368080400,1368096810,1368115387,1368168603,1368244226,214679574, 1368267516,585023490, 1368342564,1368358922,1368375315,1368391706,1368408066,
1368424672,1368464125,351617026, 1368523670,1368577097,1368637442,1368653834,1368670244,1368686632,94339098, 2327335, 1368704648,1368759038,1368817685,1368834140,
@@ -2730,22 +2725,22 @@ static const unsigned int DictNodes[84251] =
1370653131,1370701926,1370735902,1370784601,1370816770,207442277, 1370849334,121094155, 1370882050,123518986, 1370899352,1370952279,1370996820,1371036420,1371160597,
1371176972,1371195861,1371226128,20365352, 1371242544,1371291674,1371308053,1371324526,824803330, 1371357196,1371373578,152256553, 120031462, 531562498, 1371396869,
1362314227,1371609862,1371668511,1371686578,66815666, 30392360, 1371724551,1371806472,7307292, 1371848820,1371865125,1371881513,1371897894,2752538, 1371914271,
- 2015254, 1371937545,1372115976,7735155, 1372166922,1372274728,156925989, 1372291919,1372323878,1372340227,42008599, 1372356674,1372389433,1372405765,37748867,
+ 2015254, 1371937545,1372115976,7735155, 1372166922,1372274728,156925989, 1372291919,1372323878,1372340227,42008599, 1372356674,1372389433,1372405765,37748867,
1372429067,917545, 1372740364,1372897316,1372913666,1372930074,146096130, 1372951848,11157506, 1372995586,146096154, 333348886, 1373012027,749617193, 1373051661,
- 1373159516,381779970, 917291010, 1373199118,162501539, 1373341097,1373372428,1373395727,3212262, 1373471600,1373526800,380551170, 1373608721,1373788666,55328770,
+ 1373159516,381779970, 917291010, 1373199118,162501539, 1373341097,1373372428,1373395727,3212262, 1373471600,1373526800,380551170, 1373608721,1373788666,55328770,
1373850803,1373897007,1373929510,568018264, 1373946391,1373978655,574537739, 1901175, 1374001938,316293634, 118178293, 1374094951,1374142476,574537754, 1374159730,
1374198547,1374240799,1374257162,1374273538,1374289941,1374306391,112952161, 1374358138,1374405493,1374437402,1374454219,1374503054,1374535711,1374552666,1374584886,
56721418, 1374624532,183697492, 1374699532,1374722837,451772775, 1375010908,570736656, 1375044431,531316802, 1375076364,691651031, 1375092812,27607059, 1375128925,
1375210771,1375256813,203063302, 1375289403,1375322128,1375338536,1375361814,1375404628,290996227, 1375458358,1375502367,153174026, 1375525655,1375650247,1375699339,
- 1375731970,1376099097,55869459, 1376289305,1376361242,1376436234,1376456546,1376520022,1376574235,1376633034,184713232, 1376667428,1376714783,1376732001,2179103,
- 1376765524,1376862299,1376899516,1376960543,565772326, 1376981949,1377026570,1377060159,579011904, 1377124382,1377159651,1377193861,1377271874,1377304606,108658714,
+ 1375731970,1376099097,55869459, 1376289305,1376361242,1376436234,1376456546,1376520022,1376574235,1376633034,184713232, 1376667428,1376714783,1376732001,2179103,
+ 1376765524,1376862299,1376899516,1376960543,565772326, 1376981949,1377026570,1377060159,579011904, 1377124382,1377159651,1377193861,1377271874,1377304606,108658714,
1377337398,1377377052,1377458973,1377550338,43532291, 1377566732,113229834, 1377583110,66521557, 1377599791,1377632293,1377648671,22478860, 1377665083,1377702511,
- 1377747004,1377830075,1377878056,130252838, 1377895001,1377927769,174440474, 1377966878,1378058246,1378074664,787922970, 1378091039,1378107394,1378124407,124239878,
+ 1377747004,1377830075,1377878056,130252838, 1377895001,1377927769,174440474, 1377966878,1378058246,1378074664,787922970, 1378091039,1378107394,1378124407,124239878,
1378156903,1378190681,679837722, 1378222614,1378261791,1378336799,1378353190,1378369602,1378402421,1378441414,1378484226,1378500646,1378517467,1378551192,1378598968,
- 1378631767,1378680949,1378720544,1378828304,1378844683,1378861071,1378877466,1378893840,1378910219,228294687, 1378926604,1378943017,1378959391,1378975763,701169695,
+ 1378631767,1378680949,1378720544,1378828304,1378844683,1378861071,1378877466,1378893840,1378910219,228294687, 1378926604,1378943017,1378959391,1378975763,701169695,
1378992166,1379008528,528760860, 1379024927,1379041286,1379057685,1379074064,1379090451,1379106838,1379123212,1379139595,150061087, 1379156008,1379172367,1379188751,
1379205146,1379221516,916652038, 246251542, 1379240472,144621580, 1379310369,1379457826,1379549205,1379571334,942145562, 1379647947,1379697595,1379762465,1379795836,
- 1379845289,1379876870,1379893707,1379942431,1379958796,1379975178,110298713, 1379998499,1380106259,135577622, 1380122643,239714306, 1380139467,1380188262,479100966,
+ 1379845289,1379876870,1379893707,1379942431,1379958796,1379975178,110298713, 1379998499,1380106259,135577622, 1380122643,239714306, 1380139467,1380188262,479100966,
1380221388,1378074645,1380260644,1380384789,1380401999,1380433932,1380450319,838418453, 1380466742,1380499475,1380515861,1380532251,1380571941,1380630566,1380647804,
1380696070,200228914, 1380712907,1380761606,838418438, 1380778000,1380794378,1380810754,1380827244,1380859935,84738058, 1380876328,138641843, 1380893537,1380925482,
268107788, 1380941930,1381026756,1381072917,1381090187,1381154827,1381171212,123813898, 1381188017,1381220655,1381254034,1381309222,1381400597,1381423911,1381498892,
@@ -2753,16 +2748,16 @@ static const unsigned int DictNodes[84251] =
1381793811,1381810197,1381826591,1381842963,1381859330,153748262, 1381882664,1381941258,1381957634,1381974551,1382006823,1382040199,1382089696,1382137866,1382155160,
1382206768,1382252546,29622293, 1382275881,902889487, 1382334494,1382367263,115163148, 1382383682,1382416855,1382449611,1382501713,1382580230,1382596674,1382629433,
139395138, 1020723266,1382646297,1382711797,1383177002,1383420307,1383466014,412008460, 1383498769,1383547481,1383579654,1383596038,143589407, 1383612442,1383628802,
- 1383645815,1383677983,1383695221,1383727563,1383777090,1383825409,1383612456,1380745247,1383841804,1383858202,1070841877,89129000, 1383874591,1383890956,787922954,
- 1383914283,52723723, 1383972879,1383990008,1384022047,787922963, 1384038416,1384054799,1384071194,846135327, 1384092138,902889503, 1384136735,1384153107,133824552,
+ 1383645815,1383677983,1383695221,1383727563,1383777090,1383825409,1383612456,1380745247,1383841804,1383858202,1070841877,89129000, 1383874591,1383890956,787922954,
+ 1383914283,52723723, 1383972879,1383990008,1384022047,787922963, 1384038416,1384054799,1384071194,846135327, 1384092138,902889503, 1384136735,1384153107,133824552,
279904267, 1384169493,1384185868,115589130, 1384208607,1384267816,1384284186,1384300546,1384317036,1384349711,835862559, 1384366102,1384382476,46219274, 1384405143,
1384487724,1384529925,1384546316,1174208524,1384562725,7602204, 1384586029,77250591, 1384667950,1384815407,1384906771,1384923176,787922982, 1384945862,1384988674,
- 1385006266,1385037855,1385054229,172983143, 1385071023,808402956, 1385103362,1385119765,1385136215,1385188624,1385252803,212844575, 544882977, 1385300192,128581672,
+ 1385006266,1385037855,1385054229,172983143, 1385071023,808402956, 1385103362,1385119765,1385136215,1385188624,1385252803,212844575, 544882977, 1385300192,128581672,
1385332823,1385388848,1385496588,1385512970,1385529975,1385562151,1385594892,1385611290,1385627650,1385644053,1385660503,1385709599,591774123, 1385726039,1385776044,
1385840650,212402235, 1385857463,1385889858,1385923603,1385971743,261342069, 1385995057,1386070026,341950495, 1386086412,649691162, 1386106950,1386184744,1386201098,
1386217503,116015123, 1386236315,1386299474,1386332191,1386348572,1386364955,143441941, 1386397708,1386414101,1386430476,229049495, 1386446860,1386464179,1386496012,
1380761610,1032208405,1386519346,1386594385,1386627103,787923001, 648347688, 1386643482,1080328232,1386666803,1386725377,1386741800,1386758156,1129529354,1386774967,
- 661274636, 917012501, 1386807327,843907091, 1386824489,1386856464,1386872889,1386889228,1380450330,1386905612,1386921994,1386938399,1386954764,1386971146,646808183,
+ 661274636, 917012501, 1386807327,843907091, 1386824489,1386856464,1386872889,1386889228,1380450330,1386905612,1386921994,1386938399,1386954764,1386971146,646808183,
1386987581,1387036688,1387053082,1387069499,1387102229,1387118679,1387168657,118194195, 838418474, 116228098, 1387216962,1387251557,683704326, 1387298892,1387331612,
386940966, 1387347980,1387364362,1387380757,1387398971,1387446283,1387462687,1387479050,1299054594,1387502388,1387577387,680476700, 1387610114,251871260, 1387628520,
1387679620,1387794226,1387839504,212320296, 1387862837,1388052501,1145143308,1388071142,115120798, 1388118475,1388167189,1388183583,787922986, 1388199946,1388216623,
@@ -2770,22 +2765,22 @@ static const unsigned int DictNodes[84251] =
1388609576,1081131020,1388626551,1388658714,1388675103,1380122652,1388691482,1388707880,1380450323,1388724236,1388740634,1388757003,1388773407,574537738, 1388796726,
1388960567,275464230, 1389042488,1389124409,1389189946,662585365, 1389252460,1389299830,1389363241,1389379596,143441946, 1389399074,1389461975,199443319, 1389494575,
1389527096,1389559867,1389599547,1389647458,737771535, 1389690946,114278827, 1389723659,846118943, 1389740564,1389789194,787922950, 1380122645,1389805599,1389821962,
- 1389839680,1389871144,1389887519,1389903878,787922966, 1389920287,1389937079,1389969448,1389985794,1390002284,1390036312,1390085528,1390140220,1390264336,58769445,
+ 1389839680,1389871144,1389887519,1389903878,787922966, 1389920287,1389937079,1389969448,1389985794,1390002284,1390036312,1390085528,1390140220,1390264336,58769445,
1390281928,1223704607,1390313498,1390329887,383860746, 1390346294,787660831, 1390379020,1390395398,163463199, 1390411802,1390428595,1390460944,521797647, 1390477371,
1390511307,1390542874,1390559234,866910214, 1390582589,1390673951,1390690325,1390706690,3178524, 1390724072,1390772761,849510442, 1390837781,1390854170,1390870960,
- 1390903342,1390952486,1390968859,1391002512,1391041179,1391074110,839548954, 1391296541,29261830, 1391312937,1391329739,1391378451,1391394837,1391411276,149487673,
+ 1390903342,1390952486,1390968859,1391002512,1391041179,1391074110,839548954, 1391296541,29261830, 1391312937,1391329739,1391378451,1391394837,1391411276,149487673,
1391443987,1391460383,780058636, 1391479773,1383596074,1391525909,1391542303,88686613, 1391558696,1391575343,1391607829,1391625545,1391678459,701186050, 1391725849,
1391788075,787922959, 1391820821,618709011, 88555539, 1391837215,1391853589,1391869954,663699484, 1391893311,1389789224,1391984642,1392001064,1380450310,1380122650,
1392017489,1392050283,676347910, 1392082975,700809228, 1380007967,1392099354,1392115743,1390690323,1392132130,1392253760,1392345115,6029331, 199442890, 1392378487,
- 1392417257,114049050, 1392510459,383860776, 1392565057,1392623637,1392640892,1392690144,1392745282,1392836624,371277850, 259620948, 1392853058,1093812255,627720213,
+ 1392417257,114049050, 1392510459,383860776, 1392565057,1392623637,1392640892,1392690144,1392745282,1392836624,371277850, 259620948, 1392853058,1093812255,627720213,
1392892739,1393000460,908902438, 1393017592,1393049708,1393082394,1387069442,1393100205,1393147925,1393171268,1393229929,1393262623,576225291, 47546425, 1393278987,
- 1393295663,1393328188,1393410098,1393442861,778862594, 1393476043,1393525601,1393558497,259981333, 1393591616,1318780949,1393623340,1393655820,1393672198,395198483,
- 1393692771,1393721354,1393739025,1393786946,1393826629,1036714010,1393950732,1393967130,576176147, 1393983499,1394000779,1394065889,1394114591,1394135381,7146104,
+ 1393295663,1393328188,1393410098,1393442861,778862594, 1393476043,1393525601,1393558497,259981333, 1393591616,1318780949,1393623340,1393655820,1393672198,395198483,
+ 1393692771,1393721354,1393739025,1393786946,1393826629,1036714010,1393950732,1393967130,576176147, 1393983499,1394000779,1394065889,1394114591,1394135381,7146104,
1394180155,1394213323,1394268998,1394327660,1394360341,1394376730,1394393128,1394409491,1394425877,1133789224,1394442241,1070841896,1394458634,1394475050,1394491458,
- 126222874, 1394524259,1394556959,1394573314,128155669, 1394596679,1394787064,1394820004,1394868266,1394884639,162250768, 1394907976,1395015772,1395048460,159383573,
- 259703731, 1395064908,1395099289,1395146758,520618000, 1395164362,1395212354,1395252041,174129623, 640844079, 1395311471,1395359749,1395376140,1395392533,44662810,
- 1395409895,1395458108,1395546954,45908009, 10649852, 1395654722,1395687713,1395720631,8390501, 361283631, 1395753880,1395802138,159383581, 1395818518,198606860,
- 1395834964,1395867686,1000898576,1395884044,1395901176,1395938849,1396032294,1396064287,1396080661,1396097931,1396162616,1396195349,1396211718,1396229107,16318501,
+ 126222874, 1394524259,1394556959,1394573314,128155669, 1394596679,1394787064,1394820004,1394868266,1394884639,162250768, 1394907976,1395015772,1395048460,159383573,
+ 259703731, 1395064908,1395099289,1395146758,520618000, 1395164362,1395212354,1395252041,174129623, 640844079, 1395311471,1395359749,1395376140,1395392533,44662810,
+ 1395409895,1395458108,1395546954,45908009, 10649852, 1395654722,1395687713,1395720631,8390501, 361283631, 1395753880,1395802138,159383581, 1395818518,198606860,
+ 1395834964,1395867686,1000898576,1395884044,1395901176,1395938849,1396032294,1396064287,1396080661,1396097931,1396162616,1396195349,1396211718,1396229107,16318501,
1396244622,1396277314,118194186, 1396310037,1396327325,1396408348,1396424735,1396441109,1396458336,1396529995,1396572176,1396588586,984891404, 1390182415,1396605028,
1396637698,1396654090,1396671356,1396726604,1396834310,166051861, 1396850719,1396867703,1396899880,1396916290,1396949023,1396965460,1396998252,1397032280,1397080976,
1397113433,1397145619,1397162005,1397179293,1397261610,1397309874,1397343126,1397393345,1397440533,128090143, 1397463885,1397588025,1397604364,1397620742,1397637177,
@@ -2810,9 +2805,9 @@ static const unsigned int DictNodes[84251] =
1405747231,1405763599,1405780006,547897375, 1405796657,1405829141,1405846396,126140426, 1405895882,1405944258,1405976642,1406009370,1406025815,1406074948,1406124134,
1406156812,1406173205,1406189598,1406222338,1406238741,1406255116,675921946, 1406275060,1406353418,1406369804,4014106, 1406386233,1406402572,1406418970,1405616138,
1406441458,1406484492,985301011, 1406500924,1406583313,1406615595,1406649202,1406682014,201572378, 1406715409,1406747148,1406786404,1406828565,664174608, 1406845465,
- 1406910490,1406926874,1406943664,479363131, 1406980203,1407025183,1407041579,1407074386,1407108570,2130856, 1407189418,1407225229,268435468, 1407270922,126615573,
+ 1406910490,1406926874,1406943664,479363131, 1406980203,1407025183,1407041579,1407074386,1407108570,2130856, 1407189418,1407225229,268435468, 1407270922,126615573,
1407288313,1407373888,1407436120,564871171, 1407483935,1407500304,1407516682,1407533058,1407550963,1407583118,1407648656,1407687525,1407729695,1407746064,1407762442,
- 540295170, 1407785830,79691802, 1407861834,1407893516,1407909914,143589378, 546095110, 1407927557,1407991834,4063238, 1408008194,1408025711,1408057356,201572373,
+ 540295170, 1407785830,79691802, 1407861834,1407893516,1407909914,143589378, 546095110, 1407927557,1407991834,4063238, 1408008194,1408025711,1408057356,201572373,
1408073833,1408106498,1408122901,119324738, 1408139318,1408172053,1408189323,1408254009,1408270367,5275658, 1408287733,1408352687,1408392039,1408435121,1408467247,
1408499733,1408516162,1408548880,1408565258,1408581638,193314838, 139198506, 974323754, 1408598031,1408614421,1408633906,1408703336,1408762456,1408794640,1408811046,
209993730, 1408828385,1408860219,1408893942,1408926155,1408975479,1409014633,1409073184,1409106767,1409138719,121356298, 1409155179,1409187871,393297977, 1409204683,
@@ -2824,12 +2819,12 @@ static const unsigned int DictNodes[84251] =
1411203103,2293781, 383860765, 57032735, 1411219458,193888262, 1411235900,1411320640,1411383372,1411416093,1411439472,1411514399,1411530754,1411548062,1411585392,
1411661845,1411679072,1411743770,1411761176,1411816305,1411892136,1072922650,1411924055,1411974012,1412028444,1412071445,1412094834,1412186596,1412235266,1412252279,
1412284503,1412340595,120799253, 1412431888,771620890, 1412448275,1412464671,683442204, 1412481055,1412497436,1412513819,1412546657,1412619124,1412678534,1412710456,
- 1412743189,666009602, 1412759590,1407860746,1412776020,1412808730,122503197, 1110900820,1412825613,366657562, 1412881269,1413120010,1413136394,1413153227,128925764,
+ 1412743189,666009602, 1412759590,1407860746,1412776020,1412808730,122503197, 1110900820,1412825613,366657562, 1412881269,1413120010,1413136394,1413153227,128925764,
1413201951,1413222034,1413270763,1413333825,1413365805,1413399453,1413480454,215482387, 1413503862,1413562374,1413578767,1413595158,1413611532,202522650, 1413631528,
180880040, 867926491, 1413660703,191545354, 1413678249,1413716855,1413874178,1196051, 1413907279,1413939242,1413955596,551452682, 1413979000,1414070406,1414086677,
- 1414103156,1414119558,1414135923,1414152232,81526820, 45907984, 1414168592,651232286, 1414191993,868696102, 1414266911,385646611, 875797370, 1414290299,464453670,
+ 1414103156,1414119558,1414135923,1414152232,81526820, 45907984, 1414168592,651232286, 1414191993,868696102, 1414266911,385646611, 875797370, 1414290299,464453670,
1414348831,1414369397,1414397955,14499861, 1414421372,1414749053,44253225, 1414939146,1414974593,922451990, 838418451, 6619568, 1415027582,1415118850,1415135242,
- 452018205, 1415151675,99893260, 1415185271,2129963, 118883593, 1415224191,163317034, 1415397378,66158618, 1415413847,1415462923,1415479332,1415495706,29261835,
+ 452018205, 1415151675,99893260, 1415185271,2129963, 118883593, 1415224191,163317034, 1415397378,66158618, 1415413847,1415462923,1415479332,1415495706,29261835,
1415513228,1415561347,1415577858,336543898, 1415614419,1415666560,1415774481,1415807002,868089954, 1415823961,242466837, 467959867, 1415858945,58802204, 1415912321,
1415972758,1416027010,1416285377,1416335154,1416380470,1416416022,864878632, 1416445983,1294237702,1416462423,212320282, 1416514036,1416561177,1416628446,1416675816,
1416708610,1033879568,1416740904,1416757264,218415135, 1416774169,1416846211,1416888351,1416904706,1416921144,1416953887,1416970256,671367178, 1416993668,1417117712,
@@ -2841,74 +2836,74 @@ static const unsigned int DictNodes[84251] =
1419369355,1419493456,1419526156,1419542530,1419558941,707854351, 1419575755,1419631500,1419674125,1419722836,254591023, 1419760083,124403714, 1419822202,1419886679,
1419942797,588503950, 430882846, 1420073871,1420181588,5866505, 305479762, 1420221328,1420361820,650051610, 29622301, 1420401266,1420443658,423215133, 1420460491,
1420516241,1420591534,1420647286,1420712805,148946959, 1420754973,1420772790,1420827538,461440203, 1420920635,1420974995,896122911, 1421033510,44466207, 1421053887,
- 1421106068,83591194, 208125968, 1421280397,1421328405,1421344834,1421378401,981729290, 1421410344,49774611, 1421426742,1421459538,1421493144,1234010138,278364186,
+ 1421106068,83591194, 208125968, 1421280397,1421328405,1421344834,1421378401,981729290, 1421410344,49774611, 1421426742,1421459538,1421493144,1234010138,278364186,
1421541468,1421574160,193593359, 1421597499,1421646741,1421721646,1421770764,1421787174,1421803995,199459040, 1421843350,1421968418,55033896, 5344122, 1422000587,
1422056343,1422121880,1422213227,723288483, 1422245933,1422279109,1422311480,1422344651,7307267, 1422400409,260457786, 1422695322,1422787996,1422836631,1422886262,
- 1422935269,266731551, 1423017873,1423049622,1423100657,1423130734,1423163394,1423179797,1423196226,1423230103,1423278092,1423294490,1423310850,119455851, 3229274,
- 1423334299,1423458310,1423474700,55148563, 1423491138,8395676, 1423526186,1423589483,1423629213,538198082, 309723138, 8389204, 1423674109,1423727518,140248624,
+ 1422935269,266731551, 1423017873,1423049622,1423100657,1423130734,1423163394,1423179797,1423196226,1423230103,1423278092,1423294490,1423310850,119455851, 3229274,
+ 1423334299,1423458310,1423474700,55148563, 1423491138,8395676, 1423526186,1423589483,1423629213,538198082, 309723138, 8389204, 1423674109,1423727518,140248624,
1423835983,1423867947,1423900682,308953142, 176504851, 1267941419,835027247, 1423922414,1424020463,1424087967,1424277762,21020826, 1424310338,1424344489,1157365762,
1424376570,1424415648,1424481185,36668761, 500711455, 1424605705,1424639393,452018186, 208503671, 110121902, 1424687211,1424720304,994788246, 1424754497,1424858018,
533069900, 131269455, 1424972707,198721652, 1425082136,1425145862,307134467, 1425165053,1425211430,1425227814,17006597, 62324852, 22216714, 1425244219,1425284004,
- 1425342571,1425382309,1425562534,458784780, 1425670184,1425686559,1425703019,917651496, 1425736202,1425769672,1425801751,1425833996,126517290, 853164044, 350634015,
+ 1425342571,1425382309,1425562534,458784780, 1425670184,1425686559,1425703019,917651496, 1425736202,1425769672,1425801751,1425833996,126517290, 853164044, 350634015,
5308525, 1425850408,1425866783,1425883148,560775194, 1425899531,460179590, 1425915958,198606854, 1425949620,6619218, 282034609, 1426512808,108707960, 1426637271,
1426669570,124403733, 1426693033,1426735116,1426751603,16269341, 1426767873,1426784257,1426800774,1426817046,1426833540,1426849814,17448969, 1427315627,1427397548,
1427523073,199868639, 1427587609,1427652634,1427676077,1427718160,50659347, 117904631, 1427734554,2195693, 1427750996,1427783690,1427802463,1427850071,1427882000,
- 292208650, 1427905454,1428078685,1428127787,1428162586,1428209674,1428226080,158500480, 1428265903,1428570302,1364001177,1428635840,1428669461,1428717574,220568496,
+ 292208650, 1427905454,1428078685,1428127787,1428162586,1428209674,1428226080,158500480, 1428265903,1428570302,1364001177,1428635840,1428669461,1428717574,220568496,
1428734036,1428768789,1428799519,44908556, 1428818201,1428882456,300581989, 1428930586,1428947181,115785759, 1428979714,1428996107,48676875, 1429013513,1429052337,
864043926, 1429143611,2752528, 1429183410,20365353, 1429274640,452018197, 1429291048,737771532, 1429309157,1429356572,143245340, 1429375610,1429422090,1429445555,
- 1429585979,1429625780,1429756853,1429914536,1429949596,25559970, 1429997604,1430047070,2131504, 1430094657,1430126659,1430211077,1430264758,1430340016,938409994,
+ 1429585979,1429625780,1429756853,1429914536,1429949596,25559970, 1429997604,1430047070,2131504, 1430094657,1430126659,1430211077,1430264758,1430340016,938409994,
1430373748,1430422365,1430461367,1430589797,162503608, 610779152, 1430625209,1430701553,383565843, 1430735424,1430789050,1430870971,1431079053,1431128171,1431175180,
1431191558,1431207955,1431224342,112279557, 1431240725,1431257090,1431273513,47120425, 1431289966,1146685456,1431322690,1431355914,1431388190,1431420966,1431437417,
- 1431470096,159760394, 1431493564,1431559101,9158791, 1431601154,1431617562,618142654, 1431641023,1431749662,1431781802,55869478, 1431815579,1431880119,126763062,
- 1431919552,1432067009,1432161473,1432207819,876019733, 1432263618,1432338926,47415334, 1432371202,190169098, 1432387596,604749830, 3211714, 1432409812,119799894,
- 1432509379,36716553, 52215820, 1432689604,1432731650,1432748466,1312342466,1432781706,1432820677,382765092, 191053843, 1432886214,1433030199,1433082823,145997853,
+ 1431470096,159760394, 1431493564,1431559101,9158791, 1431601154,1431617562,618142654, 1431641023,1431749662,1431781802,55869478, 1431815579,1431880119,126763062,
+ 1431919552,1432067009,1432161473,1432207819,876019733, 1432263618,1432338926,47415334, 1432371202,190169098, 1432387596,604749830, 3211714, 1432409812,119799894,
+ 1432509379,36716553, 52215820, 1432689604,1432731650,1432748466,1312342466,1432781706,1432820677,382765092, 191053843, 1432886214,1433030199,1433082823,145997853,
181174331, 188318729, 1433141353,1433181128,1433239554,1433255967,527056938, 1433279433,1433541578,1433616818,162840578, 388013003, 1433649999,484016227, 1433689036,
1433770957,27443349, 204066440, 1434222608,1434238986,360071197, 249987507, 1434255376,805142547, 1434278862,1434393551,1434468368,1434484737,51593256, 1434508100,
92930090, 1434566678,1434583106,199901213, 1434622928,1434966993,2359872, 388013010, 1435065299,1435107853,1435156949,1435205719,341986915, 1435261908,1435458517,
759579200, 1053197737,1435503638,1435573029,351010856, 1435638742,1435763264,1435802583,1435884504,1435926595,174030888, 1436015577,1436077195,1436159721,1249738773,
1436228570,1436294107,1436387558,15073286, 1436435324,1436484476,442254231, 46694422, 1436539868,291225654, 245907729, 1436697508,1436745754,1436762544,1436802013,
1436844073,1436860428,1436876828,1436893210,201572392, 1436916702,1436944455,1436998623,1437074087,1437107033,474890292, 1437138954,1437155359,120799251, 1437171752,
- 1437188555,1437243945,1437303327,1437359072,1437663770,195084591, 1437696087,1437745254,25561567, 1437785057,185319461, 1437893978,110166100, 1437925388,185810946,
- 1437941820,1438023740,381550613, 1438112738,316638705, 1438178275,468811778, 1438269546,1438353231,1438407652,1438467081,2197209, 46350363, 1438499275,285344707,
+ 1437188555,1437243945,1437303327,1437359072,1437663770,195084591, 1437696087,1437745254,25561567, 1437785057,185319461, 1437893978,110166100, 1437925388,185810946,
+ 1437941820,1438023740,381550613, 1438112738,316638705, 1438178275,468811778, 1438269546,1438353231,1438407652,1438467081,2197209, 46350363, 1438499275,285344707,
1438549615,1438597131,381550620, 1438613515,15073308, 1438637029,1438842890,1187282960,1438866406,1438925647,1438957676,427098607, 1438990795,1439039498,1439056181,
1439106264,1439219722,1439243239,8395752, 1439612940,1439629338,1439646098,10650447, 1439712458,1439761314,1439793605,1439833065,5309551, 1439940692,1439980522,
1440111595,1440186455,1440242668,131940392, 1440301098,185319464, 1440317446,2129986, 1440335549,1440422893,129433619, 1440534043,1440595995,1440635886,1440701122,
- 1440799727,1440858114,1440874522,3473446, 1440890972,1440923660,409944066, 1440940058,1440956851,40173699, 307616752, 1440996337,1441291250,1441415190,376356866,
- 1441431554,1441447974,1441464351,1441480725,8978454, 1441497109,108315125, 1441513525,1441546242,74661925, 1441562626,2202611, 1441579048,191414298, 159727618,
+ 1440799727,1440858114,1440874522,3473446, 1440890972,1440923660,409944066, 1440940058,1440956851,40173699, 307616752, 1440996337,1441291250,1441415190,376356866,
+ 1441431554,1441447974,1441464351,1441480725,8978454, 1441497109,108315125, 1441513525,1441546242,74661925, 1441562626,2202611, 1441579048,191414298, 159727618,
1441595394,1441611802,448544797, 1441628247,1441677366,2202612, 1441710134,1441742890,36765830, 1441760220,1441792002,385155077, 1441808386,8994852, 1441825227,
1441874157,1441906698,38879251, 1441923074,465322022, 1441946613,1442028534,602161162, 1442094071,333135956, 2196386, 1442218287,9388063, 1442257912,1442365665,
1442398679,433405981, 45613096, 1442438137,1442496627,75497587, 103448598, 1442512908,44941322, 1442529326,1442946043,1443021647,1443053608,670466054, 1443077116,
1443315714,1443333240,1443364885,1443381279,962805766, 1443404797,1443446786,146653210, 1443464823,1443528730,1443545090,1443561482,591609875, 757792799, 1053362676,
- 1443577858,1443594259,1443610625,7389224, 1443627245,1443659778,1443676186,158817278, 1443693081,1443758162,1443791275,1443824726,1443872799,1443889190,829718559,
- 278970380, 113836072, 279150608, 3244994, 1443906548,1443954726,180043804, 1443971181,1444011007,1444053004,15073290, 1444076544,1444233325,1444273153,758530058,
- 243810306, 1444380678,21102613, 1444397986,1444429836,52576372, 741130271, 1444453378,1216006432,1444568067,2195616, 21708916, 1444675596,883196011, 225132603,
+ 1443577858,1443594259,1443610625,7389224, 1443627245,1443659778,1443676186,158817278, 1443693081,1443758162,1443791275,1443824726,1443872799,1443889190,829718559,
+ 278970380, 113836072, 279150608, 3244994, 1443906548,1443954726,180043804, 1443971181,1444011007,1444053004,15073290, 1444076544,1444233325,1444273153,758530058,
+ 243810306, 1444380678,21102613, 1444397986,1444429836,52576372, 741130271, 1444453378,1216006432,1444568067,2195616, 21708916, 1444675596,883196011, 225132603,
1444695725,1444748292,1444954138,1444977669,1445052432,1445068810,1429543942,7733278, 1445086598,1445151241,25559092, 952877062, 1445183518,1445223205,1445281802,
110723114, 1445298242,112197689, 1445332591,1445387271,1445561334,1445593098,1445609775,740491323, 422658058, 1445643654,838451298, 1445710383,610222614, 1445780488,
- 486998047, 1445840264,201525054, 1445878793,1445977098,1446022448,1446068761,1446140939,158810939, 1446395934,1446429102,1446485004,1446550541,254593210, 643909273,
+ 486998047, 1445840264,201525054, 1445878793,1445977098,1446022448,1446068761,1446140939,158810939, 1446395934,1446429102,1446485004,1446550541,254593210, 643909273,
1446626144,1446690923,136003594, 9207829, 1446730766,172841999, 1446845456,1446943761,1447020730,24297690, 119998943, 1447058450,1447199482,1447238675,1447331837,
- 487030836, 1447386132,689569833, 1447468053,1447510018,1447526426,1447542813,1447559600,121356291, 1447599126,1447657524,1447690339,1447730199,1448008728,209616925,
+ 487030836, 1447386132,689569833, 1447468053,1447510018,1447526426,1447542813,1447559600,121356291, 1447599126,1447657524,1447690339,1447730199,1448008728,209616925,
186974262, 1448067159,1448120844,1448165808,1448198203,1448230924,1448247403,1448287257,1448347264,1448397933,421085240, 268863646, 1448477217,522978225, 1448529874,
- 547962996, 402440213, 1448598554,136119234, 114917442, 1448674694,1344946284,1448739735,17842285, 1448795163,416972812, 1448902662,1448919042,552894502, 451772482,
+ 547962996, 402440213, 1448598554,136119234, 114917442, 1448674694,1344946284,1448739735,17842285, 1448795163,416972812, 1448902662,1448919042,552894502, 451772482,
1448942620,1449099286,235439988, 1449115658,1449132879,6373978, 192200761, 1449165268,381550630, 249102873, 1449197655,1196392460,1449249102,1306869771,1449368605,
- 1449478925,1449543108,10034206, 6374520, 1449575292,409272419, 1449630751,152272922, 1449696288,1449885718,1449902106,414089247, 1449918688,194037082, 103546882,
+ 1449478925,1449543108,10034206, 6374520, 1449575292,409272419, 1449630751,152272922, 1449696288,1449885718,1449902106,414089247, 1449918688,194037082, 103546882,
1449958433,1450132608,659914790, 1450180634,1450197395,1450246195,1450279215,1450314069,1450377358,1450410090,1450492867,1450548258,1450590220,167084038, 1450610784,
190169119, 1450662947,1450754895,6602790, 1450786924,1450826788,1450901516,837435914, 1450917894,1450934872,1450970470,1451039781,1451081782,1451121702,1451180054,
1451196550,402538518, 641531916, 1451220007,1451245571,120143900, 1451269160,1451379155,1451425855,118883151, 1451458653,148897821, 1451507722,441532458, 1451524212,
1451540522,1451556885,15482918, 1451573258,1451591246,1451638822,1451655191,14549010, 1451671562,1451688052,1451704342,461963304, 1451726646,1452071977,1452137514,
732102678, 1452203051,126025749, 1452268588,17924118, 1452310530,1452326943,1452343338,72368140, 1452359709,159694888, 27607081, 1452383277,1452458790,1452490783,
- 1452507268,1452523654,59375753, 1452542391,230555730, 1452606376,1452638237,1452654623,93978630, 1452678190,1452770965,1452842031,1452998666,1453015069,279150594,
+ 1452507268,1452523654,59375753, 1452542391,230555730, 1452606376,1452638237,1452654623,93978630, 1452678190,1452770965,1452842031,1452998666,1453015069,279150594,
1453031478,1453071408,47480834, 1453180202,1453230372,1453293620,1453326807,1453360022,1453415473,1357447220,1453497394,1453710387,1453949070,1453981999,1454014483,
1264975894,150913495, 1454038068,1454146136,1454179196,7095143, 6620098, 1454234677,1454326921,3245266, 1454380037,1454440470,89128962, 1454456844,1454473242,
341986351, 1454489716,1454506015,1454522657,1254916555,1454558118,1454587949,1454627894,1454709815,1454775352,1454808120,66821176, 1454835248,1426751493,1454873657,
1454981177,1454997546,1455013916,48480297, 377658426, 1455030284,2343042, 1455053883,1455128595,1455145001,214007844, 1455161460,496582685, 1455184956,1455243300,
- 1455259764,1455276039,1455292498,1455325216,883736617, 1455365181,1455440003,70729858, 1455457310,67485698, 1455490397,975192105, 1455538198,1455554676,103743489,
- 1455996965,1456013321,917620, 1456036927,1456160790,118472735, 1456177649,1456259531,1456308264,1456324639,19251302, 1456348224,1456440985,1456488450,248840218,
+ 1455259764,1455276039,1455292498,1455325216,883736617, 1455365181,1455440003,70729858, 1455457310,67485698, 1455490397,975192105, 1455538198,1455554676,103743489,
+ 1455996965,1456013321,917620, 1456036927,1456160790,118472735, 1456177649,1456259531,1456308264,1456324639,19251302, 1456348224,1456440985,1456488450,248840218,
1456505672,1456603174,117506480, 1456620433,140247142, 204374027, 1456671071,140787810, 1456717845,1456734234,178814978, 1456757825,108315057, 199868641, 1456869286,
1456914448,117424133, 1456938050,1457160494,1457193044,8395843, 1457227636,5865524, 1457258601,1457291270,7307304, 1457309435,1457364036,2801701, 1457429573,
163414032, 1457471529,1457487902,1128169538,1457527878,1457603505,6717450, 1457636815,1457733725,1457790023,1457865611,1457930246,1457948453,1457995786,1458012202,
1458028555,45465612, 1458045792,1458117704,8395849, 206880924, 1458536469,1458552854,558628948, 526368784, 555270156, 1458570334,308576268, 130269205, 1458618510,
1458658378,1458716738,144441794, 1458756683,1458838604,1458929666,681968093, 1458953293,1459093514,1459117134,1459191892,1459226645,1262141858,307134466, 1459259951,
- 1459330127,871744402, 1459406313,1459454799,1459493968,1459540146,1459604029,1459690577,1459814410,1459831318,1459870802,472287863, 1460018259,351911952, 232292373,
+ 1459330127,871744402, 1459406313,1459454799,1459493968,1459540146,1459604029,1459690577,1459814410,1459831318,1459870802,472287863, 1460018259,351911952, 232292373,
358105147, 1460097432,1460176606,1460224046,1460280404,1460537947,632308147, 1460600854,1033584724,1460620355,1460682857,1460722773,1460864969,1460912934,1460944934,
31424528, 1460961334,5505039, 1460998729,755784790, 1461066839,1461159202,1461207042,59228198, 3538965, 1461223878,1461263448,50036873, 1461454473,1461555584,
1461607513,8389017, 1461781443,1461829644,1461846230,1461879255,524763142, 1461911554,5324909, 1461928002,1461961702,1462000730,191938575, 1462190559,1462230107,
@@ -2916,28 +2911,28 @@ static const unsigned int DictNodes[84251] =
1463026577,1463074897,1463114847,1463180384,113541434, 1463255108,451379202, 1463304238,1463353382,1463370203,1463402967,1463437365,1463490869,1463566873,1463631882,
1463648272,1463664697,1463681499,1463714842,1463763478,1257505745,884746, 1463795752,1463812122,1463828516,2752530, 1463852129,1463992332,599688538, 1464009829,
1464057877,1464074271,385025058, 1464094774,430014505, 148635707, 1464139807,131777114, 1464158238,1464205328,51380250, 1464228962,1464254598,1212426, 1464278115,
- 1464352809,642154532, 916537346, 1464376420,1464474725,1464516610,1464533011,56311945, 1464946598,1464999015,1465106926,510771226, 1465139831,167084048, 108396546,
+ 1464352809,642154532, 916537346, 1464376420,1464474725,1464516610,1464533011,56311945, 1464946598,1464999015,1465106926,510771226, 1465139831,167084048, 108396546,
1465179240,1465244777,2359387, 17225314, 1465339399,1465401390,1465454547,1465506922,1465652574,1465713074,208849584, 1465746055,1465795525,1465844556,1465893323,
- 1465942100,1465975544,5325479, 1466014827,1466113132,1466155542,877805649, 373604394, 1466195053,1466335242,1466351645,186040326, 1466370431,1466433574,147423248,
+ 1465942100,1465975544,5325479, 1466014827,1466113132,1466155542,877805649, 373604394, 1466195053,1466335242,1466351645,186040326, 1466370431,1466433574,147423248,
1466449946,1466466314,506036226, 281935874, 1466489966,1466565079,1466598907,1466647490,1466686575,1466829119,1466859586,1466894523,1466948720,1190723625,1466997873,
435554082, 1467063410,1467210867,1467292788,1467440245,1467522166,1467620471,464945441, 1467744262,307616888, 6406175, 1447264348,1467767929,1467858946,1467875368,
- 44662826, 2196030, 8395898, 1467899003,1467991070,1468023936,1468071995,447840266, 1468111996,1468235778,142262282, 1468258633,1468308605,1468498600,86638594,
+ 44662826, 2196030, 8395898, 1467899003,1467991070,1468023936,1468071995,447840266, 1468111996,1468235778,142262282, 1468258633,1468308605,1468498600,86638594,
1468537982,1468612684,1468652671,1468792948,3178536, 1468816512,9207831, 8601746, 385286184, 1468898433,281935910, 1469055069,270516250, 1469104194,1469144194,
- 1469284843,232849439, 1114134, 1469317173,1469357187,1469448198,1469464588,50151434, 1469480972,695369754, 118882380, 1469504644,1469612114,1469644806,152256553,
+ 1469284843,232849439, 1114134, 1469317173,1469357187,1469448198,1469464588,50151434, 1469480972,695369754, 118882380, 1469504644,1469612114,1469644806,152256553,
140788745, 1469661186,5866417, 327965829, 1469677633,1900547, 1469726943,1469759969,1469808652,134840346, 1469832326,1470045319,1470120828,1470175448,1470225544,
- 1470267404,1470283786,1470300166,1470318942,292945932, 1470373001,1470504074,901152799, 1470578714,1470595112,119259165, 1470612303,1470651531,1470742960,7307276,
- 1470782604,1470962829,2834927, 363513130, 1471021293,1471053850,1174880297,1471077518,1471152194,1471184898,1471202040,1471234480,1471267735,1471323279,23757203,
+ 1470267404,1470283786,1470300166,1470318942,292945932, 1470373001,1470504074,901152799, 1470578714,1470595112,119259165, 1470612303,1470651531,1470742960,7307276,
+ 1470782604,1470962829,2834927, 363513130, 1471021293,1471053850,1174880297,1471077518,1471152194,1471184898,1471202040,1471234480,1471267735,1471323279,23757203,
1471496223,1471512588,161726492, 246563274, 1471529419,1471579080,1471660972,1471725634,1471758443,1471791994,1471840296,110215607, 1471856692,1471889429,1471905794,
1471922191,1471938576,1471954950,1471971394,1472004117,1472020520,1472036876,33112079, 1472053307,1472086057,1472102422,1472118900,1472135197,7667753, 1472158864,
- 174800934, 764624917, 1472217223,19447813, 1472233474,1472249862,251330597, 1472266281,1472282756,1472299009,1472315433,1769481, 1472823599,1472856069,73531423,
+ 174800934, 764624917, 1472217223,19447813, 1472233474,1472249862,251330597, 1472266281,1472282756,1472299009,1472315433,1769481, 1472823599,1472856069,73531423,
1472872879,1472909664,1472942732,86081564, 1472978066,1473020067,17154071, 1473052806,1473069171,1473085575,28475524, 1473101958,9158675, 1473122678,1473151014,
- 76775430, 1473167417,1473183760,88883206, 1473626121,44236826, 1473649812,15007766, 45023234, 52150310, 656916482, 1473813653,1474010262,1474135305,13549590,
+ 76775430, 1473167417,1473183760,88883206, 1473626121,44236826, 1473649812,15007766, 45023234, 52150310, 656916482, 1473813653,1474010262,1474135305,13549590,
2113538, 1474166786,1474184563,1474216239,1474248710,171835413, 1474272407,146784315, 1474337944,1474387097,1474461734,6373442, 1474485402,131891298, 1474629487,
1474691832,152190987, 1474726317,1474773008,1108295720,1474789378,360005658, 8391235, 1474805790,1474845851,1474904066,1474920474,1474938124,1474993308,1475173533,
1475253578,13549606, 1475337374,1475412569,914884460, 5309095, 204537882, 1475452063,208504305, 1475648672,1475690506,2359338, 1475706892,1466171418,1475723276,
1475739674,52363274, 1475757721,152191086, 47120387, 1475805199,1475821594,1475837954,44253190, 1475861665,1475953107,325369866, 287572544, 1476009122,1476140195,
948617227, 1476215143,153190498, 1476254884,1476385957,1476493371,1476527706,1476559307,2162704, 1476609013,152946641, 1476673595,345784325, 1476709763,1476755947,
- 1476788226,1476804646,1476821007,146456598, 2408460, 1476838268,1476888112,1476926630,2179074, 4161548, 1477182835,1477215095,1477247916,1477313033,366116879,
+ 1476788226,1476804646,1476821007,146456598, 2408460, 1476838268,1476888112,1476926630,2179074, 4161548, 1477182835,1477215095,1477247916,1477313033,366116879,
1477352615,1477427284,110232029, 1477461335,1477509146,1477526913,1477574694,1477591042,1215299624,1477607927,1477657929,164118538, 1477713064,191678490, 1477804034,
125927481, 1477827753,1477975210,2201715, 131432464, 1478164502,5309937, 1478181167,253788162, 59310092, 1478217008,1478262868,1478296540,127044053, 1478328352,
1478368427,1478679724,1478852651,1478885458,1478918447,1478951019,50135042, 1478984099,1479019986,760135709, 1982480, 610698399, 1475969046,1479083351,1479133760,
@@ -2945,15 +2940,15 @@ static const unsigned int DictNodes[84251] =
1479606278,1479622675,1479639056,202522639, 45891586, 1479662767,184926230, 191906095, 1479721003,110232073, 1479753820,1479786512,428769306, 1479810224,1307230210,
1479999504,121110554, 1480017902,87048202, 1480072369,1480163338,1480180138,1480219826,1480311385,1480350899,1480432820,1480596661,1480687646,1480727734,1480851466,
19267621, 1480867868,1480884283,59260940, 1480924343,1481006264,214630437, 1481083067,1481130423,1481162754,1481179815,1481212372,1481244694,177324044, 1481268409,
- 1481333946,1069432870,1481377733,1481415867,1481507119,1481540777,1481572362,16826671, 1481596092,1481825469,1481982892,2146607, 1482047531,635060264, 2195950,
+ 1481333946,1069432870,1481377733,1481415867,1481507119,1481540777,1481572362,16826671, 1481596092,1481825469,1481982892,2146607, 1482047531,635060264, 2195950,
1482080793,147013748, 1482145814,618348546, 1482169534,1482293286,29900816, 1482309634,1482326027,533135372, 1482342830,52150283, 1482391554,14254089, 1482408828,
1482460861,2195507, 1482546367,1482670090,1482688734,1482735618,1482753199,1482792128,1482867595,1482932306,1482965029,8389961, 1482981422,1483031636,1483080725,
1483136193,1180942367,5882159, 1483185346,1483325974,1483358238,829718568, 1483390992,1483407372,55754793, 1483424175,1483456577,1483507853,5325983, 1483562179,
1483857092,1484112743,1484144724,7389210, 230555714, 1286865355,180601105, 1484177430,1484194095,1484226570,1484242946,527056924, 1484259343,547684392, 1484283077,
1484414150,1484458761,1484512455,1484703169,155025424, 533070061, 50937872, 1484734486,122323247, 1484758216,1484832867,1484872905,441387071, 1484947487,1484963866,
- 1484980226,1484996629,517783574, 1485013051,6602789, 1485045762,1485062151,1485078659,90259586, 1485094972,1485184202,1485277144,1485348043,1485473220,24297947,
+ 1484980226,1484996629,517783574, 1485013051,6602789, 1485045762,1485062151,1485078659,90259586, 1485094972,1485184202,1485277144,1485348043,1485473220,24297947,
1485511884,1485637841,1485684752,1485701160,1485717507,533544972, 1468006507,188940290, 110117841, 8994822, 1485733947,1485766693,1485783080,47923211, 1485800532,
- 1485855949,1485946886,119537695, 1485970638,1486167247,1486241807,540950530, 1486259153,1486308801,1146683437,56049680, 533544962, 1486345540,246562838, 433750100,
+ 1485855949,1485946886,119537695, 1485970638,1486167247,1486241807,540950530, 1486259153,1486308801,1146683437,56049680, 533544962, 1486345540,246562838, 433750100,
1486422471,1486472222,1486503974,1125974028,1486520380,1486609616,1486667807,1486684166,1486700565,544047130, 1486724305,1486800912,1486850420,299810861, 1486913839,
118883827, 1486949040,1486995560,1476821013,1487045819,1487093779,1487110166,478543903, 1487519753,1212439, 1487543507,1487814959,7094767, 175325206, 1487854547,
1487896602,1487912989,444153868, 1487929803,48529424, 1487978498,1487994890,1129381898,1488012262,1488044075,1488076884,1088536602,1488111184,1488191690,1488224278,
@@ -2961,22 +2956,22 @@ static const unsigned int DictNodes[84251] =
1488575700,1488666630,125927446, 1488683046,2130001, 1488699448,376324118, 1488739541,19251302, 1488834671,1488903382,1489010754,1489050839,1489197984,1489263832,
1489340520,1489394905,1489539339,1489584140,308871199, 1489601055,1489649666,1489666147,1489703872,1489755354,1489820891,175620122, 335052840, 1489912345,1489984732,
1490076573,1490164957,760955374, 1490230494,1490276584,1490377951,1490452490,1490472540,2196401, 1490541792,1490633897,1490665524,1490698317,1490731039,1490747411,
- 2197393, 1490763882,1490847171,1490895902,1490935009,1490993188,30392322, 1491009602,1491042360,1491082466,1491255327,1491271717,608043067, 1491288743,152567867,
- 1491323347,1491369986,1491387047,1491419167,45875229, 1491435526,1212431, 1491452334,1491501140,1491537059,2162690, 1491606755,1491852516,1491992578,45531178,
+ 2197393, 1490763882,1490847171,1490895902,1490935009,1490993188,30392322, 1491009602,1491042360,1491082466,1491255327,1491271717,608043067, 1491288743,152567867,
+ 1491323347,1491369986,1491387047,1491419167,45875229, 1491435526,1212431, 1491452334,1491501140,1491537059,2162690, 1491606755,1491852516,1491992578,45531178,
1492009454,1492045676,294535199, 1492098277,49086476, 1492196582,168238311, 1492320287,265601050, 1293877276,1492336642,19267599, 1492360424,238714911, 1492451873,
- 1492500919,116228133, 1492533551,1492567242,1492615194,1492631639,1492680730,1492699487,1492753368,1492802793,1492933866,1493008687,1493048555,1493114092,148636481,
+ 1492500919,116228133, 1492533551,1492567242,1492615194,1492631639,1492680730,1492699487,1492753368,1492802793,1492933866,1493008687,1493048555,1493114092,148636481,
1493212397,1493352550,461963280, 1493389730,1493451191,1493483551,59310096, 1493507310,131874900, 1493605615,1493671152,1493982399,849183146, 1494113213,1494155274,
208896042, 1494172595,1494204427,1032454160,1494228209,47611926, 1494335920,210618228, 1494368688,1494401034,149128332, 1494421219,1494552074,146767874, 1494614934,
1494663225,1266204688,1494683540,5177356, 1494746316,1494795466,1494844310,115721225, 1494892546,947929098, 1494908966,478756895, 1494925744,1494965490,1495014601,
1495096563,2261032, 272156100, 335151144, 1495220255,7733743, 1495244020,194609163, 1495351327,1442136083,1495367983,1495400879,1489273996,1495440629,1495515152,
- 56049704, 47038504, 1495538934,198721567, 1495581700,113656641, 1495648981,934903924, 1495700715,205946902, 1495751927,1495817464,1495892075,1495925189,52592656,
- 1495964921,1496243450,1496301613,1496334352,478954526, 332480539, 706101332, 1496351598,1496423675,1212760104,1496469907,1900601, 1496515639,1496547631,5312869,
+ 56049704, 47038504, 1495538934,198721567, 1495581700,113656641, 1495648981,934903924, 1495700715,205946902, 1495751927,1495817464,1495892075,1495925189,52592656,
+ 1495964921,1496243450,1496301613,1496334352,478954526, 332480539, 706101332, 1496351598,1496423675,1212760104,1496469907,1900601, 1496515639,1496547631,5312869,
1496581008,1496612902,1300807682,1496636668,1496767741,168903157, 1496825915,1496858731,1496894620,1496947966,1497046271,1497268461,1497301295,1497333997,1497367375,
1497399790,113115173, 412696579, 1007255590,1497439488,1497603329,714868510, 959479845, 1497677930,1497762996,99663888, 1497841676,1497858074,963952671, 1497881858,
1498029315,1498104408,1306804230,19252649, 1498144004,1179271245,1498193157,462667778, 1498252441,1498300447,1498316830,1498349594,19267587, 1498366489,1498431500,
- 1498447898,1498464690,2539546, 1498498932,1498537222,1498628127,159450351, 1498651911,1498791946,30867591, 1498808855,1498841109,1498857494,1066025002,7618588,
- 1498873877,1498890262,1140310057,1498907406,571129885, 1209073685,1498946824,2199904, 1499152406,1499168799,904937484, 1499185282,1499201541,1499217927,2130035,
- 1499240353,1499267077,96960524, 1499290889,1499332626,1499349122,1499365386,1499381798,71794707, 1499398281,1499414658,2179207, 1499856905,1499873321,17432588,
+ 1498447898,1498464690,2539546, 1498498932,1498537222,1498628127,159450351, 1498651911,1498791946,30867591, 1498808855,1498841109,1498857494,1066025002,7618588,
+ 1498873877,1498890262,1140310057,1498907406,571129885, 1209073685,1498946824,2199904, 1499152406,1499168799,904937484, 1499185282,1499201541,1499217927,2130035,
+ 1499240353,1499267077,96960524, 1499290889,1499332626,1499349122,1499365386,1499381798,71794707, 1499398281,1499414658,2179207, 1499856905,1499873321,17432588,
1499897099,3213798, 1005453353,3874060, 1500120462,1500184598,1500200962,214679562, 1500220248,1500273933,266764804, 1500349524,1500400212,1500454158,1500578825,
126959626, 1500617999,1500710518,1500758058,1500774406,2113538, 4702730, 144441410, 1500798224,87556107, 254591057, 1500872741,1500889100,444580199, 1500912913,
1501009506,1501052938,51593247, 442843600, 1501069343,1501085708,1501102106,1501119376,1501158674,161726502, 7095143, 1501415033,6209576, 1501463721,1501502739,
@@ -2988,60 +2983,60 @@ static const unsigned int DictNodes[84251] =
210518022, 1505484076,1505673687,705462284, 1173176386,1505705986,351010847, 1505724057,1505772716,1505828141,1506155822,45858845, 1506254127,115064870, 1506362104,
49774621, 1506394571,1506450736,1506492447,1506508854,1506549041,1506690078,1506729266,1506838855,893501524, 1506893107,1507024180,1507106101,1283751974,1507278878,
421429284, 1507313162,1507361300,50085993, 311215304, 1507413869,172837902, 1507482934,1507575014,1507672095,421036139, 1507688458,1507704874,482214315, 1507728695,
- 150601779, 1507868691,1507885093,164233648, 1507901456,1507917916,1507950638,1508007224,3212111, 1508056377,1508212738,1508229160,1508245514,333742118, 113459202,
+ 150601779, 1507868691,1507885093,164233648, 1507901456,1507917916,1507950638,1508007224,3212111, 1508056377,1508212738,1508229160,1508245514,333742118, 113459202,
1257161198,1508261931,1508294666,1508311472,126025785, 1508343810,1508360202,51560490, 1508376592,1508392970,1508409386,22216711, 1508433210,1508540418,1508557560,
1508589634,1508623732,7734008, 1508678971,1509002391,1509064735,1509081098,1509097488,263946259, 1509121340,1509180152,1509213563,1509279353,1509334333,1509383486,
1509474326,433635330, 430669830, 1509491535,1509524057,1509563711,699138086, 385515586, 1509638681,1509704194,1509736454,55033878, 1509760320,131859801, 1509855778,
- 124403754, 153749209, 1509933533,1509965905,1510006081,508626695, 1510071618,1510202691,1510244354,47415336, 1510260802,1510295116,1333133322,1510350148,186269801,
+ 124403754, 153749209, 1509933533,1509965905,1510006081,508626695, 1510071618,1510202691,1510244354,47415336, 1510260802,1510295116,1333133322,1510350148,186269801,
609813327, 62341162, 1510415685,1510612294,1510670795,1510719527,1135345686,1277182383,1510752715,1510808903,1510900766,1510932969,1510984870,1511064994,1511120200,
306775520, 1511309334,1511326636,1511392351,1511456774,1033224223,110232128, 2196603, 1511473912,1511508072,113836051, 1324778526,1511562195,1511611721,1511686237,
1511739859,1511800844,498472833, 1511820855,1511873866,1511999402,5866665, 1512064372,1512119627,1217871898,1512381772,1512460337,1512505349,528859172, 1512521809,
328073226, 1512561997,1512783888,1255194626,1512800302,61456410, 1512851221,159760390, 1512916244,1512964188,614858768, 1512996910,1513046042,456130592, 1513062859,
- 1513119054,7454730, 1513278008,1513309381,1513357428,86097960, 1513373718,1513390108,641859641, 7454762, 82559014, 1513413967,1513488396,1513504796,91930635,
+ 1513119054,7454730, 1513278008,1513309381,1513357428,86097960, 1513373718,1513390108,641859641, 7454762, 82559014, 1513413967,1513488396,1513504796,91930635,
1513528656,1513725265,1514012674,1514029082,853164048, 1514045462,1514061826,1514078229,1514094829,298352656, 1514128884,112197748, 1514176622,1514209505,1514242088,
- 1514258458,52756482, 1514282322,1514391853,1514446163,7094575, 1514511700,926302218, 1514619183,1514651684,1514668072,1514684432,1514700826,1514717186,2850856,
+ 1514258458,52756482, 1514282322,1514391853,1514446163,7094575, 1514511700,926302218, 1514619183,1514651684,1514668072,1514684432,1514700826,1514717186,2850856,
1514741077,1514946606,5079462, 1514995728,1515012106,1515028482,124403727, 1515052374,299794474, 1515130281,1157365776,1515160399,10829840, 1234125301,1515199831,
158254842, 575209494, 1515290626,2198195, 6455332, 1515307096,1515340536,449757200, 1515380056,199377199, 1515487243,1515503618,1515520010,1508311071,1515537482,
- 1515569236,1515601931,1515618319,941654038, 233472920, 1515635448,1515674969,2196872, 1515806042,1515849249,389137905, 1515882979,6897723, 1515913232,112935591,
+ 1515569236,1515601931,1515618319,941654038, 233472920, 1515635448,1515674969,2196872, 1515806042,1515849249,389137905, 1515882979,6897723, 1515913232,112935591,
1515929612,1515946744,1515978762,1515995172,1516011541,1516027910,1516044325,113115172, 1516068187,1516306516,1516339228,1516355586,348618762, 1516371994,1516388389,
363741200, 1516405231,14794774, 1516437934,1516487195,1516519455,29769785, 1516535850,699138076, 1516552656,2113542, 1516601346,1516617739,1516634151,1516667857,
- 1516716116,2147206, 1516748907,1516782103,219578384, 1516814358,1508311042,1516830760,1516847110,1516864567,41566227, 1516903772,1517062838,266486231, 112427030,
+ 1516716116,2147206, 1516748907,1516782103,219578384, 1516814358,1508311042,1516830760,1516847110,1516864567,41566227, 1516903772,1517062838,266486231, 112427030,
1517128004,2179375, 87031820, 378142722, 1517158402,1517178236,1517207583,75530243, 1517224354,1517256714,2719765, 1517673821,8390995, 1517731924,1517764614,
- 1137557525,1517788510,1517864460,1517903199,1517961237,1325809667,5309176, 1517978514,1518027243,1518067040,1518224458,1518256193,1518305371,719093767, 451871187,
+ 1137557525,1517788510,1517864460,1517903199,1517961237,1325809667,5309176, 1517978514,1518027243,1518067040,1518224458,1518256193,1518305371,719093767, 451871187,
33112102, 1518338337,1518370818,233193498, 1518394721,1518554282,1518632986,343883787, 1518649403,1518682127,1518699594,442744898, 132154232, 456523792, 1518738786,
1518787939,1519043496,1519076137,1519111640,188581512, 1519164772,1519312229,1519435832,27607043, 1519476070,289980428, 1519599637,257572876, 1519623527,1519735816,
1519780687,1519814545,1203372491,1519849548,1519894540,1519910915,55459882, 1519934824,1519992853,177963046, 1520010827,573374470, 108314729, 1520058414,1520110782,
1520205934,7307269, 1520240427,1520278889,1520599093,1520635780,1520746594,227115034, 1520782564,1520835946,1520893964,1520910375,1520943169,343301483, 1030930448,
- 1520992302,1521041461,1521081708,381550614, 1521140905,1521172490,46039156, 1521188880,1521205267,299008022, 1521222545,1521270877,1521327469,1521573230,158811264,
- 154813551, 1521704303,153748825, 252116994, 1521851760,1522015601,229654538, 1522188351,1522228594,1522303022,1917026, 1522353991,1522401285,1522417695,193839125,
+ 1520992302,1521041461,1521081708,381550614, 1521140905,1521172490,46039156, 1521188880,1521205267,299008022, 1521222545,1521270877,1521327469,1521573230,158811264,
+ 154813551, 1521704303,153748825, 252116994, 1521851760,1522015601,229654538, 1522188351,1522228594,1522303022,1917026, 1522353991,1522401285,1522417695,193839125,
1522434585,1522507123,1522565176,1522597940,1522638196,1522729102,1522761740,576471061, 1522778114,93978645, 1522802037,1522860048,6946857, 1522883958,1522975023,
- 1523015031,1523240436,338134362, 1523319544,1523359096,1523434390,761889622, 1523483161,163299375, 311820310, 184386581, 1523549574,1523619701,1523696649,109051943,
+ 1523015031,1523240436,338134362, 1523319544,1523359096,1523434390,761889622, 1523483161,163299375, 311820310, 184386581, 1523549574,1523619701,1523696649,109051943,
546553912, 1523731028,1524079994,1524187278,1524221307,1524292987,1524351005,1524367391,1524383754,114114572, 1524400140,1524417566,1524456828,1524613721,1524646933,
- 1524702589,1524776962,1524793370,1524809749,1524827145,1524859326,1524924518,1524957643,110231972, 500793363, 1525013886,1525088258,128991253, 1525105090,88948752,
+ 1524702589,1524776962,1524793370,1524809749,1524827145,1524859326,1524924518,1524957643,110231972, 500793363, 1525013886,1525088258,128991253, 1525105090,88948752,
944604001, 1525144959,1525448720,1525465190,1525497887,293584902, 1525514324,87916560, 1525547970,30343457, 1525579835,4997799, 1525612990,1525685632,1525925150,
- 1525973839,2196070, 1526005826,721077278, 1526038544,1526056981,110231618, 1526087764,385597677, 750469126, 1526123704,1526172793,3736735, 1526284757,186975144,
- 551616907, 1526333977,1526400811,1526431766,1526448140,56262668, 1274216882,1526464572,1526553985,1526619522,1526717827,1526808582,119570454, 1526824976,36651232,
+ 1525973839,2196070, 1526005826,721077278, 1526038544,1526056981,110231618, 1526087764,385597677, 750469126, 1526123704,1526172793,3736735, 1526284757,186975144,
+ 551616907, 1526333977,1526400811,1526431766,1526448140,56262668, 1274216882,1526464572,1526553985,1526619522,1526717827,1526808582,119570454, 1526824976,36651232,
1526848900,1526992617,1527054639,1527087150,1527137310,1527169326,1527209349,1527332946,540101075, 1527367144,320719152, 1527422342,1527471495,258376440, 1527597740,
- 409256981, 1527717256,1528012169,5947408, 281002000, 1528087942,1528152555,1528192394,1528315916,1528332294,1044021353,1528348726,146785065, 1528381481,27625658,
+ 409256981, 1527717256,1528012169,5947408, 281002000, 1528087942,1528152555,1528192394,1528315916,1528332294,1044021353,1528348726,146785065, 1528381481,27625658,
1528398318,1528438155,1528528977,1528563149,1528601996,505856098, 1528791105,45776934, 731676682, 165560349, 1528847757,1528922572,270401620, 1528954890,1528971285,
1528987679,1529004070,1529020454,46514192, 1529037259,152965387, 1148141570,1529093518,270352468, 1529136006,1529167956,361988118, 1529200671,1024540700,1529224591,
- 1529282582,1529306512,1529397258,1529414085,251593931, 1529447318,368739249, 1529503121,1529612481,1529660390,1529699730,1529942104,114393130, 1529988491,168017932,
- 1530039792,5325726, 1530118246,1530158483,741539878, 1530216507,1530256788,1530453397,1530548819,880919334, 1530633622,6602763, 348782634, 1530708930,324534274,
- 1530743842,1530806379,141787147, 1530839140,1530879383,1531043224,1531117604,744079400, 1531134446,1531166786,1531201412,1531272601,1531332622,1531379752,853409818,
+ 1529282582,1529306512,1529397258,1529414085,251593931, 1529447318,368739249, 1529503121,1529612481,1529660390,1529699730,1529942104,114393130, 1529988491,168017932,
+ 1530039792,5325726, 1530118246,1530158483,741539878, 1530216507,1530256788,1530453397,1530548819,880919334, 1530633622,6602763, 348782634, 1530708930,324534274,
+ 1530743842,1530806379,141787147, 1530839140,1530879383,1531043224,1531117604,744079400, 1531134446,1531166786,1531201412,1531272601,1531332622,1531379752,853409818,
1531396348,1531436442,1531518363,1531674717,1531727219,1531789343,1531805733,1399029776,1531829660,1531871244,109150307, 1531887682,1531927965,6897967, 1532042654,
54411304, 52576282, 1532100911,1532133398,1532149770,8994827, 1532167084,321601644, 1532232115,1532264751,871301219, 1532297281,7307292, 268665327, 1532352017,
1532395822,1532428307,1532444674,1532461078,1532477442,6455307, 1532494742,358105147, 1532550559,6127627, 1532675025,1532723309,1532763552,1532821531,1532854313,
1532872051,148635758, 1532905250,1532936195,38879247, 1532952681,402309126, 1532985460,1533001785,1154269300,1533019633,1533051011,1533067396,1002143876,1533091233,
1533132837,1533150732,66815500, 1533313052,1533329420,1533345802,615792662, 1533369763,1533707155,290406440, 1533755819,1533788172,1533805015,148111401, 1533844900,
204603408, 1533888651,1533955814,1534034750,1534099496,229965843, 1534116319,1534153815,1534247927,1534313447,433225759, 1534369189,1534428479,4653138, 1534492748,
- 1534525496,254591403, 1534565798,4997227, 1534853179,1534885898,1534902288,340280780, 1534919147,1534952820,1535008167,31801356, 1535103112,1535131717,372949094,
+ 1534525496,254591403, 1534565798,4997227, 1534853179,1534885898,1534902288,340280780, 1534919147,1534952820,1535008167,31801356, 1535103112,1535131717,372949094,
1535164432,1535180842,1535197215,1535213570,56049674, 1535237544,1535344694,1535377492,1535417769,1535590431,1222787084,1535606843,1535641537,1535696298,1535754256,
1535770662,520388629, 1535794603,1535902167,1535934520,267994713, 1535967238,7095351, 1535983675,1536023980,618446850, 1536081935,457539586, 1536105901,1536181238,
108317355, 1536213058,124862959, 1536245984,1536281144,110215275, 1536312838,1536368046,1536528339,1531256239,1536581040,1536688150,1536704524,9388058, 1536728497,
1536820649,1534099487,1536853129,124863462, 392265744, 1536908722,1537056179,1222787103,1537138100,1537277964,154469161, 1537294429,1537343510,1537359888,1537376268,
588742725, 1537394466,1537425420,1537441891,1158283286,1537475756,718962795, 1537525498,1537564085,154796523, 1537606544,1537638419,970342422, 284918705, 1537654824,
1537671187,51036162, 1537695158,1537950297,1537982490,302989341, 1537998867,27624900, 1538015808,460406843, 198721539, 1538055607,349765647, 1538131031,1538180697,
- 1538235832,1538277388,1293369451,254427148, 1538301369,1538408460,444989466, 501548945, 1538432442,1538655241,1538687007,173703697, 1538710971,1538773772,44253241,
+ 1538235832,1538277388,1293369451,254427148, 1538301369,1538408460,444989466, 501548945, 1538432442,1538655241,1538687007,173703697, 1538710971,1538773772,44253241,
1538819524,1538850831,2198270, 188105243, 1538868137,1538923964,110300994, 1538989501,358106035, 1539145865,1539162117,8175618, 1539178591,1539228183,1539260472,
1539293213,20365323, 1539309622,347635731, 15073301, 96026739, 1539513791,1539743168,1539801125,1539817524,65880085, 47120412, 1539857857,1539964940,1539981419,
1540020265,958726150, 1540063863,1540096022,7176220, 1540120002,1540185539,1540423994,1540464068,1540539288,4685861, 1540595125,1540636753,1540669548,1540704169,
@@ -3051,13 +3046,13 @@ static const unsigned int DictNodes[84251] =
30392454, 8396242, 204718304, 1542905299,300581380, 1542997664,1543036372,260456915, 1543127096,1543160751,1543225783,1543258154,1543274508,2965506, 1543298517,
1543405605,1543421990,1543438348,1543461037,1543505859,1543560662,967753743, 3211709, 1543626199,1543706313,1543753478,1544209438,147423234, 1544248792,1544429017,
1544519702,160694303, 1049673730,1544543706,1544634394,433815588, 1070417241,1544652603,1544699970,23855211, 27246630, 203572553, 1544732710,1544749976,1544798234,
- 899498431, 1544822235,1083153884,346488889, 1544969693,1545077913,45465619, 1545126780,1545177470,162971664, 297418754, 1545243322,1917864, 522470209, 210272282,
+ 899498431, 1544822235,1083153884,346488889, 1544969693,1545077913,45465619, 1545126780,1545177470,162971664, 297418754, 1545243322,1917864, 522470209, 210272282,
1545312206,153191160, 1545356857,1545461214,1545602287,63979522, 251953627, 1545633884,1545666599,1545699338,1545715754,1545732098,241844262, 1545756127,1545961553,
1545994731,1546027101,1546083808,307134469, 1546165729,1546226590,1546277805,260063275, 1546338788,1546387462,1546411490,1546477027,1490550865,1546558948,1546633237,
1546650996,1546706405,17432616, 1546771942,1546903015,1112080471,441139256, 1546964491,1547075677,1547124746,1547141151,1547157523,647626764, 652771959, 1547181544,
- 1547361769,7307270, 8389485, 1547436063,1547452454,252706856, 1547469159,1547509226,1547599926,1547633185,1547681811,1547698198,1547714586,1547730956,51068959,
+ 1547361769,7307270, 8389485, 1547436063,1547452454,252706856, 1547469159,1547509226,1547599926,1547633185,1547681811,1547698198,1547714586,1547730956,51068959,
1547754453,319555894, 1547796482,214679563, 1547820523,1547961250,1505706005,308133919, 1547993518,162187002, 1548049900,1548180973,6373836, 1548239391,1548295662,
- 1490504363,115294294, 1548410351,1548705264,1548846935,1548914013,1269597174,1548993452,1549065713,1505624075,1549142704,299794434, 1549196786,29327755, 315588614,
+ 1490504363,115294294, 1548410351,1548705264,1548846935,1548914013,1269597174,1548993452,1549065713,1505624075,1549142704,299794434, 1549196786,29327755, 315588614,
1549295091,1549369360,3001601, 1549393396,296354233, 1549500462,319619098, 1549549614,1549598762,611450896, 508608599, 1549622773,1549828188,7962627, 1549860867,
1549877279,1549894208,291112003, 153191921, 1549926402,47251572, 1549944692,402128902, 1549975634,1550015990,6438927, 1550074108,1550114295,1550294520,1550386535,
19252616, 109052816, 1550452310,1550520399,1550582285,1550630938,51855366, 1550647308,1550663690,7733302, 1550680978,1550729259,1550762871,1550794763,1550811152,
@@ -3068,74 +3063,74 @@ static const unsigned int DictNodes[84251] =
1552842859,868253717, 1552883199,1553076632,1553154076,55328808, 1553178112,1553260033,1553370988,1257455618,1553418105,1553465354,131940354, 1553489410,1553653251,
291111351, 1553762193,618233892, 1553800708,291110951, 1553893720,170803695, 383565843, 1553959727,1554057588,1554120726,6209538, 730678587, 1554137968,1554186297,
1554203817,1554243077,1554603526,5177384, 1554727358,1554800135,1554857994,389136468, 1554877134,1554989094,20365350, 1555005479,1555039692,115474443, 1555078664,
- 1555169336,1555202114,45039645, 1555240753,463684517, 1555287196,1555333547,2359825, 1555365972,110248035, 1555406345,1555579816,1555611691,2932786, 131303210,
+ 1555169336,1555202114,45039645, 1555240753,463684517, 1555287196,1555333547,2359825, 1555365972,110248035, 1555406345,1555579816,1555611691,2932786, 131303210,
1555644475,1555677210,1555693584,2998300, 1555710553,423034891, 1555750410,168017932, 1555825547,1555897867,917325039, 258376359, 1555996172,1556119583,1556139169,
- 1556168770,1556201493,1556217877,1556234252,1556250634,1556267045,1556283394,1556299791,87048223, 1556316463,1556351435,1556399042,131892427, 1556431774,381550623,
+ 1556168770,1556201493,1556217877,1556234252,1556250634,1556267045,1556283394,1556299791,87048223, 1556316463,1556351435,1556399042,131892427, 1556431774,381550623,
1556471309,1556717070,1556793204,77709324, 1556825339,1556874081,1556906015,1556922389,72368131, 1556945561,1557005048,1557038249,323732374, 741474307, 1557069830,
1557088939,8392202, 1557126671,291177462, 119636022, 1557208592,2146880, 740556839, 6438915, 1557332414,222101609, 285344777, 1557397588,1557432356,1557479854,
- 1557529057,1557579795,1557626882,2326585, 1557650961,302448724, 1557732882,1556709905,1557847571,8392751, 1557978638,1558053897,1558093332,1558169136,59801626,
+ 1557529057,1557579795,1557626882,2326585, 1557650961,302448724, 1557732882,1556709905,1557847571,8392751, 1557978638,1558053897,1558093332,1558169136,59801626,
1558201582,1558237504,287572966, 1558283111,1558322709,1558563414,860423954, 48676886, 1558615186,207489707, 272155043, 1558708683,1558758639,1558791089,1558822940,
- 1558839308,367444008, 1558856217,1558928918,247531438, 1559019988,1559052310,402128908, 1559074874,1559216235,1559248902,86327317, 1559265334,890437691, 5325560,
+ 1558839308,367444008, 1558856217,1558928918,247531438, 1559019988,1559052310,402128908, 1559074874,1559216235,1559248902,86327317, 1559265334,890437691, 5325560,
154043844, 1559298649,133546910, 1559338519,1559527462,131891212, 622182412, 1559543810,30834695, 1559560194,1559584280,1559633433,1559743311,1559789652,1559830042,
1559920656,1559937064,1559953419,1559969804,205209638, 1559986207,1560002597,557465616, 44613642, 1560019379,1560051722,1560068102,1560084482,233734201, 1560100923,
- 1560133689,1560150047,509558805, 1903873, 1560167428,1560239643,1560300388,689799697, 1560383538,1560478171,1560510965,1560544145,1560598436,1560642383,273957909,
+ 1560133689,1560150047,509558805, 1903873, 1560167428,1560239643,1560300388,689799697, 1560383538,1560478171,1560510965,1560544145,1560598436,1560642383,273957909,
1560677638,1560747548,1560838182,1560862237,1560993310,1560543308,1561042463,1561084447,291160066, 1561133099,1561165926,379256834, 198672394, 1561206304,1561353761,
- 1561412431,1561447142,131891231, 112934996, 1561509919,276529189, 1561533986,1561642014,1561674265,1561746393,246464551, 1561805315,1561861667,1561935888,73187369,
- 1561952285,1561968646,1561985061,7602195, 1562001474,79560746, 1562230787,1562247302,52805655, 1562271269,1562629444,1562711641,1562771468,1562787850,310558742,
+ 1561412431,1561447142,131891231, 112934996, 1561509919,276529189, 1561533986,1561642014,1561674265,1561746393,246464551, 1561805315,1561861667,1561935888,73187369,
+ 1561952285,1561968646,1561985061,7602195, 1562001474,79560746, 1562230787,1562247302,52805655, 1562271269,1562629444,1562711641,1562771468,1562787850,310558742,
1562804715,1562844710,46120972, 1562918981,340672517, 1562959399,1563017332,1187282956,1563040409,1563099146,468287516, 192200742, 1563121075,532545558, 1563197468,
- 141836328, 1563221544,508608578, 1563297813,52625414, 1497891247,1563329359,1563361326,1563411287,1563443205,1563460059,1563500073,1563560369,21102604, 468206501,
+ 141836328, 1563221544,508608578, 1563297813,52625414, 1497891247,1563329359,1563361326,1563411287,1563443205,1563460059,1563500073,1563560369,21102604, 468206501,
1563614762,1563721754,265797651, 1563738138,210880178, 1563754562,1563794987,367591429, 1563967595,1294958621,2195771, 499384351, 1917009, 141414562, 1564007980,
1564147769,1564164546,1564196948,1564229738,1564312687,421856246, 1564352045,1564393474,242466842, 1312243718,1564417582,1564466735,1564548656,1564606486,1564622925,
1564656741,1564712497,1564809987,1564854358,1564917782,794673753, 1564935355,1489322896,366903839, 1564985209,1565034385,1565065643,19038227, 1565098186,1565138482,
1565466163,1565507643,501383206, 1565540787,1495449616,1565574949,1565622690,177340479, 1565658584,254591510, 1565704610,1565744692,1144455249,1565835743,1565868913,
1565924917,1566031938,1566070713,30457910, 1566130594,1566163378,188940319, 1566203446,1566277739,271876115, 1566318135,25560138, 1566432824,110723083, 1566541288,
1536001033,1566596665,1566654486,6701067, 1566671298,1566703638,306151435, 1566720892,1566588947,1566776890,1566852002,1566891579,1566949414,1566965776,1566982170,
- 1566998538,1567014924,1567031302,233734149, 1567047732,1567088188,140248866, 1567350333,1567391746,1567408166,82559016, 1567432254,1567541193,1567589523,7258688,
+ 1566998538,1567014924,1567031302,233734149, 1567047732,1567088188,140248866, 1567350333,1567391746,1567408166,82559016, 1567432254,1567541193,1567589523,7258688,
1567625410,1567670310,118882370, 1567687803,1567727167,1567803775,6373457, 3211759, 1567874624,1568005697,1568096258,1568120386,1568194572,1568211001,1568227330,
163020826, 1568243752,1568260122,1568276501,119357941, 1568292918,3211696, 1568333379,1568442466,1568489510,916193290, 1568513604,285344139, 1568579141,1568636938,
1568653787,1568688582,1489264198,1568775751,1568835770,1001717772,1568874056,568623633, 1568931842,1568948903,323010572, 1568981051,567103845, 1569021513,1569341931,
1569381962,1569544907,4407362, 1569603653,1569644107,1569702125,885555639, 1569742412,1569807949,163823642, 1569889870,1570018221,320719281, 383467541, 1570086479,
1570146490,1449181213,52822037, 1570184784,1570266067,1570315857,1570378832,1570430546,1570654102,1570701324,1570720732,1570767810,1570800051,1570840147,1568019212,
1570938452,1570979856,290996236, 1570997071,1571029019,1436517338,1571069525,1571226967,905118543, 307855391, 51118111, 1571282518,1571358163,1571405883,1571438602,
- 141787164, 1571462743,1571593816,117407746, 425362320, 1571635259,131878502, 1571675737,1571816271,487965617, 1571848213,1571864592,1571880970,1571899058,115720481,
- 1571937882,1571996841,1572031201,1572127954,1572160033,8390682, 1572216411,479133699, 1572274207,1206633481,1572298332,1572388880,15073285, 1572405365,126435349,
+ 141787164, 1571462743,1571593816,117407746, 425362320, 1571635259,131878502, 1571675737,1571816271,487965617, 1571848213,1571864592,1571880970,1571899058,115720481,
+ 1571937882,1571996841,1572031201,1572127954,1572160033,8390682, 1572216411,479133699, 1572274207,1206633481,1572298332,1572388880,15073285, 1572405365,126435349,
1572438075,1572478557,1572667402,286244895, 1572684321,1572732949,1572749338,585580575, 1572765701,56049680, 172621826, 1572782089,77774980, 6947041, 1572800995,
760905768, 514801666, 1572839006,1573011492,1573028766,1573060614,1573076993,1573093510,29720599, 59817993, 1573109876,168329225, 1573129162,1094959125,1573166687,
766640164, 142180371, 1573232224,1573625442,2146607, 1573740131,1573789284,1573918020,1573995717,1574049055,1574127150,1574182501,1574313574,1574377688,1574421025,
- 1574470487,15056902, 1574510183,149130799, 1574624872,1574717869,1574770500,1574846917,1574880459,81166376, 1574913033,1574946923,1574993957,140247343, 67059724,
- 1575015225,1575083625,1575190627,760946282, 1575223355,1575256070,32686214, 1575280235,5326139, 1575345772,1501151254,1575519262,1575551661,1575600617,274513931,
+ 1574470487,15056902, 1574510183,149130799, 1574624872,1574717869,1574770500,1574846917,1574880459,81166376, 1574913033,1574946923,1574993957,140247343, 67059724,
+ 1575015225,1575083625,1575190627,760946282, 1575223355,1575256070,32686214, 1575280235,5326139, 1575345772,1501151254,1575519262,1575551661,1575600617,274513931,
1575657069,1575715351,254591455, 1575755374,2359334, 803651622, 1575846411,2179204, 1575902831,347635738, 1576026114,4341766, 1576042967,1576080116,1576140810,
- 802963462, 1576157243,1576197744,1576258201,1576328817,232079391, 1576403028,1576443506,1576509043,1576623732,1576681531,110215275, 622182412, 1576714699,131891307,
- 131891671, 1576767078,1576801573,1576845355,1476889259,1576885877,1577148022,392217011, 1577206219,1497399315,1577254918,1577279095,1444052994,1577327545,740491348,
+ 802963462, 1576157243,1576197744,1576258201,1576328817,232079391, 1576403028,1576443506,1576509043,1576623732,1576681531,110215275, 622182412, 1576714699,131891307,
+ 131891671, 1576767078,1576801573,1576845355,1476889259,1576885877,1577148022,392217011, 1577206219,1497399315,1577254918,1577279095,1444052994,1577327545,740491348,
1577402384,1173635149,1577418754,48545818, 1577442936,1577522854,1577566230,357597224, 1577584218,1577615386,1577631781,1555726338,1577655929,1577819770,1577910288,
1114169, 1577934459,1577549880,1577983612,1578043386,144098278, 1578074124,430014490, 1578098301,8392562, 1578327678,1578435614,611074074, 315688913, 1578471829,
1578524287,2146795, 302678047, 1578631190,15351839, 1578648660,1248034828,1578704512,1578786433,1578876965,1578893314,1578909725,645693452, 1578926383,1578958854,
- 1578975253,1578991632,1579008026,1579024415,89063430, 1579040808,1289617414,1579057164,50511898, 1579079185,1579127251,194084902, 1579196034,1579253797,351010818,
+ 1578975253,1578991632,1579008026,1579024415,89063430, 1579040808,1289617414,1579057164,50511898, 1579079185,1579127251,194084902, 1579196034,1579253797,351010818,
1579270175,51642378, 1579294339,1579434006,1579451215,1579484972,1579532647,1579565068,1579581466,1566884258,1579598303,1579630604,1010582492,1579654788,1579975838,
- 131268692, 45760514, 1580048005,1580105734,110232776, 1580129926,1580172457,1580211847,1580337687,575209508, 1580403841,1580457608,1484112175,1580532206,162187116,
- 1580564511,1580581897,1580613935,1580654217,1580736138,1580892176,126615580, 501563499, 307235593, 1580910794,922288214, 1580965515,1581056006,1581072406,457539596,
+ 131268692, 45760514, 1580048005,1580105734,110232776, 1580129926,1580172457,1580211847,1580337687,575209508, 1580403841,1580457608,1484112175,1580532206,162187116,
+ 1580564511,1580581897,1580613935,1580654217,1580736138,1580892176,126615580, 501563499, 307235593, 1580910794,922288214, 1580965515,1581056006,1581072406,457539596,
1581088780,146456618, 1581105154,1196043, 1581129356,421773322, 1581194893,1581367975,287244310, 8392239, 1581407886,208404490, 508330498, 167903298, 1581483475,
1581532783,1581580325,64765957, 687996994, 1581596717,1581629442,112608065, 1581647134,188104803, 1581694987,131268692, 1581713894,1581751951,1581941237,1581973526,
1581990347,191906552, 68239406, 1582046864,204537859, 1582121814,1582170114,1582194321,1582259858,596131876, 1582317580,1582333962,1528922141,1582358163,1582448740,
- 260456494, 1582481711,2801674, 1582517001,1582563394,1582596117,1027620870,1582613082,1582648741,1582734996,931332102, 182419477, 1582825484,446955546, 541346564,
- 1582841964,1582874646,50462722, 1582891068,1582980757,157188152, 783925250, 1583153157,1583169538,1583185957,1583202306,1583219495,1583235077,1583251458,7602213,
- 1583268323,1583300618,292110367, 1583317002,1583333808,1583368771,399425548, 253285386, 1583423126,1583530005,1583554199,172621830, 1583596151,737902608, 474399399,
- 1583636120,1583923500,160727046, 55263244, 1583957854,1584029337,586612748, 1584087092,2196042, 1584119836,1584136204,3178522, 1584152635,1584185443,2834514,
+ 260456494, 1582481711,2801674, 1582517001,1582563394,1582596117,1027620870,1582613082,1582648741,1582734996,931332102, 182419477, 1582825484,446955546, 541346564,
+ 1582841964,1582874646,50462722, 1582891068,1582980757,157188152, 783925250, 1583153157,1583169538,1583185957,1583202306,1583219495,1583235077,1583251458,7602213,
+ 1583268323,1583300618,292110367, 1583317002,1583333808,1583368771,399425548, 253285386, 1583423126,1583530005,1583554199,172621830, 1583596151,737902608, 474399399,
+ 1583636120,1583923500,160727046, 55263244, 1583957854,1584029337,586612748, 1584087092,2196042, 1584119836,1584136204,3178522, 1584152635,1584185443,2834514,
1584225946,1584283885,1584317017,1584353122,1584414756,1584431107,1584447494,747356181, 1584463931,1584497111,1584530236,1584578572,571211786, 1584595489,1584651931,
1584709673,1584726132,64356370, 1585284326,1585389213,112771100, 742850576, 1439453682,1585545222,1585561616,1585577995,115589135, 1585594389,1585610844,1585643531,
156237840, 1585659916,110723082, 1585684126,217808934, 305709087, 1585862561,792281128, 1585889301,51920922, 1585905748,1525104666,1585938447,55869466, 1585955696,
1586006711,1586053135,1586069535,1586085909,552452098, 1586102283,1374584834,1586120311,1586184221,1586200616,1586216966,212877333, 1586233346,420757542, 1586257567,
- 1586315724,1586348042,1586364447,1586381685,1586413580,1586429978,56721414, 104759521, 1586446807,1586479133,2129943, 1586495493,1586511913,1586528386,884778,
+ 1586315724,1586348042,1586364447,1586381685,1586413580,1586429978,56721414, 104759521, 1586446807,1586479133,2129943, 1586495493,1586511913,1586528386,884778,
1586544978,1586577523,641531927, 1586593834,231325828, 1586610197,1586626571,1586643081,2130051, 1586659346,1586675828,1586692133,1586708509,1586724980,1586741263,
908960, 1586758514,1586790537,1586806812,49496101, 1586823283,884873, 1587273377,1529839668,1587371682,1587584675,1587715748,1587773499,344391746, 1504265192,
1587806667,1587863205,1587941172,1588020140,521110359, 1588088797,1588123297,1588200478,1588232235,1588272806,1588428806,1588445190,1005387792,393969692, 1588469294,
- 1588518567,1588609045,1588625424,1588642601,1588675425,450543622, 1588707435,114245653, 1588740162,1588772924,1588862632,3260500, 1588928169,1588977322,118030390,
+ 1588518567,1588609045,1588625424,1588642601,1588675425,450543622, 1588707435,114245653, 1588740162,1588772924,1588862632,3260500, 1588928169,1588977322,118030390,
1589026475,1589092012,1589133338,1589149727,1589166090,1589182485,542048278, 1589206701,1589452462,1589575719,1589608507,1589649071,1589763760,1589828845,1589976753,
1590055048,1590088226,1590166697,1590198277,1590215131,1590247460,134709259, 1590265793,860425427, 1590320818,1590446636,119080164, 1590476843,195919878, 1590509627,
1590550195,116703242, 1590690280,327532768, 1590723512,539656232, 1590773055,1590837259,1590853716,1590888670,602161158, 1590935636,1249559675,1590968750,1591022587,
1591070807,1591115778,1591132179,259751967, 1591149507,1591198694,1591238324,1591467701,1591590928,52674600, 1591607790,46088229, 1591640130,147406955, 1591680694,
- 1591590914,1591809269,136118749, 1591902246,1591918594,140247942, 1591942839,594771987, 52576293, 1591986755,1592041144,1592181616,112935759, 1592229929,182386700,
- 1592246575,1592279277,1592312979,1592352441,2408459, 229965845, 362545158, 1592475679,133660693, 1592492063,1592508479,1592549050,1592696507,1234534454,733102092,
+ 1591590914,1591809269,136118749, 1591902246,1591918594,140247942, 1591942839,594771987, 52576293, 1591986755,1592041144,1592181616,112935759, 1592229929,182386700,
+ 1592246575,1592279277,1592312979,1592352441,2408459, 229965845, 362545158, 1592475679,133660693, 1592492063,1592508479,1592549050,1592696507,1234534454,733102092,
1592827580,1592876733,1592950814,1592983607,1593049186,1593081912,1593115051,1593147452,1593229323,6373421, 1593247564,1593319102,1593443620,1593491458,1593508785,
1593548479,3244553, 1593639513,1593671690,119816251, 1593688171,1139359765,1593720878,1593777856,638484508, 1593835539,131825710, 5308843, 1593769995,1593852834,
1593892545,1594089154,533544991, 5316291, 1594213668,357793804, 1594263767,292225451, 1594311097,1594367684,152289301, 1594458571,1594507323,1594544131,1594654804,
@@ -3150,21 +3145,21 @@ static const unsigned int DictNodes[84251] =
1600766044,2998288, 1600798774,1600833323,1600865920,1600913711,1600946244,2850852, 1601330920,450543645, 1601461993,1601601542,1601619144,1601650718,1601691370,
115785744, 1601800880,1601855211,1602166508,1602256955,184041526, 1602297581,1315315438,1602406414,500678677, 1602458664,1602519067,1602551834,116376090, 1602568218,
1602584635,1602618106,1602650178,3212190, 1602682926,1602732070,1602748445,1602764866,1602798039,730251944, 1602830478,1602863641,1602929654,1602961867,1603011882,
- 1603067631,541851717, 1603158487,1603192377,1603297008,1603378917,384811445, 18596755, 1603444465,1603584046,72368138, 1603633154,362659855, 1603649567,139483806,
+ 1603067631,541851717, 1603158487,1603192377,1603297008,1603378917,384811445, 18596755, 1603444465,1603584046,72368138, 1603633154,362659855, 1603649567,139483806,
1603665973,1603698779,1603731515,1603772146,5308446, 1603945528,1604009986,138199050, 1604034291,1604340437,49938463, 1604386828,117506549, 659292244, 1604411124,
1604517900,1604534282,258637834, 1604553693,1604607733,184025131, 1468957843,1604681794,1604714583,1565655467,1604763732,177046681, 1604800370,3245231, 1087095255,
- 1604846049,1604894722,1604913124,1604944409,1605010353,1605042232,127042011, 1605080608,6620081, 1605143497,1605190545,1605246710,1605322035,57032706, 175784028,
+ 1604846049,1604894722,1604913124,1604944409,1605010353,1605042232,127042011, 1605080608,6620081, 1605143497,1605190545,1605246710,1605322035,57032706, 175784028,
1605369953,1605436730,1605485458,1605533783,1605590775,1605681832,345702894, 1605721848,1605795947,2130008, 1605828714,119997738, 1605913558,8396537, 1605983994,
5308842, 1606041622,1606058050,503316622, 1606098683,1243726425,1606221870,144621573, 1606278908,1606426365,1606490825,1606549606,1606582575,1606615050,1606631500,
1606667222,149134099, 1606729831,1606819582,1606861647,536887317, 119799890, 1606893606,1606910254,207274000, 1606950655,1607090207,1198063635,586285078, 1452212539,
1607114496,1607327489,116211793, 1607418703,1607450848,1607483476,1607524098,1607630931,1607712794,1607729168,1607747059,1607786243,613548075, 1607894117,1607942187,
- 1607977924,202801611, 1608032004,1435516961,1608106443,1608155447,1608204298,376717338, 1608220682,19267626, 1608237515,1608291624,1608335441,1608368144,147423247,
+ 1607977924,202801611, 1608032004,1435516961,1608106443,1608155447,1608204298,376717338, 1608220682,19267626, 1608237515,1608291624,1608335441,1608368144,147423247,
1608386164,386711554, 1608466472,1608483275,280446063, 1608539909,1608883974,1609057218,338133073, 1609089077,293781520, 1609121879,382588932, 1609174415,1609236525,
1609277191,1609368756,1609424648,2113557, 1609597853,1609682821,2195745, 1609768713,238551569, 131334183, 1609941463,1609980809,344391746, 1610040652,1610137646,
- 1610186811,1610227466,1610374923,1610435671,1610481770,1610571532,1610637069,1589019083,1610751758,1610800911,208995151, 1610893906,1610956866,1610997186,55132188,
- 1075478962,1611055563,1611104266,1611122999,1611153474,1611186235,221806630, 1611226896,1611489041,133579785, 756286376, 1611580708,1611629798,1611726941,139198521,
+ 1610186811,1610227466,1610374923,1610435671,1610481770,1610571532,1610637069,1589019083,1610751758,1610800911,208995151, 1610893906,1610956866,1610997186,55132188,
+ 1075478962,1611055563,1611104266,1611122999,1611153474,1611186235,221806630, 1611226896,1611489041,133579785, 756286376, 1611580708,1611629798,1611726941,139198521,
222085229, 1611783954,1611865875,1611947796,1612111637,166051869, 242647050, 1612169226,5308504, 1612185742,317836096, 1612218470,1612253572,5310967, 1612324630,
- 1612382227,1612398594,1612414987,122568719, 1612431466,1612514268,1612546085,110215600, 3866711, 1612564590,153190839, 1612635927,153748510, 1612767000,987447723,
+ 1612382227,1612398594,1612414987,122568719, 1612431466,1612514268,1612546085,110215600, 3866711, 1612564590,153190839, 1612635927,153748510, 1612767000,987447723,
49496074, 1612865305,582828499, 1613037675,1613078298,1613119490,47546383, 30392361, 988495884, 1613143835,1613405980,1613513651,1613545494,1613565011,1613635357,
221806608, 2196690, 5327334, 1613750046,697860122, 1613831967,1613890590,1613930272,167445308, 1613988749,1614070879,319815917, 1614143265,5325275, 1614315604,
1614349676,1024754576,1614446631,1614479371,973307916, 1614496798,1614536482,168232265, 1614615018,1614662064,400031774, 1614710079,1614777097,1613087646,1614826218,
@@ -3172,13 +3167,13 @@ static const unsigned int DictNodes[84251] =
1615724570,1289469958,1615741419,1615775499,1615863591,6733840, 1615923951,1615986694,50806822, 1616011048,1616052226,1195803913,1616068911,1616101483,1616134230,
1616169146,1616199787,1616232927,1616273193,1376518230,1288750429,1616445450,1616461866,1616479036,1223720982,1616528729,1616561140,1917799, 1616617258,1616708063,
1616740457,1616774901,1616822302,1616855066,1616874642,1616921990,57032715, 1616988677,1617035865,1617070015,1617174315,137085380, 1617289004,1617379384,1617413006,
- 1617485613,352403468, 1617642364,1617698606,1617764143,323650015, 1617920075,1617993520,1618059050,1618149469,1618206513,502071322, 1618378859,1618413346,184025147,
- 1618444307,1618460694,52330534, 1618478885,1618526292,4751372, 1618558988,1618575370,467042326, 1263190103,1618599730,1618730803,1618837963,1618887764,566641573,
- 1618936267,1618992948,1619067348,1619107637,1619263569,1619304246,1619369783,1619493804,1489540112,1619566392,1619645133,1619722278,194789435, 1619739848,387006545,
+ 1617485613,352403468, 1617642364,1617698606,1617764143,323650015, 1617920075,1617993520,1618059050,1618149469,1618206513,502071322, 1618378859,1618413346,184025147,
+ 1618444307,1618460694,52330534, 1618478885,1618526292,4751372, 1618558988,1618575370,467042326, 1263190103,1618599730,1618730803,1618837963,1618887764,566641573,
+ 1618936267,1618992948,1619067348,1619107637,1619263569,1619304246,1619369783,1619493804,1489540112,1619566392,1619645133,1619722278,194789435, 1619739848,387006545,
1619779385,52822038, 934838324, 1619877690,176423759, 1619968430,1620025147,1620295773,2129947, 168234845, 1620344931,1620385596,1620443373,1620475958,1620509143,
1620541527,1620592593,1620639803,437404327, 1620680509,1620787216,161726469, 1620804467,1620886639,1620919569,1620967436,1620984482,1621023161,935134380, 1621090110,
1077755925,1621180719,51855397, 1621221183,1105871148,1621475928,1621508856,1621540866,17842390, 158811565, 1621565248,1621606412,1621622876,1621657362,1621712705,
- 91193474, 1621875863,1621942082,1622099369,1622133093,1622181666,1622213570,7734525, 1622249826,17219688, 1622311957,1622360483,244170771, 1622392891,440746010,
+ 91193474, 1621875863,1621942082,1622099369,1622133093,1622181666,1622213570,7734525, 1622249826,17219688, 1622311957,1622360483,244170771, 1622392891,440746010,
336659192, 1622433603,7454756, 1622605845,513998874, 1622622324,1622638634,273924117, 1622655017,114343937, 1949715, 1622679364,1622721591,1622753321,1622773245,
2132129, 1622806052,1622851586,7372806, 1622875973,1623359625,884751, 1623383878,1623671384,1623707503,1623777095,1623932940,1623949601,1623984244,1624052755,
1624113162,166314026, 1624134634,1624195084,137543904, 1624219464,1624252233,1624314264,1624391786,1624481610,1624604702,1624645451,1624735790,1624792908,1624867831,
@@ -3187,12 +3182,12 @@ static const unsigned int DictNodes[84251] =
591609868, 117752283, 1626473461,1626538615,1626578773,172819111, 1626611542,1626821098,1626873687,1626988286,1627029963,1627079465,237682747, 1627111713,1627152216,
467320891, 1627209787,1627243305,1627278529,1627332441,1377387110,3867051, 1324613651,1627422813,1627471956,3212399, 1627505983,1627571041,1627602970,1627619394,
1627653010,1627702383,1627739772,1627963993,649922159, 1628004186,120143912, 1628132108,813039632, 1628176396,1628192867,456917980, 475955210, 1628225623,1628275521,
- 1628308303,158812739, 1628340290,2933219, 1628373004,1628389391,1628406339,594837516, 1628446555,565608458, 1628766238,1502347286,1628806460,1628865789,510181432,
+ 1628308303,158812739, 1628340290,2933219, 1628373004,1628389391,1628406339,594837516, 1628446555,565608458, 1628766238,1502347286,1628806460,1628865789,510181432,
1628897364,1628930478,380600791, 1628980148,1629052764,1629145379,1629192197,1629209035,71483418, 1629257870,1629298525,161726521, 1629462366,1629527903,1629586920,
- 1629639688,1629683722,94126122, 1629700142,1629749274,158502481, 1629765716,1629798410,1629814803,47611920, 1629839200,1629995037,1630011404,1630027778,164036637,
+ 1629639688,1629683722,94126122, 1629700142,1629749274,158502481, 1629765716,1629798410,1629814803,47611920, 1629839200,1629995037,1630011404,1630027778,164036637,
1047561225,148799540, 1630052193,1630297954,1630437403,1630471576,1630522652,266765935, 1630585143,1630635082,1630670894,1630751765,1630830621,1630855011,1630945306,
208667056, 291110964, 1630963647,140247096, 399966240, 1631064160,4751376, 1631117156,1631207434,1631231047,1631305766,1631322114,1631338517,1631356223,1631420447,
- 1631436811,1631453487,1631486583,1631519632,118948267, 1631551542,1631592186,1631650329,1631723365,1631813634,1085276631,1630601246,1631830062,1631879178,110215200,
+ 1631436811,1631453487,1631486583,1631519632,118948267, 1631551542,1631592186,1631650329,1631723365,1631813634,1085276631,1630601246,1631830062,1631879178,110215200,
1631903590,1631969127,1632011173,563347459, 1632051048,1632208917,1632241582,1632280425,1632339019,1632407462,19038229, 1632452662,46710810, 1632485416,1632502734,
1632542570,1632617295,1632649318,1632690027,1482293286,1633001324,1633126276,1633194008,1633239061,1633255426,1633271818,789921821, 1633289277,1633353734,1633370133,
1633386508,114114586, 1633408819,1633468529,1633517578,1633533980,48529420, 1633558381,1501906955,1633634983,1633681515,1326202909,193953804, 1633714861,1633771374,
@@ -3200,7 +3195,7 @@ static const unsigned int DictNodes[84251] =
124239898, 1634475891,1634615833,1634680916,784990229, 1634715878,1634763054,1634803572,306529089, 1634869109,1634993090,1635027681,1635124790,351911958, 1257554379,
1635173185,1635213174,1635409783,1425702994,3212073, 278167776, 1635491704,1635573625,115720219, 8393141, 1635655546,1635729867,1635778666,498732966, 1635862549,
59359263, 1635893258,25559479, 1635917691,1635999612,1399472140,3686436, 1636157670,1636205614,1636278141,1636581382,1636597797,8994847, 1636622206,1636712706,
- 1636745355,8392761, 1636785476,1636851583,322846746, 1636958881,6374278, 170803424, 1637015424,813679352, 1637105686,1637130113,1637187630,1637236762,427902721,
+ 1636745355,8392761, 1636785476,1636851583,322846746, 1636958881,6374278, 170803424, 1637015424,813679352, 1637105686,1637130113,1637187630,1637236762,427902721,
1637261186,1637402963,2015258, 2834735, 1637450187,1637498986,1298907243,1637580826,19038229, 1637601521,136120952, 1637670787,752550389, 1637801860,1637877990,
1637930191,7733355, 1638024699,13549574, 1638072857,1638145925,1638318179,1638351151,1638383672,1638424454,1638597059,56655914, 1638629405,1638647013,1638727739,
871792697, 1638768519,121339942, 131334210, 1638829307,190644283, 242729011, 193200159, 1638924372,1638957082,1638973469,1187333353,1638989862,1639006237,1639030664,
@@ -3210,7 +3205,7 @@ static const unsigned int DictNodes[84251] =
1640973206,24298434, 1641021506,1641055017,351338527, 1641087435,1520061197,52756501, 1641136587,1554989096,1641185802,1641226129,1641340818,1641418706,1257556272,
3867542, 25559147, 1641481272,404636131, 1641546488,1641581514,1641612624,1641660500,1080984066,1641693214,1641728500,1641783187,10649652, 1642037341,1642086422,
1642106961,1642152029,1571667995,118685725, 1642204849,1642267384,1642303218,1642371997,1642414139,1642454932,1642528778,1642553237,3228481, 1642733462,1642774554,
- 808239114, 769785915, 1642798999,1642930072,1643054008,1643110297,1643252212,185319450, 1643306906,1643560966,351911942, 1643579790,231817226, 1643644462,888143884,
+ 808239114, 769785915, 1642798999,1642930072,1643054008,1643110297,1643252212,185319450, 1643306906,1643560966,351911942, 1643579790,231817226, 1643644462,888143884,
1643692042,1643708951,1643743756,127565843, 1643831195,1643905070,1643955025,1644093340,1644199974,1644216374,1644257181,1644331062,1644371870,353239106, 1644421023,
1644576806,594853926, 1644601248,1644724236,118538242, 1644748705,490651664, 1644839391,1644872956,1645004121,1645035576,1645068328,45498406, 235438134, 1645092770,
1645158307,1645248568,115523606, 1645285104,1645365325,132792326, 385517428, 1196671863,1645453220,1645609503,138641839, 1645666213,173850640, 1645723694,1645780902,
@@ -3220,54 +3215,54 @@ static const unsigned int DictNodes[84251] =
1647575081,1647591466,1647607829,144146454, 1647624727,1647659699,1647692177,1647746989,1647820805,1647837195,1227702314,17825813, 8257551, 94371880, 1647861678,
166068583, 1647951988,1647968293,1647984756,1648001064,1648017436,1648033795,1648050185,1648066690,1648083059,20971652, 1648101567,469205018, 115458074, 1648132146,
1648164875,1648181260,370999325, 886276127, 1648631728,1648803846,1648820311,1648877489,124403718, 1648951810,1648992178,1649182871,1649230742,1649287091,1649363316,
- 99893286, 1649434548,1649543236,1649591640,1649640856,115589372, 1649688663,151732250, 1649737834,1649820562,1649868816,18153498, 1330200607,1649886217,25559106,
+ 99893286, 1649434548,1649543236,1649591640,1649640856,115589372, 1649688663,151732250, 1649737834,1649820562,1649868816,18153498, 1330200607,1649886217,25559106,
1459118005,332988453, 793051162, 1649918489,1649990426,1650065840,1650098235,1650139062,1650196501,1650213711,305087376, 1650245714,1650286519,1650417592,1650509297,
1650540628,1650574384,1650656857,1650705727,1650769951,1650786388,1650827193,1650950154,1650967003,1623949744,1650999378,1651034707,1651097707,1651138490,1651195906,
- 1651212326,45645880, 1651228713,309723148, 1651245921,1651285947,1651482556,1651556895,1651605570,45645856, 1651638284,33391166, 1651654696,1651671046,27607046,
+ 1651212326,45645880, 1651228713,309723148, 1651245921,1651285947,1651482556,1651556895,1651605570,45645856, 1651638284,33391166, 1651654696,1651671046,27607046,
258637836, 1651687531,5603359, 1651720714,1651761085,1651952584,1652016023,177178484, 149127713, 589479955, 1652064277,1652081758,109019164, 1652137918,1652416447,
1652590603,1652654967,1652694579,1652736059,1652769713,1652801623,1633193574,1652850742,1652883985,1652916246,1652932629,1652949910,1653006272,501563418, 1653080524,
- 6619896, 1917009, 1653120961,1653211439,1653252034,1653317571,1653441272,56557584, 1653481412,1302265913,1115998068,1653526092,1653571596,1653587978,789577730,
- 1653606203,1653654164,1653694405,1653809094,1653965102,546357284, 448299048, 1653997652,1654030342,138575914, 1654046807,326369959, 1654104007,294633529, 126107684,
- 385024993, 1654177858,1654210647,1654262051,1654317000,1654398921,1654562762,1654636620,2146386, 1654669849,1654734869,1654759371,1654980845,1655015283,45137958,
+ 6619896, 1917009, 1653120961,1653211439,1653252034,1653317571,1653441272,56557584, 1653481412,1302265913,1115998068,1653526092,1653571596,1653587978,789577730,
+ 1653606203,1653654164,1653694405,1653809094,1653965102,546357284, 448299048, 1653997652,1654030342,138575914, 1654046807,326369959, 1654104007,294633529, 126107684,
+ 385024993, 1654177858,1654210647,1654262051,1654317000,1654398921,1654562762,1654636620,2146386, 1654669849,1654734869,1654759371,1654980845,1655015283,45137958,
1655048250,1655111696,1655128156,1655161369,6882040, 1655226370,1655243274,1655275560,47546374, 1655291970,1655332812,48676892, 122683404, 1655407510,1655456577,
- 859800027, 1655488567,1363574850,5325682, 1655554108,153747542, 1655644109,1655800240,138575894, 716193858, 1655833468,1655882167,1655915679,1655947765,421086049,
+ 859800027, 1655488567,1363574850,5325682, 1655554108,153747542, 1655644109,1655800240,138575894, 716193858, 1655833468,1655882167,1655915679,1655947765,421086049,
1655988174,25560119, 1656225868,268730394, 1656258572,73531449, 1656283087,1656373679,1656406487,383664149, 1656439247,1656471589,155025410, 1656487982,1656545232,
152059905, 1656594385,1656692690,1656799234,1656816955,1656849608,1656889299,153845862, 344539146, 6193168, 1657000038,56721430, 1657045295,5312322, 1657078705,
1657111062,313245698, 1657151444,1657200597,1657397206,160727056, 6127622, 1657528279,176784649, 421527578, 1657635116,1657667626,2605087, 1657692120,1006043167,
- 1657782561,1657815096,5865898, 1657849417,1657929787,180666370, 1657970649,1658044475,1658077190,574930975, 1658101722,1658191903,1658208259,990806053, 116375584,
- 150586571, 1658609628,1658700236,1658734869,208667074, 17006607, 1658814483,408174829, 1658832371,1658863626,1658882943,1658953693,1659232222,253624622, 609812564,
+ 1657782561,1657815096,5865898, 1657849417,1657929787,180666370, 1657970649,1658044475,1658077190,574930975, 1658101722,1658191903,1658208259,990806053, 116375584,
+ 150586571, 1658609628,1658700236,1658734869,208667074, 17006607, 1658814483,408174829, 1658832371,1658863626,1658882943,1658953693,1659232222,253624622, 609812564,
1659379679,1659438070,1659469908,126763471, 1659504689,1659602048,1659650091,1659690976,1659764795,1204830809,1659805665,1659880271,441712656, 1659915222,1659977769,
256819202, 1659994199,340265317, 1660043280,1660059872,1660100578,134840356, 1660198883,1660404140,1660469260,1660487836,1660534811,1660568984,1660617930,1660669838,
1660716784,1554120716,1660755940,1660985317,1661091852,233193510, 1661108236,1661127834,1661181926,1661241993,1661304842,257048617, 1661322136,1661370374,1661386773,
796525019, 1661403138,1661419619,1661453604,1661502473,1661542375,1661665802,1661698058,508727261, 1661714491,1661755368,1661829156,1661845975,393412620, 1661878338,
1661911061,1661927446,52576298, 1661944267,1661993993,1662033897,1662158899,1662205964,1662222412,1662263274,1662435344,1662451762,1662484482,2197973, 1662505227,
- 1112932363,1662558187,1662648351,10829843, 136118577, 1662665150,1662738412,1662803949,1662912010,1662959675,658112514, 1663000558,1663049711,1663239466,242466837,
+ 1112932363,1662558187,1662648351,10829843, 136118577, 1662665150,1662738412,1662803949,1662912010,1662959675,658112514, 1663000558,1663049711,1663239466,242466837,
1663289460,1663353369,491831353, 1663418455,5325329, 1663475696,1663534471,5767199, 514883624, 1663574001,1663698269,1663746104,284786707, 180437030, 1663786994,
1663910488,1663942732,170803627, 1663976372,1664041807,1664075059,1664131059,1269940308,1664188456,1664204887,1664262132,1664304457,1664352285,1664369560,1664417818,
1664435068,1664483425,1664551216,181192132, 1664606197,1664868342,1664991264,1665027081,1665092375,1665159021,1665227328,1665273708,149667866, 1665327095,1665387261,
- 1665434889,1665466905,404045886, 192200761, 1665533973,1665565217,1665614749,1665696652,1665745803,1665810954,1665851384,392217003, 1665900537,1666189338,416253340,
+ 1665434889,1665466905,404045886, 192200761, 1665533973,1665565217,1665614749,1665696652,1665745803,1665810954,1665851384,392217003, 1665900537,1666189338,416253340,
1666236438,1666260986,1666310139,1666433063,1666473499,1666532241,550862874, 6602767, 1666584487,151093274, 1666670588,1666715758,1666760730,1666777090,1666793487,
- 1666809878,1666827925,1666891778,226050058, 1666908202,1666924847,1666957368,678805591, 1666990123,1025359882,1667030716,1037139980,119652655, 1667072012,119816663,
+ 1666809878,1666827925,1666891778,226050058, 1666908202,1666924847,1666957368,678805591, 1666990123,1025359882,1667030716,1037139980,119652655, 1667072012,119816663,
1667089228,1667145725,1667303300,1667371481,1667450931,1667497996,1667522558,1667760215,1667809763,1667842063,1667858470,130531330, 1126629460,1667875696,1667924044,
2523162, 1667956738,1667973220,45613071, 1668005904,2129942, 1668022702,307593324, 1668072024,5079147, 1668104218,1668120618,1668137392,1668170161,1668202799,
1668235274,764870710, 746602527, 1668252555,1668317194,918257692, 1668341759,643055627, 1668399141,1595490320,505380879, 1668423680,1668581154,1668620289,1668808720,
- 1668825128,4079642, 1668841904,1668882434,1668931587,1427046410,1669087316,1669120084,1669153218,1669186139,2523159, 1669218320,1669234726,127796058, 175849484,
+ 1668825128,4079642, 1668841904,1668882434,1668931587,1427046410,1669087316,1669120084,1669153218,1669186139,2523159, 1669218320,1669234726,127796058, 175849484,
417300496, 1669251105,1669300316,1669341188,1669431779,1669468283,1669513311,1669562847,1669595138,71188490, 1669619717,1669726229,1669742628,36519942, 1669767174,
1669890071,106004503, 1669906954,1018912775,186417154, 1669939282,6374600, 1669972414,1670045704,1670152326,1670168605,1670184981,2130052, 1670201354,1670219962,
- 80035956, 90112037, 1670251422,1670286571,246087796, 1670348842,1670369048,1670398068,1670414358,1670430762,1670447145,1670463517,1670479878,1670496258,31801347,
- 1670520841,8396584, 1670696662,1670758827,33243142, 409272359, 1670799370,1670923253,124796957, 1670994473,1671053615,231260182, 1671094283,1671135263,51855366,
+ 80035956, 90112037, 1670251422,1670286571,246087796, 1670348842,1670369048,1670398068,1670414358,1670430762,1670447145,1670463517,1670479878,1670496258,31801347,
+ 1670520841,8396584, 1670696662,1670758827,33243142, 409272359, 1670799370,1670923253,124796957, 1670994473,1671053615,231260182, 1671094283,1671135263,51855366,
1162543116,1671151632,1671168016,38879270, 1671192588,229998607, 1671266363,1671299153,1671331878,1100302822,1671348526,1671381030,1671398746,66815322, 1671430160,
1671446544,46710805, 1671471117,1671594010,1671610380,57032746, 1671627185,390971402, 1671659549,1671677968,1671732587,454656012, 1671782414,167903546, 1672257551,
- 1672402270,1672465249,8388919, 1672527894,1672544258,465322010, 1672568848,1672610684,1672667153,1672863762,1672954302,1673020425,236388383, 1673060371,180879387,
+ 1672402270,1672465249,8388919, 1672527894,1672544258,465322010, 1672568848,1672610684,1672667153,1672863762,1672954302,1673020425,236388383, 1673060371,180879387,
1673150884,1673186460,49086506, 1673232430,1673281760,1673314593,1673347084,1673364265,1673404436,1673565514,1673645572,1673725336,888897557, 1673773687,1673805911,
- 1083147578,1673863189,1059522166,1674018847,1674036780,123273235, 1674076182,1674349294,1674403863,1674502168,1674575931,430932027, 864568329, 1674609099,27624295,
+ 1083147578,1673863189,1059522166,1674018847,1674036780,123273235, 1674076182,1674349294,1674403863,1674502168,1674575931,430932027, 864568329, 1674609099,27624295,
1097695291,1674657858,1674698777,1674741737,1674821716,8159242, 1674854421,1674871631,450543642, 1674904438,137445416, 1674977306,1675157531,1022607391,1675214914,
- 1675255836,1675313999,1675347369,607289375, 1675386909,1675609577,1675657253,115720273, 1675673641,1675690065,1675722790,1017921558,1675739229,1675792520,136790053,
+ 1675255836,1675313999,1675347369,607289375, 1675386909,1675609577,1675657253,115720273, 1675673641,1675690065,1675722790,1017921558,1675739229,1675792520,136790053,
1675829278,1675887884,1024327702,252299153, 1675936260,1675985003,466780384, 1676025887,159449187, 1676219678,930086950, 1676296245,1568686539,226476114, 1322909717,
1676337184,1676460269,152961987, 1676501025,1676722269,1676779554,1676855779,389365762, 1676887444,1676952642,1677017996,1543472051,1677067433,27443263, 1677107235,
- 168004081, 127860757, 1677213708,771932179, 1677238308,1677312084,115261472, 788643906, 1677352997,1677525002,520945706, 1677541835,1677590597,1677628217,23856239,
+ 168004081, 127860757, 1677213708,771932179, 1677238308,1677312084,115261472, 788643906, 1677352997,1677525002,520945706, 1677541835,1677590597,1677628217,23856239,
184549378, 1677697062,1677836307,230801424, 1677853106,113737766, 115785740, 1677885521,1677919144,1677951035,1677991975,1678132771,1678182667,1678229515,1678245890,
- 1678262293,1482473488,1678286888,191315980, 1678327819,1678344208,1678360597,755220511, 1678385193,1678589961,1678606473,1678622980,154665411, 1678656102,147423234,
+ 1678262293,1482473488,1678286888,191315980, 1678327819,1678344208,1678360597,755220511, 1678385193,1678589961,1678606473,1678622980,154665411, 1678656102,147423234,
1678688287,58982410, 1678704746,1678789075,1678843946,1678901264,147423247, 1678918686,23609475, 1054900240,1678958635,1679016394,22478864, 1679056940,1679220781,
56639509, 1679327663,1679361080,1679425562,1679441949,1679466542,131335337, 5309176, 1679532079,1679589386,296977423, 1679605772,3900152, 1679622154,1679646768,
204537862, 127795284, 124551174, 1679712305,1262143266,1679900674,128974874, 1679925298,17006634, 1679998986,1680023603,1671266370,1680138292,1680212400,1680245769,
@@ -3277,8 +3272,8 @@ static const unsigned int DictNodes[84251] =
1682079760,1682096210,251232268, 1682129038,1682162898,1682194444,315687339, 1682211353,3211366, 1682276404,1682310022,1682342425,1682407483,1682440194,1682456602,
112394268, 1682474759,1682522558,712148077, 1682595900,1682645053,1682890814,1682931728,1682948136,1532051482,1682967246,1683087423,1683145558,1683200880,1683284032,
1683365953,47530000, 1683441128,1683492661,1683571580,1177240460,1683628098,1683791939,556359748, 1683873861,1683950144,1683998203,1684045843,624869460, 1684062224,
- 826736655, 1684078613,1684094992,11665445, 1684111414,1684144194,358514694, 118538271, 1029571472,1684177373,1684217926,1684512839,1684588195,1684654490,110249305,
- 1684734552,1684774984,275992625, 51494996, 1684932446,1685004361,1685100049,316735554, 1685144089,172638264, 1685217354,1685282891,115785738, 6389841, 426983470,
+ 826736655, 1684078613,1684094992,11665445, 1684111414,1684144194,358514694, 118538271, 1029571472,1684177373,1684217926,1684512839,1684588195,1684654490,110249305,
+ 1684734552,1684774984,275992625, 51494996, 1684932446,1685004361,1685100049,316735554, 1685144089,172638264, 1685217354,1685282891,115785738, 6389841, 426983470,
1685446732,1685537214,1685603961,1685655228,1685703372,1685790797,1686003790,1686078399,554434572, 1686111872,177094694, 21086239, 1686167631,1686298704,1686355999,
43024391, 1686373364,1686424079,1686487103,1686519895,1686573446,1686622968,1686721033,281919499, 1686773841,1686896658,1686913155,1686929523,1686945923,1686962311,
989118473, 1686978644,1687011359,1687027733,48447510, 1687052370,804519967, 1687208046,383320092, 1687246322,1687340003,1687388191,1377141601,931348496, 1687405391,
@@ -3291,36 +3286,36 @@ static const unsigned int DictNodes[84251] =
1691487890,1691541601,1160315564,1229242384,1691715010,1691762744,1691795540,134840360, 81379343, 1691834766,1691928412,1692000354,1692059508,1692098659,1692337246,
1692387188,1692418102,1692450923,1181761547,1692491876,1692573797,1692663829,155631632, 1692684740,1692746174,1692812263,219529244, 1692860862,1692934246,1692975126,
1692991542,1693030167,283361311, 1693073462,1693106202,310640659, 1693130855,1693253723,1693290607,1693360232,1693455019,1693517745,1693582166,1693635964,1693687913,
- 1693712499,1693728903,1693745170,1693761555,79511558, 1693786218,1693892646,1693908998,15482909, 1693925378,1693941890,1693958173,1693974538,1455030300,7094497,
+ 1693712499,1693728903,1693745170,1693761555,79511558, 1693786218,1693892646,1693908998,15482909, 1693925378,1693941890,1693958173,1693974538,1455030300,7094497,
245792789, 1693999211,1694121994,1694138390,6324340, 1694163052,1694195821,81707139, 1694236701,170805647, 723386379, 1694253509,1694285843,1694310510,1694785647,
- 1694909352,1694949488,1695031409,233734155, 1695088671,1695105034,1695121450,866910224, 1695137794,1695154186,246087701, 1695178866,1695359091,1695432735,214335509,
+ 1694909352,1694949488,1695031409,233734155, 1695088671,1695105034,1695121450,866910224, 1695137794,1695154186,246087701, 1695178866,1695359091,1695432735,214335509,
1695451487,1695499284,1695549451,1695613033,212369445, 1695650284,1695712708,1695752308,1695793183,292962330, 1695809839,1695842323,1695858690,1695875128,1695908199,
350142492, 1695948917,1696122244,1696186434,896122918, 1696227446,1696303895,1696366658,1696399584,1696440439,113246497, 3212129, 1696515178,180060599, 1696597380,
- 196149276, 5308891, 1696661516,500498458, 1696686200,1696874710,1696907694,359841899, 1696956428,1696972826,589136202, 1696990292,24297531, 5308504, 7734081,
+ 196149276, 5308891, 1696661516,500498458, 1696686200,1696874710,1696907694,359841899, 1696956428,1696972826,589136202, 1696990292,24297531, 5308504, 7734081,
1697046649,1479065629,1697210490,1697300508,1697317167,1697351028,115769443, 1697399631,1697439867,1697694190,60227586, 1949717, 1697729793,1697759291,1697793297,
- 567132265, 1697849468,385286160, 1697915005,1068761935,1697964158,77512723, 2130882, 1698209919,153042973, 1698302542,1698349102,246087711, 1698406528,128581658,
- 1698463809,458784799, 1698521217,1698562079,1698578866,1698611231,1698629137,1698660383,1698681200,1698725894,1698750594,1698799747,1699012740,1699069964,930103322,
- 1699086827,1699119125,1371373580,1699135554,1699168266,1699192965,1699242118,1699307655,1699348506,116883931, 179489087, 1699365339,1699397671,1699430419,423002134,
+ 567132265, 1697849468,385286160, 1697915005,1068761935,1697964158,77512723, 2130882, 1698209919,153042973, 1698302542,1698349102,246087711, 1698406528,128581658,
+ 1698463809,458784799, 1698521217,1698562079,1698578866,1698611231,1698629137,1698660383,1698681200,1698725894,1698750594,1698799747,1699012740,1699069964,930103322,
+ 1699086827,1699119125,1371373580,1699135554,1699168266,1699192965,1699242118,1699307655,1699348506,116883931, 179489087, 1699365339,1699397671,1699430419,423002134,
1699455112,501383180, 1699528706,1699545098,116375681, 1699564156,1699651721,1653440550,1699725314,1307230218,1699741717,1699758106,1699774476,1699790879,1699807253,
1699823653,1699840026,1522860034,164478978, 1699864714,1700006876,191070239, 958775336, 1700053451,1696595978,1028293079,1700103924,1700170712,1700225163,1700331583,
1700372620,61456415, 1700470925,1700495362,1700512175,1700550639,1700651150,1700733071,324895296, 881639436, 1700814992,1918152, 1700906451,1700954719,1700995217,
1010581789,1701102113,115179548, 1701159058,1701208211,1701347396,1900565, 1701397569,27246618, 1701478430,1701519508,1701609531,1701650581,1701707822,1701757023,
- 1701806557,127041612, 1701847190,1701938938,44318722, 1701978263,1702172016,1702250441,1702305944,1702387865,5867390, 1702584474,1702666395,368002440, 364019738,
+ 1701806557,127041612, 1701847190,1701938938,44318722, 1701978263,1702172016,1702250441,1702305944,1702387865,5867390, 1702584474,1702666395,368002440, 364019738,
51380255, 1702772805,460898334, 1702813852,880919422, 223707157, 1702928541,1703034949,1703067872,1703100503,1703149637,508608578, 1703190686,1703264287,1703280642,
608796682, 1982506, 1703305375,1703445494,578404371, 1703480577,55132179, 1703511047,1703576565,110166082, 495601012, 1703641128,1703657538,1703698592,1703887448,
327965212, 838082721, 306528322, 1703927970,1704091169,1704149422,52330553, 132857867, 1704203865,1704264163,120242178, 520224783, 1704304803,139034678, 1704419492,
- 1704675407,1704740230,1704804378,208584706, 171606028, 1350501265,1704821207,1704853542,204996610, 1704870417,1704911013,1704984683,1304608780,1705017807,270402137,
+ 1704675407,1704740230,1704804378,208584706, 171606028, 1350501265,1704821207,1704853542,204996610, 1704870417,1704911013,1704984683,1304608780,1705017807,270402137,
258752599, 1705058470,1705173159,1705214553,72368165, 1705246827,1705279490,770899978, 1705304232,1705394278,1705426972,1705443565,1705476136,1705492506,1705508906,
816775199, 1705525274,1705542064,1705574446,1705623611,1203060746,1705660672,1705771916,1705820920,1705853873,1705886846,305315866, 1705943209,1706033162,1706049558,
1706065948,1706086517,71712898, 108314936, 1706115101,1706131471,42008713, 1706147927,210272261, 1706205354,1706246175,193593349, 1706270891,1706565804,1157365800,
44613653, 1706631341,1706689526,4997603, 1706721810,1706837001,1706868757,1706885142,55427098, 412139879, 1706909870,1707001339,1707049562,22274223, 1707086856,
114245670, 1707135321,25559511, 1707204784,1707278807,1002864661,1707312688,1707343918,200589341, 1707394213,798375972, 1707450545,1707696306,1707753494,1707778227,
1707869516,1933349, 129876027, 1707967425,1708032836,1708101713,51429952, 449298442, 1708147147,1708196898,1708229528,1708286132,1708415709,1708458455,1708499125,
- 1708556309,116703258, 1708573847,1708621840,129925131, 1708646582,1708785700,1708802076,1708818458,1708834844,1708851229,1708867625,1708884025,1708900394,580861980,
+ 1708556309,116703258, 1708573847,1708621840,129925131, 1708646582,1708785700,1708802076,1708818458,1708834844,1708851229,1708867625,1708884025,1708900394,580861980,
1708916758,1708933236,1708949546,1708965909,1708982282,1708998678,1709015156,1140047901,1709031850,1709065633,1709113369,1709154434,1709195270,1709211657,1472217109,
1709228034,1709244426,1709260931,1709277319,11010066, 1709293571,1709309981,103743529, 1709908152,1710015611,298270735, 5341268, 1710050511,1710096468,1710129154,
1710145648,1710161926,2621552, 1710186681,1710342264,104759298, 97378490, 611074168, 427139259, 1710361564,1710407811,9207846, 1710425539,1710475149,1710506020,
- 8159260, 129417254, 9207818, 1710530748,1473036425,1710637187,1710654080,8994818, 505380866, 1710686217,1710702603,1710719113,16269323, 1710735401,2326659,
+ 8159260, 129417254, 9207818, 1710530748,1473036425,1710637187,1710654080,8994818, 505380866, 1710686217,1710702603,1710719113,16269323, 1710735401,2326659,
1710751749,1710768165,2752513, 1710785168,1710817321,1710833706,1247494357,1710850164,1710866468,1710882951,1710899330,34471976, 1710917168,1710948358,1710964737,
865009670, 1710981235,1213350023,1710997530,1711013904,300056588, 1711489276,110298760, 1711530174,1711554697,1711571075,1711587337,22478985, 8159251, 1711612095,
80035856, 71188509, 1711775936,1711825089,1711931418,1711947807,1711964179,1711980566,159760405, 1711997152,1712029715,1712046102,1712062466,1712078863,1318862863,
@@ -3334,42 +3329,42 @@ static const unsigned int DictNodes[84251] =
44941338, 1716257226,1716291067,1196034, 1716347091,1716522242,1716568066,1716584477,27607069, 1716609236,227115030, 655114278, 1716737083,126287903, 1716801507,
1716863930,1716936917,2197567, 1717043266,1717076986,1717125579,1717175961,17843009, 131629096, 1717223883,1717280982,183975958, 1717393076,46120982, 1717443694,
8390334, 1717518791,1717568713,1717616678,261193766, 1717633784,1717666317,1717723351,145145878, 1618853947,1717805272,194871387, 1717848729,183697474, 1717912046,
- 151076890, 1717944379,900759582, 1717977128,1717993531,1718026266,369558313, 1718042684,1718126201,1718182105,1718321455,1718353941,46530582, 1718370306,173850650,
- 1718386707,1718403088,958070794, 1718419494,1718435856,1718452230,10829830, 1718468662,1718501398,1718518631,1718552153,1718599682,12779530, 1718616066,512541109,
+ 151076890, 1717944379,900759582, 1717977128,1717993531,1718026266,369558313, 1718042684,1718126201,1718182105,1718321455,1718353941,46530582, 1718370306,173850650,
+ 1718386707,1718403088,958070794, 1718419494,1718435856,1718452230,10829830, 1718468662,1718501398,1718518631,1718552153,1718599682,12779530, 1718616066,512541109,
1718637965,1718697986,1718714450,5341272, 1718747595,1718797135,1718829094,1718845478,837746719, 1718870234,1719197915,47923241, 1719320578,1719337431,1719370257,
1719402498,1719418987,1719451679,188825612, 1719468478,1719533578,860423995, 5309428, 1719556516,7143895, 45531158, 150798375, 892157954, 1719600768,1719656668,
1719783014,1719812150,1719844971,1719886045,70942722, 1719951582,1444266690,704366191, 1720033503,1720172990,1720239308,1720287248,796033055, 194036013, 1720304153,
- 1720374816,1720435861,1720470721,1720518847,1720552278,50036776, 1720598530,1490993163,1720623328,1720733538,1720795190,1720827914,1720852705,1720963989,8389785,
- 1721041355,1721092728,1721122882,1721164002,1721287684,1721353785,1721458285,1721516071,1721557219,19270264, 1721614870,164036610, 10650485, 1721647134,113115220,
+ 1720374816,1720435861,1720470721,1720518847,1720552278,50036776, 1720598530,1490993163,1720623328,1720733538,1720795190,1720827914,1720852705,1720963989,8389785,
+ 1721041355,1721092728,1721122882,1721164002,1721287684,1721353785,1721458285,1721516071,1721557219,19270264, 1721614870,164036610, 10650485, 1721647134,113115220,
179765279, 1721688292,1721862925,1721925634,1721942487,182419478, 1721974790,1721991189,622788634, 1722015973,1722123672,706102178, 1722171819,1722205240,1337049625,
- 1722269708,1722286106,1351024678,1722310886,1722418065,886691517, 115769633, 1722468765,1722802408,1722933481,1722982634,7389186, 1723088980,1723121674,119881740,
+ 1722269708,1722286106,1351024678,1722310886,1722418065,886691517, 115769633, 1722468765,1722802408,1722933481,1722982634,7389186, 1723088980,1723121674,119881740,
182992906, 5309910, 1723138114,1189841238,2113558, 1723170847,1723187210,150683660, 1723204016,1723236411,1723270490,1723301947,151109642, 1723336908,1723375851,
308871170, 1723499428,1723547650,128974858, 1723566015,1723670764,1723752685,2834907, 1723827402,1723875354,1048723458,1723891778,1723932910,1724080367,1724268582,
1724286298,1724318561,1724350485,1724366878,1724399642,179159071, 1724416002,1724434500,1724482073,1724548935,1717403690,266772720, 1724596289,787956143, 1724646907,
162119762, 1724694530,185483488, 1724712505,1724817649,1724877434,128581643, 1724924008,1724973531,525550973, 1725014258,1725091570,1725153639,1725194483,1725268400,
- 1725308585,1725350901,775815189, 1725415661,1725448234,1564393488,1725465057,297844767, 1725514087,1725549041,1725604084,1725767925,971849759, 1725825479,78479372,
+ 1725308585,1725350901,775815189, 1725415661,1725448234,1564393488,1725465057,297844767, 1725514087,1725549041,1725604084,1725767925,971849759, 1725825479,78479372,
1725874275,1725907016,362895014, 1725972899,1726006752,355729843, 1726039819,1726120043,1726152733,1726169090,153567242, 1726186319,1726226678,1726456055,1726694486,
1726742637,1726775327,1484259343,1726791682,1726808090,525615106, 1726824460,257638457, 126959657, 1726849272,1726939173,1726955526,75530262, 1726972751,1727013113,
1727119502,1727152130,312180764, 1727176954,1727253496,503431170, 1727300808,1727332373,1293877274,1727348738,29900828, 1727366291,1727398191,43237387, 1727431570,
265994276, 461963286, 194822175, 1727488251,1727561750,47923205, 1727586556,1727660120,1727701245,1727791341,283721965, 1297301536,283197477, 1727832318,1727938641,
825459606, 180601370, 1727971387,542738583, 1728004203,1017921558,1728042314,304826707, 1728127231,1728400630,1728479242,1728504064,116015114, 1728561579,1728593946,
- 51855417, 1728611281,1003356267,1728659472,1728675877,1728692230,126025744, 1728717057,1728921626,1728937996,1728954370,1728970773,1728987148,1729003549,72728691,
+ 51855417, 1728611281,1003356267,1728659472,1728675877,1728692230,126025744, 1728717057,1728921626,1728937996,1728954370,1728970773,1728987148,1729003549,72728691,
1729020751,1729052778,404046109, 199492439, 441073901, 1729134679,1729183754,357220418, 1729208578,1729421571,155910170, 1729511857,1729545545,422952962, 1729594104,
1729634564,1729675406,134514538, 1729708044,458113026, 1729724475,1729757215,1729773578,1729790859,1729855498,1729871956,1729905134,462438412, 1729939467,1730003003,
1730036637,1730118533,1730253190,1730297866,1730315915,1730379788,3375144, 6373468, 1730396186,110575618, 1730419021,215187468, 209453068, 1730495065,1730535685,
1730708998,599474178, 1730756630,1730773022,1730805762,1170342942,1730830598,1730945287,589660191, 1731036134,1731068822,1731125512,2196932, 56524828, 1731199041,
- 1731248168,29884426, 1731265526,1731305737,2195995, 1731465069,1731527097,1731584266,1731780875,1731953177,1732020313,896122892, 433225766, 1732075788,144179221,
+ 1731248168,29884426, 1731265526,1731305737,2195995, 1731465069,1731527097,1731584266,1731780875,1731953177,1732020313,896122892, 433225766, 1732075788,144179221,
1732296743,14450690, 199376980, 1732329526,262684682, 1732364295,5537804, 849413558, 1020805142,1732419853,1732476947,736722966, 1732493368,1732528023,1732591618,
2196851, 1732616462,249987375, 1732714767,1732804866,1732839162,1732873666,1732919361,1732972872,1733435664,1733707541,110248043, 1733771280,1585578010,1733793431,
1733853291,1733887388,1733936158,1733969225,104005647, 110936090, 1734017454,1734066275,1600897327,287557059, 1734099374,1734156561,1734213675,6373408, 1734254866,
1734335134,1734361118,1734394311,1734443027,578043923, 1734463833,1734525373,1734558658,1734590563,1734623291,152027568, 1734657813,1734722590,10649903, 1734755384,
1734820792,1734870267,1734919816,1734967307,2203923, 233473829, 1734984217,116015114, 304889866, 1735049653,468205634, 1735082086,1735114754,1735131245,1735172372,
- 1735393321,1735409676,141606923, 318063083, 916914207, 1735426321,193659806, 1735467285,1117012022,1735532822,242729077, 1735574351,1735607285,1735671810,659914758,
- 1735688290,1336098827,1735720970,1735737363,1735753749,952074271, 1735770959,1735802906,116703235, 1735819801,1735884853,1735926039,1736081645,1736122648,4309281,
+ 1735393321,1735409676,141606923, 318063083, 916914207, 1735426321,193659806, 1735467285,1117012022,1735532822,242729077, 1735574351,1735607285,1735671810,659914758,
+ 1735688290,1336098827,1735720970,1735737363,1735753749,952074271, 1735770959,1735802906,116703235, 1735819801,1735884853,1735926039,1736081645,1736122648,4309281,
111280149, 1736212490,1736228923,1736270105,1736335642,1736475224,1736515867,1736581404,5309937, 1736671662,1736726436,324895753, 483395620, 1736772689,1736888565,
154042862, 1737001215,1737072925,484017263, 1737236766,1737326594,1737343002,281362548, 1737362643,1737416991,5326635, 1737531680,1737655217,1737687479,1737719829,
1737736222,1737769025,1737818152,1737834522,948191263, 1737850901,738344986, 1737875745,8389746, 1738039586,1738096642,1738113043,55197717, 1738134718,1738203427,
- 140247515, 372245833, 249110820, 1738342637,1738376201,113246679, 1738407948,1738424322,84721685, 1738449189,1738523083,1738573068,1738621070,297844746, 357793794,
+ 140247515, 372245833, 249110820, 1738342637,1738376201,113246679, 1738407948,1738424322,84721685, 1738449189,1738523083,1738573068,1738621070,297844746, 357793794,
1738653702,229736470, 1738670574,1738711334,1738875175,1739080500,1739129030,8610088, 1739161739,1739194395,1739227983,271384586, 1739265831,180715522, 1739309140,
1739344153,81166352, 1739415849,575733776, 135184424, 1739474489,1739579690,182140938, 1739669585,280150054, 1739710763,207978522, 147423254, 47923219, 1739792684,
1739874605,1740423184,1740439593,1740456490,1740472341,1740488726,1740505100,1740522026,225869835, 1740546351,1740784959,1740854297,580158697, 1740931502,1138737191,
@@ -3380,30 +3375,30 @@ static const unsigned int DictNodes[84251] =
1743290452,436158490, 1743323673,1743388777,1743423860,696582619, 190169110, 547127298, 1743495484,1743593789,1743650818,168935443, 1638727682,1741488665,1743667254,
1743708478,1743798344,1743871392,1743929365,1743945863,37748870, 1743970623,1744045444,844464157, 1744109589,1285734402,3735854, 509297833, 1744134464,1744396609,
117900171, 1744462146,320946677, 1744519170,1744535564,1306771759,158254319, 1744551990,1744584710,1744601109,1744620433,1744715860,1744748628,1744782464,1744830507,
- 1744863992,1744904515,6373435, 1744961552,1744986436,1745027527,1745076250,1018020649,1745092668,1745175561,136118711, 441385948, 1745207402,1745289226,45039658,
- 1745314117,1745371220,1745412422,1745567851,1745609031,344850472, 1745720670,1745780742,25559090, 1745797132,1428996127,1745822024,1745930079,1745996829,141836319,
+ 1744863992,1744904515,6373435, 1744961552,1744986436,1745027527,1745076250,1018020649,1745092668,1745175561,136118711, 441385948, 1745207402,1745289226,45039658,
+ 1745314117,1745371220,1745412422,1745567851,1745609031,344850472, 1745720670,1745780742,25559090, 1745797132,1428996127,1745822024,1745930079,1745996829,141836319,
6373847, 1746042899,1746059286,271384602, 1746084169,1746337811,253935638, 1746355699,1746387001,1746403354,1746420171,174080936, 1746469294,2197170, 1746518936,
123273256, 1746572526,1746670937,1746706762,1746911339,244170754, 1746944142,1746985291,51855417, 1747042370,1747083596,1747140610,973078568, 1747157295,1747192267,
469614604, 164757558, 1747240175,1747280205,1747455248,159268880, 1747525966,1747617257,276480059, 1747673423,153190427, 1747795980,8397136, 1747813344,1747861756,
- 1747902801,1748058217,1748099410,1748172802,1748189203,1748205589,1748222189,199573530, 701300767, 122716191, 1748256555,1748287514,1748303903,93978639, 48611330,
+ 1747902801,1748058217,1748099410,1748172802,1748189203,1748205589,1748222189,199573530, 701300767, 122716191, 1748256555,1748287514,1748303903,93978639, 48611330,
1748320322,1748353062,1748369840,1748403266,1748467738,1245315881,1748486556,230309904, 1748533308,1748617483,1748664857,1723121690,1748729964,1748765189,1748820307,
1748878177,119816222, 1748918612,1749024789,1749041164,184926214, 1749066069,163733846, 1749206538,1749254275,161234953, 1749270540,1749295447,1749352460,1749368834,
- 1785897, 1749386126,1749451806,1749483532,932970517, 1749499923,1749516310,1749532684,1749549067,1749565555,65667207, 1749590360,1749663784,1749680138,115294250,
+ 1785897, 1749386126,1749451806,1749483532,932970517, 1749499923,1749516310,1749532684,1749549067,1749565555,65667207, 1749590360,1749663784,1749680138,115294250,
1749696555,1750163801,1750450257,1750483880,1750517982,1750564951,1750622554,2605068, 1750683620,1750737243,1750892600,1750925849,8397148, 1750999389,1751040430,
1751094871,1751163230,1751220255,1751236699,619823377, 1751275253,1751352056,1751384076,491233631, 119358311, 1751400552,188106602, 1751458144,1751630769,1751663479,
- 1751695414,1751736673,1751818594,1685241912,1751924796,695369738, 1752015203,1752170498,1752186895,73531418, 8610148, 8389013, 1752205338,1752256246,650051622,
+ 1751695414,1751736673,1751818594,1685241912,1751924796,695369738, 1752015203,1752170498,1752186895,73531418, 8610148, 8389013, 1752205338,1752256246,650051622,
131335620, 1752353755,1752441189,1752514667,1752551691,211894278, 1752605030,1752713314,6374263, 1752768871,1752826286,1752883560,1753022504,1753038879,1753055238,
211189772, 240566303, 116375618, 234307600, 1753071698,1753104415,206176298, 1753120899,64684162, 1753140367,1753193392,1591607727,1753252723,1753336180,1753403653,
426835984, 1753473385,119357954, 1753678315,45350952, 1753719146,322535490, 125584439, 113115157, 1753779165,1753826933,1753964907,1754076596,1754136597,1754161516,
- 1754251807,1754308973,1754407278,1754480652,1754497833,1754537143,1754613563,1754660972,1754693659,666291974, 1754726509,553156646, 1754767727,1676361759,266486261,
- 1754841147,1754874618,1754906690,1377387689,1754939880,3212488, 1754974619,1755041025,1755070495,286228501, 945176607, 1755092273,1755160944,1755472241,279314454,
+ 1754251807,1754308973,1754407278,1754480652,1754497833,1754537143,1754613563,1754660972,1754693659,666291974, 1754726509,553156646, 1754767727,1676361759,266486261,
+ 1754841147,1754874618,1754906690,1377387689,1754939880,3212488, 1754974619,1755041025,1755070495,286228501, 945176607, 1755092273,1755160944,1755472241,279314454,
1568016974,1755662013,1755743855,2932844, 1755791386,126025738, 1755816306,268468226, 5309643, 1755947379,1337229314,246121384, 1756070753,246087720, 1756111220,
- 1756153877,243597742, 1756192922,146358303, 174080419, 1756275061,1756438902,23380160, 1756512299,1756553591,8391153, 866844756, 1756684664,1756750201,2195615,
+ 1756153877,243597742, 1756192922,146358303, 174080419, 1756275061,1756438902,23380160, 1756512299,1756553591,8391153, 866844756, 1756684664,1756750201,2195615,
1756863909,1756930426,502989294, 1757061499,131334252, 1013219339,1757152330,1757184012,1757200422,1900582, 1757216814,474054666, 114049050, 1757274492,1757651325,
762019869, 1757716862,1757897087,1758003238,128090114, 1758019643,1042546730,1758060928,1265631295,1758134797,515031147, 1758192001,1758266264,1758323074,1758388611,
- 1758445614,292995170, 1758499827,1758593119,1758642192,1758658586,1758674960,257433988, 1758699909,1758774211,169320838, 188582245, 1758822937,1758890816,6438952,
- 1758954232,795148307, 472270489, 1758994823,1759084556,144048244, 1759101387,1296568041,1759158664,794362458, 185484318, 19259785, 1759334242,1759396271,654025098,
- 789446773, 1759437195,1759494184,1759510987,1759559787,1759601036,1759690791,954236987, 1759724063,6946875, 5311929, 1759775438,1759895949,1759985676,267272626,
+ 1758445614,292995170, 1758499827,1758593119,1758642192,1758658586,1758674960,257433988, 1758699909,1758774211,169320838, 188582245, 1758822937,1758890816,6438952,
+ 1758954232,795148307, 472270489, 1758994823,1759084556,144048244, 1759101387,1296568041,1759158664,794362458, 185484318, 19259785, 1759334242,1759396271,654025098,
+ 789446773, 1759437195,1759494184,1759510987,1759559787,1759601036,1759690791,954236987, 1759724063,6946875, 5311929, 1759775438,1759895949,1759985676,267272626,
1760002102,1760043406,1760158012,1760247850,1760264204,588218407, 447840293, 1760280650,1760348929,1760403855,1760477966,124863134, 1760513803,1760567696,1760780689,
445530150, 1760854038,1760871564,1760928146,1761017894,1761034278,1761050683,475545638, 1761091987,1761206676,1761270131,1761333314,6373815, 1761411115,1761443842,
1761461278,500957222, 1761501589,2359350, 1761575966,1761607739,1761640494,1761690360,576176143, 619397122, 1761730966,1761922111,1761972770,1762050086,1762066969,
@@ -3411,20 +3406,20 @@ static const unsigned int DictNodes[84251] =
1762902028,1762918954,336707625, 8389428, 8389631, 1762934843,1693106214,1762976153,1763090842,1189840214,1763168901,193708091, 1763229715,1604534294,1763246146,
185417734, 1763287451,1763360827,547192870, 48480272, 1763398949,1763451292,1763533213,1763598750,220662173, 124863144, 1763746207,170804463, 1130627566,1763877280,
1763950630,1763971258,139034708, 1764034944,1764098478,158253163, 1764148092,1764196391,1764237729,1764476552,927350794, 1764524086,1764556908,1764589676,1764622420,
- 1764656297,3212379, 1764695815,654000546, 1764786216,2719775, 1764805778,1764851772,1764936966,1765007778,6438918, 1765064795,1765450148,1765671215,47611925,
- 353239116, 1765703809,1225588822,1765738213,858406928, 1765785665,1765834754,1180205077,1765851666,1765972071,1766015513,1766080522,1766098263,1766154661,210633718,
- 1766228833,1766260790,1766293514,1766309929,1766326274,1250607132,1766344388,1766408202,1766424597,651591696, 1766441937,1766490150,278102047, 1766515110,996163649,
+ 1764656297,3212379, 1764695815,654000546, 1764786216,2719775, 1764805778,1764851772,1764936966,1765007778,6438918, 1765064795,1765450148,1765671215,47611925,
+ 353239116, 1765703809,1225588822,1765738213,858406928, 1765785665,1765834754,1180205077,1765851666,1765972071,1766015513,1766080522,1766098263,1766154661,210633718,
+ 1766228833,1766260790,1766293514,1766309929,1766326274,1250607132,1766344388,1766408202,1766424597,651591696, 1766441937,1766490150,278102047, 1766515110,996163649,
1766613415,9519127, 1766793640,1766916354,760905730, 760930729, 1766950057,1766982992,1767039402,1767133536,1767170475,1767261067,1767326163,353241574, 1767374954,
1767457447,1767498156,1767563693,1767686166,209813535, 1767704248,1767784488,1767800844,1767817315,1767849986,338264093, 1767874990,1768038831,1768195463,1768226856,
- 1768243206,1768259596,42434581, 1768277480,1768325132,200261740, 374194188, 14794792, 1768350128,1768432049,164773915, 1768595890,704332079, 1768661427,210436123,
+ 1768243206,1768259596,42434581, 1768277480,1768325132,200261740, 374194188, 14794792, 1768350128,1768432049,164773915, 1768595890,704332079, 1768661427,210436123,
1768784719,1768817694,1768852800,1768915403,189693964, 1768964929,1768997835,1179271974,1769133212,179994662, 1769218484,1769606696,1769636328,1769672877,1769717826,
- 118489090, 1769750831,116752394, 1769783323,1769824693,1769869455,1769921915,1769980441,1770045442,1770061834,1143128929,1770086838,158711848, 1770209296,149161067,
+ 118489090, 1769750831,116752394, 1769783323,1769824693,1769869455,1769921915,1769980441,1770045442,1770061834,1143128929,1770086838,158711848, 1770209296,149161067,
1770225967,350912524, 1770258458,1770279213,1770307586,147685397, 1770332599,61440031, 1770725817,49020966, 1771012108,1771028518,1032142860,785678352, 1771044948,
1771078796,61997072, 1771135418,1771193546,1029572414,1771243409,1771282875,1771405328,1771424497,1771460544,1164427266,1771528636,1771717772,1771768961,1771814914,
1771831317,380272671, 1771854752,1771913275,1771946022,1771963736,1772012952,1772062750,1772110127,1772144678,2195483, 1772298685,1772437506,1772453909,1772470303,
1772486675,120963992, 1772503486,1772573296,147243092, 1772635574,1772685695,1772756358,133414941, 1772798051,118882607, 1772839358,470712349, 1772964319,1773018428,
312180738, 1773077755,1773125709,1773158937,5883066, 1773226292,1773305916,150798807, 1773396415,1773445568,1773535258,1773551635,1773568022,5866343, 1773584985,
- 1773617183,1773633546,3473420, 1773649936,1773666314,3473840, 206176275, 1773691329,122131011, 1773816030,1773871554,1773945665,1773986243,1774206978,46530591,
+ 1773617183,1773633546,3473420, 1773649936,1773666314,3473840, 206176275, 1773691329,122131011, 1773816030,1773871554,1773945665,1773986243,1774206978,46530591,
150798420, 1774223382,1774239775,153190450, 443645954, 1774264772,8395849, 1774504713,1774559685,1774739910,1774813630,116375628, 1774887367,1774985672,1775198665,
1775256029,301350964, 1775296970,3211698, 150536952, 1775439059,650559526, 1663255582,1775493579,1775569247,13074458, 1775620143,1775665154,10944541, 1775690188,
1775780299,1775829451,593379384, 1775881298,291111407, 1775960123,1561043405,1775992844,1776010134,1776059275,1776125303,1776214478,1776484406,15351848, 1776521171,
@@ -3439,39 +3434,39 @@ static const unsigned int DictNodes[84251] =
1781170241,555319403, 477937692, 1781219438,1781253922,1781284886,515506178, 1781301294,1781359076,1781522917,1781596620,1781628959,1781646345,1781678082,1781703142,
1781776391,2195810, 1781792775,2195594, 1781817831,1781899752,131891226, 717652010, 1781998057,1782054943,1782071308,1782088114,1782120485,113246511, 1782136834,
1782161898,1782194667,1782270478,898154799, 1782317116,1782407660,788430860, 1782481355,624837641, 1782538733,1782613364,1782664454,1782727670,1782768110,1782956473,
- 46530562, 162187258, 1783007031,1783054376,1081212970,1783489008,1783660631,1783709780,5341276, 1783744698,174456862, 1783783921,1521647642,1783931378,44941314,
+ 46530562, 162187258, 1783007031,1783054376,1081212970,1783489008,1783660631,1783709780,5341276, 1783744698,174456862, 1783783921,1521647642,1783931378,44941314,
1783988290,1155564021,1784029683,1784122313,334135334, 1784168474,155648012, 579601438, 1784189263,1784250968,600852949, 196149285, 405864500, 1784283241,1784316350,
1784381494,1784417482,1784485576,1784545313,18596321, 1784594538,1784677604,1784725563,235438540, 1784759562,7258200, 1784791066,1784807531,1784840258,1784872976,
994443311, 1785029108,1785283725,1785331753,1785349620,1008680986,1785405941,1526006063,188582192, 1785455094,1418133514,45137948, 1785579065,1785678175,1785724974,
565920047, 1785782775,325255252, 87539740, 1785897464,1786004216,1786036290,633569286, 118882388, 1786077689,401834065, 1786232938,4998704, 1786323450,1786429985,
- 1786479510,1786529319,1786593346,1786627272,1786658846,1786695790,638500886, 51429457, 151093286, 1786741816,44941318, 1786806303,1786822662,1786839061,427557711,
+ 1786479510,1786529319,1786593346,1786627272,1786658846,1786695790,638500886, 51429457, 151093286, 1786741816,44941318, 1786806303,1786822662,1786839061,427557711,
1786857017,1786962427,1787136319,291013785, 1787167738,1787215931,1787257340,1787363347,683982870, 1787379754,1787396118,1787412510,1787453949,1787593970,1787658339,
- 1787691046,1787707476,1787748862,1787841094,1787872180,346719206, 1787940144,1787985966,1788036197,1788085071,1788125695,5177373, 1788220443,1788272506,115114518,
- 1788349558,68567051, 1788404224,896517110, 8390928, 1788649985,1788723260,190841353, 569005944, 1788813826,383796092, 1788895747,1789010436,1789067306,126959638,
+ 1787691046,1787707476,1787748862,1787841094,1787872180,346719206, 1787940144,1787985966,1788036197,1788085071,1788125695,5177373, 1788220443,1788272506,115114518,
+ 1788349558,68567051, 1788404224,896517110, 8390928, 1788649985,1788723260,190841353, 569005944, 1788813826,383796092, 1788895747,1789010436,1789067306,126959638,
1789084107,1789134323,1789165610,1789181974,1789202432,141412838, 1789255236,16269321, 1789321733,1789478376,1789526319,302563857, 838451632, 1789559275,1789592617,
49152006, 1559887893,269418508, 1789658116,1789724217,1789829638,1790017573,895991874, 686425433, 1790042631,1790116362,129876490, 1790149741,316621263, 1790190088,
- 1790280175,1790312986,1790353929,7144369, 1790509142,1790542787,447987733, 1790591278,1790625337,1790730762,119998731, 1790796299,1790904803,1790935052,116375582,
+ 1790280175,1790312986,1790353929,7144369, 1790509142,1790542787,447987733, 1790591278,1790625337,1790730762,119998731, 1790796299,1790904803,1790935052,116375582,
1790960140,1791051081,1791098899,1791115286,1791131707,1791164476,1791255053,1791363998,705314875, 1791410222,1791460008,1791492127,17221571, 1791517198,1791574067,
913391627, 1791606795,1791623255,4292664, 1791681039,1791730192,1791821501,1791901755,1791935573,1791968168,270401595, 1792004240,1792065577,1079706518,1792081930,
154943504, 1792107025,1792232317,1792278550,1792296436,119357520, 371884054, 233734170, 1792352786,1792508436,44941317, 653099034, 1792557593,1792622648,1792659723,
- 1521647626,1792704522,1496843273,1792720927,284786730, 1792737805,1582874650,1792786478,759710869, 1792786434,1792836129,1792885681,1792917963,1792975379,245350402,
+ 1521647626,1792704522,1496843273,1792720927,284786730, 1792737805,1582874650,1792786478,759710869, 1792786434,1792836129,1792885681,1792917963,1792975379,245350402,
129876075, 1793082262,473432598, 1793130550,1793163331,1793253908,1793349921,1793393400,1793425867,1793475505,1793509175,1793558327,1793605740,1793638426,1793655321,
44531750, 1793729045,1793876502,1794015273,1794031628,1396674020,1794048059,8392971, 1467121702,109166602, 1794089495,1794179518,124733018, 1376518627,1794245717,
1794277398,800227873, 1794294607,5882327, 1794335256,1794425823,1794482713,1794523189,1702510613,1794556363,1794606191,154796511, 1794638857,47611914, 1794679322,
- 1794753441,1581400080,1794810395,1794867266,1794904201,96419880, 1794949150,1794985923,46416096, 1795047490,1795081225,1352400922,1795114553,1795219996,134103987,
- 1795316199,1795358730,1083474351,1795383837,1795506213,1795522668,1795555350,1795573224,51625995, 1795629598,52199453, 1795789203,1245904938,1601327257,459145258,
+ 1794753441,1581400080,1794810395,1794867266,1794904201,96419880, 1794949150,1794985923,46416096, 1795047490,1795081225,1352400922,1795114553,1795219996,134103987,
+ 1795316199,1795358730,1083474351,1795383837,1795506213,1795522668,1795555350,1795573224,51625995, 1795629598,52199453, 1795789203,1245904938,1601327257,459145258,
1795833916,1795924511,1796055584,2933960, 1796137505,119357549, 339624373, 1796219426,298861768, 1796293928,1796350499,1796472873,1796489282,1796524757,1796571990,
- 324534284, 8397348, 1796621481,1796653087,153747519, 1796673313,1796751391,1193853880,1796768757,1796834886,45465641, 1796917434,1796948388,1796980746,3850762,
+ 324534284, 8397348, 1796621481,1796653087,153747519, 1796673313,1796751391,1193853880,1796768757,1796834886,45465641, 1796917434,1796948388,1796980746,3850762,
294142059, 18137130, 1797005861,1797153318,1442512927,1797242964,1797275707,1797308558,54820866, 1797349927,1500577818,1797455938,1797491150,1797586970,1337903290,
- 137101834, 1797324826,1797603368,1797619722,344850469, 1797643428,1797775912,115720235, 1797915119,1797956137,1798179541,307725233, 1798234666,1798342442,261193750,
- 1798394388,1798439449,1798505366,1798562347,1798684814,1798718358,1798775340,340903957, 1798866955,117506351, 658161730, 1798939181,1799094300,1799110743,335151130,
+ 137101834, 1797324826,1797603368,1797619722,344850469, 1797643428,1797775912,115720235, 1797915119,1797956137,1798179541,307725233, 1798234666,1798342442,261193750,
+ 1798394388,1798439449,1798505366,1798562347,1798684814,1798718358,1798775340,340903957, 1798866955,117506351, 658161730, 1798939181,1799094300,1799110743,335151130,
1799159846,1798472527,1799177601,1799227071,1799323754,1799405995,1799438787,3162148, 1799471110,1799487918,1799536722,5799993, 1799569474,1799610926,1799717335,
- 1799751153,1799783993,1799889455,1800093718,699334694, 632143913, 1225031787,155829248, 1800110139,1800143702,1800192010,153882221, 1800214196,1800257558,599343142,
+ 1799751153,1799783993,1799889455,1800093718,699334694, 632143913, 1225031787,155829248, 1800110139,1800143702,1800192010,153882221, 1800214196,1800257558,599343142,
1800275315,1800306715,1435238466,922289075, 1800348208,1800487820,1800537000,1800569346,22267647, 1800603029,639501342, 1800655888,1800701122,1800757809,1800816068,
1800847420,1800938034,1801060889,1801128599,1801209584,649921551, 3473471, 1801240684,1801276291,429918234, 1801339310,871612427, 1801391374,1801454059,1801486395,
1801519142,1801536025,203818389, 1801603760,1801654109,1801699435,1801732399,1801764890,1801781678,1801832362,1801896017,1801929163,1801986611,1802043838,1641267226,
1802108988,1802199604,1802338363,1802379829,1802552341,1802601311,1802666089,1802698779,1802732438,1143521336,44613647, 1802789430,1802898154,1802944528,1802960934,
- 140247079, 1802978040,1803018807,42369066, 1803100728,1803158594,1803223562,1803255916,1317699622,1803289526,1803354571,1803412025,234176550, 1803486056,48054293,
+ 140247079, 1802978040,1803018807,42369066, 1803100728,1803158594,1803223562,1803255916,1317699622,1803289526,1803354571,1803412025,234176550, 1803486056,48054293,
1803552308,1803599953,1803632680,1803649561,1803723322,321211298, 450592866, 1803798514,650559498, 1803870779,152027178, 1803978177,1804009931,6834948, 1804059161,
1804132924,1804231229,9322507, 1198227466,1804313150,55459859, 1804362303,1804403106,1804444224,1804517435,1804552549,227524750, 44531738, 1804599755,1804648970,
301351721, 1804681675,1803812876,51380266, 1804733226,1804821057,113838000, 1804861450,1509785602,1489010769,1804878279,1804927510,1344323610,137102938, 1804960281,
@@ -3483,23 +3478,23 @@ static const unsigned int DictNodes[84251] =
1808482344,1808498714,1808515114,52641823, 1808531475,1808547878,1808564240,1808580629,577617942, 1808597028,47316997, 1808622159,1808917072,1809024344,1347846579,
1809072159,1809088947,147063967, 1809122705,1809186882,1809220023,1809261137,1809399839,211894282, 315031578, 226443302, 1809417039,1809457746,1809637971,1809776656,
251592814, 1809801812,1809842178,1809858617,770162700, 1809875791,1809916501,1810047574,1810104791,1810137147,1810169907,683360258, 1810202664,346488858, 1810221791,
- 1810309719,958775298, 1810375256,1810415637,1398505538,1810432026,1810448410,1810464770,1810481162,410632204, 1810497547,1810514908,1810547225,132155659, 213663775,
+ 1810309719,958775298, 1810375256,1810415637,1398505538,1810432026,1810448410,1810464770,1810481162,410632204, 1810497547,1810514908,1810547225,132155659, 213663775,
1810621017,1810735706,559120422, 1810808844,1810825725,1810883163,1811091740,1811137448,6717452, 1811170144,252297711, 1811235687,1811270065,1811325532,1811423837,
1811489374,1811578890,420053034, 159383557, 1811595305,1811611702,1811653215,1811833440,1812039397,1812087263,1812119628,1812152358,553173058, 1812168788,1812201579,
1812234299,117751834, 1812267855,1812299797,171835414, 1812324961,1812381698,223903754, 1812398510,1734967306,1812456034,1812548375,393543687, 1812611164,1812643842,
1812660245,116376040, 1812677834,1812726667,1812791378,1812828013,1812890793,1812923422,1812963939,2129925, 1813037927,1813078628,157188206, 1813127781,1813323750,
1813384861,1813430303,1813446929,336790264, 1813488230,1813561398,1118323148,1070417345,1813598313,193659806, 1813693017,542556162, 1813733991,1813954587,1813987354,
1814006382,1814057513,825557058, 1814119912,1814176360,1814322702,1814398915,1814446164,1814479307,1814536809,1814642781,1814693829,208503817, 1814724638,1814757402,
- 1814774155,1814806559,1814822950,189513759, 1814840500,1814889481,205815846, 1814921646,304889882, 1814971045,1815035914,7733928, 1815437931,1815625730,4964378,
- 651100172, 586072130, 1815650924,1815773784,1815806839,1815838758,1815855536,592789516, 685852281, 1815894882,1815937045,1815953424,1815969803,1815986178,189202453,
- 1816002576,17006602, 1816020366,1816084959,1816117335,1816169171,1816215578,6374185, 1816231948,15073309, 1816250123,1816339053,1816480995,1816530404,443974479,
+ 1814774155,1814806559,1814822950,189513759, 1814840500,1814889481,205815846, 1814921646,304889882, 1814971045,1815035914,7733928, 1815437931,1815625730,4964378,
+ 651100172, 586072130, 1815650924,1815773784,1815806839,1815838758,1815855536,592789516, 685852281, 1815894882,1815937045,1815953424,1815969803,1815986178,189202453,
+ 1816002576,17006602, 1816020366,1816084959,1816117335,1816169171,1816215578,6374185, 1816231948,15073309, 1816250123,1816339053,1816480995,1816530404,443974479,
1816576084,1816608910,163414028, 1816650350,189252015, 749898493, 712147376, 1816814191,1816890572,1816953135,1816994416,1817103489,555401323, 1817158257,1817289330,
1817371251,1817480061,1817535092,1817633397,45432914, 1817756080,1817788945,1817830006,1817952278,143392834, 1817974983,1818042999,1818116108,1818132486,1818148885,
- 1818165279,1818181689,153714690, 1818198018,1722646539,1818223224,1818296336,3211785, 1818321529,1818387066,1818501755,119359348, 1818558910,1818625054,300720764,
+ 1818165279,1818181689,153714690, 1818198018,1722646539,1818223224,1818296336,3211785, 1818321529,1818387066,1818501755,119359348, 1818558910,1818625054,300720764,
1818665597,1818804254,1818837018,1818854838,1818902587,1818935306,551813174, 1818952862,1819017753,867794960, 1819091582,1819164698,1819181948,1819230654,1819296670,
1819328539,712900637, 1819370072,1819410532,1447559643,221134870, 1305346054,1819452031,1819746944,1819887584,1819934732,45465626, 144098359, 1819959937,1820049933,
580124969, 1820107394,1820237843,1820331810,1820410291,1820451459,1820623151,465551426, 1820664452,153190834, 1820754223,266191319, 1820795525,119357545, 1820966978,
- 1821000139,1821049252,1821090438,321209365, 902889478, 1821196309,33243148, 1821212738,1821245450,46694410, 1821270663,131268690, 1821377471,1611137483,138642039,
+ 1821000139,1821049252,1821090438,321209365, 902889478, 1821196309,33243148, 1821212738,1821245450,46694410, 1821270663,131268690, 1821377471,1611137483,138642039,
1821409739,558628930, 365772816, 1821458969,1821526027,1821598344,859963402, 1821663881,578748432, 52543519, 1821769730,1821786152,385187846, 241156698, 1821811338,
1496450419,1821950018,601325625, 381733297, 1821982746,1821999144,577093634, 1822024331,1822180747,1112441267,1822229802,191791126, 1822286476,1822359618,1372357368,
1822392332,49463302, 1822417549,1822474251,1822490690,1822524339,1822556226,1822588934,1822605333,1822621712,213483535, 1823007374,518767025, 1823130687,1823220367,
@@ -3509,26 +3504,26 @@ static const unsigned int DictNodes[84251] =
1824669717,629374998, 756318683, 1824689893,1824769014,1824800794,254197762, 1824817164,1824833825,1824875154,863291909, 1824997442,1825038995,1825137300,1825193994,
1825219221,1825358283,513786801, 273088550, 309641675, 1825415830,1825521695,1156808714,1825546903,1021870561,1825628824,1825819136,1825865787,302563759, 1825899720,
1825936417,1825989273,1826103962,1826193507,1195507796,1826235035,119997591, 312033712, 1001538569,1826324912,1826366108,1826431645,204718179, 1826718190,1826750502,
- 1826766914,1826801894,1826848770,115204766, 1826867211,254591470, 1826935420,1826979866,1348223007,1826996246,174227492, 1827013493,115114946, 1827054239,317842080,
+ 1826766914,1826801894,1826848770,115204766, 1826867211,254591470, 1826935420,1826979866,1348223007,1826996246,174227492, 1827013493,115114946, 1827054239,317842080,
1827143722,55033898, 1827168929,1827274839,1827323916,1827340314,1827356703,114409475, 1827381922,1827536907,1827553292,1827569690,1827586079,115523603, 1363378192,
- 1827603279,1827635216,1827651605,1827667970,120258571, 578748428, 141606931, 1827684374,1827700748,1827717158,134021151, 1827733585,144834600, 1827766288,125927452,
- 1827791523,1827932287,1827998523,1828094632,1828126732,247234586, 1828146633,1828194011,1828225046,1828241419,185581599, 1828266660,1828342216,1828391681,288620550,
- 1828439082,1828545189,1828606971,144048131, 1828651062,49086490, 61997058, 1828692646,1828938407,1829158928,1829175334,1829191711,1829211890,1829274931,236011546,
- 3686440, 1829331624,153207218, 1829504319,1829568531,1829585199,1829617690,1829634090,295190960, 1829650448,1829666842,701055013, 1829683284,1829715989,986267660,
+ 1827603279,1827635216,1827651605,1827667970,120258571, 578748428, 141606931, 1827684374,1827700748,1827717158,134021151, 1827733585,144834600, 1827766288,125927452,
+ 1827791523,1827932287,1827998523,1828094632,1828126732,247234586, 1828146633,1828194011,1828225046,1828241419,185581599, 1828266660,1828342216,1828391681,288620550,
+ 1828439082,1828545189,1828606971,144048131, 1828651062,49086490, 61997058, 1828692646,1828938407,1829158928,1829175334,1829191711,1829211890,1829274931,236011546,
+ 3686440, 1829331624,153207218, 1829504319,1829568531,1829585199,1829617690,1829634090,295190960, 1829650448,1829666842,701055013, 1829683284,1829715989,986267660,
1829732378,1829748751,1829765142,1829782351,1829814278,563724354, 1829830672,10829845, 1829847062,1829864463,1829912602,264946139, 1829929591,1829961730,1829979158,
- 1830027330,1830060705,1830109210,3473414, 1830125622,1830158830,731037734, 1830191135,474071077, 1830216361,1830327748,117424144, 1830371354,1830388563,216727590,
+ 1830027330,1830060705,1830109210,3473414, 1830125622,1830158830,731037734, 1830191135,474071077, 1830216361,1830327748,117424144, 1830371354,1830388563,216727590,
1830453314,1830486032,392642586, 1830511274,1830621419,1830666255,1830682646,1830699020,1830715413,49709058, 112607286, 1830731883,1830767865,1830822571,1830888108,
1830995942,1831043110,1831059472,176308266, 1831075866,1831092236,52723719, 1831108660,113459212, 1831141414,1831166637,1831223318,1831239692,1831256074,1831272479,
52723741, 1831288858,1831305218,1831321610,1831337990,1831354409,564412428, 1831379630,1831485480,677724198, 1831501890,1831543471,43384863, 1831633433,1831698451,
1831716879,1831780368,1831796746,1831813177,278937612, 1831838384,1832026959,1832059182,1832093171,1832124482,1832157408,1832189954,1832206346,1422952210,1832223208,
575668253, 1832264369,10584194, 1832323887,1832420280,349585951, 678954747, 1832468546,1832510130,1832599645,1234534459,1832657587,1832763473,164233326, 1832801716,
463470651, 1832861762,1832896937,1832927234,1832943654,1832960037,1832976403,50315266, 1833001652,1833074704,635912245, 1833093603,1833124442,1833156692,1833190430,
- 220537525, 1833231030,79101962, 256655663, 1833336914,1833378487,1833484304,1833504844,494045370, 1833550350,345145403, 1833591480,5324898, 1833697713,47251485,
+ 220537525, 1833231030,79101962, 256655663, 1833336914,1833378487,1833484304,1833504844,494045370, 1833550350,345145403, 1833591480,5324898, 1833697713,47251485,
1833730585,1833795640,366854991, 299417610, 1833828835,1833861151,126500880, 1833886393,1833964395,119358376, 1834017466,777961500, 1834050235,2195994, 1834106972,
- 2113578, 593068069, 1834590908,1834713935,1834746563,1834803901,33243152, 201523250, 1834844162,1834861130,11059207, 401736098, 1835098815,1835173352,133611523,
+ 2113578, 593068069, 1834590908,1834713935,1834746563,1834803901,33243152, 201523250, 1834844162,1834861130,11059207, 401736098, 1835098815,1835173352,133611523,
1835221839,533397972, 1835253766,1485013032,1835271617,147062811, 1835310407,1835410112,1835517274,1835557569,755056642, 1835918018,1836042129,897311427, 1773388762,
1836073037,2196513, 1836106914,1836172787,1836212932,757628938, 1836358968,1836401111,732930757, 172638743, 1836435097,1836491462,1836614686,173965314, 1836646431,
- 1836662795,1836679170,1836695571,1836711973,757727263, 867794975, 323731886, 1836729903,1545142743,1836802759,70729737, 1836945798,1836992526,1837048520,753680400,
+ 1836662795,1836679170,1836695571,1836711973,757727263, 867794975, 323731886, 1836729903,1545142743,1836802759,70729737, 1836945798,1836992526,1837048520,753680400,
392265740, 1837154358,1837195977,1837253662,1837285481,833863686, 1837318160,1837343434,1837630200,122601514, 1837663222,743096342, 1837696500,1837744212,1837777004,
1837809676,1837826053,212860940, 1837851339,1383940127,1837916876,1837973519,121651240, 1837989909,1838006298,1838022672,1838039078,54460454, 1555136524,1838055515,
1838088204,1838104595,1808121877,1838120991,1838138398,1838170872,1838202882,1838220680,626540580, 1838252044,117833754, 1838268719,20365340, 1838301238,1838333990,
@@ -3537,19 +3532,19 @@ static const unsigned int DictNodes[84251] =
1838989340,47530024, 1839005698,126287929, 1839030990,27623899, 1839366236,361283668, 1839398979,1839483349,1839514654,1839548355,1839595586,1839637199,1839775760,
1839792169,1839809066,1839824917,1839841302,1839857676,1839874602,420249626, 124928022, 1839894061,297353218, 1839940043,1839997648,1840037904,118884373, 1840054731,
2998274, 1840103455,1840119820,1073872934,1840137300,435323104, 1840186280,1840218649,805142549, 1840283951,1840316719,1548239319,148637900, 1840358097,1840448090,
- 1840480287,509870095, 138395674, 1840505554,1840562286,1784905764,1840595481,1840660532,1618231317,1840698847,1840751315,1840908177,1840947924,479133727, 426934278,
- 1840989090,1841020964,1841038326,1841070083,103743500, 1841095381,1841185041,522485762, 2195890, 265797638, 158532011, 1841226454,379093023, 1841332538,292110452,
- 1571930415,1841373911,408831348, 236668356, 7734874, 1841472216,480395345, 1841521369,1841659906,225181734, 718621825, 1841676309,1841701594,905871441, 131334730,
+ 1840480287,509870095, 138395674, 1840505554,1840562286,1784905764,1840595481,1840660532,1618231317,1840698847,1840751315,1840908177,1840947924,479133727, 426934278,
+ 1840989090,1841020964,1841038326,1841070083,103743500, 1841095381,1841185041,522485762, 2195890, 265797638, 158532011, 1841226454,379093023, 1841332538,292110452,
+ 1571930415,1841373911,408831348, 236668356, 7734874, 1841472216,480395345, 1841521369,1841659906,225181734, 718621825, 1841676309,1841701594,905871441, 131334730,
1841775439,1841807444,1841840154,1841856578,1841889326,1841938916,1841987586,1842005580,1842053132,1842070972,1842120370,180879416, 1842160347,1842275036,1842364454,
866844756, 1842380838,444153872, 1842406109,406028888, 1842504414,1842561062,1842577858,5865502, 304833247, 1842610260,1842643051,1842684640,1842848481,1842979554,
1843258083,1843351177,8389234, 958595177, 1843464771,172843748, 1843511355,1843544095,1843560529,1843593303,366575654, 1843642905,1843716837,1843806292,1843839092,
204980243, 6897901, 1843855465,1843889035,1844323047,144048154, 1933340, 1844447337,1844552424,1844592943,124862924, 1844627159,1479656257,1706704922,1844723758,
- 1844775053,1844830953,1844939109,1844992173,1845035609,1845076714,1845297455,1845330910,149815312, 1845388011,1845453548,1845495438,57950248, 1845559322,16597076,
- 1845575764,17843515, 1845609985,1845682925,8389718, 176963672, 1845843668,1845940134,1845990456,1846035350,1846092526,47251494, 719847426, 1846158063,510251691,
+ 1844775053,1844830953,1844939109,1844992173,1845035609,1845076714,1845297455,1845330910,149815312, 1845388011,1845453548,1845495438,57950248, 1845559322,16597076,
+ 1845575764,17843515, 1845609985,1845682925,8389718, 176963672, 1845843668,1845940134,1845990456,1846035350,1846092526,47251494, 719847426, 1846158063,510251691,
1846329403,1085277105,1846362134,250970114, 46497804, 1846387440,1846649585,306446796, 1846758602,1846820948,1846862578,1007206442,1846975275,16810027, 1847033887,
1847050283,1847091955,1847246860,3555354, 232292383, 144949279, 1847264079,1847297523,1847337716,1847510077,8396975, 1847574587,1847609590,1847656458,1847681781,
332742687, 1847754806,1035190291,1847796470,1847869713,1847911159,1847967798,896532783, 1848001592,1848066135,1848124152,140247099, 1848222457,487031087, 1848279080,
- 1848295436,1848311829,490881040, 1848329384,1848377356,1848396993,1848451834,1848509449,1848542099,1848590367,497319946, 1848606779,1848639541,1848672293,345473090,
+ 1848295436,1848311829,490881040, 1848329384,1848377356,1848396993,1848451834,1848509449,1848542099,1848590367,497319946, 1848606779,1848639541,1848672293,345473090,
1848697595,1848845052,1848887235,1848943357,1848999945,84246659, 1849021227,1849082768,1849467647,1849672110,1849720874,1849737253,1849753602,270516252, 1849778944,
426869211, 5308508, 1849844481,1849910018,1849966679,1850022586,4997225, 1850090243,1850262337,1850300973,1850376202,1085784106,824672310, 1850396808,1850425346,
1850441754,31424527, 1850467076,12648585, 8397573, 1850729222,1850769410,1850785833,29376533, 1850802235,3227755, 1850835880,226951204, 1850868766,1850909447,
@@ -3557,22 +3552,22 @@ static const unsigned int DictNodes[84251] =
1099104268,1851384585,1851637842,1851670568,1851686938,1851703362,1851736976,1851768875,1851810570,111132703, 1851886059,1851932732,1852015566,1852047387,1852081040,
25559399, 342606250, 1852121867,658112543, 1852211230,1852243994,1852261244,154471088, 1852309506,357285914, 1852334860,2197990, 1852442060,1852480832,1852572075,
1852613389,1047511055,1342504962,1852751888,1852768277,1852784642,1852801618,17809430, 1852818295,1852859150,1852973839,1853055760,1853219601,143294688, 1853276449,
- 167904134, 1853317906,1853374523,1853407262,1853440012,1853456422,27607046, 1853481747,1853645588,1853727509,1853817265,1853850540,1853916545,1179845544,298270751,
- 1853965250,1853998110,1854030277,1854071574,1854160949,493649926, 363659840, 1854193704,1854210060,109166630, 1854235415,1854546712,1854767563,1854817192,176488486,
+ 167904134, 1853317906,1853374523,1853407262,1853440012,1853456422,27607046, 1853481747,1853645588,1853727509,1853817265,1853850540,1853916545,1179845544,298270751,
+ 1853965250,1853998110,1854030277,1854071574,1854160949,493649926, 363659840, 1854193704,1854210060,109166630, 1854235415,1854546712,1854767563,1854817192,176488486,
1854849132,1854883315,1854916083,1854947409,1854980526,1855029258,357285909, 1855045664,1855078484,1855111227,1855144415,1855177007,1855218457,1855292500,1855349530,
- 158812539, 1855438850,149129063, 1855456079,858865748, 232375143, 1855488471,1855520822,1855553574,1855569922,19267661, 1855586350,552878106, 759710225, 19252864,
+ 158812539, 1855438850,149129063, 1855456079,858865748, 232375143, 1855488471,1855520822,1855553574,1855569922,19267661, 1855586350,552878106, 759710225, 19252864,
1855636872,1855668240,11075610, 1855684610,1855707806,1856086811,1856241721,1856258060,1856274442,701333525, 1856290847,915472426, 1856307221,1856323606,1479622682,
1856339983,1856356378,984317968, 1856373623,1856405530,1856421919,1856438300,56492072, 1856454668,1856471062,1856487426,1856503865,1856520258,1856553825,1856587015,
1856685510,1856733203,1856749608,111542310, 1856765978,1856782768,1856815163,1856848175,1856881749,678264844, 1856913446,1856929794,1856946186,128582594, 1856971548,
1857077260,198755066, 1857102621,1857159179,1857175592,126697482, 1857192445,1857241100,119242767, 16236584, 1857257493,1857273882,31424552, 51855372, 1857290306,
1857323053,1857355788,1857372162,358760458, 1857388686,1857421354,1857437706,1857454096,1857470470,36405314, 828096524, 1857494174,1857570068,1857626910,1857716331,
- 1857749425,456949776, 1857781847,1857830994,684581663, 1857863706,1857880085,141459496, 1857896524,1106018361,1857938208,1858102049,1858175189,1858207824,30392322,
+ 1857749425,456949776, 1857781847,1857830994,684581663, 1857863706,1857880085,141459496, 1857896524,1106018361,1857938208,1858102049,1858175189,1858207824,30392322,
404046760, 207618507, 325075003, 1858240620,1858273296,1801241478,1858298658,1858396963,1858453507,312279052, 1858469900,1858486282,1858502677,1127727135,1858520940,
1858551877,1858584592,1858600986,192479243, 1858617356,1858633754,1858650127,1858666522,1017774092,1858682920,532676637, 1858699801,1247969318,1858765654,1858815083,
- 1858847245,843350044, 1858895960,1858928669,213041183, 1858945327,1858977848,967901186, 1859010647,1859060594,1859092516,1859108874,1859125680,1859158776,700825602,
+ 1858847245,843350044, 1858895960,1858928669,213041183, 1858945327,1858977848,967901186, 1859010647,1859060594,1859092516,1859108874,1859125680,1859158776,700825602,
1859191631,1859223562,1859239952,949518376, 1859256360,56492048, 1859273229,162186440, 1859330852,1859371034,1859387404,1859403782,1859420172,1859436554,1859452949,
123847115, 1859478309,1859670278,1286520834,1859756838,440861132, 1859829770,1859847411,1859898134,1859928367,1859960847,851574799, 1859977247,182632469, 1859993640,
- 1860010744,660275231, 1860042806,1860076574,156434444, 1860117287,1860199208,1860338155,1860370498,176177623, 1860403226,1860428585,1860487747,1860534284,531611730,
+ 1860010744,660275231, 1860042806,1860076574,156434444, 1860117287,1860199208,1860338155,1860370498,176177623, 1860403226,1860428585,1860487747,1860534284,531611730,
1860552249,1860650014,277856262, 1860683310,374800405, 1860739882,1860813919,1860878365,1860894732,1860911130,1860927494,1860943893,1860960340,1860993034,1861009437,
282821083, 281264130, 1861034795,1861256222,2147249, 1861287958,1861313324,1861404296,1861451884,900759911, 1861493549,1861583151,6619607, 1861615725,1861651111,
1861706542,1861763094,1861779472,1861795850,1861812253,1861828634,1861845023,1212055636,1861861913,2147358, 122601501, 1861935919,1861976080,525172762, 1862001456,
@@ -3582,51 +3577,51 @@ static const unsigned int DictNodes[84251] =
1863518084,1863582147,1863614523,366806071, 1753117, 1863656248,1863713071,1863745623,1118520350,1863803705,1863893002,1863909404,40550410, 1863925853,1863975966,
1818181661,1864007796,38879272, 1864033082,88555542, 1864106532,47923229, 1864140748,1864272104,1864319513,1864387337,1864433667,1864452090,33161231, 1864482845,
1864499203,901742623, 210272266, 1864524603,1864679555,1864695939,3309569, 1864712307,59228290, 126764141, 1864737596,1864777739,1864794698,24298058, 1864830834,
- 2524147, 282853391, 51314695, 1864885053,1864941625,1864957971,1094877191,1864974386,2195757, 128106533, 1865474879,1865614248,1865646082,1232748554,191644568,
+ 2524147, 282853391, 51314695, 1864885053,1864941625,1864957971,1094877191,1864974386,2195757, 128106533, 1865474879,1865614248,1865646082,1232748554,191644568,
1076512797,2015268, 1865671488,1865794535,1865842714,339625045, 1865860595,1865900865,1865966402,253624544, 52363293, 1866048323,1866157436,1866188578,1866219950,
344850438, 1866269432,1866301899,2202680, 158613507, 1866359616,5341706, 1866481674,1866498090,1866515238,1866549943,1866596364,1866612746,201572373, 1866629132,
1866645507,62341160, 1866667024,1866711082,94568460, 1866736452,1866949445,173113385, 115163167, 1867006018,1867038836,51937296, 1867059077,1867146054,1867244359,
1867317269,1867333719,1867383709,1867466136,1867522888,1867596264,850256713, 466993190, 1867637578,126763051, 1152811046,1867743298,2195985, 1867780206,1867825212,
- 1867907154,1867939852,1867956262,441335820, 1867981643,1868169309,110231597, 348651547, 1868218476,1868251181,1868284354,1868325708,1868384342,1868456781,35864711,
+ 1867907154,1867939852,1867956262,441335820, 1867981643,1868169309,110231597, 348651547, 1868218476,1868251181,1868284354,1868325708,1868384342,1868456781,35864711,
1868546585,115785749, 1868620622,1868784463,1868841807,6455306, 1868873821,1868922923,1868955686,1868973065,19251266, 398753830, 2129974, 1741062249,1869013840,
1869210449,1869383439,5308443, 1869438836,1869496379,158695453, 152027165, 1869529967,1869587282,1869652819,1869710153,159055931, 1869758574,1869800276,1869889602,
1869931349,1870053679,1870088952,1870156297,1870200858,1870217282,1870250896,1870282768,166069136, 1870308182,1870364723,431243786, 1870406487,249708560, 1636532255,
1870455640,131891632, 1870603097,1870881626,319144065, 147063731, 1870974033,729907637, 1871086476,383320086, 991101035, 1871135157,1871176539,543391784, 1871323996,
- 1871380939,404242954, 1871437770,1871520605,1871609955,8390044, 1871644161,1871708214,44302362, 1871746256,1871864670,1872003563,1872038447,353239124, 110249854,
+ 1871380939,404242954, 1871437770,1871520605,1871609955,8390044, 1871644161,1871708214,44302362, 1871746256,1871864670,1872003563,1872038447,353239124, 110249854,
1872101475,1872134673,170999847, 1872175967,1872282059,1872339808,1872414985,1872461840,2199909, 1872487265,1872552802,124469355, 1872642067,264650771, 1872659358,
1872691229,958775308, 1600323596,4112386, 1872716643,1872920616,51314822, 1872938095,171966493, 1872969738,1872986600,1873022593,666026010, 47595530, 1873089097,
- 172837020, 1873159012,526368780, 1873202109,1585725442,1873265165,1873313802,1873330178,129269798, 1873666918,237732440, 56164362, 1873842349,1873888415,110052240,
+ 172837020, 1873159012,526368780, 1873202109,1585725442,1873265165,1873313802,1873330178,129269798, 1873666918,237732440, 56164362, 1873842349,1873888415,110052240,
199869263, 1873929063,1874018798,1874052120,1874101516,1874150600,1874182210,1874214938,1874231728,1874265078,1874305896,201523280, 195264514, 1874444375,1874493547,
- 1874526250,1874542630,1874558978,383483933, 1874584425,1874624543,1874640908,1874657321,27852841, 110215267, 1874682730,1874830187,216467612, 1874895724,108707871,
- 1874970233,1875026797,1875117385,1875174254,1875280014,231768070, 1875312661,1875329055,137101414, 1875354479,1875420016,1875673278,282853378, 1875738708,188105383,
+ 1874526250,1874542630,1874558978,383483933, 1874584425,1874624543,1874640908,1874657321,27852841, 110215267, 1874682730,1874830187,216467612, 1874895724,108707871,
+ 1874970233,1875026797,1875117385,1875174254,1875280014,231768070, 1875312661,1875329055,137101414, 1875354479,1875420016,1875673278,282853378, 1875738708,188105383,
1875771479,1398128666,1875820570,188581156, 1875846001,1875977074,1876053026,3228249, 1876124531,1876215164,1876279355,1876312080,1876328486,508870694, 1876353908,
1876525140,1876559060,1876623419,155975720, 1876656144,1876672538,1063536091,1876689421,1876747125,1876921828,1876976502,8602013, 2195589, 1877164269,1877196816,
1877213224,798261269, 1877230105,1877295186,500531316, 1877328905,1877369719,1877648248,1877737498,1877753872,1877770251,223363131, 1877786711,1877839989,1877868582,
1877885217,1877917838,1877950514,1877983234,1878000763,31424523, 1878032814,1878081592,272384042, 171835414, 267567146, 1878114370,171835418, 1878150120,1878196226,
1878214003,1878245395,1878261798,200556556, 1878278151,783433764, 1878297789,1878344138,1878376919,223313958, 1878409254,1878426518,1878476829,1878524775,1878556691,
1878573075,1878589462,836517890, 1878605862,1878622246,198852610, 1878647673,185384972, 1878704138,1878721926,9388044, 1878787166,1878844282,1869545526,1878926203,
- 1879052678,1879106428,292421658, 1879188349,1879230923,1879278794,1879326746,172843902, 1701740560,1879352191,1879679872,29622274, 1879872009,1879916603,566018930,
+ 1879052678,1879106428,292421658, 1879188349,1879230923,1879278794,1879326746,172843902, 1701740560,1879352191,1879679872,29622274, 1879872009,1879916603,566018930,
1879958401,246775892, 1880040322,1880155011,8390653, 110250675, 1880196327,1464254466,1880245160,1880286084,1880589397,1880622579,1880653836,32849962, 1880670511,
- 1880703736,579354732, 1880737087,350912550, 17219649, 31211602, 193708116, 1880802721,1880850478,1880906632,1880948834,1880981516,1880997930,1881014298,136856399,
- 1881030696,1773502502,1881047949,450594666, 1881129973,1424212880,1881203589,1881292812,49938448, 370999336, 47939600, 1881309250,1881341978,185319453, 62341160,
+ 1880703736,579354732, 1880737087,350912550, 17219649, 31211602, 193708116, 1880802721,1880850478,1880906632,1880948834,1880981516,1880997930,1881014298,136856399,
+ 1881030696,1773502502,1881047949,450594666, 1881129973,1424212880,1881203589,1881292812,49938448, 370999336, 47939600, 1881309250,1881341978,185319453, 62341160,
1881358382,47874088, 1245593626,1881407504,1881423974,1881457150,1881489434,1881506224,800228260, 1881547654,1881636918,1881670609,2933623, 911442157, 1881719214,
- 1881768387,701169690, 1881809799,1881915408,219529227, 1881933729,1881990024,1882030139,1882062947,500695050, 1882096097,49086470, 1882144822,1882179777,5868410,
+ 1881768387,701169690, 1881809799,1881915408,219529227, 1881933729,1881990024,1882030139,1882062947,500695050, 1882096097,49086470, 1882144822,1882179777,5868410,
1802748425,1882226700,1245593626,1882243742,610287914, 1882277595,1882308620,1882325002,1882341397,1882359570,1882407342,1882465161,1882704618,1882753992,1882824750,
1882882100,185860111, 137101339, 1882914882,206471180, 1882956682,1883029513,1883046047,1883087755,1883308091,1883340884,1883376473,458981398, 1883439135,1883455971,
- 1042022422,1883488258,161726501, 1883507015,1883554639,1917454, 1883586644,5327273, 45039626, 144097715, 1883628428,1883815961,1883848796,1883890573,619136149,
+ 1042022422,1883488258,161726501, 1883507015,1883554639,1917454, 1883586644,5327273, 45039626, 144097715, 1883628428,1883815961,1883848796,1883890573,619136149,
437256663, 1884021646,1884094490,1304608808,1884119951,1884300176,1884405766,328073231, 1884431249,1884520474,1884545938,25560188, 1884602434,1884635176,1884651586,
1885070228,1885323801,1885389343,1885439561,136119184, 1885521304,128974869, 1885578133,1885673587,5342071, 1885700115,8390272, 1885725590,1885800955,1885864538,
1885896770,1885938583,536939242, 1885979154,1886094672,1886151576,1886209110,1886257190,1886273839,1886306743,246628373, 116211763, 1886348185,1933324, 1886634287,
- 1886666828,630801292, 1886702305,1886797908,1886839706,8390255, 1886921627,1887002698,1887060055,1887116328,1887232924,1887298461,1887454071,1887485954,44531722,
+ 1886666828,630801292, 1886702305,1886797908,1886839706,8390255, 1886921627,1887002698,1887060055,1887116328,1887232924,1887298461,1887454071,1887485954,44531722,
1887502423,1887552810,1887600714,1887666192,1887682586,1887698985,54460457, 1887715755,1887748108,117506857, 1887764502,1887780866,4998643, 453476404, 1887806366,
870663559, 1888010283,31424548, 1888048071,1459119007,1888117664,127631391, 1888206860,1888223521,1888265065,1888305689,1888372958,128451708, 316294065, 1888420270,
825558025, 150586398, 1888469451,1888518154,1888534570,1888551935,1888600552,1888641953,1888780817,136855636, 1888822178,1888918469,1888978092,1889028031,1889133475,
1889207521,24838155, 1889256533,1889288204,395345930, 1889304616,52740108, 1889321497,1889386534,140247121, 1889412004,3212787, 1889490286,394625108, 1889592229,
1889714188,1889732085,1889781781,176570399, 1889821606,141412838, 1889919911,1890092427,1890149288,1890205712,257130507, 1890231209,440352806, 948994050, 1890313130,
- 1890402388,1890435531,134169711, 1890493355,1890804652,1890853805,471580712, 1890935726,1891008594,1891042463,1891074475,1891106882,1891139692,1891181487,125927465,
- 214533810, 1891263408,425362279, 3869184, 1891369497,170197097, 1891436683,13238278, 1891509169,1891574706,1891631116,25560058, 1891647528,1891663938,167445394,
- 1891696661,142868496, 1891722163,1891860509,107462668, 1891876923,1891914978,1891979825,191053840, 1892033460,1892164533,1892204546,2162745, 1892221688,179994662,
- 1892257382,1892286466,56492042, 6374136, 1892311990,1892508599,1892614175,626540582, 765313036, 1892630540,1892646927,1892663298,1001586694,1892681052,65077250,
+ 1890402388,1890435531,134169711, 1890493355,1890804652,1890853805,471580712, 1890935726,1891008594,1891042463,1891074475,1891106882,1891139692,1891181487,125927465,
+ 214533810, 1891263408,425362279, 3869184, 1891369497,170197097, 1891436683,13238278, 1891509169,1891574706,1891631116,25560058, 1891647528,1891663938,167445394,
+ 1891696661,142868496, 1891722163,1891860509,107462668, 1891876923,1891914978,1891979825,191053840, 1892033460,1892164533,1892204546,2162745, 1892221688,179994662,
+ 1892257382,1892286466,56492042, 6374136, 1892311990,1892508599,1892614175,626540582, 765313036, 1892630540,1892646927,1892663298,1001586694,1892681052,65077250,
1892787128,1892859945,1342816296,1892876290,1892892710,332103718, 1892909082,1892934585,1893072936,1893089299,1893105701,879427650, 1893122064,1893138669,1893172622,
1893238725,1893269570,1893311418,1893385070,1893449738,168493161, 1893466171,1893498901,1893515351,1893573563,1893728282,324534288, 19417279, 1893753788,1893909327,
1893942119,134513162, 1893974035,1893990438,1894006850,1894039606,1894073162,515031467, 1894121510,5309352, 1303740431,1894146518,1894253956,289014231, 1894318146,
@@ -3635,13 +3630,13 @@ static const unsigned int DictNodes[84251] =
1895834565,1895940399,199492417, 1895974473,669351961, 1896063942,1896162247,1896244168,48054288, 1896333378,1896375241,1896533531,343296181, 1896596374,1896644624,
1949701, 1896670154,1896759729,1896801227,1896908164,1896972347,1897005515,1897063372,1897210620,1897250844,1897267231,1897284642,1897316641,185959257, 1897349123,
1897365535,173359116, 1897383812,1897448360,1897483783,1897545774,1897604045,1897758736,2031751, 1897775587,474071066, 1897807883,1897824258,757399590, 1897849806,
- 1898177487,1898271278,1898348781,1898381328,1898397701,57311242, 6225930, 1898414382,29655042, 1898446916,1898496002,462667786, 1898512696,1898545582,45629482,
+ 1898177487,1898271278,1898348781,1898381328,1898397701,57311242, 6225930, 1898414382,29655042, 1898446916,1898496002,462667786, 1898512696,1898545582,45629482,
179781634, 1898603472,1898661777,1898692695,1898741791,1898759070,1898800081,172622353, 1898882002,54657034, 1899085840,1899102218,258637865, 1899119785,1899151467,
- 1899191284,1899216949,1899250266,1899282451,1899298854,1899315212,1899331721,32849929, 1899348006,1899364368,1899380774,740196364, 1899397141,160727062, 818069543,
- 1899422675,24281906, 460521478, 249266292, 1899462675,69189658, 1899488212,1365491849,1899660297,1899692334,1949811, 1899724831,1899741195,1899757608,112787466,
+ 1899191284,1899216949,1899250266,1899282451,1899298854,1899315212,1899331721,32849929, 1899348006,1899364368,1899380774,740196364, 1899397141,160727062, 818069543,
+ 1899422675,24281906, 460521478, 249266292, 1899462675,69189658, 1899488212,1365491849,1899660297,1899692334,1949811, 1899724831,1899741195,1899757608,112787466,
1899774490,158171267, 4931621, 2202722, 1899806722,1899823119,62275586, 286294153, 1900249576,1900281858,64765958, 1900307414,1900397727,108511263, 1900429333,
51593238, 1900445698,323731563, 1900471255,1900593183,1900610987,1900658714,533774352, 1900680732,1900757426,519454742, 1900789997,1900822828,1900864472,1900922840,
- 1900986419,1901019205,1901051958,388317282, 1901085149,1901126617,1901346854,1901363231,1901380455,1901412589,1901454298,1901559829,1901576214,237322261, 6701172,
+ 1900986419,1901019205,1901051958,388317282, 1901085149,1901126617,1901346854,1901363231,1901380455,1901412589,1901454298,1901559829,1901576214,237322261, 6701172,
230309926, 1901592588,319555383, 1121763382,1901609390,1901663438,1901707295,1901724162,5505066, 1901765595,1901903910,1901925309,1901969446,1901986825,1902018586,
1902034982,125239308, 1902060508,1902100502,858865718, 1902116876,205815818, 1902133269,116375606, 1902150127,47105937, 1902191581,1902252057,1629290527,1902347273,
1902381072,1145536524,470958118, 1902437342,150537246, 1902627226,132158553, 480903178, 1902706700,45433947, 1902723074,1902739556,1902772230,94601218, 1345749051,
@@ -3653,18 +3648,18 @@ static const unsigned int DictNodes[84251] =
1905868831,344506406, 1905894377,1905983490,117833738, 1905999910,1906016272,1906032693,1906065446,1906081813,1906098216,1906114586,635273218, 1906130975,1405665639,
1906147349,216776726, 1906163755,1906198235,56492044, 1906229258,647938067, 1906246091,1906295899,1906327562,1906343978,1906114600,1906360407,1906409556,1906442261,
1906458655,1906475024,576225290, 5292043, 1906500586,1906573416,1906622910,1906689115,359514153, 1906723619,1906770353,1906802991,1906835483,1906868240,1906884627,
- 1906901004,1906917382,1906933766,115360591, 1906950170,134709263, 1906966612,1907008491,27344906, 1907057644,465321990, 1907114010,243679244, 1907130427,980975642,
+ 1906901004,1906917382,1906933766,115360591, 1906950170,134709263, 1906966612,1907008491,27344906, 1907057644,465321990, 1907114010,243679244, 1907130427,980975642,
1907163152,55033867, 1907179979,1907230256,1907264013,1907311987,1907352557,1907478743,1933317, 1907540414,1907605602,1907640506,1907673439,1907729390,1908024303,
1908073456,1908171761,1908319218,240591859, 1908490333,163643473, 48136204, 1908541049,342606358, 1908588563,1908604950,1908621371,1908663284,1908741362,1908827125,
1908965877,1908998159,1909014831,165724397, 1909049125,1909097373,1909179345,151732240, 1909231889,1909335030,1909392207,19595274, 1909424140,1909440538,1909460603,
1909515255,1909588110,1909620746,1909637158,173850664, 1909653516,1909669981,1909719985,1909754622,339296268, 1909793784,1910105081,1910325250,162186992, 1910343000,
- 1910391008,913834006, 518783042, 760955919, 1910426537,1910472788,204537892, 62341122, 1910507026,1910555056,1812825027,1910587451,1910620198,1910636546,1982506,
+ 1910391008,913834006, 518783042, 760955919, 1910426537,1910472788,204537892, 62341122, 1910507026,1910555056,1812825027,1910587451,1910620198,1910636546,1982506,
1910653034,1910734955,1910769588,874234770, 1321862409,1910856747,1910924282,1910964236,1910980620,1910996998,312393756, 234340807, 1911022587,392217034, 1911095821,
1911144532,110216001, 1911180592,1911226390,1911251964,1911317501,1911375417,1911472995,260459008, 1911523712,180682860, 1982502, 1911589725,1911619612,1911635999,
1911652381,6602794, 1911673263,1911717919,1966109, 1911743486,1911825407,115523626, 1911865776,158533057, 621478319, 1911907328,1912163962,194953238, 1912245264,
1912356946,1912390169,1912455255,1912504779,1912555248,1912586259,1612414978,303661068, 1912611841,6947248, 1912668198,1912684609,1667465298,1912733702,1912750117,
1912766476,577028134, 1912792066,52674572, 1912930357,1912972291,503709722, 6537298, 1913094381,1913136132,1913283589,429834259, 1913504147,1913552934,1913572868,
- 663584770, 1913651216,1913667605,1913683980,56442886, 1913700452,1913733149,812957727, 1913753085,1871577151,1913791494,1913897388,1913971719,1914029065,10829866,
+ 663584770, 1913651216,1913667605,1913683980,56442886, 1913700452,1913733149,812957727, 1913753085,1871577151,1913791494,1913897388,1913971719,1914029065,10829866,
1914070024,1914109983,25559142, 3253257, 1914126374,181175324, 81756200, 1914151946,1914241117,1914299403,1914372108,1657028613,1914392951,117424170, 1914463244,
1914594317,19267887, 1914683434,1914709006,8397839, 136118401, 371311855, 1914901346,1914945636,354697228, 1914979175,1915020304,1915233297,312033582, 1915322380,
1915338762,1915355202,1915387906,1915404325,73531429, 425574422, 1915421586,1915479058,1915551851,760955368, 1915584538,1915602592,7094698, 134774810, 1915634718,
@@ -3672,75 +3667,75 @@ static const unsigned int DictNodes[84251] =
56524811, 1916076034,1916092437,1916108821,1916125224,162627599, 1915305989,1916150804,1916207680,1916248760,1916363797,1916403753,1916420098,1916436506,1916462102,
8392887, 1916504445,1916593175,1916633098,24068122, 1916658712,1916707865,1916780575,1916796949,125239301, 1916813447,1686110209,1022361606,1916830567,1916862495,
1916878890,903348245, 1916895235,1916911631,333496341, 1916937242,1917339153,1917372187,1917424970,1917502573,1917534432,240189462, 1917567048,1917633318,1917665312,
- 1917699128,1917764638,1917796354,152027148, 1917821979,1917894658,1917911059,1917927445,160743436, 1917943846,725909506, 1917961101,1918051356,1918124879,462767013,
+ 1917699128,1917764638,1917796354,152027148, 1917821979,1917894658,1917911059,1917927445,160743436, 1917943846,725909506, 1917961101,1918051356,1918124879,462767013,
1918156806,1918173652,1918206094,1918239023,1918276588,178569358, 47366156, 1918362653,1918402616,1918435365,168935460, 1918451741,1918468103,1918484501,1918500883,
59375623, 1918526494,836796418, 1918588864,1918648332,44662812, 1918665758,1918697474,17448991, 1918715581,1918805023,110298410, 6375610, 1918870560,1918911477,
1918976010,1918992390,1919008799,107462666, 1919025208,1919067169,1919172658,44302348, 1919213623,1919254533,1919270928,1919287322,1138229285,1919304586,1919336460,
- 454656026, 1919357020,1919452007,1919483930,179142685, 1919500591,140247528, 1919533121,1919582214,1919598598,1919615283,283082768, 1919648842,1919689762,2408467,
- 8389571, 1919886371,6373442, 1919943115,1919991827,687030303, 1920011229,110298380, 1920066596,1920221275,1920254977,1920303170,116228103, 1920345125,173359120,
+ 454656026, 1919357020,1919452007,1919483930,179142685, 1919500591,140247528, 1919533121,1919582214,1919598598,1919615283,283082768, 1919648842,1919689762,2408467,
+ 8389571, 1919886371,6373442, 1919943115,1919991827,687030303, 1920011229,110298380, 1920066596,1920221275,1920254977,1920303170,116228103, 1920345125,173359120,
1920401410,1920417811,134840332, 1920435089,1920483354,1920501126,1920565780,1920623654,1920686845,1656160688,1920754727,1920853032,1920909417,1920942180,1920975278,
1448706074,1921024005,1921040400,1921056794,1921073190,24969245, 1921089548,33243151, 1921672234,1921770539,1921810434,246628363, 1464254500,1921836076,1921941515,
1026048042,1921957909,1921974294,4161667, 1921990843,1922023433,744423445, 58736669, 1922039829,1922056221,1922072710,766951452, 1922088966,1922105381,1922121769,
- 160727046, 1922573357,1922704430,1922884640,1922924636,6946870, 126074882, 135413790, 1922958858,1923015727,410435615, 121077779, 1923114032,1923285295,572997658,
+ 160727046, 1922573357,1922704430,1922884640,1922924636,6946870, 126074882, 135413790, 1922958858,1923015727,410435615, 121077779, 1923114032,1923285295,572997658,
47530022, 1923327025,818184495, 1923416095,1717731347,1923432474,259129375, 1923449267,1923481610,1923497986,1923514406,1923530818,27246604, 354369548, 1923564629,
- 1923596317,89063440, 1923621938,163725405, 1923867699,5325260, 1923991566,110232485, 179897821, 1924047924,136118806, 102858764, 1924161278,1924202967,2204725,
+ 1923596317,89063440, 1923621938,163725405, 1923867699,5325260, 1923991566,110232485, 179897821, 1924047924,136118806, 102858764, 1924161278,1924202967,2204725,
1924244534,1924350033,79773920, 1924391991,245792771, 1924473432,1924514472,1924555832,1924752441,1924907010,1924923413,1924939797,287490079, 1924965434,1925006679,
1925063739,1925139374,1925202340,624181267, 752058790, 1925235159,1900573, 1925270064,113689047, 1925316692,289046550, 398753794, 1925358652,2196382, 1925424189,
- 1925595579,215187487, 112182383, 1900575, 1925661660,1925693692,2523157, 1925735486,163725377, 1925943074,1926021204,1926054191,2506754, 1926095935,451609747,
+ 1925595579,215187487, 112182383, 1900575, 1925661660,1925693692,2523157, 1925735486,163725377, 1925943074,1926021204,1926054191,2506754, 1926095935,451609747,
1926168588,1926185068,1926227008,1926334889,546931497, 7634960, 1311424540,1926374465,1926538306,72351766, 1926725697,157188178, 1926775384,1926809362,1926857143,
406634710, 1926898755,1926955030,892878879, 1926971411,1926987798,892878860, 1927005742,1927053322,1927069708,1927086099,56262678, 1536081942,1927111748,1481801738,
- 1927266388,1927299503,1927332601,1927364654,1927415445,1927480393,165134343, 1927521349,1927767110,5080516, 1234946069,1927858108,1927938285,1927970837,160006166,
+ 1927266388,1927299503,1927332601,1927364654,1927415445,1927480393,165134343, 1927521349,1927767110,5080516, 1234946069,1927858108,1927938285,1927970837,160006166,
1927996487,143720486, 1928102113,1928143944,1928216630,1928249428,52527110, 1928291401,1928537004,1928580506,1928642620,1928724582,162185272, 163317144, 1928758184,
1928790776,1928832074,1928888779,1928937918,1200147122,1929004041,1929045067,1929166907,394412053, 1929199618,1929216026,1929232405,1929248799,47530003, 1929265996,
- 1929314607,1929347098,1929363496,1929379859,938213397, 1929396825,395444243, 1929430681,1218019430,1929487436,1929610800,1929641986,1929658383,1929674783,2506780,
+ 1929314607,1929347098,1929363496,1929379859,938213397, 1929396825,395444243, 1929430681,1218019430,1929487436,1929610800,1929641986,1929658383,1929674783,2506780,
170704995, 1755791362,313787201, 1929691155,439156773, 193839135, 348651563, 153567254, 1929716813,169329750, 1929798734,1929970839,1930019724,1930067989,1930084846,
1930117122,448544806, 1930133983,1930166298,1930182658,493666342, 1930199131,1930231874,1930266308,1930332095,135824393, 1930428428,191053853, 213975061, 1930454095,
- 1930493974,1930510364,241942530, 1930527023,112197661, 1930568784,1930896465,1931034655,1645264907,1931051030,1931067423,57032709, 1931083778,1931100170,171000111,
+ 1930493974,1930510364,241942530, 1930527023,112197661, 1930568784,1930896465,1931034655,1645264907,1931051030,1931067423,57032709, 1931083778,1931100170,171000111,
1931117391,1931149318,1931167506,1931215761,1931264481,1931313164,52805647, 1931334549,1931411547,1931444426,1931486290,110233178, 1931558943,5309328, 1931576321,
1931624450,1527332920,1931640919,1536835641,1931693429,176488458, 1931739220,1931779635,1931821058,410517514, 1931839509,1931879507,29261846, 1931975525,1932017680,
1932034312,1932083503,244056130, 1932125268,1932378139,1932414217,1932461122,1932525594,1932550883,2195614, 2195636, 1932649557,1932738670,297304104, 1932780630,
6619166, 1932846167,1932919087,3555368, 1932952007,1933001510,1933034381,1933115445,158255529, 162580190, 1933157464,1868693510,205946890, 1933247628,1933304921,
- 1933361365,1933394178,1933426818,8389183, 1933443093,109166623, 1933468762,1933681755,1933836546,18759818, 1933878364,1933968756,1934021656,1934082050,115523700,
+ 1933361365,1933394178,1933426818,8389183, 1933443093,109166623, 1933468762,1933681755,1933836546,18759818, 1933878364,1933968756,1934021656,1934082050,115523700,
1934107741,1934164958,172835059, 1934213142,1934229570,1923596309,1934271582,1934311508,1934344238,1934394398,1934435423,585809979, 1934517344,1934589962,1934615649,
1934688294,1934713954,1934804376,1934855452,150798768, 1934917654,1934934028,1934950402,55148565, 1934966850,1935001539,1935049879,1935097858,55033884, 1935114316,
- 1935148794,1935183541,1935261795,1935295001,1935360081,1935402083,1935491984,1934855452,1712227642,1368293391,906625090, 1935533156,1935753218,305741862, 177963011,
- 1935773869,199213077, 1935819179,1935851978,492823653, 1935887657,897335767, 152027176, 1935955294,1936015444,358907954, 8978451, 1936048159,1936073830,275152980,
+ 1935148794,1935183541,1935261795,1935295001,1935360081,1935402083,1935491984,1934855452,1712227642,1368293391,906625090, 1935533156,1935753218,305741862, 177963011,
+ 1935773869,199213077, 1935819179,1935851978,492823653, 1935887657,897335767, 152027176, 1935955294,1936015444,358907954, 8978451, 1936048159,1936073830,275152980,
1936113901,1936151790,1936254055,1545519958,1936360333,1936441461,133579179, 1936474158,1936523488,1936565352,150683650, 1936663657,1936769026,1936794730,1936834647,
- 1936884200,1936918108,1936998402,1937014805,1937031977,1937063974,128106512, 1937084027,1937138795,25568364, 1937244244,859963430, 1937286253,1937394093,8393109,
- 1937440804,1937457183,328073245, 1937482862,1937589033,1937623229,356122626, 1937686584,914016782, 2130004, 351617062, 1937728623,141606922, 1937785135,131334904,
- 1937826928,1937949149,1937981450,1937997855,1938014265,1830060044,114540565, 581697577, 1938039921,2031635, 1938072690,7602183, 1938129199,1938170995,2195681,
+ 1936884200,1936918108,1936998402,1937014805,1937031977,1937063974,128106512, 1937084027,1937138795,25568364, 1937244244,859963430, 1937286253,1937394093,8393109,
+ 1937440804,1937457183,328073245, 1937482862,1937589033,1937623229,356122626, 1937686584,914016782, 2130004, 351617062, 1937728623,141606922, 1937785135,131334904,
+ 1937826928,1937949149,1937981450,1937997855,1938014265,1830060044,114540565, 581697577, 1938039921,2031635, 1938072690,7602183, 1938129199,1938170995,2195681,
1938334836,1938391171,11665540, 1938407562,1938440215,1938456707,8389773, 1938473094,13303943, 1938489382,1938505737,1938522227,39043081, 1602650401,1938547829,
851705862, 1938662518,11059238, 2588698, 1938703962,1938735114,1938751495,1785990, 11305094, 1939226636,1939243602,1939259407,1939275792,1939292189,1939309138,
1939324947,1939341334,1939357708,193593366, 1939383416,1939589650,1939639466,1939719520,1939784100,1939816460,1939832858,1939849237,576225302, 1939865616,1939882022,
1939898399,273858784, 1939924089,1940045855,1940062250,56492054, 1940080545,1940137082,3850252, 1940202619,1940324379,1940363813,223608854, 6029354, 1940422666,
2359728, 317374518, 1940442492,1940472267,1940521051,1940553750,1940570114,1940586525,1940602890,1940619276,303988739, 1940635732,247529949, 1940677756,1940818810,
- 1940848646,1940865030,1940881711,1940914197,1940931913,1940979771,1941021821,1941127471,47546399, 1941160027,1941192720,1941218430,1941291010,1941307402,753631251,
+ 1940848646,1940865030,1940881711,1940914197,1940931913,1940979771,1941021821,1941127471,47546399, 1941160027,1941192720,1941218430,1941291010,1941307402,753631251,
1941333119,1941356555,47874079, 1941372959,120111551, 1941389314,226443290, 1941415040,1941618742,1941651466,1941667866,58769439, 1941684693,1941733678,1941766146,
1941782538,1941798941,1941815302,533397937, 1539325958,5308847, 1941833102,1574895627,1941906561,1942103170,1942274054,79626255, 1942297587,7733357, 1942323216,
- 1942093850,1942340438,1942388748,1942414467,1942487094,1942529156,51838978, 1942634555,1942667567,1942702430,1942758455,139198490, 1942831203,1942863893,354549791,
+ 1942093850,1942340438,1942388748,1942414467,1942487094,1942529156,51838978, 1942634555,1942667567,1942702430,1942758455,139198490, 1942831203,1942863893,354549791,
1942889605,1943027794,1943060546,1943094240,980107330, 1943142412,1943158794,1943175180,47317020, 108314675, 1943191618,1943226155,420102165, 1943258539,1943306306,
- 861406217, 1943339058,967622687, 1943371836,5325271, 1943453717,158810145, 1943471735,1943543850,1943610502,113229862, 1943699458,50036746, 1443971182,119055084,
+ 861406217, 1943339058,967622687, 1943371836,5325271, 1943453717,158810145, 1943471735,1943543850,1943610502,113229862, 1943699458,50036746, 1443971182,119055084,
1943725191,1943999282,1944077332,1666335944,1944126784,1944164041,1944207839,1944241450,332988457, 1944289308,1944305680,1944322101,1944359803,1944420378,1944439289,
1944485972,1944523542,958662297, 1944609928,1944698892,116228122, 1944715310,873645401, 1944772215,1944813580,1944829978,886505491, 1944848229,45498399, 1944904841,
1944961040,200720410, 1944977492,434192486, 1945019530,309641262, 1945158958,1945208377,1945306207,110234079, 6373483, 1945372475,1945429131,940900362, 1945478284,
1945632863,1945688179,129237008, 1945724045,309461471, 410566672, 436437023, 8393279, 1945796712,1945846361,1945878530,1945894931,9158771, 137150474, 1945911303,
- 1945927716,1945944086,1945960460,1945976833,1945993245,1946009629,1946026099,1946042384,1946058753,1946075143,1946091556,1946107911,133611556, 1946124354,2147302,
- 1946166414,2933156, 140247157, 1946239823,1946281103,1946452270,1946484738,1946501126,1946517510,1946533919,1946550291,348356911, 1946566749,1946615846,77512740,
+ 1945927716,1945944086,1945960460,1945976833,1945993245,1946009629,1946026099,1946042384,1946058753,1946075143,1946091556,1946107911,133611556, 1946124354,2147302,
+ 1946166414,2933156, 140247157, 1946239823,1946281103,1946452270,1946484738,1946501126,1946517510,1946533919,1946550291,348356911, 1946566749,1946615846,77512740,
1946632198,1946648588,1946664986,103989305, 29261845, 1946681380,160759819, 1946697787,1946731343,1946763799,1906098188,223838250, 1946796034,1946813414,1946851661,
- 277053482, 1946927106,1946943712,1946977231,1947025424,219480074, 1947041846,1947074581,1947090956,1947107354,1947123728,575717379, 1947140108,1947156906,152354828,
+ 277053482, 1946927106,1946943712,1946977231,1947025424,219480074, 1947041846,1947074581,1947090956,1947107354,1947123728,575717379, 1947140108,1947156906,152354828,
1947189347,1947222032,394575887, 1947247760,254640166, 58949658, 1947337897,658620437, 1947370996,1947418732,1947452239,1947484614,1947526289,1947582504,1947599377,
1947631692,1947664818,626540584, 1947697162,1947713602,1947755666,112935426, 546636234, 1948050579,1948108562,452100399, 119439412, 1512865804,1948156441,1948221917,
1948263572,1948451734,1948500052,359432204, 1948533676,1948607637,1948714922,1948778522,65896464, 1948797841,1948896934,1948959151,3538986, 1948991554,1949024363,
- 275316767, 1949066390,1949369168,930709540, 1949402898,50987046, 1949450816,1949483034,1949508759,1949581314,1949597706,1021820957,79757315, 1949615370,48136230,
+ 275316767, 1949066390,1949369168,930709540, 1949402898,50987046, 1949450816,1949483034,1949508759,1949581314,1949597706,1021820957,79757315, 1949615370,48136230,
1949646886,50413599, 1949663663,1949699605,202424842, 191682720, 1949777932,1949796773,1949843540,1949876250,1949892645,1949910491,1949990922,157024298, 1950016664,
1950065817,1950377114,1950467337,1950500894,1950547970,1950564362,254410781, 1950580758,367443970, 1950597174,1950631210,1950688411,1950744578,45498379, 1950763071,
1950793750,808960005, 1950812663,1950842946,1950876574,1950908500,1950941237,348782598, 1950974892,1951040864,115785765, 1951105456,1951137844,1951179932,1951219796,
1951252588,116228138, 1951294621,1951498250,226689026, 1951514651,1951547404,1951564658,1951596556,177553418, 1951612940,1951629350,1951645712,1405616143,1951662090,
- 1951678493,1951694864,219578387, 1951711244,1951727626,1915355202,1951744011,1901740034,1951760400,1951776810,1951793584,1951826354,1951858731,1951900830,835780623,
+ 1951678493,1951694864,219578387, 1951711244,1951727626,1915355202,1951744011,1901740034,1951760400,1951776810,1951793584,1951826354,1951858731,1951900830,835780623,
1951973412,1951989766,264093727, 1952006160,942440469, 1952022564,1952038931,1952055318,1952072527,219627522, 1952113823,1952170015,1952186380,1952202762,1952219767,
1952251930,1952268330,1952284738,1952319622,1952366599,1952383007,1952399791,1952432212,1952464906,1952481286,1952497675,1952514079,1952530656,1952572576,1952645142,
169263109, 1952661646,1952694338,1952727070,1952760238,1952808998,1952825819,1952859544,144048138, 1952908491,1952940511,353812546, 1952972866,257966110, 1953014945,
- 1953129634,1953185822,1953227939,1953326244,1953480746,226443266, 1953497119,1953513529,59228172, 1953530286,1953579030,1431650316,1953604773,1064321129,4997183,
+ 1953129634,1953185822,1953227939,1953326244,1953480746,226443266, 1953497119,1953513529,59228172, 1953530286,1953579030,1431650316,1953604773,1064321129,4997183,
1953684627,1954110615,1954171323,401606009, 1954300664,1954342054,112607313, 1954418546,1954464174,1954512922,1954532698,1954578516,1954611299,304627733, 1954643979,
1954660770,1954693579,45875238, 52723754, 1954746914,1954825039,648691724, 1954857000,1954873354,1032142877,1954890253,3719250, 1954938964,1954981031,1955046568,
1955103201,1955151914,177784008, 1955168310,1955201050,262684678, 1955217514,1955300562,6373813, 1955334165,145506316, 1955366286,1955430507,245301285, 1955472553,
@@ -3754,8 +3749,8 @@ static const unsigned int DictNodes[84251] =
1958421686,1958577153,1958625379,1958658050,51675193, 1958674472,1958690932,1958707236,1958723700,1958740025,1958756373,336887818, 1958782135,1958821894,1958838308,
1958854697,1958871080,1958887540,1958903845,65896564, 1958929592,1959002169,1959018537,1959034890,1959051380,1959067685,1959084148,22478888, 1959104813,1455505437,
1959133194,1959149684,1959165974,581779484, 1959182355,1959198722,1959215220,1959231510,933625913, 2196304, 1959683257,1959821454,1959854106,1959870466,1959887402,
- 1959903248,1959919626,1959936554,1959952405,1959968790,1959985164,1960002090,345784358, 119357919, 185483747, 1960024176,1960117737,1960165442,1960198904,373981224,
- 1960231449,296600440, 1960305850,1960479351,1960542350,1960575018,163463208, 1960591597,1960633531,1960853741,1960886348,1121452994,225083414, 2539522, 169247246,
+ 1959903248,1959919626,1959936554,1959952405,1959968790,1959985164,1960002090,345784358, 119357919, 185483747, 1960024176,1960117737,1960165442,1960198904,373981224,
+ 1960231449,296600440, 1960305850,1960479351,1960542350,1960575018,163463208, 1960591597,1960633531,1960853741,1960886348,1121452994,225083414, 2539522, 169247246,
1960922305,127041963, 1960968276,1538719851,1961003003,1961099369,179339369, 1961132059,1961174204,1961246726,207627453, 1961272510,1961443541,1961476233,1961492614,
1961509418,1961525274,1961541644,1961558027,34799746, 1961577275,1961682111,198410269, 1836992290,296355254, 1961738777,152952198, 1961805602,1961836653,1961870921,
1961955184,79691792, 385499195, 1962009792,521617420, 1962134417,1962239169,1962344887,8390349, 1962386626,122116029, 654901269, 134168628, 1962509200,1962541068,
@@ -3763,19 +3758,19 @@ static const unsigned int DictNodes[84251] =
1963278338,1963294758,1963312955,1963361300,1963418823,1963507714,184582184, 1963524155,1963556866,1963573267,159383574, 868220959, 1963590239,1963622431,1963638796,
1963656748,315277315, 1963688001,1963738414,1963795656,1963868170,7733304, 1963892981,1963950934,366905412, 1964008649,1964064811,1964101484,198721557, 1964156106,
667205648, 522485776, 1964254411,131891215, 1964326964,1964359699,1917796374,1964378676,1964410058,1964458015,1964474427,1964507165,1964523536,131891211, 1964540014,
- 602980394, 1964582092,1964638220,1704984586,1964654699,1964696781,1964819192,1964851231,1964867643,1964900411,8395896, 1964933230,1964975310,1965047862,169263109,
+ 602980394, 1964582092,1964638220,1704984586,1964654699,1964696781,1964819192,1964851231,1964867643,1964900411,8395896, 1964933230,1964975310,1965047862,169263109,
1965089999,1965326805,563298344, 1965375490,50266117, 1965391979,141606954, 1965424642,404570117, 1965445681,637173802, 1965490608,1965524178,1917462, 1965555714,
1965572203,1965604930,1965638856,156369199, 1965670703,1965703598,1135116309,1965752791,1965785160,155779091, 1965851161,1965916658,919028298, 1965965350,1965982543,
- 132644874, 1966015597,1966050511,319619084, 1966105808,1966253265,1966335186,1770864662,1966466259,1966526541,1966588724,1966637593,1966712020,1966817282,7733725,
+ 132644874, 1966015597,1966050511,319619084, 1966105808,1966253265,1966335186,1770864662,1966466259,1966526541,1966588724,1966637593,1966712020,1966817282,7733725,
1966843093,1966948889,1967023318,1967128633,1967149459,47611933, 852853468, 28590938, 187072617, 1967203543,1967390786,1269858314,140248002, 1967432920,1967514841,
1967718516,259129354, 1967737025,1967783938,2359305, 442253943, 1967800374,1967842522,185810960, 1967908059,1968128012,1968144406,1968160780,687931430, 1968186588,
1968292758,1968350429,1968390187,1968432350,1968505794,348864871, 1968547039,1968603615,1968635914,1968652317,1968668688,223002954, 1968687958,1968735732,1968792800,
1968865343,5505030, 1968907489,1969012779,1969054946,609714186, 1969143810,1871872027,191070227, 1969160194,1969176586,1969192962,2195703, 1969218787,1969438786,
- 1969471490,4981543, 1969488175,1969530084,1969668180,1926742253,47611932, 1596031060,821887016, 1969702750,1969767454,1969799324,1969832051,19447831, 5324900,
+ 1969471490,4981543, 1969488175,1969530084,1969668180,1926742253,47611932, 1596031060,821887016, 1969702750,1969767454,1969799324,1969832051,19447831, 5324900,
1969848401,1969882142,1969913882,205144080, 1313357853,1969930286,1969988837,1970143254,1970163564,1970216285,1033519106,110477380, 1970274734,199458866, 1970326318,
1970398438,1970487308,1970503718,1970520102,1204289576,1970536529,1970569252,520388627, 1970586889,1970618390,6373952, 2200374, 1970637181,448462874, 1970718650,
- 1970585619,116212745, 1970765921,162480888, 1970840807,1970946973,1581891586,1971037416,1971126382,1433092551,1971159056,210272294, 1971175440,1971191942,293715991,
- 1971217641,1971404812,643629113, 1971424251,1671168041,1971463402,53559319, 1971504859,641531914, 1971539201,514605066, 1971571256,188957198, 1971607556,8978463,
+ 1970585619,116212745, 1970765921,162480888, 1970840807,1970946973,1581891586,1971037416,1971126382,1433092551,1971159056,210272294, 1971175440,1971191942,293715991,
+ 1971217641,1971404812,643629113, 1971424251,1671168041,1971463402,53559319, 1971504859,641531914, 1971539201,514605066, 1971571256,188957198, 1971607556,8978463,
1971643627,1907163176,1971725548,1971791085,1971879945,1852801156,1971897453,884737, 1971929953,1971961866,1971978454,66814166, 51838982, 1972437157,1972593903,
168493585, 1972701129,1577566246,1972757744,8389124, 1972863081,1972895810,5341408, 1972929430,1972987121,3211488, 1973060957,1973109168,1322444018,1973141570,
1973183731,1973265473,297373231, 1973420091,1973454651,140247148, 1068597762,1973501992,1973519145,1973560564,3900152, 116867990, 1973715028,918470696, 1973748472,
@@ -3784,7 +3779,7 @@ static const unsigned int DictNodes[84251] =
1975189772,9912674, 1975248124,1975353753,9912723, 1975411965,20070973, 1975484553,113115299, 42287127, 1975501201,8175634, 1975533580,82001946, 1975550119,
1975608574,1975739647,1975795758,1975845407,1975903488,1975959583,1975975957,8398081, 1976001794,1422934904,137102761, 1976074327,1976123402,1554939910,1976149251,
1976277198,364446953, 2204932, 1976352875,1976385555,1976401958,700874754, 1976418775,1976451131,1976483948,1976517930,1976575237,1976878606,1976926210,1976942621,
- 393363468, 1976959035,1976993408,1977040911,8159234, 341393410, 1977057382,1977091195,1977123729,5275674, 1977171974,144343046, 103989269, 1977188390,659914783,
+ 393363468, 1976959035,1976993408,1977040911,8159234, 341393410, 1977057382,1977091195,1977123729,5275674, 1977171974,144343046, 103989269, 1977188390,659914783,
1977204777,1977221136,1977237530,1977253899,1402093599,1977271390,1977319967,1977368588,1977384986,1977401355,1977417759,1977434122,209993759, 1977450527,1977466937,
1977483276,1977499674,258637830, 1977525510,1977614561,1977647135,1367867398,1977663943,382009354, 1406320656,1977713111,1977745465,648347650, 15007750, 1977761823,
1977778186,1977794572,1392836610,132841484, 1977811390,1977877613,1977909332,1977942037,787922975, 1977958410,118292496, 1977975930,1978040346,298237973, 1978056731,
@@ -3793,7 +3788,7 @@ static const unsigned int DictNodes[84251] =
45498405, 1978908688,1978925072,1978941456,1978957840,612532240, 1978975049,125927466, 1979025390,1979072946,1979105319,1919631365,611647500, 1979507979,1979580442,
1979596812,1979613194,737771522, 1979632649,1979696118,316293603, 1979728781,3227698, 1979819276,1980071951,1980088322,1980104710,1980121642,1980137501,1980153868,
1980170794,1980186643,341131266, 5867056, 108168130, 1980203020,1980219432,296435733, 1980239500,1980317702,1980337120,109183007, 1980383278,1980441869,1980498375,
- 1980548105,348782634, 1980579899,459637215, 1980622094,1980661762,1784905740,1980687631,510297076, 1980792863,1980809226,954073100, 1980825902,1980858427,344096910,
+ 1980548105,348782634, 1980579899,459637215, 1980622094,1980661762,1784905740,1980687631,510297076, 1980792863,1980809226,954073100, 1980825902,1980858427,344096910,
1980900624,1980989512,1981055916,186876937, 1981121437,1981211921,1981277458,1981367704,1981424915,1981514646,1981563394,1981605140,129946452, 1981719829,1460977680,
1981818134,1981906986,1362165762,1981932823,112934966, 1981988890,1982005313,1982062449,1982121111,1982178584,281919494, 1982449288,1982496806,469123084, 1982513167,
1352712213,1785877, 1982529628,1982563151,1982604569,1087045653,1982660692,1982693438,1982742534,1982758933,1982775610,1982808090,119358494, 1982825502,1982857261,
@@ -3805,10 +3800,10 @@ static const unsigned int DictNodes[84251] =
1985478785,502054922, 1985511455,213844022, 1985528409,1985560605,1215578114,1985577885,1985658890,1985675306,1985691670,491552770, 562071257, 1985708063,1985725047,
1985757206,5439494, 1985773584,434405416, 1985799461,1985970213,1985986579,284786710, 1353515502,64765954, 1986003379,1986036760,116244486, 1986084876,1986102184,
1986143526,1986274599,1540800528,131842337, 180601056, 1986399383,1986471010,1986560912,913998113, 1986593716,1986658332,1986674718,1986707482,1986733352,1986756637,
- 1986773004,273776659, 1986789978,351617040, 1986831657,1986937408,1626161168,1986970075,1987011882,1987117550,1987149836,1987166234,1987182629,1987198978,242466822,
+ 1986773004,273776659, 1986789978,351617040, 1986831657,1986937408,1626161168,1986970075,1987011882,1987117550,1987149836,1987166234,1987182629,1987198978,242466822,
1987215372,1987231801,235634719, 1987248168,1987264515,1987280906,1415839756,1987297296,1987313670,1987330054,1987346463,242466852, 1987363816,1987411996,1564393503,
114245642, 1987437867,51019786, 1987650860,1987709611,1987746534,1987790011,1437777923,1987838411,1987887110,1987903791,198721565, 170803243, 180764694, 1987936272,
- 53493765, 275612495, 1987962157,1988044078,1480851475,199458897, 1988109615,53936135, 1988167539,29605930, 1988199998,1988263947,17809429, 1988289840,68599839,
+ 53493765, 275612495, 1987962157,1988044078,1480851475,199458897, 1988109615,53936135, 1988167539,29605930, 1988199998,1988263947,17809429, 1988289840,68599839,
1988411394,1988427804,21610518, 30392357, 1988444186,5867839, 1988470065,34422813, 1988613948,1361739907,79937593, 1988657180,1988673572,1988689961,1988706314,
1988722804,164036630, 1988739093,1988756770,1988804636,1988821007,1988837492,1988853782,1485078659,1988870156,142180367, 345784323, 2196666, 1989332507,1989394461,
1989410826,1989427330,39895155, 1989444017,1989482073,745849768, 1989551410,1989623839,307987319, 1989640276,1989676202,127041590, 1989754918,769426921, 1989771330,
@@ -3818,7 +3813,7 @@ static const unsigned int DictNodes[84251] =
1991476723,1991508407,1991540747,1991557122,198934549, 271057527, 1991583035,1991828796,135184386, 138231884, 1991868719,1465892948,1991910717,184549388, 1991999534,
1992048733,158842961, 1992098286,1992130591,1992147028,306954677, 576176149, 1992189246,1992409620,1992458266,85098538, 1992484159,506775027, 999489538, 1992533312,
1992590225,1992648001,87048230, 1992722010,1992762690,1992884234,159432725, 1992901026,1992933378,1428996136,1992959299,1993162894,1993195950,18120725, 1993244703,
- 1993261483,1993293855,1993310224,1993327425,1993359663,1993401668,1993458110,1993523226,1993539605,1993555984,44908560, 1816151049,1481950660,1993572436,47923238,
+ 1993261483,1993293855,1993310224,1993327425,1993359663,1993401668,1993458110,1993523226,1993539605,1993555984,44908560, 1816151049,1481950660,1993572436,47923238,
1993605122,561414251, 2048435, 1993631045,456966175, 1993691513,1993762118,1993850902,1993867304,517275685, 1993883650,62341130, 1097765, 1993900164,1993916550,
14172169, 1993942343,1994286408,1994394534,1994424322,1994440714,1994457124,1994473474,108511242, 1032142850,1994489910,207192596, 1994523083,5882458, 1994571871,
346144790, 170704962, 1994630204,1994686606,1994720245,1994786180,1994850316,1994866730,1994883108,1372979222,1994904430,1994948668,1995032558,137445397, 1995079702,
@@ -3826,22 +3821,22 @@ static const unsigned int DictNodes[84251] =
1995407397,139477044, 1995423763,1995440140,65617962, 1995973963,1996226622,1996275722,447987722, 261193759, 1996293248,1996342293,1804861478,291455002, 1996390410,
1996407649,491798582, 1996449100,1996522607,1996563789,1996604257,1996637042,1996668959,1996685318,291454995, 1996702632,1996735224,1996768103,1996801331,1996849611,
1996905623,1158234150,2835368, 1996965033,1996996650,67043370, 1997013051,1997045841,1918746665,1997078582,1724563496,1997111355,1997146642,1997193228,1997209903,
- 235028518, 185417757, 726908968, 1997242905,1997308584,1997340974,1997373480,6438938, 1997391450,1997422651,1997455400,1997471786,1997488150,1997504522,79249420,
+ 235028518, 185417757, 726908968, 1997242905,1997308584,1997340974,1997373480,6438938, 1997391450,1997422651,1997455400,1997471786,1997488150,1997504522,79249420,
1997520934,1926955046,104759311, 1997545662,1997570057,1997586444,1997602953,16269354, 1997619337,1997635719,17924106, 1997651999,1997668355,1997684765,1997701131,
7307271, 1997727054,1997874511,659292219, 1998062532,109183017, 1998111320,1998143547,1998178325,1998210377,1998258268,58802178, 1998291943,739360834, 1998349648,
- 307593651, 1998487611,1998520379,1998824786,1998963222,1998995458,392921107, 1999013329,1999061079,1999110146,163414026, 1999126555,1999159327,142835754, 152354856,
+ 307593651, 1998487611,1998520379,1998824786,1998963222,1998995458,392921107, 1999013329,1999061079,1999110146,163414026, 1999126555,1999159327,142835754, 152354856,
1999185235,143441951, 1999324050,1999372319,385024305, 1999397346,1999463764,1999717199,208978353, 1999751593,1999781928,1999798287,1999814671,1999831052,1263468554,
- 1999847470,813039656, 1063272475,1999898943,1999929461,1999962128,1999978507,1999994891,166215682, 2000011370,2000095701,242878768, 2000126012,1232388177,2196401,
- 446382106, 2000210912,2000266581,2000322586,2000338955,2000357580,2000388098,1999831050,1396670551,2000404520,126730246, 2000420880,170805567, 2000446806,793919587,
+ 1999847470,813039656, 1063272475,1999898943,1999929461,1999962128,1999978507,1999994891,166215682, 2000011370,2000095701,242878768, 2000126012,1232388177,2196401,
+ 446382106, 2000210912,2000266581,2000322586,2000338955,2000357580,2000388098,1999831050,1396670551,2000404520,126730246, 2000420880,170805567, 2000446806,793919587,
1435828701,2000551948,2000568339,2000584725,2000601952,2000671068,1760264202,2000732226,2000765465,2000834639,2000896056,2000938327,2001011147,2001059861,2001076311,
2001125416,2001142219,694173708, 7145493, 2001190999,139198471, 2001248791,2001338378,1574126486,2001364312,2001437820,2001485840,2001502259,2001544537,2001636153,
2001633364,2001724762,2001797721,2001829898,2001846338,2001879066,2001895883,1335754808,2001944675,2001977401,2001994187,2002043342,2002092879,2002124806,2002141250,
2002174944,2002223142,2002239500,2002256096,2002298203,2002370581,2002386970,2002403359,2002419731,2002437016,2002485288,2002501651,2002518037,779108418, 2002534443,
2002567199,214810634, 2002583651,2002616386,2002649104,2002665512,189693958, 2002691420,2002927750,2002944132,2002960394,2002976810,103743528, 2003002717,2003108776,
- 1787740162,131335050, 203128916, 2003141417,759578690, 2003182942,2003255655,2003288095,2003304464,1387380746,2003320908,2003363167,1900625962,111362079, 176963615,
- 2003412320,2003451916,2003468298,2003484693,2003501115,791494694, 2003533864,2003550647,417038639, 2003592545,2003632149,2003648815,2003682633,2003730488,196132876,
+ 1787740162,131335050, 203128916, 2003141417,759578690, 2003182942,2003255655,2003288095,2003304464,1387380746,2003320908,2003363167,1900625962,111362079, 176963615,
+ 2003412320,2003451916,2003468298,2003484693,2003501115,791494694, 2003533864,2003550647,417038639, 2003592545,2003632149,2003648815,2003682633,2003730488,196132876,
2003765053,2003812418,1406075394,2003854690,2003927050,2003952995,5505040, 171000410, 723796010, 2004092594,2004123688,2004140044,153190922, 162119982, 1436336130,
- 2004165988,2004272577,2004303910,441532437, 2004321867,2004370458,2004418576,246628378, 2004435003,546095123, 2004468745,930086922, 2004510053,2004584715,462438441,
+ 2004165988,2004272577,2004303910,441532437, 2004321867,2004370458,2004418576,246628378, 2004435003,546095123, 2004468745,930086922, 2004510053,2004584715,462438441,
44613643, 2004634013,2004680744,1911652390,2004698121,2004732233,2004795446,2004837734,2004936039,2005008396,2005024797,1861845018,2005041239,2005094734,2005139486,
2005172250,2005198184,2005303306,2005319696,273776697, 118145043, 2005336104,2005352454,1961869364,2005368937,2005401665,2005450763,47284240, 2005476713,2005771626,
2005869931,2006024204,2006040614,477085734, 143294891, 2006066540,488226842, 1980858370,1772522461,2006279533,2006337274,19251239, 133578976, 2006368268,2006391818,
@@ -3851,52 +3846,52 @@ static const unsigned int DictNodes[84251] =
2007744531,2007760918,2007777318,2007793666,784368150, 5177460, 2007810487,2007842924,958038047, 2007876269,2007929912,2007973903,1985134614,2007994920,2008039450,
2008056568,1277034508,2008098162,2008137759,1948975114,2008163699,2008334638,1836793882,2008368443,238551800, 2008409460,2008581004,2008633707,2008695309,2008743955,
1917419, 2008760386,676724793, 2008799186,2008878599,2008940610,2008982901,2009040231,2009104492,2009138490,2009186391,263553026, 476954678, 2009245046,2009334049,
- 120111328, 2009366544,2009383004,466993178, 2009416551,2009451078,2009481246,2009514273,2009547231,2009580034,1442168853,2009621879,2009884024,2010044956,131334286,
+ 120111328, 2009366544,2009383004,466993178, 2009416551,2009451078,2009481246,2009514273,2009547231,2009580034,1442168853,2009621879,2009884024,2010044956,131334286,
602554370, 2010104045,2010136683,163020810, 2010169356,405749770, 2010190063,2010251307,2010293625,420757515, 2010375546,2010416044,2010485019,398426140, 2010531207,
- 2010562659,2010595374,119357978, 1533526045,2010654075,75513892, 2010726832,2010759180,2010775557,127680514, 2010801532,2011047293,2011187038,2011251914,397770836,
- 2011299924,2011333077,175523221, 2011381782,2011398166,2011414550,2011430934,2011447318,107757590, 2011463696,2011480070,2011496469,280903682, 2011522430,63816734,
- 2011661465,2011712435,2011758604,153714710, 2011774978,2011791791,958663007, 2011828632,2011915647,45531178, 2011973983,2012020818,2012053560,2012086303,421855761,
- 2012112256,167985162, 2012185070,2012217403,2012250151,2012292481,8060968, 2012423554,2012529162,1955348492,2012563797,2012627003,2012659714,2012676115,197115926,
+ 2010562659,2010595374,119357978, 1533526045,2010654075,75513892, 2010726832,2010759180,2010775557,127680514, 2010801532,2011047293,2011187038,2011251914,397770836,
+ 2011299924,2011333077,175523221, 2011381782,2011398166,2011414550,2011430934,2011447318,107757590, 2011463696,2011480070,2011496469,280903682, 2011522430,63816734,
+ 2011661465,2011712435,2011758604,153714710, 2011774978,2011791791,958663007, 2011828632,2011915647,45531178, 2011973983,2012020818,2012053560,2012086303,421855761,
+ 2012112256,167985162, 2012185070,2012217403,2012250151,2012292481,8060968, 2012423554,2012529162,1955348492,2012563797,2012627003,2012659714,2012676115,197115926,
2012694496,2012751235,2012844450,2012910093,2012954629,115114043, 2012980612,2013193605,141656080, 2013397064,2013462574,2013512844,2013570438,2013695279,2013724694,
1052557328,2013741058,1667989515,2013758246,2013792270,3342374, 2013839389,2013855760,262684709, 1415839760,2013881735,72368144, 2013972242,2014021484,2014054285,
745472134, 2014085423,2014117910,756252688, 2014143880,2014188643,2014282620,2014331412,1993834506,2014380061,94339112, 2014396941,2014445627,2014478420,2014511132,
2014527500,2014543898,492447113, 2014569866,1497317441,292094382, 175620136, 2015077772,2015366372,2015412264,2850821, 2015428737,2015461439,2015494603,2015544820,
2015592474,2015609370,2015651213,113836054, 2015707138,2015723539,2015739941,611647499, 2015765902,2016019111,2016054659,2016101674,2016159119,507707398, 2016198959,
4718674, 2016231661,2016264276,3213333, 2016297807,914966060, 2016339344,2016411670,405045264, 2016428048,2016444444,198328351, 2016470417,2016773456,2016821739,
- 2016854230,2016887042,2016919706,8398226, 2016952322,76644378, 2016969897,2017001498,344736656, 2017017887,214941715, 2017034246,2017051977,283361290, 735559711,
+ 2016854230,2016887042,2016919706,8398226, 2016952322,76644378, 2016969897,2017001498,344736656, 2017017887,214941715, 2017034246,2017051977,283361290, 735559711,
2017109395,610223369, 2017198082,264159242, 2017224084,898171312, 2017329239,2017378798,2017411098,2017427468,2017443880,1919991829,2017460290,2017493023,1639432202,
2017509435,778862611, 2017551765,2017607811,2017624322,2017656987,2017689659,2017731990,2017871637,2017935386,2017952823,2017984534,80823320, 2018010519,2018066472,
2018082835,2018099238,2018115596,2018131984,1090961429,1878523906,2018148371,2018164758,2018181158,2018197506,48627724, 2018213903,2018230303,334800280, 2018256281,
2018329055,2018361881,2018426979,2018459678,344752587, 2018502042,2018633115,2018774204,2018852890,8396411, 2018869485,2018911644,2019017748,52363293, 2019075485,
212723102, 2019164226,753074188, 2019205790,2019231509,2019296223,2019345015,2019377218,2019419551,29376528, 836812816, 2019525034,295272450, 207619961, 2019567008,
- 2019688507,131891241, 896532539, 2019722905,2019780001,2019868674,551796746, 2019885110,2019927458,2019983400,75530250, 1749680140,2019999756,2020021639,2834471,
+ 2019688507,131891241, 896532539, 2019722905,2019780001,2019868674,551796746, 2019885110,2019927458,2019983400,75530250, 1749680140,2019999756,2020021639,2834471,
2020091299,2020147215,2020163660,2020205988,2020271525,2020343829,2020360194,115818525, 2020386214,2020631975,176193620, 131335665, 2020746664,2020802600,1212760093,
- 2020818987,2020861353,2020933634,2020959658,2021097538,1421803541,1934100871,2021130783,2021189035,2021244954,2021261324,1921581067,2021277717,2021294121,581206044,
+ 2020818987,2020861353,2020933634,2020959658,2021097538,1421803541,1934100871,2021130783,2021189035,2021244954,2021261324,1921581067,2021277717,2021294121,581206044,
2021320108,2021425206,358908128, 2021458223,2021490754,2021533101,2021638175,381992986, 2021654620,2021687308,84738054, 2021703771,2021736464,1818935322,2021762478,
2021867558,2021883940,2021900299,229965835, 750305320, 210879311, 2021918148,547684383, 2021949471,575668281, 2021965917,2022015200,2022047801,65077267, 2022073775,
2022391900,2022434224,2022507921,2022577549,2022637580,565772298, 2022653974,2022670372,241434634, 2022687629,2022768642,346488853, 2022786038,158812593, 2022818705,
2197903, 2022876593,2023211092,2023243817,2023260714,2023276546,1649410602,2023302578,6375910, 1756987501,2023329080,602161209, 2023391308,2023424087,2023473167,
- 1978023976,2023491552,2023548339,2023587856,2023613876,441532438, 2023653460,2023688605,2023744949,2023850485,5324866, 2023882791,1490503258,2023915572,23856158,
+ 1978023976,2023491552,2023548339,2023587856,2023613876,441532438, 2023653460,2023688605,2023744949,2023850485,5324866, 2023882791,1490503258,2023915572,23856158,
2023949702,52133904, 2024023478,3212603, 2024128522,2024144915,88686630, 2024161290,778944524, 2024184304,131104794, 2024243202,2024259605,2024275984,2024292367,
2024308752,213958668, 238256157, 2024334775,2024472660,2024505390,6373796, 2024557351,2024636428,2024652892,2024685608,49397781, 2024701968,1181941779,2024719752,
- 2024751116,2024767514,119881744, 2024784926,2024817135,377978896, 2024849451,146767882, 2024886371,2024914946,2024932697,2024973752,2025244039,2012299283,369098806,
+ 2024751116,2024767514,119881744, 2024784926,2024817135,377978896, 2024849451,146767882, 2024886371,2024914946,2024932697,2024973752,2025244039,2012299283,369098806,
2025285049,689799662, 2025324559,55033861, 2025350586,2025407064,2025447861,2025498043,2025562549,2933336, 251610186, 2025603093,2025619468,2025635947,2025670597,
- 2025711036,2025956797,2026070956,2026120638,685212938, 2026160999,2026200580,2026300863,2026373183,2026405928,1900550, 2026431936,2026717200,2026734036,84721704,
+ 2025711036,2025956797,2026070956,2026120638,685212938, 2026160999,2026200580,2026300863,2026373183,2026405928,1900550, 2026431936,2026717200,2026734036,84721704,
991100984, 2026766390,2026799145,2026815529,2026831903,2026848275,2026864652,588185720, 2026884837,2026962950,144949250, 1157103654,2026979394,2027016485,2027087297,
193249312, 2027176023,2027229080,127893514, 215777320, 229949461, 2027294586,2027357579,2027409294,2027454486,971882517, 2027470870,2027487234,2027503654,2027520011,
2027537231,2027578818,493666342, 2027683906,2027717473,2027749403,2027782447,2027824579,2027929616,14450703, 264798214, 2027955652,2028051607,2028111219,2028142895,
2028176682,2028224533,2028240936,2028257290,2028273730,2028306656,2028339250,171458591, 2028372427,2028421176,2028453954,2028486668,2028503046,2028519430,2028535895,
- 2028585831,2028618017,2028656340,2028748882,2028784176,2028840389,2028929479,2028979088,2029014300,2029076939,24297831, 2029125643,2029142028,2029158421,919486490,
+ 2028585831,2028618017,2028656340,2028748882,2028784176,2028840389,2028929479,2028979088,2029014300,2029076939,24297831, 2029125643,2029142028,2029158421,919486490,
2029175959,2029223995,760611671, 2029259505,2029291440,2029322278,1958150166,2029338690,560775178, 2029797405,2029813772,103546906, 2029839814,2030010605,2030044046,
2030118343,2030207577,2030249416,120979477, 2030469179,2030502735,2030534682,2030552088,2030600660,1210531871,2030633867,343214513, 2360876, 2030703044,2030764939,
2030839241,2030928409,2030993414,2031009813,2031026206,2031059003,2031093258,2031140951,2031190045,430440487, 2031216074,2031379915,2031452624,234438668, 2031502222,
282837423, 2031568917,2031600042,2031634346,2031698352,2031732909,2031796283,2031833316,1453228078,2031910978,125927443, 2031943702,2031960080,2031976458,2031992863,
110542885, 2032018892,2032320654,2032353326,2032402470,190368230, 2032419417,561381398, 2032451622,2032467970,232587366, 2032494029,2032549934,1239237047,2032608718,
2032654025,2032702702,2032797918,2032848810,429098433, 2032929122,2032984904,2033058251,666157077, 2033108091,391151628, 2033139734,399802384, 681967697, 2033156155,
- 2033198543,118884212, 2033435678,2033467413,2033484235,2033533950,2033582146,662503430, 1376584140,2033614875,2033648075,2033696778,2033715003,2033762412,52150312,
+ 2033198543,118884212, 2033435678,2033467413,2033484235,2033533950,2033582146,662503430, 1376584140,2033614875,2033648075,2033696778,2033715003,2033762412,52150312,
2033795153,303300639, 2033827894,2033860701,78479372, 2033919440,2034017745,2034073659,112738332, 2034110623,2034156385,104759303, 2034188394,2034270218,2034286621,
1975828567,2034305457,2195957, 2034359257,2034418589,1716584458,354746467, 2034500015,2034535091,2034574802,2034663474,2034696204,2034712586,2034728981,2034747195,
- 2034794604,2034827280,2034846121,2034878745,2034943104,2034991125,2035007510,2035024719,2035057638,2035089424,2035105830,2035122205,1502117894,2035148243,5883119,
+ 2034794604,2034827280,2034846121,2034878745,2034943104,2034991125,2035007510,2035024719,2035057638,2035089424,2035105830,2035122205,1502117894,2035148243,5883119,
2035351574,2035368002,1997783051,2035400734,197328898, 2035434319,1611006253,2035471665,810156044, 2035541460,59048537, 1569522927,159449521, 2035582944,2035630539,
2035679242,2035697467,1986234837,494878730, 2035744808,1396719628,2035761689,2035827742,2035866775,2035934677,2036016598,994083053, 922599446, 264765452, 2036154411,
2036196823,2036418065,2036458968,156827732, 113115244, 2036531254,2036570539,2036662288,2036681336,2036711516,2036744202,2036760879,1129578512,2036797384,2036858892,
@@ -3905,20 +3900,20 @@ static const unsigned int DictNodes[84251] =
2038042846,2038087783,2038169707,2038212061,2038284333,2038317082,2038333446,960888870, 2038349862,2038366246,2038382676,2038415381,2038431831,2038480902,2038497299,
215859216, 551370806, 2038523358,2038613159,2038661136,1033224208,2038687199,2038792239,317836355, 2038834656,2038916577,2039080418,190644300, 2039136559,2039169784,
2039201852,1043628073,2039283772,2039365642,2039382936,2039431275,2039464479,2039513559,55377949, 2039545940,993099804, 2039588323,2039666735,2039710505,2039742520,
- 1578631170,2039784932,2039889976,334070248, 2039932389,2040026120,2040079846,2040252194,2040285636,2040358375,2040414224,47972378, 2040431439,2040463362,139198485,
+ 1578631170,2039784932,2039889976,334070248, 2039932389,2040026120,2040079846,2040252194,2040285636,2040358375,2040414224,47972378, 2040431439,2040463362,139198485,
2040489448,2040561690,2040578069,2040594454,137412634, 2040610854,406306818, 2040627236,2040643596,137412646, 2040660052,2040702441,2040857907,2040905812,2040940019,
4507587, 2040971329,1278706123,2041020428,2041036831,2041053203,1808515094,2041070423,2041102390,2041141373,115016106, 2041185169,2041241194,2041286278,2041405210,
2041446431,2041463696,6619181, 2041505258,2041659408,2041675797,121110550, 2041692176,2041708565,952614934, 30392332, 2041725403,2041758658,2041790767,2041832939,
2041889227,2041937958,124469280, 2041954367,2041987673,2042029548,2042209773,312180776, 1663976364,2042299215,6701075, 2042340846,2042417182,2042465257,2042528504,
- 530055206, 2042570223,2042626895,2042658842,136921126, 1245872961,2042684912,2042766833,2042822658,2042839066,2042855460,2042871818,264093738, 2042888238,50937866,
+ 530055206, 2042570223,2042626895,2042658842,136921126, 1245872961,2042684912,2042766833,2042822658,2042839066,2042855460,2042871818,264093738, 2042888238,50937866,
2042939302,2042996210,2043138072,2043183106,184926250, 1880408095,2043206545,55869445, 2043291123,2043364503,2043412511,6373910, 188105663, 2043438580,2043510786,
2043527178,552485339, 154107915, 2043544539,583450670, 2043904131,2043920393,2043946486,2044038037,2044084226,2044100637,2044117008,2044133416,7290922, 2044153811,
- 2044200175,1313357861,2044233272,2044297242,445546498, 2044313681,2044346380,2044362773,6373803, 2044379158,2044395541,2044421623,2044487160,2044569081,163315744,
+ 2044200175,1313357861,2044233272,2044297242,445546498, 2044313681,2044346380,2044362773,6373803, 2044379158,2044395541,2044421623,2044487160,2044569081,163315744,
2044658173,2044716538,5324880, 167084042, 2044806561,103546918, 2044863995,55754768, 2044978684,2752519, 2045330367,341147688, 2045362225,2045444139,1991835660,
2045477673,2045509670,891633693, 2045527592,2045591657,716357634, 2045624778,2045657103,1261339722,2045673902,2045723489,2045755418,462880774, 2045772684,2045830653,
2045873387,2045936043,1060258016,2045968468,772407306, 31424519, 2046002298,2046066742,2046099503,2932792, 144375818, 2046133071,2046165098,2046256638,2046312477,
569311298, 2046338559,119997304, 2046411864,2046459988,2046492728,2046525452,539623464, 2046541864,2046558219,1047773212,2046578365,2046657143,2046689306,2046705705,
- 2046722064,2046738458,119226379, 1888010242,2046762784,2046820412,2046905436,2046951436,2046968851,2047017212,2047050148,2047085126,2047124992,2047246352,114409498,
+ 2046722064,2046738458,119226379, 1888010242,2046762784,2046820412,2046905436,2046951436,2046968851,2047017212,2047050148,2047085126,2047124992,2047246352,114409498,
347963500, 2047262749,2047279116,116375770, 1325662210,2047297011,2047328282,121356307, 2047344694,2047377550,2047410232,980402205, 2047443010,1000538133,1850441743,
2047475771,47546405, 2047509017,2047574120,2047623199,278052906, 1201799260,295256090, 116883515, 7734135, 115458050, 2047790838,2047895042,2047957281,2048000459,
2048542440,2048623816,32686111, 2048657851,163301845, 2048796163,2048852033,2048902424,2048967015,2048999426,532676634, 2049022337,2049083125,2049130508,2049146890,
@@ -3933,26 +3928,26 @@ static const unsigned int DictNodes[84251] =
2052472853,2052489235,283312134, 2052510186,2052555639,2052587793,2052620290,214941722, 2052645490,2052721111,2052767772,520094154, 108314723, 2052793868,1034518570,
2052886454,2052949110,2052997228,109363205, 2053039629,2053259302,2053276078,2053324802,2053341203,95698956, 2053357660,2053390636,2053423196,2053457241,2053489554,
2053537813,2053554207,212025356, 2053570644,2053603354,2053619741,2053636571,2053668893,2053685785,2053751327,2053800848,2053832730,2053849100,2053865501,2053881896,
- 2053898259,472203285, 2053914683,2053948761,2053980198,2053996584,2054012949,661274626, 896532534, 2054039054,237944848, 2054111244,2054127626,138625026, 371884048,
+ 2053898259,472203285, 2053914683,2053948761,2053980198,2053996584,2054012949,661274626, 896532534, 2054039054,237944848, 2054111244,2054127626,138625026, 371884048,
543408144, 2054153743,1476886981,2054267482,356925497, 2054340629,2054357046,2054390569,2054422962,2054465040,2054661649,1176717172,823115816, 2054770186,2054832173,
- 2054869169,2054897799,2054914049,3309573, 2054930891,2054981371,706101723, 2867240, 2055038482,2055110740,2055153171,104759307, 2055726613,2055767564,22478963,
+ 2054869169,2054897799,2054914049,3309573, 2054930891,2054981371,706101723, 2867240, 2055038482,2055110740,2055153171,104759307, 2055726613,2055767564,22478963,
2055798807,2055815300,2055831683,2055847959,2055864335,2055890454,2055897100,1114246, 2055913602,2055929887,2055946258,2055962664,2055979140,10371108, 2055996052,
- 2056028197,2056044572,70729859, 2056060934,2056077318,2056093701,6422551, 2056119831,2056192018,83918963, 2056208394,2056224804,81756165, 115818522, 328073217,
+ 2056028197,2056044572,70729859, 2056060934,2056077318,2056093701,6422551, 2056119831,2056192018,83918963, 2056208394,2056224804,81756165, 115818522, 328073217,
2056250904,2056274320,2056306694,2056323077,447709787, 2056339462,2056355846,2056372229,52346903, 2056087062,2056880265,902889604, 2056896627,2056912901,2056939034,
2056988187,468713572, 2057093649,2197082, 158744592, 2057129174,423596422, 2057224794,55197706, 2057257807,2057299484,2057528861,2057585141,2057627166,2057791007,
150798443, 2057922080,889308160, 2057994278,1963327540,944373789, 2058020385,2058125744,2058159372,2058216117,2058289912,2058331682,2058453443,2058495523,2058570174,
- 2058616916,2058649610,2058666518,2058698818,2058731541,2058747906,47120391, 2058764328,2058780738,124863657, 2058823204,2059036197,50036738, 2059124748,420593692,
+ 2058616916,2058649610,2058666518,2058698818,2058731541,2058747906,47120391, 2058764328,2058780738,124863657, 2058823204,2059036197,50036738, 2059124748,420593692,
2059141423,2059176673,2059281958,2059374090,2059436450,2059468812,320585749, 2059488505,1186775078,2059534390,2059567641,2059633111,2059665410,1645264924,2059681794,
- 2059698187,2059714588,142589974, 2059732310,369278978, 2059780633,2059845663,2196800, 52576277, 2059871783,907477594, 2059937320,2060075855,911065090, 272252943,
- 2060109713,7045136, 2060150313,2060189788,2060232234,2060355642,2060419936,2060487433,2060533762,2060550154,2060566570,335151106, 2060592683,2060714817,235307029,
+ 2059698187,2059714588,142589974, 2059732310,369278978, 2059780633,2059845663,2196800, 52576277, 2059871783,907477594, 2059937320,2060075855,911065090, 272252943,
+ 2060109713,7045136, 2060150313,2060189788,2060232234,2060355642,2060419936,2060487433,2060533762,2060550154,2060566570,335151106, 2060592683,2060714817,235307029,
420724775, 2060746818,2060780899,2060846124,2060894295,2060943874,2060976159,2060992619,2061035052,2061156447,2061207355,2061264429,2061472098,2061537224,2061598779,
2061641262,2061762591,2061778982,293601318, 2061795349,2061811714,980402213, 2061837871,2061942926,2061975590,850952230, 711655946, 2062001712,2062077393,2062123041,
- 2062181116,2062222326,291111347, 2062255582,2062368876,2062408440,2062467093,2062483499,2062516234,1899397157,2062532614,2062549013,2062565378,2062581770,116377266,
+ 2062181116,2062222326,291111347, 2062255582,2062368876,2062408440,2062467093,2062483499,2062516234,1899397157,2062532614,2062549013,2062565378,2062581770,116377266,
2062870066,2063138903,2063190172,306937872, 2063237151,2063253514,8603572, 2063271698,217759770, 2063328819,2063384602,2063400962,2063417359,821854230, 2063434575,
2063466517,805781520, 1208057866,2063484690,2063532070,2063548432,2063564842,329679695, 2063582705,2063614382,2063672884,785465375, 2063783008,2063831385,2063893286,
- 195199007, 2063926441,6946875, 2063959278,2063991631,2064025489,1435124674,2064066101,2064237013,2064295478,2064361015,264093715, 2064465950,2064498709,235520016,
+ 195199007, 2063926441,6946875, 2063959278,2063991631,2064025489,1435124674,2064066101,2064237013,2064295478,2064361015,264093715, 2064465950,2064498709,235520016,
530055179, 2064515105,2064565033,2064597002,273858626, 2064615849,2064646156,194084900, 2064663943,2064695308,858144810, 2064721464,2064826383,22888454, 2064852537,
- 2064924698,2064941072,202522635, 2064967226,345735682, 2065024254,2065147451,2065268738,843644938, 2065285151,2065302883,2065368165,2065416204,2065432578,48054298,
+ 2064924698,2064941072,202522635, 2064967226,345735682, 2065024254,2065147451,2065268738,843644938, 2065285151,2065302883,2065368165,2065416204,2065432578,48054298,
2065451816,2065514929,2065557052,1474330667,324747320, 2065638973,2065827559,1943879746,2065901118,2065983039,186466731, 2066064960,131268832, 2066154074,2066186252,
238813283, 2066206578,2066251802,353239099, 2066277953,131432486, 2066400665,2066466031,3228078, 1346290159,2066498456,2066547223,340819999, 2066579477,1715617794,
2066605634,2066654787,2066694154,1704148994,319717834, 2066720324,2066818629,2066867782,2066989058,43237386, 2067006200,2067041245,2067087453,222789653, 2067146311,
@@ -3960,23 +3955,23 @@ static const unsigned int DictNodes[84251] =
2068047434,2068086891,2068119583,1210138643,627785782, 2068136404,2068168714,1866842143,2068185110,2068201775,2068234250,2068250626,1591607327,2068268295,2068371717,
2068415001,2068489803,2068561922,2068578325,8391161, 2146411, 131335142, 2068594747,2068627458,2068644064,1288011807,2068683021,2068801100,2068890618,2068939599,
602374146, 2068972712,2069021432,170885421, 408420354, 399262456, 241238018, 2069063245,51036196, 2069235273,2069316043,236405207, 2069364748,98107395, 2069381151,
- 258097190, 2069404588,2069531008,287031327, 335151135, 2069597649,303562783, 2069577836,1164591170,344850470, 743014402, 2069643323,2069676139,2069709736,216711206,
+ 258097190, 2069404588,2069531008,287031327, 335151135, 2069597649,303562783, 2069577836,1164591170,344850470, 743014402, 2069643323,2069676139,2069709736,216711206,
2069751374,1834008639,2069915215,1592508516,2070036506,45875202, 928940042, 1137721346,2070058665,158508624, 324895034, 308019726, 237682731, 2070173965,2070292049,
1043496988,1655537674,2070357586,1941356565,2070495234,822673419, 2070513851,2070570579,2070734420,2070806582,410829665, 2070840056,995885058, 2070872076,2070890630,
498247253, 2070938633,2070980182,2071068698,954499074, 141066271, 2071086227,212320272, 759580145, 2071118283,2071167002,2071183426,2071216888,2071254693,2071298074,
2071314444,2071330826,2071347202,49086493, 2071365658,2071412796,2071494764,2071528635,2071577110,43237382, 2071619159,2071848536,2072068180,2072101897,2072134497,
- 2072166416,2072182786,2072199178,7290890, 2072215789,197115910, 2072249832,2072299873,6455302, 2072379418,742260748, 2072397252,47038480, 2072429081,603471910,
- 7290883, 2072494125,379256858, 377585704, 2072532503,214417449, 2072618585,2072789076,404046695, 2072823283,178815007, 2072854582,2072897114,2073002006,234307624,
- 2073018394,13549578, 2073034779,2073067536,122568714, 2073084334,5341214, 2073133158,2073165826,133939257, 131335031, 2073182264,2073224795,2073323100,373047306,
+ 2072166416,2072182786,2072199178,7290890, 2072215789,197115910, 2072249832,2072299873,6455302, 2072379418,742260748, 2072397252,47038480, 2072429081,603471910,
+ 7290883, 2072494125,379256858, 377585704, 2072532503,214417449, 2072618585,2072789076,404046695, 2072823283,178815007, 2072854582,2072897114,2073002006,234307624,
+ 2073018394,13549578, 2073034779,2073067536,122568714, 2073084334,5341214, 2073133158,2073165826,133939257, 131335031, 2073182264,2073224795,2073323100,373047306,
2073379246,2073429161,623411226, 2073460776,2073477186,131334200, 2073880158,2074199457,2074247647,2074280044,1532542978,2074312744,2074329109,236372034, 2074345578,
- 2074430101,283869195, 2074486367,2074535520,2074600426,5488671, 2074673154,267501604, 201525026, 2074690791,2074738690,2074755078,2074771477,2074787971,64356482,
+ 2074430101,283869195, 2074486367,2074535520,2074600426,5488671, 2074673154,267501604, 201525026, 2074690791,2074738690,2074755078,2074771477,2074787971,64356482,
2074804226,2074820619,2074836994,1773060124,2074855936,2074902587,2074935334,2074952544,677593559, 2075027041,2075082767,2075099167,235389530, 2075125346,2075214275,
2075246624,2075279391,251396115, 2075295774,2075328538,2075345371,2075377695,1336050111,2075394086,2075410463,212844565, 2075428176,134168683, 2075477419,2075534947,
2075578690,2075630801,2075708900,2075754522,152338442, 665485314, 821690406, 137936908, 2075770916,1310326803,2075797092,212107295, 2075885611,2075918357,2075934807,
2075986274,2076033051,2076065803,2076082191,2076098562,2076114965,821690390, 2076140409,2076196900,1071923226,2076213332,146718730, 2076246032,704151567, 2076262465,
163594296, 2076312385,170344460, 2076351369,2076417905,2076475430,25559145, 2076492423,459276748, 2076550757,8611430, 881247241, 371311625, 2076664904,2076747367,
- 2076885623,2076917782,62341156, 2076935465,3212373, 2077016206,2077048886,1129381894,2077081903,2077114476,2077153266,147013642, 2752550, 2077206120,3211348,
- 2077409336,2077451881,2077557195,326483984, 2077605934,2077655094,109053380, 2077697642,2077904822,2077966545,1072661504,2078016831,2078081495,593199704, 3260893,
+ 2076885623,2076917782,62341156, 2076935465,3212373, 2077016206,2077048886,1129381894,2077081903,2077114476,2077153266,147013642, 2752550, 2077206120,3211348,
+ 2077409336,2077451881,2077557195,326483984, 2077605934,2077655094,109053380, 2077697642,2077904822,2077966545,1072661504,2078016831,2078081495,593199704, 3260893,
2078113876,2078147097,2078221931,422592524, 2078303852,2078394507,2078457867,2078474252,2078490634,2078507029,2078523431,504610842, 2078565997,2078624127,2078687325,
934838328, 2078741834,110216130, 2078818792,2078852012,2078916614,2078932998,481525836, 2078949481,160350246, 2078991982,5292054, 2079147337,129008049, 2079204975,
2079319664,135004162, 131334571, 2079359012,174227462, 2079375400,1460027404,2079391850,2079483505,2079588436,2079625155,2079696498,168722470, 2079787254,2079839910,
@@ -3984,38 +3979,38 @@ static const unsigned int DictNodes[84251] =
2080751622,2080768002,547831834, 2080784486,2080817999,2080851289,2080892537,2081056378,2081112289,2081145768,2081177656,2081210455,8398459, 2081259558,2081275906,
2081292370,663584770, 2081325486,2081374220,2081390618,2081408798,5882721, 2081472543,2081488925,126287914, 2081515132,2081653676,1106903061,2130850, 2081728125,
2081800494,939999664, 2082083499,2082146828,2082236031,251871248, 522076172, 2082328921,2082399872,2082465409,68232834, 2082530947,172836186, 176980205, 2082645636,
- 2082751001,2082819817,340280780, 1354418202,2082881576,2082898379,2082947832,2082979906,2083012674,2083055237,2083415686,2083497607,2083563144,398786562, 554188812,
+ 2082751001,2082819817,340280780, 1354418202,2082881576,2082898379,2082947832,2082979906,2083012674,2083055237,2083415686,2083497607,2083563144,398786562, 554188812,
374308866, 2083717122,2083733505,2083749928,96419856, 279773205, 2083766326,2083799148,2083832408,2083864588,2083880970,2083897373,1476771842,2083915685,2084004904,
2084071049,2084110352,2084126746,2084143115,2084159500,2084175878,224690217, 260063535, 2084202122,2084277568,2084339722,2084357363,2084405294,509297111, 2084464267,
- 2084552788,2084586460,17809410, 2084619655,2084651039,28147724, 2084677260,647184410, 386531410, 2084782298,2084821694,2084873869,2085093382,2085109766,44646405,
+ 2084552788,2084586460,17809410, 2084619655,2084651039,28147724, 2084677260,647184410, 386531410, 2084782298,2084821694,2084873869,2085093382,2085109766,44646405,
2085126165,1978384386,2085143377,163726710, 2085283470,829063178, 2063908890,2085365391,139477483, 2085453931,2085487499,2085552236,656457794, 1746273089,2085586249,
1693433958,2085635116,2085683259,2085715999,571801603, 2085732436,2085765212,2085798464,2086119057,2086256877,2086289418,257638431, 2086306095,457523215, 2086339436,
- 1431536075,2086388312,2086430354,2086522614,2086619056,2086659731,2086764582,132448559, 2086781217,2086815305,2086897707,2086961582,2087010342,185450527, 1818630,
+ 1431536075,2086388312,2086430354,2086522614,2086619056,2086659731,2086764582,132448559, 2086781217,2086815305,2086897707,2086961582,2087010342,185450527, 1818630,
2087036564,2087174823,2087209897,2087256075,2087272469,623656982, 2028355605,2087288863,1073872906,2087315093,2087387152,2087403562,2087420336,2087453964,1951924246,
- 2087511702,2087616619,2087649911,295292751, 2087682132,158500138, 2087714862,2087764044,2087806615,2087896633,2088003224,2088190051,2088222739,2088240768,527240803,
+ 2087511702,2087616619,2087649911,295292751, 2087682132,158500138, 2087714862,2087764044,2087806615,2087896633,2088003224,2088190051,2088222739,2088240768,527240803,
2088298137,2088386625,2088435728,2088452106,659816880, 2088468501,2088486121,185483488, 2088535960,2088600961,2088653208,2088730729,2088764304,131334246, 2088796650,
- 2088848078,162186351, 2088964090,141606954, 2089042391,2089084570,2089166491,2089215644,2089264797,46039080, 2089330334,220775347, 2089484340,2089526943,2195716,
- 416268691, 2089805472,2089861126,2089877541,127041839, 2089895369,2089964789,2090067617,259082427, 2090172719,2090207826,675643873, 2090280136,544047114, 677445642,
+ 2088848078,162186351, 2088964090,141606954, 2089042391,2089084570,2089166491,2089215644,2089264797,46039080, 2089330334,220775347, 2089484340,2089526943,2195716,
+ 416268691, 2089805472,2089861126,2089877541,127041839, 2089895369,2089964789,2090067617,259082427, 2090172719,2090207826,675643873, 2090280136,544047114, 677445642,
4997981, 2090358744,2090468757,2090526370,2090641059,2090739364,2090827803,252248102, 2090862137,8390083, 2090958904,2091001253,940065853, 2091083429,2091144665,
- 27607077, 2091204648,2091221011,2091237398,2091253772,1153384458,2091271198,19251266, 2091312806,2091417638,2091443879,2091515964,399148143, 2091605658,15040518,
- 2091664348,2091697114,2091749330,2091810842,29769744, 46776360, 2091837096,2091902633,2092171266,2092187654,2092204586,2092220452,2092236816,2092253224,61456938,
+ 27607077, 2091204648,2091221011,2091237398,2091253772,1153384458,2091271198,19251266, 2091312806,2091417638,2091443879,2091515964,399148143, 2091605658,15040518,
+ 2091664348,2091697114,2091749330,2091810842,29769744, 46776360, 2091837096,2091902633,2092171266,2092187654,2092204586,2092220452,2092236816,2092253224,61456938,
2092279466,1785871, 2092335126,385138700, 385515579, 2092353844,2092433462,243744910, 2092466235,979686705, 2092508843,2092564974,2092607148,2092679197,2092695564,
2092712490,2092728358,2092744706,2092761642,743669798, 94339082, 2092777526,127451146, 2092820141,2092925035,2092957725,1474134019,194036319, 2092977763,1049968681,
2093033134,2093137979,113656235, 2093180591,2093285391,642154534, 2093754032,2093993467,2094065329,2094219304,2094235679,5488678, 2094261938,2094352337,2094399507,
294944805, 147243067, 2094417557,358105140, 2094481645,2094514197,2094533079,2094579752,1818645, 2094606003,2094737076,2094859273,2094891054,2094943107,2060713994,
- 2095006714,333136330, 797362688, 2095064757,2095120422,436437004, 2095146678,2095284319,2095333679,145440784, 2095366447,2095401915,2095490743,2095546475,5308523,
+ 2095006714,333136330, 797362688, 2095064757,2095120422,436437004, 2095146678,2095284319,2095333679,145440784, 2095366447,2095401915,2095490743,2095546475,5308523,
2095579146,2095595604,2095629190,2095664067,2095776652,1262142538,2095825367,2095861725,1794179074,2095890536,2095939643,1052001065,2095973199,2096005880,2096037890,
1738194982,2096062020,2096119839,2096136194,115933210, 201572383, 2096162488,2096293561,2096349200,2096365610,2096384187,2096434120,194052529, 2096506554,2096598790,
- 2096644117,2096660622,2096693279,2096709634,2096726026,356319707, 2096752315,2096807957,2096824346,2096840735,1188053011,2096864555,604258396, 2096906252,335446026,
+ 2096644117,2096660622,2096693279,2096709634,2096726026,356319707, 2096752315,2096807957,2096824346,2096840735,1188053011,2096864555,604258396, 2096906252,335446026,
2096922670,2096973003,2097004566,2097020959,272138278, 2097037849,2097112764,2097152483,2097185979,2097243837,308003266, 2097333685,2097407678,2097627202,2097660811,
2097725468,1842840155,2097745716,2097823756,1533378571,2097846784,2097931967,2098046656,765936578, 2098118668,2098135052,66814118, 2098151725,2098184273,2098216986,
2098239749,2098292417,2098429958,2098447679,714736376, 2098513557,2098577803,2098610188,2195907, 110723088, 2098626572,526811235, 2098644520,460570629, 2098718402,
- 2098857520,2098888725,286408763, 2098906031,2098972758,131268662, 2099036176,2099052570,676249602, 2099078851,2099136884,5881915, 2099209924,2099488453,216186946,
- 2099576874,1098629136,2099595153,523485243, 2099635910,2099741166,2099773450,2099789855,2084077609,2099806350,210403359, 2099847875,637206530, 49086470, 403341366,
+ 2098857520,2098888725,286408763, 2098906031,2098972758,131268662, 2099036176,2099052570,676249602, 2099078851,2099136884,5881915, 2099209924,2099488453,216186946,
+ 2099576874,1098629136,2099595153,523485243, 2099635910,2099741166,2099773450,2099789855,2084077609,2099806350,210403359, 2099847875,637206530, 49086470, 403341366,
2099914439,1298907238,2100045512,2100150298,2100166722,2073493535,2100201893,27624025, 2100255118,2100347348,2100379674,237814063, 934839219, 2100396520,2100438295,
2100496091,2100537033,2100625424,2100641802,2100658186,2100674572,2100690950,524600209, 2100712753,49872918, 2100775628,2100855293,706215967, 2100913866,2100970561,
- 132792346, 132792332, 2101053039,2101102452,291095502, 2101520076,2101674011,2101706764,783171610, 2101733069,2101805968,2101839623,948551692, 2101888066,5866948,
- 934952962, 2101952550,2101972484,2102050850,2102165611,2102208206,2102299103,344735835, 2102345870,2102378498,2102402485,154469406, 2102444044,2102467696,687834142,
+ 132792346, 132792332, 2101053039,2101102452,291095502, 2101520076,2101674011,2101706764,783171610, 2101733069,2101805968,2101839623,948551692, 2101888066,5866948,
+ 934952962, 2101952550,2101972484,2102050850,2102165611,2102208206,2102299103,344735835, 2102345870,2102378498,2102402485,154469406, 2102444044,2102467696,687834142,
2102510439,146359825, 2102542374,2102558957,2102601423,2102673710,130285583, 2102706258,2102738946,2102755349,2102771799,2102822434,2102876440,2102951967,2102968330,
8398544, 2102984788,2103017510,2103033894,52199464, 2103051000,2103092945,2103224018,2103263270,2103279654,2103296031,126763841, 2103312447,2103345192,1936588838,
2103366415,2103427126,2103459852,2103476234,2103493239,2103525851,2103561409,2103607380,2103650003,2103771567,1103774775,2103813844,151109670, 2103928533,2104049889,
@@ -4023,44 +4018,44 @@ static const unsigned int DictNodes[84251] =
2104623123,371605520, 2104649432,2104737802,2104754228,2104786998,2104829657,2104977114,2105098282,1478819921,2105115820,2105164305,2105196560,2105212934,2105229333,
389349378, 2105246543,1356447756,2105282195,2105328503,2105360395,8398555, 2105377311,2105426874,1837858837,2105491915,2105540664,2105573835,2105625043,2105671718,
2105688076,2105714396,2105796317,2198785, 2105954400,193183828, 2105999815,2106050941,2106131192,2106173150,122110548, 373326127, 316294153, 2106343455,2106369759,
- 551288848, 417021954, 2106458959,2106492460,2106523694,2106572842,2106589222,2097188, 2106605608,2106622006,2107057889,1229029388,2107195819,2107228463,131334417,
+ 551288848, 417021954, 2106458959,2106492460,2106523694,2106572842,2106589222,2097188, 2106605608,2106622006,2107057889,1229029388,2107195819,2107228463,131334417,
2107270882,2107385571,128155705, 2107473941,2107490607,2107523093,2107539532,2107574110,661274640, 2107647716,2107686988,2107729637,174637058, 2107785440,2107817990,
- 2107834399,2107851637,2107883530,658063835, 2107907284,2108001149,1900563, 2108057318,8395736, 2108244060,2108276767,2108293130,220546037, 232587786, 266485860,
+ 2107834399,2107851637,2107883530,658063835, 2107907284,2108001149,1900563, 2108057318,8395736, 2108244060,2108276767,2108293130,220546037, 232587786, 266485860,
635240463, 2108309935,598327327, 2108352231,2108391450,303579152, 108314741, 153190922, 2108408821,2108473975,2108506133,2108532456,2108605408,2108653594,2108670204,
2108703627,2108768312,2108804400,2108850188,300925842, 635240467, 2108867640,1888583782,2108932098,7734395, 2108958441,6324234, 2109183637,19267610, 2109244069,
- 344506380, 2109312280,2109358927,2109391385,179175467, 2109456413,2109475969,2109521939,2109538607,2109571082,2109587477,2109604143,2109636832,2109673645,821690389,
+ 344506380, 2109312280,2109358927,2109391385,179175467, 2109456413,2109475969,2109521939,2109538607,2109571082,2109587477,2109604143,2109636832,2109673645,821690389,
2109718540,2109734938,1385562983,2109752141,214827545, 2109800906,2109833232,2109849610,2109866050,2109898792,2109915162,2109932482,2109974250,2110067938,2110130000,
2110179807,2110232559,2110324779,2110358444,2110433003,243220506, 2110490928,2110537738,1381548663,2110555305,2110587415,2110621230,2110668806,777453599, 2110685408,
- 2110718018,2110751157,2110783509,985300994, 2110802655,2110881803,582991900, 2110900684,2110950670,2111012930,2111045716,2111088364,2111276036,118915078, 176488469,
- 2111340768,2111373318,56721445, 2111389727,2111406109,1026965563,2111424073,2111504479,2111553565,2111569951,2111586323,2111602728,2111619110,2111635458,122503194,
+ 2110718018,2110751157,2110783509,985300994, 2110802655,2110881803,582991900, 2110900684,2110950670,2111012930,2111045716,2111088364,2111276036,118915078, 176488469,
+ 2111340768,2111373318,56721445, 2111389727,2111406109,1026965563,2111424073,2111504479,2111553565,2111569951,2111586323,2111602728,2111619110,2111635458,122503194,
2111651893,2111684610,2111701013,2111717463,2111766831,2111799404,2111832076,114409479, 2111850041,193675741, 2111956717,214319142, 2112071406,389070941, 2112192550,
- 195264528, 434964375, 2112218863,214303009, 2112291263,1429530352,2112333553,2112562930,368197647, 2112634902,2112651683,2112694003,2112783962,2112815704,221806649,
+ 195264528, 434964375, 2112218863,214303009, 2112291263,1429530352,2112333553,2112562930,368197647, 2112634902,2112651683,2112694003,2112783962,2112815704,221806649,
2112847884,2112864282,2112880699,2112913838,2112972532,2113095296,2113142805,2113160060,861405698, 2113208351,2113224723,395182117, 2113241953,2113283829,2113382134,
2113471832,2113521048,2113570727,2113601968,2113634370,2113668065,997998618, 2113699842,2113716663,2113758967,272531487, 115769403, 2113863732,2113896458,1785741371,
2113922808,2113994780,143343675, 2114021113,6373428, 2114126731,2114191799,2114227457,2114257120,2114289723,381550602, 2114332410,2114529019,2114587037,2114634818,
2114701057,2114748432,18153498, 153911380, 2114767374,2114819152,2114873084,1503952898,609533964, 2114978836,844136880, 2115027031,2115076198,273269672, 2115118845,
- 2115240990,2115272730,848528412, 2115290135,2115593983,2115698707,157188597, 2115724049,2115787513,2115813976,205209640, 2115856128,2116019969,2116371312,115785766,
- 2116419600,189136922, 2116445954,2116583483,2116616222,47120405, 2116658947,2116773636,2116878352,223903773, 533118992, 2116894785,2116944634,2116978838,154797508,
- 2117028558,2117150469,153192931, 1356185619,2117314310,1186201705,2117445383,2117588363,2117648422,885866926, 2117674760,2117863715,2117910540,2117927012,943603743,
+ 2115240990,2115272730,848528412, 2115290135,2115593983,2115698707,157188597, 2115724049,2115787513,2115813976,205209640, 2115856128,2116019969,2116371312,115785766,
+ 2116419600,189136922, 2116445954,2116583483,2116616222,47120405, 2116658947,2116773636,2116878352,223903773, 533118992, 2116894785,2116944634,2116978838,154797508,
+ 2117028558,2117150469,153192931, 1356185619,2117314310,1186201705,2117445383,2117588363,2117648422,885866926, 2117674760,2117863715,2117910540,2117927012,943603743,
2117960440,954499108, 2117993791,2118059296,2118129956,2118191007,2118254649,853147686, 2118272499,2118313737,168395945, 2118374873,1155465847,2118434818,2118451257,
2118467600,242466845, 2118493962,2118582705,794361883, 2118617834,2118664195,232980546, 2118681655,2118723339,355735461, 2118887180,958644230, 2118985485,2119155804,
80936962, 2119188506,2119204918,2119240449,522108966, 735412290, 2119296782,2119320606,2119352374,2119389149,2119418335,2119450640,2119467029,12648582, 2119484361,
- 2119558927,2119663647,2147358, 2119690000,210436320, 2119755537,2119843856,36110346, 2119870226,2119926700,2119993051,2120024172,2120066835,2120279828,880771113,
+ 2119558927,2119663647,2147358, 2119690000,210436320, 2119755537,2119843856,36110346, 2119870226,2119926700,2119993051,2120024172,2120066835,2120279828,880771113,
1300250662,2120369982,503709738, 2120400964,2120450060,2120466442,2120482822,2120499221,1566212162,48447509, 2120515606,2120532009,2120548388,2120564818,2120607509,
- 2120663081,2120679436,2120695834,2120714266,697860136, 2120764691,2120814668,2120859660,2120876139,2120909314,134168645, 2120943820,2120975563,2121007116,724713491,
+ 2120663081,2120679436,2120695834,2120714266,697860136, 2120764691,2120814668,2120859660,2120876139,2120909314,134168645, 2120943820,2120975563,2121007116,724713491,
2121033494,145129514, 2121121813,2121138188,48676890, 2121154572,2752554, 2121180951,2121312024,2121121821,2121361177,2121404700,173228048, 2121459482,2121534721,
- 2121564172,762445834, 2121590555,2121613333,2121629725,2121646089,2121662596,2121678979,21544969, 2121705244,2121744400,2121761901,2121801730,7634982, 134169115,
+ 2121564172,762445834, 2121590555,2121613333,2121629725,2121646089,2121662596,2121678979,21544969, 2121705244,2121744400,2121761901,2121801730,7634982, 134169115,
2121842727,2121875459,2121891861,2121908359,2031627, 2122163998,2122350624,120799258, 2122383406,2122432531,944554020, 2122458911,2122531860,2122579994,2122596368,
2122612755,2122629136,2122645530,431996930, 115198263, 634290192, 1921581066,2122671904,269664366, 2122761856,2122809350,2122827232,2122858498,255885354, 2122874882,
2122901281,2122940432,113770536, 2122956811,8611618, 2122980852,2123087888,2123105840,2123137030,115195956, 2123154573,2123202579,2123220358,2123284520,2117943317,
405012532, 2123303574,953892895, 2123350032,2123366442,2123383216,2123415986,2123448336,116228108, 307234920, 2123464770,2123497482,2123516215,2123546690,2123589411,
2123678889,2123720484,186270608, 333758480, 1727824124,2123802405,2123989091,357629958, 7733849, 43532317, 2124031782,2124129538,2124202208,2124234774,2124251172,
- 1830715430,40042498, 2124268469,2124316684,2124333066,2124349524,616121374, 1226522660,2124382316,2124414978,2124431398,94437378, 2124448670,2124480543,20365319,
- 2124506919,55377960, 2124578828,45613077, 178339851, 2124598484,2124644374,2124660752,2124677130,52805674, 2124693506,2124709898,574881834, 2124726284,221495311,
+ 1830715430,40042498, 2124268469,2124316684,2124333066,2124349524,616121374, 1226522660,2124382316,2124414978,2124431398,94437378, 2124448670,2124480543,20365319,
+ 2124506919,55377960, 2124578828,45613077, 178339851, 2124598484,2124644374,2124660752,2124677130,52805674, 2124693506,2124709898,574881834, 2124726284,221495311,
2124742675,2124759174,2124775555,2124791938,17448982, 2124818216,525172774, 2125031209,2125260586,2125332492,2125348902,2125365263,2125381654,690569292, 2125398048,
2125430796,719093786, 2125447190,2125463578,2125479952,2125496335,2125513136,2125546764,2125594636,2125611046,2125627824,2125660244,2125699271,1156269076,2125759311,
- 45432934, 2125791316,2125824026,2125840395,2125856784,2125873162,2125889567,8389527, 2125915947,2125997868,2126059220,2126161709,195690517, 2126227246,7094793,
- 2126292783,2126391088,8390293, 2126463060,2126495851,2126538545,2126626837,7372812, 2126643216,2126659599,2126675990,2126693270,1128366999,2126741939,80936981,
+ 45432934, 2125791316,2125824026,2125840395,2125856784,2125873162,2125889567,8389527, 2125915947,2125997868,2126059220,2126161709,195690517, 2126227246,7094793,
+ 2126292783,2126391088,8390293, 2126463060,2126495851,2126538545,2126626837,7372812, 2126643216,2126659599,2126675990,2126693270,1128366999,2126741939,80936981,
2126775370,2126807066,2126823426,2126839837,1931313154,2126856208,1299644456,2126875287,2126955594,2126988171,2127053301,2127095602,2127151143,2127183874,2127200266,
812957736, 2127216727,3309610, 10653795, 2127275827,2127446863,25559642, 2127488820,328909724, 2127527967,2127545313,2127587125,2127743671,2127790082,2127816502,
402309142, 2127855638,2127872031,414711829, 2127888400,1243004968,2127914807,2128045880,2128134603,1792114690,2128185844,2128234235,2128281626,2128297986,2128315515,
@@ -4073,20 +4068,20 @@ static const unsigned int DictNodes[84251] =
2130624946,2130657710,2130709112,2130739216,2130755610,1280360484,2130772010,2130788364,2130804746,2130822082,2130853919,2130880317,2130936659,2131001382,2131019096,
387268832, 1809088551,2131075646,2131116139,2131148816,2131165226,2131182000,2131214770,2131247126,2131263500,2131279898,2131296258,919486479, 2131312656,2131329039,
2131346803,2131378197,121028630, 2131394562,2131410954,45613093, 2131869827,2131886214,2131902595,27738227, 2131928894,2132109119,2132148234,287572085, 1371340840,
- 55116310, 2132170264,50937894, 2132246999,2132289344,2132344834,48070666, 2132371265,2132426771,2132445867,2132485954,2132574211,2132590676,2132623363,101924901,
- 2132649795,1786663, 2132862788,2132976048,2133051037,2133114985,1448346035,114180127, 2133149203,2133231361,369050513, 2133281918,2133377871,907477423, 446529567,
+ 55116310, 2132170264,50937894, 2132246999,2132289344,2132344834,48070666, 2132371265,2132426771,2132445867,2132485954,2132574211,2132590676,2132623363,101924901,
+ 2132649795,1786663, 2132862788,2132976048,2133051037,2133114985,1448346035,114180127, 2133149203,2133231361,369050513, 2133281918,2133377871,907477423, 446529567,
2133410846,2133442990,545358410, 2133494148,2133559291,505544730, 2133657386,2133705758,867549196, 2133747337,2133796677,268976428, 2134035793,2134114409,1262142538,
- 2134148087,196149290, 2134222662,2134294594,2134328594,184600242, 2134392848,1359757331,2134409270,2134442015,2134458387,412140015, 2134484807,2134562516,3211346,
+ 2134148087,196149290, 2134222662,2134294594,2134328594,184600242, 2134392848,1359757331,2134409270,2134442015,2134458387,412140015, 2134484807,2134562516,3211346,
2134655411,2134697800,2134753306,2134769666,2134787195,2134820669,2134868860,2134919137,15007745, 588612055, 2134976329,316620866, 2135074634,254197786, 2135363203,
2135451467,2135506960,2135533388,2135598925,2135687210,569081882, 2135703568,2135719946,202047509, 2135736322,752288691, 2135753006,2135785482,49020965, 2135801940,
2135834708,7096383, 2135868282,2135917023,2135949419,2135982108,2135998517,2136041294,2136260664,742965258, 2136294294,2136352591,2136434512,1124941864,2136490068,
- 2136522834,56655893, 203767864, 1688829968,2136555607,630653507, 115769400, 2136605102,465552883, 2136653850,2136670210,2136686611,48513043, 1476821011,203162033,
+ 2136522834,56655893, 203767864, 1688829968,2136555607,630653507, 115769400, 2136605102,465552883, 2136653850,2136670210,2136686611,48513043, 1476821011,203162033,
2136713041,2136850458,2136867175,2136899586,2136915994,2136932383,2136948757,254443523, 2136969326,2137024338,2137097888,43237388, 2137139027,578043906, 2137178983,
502497317, 2137210896,1019543564,2137229888,2137286484,2137542752,2137590259,707480023, 2137686028,1762590802,2137702459,2137735178,2137751573,2137769749,2137833556,
714539029, 926696422, 2137867176,2137909077,2138003865,1371226134,2138056534,2138128386,1505624090,19267689, 2138154839,2138367832,8390287, 344736656, 1437254975,
150749487, 2138456086,2138472494,2138531673,2138603546,2138619935,48676921, 2138636318,2138669122,2138701835,2138718247,2138761050,2138832962,230719498, 2138865730,
2138900747,2138947594,2138964391,2139023195,2139136570,2139210727,118030445, 2139259768,2139318108,173113365, 2139383645,2139462191,2139505183,2139563870,2139678559,
- 1561068034,2139760480,2139832330,2139848725,2139865134,2139924321,2140094548,2140127261,115114064, 2140144138,47120394, 2140176440,33400674, 2140209192,207011871,
+ 1561068034,2139760480,2139832330,2139848725,2139865134,2139924321,2140094548,2140127261,115114064, 2140144138,47120394, 2140176440,33400674, 2140209192,207011871,
2140226760,2140268387,2140596068,2140733456,263847957, 2140749840,15056917, 397771212, 2066743339,2140776293,2140884464,384729147, 131810491, 2140964009,2140997195,
2141044742,115818518, 2141061645,2141120358,2141366119,2141405199,491208742, 2141421660,2141455488,68599818, 152961454, 2087534676,2141503570,2141546344,2141719045,
933900, 326009051, 291095129, 161808415, 2141766133,2141798402,2141814794,159694890, 2141831222,2141864239,2141906793,2141984673,2142011394,168935450, 2142037866,
@@ -4095,30 +4090,30 @@ static const unsigned int DictNodes[84251] =
2143168368,2143224277,539721780, 138019246, 2143273807,2143315825,237731868, 2143437925,2143496050,552878106, 1583546944,2143535130,2143554062,2143610739,2143741812,
150569958, 2143879189,38879289, 2143898710,2143978470,298270746, 2144010777,2144076684,2144135029,194691128, 493193314, 2144174120,2144190523,271892512, 2144233334,
2144446327,1772716063,2144536029,2144567755,169330657, 200261737, 2144617844,2144665602,297763287, 438075851, 2144685338,325386262, 2144796726,524910648, 2144839544,
- 2145026155,2145058919,2145140757,48496642, 2145159251,1114127, 2145232761,1020334946,2145291096,2145347450,2145435755,2145468476,2145550355,2145566742,656752706,
+ 2145026155,2145058919,2145140757,48496642, 2145159251,1114127, 2145232761,1020334946,2145291096,2145347450,2145435755,2145468476,2145550355,2145566742,656752706,
2145583142,2145599526,6947119, 2145620386,8392091, 24297524, 2145681474,2145714195,2145730563,2145747003,2145789819,2146092802,2146156570,82558988, 2146173165,
327434278, 2146207360,2146264956,291061786, 2146307555,2146354066,195085750, 2146402320,1731362842,1214752637,2146418991,2146452606,2146500610,2146517002,2146533397,
2146549876,2146566146,1210220565,2146582612,2146615306,16269318, 2146633571,191053860, 2146697817,2146729987,111132675, 2146747212,1397719050,1284129615,2146805630,
2146943083,2196639, 2146979355,52576293, 2147042334,957399124, 212877341, 2147084159,2147188776,2147205146,107757610, 2147221542,121094201, 2147248000,2147303523,
- 750126532, 2147337591,2147418133,2147435403,2147500086,2147534686,2147598417,2147641217,2147729515,2147762235,2147795426,2147903362,2148074232,2148107451,115015764,
- 2148155430,177143810, 540917868, 2148181891,2148253738,2148270120,1245593716,2148286485,126517274, 2148302886,338313253, 2148329348,2148368386,2148384796,19447830,
- 2148411269,73695243, 2148450314,33112067, 9109516, 2197152, 2148984712,2149072978,2149115785,471580703, 2149253179,2149286938,435257647, 2149345162,612270139,
+ 750126532, 2147337591,2147418133,2147435403,2147500086,2147534686,2147598417,2147641217,2147729515,2147762235,2147795426,2147903362,2148074232,2148107451,115015764,
+ 2148155430,177143810, 540917868, 2148181891,2148253738,2148270120,1245593716,2148286485,126517274, 2148302886,338313253, 2148329348,2148368386,2148384796,19447830,
+ 2148411269,73695243, 2148450314,33112067, 9109516, 2197152, 2148984712,2149072978,2149115785,471580703, 2149253179,2149286938,435257647, 2149345162,612270139,
2149384706,2149417014,2149459851,140607590, 2149531732,2149564442,2149580831,2149598096,768131091, 2149631936,2149721996,2149844339,2149875778,2149909242,2149942138,
2149990454,2150028825,2150072330,1296285725,2150098829,343297203, 2150253629,2150328206,272285715, 2150393743,1329217562,2150450363,2150499319,1723547664,1468121154,
56049695, 2150573968,2150688657,130531382, 2150746170,2150810494,2150843401,44466218, 2150875176,2150891532,643481959, 2150918034,178078658, 2151006638,2151056458,
2151088150,820445196, 2151105026,319619088, 160760322, 2151137325,2151170103,2151235610,2151262099,2151311252,2151376789,2151458710,2151646147,2151703783,2151809064,
300590597, 2151827234,694435856, 2151858192,2151874586,498663435, 2151891000,2151933847,2151999384,2152054815,1725088178,2152072131,2152123124,2152186309,2152218639,
- 2152235863,2152277913,140253902, 2152367121,2152425370,2152703899,2152759726,2152808906,8611740, 2152841738,2152884125,2152957659,126042128, 2152988674,50806794,
+ 2152235863,2152277913,140253902, 2152367121,2152425370,2152703899,2152759726,2152808906,8611740, 2152841738,2152884125,2152957659,126042128, 2152988674,50806794,
2153005128,147816486, 2153072774,2153119760,2153136168,243745995, 2153152596,2153185739,2153234491,992084966, 2153269159,2153299989,2153316354,2153332757,2153349151,
2153365520,403390474, 2153382389,2153414682,2153431071,2153447907,2153490334,2153539487,2153845919,2153906236,2153988106,2154005111,2154047392,2154129313,2154217498,
2154234315,2154283900,2154332166,859963411, 2154349542,2154381354,2154397762,2154431419,2154500074,2154555298,2154660064,2154692624,448544787, 1424359446,2154711390,
- 2154768291,2154840079,2154856464,2154872853,2154889228,2154905610,2096103445,2154922021,2019704848,2154938800,2154981284,3228079, 2155118608,1366671366,399425538,
+ 2154768291,2154840079,2154856464,2154872853,2154889228,2154905610,2096103445,2154922021,2019704848,2154938800,2154981284,3228079, 2155118608,1366671366,399425538,
2155139673,372834775, 2155210661,2155282448,2155299338,1985495056,2155331610,2155348271,573653295, 2155380812,2155414848,2155448484,2155479069,2155495443,2155511818,
- 1298055197,2155528327,2155544598,2523137, 2155571110,2155750002,173490630, 2155827637,1077412335,2155872735,43368505, 2155905140,36143133, 2155921424,2129957,
+ 1298055197,2155528327,2155544598,2523137, 2155571110,2155750002,173490630, 2155827637,1077412335,2155872735,43368505, 2155905140,36143133, 2155921424,2129957,
2155947943,2156204096,2156265956,2156315095,73187359, 2156347423,2156363892,107757608, 2156383145,2156439464,2156495449,2156537769,2156668842,2156724246,2156741451,
1746911254,2156806604,2156849067,2156963756,1973567525,451219596, 2157185131,2157242285,2157348973,2157396427,2157445132,704036946, 2157466037,289046549, 2157520814,
633717654, 412008460, 2157560111,2157592614,2157609435,1367851023,2157651887,1066582027,2157692072,46514202, 2157740246,2157772831,16811273, 2157790031,2157832112,
- 2157928624,2158012337,2158084119,36143234, 2158100491,2158116870,2158133267,2158149653,188940294, 2158166058,2158182516,108396554, 2158208946,2158280820,7602233,
+ 2157928624,2158012337,2158084119,36143234, 2158100491,2158116870,2158133267,2158149653,188940294, 2158166058,2158182516,108396554, 2158208946,2158280820,7602233,
2158297128,2158313483,2158329940,2158363835,2158411792,5734419, 195952671, 1384464425,2158428183,81707027, 2158864308,2158952927,6373977, 901464079, 2158987675,
2159050811,2159093685,2159241142,2159296528,197115914, 2159312898,1880653834,22216741, 2159330223,2159395742,1592229909,2159428109,2159477991,2159525909,2159552439,
123748383, 2159666583,2159722512,2293788, 2159749048,2160017515,2160050606,573603871, 2160099330,2160115718,307298325, 2160132108,55197724, 2160158649,1065926682,
@@ -4126,32 +4121,32 @@ static const unsigned int DictNodes[84251] =
925909018, 2160559000,184860709, 2160607275,2160641432,2160689640,1571357143,2160721951,2160738314,41582598, 2160764858,2160885798,2160902189,2160943446,2160989038,
753713162, 2161033231,2161051112,55754773, 2161108923,1277362198,2161158076,911163411, 2161279277,2161311756,2161328138,2161344598,2161387453,198721538, 2161485758,
2161557516,1212454, 2161584063,2161656745,926302223, 161857562, 2161715136,2161901578,135299074, 2161928129,2161999884,1818631, 2162016310,2162049045,2006515733,
- 2162075586,2162246392,664289802, 2162278455,2162353089,2162409482,2162427828,2162508815,2162556938,49086474, 2162573367,2162638899,631259167, 2162681795,514015269,
- 2162737173,28000474, 2162754507,2162886674,2162966544,2162982922,2162999698,2163075012,17137685, 84934667, 2163166588,2163197518,2163246318,160727076, 295649285,
- 2163615686,2163723149,2163802959,1763329484,2163845063,2163905020,2163951000,2163999029,2164051923,2164107208,2164162590,2164205513,2164375639,2164424723,264553368,
+ 2162075586,2162246392,664289802, 2162278455,2162353089,2162409482,2162427828,2162508815,2162556938,49086474, 2162573367,2162638899,631259167, 2162681795,514015269,
+ 2162737173,28000474, 2162754507,2162886674,2162966544,2162982922,2162999698,2163075012,17137685, 84934667, 2163166588,2163197518,2163246318,160727076, 295649285,
+ 2163615686,2163723149,2163802959,1763329484,2163845063,2163905020,2163951000,2163999029,2164051923,2164107208,2164162590,2164205513,2164375639,2164424723,264553368,
2164441119,4653483, 1910423776,2164457484,528859142, 150700034, 2164474315,2164533194,2164762571,2164850787,490029077, 2164893644,2164984465,2165048467,2165080066,
320897061, 2165096502,2165129231,2165145616,2165162010,2165178389,21102623, 295780378, 1571619681,2165196562,2165243930,204537871, 2165260300,108314731, 2165286861,
2165376392,2165417934,2165499855,2165629848,2165696464,2165769043,2165837574,206931441, 2165888529,2165932091,6374055, 2165974993,2166040530,130203677, 2166113310,
491028522, 55197701, 2166152484,2166302675,2166362543,8396848, 994168845, 2166412022,152945630, 2166475987,686309397, 2166532052,2166603797,1051902011,2166626302,
- 2166653025,2166719731,2166767919,2166800420,2166816783,2166833183,2166849539,2166865949,2166882316,2166898707,2166915221,2166947971,76202007, 2166974421,234176517,
+ 2166653025,2166719731,2166767919,2166800420,2166816783,2166833183,2166849539,2166865949,2166882316,2166898707,2166915221,2166947971,76202007, 2166974421,234176517,
2167150041,2167209986,2037940250,2167226384,2167242790,58982416, 2167269334,2167358793,2167407672,2167472235,2167504938,198311948, 2167523035,2167554507,2167613399,
2167833255,227524696, 2167875544,2167947290,2167964554,2167996885,127713292, 2168045584,2168061978,2168078367,654983178, 216776735, 2168094756,2168111110,2168127509,
2168143874,737771558, 2168160690,2168193248,2168225814,1192951844,2168252377,2168324106,2168342308,2168389634,2933883, 408289290, 2168406062,2168455194,2168472472,
- 2168520730,2168537103,2168553494,2168570159,2168602711,226050054, 576176139, 2168661978,2018131983,2168735343,2168782950,210583562, 2168815632,2168225807,46514212,
+ 2168520730,2168537103,2168553494,2168570159,2168602711,226050054, 576176139, 2168661978,2018131983,2168735343,2168782950,210583562, 2168815632,2168225807,46514212,
2168832890,2168881171,2168897555,2168913942,2168930306,1090961434,1941356582,2168946724,448544794, 2168964268,2169012243,2169028630,2169045002,2169061407,2169078818,
2169110635,2169143302,2169159682,2169176085,775897128, 2169192460,574881813, 1016168479,2169219035,2169399260,2169454658,2169487406,2169542759,2169585690,2169602050,
- 143720458, 2169619857,2169683978,2169710557,2169769956,2169815106,2169847915,1695629318,2169882619,2169979394,2170013084,7733324, 2170064868,2170116161,695369759,
+ 143720458, 2169619857,2169683978,2169710557,2169769956,2169815106,2169847915,1695629318,2169882619,2169979394,2170013084,7733324, 2170064868,2170116161,695369759,
2170175542,2170218462,2170404873,62062615, 2170422338,822788125, 2360143, 2170496991,2170571639,2170602336,2170667027,275791894, 10829843, 2170687311,2170732566,
2170748930,1968881675,2170765371,2170798101,441335824, 2170815452,2170847248,13549571, 2170863618,2170880102,760135708, 2170915782,477937674, 2170972128,2171142166,
2171158530,2171174938,559906837, 2171201505,2171273232,21102618, 277970970, 2171299810,2171404719,2171440611,2171486227,2171503047,948666476, 2171561955,2171617292,
- 153944075, 2171633679,2171650140,45350943, 2171693028,124470095, 2171758565,2172010987,1072333232,1075937361,2172053478,2172092428,435060738, 2172113304,105185292,
+ 153944075, 2171633679,2171650140,45350943, 2171693028,124470095, 2171758565,2172010987,1072333232,1075937361,2172053478,2172092428,435060738, 2172113304,105185292,
2172200935,2172305462,2172343540,2172413928,132153655, 482919433, 153993704, 110232131, 2172561385,1348173890,2172682673,7258178, 1866645520,2172725226,2173013033,
2173075472,2173091866,134840330, 2173118443,2173233132,323748331, 2173321254,1563607042,2173337640,1738113030,2173354071,2173403439,2173441921,2173485058,2173501522,
2173544429,158532078, 170704980, 2173616587,2173665911,2173700833,2173806574,2173912073,2173943820,471400974, 2173970415,2174026216,2174058498,339296282, 2174074918,
2174091336,2174167024,2174223848,2174272920,276906443, 116359174, 218677288, 2174330865,315293728, 1731248130,2174633190,2174730278,2174747560,2174779458,1082523660,
2174822386,427099938, 354369567, 2174911416,2174969843,258637839, 2175035380,2175221973,2175254628,2175287312,161726521, 2175313909,2175402010,2175418370,2175439010,
2175467542,2175484822,179765269, 2175536235,2175600608,246562826, 2175648344,244351012, 2175681049,2031420304,2175747095,2175801280,2175867020,2175926294,2175942668,
- 2175969270,2176040986,51839016, 2176057403,14450818, 2176100343,2176395256,2176485179,2176532782,1559969832,2176575481,316294056, 2176706554,2176778256,246874150,
+ 2175969270,2176040986,51839016, 2176057403,14450818, 2176100343,2176395256,2176485179,2176532782,1559969832,2176575481,316294056, 2176706554,2176778256,246874150,
2176804859,157220866, 49217538, 2176854012,2176974894,2177024865,2177056770,2177073162,318832661, 2177089590,340264775, 340281508, 2177132541,170344450, 2177220667,
2177253419,2177286576,2177318933,2177337632,2177385355,2933095, 2177453272,2177499152,189136936, 2177525758,2177581099,2177613836,133414918, 2177631055,2177663030,
2177705983,264700343, 2177902592,2178023445,2178040384,2178082817,2178172683,2178253792,2147418122,2178302039,2178352044,2178416671,2178433458,1564639733,2178467135,
@@ -4162,7 +4157,7 @@ static const unsigned int DictNodes[84251] =
2180186714,2180218896,2180235274,201572381, 2180251658,973406210, 2180268058,2180284418,126353448, 2180311048,2180366795,2180425737,2180671498,146456579, 2180792336,
722731050, 664060851, 126287888, 2180808706,2180825109,75530256, 2180841494,2180857868,2180874281,2180890630,471449621, 2180917259,1212973501,2181022993,2181070879,
2181088384,2181136492,900677643, 55132181, 900677663, 2181170016,1873101931,903970870, 2181244940,2181317287,898744755, 2181350223,2181382190,2181441549,1428996098,
- 2181513270,2181556238,2181693445,2181709826,2181726229,645693456, 2181752847,2181834768,2181890132,2181925364,294535184, 2181973015,2182031377,1723187222,703676442,
+ 2181513270,2181556238,2181693445,2181709826,2181726229,645693456, 2181752847,2181834768,2181890132,2181925364,294535184, 2181973015,2182031377,1723187222,703676442,
2182234591,2182266917,2182283276,2182299660,750469135, 2182322787,2182414392,2182448976,2182496559,1033978974,2182530604,2182562710,2182611836,2182670354,2182774796,
153748216, 1296285702,2182794933,2182873175,2182924555,56639499, 176194472, 2182981651,280433030, 2183168012,2183184410,2183211028,2183299832,453476457, 2183342101,
2183675988,2183714802,1655210000,2183757890,2183791826,294633493, 2183833622,2183888898,569115759, 2183906504,3244071, 2183938060,2183964695,270401595, 2184036368,
@@ -4171,24 +4166,24 @@ static const unsigned int DictNodes[84251] =
2185363458,152027162, 153174031, 2185381277,2185429023,2185447001,2185495468,2185560870,2077589535,2185592935,2185676132,2185750557,2185838604,110100499, 2185854992,
2185871371,2067251266,2185887760,2185904154,2185920543,219168811, 2185944948,2186002434,2186018837,2186035231,431505842, 2186059429,2186135631,2186199106,2186234088,
2186282153,189038607, 2186313730,2186330127,2186346498,2186362906,2186379266,119570443, 2186396979,2186444806,10650094, 2186462696,2186513795,2186569758,2186658251,
- 412942342, 2186717215,243599501, 2186821634,2186838530,2186870795,18399238, 2186897440,609796111, 2187051101,2187110433,1083949075,2187182990,191906846, 177340887,
+ 412942342, 2186717215,243599501, 2186821634,2186838530,2186870795,18399238, 2186897440,609796111, 2187051101,2187110433,1083949075,2187182990,191906846, 177340887,
2187248781,2187299088,2187355234,2187448172,2187493483,2187526638,1245348776,2187978786,2188099606,2188116886,153748362, 2188165146,2188181506,984596490, 2188208163,
2188263434,842088477, 2188288314,2188437540,298352668, 677724191, 2188503077,2188574741,670859699, 2188591125,5865553, 2188617766,2188689885,2188722207,2188739191,
2188771412,2188804988,2188853703,128155677, 2188912679,2188985900,2189017100,2189033695,1838645274,2189076520,2189214327,2189246551,235552794, 2189305897,2189361164,
2189377575,2189410325,2189426719,192479242, 2189443084,2189459482,829308939, 2189476887,2189525281,2189557810,2189590594,2189624221,514883596, 2189705231,2189721616,
- 2189737990,2189754434,583385119, 2189788552,2189819935,2189836298,2189852674,2189869112,2189901890,1408811018,2189944874,2190032977,2190065666,2190082059,223723535,
+ 2189737990,2189754434,583385119, 2189788552,2189819935,2189836298,2189852674,2189869112,2189901890,1408811018,2189944874,2190032977,2190065666,2190082059,223723535,
2190098655,2190132233,2190163989,2190180418,2190213151,347144198, 2190230413,2190316156,2190360602,2190376991,654983187, 2190393864,2190442517,2190459357,2190501931,
2190573578,2190590583,2190625079,49266728, 2190655595,681771024, 2190692034,780058626, 2190796844,2190869425,125239302, 2190901254,2190918246,2129641488,2190950624,
- 2190993062,2191098910,1546650996,2191131548,2191179805,2191196191,2191212563,2191228994,2191263482,2191296444,2191376405,539394649, 2191392779,2191409627,212844554,
- 275464197, 2191441949,2191458316,8398893, 2191484974,2191583279,1634304040,2191639901,2191687711,383860757, 2191714352,2191786010,2191804190,2191867915,957596082,
- 2191885342,2191917531,2191949845,2191966234,2191982594,164266005, 2191998982,112427046, 2192025649,590823445, 2192130060,2192146531,490881066, 2192179231,134513074,
+ 2190993062,2191098910,1546650996,2191131548,2191179805,2191196191,2191212563,2191228994,2191263482,2191296444,2191376405,539394649, 2191392779,2191409627,212844554,
+ 275464197, 2191441949,2191458316,8398893, 2191484974,2191583279,1634304040,2191639901,2191687711,383860757, 2191714352,2191786010,2191804190,2191867915,957596082,
+ 2191885342,2191917531,2191949845,2191966234,2191982594,164266005, 2191998982,112427046, 2192025649,590823445, 2192130060,2192146531,490881066, 2192179231,134513074,
2192195599,5292053, 2192212982,2192246025,2192277544,2192293903,2192310575,2192353330,2192409385,2192441803,1850294711,2192491039,2192539677,1056243724,2192556520,
2098512790,2192588816,2192606764,393543720, 2192638006,2192671778,2192703504,118538266, 2192719912,2192736287,859963398, 2192753522,1621082114,2192795699,2193067187,
2193113124,2193129493,2193145868,2193162266,2193179672,2193227835,2193266263,2193326096,2193342480,1199783974,115769376, 2193358879,2193376138,2193409578,2193489986,
2193523319,2193557065,2193639927,2193670603,2193719317,2193735711,2193752949,1252737050,2193784920,2193817666,2193850436,2193900151,2193939026,56655891, 1127483851,
- 658161967, 2193998283,117424143, 2194047035,2194090036,491620925, 2194243686,2194276378,2194292802,2194326346,2194384949,1493778915,2194499638,2194571330,146489360,
- 2194604042,1233322563,2194620482,2194654031,2194696247,2194745400,2194800661,2194817100,2194849807,351338512, 2194876473,2195023930,2195081720,2195144770,6947749,
- 120668186, 2195178700,768622604, 2195236923,2195292172,25559800, 2195309436,348782598, 2195358233,2195425331,2195475922,2195537941,2195555229,2195643575,3244256,
+ 658161967, 2193998283,117424143, 2194047035,2194090036,491620925, 2194243686,2194276378,2194292802,2194326346,2194384949,1493778915,2194499638,2194571330,146489360,
+ 2194604042,1233322563,2194620482,2194654031,2194696247,2194745400,2194800661,2194817100,2194849807,351338512, 2194876473,2195023930,2195081720,2195144770,6947749,
+ 120668186, 2195178700,768622604, 2195236923,2195292172,25559800, 2195309436,348782598, 2195358233,2195425331,2195475922,2195537941,2195555229,2195643575,3244256,
2195718603,2195769089,2195817312,2195889085,433045520, 2196264573,884774, 2196318269,2196406353,145309706, 2196443200,2196514878,2196619266,2196635669,2196652044,
2196668442,2196684822,2196701200,2196717608,2196733958,2196750348,2196766739,2196783120,2196799504,48054287, 2196815931,1596245022,2196850153,2196908095,2197022784,
2197094412,2197114976,246562842, 2197170241,275841889, 2197324691,2197383234,1655881827,2197439597,182861836, 2197471313,3686402, 2197514307,2197645380,2197750192,
@@ -4197,7 +4192,7 @@ static const unsigned int DictNodes[84251] =
2199126453,2199162395,2199224374,2199257377,2199294360,2199372203,2199404976,2199439389,2199496779,2199617608,2199683110,19252136, 2199699495,2199732655,2199766821,
2199814175,2199830630,305463298, 2199873612,2199945238,2199961659,2199995345,2200043577,2200059935,377241626, 382485056, 2200076394,2200161070,2200226468,2200289296,
84738051, 2200315981,2200391298,2200436757,2200459631,2200502380,948994060, 2200535042,2200551938,2200587622,2200660046,175767611, 34701451, 2201141679,2201184336,
- 2201322518,2201370651,2201403430,2201419807,2201436384,2201468994,2201501712,2201518090,858947643, 2201544785,2201601985,2201649164,2201665547,2201683730,777322502,
+ 2201322518,2201370651,2201403430,2201419807,2201436384,2201468994,2201501712,2201518090,858947643, 2201544785,2201601985,2201649164,2201665547,2201683730,777322502,
2201741394,2201927699,459980819, 2201948755,236273704, 282771485, 2202026022,2202042370,621559834, 2202058758,2202084037,2202141865,2202183763,2202223047,2202272677,
540753977, 2202308151,2506758, 2202353723,2202386438,1387446293,2202402870,2202436344,2202468378,2202485195,2202544212,2202632234,2202649929,2202700344,2202731376,
2202779667,2202806357,2202862482,2202911696,2202943948,2202976266,2202992682,2203009055,589004810, 2203025883,1404519285,2203059401,2203117654,2203222447,2203256697,
@@ -4209,20 +4204,20 @@ static const unsigned int DictNodes[84251] =
2205646914,2205680481,2205712394,2205739099,2205777946,2205794316,2205810726,2205827084,122667050, 2205843477,2205860750,2205925414,147652650, 2205952092,2206074825,
2206132317,2206203914,950763954, 2206220298,800669715, 2206236713,2206256568,2206318604,437125122, 2206345310,2206483801,2206515202,2206531640,2206564381,2206581039,
2206613591,2206665076,2206728297,2206761419,579616876, 2206811030,2206860889,1411760560,2206912578,7733347, 2207000671,2207088661,2207105055,2207121424,2207137802,
- 2207156027,2207203436,2207236555,2207285304,2207318047,2178269200,2207334431,2207350830,2207399957,2207417359,916652070, 2207465488,2207483409,2207524960,42599921,
+ 2207156027,2207203436,2207236555,2207285304,2207318047,2178269200,2207334431,2207350830,2207399957,2207417359,916652070, 2207465488,2207483409,2207524960,42599921,
2207679618,1590149163,2207746059,2207809576,2207825941,2207842391,2207891492,2207907861,2207924255,2207941520,2207973428,2208007070,2208049249,2208104507,2208139938,
- 2208186389,2208206762,2208284759,2208334678,2208384263,2208481763,2208514086,2208530434,2208546826,344850461, 204537972, 2208563212,2208579808,2208612373,669532200,
+ 2208186389,2208206762,2208284759,2208334678,2208384263,2208481763,2208514086,2208530434,2208546826,344850461, 204537972, 2208563212,2208579808,2208612373,669532200,
1130627703,2208628795,2166013968,2208671842,2208811628,2208874512,2208890987,1343307788,2208933987,2209057935,1106182198,2209103893,2209121120,2209186784,2209234970,
884457511, 2209251338,3915815, 2209270115,2209316930,2209349653,2209366941,2209447992,148602901, 2209481822,2209532681,2209589348,2209693712,356516894, 2209710116,
- 2209726479,2209742914,4440495, 115523600, 2209775659,56492051, 2209808823,2209851493,2209933414,2209989145,2210064487,2210124602,2210211944,2210268226,118292564,
+ 2209726479,2209742914,4440495, 115523600, 2209775659,56492051, 2209808823,2209851493,2209933414,2209989145,2210064487,2210124602,2210211944,2210268226,118292564,
139329564, 2210342936,2210414658,2210449466,2210513527,2210546857,2210588777,2210660418,131973344, 1029865474,2210695802,2210742288,2210758666,2210775947,2210850922,
2210938882,2210955285,2210971714,2211006847,129957993, 2211070384,2211102765,2211135918,6373484, 323010562, 2211194987,2211415600,433669289, 2211457132,2211529175,
- 2211562103,2211595752,2211643408,408158253, 2211660000,405831686, 503316907, 2211692971,2211735661,2211817582,110100511, 2211899503,2212020753,2212057066,117407746,
+ 2211562103,2211595752,2211643408,408158253, 2211660000,405831686, 503316907, 2211692971,2211735661,2211817582,110100511, 2211899503,2212020753,2212057066,117407746,
2212102447,189513766, 2212145264,488243236, 2539536, 602980394, 2212282913,2212331526,2212347914,737902628, 2212374641,2212462597,1185824799,2212479938,2212511750,
- 322994214, 2212528159,2212544531,56262659, 2212560912,2212580609,2212616538,2212659236,2212676631,741539843, 726695976, 2212735090,2213079155,2213167504,972587031,
+ 322994214, 2212528159,2212544531,56262659, 2212560912,2212580609,2212616538,2212659236,2212676631,741539843, 726695976, 2212735090,2213079155,2213167504,972587031,
2213210228,1640015988,2213242996,2213275765,41140624, 2213341302,34472051, 2213390453,2213455988,2213488756,2213521527,1640015988,2213242996,2213562436,2213609522,
1884137592,2213643600,13549587, 2213691421,2213707792,2213734521,2213871631,2213888022,2213904396,219578397, 232079376, 2213920804,569360395, 2213937168,2213953542,
- 236716053, 2213969922,48201738, 2213986323,2214002719,2214019084,2214035466,2214052471,604372998, 2214094970,2214166544,2214183209,2214215716,449871900, 737755146,
+ 236716053, 2213969922,48201738, 2213986323,2214002719,2214019084,2214035466,2214052471,604372998, 2214094970,2214166544,2214183209,2214215716,449871900, 737755146,
2122645525,2214236712,536215583, 2214291579,363659752, 2214363273,2214379657,60899465, 2214406268,2214445078,2214471805,2214543389,2214559756,199344166, 2214576730,
2214608917,2125611034,2214625282,2214641704,8994837, 2214668414,2214838703,2214871042,2214887462,2214903844,2214921624,137544168, 2214969647,2965532, 2215002210,
2215035727,2215067658,2215084074,395264040, 234799146, 2215100470,2215133678,2215165973,2215182358,2215206958,2215264258,2215280666,2215297035,2064384002,2215313495,
@@ -4234,18 +4229,18 @@ static const unsigned int DictNodes[84251] =
538329110, 2217754634,147407707, 136119234, 2217771537,2217803813,2217820176,51560469, 2217846918,519454758, 2217984021,2218000468,2218033178,238059551, 2218049562,
2218065946,45727756, 2218084263,2218125447,45350914, 2218215540,1256472604,2218278922,2218301786,1256571481,2218344458,2218360874,2218377218,38977668, 2218403976,
41566227, 110117743, 2218541087,2218559291,2218608129,2218672164,134021122, 2218692361,174047248, 2218770903,2218803630,2218852811,2218902043,2218934374,2218977417,
- 2219255946,2219327510,2219343902,2219387019,2219443294,520945666, 2219501708,141295657, 2219590895,1438613506,2219632781,2219771033,2219829390,2219902603,17228829,
+ 2219255946,2219327510,2219343902,2219387019,2219443294,520945666, 2219501708,141295657, 2219590895,1438613506,2219632781,2219771033,2219829390,2219902603,17228829,
8391351, 2219966480,2219982858,2219999234,3866706, 2220021145,420364344, 2220065227,2220114002,112902175, 544556242, 2220157071,2220228620,2220245018,2220262309,
2220304528,2220392547,19267586, 287572059, 2220425282,2220458022,116883483, 2220477284,2220556318,2220589112,2220623538,408420362, 2220664977,2220920161,2220967112,
- 2221009042,1187333010,2221080619,2221113486,1190494316,2221156499,2221212182,2221254804,43532290, 2221309974,2221330287,2221391903,6374825, 2221408258,265601052,
+ 2221009042,1187333010,2221080619,2221113486,1190494316,2221156499,2221212182,2221254804,43532290, 2221309974,2221330287,2221391903,6374825, 2221408258,265601052,
2221435029,2221523028,2221555722,2221572112,2221588501,289046557, 2221615254,2221719659,232079372, 2221752842,30523787, 1820509214,2221785094,2221801512,2221817877,
- 1792524290,2221834322,2221877399,1645611604,2221999494,2222063698,1913964349,900376728, 2222106777,2222446459,2222522671,2195815, 2222556244,2222604767,371605542,
+ 1792524290,2221834322,2221877399,1645611604,2221999494,2222063698,1913964349,900376728, 2222106777,2222446459,2222522671,2195815, 2222556244,2222604767,371605542,
2222637058,199573510, 2222658453,2222745754,427135350, 726695948, 1126039564,2222866891,2222915808,2222953824,2223031708,2223079857,2223120101,2223178216,2223211367,
2223243274,2223260123,2223294432,2223342456,2223391191,2223423947,2223473400,189464588, 2223508867,2223554626,2223597723,2223685731,2223718689,2223752060,2223800386,
- 2223840595,222674970, 136069151, 2223909020,338150421, 7176233, 2223981003,2224037422,2224081864,260457703, 274006028, 2224148590,2224193558,2224210004,216973333,
- 2224243147,2224292361,2224326283,2224391106,2224433309,305430584, 2224613534,6619436, 2224767519,147243311, 2224816130,57376789, 1921381, 2224832550,120799270,
- 2224848898,167985251, 2224866965,2224941215,339231123, 2225226283,2225259343,2225292111,2225324556,48676901, 2225367200,2225596577,32833538, 2225701290,45023263,
- 2225733658,1262143971,2225750863,2225782820,2225799170,2225815563,532021250, 2225831995,42434600, 2225865007,163020916, 2225897578,2225979402,2225995835,497336331,
+ 2223840595,222674970, 136069151, 2223909020,338150421, 7176233, 2223981003,2224037422,2224081864,260457703, 274006028, 2224148590,2224193558,2224210004,216973333,
+ 2224243147,2224292361,2224326283,2224391106,2224433309,305430584, 2224613534,6619436, 2224767519,147243311, 2224816130,57376789, 1921381, 2224832550,120799270,
+ 2224848898,167985251, 2224866965,2224941215,339231123, 2225226283,2225259343,2225292111,2225324556,48676901, 2225367200,2225596577,32833538, 2225701290,45023263,
+ 2225733658,1262143971,2225750863,2225782820,2225799170,2225815563,532021250, 2225831995,42434600, 2225865007,163020916, 2225897578,2225979402,2225995835,497336331,
1144455234,926302246, 2226029081,1461207078,2226101203,131892065, 2226153634,2226192399,10371079, 377978892, 2226219171,2226257958,391970838, 70582301, 2226274311,
2226290825,2226307084,1988263977,2226333860,2226604420,967360524, 2226667560,2130019, 1013317654,2226694309,2226749450,2226765866,1328693267,2226792614,2226833876,
628097081, 2226865061,2226898249,56115202, 2226956455,2227012906,2227061169,2227093560,2227126314,51675172, 1549140020,2227153064,2227312253,2227357984,2227404829,
@@ -4254,26 +4249,26 @@ static const unsigned int DictNodes[84251] =
2228585074,72908809, 2228633817,2228676783,105392304, 2228699148,2228715657,1949830, 2228732117,8994819, 9207811, 2228764681,2228781057,2228797577,2228813825,
2228830342,11059201, 2228846805,2228879372,2228895881,2228912154,2228928646,2228944917,2228961395,2228977700,2228994183,2229010472,2229026948,2229043231,2229059602,
2229075984,2229092482,8159247, 2229119153,12648583, 2229158025,2229174284,2229190790,33619994, 2229207069,32325643, 2229223434,2229239817,348618868, 2229256815,
- 103596050, 2229288963,2229305360,2229321746,66682885, 2229338152,295731211, 2229364914,312197357, 2229650932,54657030, 114393109, 2229708979,1782218808,56066337,
+ 103596050, 2229288963,2229305360,2229321746,66682885, 2229338152,295731211, 2229364914,312197357, 2229650932,54657030, 114393109, 2229708979,1782218808,56066337,
2229748171,2229803181,2229856436,1966091, 16597295, 2229944623,2229978076,2230009868,2230026269,2230042842,2230075433,2230091797,2230108202,2621476, 2230130597,
- 2230184117,2230413494,2230436165,2230479031,2230517766,29163527, 2230534150,933895, 2230550663,2230567043,2230583319,72384643, 2230599709,2230616083,79495189,
+ 2230184117,2230413494,2230436165,2230479031,2230517766,29163527, 2230534150,933895, 2230550663,2230567043,2230583319,72384643, 2230599709,2230616083,79495189,
2230632733,29376515, 2230665228,2230683353,155631635, 2230714374,2230730759,2230757560,2230796501,2230829085,2230845459,2230862042,2230894633,2230616121,2230911485,
2230964598,57606172, 2230992901,2231016348,2231058461,2231074835,2231091513,2231124502,89047049, 2231167161,7585811, 117751819, 2231222313,98418717, 2231238685,
2231255045,3850258, 2231271426,28344346, 2231298234,2231336982,2231353382,2231369730,113115137, 2231386119,2231402507,212877428, 2231418920,88162361, 2231435271,
1318862876,2231462075,2231599969,2231634332,2231681055,2231697409,2231713813,2231730178,2231746562,271925286, 2231763478,2231795733,17924127, 2231813597,2231844895,
- 2231861286,74661916, 2231888060,2231926787,2231943194,1997602823,2231959553,2231976073,2231992450,1949699, 2232008839,2232025225,1114121, 2232051901,314130470,
- 2232090664,2232107046,33177715, 2232123408,2232139788,2232156191,99483674, 2232182974,2232254473,2232270985,2232287858,111919219, 19431426, 2232336514,1949705,
+ 2231861286,74661916, 2231888060,2231926787,2231943194,1997602823,2231959553,2231976073,2231992450,1949699, 2232008839,2232025225,1114121, 2232051901,314130470,
+ 2232090664,2232107046,33177715, 2232123408,2232139788,2232156191,99483674, 2232182974,2232254473,2232270985,2232287858,111919219, 19431426, 2232336514,1949705,
2232363199,2232434901,2232477888,2232516916,339224768, 2232549381,2232565765,6602764, 2232582149,2232598540,571097100, 2232615687,2232647691,9535495, 2232674497,
- 2232729605,36306972, 2232746298,107462697, 2232778793,2232795157,2232811542,198721576, 2233073666,1710030863,2233100483,2233369067,2233401396,2233434219,59785244,
+ 2232729605,36306972, 2232746298,107462697, 2232778793,2232795157,2232811542,198721576, 2233073666,1710030863,2233100483,2233369067,2233401396,2233434219,59785244,
2233469559,2233532476,2233615907,2233663971,2233697169,1405141002,2233748925,2233795496,2075672614,1917550607,2233827343,2233845153,47284230, 2233899523,2233942047,
2233958459,2234000197,2234056725,2234074240,2234122306,2234165444,2234263749,51314704, 2234356451,2234401200,1368031665,2234434889,283197451, 2234493126,2234619185,
250396693, 2234689735,2234777737,2234794007,24838276, 2234820808,2234876336,2234909591,2234959177,2235006998,2235023376,7144257, 2235050185,2235154442,2235170837,
2235187630,2235237270,2235285542,2235302798,1245316005,2235374804,538116122, 2235465810,2235508938,2235629599,2235645962,2235662338,123404326, 2235678722,2235697374,
2235744689,220266515, 163317426, 2235787467,2235861918,2235908107,505544720, 2235934924,2235990115,2236022886,2236055855,2236088366,2236138281,2236171002,2236203039,
- 33783818, 2236220152,1012088844,2236253007,2236295373,2236335593,148799791, 2236393678,2236664180,2236727324,139984908, 2236744906,2236794412,2236825654,140247849,
- 1461911554,2236858406,254427167, 2236885199,2236967120,2237071831,2237104146,36339843, 2237120566,2237163729,2237284884,427687938, 52674596, 7962664, 295731226,
+ 33783818, 2236220152,1012088844,2236253007,2236295373,2236335593,148799791, 2236393678,2236664180,2236727324,139984908, 2236744906,2236794412,2236825654,140247849,
+ 1461911554,2236858406,254427167, 2236885199,2236967120,2237071831,2237104146,36339843, 2237120566,2237163729,2237284884,427687938, 52674596, 7962664, 295731226,
2237336440,2237383115,1200130070,2237442258,708379103, 2237524179,2237628492,298958932, 2237661234,2237695905,2237743163,944635930, 2237781329,2237884628,2237956112,
- 2237972490,2237989361,2238070901,2238103554,2238119974,2238136951,2238169104,283967490, 2238185538,2238218286,2238268575,607289370, 2238310613,2238629382,153567260,
+ 2237972490,2237989361,2238070901,2238103554,2238119974,2238136951,2238169104,283967490, 2238185538,2238218286,2238268575,607289370, 2238310613,2238629382,153567260,
2238682649,234405917, 2238726635,2238769366,2238892404,2238955979,123962398, 2239004710,1933369, 2239023042,2239092042,2239178967,2239284309,2239315970,1550286916,
2239332358,2239348767,2138619942,2239375576,2239483714,651509789, 2239529977,2239612073,2239648078,2239703257,2239890931,2239932634,3178522, 2240004555,2240059300,
2240111425,2240172168,1287291913,2240203470,2240324222,2240397742,2240451914,2240528390,2240544780,2240561162,2240578167,555402270, 2240611402,2240643110,1982480396,
@@ -4281,19 +4276,19 @@ static const unsigned int DictNodes[84251] =
172539970, 253624347, 2241265806,2241299465,457539615, 2241341664,6193158, 126763841, 2241463362,692453600, 2241528841,593117186, 2241571041,2241627340,2241675266,
1949732, 420879240, 268190729, 2241691653,2241708167,933898, 2241734882,2241822729,2241849571,23101574, 2241888262,2241905570,2241937415,2241964260,2242003466,
2242046181,2242232329,2242248841,2242275558,20283507, 2242347014,2242363421,2242390247,2242428935,1678917651,2242445746,1464778759,2242478082,62472195, 2242494749,
- 255737868, 2242537704,2242625749,2242658467,2242691078,2242707485,28327977, 2242734313,2242854918,2242871325,2242887721,2242904106,2242920451,2242936839,28377107,
+ 255737868, 2242537704,2242625749,2242658467,2242691078,2242707485,28327977, 2242734313,2242854918,2242871325,2242887721,2242904106,2242920451,2242936839,28377107,
255262761, 28016666, 2242963690,8390364, 2243182782,2243248265,111886470, 2243264702,136118845, 1521926282,2243330054,2243346461,107462697, 2243373291,2243413453,
2243444751,2243461251,211550347, 2242805781,286834728, 2243477621,2243510277,105201795, 30113794, 2243526661,2243543047,2243559436,2243575827,17448986, 2244094189,
2244231288,288620555, 178815096, 2244258030,2244307183,18956310, 2244329481,2244345875,2244362377,2244378639,2196059, 2244399093,2244427805,2244444196,1710735494,
2244460575,2244477065,191381509, 2244494242,902135945, 289161231, 2244526211,2244542595,1785865, 2244995312,907478071, 2245142769,2245339378,253624609, 2245478238,
- 158254640, 2245542431,2245591343,2245634291,2245716212,2245805184,2245858951,2245945589,2246033462,2246068129,2246115354,297287682, 2246131789,2246174966,728138921,
+ 158254640, 2245542431,2245591343,2245634291,2245716212,2245805184,2245858951,2245945589,2246033462,2246068129,2246115354,297287682, 2246131789,2246174966,728138921,
2246265667,2246338807,2246492170,553041974, 226574420, 2246519032,2246672468,2246705178,1450197201,2246721576,180404250, 2246721552,2246738007,169322745, 2246787154,
2246830330,2246903015,2246951848,2246994171,2247098370,2247114762,2247131167,2247147530,833388560, 2247174396,169331457, 293191695, 193708335, 2247303948,2247411457,
2247459941,1784332354,2247508833,351911957, 2247540776,2247557132,2247573612,733890338, 2247614589,2247665917,2247993598,2248081462,2248114214,2248130992,2248164436,
2248222975,2248376322,2248395185,1215053830,2248442159,1178615845,2248485120,2248671713,184396033, 110298713, 2248720921,2248786912,2248845570,2248918046,2248956767,
2249025795,2249244674,2249261082,2850844, 2249277466,2249293836,2249310209,701169704, 2249326618,2249342978,2249359375,2249375766,80823320, 2249392134,2249408528,
2038497301,2249424955,2249457704,2249474067,1090961446,2249492058,2249523226,219529258, 2249550084,2249605207,2249654575,2249688571,2249736279,2249792955,2249851772,
- 121339941, 2249902676,2249949268,2249982255,2250017540,2250069917,19447818, 2250145851,2250178863,2250212463,443645958, 2250245449,2250293562,2250336517,361431887,
+ 121339941, 2249902676,2249949268,2249982255,2250017540,2250069917,19447818, 2250145851,2250178863,2250212463,443645958, 2250245449,2250293562,2250336517,361431887,
2250369286,2250523225,2250555444,2250594520,2250647815,2250778888,2250853980,2250916143,2250948675,2251030540,2251046950,131334225, 568016978, 2251073801,2251112450,
2251128842,747356276, 2251146108,2251204874,2251434251,2251522955,878577409, 7144289, 2251587627,2251620409,2251636795,2251669514,2251685890,2251702328,2251735050,
8390763, 2251751961,2251827468,2251883256,2251915274,2251931702,2251965263,2251999615,713523284, 2252073229,2252237070,2252318991,2252374469,2252407243,2252455992,
@@ -4302,19 +4297,19 @@ static const unsigned int DictNodes[84251] =
2253766740,2253799450,2253817124,2253865263,2253898761,2253930498,2253947559,1421164565,200492062, 2253990164,2254127114,2254146015,359841899, 2254198646,2254252309,
2254465302,2254618640,2254635023,2254651394,2254667814,2254684162,457490451, 2254700555,2254716968,2254733322,3850269, 75513887, 2254750190,43237413, 2254782480,
56311848, 2254798850,2254819856,963379221, 2254874903,166346781, 2254930357,2254962719,55017509, 2254979309,653099020, 2255011852,168935462, 2255028264,2255044629,
- 51494951, 2070036502,2255066627,2255214917,2255291592,2255323162,1247494228,1633636162,2255339579,140607965, 2255379999,1180582203,2147825, 2255421462,189071362,
+ 51494951, 2070036502,2255066627,2255214917,2255291592,2255323162,1247494228,1633636162,2255339579,140607965, 2255379999,1180582203,2147825, 2255421462,189071362,
285343968, 442040609, 2255448344,2255603017,385646634, 2255652501,2255718651,2255783801,2255831062,162555920, 2255857945,70074560, 2256234778,2256470038,2256486402,
- 2254880778,2256503087,497319946, 2256535598,7094414, 2256584734,2256619070,2256683080,2256748565,2256764950,2256781314,2256798923,2256830749,2256863234,131940363,
+ 2254880778,2256503087,497319946, 2256535598,7094414, 2256584734,2256619070,2256683080,2256748565,2256764950,2256781314,2256798923,2256830749,2256863234,131940363,
2256880098,232325220, 2256978062,2257011147,2257070363,2257142235,552452134, 2257174999,2040463379,2257207318,2257223682,2257240171,1117071644,794361915, 2257283357,
2257407882,2257453143,23856034, 2257512734,2257567790,628981776, 2257627423,2257715231,803192851, 183369766, 170803259, 2257731671,8396345, 3473427, 2257781826,
2257846303,2257862662,339034118, 2257879099,320456129, 2257912715,2257977365,2257993740,173965343, 2258010415,2258053408,2258108719,2258143540,2258232129,2258290051,
- 2258446625,1245593602,2258520624,2015238, 1510768706,2258567255,251592833, 2258626850,2258815501,54296592, 2258867216,1606221883,2258921763,2258976811,480395323,
+ 2258446625,1245593602,2258520624,2015238, 1510768706,2258567255,251592833, 2258626850,2258815501,54296592, 2258867216,1606221883,2258921763,2258976811,480395323,
2259010136,124715479, 259080651, 2259052836,2259364133,170885229, 2259484703,86638621, 124862496, 1007697922,2259503075,2259599843,2259641029,2259697763,2259731283,
1471432225,2259806502,2260035879,372311271, 2260074799,2260107276,1526645651,2260125320,18606376, 2260183337,1332095274,2260241503,2260341284,2260396331,2260484567,
- 866910210, 56000514, 2260520370,515620895, 2260609324,8399149, 2260783200,2260838702,2260910539,3244113, 2260959253,2260976563,2261008415,2261024778,92143638,
- 2261046622,2261106698,119998943, 2261123074,1450205359,2261139993,2261207526,140247145, 2261248303,2261352980,2261401702,2261442335,2261501576,2936994, 1933378,
- 2261551563,2261608752,2261788977,2261862568,45908004, 31424524, 2261942809,2262007820,534609958, 2262024213,2262040592,122568715, 2262063141,2262133042,557433687,
- 2262238031,2262280499,2262336554,2262436606,2262466562,561823754, 2262486555,2262548486,73531397, 2262564876,2262581284,19267596, 2262598392,2262630421,29622284,
+ 866910210, 56000514, 2260520370,515620895, 2260609324,8399149, 2260783200,2260838702,2260910539,3244113, 2260959253,2260976563,2261008415,2261024778,92143638,
+ 2261046622,2261106698,119998943, 2261123074,1450205359,2261139993,2261207526,140247145, 2261248303,2261352980,2261401702,2261442335,2261501576,2936994, 1933378,
+ 2261551563,2261608752,2261788977,2261862568,45908004, 31424524, 2261942809,2262007820,534609958, 2262024213,2262040592,122568715, 2262063141,2262133042,557433687,
+ 2262238031,2262280499,2262336554,2262436606,2262466562,561823754, 2262486555,2262548486,73531397, 2262564876,2262581284,19267596, 2262598392,2262630421,29622284,
2262646800,2262663187,84705302, 2262680432,2262728730,2262745490,1704362010,2262811817,2262849802,2262876172,2262892652,2262935860,138018903, 2263034165,2263107593,
2263172425,2263220707,2263263542,2263515573,2263548917,2263623991,2263681254,2263728131,9207865, 2263746520,2263820600,19267613, 2263959279,19267613, 2264023069,
207618503, 2264040386,2264072624,2264104986,2264121647,2264154149,229949480, 1558921647,2264170955,2264219688,2264236038,478888371, 2264252719,1035370994,2264295737,
@@ -4327,39 +4322,39 @@ static const unsigned int DictNodes[84251] =
2267629433,2267676694,2267693068,2267709547,1618411548,2267744224,2267791370,2267809570,2267840533,2267856922,279904258, 2267874943,2267973371,480444503, 2268020752,
2268037131,2268053506,246087690, 2268073718,119047714, 2268178757,2268349263,2268391750,2268446773,2268490055,2268610582,2268626946,2268643338,303611933, 1566654504,
2268665491,2268726327,2268768584,2268922337,2268971023,241942559, 2268988828,2269037391,2269069549,2269102514,2269135740,2269184010,1265631295,1249132556,2269210953,
- 2269473098,2269544450,2269560838,200589324, 2269577453,2269611344,896533240, 2269663768,8603584, 2269708525,2269741068,1035355057,2269758453,2269824298,155516957,
- 2269875599,2269938709,2269990457,2270056116,2270128459,162589004, 2270249017,148504578, 2270265397,2270299769,2270347944,2270380139,2270415319,2270461954,404570131,
+ 2269473098,2269544450,2269560838,200589324, 2269577453,2269611344,896533240, 2269663768,8603584, 2269708525,2269741068,1035355057,2269758453,2269824298,155516957,
+ 2269875599,2269938709,2269990457,2270056116,2270128459,162589004, 2270249017,148504578, 2270265397,2270299769,2270347944,2270380139,2270415319,2270461954,404570131,
2270480222,163735885, 2270554446,2270625927,46694429, 2270642188,244058106, 2270658581,103448613, 2270682133,2270734671,1039040534,2270849360,2270898513,2270971251,
1708900362,2271002639,94011430, 2271019123,2271035397,62357509, 376324133, 2271504722,2271805446,138313744, 2271832403,2271871435,2271920168,2271936815,2271970205,
- 2272052192,2272100362,1859862567,2272117195,2272176468,236077061, 2272362603,2272396660,2272444950,2272487765,2272542758,2272559135,2272575509,2272591884,950009882,
+ 2272052192,2272100362,1859862567,2272117195,2272176468,236077061, 2272362603,2272396660,2272444950,2272487765,2272542758,2272559135,2272575509,2272591884,950009882,
2272608296,1738424326,2272624706,2272657632,2272700758,2272755753,2272772127,2272788506,273334283, 2272815447,2272905483,2272962904,2273159513,937607178, 2273223496,
2273296816,2273329610,2273365266,2273427970,1241071642,2273460236,2273476629,465076229, 2273493425,2273527196,2273575428,2273632430,2273722379,2273738754,1666973717,
184811558, 2273756917,2273805406,2273853442,2273869850,2273887115,2273952553,2273984533,2274000927,915472400, 2274017282,1830109215,2274044250,2274197550,2274246715,
2274290011,2274377835,2274411421,2274492444,2274508838,1850295234,2274526097,2274574777,943538182, 2274623530,116277258, 2274639898,945209803, 2274657556,2274705467,
182566938, 2274748764,2274803734,802570256, 2274821608,1744667669,2274869250,843382821, 2274896221,2275034881,2275083199,2275115970,2275148210,22069269, 2275191134,
2275284180,1762541570,2275338591,2275459159,2275509089,190645057, 2275547084,2275617120,2275688557,2275721262,2275770378,404897821, 2275786798,2275839989,2275868701,
- 2275885075,2275901442,704135174, 2275928417,2276048934,307298336, 52150301, 2276066225,2276354403,2276436092,2276474911,801030165, 2276491553,2276526501,642695189,
+ 2275885075,2275901442,704135174, 2275928417,2276048934,307298336, 52150301, 2276066225,2276354403,2276436092,2276474911,801030165, 2276491553,2276526501,642695189,
2276573224,121356314, 2276590764,2276649316,2276737785,2276770251,1665811346,2276820931,2276868117,2276884910,2276933638,2276950082,2276993381,2277081114,2277097514,
2277113922,588218456, 2277147692,658620435, 47398924, 2277195807,2277212166,938049557, 2277228547,92749855, 2277255526,2277376031,2277392441,164413471, 2277410292,
- 2277457936,2277474323,2277490991,412876908, 2277523475,2277539880,2107752486,2277556683,2277605484,2277642103,2277752898,2277788719,2277834762,2277851178,341819414,
- 2277867975,2277919704,1858502662,294633482, 2277965830,199376962, 2277992807,2278146058,2278162463,2278180248,2278228427,2278277579,2278327198,2278359078,55869478,
+ 2277457936,2277474323,2277490991,412876908, 2277523475,2277539880,2107752486,2277556683,2277605484,2277642103,2277752898,2277788719,2277834762,2277851178,341819414,
+ 2277867975,2277919704,1858502662,294633482, 2277965830,199376962, 2277992807,2278146058,2278162463,2278180248,2278228427,2278277579,2278327198,2278359078,55869478,
2278375505,2278408204,2278424595,2278440981,2278458236,2278517096,2278555679,2278572042,2278588475,2278621250,2278653962,2278671916,2278703328,2278746473,2278883359,
2278899750,2278916162,2278950057,144326687, 2278981663,2278998467,2279030824,2279047194,734871611, 2279063598,2279112735,1735671814,1393590291,195919903, 2279129128,
2279145538,2279178339,2279211496,2279243805,2279260172,842465306, 2279277353,2279309333,112508968, 2279325736,2279342099,2279358485,2279375740,2204779488,2279424012,
- 2279440491,2279473612,2279506827,2279573971,2279620620,2279637018,2279657880,2279742276,2279800834,2279817237,2279833666,2279867360,2279915531,2279931935,147505162,
+ 2279440491,2279473612,2279506827,2279573971,2279620620,2279637018,2279657880,2279742276,2279800834,2279817237,2279833666,2279867360,2279915531,2279931935,147505162,
2279948319,2279964693,2279981899,2280046598,2280062997,2280079362,802111526, 2280095804,2280178718,1742307370,272793610, 2280212799,2280243632,229654554, 2280286570,
84738076, 2280357947,2280390682,172982356, 2280410281,665993247, 2280456258,2280488986,2280505360,2280521734,2007449621,2280538171,2280570899,2278178854,2281062802,
70058557, 2281134895,2281226274,2281342987,368099796, 2281406507,2281441243,2281488851,2281539112,2281603960,206668193, 2281653071,2281695596,633044997, 2281810285,
211189776, 2281900314,2282006894,2282045743,146358314, 2282088815,2282291216,978485274, 383844383, 982466571, 2282307615,2189737994,2282328200,2282356757,2282373967,
2282416496,2282455121,2282487824,135577636, 2282505375,2282537002,2282553354,2282570635,2282635276,2282651686,2282668048,116277263, 2282686601,2282766478,2282809713,
6622071, 2282864782,2282897467,2282930713,2283006322,2283061336,936755229, 2283104627,2283170164,2131396, 2283309242,2283344999,2283373438,2279079948,2283415925,
- 2283470864,2283487289,2283503628,1973567514,2283520026,2283536415,2283553978,2283586569,2283618841,2283684766,25559491, 2283727222,1917462, 2283782190,164118538,
+ 2283470864,2283487289,2283503628,1973567514,2283520026,2283536415,2283553978,2283586569,2283618841,2283684766,25559491, 2283727222,1917462, 2283782190,164118538,
2283832161,2283864118,2283902245,312033757, 2283956599,125583820, 93978652, 2284027988,2284062265,2284169592,2284218745,575324210, 2284284282,2284372398,2284423593,
- 2284454320,436764682, 2284486663,2284506760,2284585044,335462507, 2284622888,2284693883,2284766184,2284814639,2190753821,126697510, 2284849943,2284912650,591118870,
+ 2284454320,436764682, 2284486663,2284506760,2284585044,335462507, 2284622888,2284693883,2284766184,2284814639,2190753821,126697510, 2284849943,2284912650,591118870,
2284929326,2284972412,508608566, 2285211603,2285267325,774963634, 2285339516,2285388668,610436652, 2285436987,2285469722,2285486122,648298508, 2285510704,2285568019,
942784533, 2285586237,2285635225,468003198, 2285682690,2285699100,2285715494,2285731871,116244486, 2285748283,2285781030,112476200, 2285797378,2285813771,2285830175,
997998602, 2285857151,2285994431,2286026773,85098512, 2286044150,2286077757,2286126089,2286160765,3473439, 2177384907,2286209950,2286256609,2286306308,2286374436,
- 2286420981,984596522, 2286486497,2286518293,2286535581,2286616642,2286653326,2286698536,122683398, 2286714925,2286750859,2286829589,2286848634,2286895114,192479261,
+ 2286420981,984596522, 2286486497,2286518293,2286535581,2286616642,2286653326,2286698536,122683398, 2286714925,2286750859,2286829589,2286848634,2286895114,192479261,
2286911947,2286961090,2286993429,2287009879,2287058950,2287075350,2287092359,2287140906,2287157260,2287173658,2287190018,2287206456,2287239255,286408763, 2287298944,
2287386662,2287404520,2287452226,812875805, 2287484956,2287501343,943521798, 2287518155,2287577473,2287741314,2287856003,679624733, 536969505, 366116867, 2287937924,
2288036229,2288123930,680083458, 2288140591,2288174439,66814108, 2288249222,2288369690,2288386088,2288402442,2288418858,2288435206,2288451612,2288467980,1313357827,
@@ -4369,22 +4364,22 @@ static const unsigned int DictNodes[84251] =
2289975378,2290008539,2290041291,2290090026,1119502377,2290106827,2290155579,2290189097,2290231690,2290297227,2290335773,923926554, 2290615209,312229995, 2290663915,
2290706829,2290810973,2290860064,2290893219,2290925627,2290968974,2291073040,2291089419,2291105803,2291122207,2291138566,2291154950,2291171330,1411137562,2291187714,
2291204122,1685603825,2291227304,2291318877,2291367995,283721870, 2291411343,2291483835,1253409200,2291542416,2140996520,194084876, 2291630972,588611640, 2291680744,
- 2291728400,117424133, 2291747197,2291837329,2291959129,843399199, 2291990568,2292006938,2292023302,1394491404,116376312, 2292050322,2292302892,2292350992,116064294,
+ 2291728400,117424133, 2291747197,2291837329,2291959129,843399199, 2291990568,2292006938,2292023302,1394491404,116376312, 2292050322,2292302892,2292350992,116064294,
2292367444,2292400154,111542282, 2292416538,2292432911,775897104, 2292449361,2292484507,2292558227,2292646417,2292678710,2292711450,845725715, 2292727854,2292776998,
2292793376,2292836756,2292908098,152191078, 2292941103,2130027, 2292977718,2293033365,2293121046,803029003, 2293137467,2293170284,2293204797,2293252547,2293286008,
- 2293317658,780746764, 2293334032,2293350429,2293366824,2293383187,2293400552,2293448770,2293481943,2293514282,977289232, 2293541270,112754710, 2293727339,769754457,
+ 2293317658,780746764, 2293334032,2293350429,2293366824,2293383187,2293400552,2293448770,2293481943,2293514282,977289232, 2293541270,112754710, 2293727339,769754457,
2293760913,2293809211,4653138, 2293852567,2293974169,2294022396,1547632699,358940684, 2294054924,140247139, 2294071828,683589651, 2294120479,2294137263,2294169657,
2294185996,147652618, 2294213016,1744044042,714244136, 252281320, 2294376857,2294540698,2294661579,2294711264,2294759434,2294775847,2294808642,2294841568,2294874122,
362201107, 2294890955,2294939704,2294983067,156876899, 1039499285,2295054338,2295070730,190366327, 2295097756,2295251870,2295294365,2295365663,2295382032,2295399649,
773882331, 2295447553,2295463976,1047789599,2295482238,2295513547,343301119, 2295562842,2295595027,2295611413,649723906, 1121976386,2295638430,2295867807,2296021002,
2296040100,2296104424,2296153327,2296185950,2296244640,2296349590,2296397870,2296447004,2296463390,116850714, 2296496417,2296539553,170803671, 108349926, 2296668330,
- 2296709126,849510419, 2296726416,2296758293,226263499, 2296774722,2296808364,186056797, 2359729, 2296883618,2296987660,2297004070,2297021928,2297070894,727859266,
+ 2296709126,849510419, 2296726416,2296758293,226263499, 2296774722,2296808364,186056797, 2359729, 2296883618,2296987660,2297004070,2297021928,2297070894,727859266,
1056243733,2297120571,2297167884,2297185431,2297233867,2297288217,2297332183,649118156, 2297375139,2297719204,3227757, 2297872984,2297905162,244170773, 2297924497,
- 2298025207,2298069856,2298134585,2286649360,2298150968,2298194341,2298298905,139477514, 2298363925,147652639, 2298381195,1970881318,2298447348,2298495030,114114565,
+ 2298025207,2298069856,2298134585,2286649360,2298150968,2298194341,2298298905,139477514, 2298363925,147652639, 2298381195,1970881318,2298447348,2298495030,114114565,
2195770, 2298528203,2298585654,2298691638,2298724383,2298740746,2162716, 2298757226,244221425, 2298849702,2298964391,2299029928,1126695021,802095115, 2299167954,
2299199490,188497941, 2299226537,1891877465,2299314188,2299330598,1933314, 2299357610,25560085, 2299462154,145309722, 1830437697,396279827, 2299505067,2299559964,
2047246348,213319699, 1294123855,2299577663,3686438, 2299652524,2299756563,2299772968,2299790456,2299822383,2299854860,2299872286,2299912362,2299953154,2299969546,
- 2299985951,2300003216,2300035531,2300084236,978354186, 2300111277,2300373422,2300478961,2300510210,114409514, 2300527500,201376587, 2300576033,2300608538,112476191,
+ 2299985951,2300003216,2300035531,2300084236,978354186, 2300111277,2300373422,2300478961,2300510210,114409514, 2300527500,201376587, 2300576033,2300608538,112476191,
127257560, 2300635567,2300723308,2300756875,664289802, 2300821609,2300854731,2300903967,2300954427,2301002359,2301034536,2301050886,803323910, 2301067280,2301084457,
2301117263,2301149205,2301165599,1392706421,52609050, 1630781450,2301182058,2301266654,2301313090,2301356464,2301411384,2301444571,2301479412,2301526018,2301542943,
2301591609,2301610188,148635766, 2301651377,2301722664,122699814, 2301739029,2301756299,2301821835,2301886485,2301903695,2301935628,2301952006,776781830, 2301968916,
@@ -4393,36 +4388,36 @@ static const unsigned int DictNodes[84251] =
2302821158,2302853151,2302872352,2302935079,2302967864,648134662, 2303001100,2303033366,773570562, 228294672, 2303049787,118243357, 2303082517,2303108891,2303131688,
2303148491,6324250, 2303197655,2303232631,2303295519,2303311893,2303328322,734396432, 2303371701,2303470006,2303558894,423034892, 2303033356,2303590422,2303606853,
978501672, 2303643458,150569051, 2303909492,2303967808,2304000029,844464168, 2304016855,2304049218,261129490, 2304092600,2304245813,2304278547,2304294934,1289634695,
- 677381094, 612319270, 2304311324,2304327718,1199358411,2304348217,2304393282,2304436665,2304507961,2304524825,2304600506,2304655387,2304688613,2304787576,569115511,
+ 677381094, 612319270, 2304311324,2304327718,1199358411,2304348217,2304393282,2304436665,2304507961,2304524825,2304600506,2304655387,2304688613,2304787576,569115511,
2304819241,309559337, 2304846267,2304951185,2304999492,2305049873,2305098620,2305146911,2295054348,2305163285,2305180573,2305262476,2305311157,2305343947,2305393169,
77709328, 2305436092,2305518013,2305556501,2305572930,2305605634,2305622072,2305654871,2305704550,2305736811,2305769491,2305785868,2305812558,2305851426,2305976766,
2306031637,2306058687,2306130357,2306173376,2306228226,984252437, 2306244618,2306261431,2306294652,2288878476,2306343371,2306392738,450314268, 2306426344,2306475093,
45465640, 2306517441,2306676866,2306719770,2306736130,2306752568,2306795970,2306867240,1637351445,2306884628,124256715, 2306932796,2307014687,2307031050,2307048424,
- 846594067, 2307096595,2276556821,180977683, 2307123651,2307227659,2307244063,56492053, 1403617301,2307262197,2307309583,268582950, 2307336644,259260435, 800096258,
+ 846594067, 2307096595,2276556821,180977683, 2307123651,2307227659,2307244063,56492053, 1403617301,2307262197,2307309583,268582950, 2307336644,259260435, 800096258,
2307391507,2307407903,112476181, 2307424268,2307440666,2307457026,135004181, 2307484101,2307762630,2307851294,1201225794,217579551, 2307883037,2307902875,2307965528,
268828682, 2308008391,2308096038,282821083, 2308117954,182551288, 294780938, 124796939, 2308221384,2308300075,2308341798,2308358187,2308390994,2308434377,2308516298,
- 2308571223,2308630987,2308695321,358909377, 2308752374,2308784234,2308869927,2308916200,2308965277,2309046328,2309079046,1747976203,2309096617,2309128211,84721686,
+ 2308571223,2308630987,2308695321,358909377, 2308752374,2308784234,2308869927,2308916200,2308965277,2309046328,2309079046,1747976203,2309096617,2309128211,84721686,
2309155276,2309214582,2309243339,2309302733,676249619, 2309373979,2309406741,114409493, 2309423119,2309439500,2309455891,2309472277,2008776735,2309488671,2309505050,
2309521451,2309554219,2309588343,2309669624,2309702051,320734553, 2309734426,2309750794,2309768060,152944951, 2309816401,2309849134,2309908942,1551630348,2310062139,
2310094879,2310115184,345784341, 2310171013,2310259002,2310302159,2310390249,966524959, 2310449616,2310613457,774947417, 2310711762,2310824406,2310930453,2310947663,
152963069, 75464725, 2310990291,2311055828,124108812, 2311176706,929024893, 2311209419,1044562849,2311268821,2311356716,2311399894,107479042, 2311475197,2311537640,
- 2311589984,2311634946,2311651366,2311667743,2311685008,2311717323,2311766054,2311793111,2311842264,2311924185,2311979639,2312011807,2312028176,2312044554,354369538,
+ 2311589984,2311634946,2311651366,2311667743,2311685008,2311717323,2311766054,2311793111,2311842264,2311924185,2311979639,2312011807,2312028176,2312044554,354369538,
2312060959,2312077328,2312093706,2312115673,2312176528,2312208465,2312247785,2312340719,476923039, 2312372331,2312406404,2312470554,2312486949,282804290, 2312504143,
2312536085,2312553448,2312612314,2312732763,2312765456,2312788166,2312841691,2312972764,1502101620,2313028623,2313076742,2313093141,354369548, 2313119911,2313185757,
- 267534365, 2313242044,136003613, 2313289828,2313323879,2313398750,2313457146,402194464, 2313503567,1434960401,2313546207,2313732138,2313748501,2313764886,628555795,
+ 267534365, 2313242044,136003613, 2313289828,2313323879,2313398750,2313457146,402194464, 2313503567,1434960401,2313546207,2313732138,2313748501,2313764886,628555795,
2313788021,2313846794,2313863950,2313895955,2313912330,2313928745,2313945107,7634956, 1798490273,2313972192,641826835, 2314103265,2314223637,3309605, 2314240041,
- 851640330, 2314256405,2314272805,1371897867,2314290206,1139638300,2314324129,2314354729,72646692, 2314375693,2314421095,2314453108,336855062, 2314469402,883998732,
+ 851640330, 2314256405,2314272805,1371897867,2314290206,1139638300,2314324129,2314354729,72646692, 2314375693,2314421095,2314453108,336855062, 2314469402,883998732,
2314485796,2314502182,496566313, 2314529250,2314627555,2314665994,2314682390,93700212, 2314698764,2314715173,99876875, 2314733438,2314764316,2314780708,2314799529,
2314840548,789938423, 2314882234,2314911780,2314938853,2314978418,2315037158,2315102695,340273640, 2315141161,129466406, 2315157523,724713484, 2315175786,2315206684,
- 4112420, 2315225671,2315272218,59375628, 97533973, 1135902762,2315299305,2315479530,2007400464,551814153, 271400966, 2315568684,2315599882,2315616284,642154532,
+ 4112420, 2315225671,2315272218,59375628, 97533973, 1135902762,2315299305,2315479530,2007400464,551814153, 271400966, 2315568684,2315599882,2315616284,642154532,
1119502357,2315643371,2315872701,4309092, 2315911270,2315954668,2316058708,140247873, 1249165324,2316097651,30966237, 2316125047,2316156954,2316173343,2316189715,
2316206383,29032604, 2316238859,2316255234,2316271637,2316288847,2316320795,2316364152,2316413421,2316468253,2316491764,1095335946,2316518467,2316551005,1140047894,
1140342791,2316582953,2316599306,2316566644,2316615698,38830217, 2316642798,2316697610,303300618, 2316716123,11665539, 2316790255,2316861494,2316904944,2316959756,
- 2316976154,118521872, 2316993907,2317025296,2317041675,2317058107,128581653, 2317101553,2317140084,2317156390,2359324, 2317183474,2317304322,2317347315,184598635,
- 2317468126,2317539998,2317565964,2317582346,2317598749,111607834, 157499444, 2317615522,2317648752,2317698189,2317747341,2317795415,2317855041,2317893653,570884134,
- 641826854, 2317920756,2318019061,5325706, 2318068214,2318175134,2318221371,2318254102,1829912587,2318674424,131334368, 5310471, 2318820467,2318985721,5308955,
+ 2316976154,118521872, 2316993907,2317025296,2317041675,2317058107,128581653, 2317101553,2317140084,2317156390,2359324, 2317183474,2317304322,2317347315,184598635,
+ 2317468126,2317539998,2317565964,2317582346,2317598749,111607834, 157499444, 2317615522,2317648752,2317698189,2317747341,2317795415,2317855041,2317893653,570884134,
+ 641826854, 2317920756,2318019061,5325706, 2318068214,2318175134,2318221371,2318254102,1829912587,2318674424,131334368, 5310471, 2318820467,2318985721,5308955,
2319091611,2319155714,148144149, 1691516984,2319198714,1181597722,850274811, 2319256120,2319297020,2319368230,50200578, 2319384630,649314306, 2319428093,2319582544,
- 2319630365,2319647645,2319729177,2319794202,2319810592,2319854078,2319908890,2319925277,2319941719,2320001535,2320050688,2320285803,2320329217,2320394754,249282576,
+ 2319630365,2319647645,2319729177,2319794202,2319810592,2319854078,2319908890,2319925277,2319941719,2320001535,2320050688,2320285803,2320329217,2320394754,249282576,
2320613908,2320662554,15073292, 2320689667,2320777243,2320811971,649923194, 2320869892,2320924718,2320973834,114114589, 2320990687,2321033733,2321219670,2321255445,
2321334300,2321350658,2321377798,2321420571,2321465356,152971783, 2321481812,2321514506,284966918, 2321533255,2321590792,6193174, 2321645659,2321689097,2321825859,
2321907805,778290099, 1562627906,2321956876,2321980099,2322065930,2322188882,2322253238,2322311691,2322393612,570083511, 2322481583,2322513960,2322530342,1199374423,
@@ -4431,22 +4426,22 @@ static const unsigned int DictNodes[84251] =
133382154, 62341126, 2323491343,2323556880,2323693675,2323728356,51068940, 1007992924,2323769873,1717403667,619298897, 2323868178,2323972106,2323988508,2324005389,
2324064787,176570399, 2324152386,501302213, 2324195860,2324392469,436732664, 2324482961,2324579212,126043938, 2219919297,322846732, 2324628456,2324687382,2324873308,
1325416488,2324906068,2324940188,2324987920,27623471, 567984157, 1896595510,2325015063,199442867, 2325104249,2325151754,210633737, 2325178904,2325250079,2024816677,
- 2325266463,282427403, 2325293593,2325348358,2325364747,2325381357,2026733578,2325421343,2325512551,71188509, 2325555738,2325644412,2325693650,2325725250,19267682,
+ 2325266463,282427403, 2325293593,2325348358,2325364747,2325381357,2026733578,2325421343,2325512551,71188509, 2325555738,2325644412,2325693650,2325725250,19267682,
2325768731,124715115, 2325971003,896517385, 2326003722,291095208, 911279016, 2326022890,1490993173,2326080028,2326302578,780189725, 159449610, 2326351327,2326430684,
- 2326462474,2326478907,2326522397,2326643448,2326678659,2326735390,2326839380,2326872523,2326931999,293421094, 2327167279,2327203819,2327282611,2327314907,499008167,
+ 2326462474,2326478907,2326522397,2326643448,2326678659,2326735390,2326839380,2326872523,2326931999,293421094, 2327167279,2327203819,2327282611,2327314907,499008167,
2327347254,2327380052,2327413195,2327472672,1597392218,2327527912,2327560276,292831284, 2327593044,6621670, 873644711, 2327626652,2327674973,52674576, 2327724054,
2327740418,2327756826,56311810, 2327783969,21069854, 285147278, 598687756, 121077772, 2327970656,2328046114,2328186113,2328215789,2328248330,2328265596,2328313915,
154238986, 1333167218,2328349171,2328455715,1917787, 2328576066,2328608799,155975709, 2328625192,1645068300,2328652324,2328888943,294961631, 2328947237,2329018390,
62767120, 2329037755,141411064, 2329117167,2329154057,2329200575,2329296991,2329346090,801488927, 623247414, 2329368092,2329444419,193708108, 2329528677,2329586214,
- 2329750055,2329804822,2329831976,307611601, 2329921908,2329985871,2330017808,142835769, 2330034644,2330073600,2330148971,2330189957,2330233523,2330263578,99663884,
+ 2329750055,2329804822,2329831976,307611601, 2329921908,2329985871,2330017808,142835769, 2330034644,2330073600,2330148971,2330189957,2330233523,2330263578,99663884,
2330282484,2330329340,2330361894,2330379608,2330428304,2330465208,2330552873,2330676032,2330739213,518488074, 2330798634,2330894104,2330995243,2331034125,2331093548,
2331344942,17842690, 1183924226,2331394102,68583464, 133579945, 117900439, 2331427999,2331460599,2331526072,2331577601,2331607720,510182136, 196886566, 2331639810,
- 2621469, 2331666989,2331770952,121307162, 2331836524,2331879982,2332066229,2332107882,2332147753,2332164133,2332180530,2332213328,2332246132,2332273199,83361833,
+ 2621469, 2331666989,2331770952,121307162, 2331836524,2331879982,2332066229,2332107882,2332147753,2332164133,2332180530,2332213328,2332246132,2332273199,83361833,
2332311602,420757532, 2332344402,2332377129,2332393498,1095319594,2332414480,2332459034,2332475508,2332491813,883785739, 38879237, 2332514193,2332557738,2332590116,
1095532660,2332616050,2332655732,2332672109,17924212, 642007062, 2332704809,2332721178,86081652, 2332743585,2332777459,55050360, 105791620, 2332813872,2316435477,
2332868618,2332887244,2332917770,151748620, 2170945572,4751401, 2332944945,1140342841,2332999709,1498890268,2333016180,2333032490,724713513, 2333059634,2333097989,
- 2333114383,37748851, 2333141555,2333223476,113246683, 340280489, 2333714997,2333868054,120001654, 2333895222,706002970, 2334130257,444792848, 2334162960,3901360,
- 2102083615,2334179330,4654154, 2334195755,2334229573,2334278063,2334311874,33112090, 2334360748,1503723536,2334419511,307235031, 2334534200,2334747193,5324907,
+ 2333114383,37748851, 2333141555,2333223476,113246683, 340280489, 2333714997,2333868054,120001654, 2333895222,706002970, 2334130257,444792848, 2334162960,3901360,
+ 2102083615,2334179330,4654154, 2334195755,2334229573,2334278063,2334311874,33112090, 2334360748,1503723536,2334419511,307235031, 2334534200,2334747193,5324907,
2334871361,2334933011,623034399, 2334951923,2335048588,2335107642,2335163401,2335205947,2335326699,2335369788,2335468093,122110772, 8388877, 2335728053,2335768677,
1443856415,2335812158,2335932438,2335948859,2335981621,2196513, 2336014382,2336063790,2336107071,2336227344,27246608, 125812752, 653017688, 111214594, 2336243799,
2336303680,854705881, 2336391799,2336434753,2336538678,2336576805,2336620565,2336647746,2336729667,2336907380,2336951063,2146518, 2337024580,2337188421,2337253958,
@@ -4465,7 +4460,7 @@ static const unsigned int DictNodes[84251] =
611647504, 2344651311,2344716397,2344774244,2344829775,2344872549,2344928921,2344987238,2345232999,2345386242,2345418882,8399464, 2237628426,2345445993,2345666528,
133578818, 2345721342,2345806442,116376231, 153911323, 2345919064,2345967121,456737688, 2346044138,2346090527,2346107409,2346140568,900645776, 124470095, 2346189294,
2346231663,2292302838,2346330731,2346434614,198721542, 2346478188,2346568449,2346614796,2346631206,636273498, 446873612, 2346658413,735428674, 1869545932,2346714024,
- 505544742, 2346745921,2346805870,2347094406,2347139101,2347159786,2347204618,2347221014,298663952, 2347242271,2347292295,2347368454,2347384889,757792770, 771309580,
+ 505544742, 2346745921,2346805870,2347094406,2347139101,2347159786,2347204618,2347221014,298663952, 2347242271,2347292295,2347368454,2347384889,757792770, 771309580,
2347401253,2347417612,275464249, 2347434090,698139560, 2347516737,2347559535,2011973983,2347630608,2347646986,134021157, 2347674224,296698889, 2347746153,2347821681,
2347959234,45629455, 2348001906,2348132979,6111253, 2348214900,20447381, 2348318732,101875748, 2348335643,2348367905,2348417461,851214365, 2116370444,2348450684,
2348509813,2348614546,2348673654,2348771959,2348829449,2348875792,2348893214,2348924968,2348941324,321716583, 2348968568,2349107683,2349137922,2349155593,2349187091,
@@ -4473,26 +4468,26 @@ static const unsigned int DictNodes[84251] =
2350197374,2350279295,1462387521,2350548660,1195803457,2350629368,2350678032,2350698172,2350744466,8399488, 155779098, 155779098, 2350795133,1696826397,2350874708,
2350907499,2350941520,2351000193,2351272330,2351370098,2351416310,2351448129,211812451, 2351497242,2351513602,2351529994,170804632, 2351546452,240584051, 2351579278,
2351611950,2351662387,2351710265,886292482, 2351726594,119881738, 2351742997,2351759414,2351793543,2351824898,2351841336,2351874351,1651458053,2351908116,1595277771,
- 2351956014,2352009071,892846759, 2352081538,2196135, 2352186017,2031927336,172845699, 794361937, 2352236266,118292482, 2352300138,44531750, 2352381990,3211373,
+ 2351956014,2352009071,892846759, 2352081538,2196135, 2352186017,2031927336,172845699, 794361937, 2352236266,118292482, 2352300138,44531750, 2352381990,3211373,
2352407474,117407756, 638878614, 2352463874,157499499, 2352483289,2352540292,2352743454,2352779781,2352906278,2352923161,2352988587,2353031813,405045258, 2353152680,
2353184824,2353218081,1309212975,241194662, 2353267754,2116168326,2353368586,56508428, 2353431023,131817242, 2353463361,429277199, 2353512507,2353556103,2353785480,
2353857677,343296187, 2353906165,2353941145,2354003996,2354020953,2354054095,2354113161,2354332173,2354380853,2354415988,2354479132,2354496013,2354555530,2354594095,
2354626626,2354659929,2354692155,5341270, 2341863455,2354725167,2354758263,2354790422,155926559, 2354806796,1542553627,2354823174,530694150, 2354839568,2354856013,
- 2354888797,194166813, 2354939878,2354987051,2355030667,2355135372,1365999645,2355184649,2355216426,2355232790,2355249236,2355281932,226836511, 2355299976,250396688,
+ 2354888797,194166813, 2354939878,2354987051,2355030667,2355135372,1365999645,2355184649,2355216426,2355232790,2355249236,2355281932,226836511, 2355299976,250396688,
2355347970,2355380654,209305641, 2355440268,2355758164,2355806808,552452136, 2355839521,2355890144,2355939090,2355997325,2356117516,2356134322,433717279, 2356166740,
2356199529,2356232230,1124253999,2356259470,1888223521,2356314124,1725775910,2356341391,2356397443,2356543574,2356576493,140771795, 2356609070,2356658318,2356695029,
2356725188,158744588, 2356767376,1909328445,2356871255,2356927767,562316318, 2356980369,2357111442,2357182474,1060340246,2357198907,186467234, 2357232644,2357297583,
75513887, 2357330680,821100652, 2357364136,2357447381,246464575, 2357493814,2357537427,244614174, 2357772372,2357805345,730595366, 2357838742,2357893311,2252996624,
2357986187,1052575460,2358051287,707133472, 2358083638,117901829, 2358127252,2358198743,2358232697,2358280724,2358329370,2358347626,2358378518,757497908, 2358405781,
- 2358592542,2358635158,397903260, 2358722644,2195598, 46858268, 234176524, 751091771, 2358756644,175767606, 2358815383,2358969642,2359020297,2359077528,133414950,
- 2359148628,988053570, 25560173, 2359183827,2359230466,29458438, 2359246874,2359263258,2359279834,66814170, 2359323289,2359494975,2359525385,33734771, 5309626,
+ 2358592542,2358635158,397903260, 2358722644,2195598, 46858268, 234176524, 751091771, 2358756644,175767606, 2358815383,2358969642,2359020297,2359077528,133414950,
+ 2359148628,988053570, 25560173, 2359183827,2359230466,29458438, 2359246874,2359263258,2359279834,66814170, 2359323289,2359494975,2359525385,33734771, 5309626,
2359543283,221609999, 2359585434,2359705734,2359722119,628375575, 2359738404,221806613, 2359755585,86638633, 2359798427,30867571, 21872775, 2360257181,2360345098,
- 2360388254,2360559988,2360623195,2360655874,166101666, 2360674203,2360738314,2360781471,500269096, 2360863392,2360961697,214483831, 2361060002,2361180591,834506575,
- 2361213775,2361246547,2361311286,2361344526,2361377223,2361427264,2361458793,1579679763,2361492574,1893138486,2361551523,2361617060,2361737275,1287733254,8391173,
+ 2360388254,2360559988,2360623195,2360655874,166101666, 2360674203,2360738314,2360781471,500269096, 2360863392,2360961697,214483831, 2361060002,2361180591,834506575,
+ 2361213775,2361246547,2361311286,2361344526,2361377223,2361427264,2361458793,1579679763,2361492574,1893138486,2361551523,2361617060,2361737275,1287733254,8391173,
2361780901,2362043046,2362141351,507183197, 2362230080,2362272424,2362376768,454099432, 2362419881,5866993, 2362523660,2362540042,2362556437,173441063, 2362573890,
2266906640,2362638402,2362676262,2362722764,2362777013,2362829482,2362983001,2363016521,2363066847,2363113580,1056374850,2363148481,300582186, 2363206315,2363280207,
2363337388,2363442474,2363490363,2363533997,179667998, 2363671721,8399534, 284950540, 178586360, 231587850, 408420358, 2363714223,2363836885,2363878064,2363949149,
- 2363999817,2364080650,2364114122,153191849, 2364172977,2364297071,2364361023,370262037, 2364402354,45760528, 2364523421,2364605326,275447810, 2364680883,168935481,
+ 2363999817,2364080650,2364114122,153191849, 2364172977,2364297071,2364361023,370262037, 2364402354,45760528, 2364523421,2364605326,275447810, 2364680883,168935481,
2364746420,1321993419,2364877493,2364992182,2365037534,2365065366,55377961, 2365113454,2365205175,1713129008,2365411005,2365489218,116064294, 2365532856,2365587510,
63816440, 2365620234,2365636647,2365671863,2365736281,2365768440,2365800501,118947892, 2365844153,2365964397,2365997062,2366013461,2366029855,2366046246,2366062613,
52822022, 2523152, 2366078988,2366095799,2366139066,2366193686,71188518, 2366210050,2366226442,2366242837,41582598, 2366270139,115294249, 2366581436,2366623927,
@@ -4501,7 +4496,7 @@ static const unsigned int DictNodes[84251] =
2367679169,760949442, 2367931467,2367999852,2368045115,172639095, 2368088771,2368170692,2368356483,164036739, 2368373195,2368423994,2368487508,2368523420,2368579229,
113689071, 203817390, 2368634939,2368667658,29327593, 2368694981,2197356, 2368858822,2368947546,1720871623,2368989896,2369028310,8399561, 2369070359,2369126402,
2369142794,124863329, 60227624, 2369163403,2369282895,200261698, 2369350346,2369423793,2369470466,2369486904,2369530571,2369635780,2369678028,2369858253,2369912891,
- 2369946644,2369994780,2370011195,2370054862,144621578, 2370165946,2370210275,2370240555,2370279513,2370322444,2370339255,2370374044,2370421583,2370453563,128450640,
+ 2369946644,2369994780,2370011195,2370054862,144621578, 2370165946,2370210275,2370240555,2370279513,2370322444,2370339255,2370374044,2370421583,2370453563,128450640,
185319461, 2370497231,158532023, 2370584660,2370617382,2370633747,2370650114,153191074, 2370677456,2370775761,51822594, 2370846739,1103495659,2370863115,2370879516,
2196996108,2370904234,12763270, 2370945035,2370961413,744767497, 2370978081,156073994, 2371010571,64847893, 2371037906,2371332819,2371398356,2371513045,2371635874,
382773974, 2371685990,2371726039,728154150, 2371791576,193839142, 2371897220,2359377, 2371971801,2372045139,2372091916,1010585190,2372108334,1094598698,2372158365,
@@ -4509,10 +4504,10 @@ static const unsigned int DictNodes[84251] =
2372856540,2372911140,239468584, 2372938461,2373009545,2373025793,78954511, 2373048729,382468099, 612287040, 2373091331,2373107949,2373140499,1833664543,2373774047,
773570576, 2373872352,2374008952,2374025282,2374058104,2374074380,2374090872,2374107174,402718840, 2374123640,288620546, 27345016, 55443475, 2374150881,2374221973,
2031748, 2374254729,2374271110,2374287475,2374303879,2374320949,27738130, 2374352905,2374369286,2374385801,2374402070,2374418566,11059202, 2374434825,2374451206,
- 2146615433,2374467733,1836793987,2374500518,517046403, 2374533255,2374549635,2374565897,10993801, 2374582298,2374598674,2374615052,2374631453,2374647943,1785988,
+ 2146615433,2374467733,1836793987,2374500518,517046403, 2374533255,2374549635,2374565897,10993801, 2374582298,2374598674,2374615052,2374631453,2374647943,1785988,
2374664201,42958879, 2374680617,2374696982,2374713350,34422915, 2374729749,2374746124,2374762626,899416198, 283722031, 2375232226,2375428835,2375461604,2375499797,
108298251, 2375517038,2375581698,2375598086,2375614486,146751545, 2375633082,2375663646,2375702852,2375778330,46268456, 1414938724,2375795767,2375836718,2376018661,
- 2376187958,162268072, 2146906, 2376221605,146456587, 2376253543,1189839893,2352989193,2376335419,2376379110,2376417781,1753678255,2376461031,2376564774,499269935,
+ 2376187958,162268072, 2146906, 2376221605,146456587, 2376253543,1189839893,2352989193,2376335419,2376379110,2376417781,1753678255,2376461031,2376564774,499269935,
2376592104,2376674025,2376750804,2376843310,8389875, 2376898830,2376957983,124862593, 2376974395,2377007641,2377073663,2377121802,136118575, 402128908, 2377149162,
2377313003,2377400322,45907973, 2377418655,81166362, 2377482699,2377531418,2377548656,2377596939,1984823332,2377624300,2377738989,717914124, 124863143, 2377826370,
2277851146,2377870062,3228900, 2378006554,2378022924,96960523, 2378039356,2378121316,2378153996,2378170882,2378203157,117901074, 2378222867,2378268703,2378285075,
@@ -4520,62 +4515,62 @@ static const unsigned int DictNodes[84251] =
2379098867,2379180788,2379253126,2379328245,2379415554,2379431942,2379448336,2379464723,185384982, 2379492086,153567254, 2379677762,152945592, 2379721463,2379776022,
2379792415,2379808779,726679563, 2379832871,117506101, 284704780, 2379901688,2380057302,2380104527,2380136507,2380180217,2380349532,846413864, 2380382220,1460977676,
36339730, 2380398647,283722488, 2380465080,159137802, 2380513710,2380562442,188940300, 1937063946,2380589818,2380737275,155829071, 2380841212,2380874155,2380907097,
- 2380950268,2381070402,2381103969,2381135928,2381168929,2381201410,2381218552,623411231, 2381250591,2381267397,2381299740,257933324, 200524809, 2381316155,815812982,
+ 2380950268,2381070402,2381103969,2381135928,2381168929,2381201410,2381218552,623411231, 2381250591,2381267397,2381299740,257933324, 200524809, 2381316155,815812982,
166068746, 2381359869,2381441790,2381654783,2113612, 2381725698,199901194, 258868006, 2381753088,2381858575,7094338, 1503248386,2381905931,2381922453,2381966081,
2382004226,47939613, 2382031618,186318860, 2382315979,2382364756,2382408451,768458768, 2382544906,147423274, 2382561306,2382579728,109166608, 2382637828,2382768901,
2382921770,2382938124,2382954522,2382970891,2382987266,2383003679,2383020042,2383036970,2383053260,2383085580,2383101958,2383118890,244170767, 2383134730,2383151658,
112771110, 351911974, 2383167946,2383209673,2383268555,163316015, 2383347714,163644240, 2383375110,2383432416,2383489799,2383670024,2383806548,5308848, 2383839711,
- 2383873640,2383937839,497550072, 2383981321,8962179, 1491468591,2384054720,2384117782,2384134447,2384177930,2384232450,5311551, 2384587532,2384855099,198754805,
- 2384888659,2384953375,3227687, 2384969768,2384986137,2385018986,2385109843,2385167916,2385199134,2385232001,1411760560,2385264679,426770862, 2385297467,8391085,
+ 2383873640,2383937839,497550072, 2383981321,8962179, 1491468591,2384054720,2384117782,2384134447,2384177930,2384232450,5311551, 2384587532,2384855099,198754805,
+ 2384888659,2384953375,3227687, 2384969768,2384986137,2385018986,2385109843,2385167916,2385199134,2385232001,1411760560,2385264679,426770862, 2385297467,8391085,
108167180, 2385330242,125583389, 2385364934,2385428490,5310080, 342295202, 2385455885,266769040, 1489191215,8397509, 2385593513,2385625935,2385668878,2385788944,
2385805338,2385821715,56442892, 2385838134,2385871373,2385925209,562233398, 2385980175,2386182180,2386198566,225624367, 2386215019,131335089, 25559343, 2386250463,
2386331589,2386362969,2386395138,412123218, 2386411793,2386455312,2386586385,8612626, 2386658243,10649647, 2386717459,2386789277,2386870365,2386919434,2386942747,
2387012372,2387165238,2387208981,168236244, 116375654, 2387307286,694354442, 2387405591,2387641642,2387689709,241222154, 2387723660,2387804993,1249165318,2387837012,
2387880728,2387919284,2387979033,2388099609,2388166201,2388273946,2388362175,2388394010,701940171, 2388411821,2388460400,2388508726,143753242, 2388552475,2388632096,
2388708777,2388738107,2388771337,2388804109,297009259, 2388863772,124862571, 692305932, 2388978461,2389361213,18808850, 2389404446,2389623278,876019717, 2389666591,
- 2389737932,2389770734,24297705, 2389814048,2389902717,210437511, 2389961505,2390059810,92143618, 2390108963,2390147118,2390198946,108527758, 2390256420,149128276,
+ 2389737932,2389770734,24297705, 2389814048,2389902717,210437511, 2389961505,2390059810,92143618, 2390108963,2390147118,2390198946,108527758, 2390256420,149128276,
2282733584,2390393135,2390436645,131269039, 57032733, 2390556975,17843230, 2390596227,2390738073,2390787089,2390835503,343294929, 2390868020,2390911782,2391075623,
2391262031,2391293974,5537818, 2391321384,2391452457,583008299, 8389939, 2391542320,2391591800,2391638082,352112566, 45023274, 2391670786,2391687607,2391719990,
- 2391752788,2391786485,107151470, 206471178, 2391851018,2391867434,172835636, 2391884227,2391927594,166069033, 2392047654,2392070515,2392129839,2392162335,8399659,
- 878608443, 2392179147,2392664877,2392817704,44679174, 2392835364,2392883342,2392915984,793051146, 160743440, 2392932884,2392992558,149110852, 2393066917,169323311,
+ 2391752788,2391786485,107151470, 206471178, 2391851018,2391867434,172835636, 2391884227,2391927594,166069033, 2392047654,2392070515,2392129839,2392162335,8399659,
+ 878608443, 2392179147,2392664877,2392817704,44679174, 2392835364,2392883342,2392915984,793051146, 160743440, 2392932884,2392992558,149110852, 2393066917,169323311,
2393146773,2393194568,2393271088,2393325584,139198474, 2393345408,2393402161,2393746226,1252464712,2393886397,2393970979,7146359, 2394041139,2196683, 2394188596,
2394226715,2394270517,2394341908,2394401590,2394456206,1993211958,2394499776,2394581288,2998298, 2394630967,36765827, 124862527, 1212842038,2394787136,2394849817,
186877097, 2394914875,2394958648,112754690, 2395127867,2395160879,54460431, 2395194292,1058308426,2395261069,995148310, 2395310143,2395340821,2395358302,1087045661,
194281579, 430669830, 2395406402,2395450169,2395488322,2395532090,2395630395,2395717879,2395761468,2395849006,835387418, 520142879, 2395881474,2395897912,1016659987,
2395941693,2396121918,2396211005,1013268501,2396258344,1015562250,2396285759,2396326576,111657017, 2396373529,2396438559,2396454922,2396471362,172638497, 2396504076,
520945693, 2396531520,2396636489,2396684370,2396717188,27738121, 2396734453,2396810049,2396881038,119783434, 2396923665,200687642, 2397023042,2397077959,2397126696,
- 9060378, 2397143490,2397176111,2397208683,2329870967,745685034, 2397242937,1000490005,2072412179,2397350723,2113572, 2397472571,2397519912,2397536268,620281866,
+ 9060378, 2397143490,2397176111,2397208683,2329870967,745685034, 2397242937,1000490005,2072412179,2397350723,2113572, 2397472571,2397519912,2397536268,620281866,
2397552727,2397612868,654000888, 250216488, 2397732886,1677524994,2397753718,651509772, 2397793093,1612546067,2397858630,2398076930,2398094681,2398130696,2398202695,
2398421752,2398453997,2398486765,2398519298,2398535706,161628191, 2398563144,2398652329,200261732, 2398701444,2398765094,2240250159,2398784705,2398831605,2398907209,
124470381, 1217216514,2399043590,2399059989,287031308, 2399077875,2399109550,221003786, 2399158702,2399207461,87048204, 2399226277,2399272972,712147618, 2399300426,
- 2399404108,2399436802,2399453661,81985542, 2399486799,2399520313,2399618057,2399652131,2399699877,2399742795,2399799709,131334904, 2399846454,2399890252,821805058,
- 2399972173,2400174162,2400206936,273088538, 2400239682,262914058, 2400280253,2400355888,149128600, 2400387154,2400420328,2400457714,2400551019,2400584527,126272502,
+ 2399404108,2399436802,2399453661,81985542, 2399486799,2399520313,2399618057,2399652131,2399699877,2399742795,2399799709,131334904, 2399846454,2399890252,821805058,
+ 2399972173,2400174162,2400206936,273088538, 2400239682,262914058, 2400280253,2400355888,149128600, 2400387154,2400420328,2400457714,2400551019,2400584527,126272502,
2400627534,2400665626,2400682005,545259577, 2400698427,2400733424,2401135439,2401485910,665534474, 2401535865,171753503, 2401583341,2401615878,5308455, 2401643344,
162189669, 2401828923,2401861691,2019197462,61456386, 2401905489,2402020178,2402058242,1441497109,2402075820,2268512293,2402124079,2402157003,2402206127,2402238470,
79101974, 2402257687,2402320390,2402336818,2402370729,2402413395,200556573, 2402467862,2402484226,623411242, 2402500668,154058851, 2402584315,2402632151,2402665538,
321127760, 252706847, 2402734087,184910760, 478953943, 246136853, 2402796445,1225474407,2402888532,29901314, 2402954069,2403024935,164036610, 2403057723,1195869353,
- 2403091283,2403156439,1734067375,2403188823,1900554, 2403238347,168869909, 2403287577,2403353207,2403385946,2403426206,2403478358,533070127, 2403602019,588185628,
+ 2403091283,2403156439,1734067375,2403188823,1900554, 2403238347,168869909, 2403287577,2403353207,2403385946,2403426206,2403478358,533070127, 2403602019,588185628,
2403648025,2403718442,6881388, 2403779230,2403811424,2403926042,2403942466,110134885, 2403975268,2404008395,2404057391,2404100951,2404330328,433225750, 2404451230,
2404483114,126025756, 2404500855,2404592473,2404713955,2404778138,8612698, 2404810775,9945237, 760955351, 2404827238,392921109, 2404860207,2404892693,2404909524,
2404941846,817332236, 2404958445,197115930, 2404991016,2405007362,248840213, 2405025249,2405145072,2405204815,235389016, 915745627, 1599769035,220364826, 2405238257,
- 2405280604,2405548041,25673859, 2405575517,2405673822,2405748873,42926211, 2405793794,246087702, 2405810776,2405845194,275153656, 2405892856,2405924891,622428191,
+ 2405280604,2405548041,25673859, 2405575517,2405673822,2405748873,42926211, 2405793794,246087702, 2405810776,2405845194,275153656, 2405892856,2405924891,622428191,
502890537, 2405963975,2406023194,2406039554,311132188, 2406055938,1169866859,2406083423,2406170690,2406205794,2406254916,2406286665,2406334483,2406350869,2406368079,
- 2406400059,664174594, 2406443872,5327331, 2406515147,229654543, 2406572404,162187002, 2406614100,1673137409,2406662904,2406706017,2406763352,2406809612,608316258,
+ 2406400059,664174594, 2406443872,5327331, 2406515147,229654543, 2406572404,162187002, 2406614100,1673137409,2406662904,2406706017,2406763352,2406809612,608316258,
2406826091,2406862685,2406919011,2407027566,110133313, 2407071886,2407115620,57376794, 2407170050,2407186458,2407202818,246087716, 2407219675,2407263077,2185364418,
- 2407517594,2407580603,2407645643,3211778, 2407694362,2407721830,2407809937,2407869287,2407973319,2408033128,2408087686,2408103954,2408120455,2408136819,58982532,
+ 2407517594,2407580603,2407645643,3211778, 2407694362,2407721830,2407809937,2407869287,2407973319,2408033128,2408087686,2408103954,2408120455,2408136819,58982532,
2408153118,136003610, 2408185916,2408267782,457539606, 1637772137,2408285387,2408318779,2408367189,125583882, 640844377, 2408399702,2408448459,352059434, 2408508266,
- 2408622955,2408742993,2408778342,2163495, 2408860828,1418969090,2408917868,149323797, 2408989151,2409032557,2409152649,884757, 2409173701,2409245550,820953110,
+ 2408622955,2408742993,2408778342,2163495, 2408860828,1418969090,2408917868,149323797, 2408989151,2409032557,2409152649,884757, 2409173701,2409245550,820953110,
2409311087,168903147, 133578833, 2409458544,2409549682,2409604237,2409687921,2409775706,8389834, 2409808175,2409851762,2410113907,1220886531,2410219409,1425063972,
1519272468,2410250671,860425427, 200720415, 2410283067,2410315830,2410359668,2410464466,2410496026,995639298, 2410513611,2410545174,2410561552,2410577930,2410594370,
2410638197,2410900342,2410971562,652722202, 2411015031,1738375682,2411085878,159432714, 2411119022,2411167765,2411184150,2411200543,402309149, 2411216906,2411233322,
185417765, 2411250158,2411282891,2411332425,2411382152,2411424632,2411495555,2998403, 2411511915,2411790656,458490391, 2411834234,2412070679,2412120355,2412169666,
223182905, 2412226089,2412265559,1189789734,2412316411,2412363807,1142997008,2412380461,2412424059,2412560470,470755841, 2412597519,2412675178,2412759507,2412807036,
8389075, 2412866428,2412937753,2413013885,2413101082,17843033, 2413128574,2413248514,111132698, 2413276031,2413330470,2413350017,2413399682,2413446369,2413494274,
- 226050105, 166051866, 2413511115,2413559823,2413576223,121077772, 2413596166,2413660343,2413707330,280069022, 2413751168,2413805631,2413838338,2413854741,176455711,
+ 226050105, 166051866, 2413511115,2413559823,2413576223,121077772, 2413596166,2413660343,2413707330,280069022, 2413751168,2413805631,2413838338,2413854741,176455711,
2413882241,2414154384,2414198786,122568716, 2414216286,6733850, 2414264386,2414297164,2414330365,2414390146,602161171, 270401839, 2414461959,143753258, 2414526523,
2414559253,162579624, 1762590944,358514690, 2414576541,2414658167,2414690360,2414723159,2414772684,191905900, 2414816131,279822807, 2414886966,2414919706,1625589596,
2414936596,2414985272,775290922, 2415018040,2415050985,69156994, 2415088220,2415181877,2415225732,2415283131,246874138, 2415362069,2415379956,348323859, 2415429445,
- 2415684486,2415979399,802963462, 2416086313,2416149525,131875342, 2416198761,2416247909,2416295948,198328346, 2416314964,358029415, 2416372616,2416462010,2408451,
+ 2415684486,2415979399,802963462, 2416086313,2416149525,131875342, 2416198761,2416247909,2416295948,198328346, 2416314964,358029415, 2416372616,2416462010,2408451,
2416494778,2416525338,3686406, 2416547635,2416607992,2416650242,2416691746,2416738316,24969239, 2416756704,2416814985,2416902745,258965530, 2416946058,1152008258,
176423227, 446464012, 2417084149,2417131579,2417175435,2417361976,163643819, 1973962938,1438990395,2417428421,2417470348,2417514385,2417558467,2417617805,2417699726,
2417853101,2417901580,1633517606,2417918371,233242913, 2417950735,2417967135,2417983500,868253734, 2418011023,2418346409,2418377833,2418426344,2418460147,2418492369,
@@ -4587,11 +4582,11 @@ static const unsigned int DictNodes[84251] =
2421620746,2421637559,2421681055,2421751889,2421788262,2421817804,374030348, 2421852926,2421894048,2421981222,158220397, 2421998529,2422064741,2422112262,2422128656,
2214264843,2422145036,154813176, 2422161424,2422178015,2422210582,2422226970,564183052, 2422243388,2422336417,2422554663,296402949, 2422587433,332152913, 2422606143,
2422636556,6833105, 1678049322,2422652956,10829826, 1546650900,2422680482,2422899817,3538965, 51068968, 2422959011,1530806298,2423095749,2423139236,2423209999,
- 2423230464,2423286693,2423357485,233243384, 1044021687,2423401382,2423505387,2423538091,2423570539,112771083, 2423614375,2423695278,50511877, 2199714, 342605941,
- 2423745448,2417262603,2423834402,2423870397,2423920522,2423984908,1238384666,2424040361,2424155050,320733644, 2424193084,2424286123,2424384428,2424455170,223674406,
- 775176218, 805799468, 2424473539,2424531885,2424602661,4145167, 481821686, 2424619517,254591028, 2424679342,254591906, 2424737361,2424794031,2424908720,133580300,
- 2424990641,2425061388,2425077859,2425121714,2425217865,880754797, 4390915, 2425301939,425574403, 2425374265,2425482164,2425634853,2425651212,1223410718,153747542,
- 2425667596,242368522, 2425684085,2425727925,2425831461,2425847889,2425891766,2425946118,1430077456,2425963812,2426013726,2420293658,111214603, 2426071991,5867706,
+ 2423230464,2423286693,2423357485,233243384, 1044021687,2423401382,2423505387,2423538091,2423570539,112771083, 2423614375,2423695278,50511877, 2199714, 342605941,
+ 2423745448,2417262603,2423834402,2423870397,2423920522,2423984908,1238384666,2424040361,2424155050,320733644, 2424193084,2424286123,2424384428,2424455170,223674406,
+ 775176218, 805799468, 2424473539,2424531885,2424602661,4145167, 481821686, 2424619517,254591028, 2424679342,254591906, 2424737361,2424794031,2424908720,133580300,
+ 2424990641,2425061388,2425077859,2425121714,2425217865,880754797, 4390915, 2425301939,425574403, 2425374265,2425482164,2425634853,2425651212,1223410718,153747542,
+ 2425667596,242368522, 2425684085,2425727925,2425831461,2425847889,2425891766,2425946118,1430077456,2425963812,2426013726,2420293658,111214603, 2426071991,5867706,
2426110069,2426153912,786415653, 2426252217,2426306641,2426350522,138641494, 2426448827,143753257, 2426514364,2426563517,2426863670,1543094763,2426896396,1438613530,
2426923966,157663244, 2427094044,2427125860,2427159104,2427191355,2427235263,2427404342,2427443170,2427502604,2427519014,404307997, 2427535885,38126328, 1844363276,
2427588770,417349713, 52576262, 2427617301,153993316, 2427637219,2427694016,2427813987,2427846761,2427879445,2427895839,2427912211,1640579992,2427928621,2427962274,
@@ -4599,21 +4594,21 @@ static const unsigned int DictNodes[84251] =
2428862476,1049559042,2428880752,2428955590,2429021127,215777295, 2429108341,2429152200,2429206587,2429239306,2429255722,417939468, 2429273657,2429381577,2429550637,
131809770, 2429591551,408841162, 2429660107,2429814316,2429848078,2429894666,243220522, 2429911519,2429943915,50266153, 2429987788,335299082, 2430069709,2430168014,
2430223434,2430266319,2420114408,2430462928,2430534059,47108258, 2430567700,2430615562,2430631964,1933328, 2430659537,2752527, 254593527, 2430757842,2431036371,
- 2431091179,2431123708,1759576146,2431156269,2431200212,2431323267,141852684, 2431373098,2431440758,1011957801,2011578379,412139628, 2431495125,2431631467,417595826,
+ 2431091179,2431123708,1759576146,2431156269,2431200212,2431323267,141852684, 2431373098,2431440758,1011957801,2011578379,412139628, 2431495125,2431631467,417595826,
2431667023,2431715385,2431778828,2431795675,2431839190,2431928753,2431975915,167903286, 2432008204,5668946, 2432027396,2432074634,2432106508,2432122987,2432166871,
273924098, 2432270560,2432303134,2432347096,427802705, 2432402345,401342474, 2432450598,2432467520,2432501305,2432609241,2432729547,1687224330,2432778270,2432822234,
212189194, 2432904155,27623851, 781762646, 152952001, 2433018844,2433100372,2433166301,2433237099,29622300, 2433280990,2433368171,2433401250,758202387, 2433444831,
2433614988,326926395, 2433674208,44253221, 2433794107,2433834434,48676867, 2433892364,1808515098,2433919969,2434007106,2434051042,2434105365,2018197545,2434122962,
2121334843,2434165731,2434285590,2434301973,2434318348,51068938, 2434345956,696123408, 2434436002,2434482861,2434532215,2434567652,2434613339,2434657253,2434919398,
2435039251,2435056110,781467679, 2435089924,2435141266,2435186690,2435203110,569720844, 2435222721,591888443, 2435268674,2435302665,2435072022,2435335466,2435384593,
- 2435432460,2435460071,149536796, 2435498831,2435532448,2435563551,2435580962,2435612738,2435645472,2435679055,2277539878,2435712938,2335326260,2435776543,331710480,
+ 2435432460,2435460071,149536796, 2435498831,2435532448,2435563551,2435580962,2435612738,2435645472,2435679055,2277539878,2435712938,2335326260,2435776543,331710480,
2435796622,2435845263,2435891216,2435907610,2435924915,2435958046,2436005996,2436039575,2436094816,2436136986,2436153774,2436206228,114655244, 610549782, 2436262888,
2436533192,152241180, 2436596392,157155631, 2436639721,2436743977,2436775990,2122645519,2436819946,2436901867,2436957513,2437016556,411837048, 2437070900,2437103642,
8612845, 2437123211,5324905, 2437213166,2437349870,2437382574,2437442543,2437546443,2437597125,2437628751,2437660744,878357488, 2258108470,2437737457,2437857282,
626770846, 2437884914,482919363, 2438065139,2438114292,2438201375,2438217757,2438234128,1467777064,2438250525,393543706, 2438268333,2438327285,2438430786,2438463597,
2438496259,2438512642,2438531497,2438563385,2438671350,2438758818,942080028, 2438791189,2438807568,2438823946,2438841331,2438856709,2438873119,155533350, 2438900727,
- 2439005078,2439053331,2439069718,1051536376,1378550814,2439097337,2439151627,1624867680,2439168431,2439212026,177242150, 229359638, 2439282714,2439299103,226951189,
- 2439326715,2439457788,2439584650,837387285, 344539158, 2439645879,3162118, 2439692902,2439736317,2439479315,2439840777,319144043, 2439883774,2440004431,265682959,
+ 2439005078,2439053331,2439069718,1051536376,1378550814,2439097337,2439151627,1624867680,2439168431,2439212026,177242150, 229359638, 2439282714,2439299103,226951189,
+ 2439326715,2439457788,2439584650,837387285, 344539158, 2439645879,3162118, 2439692902,2439736317,2439479315,2439840777,319144043, 2439883774,2440004431,265682959,
2440042193,2440086552,2440134666,4390954, 2440162303,2440284174,269108118, 319701033, 2440332362,788300891, 2440364051,2440380438,3719234, 2440398323,2440430415,
2440462346,2440479152,2440511791,2440547751,2440577039,2440593439,651329542, 2440621056,2440822786,2440850433,2440938350,2441003090,19268431, 198328361, 2441041687,
2441089432,139821356, 184387851, 2441167713,2441200104,2441233727,2441298373,2441331171,2441374722,2441445409,2441494633,2441527334,2441543746,2441576473,2441609219,
@@ -4624,7 +4619,7 @@ static const unsigned int DictNodes[84251] =
2444027759,2444116801,2444148757,1622261790,2444176393,2444263726,2444307466,2444496896,2444553227,2444641625,2444673043,13713445, 2444693777,2444787766,2444822060,
2444853258,2444880908,2444962829,2445066252,93978662, 2445082662,480247820, 2445099926,2445149240,2445217513,2445279313,2445312498,2445361260,2445396241,2445509655,
2445557826,2445591415,2445624143,2445656110,2445706081,6127631, 2445746276,2445819935,141836300, 2445836309,285344615, 2445856626,2445901826,16269447, 2445918745,
- 2445983754,24297898, 2446011406,2446189597,2446229943,2446262278,2446278687,248774672, 2446296147,196149250, 2446371342,966475786, 2446442508,2446458962,985579560,
+ 2445983754,24297898, 2446011406,2446189597,2446229943,2446262278,2446278687,248774672, 2446296147,196149250, 2446371342,966475786, 2446442508,2446458962,985579560,
2446499529,2446557213,2446584205,2446689065,2446721090,2446765071,2446830608,2446983194,2446999984,2447032379,116375660, 2447065939,2447130640,2447147018,2447174673,
2447229021,2447278082,2447294490,1407598623,2447310877,2447328245,2447392834,692415506, 2447425592,2447458750,2447524770,2447567891,2447813652,25559475, 2447900738,
2447933470,2447966234,759710147, 2447982699,2448016358,2448057496,2448108565,2448157718,2448228364,2448244746,2448261141,2448277543,679690543, 2448310318,2448361927,
@@ -4633,14 +4628,14 @@ static const unsigned int DictNodes[84251] =
2449719818,2449752070,54657026, 2449769815,2449819264,1206403531,2449877077,2449933563,2449982200,325256015, 2450025498,2450215944,19252136, 5324899, 2450260006,
2141749288,2450277607,485752854, 2450325863,2450358284,2450374666,2450391061,2450409275,2450467867,149323807, 2450538542,2450594015,2450653186,2450669589,2450686018,
2450730012,2450795549,2450926622,2451270687,2451325688,2451359242,2451418144,2451505245,2451556130,2451587093,471580703, 2451603522,2451636984,2451680289,2451762210,
- 2451849228,2451865640,2451882010,3473840, 2451898414,2451949513,2451997217,2452048058,240593955, 2452079115,2452128591,2452160531,2452177199,2452220964,841155473,
+ 2451849228,2451865640,2451882010,3473840, 2451898414,2451949513,2451997217,2452048058,240593955, 2452079115,2452128591,2452160531,2452177199,2452220964,841155473,
2452286501,2452368422,323732216, 2452499495,2452537346,159432726, 253543923, 2452553836,2452597800,2452974633,2453048226,2453095814,49791002, 5881899, 2453160023,
7733355, 2453209190,253706266, 2453253162,2453389333,2453417003,2453521376,2453569995,335464307, 2453618744,2453651475,2453667916,116375640, 2453702793,2453782580,
- 147816470, 1205567525,2453826604,2453949824,2453998803,2454045167,2454077480,140799021, 2454093890,2454137902,2454283258,2454334511,2454405551,2454437934,244220806,
+ 147816470, 1205567525,2453826604,2453949824,2453998803,2454045167,2454077480,140799021, 2454093890,2454137902,2454283258,2454334511,2454405551,2454437934,244220806,
2454487094,2454522373,2454569011,42369055, 2454605057,2146403, 2454634942,2454700074,168509974, 2454718417,128450980, 2454766607,2454816116,2454875184,2455104561,
2455193134,2455241793,51675141, 2455324279,2455399474,2455481395,2455650357,125698069, 2455683919,2455715866,2455732243,2455750131,2455782430,2455814173,2455830568,
2455846931,2455863317,121815887, 2455879711,2455896074,2455912450,2107883558,2455928916,2455963019,2456011800,2456059950,2456109068,268451882, 751468575, 2456125527,
- 2456174673,2456208535,806633477, 2456257566,2456290172,2456347608,2456405231,2456443744,24299186, 2456485919,79757338, 2456502359,1336934402,2456551440,258097162,
+ 2456174673,2456208535,806633477, 2456257566,2456290172,2456347608,2456405231,2456443744,24299186, 2456485919,79757338, 2456502359,1336934402,2456551440,258097162,
2456579124,2456874037,2456961556,2457010202,580158332, 273203202, 2457033193,2196977, 2457128316,412139625, 2457157642,2457174058,2457191411,2457206810,2457223180,
2457239571,2457255948,1409630239,2457283638,2457404502,2457452546,2457468966,2457485324,2022474199,2457501712,2457518120,2457534474,2258436106,2457551281,2457584095,
7389194, 2457616406,2457632770,2457649209,2457665567,447561766, 2457693239,119801035, 2457813076,29327755, 2457857080,2457927787,1396671721,2457960460,2457976889,
@@ -4650,16 +4645,16 @@ static const unsigned int DictNodes[84251] =
2459566615,2459598935,2459649872,5325322, 2459708481,2459762795,2459795485,257310751, 2459811866,141541392, 2459839554,6029317, 2459912678,2459942972,2460036163,
2460144172,2460205084,2460221470,2460254234,2460271603,2460286992,2460303379,2460319765,51068944, 2460339416,2460385735,2460434684,307462186, 2460467238,2460494916,
700907542, 150700072, 2460565563,1571192870,2460598312,2460614711,2460682389,2460746359,234848287, 2460778517,2460794910,2460827704,2460860848,2460904517,2461281350,
- 2461401119,2461417574,2461451371,47710223, 2461484119,2461532661,171000243, 2461568378,408240144, 2461655036,2461707335,29376514, 1454047650,2461838408,316703018,
+ 2461401119,2461417574,2461451371,47710223, 2461484119,2461532661,171000243, 2461568378,408240144, 2461655036,2461707335,29376514, 1454047650,2461838408,316703018,
2461941791,371277839, 300925036, 2461969481,2462043632,2462133322,2462248011,2462297164,2462362701,2462516254,2462549336,2462598032,2462629947,2462663191,2462696025,
2462730975,2462811123,2462826517,2462842902,2462859290,2462875660,94437392, 2462892034,2462908431,216973314, 2462924840,1054785542,2462941250,172539970, 2462973998,
- 2463023211,373047302, 2463067214,2463137808,5718058, 2463154634,2463186954,2463203394,2463236555,2463285258,2463301856,2463336563,2463400473,2463476815,166161488,
+ 2463023211,373047302, 2463067214,2463137808,5718058, 2463154634,2463186954,2463203394,2463236555,2463285258,2463301856,2463336563,2463400473,2463476815,166161488,
2463547929,3211363, 2199995914,2463612982,2463645756,2463731651,2463794039,163545140, 2463834012,2463951953,2464071746,2464115794,2464219195,2464252006,2464286184,
538198617, 2464345171,2464547834,136118326, 38879270, 52756501, 2464596008,2464612383,2464628755,2464645132,2464661514,2464677909,2233548812,2464694754,2464795897,
2464842808,2464907290,7389203, 2464934996,2465131605,2465186705,376537103, 25559341, 2465235481,670189216, 198705753, 2465303722,2465383414,2465417230,2465464422,
2465497154,2465530811,2465596310,2465645450,2465677615,2465710132,2465742858,933928, 2465770582,523485243, 2465918039,2466031440,2466086924,82542613, 2466103317,
2445639696,2466124459,2466196568,1549533196,414089256, 2466376793,2466418074,2466480140,189136906, 2466507866,128255006, 2466644024,8390902, 2466688091,2466791451,
- 118292539, 2466833346,2466916641,2466998382,2467070383,2467114076,420790411, 2467497694,1058668597,2467545221,2467579763,2467610653,16236575, 2467627024,2180576,
+ 118292539, 2466833346,2466916641,2466998382,2467070383,2467114076,420790411, 2467497694,1058668597,2467545221,2467579763,2467610653,16236575, 2467627024,2180576,
2467643484,2467680592,2467726275,2467774997,2467840031,2467856440,283197461, 2467889206,2467921979,2467958418,2468015197,2468038178,2468086194,1993555989,2468121235,
2468217806,6373771, 2468249660,2468331522,2468347942,2468370309,2468424798,2468462710,618154142, 2468506719,2468774425,136790044, 414089218, 2468839470,2468888635,
185810956, 2468932704,2296184886,2469117974,2469134348,2469150758,2469167142,195838006, 2469183569,2469217482,2469265424,427098211, 2469282324,2469330997,1911717900,
@@ -4667,21 +4662,21 @@ static const unsigned int DictNodes[84251] =
2469773352,2469789733,3309596, 2469806927,2469838890,153944074, 2469855262,2470166557,2470182935,1227718661,2470642128,2470693293,2162695, 2470751332,2470833253,
2470905161,119358200, 2470953451,3686421, 2470997094,2471084911,549945413, 2471133196,2471160935,2471242856,2471433109,2359820, 2471521385,2471579729,2471636074,
2471870877,30523548, 7733762, 31801346, 109215784, 280838447, 180945291, 2471954857,254593210, 2471996523,2472069751,108325996, 2472143741,2472231826,2472291437,
- 2472373358,2472537199,2472595691,1660240924,2472640514,2472656918,2472673282,299794442, 2472689666,79101963, 2472714030,2933275, 2472782960,529022988, 240697647,
+ 2472373358,2472537199,2472595691,1660240924,2472640514,2472656918,2472673282,299794442, 2472689666,79101963, 2472714030,2933275, 2472782960,529022988, 240697647,
2472864881,2473012338,2473061491,2473164815,2473181196,2473197570,2473213978,1147617346,2473241716,2473312357,2473347382,2473394178,901464075, 2473421941,2473561392,
2473607184,2473623592,2196362, 2473640961,2473693477,2473755150,2473789824,2473852930,2473869322,184713228, 2473885798,2165260290,2473929846,2474126455,2474206124,
277103026, 2474257528,2474344514,2474388601,2474475532,213893126, 2474503290,2474591156,2474656423,2474689359,2270461968,2474732667,2474786845,5799965, 2474814588,
2475060349,2475142270,2475256959,2475344730,2475388032,2475458562,2475474975,2475492361,319717679, 2475524112,2475540518,2433761301,2475568257,2475650178,2475737114,
2475753474,2475769875,156975126, 2475786686,2475853198,5308523, 2475917322,1941957763,587022827, 2475938034,2476051289,540049446, 2476114894,2476158084,2476284229,
2476359702,2476376095,2439299113,2476392555,1067515916,2476425761,117358629, 2476476139,2476507439,2476551301,2476829830,1826799670,2476928135,2477080602,2477096976,
- 2395176975,1602715664,2477124744,2477288585,2477337738,2477474329,227725579, 2477539631,154665905, 2477573150,2477616267,2477680854,2477806575,2477867926,25559561,
+ 2395176975,1602715664,2477124744,2477288585,2477337738,2477474329,227725579, 2477539631,154665905, 2477573150,2477616267,2477680854,2477806575,2477867926,25559561,
512999483, 2477927564,2477965328,121651216, 2477981750,2478015001,1438355946,131811351, 715014904, 2478081129,420725039, 2478130378,2478189709,81166364, 2478317535,
2478386318,2478506463,140247067, 2478550159,2478640318,261130298, 2478735370,150569474, 2478763152,2478965681,2479008913,2479079450,2479095824,38061728, 1702510602,
- 684212276, 2479123602,2479243286,2479259650,188940298, 2479287443,2479369364,690733308, 2479423493,68583462, 2479795350,48676905, 2479975575,2480112530,2204447,
- 421953999, 476922803, 2480172184,2480237721,2480275947,2414119398,2480312915,153075778, 2480401562,119357492, 1683259937,136119143, 2480581787,2480635916,433717274,
+ 684212276, 2479123602,2479243286,2479259650,188940298, 2479287443,2479369364,690733308, 2479423493,68583462, 2479795350,48676905, 2479975575,2480112530,2204447,
+ 421953999, 476922803, 2480172184,2480237721,2480275947,2414119398,2480312915,153075778, 2480401562,119357492, 1683259937,136119143, 2480581787,2480635916,433717274,
2480652779,2480686084,154797427, 2480762012,2480848965,2480885269,2480964597,2481029582,2481089693,2481177523,2481211172,208896015, 2481258584,2481292158,2481324044,
29475625, 2481341783,507641882, 25561574, 2481389570,196362540, 2481417374,116228125, 2481706528,2481777823,2481831957,8175731, 2481849438,2481897927,2481948939,
- 2481995860,137088156, 109297680, 2482039968,2482226362,2482262699,2482323487,416874595, 2482339924,2482372860,254591021, 2482406230,193659995, 2482454583,541507668,
+ 2481995860,137088156, 109297680, 2482039968,2482226362,2482262699,2482323487,416874595, 2482339924,2482372860,254591021, 2482406230,193659995, 2482454583,541507668,
2482520982,2482580641,2482652190,222101999, 2482695330,2482913751,2482947231,55033872, 155779114, 458378077, 153191398, 2482979339,280447445, 2483027990,1578467382,
2483055779,2483142682,171163677, 2483159099,2483191950,2483224605,2483241852,2483291081,674349082, 2483355746,2483390403,2483448996,123912274, 2483767926,2483830891,
260457703, 2483864470,2483924133,24838185, 118884838, 2484077958,110298052, 2484142139,181267622, 2484174954,2484258932,2484324266,2484391431,869199015, 2052998118,
@@ -4695,8 +4690,8 @@ static const unsigned int DictNodes[84251] =
2489566117,2489609405,2489762095,2489795015,2489843758,2489892879,79757327, 412286978, 294143475, 2489909302,359514133, 2489947572,2490019006,2490100927,2490172437,
2490226796,2490281152,2490321422,4309019, 2490370182,2490417261,174080030, 2490449936,299024486, 2490466376,2326637, 2490532705,139821489, 2490936514,2491007923,
1321583071,2491040235,2491083971,2491191979,2491264196,2491329733,2491432962,4390915, 2491449403,2491482114,2491503696,85098517, 2491559110,2491613655,2491646482,
- 442318885, 1506214735,2491761487,2015270, 2491804871,2491908108,2218229867,152962460, 2491925017,2491993610,2492067016,654017834, 1204568349,2492198089,274153570,
- 2492263626,93978664, 2492361931,2492497932,2395176972,2492514335,2492530729,612319253, 461963276, 2492547138,2492591308,2492705997,2357559315,2492853454,47546410,
+ 442318885, 1506214735,2491761487,2015270, 2491804871,2491908108,2218229867,152962460, 2491925017,2491993610,2492067016,654017834, 1204568349,2492198089,274153570,
+ 2492263626,93978664, 2492361931,2492497932,2395176972,2492514335,2492530729,612319253, 461963276, 2492547138,2492591308,2492705997,2357559315,2492853454,47546410,
2493120577,891633675, 2493172539,2493268052,2493301681,1598997513,2493333950,2493399511,2493431867,2493466675,1269530640,2493514952,2493546542,2493595650,2493612069,
200720400, 2493639887,637206568, 2493770960,2493880518,2493934801,2494006055,1362214933,2494023144,2485734208,2494082258,1818662, 2494316616,2494382134,2494418672,
2494497577,340131896, 2494529595,2494562541,2494595093,881655824, 2494622931,2494737620,2494841292,2494885077,2495053861,2429845516,2495070647,2495105343,2495135756,
@@ -4707,12 +4702,12 @@ static const unsigned int DictNodes[84251] =
2498117698,2498152680,2498199554,2498216990,2498248716,773488720, 2498265547,2498325734,2498461798,2498494466,2113574, 2498510924,91832346, 143392852, 2498953347,
49791107, 2498981096,2499150814,2499201270,171507724, 1501052966,2499259625,110234086, 2499413076,2499463082,138641435, 250364392, 2499530610,2499578845,1993883688,
443924546, 2499624998,130285606, 2499652842,2146959386,2499800299,2499854429,2499903510,2499919884,2499936287,2499952661,2499969030,1535426589,2499986462,2500018608,
- 2500051003,146309130, 2500095212,2500232402,134709264, 2500266356,2500332196,320734217, 685491138, 2500395067,234094700, 2500428536,2500472045,2500739098,44498965,
+ 2500051003,146309130, 2500095212,2500232402,134709264, 2500266356,2500332196,320734217, 685491138, 2500395067,234094700, 2500428536,2500472045,2500739098,44498965,
2500758544,2500871198,2500903215,2500935787,2500968469,19267606, 2500987670,207355980, 2501019669,2501061870,2501263425,2501312801,67059738, 2501345282,2501361690,
2255782322,2501378075,2501412185,2501445037,2501493579,2501558694,2501591066,31391746, 2501607727,2501642726,25560513, 159875604, 2501673886,2501705812,2501738591,
2501787664,2501804109,2501848303,2502115382,2502148189,2502206132,8389031, 2502290672,740474917, 2502329716,2502379385,2502438129,367820812, 2502487282,1186515316,
2502607773,2502700275,2502789549,2502837417,2502869013,2502885412,110592019, 2502903829,2502935008,898171727, 2503027956,2503149100,573653442, 2503180290,1439645905,
- 2503198749,1489354797,2503245890,2503279637,2503329731,1174077452,2503388405,2503509086,2503557227,338363215, 2503601398,2503876350,2503921120,2503968244,7733466,
+ 2503198749,1489354797,2503245890,2503279637,2503329731,1174077452,2503388405,2503509086,2503557227,338363215, 2503601398,2503876350,2503921120,2503968244,7733466,
2504018341,2504065934,2504130572,5505036, 2504148119,2504196107,2504212717,2504245308,2504327233,2504387831,373981215, 244614065, 2504486136,2504617209,2504691508,
2504769773,119998209, 2504803538,2504835504,2504868273,2504900610,2504917048,2504949867,2504982987,2505033291,2505080848,335446022, 2505098049,414040095, 2505131831,
2505179165,1212203485,2505195604,2505228290,2505244682,2505261072,2505277480,193871909, 2505305338,2505409924,52625414, 8390248, 2505474114,1435027080,2505506842,
@@ -4722,11 +4717,11 @@ static const unsigned int DictNodes[84251] =
110723074, 2234696527,2508013627,240582683, 2508047311,1055408159,340770870, 2508096088,6308705, 1726185556,2508128277,2508144670,2352939095,2508181121,2508254468,
2508526130,2508587067,2508631301,2508688151,143392827, 5341815, 131820806, 2508762375,2508858305,1255882857,2508914700,2466103322,24248462, 2508942600,2509069654,
115933210, 2509144066,5799947, 291097187, 2509163488,2509210480,2509259211,2509308768,2509375860,2509450505,2509520998,2509554663,2509614346,2509696267,2509873006,
- 2509931398,2509963285,8389961, 2509981323,2510045230,2510105868,2510209080,2510242552,2510275974,2510351629,2510449934,2510487618,2510520609,131335198, 874577936,
- 119636271, 2510558745,2510603636,2510652442,2510700546,195215366, 2510716930,2510733322,948813836, 1563328566,2510761231,2511072528,2511159317,276283423, 750665816,
+ 2509931398,2509963285,8389961, 2509981323,2510045230,2510105868,2510209080,2510242552,2510275974,2510351629,2510449934,2510487618,2510520609,131335198, 874577936,
+ 119636271, 2510558745,2510603636,2510652442,2510700546,195215366, 2510716930,2510733322,948813836, 1563328566,2510761231,2511072528,2511159317,276283423, 750665816,
433225754, 2511177627,2511244768,2511290434,1200291842,2511334673,2511455262,27624360, 2511487052,192938013, 1499103339,2511531282,2511635312,2511683594,2511699999,
2511717271,2511777043,2511929798,2511962349,2511994906,267501580, 2512022804,2512093205,1801879636,2512121109,2512175167,2512207912,2512224287,2512240661,1449623554,
- 2512257040,2512273418,2512289834,688226309, 2512306479,233734170, 2512344500,2512416022,2512519170,2512535562,2512551965,761348108, 2512568366,2512619352,452100150,
+ 2512257040,2512273418,2512289834,688226309, 2512306479,233734170, 2512344500,2512416022,2512519170,2512535562,2512551965,761348108, 2512568366,2512619352,452100150,
2512666705,2512699394,712982566, 2512727319,2512819444,2512879618,299008038, 2512897118,2512956696,2513077257,2513120537,2513176321,2513235226,298958902, 2513305640,
344539148, 2513322273,2513355870,2513404003,61800479, 2513437107,2513469527,229687327, 2513530139,2513649723,48513030, 2513683116,45465606, 2513726748,2513862721,
116850698, 546357258, 2513914824,2513977647,2514010118,2514026512,281935884, 794722344, 2514054429,2514349342,211910696, 2514431263,229508010, 2514545952,2514632714,
@@ -4735,12 +4730,12 @@ static const unsigned int DictNodes[84251] =
2516020519,2516098347,127795243, 2516148784,2516287514,2516308988,2516370777,2516402218,2516420386,2516451330,2516467733,2516484162,2516516880,2164424714,2516533771,
2516582711,2516635028,2516741416,1566654504,1055801346,2516877314,2516893717,2516910102,2516926466,2516942854,2516959272,2516975626,604831773, 2516992760,2517026427,
2517101865,622707620, 2517189067,2517247645,2517314858,2517468050,2200725, 1145487398,2517516347,2517550031,2517604621,2517724459,237256747, 2517773612,2517855533,
- 2517942282,567100072, 2517959669,2518024251,2518057067,2518101294,1449213995,1000898598,2518412592,2518478129,2518723890,2518789427,2518859883,2518892630,1770706,
- 2518936884,2519040475,2519072805,2519089154,2519105551,1129578498,2519133493,2519187515,2519220250,7962652, 2519236647,213909525, 2519280950,6127638, 6406186,
+ 2517942282,567100072, 2517959669,2518024251,2518057067,2518101294,1449213995,1000898598,2518412592,2518478129,2518723890,2518789427,2518859883,2518892630,1770706,
+ 2518936884,2519040475,2519072805,2519089154,2519105551,1129578498,2519133493,2519187515,2519220250,7962652, 2519236647,213909525, 2519280950,6127638, 6406186,
2519434216,2519493943,2519580688,2519597058,2519613466,294371357, 73744396, 2519641400,630456322, 2519887161,2519957556,2159493161,2520001850,2520072213,2520088660,
2520122306,2520156324,45907989, 2520186892,301187098, 2520204429,2520252426,47710237, 2520268812,2520285210,159547420, 2520302182,2415394847,2520335096,2520368022,
2520416275,2520432662,2520460312,2520514576,2520530985,2520547359,2520563750,174047234, 2520583070,648577546, 2520640827,2520853820,2520943369,2521001277,2521088059,
- 2521120852,2521155642,2521219543,2521251871,2166013964,2521268265,2521285976,2521345342,2521443647,2521581684,2521645487,2521685060,2521754944,2521842110,451871628,
+ 2521120852,2521155642,2521219543,2521251871,2166013964,2521268265,2521285976,2521345342,2521443647,2521581684,2521645487,2521685060,2521754944,2521842110,451871628,
2521907433,46088211, 2521951553,2522022806,936739338, 2522080572,2522120223,2522136582,2522152982,2522169410,152945554, 2522202336,2522234907,2522270199,2522300475,
6373427, 2522344770,2522628411,2522661826,2522695145,2522743214,2522803523,246464947, 2522891084,6840894, 2522950980,317177887, 2523086879,2523103248,2523119626,
8962185, 493666319, 2523136945,2523174369,2523220493,51380236, 2523267088,2523283466,422690868, 2523307220,2523398169,2523437493,2523483703,125583397, 2523530426,
@@ -4748,9 +4743,9 @@ static const unsigned int DictNodes[84251] =
2524168249,2524184642,2524217443,947454255, 2524250542,2524299723,2524351452,2524398937,1729037250,2524430402,2524463120,2524479507,2524495909,156155916, 2524512275,
2524528666,2395176962,2524546142,10650536, 2524594635,2524645893,2524884296,2525162825,2525219524,2525250379,2525317350,188957543, 2525375818,2525457739,2525496665,
2525528491,13713420, 2525571504,2525626411,2525659202,2525692341,2525724684,2525741082,201572358, 2525769036,2525855756,2525872154,2525888566,830947387, 2525932877,
- 2526004118,2526053576,2526085611,2526122019,113246511, 2526195022,2526298166,2526337370,2526380511,2526412810,381059094, 2526429611,2526461962,2526478358,381091856,
+ 2526004118,2526053576,2526085611,2526122019,113246511, 2526195022,2526298166,2526337370,2526380511,2526412810,381059094, 2526429611,2526461962,2526478358,381091856,
2526494732,2526511130,2526539087,2526621008,2526719313,2526834002,291110975, 2526921552,2526953947,2526991878,391022452, 2527063379,2527183370,2527217178,2527276372,
- 2527522133,2527560642,2527592476,197050370, 2527620438,602473295, 2527674434,1537491891,2527718743,2527800664,1271988234,2527903746,2527920166,719093797, 491226831,
+ 2527522133,2527560642,2527592476,197050370, 2527620438,602473295, 2527674434,1537491891,2527718743,2527800664,1271988234,2527903746,2527920166,719093797, 491226831,
27623903, 2527936524,406635834, 2527963458,1069563926,2528003195,379797558, 2528036007,2528095577,2528149510,484803023, 2528177498,2528397542,2528456027,2528559170,
2528592917,150570376, 2528652529,2528693647,2528755733,2528773204,2528832860,113246887, 2528947549,2529001494,2529017858,27607069, 2529045854,2529100686,1215283226,
2529165355,2529200069,2529231294,2529307999,2529378314,2529394704,1696972821,2529411518,138330133, 2529478915,2529543308,2529602912,201441823, 2529848673,2529886237,
@@ -4766,7 +4761,7 @@ static const unsigned int DictNodes[84251] =
3702807, 2537008514,2537226731,302123433, 134840360, 2537259071,1250248168,2537301345,2537340994,2537385347,47546404, 17006629, 2537549188,416759834, 2537655240,
2537729413,2537800113,2537832454,73449474, 5341457, 2198831, 2537860486,2538063894,1624868501,2538127820,2538161681,2538204551,2538246254,2538302856,1014431851,
2538373948,2538422338,2538466697,2538586149,2538602508,2538618962,512934363, 2538651717,2538686874,2538768117,2538815587,190202065, 569115586, 2538852783,2538897420,
- 2538913830,2300889271,2538941834,2539144997,2539193238,2539242771,2539291586,2539323408,2588683, 2539351435,410845487, 2539449740,2539548045,2539637275,363663496,
+ 2538913830,2300889271,2538941834,2539144997,2539193238,2539242771,2539291586,2539323408,2588683, 2539351435,410845487, 2539449740,2539548045,2539637275,363663496,
2539683880,2539700226,645693478, 2539728270,2539831308,2539847718,1064419355,2539875727,2540077593,2540143646,552878118, 2540175362,2540191770,294371357, 1236975700,
2540214487,117899728, 1713128793,2540274600,2540306478,2540356745,3245086, 2540404764,878886943, 2540422344,2540453904,307298316, 2540470288,1889222682,1172013078,
2540498320,31424540, 2540585001,2540603904,2540650538,2540666985,727449666, 2540699659,2540716072,1250607115,2541170065,2541268370,2541341348,2541415827,2541568679,
@@ -4777,7 +4772,7 @@ static const unsigned int DictNodes[84251] =
2544304130,1032142858,2544320514,346488870, 891192129, 2544348577,2544397730,2544446883,126500866, 55754790, 465601007, 3211799, 2544577956,2544718858,1196933179,
2090077209,2544774565,2544926722,2544944158,2544975888,153993267, 2544993578,124928962, 2545041492,2545074268,2545118353,1210138655,3473437, 17842478, 2545200550,
5866405, 2545303611,113115164, 2545348007,2378629142,2545452859,109051992, 139477046, 2545507756,2545566632,2545598506,2545614979,2545631241,2545647753,2545664002,
- 1362313254,2545680424,423804954, 2545698484,5324909, 2545779665,2545839528,2545916889,1843921371,2545986985,2546331050,2546494891,189252018, 2546593196,126763485,
+ 1362313254,2545680424,423804954, 2545698484,5324909, 2545779665,2545839528,2545916889,1843921371,2545986985,2546331050,2546494891,189252018, 2546593196,126763485,
2546681533,2546769454,371310684, 2546810892,2546827290,191653904, 3244079, 2546855341,2547008681,2547041143,2547074207,6602780, 2547105804,2547122627,2547157560,
2547199406,2547384821,2547417109,2547434397,2547527087,2547625392,2547662879,2547679264,597196810, 110299913, 2547712016,13860865, 2547728843,2547780819,2547826753,
2547876649,2547909886,2548025611,2548079598,2548144270,2548188946,2548247985,1237155846,2548329906,2548498478,1976270858,1037828399,2548559283,284704790, 2548597698,
@@ -4788,20 +4783,20 @@ static const unsigned int DictNodes[84251] =
2550984123,2551070786,2551103548,1640099260,2551197117,2551366479,1452212715,2551399624,2551440419,2551508414,2551595467,2551647649,2551726533,2551770559,2551892887,
444826633, 2551950784,2552073427,491831324, 2552119726,1982480394,2552070146,43237407, 2552169922,2552217630,2552251735,110232003, 2552053817,2552311233,1138229250,
2552414234,2552430623,269893651, 2552458690,2552643639,4980776, 2552709122,45629466, 2552726038,2552758371,2552795136,2552841084,2552901059,2553071161,2553169723,
- 2553228740,2553298965,2273329627,2553317083,1032142860,2553349135,2553408965,2553736646,2553824575,2553889745,768770337, 2553937932,2553954330,2553971650,190644323,
+ 2553228740,2553298965,2273329627,2553317083,1032142860,2553349135,2553408965,2553736646,2553824575,2553889745,768770337, 2553937932,2553954330,2553971650,190644323,
2554015175,2554076878,25561574, 2554152037,2554201154,275103746, 2554267091,2554314818,1275773429,2554359240,2554478895,52822019, 2137096218,2554512774,2554577950,
2554609685,193708879, 1400438789,2554627072,2554661777,2554758153,2554789919,2554808059,2554867145,107159438, 604691444, 433669041, 2555036119,2555068500,2555101189,
2041725403,2555117652,2555162058,2555265784,2555300190,472255452, 917422106, 2555348353,533807120, 2555396098,329842724, 2555413327,1032208390,2555456971,2555743642,
3588150, 271630395, 2555805737,2555822840,1785741396,2555858370,2555915724,2556084323,2556116994,2556133414,2433237023,1623968681,401606131, 352927803, 2556149826,
558186498, 2556182988,2556227021,286244890, 2556446067,1629208578,2556486635,2556526594,199460043, 135151642, 1166934018,2556554702,2556620239,2556756034,2556800464,
2556863523,2736150, 2556921004,2556980689,2557217433,45613071, 2557281587,2360431, 2557329461,2557364145,2557428887,226476968, 906510338, 127336450, 2557476948,
- 302563628, 2557509698,2557542937,2557607962,25559579, 2557624425,2557657586,2557707348,2557755402,2557771786,2557788162,2557816274,2557870102,2557886495,129876728,
- 1902886922,2557903385,2557972201,2558034953,2558066719,2558083114,1972912138,2558099889,2558132245,2558149584,2558193107,2558313362,171606028, 2558363929,2113577,
- 2558438868,2060475325,50659351, 366914617, 2559126999,2559208920,2559459412,701710374, 2559492398,118882781, 2559526490,567164930, 1675722773,1397408609,115736676,
+ 302563628, 2557509698,2557542937,2557607962,25559579, 2557624425,2557657586,2557707348,2557755402,2557771786,2557788162,2557816274,2557870102,2557886495,129876728,
+ 1902886922,2557903385,2557972201,2558034953,2558066719,2558083114,1972912138,2558099889,2558132245,2558149584,2558193107,2558313362,171606028, 2558363929,2113577,
+ 2558438868,2060475325,50659351, 366914617, 2559126999,2559208920,2559459412,701710374, 2559492398,118882781, 2559526490,567164930, 1675722773,1397408609,115736676,
2559560417,2559658416,2559705935,8389873, 2559740360,2559787020,354549781, 2559803457,2559852582,19251630, 2559869442,2559903439,1419739152,2559946201,2560000430,
2560060890,2560114823,9126020, 714885715, 2560142811,2560345290,2560393228,2544500774,2560409681,2560442434,2560484387,2560552412,2560650717,2560722796,2560765406,
2560950703,2560983887,125584225, 2561016722,36306975, 2561065492,2561125855,2561229718,2561279315,2561343575,2561392645,2561412125,118243340, 2561469920,2561526193,
- 2561572995,19464322, 2561591767,20299907, 2561638831,237733466, 2561682913,2158035379,2561748450,2561870249,2561907863,2561966090,2561994211,3260876, 521486651,
+ 2561572995,19464322, 2561591767,20299907, 2561638831,237733466, 2561682913,2158035379,2561748450,2561870249,2561907863,2561966090,2561994211,3260876, 521486651,
2562387429,2562474827,2562541544,2562589918,2562649574,1890877462,2253209612,585122222, 2562780647,2562944488,2563014764,2563059177,2563200059,2563269448,2563342768,
2563375537,2563408792,2563457132,2563493684,2563572792,2563641980,205209631, 2563687923,2563719206,216006658, 2563736565,2563805324,2563850252,2563866645,1793130526,
210550803, 2563883046,2563899435,2563932242,2563976682,2564063711,2564107755,2564161574,2564177922,2564194314,2564210730,52330536, 2564238828,2564407380,2564441460,
@@ -4816,22 +4811,22 @@ static const unsigned int DictNodes[84251] =
2569039363,2569125910,2569154052,2569240597,539672588, 2569257814,2569307295,2569338967,2569388061,119357742, 1917045, 2569416197,2569470379,946880564, 2569502944,
2569547270,479133702, 1856847979,2569596423,2569831160,471679017, 2569863275,2569895974,2569913450,2569994299,2570027076,2570087944,2570125358,2570174523,2570219017,
2570290114,2570323746,45137936, 2570354742,2570388897,2570436715,2081424252,2570469378,2570486439,2570530314,2570642040,2570726923,745373727, 1966063621,2570874380,
- 2571059714,422019084, 2571103757,2571234830,2571300367,2571404631,2571452515,2571486302,121651231, 2571534639,2571578896,2571698242,2571730986,2571747350,247234581,
+ 2571059714,422019084, 2571103757,2571234830,2571300367,2571404631,2571452515,2571486302,121651231, 2571534639,2571578896,2571698242,2571730986,2571747350,247234581,
124796954, 2571775505,2571814549,2571878871,2571911173,276529168, 2571927776,2571969194,2572086802,2572304875,937656358, 2572348947,706101723, 2572412846,2572451948,
2572485526,2572545556,2572648477,2572665724,2572714006,196886540, 2572730859,2572764689,2572795916,2572813048,2572845101,2572889621,2572945990,379815256, 2572987926,
2573053463,2573320198,47398952, 2573336668,335332804, 2573369365,2573385782,2573418577,2573452194,2573495832,2573615141,93978636, 2573643289,1765031977,2573708029,
2573781588,304809812, 153174058, 2573839898,2573970971,2574026580,1701905346,2574085660,2574221378,235389020, 2484093775,2182676546,2574256279,2574303263,2574319653,
2154431050,2574347805,2574483950,2574516761,2574585350,5947397, 2574647312,2574663718,1038254092,262127656, 2574680170,2574773790,878886940, 2574937631,2574992207,
2575024611,2575058466,2575106895,2575140729,2575187999,2219491330,2575210854,2575270112,48021541, 2575303736,2575380000,1206421141,2575429153,2575478306,2032402474,
- 2575613990,2575630338,627425711, 2575647147,2575686038,2575746537,1973567510,2575805987,2575990807,1383481373,2576018980,230309914, 2576068133,2576154716,545161228,
+ 2575613990,2575630338,627425711, 2575647147,2575686038,2575746537,1973567510,2575805987,2575990807,1383481373,2576018980,230309914, 2576068133,2576154716,545161228,
2576188071,2576220191,2370764857,30392326, 2576248358,2576351711,2576384002,2576401063,286310402, 2576441560,2077262307,2576482361,2576498690,257638406, 2576515074,
2576531558,2576564527,2576596998,142589973, 2576614004,2576646175,163020916, 2576674343,412682923, 3213737, 2317795394,44531754, 2576739880,2576973827,2576990217,
- 2577006598,2577022981,198672519, 2577040587,1240072234,2577072184,2577104914,2141749250,2577121713,2577154069,70893575, 2577182249,2577285126,2577301899,66814347,
- 2577334284,4948010, 2577743887,2577760268,2577776661,2577793036,2577809434,254443526, 2577826005,2998409, 2578247212,2578317417,2578350967,2578389104,131793740,
+ 2577006598,2577022981,198672519, 2577040587,1240072234,2577072184,2577104914,2141749250,2577121713,2577154069,70893575, 2577182249,2577285126,2577301899,66814347,
+ 2577334284,4948010, 2577743887,2577760268,2577776661,2577793036,2577809434,254443526, 2577826005,2998409, 2578247212,2578317417,2578350967,2578389104,131793740,
347668546, 2578481912,2578514856,2578546775,2578597272,2578645451,2578695062,2578755117,2578869806,169332196, 2578956965,2579021855,2197356, 2579038213,2579055067,
442253914, 493666330, 2579099183,2579181104,273974008, 2579305462,2579365898,2523176, 2579394097,2579464246,2290106427,2579508786,895811665, 153714730, 2579579932,
- 2579612573,2579697179,2579759643,2579792905,2579824747,2579869235,2580016692,2580086876,18120706, 2580119604,843120666, 184909890, 2580152857,2580217951,127631381,
- 2580278837,2580377142,1501909214,2580475447,2580606520,2580725902,2580770361,2580840507,2580881656,2580983354,151093260, 2581098043,2581366080,911835157, 911835147,
+ 2579612573,2579697179,2579759643,2579792905,2579824747,2579869235,2580016692,2580086876,18120706, 2580119604,843120666, 184909890, 2580152857,2580217951,127631381,
+ 2580278837,2580377142,1501909214,2580475447,2580606520,2580725902,2580770361,2580840507,2580881656,2580983354,151093260, 2581098043,2581366080,911835157, 911835147,
2581399008,2581431137,2581463720,630128666, 2581496720,2581529468,2581578250,2581622332,2581758817,1445101578,2581792496,2581823572,301006876, 2581868093,2582020639,
169181200, 2582069332,55853087, 2582104331,174162355, 2582151639,232292354, 2582184017,2582228542,2582315530,434405388, 2582359615,2582687296,2582742218,2582801985,
585810001, 2582904898,2582939016,2582982210,2583178819,2583265312,2583299863,2583347212,1263468554,2583364129,2583414002,1295566284,2583480470,2583528764,1657667625,
@@ -4840,17 +4835,17 @@ static const unsigned int DictNodes[84251] =
134840356, 2584592687,2584636999,2584686152,2584756824,2584789046,2584821866,2584903983,2584948297,2585018406,176915347, 2585034788,2585051174,2585067536,2585083923,
2585100304,276283411, 2585116738,2585161290,2585259595,1941405851,287573803, 2585673800,2585745076,2585800268,2585872979,2585935874,2585952297,164036629, 2585968877,
8400243, 2586004792,2586070195,439156748, 363660278, 2586117186,2586189707,735412290, 2586237926,2586308173,8389572, 2586411467,2586471779,2586535128,1448706088,
- 2586619470,1772797973,2586656799,244056695, 2586685007,17221377, 2586816080,2586918943,1261552843,2586947153,2587131945,2587148319,2588682, 2587164684,20365349,
+ 2586619470,1772797973,2586656799,244056695, 2586685007,17221377, 2586816080,2586918943,1261552843,2586947153,2587131945,2587148319,2588682, 2587164684,20365349,
2587181515,2587230254,2587280120,2587312523,172834972, 2587347878,2587389522,296632779, 2587618899,2587705410,1010679892,2587749972,2587913813,2588082192,2588098601,
2588115498,2588131349,2588147734,2588164108,113836586, 307511312, 2588187327,2588246553,2588312650,2588356182,1126098831,2588459018,2588487255,2588590101,2588606495,
- 2588625311,117903270, 2588672054,2588716632,127697120, 2588803126,2588847705,2588984905,2589066216,2589114475,2589149370,2589179963,2589213303,2589257306,644252693,
- 2589360599,2589393743,2589437531,2589474832,2589492723,902889503, 52363321, 2589524427,244056163, 2589584988,2589688045,2589720642,2589765213,2589818923,50987024,
- 2589851700,2589884426,385500081, 2590273119,2590420576,2590507010,118194182, 2590524446,2590561515,2590617185,2590687254,1173483106,2590715491,2119155728,898793488,
+ 2588625311,117903270, 2588672054,2588716632,127697120, 2588803126,2588847705,2588984905,2589066216,2589114475,2589149370,2589179963,2589213303,2589257306,644252693,
+ 2589360599,2589393743,2589437531,2589474832,2589492723,902889503, 52363321, 2589524427,244056163, 2589584988,2589688045,2589720642,2589765213,2589818923,50987024,
+ 2589851700,2589884426,385500081, 2590273119,2590420576,2590507010,118194182, 2590524446,2590561515,2590617185,2590687254,1173483106,2590715491,2119155728,898793488,
226820112, 2590870832,2590920540,2590967702,2591022379,2591064587,2591113675,181260610, 2591167016,1675198502,117407760, 2591223396,2591359300,2591420005,2591524817,
- 2591572052,2591604752,2591621146,2591637541,460406836, 2591665766,2591818329,2591850561,324567076, 2591901044,2591949762,2591982002,52609046, 2592015353,188056446,
+ 2591572052,2591604752,2591621146,2591637541,460406836, 2591665766,2591818329,2591850561,324567076, 2591901044,2591949762,2591982002,52609046, 2592015353,188056446,
2592108135,2592161802,2592180159,2592279309,2592344100,103743519, 2592391663,2592426721,2592522250,27852831, 2592550504,2592621491,2592655710,2592714345,2592801945,
223395846, 2592850013,2592899990,2592960106,2593162728,2593215244,2593259546,2593275909,2292350978,2593304171,2593542030,2593588916,2593670409,307216918, 2593703231,
- 2593767855,2593800211,55754789, 2593817017,1098892262,382730252, 2593865812,2593910380,2593947680,494043188, 2593981756,2594030052,2594090605,2544500774,932331586,
+ 2593767855,2593800211,55754789, 2593817017,1098892262,382730252, 2593865812,2593910380,2593947680,494043188, 2593981756,2594030052,2594090605,2544500774,932331586,
2594177964,2594242991,2594287214,584482822, 1714618380,2594336367,2594483824,2594647665,2594685035,656867338, 2594717698,896663983, 1258618882,2594739729,2594783339,
510083087, 2594826157,45449323, 2594932200,194069002, 2594981352,2595040882,2595274798,2595325920,247234598, 2595374423,317947990, 2595423623,113229940, 2595455057,
110215928, 2595487760,2595504168,2595520518,2595536908,2595553291,110723112, 2595569730,2595602495,2595635226,824016898, 2595663475,2595733807,2595769986,2595827316,
@@ -4859,58 +4854,58 @@ static const unsigned int DictNodes[84251] =
2597355536,1002848282,2597372791,2597416568,2597519413,2597552134,783073296, 210124822, 250576915, 2597569383,2597601295,2597617730,2597650863,2597683266,2597716059,
2597748802,2597782936,2597830668,2597847133,2597896651,2597957241,2598109727,2598158358,1086455820,655376411, 178078658, 2598186618,2598273040,2598289414,1525104659,
1019937645,2598305804,1628029982,2598334075,2598420492,1100152939,2598437401,2598514300,452018185, 2598727293,156829133, 2598799919,2598863755,2598928410,2598951614,
- 2598993972,1769833048,203819505, 2599027640,2599076142,2599108662,2599141388,2599158258,2599207164,2599241319,2599288858,2998293, 2599305254,315917224, 567787548,
- 2599620563,2599666091,2599710335,2599911426,2599927837,2599944221,9519140, 140788472, 341016592, 2599961035,2600021632,2600091732,2600136321,2600218242,5867706,
+ 2598993972,1769833048,203819505, 2599027640,2599076142,2599108662,2599141388,2599158258,2599207164,2599241319,2599288858,2998293, 2599305254,315917224, 567787548,
+ 2599620563,2599666091,2599710335,2599911426,2599927837,2599944221,9519140, 140788472, 341016592, 2599961035,2600021632,2600091732,2600136321,2600218242,5867706,
2600321547,1505443906,2600371701,7389300, 2600423144,2600491560,2600562307,704037772, 2600648716,315916398, 294650457, 2600676996,2600779835,2600812768,2600845615,
- 2600878539,124076070, 2600939141,1818968288,2601074700,1353039882,2601091503,2601135750,2601273281,2601320507,859767267, 2601365127,2601418811,2601463432,158501543,
+ 2600878539,124076070, 2600939141,1818968288,2601074700,1353039882,2601091503,2601135750,2601273281,2601320507,859767267, 2601365127,2601418811,2601463432,158501543,
2601604074,2601664617,2601697735,2601746488,2601791113,2601926678,2601946415,2601987722,2602074155,2602106934,55853094, 85098511, 2602151563,147407608, 2602272405,
1814774618,1011417100,2602347392,271925258, 2602405967,2602467357,283836891, 2602483750,2602500155,2602544780,246334428, 2602663967,2602680330,114114602, 2602697617,
- 2602757773,2385231977,2602827839,2602860590,266027479, 2602910709,2602987150,316735713, 2603025799,2603058490,2603106369,2603155503,2603188264,212320287, 420757523,
+ 2602757773,2385231977,2602827839,2602860590,266027479, 2602910709,2602987150,316735713, 2603025799,2603058490,2603106369,2603155503,2603188264,212320287, 420757523,
2603204911,2603237402,2603265646,1474528230,2603685465,1035337781,1781907468,2603749807,2603806352,3736074, 2604073013,2604106575,2604150417,2604220500,2604255551,
515834394, 637321226, 2604286011,2604319567,1079296002,2604352599,2604400699,2604437504,2604482660,2604527250,2604712969,2604744741,2604761169,2049671189,1232290704,
375488629, 2604805779,2604861851,2604927493,1430077442,2604986004,196149277, 2605057045,2605117077,2605156183,2605219871,2605236240,2605252619,2129608716,2605270468,
- 2605313686,2605411991,2605498427,131875130, 618348560, 2605543064,2605744154,2605772211,2605820621,1705902759,2605879704,187236373, 2605959197,1072431114,551832413,
- 2605957132,2606018201,2606072439,2606104598,1588887591,2606121390,45858854, 2339946555,2606182042,2606263963,2606517450,2606580249,2606646684,2606694937,285345160,
+ 2605313686,2605411991,2605498427,131875130, 618348560, 2605543064,2605744154,2605772211,2605820621,1705902759,2605879704,187236373, 2605959197,1072431114,551832413,
+ 2605957132,2606018201,2606072439,2606104598,1588887591,2606121390,45858854, 2339946555,2606182042,2606263963,2606517450,2606580249,2606646684,2606694937,285345160,
2606759995,2606792706,226574807, 143394253, 2606809576,2606841940,2606875384,119226406, 2606909999,360841238, 2606984860,2607104012,23789574, 2607120436,2607154044,
- 112935426, 2607214237,2607419737,2607481283,2607517211,27607068, 2607591070,137102656, 191070210, 2607853215,2607955994,93962256, 2554742393,2607972368,254345238,
+ 112935426, 2607214237,2607419737,2607481283,2607517211,27607068, 2607591070,137102656, 191070210, 2607853215,2607955994,93962256, 2554742393,2607972368,254345238,
2608000672,2608187450,2196766746,2608250882,923025429, 2608268111,2608311969,2608393890,2608463964,2608496724,2302394394,371343372, 2608541347,2608606884,2608726121,
- 269713436, 2608758889,2608791611,2608824331,751158210, 2608852645,2608983718,2609054873,2609102889,2609121783,132792342, 2609153046,2609202183,2609266699,787169712,
+ 269713436, 2608758889,2608791611,2608824331,751158210, 2608852645,2608983718,2609054873,2609102889,2609121783,132792342, 2609153046,2609202183,2609266699,787169712,
2609283082,2609300350,2609332683,2609391306,2609449516,1052869075,2609479682,2609496171,2609529940,2609577994,833388560, 2609594827,2609643601,2609676314,1474461722,
2609852072,2610167829,2610185363,2610217390,521617414, 2610278057,2610350219,834912674, 2610413608,2610429954,2610446357,651591682, 2610474666,2610593849,2610610178,
- 2610626586,146489375, 2610646099,1106296874,2368384683,2610708964,2610757654,2610774037,2610802348,2610858042,2610921488,2610937882,1248215045,2610966189,46776322,
+ 2610626586,146489375, 2610646099,1106296874,2368384683,2610708964,2610757654,2610774037,2610802348,2610858042,2610921488,2610937882,1248215045,2610966189,46776322,
2611006761,2611068980,2611102155,2611162798,110248427, 2611302354,2611375791,2611474096,1126629834,2611560514,2611601230,1586167829,2611670705,2611729149,2611790356,
2611850930,2611916467,2612135441,2612170356,2612217244,2612276916,2612342453,2612429102,2612461652,2612500569,2612555446,2086993922,2612658192,2612674586,1585938453,
1413578767,2612691028,2612723750,184926227, 1104415070,2612752055,2612839624,1218546844,2612883128,2612953391,2612985866,1663401986,490651658, 2613014201,2613102397,
404029466, 2613153898,2613231700,2613264699,6701062, 195084331, 2613309114,2613653179,2613691278,2613755935,766017546, 2613773484,1465237516,2613823382,2613870628,
- 1181761541,8701561, 2613898940,2613964477,2614116655,29769766, 274319546, 2614149158,258768950, 2614177470,2614275775,2614329946,2614362196,2614403320,315277331,
+ 1181761541,8701561, 2613898940,2613964477,2614116655,29769766, 274319546, 2614149158,258768950, 2614177470,2614275775,2614329946,2614362196,2614403320,315277331,
2614505152,2614587073,2614624683,2614657046,1112440884,2614673429,2614689808,2614707931,2614738960,2614755347,623411219, 2614771764,2614816025,2614880456,2614935574,
2614952002,2614985618,2615033915,451477542, 2615078594,2615329195,2615362476,2615427878,2615460838,2615492689,2615525835,2615574538,2195876, 2615602883,2615672898,
2615706922,652378219, 2615766724,869615802, 2615824067,122601510, 2615869506,2615914181,2616016922,1321123852,2616045254,2616104595,2616176327,2616279106,2616323784,
- 2616454857,2616524811,2616541186,1534541845,1168623089,2222882882,2616569546,2616919271,2616978651,55754758, 2617032745,442925072, 2617049147,2617093835,4112396,
- 1924235714,2617163835,417906707, 2617196625,984990560, 2617241292,181257069, 477282316, 2617345553,2617376784,92815389, 2617405133,2617470670,2617573392,2205467,
+ 2616454857,2616524811,2616541186,1534541845,1168623089,2222882882,2616569546,2616919271,2616978651,55754758, 2617032745,442925072, 2617049147,2617093835,4112396,
+ 1924235714,2617163835,417906707, 2617196625,984990560, 2617241292,181257069, 477282316, 2617345553,2617376784,92815389, 2617405133,2617470670,2617573392,2205467,
291022176, 2617601743,2617672713,2617716432,2617753645,2617798353,2617896658,2617955857,2618011347,2618231327,2618279017,2618328211,2618359848,2618376218,2618393035,
- 2618441766,966361115, 2618458426,2618491306,2618523753,725909541, 2618568404,3246266, 113115151, 2618633941,389136699, 2618715862,2618819051,2618851873,479133734,
- 2618900518,2618918777,342066082, 2618966305,2618998824,351911993, 2619015190,56115216, 2619326490,147406880, 2619348947,2619427315,2619523980,271384605, 302252044,
+ 2618441766,966361115, 2618458426,2618491306,2618523753,725909541, 2618568404,3246266, 113115151, 2618633941,389136699, 2618715862,2618819051,2618851873,479133734,
+ 2618900518,2618918777,342066082, 2618966305,2618998824,351911993, 2619015190,56115216, 2619326490,147406880, 2619348947,2619427315,2619523980,271384605, 302252044,
2619572984,147816458, 2619605099,1173159995,2619649752,122683408, 2619705939,2619780825,2619862746,2620080144,2359754, 2620096971,2620148700,2620195931,2620227979,
2620272347,8390714, 2620354268,2620425154,2620457415,2620506153,226443305, 2620522527,2620539482,2620571960,1729872175,2620616413,2512306213,2620751884,2620768282,
2620784756,1633533992,136790022, 2620801065,2620821035,2620932108,2620948508,458981388, 2620965624,169967622, 2620997678,2621047959,2621107934,2621173471,2621244544,
2621304544,2621435617,2621489611,24297994, 1463501643,2621550306,1333870602,2621653021,2621672324,2621746915,793051158, 2621959908,2622032375,2622063983,2622131480,
669353129, 3866690, 2622189285,2622243742,2622275605,119488524, 2622292034,2622325616,2622374818,2622418662,2622506409,2622540255,2622586939,2622619705,1671135244,
- 2622636841,2622668891,2622701580,186040326, 2622729959,399425552, 2622882705,2622942952,2622997780,2623045663,2623062028,3228087, 2623078487,2623128786,6455312,
+ 2622636841,2622668891,2622701580,186040326, 2622729959,399425552, 2622882705,2622942952,2622997780,2623045663,2623062028,3228087, 2623078487,2623128786,6455312,
2623565545,2623651852,51593273, 2624057067,2624162206,75579404, 2624209379,2063269890,2624249852,2624290835,2624307222,1071923210,2624324043,2624372742,2624389179,
2624424032,2624525365,2624586872,1840267266,2624618508,1021607978,394461213, 2624634882,2624651274,393543690, 2624667650,2624690711,2624734303,2624799867,2624831519,
2624847893,604274709, 2624864480,2188443667,2624897833,2624929794,2624946195,2624962581,546422838, 2624979052,2625013055,47874050, 2625078697,2625110037,2625126426,
135643167, 2625142815,2625159607,2625192046,2625225007,2625269484,2625323916,2625377320,2625437707,753188895, 2625454086,73531398, 2625479640,2625536010,2625553694,
2625601620,2625634347,2625667511,2625711853,2625782361,2625814547,2625830933,2625848188,2625897440,2625946969,2625978827,2626036768,1569488917,2626076774,2626109899,
- 2626159051,2626208788,2626256927,109183017, 2626273960,2626306058,156188684, 2626322458,2626338879,2626371615,2626388992,2626420960,2626453510,2626469919,116638581,
- 2626486331,2626527795,1296826389,2626584601,2626617410,2626650122,2626666498,1357365269,2626684456,2626752648,2626781194,247234562, 678248488, 2626797634,743161897,
+ 2626159051,2626208788,2626256927,109183017, 2626273960,2626306058,156188684, 2626322458,2626338879,2626371615,2626388992,2626420960,2626453510,2626469919,116638581,
+ 2626486331,2626527795,1296826389,2626584601,2626617410,2626650122,2626666498,1357365269,2626684456,2626752648,2626781194,247234562, 678248488, 2626797634,743161897,
2626830382,2626880513,2626928642,2626945034,2626961840,2626994653,2627038958,2627190810,2627207199,2627224458,1229750293,2627268335,2627338280,2627354636,2627371018,
2627388023,2627420198,193200164, 2627436856,179716122, 2627469751,2627502998,2627551300,2627612400,1078002609,2627682363,2627715091,2627731487,2627747899,2627783873,
2627829816,2627865469,2627911711,2627932149,2627960940,2627993621,2628010024,2628026795,2628059179,2628091925,165724761, 2628108398,2628153073,2628225911,2628267425,
955645954, 2628305775,2628355010,143294546, 2628387353,2628452371,2628468757,2195570754,2628485227,2628517916,2628535192,2628583434,565739551, 2628599820,2628616218,
2628632800,2628665428,2628698124,530055194, 2628726514,2628829244,2628911156,2628943878,2628972275,2629074954,2629091930,1895891558,2629126499,116850716, 2629173287,
1982470, 2629218036,2629320811,2629354384,460326700, 2629398261,2629619236,2629676790,2629730360,2629764034,2629807863,2629857016,2629894175,188940307, 2629910574,
- 2629971705,2630135199,2630189122,2630223134,2630271990,2630305364,32063570, 2630410220,52641813, 2630479610,2544304140,2630533423,6701093, 436731934, 109053377,
+ 2629971705,2630135199,2630189122,2630223134,2630271990,2630305364,32063570, 2630410220,52641813, 2630479610,2544304140,2630533423,6701093, 436731934, 109053377,
2630565900,2630582324,2630627067,2630814292,2630860812,2630877194,148144149, 2630893580,2630909962,214417449, 2630930528,2630980638,247775248, 159694864, 2631036668,
2631091705,2631173110,2631206095,2631281926,2631319618,2631352411,2631385547,2631434282,2631451083,127713301, 16826374, 2631511805,2631642878,2631745620,2631790335,
834601044, 2631974958,2632024090,117571836, 2632041340,2632089824,2632122890,1588953325,2632167168,786677836, 2632222248,2632286307,2632318978,1054654469,2632347393,
@@ -4920,7 +4915,7 @@ static const unsigned int DictNodes[84251] =
2634318769,2634362634,2634421181,2634477323,2634690316,2634812673,1383219237,2634843201,2634924130,2634968845,2635045872,2635099918,2398781532,2635170251,2635219050,
2635300946,2635335317,2635408110,2635467312,2635525903,2635776087,2635825455,2635858350,2635909019,2635973455,2636005432,404897802, 463110156, 2636042175,2636088209,
2636137461,2636210924,2636263184,51495857, 2636620818,2636693560,2636726298,2636743620,2636791824,2636808334,2636853009,2637049618,294142385, 2637141799,2637186270,
- 2637240226,2637311763,2637398116,2637431087,2637464745,272154732, 176982572, 329025135, 2637503886,2637547042,2637594640,2637611013,279969804, 2637629625,2196389,
+ 2637240226,2637311763,2637398116,2637431087,2637464745,272154732, 176982572, 329025135, 2637503886,2637547042,2637594640,2637611013,279969804, 2637629625,2196389,
2637721364,2637774914,2637808075,2637858121,2637908950,319422506, 2637983509,2638086236,1499906050,1033224223,2638119342,155975686, 2638168080,2198365, 2638190953,
2638266450,2638300850,2638331914,341885785, 2638348430,294699024, 2638393110,2638458647,2638512194,3178537, 2638692378,2638720793,2639183882,839827466, 2639200738,
338145050, 2639302526,711459793, 2639430686,2639462421,2639478796,2639495275,955695106, 2639527938,2639544346,2639560746,269107212, 2639577126,2639593503,2639610093,
@@ -4937,16 +4932,16 @@ static const unsigned int DictNodes[84251] =
2188443669,2644297648,2644328450,225575543, 2201960458,2644345291,2644394416,1450131494,2644428201,2644460057,2644525862,2644557826,2644574218,2407170050,2644602663,
2644853415,2644897576,2645016635,2645049356,2645065743,1383596053,2645083045,2645118669,2195764, 2645180846,2645229871,46514214, 2645263288,2645311554,2645344687,
2645377463,370443132, 2645409879,2645458963,2645475359,2645491728,2645508929,2645540904,2645557260,2645573654,2645590018,2645606410,2498379786,2645634857,2645689546,
- 2645741478,2645786719,2645836793,659914762, 2645918149,2645962538,2646197619,2646229038,2646278170,2646296590,2195547, 892157964, 2646343746,8400683, 599343126,
+ 2645741478,2645786719,2645836793,659914762, 2645918149,2645962538,2646197619,2646229038,2646278170,2646296590,2195547, 892157964, 2646343746,8400683, 599343126,
2646376515,2646460292,2032599800,2646523910,2646540307,2646556787,2646573092,8978438, 2646594235,2646655498,2646687754,2646704130,2646720540,432848918, 2646737656,
2646769748,2646803486,2646835210,2646851643,2646884389,2646900767,2464464906,1371734025,2646917208,2646961964,2647098023,212385802, 2647130207,2647179266,2647195679,
27328522, 2645131276,2647212069,24297775, 2647240493,2647346197,6406172, 2647425655,112934966, 2647457846,2647491658,2647535406,140247719, 2647699247,2647770914,
- 1126088788,2647801932,1257897994,2647846704,2647916833,2647949328,1286520847,2647965702,12763154, 2647994161,2648048376,2648092466,2648179083,4948025, 433750100,
+ 1126088788,2647801932,1257897994,2647846704,2647916833,2647949328,1286520847,2647965702,12763154, 2647994161,2648048376,2648092466,2648179083,4948025, 433750100,
2648211759,1564410535,2648256307,2648296604,2648342549,1899429904,82280450, 2648359718,2648391696,1202585629,75563027, 2648293378,2648518452,2648829330,2648899621,
882032662, 2648920036,366788707, 2648965161,2648982104,2649014806,2649047099,27590682, 2649091385,2649161780,2649194512,1203339279,2649210961,2649243702,2649276421,
2649293815,2649370421,2649435958,2649473026,2649489490,139984898, 2649534263,2649616184,588023658, 1960854105,117572928, 2649845561,460898396, 2649901585,2649987282,
2650058554,8398646, 52363290, 2650255163,2650353468,2650390544,4292845, 2650419005,2602074171,2650506270,2650538016,2650570778,132857896, 2650588436,2650636316,
- 2650652712,2650669075,212107301, 2650685471,147013669, 2650713918,2629238891,25559932, 2650867564,380895298, 2650910527,2650980363,2650996742,2651013132,191053881,
+ 2650652712,2650669075,212107301, 2650685471,147013669, 2650713918,2629238891,25559932, 2650867564,380895298, 2650910527,2650980363,2650996742,2651013132,191053881,
444809275, 1032142879,2651041600,2651320129,2651391183,2651458261,599343146, 2651504650,2651521066,895991874, 2651549506,2651668502,2651685711,2651729731,2651800515,
2651850910,184041709, 2651893572,2652046204,615071765, 2652106565,2652422236,2652454938,199000076, 2652472618,269107212, 2652520460,2652536834,80936986, 2652554249,
2652586585,2652618836,2652651943,1723564091,2652712774,85098508, 2652794695,2652898542,2652934518,2652962854,1534902288,2652991304,2653061122,83197962, 2653089609,
@@ -4961,14 +4956,14 @@ static const unsigned int DictNodes[84251] =
1225998367,2074427408,2657808217,2657939290,1878065168,2658013307,2658058251,2658074640,2658091034,2658107407,183369750, 2056159234,2658135899,2658239988,2658287632,
2658305025,2658354588,2658404706,610402319, 219463692, 2658452980,2658500634,289996842, 2658517011,2658533378,2658549868,116342815, 1357447234,2658582627,2658615338,
2658632112,1878474804,2658664469,901185558, 2658684780,2658742108,2658812755,2658877476,2658893835,2658918446,2658975968,2659008543,5866074, 2659025390,2659058657,
- 2659090453,264945695, 2659113840,2659190723,2659237954,2659271568,2659303727,4408129, 2659348317,2659402265,2659479390,480871479, 2659601156,2659649543,116375983,
+ 2659090453,264945695, 2659113840,2659190723,2659237954,2659271568,2659303727,4408129, 2659348317,2659402265,2659479390,480871479, 2659601156,2659649543,116375983,
201443639, 2196554, 1591607298,2659708767,2659795078,30589060, 2659811867,2659844150,2659876875,2659905376,59293833, 2660040725,2660057119,2660073919,2660106281,
- 2660122626,131989533, 202522662, 1164591143,2660139115,2660171788,2660188186,2660204768,2660237392,1329217578,2660282209,2660511586,2660664448,210042918, 204488726,
+ 2660122626,131989533, 202522662, 1164591143,2660139115,2660171788,2660188186,2660204768,2660237392,1329217578,2660282209,2660511586,2660664448,210042918, 204488726,
2660713208,2660746087,2041643018,2660777986,2660795596,611434533, 2660843536,1468792853,2660861690,2660892675,2660911960,2660970339,2523267103,2661025220,2661056522,
2661073788,2661122058,323748272, 2661138915,2661183332,2661335062,2661351738,2661384793,2661417065,2661449769,2661466124,2661482518,2661498892,402128922, 2661515553,
2661560011,2661629973,2661646348,741130266, 737902594, 2661662739,131760131, 2661687870,114212876, 2661728258,2661745091,2155069478,2661777492,2661810479,2661842956,
479133812, 2661871461,2661975070,2662006812,2662023170,1563115541,2662039855,2662084454,2662170655,381550603, 2662189278,2662239265,2660810755,2662285371,2662318708,
- 30392348, 2662362983,2662449190,2555084816,2662477672,2662547466,1427816883,1533526053,158533521, 2663088130,2663106033,104765555, 2663137289,2663153801,20250758,
+ 30392348, 2662362983,2662449190,2555084816,2662477672,2662547466,1427816883,1533526053,158533521, 2663088130,2663106033,104765555, 2663137289,2663153801,20250758,
2663170449,2663202858,16269322, 2663231338,2663252025,2663268393,2663284762,34226195, 2663301157,2663317561,61685797, 2663333898,2663350329,9535503, 2663366682,
2663383174,2244493324,2663399559,59375638, 2663858218,7602310, 2663886700,2663952237,2664099694,2664202306,2664236445,51593244, 2664284705,177179594, 2664334289,
2664382935,2664415234,2664432049,2664464395,1695137808,2664492911,2664579078,2664595478,2664611845,757776396, 2664628461,621576214, 2664661038,2664716224,2664787824,
@@ -4982,69 +4977,69 @@ static const unsigned int DictNodes[84251] =
1497366612,2669314050,1371586563,2669330926,55918623, 2669363243,2669408130,2669625428,933707778, 2669659455,2669731648,2669772822,180715551, 2343862766,2669791893,
2669838446,1032291808,2669883267,2670210948,2670395438,2670445015,2670477943,2670510090,150913045, 433161039, 2670529545,992641045, 2670592065,2670653317,2670706709,
2670723982,3244116, 2670800774,1782415401,2670943231,2670997383,2671117321,2671151870,2671181908,2671226760,2671374217,2671493579,2671550242,2033827906,2671624245,
- 2671659567,2671722498,128451074, 2671738988,2671772149,2671804459,2671837213,278544415, 2671854890,2671904182,3260459, 222086906, 1820066250,2671957002,307216819,
+ 2671659567,2671722498,128451074, 2671738988,2671772149,2671804459,2671837213,278544415, 2671854890,2671904182,3260459, 222086906, 1820066250,2671957002,307216819,
2672013194,2672226187,2672394324,299008021, 2672429038,29901226, 2672488332,610224191, 2672542167,2378629142,2672574502,44711967, 2672590882,2672705635,2672741828,
234176550, 2672803947,2672836663,2672902231,2672963469,2673067409,1621869045,2673143694,2146890, 2673296953,2673393771,2673429112,126025757, 184074271, 2673459267,
355731614, 669925402, 732135855, 497811487, 2673541227,316637260, 2673573981,2673624850,2673672202,2673688713,43384838, 2673717135,2674061200,159694850, 2674147358,
1111179276,2674192273,2674316283,119357479, 2674372498,2674524162,1087930374,2674540584,630472720, 17448972, 2674569107,2674727410,139968524, 303579172, 2674789017,
139329557, 2674864020,2674921806,2674966530,111280150, 2674982978,1252460776,2675016139,108315138, 546931288, 2675077013,2675142550,2675245099,2675277889,2675339159,
- 2675458962,1241333766,29476430, 301334830, 2675507303,2675601304,2675650457,2675736604,2675753019,569583632, 2675788276,2675836240,158810628, 2675896218,93700098,
+ 2675458962,1241333766,29476430, 301334830, 2675507303,2675601304,2675650457,2675736604,2675753019,569583632, 2675788276,2675836240,158810628, 2675896218,93700098,
2675983956,2676080740,2676113484,2676146631,2676195823,2676228135,2676261998,57032715, 2676349093,2676424710,2676443166,168935435, 2676502427,2676666268,2676763255,
- 212860949, 2676830109,2676900286,2676977566,284786707, 6373452, 2677059487,2677452704,2677637136,2677654767,2677686312,159432715, 171000111, 2677704692,150536246,
+ 212860949, 2676830109,2676900286,2676977566,284786707, 6373452, 2677059487,2677452704,2677637136,2677654767,2677686312,159432715, 171000111, 2677704692,150536246,
2677769535,297844774, 2677837500,2677883381,2677915708,2677999208,124472183, 2678070084,2678130677,1052001625,2678218308,153191873, 10829845, 2678277109,2678341653,
2046332994,2678358073,145440799, 2678374412,991051788, 2678402977,116375853, 2678489148,291095663, 1736540237,2678574011,2678652987,2678685783,209141766, 2678747042,
1549844506,158499841, 2678825801,2678898728,2678915103,2170126346,2678931562,2679025571,134513271, 2679079426,1769922, 2679114287,2679182777,2679271332,2679369637,
- 2679439398,2679455775,469043888, 5947433, 2679484326,2679537730,2679570735,2679615399,2679767534,2679801204,2679861160,2679932660,2680007097,2680078338,115507210,
+ 2679439398,2679455775,469043888, 5947433, 2679484326,2679537730,2679570735,2679615399,2679767534,2679801204,2679861160,2679932660,2680007097,2680078338,115507210,
2680095257,6701085, 1352877065,2680161670,2680237993,68599848, 2680369066,2680620127,2680693676,2680745899,1995211775,164380688, 2680832039,383402038, 2680876972,
2680938492,511574461, 2680991661,2681083823,2681176106,247840806, 2681192474,2681208884,2681242094,552862561, 112935014, 2681286574,2681488120,2681520651,2681581487,
- 2681630640,2681684040,2681749975,2681784294,2681842719,2681896998,2681913360,2342954, 282427423, 2681930265,2681997058,238551157, 2682063220,2682127529,2197282,
+ 2681630640,2681684040,2681749975,2681784294,2681842719,2681896998,2681913360,2342954, 282427423, 2681930265,2681997058,238551157, 2682063220,2682127529,2197282,
2682160011,2682225962,2682274552,2682306863,2682340342,2682384305,2682486794,2531422130,2682503713,34701499, 2682552322,1917463, 2682580915,137642519, 2682711988,
563298306, 2682814476,150093850, 2682830858,2682847248,2682863627,2682880432,2682914060,2682974133,311692506, 2683142190,2683191326,2683236278,266436610, 2683356572,
108511268, 2683404375,2683465655,2683556873,2683600898,250118154, 2683629496,2683717821,210042920, 2683782598,2683830282,2683847083,2683891641,2683994150,1857273892,
2684010498,2684028401,33113075, 2684071866,2684157983,2684174362,2684190738,933916, 2684210600,2684239912,1938685994,2684256296,2684272661,717209637, 2684289045,
2684305840,2684338204,2207675, 2684792764,1097749, 7143508, 2685027930,2685071293,2685142993,344081054, 2685192365,1020559467,1993211988,2685267902,2685317055,
279904267, 156123190, 2685452372,2685497280,809811994, 2685595585,2685682619,2685752274,134168630, 2685832489,2685895548,2685956034,2686136259,154042444, 2574614554,
- 2686300100,160759829, 2686365637,2686436179,115933222, 2686513094,2686550042,2686566402,952614933, 2686582800,2686599210,2686615984,2686649612,2686697580,446955536,
+ 2686300100,160759829, 2686365637,2686436179,115933222, 2686513094,2686550042,2686566402,952614933, 2686582800,2686599210,2686615984,2686649612,2686697580,446955536,
2686731087,519454739, 2686763046,2686779408,2686795818,180109343, 2686812176,128991339, 2686828796,2686861322,291504150, 79101958, 2686889927,2687009686,2687060468,
2687119304,1832517644,2687172707,2687205905,1457193807,2687250377,115720251, 1918976002,1206422578,2687496138,498221098, 2687643595,2494595100,2687696977,2687731651,
2687790302,2687872972,2687942682,880574753, 2687959467,920190997, 2688004045,2688092074,407666698, 1470332939,2688155667,2688172063,265682986, 2688200654,2688307010,
- 2688352278,519815170, 2688369099,2688417794,589987850, 2688446415,2688565270,2688586280,2688631817,2688664053,47611945, 2688696360,53690394, 2688719021,32833548,
- 2688761908,2688795678,2688828682,2688860188,884555788, 2688876556,821068585, 2688892974,2688942148,150389039, 2688996648,2689052624,2689181025,2689220662,23789578,
- 2689253392,2689269798,379256848, 2689286170,52510736, 3375142, 2689314769,2689548725,2689581476,255705119, 2689615020,2689675218,2689880141,2689941510,404897813,
+ 2688352278,519815170, 2688369099,2688417794,589987850, 2688446415,2688565270,2688586280,2688631817,2688664053,47611945, 2688696360,53690394, 2688719021,32833548,
+ 2688761908,2688795678,2688828682,2688860188,884555788, 2688876556,821068585, 2688892974,2688942148,150389039, 2688996648,2689052624,2689181025,2689220662,23789578,
+ 2689253392,2689269798,379256848, 2689286170,52510736, 3375142, 2689314769,2689548725,2689581476,255705119, 2689615020,2689675218,2689880141,2689941510,404897813,
2689957898,124862897, 2689974283,2689992720,2690039848,2690056202,2690072607,147505171, 2690090303,2690155361,2690196165,46448650, 2690252942,2690285570,2690303099,
2690334742,2690352789,2690417487,395345930, 2690450421,2690516835,2690580517,2183790604,2690596896,1421410335,45465657, 2690629686,2690662451,518291468, 2690695259,
262127632, 2690740179,2690809877,2690826262,2690843672,2690891792,2690908216,635978690, 2690940954,2690957333,2690974603,2691039319,119259142, 972996619, 2691094948,
2691137552,2691153935,1284718658,2691170310,200589333, 2691190267,2691252654,2691301386,2691317802,1217069068,2691335056,2691367371,2691416911,2691448878,2691498068,
- 2691542996,2691706837,2691772374,2691842090,2691858454,159367208, 2691874915,2691907615,288769907, 2691924014,2691979525,2692022284,2111406106,2692039287,174080142,
+ 2691542996,2691706837,2691772374,2691842090,2691858454,159367208, 2691874915,2691907615,288769907, 2691924014,2691979525,2692022284,2111406106,2692039287,174080142,
2692071859,2692106011,2692165591,2692329432,2692386473,2692442558,2692498883,2692546579,2692562946,2692579339,2692595743,607289354, 2692612150,2692644870,2692661263,
2692677648,2692694026,193593373, 2692711722,2692759574,286310412, 2692788185,2692973589,2693022920,2693056073,2693137409,800457305, 2693185557,2693214170,2693251531,
2693300306,2693345243,2693415765,2693464123,2693497592,639500720, 2693529602,2693545990,2693562374,44646405, 2693578849,2693652792,2693705692,2694016989,2694135814,
113082380, 2694164446,2694220623,2694275031,2694382476,2694433339,163643850, 2694513071,673825448, 2694545418,771359195, 190169126, 2694574047,2694692890,2694709324,
2694742032,2694758410,2694774800,2694791199,45907997, 2694808988,764510285, 2694868960,2694971476,2695004190,300056587, 2695039295,2695069748,187155032, 2695114721,
2695206086,2695283123,2695315468,2129979, 2695333353,2695393250,2695458787,2695512086,2695528469,2695544863,183975957, 2695567669,2695643595,2695702871,2695790894,
- 2695835620,2695922295,2695954954,2695988769,2696030347,2696085963,2696146917,558972944, 162250783, 2696216607,2696232982,2696249384,2097154, 2696277990,273272065,
+ 2695835620,2695922295,2695954954,2695988769,2696030347,2696085963,2696146917,558972944, 162250783, 2696216607,2696232982,2696249384,2097154, 2696277990,273272065,
2696413210,2696429871,739442709, 2696462402,2696495158,212189210, 2696527912,2696544322,2696577105,849183656, 2696622055,2696982504,1812250636,177143824, 2697118879,
2697150701,2697183298,2697224830,2697297941,547897356, 2159493158,2697326569,2697479488,647626794, 2697513947,5308705, 2697593845,2697658510,2697691587,2697736170,
533069908, 2697789452,204374054, 2697805890,2697839499,68242548, 2697904609,2697963977,2698035308,1727055192,2698068055,2698122964,2698216836,73531407, 2698281411,
2698313730,2698330122,281001996, 2698346548,2698385775,616792083, 2698428522,2698522603,2698681285,1271119888,2698743438,595198872, 794362129, 2698801132,2698920225,
2698952730,264437791, 2698981357,2699116976,2699149745,2699182096,2699199273,2699231664,578830395, 2699268006,203128844, 2699314409,2699363216,2699396072,2699444234,
1309999106,48545834, 2699460667,2699493452,2699527197,1115029542,349388816, 2699575362,2699608102,2699624486,2699640898,110248783, 2699685870,122322997, 2699854424,
- 1019938164,300924987, 2699886638,2699935770,123274063, 2699954407,2700052440,2700116428,2700151113,2700226543,2700488688,2700559859,2700591116,2700607498,849723413,
+ 1019938164,300924987, 2699886638,2699935770,123274063, 2699954407,2700052440,2700116428,2700151113,2700226543,2700488688,2700559859,2700591116,2700607498,849723413,
2700625978,1531260913,2700701682,2700820496,2700836874,2700853680,2080112699,283066410, 2700886075,2700931059,2700996596,138641879, 520700046, 2701165506,2701197338,
- 2701217746,2701289249,2701328921,2701406197,2701543294,823885862, 2701574236,2701606914,2701623307,2701639691,45613058, 2701656366,49479687, 2701688872,5308874,
+ 2701217746,2701289249,2701328921,2701406197,2701543294,823885862, 2701574236,2701606914,2701623307,2701639691,45613058, 2701656366,49479687, 2701688872,5308874,
2701705228,132777351, 2267054118,2701726158,2701770764,2701787174,9535504, 2701803566,2701853598,2701887869,2632466954,2701979638,2702045175,2702133558,2702180404,
2702213229,2702258168,2702356473,246087717, 2702438394,121077776, 154042395, 2702525581,2702585851,436601886, 2702706664,2702764928,2702831612,2702917750,2702950421,
628555795, 2702966812,2702983175,264159273, 2702999686,18677894, 2703015965,7307321, 2703290366,3244879, 2703606251,2703650815,2703720474,119358311, 2703749120,
- 2355249218,44253195, 341442986, 1369588887,2703831041,2703896578,2704002191,2704048134,2704064524,2150482030,2704080984,1962704912,2704116786,2704191491,577175558,
- 2704261204,2704297129,2704343056,2704359434,189071402, 1053556762,2704379587,2704437252,2704605408,271925264, 2195506, 2704637954,2704655467,198672396, 209338384,
- 2704687106,29622329, 2704715781,2704834602,2704850975,891633721, 732102658, 2704867330,51593227, 108707842, 2704896006,1131888678,2704977927,1341108232,4309925,
+ 2355249218,44253195, 341442986, 1369588887,2703831041,2703896578,2704002191,2704048134,2704064524,2150482030,2704080984,1962704912,2704116786,2704191491,577175558,
+ 2704261204,2704297129,2704343056,2704359434,189071402, 1053556762,2704379587,2704437252,2704605408,271925264, 2195506, 2704637954,2704655467,198672396, 209338384,
+ 2704687106,29622329, 2704715781,2704834602,2704850975,891633721, 732102658, 2704867330,51593227, 108707842, 2704896006,1131888678,2704977927,1341108232,4309925,
2705113119,2705129491,54820886, 503317513, 2705145987,120143878, 2705551369,2705637406,2705671057,2705719315,2705735719,2705772938,635977784, 2705868776,2705928202,
2706014251,2706052780,2706123896,2706211814,2706243596,2706259999,2706276358,428769282, 2706292820,2706326264,2706370571,2706458988,2706516342,865419803, 2706583564,
2706665485,536380263, 279923575, 2706731022,155975691, 3244120, 2706829327,2706849851,2706882636,2360350, 2706919301,348635202, 2707001198,1985052756,2707062815,
2707091472,2707157009,2707259398,8994837, 2707275878,2134949890,1024590261,2707309469,2707395012,216461330, 2707456809,2707489239,940654613, 2044805132,2707524021,
196001804, 2707599379,2707734554,2707750914,911442551, 2707767383,2707816547,2707849276,46088213, 2707932383,2707980372,2708013098,2708029872,2708063127,2708111382,
2708138528,2708193318,1177240084,1288110082,277970982, 2708210582,2708258866,2708291615,2708307987,636977455, 2708326429,2708373520,2708389903,165330966, 1591607312,
- 2708418580,2708455426,2708471818,2379481109,2708500318,2708631573,2708686485,141901864, 769900603, 2708762646,2708959255,2709028956,2709062539,2709127227,894615562,
+ 2708418580,2708455426,2708471818,2379481109,2708500318,2708631573,2708686485,141901864, 769900603, 2708762646,2708959255,2709028956,2709062539,2709127227,894615562,
2850831, 2709172248,2709242286,122486865, 2709293758,2709352473,141049892, 2709454888,2709471251,338493478, 2709494781,768458773, 2709549082,2709602370,2709159995,
2709647387,2709827612,879767581, 2709893150,2709947466,2709979983,2710012207,2710044710,2710062492,2710110218,2710126623,2710148308,401540126, 2710204447,2710277207,
2710326924,2710405186,2710437947,2710477705,2710536952,654018882, 2710569767,2710597664,2710663201,2710933108,2710979097,2711046003,2711077743,2711127389,2711177075,
@@ -5061,13 +5056,13 @@ static const unsigned int DictNodes[84251] =
2717319184,240189455, 2717347898,2717419298,2717450841,352370709, 2717483050,2717499414,2717528123,2717577276,2717691965,2717779144,2717811552,2717888574,2718089252,
356925469, 2718117951,235438146, 203818472, 2718183065,2718249024,2718318895,307462170, 2718351426,134840346, 2718396481,2718466060,2718482458,2718511170,2718745006,
2718794664,1447264340,1642053688,2718838851,2719006804,2719039498,2719055914,2719072322,2719110681,2719154222,404979724, 325238838, 2719215684,2719268948,1154056233,
- 2719301691,2719346757,2719400067,2719416451,16728201, 2719445062,1372880938,1421410306,2719581073,950239746, 158812464, 2719630159,47284230, 2719662111,252248093,
+ 2719301691,2719346757,2719400067,2719416451,16728201, 2719445062,1372880938,1421410306,2719581073,950239746, 158812464, 2719630159,47284230, 2719662111,252248093,
2719678516,2719711244,2719727626,2719744037,2719760410,211189800, 2720165960,2720247881,649314314, 2720346186,2720450121,140247800, 2720530514,289914901, 2720563304,
2720612383,2720628801,136855636, 2720677981,2720727066,2720743892,2720777468,2720919627,2721017932,2721106201,2721170251,2721235010,162546619, 2721267722,2721284125,
2721300492,424017946, 2721329229,2721464623,2721506814,477233154, 2721562655,1231356335,2721591374,2721808410,2721824780,691929090, 2721852447,2721906700,2721923082,
- 2721939875,412140993, 2721974254,244221039, 2722033743,2722115664,800227374, 2722240374,2722295889,2722345042,2722426963,2722512906,2722530198,2722590804,781221995,
+ 2721939875,412140993, 2721974254,244221039, 2722033743,2722115664,800227374, 2722240374,2722295889,2722345042,2722426963,2722512906,2722530198,2722590804,781221995,
2722709530,2722738261,229462761, 311198099, 2723069968,1154957328,2723086388,2723119203,2723164246,2723283371,2723328087,2723448106,296635044, 2723495990,2723529163,
- 416253039, 2723579254,188957143, 173113381, 2723636532,2723692686,2723726257,787120730, 2723770456,2723872811,885588052, 2723917913,116212157, 2724151349,468000460,
+ 416253039, 2723579254,188957143, 173113381, 2723636532,2723692686,2723726257,787120730, 2723770456,2723872811,885588052, 2723917913,116212157, 2724151349,468000460,
2724185648,282838185, 2724219590,2724351068,223723549, 2724409434,2724497967,2724560938,2724577302,2724593748,838452055, 119816718, 3588943, 2724638811,2724900956,
2724999261,2725101606,285130811, 2725117978,2725146718,2725249327,3736231, 2725281808,437534758, 2725298230,902889509, 2725330966,2725347371,2725392479,2725691484,
2725725574,2725790375,763920396, 2725822894,2725884000,2725953839,2725986306,2726002716,250937382, 2726031457,2726101055,2726135668,1062273026,139198486, 2726167377,
@@ -5075,61 +5070,61 @@ static const unsigned int DictNodes[84251] =
2726850660,2727178341,1057079312,2727240598,2727313953,2727362797,2727396753,3260718, 2727473254,2727559470,2727604327,2727691158,1503723536,2727744685,2727838381,
2727886946,2727932008,626376716, 2727985164,718962795, 2728001623,2728063081,139034680, 2728177770,2728250257,2728346494,470958106, 2728378665,64765973, 2728411620,
2728460290,650461194, 141295656, 2728489067,2728636524,2728751213,2728853506,249266186, 2728869919,2728886314,5177346, 227495523, 924566358, 194054619, 2728902748,
- 1040101486,2728947823,2729144432,2729230374,2729246758,236470284, 189464607, 2729264210,2729329487,2729369383,1017495568,133579806, 2729427247,2729459778,545031198,
+ 1040101486,2728947823,2729144432,2729230374,2729246758,236470284, 189464607, 2729264210,2729329487,2729369383,1017495568,133579806, 2729427247,2729459778,545031198,
2729492502,2729508866,397590538, 2729537649,2729607190,2729623583,2729639962,2729656322,2729672719,2729689313,2729721868,2729738278,391970873, 1472167938,2729754626,
2729771115,2729803786,2729820162,2729836555,2729852930,51593254, 2729881714,2730066414,664453146, 2730100084,491159659, 2730147899,2730193011,2730246146,1547157514,
2730262593,2730324084,2730541527,2730586229,2730684534,2730738264,2730770477,338346050, 2730804119,2730852439,2730913911,2730983489,1068597685,2731044984,2731100570,
2731180139,2731213745,2731245673,2731278873,45613082, 2731344175,549028600, 2731389049,230801410, 2731458619,2731492236,2731540934,2580922379,200589349, 2731585658,
2731671571,2731694296,794673753, 2731737103,1498906665,2731753509,1703215133,2731782267,2731896956,2731950134,2731983902,2732015717,146456595, 2732048420,2332622964,
- 2732064779,5177363, 2732082907,2732126333,2732195972,2732212355,18890770, 2732228615,2237104138,2732246591,573390889, 2732754488,2732830846,2732917545,2834471,
+ 2732064779,5177363, 2732082907,2732126333,2732195972,2732212355,18890770, 2732228615,2237104138,2732246591,573390889, 2732754488,2732830846,2732917545,2834471,
2732949525,2732977021,2733070519,2733240447,2733314270,2733371520,2733409913,2733457414,2733486209,2733539340,452853786, 2733568130,1497382951,2733666435,2733731972,
2733850634,67043349, 2733869847,153190482, 2733933487,540377128, 2734010501,2734148109,2734207110,781090822, 2734260276,47317033, 2734293076,2734325859,2734358612,
2734392058,2734436487,446414860, 1667874843,2734622145,2734665864,2734715017,2734768140,2423685146,2734796938,2118664202,2734885460,2182922252,2734932982,2734977163,
- 131072006, 2735096422,2735128598,2735144972,149504026, 2735161425,573571103, 2735194571,2735243267,48513027, 2735259686,2735276091,2735308855,2735375015,450593633,
+ 131072006, 2735096422,2735128598,2735144972,149504026, 2735161425,573571103, 2735194571,2735243267,48513027, 2735259686,2735276091,2735308855,2735375015,450593633,
2735419532,2735489090,2735521824,183369827, 2735566989,2735704486,2735769629,2735817758,193660706, 2735857039,2735915030,367443984, 2735931404,229687302, 2735958014,
- 2736013806,2736046317,1106100803,2736091278,2736376075,2736422924,6897771, 1016202249,2736451727,237731861, 2736521218,2736538062,2736599184,2736669131,127500300,
+ 2736013806,2736046317,1106100803,2736091278,2736376075,2736422924,6897771, 1016202249,2736451727,237731861, 2736521218,2736538062,2736599184,2736669131,127500300,
2736730257,2736877714,2736979974,2736997470,1051247069,2737051556,652772672, 2737094959,2737130800,2737176994,5342660, 2737210231,241991696, 1692058033,2737254547,
2737565844,2737684482,135184389, 385466460, 2737713301,2737877142,170885551, 156828495, 2737931887,2737979446,116376409, 2738022931,1052557354,2738110530,1657667620,
2738143291,275546143, 574914581, 2738188439,2738241557,24969347, 2738270360,2738389013,211910672, 2738405392,2738421776,219529254, 2738450585,210272278, 2738552859,
2738585646,2738634824,2738701321,2738733087,1255539159,2738749546,2554609670,2738832120,2738864220,2738909338,2739122331,2739241058,2739273744,1215283205,2739292090,
451313718, 2739351708,2739453968,8994827, 45334530, 2523142, 2739482781,2739761310,2739832199,2739864632,2739941535,2249261058,2740043881,2740088992,2740209028,
- 2740273218,2740305979,2740351137,2740470680,5308723, 2740518971,3211715, 2740551779,2740586847,2740638577,2740673781,56164374, 2740748718,2740809890,2195697,
+ 2740273218,2740305979,2740351137,2740470680,5308723, 2740518971,3211715, 2740551779,2740586847,2740638577,2740673781,56164374, 2740748718,2740809890,2195697,
2740957347,2741240111,2741275110,119439414, 2741306187,2741383332,2741551188,2741596325,2741678246,2741760167,2741846126,2741879390,2741932197,2742055080,2742157841,
- 137102727, 2742190106,806715432, 2742206767,155975711, 2742239248,2742256481,2742300841,2742566928,2742583337,2742600234,2742616085,2742632470,2742648844,737772074,
- 2742677674,2742731599,2202590, 2742763604,2742796334,2742857899,2742945267,2742976571,2743010771,2743061417,2743108520,2743144793,2743208086,246464736, 2981972,
+ 137102727, 2742190106,806715432, 2742206767,155975711, 2742239248,2742256481,2742300841,2742566928,2742583337,2742600234,2742616085,2742632470,2742648844,737772074,
+ 2742677674,2742731599,2202590, 2742763604,2742796334,2742857899,2742945267,2742976571,2743010771,2743061417,2743108520,2743144793,2743208086,246464736, 2981972,
2743255094,2743300268,2743386138,2743402498,2743418895,2743435286,2743452566,2743500839,2743533584,125452299, 2743550877,2062237706,2743631935,2743664676,2017984523,
2743693485,828932106, 931348492, 2743791790,244891664, 2743910419,439156762, 2743926830,2743975990,2744008744,829177922, 2744037551,2744362009,2744447152,2744534883,
2744598550,2744627377,115608240, 2744682299,2744729606,1053802527,2744758450,2744847562,2744909923,1223589919,2744955059,204718182, 3899438, 2745090114,1395802150,
2745122875,247481455, 2745168052,2745278527,2745336655,2745381045,2745435725,924860435, 2745495734,2745581570,356925450, 2745598435,2745630774,2745663568,2745696272,
- 129008473, 2745712680,2745729083,956859483, 949584231, 2745763385,2745872567,3211732, 2745938104,2746105894,540770306, 2746122266,2401583120,2746140249,203829433,
+ 129008473, 2745712680,2745729083,956859483, 949584231, 2745763385,2745872567,3211732, 2745938104,2746105894,540770306, 2746122266,2401583120,2746140249,203829433,
2746200250,1053802508,2746331323,2746400822,1799520286,2746446012,2746548526,2746582937,2746646534,2746662924,629948422, 2746679755,2746728881,2746761247,2746777619,
2746794015,2746810882,2746855613,2746908759,124469719, 2746958127,2747003070,32325641, 2747139617,2747172480,2747219978,2352939438,4964393, 2747237342,2747297983,
2747383874,2747417113,2747482626,2747527360,2747679480,2747715279,2747793464,2747827047,2747859046,423018533, 2747891724,2747908178,1591837726,2747953345,2748022787,
- 2485633055,2748040582,2748104811,196804630, 2748137686,2748182722,2748416026,7143851, 2748432878,2748477635,1217726403,2748646007,2748678638,2748723396,236470288,
- 2748805317,3900225, 2748858902,131334198, 1599767420,2748903622,398704671, 2749058385,319602693, 2749136969,2017968178,2749202891,126223269, 27625941, 443629569,
+ 2485633055,2748040582,2748104811,196804630, 2748137686,2748182722,2748416026,7143851, 2748432878,2748477635,1217726403,2748646007,2748678638,2748723396,236470288,
+ 2748805317,3900225, 2748858902,131334198, 1599767420,2748903622,398704671, 2749058385,319602693, 2749136969,2017968178,2749202891,126223269, 27625941, 443629569,
2749251650,2749284390,2749301038,284721190, 2749336465,1126023210,2749432111,2749465521,2749497431,353239873, 2749558983,281001986, 2749640904,2749808747,2749842607,
2749874212,2684780550,2749894548,110298456, 2046337656,2749956148,434980817, 2750001353,2750105972,1041711163,2750181578,2750366750,333496336, 2750398530,2750432673,
6619243, 2750481230,2750546351,2750579535,2750611471,2750627878,2750644226,2750660614,200556555, 2750688492,5309587, 477102096, 1729544495,484016546, 2750825572,
2750890068,66814199, 2750932754,2751000779,2751250434,2751266827,59883535, 2751672526,2751754447,2751791188,254754845, 1150435761,2751823888,963952650, 2751852752,
2751967441,2752087141,2752135252,191679824, 2752180434,2752299074,754205160, 2752332627,2752397847,1457422976,2752431020,2752508115,2752577538,2752594027,2752626744,
- 2752659487,2752675856,951959562, 2752704724,2752757798,179765290, 2752774574,2752823306,422920198, 2752839699,939558412, 111181843, 2752856130,2752889746,139477424,
+ 2752659487,2752675856,951959562, 2752704724,2752757798,179765290, 2752774574,2752823306,422920198, 2752839699,939558412, 111181843, 2752856130,2752889746,139477424,
2752938003,2752954452,481132555, 2752987595,2753042511,2753163477,2753282086,2753298434,54460419, 2753327318,2753491159,347062288, 121356294, 2753530207,2753577419,
2753626131,1021607957,2700509473,2753645120,2753704152,2753855519,360316938, 1035780108,2753871882,2753888277,1752351179,2753907187,2754015449,2754233516,2754281512,
2754297887,2754314278,2754330651,2754363509,2754408666,2754769115,2754838549,259997762, 2754855815,2754904102,1384382466,2754920532,2180218920,2754954296,2755018792,
2755035155,276119554, 2755052465,2755084317,2755101564,2755150338,2755183223,635273218, 2755215370,2755232033,2755264815,2755298186,2755330069,2755347352,2755396497,
- 1569341491,1405681670,2755444755,2755461547,2755497181,2755527999,2755593206,2755626994,2755692322,347668546, 2755724633,2755756058,2755772427,2755789707,269467669,
+ 1569341491,1405681670,2755444755,2755461547,2755497181,2755527999,2755593206,2755626994,2755692322,347668546, 2755724633,2755756058,2755772427,2755789707,269467669,
226557958, 2755854366,2755887114,2755904671,2755936268,669106182, 2755952680,2755969035,2755985410,2756001802,2756018626,2756052069,2756100117,2756116496,2756132890,
1309770203,2756161756,2756232160,2756280392,2756345877,2756362327,2756411448,2756444172,111542298, 111542291, 2756461457,2756510234,2756542492,234176538, 2756560513,
- 651591692, 2756624390,2756640799,777470976, 2756657611,2756706310,2756722709,120258586, 2756751581,2756821059,2756903926,2756935787,2756968672,875675674, 273301506,
- 2757002538,2757050389,2757067659,2757132375,2757181919,2757214215,576225320, 2757230623,84721679, 2757247394,2757279750,2757296149,2757312514,2757328906,213319701,
+ 651591692, 2756624390,2756640799,777470976, 2756657611,2756706310,2756722709,120258586, 2756751581,2756821059,2756903926,2756935787,2756968672,875675674, 273301506,
+ 2757002538,2757050389,2757067659,2757132375,2757181919,2757214215,576225320, 2757230623,84721679, 2757247394,2757279750,2757296149,2757312514,2757328906,213319701,
2757345339,2757378147,2757410822,2757427259,859963413, 2757460006,1704280121,2757488862,2757576311,3915842, 2757640394,2757673014,2757705794,1191674327,2757738498,
47366182, 2757767391,2757849312,2757935116,344391731, 2757951777,2757985121,2758029537,2758148122,1229193226,2758165080,2758197250,2758213856,2758246431,2312161634,
2758275298,2758357219,2758455524,47710227, 2758509589,2758570213,2758672608,2758705689,131940373, 2758781530,2758852646,293371935, 2758870504,2758930662,2758996199,
142688278, 2613789272,2759520489,2759646205,2759688204,2759704602,199442890, 2759733482,2759805382,2759884810,2759901268,2759933978,2759951254,2760003326,2760098755,
2760159467,220774895, 2760274090,2760327627,24297579, 2321580051,2760385097,2760441882,299008031, 176504848, 2760470764,2760526549,1475739658,2760585453,2760741148,
2760785932,2196799500,2760802320,1845641269,2760831214,55722005, 2760936948,5505034, 2761015355,2761060591,382074902, 343212663, 2761142512,2761211970,2761246097,
- 1500577797,2761310274,2761344802,2761388273,2761507248,2761542621,2761589182,2761654365,2761703453,680214544, 2761724322,2761797874,2761949685,2761982871,29786219,
- 2762032789,2762096656,1215578150,2762125555,2095317011,2762227722,882901079, 5325854, 2762256628,2762311001,122667037, 2762354933,2762491520,2762539029,423593160,
+ 1500577797,2761310274,2761344802,2761388273,2761507248,2761542621,2761589182,2761654365,2761703453,680214544, 2761724322,2761797874,2761949685,2761982871,29786219,
+ 2762032789,2762096656,1215578150,2762125555,2095317011,2762227722,882901079, 5325854, 2762256628,2762311001,122667037, 2762354933,2762491520,2762539029,423593160,
2762555394,2762571782,845414406, 2762590046,2762655137,2762715382,2762801164,499580933, 325386242, 2762817760,2762850841,2762916817,2762970997,110249160, 2763059447,
1224769620,2763147989,385466586, 2763195643,1940816187,2763243530,2763259925,2763276310,2763292700,28147748, 2763678267,2763787780,2763867563,2763916787,2763948070,
2763964459,1052065874,2801670, 2763997206,2764013606,2764030006,2764075257,2764196808,2764266031,892878888, 2764308492,3245147, 2764328967,2764390459,2764423227,
@@ -5137,20 +5132,20 @@ static const unsigned int DictNodes[84251] =
2765102715,2765156605,2765258762,2765275439,635879445, 2765320446,2765390838,336593743, 620281894, 2765423505,2765471837,2765533439,5390347, 2765619252,2765651994,
2765680896,2765767102,2765832211,2168930316,2765848586,2765865044,2765898680,2765947689,2765979707,2766024961,1878081546,2766111645,2766194019,2766259070,2766303490,
2766438426,2766455386,2766488704,2766536928,2766569494,2766585892,2766602278,2766618630,2766635039,193593382, 2766651458,2766696707,6111243, 2766831700,2766864395,
- 1450754050,1201701800,2766885037,2766942468,256147458, 2766982837,125927450, 8401157, 2767063423,383352844, 2749366303,2767139078,2767237383,2767388754,56721429,
+ 1450754050,1201701800,2766885037,2766942468,256147458, 2766982837,125927450, 8401157, 2767063423,383352844, 2749366303,2767139078,2767237383,2767388754,56721429,
2767421494,2767454218,2767470628,2767487014,2767503375,2767519766,2767536144,2767552518,85360655, 1490993173,2767569433,2767646984,2767749551,2767781903,2767798294,
- 43237412, 2767827209,2767880223,121094165, 2767899005,2767981905,1581072424,2768072970,2768175126,182157343, 2768192397,2768273515,2768318731,294944778, 2129974,
- 2768437350,2768470777,2768502806,2768520106,2768601119,663912474, 131336378, 2768617931,2768667678,829505996, 2768701581,2768761100,2768830502,2768846875,651804688,
- 2768880104,2768916303,2768974093,2769323064,2769400078,2769453656,2769485890,92815366, 2769518701,2769551831,2769596687,2769645840,348635152, 2769731671,263946269,
+ 43237412, 2767827209,2767880223,121094165, 2767899005,2767981905,1581072424,2768072970,2768175126,182157343, 2768192397,2768273515,2768318731,294944778, 2129974,
+ 2768437350,2768470777,2768502806,2768520106,2768601119,663912474, 131336378, 2768617931,2768667678,829505996, 2768701581,2768761100,2768830502,2768846875,651804688,
+ 2768880104,2768916303,2768974093,2769323064,2769400078,2769453656,2769485890,92815366, 2769518701,2769551831,2769596687,2769645840,348635152, 2769731671,263946269,
2769780738,204537866, 2769809681,2769879499,2769940754,2769996273,2770044450,372835169, 2770104595,2770190434,2770224930,2770255874,87048213, 2770284820,2770371042,
- 2770469409,2770518026,1819181122,2337325068,2770546965,118210576, 2770698719,2770743121,2770781052,408420378, 2770831567,2770928534,2770977370,2771010708,5309470,
+ 2770469409,2770518026,1819181122,2337325068,2770546965,118210576, 2770698719,2770743121,2770781052,408420378, 2770831567,2770928534,2770977370,2771010708,5309470,
2771087638,2771185943,2771271699,2449752086,2771288101,116326436, 2771304554,2771398936,2771485141,2771533853,675168272, 2771550274,2771595545,2771681880,2771714064,
- 347144208, 156041238, 664044864, 2771731431,2771792154,2771878347,2771927061,357793808, 1197032478,2771943842,2771976952,2772010846,2772075508,2772123679,98009099,
+ 347144208, 156041238, 664044864, 2771731431,2771792154,2771878347,2771927061,357793808, 1197032478,2771943842,2771976952,2772010846,2772075508,2772123679,98009099,
2772140355,9535529, 2772172810,8994832, 2772201755,2772535928,119358071, 2772566532,2772618125,195068504, 2772709660,451871031, 180207632, 2772840733,2772928075,
- 2772978552,2773037342,2773205928,45531373, 2773241144,2773303328,1956758619,2773337116,2773369768,2773404350,2773463327,1199259679,2773560985,2773621541,382486003,
+ 2772978552,2773037342,2773205928,45531373, 2773241144,2773303328,1956758619,2773337116,2773369768,2773404350,2773463327,1199259679,2773560985,2773621541,382486003,
2773692704,2773747457,2773807393,2773909563,837386278, 2773943182,2774010535,1617625311,2774069538,2774188116,2774222241,338134330, 2774282531,1665810892,2774401627,
193185229, 2774433808,156762138, 2774453757,2774486637,2774544676,2774626597,126615594, 2774794283,2774827479,6374258, 2774859863,292110346, 148800321, 2774910058,
- 2774991902,2775023632,134021126, 1515028496,2775041224,2123465007,2775073687,2576269343,545161244, 2775134502,2775331111,2775466467,2775505160,153207255, 41582594,
+ 2774991902,2775023632,134021126, 1515028496,2775041224,2123465007,2775073687,2576269343,545161244, 2775134502,2775331111,2775466467,2775505160,153207255, 41582594,
159662117, 2775582087,2775613500,2775695791,252297418, 2775728650,88948748, 2775761434,1268662287,2775798248,522321932, 2775892034,391970837, 2775937320,2776023061,
46088198, 805142534, 2776040793,2776073416,761184277, 2776104982,2776121375,2776137738,376324153, 2776155361,2776203306,2776221124,2776252438,173850626, 2776268812,
2776285205,2776301580,8994842, 2776330537,2776563777,2776612886,2776629279,2776658218,2776694786,7307290, 2776711623,2776760679,222281764, 2488125218,2776794539,
@@ -5158,12 +5153,12 @@ static const unsigned int DictNodes[84251] =
336527701, 2777530498,2777546775,19464215, 2777575725,2777710608,2777728200,331628556, 796164590, 2777772334,2777952559,520651800, 2778005603,2778050864,2778154483,
2778185766,2778202196,584384871, 2778234936,2778268408,45776927, 2778300454,543523275, 2778329393,124863599, 2778464287,2778481792,2778541884,2778579972,2778647593,
1531742224,2778711151,22200336, 2778748658,5310994, 2778829346,2778906649,2778939394,408420388, 2778968370,2779045952,411631853, 2779122015,2779181363,2779301352,
- 2779349018,2779365415,2779398182,2779414571,2779448482,973340684, 307610600, 2779514580,2779563422,519815184, 2779596221,2779646762,2779725826,2779742227,869449750,
+ 2779349018,2779365415,2779398182,2779414571,2779448482,973340684, 307610600, 2779514580,2779563422,519815184, 2779596221,2779646762,2779725826,2779742227,869449750,
9060354, 2779771188,2779908821,2779955212,116228107, 2779981862,721715243, 2780053610,2780148021,2780190578,1258652082,2780250415,2780295478,2780463618,2780497758,
2780562932,2780621431,111132682, 2780677532,2780725258,209584194, 2780745586,111149903, 2780790892,2780832492,128584149, 2780885303,2781055895,2781105335,2781196600,
- 2781266455,2781298710,330874882, 2781315088,10371083, 2781331462,659703281, 2781350665,2781399977,2781446991,2781484289,2781528982,2781579750,2781611352,470827027,
+ 2781266455,2781298710,330874882, 2781315088,10371083, 2781331462,659703281, 2781350665,2781399977,2781446991,2781484289,2781528982,2781579750,2781611352,470827027,
2781660023,2781704505,743309352, 2781790511,2781835578,2781943812,2781972067,2782019606,2782035970,29622309, 2459910203,1992508915,2782052364,2782068843,2782114107,
- 2782490940,2782544915,2782594617,2782691759,2782736701,2782790146,2782822466,2782867774,2639331350,2783101775,2783133722,91701250, 196149289, 2783152680,280903701,
+ 2782490940,2782544915,2782594617,2782691759,2782736701,2782790146,2782822466,2782867774,2639331350,2783101775,2783133722,91701250, 196149289, 2783152680,280903701,
2656701569,2783218672,2783283724,2783364944,2783414616,308953622, 2783490367,854639063, 2783627724,1249014080,2783686634,2783739963,2668773386,2783773209,2783838639,
2783871022,2783920888,2783965505,2784247824,2784264233,2784281130,2784296981,2784313366,2784329740,2784346666,2784362515,2784378892,2784395274,165773333, 2784424258,
2784461282,2784559195,2784604483,2784690260,2784735342,2261925894,893501872, 2784784708,2784837935,991297557, 2784870703,126107676, 2784915781,2784985547,1984905226,
@@ -5179,26 +5174,26 @@ static const unsigned int DictNodes[84251] =
2790149603,2790195299,180601353, 2790229335,2790277591,2790309940,2790355288,205619212, 2790424683,2790469977,101908482, 2790573176,2790614403,2409218519,2790703106,
2790719498,2790735948,2790781274,1641595311,2790866946,2790884088,2790922770,251953587, 2790982731,2791059803,2791145905,2791178261,294633493, 2571517978,2791201573,
2791265134,2791321948,538755103, 2791375957,2791420253,2791538698,2791556283,2791605660,2791654956,1528807440,2791687524,2791754426,2791818391,2113548, 2791866847,
- 575733772, 349372438, 2791911774,2726281323,2792013836,2792031262,2502983717,252297575, 2792063016,17924138, 2792091999,2021130762,2792149231,46497802, 328073273,
- 2792698209,1769592, 2792751224,2792767507,2792783992,2792685606,2792800376,2792829282,2792882296,104759322, 2792898716,2792931334,2792947750,2792964111,46530565,
+ 575733772, 349372438, 2791911774,2726281323,2792013836,2792031262,2502983717,252297575, 2792063016,17924138, 2792091999,2021130762,2792149231,46497802, 328073273,
+ 2792698209,1769592, 2792751224,2792767507,2792783992,2792685606,2792800376,2792829282,2792882296,104759322, 2792898716,2792931334,2792947750,2792964111,46530565,
2792993123,2793046056,49364994, 2793075044,1364312095,2793247110,144097389, 2793291883,48513045, 2793337189,2793390120,2793406530,2793439288,2793473436,2793521162,
115589122, 2793537558,2793554036,2793570346,2793586804,514670628, 2793606715,2793635861,2793652246,2793668634,319619113, 232326174, 902889482, 2793685028,2793701417,
2793718284,2793763174,2793881666,2793914406,1619836966,2793934241,2794025319,2794064058,1351581722,8401256, 2794107241,2794254698,242466821, 2794324034,2794356787,
260459985, 2794389935,2794422324,2794467691,13008937, 2794668044,2794684442,81608710, 684195877, 2794701733,572407844, 1069057854,2794733611,2794771307,2794817114,
2794860908,2794996213,103432220, 2795028567,2795077668,2795094026,2795110429,17448971, 2795130365,2795159580,2795175978,2795192436,55050250, 336855156, 2795221357,
514654234, 628637812, 2795286894,2795417967,2779709461,202014749, 2795487720,2795520116,17809465, 2934362, 2795547328,459980838, 2795630960,2795866581,2795896948,
- 581206038, 2795913242,6438918, 2795942257,2795978780,2795995141,2121154601,99876980, 2796011542,689800339, 724910095, 2796031855,2796094762,2796143083,307238580,
+ 581206038, 2795913242,6438918, 2795942257,2795978780,2795995141,2121154601,99876980, 2796011542,689800339, 724910095, 2796031855,2796094762,2796143083,307238580,
2796179211,307235495, 2796237170,581386250, 2796273701,882262044, 253625735, 2796302707,2796453930,94076968, 2796470310,254345228, 112197653, 2796499316,2796623987,
- 2796650534,2796679541,2796699933,2796732532,2796748829,2796765966,2796797989,818921588, 2796814343,267403305, 2796843382,2796979307,2797010972,2797028110,192200741,
+ 2796650534,2796679541,2796699933,2796732532,2796748829,2796765966,2796797989,818921588, 2796814343,267403305, 2796843382,2796979307,2797010972,2797028110,192200741,
2797072759,116703238, 2797125643,2797142021,2797158422,10371188, 2797179283,2797223967,2797240330,273842635, 1476771878,2797269368,2797580665,2797666314,2632892444,
- 2797682718,922697759, 2797717472,2797764715,2797800174,2797859194,620068866, 2797957499,739442719, 2798011660,2798072188,17843760, 2798174259,5865775, 2195708,
+ 2797682718,922697759, 2797717472,2797764715,2797800174,2797859194,620068866, 2797957499,739442719, 2798011660,2798072188,17843760, 2798174259,5865775, 2195708,
183353349, 2798207501,2798257128,2798305809,2798340856,55853058, 2798407096,2798469131,2798485588,2798518293,2798535257,2798567470,2798629245,2798731266,2798755002,
2798797103,271138837, 2798829584,2798846785,2415313743,2798879567,552452112, 267272625, 2798914665,610699205, 2798977083,138642441, 1345749099,1338785804,2799009831,
2799042570,2799059028,2799104382,2799333759,170230033, 174162157, 180207652, 2799448448,2799538062,2799583244,382976010, 2799599709,275038691, 2799648806,2799665183,
219856915, 2799682073,2677817382,2799747498,2799792513,2799862223,2799894999,2799927318,149880848, 2799943682,2799960897,2799996780,2800044614,835223592, 2800087426,
2800157927,287145994, 1026162700,2800206455,2800664618,9551903, 2800693636,2800944680,2801008864,350715926, 2801041439,984596509, 2801058321,2801093238,1389772815,
2801157435,2801188879,2801205250,775176202, 2801221644,56426525, 2801238022,124305429, 2801254410,2801270800,2801287173,2801303590,2801041420,2801332613,2801385510,
- 2801401877,775897100, 2801418271,2512551942,2801437097,2801467479,2801516570,787922973, 2801533450,2801565985,2801600271,2801647647,677691434, 2801676678,948813835,
+ 2801401877,775897100, 2801418271,2512551942,2801437097,2801467479,2801516570,787922973, 2801533450,2801565985,2801600271,2801647647,677691434, 2801676678,948813835,
351240197, 2801745951,2801762323,2801778719,654983183, 2801795173,2801827878,2801844240,821690410, 2801860638,212107266, 2801893430,2801927648,2801958966,2801991686,
2802008519,2802057279,2802090005,2802107594,2802155970,2802188759,701530114, 2802221077,2802237462,2802253840,2802270234,1024737311,2802286676,2802319391,1407909926,
2801516575,2802348423,2802466858,2670722, 2802492967,2802548818,2965563, 2802581514,2802597904,2802614277,194822154, 2802630687,2802647052,2802663481,2802679867,
@@ -5207,18 +5202,18 @@ static const unsigned int DictNodes[84251] =
2188181516,2803515434,2803531842,588218456, 2803564833,2803597331,2803613717,2803630092,2803646490,2803662879,2657599494,2803691913,2803728403,2803744808,2803761163,
1378910227,2803777567,2803793958,213205023, 2803810350,2803859931,2803904906,2803970443,2804072486,2209775628,2804101516,2804138000,1389772826,2804155215,2804188391,
701218837, 2804236354,2804269110,2804301835,1968881695,2804330893,1058586636,2804449311,2804465685,673218591, 2804482895,124338202, 2804514842,121929739, 2804536376,
- 2804580383,2804596752,2804613953,830521382, 2804646697,2804678677,2804449320,2804695070,2804727824,2804745323,2804776998,1003012155,2804793356,2804809754,5292038,
+ 2804580383,2804596752,2804613953,830521382, 2804646697,2804678677,2804449320,2804695070,2804727824,2804745323,2804776998,1003012155,2804793356,2804809754,5292038,
2804826178,4030474, 720945162, 2804871566,2180038668,2168061981,2804925679,2804957196,2804973659,2805007907,2805055554,2805088344,1360969749,2805133711,2805170197,
- 2805186591,654983225, 2805215632,2805363089,984596482, 2805412242,2805548578,2805596189,214827067, 49266690, 2805612610,2805646505,2805678096,2805694483,126369818,
- 1380122655,2805723539,2806061258,2806104079,2806120474,951484428, 2806137950,588972792, 2806195178,2806267930,2806284810,52330527, 2806317058,2806333446,251232262,
+ 2805186591,654983225, 2805215632,2805363089,984596482, 2805412242,2805548578,2805596189,214827067, 49266690, 2805612610,2805646505,2805678096,2805694483,126369818,
+ 1380122655,2805723539,2806061258,2806104079,2806120474,951484428, 2806137950,588972792, 2806195178,2806267930,2806284810,52330527, 2806317058,2806333446,251232262,
2806362516,2806399058,2806432757,1992394119,2806497337,2806513676,2806530086,2806546448,228245519, 260966956, 2806562822,2806579221,2806595615,1394556939,2806615427,
- 2806662451,248512538, 2806713246,2806759508,2806792221,143720488, 2806808623,2806841647,2806874128,2494922793,2806891849,2806940681,2806973869,2807021599,128155658,
+ 2806662451,248512538, 2806713246,2806759508,2806792221,143720488, 2806808623,2806841647,2806874128,2494922793,2806891849,2806940681,2806973869,2807021599,128155658,
2807037964,750666017, 2807055245,2807138361,2807201818,2807218217,2807234576,2807250970,114409483, 2807267338,937509335, 2807283743,2807300153,2807316511,2807332902,
984596492, 2807349307,2807382031,2807398426,2807414796,2807431174,1892286476,2807460245,543621136, 2807536242,2807578650,1866612748,2275067055,2807596154,2807666981,
2807709725,2807727000,2807775324,2807808012,573718538, 268582941, 2807824468,2807858673,2807889986,119997738, 2807930219,2807972064,2808004610,1857273894,2808022279,
188105819, 2808123795,2808168460,1062273062,2808184924,2808217631,2808234005,2808251368,2808301433,2808348698,114409529, 2808365507,2808397836,2808415222,2805596181,
2808447086,2808479756,2808496166,1850441744,2808525206,2808627242,2303016970,2808643625,2808659980,2808676378,2808692748,2808709130,839548949, 2808732475,2808776226,
- 2808823823,829308966, 351240249, 2808840268,2808872970,2808889386,1737834536,2051325978,2808918423,2808971304,2807431179,2808987676,350715925, 2809004091,56492073,
+ 2808823823,829308966, 351240249, 2808840268,2808872970,2808889386,1737834536,2051325978,2808918423,2808971304,2807431179,2808987676,350715925, 2809004091,56492073,
2809036881,2809070439,683802645, 2809115032,2809299043,2809331768,978452502, 2809365398,2809413648,2809430026,2809446416,241795083, 2804236364,2809462799,2809479206,
2809495568,2809511972,2809532268,2809590169,2809643061,2809675812,56492047, 2809692176,1417445402,2809708566,2809724968,2809741318,1408811039,2809757736,2809774383,
2809806886,938295334, 2809823289,1361051664,2809839635,2809856016,56492058, 5718038, 2809872396,2809888778,2809905260,2809937935,2809963480,2808987667,2810019924,
@@ -5232,30 +5227,30 @@ static const unsigned int DictNodes[84251] =
2813198364,2808414239,56426524, 2813216959,2047246367,2813247500,2813263965,2813313062,2813329439,2813345834,2813362242,2813394976,2813427742,2809675816,2813461327,
79790118, 2813493258,2813522337,2813609313,2813658099,2813673477,1079296002,147800104, 2813697340,2813759896,2813838357,2813886896,2813919671,2813952459,2814002166,
2814033946,2814050310,2814067225,2814132262,2814149976,2814197984,153747561, 2814236870,2814280126,2814357922,2814410792,2814427142,2814443541,2814459931,2814497369,
- 129466379, 2814558224,2814574597,2814595475,2814652835,2814740501,282345513, 2814771239,2814810647,2814865828,2814951436,228294666, 2814967867,2815013285,214810661,
+ 129466379, 2814558224,2814574597,2814595475,2814652835,2814740501,282345513, 2814771239,2814810647,2814865828,2814951436,228294666, 2814967867,2815013285,214810661,
2815050265,2815117248,2815198377,1417461802,2815231215,2815262776,2815295509,2815311903,2815328272,2815344650,654377019, 2815373734,2815426581,2815442946,1380122661,
- 2815459359,654983210, 2815488423,365510668, 2815524924,2815607699,388710440, 2815668648,2815721484,2815737862,1412743174,2815755689,108298261, 2815787116,949534751,
+ 2815459359,654983210, 2815488423,365510668, 2815524924,2815607699,388710440, 2815668648,2815721484,2815737862,1412743174,2815755689,108298261, 2815787116,949534751,
2815832489,2815918304,2815951275,79790106, 2815983642,2209775656,2816000142,1383890975,2816033370,2816065576,775176207, 2816081961,2816098335,964689939, 2816118920,
2816149137,2816212994,2803793930,2816229398,2816245776,78905373, 2816266634,2816373162,2816459660,787660802, 2816508207,2816540710,843350054, 2816557082,1326645279,
2816573466,2816589845,2808856616,2816606733,2816658142,2816704514,2816720902,2816737282,2816753674,149504021, 2816770090,31424554, 2816799147,2816835624,2816852006,
2816868354,2816884818,2816917591,2816979372,2817032204,2807431197,2817048607,1391837203,2817064972,2040463370,2817081354,2817097747,2817114143,370720783, 2817143213,
2817212456,2817228819,2817245611,2817278039,1405714438,2817327158,2817360798,1737834534,2817392680,2817409070,2817458647,2817490965,2817507359,2817523728,2804776970,
2817552814,2817651119,6619615, 711950348, 2817733040,2817929649,588219239, 2330378271,2817982480,1380122634,2817998864,2818015683,2818048010,2818064415,2818081680,
- 2818113612,2818146763,2818196649,2818228226,2802860058,2818245726,51757066, 56426536, 2818306482,648331280, 2818359322,2818375983,1058586664,2818408460,370720770,
- 2818425593,2818457602,2818474022,458178641, 2818491707,8700589, 2818535859,2818732468,2818802114,2818834508,2818867206,2818883625,2818901321,2818957602,112459797,
- 2819014668,2819031069,370720808, 2819047436,2819063818,258441237, 2819080647,999063567, 2819142069,2819229194,2819276816,1390690314,2819297515,436717887, 950566933,
- 2819345063,2819393072,2819434343,2819486134,56426515, 2819522582,2819538975,2819555334,2190360597,2819572830,2819621466,2819654120,268435458, 2819697137,673579046,
+ 2818113612,2818146763,2818196649,2818228226,2802860058,2818245726,51757066, 56426536, 2818306482,648331280, 2818359322,2818375983,1058586664,2818408460,370720770,
+ 2818425593,2818457602,2818474022,458178641, 2818491707,8700589, 2818535859,2818732468,2818802114,2818834508,2818867206,2818883625,2818901321,2818957602,112459797,
+ 2819014668,2819031069,370720808, 2819047436,2819063818,258441237, 2819080647,999063567, 2819142069,2819229194,2819276816,1390690314,2819297515,436717887, 950566933,
+ 2819345063,2819393072,2819434343,2819486134,56426515, 2819522582,2819538975,2819555334,2190360597,2819572830,2819621466,2819654120,268435458, 2819697137,673579046,
2819735573,2819751942,2819768331,2819784706,2819801098,97681446, 2819819188,2819912119,1391788047,2819949145,2819981331,2190622741,2820010424,2820112608,2820145173,
2808692738,843071519, 2820161555,2820177932,2820194310,2814754822,2820214920,2820243482,1378910265,479330320, 2820264072,2820292750,2820325407,980402182, 2820342374,
- 2820374540,347144211, 2816000002,130580496, 2820391442,2820518329,309559338, 2820572458,2820633018,354779138, 2429714448,2820751401,2820767785,653197343, 3162124,
+ 2820374540,347144211, 2816000002,130580496, 2820391442,2820518329,309559338, 2820572458,2820633018,354779138, 2429714448,2820751401,2820767785,653197343, 3162124,
2820784431,2802860042,2820829627,2820927932,2820964371,2820980758,2820997179,2821030828,2821099303,713064454, 2821144628,2821177365,948502533, 2821194087,2821227021,
2821276185,2821341210,2821358039,2821391145,2821423419,33783810, 2821456781,2821550397,2821603426,2821636205,2821668955,2821703794,2821783590,2821799967,2821816330,
147816490, 48021533, 2821832757,2821866470,2821898543,2821931039,2094235660,2821947468,392348172, 2821992893,2822356999,2822373394,20234266, 2822393963,2822438934,
2822455332,2822471682,19267620, 2822488095,2822504454,180207638, 518291487, 2822520862,2822553631,1901740042,2822570584,2822602792,2822620150,2822657262,2822750250,
2822766618,695910484, 2822783060,2822815851,1502101514,2822851777,2822897690,2188886018,2822914585,2822980520,576225337, 2823014719,2823045559,938246165, 2823077944,
- 2823111086,2823161042,116277269, 4998673, 2823195131,46874650, 94502953, 2823259166,2823291790,2823357324,2823418302,2823473345,2823520258,2823536646,649314310,
+ 2823111086,2823161042,116277269, 4998673, 2823195131,46874650, 94502953, 2823259166,2823291790,2823357324,2823418302,2823473345,2823520258,2823536646,649314310,
2823553080,2823585834,2823602198,2823618644,2823651865,802471978, 2823720848,2823766100,2823811519,2009350165,2823979073,49741933, 2824028302,2824073664,2824155585,
- 115721713, 2824275053,2824306714,2824323156,2824355852,2824372650,415776794, 2824405007,32636930, 2824421835,2824471288,2824503380,2824548802,2824925635,112607733,
+ 115721713, 2824275053,2824306714,2824323156,2824355852,2824372650,415776794, 2824405007,32636930, 2824421835,2824471288,2824503380,2824548802,2824925635,112607733,
2825056708,2825125909,110248012, 2825142718,2825220549,2825302470,2825417159,2825487299,524353558, 2825535943,4947978, 2825597384,1677710174,2825667054,2825699470,
2825733487,2825799224,2825875913,1200144862,751353915, 1901653, 2826043451,2826077137,2826125783,2826158101,2826174476,2826194081,147243067, 2826227072,2826275780,
2826322845,4947978, 2826409871,2826469388,47235082, 2826485800,2826502645,2826547658,163545154, 2826602034,2826667194,177094658, 5309941, 2826711499,2826816668,
@@ -5264,51 +5259,51 @@ static const unsigned int DictNodes[84251] =
2828370599,2828405204,2828446298,29884456, 2828517978,2828550251,2828583618,336396444, 69156996, 2828634088,3246266, 2828693971,2828753902,692413955, 2828825044,
2828927073,133579191, 2828992943,2829038037,2829090853,2829107228,2829123586,2829140006,2228731942,2829157449,984121803, 2829201878,2829496791,2232189044,2829562328,
2281865255,2829632368,2829680655,1769587, 2829709785,1119600659,2829762601,157761572, 2829779035,2829811743,2829829528,2829878601,2829939162,581206056, 2829975574,
- 2829991977,151764994, 2830008959,25673858, 2830041154,2830073875,1739685928,2830092461,2830155786,2830172176,191414283, 2830189969,2830254190,2830286850,500498469,
- 2830304246,2830342256,900677639, 2830435151,2830468187,63406102, 2830499881,2830516262,2830533061,2830565397,157646877, 2830582607,2830627291,2830712863,8978443,
+ 2829991977,151764994, 2830008959,25673858, 2830041154,2830073875,1739685928,2830092461,2830155786,2830172176,191414283, 2830189969,2830254190,2830286850,500498469,
+ 2830304246,2830342256,900677639, 2830435151,2830468187,63406102, 2830499881,2830516262,2830533061,2830565397,157646877, 2830582607,2830627291,2830712863,8978443,
2830730842,2830763610,2830796029,66815229, 2830840284,2830893094,326369389, 33783813, 2830909466,2830925860,150913030, 2830942234,2830958630,1212548, 2830975429,
- 2831007773,2831024131,2055897119,2831053277,2831102430,675168278, 127336458, 2831200735,2831302668,2831319077,2831335899,1584447494,243449937, 1986183190,506773937,
+ 2831007773,2831024131,2055897119,2831053277,2831102430,675168278, 127336458, 2831200735,2831302668,2831319077,2831335899,1584447494,243449937, 1986183190,506773937,
2831368294,2831401831,401835425, 2831925279,17809528, 2831941655,8175645, 2831958025,2831974537,2232320134,2831990900,737902603, 2832417813,2832478690,2832600900,
- 2832663159,518783894, 2832695362,2832728929,2832761942,2832810010,2832826455,2832876381,2832908298,2832925131,2832974837,2833039386,500711436, 2833055746,347635769,
+ 2832663159,518783894, 2832695362,2832728929,2832761942,2832810010,2832826455,2832876381,2832908298,2832925131,2832974837,2833039386,500711436, 2833055746,347635769,
2833072365,2833110494,298860649, 2833236075,2833273910,2833330659,2833367170,14352514, 1941585922,2305343547,159432733, 241156213, 2833384476,2833416194,2833432586,
821805075, 2833448962,1129381917,2833478116,2833615702,2833661962,451477506, 2833678402,2833711163,2833743924,2833777815,2833827678,2833904101,2834006253,2834040297,
- 2834087995,2834120714,148062839, 2834137155,2834219019,1505706000,2834235394,2834251787,618446888, 2834276368,2834321287,2834366466,2834382905,2834399535,319832288,
+ 2834087995,2834120714,148062839, 2834137155,2834219019,1505706000,2834235394,2834251787,618446888, 2834276368,2834321287,2834366466,2834382905,2834399535,319832288,
2834432066,2834477542,2834563098,2834579458,2834595897,86638632, 2834612226,6602788, 2834628610,246087716, 2834657767,1796899287,2834739688,2835034601,2835136558,
131842272, 2835193513,2835234919,78544922, 2835317273,2835395050,2835464334,124862823, 237731855, 2835497017,2835513375,2835529787,2835563945,1952776223,2835608043,
- 2835742751,2835759123,1514094613,2835788268,2835874710,2835923003,2835956567,2835988926,2836055209,2836090046,2836194709,297386065, 2836254908,2836361709,600277206,
+ 2835742751,2835759123,1514094613,2835788268,2835874710,2835923003,2835956567,2835988926,2836055209,2836090046,2836194709,297386065, 2836254908,2836361709,600277206,
359612417, 2836473081,285343886, 2836512827,2836558318,2836676618,711671829, 2836693059,2836776601,2836824076,168398837, 2836841862,1941110810,2836906909,2837000687,
- 2837069846,1900429340,2837086292,147062876, 2837119736,2837153770,166068712, 2837213680,2837381423,1348157898,2837415470,467960847, 2837475825,2837541362,126271595,
+ 2837069846,1900429340,2837086292,147062876, 2837119736,2837153770,166068712, 2837213680,2837381423,1348157898,2837415470,467960847, 2837475825,2837541362,126271595,
2837616294,2837659735,2837721587,2837807951,2837839874,2837856282,2837872642,118210591, 1079705666,2837889090,2837922251,2568110840,2837971041,2838037015,2838082036,
2838118415,1407926284,2838134830,1817052050,2838196725,1302265866,3916211, 2838254153,2838315034,2838331929,2838802934,935053172, 2838987656,2839035925,2761507248,
2839053300,2839101466,373981200, 2839117856,1292091397,2839153061,2839199773,548552706, 1863942150,2839216352,234979340, 2839249391,2839294455,2839392760,2839495232,
- 2839527445,2839543830,2839560232,2719780, 66158604, 51068956, 2839576578,2839592986,2839609794,2839651197,2839691329,2839740435,46120997, 2839758169,252299846,
+ 2839527445,2839543830,2839560232,2719780, 66158604, 51068956, 2839576578,2839592986,2839609794,2839651197,2839691329,2839740435,46120997, 2839758169,252299846,
2839789667,2839825424,2839937035,3538959, 2839953474,2839990261,6374138, 2840031737,1954906171,179503130, 2840104836,2840228346,392544282, 2840314766,2840383238,
2614116354,2840441339,2840691806,113836074, 2840740143,2840772634,2840789295,2840822063,2840855464,2840887380,367443994, 2840932860,32849939, 2840971894,2841034778,
- 2841051178,113246687, 2841067955,56557608, 2841113085,2359349, 2841429311,3227729, 2841494313,2264498188,2841526575,2841561274,2841594889,2841657776,283197469,
+ 2841051178,113246687, 2841067955,56557608, 2841113085,2359349, 2841429311,3227729, 2841494313,2264498188,2841526575,2841561274,2841594889,2841657776,283197469,
2841702910,2841755732,2841789532,2841838105,2841904331,2841935918,2359394, 2841985625,634896686, 2842018094,7962640, 2842052001,22888464, 2842101828,2842148886,
2842165294,2842215247,2842247227,385597521, 258637864, 2842279990,2842312785,310591580, 2842345578,2842433943,17842936, 506429677, 2842497105,71188482, 2842542369,
2842574878,1042808844,2842609429,1651621898,2842685951,2842755164,2842787899,2842820716,177341889, 2842856154,2842915328,2843000919,2843051426,2843104971,2843166015,
2843230247,2843270765,2843328522,2843345375,2843380120,2843456001,2843676627,1488289829,2843721816,2843754605,140248138, 352239655, 179503125, 2843787566,2843820038,
261193734, 2843840388,170197752, 2843951593,1043530894,258637852, 2844000337,2844045826,2844105374,2844135827,1031471130,2844182073,2844291587,725909525, 2844389892,
2844442650,1296187398,373800998, 2844471813,2844557807,2844602886,2844737970,2844771788,2844813395,2844852245,115720619, 2844868713,2844914183,470712358, 2845033048,
- 1508311080,2845065283,2845147147,1069057147,66158632, 2845164280,1563967494,271384588, 1069056050,2845196348,2845279865,2845328543,2845372936,2845425717,261193785,
- 2845459286,110215468, 1461503616,285346295, 2845508043,2845559172,2845622301,2845638685,2845655078,2845671436,1808596998,2845687868,2845782537,2845851669,412155963,
- 2845869672,19252782, 2845934001,2845979146,2846050951,505380885, 2846113883,2846159371,1055801375,2781216867,2846310839,2846343297,879525972, 2846375968,465551414,
+ 1508311080,2845065283,2845147147,1069057147,66158632, 2845164280,1563967494,271384588, 1069056050,2845196348,2845279865,2845328543,2845372936,2845425717,261193785,
+ 2845459286,110215468, 1461503616,285346295, 2845508043,2845559172,2845622301,2845638685,2845655078,2845671436,1808596998,2845687868,2845782537,2845851669,412155963,
+ 2845869672,19252782, 2845934001,2845979146,2846050951,505380885, 2846113883,2846159371,1055801375,2781216867,2846310839,2846343297,879525972, 2846375968,465551414,
2465415254,2846410420,175734805, 2846492863,1488289807,2846523408,2846539792,45776902, 2846556200,2846572575,362201094, 2846593465,2846654516,2846687259,2846732812,
- 2846871220,2846933057,2846983580,1560543834,6209572, 2847037117,2847098457,2847146560,449871910, 113836053, 2847178783,153997669, 2847196175,145145872, 2999305,
+ 2846871220,2846933057,2846983580,1560543834,6209572, 2847037117,2847098457,2847146560,449871910, 113836053, 2847178783,153997669, 2847196175,145145872, 2999305,
2847245406,2847293452,2847309834,2847335012,2847375444,2847408184,2839478283,2847442516,2847542483,432308230, 924549146, 2847588953,2847621179,2847656422,2847686744,
7307285, 2847719458,2847834150,2847851072,2847883276,2847899658,2847916060,550371368, 2847932497,2847965213,2847981590,273252392, 2847998018,138232241, 2848031218,
2848079909,2848096322,2848129050,2848145430,657899586, 2690138114,2848167593,2848279731,2848327617,2848374790,2848391180,2848407562,166543382, 2848431381,2848490232,
2848523273,2848556561,1629208588,2848587806,2848633357,2848702506,2556297218,2848718932,2848751642,2848768012,2848784390,2848800783,79511564, 2848817598,2848882698,
2848899104,172638635, 2848932687,2848964661,2848997851,2849030184,2849046540,2849066241,2849095764,2849141262,2849468943,520094658, 2849588830,157499480, 1322811473,
- 2849686926,2849752217,110248038, 2849801367,2849853608,2849901123,2849949203,2850042384,2850161102,2850209819,2850242598,1067188255,156566135, 2850269017,122814466,
- 2850342217,1319256083,2850390075,6619607, 2549449640,2850428628,2850521117,1031143440,2850540093,150667280, 136986630, 549700426, 2850619432,2850635788,5328129,
+ 2849686926,2849752217,110248038, 2849801367,2849853608,2849901123,2849949203,2850042384,2850161102,2850209819,2850242598,1067188255,156566135, 2850269017,122814466,
+ 2850342217,1319256083,2850390075,6619607, 2549449640,2850428628,2850521117,1031143440,2850540093,150667280, 136986630, 549700426, 2850619432,2850635788,5328129,
2850652697,1888436226,2850718197,2850751335,1816707082,2850786314,2850849227,2850910737,2851189266,56131615, 2851274989,2851307951,2851340721,2851373068,2851389478,
312197422, 2851405862,2851422511,2851467795,2851536917,2851553296,115179531, 2851575089,2851635238,2851651690,19255653, 2851746324,2851852450,2851881197,2851913730,
2851930141,356925556, 2851959317,2852012048,2852028426,2852044806,2852061205,2852077594,514883615, 277856287, 2852093978,2852110348,208158726, 2304344104,2852126780,
2852214887,2852258724,2852319766,440582225, 2852401687,2852522413,2852569114,2852598296,151076880, 2852634626,151093258, 2852651037,2852667404,115523641, 2852688860,
46039078, 2852814874,6717456, 2852831251,2852847618,146489354, 2702262310,2852864066,2852898090,6029353, 112312357, 2852958745,119636027, 2637862, 2853110878,
- 2853158969,2853175327,2853191718,756301862, 2853208123,2853240854,2853258247,2853332636,2853371959,2853441872,2853487022,2853535763,210633280, 2853564954,6701094,
+ 2853158969,2853175327,2853191718,756301862, 2853208123,2853240854,2853258247,2853332636,2853371959,2853441872,2853487022,2853535763,210633280, 2853564954,6701094,
2853663259,2853716099,2853732501,2853765897,2195690, 8401436, 2853864025,2853909021,2853997112,587956281, 2854040094,2854092837,151912489, 2854109213,2854125684,
7585814, 2854148648,2854209530,2854253087,2854322608,2854356115,2854387828,1026048002,2854404122,2854420519,17924125, 2854453550,836812807, 2854875681,2854978059,
1162117201,2855039522,2855141398,621183007, 297222182, 2855159942,2855207360,218611769, 2855317497,2855387737,2855421755,2855472091,2855563811,2855666986,1193509450,
@@ -5325,94 +5320,94 @@ static const unsigned int DictNodes[84251] =
2862336769,1753130, 115720793, 3538980, 2862385338,2862428733,2862530992,2862564247,7143882, 2862615512,2862662765,2862694431,2862710822,1391542303,2862727713,
1764050722,2862786119,2862858262,2862874650,2862891014,2862908066,2862940172,2862956565,2862972954,899006495, 1063813132,1016315920,153714719, 2862989849,2863067710,
2863137801,728892691, 2863170073,2863235082,591609885, 2863255418,220774499, 2863318046,2863354565,2863415315,121110559, 2863432513,2863464985,2863542847,2863608384,
- 2863678390,2863747618,2863837761,2863891310,185319430, 2863958431,2864005158,987709442, 2864023097,2864120720,2864154692,2864201809,2864247362,2864362051,162548544,
+ 2863678390,2863747618,2863837761,2863891310,185319430, 2863958431,2864005158,987709442, 2864023097,2864120720,2864154692,2864201809,2864247362,2864362051,162548544,
2864442042,54984720, 307298314, 2864497866,309575692, 890945538, 2864558660,2864640581,2864676890,2864693250,345836116, 2864722502,2864775214,207520177, 2864825987,
366789210, 2864889902,2864939046,2864955413,2864971816,2864988170,2865004586,2865020934,2865037354,2865053708,2865070091,2865086476,2865102879,160530442, 2865132103,
2865233936,2865250320,2865266717,84934684, 2865295944,229965862, 2865480527,2865514982,2865556898,368230412, 2865595308,2865660299,2865692698,915639680, 2865709115,
316459494, 2865754697,8391459, 2865876186,2865922114,229965881, 2865954831,113229850, 2865984074,2866118738,2866151961,2866216970,2078523394,2866233410,2866278987,
- 2222573041,2866364470,760938558, 2866397643,2866447658,2866495803,2866528363,2866561061,2866577424,58802191, 2866606668,2866823300,118653058, 2866841828,784990230,
- 2866901581,2867065422,157646884, 2867120529,2867167289,2867183657,714244118, 2867200535,581304339, 157646851, 2867234594,45137956, 2867265968,2867298332,28147727,
+ 2222573041,2866364470,760938558, 2866397643,2866447658,2866495803,2866528363,2866561061,2866577424,58802191, 2866606668,2866823300,118653058, 2866841828,784990230,
+ 2866901581,2867065422,157646884, 2867120529,2867167289,2867183657,714244118, 2867200535,581304339, 157646851, 2867234594,45137956, 2867265968,2867298332,28147727,
2867315470,2867347478,2316435484,1371848725,2867374641,2867429507,2867446018,2867491407,2867545121,2867576868,2867593227,96190490, 2867622480,766672898, 2867642408,
2867658793,2867675155,90112026, 2867704401,2867773477,48480267, 2867789846,17448966, 2867808417,2867838995,477937690, 2867855401,2867871746,7634985, 2867901010,
2867953692,2867970099,2868015699,2195753, 2868101161,2829713434,2868118919,2868150388,2868166736,2868203638,187744275, 2868249030,419070068, 2868289348,2868330533,
2868359764,2868425301,2795995178,2868559913,2868576298,2868592681,29334494, 59801641, 2868609030,2868625445,2868641833,2868658198,3375145, 2868674678,1429176346,
- 2868708302,2868740137,2868756502,2868772892,1371897892,2868789269,55050259, 2868818518,2868887570,2868903973,31342724, 15482902, 2868920360,2868936714,8401495,
- 2868953220,2868969490,1022541864,2868998744,2869424730,2869625432,1899429900,320946627, 2869665227,2869736027,2869806055,545472554, 2869867100,2869952571,3244131,
- 295944232, 2869985583,2870019619,2870067222,2870083600,130433034, 2870100055,958775322, 2870162013,2870329370,2870346648,2870394964,2870429068,2870513394,525058107,
- 2870575158,2870607908,2870624295,2870657456,2870689821,1053556793,2870706182,638484486, 2870724437,27328543, 2870788573,2870820870,2870837279,2870853653,165494824,
+ 2868708302,2868740137,2868756502,2868772892,1371897892,2868789269,55050259, 2868818518,2868887570,2868903973,31342724, 15482902, 2868920360,2868936714,8401495,
+ 2868953220,2868969490,1022541864,2868998744,2869424730,2869625432,1899429900,320946627, 2869665227,2869736027,2869806055,545472554, 2869867100,2869952571,3244131,
+ 295944232, 2869985583,2870019619,2870067222,2870083600,130433034, 2870100055,958775322, 2870162013,2870329370,2870346648,2870394964,2870429068,2870513394,525058107,
+ 2870575158,2870607908,2870624295,2870657456,2870689821,1053556793,2870706182,638484486, 2870724437,27328543, 2870788573,2870820870,2870837279,2870853653,165494824,
2870882910,2870968418,2871003317,129876022, 2871059202,2871125508,2871181323,2871199064,2871247657,2871292511,2871390816,2871477622,1338785794,2871526339,2871587425,
2871784034,2871886688,29900828, 2871964259,2872046180,2872149120,2872197126,86327302, 2872213514,2872229929,2872246284,2872262682,2872279052,916537354, 2872295566,
126287883, 2872328194,2872344591,753631254, 2872362291,128155663, 2872410543,1753359392,2872443310,2872492034,2872510379,2630369346,2872586853,113492728, 2872848998,
- 2872914535,2872983611,1825128487,2873017167,2873061992,2873196978,1277952045,2873242217,2873344002,202047499, 2873373290,1665799195,2873458704,2873475082,27344927,
- 2873504363,266190955, 139036053, 2873638999,2873688074,9535625, 2873705556,2873755410,2873802762,545882743, 2873819202,2873851950,2873901109,2873934113,867943531,
+ 2872914535,2872983611,1825128487,2873017167,2873061992,2873196978,1277952045,2873242217,2873344002,202047499, 2873373290,1665799195,2873458704,2873475082,27344927,
+ 2873504363,266190955, 139036053, 2873638999,2873688074,9535625, 2873705556,2873755410,2873802762,545882743, 2873819202,2873851950,2873901109,2873934113,867943531,
2873966645,2873999447,2874048564,2874081306,46350639, 2874110572,2874163503,2874196004,2874212354,2874230351,2874277931,2874310658,2163376170,2874337637,2874427548,
2874474754,2874507394,8389367, 2874524970,2874572810,2874589226,413647243, 2874605570,2874621963,2874638338,2874654749,2874671135,125796373, 2874687504,2874703898,
2874721692,1780839021,2874782318,2875011695,2875097217,191004801, 2875130350,2875162690,2875195408,223182854, 2875213310,2875277371,2875310164,2875342932,2875388528,
2875503217,2875794350,126599208, 2875867142,1266204691,2875885057,2875950174,150913035, 2875998220,2876014618,141656075, 2876031083,2876071228,2876142194,2876240499,
- 751354129, 758087682, 2876293423,2876328203,2876387956,2876500413,128106508, 2876538892,1481427680,2876556200,2876588072,303611935, 2876617333,2876719135,141656106,
+ 751354129, 758087682, 2876293423,2876328203,2876387956,2876500413,128106508, 2876538892,1481427680,2876556200,2876588072,303611935, 2876617333,2876719135,141656106,
2876740070,2876785099,321847380, 2876833858,2876866579,948715532, 2876895862,703021082, 2877095938,2877112346,2877128733,52477968, 2877145090,86327322, 2877161531,
2123513955,2877194259,119881730, 46350625, 47251458, 2877223543,5308959, 2877292628,139034927, 2877326734,110052382, 2877403768,2877715065,2877784066,1763460625,
- 2317893668,2877804889,2877867992,2877936716,467978014, 2877982225,525467688, 2878014550,2878066318,2878112033,1391411231,2878157434,2878288507,2878390326,176504889,
+ 2317893668,2877804889,2877867992,2877936716,467978014, 2877982225,525467688, 2878014550,2878066318,2878112033,1391411231,2878157434,2878288507,2878390326,176504889,
2878423472,443138665, 2878465966,2878504986,2878521346,258097181, 2878537744,611450920, 2878554158,2878604989,147341354, 246563576, 2878686856,51871746, 2878747260,
2878783555,2878869956,2878931000,2878964343,5345632, 1435511226,2878996951,2879030505,2879078410,111132691, 2879107709,2879193094,246087686, 2879209498,2879238782,
2879386239,2879582848,2879651856,2879668234,1128972309,2195944, 2879687920,46530589, 79757331, 2879750681,563347485, 2879817076,316293186, 2879871741,2879933252,
2879995962,2880045087,51494951, 2880062487,2880110676,2880143961,2880177956,2880238209,2880324693,2880356379,2880389597,2880422735,5341815, 2880467586,2880536598,
2880553000,152518666, 2880582275,2880811652,2880880662,1715568642,149159963, 2880897561,2880962586,1693434378,2880988103,2881061335,2881093653,2881111308,2881169885,
- 2881235961,760954987, 2881290477,2881323065,2881339394,2881355802,124403741, 2881385093,1812267024,2881454090,2881471731,2881520541,2881602167,2881635151,55525810,
+ 2881235961,760954987, 2881290477,2881323065,2881339394,2881355802,124403741, 2881385093,1812267024,2881454090,2881471731,2881520541,2881602167,2881635151,55525810,
2881680006,2881749002,2881765386,389185538, 2881782407,2881831437,2881880066,2881896486,2881914200,2881962896,2881994754,593117210, 2882011138,2882027530,2882043906,
- 300105749, 2882073223,2882237064,2882372344,2882406899,2882515593,2882597514,2882646667,2882765736,2882797998,163731239, 45760528, 2882859660,700858408, 948011024,
- 2882928733,263536671, 2882979385,740065296, 2883081458,727215161, 2882912277,2883158123,2883190850,220662448, 2883224599,2883278062,2883383949,271810626, 124863095,
+ 300105749, 2882073223,2882237064,2882372344,2882406899,2882515593,2882597514,2882646667,2882765736,2882797998,163731239, 45760528, 2882859660,700858408, 948011024,
+ 2882928733,263536671, 2882979385,740065296, 2883081458,727215161, 2882912277,2883158123,2883190850,220662448, 2883224599,2883278062,2883383949,271810626, 124863095,
2883498638,2883584002,1701937162,369329327, 2883600438,2883646095,2883797002,8614544, 166069278, 2883813435,1960771620,2883859089,2883977242,131334666, 2883993602,
2884014402,2884059162,166199380, 2884075579,2884108298,2884124674,604831786, 331677999, 2884154002,21151770, 2884259196,151896079, 1135149172,2884288628,2884304989,
2884354164,2332721174,2884383379,2884419620,2884436008,2359317, 513998876, 2884453696,2884485141,571768889, 2884501620,99876871, 2884530836,210042887, 2884567045,
2884583431,32456727, 2884599818,2884616213,2884632578,6946853, 2884661909,2884809366,2884894822,2839478301,2884940439,2885058818,2885091458,8614552, 2885107844,
- 28819594, 2885137049,2885189634,2885206073,53690405, 2885222431,2885238810,2885256653,2885287993,170148785, 2885304358,2885320706,200524678, 2885337104,947732486,
+ 28819594, 2885137049,2885189634,2885206073,53690405, 2885222431,2885238810,2885256653,2885287993,170148785, 2885304358,2885320706,200524678, 2885337104,947732486,
2885353488,207439273, 2885372695,5342182, 309461471, 2885435444,373800966, 2885468244,121110531, 2885513882,2885550090,2885566500,1090879530,490881062, 2885972636,
- 2886091774,2886139944,212844582, 2886160570,2886225538,2886270997,2886288336,2512175146,2886321139,2886336554,48381992, 30392358, 2886352937,2886369292,677724186,
+ 2886091774,2886139944,212844582, 2886160570,2886225538,2886270997,2886288336,2512175146,2886321139,2886336554,48381992, 30392358, 2886352937,2886369292,677724186,
2886398621,2886470959,2886510439,2886562462,540295180, 2886644383,2886696972,2886714104,4997322, 2886749819,2169487419,2886804985,2886894743,2886955680,2887041036,
51675142, 2718368163,2887057933,2887107969,2887168673,2887336002,2887381666,2887451848,169263142, 2887483695,1677787146,2887527547,2887581712,2887598109,2887614516,
2887660195,2887713932,2887761936,149913629, 2887791268,2888124557,2888171551,674709542, 2888187934,2888224591,2888269834,2888287055,2888319057,299813214, 2888351756,
2888368230,2888400980,2888434825,2888482848,2888515668,120242212, 2888556078,246464947, 2888610469,2888695915,425394647, 2888741542,2888787038,2888826892,2630451240,
2015234, 1948975106,2888856231,2888977074,2889040294,2889074466,645169154, 2889105467,2889138635,2889189485,2889249448,2889285884,2889318937,218611731, 2889396905,
- 2889446058,2889548456,6374390, 2889589886,2889662530,2889695253,2889711675,2889744396,2889760794,2889778044,843907093, 2889826370,2889859156,2889904811,9925292,
+ 2889446058,2889548456,6374390, 2889589886,2889662530,2889695253,2889711675,2889744396,2889760794,2889778044,843907093, 2889826370,2889859156,2889904811,9925292,
195215391, 2890003117,2890220565,649314342, 2890268814,2890301547,2890334210,2890350632,455983114, 2890367279,277725194, 2890400653,2890481690,2890500861,2890547259,
2844344332,2890581363,2890612738,2890638019,2890694668,2890711078,2890727453,2130347, 2890756782,2890874902,2890891266,2890907659,2890924556,2890956822,2890973186,
45776933, 2890989570,2891007738,145145866, 1560084511,2891038804,2891071514,2891087888,2891104262,1475690527,2891120706,307593667, 2891153420,2891169821,2891186188,
868253722, 71483432, 2891215535,2891269491,2891300890,1098563615,2891317782,4685866, 2891350075,2891382824,2891399178,922599466, 2891415554,2044919850,2891444912,
2891513872,2891530256,2891559601,2891625138,2891661378,769426300, 2891694106,2891710476,52133925, 2891739827,2892008259,2892072928,242368550, 139035678, 2892120151,
2892170063,1702510598,2892202298,2892234798,2892288087,2892336059,19251512, 2892414998,486522911, 2892431444,5866867, 2892464139,4685835, 2892493492,2892546114,
- 689800161, 2892580160,240844866, 2892611643,2892645112,1917037, 2892690101,2331050585,2601336886,2892859008,208502865, 2892906580,2892952246,5324847, 142835750,
+ 689800161, 2892580160,240844866, 2892611643,2892645112,1917037, 2892690101,2331050585,2601336886,2892859008,208502865, 2892906580,2892952246,5324847, 142835750,
49086475, 2893083319,2893156645,2893230776,2893267202,41959554, 77251154, 2893300622,451461229, 2893365300,2893398037,51920922, 2893418440,2893479978,2893496386,
2893542073,2893594677,2893627418,240699058, 1438842909,2893656762,30588964, 737902633, 2893692934,2893709314,2893725724,2893742118,2893758479,52215811, 2893787835,
2893902524,2893987921,2894022227,2894086163,27623918, 272156100, 2894115517,2894168074,52985875, 2894184514,2894217653,914063388, 2894261792,2894299178,2894315549,
- 2894331916,73515018, 2894361278,2894414666,2894463005,892878850, 2894479823,152027147, 2894512165,2894528528,1490993190,2894557887,2894656192,2894692368,45531174,
+ 2894331916,73515018, 2894361278,2894414666,2894463005,892878850, 2894479823,152027147, 2894512165,2894528528,1490993190,2894557887,2894656192,2894692368,45531174,
2894708738,2894725126,2894741514,1451556876,1022541845,2894770881,2894897926,2894938133,229720102, 183369765, 2795896844,2894954606,2894987289,714244101, 2895020053,
2895036454,17842226, 2895052822,2895069300,40927241, 8142979, 2895085609,2895102378,2895134836,84394021, 2895164098,429277221, 4964390, 2895331349,1797685260,
2895347820,2895380518,2895396876,84934667, 2895414321,2895495206,425367667, 2895511609,2895528239,2895573699,2895708162,2895729659,2895773712,4702290, 1067171906,
- 2895790092,2895806490,1386332162,993608281, 2895824192,2890366978,2895856791,2895904797,2895921193,2895937651,933919, 2895953977,2895970978,2896003129,66814265,
+ 2895790092,2895806490,1386332162,993608281, 2895824192,2890366978,2895856791,2895904797,2895921193,2895937651,933919, 2895953977,2895970978,2896003129,66814265,
2896032452,2896085122,2896101394,2896117771,2129929, 2896134146,973799430, 2896163525,2896298418,2869624854,409010192, 2896330795,2896363556,2896379906,2896396298,
2896412693,2896429078,2376220703,2896445556,2896461834,2896478324,918470663, 2896494608,2896511607,303431682, 2897130183,2897199224,2897215525,1114232, 2897232247,
61259797, 2897277640,2897313815,2897330194,2897346692,2897363076,7602311, 2897379337,2897395717,2897412233,2897428485,2897444998,11059205, 2897461277,2897477670,
- 2897494021,2897510405,2897526921,42270777, 2897543180,2897559686,2897575962,2897592435,10371093, 2897608746,57032722, 2897625222,2897641603,2897657971,8274055,
+ 2897494021,2897510405,2897526921,42270777, 2897543180,2897559686,2897575962,2897592435,10371093, 2897608746,57032722, 2897625222,2897641603,2897657971,8274055,
2897686094,2897723429,2897739779,402046985, 44646416, 2898178761,307236575, 1675183068,2898309834,2898379223,2898424523,2898575362,328073227, 2898604748,2898680772,
- 1077149707,2898732184,2898776109,2898838412,2898886678,199066201, 2898903846,617496578, 113213480, 2898948813,2899176103,2899264663,2899314171,2899361832,127048350,
+ 1077149707,2898732184,2898776109,2898838412,2898886678,199066201, 2898903846,617496578, 113213480, 2898948813,2899176103,2899264663,2899314171,2899361832,127048350,
2899391182,115607118, 2899476567,163299760, 2899538639,2899608043,258637827, 44253186, 2899653328,2899756449,2899804170,2899820550,2899837362,2899882705,2900084846,
- 1866645510,2900152170,2900243154,2900336391,292765752, 2900426806,2900459546,110233266, 2900475914,2900492340,2900525140,997179413, 2900557836,2900574214,18399247,
+ 1866645510,2900152170,2900243154,2900336391,292765752, 2900426806,2900459546,110233266, 2900475914,2900492340,2900525140,997179413, 2900557836,2900574214,18399247,
2900603603,459046914, 2900804118,58802216, 2900836354,2900852764,164413471, 2900869634,173490710, 2900914900,2901016683,397230091, 2901049779,2901082124,2901099494,
2901144277,2901344268,336790558, 2901360943,2901393474,2901439190,2901540890,2901557250,117751818, 2901573651,2901590032,2901606421,116883944, 2901622868,2901655605,
2901691179,2901770296,2901804218,2901848791,2902027679,2902081567,46645258, 2902098875,2902163510,63816863, 2902199312,2902323928,2902376450,350142500, 2902405849,
2902556688,2902573058,1326415898,2902590320,149667878, 2902639038,5832735, 2902704184,2903119526,2903167369,2903257818,2903323355,2903393364,2541618023,2903454428,
2903626208,272351258, 2903707259,2903752750,2903814877,2903883836,128457374, 2903978718,2904060639,1493499925,2904195098,2904211468,706102281, 2904240864,2904322785,
2904506396,1030193454,2904524858,1459139298,2904589321,2904621119,2904654048,52363285, 2904686594,2904702986,18890867, 2904722114,166232086, 2904781539,2905043684,
- 2905165779,2905212106,2823176202,2905273061,2905384423,2905440286,2905473499,1040531494,2905511363,2905587754,2905617126,2905669634,4177926, 2905699047,150569905,
+ 2905165779,2905212106,2823176202,2905273061,2905384423,2905440286,2905473499,1040531494,2905511363,2905587754,2905617126,2905669634,4177926, 2905699047,150569905,
2905784322,322715663, 2905801548,2905849882,245301260, 2905868091,2905915993,598851638, 2905948225,7013525, 2906010344,2906128406,810876930, 10649659, 2906149928,
16597229, 2906223337,2906358937,2906406971,2906452714,2906518251,2906570798,2906620004,301236230, 2906652975,2906685870,49790997, 831635914, 2906747628,2906866816,
- 113836035, 2906921765,2906980362,71188496, 2907009773,2907303611,342065425, 2907343642,2907423480,2907456398,1663254594,2907523094,2907599598,2907701355,764330091,
+ 113836035, 2906921765,2906980362,71188496, 2907009773,2907303611,342065425, 2907343642,2907423480,2907456398,1663254594,2907523094,2907599598,2907701355,764330091,
2907734072,2907770926,147407608, 2907849163,36405719, 2907900287,2907976431,612532250, 2908041968,2908110904,2908145070,334151692, 2908304113,2776252431,2908422172,
2908438534,8995410, 2309996554,8994856, 169787402, 1152008258,2908465341,17809545, 2908517106,571326493, 2908882648,2908930087,2908975607,2909061227,2124578847,
2909094902,2834915, 2909128071,2909159854,2909208578,2909225001,452018197, 2909254387,112608705, 1113768029,164610050, 624051369, 2909405230,68230839, 2909455216,
3212170, 2909503910,2909549300,2909651481,2909716520,2730377222,2909733401,449871898, 2909798934,2909831252,338264075, 2909864949,2909931248,2909962285,2909995020,
- 2910011418,2910027910,2359319, 2910044920,364446616, 2910089973,2910159162,44679178, 2910191703,2910243249,2910302966,2910352119,2910504123,2910553483,180437008,
+ 2910011418,2910027910,2359319, 2910044920,364446616, 2910089973,2910159162,44679178, 2910191703,2910243249,2910302966,2910352119,2910504123,2910553483,180437008,
2910602409,2910634047,2933350, 2910679800,2822619570,2910827257,2910946861,2910996501,2911040250,2911142376,2911175684,2911241561,2911272992,2911308186,2911389435,
2911449851,1098563596,2911531772,2911617558,1439990049,2152824858,2911649794,2911666187,6111260, 2911695613,4999724, 2911830319,191984382, 2911875839,2912026731,
2912059446,2912092519,52215839, 369623071, 2912126575,246562844, 2912187136,874349079, 2912469592,2912502074,2912534530,185810950, 110120484, 2912563969,1262141893,
@@ -5422,9 +5417,9 @@ static const unsigned int DictNodes[84251] =
558579765, 1982660667,2914866216,396771628, 2914926608,2914944499,2914975831,2915025855,2915058123,2915107870,2915140915,2915188752,2915205136,48021545, 2915234570,
2915336258,48021535, 2915369807,2915401755,2915436160,2915483674,36652006, 1446641695,2915500491,2915550189,2915634626,2915680266,1459139339,2915700514,2915779024,
1891745820,500727820, 158220387, 2915840780,2916007958,88948752, 2916024814,554663957, 2916057100,2916073535,760955307, 613302356, 2916106242,141656085, 2916135693,
- 2916250382,2916355629,514883594, 1090961448,2916401233,2916433976,1055408170,2916467289,2916501365,2916564994,271925258, 2326531, 2916582602,2916630843,741130276,
- 2916676367,2916778006,1804337154,2916807440,2917056522,300584147, 683852585, 2917074200,2917138448,2917156300,6882167, 2917187668,2917220436,2917253130,262078493,
- 2917270041,2917335147,2917368700,2917417813,2917466786,1350058831,2917507926,2917564442,87031839, 2917583556,2917613570,2917629967,2917646362,2917662751,6193209,
+ 2916250382,2916355629,514883594, 1090961448,2916401233,2916433976,1055408170,2916467289,2916501365,2916564994,271925258, 2326531, 2916582602,2916630843,741130276,
+ 2916676367,2916778006,1804337154,2916807440,2917056522,300584147, 683852585, 2917074200,2917138448,2917156300,6882167, 2917187668,2917220436,2917253130,262078493,
+ 2917270041,2917335147,2917368700,2917417813,2917466786,1350058831,2917507926,2917564442,87031839, 2917583556,2917613570,2917629967,2917646362,2917662751,6193209,
2917691029,2917741329,2917924882,933907, 2917941254,2917957661,2917974052,2359311, 2216247337,2917991287,2332590090,2918429459,2918614247,2918664576,2918728126,
2918794532,2918842420,2918875158,2918891952,116868072, 2918924304,2918940682,266777364, 2918970133,2919088346,9158793, 2919123540,2919170070,2919186498,2919219226,
2919248662,2919433839,2919481398,1637580838,2899330078,2919515018,2919546946,2919592727,2919859861,2919923796,2919956839,2919989274,2196825, 2920005686,2920038411,
@@ -5435,7 +5430,7 @@ static const unsigned int DictNodes[84251] =
1917961, 2922087767,50987036, 2922135618,2922171857,2922230560,4997227, 2922381771,336052675, 2922430896,2922463258,2922479619,1097740, 2922497262,2922541857,
2922692667,2922738466,495534998, 2922840066,2922856879,2922902307,267077025, 2923168235,2923213604,1948778522,2923274129,2923381913,2923435825,825967816, 2923479066,
2923495430,527581205, 2923524901,4292715, 799572728, 2923627511,2923695605,2923790402,2923823116,118884835, 2923840884,2923888642,2923905043,2923921430,2923937813,
- 2923954228,2923986972,489406466, 2924004436,2924063699,2924118059,2924163878,2924380685,2924429913,2924462139,2924494874,2924511264,2924544054,2924577227,220776931,
+ 2923954228,2923986972,489406466, 2924004436,2924063699,2924118059,2924163878,2924380685,2924429913,2924462139,2924494874,2924511264,2924544054,2924577227,220776931,
2933946, 2924625941,2924643422,2924694785,2924724290,2924761649,2924807709,2924872535,2924907554,2924983079,2925200586,2925249526,2925281373,2925343528,2925412884,
2925461585,2925494331,51068954, 2925527086,2925576867,2925625647,2925658122,2408469, 2925674537,1225768972,2925703977,2925789214,2925822059,2925856972,2925887553,
2925494284,351617052, 2925949738,2926039601,2926084455,2926118279,2926149644,901660698, 2926166031,641105961, 2926182412,2926198794,2926215621,2926261035,2926480393,
@@ -5452,7 +5447,7 @@ static const unsigned int DictNodes[84251] =
2933424134,2933441007,1425227807,1232748651,2933474156,2933523576,2933568324,506971166, 2933653807,2933686873,639108046, 2933722001,2933818258,2933866555,2933899266,
55853096, 2933916495,2933949929,2933998027,2934047480,2934092613,2934158150,2934341685,1850802188,2934374426,2934391731,2934423554,209338380, 2934440239,2934479717,
2934534983,2934554636,2934571145,64831493, 2934764361,2934964261,2934981472,2935059274,2935112551,2935144450,234176533, 2935173963,2935254656,2935325819,2935357482,
- 2935373826,2935390315,2935436108,2935518029,59228166, 2935583566,2935812943,2935931480,2935964519,2935996427,2936012802,2936029203,2936045570,523583526, 3227698,
+ 2935373826,2935390315,2935436108,2935518029,59228166, 2935583566,2935812943,2935931480,2935964519,2935996427,2936012802,2936029203,2936045570,523583526, 3227698,
1695724368,2936063083,1440628795,2936105479,296960601, 408059914, 2936143937,294436875, 2936196831,2936242188,2936260932,2936291350,2936307714,2936324117,2936340485,
2936356886,1605353474,59228163, 2936375237,2936419153,2936572185,2936648530,2936767009,2936828755,2936894292,2937094146,2937110627,2937143318,1902886914,1817626533,
2937172821,2509472222,2937320278,2937357543,2937418583,1053348604,2937539479,346456080, 2937598808,2937651627,306529103, 2937897451,2937940147,2937978905,2938017025,
@@ -5460,53 +5455,53 @@ static const unsigned int DictNodes[84251] =
2938896443,2938929164,2938946296,411830046, 2938979745,2939027522,2939073375,2939142182,2939158544,226951173, 2939188064,2939470353,177341679, 2939507681,2939572760,
1012974169,2939617291,110215586, 2939646817,2939945015,389890919, 2940022739,140247654, 967753730, 2940092846,2940141628,2940228062,2940272693,2940305514,2940388199,
2940420138,2940436502,2940452885,2940470281,2940502100,2940535727,2940613474,636190722, 2940715522,353239124, 2940747778,112754719, 2940764244,2940801307,2940846382,
- 2940878894,2940928760,2920923142,2940961929,2941010457,456724978, 2941075466,2530426922,2941091946,361185292, 2941178122,1050429782,865615882, 2941268835,6866369,
+ 2940878894,2940928760,2920923142,2940961929,2941010457,456724978, 2941075466,2530426922,2941091946,361185292, 2941178122,1050429782,865615882, 2941268835,6866369,
2941399908,2941485591,2941524128,2941567018,2941584584,539984175, 2941616194,2941652918,2941714513,719093763, 453017603, 2941760357,2941989734,1341243404,2942042155,
477085706, 2942074961,2942120807,2942173196,2942189570,2942205978,2512551957,2942222420,290471974, 2239004684,2942268264,2942337931,474399753, 2942415721,2942487581,
2942535279,2942582800,2942599208,2942615578,1247789085,2942634750,31424527, 2942677866,2942829304,2942874475,2942940012,144949269, 2942976012,29900806, 2943371700,
8389826, 2943434782,1520058414,2943474125,2943533137,2943565931,152191335, 1584250962,2943602099,2943713282,307298314, 2943742830,459046938, 2943857519,2944037744,
1481393075,2944155872,2116517910,2944195805,2944254154,2944286792,2944353490,933479287, 893501743, 141295627, 2944398193,2944614487,2944676722,2944725875,2944861970,
- 2944916283,2944958490,630128652, 2944974860,1450459655,202309634, 2944991291,2945025376,343441420, 2945089541,2945107913,387235871, 2945168244,2945368596,319668331,
+ 2944916283,2944958490,630128652, 2944974860,1450459655,202309634, 2944991291,2945025376,343441420, 2945089541,2945107913,387235871, 2945168244,2945368596,319668331,
2945420370,2945499181,3228662, 2945545077,2945598617,173228054, 2945659766,2945712555,2945748844,2945807223,2945908801,148488211, 2945958318,2946007055,2946023440,
2946039846,443645958, 2946069368,2946157218,2946216825,2946315130,2946383894,118472716, 2946400284,612270383, 2946429819,2946544508,2946613260,291111011, 2946642813,
2946695255,2946744841,9175253, 2946790270,1528791056,2947023329,284966918, 872153391, 2947074732,706102193, 900040820, 2947186698,2947203495,2947253142,1234895287,
- 2947301665,2947334154,730333667, 2947350540,2947367433,370524219, 2947399696,2947418133,2947451055,2947498015,1505624101,188958148, 2947527551,2947642240,188104767,
+ 2947301665,2947334154,730333667, 2947350540,2947367433,370524219, 2947399696,2947418133,2947451055,2947498015,1505624101,188958148, 2947527551,2947642240,188104767,
232997465, 363560976, 2948023198,2948055479,2948089559,2948186138,2948207054,2948253008,185417730, 164118554, 2948313986,334151692, 2948383713,1435107873,2948428675,
- 4999637, 2948679144,2948727278,2948759634,8401796, 2948805509,2948907062,2948940822,2948992304,2949038181,2949072418,468322325, 2949120059,2949154121,262078474,
+ 4999637, 2948679144,2948727278,2948759634,8401796, 2948805509,2948907062,2948940822,2948992304,2949038181,2949072418,468322325, 2949120059,2949154121,262078474,
2949202767,3719643, 2949235663,2949283924,466993174, 2949316695,2949378950,2949480943,2949513265,44285974, 2949595243,2949627970,17842636, 2949661552,2949710361,
- 2949775460,2949808139,2949826328,2949890527,2949922855,2949959594,2950042607,632717787, 2950104003,2950152198,2950169600,2950209438,2950263687,2950545439,6455416,
+ 2949775460,2949808139,2949826328,2949890527,2949922855,2949959594,2950042607,632717787, 2950104003,2950152198,2950169600,2950209438,2950263687,2950545439,6455416,
2950574984,1285701643,2950676532,805355959, 1761411156,2950709485,2950745851,2950804361,2950955014,355533227, 2950984586,2951053404,2951086927,2951118932,2951155835,
2951200855,2951263115,2951476108,2951541645,2951771022,2951872574,2951932286,2951989010,223363543, 2952036415,2952082319,175524790, 1917840, 2952169237,2952233067,
2952265823,55722003, 2952328080,2952413635,2952447941,2952491921,2952544322,2952590226,2952643485,1804206298,2952724584,2952781804,2952840364,2952888396,2904555530,
2952934291,2953084987,2953118218,108625949, 2953152480,2953200087,2953242415,2953343892,1241333786,2953445388,45432912, 2953469244,2953527355,298614822, 2953921689,
2953971007,268189795, 2954036285,2670602, 2954101169,2954134679,644907113, 2954182737,2954228630,1918267, 2954510478,2954556311,353796455, 2954625089,2954675431,
- 2954723799,2954756641,2954805314,2954851224,2954915311,2954998681,2955064218,2955167111,283967519, 373604364, 2955198923,1736081515,2142748684,2915205146,129466380,
+ 2954723799,2954756641,2954805314,2954851224,2954915311,2954998681,2955064218,2955167111,283967519, 373604364, 2955198923,1736081515,2142748684,2915205146,129466380,
629637142, 2955260827,2955412682,1660682293,2955460750,2955493402,1814609949,2955509776,5505029, 2955526447,2955560719,2955610246,2955657282,8399349, 2955703196,
2955965341,2956036035,2956083212,1177239656,2956112798,2956149211,2956194719,2956279850,118669324, 2956309408,2956416482,2956506017,2956574725,798736396, 2956591116,
- 2956620706,18399270, 2956705838,2956760710,2956850083,61456386, 2598537944,5325798, 184549407, 2956981156,2957066282,2957084617,2957131788,2957148223,39895049,
+ 2956620706,18399270, 2956705838,2956760710,2956850083,61456386, 2598537944,5325798, 184549407, 2956981156,2957066282,2957084617,2957131788,2957148223,39895049,
1835253762,2957181001,2957247311,2957292453,2957426742,110298265, 2957459502,2957508618,2957538214,2957669287,2957770778,2957800360,8401833, 2958032950,2958066519,
2958098516,2958131243,367443978, 2958163984,896516622, 2958180402,599343116, 2958214395,2958262302,1082769840,429834259, 2958295121,2958327901,2958390186,2123624228,
2958475294,2958508058,2958524485,130580520, 2958570411,2958770205,527057012, 2958799788,2958901314,2958934018,2958950415,412140618, 2958967279,2959012781,2959078318,
- 848429068, 2959327832,292569190, 2959369245,2959409158,2959425567,152027146, 2959441974,2959487919,2959639203,2959687682,2959704083,1699348517,31490088, 266766848,
- 2959726105,2959782832,2959935590,2959982602,1185742911,2959999030,2249719854,707919931, 2960031831,1561040769,2960080950,2960113669,2960130523,2960162911,49152003,
- 2960222458,2960293910,2960310303,958038035, 2960339836,2960408995,2960441350,2960457747,2960474134,2960490498,2422898729,510361610, 2960509504,2960556058,266486693,
- 297418788, 2960585649,2960884207,2960921668,2960978866,2961077171,2961260570,2961276987,2961309701,2961331673,2961404852,2961481672,2961555512,2961588278,669630502,
+ 848429068, 2959327832,292569190, 2959369245,2959409158,2959425567,152027146, 2959441974,2959487919,2959639203,2959687682,2959704083,1699348517,31490088, 266766848,
+ 2959726105,2959782832,2959935590,2959982602,1185742911,2959999030,2249719854,707919931, 2960031831,1561040769,2960080950,2960113669,2960130523,2960162911,49152003,
+ 2960222458,2960293910,2960310303,958038035, 2960339836,2960408995,2960441350,2960457747,2960474134,2960490498,2422898729,510361610, 2960509504,2960556058,266486693,
+ 297418788, 2960585649,2960884207,2960921668,2960978866,2961077171,2961260570,2961276987,2961309701,2961331673,2961404852,2961481672,2961555512,2961588278,669630502,
2961622185,2961653781,2961670228,2961703149,2535770676,2961735692,2961752585,2961784937,2961818033,2961863605,2962092982,501563398, 2962162117,2962197110,2962260443,
2962292757,2962309122,1818664, 1102053388,2962325741,2962360506,2962396078,2962456630,2962489410,154796131, 2962526351,2962571323,2962604044,889307222, 1284133904,
2962620437,2962636892,2962670027,2962718741,2962735116,2962751514,505380870, 2962767884,2962784727,6308143, 2962821243,2962879415,2962931738,2962948125,2962977720,
2963031226,2963065582,2963111955,1337229327,2963129512,2963190713,2963260310,150241311, 2963309053,2963359091,1572388866,2963403706,2963439916,344670641, 2963472415,
- 1897349131,2963489083,2963521555,741326851, 2963537961,2963554346,4964486, 2963583931,5312629, 2963669034,2963685402,195264553, 2963701816,2963747772,2196087,
- 8401853, 8391087, 2963881986,2963898371,77037700, 696075794, 2964304831,2964357201,2964390806,2964452288,2074477959,2964546547,1840971807,2964599745,382288632,
- 2964714434,1177665617,1043120138,2964750560,2964784158,2964829123,2964930655,2964979758,2965030279,2965061644,281935883, 2965078035,2965094422,1281703974,800997388,
- 2965111310,2965156804,2965258269,2965274664,476266524, 2965291039,2965310221,2037383187,2965377183,2965422617,2965487642,131891216, 2965517253,2965603465,488178511,
+ 1897349131,2963489083,2963521555,741326851, 2963537961,2963554346,4964486, 2963583931,5312629, 2963669034,2963685402,195264553, 2963701816,2963747772,2196087,
+ 8401853, 8391087, 2963881986,2963898371,77037700, 696075794, 2964304831,2964357201,2964390806,2964452288,2074477959,2964546547,1840971807,2964599745,382288632,
+ 2964714434,1177665617,1043120138,2964750560,2964784158,2964829123,2964930655,2964979758,2965030279,2965061644,281935883, 2965078035,2965094422,1281703974,800997388,
+ 2965111310,2965156804,2965258269,2965274664,476266524, 2965291039,2965310221,2037383187,2965377183,2965422617,2965487642,131891216, 2965517253,2965603465,488178511,
15073283, 1490714629,2965661587,2965713862,2966022476,2966067308,2966110238,2966143576,2966175756,246465007, 2966201351,2966269394,988971046, 2966336455,2966618521,
2966668216,2966719411,2966765611,367443989, 133710438, 2966798478,2966831106,16826379, 2966848521,2966881150,2966913108,2966948197,2966995957,2967062166,2967110157,
2967158786,1729020263,2967175605,2967207982,2967257093,2960130523,2967281359,2967425590,2967505163,2967552525,2967601162,126025770, 2967618167,2967650358,2967683082,
217235468, 508609430, 2967712712,2967781379,2967799595,755253260, 2967843785,154814950, 2967912460,2967929346,2967961622,1645068304,2967991242,2968060014,2968092738,
- 2968126762,2968176066,2013741058,2968233674,2968302539,2968368076,294633475, 2968437888,2968486519,854900841, 2968518749,2968567837,2040414224,2968584587,338493445,
+ 2968126762,2968176066,2013741058,2968233674,2968302539,2968368076,294633475, 2968437888,2968486519,854900841, 2968518749,2968567837,2040414224,2968584587,338493445,
2408454, 2968630221,2968732728,2968797210,2968826830,115114076, 2968944683,2968978761,2969026644,794525734, 2969059873,1663746050,2969108939,348635152, 2969170895,
2969465808,2969763933,2969814825,2969912839,1409630234,1044791317,2969993748,2970045979,2970108784,2970158019,2970206968,110215707, 2970239989,2970317777,2970354627,
- 2970402922,2970486805,2970518738,2970550318,2970599434,2970616242,2970648630,2970682687,2970750610,2970809298,340282205, 2970874835,45548034, 196608002, 404160528,
+ 2970402922,2970486805,2970518738,2970550318,2970599434,2970616242,2970648630,2970682687,2970750610,2970809298,340282205, 2970874835,45548034, 196608002, 404160528,
2970976686,2971025434,2971042790,2971075827,2971136980,2971175095,2971222047,155516940, 2971251669,2971516944,138232439, 2971546582,2971615324,4473592, 2971648847,
2971682190,1671480711,2971746320,2971762698,2971779114,2971795458,45760540, 2971813529,2971861046,2971893770,1644904470,2971910991,184680879, 1055408154,2971942918,
46776336, 2971959425,346707150, 2971997489,2972070871,2972271071,2972316632,260458768, 2972418585,2972486043,2972549146,109559849, 2972570475,2972627929,2972857306,
@@ -5519,16 +5514,16 @@ static const unsigned int DictNodes[84251] =
8401903, 2976776213,2790342678,2976792684,2976838640,1993195522,2976904177,2976972899,2977018866,2977061534,5537807, 2977100787,2977188383,2977235010,2977270995,
2977330164,891633680, 2977416468,2977474562,2977516419,2977579020,2977595398,2977612721,2977657845,2977727940,392642589, 1149715107,2977772534,2977854455,2977956442,
2977991517,2978021492,242647082, 2978038812,2978070644,2978086923,9535519, 2978116600,72663052, 33177730, 2978432630,2978480140,19252254, 2978496534,2978512955,
- 47087723, 125796381, 2978552928,2978627622,2978643980,2978660362,2323742725,1168588806,2978676853,2978709525,2425667596,2129963, 2978725909,1627389958,406028738,
+ 47087723, 125796381, 2978552928,2978627622,2978643980,2978660362,2323742725,1168588806,2978676853,2978709525,2425667596,2129963, 2978725909,1627389958,406028738,
2978745915,2978788345,1605353498,2978853882,2978906539,2978938906,2978955302,2978972566,1037714168,2979020815,2979037196,46891034, 2979066875,657145887, 2979197784,
- 2979250188,242368523, 2979266570,2979282973,173113460, 2924069282,2979312636,2979382684,2979438199,2979479562,2979495978,37191836, 411632878, 2979512436,84574323,
+ 2979250188,242368523, 2979266570,2979282973,173113460, 2924069282,2979312636,2979382684,2979438199,2979479562,2979495978,37191836, 411632878, 2979512436,84574323,
2979542013,2979676378,1561985029,2979709020,2979741714,2979758087,641106050, 2979787774,2979872784,2979889168,69861507, 2979905843,2979951615,66814259, 2979989291,
2980020537,109215772, 2980066304,2980315192,2980347936,2980381559,2980414881,2980471562,2980544578,2980580189,2980623361,285344181, 143393639, 2980692050,2980725672,
1298908190,2980758945,1894226691,2980811638,2980906773,2980970603,2981016578,2981167583,353796206, 2142635624,126763609, 2981199928,2981232742,2981265495,2981314566,
600522784, 2981333708,2981414933,2261028, 2981448113,2981495863,2981527564,2981543946,2981560326,2981576726,14712834, 606470156, 2981606403,2982101015,2982117385,
- 2982133781,8175631, 2982163460,2982199433,2982215814,2982232179,31801479, 2982248457,9207815, 2228748297,2982264966,231325727, 2982281331,2982297657,2523154,
+ 2982133781,8175631, 2982163460,2982199433,2982215814,2982232179,31801479, 2982248457,9207815, 2228748297,2982264966,231325727, 2982281331,2982297657,2523154,
2982313989,2982330373,2982346867,283361281, 2982363165,2975219719,2982379529,2982396020,2982412310,2982428694,52985896, 2982458373,2982576147,2982592524,2982608902,
- 933894, 2982625291,2982641680,2982658088,2982674442,2982690858,2982707237,577650710, 2982723596,2982739983,912033276, 2982767989,109052961, 2982823904,193200159,
+ 933894, 2982625291,2982641680,2982658088,2982674442,2982690858,2982707237,577650710, 2982723596,2982739983,912033276, 2982767989,109052961, 2982823904,193200159,
2982871106,2982903810,2982921641,2982953423,2982985735,2983015430,16941191, 2983038351,2983100524,2983133778,49938439, 2983162887,2983247898,1482391593,2983264686,
47611941, 2983326728,2983396954,2983428112,2983445406,2983490569,122683399, 581353484, 2983556106,2983609374,137445388, 2983641975,1152172137,2983687179,2983867404,
2983932941,51675172, 2983998478,2130521, 2984050728,22478850, 1463779359,2984067138,2984113167,108315963, 162185259, 2984181862,2984214570,7307274, 2984230933,
@@ -5538,16 +5533,16 @@ static const unsigned int DictNodes[84251] =
2985194519,2985296705,2985330956,1652818004,2985361434,2985377834,157827084, 420233247, 2985407504,2985456664,2985672917,1376220176,2985706161,2985738355,2985754739,
2985771013,2985787415,134791194, 2984329247,2985812243,2985845011,66822419, 2985882649,2985951241,2985967634,2985984002,16269353, 2986000438,2986034250,2986065942,
2986082388,2986115113,9535528, 2986138590,2986173395,2986213378,2986229765,23085057, 2986734619,240583416, 2986852362,2986868752,2986885125,2986901509,2986917910,
- 2986934274,2986950677,2986967071,2986984231,2986999819,2987016198,2987032578,17006628, 2987048970,2987065373,2987081740,2987098138,2815754246,2987114533,89227304,
+ 2986934274,2986950677,2986967071,2986984231,2986999819,2987016198,2987032578,17006628, 2987048970,2987065373,2987081740,2987098138,2815754246,2987114533,89227304,
2987130892,254967818, 2987573917,2987635740,2987688872,2612969488,2987734045,1363804597,2987819029,2987835867,2987881502,285344504, 2987943713,2987996191,2988082037,
2988127264,2988192801,2988274283,235160566, 2988408891,50118662, 2988443507,2988474397,2736130, 2988504098,406047913, 2988655645,2988703770,307855417, 2988733475,
867794975, 2988867661,2988900390,168067084, 2988916758,2988933122,246087722, 2988962852,2989065112,2989126210,2989241381,2989421606,2989588523,2989621250,2989637850,
2989670703,162186204, 2989703705,2488123887,2989770071,124862548, 2989817872,2989834246,1342177320,2989850690,2989883408,10371082, 680869904, 149160043, 2989913127,
2990126120,2990194991,1372194269,2990230938,2990296765,2990388265,2990470186,2990535723,2990606132,2990696949,2990738507,603878444, 2990800953,2990817755,2990850679,
2990882888,2990949487,1770078229,302563762, 2990994477,2991063062,2991079455,2991095939,39043202, 2991125550,2991179204,2991210512,2168717369,290390092, 1566360006,
- 2991226920,353094115, 2991256623,335790082, 2991473758,2991521845,2991567920,2991669678,414351400, 879740731, 2991721225,2991768947,2991800322,2991816761,246464617,
+ 2991226920,353094115, 2991256623,335790082, 2991473758,2991521845,2991567920,2991669678,414351400, 879740731, 2991721225,2991768947,2991800322,2991816761,246464617,
2991833625,202461541, 2991899167,2991961137,2992112630,308903967, 2992146861,2992193602,133414922, 2184200279,2992226330,2992242691,1964523532,2992272434,2992406612,
- 2992446215,2992521792,2992553994,271925284, 2992573095,8391402, 2992632883,2992703011,2992763956,71188501, 158253140, 2992845877,2992914891,443088938, 265601053,
+ 2992446215,2992521792,2992553994,271925284, 2992573095,8391402, 2992632883,2992703011,2992763956,71188501, 158253140, 2992845877,2992914891,443088938, 265601053,
345473051, 2992964888,2993029213,546553942, 581091357, 2993085916,2993127434,2993157174,59884114, 1136328723,2993209381,2993225769,2993246325,2993274885,2993291321,
2993307674,2993324039,2621447, 2993341609,2993746999,2993910840,2993995857,2994041913,2994241559,42074135, 2994258378,2994290991,2994324892,2994385978,2994467899,
2994521247,323731970, 2994566204,44433410, 1521042367,2994621827,608796678, 2994667549,689799471, 2994684009,38387722, 2994716731,2994749461,2994765836,2994782234,
@@ -5558,31 +5553,31 @@ static const unsigned int DictNodes[84251] =
2997338153,308871187, 2997354524,1049198632,2997370911,736509988, 2997387380,2997403685,115458069, 2997420062,2997452916,2997469621,2997515335,2997537237,2997569722,
2997600275,27627821, 2997618161,2997662792,2997699013,1154433065,59818118, 2997744713,2997796871,2997813276,33783845, 2997829661,2997846042,2997862402,2940747782,
2997878796,544047110, 124551170, 2997897237,2997928791,2997962288,2998006858,2998240415,116752422, 2998273893,2998321183,355585281, 19038210, 2998339434,2998372812,
- 2998419532,2998456456,2998486407,1308000340,2998522157,2998551607,2998583318,131776596, 2998613067,21102729, 2998678604,151896090, 2998730771,2998747146,2752540,
+ 2998419532,2998456456,2998486407,1308000340,2998522157,2998551607,2998583318,131776596, 2998613067,21102729, 2998678604,151896090, 2998730771,2998747146,2752540,
2998763521,2998781872,2998812788,766951446, 2998829084,2998845477,1140047883,2998861864,40976425, 2998891597,72499335, 2998912128,2998960966,2998992915,2999009282,
2999025704,38879253, 2999046817,2999124956,2999157367,2999612495,2999661648,2999747500,2999812108,140247138, 2999829420,2999907409,2575663864,2999944215,3000005714,
- 3000093449,3000140291,3000188930,2643050533,3000206695,3000270858,324091914, 3000287535,73744395, 3000320482,229654566, 3000431699,3000521286,3000582154,573128733,
+ 3000093449,3000140291,3000188930,2643050533,3000206695,3000270858,324091914, 3000287535,73744395, 3000320482,229654566, 3000431699,3000521286,3000582154,573128733,
3000599065,3000664166,849182972, 3000697309,3000742996,3000913200,3000972373,1482014957,3001070678,3001139254,3001185367,552402984, 3001234520,3001418615,3001463897,
- 17220547, 1200291862,3001562202,3001659788,3001696287,3001726043,3001909551,3001942446,1926726512,3001991252,1225588822,3002023975,3002056747,3002089515,188089544,
+ 17220547, 1200291862,3001562202,3001659788,3001696287,3001726043,3001909551,3001942446,1926726512,3001991252,1225588822,3002023975,3002056747,3002089515,188089544,
3002135644,3002424315,3002499179,45498397, 3002532440,45039637, 3002578013,8978442, 25559122, 1055801346,1788002388,3002659934,3002791007,3002974289,2587263213,
- 3003007075,3003039787,3003072518,108298268, 3003088980,3003121685,3003139166,3003187266,3003232754,3003301972,3003334715,3003367903,3003413600,3003514921,51593219,
+ 3003007075,3003039787,3003072518,108298268, 3003088980,3003121685,3003139166,3003187266,3003232754,3003301972,3003334715,3003367903,3003413600,3003514921,51593219,
3003531276,113115177, 3003551023,3003585793,3003629871,2493612042,1622409228,3003662352,3003692129,3003760913,3003805877,3003858954,3003875344,3003891723,3003908108,
502054952, 3003925327,1032208422,525156390, 3003957348,3003990058,1498791962,3004006428,3004022796,1475690553,3004052578,3004121093,3004137501,57262087, 1440253802,
3004153898,3004170256,3004189158,3004219423,9535499, 3004249187,3004385130,3004416002,5309865, 1200636046,3004445796,3004579847,3004596227,49938441, 3004615238,
- 3004645417,3004661782,1135902836,3004678260,767033384, 3004694564,104759337, 3004711391,3004745996,8372225, 3004776564,818610233, 3004792873,3004809245,717226012,
- 3004839013,3005186519,2162804, 3005232230,3005284373,2317795387,3005301215,3005334351,3005366278,1721958421,158711844, 3005396071,1466171434,3005448622,2621456,
+ 3004645417,3004661782,1135902836,3004678260,767033384, 3004694564,104759337, 3004711391,3004745996,8372225, 3004776564,818610233, 3004792873,3004809245,717226012,
+ 3004839013,3005186519,2162804, 3005232230,3005284373,2317795387,3005301215,3005334351,3005366278,1721958421,158711844, 3005396071,1466171434,3005448622,2621456,
3005497350,3005513766,3005530114,2530721849,758071298, 3005548612,3005595674,15482892, 3005612464,2659893277,3005645230,162185516, 124864372, 136118743, 3005694411,
49479701, 149131143, 3005747055,417317296, 3005822056,3006000789,3006038732,3006084201,3006166122,3006300182,1130627375,110724625, 3006319047,364447250, 3006365780,
- 3006411883,2409234451,3006553551,3006602200,3006644366,193709616, 3006682417,3006744168,3006808074,1240843273,3006824469,91668492, 3006841129,3006873607,19447823,
+ 3006411883,2409234451,3006553551,3006602200,3006644366,193709616, 3006682417,3006744168,3006808074,1240843273,3006824469,91668492, 3006841129,3006873607,19447823,
3006890513,3006922771,3006939173,70729746, 3006968940,3007004698,3007021084,884555817, 3007037476,3007055356,3007088124,66815484, 81248265, 3007132781,3007178975,
3007201306,127483915, 3007689839,3007742089,3007758470,3007774835,3007804528,28488817, 3007823881,3007840275,3007856777,3007873081,3007889542,3007905820,3007922291,
- 3007938570,3007955079,9535499, 3007971337,3007987715,3008004233,16269315, 3008020499,3008036874,3008053257,301727756, 532021258, 3008509042,3008640115,680771621,
- 897304602, 3008714912,3008757844,3008790582,3008826308,3008872474,3008890642,3008945107,3009000564,3009085522,3009118220,1900563, 3009135086,3009167811,459980810,
+ 3007938570,3007955079,9535499, 3007971337,3007987715,3008004233,16269315, 3008020499,3008036874,3008053257,301727756, 532021258, 3008509042,3008640115,680771621,
+ 897304602, 3008714912,3008757844,3008790582,3008826308,3008872474,3008890642,3008945107,3009000564,3009085522,3009118220,1900563, 3009135086,3009167811,459980810,
3009213557,3009282074,3009309688,3009363970,115196325, 1852342298,3009382203,3009442934,2196871, 3009557623,3009593428,3009626196,3009672312,3009709858,3009754233,
3009806791,3009868922,3009999995,113983500, 3010084890,3010104216,3010150454,3010186163,3010245143,3010363478,3010403269,484803020, 3010465970,3010527285,3010560303,
3010593282,2021114535,3010638972,3010740283,260456907, 3010773076,2196262, 3010811252,3010868349,3010933886,3011073019,1080492034,3011117279,310297447, 3011149826,
198606869, 611450882, 3011168820,3011199249,1436336244,44941333, 133840906, 3011245183,3011441792,3011477807,3011512339,3011560945,77512735, 1816231976,1431880778,
- 3011598276,3011741707,3011805210,3011822415,3011855245,3011937016,3011969885,1202848033,3012004228,3012067367,3012100180,3012132971,3012165661,3012182018,193249306,
+ 3011598276,3011741707,3011805210,3011822415,3011855245,3011937016,3011969885,1202848033,3012004228,3012067367,3012100180,3012132971,3012165661,3012182018,193249306,
3012198466,111149483, 3012233169,3012280750,176194167, 3012329931,3012379075,3012411859,1698463828,3012473985,3012739170,3012773504,397852682, 23855170, 3012834434,
3012886554,655851995, 3012904552,3012972901,823279618, 3013014659,3013087319,369279007, 3013137866,3013181486,238553652, 3013232941,175456287, 158646310, 3013293188,
3013444065,3013493273,3013558288,75300893, 3013577005,3013624785,3013673807,241664003, 805142531, 3013705794,3013738556,3013833861,361152543, 144098334, 3013870169,
@@ -5603,1450 +5598,1450 @@ static const unsigned int DictNodes[84251] =
1563082764,3021665450,3021804398,3021850928,3021898640,3021933478,3021976747,3022025900,3022075053,32637043, 3022107822,2854027283,3022169908,3022209066,3022238895,
1414479894,3022304432,3022422961,3022454826,495288323, 3022471184,360005689, 3022487570,86753414, 3022503957,3022520336,2241675275,3022877874,1939589710,1992557066,
3022929932,3022947064,3022982694,3023063465,159727628, 3023101227,2500233641,3023151704,3023192074,298663948, 3023221939,3023405102,2298233592,3023467700,3023519837,
- 3023574833,3023622322,3023683594,306955716, 3023713461,3023782519,46530619, 3023828150,3023893687,4997230, 319456093, 3023959224,238256131, 3024073913,447512587,
+ 3023574833,3023622322,3023683594,306955716, 3023713461,3023782519,46530619, 3023828150,3023893687,4997230, 319456093, 3023959224,238256131, 3024073913,447512587,
3024139450,3024274425,3024355344,25561720, 3024374120,3024486459,3024519974,3024551941,267501580, 1581499579,3024568332,3024585464,3024618426,1274363990,3024683018,
2801780, 3024712891,3024912443,306774455, 3024958652,3025027832,3025061352,68255831, 2204909625,3025109515,3025159511,3025207350,3025249962,3025319101,3025487238,
3025551882,68240822, 2208334678,3025597630,3025666648,3025698826,712900639, 3025716712,3025764847,3025798561,3025859775,698138683, 3025974464,875939268, 2076983599,
- 3026033621,3026076087,3026108456,9207827, 3026124812,3026141190,3026157698,3026173964,173850681, 3026203701,3026272277,3026289804,3026337804,3026354292,72499331,
- 3026370581,3026388955,286294057, 3026449601,3026555312,3026599967,3026616331,346488844, 2829713418,3026637308,103448633, 3026682370,3026714626,2785306, 82002036,
+ 3026033621,3026076087,3026108456,9207827, 3026124812,3026141190,3026157698,3026173964,173850681, 3026203701,3026272277,3026289804,3026337804,3026354292,72499331,
+ 3026370581,3026388955,286294057, 3026449601,3026555312,3026599967,3026616331,346488844, 2829713418,3026637308,103448633, 3026682370,3026714626,2785306, 82002036,
3026744514,3027061501,3027118624,3027173378,3027192482,3027252419,3027320870,3027340190,3027399876,27624617, 3027470608,3027530949,3027681339,5341283, 3027714058,
1736507431,3027743942,3027829167,1765031952,3027873285,3027927585,3027976198,3027992598,1721630757,3028022471,3028075405,3028158650,3028189210,922370132, 3028219080,
- 3028320296,1930428454,3028350153,4145164, 3028501344,3028566952,464453638, 3028598786,3028615178,3028631573,3028647958,3028664332,2615853094,3028694218,280445873,
+ 3028320296,1930428454,3028350153,4145164, 3028501344,3028566952,464453638, 3028598786,3028615178,3028631573,3028647958,3028664332,2615853094,3028694218,280445873,
179716134, 3028911611,3028959535,3028992006,3029008405,3029024798,414695429, 3029057966,3029107934,3029156855,3029222263,118031183, 3029267659,130285590, 1238695990,
3029382348,3029418022,3029434390,1226801268,3029450809,2342917, 3029467252,3029483535,3029499926,3029516294,3029532708,3029549097,3029565575,3029581843,3029598229,
3029614623,377978921, 3029644493,3029712906,3029729396,1816002562,3029745766,1185776707,3029778461,1154400293,3029794947,8175747, 3029824718,1369325597,2326233110,
- 3029955791,3030021328,3030040602,884765, 53936157, 3030056996,3030073384,13303814, 96436235, 1804238890,1426849908,3030091123,67485725, 3030122507,57262121,
- 3030151677,3030466762,3030512849,3030581680,253542922, 3030615279,1075413020,3030660306,3030712322,3030728730,4947994, 3030752211,3030807763,3030861440,362741786,
+ 3029955791,3030021328,3030040602,884765, 53936157, 3030056996,3030073384,13303814, 96436235, 1804238890,1426849908,3030091123,67485725, 3030122507,57262121,
+ 3030151677,3030466762,3030512849,3030581680,253542922, 3030615279,1075413020,3030660306,3030712322,3030728730,4947994, 3030752211,3030807763,3030861440,362741786,
3030908994,3030941778,3030974510,3031023628,3031040026,3031066109,3031119060,3031171110,3031187951,153042973, 3031220315,3031253051,116883882, 3031285789,3031302156,
3031318638,3031352309,3031430357,3031495894,2752552, 756319341, 3031629890,342305837, 3031663439,3031696292,3031758039,442042854, 3031860531,3031908953,1826816301,
3031941141,340836364, 3031971032,3032044462,3032113166,3032154122,2801683, 3032184025,3032323389,422691291, 3032368315,514572310, 3032416296,2370290611,3032443911,
3032482506,1436434498,3032532465,3032564167,3032626394,3032678407,3032694810,2523151, 3032714497,3032743962,642089001, 3032760413,3032809775,2876456986,3032842711,
3032888539,40976390, 3032986844,3033068765,3033117918,1430683654,3033183455,3033268261,2292483156,3033298144,3033333772,3033350182,401375254, 3033366570,3033383435,
- 3033432102,3033450057,360005642, 3033530377,3033546758,3033563164,2523139, 3033593057,3033661449,3033677961,3033694342,34603123, 3033710598,3033726977,63258629,
+ 3033432102,3033450057,360005642, 3033530377,3033546758,3033563164,2523139, 3033593057,3033661449,3033677961,3033694342,34603123, 3033710598,3033726977,63258629,
3033756898,3033858057,3033874569,3033904355,3033939974,3033956381,3033973044,3034005509,29376524, 3034021893,3034038284,77037570, 3034068196,21151750, 3034170466,
420806665, 1022476294,3034232037,3034281190,3034349577,3034366089,3034382470,187334771, 3034398730,3034415132,255361081, 3034431517,2129921, 3034461415,3034630330,
- 3034661327,1785741549,3034693682,3034727387,3034792173,153190820, 3034824706,1681883162,3034841664,3034887400,3035004946,3035021335,3035037828,3032694787,18956290,
+ 3034661327,1785741549,3034693682,3034727387,3034792173,153190820, 3034824706,1681883162,3034841664,3034887400,3035004946,3035021335,3035037828,3032694787,18956290,
3035054087,3035070483,3035086867,17449017, 3035116777,3035185159,108134407, 3035215082,3035257822,24304606, 3035284217
};
static unsigned char WordEndBits[10532] =
{
- 96, 225,51, 252,41, 19, 188,28, 31, 240,29, 2, 68, 32, 4, 252,161,143,72, 96, 194,223,123,131,33, 228,59, 232,224,16, 195,129,34, 26, 40, 130,194,144,0, 32, 0,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 64, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 2, 0, 0, 16, 0, 1, 64, 0, 0, 8, 0, 0, 4, 80, 8, 0,
- 12, 0, 128,8, 42, 0, 0, 0, 0, 0, 0, 0, 4, 22, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5,
+ 96, 225,51, 252,41, 19, 188,28, 31, 240,29, 2, 68, 32, 4, 252,161,143,72, 96, 194,223,123,131,33, 228,59, 232,224,16, 195,129,34, 26, 40, 130,194,144,0, 32, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 64, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 2, 0, 0, 16, 0, 1, 64, 0, 0, 8, 0, 0, 4, 80, 8, 0,
+ 12, 0, 128,8, 42, 0, 0, 0, 0, 0, 0, 0, 4, 22, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5,
8, 0, 0, 0, 111,103,16, 201,159,14, 16, 64, 0, 0, 144,34, 98, 244,32, 80, 63, 233,67, 1, 0, 0, 0, 128,68, 160,2, 41, 194,255,80, 127,15, 195,125,189,206,
- 206,255,127,252,127,255,255,59, 249,56, 2, 137,207,9, 109,64, 2, 0, 128,22, 27, 0, 144,8, 0, 0, 0, 0, 80, 25, 0, 8, 42, 1, 0, 5, 80, 216,55, 32, 0,
+ 206,255,127,252,127,255,255,59, 249,56, 2, 137,207,9, 109,64, 2, 0, 128,22, 27, 0, 144,8, 0, 0, 0, 0, 80, 25, 0, 8, 42, 1, 0, 5, 80, 216,55, 32, 0,
128,16, 0, 152,176,9, 1, 0, 16, 8, 0, 0, 0, 129,37, 8, 0, 128,0, 0, 0, 0, 2, 0, 0, 128,52, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 32, 0, 0, 130,
- 202,169,8, 1, 2, 16, 16, 0, 0, 24, 2, 1, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 129,128,0, 0, 65, 0, 0, 1, 0, 4, 32, 0, 144,0,
- 0, 0, 8, 128,0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 160,236,32, 154,8, 60, 1, 57, 2, 114,0, 64, 0, 0, 128,0, 0, 20, 0, 1, 0, 0, 0, 0, 0,
- 1, 0, 0, 2, 160,128,64, 0, 0, 0, 0, 0, 0, 2, 0, 0, 10, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, 16, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 64, 0, 0, 184,0, 0, 0, 0, 28, 64, 10, 0, 0, 16, 8, 4, 0, 0, 0, 0, 0, 0, 0, 4, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 58, 8, 0, 64, 1, 0, 0, 0, 0, 0, 232,0, 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 136,0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0,
- 0, 0, 0, 16, 0, 0, 5, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 128,45, 0, 0, 128,1, 0, 0, 0, 0, 129,0, 0, 16, 62, 76, 0, 4,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 202,169,8, 1, 2, 16, 16, 0, 0, 24, 2, 1, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 129,128,0, 0, 65, 0, 0, 1, 0, 4, 32, 0, 144,0,
+ 0, 0, 8, 128,0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 160,236,32, 154,8, 60, 1, 57, 2, 114,0, 64, 0, 0, 128,0, 0, 20, 0, 1, 0, 0, 0, 0, 0,
+ 1, 0, 0, 2, 160,128,64, 0, 0, 0, 0, 0, 0, 2, 0, 0, 10, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, 16, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 64, 0, 0, 184,0, 0, 0, 0, 28, 64, 10, 0, 0, 16, 8, 4, 0, 0, 0, 0, 0, 0, 0, 4, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 58, 8, 0, 64, 1, 0, 0, 0, 0, 0, 232,0, 0, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 136,0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0,
+ 0, 0, 0, 16, 0, 0, 5, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 128,45, 0, 0, 128,1, 0, 0, 0, 0, 129,0, 0, 16, 62, 76, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 0, 0, 0, 0, 8, 0, 1, 180,0, 0, 128,2, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 196,15, 64, 249,128,11, 0, 0, 0, 0, 0, 0, 240,182,
- 55, 0, 70, 17, 0, 32, 129,24, 11, 18, 17, 112,24, 98, 148,224,1, 248,231,82, 2, 64, 76, 134,140,129,243,35, 16, 10, 0, 16, 4, 0, 34, 4, 16, 193,0, 8, 16,
- 1, 32, 8, 82, 0, 17, 20, 5, 16, 16, 7, 80, 144,65, 8, 73, 16, 13, 68, 16, 0, 38, 1, 6, 132,144,240,0, 40, 128,128,0, 80, 17, 14, 128,0, 0, 0, 140,80,
- 0, 4, 129,0, 64, 17, 32, 45, 136,0, 16, 0, 136,2, 32, 16, 9, 144,12, 8, 16, 164,4, 132,8, 36, 0, 0, 32, 16, 22, 79, 46, 20, 51, 217,0, 80, 49, 136,24,
- 0, 68, 98, 9, 244,2, 1, 8, 0, 18, 64, 136,48, 0, 72, 4, 34, 40, 18, 197,88, 20, 32, 0, 200,196,18, 10, 0, 0, 0, 64, 2, 16, 0, 34, 0, 0, 0, 0, 24,
+ 55, 0, 70, 17, 0, 32, 129,24, 11, 18, 17, 112,24, 98, 148,224,1, 248,231,82, 2, 64, 76, 134,140,129,243,35, 16, 10, 0, 16, 4, 0, 34, 4, 16, 193,0, 8, 16,
+ 1, 32, 8, 82, 0, 17, 20, 5, 16, 16, 7, 80, 144,65, 8, 73, 16, 13, 68, 16, 0, 38, 1, 6, 132,144,240,0, 40, 128,128,0, 80, 17, 14, 128,0, 0, 0, 140,80,
+ 0, 4, 129,0, 64, 17, 32, 45, 136,0, 16, 0, 136,2, 32, 16, 9, 144,12, 8, 16, 164,4, 132,8, 36, 0, 0, 32, 16, 22, 79, 46, 20, 51, 217,0, 80, 49, 136,24,
+ 0, 68, 98, 9, 244,2, 1, 8, 0, 18, 64, 136,48, 0, 72, 4, 34, 40, 18, 197,88, 20, 32, 0, 200,196,18, 10, 0, 0, 0, 64, 2, 16, 0, 34, 0, 0, 0, 0, 24,
1, 44, 9, 16, 33, 64, 12, 128,16, 0, 180,10, 144,32, 0, 32, 0, 0, 14, 10, 0, 224,44, 16, 0, 0, 154,1, 10, 112,96, 16, 44, 18, 0, 2, 65, 64, 1, 6, 160,
- 48, 94, 196,131,40, 1, 13, 60, 64, 0, 192,3, 37, 142,16, 96, 8, 36, 12, 80, 64, 64, 0, 64, 32, 128,2, 0, 4, 69, 72, 192,46, 0, 80, 130,96, 0, 0, 0, 3,
+ 48, 94, 196,131,40, 1, 13, 60, 64, 0, 192,3, 37, 142,16, 96, 8, 36, 12, 80, 64, 64, 0, 64, 32, 128,2, 0, 4, 69, 72, 192,46, 0, 80, 130,96, 0, 0, 0, 3,
0, 0, 0, 9, 4, 8, 164,144,18, 128,4, 5, 102,121,199,113,224,16, 49, 64, 76, 9, 194,48, 33, 200,1, 188,165,122,56, 248,8, 29, 130,158,168,0, 98, 132,100,
- 165,4, 2, 4, 128,197,118,4, 68, 62, 0, 80, 36, 81, 38, 136,153,5, 0, 18, 64, 64, 12, 25, 144,120,0, 10, 70, 16, 32, 195,65, 57, 64, 208,0, 226,216,56, 0,
+ 165,4, 2, 4, 128,197,118,4, 68, 62, 0, 80, 36, 81, 38, 136,153,5, 0, 18, 64, 64, 12, 25, 144,120,0, 10, 70, 16, 32, 195,65, 57, 64, 208,0, 226,216,56, 0,
80, 64, 33, 97, 0, 0, 160,24, 34, 24, 176,130,17, 64, 0, 81, 134,0, 0, 2, 240,64, 130,4, 0, 0, 81, 201,179,88, 3, 134,128,84, 48, 3, 8, 6, 2, 12, 196,
27, 118,130,0, 64, 251,180,115,55, 109,24, 16, 236,139,160,1, 0, 0, 1, 192,32, 86, 132,144,0, 32, 12, 0, 0, 0, 152,12, 16, 17, 30, 4, 201,201,1, 144,129,
8, 47, 98, 62, 234,233,155,111,5, 192,132,64, 8, 0, 1, 0, 194,236,23, 119,202,4, 0, 12, 33, 0, 130,16, 128,46, 66, 128,48, 128,70, 37, 241,128,146,64, 194,
14, 2, 56, 81, 12, 32, 4, 0, 48, 48, 64, 48, 4, 4, 1, 64, 137,0, 76, 0, 8, 128,3, 0, 8, 0, 0, 0, 8, 16, 20, 0, 32, 128,0, 0, 0, 192,144,149,207,
- 1, 70, 40, 3, 71, 64, 16, 0, 0, 5, 16, 70, 16, 0, 2, 2, 2, 0, 0, 0, 172,8, 17, 24, 0, 37, 5, 0, 152,129,5, 16, 0, 16, 0, 12, 130,130,208,68, 0,
+ 1, 70, 40, 3, 71, 64, 16, 0, 0, 5, 16, 70, 16, 0, 2, 2, 2, 0, 0, 0, 172,8, 17, 24, 0, 37, 5, 0, 152,129,5, 16, 0, 16, 0, 12, 130,130,208,68, 0,
128,40, 32, 28, 192,138,32, 220,134,204,11, 9, 200,192,64, 2, 0, 36, 8, 2, 130,72, 0, 4, 12, 1, 128,2, 24, 1, 50, 32, 230,72, 76, 160,107,16, 16, 128,230,
- 36, 131,8, 64, 32, 128,35, 128,49, 56, 137,7, 32, 35, 128,66, 3, 70, 51, 246,10, 132,24, 134,1, 204,3, 6, 162,129,64, 64, 126,132,41, 104,232,0, 9, 28, 0,
- 56, 104,167,140,17, 23, 38, 192,28, 64, 65, 32, 136,0, 127,216,223,32, 212,0, 6, 0, 24, 4, 242,67, 20, 32, 2, 231,96, 1, 16, 8, 4, 4, 3, 4, 212,141,56,
- 8, 48, 130,68, 35, 12, 6, 38, 11, 129,2, 80, 34, 0, 0, 0, 0, 128,9, 19, 80, 17, 162,128,2, 240,134,130,172,0, 0, 52, 9, 3, 96, 0, 16, 4, 12, 20, 68,
+ 36, 131,8, 64, 32, 128,35, 128,49, 56, 137,7, 32, 35, 128,66, 3, 70, 51, 246,10, 132,24, 134,1, 204,3, 6, 162,129,64, 64, 126,132,41, 104,232,0, 9, 28, 0,
+ 56, 104,167,140,17, 23, 38, 192,28, 64, 65, 32, 136,0, 127,216,223,32, 212,0, 6, 0, 24, 4, 242,67, 20, 32, 2, 231,96, 1, 16, 8, 4, 4, 3, 4, 212,141,56,
+ 8, 48, 130,68, 35, 12, 6, 38, 11, 129,2, 80, 34, 0, 0, 0, 0, 128,9, 19, 80, 17, 162,128,2, 240,134,130,172,0, 0, 52, 9, 3, 96, 0, 16, 4, 12, 20, 68,
4, 89, 2, 64, 36, 1, 186,32, 48, 248,128,69, 8, 113,0, 3, 0, 64, 141,2, 1, 32, 1, 4, 0, 0, 0, 0, 0, 4, 8, 32, 8, 4, 0, 46, 65, 75, 132,116,131,
179,1, 21, 41, 136,0, 27, 65, 70, 0, 16, 54, 6, 128,5, 24, 4, 0, 0, 66, 48, 81, 0, 193,131,6, 32, 113,130,0, 0, 70, 0, 64, 0, 16, 184,40, 28, 206,160,
- 11, 196,138,128,79, 96, 64, 8, 48, 0, 0, 10, 0, 64, 4, 0, 14, 16, 113,38, 140,0, 0, 52, 210,241,0, 6, 69, 32, 170,33, 218,24, 238,65, 138,113,35, 70, 83,
- 72, 68, 64, 5, 194,29, 72, 145,35, 20, 32, 48, 187,46, 185,6, 42, 48, 209,130,68, 162,2, 200,82, 5, 209,179,77, 106,97, 33, 8, 3, 136,232,94, 48, 19, 99, 70,
+ 11, 196,138,128,79, 96, 64, 8, 48, 0, 0, 10, 0, 64, 4, 0, 14, 16, 113,38, 140,0, 0, 52, 210,241,0, 6, 69, 32, 170,33, 218,24, 238,65, 138,113,35, 70, 83,
+ 72, 68, 64, 5, 194,29, 72, 145,35, 20, 32, 48, 187,46, 185,6, 42, 48, 209,130,68, 162,2, 200,82, 5, 209,179,77, 106,97, 33, 8, 3, 136,232,94, 48, 19, 99, 70,
8, 64, 152,160,234,195,234,143,157,225,31, 128,120,128,57, 195,6, 3, 48, 14, 193,240,92, 10, 124,129,61, 9, 182,79, 160,131,117,49, 36, 142,57, 242,4, 205,141,
- 86, 80, 99, 0, 250,71, 6, 18, 27, 52, 172,56, 92, 88, 1, 128,134,2, 8, 32, 45, 24, 32, 35, 34, 35, 74, 164,42, 45, 0, 9, 0, 0, 9, 26, 89, 9, 62, 168,62,
+ 86, 80, 99, 0, 250,71, 6, 18, 27, 52, 172,56, 92, 88, 1, 128,134,2, 8, 32, 45, 24, 32, 35, 34, 35, 74, 164,42, 45, 0, 9, 0, 0, 9, 26, 89, 9, 62, 168,62,
92, 1, 0, 0, 0, 0, 72, 132,37, 194,113,136,1, 97, 112,8, 16, 136,232,144,176,3, 25, 1, 136,49, 1, 17, 132,50, 4, 8, 178,68, 131,4, 66, 128,32, 0, 108,
1, 63, 8, 4, 28, 64, 6, 25, 81, 32, 28, 12, 2, 20, 162,0, 16, 16, 131,2, 1, 18, 195,7, 130,32, 173,247,69, 1, 92, 128,5, 0, 0, 47, 130,0, 11, 23, 108,
- 190,32, 0, 205,128,144,143,0, 139,126,150,130,35, 103,8, 195,7, 203,164,96, 170,0, 1, 16, 83, 76, 24, 50, 15, 73, 77, 60, 8, 66, 139,86, 0, 20, 30, 65, 0,
- 0, 1, 32, 4, 32, 24, 129,131,0, 1, 0, 0, 66, 3, 57, 11, 5, 0, 34, 92, 38, 2, 65, 130,8, 128,194,16, 6, 4, 32, 152,168,114,60, 48, 78, 0, 128,161,32,
- 0, 228,0, 192,136,81, 136,64, 15, 76, 86, 105,15, 10, 220,195,52, 24, 2, 16, 0, 0, 0, 0, 0, 1, 32, 0, 16, 2, 40, 0, 16, 0, 64, 130,64, 72, 32, 108,0,
+ 190,32, 0, 205,128,144,143,0, 139,126,150,130,35, 103,8, 195,7, 203,164,96, 170,0, 1, 16, 83, 76, 24, 50, 15, 73, 77, 60, 8, 66, 139,86, 0, 20, 30, 65, 0,
+ 0, 1, 32, 4, 32, 24, 129,131,0, 1, 0, 0, 66, 3, 57, 11, 5, 0, 34, 92, 38, 2, 65, 130,8, 128,194,16, 6, 4, 32, 152,168,114,60, 48, 78, 0, 128,161,32,
+ 0, 228,0, 192,136,81, 136,64, 15, 76, 86, 105,15, 10, 220,195,52, 24, 2, 16, 0, 0, 0, 0, 0, 1, 32, 0, 16, 2, 40, 0, 16, 0, 64, 130,64, 72, 32, 108,0,
82, 0, 0, 99, 14, 128,132,241,0, 16, 32, 39, 59, 125,17, 8, 2, 0, 72, 24, 16, 255,18, 224,129,2, 16, 64, 129,2, 240,2, 49, 112,248,247,32, 160,173,144,130,
- 64, 5, 184,208,166,8, 5, 1, 19, 38, 72, 209,92, 48, 131,71, 144,4, 46, 65, 0, 208,1, 218,186,0, 12, 52, 128,4, 32, 160,8, 58, 0, 46, 2, 64, 0, 1, 60,
- 57, 206,187,228,32, 36, 17, 141,0, 192,40, 64, 152,4, 34, 80, 142,148,31, 108,238,104,128,68, 94, 65, 61, 4, 104,244,240,244,242,39, 1, 152,249,34, 3, 96, 0,
+ 64, 5, 184,208,166,8, 5, 1, 19, 38, 72, 209,92, 48, 131,71, 144,4, 46, 65, 0, 208,1, 218,186,0, 12, 52, 128,4, 32, 160,8, 58, 0, 46, 2, 64, 0, 1, 60,
+ 57, 206,187,228,32, 36, 17, 141,0, 192,40, 64, 152,4, 34, 80, 142,148,31, 108,238,104,128,68, 94, 65, 61, 4, 104,244,240,244,242,39, 1, 152,249,34, 3, 96, 0,
97, 64, 45, 200,144,103,68, 8, 115,123,5, 3, 104,158,87, 16, 64, 32, 215,175,89, 204,1, 153,196,18, 21, 254,112,7, 41, 10, 28, 4, 14, 158,106,3, 159,24, 110,
- 80, 13, 64, 194,233,64, 84, 1, 8, 5, 16, 128,2, 48, 32, 0, 4, 16, 129,8, 10, 32, 128,144,10, 46, 212,148,130,0, 48, 19, 56, 172,13, 0, 64, 32, 76, 132,10,
+ 80, 13, 64, 194,233,64, 84, 1, 8, 5, 16, 128,2, 48, 32, 0, 4, 16, 129,8, 10, 32, 128,144,10, 46, 212,148,130,0, 48, 19, 56, 172,13, 0, 64, 32, 76, 132,10,
161,8, 191,69, 41, 136,9, 130,57, 124,167,29, 43, 74, 27, 130,68, 22, 2, 128,113,37, 21, 134,2, 0, 146,8, 134,8, 78, 89, 16, 136,0, 22, 179,0, 133,1, 128,
165,136,137,10, 240,84, 85, 144,140,59, 97, 2, 36, 87, 225,168,83, 121,198,189,122,8, 0, 4, 180,130,35, 160,128,0, 35, 66, 96, 12, 115,16, 176,186,224,8, 138,
- 47, 51, 128,143,34, 206,10, 40, 250,47, 99, 130,42, 128,15, 0, 0, 0, 222,16, 4, 2, 122,144,152,7, 68, 72, 136,124,121,102,16, 16, 144,14, 2, 94, 63, 28, 66,
- 49, 6, 5, 16, 192,2, 8, 141,29, 68, 20, 26, 137,20, 208,30, 0, 10, 166,155,203,200,224,132,64, 239,162,121,17, 8, 202,137,91, 242,212,238,29, 165,12, 28, 50,
- 80, 135,128,112,6, 151,131,77, 69, 11, 185,197,66, 64, 12, 4, 26, 0, 128,0, 2, 4, 0, 48, 12, 136,0, 0, 0, 0, 1, 0, 0, 144,63, 80, 2, 149,34, 4, 16,
- 7, 8, 140,0, 72, 0, 8, 130,133,196,0, 4, 32, 204,68, 71, 80, 64, 0, 8, 0, 150,132,132,28, 104,208,249,1, 130,168,4, 8, 0, 128,0, 193,65, 24, 170,67,
+ 47, 51, 128,143,34, 206,10, 40, 250,47, 99, 130,42, 128,15, 0, 0, 0, 222,16, 4, 2, 122,144,152,7, 68, 72, 136,124,121,102,16, 16, 144,14, 2, 94, 63, 28, 66,
+ 49, 6, 5, 16, 192,2, 8, 141,29, 68, 20, 26, 137,20, 208,30, 0, 10, 166,155,203,200,224,132,64, 239,162,121,17, 8, 202,137,91, 242,212,238,29, 165,12, 28, 50,
+ 80, 135,128,112,6, 151,131,77, 69, 11, 185,197,66, 64, 12, 4, 26, 0, 128,0, 2, 4, 0, 48, 12, 136,0, 0, 0, 0, 1, 0, 0, 144,63, 80, 2, 149,34, 4, 16,
+ 7, 8, 140,0, 72, 0, 8, 130,133,196,0, 4, 32, 204,68, 71, 80, 64, 0, 8, 0, 150,132,132,28, 104,208,249,1, 130,168,4, 8, 0, 128,0, 193,65, 24, 170,67,
240,129,139,23, 0, 10, 97, 28, 27, 37, 209,249,0, 12, 13, 30, 217,233,48, 67, 68, 176,28, 52, 132,65, 111,17, 50, 8, 210,163,0, 204,42, 142,140,68, 5, 12, 104,
2, 2, 148,166,192,150,100,3, 128,64, 67, 114,3, 0, 120,144,224,160,72, 184,255,208,236,48, 9, 152,223,0, 74, 6, 172,75, 241,241,224,6, 206,3, 192,8, 128,
140,226,24, 1, 9, 24, 32, 152,248,17, 98, 107,6, 63, 10, 94, 96, 69, 0, 26, 128,41, 16, 0, 128,68, 0, 192,4, 21, 70, 16, 192,66, 4, 26, 8, 16, 29, 80, 128,
50, 168,73, 128,74, 64, 32, 2, 64, 4, 0, 1, 0, 4, 0, 33, 180,121,0, 0, 160,68, 113,3, 110,0, 128,34, 80, 200,4, 16, 3, 0, 32, 129,65, 0, 32, 220,212,
- 4, 64, 192,112,4, 0, 0, 0, 0, 0, 0, 0, 0, 96, 19, 24, 84, 60, 132,131,0, 3, 0, 55, 144,9, 0, 102,63, 171,0, 128,23, 68, 5, 54, 16, 204,194,12, 0,
- 5, 72, 127,230,174,8, 20, 162,77, 20, 66, 3, 71, 144,0, 9, 109,5, 44, 54, 14, 13, 168,108,32, 6, 72, 9, 48, 30, 21, 19, 186,24, 144,76, 88, 192,67, 2, 0,
+ 4, 64, 192,112,4, 0, 0, 0, 0, 0, 0, 0, 0, 96, 19, 24, 84, 60, 132,131,0, 3, 0, 55, 144,9, 0, 102,63, 171,0, 128,23, 68, 5, 54, 16, 204,194,12, 0,
+ 5, 72, 127,230,174,8, 20, 162,77, 20, 66, 3, 71, 144,0, 9, 109,5, 44, 54, 14, 13, 168,108,32, 6, 72, 9, 48, 30, 21, 19, 186,24, 144,76, 88, 192,67, 2, 0,
32, 50, 131,247,7, 134,0, 25, 196,72, 124,113,100,0, 30, 199,133,205,64, 4, 1, 46, 128,14, 2, 2, 0, 160,149,32, 194,49, 8, 199,222,28, 4, 16, 66, 9, 242,
- 126,3, 251,228,88, 60, 4, 0, 0, 3, 0, 32, 63, 220,32, 138,88, 12, 4, 32, 128,25, 1, 0, 192,97, 0, 28, 2, 8, 16, 5, 84, 180,51, 128,64, 45, 65, 0, 47,
- 1, 0, 0, 70, 69, 192,64, 161,42, 128,37, 0, 0, 0, 0, 0, 80, 32, 36, 163,12, 36, 102,225,32, 63, 0, 238,128,25, 0, 108,36, 144,198,64, 136,166,64, 194,32,
+ 126,3, 251,228,88, 60, 4, 0, 0, 3, 0, 32, 63, 220,32, 138,88, 12, 4, 32, 128,25, 1, 0, 192,97, 0, 28, 2, 8, 16, 5, 84, 180,51, 128,64, 45, 65, 0, 47,
+ 1, 0, 0, 70, 69, 192,64, 161,42, 128,37, 0, 0, 0, 0, 0, 80, 32, 36, 163,12, 36, 102,225,32, 63, 0, 238,128,25, 0, 108,36, 144,198,64, 136,166,64, 194,32,
135,12, 104,4, 34, 22, 0, 100,242,106,43, 97, 23, 36, 0, 0, 0, 0, 0, 0, 0, 65, 25, 66, 88, 45, 200,13, 147,64, 160,8, 6, 64, 4, 112,0, 46, 0, 15, 128,
- 0, 4, 110,16, 2, 72, 32, 16, 35, 10, 46, 0, 16, 6, 0, 162,32, 97, 192,12, 64, 184,34, 192,233,7, 154,241,143,12, 228,2, 40, 68, 46, 193,22, 67, 8, 74, 9,
- 68, 28, 118,64, 144,8, 200,36, 64, 134,120,96, 96, 34, 16, 0, 33, 1, 138,0, 3, 0, 0, 67, 9, 1, 67, 128,36, 140,14, 0, 32, 32, 24, 128,157,12, 168,1, 12,
- 17, 78, 16, 64, 0, 2, 1, 16, 0, 104,0, 0, 128,4, 16, 184,95, 16, 32, 34, 10, 0, 8, 32, 24, 8, 81, 20, 12, 128,216,0, 40, 164,161,157,16, 2, 88, 15, 9,
- 136,32, 4, 0, 131,192,129,0, 128,5, 37, 1, 48, 254,7, 0, 114,40, 200,152,16, 4, 174,64, 20, 160,224,248,42, 185,53, 59, 97, 92, 0, 8, 193,7, 173,91, 24,
- 66, 65, 183,129,129,184,194,67, 144,0, 128,105,108,19, 11, 4, 209,250,65, 192,81, 97, 13, 27, 0, 0, 64, 0, 0, 0, 0, 4, 248,77, 192,1, 104,5, 16, 208,56,
- 167,73, 71, 32, 104,1, 64, 2, 138,12, 140,42, 3, 12, 83, 6, 136,99, 8, 65, 18, 22, 252,18, 33, 128,0, 25, 33, 192,56, 240,18, 197,40, 254,2, 6, 0, 232,36,
+ 0, 4, 110,16, 2, 72, 32, 16, 35, 10, 46, 0, 16, 6, 0, 162,32, 97, 192,12, 64, 184,34, 192,233,7, 154,241,143,12, 228,2, 40, 68, 46, 193,22, 67, 8, 74, 9,
+ 68, 28, 118,64, 144,8, 200,36, 64, 134,120,96, 96, 34, 16, 0, 33, 1, 138,0, 3, 0, 0, 67, 9, 1, 67, 128,36, 140,14, 0, 32, 32, 24, 128,157,12, 168,1, 12,
+ 17, 78, 16, 64, 0, 2, 1, 16, 0, 104,0, 0, 128,4, 16, 184,95, 16, 32, 34, 10, 0, 8, 32, 24, 8, 81, 20, 12, 128,216,0, 40, 164,161,157,16, 2, 88, 15, 9,
+ 136,32, 4, 0, 131,192,129,0, 128,5, 37, 1, 48, 254,7, 0, 114,40, 200,152,16, 4, 174,64, 20, 160,224,248,42, 185,53, 59, 97, 92, 0, 8, 193,7, 173,91, 24,
+ 66, 65, 183,129,129,184,194,67, 144,0, 128,105,108,19, 11, 4, 209,250,65, 192,81, 97, 13, 27, 0, 0, 64, 0, 0, 0, 0, 4, 248,77, 192,1, 104,5, 16, 208,56,
+ 167,73, 71, 32, 104,1, 64, 2, 138,12, 140,42, 3, 12, 83, 6, 136,99, 8, 65, 18, 22, 252,18, 33, 128,0, 25, 33, 192,56, 240,18, 197,40, 254,2, 6, 0, 232,36,
35, 81, 177,147,32, 8, 160,82, 49, 18, 240,129,151,228,36, 33, 45, 128,32, 0, 6, 130,0, 0, 0, 96, 0, 0, 67, 55, 16, 0, 140,161,1, 16, 64, 72, 161,9, 152,
- 10, 169,64, 48, 0, 108,145,160,80, 155,15, 98, 33, 145,232,224,16, 65, 24, 24, 1, 6, 0, 0, 4, 24, 4, 4, 4, 128,2, 0, 72, 0, 0, 2, 192,72, 128,0, 0,
- 32, 18, 16, 0, 16, 0, 65, 0, 0, 0, 4, 4, 8, 0, 0, 128,0, 2, 0, 0, 0, 128,73, 176,32, 115,192,4, 163,68, 210,40, 34, 12, 135,102,236,0, 122,70, 2,
+ 10, 169,64, 48, 0, 108,145,160,80, 155,15, 98, 33, 145,232,224,16, 65, 24, 24, 1, 6, 0, 0, 4, 24, 4, 4, 4, 128,2, 0, 72, 0, 0, 2, 192,72, 128,0, 0,
+ 32, 18, 16, 0, 16, 0, 65, 0, 0, 0, 4, 4, 8, 0, 0, 128,0, 2, 0, 0, 0, 128,73, 176,32, 115,192,4, 163,68, 210,40, 34, 12, 135,102,236,0, 122,70, 2,
25, 139,6, 186,118,64, 197,128,104,255,195,122,12, 246,29, 161,5, 112,18, 193,169,17, 2, 32, 114,161,162,32, 160,247,8, 48, 6, 101,36, 12, 130,54, 44, 0, 231,
- 127,67, 83, 249,64, 6, 0, 0, 128,0, 0, 0, 0, 64, 144,0, 128,60, 153,129,141,16, 136,136,0, 4, 152,102,53, 45, 0, 0, 196,2, 1, 137,0, 128,0, 0, 16,
- 128,24, 0, 128,24, 50, 64, 69, 7, 32, 201,128,200,42, 64, 0, 32, 24, 141,4, 65, 40, 0, 128,144,139,128,17, 32, 0, 97, 2, 202,8, 2, 0, 0, 58, 128,0, 64,
- 64, 9, 134,18, 0, 20, 68, 68, 128,18, 0, 0, 76, 1, 217,1, 113,128,24, 64, 1, 120,7, 162,164,228,5, 130,65, 1, 34, 72, 130,81, 10, 8, 192,130,192,204,31,
- 0, 43, 129,2, 12, 9, 16, 5, 0, 48, 16, 58, 0, 16, 34, 86, 64, 64, 26, 132,64, 49, 0, 100,4, 96, 30, 0, 10, 1, 16, 64, 128,65, 35, 128,0, 160,0, 4, 2,
+ 127,67, 83, 249,64, 6, 0, 0, 128,0, 0, 0, 0, 64, 144,0, 128,60, 153,129,141,16, 136,136,0, 4, 152,102,53, 45, 0, 0, 196,2, 1, 137,0, 128,0, 0, 16,
+ 128,24, 0, 128,24, 50, 64, 69, 7, 32, 201,128,200,42, 64, 0, 32, 24, 141,4, 65, 40, 0, 128,144,139,128,17, 32, 0, 97, 2, 202,8, 2, 0, 0, 58, 128,0, 64,
+ 64, 9, 134,18, 0, 20, 68, 68, 128,18, 0, 0, 76, 1, 217,1, 113,128,24, 64, 1, 120,7, 162,164,228,5, 130,65, 1, 34, 72, 130,81, 10, 8, 192,130,192,204,31,
+ 0, 43, 129,2, 12, 9, 16, 5, 0, 48, 16, 58, 0, 16, 34, 86, 64, 64, 26, 132,64, 49, 0, 100,4, 96, 30, 0, 10, 1, 16, 64, 128,65, 35, 128,0, 160,0, 4, 2,
64, 2, 32, 19, 164,72, 0, 2, 0, 32, 133,32, 162,2, 248,27, 80, 224,9, 144,168,61, 11, 16, 228,108,2, 0, 0, 0, 0, 192,37, 0, 192,12, 2, 0, 164,32, 128,
- 159,0, 4, 8, 32, 0, 128,0, 3, 224,3, 1, 72, 14, 14, 200,33, 64, 90, 244,202,16, 160,1, 0, 70, 43, 0, 192,1, 64, 168,0, 106,102,12, 98, 64, 66, 28, 64,
- 32, 0, 44, 150,11, 154,128,8, 0, 88, 82, 32, 0, 128,7, 1, 41, 10, 96, 73, 0, 64, 0, 128,8, 0, 64, 25, 0, 132,0, 4, 8, 32, 48, 64, 0, 0, 0, 0, 8,
- 3, 144,0, 64, 0, 0, 3, 0, 100,64, 0, 129,2, 32, 0, 0, 0, 0, 200,0, 0, 32, 64, 5, 0, 18, 130,0, 34, 175,221,122,50, 80, 161,0, 0, 0, 0, 0, 0,
+ 159,0, 4, 8, 32, 0, 128,0, 3, 224,3, 1, 72, 14, 14, 200,33, 64, 90, 244,202,16, 160,1, 0, 70, 43, 0, 192,1, 64, 168,0, 106,102,12, 98, 64, 66, 28, 64,
+ 32, 0, 44, 150,11, 154,128,8, 0, 88, 82, 32, 0, 128,7, 1, 41, 10, 96, 73, 0, 64, 0, 128,8, 0, 64, 25, 0, 132,0, 4, 8, 32, 48, 64, 0, 0, 0, 0, 8,
+ 3, 144,0, 64, 0, 0, 3, 0, 100,64, 0, 129,2, 32, 0, 0, 0, 0, 200,0, 0, 32, 64, 5, 0, 18, 130,0, 34, 175,221,122,50, 80, 161,0, 0, 0, 0, 0, 0,
1, 0, 0, 32, 2, 16, 28, 163,73, 81, 67, 108,96, 19, 164,64, 100,16, 160,25, 167,0, 133,0, 31, 1, 31, 4, 145,25, 217,109,144,230,15, 170,72, 98, 224,102,160,
- 28, 61, 89, 44, 216,170,125,41, 25, 85, 82, 244,148,45, 42, 31, 18, 32, 212,96, 0, 64, 0, 0, 72, 124,221,127,49, 148,129,2, 99, 76, 97, 80, 2, 64, 88, 192,68,
- 18, 26, 0, 32, 183,16, 53, 36, 137,129,76, 33, 0, 0, 0, 0, 0, 113,88, 84, 47, 64, 8, 209,45, 194,21, 34, 197,73, 65, 32, 48, 23, 48, 64, 177,67, 6, 134,66,
- 87, 144,66, 10, 4, 143,0, 65, 13, 178,65, 38, 132,160,140,143,2, 29, 160,64, 12, 32, 32, 129,72, 8, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 16, 24, 132,19, 36,
- 87, 18, 36, 40, 72, 144,136,40, 141,34, 32, 144,2, 0, 0, 1, 82, 132,0, 176,32, 4, 0, 0, 0, 0, 8, 162,224,36, 0, 144,5, 130,76, 128,48, 96, 194,4, 0,
- 64, 0, 0, 34, 0, 224,11, 2, 24, 129,0, 64, 0, 8, 0, 112,32, 6, 1, 33, 64, 17, 0, 0, 4, 24, 64, 0, 0, 4, 8, 0, 0, 4, 128,135,4, 33, 144,0, 80,
- 43, 0, 0, 0, 32, 2, 1, 0, 144,126,128,1, 0, 6, 0, 112,132,60, 137,51, 196,37, 162,47, 6, 80, 193,161,48, 64, 12, 32, 0, 143,4, 57, 143,0, 18, 12, 2,
- 0, 192,244,84, 220,31, 146,47, 136,0, 16, 8, 32, 0, 36, 1, 0, 16, 64, 0, 0, 2, 0, 22, 70, 0, 0, 16, 129,128,0, 5, 68, 224,186,75, 0, 24, 26, 16, 32,
+ 28, 61, 89, 44, 216,170,125,41, 25, 85, 82, 244,148,45, 42, 31, 18, 32, 212,96, 0, 64, 0, 0, 72, 124,221,127,49, 148,129,2, 99, 76, 97, 80, 2, 64, 88, 192,68,
+ 18, 26, 0, 32, 183,16, 53, 36, 137,129,76, 33, 0, 0, 0, 0, 0, 113,88, 84, 47, 64, 8, 209,45, 194,21, 34, 197,73, 65, 32, 48, 23, 48, 64, 177,67, 6, 134,66,
+ 87, 144,66, 10, 4, 143,0, 65, 13, 178,65, 38, 132,160,140,143,2, 29, 160,64, 12, 32, 32, 129,72, 8, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 16, 24, 132,19, 36,
+ 87, 18, 36, 40, 72, 144,136,40, 141,34, 32, 144,2, 0, 0, 1, 82, 132,0, 176,32, 4, 0, 0, 0, 0, 8, 162,224,36, 0, 144,5, 130,76, 128,48, 96, 194,4, 0,
+ 64, 0, 0, 34, 0, 224,11, 2, 24, 129,0, 64, 0, 8, 0, 112,32, 6, 1, 33, 64, 17, 0, 0, 4, 24, 64, 0, 0, 4, 8, 0, 0, 4, 128,135,4, 33, 144,0, 80,
+ 43, 0, 0, 0, 32, 2, 1, 0, 144,126,128,1, 0, 6, 0, 112,132,60, 137,51, 196,37, 162,47, 6, 80, 193,161,48, 64, 12, 32, 0, 143,4, 57, 143,0, 18, 12, 2,
+ 0, 192,244,84, 220,31, 146,47, 136,0, 16, 8, 32, 0, 36, 1, 0, 16, 64, 0, 0, 2, 0, 22, 70, 0, 0, 16, 129,128,0, 5, 68, 224,186,75, 0, 24, 26, 16, 32,
49, 6, 0, 217,1, 0, 80, 50, 0, 8, 112,0, 0, 32, 64, 1, 0, 0, 16, 0, 0, 96, 0, 0, 1, 0, 0, 0, 128,16, 16, 33, 0, 4, 162,28, 64, 34, 16, 144,188,
- 67, 196,24, 34, 151,72, 0, 193,64, 0, 1, 0, 2, 0, 144,172,64, 128,0, 88, 16, 12, 1, 64, 18, 8, 1, 12, 184,8, 56, 8, 147,129,34, 64, 0, 96, 1, 192,6,
- 80, 0, 0, 129,96, 4, 0, 128,192,64, 0, 1, 0, 120,11, 0, 140,32, 0, 0, 192,16, 182,0, 144,93, 66, 0, 122,138,65, 22, 196,8, 134,64, 72, 0, 128,77, 34,
- 132,128,0, 0, 20, 0, 64, 8, 72, 50, 16, 0, 64, 68, 152,0, 10, 32, 25, 25, 36, 0, 0, 1, 1, 34, 0, 0, 64, 0, 128,0, 8, 0, 17, 8, 0, 32, 0, 0, 0,
- 1, 0, 134,189,120,81, 28, 0, 147,67, 39, 52, 2, 2, 16, 94, 32, 0, 34, 76, 5, 209,23, 14, 137,58, 32, 133,128,231,1, 39, 27, 178,70, 237,0, 61, 136,96, 88,
- 99, 193,64, 86, 228,224,49, 0, 0, 36, 142,161,84, 180,8, 19, 145,0, 2, 0, 0, 0, 42, 19, 48, 48, 125,66, 68, 11, 128,37, 185,70, 26, 0, 197,154,165,74, 18,
- 115,128,20, 136,36, 72, 178,21, 10, 128,182,75, 153,175,223,0, 64, 0, 40, 2, 195,35, 34, 214,0, 4, 0, 0, 0, 0, 0, 144,82, 32, 0, 75, 40, 153,0, 170,84,
+ 67, 196,24, 34, 151,72, 0, 193,64, 0, 1, 0, 2, 0, 144,172,64, 128,0, 88, 16, 12, 1, 64, 18, 8, 1, 12, 184,8, 56, 8, 147,129,34, 64, 0, 96, 1, 192,6,
+ 80, 0, 0, 129,96, 4, 0, 128,192,64, 0, 1, 0, 120,11, 0, 140,32, 0, 0, 192,16, 182,0, 144,93, 66, 0, 122,138,65, 22, 196,8, 134,64, 72, 0, 128,77, 34,
+ 132,128,0, 0, 20, 0, 64, 8, 72, 50, 16, 0, 64, 68, 152,0, 10, 32, 25, 25, 36, 0, 0, 1, 1, 34, 0, 0, 64, 0, 128,0, 8, 0, 17, 8, 0, 32, 0, 0, 0,
+ 1, 0, 134,189,120,81, 28, 0, 147,67, 39, 52, 2, 2, 16, 94, 32, 0, 34, 76, 5, 209,23, 14, 137,58, 32, 133,128,231,1, 39, 27, 178,70, 237,0, 61, 136,96, 88,
+ 99, 193,64, 86, 228,224,49, 0, 0, 36, 142,161,84, 180,8, 19, 145,0, 2, 0, 0, 0, 42, 19, 48, 48, 125,66, 68, 11, 128,37, 185,70, 26, 0, 197,154,165,74, 18,
+ 115,128,20, 136,36, 72, 178,21, 10, 128,182,75, 153,175,223,0, 64, 0, 40, 2, 195,35, 34, 214,0, 4, 0, 0, 0, 0, 0, 144,82, 32, 0, 75, 40, 153,0, 170,84,
8, 28, 19, 1, 40, 16, 80, 193,253,61, 37, 156,36, 6, 26, 129,204,28, 226,35, 0, 154,4, 224,0, 34, 32, 0, 6, 3, 128,89, 97, 8, 0, 179,64, 9, 1, 0, 128,
48, 2, 4, 0, 0, 0, 160,69, 43, 204,32, 164,18, 36, 133,210,32, 20, 5, 0, 5, 82, 16, 131,72, 221,94, 107,75, 160,127,159,27, 242,82, 163,81, 0, 4, 4, 135,
0, 32, 197,17, 166,234,136,33, 128,128,140,0, 20, 45, 140,112,6, 32, 4, 144,13, 6, 129,128,40, 172,1, 25, 113,228,18, 0, 37, 138,197,65, 228,20, 240,7, 129,
- 203,0, 18, 37, 73, 0, 105,0, 144,0, 0, 100,160,24, 252,251,251,0, 28, 64, 47, 226,58, 133,17, 20, 128,88, 238,87, 44, 160,37, 25, 23, 0, 98, 18, 1, 37, 33,
- 4, 203,49, 0, 194,195,147,179,15, 41, 64, 88, 20, 2, 8, 12, 192,84, 73, 134,102,67, 146,17, 0, 48, 228,97, 227,216,145,128,16, 32, 180,2, 33, 0, 32, 224,59,
+ 203,0, 18, 37, 73, 0, 105,0, 144,0, 0, 100,160,24, 252,251,251,0, 28, 64, 47, 226,58, 133,17, 20, 128,88, 238,87, 44, 160,37, 25, 23, 0, 98, 18, 1, 37, 33,
+ 4, 203,49, 0, 194,195,147,179,15, 41, 64, 88, 20, 2, 8, 12, 192,84, 73, 134,102,67, 146,17, 0, 48, 228,97, 227,216,145,128,16, 32, 180,2, 33, 0, 32, 224,59,
16, 64, 1, 84, 160,64, 96, 100,37, 0, 17, 131,82, 83, 0, 156,24, 16, 1, 0, 0, 0, 0, 2, 8, 9, 0, 0, 139,14, 241,214,12, 176,124,98, 40, 114,74, 146,150,
184,48, 132,76, 65, 31, 136,183,240,178,4, 17, 147,0, 86, 140,7, 228,197,51, 173,139,18, 100,114,137,162,112,0, 141,126,122,45, 194,33, 232,151,22, 0, 160,232,
- 130,247,50, 1, 139,14, 35, 132,145,43, 6, 0, 0, 0, 8, 8, 0, 40, 8, 96, 182,14, 1, 89, 210,48, 7, 186,97, 200,42, 0, 148,224,64, 0, 178,76, 22, 2, 87,
- 192,32, 0, 2, 128,108,7, 64, 79, 74, 208,248,24, 16, 113,164,5, 0, 8, 153,98, 0, 70, 197,21, 4, 8, 0, 0, 2, 0, 7, 0, 0, 0, 112,18, 176,0, 0, 1,
- 130,0, 32, 6, 0, 32, 1, 1, 0, 0, 0, 104,0, 128,0, 4, 48, 128,68, 16, 67, 8, 9, 48, 96, 70, 77, 96, 173,1, 136,0, 113,159,36, 32, 12, 7, 39, 20, 0,
- 66, 100,68, 154,33, 137,144,134,0, 146,34, 161,0, 0, 0, 0, 0, 0, 0, 128,8, 49, 170,38, 4, 64, 16, 65, 161,72, 20, 4, 64, 9, 16, 12, 138,193,97, 0, 16,
+ 130,247,50, 1, 139,14, 35, 132,145,43, 6, 0, 0, 0, 8, 8, 0, 40, 8, 96, 182,14, 1, 89, 210,48, 7, 186,97, 200,42, 0, 148,224,64, 0, 178,76, 22, 2, 87,
+ 192,32, 0, 2, 128,108,7, 64, 79, 74, 208,248,24, 16, 113,164,5, 0, 8, 153,98, 0, 70, 197,21, 4, 8, 0, 0, 2, 0, 7, 0, 0, 0, 112,18, 176,0, 0, 1,
+ 130,0, 32, 6, 0, 32, 1, 1, 0, 0, 0, 104,0, 128,0, 4, 48, 128,68, 16, 67, 8, 9, 48, 96, 70, 77, 96, 173,1, 136,0, 113,159,36, 32, 12, 7, 39, 20, 0,
+ 66, 100,68, 154,33, 137,144,134,0, 146,34, 161,0, 0, 0, 0, 0, 0, 0, 128,8, 49, 170,38, 4, 64, 16, 65, 161,72, 20, 4, 64, 9, 16, 12, 138,193,97, 0, 16,
72, 1, 80, 0, 4, 34, 2, 128,32, 0, 16, 20, 4, 75, 2, 32, 128,113,196,7, 8, 32, 8, 0, 104,68, 81, 32, 4, 0, 129,13, 11, 8, 2, 128,208,45, 198,129,165,
129,3, 132,9, 0, 102,23, 44, 66, 0, 0, 193,22, 53, 24, 118,160,102,60, 66, 123,142,163,135,229,35, 137,128,22, 216,168,1, 167,17, 36, 32, 149,57, 55, 228,168,
19, 211,1, 55, 72, 84, 84, 32, 18, 12, 178,76, 198,144,115,133,177,128,101,30, 0, 3, 16, 17, 128,61, 7, 1, 151,24, 8, 216,73, 19, 36, 188,208,231,214,140,216,
- 50, 78, 133,99, 148,192,3, 229,164,80, 120,53, 56, 162,161,47, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 64, 34, 1, 46, 8, 130,64, 8, 0, 72, 1, 153,14, 32, 0,
- 131,7, 26, 129,172,68, 22, 13, 2, 0, 66, 128,2, 131,235,85, 112,19, 33, 130,128,148,208,249,19, 2, 145,6, 146,40, 128,35, 32, 16, 0, 128,0, 66, 4, 16, 3,
- 0, 0, 0, 0, 0, 159,3, 2, 32, 69, 33, 146,107,155,136,32, 5, 0, 1, 199,243,118,8, 64, 255,251,165,161,56, 183,146,2, 208,52, 64, 224,74, 35, 128,73, 56,
- 17, 235,65, 152,213,198,204,138,28, 7, 16, 8, 80, 10, 34, 48, 232,150,58, 118,135,80, 5, 161,1, 128,59, 144,29, 42, 32, 104,162,0, 3, 18, 16, 142,7, 38, 75,
- 215,28, 13, 131,120,94, 153,134,106,128,96, 53, 56, 34, 178,193,200,236,173,25, 138,216,3, 1, 247,21, 0, 131,212,145,192,159,10, 12, 48, 113,3, 25, 2, 0, 0,
+ 50, 78, 133,99, 148,192,3, 229,164,80, 120,53, 56, 162,161,47, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 64, 34, 1, 46, 8, 130,64, 8, 0, 72, 1, 153,14, 32, 0,
+ 131,7, 26, 129,172,68, 22, 13, 2, 0, 66, 128,2, 131,235,85, 112,19, 33, 130,128,148,208,249,19, 2, 145,6, 146,40, 128,35, 32, 16, 0, 128,0, 66, 4, 16, 3,
+ 0, 0, 0, 0, 0, 159,3, 2, 32, 69, 33, 146,107,155,136,32, 5, 0, 1, 199,243,118,8, 64, 255,251,165,161,56, 183,146,2, 208,52, 64, 224,74, 35, 128,73, 56,
+ 17, 235,65, 152,213,198,204,138,28, 7, 16, 8, 80, 10, 34, 48, 232,150,58, 118,135,80, 5, 161,1, 128,59, 144,29, 42, 32, 104,162,0, 3, 18, 16, 142,7, 38, 75,
+ 215,28, 13, 131,120,94, 153,134,106,128,96, 53, 56, 34, 178,193,200,236,173,25, 138,216,3, 1, 247,21, 0, 131,212,145,192,159,10, 12, 48, 113,3, 25, 2, 0, 0,
4, 193,4, 0, 1, 80, 63, 5, 204,49, 19, 34, 32, 85, 128,12, 64, 232,2, 139,204,23, 146,50, 140,32, 40, 20, 134,135,15, 128,0, 191,226,64, 133,5, 71, 66, 160,
16, 131,161,224,64, 5, 40, 9, 96, 168,4, 106,88, 7, 199,182,114,132,1, 14, 4, 203,128,48, 0, 2, 130,124,0, 180,114,66, 174,41, 7, 144,32, 5, 36, 0, 232,
- 4, 194,3, 64, 64, 4, 0, 16, 32, 0, 181,52, 2, 0, 0, 0, 0, 72, 1, 0, 86, 136,0, 0, 2, 17, 0, 26, 4, 160,132,100,19, 64, 192,3, 65, 131,164,26, 16,
- 67, 20, 15, 240,78, 128,220,198,8, 64, 179,136,134,2, 19, 0, 192,128,132,196,27, 5, 0, 32, 64, 96, 216,140,8, 91, 128,193,105,17, 20, 244,144,9, 0, 0, 87,
+ 4, 194,3, 64, 64, 4, 0, 16, 32, 0, 181,52, 2, 0, 0, 0, 0, 72, 1, 0, 86, 136,0, 0, 2, 17, 0, 26, 4, 160,132,100,19, 64, 192,3, 65, 131,164,26, 16,
+ 67, 20, 15, 240,78, 128,220,198,8, 64, 179,136,134,2, 19, 0, 192,128,132,196,27, 5, 0, 32, 64, 96, 216,140,8, 91, 128,193,105,17, 20, 244,144,9, 0, 0, 87,
9, 6, 240,8, 129,0, 135,88, 13, 63, 177,107,209,40, 32, 96, 6, 12, 161,96, 2, 64, 1, 224,0, 1, 196,1, 8, 32, 137,238,30, 160,4, 131,37, 52, 145,38, 232,
- 174,44, 111,93, 132,24, 224,154,192,100,1, 0, 157,18, 200,7, 17, 128,18, 32, 40, 36, 1, 21, 1, 0, 18, 112,18, 112,109,114,0, 0, 0, 0, 0, 0, 0, 52, 8,
- 23, 90, 44, 21, 34, 4, 4, 74, 5, 112,142,120,32, 6, 127,64, 2, 194,137,21, 13, 34, 206,209,38, 61, 69, 80, 0, 19, 77, 84, 93, 0, 192,1, 32, 35, 4, 0, 0,
- 2, 192,1, 32, 40, 12, 0, 0, 0, 0, 128,8, 0, 0, 0, 0, 0, 16, 64, 1, 0, 0, 0, 128,48, 2, 129,64, 64, 64, 0, 7, 0, 77, 1, 64, 1, 44, 225,96, 0,
- 1, 18, 16, 64, 0, 4, 144,0, 128,16, 96, 0, 32, 16, 5, 64, 16, 0, 2, 32, 12, 44, 17, 2, 5, 128,0, 128,3, 173,22, 0, 0, 0, 0, 32, 48, 0, 2, 0, 0,
+ 174,44, 111,93, 132,24, 224,154,192,100,1, 0, 157,18, 200,7, 17, 128,18, 32, 40, 36, 1, 21, 1, 0, 18, 112,18, 112,109,114,0, 0, 0, 0, 0, 0, 0, 52, 8,
+ 23, 90, 44, 21, 34, 4, 4, 74, 5, 112,142,120,32, 6, 127,64, 2, 194,137,21, 13, 34, 206,209,38, 61, 69, 80, 0, 19, 77, 84, 93, 0, 192,1, 32, 35, 4, 0, 0,
+ 2, 192,1, 32, 40, 12, 0, 0, 0, 0, 128,8, 0, 0, 0, 0, 0, 16, 64, 1, 0, 0, 0, 128,48, 2, 129,64, 64, 64, 0, 7, 0, 77, 1, 64, 1, 44, 225,96, 0,
+ 1, 18, 16, 64, 0, 4, 144,0, 128,16, 96, 0, 32, 16, 5, 64, 16, 0, 2, 32, 12, 44, 17, 2, 5, 128,0, 128,3, 173,22, 0, 0, 0, 0, 32, 48, 0, 2, 0, 0,
0, 0, 73, 1, 0, 0, 104,1, 0, 4, 136,33, 0, 128,4, 8, 64, 0, 0, 0, 0, 0, 0, 0, 192,8, 64, 24, 2, 132,4, 0, 32, 0, 0, 0, 0, 0, 0, 4, 208,
- 0, 0, 64, 6, 2, 246,35, 0, 0, 0, 20, 64, 68, 4, 229,2, 0, 4, 5, 0, 0, 0, 134,2, 0, 166,0, 0, 4, 133,0, 16, 134,80, 36, 0, 4, 1, 100,21, 1,
- 2, 18, 10, 3, 64, 12, 5, 53, 0, 0, 0, 8, 0, 22, 4, 128,4, 16, 192,129,9, 146,34, 10, 0, 16, 128,105,18, 10, 73, 0, 64, 16, 4, 0, 0, 0, 3, 1, 0,
- 0, 0, 128,128,10, 129,0, 80, 8, 0, 64, 0, 0, 0, 65, 0, 34, 16, 0, 0, 68, 128,4, 128,160,144,0, 8, 0, 64, 208,0, 2, 0, 0, 0, 72, 161,33, 96, 3,
+ 0, 0, 64, 6, 2, 246,35, 0, 0, 0, 20, 64, 68, 4, 229,2, 0, 4, 5, 0, 0, 0, 134,2, 0, 166,0, 0, 4, 133,0, 16, 134,80, 36, 0, 4, 1, 100,21, 1,
+ 2, 18, 10, 3, 64, 12, 5, 53, 0, 0, 0, 8, 0, 22, 4, 128,4, 16, 192,129,9, 146,34, 10, 0, 16, 128,105,18, 10, 73, 0, 64, 16, 4, 0, 0, 0, 3, 1, 0,
+ 0, 0, 128,128,10, 129,0, 80, 8, 0, 64, 0, 0, 0, 65, 0, 34, 16, 0, 0, 68, 128,4, 128,160,144,0, 8, 0, 64, 208,0, 2, 0, 0, 0, 72, 161,33, 96, 3,
24, 64, 3, 0, 0, 128,0, 0, 0, 164,0, 245,56, 6, 128,88, 32, 28, 131,34, 56, 128,143,128,113,18, 48, 4, 65, 49, 152,79, 16, 0, 0, 0, 0, 8, 0, 224,148,
- 140,230,142,6, 102,128,91, 67, 178,17, 0, 2, 235,234,72, 176,34, 14, 216,110,115,200,130,92, 253,36, 97, 16, 1, 70, 2, 69, 8, 68, 126,135,16, 171,19, 62, 96,
- 0, 128,65, 97, 0, 0, 8, 16, 0, 16, 80, 160,1, 36, 122,130,65, 38, 96, 6, 94, 143,128,225,92, 160,10, 0, 160,87, 235,72, 145,24, 0, 0, 0, 0, 54, 144,0,
- 118,134,62, 100,131,33, 0, 0, 0, 0, 0, 204,1, 10, 18, 84, 161,60, 89, 8, 204,105,245,52, 142,7, 37, 252,4, 54, 184,70, 36, 9, 168,8, 0, 128,128,160,70,
+ 140,230,142,6, 102,128,91, 67, 178,17, 0, 2, 235,234,72, 176,34, 14, 216,110,115,200,130,92, 253,36, 97, 16, 1, 70, 2, 69, 8, 68, 126,135,16, 171,19, 62, 96,
+ 0, 128,65, 97, 0, 0, 8, 16, 0, 16, 80, 160,1, 36, 122,130,65, 38, 96, 6, 94, 143,128,225,92, 160,10, 0, 160,87, 235,72, 145,24, 0, 0, 0, 0, 54, 144,0,
+ 118,134,62, 100,131,33, 0, 0, 0, 0, 0, 204,1, 10, 18, 84, 161,60, 89, 8, 204,105,245,52, 142,7, 37, 252,4, 54, 184,70, 36, 9, 168,8, 0, 128,128,160,70,
131,16, 137,244,75, 36, 51, 100,74, 14, 60, 130,182,13, 218,88, 14, 200,0, 0, 0, 0, 0, 6, 192,72, 17, 80, 16, 112,20, 0, 64, 130,190,0, 231,41, 32, 10, 170,
97, 30, 32, 0, 42, 194,126,9, 26, 17, 183,17, 196,202,80, 38, 176,137,122,228,4, 240,14, 44, 35, 136,4, 60, 7, 2, 64, 5, 226,64, 232,55, 40, 206,46, 36, 173,
71, 22, 61, 88, 168,35, 130,3, 217,99, 1, 159,193,40, 121,168,149,200,10, 28, 234,234,8, 1, 0, 0, 0, 0, 34, 127,68, 4, 128,228,127,68, 104,130,24, 14, 160,
- 79, 192,4, 95, 1, 156,109,96, 160,0, 0, 32, 41, 33, 165,210,19, 32, 20, 21, 168,235,128,68, 0, 0, 0, 129,163,3, 4, 142,33, 0, 16, 4, 0, 130,224,129,1,
- 0, 128,33, 18, 200,18, 209,68, 4, 130,25, 128,1, 76, 179,130,1, 170,235,21, 80, 67, 108,2, 40, 32, 102,224,34, 8, 74, 8, 240,32, 0, 26, 68, 113,199,246,24,
- 157,7, 21, 160,2, 0, 1, 0, 0, 0, 136,211,64, 30, 144,0, 73, 40, 76, 16, 148,17, 17, 1, 12, 54, 68, 30, 0, 64, 59, 192,129,17, 88, 182,132,4, 99, 209,48,
- 130,200,6, 106,12, 66, 128,196,75, 21, 20, 36, 20, 40, 213,170,137,12, 0, 48, 22, 67, 112,72, 36, 40, 12, 64, 128,153,3, 144,21, 138,224,46, 1, 88, 66, 64, 80,
+ 79, 192,4, 95, 1, 156,109,96, 160,0, 0, 32, 41, 33, 165,210,19, 32, 20, 21, 168,235,128,68, 0, 0, 0, 129,163,3, 4, 142,33, 0, 16, 4, 0, 130,224,129,1,
+ 0, 128,33, 18, 200,18, 209,68, 4, 130,25, 128,1, 76, 179,130,1, 170,235,21, 80, 67, 108,2, 40, 32, 102,224,34, 8, 74, 8, 240,32, 0, 26, 68, 113,199,246,24,
+ 157,7, 21, 160,2, 0, 1, 0, 0, 0, 136,211,64, 30, 144,0, 73, 40, 76, 16, 148,17, 17, 1, 12, 54, 68, 30, 0, 64, 59, 192,129,17, 88, 182,132,4, 99, 209,48,
+ 130,200,6, 106,12, 66, 128,196,75, 21, 20, 36, 20, 40, 213,170,137,12, 0, 48, 22, 67, 112,72, 36, 40, 12, 64, 128,153,3, 144,21, 138,224,46, 1, 88, 66, 64, 80,
1, 216,34, 160,22, 226,121,132,129,0, 0, 32, 0, 20, 66, 40, 22, 16, 0, 64, 48, 83, 1, 102,76, 20, 70, 224,0, 2, 39, 71, 12, 1, 17, 0, 16, 150,7, 240,175,
- 15, 73, 251,8, 32, 98, 129,28, 224,5, 0, 0, 0, 0, 0, 116,22, 67, 4, 131,69, 128,89, 37, 196,232,140,250,157,63, 49, 0, 224,1, 18, 178,38, 40, 20, 152,22,
+ 15, 73, 251,8, 32, 98, 129,28, 224,5, 0, 0, 0, 0, 0, 116,22, 67, 4, 131,69, 128,89, 37, 196,232,140,250,157,63, 49, 0, 224,1, 18, 178,38, 40, 20, 152,22,
9, 82, 10, 128,0, 0, 10, 8, 32, 144,13, 128,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 112,219,10, 2, 96, 128,56, 64, 1, 0, 2, 28, 10, 84, 0, 0, 34, 200,
- 0, 0, 43, 39, 0, 196,188,29, 216,57, 112,178,87, 242,129,104,156,73, 205,169,32, 243,0, 96, 16, 20, 208,56, 98, 1, 130,4, 210,117,136,4, 51, 97, 29, 6, 51,
+ 0, 0, 43, 39, 0, 196,188,29, 216,57, 112,178,87, 242,129,104,156,73, 205,169,32, 243,0, 96, 16, 20, 208,56, 98, 1, 130,4, 210,117,136,4, 51, 97, 29, 6, 51,
9, 2, 182,171,36, 28, 133,0, 134,0, 140,110,136,12, 106,60, 38, 208,194,247,69, 136,33, 9, 255,87, 1, 13, 173,102,70, 106,64, 96, 185,74, 142,10, 0, 2, 160,
- 209,88, 253,146,8, 133,8, 12, 1, 0, 133,236,160,58, 46, 16, 192,192,201,190,26, 2, 148,6, 78, 125,0, 71, 40, 196,152,4, 66, 1, 179,20, 161,38, 238,149,51,
- 38, 31, 164,14, 144,32, 27, 99, 6, 68, 249,160,98, 88, 172,1, 224,50, 105,41, 27, 105,248,0, 194,80, 2, 0, 0, 0, 0, 200,193,227,185,146,33, 148,33, 65, 88,
+ 209,88, 253,146,8, 133,8, 12, 1, 0, 133,236,160,58, 46, 16, 192,192,201,190,26, 2, 148,6, 78, 125,0, 71, 40, 196,152,4, 66, 1, 179,20, 161,38, 238,149,51,
+ 38, 31, 164,14, 144,32, 27, 99, 6, 68, 249,160,98, 88, 172,1, 224,50, 105,41, 27, 105,248,0, 194,80, 2, 0, 0, 0, 0, 200,193,227,185,146,33, 148,33, 65, 88,
152,79, 160,52, 28, 4, 9, 85, 2, 160,16, 6, 25, 22, 24, 31, 249,107,201,4, 21, 47, 44, 133,180,209,48, 24, 107,160,9, 68, 241,0, 110,0, 80, 143,202,45, 198,
- 40, 16, 32, 42, 7, 66, 1, 74, 56, 8, 184,142,145,1, 0, 0, 0, 0, 8, 32, 0, 4, 139,116,8, 195,216,128,1, 18, 131,132,3, 164,165,166,194,212,29, 10, 63,
- 117,211,45, 192,113,201,7, 144,0, 1, 160,0, 4, 27, 118,135,3, 130,63, 158,57, 195,169,9, 64, 22, 132,155,2, 161,44, 16, 241,51, 100,42, 157,72, 179,244,9,
- 192,45, 0, 64, 8, 200,0, 66, 0, 48, 209,209,19, 155,51, 130,96, 2, 37, 7, 4, 8, 0, 83, 11, 246,204,23, 141,46, 200,27, 244,66, 96, 230,3, 53, 48, 8, 34,
- 0, 0, 130,80, 164,200,31, 66, 128,0, 0, 0, 0, 0, 2, 4, 66, 0, 0, 0, 0, 7, 1, 11, 32, 32, 130,1, 0, 64, 98, 3, 100,7, 110,56, 136,237,20, 0, 0,
+ 40, 16, 32, 42, 7, 66, 1, 74, 56, 8, 184,142,145,1, 0, 0, 0, 0, 8, 32, 0, 4, 139,116,8, 195,216,128,1, 18, 131,132,3, 164,165,166,194,212,29, 10, 63,
+ 117,211,45, 192,113,201,7, 144,0, 1, 160,0, 4, 27, 118,135,3, 130,63, 158,57, 195,169,9, 64, 22, 132,155,2, 161,44, 16, 241,51, 100,42, 157,72, 179,244,9,
+ 192,45, 0, 64, 8, 200,0, 66, 0, 48, 209,209,19, 155,51, 130,96, 2, 37, 7, 4, 8, 0, 83, 11, 246,204,23, 141,46, 200,27, 244,66, 96, 230,3, 53, 48, 8, 34,
+ 0, 0, 130,80, 164,200,31, 66, 128,0, 0, 0, 0, 0, 2, 4, 66, 0, 0, 0, 0, 7, 1, 11, 32, 32, 130,1, 0, 64, 98, 3, 100,7, 110,56, 136,237,20, 0, 0,
2, 32, 0, 96, 80, 24, 8, 133,104,97, 206,141,102,72, 8, 10, 80, 180,36, 206,197,199,128,244,52, 166,3, 2, 12, 192,136,2, 64, 143,21, 188,32, 1, 160,195,152,
240,7, 32, 18, 135,56, 98, 140,41, 13, 20, 189,98, 25, 88, 40, 170,1, 0, 199,121,246,90, 0, 138,3, 4, 59, 144,34, 34, 128,118,68, 85, 111,237,8, 206,224,235,
64, 137,224,33, 138,64, 131,11, 53, 1, 199,44, 194,203,14, 8, 68, 203,98, 200,0, 64, 246,20, 16, 179,227,187,47, 8, 156,162,109,161,8, 8, 108,89, 81, 110,223,
48, 27, 230,153,91, 216,211,112,13, 201,156,249,65, 193,127,27, 96, 126,160,179,78, 39, 240,172,2, 8, 24, 220,209,33, 201,0, 140,210,191,28, 8, 144,0, 22, 134,
- 230,193,203,38, 21, 35, 94, 65, 103,94, 15, 22, 134,80, 217,6, 2, 128,130,24, 200,20, 224,146,5, 0, 104,49, 134,22, 59, 224,162,28, 1, 4, 32, 0, 0, 2, 16,
- 136,22, 32, 0, 2, 8, 128,0, 34, 4, 3, 64, 24, 0, 2, 0, 0, 0, 41, 0, 0, 0, 0, 128,0, 32, 132,64, 8, 2, 0, 0, 0, 52, 0, 0, 0, 0, 128,40, 8,
- 25, 0, 0, 8, 0, 0, 0, 0, 0, 0, 18, 8, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 120,97, 168,17, 96, 98, 32, 224,192,120,194,195,0, 4, 200,188,24, 0, 96,
+ 230,193,203,38, 21, 35, 94, 65, 103,94, 15, 22, 134,80, 217,6, 2, 128,130,24, 200,20, 224,146,5, 0, 104,49, 134,22, 59, 224,162,28, 1, 4, 32, 0, 0, 2, 16,
+ 136,22, 32, 0, 2, 8, 128,0, 34, 4, 3, 64, 24, 0, 2, 0, 0, 0, 41, 0, 0, 0, 0, 128,0, 32, 132,64, 8, 2, 0, 0, 0, 52, 0, 0, 0, 0, 128,40, 8,
+ 25, 0, 0, 8, 0, 0, 0, 0, 0, 0, 18, 8, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 120,97, 168,17, 96, 98, 32, 224,192,120,194,195,0, 4, 200,188,24, 0, 96,
2, 20, 80, 76, 114,174,1, 80, 192,2, 32, 135,251,253,200,0, 17, 50, 82, 48, 179,14, 18, 7, 136,54, 56, 177,174,192,6, 46, 56, 27, 36, 160,24, 250,16, 230,138,
- 101,0, 68, 20, 0, 0, 156,161,4, 3, 42, 1, 0, 4, 128,28, 1, 9, 65, 0, 0, 132,136,109,2, 0, 224,16, 130,4, 161,86, 74, 253,162,239,128,236,10, 1, 0,
- 0, 0, 0, 1, 0, 2, 0, 129,2, 0, 133,129,8, 0, 32, 13, 65, 104,128,49, 65, 189,3, 173,46, 136,42, 112,220,228,156,129,234,12, 7, 9, 224,28, 204,44, 17,
+ 101,0, 68, 20, 0, 0, 156,161,4, 3, 42, 1, 0, 4, 128,28, 1, 9, 65, 0, 0, 132,136,109,2, 0, 224,16, 130,4, 161,86, 74, 253,162,239,128,236,10, 1, 0,
+ 0, 0, 0, 1, 0, 2, 0, 129,2, 0, 133,129,8, 0, 32, 13, 65, 104,128,49, 65, 189,3, 173,46, 136,42, 112,220,228,156,129,234,12, 7, 9, 224,28, 204,44, 17,
128,23, 115,3, 59, 34, 54, 152,95, 152,130,192,4, 142,2, 35, 96, 0, 0, 64, 0, 32, 0, 0, 0, 5, 193,5, 4, 0, 64, 35, 4, 192,128,193,2, 152,6, 4, 208,
- 84, 9, 112,74, 10, 70, 72, 5, 128,65, 0, 64, 0, 129,7, 0, 108,164,240,8, 192,226,100,19, 200,138,74, 2, 60, 188,64, 65, 154,230,89, 217,136,152,153,19, 5,
- 10, 12, 160,167,228,128,27, 222,125,152,0, 32, 34, 0, 8, 16, 20, 120,194,33, 0, 12, 16, 17, 129,54, 96, 0, 11, 55, 71, 6, 193,44, 211,216,46, 64, 192,168,57,
- 6, 192,24, 5, 61, 203,240,250,159,33, 8, 237,8, 185,39, 32, 160,224,69, 139,8, 193,183,212,51, 106,196,82, 49, 96, 0, 64, 0, 1, 18, 1, 0, 0, 0, 64, 0,
- 130,204,211,24, 36, 168,8, 104,154,108,140,128,1, 0, 166,9, 118,66, 129,0, 0, 0, 0, 128,0, 0, 128,116,116,5, 195,4, 67, 176,169,66, 26, 8, 189,131,0,
+ 84, 9, 112,74, 10, 70, 72, 5, 128,65, 0, 64, 0, 129,7, 0, 108,164,240,8, 192,226,100,19, 200,138,74, 2, 60, 188,64, 65, 154,230,89, 217,136,152,153,19, 5,
+ 10, 12, 160,167,228,128,27, 222,125,152,0, 32, 34, 0, 8, 16, 20, 120,194,33, 0, 12, 16, 17, 129,54, 96, 0, 11, 55, 71, 6, 193,44, 211,216,46, 64, 192,168,57,
+ 6, 192,24, 5, 61, 203,240,250,159,33, 8, 237,8, 185,39, 32, 160,224,69, 139,8, 193,183,212,51, 106,196,82, 49, 96, 0, 64, 0, 1, 18, 1, 0, 0, 0, 64, 0,
+ 130,204,211,24, 36, 168,8, 104,154,108,140,128,1, 0, 166,9, 118,66, 129,0, 0, 0, 0, 128,0, 0, 128,116,116,5, 195,4, 67, 176,169,66, 26, 8, 189,131,0,
210,16, 32, 179,3, 116,32, 167,29, 16, 225,52, 129,28, 16, 8, 0, 0, 1, 32, 0, 6, 0, 0, 33, 32, 0, 0, 177,0, 128,144,0, 0, 0, 0, 16, 18, 35, 126,102,
- 3, 109,120,157,248,229,210,11, 12, 2, 41, 11, 141,221,49, 0, 128,0, 144,35, 109,2, 2, 70, 170,163,216,189,237,111,118,52, 231,232,42, 128,220,13, 224,16, 56,
- 22, 194,51, 16, 135,0, 0, 12, 0, 0, 0, 6, 48, 71, 8, 64, 96, 200,192,0, 195,0, 111,32, 0, 128,45, 40, 72, 125,80, 128,183,121,9, 0, 192,2, 1, 0, 1,
- 0, 64, 8, 160,20, 161,138,163,64, 47, 50, 128,65, 0, 50, 0, 0, 0, 0, 0, 0, 128,48, 64, 3, 56, 0, 16, 0, 0, 16, 8, 8, 64, 0, 0, 129,11, 67, 17, 0,
- 0, 32, 130,36, 0, 0, 0, 16, 136,0, 2, 140,16, 200,59, 200,154,254,11, 20, 66, 0, 144,174,0, 128,64, 79, 4, 192,0, 8, 118,185,135,69, 4, 149,152,36, 24,
- 38, 71, 128,40, 32, 136,34, 0, 0, 0, 0, 0, 77, 24, 142,1, 4, 4, 25, 0, 232,185,249,212,0, 0, 0, 0, 8, 6, 0, 1, 128,0, 32, 227,143,6, 12, 0, 8,
- 0, 67, 115,11, 140,161,0, 25, 5, 1, 17, 0, 140,73, 200,24, 136,160,29, 16, 142,157,12, 42, 0, 0, 80, 1, 0, 0, 33, 0, 0, 1, 132,0, 0, 1, 98, 36, 46,
+ 3, 109,120,157,248,229,210,11, 12, 2, 41, 11, 141,221,49, 0, 128,0, 144,35, 109,2, 2, 70, 170,163,216,189,237,111,118,52, 231,232,42, 128,220,13, 224,16, 56,
+ 22, 194,51, 16, 135,0, 0, 12, 0, 0, 0, 6, 48, 71, 8, 64, 96, 200,192,0, 195,0, 111,32, 0, 128,45, 40, 72, 125,80, 128,183,121,9, 0, 192,2, 1, 0, 1,
+ 0, 64, 8, 160,20, 161,138,163,64, 47, 50, 128,65, 0, 50, 0, 0, 0, 0, 0, 0, 128,48, 64, 3, 56, 0, 16, 0, 0, 16, 8, 8, 64, 0, 0, 129,11, 67, 17, 0,
+ 0, 32, 130,36, 0, 0, 0, 16, 136,0, 2, 140,16, 200,59, 200,154,254,11, 20, 66, 0, 144,174,0, 128,64, 79, 4, 192,0, 8, 118,185,135,69, 4, 149,152,36, 24,
+ 38, 71, 128,40, 32, 136,34, 0, 0, 0, 0, 0, 77, 24, 142,1, 4, 4, 25, 0, 232,185,249,212,0, 0, 0, 0, 8, 6, 0, 1, 128,0, 32, 227,143,6, 12, 0, 8,
+ 0, 67, 115,11, 140,161,0, 25, 5, 1, 17, 0, 140,73, 200,24, 136,160,29, 16, 142,157,12, 42, 0, 0, 80, 1, 0, 0, 33, 0, 0, 1, 132,0, 0, 1, 98, 36, 46,
8, 34, 35, 0, 69, 41, 112,1, 32, 0, 2, 18, 0, 48, 128,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 32, 88, 48, 36, 0, 32, 16, 0, 33, 0, 0, 4, 0, 32, 132,
- 8, 0, 0, 0, 128,64, 132,12, 100,136,32, 129,129,96, 140,3, 167,5, 0, 0, 132,4, 128,193,40, 72, 162,0, 82, 32, 12, 132,130,79, 27, 84, 0, 10, 136,80, 74,
+ 8, 0, 0, 0, 128,64, 132,12, 100,136,32, 129,129,96, 140,3, 167,5, 0, 0, 132,4, 128,193,40, 72, 162,0, 82, 32, 12, 132,130,79, 27, 84, 0, 10, 136,80, 74,
16, 160,0, 109,10, 32, 7, 4, 11, 0, 69, 0, 16, 32, 0, 72, 118,105,0, 0, 0, 0, 163,65, 6, 146,32, 0, 128,2, 4, 1, 128,164,128,64, 0, 0, 64, 128,192,
71, 8, 19, 0, 97, 4, 0, 1, 0, 16, 104,128,64, 128,30, 18, 129,244,128,1, 131,52, 3, 128,42, 194,7, 10, 10, 34, 128,8, 37, 67, 0, 51, 0, 80, 0, 0, 192,
- 2, 64, 4, 72, 4, 64, 12, 0, 8, 0, 32, 32, 2, 128,40, 2, 52, 14, 11, 2, 18, 58, 18, 5, 128,42, 129,96, 8, 0, 16, 65, 0, 8, 64, 128,0, 64, 4, 0, 64,
- 0, 0, 0, 44, 0, 128,16, 0, 64, 16, 0, 0, 39, 4, 32, 16, 0, 0, 4, 17, 0, 32, 0, 160,0, 0, 8, 0, 3, 119,146,146,128,3, 136,0, 8, 172,67, 82, 72,
+ 2, 64, 4, 72, 4, 64, 12, 0, 8, 0, 32, 32, 2, 128,40, 2, 52, 14, 11, 2, 18, 58, 18, 5, 128,42, 129,96, 8, 0, 16, 65, 0, 8, 64, 128,0, 64, 4, 0, 64,
+ 0, 0, 0, 44, 0, 128,16, 0, 64, 16, 0, 0, 39, 4, 32, 16, 0, 0, 4, 17, 0, 32, 0, 160,0, 0, 8, 0, 3, 119,146,146,128,3, 136,0, 8, 172,67, 82, 72,
145,52, 28, 114,17, 0, 1, 18, 104,24, 64, 162,33, 250,6, 210,164,112,4, 8, 48, 4, 48, 1, 179,119,40, 0, 10, 17, 228,216,34, 18, 168,34, 24, 32, 7, 149,226,
- 1, 129,24, 0, 128,96, 18, 36, 0, 1, 16, 32, 197,69, 193,89, 30, 32, 202,1, 228,192,208,39, 45, 8, 34, 66, 161,236,58, 59, 0, 192,65, 79, 34, 71, 143,7, 32,
- 216,118,46, 2, 36, 38, 135,156,121,177,241,10, 6, 25, 176,64, 8, 24, 145,0, 84, 128,98, 126,183,64, 28, 162,3, 0, 12, 2, 0, 155,147,35, 214,136,12, 40, 14,
- 212,89, 64, 160,0, 34, 228,130,65, 64, 175,0, 33, 59, 82, 96, 52, 32, 8, 242,115,4, 160,76, 2, 20, 33, 200,137,9, 150,86, 0, 3, 178,4, 132,193,3, 1, 64,
- 46, 111,12, 96, 120,128,4, 197,66, 5, 190,228,145,194,230,9, 12, 10, 146,27, 92, 12, 1, 64, 0, 64, 4, 0, 96, 0, 0, 0, 0, 64, 8, 174,2, 192,40, 1, 64,
- 16, 128,0, 64, 17, 0, 0, 128,215,72, 8, 16, 1, 200,1, 70, 0, 0, 0, 130,168,0, 0, 32, 65, 40, 32, 0, 64, 37, 0, 0, 24, 44, 9, 20, 128,58, 242,15, 6,
+ 1, 129,24, 0, 128,96, 18, 36, 0, 1, 16, 32, 197,69, 193,89, 30, 32, 202,1, 228,192,208,39, 45, 8, 34, 66, 161,236,58, 59, 0, 192,65, 79, 34, 71, 143,7, 32,
+ 216,118,46, 2, 36, 38, 135,156,121,177,241,10, 6, 25, 176,64, 8, 24, 145,0, 84, 128,98, 126,183,64, 28, 162,3, 0, 12, 2, 0, 155,147,35, 214,136,12, 40, 14,
+ 212,89, 64, 160,0, 34, 228,130,65, 64, 175,0, 33, 59, 82, 96, 52, 32, 8, 242,115,4, 160,76, 2, 20, 33, 200,137,9, 150,86, 0, 3, 178,4, 132,193,3, 1, 64,
+ 46, 111,12, 96, 120,128,4, 197,66, 5, 190,228,145,194,230,9, 12, 10, 146,27, 92, 12, 1, 64, 0, 64, 4, 0, 96, 0, 0, 0, 0, 64, 8, 174,2, 192,40, 1, 64,
+ 16, 128,0, 64, 17, 0, 0, 128,215,72, 8, 16, 1, 200,1, 70, 0, 0, 0, 130,168,0, 0, 32, 65, 40, 32, 0, 64, 37, 0, 0, 24, 44, 9, 20, 128,58, 242,15, 6,
48, 178,64, 12, 196,208,3, 11, 40, 212,176,41, 52, 7, 3, 151,5, 210,57, 52, 56, 252,16, 136,11, 116,36, 101,160,28, 224,212,69, 10, 21, 192,50, 160,0, 160,200,
- 72, 2, 3, 42, 0, 0, 56, 82, 32, 192,94, 46, 152,32, 189,195,29, 237,1, 20, 41, 48, 3, 5, 0, 0, 2, 6, 0, 0, 192,101,249,76, 202,1, 0, 0, 128,0, 68,
+ 72, 2, 3, 42, 0, 0, 56, 82, 32, 192,94, 46, 152,32, 189,195,29, 237,1, 20, 41, 48, 3, 5, 0, 0, 2, 6, 0, 0, 192,101,249,76, 202,1, 0, 0, 128,0, 68,
37, 64, 0, 16, 16, 19, 150,16, 1, 80, 52, 112,31, 212,34, 19, 83, 0, 192,31, 12, 19, 71, 0, 4, 67, 12, 0, 0, 4, 1, 1, 0, 0, 128,3, 208,86, 92, 6, 128,
- 66, 12, 73, 149,219,215,156,128,118,7, 109,40, 159,203,0, 140,167,4, 68, 176,0, 94, 194,227,0, 77, 0, 68, 0, 6, 4, 64, 0, 32, 81, 67, 194,16, 49, 24, 33,
- 30, 96, 32, 64, 0, 0, 18, 0, 160,128,2, 177,192,26, 137,0, 160,32, 64, 0, 64, 64, 16, 16, 194,0, 128,130,88, 78, 53, 0, 32, 72, 0, 0, 75, 0, 4, 56, 48,
- 156,1, 198,35, 148,1, 1, 64, 5, 203,145,8, 188,179,51, 80, 0, 147,70, 25, 96, 20, 200,16, 96, 48, 88, 72, 69, 8, 96, 6, 130,2, 0, 24, 136,64, 38, 19, 80,
- 12, 2, 64, 4, 0, 15, 64, 160,172,8, 33, 208,193,40, 35, 4, 39, 84, 22, 0, 0, 192,9, 32, 4, 0, 32, 0, 224,192,0, 32, 132,0, 32, 0, 128,0, 128,66, 40,
+ 66, 12, 73, 149,219,215,156,128,118,7, 109,40, 159,203,0, 140,167,4, 68, 176,0, 94, 194,227,0, 77, 0, 68, 0, 6, 4, 64, 0, 32, 81, 67, 194,16, 49, 24, 33,
+ 30, 96, 32, 64, 0, 0, 18, 0, 160,128,2, 177,192,26, 137,0, 160,32, 64, 0, 64, 64, 16, 16, 194,0, 128,130,88, 78, 53, 0, 32, 72, 0, 0, 75, 0, 4, 56, 48,
+ 156,1, 198,35, 148,1, 1, 64, 5, 203,145,8, 188,179,51, 80, 0, 147,70, 25, 96, 20, 200,16, 96, 48, 88, 72, 69, 8, 96, 6, 130,2, 0, 24, 136,64, 38, 19, 80,
+ 12, 2, 64, 4, 0, 15, 64, 160,172,8, 33, 208,193,40, 35, 4, 39, 84, 22, 0, 0, 192,9, 32, 4, 0, 32, 0, 224,192,0, 32, 132,0, 32, 0, 128,0, 128,66, 40,
35, 32, 128,32, 4, 34, 32, 65, 69, 80, 160,48, 46, 136,88, 76, 96, 119,98, 8, 132,76, 21, 0, 96, 0, 143,19, 160,145,0, 0, 17, 0, 4, 46, 1, 0, 0, 76, 160,
- 254,42, 32, 0, 0, 18, 112,49, 0, 129,31, 126,0, 0, 0, 2, 9, 0, 0, 4, 0, 4, 0, 66, 138,32, 110,112,1, 0, 78, 128,6, 4, 11, 130,24, 28, 192,68, 0,
- 8, 139,32, 73, 22, 32, 98, 8, 62, 0, 128,97, 139,210,43, 252,251,15, 16, 32, 0, 128,186,59, 32, 9, 61, 144,10, 11, 105,211,0, 0, 8, 88, 140,80, 183,226,96,
- 198,252,230,17, 132,26, 192,101,40, 2, 107,144,9, 64, 181,18, 7, 32, 128,74, 62, 24, 120,160,68, 3, 106,252,174,103,212,32, 94, 64, 204,75, 16, 18, 147,51, 37,
+ 254,42, 32, 0, 0, 18, 112,49, 0, 129,31, 126,0, 0, 0, 2, 9, 0, 0, 4, 0, 4, 0, 66, 138,32, 110,112,1, 0, 78, 128,6, 4, 11, 130,24, 28, 192,68, 0,
+ 8, 139,32, 73, 22, 32, 98, 8, 62, 0, 128,97, 139,210,43, 252,251,15, 16, 32, 0, 128,186,59, 32, 9, 61, 144,10, 11, 105,211,0, 0, 8, 88, 140,80, 183,226,96,
+ 198,252,230,17, 132,26, 192,101,40, 2, 107,144,9, 64, 181,18, 7, 32, 128,74, 62, 24, 120,160,68, 3, 106,252,174,103,212,32, 94, 64, 204,75, 16, 18, 147,51, 37,
13, 24, 28, 84, 64, 101,17, 214,106,48, 21, 87, 9, 20, 87, 208,97, 12, 40, 187,104,2, 0, 128,72, 170,1, 4, 134,160,32, 2, 41, 0, 10, 72, 92, 0, 0, 32, 160,
- 140,66, 0, 64, 40, 0, 132,0, 1, 0, 0, 32, 70, 0, 2, 16, 12, 80, 128,2, 2, 0, 4, 0, 44, 0, 168,48, 16, 6, 32, 181,154,1, 32, 164,132,97, 0, 1, 4,
+ 140,66, 0, 64, 40, 0, 132,0, 1, 0, 0, 32, 70, 0, 2, 16, 12, 80, 128,2, 2, 0, 4, 0, 44, 0, 168,48, 16, 6, 32, 181,154,1, 32, 164,132,97, 0, 1, 4,
28, 181,1, 127,21, 197,96, 48, 0, 54, 56, 0, 16, 81, 30, 48, 0, 1, 100,1, 0, 106,21, 0, 128,16, 0, 134,160,6, 21, 140,18, 132,225,9, 225,121,97, 24, 195,
0, 128,32, 82, 6, 16, 66, 68, 96, 80, 0, 192,128,129,16, 0, 64, 8, 1, 43, 80, 132,0, 152,64, 216,68, 8, 0, 0, 8, 73, 4, 4, 3, 136,16, 136,34, 198,199,
- 134,9, 24, 84, 4, 17, 3, 65, 144,64, 32, 0, 0, 0, 0, 0, 16, 32, 36, 17, 12, 0, 0, 92, 0, 192,0, 1, 138,47, 2, 174,226,199,167,6, 156,228,13, 216,41,
- 234,128,15, 36, 215,6, 90, 0, 72, 77, 18, 92, 98, 56, 28, 196,91, 7, 220,143,85, 161,81, 229,2, 23, 50, 0, 18, 0, 0, 0, 0, 0, 106,0, 212,73, 247,139,60,
+ 134,9, 24, 84, 4, 17, 3, 65, 144,64, 32, 0, 0, 0, 0, 0, 16, 32, 36, 17, 12, 0, 0, 92, 0, 192,0, 1, 138,47, 2, 174,226,199,167,6, 156,228,13, 216,41,
+ 234,128,15, 36, 215,6, 90, 0, 72, 77, 18, 92, 98, 56, 28, 196,91, 7, 220,143,85, 161,81, 229,2, 23, 50, 0, 18, 0, 0, 0, 0, 0, 106,0, 212,73, 247,139,60,
26, 247,160,8, 8, 10, 88, 162,31, 138,17, 144,164,20, 5, 177,116,0, 2, 184,8, 0, 119,252,193,26, 115,78, 147,170,120,4, 248,185,94, 102,138,64, 81, 112,176,
- 33, 0, 1, 0, 52, 45, 225,223,12, 112,39, 9, 0, 113,37, 16, 52, 64, 4, 92, 131,138,32, 152,240,68, 3, 16, 0, 0, 40, 244,8, 36, 204,131,232,12, 165,117,8,
- 147,115,34, 88, 80, 64, 13, 163,70, 55, 203,200,249,63, 194,9, 39, 49, 0, 0, 128,2, 7, 0, 1, 1, 0, 0, 0, 28, 0, 0, 0, 0, 17, 202,158,212,238,251,17,
+ 33, 0, 1, 0, 52, 45, 225,223,12, 112,39, 9, 0, 113,37, 16, 52, 64, 4, 92, 131,138,32, 152,240,68, 3, 16, 0, 0, 40, 244,8, 36, 204,131,232,12, 165,117,8,
+ 147,115,34, 88, 80, 64, 13, 163,70, 55, 203,200,249,63, 194,9, 39, 49, 0, 0, 128,2, 7, 0, 1, 1, 0, 0, 0, 28, 0, 0, 0, 0, 17, 202,158,212,238,251,17,
204,69, 70, 88, 106,17, 4, 88, 112,166,37, 64, 208,23, 92, 104,0, 0, 6, 178,219,211,214,47, 126,1, 134,211,217,135,181,213,60, 200,222,85, 68, 10, 7, 96, 184,
181,73, 164,197,177,133,23, 227,7, 28, 57, 12, 150,172,0, 25, 12, 136,64, 90, 128,37, 40, 110,96, 1, 110,140,51, 0, 160,11, 58, 121,191,247,12, 39, 10, 16, 147,
81, 9, 6, 16, 41, 174,96, 166,3, 38, 193,177,108,139,65, 64, 188,8, 0, 64, 41, 156,106,8, 64, 68, 193,8, 182,136,0, 96, 108,52, 142,28, 233,35, 80, 225,110,
- 8, 196,129,20, 1, 52, 147,129,65, 32, 0, 17, 194,0, 0, 26, 36, 0, 172,5, 17, 67, 64, 8, 180,2, 194,49, 114,8, 103,16, 32, 0, 128,212,160,77, 66, 243,56,
- 194,13, 80, 30, 128,8, 0, 32, 0, 129,0, 128,240,131,94, 15, 88, 32, 98, 226,34, 53, 2, 50, 1, 48, 132,161,0, 0, 0, 64, 0, 160,16, 162,42, 98, 0, 164,80,
+ 8, 196,129,20, 1, 52, 147,129,65, 32, 0, 17, 194,0, 0, 26, 36, 0, 172,5, 17, 67, 64, 8, 180,2, 194,49, 114,8, 103,16, 32, 0, 128,212,160,77, 66, 243,56,
+ 194,13, 80, 30, 128,8, 0, 32, 0, 129,0, 128,240,131,94, 15, 88, 32, 98, 226,34, 53, 2, 50, 1, 48, 132,161,0, 0, 0, 64, 0, 160,16, 162,42, 98, 0, 164,80,
49, 0, 250,155,136,50, 36, 4, 8, 130,26, 138,128,99, 76, 160,167,80, 231,72, 22, 86, 17, 206,19, 16, 26, 3, 0, 16, 113,6, 182,52, 128,128,32, 11, 163,113,160,
- 39, 192,66, 0, 99, 0, 0, 130,140,100,252,131,32, 137,64, 231,254,192,0, 240,243,84, 16, 6, 31, 51, 0, 1, 113,124,64, 0, 0, 8, 0, 192,33, 238,195,221,6,
+ 39, 192,66, 0, 99, 0, 0, 130,140,100,252,131,32, 137,64, 231,254,192,0, 240,243,84, 16, 6, 31, 51, 0, 1, 113,124,64, 0, 0, 8, 0, 192,33, 238,195,221,6,
202,107,22, 138,142,165,253,132,141,251,3, 45, 156,31, 17, 107,107,96, 132,155,158,89, 185,9, 47, 112,16, 54, 138,96, 108,147,20, 44, 43, 17, 34, 18, 114,48, 227,
- 2, 18, 2, 229,223,0, 63, 0, 72, 131,66, 225,29, 248,1, 68, 43, 78, 8, 204,83, 65, 229,164,210,147,163,11, 26, 16, 40, 188,0, 35, 24, 170,32, 6, 18, 7, 22,
+ 2, 18, 2, 229,223,0, 63, 0, 72, 131,66, 225,29, 248,1, 68, 43, 78, 8, 204,83, 65, 229,164,210,147,163,11, 26, 16, 40, 188,0, 35, 24, 170,32, 6, 18, 7, 22,
40, 227,136,14, 172,130,129,1, 3, 9, 2, 206,8, 199,137,130,23, 139,2, 245,62, 3, 1, 14, 233,66, 76, 0, 15, 51, 168,25, 217,10, 118,140,36, 80, 254,234,176,
3, 12, 193,4, 80, 8, 80, 38, 12, 0, 4, 130,18, 81, 166,67, 1, 3, 204,8, 1, 32, 8, 0, 128,147,2, 232,14, 130,75, 71, 59, 44, 0, 199,141,156,71, 128,185,
- 69, 24, 201,22, 9, 24, 216,69, 204,6, 60, 226,0, 33, 6, 16, 45, 64, 10, 232,133,128,3, 38, 1, 8, 52, 240,24, 5, 86, 153,4, 0, 194,3, 4, 26, 128,137,2,
+ 69, 24, 201,22, 9, 24, 216,69, 204,6, 60, 226,0, 33, 6, 16, 45, 64, 10, 232,133,128,3, 38, 1, 8, 52, 240,24, 5, 86, 153,4, 0, 194,3, 4, 26, 128,137,2,
244,254,225,137,140,129,65, 2, 131,1, 5, 68, 154,130,102,176,199,34, 53, 156,102,53, 196,75, 4, 177,0, 132,128,35, 140,176,41, 4, 1, 0, 208,51, 196,178,128,
140,200,39, 237,159,179,30, 25, 13, 0, 20, 4, 128,1, 142,224,12, 1, 140,21, 33, 212,198,240,233,142,160,67, 12, 208,24, 98, 83, 17, 7, 160,24, 241,176,4, 189,
- 98, 0, 6, 156,0, 1, 100,0, 0, 0, 0, 16, 2, 88, 224,129,59, 80, 38, 240,82, 150,147,32, 63, 204,9, 139,62, 0, 160,131,128,69, 10, 56, 65, 9, 241,51, 96,
+ 98, 0, 6, 156,0, 1, 100,0, 0, 0, 0, 16, 2, 88, 224,129,59, 80, 38, 240,82, 150,147,32, 63, 204,9, 139,62, 0, 160,131,128,69, 10, 56, 65, 9, 241,51, 96,
84, 73, 33, 136,0, 99, 163,3, 7, 81, 253,110,0, 5, 24, 32, 224,128,30, 4, 52, 45, 64, 15, 45, 49, 4, 72, 8, 162,215,3, 128,1, 177,138,165,136,0, 196,118,
- 25, 8, 0, 8, 145,25, 16, 133,64, 244,30, 49, 192,148,154,15, 2, 1, 66, 152,149,2, 32, 0, 32, 68, 79, 241,34, 4, 134,36, 50, 10, 151,26, 72, 128,60, 16, 10,
- 0, 178,135,74, 41, 133,4, 8, 20, 224,116,129,0, 10, 60, 25, 52, 74, 0, 32, 16, 64, 0, 0, 0, 0, 0, 4, 16, 2, 4, 4, 0, 0, 1, 4, 9, 16, 0, 68, 10,
- 96, 192,148,116,0, 165,162,17, 88, 49, 168,102,0, 140,3, 18, 112,67, 177,17, 50, 96, 27, 128,181,134,73, 94, 0, 0, 0, 5, 0, 16, 0, 216,2, 8, 34, 161,34,
- 4, 10, 6, 23, 241,65, 148,0, 0, 59, 142,8, 128,40, 4, 1, 19, 1, 140,2, 24, 2, 3, 16, 38, 17, 28, 167,29, 129,160,6, 8, 119,15, 57, 4, 160,0, 224,60,
+ 25, 8, 0, 8, 145,25, 16, 133,64, 244,30, 49, 192,148,154,15, 2, 1, 66, 152,149,2, 32, 0, 32, 68, 79, 241,34, 4, 134,36, 50, 10, 151,26, 72, 128,60, 16, 10,
+ 0, 178,135,74, 41, 133,4, 8, 20, 224,116,129,0, 10, 60, 25, 52, 74, 0, 32, 16, 64, 0, 0, 0, 0, 0, 4, 16, 2, 4, 4, 0, 0, 1, 4, 9, 16, 0, 68, 10,
+ 96, 192,148,116,0, 165,162,17, 88, 49, 168,102,0, 140,3, 18, 112,67, 177,17, 50, 96, 27, 128,181,134,73, 94, 0, 0, 0, 5, 0, 16, 0, 216,2, 8, 34, 161,34,
+ 4, 10, 6, 23, 241,65, 148,0, 0, 59, 142,8, 128,40, 4, 1, 19, 1, 140,2, 24, 2, 3, 16, 38, 17, 28, 167,29, 129,160,6, 8, 119,15, 57, 4, 160,0, 224,60,
38, 9, 128,46, 0, 22, 138,59, 32, 128,0, 0, 0, 11, 132,3, 9, 8, 128,2, 11, 0, 16, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 128,179,32, 48, 150,26, 238,
236,3, 16, 103,24, 0, 76, 227,26, 19, 34, 230,3, 172,85, 4, 41, 24, 23, 199,15, 194,112,20, 206,33, 228,190,42, 58, 254,77, 34, 164,133,64, 140,99, 8, 222,233,
11, 65, 27, 19, 26, 36, 135,208,8, 1, 2, 0, 136,225,244,72, 14, 9, 0, 54, 242,13, 0, 0, 6, 0, 130,192,8, 4, 194,34, 64, 146,104,0, 216,32, 160,0, 128,
- 79, 38, 54, 20, 10, 40, 24, 15, 21, 0, 132,112,2, 25, 97, 157,216,108,38, 38, 2, 32, 196,48, 8, 89, 128,18, 209,36, 2, 0, 97, 20, 56, 224,147,193,138,4, 16,
- 64, 2, 100,4, 167,130,1, 0, 5, 140,4, 4, 83, 0, 70, 26, 48, 237,33, 7, 97, 64, 8, 252,224,48, 32, 80, 4, 52, 2, 7, 2, 208,0, 8, 119,157,122,130,1,
+ 79, 38, 54, 20, 10, 40, 24, 15, 21, 0, 132,112,2, 25, 97, 157,216,108,38, 38, 2, 32, 196,48, 8, 89, 128,18, 209,36, 2, 0, 97, 20, 56, 224,147,193,138,4, 16,
+ 64, 2, 100,4, 167,130,1, 0, 5, 140,4, 4, 83, 0, 70, 26, 48, 237,33, 7, 97, 64, 8, 252,224,48, 32, 80, 4, 52, 2, 7, 2, 208,0, 8, 119,157,122,130,1,
4, 128,28, 56, 174,65, 68, 224,171,206,215,1, 36, 73, 88, 42, 4, 225,124,162,76, 84, 101,94, 26, 40, 194,4, 1, 0, 72, 230,93, 163,10, 16, 0, 0, 160,250,161,
224,178,1, 40, 128,180,124,224,60, 76, 5, 179,31, 100,48, 16, 131,58, 153,255,20, 43, 131,4, 152,12, 4, 8, 15, 152,101,154,75, 36, 46, 88, 70, 160,41, 215,220,
- 52, 77, 161,0, 136,24, 119,113,193,60, 0, 220,118,0, 17, 100,76, 148,88, 202,0, 36, 8, 16, 6, 0, 24, 4, 0, 0, 14, 0, 128,16, 3, 204,248,28, 152,4, 0,
- 2, 132,12, 162,22, 17, 24, 204,7, 4, 81, 130,16, 48, 129,138,193,66, 80, 216,53, 0, 10, 92, 37, 2, 44, 80, 96, 82, 192,42, 9, 227,32, 36, 64, 197,1, 68, 8,
- 37, 10, 0, 128,41, 16, 168,8, 0, 164,9, 0, 16, 31, 0, 62, 130,38, 0, 160,7, 25, 208,1, 70, 224,128,105,224,220,145,0, 80, 34, 128,192,0, 12, 64, 100,21,
+ 52, 77, 161,0, 136,24, 119,113,193,60, 0, 220,118,0, 17, 100,76, 148,88, 202,0, 36, 8, 16, 6, 0, 24, 4, 0, 0, 14, 0, 128,16, 3, 204,248,28, 152,4, 0,
+ 2, 132,12, 162,22, 17, 24, 204,7, 4, 81, 130,16, 48, 129,138,193,66, 80, 216,53, 0, 10, 92, 37, 2, 44, 80, 96, 82, 192,42, 9, 227,32, 36, 64, 197,1, 68, 8,
+ 37, 10, 0, 128,41, 16, 168,8, 0, 164,9, 0, 16, 31, 0, 62, 130,38, 0, 160,7, 25, 208,1, 70, 224,128,105,224,220,145,0, 80, 34, 128,192,0, 12, 64, 100,21,
2, 0, 224,36, 136,197,43, 0, 129,8, 26, 8, 128,44, 40, 36, 0, 0, 114,64, 32, 16, 0, 64, 2, 0, 0, 0, 0, 0, 18, 134,133,0, 0, 128,0, 0, 1, 64, 138,
- 72, 8, 16, 52, 16, 0, 12, 16, 0, 0, 0, 64, 4, 0, 2, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 0, 0, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 25, 0, 128,0,
- 0, 24, 24, 0, 0, 0, 0, 0, 1, 0, 0, 0, 64, 136,0, 0, 0, 0, 16, 192,2, 16, 0, 21, 1, 1, 0, 0, 0, 96, 113,243,22, 41, 0, 0, 0, 32, 128,0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 8, 32, 0, 0, 0, 2, 2, 0, 0, 0, 0, 128,64, 16, 0, 0, 132,83, 68, 16,
- 64, 0, 0, 176,55, 32, 168,104,64, 6, 0, 0, 160,5, 16, 0, 0, 0, 2, 0, 16, 4, 67, 66, 128,32, 38, 9, 0, 116,0, 81, 244,249,100,26, 24, 222,32, 68, 52,
- 2, 0, 0, 0, 0, 40, 129,132,4, 0, 0, 0, 0, 0, 32, 228,32, 12, 128,0, 84, 0, 0, 0, 198,0, 4, 0, 4, 0, 16, 6, 2, 0, 0, 0, 128,0, 132,65, 53,
- 2, 6, 32, 72, 32, 62, 0, 128,50, 72, 1, 32, 16, 48, 2, 0, 32, 0, 104,27, 0, 64, 6, 163,141,144,4, 24, 72, 31, 41, 232,67, 216,2, 112,105,48, 0, 0, 0,
- 160,2, 188,67, 14, 76, 0, 0, 162,160,13, 194,5, 0, 8, 0, 0, 4, 0, 64, 0, 0, 2, 0, 0, 33, 142,0, 93, 170,64, 237,227,3, 0, 68, 237,164,128,194,86,
- 214,112,134,21, 98, 0, 4, 6, 34, 4, 0, 193,243,226,12, 102,183,68, 225,59, 192,140,129,140,192,1, 8, 208,96, 166,176,227,9, 0, 0, 0, 0, 128,64, 12, 0,
- 0, 32, 101,4, 96, 76, 73, 8, 44, 97, 128,69, 60, 48, 54, 0, 32, 4, 128,64, 0, 0, 6, 82, 32, 0, 136,137,12, 72, 0, 0, 0, 0, 0, 0, 0, 16, 8, 0, 16,
- 0, 0, 0, 0, 0, 0, 80, 0, 0, 128,160,43, 193,130,82, 209,16, 164,184,1, 53, 34, 129,226,21, 227,54, 54, 150,137,25, 100,23, 128,213,156,145,68, 10, 192,2,
- 35, 194,28, 2, 165,86, 35, 42, 14, 193,192,76, 3, 41, 1, 0, 32, 0, 28, 20, 16, 16, 72, 0, 224,4, 0, 64, 155,135,208,8, 64, 0, 0, 200,48, 99, 4, 2, 1,
- 68, 114,101,3, 44, 128,208,4, 144,226,0, 208,23, 163,58, 164,55, 146,194,129,16, 162,148,32, 42, 192,32, 32, 128,8, 3, 84, 20, 4, 40, 124,139,0, 156,0, 52,
+ 72, 8, 16, 52, 16, 0, 12, 16, 0, 0, 0, 64, 4, 0, 2, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 0, 0, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 25, 0, 128,0,
+ 0, 24, 24, 0, 0, 0, 0, 0, 1, 0, 0, 0, 64, 136,0, 0, 0, 0, 16, 192,2, 16, 0, 21, 1, 1, 0, 0, 0, 96, 113,243,22, 41, 0, 0, 0, 32, 128,0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 8, 32, 0, 0, 0, 2, 2, 0, 0, 0, 0, 128,64, 16, 0, 0, 132,83, 68, 16,
+ 64, 0, 0, 176,55, 32, 168,104,64, 6, 0, 0, 160,5, 16, 0, 0, 0, 2, 0, 16, 4, 67, 66, 128,32, 38, 9, 0, 116,0, 81, 244,249,100,26, 24, 222,32, 68, 52,
+ 2, 0, 0, 0, 0, 40, 129,132,4, 0, 0, 0, 0, 0, 32, 228,32, 12, 128,0, 84, 0, 0, 0, 198,0, 4, 0, 4, 0, 16, 6, 2, 0, 0, 0, 128,0, 132,65, 53,
+ 2, 6, 32, 72, 32, 62, 0, 128,50, 72, 1, 32, 16, 48, 2, 0, 32, 0, 104,27, 0, 64, 6, 163,141,144,4, 24, 72, 31, 41, 232,67, 216,2, 112,105,48, 0, 0, 0,
+ 160,2, 188,67, 14, 76, 0, 0, 162,160,13, 194,5, 0, 8, 0, 0, 4, 0, 64, 0, 0, 2, 0, 0, 33, 142,0, 93, 170,64, 237,227,3, 0, 68, 237,164,128,194,86,
+ 214,112,134,21, 98, 0, 4, 6, 34, 4, 0, 193,243,226,12, 102,183,68, 225,59, 192,140,129,140,192,1, 8, 208,96, 166,176,227,9, 0, 0, 0, 0, 128,64, 12, 0,
+ 0, 32, 101,4, 96, 76, 73, 8, 44, 97, 128,69, 60, 48, 54, 0, 32, 4, 128,64, 0, 0, 6, 82, 32, 0, 136,137,12, 72, 0, 0, 0, 0, 0, 0, 0, 16, 8, 0, 16,
+ 0, 0, 0, 0, 0, 0, 80, 0, 0, 128,160,43, 193,130,82, 209,16, 164,184,1, 53, 34, 129,226,21, 227,54, 54, 150,137,25, 100,23, 128,213,156,145,68, 10, 192,2,
+ 35, 194,28, 2, 165,86, 35, 42, 14, 193,192,76, 3, 41, 1, 0, 32, 0, 28, 20, 16, 16, 72, 0, 224,4, 0, 64, 155,135,208,8, 64, 0, 0, 200,48, 99, 4, 2, 1,
+ 68, 114,101,3, 44, 128,208,4, 144,226,0, 208,23, 163,58, 164,55, 146,194,129,16, 162,148,32, 42, 192,32, 32, 128,8, 3, 84, 20, 4, 40, 124,139,0, 156,0, 52,
160,136,90, 139,176,8, 8, 0, 48, 1, 1, 72, 82, 67, 224,13, 6, 17, 144,29, 193,1, 68, 44, 0, 13, 195,33, 10, 17, 34, 194,198,14, 168,3, 236,158,194,163,151,
- 195,116,24, 193,193,138,192,1, 132,136,19, 139,44, 167,226,7, 132,8, 136,34, 10, 200,0, 34, 224,51, 10, 128,111,128,32, 128,14, 8, 0, 4, 0, 128,80, 0, 0,
- 136,10, 246,64, 0, 173,0, 0, 8, 13, 79, 128,3, 1, 32, 8, 172,8, 32, 80, 8, 6, 166,4, 202,3, 120,0, 0, 64, 129,21, 70, 116,33, 0, 0, 0, 0, 96, 24,
- 129,64, 17, 134,0, 16, 0, 129,1, 16, 0, 4, 0, 0, 0, 0, 65, 4, 1, 192,131,17, 32, 0, 32, 0, 0, 32, 64, 96, 1, 0, 64, 0, 0, 128,33, 144,144,42, 77,
- 0, 44, 254,100,136,129,132,34, 3, 0, 10, 64, 0, 22, 64, 2, 0, 28, 184,48, 44, 69, 12, 64, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 36, 134,90, 59, 101,17, 66,
- 0, 38, 36, 11, 20, 0, 0, 0, 0, 0, 0, 4, 216,8, 222,47, 4, 64, 0, 0, 0, 70, 21, 1, 0, 16, 85, 5, 0, 75, 140,4, 160,32, 16, 65, 48, 186,41, 1, 24,
- 240,32, 41, 20, 13, 33, 0, 0, 0, 17, 0, 0, 0, 130,137,105,81, 6, 8, 112,236,31, 84, 2, 0, 0, 224,22, 61, 64, 48, 34, 81, 128,16, 5, 91, 61, 76, 0, 0,
+ 195,116,24, 193,193,138,192,1, 132,136,19, 139,44, 167,226,7, 132,8, 136,34, 10, 200,0, 34, 224,51, 10, 128,111,128,32, 128,14, 8, 0, 4, 0, 128,80, 0, 0,
+ 136,10, 246,64, 0, 173,0, 0, 8, 13, 79, 128,3, 1, 32, 8, 172,8, 32, 80, 8, 6, 166,4, 202,3, 120,0, 0, 64, 129,21, 70, 116,33, 0, 0, 0, 0, 96, 24,
+ 129,64, 17, 134,0, 16, 0, 129,1, 16, 0, 4, 0, 0, 0, 0, 65, 4, 1, 192,131,17, 32, 0, 32, 0, 0, 32, 64, 96, 1, 0, 64, 0, 0, 128,33, 144,144,42, 77,
+ 0, 44, 254,100,136,129,132,34, 3, 0, 10, 64, 0, 22, 64, 2, 0, 28, 184,48, 44, 69, 12, 64, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 36, 134,90, 59, 101,17, 66,
+ 0, 38, 36, 11, 20, 0, 0, 0, 0, 0, 0, 4, 216,8, 222,47, 4, 64, 0, 0, 0, 70, 21, 1, 0, 16, 85, 5, 0, 75, 140,4, 160,32, 16, 65, 48, 186,41, 1, 24,
+ 240,32, 41, 20, 13, 33, 0, 0, 0, 17, 0, 0, 0, 130,137,105,81, 6, 8, 112,236,31, 84, 2, 0, 0, 224,22, 61, 64, 48, 34, 81, 128,16, 5, 91, 61, 76, 0, 0,
0, 0, 64, 0, 2, 128,46, 96, 65, 0, 0, 0, 0, 2, 0, 0, 1, 89, 134,20, 10, 52, 32, 0, 0, 34, 2, 0, 96, 74, 244,7, 0, 0, 8, 0
};
static const unsigned int ChildLocs[185261] =
{
- 310, 321, 326, 340, 583, 585, 591, 597, 1, 2, 7, 3104, 3376, 3665, 3911, 4077, 4337, 4598, 4774, 4780, 4790, 8, 23, 48, 74, 86, 95,
- 107, 121, 133, 140, 145, 156, 164, 187, 194, 203, 225, 227, 238, 271, 283, 285, 292, 82737,302, 306, 84250,311, 312, 313, 314, 318, 315,
- 316, 317, 319, 320, 322, 323, 324, 325, 327, 333, 328, 329, 330, 331, 332, 334, 335, 336, 337, 338, 339, 341, 344, 344, 344, 344, 344,
- 344, 344, 346, 368, 391, 405, 411, 415, 429, 441, 451, 461, 463, 467, 474, 480, 494, 512, 526, 528, 532, 552, 564, 567, 569, 579, 342,
- 343, 345, 347, 349, 352, 358, 364, 366, 348, 317, 350, 351, 353, 357, 354, 355, 356, 359, 317, 360, 361, 362, 363, 317, 365, 367, 317,
- 317, 369, 374, 382, 383, 385, 386, 381, 370, 371, 317, 372, 373, 375, 381, 376, 377, 378, 379, 380, 384, 343, 387, 388, 389, 390, 392,
- 394, 397, 398, 402, 393, 395, 396, 399, 400, 401, 403, 317, 404, 406, 407, 409, 408, 317, 390, 410, 363, 412, 317, 413, 414, 416, 420,
- 422, 423, 428, 417, 419, 418, 421, 343, 317, 381, 317, 351, 424, 427, 425, 426, 430, 434, 435, 438, 431, 317, 432, 433, 317, 436, 356,
- 437, 439, 440, 381, 363, 442, 444, 445, 449, 450, 443, 356, 343, 356, 343, 317, 390, 446, 447, 448, 370, 343, 317, 393, 317, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 384, 462, 412, 464, 466, 465, 468, 469, 470, 317, 473, 370, 356, 381, 343, 471, 343, 372, 472, 317,
- 466, 433, 382, 371, 356, 381, 343, 317, 475, 476, 477, 400, 401, 343, 317, 349, 478, 343, 381, 419, 479, 481, 483, 491, 492, 482, 459,
- 432, 484, 485, 486, 487, 488, 489, 490, 350, 317, 317, 493, 317, 317, 433, 390, 495, 499, 500, 501, 502, 419, 505, 350, 496, 497, 498,
- 317, 490, 317, 370, 503, 504, 317, 506, 507, 508, 509, 510, 511, 513, 516, 517, 522, 524, 514, 515, 518, 317, 381, 350, 519, 520, 521,
- 523, 525, 343, 527, 529, 530, 531, 380, 317, 371, 439, 433, 533, 534, 537, 343, 540, 543, 544, 546, 547, 465, 535, 536, 538, 396, 439,
- 539, 541, 542, 317, 498, 381, 343, 317, 545, 548, 549, 317, 343, 550, 551, 553, 554, 555, 559, 560, 561, 332, 381, 556, 557, 558, 356,
- 317, 562, 343, 563, 565, 566, 568, 570, 571, 572, 575, 577, 317, 317, 350, 380, 381, 381, 573, 574, 317, 317, 576, 390, 501, 578, 580,
- 581, 390, 317, 582, 382, 317, 584, 586, 342, 587, 588, 351, 343, 589, 590, 592, 593, 594, 595, 596, 598, 599, 426, 606, 609, 539, 613,
- 600, 601, 602, 603, 604, 605, 607, 608, 610, 612, 608, 611, 614, 317, 345, 615, 622, 676, 782, 845, 856, 871, 884, 902, 917, 938, 959,
- 966, 967, 972, 983, 988, 994, 999, 1001, 616, 617, 618, 619, 621, 620, 623, 650, 654, 621, 655, 656, 657, 665, 666, 674, 624, 636, 317,
- 317, 317, 317, 638, 317, 643, 625, 317, 317, 631, 634, 626, 317, 317, 317, 317, 317, 317, 317, 317, 370, 627, 317, 317, 317, 317, 317,
- 628, 317, 317, 629, 317, 630, 632, 633, 635, 637, 639, 640, 641, 642, 644, 646, 645, 647, 648, 649, 317, 620, 651, 652, 653, 317, 658,
- 660, 620, 662, 663, 659, 661, 664, 317, 667, 670, 668, 669, 621, 671, 672, 673, 675, 677, 719, 725, 742, 749, 765, 768, 774, 678, 687,
- 697, 701, 705, 708, 711, 715, 679, 685, 621, 356, 680, 621, 621, 621, 681, 682, 683, 684, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- 317, 686, 681, 681, 688, 695, 689, 690, 317, 691, 692, 693, 694, 696, 698, 699, 700, 702, 703, 704, 706, 707, 694, 621, 709, 710, 712,
- 713, 714, 427, 317, 716, 717, 718, 720, 721, 724, 722, 723, 726, 741, 727, 733, 728, 729, 730, 731, 732, 734, 737, 735, 736, 738, 739,
- 740, 743, 744, 746, 745, 747, 748, 750, 751, 757, 759, 752, 753, 754, 755, 756, 758, 760, 762, 761, 317, 756, 763, 764, 766, 767, 769,
- 770, 771, 772, 773, 775, 776, 777, 778, 779, 780, 781, 783, 825, 834, 836, 843, 784, 788, 793, 798, 802, 806, 811, 816, 820, 785, 786,
- 787, 682, 317, 789, 790, 791, 792, 621, 794, 795, 796, 797, 799, 800, 801, 682, 803, 804, 805, 682, 807, 808, 809, 810, 812, 813, 814,
- 815, 817, 818, 819, 810, 821, 822, 823, 824, 826, 831, 827, 828, 829, 830, 832, 833, 835, 837, 840, 838, 839, 841, 842, 844, 846, 852,
- 847, 848, 851, 709, 317, 849, 850, 694, 637, 853, 854, 855, 857, 621, 863, 867, 868, 858, 861, 649, 649, 859, 860, 649, 637, 862, 864,
- 635, 865, 866, 869, 870, 872, 873, 877, 874, 317, 875, 876, 878, 879, 880, 881, 882, 883, 885, 890, 893, 898, 886, 317, 887, 317, 888,
- 889, 891, 892, 894, 896, 895, 897, 899, 900, 901, 903, 908, 909, 913, 913, 904, 907, 317, 905, 317, 906, 673, 673, 910, 911, 912, 914,
- 915, 916, 918, 925, 929, 935, 937, 919, 907, 923, 920, 921, 922, 317, 924, 708, 926, 927, 928, 930, 932, 931, 933, 934, 936, 939, 948,
- 940, 942, 946, 941, 943, 833, 944, 945, 947, 949, 950, 696, 958, 951, 957, 952, 953, 954, 955, 956, 960, 961, 962, 963, 964, 965, 968,
- 969, 970, 971, 973, 979, 974, 975, 976, 977, 978, 980, 981, 982, 984, 345, 985, 986, 987, 989, 990, 991, 992, 993, 995, 996, 997, 998,
- 1000, 1002, 1003, 1004, 1005, 1008, 1010, 1012, 1014, 1081, 3, 1555, 1634, 1698, 1768, 1781, 1813, 1839, 1963, 2030, 2082, 2129, 2153, 2172, 2200, 2228, 2253,
- 2262, 2294, 2302, 2318, 2358, 2370, 2375, 2421, 2504, 2523, 2578, 2598, 2606, 2614, 2636, 2650, 2657, 1006, 1007, 1009, 427, 1011, 1011, 412, 1013, 339, 1015,
- 1034, 1045, 1061, 1062, 1066, 1067, 545, 1069, 1071, 1072, 427, 339, 966, 1075, 427, 427, 1079, 390, 1016, 1019, 1021, 1024, 1025, 1026, 317, 1029, 1025,
- 317, 1030, 317, 390, 1031, 1017, 317, 390, 1018, 317, 781, 706, 1020, 1022, 1023, 621, 1027, 1028, 1027, 317, 1032, 1033, 1035, 1040, 1043, 317, 317,
- 381, 1036, 842, 936, 1037, 1039, 637, 707, 1038, 1041, 637, 1042, 1044, 605, 1046, 317, 317, 317, 1053, 356, 1047, 1048, 740, 1049, 317, 317, 1050,
- 1051, 1052, 1054, 1055, 1056, 1057, 1058, 1060, 1059, 317, 356, 1063, 390, 1064, 1065, 427, 390, 1068, 390, 694, 356, 1070, 648, 390, 1073, 1074, 1076,
- 1077, 1078, 1080, 1082, 1097, 1139, 1163, 1170, 1172, 1174, 1175, 1176, 1181, 1186, 1187, 1190, 1194, 511, 427, 1195, 390, 1083, 1085, 317, 1088, 1090, 1093,
- 1095, 317, 317, 390, 1084, 1086, 1087, 320, 1089, 1091, 1092, 673, 621, 1094, 1096, 1098, 1101, 1118, 1132, 1131, 672, 1133, 1134, 1136, 317, 390, 1137,
- 1099, 1100, 1102, 1111, 1114, 631, 634, 1116, 1103, 1110, 1113, 317, 317, 1104, 317, 1109, 317, 317, 317, 1105, 317, 317, 317, 1106, 317, 1107, 1108,
- 1112, 1115, 1117, 1119, 1123, 1120, 710, 1121, 1122, 1124, 1125, 317, 317, 1126, 1127, 620, 1128, 317, 1129, 1130, 928, 490, 316, 1135, 1138, 317, 1140,
- 1152, 317, 1161, 390, 1141, 1144, 1150, 1142, 1143, 1145, 621, 637, 1146, 740, 1109, 1059, 1147, 1148, 317, 1149, 1151, 1153, 1156, 1154, 1155, 1157, 1158,
- 1159, 1160, 1162, 1164, 1169, 390, 637, 320, 1165, 1166, 1167, 1168, 637, 694, 1171, 390, 637, 694, 673, 1173, 390, 637, 633, 928, 656, 390, 928,
- 390, 1177, 1178, 390, 637, 637, 1179, 1180, 1182, 1185, 390, 1183, 1184, 637, 740, 694, 928, 317, 1188, 1189, 1191, 1192, 1193, 1196, 637, 1197, 1198,
- 1206, 1231, 4, 1488, 1500, 1505, 1509, 1512, 1513, 1514, 1520, 1075, 1523, 1527, 1532, 1533, 1550, 390, 1199, 1200, 1201, 317, 1200, 1205, 966, 427, 390,
- 1202, 1203, 1204, 1207, 1210, 1213, 1221, 1226, 317, 1229, 381, 1208, 1209, 1211, 1212, 1214, 1217, 490, 1065, 1215, 1216, 740, 621, 1218, 1220, 1219, 1222,
- 866, 1223, 1224, 1225, 1227, 1228, 1230, 1232, 1235, 317, 317, 356, 1233, 1234, 1236, 1237, 739, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1256, 1263,
- 5, 1398, 1406, 1417, 1421, 1422, 1425, 1431, 1435, 1436, 1443, 1445, 1452, 1454, 1455, 1457, 958, 1461, 1477, 1478, 1479, 1480, 1483, 1484, 1486, 621, 949,
- 649, 1246, 1247, 317, 1248, 1250, 1251, 736, 1252, 317, 317, 1253, 317, 317, 317, 1249, 317, 1254, 1255, 1257, 1258, 1261, 317, 651, 317, 1259, 317,
- 1260, 1262, 317, 736, 1264, 651, 1277, 633, 1265, 1018, 1266, 1268, 317, 1272, 317, 317, 317, 1273, 317, 317, 317, 1267, 1269, 1270, 1271, 1108, 317,
- 1274, 1275, 1276, 1278, 1279, 1282, 1283, 1284, 6, 1374, 1375, 1377, 1378, 1380, 1384, 1386, 1396, 1394, 317, 1028, 1280, 1281, 317, 1065, 620, 317, 1160,
- 1000, 1285, 317, 317, 1286, 1287, 317, 1288, 1290, 1293, 1294, 1296, 1299, 1352, 317, 1354, 1355, 317, 317, 317, 317, 317, 317, 317, 317, 317, 1361,
- 317, 317, 1362, 1275, 1347, 1369, 317, 317, 317, 1371, 1289, 1291, 1292, 317, 620, 739, 1295, 1297, 317, 1298, 1018, 1300, 619, 936, 1301, 1303, 1306,
- 1338, 1339, 317, 1340, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 1341, 1346, 1347, 317, 317, 317, 317, 317,
- 1348, 1302, 317, 1304, 317, 1305, 317, 317, 619, 1307, 1310, 1025, 1109, 317, 317, 317, 317, 317, 317, 1333, 317, 317, 317, 317, 317, 317, 317,
- 1308, 1309, 317, 317, 619, 1311, 1313, 317, 317, 317, 317, 317, 317, 1332, 317, 317, 317, 1312, 317, 317, 1314, 1322, 619, 1317, 1323, 1324, 317,
- 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 1326, 317, 317, 317, 317, 317, 317, 317, 1330, 1315, 1316, 317, 317, 317,
- 317, 317, 317, 1318, 317, 317, 1321, 317, 1316, 1108, 1319, 1320, 1160, 1267, 1109, 339, 1325, 1108, 1059, 1327, 1328, 1329, 1331, 317, 1334, 1335, 1336,
- 1337, 1155, 317, 1109, 1331, 1325, 1108, 1059, 1342, 1343, 1344, 1345, 351, 317, 1349, 1100, 1350, 1351, 317, 1353, 1205, 317, 317, 1356, 1359, 1357, 1358,
- 1360, 1363, 1059, 1365, 1364, 1366, 1367, 1368, 317, 1370, 1372, 1373, 1376, 1379, 317, 1381, 1382, 1383, 1385, 1108, 317, 1387, 1388, 1389, 1390, 1345, 1391,
- 1392, 1393, 1395, 1276, 1397, 740, 1399, 1401, 1404, 320, 1400, 317, 1402, 317, 1403, 317, 1405, 317, 740, 1407, 694, 1412, 1413, 1408, 1409, 1028, 317,
- 317, 317, 1410, 1411, 317, 649, 637, 1414, 317, 1415, 1416, 317, 1271, 673, 1418, 1419, 1420, 317, 320, 649, 621, 866, 651, 649, 1423, 1424, 949,
- 936, 866, 490, 1426, 1428, 1429, 1427, 317, 949, 317, 949, 1430, 936, 367, 1432, 1433, 1434, 363, 382, 381, 1437, 1438, 1439, 1440, 1441, 1442, 1444,
- 384, 1446, 1447, 1448, 1449, 1450, 1451, 367, 1453, 381, 356, 428, 1456, 1458, 427, 1460, 1459, 317, 949, 936, 1462, 1464, 1465, 1463, 949, 315, 949,
- 1466, 1468, 1467, 1266, 936, 1469, 1471, 945, 1475, 1470, 1472, 1473, 1474, 1476, 317, 356, 351, 345, 316, 1481, 1482, 949, 1243, 351, 605, 316, 1485,
- 320, 317, 1487, 1108, 1489, 1490, 1493, 1497, 767, 390, 1491, 740, 1492, 694, 651, 1494, 1495, 1496, 1498, 1499, 620, 1501, 1502, 936, 1503, 1504, 339,
- 390, 427, 649, 633, 621, 1506, 390, 1507, 1508, 1087, 1510, 390, 694, 1511, 620, 332, 390, 1220, 390, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1524,
- 1525, 1526, 1528, 1529, 1530, 1531, 384, 1230, 317, 1534, 1538, 1535, 1536, 1537, 1539, 1541, 1546, 1549, 1540, 1542, 1543, 1544, 1545, 1547, 1548, 1551, 1554,
- 1552, 1553, 1060, 511, 1556, 1561, 1566, 1581, 1589, 1598, 1622, 1630, 1633, 545, 390, 907, 1199, 1557, 708, 317, 317, 317, 390, 1558, 1559, 1560, 1093,
- 1562, 1564, 1565, 381, 1563, 1087, 740, 842, 1132, 1567, 1577, 1042, 1578, 356, 1568, 1572, 1575, 1569, 1570, 1571, 1573, 1574, 1576, 1579, 1580, 1582, 1583,
- 1586, 356, 651, 633, 1584, 1585, 1587, 1588, 1501, 1590, 1595, 390, 320, 1591, 1592, 724, 317, 1593, 317, 317, 317, 1594, 1596, 1597, 1599, 1577, 1602,
- 1603, 1604, 390, 1600, 1601, 1605, 1607, 1609, 633, 1611, 1606, 1608, 1610, 317, 633, 317, 1612, 1614, 1616, 317, 1619, 1620, 1621, 317, 317, 1613, 1059,
- 1615, 1617, 1618, 1623, 1625, 1629, 390, 1624, 1626, 1628, 1627, 621, 651, 1631, 1632, 390, 694, 740, 620, 390, 1635, 1641, 1649, 1654, 1658, 1659, 1663,
- 1664, 1684, 1687, 1691, 390, 1692, 1694, 1636, 649, 649, 1637, 1640, 390, 920, 317, 1638, 1639, 735, 317, 708, 1642, 1645, 1648, 381, 1643, 1644, 694,
- 1646, 1647, 1650, 1653, 356, 621, 1651, 1652, 1655, 1656, 1132, 356, 621, 317, 1657, 620, 1115, 390, 1660, 1661, 1662, 390, 756, 390, 1655, 949, 1665,
- 1669, 1672, 1673, 1674, 1681, 390, 1666, 1667, 1668, 1670, 1671, 756, 661, 1675, 1678, 1676, 317, 1677, 661, 1679, 1680, 317, 1682, 1683, 345, 1685, 390,
- 1686, 649, 345, 1688, 1689, 936, 390, 1690, 1693, 1695, 1696, 1697, 1699, 1705, 1712, 1719, 1723, 1729, 1733, 1734, 1736, 1740, 966, 1764, 390, 1700, 1199,
- 1093, 1701, 1704, 317, 390, 1702, 317, 1703, 637, 621, 708, 861, 620, 1706, 1709, 381, 1707, 1708, 1710, 1711, 345, 1713, 1716, 356, 1714, 1715, 1717,
- 1718, 345, 1720, 1577, 1721, 844, 1585, 1722, 356, 345, 1724, 390, 1726, 1725, 1727, 1728, 345, 1730, 1131, 427, 390, 1731, 1732, 345, 390, 345, 1722,
- 1735, 390, 345, 1737, 390, 1738, 1739, 1741, 949, 661, 1742, 1747, 1748, 1750, 1758, 1761, 390, 621, 1735, 317, 1743, 1744, 317, 949, 724, 1745, 317,
- 1746, 317, 317, 694, 317, 1749, 1160, 673, 1751, 633, 1752, 1018, 1753, 1754, 1755, 317, 1746, 637, 317, 317, 317, 317, 710, 649, 1756, 317, 1757,
- 320, 1759, 1160, 1760, 1762, 651, 1763, 1765, 1766, 1767, 1769, 1770, 1771, 1772, 1773, 1774, 1776, 1777, 1733, 1733, 1778, 427, 390, 345, 715, 390, 1199,
- 1228, 381, 345, 1220, 356, 345, 356, 345, 743, 1212, 390, 345, 1775, 390, 345, 1087, 390, 345, 1234, 390, 1779, 1780, 1782, 1788, 1797, 1772, 1733,
- 1733, 1803, 1805, 1810, 1811, 390, 345, 1783, 1200, 1200, 1784, 649, 390, 1027, 367, 317, 1785, 1786, 1787, 1789, 1792, 1796, 381, 1790, 1791, 1793, 1794,
- 1795, 345, 773, 1798, 1800, 1801, 356, 1799, 1802, 345, 1804, 390, 345, 1806, 317, 672, 390, 1807, 1808, 1809, 345, 620, 390, 345, 1812, 390, 649,
- 740, 1814, 1816, 1818, 1823, 1825, 1733, 1828, 1831, 1832, 1733, 1835, 390, 345, 1199, 1815, 1093, 966, 390, 695, 317, 345, 1817, 381, 345, 1819, 1821,
- 1489, 356, 1820, 1822, 345, 1824, 356, 345, 1826, 390, 1827, 345, 1829, 390, 1830, 345, 928, 842, 390, 345, 1833, 390, 1834, 1836, 1837, 1838, 1840,
- 1841, 1844, 1854, 1867, 1868, 1872, 1875, 1890, 1922, 1953, 1955, 1960, 345, 649, 1199, 317, 390, 1842, 1843, 381, 345, 1845, 1848, 356, 1846, 1847, 1849,
- 1850, 1851, 1852, 1853, 345, 1855, 1861, 1865, 940, 356, 1856, 1857, 1858, 1859, 1860, 1862, 1864, 1863, 1866, 345, 940, 390, 1655, 1869, 1870, 1871, 345,
- 620, 620, 620, 1873, 756, 390, 621, 621, 1874, 1876, 1877, 1879, 1882, 669, 1884, 1886, 620, 1888, 781, 390, 621, 621, 317, 681, 1878, 621, 1880,
- 1881, 621, 1883, 1885, 1883, 621, 1887, 1889, 1891, 1895, 1898, 1901, 1903, 1904, 1908, 1916, 1918, 1920, 621, 1892, 621, 317, 1893, 1894, 621, 1896, 1897,
- 1899, 1896, 1900, 1902, 1094, 1900, 621, 1096, 1900, 1902, 1905, 621, 1900, 317, 1906, 1907, 1909, 1027, 621, 1900, 1910, 1914, 1911, 1912, 1913, 1915, 1917,
- 1900, 1919, 621, 1900, 621, 1921, 621, 1900, 339, 317, 1722, 1923, 1925, 1927, 1930, 1933, 1938, 1944, 1951, 1952, 390, 1924, 621, 621, 317, 651, 1926,
- 621, 1928, 1638, 1929, 649, 1931, 1638, 1932, 1934, 621, 1935, 621, 1638, 1936, 1937, 1939, 1940, 1638, 1941, 1942, 1943, 1945, 621, 1638, 489, 1946, 1947,
- 1948, 1949, 1950, 619, 351, 1954, 1956, 1957, 1958, 1959, 1961, 1962, 1964, 1984, 1988, 1993, 1995, 1997, 2002, 2005, 515, 2013, 2016, 2025, 1965, 1972, 1977,
- 1966, 1967, 1968, 1969, 1970, 1971, 1973, 1974, 1975, 1976, 1978, 1979, 1980, 1981, 1982, 1983, 1985, 1986, 1987, 1989, 317, 1990, 1991, 1992, 1994, 476, 551,
- 1996, 1998, 2000, 1999, 2001, 2003, 350, 2004, 2006, 2010, 2007, 2008, 2009, 2011, 2012, 2014, 2015, 2017, 2021, 2023, 2018, 2019, 2020, 2022, 1962, 2024, 2026,
- 2027, 2028, 2029, 2031, 2040, 2045, 2048, 2061, 2064, 2068, 2072, 370, 2032, 2021, 2033, 2034, 2037, 2038, 450, 476, 350, 2035, 2036, 2039, 550, 2041, 2042,
- 2043, 2044, 2046, 351, 317, 2047, 2049, 2055, 2057, 2059, 2050, 388, 2052, 2054, 2051, 384, 382, 2053, 2056, 404, 317, 2058, 390, 2060, 2062, 2063, 343,
- 371, 349, 2065, 2067, 2066, 350, 350, 2069, 362, 2071, 2070, 596, 2073, 2074, 2075, 349, 2079, 2076, 2077, 2078, 2080, 2081, 2083, 2089, 2093, 2095, 2106,
- 2109, 2120, 2084, 2085, 2088, 2086, 501, 2087, 370, 2058, 2090, 2091, 2092, 2094, 2096, 2099, 2101, 2103, 514, 2097, 2098, 345, 343, 2100, 448, 349, 370,
- 2102, 2104, 2105, 2107, 2108, 2110, 371, 2111, 2112, 2114, 2115, 2118, 2113, 2058, 350, 2116, 2117, 2119, 2121, 2122, 2125, 2127, 1453, 370, 2123, 2124, 2126,
- 2128, 2130, 2136, 2139, 2140, 2144, 2149, 2074, 2131, 2132, 2133, 2135, 382, 350, 2134, 2137, 2138, 317, 378, 2141, 371, 2143, 2142, 662, 2145, 2147, 2146,
- 565, 2148, 2150, 541, 2151, 2152, 2154, 2157, 2158, 2162, 2164, 2169, 2155, 2156, 2159, 2160, 2161, 2163, 2165, 2166, 2167, 2168, 2170, 2171, 2173, 2175, 2179,
- 2182, 2185, 2189, 2192, 2197, 545, 2174, 566, 2176, 2177, 2178, 2180, 2181, 343, 2183, 2184, 2186, 2188, 2187, 2188, 2190, 2191, 2193, 2194, 2196, 317, 2195,
- 1230, 439, 2198, 2199, 2201, 2209, 2213, 2217, 2220, 2223, 2226, 2202, 2204, 2207, 2203, 2205, 2206, 2208, 2210, 2212, 2211, 2214, 2215, 2216, 2218, 2219, 2033,
- 2221, 2222, 439, 501, 2224, 2225, 2227, 2229, 2234, 2237, 2241, 2245, 2248, 2152, 443, 2230, 2232, 2231, 2022, 370, 2146, 363, 2233, 2071, 2142, 2235, 2236,
- 2238, 2239, 2240, 2242, 350, 2004, 2243, 2244, 393, 2246, 2247, 350, 2249, 2250, 2251, 2252, 2254, 2255, 2259, 388, 2256, 2257, 2258, 2260, 2261, 2263, 2267,
- 2273, 2281, 2285, 2292, 2264, 2265, 2266, 2268, 343, 596, 2270, 2269, 343, 404, 2271, 2272, 2274, 2276, 448, 2278, 2275, 2277, 2279, 345, 2280, 2282, 2283,
- 2284, 2286, 596, 2288, 2289, 2287, 370, 404, 2290, 2291, 2293, 2027, 2295, 2296, 2297, 2299, 2301, 2298, 382, 397, 2300, 2303, 2307, 2311, 2312, 2313, 2316,
- 2304, 2305, 2306, 2308, 2309, 2310, 471, 2004, 372, 2070, 2314, 2315, 1347, 589, 2317, 2319, 2331, 2337, 2342, 2344, 2352, 2244, 2320, 2323, 2324, 349, 2325,
- 2329, 2058, 339, 2321, 2322, 2272, 1020, 2326, 2327, 2328, 2330, 2332, 2334, 2335, 2333, 2336, 1020, 2338, 343, 2340, 2339, 2022, 2134, 428, 2341, 351, 404,
- 2343, 418, 2345, 2347, 2348, 419, 2349, 370, 2022, 349, 2346, 2035, 317, 2058, 343, 2350, 343, 2351, 2353, 2354, 2356, 2355, 2357, 2359, 2361, 2363, 2365,
- 2367, 2360, 2362, 1962, 2364, 2366, 2368, 2369, 2371, 2372, 2373, 2374, 2376, 2378, 2392, 2397, 2400, 2404, 2407, 2411, 2414, 2417, 2377, 2379, 2380, 2382, 2384,
- 2390, 2381, 2383, 350, 596, 2385, 2386, 2388, 2387, 2389, 2391, 2393, 2395, 465, 350, 2394, 385, 2396, 2398, 2399, 2401, 2403, 748, 2402, 2405, 2406, 2408,
- 2409, 350, 2410, 2412, 514, 2413, 2415, 2416, 2418, 515, 2420, 2419, 2422, 2425, 2440, 2446, 2493, 2494, 2423, 2424, 739, 2426, 2427, 2432, 2433, 2428, 2429,
- 2430, 2431, 2434, 2435, 2436, 2437, 2438, 2439, 2441, 2442, 2443, 2444, 2445, 2447, 2457, 313, 2460, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2458,
- 2459, 2461, 2463, 2465, 2475, 314, 2477, 2478, 2481, 2492, 2462, 2464, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2476, 2479, 2480, 1373, 2482, 2483,
- 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2495, 2498, 2496, 2497, 317, 2499, 2500, 2501, 317, 317, 317, 2502, 2503, 2505, 2513, 2514, 2516, 2522, 2506,
- 2507, 2508, 2512, 2509, 2511, 2510, 2515, 1998, 2517, 2519, 2518, 381, 317, 317, 2520, 2521, 596, 397, 2524, 2529, 2534, 2538, 2544, 2548, 2552, 2553, 2554,
- 2556, 2559, 2562, 2569, 2525, 2526, 2527, 2528, 2530, 418, 2531, 2533, 2532, 2535, 349, 2536, 381, 2537, 2539, 2540, 2542, 2541, 1428, 2543, 2545, 2546, 2547,
- 2402, 371, 2549, 541, 2550, 2551, 2405, 1915, 2555, 2557, 2558, 2560, 2561, 566, 2317, 2317, 498, 2074, 2563, 2565, 2567, 2564, 1588, 565, 2298, 2381, 2566,
- 343, 2568, 2570, 565, 2152, 2573, 2574, 2577, 2571, 2572, 2575, 2576, 2579, 2580, 2582, 2587, 2592, 2594, 2596, 2581, 381, 348, 2583, 2585, 2586, 362, 2584,
- 2588, 2591, 343, 345, 2589, 2590, 2510, 350, 2593, 2595, 384, 2597, 332, 373, 2599, 2600, 2602, 2420, 2604, 2601, 2603, 2605, 2607, 2610, 2611, 2613, 350,
- 2608, 2609, 2612, 511, 2615, 2625, 2627, 2628, 2634, 2635, 2616, 2619, 2622, 2617, 2618, 2620, 2621, 2623, 2624, 2626, 2629, 2633, 550, 2630, 2632, 2631, 350,
- 2067, 350, 2637, 2641, 2642, 2110, 2646, 2638, 2639, 2640, 2643, 2644, 2645, 2647, 2648, 2649, 2651, 2655, 2656, 2652, 2653, 2654, 2658, 2664, 2668, 2659, 2426,
- 2660, 2661, 2662, 2663, 2665, 2666, 2667, 2669, 2670, 2671, 1008, 2672, 2674, 2675, 2720, 2762, 2810, 2865, 2903, 2932, 2956, 2971, 2986, 2998, 3000, 3019, 3026,
- 3032, 3033, 3038, 3042, 3048, 3053, 3059, 3061, 3064, 3068, 3069, 3071, 3077, 3080, 3082, 3099, 380, 2673, 412, 439, 545, 1013, 2676, 2699, 2709, 2711, 2712,
- 2714, 545, 545, 966, 427, 2716, 390, 2677, 2681, 2684, 2685, 2686, 2690, 2690, 2691, 2695, 317, 317, 390, 2678, 317, 2679, 317, 2680, 2682, 2683, 2687,
- 1791, 2688, 2689, 2689, 924, 317, 620, 2692, 2693, 2694, 2696, 2697, 2698, 637, 345, 708, 2700, 2701, 835, 2706, 381, 2702, 2703, 2704, 2705, 2707, 2708,
- 2710, 2713, 2715, 390, 2717, 2718, 2719, 2721, 2727, 2734, 2744, 2750, 2756, 2757, 2759, 2761, 381, 1095, 2722, 858, 2725, 2723, 2724, 1560, 621, 2726, 2728,
- 2729, 709, 343, 2730, 2732, 2733, 2731, 2735, 2739, 949, 2742, 2743, 2736, 2737, 2738, 2740, 2741, 317, 2462, 767, 866, 2745, 2748, 2746, 2747, 2749, 2751,
- 2752, 2753, 2754, 2755, 2758, 2760, 2476, 2763, 2773, 2777, 2783, 2790, 2794, 2796, 2797, 2801, 356, 2802, 2807, 1200, 2764, 2768, 1557, 2771, 708, 2765, 2766,
- 2767, 2769, 2770, 2772, 2774, 2426, 2775, 2776, 2778, 1132, 1115, 1131, 1087, 672, 648, 632, 2779, 2780, 2782, 1114, 647, 317, 2781, 317, 2784, 2787, 2788,
- 637, 320, 2785, 740, 694, 2786, 2789, 739, 2791, 320, 740, 2792, 649, 2793, 2795, 390, 1112, 2798, 2799, 2800, 2803, 2804, 2805, 2806, 2808, 2809, 2811,
- 2820, 2830, 2833, 2835, 2837, 2838, 2841, 2846, 2848, 356, 2850, 2853, 2812, 708, 2813, 2816, 2818, 1027, 2814, 2815, 2817, 2819, 866, 2821, 2822, 2823, 2824,
- 2825, 2826, 2827, 2828, 2829, 1112, 2831, 2742, 2832, 949, 2834, 673, 637, 1732, 2836, 651, 637, 1131, 736, 928, 2839, 2840, 2842, 2843, 2844, 2845, 2847,
- 2849, 2851, 2852, 2854, 2857, 2855, 2856, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2866, 2870, 843, 2871, 2875, 2879, 2889, 2890, 2896, 2897, 2899, 2900, 390,
- 673, 2867, 649, 708, 1094, 2868, 2869, 1095, 1131, 1112, 2872, 2873, 2874, 2876, 2877, 2878, 1603, 2880, 2888, 2881, 2884, 1011, 1613, 621, 317, 2882, 2883,
- 2885, 2886, 2887, 1731, 2891, 2893, 2892, 1011, 2894, 2895, 2898, 2901, 2902, 2904, 2911, 2912, 2917, 2918, 2921, 2923, 2929, 966, 427, 390, 2905, 2906, 1199,
- 1200, 861, 1200, 2909, 339, 390, 317, 490, 356, 2907, 2908, 1027, 2910, 2913, 2914, 1648, 2915, 2916, 2919, 2920, 2742, 1131, 2922, 2066, 2924, 1451, 2928,
- 866, 1673, 1746, 661, 2925, 2926, 2927, 1745, 317, 673, 724, 633, 2930, 2931, 2933, 2941, 2943, 2949, 2950, 2954, 390, 649, 1200, 649, 649, 2934, 2938,
- 1027, 2935, 2936, 2937, 2939, 2940, 2942, 2944, 2945, 2946, 2947, 2948, 916, 2951, 2952, 2953, 2955, 2957, 2961, 2963, 1083, 2964, 2966, 2968, 390, 1200, 2958,
- 2959, 2960, 2962, 2965, 2967, 2969, 2970, 2972, 2976, 2977, 2979, 1690, 2980, 2984, 390, 1199, 2973, 1199, 2974, 2975, 2978, 2981, 2982, 2983, 2985, 2987, 2989,
- 2991, 2995, 390, 1093, 1011, 649, 649, 1095, 2988, 2990, 2992, 2993, 2994, 2996, 2997, 2999, 3001, 3004, 3008, 3010, 3012, 3017, 3002, 3003, 3005, 3006, 3007,
- 3009, 2033, 3011, 590, 2054, 1720, 3013, 3014, 3015, 3016, 3018, 3020, 3024, 3021, 3022, 3023, 3025, 382, 3027, 3028, 3029, 3030, 3031, 3034, 3036, 3035, 3037,
- 2071, 3039, 3040, 3041, 3043, 3045, 3044, 3046, 3047, 343, 317, 589, 3049, 3050, 3051, 3052, 3054, 3058, 3055, 3056, 3057, 3060, 2036, 2309, 3062, 3063, 3065,
- 3066, 317, 637, 3067, 339, 345, 3070, 3072, 3075, 3076, 3073, 3074, 2416, 590, 664, 3078, 3079, 3081, 3083, 3087, 3091, 3095, 3084, 3085, 3086, 3088, 3089,
- 3090, 3092, 3093, 3094, 3096, 2461, 2475, 2473, 3097, 318, 2492, 3098, 3100, 3101, 3102, 3103, 3105, 3126, 3154, 3181, 3214, 3232, 3240, 3274, 3280, 3306, 3310,
- 1031, 3312, 3315, 3317, 3324, 3330, 3331, 3335, 3339, 3343, 3345, 3352, 3362, 1230, 3369, 3106, 412, 3112, 3113, 3117, 545, 3120, 966, 427, 3121, 390, 3107,
- 317, 1024, 3108, 3109, 317, 317, 317, 317, 351, 317, 317, 390, 3110, 621, 381, 317, 3111, 3114, 390, 3115, 3116, 3118, 390, 3119, 390, 1020, 3122,
- 3123, 3124, 3125, 3127, 3130, 3132, 3140, 3143, 3149, 3152, 545, 381, 1199, 3128, 3129, 842, 3131, 3133, 348, 3134, 3135, 3136, 3137, 3138, 3139, 1132, 3141,
- 3142, 3144, 390, 3145, 3146, 3147, 3148, 317, 3150, 3151, 842, 3153, 2942, 756, 390, 545, 3155, 3168, 3169, 3171, 545, 3172, 356, 949, 3156, 3159, 2073,
- 1276, 3166, 3157, 736, 3158, 3160, 3163, 3161, 3162, 317, 3164, 317, 3165, 3167, 3170, 3173, 3180, 862, 3174, 3175, 3176, 3177, 317, 3178, 3179, 3182, 3183,
- 3185, 3196, 3199, 3203, 3206, 3207, 3208, 3210, 3213, 3184, 637, 651, 620, 3186, 3189, 3191, 1131, 3193, 672, 648, 632, 2782, 3187, 317, 3188, 2779, 3190,
- 1114, 3192, 3194, 3195, 3197, 651, 3198, 3200, 3201, 673, 3202, 3204, 3205, 651, 1353, 3209, 317, 3211, 3212, 655, 3215, 3219, 3221, 3225, 3228, 3229, 390,
- 3216, 3218, 3217, 3220, 949, 3222, 1234, 3223, 3224, 3226, 3227, 3230, 3231, 3233, 545, 545, 3234, 3237, 966, 427, 390, 1722, 1735, 3235, 1721, 3236, 1735,
- 3238, 3239, 3241, 3244, 3252, 3253, 3254, 3257, 545, 3259, 3263, 356, 1033, 390, 966, 3242, 3243, 3245, 3248, 3246, 3247, 633, 3249, 3251, 3250, 1660, 1519,
- 619, 651, 3255, 3256, 1519, 3258, 3260, 3261, 3262, 1451, 3264, 694, 767, 3268, 3273, 390, 3265, 3266, 3267, 3269, 3270, 3271, 3272, 651, 673, 3275, 3278,
- 427, 390, 2742, 3276, 3277, 3279, 3281, 3285, 3287, 3288, 3296, 356, 3300, 390, 3282, 3283, 3284, 3286, 1660, 661, 3289, 3293, 3290, 3291, 3292, 3294, 3295,
- 3297, 3298, 3299, 3301, 3302, 3303, 3304, 3305, 3307, 3308, 390, 3309, 3311, 3020, 427, 3313, 3314, 382, 3316, 3318, 3320, 3322, 3319, 3321, 3323, 2473, 2490,
- 3325, 3326, 3327, 3328, 3329, 3039, 1060, 3332, 3333, 3334, 3336, 3337, 3338, 3340, 3342, 3341, 3344, 317, 3346, 3347, 3348, 3349, 3350, 3351, 2060, 3353, 3356,
- 3354, 3355, 3357, 3358, 3359, 3360, 3361, 3363, 664, 3367, 3364, 3365, 3366, 3368, 3370, 3372, 3371, 3373, 3374, 3375, 3377, 3388, 3407, 3444, 3453, 3476, 3511,
- 3523, 3540, 3558, 2362, 428, 3574, 3579, 3582, 3589, 3595, 349, 3604, 3605, 2277, 3606, 3612, 3617, 3622, 3637, 3647, 3650, 3654, 589, 3659, 3378, 3381, 3383,
- 621, 3385, 621, 966, 427, 390, 1688, 317, 3379, 317, 317, 317, 390, 3380, 317, 3382, 3384, 2962, 621, 915, 3386, 3387, 3389, 3390, 3395, 3396, 3399,
- 381, 3391, 3392, 3393, 3394, 3397, 661, 3398, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3408, 3423, 865, 2889, 3424, 3427, 3430, 3433, 3434, 356, 3439, 1688,
- 1451, 3409, 3412, 3413, 3421, 3410, 3411, 694, 756, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3422, 3425, 3426, 3428, 3429, 620, 3431, 3432, 3435, 3436, 3437,
- 3438, 3440, 3441, 3442, 3443, 3445, 3448, 3451, 356, 3446, 632, 3447, 3449, 3450, 3452, 621, 3182, 1370, 3454, 3455, 3457, 3460, 3466, 2979, 3470, 3473, 390,
- 1732, 317, 3456, 356, 621, 1011, 3458, 3459, 620, 928, 1112, 1132, 3461, 3463, 1087, 672, 648, 3462, 647, 3464, 3465, 3467, 3468, 3469, 3471, 3472, 3474,
- 3475, 3477, 3482, 3484, 3487, 3490, 3491, 3503, 3504, 966, 3506, 3510, 390, 3478, 3479, 3480, 3481, 3483, 3485, 3486, 1011, 3488, 3489, 3492, 724, 936, 3495,
- 1271, 3497, 3500, 1028, 3502, 397, 3493, 3494, 736, 317, 3496, 3498, 3499, 3501, 320, 317, 1574, 3505, 3507, 3508, 3509, 3512, 3514, 3516, 3519, 3521, 390,
- 3513, 3515, 928, 3517, 3518, 3520, 3522, 3524, 3526, 3530, 3531, 3532, 3536, 3538, 390, 3525, 3527, 3528, 3529, 3533, 3534, 3535, 3537, 3539, 3541, 3544, 1162,
- 3553, 3554, 390, 3542, 3543, 3545, 3546, 3547, 3548, 3549, 3550, 3551, 317, 3552, 317, 317, 412, 3555, 3556, 3557, 3559, 3565, 3566, 3567, 3572, 390, 3560,
- 3561, 3562, 3563, 3564, 1302, 2970, 3568, 1000, 3570, 3569, 3571, 3573, 3575, 362, 3577, 3576, 3578, 382, 3580, 3581, 3583, 3587, 3584, 3585, 3586, 3588, 3590,
- 3594, 363, 3591, 3592, 3593, 3596, 3039, 3600, 3597, 3598, 3599, 3601, 3602, 3603, 3607, 3610, 2037, 400, 3608, 2007, 3609, 332, 3611, 3613, 3615, 3614, 3616,
- 3618, 516, 1230, 345, 3621, 3619, 3620, 3623, 3625, 433, 3627, 3631, 2567, 3633, 3624, 3626, 3628, 2475, 3629, 3630, 3632, 3634, 3635, 3636, 3638, 3641, 3643,
- 3646, 1588, 3639, 317, 3640, 3642, 3644, 3645, 3648, 317, 3649, 3651, 3652, 3653, 3655, 620, 3655, 3657, 3656, 3658, 3660, 3663, 3661, 3661, 3662, 3664, 3666,
- 3671, 3678, 3699, 3711, 3722, 3747, 3788, 3810, 3822, 3831, 3842, 3030, 3844, 3849, 3851, 3855, 3858, 3863, 3870, 3873, 3875, 3878, 3881, 3885, 3899, 3902, 3667,
- 3668, 3669, 3670, 3672, 3674, 551, 545, 545, 545, 3675, 966, 427, 2716, 390, 3673, 317, 317, 317, 620, 339, 317, 317, 390, 651, 381, 3676, 3677,
- 3679, 3689, 3690, 3696, 381, 3680, 3685, 3681, 3682, 3683, 3684, 3686, 3687, 3688, 3691, 3693, 621, 2769, 3692, 637, 633, 390, 3694, 3695, 3697, 3698, 3700,
- 3701, 1822, 3702, 3705, 3708, 356, 3709, 3703, 3704, 1799, 1746, 3706, 3707, 3710, 3712, 633, 3718, 356, 3713, 3714, 3715, 3716, 3717, 3719, 3720, 3721, 3723,
- 3733, 3734, 3739, 3743, 3745, 390, 3724, 3727, 3731, 3725, 3726, 3728, 3729, 3730, 3732, 3735, 651, 1011, 3736, 3737, 317, 317, 3738, 1130, 739, 3740, 3741,
- 3742, 3744, 3746, 3748, 3752, 3754, 3757, 3765, 3778, 3781, 3783, 3786, 3743, 390, 1131, 3749, 3750, 3751, 3753, 1824, 651, 740, 3755, 3756, 3758, 3761, 3763,
- 3759, 740, 3760, 3762, 3764, 3766, 3767, 3769, 1132, 1115, 3770, 3774, 3777, 648, 632, 635, 621, 949, 1087, 637, 3768, 320, 317, 649, 320, 1131, 3771,
- 3773, 317, 3772, 317, 317, 317, 317, 317, 317, 317, 3775, 651, 3776, 673, 1624, 3779, 1011, 740, 3780, 633, 3782, 637, 1011, 633, 3784, 3785, 3787,
- 3789, 3792, 3794, 3798, 3804, 3808, 390, 3790, 3791, 3793, 740, 724, 3795, 3796, 3797, 1732, 773, 3799, 3801, 3800, 3802, 3803, 3805, 3806, 3807, 3809, 3811,
- 3813, 3816, 3818, 3743, 3820, 390, 3812, 3814, 3815, 3817, 3819, 620, 3821, 3823, 390, 3824, 3826, 3825, 3827, 3828, 3829, 3830, 3832, 390, 3833, 3834, 3835,
- 3836, 3837, 3838, 3839, 3840, 3841, 3843, 3845, 3846, 3847, 3848, 3850, 382, 3852, 3853, 3854, 3856, 3857, 3859, 3860, 3861, 3862, 3864, 3865, 3866, 3867, 3868,
- 3869, 3871, 3872, 3874, 3876, 3877, 3879, 3880, 3882, 3646, 3884, 3883, 3886, 3888, 3892, 3897, 3887, 3889, 3890, 3891, 3893, 3894, 3895, 3896, 3898, 3900, 3901,
- 3903, 3907, 3904, 3905, 3906, 3908, 3909, 3910, 3912, 3921, 3926, 3942, 3950, 3959, 3970, 4000, 4015, 4030, 4042, 4043, 4046, 4049, 4054, 4056, 4061, 390, 4062,
- 4065, 4070, 3913, 3914, 3916, 3919, 621, 966, 317, 390, 1688, 317, 317, 390, 3915, 3917, 3918, 3920, 3395, 3922, 3923, 381, 743, 1042, 3924, 3925, 3927,
- 3934, 3935, 3938, 356, 3941, 3928, 3929, 3930, 3931, 3932, 3933, 3936, 3937, 3939, 3940, 3943, 3947, 3948, 3949, 3743, 356, 3944, 3945, 3946, 3951, 3955, 3743,
- 390, 3952, 3953, 3954, 3292, 3956, 3957, 3958, 3960, 3961, 1302, 3965, 3968, 390, 949, 3962, 866, 1028, 3963, 3964, 3966, 3967, 3969, 3971, 3974, 3975, 3978,
- 3989, 3992, 3743, 1033, 3995, 2356, 390, 3972, 3973, 1722, 3976, 3977, 1011, 694, 620, 3979, 1112, 1132, 3981, 1131, 3982, 672, 648, 3985, 3987, 3988, 3227,
- 637, 651, 3980, 651, 1087, 1902, 1011, 3983, 631, 3984, 3986, 3990, 694, 3991, 1087, 3993, 3994, 3996, 3997, 3998, 3999, 4001, 4007, 3700, 4010, 4011, 4013,
- 3965, 2356, 390, 3941, 4002, 4003, 4004, 4005, 4006, 4008, 4009, 4012, 621, 1289, 4014, 3744, 4016, 4020, 4024, 4028, 4029, 2356, 390, 3065, 4017, 4018, 4019,
- 4021, 4022, 4023, 4025, 4026, 4027, 4031, 4033, 4034, 3915, 4037, 4038, 4029, 4040, 351, 3965, 4041, 2356, 390, 4032, 4035, 4036, 673, 756, 632, 4039, 3843,
- 3843, 4044, 4045, 4047, 4048, 4050, 4051, 4052, 4053, 4055, 4057, 4058, 4059, 4060, 4063, 4064, 4066, 4067, 4068, 4069, 4071, 4073, 4072, 4074, 4075, 4076, 4078,
- 4083, 4102, 4109, 4116, 4119, 4155, 4169, 4182, 4219, 4254, 4042, 4259, 4262, 4272, 4277, 4281, 4285, 4289, 4296, 4299, 4303, 4309, 4311, 390, 4319, 4331, 4079,
- 4080, 427, 4081, 4082, 4084, 4086, 4087, 4091, 4097, 4100, 427, 317, 390, 4085, 317, 317, 390, 4088, 4089, 4090, 4092, 4093, 4094, 4095, 4096, 4098, 2743,
- 4099, 4101, 4103, 4105, 4108, 381, 4104, 4106, 4107, 1060, 4110, 4112, 3743, 4114, 356, 4111, 4113, 4115, 4117, 345, 356, 914, 4118, 4120, 4136, 4144, 4148,
- 4149, 4151, 390, 4121, 1451, 4125, 756, 4124, 1205, 4129, 4134, 4122, 841, 4123, 4126, 1494, 4127, 4128, 4130, 4131, 4132, 371, 4133, 4135, 4137, 4138, 4139,
- 4140, 4141, 4142, 4143, 4145, 4146, 4147, 620, 620, 4150, 317, 4152, 1508, 4153, 4154, 4156, 4157, 4161, 4165, 427, 390, 1722, 1653, 4158, 4159, 4160, 866,
- 1746, 936, 4162, 4163, 4164, 3065, 4166, 4167, 4168, 4170, 4176, 1033, 390, 4171, 4174, 4172, 4173, 4175, 4177, 4179, 4178, 4180, 4181, 4183, 653, 4187, 4189,
- 4192, 4194, 4214, 4215, 4216, 390, 4184, 4185, 4186, 4188, 637, 673, 4190, 4191, 4193, 740, 673, 4195, 4197, 1112, 1132, 1115, 4198, 1087, 4201, 4208, 4210,
- 4211, 4213, 1020, 4196, 4199, 4200, 4202, 647, 317, 4203, 4206, 4204, 4205, 4207, 317, 4209, 928, 633, 4212, 633, 1173, 4217, 4218, 4220, 4221, 4222, 4225,
- 4229, 2024, 4249, 4250, 3510, 390, 3941, 781, 1000, 732, 4223, 649, 4224, 4226, 637, 317, 4227, 4228, 317, 866, 4230, 936, 4232, 4238, 4239, 4245, 1746,
- 4247, 945, 4231, 4233, 4234, 4235, 4236, 4237, 949, 621, 637, 4240, 4244, 4241, 4242, 4243, 4246, 4248, 651, 673, 4251, 4252, 4253, 4255, 390, 4256, 4257,
- 4258, 724, 1746, 4260, 4261, 4263, 4269, 4264, 4265, 501, 4266, 4267, 4268, 4270, 4271, 4273, 4276, 4274, 4275, 4278, 4280, 4279, 4282, 4283, 4284, 4286, 4055,
- 4287, 4288, 4290, 4291, 4292, 4293, 4294, 4295, 4297, 4298, 4300, 4302, 4301, 4304, 4305, 4306, 4307, 4308, 4310, 4312, 4315, 4318, 4313, 4314, 4316, 4317, 4320,
- 4324, 4325, 4321, 4322, 4323, 4326, 4327, 4328, 4329, 4330, 4332, 4334, 4333, 4335, 4336, 4338, 4370, 4378, 4391, 4400, 4403, 4416, 4428, 4456, 4478, 4042, 4562,
- 4565, 4568, 4569, 4574, 4577, 3121, 390, 4584, 4587, 4592, 4594, 4339, 4344, 4348, 4354, 4356, 4029, 317, 390, 620, 4340, 317, 317, 317, 390, 4341, 4342,
- 4343, 4345, 4346, 4347, 4349, 4350, 4351, 4352, 4353, 4355, 317, 4357, 4362, 4365, 4358, 4359, 4360, 4361, 4363, 4364, 4366, 4367, 4368, 4369, 4371, 4374, 4376,
- 381, 4372, 4373, 4375, 4377, 4379, 4383, 4384, 4388, 356, 4380, 4381, 4382, 4385, 1131, 4386, 4387, 4389, 4390, 4392, 4394, 4397, 356, 4398, 4393, 4395, 4396,
- 4399, 4401, 4402, 390, 4404, 4409, 4411, 4414, 1031, 390, 4405, 4407, 4408, 866, 1271, 767, 661, 4406, 866, 1767, 649, 4410, 4412, 4413, 4415, 4417, 4421,
- 4425, 1914, 390, 4418, 4419, 4420, 4422, 4423, 4424, 4426, 4427, 4429, 4434, 935, 4438, 4444, 4448, 4454, 4430, 4431, 4432, 4433, 4435, 4436, 4437, 4439, 4440,
- 4441, 4442, 4443, 317, 1044, 4445, 4446, 4447, 4449, 4450, 4451, 4452, 4453, 4455, 317, 4457, 4464, 4467, 4468, 4470, 4473, 4475, 4477, 390, 4458, 4463, 648,
- 4459, 4460, 4461, 4462, 4465, 4466, 4469, 694, 649, 928, 1131, 1087, 672, 4471, 632, 4472, 633, 631, 4474, 621, 649, 4476, 4479, 4505, 4520, 4534, 4535,
- 4546, 4555, 390, 4480, 4482, 4487, 4488, 4493, 4498, 4481, 4483, 4484, 4485, 4486, 4489, 4490, 4491, 4492, 4494, 4495, 4496, 4497, 4499, 4500, 4501, 4502, 4503,
- 4504, 4506, 4510, 4515, 4507, 4508, 4509, 4511, 4512, 4513, 4514, 4516, 4517, 4518, 4519, 4521, 4526, 4532, 4522, 4523, 4524, 4525, 4527, 4528, 4529, 4530, 4531,
- 4533, 4536, 4541, 4537, 4538, 4539, 4540, 4542, 4543, 4544, 4545, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4556, 4557, 4558, 4559, 4560, 4561, 4563, 4564,
- 382, 4566, 4567, 4322, 4055, 4570, 4571, 4572, 4573, 4575, 4576, 4578, 4579, 4580, 4581, 4582, 4583, 4585, 4586, 4588, 4590, 4589, 4591, 4593, 4595, 4596, 4597,
- 4599, 4612, 4632, 4644, 4650, 4653, 4660, 4673, 4683, 4713, 4743, 543, 4744, 4054, 4752, 4756, 4758, 4762, 390, 4765, 4767, 4600, 4602, 4604, 3791, 4605, 4606,
- 966, 317, 390, 1688, 4601, 317, 317, 317, 317, 4603, 839, 4607, 4608, 4610, 4609, 4611, 4613, 4615, 4620, 4621, 4624, 4627, 4630, 381, 4614, 4616, 928,
- 4617, 4618, 4619, 4622, 4623, 4625, 4626, 4628, 4629, 4631, 4633, 4635, 4636, 4639, 356, 4634, 4637, 4638, 4640, 4641, 4642, 4643, 4645, 4649, 356, 4646, 4647,
- 4648, 4651, 4652, 390, 4654, 4657, 4659, 2679, 390, 1722, 755, 1653, 949, 4655, 4656, 1897, 4658, 4661, 4672, 2024, 390, 1451, 4662, 756, 767, 4667, 4663,
- 4665, 365, 4664, 4666, 4668, 317, 4669, 4670, 4671, 4674, 4679, 4680, 4681, 2024, 390, 4675, 4676, 4677, 4678, 4682, 4684, 4685, 4688, 4689, 4707, 3431, 2356,
- 390, 4712, 4686, 4687, 949, 4690, 4692, 1302, 4699, 736, 4705, 4691, 4693, 4696, 4694, 4695, 4697, 4698, 4700, 735, 4701, 949, 4702, 4703, 4704, 4706, 4708,
- 4709, 4710, 4711, 4714, 4716, 4718, 4720, 4722, 4727, 2024, 4737, 4739, 390, 4715, 4717, 928, 4719, 4721, 1131, 4723, 4724, 633, 490, 4725, 4726, 620, 4728,
- 1132, 637, 1131, 4733, 672, 4735, 862, 4729, 4730, 4731, 4732, 4734, 4736, 4738, 4740, 4741, 4742, 1073, 3843, 4745, 4749, 4746, 4747, 4748, 4750, 4751, 4753,
- 4754, 4755, 4757, 4759, 4760, 4761, 4763, 4764, 4766, 4768, 4769, 4770, 4771, 4772, 4773, 4775, 4776, 4777, 4778, 4779, 4781, 4782, 2022, 4783, 2328, 4785, 4789,
- 4784, 4786, 4787, 4788, 4791, 4792, 365, 4793, 4794, 4795, 4796, 4804, 4806, 4852, 4856, 4872, 4874, 4875, 4879, 4889, 4896, 4901, 9, 10, 11, 6139, 6229,
- 12, 6569, 6640, 6766, 6790, 13, 15, 16, 8915, 18, 9187, 19, 20, 21, 22, 10771,10868,10915,10929,10983,530, 2301, 4797, 4797, 4797, 4798, 4797,
- 4797, 4799, 4800, 4801, 4803, 4797, 317, 4802, 4805, 4807, 4812, 4820, 4822, 4824, 4827, 4833, 4840, 4844, 4808, 4811, 4809, 4810, 4813, 4814, 949, 936, 4815,
- 1271, 4816, 317, 317, 4817, 317, 4818, 317, 317, 317, 4819, 4821, 743, 4823, 1653, 1735, 4825, 4826, 4828, 4829, 4830, 4831, 4832, 4834, 4835, 4836, 4837,
- 4838, 4839, 4841, 4842, 4843, 4845, 4846, 4847, 4848, 4849, 4850, 4851, 1111, 4853, 4854, 4855, 621, 4857, 4858, 4861, 621, 621, 621, 4862, 4865, 4871, 317,
- 4859, 4860, 317, 1114, 4863, 4864, 4866, 4867, 4868, 4869, 4870, 4873, 1302, 1130, 1309, 4876, 4877, 4878, 4880, 4882, 4886, 4881, 4883, 4884, 4885, 4887, 4888,
- 4890, 4892, 4891, 4893, 4894, 4895, 4897, 1317, 4898, 4899, 4900, 4902, 4911, 4945, 4950, 4951, 339, 4953, 4938, 4955, 4956, 4964, 4967, 4971, 4983, 4988, 2357,
- 4992, 4903, 4906, 862, 4904, 4905, 637, 490, 4907, 949, 936, 4908, 4909, 4910, 4912, 4915, 1131, 1087, 672, 4916, 4940, 2051, 390, 4937, 356, 4943, 4944,
- 1107, 637, 4913, 4914, 1420, 3202, 651, 621, 4917, 4919, 4936, 4937, 4939, 4918, 317, 4920, 4925, 4926, 317, 4921, 317, 317, 317, 4922, 317, 4923, 4924,
- 317, 390, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4941, 4942, 4946, 4949, 317, 4947, 4948, 501, 367, 490, 317, 4952, 365, 317, 550, 317,
- 317, 4954, 389, 343, 439, 4957, 4958, 4961, 4963, 381, 332, 439, 1033, 4949, 4959, 4960, 317, 4962, 3710, 351, 4965, 4966, 4968, 4970, 4969, 2551, 2521,
- 4972, 4973, 4975, 4977, 4591, 343, 4978, 317, 4981, 365, 2845, 362, 4974, 4976, 590, 317, 4979, 1266, 317, 317, 317, 4980, 4982, 370, 4984, 2322, 4985,
- 490, 4986, 4987, 4989, 4990, 4991, 4993, 4994, 4998, 5000, 5024, 5060, 5076, 5128, 5176, 1335, 5177, 5192, 5208, 5209, 5218, 5227, 5229, 5236, 5282, 5287, 5329,
- 5376, 5380, 5400, 5402, 4995, 4996, 4997, 4999, 5001, 5002, 5004, 5005, 351, 5006, 4591, 5007, 5009, 5013, 5014, 5018, 5023, 1109, 490, 2043, 5003, 490, 317,
- 317, 345, 363, 404, 1358, 317, 362, 317, 5008, 343, 317, 317, 5010, 317, 5011, 5012, 356, 466, 3854, 317, 490, 317, 390, 433, 5015, 490, 5016,
- 5017, 5019, 5020, 317, 5021, 317, 3854, 317, 5022, 317, 748, 5025, 5034, 5041, 5044, 5048, 317, 317, 5059, 370, 5026, 5027, 5029, 5031, 1358, 2333, 317,
- 5028, 354, 5030, 1044, 365, 317, 5032, 5033, 317, 5035, 5036, 5037, 5039, 5038, 317, 5040, 317, 1160, 5042, 381, 5043, 2067, 5045, 356, 5046, 5047, 354,
- 317, 5049, 5056, 5050, 5051, 5052, 5053, 356, 5054, 5055, 5057, 5058, 1753, 2077, 5061, 317, 936, 866, 5067, 5069, 317, 2733, 5062, 5063, 317, 5064, 5066,
- 5065, 5068, 5070, 5072, 5071, 5073, 5075, 5074, 1266, 637, 5077, 5080, 5094, 5098, 5109, 5078, 317, 5079, 5081, 5082, 5083, 5085, 5088, 490, 5089, 5090, 5092,
- 317, 3717, 5084, 5086, 5087, 5091, 5093, 5095, 317, 5096, 5097, 1325, 404, 5099, 5100, 317, 380, 5106, 5101, 5103, 5102, 1135, 317, 5104, 5105, 5107, 5108,
- 5110, 5114, 5127, 317, 5111, 5112, 5113, 2510, 317, 382, 5055, 5115, 5085, 5116, 5118, 5121, 5090, 5117, 5119, 5120, 317, 1881, 5122, 5123, 5124, 5125, 5126,
- 317, 1358, 5129, 317, 382, 5131, 5132, 5136, 5139, 5141, 317, 5172, 5175, 5130, 4984, 373, 490, 5133, 1347, 362, 5135, 362, 317, 4980, 5134, 317, 2110,
- 332, 3284, 5137, 5138, 5140, 5142, 5143, 5150, 5155, 5159, 343, 5160, 5165, 404, 317, 5168, 5144, 5146, 5145, 363, 5147, 5148, 5149, 1588, 5151, 5152, 5153,
- 5154, 5156, 5157, 5158, 5161, 5164, 5162, 5163, 5166, 381, 5167, 5169, 5170, 5171, 317, 317, 5173, 5174, 523, 490, 317, 608, 370, 5178, 5186, 5191, 5179,
- 2036, 5182, 5184, 5185, 5180, 5181, 5183, 971, 381, 5187, 5188, 5189, 317, 5190, 317, 5193, 5194, 5195, 5198, 5202, 5204, 317, 3726, 5206, 1347, 3999, 362,
- 2322, 317, 5196, 5197, 343, 5003, 1345, 317, 5199, 5200, 5201, 596, 317, 317, 5203, 404, 404, 5205, 490, 401, 5207, 466, 351, 5210, 5212, 5214, 382,
- 5211, 5213, 5215, 5216, 5217, 5219, 5222, 3999, 5225, 317, 382, 317, 5220, 381, 343, 5221, 363, 343, 362, 317, 5223, 5224, 5226, 5228, 5230, 5231, 5232,
- 5233, 5234, 5235, 5200, 370, 551, 2156, 5237, 5239, 5251, 5255, 5256, 5263, 5267, 5277, 595, 5238, 5240, 5242, 317, 5241, 5243, 5245, 5244, 5246, 5247, 5248,
- 5249, 5250, 317, 1347, 5252, 5253, 5254, 373, 5167, 5257, 5261, 5258, 5259, 5260, 4564, 1347, 356, 5262, 5055, 343, 5264, 5265, 5266, 5120, 5268, 5272, 5274,
- 5276, 5269, 5271, 5270, 5273, 356, 466, 317, 5275, 2603, 317, 5278, 5279, 5280, 5281, 608, 5283, 5284, 5285, 5286, 5288, 5314, 5316, 5320, 5322, 5289, 5296,
- 5301, 5304, 595, 317, 5310, 5312, 348, 5290, 5293, 5291, 5292, 5294, 5295, 5297, 5298, 5299, 5300, 363, 363, 5302, 5303, 371, 362, 5305, 4980, 396, 5306,
- 5308, 317, 5307, 4925, 1108, 5309, 3284, 5311, 5055, 2156, 5313, 5315, 471, 332, 380, 317, 317, 317, 317, 317, 380, 5317, 317, 2381, 5318, 5319, 3854,
- 356, 5095, 5321, 317, 317, 5323, 5325, 5326, 5324, 5327, 393, 5328, 317, 5330, 5333, 5338, 5344, 5347, 5348, 5360, 5372, 5331, 5332, 5334, 5336, 5335, 5337,
- 5339, 2156, 5340, 5341, 490, 5342, 5343, 5345, 5346, 5349, 317, 5357, 5350, 5356, 5351, 317, 5352, 5354, 370, 5353, 317, 363, 5355, 343, 1325, 317, 5358,
- 5225, 523, 5359, 466, 317, 317, 381, 1347, 5361, 5364, 5366, 363, 5368, 5362, 5363, 5365, 5367, 5369, 5370, 5371, 356, 5113, 370, 317, 5373, 5374, 5375,
- 370, 381, 5201, 5377, 317, 5378, 5379, 380, 5381, 5382, 5384, 5385, 363, 380, 490, 5387, 5388, 2322, 5393, 5398, 5383, 5386, 317, 489, 317, 5389, 5390,
- 5392, 5391, 2156, 5324, 5394, 5395, 5396, 317, 1347, 317, 382, 343, 5397, 5399, 317, 511, 5401, 2086, 5403, 433, 5404, 380, 5405, 5406, 2476, 5407, 5410,
- 380, 5433, 5559, 5562, 5612, 5613, 5646, 5658, 5678, 5680, 343, 5685, 5702, 5721, 365, 5749, 5786, 5809, 5811, 5408, 5409, 5411, 5413, 317, 5422, 5424, 5426,
- 5429, 5432, 5412, 5414, 5420, 5415, 317, 5416, 317, 317, 5417, 1347, 5418, 5419, 317, 5421, 5423, 5425, 5427, 5428, 5430, 5431, 5434, 317, 5440, 5471, 5484,
- 5493, 5531, 5540, 5435, 5436, 490, 5438, 5437, 5439, 5441, 5442, 5451, 5454, 5460, 5469, 1325, 466, 5443, 5444, 5445, 5448, 381, 5446, 5447, 5113, 2510, 5449,
- 5450, 5452, 356, 317, 5453, 5096, 343, 5455, 5456, 356, 466, 2510, 317, 5457, 514, 5458, 343, 5459, 5461, 637, 5462, 5463, 649, 633, 5464, 5465, 332,
- 5466, 317, 1267, 317, 317, 5457, 382, 5055, 5467, 5468, 317, 345, 511, 5470, 317, 867, 5472, 363, 5478, 5473, 5474, 5475, 5476, 370, 317, 5477, 5479,
- 5480, 351, 5481, 5482, 5483, 5485, 5489, 5486, 5488, 5487, 5490, 5491, 5492, 2110, 5494, 5496, 5511, 5518, 5520, 5495, 5497, 5498, 5503, 371, 5238, 5499, 5500,
- 5501, 5502, 5504, 5507, 5505, 5506, 2184, 5464, 5399, 381, 5508, 2156, 5509, 5510, 5464, 466, 5399, 5512, 5517, 317, 523, 356, 5513, 317, 5514, 5515, 5516,
- 5519, 5521, 5527, 5522, 317, 5523, 5525, 356, 466, 317, 5457, 5524, 370, 1347, 5526, 5528, 5529, 5530, 317, 5532, 5537, 5539, 5533, 5536, 5534, 5535, 5365,
- 356, 466, 317, 356, 404, 5538, 380, 1325, 466, 5541, 5544, 5548, 5552, 5557, 5542, 5543, 3648, 5545, 5546, 5547, 5549, 5551, 370, 5550, 5553, 5394, 466,
- 5555, 5554, 5556, 5558, 1430, 5560, 5561, 5563, 5565, 5566, 357, 317, 5567, 5568, 362, 5571, 5572, 5574, 5576, 5608, 5609, 317, 645, 637, 5564, 5238, 317,
- 4943, 5058, 5569, 5570, 1753, 401, 381, 332, 317, 490, 5573, 5575, 317, 5577, 339, 5586, 5591, 5578, 5582, 343, 5579, 5580, 5581, 5583, 5584, 5585, 5587,
- 317, 5588, 5589, 5590, 5592, 5225, 5593, 2272, 5603, 5594, 5595, 5596, 5597, 5598, 5599, 5600, 5601, 5602, 5604, 5605, 5606, 5607, 5238, 5610, 5611, 317, 5614,
- 5620, 5629, 1526, 5636, 5638, 5641, 317, 5645, 5615, 343, 5619, 5616, 5617, 5618, 5621, 343, 317, 317, 5624, 5625, 404, 4980, 5627, 5622, 5623, 5626, 317,
- 5628, 5630, 5633, 317, 5635, 5631, 410, 5632, 466, 317, 5399, 1347, 317, 5634, 365, 317, 5637, 5639, 5640, 5642, 466, 5643, 5644, 381, 2219, 5647, 5654,
- 5655, 5657, 317, 5648, 5649, 5652, 5653, 317, 545, 479, 317, 5650, 370, 5651, 5656, 317, 427, 390, 565, 5659, 5664, 5666, 5662, 5668, 5676, 317, 5660,
- 5661, 5662, 4980, 317, 5663, 345, 345, 5665, 439, 5667, 363, 5669, 5670, 5671, 5672, 5673, 5674, 5675, 466, 5399, 317, 5399, 317, 5677, 439, 3522, 5679,
- 317, 317, 317, 5681, 5682, 5683, 5684, 490, 5686, 396, 5688, 490, 5690, 5693, 5694, 5695, 5696, 5687, 317, 5689, 5691, 5692, 1109, 1347, 317, 339, 2021,
- 5697, 5698, 5699, 5700, 5701, 317, 5703, 5704, 5712, 5705, 5710, 5706, 5707, 5708, 356, 5709, 5711, 5713, 2381, 5717, 5718, 5719, 5714, 5715, 5716, 317, 514,
- 5447, 466, 5720, 380, 356, 2081, 5722, 5723, 5728, 5747, 990, 317, 317, 317, 317, 5724, 5725, 5726, 5727, 317, 5729, 5733, 5738, 5740, 5743, 5745, 5730,
- 2163, 5731, 5732, 317, 5734, 5735, 5736, 5737, 5739, 5741, 5742, 5744, 2163, 490, 317, 5746, 5748, 317, 5464, 317, 5750, 5770, 5777, 5778, 5779, 5751, 5753,
- 317, 427, 5766, 317, 5752, 5754, 5755, 317, 410, 5762, 5756, 5757, 5758, 5759, 5760, 5761, 5763, 5764, 5765, 5547, 5767, 5768, 5769, 5201, 404, 317, 1347,
- 317, 5771, 5772, 317, 5773, 5774, 5775, 5776, 5334, 345, 5780, 317, 5781, 5783, 5785, 5782, 370, 370, 5488, 5784, 317, 380, 345, 1325, 404, 2510, 5787,
- 396, 397, 490, 5789, 5794, 5797, 5804, 5806, 5808, 5788, 363, 5790, 5791, 5792, 5793, 5795, 317, 5796, 5798, 5799, 5800, 5801, 5802, 5803, 5805, 317, 380,
- 315, 315, 5807, 317, 5324, 5810, 525, 5812, 5813, 5817, 5850, 5852, 5881, 5922, 5927, 5934, 5965, 5992, 5997, 6001, 6034, 6037, 5872, 6057, 6076, 6082, 6092,
- 6127, 6129, 6132, 6133, 5814, 5815, 5816, 317, 5818, 317, 5819, 317, 351, 317, 5820, 5824, 5842, 5843, 5848, 5849, 317, 2322, 1230, 317, 317, 332, 5821,
- 2272, 490, 5822, 5823, 637, 5825, 787, 5827, 5831, 5833, 5834, 5835, 5837, 362, 5826, 5828, 5829, 317, 490, 5830, 741, 370, 371, 5832, 371, 371, 371,
- 317, 317, 2163, 317, 5836, 317, 363, 5838, 5839, 317, 5840, 5841, 5844, 5845, 5846, 5847, 2510, 317, 5457, 5167, 317, 317, 1347, 382, 5055, 343, 317,
- 5851, 5853, 5854, 5857, 5870, 317, 5872, 5873, 317, 5878, 317, 4965, 345, 2537, 317, 5855, 317, 5856, 5325, 5661, 317, 5858, 348, 5860, 5861, 5863, 5867,
- 345, 5859, 356, 5262, 317, 5862, 5864, 363, 5865, 5866, 5868, 5869, 2156, 5871, 5874, 5875, 5876, 410, 5877, 466, 5879, 356, 317, 5880, 5882, 317, 5884,
- 1109, 5899, 4268, 5912, 5914, 5918, 5919, 5921, 5883, 3751, 5885, 5887, 317, 3023, 5888, 5889, 5891, 5892, 5893, 5895, 490, 5886, 574, 1999, 965, 317, 317,
- 5793, 5890, 5663, 439, 5894, 5896, 363, 5897, 2310, 5898, 5900, 2272, 5902, 317, 5911, 5901, 350, 5903, 3125, 490, 2271, 5909, 5904, 5905, 5906, 5907, 5908,
- 5910, 5913, 490, 5915, 362, 404, 5916, 5917, 5223, 317, 5920, 949, 351, 5923, 5924, 5925, 5926, 5928, 317, 5929, 5933, 565, 5930, 5310, 5931, 466, 317,
- 5932, 317, 343, 1347, 5935, 5937, 317, 5938, 5939, 5943, 5944, 5952, 5953, 345, 5956, 5957, 5963, 3750, 5964, 5936, 5940, 5941, 5942, 651, 633, 633, 5945,
- 5946, 5947, 5948, 5949, 5950, 5951, 354, 971, 381, 317, 5954, 5955, 5958, 5959, 5960, 5961, 5962, 5966, 5970, 5975, 5981, 5967, 490, 5968, 5969, 5971, 317,
- 5972, 5973, 5974, 380, 1347, 5976, 5978, 5977, 356, 466, 317, 317, 5979, 5980, 356, 3854, 5982, 5988, 5989, 2368, 2368, 1526, 5983, 5984, 5985, 5986, 1325,
- 5987, 351, 382, 363, 5990, 410, 5991, 466, 5399, 317, 5993, 5994, 5995, 5996, 5998, 5999, 6000, 3529, 362, 1160, 317, 317, 3517, 6002, 6003, 317, 6029,
- 6004, 6018, 6023, 6026, 5760, 6005, 317, 6010, 317, 1267, 6006, 6007, 6008, 6009, 6011, 6012, 6013, 6014, 6015, 5226, 6016, 356, 6017, 2510, 382, 5055, 5550,
- 6019, 5394, 466, 6020, 6022, 5226, 6021, 6024, 6025, 5457, 5055, 317, 6027, 523, 6028, 466, 6030, 6031, 6032, 5226, 6033, 6035, 6036, 490, 317, 343, 343,
- 6038, 6047, 6049, 351, 6051, 6054, 351, 6039, 6043, 6044, 6040, 6041, 6042, 6045, 317, 6046, 345, 6048, 365, 6050, 6052, 6053, 5847, 317, 317, 345, 1347,
- 6055, 5447, 466, 6056, 373, 5226, 356, 466, 5399, 317, 317, 6058, 6059, 6066, 6075, 6060, 6061, 6064, 2087, 6062, 6063, 317, 6065, 6067, 317, 6073, 381,
- 363, 363, 363, 6068, 6071, 317, 1160, 343, 317, 6069, 6070, 6072, 6074, 371, 381, 2134, 6077, 317, 6078, 6080, 6079, 1526, 5225, 6081, 6083, 6084, 348,
- 317, 5225, 317, 6085, 6090, 317, 6086, 6089, 317, 6087, 6088, 4591, 317, 6091, 6093, 6094, 6096, 6104, 6119, 6124, 6095, 489, 6097, 6098, 317, 6100, 6099,
- 466, 317, 317, 5399, 317, 6101, 6102, 6103, 317, 4591, 317, 5225, 6105, 6112, 6106, 6107, 6109, 5250, 6108, 6110, 6111, 466, 4591, 4952, 1347, 317, 6113,
- 6114, 6116, 6115, 5324, 397, 6117, 317, 6118, 2156, 317, 6120, 410, 6121, 466, 6122, 317, 3854, 1347, 317, 6123, 6125, 2631, 2551, 6126, 381, 370, 5717,
- 1588, 6128, 371, 380, 6130, 6131, 351, 342, 6134, 6135, 6136, 6137, 6138, 6140, 6142, 6143, 6146, 6148, 6149, 6151, 6153, 6155, 6157, 6200, 6213, 6221, 6223,
- 6141, 345, 317, 6144, 6145, 363, 363, 349, 2142, 6147, 2110, 367, 2330, 6150, 317, 382, 345, 6152, 350, 6154, 2845, 6156, 1347, 362, 345, 6158, 2035,
- 6159, 6160, 365, 6161, 345, 6196, 317, 1347, 1347, 4564, 390, 6162, 6164, 6173, 539, 6174, 6177, 6180, 6186, 6189, 6163, 5732, 6165, 6167, 6166, 6168, 6169,
- 6170, 6171, 6172, 2546, 317, 3869, 3361, 6175, 6176, 6178, 520, 6179, 6181, 6182, 6183, 6184, 6185, 965, 5105, 317, 6187, 6188, 6190, 4564, 6192, 565, 6191,
- 6193, 1358, 6194, 6195, 6197, 6198, 6199, 317, 6201, 351, 1060, 6208, 6210, 6202, 6203, 6205, 6207, 6204, 6206, 6209, 6211, 6212, 6214, 4591, 490, 6220, 6215,
- 6216, 317, 317, 6217, 1526, 3967, 6219, 578, 6218, 578, 2206, 6222, 6224, 6225, 6226, 6227, 6228, 6230, 317, 1109, 6236, 351, 6238, 6279, 6284, 6288, 6295,
- 6297, 6299, 6313, 6331, 6335, 6361, 6362, 433, 373, 6231, 6232, 317, 6233, 2146, 6234, 6235, 6237, 6239, 6243, 6252, 6261, 6267, 6273, 373, 6240, 6241, 6242,
- 6244, 6250, 3854, 6245, 5225, 356, 6246, 317, 382, 6247, 343, 6248, 6249, 317, 317, 6251, 6253, 6256, 6257, 6259, 6033, 6254, 6255, 317, 6258, 317, 5201,
- 6260, 5553, 356, 466, 317, 384, 6262, 6265, 6263, 317, 6264, 6266, 349, 6268, 6269, 6271, 6270, 356, 466, 317, 6272, 370, 6274, 6276, 6275, 6277, 6278,
- 6280, 6281, 6282, 6283, 317, 5211, 6285, 6286, 6287, 6289, 578, 343, 317, 6290, 6291, 6292, 6293, 6294, 6296, 2631, 332, 343, 317, 6298, 317, 6300, 381,
- 6301, 380, 6302, 6303, 6309, 6310, 6304, 6305, 6306, 6307, 6308, 6311, 6312, 6314, 317, 389, 6315, 6323, 6316, 365, 439, 6320, 965, 6317, 317, 6318, 6319,
- 317, 317, 412, 317, 345, 6321, 6322, 3079, 2509, 6324, 6326, 6327, 1194, 362, 6328, 6325, 6329, 6330, 6332, 6333, 6334, 363, 367, 6336, 6356, 490, 6337,
- 6341, 6338, 6339, 6340, 6342, 6344, 2277, 6346, 6348, 6349, 6351, 6353, 6343, 6345, 6347, 2126, 4925, 534, 6350, 434, 5961, 6352, 6311, 6354, 6354, 6355, 6357,
- 6358, 6359, 6360, 490, 5623, 6363, 6364, 6365, 6366, 6367, 6368, 6369, 6370, 6371, 6373, 6395, 6399, 6403, 6405, 490, 6416, 6443, 6445, 6455, 6456, 6469, 6488,
- 6489, 6529, 6530, 6533, 6566, 6372, 6374, 6375, 6376, 6378, 2012, 6383, 6385, 6389, 6391, 343, 554, 1108, 351, 6377, 6379, 6380, 6381, 6382, 317, 6384, 317,
- 6386, 393, 6388, 433, 6387, 6390, 5619, 1160, 317, 6392, 490, 317, 317, 6393, 6394, 317, 6396, 6397, 6398, 6400, 6401, 6402, 427, 351, 6404, 958, 317,
- 317, 466, 6406, 370, 6407, 6411, 6413, 317, 6408, 6409, 351, 6410, 317, 596, 317, 2815, 317, 694, 633, 317, 317, 317, 6412, 351, 363, 6414, 6415,
- 6417, 2510, 6419, 6421, 6431, 6418, 317, 6420, 6422, 6426, 6423, 6424, 6425, 6427, 6428, 6429, 6430, 6432, 6436, 390, 6442, 6433, 6434, 6435, 5546, 6437, 6438,
- 6439, 2510, 363, 6440, 6441, 370, 2571, 6444, 317, 317, 596, 6446, 6448, 345, 317, 6451, 351, 6447, 397, 6449, 317, 317, 6450, 6452, 6454, 6453, 1325,
- 5113, 2510, 5241, 4965, 554, 2094, 6457, 6459, 6464, 345, 6458, 317, 1160, 1459, 317, 317, 6460, 6462, 6461, 6463, 317, 6465, 490, 6466, 6467, 6468, 5343,
- 317, 396, 6470, 6477, 6482, 6487, 6471, 317, 6472, 6473, 317, 4268, 5174, 6474, 317, 6475, 6476, 6478, 317, 6479, 317, 6480, 6481, 6483, 317, 6484, 317,
- 6485, 6486, 332, 317, 317, 490, 365, 6490, 6491, 6500, 6520, 2533, 5027, 5624, 433, 6492, 6493, 490, 6498, 6494, 317, 466, 5399, 317, 6495, 6496, 6497,
- 6499, 6501, 6505, 6515, 6516, 345, 6518, 6502, 6503, 6504, 6506, 6507, 6508, 6509, 6510, 6511, 6512, 317, 6514, 6513, 6514, 370, 6517, 2035, 6519, 317, 2035,
- 6521, 6526, 2163, 439, 6522, 6523, 6524, 6525, 6527, 6528, 6531, 6532, 6534, 6542, 6543, 6544, 6553, 6551, 6554, 363, 6556, 6557, 6535, 2142, 6536, 332, 317,
- 5687, 317, 6537, 6538, 6539, 6540, 6541, 6191, 2142, 317, 490, 343, 332, 351, 6545, 6549, 6552, 6546, 6547, 6548, 2389, 2110, 363, 6550, 6551, 317, 490,
- 5238, 351, 348, 565, 6555, 317, 345, 363, 6558, 6559, 6564, 345, 6560, 6561, 6562, 6563, 6565, 450, 488, 6567, 6568, 427, 6570, 6575, 6579, 6582, 6586,
- 6588, 6591, 6608, 6619, 6621, 6622, 6633, 6634, 6637, 2462, 2462, 6639, 317, 317, 332, 1109, 6571, 1230, 317, 6572, 345, 6573, 317, 6574, 6576, 317, 6577,
- 6578, 6580, 6581, 343, 6583, 6584, 6585, 317, 6587, 317, 6589, 6590, 6592, 6595, 6597, 3023, 6599, 4984, 6600, 317, 6601, 6603, 6605, 317, 4949, 479, 6593,
- 6594, 6596, 317, 1347, 317, 6598, 6602, 6604, 3007, 426, 6606, 6607, 6609, 6617, 393, 6610, 6616, 317, 317, 354, 6611, 6614, 317, 6612, 317, 5619, 6613,
- 6615, 6618, 317, 317, 354, 6614, 6620, 5255, 1347, 501, 490, 317, 6623, 6624, 450, 345, 6625, 6626, 6627, 6630, 317, 345, 317, 317, 6628, 6629, 6631,
- 6632, 363, 466, 317, 6635, 6636, 490, 6638, 490, 490, 381, 590, 6641, 490, 6643, 6646, 6650, 396, 6652, 6653, 6654, 6655, 6662, 6666, 6671, 6677, 6678,
- 6685, 6749, 6756, 6762, 6763, 490, 350, 6764, 317, 6642, 490, 317, 6644, 6645, 343, 373, 317, 6647, 6649, 466, 317, 317, 6648, 317, 1160, 317, 2142,
- 6651, 317, 5117, 343, 350, 5037, 2110, 317, 471, 345, 6656, 6657, 6658, 6659, 317, 332, 1347, 6660, 6661, 6663, 6664, 345, 5399, 351, 6665, 345, 363,
- 343, 5054, 317, 317, 396, 380, 382, 317, 2609, 2584, 5809, 382, 6555, 6667, 5575, 3999, 6668, 2272, 317, 6669, 6670, 381, 317, 1347, 343, 317, 2022,
- 317, 6672, 6676, 317, 6673, 6675, 5809, 6674, 339, 6679, 6681, 332, 6680, 6682, 6683, 6684, 637, 6686, 6687, 6694, 6698, 6706, 6708, 6715, 6716, 6719, 6722,
- 6727, 2381, 6730, 6734, 6741, 5758, 6743, 317, 6688, 6689, 6692, 345, 1347, 2156, 6690, 6691, 6693, 389, 1044, 380, 317, 6695, 6696, 6697, 574, 6699, 6700,
- 6705, 6701, 6702, 6703, 6704, 6707, 317, 317, 1588, 6709, 2402, 6711, 6714, 6710, 4564, 6712, 6713, 1999, 355, 6717, 6718, 6720, 6721, 509, 6723, 384, 317,
- 6724, 6725, 6726, 6728, 363, 6729, 406, 6731, 6733, 6732, 4268, 350, 6735, 2261, 6696, 6737, 6738, 6736, 6697, 514, 1526, 3529, 6739, 554, 6740, 2156, 1347,
- 380, 317, 6742, 362, 6744, 6745, 371, 596, 1347, 396, 6746, 6747, 6748, 6504, 317, 4984, 6750, 363, 5717, 343, 6755, 317, 6751, 6753, 6752, 6754, 6757,
- 6758, 345, 6760, 6761, 6759, 2551, 2551, 363, 5055, 365, 332, 6765, 363, 317, 6767, 6770, 6775, 6776, 6191, 6779, 6781, 6787, 605, 6788, 5571, 363, 5120,
- 6768, 317, 1020, 6769, 5120, 6771, 6772, 6773, 6774, 6777, 6778, 6780, 351, 6782, 6783, 6784, 6785, 6786, 590, 596, 343, 6789, 3182, 6791, 6794, 6812, 6815,
- 6820, 6827, 6852, 6858, 6860, 6862, 362, 6863, 6867, 6882, 6895, 6902, 6905, 6792, 619, 6793, 6795, 6799, 365, 365, 317, 5120, 6801, 6803, 332, 6804, 6805,
- 6807, 317, 6809, 6796, 6797, 6798, 6800, 6802, 317, 343, 317, 1481, 6806, 317, 1331, 6808, 6810, 6811, 649, 6813, 6814, 6816, 427, 6817, 404, 317, 6818,
- 317, 317, 343, 2022, 362, 6819, 317, 4591, 363, 6821, 565, 6822, 380, 6824, 565, 439, 356, 362, 6823, 6825, 6826, 490, 6828, 6832, 332, 6836, 6838,
- 6841, 6847, 6848, 6849, 490, 6850, 6829, 6830, 6831, 6833, 6835, 6834, 332, 332, 6837, 317, 332, 6839, 6840, 6842, 427, 6843, 317, 6845, 6844, 6846, 2845,
- 6851, 6853, 6855, 6856, 6854, 6857, 363, 6859, 6861, 490, 5120, 317, 427, 317, 6864, 6865, 990, 471, 317, 6866, 6868, 380, 1230, 6870, 370, 6880, 2036,
- 490, 6869, 370, 501, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6881, 6883, 5866, 6884, 363, 6885, 6886, 6887, 6888, 6889, 6890, 6891, 6892, 6893,
- 6894, 2558, 490, 490, 6896, 6898, 6897, 6899, 6900, 6901, 6903, 6904, 317, 6906, 6910, 6912, 6969, 7029, 7058, 7094, 7197, 7215, 7247, 7255, 7321, 7323, 14,
- 7471, 7510, 7512, 7528, 7575, 7580, 7586, 7603, 7690, 7707, 7725, 7728, 7731, 6907, 1932, 6908, 6909, 6911, 317, 317, 6913, 6918, 6919, 6921, 6922, 6924, 6929,
- 5126, 6931, 6941, 6945, 6948, 6953, 6958, 6960, 6965, 6966, 6968, 6914, 490, 6915, 382, 6916, 6917, 5570, 2291, 362, 1020, 6920, 490, 348, 6923, 741, 332,
- 5891, 6925, 6926, 6927, 317, 6928, 6930, 6932, 565, 6934, 5022, 6936, 6938, 365, 381, 6933, 343, 365, 490, 6935, 317, 6937, 317, 2086, 6939, 1109, 6940,
- 1266, 317, 317, 317, 6942, 317, 6943, 332, 6944, 317, 317, 490, 317, 343, 317, 317, 365, 6946, 6947, 6949, 6950, 6951, 356, 6952, 317, 5514, 381,
- 6954, 6955, 6957, 6956, 5022, 351, 1030, 6959, 565, 1588, 393, 6961, 6962, 6963, 6964, 365, 6967, 6970, 2462, 6986, 7002, 7012, 7015, 7022, 317, 6971, 351,
- 6972, 6976, 6979, 6983, 4943, 317, 574, 317, 1588, 6973, 6974, 6975, 6977, 317, 6978, 317, 317, 317, 6980, 5392, 317, 6981, 332, 365, 6982, 1020, 317,
- 351, 6984, 6985, 317, 332, 317, 381, 332, 6987, 6989, 6990, 6988, 6991, 6992, 6072, 365, 317, 6994, 4980, 6995, 317, 6993, 6996, 6997, 5104, 6998, 351,
- 7000, 7001, 345, 5037, 317, 6999, 363, 6704, 317, 7003, 7006, 363, 1428, 2067, 7011, 7004, 7005, 317, 7007, 7008, 345, 7009, 7010, 7013, 2322, 7014, 317,
- 7016, 7017, 7018, 7021, 471, 2078, 471, 471, 471, 7019, 363, 7020, 1020, 363, 490, 7023, 2074, 7024, 370, 317, 7025, 7026, 7027, 7028, 7030, 7037, 7038,
- 7042, 7046, 317, 1020, 2261, 7031, 7032, 490, 7035, 2462, 7036, 565, 7033, 7034, 317, 380, 2462, 867, 6916, 7039, 7040, 7041, 317, 433, 4268, 7043, 2156,
- 6999, 565, 7044, 7045, 317, 7047, 7048, 7052, 7054, 7056, 7057, 381, 343, 7049, 7050, 7051, 317, 1347, 427, 7053, 7055, 2134, 404, 317, 490, 351, 2073,
- 7059, 7063, 7065, 2413, 7077, 7080, 7089, 317, 345, 7093, 7060, 332, 490, 490, 5793, 7061, 317, 490, 317, 317, 7062, 7064, 4984, 7066, 5040, 7069, 7070,
- 7071, 7067, 7068, 362, 574, 350, 7072, 2193, 2022, 7074, 2022, 7076, 404, 7073, 7075, 363, 5746, 2067, 2413, 3869, 363, 7078, 317, 7079, 7081, 7085, 748,
- 7086, 345, 7082, 7083, 7084, 7087, 7088, 7090, 7092, 605, 7091, 343, 343, 4925, 990, 343, 317, 5810, 2108, 7095, 7096, 317, 5332, 1383, 7097, 7099, 7102,
- 7107, 7119, 7124, 317, 7130, 2396, 7131, 7133, 7144, 7146, 7148, 7150, 7152, 7193, 490, 490, 317, 351, 317, 490, 7098, 490, 7100, 7101, 565, 7103, 1347,
- 7104, 7105, 7106, 317, 1100, 2035, 1160, 2271, 490, 7108, 7109, 7115, 339, 7110, 7111, 351, 351, 7112, 317, 7113, 7114, 317, 7116, 317, 7117, 7118, 7120,
- 7121, 317, 490, 7122, 317, 7123, 7125, 7128, 317, 490, 490, 6974, 7129, 7126, 7127, 651, 1209, 317, 363, 332, 317, 7132, 1325, 466, 2571, 317, 5788,
- 7134, 2012, 490, 7136, 439, 490, 317, 7135, 490, 7137, 317, 7143, 7138, 7139, 7140, 317, 7141, 7142, 317, 7145, 7147, 5238, 317, 348, 7149, 7151, 7153,
- 7154, 7161, 320, 7163, 2767, 7164, 7165, 7166, 7167, 7180, 7181, 566, 7184, 7188, 345, 1548, 317, 7192, 1155, 317, 317, 317, 317, 1160, 7155, 317, 317,
- 7157, 7156, 633, 7158, 7159, 7160, 7162, 2885, 317, 317, 317, 317, 4857, 621, 317, 317, 1155, 317, 317, 1168, 317, 350, 7168, 7169, 7170, 362, 317,
- 7171, 7175, 7172, 317, 7173, 317, 7174, 1160, 317, 7176, 7177, 317, 4984, 5793, 7178, 317, 7179, 2108, 490, 317, 566, 317, 317, 2146, 7182, 7183, 345,
- 7185, 7186, 7187, 7189, 7190, 7191, 7194, 7195, 7196, 7198, 7204, 317, 7206, 7208, 7211, 404, 501, 7199, 488, 642, 7200, 7201, 673, 922, 1588, 317, 7202,
- 7203, 7205, 489, 317, 1108, 317, 7207, 365, 317, 5439, 7209, 356, 7210, 332, 317, 4984, 317, 7212, 7213, 404, 317, 317, 317, 490, 1160, 7214, 7216,
- 7218, 7228, 7230, 7233, 7243, 317, 317, 7217, 7219, 7224, 317, 317, 7226, 7220, 7221, 317, 7222, 317, 7223, 7225, 7227, 404, 5616, 317, 7229, 7231, 7232,
- 317, 490, 7234, 356, 7238, 7235, 7236, 7237, 317, 7239, 7240, 7241, 7242, 7244, 1588, 7245, 7246, 7248, 7251, 7252, 7249, 365, 7250, 2110, 1526, 7253, 7254,
- 949, 7256, 7259, 7262, 490, 7268, 1383, 7270, 362, 317, 343, 7286, 7291, 7300, 7302, 7303, 7307, 7309, 7316, 343, 317, 7318, 7319, 355, 490, 7257, 7258,
- 317, 345, 466, 2073, 7260, 1347, 7261, 317, 2715, 7263, 7265, 7266, 490, 317, 7267, 7264, 317, 867, 343, 6228, 317, 317, 317, 317, 7269, 317, 1109,
- 317, 6434, 317, 7271, 7272, 7274, 7283, 390, 2146, 7273, 2184, 7275, 356, 466, 5399, 317, 7276, 7277, 7278, 7279, 7280, 7281, 7282, 7284, 7285, 7287, 7290,
- 7288, 7289, 448, 317, 7292, 317, 2067, 490, 7299, 7293, 7296, 1267, 7294, 7295, 7297, 7298, 681, 1481, 1913, 490, 7301, 5640, 332, 1588, 7304, 7305, 381,
- 7306, 7308, 7310, 317, 7313, 490, 490, 7314, 490, 7315, 317, 7311, 7312, 1160, 351, 490, 7317, 317, 4925, 1044, 317, 7320, 1358, 7322, 7324, 389, 7332,
- 7333, 7334, 7335, 7338, 7325, 7329, 390, 7326, 7328, 7327, 317, 397, 7330, 1347, 7331, 490, 5634, 7336, 7337, 7339, 2156, 7340, 7341, 7342, 7344, 7358, 7364,
- 7366, 7369, 2024, 7406, 7411, 7412, 7425, 7434, 7435, 7444, 7445, 7446, 7461, 7464, 1020, 7468, 7470, 343, 2272, 7343, 589, 1331, 317, 317, 317, 949, 649,
- 7345, 1020, 7347, 573, 7035, 7351, 7352, 7353, 7355, 7357, 317, 7346, 317, 710, 354, 7348, 7349, 7350, 4984, 3999, 6228, 317, 363, 404, 317, 7354, 395,
- 7356, 7359, 5960, 7360, 7361, 7362, 471, 7363, 7365, 371, 363, 370, 351, 7367, 7368, 5626, 4984, 7370, 7387, 7388, 7390, 7395, 7400, 7402, 317, 7404, 7371,
- 7372, 7373, 7375, 7378, 7381, 1345, 5167, 5324, 317, 2590, 7374, 7376, 382, 7377, 356, 7379, 7380, 317, 433, 345, 317, 7382, 2211, 317, 7385, 7383, 7384,
- 7386, 1347, 339, 5241, 7389, 439, 6228, 317, 7391, 7393, 317, 7394, 5840, 6089, 7392, 4952, 317, 390, 4943, 373, 4965, 608, 363, 5809, 7396, 362, 317,
- 404, 7398, 317, 5055, 7397, 317, 317, 345, 381, 7399, 7401, 5788, 7403, 6433, 317, 2631, 1358, 317, 7405, 7407, 7409, 5346, 2063, 7408, 350, 343, 317,
- 350, 7410, 350, 7413, 7415, 7416, 362, 7420, 317, 7422, 7423, 427, 7414, 2156, 317, 317, 7417, 2063, 7418, 7419, 350, 317, 7421, 351, 554, 404, 7314,
- 6412, 7424, 7389, 7426, 2272, 7429, 7430, 7427, 7428, 1325, 2058, 7431, 7432, 7433, 530, 2117, 317, 7436, 2036, 317, 7437, 1109, 7439, 7441, 381, 350, 7442,
- 5273, 5501, 5611, 1481, 7438, 7440, 2329, 5399, 1526, 7443, 356, 466, 317, 373, 5709, 317, 476, 1020, 1999, 332, 356, 6864, 4962, 7447, 7450, 7401, 7451,
- 7453, 7454, 1060, 7457, 7448, 7449, 7452, 406, 514, 7455, 7456, 6420, 343, 7458, 7459, 7460, 380, 7462, 2060, 7463, 381, 2208, 5717, 1347, 472, 7465, 7466,
- 7467, 380, 427, 7469, 2063, 3007, 345, 5623, 2631, 466, 5746, 1358, 404, 7472, 7484, 3023, 7491, 7496, 6601, 7503, 317, 7473, 7474, 7475, 7478, 7482, 5120,
- 1345, 5710, 7483, 412, 332, 350, 7476, 7477, 7479, 317, 7481, 7480, 5392, 1108, 332, 490, 1087, 363, 490, 2004, 332, 7485, 7487, 7489, 7490, 2004, 351,
- 7486, 2146, 317, 317, 7488, 7492, 7493, 7494, 7495, 7497, 7499, 7500, 7501, 5223, 7498, 1347, 351, 343, 7502, 7504, 7507, 7505, 7506, 7508, 7509, 345, 2146,
- 7511, 2391, 363, 7513, 381, 7515, 7517, 317, 565, 7518, 396, 7520, 317, 7522, 7523, 7524, 7526, 7514, 1160, 7516, 317, 2110, 1160, 7519, 490, 357, 5611,
- 317, 317, 2260, 7521, 317, 7525, 317, 7527, 7529, 7531, 7547, 7573, 317, 7530, 4943, 317, 5570, 490, 7532, 7533, 363, 317, 317, 317, 7534, 7535, 7536,
- 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, 7548, 7569, 363, 7570, 7549, 7550, 317, 317, 317, 1353, 317, 317, 7556, 2077, 362, 7561, 7563,
- 7566, 7568, 5037, 1267, 7551, 7552, 7553, 7554, 7555, 7557, 1188, 7558, 317, 7559, 317, 7560, 5492, 7562, 7564, 343, 7565, 7567, 4591, 317, 345, 7571, 7572,
- 7574, 317, 565, 317, 1160, 317, 345, 7576, 7577, 7578, 7579, 1230, 7579, 2163, 7581, 7583, 356, 2074, 317, 7582, 390, 7584, 2301, 7585, 7587, 7589, 404,
- 7591, 7593, 7595, 362, 7599, 7600, 361, 7601, 1060, 343, 7588, 2178, 5624, 7590, 7448, 448, 7592, 392, 7594, 317, 7596, 7597, 7598, 7447, 317, 317, 356,
- 7602, 426, 7604, 7618, 7619, 7643, 7652, 501, 7661, 7664, 7675, 7683, 1700, 7688, 7689, 317, 7605, 317, 7607, 7609, 7610, 317, 7613, 317, 7616, 317, 2035,
- 7606, 7608, 1459, 7611, 2369, 7612, 5328, 5570, 345, 7614, 317, 7615, 7617, 2381, 489, 1160, 4591, 7620, 7628, 317, 317, 748, 317, 7621, 7622, 7623, 7625,
- 2108, 4949, 4949, 7624, 7626, 7627, 7629, 6425, 7630, 7631, 7632, 7633, 317, 7634, 7635, 7639, 7636, 7637, 7638, 7640, 7641, 2510, 317, 370, 317, 382, 5055,
- 7642, 7644, 7646, 7647, 7648, 7650, 317, 7645, 317, 2152, 396, 7452, 7649, 390, 343, 7651, 1358, 2146, 7653, 317, 7655, 7656, 7658, 350, 7654, 317, 349,
- 345, 7657, 7659, 7660, 1347, 460, 7662, 7663, 4984, 371, 2298, 343, 7665, 7669, 6355, 7670, 7673, 2035, 317, 7674, 7666, 7667, 7668, 7671, 5028, 7672, 2410,
- 7676, 7679, 7680, 7677, 7678, 350, 7681, 7682, 317, 401, 7684, 7685, 3751, 7686, 7687, 7691, 7693, 393, 7696, 7697, 317, 7706, 490, 7692, 5238, 1108, 7694,
- 489, 7695, 551, 2581, 7698, 7699, 7701, 7705, 317, 7700, 317, 741, 427, 7702, 7703, 7704, 1358, 317, 345, 7708, 7714, 7720, 7723, 317, 5237, 317, 373,
- 7709, 7710, 345, 1108, 490, 7711, 332, 7712, 2322, 317, 6981, 7713, 317, 317, 351, 332, 317, 7715, 7717, 317, 317, 317, 7716, 7718, 7719, 332, 2462,
- 317, 404, 490, 4965, 7196, 7721, 7722, 357, 332, 7724, 7726, 6318, 363, 1992, 7727, 3573, 362, 7098, 565, 490, 317, 7729, 7730, 4591, 490, 1459, 317,
- 317, 490, 490, 363, 7266, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7745, 7746, 7813, 7859, 7862, 7863, 7903, 7904, 7912, 355, 7943, 7945, 7959, 7970,
- 7991, 8028, 8032, 8046, 8048, 8053, 8055, 7740, 7741, 7742, 7743, 7744, 7747, 7748, 7749, 350, 317, 5687, 7757, 7758, 365, 7766, 490, 7772, 7793, 7794, 7803,
- 7804, 490, 7806, 373, 343, 350, 2222, 317, 7750, 357, 7756, 317, 7751, 7752, 317, 7753, 7754, 7755, 351, 1943, 317, 7759, 7761, 6565, 466, 401, 7760,
- 7762, 7763, 7764, 7765, 5223, 2537, 7767, 7523, 317, 317, 1358, 7770, 490, 7768, 2272, 637, 7769, 633, 694, 317, 317, 1267, 317, 7771, 5130, 7773, 7777,
- 7778, 7780, 7783, 7785, 5619, 317, 7786, 317, 7774, 7776, 7775, 7779, 363, 7781, 7782, 7784, 7787, 7788, 7789, 7790, 317, 7791, 7792, 317, 345, 363, 5363,
- 490, 317, 7795, 317, 568, 7802, 7796, 7798, 7797, 7799, 7800, 7801, 317, 1033, 343, 7805, 363, 7807, 7808, 7811, 390, 7809, 7810, 7812, 2603, 317, 345,
- 5217, 490, 317, 7814, 7822, 7827, 7840, 7842, 7844, 7851, 2163, 490, 365, 317, 7815, 332, 7816, 7817, 7818, 7819, 7820, 433, 7821, 590, 7823, 7824, 637,
- 1266, 317, 633, 2077, 7825, 7826, 317, 4980, 317, 6021, 317, 523, 7828, 6266, 7832, 490, 7835, 7838, 7829, 7830, 7831, 7833, 5200, 7834, 7836, 7837, 1347,
- 345, 7839, 7841, 393, 317, 7843, 317, 345, 7845, 7846, 990, 349, 317, 5788, 393, 7847, 7849, 317, 7848, 2272, 4984, 5439, 317, 345, 7850, 7852, 7853,
- 7856, 7857, 7854, 7855, 447, 7858, 7860, 7861, 7852, 5993, 317, 342, 7864, 7866, 490, 4943, 7867, 7869, 7870, 7874, 7875, 7882, 7895, 7899, 317, 317, 7901,
- 7865, 332, 2178, 7868, 7871, 7872, 317, 466, 317, 317, 382, 7873, 410, 7876, 7877, 7879, 5200, 490, 7881, 356, 466, 5399, 2381, 317, 7878, 7880, 317,
- 350, 317, 7883, 362, 317, 7893, 317, 317, 7884, 332, 1109, 7890, 317, 7892, 7885, 741, 7889, 345, 317, 317, 317, 7886, 317, 317, 317, 7887, 317,
- 317, 345, 427, 7888, 7891, 317, 7894, 554, 363, 7055, 2291, 7896, 7897, 7898, 2322, 490, 1444, 7900, 412, 350, 6551, 2291, 7902, 936, 363, 7905, 7907,
- 7906, 7908, 7909, 7910, 7911, 7913, 7914, 7917, 7922, 7923, 7926, 7927, 381, 7932, 7934, 7937, 7942, 7915, 317, 317, 7916, 345, 7918, 7919, 317, 363, 7920,
- 7921, 317, 7924, 7925, 317, 620, 345, 317, 7928, 1347, 317, 490, 7929, 7930, 317, 5603, 317, 7931, 7933, 6600, 317, 355, 317, 3505, 5570, 317, 5332,
- 317, 7935, 7936, 5325, 7938, 7940, 317, 7941, 7939, 7944, 363, 7946, 7948, 7950, 7955, 7958, 7947, 317, 2024, 317, 7949, 7951, 317, 7952, 7953, 7954, 7956,
- 345, 7957, 5087, 317, 4984, 2156, 427, 7960, 317, 7963, 363, 7961, 7962, 370, 7964, 7965, 7969, 7966, 7967, 7968, 345, 339, 7971, 332, 7972, 7973, 317,
- 7974, 7975, 7977, 1347, 381, 7987, 317, 5439, 332, 317, 2610, 7976, 490, 317, 343, 5105, 7978, 7979, 7980, 7981, 7982, 7984, 7985, 5325, 317, 2142, 5788,
- 317, 5033, 317, 317, 343, 7983, 345, 7986, 7988, 7989, 317, 7990, 317, 7992, 7994, 7996, 8012, 8015, 317, 8022, 8024, 317, 382, 7993, 317, 490, 317,
- 7995, 317, 1347, 4952, 7997, 8001, 8010, 317, 7998, 7999, 8000, 8002, 363, 8004, 8006, 8003, 5055, 4591, 8005, 345, 2163, 8007, 2627, 8008, 8009, 317, 8011,
- 8013, 8014, 8016, 8017, 317, 8018, 8021, 8019, 2184, 5488, 8020, 8023, 343, 8025, 8026, 2156, 8027, 1325, 5054, 8029, 1020, 2310, 8030, 317, 317, 7776, 390,
- 343, 8031, 8033, 7737, 8034, 380, 8036, 8037, 8038, 8039, 6674, 7590, 8035, 365, 2219, 6674, 1453, 367, 8040, 8045, 5309, 363, 8041, 8042, 8043, 8044, 8047,
- 7850, 371, 8049, 8050, 357, 8052, 8051, 2521, 5675, 466, 317, 370, 8054, 6228, 8056, 8057, 8061, 8062, 317, 317, 393, 343, 8058, 2366, 8059, 8060, 8063,
- 8064, 343, 8065, 8066, 8067, 8068, 8077, 8185, 8187, 8209, 8305, 8330, 8334, 8420, 8429, 8472, 8479, 8491, 8492, 8564, 1060, 8590, 8592, 8595, 17, 8871, 8882,
- 8883, 8884, 8888, 8907, 8069, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8078, 8084, 8097, 8103, 8112, 8118, 1347, 8119, 8123, 8140, 8145, 8149, 8154, 8160, 8171,
- 332, 8181, 490, 8079, 8082, 343, 525, 8080, 8081, 8083, 8085, 8088, 350, 8094, 8096, 8086, 8087, 8089, 8090, 8091, 8092, 8093, 1347, 401, 2004, 595, 8095,
- 381, 8098, 332, 8100, 8101, 351, 8099, 8102, 317, 5727, 380, 5241, 8104, 8106, 8105, 8107, 8108, 8109, 5241, 8110, 8111, 8113, 317, 8117, 8114, 8115, 8116,
- 2948, 381, 338, 8120, 8121, 2003, 8122, 633, 8124, 8125, 8126, 1943, 8130, 8131, 8133, 8134, 8127, 8128, 8129, 317, 434, 8132, 7380, 7834, 317, 2156, 317,
- 316, 385, 8135, 8138, 8139, 8136, 8137, 1347, 1347, 5699, 8141, 2110, 1481, 8142, 8143, 8144, 345, 8146, 6409, 365, 8147, 490, 317, 1444, 8148, 3236, 8150,
- 393, 2110, 8151, 8152, 8153, 2094, 2163, 8155, 317, 8159, 5241, 8156, 8157, 317, 1160, 317, 8158, 317, 7242, 6402, 317, 8161, 490, 8163, 8162, 365, 8164,
- 8169, 8165, 8166, 8167, 490, 8168, 490, 1347, 345, 1109, 8170, 317, 8172, 5482, 8173, 8174, 8179, 317, 8175, 8176, 8177, 8178, 8180, 317, 7560, 4268, 8182,
- 8183, 8184, 8186, 8188, 8190, 8196, 8201, 317, 8206, 8207, 3361, 8208, 7942, 317, 8189, 8191, 8193, 381, 8192, 6993, 8194, 2510, 8195, 380, 596, 317, 8197,
- 488, 8198, 5238, 8199, 5201, 8200, 356, 466, 362, 317, 5634, 317, 317, 8202, 8204, 490, 332, 8203, 8205, 1915, 1109, 8170, 490, 2146, 949, 8210, 8220,
- 8232, 8233, 8235, 8239, 8297, 8299, 8303, 8211, 8215, 574, 370, 8218, 490, 317, 2110, 8212, 5241, 8213, 8214, 8216, 8217, 8219, 363, 343, 7949, 8221, 8229,
- 317, 5896, 8222, 8223, 8225, 362, 363, 8226, 4980, 8224, 6594, 371, 317, 363, 8227, 6046, 317, 8228, 317, 5037, 8230, 363, 8231, 2178, 490, 651, 3726,
- 317, 362, 490, 8234, 317, 317, 8236, 8237, 8238, 350, 363, 2211, 317, 317, 362, 8240, 8246, 8263, 343, 8269, 404, 8286, 317, 8292, 8241, 8242, 317,
- 8244, 8245, 7850, 365, 317, 8243, 317, 332, 371, 6228, 8247, 8251, 382, 8252, 317, 317, 8253, 8254, 8255, 2715, 6817, 8256, 8261, 621, 8248, 317, 633,
- 633, 2163, 317, 8249, 489, 317, 363, 363, 8250, 317, 317, 6831, 1109, 6228, 317, 490, 7384, 365, 2715, 5890, 317, 363, 317, 681, 8257, 8258, 651,
- 1353, 317, 1025, 1353, 317, 345, 8259, 1160, 317, 317, 1267, 317, 317, 8260, 8262, 7118, 490, 1267, 1209, 4984, 8264, 8265, 490, 8267, 8268, 317, 317,
- 8266, 317, 7186, 343, 345, 8270, 6355, 8273, 8276, 8279, 8281, 8282, 8271, 8272, 8274, 8275, 2410, 8277, 8278, 8280, 4591, 2086, 317, 8283, 370, 8284, 8285,
- 2163, 8287, 5890, 317, 8288, 8289, 8290, 8291, 8293, 8294, 8295, 8296, 748, 8298, 3361, 637, 1300, 8300, 633, 694, 8301, 362, 8302, 490, 8304, 1481, 8306,
- 8309, 8310, 343, 2067, 8312, 8324, 8326, 8329, 317, 317, 8307, 5038, 1481, 8308, 490, 5439, 8311, 6188, 8313, 317, 8316, 8314, 8315, 8317, 345, 8318, 8319,
- 8110, 8320, 317, 8321, 8322, 8323, 490, 8325, 343, 8327, 363, 8328, 8331, 8332, 2551, 8333, 1489, 8335, 8338, 5205, 2134, 8366, 2146, 8385, 8398, 8406, 8408,
- 404, 8410, 8419, 1020, 8178, 8336, 8337, 317, 8339, 8363, 8365, 8340, 8341, 8342, 317, 317, 8344, 8345, 317, 1353, 8346, 8347, 2077, 8348, 8349, 8352, 8356,
- 8358, 8361, 8362, 363, 317, 673, 317, 1018, 317, 1267, 317, 317, 317, 8343, 317, 317, 317, 621, 889, 317, 367, 384, 490, 317, 2715, 2156, 8350,
- 8351, 317, 8353, 317, 490, 6458, 8354, 8355, 317, 7143, 317, 317, 427, 317, 317, 8357, 317, 971, 8359, 8360, 317, 7672, 332, 317, 2715, 317, 8178,
- 5890, 365, 971, 7386, 317, 5991, 466, 8364, 363, 317, 317, 363, 2236, 5570, 8367, 8368, 490, 8370, 317, 317, 8369, 7566, 2142, 365, 8371, 8375, 343,
- 8376, 8379, 8382, 8372, 8373, 8374, 317, 2355, 6486, 5033, 8377, 8378, 8380, 8381, 8383, 8384, 8386, 8387, 8393, 8397, 427, 5793, 345, 356, 317, 8388, 317,
- 8391, 317, 1347, 8392, 404, 317, 5898, 8389, 8390, 363, 350, 4984, 8394, 1992, 8395, 8396, 7888, 7888, 7437, 741, 317, 8399, 8401, 317, 490, 8402, 2715,
- 8404, 343, 8400, 4984, 317, 317, 8403, 8405, 317, 8407, 317, 371, 351, 370, 7657, 8409, 8411, 8413, 8415, 5570, 2381, 8412, 8414, 317, 317, 1526, 6228,
- 317, 8416, 8417, 317, 8418, 3505, 8421, 8422, 8424, 365, 8425, 8423, 8426, 8428, 8427, 2261, 4591, 317, 433, 8430, 365, 5033, 490, 8431, 8432, 8452, 8454,
- 8456, 8457, 8460, 8471, 2210, 317, 8433, 8446, 8447, 8449, 345, 8434, 8438, 8441, 8443, 317, 317, 8435, 345, 8436, 8437, 8439, 8440, 8442, 5447, 5113, 2510,
- 8444, 8445, 8448, 8450, 5459, 8451, 8453, 490, 4980, 8455, 7242, 427, 8458, 8459, 317, 317, 8461, 8465, 8466, 490, 404, 317, 8462, 8463, 8464, 8467, 8468,
- 8469, 8470, 6420, 490, 371, 490, 8473, 8476, 582, 8478, 7949, 365, 8474, 317, 317, 8475, 574, 490, 8477, 317, 2280, 317, 6600, 8480, 8485, 317, 489,
- 8487, 2022, 8489, 8481, 8482, 8483, 8484, 8486, 8266, 427, 8488, 8490, 427, 427, 8493, 8518, 8531, 8545, 8547, 8554, 8563, 8494, 8499, 673, 649, 8501, 8504,
- 8505, 8508, 8511, 8512, 8515, 317, 317, 8495, 317, 8496, 633, 8497, 8498, 8500, 317, 1519, 1889, 621, 317, 8502, 343, 8503, 382, 390, 320, 4314, 317,
- 8506, 8507, 317, 8509, 317, 2351, 8510, 8513, 8514, 2146, 5570, 8516, 8517, 8519, 370, 343, 8520, 8523, 8526, 8527, 8528, 8530, 351, 8521, 343, 345, 8522,
- 343, 8524, 8525, 8529, 5365, 5447, 466, 6195, 8532, 8537, 8538, 490, 8234, 5862, 490, 8540, 8533, 317, 8534, 317, 8535, 8536, 6228, 317, 317, 2077, 317,
- 317, 8539, 8541, 8542, 8543, 8544, 8546, 8548, 5051, 8550, 8552, 8549, 332, 8551, 5708, 356, 8553, 317, 8555, 5200, 8558, 317, 8559, 8562, 5890, 8556, 8557,
- 370, 317, 351, 1526, 3854, 345, 8560, 8561, 8565, 317, 8566, 490, 8568, 8570, 8573, 1060, 8579, 8581, 317, 8585, 8588, 490, 401, 1347, 8557, 8567, 317,
- 8569, 8571, 343, 8572, 596, 4591, 317, 8574, 8575, 8576, 4965, 397, 8577, 345, 8578, 8580, 8582, 8584, 8583, 8586, 8587, 8589, 317, 8591, 8593, 8594, 8596,
- 8598, 8601, 8604, 565, 8606, 317, 8607, 8609, 7600, 8615, 8618, 5238, 317, 8597, 8599, 332, 8600, 8602, 5865, 8603, 5309, 8605, 381, 317, 7983, 363, 317,
- 5309, 370, 4738, 8608, 8610, 8614, 8611, 8612, 8613, 8616, 2272, 8617, 356, 381, 317, 8619, 8620, 410, 356, 466, 317, 6228, 8621, 8638, 8639, 8640, 8661,
- 8691, 8826, 8829, 362, 8831, 8857, 1345, 8864, 8865, 8867, 5087, 8622, 8626, 8627, 317, 8634, 490, 8623, 8624, 8625, 8158, 5441, 8628, 317, 490, 8629, 317,
- 8630, 8631, 8632, 8633, 317, 8635, 345, 8636, 8637, 5450, 8641, 8644, 317, 8648, 8650, 8652, 8655, 8656, 317, 8642, 317, 8643, 8645, 8646, 8647, 317, 8649,
- 8651, 317, 8653, 351, 7385, 8654, 8657, 8659, 8658, 8660, 8662, 8665, 8666, 8676, 6903, 317, 8663, 343, 1347, 317, 8664, 317, 8667, 8670, 8674, 8668, 8669,
- 8671, 8672, 8673, 317, 345, 1526, 317, 8675, 317, 6996, 317, 317, 317, 317, 317, 317, 317, 8677, 8678, 2627, 317, 8679, 339, 8680, 8681, 8683, 8685,
- 8687, 8682, 8684, 8686, 8688, 8689, 8690, 521, 317, 8692, 8696, 8703, 8736, 8741, 8742, 8749, 8752, 8754, 8757, 8764, 8768, 8776, 8787, 8793, 8799, 8816, 8821,
- 565, 8693, 8694, 8695, 8697, 345, 8701, 8702, 8698, 8699, 8700, 8704, 8705, 8710, 8714, 8723, 317, 8734, 8706, 6602, 8707, 8708, 8709, 8711, 8712, 8713, 5447,
- 5987, 448, 8715, 8716, 8719, 8717, 343, 8718, 8720, 8721, 8722, 8724, 8727, 8730, 8725, 8726, 8728, 8729, 8731, 8732, 8733, 8735, 8737, 574, 8738, 8739, 8740,
- 8743, 3236, 8745, 8747, 8744, 8746, 8748, 8271, 5173, 8750, 5217, 8751, 317, 389, 345, 867, 8753, 317, 8755, 317, 8756, 363, 8758, 8760, 2590, 8759, 349,
- 8761, 8762, 8763, 8765, 8767, 8766, 7865, 345, 8769, 8771, 343, 8773, 8774, 8770, 8772, 8775, 8777, 5054, 8782, 8783, 8784, 8778, 317, 8781, 8779, 8780, 5784,
- 332, 343, 8785, 8786, 8788, 8789, 1347, 8792, 8790, 1526, 8791, 317, 5055, 345, 382, 5201, 8794, 8795, 8796, 8797, 8798, 8800, 8805, 497, 490, 8808, 8812,
- 8801, 393, 2094, 8802, 8803, 8804, 8806, 8807, 8809, 8810, 8811, 8813, 8814, 8815, 2193, 8817, 8819, 2026, 8820, 8818, 2163, 520, 8822, 8824, 8823, 363, 427,
- 8825, 8827, 8828, 8830, 8832, 490, 8835, 8837, 8839, 8855, 490, 8833, 8834, 8836, 371, 8838, 345, 7126, 8840, 8842, 8847, 8853, 6046, 7385, 317, 8841, 2086,
- 8843, 8484, 8845, 8844, 8846, 8848, 390, 8849, 8850, 8851, 317, 8852, 489, 8275, 317, 317, 317, 317, 345, 317, 317, 317, 317, 365, 317, 2715, 317,
- 7185, 8854, 317, 2108, 8856, 8858, 8859, 362, 1020, 317, 4591, 2279, 8860, 8861, 8862, 8863, 8866, 317, 5392, 363, 8868, 7916, 8869, 8870, 8872, 8873, 8875,
- 8876, 8881, 1481, 8874, 8877, 8878, 317, 8879, 8880, 8885, 5200, 8886, 8887, 6670, 8889, 8891, 8895, 2171, 2272, 8897, 8898, 489, 8905, 8890, 8892, 8893, 8894,
- 8896, 8899, 8900, 490, 3999, 382, 8901, 8902, 8903, 8904, 1531, 8906, 8908, 365, 8911, 8912, 8913, 317, 317, 8909, 8910, 2272, 2612, 317, 8610, 490, 8914,
- 596, 370, 490, 390, 8916, 365, 8917, 8920, 8921, 8922, 489, 8923, 363, 8926, 866, 343, 949, 632, 426, 8918, 8919, 2719, 317, 412, 7906, 8924, 8925,
- 8927, 317, 345, 8945, 8957, 565, 8958, 8969, 8973, 8974, 8979, 8980, 9043, 9158, 9169, 9173, 9178, 9186, 3426, 8928, 8931, 1108, 8932, 2081, 490, 8938, 8941,
- 4965, 8929, 8930, 317, 1011, 317, 2280, 2280, 8933, 8934, 8611, 8935, 343, 8936, 8937, 8939, 5571, 490, 317, 8940, 5888, 5399, 8942, 574, 8943, 2094, 317,
- 8944, 317, 317, 8946, 362, 8949, 8950, 8956, 317, 317, 8947, 362, 1020, 8948, 596, 8951, 8953, 8952, 8954, 8955, 8959, 8960, 8961, 8962, 8964, 5226, 317,
- 8963, 8965, 8966, 8967, 8968, 1358, 8549, 8970, 514, 5237, 317, 8971, 8972, 351, 3999, 8975, 370, 8976, 8978, 356, 2094, 8977, 8981, 8990, 380, 558, 9001,
- 9006, 5792, 9028, 9032, 9039, 8982, 8986, 8989, 8983, 8984, 8985, 343, 8636, 8987, 8988, 8991, 8992, 2280, 5483, 8993, 8994, 8995, 8996, 8997, 8998, 8999, 9000,
- 9002, 9005, 9003, 9004, 9007, 9014, 9023, 565, 9008, 9013, 9009, 9010, 9011, 9012, 9015, 9018, 9016, 9017, 1588, 2163, 9019, 317, 9020, 9021, 9022, 4984, 345,
- 9024, 9027, 6163, 9025, 317, 317, 345, 9026, 5717, 5447, 466, 1347, 2163, 490, 9029, 9030, 9031, 2163, 401, 9033, 9034, 2156, 9035, 9037, 317, 370, 2156,
- 9036, 574, 339, 345, 9038, 9040, 9041, 9042, 5652, 8544, 490, 9044, 9054, 9082, 9084, 9105, 9119, 9120, 317, 317, 9045, 9049, 9050, 9046, 5174, 6199, 9047,
- 9048, 9051, 9053, 5365, 9052, 9055, 9058, 9065, 9076, 9079, 5273, 9056, 9057, 5708, 356, 466, 317, 5019, 466, 9059, 9060, 466, 9061, 362, 9064, 317, 574,
- 501, 9062, 317, 4268, 9063, 317, 5054, 9066, 9073, 9067, 9068, 9071, 9069, 317, 9070, 9072, 382, 317, 345, 5828, 9074, 9075, 9077, 404, 317, 9078, 9080,
- 5634, 9081, 2510, 466, 9083, 343, 317, 345, 9085, 9087, 9101, 9104, 2184, 9086, 5363, 343, 9088, 6996, 317, 317, 317, 9089, 2171, 9091, 9093, 2052, 317,
- 2058, 9096, 9098, 9099, 550, 741, 9090, 448, 317, 317, 448, 9092, 545, 1358, 384, 9094, 9095, 1266, 317, 9097, 1526, 363, 343, 317, 9100, 2627, 574,
- 5708, 9102, 5464, 1992, 965, 9103, 5457, 4268, 5167, 9106, 9110, 9111, 9114, 9107, 9108, 9109, 466, 5399, 317, 332, 5431, 9112, 9113, 9115, 9116, 9117, 9118,
- 9121, 9125, 9141, 9142, 9122, 9123, 4564, 9124, 9126, 9131, 9134, 9127, 9128, 6020, 9129, 5447, 9130, 382, 363, 343, 9132, 9133, 5363, 5220, 9135, 9136, 9137,
- 9138, 317, 9139, 9140, 9143, 5488, 9146, 9152, 9153, 9144, 9145, 410, 5464, 466, 9147, 9148, 9149, 9150, 9151, 5113, 317, 370, 2571, 317, 4564, 5447, 8553,
- 9154, 9155, 9156, 381, 9157, 7640, 5113, 9159, 9160, 9161, 9168, 5056, 380, 9162, 9163, 9164, 9165, 9166, 9167, 621, 317, 317, 317, 317, 317, 490, 317,
- 317, 1347, 2086, 2110, 9170, 2609, 9171, 8392, 9172, 9174, 9175, 9177, 370, 9176, 363, 4040, 490, 9179, 9181, 9183, 317, 9185, 9180, 9182, 5217, 9184, 9188,
- 2073, 490, 380, 9192, 9196, 9218, 2776, 9189, 9190, 9191, 317, 9193, 9194, 9195, 9197, 9208, 9210, 9198, 9199, 317, 7149, 5379, 9201, 9203, 317, 9206, 9200,
- 9202, 4984, 2271, 9204, 4984, 317, 1915, 9205, 9207, 9209, 2210, 4591, 332, 2509, 9211, 9215, 1588, 9216, 9212, 9213, 9214, 9217, 2272, 5241, 9219, 9222, 9271,
- 9294, 9411, 9428, 9463, 9464, 9499, 9502, 9556, 9560, 9579, 9588, 9653, 9678, 9703, 9708, 9714, 9762, 9784, 9868, 9879, 9885, 9888, 9889, 9891, 9220, 9221, 949,
- 9223, 9229, 9237, 9239, 9240, 9246, 9247, 9249, 9250, 9255, 9259, 965, 9262, 9263, 9266, 9267, 9270, 7850, 490, 9224, 9225, 9227, 343, 317, 2381, 9226, 5616,
- 1109, 9228, 317, 5355, 490, 5488, 9230, 9232, 343, 9231, 490, 9233, 9235, 9236, 9234, 317, 6355, 9238, 317, 381, 2110, 9241, 9242, 9245, 365, 317, 317,
- 9243, 5684, 8522, 9244, 9027, 3688, 317, 9248, 1347, 365, 8217, 490, 365, 7790, 9251, 9252, 332, 5419, 9254, 6394, 9253, 490, 5611, 1347, 9256, 1109, 7301,
- 332, 9257, 317, 348, 9258, 317, 6555, 9260, 9261, 9264, 9265, 9268, 332, 317, 9269, 317, 5241, 5241, 6486, 317, 439, 332, 9272, 9273, 9276, 9283, 9288,
- 9290, 2142, 317, 4943, 9274, 1108, 9275, 450, 317, 317, 9277, 332, 351, 9278, 9279, 363, 343, 317, 9280, 9282, 9281, 317, 317, 404, 2510, 9284, 9285,
- 317, 9286, 351, 412, 412, 2004, 2004, 9287, 5105, 741, 9289, 317, 9291, 317, 9292, 365, 373, 9293, 345, 9295, 9302, 2163, 9305, 9396, 2301, 9399, 9401,
- 9402, 9410, 9296, 9299, 332, 490, 574, 5447, 9297, 7000, 9298, 345, 317, 317, 317, 9300, 317, 427, 9301, 317, 317, 490, 5241, 3854, 9303, 317, 9304,
- 9306, 9326, 9332, 9345, 9355, 2387, 9386, 9389, 9391, 9393, 7405, 3284, 9307, 339, 9317, 9323, 5105, 9308, 9309, 9314, 9310, 9311, 9312, 317, 9313, 4268, 9315,
- 9316, 9318, 9319, 9320, 9321, 9322, 317, 9324, 9325, 428, 9327, 578, 9328, 9329, 9330, 9331, 401, 317, 373, 9333, 9338, 9343, 9334, 9335, 9336, 9337, 9339,
- 9340, 9341, 9342, 363, 1347, 9344, 343, 363, 317, 6415, 9346, 9347, 9348, 9351, 317, 9352, 317, 9349, 9350, 9353, 9354, 380, 1347, 521, 9356, 9358, 9364,
- 9365, 382, 9371, 9372, 9376, 9384, 9357, 9226, 578, 317, 9359, 9360, 9361, 9362, 9363, 9366, 9369, 9367, 9368, 9370, 9373, 317, 9374, 9375, 9377, 9382, 9378,
- 9379, 8682, 317, 9380, 9381, 5701, 1347, 9383, 380, 5447, 9385, 382, 4268, 1347, 9387, 9388, 9390, 9392, 9394, 317, 9395, 317, 490, 2178, 490, 9364, 9397,
- 2381, 332, 317, 9398, 317, 490, 9400, 317, 317, 9403, 9404, 5910, 1109, 5482, 9405, 9406, 9407, 9408, 9409, 574, 365, 317, 365, 9412, 317, 9414, 9417,
- 9420, 350, 9421, 9424, 9425, 9426, 4974, 2391, 3361, 390, 362, 1345, 317, 9413, 390, 317, 342, 5482, 9415, 9416, 370, 9413, 362, 490, 5891, 9304, 2156,
- 5324, 2219, 363, 317, 9418, 9419, 2272, 7035, 363, 1588, 363, 9422, 317, 9423, 370, 5271, 317, 9427, 4591, 9429, 9430, 9431, 7061, 317, 9432, 9433, 9435,
- 9437, 9441, 2381, 9452, 9454, 9455, 9457, 9459, 7399, 2142, 2381, 8549, 7801, 3375, 9434, 345, 9436, 9438, 9439, 7657, 9440, 381, 9442, 9444, 9445, 317, 9448,
- 345, 7035, 9451, 1100, 317, 9443, 1078, 5241, 317, 9446, 351, 2161, 317, 317, 9447, 390, 9449, 9450, 363, 554, 9453, 317, 9456, 317, 1943, 9458, 590,
- 9460, 9461, 9462, 317, 1194, 362, 9465, 9467, 9475, 9476, 9477, 9480, 9481, 9493, 7053, 380, 9466, 7053, 7356, 5241, 9468, 317, 9474, 380, 7053, 9469, 8419,
- 317, 9470, 9471, 317, 427, 317, 2178, 9472, 1347, 9473, 362, 1347, 5890, 363, 317, 2271, 332, 9478, 1345, 343, 9479, 343, 434, 5926, 9482, 7053, 9483,
- 9484, 9487, 8273, 9489, 5223, 317, 9485, 317, 490, 9486, 332, 9488, 1992, 9490, 332, 9491, 9492, 6430, 317, 9494, 9495, 317, 5153, 9496, 317, 9497, 9498,
- 9500, 9501, 345, 4212, 381, 9503, 9506, 9509, 9510, 317, 9513, 9514, 9515, 9516, 9518, 9519, 2357, 9520, 9543, 345, 9550, 9552, 9504, 380, 343, 317, 9505,
- 317, 490, 317, 317, 5343, 6069, 317, 317, 1347, 9507, 317, 9508, 345, 397, 343, 9511, 1160, 9512, 345, 490, 2322, 381, 317, 9517, 2322, 317, 2080,
- 317, 317, 5862, 5517, 390, 490, 317, 2322, 317, 9521, 1109, 9522, 9523, 343, 9526, 3429, 9524, 9525, 9527, 9529, 9531, 9528, 2156, 9530, 9532, 9533, 9536,
- 317, 9539, 9541, 9534, 9535, 370, 7242, 9537, 9538, 9540, 9542, 1358, 317, 9544, 9545, 9546, 9547, 9548, 9549, 9551, 6851, 7565, 9553, 9555, 365, 9554, 490,
- 7266, 9557, 6002, 2035, 9558, 9559, 9561, 9566, 9568, 9574, 2402, 9576, 7053, 9562, 9565, 1459, 9563, 343, 317, 9564, 2134, 348, 380, 490, 9567, 9569, 317,
- 9570, 9571, 9572, 9573, 9575, 9577, 317, 9578, 9580, 9582, 9584, 9587, 317, 6318, 9581, 363, 990, 363, 4943, 5891, 317, 9583, 317, 1109, 5793, 317, 317,
- 9585, 345, 490, 317, 9586, 6415, 6382, 9589, 9606, 9611, 9612, 9624, 9625, 1020, 317, 9637, 6255, 1479, 9641, 6089, 9650, 363, 9590, 9591, 9596, 2627, 5399,
- 9599, 9602, 9603, 5022, 9592, 9593, 9594, 9595, 9597, 317, 338, 412, 9598, 4980, 4984, 9600, 1160, 9601, 317, 2035, 317, 317, 317, 9604, 9605, 9607, 9608,
- 6355, 317, 9609, 9609, 9610, 317, 9613, 9616, 9617, 317, 7403, 9614, 9615, 9618, 536, 8214, 9621, 9619, 9620, 1108, 1108, 317, 2829, 9622, 4965, 4280, 9623,
- 317, 9626, 345, 350, 6294, 9627, 9631, 9635, 2387, 9628, 9629, 365, 9630, 490, 317, 317, 9632, 9634, 9633, 345, 317, 9636, 355, 514, 2187, 1588, 356,
- 1325, 9638, 9639, 356, 5784, 317, 317, 9640, 317, 356, 596, 317, 9642, 363, 9645, 9643, 9644, 9646, 466, 9647, 9648, 9649, 362, 9651, 9652, 9654, 9658,
- 9660, 9662, 9665, 317, 9668, 9671, 9675, 9676, 2271, 501, 9655, 317, 9656, 317, 9657, 356, 428, 9659, 317, 5896, 6204, 380, 7114, 6046, 9661, 317, 1999,
- 427, 9663, 9664, 1160, 317, 382, 9666, 317, 9667, 9669, 1358, 317, 5223, 316, 317, 9670, 5897, 9672, 9673, 5809, 9674, 363, 1131, 404, 317, 437, 9677,
- 9679, 2142, 9681, 9687, 9693, 490, 9697, 9700, 9702, 332, 317, 9680, 9682, 363, 7891, 317, 9683, 393, 9684, 5732, 9685, 9686, 317, 317, 9688, 2280, 9689,
- 9692, 9690, 317, 9691, 317, 2317, 363, 2310, 9694, 9695, 9696, 317, 9698, 8611, 9699, 1325, 365, 9701, 380, 5447, 466, 9704, 9705, 6920, 317, 317, 332,
- 539, 9706, 9707, 9709, 9710, 9712, 4591, 6394, 332, 9711, 9713, 381, 9715, 9721, 9731, 9737, 9747, 317, 2004, 9716, 2163, 9717, 9718, 9719, 9720, 9117, 380,
- 343, 317, 6118, 1347, 9722, 9723, 2396, 9724, 9726, 2381, 2396, 5028, 9728, 317, 9730, 490, 345, 490, 7062, 9725, 5570, 363, 9727, 428, 7062, 9729, 356,
- 466, 351, 317, 9732, 9733, 9734, 9735, 9736, 9738, 6409, 371, 489, 9739, 9740, 2381, 9741, 8937, 9742, 9746, 490, 357, 8337, 2134, 2067, 9325, 9743, 466,
- 9744, 317, 9745, 6551, 2381, 9748, 9749, 332, 9750, 9751, 9757, 381, 9758, 9761, 317, 6551, 332, 9752, 9753, 9754, 9755, 9756, 317, 370, 9759, 2063, 9719,
- 9760, 5570, 317, 1347, 9763, 9765, 9769, 9776, 9778, 9780, 9782, 9764, 9766, 9767, 9768, 1962, 9770, 317, 9771, 9774, 9775, 9772, 343, 3505, 317, 9773, 317,
- 317, 317, 1331, 317, 317, 343, 317, 317, 317, 9777, 317, 317, 1020, 9779, 9781, 9783, 9785, 9787, 8301, 9793, 9795, 9817, 9819, 9828, 2022, 5662, 9858,
- 9860, 9861, 9862, 1020, 9864, 9866, 9867, 651, 9786, 9788, 2163, 356, 9790, 9789, 9791, 9792, 9794, 6551, 9796, 490, 9797, 9807, 9816, 317, 9798, 9801, 672,
- 9803, 9805, 490, 363, 345, 651, 9799, 9800, 9802, 9804, 317, 9806, 9808, 9810, 317, 317, 7590, 9809, 380, 345, 9811, 596, 9812, 9813, 9814, 9815, 5217,
- 317, 9818, 5701, 317, 351, 392, 9820, 9826, 5828, 9821, 9822, 9823, 9824, 9825, 317, 9827, 317, 633, 362, 317, 6551, 558, 9829, 1347, 9837, 6409, 9840,
- 4591, 9845, 9846, 9851, 427, 317, 9830, 9832, 9833, 9831, 9834, 9835, 317, 9836, 5447, 5113, 448, 5988, 9838, 9839, 345, 9841, 9842, 9843, 343, 9844, 350,
- 362, 9847, 9848, 9849, 9850, 9852, 363, 9854, 9853, 317, 1347, 9855, 370, 317, 9856, 9857, 9859, 345, 490, 317, 317, 1060, 317, 4019, 516, 317, 9863,
- 357, 6228, 883, 371, 317, 9865, 351, 381, 5217, 390, 9869, 9870, 332, 317, 9871, 317, 1459, 332, 590, 9872, 9877, 9873, 9874, 9875, 9876, 9878, 7776,
- 9880, 9882, 9883, 317, 317, 490, 9881, 357, 332, 501, 317, 9884, 5926, 2381, 1325, 332, 8633, 2063, 9886, 9887, 9890, 390, 317, 5265, 1347, 9892, 363,
+ 310, 321, 326, 340, 583, 585, 591, 597, 1, 2, 7, 3104, 3376, 3665, 3911, 4077, 4337, 4598, 4774, 4780, 4790, 8, 23, 48, 74, 86, 95,
+ 107, 121, 133, 140, 145, 156, 164, 187, 194, 203, 225, 227, 238, 271, 283, 285, 292, 82737,302, 306, 84250,311, 312, 313, 314, 318, 315,
+ 316, 317, 319, 320, 322, 323, 324, 325, 327, 333, 328, 329, 330, 331, 332, 334, 335, 336, 337, 338, 339, 341, 344, 344, 344, 344, 344,
+ 344, 344, 346, 368, 391, 405, 411, 415, 429, 441, 451, 461, 463, 467, 474, 480, 494, 512, 526, 528, 532, 552, 564, 567, 569, 579, 342,
+ 343, 345, 347, 349, 352, 358, 364, 366, 348, 317, 350, 351, 353, 357, 354, 355, 356, 359, 317, 360, 361, 362, 363, 317, 365, 367, 317,
+ 317, 369, 374, 382, 383, 385, 386, 381, 370, 371, 317, 372, 373, 375, 381, 376, 377, 378, 379, 380, 384, 343, 387, 388, 389, 390, 392,
+ 394, 397, 398, 402, 393, 395, 396, 399, 400, 401, 403, 317, 404, 406, 407, 409, 408, 317, 390, 410, 363, 412, 317, 413, 414, 416, 420,
+ 422, 423, 428, 417, 419, 418, 421, 343, 317, 381, 317, 351, 424, 427, 425, 426, 430, 434, 435, 438, 431, 317, 432, 433, 317, 436, 356,
+ 437, 439, 440, 381, 363, 442, 444, 445, 449, 450, 443, 356, 343, 356, 343, 317, 390, 446, 447, 448, 370, 343, 317, 393, 317, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 384, 462, 412, 464, 466, 465, 468, 469, 470, 317, 473, 370, 356, 381, 343, 471, 343, 372, 472, 317,
+ 466, 433, 382, 371, 356, 381, 343, 317, 475, 476, 477, 400, 401, 343, 317, 349, 478, 343, 381, 419, 479, 481, 483, 491, 492, 482, 459,
+ 432, 484, 485, 486, 487, 488, 489, 490, 350, 317, 317, 493, 317, 317, 433, 390, 495, 499, 500, 501, 502, 419, 505, 350, 496, 497, 498,
+ 317, 490, 317, 370, 503, 504, 317, 506, 507, 508, 509, 510, 511, 513, 516, 517, 522, 524, 514, 515, 518, 317, 381, 350, 519, 520, 521,
+ 523, 525, 343, 527, 529, 530, 531, 380, 317, 371, 439, 433, 533, 534, 537, 343, 540, 543, 544, 546, 547, 465, 535, 536, 538, 396, 439,
+ 539, 541, 542, 317, 498, 381, 343, 317, 545, 548, 549, 317, 343, 550, 551, 553, 554, 555, 559, 560, 561, 332, 381, 556, 557, 558, 356,
+ 317, 562, 343, 563, 565, 566, 568, 570, 571, 572, 575, 577, 317, 317, 350, 380, 381, 381, 573, 574, 317, 317, 576, 390, 501, 578, 580,
+ 581, 390, 317, 582, 382, 317, 584, 586, 342, 587, 588, 351, 343, 589, 590, 592, 593, 594, 595, 596, 598, 599, 426, 606, 609, 539, 613,
+ 600, 601, 602, 603, 604, 605, 607, 608, 610, 612, 608, 611, 614, 317, 345, 615, 622, 676, 782, 845, 856, 871, 884, 902, 917, 938, 959,
+ 966, 967, 972, 983, 988, 994, 999, 1001, 616, 617, 618, 619, 621, 620, 623, 650, 654, 621, 655, 656, 657, 665, 666, 674, 624, 636, 317,
+ 317, 317, 317, 638, 317, 643, 625, 317, 317, 631, 634, 626, 317, 317, 317, 317, 317, 317, 317, 317, 370, 627, 317, 317, 317, 317, 317,
+ 628, 317, 317, 629, 317, 630, 632, 633, 635, 637, 639, 640, 641, 642, 644, 646, 645, 647, 648, 649, 317, 620, 651, 652, 653, 317, 658,
+ 660, 620, 662, 663, 659, 661, 664, 317, 667, 670, 668, 669, 621, 671, 672, 673, 675, 677, 719, 725, 742, 749, 765, 768, 774, 678, 687,
+ 697, 701, 705, 708, 711, 715, 679, 685, 621, 356, 680, 621, 621, 621, 681, 682, 683, 684, 317, 317, 317, 317, 317, 317, 317, 317, 317,
+ 317, 686, 681, 681, 688, 695, 689, 690, 317, 691, 692, 693, 694, 696, 698, 699, 700, 702, 703, 704, 706, 707, 694, 621, 709, 710, 712,
+ 713, 714, 427, 317, 716, 717, 718, 720, 721, 724, 722, 723, 726, 741, 727, 733, 728, 729, 730, 731, 732, 734, 737, 735, 736, 738, 739,
+ 740, 743, 744, 746, 745, 747, 748, 750, 751, 757, 759, 752, 753, 754, 755, 756, 758, 760, 762, 761, 317, 756, 763, 764, 766, 767, 769,
+ 770, 771, 772, 773, 775, 776, 777, 778, 779, 780, 781, 783, 825, 834, 836, 843, 784, 788, 793, 798, 802, 806, 811, 816, 820, 785, 786,
+ 787, 682, 317, 789, 790, 791, 792, 621, 794, 795, 796, 797, 799, 800, 801, 682, 803, 804, 805, 682, 807, 808, 809, 810, 812, 813, 814,
+ 815, 817, 818, 819, 810, 821, 822, 823, 824, 826, 831, 827, 828, 829, 830, 832, 833, 835, 837, 840, 838, 839, 841, 842, 844, 846, 852,
+ 847, 848, 851, 709, 317, 849, 850, 694, 637, 853, 854, 855, 857, 621, 863, 867, 868, 858, 861, 649, 649, 859, 860, 649, 637, 862, 864,
+ 635, 865, 866, 869, 870, 872, 873, 877, 874, 317, 875, 876, 878, 879, 880, 881, 882, 883, 885, 890, 893, 898, 886, 317, 887, 317, 888,
+ 889, 891, 892, 894, 896, 895, 897, 899, 900, 901, 903, 908, 909, 913, 913, 904, 907, 317, 905, 317, 906, 673, 673, 910, 911, 912, 914,
+ 915, 916, 918, 925, 929, 935, 937, 919, 907, 923, 920, 921, 922, 317, 924, 708, 926, 927, 928, 930, 932, 931, 933, 934, 936, 939, 948,
+ 940, 942, 946, 941, 943, 833, 944, 945, 947, 949, 950, 696, 958, 951, 957, 952, 953, 954, 955, 956, 960, 961, 962, 963, 964, 965, 968,
+ 969, 970, 971, 973, 979, 974, 975, 976, 977, 978, 980, 981, 982, 984, 345, 985, 986, 987, 989, 990, 991, 992, 993, 995, 996, 997, 998,
+ 1000, 1002, 1003, 1004, 1005, 1008, 1010, 1012, 1014, 1081, 3, 1555, 1634, 1698, 1768, 1781, 1813, 1839, 1963, 2030, 2082, 2129, 2153, 2172, 2200, 2228, 2253,
+ 2262, 2294, 2302, 2318, 2358, 2370, 2375, 2421, 2504, 2523, 2578, 2598, 2606, 2614, 2636, 2650, 2657, 1006, 1007, 1009, 427, 1011, 1011, 412, 1013, 339, 1015,
+ 1034, 1045, 1061, 1062, 1066, 1067, 545, 1069, 1071, 1072, 427, 339, 966, 1075, 427, 427, 1079, 390, 1016, 1019, 1021, 1024, 1025, 1026, 317, 1029, 1025,
+ 317, 1030, 317, 390, 1031, 1017, 317, 390, 1018, 317, 781, 706, 1020, 1022, 1023, 621, 1027, 1028, 1027, 317, 1032, 1033, 1035, 1040, 1043, 317, 317,
+ 381, 1036, 842, 936, 1037, 1039, 637, 707, 1038, 1041, 637, 1042, 1044, 605, 1046, 317, 317, 317, 1053, 356, 1047, 1048, 740, 1049, 317, 317, 1050,
+ 1051, 1052, 1054, 1055, 1056, 1057, 1058, 1060, 1059, 317, 356, 1063, 390, 1064, 1065, 427, 390, 1068, 390, 694, 356, 1070, 648, 390, 1073, 1074, 1076,
+ 1077, 1078, 1080, 1082, 1097, 1139, 1163, 1170, 1172, 1174, 1175, 1176, 1181, 1186, 1187, 1190, 1194, 511, 427, 1195, 390, 1083, 1085, 317, 1088, 1090, 1093,
+ 1095, 317, 317, 390, 1084, 1086, 1087, 320, 1089, 1091, 1092, 673, 621, 1094, 1096, 1098, 1101, 1118, 1132, 1131, 672, 1133, 1134, 1136, 317, 390, 1137,
+ 1099, 1100, 1102, 1111, 1114, 631, 634, 1116, 1103, 1110, 1113, 317, 317, 1104, 317, 1109, 317, 317, 317, 1105, 317, 317, 317, 1106, 317, 1107, 1108,
+ 1112, 1115, 1117, 1119, 1123, 1120, 710, 1121, 1122, 1124, 1125, 317, 317, 1126, 1127, 620, 1128, 317, 1129, 1130, 928, 490, 316, 1135, 1138, 317, 1140,
+ 1152, 317, 1161, 390, 1141, 1144, 1150, 1142, 1143, 1145, 621, 637, 1146, 740, 1109, 1059, 1147, 1148, 317, 1149, 1151, 1153, 1156, 1154, 1155, 1157, 1158,
+ 1159, 1160, 1162, 1164, 1169, 390, 637, 320, 1165, 1166, 1167, 1168, 637, 694, 1171, 390, 637, 694, 673, 1173, 390, 637, 633, 928, 656, 390, 928,
+ 390, 1177, 1178, 390, 637, 637, 1179, 1180, 1182, 1185, 390, 1183, 1184, 637, 740, 694, 928, 317, 1188, 1189, 1191, 1192, 1193, 1196, 637, 1197, 1198,
+ 1206, 1231, 4, 1488, 1500, 1505, 1509, 1512, 1513, 1514, 1520, 1075, 1523, 1527, 1532, 1533, 1550, 390, 1199, 1200, 1201, 317, 1200, 1205, 966, 427, 390,
+ 1202, 1203, 1204, 1207, 1210, 1213, 1221, 1226, 317, 1229, 381, 1208, 1209, 1211, 1212, 1214, 1217, 490, 1065, 1215, 1216, 740, 621, 1218, 1220, 1219, 1222,
+ 866, 1223, 1224, 1225, 1227, 1228, 1230, 1232, 1235, 317, 317, 356, 1233, 1234, 1236, 1237, 739, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1256, 1263,
+ 5, 1398, 1406, 1417, 1421, 1422, 1425, 1431, 1435, 1436, 1443, 1445, 1452, 1454, 1455, 1457, 958, 1461, 1477, 1478, 1479, 1480, 1483, 1484, 1486, 621, 949,
+ 649, 1246, 1247, 317, 1248, 1250, 1251, 736, 1252, 317, 317, 1253, 317, 317, 317, 1249, 317, 1254, 1255, 1257, 1258, 1261, 317, 651, 317, 1259, 317,
+ 1260, 1262, 317, 736, 1264, 651, 1277, 633, 1265, 1018, 1266, 1268, 317, 1272, 317, 317, 317, 1273, 317, 317, 317, 1267, 1269, 1270, 1271, 1108, 317,
+ 1274, 1275, 1276, 1278, 1279, 1282, 1283, 1284, 6, 1374, 1375, 1377, 1378, 1380, 1384, 1386, 1396, 1394, 317, 1028, 1280, 1281, 317, 1065, 620, 317, 1160,
+ 1000, 1285, 317, 317, 1286, 1287, 317, 1288, 1290, 1293, 1294, 1296, 1299, 1352, 317, 1354, 1355, 317, 317, 317, 317, 317, 317, 317, 317, 317, 1361,
+ 317, 317, 1362, 1275, 1347, 1369, 317, 317, 317, 1371, 1289, 1291, 1292, 317, 620, 739, 1295, 1297, 317, 1298, 1018, 1300, 619, 936, 1301, 1303, 1306,
+ 1338, 1339, 317, 1340, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 1341, 1346, 1347, 317, 317, 317, 317, 317,
+ 1348, 1302, 317, 1304, 317, 1305, 317, 317, 619, 1307, 1310, 1025, 1109, 317, 317, 317, 317, 317, 317, 1333, 317, 317, 317, 317, 317, 317, 317,
+ 1308, 1309, 317, 317, 619, 1311, 1313, 317, 317, 317, 317, 317, 317, 1332, 317, 317, 317, 1312, 317, 317, 1314, 1322, 619, 1317, 1323, 1324, 317,
+ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 1326, 317, 317, 317, 317, 317, 317, 317, 1330, 1315, 1316, 317, 317, 317,
+ 317, 317, 317, 1318, 317, 317, 1321, 317, 1316, 1108, 1319, 1320, 1160, 1267, 1109, 339, 1325, 1108, 1059, 1327, 1328, 1329, 1331, 317, 1334, 1335, 1336,
+ 1337, 1155, 317, 1109, 1331, 1325, 1108, 1059, 1342, 1343, 1344, 1345, 351, 317, 1349, 1100, 1350, 1351, 317, 1353, 1205, 317, 317, 1356, 1359, 1357, 1358,
+ 1360, 1363, 1059, 1365, 1364, 1366, 1367, 1368, 317, 1370, 1372, 1373, 1376, 1379, 317, 1381, 1382, 1383, 1385, 1108, 317, 1387, 1388, 1389, 1390, 1345, 1391,
+ 1392, 1393, 1395, 1276, 1397, 740, 1399, 1401, 1404, 320, 1400, 317, 1402, 317, 1403, 317, 1405, 317, 740, 1407, 694, 1412, 1413, 1408, 1409, 1028, 317,
+ 317, 317, 1410, 1411, 317, 649, 637, 1414, 317, 1415, 1416, 317, 1271, 673, 1418, 1419, 1420, 317, 320, 649, 621, 866, 651, 649, 1423, 1424, 949,
+ 936, 866, 490, 1426, 1428, 1429, 1427, 317, 949, 317, 949, 1430, 936, 367, 1432, 1433, 1434, 363, 382, 381, 1437, 1438, 1439, 1440, 1441, 1442, 1444,
+ 384, 1446, 1447, 1448, 1449, 1450, 1451, 367, 1453, 381, 356, 428, 1456, 1458, 427, 1460, 1459, 317, 949, 936, 1462, 1464, 1465, 1463, 949, 315, 949,
+ 1466, 1468, 1467, 1266, 936, 1469, 1471, 945, 1475, 1470, 1472, 1473, 1474, 1476, 317, 356, 351, 345, 316, 1481, 1482, 949, 1243, 351, 605, 316, 1485,
+ 320, 317, 1487, 1108, 1489, 1490, 1493, 1497, 767, 390, 1491, 740, 1492, 694, 651, 1494, 1495, 1496, 1498, 1499, 620, 1501, 1502, 936, 1503, 1504, 339,
+ 390, 427, 649, 633, 621, 1506, 390, 1507, 1508, 1087, 1510, 390, 694, 1511, 620, 332, 390, 1220, 390, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1524,
+ 1525, 1526, 1528, 1529, 1530, 1531, 384, 1230, 317, 1534, 1538, 1535, 1536, 1537, 1539, 1541, 1546, 1549, 1540, 1542, 1543, 1544, 1545, 1547, 1548, 1551, 1554,
+ 1552, 1553, 1060, 511, 1556, 1561, 1566, 1581, 1589, 1598, 1622, 1630, 1633, 545, 390, 907, 1199, 1557, 708, 317, 317, 317, 390, 1558, 1559, 1560, 1093,
+ 1562, 1564, 1565, 381, 1563, 1087, 740, 842, 1132, 1567, 1577, 1042, 1578, 356, 1568, 1572, 1575, 1569, 1570, 1571, 1573, 1574, 1576, 1579, 1580, 1582, 1583,
+ 1586, 356, 651, 633, 1584, 1585, 1587, 1588, 1501, 1590, 1595, 390, 320, 1591, 1592, 724, 317, 1593, 317, 317, 317, 1594, 1596, 1597, 1599, 1577, 1602,
+ 1603, 1604, 390, 1600, 1601, 1605, 1607, 1609, 633, 1611, 1606, 1608, 1610, 317, 633, 317, 1612, 1614, 1616, 317, 1619, 1620, 1621, 317, 317, 1613, 1059,
+ 1615, 1617, 1618, 1623, 1625, 1629, 390, 1624, 1626, 1628, 1627, 621, 651, 1631, 1632, 390, 694, 740, 620, 390, 1635, 1641, 1649, 1654, 1658, 1659, 1663,
+ 1664, 1684, 1687, 1691, 390, 1692, 1694, 1636, 649, 649, 1637, 1640, 390, 920, 317, 1638, 1639, 735, 317, 708, 1642, 1645, 1648, 381, 1643, 1644, 694,
+ 1646, 1647, 1650, 1653, 356, 621, 1651, 1652, 1655, 1656, 1132, 356, 621, 317, 1657, 620, 1115, 390, 1660, 1661, 1662, 390, 756, 390, 1655, 949, 1665,
+ 1669, 1672, 1673, 1674, 1681, 390, 1666, 1667, 1668, 1670, 1671, 756, 661, 1675, 1678, 1676, 317, 1677, 661, 1679, 1680, 317, 1682, 1683, 345, 1685, 390,
+ 1686, 649, 345, 1688, 1689, 936, 390, 1690, 1693, 1695, 1696, 1697, 1699, 1705, 1712, 1719, 1723, 1729, 1733, 1734, 1736, 1740, 966, 1764, 390, 1700, 1199,
+ 1093, 1701, 1704, 317, 390, 1702, 317, 1703, 637, 621, 708, 861, 620, 1706, 1709, 381, 1707, 1708, 1710, 1711, 345, 1713, 1716, 356, 1714, 1715, 1717,
+ 1718, 345, 1720, 1577, 1721, 844, 1585, 1722, 356, 345, 1724, 390, 1726, 1725, 1727, 1728, 345, 1730, 1131, 427, 390, 1731, 1732, 345, 390, 345, 1722,
+ 1735, 390, 345, 1737, 390, 1738, 1739, 1741, 949, 661, 1742, 1747, 1748, 1750, 1758, 1761, 390, 621, 1735, 317, 1743, 1744, 317, 949, 724, 1745, 317,
+ 1746, 317, 317, 694, 317, 1749, 1160, 673, 1751, 633, 1752, 1018, 1753, 1754, 1755, 317, 1746, 637, 317, 317, 317, 317, 710, 649, 1756, 317, 1757,
+ 320, 1759, 1160, 1760, 1762, 651, 1763, 1765, 1766, 1767, 1769, 1770, 1771, 1772, 1773, 1774, 1776, 1777, 1733, 1733, 1778, 427, 390, 345, 715, 390, 1199,
+ 1228, 381, 345, 1220, 356, 345, 356, 345, 743, 1212, 390, 345, 1775, 390, 345, 1087, 390, 345, 1234, 390, 1779, 1780, 1782, 1788, 1797, 1772, 1733,
+ 1733, 1803, 1805, 1810, 1811, 390, 345, 1783, 1200, 1200, 1784, 649, 390, 1027, 367, 317, 1785, 1786, 1787, 1789, 1792, 1796, 381, 1790, 1791, 1793, 1794,
+ 1795, 345, 773, 1798, 1800, 1801, 356, 1799, 1802, 345, 1804, 390, 345, 1806, 317, 672, 390, 1807, 1808, 1809, 345, 620, 390, 345, 1812, 390, 649,
+ 740, 1814, 1816, 1818, 1823, 1825, 1733, 1828, 1831, 1832, 1733, 1835, 390, 345, 1199, 1815, 1093, 966, 390, 695, 317, 345, 1817, 381, 345, 1819, 1821,
+ 1489, 356, 1820, 1822, 345, 1824, 356, 345, 1826, 390, 1827, 345, 1829, 390, 1830, 345, 928, 842, 390, 345, 1833, 390, 1834, 1836, 1837, 1838, 1840,
+ 1841, 1844, 1854, 1867, 1868, 1872, 1875, 1890, 1922, 1953, 1955, 1960, 345, 649, 1199, 317, 390, 1842, 1843, 381, 345, 1845, 1848, 356, 1846, 1847, 1849,
+ 1850, 1851, 1852, 1853, 345, 1855, 1861, 1865, 940, 356, 1856, 1857, 1858, 1859, 1860, 1862, 1864, 1863, 1866, 345, 940, 390, 1655, 1869, 1870, 1871, 345,
+ 620, 620, 620, 1873, 756, 390, 621, 621, 1874, 1876, 1877, 1879, 1882, 669, 1884, 1886, 620, 1888, 781, 390, 621, 621, 317, 681, 1878, 621, 1880,
+ 1881, 621, 1883, 1885, 1883, 621, 1887, 1889, 1891, 1895, 1898, 1901, 1903, 1904, 1908, 1916, 1918, 1920, 621, 1892, 621, 317, 1893, 1894, 621, 1896, 1897,
+ 1899, 1896, 1900, 1902, 1094, 1900, 621, 1096, 1900, 1902, 1905, 621, 1900, 317, 1906, 1907, 1909, 1027, 621, 1900, 1910, 1914, 1911, 1912, 1913, 1915, 1917,
+ 1900, 1919, 621, 1900, 621, 1921, 621, 1900, 339, 317, 1722, 1923, 1925, 1927, 1930, 1933, 1938, 1944, 1951, 1952, 390, 1924, 621, 621, 317, 651, 1926,
+ 621, 1928, 1638, 1929, 649, 1931, 1638, 1932, 1934, 621, 1935, 621, 1638, 1936, 1937, 1939, 1940, 1638, 1941, 1942, 1943, 1945, 621, 1638, 489, 1946, 1947,
+ 1948, 1949, 1950, 619, 351, 1954, 1956, 1957, 1958, 1959, 1961, 1962, 1964, 1984, 1988, 1993, 1995, 1997, 2002, 2005, 515, 2013, 2016, 2025, 1965, 1972, 1977,
+ 1966, 1967, 1968, 1969, 1970, 1971, 1973, 1974, 1975, 1976, 1978, 1979, 1980, 1981, 1982, 1983, 1985, 1986, 1987, 1989, 317, 1990, 1991, 1992, 1994, 476, 551,
+ 1996, 1998, 2000, 1999, 2001, 2003, 350, 2004, 2006, 2010, 2007, 2008, 2009, 2011, 2012, 2014, 2015, 2017, 2021, 2023, 2018, 2019, 2020, 2022, 1962, 2024, 2026,
+ 2027, 2028, 2029, 2031, 2040, 2045, 2048, 2061, 2064, 2068, 2072, 370, 2032, 2021, 2033, 2034, 2037, 2038, 450, 476, 350, 2035, 2036, 2039, 550, 2041, 2042,
+ 2043, 2044, 2046, 351, 317, 2047, 2049, 2055, 2057, 2059, 2050, 388, 2052, 2054, 2051, 384, 382, 2053, 2056, 404, 317, 2058, 390, 2060, 2062, 2063, 343,
+ 371, 349, 2065, 2067, 2066, 350, 350, 2069, 362, 2071, 2070, 596, 2073, 2074, 2075, 349, 2079, 2076, 2077, 2078, 2080, 2081, 2083, 2089, 2093, 2095, 2106,
+ 2109, 2120, 2084, 2085, 2088, 2086, 501, 2087, 370, 2058, 2090, 2091, 2092, 2094, 2096, 2099, 2101, 2103, 514, 2097, 2098, 345, 343, 2100, 448, 349, 370,
+ 2102, 2104, 2105, 2107, 2108, 2110, 371, 2111, 2112, 2114, 2115, 2118, 2113, 2058, 350, 2116, 2117, 2119, 2121, 2122, 2125, 2127, 1453, 370, 2123, 2124, 2126,
+ 2128, 2130, 2136, 2139, 2140, 2144, 2149, 2074, 2131, 2132, 2133, 2135, 382, 350, 2134, 2137, 2138, 317, 378, 2141, 371, 2143, 2142, 662, 2145, 2147, 2146,
+ 565, 2148, 2150, 541, 2151, 2152, 2154, 2157, 2158, 2162, 2164, 2169, 2155, 2156, 2159, 2160, 2161, 2163, 2165, 2166, 2167, 2168, 2170, 2171, 2173, 2175, 2179,
+ 2182, 2185, 2189, 2192, 2197, 545, 2174, 566, 2176, 2177, 2178, 2180, 2181, 343, 2183, 2184, 2186, 2188, 2187, 2188, 2190, 2191, 2193, 2194, 2196, 317, 2195,
+ 1230, 439, 2198, 2199, 2201, 2209, 2213, 2217, 2220, 2223, 2226, 2202, 2204, 2207, 2203, 2205, 2206, 2208, 2210, 2212, 2211, 2214, 2215, 2216, 2218, 2219, 2033,
+ 2221, 2222, 439, 501, 2224, 2225, 2227, 2229, 2234, 2237, 2241, 2245, 2248, 2152, 443, 2230, 2232, 2231, 2022, 370, 2146, 363, 2233, 2071, 2142, 2235, 2236,
+ 2238, 2239, 2240, 2242, 350, 2004, 2243, 2244, 393, 2246, 2247, 350, 2249, 2250, 2251, 2252, 2254, 2255, 2259, 388, 2256, 2257, 2258, 2260, 2261, 2263, 2267,
+ 2273, 2281, 2285, 2292, 2264, 2265, 2266, 2268, 343, 596, 2270, 2269, 343, 404, 2271, 2272, 2274, 2276, 448, 2278, 2275, 2277, 2279, 345, 2280, 2282, 2283,
+ 2284, 2286, 596, 2288, 2289, 2287, 370, 404, 2290, 2291, 2293, 2027, 2295, 2296, 2297, 2299, 2301, 2298, 382, 397, 2300, 2303, 2307, 2311, 2312, 2313, 2316,
+ 2304, 2305, 2306, 2308, 2309, 2310, 471, 2004, 372, 2070, 2314, 2315, 1347, 589, 2317, 2319, 2331, 2337, 2342, 2344, 2352, 2244, 2320, 2323, 2324, 349, 2325,
+ 2329, 2058, 339, 2321, 2322, 2272, 1020, 2326, 2327, 2328, 2330, 2332, 2334, 2335, 2333, 2336, 1020, 2338, 343, 2340, 2339, 2022, 2134, 428, 2341, 351, 404,
+ 2343, 418, 2345, 2347, 2348, 419, 2349, 370, 2022, 349, 2346, 2035, 317, 2058, 343, 2350, 343, 2351, 2353, 2354, 2356, 2355, 2357, 2359, 2361, 2363, 2365,
+ 2367, 2360, 2362, 1962, 2364, 2366, 2368, 2369, 2371, 2372, 2373, 2374, 2376, 2378, 2392, 2397, 2400, 2404, 2407, 2411, 2414, 2417, 2377, 2379, 2380, 2382, 2384,
+ 2390, 2381, 2383, 350, 596, 2385, 2386, 2388, 2387, 2389, 2391, 2393, 2395, 465, 350, 2394, 385, 2396, 2398, 2399, 2401, 2403, 748, 2402, 2405, 2406, 2408,
+ 2409, 350, 2410, 2412, 514, 2413, 2415, 2416, 2418, 515, 2420, 2419, 2422, 2425, 2440, 2446, 2493, 2494, 2423, 2424, 739, 2426, 2427, 2432, 2433, 2428, 2429,
+ 2430, 2431, 2434, 2435, 2436, 2437, 2438, 2439, 2441, 2442, 2443, 2444, 2445, 2447, 2457, 313, 2460, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2458,
+ 2459, 2461, 2463, 2465, 2475, 314, 2477, 2478, 2481, 2492, 2462, 2464, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2476, 2479, 2480, 1373, 2482, 2483,
+ 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2495, 2498, 2496, 2497, 317, 2499, 2500, 2501, 317, 317, 317, 2502, 2503, 2505, 2513, 2514, 2516, 2522, 2506,
+ 2507, 2508, 2512, 2509, 2511, 2510, 2515, 1998, 2517, 2519, 2518, 381, 317, 317, 2520, 2521, 596, 397, 2524, 2529, 2534, 2538, 2544, 2548, 2552, 2553, 2554,
+ 2556, 2559, 2562, 2569, 2525, 2526, 2527, 2528, 2530, 418, 2531, 2533, 2532, 2535, 349, 2536, 381, 2537, 2539, 2540, 2542, 2541, 1428, 2543, 2545, 2546, 2547,
+ 2402, 371, 2549, 541, 2550, 2551, 2405, 1915, 2555, 2557, 2558, 2560, 2561, 566, 2317, 2317, 498, 2074, 2563, 2565, 2567, 2564, 1588, 565, 2298, 2381, 2566,
+ 343, 2568, 2570, 565, 2152, 2573, 2574, 2577, 2571, 2572, 2575, 2576, 2579, 2580, 2582, 2587, 2592, 2594, 2596, 2581, 381, 348, 2583, 2585, 2586, 362, 2584,
+ 2588, 2591, 343, 345, 2589, 2590, 2510, 350, 2593, 2595, 384, 2597, 332, 373, 2599, 2600, 2602, 2420, 2604, 2601, 2603, 2605, 2607, 2610, 2611, 2613, 350,
+ 2608, 2609, 2612, 511, 2615, 2625, 2627, 2628, 2634, 2635, 2616, 2619, 2622, 2617, 2618, 2620, 2621, 2623, 2624, 2626, 2629, 2633, 550, 2630, 2632, 2631, 350,
+ 2067, 350, 2637, 2641, 2642, 2110, 2646, 2638, 2639, 2640, 2643, 2644, 2645, 2647, 2648, 2649, 2651, 2655, 2656, 2652, 2653, 2654, 2658, 2664, 2668, 2659, 2426,
+ 2660, 2661, 2662, 2663, 2665, 2666, 2667, 2669, 2670, 2671, 1008, 2672, 2674, 2675, 2720, 2762, 2810, 2865, 2903, 2932, 2956, 2971, 2986, 2998, 3000, 3019, 3026,
+ 3032, 3033, 3038, 3042, 3048, 3053, 3059, 3061, 3064, 3068, 3069, 3071, 3077, 3080, 3082, 3099, 380, 2673, 412, 439, 545, 1013, 2676, 2699, 2709, 2711, 2712,
+ 2714, 545, 545, 966, 427, 2716, 390, 2677, 2681, 2684, 2685, 2686, 2690, 2690, 2691, 2695, 317, 317, 390, 2678, 317, 2679, 317, 2680, 2682, 2683, 2687,
+ 1791, 2688, 2689, 2689, 924, 317, 620, 2692, 2693, 2694, 2696, 2697, 2698, 637, 345, 708, 2700, 2701, 835, 2706, 381, 2702, 2703, 2704, 2705, 2707, 2708,
+ 2710, 2713, 2715, 390, 2717, 2718, 2719, 2721, 2727, 2734, 2744, 2750, 2756, 2757, 2759, 2761, 381, 1095, 2722, 858, 2725, 2723, 2724, 1560, 621, 2726, 2728,
+ 2729, 709, 343, 2730, 2732, 2733, 2731, 2735, 2739, 949, 2742, 2743, 2736, 2737, 2738, 2740, 2741, 317, 2462, 767, 866, 2745, 2748, 2746, 2747, 2749, 2751,
+ 2752, 2753, 2754, 2755, 2758, 2760, 2476, 2763, 2773, 2777, 2783, 2790, 2794, 2796, 2797, 2801, 356, 2802, 2807, 1200, 2764, 2768, 1557, 2771, 708, 2765, 2766,
+ 2767, 2769, 2770, 2772, 2774, 2426, 2775, 2776, 2778, 1132, 1115, 1131, 1087, 672, 648, 632, 2779, 2780, 2782, 1114, 647, 317, 2781, 317, 2784, 2787, 2788,
+ 637, 320, 2785, 740, 694, 2786, 2789, 739, 2791, 320, 740, 2792, 649, 2793, 2795, 390, 1112, 2798, 2799, 2800, 2803, 2804, 2805, 2806, 2808, 2809, 2811,
+ 2820, 2830, 2833, 2835, 2837, 2838, 2841, 2846, 2848, 356, 2850, 2853, 2812, 708, 2813, 2816, 2818, 1027, 2814, 2815, 2817, 2819, 866, 2821, 2822, 2823, 2824,
+ 2825, 2826, 2827, 2828, 2829, 1112, 2831, 2742, 2832, 949, 2834, 673, 637, 1732, 2836, 651, 637, 1131, 736, 928, 2839, 2840, 2842, 2843, 2844, 2845, 2847,
+ 2849, 2851, 2852, 2854, 2857, 2855, 2856, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2866, 2870, 843, 2871, 2875, 2879, 2889, 2890, 2896, 2897, 2899, 2900, 390,
+ 673, 2867, 649, 708, 1094, 2868, 2869, 1095, 1131, 1112, 2872, 2873, 2874, 2876, 2877, 2878, 1603, 2880, 2888, 2881, 2884, 1011, 1613, 621, 317, 2882, 2883,
+ 2885, 2886, 2887, 1731, 2891, 2893, 2892, 1011, 2894, 2895, 2898, 2901, 2902, 2904, 2911, 2912, 2917, 2918, 2921, 2923, 2929, 966, 427, 390, 2905, 2906, 1199,
+ 1200, 861, 1200, 2909, 339, 390, 317, 490, 356, 2907, 2908, 1027, 2910, 2913, 2914, 1648, 2915, 2916, 2919, 2920, 2742, 1131, 2922, 2066, 2924, 1451, 2928,
+ 866, 1673, 1746, 661, 2925, 2926, 2927, 1745, 317, 673, 724, 633, 2930, 2931, 2933, 2941, 2943, 2949, 2950, 2954, 390, 649, 1200, 649, 649, 2934, 2938,
+ 1027, 2935, 2936, 2937, 2939, 2940, 2942, 2944, 2945, 2946, 2947, 2948, 916, 2951, 2952, 2953, 2955, 2957, 2961, 2963, 1083, 2964, 2966, 2968, 390, 1200, 2958,
+ 2959, 2960, 2962, 2965, 2967, 2969, 2970, 2972, 2976, 2977, 2979, 1690, 2980, 2984, 390, 1199, 2973, 1199, 2974, 2975, 2978, 2981, 2982, 2983, 2985, 2987, 2989,
+ 2991, 2995, 390, 1093, 1011, 649, 649, 1095, 2988, 2990, 2992, 2993, 2994, 2996, 2997, 2999, 3001, 3004, 3008, 3010, 3012, 3017, 3002, 3003, 3005, 3006, 3007,
+ 3009, 2033, 3011, 590, 2054, 1720, 3013, 3014, 3015, 3016, 3018, 3020, 3024, 3021, 3022, 3023, 3025, 382, 3027, 3028, 3029, 3030, 3031, 3034, 3036, 3035, 3037,
+ 2071, 3039, 3040, 3041, 3043, 3045, 3044, 3046, 3047, 343, 317, 589, 3049, 3050, 3051, 3052, 3054, 3058, 3055, 3056, 3057, 3060, 2036, 2309, 3062, 3063, 3065,
+ 3066, 317, 637, 3067, 339, 345, 3070, 3072, 3075, 3076, 3073, 3074, 2416, 590, 664, 3078, 3079, 3081, 3083, 3087, 3091, 3095, 3084, 3085, 3086, 3088, 3089,
+ 3090, 3092, 3093, 3094, 3096, 2461, 2475, 2473, 3097, 318, 2492, 3098, 3100, 3101, 3102, 3103, 3105, 3126, 3154, 3181, 3214, 3232, 3240, 3274, 3280, 3306, 3310,
+ 1031, 3312, 3315, 3317, 3324, 3330, 3331, 3335, 3339, 3343, 3345, 3352, 3362, 1230, 3369, 3106, 412, 3112, 3113, 3117, 545, 3120, 966, 427, 3121, 390, 3107,
+ 317, 1024, 3108, 3109, 317, 317, 317, 317, 351, 317, 317, 390, 3110, 621, 381, 317, 3111, 3114, 390, 3115, 3116, 3118, 390, 3119, 390, 1020, 3122,
+ 3123, 3124, 3125, 3127, 3130, 3132, 3140, 3143, 3149, 3152, 545, 381, 1199, 3128, 3129, 842, 3131, 3133, 348, 3134, 3135, 3136, 3137, 3138, 3139, 1132, 3141,
+ 3142, 3144, 390, 3145, 3146, 3147, 3148, 317, 3150, 3151, 842, 3153, 2942, 756, 390, 545, 3155, 3168, 3169, 3171, 545, 3172, 356, 949, 3156, 3159, 2073,
+ 1276, 3166, 3157, 736, 3158, 3160, 3163, 3161, 3162, 317, 3164, 317, 3165, 3167, 3170, 3173, 3180, 862, 3174, 3175, 3176, 3177, 317, 3178, 3179, 3182, 3183,
+ 3185, 3196, 3199, 3203, 3206, 3207, 3208, 3210, 3213, 3184, 637, 651, 620, 3186, 3189, 3191, 1131, 3193, 672, 648, 632, 2782, 3187, 317, 3188, 2779, 3190,
+ 1114, 3192, 3194, 3195, 3197, 651, 3198, 3200, 3201, 673, 3202, 3204, 3205, 651, 1353, 3209, 317, 3211, 3212, 655, 3215, 3219, 3221, 3225, 3228, 3229, 390,
+ 3216, 3218, 3217, 3220, 949, 3222, 1234, 3223, 3224, 3226, 3227, 3230, 3231, 3233, 545, 545, 3234, 3237, 966, 427, 390, 1722, 1735, 3235, 1721, 3236, 1735,
+ 3238, 3239, 3241, 3244, 3252, 3253, 3254, 3257, 545, 3259, 3263, 356, 1033, 390, 966, 3242, 3243, 3245, 3248, 3246, 3247, 633, 3249, 3251, 3250, 1660, 1519,
+ 619, 651, 3255, 3256, 1519, 3258, 3260, 3261, 3262, 1451, 3264, 694, 767, 3268, 3273, 390, 3265, 3266, 3267, 3269, 3270, 3271, 3272, 651, 673, 3275, 3278,
+ 427, 390, 2742, 3276, 3277, 3279, 3281, 3285, 3287, 3288, 3296, 356, 3300, 390, 3282, 3283, 3284, 3286, 1660, 661, 3289, 3293, 3290, 3291, 3292, 3294, 3295,
+ 3297, 3298, 3299, 3301, 3302, 3303, 3304, 3305, 3307, 3308, 390, 3309, 3311, 3020, 427, 3313, 3314, 382, 3316, 3318, 3320, 3322, 3319, 3321, 3323, 2473, 2490,
+ 3325, 3326, 3327, 3328, 3329, 3039, 1060, 3332, 3333, 3334, 3336, 3337, 3338, 3340, 3342, 3341, 3344, 317, 3346, 3347, 3348, 3349, 3350, 3351, 2060, 3353, 3356,
+ 3354, 3355, 3357, 3358, 3359, 3360, 3361, 3363, 664, 3367, 3364, 3365, 3366, 3368, 3370, 3372, 3371, 3373, 3374, 3375, 3377, 3388, 3407, 3444, 3453, 3476, 3511,
+ 3523, 3540, 3558, 2362, 428, 3574, 3579, 3582, 3589, 3595, 349, 3604, 3605, 2277, 3606, 3612, 3617, 3622, 3637, 3647, 3650, 3654, 589, 3659, 3378, 3381, 3383,
+ 621, 3385, 621, 966, 427, 390, 1688, 317, 3379, 317, 317, 317, 390, 3380, 317, 3382, 3384, 2962, 621, 915, 3386, 3387, 3389, 3390, 3395, 3396, 3399,
+ 381, 3391, 3392, 3393, 3394, 3397, 661, 3398, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3408, 3423, 865, 2889, 3424, 3427, 3430, 3433, 3434, 356, 3439, 1688,
+ 1451, 3409, 3412, 3413, 3421, 3410, 3411, 694, 756, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3422, 3425, 3426, 3428, 3429, 620, 3431, 3432, 3435, 3436, 3437,
+ 3438, 3440, 3441, 3442, 3443, 3445, 3448, 3451, 356, 3446, 632, 3447, 3449, 3450, 3452, 621, 3182, 1370, 3454, 3455, 3457, 3460, 3466, 2979, 3470, 3473, 390,
+ 1732, 317, 3456, 356, 621, 1011, 3458, 3459, 620, 928, 1112, 1132, 3461, 3463, 1087, 672, 648, 3462, 647, 3464, 3465, 3467, 3468, 3469, 3471, 3472, 3474,
+ 3475, 3477, 3482, 3484, 3487, 3490, 3491, 3503, 3504, 966, 3506, 3510, 390, 3478, 3479, 3480, 3481, 3483, 3485, 3486, 1011, 3488, 3489, 3492, 724, 936, 3495,
+ 1271, 3497, 3500, 1028, 3502, 397, 3493, 3494, 736, 317, 3496, 3498, 3499, 3501, 320, 317, 1574, 3505, 3507, 3508, 3509, 3512, 3514, 3516, 3519, 3521, 390,
+ 3513, 3515, 928, 3517, 3518, 3520, 3522, 3524, 3526, 3530, 3531, 3532, 3536, 3538, 390, 3525, 3527, 3528, 3529, 3533, 3534, 3535, 3537, 3539, 3541, 3544, 1162,
+ 3553, 3554, 390, 3542, 3543, 3545, 3546, 3547, 3548, 3549, 3550, 3551, 317, 3552, 317, 317, 412, 3555, 3556, 3557, 3559, 3565, 3566, 3567, 3572, 390, 3560,
+ 3561, 3562, 3563, 3564, 1302, 2970, 3568, 1000, 3570, 3569, 3571, 3573, 3575, 362, 3577, 3576, 3578, 382, 3580, 3581, 3583, 3587, 3584, 3585, 3586, 3588, 3590,
+ 3594, 363, 3591, 3592, 3593, 3596, 3039, 3600, 3597, 3598, 3599, 3601, 3602, 3603, 3607, 3610, 2037, 400, 3608, 2007, 3609, 332, 3611, 3613, 3615, 3614, 3616,
+ 3618, 516, 1230, 345, 3621, 3619, 3620, 3623, 3625, 433, 3627, 3631, 2567, 3633, 3624, 3626, 3628, 2475, 3629, 3630, 3632, 3634, 3635, 3636, 3638, 3641, 3643,
+ 3646, 1588, 3639, 317, 3640, 3642, 3644, 3645, 3648, 317, 3649, 3651, 3652, 3653, 3655, 620, 3655, 3657, 3656, 3658, 3660, 3663, 3661, 3661, 3662, 3664, 3666,
+ 3671, 3678, 3699, 3711, 3722, 3747, 3788, 3810, 3822, 3831, 3842, 3030, 3844, 3849, 3851, 3855, 3858, 3863, 3870, 3873, 3875, 3878, 3881, 3885, 3899, 3902, 3667,
+ 3668, 3669, 3670, 3672, 3674, 551, 545, 545, 545, 3675, 966, 427, 2716, 390, 3673, 317, 317, 317, 620, 339, 317, 317, 390, 651, 381, 3676, 3677,
+ 3679, 3689, 3690, 3696, 381, 3680, 3685, 3681, 3682, 3683, 3684, 3686, 3687, 3688, 3691, 3693, 621, 2769, 3692, 637, 633, 390, 3694, 3695, 3697, 3698, 3700,
+ 3701, 1822, 3702, 3705, 3708, 356, 3709, 3703, 3704, 1799, 1746, 3706, 3707, 3710, 3712, 633, 3718, 356, 3713, 3714, 3715, 3716, 3717, 3719, 3720, 3721, 3723,
+ 3733, 3734, 3739, 3743, 3745, 390, 3724, 3727, 3731, 3725, 3726, 3728, 3729, 3730, 3732, 3735, 651, 1011, 3736, 3737, 317, 317, 3738, 1130, 739, 3740, 3741,
+ 3742, 3744, 3746, 3748, 3752, 3754, 3757, 3765, 3778, 3781, 3783, 3786, 3743, 390, 1131, 3749, 3750, 3751, 3753, 1824, 651, 740, 3755, 3756, 3758, 3761, 3763,
+ 3759, 740, 3760, 3762, 3764, 3766, 3767, 3769, 1132, 1115, 3770, 3774, 3777, 648, 632, 635, 621, 949, 1087, 637, 3768, 320, 317, 649, 320, 1131, 3771,
+ 3773, 317, 3772, 317, 317, 317, 317, 317, 317, 317, 3775, 651, 3776, 673, 1624, 3779, 1011, 740, 3780, 633, 3782, 637, 1011, 633, 3784, 3785, 3787,
+ 3789, 3792, 3794, 3798, 3804, 3808, 390, 3790, 3791, 3793, 740, 724, 3795, 3796, 3797, 1732, 773, 3799, 3801, 3800, 3802, 3803, 3805, 3806, 3807, 3809, 3811,
+ 3813, 3816, 3818, 3743, 3820, 390, 3812, 3814, 3815, 3817, 3819, 620, 3821, 3823, 390, 3824, 3826, 3825, 3827, 3828, 3829, 3830, 3832, 390, 3833, 3834, 3835,
+ 3836, 3837, 3838, 3839, 3840, 3841, 3843, 3845, 3846, 3847, 3848, 3850, 382, 3852, 3853, 3854, 3856, 3857, 3859, 3860, 3861, 3862, 3864, 3865, 3866, 3867, 3868,
+ 3869, 3871, 3872, 3874, 3876, 3877, 3879, 3880, 3882, 3646, 3884, 3883, 3886, 3888, 3892, 3897, 3887, 3889, 3890, 3891, 3893, 3894, 3895, 3896, 3898, 3900, 3901,
+ 3903, 3907, 3904, 3905, 3906, 3908, 3909, 3910, 3912, 3921, 3926, 3942, 3950, 3959, 3970, 4000, 4015, 4030, 4042, 4043, 4046, 4049, 4054, 4056, 4061, 390, 4062,
+ 4065, 4070, 3913, 3914, 3916, 3919, 621, 966, 317, 390, 1688, 317, 317, 390, 3915, 3917, 3918, 3920, 3395, 3922, 3923, 381, 743, 1042, 3924, 3925, 3927,
+ 3934, 3935, 3938, 356, 3941, 3928, 3929, 3930, 3931, 3932, 3933, 3936, 3937, 3939, 3940, 3943, 3947, 3948, 3949, 3743, 356, 3944, 3945, 3946, 3951, 3955, 3743,
+ 390, 3952, 3953, 3954, 3292, 3956, 3957, 3958, 3960, 3961, 1302, 3965, 3968, 390, 949, 3962, 866, 1028, 3963, 3964, 3966, 3967, 3969, 3971, 3974, 3975, 3978,
+ 3989, 3992, 3743, 1033, 3995, 2356, 390, 3972, 3973, 1722, 3976, 3977, 1011, 694, 620, 3979, 1112, 1132, 3981, 1131, 3982, 672, 648, 3985, 3987, 3988, 3227,
+ 637, 651, 3980, 651, 1087, 1902, 1011, 3983, 631, 3984, 3986, 3990, 694, 3991, 1087, 3993, 3994, 3996, 3997, 3998, 3999, 4001, 4007, 3700, 4010, 4011, 4013,
+ 3965, 2356, 390, 3941, 4002, 4003, 4004, 4005, 4006, 4008, 4009, 4012, 621, 1289, 4014, 3744, 4016, 4020, 4024, 4028, 4029, 2356, 390, 3065, 4017, 4018, 4019,
+ 4021, 4022, 4023, 4025, 4026, 4027, 4031, 4033, 4034, 3915, 4037, 4038, 4029, 4040, 351, 3965, 4041, 2356, 390, 4032, 4035, 4036, 673, 756, 632, 4039, 3843,
+ 3843, 4044, 4045, 4047, 4048, 4050, 4051, 4052, 4053, 4055, 4057, 4058, 4059, 4060, 4063, 4064, 4066, 4067, 4068, 4069, 4071, 4073, 4072, 4074, 4075, 4076, 4078,
+ 4083, 4102, 4109, 4116, 4119, 4155, 4169, 4182, 4219, 4254, 4042, 4259, 4262, 4272, 4277, 4281, 4285, 4289, 4296, 4299, 4303, 4309, 4311, 390, 4319, 4331, 4079,
+ 4080, 427, 4081, 4082, 4084, 4086, 4087, 4091, 4097, 4100, 427, 317, 390, 4085, 317, 317, 390, 4088, 4089, 4090, 4092, 4093, 4094, 4095, 4096, 4098, 2743,
+ 4099, 4101, 4103, 4105, 4108, 381, 4104, 4106, 4107, 1060, 4110, 4112, 3743, 4114, 356, 4111, 4113, 4115, 4117, 345, 356, 914, 4118, 4120, 4136, 4144, 4148,
+ 4149, 4151, 390, 4121, 1451, 4125, 756, 4124, 1205, 4129, 4134, 4122, 841, 4123, 4126, 1494, 4127, 4128, 4130, 4131, 4132, 371, 4133, 4135, 4137, 4138, 4139,
+ 4140, 4141, 4142, 4143, 4145, 4146, 4147, 620, 620, 4150, 317, 4152, 1508, 4153, 4154, 4156, 4157, 4161, 4165, 427, 390, 1722, 1653, 4158, 4159, 4160, 866,
+ 1746, 936, 4162, 4163, 4164, 3065, 4166, 4167, 4168, 4170, 4176, 1033, 390, 4171, 4174, 4172, 4173, 4175, 4177, 4179, 4178, 4180, 4181, 4183, 653, 4187, 4189,
+ 4192, 4194, 4214, 4215, 4216, 390, 4184, 4185, 4186, 4188, 637, 673, 4190, 4191, 4193, 740, 673, 4195, 4197, 1112, 1132, 1115, 4198, 1087, 4201, 4208, 4210,
+ 4211, 4213, 1020, 4196, 4199, 4200, 4202, 647, 317, 4203, 4206, 4204, 4205, 4207, 317, 4209, 928, 633, 4212, 633, 1173, 4217, 4218, 4220, 4221, 4222, 4225,
+ 4229, 2024, 4249, 4250, 3510, 390, 3941, 781, 1000, 732, 4223, 649, 4224, 4226, 637, 317, 4227, 4228, 317, 866, 4230, 936, 4232, 4238, 4239, 4245, 1746,
+ 4247, 945, 4231, 4233, 4234, 4235, 4236, 4237, 949, 621, 637, 4240, 4244, 4241, 4242, 4243, 4246, 4248, 651, 673, 4251, 4252, 4253, 4255, 390, 4256, 4257,
+ 4258, 724, 1746, 4260, 4261, 4263, 4269, 4264, 4265, 501, 4266, 4267, 4268, 4270, 4271, 4273, 4276, 4274, 4275, 4278, 4280, 4279, 4282, 4283, 4284, 4286, 4055,
+ 4287, 4288, 4290, 4291, 4292, 4293, 4294, 4295, 4297, 4298, 4300, 4302, 4301, 4304, 4305, 4306, 4307, 4308, 4310, 4312, 4315, 4318, 4313, 4314, 4316, 4317, 4320,
+ 4324, 4325, 4321, 4322, 4323, 4326, 4327, 4328, 4329, 4330, 4332, 4334, 4333, 4335, 4336, 4338, 4370, 4378, 4391, 4400, 4403, 4416, 4428, 4456, 4478, 4042, 4562,
+ 4565, 4568, 4569, 4574, 4577, 3121, 390, 4584, 4587, 4592, 4594, 4339, 4344, 4348, 4354, 4356, 4029, 317, 390, 620, 4340, 317, 317, 317, 390, 4341, 4342,
+ 4343, 4345, 4346, 4347, 4349, 4350, 4351, 4352, 4353, 4355, 317, 4357, 4362, 4365, 4358, 4359, 4360, 4361, 4363, 4364, 4366, 4367, 4368, 4369, 4371, 4374, 4376,
+ 381, 4372, 4373, 4375, 4377, 4379, 4383, 4384, 4388, 356, 4380, 4381, 4382, 4385, 1131, 4386, 4387, 4389, 4390, 4392, 4394, 4397, 356, 4398, 4393, 4395, 4396,
+ 4399, 4401, 4402, 390, 4404, 4409, 4411, 4414, 1031, 390, 4405, 4407, 4408, 866, 1271, 767, 661, 4406, 866, 1767, 649, 4410, 4412, 4413, 4415, 4417, 4421,
+ 4425, 1914, 390, 4418, 4419, 4420, 4422, 4423, 4424, 4426, 4427, 4429, 4434, 935, 4438, 4444, 4448, 4454, 4430, 4431, 4432, 4433, 4435, 4436, 4437, 4439, 4440,
+ 4441, 4442, 4443, 317, 1044, 4445, 4446, 4447, 4449, 4450, 4451, 4452, 4453, 4455, 317, 4457, 4464, 4467, 4468, 4470, 4473, 4475, 4477, 390, 4458, 4463, 648,
+ 4459, 4460, 4461, 4462, 4465, 4466, 4469, 694, 649, 928, 1131, 1087, 672, 4471, 632, 4472, 633, 631, 4474, 621, 649, 4476, 4479, 4505, 4520, 4534, 4535,
+ 4546, 4555, 390, 4480, 4482, 4487, 4488, 4493, 4498, 4481, 4483, 4484, 4485, 4486, 4489, 4490, 4491, 4492, 4494, 4495, 4496, 4497, 4499, 4500, 4501, 4502, 4503,
+ 4504, 4506, 4510, 4515, 4507, 4508, 4509, 4511, 4512, 4513, 4514, 4516, 4517, 4518, 4519, 4521, 4526, 4532, 4522, 4523, 4524, 4525, 4527, 4528, 4529, 4530, 4531,
+ 4533, 4536, 4541, 4537, 4538, 4539, 4540, 4542, 4543, 4544, 4545, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4556, 4557, 4558, 4559, 4560, 4561, 4563, 4564,
+ 382, 4566, 4567, 4322, 4055, 4570, 4571, 4572, 4573, 4575, 4576, 4578, 4579, 4580, 4581, 4582, 4583, 4585, 4586, 4588, 4590, 4589, 4591, 4593, 4595, 4596, 4597,
+ 4599, 4612, 4632, 4644, 4650, 4653, 4660, 4673, 4683, 4713, 4743, 543, 4744, 4054, 4752, 4756, 4758, 4762, 390, 4765, 4767, 4600, 4602, 4604, 3791, 4605, 4606,
+ 966, 317, 390, 1688, 4601, 317, 317, 317, 317, 4603, 839, 4607, 4608, 4610, 4609, 4611, 4613, 4615, 4620, 4621, 4624, 4627, 4630, 381, 4614, 4616, 928,
+ 4617, 4618, 4619, 4622, 4623, 4625, 4626, 4628, 4629, 4631, 4633, 4635, 4636, 4639, 356, 4634, 4637, 4638, 4640, 4641, 4642, 4643, 4645, 4649, 356, 4646, 4647,
+ 4648, 4651, 4652, 390, 4654, 4657, 4659, 2679, 390, 1722, 755, 1653, 949, 4655, 4656, 1897, 4658, 4661, 4672, 2024, 390, 1451, 4662, 756, 767, 4667, 4663,
+ 4665, 365, 4664, 4666, 4668, 317, 4669, 4670, 4671, 4674, 4679, 4680, 4681, 2024, 390, 4675, 4676, 4677, 4678, 4682, 4684, 4685, 4688, 4689, 4707, 3431, 2356,
+ 390, 4712, 4686, 4687, 949, 4690, 4692, 1302, 4699, 736, 4705, 4691, 4693, 4696, 4694, 4695, 4697, 4698, 4700, 735, 4701, 949, 4702, 4703, 4704, 4706, 4708,
+ 4709, 4710, 4711, 4714, 4716, 4718, 4720, 4722, 4727, 2024, 4737, 4739, 390, 4715, 4717, 928, 4719, 4721, 1131, 4723, 4724, 633, 490, 4725, 4726, 620, 4728,
+ 1132, 637, 1131, 4733, 672, 4735, 862, 4729, 4730, 4731, 4732, 4734, 4736, 4738, 4740, 4741, 4742, 1073, 3843, 4745, 4749, 4746, 4747, 4748, 4750, 4751, 4753,
+ 4754, 4755, 4757, 4759, 4760, 4761, 4763, 4764, 4766, 4768, 4769, 4770, 4771, 4772, 4773, 4775, 4776, 4777, 4778, 4779, 4781, 4782, 2022, 4783, 2328, 4785, 4789,
+ 4784, 4786, 4787, 4788, 4791, 4792, 365, 4793, 4794, 4795, 4796, 4804, 4806, 4852, 4856, 4872, 4874, 4875, 4879, 4889, 4896, 4901, 9, 10, 11, 6139, 6229,
+ 12, 6569, 6640, 6766, 6790, 13, 15, 16, 8915, 18, 9187, 19, 20, 21, 22, 10771,10868,10915,10929,10983,530, 2301, 4797, 4797, 4797, 4798, 4797,
+ 4797, 4799, 4800, 4801, 4803, 4797, 317, 4802, 4805, 4807, 4812, 4820, 4822, 4824, 4827, 4833, 4840, 4844, 4808, 4811, 4809, 4810, 4813, 4814, 949, 936, 4815,
+ 1271, 4816, 317, 317, 4817, 317, 4818, 317, 317, 317, 4819, 4821, 743, 4823, 1653, 1735, 4825, 4826, 4828, 4829, 4830, 4831, 4832, 4834, 4835, 4836, 4837,
+ 4838, 4839, 4841, 4842, 4843, 4845, 4846, 4847, 4848, 4849, 4850, 4851, 1111, 4853, 4854, 4855, 621, 4857, 4858, 4861, 621, 621, 621, 4862, 4865, 4871, 317,
+ 4859, 4860, 317, 1114, 4863, 4864, 4866, 4867, 4868, 4869, 4870, 4873, 1302, 1130, 1309, 4876, 4877, 4878, 4880, 4882, 4886, 4881, 4883, 4884, 4885, 4887, 4888,
+ 4890, 4892, 4891, 4893, 4894, 4895, 4897, 1317, 4898, 4899, 4900, 4902, 4911, 4945, 4950, 4951, 339, 4953, 4938, 4955, 4956, 4964, 4967, 4971, 4983, 4988, 2357,
+ 4992, 4903, 4906, 862, 4904, 4905, 637, 490, 4907, 949, 936, 4908, 4909, 4910, 4912, 4915, 1131, 1087, 672, 4916, 4940, 2051, 390, 4937, 356, 4943, 4944,
+ 1107, 637, 4913, 4914, 1420, 3202, 651, 621, 4917, 4919, 4936, 4937, 4939, 4918, 317, 4920, 4925, 4926, 317, 4921, 317, 317, 317, 4922, 317, 4923, 4924,
+ 317, 390, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4941, 4942, 4946, 4949, 317, 4947, 4948, 501, 367, 490, 317, 4952, 365, 317, 550, 317,
+ 317, 4954, 389, 343, 439, 4957, 4958, 4961, 4963, 381, 332, 439, 1033, 4949, 4959, 4960, 317, 4962, 3710, 351, 4965, 4966, 4968, 4970, 4969, 2551, 2521,
+ 4972, 4973, 4975, 4977, 4591, 343, 4978, 317, 4981, 365, 2845, 362, 4974, 4976, 590, 317, 4979, 1266, 317, 317, 317, 4980, 4982, 370, 4984, 2322, 4985,
+ 490, 4986, 4987, 4989, 4990, 4991, 4993, 4994, 4998, 5000, 5024, 5060, 5076, 5128, 5176, 1335, 5177, 5192, 5208, 5209, 5218, 5227, 5229, 5236, 5282, 5287, 5329,
+ 5376, 5380, 5400, 5402, 4995, 4996, 4997, 4999, 5001, 5002, 5004, 5005, 351, 5006, 4591, 5007, 5009, 5013, 5014, 5018, 5023, 1109, 490, 2043, 5003, 490, 317,
+ 317, 345, 363, 404, 1358, 317, 362, 317, 5008, 343, 317, 317, 5010, 317, 5011, 5012, 356, 466, 3854, 317, 490, 317, 390, 433, 5015, 490, 5016,
+ 5017, 5019, 5020, 317, 5021, 317, 3854, 317, 5022, 317, 748, 5025, 5034, 5041, 5044, 5048, 317, 317, 5059, 370, 5026, 5027, 5029, 5031, 1358, 2333, 317,
+ 5028, 354, 5030, 1044, 365, 317, 5032, 5033, 317, 5035, 5036, 5037, 5039, 5038, 317, 5040, 317, 1160, 5042, 381, 5043, 2067, 5045, 356, 5046, 5047, 354,
+ 317, 5049, 5056, 5050, 5051, 5052, 5053, 356, 5054, 5055, 5057, 5058, 1753, 2077, 5061, 317, 936, 866, 5067, 5069, 317, 2733, 5062, 5063, 317, 5064, 5066,
+ 5065, 5068, 5070, 5072, 5071, 5073, 5075, 5074, 1266, 637, 5077, 5080, 5094, 5098, 5109, 5078, 317, 5079, 5081, 5082, 5083, 5085, 5088, 490, 5089, 5090, 5092,
+ 317, 3717, 5084, 5086, 5087, 5091, 5093, 5095, 317, 5096, 5097, 1325, 404, 5099, 5100, 317, 380, 5106, 5101, 5103, 5102, 1135, 317, 5104, 5105, 5107, 5108,
+ 5110, 5114, 5127, 317, 5111, 5112, 5113, 2510, 317, 382, 5055, 5115, 5085, 5116, 5118, 5121, 5090, 5117, 5119, 5120, 317, 1881, 5122, 5123, 5124, 5125, 5126,
+ 317, 1358, 5129, 317, 382, 5131, 5132, 5136, 5139, 5141, 317, 5172, 5175, 5130, 4984, 373, 490, 5133, 1347, 362, 5135, 362, 317, 4980, 5134, 317, 2110,
+ 332, 3284, 5137, 5138, 5140, 5142, 5143, 5150, 5155, 5159, 343, 5160, 5165, 404, 317, 5168, 5144, 5146, 5145, 363, 5147, 5148, 5149, 1588, 5151, 5152, 5153,
+ 5154, 5156, 5157, 5158, 5161, 5164, 5162, 5163, 5166, 381, 5167, 5169, 5170, 5171, 317, 317, 5173, 5174, 523, 490, 317, 608, 370, 5178, 5186, 5191, 5179,
+ 2036, 5182, 5184, 5185, 5180, 5181, 5183, 971, 381, 5187, 5188, 5189, 317, 5190, 317, 5193, 5194, 5195, 5198, 5202, 5204, 317, 3726, 5206, 1347, 3999, 362,
+ 2322, 317, 5196, 5197, 343, 5003, 1345, 317, 5199, 5200, 5201, 596, 317, 317, 5203, 404, 404, 5205, 490, 401, 5207, 466, 351, 5210, 5212, 5214, 382,
+ 5211, 5213, 5215, 5216, 5217, 5219, 5222, 3999, 5225, 317, 382, 317, 5220, 381, 343, 5221, 363, 343, 362, 317, 5223, 5224, 5226, 5228, 5230, 5231, 5232,
+ 5233, 5234, 5235, 5200, 370, 551, 2156, 5237, 5239, 5251, 5255, 5256, 5263, 5267, 5277, 595, 5238, 5240, 5242, 317, 5241, 5243, 5245, 5244, 5246, 5247, 5248,
+ 5249, 5250, 317, 1347, 5252, 5253, 5254, 373, 5167, 5257, 5261, 5258, 5259, 5260, 4564, 1347, 356, 5262, 5055, 343, 5264, 5265, 5266, 5120, 5268, 5272, 5274,
+ 5276, 5269, 5271, 5270, 5273, 356, 466, 317, 5275, 2603, 317, 5278, 5279, 5280, 5281, 608, 5283, 5284, 5285, 5286, 5288, 5314, 5316, 5320, 5322, 5289, 5296,
+ 5301, 5304, 595, 317, 5310, 5312, 348, 5290, 5293, 5291, 5292, 5294, 5295, 5297, 5298, 5299, 5300, 363, 363, 5302, 5303, 371, 362, 5305, 4980, 396, 5306,
+ 5308, 317, 5307, 4925, 1108, 5309, 3284, 5311, 5055, 2156, 5313, 5315, 471, 332, 380, 317, 317, 317, 317, 317, 380, 5317, 317, 2381, 5318, 5319, 3854,
+ 356, 5095, 5321, 317, 317, 5323, 5325, 5326, 5324, 5327, 393, 5328, 317, 5330, 5333, 5338, 5344, 5347, 5348, 5360, 5372, 5331, 5332, 5334, 5336, 5335, 5337,
+ 5339, 2156, 5340, 5341, 490, 5342, 5343, 5345, 5346, 5349, 317, 5357, 5350, 5356, 5351, 317, 5352, 5354, 370, 5353, 317, 363, 5355, 343, 1325, 317, 5358,
+ 5225, 523, 5359, 466, 317, 317, 381, 1347, 5361, 5364, 5366, 363, 5368, 5362, 5363, 5365, 5367, 5369, 5370, 5371, 356, 5113, 370, 317, 5373, 5374, 5375,
+ 370, 381, 5201, 5377, 317, 5378, 5379, 380, 5381, 5382, 5384, 5385, 363, 380, 490, 5387, 5388, 2322, 5393, 5398, 5383, 5386, 317, 489, 317, 5389, 5390,
+ 5392, 5391, 2156, 5324, 5394, 5395, 5396, 317, 1347, 317, 382, 343, 5397, 5399, 317, 511, 5401, 2086, 5403, 433, 5404, 380, 5405, 5406, 2476, 5407, 5410,
+ 380, 5433, 5559, 5562, 5612, 5613, 5646, 5658, 5678, 5680, 343, 5685, 5702, 5721, 365, 5749, 5786, 5809, 5811, 5408, 5409, 5411, 5413, 317, 5422, 5424, 5426,
+ 5429, 5432, 5412, 5414, 5420, 5415, 317, 5416, 317, 317, 5417, 1347, 5418, 5419, 317, 5421, 5423, 5425, 5427, 5428, 5430, 5431, 5434, 317, 5440, 5471, 5484,
+ 5493, 5531, 5540, 5435, 5436, 490, 5438, 5437, 5439, 5441, 5442, 5451, 5454, 5460, 5469, 1325, 466, 5443, 5444, 5445, 5448, 381, 5446, 5447, 5113, 2510, 5449,
+ 5450, 5452, 356, 317, 5453, 5096, 343, 5455, 5456, 356, 466, 2510, 317, 5457, 514, 5458, 343, 5459, 5461, 637, 5462, 5463, 649, 633, 5464, 5465, 332,
+ 5466, 317, 1267, 317, 317, 5457, 382, 5055, 5467, 5468, 317, 345, 511, 5470, 317, 867, 5472, 363, 5478, 5473, 5474, 5475, 5476, 370, 317, 5477, 5479,
+ 5480, 351, 5481, 5482, 5483, 5485, 5489, 5486, 5488, 5487, 5490, 5491, 5492, 2110, 5494, 5496, 5511, 5518, 5520, 5495, 5497, 5498, 5503, 371, 5238, 5499, 5500,
+ 5501, 5502, 5504, 5507, 5505, 5506, 2184, 5464, 5399, 381, 5508, 2156, 5509, 5510, 5464, 466, 5399, 5512, 5517, 317, 523, 356, 5513, 317, 5514, 5515, 5516,
+ 5519, 5521, 5527, 5522, 317, 5523, 5525, 356, 466, 317, 5457, 5524, 370, 1347, 5526, 5528, 5529, 5530, 317, 5532, 5537, 5539, 5533, 5536, 5534, 5535, 5365,
+ 356, 466, 317, 356, 404, 5538, 380, 1325, 466, 5541, 5544, 5548, 5552, 5557, 5542, 5543, 3648, 5545, 5546, 5547, 5549, 5551, 370, 5550, 5553, 5394, 466,
+ 5555, 5554, 5556, 5558, 1430, 5560, 5561, 5563, 5565, 5566, 357, 317, 5567, 5568, 362, 5571, 5572, 5574, 5576, 5608, 5609, 317, 645, 637, 5564, 5238, 317,
+ 4943, 5058, 5569, 5570, 1753, 401, 381, 332, 317, 490, 5573, 5575, 317, 5577, 339, 5586, 5591, 5578, 5582, 343, 5579, 5580, 5581, 5583, 5584, 5585, 5587,
+ 317, 5588, 5589, 5590, 5592, 5225, 5593, 2272, 5603, 5594, 5595, 5596, 5597, 5598, 5599, 5600, 5601, 5602, 5604, 5605, 5606, 5607, 5238, 5610, 5611, 317, 5614,
+ 5620, 5629, 1526, 5636, 5638, 5641, 317, 5645, 5615, 343, 5619, 5616, 5617, 5618, 5621, 343, 317, 317, 5624, 5625, 404, 4980, 5627, 5622, 5623, 5626, 317,
+ 5628, 5630, 5633, 317, 5635, 5631, 410, 5632, 466, 317, 5399, 1347, 317, 5634, 365, 317, 5637, 5639, 5640, 5642, 466, 5643, 5644, 381, 2219, 5647, 5654,
+ 5655, 5657, 317, 5648, 5649, 5652, 5653, 317, 545, 479, 317, 5650, 370, 5651, 5656, 317, 427, 390, 565, 5659, 5664, 5666, 5662, 5668, 5676, 317, 5660,
+ 5661, 5662, 4980, 317, 5663, 345, 345, 5665, 439, 5667, 363, 5669, 5670, 5671, 5672, 5673, 5674, 5675, 466, 5399, 317, 5399, 317, 5677, 439, 3522, 5679,
+ 317, 317, 317, 5681, 5682, 5683, 5684, 490, 5686, 396, 5688, 490, 5690, 5693, 5694, 5695, 5696, 5687, 317, 5689, 5691, 5692, 1109, 1347, 317, 339, 2021,
+ 5697, 5698, 5699, 5700, 5701, 317, 5703, 5704, 5712, 5705, 5710, 5706, 5707, 5708, 356, 5709, 5711, 5713, 2381, 5717, 5718, 5719, 5714, 5715, 5716, 317, 514,
+ 5447, 466, 5720, 380, 356, 2081, 5722, 5723, 5728, 5747, 990, 317, 317, 317, 317, 5724, 5725, 5726, 5727, 317, 5729, 5733, 5738, 5740, 5743, 5745, 5730,
+ 2163, 5731, 5732, 317, 5734, 5735, 5736, 5737, 5739, 5741, 5742, 5744, 2163, 490, 317, 5746, 5748, 317, 5464, 317, 5750, 5770, 5777, 5778, 5779, 5751, 5753,
+ 317, 427, 5766, 317, 5752, 5754, 5755, 317, 410, 5762, 5756, 5757, 5758, 5759, 5760, 5761, 5763, 5764, 5765, 5547, 5767, 5768, 5769, 5201, 404, 317, 1347,
+ 317, 5771, 5772, 317, 5773, 5774, 5775, 5776, 5334, 345, 5780, 317, 5781, 5783, 5785, 5782, 370, 370, 5488, 5784, 317, 380, 345, 1325, 404, 2510, 5787,
+ 396, 397, 490, 5789, 5794, 5797, 5804, 5806, 5808, 5788, 363, 5790, 5791, 5792, 5793, 5795, 317, 5796, 5798, 5799, 5800, 5801, 5802, 5803, 5805, 317, 380,
+ 315, 315, 5807, 317, 5324, 5810, 525, 5812, 5813, 5817, 5850, 5852, 5881, 5922, 5927, 5934, 5965, 5992, 5997, 6001, 6034, 6037, 5872, 6057, 6076, 6082, 6092,
+ 6127, 6129, 6132, 6133, 5814, 5815, 5816, 317, 5818, 317, 5819, 317, 351, 317, 5820, 5824, 5842, 5843, 5848, 5849, 317, 2322, 1230, 317, 317, 332, 5821,
+ 2272, 490, 5822, 5823, 637, 5825, 787, 5827, 5831, 5833, 5834, 5835, 5837, 362, 5826, 5828, 5829, 317, 490, 5830, 741, 370, 371, 5832, 371, 371, 371,
+ 317, 317, 2163, 317, 5836, 317, 363, 5838, 5839, 317, 5840, 5841, 5844, 5845, 5846, 5847, 2510, 317, 5457, 5167, 317, 317, 1347, 382, 5055, 343, 317,
+ 5851, 5853, 5854, 5857, 5870, 317, 5872, 5873, 317, 5878, 317, 4965, 345, 2537, 317, 5855, 317, 5856, 5325, 5661, 317, 5858, 348, 5860, 5861, 5863, 5867,
+ 345, 5859, 356, 5262, 317, 5862, 5864, 363, 5865, 5866, 5868, 5869, 2156, 5871, 5874, 5875, 5876, 410, 5877, 466, 5879, 356, 317, 5880, 5882, 317, 5884,
+ 1109, 5899, 4268, 5912, 5914, 5918, 5919, 5921, 5883, 3751, 5885, 5887, 317, 3023, 5888, 5889, 5891, 5892, 5893, 5895, 490, 5886, 574, 1999, 965, 317, 317,
+ 5793, 5890, 5663, 439, 5894, 5896, 363, 5897, 2310, 5898, 5900, 2272, 5902, 317, 5911, 5901, 350, 5903, 3125, 490, 2271, 5909, 5904, 5905, 5906, 5907, 5908,
+ 5910, 5913, 490, 5915, 362, 404, 5916, 5917, 5223, 317, 5920, 949, 351, 5923, 5924, 5925, 5926, 5928, 317, 5929, 5933, 565, 5930, 5310, 5931, 466, 317,
+ 5932, 317, 343, 1347, 5935, 5937, 317, 5938, 5939, 5943, 5944, 5952, 5953, 345, 5956, 5957, 5963, 3750, 5964, 5936, 5940, 5941, 5942, 651, 633, 633, 5945,
+ 5946, 5947, 5948, 5949, 5950, 5951, 354, 971, 381, 317, 5954, 5955, 5958, 5959, 5960, 5961, 5962, 5966, 5970, 5975, 5981, 5967, 490, 5968, 5969, 5971, 317,
+ 5972, 5973, 5974, 380, 1347, 5976, 5978, 5977, 356, 466, 317, 317, 5979, 5980, 356, 3854, 5982, 5988, 5989, 2368, 2368, 1526, 5983, 5984, 5985, 5986, 1325,
+ 5987, 351, 382, 363, 5990, 410, 5991, 466, 5399, 317, 5993, 5994, 5995, 5996, 5998, 5999, 6000, 3529, 362, 1160, 317, 317, 3517, 6002, 6003, 317, 6029,
+ 6004, 6018, 6023, 6026, 5760, 6005, 317, 6010, 317, 1267, 6006, 6007, 6008, 6009, 6011, 6012, 6013, 6014, 6015, 5226, 6016, 356, 6017, 2510, 382, 5055, 5550,
+ 6019, 5394, 466, 6020, 6022, 5226, 6021, 6024, 6025, 5457, 5055, 317, 6027, 523, 6028, 466, 6030, 6031, 6032, 5226, 6033, 6035, 6036, 490, 317, 343, 343,
+ 6038, 6047, 6049, 351, 6051, 6054, 351, 6039, 6043, 6044, 6040, 6041, 6042, 6045, 317, 6046, 345, 6048, 365, 6050, 6052, 6053, 5847, 317, 317, 345, 1347,
+ 6055, 5447, 466, 6056, 373, 5226, 356, 466, 5399, 317, 317, 6058, 6059, 6066, 6075, 6060, 6061, 6064, 2087, 6062, 6063, 317, 6065, 6067, 317, 6073, 381,
+ 363, 363, 363, 6068, 6071, 317, 1160, 343, 317, 6069, 6070, 6072, 6074, 371, 381, 2134, 6077, 317, 6078, 6080, 6079, 1526, 5225, 6081, 6083, 6084, 348,
+ 317, 5225, 317, 6085, 6090, 317, 6086, 6089, 317, 6087, 6088, 4591, 317, 6091, 6093, 6094, 6096, 6104, 6119, 6124, 6095, 489, 6097, 6098, 317, 6100, 6099,
+ 466, 317, 317, 5399, 317, 6101, 6102, 6103, 317, 4591, 317, 5225, 6105, 6112, 6106, 6107, 6109, 5250, 6108, 6110, 6111, 466, 4591, 4952, 1347, 317, 6113,
+ 6114, 6116, 6115, 5324, 397, 6117, 317, 6118, 2156, 317, 6120, 410, 6121, 466, 6122, 317, 3854, 1347, 317, 6123, 6125, 2631, 2551, 6126, 381, 370, 5717,
+ 1588, 6128, 371, 380, 6130, 6131, 351, 342, 6134, 6135, 6136, 6137, 6138, 6140, 6142, 6143, 6146, 6148, 6149, 6151, 6153, 6155, 6157, 6200, 6213, 6221, 6223,
+ 6141, 345, 317, 6144, 6145, 363, 363, 349, 2142, 6147, 2110, 367, 2330, 6150, 317, 382, 345, 6152, 350, 6154, 2845, 6156, 1347, 362, 345, 6158, 2035,
+ 6159, 6160, 365, 6161, 345, 6196, 317, 1347, 1347, 4564, 390, 6162, 6164, 6173, 539, 6174, 6177, 6180, 6186, 6189, 6163, 5732, 6165, 6167, 6166, 6168, 6169,
+ 6170, 6171, 6172, 2546, 317, 3869, 3361, 6175, 6176, 6178, 520, 6179, 6181, 6182, 6183, 6184, 6185, 965, 5105, 317, 6187, 6188, 6190, 4564, 6192, 565, 6191,
+ 6193, 1358, 6194, 6195, 6197, 6198, 6199, 317, 6201, 351, 1060, 6208, 6210, 6202, 6203, 6205, 6207, 6204, 6206, 6209, 6211, 6212, 6214, 4591, 490, 6220, 6215,
+ 6216, 317, 317, 6217, 1526, 3967, 6219, 578, 6218, 578, 2206, 6222, 6224, 6225, 6226, 6227, 6228, 6230, 317, 1109, 6236, 351, 6238, 6279, 6284, 6288, 6295,
+ 6297, 6299, 6313, 6331, 6335, 6361, 6362, 433, 373, 6231, 6232, 317, 6233, 2146, 6234, 6235, 6237, 6239, 6243, 6252, 6261, 6267, 6273, 373, 6240, 6241, 6242,
+ 6244, 6250, 3854, 6245, 5225, 356, 6246, 317, 382, 6247, 343, 6248, 6249, 317, 317, 6251, 6253, 6256, 6257, 6259, 6033, 6254, 6255, 317, 6258, 317, 5201,
+ 6260, 5553, 356, 466, 317, 384, 6262, 6265, 6263, 317, 6264, 6266, 349, 6268, 6269, 6271, 6270, 356, 466, 317, 6272, 370, 6274, 6276, 6275, 6277, 6278,
+ 6280, 6281, 6282, 6283, 317, 5211, 6285, 6286, 6287, 6289, 578, 343, 317, 6290, 6291, 6292, 6293, 6294, 6296, 2631, 332, 343, 317, 6298, 317, 6300, 381,
+ 6301, 380, 6302, 6303, 6309, 6310, 6304, 6305, 6306, 6307, 6308, 6311, 6312, 6314, 317, 389, 6315, 6323, 6316, 365, 439, 6320, 965, 6317, 317, 6318, 6319,
+ 317, 317, 412, 317, 345, 6321, 6322, 3079, 2509, 6324, 6326, 6327, 1194, 362, 6328, 6325, 6329, 6330, 6332, 6333, 6334, 363, 367, 6336, 6356, 490, 6337,
+ 6341, 6338, 6339, 6340, 6342, 6344, 2277, 6346, 6348, 6349, 6351, 6353, 6343, 6345, 6347, 2126, 4925, 534, 6350, 434, 5961, 6352, 6311, 6354, 6354, 6355, 6357,
+ 6358, 6359, 6360, 490, 5623, 6363, 6364, 6365, 6366, 6367, 6368, 6369, 6370, 6371, 6373, 6395, 6399, 6403, 6405, 490, 6416, 6443, 6445, 6455, 6456, 6469, 6488,
+ 6489, 6529, 6530, 6533, 6566, 6372, 6374, 6375, 6376, 6378, 2012, 6383, 6385, 6389, 6391, 343, 554, 1108, 351, 6377, 6379, 6380, 6381, 6382, 317, 6384, 317,
+ 6386, 393, 6388, 433, 6387, 6390, 5619, 1160, 317, 6392, 490, 317, 317, 6393, 6394, 317, 6396, 6397, 6398, 6400, 6401, 6402, 427, 351, 6404, 958, 317,
+ 317, 466, 6406, 370, 6407, 6411, 6413, 317, 6408, 6409, 351, 6410, 317, 596, 317, 2815, 317, 694, 633, 317, 317, 317, 6412, 351, 363, 6414, 6415,
+ 6417, 2510, 6419, 6421, 6431, 6418, 317, 6420, 6422, 6426, 6423, 6424, 6425, 6427, 6428, 6429, 6430, 6432, 6436, 390, 6442, 6433, 6434, 6435, 5546, 6437, 6438,
+ 6439, 2510, 363, 6440, 6441, 370, 2571, 6444, 317, 317, 596, 6446, 6448, 345, 317, 6451, 351, 6447, 397, 6449, 317, 317, 6450, 6452, 6454, 6453, 1325,
+ 5113, 2510, 5241, 4965, 554, 2094, 6457, 6459, 6464, 345, 6458, 317, 1160, 1459, 317, 317, 6460, 6462, 6461, 6463, 317, 6465, 490, 6466, 6467, 6468, 5343,
+ 317, 396, 6470, 6477, 6482, 6487, 6471, 317, 6472, 6473, 317, 4268, 5174, 6474, 317, 6475, 6476, 6478, 317, 6479, 317, 6480, 6481, 6483, 317, 6484, 317,
+ 6485, 6486, 332, 317, 317, 490, 365, 6490, 6491, 6500, 6520, 2533, 5027, 5624, 433, 6492, 6493, 490, 6498, 6494, 317, 466, 5399, 317, 6495, 6496, 6497,
+ 6499, 6501, 6505, 6515, 6516, 345, 6518, 6502, 6503, 6504, 6506, 6507, 6508, 6509, 6510, 6511, 6512, 317, 6514, 6513, 6514, 370, 6517, 2035, 6519, 317, 2035,
+ 6521, 6526, 2163, 439, 6522, 6523, 6524, 6525, 6527, 6528, 6531, 6532, 6534, 6542, 6543, 6544, 6553, 6551, 6554, 363, 6556, 6557, 6535, 2142, 6536, 332, 317,
+ 5687, 317, 6537, 6538, 6539, 6540, 6541, 6191, 2142, 317, 490, 343, 332, 351, 6545, 6549, 6552, 6546, 6547, 6548, 2389, 2110, 363, 6550, 6551, 317, 490,
+ 5238, 351, 348, 565, 6555, 317, 345, 363, 6558, 6559, 6564, 345, 6560, 6561, 6562, 6563, 6565, 450, 488, 6567, 6568, 427, 6570, 6575, 6579, 6582, 6586,
+ 6588, 6591, 6608, 6619, 6621, 6622, 6633, 6634, 6637, 2462, 2462, 6639, 317, 317, 332, 1109, 6571, 1230, 317, 6572, 345, 6573, 317, 6574, 6576, 317, 6577,
+ 6578, 6580, 6581, 343, 6583, 6584, 6585, 317, 6587, 317, 6589, 6590, 6592, 6595, 6597, 3023, 6599, 4984, 6600, 317, 6601, 6603, 6605, 317, 4949, 479, 6593,
+ 6594, 6596, 317, 1347, 317, 6598, 6602, 6604, 3007, 426, 6606, 6607, 6609, 6617, 393, 6610, 6616, 317, 317, 354, 6611, 6614, 317, 6612, 317, 5619, 6613,
+ 6615, 6618, 317, 317, 354, 6614, 6620, 5255, 1347, 501, 490, 317, 6623, 6624, 450, 345, 6625, 6626, 6627, 6630, 317, 345, 317, 317, 6628, 6629, 6631,
+ 6632, 363, 466, 317, 6635, 6636, 490, 6638, 490, 490, 381, 590, 6641, 490, 6643, 6646, 6650, 396, 6652, 6653, 6654, 6655, 6662, 6666, 6671, 6677, 6678,
+ 6685, 6749, 6756, 6762, 6763, 490, 350, 6764, 317, 6642, 490, 317, 6644, 6645, 343, 373, 317, 6647, 6649, 466, 317, 317, 6648, 317, 1160, 317, 2142,
+ 6651, 317, 5117, 343, 350, 5037, 2110, 317, 471, 345, 6656, 6657, 6658, 6659, 317, 332, 1347, 6660, 6661, 6663, 6664, 345, 5399, 351, 6665, 345, 363,
+ 343, 5054, 317, 317, 396, 380, 382, 317, 2609, 2584, 5809, 382, 6555, 6667, 5575, 3999, 6668, 2272, 317, 6669, 6670, 381, 317, 1347, 343, 317, 2022,
+ 317, 6672, 6676, 317, 6673, 6675, 5809, 6674, 339, 6679, 6681, 332, 6680, 6682, 6683, 6684, 637, 6686, 6687, 6694, 6698, 6706, 6708, 6715, 6716, 6719, 6722,
+ 6727, 2381, 6730, 6734, 6741, 5758, 6743, 317, 6688, 6689, 6692, 345, 1347, 2156, 6690, 6691, 6693, 389, 1044, 380, 317, 6695, 6696, 6697, 574, 6699, 6700,
+ 6705, 6701, 6702, 6703, 6704, 6707, 317, 317, 1588, 6709, 2402, 6711, 6714, 6710, 4564, 6712, 6713, 1999, 355, 6717, 6718, 6720, 6721, 509, 6723, 384, 317,
+ 6724, 6725, 6726, 6728, 363, 6729, 406, 6731, 6733, 6732, 4268, 350, 6735, 2261, 6696, 6737, 6738, 6736, 6697, 514, 1526, 3529, 6739, 554, 6740, 2156, 1347,
+ 380, 317, 6742, 362, 6744, 6745, 371, 596, 1347, 396, 6746, 6747, 6748, 6504, 317, 4984, 6750, 363, 5717, 343, 6755, 317, 6751, 6753, 6752, 6754, 6757,
+ 6758, 345, 6760, 6761, 6759, 2551, 2551, 363, 5055, 365, 332, 6765, 363, 317, 6767, 6770, 6775, 6776, 6191, 6779, 6781, 6787, 605, 6788, 5571, 363, 5120,
+ 6768, 317, 1020, 6769, 5120, 6771, 6772, 6773, 6774, 6777, 6778, 6780, 351, 6782, 6783, 6784, 6785, 6786, 590, 596, 343, 6789, 3182, 6791, 6794, 6812, 6815,
+ 6820, 6827, 6852, 6858, 6860, 6862, 362, 6863, 6867, 6882, 6895, 6902, 6905, 6792, 619, 6793, 6795, 6799, 365, 365, 317, 5120, 6801, 6803, 332, 6804, 6805,
+ 6807, 317, 6809, 6796, 6797, 6798, 6800, 6802, 317, 343, 317, 1481, 6806, 317, 1331, 6808, 6810, 6811, 649, 6813, 6814, 6816, 427, 6817, 404, 317, 6818,
+ 317, 317, 343, 2022, 362, 6819, 317, 4591, 363, 6821, 565, 6822, 380, 6824, 565, 439, 356, 362, 6823, 6825, 6826, 490, 6828, 6832, 332, 6836, 6838,
+ 6841, 6847, 6848, 6849, 490, 6850, 6829, 6830, 6831, 6833, 6835, 6834, 332, 332, 6837, 317, 332, 6839, 6840, 6842, 427, 6843, 317, 6845, 6844, 6846, 2845,
+ 6851, 6853, 6855, 6856, 6854, 6857, 363, 6859, 6861, 490, 5120, 317, 427, 317, 6864, 6865, 990, 471, 317, 6866, 6868, 380, 1230, 6870, 370, 6880, 2036,
+ 490, 6869, 370, 501, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6881, 6883, 5866, 6884, 363, 6885, 6886, 6887, 6888, 6889, 6890, 6891, 6892, 6893,
+ 6894, 2558, 490, 490, 6896, 6898, 6897, 6899, 6900, 6901, 6903, 6904, 317, 6906, 6910, 6912, 6969, 7029, 7058, 7094, 7197, 7215, 7247, 7255, 7321, 7323, 14,
+ 7471, 7510, 7512, 7528, 7575, 7580, 7586, 7603, 7690, 7707, 7725, 7728, 7731, 6907, 1932, 6908, 6909, 6911, 317, 317, 6913, 6918, 6919, 6921, 6922, 6924, 6929,
+ 5126, 6931, 6941, 6945, 6948, 6953, 6958, 6960, 6965, 6966, 6968, 6914, 490, 6915, 382, 6916, 6917, 5570, 2291, 362, 1020, 6920, 490, 348, 6923, 741, 332,
+ 5891, 6925, 6926, 6927, 317, 6928, 6930, 6932, 565, 6934, 5022, 6936, 6938, 365, 381, 6933, 343, 365, 490, 6935, 317, 6937, 317, 2086, 6939, 1109, 6940,
+ 1266, 317, 317, 317, 6942, 317, 6943, 332, 6944, 317, 317, 490, 317, 343, 317, 317, 365, 6946, 6947, 6949, 6950, 6951, 356, 6952, 317, 5514, 381,
+ 6954, 6955, 6957, 6956, 5022, 351, 1030, 6959, 565, 1588, 393, 6961, 6962, 6963, 6964, 365, 6967, 6970, 2462, 6986, 7002, 7012, 7015, 7022, 317, 6971, 351,
+ 6972, 6976, 6979, 6983, 4943, 317, 574, 317, 1588, 6973, 6974, 6975, 6977, 317, 6978, 317, 317, 317, 6980, 5392, 317, 6981, 332, 365, 6982, 1020, 317,
+ 351, 6984, 6985, 317, 332, 317, 381, 332, 6987, 6989, 6990, 6988, 6991, 6992, 6072, 365, 317, 6994, 4980, 6995, 317, 6993, 6996, 6997, 5104, 6998, 351,
+ 7000, 7001, 345, 5037, 317, 6999, 363, 6704, 317, 7003, 7006, 363, 1428, 2067, 7011, 7004, 7005, 317, 7007, 7008, 345, 7009, 7010, 7013, 2322, 7014, 317,
+ 7016, 7017, 7018, 7021, 471, 2078, 471, 471, 471, 7019, 363, 7020, 1020, 363, 490, 7023, 2074, 7024, 370, 317, 7025, 7026, 7027, 7028, 7030, 7037, 7038,
+ 7042, 7046, 317, 1020, 2261, 7031, 7032, 490, 7035, 2462, 7036, 565, 7033, 7034, 317, 380, 2462, 867, 6916, 7039, 7040, 7041, 317, 433, 4268, 7043, 2156,
+ 6999, 565, 7044, 7045, 317, 7047, 7048, 7052, 7054, 7056, 7057, 381, 343, 7049, 7050, 7051, 317, 1347, 427, 7053, 7055, 2134, 404, 317, 490, 351, 2073,
+ 7059, 7063, 7065, 2413, 7077, 7080, 7089, 317, 345, 7093, 7060, 332, 490, 490, 5793, 7061, 317, 490, 317, 317, 7062, 7064, 4984, 7066, 5040, 7069, 7070,
+ 7071, 7067, 7068, 362, 574, 350, 7072, 2193, 2022, 7074, 2022, 7076, 404, 7073, 7075, 363, 5746, 2067, 2413, 3869, 363, 7078, 317, 7079, 7081, 7085, 748,
+ 7086, 345, 7082, 7083, 7084, 7087, 7088, 7090, 7092, 605, 7091, 343, 343, 4925, 990, 343, 317, 5810, 2108, 7095, 7096, 317, 5332, 1383, 7097, 7099, 7102,
+ 7107, 7119, 7124, 317, 7130, 2396, 7131, 7133, 7144, 7146, 7148, 7150, 7152, 7193, 490, 490, 317, 351, 317, 490, 7098, 490, 7100, 7101, 565, 7103, 1347,
+ 7104, 7105, 7106, 317, 1100, 2035, 1160, 2271, 490, 7108, 7109, 7115, 339, 7110, 7111, 351, 351, 7112, 317, 7113, 7114, 317, 7116, 317, 7117, 7118, 7120,
+ 7121, 317, 490, 7122, 317, 7123, 7125, 7128, 317, 490, 490, 6974, 7129, 7126, 7127, 651, 1209, 317, 363, 332, 317, 7132, 1325, 466, 2571, 317, 5788,
+ 7134, 2012, 490, 7136, 439, 490, 317, 7135, 490, 7137, 317, 7143, 7138, 7139, 7140, 317, 7141, 7142, 317, 7145, 7147, 5238, 317, 348, 7149, 7151, 7153,
+ 7154, 7161, 320, 7163, 2767, 7164, 7165, 7166, 7167, 7180, 7181, 566, 7184, 7188, 345, 1548, 317, 7192, 1155, 317, 317, 317, 317, 1160, 7155, 317, 317,
+ 7157, 7156, 633, 7158, 7159, 7160, 7162, 2885, 317, 317, 317, 317, 4857, 621, 317, 317, 1155, 317, 317, 1168, 317, 350, 7168, 7169, 7170, 362, 317,
+ 7171, 7175, 7172, 317, 7173, 317, 7174, 1160, 317, 7176, 7177, 317, 4984, 5793, 7178, 317, 7179, 2108, 490, 317, 566, 317, 317, 2146, 7182, 7183, 345,
+ 7185, 7186, 7187, 7189, 7190, 7191, 7194, 7195, 7196, 7198, 7204, 317, 7206, 7208, 7211, 404, 501, 7199, 488, 642, 7200, 7201, 673, 922, 1588, 317, 7202,
+ 7203, 7205, 489, 317, 1108, 317, 7207, 365, 317, 5439, 7209, 356, 7210, 332, 317, 4984, 317, 7212, 7213, 404, 317, 317, 317, 490, 1160, 7214, 7216,
+ 7218, 7228, 7230, 7233, 7243, 317, 317, 7217, 7219, 7224, 317, 317, 7226, 7220, 7221, 317, 7222, 317, 7223, 7225, 7227, 404, 5616, 317, 7229, 7231, 7232,
+ 317, 490, 7234, 356, 7238, 7235, 7236, 7237, 317, 7239, 7240, 7241, 7242, 7244, 1588, 7245, 7246, 7248, 7251, 7252, 7249, 365, 7250, 2110, 1526, 7253, 7254,
+ 949, 7256, 7259, 7262, 490, 7268, 1383, 7270, 362, 317, 343, 7286, 7291, 7300, 7302, 7303, 7307, 7309, 7316, 343, 317, 7318, 7319, 355, 490, 7257, 7258,
+ 317, 345, 466, 2073, 7260, 1347, 7261, 317, 2715, 7263, 7265, 7266, 490, 317, 7267, 7264, 317, 867, 343, 6228, 317, 317, 317, 317, 7269, 317, 1109,
+ 317, 6434, 317, 7271, 7272, 7274, 7283, 390, 2146, 7273, 2184, 7275, 356, 466, 5399, 317, 7276, 7277, 7278, 7279, 7280, 7281, 7282, 7284, 7285, 7287, 7290,
+ 7288, 7289, 448, 317, 7292, 317, 2067, 490, 7299, 7293, 7296, 1267, 7294, 7295, 7297, 7298, 681, 1481, 1913, 490, 7301, 5640, 332, 1588, 7304, 7305, 381,
+ 7306, 7308, 7310, 317, 7313, 490, 490, 7314, 490, 7315, 317, 7311, 7312, 1160, 351, 490, 7317, 317, 4925, 1044, 317, 7320, 1358, 7322, 7324, 389, 7332,
+ 7333, 7334, 7335, 7338, 7325, 7329, 390, 7326, 7328, 7327, 317, 397, 7330, 1347, 7331, 490, 5634, 7336, 7337, 7339, 2156, 7340, 7341, 7342, 7344, 7358, 7364,
+ 7366, 7369, 2024, 7406, 7411, 7412, 7425, 7434, 7435, 7444, 7445, 7446, 7461, 7464, 1020, 7468, 7470, 343, 2272, 7343, 589, 1331, 317, 317, 317, 949, 649,
+ 7345, 1020, 7347, 573, 7035, 7351, 7352, 7353, 7355, 7357, 317, 7346, 317, 710, 354, 7348, 7349, 7350, 4984, 3999, 6228, 317, 363, 404, 317, 7354, 395,
+ 7356, 7359, 5960, 7360, 7361, 7362, 471, 7363, 7365, 371, 363, 370, 351, 7367, 7368, 5626, 4984, 7370, 7387, 7388, 7390, 7395, 7400, 7402, 317, 7404, 7371,
+ 7372, 7373, 7375, 7378, 7381, 1345, 5167, 5324, 317, 2590, 7374, 7376, 382, 7377, 356, 7379, 7380, 317, 433, 345, 317, 7382, 2211, 317, 7385, 7383, 7384,
+ 7386, 1347, 339, 5241, 7389, 439, 6228, 317, 7391, 7393, 317, 7394, 5840, 6089, 7392, 4952, 317, 390, 4943, 373, 4965, 608, 363, 5809, 7396, 362, 317,
+ 404, 7398, 317, 5055, 7397, 317, 317, 345, 381, 7399, 7401, 5788, 7403, 6433, 317, 2631, 1358, 317, 7405, 7407, 7409, 5346, 2063, 7408, 350, 343, 317,
+ 350, 7410, 350, 7413, 7415, 7416, 362, 7420, 317, 7422, 7423, 427, 7414, 2156, 317, 317, 7417, 2063, 7418, 7419, 350, 317, 7421, 351, 554, 404, 7314,
+ 6412, 7424, 7389, 7426, 2272, 7429, 7430, 7427, 7428, 1325, 2058, 7431, 7432, 7433, 530, 2117, 317, 7436, 2036, 317, 7437, 1109, 7439, 7441, 381, 350, 7442,
+ 5273, 5501, 5611, 1481, 7438, 7440, 2329, 5399, 1526, 7443, 356, 466, 317, 373, 5709, 317, 476, 1020, 1999, 332, 356, 6864, 4962, 7447, 7450, 7401, 7451,
+ 7453, 7454, 1060, 7457, 7448, 7449, 7452, 406, 514, 7455, 7456, 6420, 343, 7458, 7459, 7460, 380, 7462, 2060, 7463, 381, 2208, 5717, 1347, 472, 7465, 7466,
+ 7467, 380, 427, 7469, 2063, 3007, 345, 5623, 2631, 466, 5746, 1358, 404, 7472, 7484, 3023, 7491, 7496, 6601, 7503, 317, 7473, 7474, 7475, 7478, 7482, 5120,
+ 1345, 5710, 7483, 412, 332, 350, 7476, 7477, 7479, 317, 7481, 7480, 5392, 1108, 332, 490, 1087, 363, 490, 2004, 332, 7485, 7487, 7489, 7490, 2004, 351,
+ 7486, 2146, 317, 317, 7488, 7492, 7493, 7494, 7495, 7497, 7499, 7500, 7501, 5223, 7498, 1347, 351, 343, 7502, 7504, 7507, 7505, 7506, 7508, 7509, 345, 2146,
+ 7511, 2391, 363, 7513, 381, 7515, 7517, 317, 565, 7518, 396, 7520, 317, 7522, 7523, 7524, 7526, 7514, 1160, 7516, 317, 2110, 1160, 7519, 490, 357, 5611,
+ 317, 317, 2260, 7521, 317, 7525, 317, 7527, 7529, 7531, 7547, 7573, 317, 7530, 4943, 317, 5570, 490, 7532, 7533, 363, 317, 317, 317, 7534, 7535, 7536,
+ 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, 7548, 7569, 363, 7570, 7549, 7550, 317, 317, 317, 1353, 317, 317, 7556, 2077, 362, 7561, 7563,
+ 7566, 7568, 5037, 1267, 7551, 7552, 7553, 7554, 7555, 7557, 1188, 7558, 317, 7559, 317, 7560, 5492, 7562, 7564, 343, 7565, 7567, 4591, 317, 345, 7571, 7572,
+ 7574, 317, 565, 317, 1160, 317, 345, 7576, 7577, 7578, 7579, 1230, 7579, 2163, 7581, 7583, 356, 2074, 317, 7582, 390, 7584, 2301, 7585, 7587, 7589, 404,
+ 7591, 7593, 7595, 362, 7599, 7600, 361, 7601, 1060, 343, 7588, 2178, 5624, 7590, 7448, 448, 7592, 392, 7594, 317, 7596, 7597, 7598, 7447, 317, 317, 356,
+ 7602, 426, 7604, 7618, 7619, 7643, 7652, 501, 7661, 7664, 7675, 7683, 1700, 7688, 7689, 317, 7605, 317, 7607, 7609, 7610, 317, 7613, 317, 7616, 317, 2035,
+ 7606, 7608, 1459, 7611, 2369, 7612, 5328, 5570, 345, 7614, 317, 7615, 7617, 2381, 489, 1160, 4591, 7620, 7628, 317, 317, 748, 317, 7621, 7622, 7623, 7625,
+ 2108, 4949, 4949, 7624, 7626, 7627, 7629, 6425, 7630, 7631, 7632, 7633, 317, 7634, 7635, 7639, 7636, 7637, 7638, 7640, 7641, 2510, 317, 370, 317, 382, 5055,
+ 7642, 7644, 7646, 7647, 7648, 7650, 317, 7645, 317, 2152, 396, 7452, 7649, 390, 343, 7651, 1358, 2146, 7653, 317, 7655, 7656, 7658, 350, 7654, 317, 349,
+ 345, 7657, 7659, 7660, 1347, 460, 7662, 7663, 4984, 371, 2298, 343, 7665, 7669, 6355, 7670, 7673, 2035, 317, 7674, 7666, 7667, 7668, 7671, 5028, 7672, 2410,
+ 7676, 7679, 7680, 7677, 7678, 350, 7681, 7682, 317, 401, 7684, 7685, 3751, 7686, 7687, 7691, 7693, 393, 7696, 7697, 317, 7706, 490, 7692, 5238, 1108, 7694,
+ 489, 7695, 551, 2581, 7698, 7699, 7701, 7705, 317, 7700, 317, 741, 427, 7702, 7703, 7704, 1358, 317, 345, 7708, 7714, 7720, 7723, 317, 5237, 317, 373,
+ 7709, 7710, 345, 1108, 490, 7711, 332, 7712, 2322, 317, 6981, 7713, 317, 317, 351, 332, 317, 7715, 7717, 317, 317, 317, 7716, 7718, 7719, 332, 2462,
+ 317, 404, 490, 4965, 7196, 7721, 7722, 357, 332, 7724, 7726, 6318, 363, 1992, 7727, 3573, 362, 7098, 565, 490, 317, 7729, 7730, 4591, 490, 1459, 317,
+ 317, 490, 490, 363, 7266, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7745, 7746, 7813, 7859, 7862, 7863, 7903, 7904, 7912, 355, 7943, 7945, 7959, 7970,
+ 7991, 8028, 8032, 8046, 8048, 8053, 8055, 7740, 7741, 7742, 7743, 7744, 7747, 7748, 7749, 350, 317, 5687, 7757, 7758, 365, 7766, 490, 7772, 7793, 7794, 7803,
+ 7804, 490, 7806, 373, 343, 350, 2222, 317, 7750, 357, 7756, 317, 7751, 7752, 317, 7753, 7754, 7755, 351, 1943, 317, 7759, 7761, 6565, 466, 401, 7760,
+ 7762, 7763, 7764, 7765, 5223, 2537, 7767, 7523, 317, 317, 1358, 7770, 490, 7768, 2272, 637, 7769, 633, 694, 317, 317, 1267, 317, 7771, 5130, 7773, 7777,
+ 7778, 7780, 7783, 7785, 5619, 317, 7786, 317, 7774, 7776, 7775, 7779, 363, 7781, 7782, 7784, 7787, 7788, 7789, 7790, 317, 7791, 7792, 317, 345, 363, 5363,
+ 490, 317, 7795, 317, 568, 7802, 7796, 7798, 7797, 7799, 7800, 7801, 317, 1033, 343, 7805, 363, 7807, 7808, 7811, 390, 7809, 7810, 7812, 2603, 317, 345,
+ 5217, 490, 317, 7814, 7822, 7827, 7840, 7842, 7844, 7851, 2163, 490, 365, 317, 7815, 332, 7816, 7817, 7818, 7819, 7820, 433, 7821, 590, 7823, 7824, 637,
+ 1266, 317, 633, 2077, 7825, 7826, 317, 4980, 317, 6021, 317, 523, 7828, 6266, 7832, 490, 7835, 7838, 7829, 7830, 7831, 7833, 5200, 7834, 7836, 7837, 1347,
+ 345, 7839, 7841, 393, 317, 7843, 317, 345, 7845, 7846, 990, 349, 317, 5788, 393, 7847, 7849, 317, 7848, 2272, 4984, 5439, 317, 345, 7850, 7852, 7853,
+ 7856, 7857, 7854, 7855, 447, 7858, 7860, 7861, 7852, 5993, 317, 342, 7864, 7866, 490, 4943, 7867, 7869, 7870, 7874, 7875, 7882, 7895, 7899, 317, 317, 7901,
+ 7865, 332, 2178, 7868, 7871, 7872, 317, 466, 317, 317, 382, 7873, 410, 7876, 7877, 7879, 5200, 490, 7881, 356, 466, 5399, 2381, 317, 7878, 7880, 317,
+ 350, 317, 7883, 362, 317, 7893, 317, 317, 7884, 332, 1109, 7890, 317, 7892, 7885, 741, 7889, 345, 317, 317, 317, 7886, 317, 317, 317, 7887, 317,
+ 317, 345, 427, 7888, 7891, 317, 7894, 554, 363, 7055, 2291, 7896, 7897, 7898, 2322, 490, 1444, 7900, 412, 350, 6551, 2291, 7902, 936, 363, 7905, 7907,
+ 7906, 7908, 7909, 7910, 7911, 7913, 7914, 7917, 7922, 7923, 7926, 7927, 381, 7932, 7934, 7937, 7942, 7915, 317, 317, 7916, 345, 7918, 7919, 317, 363, 7920,
+ 7921, 317, 7924, 7925, 317, 620, 345, 317, 7928, 1347, 317, 490, 7929, 7930, 317, 5603, 317, 7931, 7933, 6600, 317, 355, 317, 3505, 5570, 317, 5332,
+ 317, 7935, 7936, 5325, 7938, 7940, 317, 7941, 7939, 7944, 363, 7946, 7948, 7950, 7955, 7958, 7947, 317, 2024, 317, 7949, 7951, 317, 7952, 7953, 7954, 7956,
+ 345, 7957, 5087, 317, 4984, 2156, 427, 7960, 317, 7963, 363, 7961, 7962, 370, 7964, 7965, 7969, 7966, 7967, 7968, 345, 339, 7971, 332, 7972, 7973, 317,
+ 7974, 7975, 7977, 1347, 381, 7987, 317, 5439, 332, 317, 2610, 7976, 490, 317, 343, 5105, 7978, 7979, 7980, 7981, 7982, 7984, 7985, 5325, 317, 2142, 5788,
+ 317, 5033, 317, 317, 343, 7983, 345, 7986, 7988, 7989, 317, 7990, 317, 7992, 7994, 7996, 8012, 8015, 317, 8022, 8024, 317, 382, 7993, 317, 490, 317,
+ 7995, 317, 1347, 4952, 7997, 8001, 8010, 317, 7998, 7999, 8000, 8002, 363, 8004, 8006, 8003, 5055, 4591, 8005, 345, 2163, 8007, 2627, 8008, 8009, 317, 8011,
+ 8013, 8014, 8016, 8017, 317, 8018, 8021, 8019, 2184, 5488, 8020, 8023, 343, 8025, 8026, 2156, 8027, 1325, 5054, 8029, 1020, 2310, 8030, 317, 317, 7776, 390,
+ 343, 8031, 8033, 7737, 8034, 380, 8036, 8037, 8038, 8039, 6674, 7590, 8035, 365, 2219, 6674, 1453, 367, 8040, 8045, 5309, 363, 8041, 8042, 8043, 8044, 8047,
+ 7850, 371, 8049, 8050, 357, 8052, 8051, 2521, 5675, 466, 317, 370, 8054, 6228, 8056, 8057, 8061, 8062, 317, 317, 393, 343, 8058, 2366, 8059, 8060, 8063,
+ 8064, 343, 8065, 8066, 8067, 8068, 8077, 8185, 8187, 8209, 8305, 8330, 8334, 8420, 8429, 8472, 8479, 8491, 8492, 8564, 1060, 8590, 8592, 8595, 17, 8871, 8882,
+ 8883, 8884, 8888, 8907, 8069, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8078, 8084, 8097, 8103, 8112, 8118, 1347, 8119, 8123, 8140, 8145, 8149, 8154, 8160, 8171,
+ 332, 8181, 490, 8079, 8082, 343, 525, 8080, 8081, 8083, 8085, 8088, 350, 8094, 8096, 8086, 8087, 8089, 8090, 8091, 8092, 8093, 1347, 401, 2004, 595, 8095,
+ 381, 8098, 332, 8100, 8101, 351, 8099, 8102, 317, 5727, 380, 5241, 8104, 8106, 8105, 8107, 8108, 8109, 5241, 8110, 8111, 8113, 317, 8117, 8114, 8115, 8116,
+ 2948, 381, 338, 8120, 8121, 2003, 8122, 633, 8124, 8125, 8126, 1943, 8130, 8131, 8133, 8134, 8127, 8128, 8129, 317, 434, 8132, 7380, 7834, 317, 2156, 317,
+ 316, 385, 8135, 8138, 8139, 8136, 8137, 1347, 1347, 5699, 8141, 2110, 1481, 8142, 8143, 8144, 345, 8146, 6409, 365, 8147, 490, 317, 1444, 8148, 3236, 8150,
+ 393, 2110, 8151, 8152, 8153, 2094, 2163, 8155, 317, 8159, 5241, 8156, 8157, 317, 1160, 317, 8158, 317, 7242, 6402, 317, 8161, 490, 8163, 8162, 365, 8164,
+ 8169, 8165, 8166, 8167, 490, 8168, 490, 1347, 345, 1109, 8170, 317, 8172, 5482, 8173, 8174, 8179, 317, 8175, 8176, 8177, 8178, 8180, 317, 7560, 4268, 8182,
+ 8183, 8184, 8186, 8188, 8190, 8196, 8201, 317, 8206, 8207, 3361, 8208, 7942, 317, 8189, 8191, 8193, 381, 8192, 6993, 8194, 2510, 8195, 380, 596, 317, 8197,
+ 488, 8198, 5238, 8199, 5201, 8200, 356, 466, 362, 317, 5634, 317, 317, 8202, 8204, 490, 332, 8203, 8205, 1915, 1109, 8170, 490, 2146, 949, 8210, 8220,
+ 8232, 8233, 8235, 8239, 8297, 8299, 8303, 8211, 8215, 574, 370, 8218, 490, 317, 2110, 8212, 5241, 8213, 8214, 8216, 8217, 8219, 363, 343, 7949, 8221, 8229,
+ 317, 5896, 8222, 8223, 8225, 362, 363, 8226, 4980, 8224, 6594, 371, 317, 363, 8227, 6046, 317, 8228, 317, 5037, 8230, 363, 8231, 2178, 490, 651, 3726,
+ 317, 362, 490, 8234, 317, 317, 8236, 8237, 8238, 350, 363, 2211, 317, 317, 362, 8240, 8246, 8263, 343, 8269, 404, 8286, 317, 8292, 8241, 8242, 317,
+ 8244, 8245, 7850, 365, 317, 8243, 317, 332, 371, 6228, 8247, 8251, 382, 8252, 317, 317, 8253, 8254, 8255, 2715, 6817, 8256, 8261, 621, 8248, 317, 633,
+ 633, 2163, 317, 8249, 489, 317, 363, 363, 8250, 317, 317, 6831, 1109, 6228, 317, 490, 7384, 365, 2715, 5890, 317, 363, 317, 681, 8257, 8258, 651,
+ 1353, 317, 1025, 1353, 317, 345, 8259, 1160, 317, 317, 1267, 317, 317, 8260, 8262, 7118, 490, 1267, 1209, 4984, 8264, 8265, 490, 8267, 8268, 317, 317,
+ 8266, 317, 7186, 343, 345, 8270, 6355, 8273, 8276, 8279, 8281, 8282, 8271, 8272, 8274, 8275, 2410, 8277, 8278, 8280, 4591, 2086, 317, 8283, 370, 8284, 8285,
+ 2163, 8287, 5890, 317, 8288, 8289, 8290, 8291, 8293, 8294, 8295, 8296, 748, 8298, 3361, 637, 1300, 8300, 633, 694, 8301, 362, 8302, 490, 8304, 1481, 8306,
+ 8309, 8310, 343, 2067, 8312, 8324, 8326, 8329, 317, 317, 8307, 5038, 1481, 8308, 490, 5439, 8311, 6188, 8313, 317, 8316, 8314, 8315, 8317, 345, 8318, 8319,
+ 8110, 8320, 317, 8321, 8322, 8323, 490, 8325, 343, 8327, 363, 8328, 8331, 8332, 2551, 8333, 1489, 8335, 8338, 5205, 2134, 8366, 2146, 8385, 8398, 8406, 8408,
+ 404, 8410, 8419, 1020, 8178, 8336, 8337, 317, 8339, 8363, 8365, 8340, 8341, 8342, 317, 317, 8344, 8345, 317, 1353, 8346, 8347, 2077, 8348, 8349, 8352, 8356,
+ 8358, 8361, 8362, 363, 317, 673, 317, 1018, 317, 1267, 317, 317, 317, 8343, 317, 317, 317, 621, 889, 317, 367, 384, 490, 317, 2715, 2156, 8350,
+ 8351, 317, 8353, 317, 490, 6458, 8354, 8355, 317, 7143, 317, 317, 427, 317, 317, 8357, 317, 971, 8359, 8360, 317, 7672, 332, 317, 2715, 317, 8178,
+ 5890, 365, 971, 7386, 317, 5991, 466, 8364, 363, 317, 317, 363, 2236, 5570, 8367, 8368, 490, 8370, 317, 317, 8369, 7566, 2142, 365, 8371, 8375, 343,
+ 8376, 8379, 8382, 8372, 8373, 8374, 317, 2355, 6486, 5033, 8377, 8378, 8380, 8381, 8383, 8384, 8386, 8387, 8393, 8397, 427, 5793, 345, 356, 317, 8388, 317,
+ 8391, 317, 1347, 8392, 404, 317, 5898, 8389, 8390, 363, 350, 4984, 8394, 1992, 8395, 8396, 7888, 7888, 7437, 741, 317, 8399, 8401, 317, 490, 8402, 2715,
+ 8404, 343, 8400, 4984, 317, 317, 8403, 8405, 317, 8407, 317, 371, 351, 370, 7657, 8409, 8411, 8413, 8415, 5570, 2381, 8412, 8414, 317, 317, 1526, 6228,
+ 317, 8416, 8417, 317, 8418, 3505, 8421, 8422, 8424, 365, 8425, 8423, 8426, 8428, 8427, 2261, 4591, 317, 433, 8430, 365, 5033, 490, 8431, 8432, 8452, 8454,
+ 8456, 8457, 8460, 8471, 2210, 317, 8433, 8446, 8447, 8449, 345, 8434, 8438, 8441, 8443, 317, 317, 8435, 345, 8436, 8437, 8439, 8440, 8442, 5447, 5113, 2510,
+ 8444, 8445, 8448, 8450, 5459, 8451, 8453, 490, 4980, 8455, 7242, 427, 8458, 8459, 317, 317, 8461, 8465, 8466, 490, 404, 317, 8462, 8463, 8464, 8467, 8468,
+ 8469, 8470, 6420, 490, 371, 490, 8473, 8476, 582, 8478, 7949, 365, 8474, 317, 317, 8475, 574, 490, 8477, 317, 2280, 317, 6600, 8480, 8485, 317, 489,
+ 8487, 2022, 8489, 8481, 8482, 8483, 8484, 8486, 8266, 427, 8488, 8490, 427, 427, 8493, 8518, 8531, 8545, 8547, 8554, 8563, 8494, 8499, 673, 649, 8501, 8504,
+ 8505, 8508, 8511, 8512, 8515, 317, 317, 8495, 317, 8496, 633, 8497, 8498, 8500, 317, 1519, 1889, 621, 317, 8502, 343, 8503, 382, 390, 320, 4314, 317,
+ 8506, 8507, 317, 8509, 317, 2351, 8510, 8513, 8514, 2146, 5570, 8516, 8517, 8519, 370, 343, 8520, 8523, 8526, 8527, 8528, 8530, 351, 8521, 343, 345, 8522,
+ 343, 8524, 8525, 8529, 5365, 5447, 466, 6195, 8532, 8537, 8538, 490, 8234, 5862, 490, 8540, 8533, 317, 8534, 317, 8535, 8536, 6228, 317, 317, 2077, 317,
+ 317, 8539, 8541, 8542, 8543, 8544, 8546, 8548, 5051, 8550, 8552, 8549, 332, 8551, 5708, 356, 8553, 317, 8555, 5200, 8558, 317, 8559, 8562, 5890, 8556, 8557,
+ 370, 317, 351, 1526, 3854, 345, 8560, 8561, 8565, 317, 8566, 490, 8568, 8570, 8573, 1060, 8579, 8581, 317, 8585, 8588, 490, 401, 1347, 8557, 8567, 317,
+ 8569, 8571, 343, 8572, 596, 4591, 317, 8574, 8575, 8576, 4965, 397, 8577, 345, 8578, 8580, 8582, 8584, 8583, 8586, 8587, 8589, 317, 8591, 8593, 8594, 8596,
+ 8598, 8601, 8604, 565, 8606, 317, 8607, 8609, 7600, 8615, 8618, 5238, 317, 8597, 8599, 332, 8600, 8602, 5865, 8603, 5309, 8605, 381, 317, 7983, 363, 317,
+ 5309, 370, 4738, 8608, 8610, 8614, 8611, 8612, 8613, 8616, 2272, 8617, 356, 381, 317, 8619, 8620, 410, 356, 466, 317, 6228, 8621, 8638, 8639, 8640, 8661,
+ 8691, 8826, 8829, 362, 8831, 8857, 1345, 8864, 8865, 8867, 5087, 8622, 8626, 8627, 317, 8634, 490, 8623, 8624, 8625, 8158, 5441, 8628, 317, 490, 8629, 317,
+ 8630, 8631, 8632, 8633, 317, 8635, 345, 8636, 8637, 5450, 8641, 8644, 317, 8648, 8650, 8652, 8655, 8656, 317, 8642, 317, 8643, 8645, 8646, 8647, 317, 8649,
+ 8651, 317, 8653, 351, 7385, 8654, 8657, 8659, 8658, 8660, 8662, 8665, 8666, 8676, 6903, 317, 8663, 343, 1347, 317, 8664, 317, 8667, 8670, 8674, 8668, 8669,
+ 8671, 8672, 8673, 317, 345, 1526, 317, 8675, 317, 6996, 317, 317, 317, 317, 317, 317, 317, 8677, 8678, 2627, 317, 8679, 339, 8680, 8681, 8683, 8685,
+ 8687, 8682, 8684, 8686, 8688, 8689, 8690, 521, 317, 8692, 8696, 8703, 8736, 8741, 8742, 8749, 8752, 8754, 8757, 8764, 8768, 8776, 8787, 8793, 8799, 8816, 8821,
+ 565, 8693, 8694, 8695, 8697, 345, 8701, 8702, 8698, 8699, 8700, 8704, 8705, 8710, 8714, 8723, 317, 8734, 8706, 6602, 8707, 8708, 8709, 8711, 8712, 8713, 5447,
+ 5987, 448, 8715, 8716, 8719, 8717, 343, 8718, 8720, 8721, 8722, 8724, 8727, 8730, 8725, 8726, 8728, 8729, 8731, 8732, 8733, 8735, 8737, 574, 8738, 8739, 8740,
+ 8743, 3236, 8745, 8747, 8744, 8746, 8748, 8271, 5173, 8750, 5217, 8751, 317, 389, 345, 867, 8753, 317, 8755, 317, 8756, 363, 8758, 8760, 2590, 8759, 349,
+ 8761, 8762, 8763, 8765, 8767, 8766, 7865, 345, 8769, 8771, 343, 8773, 8774, 8770, 8772, 8775, 8777, 5054, 8782, 8783, 8784, 8778, 317, 8781, 8779, 8780, 5784,
+ 332, 343, 8785, 8786, 8788, 8789, 1347, 8792, 8790, 1526, 8791, 317, 5055, 345, 382, 5201, 8794, 8795, 8796, 8797, 8798, 8800, 8805, 497, 490, 8808, 8812,
+ 8801, 393, 2094, 8802, 8803, 8804, 8806, 8807, 8809, 8810, 8811, 8813, 8814, 8815, 2193, 8817, 8819, 2026, 8820, 8818, 2163, 520, 8822, 8824, 8823, 363, 427,
+ 8825, 8827, 8828, 8830, 8832, 490, 8835, 8837, 8839, 8855, 490, 8833, 8834, 8836, 371, 8838, 345, 7126, 8840, 8842, 8847, 8853, 6046, 7385, 317, 8841, 2086,
+ 8843, 8484, 8845, 8844, 8846, 8848, 390, 8849, 8850, 8851, 317, 8852, 489, 8275, 317, 317, 317, 317, 345, 317, 317, 317, 317, 365, 317, 2715, 317,
+ 7185, 8854, 317, 2108, 8856, 8858, 8859, 362, 1020, 317, 4591, 2279, 8860, 8861, 8862, 8863, 8866, 317, 5392, 363, 8868, 7916, 8869, 8870, 8872, 8873, 8875,
+ 8876, 8881, 1481, 8874, 8877, 8878, 317, 8879, 8880, 8885, 5200, 8886, 8887, 6670, 8889, 8891, 8895, 2171, 2272, 8897, 8898, 489, 8905, 8890, 8892, 8893, 8894,
+ 8896, 8899, 8900, 490, 3999, 382, 8901, 8902, 8903, 8904, 1531, 8906, 8908, 365, 8911, 8912, 8913, 317, 317, 8909, 8910, 2272, 2612, 317, 8610, 490, 8914,
+ 596, 370, 490, 390, 8916, 365, 8917, 8920, 8921, 8922, 489, 8923, 363, 8926, 866, 343, 949, 632, 426, 8918, 8919, 2719, 317, 412, 7906, 8924, 8925,
+ 8927, 317, 345, 8945, 8957, 565, 8958, 8969, 8973, 8974, 8979, 8980, 9043, 9158, 9169, 9173, 9178, 9186, 3426, 8928, 8931, 1108, 8932, 2081, 490, 8938, 8941,
+ 4965, 8929, 8930, 317, 1011, 317, 2280, 2280, 8933, 8934, 8611, 8935, 343, 8936, 8937, 8939, 5571, 490, 317, 8940, 5888, 5399, 8942, 574, 8943, 2094, 317,
+ 8944, 317, 317, 8946, 362, 8949, 8950, 8956, 317, 317, 8947, 362, 1020, 8948, 596, 8951, 8953, 8952, 8954, 8955, 8959, 8960, 8961, 8962, 8964, 5226, 317,
+ 8963, 8965, 8966, 8967, 8968, 1358, 8549, 8970, 514, 5237, 317, 8971, 8972, 351, 3999, 8975, 370, 8976, 8978, 356, 2094, 8977, 8981, 8990, 380, 558, 9001,
+ 9006, 5792, 9028, 9032, 9039, 8982, 8986, 8989, 8983, 8984, 8985, 343, 8636, 8987, 8988, 8991, 8992, 2280, 5483, 8993, 8994, 8995, 8996, 8997, 8998, 8999, 9000,
+ 9002, 9005, 9003, 9004, 9007, 9014, 9023, 565, 9008, 9013, 9009, 9010, 9011, 9012, 9015, 9018, 9016, 9017, 1588, 2163, 9019, 317, 9020, 9021, 9022, 4984, 345,
+ 9024, 9027, 6163, 9025, 317, 317, 345, 9026, 5717, 5447, 466, 1347, 2163, 490, 9029, 9030, 9031, 2163, 401, 9033, 9034, 2156, 9035, 9037, 317, 370, 2156,
+ 9036, 574, 339, 345, 9038, 9040, 9041, 9042, 5652, 8544, 490, 9044, 9054, 9082, 9084, 9105, 9119, 9120, 317, 317, 9045, 9049, 9050, 9046, 5174, 6199, 9047,
+ 9048, 9051, 9053, 5365, 9052, 9055, 9058, 9065, 9076, 9079, 5273, 9056, 9057, 5708, 356, 466, 317, 5019, 466, 9059, 9060, 466, 9061, 362, 9064, 317, 574,
+ 501, 9062, 317, 4268, 9063, 317, 5054, 9066, 9073, 9067, 9068, 9071, 9069, 317, 9070, 9072, 382, 317, 345, 5828, 9074, 9075, 9077, 404, 317, 9078, 9080,
+ 5634, 9081, 2510, 466, 9083, 343, 317, 345, 9085, 9087, 9101, 9104, 2184, 9086, 5363, 343, 9088, 6996, 317, 317, 317, 9089, 2171, 9091, 9093, 2052, 317,
+ 2058, 9096, 9098, 9099, 550, 741, 9090, 448, 317, 317, 448, 9092, 545, 1358, 384, 9094, 9095, 1266, 317, 9097, 1526, 363, 343, 317, 9100, 2627, 574,
+ 5708, 9102, 5464, 1992, 965, 9103, 5457, 4268, 5167, 9106, 9110, 9111, 9114, 9107, 9108, 9109, 466, 5399, 317, 332, 5431, 9112, 9113, 9115, 9116, 9117, 9118,
+ 9121, 9125, 9141, 9142, 9122, 9123, 4564, 9124, 9126, 9131, 9134, 9127, 9128, 6020, 9129, 5447, 9130, 382, 363, 343, 9132, 9133, 5363, 5220, 9135, 9136, 9137,
+ 9138, 317, 9139, 9140, 9143, 5488, 9146, 9152, 9153, 9144, 9145, 410, 5464, 466, 9147, 9148, 9149, 9150, 9151, 5113, 317, 370, 2571, 317, 4564, 5447, 8553,
+ 9154, 9155, 9156, 381, 9157, 7640, 5113, 9159, 9160, 9161, 9168, 5056, 380, 9162, 9163, 9164, 9165, 9166, 9167, 621, 317, 317, 317, 317, 317, 490, 317,
+ 317, 1347, 2086, 2110, 9170, 2609, 9171, 8392, 9172, 9174, 9175, 9177, 370, 9176, 363, 4040, 490, 9179, 9181, 9183, 317, 9185, 9180, 9182, 5217, 9184, 9188,
+ 2073, 490, 380, 9192, 9196, 9218, 2776, 9189, 9190, 9191, 317, 9193, 9194, 9195, 9197, 9208, 9210, 9198, 9199, 317, 7149, 5379, 9201, 9203, 317, 9206, 9200,
+ 9202, 4984, 2271, 9204, 4984, 317, 1915, 9205, 9207, 9209, 2210, 4591, 332, 2509, 9211, 9215, 1588, 9216, 9212, 9213, 9214, 9217, 2272, 5241, 9219, 9222, 9271,
+ 9294, 9411, 9428, 9463, 9464, 9499, 9502, 9556, 9560, 9579, 9588, 9653, 9678, 9703, 9708, 9714, 9762, 9784, 9868, 9879, 9885, 9888, 9889, 9891, 9220, 9221, 949,
+ 9223, 9229, 9237, 9239, 9240, 9246, 9247, 9249, 9250, 9255, 9259, 965, 9262, 9263, 9266, 9267, 9270, 7850, 490, 9224, 9225, 9227, 343, 317, 2381, 9226, 5616,
+ 1109, 9228, 317, 5355, 490, 5488, 9230, 9232, 343, 9231, 490, 9233, 9235, 9236, 9234, 317, 6355, 9238, 317, 381, 2110, 9241, 9242, 9245, 365, 317, 317,
+ 9243, 5684, 8522, 9244, 9027, 3688, 317, 9248, 1347, 365, 8217, 490, 365, 7790, 9251, 9252, 332, 5419, 9254, 6394, 9253, 490, 5611, 1347, 9256, 1109, 7301,
+ 332, 9257, 317, 348, 9258, 317, 6555, 9260, 9261, 9264, 9265, 9268, 332, 317, 9269, 317, 5241, 5241, 6486, 317, 439, 332, 9272, 9273, 9276, 9283, 9288,
+ 9290, 2142, 317, 4943, 9274, 1108, 9275, 450, 317, 317, 9277, 332, 351, 9278, 9279, 363, 343, 317, 9280, 9282, 9281, 317, 317, 404, 2510, 9284, 9285,
+ 317, 9286, 351, 412, 412, 2004, 2004, 9287, 5105, 741, 9289, 317, 9291, 317, 9292, 365, 373, 9293, 345, 9295, 9302, 2163, 9305, 9396, 2301, 9399, 9401,
+ 9402, 9410, 9296, 9299, 332, 490, 574, 5447, 9297, 7000, 9298, 345, 317, 317, 317, 9300, 317, 427, 9301, 317, 317, 490, 5241, 3854, 9303, 317, 9304,
+ 9306, 9326, 9332, 9345, 9355, 2387, 9386, 9389, 9391, 9393, 7405, 3284, 9307, 339, 9317, 9323, 5105, 9308, 9309, 9314, 9310, 9311, 9312, 317, 9313, 4268, 9315,
+ 9316, 9318, 9319, 9320, 9321, 9322, 317, 9324, 9325, 428, 9327, 578, 9328, 9329, 9330, 9331, 401, 317, 373, 9333, 9338, 9343, 9334, 9335, 9336, 9337, 9339,
+ 9340, 9341, 9342, 363, 1347, 9344, 343, 363, 317, 6415, 9346, 9347, 9348, 9351, 317, 9352, 317, 9349, 9350, 9353, 9354, 380, 1347, 521, 9356, 9358, 9364,
+ 9365, 382, 9371, 9372, 9376, 9384, 9357, 9226, 578, 317, 9359, 9360, 9361, 9362, 9363, 9366, 9369, 9367, 9368, 9370, 9373, 317, 9374, 9375, 9377, 9382, 9378,
+ 9379, 8682, 317, 9380, 9381, 5701, 1347, 9383, 380, 5447, 9385, 382, 4268, 1347, 9387, 9388, 9390, 9392, 9394, 317, 9395, 317, 490, 2178, 490, 9364, 9397,
+ 2381, 332, 317, 9398, 317, 490, 9400, 317, 317, 9403, 9404, 5910, 1109, 5482, 9405, 9406, 9407, 9408, 9409, 574, 365, 317, 365, 9412, 317, 9414, 9417,
+ 9420, 350, 9421, 9424, 9425, 9426, 4974, 2391, 3361, 390, 362, 1345, 317, 9413, 390, 317, 342, 5482, 9415, 9416, 370, 9413, 362, 490, 5891, 9304, 2156,
+ 5324, 2219, 363, 317, 9418, 9419, 2272, 7035, 363, 1588, 363, 9422, 317, 9423, 370, 5271, 317, 9427, 4591, 9429, 9430, 9431, 7061, 317, 9432, 9433, 9435,
+ 9437, 9441, 2381, 9452, 9454, 9455, 9457, 9459, 7399, 2142, 2381, 8549, 7801, 3375, 9434, 345, 9436, 9438, 9439, 7657, 9440, 381, 9442, 9444, 9445, 317, 9448,
+ 345, 7035, 9451, 1100, 317, 9443, 1078, 5241, 317, 9446, 351, 2161, 317, 317, 9447, 390, 9449, 9450, 363, 554, 9453, 317, 9456, 317, 1943, 9458, 590,
+ 9460, 9461, 9462, 317, 1194, 362, 9465, 9467, 9475, 9476, 9477, 9480, 9481, 9493, 7053, 380, 9466, 7053, 7356, 5241, 9468, 317, 9474, 380, 7053, 9469, 8419,
+ 317, 9470, 9471, 317, 427, 317, 2178, 9472, 1347, 9473, 362, 1347, 5890, 363, 317, 2271, 332, 9478, 1345, 343, 9479, 343, 434, 5926, 9482, 7053, 9483,
+ 9484, 9487, 8273, 9489, 5223, 317, 9485, 317, 490, 9486, 332, 9488, 1992, 9490, 332, 9491, 9492, 6430, 317, 9494, 9495, 317, 5153, 9496, 317, 9497, 9498,
+ 9500, 9501, 345, 4212, 381, 9503, 9506, 9509, 9510, 317, 9513, 9514, 9515, 9516, 9518, 9519, 2357, 9520, 9543, 345, 9550, 9552, 9504, 380, 343, 317, 9505,
+ 317, 490, 317, 317, 5343, 6069, 317, 317, 1347, 9507, 317, 9508, 345, 397, 343, 9511, 1160, 9512, 345, 490, 2322, 381, 317, 9517, 2322, 317, 2080,
+ 317, 317, 5862, 5517, 390, 490, 317, 2322, 317, 9521, 1109, 9522, 9523, 343, 9526, 3429, 9524, 9525, 9527, 9529, 9531, 9528, 2156, 9530, 9532, 9533, 9536,
+ 317, 9539, 9541, 9534, 9535, 370, 7242, 9537, 9538, 9540, 9542, 1358, 317, 9544, 9545, 9546, 9547, 9548, 9549, 9551, 6851, 7565, 9553, 9555, 365, 9554, 490,
+ 7266, 9557, 6002, 2035, 9558, 9559, 9561, 9566, 9568, 9574, 2402, 9576, 7053, 9562, 9565, 1459, 9563, 343, 317, 9564, 2134, 348, 380, 490, 9567, 9569, 317,
+ 9570, 9571, 9572, 9573, 9575, 9577, 317, 9578, 9580, 9582, 9584, 9587, 317, 6318, 9581, 363, 990, 363, 4943, 5891, 317, 9583, 317, 1109, 5793, 317, 317,
+ 9585, 345, 490, 317, 9586, 6415, 6382, 9589, 9606, 9611, 9612, 9624, 9625, 1020, 317, 9637, 6255, 1479, 9641, 6089, 9650, 363, 9590, 9591, 9596, 2627, 5399,
+ 9599, 9602, 9603, 5022, 9592, 9593, 9594, 9595, 9597, 317, 338, 412, 9598, 4980, 4984, 9600, 1160, 9601, 317, 2035, 317, 317, 317, 9604, 9605, 9607, 9608,
+ 6355, 317, 9609, 9609, 9610, 317, 9613, 9616, 9617, 317, 7403, 9614, 9615, 9618, 536, 8214, 9621, 9619, 9620, 1108, 1108, 317, 2829, 9622, 4965, 4280, 9623,
+ 317, 9626, 345, 350, 6294, 9627, 9631, 9635, 2387, 9628, 9629, 365, 9630, 490, 317, 317, 9632, 9634, 9633, 345, 317, 9636, 355, 514, 2187, 1588, 356,
+ 1325, 9638, 9639, 356, 5784, 317, 317, 9640, 317, 356, 596, 317, 9642, 363, 9645, 9643, 9644, 9646, 466, 9647, 9648, 9649, 362, 9651, 9652, 9654, 9658,
+ 9660, 9662, 9665, 317, 9668, 9671, 9675, 9676, 2271, 501, 9655, 317, 9656, 317, 9657, 356, 428, 9659, 317, 5896, 6204, 380, 7114, 6046, 9661, 317, 1999,
+ 427, 9663, 9664, 1160, 317, 382, 9666, 317, 9667, 9669, 1358, 317, 5223, 316, 317, 9670, 5897, 9672, 9673, 5809, 9674, 363, 1131, 404, 317, 437, 9677,
+ 9679, 2142, 9681, 9687, 9693, 490, 9697, 9700, 9702, 332, 317, 9680, 9682, 363, 7891, 317, 9683, 393, 9684, 5732, 9685, 9686, 317, 317, 9688, 2280, 9689,
+ 9692, 9690, 317, 9691, 317, 2317, 363, 2310, 9694, 9695, 9696, 317, 9698, 8611, 9699, 1325, 365, 9701, 380, 5447, 466, 9704, 9705, 6920, 317, 317, 332,
+ 539, 9706, 9707, 9709, 9710, 9712, 4591, 6394, 332, 9711, 9713, 381, 9715, 9721, 9731, 9737, 9747, 317, 2004, 9716, 2163, 9717, 9718, 9719, 9720, 9117, 380,
+ 343, 317, 6118, 1347, 9722, 9723, 2396, 9724, 9726, 2381, 2396, 5028, 9728, 317, 9730, 490, 345, 490, 7062, 9725, 5570, 363, 9727, 428, 7062, 9729, 356,
+ 466, 351, 317, 9732, 9733, 9734, 9735, 9736, 9738, 6409, 371, 489, 9739, 9740, 2381, 9741, 8937, 9742, 9746, 490, 357, 8337, 2134, 2067, 9325, 9743, 466,
+ 9744, 317, 9745, 6551, 2381, 9748, 9749, 332, 9750, 9751, 9757, 381, 9758, 9761, 317, 6551, 332, 9752, 9753, 9754, 9755, 9756, 317, 370, 9759, 2063, 9719,
+ 9760, 5570, 317, 1347, 9763, 9765, 9769, 9776, 9778, 9780, 9782, 9764, 9766, 9767, 9768, 1962, 9770, 317, 9771, 9774, 9775, 9772, 343, 3505, 317, 9773, 317,
+ 317, 317, 1331, 317, 317, 343, 317, 317, 317, 9777, 317, 317, 1020, 9779, 9781, 9783, 9785, 9787, 8301, 9793, 9795, 9817, 9819, 9828, 2022, 5662, 9858,
+ 9860, 9861, 9862, 1020, 9864, 9866, 9867, 651, 9786, 9788, 2163, 356, 9790, 9789, 9791, 9792, 9794, 6551, 9796, 490, 9797, 9807, 9816, 317, 9798, 9801, 672,
+ 9803, 9805, 490, 363, 345, 651, 9799, 9800, 9802, 9804, 317, 9806, 9808, 9810, 317, 317, 7590, 9809, 380, 345, 9811, 596, 9812, 9813, 9814, 9815, 5217,
+ 317, 9818, 5701, 317, 351, 392, 9820, 9826, 5828, 9821, 9822, 9823, 9824, 9825, 317, 9827, 317, 633, 362, 317, 6551, 558, 9829, 1347, 9837, 6409, 9840,
+ 4591, 9845, 9846, 9851, 427, 317, 9830, 9832, 9833, 9831, 9834, 9835, 317, 9836, 5447, 5113, 448, 5988, 9838, 9839, 345, 9841, 9842, 9843, 343, 9844, 350,
+ 362, 9847, 9848, 9849, 9850, 9852, 363, 9854, 9853, 317, 1347, 9855, 370, 317, 9856, 9857, 9859, 345, 490, 317, 317, 1060, 317, 4019, 516, 317, 9863,
+ 357, 6228, 883, 371, 317, 9865, 351, 381, 5217, 390, 9869, 9870, 332, 317, 9871, 317, 1459, 332, 590, 9872, 9877, 9873, 9874, 9875, 9876, 9878, 7776,
+ 9880, 9882, 9883, 317, 317, 490, 9881, 357, 332, 501, 317, 9884, 5926, 2381, 1325, 332, 8633, 2063, 9886, 9887, 9890, 390, 317, 5265, 1347, 9892, 363,
6486, 6817, 1358, 9893, 6388, 490, 343, 9894, 9895, 2883, 9898, 9902, 9911, 9915, 9950, 9989, 9995, 9998, 10001,10060,10077,10082,10087,10092,10095,10099,10126,
- 10127,10128,10204,10280,10282,10284,9896, 4996, 9897, 9899, 9900, 9901, 949, 9903, 6402, 317, 365, 365, 317, 9904, 9906, 9907, 9908, 4925, 357, 9909, 9910,
- 317, 317, 9905, 317, 2533, 317, 317, 536, 343, 317, 590, 9912, 428, 8948, 9914, 448, 317, 380, 448, 9913, 9916, 9918, 9926, 9939, 9940, 9942, 9948,
- 404, 9917, 317, 365, 9919, 9924, 6466, 2537, 9920, 9923, 1347, 332, 5968, 9921, 466, 317, 317, 9922, 5226, 6382, 317, 9925, 9927, 6203, 9932, 427, 9938,
- 3529, 9928, 317, 9929, 9930, 9931, 362, 9933, 317, 9934, 2108, 9935, 9936, 9937, 351, 350, 9941, 9943, 9944, 490, 8105, 9946, 5223, 9945, 9947, 9949, 9951,
- 1112, 936, 866, 9954, 1442, 1943, 1276, 9957, 339, 9982, 9983, 9984, 9987, 9952, 9953, 1251, 3502, 945, 9955, 9956, 1266, 320, 1347, 1027, 9958, 9959, 9960,
- 9962, 9965, 9966, 9973, 9976, 8047, 1370, 9978, 9979, 317, 7155, 936, 694, 9961, 9963, 9964, 9967, 9968, 637, 9969, 9971, 9970, 317, 9972, 9974, 9975, 9977,
- 9980, 9981, 9985, 9986, 9988, 4984, 5608, 2539, 9990, 317, 9991, 2094, 9992, 5608, 9994, 990, 2271, 2537, 317, 332, 490, 9993, 9996, 1444, 9997, 9999, 565,
- 550, 10000,949, 10002,10009,10015,10017,10019,10023,10024,10026,10028,10034,10042,350, 10045,1962, 10047,10049,10051,10057,317, 317, 10003,10008,2715, 317,
- 350, 10004,10005,10006,10007,363, 356, 10010,448, 10011,9695, 10013,317, 8600, 4943, 10012,10014,7070, 404, 317, 10016,6696, 6696, 10018,370, 10020,317,
- 1160, 5037, 10021,10022,1065, 6598, 551, 10025,7073, 9436, 10027,390, 10029,404, 10030,372, 10031,10032,10033,317, 10035,10036,10040,384, 10041,317, 317,
+ 10127,10128,10204,10280,10282,10284,9896, 4996, 9897, 9899, 9900, 9901, 949, 9903, 6402, 317, 365, 365, 317, 9904, 9906, 9907, 9908, 4925, 357, 9909, 9910,
+ 317, 317, 9905, 317, 2533, 317, 317, 536, 343, 317, 590, 9912, 428, 8948, 9914, 448, 317, 380, 448, 9913, 9916, 9918, 9926, 9939, 9940, 9942, 9948,
+ 404, 9917, 317, 365, 9919, 9924, 6466, 2537, 9920, 9923, 1347, 332, 5968, 9921, 466, 317, 317, 9922, 5226, 6382, 317, 9925, 9927, 6203, 9932, 427, 9938,
+ 3529, 9928, 317, 9929, 9930, 9931, 362, 9933, 317, 9934, 2108, 9935, 9936, 9937, 351, 350, 9941, 9943, 9944, 490, 8105, 9946, 5223, 9945, 9947, 9949, 9951,
+ 1112, 936, 866, 9954, 1442, 1943, 1276, 9957, 339, 9982, 9983, 9984, 9987, 9952, 9953, 1251, 3502, 945, 9955, 9956, 1266, 320, 1347, 1027, 9958, 9959, 9960,
+ 9962, 9965, 9966, 9973, 9976, 8047, 1370, 9978, 9979, 317, 7155, 936, 694, 9961, 9963, 9964, 9967, 9968, 637, 9969, 9971, 9970, 317, 9972, 9974, 9975, 9977,
+ 9980, 9981, 9985, 9986, 9988, 4984, 5608, 2539, 9990, 317, 9991, 2094, 9992, 5608, 9994, 990, 2271, 2537, 317, 332, 490, 9993, 9996, 1444, 9997, 9999, 565,
+ 550, 10000,949, 10002,10009,10015,10017,10019,10023,10024,10026,10028,10034,10042,350, 10045,1962, 10047,10049,10051,10057,317, 317, 10003,10008,2715, 317,
+ 350, 10004,10005,10006,10007,363, 356, 10010,448, 10011,9695, 10013,317, 8600, 4943, 10012,10014,7070, 404, 317, 10016,6696, 6696, 10018,370, 10020,317,
+ 1160, 5037, 10021,10022,1065, 6598, 551, 10025,7073, 9436, 10027,390, 10029,404, 10030,372, 10031,10032,10033,317, 10035,10036,10040,384, 10041,317, 317,
4943, 10037,637, 10038,10039,633, 363, 10043,10044,5628, 343, 10046,343, 343, 317, 10048,10050,5684, 7405, 9869, 317, 10052,10056,317, 10053,381, 10054,
- 10055,428, 10058,10059,356, 545, 10061,1347, 2156, 10071,317, 10072,10073,8431, 317, 317, 10074,10062,317, 317, 332, 10065,8636, 10063,10064,10066,317,
- 317, 381, 8281, 317, 10067,10068,10069,10070,590, 2142, 10075,10076,10078,10079,10080,4952, 501, 317, 10081,2553, 317, 3023, 317, 317, 317, 317, 317,
+ 10055,428, 10058,10059,356, 545, 10061,1347, 2156, 10071,317, 10072,10073,8431, 317, 317, 10074,10062,317, 317, 332, 10065,8636, 10063,10064,10066,317,
+ 317, 381, 8281, 317, 10067,10068,10069,10070,590, 2142, 10075,10076,10078,10079,10080,4952, 501, 317, 10081,2553, 317, 3023, 317, 317, 317, 317, 317,
605, 9575, 10083,10084,10085,317, 6854, 1060, 404, 381, 317, 10086,10088,317, 10089,8265, 10090,10091,363, 345, 317, 10093,351, 10094,565, 9623, 10096,
490, 10097,10098,5807, 10100,501, 10106,10110,10115,10123,10125,2537, 10101,5241, 9993, 10102,10104,10103,2272, 345, 10105,339, 4268, 3023, 380, 1160, 10107,
- 317, 10108,6599, 317, 351, 10109,3505, 10111,10112,10113,10114,10116,10117,428, 543, 10118,5447, 10121,4268, 10119,356, 10120,10122,10124,363, 439, 936,
- 2553, 2178, 2845, 6228, 1184, 10129,10140,10141,10156,10160,10165,10182,10186,10190,317, 10198,317, 10199,10202,10203,10130,317, 380, 317, 10132,7035, 8217,
- 10134,10135,10139,1347, 10131,10133,4267, 356, 5055, 10136,317, 10137,10138,7764, 317, 5840, 384, 1194, 349, 317, 10142,10143,10150,10151,10154,1347, 363,
- 5213, 490, 10144,10145,9067, 10146,10147,10148,317, 317, 1347, 317, 10149,1871, 6203, 5487, 10152,356, 10153,317, 382, 5055, 6496, 10155,5464, 466, 5399,
+ 317, 10108,6599, 317, 351, 10109,3505, 10111,10112,10113,10114,10116,10117,428, 543, 10118,5447, 10121,4268, 10119,356, 10120,10122,10124,363, 439, 936,
+ 2553, 2178, 2845, 6228, 1184, 10129,10140,10141,10156,10160,10165,10182,10186,10190,317, 10198,317, 10199,10202,10203,10130,317, 380, 317, 10132,7035, 8217,
+ 10134,10135,10139,1347, 10131,10133,4267, 356, 5055, 10136,317, 10137,10138,7764, 317, 5840, 384, 1194, 349, 317, 10142,10143,10150,10151,10154,1347, 363,
+ 5213, 490, 10144,10145,9067, 10146,10147,10148,317, 317, 1347, 317, 10149,1871, 6203, 5487, 10152,356, 10153,317, 382, 5055, 6496, 10155,5464, 466, 5399,
2510, 514, 10157,10158,10159,381, 10161,10162,10163,10164,10166,10170,10173,10175,10180,2156, 10167,10168,10169,10171,10172,466, 5399, 317, 10174,317, 10176,
10177,10178,10179,317, 10181,6042, 356, 5395, 317, 10183,541, 10184,10185,10187,10188,10189,1160, 6916, 10191,10197,10192,10193,6763, 10194,10196,5447, 10195,
382, 5055, 7327, 316, 1347, 990, 10200,489, 10201,5447, 466, 5365, 5708, 7372, 466, 4045, 7694, 10205,7055, 10210,10215,10218,10223,317, 10224,10239,10277,
6089, 2537, 362, 1588, 10206,490, 10209,2271, 10207,10208,317, 489, 545, 343, 10211,10212,10213,317, 7328, 317, 317, 345, 10214,1160, 10216,10217,10219,
- 10222,317, 10220,10221,10225,10226,10235,10237,10227,10230,10233,10228,10229,356, 8553, 3854, 10231,10232,10234,490, 10236,10238,10240,5687, 10247,10249,1060,
- 317, 1266, 10241,490, 10243,5561, 317, 317, 317, 10244,10242,10245,10246,1358, 10248,427, 317, 10250,10255,10256,10258,10261,10262,10270,1160, 10276,362,
+ 10222,317, 10220,10221,10225,10226,10235,10237,10227,10230,10233,10228,10229,356, 8553, 3854, 10231,10232,10234,490, 10236,10238,10240,5687, 10247,10249,1060,
+ 317, 1266, 10241,490, 10243,5561, 317, 317, 317, 10244,10242,10245,10246,1358, 10248,427, 317, 10250,10255,10256,10258,10261,10262,10270,1160, 10276,362,
10251,370, 10252,10253,10254,10257,5866, 10259,10260,2510, 521, 317, 317, 363, 6525, 10263,10268,10264,10265,10266,317, 10267,10269,10271,10272,10273,10274,
- 10275,380, 412, 317, 6471, 10278,343, 10279,490, 10281,6409, 317, 5226, 350, 10283,2348, 10285,10286,10296,10300,10287,10292,10288,10289,10290,10291,317,
+ 10275,380, 412, 317, 6471, 10278,343, 10279,490, 10281,6409, 317, 5226, 350, 10283,2348, 10285,10286,10296,10300,10287,10292,10288,10289,10290,10291,317,
10293,10294,5640, 10295,10297,10298,10299,10301,10305,10307,10322,10330,10332,10335,10363,10367,10369,10383,1597, 10390,7085, 10396,10415,10417,380, 345, 10468,
- 10470,10472,10302,10303,10304,10306,8926, 10308,10311,10313,10318,10320,3751, 10321,5241, 317, 10309,10310,10312,2533, 10314,362, 10315,10316,10317,10319,317,
+ 10470,10472,10302,10303,10304,10306,8926, 10308,10311,10313,10318,10320,3751, 10321,5241, 317, 10309,10310,10312,2533, 10314,362, 10315,10316,10317,10319,317,
10323,10329,317, 10324,10327,10328,2022, 332, 10325,10326,2551, 404, 370, 10331,393, 317, 10333,10334,637, 317, 317, 2537, 332, 5428, 10336,10346,10355,
9938, 10362,317, 10337,7035, 343, 10340,317, 10345,10338,10339,490, 362, 10341,317, 10342,10343,10344,345, 479, 10347,3966, 10348,10352,317, 10349,10351,
5419, 370, 317, 317, 10350,3504, 2022, 10353,10354,404, 10356,10360,10357,1347, 10358,10359,9857, 5343, 317, 10361,5105, 343, 317, 317, 10364,317, 10365,
- 362, 10366,5570, 345, 490, 390, 390, 6568, 10368,5994, 10370,10378,317, 10381,345, 10371,10377,10372,1160, 10373,10374,10375,490, 10376,317, 317, 317,
+ 362, 10366,5570, 345, 490, 390, 390, 6568, 10368,5994, 10370,10378,317, 10381,345, 10371,10377,10372,1160, 10373,10374,10375,490, 10376,317, 317, 317,
10379,317, 10380,10382,4984, 380, 10384,317, 343, 10385,10386,10387,10388,10389,1347, 5732, 1459, 317, 490, 4564, 10391,10394,5746, 317, 317, 10392,10393,
317, 380, 10395,10397,10398,10399,10409,363, 390, 7045, 5241, 345, 590, 5105, 10400,8456, 427, 10401,10402,10403,10404,10405,10406,10407,10408,10410,10412,
- 10413,10411,4591, 5201, 10414,2272, 317, 10416,365, 332, 2078, 10418,10427,10443,10444,10448,10450,10455,10457,10466,10467,317, 8301, 10419,4249, 10423,6387,
+ 10413,10411,4591, 5201, 10414,2272, 317, 10416,365, 332, 2078, 10418,10427,10443,10444,10448,10450,10455,10457,10466,10467,317, 8301, 10419,4249, 10423,6387,
10425,1325, 1230, 10420,10421,5447, 466, 5399, 317, 10422,466, 317, 10424,410, 350, 356, 466, 5399, 317, 1526, 10426,10428,10431,10432,10441,5534, 10429,
4949, 10430,7063, 10433,10436,10438,10434,9109, 466, 317, 10435,10437,9852, 343, 10439,10440,317, 1325, 404, 10442,404, 7590, 448, 10445,10446,317, 10447,
2219, 5492, 8021, 10449,10451,10452,317, 4980, 10453,10454,371, 10456,10458,10462,10459,10460,356, 10461,351, 317, 382, 5055, 6440, 10463,990, 5226, 10464,
10465,410, 5447, 5847, 428, 2063, 349, 428, 428, 10469,356, 371, 6568, 520, 10471,8948, 4738, 2381, 10473,10483,10500,10535,10539,10544,10577,2381, 10579,
10582,10587,10593,10597,10599,10620,10658,10756,10759,10762,10767,10769,10474,10476,343, 10477,10479,363, 317, 10475,343, 370, 8431, 10478,317, 10480,10481,
- 317, 10482,317, 6195, 345, 10484,10490,6954, 1020, 10495,10485,10488,10486,10487,10489,6855, 10491,10492,370, 10493,10494,351, 10496,10497,10498,10499,466,
+ 317, 10482,317, 6195, 345, 10484,10490,6954, 1020, 10495,10485,10488,10486,10487,10489,6855, 10491,10492,370, 10493,10494,351, 10496,10497,10498,10499,466,
317, 317, 2510, 10501,10504,10507,2022, 10532,10534,10502,363, 317, 317, 10503,4591, 370, 10505,317, 9244, 10506,620, 621, 10508,10509,10510,10513,10524,
- 1011, 10526,1999, 6021, 10511,10512,1347, 490, 10514,317, 7448, 10253,10517,10518,10520,10521,10515,10516,10519,10522,10523,317, 10525,356, 10527,10529,317,
- 317, 382, 10528,10530,10531,317, 317, 317, 5742, 317, 10533,5793, 317, 404, 466, 317, 10536,5626, 10537,10538,10540,2275, 5517, 10541,10542,10543,317,
- 10545,2058, 10548,343, 10552,10554,10558,10563,2142, 10546,10547,10471,317, 10549,2948, 10551,10550,362, 370, 10553,317, 7657, 10555,10556,10557,5225, 356,
- 466, 317, 10559,10562,10560,10561,317, 10564,10565,10566,10571,10572,681, 317, 10573,317, 10574,5926, 404, 345, 10576,10567,10568,10569,10570,1109, 343,
- 10575,317, 317, 5419, 317, 10578,10580,10581,317, 7949, 317, 10583,5626, 10584,10585,317, 317, 10586,345, 351, 9914, 317, 10588,10589,10591,343, 4984,
- 5483, 10590,10592,2298, 317, 10594,317, 7976, 412, 351, 10595,2156, 10596,317, 317, 10598,2022, 10600,10603,596, 10607,10614,10618,357, 10601,317, 317,
+ 1011, 10526,1999, 6021, 10511,10512,1347, 490, 10514,317, 7448, 10253,10517,10518,10520,10521,10515,10516,10519,10522,10523,317, 10525,356, 10527,10529,317,
+ 317, 382, 10528,10530,10531,317, 317, 317, 5742, 317, 10533,5793, 317, 404, 466, 317, 10536,5626, 10537,10538,10540,2275, 5517, 10541,10542,10543,317,
+ 10545,2058, 10548,343, 10552,10554,10558,10563,2142, 10546,10547,10471,317, 10549,2948, 10551,10550,362, 370, 10553,317, 7657, 10555,10556,10557,5225, 356,
+ 466, 317, 10559,10562,10560,10561,317, 10564,10565,10566,10571,10572,681, 317, 10573,317, 10574,5926, 404, 345, 10576,10567,10568,10569,10570,1109, 343,
+ 10575,317, 317, 5419, 317, 10578,10580,10581,317, 7949, 317, 10583,5626, 10584,10585,317, 317, 10586,345, 351, 9914, 317, 10588,10589,10591,343, 4984,
+ 5483, 10590,10592,2298, 317, 10594,317, 7976, 412, 351, 10595,2156, 10596,317, 317, 10598,2022, 10600,10603,596, 10607,10614,10618,357, 10601,317, 317,
10602,354, 10093,10604,10605,317, 345, 10606,4984, 4984, 317, 345, 10608,8011, 10610,380, 10611,10609,317, 10408,350, 332, 10612,10613,10615,8451, 10616,
10617,317, 10619,10621,10624,10627,317, 10629,5032, 10630,10633,10634,10637,10638,10622,479, 317, 10623,10625,10626,10628,10631,370, 317, 10632,10635,10636,
- 345, 5727, 363, 356, 10639,501, 10642,363, 10645,380, 317, 10640,10641,357, 5200, 10626,317, 380, 10643,637, 1300, 317, 10644,673, 317, 317, 316,
+ 345, 5727, 363, 356, 10639,501, 10642,363, 10645,380, 317, 10640,10641,357, 5200, 10626,317, 380, 10643,637, 1300, 317, 10644,673, 317, 317, 316,
10646,8214, 10656,10647,5241, 10648,317, 10649,10650,6956, 317, 10651,10652,10653,10654,10655,6324, 10657,10659,10660,10663,10681,362, 10682,10752,10753,10661,
- 317, 7654, 10662,10664,10665,10671,351, 3854, 10666,317, 10667,10668,10669,10670,397, 418, 6435, 10672,356, 10673,7821, 380, 382, 10674,10675,10680,5225,
+ 317, 7654, 10662,10664,10665,10671,351, 3854, 10666,317, 10667,10668,10669,10670,397, 418, 6435, 10672,356, 10673,7821, 380, 382, 10674,10675,10680,5225,
1325, 466, 10676,596, 317, 317, 10677,3031, 10678,10679,317, 317, 7682, 10683,10689,10697,10712,10716,10717,10721,10725,10727,10739,10743,10748,10749,10751,
10684,10685,10686,10687,10688,462, 343, 10690,10696,345, 10691,10692,10693,10694,10695,10698,10700,10704,10519,10706,10710,317, 10699,317, 10701,10702,10703,
- 10705,10707,10708,10709,10711,370, 5746, 9573, 10713,10715,10714,356, 10718,867, 10719,10720,10722,10723,10724,10726,10728,10731,317, 2509, 10729,317, 5447,
- 10730,363, 6172, 382, 363, 427, 10732,10735,3031, 10733,10734,10736,10737,10738,10740,427, 10741,317, 10742,7834, 317, 10744,10746,10747,5201, 10745,3869,
- 489, 7322, 3075, 10750,5570, 6859, 317, 2142, 10754,317, 10755,10757,380, 10758,10760,10761,349, 10763,10764,351, 10765,317, 10766,8544, 363, 10768,3999,
- 381, 10770,2067, 10772,10775,10777,5611, 10799,10802,10829,10830,10845,10846,10856,10864,10773,10774,10776,10778,10780,10790,10795,10797,490, 10779,10781,7035,
+ 10705,10707,10708,10709,10711,370, 5746, 9573, 10713,10715,10714,356, 10718,867, 10719,10720,10722,10723,10724,10726,10728,10731,317, 2509, 10729,317, 5447,
+ 10730,363, 6172, 382, 363, 427, 10732,10735,3031, 10733,10734,10736,10737,10738,10740,427, 10741,317, 10742,7834, 317, 10744,10746,10747,5201, 10745,3869,
+ 489, 7322, 3075, 10750,5570, 6859, 317, 2142, 10754,317, 10755,10757,380, 10758,10760,10761,349, 10763,10764,351, 10765,317, 10766,8544, 363, 10768,3999,
+ 381, 10770,2067, 10772,10775,10777,5611, 10799,10802,10829,10830,10845,10846,10856,10864,10773,10774,10776,10778,10780,10790,10795,10797,490, 10779,10781,7035,
10784,10782,10783,10785,4810, 317, 10786,10787,10788,10789,10791,550, 10792,10793,490, 6240, 317, 10794,1347, 317, 10796,514, 317, 317, 10798,1881, 10800,
- 10801,317, 5238, 7055, 317, 404, 867, 10803,10809,10810,10816,10825,10826,317, 10828,317, 351, 345, 10804,10806,10805,10807,5570, 317, 10808,317, 2004,
- 317, 317, 7657, 10811,10813,5325, 2163, 10814,2156, 10812,466, 10815,2110, 10817,10818,10819,5159, 10821,332, 10822,10823,5363, 10824,2108, 384, 380, 8484,
- 10820,380, 10820,5328, 317, 5221, 10827,10831,10834,5324, 317, 10835,10837,10838,10839,10841,2116, 4980, 10843,1109, 317, 5226, 10832,370, 10833,7606, 365,
+ 10801,317, 5238, 7055, 317, 404, 867, 10803,10809,10810,10816,10825,10826,317, 10828,317, 351, 345, 10804,10806,10805,10807,5570, 317, 10808,317, 2004,
+ 317, 317, 7657, 10811,10813,5325, 2163, 10814,2156, 10812,466, 10815,2110, 10817,10818,10819,5159, 10821,332, 10822,10823,5363, 10824,2108, 384, 380, 8484,
+ 10820,380, 10820,5328, 317, 5221, 10827,10831,10834,5324, 317, 10835,10837,10838,10839,10841,2116, 4980, 10843,1109, 317, 5226, 10832,370, 10833,7606, 365,
9200, 10836,2146, 404, 4965, 5392, 490, 10840,350, 317, 10842,10844,490, 345, 5590, 317, 10847,10849,10850,10447,10853,1526, 10848,4268, 6294, 317, 10851,
- 10852,356, 466, 317, 373, 5190, 317, 6195, 10854,10855,619, 10857,2117, 10858,10863,554, 317, 4055, 10859,10860,10861,10862,426, 490, 351, 10865,2631,
- 10866,10867,10869,10871,2275, 10881,10886,10891,390, 5590, 10892,10893,10898,10899,10900,10909,10910,10912,10913,2058, 10870,345, 10872,10873,10874,5223, 365,
+ 10852,356, 466, 317, 373, 5190, 317, 6195, 10854,10855,619, 10857,2117, 10858,10863,554, 317, 4055, 10859,10860,10861,10862,426, 490, 351, 10865,2631,
+ 10866,10867,10869,10871,2275, 10881,10886,10891,390, 5590, 10892,10893,10898,10899,10900,10909,10910,10912,10913,2058, 10870,345, 10872,10873,10874,5223, 365,
1992, 10879,390, 565, 1347, 10875,10876,317, 356, 10877,317, 10878,10880,6497, 10882,10883,317, 10884,10885,317, 566, 10887,10888,10889,10890,10894,10895,
10896,10897,10877,514, 10901,10907,10908,382, 10902,10903,10904,10905,10906,530, 317, 10911,2060, 380, 10914,317, 5926, 10916,2024, 10919,10923,362, 10924,
- 5331, 10927,427, 317, 10917,362, 317, 343, 10918,6046, 356, 356, 5701, 10920,382, 10921,317, 8205, 317, 10922,9170, 2272, 5956, 10925,9853, 10926,428,
+ 5331, 10927,427, 317, 10917,362, 317, 343, 10918,6046, 356, 356, 5701, 10920,382, 10921,317, 8205, 317, 10922,9170, 2272, 5956, 10925,9853, 10926,428,
10928,362, 363, 10930,565, 10940,10944,10947,3648, 619, 10949,10952,10958,10960,10961,10963,10964,10965,10966,10976,10931,10932,490, 5611, 10934,317, 10935,
10937,10938,317, 339, 2415, 10933,317, 490, 363, 10936,317, 490, 10939,10941,5851, 10942,10943,10945,363, 2116, 317, 10946,343, 10948,1459, 10950,10951,
- 317, 10953,466, 350, 10955,10956,10957,317, 10954,7055, 2024, 5809, 551, 363, 10959,439, 345, 4952, 10962,490, 317, 367, 574, 367, 1347, 5154, 404,
+ 317, 10953,466, 350, 10955,10956,10957,317, 10954,7055, 2024, 5809, 551, 363, 10959,439, 345, 4952, 10962,490, 317, 367, 574, 367, 1347, 5154, 404,
965, 317, 501, 317, 362, 317, 365, 10967,10971,332, 10974,10968,10969,10970,10972,10973,10975,10977,10981,317, 10978,10979,10980,10982,10984,10987,11000,
- 11001,11007,11018,11020,11021,11027,11029,365, 11032,11036,11039,11041,11047,11053,11056,11060,10985,10986,10988,565, 10989,10992,10995,10996,10998,10999,2348,
- 317, 10990,10991,381, 10993,10994,10997,5079, 1044, 5138, 362, 633, 380, 428, 428, 1481, 11002,2035, 11003,11004,11005,11006,5608, 427, 317, 11008,5608,
+ 11001,11007,11018,11020,11021,11027,11029,365, 11032,11036,11039,11041,11047,11053,11056,11060,10985,10986,10988,565, 10989,10992,10995,10996,10998,10999,2348,
+ 317, 10990,10991,381, 10993,10994,10997,5079, 1044, 5138, 362, 633, 380, 428, 428, 1481, 11002,2035, 11003,11004,11005,11006,5608, 427, 317, 11008,5608,
11009,1347, 371, 11014,11010,11011,361, 11012,11013,11015,1266, 11016,11017,11019,351, 2360, 343, 11022,11023,11026,317, 11024,11025,11028,363, 11030,11031,
11033,11035,317, 11034,401, 11037,2081, 11038,317, 11040,433, 11042,11043,11044,949, 11045,11046,11048,362, 427, 11050,11049,317, 11051,11052,317, 11054,
11055,490, 343, 490, 945, 351, 2035, 365, 11057,11058,11059,11061,351, 343, 6834, 11063,11066,317, 332, 11062,317, 5687, 2322, 317, 11064,11065,11067,
11068,11072,11079,11080,11090,4375, 11098,11100,24, 12380,12396,12404,29, 13444,13446,13450,34, 14242,14264,36, 14723,14747,38, 15692,40, 16536,16541,
46, 17192,9702, 17205,17207,17271,2171, 2351, 2553, 11069,11070,11071,11073,11074,356, 11075,11076,11077,11078,4873, 4797, 1358, 427, 1597, 7178, 11081,11082,
2279, 11084,11087,7689, 350, 350, 11083,11085,11086,317, 11088,11089,11091,11095,11096,11092,11093,11094,11097,11099,11101,11102,11103,11104,11105,11109,11111,
- 11118,11170,11281,11348,11355,11358,11399,11420,11455,11465,25, 11670,26, 11811,11814,11823,27, 28, 12185,12267,12324,12328,12333,12336,12367,11106,317,
+ 11118,11170,11281,11348,11355,11358,11399,11420,11455,11465,25, 11670,26, 11811,11814,11823,27, 28, 12185,12267,12324,12328,12333,12336,12367,11106,317,
11107,11108,11110,356, 317, 371, 11112,332, 11115,317, 11116,317, 11117,4965, 11113,11114,11119,11125,11129,11130,11138,10487,11148,883, 11149,11150,11151,
11152,11153,949, 317, 365, 317, 11120,11122,5891, 11123,489, 11121,317, 11124,11126,380, 11127,11128,317, 317, 390, 5223, 7419, 466, 490, 384, 11131,
651, 633, 3284, 11132,11133,11136,11137,1160, 574, 317, 317, 11134,11135,7285, 11139,1347, 5624, 11140,11142,2272, 11145,4925, 11147,317, 1358, 317, 11141,
11143,2067, 317, 3284, 11144,11146,1913, 317, 2163, 5055, 363, 490, 317, 1913, 356, 637, 5825, 8300, 637, 633, 371, 11154,11156,11158,11159,11160,11163,
- 466, 332, 11164,7878, 10855,11167,565, 551, 8355, 11155,11157,11161,3366, 11162,11165,11166,343, 317, 317, 317, 8214, 381, 11168,11169,11171,11174,2549,
+ 466, 332, 11164,7878, 10855,11167,565, 551, 8355, 11155,11157,11161,3366, 11162,11165,11166,343, 317, 317, 317, 8214, 381, 11168,11169,11171,11174,2549,
11184,11201,11206,362, 11264,317, 11267,11278,317, 11280,317, 380, 11172,317, 332, 11173,5687, 490, 11175,11182,11183,345, 11176,317, 11181,11177,11178,
- 11179,11180,317, 6050, 11185,5561, 11187,11191,11192,11193,11195,350, 11197,11199,11200,345, 1325, 11186,317, 490, 11188,5223, 350, 381, 11189,11190,2610,
+ 11179,11180,317, 6050, 11185,5561, 11187,11191,11192,11193,11195,350, 11197,11199,11200,345, 1325, 11186,317, 490, 11188,5223, 350, 381, 11189,11190,2610,
317, 1459, 5836, 317, 11194,5663, 11196,11198,2108, 3007, 317, 9878, 578, 390, 11202,317, 6207, 332, 317, 11203,11204,11205,317, 11207,11213,11216,11220,
11223,11225,11230,3999, 11233,11236,11237,11238,11242,11243,11254,11258,11259,11263,11208,11212,381, 11209,11210,11211,551, 343, 11214,11215,6525, 381, 11217,
- 2601, 2146, 11218,11219,6736, 317, 11221,1347, 317, 317, 317, 11222,11224,1597, 578, 5717, 2108, 11226,11227,11228,11229,11231,11232,4591, 317, 343, 393,
+ 2601, 2146, 11218,11219,6736, 317, 11221,1347, 317, 317, 317, 11222,11224,1597, 578, 5717, 2108, 11226,11227,11228,11229,11231,11232,4591, 317, 343, 393,
389, 11234,11235,439, 471, 343, 317, 396, 345, 11239,9298, 11240,11241,2510, 466, 317, 11244,2631, 2261, 2260, 11159,11246,11245,11247,11250,11251,11248,
343, 11249,351, 466, 11252,11253,381, 2108, 11255,11256,11257,345, 1347, 317, 11260,9822, 11261,2509, 11262,11265,11266,363, 1358, 11268,2272, 5406, 11269,
11270,5105, 11271,427, 11272,11276,11273,11274,11275,317, 433, 381, 11277,11279,317, 1020, 317, 11282,11283,11299,2631, 11302,11305,11311,11313,11317,11319,
11325,11326,11328,11333,11338,11340,11343,11345,317, 11346,354, 651, 11284,11285,11289,11290,11292,11295,11296,317, 11298,365, 466, 426, 11286,11287,11288,
- 11291,11293,2035, 11294,11297,365, 1160, 11300,317, 11301,6228, 633, 6996, 317, 317, 11303,2022, 11304,371, 2022, 1347, 381, 11144,11306,11309,317, 317,
+ 11291,11293,2035, 11294,11297,365, 1160, 11300,317, 11301,6228, 633, 6996, 317, 317, 11303,2022, 11304,371, 2022, 1347, 381, 11144,11306,11309,317, 317,
2108, 11307,11308,11310,11312,2219, 390, 11314,11316,2022, 370, 317, 11315,317, 5223, 317, 356, 466, 317, 1160, 382, 4564, 11318,317, 317, 6937, 11320,
- 5120, 11321,11322,11323,11324,5181, 10329,11327,370, 384, 317, 317, 3125, 363, 11329,11331,11330,332, 332, 11332,11334,11337,11335,11336,11339,6240, 6278,
- 351, 11341,11342,1526, 2533, 11344,317, 2381, 490, 11347,371, 11349,351, 11350,380, 11351,11352,11354,1108, 1109, 317, 9672, 2566, 1109, 4738, 11353,362,
+ 5120, 11321,11322,11323,11324,5181, 10329,11327,370, 384, 317, 317, 3125, 363, 11329,11331,11330,332, 332, 11332,11334,11337,11335,11336,11339,6240, 6278,
+ 351, 11341,11342,1526, 2533, 11344,317, 2381, 490, 11347,371, 11349,351, 11350,380, 11351,11352,11354,1108, 1109, 317, 9672, 2566, 1109, 4738, 11353,362,
427, 6204, 317, 317, 3648, 2298, 11356,490, 11357,317, 363, 5717, 551, 2322, 11359,370, 11363,11368,11369,11378,11382,11383,11384,11386,11389,11390,11391,
11395,11397,11398,11360,317, 11361,389, 11362,11364,11367,317, 11365,11366,2369, 6420, 5223, 990, 11370,11374,11377,317, 317, 317, 11371,5324, 501, 10820,
- 11372,11373,1347, 11375,11376,317, 11379,11381,362, 11380,5120, 11365,2163, 2110, 365, 5836, 490, 370, 7035, 11385,11387,6620, 317, 6402, 380, 11388,332,
+ 11372,11373,1347, 11375,11376,317, 11379,11381,362, 11380,5120, 11365,2163, 2110, 365, 5836, 490, 370, 7035, 11385,11387,6620, 317, 6402, 380, 11388,332,
382, 317, 332, 5890, 8649, 476, 11392,363, 317, 11393,11394,2211, 370, 11396,605, 381, 317, 2610, 332, 2326, 11400,343, 11409,11410,11411,11412,11414,
- 5423, 11415,317, 11419,11401,11403,11405,5120, 490, 11342,11406,1347, 11402,11404,1347, 362, 11124,381, 11407,11408,351, 9938, 317, 11413,351, 5644, 501,
+ 5423, 11415,317, 11419,11401,11403,11405,5120, 490, 11342,11406,1347, 11402,11404,1347, 362, 11124,381, 11407,11408,351, 9938, 317, 11413,351, 5644, 501,
11416,317, 343, 11417,317, 317, 10058,317, 11418,5328, 11421,11423,11424,11425,317, 590, 11427,11429,1109, 11441,11447,11448,11452,11453,1109, 11454,11422,
- 11426,380, 11428,11430,662, 11431,11433,11435,11440,317, 317, 332, 5238, 356, 317, 317, 317, 317, 11432,637, 8248, 317, 633, 317, 317, 11434,1992,
+ 11426,380, 11428,11430,662, 11431,11433,11435,11440,317, 317, 332, 5238, 356, 317, 317, 317, 317, 11432,637, 8248, 317, 633, 317, 317, 11434,1992,
2391, 11436,11438,11439,317, 11437,5943, 317, 1345, 317, 4268, 551, 11442,11443,11444,317, 350, 427, 11445,11446,427, 317, 1347, 11449,1347, 332, 11451,
11450,390, 501, 1345, 317, 2022, 363, 501, 5464, 317, 466, 350, 317, 317, 11456,348, 371, 11457,332, 11458,11461,2351, 11462,490, 2348, 6763, 11459,
- 11460,11463,11464,11466,11470,11474,11478,11479,11480,5835, 5120, 11482,11483,11467,11468,317, 2084, 2510, 351, 11469,317, 11471,5213, 317, 11472,6707, 3987,
- 317, 370, 574, 317, 596, 2066, 362, 11473,5037, 317, 11475,11476,11477,6334, 317, 382, 345, 1881, 2381, 7866, 317, 427, 11481,370, 439, 5120, 7785,
+ 11460,11463,11464,11466,11470,11474,11478,11479,11480,5835, 5120, 11482,11483,11467,11468,317, 2084, 2510, 351, 11469,317, 11471,5213, 317, 11472,6707, 3987,
+ 317, 370, 574, 317, 596, 2066, 362, 11473,5037, 317, 11475,11476,11477,6334, 317, 382, 345, 1881, 2381, 7866, 317, 427, 11481,370, 439, 5120, 7785,
317, 590, 362, 490, 11484,1020, 11485,11486,11512,11515,11523,11549,11561,11563,11565,11576,11579,11624,2163, 11628,965, 11637,11638,11641,11655,11662,11664,
- 6326, 11666,427, 11487,11489,11490,11491,11493,317, 365, 11494,11500,317, 11502,317, 8926, 11506,11511,317, 1347, 11488,7192, 6231, 6975, 317, 11492,348,
- 350, 11495,6231, 11496,11497,11498,11499,11501,11503,11505,3988, 3529, 11504,2271, 9522, 317, 332, 317, 5439, 1588, 365, 11507,11508,11509,11510,345, 345,
+ 6326, 11666,427, 11487,11489,11490,11491,11493,317, 365, 11494,11500,317, 11502,317, 8926, 11506,11511,317, 1347, 11488,7192, 6231, 6975, 317, 11492,348,
+ 350, 11495,6231, 11496,11497,11498,11499,11501,11503,11505,3988, 3529, 11504,2271, 9522, 317, 332, 317, 5439, 1588, 365, 11507,11508,11509,11510,345, 345,
4984, 11513,9699, 317, 11514,11516,11517,11519,5828, 11520,11521,867, 11518,10943,3987, 11522,5201, 489, 317, 11524,11531,11089,11540,362, 2571, 11543,11545,
11547,11548,7565, 11525,11527,396, 11526,867, 11528,11529,332, 11530,11532,6402, 11534,11536,317, 11533,9699, 11535,11537,11538,11539,2845, 343, 317, 11541,
11542,2222, 317, 317, 371, 5517, 11544,317, 317, 6021, 11546,317, 371, 990, 343, 7386, 317, 317, 317, 5890, 5684, 363, 2330, 363, 2609, 11550,11554,
- 11556,574, 490, 317, 11559,11551,11552,8431, 11553,11555,11557,11558,317, 7273, 11560,2590, 317, 11562,11564,479, 363, 11566,11567,11568,11572,11573,348,
+ 11556,574, 490, 317, 11559,11551,11552,8431, 11553,11555,11557,11558,317, 7273, 11560,2590, 317, 11562,11564,479, 363, 11566,11567,11568,11572,11573,348,
345, 317, 11569,11570,11571,393, 351, 317, 317, 11574,11575,2178, 7273, 5055, 426, 11577,317, 363, 317, 345, 317, 11578,317, 6228, 11580,3236, 11586,
- 11598,11599,11608,11609,11614,11618,11620,2108, 966, 11621,1100, 2815, 11581,11582,317, 11583,11585,5223, 332, 9623, 2222, 370, 317, 343, 11584,2272, 2272,
+ 11598,11599,11608,11609,11614,11618,11620,2108, 966, 11621,1100, 2815, 11581,11582,317, 11583,11585,5223, 332, 9623, 2222, 370, 317, 343, 11584,2272, 2272,
317, 2086, 317, 11587,11589,11592,11597,317, 317, 1109, 317, 11588,2317, 2271, 317, 651, 11590,317, 11591,11593,345, 11594,11595,11596,317, 5611, 11600,
- 317, 11601,380, 6163, 651, 11602,11604,2222, 11607,11603,11605,11606,5663, 351, 390, 317, 317, 11610,11613,317, 1358, 11611,317, 356, 11612,317, 9865,
- 11615,11617,11616,8178, 11619,6228, 317, 384, 2679, 385, 317, 404, 317, 6195, 11622,2035, 11623,363, 2022, 343, 11625,9450, 351, 11627,317, 11626,363,
+ 317, 11601,380, 6163, 651, 11602,11604,2222, 11607,11603,11605,11606,5663, 351, 390, 317, 317, 11610,11613,317, 1358, 11611,317, 356, 11612,317, 9865,
+ 11615,11617,11616,8178, 11619,6228, 317, 384, 2679, 385, 317, 404, 317, 6195, 11622,2035, 11623,363, 2022, 343, 11625,9450, 351, 11627,317, 11626,363,
11629,11631,317, 11632,11633,1160, 317, 8766, 317, 11198,317, 11630,317, 11634,11636,11635,1791, 382, 11639,351, 11640,2022, 5332, 350, 11642,9450, 11644,
11646,11649,11650,345, 11653,317, 565, 11643,11645,2503, 2012, 2549, 490, 11647,3967, 11648,7657, 317, 1060, 11651,11652,11654,2022, 11656,11658,317, 11657,
3966, 6283, 11659,1033, 11660,11661,11663,2369, 11665,11667,351, 6993, 317, 332, 11668,11669,11671,11672,317, 11686,11688,317, 11689,362, 6996, 332, 11673,
- 11677,11679,11680,11681,2391, 11684,11674,11675,1160, 382, 490, 317, 317, 317, 11676,371, 971, 11678,11682,317, 317, 11683,11685,390, 6598, 11687,317,
+ 11677,11679,11680,11681,2391, 11684,11674,11675,1160, 382, 490, 317, 317, 317, 11676,371, 971, 11678,11682,317, 317, 11683,11685,390, 6598, 11687,317,
351, 363, 11690,404, 11691,11692,11699,11700,11703,11739,11742,11744,11763,11765,11768,11770,11784,11793,11795,11798,11800,11806,11807,11808,11809,11810,11693,
- 390, 419, 362, 317, 11694,11695,348, 11697,317, 317, 1430, 11696,4984, 490, 490, 6996, 633, 362, 490, 8926, 1160, 7850, 11698,317, 317, 5517, 345,
+ 390, 419, 362, 317, 11694,11695,348, 11697,317, 317, 1430, 11696,4984, 490, 490, 6996, 633, 362, 490, 8926, 1160, 7850, 11698,317, 317, 5517, 345,
11701,11702,1060, 1999, 381, 11704,11709,11710,6532, 362, 11715,11719,11721,11725,11727,490, 11728,317, 11729,11731,11733,9832, 1325, 11705,11706,7850, 11707,
- 490, 11708,317, 11711,317, 350, 11714,11712,11713,11716,6294, 11717,11718,637, 5942, 317, 370, 317, 11720,11722,11723,317, 349, 2156, 11724,11726,476,
+ 490, 11708,317, 11711,317, 350, 11714,11712,11713,11716,6294, 11717,11718,637, 5942, 317, 370, 317, 11720,11722,11723,317, 349, 2156, 11724,11726,476,
370, 3987, 4952, 7386, 1020, 382, 11730,2150, 11732,317, 11734,11735,11736,11737,11738,1453, 348, 317, 317, 11740,317, 317, 317, 317, 11741,5153, 11743,
578, 380, 11745,11750,2584, 11751,5159, 3999, 11752,11754,343, 351, 11759,11762,11746,11647,390, 11747,11748,11749,2086, 345, 317, 8488, 317, 11753,11755,
6546, 11756,11757,11758,11760,11761,11764,7565, 371, 317, 11766,11767,350, 5464, 466, 3854, 317, 11769,380, 11771,10622,11772,11089,7871, 11773,11774,11775,
11781,2110, 317, 317, 465, 8488, 317, 317, 343, 317, 5836, 11776,11778,11777,11779,11780,5201, 356, 3869, 7031, 363, 11782,317, 11783,11785,11787,11789,
11790,317, 1109, 11786,317, 350, 11788,381, 356, 10149,317, 382, 8189, 11791,317, 5295, 11792,343, 317, 7149, 11794,11796,11797,380, 5626, 317, 11799,
- 490, 350, 11089,11801,11804,7490, 11805,363, 370, 1992, 317, 11802,317, 317, 11803,317, 7622, 1992, 7187, 5038, 5810, 428, 5838, 4253, 11812,511, 365,
+ 490, 350, 11089,11801,11804,7490, 11805,363, 370, 1992, 317, 11802,317, 317, 11803,317, 7622, 1992, 7187, 5038, 5810, 428, 5838, 4253, 11812,511, 365,
8301, 11813,11815,11816,11817,317, 11819,317, 345, 2060, 11818,11820,345, 11821,5441, 1325, 9853, 11822,317, 568, 370, 317, 11824,4965, 11826,11825,11827,
11505,11828,11848,11876,11886,11892,11903,11907,11917,11919,11930,11934,11946,11950,11956,11975,11984,11987,12021,12033,12077,12080,12081,12082,12089,11829,11832,
- 8597, 11834,11835,489, 11836,11837,317, 11838,11839,317, 11845,11846,317, 11847,11830,348, 363, 332, 317, 11831,490, 4925, 2211, 317, 317, 11833,7866,
+ 8597, 11834,11835,489, 11836,11837,317, 11838,11839,317, 11845,11846,317, 11847,11830,348, 363, 332, 317, 11831,490, 4925, 2211, 317, 317, 11833,7866,
351, 2035, 2035, 2035, 5223, 317, 2004, 11840,384, 490, 11842,11844,490, 11841,3284, 11843,11198,381, 390, 317, 365, 317, 8096, 5611, 11849,11859,11866,
- 11871,11873,317, 11875,2609, 317, 11850,11852,8178, 357, 11854,317, 11858,490, 11851,345, 363, 2142, 5033, 11853,5241, 1160, 11855,11856,11857,317, 5616,
- 317, 357, 1030, 332, 7779, 345, 590, 11860,317, 317, 11861,317, 965, 11862,11865,317, 11863,317, 317, 11864,404, 363, 365, 317, 317, 317, 8955,
+ 11871,11873,317, 11875,2609, 317, 11850,11852,8178, 357, 11854,317, 11858,490, 11851,345, 363, 2142, 5033, 11853,5241, 1160, 11855,11856,11857,317, 5616,
+ 317, 357, 1030, 332, 7779, 345, 590, 11860,317, 317, 11861,317, 965, 11862,11865,317, 11863,317, 317, 11864,404, 363, 365, 317, 317, 317, 8955,
363, 362, 11867,5120, 11868,390, 11869,404, 317, 6278, 11870,7672, 1109, 11872,317, 351, 490, 11874,317, 384, 490, 317, 317, 332, 1160, 11877,11880,
11881,317, 11882,11885,11702,345, 7850, 11878,6409, 6294, 11879,2316, 2117, 384, 345, 1531, 370, 11883,11884,2156, 367, 11887,11888,5964, 11889,2022, 11890,
11891,3987, 390, 317, 596, 317, 363, 380, 317, 317, 490, 317, 317, 317, 380, 317, 317, 351, 2022, 5840, 1194, 317, 11893,11895,11898,2171, 11899,
1109, 5120, 11902,539, 6598, 11894,11896,317, 11897,1525, 11900,1347, 11901,356, 317, 11904,11905,11906,11894,476, 578, 382, 1444, 317, 11908,11909,11912,
- 11913,9938, 317, 11915,10528,2236, 317, 317, 317, 317, 11910,317, 363, 11911,11914,11916,427, 11918,3007, 11920,11921,11922,404, 11923,317, 11924,2533,
+ 11913,9938, 317, 11915,10528,2236, 317, 317, 317, 317, 11910,317, 363, 11911,11914,11916,427, 11918,3007, 11920,11921,11922,404, 11923,317, 11924,2533,
11927,1347, 11929,7438, 427, 317, 2330, 317, 11925,2410, 11926,317, 11928,317, 6780, 317, 490, 345, 11931,11932,11933,11935,11936,11937,11941,11942,11943,
- 362, 317, 11945,345, 2402, 317, 317, 1060, 490, 11938,317, 317, 5223, 11939,11940,2152, 11918,317, 9575, 11944,605, 317, 11947,11948,1060, 11949,1060,
+ 362, 317, 11945,345, 2402, 317, 317, 1060, 490, 11938,317, 317, 5223, 11939,11940,2152, 11918,317, 9575, 11944,605, 317, 11947,11948,1060, 11949,1060,
427, 343, 317, 317, 11902,317, 371, 1358, 11951,11953,11955,356, 11952,317, 317, 317, 317, 11954,343, 545, 11957,11959,381, 11961,9624, 11964,11966,
11198,11968,11974,427, 3987, 550, 11958,2155, 317, 5134, 317, 5561, 380, 11960,2022, 2631, 380, 1347, 8228, 11962,6598, 11963,11965,428, 392, 11918,11967,
- 317, 317, 2219, 7688, 2022, 11969,11970,11971,373, 373, 11972,11973,1033, 466, 2537, 490, 11976,11977,11980,2074, 965, 7779, 11978,11979,351, 401, 317,
+ 317, 317, 2219, 7688, 2022, 11969,11970,11971,373, 373, 11972,11973,1033, 466, 2537, 490, 11976,11977,11980,2074, 965, 7779, 11978,11979,351, 401, 317,
317, 11981,11983,1358, 317, 317, 345, 11982,990, 5201, 317, 11985,11986,11988,11995,11089,12005,12018,317, 345, 12020,348, 11989,9342, 11992,343, 11993,
- 1109, 381, 1109, 11990,6673, 317, 11991,2171, 317, 5611, 350, 11994,11996,490, 7143, 317, 12001,12002,12003,7782, 5120, 12004,11997,11998,11999,12000,356,
+ 1109, 381, 1109, 11990,6673, 317, 11991,2171, 317, 5611, 350, 11994,11996,490, 7143, 317, 12001,12002,12003,7782, 5120, 12004,11997,11998,11999,12000,356,
466, 5487, 317, 317, 2410, 350, 317, 2271, 317, 317, 7721, 12006,11921,12007,12008,12011,12012,12013,1347, 12016,381, 11661,6486, 5032, 7949, 590, 12009,
- 6578, 317, 12010,5392, 345, 4984, 351, 317, 9303, 12014,12015,351, 5054, 317, 12017,348, 345, 317, 317, 427, 357, 381, 12019,317, 9420, 8281, 317,
- 5840, 12022,12023,12026,12027,12028,5838, 2571, 12029,12030,12032,3987, 589, 5624, 2715, 8296, 12024,12025,6138, 7356, 317, 427, 2715, 427, 356, 12031,637,
+ 6578, 317, 12010,5392, 345, 4984, 351, 317, 9303, 12014,12015,351, 5054, 317, 12017,348, 345, 317, 317, 427, 357, 381, 12019,317, 9420, 8281, 317,
+ 5840, 12022,12023,12026,12027,12028,5838, 2571, 12029,12030,12032,3987, 589, 5624, 2715, 8296, 12024,12025,6138, 7356, 317, 427, 2715, 427, 356, 12031,637,
1932, 12034,5897, 12035,12036,2163, 12041,12051,971, 12052,12055,12059,12061,12063,12073,7940, 12074,11855,317, 365, 5624, 390, 317, 7850, 317, 1160, 12037,
- 12038,12040,12039,9624, 550, 356, 466, 317, 317, 12042,2402, 12045,12043,317, 317, 2593, 317, 12044,12046,317, 12047,317, 339, 12048,12049,317, 370,
+ 12038,12040,12039,9624, 550, 356, 466, 317, 317, 12042,2402, 12045,12043,317, 317, 2593, 317, 12044,12046,317, 12047,317, 339, 12048,12049,317, 370,
12050,8273, 12053,345, 12054,7850, 3284, 12056,466, 12058,7698, 12057,11962,317, 363, 5037, 5684, 12060,2117, 12062,317, 12064,12069,12070,11198,4591, 12065,
- 7142, 12066,12067,343, 5694, 12068,7385, 390, 317, 12071,12072,371, 8274, 317, 371, 514, 427, 7463, 427, 12075,490, 971, 12076,4925, 390, 12078,317,
+ 7142, 12066,12067,343, 5694, 12068,7385, 390, 317, 12071,12072,371, 8274, 317, 371, 514, 427, 7463, 427, 12075,490, 971, 12076,4925, 390, 12078,317,
317, 4925, 12079,7384, 384, 1943, 428, 384, 363, 12083,5055, 12085,12084,12086,12087,12088,2211, 1345, 2211, 12090,348, 12094,501, 12096,12109,543, 12110,
- 12121,12130,12141,12143,12145,12146,5079, 12148,12171,12182,3987, 343, 12091,12092,12093,1881, 2291, 370, 7242, 345, 7567, 317, 343, 12095,373, 12097,317,
- 2171, 12101,12104,4186, 12105,12108,317, 12098,637, 12099,356, 317, 12100,8248, 1160, 317, 317, 317, 317, 12102,12103,343, 2156, 345, 363, 3676, 1588,
- 12106,12107,12111,12112,12113,12114,12116,2271, 12120,551, 380, 12115,317, 351, 12117,12118,12119,1160, 12122,5241, 317, 317, 12123,12127,7523, 2546, 317,
- 317, 317, 7866, 404, 6387, 12124,2272, 4984, 12125,1588, 317, 371, 12126,12128,317, 11831,351, 12129,345, 12131,12139,605, 12132,12135,12133,12134,317,
+ 12121,12130,12141,12143,12145,12146,5079, 12148,12171,12182,3987, 343, 12091,12092,12093,1881, 2291, 370, 7242, 345, 7567, 317, 343, 12095,373, 12097,317,
+ 2171, 12101,12104,4186, 12105,12108,317, 12098,637, 12099,356, 317, 12100,8248, 1160, 317, 317, 317, 317, 12102,12103,343, 2156, 345, 363, 3676, 1588,
+ 12106,12107,12111,12112,12113,12114,12116,2271, 12120,551, 380, 12115,317, 351, 12117,12118,12119,1160, 12122,5241, 317, 317, 12123,12127,7523, 2546, 317,
+ 317, 317, 7866, 404, 6387, 12124,2272, 4984, 12125,1588, 317, 371, 12126,12128,317, 11831,351, 12129,345, 12131,12139,605, 12132,12135,12133,12134,317,
12136,370, 317, 1358, 12137,12138,12140,12142,12144,530, 317, 1358, 5793, 2416, 12147,8243, 2631, 12149,12150,12151,12152,12155,12156,12157,12166,12167,12169,
- 12170,345, 8852, 6089, 317, 1220, 343, 7672, 317, 5439, 317, 363, 317, 317, 317, 12153,317, 12154,6278, 389, 551, 427, 355, 317, 317, 12158,4268,
+ 12170,345, 8852, 6089, 317, 1220, 343, 7672, 317, 5439, 317, 363, 317, 317, 317, 12153,317, 12154,6278, 389, 551, 427, 355, 317, 317, 12158,4268,
365, 381, 12159,12160,317, 12161,12162,12163,12164,12165,351, 6188, 12168,1160, 9274, 9422, 5515, 1230, 332, 12172,12175,12176,12180,12181,2110, 363, 12173,
2410, 12174,332, 317, 317, 317, 12177,8264, 12179,363, 6506, 1358, 5055, 12178,1347, 317, 345, 2272, 1358, 317, 317, 476, 1060, 317, 2322, 12183,12184,
12186,8301, 12194,7618, 12200,4960, 4249, 12203,12212,9483, 12215,12217,490, 12221,12222,12227,12228,12265,1871, 317, 12266,363, 12187,317, 12190,12191,12192,
- 12193,490, 5406, 12188,12189,317, 490, 2035, 345, 10072,12195,12196,12197,12198,317, 317, 350, 12199,351, 590, 317, 362, 1347, 12201,317, 12202,5037,
- 12204,2413, 7504, 12205,343, 12207,12208,12210,7477, 11918,12206,2553, 370, 384, 12209,2156, 5742, 12211,317, 536, 317, 404, 12213,317, 362, 12214,317,
+ 12193,490, 5406, 12188,12189,317, 490, 2035, 345, 10072,12195,12196,12197,12198,317, 317, 350, 12199,351, 590, 317, 362, 1347, 12201,317, 12202,5037,
+ 12204,2413, 7504, 12205,343, 12207,12208,12210,7477, 11918,12206,2553, 370, 384, 12209,2156, 5742, 12211,317, 536, 317, 404, 12213,317, 362, 12214,317,
317, 2108, 489, 370, 12216,343, 12218,12220,12219,681, 9088, 8258, 317, 633, 317, 1353, 5590, 390, 1347, 1345, 12223,5392, 2108, 427, 12224,12225,12226,
- 10149,363, 12229,12234,12239,12240,332, 12247,4984, 4980, 12264,317, 12230,5167, 12233,365, 12231,12232,317, 4984, 2219, 373, 12235,12236,317, 5896, 9624,
- 7401, 317, 356, 12237,362, 12238,404, 1160, 370, 1109, 3987, 363, 5694, 12241,7976, 317, 12243,12244,12242,12245,317, 317, 7142, 12246,12248,466, 317,
+ 10149,363, 12229,12234,12239,12240,332, 12247,4984, 4980, 12264,317, 12230,5167, 12233,365, 12231,12232,317, 4984, 2219, 373, 12235,12236,317, 5896, 9624,
+ 7401, 317, 356, 12237,362, 12238,404, 1160, 370, 1109, 3987, 363, 5694, 12241,7976, 317, 12243,12244,12242,12245,317, 317, 7142, 12246,12248,466, 317,
12249,12250,317, 12254,12255,12259,317, 12263,4873, 12251,12252,12253,6709, 551, 8254, 12256,12257,12258,12260,12261,12262,9140, 565, 351, 365, 365, 12268,
- 12270,12273,12282,12292,12295,12296,12298,12299,12317,12320,12321,12322,6881, 490, 12269,1347, 5309, 317, 12271,427, 1700, 351, 317, 12272,12274,6920, 350,
- 12278,12279,12275,317, 12276,12277,363, 1020, 12280,317, 12281,12283,12284,12286,12287,12289,317, 12285,12288,12290,12291,5309, 476, 12293,12294,5332, 6036,
+ 12270,12273,12282,12292,12295,12296,12298,12299,12317,12320,12321,12322,6881, 490, 12269,1347, 5309, 317, 12271,427, 1700, 351, 317, 12272,12274,6920, 350,
+ 12278,12279,12275,317, 12276,12277,363, 1020, 12280,317, 12281,12283,12284,12286,12287,12289,317, 12285,12288,12290,12291,5309, 476, 12293,12294,5332, 6036,
362, 317, 476, 317, 4591, 5431, 12297,6594, 530, 5663, 12300,12301,12302,12304,12310,12312,12313,10845,7852, 2108, 5898, 11147,9609, 5223, 12303,12305,12306,
12307,2222, 12308,12309,350, 12311,351, 566, 12314,12315,12316,317, 12318,12319,317, 9450, 390, 6855, 343, 2022, 362, 3987, 390, 317, 12323,437, 12325,
- 12327,350, 558, 12326,317, 8214, 317, 12329,12330,12331,12332,1347, 2184, 2222, 5865, 427, 317, 12334,317, 2022, 12335,5809, 8587, 351, 12337,12339,5104,
- 12340,12346,5530, 12347,12350,12353,11236,12357,12358,3075, 12362,12363,12365,8852, 5573, 9119, 7514, 490, 404, 5120, 12338,317, 317, 357, 490, 7590, 1999,
- 1943, 12341,6854, 343, 316, 5087, 12342,317, 12345,317, 12343,12344,317, 7801, 6598, 8254, 12348,12349,12351,356, 12352,12354,12355,12356,317, 396, 350,
+ 12327,350, 558, 12326,317, 8214, 317, 12329,12330,12331,12332,1347, 2184, 2222, 5865, 427, 317, 12334,317, 2022, 12335,5809, 8587, 351, 12337,12339,5104,
+ 12340,12346,5530, 12347,12350,12353,11236,12357,12358,3075, 12362,12363,12365,8852, 5573, 9119, 7514, 490, 404, 5120, 12338,317, 317, 357, 490, 7590, 1999,
+ 1943, 12341,6854, 343, 316, 5087, 12342,317, 12345,317, 12343,12344,317, 7801, 6598, 8254, 12348,12349,12351,356, 12352,12354,12355,12356,317, 396, 350,
1347, 551, 1347, 554, 12359,317, 12361,317, 12360,343, 427, 10855,501, 2171, 12364,2171, 7688, 343, 2219, 12366,12368,12370,12372,350, 12374,1481, 12376,
- 12377,2510, 12369,317, 9244, 490, 12371,2171, 317, 12373,9657, 12375,1481, 2142, 8273, 12378,9878, 317, 343, 1108, 12379,12381,1220, 12385,12388,5942, 339,
- 511, 12392,12394,490, 12395,12382,12383,12384,12386,12387,1615, 651, 317, 928, 1451, 12389,317, 12390,317, 12391,317, 633, 637, 12393,3125, 317, 490,
+ 12377,2510, 12369,317, 9244, 490, 12371,2171, 317, 12373,9657, 12375,1481, 2142, 8273, 12378,9878, 317, 343, 1108, 12379,12381,1220, 12385,12388,5942, 339,
+ 511, 12392,12394,490, 12395,12382,12383,12384,12386,12387,1615, 651, 317, 928, 1451, 12389,317, 12390,317, 12391,317, 633, 637, 12393,3125, 317, 490,
2899, 380, 365, 317, 12397,12400,380, 11336,12402,8178, 317, 12398,12399,12401,6778, 12403,4396, 12405,396, 382, 3565, 427, 12406,612, 12407,316, 12408,
350, 30, 12529,12534,12573,12607,12652,12663,12678,12706,12735,12739,31, 12903,32, 13061,13065,13067,33, 13280,13331,13380,13395,13407,13415,13420,13431,
12409,12410,12420,12424,12426,551, 12427,12428,12430,12435,12444,12457,12460,12472,12520,12528,351, 385, 12411,12418,317, 317, 633, 12412,12413,12414,12415,
12416,11089,350, 362, 12417,427, 6089, 317, 370, 427, 317, 5105, 317, 317, 1160, 317, 12419,12421,12422,3987, 317, 12423,317, 1347, 466, 363, 12425,
10422,2022, 317, 6546, 1358, 12429,317, 363, 12431,12434,363, 317, 317, 317, 12432,12433,12436,12440,12441,11089,2156, 12442,12443,5840, 382, 12437,12438,
- 12439,1060, 1020, 4576, 1160, 637, 12445,12446,633, 12447,410, 12448,12449,12451,7419, 9624, 10877,9198, 362, 317, 12455,1060, 317, 637, 317, 1267, 317,
- 12450,317, 12154,367, 428, 10283,2171, 12452,12453,1160, 317, 363, 12454,317, 317, 1011, 740, 317, 12456,1020, 317, 5661, 2171, 363, 12458,12459,1087,
+ 12439,1060, 1020, 4576, 1160, 637, 12445,12446,633, 12447,410, 12448,12449,12451,7419, 9624, 10877,9198, 362, 317, 12455,1060, 317, 637, 317, 1267, 317,
+ 12450,317, 12154,367, 428, 10283,2171, 12452,12453,1160, 317, 363, 12454,317, 317, 1011, 740, 317, 12456,1020, 317, 5661, 2171, 363, 12458,12459,1087,
6419, 370, 362, 363, 317, 317, 317, 3599, 12461,1358, 12462,12465,343, 883, 12468,3075, 12469,4980, 12471,345, 317, 317, 317, 12463,9649, 317, 12464,
- 5488, 356, 12466,5430, 12467,317, 396, 317, 12470,12473,12474,12479,12484,550, 12488,12492,12495,12499,343, 12504,12508,12511,12515,12519,317, 501, 5205,
+ 5488, 356, 12466,5430, 12467,317, 396, 317, 12470,12473,12474,12479,12484,550, 12488,12492,12495,12499,343, 12504,12508,12511,12515,12519,317, 501, 5205,
990, 317, 12475,12478,2705, 12476,12477,2272, 1060, 1020, 2272, 12480,12481,12482,12483,1998, 9244, 1358, 363, 9320, 343, 317, 2036, 12485,12487,12486,12489,
12490,12491,2163, 2163, 12493,12494,12496,317, 12497,12498,12500,350, 12503,317, 12501,12502,345, 12505,1999, 12507,12506,12509,12510,551, 550, 12512,12154,
12513,12514,317, 12516,1160, 345, 12517,12464,12518,317, 2163, 5022, 12521,12526,317, 12522,6996, 633, 12523,12524,1548, 404, 12525,317, 12527,2222, 12530,
12532,12533,590, 317, 317, 12531,332, 317, 10317,1160, 381, 12535,12536,12538,12542,12548,2134, 12572,6894, 404, 2406, 565, 565, 343, 343, 7095, 12537,
596, 343, 12539,12540,317, 12541,551, 12543,350, 362, 9012, 12544,12545,317, 2222, 317, 380, 4982, 9357, 12546,12547,633, 317, 12549,12556,12557,12560,
- 12562,12564,12565,12566,12568,404, 427, 12571,6420, 12550,317, 12552,12555,317, 5223, 317, 12551,7592, 2152, 12553,7618, 554, 12554,390, 350, 317, 2627,
- 343, 362, 317, 317, 12558,12559,317, 317, 12561,345, 12563,363, 439, 5663, 2405, 317, 12567,317, 12569,355, 12570,439, 427, 545, 5810, 12422,380,
+ 12562,12564,12565,12566,12568,404, 427, 12571,6420, 12550,317, 12552,12555,317, 5223, 317, 12551,7592, 2152, 12553,7618, 554, 12554,390, 350, 317, 2627,
+ 343, 362, 317, 317, 12558,12559,317, 317, 12561,345, 12563,363, 439, 5663, 2405, 317, 12567,317, 12569,355, 12570,439, 427, 545, 5810, 12422,380,
12574,12575,12576,12577,12582,12584,6089, 12587,350, 12591,12592,12594,12597,12599,12600,12603,4789, 12606,1020, 1325, 637, 5295, 317, 551, 356, 12578,12581,
317, 317, 12579,12580,9624, 404, 1347, 343, 1347, 590, 317, 350, 380, 12583,317, 8906, 7698, 9624, 12585,12586,2369, 12588,12589,12590,427, 404, 12593,
- 12595,6036, 7285, 12596,10316,371, 371, 8274, 3284, 317, 345, 1109, 2381, 2058, 1358, 12598,490, 5055, 412, 317, 12601,12602,390, 3243, 371, 5742, 5624,
- 379, 351, 12604,2261, 12202,12605,551, 428, 5810, 12608,12610,12614,12615,12618,12619,1230, 12620,12623,12628,12629,12631,12632,12643,12644,12650,12651,1358,
- 343, 12609,12611,12613,11702,427, 8695, 12563,466, 350, 350, 427, 12612,317, 554, 2156, 332, 317, 12616,5991, 12617,317, 317, 2156, 418, 343, 9383,
+ 12595,6036, 7285, 12596,10316,371, 371, 8274, 3284, 317, 345, 1109, 2381, 2058, 1358, 12598,490, 5055, 412, 317, 12601,12602,390, 3243, 371, 5742, 5624,
+ 379, 351, 12604,2261, 12202,12605,551, 428, 5810, 12608,12610,12614,12615,12618,12619,1230, 12620,12623,12628,12629,12631,12632,12643,12644,12650,12651,1358,
+ 343, 12609,12611,12613,11702,427, 8695, 12563,466, 350, 350, 427, 12612,317, 554, 2156, 332, 317, 12616,5991, 12617,317, 317, 2156, 418, 343, 9383,
350, 12621,362, 317, 12622,317, 351, 370, 390, 12624,351, 2272, 12626,12625,12627,363, 351, 363, 5105, 343, 12630,317, 12633,621, 2060, 633, 12634,
362, 4965, 12636,12637,12638,12639,12640,12642,317, 12635,427, 382, 2063, 370, 5663, 4984, 9525, 12641,12211,317, 317, 2022, 350, 363, 404, 3710, 12645,
12647,363, 317, 317, 427, 12646,12648,317, 12649,317, 317, 1033, 351, 12653,428, 12655,12657,12660,345, 12654,12656,12658,12659,317, 343, 12661,12662,
- 12664,2058, 12665,12669,12670,12671,2022, 12674,12675,12676,317, 12677,317, 317, 362, 1358, 380, 12666,317, 317, 345, 363, 12667,12668,2510, 356, 3999,
+ 12664,2058, 12665,12669,12670,12671,2022, 12674,12675,12676,317, 12677,317, 317, 362, 1358, 380, 12666,317, 317, 345, 363, 12667,12668,2510, 356, 3999,
317, 12672,466, 12673,317, 2510, 9648, 2521, 2410, 6402, 7098, 356, 317, 6340, 2087, 380, 8519, 317, 317, 12679,12686,12688,12695,10185,12697,12698,12701,
- 12705,2152, 1383, 12680,443, 5120, 12681,5447, 12682,382, 12683,12684,12685,380, 5343, 317, 10238,1325, 5138, 317, 3079, 12687,350, 12689,12693,12690,317,
+ 12705,2152, 1383, 12680,443, 5120, 12681,5447, 12682,382, 12683,12684,12685,380, 5343, 317, 10238,1325, 5138, 317, 3079, 12687,350, 12689,12693,12690,317,
12691,12692,12694,12696,466, 343, 350, 12142,466, 10907,12699,9383, 12700,10058,12702,12704,343, 5662, 345, 12703,8488, 317, 10538,12316,12707,12714,12720,
511, 12724,12725,12727,511, 12728,12730,12734,2357, 12708,12712,12709,12710,12711,12713,317, 12715,343, 12716,12717,12718,12719,12721,12722,2022, 12723,12142,
- 8603, 12726,343, 362, 9012, 317, 1347, 8178, 317, 317, 12729,343, 381, 536, 390, 12731,317, 350, 12732,12733,4738, 4738, 351, 12731,317, 350, 2387,
+ 8603, 12726,343, 362, 9012, 317, 1347, 8178, 317, 317, 12729,343, 381, 536, 390, 12731,317, 350, 12732,12733,4738, 4738, 351, 12731,317, 350, 2387,
11040,12736,971, 12738,350, 380, 5173, 490, 12737,1109, 12740,2036, 12741,350, 12742,345, 317, 345, 12743,1194, 12750,12757,12758,12771,12776,12783,12786,
362, 12802,12804,12867,12872,12874,350, 5956, 12884,12889,12894,12895,6089, 12898,12900,2146, 5027, 12744,317, 12745,12747,9454, 12749,1109, 350, 317, 12746,
2108, 7865, 9422, 12748,12751,12753,12755,12752,11451,351, 12754,382, 351, 12756,1999, 363, 3999, 363, 12759,12762,317, 12767,12770,317, 317, 2086, 12760,
12761,12763,12764,12765,12766,12768,12769,12772,12773,12774,12775,370, 317, 2715, 381, 578, 11339,1588, 5255, 351, 12777,317, 12779,12780,12781,317, 12778,
- 427, 381, 1358, 332, 5055, 1109, 965, 427, 12782,343, 332, 7098, 675, 12784,12785,12787,12788,2146, 12790,2156, 12792,12793,12797,12799,12801,12789,317,
+ 427, 381, 1358, 332, 5055, 1109, 965, 427, 12782,343, 332, 7098, 675, 12784,12785,12787,12788,2146, 12790,2156, 12792,12793,12797,12799,12801,12789,317,
1347, 317, 317, 12791,410, 5394, 466, 317, 7266, 490, 11844,12794,343, 12795,12796,12798,317, 12800,2609, 6600, 317, 4984, 6002, 6532, 12803,317, 12805,
2119, 12815,12816,12818,12833,12836,12838,12850,12851,12855,12856,12774,12858,5037, 12861,12862,6228, 2066, 7865, 12806,12808,2537, 317, 11648,370, 12809,12811,
317, 12812,12813,350, 12807,317, 6847, 490, 317, 350, 12810,317, 11669,6816, 317, 2272, 2271, 317, 351, 2326, 523, 12814,12817,317, 590, 12819,10794,
- 12824,12825,12826,12828,7779, 12830,12832,317, 490, 12820,12785,12821,12822,12823,12827,2271, 434, 12829,10480,343, 12831,8906, 317, 5038, 343, 12834,1444,
- 12835,12837,1347, 393, 551, 5956, 332, 5464, 12839,12841,363, 12846,12848,2715, 11921,5890, 12840,317, 350, 12842,317, 317, 7356, 351, 12843,12845,2236,
- 12844,12847,12849,317, 343, 404, 9557, 1588, 12852,12853,5891, 317, 332, 12854,11613,8023, 12857,7386, 317, 317, 332, 12859,12860,317, 2071, 2063, 317,
+ 12824,12825,12826,12828,7779, 12830,12832,317, 490, 12820,12785,12821,12822,12823,12827,2271, 434, 12829,10480,343, 12831,8906, 317, 5038, 343, 12834,1444,
+ 12835,12837,1347, 393, 551, 5956, 332, 5464, 12839,12841,363, 12846,12848,2715, 11921,5890, 12840,317, 350, 12842,317, 317, 7356, 351, 12843,12845,2236,
+ 12844,12847,12849,317, 343, 404, 9557, 1588, 12852,12853,5891, 317, 332, 12854,11613,8023, 12857,7386, 317, 317, 332, 12859,12860,317, 2071, 2063, 317,
12863,12865,12864,12866,12868,12870,317, 12869,12871,343, 357, 1358, 12873,1481, 574, 1913, 396, 381, 2146, 12875,12878,12880,12881,12883,317, 317, 12876,
317, 5991, 12877,317, 317, 317, 10878,12879,12882,1044, 404, 317, 7695, 317, 12885,12886,12887,2322, 5838, 363, 355, 12888,2948, 317, 11516,5991, 12890,
- 466, 2271, 363, 12892,317, 1230, 317, 12891,12893,317, 363, 363, 7983, 317, 317, 490, 317, 5818, 317, 12896,12897,5022, 380, 8906, 345, 8906, 373,
- 1347, 12899,490, 12878,12901,12902,466, 363, 12904,12907,12908,12909,12910,9141, 317, 12905,317, 9866, 12906,448, 7368, 317, 4186, 2298, 343, 1347, 2108,
- 393, 10130,12911,12921,12923,12936,12945,12972,12974,12983,12985,12997,13001,13004,13005,13016,13018,13024,13039,13040,13043,13046,13048,12912,8264, 426, 9624,
+ 466, 2271, 363, 12892,317, 1230, 317, 12891,12893,317, 363, 363, 7983, 317, 317, 490, 317, 5818, 317, 12896,12897,5022, 380, 8906, 345, 8906, 373,
+ 1347, 12899,490, 12878,12901,12902,466, 363, 12904,12907,12908,12909,12910,9141, 317, 12905,317, 9866, 12906,448, 7368, 317, 4186, 2298, 343, 1347, 2108,
+ 393, 10130,12911,12921,12923,12936,12945,12972,12974,12983,12985,12997,13001,13004,13005,13016,13018,13024,13039,13040,13043,13046,13048,12912,8264, 426, 9624,
343, 317, 12913,7776, 2715, 12915,12916,565, 12917,12918,5022, 12914,350, 365, 317, 7045, 5028, 12919,12920,12922,605, 9695, 971, 448, 317, 12924,12929,
- 12932,12935,12925,466, 2022, 12926,3529, 12927,12928,12930,12931,12933,12934,332, 2060, 12937,12938,12939,12941,12942,317, 8266, 12943,317, 12944,6834, 380,
- 490, 317, 5087, 317, 9447, 12019,2715, 12940,7143, 382, 317, 317, 437, 990, 4965, 317, 2290, 396, 350, 3079, 345, 12946,553, 12947,12955,12965,362,
+ 12932,12935,12925,466, 2022, 12926,3529, 12927,12928,12930,12931,12933,12934,332, 2060, 12937,12938,12939,12941,12942,317, 8266, 12943,317, 12944,6834, 380,
+ 490, 317, 5087, 317, 9447, 12019,2715, 12940,7143, 382, 317, 317, 437, 990, 4965, 317, 2290, 396, 350, 3079, 345, 12946,553, 12947,12955,12965,362,
10185,12967,7776, 12968,12969,6516, 12970,12971,12948,12950,12954,317, 12949,12951,381, 390, 317, 317, 12952,12953,317, 345, 2156, 363, 12956,12959,12957,
- 12958,12960,9357, 12964,12961,12962,12963,356, 466, 317, 5174, 12966,5120, 316, 390, 317, 1044, 8906, 355, 6517, 7045, 7839, 351, 12973,551, 1109, 578,
+ 12958,12960,9357, 12964,12961,12962,12963,356, 466, 317, 5174, 12966,5120, 316, 390, 317, 1044, 8906, 355, 6517, 7045, 7839, 351, 12973,551, 1109, 578,
12975,12977,12979,12980,9537, 2067, 9884, 12981,12976,1347, 1160, 2683, 12978,12982,12984,2348, 351, 12986,9917, 12987,12988,1358, 12989,12991,12993,12994,12995,
12996,12990,12949,12992,393, 317, 9553, 970, 371, 317, 317, 5392, 7916, 317, 12998,317, 6691, 317, 12999,363, 13000,13002,13003,13006,13007,13010,13014,
- 317, 13015,9624, 343, 356, 9624, 13008,317, 13009,2163, 317, 10471,317, 11266,13011,317, 471, 13012,363, 4980, 13013,317, 351, 9624, 317, 404, 317,
+ 317, 13015,9624, 343, 356, 9624, 13008,317, 13009,2163, 317, 10471,317, 11266,13011,317, 471, 13012,363, 4980, 13013,317, 351, 9624, 317, 404, 317,
317, 8301, 396, 13017,365, 317, 427, 5896, 13019,7866, 13020,12704,1020, 2022, 362, 13021,404, 13022,317, 13023,13025,8083, 13027,13029,13033,13035,13037,
6046, 5809, 317, 13038,13026,13028,2948, 2053, 6831, 384, 13030,13031,13032,13034,317, 13036,574, 5037, 427, 1060, 363, 4738, 317, 2163, 490, 13041,13042,
- 13044,428, 363, 13045,317, 13047,317, 1020, 356, 320, 2808, 13049,13050,13051,13057,380, 317, 317, 490, 343, 317, 317, 350, 10561,574, 13052,339,
+ 13044,428, 363, 13045,317, 13047,317, 1020, 356, 320, 2808, 13049,13050,13051,13057,380, 317, 317, 490, 343, 317, 317, 350, 10561,574, 13052,339,
380, 13053,13054,13055,13056,13058,13059,13060,13062,317, 2108, 13063,13064,13066,490, 13068,13069,12280,13070,4268, 574, 13071,320, 13072,13078,13084,13092,
- 13096,9624, 13114,13142,13144,13147,13164,13175,13184,1358, 6601, 13222,13230,13240,13272,13273,13274,13277,13279,8455, 13073,9027, 13077,363, 13074,13075,317,
- 13076,13079,13080,13083,13081,317, 5241, 13082,317, 363, 390, 317, 13085,13087,350, 317, 13091,13086,351, 6623, 8766, 13088,13089,13090,13093,13094,6318,
+ 13096,9624, 13114,13142,13144,13147,13164,13175,13184,1358, 6601, 13222,13230,13240,13272,13273,13274,13277,13279,8455, 13073,9027, 13077,363, 13074,13075,317,
+ 13076,13079,13080,13083,13081,317, 5241, 13082,317, 363, 390, 317, 13085,13087,350, 317, 13091,13086,351, 6623, 8766, 13088,13089,13090,13093,13094,6318,
13095,7940, 13097,490, 381, 317, 13099,13106,12126,317, 13108,13098,13100,13101,13102,514, 13104,13105,741, 4949, 317, 317, 501, 13103,351, 350, 12641,
- 363, 2024, 371, 370, 13107,317, 13109,13110,13111,13112,13113,13115,13119,13121,13126,3023, 13127,13130,11709,13131,13132,350, 13133,6601, 13136,13138,427,
- 13116,13117,490, 12246,317, 13118,490, 13120,380, 396, 7990, 7618, 13122,13123,13125,5300, 317, 1020, 317, 633, 4965, 13124,370, 317, 339, 317, 363,
+ 363, 2024, 371, 370, 13107,317, 13109,13110,13111,13112,13113,13115,13119,13121,13126,3023, 13127,13130,11709,13131,13132,350, 13133,6601, 13136,13138,427,
+ 13116,13117,490, 12246,317, 13118,490, 13120,380, 396, 7990, 7618, 13122,13123,13125,5300, 317, 1020, 317, 633, 4965, 13124,370, 317, 339, 317, 363,
404, 317, 12303,578, 6598, 13128,317, 13129,439, 439, 7662, 11196,11339,356, 13134,13135,13137,466, 332, 5217, 363, 13139,13140,13141,7650, 427, 13143,
- 317, 605, 317, 349, 11408,317, 317, 10561,317, 13145,317, 2024, 13146,317, 13148,13150,13152,2108, 12454,362, 13155,13159,381, 317, 13149,5590, 2022,
+ 317, 605, 317, 349, 11408,317, 317, 10561,317, 13145,317, 2024, 13146,317, 13148,13150,13152,2108, 12454,362, 13155,13159,381, 317, 13149,5590, 2022,
13151,370, 317, 13153,7592, 2152, 349, 13154,396, 13156,10626,13157,390, 13158,13160,363, 13162,13161,13163,3708, 13165,1345, 13167,13171,13172,419, 13166,
- 1345, 490, 605, 13168,1108, 1100, 13169,373, 2510, 13170,317, 3284, 6334, 5644, 317, 13173,365, 13174,363, 13176,13177,13179,13182,317, 332, 317, 317,
+ 1345, 490, 605, 13168,1108, 1100, 13169,373, 2510, 13170,317, 3284, 6334, 5644, 317, 13173,365, 13174,363, 13176,13177,13179,13182,317, 332, 317, 317,
345, 13178,13180,13181,13183,1160, 5392, 362, 13185,13200,13201,13202,13205,13207,13212,501, 13215,13217,13221,2415, 13186,13188,13189,13191,13192,13193,13197,
- 13198,7711, 345, 13187,317, 2078, 365, 13190,2272, 2610, 13194,317, 317, 1108, 13195,13196,7385, 317, 13199,317, 8274, 384, 4949, 13203,514, 380, 7919,
+ 13198,7711, 345, 13187,317, 2078, 365, 13190,2272, 2610, 13194,317, 317, 1108, 13195,13196,7385, 317, 13199,317, 8274, 384, 4949, 13203,514, 380, 7919,
1358, 13204,317, 13206,2948, 501, 5917, 551, 13208,13209,13210,13211,317, 637, 343, 5120, 13213,13214,317, 13216,10072,6486, 363, 13218,363, 13220,13219,
1020, 384, 426, 1345, 13223,13225,13227,13229,380, 13224,317, 363, 990, 13226,362, 2219, 1347, 7582, 317, 433, 13228,4045, 317, 8023, 362, 5037, 13231,
13234,13236,13237,390, 363, 13239,13232,1020, 317, 13233,13235,13238,1020, 350, 13241,390, 13246,13249,13256,343, 13258,362, 13259,13264,13267,13270,13271,
- 13242,2035, 362, 317, 13243,317, 13244,13245,590, 13247,6993, 5793, 13248,363, 9938, 363, 1160, 13250,13252,13254,317, 317, 13251,317, 2610, 381, 501,
- 13253,351, 382, 13255,1160, 317, 13257,6993, 317, 317, 370, 466, 317, 13260,13263,8766, 2105, 8178, 5890, 13261,332, 13262,317, 7385, 365, 2537, 2210,
+ 13242,2035, 362, 317, 13243,317, 13244,13245,590, 13247,6993, 5793, 13248,363, 9938, 363, 1160, 13250,13252,13254,317, 317, 13251,317, 2610, 381, 501,
+ 13253,351, 382, 13255,1160, 317, 13257,6993, 317, 317, 370, 466, 317, 13260,13263,8766, 2105, 8178, 5890, 13261,332, 13262,317, 7385, 365, 2537, 2210,
317, 317, 13265,427, 317, 13266,13268,13269,7386, 317, 5890, 343, 2058, 437, 578, 13275,363, 13276,13278,345, 10613,3079, 10364,13281,13284,13286,13289,
- 13293,13297,13298,13299,350, 13301,13302,13308,13316,2391, 13329,13282,13283,317, 404, 404, 317, 13285,317, 590, 1453, 2108, 343, 350, 13287,11986,317,
+ 13293,13297,13298,13299,350, 13301,13302,13308,13316,2391, 13329,13282,13283,317, 404, 404, 317, 13285,317, 590, 1453, 2108, 343, 350, 13287,11986,317,
13288,13290,13291,1588, 2510, 13292,2156, 13294,8061, 317, 13295,13296,466, 317, 317, 3125, 427, 363, 6036, 13300,382, 2601, 13303,363, 553, 13304,13305,
13306,13307,13309,7063, 13312,13315,350, 350, 6063, 13310,13311,317, 13313,350, 381, 317, 574, 317, 13314,371, 317, 2219, 343, 317, 13317,13318,13319,
13321,13325,13326,2391, 13320,13322,13324,433, 13323,370, 317, 5273, 13327,13328,13330,13332,13339,13340,6954, 13344,13352,2254, 350, 501, 317, 13353,13358,
- 13362,13376,13377,13379,317, 6449, 2271, 317, 3710, 13333,317, 13337,365, 13334,1347, 13335,351, 13336,13338,13341,13343,390, 490, 13342,7698, 404, 633,
- 13345,13347,343, 343, 13348,9938, 433, 2037, 2387, 13350,317, 13346,356, 317, 5793, 317, 1160, 317, 5105, 345, 2004, 317, 13349,5126, 317, 317, 317,
+ 13362,13376,13377,13379,317, 6449, 2271, 317, 3710, 13333,317, 13337,365, 13334,1347, 13335,351, 13336,13338,13341,13343,390, 490, 13342,7698, 404, 633,
+ 13345,13347,343, 343, 13348,9938, 433, 2037, 2387, 13350,317, 13346,356, 317, 5793, 317, 1160, 317, 5105, 345, 2004, 317, 13349,5126, 317, 317, 317,
343, 13351,13354,13356,317, 317, 13355,4564, 5991, 466, 317, 13357,13359,370, 13361,363, 1160, 13360,1999, 362, 317, 380, 2219, 317, 419, 13363,13369,
- 13370,10223,362, 350, 363, 9914, 317, 13373,13364,13365,13366,317, 6449, 7618, 12524,363, 317, 356, 13367,2022, 13368,317, 404, 990, 382, 363, 2369,
- 1347, 13371,13372,1160, 2222, 317, 317, 404, 6228, 2366, 13374,317, 589, 317, 13375,13378,317, 12309,382, 350, 350, 578, 13381,6988, 13383,13385,350,
- 13386,13388,13390,13391,345, 13382,343, 350, 13384,450, 490, 13387,363, 13389,13392,13393,350, 13394,2134, 13396,13398,13403,370, 317, 13397,1347, 356,
+ 13370,10223,362, 350, 363, 9914, 317, 13373,13364,13365,13366,317, 6449, 7618, 12524,363, 317, 356, 13367,2022, 13368,317, 404, 990, 382, 363, 2369,
+ 1347, 13371,13372,1160, 2222, 317, 317, 404, 6228, 2366, 13374,317, 589, 317, 13375,13378,317, 12309,382, 350, 350, 578, 13381,6988, 13383,13385,350,
+ 13386,13388,13390,13391,345, 13382,343, 350, 13384,450, 490, 13387,363, 13389,13392,13393,350, 13394,2134, 13396,13398,13403,370, 317, 13397,1347, 356,
13399,345, 13401,9422, 13400,356, 1358, 317, 9067, 363, 7368, 13402,317, 6021, 363, 1160, 351, 13404,13406,317, 13405,1358, 13397,2291, 1588, 2021, 13408,
- 2022, 371, 317, 13409,13413,13410,13411,13412,13414,351, 8023, 13416,2146, 13417,13418,13419,13421,13422,13423,13424,317, 1358, 13428,404, 13429,350, 2222,
- 317, 317, 350, 5205, 317, 343, 13425,381, 13426,13427,371, 2610, 8100, 13430,343, 2222, 13432,13433,13435,13436,350, 332, 317, 2134, 2551, 13434,2510,
+ 2022, 371, 317, 13409,13413,13410,13411,13412,13414,351, 8023, 13416,2146, 13417,13418,13419,13421,13422,13423,13424,317, 1358, 13428,404, 13429,350, 2222,
+ 317, 317, 350, 5205, 317, 343, 13425,381, 13426,13427,371, 2610, 8100, 13430,343, 2222, 13432,13433,13435,13436,350, 332, 317, 2134, 2551, 13434,2510,
317, 13437,13438,13439,7801, 13440,13441,13442,13443,412, 13445,5087, 1479, 13447,590, 13448,13449,13451,13453,13512,13515,13516,607, 13522,13526,13539,13452,
1459, 13454,13458,13469,5419, 13472,2381, 13479,13485,13489,13500,13503,317, 13510,362, 5173, 13455,2178, 13456,13457,13459,13464,13467,11408,317, 13460,13461,
- 317, 317, 13462,317, 13463,13465,13466,13468,13470,13471,317, 13473,8148, 13474,13475,13476,13477,13478,13480,317, 490, 13481,13482,13483,13484,13486,2110,
+ 317, 317, 13462,317, 13463,13465,13466,13468,13470,13471,317, 13473,8148, 13474,13475,13476,13477,13478,13480,317, 490, 13481,13482,13483,13484,13486,2110,
13457,317, 13487,13488,317, 317, 565, 13490,13497,6231, 13499,7940, 365, 13491,13492,13496,8626, 1444, 13493,13494,13495,13498,317, 490, 317, 13501,13502,
490, 6614, 13504,13505,317, 13506,13507,13508,13509,558, 490, 13511,317, 6614, 608, 13513,13514,317, 607, 396, 6222, 317, 365, 13517,317, 13520,13521,
5173, 13518,13519,13523,490, 13525,3429, 433, 373, 317, 13524,13527,13538,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13540,317, 10408,13544,
13465,5561, 13546,13541,13542,13543,13545,8216, 490, 332, 13547,13575,13592,13624,13641,13692,35, 13798,381, 13800,13805,13810,13880,13890,13921,14063,14074,
14141,14197,14224,14229,14232,490, 14233,13548,13549,317, 13551,5027, 13563,317, 13570,13571,13572,490, 1588, 5217, 345, 13550,365, 7142, 13552,10316,13554,
- 371, 343, 13555,13560,13553,13556,550, 13557,13558,13559,13561,13562,13564,7035, 490, 9994, 13565,13567,317, 7398, 13566,3688, 13568,13569,317, 10626,5447,
+ 371, 343, 13555,13560,13553,13556,550, 13557,13558,13559,13561,13562,13564,7035, 490, 9994, 13565,13567,317, 7398, 13566,3688, 13568,13569,317, 10626,5447,
7871, 6993, 2584, 390, 13573,13574,574, 363, 317, 13576,13577,13578,13579,317, 317, 351, 3079, 343, 317, 317, 590, 317, 317, 11186,6920, 404, 13174,
8367, 13580,317, 9313, 13581,13582,10517,13588,13583,13584,13585,13586,351, 13587,317, 9549, 345, 13589,13590,13591,490, 317, 965, 13593,741, 13597,13602,
13604,13616,13618,13620,431, 13594,13595,13596,317, 13598,1347, 349, 13599,13600,13601,448, 498, 5105, 350, 13603,1479, 2134, 396, 317, 11571,1999, 13605,
2024, 554, 466, 13612,9420, 13614,2298, 13606,13609,317, 5223, 13607,317, 13608,466, 13610,404, 13611,13613,363, 362, 317, 317, 393, 13615,13617,13619,
- 13621,13622,1347, 13623,382, 1915, 351, 13625,13633,6089, 13634,13637,350, 363, 13638,13639,373, 3987, 13626,13627,13629,13632,317, 2024, 1347, 371, 317,
+ 13621,13622,1347, 13623,382, 1915, 351, 13625,13633,6089, 13634,13637,350, 363, 13638,13639,373, 3987, 13626,13627,13629,13632,317, 2024, 1347, 371, 317,
10561,13628,317, 13630,13631,362, 7990, 2024, 380, 1347, 450, 317, 317, 382, 13635,13636,13640,13642,13644,13653,13654,350, 13655,350, 13662,13668,13682,
- 11147,13690,10538,317, 13643,317, 8083, 13645,13651,13646,13647,13649,13648,5662, 13650,10997,13652,380, 350, 13656,370, 13657,13660,343, 5611, 13661,317,
+ 11147,13690,10538,317, 13643,317, 8083, 13645,13651,13646,13647,13649,13648,5662, 13650,10997,13652,380, 350, 13656,370, 13657,13660,343, 5611, 13661,317,
317, 5836, 11831,13658,317, 13659,6598, 3284, 317, 5836, 351, 7668, 380, 13663,2357, 971, 13638,13665,13666,317, 13664,317, 373, 9313, 13667,5038, 13669,
- 343, 351, 317, 13671,13673,5662, 13675,356, 13677,381, 13681,317, 741, 8047, 13670,13672,13674,317, 13676,351, 384, 13678,350, 13680,13679,3007, 3007,
+ 343, 351, 317, 13671,13673,5662, 13675,356, 13677,381, 13681,317, 741, 8047, 13670,13672,13674,317, 13676,351, 384, 13678,350, 13680,13679,3007, 3007,
11940,5810, 13683,13684,13687,4738, 1453, 13685,13686,13688,13689,13691,13693,2004, 13694,351, 351, 343, 317, 13695,13696,13697,6228, 13698,13700,13713,13716,
13725,13727,13733,13745,332, 13748,13752,13754,13757,13762,13765,13768,13775,13778,13786,13793,13794,351, 13699,6528, 5036, 356, 317, 673, 317, 317, 13701,
13704,13705,13706,13707,13710,13712,317, 370, 317, 13702,382, 345, 13703,8587, 317, 317, 545, 380, 7695, 384, 384, 6713, 381, 317, 317, 6917, 13708,
1347, 13709,1347, 6021, 5942, 621, 317, 317, 13711,2073, 5962, 317, 317, 380, 4268, 381, 394, 13714,13715,13717,13720,13721,13723,13718,317, 343, 13719,
13722,317, 13724,1992, 317, 317, 633, 317, 317, 13726,317, 2402, 345, 370, 363, 13728,13729,13731,363, 381, 2381, 13730,13732,356, 13734,13735,13737,
- 13739,13740,527, 317, 13744,1160, 343, 10590,13736,317, 13738,381, 317, 1347, 317, 4564, 13741,317, 13742,13743,2261, 5810, 345, 1347, 317, 1160, 427,
+ 13739,13740,527, 317, 13744,1160, 343, 10590,13736,317, 13738,381, 317, 1347, 317, 4564, 13741,317, 13742,13743,2261, 5810, 345, 1347, 317, 1160, 427,
355, 13746,317, 1999, 13747,393, 13749,427, 13750,13751,371, 343, 317, 317, 5684, 317, 13753,1044, 6036, 13755,13756,356, 350, 317, 343, 317, 13758,
- 553, 13761,13759,490, 5942, 13760,2022, 393, 545, 13763,13764,393, 1915, 380, 397, 380, 345, 317, 317, 13766,1588, 317, 13767,356, 370, 13769,2581,
- 13771,7305, 13774,13770,317, 13772,13773,317, 2420, 7695, 13776,13777,427, 370, 13779,13781,370, 13783,13784,351, 13780,370, 1160, 13782,428, 608, 384,
+ 553, 13761,13759,490, 5942, 13760,2022, 393, 545, 13763,13764,393, 1915, 380, 397, 380, 345, 317, 317, 13766,1588, 317, 13767,356, 370, 13769,2581,
+ 13771,7305, 13774,13770,317, 13772,13773,317, 2420, 7695, 13776,13777,427, 370, 13779,13781,370, 13783,13784,351, 13780,370, 1160, 13782,428, 608, 384,
13785,13787,13788,13792,8125, 2035, 2152, 13789,13791,13790,1160, 6859, 1347, 7849, 9383, 13795,13797,317, 13796,356, 427, 13799,2222, 317, 351, 317, 13801,
13802,2146, 13804,317, 317, 1444, 317, 6430, 13803,7149, 317, 2568, 13806,13808,362, 5105, 554, 8301, 13807,317, 1230, 317, 8301, 317, 13809,13811,13814,
13819,13820,13827,13829,13831,13838,13840,13876,13878,13879,6840, 498, 10489,317, 13003,11408,13812,2509, 7399, 13813,332, 7590, 13815,13817,317, 317, 13816,
- 317, 13818,317, 13821,317, 13824,317, 13822,13823,13825,13826,13828,317, 317, 2142, 317, 317, 317, 371, 365, 4965, 13830,448, 390, 13832,13836,317,
- 565, 13833,3284, 13834,13835,13837,317, 13839,476, 661, 13841,13842,633, 13843,13848,13851,6275, 7734, 13858,13868,362, 13869,1160, 13871,13872,317, 1131,
- 13844,13845,13026,356, 343, 3999, 13846,13847,13849,13850,6354, 317, 13852,371, 317, 317, 348, 317, 13854,13679,13857,317, 13853,10487,13855,13856,5991,
- 466, 317, 317, 13859,371, 13860,5212, 13861,13866,345, 6412, 317, 5030, 13862,2021, 351, 13863,13864,404, 370, 13865,5163, 317, 13867,5223, 12276,317,
- 371, 317, 345, 13870,11613,6228, 317, 317, 633, 317, 13873,317, 317, 317, 13875,9261, 317, 1230, 317, 13874,11921,7953, 13877,365, 7063, 365, 363,
- 404, 2171, 363, 317, 13881,13882,13884,2211, 350, 12732,13887,13883,317, 649, 317, 13885,13886,433, 13888,490, 13889,13891,13892,13896,2024, 13897,317,
+ 317, 13818,317, 13821,317, 13824,317, 13822,13823,13825,13826,13828,317, 317, 2142, 317, 317, 317, 371, 365, 4965, 13830,448, 390, 13832,13836,317,
+ 565, 13833,3284, 13834,13835,13837,317, 13839,476, 661, 13841,13842,633, 13843,13848,13851,6275, 7734, 13858,13868,362, 13869,1160, 13871,13872,317, 1131,
+ 13844,13845,13026,356, 343, 3999, 13846,13847,13849,13850,6354, 317, 13852,371, 317, 317, 348, 317, 13854,13679,13857,317, 13853,10487,13855,13856,5991,
+ 466, 317, 317, 13859,371, 13860,5212, 13861,13866,345, 6412, 317, 5030, 13862,2021, 351, 13863,13864,404, 370, 13865,5163, 317, 13867,5223, 12276,317,
+ 371, 317, 345, 13870,11613,6228, 317, 317, 633, 317, 13873,317, 317, 317, 13875,9261, 317, 1230, 317, 13874,11921,7953, 13877,365, 7063, 365, 363,
+ 404, 2171, 363, 317, 13881,13882,13884,2211, 350, 12732,13887,13883,317, 649, 317, 13885,13886,433, 13888,490, 13889,13891,13892,13896,2024, 13897,317,
13903,13906,13004,13909,13911,13915,13916,13919,317, 317, 5201, 458, 432, 317, 345, 13893,13895,2705, 317, 317, 317, 13894,590, 565, 317, 13870,13898,
- 5623, 13002,13899,13900,12141,362, 13902,317, 13901,13904,2003, 2219, 363, 13905,2389, 13907,2022, 8296, 317, 1160, 13908,6036, 13910,317, 490, 1453, 317,
+ 5623, 13002,13899,13900,12141,362, 13902,317, 13901,13904,2003, 2219, 363, 13905,2389, 13907,2022, 8296, 317, 1160, 13908,6036, 13910,317, 490, 1453, 317,
382, 13912,498, 343, 13913,13914,6598, 2584, 466, 317, 13917,350, 13918,317, 590, 5623, 13920,13922,13929,13935,13948,13957,13963,13977,13980,332, 13987,
13997,14019,14023,14032,14036,14054,14062,4788, 13923,13924,13925,13926,13927,13928,13930,574, 13931,13932,13933,433, 13934,13936,13941,13945,13937,13938,13939,
- 13940,11418,13942,13943,13944,13946,13947,13949,13955,13950,13951,13952,13953,13954,13956,13958,13961,13962,13959,13960,345, 13964,13973,13965,13967,13966,339,
+ 13940,11418,13942,13943,13944,13946,13947,13949,13955,13950,13951,13952,13953,13954,13956,13958,13961,13962,13959,13960,345, 13964,13973,13965,13967,13966,339,
2163, 13956,13968,13969,13970,13971,13972,9548, 317, 13974,13975,13976,2510, 13587,317, 13978,13979,13981,13982,13983,13984,13985,13986,317, 13988,13991,13989,
13990,317, 317, 5700, 4268, 13992,13993,13994,13995,13996,13998,14004,14013,317, 13999,345, 14000,14001,14002,14003,14005,14009,317, 14012,14006,14007,14008,
- 14010,14011,380, 2272, 14014,14015,14016,14017,14018,14020,14022,317, 317, 14021,14024,339, 5201, 14025,14031,14026,14027,14028,14029,14030,14033,450, 5226,
+ 14010,14011,380, 2272, 14014,14015,14016,14017,14018,14020,14022,317, 317, 14021,14024,339, 5201, 14025,14031,14026,14027,14028,14029,14030,14033,450, 5226,
14034,14035,14037,14039,14041,2584, 11336,14044,14048,14038,14040,14042,14043,14045,14046,14047,14049,14052,14050,14051,14053,317, 390, 14055,14061,14056,14058,
14057,14059,14060,14064,9171, 6187, 14072,14073,14065,1459, 14066,14067,14068,343, 14069,14070,14071,14075,14076,14077,14085,14100,14106,14109,4952, 14110,14121,
- 14122,14126,14128,14129,2568, 14133,2211, 5173, 498, 317, 317, 14078,14081,14079,14080,9624, 350, 6089, 14082,2117, 11089,14083,14084,345, 14086,14087,2387,
- 2077, 14088,7401, 14089,14092,5683, 14093,14094,5005, 14096,317, 545, 5653, 317, 317, 574, 6420, 14090,317, 14091,439, 533, 428, 14095,3999, 356, 380,
+ 14122,14126,14128,14129,2568, 14133,2211, 5173, 498, 317, 317, 14078,14081,14079,14080,9624, 350, 6089, 14082,2117, 11089,14083,14084,345, 14086,14087,2387,
+ 2077, 14088,7401, 14089,14092,5683, 14093,14094,5005, 14096,317, 545, 5653, 317, 317, 574, 6420, 14090,317, 14091,439, 533, 428, 14095,3999, 356, 380,
317, 14097,428, 2063, 14098,14099,14101,370, 14105,317, 14102,14103,14104,9059, 2110, 4965, 14107,14108,2142, 2219, 10487,6195, 14111,14114,14116,14118,14120,
350, 317, 317, 4952, 14112,317, 381, 317, 590, 6598, 14113,5213, 11940,355, 2708, 355, 2152, 14115,396, 1108, 317, 14117,439, 14119,363, 14123,14124,
- 14125,13100,14127,343, 10072,317, 428, 14130,488, 14131,14132,419, 14134,596, 363, 317, 14140,14135,356, 466, 4974, 8897, 2301, 317, 7053, 14136,343,
+ 14125,13100,14127,343, 10072,317, 428, 14130,488, 14131,14132,419, 14134,596, 363, 317, 14140,14135,356, 466, 4974, 8897, 2301, 317, 7053, 14136,343,
14137,14138,14139,889, 317, 1292, 317, 317, 1018, 651, 317, 317, 317, 317, 633, 428, 11960,14142,14146,14147,14154,596, 14160,14167,14171,14173,14175,
- 14179,14181,14187,14189,14194,348, 7521, 2035, 14143,1108, 14145,14144,14148,14150,14151,14152,14153,543, 14149,7916, 380, 343, 2181, 2416, 317, 350, 2715,
- 14155,317, 317, 365, 14156,14157,14158,14159,397, 317, 14161,14162,971, 14163,14164,396, 332, 14165,317, 317, 5748, 14166,14168,14169,317, 14170,2108,
+ 14179,14181,14187,14189,14194,348, 7521, 2035, 14143,1108, 14145,14144,14148,14150,14151,14152,14153,543, 14149,7916, 380, 343, 2181, 2416, 317, 350, 2715,
+ 14155,317, 317, 365, 14156,14157,14158,14159,397, 317, 14161,14162,971, 14163,14164,396, 332, 14165,317, 317, 5748, 14166,14168,14169,317, 14170,2108,
351, 14172,1060, 14174,14176,14177,545, 14178,390, 5079, 5570, 317, 14180,345, 2610, 317, 317, 14182,466, 427, 14183,14184,14185,14186,14188,14190,14191,
- 2503, 14192,2219, 5105, 317, 11962,317, 14193,2610, 3941, 351, 2271, 13853,14195,317, 14196,317, 345, 14198,7911, 14199,14203,14206,466, 2047, 6532, 350,
- 14207,2413, 14208,14209,14218,8722, 14220,14200,12598,6228, 317, 633, 476, 8301, 14201,3999, 317, 317, 14202,1160, 14204,317, 317, 2322, 14205,6996, 317,
- 633, 490, 2715, 332, 6080, 8525, 317, 14210,14215,343, 362, 350, 14216,317, 317, 14211,14212,317, 6598, 370, 362, 14213,11716,14214,371, 10561,317,
+ 2503, 14192,2219, 5105, 317, 11962,317, 14193,2610, 3941, 351, 2271, 13853,14195,317, 14196,317, 345, 14198,7911, 14199,14203,14206,466, 2047, 6532, 350,
+ 14207,2413, 14208,14209,14218,8722, 14220,14200,12598,6228, 317, 633, 476, 8301, 14201,3999, 317, 317, 14202,1160, 14204,317, 317, 2322, 14205,6996, 317,
+ 633, 490, 2715, 332, 6080, 8525, 317, 14210,14215,343, 362, 350, 14216,317, 317, 14211,14212,317, 6598, 370, 362, 14213,11716,14214,371, 10561,317,
14217,14219,3375, 363, 8272, 14221,317, 14222,317, 14223,14225,5055, 14226,14228,9383, 345, 5570, 14227,490, 338, 317, 14230,14231,370, 380, 350, 14234,
- 14237,14238,350, 2036, 596, 367, 14239,14235,14236,14240,428, 343, 317, 14241,14243,14247,13452,14248,14255,14256,317, 14244,14245,14246,14249,14253,343,
+ 14237,14238,350, 2036, 596, 367, 14239,14235,14236,14240,428, 343, 317, 14241,14243,14247,13452,14248,14255,14256,317, 14244,14245,14246,14249,14253,343,
14250,14252,14251,14254,4984, 596, 596, 14257,14258,14259,1020, 14260,14263,317, 4962, 362, 6601, 5896, 14261,363, 14262,356, 426, 612, 14265,14267,14266,
4090, 3611, 37, 14457,5872, 14459,14507,14550,14635,14642,14720,14721,381, 14268,14274,14348,14354,9624, 14355,14360,14363,14373,14378,14379,14381,14404,14405,
- 14432,14442,14445,14447,14451,14452,14269,14272,317, 14270,466, 317, 14271,466, 10854,14273,14275,332, 14276,384, 4965, 370, 8296, 14277,14278,317, 673,
- 317, 14279,1353, 14280,14281,14288,14290,14294,14297,14300,14301,14307,14308,14309,14313,14319,14321,14322,14324,14326,14339,14343,317, 370, 10632,380, 356,
+ 14432,14442,14445,14447,14451,14452,14269,14272,317, 14270,466, 317, 14271,466, 10854,14273,14275,332, 14276,384, 4965, 370, 8296, 14277,14278,317, 673,
+ 317, 14279,1353, 14280,14281,14288,14290,14294,14297,14300,14301,14307,14308,14309,14313,14319,14321,14322,14324,14326,14339,14343,317, 370, 10632,380, 356,
356, 345, 14282,14283,14285,14286,14287,10894,5223, 14284,551, 317, 317, 317, 317, 6063, 381, 14289,14289,14291,14292,14293,317, 5487, 14295,381, 14296,
- 343, 514, 539, 14298,370, 11894,14299,351, 2631, 14302,14304,14306,11918,317, 317, 14303,14305,1358, 393, 343, 1160, 5861, 390, 14310,14311,14312,384,
+ 343, 514, 539, 14298,370, 11894,14299,351, 2631, 14302,14304,14306,11918,317, 317, 14303,14305,1358, 393, 343, 1160, 5861, 390, 14310,14311,14312,384,
14314,14317,14318,363, 317, 14315,317, 317, 14316,1325, 11648,1358, 428, 14320,343, 345, 4268, 14323,345, 14325,367, 7911, 316, 14327,14331,14334,14336,
- 363, 14328,14329,351, 1060, 317, 14330,14332,14333,14335,14337,14338,14340,343, 14342,14341,14344,14345,2627, 356, 14347,14346,317, 2509, 14349,466, 317,
- 317, 6228, 317, 740, 317, 362, 14350,14351,317, 317, 14352,14353,10471,6917, 317, 362, 14356,14357,14359,14358,14361,317, 14362,883, 317, 390, 490,
+ 363, 14328,14329,351, 1060, 317, 14330,14332,14333,14335,14337,14338,14340,343, 14342,14341,14344,14345,2627, 356, 14347,14346,317, 2509, 14349,466, 317,
+ 317, 6228, 317, 740, 317, 362, 14350,14351,317, 317, 14352,14353,10471,6917, 317, 362, 14356,14357,14359,14358,14361,317, 14362,883, 317, 390, 490,
2058, 2584, 14364,6691, 14372,343, 14365,5037, 14366,14367,14368,14369,14370,14371,14374,14377,2022, 2022, 4976, 317, 7063, 490, 14375,9420, 14376,317, 12453,
- 1230, 317, 370, 14071,14380,466, 317, 2571, 317, 317, 317, 14382,14386,1345, 2024, 490, 14389,4980, 14400,14402,14403,370, 14383,2117, 14384,317, 1347,
- 5653, 574, 317, 332, 551, 14385,9624, 317, 351, 2024, 14387,4984, 317, 14388,317, 317, 14390,14395,5661, 362, 317, 14397,14398,317, 317, 14391,9720,
+ 1230, 317, 370, 14071,14380,466, 317, 2571, 317, 317, 317, 14382,14386,1345, 2024, 490, 14389,4980, 14400,14402,14403,370, 14383,2117, 14384,317, 1347,
+ 5653, 574, 317, 332, 551, 14385,9624, 317, 351, 2024, 14387,4984, 317, 14388,317, 317, 14390,14395,5661, 362, 317, 14397,14398,317, 317, 14391,9720,
14392,14071,1453, 14393,4949, 14394,382, 373, 350, 317, 14396,317, 14071,5561, 1597, 14399,14401,539, 2117, 332, 317, 4925, 466, 2022, 14406,14407,14410,
14411,14414,317, 14416,14420,14423,14431,553, 317, 14408,317, 2715, 14409,13670,14412,317, 345, 14413,317, 2060, 427, 317, 317, 14415,14417,14418,14419,
- 14421,14422,14424,466, 14426,317, 317, 14425,14427,7900, 396, 14428,14429,14430,5483, 317, 371, 10316,14433,14434,14436,14439,14440,317, 14435,2024, 2022,
+ 14421,14422,14424,466, 14426,317, 317, 14425,14427,7900, 396, 14428,14429,14430,5483, 317, 371, 10316,14433,14434,14436,14439,14440,317, 14435,2024, 2022,
14437,14438,466, 2391, 14441,317, 350, 350, 390, 317, 6600, 14443,14444,317, 6036, 2310, 14446,4952, 14448,14449,14450,10965,2584, 10223,14453,14454,14456,
- 317, 842, 317, 11280,317, 6420, 317, 390, 351, 14455,5487, 2317, 14458,14460,14464,14466,14469,14472,1030, 14473,14479,14480,14481,14493,14494,14502,1358,
- 14504,14505,14506,14461,14463,11450,11954,317, 550, 14462,14465,2222, 317, 4738, 362, 14467,14468,605, 343, 14470,14471,2222, 317, 390, 351, 3999, 317,
+ 317, 842, 317, 11280,317, 6420, 317, 390, 351, 14455,5487, 2317, 14458,14460,14464,14466,14469,14472,1030, 14473,14479,14480,14481,14493,14494,14502,1358,
+ 14504,14505,14506,14461,14463,11450,11954,317, 550, 14462,14465,2222, 317, 4738, 362, 14467,14468,605, 343, 14470,14471,2222, 317, 390, 351, 3999, 317,
14474,351, 4591, 6917, 14476,7428, 14477,14475,14478,380, 389, 390, 14482,14484,350, 362, 14486,14483,466, 317, 14485,14487,14492,317, 14488,14489,14490,
- 14491,351, 317, 14495,14496,14497,14498,14501,589, 1160, 317, 381, 14499,14500,351, 317, 404, 14503,501, 343, 3079, 3079, 3079, 2117, 2117, 317, 351,
- 317, 12864,14508,343, 14513,14514,14516,350, 14518,14519,1347, 14533,14538,501, 14545,14546,317, 14509,14510,317, 14511,317, 14512,4984, 14515,14517,370,
- 490, 1347, 9779, 14520,14526,14527,14530,317, 2067, 14532,317, 316, 10422,14521,466, 370, 362, 2571, 14524,317, 14522,14523,14525,14528,14529,14531,317,
+ 14491,351, 317, 14495,14496,14497,14498,14501,589, 1160, 317, 381, 14499,14500,351, 317, 404, 14503,501, 343, 3079, 3079, 3079, 2117, 2117, 317, 351,
+ 317, 12864,14508,343, 14513,14514,14516,350, 14518,14519,1347, 14533,14538,501, 14545,14546,317, 14509,14510,317, 14511,317, 14512,4984, 14515,14517,370,
+ 490, 1347, 9779, 14520,14526,14527,14530,317, 2067, 14532,317, 316, 10422,14521,466, 370, 362, 2571, 14524,317, 14522,14523,14525,14528,14529,14531,317,
5991, 466, 317, 317, 317, 343, 14534,14536,317, 317, 14535,10891,14537,390, 14539,14541,14540,370, 511, 317, 12696,14542,14543,14544,551, 14547,14548,
- 14549,8567, 14551,14552,14562,14563,6598, 14567,427, 8522, 5634, 14570,14576,14580,343, 14612,14620,14624,1020, 14625,14633,14634,14553,14554,317, 14561,5897,
- 351, 14555,14556,14559,14560,466, 7428, 404, 317, 317, 5717, 2156, 14557,14558,317, 1347, 381, 7499, 7505, 9059, 2134, 14564,2222, 536, 351, 14565,350,
- 14566,14462,14568,317, 14569,5896, 14571,317, 9624, 3023, 350, 14572,14573,14574,6602, 6602, 14575,14577,317, 2348, 2317, 14578,14579,317, 317, 317, 590,
+ 14549,8567, 14551,14552,14562,14563,6598, 14567,427, 8522, 5634, 14570,14576,14580,343, 14612,14620,14624,1020, 14625,14633,14634,14553,14554,317, 14561,5897,
+ 351, 14555,14556,14559,14560,466, 7428, 404, 317, 317, 5717, 2156, 14557,14558,317, 1347, 381, 7499, 7505, 9059, 2134, 14564,2222, 536, 351, 14565,350,
+ 14566,14462,14568,317, 14569,5896, 14571,317, 9624, 3023, 350, 14572,14573,14574,6602, 6602, 14575,14577,317, 2348, 2317, 14578,14579,317, 317, 317, 590,
5105, 317, 317, 5942, 9174, 14581,14604,11211,317, 6228, 1087, 12249,9289, 356, 6089, 14582,14585,14587,6674, 1526, 14590,14598,14601,1160, 14583,14584,14586,
14588,6188, 14589,345, 12656,605, 14591,14592,14596,5809, 14593,14595,6081, 14594,14597,14599,14600,14602,14603,5896, 9124, 9624, 3023, 14605,6601, 14608,14606,
- 14607,6195, 404, 14609,14575,14610,14611,14613,317, 9624, 14617,14614,14615,14616,351, 14618,14619,356, 14409,466, 317, 14621,2317, 14623,14622,351, 466,
+ 14607,6195, 404, 14609,14575,14610,14611,14613,317, 9624, 14617,14614,14615,14616,351, 14618,14619,356, 14409,466, 317, 14621,2317, 14623,14622,351, 466,
317, 390, 12696,381, 2156, 1194, 9124, 388, 14626,3999, 14627,14630,317, 385, 2503, 317, 14632,1060, 551, 373, 14628,14629,14631,554, 427, 426, 14636,
14637,14638,14639,14640,14641,14643,419, 14646,14650,14696,1030, 14698,14699,14710,14715,14718,14719,2108, 6674, 14644,14645,14647,5809, 14648,14649,14651,14652,
- 14653,14654,14655,14656,2767, 14657,649, 14658,14659,14660,14665,14666,14670,14671,14673,514, 14675,14677,14679,14681,2272, 14683,14685,14687,14692,14693,1078,
+ 14653,14654,14655,14656,2767, 14657,649, 14658,14659,14660,14665,14666,14670,14671,14673,514, 14675,14677,14679,14681,2272, 14683,14685,14687,14692,14693,1078,
317, 317, 5826, 1615, 317, 317, 317, 317, 1688, 317, 6996, 317, 317, 317, 317, 4563, 14661,14285,14664,2389, 4564, 14662,14663,5807, 317, 1347, 12744,
2631, 14667,13719,14669,384, 14668,14672,316, 578, 317, 343, 390, 428, 14674,12060,501, 14676,362, 14678,14680,380, 404, 14682,11617,14684,356, 14686,
- 317, 317, 490, 14688,14690,362, 317, 14691,317, 14689,2156, 1160, 351, 1020, 2272, 384, 5138, 317, 14694,14695,6917, 343, 14697,551, 466, 317, 404,
- 390, 381, 317, 5896, 14700,14708,466, 1020, 2419, 9012, 14701,317, 5896, 6598, 14702,14705,13686,14703,14704,14706,14707,14709,14711,14713,14714,14712,317,
+ 317, 317, 490, 14688,14690,362, 317, 14691,317, 14689,2156, 1160, 351, 1020, 2272, 384, 5138, 317, 14694,14695,6917, 343, 14697,551, 466, 317, 404,
+ 390, 381, 317, 5896, 14700,14708,466, 1020, 2419, 9012, 14701,317, 5896, 6598, 14702,14705,13686,14703,14704,14706,14707,14709,14711,14713,14714,14712,317,
380, 317, 11613,428, 2117, 317, 842, 356, 370, 362, 317, 317, 14716,317, 14717,356, 466, 363, 501, 317, 350, 10354,14722,2156, 10185,363, 14724,
- 14725,14728,14734,14746,6322, 317, 14726,14727,14729,14730,14731,14732,14733,949, 6322, 14735,14739,14742,14745,651, 12774,14736,14737,14738,317, 10320,5120,
+ 14725,14728,14734,14746,6322, 317, 14726,14727,14729,14730,14731,14732,14733,949, 6322, 14735,14739,14742,14745,651, 12774,14736,14737,14738,317, 10320,5120,
317, 10320,5120, 14740,1902, 14741,14743,14744,365, 14748,1243, 396, 6504, 14749,14751,14770,14807,14838,14884,14913,14914,14944,14965,14985,14989,14993,15052,
- 15077,15189,15264,15273,39, 15384,15429,15483,15606,15611,15639,15647,15686,14750,317, 14752,317, 363, 14754,14755,2533, 1358, 14756,14763,14765,10208,317,
+ 15077,15189,15264,15273,39, 15384,15429,15483,15606,15611,15639,15647,15686,14750,317, 14752,317, 363, 14754,14755,2533, 1358, 14756,14763,14765,10208,317,
14753,1230, 317, 14757,362, 317, 345, 10422,14758,2022, 362, 11242,317, 14761,14759,14760,14762,2272, 14764,356, 379, 466, 317, 14766,9624, 7401, 14767,
14768,10149,350, 2301, 14769,7053, 550, 382, 1347, 317, 5653, 2815, 14771,8435, 14773,14774,14775,14784,14787,14789,14791,14792,5611, 14793,14794,14797,14800,
- 14802,5005, 2193, 317, 14806,637, 637, 14772,371, 6923, 2116, 317, 317, 367, 12144,14776,2156, 14777,317, 14779,317, 1160, 332, 365, 9575, 317, 5223,
- 14778,14780,317, 317, 317, 14781,317, 317, 317, 14783,317, 1830, 317, 317, 317, 317, 14782,14785,14786,14788,7622, 371, 317, 317, 14790,9244, 363,
+ 14802,5005, 2193, 317, 14806,637, 637, 14772,371, 6923, 2116, 317, 317, 367, 12144,14776,2156, 14777,317, 14779,317, 1160, 332, 365, 9575, 317, 5223,
+ 14778,14780,317, 317, 317, 14781,317, 317, 317, 14783,317, 1830, 317, 317, 317, 317, 14782,14785,14786,14788,7622, 371, 317, 317, 14790,9244, 363,
317, 351, 332, 371, 2117, 2117, 14795,317, 14796,5825, 317, 14798,14799,317, 2193, 371, 14801,2317, 317, 11198,2271, 363, 14803,2553, 363, 2222, 14804,
14805,4943, 14808,14811,14817,14818,14823,6954, 362, 14836,14837,565, 343, 14809,317, 14810,14812,11855,14815,7143, 2211, 5571, 14813,356, 14810,14814,14816,
- 10619,2178, 5439, 317, 6402, 5425, 381, 14819,14821,14822,427, 317, 14820,317, 371, 3284, 14824,14827,14830,362, 14831,9289, 14833,6206, 14476,14825,317,
- 11709,14826,14828,14829,990, 439, 14832,14834,14835,14839,14840,14843,12155,350, 14853,14859,12598,14862,14864,14865,14866,14870,14872,14873,14882,317, 317,
+ 10619,2178, 5439, 317, 6402, 5425, 381, 14819,14821,14822,427, 317, 14820,317, 371, 3284, 14824,14827,14830,362, 14831,9289, 14833,6206, 14476,14825,317,
+ 11709,14826,14828,14829,990, 439, 14832,14834,14835,14839,14840,14843,12155,350, 14853,14859,12598,14862,14864,14865,14866,14870,14872,14873,14882,317, 317,
350, 370, 317, 317, 14841,14842,608, 317, 317, 5538, 363, 490, 14844,9938, 14845,2391, 317, 317, 14846,14848,14847,7592, 501, 350, 14849,343, 14850,
- 14851,14852,14854,362, 5179, 14855,14856,14857,14858,343, 5447, 2024, 1345, 14860,14861,404, 14863,14867,317, 317, 317, 5295, 14868,14869,14871,384, 427,
+ 14851,14852,14854,362, 5179, 14855,14856,14857,14858,343, 5447, 2024, 1345, 14860,14861,404, 14863,14867,317, 317, 317, 5295, 14868,14869,14871,384, 427,
370, 428, 363, 14874,14444,14878,14879,2271, 14880,12423,14875,14876,14877,14881,2036, 428, 1060, 14883,7428, 14885,14887,14572,14889,14893,14897,14899,13273,
- 14900,14902,515, 14903,14906,14911,396, 11128,317, 14886,14888,466, 1453, 350, 317, 14890,14891,14892,7428, 351, 4965, 343, 363, 4965, 343, 4965, 466,
+ 14900,14902,515, 14903,14906,14911,396, 11128,317, 14886,14888,466, 1453, 350, 317, 14890,14891,14892,7428, 351, 4965, 343, 363, 4965, 343, 4965, 466,
343, 2310, 14894,14895,317, 14896,14898,4280, 317, 1358, 2410, 350, 350, 553, 14901,2108, 317, 382, 2108, 317, 11242,350, 317, 1109, 350, 317, 14904,
490, 14905,390, 14907,2171, 2219, 363, 14909,317, 14908,317, 5896, 14223,14910,419, 9182, 14912,419, 350, 350, 9909, 4738, 1033, 14915,14921,14926,14931,
14934,14937,14939,14940,14941,7473, 12417,14942,450, 14916,1999, 1345, 14917,317, 14919,14920,14918,317, 370, 5003, 14922,363, 363, 14923,949, 317, 14924,
- 3284, 14925,317, 9768, 317, 490, 14927,5223, 11769,14928,14929,14930,10543,5309, 363, 14932,14933,12422,317, 12294,317, 5570, 317, 7142, 14935,14936,362,
+ 3284, 14925,317, 9768, 317, 490, 14927,5223, 11769,14928,14929,14930,10543,5309, 363, 14932,14933,12422,317, 12294,317, 5570, 317, 7142, 14935,14936,362,
5624, 1347, 317, 14938,317, 6651, 351, 351, 351, 2004, 536, 317, 4925, 490, 3284, 317, 3361, 14943,317, 317, 12154,317, 14945,362, 14947,14949,14950,
- 14953,14954,14958,14960,317, 14961,317, 317, 380, 317, 14946,381, 370, 363, 11236,363, 14948,317, 8214, 439, 490, 339, 14951,12886,14952,10907,5662,
- 501, 5663, 4965, 350, 14955,350, 1194, 14956,5223, 317, 317, 14957,11709,317, 12668,14959,1347, 12696,4738, 362, 317, 317, 14962,14963,14964,2211, 343,
+ 14953,14954,14958,14960,317, 14961,317, 317, 380, 317, 14946,381, 370, 363, 11236,363, 14948,317, 8214, 439, 490, 339, 14951,12886,14952,10907,5662,
+ 501, 5663, 4965, 350, 14955,350, 1194, 14956,5223, 317, 317, 14957,11709,317, 12668,14959,1347, 12696,4738, 362, 317, 317, 14962,14963,14964,2211, 343,
317, 1347, 2590, 343, 14966,14971,14973,14984,1020, 551, 14967,466, 3869, 317, 590, 317, 14968,317, 14969,5911, 317, 14970,14972,5487, 1451, 317, 14974,
7866, 14975,550, 14977,14983,1998, 1998, 14976,14978,14979,317, 590, 373, 14980,14981,14982,9319, 14981,5105, 10946,317, 14986,317, 332, 14988,371, 14987,
317, 2155, 8296, 14990,7866, 4962, 14992,4965, 2222, 317, 317, 14991,332, 1943, 14994,390, 14997,15004,1109, 350, 15012,15023,15024,362, 15031,15032,15036,
15043,15048,1020, 15049,15051,332, 14995,14996,317, 317, 317, 2222, 345, 343, 317, 14998,516, 15000,15001,370, 362, 2571, 15002,1020, 317, 317, 15003,
- 11607,317, 14999,1345, 381, 1992, 6370, 317, 7651, 11933,1194, 317, 15005,15006,15007,15011,2541, 14062,4984, 7698, 350, 1194, 1347, 15008,15009,345, 317,
- 15010,7791, 317, 345, 363, 10592,15013,317, 15014,317, 15018,15019,350, 317, 15015,15017,15016,351, 15020,351, 15021,15022,15025,5626, 15026,15028,362,
- 15029,317, 15030,1453, 1999, 356, 6355, 1347, 317, 317, 15027,390, 4965, 2222, 11678,317, 317, 13715,317, 317, 2086, 15033,317, 1020, 332, 15034,1160,
+ 11607,317, 14999,1345, 381, 1992, 6370, 317, 7651, 11933,1194, 317, 15005,15006,15007,15011,2541, 14062,4984, 7698, 350, 1194, 1347, 15008,15009,345, 317,
+ 15010,7791, 317, 345, 363, 10592,15013,317, 15014,317, 15018,15019,350, 317, 15015,15017,15016,351, 15020,351, 15021,15022,15025,5626, 15026,15028,362,
+ 15029,317, 15030,1453, 1999, 356, 6355, 1347, 317, 317, 15027,390, 4965, 2222, 11678,317, 317, 13715,317, 317, 2086, 15033,317, 1020, 332, 15034,1160,
15035,490, 317, 351, 15037,541, 15041,5619, 15038,5838, 15039,15040,1347, 5355, 356, 15042,15044,15045,363, 317, 15047,15046,15050,15053,15054,351, 15068,
15071,11709,15072,15075,4976, 350, 317, 1331, 349, 15055,15060,15062,15064,15065,345, 15067,365, 3361, 15056,15059,317, 15057,1325, 15058,5399, 317, 15061,
317, 2222, 362, 317, 317, 390, 15063,15066,530, 15069,15070,15073,12731,15074,15076,5173, 15078,5054, 14132,15102,15119,15131,15133,15144,15147,15154,15157,
- 15158,15168,15170,15176,15180,15181,3987, 15187,15188,15079,15083,15085,1588, 15087,15088,15089,15091,15093,15094,15095,15096,10626,15080,317, 15081,15082,332,
+ 15158,15168,15170,15176,15180,15181,3987, 15187,15188,15079,15083,15085,1588, 15087,15088,15089,15091,15093,15094,15095,15096,10626,15080,317, 15081,15082,332,
15084,9644, 15086,3688, 2537, 5428, 317, 5439, 317, 15090,15092,15097,15101,15098,15099,15100,317, 489, 490, 15103,15105,15106,15109,15110,7871, 15113,15114,
- 15115,15116,317, 15104,6713, 748, 15107,15108,317, 317, 883, 15111,15112,1000, 317, 3529, 740, 362, 15117,15118,317, 15120,317, 15122,15124,15125,362,
+ 15115,15116,317, 15104,6713, 748, 15107,15108,317, 317, 883, 15111,15112,1000, 317, 3529, 740, 362, 15117,15118,317, 15120,317, 15122,15124,15125,362,
15126,5159, 15127,15128,15129,15130,15121,553, 530, 15123,2369, 476, 5439, 5897, 2368, 317, 633, 317, 3652, 317, 12575,7668, 15132,578, 11339,2156, 15134,
15138,6255, 15139,343, 6420, 3422, 7688, 15135,15137,15136,15140,15142,15143,15141,5570, 12846,427, 1444, 15145,15146,2060, 15148,15149,15151,15152,380, 15153,
- 15150,351, 6598, 5819, 381, 317, 317, 317, 5862, 317, 317, 15155,5570, 15156,5120, 3572, 8296, 15159,15161,15164,7192, 15165,15166,15160,590, 5105, 490,
- 15162,317, 317, 15163,5037, 317, 371, 8367, 9624, 1992, 3987, 15167,6294, 7368, 15169,320, 3599, 317, 15171,10946,15172,15173,15175,317, 15174,15177,363,
+ 15150,351, 6598, 5819, 381, 317, 317, 317, 5862, 317, 317, 15155,5570, 15156,5120, 3572, 8296, 15159,15161,15164,7192, 15165,15166,15160,590, 5105, 490,
+ 15162,317, 317, 15163,5037, 317, 371, 8367, 9624, 1992, 3987, 15167,6294, 7368, 15169,320, 3599, 317, 15171,10946,15172,15173,15175,317, 15174,15177,363,
2323, 589, 15178,15179,11388,6402, 490, 1078, 317, 15182,15184,15183,15185,15186,365, 10480,15190,15197,15198,1325, 350, 15199,15205,466, 741, 15206,15228,
- 15229,15236,15239,15240,15241,15242,15245,15261,15263,15191,15192,2571, 362, 15194,15196,6420, 15193,317, 15195,5942, 317, 633, 2058, 1347, 384, 343, 2156,
+ 15229,15236,15239,15240,15241,15242,15245,15261,15263,15191,15192,2571, 362, 15194,15196,6420, 15193,317, 15195,5942, 317, 633, 2058, 1347, 384, 343, 2156,
382, 317, 15200,15201,15203,343, 388, 317, 450, 15202,370, 7949, 490, 15204,15207,15208,15211,15212,15213,15214,15215,15218,15219,385, 15222,350, 15227,
373, 350, 356, 15209,15210,393, 1020, 317, 317, 3125, 5223, 1347, 10878,390, 15216,15217,4268, 412, 15220,15221,6729, 9081, 317, 12928,13327,15223,15226,
- 15224,6736, 15225,10022,2758, 363, 15230,15232,15235,466, 317, 5840, 317, 15231,317, 15233,6996, 320, 10877,15234,7408, 8047, 15237,15238,2156, 5849, 404,
+ 15224,6736, 15225,10022,2758, 363, 15230,15232,15235,466, 317, 5840, 317, 15231,317, 15233,6996, 320, 10877,15234,7408, 8047, 15237,15238,2156, 5849, 404,
5037, 2077, 317, 317, 5037, 345, 317, 357, 317, 351, 343, 345, 317, 317, 389, 362, 427, 8304, 12142,317, 15243,15244,466, 317, 15246,11709,15247,
15248,15249,15250,3075, 10487,363, 15254,15259,427, 370, 317, 362, 5676, 317, 1347, 382, 317, 15251,15252,15253,317, 6228, 343, 362, 15255,317, 15256,
15257,15258,317, 633, 15260,362, 317, 15262,2533, 15265,15272,15266,15267,15268,15269,15270,15271,351, 466, 343, 15274,15275,15277,15278,15286,15298,15309,
- 15316,15320,15321,15327,15329,15331,15339,15359,12994,15361,15370,15376,15379,10081,15381,15383,5423, 11055,5423, 317, 1347, 317, 15276,317, 317, 363, 9914,
+ 15316,15320,15321,15327,15329,15331,15339,15359,12994,15361,15370,15376,15379,10081,15381,15383,5423, 11055,5423, 317, 1347, 317, 15276,317, 317, 363, 9914,
15279,371, 15280,15281,15283,381, 15282,511, 317, 317, 15284,15285,1347, 15287,596, 10085,317, 2022, 350, 15295,15297,11144,15288,15289,15292,317, 10471,
- 332, 363, 381, 15290,5840, 15291,15293,466, 15294,317, 11229,2272, 15296,317, 428, 2272, 15299,15300,363, 15303,317, 15306,362, 15308,317, 317, 317,
- 2001, 317, 15301,427, 15302,15304,2155, 15305,439, 15307,6993, 15310,15312,15313,741, 12564,2271, 1347, 15314,6555, 12982,317, 15282,15311,393, 317, 3529,
+ 332, 363, 381, 15290,5840, 15291,15293,466, 15294,317, 11229,2272, 15296,317, 428, 2272, 15299,15300,363, 15303,317, 15306,362, 15308,317, 317, 317,
+ 2001, 317, 15301,427, 15302,15304,2155, 15305,439, 15307,6993, 15310,15312,15313,741, 12564,2271, 1347, 15314,6555, 12982,317, 15282,15311,393, 317, 3529,
15315,2261, 426, 317, 15317,382, 317, 2291, 15318,6228, 317, 15108,490, 5184, 15319,15322,15324,4984, 15326,15323,15325,3284, 5836, 15328,3999, 5663, 15330,
545, 15332,15333,15334,15335,5662, 317, 15337,15338,317, 363, 5662, 317, 317, 15336,427, 412, 15340,15342,396, 15344,317, 15346,15347,15348,15352,15355,
15357,2590, 15341,317, 339, 15343,15345,381, 490, 15349,365, 15350,15351,15353,15354,11442,317, 15356,15358,3284, 371, 1108, 339, 317, 15360,15362,15363,
15366,15368,5325, 2416, 317, 332, 15364,15365,6704, 332, 490, 490, 7668, 15367,332, 317, 380, 6402, 2612, 317, 332, 15369,6195, 10422,10877,317, 15371,
471, 15372,317, 382, 365, 15374,15375,15373,390, 15377,15378,343, 350, 363, 317, 3284, 396, 15380,317, 2004, 317, 8959, 1481, 1108, 15382,8274, 11280,
317, 490, 5033, 15385,15389,15395,15396,332, 15398,15400,5217, 15401,15404,15405,15407,15410,15422,15428,371, 317, 15386,990, 332, 15387,15388,15390,15392,
- 5611, 15394,15391,501, 5033, 5570, 15393,3505, 6228, 317, 6769, 5866, 317, 5836, 380, 362, 317, 317, 12487,15397,363, 1194, 1033, 1033, 380, 345, 317,
- 381, 15399,317, 15402,15403,356, 9170, 7242, 5836, 317, 9020, 15406,15408,15409,317, 3292, 2832, 15411,2077, 15413,15418,15420,15421,362, 363, 345, 7438,
- 539, 317, 15412,9657, 317, 317, 15414,15417,317, 317, 15415,15416,11965,15419,371, 4965, 382, 2074, 6036, 1020, 15423,15425,15426,426, 2391, 15424,317,
+ 5611, 15394,15391,501, 5033, 5570, 15393,3505, 6228, 317, 6769, 5866, 317, 5836, 380, 362, 317, 317, 12487,15397,363, 1194, 1033, 1033, 380, 345, 317,
+ 381, 15399,317, 15402,15403,356, 9170, 7242, 5836, 317, 9020, 15406,15408,15409,317, 3292, 2832, 15411,2077, 15413,15418,15420,15421,362, 363, 345, 7438,
+ 539, 317, 15412,9657, 317, 317, 15414,15417,317, 317, 15415,15416,11965,15419,371, 4965, 382, 2074, 6036, 1020, 15423,15425,15426,426, 2391, 15424,317,
317, 363, 7785, 371, 15427,317, 5942, 633, 362, 428, 2193, 5810, 7127, 15430,15434,15440,7618, 15442,15446,12598,15449,15450,15452,15453,15454,15475,15478,
- 15481,317, 15431,15432,15433,15435,15436,15437,317, 15438,317, 965, 15439,419, 1347, 15441,15443,15444,332, 6449, 317, 351, 332, 15445,1030, 15447,362,
- 14822,396, 3987, 317, 380, 15448,2290, 15451,317, 345, 5038, 345, 5828, 2024, 9702, 15455,419, 15456,15460,15462,15467,15470,3987, 317, 427, 6179, 5439,
- 317, 2381, 15457,11473,15458,317, 15459,15461,15463,15465,15466,15464,365, 13233,15468,466, 317, 15469,1347, 317, 5961, 393, 15471,15472,6278, 2181, 2272,
+ 15481,317, 15431,15432,15433,15435,15436,15437,317, 15438,317, 965, 15439,419, 1347, 15441,15443,15444,332, 6449, 317, 351, 332, 15445,1030, 15447,362,
+ 14822,396, 3987, 317, 380, 15448,2290, 15451,317, 345, 5038, 345, 5828, 2024, 9702, 15455,419, 15456,15460,15462,15467,15470,3987, 317, 427, 6179, 5439,
+ 317, 2381, 15457,11473,15458,317, 15459,15461,15463,15465,15466,15464,365, 13233,15468,466, 317, 15469,1347, 317, 5961, 393, 15471,15472,6278, 2181, 2272,
2551, 356, 15473,317, 439, 15474,317, 15476,15477,15479,15480,15482,15484,15487,15496,351, 15505,15507,15516,15519,15520,15537,15544,15554,15556,15586,15589,
15601,15603,15604,15605,15485,15486,2521, 15488,15492,317, 15493,15489,15490,15491,317, 14144,15494,15495,15497,15499,15501,343, 15502,15503,15498,15500,15504,
12799,15506,551, 551, 15508,345, 15511,343, 15514,15509,15510,15512,362, 2222, 317, 15513,15515,317, 15517,15518,15521,390, 15522,15524,15528,15529,15531,
15532,15533,14062,345, 2219, 317, 15523,3999, 317, 15525,9244, 15527,317, 317, 15526,351, 15530,351, 15534,363, 15535,15536,4984, 15538,15541,15539,15540,
15542,15543,15545,15546,15547,15548,5394, 3999, 317, 8544, 5991, 466, 2571, 317, 317, 15549,15553,317, 15550,15551,15552,345, 379, 15555,4268, 363, 15557,
- 15558,15561,15562,15566,396, 15567,15575,343, 15576,15577,15580,15582,15583,404, 3284, 10471,15559,345, 15560,12494,317, 15563,15504,15564,363, 2156, 6002,
+ 15558,15561,15562,15566,396, 15567,15575,343, 15576,15577,15580,15582,15583,404, 3284, 10471,15559,345, 15560,12494,317, 15563,15504,15564,363, 2156, 6002,
15565,9319, 15568,15572,15574,9319, 15569,317, 317, 15570,15571,2272, 15573,317, 2272, 317, 2073, 439, 350, 15578,15579,15509,317, 5037, 10854,317, 15581,
2271, 381, 605, 317, 15584,15585,317, 2058, 490, 2022, 362, 15587,404, 11089,427, 15588,15590,15592,15594,15597,15598,2086, 437, 343, 3987, 15591,15593,
- 373, 317, 317, 15595,381, 15596,2610, 2236, 317, 10376,317, 15599,317, 15600,15602,7490, 2058, 317, 3079, 11709,362, 317, 6808, 15607,15609,15610,363,
- 15608,317, 490, 380, 317, 365, 317, 4984, 317, 343, 317, 317, 15612,15613,15614,15617,3023, 15622,15625,350, 15626,15632,15634,15635,15636,15638,2402,
- 350, 350, 317, 1325, 350, 384, 2117, 363, 15615,6917, 15616,6021, 390, 390, 2108, 317, 15618,1347, 15619,317, 317, 15620,362, 15621,317, 2553, 5851,
- 428, 15623,15624,1160, 1992, 15627,7389, 370, 345, 15628,15629,317, 345, 317, 317, 6420, 317, 317, 317, 371, 15630,317, 15631,15633,12696,345, 4944,
- 380, 363, 466, 363, 351, 350, 15637,3884, 9175, 343, 13914,15640,466, 2022, 362, 15642,15644,6412, 10467,2222, 317, 317, 380, 15641,317, 15643,381,
+ 373, 317, 317, 15595,381, 15596,2610, 2236, 317, 10376,317, 15599,317, 15600,15602,7490, 2058, 317, 3079, 11709,362, 317, 6808, 15607,15609,15610,363,
+ 15608,317, 490, 380, 317, 365, 317, 4984, 317, 343, 317, 317, 15612,15613,15614,15617,3023, 15622,15625,350, 15626,15632,15634,15635,15636,15638,2402,
+ 350, 350, 317, 1325, 350, 384, 2117, 363, 15615,6917, 15616,6021, 390, 390, 2108, 317, 15618,1347, 15619,317, 317, 15620,362, 15621,317, 2553, 5851,
+ 428, 15623,15624,1160, 1992, 15627,7389, 370, 345, 15628,15629,317, 345, 317, 317, 6420, 317, 317, 317, 371, 15630,317, 15631,15633,12696,345, 4944,
+ 380, 363, 466, 363, 351, 350, 15637,3884, 9175, 343, 13914,15640,466, 2022, 362, 15642,15644,6412, 10467,2222, 317, 317, 380, 15641,317, 15643,381,
15645,15646,15648,15652,15659,4952, 15662,15664,15668,15670,6089, 15673,15674,15675,15676,15677,15683,427, 15684,15685,651, 15649,15650,15651,15653,15654,15655,
- 15656,15657,15658,11881,15660,15661,317, 317, 343, 15663,317, 15665,15666,404, 15667,317, 15669,1347, 317, 10820,15671,15672,5538, 390, 363, 5055, 317,
+ 15656,15657,15658,11881,15660,15661,317, 317, 343, 15663,317, 15665,15666,404, 15667,317, 15669,1347, 317, 10820,15671,15672,5538, 390, 363, 5055, 317,
7389, 9521, 2067, 1347, 404, 15678,15679,4280, 15681,363, 350, 317, 380, 343, 15680,317, 15682,4965, 9557, 15687,15688,15689,362, 15690,3987, 2108, 15691,
317, 408, 317, 11533,362, 11198,4925, 565, 14991,343, 949, 382, 317, 8178, 428, 317, 7916, 6322, 15693,15702,15694,15695,15696,15697,15698,15699,15700,
15701,15703,15706,15708,41, 15927,15928,42, 370, 43, 16240,332, 44, 16417,345, 45, 404, 16509,16523,15704,4023, 15705,15707,15709,15710,15711,15712,
15714,15717,15735,15755,15759,15760,15765,15773,317, 15791,15793,15795,15807,393, 965, 317, 15854,15871,15882,15902,15911,5862, 15914,15917,317, 2108, 15713,
- 363, 3648, 317, 15715,373, 339, 554, 15716,11539,345, 5255, 404, 10012,317, 15718,15721,15722,15723,466, 15726,1347, 317, 13174,15719,15720,11442,317,
- 8049, 332, 317, 397, 3987, 317, 351, 15724,343, 362, 317, 380, 15725,8023, 15727,15731,15732,362, 15733,317, 363, 15728,15729,15730,317, 5977, 317,
- 7055, 9914, 317, 1347, 390, 15734,320, 339, 15736,15737,15739,15740,554, 15741,15743,11236,15745,363, 12719,2391, 15746,15749,15750,15751,7590, 9809, 317,
+ 363, 3648, 317, 15715,373, 339, 554, 15716,11539,345, 5255, 404, 10012,317, 15718,15721,15722,15723,466, 15726,1347, 317, 13174,15719,15720,11442,317,
+ 8049, 332, 317, 397, 3987, 317, 351, 15724,343, 362, 317, 380, 15725,8023, 15727,15731,15732,362, 15733,317, 363, 15728,15729,15730,317, 5977, 317,
+ 7055, 9914, 317, 1347, 390, 15734,320, 339, 15736,15737,15739,15740,554, 15741,15743,11236,15745,363, 12719,2391, 15746,15749,15750,15751,7590, 9809, 317,
15738,317, 363, 5862, 317, 317, 6598, 551, 574, 15742,362, 382, 390, 317, 2108, 317, 15744,317, 15747,15748,605, 351, 6996, 15752,317, 6089, 15753,
15754,15756,11089,565, 317, 15757,15758,12109,362, 15761,404, 15763,15764,317, 343, 332, 15762,317, 1999, 356, 3999, 317, 427, 317, 15766,350, 15767,
- 2022, 15768,5616, 1347, 317, 15769,15770,15771,15772,15774,317, 15775,317, 15776,15787,15788,356, 466, 317, 6089, 317, 370, 2024, 343, 7582, 317, 551,
- 15777,2081, 15779,15780,2571, 15781,15334,15785,317, 393, 15778,339, 412, 15782,427, 15783,15784,15786,13071,596, 356, 1526, 15789,362, 15790,15792,2387,
+ 2022, 15768,5616, 1347, 317, 15769,15770,15771,15772,15774,317, 15775,317, 15776,15787,15788,356, 466, 317, 6089, 317, 370, 2024, 343, 7582, 317, 551,
+ 15777,2081, 15779,15780,2571, 15781,15334,15785,317, 393, 15778,339, 412, 15782,427, 15783,15784,15786,13071,596, 356, 1526, 15789,362, 15790,15792,2387,
466, 343, 4976, 8023, 317, 9624, 362, 317, 317, 370, 15794,317, 370, 350, 15796,15798,12815,13392,15802,15803,12565,363, 2067, 6046, 15805,3987, 15797,
- 9244, 5428, 351, 15799,15800,15801,15804,2117, 15806,15808,15810,15818,15835,2024, 15836,15837,15838,15840,15843,15845,15846,15851,427, 11236,317, 15809,6600,
+ 9244, 5428, 351, 15799,15800,15801,15804,2117, 15806,15808,15810,15818,15835,2024, 15836,15837,15838,15840,15843,15845,15846,15851,427, 11236,317, 15809,6600,
317, 4943, 15811,15812,15816,317, 317, 3751, 5571, 2322, 5439, 2537, 2521, 15813,15814,15815,1915, 2272, 15817,15819,15820,15824,15826,362, 15827,15829,14263,
- 15832,317, 2310, 15834,317, 317, 345, 15821,15822,317, 317, 2058, 317, 15823,10560,10560,317, 1347, 382, 15825,15828,317, 15830,317, 15831,3529, 317,
- 1018, 317, 317, 317, 317, 317, 317, 317, 317, 2521, 15833,11245,426, 6996, 317, 2271, 3284, 317, 317, 317, 363, 1033, 317, 331, 396, 362, 5022,
+ 15832,317, 2310, 15834,317, 317, 345, 15821,15822,317, 317, 2058, 317, 15823,10560,10560,317, 1347, 382, 15825,15828,317, 15830,317, 15831,3529, 317,
+ 1018, 317, 317, 317, 317, 317, 317, 317, 317, 2521, 15833,11245,426, 6996, 317, 2271, 3284, 317, 317, 317, 363, 1033, 317, 331, 396, 362, 5022,
1358, 15839,351, 15841,15842,5332, 12696,15844,15738,427, 371, 362, 1992, 15847,741, 12556,7672, 5332, 15850,15848,427, 15849,356, 11245,363, 426, 11245,
- 351, 2024, 15852,5661, 350, 363, 317, 15853,370, 15855,15856,9624, 15857,15859,15863,2402, 1044, 15865,15870,3987, 317, 5956, 390, 605, 15858,350, 2510,
+ 351, 2024, 15852,5661, 350, 363, 317, 15853,370, 15855,15856,9624, 15857,15859,15863,2402, 1044, 15865,15870,3987, 317, 5956, 390, 605, 15858,350, 2510,
1347, 351, 15860,5538, 317, 15861,15862,15864,551, 15866,9624, 15868,3987, 317, 7990, 380, 15571,317, 15867,317, 15869,12277,317, 363, 15872,371, 15874,
15875,1194, 7940, 15878,317, 13023,317, 15873,15876,15877,15879,363, 363, 15880,363, 317, 15881,15883,317, 4965, 15886,4591, 15888,6600, 15889,343, 15900,
15884,345, 351, 15885,490, 317, 15887,15890,317, 4965, 15892,466, 15893,15899,15891,371, 2219, 15894,7618, 2310, 15895,15896,15897,15898,15901,15903,15904,
- 15910,2110, 5611, 356, 490, 317, 317, 15905,370, 15907,15908,15909,15906,1018, 740, 317, 6228, 621, 317, 317, 370, 351, 15912,2222, 15913,466, 317,
- 8301, 501, 4965, 15915,15916,317, 404, 363, 351, 15221,363, 15918,15921,6917, 15924,15925,15919,317, 15920,317, 13392,15922,15923,317, 317, 8214, 1358,
+ 15910,2110, 5611, 356, 490, 317, 317, 15905,370, 15907,15908,15909,15906,1018, 740, 317, 6228, 621, 317, 317, 370, 351, 15912,2222, 15913,466, 317,
+ 8301, 501, 4965, 15915,15916,317, 404, 363, 351, 15221,363, 15918,15921,6917, 15924,15925,15919,317, 15920,317, 13392,15922,15923,317, 317, 8214, 1358,
5862, 3284, 15510,15926,317, 343, 637, 332, 4965, 317, 317, 15929,15972,15974,15985,15990,1481, 15995,16000,16004,553, 16025,16026,16033,363, 16060,16061,
- 16072,16083,16086,16091,16097,16099,7857, 15930,15937,317, 15953,15954,15955,15962,15969,15970,15931,15933,362, 15935,390, 15936,317, 15932,363, 15934,317,
+ 16072,16083,16086,16091,16097,16099,7857, 15930,15937,317, 15953,15954,15955,15962,15969,15970,15931,15933,362, 15935,390, 15936,317, 15932,363, 15934,317,
15938,6326, 15939,15943,15944,3999, 10487,385, 317, 15946,6736, 15952,373, 343, 1230, 15940,15942,15941,380, 6420, 317, 15945,6598, 15947,15948,15949,15950,
15951,317, 5891, 1031, 15956,356, 15957,5911, 15959,15960,15958,15961,15963,15964,8136, 15966,2571, 317, 15967,317, 373, 15965,1992, 381, 15968,15971,15973,
- 5241, 2004, 15975,15979,363, 15976,15978,363, 350, 11040,15977,380, 380, 363, 6831, 317, 15980,15982,15983,15984,317, 15981,317, 9914, 9012, 439, 370,
- 15986,15987,15989,2402, 605, 317, 11702,5213, 317, 15988,6046, 966, 15991,15992,15993,4952, 362, 317, 317, 1358, 15994,317, 1078, 363, 7231, 466, 7073,
- 363, 317, 8367, 466, 317, 15996,15998,362, 15999,539, 15997,16001,2590, 2222, 16002,16003,16005,351, 2272, 12316,362, 16008,16009,16010,16011,883, 390,
- 16006,2348, 317, 16007,7600, 9012, 13686,439, 466, 9450, 466, 390, 10471,350, 16012,16014,13607,16019,16022,6596, 466, 16023,16013,390, 6191, 16015,317,
+ 5241, 2004, 15975,15979,363, 15976,15978,363, 350, 11040,15977,380, 380, 363, 6831, 317, 15980,15982,15983,15984,317, 15981,317, 9914, 9012, 439, 370,
+ 15986,15987,15989,2402, 605, 317, 11702,5213, 317, 15988,6046, 966, 15991,15992,15993,4952, 362, 317, 317, 1358, 15994,317, 1078, 363, 7231, 466, 7073,
+ 363, 317, 8367, 466, 317, 15996,15998,362, 15999,539, 15997,16001,2590, 2222, 16002,16003,16005,351, 2272, 12316,362, 16008,16009,16010,16011,883, 390,
+ 16006,2348, 317, 16007,7600, 9012, 13686,439, 466, 9450, 466, 390, 10471,350, 16012,16014,13607,16019,16022,6596, 466, 16023,16013,390, 6191, 16015,317,
16016,16017,9012, 2108, 4949, 6204, 16018,14835,16020,16021,16024,439, 343, 7582, 363, 332, 16027,16030,6917, 350, 16032,317, 16028,16029,404, 16031,16034,
- 16035,16036,16041,16042,16045,7647, 16047,10625,16054,16055,317, 2021, 16037,16038,16040,363, 317, 633, 317, 1160, 16039,317, 317, 439, 317, 317, 362,
- 317, 317, 16043,343, 16044,16046,16048,16049,16053,363, 553, 345, 362, 16050,317, 16051,16052,371, 382, 380, 4738, 362, 317, 16056,2388, 16057,543,
- 363, 4980, 16058,317, 16059,16062,16064,1031, 7865, 16065,16068,2087, 16070,2222, 16063,317, 9938, 10820,16066,351, 363, 16067,2222, 5836, 16069,16071,317,
+ 16035,16036,16041,16042,16045,7647, 16047,10625,16054,16055,317, 2021, 16037,16038,16040,363, 317, 633, 317, 1160, 16039,317, 317, 439, 317, 317, 362,
+ 317, 317, 16043,343, 16044,16046,16048,16049,16053,363, 553, 345, 362, 16050,317, 16051,16052,371, 382, 380, 4738, 362, 317, 16056,2388, 16057,543,
+ 363, 4980, 16058,317, 16059,16062,16064,1031, 7865, 16065,16068,2087, 16070,2222, 16063,317, 9938, 10820,16066,351, 363, 16067,2222, 5836, 16069,16071,317,
350, 362, 363, 16073,16074,317, 16076,16079,317, 332, 2272, 490, 1999, 16075,1444, 501, 16077,317, 16078,317, 6228, 13670,9938, 4984, 16080,16081,16082,
- 351, 380, 16084,16085,551, 16087,16089,317, 380, 16088,448, 317, 317, 317, 317, 16090,16092,16093,16094,7401, 8976, 7477, 16095,404, 317, 317, 6123,
+ 351, 380, 16084,16085,551, 16087,16089,317, 380, 16088,448, 317, 317, 317, 317, 16090,16092,16093,16094,7401, 8976, 7477, 16095,404, 317, 317, 6123,
16096,350, 2510, 16098,16100,16003,16101,16103,16104,373, 317, 5836, 343, 16102,317, 490, 3284, 16105,16108,16113,16116,16122,16144,16149,16169,16170,16171,
- 16178,16182,16200,16201,16213,343, 16236,16237,16106,16107,348, 363, 16109,16111,3505, 1266, 317, 317, 317, 317, 4980, 317, 317, 317, 317, 332, 317,
- 317, 317, 16110,317, 317, 317, 1358, 317, 490, 16112,317, 6089, 16114,16115,7805, 382, 5328, 16117,16118,317, 317, 16119,7401, 16121,362, 12565,4980,
+ 16178,16182,16200,16201,16213,343, 16236,16237,16106,16107,348, 363, 16109,16111,3505, 1266, 317, 317, 317, 317, 4980, 317, 317, 317, 317, 332, 317,
+ 317, 317, 16110,317, 317, 317, 1358, 317, 490, 16112,317, 6089, 16114,16115,7805, 382, 5328, 16117,16118,317, 317, 16119,7401, 16121,362, 12565,4980,
9864, 15130,317, 16120,317, 381, 317, 11616,9170, 380, 16123,16124,16134,343, 16140,16142,3075, 404, 3987, 590, 16125,16126,16132,3987, 16127,16130,16131,
- 16128,16129,350, 4943, 11089,16133,16135,16136,554, 466, 11236,5809, 7688, 317, 317, 16136,16137,362, 5464, 3075, 1347, 16138,16139,7688, 317, 11783,1358,
- 16141,16143,5537, 1358, 16145,350, 380, 8083, 16147,16148,1358, 339, 16146,5991, 10877,370, 317, 363, 343, 317, 317, 490, 317, 5661, 343, 317, 404,
- 16150,2610, 16158,16160,16165,5241, 16166,16167,317, 13032,16151,16155,317, 16152,2509, 404, 16153,317, 16154,343, 1347, 16156,317, 16157,16159,362, 317,
- 362, 450, 317, 427, 5043, 317, 392, 16161,317, 8023, 16162,379, 16163,370, 362, 2571, 363, 2260, 3987, 5487, 317, 381, 16164,1109, 9244, 339, 351,
- 16168,16172,5035, 16173,8296, 15118,317, 5159, 16174,16177,16175,317, 16176,343, 5324, 936, 317, 1020, 990, 16179,9624, 543, 2022, 16180,16181,990, 5991,
- 466, 351, 16183,16188,16190,16191,16194,16195,12454,317, 16198,16199,381, 12590,16184,16185,317, 16186,16187,16189,380, 350, 3751, 10223,490, 565, 317,
- 317, 317, 16192,351, 13863,16193,343, 362, 317, 15027,356, 317, 1992, 4980, 390, 10561,345, 16196,6415, 5661, 11195,317, 16197,9624, 2022, 363, 342,
- 490, 1078, 16202,9261, 16204,16206,16207,363, 16208,16210,6318, 363, 16203,317, 345, 1358, 16205,2271, 317, 2271, 5230, 317, 370, 317, 363, 370, 363,
- 16209,363, 10820,317, 351, 13766,16211,16212,317, 317, 16214,16219,317, 389, 16221,16223,2503, 16224,16227,317, 363, 16215,490, 16216,317, 16217,1358,
- 16218,16220,16222,317, 5159, 1347, 16225,363, 16226,317, 16228,16230,16232,343, 362, 16234,16235,6600, 363, 16229,370, 1358, 1160, 16231,363, 16233,9557,
+ 16128,16129,350, 4943, 11089,16133,16135,16136,554, 466, 11236,5809, 7688, 317, 317, 16136,16137,362, 5464, 3075, 1347, 16138,16139,7688, 317, 11783,1358,
+ 16141,16143,5537, 1358, 16145,350, 380, 8083, 16147,16148,1358, 339, 16146,5991, 10877,370, 317, 363, 343, 317, 317, 490, 317, 5661, 343, 317, 404,
+ 16150,2610, 16158,16160,16165,5241, 16166,16167,317, 13032,16151,16155,317, 16152,2509, 404, 16153,317, 16154,343, 1347, 16156,317, 16157,16159,362, 317,
+ 362, 450, 317, 427, 5043, 317, 392, 16161,317, 8023, 16162,379, 16163,370, 362, 2571, 363, 2260, 3987, 5487, 317, 381, 16164,1109, 9244, 339, 351,
+ 16168,16172,5035, 16173,8296, 15118,317, 5159, 16174,16177,16175,317, 16176,343, 5324, 936, 317, 1020, 990, 16179,9624, 543, 2022, 16180,16181,990, 5991,
+ 466, 351, 16183,16188,16190,16191,16194,16195,12454,317, 16198,16199,381, 12590,16184,16185,317, 16186,16187,16189,380, 350, 3751, 10223,490, 565, 317,
+ 317, 317, 16192,351, 13863,16193,343, 362, 317, 15027,356, 317, 1992, 4980, 390, 10561,345, 16196,6415, 5661, 11195,317, 16197,9624, 2022, 363, 342,
+ 490, 1078, 16202,9261, 16204,16206,16207,363, 16208,16210,6318, 363, 16203,317, 345, 1358, 16205,2271, 317, 2271, 5230, 317, 370, 317, 363, 370, 363,
+ 16209,363, 10820,317, 351, 13766,16211,16212,317, 317, 16214,16219,317, 389, 16221,16223,2503, 16224,16227,317, 363, 16215,490, 16216,317, 16217,1358,
+ 16218,16220,16222,317, 5159, 1347, 16225,363, 16226,317, 16228,16230,16232,343, 362, 16234,16235,6600, 363, 16229,370, 1358, 1160, 16231,363, 16233,9557,
554, 4591, 350, 404, 16238,2380, 16239,16241,16242,16263,16265,16279,16293,16300,16303,16305,16306,16309,16311,16320,16321,16333,16347,2355, 317, 16369,16376,
- 16385,16395,16409,16412,16413,8412, 16243,317, 2208, 16244,16245,4591, 16248,16249,16250,343, 16251,16252,16256,2391, 16258,345, 5573, 16261,317, 7389, 2369,
- 16246,427, 16247,5273, 317, 381, 355, 11918,4253, 317, 16253,2146, 16254,16255,16257,3076, 5752, 16259,2024, 16260,2272, 3076, 16262,428, 2063, 16264,2108,
+ 16385,16395,16409,16412,16413,8412, 16243,317, 2208, 16244,16245,4591, 16248,16249,16250,343, 16251,16252,16256,2391, 16258,345, 5573, 16261,317, 7389, 2369,
+ 16246,427, 16247,5273, 317, 381, 355, 11918,4253, 317, 16253,2146, 16254,16255,16257,3076, 5752, 16259,2024, 16260,2272, 3076, 16262,428, 2063, 16264,2108,
381, 16266,16267,317, 16268,16270,16271,551, 381, 12524,16269,350, 4591, 5896, 16272,16274,14842,16275,11195,2022, 8177, 3075, 317, 404, 345, 5037, 15750,
16273,15682,5223, 5223, 317, 6596, 4591, 392, 16276,16277,13023,16278,317, 317, 10487,370, 16280,16282,16284,16285,490, 16286,16289,8296, 2391, 16292,15047,
- 1160, 883, 380, 317, 16281,1347, 351, 317, 4962, 384, 6046, 16283,382, 355, 11918,317, 362, 1358, 4925, 2366, 16287,16288,316, 316, 16290,16291,332,
- 5838, 16294,343, 16295,16297,16299,16296,16298,466, 5662, 2576, 381, 16301,362, 16302,363, 6046, 2087, 16304,490, 501, 370, 7865, 5841, 317, 317, 390,
+ 1160, 883, 380, 317, 16281,1347, 351, 317, 4962, 384, 6046, 16283,382, 355, 11918,317, 362, 1358, 4925, 2366, 16287,16288,316, 316, 16290,16291,332,
+ 5838, 16294,343, 16295,16297,16299,16296,16298,466, 5662, 2576, 381, 16301,362, 16302,363, 6046, 2087, 16304,490, 501, 370, 7865, 5841, 317, 317, 390,
490, 16307,16308,16310,605, 16312,16318,343, 317, 1194, 16313,16317,317, 16314,16315,16316,317, 990, 356, 466, 317, 16319,317, 363, 1345, 16322,16323,
- 501, 16326,9624, 16330,5661, 350, 2067, 16331,16332,2108, 16324,16325,16327,16328,16329,7792, 1347, 428, 2108, 6674, 16334,16340,351, 450, 317, 16341,317,
- 2222, 16342,343, 16344,16345,16346,16335,317, 16338,16336,16337,590, 2715, 380, 2163, 317, 317, 16339,370, 351, 553, 13638,14938,370, 363, 16343,356,
- 1020, 363, 5447, 466, 317, 317, 1077, 16348,16349,16364,343, 466, 14062,317, 565, 317, 6195, 16350,9624, 16351,16353,16355,362, 541, 16356,16363,6089,
+ 501, 16326,9624, 16330,5661, 350, 2067, 16331,16332,2108, 16324,16325,16327,16328,16329,7792, 1347, 428, 2108, 6674, 16334,16340,351, 450, 317, 16341,317,
+ 2222, 16342,343, 16344,16345,16346,16335,317, 16338,16336,16337,590, 2715, 380, 2163, 317, 317, 16339,370, 351, 553, 13638,14938,370, 363, 16343,356,
+ 1020, 363, 5447, 466, 317, 317, 1077, 16348,16349,16364,343, 466, 14062,317, 565, 317, 6195, 16350,9624, 16351,16353,16355,362, 541, 16356,16363,6089,
16352,392, 317, 16354,11229,6318, 7314, 317, 16357,16358,16359,5037, 605, 5345, 5346, 16360,16361,16362,373, 5038, 16365,9624, 16366,16367,428, 355, 16368,
- 317, 16370,1345, 317, 16372,5838, 362, 16068,16373,16375,16371,5727, 317, 317, 4591, 345, 12487,16374,5662, 2036, 590, 381, 3529, 426, 16377,16381,362,
- 317, 450, 16378,317, 16379,16380,317, 16382,1347, 317, 16383,317, 317, 16384,370, 317, 4980, 404, 370, 16386,16388,16390,317, 2021, 7214, 16393,2509,
- 16387,427, 351, 4980, 16389,16391,16392,551, 13190,551, 317, 16394,551, 10471,551, 16396,350, 16399,466, 2022, 6600, 16400,16407,317, 16397,16398,6228,
- 317, 1194, 2402, 16401,16402,9624, 16403,16404,317, 385, 15167,16405,6089, 317, 380, 317, 2156, 363, 6420, 382, 390, 13269,343, 16067,317, 633, 5897,
+ 317, 16370,1345, 317, 16372,5838, 362, 16068,16373,16375,16371,5727, 317, 317, 4591, 345, 12487,16374,5662, 2036, 590, 381, 3529, 426, 16377,16381,362,
+ 317, 450, 16378,317, 16379,16380,317, 16382,1347, 317, 16383,317, 317, 16384,370, 317, 4980, 404, 370, 16386,16388,16390,317, 2021, 7214, 16393,2509,
+ 16387,427, 351, 4980, 16389,16391,16392,551, 13190,551, 317, 16394,551, 10471,551, 16396,350, 16399,466, 2022, 6600, 16400,16407,317, 16397,16398,6228,
+ 317, 1194, 2402, 16401,16402,9624, 16403,16404,317, 385, 15167,16405,6089, 317, 380, 317, 2156, 363, 6420, 382, 390, 13269,343, 16067,317, 633, 5897,
363, 16406,5037, 16136,16408,466, 16410,404, 16411,6855, 363, 8023, 2156, 16414,16415,16416,2035, 317, 380, 490, 3284, 8178, 5836, 2719, 1830, 16418,16420,
16428,16431,16440,16441,13881,16445,2533, 2222, 16450,16451,16461,16486,16499,363, 16504,16505,16506,16419,384, 2322, 16421,16423,16426,343, 16427,317, 16422,
16422,16424,317, 633, 558, 317, 16425,317, 370, 362, 433, 7866, 7734, 317, 8364, 350, 317, 16429,16430,3987, 2222, 351, 11146,16432,16434,2152, 16437,
- 317, 16439,1998, 16433,380, 16435,2134, 362, 16436,16438,428, 466, 343, 317, 373, 2161, 551, 380, 345, 16442,317, 16444,362, 6651, 16443,362, 351,
- 7514, 363, 16446,16448,2067, 16447,16449,466, 13269,317, 2610, 16452,16454,16456,9624, 14535,16457,16459,2022, 3987, 16453,1588, 16455,2401, 596, 10223,317,
+ 317, 16439,1998, 16433,380, 16435,2134, 362, 16436,16438,428, 466, 343, 317, 373, 2161, 551, 380, 345, 16442,317, 16444,362, 6651, 16443,362, 351,
+ 7514, 363, 16446,16448,2067, 16447,16449,466, 13269,317, 2610, 16452,16454,16456,9624, 14535,16457,16459,2022, 3987, 16453,1588, 16455,2401, 596, 10223,317,
10592,2402, 4943, 16458,605, 16460,2117, 439, 5105, 317, 5223, 317, 1194, 16462,16465,16467,9624, 16473,16474,596, 16475,5213, 16477,16480,16481,16485,11040,
317, 16463,16464,990, 6855, 16466,343, 2116, 6563, 590, 1108, 6600, 16468,317, 16471,317, 16469,16470,317, 16472,371, 2004, 382, 7866, 16476,605, 14709,
11918,16478,16479,317, 350, 317, 381, 1266, 317, 2077, 317, 317, 317, 16482,8023, 363, 16483,4982, 16484,16487,317, 16489,16494,365, 4984, 965, 16495,
- 16497,16498,2322, 16488,5570, 317, 5464, 466, 2571, 16490,16493,317, 16491,16492,16496,590, 15618,317, 351, 478, 9938, 16500,317, 350, 16503,3236, 363,
- 2108, 3573, 16501,16502,370, 12134,5343, 345, 16507,317, 16508,4773, 3284, 16510,6713, 16513,4965, 901, 5537, 317, 490, 350, 16514,16519,4980, 16522,427,
+ 16497,16498,2322, 16488,5570, 317, 5464, 466, 2571, 16490,16493,317, 16491,16492,16496,590, 15618,317, 351, 478, 9938, 16500,317, 350, 16503,3236, 363,
+ 2108, 3573, 16501,16502,370, 12134,5343, 345, 16507,317, 16508,4773, 3284, 16510,6713, 16513,4965, 901, 5537, 317, 490, 350, 16514,16519,4980, 16522,427,
16511,1347, 6228, 317, 317, 317, 490, 16512,317, 363, 596, 363, 345, 16515,16516,2222, 16518,317, 4976, 317, 16517,1345, 16520,16521,9234, 363, 16524,
- 16529,16532,11146,317, 371, 16525,16526,16527,8296, 3284, 16528,16530,13638,490, 16531,371, 8296, 16533,16534,16535,7127, 339, 317, 16537,16540,2553, 380,
+ 16529,16532,11146,317, 371, 16525,16526,16527,8296, 3284, 16528,16530,13638,490, 16531,371, 8296, 16533,16534,16535,7127, 339, 317, 16537,16540,2553, 380,
16538,16539,339, 5732, 16542,16543,16544,16557,16634,16673,16696,16709,16726,16733,16743,16755,16765,16831,16847,16893,16903,16907,47, 17052,17122,3023, 17172,
- 17175,17178,17184,16545,16546,16553,2572, 16554,16556,10081,381, 16547,4965, 16549,16550,1160, 16548,6996, 633, 317, 317, 633, 317, 7477, 2077, 317, 362,
+ 17175,17178,17184,16545,16546,16553,2572, 16554,16556,10081,381, 16547,4965, 16549,16550,1160, 16548,6996, 633, 317, 317, 633, 317, 7477, 2077, 317, 362,
317, 1160, 1267, 317, 16551,466, 317, 317, 3599, 16552,5942, 317, 16555,371, 6629, 401, 16558,16563,16576,16577,332, 16595,16627,317, 16629,16631,16632,
16559,16560,363, 867, 16561,317, 16562,16564,16566,16568,16569,16572,317, 16573,317, 16565,16567,2178, 363, 8765, 16570,16571,5482, 317, 16574,16575,16578,
- 16583,16584,16586,16588,332, 10845,16590,7490, 6628, 16591,8957, 16592,16579,362, 16580,16582,350, 5616, 16581,363, 5898, 2586, 365, 16585,363, 5223, 2322,
+ 16583,16584,16586,16588,332, 10845,16590,7490, 6628, 16591,8957, 16592,16579,362, 16580,16582,350, 5616, 16581,363, 5898, 2586, 365, 16585,363, 5223, 2322,
590, 10538,16587,6628, 16589,343, 5663, 2236, 15221,9059, 351, 16593,16594,637, 16596,16597,558, 16599,16603,16604,16608,16613,16615,16618,16619,16621,16622,
- 16623,16624,1160, 16598,2066, 605, 332, 16600,12934,317, 16601,16602,317, 11089,317, 317, 16605,355, 16607,11918,349, 317, 16606,363, 404, 363, 6629,
- 363, 317, 16609,16610,16611,16612,11229,16614,3999, 317, 317, 1347, 317, 317, 16616,404, 16617,2298, 9609, 13028,11654,351, 16620,2163, 7368, 317, 3869,
+ 16623,16624,1160, 16598,2066, 605, 332, 16600,12934,317, 16601,16602,317, 11089,317, 317, 16605,355, 16607,11918,349, 317, 16606,363, 404, 363, 6629,
+ 363, 317, 16609,16610,16611,16612,11229,16614,3999, 317, 317, 1347, 317, 317, 16616,404, 16617,2298, 9609, 13028,11654,351, 16620,2163, 7368, 317, 3869,
1020, 363, 350, 16593,16625,578, 16626,16628,16630,371, 371, 16633,11347,842, 16635,16636,16646,16648,16652,16653,343, 16655,5683, 16658,16660,16661,16579,
- 16663,490, 16665,317, 16668,317, 1479, 317, 16637,16638,16639,16641,16642,382, 317, 16644,6596, 11938,16640,5249, 1347, 5861, 16643,637, 16645,1267, 317,
- 317, 317, 317, 317, 8301, 2631, 2077, 558, 317, 1044, 317, 637, 1267, 16647,317, 317, 490, 16649,16651,317, 16650,448, 356, 466, 317, 332, 343,
+ 16663,490, 16665,317, 16668,317, 1479, 317, 16637,16638,16639,16641,16642,382, 317, 16644,6596, 11938,16640,5249, 1347, 5861, 16643,637, 16645,1267, 317,
+ 317, 317, 317, 317, 8301, 2631, 2077, 558, 317, 1044, 317, 637, 1267, 16647,317, 317, 490, 16649,16651,317, 16650,448, 356, 466, 317, 332, 343,
16654,390, 317, 2067, 2108, 16656,466, 16657,343, 370, 16659,371, 8296, 317, 10471,16662,16664,16666,7651, 5810, 16667,16669,16671,317, 5836, 16670,16672,
16674,16677,16678,16681,365, 16682,16689,16692,16694,16675,2188, 16676,350, 350, 317, 3648, 350, 16679,350, 16680,351, 362, 351, 2222, 490, 605, 16683,
- 5241, 2222, 466, 1347, 16686,5032, 16687,317, 16684,16685,7577, 16688,14572,8083, 16690,16691,16693,3648, 466, 317, 351, 317, 605, 16695,466, 16697,1020,
- 16708,404, 16698,16701,16703,1020, 16705,317, 427, 16706,317, 16699,317, 16700,317, 5273, 16702,317, 317, 16704,1358, 5055, 356, 16707,317, 1011, 3869,
- 317, 651, 317, 490, 5481, 356, 16710,558, 16713,16714,317, 345, 16718,16720,7384, 345, 16721,16725,332, 2066, 490, 16711,16712,2715, 8563, 8274, 363,
- 15323,381, 343, 16715,16717,1345, 317, 317, 16716,317, 356, 343, 317, 317, 1347, 1992, 6546, 16719,2272, 365, 363, 9293, 16722,16724,1160, 16723,2178,
- 612, 574, 16727,16728,5662, 16729,16732,16730,16731,16734,317, 16735,16736,317, 16738,16741,16737,345, 317, 2510, 9648, 317, 1060, 16739,317, 16740,363,
- 16742,2809, 363, 16744,16745,16752,13638,9357, 16753,16746,16750,949, 16747,16748,16749,16751,317, 16754,16756,351, 16757,16760,12616,16761,2948, 317, 2177,
+ 5241, 2222, 466, 1347, 16686,5032, 16687,317, 16684,16685,7577, 16688,14572,8083, 16690,16691,16693,3648, 466, 317, 351, 317, 605, 16695,466, 16697,1020,
+ 16708,404, 16698,16701,16703,1020, 16705,317, 427, 16706,317, 16699,317, 16700,317, 5273, 16702,317, 317, 16704,1358, 5055, 356, 16707,317, 1011, 3869,
+ 317, 651, 317, 490, 5481, 356, 16710,558, 16713,16714,317, 345, 16718,16720,7384, 345, 16721,16725,332, 2066, 490, 16711,16712,2715, 8563, 8274, 363,
+ 15323,381, 343, 16715,16717,1345, 317, 317, 16716,317, 356, 343, 317, 317, 1347, 1992, 6546, 16719,2272, 365, 363, 9293, 16722,16724,1160, 16723,2178,
+ 612, 574, 16727,16728,5662, 16729,16732,16730,16731,16734,317, 16735,16736,317, 16738,16741,16737,345, 317, 2510, 9648, 317, 1060, 16739,317, 16740,363,
+ 16742,2809, 363, 16744,16745,16752,13638,9357, 16753,16746,16750,949, 16747,16748,16749,16751,317, 16754,16756,351, 16757,16760,12616,16761,2948, 317, 2177,
16758,16759,16762,16763,339, 2035, 2317, 16764,3284, 11146,5836, 16766,16769,6763, 16773,16775,16776,16777,16780,16782,16784,16786,16825,596, 16826,404, 16827,
- 16829,362, 490, 317, 1325, 1108, 16767,16768,16770,317, 4564, 16771,345, 16772,16774,351, 10189,16778,6546, 3999, 1020, 8281, 16779,5687, 8214, 317, 371,
- 317, 16781,11198,5428, 490, 8311, 16783,2021, 16137,16785,2022, 317, 16787,6531, 16789,16794,16798,2063, 16803,16805,9420, 16807,16812,16814,16815,16817,384,
- 16821,16824,356, 16788,16790,16791,16792,16793,317, 317, 317, 317, 317, 317, 317, 317, 1160, 356, 317, 16795,16796,317, 317, 317, 3987, 317, 5055,
+ 16829,362, 490, 317, 1325, 1108, 16767,16768,16770,317, 4564, 16771,345, 16772,16774,351, 10189,16778,6546, 3999, 1020, 8281, 16779,5687, 8214, 317, 371,
+ 317, 16781,11198,5428, 490, 8311, 16783,2021, 16137,16785,2022, 317, 16787,6531, 16789,16794,16798,2063, 16803,16805,9420, 16807,16812,16814,16815,16817,384,
+ 16821,16824,356, 16788,16790,16791,16792,16793,317, 317, 317, 317, 317, 317, 317, 317, 1160, 356, 317, 16795,16796,317, 317, 317, 3987, 317, 5055,
16797,317, 317, 16799,2077, 16800,16801,16802,16804,5447, 16806,363, 317, 5223, 2368, 351, 7079, 317, 16808,16809,16810,16811,16813,4943, 363, 1060, 16816,
363, 343, 382, 6228, 651, 5108, 16818,16819,16820,16822,16823,317, 8301, 466, 371, 362, 490, 317, 5428, 16828,362, 404, 406, 11654,16830,16832,16833,
- 16839,16840,16841,1962, 14462,16844,16846,16834,16835,16838,317, 490, 10454,16836,466, 16837,551, 384, 16842,16843,2568, 350, 16845,10422,466, 3078, 317,
+ 16839,16840,16841,1962, 14462,16844,16846,16834,16835,16838,317, 490, 10454,16836,466, 16837,551, 384, 16842,16843,2568, 350, 16845,10422,466, 3078, 317,
345, 317, 363, 11089,5105, 7055, 16848,16850,16872,16873,16878,16879,16881,16884,16887,2134, 16890,2022, 317, 16849,317, 5865, 16851,16852,16865,16866,16868,
- 16869,317, 6420, 5896, 343, 382, 317, 317, 16853,16855,574, 16854,16856,16860,7801, 2631, 16861,3236, 5400, 16857,16858,16859,16862,16863,16864,16867,466,
+ 16869,317, 6420, 5896, 343, 382, 317, 317, 16853,16855,574, 16854,16856,16860,7801, 2631, 16861,3236, 5400, 16857,16858,16859,16862,16863,16864,16867,466,
363, 384, 16870,16871,16874,16876,16877,1962, 343, 5492, 317, 317, 16875,5255, 317, 651, 317, 5055, 317, 7419, 7401, 16651,2022, 1708, 317, 16880,11654,
- 16882,317, 16883,3573, 382, 6228, 317, 10149,317, 16885,363, 16886,317, 1020, 16888,9648, 350, 363, 2584, 317, 4984, 317, 16889,317, 16891,490, 1060,
+ 16882,317, 16883,3573, 382, 6228, 317, 10149,317, 16885,363, 16886,317, 1020, 16888,9648, 350, 363, 2584, 317, 4984, 317, 16889,317, 16891,490, 1060,
16892,14837,332, 317, 16894,343, 16902,16895,16899,16900,16896,3503, 14920,5570, 16897,16898,2171, 332, 16901,5968, 356, 317, 317, 16904,16905,16906,16908,
16909,16913,16918,16928,16935,16942,16943,16965,16971,317, 16974,16990,16998,17002,17013,17014,490, 17015,17028,17035,17044,2271, 17047,17049,17051,16910,16911,
317, 16912,317, 5570, 365, 16914,7590, 16916,16917,9914, 317, 317, 10592,343, 16915,317, 16919,16925,16926,10317,16920,16921,16922,16924,380, 345, 10820,
- 16923,380, 433, 16927,317, 16929,1358, 16933,362, 16934,543, 362, 2134, 380, 16930,16932,10820,317, 356, 16931,371, 351, 1358, 317, 381, 16936,5105,
- 317, 16941,489, 16937,16938,317, 317, 16939,16940,5201, 7242, 12291,6598, 551, 16944,6203, 16945,16947,16951,16952,16954,16955,362, 350, 16956,16958,317,
- 16960,16962,317, 370, 317, 7509, 317, 16946,345, 317, 16948,13905,16949,16950,11962,317, 351, 4952, 365, 12287,317, 317, 363, 1078, 16953,2510, 2022,
- 317, 5917, 6831, 6122, 363, 317, 16957,317, 363, 317, 2272, 9609, 12288,16959,396, 343, 16961,5570, 16963,16964,16966,16970,16967,317, 16969,16968,317,
- 11342,16972,10592,5464, 16973,16704,554, 317, 16975,11158,16976,16977,16983,16986,362, 8296, 16988,363, 317, 5223, 317, 11962,317, 16978,355, 16980,349,
+ 16923,380, 433, 16927,317, 16929,1358, 16933,362, 16934,543, 362, 2134, 380, 16930,16932,10820,317, 356, 16931,371, 351, 1358, 317, 381, 16936,5105,
+ 317, 16941,489, 16937,16938,317, 317, 16939,16940,5201, 7242, 12291,6598, 551, 16944,6203, 16945,16947,16951,16952,16954,16955,362, 350, 16956,16958,317,
+ 16960,16962,317, 370, 317, 7509, 317, 16946,345, 317, 16948,13905,16949,16950,11962,317, 351, 4952, 365, 12287,317, 317, 363, 1078, 16953,2510, 2022,
+ 317, 5917, 6831, 6122, 363, 317, 16957,317, 363, 317, 2272, 9609, 12288,16959,396, 343, 16961,5570, 16963,16964,16966,16970,16967,317, 16969,16968,317,
+ 11342,16972,10592,5464, 16973,16704,554, 317, 16975,11158,16976,16977,16983,16986,362, 8296, 16988,363, 317, 5223, 317, 11962,317, 16978,355, 16980,349,
16979,5917, 16981,16982,16984,381, 16985,317, 439, 16987,605, 317, 16989,16991,16993,16995,384, 14883,404, 15334,317, 343, 16992,317, 490, 4943, 16994,
10820,317, 317, 363, 10376,343, 16996,404, 16997,2060, 554, 404, 16999,17000,2260, 317, 317, 349, 9609, 17001,17003,17004,554, 17005,2022, 17009,17010,
- 17011,427, 5809, 370, 6600, 356, 317, 356, 390, 4943, 317, 6831, 380, 6420, 1347, 11962,317, 345, 317, 17006,17008,17007,356, 2261, 2310, 5037, 5809,
+ 17011,427, 5809, 370, 6600, 356, 317, 356, 390, 4943, 317, 6831, 380, 6420, 1347, 11962,317, 345, 317, 17006,17008,17007,356, 2261, 2310, 5037, 5809,
17012,350, 317, 1347, 343, 466, 317, 317, 17016,17017,11716,17020,17024,317, 17027,317, 343, 380, 356, 317, 17018,317, 317, 17019,17021,990, 17022,
- 471, 380, 5538, 1347, 17023,317, 12860,490, 1347, 17025,17026,345, 466, 317, 380, 317, 1347, 17029,17030,17031,7785, 17032,363, 17034,14663,12766,317,
+ 471, 380, 5538, 1347, 17023,317, 12860,490, 1347, 17025,17026,345, 466, 317, 380, 317, 1347, 17029,17030,17031,7785, 17032,363, 17034,14663,12766,317,
6674, 17033,1020, 466, 363, 317, 363, 17036,17037,437, 6002, 17040,362, 350, 17041,17042,17043,380, 17038,17039,317, 17045,17046,6600, 371, 428, 17048,
2063, 371, 16288,17050,466, 13611,427, 11347,17053,17057,17059,17063,17064,17066,17084,17096,17100,17101,2211, 965, 17103,17111,7703, 17119,17120,7850, 17054,
- 17055,317, 356, 490, 2222, 17056,6021, 363, 17058,317, 427, 1347, 17060,17061,17062,6607, 9422, 4965, 5662, 350, 351, 371, 317, 362, 17065,317, 317,
- 317, 4974, 4591, 17067,370, 17068,17069,17071,490, 17072,17073,12565,17076,17078,6598, 17080,317, 317, 317, 351, 15618,317, 317, 317, 17070,578, 2156,
- 332, 317, 10878,439, 363, 17074,17075,350, 317, 9274, 382, 363, 17077,17079,356, 17081,15221,17082,384, 17083,317, 17085,17086,17087,17095,317, 317,
- 317, 381, 17088,317, 490, 17089,17090,8464, 345, 10149,17091,17093,17092,515, 2551, 971, 17094,17097,17099,15986,17098,317, 351, 355, 17102,17104,419,
- 17105,17107,17109,350, 5662, 17110,2503, 317, 365, 356, 317, 17106,317, 5223, 317, 317, 5896, 317, 12943,17108,17112,17114,17116,472, 1347, 317, 317,
+ 17055,317, 356, 490, 2222, 17056,6021, 363, 17058,317, 427, 1347, 17060,17061,17062,6607, 9422, 4965, 5662, 350, 351, 371, 317, 362, 17065,317, 317,
+ 317, 4974, 4591, 17067,370, 17068,17069,17071,490, 17072,17073,12565,17076,17078,6598, 17080,317, 317, 317, 351, 15618,317, 317, 317, 17070,578, 2156,
+ 332, 317, 10878,439, 363, 17074,17075,350, 317, 9274, 382, 363, 17077,17079,356, 17081,15221,17082,384, 17083,317, 17085,17086,17087,17095,317, 317,
+ 317, 381, 17088,317, 490, 17089,17090,8464, 345, 10149,17091,17093,17092,515, 2551, 971, 17094,17097,17099,15986,17098,317, 351, 355, 17102,17104,419,
+ 17105,17107,17109,350, 5662, 17110,2503, 317, 365, 356, 317, 17106,317, 5223, 317, 317, 5896, 317, 12943,17108,17112,17114,17116,472, 1347, 317, 317,
317, 17113,385, 6355, 5028, 5028, 317, 17115,637, 1300, 5942, 317, 633, 649, 633, 317, 351, 17117,17118,345, 1531, 428, 17121,12423,343, 2074, 17123,
- 17125,17129,17131,17132,17134,362, 350, 17135,17137,17139,17140,362, 380, 17171,365, 317, 15539,317, 490, 17124,356, 317, 490, 317, 380, 17126,317,
- 17127,343, 332, 317, 317, 17128,11144,317, 16186,317, 17130,316, 317, 7698, 418, 17133,16416,345, 439, 15646,5055, 317, 17136,17138,384, 363, 317,
+ 17125,17129,17131,17132,17134,362, 350, 17135,17137,17139,17140,362, 380, 17171,365, 317, 15539,317, 490, 17124,356, 317, 490, 317, 380, 17126,317,
+ 17127,343, 332, 317, 317, 17128,11144,317, 16186,317, 17130,316, 317, 7698, 418, 17133,16416,345, 439, 15646,5055, 317, 17136,17138,384, 363, 317,
17141,8301, 17143,17155,17156,17159,343, 17161,17162,17164,17165,14910,17167,17170,381, 317, 5571, 17142,317, 317, 17144,317, 1160, 17145,14202,356, 17147,
8137, 2022, 17152,385, 17153,5809, 317, 17146,6600, 380, 4943, 17148,17150,578, 17149,596, 17151,317, 388, 12303,1588, 17154,514, 384, 17157,2155, 17158,
350, 17160,489, 4965, 434, 363, 17163,351, 14535,5962, 2290, 17166,317, 356, 466, 1160, 17033,17168,384, 476, 427, 317, 17169,317, 12696,343, 13611,
@@ -7055,151 +7050,151 @@ static const unsigned int ChildLocs[185261] =
17200,17201,17202,17203,17204,17206,17208,17218,17220,17222,17226,12556,7438, 554, 5537, 17230,17232,362, 17234,17237,17238,17243,17252,17258,17263,17264,17266,
17209,17212,317, 317, 5223, 5464, 17217,17210,17211,17213,17214,17215,17216,17219,2086, 2107, 17221,971, 439, 17223,17224,17225,17227,5856, 317, 17228,17229,
17231,8296, 17233,9450, 2272, 2845, 439, 356, 1347, 427, 4980, 9450, 317, 10476,17235,5332, 17236,317, 1358, 8137, 17239,1060, 17241,17240,17242,17244,17245,
- 351, 343, 17246,2022, 17250,17251,427, 17247,17248,17249,1347, 12417,317, 342, 17253,17257,17254,17256,17255,2280, 5332, 17259,17260,17262,10664,6713, 317,
- 17261,17265,2509, 1347, 17267,17268,17269,17270,17272,17274,17275,17278,17280,10984,17288,17291,17298,17309,17313,49, 18743,18776,18787,56, 19071,19099,57,
+ 351, 343, 17246,2022, 17250,17251,427, 17247,17248,17249,1347, 12417,317, 342, 17253,17257,17254,17256,17255,2280, 5332, 17259,17260,17262,10664,6713, 317,
+ 17261,17265,2509, 1347, 17267,17268,17269,17270,17272,17274,17275,17278,17280,10984,17288,17291,17298,17309,17313,49, 18743,18776,18787,56, 19071,19099,57,
61, 20425,20456,62, 20780,20794,64, 22684,22690,70, 23127,23142,73, 23459,23478,23484,23496,23618,412, 17273,4797, 17276,4797, 17277,740, 17279,17281,
17283,17287,2058, 17282,350, 17284,17285,17286,17289,17290,17292,17295,17293,17294,17296,17297,17299,17300,17305,17301,17302,17303,17304,17306,17307,17308,17310,
17311,17312,17314,17320,17315,17316,17317,17318,17319,17321,17274,17322,17324,17372,17393,17426,17450,17472,17483,17495,17509,17515,50, 51, 52, 17937,17940,
- 18046,53, 54, 55, 18656,18685,18719,18725,18726,18733,317, 7657, 317, 17323,17325,17327,17337,17341,17342,17348,17355,17359,17364,317, 17371,17326,6991,
+ 18046,53, 54, 55, 18656,18685,18719,18725,18726,18733,317, 7657, 317, 17323,17325,17327,17337,17341,17342,17348,17355,17359,17364,317, 17371,17326,6991,
317, 17328,317, 17331,17336,5325, 590, 17329,17330,317, 9595, 317, 17332,17333,17334,317, 9186, 17335,345, 348, 4268, 4591, 17338,428, 343, 343, 17339,
- 17340,343, 17343,17344,17346,17347,17345,867, 4984, 317, 539, 332, 17349,332, 17351,17352,490, 17350,343, 332, 345, 596, 317, 8301, 490, 17353,317,
+ 17340,343, 17343,17344,17346,17347,17345,867, 4984, 317, 539, 332, 17349,332, 17351,17352,490, 17350,343, 332, 345, 596, 317, 8301, 490, 17353,317,
345, 17354,16092,317, 317, 17356,466, 317, 16401,901, 362, 317, 317, 17357,1230, 17358,317, 17360,363, 317, 17361,17363,5760, 343, 17362,17365,17367,
- 17369,363, 1078, 17366,1109, 490, 490, 17368,6394, 2142, 365, 17370,2086, 6763, 17373,17376,9623, 17383,17386,17389,17390,17392,317, 343, 317, 317, 317,
- 17374,5624, 17375,363, 17377,17379,17378,6195, 17380,17382,17381,351, 17384,466, 17385,317, 7579, 490, 5238, 867, 317, 17387,17388,965, 2117, 472, 8296,
- 17391,7791, 317, 6050, 17394,17395,7055, 17399,17402,17408,17409,17411,17414,17415,17416,17417,17420,17422,317, 3941, 17396,17397,2510, 17398,17400,17401,343,
- 317, 1160, 371, 1347, 362, 317, 17403,17404,17407,317, 1347, 17405,17406,1347, 2156, 11089,490, 17410,343, 7990, 362, 17412,317, 17413,363, 363, 741,
- 345, 396, 362, 8771, 574, 317, 17418,17419,2134, 17421,17423,428, 17424,7190, 17425,566, 363, 17427,3645, 17430,17435,17441,17446,17449,317, 17428,427,
+ 17369,363, 1078, 17366,1109, 490, 490, 17368,6394, 2142, 365, 17370,2086, 6763, 17373,17376,9623, 17383,17386,17389,17390,17392,317, 343, 317, 317, 317,
+ 17374,5624, 17375,363, 17377,17379,17378,6195, 17380,17382,17381,351, 17384,466, 17385,317, 7579, 490, 5238, 867, 317, 17387,17388,965, 2117, 472, 8296,
+ 17391,7791, 317, 6050, 17394,17395,7055, 17399,17402,17408,17409,17411,17414,17415,17416,17417,17420,17422,317, 3941, 17396,17397,2510, 17398,17400,17401,343,
+ 317, 1160, 371, 1347, 362, 317, 17403,17404,17407,317, 1347, 17405,17406,1347, 2156, 11089,490, 17410,343, 7990, 362, 17412,317, 17413,363, 363, 741,
+ 345, 396, 362, 8771, 574, 317, 17418,17419,2134, 17421,17423,428, 17424,7190, 17425,566, 363, 17427,3645, 17430,17435,17441,17446,17449,317, 17428,427,
17429,17431,17432,17433,17434,17436,17437,17438,17439,17440,8096, 17442,17444,8120, 17443,17445,17447,351, 741, 17448,6996, 5217, 317, 17451,1639, 17455,17458,
17469,17470,5570, 17452,5325, 17453,317, 17454,317, 17456,17457,17459,17463,343, 1530, 17460,17461,17462,317, 17464,17466,17468,317, 17465,2601, 317, 17467,
370, 370, 317, 17471,17473,17474,8419, 5711, 17478,17480,17481,317, 17475,317, 317, 317, 17476,17477,1345, 17479,2178, 12751,345, 17482,17484,17486,17488,
317, 17491,17493,490, 17485,317, 6318, 317, 317, 17487,490, 1033, 17489,317, 17490,5241, 17492,345, 17494,5687, 17496,17497,17498,17501,17502,17504,17505,
17506,17508,345, 7657, 490, 490, 7399, 5238, 345, 17499,381, 351, 350, 17500,381, 1347, 17503,404, 343, 317, 317, 317, 1347, 1347, 7916, 363, 17507,
- 317, 343, 5055, 6504, 11548,317, 17510,867, 17513,490, 363, 17514,317, 17511,317, 17512,426, 4591, 11266,8682, 17516,7850, 17517,317, 12302,10471,7892,
- 17518,17537,17539,17548,17556,17562,17563,17566,17567,17598,17599,17634,17638,17643,17659,17661,17662,17671,17673,15750,17681,17684,17519,362, 317, 362, 345,
- 17523,17524,12226,17532,17533,17534,1230, 17536,17520,317, 17521,317, 11582,17522,5217, 317, 343, 489, 17525,490, 317, 17527,17528,345, 17526,317, 5328,
- 317, 343, 8572, 17529,17530,17531,3751, 332, 345, 17535,17538,2510, 381, 17540,7514, 17544,9244, 17545,17541,332, 317, 17542,13314,17543,5570, 5439, 5570,
- 12463,317, 343, 427, 17546,17547,5547, 317, 345, 17549,17552,17555,404, 3987, 317, 17550,317, 17551,2272, 10946,2110, 17553,17554,6195, 363, 6063, 404,
+ 317, 343, 5055, 6504, 11548,317, 17510,867, 17513,490, 363, 17514,317, 17511,317, 17512,426, 4591, 11266,8682, 17516,7850, 17517,317, 12302,10471,7892,
+ 17518,17537,17539,17548,17556,17562,17563,17566,17567,17598,17599,17634,17638,17643,17659,17661,17662,17671,17673,15750,17681,17684,17519,362, 317, 362, 345,
+ 17523,17524,12226,17532,17533,17534,1230, 17536,17520,317, 17521,317, 11582,17522,5217, 317, 343, 489, 17525,490, 317, 17527,17528,345, 17526,317, 5328,
+ 317, 343, 8572, 17529,17530,17531,3751, 332, 345, 17535,17538,2510, 381, 17540,7514, 17544,9244, 17545,17541,332, 317, 17542,13314,17543,5570, 5439, 5570,
+ 12463,317, 343, 427, 17546,17547,5547, 317, 345, 17549,17552,17555,404, 3987, 317, 17550,317, 17551,2272, 10946,2110, 17553,17554,6195, 363, 6063, 404,
6089, 317, 6227, 17557,2177, 2271, 17560,7143, 317, 490, 6179, 317, 17558,17559,5896, 17561,2510, 351, 2272, 520, 343, 2419, 17564,351, 17565,5205, 15667,
- 17568,17572,490, 17573,17575,17582,490, 17585,17587,17589,17592,2178, 17596,357, 363, 2510, 17569,17571,17570,1347, 317, 3111, 14535,17574,332, 1358, 317,
+ 17568,17572,490, 17573,17575,17582,490, 17585,17587,17589,17592,2178, 17596,357, 363, 2510, 17569,17571,17570,1347, 317, 3111, 14535,17574,332, 1358, 317,
5570, 317, 17576,17577,17578,17579,17580,17581,1347, 10114,345, 2178, 17583,17584,1588, 490, 363, 17586,17588,2178, 2510, 17590,332, 17591,317, 317, 17593,
- 317, 17594,317, 17595,17597,694, 928, 17600,5960, 17605,17608,343, 362, 17629,17631,17633,317, 17601,332, 17602,15837,345, 317, 17603,317, 17604,317,
- 343, 1230, 16825,317, 317, 2177, 6849, 17606,317, 17607,317, 317, 317, 14865,317, 17609,8367, 17611,15837,17616,17617,17618,17627,5003, 17610,2117, 6761,
+ 317, 17594,317, 17595,17597,694, 928, 17600,5960, 17605,17608,343, 362, 17629,17631,17633,317, 17601,332, 17602,15837,345, 317, 17603,317, 17604,317,
+ 343, 1230, 16825,317, 317, 2177, 6849, 17606,317, 17607,317, 317, 317, 14865,317, 17609,8367, 17611,15837,17616,17617,17618,17627,5003, 17610,2117, 6761,
17612,317, 17613,17614,17615,2510, 339, 317, 343, 17619,17624,17620,17621,17622,17623,17625,17626,363, 17628,317, 4965, 317, 17630,317, 741, 6670, 11055,
- 363, 17632,17635,466, 370, 2571, 17636,317, 17637,363, 4984, 17639,371, 17640,17641,17642,17644,5517, 17647,361, 17648,17650,5908, 17655,17658,3987, 317,
+ 363, 17632,17635,466, 370, 2571, 17636,317, 17637,363, 4984, 17639,371, 17640,17641,17642,17644,5517, 17647,361, 17648,17650,5908, 17655,17658,3987, 317,
17645,17646,343, 3236, 17649,17651,317, 1347, 17652,17653,17654,17656,17657,363, 418, 17660,12879,317, 17663,17668,9175, 363, 17669,8419, 17664,17665,17666,
- 17667,17670,17672,490, 490, 17674,17676,17679,317, 2086, 7668, 17675,3751, 5325, 317, 17677,381, 17678,317, 2715, 317, 2022, 4980, 317, 2142, 17680,6996,
+ 17667,17670,17672,490, 490, 17674,17676,17679,317, 2086, 7668, 17675,3751, 5325, 317, 17677,381, 17678,317, 2715, 317, 2022, 4980, 317, 2142, 17680,6996,
633, 317, 10347,317, 17682,317, 17683,17685,6188, 6535, 342, 13338,17686,17700,17714,501, 17716,17732,17735,1020, 17740,17744,17746,17753,17790,17792,17795,
- 17687,2416, 11163,317, 317, 17688,17689,17691,17699,17690,2416, 317, 17692,490, 17694,17695,17696,17697,17693,490, 5611, 332, 2142, 596, 317, 718, 317,
+ 17687,2416, 11163,317, 317, 17688,17689,17691,17699,17690,2416, 317, 17692,490, 17694,17695,17696,17697,17693,490, 5611, 332, 2142, 596, 317, 718, 317,
345, 17698,17701,17702,17704,343, 17706,17707,17712,12769,5105, 17703,2022, 1347, 3987, 17705,317, 9048, 2272, 5120, 317, 17708,17711,4984, 317, 17709,17710,
363, 17713,351, 427, 17715,637, 332, 17717,17725,17469,1347, 17726,317, 6228, 1194, 404, 2024, 17718,17719,17720,317, 9779, 17721,1160, 17722,17723,17724,
- 17727,2035, 5570, 15143,17728,317, 10149,332, 317, 490, 12423,317, 17729,17730,363, 17731,17733,6598, 17734,317, 990, 317, 17736,17739,363, 343, 490,
- 317, 381, 17737,317, 1160, 17738,317, 317, 345, 867, 7383, 1347, 17741,11654,343, 363, 317, 371, 317, 17742,17743,317, 489, 17745,345, 17747,317,
+ 17727,2035, 5570, 15143,17728,317, 10149,332, 317, 490, 12423,317, 17729,17730,363, 17731,17733,6598, 17734,317, 990, 317, 17736,17739,363, 343, 490,
+ 317, 381, 17737,317, 1160, 17738,317, 317, 345, 867, 7383, 1347, 17741,11654,343, 363, 317, 371, 317, 17742,17743,317, 489, 17745,345, 17747,317,
17748,17749,17750,17751,17752,17754,17755,17763,501, 17767,17069,17775,2146, 17776,362, 17780,17786,404, 17788,317, 17756,17758,17761,365, 317, 317, 17757,
317, 317, 2211, 2272, 17759,17760,9265, 17453,17762,2381, 317, 4984, 343, 17764,343, 17765,17766,5840, 7941, 11782,17768,342, 317, 17769,317, 17770,17772,
- 17773,17771,317, 17774,3522, 2142, 17777,17778,7672, 17779,17781,17783,17785,490, 15051,8218, 317, 17782,317, 17784,17787,17789,7657, 620, 5570, 345, 317,
+ 17773,17771,317, 17774,3522, 2142, 17777,17778,7672, 17779,17781,17783,17785,490, 15051,8218, 317, 17782,317, 17784,17787,17789,7657, 620, 5570, 345, 317,
363, 17791,7000, 17793,350, 17794,381, 17796,17815,17817,17827,17846,9624, 17854,9876, 17859,350, 348, 9420, 17864,17890,2086, 17898,17900,17928,17930,17933,
5054, 17934,17797,2163, 17799,17804,17805,17807,343, 17810,7523, 14132,17813,1230, 17798,17800,7771, 17801,317, 6996, 633, 351, 317, 317, 5055, 17802,17803,
- 317, 317, 17806,317, 17808,317, 17809,317, 1347, 17811,2058, 343, 317, 9521, 17812,317, 317, 427, 5652, 317, 363, 17814,433, 343, 17816,317, 396,
- 2110, 332, 17818,8937, 17825,2210, 5439, 5684, 17819,17824,356, 466, 17820,317, 17821,356, 17823,17822,5167, 317, 5481, 1588, 382, 633, 4591, 317, 2381,
- 332, 17826,17828,17829,17831,17834,17839,17843,490, 317, 17844,343, 17830,6394, 343, 748, 317, 17832,345, 17833,1109, 2110, 9917, 317, 343, 17835,5447,
- 380, 317, 17836,317, 17838,370, 317, 5201, 17837,1347, 466, 1588, 439, 17840,389, 317, 332, 17841,348, 317, 16367,3987, 17842,373, 317, 317, 317,
- 332, 6228, 317, 633, 476, 565, 17845,7688, 7428, 362, 317, 6994, 351, 317, 17847,490, 8904, 17848,17851,17852,317, 1109, 317, 345, 6409, 317, 317,
+ 317, 317, 17806,317, 17808,317, 17809,317, 1347, 17811,2058, 343, 317, 9521, 17812,317, 317, 427, 5652, 317, 363, 17814,433, 343, 17816,317, 396,
+ 2110, 332, 17818,8937, 17825,2210, 5439, 5684, 17819,17824,356, 466, 17820,317, 17821,356, 17823,17822,5167, 317, 5481, 1588, 382, 633, 4591, 317, 2381,
+ 332, 17826,17828,17829,17831,17834,17839,17843,490, 317, 17844,343, 17830,6394, 343, 748, 317, 17832,345, 17833,1109, 2110, 9917, 317, 343, 17835,5447,
+ 380, 317, 17836,317, 17838,370, 317, 5201, 17837,1347, 466, 1588, 439, 17840,389, 317, 332, 17841,348, 317, 16367,3987, 17842,373, 317, 317, 317,
+ 332, 6228, 317, 633, 476, 565, 17845,7688, 7428, 362, 317, 6994, 351, 317, 17847,490, 8904, 17848,17851,17852,317, 1109, 317, 345, 6409, 317, 317,
3648, 362, 17849,17850,867, 2211, 317, 17853,365, 5890, 345, 17855,17857,17856,365, 317, 17858,17856,332, 4591, 2012, 396, 17860,4984, 343, 17861,17862,
4591, 2509, 17863,17865,17872,17875,17884,17888,17454,317, 17866,17869,317, 17870,356, 17871,332, 17867,17868,317, 1345, 17873,14663,317, 317, 17874,17876,
396, 5861, 17880,17882,17877,345, 17878,17879,317, 7682, 1526, 17881,17883,371, 7168, 17885,317, 317, 2261, 17886,9626, 317, 350, 317, 17887,17889,17891,
- 490, 490, 17892,17896,365, 1943, 490, 317, 9385, 317, 317, 317, 17893,2413, 17894,370, 7910, 345, 12769,17895,7888, 7888, 5418, 317, 17897,345, 317,
+ 490, 490, 17892,17896,365, 1943, 490, 317, 9385, 317, 317, 317, 17893,2413, 17894,370, 7910, 345, 12769,17895,7888, 7888, 5418, 317, 17897,345, 317,
5428, 17899,12199,4984, 2077, 332, 17901,17911,9624, 17913,17919,17920,17924,17927,317, 2012, 317, 3987, 317, 17902,17904,2171, 2163, 17906,17908,17909,17910,
343, 373, 17903,2035, 5217, 17905,17907,5328, 5687, 1347, 1588, 317, 5055, 13376,5022, 17912,317, 10442,317, 2155, 317, 17914,17918,17915,332, 17916,17917,
- 317, 317, 2132, 317, 370, 605, 17921,2503, 17923,317, 17922,7095, 317, 5399, 317, 6780, 317, 317, 427, 428, 17925,317, 17926,317, 17929,317, 7452,
- 343, 17931,370, 17932,345, 7858, 332, 17935,17936,17938,17939,3941, 363, 17941,426, 17955,17956,17969,17986,17989,18002,18015,18027,18035,18043,3987, 6833,
- 620, 17942,17947,596, 17951,17953,17954,6300, 7384, 17943,17945,17944,17946,317, 9422, 17948,17949,523, 17950,2510, 317, 332, 5439, 17952,6486, 9869, 2086,
+ 317, 317, 2132, 317, 370, 605, 17921,2503, 17923,317, 17922,7095, 317, 5399, 317, 6780, 317, 317, 427, 428, 17925,317, 17926,317, 17929,317, 7452,
+ 343, 17931,370, 17932,345, 7858, 332, 17935,17936,17938,17939,3941, 363, 17941,426, 17955,17956,17969,17986,17989,18002,18015,18027,18035,18043,3987, 6833,
+ 620, 17942,17947,596, 17951,17953,17954,6300, 7384, 17943,17945,17944,17946,317, 9422, 17948,17949,523, 17950,2510, 317, 332, 5439, 17952,6486, 9869, 2086,
17957,317, 5159, 317, 17958,17960,17961,17965,17967,17968,17959,317, 317, 9521, 317, 317, 317, 351, 2163, 17962,363, 317, 404, 17963,17964,2261, 17966,
- 2590, 332, 11851,317, 5841, 17970,490, 17971,17973,17974,17977,17985,343, 7777, 5570, 17972,343, 17975,17976,17978,17982,17984,2272, 17979,7668, 317, 317,
+ 2590, 332, 11851,317, 5841, 17970,490, 17971,17973,17974,17977,17985,343, 7777, 5570, 17972,343, 17975,17976,17978,17982,17984,2272, 17979,7668, 317, 317,
317, 17980,317, 17981,10674,5225, 1325, 317, 7242, 17983,363, 17987,17988,350, 317, 574, 317, 17990,7521, 7579, 17993,17996,17999,343, 2108, 18000,17991,
- 17992,17994,17995,17939,17997,17998,373, 2380, 18001,18003,18006,18009,2254, 18010,317, 18011,1160, 18004,1999, 8766, 317, 18005,317, 18007,317, 489, 363,
- 18008,5328, 6993, 7142, 317, 2715, 5033, 382, 18012,18013,5570, 18014,18016,18018,10058,18017,15445,621, 2105, 18019,18023,18026,2322, 365, 317, 18020,1347,
+ 17992,17994,17995,17939,17997,17998,373, 2380, 18001,18003,18006,18009,2254, 18010,317, 18011,1160, 18004,1999, 8766, 317, 18005,317, 18007,317, 489, 363,
+ 18008,5328, 6993, 7142, 317, 2715, 5033, 382, 18012,18013,5570, 18014,18016,18018,10058,18017,15445,621, 2105, 18019,18023,18026,2322, 365, 317, 18020,1347,
5727, 18022,18021,18024,18025,18028,18030,18031,2584, 18032,18033,18029,741, 317, 5441, 363, 2272, 18034,351, 1347, 363, 18036,18039,2510, 18042,18037,18038,
317, 317, 317, 370, 356, 466, 317, 317, 10528,18040,18041,1347, 397, 5328, 18044,18045,867, 7668, 5890, 12598,2272, 4268, 466, 18047,18048,18049,18082,
- 18108,18120,18158,18169,18171,5159, 18173,11255,18194,18195,18213,18229,18247,18265,18282,18319,18330,18362,18364,18369,18370,490, 18050,18057,18061,490, 6194,
+ 18108,18120,18158,18169,18171,5159, 18173,11255,18194,18195,18213,18229,18247,18265,18282,18319,18330,18362,18364,18369,18370,490, 18050,18057,18061,490, 6194,
350, 382, 357, 350, 2416, 18063,18067,516, 18069,18071,18075,1230, 317, 18051,18052,18053,3375, 345, 433, 2142, 317, 5483, 18054,343, 317, 18055,18056,
- 18058,18059,380, 332, 6817, 348, 317, 18060,2272, 18062,18064,490, 18065,363, 18066,2357, 18068,317, 490, 332, 18070,18072,317, 2210, 18073,18074,345,
+ 18058,18059,380, 332, 6817, 348, 317, 18060,2272, 18062,18064,490, 18065,363, 18066,2357, 18068,317, 490, 332, 18070,18072,317, 2210, 18073,18074,345,
18076,18080,18077,2416, 18078,365, 18079,596, 18081,317, 489, 18083,18085,18086,18087,317, 18103,317, 371, 433, 18084,2413, 370, 4943, 317, 2156, 10430,
343, 5634, 18088,18090,18095,18089,18091,6195, 18093,18094,11921,317, 380, 18092,5611, 9832, 590, 13376,317, 14983,18096,18097,18098,14682,339, 18099,18100,
18101,18102,18104,18105,18106,18107,356, 2510, 12958,18109,6993, 18112,18113,317, 332, 5611, 18110,18111,345, 10770,317, 2178, 18114,18115,18116,6409, 18117,
18118,5652, 18119,317, 18121,5279, 18124,18127,18129,343, 362, 332, 18155,18157,8362, 3987, 317, 18122,365, 8766, 7005, 7035, 18123,317, 867, 404, 18125,
- 18126,7143, 317, 15618,345, 18128,5732, 380, 396, 18130,2142, 9422, 18134,18137,390, 18131,18132,18133,18135,317, 5862, 317, 18136,317, 574, 317, 1329,
- 365, 317, 18138,8322, 18139,18143,18148,18153,18140,18141,10255,18142,18144,18145,18146,18147,18149,18150,18151,18152,18154,18156,7954, 490, 5611, 18159,6551,
- 12429,317, 18160,18161,18162,18164,10351,1347, 18167,18168,317, 317, 317, 511, 1347, 558, 5701, 18163,317, 18165,7143, 18166,13999,2188, 332, 18170,2110,
+ 18126,7143, 317, 15618,345, 18128,5732, 380, 396, 18130,2142, 9422, 18134,18137,390, 18131,18132,18133,18135,317, 5862, 317, 18136,317, 574, 317, 1329,
+ 365, 317, 18138,8322, 18139,18143,18148,18153,18140,18141,10255,18142,18144,18145,18146,18147,18149,18150,18151,18152,18154,18156,7954, 490, 5611, 18159,6551,
+ 12429,317, 18160,18161,18162,18164,10351,1347, 18167,18168,317, 317, 317, 511, 1347, 558, 5701, 18163,317, 18165,7143, 18166,13999,2188, 332, 18170,2110,
2022, 18172,343, 1078, 370, 18174,18175,18176,18182,18183,489, 18184,350, 18185,18187,18189,18190,18193,11921,5628, 317, 8633, 317, 18177,18181,18178,18179,
18180,5447, 412, 356, 365, 357, 2272, 18186,17851,317, 5120, 357, 317, 18188,490, 7521, 317, 18191,490, 490, 332, 18192,1347, 2188, 11344,550, 18196,
5896, 18197,18199,317, 18204,18207,18211,7385, 18212,16424,637, 7386, 1325, 317, 317, 5626, 4984, 5891, 317, 317, 18198,317, 317, 317, 17219,18200,18202,
- 18203,317, 18201,317, 317, 2024, 404, 317, 343, 317, 1347, 317, 3125, 371, 362, 6278, 18205,7522, 4943, 317, 5890, 18206,317, 1025, 18208,363, 2022,
- 363, 404, 18210,356, 18209,363, 363, 426, 317, 317, 343, 317, 363, 18214,18218,18223,2022, 18228,371, 363, 18215,18216,18217,363, 18219,18222,317,
- 6996, 317, 18220,7143, 317, 317, 490, 18221,18224,2381, 8529, 18225,18227,343, 2134, 18226,370, 6402, 10533,2410, 18230,18235,18238,2022, 18245,4477, 317,
- 9289, 317, 370, 317, 10223,18231,18232,317, 5142, 18233,433, 363, 2073, 362, 18234,380, 18236,867, 18237,357, 317, 381, 6195, 317, 363, 8766, 317,
- 1428, 5561, 2142, 343, 18239,2271, 18240,18241,18242,18243,18244,1347, 4591, 362, 553, 317, 18246,6195, 317, 2271, 18248,317, 18255,18258,18259,18262,5836,
- 11055,18264,748, 317, 10041,3599, 18249,365, 18250,18252,317, 345, 18253,18251,317, 6420, 6420, 7147, 5419, 18254,18256,317, 490, 18257,17453,5032, 317,
- 18260,2188, 356, 18261,317, 7328, 2322, 13962,18263,18266,18267,18274,596, 18278,317, 2210, 371, 9047, 18268,345, 18270,317, 18273,18269,2322, 18271,9993,
- 7419, 18272,370, 18275,317, 15464,317, 18276,18277,380, 18279,18280,18281,317, 5482, 18283,18287,18291,18308,18314,18318,2271, 18284,2271, 419, 16825,596,
+ 18203,317, 18201,317, 317, 2024, 404, 317, 343, 317, 1347, 317, 3125, 371, 362, 6278, 18205,7522, 4943, 317, 5890, 18206,317, 1025, 18208,363, 2022,
+ 363, 404, 18210,356, 18209,363, 363, 426, 317, 317, 343, 317, 363, 18214,18218,18223,2022, 18228,371, 363, 18215,18216,18217,363, 18219,18222,317,
+ 6996, 317, 18220,7143, 317, 317, 490, 18221,18224,2381, 8529, 18225,18227,343, 2134, 18226,370, 6402, 10533,2410, 18230,18235,18238,2022, 18245,4477, 317,
+ 9289, 317, 370, 317, 10223,18231,18232,317, 5142, 18233,433, 363, 2073, 362, 18234,380, 18236,867, 18237,357, 317, 381, 6195, 317, 363, 8766, 317,
+ 1428, 5561, 2142, 343, 18239,2271, 18240,18241,18242,18243,18244,1347, 4591, 362, 553, 317, 18246,6195, 317, 2271, 18248,317, 18255,18258,18259,18262,5836,
+ 11055,18264,748, 317, 10041,3599, 18249,365, 18250,18252,317, 345, 18253,18251,317, 6420, 6420, 7147, 5419, 18254,18256,317, 490, 18257,17453,5032, 317,
+ 18260,2188, 356, 18261,317, 7328, 2322, 13962,18263,18266,18267,18274,596, 18278,317, 2210, 371, 9047, 18268,345, 18270,317, 18273,18269,2322, 18271,9993,
+ 7419, 18272,370, 18275,317, 15464,317, 18276,18277,380, 18279,18280,18281,317, 5482, 18283,18287,18291,18308,18314,18318,2271, 18284,2271, 419, 16825,596,
18285,317, 490, 18069,18286,748, 1230, 5428, 332, 317, 490, 5611, 2381, 12001,4965, 349, 11034,12001,332, 350, 17018,332, 363, 18288,18290,317, 18289,
317, 317, 12001,2188, 5570, 490, 18292,18295,2271, 18300,18301,350, 18302,18303,4984, 18304,18263,11921,18306,18293,317, 18294,18296,317, 18297,18298,18299,
317, 357, 6578, 317, 363, 351, 317, 18305,363, 18307,317, 490, 18309,317, 18310,317, 18311,18312,11055,748, 317, 2188, 317, 18313,18315,317, 18316,
- 18317,18320,18322,18323,18325,332, 5684, 18326,3987, 18321,18324,18327,18328,363, 1033, 5585, 18329,18331,18334,18338,18344,18348,18349,350, 18352,18358,317,
- 8204, 18360,317, 18332,317, 490, 18333,317, 317, 317, 9699, 18335,317, 18336,5624, 317, 18337,621, 381, 7941, 18339,18342,363, 18343,317, 18340,317,
+ 18317,18320,18322,18323,18325,332, 5684, 18326,3987, 18321,18324,18327,18328,363, 1033, 5585, 18329,18331,18334,18338,18344,18348,18349,350, 18352,18358,317,
+ 8204, 18360,317, 18332,317, 490, 18333,317, 317, 317, 9699, 18335,317, 18336,5624, 317, 18337,621, 381, 7941, 18339,18342,363, 18343,317, 18340,317,
18341,351, 18345,1992, 18346,18347,1347, 8272, 439, 7368, 7368, 18350,17400,428, 18351,18353,1347, 18354,2410, 18355,317, 18356,317, 382, 18357,2610, 18359,
9067, 471, 18361,2301, 18363,7386, 2142, 357, 18316,2416, 490, 18365,18367,18368,433, 18366,490, 332, 332, 332, 317, 5105, 1347, 317, 381, 317, 11533,
9649, 13729,428, 12202,18371,18394,18396,18401,18403,317, 7072, 18412,18421,18428,18430,2171, 350, 18431,18433,965, 18439,18465,18519,3987, 317, 18372,18376,
18377,18378,18381,18384,18386,18388,18392,345, 18393,748, 18373,2035, 18374,18375,9538, 6402, 317, 365, 1347, 317, 18379,18380,18382,18383,362, 317, 18385,
- 6517, 514, 2146, 1347, 2110, 18387,18389,332, 18390,317, 2381, 332, 317, 317, 18391,2369, 1108, 18395,350, 479, 18397,18399,7916, 18398,345, 317, 5447,
- 9522, 18400,17462,18402,18404,317, 18406,18407,18408,18410,317, 3987, 18411,350, 350, 18405,381, 371, 501, 7954, 355, 404, 18409,2369, 1266, 6996, 8301,
+ 6517, 514, 2146, 1347, 2110, 18387,18389,332, 18390,317, 2381, 332, 317, 317, 18391,2369, 1108, 18395,350, 479, 18397,18399,7916, 18398,345, 317, 5447,
+ 9522, 18400,17462,18402,18404,317, 18406,18407,18408,18410,317, 3987, 18411,350, 350, 18405,381, 371, 501, 7954, 355, 404, 18409,2369, 1266, 6996, 8301,
2077, 317, 6996, 18413,3599, 18414,18416,2401, 18417,18418,18420,3987, 18415,317, 317, 317, 317, 317, 381, 1347, 2510, 1992, 4984, 363, 11648,18419,10223,
- 343, 18422,490, 317, 18423,18425,18427,1160, 317, 6409, 2368, 317, 18424,1347, 345, 317, 18426,1347, 317, 1347, 317, 18429,317, 6036, 363, 18432,317,
- 5241, 18434,18436,6600, 18435,343, 9473, 317, 18437,18438,317, 633, 5300, 18440,18447,18453,350, 18460,18461,18463,5037, 317, 18441,2272, 18442,18444,343,
- 18445,17658,18446,1345, 6188, 317, 18443,317, 18387,351, 1109, 317, 317, 5570, 317, 18391,7021, 595, 1230, 18448,18449,317, 345, 18450,343, 18451,345,
- 1160, 10641,10375,362, 317, 370, 373, 18452,18454,18455,8346, 7657, 18456,18457,7095, 370, 345, 6486, 317, 317, 9020, 317, 18458,18459,363, 2405, 371,
- 18462,18464,18466,18472,18484,18493,350, 18501,18505,317, 18467,5438, 18469,7405, 18468,317, 350, 17454,18470,18471,332, 4984, 317, 5611, 317, 380, 404,
- 18473,18481,18483,317, 363, 7657, 18474,18479,317, 427, 18475,4980, 18477,317, 18478,18476,365, 1526, 317, 317, 7523, 317, 8243, 8217, 317, 8841, 317,
- 590, 18480,18482,2004, 490, 2086, 380, 18485,18488,18492,2381, 2601, 18486,18487,317, 5419, 18489,317, 18490,18491,6382, 4984, 18494,466, 317, 18495,2024,
- 565, 18496,18497,317, 18499,317, 11782,5430, 351, 7590, 18498,18500,317, 18502,18504,18503,1230, 1230, 380, 9214, 18506,18508,18509,18510,18518,18507,867,
- 356, 404, 317, 404, 14144,317, 317, 7035, 345, 2142, 18511,317, 18514,317, 18516,18512,18513,4757, 18515,18517,18520,18522,18523,18521,7149, 317, 6228,
+ 343, 18422,490, 317, 18423,18425,18427,1160, 317, 6409, 2368, 317, 18424,1347, 345, 317, 18426,1347, 317, 1347, 317, 18429,317, 6036, 363, 18432,317,
+ 5241, 18434,18436,6600, 18435,343, 9473, 317, 18437,18438,317, 633, 5300, 18440,18447,18453,350, 18460,18461,18463,5037, 317, 18441,2272, 18442,18444,343,
+ 18445,17658,18446,1345, 6188, 317, 18443,317, 18387,351, 1109, 317, 317, 5570, 317, 18391,7021, 595, 1230, 18448,18449,317, 345, 18450,343, 18451,345,
+ 1160, 10641,10375,362, 317, 370, 373, 18452,18454,18455,8346, 7657, 18456,18457,7095, 370, 345, 6486, 317, 317, 9020, 317, 18458,18459,363, 2405, 371,
+ 18462,18464,18466,18472,18484,18493,350, 18501,18505,317, 18467,5438, 18469,7405, 18468,317, 350, 17454,18470,18471,332, 4984, 317, 5611, 317, 380, 404,
+ 18473,18481,18483,317, 363, 7657, 18474,18479,317, 427, 18475,4980, 18477,317, 18478,18476,365, 1526, 317, 317, 7523, 317, 8243, 8217, 317, 8841, 317,
+ 590, 18480,18482,2004, 490, 2086, 380, 18485,18488,18492,2381, 2601, 18486,18487,317, 5419, 18489,317, 18490,18491,6382, 4984, 18494,466, 317, 18495,2024,
+ 565, 18496,18497,317, 18499,317, 11782,5430, 351, 7590, 18498,18500,317, 18502,18504,18503,1230, 1230, 380, 9214, 18506,18508,18509,18510,18518,18507,867,
+ 356, 404, 317, 404, 14144,317, 317, 7035, 345, 2142, 18511,317, 18514,317, 18516,18512,18513,4757, 18515,18517,18520,18522,18523,18521,7149, 317, 6228,
1112, 18524,18565,18566,18573,18574,18597,18602,18622,3078, 18626,18628,1597, 18631,18634,18638,18642,18653,317, 18654,18525,18527,18534,18544,18548,18553,15387,
18555,18556,18562,18564,18526,18528,18531,18533,18529,18530,18532,18535,5439, 18537,18538,365, 18540,490, 15552,18542,18536,343, 11447,317, 11447,317, 18539,
- 18541,5406, 356, 466, 317, 5717, 18543,401, 5717, 5447, 345, 1347, 18545,18547,18546,5055, 490, 2108, 18549,393, 1109, 317, 18550,18551,332, 18552,5570,
- 18554,5988, 2035, 18557,18558,18559,18560,18561,1347, 7222, 18563,490, 2333, 1999, 551, 370, 18567,6996, 18568,9648, 18569,18571,317, 18570,18572,373, 4396,
+ 18541,5406, 356, 466, 317, 5717, 18543,401, 5717, 5447, 345, 1347, 18545,18547,18546,5055, 490, 2108, 18549,393, 1109, 317, 18550,18551,332, 18552,5570,
+ 18554,5988, 2035, 18557,18558,18559,18560,18561,1347, 7222, 18563,490, 2333, 1999, 551, 370, 18567,6996, 18568,9648, 18569,18571,317, 18570,18572,373, 4396,
13719,590, 18575,432, 18583,6937, 18589,18591,14295,343, 18576,519, 18577,18578,18582,18579,18580,18581,18584,18585,18586,317, 317, 9313, 345, 18587,18588,
5225, 5447, 466, 18590,363, 5571, 370, 10422,554, 10804,18592,317, 18595,18593,18594,18596,18598,18601,471, 18599,18600,18603,5159, 18606,1358, 527, 18616,
18621,1160, 317, 18604,317, 18605,2001, 401, 18607,380, 8384, 18610,18612,317, 18608,18609,18611,362, 317, 4980, 6089, 363, 18613,18614,18615,317, 18617,
- 18618,393, 18619,18620,965, 5343, 345, 317, 2272, 363, 18623,18624,18625,8271, 2272, 332, 317, 5687, 2631, 317, 18627,363, 491, 990, 381, 18629,428,
- 18630,18632,317, 18077,1588, 2279, 18633,5890, 2381, 1020, 317, 15510,18635,2117, 18637,6318, 18636,343, 8597, 2035, 18639,5108, 4974, 18640,18641,345, 1060,
- 18643,18648,466, 18650,18652,3987, 317, 317, 18644,18645,18646,2108, 332, 317, 18647,317, 380, 18649,384, 404, 404, 7368, 18651,10149,490, 2279, 317,
- 7386, 6207, 317, 18655,450, 18657,373, 18658,18662,18665,18666,18668,18673,18677,8807, 317, 18659,18661,5335, 18660,5419, 345, 17591,18663,18664,343, 404,
+ 18618,393, 18619,18620,965, 5343, 345, 317, 2272, 363, 18623,18624,18625,8271, 2272, 332, 317, 5687, 2631, 317, 18627,363, 491, 990, 381, 18629,428,
+ 18630,18632,317, 18077,1588, 2279, 18633,5890, 2381, 1020, 317, 15510,18635,2117, 18637,6318, 18636,343, 8597, 2035, 18639,5108, 4974, 18640,18641,345, 1060,
+ 18643,18648,466, 18650,18652,3987, 317, 317, 18644,18645,18646,2108, 332, 317, 18647,317, 380, 18649,384, 404, 404, 7368, 18651,10149,490, 2279, 317,
+ 7386, 6207, 317, 18655,450, 18657,373, 18658,18662,18665,18666,18668,18673,18677,8807, 317, 18659,18661,5335, 18660,5419, 345, 17591,18663,18664,343, 404,
317, 450, 6598, 18667,15734,1020, 362, 479, 11236,317, 18669,370, 9624, 18670,18672,2022, 351, 404, 3987, 18671,18674,370, 18676,466, 2022, 401, 18675,
5220, 397, 370, 317, 317, 7405, 317, 18678,18680,18682,317, 18679,8557, 7385, 363, 18681,404, 2142, 18683,18684,6670, 317, 448, 356, 317, 18686,18707,
18713,2571, 18717,7850, 18718,332, 18687,5173, 18689,18701,18703,2086, 2086, 18688,3522, 18690,11067,18693,18696,317, 18699,8594, 18691,343, 18692,18694,18695,
- 18697,18698,317, 317, 18700,18702,476, 390, 317, 4943, 18704,7567, 18705,18706,4268, 317, 5105, 18708,18709,18711,317, 381, 317, 4980, 18710,12102,351,
+ 18697,18698,317, 317, 18700,18702,476, 390, 317, 4943, 18704,7567, 18705,18706,4268, 317, 5105, 18708,18709,18711,317, 381, 317, 4980, 18710,12102,351,
389, 370, 18712,7070, 351, 18714,317, 8863, 5105, 18715,18716,476, 317, 317, 5225, 317, 596, 317, 317, 12656,351, 2146, 1020, 2022, 18720,18721,18722,
- 18723,18724,404, 348, 404, 18727,343, 18729,18730,5419, 343, 18731,4980, 404, 18732,6089, 18728,362, 317, 2272, 317, 317, 7657, 317, 18734,18737,350,
+ 18723,18724,404, 348, 404, 18727,343, 18729,18730,5419, 343, 18731,4980, 404, 18732,6089, 18728,362, 317, 2272, 317, 317, 7657, 317, 18734,18737,350,
18740,18741,18735,18736,9321, 317, 18738,434, 18739,428, 18742,18744,18747,339, 18749,18753,367, 18755,18757,18758,317, 18763,1358, 18772,18775,18745,18746,
936, 18748,18750,18752,18751,18754,7892, 18756,490, 427, 18759,18760,1193, 18761,18762,619, 18764,18768,8746, 317, 5841, 18765,18766,18767,351, 18769,18771,
18770,18773,18774,490, 8023, 18777,345, 18782,345, 18783,370, 740, 18786,18778,18781,317, 317, 18779,317, 18780,18784,18785,18788,18788,17274,2162, 18790,
317, 18792,6651, 15680,18796,490, 490, 16319,1347, 317, 18798,18804,18806,18789,18791,18793,18794,2474, 18795,18797,18799,351, 317, 607, 18800,396, 18801,
18803,18802,18805,18807,18808,18809,18810,18811,18819,18822,18834,18843,18844,18847,18856,8333, 18860,18896,18899,18953,18955,18972,19045,19055,489, 19061,19064,
19066,19068,18812,18814,18815,18817,317, 18813,317, 15915,345, 351, 18816,466, 351, 317, 2609, 2571, 317, 317, 18818,18820,12738,18821,18823,18824,18828,
- 18829,18830,6222, 18833,8765, 18825,6993, 18826,18827,5241, 490, 343, 18831,317, 317, 317, 18832,343, 317, 18835,18837,18841,2128, 18842,332, 18836,317,
+ 18829,18830,6222, 18833,8765, 18825,6993, 18826,18827,5241, 490, 343, 18831,317, 317, 317, 18832,343, 317, 18835,18837,18841,2128, 18842,332, 18836,317,
317, 332, 18838,5896, 18839,18840,17117,382, 14289,2272, 558, 11055,317, 18845,317, 8633, 18846,1060, 18848,18849,18850,317, 11347,18851,18852,18853,18854,
18855,490, 18857,7657, 18859,18858,390, 10878,18861,11442,18862,18872,343, 18878,350, 1434, 18889,18890,18895,317, 404, 7668, 490, 18863,404, 18868,18661,
- 18869,490, 345, 317, 18864,317, 18865,317, 18867,4268, 18866,317, 7657, 490, 18870,317, 1160, 18871,9325, 6565, 1331, 18873,18875,317, 18877,317, 345,
- 18874,18876,7419, 18879,1325, 18880,6275, 18881,18883,317, 18886,351, 365, 317, 4268, 18882,317, 18884,18885,7386, 18887,2279, 351, 574, 18888,356, 8231,
- 317, 4591, 317, 345, 633, 317, 18891,317, 18892,18893,317, 18894,673, 649, 339, 1160, 390, 7481, 6780, 8403, 18897,10556,18898,448, 8544, 5223, 365,
+ 18869,490, 345, 317, 18864,317, 18865,317, 18867,4268, 18866,317, 7657, 490, 18870,317, 1160, 18871,9325, 6565, 1331, 18873,18875,317, 18877,317, 345,
+ 18874,18876,7419, 18879,1325, 18880,6275, 18881,18883,317, 18886,351, 365, 317, 4268, 18882,317, 18884,18885,7386, 18887,2279, 351, 574, 18888,356, 8231,
+ 317, 4591, 317, 345, 633, 317, 18891,317, 18892,18893,317, 18894,673, 649, 339, 1160, 390, 7481, 6780, 8403, 18897,10556,18898,448, 8544, 5223, 365,
18900,380, 317, 18902,18904,18909,18913,18333,18901,18903,18905,18907,18908,18906,370, 18910,18912,18911,356, 466, 7821, 5492, 1078, 18914,426, 18918,18926,
350, 18931,18933,317, 18949,18915,317, 18916,2086, 18917,18919,18924,18920,18922,317, 18921,18923,356, 18925,466, 2271, 7614, 317, 5037, 1588, 578, 18927,
- 365, 18930,18928,317, 18929,2510, 2156, 490, 18932,18934,18938,18942,18948,427, 380, 18935,317, 317, 18936,370, 317, 18937,370, 10674,5225, 356, 317,
+ 365, 18930,18928,317, 18929,2510, 2156, 490, 18932,18934,18938,18942,18948,427, 380, 18935,317, 317, 18936,370, 317, 18937,370, 10674,5225, 356, 317,
317, 317, 18939,362, 18940,317, 5037, 18941,4925, 18943,17160,18947,381, 18944,18945,18946,1347, 317, 18950,18951,18952,345, 5055, 490, 317, 18954,18956,
18957,18958,363, 18968,18970,317, 18959,18967,345, 18960,317, 339, 18961,9027, 9822, 18962,18965,18963,18964,345, 18966,18969,18971,835, 18973,18979,18981,
18982,18984,1430, 19005,19008,19010,19014,19016,19017,11952,19023,19035,19037,490, 18974,5836, 1347, 317, 18977,18978,18975,18976,2012, 343, 381, 317, 17462,
18978,6541, 18980,2272, 357, 5241, 343, 2272, 317, 18983,4564, 18985,18992,18994,18996,18997,19001,317, 317, 2715, 19002,332, 18986,18989,345, 18987,18988,
380, 18990,427, 18991,18153,18993,596, 1078, 18995,18998,18999,19000,317, 5701, 345, 10168,19003,19004,332, 317, 343, 19006,427, 19007,371, 5570, 19009,
- 19011,1345, 19012,19013,2322, 317, 390, 5727, 490, 19015,317, 317, 2317, 19018,19019,19020,19022,12949,2142, 332, 490, 2142, 19021,6486, 1347, 19024,2132,
+ 19011,1345, 19012,19013,2322, 317, 390, 5727, 490, 19015,317, 317, 2317, 19018,19019,19020,19022,12949,2142, 332, 490, 2142, 19021,6486, 1347, 19024,2132,
19027,19033,317, 19025,8178, 19026,418, 370, 5201, 19028,2176, 19029,2184, 9482, 19030,5464, 19031,19032,5447, 5054, 19034,6541, 19036,2715, 362, 5439, 19038,
19041,19044,11669,345, 19039,19040,19042,19043,2715, 490, 371, 490, 6555, 317, 433, 317, 317, 19046,317, 2035, 10351,19048,19049,19050,19054,1588, 19047,
1615, 6379, 317, 5225, 404, 19051,351, 535, 19052,384, 19053,2178, 9265, 490, 958, 2272, 19056,2110, 19058,19059,490, 345, 19057,19060,18820,19062,19063,
@@ -7207,273 +7202,273 @@ static const unsigned int ChildLocs[185261] =
1430, 19082,19081,19084,19085,19086,19087,19091,19092,19065,19094,19095,19093,19096,19097,608, 607, 19100,19102,1060, 19107,19113,19101,19103,19104,19105,19106,
19108,19109,19110,19111,19112,19114,19115,9186, 19116,19119,19123,58, 19484,390, 59, 19666,19670,60, 19874,19875,19895,19903,19996,20103,20104,20156,20158,
20162,19117,19118,19120,19121,19122,17290,19124,19130,19137,317, 19146,19150,19154,19158,404, 19177,19192,19220,19249,19305,19308,19334,19415,19428,19454,19473,
- 2381, 19483,1100, 19125,6555, 19126,2163, 19128,19129,317, 565, 317, 356, 19127,317, 2381, 317, 9244, 490, 19131,317, 19133,332, 19136,19132,317, 5381,
- 19134,1588, 7871, 317, 317, 19135,317, 19138,19140,19143,490, 19144,2022, 19145,19139,479, 16075,384, 19141,384, 317, 19142,317, 2067, 317, 370, 428,
+ 2381, 19483,1100, 19125,6555, 19126,2163, 19128,19129,317, 565, 317, 356, 19127,317, 2381, 317, 9244, 490, 19131,317, 19133,332, 19136,19132,317, 5381,
+ 19134,1588, 7871, 317, 317, 19135,317, 19138,19140,19143,490, 19144,2022, 19145,19139,479, 16075,384, 19141,384, 317, 19142,317, 2067, 317, 370, 428,
384, 19147,19148,9574, 19149,5055, 19151,404, 19152,19153,380, 317, 2351, 18239,317, 490, 19155,317, 19156,19157,19159,7473, 19160,317, 19162,19165,19175,
- 19176,317, 19161,19163,466, 5005, 19164,317, 19166,466, 19167,19168,19172,317, 1871, 19169,363, 19170,19171,19173,19174,317, 404, 370, 15552,490, 317,
+ 19176,317, 19161,19163,466, 5005, 19164,317, 19166,466, 19167,19168,19172,317, 1871, 19169,363, 19170,19171,19173,19174,317, 404, 370, 15552,490, 317,
19178,490, 2163, 19182,433, 19179,19180,19181,19183,317, 19184,317, 19188,19185,19187,19186,19189,19190,19191,19193,19196,19202,19203,19204,19205,19208,19209,
- 19215,19217,19218,17501,10596,19194,19195,19197,345, 19199,6894, 19198,19200,19201,5419, 11505,566, 2533, 1347, 363, 2369, 363, 2369, 17973,343, 19206,3094,
+ 19215,19217,19218,17501,10596,19194,19195,19197,345, 19199,6894, 19198,19200,19201,5419, 11505,566, 2533, 1347, 363, 2369, 363, 2369, 17973,343, 19206,3094,
490, 19207,5279, 14337,2022, 317, 19210,5896, 19211,19214,2568, 19212,350, 19213,19216,345, 574, 11928,316, 317, 19219,13211,317, 4984, 19221,332, 19229,
12761,19232,12454,19238,19240,19241,317, 380, 5105, 19222,19226,14161,343, 19223,356, 466, 19224,6309, 7910, 317, 19225,7237, 363, 356, 2272, 19227,19228,
- 317, 19230,345, 19231,19233,7942, 19234,19235,19236,19237,19239,476, 345, 5590, 2326, 867, 363, 6228, 19242,14871,19244,19247,362, 2022, 19248,317, 317,
+ 317, 19230,345, 19231,19233,7942, 19234,19235,19236,19237,19239,476, 345, 5590, 2326, 867, 363, 6228, 19242,14871,19244,19247,362, 2022, 19248,317, 317,
332, 6318, 19243,370, 362, 343, 19245,19246,317, 356, 466, 2631, 9139, 12588,316, 19250,19251,19259,19279,19281,19287,15745,19288,19293,5054, 19294,19304,
- 590, 370, 5619, 2058, 19252,19258,317, 317, 317, 317, 19253,1345, 317, 317, 19254,448, 19255,19256,19257,1597, 5037, 4984, 19260,19261,8829, 365, 345,
+ 590, 370, 5619, 2058, 19252,19258,317, 317, 317, 317, 19253,1345, 317, 317, 19254,448, 19255,19256,19257,1597, 5037, 4984, 19260,19261,8829, 365, 345,
1444, 19262,19273,317, 317, 10333,317, 351, 10993,19263,1481, 19271,317, 19264,13477,19266,317, 1444, 19268,19265,19267,19269,19270,2110, 565, 19272,19274,
- 19275,19276,19277,19278,19280,317, 317, 14501,317, 13753,19282,2291, 19284,317, 1459, 404, 19285,19283,6996, 410, 317, 381, 511, 6713, 541, 490, 1347,
- 317, 1060, 19286,317, 19289,466, 363, 19292,19290,317, 317, 317, 356, 19291,5363, 317, 382, 1526, 5295, 2272, 19295,19296,19297,19301,350, 345, 370,
- 317, 317, 17926,317, 393, 19298,15540,19299,19300,19302,1033, 418, 382, 19303,2533, 343, 433, 19306,401, 2357, 19307,317, 1087, 741, 317, 19309,7448,
+ 19275,19276,19277,19278,19280,317, 317, 14501,317, 13753,19282,2291, 19284,317, 1459, 404, 19285,19283,6996, 410, 317, 381, 511, 6713, 541, 490, 1347,
+ 317, 1060, 19286,317, 19289,466, 363, 19292,19290,317, 317, 317, 356, 19291,5363, 317, 382, 1526, 5295, 2272, 19295,19296,19297,19301,350, 345, 370,
+ 317, 317, 17926,317, 393, 19298,15540,19299,19300,19302,1033, 418, 382, 19303,2533, 343, 433, 19306,401, 2357, 19307,317, 1087, 741, 317, 19309,7448,
19312,19315,6780, 332, 19319,19325,2391, 2067, 19326,10217,2509, 19330,19310,19311,19313,19314,317, 19316,317, 19317,1358, 370, 317, 19318,19320,19323,19324,
19321,19322,363, 7389, 19327,19328,343, 343, 317, 2163, 317, 317, 2291, 332, 317, 19329,317, 565, 1358, 19331,317, 19332,19333,590, 19335,19345,19350,
19352,19355,19360,19362,19366,19372,19389,19393,19395,19396,19399,15017,19402,19409,19411,19413,19336,19342,9027, 9993, 596, 19337,19338,19339,19340,317, 19341,
- 10680,5225, 5447, 466, 6170, 1347, 19343,19344,19346,19347,10471,19348,19349,11144,317, 317, 19351,363, 19353,19354,19356,381, 574, 19358,19357,19359,9289,
+ 10680,5225, 5447, 466, 6170, 1347, 19343,19344,19346,19347,10471,19348,19349,11144,317, 317, 19351,363, 19353,19354,19356,381, 574, 19358,19357,19359,9289,
2178, 19361,19363,3999, 2163, 19364,410, 317, 15202,317, 19365,317, 382, 19367,19369,19371,550, 19368,317, 19370,5793, 7913, 317, 596, 363, 317, 19373,
- 19374,19381,19384,19388,404, 345, 7000, 356, 5419, 317, 19375,4984, 19376,5793, 958, 19377,19379,19380,317, 10758,2369, 317, 317, 317, 317, 317, 317,
+ 19374,19381,19384,19388,404, 345, 7000, 356, 5419, 317, 19375,4984, 19376,5793, 958, 19377,19379,19380,317, 10758,2369, 317, 317, 317, 317, 317, 317,
317, 7567, 363, 317, 19378,5809, 5038, 2326, 19382,343, 343, 317, 19383,317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 19385,
- 19386,317, 19387,317, 9931, 15510,5840, 19390,19391,19392,317, 363, 5635, 13868,350, 2022, 19394,6089, 363, 3941, 317, 19397,9522, 19398,356, 19400,4984,
+ 19386,317, 19387,317, 9931, 15510,5840, 19390,19391,19392,317, 363, 5635, 13868,350, 2022, 19394,6089, 363, 3941, 317, 19397,9522, 19398,356, 19400,4984,
317, 19401,19403,19405,19406,317, 317, 19404,317, 356, 7401, 8137, 317, 351, 382, 381, 19407,19408,19410,381, 19412,19414,19416,19417,2022, 19418,16187,
- 363, 19419,19424,6228, 317, 317, 6420, 317, 317, 370, 1992, 370, 19420,19422,19423,363, 19421,19425,19426,19427,363, 11235,1358, 9832, 370, 19429,2416,
+ 363, 19419,19424,6228, 317, 317, 6420, 317, 317, 370, 1992, 370, 19420,19422,19423,363, 19421,19425,19426,19427,363, 11235,1358, 9832, 370, 19429,2416,
19431,9624, 554, 14143,19439,11236,4984, 12770,19440,19441,19451,1020, 19430,6963, 19432,19438,317, 19433,19434,19435,19436,19437,317, 19390,381, 19442,19448,
3999, 19450,317, 19443,19447,19444,19445,19446,317, 1347, 317, 19449,3599, 466, 558, 2022, 4980, 404, 19452,2078, 19453,19455,7490, 19456,1108, 19458,19461,
19462,8254, 19464,19465,19467,19469,317, 381, 19457,8906, 1020, 448, 370, 2178, 19459,19460,363, 2275, 19463,19466,19468,363, 7990, 19470,19471,19472,19474,
19477,19479,19480,19475,19476,2004, 19287,5241, 317, 19478,317, 317, 5570, 345, 317, 490, 317, 19481,19482,317, 9909, 2146, 19485,19490,19497,19505,19506,
- 19523,19524,19527,19530,19531,19532,19549,19563,19580,19582,19583,19586,19621,19638,19643,19644,19657,19662,317, 373, 1033, 317, 317, 8392, 19486,345, 317,
- 19488,19487,370, 2260, 427, 19489,15837,3999, 427, 317, 427, 6089, 19491,19493,539, 19494,19496,19492,19495,7129, 371, 317, 490, 19498,19499,317, 5055,
- 5619, 317, 317, 9695, 19500,19502,8081, 19503,385, 19504,10351,6736, 317, 19501,4268, 5279, 356, 317, 1992, 357, 490, 19507,19508,370, 490, 2022, 317,
+ 19523,19524,19527,19530,19531,19532,19549,19563,19580,19582,19583,19586,19621,19638,19643,19644,19657,19662,317, 373, 1033, 317, 317, 8392, 19486,345, 317,
+ 19488,19487,370, 2260, 427, 19489,15837,3999, 427, 317, 427, 6089, 19491,19493,539, 19494,19496,19492,19495,7129, 371, 317, 490, 19498,19499,317, 5055,
+ 5619, 317, 317, 9695, 19500,19502,8081, 19503,385, 19504,10351,6736, 317, 19501,4268, 5279, 356, 317, 1992, 357, 490, 19507,19508,370, 490, 2022, 317,
19509,19514,19519,19521,19522,7438, 356, 317, 317, 317, 356, 10891,19510,19511,317, 317, 19512,19513,9081, 1033, 19515,343, 362, 317, 6996, 317, 19516,
- 19518,317, 362, 317, 317, 317, 867, 6673, 19517,19520,554, 1347, 2142, 426, 350, 317, 19525,19526,19528,19529,390, 317, 345, 317, 8281, 19533,2610,
- 317, 19535,19538,19539,19540,19543,19545,317, 19534,317, 5987, 19536,345, 19537,332, 7582, 19541,1358, 317, 19542,317, 317, 317, 317, 317, 317, 317,
+ 19518,317, 362, 317, 317, 317, 867, 6673, 19517,19520,554, 1347, 2142, 426, 350, 317, 19525,19526,19528,19529,390, 317, 345, 317, 8281, 19533,2610,
+ 317, 19535,19538,19539,19540,19543,19545,317, 19534,317, 5987, 19536,345, 19537,332, 7582, 19541,1358, 317, 19542,317, 317, 317, 317, 317, 317, 317,
317, 317, 317, 1331, 19544,363, 19546,19547,19548,428, 19550,10626,19554,7850, 466, 19551,317, 1347, 19552,19553,8000, 19555,19556,19557,19558,19559,19560,
19561,19562,317, 19564,19568,19571,19573,19574,19576,317, 19565,2809, 19566,19567,9244, 19569,317, 19570,19572,13066,351, 373, 19575,19577,317, 19579,19578,
- 317, 19581,345, 6551, 11451,19584,19585,12262,317, 19587,19591,10609,19592,19596,19598,19599,7850, 19600,19607,7850, 19609,19613,19614,19617,19618,19619,2058,
+ 317, 19581,345, 6551, 11451,19584,19585,12262,317, 19587,19591,10609,19592,19596,19598,19599,7850, 19600,19607,7850, 19609,19613,19614,19617,19618,19619,2058,
19588,317, 317, 19589,19590,1020, 317, 373, 19593,19594,2368, 8281, 19595,317, 363, 332, 317, 317, 11607,19597,404, 11636,19601,19602,19604,317, 10592,
- 8281, 2124, 19603,7931, 396, 19605,2317, 317, 317, 19606,19608,19610,19611,19612,6546, 16704,6996, 317, 317, 365, 6388, 3529, 2022, 19615,19616,317, 317,
+ 8281, 2124, 19603,7931, 396, 19605,2317, 317, 317, 19606,19608,19610,19611,19612,6546, 16704,6996, 317, 317, 365, 6388, 3529, 2022, 19615,19616,317, 317,
7668, 428, 11347,19620,19622,10453,19624,19625,384, 19626,2171, 19627,19628,19631,2391, 971, 19623,427, 351, 5346, 3611, 2369, 7785, 6036, 384, 6036, 14535,
- 317, 5279, 351, 350, 14842,350, 19629,12696,317, 317, 19630,317, 16579,19632,19634,19636,317, 317, 19633,317, 363, 19635,6228, 317, 317, 317, 317,
- 317, 9624, 362, 317, 11782,19637,363, 19639,554, 19640,554, 19641,19642,382, 12416,19645,19647,19650,19651,370, 19654,19646,2058, 317, 19648,19649,317,
- 574, 317, 1100, 404, 19652,350, 19653,15274,1347, 637, 1160, 317, 19655,1271, 673, 633, 362, 19656,2683, 317, 3153, 19658,15608,19661,511, 317, 1160,
- 19659,19660,10770,19663,10223,19664,19665,19667,19668,19669,19671,19679,19680,19683,19684,2110, 317, 317, 19672,19673,19674,19676,19675,19677,19678,466, 382,
+ 317, 5279, 351, 350, 14842,350, 19629,12696,317, 317, 19630,317, 16579,19632,19634,19636,317, 317, 19633,317, 363, 19635,6228, 317, 317, 317, 317,
+ 317, 9624, 362, 317, 11782,19637,363, 19639,554, 19640,554, 19641,19642,382, 12416,19645,19647,19650,19651,370, 19654,19646,2058, 317, 19648,19649,317,
+ 574, 317, 1100, 404, 19652,350, 19653,15274,1347, 637, 1160, 317, 19655,1271, 673, 633, 362, 19656,2683, 317, 3153, 19658,15608,19661,511, 317, 1160,
+ 19659,19660,10770,19663,10223,19664,19665,19667,19668,19669,19671,19679,19680,19683,19684,2110, 317, 317, 19672,19673,19674,19676,19675,19677,19678,466, 382,
2178, 317, 19681,19682,317, 317, 317, 490, 12696,19685,19702,19703,19730,19735,19741,19743,19746,19750,19751,19772,19781,19808,19810,19820,19824,19841,19849,
19865,19866,19872,19873,332, 365, 10995,19686,317, 19687,19692,19699,19700,365, 393, 317, 365, 345, 19688,19690,19689,2178, 7567, 19691,2272, 19693,19694,
19696,5027, 19697,5027, 5612, 19695,748, 5033, 365, 332, 19698,19701,317, 1032, 317, 543, 19704,19708,19710,19713,596, 19727,1720, 317, 19705,516, 19707,
- 317, 19706,317, 317, 1267, 317, 317, 317, 317, 3079, 4952, 317, 19709,19711,16616,19712,317, 590, 10246,317, 19714,19721,343, 539, 6176, 317, 317,
- 19715,19716,19719,12154,19717,19718,19720,19722,511, 317, 6228, 317, 317, 317, 356, 466, 3599, 8956, 19723,19724,19725,19726,6228, 2272, 1345, 558, 370,
+ 317, 19706,317, 317, 1267, 317, 317, 317, 317, 3079, 4952, 317, 19709,19711,16616,19712,317, 590, 10246,317, 19714,19721,343, 539, 6176, 317, 317,
+ 19715,19716,19719,12154,19717,19718,19720,19722,511, 317, 6228, 317, 317, 317, 356, 466, 3599, 8956, 19723,19724,19725,19726,6228, 2272, 1345, 558, 370,
317, 19728,19729,19731,19734,2178, 19732,19733,19736,317, 332, 17217,1992, 1109, 490, 365, 317, 9440, 6228, 317, 11619,332, 370, 1160, 19737,317, 19738,
19739,19740,370, 7821, 19742,2022, 363, 15457,350, 317, 8828, 19744,17410,3987, 19745,371, 867, 19747,19748,19749,11986,363, 332, 317, 17784,19752,19755,
- 19763,19765,11716,19766,1358, 2329, 5331, 19770,2188, 19753,2117, 381, 19754,19756,14062,19758,16384,389, 19759,19761,317, 19757,5810, 1998, 345, 317, 476,
+ 19763,19765,11716,19766,1358, 2329, 5331, 19770,2188, 19753,2117, 381, 19754,19756,14062,19758,16384,389, 19759,19761,317, 19757,5810, 1998, 345, 317, 476,
19760,19762,317, 6996, 1347, 317, 317, 5055, 317, 19764,317, 2077, 7311, 317, 363, 19767,19768,17009,317, 363, 317, 19769,345, 1992, 317, 1194, 19771,
- 363, 19773,19774,19777,1530, 19778,2110, 2110, 317, 317, 19775,19776,317, 1160, 339, 2537, 382, 19779,317, 317, 19780,19782,19786,19792,19793,19795,317,
- 19799,9170, 343, 19800,19802,19803,19807,11509,8746, 365, 317, 2631, 19783,362, 3284, 19784,3505, 19785,19787,19788,19789,19790,19791,4962, 1020, 19794,6713,
- 2715, 19796,2024, 363, 317, 19797,490, 19798,371, 5611, 317, 448, 19801,317, 317, 317, 5962, 317, 19804,19805,19806,15169,490, 490, 19809,317, 2715,
- 317, 10609,317, 7045, 19811,19812,7672, 343, 2022, 19813,372, 19815,5628, 19819,317, 6138, 363, 2193, 19814,19816,16651,317, 317, 317, 19817,19818,6409,
+ 363, 19773,19774,19777,1530, 19778,2110, 2110, 317, 317, 19775,19776,317, 1160, 339, 2537, 382, 19779,317, 317, 19780,19782,19786,19792,19793,19795,317,
+ 19799,9170, 343, 19800,19802,19803,19807,11509,8746, 365, 317, 2631, 19783,362, 3284, 19784,3505, 19785,19787,19788,19789,19790,19791,4962, 1020, 19794,6713,
+ 2715, 19796,2024, 363, 317, 19797,490, 19798,371, 5611, 317, 448, 19801,317, 317, 317, 5962, 317, 19804,19805,19806,15169,490, 490, 19809,317, 2715,
+ 317, 10609,317, 7045, 19811,19812,7672, 343, 2022, 19813,372, 19815,5628, 19819,317, 6138, 363, 2193, 19814,19816,16651,317, 317, 317, 19817,19818,6409,
6195, 554, 317, 9624, 317, 317, 4268, 350, 19821,19822,19823,317, 8061, 317, 19825,332, 404, 19831,317, 19834,19840,317, 16898,317, 13323,19826,19830,
- 19827,19828,19829,19832,6294, 8613, 19833,317, 317, 19835,19836,7514, 19837,19838,19839,339, 2510, 19842,17444,19843,19844,19845,19846,6600, 543, 19848,490,
+ 19827,19828,19829,19832,6294, 8613, 19833,317, 317, 19835,19836,7514, 19837,19838,19839,339, 2510, 19842,17444,19843,19844,19845,19846,6600, 543, 19848,490,
427, 16123,565, 8224, 365, 19847,427, 13023,317, 317, 19850,7878, 363, 19851,19852,19856,19864,317, 343, 363, 19853,371, 19854,317, 19855,19857,19861,
- 384, 19862,427, 317, 5623, 317, 19858,19859,19860,3243, 349, 317, 351, 19863,363, 2063, 6402, 6516, 19867,19870,19868,1160, 2610, 19869,339, 4591, 317,
- 19871,371, 565, 9573, 17583,19876,19878,19880,19893,971, 19877,19879,371, 345, 19881,19882,6228, 2077, 317, 574, 19883,19885,2156, 19884,343, 6088, 317,
+ 384, 19862,427, 317, 5623, 317, 19858,19859,19860,3243, 349, 317, 351, 19863,363, 2063, 6402, 6516, 19867,19870,19868,1160, 2610, 19869,339, 4591, 317,
+ 19871,371, 565, 9573, 17583,19876,19878,19880,19893,971, 19877,19879,371, 345, 19881,19882,6228, 2077, 317, 574, 19883,19885,2156, 19884,343, 6088, 317,
19886,19888,19890,19887,19889,19891,19892,19894,19896,19899,2110, 19897,317, 19898,971, 317, 19900,19901,8296, 19902,19904,19905,19906,19912,4984, 19916,19917,
- 19924,19926,19932,19944,19946,19951,19956,19961,19962,19976,19979,19980,19988,19990,317, 1915, 381, 370, 19907,9425, 2413, 19908,404, 18030,317, 1108, 971,
+ 19924,19926,19932,19944,19946,19951,19956,19961,19962,19976,19979,19980,19988,19990,317, 1915, 381, 370, 19907,9425, 2413, 19908,404, 18030,317, 1108, 971,
332, 19909,19910,19911,317, 19913,19914,317, 19915,19918,2156, 19920,19921,19923,19919,8906, 3284, 8301, 19922,317, 19925,11146,514, 8296, 19927,466, 19929,
317, 317, 19928,365, 19930,19931,19933,19934,19937,2116, 19940,317, 2381, 6138, 317, 490, 19935,317, 18849,19936,332, 19938,19939,6065, 5600, 19941,19942,
19943,17462,317, 11146,490, 19945,2317, 13079,17583,19947,19950,317, 19948,595, 19949,19952,317, 19954,19953,19955,466, 317, 19957,363, 19958,490, 19959,
404, 10812,466, 317, 19960,2022, 317, 8771, 19963,9853, 19964,19972,19973,19974,5087, 5335, 2402, 317, 19965,317, 16906,19966,19967,19968,19969,19970,10422,
- 19971,317, 317, 345, 382, 8682, 5450, 332, 370, 19975,7314, 590, 363, 363, 19977,19978,2416, 19981,2610, 15951,19983,19984,19985,12799,19982,448, 448,
+ 19971,317, 317, 345, 382, 8682, 5450, 332, 370, 19975,7314, 590, 363, 363, 19977,19978,2416, 19981,2610, 15951,19983,19984,19985,12799,19982,448, 448,
345, 550, 317, 19986,19987,19989,19991,19993,19994,362, 317, 2310, 2184, 19992,339, 2317, 351, 7055, 19995,19997,20002,20004,20056,20088,20090,20099,19998,
19999,20000,20001,2272, 20003,14806,20005,2067, 637, 20006,20007,1267, 317, 1353, 673, 317, 20008,317, 20009,20010,317, 317, 317, 317, 20011,317, 20012,
- 12628,317, 20013,2022, 20014,20016,5020, 317, 343, 1018, 317, 1267, 317, 649, 621, 317, 317, 317, 317, 317, 317, 4984, 5840, 6036, 1060, 20015,1358,
+ 12628,317, 20013,2022, 20014,20016,5020, 317, 343, 1018, 317, 1267, 317, 649, 621, 317, 317, 317, 317, 317, 317, 4984, 5840, 6036, 1060, 20015,1358,
1160, 317, 20017,20022,20024,10471,20027,20035,20036,350, 20039,20055,345, 1160, 317, 2134, 20018,363, 15093,317, 20019,20020,20021,20023,363, 18084,20025,
7214, 20026,317, 10442,426, 1325, 466, 6046, 317, 20028,317, 20034,363, 404, 363, 20029,317, 317, 317, 20030,317, 20031,317, 5488, 370, 7888, 19283,
363, 20032,363, 20033,5223, 317, 490, 501, 12142,10093,20037,4984, 20038,317, 345, 370, 4789, 317, 317, 20040,20043,20048,317, 20050,317, 317, 20041,
20042,20044,20047,20045,317, 20046,20049,351, 20051,7186, 20052,317, 20053,317, 20054,20057,20078,20087,20058,1325, 20066,20067,317, 20059,317, 20060,20061,
5342, 345, 317, 20062,20063,20064,20065,20068,20075,20076,20069,20072,20070,20071,20073,20074,20077,345, 20079,20081,20080,14558,317, 9857, 8139, 363, 20082,
20083,5449, 317, 20084,20085,20086,317, 8828, 13638,390, 20089,20091,20092,350, 20097,9549, 2163, 20093,20094,20095,20096,20098,20100,20101,20102,20105,20106,
- 20108,20111,3999, 20114,317, 317, 20116,20118,20125,20129,7871, 20134,20136,20139,5309, 20150,371, 20152,20154,317, 20107,11086,5223, 317, 317, 384, 1160,
- 15307,20109,6228, 317, 317, 5991, 20110,2156, 317, 317, 317, 1791, 12630,317, 20112,20113,2108, 20115,4060, 317, 2078, 345, 20117,365, 20119,489, 490,
+ 20108,20111,3999, 20114,317, 317, 20116,20118,20125,20129,7871, 20134,20136,20139,5309, 20150,371, 20152,20154,317, 20107,11086,5223, 317, 317, 384, 1160,
+ 15307,20109,6228, 317, 317, 5991, 20110,2156, 317, 317, 317, 1791, 12630,317, 20112,20113,2108, 20115,4060, 317, 2078, 345, 20117,365, 20119,489, 490,
317, 20124,2366, 317, 20120,20121,20122,20123,10840,20126,5661, 370, 9170, 317, 20127,15745,20128,20130,20131,11388,9170, 365, 11040,20132,511, 20133,20135,
- 371, 490, 13385,20137,20138,20140,20141,2022, 20146,20147,20142,317, 345, 9624, 9878, 10149,5840, 5037, 20143,550, 20144,428, 20145,20148,20149,317, 1347,
+ 371, 490, 13385,20137,20138,20140,20141,2022, 20146,20147,20142,317, 345, 9624, 9878, 10149,5840, 5037, 20143,550, 20144,428, 20145,20148,20149,317, 1347,
2022, 20151,20153,20155,20157,20159,20160,20161,343, 20163,317, 490, 20164,20165,20192,20200,20220,20223,20240,20241,20246,20247,20257,20267,20313,20315,20327,
20370,20389,20409,20412,345, 365, 971, 949, 20166,20168,20169,317, 20172,20173,20176,317, 20183,11388,20190,20167,20170,7035, 20171,5687, 14132,20174,20175,
- 317, 20177,20181,317, 317, 20178,20179,20180,6486, 5611, 489, 7035, 20182,2211, 2211, 20184,20187,20188,20189,20185,317, 20186,5028, 7567, 317, 20191,317,
+ 317, 20177,20181,317, 317, 20178,20179,20180,6486, 5611, 489, 7035, 20182,2211, 2211, 20184,20187,20188,20189,20185,317, 20186,5028, 7567, 317, 20191,317,
350, 317, 20193,371, 20197,5624, 20198,20194,20195,20196,490, 490, 13638,20199,317, 6826, 7312, 20201,20203,20209,20211,20213,20215,317, 6409, 20202,14132,
- 5032, 317, 7095, 317, 20204,20178,20206,20208,20205,15464,2272, 20207,7916, 2210, 7672, 370, 317, 20210,9538, 6486, 317, 7328, 20212,317, 3284, 11198,1108,
+ 5032, 317, 7095, 317, 20204,20178,20206,20208,20205,15464,2272, 20207,7916, 2210, 7672, 370, 317, 20210,9538, 6486, 317, 7328, 20212,317, 3284, 11198,1108,
5836, 20214,20216,20219,20217,20218,10345,351, 20221,343, 20222,317, 20224,1481, 20226,20228,20232,20235,20225,20227,490, 10316,9736, 6551, 20229,20230,20231,
317, 317, 2022, 553, 490, 20233,5611, 20234,332, 20236,20238,20239,16535,20237,7785, 20113,371, 12079,6486, 317, 6540, 20242,317, 971, 20243,317, 20244,
- 317, 20245,20248,20250,7035, 20251,20256,490, 20249,20252,20254,5216, 6517, 370, 20253,20255,3750, 317, 370, 345, 317, 317, 20258,20259,20260,20261,332,
- 20263,20266,6607, 13338,332, 15600,5570, 20262,10203,20264,332, 20265,20268,20269,20277,20281,20298,317, 20302,20303,20306,20307,20311,5241, 351, 6402, 317,
+ 317, 20245,20248,20250,7035, 20251,20256,490, 20249,20252,20254,5216, 6517, 370, 20253,20255,3750, 317, 370, 345, 317, 317, 20258,20259,20260,20261,332,
+ 20263,20266,6607, 13338,332, 15600,5570, 20262,10203,20264,332, 20265,20268,20269,20277,20281,20298,317, 20302,20303,20306,20307,20311,5241, 351, 6402, 317,
20270,20271,20276,317, 20272,20273,20274,20275,317, 20278,1358, 8178, 20280,317, 20279,10234,317, 317, 317, 633, 8116, 317, 20282,6402, 20283,8456, 20296,
20284,20285,20288,317, 20286,20287,20289,339, 20290,20291,20292,20293,20294,20295,2845, 20297,20299,20300,20301,363, 5295, 20304,565, 20305,20308,5043, 20309,
20310,5173, 20312,5241, 2110, 11511,2280, 5955, 20314,7672, 7306, 7383, 345, 401, 20316,13638,20321,20323,20325,5033, 20317,20318,317, 20319,20320,20322,18487,
2272, 2035, 20324,20326,317, 20328,20329,20362,20364,20366,965, 20367,6904, 5033, 332, 2142, 2142, 20330,20331,20332,317, 20334,5624, 18343,20333,466, 20335,
20337,20339,1078, 20336,356, 6387, 370, 317, 20338,317, 5477, 9836, 20340,20342,20347,20351,20352,20358,20341,20343,1428, 20344,20345,20346,343, 498, 20348,
- 20349,20350,20353,20355,20354,20356,18415,20357,2156, 498, 20359,20360,20361,356, 5987, 404, 17454,20363,365, 5428, 5033, 9163, 20365,332, 2211, 5428, 343,
+ 20349,20350,20353,20355,20354,20356,18415,20357,2156, 498, 20359,20360,20361,356, 5987, 404, 17454,20363,365, 5428, 5033, 9163, 20365,332, 2211, 5428, 343,
8170, 20368,345, 20369,20371,20373,8296, 20375,357, 20376,8296, 20379,20381,20383,20372,317, 20374,6228, 633, 5087, 365, 8296, 20377,20378,317, 20380,20382,
317, 20384,20386,5353, 345, 20385,7891, 1347, 20387,20388,20390,20391,5447, 20392,317, 20398,20402,317, 20405,9993, 13962,14132,5167, 16277,317, 345, 20393,
- 17160,20395,20394,20396,20397,20399,20400,20401,345, 363, 6278, 20403,20404,5687, 9427, 317, 20406,4960, 20407,1044, 2260, 20408,433, 7386, 355, 20410,6937,
- 317, 317, 20411,317, 20413,7386, 381, 20414,7689, 343, 574, 20415,5033, 20416,20420,317, 673, 317, 316, 317, 5120, 317, 20417,370, 317, 565, 5055,
+ 17160,20395,20394,20396,20397,20399,20400,20401,345, 363, 6278, 20403,20404,5687, 9427, 317, 20406,4960, 20407,1044, 2260, 20408,433, 7386, 355, 20410,6937,
+ 317, 317, 20411,317, 20413,7386, 381, 20414,7689, 343, 574, 20415,5033, 20416,20420,317, 673, 317, 316, 317, 5120, 317, 20417,370, 317, 565, 5055,
20418,370, 20419,20421,20424,317, 20422,20423,20426,20428,608, 20436,20439,7073, 20447,20449,20452,20427,20429,9961, 20430,20431,20432,20433,20434,20435,20437,
- 20438,6778, 317, 20440,20442,20441,20443,20445,381, 20444,20446,20448,20450,20451,608, 20453,20454,20455,20457,20460,20463,20458,20459,20461,20462,351, 396,
+ 20438,6778, 317, 20440,20442,20441,20443,20445,381, 20444,20446,20448,20450,20451,608, 20453,20454,20455,20457,20460,20463,20458,20459,20461,20462,351, 396,
20464,351, 20465,63, 20585,20642,20696,351, 20697,20750,20751,5677, 20771,20466,20467,20469,20477,20481,20483,20484,1230, 20486,2021, 20492,20493,20499,20513,
- 20517,20537,20546,20550,20566,20571,2067, 20572,6674, 20468,479, 350, 20470,404, 2585, 20471,20472,20473,20474,20475,20476,20478,6546, 20479,20480,4943, 466,
+ 20517,20537,20546,20550,20566,20571,2067, 20572,6674, 20468,479, 350, 20470,404, 2585, 20471,20472,20473,20474,20475,20476,20478,6546, 20479,20480,4943, 466,
20482,345, 2022, 1020, 2117, 20485,8948, 363, 343, 20487,20488,317, 20489,4267, 356, 466, 317, 1230, 5942, 8254, 20490,7990, 20491,363, 12616,20494,14645,
20495,20498,5991, 317, 20496,20497,317, 20500,20501,2184, 363, 20506,20509,20510,18700,20512,1345, 6207, 1160, 20502,20503,20504,20505,466, 20507,20508,20511,
- 5279, 554, 20146,20514,18211,20515,20516,1160, 11034,370, 20518,20521,20533,332, 1347, 2058, 404, 317, 8254, 20519,317, 20520,317, 5626, 343, 404, 490,
+ 5279, 554, 20146,20514,18211,20515,20516,1160, 11034,370, 20518,20521,20533,332, 1347, 2058, 404, 317, 8254, 20519,317, 20520,317, 5626, 343, 404, 490,
317, 490, 2134, 343, 20522,20523,20525,363, 20527,20528,20524,2184, 6425, 5464, 490, 20526,317, 20529,317, 20530,20531,20532,317, 317, 10476,20534,20536,
- 20535,7911, 6195, 363, 404, 5037, 370, 4984, 7858, 5428, 363, 5273, 20538,401, 1009, 20539,20540,2571, 6275, 363, 20545,317, 20541,4965, 20542,965, 317,
+ 20535,7911, 6195, 363, 404, 5037, 370, 4984, 7858, 5428, 363, 5273, 20538,401, 1009, 20539,20540,2571, 6275, 363, 20545,317, 20541,4965, 20542,965, 317,
317, 5701, 18577,317, 317, 20543,2184, 6425, 20544,1347, 1347, 317, 351, 17410,363, 2503, 20547,20548,9931, 20549,8125, 466, 20551,20553,20556,2108, 20557,
20552,20554,20555,7000, 317, 343, 317, 1347, 20558,20559,363, 437, 20560,2110, 5105, 317, 317, 10626,20561,20562,20563,20564,20565,20567,20569,11533,20568,
574, 317, 20570,351, 332, 317, 356, 596, 466, 4980, 20573,20579,404, 370, 20580,20581,4980, 20583,3987, 6674, 551, 20574,20575,20577,317, 6318, 14341,
20576,20578,10580,8978, 363, 12277,20582,343, 11533,351, 20584,20586,10011,20595,20597,3677, 20602,363, 20603,20604,20616,20622,20626,20627,20635,5412, 20636,
- 20640,317, 3640, 20587,20590,16278,20592,20593,317, 20588,3999, 6748, 20589,4873, 1060, 8136, 466, 317, 5708, 13318,9624, 14758,317, 370, 362, 2571, 317,
- 317, 5573, 20591,317, 990, 20594,466, 317, 4952, 2219, 317, 317, 20596,15745,350, 317, 317, 343, 343, 20598,343, 20599,20600,20601,317, 8948, 439,
+ 20640,317, 3640, 20587,20590,16278,20592,20593,317, 20588,3999, 6748, 20589,4873, 1060, 8136, 466, 317, 5708, 13318,9624, 14758,317, 370, 362, 2571, 317,
+ 317, 5573, 20591,317, 990, 20594,466, 317, 4952, 2219, 317, 317, 20596,15745,350, 317, 317, 343, 343, 20598,343, 20599,20600,20601,317, 8948, 439,
490, 4952, 20605,20606,20611,20614,18211,20607,20608,4980, 20609,490, 12800,490, 317, 317, 20610,317, 20612,343, 5616, 20613,317, 317, 20615,8412, 20617,
- 20621,20618,20619,20620,363, 3999, 501, 363, 949, 2631, 2077, 20623,317, 20624,490, 16479,20625,350, 2163, 317, 20628,317, 18699,20630,20633,8254, 317,
- 20629,20631,20632,317, 317, 20634,2022, 7821, 317, 4279, 490, 363, 350, 20637,4738, 4952, 404, 20638,10086,20639,317, 574, 5661, 2571, 20641,345, 2117,
+ 20621,20618,20619,20620,363, 3999, 501, 363, 949, 2631, 2077, 20623,317, 20624,490, 16479,20625,350, 2163, 317, 20628,317, 18699,20630,20633,8254, 317,
+ 20629,20631,20632,317, 317, 20634,2022, 7821, 317, 4279, 490, 363, 350, 20637,4738, 4952, 404, 20638,10086,20639,317, 574, 5661, 2571, 20641,345, 2117,
20643,20644,20647,20653,20656,20657,20662,317, 20685,10376,20689,20690,20695,5866, 363, 479, 20645,20646,5447, 317, 5991, 14172,350, 317, 20648,381, 20649,
- 20650,373, 317, 20651,20652,501, 20654,20655,317, 317, 4737, 551, 12417,404, 317, 20658,20661,9450, 2094, 20659,6033, 1347, 339, 20660,317, 15244,466,
- 363, 317, 551, 20663,20665,20666,20673,20675,20683,20664,3987, 362, 317, 363, 20667,20669,362, 317, 317, 20668,7949, 20670,20671,20672,20674,5701, 5419,
+ 20650,373, 317, 20651,20652,501, 20654,20655,317, 317, 4737, 551, 12417,404, 317, 20658,20661,9450, 2094, 20659,6033, 1347, 339, 20660,317, 15244,466,
+ 363, 317, 551, 20663,20665,20666,20673,20675,20683,20664,3987, 362, 317, 363, 20667,20669,362, 317, 317, 20668,7949, 20670,20671,20672,20674,5701, 5419,
317, 20676,20679,20681,20677,317, 20678,20680,20678,20677,20682,317, 20684,5279, 20686,317, 551, 15244,20687,20688,317, 9876, 345, 20691,339, 2391, 20693,
511, 370, 20692,20694,842, 669, 20698,20699,20700,20705,20706,5955, 20708,20709,10223,7428, 362, 20713,20720,20722,15387,20723,20725,20732,20736,20743,20747,
- 14119,748, 490, 5273, 343, 20701,317, 5991, 466, 20702,317, 12774,20703,393, 20704,10021,4591, 317, 20707,317, 14716,350, 5862, 20710,20711,20712,380,
- 20714,16867,1998, 12704,20715,20719,20716,380, 20717,20718,20721,317, 2222, 404, 317, 317, 20724,20726,10877,20727,20729,20730,12277,2705, 317, 370, 2571,
+ 14119,748, 490, 5273, 343, 20701,317, 5991, 466, 20702,317, 12774,20703,393, 20704,10021,4591, 317, 20707,317, 14716,350, 5862, 20710,20711,20712,380,
+ 20714,16867,1998, 12704,20715,20719,20716,380, 20717,20718,20721,317, 2222, 404, 317, 317, 20724,20726,10877,20727,20729,20730,12277,2705, 317, 370, 2571,
317, 5223, 9720, 1060, 317, 20728,351, 363, 363, 351, 20731,20733,11691,317, 5174, 1588, 20734,15058,317, 317, 20735,317, 15183,20737,20738,20740,20742,
317, 633, 317, 10283,466, 317, 317, 20739,1549, 370, 20741,404, 2236, 350, 362, 20744,345, 418, 317, 20745,317, 6195, 20746,317, 551, 4591, 20748,
- 20749,350, 317, 8301, 370, 388, 466, 317, 20752,20756,20758,396, 14377,317, 20759,20760,20762,343, 20765,20767,350, 2067, 14316,20753,317, 7504, 4952,
- 10008,20754,317, 20755,345, 20757,317, 2571, 7949, 381, 370, 596, 20761,9280, 1347, 317, 20763,20764,317, 370, 20766,7857, 317, 490, 20768,20769,363,
- 317, 20770,8125, 356, 466, 2117, 10943,20772,20774,2156, 332, 20775,2108, 20773,317, 16277,11450,363, 351, 1588, 20776,20777,20778,20779,345, 2694, 351,
+ 20749,350, 317, 8301, 370, 388, 466, 317, 20752,20756,20758,396, 14377,317, 20759,20760,20762,343, 20765,20767,350, 2067, 14316,20753,317, 7504, 4952,
+ 10008,20754,317, 20755,345, 20757,317, 2571, 7949, 381, 370, 596, 20761,9280, 1347, 317, 20763,20764,317, 370, 20766,7857, 317, 490, 20768,20769,363,
+ 317, 20770,8125, 356, 466, 2117, 10943,20772,20774,2156, 332, 20775,2108, 20773,317, 16277,11450,363, 351, 1588, 20776,20777,20778,20779,345, 2694, 351,
20781,20783,20786,380, 20790,20791,371, 20782,20784,20785,380, 20787,20788,20789,20792,20793,20795,339, 20797,20799,20810,20818,20823,365, 1030, 345, 20829,
381, 20796,20798,317, 317, 20800,20806,5810, 20807,20809,20801,351, 20802,20803,20804,20805,20808,20811,20812,20815,9961, 19106,20813,608, 20814,20816,20817,
20819,20820,20821,20822,20824,20825,20826,20827,20828,20830,20833,3918, 317, 20835,20831,608, 20832,20834,11073,8435, 20836,20838,20876,20894,20948,20978,21007,
21022,21039,21055,21068,21072,65, 66, 67, 22077,22131,22178,68, 22358,22416,69, 22619,22643,22669,22672,22678,20837,20839,20844,20846,20847,12528,20849,
20859,20860,20863,20866,20872,20875,20840,317, 20841,20843,466, 317, 362, 12423,345, 20842,20845,317, 20848,20850,20854,20857,20858,4980, 350, 5037, 20851,
20852,20853,20855,20856,5716, 466, 382, 5167, 317, 20861,20862,317, 20864,380, 2510, 20865,16651,8000, 317, 11442,20867,20868,2022, 2022, 20869,20870,20871,
- 20873,20874,356, 15814,427, 20877,20879,501, 20884,9876, 20886,20887,20889,20891,20577,20893,317, 363, 490, 381, 1358, 20878,20880,5055, 20881,578, 317,
- 20882,317, 3869, 1347, 20883,317, 380, 20885,2322, 317, 5661, 317, 317, 4984, 343, 317, 20888,317, 20890,317, 20577,20892,317, 363, 1266, 317, 1648,
+ 20873,20874,356, 15814,427, 20877,20879,501, 20884,9876, 20886,20887,20889,20891,20577,20893,317, 363, 490, 381, 1358, 20878,20880,5055, 20881,578, 317,
+ 20882,317, 3869, 1347, 20883,317, 380, 20885,2322, 317, 5661, 317, 317, 4984, 343, 317, 20888,317, 20890,317, 20577,20892,317, 363, 1266, 317, 1648,
317, 672, 633, 539, 317, 490, 20895,20900,490, 20902,20915,20938,20945,11921,20946,20896,2272, 20898,20897,20899,317, 20901,17462,317, 2081, 20903,20907,
20910,20913,363, 20914,20904,20905,20906,380, 317, 11034,20908,317, 20909,20911,1358, 20912,433, 317, 6318, 363, 363, 427, 317, 320, 633, 20916,10943,
20920,20921,20923,20926,466, 20929,362, 2022, 6255, 20930,20934,20937,317, 343, 20917,20919,2272, 20918,317, 20922,381, 5487, 9878, 15837,428, 10854,20924,
578, 20925,20927,20928,9170, 363, 541, 5332, 20931,20932,20933,427, 554, 5105, 380, 380, 1992, 1076, 381, 20935,20936,20939,1160, 2077, 20940,20941,20942,
- 5055, 20943,20944,317, 574, 748, 8594, 317, 5570, 4268, 2715, 3529, 363, 5428, 345, 363, 6696, 20947,1345, 20949,20950,388, 20965,511, 362, 350, 5055,
+ 5055, 20943,20944,317, 574, 748, 8594, 317, 5570, 4268, 2715, 3529, 363, 5428, 345, 363, 6696, 20947,1345, 20949,20950,388, 20965,511, 362, 350, 5055,
20974,20976,317, 6000, 5441, 317, 20951,1347, 317, 2272, 20952,20954,20956,20958,20961,20963,20964,317, 317, 317, 20953,20955,317, 4576, 20957,20959,20960,
20962,343, 317, 20966,317, 20969,2381, 20970,382, 20972,20967,380, 20968,317, 9166, 317, 317, 317, 317, 317, 317, 317, 317, 12464,2184, 20971,20973,
- 20975,5537, 637, 20977,8301, 2077, 362, 20979,20986,20990,20991,20993,20995,351, 20996,20999,317, 20980,20981,20982,20983,20984,20985,20987,20988,20989,332,
- 17136,332, 363, 20992,20994,350, 1325, 9130, 20997,20998,21000,21004,21001,21002,21003,466, 21005,21006,12956,11654,21008,6598, 21015,21018,21009,21012,4952,
+ 20975,5537, 637, 20977,8301, 2077, 362, 20979,20986,20990,20991,20993,20995,351, 20996,20999,317, 20980,20981,20982,20983,20984,20985,20987,20988,20989,332,
+ 17136,332, 363, 20992,20994,350, 1325, 9130, 20997,20998,21000,21004,21001,21002,21003,466, 21005,21006,12956,11654,21008,6598, 21015,21018,21009,21012,4952,
362, 317, 21010,21011,317, 9720, 7941, 5942, 317, 7504, 317, 21013,380, 21014,5897, 317, 343, 21016,21017,21019,3751, 21020,21021,12696,21023,11398,21024,
21026,21029,21030,21031,21032,21038,428, 479, 332, 21025,317, 5543, 317, 363, 21027,5055, 11450,21028,428, 362, 21033,21034,21037,21035,9749, 21036,21040,
- 21044,21051,5437, 317, 21052,21054,11940,21041,362, 317, 4218, 21042,21043,5225, 466, 317, 1325, 21045,21046,21049,21047,21048,21050,363, 6496, 490, 371,
+ 21044,21051,5437, 317, 21052,21054,11940,21041,362, 317, 4218, 21042,21043,5225, 466, 317, 1325, 21045,21046,21049,21047,21048,21050,363, 6496, 490, 371,
380, 1347, 10251,363, 21053,363, 363, 317, 317, 21056,21057,21058,21061,21067,6387, 1325, 466, 317, 21059,21060,490, 990, 21062,5991, 466, 317, 21063,
21064,21065,466, 317, 21066,317, 2156, 7560, 7360, 21069,21070,21071,21073,16318,17919,317, 6398, 21074,362, 317, 317, 317, 317, 21075,21104,21107,21113,
- 21119,21136,21138,21142,350, 21146,21204,21207,21208,21238,21242,21244,21258,21263,21273,21276,21277,21076,21077,21078,21080,21084,21087,21089,21090,21092,317,
+ 21119,21136,21138,21142,350, 21146,21204,21207,21208,21238,21242,21244,21258,21263,21273,21276,21277,21076,21077,21078,21080,21084,21087,21089,21090,21092,317,
21095,21097,21098,21102,15074,317, 317, 5687, 5058, 1347, 21079,21081,21082,21083,21085,21086,21088,574, 9185, 18480,2211, 21091,350, 867, 18068,21093,21094,
332, 6816, 21096,12752,2322, 18706,17782,21099,21100,5428, 574, 18692,21101,5238, 317, 21103,21105,21106,14341,479, 317, 371, 2551, 11235,390, 21108,21111,
- 551, 5238, 21109,21110,21112,6674, 19303,385, 19487,21114,21116,370, 2571, 2272, 11038,501, 21117,21118,21115,17358,382, 404, 1108, 565, 2553, 6080, 320,
- 21120,21124,4984, 21125,11034,6937, 21127,21128,21129,21133,21134,21135,317, 2193, 21121,21122,21123,2078, 317, 21126,7073, 5684, 363, 363, 21130,21131,7514,
- 21132,2271, 7368, 351, 8023, 12154,363, 2584, 316, 351, 21137,551, 21139,363, 21140,7073, 21141,6002, 2178, 12852,351, 2590, 490, 21143,21144,2163, 6228,
+ 551, 5238, 21109,21110,21112,6674, 19303,385, 19487,21114,21116,370, 2571, 2272, 11038,501, 21117,21118,21115,17358,382, 404, 1108, 565, 2553, 6080, 320,
+ 21120,21124,4984, 21125,11034,6937, 21127,21128,21129,21133,21134,21135,317, 2193, 21121,21122,21123,2078, 317, 21126,7073, 5684, 363, 363, 21130,21131,7514,
+ 21132,2271, 7368, 351, 8023, 12154,363, 2584, 316, 351, 21137,551, 21139,363, 21140,7073, 21141,6002, 2178, 12852,351, 2590, 490, 21143,21144,2163, 6228,
1347, 9623, 350, 317, 21145,21147,21164,21184,18460,21195,21202,21203,21148,332, 332, 351, 21154,2171, 4268, 21155,21158,21159,332, 21149,21150,21151,21152,
5447, 21153,2510, 382, 5515, 5550, 21156,5447, 21157,373, 382, 7035, 317, 356, 317, 317, 21160,5987, 317, 21161,21162,21163,21165,21166,990, 5684, 21172,
- 11121,1358, 6600, 21182,317, 21167,317, 21168,356, 21169,7419, 317, 2155, 382, 5055, 21170,5477, 21171,5355, 370, 5488, 21173,21180,317, 317, 21174,317,
+ 11121,1358, 6600, 21182,317, 21167,317, 21168,356, 21169,7419, 317, 2155, 382, 5055, 21170,5477, 21171,5355, 370, 5488, 21173,21180,317, 317, 21174,317,
21175,21176,21177,21178,21179,21181,317, 427, 317, 1347, 5550, 363, 21183,21185,21186,21187,362, 21188,21189,21194,350, 317, 317, 2117, 317, 21190,21191,
- 317, 21193,6089, 19440,404, 21192,317, 363, 5037, 5809, 10120,363, 350, 5488, 21196,317, 1347, 370, 21197,1109, 490, 332, 21198,21199,317, 21200,427,
+ 317, 21193,6089, 19440,404, 21192,317, 363, 5037, 5809, 10120,363, 350, 5488, 21196,317, 1347, 370, 21197,1109, 490, 332, 21198,21199,317, 21200,427,
21201,5343, 370, 5174, 1347, 490, 5226, 351, 2171, 7866, 21205,21206,317, 317, 9623, 867, 2809, 317, 21209,21210,21211,21212,21215,21226,21227,21233,21236,
- 2079, 345, 4984, 21213,317, 317, 1347, 21214,317, 5421, 351, 365, 317, 9623, 21216,21217,21222,21224,11055,317, 21218,317, 1347, 21220,21221,21219,317,
- 5249, 317, 5225, 1325, 1347, 5225, 13296,466, 21223,393, 21225,317, 21228,21230,379, 21231,2571, 317, 6294, 21229,404, 2110, 2128, 317, 21232,381, 1526,
+ 2079, 345, 4984, 21213,317, 317, 1347, 21214,317, 5421, 351, 365, 317, 9623, 21216,21217,21222,21224,11055,317, 21218,317, 1347, 21220,21221,21219,317,
+ 5249, 317, 5225, 1325, 1347, 5225, 13296,466, 21223,393, 21225,317, 21228,21230,379, 21231,2571, 317, 6294, 21229,404, 2110, 2128, 317, 21232,381, 1526,
21234,21235,380, 741, 6704, 345, 21237,5225, 356, 379, 466, 2571, 317, 21239,21240,21241,371, 1999, 21243,18971,2117, 21245,363, 21246,404, 21247,21248,
- 21249,21250,317, 21252,21257,21251,21253,21254,2128, 21255,21256,21259,740, 12886,16163,362, 363, 21260,21262,21261,363, 21264,8841, 427, 21265,6551, 490,
+ 21249,21250,317, 21252,21257,21251,21253,21254,2128, 21255,21256,21259,740, 12886,16163,362, 363, 21260,21262,21261,363, 21264,8841, 427, 21265,6551, 490,
21266,21270,21272,21267,21268,317, 596, 345, 6387, 6904, 21269,5483, 343, 21271,351, 356, 6514, 317, 551, 21274,21275,351, 351, 2117, 404, 317, 21278,
- 21282,21301,21304,21305,21319,21323,21325,5661, 21337,21398,21399,21403,21507,21510,21511,21513,363, 2416, 317, 21279,10832,317, 5956, 21280,21281,317, 5028,
- 351, 317, 21283,21288,21289,9170, 317, 21296,21297,345, 21284,21285,4267, 5395, 317, 511, 21286,21287,317, 317, 317, 5223, 21290,21291,5447, 317, 466,
- 21292,5054, 21293,21294,21295,21298,21299,356, 21300,351, 373, 363, 21302,21303,2060, 21306,5960, 404, 21308,317, 4476, 363, 21311,9182, 363, 21312,317,
- 21315,21316,21307,21309,317, 5055, 317, 21310,339, 490, 317, 21313,2024, 2280, 317, 21314,317, 568, 317, 317, 21317,21318,21320,317, 21321,21322,317,
- 9482, 5991, 466, 317, 21324,21326,490, 539, 2381, 21332,965, 21333,21335,317, 5701, 21327,21331,21328,21329,21330,1347, 6993, 13216,478, 317, 404, 5661,
- 317, 21334,21336,317, 317, 21338,21342,21367,21378,21386,15540,21339,317, 21340,317, 317, 4267, 21341,466, 5399, 1347, 317, 317, 2247, 6123, 351, 5241,
- 21343,21348,21359,317, 21344,21345,21346,21347,21349,21350,21354,21356,7807, 466, 21351,356, 466, 317, 373, 21352,5054, 21353,380, 21355,21357,356, 466,
- 317, 5201, 21358,21360,2024, 21366,317, 21361,21362,21363,21364,370, 317, 21365,18587,1347, 16354,21368,21375,21355,317, 2022, 21369,21370,21372,21371,2631,
- 317, 317, 21373,21374,356, 5399, 317, 21376,380, 21377,466, 3854, 317, 12019,21379,21381,5226, 317, 21380,13161,345, 5650, 4591, 5201, 17943,21382,370,
+ 21282,21301,21304,21305,21319,21323,21325,5661, 21337,21398,21399,21403,21507,21510,21511,21513,363, 2416, 317, 21279,10832,317, 5956, 21280,21281,317, 5028,
+ 351, 317, 21283,21288,21289,9170, 317, 21296,21297,345, 21284,21285,4267, 5395, 317, 511, 21286,21287,317, 317, 317, 5223, 21290,21291,5447, 317, 466,
+ 21292,5054, 21293,21294,21295,21298,21299,356, 21300,351, 373, 363, 21302,21303,2060, 21306,5960, 404, 21308,317, 4476, 363, 21311,9182, 363, 21312,317,
+ 21315,21316,21307,21309,317, 5055, 317, 21310,339, 490, 317, 21313,2024, 2280, 317, 21314,317, 568, 317, 317, 21317,21318,21320,317, 21321,21322,317,
+ 9482, 5991, 466, 317, 21324,21326,490, 539, 2381, 21332,965, 21333,21335,317, 5701, 21327,21331,21328,21329,21330,1347, 6993, 13216,478, 317, 404, 5661,
+ 317, 21334,21336,317, 317, 21338,21342,21367,21378,21386,15540,21339,317, 21340,317, 317, 4267, 21341,466, 5399, 1347, 317, 317, 2247, 6123, 351, 5241,
+ 21343,21348,21359,317, 21344,21345,21346,21347,21349,21350,21354,21356,7807, 466, 21351,356, 466, 317, 373, 21352,5054, 21353,380, 21355,21357,356, 466,
+ 317, 5201, 21358,21360,2024, 21366,317, 21361,21362,21363,21364,370, 317, 21365,18587,1347, 16354,21368,21375,21355,317, 2022, 21369,21370,21372,21371,2631,
+ 317, 317, 21373,21374,356, 5399, 317, 21376,380, 21377,466, 3854, 317, 12019,21379,21381,5226, 317, 21380,13161,345, 5650, 4591, 5201, 17943,21382,370,
8897, 317, 21383,21384,21385,21387,21395,21388,1347, 21389,21201,3125, 574, 21390,382, 363, 965, 21393,21394,21391,373, 1915, 21392,5447, 5847, 2510, 11366,
596, 317, 21396,5394, 466, 21397,5221, 351, 7951, 384, 11761,317, 20178,21400,317, 21401,317, 362, 345, 21402,21404,21428,350, 21442,21445,21465,21472,
- 21486,21489,21491,21405,1588, 21408,21410,1588, 21414,21415,21421,21426,317, 21406,317, 356, 21407,370, 2571, 351, 317, 5650, 363, 21409,5241, 21411,1347,
+ 21486,21489,21491,21405,1588, 21408,21410,1588, 21414,21415,21421,21426,317, 21406,317, 356, 21407,370, 2571, 351, 317, 5650, 363, 21409,5241, 21411,1347,
317, 1347, 21412,21413,21416,5447, 21420,2211, 9756, 21417,21418,5458, 6021, 21419,351, 382, 5054, 21422,317, 345, 21423,21424,21425,6270, 21427,17768,21429,
21430,1358, 21435,5174, 317, 6904, 21431,21432,21433,5447, 5113, 21434,21436,21439,317, 21437,317, 21438,5324, 1347, 596, 317, 382, 21440,21441,2510, 10758,
- 21443,21444,5365, 5394, 466, 21446,21449,21458,21463,2184, 5967, 21447,21448,4267, 356, 3999, 317, 1347, 381, 21450,9150, 21456,21451,21452,21453,21454,356,
- 466, 317, 21455,5226, 345, 21457,363, 5201, 6266, 21459,5464, 21460,343, 5501, 7585, 21461,21462,21464,21466,21467,12662,4267, 317, 5394, 21468,21471,1588,
- 382, 21469,1347, 21470,351, 382, 9852, 2381, 466, 21473,21483,21484,21474,21479,21480,21475,21476,5363, 21477,21478,373, 363, 5550, 21481,5464, 21482,2510,
- 5457, 382, 5055, 343, 21485,21487,404, 21488,363, 21490,21492,21497,21499,21493,21494,21495,21496,317, 21498,21500,21504,466, 5457, 21501,21502,21503,317,
+ 21443,21444,5365, 5394, 466, 21446,21449,21458,21463,2184, 5967, 21447,21448,4267, 356, 3999, 317, 1347, 381, 21450,9150, 21456,21451,21452,21453,21454,356,
+ 466, 317, 21455,5226, 345, 21457,363, 5201, 6266, 21459,5464, 21460,343, 5501, 7585, 21461,21462,21464,21466,21467,12662,4267, 317, 5394, 21468,21471,1588,
+ 382, 21469,1347, 21470,351, 382, 9852, 2381, 466, 21473,21483,21484,21474,21479,21480,21475,21476,5363, 21477,21478,373, 363, 5550, 21481,5464, 21482,2510,
+ 5457, 382, 5055, 343, 21485,21487,404, 21488,363, 21490,21492,21497,21499,21493,21494,21495,21496,317, 21498,21500,21504,466, 5457, 21501,21502,21503,317,
317, 21505,317, 6996, 21506,317, 1526, 7888, 21508,370, 343, 21509,2171, 2584, 21512,2163, 21514,317, 373, 317, 21515,21516,355, 489, 21517,21518,21519,
- 8301, 21527,21594,21629,21635,21696,21729,21737,21754,21759,21762,21764,21790,21798,21807,21811,21932,22033,22036,22072,22073,22074,373, 21520,21521,11654,448,
+ 8301, 21527,21594,21629,21635,21696,21729,21737,21754,21759,21762,21764,21790,21798,21807,21811,21932,22033,22036,22072,22073,22074,373, 21520,21521,11654,448,
21522,10824,15608,21523,21525,21526,1230, 21524,21528,21532,21561,21566,21573,21576,21585,21588,21529,10699,21530,343, 21531,6402, 13696,21533,5717, 21535,21537,
- 21542,21548,21555,489, 21534,5991, 466, 3854, 317, 6763, 5487, 21536,9482, 5447, 466, 21538,21539,21540,339, 21541,5447, 5113, 351, 5226, 404, 21543,5054,
- 317, 21544,21545,21546,21547,370, 1526, 10674,5273, 21549,5028, 356, 21550,21554,19922,1347, 317, 21551,21552,21553,21556,21557,21558,21559,21560,317, 1588,
+ 21542,21548,21555,489, 21534,5991, 466, 3854, 317, 6763, 5487, 21536,9482, 5447, 466, 21538,21539,21540,339, 21541,5447, 5113, 351, 5226, 404, 21543,5054,
+ 317, 21544,21545,21546,21547,370, 1526, 10674,5273, 21549,5028, 356, 21550,21554,19922,1347, 317, 21551,21552,21553,21556,21557,21558,21559,21560,317, 1588,
370, 21562,489, 21563,21564,3125, 21565,21567,21569,365, 5550, 2272, 21568,21570,21571,317, 317, 21572,404, 448, 9383, 21574,5717, 21575,20360,2146, 21577,
21580,21583,21578,21579,21581,21582,317, 1109, 21584,21586,21587,5324, 3640, 8000, 21589,21593,21590,357, 21591,466, 317, 21592,6021, 5324, 21595,21596,21607,
21612,21622,21625,373, 332, 2271, 21597,21598,21599,317, 21603,12849,357, 21600,21601,5394, 466, 21602,21604,21605,21606,381, 317, 396, 5399, 5611, 21608,
317, 21609,317, 21610,21611,5701, 10422,466, 317, 21613,21615,21618,21619,317, 21620,21614,3874, 5709, 21616,317, 21617,21621,1345, 21623,21624,317, 21626,
396, 4268, 434, 21627,523, 356, 21628,7419, 317, 382, 363, 7327, 370, 11089,357, 21630,7698, 21631,21632,21633,1347, 21634,21636,21637,21653,21673,21676,
21682,21691,317, 351, 7035, 21638,21643,21648,21651,2715, 21639,21640,21641,21642,21434,317, 21644,21645,21646,21647,19032,21649,3854, 5174, 317, 21650,21652,
- 5464, 21470,351, 21654,21662,21349,21667,21671,317, 21655,21657,466, 21656,317, 21658,317, 2156, 21659,21660,370, 21661,21663,21664,21665,1325, 466, 373,
+ 5464, 21470,351, 21654,21662,21349,21667,21671,317, 21655,21657,466, 21656,317, 21658,317, 2156, 21659,21660,370, 21661,21663,21664,21665,1325, 466, 373,
21666,21668,21669,356, 466, 317, 21670,5054, 448, 21672,21674,21675,6265, 5543, 5536, 433, 21677,10237,21678,5439, 21679,1325, 21681,317, 317, 514, 21680,
382, 381, 370, 21683,370, 21687,21684,21685,21686,21688,21689,21690,356, 466, 317, 21692,21694,21693,10679,345, 5447, 21695,5514, 5055, 1347, 404, 21697,
343, 21703,21708,21709,21698,317, 21701,1033, 21699,21700,433, 21702,356, 5221, 2067, 21704,21705,21706,21707,21710,21717,434, 6265, 21711,317, 21712,21713,
21714,21715,5447, 21716,448, 382, 3079, 21718,21725,343, 21719,1915, 21720,1325, 21721,382, 21722,21723,21724,317, 317, 21726,345, 21727,10149,1871, 21728,
9549, 21730,21731,21733,21735,2067, 21732,21734,317, 21736,21738,21743,21746,21739,21740,21741,21742,21744,21745,21747,21749,5717, 21748,370, 317, 19032,21750,
- 332, 21751,21752,5055, 21753,317, 317, 5828, 21755,363, 21756,21757,7053, 317, 3999, 21758,5055, 6021, 21760,21761,317, 533, 317, 371, 363, 21763,2809,
+ 332, 21751,21752,5055, 21753,317, 317, 5828, 21755,363, 21756,21757,7053, 317, 3999, 21758,5055, 6021, 21760,21761,317, 533, 317, 371, 363, 21763,2809,
317, 317, 21765,21768,21778,2022, 21782,2222, 471, 317, 418, 21766,21767,21769,21770,317, 418, 21775,6834, 21777,345, 11962,7465, 317, 21771,317, 21772,
- 21773,7419, 317, 385, 382, 5055, 21774,21776,317, 370, 15510,317, 317, 381, 5661, 317, 18661,317, 371, 1160, 396, 21779,5225, 21781,21780,523, 466,
+ 21773,7419, 317, 385, 382, 5055, 21774,21776,317, 370, 15510,317, 317, 381, 5661, 317, 18661,317, 371, 1160, 396, 21779,5225, 21781,21780,523, 466,
21783,21787,317, 21788,21789,21784,21785,21786,5365, 345, 21791,21796,317, 21797,351, 350, 21792,21793,21794,21795,1345, 370, 317, 21799,21800,21802,21801,
4268, 21803,21804,21805,21806,21808,21810,317, 21809,380, 317, 390, 21812,21817,21828,21853,490, 21865,21876,21887,21923,1189, 21813,363, 21814,21815,21816,
21818,21824,21819,21823,21820,2156, 21821,21822,21825,21826,21827,21829,380, 332, 21835,21839,21844,381, 21830,21833,21831,21832,1325, 5987, 2510, 21834,21836,
- 21837,356, 21838,317, 21840,21841,21842,2156, 21843,9313, 370, 21845,21846,5447, 466, 9922, 21847,21848,21850,9782, 427, 21849,1588, 21851,21852,317, 317,
- 345, 317, 427, 21854,21858,21861,21855,2272, 21856,21857,356, 466, 317, 6020, 9063, 21859,9118, 21860,21862,21863,466, 448, 317, 317, 21864,370, 5324,
+ 21837,356, 21838,317, 21840,21841,21842,2156, 21843,9313, 370, 21845,21846,5447, 466, 9922, 21847,21848,21850,9782, 427, 21849,1588, 21851,21852,317, 317,
+ 345, 317, 427, 21854,21858,21861,21855,2272, 21856,21857,356, 466, 317, 6020, 9063, 21859,9118, 21860,21862,21863,466, 448, 317, 317, 21864,370, 5324,
21866,21870,21873,21867,5447, 21868,317, 350, 5226, 2537, 5500, 21869,21871,21872,343, 9853, 21874,21875,317, 317, 382, 427, 21877,21880,21878,21879,21881,
21883,21882,21884,5447, 466, 5201, 21885,21886,21888,21896,21899,21911,21889,21890,2156, 8204, 21891,317, 21892,9680, 317, 317, 21893,370, 317, 317, 21894,
345, 21895,6600, 6070, 590, 8484, 21897,21898,343, 13696,21900,21901,5226, 21902,21904,21903,5201, 1347, 5447, 21905,382, 21906,343, 21907,21908,317, 21909,
21910,370, 21912,21915,21918,21913,21914,356, 466, 317, 1347, 21916,21917,356, 404, 351, 21919,356, 21920,356, 21921,2510, 317, 373, 382, 9852, 21922,
5324, 18577,21924,21925,21929,21926,7821, 21927,317, 21928,356, 466, 317, 21903,5554, 21168,21930,466, 5095, 5225, 317, 21931,317, 21933,21945,21963,21972,
- 21978,22032,21934,2146, 21936,21939,21941,2210, 317, 21935,356, 466, 2571, 317, 21937,21938,21940,9124, 466, 3854, 317, 21942,21943,21944,4268, 6435, 317,
- 317, 21946,21957,21959,21960,21961,21947,21948,21950,21956,21949,21951,21952,363, 21953,5201, 21954,317, 21955,410, 5727, 12631,21958,356, 7836, 3854, 317,
- 317, 490, 20488,21962,21964,21965,21966,21969,317, 317, 21970,21967,343, 21968,490, 4564, 317, 21971,5447, 8792, 21955,427, 5324, 514, 5167, 21973,345,
+ 21978,22032,21934,2146, 21936,21939,21941,2210, 317, 21935,356, 466, 2571, 317, 21937,21938,21940,9124, 466, 3854, 317, 21942,21943,21944,4268, 6435, 317,
+ 317, 21946,21957,21959,21960,21961,21947,21948,21950,21956,21949,21951,21952,363, 21953,5201, 21954,317, 21955,410, 5727, 12631,21958,356, 7836, 3854, 317,
+ 317, 490, 20488,21962,21964,21965,21966,21969,317, 317, 21970,21967,343, 21968,490, 4564, 317, 21971,5447, 8792, 21955,427, 5324, 514, 5167, 21973,345,
7185, 21975,317, 20712,21974,332, 21976,356, 21977,21979,22015,22017,22022,21980,21984,21991,21995,22002,22004,22006,22008,2322, 22010,21981,356, 21982,21983,
21985,21989,21986,21987,21988,356, 21990,2510, 317, 9313, 7327, 382, 5055, 21992,21993,21994,356, 5113, 448, 317, 21996,343, 21997,21998,21999,22000,22001,
- 356, 3640, 22003,332, 5167, 22005,345, 22007,317, 2035, 22009,22011,22013,22012,22014,1325, 5226, 345, 380, 348, 22016,8243, 345, 345, 348, 22018,332,
- 15531,1526, 22019,22020,5447, 5113, 22021,22023,22025,317, 317, 343, 22024,317, 410, 10422,466, 22026,22027,22028,22029,317, 22030,345, 22031,412, 370,
+ 356, 3640, 22003,332, 5167, 22005,345, 22007,317, 2035, 22009,22011,22013,22012,22014,1325, 5226, 345, 380, 348, 22016,8243, 345, 345, 348, 22018,332,
+ 15531,1526, 22019,22020,5447, 5113, 22021,22023,22025,317, 317, 343, 22024,317, 410, 10422,466, 22026,22027,22028,22029,317, 22030,345, 22031,412, 370,
22034,22035,317, 22037,22042,22062,22067,22069,351, 22038,22039,22040,22041,6266, 466, 6430, 22043,22048,13323,22061,8136, 22044,351, 22047,22045,382, 22046,
10512,5324, 21503,317, 317, 433, 22049,22051,22058,317, 22050,466, 22052,7640, 5113, 345, 381, 22053,22054,22055,22056,22057,317, 10422,22059,317, 22060,
- 382, 5458, 2156, 21649,356, 466, 2510, 317, 22063,373, 22065,22064,356, 5113, 317, 22066,6425, 1526, 22068,1347, 22070,22071,370, 428, 428, 2301, 317,
+ 382, 5458, 2156, 21649,356, 466, 2510, 317, 22063,373, 22065,22064,356, 5113, 317, 22066,6425, 1526, 22068,1347, 22070,22071,370, 428, 428, 2301, 317,
2510, 13178,22075,22076,22078,22079,370, 22080,466, 22081,22089,22103,22105,536, 22108,22117,1109, 22127,22130,6036, 317, 363, 10476,7448, 22082,554, 22084,
362, 22088,5840, 345, 14062,317, 317, 22083,317, 22085,22086,317, 9088, 317, 633, 1160, 22087,370, 2022, 363, 5840, 2280, 22090,22091,633, 633, 22092,
- 22094,2631, 22097,22098,535, 22099,4952, 22101,5087, 370, 22102,2571, 2272, 317, 14071,362, 22093,17366,317, 6674, 22095,370, 22096,5055, 390, 382, 2261,
- 317, 1347, 381, 317, 22100,3366, 17565,990, 1347, 1992, 1160, 5684, 1588, 317, 22104,12563,6546, 317, 19228,343, 2077, 11443,22106,2022, 22107,1358, 1108,
+ 22094,2631, 22097,22098,535, 22099,4952, 22101,5087, 370, 22102,2571, 2272, 317, 14071,362, 22093,17366,317, 6674, 22095,370, 22096,5055, 390, 382, 2261,
+ 317, 1347, 381, 317, 22100,3366, 17565,990, 1347, 1992, 1160, 5684, 1588, 317, 22104,12563,6546, 317, 19228,343, 2077, 11443,22106,2022, 22107,1358, 1108,
1588, 6598, 7509, 356, 990, 22109,350, 317, 6089, 317, 22110,317, 5942, 317, 22111,566, 362, 22114,22115,6089, 343, 22112,5447, 22113,382, 5055, 21849,
2553, 22116,1020, 5841, 22118,317, 317, 22123,22119,10553,22120,22121,22122,5447, 5987, 2510, 317, 22124,22125,22126,317, 22128,4965, 2156, 317, 22129,22132,
- 317, 22135,350, 22147,22148,2022, 22150,22153,22161,22166,22167,22168,22172,22133,317, 1347, 22134,2094, 317, 22136,362, 22140,9822, 22143,317, 22137,363,
+ 317, 22135,350, 22147,22148,2022, 22150,22153,22161,22166,22167,22168,22172,22133,317, 1347, 22134,2094, 317, 22136,362, 22140,9822, 22143,317, 22137,363,
1325, 22138,22139,345, 22141,466, 22142,437, 350, 22144,22145,22146,11279,12925,3869, 382, 7834, 7389, 22149,363, 363, 22151,501, 22152,7091, 22154,22159,
- 6917, 22160,317, 7091, 380, 11640,22155,1347, 317, 14444,332, 22156,16137,2271, 11158,22158,9719, 317, 22157,2413, 381, 343, 11678,371, 7530, 317, 2060,
- 22162,22163,22164,22165,428, 1345, 11089,351, 339, 317, 22169,317, 22170,22171,317, 404, 448, 2631, 9385, 7276, 22173,22176,22174,22175,22177,22179,2610,
+ 6917, 22160,317, 7091, 380, 11640,22155,1347, 317, 14444,332, 22156,16137,2271, 11158,22158,9719, 317, 22157,2413, 381, 343, 11678,371, 7530, 317, 2060,
+ 22162,22163,22164,22165,428, 1345, 11089,351, 339, 317, 22169,317, 22170,22171,317, 404, 448, 2631, 9385, 7276, 22173,22176,22174,22175,22177,22179,2610,
22180,373, 3375, 20492,22181,22187,22193,22195,22208,22213,22214,22215,22224,22228,22233,22237,22264,22273,22288,22317,22325,22342,22344,22352,22353,22357,22182,
- 5439, 554, 317, 22183,317, 317, 18263,317, 22186,332, 20217,5087, 343, 343, 22184,317, 22185,317, 4984, 22188,22191,2022, 317, 9914, 22192,4984, 380,
- 22189,317, 5223, 22190,317, 317, 317, 21621,5223, 22194,5570, 11505,7514, 22196,22197,22200,17040,350, 22204,16838,317, 345, 22207,3987, 317, 343, 332,
- 332, 9454, 490, 317, 317, 867, 22198,10072,22199,4925, 317, 5418, 22201,22202,343, 22203,490, 22205,490, 22206,490, 317, 1325, 2236, 22209,1347, 363,
- 380, 22211,1358, 22212,489, 1160, 22210,363, 9262, 22216,317, 317, 20909,9163, 22218,22221,11279,390, 22223,317, 22217,370, 317, 317, 2067, 5793, 317,
+ 5439, 554, 317, 22183,317, 317, 18263,317, 22186,332, 20217,5087, 343, 343, 22184,317, 22185,317, 4984, 22188,22191,2022, 317, 9914, 22192,4984, 380,
+ 22189,317, 5223, 22190,317, 317, 317, 21621,5223, 22194,5570, 11505,7514, 22196,22197,22200,17040,350, 22204,16838,317, 345, 22207,3987, 317, 343, 332,
+ 332, 9454, 490, 317, 317, 867, 22198,10072,22199,4925, 317, 5418, 22201,22202,343, 22203,490, 22205,490, 22206,490, 317, 1325, 2236, 22209,1347, 363,
+ 380, 22211,1358, 22212,489, 1160, 22210,363, 9262, 22216,317, 317, 20909,9163, 22218,22221,11279,390, 22223,317, 22217,370, 317, 317, 2067, 5793, 317,
22219,22220,8214, 345, 22222,7951, 345, 22225,22226,19922,11236,22227,427, 1160, 18322,317, 22229,476, 317, 317, 22230,345, 381, 317, 317, 22231,22232,
22234,22235,22236,7785, 1345, 317, 362, 351, 22238,22239,2077, 22242,22247,22250,22255,22257,317, 382, 317, 22259,22262,4984, 10619,332, 428, 22240,22241,
22243,317, 19565,332, 22244,22246,317, 9661, 317, 22245,6648, 404, 2163, 317, 317, 6387, 4980, 1347, 5960, 356, 466, 20883,356, 6598, 22248,11687,22249,
428, 22251,22253,22252,22254,22256,380, 382, 390, 363, 22258,380, 7651, 22260,317, 381, 22261,22263,428, 22265,22267,22270,317, 433, 345, 22266,22268,
- 22269,22271,22272,2715, 317, 332, 317, 317, 370, 317, 5167, 5909, 317, 22274,466, 22280,2328, 22285,22286,22275,22276,22277,22278,22279,22281,22282,433,
- 363, 5226, 1347, 317, 22283,1347, 22284,5055, 5355, 22287,317, 22289,22291,490, 22307,22313,317, 22316,317, 22290,1078, 317, 317, 332, 7892, 9427, 1160,
+ 22269,22271,22272,2715, 317, 332, 317, 317, 370, 317, 5167, 5909, 317, 22274,466, 22280,2328, 22285,22286,22275,22276,22277,22278,22279,22281,22282,433,
+ 363, 5226, 1347, 317, 22283,1347, 22284,5055, 5355, 22287,317, 22289,22291,490, 22307,22313,317, 22316,317, 22290,1078, 317, 317, 332, 7892, 9427, 1160,
22292,22293,2146, 22296,22298,22299,9244, 317, 5611, 22301,381, 317, 343, 22294,356, 22295,370, 2571, 351, 317, 382, 9852, 343, 2537, 22297,2146, 10970,
- 22300,317, 22302,22303,22304,22305,22306,8553, 317, 317, 317, 13011,22308,22310,22311,350, 22312,4984, 317, 11921,363, 22309,595, 7672, 317, 317, 2067,
- 343, 22314,5492, 317, 5220, 317, 22315,21188,22063,22318,22319,22320,554, 22322,22324,343, 15646,332, 357, 381, 2142, 365, 22321,317, 22323,6394, 5439,
- 22326,22327,22328,22338,15745,22340,2301, 317, 7053, 343, 317, 6278, 317, 317, 22329,332, 22334,22336,380, 345, 22330,22331,22332,22333,22335,1108, 9182,
- 317, 22337,22339,1109, 22341,317, 332, 317, 6968, 22343,22345,22346,22349,317, 345, 351, 8304, 317, 317, 6402, 490, 22347,673, 22348,22350,22351,317,
- 428, 5055, 22354,22356,4591, 22355,22359,370, 20219,501, 22360,22362,22364,22366,22368,22369,22371,350, 22386,22391,22397,22415,317, 380, 22361,574, 317,
+ 22300,317, 22302,22303,22304,22305,22306,8553, 317, 317, 317, 13011,22308,22310,22311,350, 22312,4984, 317, 11921,363, 22309,595, 7672, 317, 317, 2067,
+ 343, 22314,5492, 317, 5220, 317, 22315,21188,22063,22318,22319,22320,554, 22322,22324,343, 15646,332, 357, 381, 2142, 365, 22321,317, 22323,6394, 5439,
+ 22326,22327,22328,22338,15745,22340,2301, 317, 7053, 343, 317, 6278, 317, 317, 22329,332, 22334,22336,380, 345, 22330,22331,22332,22333,22335,1108, 9182,
+ 317, 22337,22339,1109, 22341,317, 332, 317, 6968, 22343,22345,22346,22349,317, 345, 351, 8304, 317, 317, 6402, 490, 22347,673, 22348,22350,22351,317,
+ 428, 5055, 22354,22356,4591, 22355,22359,370, 20219,501, 22360,22362,22364,22366,22368,22369,22371,350, 22386,22391,22397,22415,317, 380, 22361,574, 317,
9422, 490, 22363,16458,3529, 434, 22365,332, 351, 363, 22367,2156, 317, 490, 317, 2211, 317, 22370,14174,605, 9521, 22372,22374,22375,22373,6171, 10252,
7223, 317, 6228, 22376,14883,20048,22377,22378,317, 382, 13631,22379,22382,22380,22381,22383,22384,22385,5481, 317, 351, 1230, 22387,22388,22389,22390,22392,
22394,22396,22393,5962, 1999, 332, 22395,10820,317, 5483, 317, 317, 317, 22398,332, 22403,22410,22413,350, 363, 317, 22414,5590, 22399,363, 1078, 22401,
22402,317, 22400,2004, 15830,7954, 8637, 1526, 317, 2110, 22404,22409,317, 22405,22406,22408,22407,362, 22411,22412,5611, 605, 370, 1479, 605, 317, 22417,
22419,22424,22428,350, 362, 22431,22432,22433,22436,22438,18170,22448,6240, 22418,22420,22421,2027, 22422,317, 317, 343, 22423,427, 22425,22427,22426,22429,
- 22430,6036, 5022, 22434,22435,590, 380, 345, 22437,22439,4591, 22442,22445,343, 362, 22446,11398,317, 22440,317, 22441,22443,22444,11603,317, 428, 428,
+ 22430,6036, 5022, 22434,22435,590, 380, 345, 22437,22439,4591, 22442,22445,343, 362, 22446,11398,317, 22440,317, 22441,22443,22444,11603,317, 428, 428,
362, 351, 12588,13178,317, 22447,317, 317, 2948, 3646, 5005, 6089, 22449,317, 22450,22451,22453,22456,370, 433, 22461,12280,22467,22478,22566,22571,22598,
- 22603,22614,3648, 22452,22454,317, 22455,362, 317, 11034,317, 22457,22460,317, 22458,22459,22462,351, 22464,22463,1160, 1160, 22465,466, 22466,362, 317,
+ 22603,22614,3648, 22452,22454,317, 22455,362, 317, 11034,317, 22457,22460,317, 22458,22459,22462,351, 22464,22463,1160, 1160, 22465,466, 22466,362, 317,
345, 16410,22468,6021, 22473,15130,22474,22476,22477,22469,317, 22470,22471,22472,22475,317, 404, 363, 404, 345, 351, 550, 363, 6532, 22479,5561, 22486,
22489,22480,338, 22481,22482,22483,22484,2510, 317, 1871, 363, 22485,2334, 317, 22487,22488,356, 466, 21358,362, 2510, 317, 317, 22490,5840, 22491,22562,
- 2571, 385, 22563,7821, 22565,6020, 390, 317, 317, 21318,22492,345, 317, 22493,22498,22503,22509,22513,22519,22531,22536,22540,22547,22554,22556,22558,8567,
+ 2571, 385, 22563,7821, 22565,6020, 390, 317, 317, 21318,22492,345, 317, 22493,22498,22503,22509,22513,22519,22531,22536,22540,22547,22554,22556,22558,8567,
22494,22495,22496,22497,22499,22500,22501,22502,22504,22505,22506,22507,22508,317, 22510,22511,22512,22514,22516,22515,22517,22518,22520,317, 22521,22526,22522,
22523,22524,22525,22527,22530,22528,22529,363, 22532,22535,22533,22534,22537,22538,22539,21006,317, 22541,11617,22543,22542,22544,22545,22546,22548,22549,22550,
22551,22552,22553,22555,22557,2146, 14058,22559,22560,22561,596, 22564,317, 317, 10149,2260, 2260, 365, 2260, 22567,22569,5055, 317, 317, 22568,317, 14251,
@@ -7481,26 +7476,26 @@ static const unsigned int ChildLocs[185261] =
2272, 317, 7419, 5538, 5619, 2405, 990, 350, 22583,466, 363, 9319, 317, 1347, 317, 12423,317, 317, 22585,22586,7504, 22590,22591,22592,22593,22594,22595,
22596,22597,317, 6710, 590, 317, 22587,16838,4591, 317, 22589,22588,990, 11944,530, 11619,1597, 2261, 370, 2301, 22599,22600,17366,22601,11921,317, 22602,
10471,317, 317, 22604,8600, 22606,22610,317, 343, 317, 345, 22612,317, 22605,317, 22607,22608,22609,22611,22613,22615,22616,22617,22618,22620,22627,22638,
- 22642,22621,22622,22623,14433,317, 9749, 22624,22625,22626,5241, 22628,22629,22634,317, 5363, 317, 22630,370, 22633,22631,22632,22635,22636,356, 4249, 9648,
+ 22642,22621,22622,22623,14433,317, 9749, 22624,22625,22626,5241, 22628,22629,22634,317, 5363, 317, 22630,370, 22633,22631,22632,22635,22636,356, 4249, 9648,
16138,22637,1060, 343, 4564, 373, 428, 370, 363, 317, 5033, 22639,22640,22641,490, 1358, 317, 11330,317, 22644,22647,22651,22655,22656,22658,22659,22661,
362, 345, 22663,22664,22666,22667,5379, 1347, 22645,22646,317, 514, 370, 317, 428, 22648,9914, 22649,6996, 320, 22650,1060, 22652,22653,363, 382, 16838,
- 22654,1345, 317, 317, 12966,1347, 2184, 317, 19979,351, 22657,380, 4564, 22660,317, 1992, 6859, 22662,1992, 1108, 22665,343, 21274,22668,343, 22670,2571,
+ 22654,1345, 317, 317, 12966,1347, 2184, 317, 19979,351, 22657,380, 4564, 22660,317, 1992, 6859, 22662,1992, 1108, 22665,343, 21274,22668,343, 22670,2571,
363, 22671,427, 3987, 317, 317, 350, 317, 22673,332, 4965, 350, 22674,343, 6917, 22677,317, 22675,22676,361, 6419, 22679,370, 3079, 22680,1999, 22681,
2184, 22682,1325, 381, 317, 3079, 317, 22683,317, 9422, 343, 427, 22685,380, 317, 367, 317, 317, 590, 22686,22689,22687,22688,22691,22692,22693,22694,
- 22695,71, 22789,22865,22867,22869,22937,22941,22943,72, 22685,23038,9699, 23091,22696,22697,22700,22709,22712,22719,22720,22724,380, 22725,22729,22745,370,
- 22749,22751,22756,22764,22769,22778,22779,22781,22698,22699,12616,17601,428, 343, 317, 15334,345, 22701,317, 22703,22708,6894, 22702,317, 22704,22705,9759,
- 3999, 472, 3987, 3869, 22707,317, 317, 22706,317, 1194, 317, 14920,5241, 317, 22710,351, 339, 22711,384, 317, 14263,384, 384, 22713,22714,5991, 466,
+ 22695,71, 22789,22865,22867,22869,22937,22941,22943,72, 22685,23038,9699, 23091,22696,22697,22700,22709,22712,22719,22720,22724,380, 22725,22729,22745,370,
+ 22749,22751,22756,22764,22769,22778,22779,22781,22698,22699,12616,17601,428, 343, 317, 15334,345, 22701,317, 22703,22708,6894, 22702,317, 22704,22705,9759,
+ 3999, 472, 3987, 3869, 22707,317, 317, 22706,317, 1194, 317, 14920,5241, 317, 22710,351, 339, 22711,384, 317, 14263,384, 384, 22713,22714,5991, 466,
363, 22715,317, 22716,22717,14069,363, 22718,12696,351, 1345, 11089,363, 343, 317, 317, 363, 317, 22721,317, 317, 1358, 5711, 6228, 5142, 7866, 11089,
343, 22722,317, 22723,343, 3987, 6394, 373, 22726,351, 5363, 22728,5482, 22727,345, 356, 466, 317, 404, 2108, 22730,343, 22733,11443,22734,22735,22738,
- 12630,22742,22743,351, 22744,1108, 3987, 22731,22732,9695, 2272, 10012,9878, 428, 343, 363, 11743,551, 380, 22736,427, 22737,2406, 5991, 466, 22739,317,
+ 12630,22742,22743,351, 22744,1108, 3987, 22731,22732,9695, 2272, 10012,9878, 428, 343, 363, 11743,551, 380, 22736,427, 22737,2406, 5991, 466, 22739,317,
22740,22741,15734,317, 12154,363, 404, 22746,317, 6817, 22748,10185,22747,5991, 16651,317, 317, 332, 317, 22750,317, 16218,317, 5840, 8020, 466, 22752,
- 390, 22753,2188, 22755,4984, 370, 317, 22754,317, 1914, 317, 22757,22758,317, 4279, 22759,22760,22761,22762,22763,22765,22767,10877,317, 2416, 22766,317,
- 867, 22768,317, 317, 317, 355, 22770,8948, 22774,350, 317, 22776,389, 22771,551, 22772,22773,22775,3999, 317, 317, 22777,317, 3809, 8695, 12155,343,
+ 390, 22753,2188, 22755,4984, 370, 317, 22754,317, 1914, 317, 22757,22758,317, 4279, 22759,22760,22761,22762,22763,22765,22767,10877,317, 2416, 22766,317,
+ 867, 22768,317, 317, 317, 355, 22770,8948, 22774,350, 317, 22776,389, 22771,551, 22772,22773,22775,3999, 317, 317, 22777,317, 3809, 8695, 12155,343,
22780,317, 404, 1325, 22782,22784,370, 22783,2571, 6228, 317, 590, 317, 22785,9262, 317, 22786,22787,317, 362, 3361, 367, 370, 22788,22790,1347, 22803,
- 22804,22812,22819,362, 22821,22822,22823,22832,22837,22838,965, 565, 22844,22854,393, 22857,22861,22791,22792,1345, 22793,7565, 1345, 22795,22797,501, 317,
- 22794,466, 2058, 317, 8116, 22796,362, 363, 317, 5447, 317, 22798,2510, 12277,22799,22800,22801,317, 317, 2272, 317, 22802,397, 332, 10613,343, 317,
- 22805,22810,343, 317, 380, 22806,351, 343, 22807,490, 22808,22809,5457, 373, 22811,410, 490, 356, 466, 12461,317, 22791,22813,362, 362, 22815,8392,
- 362, 22817,317, 343, 317, 22814,363, 317, 317, 9059, 22816,317, 1588, 351, 10422,22818,317, 317, 317, 412, 1992, 12696,21304,22820,363, 2402, 317,
+ 22804,22812,22819,362, 22821,22822,22823,22832,22837,22838,965, 565, 22844,22854,393, 22857,22861,22791,22792,1345, 22793,7565, 1345, 22795,22797,501, 317,
+ 22794,466, 2058, 317, 8116, 22796,362, 363, 317, 5447, 317, 22798,2510, 12277,22799,22800,22801,317, 317, 2272, 317, 22802,397, 332, 10613,343, 317,
+ 22805,22810,343, 317, 380, 22806,351, 343, 22807,490, 22808,22809,5457, 373, 22811,410, 490, 356, 466, 12461,317, 22791,22813,362, 362, 22815,8392,
+ 362, 22817,317, 343, 317, 22814,363, 317, 317, 9059, 22816,317, 1588, 351, 10422,22818,317, 317, 317, 412, 1992, 12696,21304,22820,363, 2402, 317,
20556,1108, 490, 1020, 22824,22829,5055, 22830,317, 22825,1325, 5054, 22826,19922,22827,22828,317, 3079, 3079, 1347, 22831,2272, 22833,17039,22835,22834,22836,
8955, 317, 12815,22839,345, 317, 317, 22840,22841,22842,22843,22845,22849,363, 22850,22851,22852,22853,22846,317, 22847,332, 22848,332, 6108, 5571, 18454,
317, 15734,2004, 362, 363, 3987, 317, 317, 356, 466, 4984, 317, 5573, 6089, 428, 384, 2063, 22855,22856,5055, 7428, 18092,1347, 380, 2381, 317, 22858,
@@ -7508,70 +7503,70 @@ static const unsigned int ChildLocs[185261] =
22884,22891,22895,22896,8613, 22898,22921,22936,2178, 22871,6555, 317, 990, 363, 317, 16906,22873,22874,22875,2402, 404, 551, 22876,22878,2171, 8325, 22877,
317, 2510, 466, 317, 317, 2261, 15030,373, 351, 343, 4952, 317, 396, 20556,317, 317, 351, 350, 2067, 350, 370, 1345, 22885,22886,3078, 317, 18211,
22887,22888,8321, 317, 22889,22890,370, 317, 13986,370, 10674,6651, 351, 22892,22893,3605, 22894,1347, 22897,317, 363, 363, 21186,317, 22899,22901,22903,
- 9624, 345, 22904,19325,22905,22907,22909,22913,380, 3987, 22900,6402, 2105, 317, 6486, 22902,317, 18978,8304, 2272, 22906,317, 22908,15343,317, 317, 345,
- 317, 553, 22910,370, 4738, 350, 362, 363, 317, 22911,22912,22914,22916,22917,22919,317, 22915,490, 6458, 317, 332, 22918,317, 6565, 18313,22920,419,
- 6763, 867, 16570,22922,22925,22928,363, 22933,16679,22923,22924,9624, 17919,6402, 22926,317, 22927,317, 363, 427, 22929,11860,22930,22931,317, 22932,5717,
+ 9624, 345, 22904,19325,22905,22907,22909,22913,380, 3987, 22900,6402, 2105, 317, 6486, 22902,317, 18978,8304, 2272, 22906,317, 22908,15343,317, 317, 345,
+ 317, 553, 22910,370, 4738, 350, 362, 363, 317, 22911,22912,22914,22916,22917,22919,317, 22915,490, 6458, 317, 332, 22918,317, 6565, 18313,22920,419,
+ 6763, 867, 16570,22922,22925,22928,363, 22933,16679,22923,22924,9624, 17919,6402, 22926,317, 22927,317, 363, 427, 22929,11860,22930,22931,317, 22932,5717,
22934,343, 363, 22935,6420, 867, 15464,22938,22939,22940,22942,1519, 317, 7940, 14991,22944,22945,22946,22950,22958,22959,22962,363, 22963,22724,22964,22965,
- 22972,22979,22984,15387,2156, 22985,23009,23011,23019,23020,23035,23036,23037,22947,317, 22948,22949,332, 8357, 539, 7777, 22951,22954,345, 22952,22953,3987,
+ 22972,22979,22984,15387,2156, 22985,23009,23011,23019,23020,23035,23036,23037,22947,317, 22948,22949,332, 8357, 539, 7777, 22951,22954,345, 22952,22953,3987,
1345, 11962,22955,22956,6207, 22957,1347, 5419, 22960,3869, 22961,2117, 343, 551, 1033, 466, 363, 317, 363, 362, 350, 6195, 8733, 317, 370, 8392, 22966,
- 2058, 22968,2024, 343, 2022, 2067, 2134, 22969,371, 317, 22967,3079, 370, 3079, 317, 317, 22970,22971,22973,343, 22974,8223, 22975,343, 22976,22977,6601,
+ 2058, 22968,2024, 343, 2022, 2067, 2134, 22969,371, 317, 22967,3079, 370, 3079, 317, 317, 22970,22971,22973,343, 22974,8223, 22975,343, 22976,22977,6601,
17039,8972, 3987, 22978,5238, 317, 350, 9567, 317, 317, 1109, 345, 317, 22980,1347, 22983,8136, 22981,22982,404, 15983,20146,8392, 22986,6195, 317, 12154,
14865,2022, 22987,362, 332, 363, 22988,23008,3987, 343, 1492, 439, 9557, 363, 317, 363, 22989,22994,22997,22998,7072, 23000,9648, 23001,11236,332, 23004,
- 23005,23006,23007,351, 22990,22992,596, 22991,22993,317, 510, 10487,22995,22996,22999,578, 1358, 439, 370, 23002,23003,3361, 9760, 12303,5841, 12303,428,
- 2627, 439, 6354, 363, 15789,363, 6207, 390, 10471,2509, 6318, 23010,3987, 350, 23012,390, 393, 23015,23016,23017,23013,23014,466, 4965, 8948, 1588, 390,
+ 23005,23006,23007,351, 22990,22992,596, 22991,22993,317, 510, 10487,22995,22996,22999,578, 1358, 439, 370, 23002,23003,3361, 9760, 12303,5841, 12303,428,
+ 2627, 439, 6354, 363, 15789,363, 6207, 390, 10471,2509, 6318, 23010,3987, 350, 23012,390, 393, 23015,23016,23017,23013,23014,466, 4965, 8948, 1588, 390,
351, 23018,5055, 23021,23022,23028,16249,3999, 8392, 23029,23033,23034,351, 7064, 14483,23023,8137, 23024,23025,23026,23027,317, 380, 345, 317, 317, 14337,
23030,541, 317, 401, 23031,317, 23032,1479, 363, 404, 363, 2024, 404, 381, 381, 350, 23039,23045,23047,23049,350, 23050,9075, 23057,23067,23073,23074,
- 23083,317, 3529, 23088,1347, 23040,23041,373, 23042,317, 5324, 343, 23043,2758, 317, 356, 23044,345, 404, 370, 23046,317, 1060, 317, 23048,317, 412,
- 10533,5201, 23051,23052,23054,2222, 317, 23052,23053,23055,3999, 317, 23056,317, 23058,11874,23062,23063,23066,2271, 3987, 23059,317, 317, 23060,23061,317,
+ 23083,317, 3529, 23088,1347, 23040,23041,373, 23042,317, 5324, 343, 23043,2758, 317, 356, 23044,345, 404, 370, 23046,317, 1060, 317, 23048,317, 412,
+ 10533,5201, 23051,23052,23054,2222, 317, 23052,23053,23055,3999, 317, 23056,317, 23058,11874,23062,23063,23066,2271, 3987, 23059,317, 317, 23060,23061,317,
370, 14298,317, 23064,23065,317, 5883, 380, 381, 317, 16129,4268, 16307,404, 23068,23071,23069,5464, 466, 23070,18324,23072,23075,4965, 23077,23078,10476,
23080,23076,317, 6726, 466, 8020, 466, 343, 23079,23081,317, 317, 23082,317, 23084,317, 23087,2551, 7428, 23085,23086,9624, 2022, 2510, 6354, 23089,23090,
332, 317, 379, 867, 317, 317, 12696,23092,16438,4965, 3999, 23093,23102,23119,23126,23094,13956,23096,23095,23097,23098,23099,23100,23101,23103,23104,23108,
23109,317, 23105,23106,23107,23110,23115,23117,23111,23112,23113,23114,9537, 23116,23118,345, 350, 317, 23120,23121,343, 23122,317, 317, 317, 317, 23123,
317, 23124,20061,343, 23125,23128,23129,23130,23132,23135,490, 19726,10997,23138,23139,23140,490, 1345, 317, 11516,23131,317, 23133,23134,357, 317, 23136,
- 23137,384, 4477, 7850, 489, 19080,23141,23143,23144,23151,23154,23162,317, 23166,23145,23149,23146,23147,23148,23150,23152,23153,3830, 23155,3664, 23156,2733,
+ 23137,384, 4477, 7850, 489, 19080,23141,23143,23144,23151,23154,23162,317, 23166,23145,23149,23146,23147,23148,23150,23152,23153,3830, 23155,3664, 23156,2733,
23157,23159,23158,317, 317, 23160,23161,316, 317, 396, 23163,317, 23164,23165,23167,23173,23168,23169,23170,23171,23172,23174,23184,23196,23217,23224,23230,
23235,2134, 23236,23243,23245,23249,23284,23316,23335,23336,23350,23404,23424,23453,23454,23455,23457,23175,7711, 23177,23179,867, 23180,23176,21562,1347, 23178,
- 363, 9215, 23181,23182,23183,23185,23188,23190,362, 23191,5087, 317, 23194,371, 23186,10375,1358, 23187,990, 23189,1160, 3573, 404, 317, 332, 9262, 490,
- 345, 23192,317, 2142, 343, 5250, 23193,317, 362, 23195,23197,23200,23204,23208,23210,317, 23212,348, 22621,23198,23199,867, 23201,23203,317, 23202,317,
- 15463,9301, 9623, 6834, 23205,23206,23207,23209,317, 5687, 20276,350, 23211,2413, 23213,22864,23215,23216,748, 23214,390, 5483, 23218,23219,317, 317, 9779,
- 2171, 2022, 5809, 2170, 23220,23221,23222,317, 1194, 2070, 558, 5538, 23223,466, 317, 23225,317, 22843,10832,23226,23229,332, 6409, 317, 23227,317, 332,
+ 363, 9215, 23181,23182,23183,23185,23188,23190,362, 23191,5087, 317, 23194,371, 23186,10375,1358, 23187,990, 23189,1160, 3573, 404, 317, 332, 9262, 490,
+ 345, 23192,317, 2142, 343, 5250, 23193,317, 362, 23195,23197,23200,23204,23208,23210,317, 23212,348, 22621,23198,23199,867, 23201,23203,317, 23202,317,
+ 15463,9301, 9623, 6834, 23205,23206,23207,23209,317, 5687, 20276,350, 23211,2413, 23213,22864,23215,23216,748, 23214,390, 5483, 23218,23219,317, 317, 9779,
+ 2171, 2022, 5809, 2170, 23220,23221,23222,317, 1194, 2070, 558, 5538, 23223,466, 317, 23225,317, 22843,10832,23226,23229,332, 6409, 317, 23227,317, 332,
332, 23228,23231,2178, 23232,23233,23234,362, 317, 317, 381, 2211, 2073, 23237,23240,404, 23238,23239,23241,23242,1999, 1347, 345, 23244,23246,351, 23248,
- 317, 23247,23250,23251,3750, 23257,9298, 23258,1020, 23259,23264,9298, 23269,23271,17039,23275,23281,3987, 23252,23255,23253,404, 23254,23256,361, 8205, 332,
+ 317, 23247,23250,23251,3750, 23257,9298, 23258,1020, 23259,23264,9298, 23269,23271,17039,23275,23281,3987, 23252,23255,23253,404, 23254,23256,361, 8205, 332,
2510, 23260,23261,362, 23263,427, 317, 317, 1347, 1347, 404, 317, 350, 362, 23262,317, 404, 18661,16825,501, 317, 317, 404, 351, 23265,317, 23266,
- 23267,23268,23270,23272,23273,381, 6255, 23274,23276,363, 317, 23279,1358, 1915, 23277,23278,373, 1347, 22122,23280,317, 5418, 5447, 466, 23282,23283,7401,
- 404, 9720, 949, 2060, 2060, 633, 23285,23286,23294,516, 550, 23295,23297,23299,23305,23307,23308,23309,23310,13631,23314,3869, 9521, 23287,23288,5793, 9914,
- 317, 5406, 317, 317, 23289,9119, 23290,23292,13631,23291,7368, 23293,23296,2242, 370, 23298,23300,23302,23301,23303,23304,17007,317, 23306,20178,2060, 2067,
- 404, 23311,23312,385, 5653, 23313,23315,21833,345, 23317,23318,23322,317, 490, 23324,23325,23326,23333,590, 317, 362, 356, 317, 23319,317, 371, 396,
- 23320,23321,23323,317, 490, 12987,317, 332, 13178,317, 317, 2272, 501, 23327,371, 23328,7678, 23329,23330,363, 23331,404, 23332,317, 633, 7428, 1962,
- 2391, 23334,332, 332, 382, 343, 7399, 832, 4965, 23337,23338,23340,5255, 23342,23343,23346,23349,23339,6402, 317, 23341,9422, 345, 317, 23344,596, 317,
+ 23267,23268,23270,23272,23273,381, 6255, 23274,23276,363, 317, 23279,1358, 1915, 23277,23278,373, 1347, 22122,23280,317, 5418, 5447, 466, 23282,23283,7401,
+ 404, 9720, 949, 2060, 2060, 633, 23285,23286,23294,516, 550, 23295,23297,23299,23305,23307,23308,23309,23310,13631,23314,3869, 9521, 23287,23288,5793, 9914,
+ 317, 5406, 317, 317, 23289,9119, 23290,23292,13631,23291,7368, 23293,23296,2242, 370, 23298,23300,23302,23301,23303,23304,17007,317, 23306,20178,2060, 2067,
+ 404, 23311,23312,385, 5653, 23313,23315,21833,345, 23317,23318,23322,317, 490, 23324,23325,23326,23333,590, 317, 362, 356, 317, 23319,317, 371, 396,
+ 23320,23321,23323,317, 490, 12987,317, 332, 13178,317, 317, 2272, 501, 23327,371, 23328,7678, 23329,23330,363, 23331,404, 23332,317, 633, 7428, 1962,
+ 2391, 23334,332, 332, 382, 343, 7399, 832, 4965, 23337,23338,23340,5255, 23342,23343,23346,23349,23339,6402, 317, 23341,9422, 345, 317, 23344,596, 317,
23345,381, 23347,317, 23348,23351,23356,23359,23360,23361,23362,23363,23369,23373,23375,23377,23378,23380,23390,23392,23397,501, 2142, 23403,373, 23352,23353,
- 23354,332, 596, 317, 5447, 9130, 23355,332, 6113, 23357,466, 23358,12417,317, 427, 317, 332, 357, 2683, 590, 317, 2381, 2067, 317, 4980, 317, 6697,
- 362, 1358, 332, 5105, 6763, 5861, 23364,23368,427, 490, 23365,23366,5200, 317, 23367,317, 351, 397, 370, 23370,23372,317, 317, 1160, 317, 317, 1347,
- 1347, 1347, 23371,23374,370, 605, 23376,23379,23381,23383,23385,317, 317, 390, 558, 23382,380, 23384,365, 317, 6408, 317, 5477, 23386,23389,16704,8125,
- 23387,23388,4965, 427, 5447, 5395, 23391,345, 23393,23395,350, 317, 23396,23394,5244, 1347, 343, 317, 6420, 345, 317, 23398,23399,23400,317, 18092,5761,
+ 23354,332, 596, 317, 5447, 9130, 23355,332, 6113, 23357,466, 23358,12417,317, 427, 317, 332, 357, 2683, 590, 317, 2381, 2067, 317, 4980, 317, 6697,
+ 362, 1358, 332, 5105, 6763, 5861, 23364,23368,427, 490, 23365,23366,5200, 317, 23367,317, 351, 397, 370, 23370,23372,317, 317, 1160, 317, 317, 1347,
+ 1347, 1347, 23371,23374,370, 605, 23376,23379,23381,23383,23385,317, 317, 390, 558, 23382,380, 23384,365, 317, 6408, 317, 5477, 23386,23389,16704,8125,
+ 23387,23388,4965, 427, 5447, 5395, 23391,345, 23393,23395,350, 317, 23396,23394,5244, 1347, 343, 317, 6420, 345, 317, 23398,23399,23400,317, 18092,5761,
543, 317, 317, 317, 23401,1992, 23402,23405,332, 23406,23407,23412,7657, 1347, 23413,23414,23423,5809, 371, 13076,2163, 551, 23408,23409,362, 350, 13856,
- 317, 15682,317, 23410,23411,401, 10641,15682,7785, 7657, 363, 16318,350, 363, 23415,12014,345, 23416,514, 356, 23417,23420,317, 23418,317, 23419,317,
+ 317, 15682,317, 23410,23411,401, 10641,15682,7785, 7657, 363, 16318,350, 363, 23415,12014,345, 23416,514, 356, 23417,23420,317, 23418,317, 23419,317,
21495,2510, 23421,317, 1526, 23422,6055, 1325, 466, 23425,23426,23427,23430,5809, 23431,23435,23437,332, 23440,23441,23444,23448,7053, 490, 18092,1230, 11086,
- 5810, 5810, 23428,428, 23429,5055, 8099, 4249, 2571, 317, 22578,23432,351, 428, 3987, 23433,23434,317, 2155, 23436,2142, 23438,21434,23439,11434,332, 343,
+ 5810, 5810, 23428,428, 23429,5055, 8099, 4249, 2571, 317, 22578,23432,351, 428, 3987, 23433,23434,317, 2155, 23436,2142, 23438,21434,23439,11434,332, 343,
4268, 23442,23443,9504, 380, 1109, 23445,5809, 23446,4738, 23447,384, 7231, 23449,23450,23451,317, 317, 14388,489, 23452,317, 343, 350, 16029,10774,23456,
350, 317, 317, 332, 384, 362, 23458,317, 12721,23460,23462,23463,23465,23469,23472,23461,23173,1243, 23464,5655, 371, 9961, 23466,19088,23467,23468,23470,
23471,23473,23474,23475,23476,23477,23479,380, 23480,23483,8613, 23481,371, 23482,23485,23486,23493,23487,23488,23489,23491,23490,23492,23494,23495,23497,23504,
- 23522,23539,23544,23545,23552,8735, 23559,23563,23567,23572,23583,23589,23592,11346,23616,23498,2080, 1109, 2261, 23499,23500,23501,23502,23503,1999, 23505,428,
- 23520,23521,16535,343, 23506,317, 23507,23511,11786,490, 10149,23512,23515,5353, 23517,23519,23508,23509,23510,23513,23514,23516,23518,516, 14042,317, 6355,
- 23523,23525,23524,4591, 23526,23527,23528,23529,7969, 501, 343, 317, 565, 317, 317, 1230, 7560, 1992, 21656,5488, 23530,23533,23534,23535,23537,23538,8926,
+ 23522,23539,23544,23545,23552,8735, 23559,23563,23567,23572,23583,23589,23592,11346,23616,23498,2080, 1109, 2261, 23499,23500,23501,23502,23503,1999, 23505,428,
+ 23520,23521,16535,343, 23506,317, 23507,23511,11786,490, 10149,23512,23515,5353, 23517,23519,23508,23509,23510,23513,23514,23516,23518,516, 14042,317, 6355,
+ 23523,23525,23524,4591, 23526,23527,23528,23529,7969, 501, 343, 317, 565, 317, 317, 1230, 7560, 1992, 21656,5488, 23530,23533,23534,23535,23537,23538,8926,
13338,23531,23532,23536,6420, 339, 345, 23172,15754,5423, 1160, 23540,23541,23542,23543,1033, 18853,23546,23548,23551,23547,381, 317, 23549,23550,23553,23554,
- 23555,23556,23557,23558,351, 23560,13638,5055, 23561,23562,2510, 520, 23564,317, 23566,590, 4564, 23565,363, 5838, 23568,11481,23570,5677, 23569,5701, 5343,
+ 23555,23556,23557,23558,351, 23560,13638,5055, 23561,23562,2510, 520, 23564,317, 23566,590, 4564, 23565,363, 5838, 23568,11481,23570,5677, 23569,5701, 5343,
317, 23571,3090, 23573,23575,23577,23574,23576,23578,23579,345, 6050, 317, 363, 363, 23580,4268, 23581,23582,6920, 23584,23586,971, 2128, 23588,317, 23585,
23587,317, 883, 1160, 23590,2271, 23591,317, 5241, 23593,23613,23594,23596,10253,23600,23601,23603,23610,362, 23595,23597,23598,23599,23602,2272, 23604,23609,
- 23605,23606,23607,23608,23611,23612,23614,23615,10655,23617,23619,23634,23658,23661,23662,23667,23669,23620,23623,23625,23628,23621,23622,317, 23624,317, 8296,
+ 23605,23606,23607,23608,23611,23612,23614,23615,10655,23617,23619,23634,23658,23661,23662,23667,23669,23620,23623,23625,23628,23621,23622,317, 23624,317, 8296,
11280,23626,351, 3284, 317, 8296, 23627,412, 13638,23629,23631,317, 11146,23630,2402, 489, 317, 23632,23633,23635,23643,23646,2203, 23649,23653,23636,23637,
- 317, 23638,5836, 23639,23640,23641,23642,23644,23645,23647,23648,7689, 23650,371, 11346,23651,23652,317, 12154,23654,23655,23656,23657,23659,23660,2073, 971,
+ 317, 23638,5836, 23639,23640,23641,23642,23644,23645,23647,23648,7689, 23650,371, 11346,23651,23652,317, 12154,23654,23655,23656,23657,23659,23660,2073, 971,
23663,23665,23664,490, 23666,23668,15480,1108, 23670,23671,23752,23754,23756,23764,23768,23773,23776,23778,23781,23786,75, 24323,24350,24374,77, 25798,25829,
- 25835,81, 26848,26884,26900,26905,26926,83, 27423,84, 27656,27665,85, 28027,28032,28056,28110,23672,23712,23725,23733,23736,23746,23748,23750,23751,5225,
- 23673,23679,23683,317, 316, 23686,23688,23693,7577, 23697,19398,23707,23711,1444, 490, 23674,23675,23676,23677,23678,23680,23682,23681,8162, 23684,23685,1998,
+ 25835,81, 26848,26884,26900,26905,26926,83, 27423,84, 27656,27665,85, 28027,28032,28056,28110,23672,23712,23725,23733,23736,23746,23748,23750,23751,5225,
+ 23673,23679,23683,317, 316, 23686,23688,23693,7577, 23697,19398,23707,23711,1444, 490, 23674,23675,23676,23677,23678,23680,23682,23681,8162, 23684,23685,1998,
23687,4280, 17725,343, 2322, 23689,5428, 23691,23692,8722, 23690,10594,18068,589, 23694,13174,23695,23696,23698,23703,23705,23706,23699,317, 317, 23700,23701,
- 23702,23704,13135,317, 1444, 2163, 23708,23710,23709,590, 23713,23715,23722,23724,23714,490, 23716,23717,23718,23719,23720,23721,2351, 23723,381, 343, 7045,
- 23726,23729,23727,23728,23730,23732,23731,381, 12785,23734,2074, 6606, 23728,23735,23737,317, 393, 23739,23741,23743,418, 23738,23740,23742,23744,23745,317,
+ 23702,23704,13135,317, 1444, 2163, 23708,23710,23709,590, 23713,23715,23722,23724,23714,490, 23716,23717,23718,23719,23720,23721,2351, 23723,381, 343, 7045,
+ 23726,23729,23727,23728,23730,23732,23731,381, 12785,23734,2074, 6606, 23728,23735,23737,317, 393, 23739,23741,23743,418, 23738,23740,23742,23744,23745,317,
1230, 23747,23749,1358, 15510,23753,4797, 4797, 2233, 12719,4798, 3360, 339, 2233, 4797, 23755,11091,23757,23759,23762,23758,23760,23761,23763,23765,23766,23767,
23769,23770,23771,23772,23774,23775,23777,23779,23780,23782,23783,23784,23785,23787,23789,23788,23790,365, 10283,23791,23802,23813,23823,23827,23835,23860,23869,
23892,23893,23901,23952,76, 24072,24073,24080,24084,24177,24201,24220,24261,24288,24300,24301,24320,23792,23793,7476, 23795,343, 23796,2022, 23798,23799,23801,
@@ -7579,115 +7574,115 @@ static const unsigned int ChildLocs[185261] =
23805,5616, 343, 1347, 363, 1108, 23811,317, 428, 949, 23814,23816,23817,1345, 23822,5173, 317, 490, 4980, 317, 317, 317, 23815,412, 332, 317, 23818,
490, 23819,2035, 317, 23820,3375, 2537, 428, 6228, 1160, 317, 633, 338, 317, 23821,317, 2211, 450, 10243,590, 23824,8096, 5054, 23825,317, 2066, 23826,
317, 23828,23832,23834,2051, 479, 363, 23829,404, 23830,23831,317, 23833,10246,343, 23836,23837,3236, 23840,23845,23847,345, 10223,565, 23848,23850,23852,
- 23853,6089, 23838,23839,317, 23841,317, 23843,2163, 23842,317, 343, 23844,23846,317, 317, 6420, 381, 363, 23849,6318, 317, 23851,317, 15027,390, 1999,
- 2280, 8972, 23854,332, 362, 23855,23856,23857,23858,23859,23861,637, 351, 11654,23862,23867,15749,23868,5896, 23863,3023, 23864,23865,5793, 362, 23866,6601,
+ 23853,6089, 23838,23839,317, 23841,317, 23843,2163, 23842,317, 343, 23844,23846,317, 317, 6420, 381, 363, 23849,6318, 317, 23851,317, 15027,390, 1999,
+ 2280, 8972, 23854,332, 362, 23855,23856,23857,23858,23859,23861,637, 351, 11654,23862,23867,15749,23868,5896, 23863,3023, 23864,23865,5793, 362, 23866,6601,
6603, 8421, 7592, 317, 22412,363, 7866, 317, 2022, 356, 23870,7035, 365, 23872,11484,11388,332, 23873,23874,23882,23885,23888,23889,6382, 345, 8563, 23871,
8390, 317, 4060, 317, 343, 14982,317, 343, 370, 10147,317, 317, 2683, 23875,363, 332, 23876,23877,23878,23879,23880,23881,16865,23883,371, 317, 23884,
23886,23887,317, 596, 2184, 1345, 365, 2156, 2022, 553, 23890,6228, 317, 3692, 2077, 23891,317, 2211, 351, 781, 23391,9521, 23894,23896,23899,317, 23895,
23897,23898,637, 5942, 317, 633, 317, 317, 23900,317, 18333,23902,23903,11034,23906,23914,23916,23918,23921,23922,23924,23933,23937,23939,23942,23945,23946,
1108, 23948,23951,2236, 317, 317, 21190,317, 2035, 317, 23904,317, 7785, 23905,317, 651, 23907,649, 3284, 317, 13638,23908,1347, 23910,317, 343, 23911,
- 345, 317, 23909,23912,343, 23913,23912,332, 23915,363, 23917,1999, 23919,23920,350, 4984, 2146, 490, 490, 317, 317, 8243, 490, 317, 23923,545, 317,
- 23925,23929,23931,23932,990, 2184, 332, 1588, 317, 490, 23926,5612, 23927,637, 5942, 23928,651, 649, 316, 317, 317, 23930,490, 317, 523, 317, 4980,
- 5663, 2405, 350, 23934,2004, 867, 317, 23935,317, 317, 23936,23938,2073, 7399, 317, 23940,2462, 23941,574, 2322, 23943,23944,6517, 343, 404, 23947,2022,
+ 345, 317, 23909,23912,343, 23913,23912,332, 23915,363, 23917,1999, 23919,23920,350, 4984, 2146, 490, 490, 317, 317, 8243, 490, 317, 23923,545, 317,
+ 23925,23929,23931,23932,990, 2184, 332, 1588, 317, 490, 23926,5612, 23927,637, 5942, 23928,651, 649, 316, 317, 317, 23930,490, 317, 523, 317, 4980,
+ 5663, 2405, 350, 23934,2004, 867, 317, 23935,317, 317, 23936,23938,2073, 7399, 317, 23940,2462, 23941,574, 2322, 23943,23944,6517, 343, 404, 23947,2022,
6420, 2537, 23949,23950,8035, 2134, 23953,23963,23969,5561, 23971,23975,23978,23981,23982,23988,23990,23954,23956,23959,23960,23961,332, 4952, 23955,466, 23957,
- 23958,317, 317, 6834, 12796,23962,317, 490, 345, 23964,5898, 23965,23966,390, 418, 393, 5381, 317, 23967,23968,2537, 2537, 317, 363, 23970,317, 6089,
- 23972,332, 23974,8937, 363, 9174, 317, 23973,23976,23977,14172,8178, 317, 6055, 1479, 23979,6089, 14172,589, 23980,633, 412, 6394, 565, 6691, 7865, 390,
+ 23958,317, 317, 6834, 12796,23962,317, 490, 345, 23964,5898, 23965,23966,390, 418, 393, 5381, 317, 23967,23968,2537, 2537, 317, 363, 23970,317, 6089,
+ 23972,332, 23974,8937, 363, 9174, 317, 23973,23976,23977,14172,8178, 317, 6055, 1479, 23979,6089, 14172,589, 23980,633, 412, 6394, 565, 6691, 7865, 390,
2510, 23983,317, 23984,23986,317, 351, 20146,1347, 23985,23987,382, 428, 23989,23991,1588, 23992,23993,317, 380, 949, 317, 23994,23996,23997,24009,24013,
- 11686,24017,317, 24021,490, 24037,2022, 24040,24042,24055,24056,24060,24066,24068,24069,24071,317, 23995,20578,317, 23998,23999,24008,3999, 1078, 317, 7850,
- 24000,6228, 410, 317, 24006,543, 317, 14425,24007,317, 24001,24002,24003,24004,24005,317, 24010,490, 1358, 24011,24012,16989,317, 21666,5623, 2261, 490,
- 7368, 605, 3529, 1913, 370, 24014,24015,317, 24016,574, 605, 5793, 24018,381, 21186,24019,24020,317, 9624, 8577, 317, 9325, 490, 24022,380, 24032,490,
- 24033,433, 317, 24036,490, 24023,24024,10038,24025,317, 317, 317, 1353, 317, 317, 1160, 317, 24026,24027,24030,8177, 24031,317, 24028,24029,363, 365,
- 363, 404, 24034,317, 490, 343, 24035,842, 24038,6596, 24039,18387,317, 5809, 24041,24043,24044,6415, 24049,24052,317, 23695,24053,22786,1453, 24045,362,
+ 11686,24017,317, 24021,490, 24037,2022, 24040,24042,24055,24056,24060,24066,24068,24069,24071,317, 23995,20578,317, 23998,23999,24008,3999, 1078, 317, 7850,
+ 24000,6228, 410, 317, 24006,543, 317, 14425,24007,317, 24001,24002,24003,24004,24005,317, 24010,490, 1358, 24011,24012,16989,317, 21666,5623, 2261, 490,
+ 7368, 605, 3529, 1913, 370, 24014,24015,317, 24016,574, 605, 5793, 24018,381, 21186,24019,24020,317, 9624, 8577, 317, 9325, 490, 24022,380, 24032,490,
+ 24033,433, 317, 24036,490, 24023,24024,10038,24025,317, 317, 317, 1353, 317, 317, 1160, 317, 24026,24027,24030,8177, 24031,317, 24028,24029,363, 365,
+ 363, 404, 24034,317, 490, 343, 24035,842, 24038,6596, 24039,18387,317, 5809, 24041,24043,24044,6415, 24049,24052,317, 23695,24053,22786,1453, 24045,362,
24046,317, 574, 5896, 24047,24048,317, 389, 24050,317, 317, 24051,781, 6228, 317, 24054,317, 317, 648, 317, 396, 343, 741, 11831,5836, 24057,24058,
- 343, 1358, 363, 5037, 439, 448, 317, 24059,345, 8446, 24061,14829,24063,6816, 24065,24062,24064,317, 24067,350, 490, 1033, 5038, 24070,605, 317, 351,
- 10561,363, 317, 18577,14586,345, 24074,24076,24077,23995,5590, 24078,24079,2272, 24075,343, 1060, 2322, 15074,574, 317, 466, 24081,24082,24083,332, 317,
- 24085,24089,24093,24096,24102,1444, 24106,24109,24114,24116,24136,24142,24144,24149,490, 24151,24156,24157,24165,24168,24171,24175,317, 24086,24087,8937, 317,
- 317, 24088,10035,10471,24090,24091,332, 24092,2272, 5017, 317, 5154, 24094,13868,1358, 317, 345, 1160, 24095,24097,17711,345, 363, 317, 24098,24099,317,
+ 343, 1358, 363, 5037, 439, 448, 317, 24059,345, 8446, 24061,14829,24063,6816, 24065,24062,24064,317, 24067,350, 490, 1033, 5038, 24070,605, 317, 351,
+ 10561,363, 317, 18577,14586,345, 24074,24076,24077,23995,5590, 24078,24079,2272, 24075,343, 1060, 2322, 15074,574, 317, 466, 24081,24082,24083,332, 317,
+ 24085,24089,24093,24096,24102,1444, 24106,24109,24114,24116,24136,24142,24144,24149,490, 24151,24156,24157,24165,24168,24171,24175,317, 24086,24087,8937, 317,
+ 317, 24088,10035,10471,24090,24091,332, 24092,2272, 5017, 317, 5154, 24094,13868,1358, 317, 345, 1160, 24095,24097,17711,345, 363, 317, 24098,24099,317,
24101,24100,24103,380, 24104,11055,317, 24105,24107,21094,24108,18454,971, 24110,24112,4984, 317, 370, 24113,24111,24115,363, 8519, 6228, 1087, 24117,24120,
- 24121,2609, 24122,8506, 19453,24123,24126,24127,24129,7916, 11242,24133,24135,24118,24119,396, 5273, 317, 381, 24124,24125,12485,551, 317, 24128,404, 343,
- 1548, 24130,24131,24132,343, 24134,2261, 379, 7481, 363, 466, 2206, 24137,24138,24139,363, 5793, 317, 24140,317, 24141,317, 13023,317, 404, 24143,2074,
- 11915,363, 6517, 20909,1479, 24145,24146,2022, 578, 24147,24148,24150,317, 1109, 317, 24152,24153,24154,24155,1060, 380, 10946,390, 317, 317, 317, 5105,
+ 24121,2609, 24122,8506, 19453,24123,24126,24127,24129,7916, 11242,24133,24135,24118,24119,396, 5273, 317, 381, 24124,24125,12485,551, 317, 24128,404, 343,
+ 1548, 24130,24131,24132,343, 24134,2261, 379, 7481, 363, 466, 2206, 24137,24138,24139,363, 5793, 317, 24140,317, 24141,317, 13023,317, 404, 24143,2074,
+ 11915,363, 6517, 20909,1479, 24145,24146,2022, 578, 24147,24148,24150,317, 1109, 317, 24152,24153,24154,24155,1060, 380, 10946,390, 317, 317, 317, 5105,
1160, 363, 371, 332, 8977, 12154,390, 317, 4943, 317, 390, 370, 6600, 317, 605, 317, 24158,2024, 24159,6000, 24163,317, 317, 317, 317, 551, 24160,
24162,24161,24164,351, 6191, 565, 317, 490, 24166,24167,1481, 10471,24169,24170,317, 390, 748, 363, 24172,390, 24173,390, 317, 24174,24176,5105, 24178,
- 11716,24179,24181,19264,24182,24189,24191,24193,24196,24197,24198,5241, 365, 490, 24180,317, 343, 14495,24183,23337,24186,24187,490, 24188,5120, 6089, 6228,
- 7127, 24184,24185,317, 317, 1481, 317, 317, 428, 382, 317, 605, 4965, 317, 24190,2219, 24192,24194,363, 24195,748, 8178, 9319, 5926, 24199,317, 6402,
- 2705, 317, 24200,24202,419, 24208,7865, 24210,332, 24211,7871, 365, 15667,24213,24218,24219,317, 317, 24203,24204,18138,24205,24206,8049, 7506, 343, 533,
+ 11716,24179,24181,19264,24182,24189,24191,24193,24196,24197,24198,5241, 365, 490, 24180,317, 343, 14495,24183,23337,24186,24187,490, 24188,5120, 6089, 6228,
+ 7127, 24184,24185,317, 317, 1481, 317, 317, 428, 382, 317, 605, 4965, 317, 24190,2219, 24192,24194,363, 24195,748, 8178, 9319, 5926, 24199,317, 6402,
+ 2705, 317, 24200,24202,419, 24208,7865, 24210,332, 24211,7871, 365, 15667,24213,24218,24219,317, 317, 24203,24204,18138,24205,24206,8049, 7506, 343, 533,
1588, 24207,317, 24209,317, 317, 476, 2272, 317, 1992, 343, 24212,24214,317, 24217,24215,24216,24221,24227,24228,16017,24230,2381, 24241,23015,24244,24247,
- 24251,24253,24254,24259,24222,2022, 317, 24223,24226,24224,2609, 24225,2087, 350, 317, 24229,317, 24231,24233,24234,551, 24232,317, 20871,24235,24236,5459,
+ 24251,24253,24254,24259,24222,2022, 317, 24223,24226,24224,2609, 24225,2087, 350, 317, 24229,317, 24231,24233,24234,551, 24232,317, 20871,24235,24236,5459,
24237,10550,397, 14146,24238,363, 24240,24239,370, 7368, 317, 24242,24243,404, 24245,24246,2571, 24248,24249,24250,363, 24252,390, 317, 350, 24255,12820,
24257,24256,3361, 434, 362, 24258,2108, 24260,949, 24262,490, 24264,24270,2022, 24282,2086, 6138, 24283,24286,2086, 24263,317, 5120, 3505, 317, 637, 24265,
- 6996, 637, 740, 633, 673, 633, 1962, 317, 362, 24266,24268,317, 317, 24269,317, 5826, 317, 2369, 3075, 24267,448, 5943, 8264, 24271,24277,10699,9364,
+ 6996, 637, 740, 633, 673, 633, 1962, 317, 362, 24266,24268,317, 317, 24269,317, 5826, 317, 2369, 3075, 24267,448, 5943, 8264, 24271,24277,10699,9364,
24278,363, 867, 24280,24281,637, 24272,24273,317, 317, 317, 1353, 8345, 1353, 317, 317, 317, 317, 7785, 317, 317, 17501,317, 9064, 2161, 317, 24274,
317, 24275,24276,317, 317, 396, 8178, 8275, 317, 363, 6596, 363, 317, 24279,317, 317, 317, 317, 363, 404, 5037, 19979,437, 317, 381, 24284,24285,
24287,15108,1044, 24289,350, 24291,1347, 24292,24293,12598,24295,24296,24297,24299,356, 24290,317, 633, 370, 1160, 24294,317, 370, 389, 317, 1325, 16651,
317, 24298,356, 2004, 350, 15519,24302,24304,14062,24306,24310,24311,1020, 24312,4040, 5793, 2036, 24314,24315,24317,317, 317, 24303,317, 24305,24307,24308,
24309,3529, 3529, 24313,22560,466, 371, 2060, 24316,24318,24319,317, 19163,317, 317, 24321,317, 24322,14337,466, 24324,24325,24327,2584, 24330,24334,24338,
- 24346,2719, 343, 24326,24328,24329,24331,317, 24332,24333,24335,24336,24337,317, 1337, 24339,24340,24341,5841, 19081,1108, 24342,24343,1108, 24344,24345,316,
+ 24346,2719, 343, 24326,24328,24329,24331,317, 24332,24333,24335,24336,24337,317, 1337, 24339,24340,24341,5841, 19081,1108, 24342,24343,1108, 24344,24345,316,
396, 24347,24348,24349,24351,24352,24353,24354,24357,24358,24373,24355,24356,620, 4943, 24359,24362,2206, 24364,24360,24361,24363,24365,24368,24366,24367,24369,
24370,24371,24372,24375,15680,345, 22091,949, 24376,476, 317, 24377,317, 24378,24379,18757,24382,24444,24506,24633,24656,24686,24763,24807,24829,24848,24861,
78, 79, 25198,25284,25295,25374,25377,80, 25618,25682,25702,25760,25784,25789,25794,24380,24381,24383,24391,24407,24408,380, 24410,24411,6412, 24416,24423,
- 24424,24432,24433,15510,24441,24384,24387,24389,317, 24385,345, 24386,24388,476, 370, 317, 24390,1267, 24392,2077, 24394,24395,11089,24396,24401,24404,490,
- 24405,24406,317, 7035, 24393,3505, 356, 12789,343, 389, 1526, 24397,24399,317, 24398,381, 2156, 24400,24402,2631, 24403,1160, 740, 363, 536, 4447, 379,
+ 24424,24432,24433,15510,24441,24384,24387,24389,317, 24385,345, 24386,24388,476, 370, 317, 24390,1267, 24392,2077, 24394,24395,11089,24396,24401,24404,490,
+ 24405,24406,317, 7035, 24393,3505, 356, 12789,343, 389, 1526, 24397,24399,317, 24398,381, 2156, 24400,24402,2631, 24403,1160, 740, 363, 536, 4447, 379,
1020, 2301, 2063, 2298, 13905,2571, 343, 24409,867, 565, 5055, 2272, 490, 24412,24414,24415,317, 317, 317, 24413,317, 317, 317, 24417,24419,24420,14708,
- 5891, 317, 317, 317, 24418,10345,1109, 24421,24422,345, 345, 317, 345, 8948, 6294, 24425,7976, 24427,370, 24428,343, 317, 24430,24431,390, 317, 363,
- 24426,6632, 317, 11678,6002, 2369, 2117, 24429,1325, 343, 466, 2004, 363, 11786,1347, 345, 363, 317, 24434,2022, 363, 317, 16596,317, 24435,24436,2171,
- 24437,24438,9119, 12815,2402, 24439,9696, 356, 332, 24440,4965, 3422, 2510, 24442,24443,24445,24458,24460,24474,24480,24482,24483,24488,11831,24496,24497,1358,
+ 5891, 317, 317, 317, 24418,10345,1109, 24421,24422,345, 345, 317, 345, 8948, 6294, 24425,7976, 24427,370, 24428,343, 317, 24430,24431,390, 317, 363,
+ 24426,6632, 317, 11678,6002, 2369, 2117, 24429,1325, 343, 466, 2004, 363, 11786,1347, 345, 363, 317, 24434,2022, 363, 317, 16596,317, 24435,24436,2171,
+ 24437,24438,9119, 12815,2402, 24439,9696, 356, 332, 24440,4965, 3422, 2510, 24442,24443,24445,24458,24460,24474,24480,24482,24483,24488,11831,24496,24497,1358,
24446,24447,2022, 24448,24451,16307,12791,24456,317, 2222, 343, 24449,24450,490, 24452,343, 317, 1526, 24455,18978,24453,24454,24457,24459,490, 317, 12527,
345, 24461,2510, 24462,317, 24464,24469,317, 24470,317, 371, 24463,24465,8117, 22534,24466,24467,24468,5828, 5828, 317, 317, 11064,370, 24471,24472,24473,
- 24475,490, 22370,24476,317, 317, 22252,24477,24478,24479,24481,10487,2163, 339, 22252,605, 551, 24484,345, 5255, 24485,24486,343, 393, 317, 15346,345,
- 24487,1358, 317, 24489,24490,24492,24494,24495,317, 24491,332, 24493,317, 5611, 390, 371, 393, 317, 316, 343, 380, 363, 350, 363, 15334,2510, 317,
- 24498,351, 24499,24500,24501,24502,356, 24505,317, 345, 24503,24504,5428, 382, 317, 24507,5217, 24527,24544,24550,24559,24562,24575,24615,24632,24508,363,
+ 24475,490, 22370,24476,317, 317, 22252,24477,24478,24479,24481,10487,2163, 339, 22252,605, 551, 24484,345, 5255, 24485,24486,343, 393, 317, 15346,345,
+ 24487,1358, 317, 24489,24490,24492,24494,24495,317, 24491,332, 24493,317, 5611, 390, 371, 393, 317, 316, 343, 380, 363, 350, 363, 15334,2510, 317,
+ 24498,351, 24499,24500,24501,24502,356, 24505,317, 345, 24503,24504,5428, 382, 317, 24507,5217, 24527,24544,24550,24559,24562,24575,24615,24632,24508,363,
317, 1588, 24509,24510,24511,24512,24515,24524,24526,5273, 380, 12961,19791,317, 2110, 13338,317, 5241, 332, 317, 2222, 24513,2537, 490, 24514,24516,24522,
332, 2271, 10604,317, 24523,24517,24518,24519,24520,24521,343, 5226, 24525,867, 6826, 317, 13573,317, 351, 24528,5428, 3854, 24529,24531,24532,24536,24541,
14062,24530,24322,5543, 2156, 24533,24534,343, 24535,317, 317, 14371,317, 370, 498, 24537,332, 370, 24538,24539,24540,24542,24543,5054, 5055, 5550, 24545,
- 24548,24549,2272, 24546,381, 381, 6555, 11921,24547,8304, 381, 13962,5428, 24551,24553,24554,2715, 317, 24556,21575,345, 410, 24552,466, 5727, 5324, 317,
+ 24548,24549,2272, 24546,381, 381, 6555, 11921,24547,8304, 381, 13962,5428, 24551,24553,24554,2715, 317, 24556,21575,345, 410, 24552,466, 5727, 5324, 317,
317, 24555,345, 317, 5097, 24557,24558,551, 24560,7401, 466, 362, 317, 317, 24561,8488, 9059, 362, 24563,24571,24573,24574,343, 5488, 317, 24564,24567,
- 24565,8136, 466, 317, 24566,5262, 448, 24568,24569,24570,17358,24572,317, 1065, 317, 24576,24577,24578,24580,24584,24597,371, 24607,24611,11921,24612,1347,
+ 24565,8136, 466, 317, 24566,5262, 448, 24568,24569,24570,17358,24572,317, 1065, 317, 24576,24577,24578,24580,24584,24597,371, 24607,24611,11921,24612,1347,
24579,317, 24581,24582,24583,5488, 5488, 24585,317, 24590,24586,24587,24588,24589,24591,24593,24592,5447, 20858,24594,24595,24596,24598,24604,24599,24601,24600,
- 24602,24603,24605,317, 24606,24608,343, 427, 317, 24609,5447, 24610,2510, 345, 382, 5055, 343, 317, 24613,24614,317, 990, 5174, 2022, 2022, 2022, 317,
+ 24602,24603,24605,317, 24606,24608,343, 427, 317, 24609,5447, 24610,2510, 345, 382, 5055, 343, 317, 24613,24614,317, 990, 5174, 2022, 2022, 2022, 317,
15540,24616,24617,24628,1108, 24629,21483,5447, 2036, 356, 24618,24624,24619,24620,24621,24622,24623,5488, 7888, 24625,24626,24627,867, 867, 466, 24630,24631,
- 351, 4591, 5828, 24634,536, 24635,24639,24640,11236,554, 24645,24650,24652,7990, 1453, 24636,24637,24638,24641,351, 348, 345, 24642,343, 24643,24644,5113,
+ 351, 4591, 5828, 24634,536, 24635,24639,24640,11236,554, 24645,24650,24652,7990, 1453, 24636,24637,24638,24641,351, 348, 345, 24642,343, 24643,24644,5113,
448, 24646,317, 24647,24648,24649,317, 24651,24653,5447, 466, 24654,356, 24655,373, 5055, 343, 949, 24657,2161, 24658,6600, 7405, 24661,21074,24662,24664,
24665,24677,24680,24681,24682,9702, 24683,24659,2036, 24660,317, 363, 24663,466, 317, 928, 24666,24667,2171, 24668,16248,24669,370, 24670,1526, 24672,24673,
24676,317, 13457,373, 434, 490, 382, 24671,24674,24675,16187,317, 9624, 24678,466, 362, 4974, 24679,2510, 317, 490, 317, 24684,24685,866, 24687,24693,
- 24696,24713,24715,554, 24736,24742,24750,24760,24761,2184, 24688,5174, 5428, 24689,5241, 24691,3941, 2537, 24690,5991, 466, 24692,24694,24695,7988, 24697,317,
+ 24696,24713,24715,554, 24736,24742,24750,24760,24761,2184, 24688,5174, 5428, 24689,5241, 24691,3941, 2537, 24690,5991, 466, 24692,24694,24695,7988, 24697,317,
2541, 24700,317, 24709,24698,24699,356, 5847, 2510, 317, 7698, 24701,24703,24706,24702,2571, 10149,317, 4267, 24704,466, 317, 317, 24705,317, 24707,24708,
- 351, 317, 2571, 10149,317, 373, 5550, 24710,24712,24711,343, 317, 498, 380, 356, 466, 24714,10550,24716,24718,24723,343, 5464, 24727,24728,24732,1588,
+ 351, 317, 2571, 10149,317, 373, 5550, 24710,24712,24711,343, 317, 498, 380, 356, 466, 24714,10550,24716,24718,24723,343, 5464, 24727,24728,24732,1588,
317, 24717,343, 7810, 6674, 24719,24720,24721,24722,24724,24725,1347, 24726,2537, 5517, 5019, 24729,24730,24731,24733,5447, 24734,317, 373, 418, 382, 24735,
6441, 21036,5096, 24737,24741,24738,24740,24739,356, 5113, 351, 317, 2537, 350, 317, 5190, 11648,24743,24748,605, 317, 24744,343, 24747,1479, 24745,24746,
5254, 356, 8792, 24749,24751,24758,596, 412, 363, 24752,596, 10238,317, 24753,317, 317, 24754,24757,317, 24755,24756,24759,8061, 370, 6188, 1009, 24762,
332, 1325, 466, 24764,317, 24769,317, 24776,24781,362, 24785,24786,24788,24805,332, 24765,2272, 317, 3726, 24766,24768,24767,10763,3522, 373, 15330,11648,
- 412, 24770,24771,2212, 2067, 349, 10487,317, 867, 24772,24775,15213,2084, 24773,24774,345, 370, 9129, 24777,2537, 24778,24779,11339,24780,24782,351, 317,
- 24784,24783,465, 317, 363, 351, 427, 24787,9027, 2405, 365, 350, 5237, 350, 24789,24800,24803,370, 396, 7098, 18588,24790,24795,24797,343, 24798,317,
+ 412, 24770,24771,2212, 2067, 349, 10487,317, 867, 24772,24775,15213,2084, 24773,24774,345, 370, 9129, 24777,2537, 24778,24779,11339,24780,24782,351, 317,
+ 24784,24783,465, 317, 363, 351, 427, 24787,9027, 2405, 365, 350, 5237, 350, 24789,24800,24803,370, 396, 7098, 18588,24790,24795,24797,343, 24798,317,
9917, 24791,24792,24793,24794,5087, 1526, 24796,343, 24799,24801,24802,2381, 2236, 381, 396, 24804,345, 24806,5619, 450, 24808,24811,24814,24815,2222, 24816,
24817,5108, 24819,24821,6002, 24809,8392, 24810,345, 501, 317, 24812,3967, 1588, 24813,351, 4738, 24038,605, 396, 24818,2086, 24820,351, 24822,24823,24824,
- 24826,24825,393, 356, 404, 24827,24828,3714, 24830,24832,24833,24835,12463,24837,380, 343, 15608,24839,24840,24844,24845,24846,24847,2163, 24831,6917, 6206,
+ 24826,24825,393, 356, 404, 24827,24828,3714, 24830,24832,24833,24835,12463,24837,380, 343, 15608,24839,24840,24844,24845,24846,24847,2163, 24831,6917, 6206,
2261, 11986,24834,24836,5238, 24838,10008,24841,14708,4738, 24842,24843,8600, 380, 350, 317, 317, 2222, 390, 2510, 596, 24637,2108, 317, 317, 24849,24854,
- 24855,11339,24850,2219, 350, 317, 24851,590, 24853,19617,343, 24852,363, 2601, 6387, 24856,343, 24858,2261, 24860,24857,24859,24862,2533, 24863,2272, 350,
+ 24855,11339,24850,2219, 350, 317, 24851,590, 24853,19617,343, 24852,363, 2601, 6387, 24856,343, 24858,2261, 24860,24857,24859,24862,2533, 24863,2272, 350,
24866,24868,24870,24872,2044, 370, 317, 24864,24865,24867,317, 511, 24869,370, 24871,24873,24923,24928,24935,24936,24954,24958,24969,24972,2222, 25001,25031,
25038,25040,25056,25068,25071,25075,25080,25087,25092,12565,24874,24875,381, 24881,24885,24888,24893,24894,24895,24898,317, 24901,24907,24909,24913,24917,24920,
- 24922,5273, 24876,24877,24878,24879,317, 574, 351, 2326, 1108, 24880,6598, 24882,24884,24883,356, 24886,317, 2537, 380, 2373, 24887,332, 748, 15753,2381,
- 24889,24890,2369, 397, 1358, 24891,490, 317, 24892,5611, 1108, 24896,1588, 2110, 24897,350, 317, 5661, 317, 370, 24899,24900,6555, 317, 1108, 24902,9298,
- 24904,317, 24884,24903,24905,24906,317, 10628,6021, 5711, 343, 24908,24910,11034,24911,332, 379, 605, 24912,381, 2117, 10763,24914,343, 24915,24916,350,
- 17021,24918,24919,350, 317, 11560,343, 380, 24921,2035, 490, 10758,1588, 350, 350, 24924,24925,24926,24927,11635,9226, 317, 7368, 8400, 14595,24929,317,
+ 24922,5273, 24876,24877,24878,24879,317, 574, 351, 2326, 1108, 24880,6598, 24882,24884,24883,356, 24886,317, 2537, 380, 2373, 24887,332, 748, 15753,2381,
+ 24889,24890,2369, 397, 1358, 24891,490, 317, 24892,5611, 1108, 24896,1588, 2110, 24897,350, 317, 5661, 317, 370, 24899,24900,6555, 317, 1108, 24902,9298,
+ 24904,317, 24884,24903,24905,24906,317, 10628,6021, 5711, 343, 24908,24910,11034,24911,332, 379, 605, 24912,381, 2117, 10763,24914,343, 24915,24916,350,
+ 17021,24918,24919,350, 317, 11560,343, 380, 24921,2035, 490, 10758,1588, 350, 350, 24924,24925,24926,24927,11635,9226, 317, 7368, 8400, 14595,24929,317,
1881, 24933,24934,2321, 24930,24931,24932,1588, 357, 373, 21274,332, 21101,2280, 317, 24937,24939,24940,24942,489, 8304, 2086, 24944,24945,11279,24950,24951,
- 24952,5017, 883, 317, 24938,24941,9298, 332, 5502, 24943,370, 317, 384, 317, 24946,24947,317, 24948,24949,741, 343, 2537, 404, 24953,5113, 1588, 317,
+ 24952,5017, 883, 317, 24938,24941,9298, 332, 5502, 24943,370, 317, 384, 317, 24946,24947,317, 24948,24949,741, 343, 2537, 404, 24953,5113, 1588, 317,
6108, 317, 24955,15325,24956,317, 317, 24884,24957,7143, 24959,24963,24964,2004, 24966,24967,24960,5238, 24962,317, 24961,317, 24965,11124,5428, 17782,24968,
- 24965,24970,24971,2060, 332, 4984, 24973,24979,24984,24987,24988,24989,317, 24994,24996,343, 345, 24997,317, 24974,24975,317, 24976,24949,24977,24978,5847,
+ 24965,24970,24971,2060, 332, 4984, 24973,24979,24984,24987,24988,24989,317, 24994,24996,343, 345, 24997,317, 24974,24975,317, 24976,24949,24977,24978,5847,
317, 24980,24983,5201, 24981,24982,370, 8266, 1347, 8577, 24985,24986,356, 10891,317, 4925, 6499, 317, 24745,490, 24990,2163, 24991,24992,24993,317, 24995,
- 7834, 427, 317, 317, 357, 343, 317, 350, 5174, 24998,24999,25000,356, 10147,317, 317, 6394, 514, 25002,25003,621, 25004,25022,25026,25027,25030,317,
- 427, 332, 317, 25005,17366,25007,25009,332, 25011,25017,25019,5612, 317, 25006,2291, 25008,25010,2279, 5793, 25012,25014,2035, 25016,25013,25015,7567, 7306,
- 25018,343, 13478,25020,25021,25023,25024,25025,10519,10583,317, 317, 317, 25028,18846,10561,317, 25029,317, 6300, 317, 25032,25033,25034,25037,317, 343,
- 317, 18387,17699,6179, 5238, 317, 9422, 25035,25036,5428, 5428, 1358, 5238, 332, 25039,514, 867, 332, 25041,11986,396, 343, 25042,25043,25045,25047,8722,
- 1358, 2236, 1358, 574, 2163, 1345, 25044,1347, 343, 25046,343, 19478,343, 343, 363, 7399, 317, 317, 25048,317, 350, 25051,25053,25049,25050,2086, 6394,
- 2134, 25052,2086, 25054,25055,25057,25058,25060,25063,7399, 25064,18077,490, 25059,317, 25061,317, 317, 25062,5570, 867, 332, 317, 574, 25065,25066,1588,
- 25067,370, 9549, 7865, 25069,25070,317, 12849,7668, 25072,25073,25074,363, 317, 317, 5238, 25076,339, 25079,317, 4437, 1266, 317, 317, 317, 317, 317,
- 317, 649, 317, 2078, 25077,2272, 7568, 10471,25078,356, 317, 5611, 25081,5441, 343, 393, 2142, 25083,25084,343, 25086,1347, 25082,5217, 317, 317, 365,
- 490, 25085,317, 9852, 8082, 25088,25089,10619,317, 10619,317, 25090,1992, 25091,25093,25110,25115,25117,25136,25147,332, 11249,25150,370, 25152,25189,6994,
+ 7834, 427, 317, 317, 357, 343, 317, 350, 5174, 24998,24999,25000,356, 10147,317, 317, 6394, 514, 25002,25003,621, 25004,25022,25026,25027,25030,317,
+ 427, 332, 317, 25005,17366,25007,25009,332, 25011,25017,25019,5612, 317, 25006,2291, 25008,25010,2279, 5793, 25012,25014,2035, 25016,25013,25015,7567, 7306,
+ 25018,343, 13478,25020,25021,25023,25024,25025,10519,10583,317, 317, 317, 25028,18846,10561,317, 25029,317, 6300, 317, 25032,25033,25034,25037,317, 343,
+ 317, 18387,17699,6179, 5238, 317, 9422, 25035,25036,5428, 5428, 1358, 5238, 332, 25039,514, 867, 332, 25041,11986,396, 343, 25042,25043,25045,25047,8722,
+ 1358, 2236, 1358, 574, 2163, 1345, 25044,1347, 343, 25046,343, 19478,343, 343, 363, 7399, 317, 317, 25048,317, 350, 25051,25053,25049,25050,2086, 6394,
+ 2134, 25052,2086, 25054,25055,25057,25058,25060,25063,7399, 25064,18077,490, 25059,317, 25061,317, 317, 25062,5570, 867, 332, 317, 574, 25065,25066,1588,
+ 25067,370, 9549, 7865, 25069,25070,317, 12849,7668, 25072,25073,25074,363, 317, 317, 5238, 25076,339, 25079,317, 4437, 1266, 317, 317, 317, 317, 317,
+ 317, 649, 317, 2078, 25077,2272, 7568, 10471,25078,356, 317, 5611, 25081,5441, 343, 393, 2142, 25083,25084,343, 25086,1347, 25082,5217, 317, 317, 365,
+ 490, 25085,317, 9852, 8082, 25088,25089,10619,317, 10619,317, 25090,1992, 25091,25093,25110,25115,25117,25136,25147,332, 11249,25150,370, 25152,25189,6994,
25192,25194,25197,25094,25097,317, 25098,25099,25100,25106,25108,16570,357, 2537, 25095,25096,1358, 317, 343, 2272, 2058, 25101,25102,421, 25103,317, 12494,
25104,25105,317, 2537, 345, 15510,317, 5096, 317, 317, 345, 317, 24731,317, 317, 317, 317, 25107,1033, 345, 332, 345, 25109,24949,490, 345, 25111,
- 25112,25113,25114,3284, 317, 5836, 1135, 2317, 5836, 25116,371, 15108,371, 25118,25120,9609, 11339,25122,25123,317, 25127,10179,25131,350, 490, 25119,466,
- 422, 25121,345, 332, 317, 25124,25125,356, 25126,317, 317, 5711, 2110, 25128,317, 1526, 25129,380, 25130,317, 351, 25132,25133,343, 25134,317, 317,
+ 25112,25113,25114,3284, 317, 5836, 1135, 2317, 5836, 25116,371, 15108,371, 25118,25120,9609, 11339,25122,25123,317, 25127,10179,25131,350, 490, 25119,466,
+ 422, 25121,345, 332, 317, 25124,25125,356, 25126,317, 317, 5711, 2110, 25128,317, 1526, 25129,380, 25130,317, 351, 25132,25133,343, 25134,317, 317,
343, 25135,317, 1347, 10314,25137,8281, 6780, 9822, 317, 25140,25144,25145,343, 350, 25146,332, 25138,317, 25139,2134, 25141,343, 317, 25142,25143,17271,
380, 5624, 25148,25149,4984, 25151,3999, 5055, 317, 25153,25154,356, 25161,25166,25167,362, 25169,7185, 25181,25185,25187,2110, 490, 25155,25156,5003, 25157,
25158,10578,317, 25159,317, 25160,317, 965, 5488, 5488, 9857, 317, 25162,25163,25164,25165,6171, 317, 370, 25168,13071,5167, 16596,317, 1149, 317, 25170,
@@ -7698,17 +7693,17 @@ static const unsigned int ChildLocs[185261] =
25221,380, 363, 1588, 343, 343, 9567, 370, 1358, 25223,25224,356, 25226,350, 343, 25228,25230,8224, 382, 317, 25229,25232,25233,25234,24600,25235,25236,
317, 10236,317, 332, 25238,490, 25242,13928,1347, 317, 317, 2381, 25237,25239,937, 317, 332, 7183, 490, 15090,14964,1358, 404, 317, 651, 25240,25241,
3079, 365, 25245,363, 25246,371, 10894,25248,25249,317, 6420, 370, 317, 5223, 381, 317, 1347, 317, 25250,25251,6996, 317, 317, 363, 404, 373, 12849,
- 5628, 490, 25253,13026,25258,317, 18588,25259,25261,25254,343, 25255,25256,25257,356, 10120,2510, 3853, 25260,25262,25265,2024, 25266,365, 17919,2171, 363,
+ 5628, 490, 25253,13026,25258,317, 18588,25259,25261,25254,343, 25255,25256,25257,356, 10120,2510, 3853, 25260,25262,25265,2024, 25266,365, 17919,2171, 363,
370, 317, 381, 7797, 5836, 5201, 25268,25269,25270,350, 362, 363, 25273,317, 12277,317, 317, 370, 5793, 6394, 357, 25271,5226, 25272,1526, 25275,25276,
2537, 25278,25279,351, 2063, 9450, 466, 1358, 12731,25283,350, 25285,25287,25288,1230, 317, 25290,25291,2537, 25286,2322, 25289,25292,490, 25293,25294,25296,
- 25309,21794,25325,25329,350, 25333,25348,25355,2317, 25369,25370,343, 2291, 15221,25297,19695,25298,25305,25307,317, 13314,25299,25300,25301,466, 25302,317,
- 12277,25303,25304,25306,1358, 25308,317, 25310,867, 25313,25318,25324,317, 9609, 25311,25312,317, 10664,317, 25314,25315,25316,466, 317, 317, 25317,6408,
+ 25309,21794,25325,25329,350, 25333,25348,25355,2317, 25369,25370,343, 2291, 15221,25297,19695,25298,25305,25307,317, 13314,25299,25300,25301,466, 25302,317,
+ 12277,25303,25304,25306,1358, 25308,317, 25310,867, 25313,25318,25324,317, 9609, 25311,25312,317, 10664,317, 25314,25315,25316,466, 317, 317, 25317,6408,
1347, 332, 25319,343, 25320,25321,25322,25323,22063,25326,25328,11279,332, 25327,867, 23267,25330,25331,25332,410, 1325, 410, 356, 466, 5399, 317, 25334,
10820,25337,25339,25343,25347,12761,9609, 25335,25336,317, 25338,25340,5365, 25341,25342,382, 5611, 1325, 25344,382, 25345,448, 356, 21470,25346,317, 25349,
466, 350, 317, 25350,25351,317, 25352,25353,25354,25356,25358,25365,25366,24810,25357,356, 397, 25359,25360,317, 25363,317, 317, 24479,13696,25361,25362,
- 25364,4267, 356, 5847, 2510, 412, 514, 18588,2537, 2537, 25367,25368,2024, 1347, 2381, 317, 390, 382, 25371,25373,5225, 1325, 25372,317, 345, 5174, 1526,
+ 25364,4267, 356, 5847, 2510, 412, 514, 18588,2537, 2537, 25367,25368,2024, 1347, 2381, 317, 390, 382, 25371,25373,5225, 1325, 25372,317, 345, 5174, 1526,
25375,25376,23695,25378,25385,25387,25388,25390,25401,25403,25408,25410,25422,14263,25424,25429,25430,25445,25446,25451,25453,25454,25457,25459,317, 25461,25379,
- 2290, 12796,25381,345, 25382,25383,317, 25380,317, 356, 466, 12785,3854, 370, 1526, 384, 332, 2134, 25384,6204, 25386,596, 24092,25389,2416, 25391,554,
+ 2290, 12796,25381,345, 25382,25383,317, 25380,317, 356, 466, 12785,3854, 370, 1526, 384, 332, 2134, 25384,6204, 25386,596, 24092,25389,2416, 25391,554,
6420, 25394,25397,25398,317, 1347, 25400,11346,25392,317, 25338,25393,25395,25396,351, 2533, 5897, 433, 2163, 25399,24731,25402,345, 317, 351, 4738, 25404,
25405,25406,25407,25409,363, 25411,25412,25413,13559,25414,363, 25416,25417,25418,23696,7214, 317, 350, 5991, 25415,317, 21494,25419,5447, 466, 317, 25420,
25421,9852, 2156, 25423,437, 25425,351, 345, 25428,370, 317, 317, 25426,5828, 25427,370, 5223, 25431,25435,25436,25437,363, 332, 350, 317, 345, 25440,
@@ -7716,33 +7711,33 @@ static const unsigned int ChildLocs[185261] =
25449,490, 1588, 357, 25414,357, 25450,3111, 390, 25452,427, 10625,25455,349, 332, 25456,349, 25458,2369, 25460,317, 11147,25462,25476,25477,25499,25502,
25513,25515,25519,25526,25538,25543,25546,25549,25555,25557,25564,25578,25579,25590,25593,25614,25615,22613,317, 317, 25463,25465,25466,25469,15480,25471,21898,
343, 25464,21060,317, 2322, 2084, 5828, 332, 317, 25467,25468,1347, 317, 2809, 332, 317, 25470,25472,25474,25473,25475,3648, 7064, 25478,25479,25488,25492,
- 25495,5737, 595, 25480,25481,25483,4267, 25482,466, 317, 25484,317, 25485,25486,25487,25489,25491,5570, 350, 10580,595, 2272, 25490,2134, 14982,1347, 2156,
+ 25495,5737, 595, 25480,25481,25483,4267, 25482,466, 317, 25484,317, 25485,25486,25487,25489,25491,5570, 350, 10580,595, 2272, 25490,2134, 14982,1347, 2156,
465, 25493,25494,25496,5717, 25497,25498,5262, 2510, 25500,1044, 25501,25503,25504,2334, 25506,25509,25505,317, 25507,25508,381, 332, 596, 25510,25512,10422,
- 25511,317, 5650, 382, 5055, 25514,3355, 12769,25516,2374, 25517,25518,25520,351, 12398,350, 25523,350, 25524,25525,596, 25521,363, 4984, 1078, 25522,351,
+ 25511,317, 5650, 382, 5055, 25514,3355, 12769,25516,2374, 25517,25518,25520,351, 12398,350, 25523,350, 25524,25525,596, 25521,363, 4984, 1078, 25522,351,
2146, 317, 1992, 13962,2322, 13695,25527,25528,25530,25532,25533,25535,25536,317, 25529,317, 21540,10422,466, 317, 1915, 317, 25531,345, 11669,25534,24644,
- 466, 4591, 5457, 317, 596, 357, 25537,25539,25540,25541,12494,25542,5055, 25544,317, 867, 317, 25545,25547,351, 990, 7045, 574, 25548,25550,25553,545,
+ 466, 4591, 5457, 317, 596, 357, 25537,25539,25540,25541,12494,25542,5055, 25544,317, 867, 317, 25545,25547,351, 990, 7045, 574, 25548,25550,25553,545,
25554,25551,2163, 25552,317, 25556,25558,2845, 5241, 25560,25562,25563,25559,350, 332, 370, 25561,5225, 317, 15504,317, 25565,25569,25573,25574,596, 25566,
25567,25568,7651, 25570,25571,9595, 25572,5324, 404, 24938,5611, 5717, 343, 20960,25575,15074,25577,25576,317, 18515,574, 8804, 25580,25584,25587,25581,25582,
- 25583,25585,25586,317, 10333,25588,25589,25591,25592,343, 317, 8000, 317, 317, 1453, 373, 4268, 25594,25599,25604,25607,25595,2537, 25596,25597,25598,343,
- 10674,25600,25602,25601,25603,342, 343, 25605,25606,7629, 23232,1078, 317, 16339,343, 25608,25610,25609,9124, 466, 317, 25611,25612,9130, 25613,317, 317,
- 20629,349, 25616,25617,25619,10480,25625,25642,25652,501, 25653,25655,25656,25663,25672,25678,25680,25681,25620,5108, 25622,25624,317, 25621,5273, 25623,9109,
+ 25583,25585,25586,317, 10333,25588,25589,25591,25592,343, 317, 8000, 317, 317, 1453, 373, 4268, 25594,25599,25604,25607,25595,2537, 25596,25597,25598,343,
+ 10674,25600,25602,25601,25603,342, 343, 25605,25606,7629, 23232,1078, 317, 16339,343, 25608,25610,25609,9124, 466, 317, 25611,25612,9130, 25613,317, 317,
+ 20629,349, 25616,25617,25619,10480,25625,25642,25652,501, 25653,25655,25656,25663,25672,25678,25680,25681,25620,5108, 25622,25624,317, 25621,5273, 25623,9109,
466, 3854, 373, 1588, 25626,515, 25629,25630,25640,25627,410, 356, 25628,2510, 317, 382, 5055, 5634, 511, 5399, 25631,2271, 25633,25639,317, 382, 25632,
5663, 25634,25635,25636,5394, 25638,4268, 25637,317, 5262, 382, 7682, 5189, 466, 317, 25641,410, 356, 317, 24437,25643,25644,25647,25650,25645,25646,25648,
25649,25651,10770,22617,25654,18329,317, 351, 578, 25657,25659,25660,2510, 25661,317, 25658,25662,25664,25667,25671,25665,6607, 25666,10592,25668,4591, 25669,
- 25670,21303,2537, 25673,4738, 25674,25675,25676,490, 317, 317, 7114, 466, 3529, 5663, 14645,25677,11339,1526, 25679,11308,2298, 25683,25684,25686,2193, 6600,
+ 25670,21303,2537, 25673,4738, 25674,25675,25676,490, 317, 317, 7114, 466, 3529, 5663, 14645,25677,11339,1526, 25679,11308,2298, 25683,25684,25686,2193, 6600,
15334,317, 25687,25689,317, 25685,5105, 16886,25688,15867,25690,25697,317, 25691,741, 25692,25693,9070, 25694,25695,25696,25698,25699,25700,25701,362, 13427,
- 317, 317, 25703,348, 25715,362, 25728,25748,25749,25759,317, 365, 25704,25705,25706,25708,25713,2236, 6449, 317, 1358, 18587,17198,1345, 3284, 1358, 317,
- 25707,348, 2035, 317, 350, 25709,25710,25711,1325, 25712,351, 5514, 363, 25714,5223, 317, 11144,490, 25716,25722,25725,11986,14478,514, 25717,25718,9124,
- 466, 25719,3852, 317, 25720,25721,25723,25724,5661, 3075, 317, 350, 2322, 317, 608, 490, 25726,25727,11086,317, 317, 7990, 316, 25729,25730,351, 490,
+ 317, 317, 25703,348, 25715,362, 25728,25748,25749,25759,317, 365, 25704,25705,25706,25708,25713,2236, 6449, 317, 1358, 18587,17198,1345, 3284, 1358, 317,
+ 25707,348, 2035, 317, 350, 25709,25710,25711,1325, 25712,351, 5514, 363, 25714,5223, 317, 11144,490, 25716,25722,25725,11986,14478,514, 25717,25718,9124,
+ 466, 25719,3852, 317, 25720,25721,25723,25724,5661, 3075, 317, 350, 2322, 317, 608, 490, 25726,25727,11086,317, 317, 7990, 316, 25729,25730,351, 490,
25731,25743,4591, 13077,25747,5611, 596, 5932, 5502, 6228, 25732,25733,25734,356, 25735,25737,25738,5942, 382, 2371, 25736,317, 1100, 2509, 25739,317, 25740,
- 25741,25742,317, 25744,1345, 2022, 317, 317, 25745,25746,2001, 5439, 317, 345, 317, 357, 363, 1011, 25750,1913, 317, 356, 25751,25752,6911, 25754,8488,
+ 25741,25742,317, 25744,1345, 2022, 317, 317, 25745,25746,2001, 5439, 317, 345, 317, 357, 363, 1011, 25750,1913, 317, 356, 25751,25752,6911, 25754,8488,
25755,25758,317, 317, 317, 5225, 5492, 317, 317, 317, 25753,3075, 5154, 25756,25757,317, 5273, 5324, 5058, 596, 317, 25761,10641,25769,25770,25771,25772,
- 25779,25782,2206, 25783,551, 373, 25762,317, 25763,317, 14536,2272, 25764,317, 25765,25766,25767,25768,2022, 2503, 8522, 317, 343, 1160, 11918,11918,371,
+ 25779,25782,2206, 25783,551, 373, 25762,317, 25763,317, 14536,2272, 25764,317, 25765,25766,25767,25768,2022, 2503, 8522, 317, 343, 1160, 11918,11918,371,
380, 2261, 25773,343, 25774,25778,381, 317, 343, 350, 25775,25776,25777,25780,2074, 25781,7734, 25785,25786,25788,351, 25787,6996, 397, 380, 393, 25790,
2610, 25793,317, 317, 25791,25792,25795,25796,379, 317, 466, 332, 25797,5241, 317, 363, 348, 21553,380, 2334, 7399, 363, 2288, 25799,345, 25804,25806,
- 356, 25812,25822,25824,19277,25826,25800,608, 1430, 25801,25802,25803,351, 25805,25807,19064,25808,25810,25809,25811,25813,25817,25814,25816,25815,25818,608,
+ 356, 25812,25822,25824,19277,25826,25800,608, 1430, 25801,25802,25803,351, 25805,25807,19064,25808,25810,25809,25811,25813,25817,25814,25816,25815,25818,608,
25820,25819,317, 351, 25821,367, 25823,25825,25827,608, 607, 25828,25830,25831,3078, 25834,25832,25833,25836,1060, 25847,25848,25851,25857,25859,25861,11533,
- 9702, 365, 11505,490, 25837,25838,25839,25840,362, 355, 317, 389, 25841,25844,355, 25842,365, 317, 25843,2381, 6388, 25845,17658,25846,6375, 2381, 2178,
+ 9702, 365, 11505,490, 25837,25838,25839,25840,362, 355, 317, 389, 25841,25844,355, 25842,365, 317, 25843,2381, 6388, 25845,17658,25846,6375, 2381, 2178,
14144,25849,25850,25852,25853,25854,25855,25856,565, 317, 25858,427, 9298, 365, 25860,355, 1109, 25862,25943,25971,26018,26035,26081,26113,26159,26161,26162,
26164,26167,26205,26258,26307,26333,26369,82, 26775,26794,26796,26834,26836,26839,26844,25863,25871,25878,25880,25881,317, 25890,25896,25914,317, 25920,25925,
25930,25935,18978,25939,14682,25864,25866,25868,25865,345, 5732, 317, 25867,12459,1267, 25732,317, 25869,25870,317, 9549, 317, 25872,25873,25874,25875,25876,
@@ -7752,198 +7747,198 @@ static const unsigned int ChildLocs[185261] =
2510, 25922,404, 393, 25923,25924,25926,25927,25928,317, 2036, 5087, 317, 25929,490, 2081, 25931,25934,25932,25933,7968, 25936,25937,7242, 401, 25938,25940,
25942,25941,25944,25951,1020, 25954,25962,25963,25965,25969,317, 5428, 25945,25950,317, 25946,25947,25948,25949,25952,25953,317, 6937, 25955,25958,25956,25957,
24467,1009, 25959,25961,317, 25960,25964,1345, 25966,25967,25968,428, 25970,19678,25972,25976,25977,25987,25989,26003,26006,26010,345, 25973,2537, 25974,25975,
- 12752,5033, 6402, 5428, 317, 2142, 362, 3375, 14062,317, 7590, 23202,25978,25979,25982,25980,25981,25983,25984,25985,25986,5570, 5428, 25988,382, 17998,1300,
+ 12752,5033, 6402, 5428, 317, 2142, 362, 3375, 14062,317, 7590, 23202,25978,25979,25982,25980,25981,25983,25984,25985,25986,5570, 5428, 25988,382, 17998,1300,
633, 2551, 25990,516, 25994,25996,25998,25999,605, 26000,6002, 26002,317, 317, 25991,25993,4980, 317, 25992,317, 12604,362, 363, 362, 404, 317, 25995,
- 355, 3529, 1347, 25997,2551, 404, 476, 384, 5663, 317, 363, 26001,384, 26004,26005,5428, 490, 26007,26008,332, 26009,26011,26015,427, 26012,5447, 5987,
- 26013,26014,433, 9139, 26016,26017,14284,19237,26019,3869, 26020,26022,26023,26025,490, 12616,26026,26027,26032,26034,1230, 11881,2094, 332, 332, 26021,317,
+ 355, 3529, 1347, 25997,2551, 404, 476, 384, 5663, 317, 363, 26001,384, 26004,26005,5428, 490, 26007,26008,332, 26009,26011,26015,427, 26012,5447, 5987,
+ 26013,26014,433, 9139, 26016,26017,14284,19237,26019,3869, 26020,26022,26023,26025,490, 12616,26026,26027,26032,26034,1230, 11881,2094, 332, 332, 26021,317,
1345, 466, 317, 8099, 3869, 26024,351, 4984, 317, 26028,26030,26029,23696,26031,490, 26033,26036,26038,26039,26045,26054,26055,26056,26057,26059,26060,26062,
26066,26068,26071,26079,4982, 317, 26037,2107, 9357, 412, 6206, 26040,26043,26041,26042,317, 317, 26044,26046,26050,26047,26048,26049,9659, 608, 26051,26052,
- 26053,380, 26005,6227, 6555, 7694, 317, 317, 11488,5662, 2323, 26058,332, 362, 317, 16553,1108, 6546, 317, 5159, 26061,26063,5793, 26064,26065,2719, 1588,
- 4738, 26067,2206, 437, 9450, 466, 317, 26069,26070,13653,448, 3422, 26072,7931, 466, 9064, 565, 26074,24637,26075,26077,26078,317, 362, 26073,13956,2108,
+ 26053,380, 26005,6227, 6555, 7694, 317, 317, 11488,5662, 2323, 26058,332, 362, 317, 16553,1108, 6546, 317, 5159, 26061,26063,5793, 26064,26065,2719, 1588,
+ 4738, 26067,2206, 437, 9450, 466, 317, 26069,26070,13653,448, 3422, 26072,7931, 466, 9064, 565, 26074,24637,26075,26077,26078,317, 362, 26073,13956,2108,
343, 317, 26076,13881,350, 362, 26080,26082,26083,26084,26106,24802,25413,26109,20149,3375, 343, 2541, 317, 26085,26099,2022, 26102,26104,317, 26086,26088,
26093,317, 26087,380, 9659, 26089,26090,26091,26092,26094,466, 317, 317, 26095,2156, 26096,26097,370, 26098,373, 5477, 23268,26100,317, 373, 26101,26103,
- 26105,8136, 5987, 26107,15100,17388,26108,26110,25413,26111,26112,20149,20149,317, 26114,370, 26115,26116,26120,26124,26125,350, 5662, 26151,26154,14295,3646,
- 24765,6833, 13559,382, 382, 19009,24778,24779,26117,1588, 26118,356, 26119,317, 373, 382, 363, 343, 26121,26122,6917, 448, 317, 26123,1345, 26126,2134,
- 26132,2537, 404, 26136,26138,26139,26142,26148,5573, 26127,26128,317, 6517, 3726, 26129,26130,26131,26133,26134,26135,490, 26137,12846,12846,26140,26141,3726,
+ 26105,8136, 5987, 26107,15100,17388,26108,26110,25413,26111,26112,20149,20149,317, 26114,370, 26115,26116,26120,26124,26125,350, 5662, 26151,26154,14295,3646,
+ 24765,6833, 13559,382, 382, 19009,24778,24779,26117,1588, 26118,356, 26119,317, 373, 382, 363, 343, 26121,26122,6917, 448, 317, 26123,1345, 26126,2134,
+ 26132,2537, 404, 26136,26138,26139,26142,26148,5573, 26127,26128,317, 6517, 3726, 26129,26130,26131,26133,26134,26135,490, 26137,12846,12846,26140,26141,3726,
3726, 26143,316, 26147,9818, 317, 26144,317, 317, 345, 370, 26145,26146,7888, 10674,2537, 26149,26150,4984, 4944, 26152,10414,26153,8544, 596, 1155, 26155,
26156,2261, 15951,5241, 24802,26157,26158,26160,12849,11339,26163,363, 11339,26165,2188, 26166,362, 345, 317, 317, 317, 26168,26172,26174,26176,26177,26181,
- 26182,345, 26185,26197,7638, 26198,26201,26202,26203,5809, 6937, 317, 26169,490, 26171,12001,26170,5225, 1325, 404, 26173,371, 21303,26175,439, 351, 1345,
- 2272, 6420, 317, 1060, 6937, 26178,490, 26179,317, 26180,317, 551, 351, 26183,371, 21046,2142, 362, 317, 2537, 26184,26186,26189,26191,9420, 22370,317,
- 26196,317, 6673, 26187,362, 356, 17039,589, 26188,1230, 26190,317, 17039,317, 551, 317, 26192,26194,363, 317, 26193,351, 26195,7866, 554, 1526, 5810,
+ 26182,345, 26185,26197,7638, 26198,26201,26202,26203,5809, 6937, 317, 26169,490, 26171,12001,26170,5225, 1325, 404, 26173,371, 21303,26175,439, 351, 1345,
+ 2272, 6420, 317, 1060, 6937, 26178,490, 26179,317, 26180,317, 551, 351, 26183,371, 21046,2142, 362, 317, 2537, 26184,26186,26189,26191,9420, 22370,317,
+ 26196,317, 6673, 26187,362, 356, 17039,589, 26188,1230, 26190,317, 17039,317, 551, 317, 26192,26194,363, 317, 26193,351, 26195,7866, 554, 1526, 5810,
363, 317, 1588, 363, 26199,317, 26200,7399, 332, 541, 2063, 26204,2142, 6435, 2537, 26206,26220,26222,26232,490, 26240,26241,26243,26253,26254,26255,26256,
26207,26210,3223, 740, 26212,26213,18077,332, 13477,26214,1444, 26215,26217,26218,867, 6753, 7155, 317, 26208,26209,682, 26211,4857, 681, 332, 317, 26216,
9422, 15445,5328, 317, 332, 317, 317, 2537, 1065, 371, 3725, 26219,26221,3236, 5951, 11339,26223,317, 26228,317, 26230,748, 26224,26225,26226,26227,21661,
- 2571, 317, 1347, 26229,317, 317, 7931, 26231,26233,5951, 26234,26236,332, 6402, 317, 26235,332, 317, 21986,390, 7857, 351, 26237,317, 26238,26239,317,
+ 2571, 317, 1347, 26229,317, 317, 7931, 26231,26233,5951, 26234,26236,332, 6402, 317, 26235,332, 317, 21986,390, 7857, 351, 26237,317, 26238,26239,317,
19414,317, 343, 10344,317, 384, 5991, 26242,317, 317, 371, 382, 381, 1481, 26244,2279, 26245,7185, 26246,26248,26251,883, 740, 317, 317, 26247,26249,
- 26250,26252,12849,380, 9832, 404, 6195, 427, 8841, 2537, 26257,26259,26262,26263,26265,26266,26272,26273,26275,26279,26281,26287,26296,10792,26299,26304,317,
- 11408,26260,5223, 6651, 26261,317, 6195, 317, 5439, 339, 317, 26264,427, 317, 363, 5159, 6379, 4925, 2272, 2631, 5623, 26267,24775,5201, 26269,26270,5662,
- 26271,4980, 345, 543, 317, 317, 317, 26268,317, 1347, 2310, 317, 2364, 12142,8937, 26274,317, 2322, 345, 25086,2222, 332, 317, 26276,26277,26278,317,
+ 26250,26252,12849,380, 9832, 404, 6195, 427, 8841, 2537, 26257,26259,26262,26263,26265,26266,26272,26273,26275,26279,26281,26287,26296,10792,26299,26304,317,
+ 11408,26260,5223, 6651, 26261,317, 6195, 317, 5439, 339, 317, 26264,427, 317, 363, 5159, 6379, 4925, 2272, 2631, 5623, 26267,24775,5201, 26269,26270,5662,
+ 26271,4980, 345, 543, 317, 317, 317, 26268,317, 1347, 2310, 317, 2364, 12142,8937, 26274,317, 2322, 345, 25086,2222, 332, 317, 26276,26277,26278,317,
345, 1160, 26280,26282,466, 26285,363, 26283,26284,317, 4789, 14062,26286,320, 26288,1913, 2077, 26289,490, 5079, 26295,5439, 26290,26291,26292,26293,26294,
6195, 26297,26298,26300,23696,7399, 365, 26301,26302,26303,26305,26306,26308,26311,26313,26314,317, 18930,26315,26321,26324,26326,574, 396, 26331,9341, 26309,
26310,1347, 26312,539, 4591, 7360, 317, 11064,26316,26317,5793, 26319,26318,332, 7184, 26320,10633,345, 345, 26322,26323,26178,26325,26327,5237, 26329,26330,
26328,26332,24826,26334,8514, 26339,26342,26350,26355,26357,2844, 26360,26361,2845, 26335,6937, 26337,26336,26338,25306,14184,26340,26341,9993, 10877,26343,26344,
6240, 2322, 11279,867, 26345,26346,26347,26348,317, 26349,26351,10716,356, 26352,26353,317, 370, 317, 26354,26356,2537, 351, 1347, 2322, 26358,466, 26359,
- 317, 317, 317, 9170, 381, 2036, 2391, 26362,2108, 26363,317, 26364,26365,26366,26367,26368,26370,5962, 501, 26371,343, 26385,26386,26389,554, 26391,317,
- 26392,26397,26372,2145, 7399, 13650,5226, 26373,356, 26374,26375,370, 2571, 26378,317, 317, 317, 382, 26376,2156, 26377,21700,317, 26379,26380,5689, 5784,
+ 317, 317, 317, 9170, 381, 2036, 2391, 26362,2108, 26363,317, 26364,26365,26366,26367,26368,26370,5962, 501, 26371,343, 26385,26386,26389,554, 26391,317,
+ 26392,26397,26372,2145, 7399, 13650,5226, 26373,356, 26374,26375,370, 2571, 26378,317, 317, 317, 382, 26376,2156, 26377,21700,317, 26379,26380,5689, 5784,
9139, 317, 26381,26382,26383,26384,26387,25413,26388,18257,2551, 317, 351, 12719,26390,5428, 2142, 5793, 633, 26393,317, 26394,26395,8054, 553, 317, 26396,
23950,16401,4249, 362, 5325, 7399, 26398,26448,26454,26519,26520,26553,26559,26569,26587,26611,26617,26618,26624,26636,26639,26654,26697,26704,26719,26741,26773,
26399,26400,26407,26411,26415,26419,26423,26424,26434,26437,26446,2322, 17943,5717, 26401,26402,26403,26404,26405,26406,26408,26103,26409,26410,26412,26413,26414,
- 410, 317, 466, 5399, 317, 26416,26418,26417,21060,317, 317, 26420,26421,26422,867, 317, 5439, 26425,26426,26428,26432,26427,26429,26430,26431,356, 8553,
- 5399, 317, 26433,26435,1230, 26436,3853, 356, 466, 317, 26438,26445,26439,26443,26440,26441,26442,26444,2510, 21882,26447,26449,26451,6345, 26452,26450,2247,
+ 410, 317, 466, 5399, 317, 26416,26418,26417,21060,317, 317, 26420,26421,26422,867, 317, 5439, 26425,26426,26428,26432,26427,26429,26430,26431,356, 8553,
+ 5399, 317, 26433,26435,1230, 26436,3853, 356, 466, 317, 26438,26445,26439,26443,26440,26441,26442,26444,2510, 21882,26447,26449,26451,6345, 26452,26450,2247,
26453,26455,26457,13650,26460,26463,26469,362, 26474,26500,317, 26515,26518,26456,5272, 748, 26458,26459,356, 21157,3854, 26461,351, 4738, 350, 551, 26462,
26464,332, 26465,21413,26466,26467,26468,5447, 466, 26470,26472,26471,26473,5447, 466, 12277,317, 26475,9171, 26477,23927,26479,26489,317, 26491,26494,26497,
26476,317, 26478,26480,26482,26483,26481,26484,26485,26486,26487,26488,1325, 8792, 4591, 514, 5226, 26490,26492,26493,7988, 26495,26496,2156, 18092,26498,26499,
- 10422,10147,317, 317, 26501,26510,26502,5323, 26503,26506,26504,26505,317, 26507,26508,5488, 26509,26511,26512,26513,26514,381, 8713, 21006,26516,26517,5464,
+ 10422,10147,317, 317, 26501,26510,26502,5323, 26503,26506,26504,26505,317, 26507,26508,5488, 26509,26511,26512,26513,26514,381, 8713, 21006,26516,26517,5464,
5113, 26521,26522,26528,26541,3648, 26546,390, 26523,26524,26527,26525,26526,26529,26532,26538,26530,26531,26533,26534,26535,26536,26537,26539,26540,26542,26543,
26544,26545,26547,26548,26549,26550,26551,26552,26554,26555,26533,26556,26557,26558,5319, 466, 26560,26566,26561,26564,26562,26563,26565,21483,26567,26568,26570,
26572,26578,11236,350, 26579,26584,26571,317, 26573,317, 317, 317, 26577,26574,26575,26576,363, 10561,26580,26581,317, 26582,26583,26585,2381, 26586,26588,
- 7035, 26594,26589,26593,26590,26591,26592,26595,26601,26604,26607,26596,26599,26597,26598,4267, 404, 26600,26602,26603,26605,26606,26608,25632,26609,26610,1526,
+ 7035, 26594,26589,26593,26590,26591,26592,26595,26601,26604,26607,26596,26599,26597,26598,4267, 404, 26600,26602,26603,26605,26606,26608,25632,26609,26610,1526,
26612,26613,26614,26615,26616,2610, 7389, 317, 317, 317, 26619,26620,5051, 26621,26622,26623,26625,26628,26632,26635,20015,317, 26626,2601, 5487, 317, 26627,
26629,26630,26631,26633,26634,4564, 5464, 5395, 343, 26484,26637,26638,317, 4952, 26518,26640,317, 26643,3987, 23411,26641,26642,5363, 332, 26644,26647,26650,
- 317, 26645,26646,356, 370, 317, 26648,26649,26651,26652,26653,26655,26664,26671,26674,26681,26686,26696,26656,26659,26661,26657,5200, 343, 26658,343, 1325,
- 8553, 26660,26662,26663,26665,26666,26669,26667,490, 26668,5394, 466, 5201, 5226, 26670,380, 5447, 9130, 26672,26673,26675,26678,26676,26677,356, 466, 3075,
- 317, 26679,26680,356, 1588, 3941, 26682,26683,5447, 20858,26684,26685,26687,26688,26695,26689,26690,26691,26692,26693,26694,5637, 466, 26698,26699,1347, 539,
- 26700,26701,26702,26703,2184, 6425, 356, 13899,26705,26716,26706,26708,26711,26707,5022, 26709,26710,26712,26713,26714,26715,26717,26718,356, 5847, 351, 317,
+ 317, 26645,26646,356, 370, 317, 26648,26649,26651,26652,26653,26655,26664,26671,26674,26681,26686,26696,26656,26659,26661,26657,5200, 343, 26658,343, 1325,
+ 8553, 26660,26662,26663,26665,26666,26669,26667,490, 26668,5394, 466, 5201, 5226, 26670,380, 5447, 9130, 26672,26673,26675,26678,26676,26677,356, 466, 3075,
+ 317, 26679,26680,356, 1588, 3941, 26682,26683,5447, 20858,26684,26685,26687,26688,26695,26689,26690,26691,26692,26693,26694,5637, 466, 26698,26699,1347, 539,
+ 26700,26701,26702,26703,2184, 6425, 356, 13899,26705,26716,26706,26708,26711,26707,5022, 26709,26710,26712,26713,26714,26715,26717,26718,356, 5847, 351, 317,
26720,26727,26732,26734,5653, 404, 26740,26721,26723,26722,26724,26725,26726,17228,1526, 26728,317, 26729,26730,26731,5167, 12631,6425, 2541, 5399, 26733,10561,
- 21948,26735,26739,9749, 26736,26737,26738,5447, 5221, 24698,5717, 26742,26747,26748,350, 26758,26759,317, 26770,317, 26743,5324, 26744,26745,5717, 5324, 332,
+ 21948,26735,26739,9749, 26736,26737,26738,5447, 5221, 24698,5717, 26742,26747,26748,350, 26758,26759,317, 26770,317, 26743,5324, 26744,26745,5717, 5324, 332,
26746,7657, 317, 465, 5337, 26749,26752,26750,317, 24698,26751,466, 26753,26755,26754,21441,370, 26756,26757,26760,26761,26763,26767,22063,530, 26762,26764,
4268, 332, 26765,26766,448, 5447, 22295,2510, 26768,26769,26771,26772,5708, 1325, 466, 317, 26774,5459, 5492, 317, 26776,26778,5611, 26782,26783,26785,26786,
- 26792,26793,26777,5464, 9624, 466, 3884, 26779,26780,26781,7231, 1588, 2381, 26784,343, 17782,25658,317, 26787,26789,317, 26790,4984, 24637,345, 317, 6343,
+ 26792,26793,26777,5464, 9624, 466, 3884, 26779,26780,26781,7231, 1588, 2381, 26784,343, 17782,25658,317, 26787,26789,317, 26790,4984, 24637,345, 317, 6343,
26788,26791,351, 7386, 11339,365, 2537, 26795,6163, 433, 26797,26800,26817,2537, 26829,26833,370, 1160, 490, 317, 26798,317, 317, 26799,26801,26802,26803,
- 26805,26814,14478,370, 317, 1588, 317, 26804,317, 2402, 26806,26808,26812,26807,466, 317, 7377, 317, 317, 26809,20969,26810,370, 26811,356, 26813,317,
- 6516, 382, 26815,356, 26816,3854, 382, 5761, 26818,26820,26823,26825,5611, 5241, 26819,466, 317, 6355, 1347, 317, 10114,26286,26821,317, 8792, 26822,2033,
- 317, 317, 317, 370, 317, 317, 317, 26824,332, 26826,404, 2510, 5457, 317, 26827,343, 26828,26830,26831,26832,26835,370, 26837,20684,404, 26838,363,
+ 26805,26814,14478,370, 317, 1588, 317, 26804,317, 2402, 26806,26808,26812,26807,466, 317, 7377, 317, 317, 26809,20969,26810,370, 26811,356, 26813,317,
+ 6516, 382, 26815,356, 26816,3854, 382, 5761, 26818,26820,26823,26825,5611, 5241, 26819,466, 317, 6355, 1347, 317, 10114,26286,26821,317, 8792, 26822,2033,
+ 317, 317, 317, 370, 317, 317, 317, 26824,332, 26826,404, 2510, 5457, 317, 26827,343, 26828,26830,26831,26832,26835,370, 26837,20684,404, 26838,363,
317, 317, 2077, 4952, 26840,16811,490, 26841,26842,26843,26845,351, 363, 26846,343, 6504, 343, 26847,26380,26849,3802, 26851,26852,7869, 26855,26861,26863,
26868,26873,26878,317, 26880,26881,26850,2809, 607, 6222, 2134, 5866, 2073, 26853,317, 26854,26856,26859,25805,26857,26858,26860,6778, 26862,26864,20578,26865,
26866,26867,2708, 26869,24346,26871,26870,1383, 18810,26872,26874,26875,20441,380, 26876,26877,26879,5655, 26882,26883,339, 8304, 26885,26897,2301, 26886,26889,
- 26887,26888,26890,18809,26891,317, 26894,26892,26893,26895,26896,26898,26899,26901,26902,26903,13498,2210, 11265,883, 2355, 26904,370, 26906,26910,26911,490,
- 26914,26916,26917,2037, 332, 345, 317, 12752,26907,26908,26909,317, 4960, 26912,439, 26913,26915,26918,26923,26919,26920,26921,26922,26924,26925,317, 7118,
+ 26887,26888,26890,18809,26891,317, 26894,26892,26893,26895,26896,26898,26899,26901,26902,26903,13498,2210, 11265,883, 2355, 26904,370, 26906,26910,26911,490,
+ 26914,26916,26917,2037, 332, 345, 317, 12752,26907,26908,26909,317, 4960, 26912,439, 26913,26915,26918,26923,26919,26920,26921,26922,26924,26925,317, 7118,
317, 317, 317, 317, 26927,26936,26941,26943,1060, 26928,15480,26929,26930,26931,26932,26933,26934,26935,26937,26938,350, 349, 26939,26940,26942,24333,11344,
- 26944,26945,26966,26989,27004,27014,27015,27047,27055,27059,27062,27067,27107,27159,27221,27245,27256,27258,27316,27327,27335,27363,27372,27408,27417,27421,8083,
- 1078, 1358, 317, 26946,26949,26951,26954,22724,5213, 26955,26956,404, 18244,26947,26277,7174, 317, 363, 26948,16052,9012, 317, 380, 26950,4925, 317, 5419,
- 9012, 317, 345, 26952,1358, 26953,5055, 8296, 26957,9981, 26958,26960,26962,26963,26964,5295, 1108, 1108, 390, 26959,363, 3284, 2317, 26961,16535,3284, 490,
- 1108, 2148, 26965,13638,317, 949, 26967,26968,26969,26971,26972,3726, 317, 26975,26982,381, 365, 26970,490, 10629,1481, 397, 380, 26973,554, 16318,7411,
+ 26944,26945,26966,26989,27004,27014,27015,27047,27055,27059,27062,27067,27107,27159,27221,27245,27256,27258,27316,27327,27335,27363,27372,27408,27417,27421,8083,
+ 1078, 1358, 317, 26946,26949,26951,26954,22724,5213, 26955,26956,404, 18244,26947,26277,7174, 317, 363, 26948,16052,9012, 317, 380, 26950,4925, 317, 5419,
+ 9012, 317, 345, 26952,1358, 26953,5055, 8296, 26957,9981, 26958,26960,26962,26963,26964,5295, 1108, 1108, 390, 26959,363, 3284, 2317, 26961,16535,3284, 490,
+ 1108, 2148, 26965,13638,317, 949, 26967,26968,26969,26971,26972,3726, 317, 26975,26982,381, 365, 26970,490, 10629,1481, 397, 380, 26973,554, 16318,7411,
1230, 26974,350, 1700, 15457,11263,317, 13427,24239,5223, 2261, 5088, 422, 26976,26979,26977,317, 26978,356, 466, 317, 605, 317, 390, 26980,26981,11446,
- 26983,26984,26985,26986,26987,356, 466, 317, 26988,5226, 12044,317, 1168, 26990,26991,26996,27000,27001,27002,7394, 3987, 317, 5537, 9914, 317, 26992,350,
- 26993,26994,5058, 26995,26997,5987, 404, 317, 317, 543, 317, 317, 26998,317, 26999,317, 427, 1160, 390, 4965, 11089,8638, 490, 317, 27003,990, 380,
- 27005,27007,13324,3884, 27008,14444,27009,27010,27013,11147,27006,350, 350, 2184, 27011,16187,466, 6831, 343, 350, 2222, 9876, 27012,419, 381, 26026,6228,
+ 26983,26984,26985,26986,26987,356, 466, 317, 26988,5226, 12044,317, 1168, 26990,26991,26996,27000,27001,27002,7394, 3987, 317, 5537, 9914, 317, 26992,350,
+ 26993,26994,5058, 26995,26997,5987, 404, 317, 317, 543, 317, 317, 26998,317, 26999,317, 427, 1160, 390, 4965, 11089,8638, 490, 317, 27003,990, 380,
+ 27005,27007,13324,3884, 27008,14444,27009,27010,27013,11147,27006,350, 350, 2184, 27011,16187,466, 6831, 343, 350, 2222, 9876, 27012,419, 381, 26026,6228,
317, 363, 27016,27020,7405, 4984, 27023,27026,27032,27034,27035,1020, 4984, 27040,490, 27045,5840, 6089, 23801,27017,574, 6732, 27018,2117, 27019,27021,27022,
- 27024,27025,2063, 384, 22561,390, 27027,14611,27028,14119,27029,317, 317, 10820,6228, 2077, 27030,27031,355, 27033,382, 541, 27036,27039,317, 1160, 317,
- 27037,27038,27041,373, 4962, 27042,27043,27044,317, 2036, 27046,4984, 27048,27050,6600, 27051,10758,27054,343, 27049,370, 397, 27052,317, 27053,466, 5662,
+ 27024,27025,2063, 384, 22561,390, 27027,14611,27028,14119,27029,317, 317, 10820,6228, 2077, 27030,27031,355, 27033,382, 541, 27036,27039,317, 1160, 317,
+ 27037,27038,27041,373, 4962, 27042,27043,27044,317, 2036, 27046,4984, 27048,27050,6600, 27051,10758,27054,343, 27049,370, 397, 27052,317, 27053,466, 5662,
317, 990, 380, 317, 21074,27056,12189,317, 27058,27057,317, 27060,317, 27061,11443,2227, 27063,7473, 27064,2146, 27065,27066,27068,27069,27071,27072,27074,
27080,27081,15667,27083,338, 27089,27097,27099,27100,27103,5300, 4980, 501, 27070,363, 605, 317, 1588, 317, 448, 351, 317, 27073,339, 27075,3751, 27076,
27079,6881, 1358, 433, 363, 27077,27078,9557, 4984, 345, 27082,27084,27088,317, 372, 17343,27085,27086,27087,4965, 2222, 11844,27090,27092,27093,7401, 27094,
- 23439,317, 27096,2627, 317, 27091,317, 365, 317, 2260, 317, 514, 476, 317, 27095,404, 350, 2572, 317, 317, 5575, 27098,5055, 317, 1345, 317, 317,
+ 23439,317, 27096,2627, 317, 27091,317, 365, 317, 2260, 317, 514, 476, 317, 27095,404, 350, 2572, 317, 317, 5575, 27098,5055, 317, 1345, 317, 317,
27101,27102,1347, 345, 1943, 27104,27105,317, 27106,27108,27121,27124,27133,27136,27154,12732,27155,27156,343, 345, 6195, 27109,27110,27113,27120,317, 27111,
- 27112,317, 317, 3284, 27114,317, 27115,317, 27116,27117,27118,27119,965, 317, 317, 3284, 12062,13638,27122,27123,11844,5836, 633, 332, 317, 350, 317,
+ 27112,317, 317, 3284, 27114,317, 27115,317, 27116,27117,27118,27119,965, 317, 317, 3284, 12062,13638,27122,27123,11844,5836, 633, 332, 317, 350, 317,
27125,317, 27128,2108, 539, 27126,605, 27127,1230, 27129,27130,27131,27132,397, 418, 5536, 27134,3529, 27135,428, 380, 27137,27138,27139,317, 27152,27140,
- 27143,27144,27146,27150,27151,3284, 345, 317, 21048,27141,5447, 27142,2510, 2326, 3884, 317, 317, 5392, 1347, 27145,371, 27147,12994,6648, 5055, 27148,317,
+ 27143,27144,27146,27150,27151,3284, 345, 317, 21048,27141,5447, 27142,2510, 2326, 3884, 317, 317, 5392, 1347, 27145,371, 27147,12994,6648, 5055, 27148,317,
317, 5421, 317, 317, 317, 345, 27149,317, 345, 317, 5836, 27153,14991,363, 490, 345, 27157,23682,8301, 8275, 27158,317, 27160,949, 27162,5872, 27175,
27178,27179,27183,27186,27187,27188,27189,27194,27195,27197,27210,27213,27214,4268, 15074,490, 343, 27161,370, 2558, 15445,27163,27165,27166,5223, 27168,27171,
- 362, 13856,1588, 27164,1345, 343, 317, 6036, 21067,343, 27167,404, 317, 8125, 317, 4980, 27169,6600, 27170,317, 345, 317, 19695,317, 390, 363, 382,
- 5055, 27172,27173,27174,9609, 27176,27177,1108, 9265, 7428, 27180,2066, 381, 27181,317, 7214, 317, 27182,317, 317, 17400,370, 363, 5163, 363, 404, 7785,
- 5793, 4984, 27184,27185,23353,9186, 5483, 343, 317, 317, 490, 380, 16825,404, 5538, 5561, 317, 9667, 362, 20178,317, 317, 317, 363, 362, 27190,3999,
- 343, 351, 27191,27193,27192,363, 370, 363, 363, 10506,351, 27196,27198,27200,27203,27205,27208,27209,6228, 27199,317, 317, 14132,27201,27202,27204,317,
- 27206,8526, 5792, 27207,404, 317, 363, 370, 363, 317, 371, 317, 5861, 12849,27211,27212,1347, 332, 1109, 11236,10626,21067,343, 343, 355, 8301, 363,
+ 362, 13856,1588, 27164,1345, 343, 317, 6036, 21067,343, 27167,404, 317, 8125, 317, 4980, 27169,6600, 27170,317, 345, 317, 19695,317, 390, 363, 382,
+ 5055, 27172,27173,27174,9609, 27176,27177,1108, 9265, 7428, 27180,2066, 381, 27181,317, 7214, 317, 27182,317, 317, 17400,370, 363, 5163, 363, 404, 7785,
+ 5793, 4984, 27184,27185,23353,9186, 5483, 343, 317, 317, 490, 380, 16825,404, 5538, 5561, 317, 9667, 362, 20178,317, 317, 317, 363, 362, 27190,3999,
+ 343, 351, 27191,27193,27192,363, 370, 363, 363, 10506,351, 27196,27198,27200,27203,27205,27208,27209,6228, 27199,317, 317, 14132,27201,27202,27204,317,
+ 27206,8526, 5792, 27207,404, 317, 363, 370, 363, 317, 371, 317, 5861, 12849,27211,27212,1347, 332, 1109, 11236,10626,21067,343, 343, 355, 8301, 363,
27215,27216,27217,27218,4984, 19283,27219,2413, 3609, 363, 3987, 27220,27222,27223,27227,27228,27229,27231,27232,27234,27236,2222, 27237,14501,7214, 23995,27224,
- 343, 27225,317, 27226,466, 351, 345, 317, 363, 6713, 343, 363, 27230,363, 9557, 27233,317, 1992, 372, 320, 5991, 27235,3987, 27238,317, 27240,2022,
- 27242,27243,27244,7405, 27239,27241,3361, 2086, 27246,27251,317, 27252,6917, 20255,27253,404, 27247,381, 332, 27248,27249,27250,317, 11089,362, 317, 6769,
- 332, 382, 490, 27254,350, 27255,27257,27259,27261,27264,27265,27269,27270,27271,7672, 27274,27275,27277,27283,27288,27292,27296,27298,27310,27312,27315,317,
- 17368,3645, 345, 317, 343, 9666, 27260,2537, 345, 27262,27263,317, 4591, 381, 9609, 317, 15399,10758,6593, 27266,4984, 20275,27267,317, 27268,317, 8979,
- 490, 5616, 4925, 317, 6600, 471, 27272,4984, 1160, 27273,317, 490, 317, 317, 3366, 317, 8301, 516, 3999, 317, 317, 345, 317, 27276,501, 27278,2510,
- 27281,392, 317, 350, 27279,27280,370, 4984, 317, 5661, 27282,404, 8544, 19324,27284,27285,6598, 10928,15058,27286,27287,345, 9695, 11147,2132, 317, 317,
- 396, 490, 8178, 25086,27289,27290,4943, 317, 363, 15107,5838, 317, 27291,317, 5793, 1160, 381, 317, 27293,27294,27295,523, 428, 27297,6674, 363, 6002,
- 380, 5538, 317, 317, 27299,27303,27304,27306,27307,27308,317, 427, 27300,27302,317, 27301,27305,317, 5154, 1358, 27309,317, 317, 390, 27311,5687, 4962,
- 363, 317, 10533,317, 380, 343, 27313,27314,551, 11308,27317,8600, 27318,27319,15058,27320,25455,27322,27324,3987, 2156, 317, 17197,371, 317, 317, 317,
- 27321,27323,14174,12017,362, 4591, 380, 351, 343, 27325,427, 13110,27326,317, 426, 9521, 27328,16651,539, 18084,27330,27331,317, 2298, 14161,27329,363,
+ 343, 27225,317, 27226,466, 351, 345, 317, 363, 6713, 343, 363, 27230,363, 9557, 27233,317, 1992, 372, 320, 5991, 27235,3987, 27238,317, 27240,2022,
+ 27242,27243,27244,7405, 27239,27241,3361, 2086, 27246,27251,317, 27252,6917, 20255,27253,404, 27247,381, 332, 27248,27249,27250,317, 11089,362, 317, 6769,
+ 332, 382, 490, 27254,350, 27255,27257,27259,27261,27264,27265,27269,27270,27271,7672, 27274,27275,27277,27283,27288,27292,27296,27298,27310,27312,27315,317,
+ 17368,3645, 345, 317, 343, 9666, 27260,2537, 345, 27262,27263,317, 4591, 381, 9609, 317, 15399,10758,6593, 27266,4984, 20275,27267,317, 27268,317, 8979,
+ 490, 5616, 4925, 317, 6600, 471, 27272,4984, 1160, 27273,317, 490, 317, 317, 3366, 317, 8301, 516, 3999, 317, 317, 345, 317, 27276,501, 27278,2510,
+ 27281,392, 317, 350, 27279,27280,370, 4984, 317, 5661, 27282,404, 8544, 19324,27284,27285,6598, 10928,15058,27286,27287,345, 9695, 11147,2132, 317, 317,
+ 396, 490, 8178, 25086,27289,27290,4943, 317, 363, 15107,5838, 317, 27291,317, 5793, 1160, 381, 317, 27293,27294,27295,523, 428, 27297,6674, 363, 6002,
+ 380, 5538, 317, 317, 27299,27303,27304,27306,27307,27308,317, 427, 27300,27302,317, 27301,27305,317, 5154, 1358, 27309,317, 317, 390, 27311,5687, 4962,
+ 363, 317, 10533,317, 380, 343, 27313,27314,551, 11308,27317,8600, 27318,27319,15058,27320,25455,27322,27324,3987, 2156, 317, 17197,371, 317, 317, 317,
+ 27321,27323,14174,12017,362, 4591, 380, 351, 343, 27325,427, 13110,27326,317, 426, 9521, 27328,16651,539, 18084,27330,27331,317, 2298, 14161,27329,363,
448, 25072,27332,19661,343, 317, 317, 317, 317, 27333,351, 27334,317, 27336,27337,27342,27345,381, 27346,27354,348, 27355,490, 382, 27356,27357,27358,
27360,317, 27362,15566,27338,6231, 317, 27341,27339,466, 317, 11055,27340,317, 6326, 317, 1347, 14385,27343,27344,317, 27347,2058, 27348,343, 27352,27349,
8301, 1549, 362, 9479, 27351,317, 27350,448, 343, 363, 370, 317, 27353,18257,317, 2211, 345, 404, 370, 1325, 362, 27359,317, 317, 1999, 2117, 14535,
27361,317, 351, 373, 2610, 363, 27364,27365,10172,343, 367, 7149, 12815,317, 27366,27370,317, 5005, 317, 27367,27368,27369,317, 27371,27373,27374,27375,
- 27376,12774,8506, 14792,350, 27378,27381,5201, 27406,27407,20909,8035, 466, 343, 317, 317, 5105, 317, 9170, 317, 27377,27379,27380,3999, 356, 11825,317,
+ 27376,12774,8506, 14792,350, 27378,27381,5201, 27406,27407,20909,8035, 466, 343, 317, 317, 5105, 317, 9170, 317, 27377,27379,27380,3999, 356, 11825,317,
551, 6326, 27382,27383,27384,27387,19661,27388,27391,27395,27398,27402,27404,27405,317, 428, 6598, 25078,27385,27386,427, 428, 1444, 439, 2193, 27389,27390,
- 317, 27392,27393,21786,27394,27396,27397,471, 350, 27399,27400,5573, 343, 5441, 27401,6081, 16901,2060, 11783,27403,19771,6354, 439, 20880,466, 363, 317,
- 317, 10487,370, 343, 27409,27412,27414,317, 27410,27411,27413,27415,27416,6780, 12309,27418,343, 363, 6204, 27419,27420,12731,27422,15058,2163, 350, 317,
- 1347, 1160, 3361, 14377,371, 317, 27424,27425,27488,27489,27537,27538,27568,7073, 27572,27607,27609,27610,565, 2416, 27645,27650,317, 27426,27427,350, 2219,
- 27431,27434,27455,27457,27459,27462,27463,27469,27470,27472,27473,27474,27478,27481,14905,25415,27487,2369, 371, 11146,27428,27429,20897,317, 27430,317, 428,
- 19617,27432,27433,466, 363, 7949, 317, 317, 1347, 345, 363, 27435,4965, 27436,365, 2108, 2271, 27437,27438,516, 27453,317, 27454,20496,3999, 332, 5022,
+ 317, 27392,27393,21786,27394,27396,27397,471, 350, 27399,27400,5573, 343, 5441, 27401,6081, 16901,2060, 11783,27403,19771,6354, 439, 20880,466, 363, 317,
+ 317, 10487,370, 343, 27409,27412,27414,317, 27410,27411,27413,27415,27416,6780, 12309,27418,343, 363, 6204, 27419,27420,12731,27422,15058,2163, 350, 317,
+ 1347, 1160, 3361, 14377,371, 317, 27424,27425,27488,27489,27537,27538,27568,7073, 27572,27607,27609,27610,565, 2416, 27645,27650,317, 27426,27427,350, 2219,
+ 27431,27434,27455,27457,27459,27462,27463,27469,27470,27472,27473,27474,27478,27481,14905,25415,27487,2369, 371, 11146,27428,27429,20897,317, 27430,317, 428,
+ 19617,27432,27433,466, 363, 7949, 317, 317, 1347, 345, 363, 27435,4965, 27436,365, 2108, 2271, 27437,27438,516, 27453,317, 27454,20496,3999, 332, 5022,
27439,27452,317, 489, 8178, 27440,27441,27442,27443,1292, 317, 27444,27445,649, 27446,990, 27447,5223, 27450,27451,5217, 6420, 317, 317, 889, 317, 27448,
27449,12943,14663,25078,490, 317, 1020, 5022, 2948, 27456,343, 27458,9067, 14337,466, 25067,317, 5037, 6532, 27460,565, 9521, 27461,317, 317, 2024, 11132,
- 317, 10471,343, 27464,2074, 345, 501, 2271, 317, 27465,27466,13950,6172, 27467,27468,5225, 356, 1347, 5225, 5464, 1345, 317, 317, 10093,27471,1020, 332,
- 11144,317, 6123, 317, 5655, 10295,381, 27475,27477,27476,317, 363, 10948,317, 6002, 27479,4952, 27480,27482,27484,27485,8948, 10877,317, 390, 27486,317,
+ 317, 10471,343, 27464,2074, 345, 501, 2271, 317, 27465,27466,13950,6172, 27467,27468,5225, 356, 1347, 5225, 5464, 1345, 317, 317, 10093,27471,1020, 332,
+ 11144,317, 6123, 317, 5655, 10295,381, 27475,27477,27476,317, 363, 10948,317, 6002, 27479,4952, 27480,27482,27484,27485,8948, 10877,317, 390, 27486,317,
27483,9914, 5962, 4943, 317, 5841, 317, 332, 3884, 317, 9289, 9866, 343, 27490,27506,27507,27508,27509,27511,27512,27513,1481, 490, 27519,490, 27520,27523,
27524,6461, 27529,27530,27531,27533,27534,27491,27494,370, 356, 10891,466, 17189,27492,317, 27493,317, 317, 317, 12151,27495,27496,27497,3999, 27499,27500,
- 27501,27502,27503,317, 14589,2631, 27498,439, 476, 553, 317, 10520,554, 2060, 434, 27504,27505,23881,7949, 370, 317, 5441, 27510,317, 362, 501, 351,
- 345, 8178, 317, 351, 350, 4954, 317, 27514,2134, 351, 511, 27517,27518,27515,27516,5626, 351, 317, 5093, 27521,363, 27522,363, 12696,466, 363, 1358,
- 12154,16970,317, 5626, 8600, 27525,380, 350, 350, 27526,990, 27527,10877,350, 27528,317, 317, 317, 317, 1347, 317, 12459,27532,466, 362, 8828, 370,
- 11831,317, 1345, 317, 381, 380, 2222, 27535,351, 27536,27539,27541,27545,27547,27549,2152, 27552,27556,27558,27560,27566,27540,27542,1358, 27543,350, 5626,
+ 27501,27502,27503,317, 14589,2631, 27498,439, 476, 553, 317, 10520,554, 2060, 434, 27504,27505,23881,7949, 370, 317, 5441, 27510,317, 362, 501, 351,
+ 345, 8178, 317, 351, 350, 4954, 317, 27514,2134, 351, 511, 27517,27518,27515,27516,5626, 351, 317, 5093, 27521,363, 27522,363, 12696,466, 363, 1358,
+ 12154,16970,317, 5626, 8600, 27525,380, 350, 350, 27526,990, 27527,10877,350, 27528,317, 317, 317, 317, 1347, 317, 12459,27532,466, 362, 8828, 370,
+ 11831,317, 1345, 317, 381, 380, 2222, 27535,351, 27536,27539,27541,27545,27547,27549,2152, 27552,27556,27558,27560,27566,27540,27542,1358, 27543,350, 5626,
27544,501, 317, 9624, 27546,10422,466, 317, 6089, 27548,1033, 1033, 3079, 317, 27550,10422,27551,384, 317, 5482, 382, 317, 363, 27553,6046, 3284, 27554,
- 2510, 3999, 2022, 317, 27555,317, 373, 380, 356, 349, 2272, 371, 27557,317, 19783,11362,317, 27559,2134, 428, 428, 317, 345, 27561,3999, 27562,317,
+ 2510, 3999, 2022, 317, 27555,317, 373, 380, 356, 349, 2272, 371, 27557,317, 19783,11362,317, 27559,2134, 428, 428, 317, 345, 27561,3999, 27562,317,
317, 27563,27564,27565,7405, 317, 317, 2571, 317, 2060, 5653, 363, 27567,381, 343, 1160, 27569,27570,27571,27573,27575,371, 27576,27579,362, 27580,27582,
27583,27585,27588,27590,27591,10583,27593,381, 27597,27599,27600,27602,27604,27574,27577,27578,317, 15457,390, 2298, 490, 6048, 11626,317, 343, 1347, 27581,
- 381, 27584,27586,27587,1588, 317, 27589,357, 16053,332, 7911, 317, 317, 317, 317, 317, 5273, 19840,3599, 11089,11347,2391, 8049, 9479, 27592,1345, 7035,
+ 381, 27584,27586,27587,1588, 317, 27589,357, 16053,332, 7911, 317, 317, 317, 317, 317, 5273, 19840,3599, 11089,11347,2391, 8049, 9479, 27592,1345, 7035,
5991, 9648, 2110, 384, 365, 27594,27596,1358, 27595,1230, 22561,27598,343, 12281,317, 6726, 363, 21057,27601,6504, 6532, 317, 27603,27605,317, 317, 15108,
- 27606,27608,27611,27612,27615,20276,27616,27620,27622,27623,12281,27624,27639,13720,370, 27642,27643,2035, 12930,27644,317, 5687, 27613,351, 27614,362, 317,
+ 27606,27608,27611,27612,27615,20276,27616,27620,27622,27623,12281,27624,27639,13720,370, 27642,27643,2035, 12930,27644,317, 5687, 27613,351, 27614,362, 317,
567, 4984, 15334,27617,1358, 27619,356, 27618,317, 382, 381, 27621,7242, 381, 694, 27625,27628,27629,351, 27630,27632,19390,27634,27627,27638,7053, 27626,
- 2631, 1588, 27631,27633,7651, 2298, 27635,466, 27636,27637,317, 381, 317, 16368,332, 27640,317, 551, 27641,317, 6441, 317, 2507, 5687, 317, 317, 345,
- 2188, 362, 27646,27647,27648,7419, 418, 466, 27649,11236,2571, 11450,543, 317, 12226,317, 11089,7068, 27651,27653,27652,27654,27655,27657,27661,2035, 7942,
+ 2631, 1588, 27631,27633,7651, 2298, 27635,466, 27636,27637,317, 381, 317, 16368,332, 27640,317, 551, 27641,317, 6441, 317, 2507, 5687, 317, 317, 345,
+ 2188, 362, 27646,27647,27648,7419, 418, 466, 27649,11236,2571, 11450,543, 317, 12226,317, 11089,7068, 27651,27653,27652,27654,27655,27657,27661,2035, 7942,
2510, 2553, 27663,5653, 1032, 27658,27659,27660,27662,27664,748, 27666,27667,27668,27675,27679,10331,5653, 27680,27681,27669,27671,27674,27670,608, 27672,27673,
396, 608, 27676,27677,27678,27682,27684,19065,27683,27685,27686,27687,27693,27712,27742,27758,27770,27778,27784,27786,27789,27804,27816,27848,27914,27919,27940,
- 27943,27986,28005,28017,28023,28025,350, 28026,27688,19665,5689, 317, 27689,27691,370, 27692,27690,8448, 370, 27694,27696,971, 27699,317, 27701,27703,490,
- 27705,27707,27710,27711,7785, 317, 390, 317, 27695,317, 356, 317, 317, 27697,19661,317, 317, 317, 27698,590, 371, 317, 317, 27700,2146, 317, 370,
+ 27943,27986,28005,28017,28023,28025,350, 28026,27688,19665,5689, 317, 27689,27691,370, 27692,27690,8448, 370, 27694,27696,971, 27699,317, 27701,27703,490,
+ 27705,27707,27710,27711,7785, 317, 390, 317, 27695,317, 356, 317, 317, 27697,19661,317, 317, 317, 27698,590, 371, 317, 317, 27700,2146, 317, 370,
9012, 27702,3284, 5105, 380, 13003,4591, 317, 5295, 427, 4965, 27704,8522, 27706,356, 343, 4949, 5295, 317, 370, 27708,27709,317, 3361, 317, 371, 15480,
317, 363, 2680, 317, 10449,965, 27713,27716,15908,27717,27731,6294, 27738,27739,27740,317, 317, 7095, 27714,7916, 6486, 27715,317, 317, 1011, 633, 20728,
- 357, 27718,27722,596, 13638,27727,27728,317, 22577,1060, 343, 2060, 27719,27720,27721,1020, 27723,27724,27725,6691, 27726,317, 2590, 317, 27729,27730,317,
+ 357, 27718,27722,596, 13638,27727,27728,317, 22577,1060, 343, 2060, 27719,27720,27721,1020, 27723,27724,27725,6691, 27726,317, 2590, 317, 27729,27730,317,
27732,27733,27734,16651,27735,362, 662, 27736,20508,27737,1160, 317, 317, 381, 317, 355, 479, 2369, 10877,605, 317, 2705, 5809, 356, 27741,317, 10520,
345, 27743,27745,27746,8096, 371, 27754,362, 2022, 317, 317, 23199,27756,371, 317, 27744,12696,466, 317, 27747,320, 633, 371, 317, 27748,362, 27749,
27753,317, 317, 5826, 862, 2374, 434, 27750,27751,27752,27755,404, 6420, 27757,371, 317, 317, 5836, 350, 371, 2117, 27759,22681,27761,27762,27764,27769,
- 543, 317, 466, 27760,317, 317, 345, 343, 5392, 343, 5926, 511, 10538,27763,317, 317, 5224, 1060, 6046, 27765,466, 10855,27766,27767,27768,1194, 6415,
- 27771,12332,27773,15443,350, 12775,27777,317, 345, 27772,2515, 381, 2590, 19303,27774,27775,343, 362, 2022, 551, 345, 27776,317, 317, 317, 9064, 381,
- 317, 370, 21013,317, 21261,22577,27779,6195, 27780,365, 317, 27781,27782,24918,27783,1230, 1325, 1160, 317, 317, 317, 317, 12696,351, 5055, 10878,4268,
+ 543, 317, 466, 27760,317, 317, 345, 343, 5392, 343, 5926, 511, 10538,27763,317, 317, 5224, 1060, 6046, 27765,466, 10855,27766,27767,27768,1194, 6415,
+ 27771,12332,27773,15443,350, 12775,27777,317, 345, 27772,2515, 381, 2590, 19303,27774,27775,343, 362, 2022, 551, 345, 27776,317, 317, 317, 9064, 381,
+ 317, 370, 21013,317, 21261,22577,27779,6195, 27780,365, 317, 27781,27782,24918,27783,1230, 1325, 1160, 317, 317, 317, 317, 12696,351, 5055, 10878,4268,
370, 8772, 356, 27785,317, 317, 317, 363, 2060, 2134, 317, 381, 381, 12349,350, 2537, 317, 27787,27788,390, 6204, 27790,27792,27800,27802,27803,27791,
2163, 5655, 381, 317, 637, 9088, 27793,24667,27794,2402, 362, 27796,1347, 27798,10820,317, 27795,27797,27799,350, 27801,390, 345, 12590,27805,5896, 27806,
- 27808,27810,27811,24949,27812,2387, 27814,27815,8178, 317, 317, 317, 21074,317, 1588, 317, 5223, 27807,317, 350, 2081, 27809,1060, 317, 2073, 317, 490,
- 1992, 551, 27813,317, 2571, 427, 317, 317, 317, 317, 5223, 27817,27820,27827,27828,27830,27834,5793, 27837,27838,27842,27844,27818,10815,317, 1347, 1347,
+ 27808,27810,27811,24949,27812,2387, 27814,27815,8178, 317, 317, 317, 21074,317, 1588, 317, 5223, 27807,317, 350, 2081, 27809,1060, 317, 2073, 317, 490,
+ 1992, 551, 27813,317, 2571, 427, 317, 317, 317, 317, 5223, 27817,27820,27827,27828,27830,27834,5793, 27837,27838,27842,27844,27818,10815,317, 1347, 1347,
317, 27819,27821,3987, 24398,27823,27825,317, 19590,5862, 27822,27824,384, 27826,2171, 404, 365, 427, 370, 27829,14744,27831,27832,27833,343, 27835,27836,
17588,317, 27839,27841,14834,6420, 27840,381, 5255, 27843,2507, 1020, 19915,27845,370, 466, 27846,27847,370, 317, 363, 2509, 5343, 27849,27852,27856,27861,
- 27866,27868,27871,27876,27877,27878,27887,27891,27892,27900,27901,16029,27902,27907,2997, 27908,27909,490, 27912,22466,27850,27851,1020, 25434,2368, 1230, 317,
- 27853,9298, 11786,27854,27855,27857,637, 380, 27859,27860,27858,317, 637, 4980, 12731,558, 27862,27863,2402, 27864,741, 479, 1160, 7949, 27865,619, 1020,
+ 27866,27868,27871,27876,27877,27878,27887,27891,27892,27900,27901,16029,27902,27907,2997, 27908,27909,490, 27912,22466,27850,27851,1020, 25434,2368, 1230, 317,
+ 27853,9298, 11786,27854,27855,27857,637, 380, 27859,27860,27858,317, 637, 4980, 12731,558, 27862,27863,2402, 27864,741, 479, 1160, 7949, 27865,619, 1020,
362, 27867,317, 27869,551, 317, 27870,27872,27875,317, 27873,27874,317, 2571, 5055, 317, 427, 428, 2357, 317, 362, 362, 490, 363, 27879,27883,27885,
317, 317, 27880,27881,27882,2022, 965, 404, 27884,371, 27886,363, 5897, 317, 317, 27888,27889,27890,3742, 370, 363, 355, 1588, 1588, 27893,27895,27896,
27897,427, 317, 362, 2066, 317, 27894,1230, 2369, 5038, 1194, 362, 380, 362, 6717, 362, 27898,27899,345, 596, 363, 2368, 2590, 10392,2553, 2024, 27903,
- 466, 27904,363, 27905,5809, 26298,5022, 27906,351, 363, 363, 2022, 363, 12448,317, 2348, 5038, 27910,27911,390, 2057, 397, 2074, 545, 27913,27915,332,
+ 466, 27904,363, 27905,5809, 26298,5022, 27906,351, 363, 363, 2022, 363, 12448,317, 2348, 5038, 27910,27911,390, 2057, 397, 2074, 545, 27913,27915,332,
27917,27918,317, 27916,27920,27922,363, 27924,27934,27937,27938,27930,949, 343, 317, 27921,370, 317, 317, 317, 27923,317, 11038,6021, 27925,27927,27931,
490, 27926,27928,317, 27929,1078, 345, 27930,27932,317, 5501, 27933,27935,16257,27936,27939,22699,16582,27941,2271, 27942,2272, 574, 27944,27950,390, 27952,
27953,12454,27956,15837,27958,27960,27961,362, 27963,27966,27969,27970,27976,27979,27982,550, 27983,5457, 27945,317, 317, 590, 27946,3710, 27947,317, 27948,
- 27949,428, 350, 317, 317, 13920,12799,15438,17683,1358, 1331, 5054, 12696,363, 27951,4984, 363, 427, 317, 317, 27954,317, 332, 317, 27955,10820,317,
- 27957,363, 363, 7785, 317, 1109, 1992, 317, 27959,339, 11921,6578, 6599, 5055, 27962,370, 466, 390, 356, 363, 27964,2024, 27965,317, 1992, 371, 419,
+ 27949,428, 350, 317, 317, 13920,12799,15438,17683,1358, 1331, 5054, 12696,363, 27951,4984, 363, 427, 317, 317, 27954,317, 332, 317, 27955,10820,317,
+ 27957,363, 363, 7785, 317, 1109, 1992, 317, 27959,339, 11921,6578, 6599, 5055, 27962,370, 466, 390, 356, 363, 27964,2024, 27965,317, 1992, 371, 419,
317, 7403, 362, 27967,27968,390, 25583,27971,27973,27974,317, 27972,380, 8325, 317, 10820,27975,390, 27977,317, 27978,27980,27981,5793, 27984,27985,27987,
- 390, 27988,27991,27994,27995,317, 27996,27999,363, 28004,14144,317, 317, 8099, 317, 317, 27989,381, 27990,10429,448, 27992,1020, 317, 27993,370, 363,
+ 390, 27988,27991,27994,27995,317, 27996,27999,363, 28004,14144,317, 317, 8099, 317, 317, 27989,381, 27990,10429,448, 27992,1020, 317, 27993,370, 363,
317, 317, 27997,27998,566, 3505, 9319, 12934,1020, 10422,28000,362, 12993,28002,28001,28003,2077, 28006,28009,2058, 28010,28011,28012,28014,28016,317, 28007,
317, 28008,343, 10149,541, 317, 345, 10891,1358, 317, 8273, 317, 317, 28013,5926, 28015,363, 317, 351, 4738, 363, 370, 11307,28018,28020,2641, 28019,
317, 28021,317, 28022,1345, 2163, 28024,317, 2627, 388, 2272, 28028,28029,2035, 28030,350, 489, 28031,371, 2317, 28033,28039,28040,28046,28049,28050,28052,
- 28055,28034,5891, 28037,2272, 28035,317, 28036,28038,490, 27506,317, 356, 5343, 317, 371, 367, 28041,28042,317, 28043,28044,317, 28045,28047,28048,343,
+ 28055,28034,5891, 28037,2272, 28035,317, 28036,28038,490, 27506,317, 356, 5343, 317, 371, 367, 28041,28042,317, 28043,28044,317, 28045,28047,28048,343,
19453,3078, 381, 26627,428, 28051,28053,28054,1020, 883, 10316,317, 24893,351, 28057,28058,28059,28060,28061,28062,1998, 3999, 28063,28069,28072,28074,28084,
28089,28108,401, 1347, 6847, 317, 317, 317, 2156, 7949, 345, 317, 428, 317, 317, 466, 317, 1347, 1347, 381, 608, 356, 23731,345, 28064,28065,15772,
- 28066,28067,396, 393, 28068,28070,317, 1109, 28071,6228, 317, 2077, 317, 28073,343, 439, 28075,6546, 1020, 28083,1337, 28076,28080,28077,28078,5700, 427,
+ 28066,28067,396, 393, 28068,28070,317, 1109, 28071,6228, 317, 2077, 317, 28073,343, 439, 28075,6546, 1020, 28083,1337, 28076,28080,28077,28078,5700, 427,
5492, 28079,317, 28081,351, 28082,317, 2551, 363, 28085,4976, 28086,28087,28088,1999, 28090,28093,28095,4738, 28098,28101,363, 28102,28104,28105,28091,28092,
28094,317, 28096,28097,28099,28100,9992, 28103,2081, 28106,28107,5241, 5406, 28109,28111,28113,28116,28130,28132,28135,28140,28142,28112,490, 28114,28115,28117,
10796,28120,5836, 28128,971, 317, 28118,28119,28121,28122,362, 28125,28126,28123,28124,28127,5217, 317, 28129,28131,7627, 28133,28134,7850, 28136,28139,28137,
- 28138,5687, 7850, 317, 28141,350, 28143,10984,28144,28153,28155,28158,28166,87, 28264,28291,28419,28517,28530,28573,28635,28657,28763,28772,88, 89, 90,
+ 28138,5687, 7850, 317, 28141,350, 28143,10984,28144,28153,28155,28158,28166,87, 28264,28291,28419,28517,28530,28573,28635,28657,28763,28772,88, 89, 90,
29649,29667,29761,91, 92, 30148,30226,93, 30442,94, 30766,30800,4797, 11073,4797, 4797, 4797, 363, 28145,28149,28146,28147,28148,28150,28151,28152,28154,
28156,28157,28159,28165,28160,28161,28162,28163,28164,28167,28168,370, 28170,28171,28173,7582, 28176,28181,28182,28184,28185,501, 28186,28225,28246,316, 28257,
- 1033, 370, 28169,22351,539, 370, 28172,5866, 343, 317, 317, 28174,28175,12696,28177,363, 28178,363, 317, 28179,363, 6228, 1160, 317, 317, 633, 317,
- 1353, 5108, 362, 317, 2272, 28180,404, 740, 5942, 1889, 317, 363, 404, 9450, 5055, 2156, 317, 439, 28183,370, 16053,5661, 317, 345, 5663, 345, 365,
+ 1033, 370, 28169,22351,539, 370, 28172,5866, 343, 317, 317, 28174,28175,12696,28177,363, 28178,363, 317, 28179,363, 6228, 1160, 317, 317, 633, 317,
+ 1353, 5108, 362, 317, 2272, 28180,404, 740, 5942, 1889, 317, 363, 404, 9450, 5055, 2156, 317, 439, 28183,370, 16053,5661, 317, 345, 5663, 345, 365,
317, 2410, 28187,28188,379, 373, 28190,466, 28191,28197,28202,28209,27846,28210,28211,1020, 28224,317, 2022, 741, 317, 5159, 28189,1999, 5159, 11619,28192,
28194,554, 28195,317, 25938,317, 28193,363, 363, 343, 317, 28193,28196,343, 28198,28200,317, 28199,28201,1704, 28203,28206,10877,28208,317, 1347, 28204,
317, 28205,2272, 370, 2571, 28207,5159, 14792,18941,24039,317, 28212,317, 317, 5281, 28213,8023, 28215,362, 28218,28220,28221,317, 28214,28216,317, 28217,
- 28219,28222,28223,316, 382, 2063, 317, 404, 28226,317, 28227,350, 28228,5332, 28229,28243,317, 1345, 5399, 317, 317, 24398,370, 5861, 6036, 384, 317,
- 28230,28231,28234,2413, 554, 363, 28238,16166,363, 3075, 9914, 12417,5573, 28242,370, 28232,479, 28233,15112,317, 28235,317, 7447, 1230, 28236,28237,6089,
+ 28219,28222,28223,316, 382, 2063, 317, 404, 28226,317, 28227,350, 28228,5332, 28229,28243,317, 1345, 5399, 317, 317, 24398,370, 5861, 6036, 384, 317,
+ 28230,28231,28234,2413, 554, 363, 28238,16166,363, 3075, 9914, 12417,5573, 28242,370, 28232,479, 28233,15112,317, 28235,317, 7447, 1230, 28236,28237,6089,
439, 3999, 317, 317, 1033, 9590, 28239,5575, 28240,439, 371, 28241,6354, 412, 384, 2063, 13841,28244,539, 28245,2260, 28247,741, 28248,28249,28250,28251,
28253,28254,28255,2391, 345, 363, 28252,363, 5872, 317, 317, 633, 381, 317, 2402, 12154,343, 3621, 28256,28258,2551, 28259,317, 28260,28261,28262,28263,
28265,28266,404, 28271,28282,28283,350, 28284,28286,28290,317, 390, 365, 2719, 367, 4943, 317, 317, 28267,28268,28269,317, 317, 21053,501, 15330,12845,
- 382, 28270,356, 2184, 28272,28274,28280,317, 28273,9012, 5626, 11663,28206,28275,404, 28277,28279,2310, 13674,28276,317, 16187,28278,6203, 317, 28281,317,
- 9298, 2219, 590, 317, 4984, 3999, 7384, 28285,5962, 343, 1358, 1160, 28287,317, 530, 4984, 28288,365, 28289,339, 28292,28309,28310,28341,28342,28356,490,
+ 382, 28270,356, 2184, 28272,28274,28280,317, 28273,9012, 5626, 11663,28206,28275,404, 28277,28279,2310, 13674,28276,317, 16187,28278,6203, 317, 28281,317,
+ 9298, 2219, 590, 317, 4984, 3999, 7384, 28285,5962, 343, 1358, 1160, 28287,317, 530, 4984, 28288,365, 28289,339, 28292,28309,28310,28341,28342,28356,490,
28366,28367,28387,28390,28410,317, 8172, 28293,317, 28301,317, 28294,28296,28295,28297,28298,28299,28300,28302,28303,28304,6949, 28305,10252,317, 317, 28306,
28307,345, 28308,28311,28313,28324,317, 28328,317, 28338,2280, 356, 1588, 28312,19455,1100, 28314,28315,28316,23682,28318,5897, 5055, 28317,28319,28321,28320,
28322,28323,2035, 332, 28325,501, 14753,28326,28327,740, 28329,5464, 466, 28336,28337,28330,28331,28332,28333,28334,28335,345, 5651, 317, 28339,28340,28207,
@@ -7951,291 +7946,291 @@ static const unsigned int ChildLocs[185261] =
3529, 10035,11443,343, 3529, 439, 2108, 28353,28355,1020, 2272, 426, 28357,28358,28362,351, 504, 28359,28360,28361,28363,28364,401, 28365,466, 317, 28368,
28369,28370,28371,28373,28379,28381,28385,348, 7035, 1347, 9310, 28372,28374,28375,28376,28377,10344,345, 317, 317, 28378,596, 345, 965, 4268, 317, 28380,
339, 343, 28382,28383,28384,28386,317, 28388,28389,370, 370, 401, 28391,317, 28392,28395,28396,317, 28404,317, 28393,28394,28397,28398,28399,28400,28401,
- 28402,28403,28405,339, 28409,28406,28407,28408,28411,28414,28418,28412,28413,28415,28416,28417,433, 427, 356, 3182, 317, 5896, 28420,28423,28430,28440,8223,
- 28452,28469,28472,28484,28486,28487,28489,28491,28492,28505,28507,28515,550, 2474, 28421,28422,317, 18244,28424,28428,317, 28429,28425,28426,6228, 317, 317,
- 1087, 8301, 317, 28427,317, 350, 28431,28437,28439,317, 7779, 3576, 317, 28432,363, 2272, 317, 28433,28434,28435,2113, 2584, 5663, 2110, 28436,28438,9624,
- 8223, 317, 404, 28441,28443,28444,28445,8023, 28451,2022, 11236,14062,317, 28442,8978, 5865, 28446,317, 9624, 8023, 28447,28448,28449,5862, 381, 28450,363,
- 20535,370, 404, 404, 349, 393, 10059,351, 8977, 28453,28455,28456,317, 28457,350, 1243, 28460,2272, 28463,28464,28468,28454,370, 5458, 343, 14792,317,
- 1347, 28458,28459,351, 5225, 1347, 332, 317, 28461,7079, 22786,28462,365, 363, 332, 410, 356, 317, 5113, 28465,317, 2110, 28466,317, 317, 28467,7821,
- 28470,28471,3999, 605, 439, 363, 28473,28474,28477,28480,350, 2551, 9609, 28475,363, 28476,28478,5995, 28479,404, 28481,28482,404, 317, 28483,7055, 363,
+ 28402,28403,28405,339, 28409,28406,28407,28408,28411,28414,28418,28412,28413,28415,28416,28417,433, 427, 356, 3182, 317, 5896, 28420,28423,28430,28440,8223,
+ 28452,28469,28472,28484,28486,28487,28489,28491,28492,28505,28507,28515,550, 2474, 28421,28422,317, 18244,28424,28428,317, 28429,28425,28426,6228, 317, 317,
+ 1087, 8301, 317, 28427,317, 350, 28431,28437,28439,317, 7779, 3576, 317, 28432,363, 2272, 317, 28433,28434,28435,2113, 2584, 5663, 2110, 28436,28438,9624,
+ 8223, 317, 404, 28441,28443,28444,28445,8023, 28451,2022, 11236,14062,317, 28442,8978, 5865, 28446,317, 9624, 8023, 28447,28448,28449,5862, 381, 28450,363,
+ 20535,370, 404, 404, 349, 393, 10059,351, 8977, 28453,28455,28456,317, 28457,350, 1243, 28460,2272, 28463,28464,28468,28454,370, 5458, 343, 14792,317,
+ 1347, 28458,28459,351, 5225, 1347, 332, 317, 28461,7079, 22786,28462,365, 363, 332, 410, 356, 317, 5113, 28465,317, 2110, 28466,317, 317, 28467,7821,
+ 28470,28471,3999, 605, 439, 363, 28473,28474,28477,28480,350, 2551, 9609, 28475,363, 28476,28478,5995, 28479,404, 28481,28482,404, 317, 28483,7055, 363,
317, 6036, 28485,6940, 6900, 317, 550, 19463,28488,390, 990, 5538, 317, 317, 20909,380, 363, 28490,351, 426, 28493,28496,2163, 28502,28494,28495,28497,
5226, 28498,5447, 28499,2510, 382, 28500,343, 28501,22030,412, 317, 28503,28504,28506,28508,28514,345, 28509,28510,5942, 317, 28511,345, 362, 317, 28513,
- 28512,317, 363, 317, 5037, 28516,426, 345, 28518,16197,28522,28523,339, 18840,28526,2715, 28527,605, 28528,28519,317, 28520,317, 28521,427, 8172, 345,
+ 28512,317, 363, 317, 5037, 28516,426, 345, 28518,16197,28522,28523,339, 18840,28526,2715, 28527,605, 28528,28519,317, 28520,317, 28521,427, 8172, 345,
317, 28524,317, 28525,500, 596, 317, 574, 28529,317, 28531,28532,28537,28538,16920,1020, 28563,28567,551, 28572,28533,28534,28535,28536,28539,28540,28549,
28557,350, 28559,404, 28562,317, 28541,28544,3688, 28545,28542,356, 28543,2510, 317, 382, 6440, 2369, 28546,28547,28548,28550,317, 5201, 28555,28551,28552,
28553,28554,5201, 5324, 28556,439, 351, 28558,28560,317, 28561,6668, 317, 28564,28566,363, 28565,365, 10073,317, 317, 28568,28569,28570,28571,28574,28579,
- 28580,351, 28584,28595,28601,28602,28605,28607,28608,28621,28623,28625,28626,28628,28575,1347, 317, 28576,28577,28578,343, 28581,28582,317, 439, 16187,2067,
- 351, 12934,28583,1999, 1998, 28585,11089,28589,28591,362, 2077, 317, 12506,11158,28593,28586,317, 362, 28587,8488, 381, 28588,9938, 28590,28592,317, 2067,
+ 28580,351, 28584,28595,28601,28602,28605,28607,28608,28621,28623,28625,28626,28628,28575,1347, 317, 28576,28577,28578,343, 28581,28582,317, 439, 16187,2067,
+ 351, 12934,28583,1999, 1998, 28585,11089,28589,28591,362, 2077, 317, 12506,11158,28593,28586,317, 362, 28587,8488, 381, 28588,9938, 28590,28592,317, 2067,
404, 28594,427, 28596,28597,28598,28599,28600,2537, 317, 2322, 365, 439, 28603,28604,3529, 317, 2067, 404, 317, 5862, 343, 28606,5255, 343, 8095, 15828,
- 351, 12083,28609,396, 28611,317, 28615,317, 28616,28619,28610,28612,28613,28614,949, 490, 7116, 28617,28618,2163, 317, 520, 28620,28622,966, 6108, 8254,
- 345, 1347, 2078, 28624,343, 317, 9530, 28627,28629,28630,317, 5419, 28631,28632,28633,28634,28636,4925, 28637,28642,28644,2163, 479, 28645,28656,2134, 356,
+ 351, 12083,28609,396, 28611,317, 28615,317, 28616,28619,28610,28612,28613,28614,949, 490, 7116, 28617,28618,2163, 317, 520, 28620,28622,966, 6108, 8254,
+ 345, 1347, 2078, 28624,343, 317, 9530, 28627,28629,28630,317, 5419, 28631,28632,28633,28634,28636,4925, 28637,28642,28644,2163, 479, 28645,28656,2134, 356,
28638,28640,343, 2219, 28639,28641,2145, 24722,28643,317, 343, 362, 317, 349, 317, 8488, 5663, 12696,343, 28646,10946,28651,28652,343, 28653,5662, 28647,
450, 317, 5896, 28648,28650,28649,390, 6206, 4965, 28654,28655,28658,28659,28672,28676,28677,28678,380, 365, 28692,28695,28703,28704,28729,28732,28760,12291,
- 351, 17400,28660,28669,28588,28661,28665,4738, 350, 5662, 350, 14828,28667,28662,28663,5223, 5897, 317, 9938, 7408, 28588,28664,15457,28666,1108, 14829,6598,
- 28668,7687, 3007, 317, 28670,18460,28671,396, 412, 28673,4738, 345, 28675,317, 28674,317, 317, 13753,363, 11158,332, 2551, 6563, 24831,2134, 350, 317,
+ 351, 17400,28660,28669,28588,28661,28665,4738, 350, 5662, 350, 14828,28667,28662,28663,5223, 5897, 317, 9938, 7408, 28588,28664,15457,28666,1108, 14829,6598,
+ 28668,7687, 3007, 317, 28670,18460,28671,396, 412, 28673,4738, 345, 28675,317, 28674,317, 317, 13753,363, 11158,332, 2551, 6563, 24831,2134, 350, 317,
28679,28687,350, 317, 390, 28680,317, 28681,28684,28685,28682,28683,28686,12956,5661, 28688,2793, 15260,28689,4982, 1347, 28691,317, 317, 28690,28693,28694,
5213, 350, 317, 28696,28697,28699,28701,345, 28698,28700,363, 363, 490, 343, 28702,362, 317, 7214, 28705,371, 28706,28708,16017,2357, 8948, 317, 28709,
28725,28728,317, 3688, 28707,28710,28717,28720,28721,28711,28712,28713,28714,28715,28716,28718,28719,28722,501, 28723,28724,28726,28727,2117, 426, 28730,28731,
345, 2366, 343, 7949, 28733,28735,28738,28751,28752,15745,28753,28754,363, 7428, 28756,28734,28736,28737,28739,362, 28740,28750,9064, 362, 2108, 28741,28744,
28746,28747,9634, 28749,28742,28743,8389, 363, 545, 24113,10561,28745,8047, 4966, 350, 350, 5663, 4738, 2553, 28748,3007, 1020, 7428, 2219, 5663, 2369, 28755,
351, 28757,28758,317, 28759,363, 380, 350, 28761,501, 28762,28764,28768,21479,28765,28766,28767,28769,28771,28770,317, 356, 5847, 351, 317, 28773,28780,
- 14571,363, 317, 28781,28783,350, 28785,28788,2584, 28790,490, 543, 12742,317, 28774,28775,28776,28777,28778,28779,7911, 4949, 608, 28782,396, 427, 501,
+ 14571,363, 317, 28781,28783,350, 28785,28788,2584, 28790,490, 543, 12742,317, 28774,28775,28776,28777,28778,28779,7911, 4949, 608, 28782,396, 427, 501,
28784,317, 9575, 317, 365, 28786,1044, 439, 28787,28789,6778, 28791,1020, 28792,28793,427, 427, 28794,356, 28795,28796,28799,28802,28831,28843,28845,28856,
- 28970,28979,28984,28988,29025,29026,29031,29079,29088,29090,29095,6601, 29098,29101,29119,29121,29124,29133,29138,29141,28797,28798,28800,28801,28803,28808,9917,
+ 28970,28979,28984,28988,29025,29026,29031,29079,29088,29090,29095,6601, 29098,29101,29119,29121,29124,29133,29138,29141,28797,28798,28800,28801,28803,28808,9917,
28812,365, 28814,28817,28818,28819,28823,28827,565, 2272, 28830,28804,28805,28806,28807,7640, 5987, 28809,28810,28811,28813,28815,317, 28816,363, 21139,28820,
1526, 28821,28822,28824,28825,28826,28828,404, 317, 28829,351, 8612, 382, 28832,28837,16651,3236, 28841,28842,28833,28834,362, 427, 317, 28835,332, 28836,
- 28838,28840,28839,545, 6598, 4980, 7214, 501, 1347, 7368, 345, 28844,28579,384, 14337,28846,28848,28850,28852,317, 28847,381, 7368, 1020, 370, 317, 317,
- 28849,317, 317, 28851,7711, 381, 28853,28854,7091, 390, 990, 343, 28855,2108, 28857,370, 28861,990, 28923,28928,28932,28935,28940,28946,28948,28953,6370,
+ 28838,28840,28839,545, 6598, 4980, 7214, 501, 1347, 7368, 345, 28844,28579,384, 14337,28846,28848,28850,28852,317, 28847,381, 7368, 1020, 370, 317, 317,
+ 28849,317, 317, 28851,7711, 381, 28853,28854,7091, 390, 990, 343, 28855,2108, 28857,370, 28861,990, 28923,28928,28932,28935,28940,28946,28948,28953,6370,
28954,28964,490, 317, 317, 28858,343, 14865,28859,28860,28862,356, 25178,28863,28865,317, 28864,26978,317, 1160, 476, 28866,28869,28867,20969,5701, 28868,
317, 5055, 370, 317, 28870,28873,28886,28887,28894,28896,28905,28913,28919,28920,24305,28871,28872,28874,28878,28882,5096, 28875,28876,28877,28879,28880,28881,
433, 6525, 28883,28884,28885,1347, 20072,28888,28889,28890,28891,28892,28893,316, 28895,2163, 18617,28897,28902,28898,28899,28900,28901,8804, 317, 28903,28904,
28906,28911,317, 28907,28908,28909,28910,28912,28914,28918,1060, 525, 25880,28915,28916,28917,2584, 5640, 28921,28922,12503,10626,28924,28925,28926,28927,28929,
28931,317, 28930,343, 317, 5324, 28933,28934,28936,28937,28938,317, 317, 28939,317, 28941,28944,3361, 317, 317, 490, 28945,28942,7127, 317, 651, 28943,
- 348, 4949, 28947,28949,28950,28951,28952,384, 404, 317, 2163, 28955,28956,28957,28958,28959,28960,28961,28962,28963,28965,28968,28966,5447, 28967,2510, 382,
+ 348, 4949, 28947,28949,28950,28951,28952,384, 404, 317, 2163, 28955,28956,28957,28958,28959,28960,28961,28962,28963,28965,28968,28966,5447, 28967,2510, 382,
5616, 356, 28969,637, 317, 390, 28971,363, 362, 551, 28974,28975,28977,450, 28972,28973,2004, 28976,5886, 371, 19283,28978,28980,16553,363, 28981,28982,
5223, 317, 332, 11279,28983,28985,28987,28986,317, 356, 2364, 28989,28991,28993,28994,28996,28997,590, 2533, 28999,29002,29003,29004,29010,5022, 29014,29016,
- 2156, 5891, 28990,363, 363, 6046, 28992,2222, 396, 28995,351, 2058, 28998,29000,29001,317, 317, 317, 11648,317, 317, 7185, 5223, 29005,16880,490, 404,
- 29009,490, 404, 11280,29006,29007,29008,29011,18577,29012,29013,29015,29017,14263,29024,7062, 317, 29018,2261, 5238, 29022,488, 29019,29020,29021,317, 363,
- 11782,29023,29027,2036, 317, 29028,29029,317, 317, 404, 1999, 479, 29030,29032,22163,29035,29037,29051,362, 350, 29070,29071,29072,29075,29078,2022, 490,
+ 2156, 5891, 28990,363, 363, 6046, 28992,2222, 396, 28995,351, 2058, 28998,29000,29001,317, 317, 317, 11648,317, 317, 7185, 5223, 29005,16880,490, 404,
+ 29009,490, 404, 11280,29006,29007,29008,29011,18577,29012,29013,29015,29017,14263,29024,7062, 317, 29018,2261, 5238, 29022,488, 29019,29020,29021,317, 363,
+ 11782,29023,29027,2036, 317, 29028,29029,317, 317, 404, 1999, 479, 29030,29032,22163,29035,29037,29051,362, 350, 29070,29071,29072,29075,29078,2022, 490,
29033,29034,5464, 29036,29038,990, 2551, 6089, 29040,362, 29041,29045,29049,29050,317, 29039,317, 6594, 6594, 317, 317, 29042,350, 351, 7910, 6089, 29043,
29044,4949, 1453, 317, 10561,501, 6673, 29046,317, 11709,5662, 29048,317, 317, 29047,2584, 11147,317, 2058, 363, 1700, 29052,29053,29054,29057,29063,29064,
- 29068,29069,317, 29055,29056,29058,6089, 29059,351, 29060,29062,404, 6089, 427, 29061,363, 363, 5809, 29065,9547, 1347, 345, 29066,29067,317, 12696,404,
- 332, 332, 381, 29073,2171, 363, 18840,29074,4949, 448, 4738, 1020, 29076,356, 29077,29080,4213, 29084,13023,29086,29087,6601, 317, 6089, 29081,317, 317,
- 29082,29083,12934,29085,317, 317, 317, 1721, 317, 317, 29089,2110, 3284, 332, 29091,8510, 2551, 2948, 29092,29093,9057, 29094,490, 8722, 317, 363, 5225,
- 5325, 1999, 29096,26005,2073, 29097,2004, 29099,29100,8848, 990, 29102,29105,29106,29111,29114,29116,2171, 350, 363, 14263,29117,29118,317, 7650, 29103,7645,
- 1526, 29104,7590, 558, 448, 317, 29107,317, 2236, 29109,317, 29108,8906, 29110,29112,29113,2152, 343, 317, 29115,350, 1588, 10580,363, 356, 351, 350,
- 363, 558, 384, 5810, 351, 554, 466, 6761, 29120,20161,551, 29122,5717, 10550,3031, 29123,1347, 29125,29127,29132,317, 29126,317, 317, 317, 317, 317,
- 427, 317, 317, 29128,29129,29131,29130,6228, 633, 673, 633, 317, 317, 317, 29134,29136,490, 384, 29137,363, 2004, 356, 29135,2219, 356, 5164, 5241,
- 29139,2110, 5634, 29140,317, 29142,370, 29143,24957,317, 29144,29158,29208,29209,29211,29224,343, 16187,29226,343, 29242,29243,29254,29260,29295,29296,345,
+ 29068,29069,317, 29055,29056,29058,6089, 29059,351, 29060,29062,404, 6089, 427, 29061,363, 363, 5809, 29065,9547, 1347, 345, 29066,29067,317, 12696,404,
+ 332, 332, 381, 29073,2171, 363, 18840,29074,4949, 448, 4738, 1020, 29076,356, 29077,29080,4213, 29084,13023,29086,29087,6601, 317, 6089, 29081,317, 317,
+ 29082,29083,12934,29085,317, 317, 317, 1721, 317, 317, 29089,2110, 3284, 332, 29091,8510, 2551, 2948, 29092,29093,9057, 29094,490, 8722, 317, 363, 5225,
+ 5325, 1999, 29096,26005,2073, 29097,2004, 29099,29100,8848, 990, 29102,29105,29106,29111,29114,29116,2171, 350, 363, 14263,29117,29118,317, 7650, 29103,7645,
+ 1526, 29104,7590, 558, 448, 317, 29107,317, 2236, 29109,317, 29108,8906, 29110,29112,29113,2152, 343, 317, 29115,350, 1588, 10580,363, 356, 351, 350,
+ 363, 558, 384, 5810, 351, 554, 466, 6761, 29120,20161,551, 29122,5717, 10550,3031, 29123,1347, 29125,29127,29132,317, 29126,317, 317, 317, 317, 317,
+ 427, 317, 317, 29128,29129,29131,29130,6228, 633, 673, 633, 317, 317, 317, 29134,29136,490, 384, 29137,363, 2004, 356, 29135,2219, 356, 5164, 5241,
+ 29139,2110, 5634, 29140,317, 29142,370, 29143,24957,317, 29144,29158,29208,29209,29211,29224,343, 16187,29226,343, 29242,29243,29254,29260,29295,29296,345,
29300,29302,29305,29145,317, 29146,317, 29148,29149,317, 356, 29155,332, 8000, 21188,317, 29147,317, 12693,5501, 29150,317, 29152,29151,29153,317, 29154,
29156,29157,672, 29159,29171,29186,29187,29190,29198,317, 317, 568, 29160,29161,29162,29170,26565,3853, 26761,29163,29165,10557,29166,29164,29167,22912,29168,
- 29169,5464, 8553, 3854, 29172,29174,29179,29182,29173,317, 29175,404, 29176,29177,29178,350, 29180,29181,4980, 5996, 317, 370, 3999, 29183,29184,29185,466,
+ 29169,5464, 8553, 3854, 29172,29174,29179,29182,29173,317, 29175,404, 29176,29177,29178,350, 29180,29181,4980, 5996, 317, 370, 3999, 29183,29184,29185,466,
29188,29189,317, 10922,317, 404, 29191,29193,29195,29196,29192,2184, 5464, 3854, 29194,5343, 29197,29199,6021, 29201,363, 29206,5717, 351, 29200,29202,29203,
- 1526, 29204,29205,29207,23534,10253,401, 317, 389, 29210,317, 342, 29212,2652, 29215,490, 5746, 490, 339, 29213,317, 29214,5793, 29216,29217,29221,511,
+ 1526, 29204,29205,29207,23534,10253,401, 317, 389, 29210,317, 342, 29212,2652, 29215,490, 5746, 490, 339, 29213,317, 29214,5793, 29216,29217,29221,511,
29223,4980, 317, 7941, 29218,466, 317, 29219,317, 29220,317, 29222,5412, 29225,578, 2219, 371, 29227,332, 29230,29233,29236,29238,29241,29228,29229,21944,
1347, 1358, 29231,490, 29232,18454,317, 4984, 6228, 317, 2366, 317, 317, 29234,29235,21048,8484, 29237,317, 363, 29239,8544, 29240,5055, 5459, 317, 15253,
- 370, 6036, 3999, 317, 4984, 29244,29247,29250,29252,8178, 317, 29253,637, 949, 320, 9298, 2271, 29245,5956, 345, 29246,8431, 29248,29249,11962,6195, 2108,
+ 370, 6036, 3999, 317, 4984, 29244,29247,29250,29252,8178, 317, 29253,637, 949, 320, 9298, 2271, 29245,5956, 345, 29246,8431, 29248,29249,11962,6195, 2108,
511, 404, 317, 371, 317, 317, 29251,9931, 19709,15540,5087, 29255,6021, 29256,29257,317, 29258,343, 29259,5701, 2571, 317, 29261,29265,9624, 29269,29274,
29279,29285,29290,404, 29293,2163, 29262,29263,2094, 29264,317, 29266,29268,12958,317, 29267,29270,29273,29271,10295,345, 29272,13077,5717, 317, 29275,29276,
- 29277,29278,29280,332, 29282,29281,29283,13927,29284,466, 3854, 317, 365, 29286,29288,29287,29289,29291,29292,1347, 1078, 356, 29294,2184, 5464, 2571, 343,
+ 29277,29278,29280,332, 29282,29281,29283,13927,29284,466, 3854, 317, 365, 29286,29288,29287,29289,29291,29292,1347, 1078, 356, 29294,2184, 5464, 2571, 343,
317, 24638,317, 29297,29298,29299,3529, 15457,2586, 343, 2298, 5810, 490, 29301,317, 22121,5167, 29303,29304,29306,29322,29323,29377,29428,29432,29442,29486,
- 29489,29495,29498,29501,29511,29516,29525,29534,29537,29541,29554,29566,29619,29625,29643,29644,29645,29307,29308,29310,29315,29309,317, 29311,29313,29312,356,
+ 29489,29495,29498,29501,29511,29516,29525,29534,29537,29541,29554,29566,29619,29625,29643,29644,29645,29307,29308,29310,29315,29309,317, 29311,29313,29312,356,
1526, 317, 29314,2247, 16992,356, 29316,29317,29318,2509, 29319,29320,29321,2074, 9914, 29324,29332,29339,29343,317, 29348,29349,29357,29364,29366,29325,29326,
29328,29331,5174, 8436, 2261, 5237, 29327,29329,29330,10097,490, 29333,29334,29335,29336,29337,5828, 29338,29340,23645,29341,29342,14337,466, 3854, 2571, 29344,
29346,332, 345, 29345,317, 29347,9383, 26472,29350,29351,2156, 29354,5394, 10877,29352,29353,2003, 427, 29355,29356,29358,29362,29363,29359,29360,29361,29365,
29367,29368,29369,29370,29371,29372,29374,29373,29375,29376,29378,29380,14409,29387,29388,29390,19504,29422,9425, 29425,29427,7035, 29379,29381,10946,317, 29384,
29385,5244, 29382,29383,5273, 6013, 10393,380, 317, 370, 15581,29386,363, 10946,10878,332, 343, 29389,2108, 317, 6670, 29391,29397,29398,29400,29405,29409,
- 29412,29417,29418,29361,29392,29393,29396,29394,29395,317, 10252,29399,8272, 29401,26090,29402,29403,29404,380, 5652, 427, 29406,29407,29408,29410,29411,317,
- 29413,29414,29415,29416,466, 317, 5399, 317, 317, 8468, 29397,29419,29421,29420,7466, 13947,29423,29424,29426,523, 5447, 466, 317, 317, 7149, 2004, 317,
+ 29412,29417,29418,29361,29392,29393,29396,29394,29395,317, 10252,29399,8272, 29401,26090,29402,29403,29404,380, 5652, 427, 29406,29407,29408,29410,29411,317,
+ 29413,29414,29415,29416,466, 317, 5399, 317, 317, 8468, 29397,29419,29421,29420,7466, 13947,29423,29424,29426,523, 5447, 466, 317, 317, 7149, 2004, 317,
22666,317, 29429,8484, 29430,404, 6212, 29431,363, 8346, 317, 1347, 490, 24322,4267, 29433,29436,29437,26533,29441,29434,29435,578, 7942, 2219, 29438,29439,
- 317, 29440,466, 410, 317, 3854, 1347, 317, 29443,29445,14571,29450,350, 29465,29466,29469,362, 9289, 6601, 29479,18839,29483,29485,29444,26676,356, 539,
- 2272, 29446,426, 29448,29447,29449,29451,29454,5662, 29463,24226,29464,317, 29452,29453,29455,29458,29460,2368, 12564,29462,29456,29457,6593, 29459,5917, 5765,
- 29461,466, 362, 363, 355, 501, 8224, 29467,29468,317, 317, 317, 317, 6013, 317, 29470,29473,29476,439, 343, 29471,317, 29472,29474,9624, 15213,511,
- 5662, 29475,4980, 381, 6089, 317, 29457,6593, 317, 317, 29477,29478,29480,29482,317, 29481,9124, 10877,396, 29195,29484,428, 351, 29487,8551, 29488,339,
+ 317, 29440,466, 410, 317, 3854, 1347, 317, 29443,29445,14571,29450,350, 29465,29466,29469,362, 9289, 6601, 29479,18839,29483,29485,29444,26676,356, 539,
+ 2272, 29446,426, 29448,29447,29449,29451,29454,5662, 29463,24226,29464,317, 29452,29453,29455,29458,29460,2368, 12564,29462,29456,29457,6593, 29459,5917, 5765,
+ 29461,466, 362, 363, 355, 501, 8224, 29467,29468,317, 317, 317, 317, 6013, 317, 29470,29473,29476,439, 343, 29471,317, 29472,29474,9624, 15213,511,
+ 5662, 29475,4980, 381, 6089, 317, 29457,6593, 317, 317, 29477,29478,29480,29482,317, 29481,9124, 10877,396, 29195,29484,428, 351, 29487,8551, 29488,339,
371, 317, 29490,317, 29493,317, 29491,29492,317, 317, 401, 29494,29496,14649,29497,317, 410, 356, 14172,3854, 317, 317, 29499,29500,365, 2521, 29502,
- 29504,29510,317, 29503,29505,317, 29308,29509,29506,29507,29508,29512,29515,397, 363, 317, 29513,29514,29517,29518,29519,29524,317, 365, 317, 345, 7565,
+ 29504,29510,317, 29503,29505,317, 29308,29509,29506,29507,29508,29512,29515,397, 363, 317, 29513,29514,29517,29518,29519,29524,317, 365, 317, 345, 7565,
317, 381, 317, 29520,29521,29523,317, 29522,29526,29528,29529,29531,317, 29532,2001, 343, 4943, 29527,1347, 7214, 29530,1230, 343, 29533,397, 7834, 29535,
- 29536,29538,29539,29540,14337,596, 317, 29542,29543,29549,29553,29544,29545,343, 29546,11767,317, 29547,29548,29550,29552,29551,5399, 5112, 466, 5399, 317,
- 29555,29558,29559,29562,29563,7428, 4965, 14262,29565,5809, 317, 2336, 29556,29557,5105, 21168,6638, 317, 29560,29561,5055, 382, 29564,9557, 4738, 605, 5447,
- 466, 5717, 29567,29572,29582,29593,350, 29597,29599,29615,29616,5120, 29568,22809,29570,29569,29571,5866, 317, 29573,29574,12277,343, 6228, 317, 18448,426,
+ 29536,29538,29539,29540,14337,596, 317, 29542,29543,29549,29553,29544,29545,343, 29546,11767,317, 29547,29548,29550,29552,29551,5399, 5112, 466, 5399, 317,
+ 29555,29558,29559,29562,29563,7428, 4965, 14262,29565,5809, 317, 2336, 29556,29557,5105, 21168,6638, 317, 29560,29561,5055, 382, 29564,9557, 4738, 605, 5447,
+ 466, 5717, 29567,29572,29582,29593,350, 29597,29599,29615,29616,5120, 29568,22809,29570,29569,29571,5866, 317, 29573,29574,12277,343, 6228, 317, 18448,426,
356, 27814,2271, 343, 2402, 29575,317, 29578,29576,29577,29579,29580,29581,10422,466, 5399, 317, 29583,29584,29588,29585,29587,29586,29589,356, 29590,29591,
29592,5441, 10086,29594,29596,29595,596, 26676,317, 29598,24437,9118, 9347, 29600,29606,29613,8469, 29614,16143,490, 29601,29602,29605,317, 345, 9118, 29603,
1347, 29604,3854, 1526, 29607,1347, 1020, 29359,29608,345, 381, 29609,29610,29611,29612,345, 19617,317, 7988, 29617,1526, 29618,590, 29620,29624,29621,29622,
29623,373, 23268,29626,29631,1531, 317, 29627,29630,317, 29628,29629,5447, 466, 3854, 410, 5464, 4591, 29632,29641,29633,29634,29635,317, 29636,29637,29638,
- 29639,317, 29640,5249, 370, 29542,29642,12721,5159, 29646,4965, 29647,29648,2094, 1347, 10252,29650,396, 29651,6002, 490, 345, 29655,29657,29665,29666,2272,
+ 29639,317, 29640,5249, 370, 29542,29642,12721,5159, 29646,4965, 29647,29648,2094, 1347, 10252,29650,396, 29651,6002, 490, 345, 29655,29657,29665,29666,2272,
6309, 29652,362, 29653,29654,29656,29658,29659,29660,29661,29662,29663,29664,29668,3869, 29680,29682,29693,29745,29746,29751,29756,511, 367, 29759,29760,29669,
29674,29676,29677,29670,29671,29672,29673,29675,29678,29679,404, 317, 317, 29681,9498, 404, 2236, 29683,29691,29684,29686,29690,29685,29687,29688,5105, 29689,
- 29692,427, 554, 363, 427, 427, 317, 490, 29694,29698,29703,29706,29713,5601, 29716,29719,29723,29724,29734,29743,317, 29695,317, 29696,29697,29699,432,
+ 29692,427, 554, 363, 427, 427, 317, 490, 29694,29698,29703,29706,29713,5601, 29716,29719,29723,29724,29734,29743,317, 29695,317, 29696,29697,29699,432,
29700,22034,29702,29701,317, 1347, 25427,29704,29705,29707,29709,29708,29710,1347, 29711,29712,29714,19791,29715,380, 29717,29718,29720,29721,2272, 25216,29722,
- 345, 4591, 317, 574, 345, 29725,29729,29731,29726,29727,29728,370, 7147, 343, 29730,29732,2156, 8204, 29733,29735,29736,29740,29737,29738,1347, 29739,4564,
- 427, 29741,2156, 317, 29742,1526, 17897,29744,29747,15074,29748,965, 29750,2272, 29749,551, 29752,29754,12141,26359,317, 2219, 29753,317, 7734, 5661, 404,
- 317, 390, 7592, 29755,2610, 2222, 29757,29758,2310, 5810, 2970, 29762,29763,29774,29777,345, 29764,29767,356, 29765,14716,317, 382, 24322,5201, 29766,5225,
+ 345, 4591, 317, 574, 345, 29725,29729,29731,29726,29727,29728,370, 7147, 343, 29730,29732,2156, 8204, 29733,29735,29736,29740,29737,29738,1347, 29739,4564,
+ 427, 29741,2156, 317, 29742,1526, 17897,29744,29747,15074,29748,965, 29750,2272, 29749,551, 29752,29754,12141,26359,317, 2219, 29753,317, 7734, 5661, 404,
+ 317, 390, 7592, 29755,2610, 2222, 29757,29758,2310, 5810, 2970, 29762,29763,29774,29777,345, 29764,29767,356, 29765,14716,317, 382, 24322,5201, 29766,5225,
14337,466, 29768,5113, 29769,29770,29773,29771,29772,448, 29775,29776,317, 29778,2291, 29780,29784,29786,317, 29787,29788,29779,22003,29781,317, 1108, 29782,
29783,317, 29785,317, 5399, 5174, 317, 9482, 345, 596, 317, 29789,521, 29790,22012,29791,29792,13766,5477, 29793,29802,29808,29813,29817,29830,29832,29840,
- 29841,29857,29860,29867,29876,29885,29892,29894,29904,29908,29915,29919,29920,29921,29923,29935,29794,29795,404, 5655, 317, 356, 29797,29798,29801,29796,5394,
- 466, 12796,317, 4591, 1588, 9027, 29799,29800,2108, 29803,380, 380, 29807,317, 29804,317, 317, 29805,29806,29809,28241,379, 317, 29811,29810,29812,7852,
- 29814,1395, 6000, 2022, 29815,7490, 29816,5663, 363, 7990, 29818,29820,29823,29826,2551, 29828,317, 29829,362, 3387, 317, 29819,345, 29821,356, 29822,351,
- 345, 343, 382, 363, 29824,317, 29825,29827,317, 5241, 317, 1999, 29831,1999, 4788, 29833,29836,29834,317, 29835,401, 29837,29839,29838,28207,22866,8224,
- 317, 29842,5173, 27623,29846,29847,29849,29851,12994,29854,29855,362, 404, 29843,633, 633, 29844,339, 317, 13221,29845,5996, 1499, 5826, 317, 7792, 317,
+ 29841,29857,29860,29867,29876,29885,29892,29894,29904,29908,29915,29919,29920,29921,29923,29935,29794,29795,404, 5655, 317, 356, 29797,29798,29801,29796,5394,
+ 466, 12796,317, 4591, 1588, 9027, 29799,29800,2108, 29803,380, 380, 29807,317, 29804,317, 317, 29805,29806,29809,28241,379, 317, 29811,29810,29812,7852,
+ 29814,1395, 6000, 2022, 29815,7490, 29816,5663, 363, 7990, 29818,29820,29823,29826,2551, 29828,317, 29829,362, 3387, 317, 29819,345, 29821,356, 29822,351,
+ 345, 343, 382, 363, 29824,317, 29825,29827,317, 5241, 317, 1999, 29831,1999, 4788, 29833,29836,29834,317, 29835,401, 29837,29839,29838,28207,22866,8224,
+ 317, 29842,5173, 27623,29846,29847,29849,29851,12994,29854,29855,362, 404, 29843,633, 633, 29844,339, 317, 13221,29845,5996, 1499, 5826, 317, 7792, 317,
5300, 1160, 29848,363, 363, 404, 317, 29850,29852,317, 29853,317, 29856,29858,2035, 8864, 29859,490, 317, 29861,29863,29865,2310, 390, 29862,7214, 12700,
404, 5626, 29864,317, 2271, 15459,317, 390, 29866,29868,29869,29871,29874,29870,381, 7098, 29872,29873,29875,11635,29877,29880,6419, 317, 29883,501, 29878,
29879,317, 29881,29882,317, 9504, 317, 5897, 8491, 29884,11308,9450, 426, 5717, 29886,317, 2280, 317, 362, 317, 29887,29889,29888,20985,343, 29890,29891,
- 317, 1160, 5343, 29893,317, 510, 13679,29895,29900,29901,29902,4965, 29896,29897,29898,29899,317, 490, 381, 1230, 332, 5538, 5105, 29903,1347, 5309, 2566,
- 448, 29905,19390,29906,29907,356, 1044, 356, 317, 10517,29909,29910,362, 29911,5205, 5223, 29912,29913,29914,29916,2004, 29917,29918,356, 5847, 317, 370,
- 363, 28276,370, 5684, 29922,3630, 2533, 317, 29924,29925,29926,29930,29927,29928,29929,2035, 29931,5688, 20532,29932,29933,29934,29936,590, 29939,29940,9818,
- 29937,29938,29941,29942,29944,29947,29951,7225, 29990,29992,29994,29995,29946,30002,30014,30017,550, 30025,30033,30064,30073,30074,30092,29521,30144,29943,501,
+ 317, 1160, 5343, 29893,317, 510, 13679,29895,29900,29901,29902,4965, 29896,29897,29898,29899,317, 490, 381, 1230, 332, 5538, 5105, 29903,1347, 5309, 2566,
+ 448, 29905,19390,29906,29907,356, 1044, 356, 317, 10517,29909,29910,362, 29911,5205, 5223, 29912,29913,29914,29916,2004, 29917,29918,356, 5847, 317, 370,
+ 363, 28276,370, 5684, 29922,3630, 2533, 317, 29924,29925,29926,29930,29927,29928,29929,2035, 29931,5688, 20532,29932,29933,29934,29936,590, 29939,29940,9818,
+ 29937,29938,29941,29942,29944,29947,29951,7225, 29990,29992,29994,29995,29946,30002,30014,30017,550, 30025,30033,30064,30073,30074,30092,29521,30144,29943,501,
29945,370, 317, 317, 29948,5896, 8389, 29949,29950,363, 7942, 29952,29967,29975,29984,29986,29953,29954,11626,29957,29960,29961,29963,29966,2134, 29955,29956,
- 29958,29959,18333,343, 574, 22122,5241, 5687, 2073, 29962,565, 2142, 363, 5752, 29964,29965,317, 317, 1347, 3854, 317, 382, 5355, 9398, 5570, 3869, 9756,
- 9398, 9398, 29968,29969,29970,395, 9938, 8178, 6674, 5898, 479, 29971,29973,29974,5273, 29972,8599, 26788,4949, 29976,317, 490, 29978,29980,24810,29983,351,
+ 29958,29959,18333,343, 574, 22122,5241, 5687, 2073, 29962,565, 2142, 363, 5752, 29964,29965,317, 317, 1347, 3854, 317, 382, 5355, 9398, 5570, 3869, 9756,
+ 9398, 9398, 29968,29969,29970,395, 9938, 8178, 6674, 5898, 479, 29971,29973,29974,5273, 29972,8599, 26788,4949, 29976,317, 490, 29978,29980,24810,29983,351,
29977,332, 29979,5241, 433, 29981,18273,490, 29982,351, 5238, 29985,605, 29987,6817, 29988,29989,20130,490, 29991,490, 29993,2844, 17543,1030, 7698, 29996,
536, 29999,404, 30001,450, 29997,317, 29998,30000,30003,6195, 30004,30005,2381, 30013,7627, 1915, 8051, 12979,317, 317, 30006,6294, 5447, 30008,30007,30009,
30010,30011,30012,30015,351, 30016,11825,490, 30018,30019,30022,30023,30020,30021,8914, 380, 390, 30024,30026,30027,30031,30028,345, 30029,30030,30032,30034,
30038,30049,30054,30056,30057,30061,317, 343, 6409, 2272, 30035,1020, 30036,30037,317, 13376,536, 748, 501, 490, 30039,25562,30040,30041,30044,317, 28664,
- 748, 30042,30043,7942, 30045,30047,4984, 317, 30046,5793, 332, 1109, 30048,30050,29268,30052,5241, 5105, 8937, 380, 30051,30053,5226, 8633, 30055,363, 2603,
- 317, 317, 317, 351, 2004, 317, 30058,30060,21483,30059,317, 5711, 317, 5694, 332, 30062,381, 317, 30063,317, 30065,30066,30068,317, 490, 30067,2134,
+ 748, 30042,30043,7942, 30045,30047,4984, 317, 30046,5793, 332, 1109, 30048,30050,29268,30052,5241, 5105, 8937, 380, 30051,30053,5226, 8633, 30055,363, 2603,
+ 317, 317, 317, 351, 2004, 317, 30058,30060,21483,30059,317, 5711, 317, 5694, 332, 30062,381, 317, 30063,317, 30065,30066,30068,317, 490, 30067,2134,
1020, 9688, 30069,24119,2134, 30071,30070,30072,348, 30075,30077,10898,30086,2328, 30088,362, 350, 30091,396, 1325, 317, 1345, 30076,412, 3079, 317, 30078,
30079,5624, 30084,1345, 317, 317, 2193, 362, 13766,404, 30080,30081,30082,30083,18577,370, 317, 30085,371, 4984, 317, 30087,317, 351, 30089,30090,30093,
- 6449, 30104,30120,30122,6917, 30125,30128,30138,2391, 317, 30094,30097,30098,363, 490, 2086, 30100,317, 317, 2156, 363, 5033, 30095,7448, 30096,5238, 404,
+ 6449, 30104,30120,30122,6917, 30125,30128,30138,2391, 317, 30094,30097,30098,363, 490, 2086, 30100,317, 317, 2156, 363, 5033, 30095,7448, 30096,5238, 404,
30099,317, 317, 7489, 5241, 30101,30102,30103,10046,30105,30106,30109,30111,317, 7452, 30112,1347, 30117,30119,30107,30108,30110,393, 12523,550, 30113,30115,
317, 4980, 30114,30116,317, 30118,8243, 30121,10770,380, 30123,317, 30124,373, 5446, 371, 317, 8213, 30126,30127,317, 30129,30132,30135,30137,345, 30130,
30131,317, 317, 536, 317, 381, 30133,15094,317, 30134,990, 30136,317, 13378,748, 30139,30142,317, 30140,30141,317, 30143,6541, 1347, 30145,30146,30147,
- 5765, 30149,30150,30160,345, 30165,30201,1020, 511, 30203,30204,30209,30212,30215,30219,30220,30222,30225,343, 382, 1347, 2533, 11073,30151,30152,10329,317,
- 30153,30154,30156,317, 2033, 317, 30155,404, 30157,30158,30159,30161,30162,30163,30164,30166,30168,30173,30177,30178,30197,30198,30199,30167,6228, 317, 380,
+ 5765, 30149,30150,30160,345, 30165,30201,1020, 511, 30203,30204,30209,30212,30215,30219,30220,30222,30225,343, 382, 1347, 2533, 11073,30151,30152,10329,317,
+ 30153,30154,30156,317, 2033, 317, 30155,404, 30157,30158,30159,30161,30162,30163,30164,30166,30168,30173,30177,30178,30197,30198,30199,30167,6228, 317, 380,
30169,317, 30170,1998, 2272, 363, 30171,30172,539, 317, 404, 380, 990, 5700, 351, 5538, 30174,30175,30176,30179,30182,30180,30181,2546, 5200, 30183,30188,
30191,30196,30184,30185,30186,30187,2510, 9548, 317, 30189,30190,11275,343, 317, 30192,30193,30194,30195,10253,317, 30200,19069,355, 317, 345, 10252,24574,
- 30202,332, 30205,373, 380, 30207,30208,30206,317, 4738, 30210,5241, 30211,30213,30214,317, 30216,30217,317, 362, 1588, 2391, 317, 30218,2219, 404, 2156,
+ 30202,332, 30205,373, 380, 30207,30208,30206,317, 4738, 30210,5241, 30211,30213,30214,317, 30216,30217,317, 362, 1588, 2391, 317, 30218,2219, 404, 2156,
5653, 30221,30223,30224,380, 404, 8948, 350, 363, 30227,30228,30240,30242,30243,30244,30248,30253,30262,30264,30265,30282,30319,30329,30339,343, 30340,19814,
- 351, 343, 2081, 30229,30233,30237,30230,30231,30232,30234,30235,30236,30238,30239,621, 362, 345, 30241,317, 5241, 5241, 490, 5241, 380, 5309, 9869, 5437,
- 30245,317, 2022, 30246,317, 1160, 30247,317, 1347, 317, 317, 24113,30249,30250,30251,30252,30254,30255,30259,317, 30260,9931, 30256,6854, 30257,30258,8672,
+ 351, 343, 2081, 30229,30233,30237,30230,30231,30232,30234,30235,30236,30238,30239,621, 362, 345, 30241,317, 5241, 5241, 490, 5241, 380, 5309, 9869, 5437,
+ 30245,317, 2022, 30246,317, 1160, 30247,317, 1347, 317, 317, 24113,30249,30250,30251,30252,30254,30255,30259,317, 30260,9931, 30256,6854, 30257,30258,8672,
30261,30263,596, 3726, 317, 514, 26042,30266,363, 30268,30277,30279,30267,12225,30269,30272,30275,30270,30271,6904, 30273,30274,8311, 595, 30276,30278,30280,
30281,30283,317, 317, 317, 30286,30288,1020, 30289,30290,30291,404, 30317,740, 30284,30285,30287,390, 2541, 12912,619, 30292,30294,21318,30300,29906,28751,
30302,30303,30305,30306,30311,30316,17357,7035, 30293,2631, 551, 12084,30295,397, 30299,1060, 30296,30297,30298,30301,19790,2272, 30304,20320,29399,28220,30307,
741, 1060, 30308,5055, 17711,30309,30310,30312,30314,466, 3075, 30315,30313,2541, 30318,30320,30322,27477,497, 30325,30321,30323,317, 30324,30326,15526,30328,
- 30327,9182, 605, 30330,30332,363, 30335,30338,2094, 30331,30333,30334,8959, 8557, 30336,30337,7577, 490, 30341,30342,30373,30375,30413,30417,30418,501, 7874,
+ 30327,9182, 605, 30330,30332,363, 30335,30338,2094, 30331,30333,30334,8959, 8557, 30336,30337,7577, 490, 30341,30342,30373,30375,30413,30417,30418,501, 7874,
30433,30440,30343,13077,317, 30345,30348,30360,30371,30372,381, 30344,7764, 596, 30346,363, 30347,317, 30349,350, 13995,30351,2108, 332, 30358,30359,30350,
12303,317, 371, 30352,30353,30354,1347, 13834,5793, 363, 30355,10674,317, 30356,30357,339, 317, 396, 11844,5838, 363, 404, 5037, 30361,30362,30365,30363,
- 30364,5447, 9130, 351, 30366,30367,30368,30369,30370,11635,15330,332, 5262, 30374,30376,30379,30385,7070, 30412,317, 439, 30377,15953,317, 30378,5991, 2401,
- 9648, 370, 565, 30380,30382,363, 3999, 30381,379, 466, 2077, 317, 30383,30384,18675,5492, 30386,30387,10489,30388,511, 30389,30391,30394,30395,30396,9420,
- 7678, 30399,14768,30401,30403,6089, 30406,10489,12864,21303,30390,7044, 30392,11124,30393,11965,5159, 990, 15853,381, 30397,30398,2272, 466, 317, 30400,2022,
- 12564,30402,17219,317, 511, 30404,437, 317, 317, 30405,317, 8891, 1230, 362, 2272, 30407,11336,30408,2060, 30409,30410,30411,1160, 6578, 30414,30415,1459,
+ 30364,5447, 9130, 351, 30366,30367,30368,30369,30370,11635,15330,332, 5262, 30374,30376,30379,30385,7070, 30412,317, 439, 30377,15953,317, 30378,5991, 2401,
+ 9648, 370, 565, 30380,30382,363, 3999, 30381,379, 466, 2077, 317, 30383,30384,18675,5492, 30386,30387,10489,30388,511, 30389,30391,30394,30395,30396,9420,
+ 7678, 30399,14768,30401,30403,6089, 30406,10489,12864,21303,30390,7044, 30392,11124,30393,11965,5159, 990, 15853,381, 30397,30398,2272, 466, 317, 30400,2022,
+ 12564,30402,17219,317, 511, 30404,437, 317, 317, 30405,317, 8891, 1230, 362, 2272, 30407,11336,30408,2060, 30409,30410,30411,1160, 6578, 30414,30415,1459,
30416,317, 317, 317, 317, 1109, 4984, 6263, 30419,317, 30425,30428,30429,30432,30420,30421,9832, 30422,30423,370, 30424,317, 1087, 11089,3031, 2272, 30426,
30427,1526, 350, 317, 30430,404, 30431,6429, 5717, 30434,7916, 490, 317, 317, 30435,5717, 30436,317, 30437,30438,30439,21495,317, 317, 7990, 1481, 30441,
317, 30443,16277,30445,30448,30451,30452,30453,30455,23749,5255, 30214,30444,30446,1347, 8488, 317, 30447,317, 317, 30449,30450,3007, 356, 317, 30454,30456,
20813,30479,30539,30551,30554,30568,30582,30583,350, 30585,30603,30675,30679,30758,30761,30457,30463,30466,30467,5003, 30471,30473,30458,30462,30459,30460,30461,
356, 466, 370, 30464,30465,363, 30468,2155, 317, 30469,5365, 30470,466, 317, 345, 1347, 317, 30472,30474,30475,30476,30477,30478,30480,30485,30502,30508,
30512,30520,30526,30534,30481,30484,30482,30483,4965, 4965, 30486,30487,30493,30498,30500,317, 30488,30491,30489,466, 317, 30490,317, 30492,30494,356, 30495,
- 382, 30496,30497,21200,317, 30499,12360,30501,345, 21419,30503,30507,30504,30505,30506,466, 410, 317, 1347, 317, 350, 5097, 30509,30510,30511,466, 363,
+ 382, 30496,30497,21200,317, 30499,12360,30501,345, 21419,30503,30507,30504,30505,30506,466, 410, 317, 1347, 317, 350, 5097, 30509,30510,30511,466, 363,
5457, 21670,5324, 3854, 317, 317, 30513,30515,30514,5488, 2156, 5717, 30516,30517,30518,30519,5477, 397, 30521,30522,30523,30524,30525,30527,30529,3854, 30528,
317, 1325, 404, 448, 30530,30531,30532,30533,30535,22032,30537,30536,30538,466, 30540,8817, 4980, 30545,30550,317, 350, 317, 30541,30542,21168,5447, 30543,
2510, 382, 30544,5634, 30546,30547,22064,22021,30548,30549,17897,2184, 21485,22064,30552,30553,356, 30555,30560,30565,30567,18587,30556,30557,30558,356, 30559,
- 317, 382, 363, 5550, 30561,30564,30562,30563,356, 5113, 2510, 317, 30566,317, 30569,30572,30573,30581,30570,490, 30571,5447, 466, 345, 30574,30575,466,
+ 317, 382, 363, 5550, 30561,30564,30562,30563,356, 5113, 2510, 317, 30566,317, 30569,30572,30573,30581,30570,490, 30571,5447, 466, 345, 30574,30575,466,
317, 317, 30576,2156, 30577,30578,30579,30580,356, 466, 345, 317, 6036, 2272, 30584,351, 545, 30586,4591, 30587,30588,30589,30592,30597,30600,381, 29396,
2593, 8272, 25503,317, 5742, 30590,30591,30593,30594,30595,30596,30598,30599,30601,8637, 30602,30604,30612,30636,30638,30652,30663,30673,30605,30610,30606,30607,
410, 5991, 466, 317, 1347, 30608,30609,343, 30611,317, 30613,30616,30620,30622,30626,30614,30615,356, 3999, 317, 24726,5167, 30617,5968, 30618,1325, 30619,
- 30621,317, 30623,30625,21168,356, 30624,382, 22534,1347, 434, 30627,30635,363, 30628,30630,30629,5717, 498, 30631,30632,30633,30634,10422,466, 317, 5324,
- 5226, 393, 370, 317, 30637,5225, 5447, 466, 317, 30639,4788, 30641,30643,10528,30640,30642,5225, 5323, 5717, 30644,30647,30649,30645,30646,14337,466, 317,
+ 30621,317, 30623,30625,21168,356, 30624,382, 22534,1347, 434, 30627,30635,363, 30628,30630,30629,5717, 498, 30631,30632,30633,30634,10422,466, 317, 5324,
+ 5226, 393, 370, 317, 30637,5225, 5447, 466, 317, 30639,4788, 30641,30643,10528,30640,30642,5225, 5323, 5717, 30644,30647,30649,30645,30646,14337,466, 317,
373, 5220, 21669,30648,466, 30650,5055, 30651,30653,30658,30660,12662,30654,30655,30656,30657,317, 30659,5225, 10422,466, 317, 8136, 30661,12277,382, 30662,
5054, 21434,30664,30670,30665,30666,317, 317, 5464, 30667,370, 317, 7405, 382, 30668,6496, 30669,30671,30672,22032,30674,30676,30677,30678,30680,30681,30697,
30703,30708,370, 381, 370, 30682,30687,30691,30683,30684,30685,30686,30688,30689,1347, 28918,410, 10422,466, 317, 317, 30690,351, 5457, 9852, 5550, 12958,
30692,30694,30693,30695,30696,29607,370, 30698,29151,30699,317, 30700,30701,30702,26665,317, 30704,30705,356, 30706,382, 30707,30709,30750,30754,30755,30757,
- 317, 30710,30711,30719,30720,30722,7801, 30725,18092,30727,30733,30734,30735,30744,30712,26718,30714,30713,30715,30716,30717,30718,30721,30723,30724,30726,432,
+ 317, 30710,30711,30719,30720,30722,7801, 30725,18092,30727,30733,30734,30735,30744,30712,26718,30714,30713,30715,30716,30717,30718,30721,30723,30724,30726,432,
30728,30729,30730,30731,30732,1588, 21496,30736,6329, 30737,30738,30739,30742,30740,30741,30743,30745,30749,30746,30747,30748,343, 5324, 490, 30751,30752,22802,
- 30753,8403, 317, 21393,5201, 2413, 400, 30756,1526, 5226, 30759,2156, 317, 8807, 30760,30762,30763,30764,30765,30767,30768,30774,30776,10480,30794,362, 404,
+ 30753,8403, 317, 21393,5201, 2413, 400, 30756,1526, 5226, 30759,2156, 317, 8807, 30760,30762,30763,30764,30765,30767,30768,30774,30776,10480,30794,362, 404,
5093, 30795,30796,30798,30799,8172, 9657, 30769,30770,30771,30772,30773,30775,317, 30777,12816,30780,379, 30781,466, 30784,30786,15424,30787,30790,30778,16875,
30779,30782,30783,25458,30785,1347, 350, 2107, 18941,530, 30788,30789,7035, 428, 565, 30791,30792,30793,590, 9450, 5571, 30797,350, 6758, 363, 8612, 30801,
30803,332, 363, 30806,30807,9909, 30810,30802,11749,2203, 11533,30804,30805,30808,30809,30811,317, 30812,30813,30818,30823,30833,30837,30839,30840,30842,30846,
- 96, 31294,31298,31318,97, 31681,31696,31719,99, 32154,32165,100, 32476,32479,101, 32873,32874,103, 33320,33328,106, 33602,33609,33612,33614,33661,356,
+ 96, 31294,31298,31318,97, 31681,31696,31719,99, 32154,32165,100, 32476,32479,101, 32873,32874,103, 33320,33328,106, 33602,33609,33612,33614,33661,356,
356, 30814,23753,30815,30816,30817,30819,30822,30820,30821,10985,30824,30827,30829,30825,30826,317, 30828,30830,30831,30832,30834,30835,30836,620, 30838,30841,
30843,30844,30845,30847,30848,30849,30850,30875,30910,30914,30918,30922,30932,30948,30991,30993,30999,31054,31071,2381, 31109,31110,31172,31197,31225,31257,31277,
31280,31281,31287,30851,30853,30854,30857,30858,30862,30864,30866,30873,317, 30852,5483, 350, 8594, 365, 371, 30855,30856,434, 1444, 30859,30860,317, 30861,
16670,345, 317, 1109, 565, 30863,317, 317, 5840, 30865,5727, 5890, 30867,30868,30872,317, 30869,1109, 965, 30871,30870,317, 12796,317, 12994,317, 30874,
- 317, 317, 7834, 5752, 3901, 30876,30884,30891,30896,30897,30900,30907,30877,9695, 30878,8125, 30879,30881,2004, 3529, 317, 30882,30883,317, 476, 30880,332,
+ 317, 317, 7834, 5752, 3901, 30876,30884,30891,30896,30897,30900,30907,30877,9695, 30878,8125, 30879,30881,2004, 3529, 317, 30882,30883,317, 476, 30880,332,
356, 5727, 317, 30885,30886,30887,30888,30889,30890,30892,1347, 30893,10878,317, 317, 30894,30895,22121,596, 317, 350, 3987, 589, 30898,30899,9695, 10471,
30901,30904,317, 9313, 30902,30903,356, 30905,356, 30906,317, 317, 380, 345, 382, 5488, 30908,5238, 7942, 30909,4788, 317, 596, 317, 8083, 30911,30912,
30913,8392, 2571, 317, 365, 317, 317, 317, 21074,317, 317, 317, 5784, 30915,748, 30916,30917,390, 350, 2156, 363, 551, 11347,5022, 30919,30920,30921,
- 1065, 3305, 7495, 30923,30925,363, 30926,30927,317, 317, 30930,317, 30924,596, 4962, 6601, 18839,551, 14535,3079, 12450,317, 317, 30928,2211, 30929,317,
+ 1065, 3305, 7495, 30923,30925,363, 30926,30927,317, 317, 30930,317, 30924,596, 4962, 6601, 18839,551, 14535,3079, 12450,317, 317, 30928,2211, 30929,317,
30931,317, 30933,608, 317, 30934,11564,30935,30937,30939,30941,317, 317, 30936,30938,466, 3006, 30940,466, 317, 11911,30942,4738, 7192, 30947,30943,30944,
6631, 11652,30945,30946,10538,5105, 30949,2021, 30951,30952,30953,30955,2381, 30958,30984,30986,1588, 317, 353, 30950,2381, 514, 363, 10223,343, 15608,10877,
- 5793, 351, 30954,343, 12277,1347, 30956,30957,466, 370, 317, 428, 30959,30962,30965,30966,17775,30967,30969,30970,30974,2571, 30976,2402, 30977,30979,1108,
- 5573, 30980,30981,30960,30961,479, 479, 5962, 30963,30964,317, 317, 5223, 317, 316, 16923,551, 30968,11918,351, 501, 345, 10878,30971,30972,30973,317,
- 4943, 345, 317, 363, 30975,381, 2369, 1230, 1999, 30978,316, 7942, 1531, 5558, 3124, 4952, 30982,30983,380, 2156, 30985,490, 363, 317, 30987,6228, 317,
+ 5793, 351, 30954,343, 12277,1347, 30956,30957,466, 370, 317, 428, 30959,30962,30965,30966,17775,30967,30969,30970,30974,2571, 30976,2402, 30977,30979,1108,
+ 5573, 30980,30981,30960,30961,479, 479, 5962, 30963,30964,317, 317, 5223, 317, 316, 16923,551, 30968,11918,351, 501, 345, 10878,30971,30972,30973,317,
+ 4943, 345, 317, 363, 30975,381, 2369, 1230, 1999, 30978,316, 7942, 1531, 5558, 3124, 4952, 30982,30983,380, 2156, 30985,490, 363, 317, 30987,6228, 317,
30988,2571, 317, 317, 30989,30990,1345, 2571, 30992,363, 489, 317, 30994,30995,30998,2146, 317, 7678, 5872, 317, 317, 30996,317, 30997,31000,357, 31003,
- 31011,31012,31013,490, 31016,31017,31024,10854,351, 31044,31048,4984, 31052,3987, 31053,31001,2134, 317, 393, 31002,13853,5428, 7301, 317, 365, 31004,317,
- 31006,11669,31005,320, 31007,317, 637, 31008,1160, 317, 317, 317, 633, 317, 31009,31010,370, 1160, 5483, 8993, 317, 11146,357, 317, 2715, 317, 317,
+ 31011,31012,31013,490, 31016,31017,31024,10854,351, 31044,31048,4984, 31052,3987, 31053,31001,2134, 317, 393, 31002,13853,5428, 7301, 317, 365, 31004,317,
+ 31006,11669,31005,320, 31007,317, 637, 31008,1160, 317, 317, 317, 633, 317, 31009,31010,370, 1160, 5483, 8993, 317, 11146,357, 317, 2715, 317, 317,
31014,31015,31018,31022,31023,12199,8296, 317, 31019,317, 5896, 31020,9012, 13686,31021,8274, 371, 31025,633, 31027,1194, 7618, 31030,31032,31033,31037,31043,
31026,31028,332, 317, 317, 31029,317, 31031,5223, 317, 317, 4211, 5205, 9012, 373, 371, 317, 1992, 317, 1358, 5624, 31034,31036,31035,31038,31039,31040,
- 31041,31042,31045,31046,4984, 31047,16384,370, 7953, 20969,370, 3529, 351, 31049,363, 317, 31051,345, 317, 31050,12738,6318, 31055,31058,9124, 31059,7834,
- 31070,317, 31056,317, 31057,7577, 370, 10454,5570, 426, 31060,31063,2156, 5093, 7797, 31061,31062,31064,343, 31069,31065,1347, 317, 31066,31067,370, 317,
- 370, 31068,637, 317, 317, 901, 31072,31075,31076,31078,31080,14062,31081,31082,8301, 31084,2301, 31085,31088,31089,31091,31106,31108,490, 31073,31074,317,
- 12684,317, 350, 31077,7477, 1160, 8020, 379, 2808, 380, 5570, 31079,8178, 356, 332, 5662, 9993, 317, 370, 317, 380, 363, 31083,31086,31087,4984, 1160,
- 1347, 9649, 31090,574, 350, 31092,4965, 31103,31104,8301, 317, 949, 31093,31094,380, 31097,31102,9630, 31095,31096,31098,1109, 31099,31101,317, 1347, 317,
+ 31041,31042,31045,31046,4984, 31047,16384,370, 7953, 20969,370, 3529, 351, 31049,363, 317, 31051,345, 317, 31050,12738,6318, 31055,31058,9124, 31059,7834,
+ 31070,317, 31056,317, 31057,7577, 370, 10454,5570, 426, 31060,31063,2156, 5093, 7797, 31061,31062,31064,343, 31069,31065,1347, 317, 31066,31067,370, 317,
+ 370, 31068,637, 317, 317, 901, 31072,31075,31076,31078,31080,14062,31081,31082,8301, 31084,2301, 31085,31088,31089,31091,31106,31108,490, 31073,31074,317,
+ 12684,317, 350, 31077,7477, 1160, 8020, 379, 2808, 380, 5570, 31079,8178, 356, 332, 5662, 9993, 317, 370, 317, 380, 363, 31083,31086,31087,4984, 1160,
+ 1347, 9649, 31090,574, 350, 31092,4965, 31103,31104,8301, 317, 949, 31093,31094,380, 31097,31102,9630, 31095,31096,31098,1109, 31099,31101,317, 1347, 317,
5441, 31100,7560, 965, 317, 317, 317, 4952, 31105,317, 5890, 31107,31111,31112,31117,31118,357, 31119,31120,31124,31127,31129,31134,31136,31137,31139,31147,
- 31149,31151,31155,31165,31168,31171,6917, 16123,1601, 362, 31113,11295,1230, 31114,31115,3726, 317, 31116,5022, 6318, 1230, 317, 6674, 343, 317, 317, 350,
+ 31149,31151,31155,31165,31168,31171,6917, 16123,1601, 362, 31113,11295,1230, 31114,31115,3726, 317, 31116,5022, 6318, 1230, 317, 6674, 343, 317, 317, 350,
9246, 12696,362, 1347, 521, 370, 317, 356, 554, 13376,10583,317, 1358, 2110, 28594,31121,31122,6607, 2381, 317, 317, 31123,317, 6651, 317, 31125,31126,
- 317, 31128,1347, 14981,31130,15367,362, 31131,16941,7928, 1444, 31132,5687, 31133,490, 317, 31135,345, 343, 345, 439, 31138,363, 605, 317, 4943, 317,
- 345, 317, 22908,8301, 10812,31140,31142,31023,31143,31144,31145,550, 439, 31141,490, 14606,16137,5809, 578, 31146,5332, 7063, 31148,554, 10956,427, 5809,
- 380, 317, 6578, 317, 31150,1358, 1065, 15566,31152,355, 351, 31153,31154,31156,31157,31159,31161,31163,317, 385, 317, 317, 5561, 380, 10590,1358, 2322,
- 31158,1347, 317, 317, 317, 351, 380, 31160,351, 4925, 317, 31162,317, 31164,390, 10520,31166,2022, 363, 31167,5991, 516, 31169,466, 362, 31170,317,
- 24398,466, 5328, 13648,31173,31180,31182,384, 343, 9298, 6063, 31186,31190,6937, 317, 511, 31174,31175,31176,23266,31177,5250, 317, 332, 5412, 596, 6207,
+ 317, 31128,1347, 14981,31130,15367,362, 31131,16941,7928, 1444, 31132,5687, 31133,490, 317, 31135,345, 343, 345, 439, 31138,363, 605, 317, 4943, 317,
+ 345, 317, 22908,8301, 10812,31140,31142,31023,31143,31144,31145,550, 439, 31141,490, 14606,16137,5809, 578, 31146,5332, 7063, 31148,554, 10956,427, 5809,
+ 380, 317, 6578, 317, 31150,1358, 1065, 15566,31152,355, 351, 31153,31154,31156,31157,31159,31161,31163,317, 385, 317, 317, 5561, 380, 10590,1358, 2322,
+ 31158,1347, 317, 317, 317, 351, 380, 31160,351, 4925, 317, 31162,317, 31164,390, 10520,31166,2022, 363, 31167,5991, 516, 31169,466, 362, 31170,317,
+ 24398,466, 5328, 13648,31173,31180,31182,384, 343, 9298, 6063, 31186,31190,6937, 317, 511, 31174,31175,31176,23266,31177,5250, 317, 332, 5412, 596, 6207,
31178,31179,317, 31181,605, 390, 31183,31184,381, 31185,9482, 356, 466, 317, 31187,2117, 31188,350, 28525,2586, 2586, 31189,317, 317, 31191,13914,27951,
31192,31193,31194,31195,362, 539, 2272, 16620,317, 317, 14462,317, 381, 2063, 363, 317, 6108, 382, 31196,31198,31201,31203,31204,31205,15334,27497,31206,
31210,9779, 5087, 31217,31220,31221,31222,2631, 357, 31223,6817, 6409, 7428, 317, 31199,6050, 397, 1347, 31200,370, 427, 5201, 370, 384, 2107, 31202,21303,
- 2116, 23306,4396, 384, 382, 317, 379, 8148, 317, 354, 31207,317, 5742, 558, 317, 7695, 31208,317, 10172,6089, 466, 31209,317, 439, 476, 317, 490,
+ 2116, 23306,4396, 384, 382, 317, 379, 8148, 317, 354, 31207,317, 5742, 558, 317, 7695, 31208,317, 10172,6089, 466, 31209,317, 439, 476, 317, 490,
31211,317, 31212,574, 9832, 31213,6355, 31214,317, 31215,31216,31218,31219,7314, 553, 382, 3621, 390, 31224,382, 1588, 1160, 2184, 317, 381, 31226,31228,
15334,31231,31232,31234,31243,2134, 31246,31247,31248,31255,31256,317, 31227,404, 343, 7911, 345, 31229,350, 317, 31230,31233,31235,345, 31236,3751, 31237,
- 317, 31241,31242,31238,13177,14832,317, 31239,317, 317, 31240,7590, 14610,356, 466, 2571, 317, 317, 15618,343, 490, 31244,31245,317, 10820,29142,2116,
+ 317, 31241,31242,31238,13177,14832,317, 31239,317, 317, 31240,7590, 14610,356, 466, 2571, 317, 317, 15618,343, 490, 31244,31245,317, 10820,29142,2116,
31249,343, 31250,539, 31253,31251,31252,31254,362, 317, 345, 351, 5343, 31258,31260,31263,31265,31274,31276,31259,6382, 748, 31261,31262,4984, 2178, 31264,
- 2381, 8722, 31266,31270,9482, 1325, 31267,317, 382, 31268,31269,5343, 317, 31271,9482, 356, 31272,317, 382, 31273,1347, 5343, 31275,317, 2732, 2116, 428,
+ 2381, 8722, 31266,31270,9482, 1325, 31267,317, 382, 31268,31269,5343, 317, 31271,9482, 356, 31272,317, 382, 31273,1347, 5343, 31275,317, 2732, 2116, 428,
31278,31279,2184, 317, 404, 350, 365, 6036, 370, 5464, 466, 363, 31282,31283,31284,10056,2146, 343, 343, 404, 317, 317, 31285,31286,380, 31288,31290,
317, 31291,348, 31289,317, 16092,490, 2178, 31292,2272, 31293,317, 31295,490, 31296,31297,31299,31300,31305,31309,31311,31317,31301,31302,478, 31303,31304,
31306,490, 31307,31308,31310,31312,31313,31314,31315,31316,317, 31319,31323,339, 31324,31325,31326,317, 4253, 31330,4090, 31320,31321,31322,31327,317, 31328,
31329,17774,31331,17274,17274,31333,31350,31360,31368,31390,31399,31401,31406,31410,16220,31427,31429,31477,31486,31528,31533,98, 31632,31646,31660,31671,31674,
31676,31679,31332,317, 31334,31336,9609, 2146, 31337,31340,31341,2322, 2134, 31349,31335,363, 5055, 15745,10283,379, 28650,466, 31338,343, 31339,363, 16931,
- 317, 317, 2022, 605, 380, 6270, 16802,31342,317, 31346,31343,31344,317, 356, 15852,3529, 31345,11803,317, 31347,31348,466, 317, 2571, 317, 5689, 317,
- 619, 31351,596, 317, 31353,345, 317, 31352,1347, 373, 31354,31355,31356,31357,31358,31359,31361,345, 31362,31364,31365,31366,351, 350, 31363,12731,382,
+ 317, 317, 2022, 605, 380, 6270, 16802,31342,317, 31346,31343,31344,317, 356, 15852,3529, 31345,11803,317, 31347,31348,466, 317, 2571, 317, 5689, 317,
+ 619, 31351,596, 317, 31353,345, 317, 31352,1347, 373, 31354,31355,31356,31357,31358,31359,31361,345, 31362,31364,31365,31366,351, 350, 31363,12731,382,
350, 31367,31369,31370,31373,31384,350, 31385,2391, 317, 31389,317, 501, 527, 31371,31372,317, 1358, 31374,490, 317, 8099, 31375,351, 31380,31381,12514,
343, 31383,31376,31377,31379,10196,1347, 31378,370, 317, 5250, 1526, 31382,317, 8275, 31386,8281, 317, 31387,371, 605, 5611, 7116, 31388,10317,7521, 19913,
- 31391,31392,31394,596, 31395,9609, 31396,31397,2222, 1347, 31398,5960, 2510, 9648, 343, 31393,7688, 363, 448, 370, 317, 15913,6089, 9648, 343, 317, 317,
- 363, 6036, 15772,317, 384, 381, 317, 351, 31400,6761, 31402,3078, 31403,317, 31404,8925, 31405,351, 31407,11040,31408,12704,362, 15461,31409,343, 362,
+ 31391,31392,31394,596, 31395,9609, 31396,31397,2222, 1347, 31398,5960, 2510, 9648, 343, 31393,7688, 363, 448, 370, 317, 15913,6089, 9648, 343, 317, 317,
+ 363, 6036, 15772,317, 384, 381, 317, 351, 31400,6761, 31402,3078, 31403,317, 31404,8925, 31405,351, 31407,11040,31408,12704,362, 15461,31409,343, 362,
317, 5626, 2219, 15459,31411,31414,31416,2066, 6394, 31420,9609, 31421,7490, 31424,31426,31412,31413,31415,362, 3236, 31417,31419,5273, 317, 31418,5626, 11613,
4965, 31422,381, 12696,4982, 362, 9012, 31423,4949, 17889,31425,351, 23018,350, 317, 7579, 317, 31428,31430,31431,31434,31435,31446,31447,31448,31458,31459,
31467,31468,345, 31471,31473,31476,350, 14806,31432,31433,2222, 7657, 317, 5896, 31436,31437,31439,31440,350, 31444,31445,7949, 31438,10580,351, 13300,31441,
- 2236, 4984, 31442,31443,565, 2310, 5241, 7306, 20552,31449,345, 490, 31453,317, 8529, 31454,317, 31455,31457,5328, 8357, 31450,317, 11680,31451,363, 2272,
- 31452,6228, 317, 2631, 31456,13760,12731,3079, 350, 317, 31460,31461,13670,31463,362, 350, 31465,317, 1347, 345, 317, 2537, 317, 362, 31462,1347, 345,
- 9059, 317, 31464,317, 31466,345, 9139, 363, 381, 558, 31469,31470,317, 317, 317, 345, 4591, 31472,350, 339, 343, 363, 1526, 31474,554, 5662, 350,
+ 2236, 4984, 31442,31443,565, 2310, 5241, 7306, 20552,31449,345, 490, 31453,317, 8529, 31454,317, 31455,31457,5328, 8357, 31450,317, 11680,31451,363, 2272,
+ 31452,6228, 317, 2631, 31456,13760,12731,3079, 350, 317, 31460,31461,13670,31463,362, 350, 31465,317, 1347, 345, 317, 2537, 317, 362, 31462,1347, 345,
+ 9059, 317, 31464,317, 31466,345, 9139, 363, 381, 558, 31469,31470,317, 317, 317, 345, 4591, 31472,350, 339, 343, 363, 1526, 31474,554, 5662, 350,
363, 317, 345, 317, 317, 31475,317, 317, 31478,31479,31481,22724,31485,2627, 351, 31480,317, 31482,317, 31483,31484,5250, 5488, 1998, 31487,31492,31496,
31503,31506,317, 31507,2171, 31508,31515,31517,31519,31525,31527,31488,31490,31491,317, 317, 2271, 31489,317, 380, 13300,6394, 317, 382, 31493,7871, 31495,
- 2391, 317, 317, 31494,6996, 4980, 2551, 6036, 390, 345, 31497,31498,31501,31499,31500,31502,351, 350, 31504,5624, 31505,5055, 343, 345, 2171, 404, 317,
+ 2391, 317, 317, 31494,6996, 4980, 2551, 6036, 390, 345, 31497,31498,31501,31499,31500,31502,351, 350, 31504,5624, 31505,5055, 343, 345, 2171, 404, 317,
439, 370, 363, 31509,31511,31512,7949, 31158,490, 4984, 31510,10538,317, 317, 9420, 2219, 10538,31513,31514,396, 11339,31516,31518,380, 343, 31520,31521,
31522,31523,31524,31526,317, 363, 2571, 317, 31529,7384, 31530,31531,31532,31534,31537,4925, 31539,31546,31553,31559,31561,31562,31563,31567,31573,31584,31587,
- 31623,31624,31630,31631,332, 317, 31535,9525, 31536,351, 31538,9644, 31540,31545,332, 317, 317, 31541,31542,31543,31544,2387, 317, 3751, 558, 1230, 2110,
+ 31623,31624,31630,31631,332, 317, 31535,9525, 31536,351, 31538,9644, 31540,31545,332, 317, 317, 31541,31542,31543,31544,2387, 317, 3751, 558, 1230, 2110,
380, 31547,317, 317, 31548,365, 1108, 317, 317, 31549,317, 31550,31551,31552,31554,31555,9702, 343, 2551, 31558,317, 490, 404, 317, 31556,404, 31557,
- 2551, 29848,317, 31560,6402, 317, 380, 14415,439, 2003, 31564,317, 31565,31566,31568,31570,31572,12142,31569,317, 31571,317, 1601, 1109, 8271, 31574,5896,
- 31578,31579,31580,31581,605, 31582,15334,6089, 317, 12920,356, 31575,317, 381, 31576,317, 31577,2035, 1160, 317, 373, 1108, 9182, 9525, 317, 9244, 350,
+ 2551, 29848,317, 31560,6402, 317, 380, 14415,439, 2003, 31564,317, 31565,31566,31568,31570,31572,12142,31569,317, 31571,317, 1601, 1109, 8271, 31574,5896,
+ 31578,31579,31580,31581,605, 31582,15334,6089, 317, 12920,356, 31575,317, 381, 31576,317, 31577,2035, 1160, 317, 373, 1108, 9182, 9525, 317, 9244, 350,
31583,3006, 426, 31585,1358, 1108, 317, 1358, 31586,7834, 370, 31588,31597,31601,31607,31618,31622,31589,18537,31590,21522,31591,317, 31593,31596,317, 31592,
- 11295,31594,31595,8357, 317, 317, 317, 317, 317, 317, 317, 365, 317, 317, 317, 5687, 317, 317, 558, 31598,317, 2110, 5105, 9095, 31599,31600,2110,
+ 11295,31594,31595,8357, 317, 317, 317, 317, 317, 317, 317, 365, 317, 317, 317, 5687, 317, 317, 558, 31598,317, 2110, 5105, 9095, 31599,31600,2110,
317, 317, 5120, 370, 7785, 31602,5570, 380, 362, 31604,31606,6578, 6917, 317, 31603,317, 317, 31605,317, 31608,31612,317, 31614,6278, 345, 31616,31609,
- 31610,31611,31613,31615,31617,8841, 9422, 31619,317, 5439, 31620,31621,490, 4591, 12151,466, 362, 363, 350, 350, 380, 317, 31625,317, 317, 31626,489,
+ 31610,31611,31613,31615,31617,8841, 9422, 31619,317, 5439, 31620,31621,490, 4591, 12151,466, 362, 363, 350, 350, 380, 317, 31625,317, 317, 31626,489,
317, 31627,31628,370, 31629,5225, 9124, 466, 2551, 2142, 14433,422, 965, 31633,317, 332, 350, 2609, 10629,31635,31637,345, 31634,317, 971, 2405, 31636,
350, 317, 3243, 317, 31638,31639,31641,31645,7384, 31640,9325, 317, 5200, 345, 31642,31643,31644,5105, 31647,5447, 31649,31652,350, 2402, 8099, 31655,31659,
- 2222, 31648,5464, 466, 332, 31650,31651,2206, 2067, 31653,390, 31654,637, 633, 345, 5343, 31656,31658,317, 31657,317, 16187,370, 362, 2206, 317, 471,
- 31661,31664,2568, 31669,31670,1108, 31662,356, 466, 317, 5342, 31663,31665,31666,9012, 31667,2108, 4949, 479, 31668,31672,382, 578, 433, 31673,31675,2571,
+ 2222, 31648,5464, 466, 332, 31650,31651,2206, 2067, 31653,390, 31654,637, 633, 345, 5343, 31656,31658,317, 31657,317, 16187,370, 362, 2206, 317, 471,
+ 31661,31664,2568, 31669,31670,1108, 31662,356, 466, 317, 5342, 31663,31665,31666,9012, 31667,2108, 4949, 479, 31668,31672,382, 578, 433, 31673,31675,2571,
380, 317, 381, 31677,317, 350, 450, 11825,31678,6829, 31680,619, 31682,31687,31691,490, 31693,317, 31683,31684,31685,31686,31688,317, 31689,317, 31690,
31692,31694,2233, 31695,31697,31700,31704,31715,31716,31698,31699,31701,31703,2464, 31702,31705,31707,31710,31706,31708,31709,31711,31712,31713,31714,31717,31718,
31720,31721,31723,31725,31726,31731,31733,31736,490, 608, 606, 31722,31724,31727,31728,31729,31730,1065, 396, 31732,31734,31735,31737,31738,31739,31740,31748,
- 31765,31783,31794,31818,31827,31856,31857,2156, 31859,31903,31906,31982,32000,32003,32005,32063,32100,32141,32147,384, 32149,32152,31741,31743,31744,31746,357,
+ 31765,31783,31794,31818,31827,31856,31857,2156, 31859,31903,31906,31982,32000,32003,32005,32063,32100,32141,32147,384, 32149,32152,31741,31743,31744,31746,357,
332, 31742,317, 332, 23624,6294, 31745,490, 31747,317, 11249,31749,31752,31754,317, 2381, 31750,31751,317, 31753,31750,31755,31758,31756,31757,31759,31760,
- 31763,2163, 345, 31761,31762,31764,19850,2078, 31766,31767,31769,31774,31776,345, 6547, 31768,345, 31770,8178, 31771,31772,317, 31773,317, 317, 5223, 317,
- 381, 31775,31777,31778,6108, 343, 31779,317, 317, 317, 31780,317, 31781,31782,1526, 1526, 31784,31785,31787,31790,350, 31791,15017,31792,31786,23076,317,
- 31788,350, 1100, 317, 31789,317, 31793,31795,31798,31799,31803,2134, 31804,31809,31810,31814,31816,31796,31797,349, 1358, 350, 31800,31802,31801,11619,317,
+ 31763,2163, 345, 31761,31762,31764,19850,2078, 31766,31767,31769,31774,31776,345, 6547, 31768,345, 31770,8178, 31771,31772,317, 31773,317, 317, 5223, 317,
+ 381, 31775,31777,31778,6108, 343, 31779,317, 317, 317, 31780,317, 31781,31782,1526, 1526, 31784,31785,31787,31790,350, 31791,15017,31792,31786,23076,317,
+ 31788,350, 1100, 317, 31789,317, 31793,31795,31798,31799,31803,2134, 31804,31809,31810,31814,31816,31796,31797,349, 1358, 350, 31800,31802,31801,11619,317,
31805,317, 317, 31806,7401, 466, 362, 31807,10276,12423,363, 31808,3007, 2272, 31673,317, 596, 317, 31811,384, 343, 31813,317, 17368,5223, 317, 31812,
363, 5028, 31815,373, 11357,371, 31817,427, 2134, 31819,4965, 22157,31822,317, 31823,31820,31821,1939, 681, 31824,1347, 28691,31826,31825,31828,317, 31830,
- 31832,31835,2134, 31841,3854, 20610,317, 15334,31843,554, 31829,317, 2317, 317, 317, 31831,31833,31834,317, 5487, 1033, 31836,317, 31837,15646,31839,363,
- 317, 31838,31840,351, 6036, 31842,31844,31850,31845,31848,31846,1347, 31847,332, 393, 1347, 490, 31849,19287,31851,31853,31854,490, 3284, 317, 31852,317,
- 317, 16137,6402, 317, 31855,31858,10373,31860,31867,31868,332, 31871,31872,31886,31887,31892,31896,12796,31898,31899,31902,501, 317, 31861,317, 31864,317,
- 31866,31862,31863,13676,31865,317, 19570,14708,479, 317, 1347, 31869,317, 31870,317, 6166, 317, 31873,31874,31875,15334,31876,10878,31877,31878,345, 5822,
+ 31832,31835,2134, 31841,3854, 20610,317, 15334,31843,554, 31829,317, 2317, 317, 317, 31831,31833,31834,317, 5487, 1033, 31836,317, 31837,15646,31839,363,
+ 317, 31838,31840,351, 6036, 31842,31844,31850,31845,31848,31846,1347, 31847,332, 393, 1347, 490, 31849,19287,31851,31853,31854,490, 3284, 317, 31852,317,
+ 317, 16137,6402, 317, 31855,31858,10373,31860,31867,31868,332, 31871,31872,31886,31887,31892,31896,12796,31898,31899,31902,501, 317, 31861,317, 31864,317,
+ 31866,31862,31863,13676,31865,317, 19570,14708,479, 317, 1347, 31869,317, 31870,317, 6166, 317, 31873,31874,31875,15334,31876,10878,31877,31878,345, 5822,
9609, 2291, 363, 31879,31880,31881,31883,3284, 371, 6159, 31882,15464,31884,31885,596, 365, 12943,31888,5159, 31889,9420, 4984, 3869, 317, 12027,317, 13894,
317, 1347, 317, 345, 31890,363, 317, 31891,351, 554, 427, 317, 5225, 5991, 14062,31893,31894,31895,28337,15960,28335,317, 343, 3710, 9699, 10506,31897,
2612, 317, 5240, 4789, 4738, 363, 31900,31901,363, 5488, 590, 5273, 31904,31905,5392, 5266, 31907,31918,31920,31922,31929,26065,31933,31946,31951,31962,31965,
31969,490, 31973,31978,31979,543, 31981,373, 31908,2171, 31914,317, 7399, 317, 317, 317, 1347, 31909,31912,370, 317, 31910,31911,31913,370, 10674,31915,
11504,31916,31917,2510, 382, 31919,317, 380, 31921,317, 317, 427, 9450, 2022, 362, 427, 317, 31923,2510, 8948, 9648, 31928,343, 385, 317, 345, 31924,
- 31925,31926,31927,370, 9557, 466, 317, 5896, 317, 26065,362, 31930,362, 2571, 385, 31931,31932,2715, 317, 31934,31935,31945,31936,317, 31937,356, 385,
+ 31925,31926,31927,370, 9557, 466, 317, 5896, 317, 26065,362, 31930,362, 2571, 385, 31931,31932,2715, 317, 31934,31935,31945,31936,317, 31937,356, 385,
466, 362, 20937,31938,31943,7921, 466, 550, 31939,31941,31940,31942,363, 31944,345, 2067, 16972,433, 362, 382, 31947,14236,2537, 26663,31948,31949,31950,
- 31952,31954,31960,317, 31953,31955,31956,362, 28434,31957,31958,31959,31961,317, 317, 9012, 317, 31963,370, 31964,7214, 5022, 31966,31968,15983,4974, 317,
+ 31952,31954,31960,317, 31953,31955,31956,362, 28434,31957,31958,31959,31961,317, 317, 9012, 317, 31963,370, 31964,7214, 5022, 31966,31968,15983,4974, 317,
317, 317, 26065,5419, 5105, 2171, 317, 31967,317, 10351,317, 362, 490, 317, 390, 31970,490, 363, 31971,31972,7055, 31974,545, 31977,31975,31976,31980,
- 5428, 31983,31984,317, 31993,31985,31987,31988,31991,8766, 31986,18125,31989,2715, 31990,7384, 490, 6458, 7954, 31992,31994,31995,31996,31997,31998,31999,345,
- 32001,317, 32002,317, 32004,317, 6415, 32006,10877,32039,32040,32041,32043,5439, 32048,390, 32062,32007,633, 672, 928, 8381, 32008,32014,32017,32018,2063,
+ 5428, 31983,31984,317, 31993,31985,31987,31988,31991,8766, 31986,18125,31989,2715, 31990,7384, 490, 6458, 7954, 31992,31994,31995,31996,31997,31998,31999,345,
+ 32001,317, 32002,317, 32004,317, 6415, 32006,10877,32039,32040,32041,32043,5439, 32048,390, 32062,32007,633, 672, 928, 8381, 32008,32014,32017,32018,2063,
32023,514, 2301, 32026,5017, 32027,32029,32033,32035,32009,14285,32010,32012,4952, 382, 4564, 343, 4943, 32011,381, 32013,1078, 317, 381, 32015,32016,16790,
- 5765, 382, 32019,32022,316, 32020,32021,596, 1160, 32024,32025,343, 8522, 7314, 363, 32028,8047, 13020,5709, 382, 2261, 32030,32031,1020, 2272, 32032,1358,
- 1030, 32034,32036,1588, 32038,32037,6917, 356, 5962, 32042,351, 363, 370, 2571, 317, 345, 14062,32044,317, 32045,32046,32047,12864,32049,32050,317, 5087,
+ 5765, 382, 32019,32022,316, 32020,32021,596, 1160, 32024,32025,343, 8522, 7314, 363, 32028,8047, 13020,5709, 382, 2261, 32030,32031,1020, 2272, 32032,1358,
+ 1030, 32034,32036,1588, 32038,32037,6917, 356, 5962, 32042,351, 363, 370, 2571, 317, 345, 14062,32044,317, 32045,32046,32047,12864,32049,32050,317, 5087,
8948, 20393,4952, 370, 32060,4980, 2948, 32051,32052,32053,32054,32055,32056,32057,32058,32059,32061,32064,32065,32071,350, 32072,32089,10185,350, 32091,32097,
- 32066,10234,32068,345, 32067,466, 32069,32070,31236,2222, 362, 2108, 1020, 1347, 317, 2715, 22090,633, 32073,12616,32077,32080,20865,32081,32082,32084,7921,
- 32085,539, 363, 32087,32088,16277,1160, 32074,32075,32076,14341,371, 381, 4943, 343, 380, 317, 356, 317, 5105, 32078,317, 343, 317, 596, 32079,317,
- 317, 514, 4738, 2063, 370, 355, 9696, 1347, 32083,363, 32086,32090,32092,32093,2178, 32094,32095,32096,317, 20388,317, 5991, 32098,466, 350, 317, 2381,
+ 32066,10234,32068,345, 32067,466, 32069,32070,31236,2222, 362, 2108, 1020, 1347, 317, 2715, 22090,633, 32073,12616,32077,32080,20865,32081,32082,32084,7921,
+ 32085,539, 363, 32087,32088,16277,1160, 32074,32075,32076,14341,371, 381, 4943, 343, 380, 317, 356, 317, 5105, 32078,317, 343, 317, 596, 32079,317,
+ 317, 514, 4738, 2063, 370, 355, 9696, 1347, 32083,363, 32086,32090,32092,32093,2178, 32094,32095,32096,317, 20388,317, 5991, 32098,466, 350, 317, 2381,
530, 32099,32101,32102,317, 32106,32108,1020, 32109,317, 317, 32110,32111,32115,32103,7911, 32104,32105,551, 10820,32107,317, 24130,351, 32106,4984, 32112,
32113,343, 363, 317, 317, 317, 317, 2222, 381, 32114,29666,7622, 32116,32117,32123,32125,343, 16187,32126,350, 32105,32130,32133,32136,317, 317, 27865,
- 32118,32121,32119,32120,355, 2134, 32122,32124,4943, 448, 17725,32127,350, 32129,32128,32131,370, 32132,32134,32135,3640, 3079, 32137,32139,32138,350, 516,
- 350, 32140,32142,2110, 32143,32144,32145,32146,317, 32148,740, 389, 12151,4982, 13338,3605, 317, 28337,32150,12925,32151,22534,373, 365, 30478,332, 9649,
+ 32118,32121,32119,32120,355, 2134, 32122,32124,4943, 448, 17725,32127,350, 32129,32128,32131,370, 32132,32134,32135,3640, 3079, 32137,32139,32138,350, 516,
+ 350, 32140,32142,2110, 32143,32144,32145,32146,317, 32148,740, 389, 12151,4982, 13338,3605, 317, 28337,32150,12925,32151,22534,373, 365, 30478,332, 9649,
7949, 362, 351, 1481, 32153,11324,32155,32156,32157,32160,32163,356, 14263,6563, 32158,32159,32161,32162,32164,32166,32170,32173,32178,32185,32188,32192,32167,
32168,32169,608, 32171,32172,607, 396, 781, 949, 32174,32175,32176,32177,6581, 32179,19278,32180,32181,32182,32183,32184,32186,32187,32189,32190,32191,31735,
32193,32195,32204,32194,396, 32196,32197,32203,32198,32199,32200,390, 317, 317, 32201,32202,317, 6590, 612, 607, 396, 32205,32272,32274,32276,32330,32333,
@@ -8244,224 +8239,224 @@ static const unsigned int ChildLocs[185261] =
19187,434, 397, 501, 317, 2184, 317, 317, 8136, 466, 343, 317, 317, 439, 32220,32222,32227,32229,32231,32232,10471,32221,6673, 2368, 317, 8301, 32223,
363, 317, 317, 32224,32225,32226,32228,317, 9595, 5611, 317, 32230,5457, 382, 5226, 32233,32235,11211,32236,9832, 2348, 32237,32239,9931, 22466,370, 32238,
466, 317, 2348, 32240,2348, 5960, 32242,317, 32244,1347, 6228, 317, 651, 317, 32245,21318,12925,32247,317, 466, 22559,14501,539, 32249,317, 32246,14303,
- 382, 32248,590, 32251,12696,32252,32253,13338,32255,2571, 317, 18211,317, 32256,32259,32260,356, 2631, 11089,389, 389, 3869, 32254,11229,370, 25651,317,
- 32257,1060, 317, 5273, 32258,5367, 317, 1588, 32261,3125, 2997, 1998, 511, 419, 317, 32263,32264,317, 32266,32268,32269,345, 380, 32267,4984, 317, 317,
+ 382, 32248,590, 32251,12696,32252,32253,13338,32255,2571, 317, 18211,317, 32256,32259,32260,356, 2631, 11089,389, 389, 3869, 32254,11229,370, 25651,317,
+ 32257,1060, 317, 5273, 32258,5367, 317, 1588, 32261,3125, 2997, 1998, 511, 419, 317, 32263,32264,317, 32266,32268,32269,345, 380, 32267,4984, 317, 317,
345, 17868,32270,6013, 356, 379, 10877,317, 356, 6668, 317, 32273,32275,317, 32277,5866, 32280,32284,32288,32291,32292,32293,32300,32304,32307,345, 32312,
32314,32317,350, 32324,32328,32278,373, 317, 317, 32279,32281,32282,419, 1347, 4965, 10081,32283,596, 317, 317, 10546,32285,32287,32286,1325, 466, 27846,
- 343, 32289,466, 1347, 362, 12199,317, 317, 32290,466, 317, 16058,380, 380, 6917, 317, 32294,32299,32295,32298,350, 32296,16129,351, 32297,5662, 350,
- 345, 345, 362, 32301,32302,32303,32305,32306,3079, 6717, 8189, 351, 10877,5055, 32308,2188, 351, 2102, 32309,32310,7910, 32311,351, 2102, 370, 343, 8301,
+ 343, 32289,466, 1347, 362, 12199,317, 317, 32290,466, 317, 16058,380, 380, 6917, 317, 32294,32299,32295,32298,350, 32296,16129,351, 32297,5662, 350,
+ 345, 345, 362, 32301,32302,32303,32305,32306,3079, 6717, 8189, 351, 10877,5055, 32308,2188, 351, 2102, 32309,32310,7910, 32311,351, 2102, 370, 343, 8301,
27303,32313,350, 2568, 3869, 5991, 362, 350, 317, 317, 32315,345, 350, 317, 32316,32318,32319,2369, 32321,317, 345, 317, 32320,4591, 32322,32323,32325,
- 32326,32327,5991, 32329,350, 351, 361, 22508,21417,382, 363, 7386, 32331,32332,410, 32334,32337,32340,32343,32344,32351,32355,32358,32359,371, 32335,317,
- 32336,12704,350, 317, 317, 32338,2298, 15618,317, 32339,351, 32341,32342,20492,370, 32345,2188, 11613,317, 2222, 6684, 32347,32346,317, 7698, 356, 466,
+ 32326,32327,5991, 32329,350, 351, 361, 22508,21417,382, 363, 7386, 32331,32332,410, 32334,32337,32340,32343,32344,32351,32355,32358,32359,371, 32335,317,
+ 32336,12704,350, 317, 317, 32338,2298, 15618,317, 32339,351, 32341,32342,20492,370, 32345,2188, 11613,317, 2222, 6684, 32347,32346,317, 7698, 356, 466,
427, 317, 2584, 12993,8301, 32348,2609, 32349,32350,351, 32352,10664,3529, 32353,12417,589, 32354,3999, 317, 317, 32356,32357,356, 466, 317, 317, 20920,
- 2108, 32360,351, 466, 363, 32362,32364,32367,32368,32371,351, 317, 317, 32373,32384,32385,32402,32404,32406,32412,32415,317, 32363,5991, 3999, 6186, 317,
+ 2108, 32360,351, 466, 363, 32362,32364,32367,32368,32371,351, 317, 317, 32373,32384,32385,32402,32404,32406,32412,32415,317, 32363,5991, 3999, 6186, 317,
332, 317, 32365,32366,5159, 466, 317, 501, 363, 362, 32369,317, 32370,343, 32372,32374,317, 32381,370, 356, 3787, 466, 32375,32377,317, 32379,32376,
- 22561,317, 32378,32380,2509, 317, 32382,1325, 466, 32383,428, 11263,7401, 14716,1345, 32386,8639, 32387,32393,13638,1347, 2058, 2036, 317, 317, 9095, 317,
+ 22561,317, 32378,32380,2509, 317, 32382,1325, 466, 32383,428, 11263,7401, 14716,1345, 32386,8639, 32387,32393,13638,1347, 2058, 2036, 317, 317, 9095, 317,
317, 317, 32388,32392,27456,317, 317, 32389,332, 317, 317, 32390,317, 32391,490, 5104, 32394,32398,32399,32400,317, 32401,32395,317, 317, 32396,32397,
5942, 5419, 317, 2368, 7242, 317, 32403,10114,317, 32405,5926, 554, 317, 32407,32409,32408,32410,32411,370, 370, 370, 32413,466, 317, 317, 317, 32414,
6996, 317, 356, 466, 5942, 317, 12719,2334, 32418,1325, 32420,32423,32425,32427,32428,22724,32431,32435,32437,32447,32448,32449,498, 32450,345, 317, 32419,
371, 32421,6645, 21864,32422,32424,32426,427, 16623,514, 19187,362, 32429,381, 32430,317, 32432,32434,350, 32433,317, 32436,32438,32446,32439,32443,32445,
32440,32441,32442,363, 5190, 32444,343, 343, 342, 7858, 12761,11504,421, 14644,317, 32452,2895, 32453,32454,32455,32456,32457,32459,32460,32461,32464,32467,
- 32469,5575, 32470,362, 32472,32473,2063, 342, 32474,32475,883, 373, 1230, 17565,317, 32462,32463,32465,317, 32466,317, 649, 633, 32468,32471,3742, 317,
+ 32469,5575, 32470,362, 32472,32473,2063, 342, 32474,32475,883, 373, 1230, 17565,317, 32462,32463,32465,317, 32466,317, 649, 633, 32468,32471,3742, 317,
317, 370, 2301, 3652, 32477,373, 363, 365, 32478,32480,490, 551, 32481,32482,32483,32484,32486,32487,32492,32496,32506,6780, 32516,32520,32521,32548,32552,
- 32585,32616,102, 32793,32809,32821,2081, 32852,32854,32871,32872,9720, 32485,356, 317, 5105, 5223, 317, 32488,32489,4965, 466, 350, 317, 32490,317, 5464,
+ 32585,32616,102, 32793,32809,32821,2081, 32852,32854,32871,32872,9720, 32485,356, 317, 5105, 5223, 317, 32488,32489,4965, 466, 350, 317, 32490,317, 5464,
466, 32491,7095, 32493,32494,343, 2571, 351, 351, 11398,317, 32495,32497,32498,32500,32501,7940, 4591, 32499,32502,11147,14084,32503,32504,32505,32507,32508,
32511,32513,32514,317, 317, 317, 345, 32509,32510,362, 6601, 404, 356, 32512,317, 317, 381, 479, 32515,5611, 362, 317, 5623, 317, 6394, 32517,32518,
- 32519,317, 5464, 466, 317, 11249,317, 32522,32523,370, 32524,490, 32525,32527,32535,14865,32545,32546,32547,317, 410, 31806,466, 317, 351, 2510, 1588,
- 32526,317, 1347, 5570, 332, 8488, 343, 317, 5536, 32528,3079, 32529,362, 350, 32533,20682,32534,1347, 11116,16138,511, 533, 32530,32531,317, 32532,4738,
- 10877,317, 32536,32539,32540,16825,32542,317, 32537,317, 32538,317, 317, 10820,317, 551, 32541,1347, 317, 317, 317, 2156, 10408,32543,32544,9648, 343,
+ 32519,317, 5464, 466, 317, 11249,317, 32522,32523,370, 32524,490, 32525,32527,32535,14865,32545,32546,32547,317, 410, 31806,466, 317, 351, 2510, 1588,
+ 32526,317, 1347, 5570, 332, 8488, 343, 317, 5536, 32528,3079, 32529,362, 350, 32533,20682,32534,1347, 11116,16138,511, 533, 32530,32531,317, 32532,4738,
+ 10877,317, 32536,32539,32540,16825,32542,317, 32537,317, 32538,317, 317, 10820,317, 551, 32541,1347, 317, 317, 317, 2156, 10408,32543,32544,9648, 343,
317, 1060, 317, 380, 1347, 406, 428, 370, 32549,18333,5428, 32550,32551,32553,32554,32558,32559,8440, 32566,32569,32570,32572,490, 5037, 15571,32555,31675,
32556,2571, 5926, 32557,317, 343, 317, 343, 5226, 317, 10196,363, 1479, 317, 10832,317, 32560,32563,32561,317, 32562,32564,32565,32567,317, 32568,32571,
19287,490, 32573,32581,8023, 32584,11921,317, 345, 32574,32578,32575,32576,32577,317, 317, 32579,32580,2381, 489, 317, 2381, 365, 5040, 10619,22207,32582,
- 2110, 317, 363, 370, 32583,18215,590, 373, 574, 949, 565, 16876,32586,370, 32590,1347, 32591,1358, 32597,32598,343, 32587,317, 30978,32588,32589,351,
+ 2110, 317, 363, 370, 32583,18215,590, 373, 574, 949, 565, 16876,32586,370, 32590,1347, 32591,1358, 32597,32598,343, 32587,317, 30978,32588,32589,351,
530, 356, 356, 32592,32594,16797,317, 32593,1992, 317, 32595,32596,990, 32599,14337,8125, 32605,20868,32606,32607,362, 11773,32611,32613,32615,317, 32600,
- 370, 32603,32601,317, 32602,18206,317, 317, 317, 317, 2510, 466, 317, 32604,4563, 578, 32608,32610,32609,382, 8522, 343, 32612,14684,7737, 2156, 5184,
+ 370, 32603,32601,317, 32602,18206,317, 317, 317, 317, 2510, 466, 317, 32604,4563, 578, 32608,32610,32609,382, 8522, 343, 32612,14684,7737, 2156, 5184,
32614,317, 5737, 536, 565, 406, 32617,32618,32623,32630,32634,32642,32684,32689,32704,32706,32707,32710,32740,32746,32747,7408, 32748,32752,32762,32785,32787,
- 32790,32791,8920, 23076,350, 5105, 32619,23232,1347, 363, 32620,32621,317, 32622,32624,32625,32627,317, 16503,32626,1992, 5276, 32628,317, 4925, 32629,317,
+ 32790,32791,8920, 23076,350, 5105, 32619,23232,1347, 363, 32620,32621,317, 32622,32624,32625,32627,317, 16503,32626,1992, 5276, 32628,317, 4925, 32629,317,
4984, 466, 2261, 32631,32632,32633,317, 427, 317, 317, 10891,9301, 345, 317, 6020, 351, 17160,637, 32635,320, 2731, 4843, 621, 32636,5637, 32637,32640,
- 554, 466, 362, 363, 4980, 32033,514, 317, 651, 621, 3292, 317, 2731, 2731, 2731, 32638,32639,32641,32643,32644,32645,317, 32652,32654,32656,32657,381,
- 32659,32663,32664,32665,11038,32666,32667,32677,32678,32682,317, 384, 1032, 510, 5653, 32646,32649,6450, 32647,32648,10422,466, 343, 317, 32650,32651,1325,
- 12277,32653,8254, 32655,5281, 439, 7499, 32658,32660,32661,32662,439, 10878,18531,14829,363, 412, 2060, 5748, 317, 12106,605, 32668,32670,530, 1020, 362,
+ 554, 466, 362, 363, 4980, 32033,514, 317, 651, 621, 3292, 317, 2731, 2731, 2731, 32638,32639,32641,32643,32644,32645,317, 32652,32654,32656,32657,381,
+ 32659,32663,32664,32665,11038,32666,32667,32677,32678,32682,317, 384, 1032, 510, 5653, 32646,32649,6450, 32647,32648,10422,466, 343, 317, 32650,32651,1325,
+ 12277,32653,8254, 32655,5281, 439, 7499, 32658,32660,32661,32662,439, 10878,18531,14829,363, 412, 2060, 5748, 317, 12106,605, 32668,32670,530, 1020, 362,
32674,32669,410, 466, 317, 317, 32671,1588, 32672,32673,1160, 633, 32675,10422,350, 362, 370, 317, 5037, 32676,6311, 578, 32679,32680,317, 637, 32681,
32683,10877,551, 32685,32686,558, 363, 32687,32688,356, 466, 317, 1588, 32690,32691,32698,32701,10519,32703,317, 317, 14663,317, 32692,317, 317, 32693,
- 381, 32695,317, 32697,32694,32696,410, 317, 3999, 317, 382, 2272, 32699,32700,466, 6406, 317, 466, 32702,381, 10907,412, 32705,349, 389, 350, 363,
+ 381, 32695,317, 32697,32694,32696,410, 317, 3999, 317, 382, 2272, 32699,32700,466, 6406, 317, 466, 32702,381, 10907,412, 32705,349, 389, 350, 363,
31086,3999, 19167,350, 389, 317, 427, 32708,32709,479, 343, 343, 2537, 32711,370, 32730,14003,32732,2571, 32734,317, 32735,12423,32712,32713,32716,32728,
- 5579, 32714,370, 32715,5201, 10674,371, 32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,317, 5262, 317, 317, 32729,317, 32731,2322, 5477,
- 317, 32733,24938,382, 7657, 32736,32737,317, 32738,317, 339, 370, 317, 5502, 32739,683, 683, 683, 683, 683, 683, 683, 9166, 1160, 317, 317, 317,
+ 5579, 32714,370, 32715,5201, 10674,371, 32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,317, 5262, 317, 317, 32729,317, 32731,2322, 5477,
+ 317, 32733,24938,382, 7657, 32736,32737,317, 32738,317, 339, 370, 317, 5502, 32739,683, 683, 683, 683, 683, 683, 683, 9166, 1160, 317, 317, 317,
317, 317, 317, 317, 317, 317, 32741,32742,32744,17109,5926, 332, 2084, 317, 590, 380, 32743,1347, 317, 32745,351, 365, 7340, 2381, 7852, 1230, 32749,
- 9609, 317, 317, 380, 317, 317, 32750,32751,317, 380, 2510, 32753,5896, 27303,32754,3023, 32755,32756,32757,363, 317, 32758,1588, 32761,32629,343, 317,
+ 9609, 317, 317, 380, 317, 317, 32750,32751,317, 380, 2510, 32753,5896, 27303,32754,3023, 32755,32756,32757,363, 317, 32758,1588, 32761,32629,343, 317,
380, 390, 317, 23358,6021, 370, 363, 439, 32759,32760,466, 350, 363, 32763,32765,2357, 32767,32770,32773,5662, 32774,32777,4980, 32778,32784,332, 32764,
- 317, 363, 23079,8419, 32766,32768,362, 2301, 2553, 32769,32771,26702,7668, 32772,4040, 317, 6036, 32775,32776,363, 5334, 32779,32780,363, 32781,32783,317,
+ 317, 363, 23079,8419, 32766,32768,362, 2301, 2553, 32769,32771,26702,7668, 32772,4040, 317, 6036, 32775,32776,363, 5334, 32779,32780,363, 32781,32783,317,
317, 32782,5324, 317, 345, 6996, 317, 28650,317, 317, 2272, 331, 32786,32788,2063, 32789,32792,2845, 32794,32795,2391, 2413, 32796,14173,32797,2609, 32798,
32799,32805,4949, 9695, 28462,2178, 343, 9557, 11404,343, 6674, 6674, 32800,32801,32802,4984, 427, 450, 317, 317, 381, 317, 32803,317, 32804,317, 14983,
- 1526, 1526, 32806,32808,32807,317, 317, 356, 466, 317, 4982, 32810,317, 32817,317, 32820,343, 428, 32811,32812,32813,32814,32815,32816,32818,32819,8023,
+ 1526, 1526, 32806,32808,32807,317, 317, 356, 466, 317, 4982, 32810,317, 32817,317, 32820,343, 428, 32811,32812,32813,32814,32815,32816,32818,32819,8023,
13177,16951,7185, 356, 32822,32823,370, 32824,32825,32836,32838,32850,32851,317, 350, 9319, 11454,1588, 381, 350, 543, 550, 345, 5464, 350, 8137, 24504,
317, 32826,32832,32827,32830,466, 511, 32831,317, 32828,32829,5334, 596, 317, 32833,32834,32835,32837,32839,621, 32846,342, 4982, 6917, 3605, 32847,11038,
- 343, 32848,32849,1011, 32840,32841,32842,32843,32844,32845,2060, 25578,565, 31824,1347, 3710, 317, 7785, 558, 3987, 317, 1020, 390, 317, 343, 317, 317,
+ 343, 32848,32849,1011, 32840,32841,32842,32843,32844,32845,2060, 25578,565, 31824,1347, 3710, 317, 7785, 558, 3987, 317, 1020, 390, 317, 343, 317, 317,
317, 373, 6036, 596, 32853,351, 11443,343, 596, 5862, 5073, 32855,32857,2058, 1347, 2609, 32858,32859,32861,5205, 1519, 32862,32864,1548, 32868,381, 32856,
2719, 10454,32860,2156, 439, 501, 363, 15325,380, 363, 32863,428, 32865,3125, 32866,32867,32869,32870,4965, 343, 317, 32875,32877,32876,32878,104, 12873,
33007,105, 33157,33160,33235,33237,5793, 33298,3629, 33316,32879,32880,32884,32891,32892,32893,32905,32906,32910,32911,32914,32916,32976,370, 32977,32984,32991,
- 2134, 33000,33001,33002,33003,32881,32883,32882,332, 2537, 32885,32886,350, 2184, 32887,5241, 2381, 4564, 32888,18042,32889,32890,345, 18946,317, 2610, 1020,
- 317, 32894,373, 32895,32898,6651, 32903,32904,343, 3751, 32896,317, 32897,363, 32899,363, 32900,32901,32902,356, 317, 370, 5226, 1345, 32907,32908,6402,
+ 2134, 33000,33001,33002,33003,32881,32883,32882,332, 2537, 32885,32886,350, 2184, 32887,5241, 2381, 4564, 32888,18042,32889,32890,345, 18946,317, 2610, 1020,
+ 317, 32894,373, 32895,32898,6651, 32903,32904,343, 3751, 32896,317, 32897,363, 32899,363, 32900,32901,32902,356, 317, 370, 5226, 1345, 32907,32908,6402,
1358, 6917, 32909,9450, 1020, 32912,32913,32915,15852,29120,2067, 345, 317, 317, 1347, 317, 9864, 32917,32945,6994, 10196,2108, 332, 32946,5149, 2067, 32968,
32969,32971,1230, 32973,32918,32919,32925,32929,32933,32934,317, 6486, 317, 317, 649, 343, 32920,317, 317, 317, 32921,317, 365, 317, 32922,32924,32923,
- 32926,32927,317, 2280, 574, 365, 2272, 32928,2715, 25756,466, 317, 1347, 14144,5793, 32930,32931,343, 1109, 317, 317, 32932,965, 971, 5616, 317, 345,
+ 32926,32927,317, 2280, 574, 365, 2272, 32928,2715, 25756,466, 317, 1347, 14144,5793, 32930,32931,343, 1109, 317, 317, 32932,965, 971, 5616, 317, 345,
317, 8827, 317, 1444, 32935,32936,317, 5406, 32937,32941,351, 32938,32939,32940,32942,427, 32943,32944,501, 501, 1266, 1160, 637, 633, 12721,32947,32954,
- 32959,32960,32963,2571, 32965,28479,427, 1160, 32966,317, 32948,32949,32952,7734, 32953,9012, 13686,32950,32951,32955,32957,32956,32958,32961,32962,390, 9573,
- 317, 21464,439, 32964,4984, 362, 8178, 5836, 32967,363, 32970,363, 501, 317, 32972,427, 317, 7114, 7223, 971, 317, 32974,32975,5662, 11669,317, 317,
+ 32959,32960,32963,2571, 32965,28479,427, 1160, 32966,317, 32948,32949,32952,7734, 32953,9012, 13686,32950,32951,32955,32957,32956,32958,32961,32962,390, 9573,
+ 317, 21464,439, 32964,4984, 362, 8178, 5836, 32967,363, 32970,363, 501, 317, 32972,427, 317, 7114, 7223, 971, 317, 32974,32975,5662, 11669,317, 317,
317, 343, 2715, 365, 1481, 32978,32980,32983,350, 21067,1588, 2105, 5687, 32979,7916, 32981,32982,6334, 1588, 32985,317, 2391, 32990,345, 553, 6402, 32986,
- 317, 32987,32988,380, 32989,5201, 21043,17462,2211, 4984, 32992,32995,15886,2310, 32999,2322, 20728,16579,32993,32994,32996,32997,13338,32998,10021,14223,5991,
+ 317, 32987,32988,380, 32989,5201, 21043,17462,2211, 4984, 32992,32995,15886,2310, 32999,2322, 20728,16579,32993,32994,32996,32997,13338,32998,10021,14223,5991,
343, 343, 350, 33004,33005,33006,317, 380, 317, 489, 317, 2510, 11669,5570, 1526, 33008,33009,33010,33011,33014,33020,33021,33025,33045,33084,33088,33089,
4591, 350, 33107,33112,33118,363, 33126,33131,33134,33139,33141,22130,2184, 33149,20947,33012,33013,33015,404, 1347, 1358, 317, 33016,8301, 2077, 5991, 33018,
- 343, 385, 33019,1160, 33017,1992, 25736,33022,33023,351, 33024,6718, 466, 637, 22090,1889, 2767, 633, 317, 33026,33027,33036,33037,33038,33039,317, 317,
+ 343, 385, 33019,1160, 33017,1992, 25736,33022,33023,351, 33024,6718, 466, 637, 22090,1889, 2767, 633, 317, 33026,33027,33036,33037,33038,33039,317, 317,
317, 608, 19665,317, 2391, 8346, 363, 380, 33028,33029,574, 33030,33031,33034,965, 317, 490, 33032,317, 404, 317, 33033,7911, 363, 363, 317, 33035,
5896, 363, 20032,7142, 2719, 5943, 317, 370, 2272, 439, 590, 33040,33041,33042,33043,317, 29845,33044,363, 404, 355, 1266, 621, 33046,633, 33047,33052,
- 33053,1358, 33057,33058,466, 1194, 1345, 33061,33066,22882,7360, 33070,33072,33073,33076,16667,5573, 33079,33083,4949, 33048,33049,356, 33050,317, 33051,428,
- 4591, 317, 1033, 33054,10149,33055,14951,317, 33056,428, 2758, 7389, 511, 33059,2577, 33060,33062,370, 33065,317, 317, 33063,33064,317, 15210,317, 343,
+ 33053,1358, 33057,33058,466, 1194, 1345, 33061,33066,22882,7360, 33070,33072,33073,33076,16667,5573, 33079,33083,4949, 33048,33049,356, 33050,317, 33051,428,
+ 4591, 317, 1033, 33054,10149,33055,14951,317, 33056,428, 2758, 7389, 511, 33059,2577, 33060,33062,370, 33065,317, 317, 33063,33064,317, 15210,317, 343,
33067,4984, 33069,20535,350, 380, 33068,9335, 476, 33071,2261, 6831, 381, 6195, 33074,516, 33075,608, 509, 2272, 3529, 5633, 990, 33077,2060, 5841, 33078,
6312, 33080,33081,8035, 356, 343, 6420, 33082,6726, 3999, 381, 12800,31972,490, 33085,33086,33087,404, 33090,33093,33094,6598, 33095,33098,343, 9614, 33100,
- 33102,317, 343, 33103,33106,33091,4949, 33092,317, 31361,5644, 363, 1020, 362, 33096,33097,2510, 31953,33099,351, 33101,390, 17160,28789,545, 33104,466,
- 350, 33105,466, 33108,605, 390, 332, 33109,33110,33111,673, 33113,4984, 363, 511, 20535,33114,33115,33116,33117,33119,317, 33121,2222, 8906, 2134, 350,
- 317, 317, 33123,33125,33120,317, 351, 2156, 10149,5840, 1871, 317, 33122,317, 33124,380, 1526, 317, 33127,33128,33129,14663,33130,356, 466, 370, 317,
- 1347, 33132,511, 33133,33135,317, 33137,25562,12994,490, 1347, 317, 33136,29666,5464, 317, 317, 33138,5661, 10149,2571, 1444, 7688, 22983,1347, 381, 5279,
+ 33102,317, 343, 33103,33106,33091,4949, 33092,317, 31361,5644, 363, 1020, 362, 33096,33097,2510, 31953,33099,351, 33101,390, 17160,28789,545, 33104,466,
+ 350, 33105,466, 33108,605, 390, 332, 33109,33110,33111,673, 33113,4984, 363, 511, 20535,33114,33115,33116,33117,33119,317, 33121,2222, 8906, 2134, 350,
+ 317, 317, 33123,33125,33120,317, 351, 2156, 10149,5840, 1871, 317, 33122,317, 33124,380, 1526, 317, 33127,33128,33129,14663,33130,356, 466, 370, 317,
+ 1347, 33132,511, 33133,33135,317, 33137,25562,12994,490, 1347, 317, 33136,29666,5464, 317, 317, 33138,5661, 10149,2571, 1444, 7688, 22983,1347, 381, 5279,
2087, 2571, 317, 5363, 33140,317, 428, 406, 33142,33147,33143,33146,33144,33145,9012, 13686,10560,4949, 33148,317, 5896, 33150,2134, 33151,33152,490, 33156,
- 1358, 33106,33153,33154,33155,33158,33159,33161,33162,33163,33167,33174,33197,5159, 345, 490, 2102, 33207,2021, 33208,11438,1060, 33211,33220,33229,33230,317,
- 33233,4949, 2022, 7911, 33164,3941, 33166,21680,332, 33165,13392,3999, 2022, 4980, 33168,33170,33171,343, 33172,362, 2087, 33173,317, 33169,380, 401, 370,
- 5537, 2134, 33175,33186,16802,33187,33188,33192,33193,33196,2156, 4984, 5896, 33176,31236,1020, 33180,5662, 33181,18839,317, 371, 317, 9938, 33177,33178,5896,
- 13686,33179,14951,4965, 7916, 317, 33182,33183,33184,317, 33185,363, 31976,3664, 317, 363, 3884, 33189,317, 33190,33191,476, 22782,317, 317, 9140, 6917,
- 8178, 404, 33194,362, 4952, 350, 363, 317, 317, 317, 33195,345, 2108, 33198,33203,33204,356, 4984, 33199,33200,33201,317, 33202,33205,33206,10891,370,
- 466, 32485,381, 33209,317, 317, 8136, 33210,317, 5032, 20388,382, 33212,33213,33215,33216,33217,33219,363, 14783,6021, 343, 317, 33214,490, 317, 317,
- 8948, 362, 5616, 33218,317, 343, 2022, 317, 33221,317, 33223,33226,26075,33227,33228,33222,6036, 2022, 362, 33224,33225,317, 317, 32106,4738, 350, 362,
+ 1358, 33106,33153,33154,33155,33158,33159,33161,33162,33163,33167,33174,33197,5159, 345, 490, 2102, 33207,2021, 33208,11438,1060, 33211,33220,33229,33230,317,
+ 33233,4949, 2022, 7911, 33164,3941, 33166,21680,332, 33165,13392,3999, 2022, 4980, 33168,33170,33171,343, 33172,362, 2087, 33173,317, 33169,380, 401, 370,
+ 5537, 2134, 33175,33186,16802,33187,33188,33192,33193,33196,2156, 4984, 5896, 33176,31236,1020, 33180,5662, 33181,18839,317, 371, 317, 9938, 33177,33178,5896,
+ 13686,33179,14951,4965, 7916, 317, 33182,33183,33184,317, 33185,363, 31976,3664, 317, 363, 3884, 33189,317, 33190,33191,476, 22782,317, 317, 9140, 6917,
+ 8178, 404, 33194,362, 4952, 350, 363, 317, 317, 317, 33195,345, 2108, 33198,33203,33204,356, 4984, 33199,33200,33201,317, 33202,33205,33206,10891,370,
+ 466, 32485,381, 33209,317, 317, 8136, 33210,317, 5032, 20388,382, 33212,33213,33215,33216,33217,33219,363, 14783,6021, 343, 317, 33214,490, 317, 317,
+ 8948, 362, 5616, 33218,317, 343, 2022, 317, 33221,317, 33223,33226,26075,33227,33228,33222,6036, 2022, 362, 33224,33225,317, 317, 32106,4738, 350, 362,
32105,317, 317, 33231,33232,397, 4591, 428, 33234,428, 596, 343, 317, 33236,33238,1915, 33239,371, 33242,33244,33250,33254,33257,33260,33263,33268,33284,
33285,33292,33294,10528,356, 33295,33240,33241,9182, 382, 317, 343, 33243,7678, 317, 317, 3236, 343, 990, 33245,33246,32769,33248,30795,350, 33247,33249,
- 317, 317, 516, 33251,33252,33253,350, 1347, 15156,2156, 1160, 5684, 363, 1588, 5896, 33255,362, 384, 2310, 33256,317, 4952, 33258,317, 33259,33261,332,
- 7116, 2003, 33262,33264,33265,14571,7523, 3987, 10185,466, 33266,25146,317, 33267,33269,33270,33271,16053,33272,317, 33275,7785, 5033, 7850, 317, 5890, 608,
- 317, 2715, 33273,33274,1603, 33276,33277,33278,33279,8000, 362, 7779, 33283,317, 1871, 317, 317, 17413,490, 33280,382, 33282,33281,345, 317, 18700,343,
+ 317, 317, 516, 33251,33252,33253,350, 1347, 15156,2156, 1160, 5684, 363, 1588, 5896, 33255,362, 384, 2310, 33256,317, 4952, 33258,317, 33259,33261,332,
+ 7116, 2003, 33262,33264,33265,14571,7523, 3987, 10185,466, 33266,25146,317, 33267,33269,33270,33271,16053,33272,317, 33275,7785, 5033, 7850, 317, 5890, 608,
+ 317, 2715, 33273,33274,1603, 33276,33277,33278,33279,8000, 362, 7779, 33283,317, 1871, 317, 317, 17413,490, 33280,382, 33282,33281,345, 317, 18700,343,
317, 370, 33286,33288,15130,33289,490, 33287,33290,33291,356, 466, 317, 317, 1160, 10820,4949, 33293,13177,317, 343, 20047,33296,33297,33299,33301,33303,
- 8519, 33304,5911, 33308,5017, 33309,33314,11635,33300,5956, 33302,3664, 511, 21700,317, 6402, 317, 33305,317, 2631, 33306,379, 5987, 33307,317, 6195, 317,
- 363, 1020, 1345, 33310,33312,33313,33311,33315,317, 2219, 5392, 317, 351, 5897, 33317,4965, 466, 511, 33319,590, 12429,404, 370, 33318,362, 28789,5346,
+ 8519, 33304,5911, 33308,5017, 33309,33314,11635,33300,5956, 33302,3664, 511, 21700,317, 6402, 317, 33305,317, 2631, 33306,379, 5987, 33307,317, 6195, 317,
+ 363, 1020, 1345, 33310,33312,33313,33311,33315,317, 2219, 5392, 317, 351, 5897, 33317,4965, 466, 511, 33319,590, 12429,404, 370, 33318,362, 28789,5346,
2405, 350, 33321,33324,363, 33326,33322,33323,33325,33327,317, 345, 317, 343, 390, 33329,33330,33334,33371,33374,33390,33396,33406,33414,33423,33430,33465,
33472,5428, 33527,33535,33536,33574,33591,31505,33599,317, 10471,4069, 33331,33333,33332,6228, 633, 356, 317, 365, 33335,33336,33338,33370,12746,317, 33337,
- 382, 1588, 3529, 22090,14773,672, 633, 33339,33341,33342,33345,4249, 33346,33348,33351,33352,9479, 33356,33359,33360,33364,33365,33366,33340,33343,363, 317,
- 33344,5942, 633, 4944, 514, 412, 551, 33347,373, 356, 1160, 33349,33350,317, 1160, 2260, 365, 533, 434, 33353,33355,317, 317, 633, 33354,6345, 476,
- 2277, 33357,33358,2036, 385, 16484,551, 33361,370, 381, 33362,345, 12151,33363,26518,317, 317, 428, 317, 317, 2533, 33367,33368,317, 317, 1266, 317,
- 1353, 317, 317, 317, 16620,33369,317, 33372,1345, 317, 33373,1108, 490, 317, 17158,466, 332, 9644, 33375,33376,33378,33380,33389,356, 466, 5363, 317,
+ 382, 1588, 3529, 22090,14773,672, 633, 33339,33341,33342,33345,4249, 33346,33348,33351,33352,9479, 33356,33359,33360,33364,33365,33366,33340,33343,363, 317,
+ 33344,5942, 633, 4944, 514, 412, 551, 33347,373, 356, 1160, 33349,33350,317, 1160, 2260, 365, 533, 434, 33353,33355,317, 317, 633, 33354,6345, 476,
+ 2277, 33357,33358,2036, 385, 16484,551, 33361,370, 381, 33362,345, 12151,33363,26518,317, 317, 428, 317, 317, 2533, 33367,33368,317, 317, 1266, 317,
+ 1353, 317, 317, 317, 16620,33369,317, 33372,1345, 317, 33373,1108, 490, 317, 17158,466, 332, 9644, 33375,33376,33378,33380,33389,356, 466, 5363, 317,
33377,33379,345, 8243, 317, 33381,362, 33382,33387,317, 490, 33383,33384,33385,590, 33386,33388,317, 25968,1358, 2184, 33391,33392,33393,33394,33395,33397,
- 33399,350, 317, 33400,33403,317, 33404,317, 317, 33398,365, 345, 1358, 381, 33401,33402,9383, 317, 4965, 2357, 317, 33405,33407,317, 33408,33411,7949,
- 33413,33409,33410,33412,5663, 12288,33415,33416,363, 33417,6834, 317, 33418,33420,332, 1481, 6900, 33422,6834, 33419,317, 33421,2110, 33424,345, 33425,3529,
+ 33399,350, 317, 33400,33403,317, 33404,317, 317, 33398,365, 345, 1358, 381, 33401,33402,9383, 317, 4965, 2357, 317, 33405,33407,317, 33408,33411,7949,
+ 33413,33409,33410,33412,5663, 12288,33415,33416,363, 33417,6834, 317, 33418,33420,332, 1481, 6900, 33422,6834, 33419,317, 33421,2110, 33424,345, 33425,3529,
33427,33426,382, 490, 317, 29531,9436, 1481, 33428,33429,8926, 7142, 33431,33432,1109, 33433,33435,33438,33443,33446,33448,33459,1060, 317, 33460,33461,33462,
33463,317, 2301, 350, 317, 317, 741, 365, 33434,317, 22114,351, 33436,551, 33437,5012, 3854, 317, 33439,33440,33441,33442,33444,33445,33447,317, 33449,
- 33450,33451,2024, 5727, 33454,33455,2571, 1526, 5005, 33458,317, 565, 317, 21766,384, 2301, 317, 33452,33453,381, 11709,22114,6188, 404, 7073, 5861, 404,
+ 33450,33451,2024, 5727, 33454,33455,2571, 1526, 5005, 33458,317, 565, 317, 21766,384, 2301, 317, 33452,33453,381, 11709,22114,6188, 404, 7073, 5861, 404,
363, 33456,33457,2298, 2063, 351, 351, 1588, 317, 9266, 4591, 33464,2063, 33466,33469,33470,33471,33467,33468,33327,30476,332, 382, 317, 949, 33046,33473,
- 33475,33476,33486,33502,33505,33509,7401, 33512,33514,33518,2272, 33523,33525,5089, 317, 33474,317, 5439, 317, 6851, 3338, 370, 33477,33478,317, 33479,380,
+ 33475,33476,33486,33502,33505,33509,7401, 33512,33514,33518,2272, 33523,33525,5089, 317, 33474,317, 5439, 317, 6851, 3338, 370, 33477,33478,317, 33479,380,
12060,33480,2510, 33481,33482,33483,356, 466, 317, 33484,5201, 33485,370, 317, 5355, 5201, 1526, 33487,33494,8137, 11986,33499,317, 345, 317, 31376,33488,
33489,33490,33491,33492,33493,5249, 370, 317, 317, 8325, 33495,33496,317, 4949, 33497,371, 33498,33500,33501,317, 33503,317, 317, 33504,5022, 33506,33507,
- 33508,380, 33510,6859, 373, 33511,33513,5488, 5033, 10408,33515,12142,32959,343, 349, 33517,33516,33519,33521,33522,33520,317, 565, 317, 901, 362, 317,
+ 33508,380, 33510,6859, 373, 33511,33513,5488, 5033, 10408,33515,12142,32959,343, 349, 33517,33516,33519,33521,33522,33520,317, 565, 317, 901, 362, 317,
316, 33524,363, 3529, 33526,317, 6419, 33528,33529,33530,33531,33532,33533,33534,370, 33537,33539,33540,33541,33542,33543,9909, 33545,33548,33550,11648,33558,
33560,33562,33570,317, 343, 428, 33538,389, 1444, 389, 317, 1078, 317, 404, 8722, 317, 317, 867, 370, 2551, 10368,2551, 2551, 317, 345, 332, 33544,
- 332, 6670, 363, 351, 33546,33547,574, 4943, 317, 33549,33551,33553,33554,317, 2156, 33552,317, 7990, 317, 345, 317, 317, 33555,33557,33556,317, 5464,
+ 332, 6670, 363, 351, 33546,33547,574, 4943, 317, 33549,33551,33553,33554,317, 2156, 33552,317, 7990, 317, 345, 317, 317, 33555,33557,33556,317, 5464,
10877,5991, 317, 33559,317, 317, 33561,33563,33564,33567,363, 33568,33565,33566,381, 523, 356, 466, 2171, 317, 33569,33571,6900, 16063,33573,33572,33575,
- 33577,33580,33582,33583,350, 4984, 33588,15513,33576,33578,33579,6387, 345, 317, 33581,317, 9067, 350, 317, 3429, 363, 12987,317, 33584,33585,33586,2509,
- 5439, 33587,317, 7921, 317, 15260,33589,466, 350, 317, 33590,317, 317, 33592,390, 21763,4974, 33593,363, 33594,9549, 16438,33595,33598,428, 5105, 380,
+ 33577,33580,33582,33583,350, 4984, 33588,15513,33576,33578,33579,6387, 345, 317, 33581,317, 9067, 350, 317, 3429, 363, 12987,317, 33584,33585,33586,2509,
+ 5439, 33587,317, 7921, 317, 15260,33589,466, 350, 317, 33590,317, 317, 33592,390, 21763,4974, 33593,363, 33594,9549, 16438,33595,33598,428, 5105, 380,
30811,490, 33596,2576, 6420, 33597,317, 8158, 370, 1347, 589, 33600,33601,343, 1160, 33603,6541, 33607,33608,33604,33605,33606,33610,33611,33613,33615,33617,
33618,317, 33623,317, 33635,33636,33642,33653,607, 33657,25825,33616,3103, 380, 380, 33619,33620,33621,33622,33624,317, 343, 33629,33633,32273,33625,33626,
33627,33628,33630,33631,1065, 33632,33634,343, 9450, 33637,363, 612, 33638,1065, 33640,33639,33641,1193, 6228, 740, 396, 2086, 33643,33649,33644,33645,33646,
33647,33648,33650,33651,949, 33652,1193, 371, 33654,33655,33656,33658,33659,6778, 33660,317, 3800, 7305, 4462, 33662,33663,33664,33665,33671,33672,33674,33677,
- 108, 34204,34238,34244,111, 34652,34709,34714,112, 35194,35251,113, 35472,35481,114, 36030,36031,115, 36550,36564,120, 36976,36979,37006,37012,37061,1230,
+ 108, 34204,34238,34244,111, 34652,34709,34714,112, 35194,35251,113, 35472,35481,114, 36030,36031,115, 36550,36564,120, 36976,36979,37006,37012,37061,1230,
11089,565, 2301, 11097,427, 536, 33666,2208, 33667,350, 373, 33668,33669,33670,33673,33675,33676,33678,33679,33680,33682,33704,33707,33721,33728,33731,33742,
33744,33762,33764,109, 33859,33906,33959,33961,110, 34049,34099,34130,34157,34168,22400,34175,34186,390, 317, 317, 317, 33681,317, 350, 6563, 33683,33686,
- 33689,5159, 33690,33691,33695,33698,317, 317, 6064, 317, 33684,33685,317, 5120, 343, 33687,33688,19661,332, 1160, 5027, 490, 356, 317, 5159, 8431, 5223,
- 357, 365, 8136, 33692,33693,33694,8217, 33696,3751, 33697,14981,2272, 351, 13091,33699,33701,1189, 11147,33700,348, 380, 33702,33703,6996, 317, 317, 317,
+ 33689,5159, 33690,33691,33695,33698,317, 317, 6064, 317, 33684,33685,317, 5120, 343, 33687,33688,19661,332, 1160, 5027, 490, 356, 317, 5159, 8431, 5223,
+ 357, 365, 8136, 33692,33693,33694,8217, 33696,3751, 33697,14981,2272, 351, 13091,33699,33701,1189, 11147,33700,348, 380, 33702,33703,6996, 317, 317, 317,
317, 21183,6046, 356, 10196,371, 33705,490, 33706,2364, 317, 565, 17973,33708,33709,33710,33711,418, 8049, 33714,15732,33715,33718,343, 33719,317, 33720,
605, 7590, 2163, 448, 10225,6578, 317, 317, 317, 33712,33713,33716,5836, 448, 33717,370, 501, 363, 363, 11347,10623,317, 2298, 33722,22836,33723,33724,
- 33725,13214,33726,1998, 317, 339, 1358, 317, 28525,362, 2568, 33727,317, 317, 343, 317, 33729,33730,11443,2348, 343, 2022, 551, 33732,33733,33734,350,
- 371, 33735,33740,33741,490, 317, 317, 1020, 1108, 5991, 466, 343, 33736,33737,7916, 332, 33738,33739,12142,350, 363, 33743,7949, 317, 317, 2184, 317,
- 2298, 501, 33745,343, 1020, 33747,6600, 33749,33756,33757,33758,345, 317, 33746,6859, 345, 33748,317, 363, 33750,33751,466, 33752,33753,317, 317, 7941,
+ 33725,13214,33726,1998, 317, 339, 1358, 317, 28525,362, 2568, 33727,317, 317, 343, 317, 33729,33730,11443,2348, 343, 2022, 551, 33732,33733,33734,350,
+ 371, 33735,33740,33741,490, 317, 317, 1020, 1108, 5991, 466, 343, 33736,33737,7916, 332, 33738,33739,12142,350, 363, 33743,7949, 317, 317, 2184, 317,
+ 2298, 501, 33745,343, 1020, 33747,6600, 33749,33756,33757,33758,345, 317, 33746,6859, 345, 33748,317, 363, 33750,33751,466, 33752,33753,317, 317, 7941,
317, 5810, 5701, 33754,33755,6673, 4949, 2568, 11607,363, 2510, 33759,4965, 33761,33760,33763,490, 15326,2280, 317, 7776, 5238, 343, 33765,19617,33766,33782,
33785,33787,33793,33794,25961,33796,11034,9909, 33810,17870,33845,33846,33847,4980, 33849,33851,1230, 33858,6176, 33767,2202, 419, 355, 11055,33769,33770,33771,
- 33772,33774,3717, 33779,33780,2004, 317, 332, 33768,8637, 393, 345, 1109, 345, 317, 6278, 9375, 363, 5439, 489, 11921,317, 490, 33773,490, 15169,605,
- 15892,33775,490, 343, 33778,33776,33777,33781,1160, 33783,5325, 317, 33784,2553, 23256,33786,317, 4984, 33788,3284, 2381, 33789,33790,33791,7910, 7383, 317,
+ 33772,33774,3717, 33779,33780,2004, 317, 332, 33768,8637, 393, 345, 1109, 345, 317, 6278, 9375, 363, 5439, 489, 11921,317, 490, 33773,490, 15169,605,
+ 15892,33775,490, 343, 33778,33776,33777,33781,1160, 33783,5325, 317, 33784,2553, 23256,33786,317, 4984, 33788,3284, 2381, 33789,33790,33791,7910, 7383, 317,
5611, 317, 9185, 33792,6138, 551, 5570, 33795,5570, 33797,6993, 33799,317, 33802,33804,33807,2322, 33809,427, 5241, 33798,5616, 6763, 33800,33801,33803,33805,
317, 1588, 317, 33806,317, 33808,345, 490, 31290,3284, 33811,33819,33822,33827,11236,33840,33842,33843,348, 317, 419, 7521, 33812,16825,2171, 33813,33815,
33816,33817,33818,1230, 317, 351, 6917, 345, 2222, 33814,317, 370, 370, 332, 5033, 332, 596, 539, 419, 33820,33821,33823,350, 2171, 33824,5055, 33825,
1358, 33826,1347, 345, 350, 370, 8243, 317, 9012, 2271, 2211, 10578,317, 317, 317, 7384, 18454,33828,33829,33830,33831,33832,317, 33833,33834,363, 33836,
- 17039,427, 33837,4984, 10609,2537, 317, 6387, 317, 8994, 2022, 351, 4943, 551, 1588, 33835,25415,6394, 10471,17462,33838,33839,317, 11761,418, 1347, 5363,
+ 17039,427, 33837,4984, 10609,2537, 317, 6387, 317, 8994, 2022, 351, 4943, 551, 1588, 33835,25415,6394, 10471,17462,33838,33839,317, 11761,418, 1347, 5363,
490, 33841,8841, 1347, 33844,9185, 2084, 345, 317, 343, 2394, 317, 363, 33848,29521,356, 351, 362, 363, 11279,33850,490, 7384, 5624, 1481, 33852,33856,
- 6002, 33853,317, 13338,33854,33855,317, 1526, 5174, 317, 33857,317, 363, 7237, 363, 33860,33862,33872,558, 33894,33896,33897,33900,33901,9289, 33902,381,
- 342, 343, 33861,2110, 15771,317, 33863,33865,5022, 33867,33868,33869,33870,317, 5173, 343, 33864,317, 5105, 33866,489, 4984, 351, 380, 332, 1160, 317,
- 356, 1358, 9878, 33871,380, 4591, 8301, 33873,33874,33875,33876,33877,33878,33879,33880,33884,33887,3987, 15685,5961, 5866, 4984, 363, 332, 356, 1230, 332,
- 6228, 33881,2413, 1347, 317, 33882,33883,317, 2402, 33885,33886,317, 2503, 8906, 381, 317, 1347, 2060, 33888,33891,33889,33890,33892,33893,33895,317, 5223,
+ 6002, 33853,317, 13338,33854,33855,317, 1526, 5174, 317, 33857,317, 363, 7237, 363, 33860,33862,33872,558, 33894,33896,33897,33900,33901,9289, 33902,381,
+ 342, 343, 33861,2110, 15771,317, 33863,33865,5022, 33867,33868,33869,33870,317, 5173, 343, 33864,317, 5105, 33866,489, 4984, 351, 380, 332, 1160, 317,
+ 356, 1358, 9878, 33871,380, 4591, 8301, 33873,33874,33875,33876,33877,33878,33879,33880,33884,33887,3987, 15685,5961, 5866, 4984, 363, 332, 356, 1230, 332,
+ 6228, 33881,2413, 1347, 317, 33882,33883,317, 2402, 33885,33886,317, 2503, 8906, 381, 317, 1347, 2060, 33888,33891,33889,33890,33892,33893,33895,317, 5223,
363, 33898,9878, 428, 33899,317, 1459, 7871, 317, 33903,33904,33905,33907,2537, 33911,33925,9624, 33927,33944,33946,2022, 33949,33952,33953,33955,345, 33958,
11454,332, 33908,22232,1230, 33909,33910,33912,33918,33919,490, 33923,2521, 317, 5439, 33913,33915,33914,317, 33916,33917,427, 317, 317, 5223, 490, 33920,
- 33922,317, 33921,363, 365, 6614, 33924,317, 317, 317, 33926,317, 363, 1109, 33928,33931,33934,7871, 33937,33938,6463, 33939,33940,9696, 33942,33943,317,
- 33929,33930,565, 433, 33932,20656,33933,317, 33935,365, 317, 33936,401, 439, 351, 11511,3529, 3529, 317, 427, 5379, 33941,13790,10798,370, 351, 389,
- 363, 33945,317, 362, 317, 357, 404, 4980, 33947,317, 33948,2208, 33950,2039, 10476,317, 317, 33951,317, 382, 16898,466, 7911, 33954,5793, 7490, 317,
+ 33922,317, 33921,363, 365, 6614, 33924,317, 317, 317, 33926,317, 363, 1109, 33928,33931,33934,7871, 33937,33938,6463, 33939,33940,9696, 33942,33943,317,
+ 33929,33930,565, 433, 33932,20656,33933,317, 33935,365, 317, 33936,401, 439, 351, 11511,3529, 3529, 317, 427, 5379, 33941,13790,10798,370, 351, 389,
+ 363, 33945,317, 362, 317, 357, 404, 4980, 33947,317, 33948,2208, 33950,2039, 10476,317, 317, 33951,317, 382, 16898,466, 7911, 33954,5793, 7490, 317,
317, 5223, 7894, 33956,15449,33957,370, 317, 317, 7894, 14905,382, 5223, 6089, 317, 1109, 33960,4984, 33962,1109, 317, 33963,33964,33973,33975,33980,33991,
33993,33997,34004,34005,2402, 34013,34016,34019,34023,317, 34026,34036,34038,34043,34044,34046,6227, 34048,33965,33967,33968,2156, 362, 317, 490, 317, 33970,
- 17760,343, 33971,317, 33966,33969,2381, 14150,33972,6402, 489, 33974,20880,363, 1526, 317, 2117, 1108, 6713, 15830,33976,33977,5055, 317, 14561,5943, 317,
- 404, 317, 2715, 14786,33978,33979,5120, 33981,33986,2022, 33988,33989,33990,317, 317, 3284, 6817, 433, 33982,33984,317, 317, 1347, 2510, 2609, 33983,317,
- 33985,317, 33987,351, 317, 350, 317, 590, 14439,1109, 317, 33992,317, 1160, 404, 317, 317, 33994,5810, 32892,345, 33995,356, 33996,33998,34001,472,
- 34002,34003,2134, 33999,317, 317, 34000,1999, 317, 433, 317, 34006,34009,34010,10836,34011,317, 11678,363, 4925, 34012,1230, 34007,317, 34008,317, 363,
- 8419, 11229,14174,34014,34015,7785, 25414,5392, 371, 5295, 317, 16002,3676, 34017,10476,34018,317, 343, 2108, 34020,350, 34021,554, 34022,5926, 8392, 332,
- 342, 356, 590, 5273, 1347, 11962,317, 11881,351, 8412, 34024,34025,8772, 343, 33969,2142, 34027,34028,34031,34035,317, 25289,7492, 362, 7035, 356, 356,
- 381, 1230, 363, 317, 12966,317, 34029,404, 34030,371, 332, 443, 34032,30087,2117, 34033,34034,4984, 29424,317, 10528,317, 317, 317, 317, 381, 2610,
- 11055,343, 12154,7031, 332, 7672, 363, 34037,466, 490, 363, 34039,34042,363, 15983,362, 350, 363, 3987, 317, 34040,1347, 6415, 34041,343, 15790,490,
- 365, 365, 363, 34045,24108,363, 34047,317, 490, 6318, 34050,34051,34053,34056,317, 34058,34060,34064,10149,350, 34066,34067,15273,34073,34076,15960,8281,
+ 17760,343, 33971,317, 33966,33969,2381, 14150,33972,6402, 489, 33974,20880,363, 1526, 317, 2117, 1108, 6713, 15830,33976,33977,5055, 317, 14561,5943, 317,
+ 404, 317, 2715, 14786,33978,33979,5120, 33981,33986,2022, 33988,33989,33990,317, 317, 3284, 6817, 433, 33982,33984,317, 317, 1347, 2510, 2609, 33983,317,
+ 33985,317, 33987,351, 317, 350, 317, 590, 14439,1109, 317, 33992,317, 1160, 404, 317, 317, 33994,5810, 32892,345, 33995,356, 33996,33998,34001,472,
+ 34002,34003,2134, 33999,317, 317, 34000,1999, 317, 433, 317, 34006,34009,34010,10836,34011,317, 11678,363, 4925, 34012,1230, 34007,317, 34008,317, 363,
+ 8419, 11229,14174,34014,34015,7785, 25414,5392, 371, 5295, 317, 16002,3676, 34017,10476,34018,317, 343, 2108, 34020,350, 34021,554, 34022,5926, 8392, 332,
+ 342, 356, 590, 5273, 1347, 11962,317, 11881,351, 8412, 34024,34025,8772, 343, 33969,2142, 34027,34028,34031,34035,317, 25289,7492, 362, 7035, 356, 356,
+ 381, 1230, 363, 317, 12966,317, 34029,404, 34030,371, 332, 443, 34032,30087,2117, 34033,34034,4984, 29424,317, 10528,317, 317, 317, 317, 381, 2610,
+ 11055,343, 12154,7031, 332, 7672, 363, 34037,466, 490, 363, 34039,34042,363, 15983,362, 350, 363, 3987, 317, 34040,1347, 6415, 34041,343, 15790,490,
+ 365, 365, 363, 34045,24108,363, 34047,317, 490, 6318, 34050,34051,34053,34056,317, 34058,34060,34064,10149,350, 34066,34067,15273,34073,34076,15960,8281,
1230, 34052,317, 34054,34055,10758,1345, 317, 2272, 34057,317, 317, 34059,5650, 23622,2279, 5836, 34061,34062,34063,380, 1347, 317, 34065,20925,317, 34068,
34071,466, 34069,317, 317, 34070,317, 317, 34072,2208, 34074,466, 350, 362, 350, 34075,317, 317, 317, 317, 5223, 317, 381, 34077,34080,2022, 34081,
34083,34078,34079,317, 21145,317, 5332, 34082,317, 19435,490, 339, 34084,34085,34090,34095,34097,34086,34087,34088,34089,5828, 10252,34091,34092,34093,34094,
- 34096,34098,317, 34100,34103,34111,34115,34117,34120,3987, 34123,34124,363, 34128,34129,34101,34102,9878, 2035, 390, 317, 343, 4982, 7401, 34104,5661, 345,
+ 34096,34098,317, 34100,34103,34111,34115,34117,34120,3987, 34123,34124,363, 34128,34129,34101,34102,9878, 2035, 390, 317, 343, 4982, 7401, 34104,5661, 345,
34107,34108,34105,34106,34109,2063, 34110,34112,10877,343, 362, 2301, 34113,10422,34114,317, 471, 10878,490, 34116,345, 7143, 10471,317, 5611, 370, 34118,
396, 34119,317, 34121,317, 317, 317, 2261, 362, 362, 34122,370, 365, 363, 34125,363, 34126,6063, 34127,5325, 317, 343, 605, 2211, 31413,34131,34133,
- 351, 34137,34138,34140,34142,34144,34148,34150,34153,34154,34155,1020, 5653, 343, 34132,4984, 4965, 1347, 317, 34134,34136,11921,317, 17434,34135,11962,351,
+ 351, 34137,34138,34140,34142,34144,34148,34150,34153,34154,34155,1020, 5653, 343, 34132,4984, 4965, 1347, 317, 34134,34136,11921,317, 17434,34135,11962,351,
357, 6300, 490, 363, 3751, 8136, 34139,466, 350, 1020, 34141,380, 34143,34145,22177,34146,343, 5803, 8722, 317, 34147,20178,351, 34149,317, 343, 34151,
- 34152,350, 317, 9981, 317, 363, 317, 362, 6854, 355, 8574, 466, 34156,6917, 2022, 25494,2108, 427, 6917, 9303, 34158,34160,34161,2156, 34166,2381, 339,
- 362, 34159,317, 7823, 5105, 2004, 317, 5862, 10820,317, 5241, 34162,34163,34165,489, 5241, 5223, 363, 5241, 34164,34167,317, 10073,34169,317, 380, 545,
+ 34152,350, 317, 9981, 317, 363, 317, 362, 6854, 355, 8574, 466, 34156,6917, 2022, 25494,2108, 427, 6917, 9303, 34158,34160,34161,2156, 34166,2381, 339,
+ 362, 34159,317, 7823, 5105, 2004, 317, 5862, 10820,317, 5241, 34162,34163,34165,489, 5241, 5223, 363, 5241, 34164,34167,317, 10073,34169,317, 380, 545,
34170,34171,34172,34173,8587, 466, 8852, 351, 371, 11665,25423,34174,34176,8301, 34178,28196,9624, 901, 28190,34179,34181,34182,34184,34185,11236,26336,34177,
- 2178, 365, 351, 363, 16503,317, 34180,2389, 363, 6002, 363, 34183,351, 11533,317, 345, 34187,34188,34189,34194,596, 317, 34202,34203,5038, 490, 317,
- 1230, 317, 11146,371, 332, 317, 34190,317, 34191,317, 34192,34193,34195,34199,382, 7657, 34196,34197,34198,34200,34201,2415, 426, 17994,7567, 5033, 6817,
+ 2178, 365, 351, 363, 16503,317, 34180,2389, 363, 6002, 363, 34183,351, 11533,317, 345, 34187,34188,34189,34194,596, 317, 34202,34203,5038, 490, 317,
+ 1230, 317, 11146,371, 332, 317, 34190,317, 34191,317, 34192,34193,34195,34199,382, 7657, 34196,34197,34198,34200,34201,2415, 426, 17994,7567, 5033, 6817,
34205,34208,611, 34209,34211,34214,34217,5171, 34219,34223,34230,34232,34236,351, 34237,34206,34207,34210,34212,34213,34215,34216,34218,34220,34221,34222,34224,
- 34228,34225,34226,34227,34229,34231,16129,34233,1243, 34234,34235,1060, 34239,382, 2156, 332, 34240,317, 34241,34242,34243,34245,317, 34248,317, 34249,2381,
+ 34228,34225,34226,34227,34229,34231,16129,34233,1243, 34234,34235,1060, 34239,382, 2156, 332, 34240,317, 34241,34242,34243,34245,317, 34248,317, 34249,2381,
5431, 34246,34247,6555, 2212, 34250,34263,34268,34270,34276,34289,34294,34297,34304,34315,34316,34341,34355,34447,34498,34501,34580,34605,34638,34641,34646,34649,
34650,390, 362, 370, 34251,34253,34261,34262,6551, 34252,317, 317, 363, 34254,356, 34255,3999, 34258,317, 363, 34259,565, 317, 1999, 34256,34257,31644,
34260,351, 2188, 7408, 18236,34264,28651,317, 34266,317, 34265,34267,363, 348, 34269,596, 6420, 34271,34274,34275,362, 2022, 317, 2163, 343, 345, 34272,
- 363, 34273,317, 3338, 317, 363, 450, 511, 34277,34279,34280,1109, 965, 34281,34282,34283,34284,34288,34278,8301, 317, 317, 363, 2037, 596, 501, 317,
+ 363, 34273,317, 3338, 317, 363, 450, 511, 34277,34279,34280,1109, 965, 34281,34282,34283,34284,34288,34278,8301, 317, 317, 363, 2037, 596, 501, 317,
317, 317, 450, 1345, 1020, 317, 317, 351, 490, 466, 34285,34286,34287,34290,412, 34291,25078,17290,34292,501, 34293,317, 15330,6222, 34295,34296,34298,
34299,6600, 317, 34300,427, 2035, 5626, 13002,12524,466, 34301,34302,34303,2310, 9938, 363, 317, 317, 7871, 34305,332, 34306,351, 34307,501, 34308,16825,
317, 14295,34310,34314,6221, 380, 382, 12731,343, 34309,317, 34311,6409, 34312,350, 25681,2222, 2298, 34313,350, 2317, 2022, 2568, 350, 317, 34317,34321,
- 34322,34324,34326,350, 565, 34327,34329,362, 350, 34335,2521, 34336,1108, 34339,1020, 34340,1998, 34318,34319,317, 34320,29456,351, 362, 10625,34323,466,
+ 34322,34324,34326,350, 565, 34327,34329,362, 350, 34335,2521, 34336,1108, 34339,1020, 34340,1998, 34318,34319,317, 34320,29456,351, 362, 10625,34323,466,
6203, 396, 8178, 34325,317, 349, 439, 14251,34328,345, 10471,317, 34330,34331,34333,362, 8488, 34332,34334,317, 34337,4738, 404, 34338,351, 2581, 34342,
34345,34348,34349,317, 34352,20883,34343,490, 2134, 34344,34346,34347,551, 350, 11124,365, 317, 34350,24698,34351,363, 14278,1353, 317, 1160, 34353,34354,
317, 34356,34357,5896, 34358,34366,34375,34411,34412,365, 5120, 558, 34419,34425,34431,34432,34433,34443,34446,8765, 34359,317, 34360,34361,34362,34363,34364,
34365,34367,34371,350, 34374,1943, 396, 34368,34369,34370,317, 34372,356, 34373,317, 10471,363, 34376,4872, 363, 34381,34404,34405,34408,317, 34377,34378,
34379,34380,317, 433, 345, 4268, 34382,7990, 34400,34402,5226, 34383,34399,317, 317, 332, 1347, 34384,34390,34393,4783, 34397,7821, 34385,34386,34387,34388,
- 34389,34391,34392,10680,5225, 356, 3726, 3725, 317, 34394,317, 34395,34396,34398,34401,317, 317, 2546, 317, 317, 34403,6670, 7865, 15193,317, 34406,5120,
- 34407,2546, 6514, 317, 317, 317, 34409,34410,343, 317, 317, 2163, 350, 5105, 34413,34414,317, 317, 7523, 34415,34417,34416,434, 317, 34418,6228, 345,
- 539, 34420,34423,34424,384, 1943, 317, 34421,34422,6486, 490, 317, 332, 10820,317, 34426,393, 10389,1459, 34428,345, 34429,34427,317, 34430,7672, 490,
- 380, 350, 363, 9265, 34434,596, 9937, 34435,34437,350, 332, 34441,1345, 14905,380, 5241, 1345, 317, 18333,34436,382, 317, 427, 2171, 1347, 317, 6021,
+ 34389,34391,34392,10680,5225, 356, 3726, 3725, 317, 34394,317, 34395,34396,34398,34401,317, 317, 2546, 317, 317, 34403,6670, 7865, 15193,317, 34406,5120,
+ 34407,2546, 6514, 317, 317, 317, 34409,34410,343, 317, 317, 2163, 350, 5105, 34413,34414,317, 317, 7523, 34415,34417,34416,434, 317, 34418,6228, 345,
+ 539, 34420,34423,34424,384, 1943, 317, 34421,34422,6486, 490, 317, 332, 10820,317, 34426,393, 10389,1459, 34428,345, 34429,34427,317, 34430,7672, 490,
+ 380, 350, 363, 9265, 34434,596, 9937, 34435,34437,350, 332, 34441,1345, 14905,380, 5241, 1345, 317, 18333,34436,382, 317, 427, 2171, 1347, 317, 6021,
34438,317, 34439,2571, 317, 317, 34440,363, 34442,317, 34444,34445,382, 317, 5438, 2537, 34448,34449,34452,34455,34462,356, 34463,34466,34474,34478,34490,
34495,12084,28878,34450,34451,401, 34453,34454,1345, 404, 370, 34456,34457,363, 2348, 34458,34459,34460,2510, 34461,317, 7560, 1347, 34464,317, 5488, 34465,
949, 8180, 317, 31615,34467,34471,34468,351, 34469,34470,317, 7560, 5483, 345, 34472,34473,406, 10271,34475,34476,34477,2058, 34479,34480,34482,28571,34485,
- 317, 7184, 317, 34481,363, 637, 24272,317, 317, 633, 633, 24657,2163, 343, 34483,34484,401, 5841, 5793, 34486,34489,5891, 25135,317, 345, 317, 317,
+ 317, 7184, 317, 34481,363, 637, 24272,317, 317, 633, 633, 24657,2163, 343, 34483,34484,401, 5841, 5793, 34486,34489,5891, 25135,317, 345, 317, 317,
317, 34487,34488,317, 5891, 317, 14039,34491,34493,34494,34492,28921,34496,34497,551, 15213,3125, 350, 34499,34500,381, 2322, 34502,34511,34514,34515,34518,
- 1020, 34519,34521,34524,31772,34526,34531,34546,34548,10542,34553,34562,34568,34574,34575,34577,34579,317, 34503,7492, 25386,362, 34504,21617,34506,34508,2355,
- 34505,317, 363, 317, 345, 6318, 317, 317, 404, 34507,317, 5223, 345, 34509,34510,27177,34512,34513,317, 317, 1347, 332, 1108, 371, 7850, 3648, 7850,
+ 1020, 34519,34521,34524,31772,34526,34531,34546,34548,10542,34553,34562,34568,34574,34575,34577,34579,317, 34503,7492, 25386,362, 34504,21617,34506,34508,2355,
+ 34505,317, 363, 317, 345, 6318, 317, 317, 404, 34507,317, 5223, 345, 34509,34510,27177,34512,34513,317, 317, 1347, 332, 1108, 371, 7850, 3648, 7850,
317, 34516,34517,501, 345, 362, 382, 317, 553, 343, 5241, 1109, 317, 370, 34520,1881, 2551, 34522,578, 34523,7651, 13201,317, 28376,34525,317, 10561,
- 317, 536, 34527,450, 34528,34530,317, 26076,356, 390, 34529,34532,34538,34540,2271, 7389, 34543,317, 34544,317, 6318, 34533,317, 317, 317, 34534,317,
- 317, 317, 5840, 345, 1160, 34535,16218,5488, 427, 5488, 34536,34537,34539,317, 34541,34542,317, 332, 5097, 34545,2117, 34547,13960,371, 343, 363, 356,
+ 317, 536, 34527,450, 34528,34530,317, 26076,356, 390, 34529,34532,34538,34540,2271, 7389, 34543,317, 34544,317, 6318, 34533,317, 317, 317, 34534,317,
+ 317, 317, 5840, 345, 1160, 34535,16218,5488, 427, 5488, 34536,34537,34539,317, 34541,34542,317, 332, 5097, 34545,2117, 34547,13960,371, 343, 363, 356,
343, 34549,490, 578, 317, 6195, 34550,34551,4591, 34552,34554,867, 34556,34558,356, 34555,317, 2219, 351, 390, 34557,437, 1160, 317, 350, 34559,34560,
- 34561,5626, 390, 34563,363, 34565,34564,14991,362, 5332, 1020, 34566,343, 9938, 350, 363, 34567,317, 5897, 8948, 34569,34570,343, 501, 350, 350, 363,
- 34571,34573,2261, 317, 317, 6831, 7949, 317, 34572,390, 11488,490, 16992,34576,2298, 363, 345, 22252,16934,34578,390, 343, 380, 34581,34582,34585,6917,
- 34588,343, 34589,350, 34590,34592,34595,34601,34583,34584,343, 5088, 34586,34587,371, 33963,34591,34593,2024, 6917, 350, 317, 17462,34594,34596,34599,404,
+ 34561,5626, 390, 34563,363, 34565,34564,14991,362, 5332, 1020, 34566,343, 9938, 350, 363, 34567,317, 5897, 8948, 34569,34570,343, 501, 350, 350, 363,
+ 34571,34573,2261, 317, 317, 6831, 7949, 317, 34572,390, 11488,490, 16992,34576,2298, 363, 345, 22252,16934,34578,390, 343, 380, 34581,34582,34585,6917,
+ 34588,343, 34589,350, 34590,34592,34595,34601,34583,34584,343, 5088, 34586,34587,371, 33963,34591,34593,2024, 6917, 350, 317, 17462,34594,34596,34599,404,
34600,381, 332, 34597,34598,382, 20985,34602,34603,34604,5126, 34606,34608,34609,5840, 351, 34611,34612,34616,34619,34620,34621,34622,6309, 34623,34624,34626,
- 34635,34636,34607,317, 343, 32606,2277, 1230, 384, 2369, 34610,317, 428, 4591, 362, 2510, 34613,34614,34615,34617,34618,2402, 363, 5087, 351, 412, 363,
+ 34635,34636,34607,317, 343, 32606,2277, 1230, 384, 2369, 34610,317, 428, 4591, 362, 2510, 34613,34614,34615,34617,34618,2402, 363, 5087, 351, 412, 363,
1020, 2037, 433, 2108, 5091, 5840, 4738, 5159, 34625,427, 34627,34629,343, 362, 317, 317, 34631,7949, 34628,1347, 317, 34630,317, 34632,34633,34634,13611,
34637,350, 34639,317, 317, 34640,34642,2070, 466, 34643,490, 2288, 34644,317, 34645,34647,5401, 2567, 382, 34648,27295,317, 32071,2357, 362, 2509, 34651,
34653,34657,15221,34659,34667,34696,27679,34697,25078,34700,34701,34702,34705,34654,34656,34655,34656,34658,351, 6590, 34660,34662,34663,17216,607, 34661,10130,
396, 34664,34666,34665,34668,34686,34692,34694,3611, 30196,34669,34671,396, 34674,34679,1351, 34680,34684,34670,34672,34673,34675,34676,34677,34678,34681,34682,
34683,34685,351, 1108, 317, 34687,34688,3869, 317, 34689,17236,2815, 34690,6996, 672, 34691,317, 396, 6222, 317, 1267, 1615, 34693,34695,1637, 19082,34698,
34699,370, 34703,34704,34706,34708,34707,34710,34711,317, 34712,317, 34713,34715,34737,34763,34778,34780,34788,34804,34857,34866,34868,9875, 19106,565, 34716,
- 34722,317, 34723,3688, 34724,351, 34726,34728,34729,34730,34717,34718,34719,34720,34721,34725,365, 1030, 317, 5223, 5419, 5126, 2035, 5120, 34727,362, 418,
+ 34722,317, 34723,3688, 34724,351, 34726,34728,34729,34730,34717,34718,34719,34720,34721,34725,365, 1030, 317, 5223, 5419, 5126, 2035, 5120, 34727,362, 418,
34731,34732,34734,2210, 34733,1444, 355, 365, 34735,317, 34736,34738,34739,34753,34754,34755,19096,34758,34761,363, 34740,34741,1266, 34742,34744,34746,34749,
34743,34745,34747,608, 34748,34750,34751,34752,34756,34757,351, 367, 34759,34760,19112,1863, 545, 34762,317, 34764,34769,15600,5955, 381, 34770,34774,25055,
490, 34765,34766,34767,34768,317, 6388, 34771,34772,34773,34775,317, 1020, 362, 34776,34777,2206, 17197,34779,34781,34782,34783,34784,34785,34786,34787,34789,
@@ -8469,368 +8464,368 @@ static const unsigned int ChildLocs[185261] =
34855,34806,34807,34808,34809,390, 34810,14458,34812,34813,34816,34814,34815,949, 34817,34818,34823,34824,34825,317, 34819,18854,34821,34820,34822,34826,34827,
34828,1863, 317, 34830,34832,34833,34834,34836,34843,34837,34838,34839,34842,34840,34841,3037, 31706,34845,34848,34846,34847,390, 34849,34851,34852,3557, 34853,
19112,34854,19112,317, 34856,34858,34859,34860,7672, 34865,6623, 11539,317, 9549, 317, 34861,34862,34863,2077, 12696,516, 370, 362, 363, 34864,317, 22176,
- 317, 2174, 10632,31673,490, 34867,412, 367, 427, 34869,34875,34876,34877,34870,34871,34872,34873,34874,34878,34879,34937,34958,34959,34961,34973,34978,3884,
+ 317, 2174, 10632,31673,490, 34867,412, 367, 427, 34869,34875,34876,34877,34870,34871,34872,34873,34874,34878,34879,34937,34958,34959,34961,34973,34978,3884,
34993,34994,35054,35065,35089,35113,35117,35145,35153,35164,35179,35186,35187,34880,2211, 3726, 34888,34891,34901,317, 317, 34930,34933,2551, 8735, 34881,34882,
6517, 34884,7981, 332, 2272, 34883,5570, 6402, 2537, 5866, 34885,34886,343, 8766, 6993, 2272, 8594, 34887,2211, 317, 6402, 2715, 34889,34890,6993, 34892,34895,
34897,34898,34893,6993, 34894,1189, 5428, 25950,317, 2272, 5570, 34896,21091,2035, 34899,34900,2142, 490, 34902,34904,34907,6486, 34910,34911,34914,34915,34917,
34926,34928,23695,34903,34905,2381, 9301, 34906,8735, 34908,34909,34912,34913,17782,348, 332, 34916,490, 13559,34918,34921,34924,34925,34919,34920,8937, 34922,
27954,12949,34923,7384, 317, 2715, 490, 34927,2715, 317, 476, 21094,34929,34931,34932,34934,34935,17782,34936,17782,332, 3503, 7657, 34938,34939,34945,34949,
2022, 2037, 34951,34955,490, 5624, 317, 551, 34940,34941,343, 34943,4980, 317, 345, 388, 317, 317, 34942,34944,34946,34948,317, 34947,34950,363, 34952,
- 34953,317, 34954,34956,34957,317, 2222, 11280,867, 17206,34960,4980, 539, 2022, 2022, 5173, 5055, 34941,33343,34962,371, 2087, 350, 34963,380, 34965,2219,
- 34966,34969,34972,12731,350, 350, 34964,2521, 605, 15772,317, 317, 5159, 34967,343, 34968,362, 5138, 381, 2219, 2108, 2108, 466, 28586,34970,466, 350,
- 34971,317, 472, 7949, 362, 317, 317, 363, 4738, 350, 34974,8948, 34976,317, 551, 10476,34975,6354, 34977,466, 317, 34979,34984,34986,317, 34991,338,
+ 34953,317, 34954,34956,34957,317, 2222, 11280,867, 17206,34960,4980, 539, 2022, 2022, 5173, 5055, 34941,33343,34962,371, 2087, 350, 34963,380, 34965,2219,
+ 34966,34969,34972,12731,350, 350, 34964,2521, 605, 15772,317, 317, 5159, 34967,343, 34968,362, 5138, 381, 2219, 2108, 2108, 466, 28586,34970,466, 350,
+ 34971,317, 472, 7949, 362, 317, 317, 363, 4738, 350, 34974,8948, 34976,317, 551, 10476,34975,6354, 34977,466, 317, 34979,34984,34986,317, 34991,338,
2142, 33936,8906, 34980,34981,317, 381, 5689, 34982,10446,34983,351, 34985,317, 2142, 34987,16651,34988,34990,34989,466, 317, 8603, 317, 351, 34992,34995,
34997,35003,35009,35015,35016,35019,35022,35024,35026,35028,35044,350, 21037,35047,35050,35051,35053,1020, 550, 2402, 317, 5120, 34996,365, 3284, 351, 34998,
- 10533,35002,590, 34999,317, 317, 35000,317, 35001,317, 317, 317, 4980, 23256,2261, 35004,2271, 35006,351, 35005,35007,345, 35008,381, 9170, 35010,466,
+ 10533,35002,590, 34999,317, 317, 35000,317, 35001,317, 317, 317, 4980, 23256,2261, 35004,2271, 35006,351, 35005,35007,345, 35008,381, 9170, 35010,466,
350, 35014,8301, 317, 317, 12287,317, 35011,362, 35012,35013,356, 34332,35017,35018,35020,351, 381, 23691,35021,317, 427, 35023,418, 27199,6831, 35025,
317, 35027,2551, 2551, 317, 317, 35029,35031,35032,554, 35036,35040,35041,35042,35043,15130,317, 35030,356, 11632,343, 4952, 317, 35033,35034,35035,11962,
- 317, 2271, 15952,35037,16989,35038,1347, 6600, 362, 1020, 20638,317, 23303,5332, 35039,1135, 317, 11504,356, 363, 2058, 317, 363, 351, 466, 11648,371,
+ 317, 2271, 15952,35037,16989,35038,1347, 6600, 362, 1020, 20638,317, 23303,5332, 35039,1135, 317, 11504,356, 363, 2058, 317, 363, 351, 466, 11648,371,
418, 317, 317, 418, 2715, 363, 6531, 35045,351, 35046,317, 2027, 35048,363, 35049,9289, 370, 545, 7618, 363, 35052,356, 351, 6532, 351, 35055,35056,
35057,35058,35061,35064,343, 380, 380, 343, 381, 4984, 35059,35060,35062,35063,35066,35067,35071,35072,317, 35076,35077,35082,35084,35086,35087,550, 35088,
- 2211, 356, 351, 5159, 317, 35068,35069,35070,2110, 371, 317, 317, 5792, 2110, 317, 35073,317, 554, 9392, 596, 35075,596, 317, 380, 35074,637, 1300,
- 317, 633, 633, 12605,2108, 317, 35078,35079,35080,317, 1160, 370, 2715, 317, 35081,317, 17543,345, 10619,35083,490, 9444, 11716,35085,370, 351, 350,
- 8682, 317, 317, 7911, 380, 35090,35093,317, 35094,490, 35095,35096,35097,35100,35104,35107,35091,35092,9422, 6993, 490, 31015,35098,404, 490, 35099,7657,
+ 2211, 356, 351, 5159, 317, 35068,35069,35070,2110, 371, 317, 317, 5792, 2110, 317, 35073,317, 554, 9392, 596, 35075,596, 317, 380, 35074,637, 1300,
+ 317, 633, 633, 12605,2108, 317, 35078,35079,35080,317, 1160, 370, 2715, 317, 35081,317, 17543,345, 10619,35083,490, 9444, 11716,35085,370, 351, 350,
+ 8682, 317, 317, 7911, 380, 35090,35093,317, 35094,490, 35095,35096,35097,35100,35104,35107,35091,35092,9422, 6993, 490, 31015,35098,404, 490, 35099,7657,
35101,7657, 35103,35102,345, 34789,365, 7916, 35105,35106,35108,317, 35111,35109,34887,7142, 35110,35112,317, 35114,18661,35115,351, 343, 31987,35116,35118,
5626, 35123,35124,13319,35126,35127,35128,35134,35136,596, 35142,35143,35144,317, 35119,5238, 356, 35120,1962, 35122,317, 35121,10471,4984, 381, 2510, 22711,
350, 35125,5205, 5043, 345, 490, 2142, 390, 317, 649, 35129,35132,35133,23821,317, 35130,35131,1347, 382, 390, 317, 317, 2060, 633, 4280, 317, 35135,
- 317, 351, 35137,35139,343, 35141,35138,317, 35140,317, 363, 317, 363, 317, 20487,35146,35147,9549, 4984, 35149,35150,9554, 2203, 35152,317, 551, 350,
- 5865, 35148,2551, 351, 35151,380, 466, 350, 35154,35155,27913,35156,35157,35159,35163,596, 490, 3079, 367, 35158,363, 35160,3648, 35161,12712,317, 450,
- 345, 1358, 317, 35162,363, 13611,3361, 2541, 35165,31972,35168,35170,489, 35171,35172,35166,35167,35169,30859,7567, 17462,35173,35176,35174,35175,35177,317,
+ 317, 351, 35137,35139,343, 35141,35138,317, 35140,317, 363, 317, 363, 317, 20487,35146,35147,9549, 4984, 35149,35150,9554, 2203, 35152,317, 551, 350,
+ 5865, 35148,2551, 351, 35151,380, 466, 350, 35154,35155,27913,35156,35157,35159,35163,596, 490, 3079, 367, 35158,363, 35160,3648, 35161,12712,317, 450,
+ 345, 1358, 317, 35162,363, 13611,3361, 2541, 35165,31972,35168,35170,489, 35171,35172,35166,35167,35169,30859,7567, 17462,35173,35176,35174,35175,35177,317,
35178,35180,35181,362, 35185,35178,35182,35183,343, 35184,1347, 317, 390, 3987, 501, 1992, 317, 11347,35188,35192,35193,35189,6228, 317, 633, 2631, 35190,
- 317, 317, 35191,551, 317, 332, 317, 317, 35195,35196,35199,35203,35206,35213,35219,35230,35234,35235,35236,35238,35240,35242,35197,35198,35200,35202,9171,
+ 317, 317, 35191,551, 317, 332, 317, 317, 35195,35196,35199,35203,35206,35213,35219,35230,35234,35235,35236,35238,35240,35242,35197,35198,35200,35202,9171,
1791, 35201,343, 6831, 35204,35205,35207,35208,427, 35209,35210,35211,35212,35214,35217,35215,35216,35218,35220,35221,35223,35225,35229,35222,35224,35226,35227,
35228,35231,35233,35232,13498,317, 675, 883, 35237,35239,35241,35243,35247,6222, 35244,35245,35246,35248,35249,35250,35252,35253,5211, 18774,35254,381, 35322,
35323,35356,35375,35422,35426,35452,13777,35255,35256,35259,7651, 35270,363, 35273,35277,5226, 35280,35282,35301,35302,35309,32703,35311,35318,35319,5687, 20297,
- 317, 35257,19617,35258,2510, 317, 345, 317, 5053, 5626, 32327,13226,10021,35260,35261,6021, 2022, 345, 35265,1358, 35267,35268,1999, 428, 35262,317, 6207,
- 4925, 345, 35263,35264,363, 35266,1020, 6318, 35269,35271,35272,345, 35274,351, 35275,351, 2845, 35276,4591, 35278,35279,317, 20512,5037, 16679,12696,363,
+ 317, 35257,19617,35258,2510, 317, 345, 317, 5053, 5626, 32327,13226,10021,35260,35261,6021, 2022, 345, 35265,1358, 35267,35268,1999, 428, 35262,317, 6207,
+ 4925, 345, 35263,35264,363, 35266,1020, 6318, 35269,35271,35272,345, 35274,351, 35275,351, 2845, 35276,4591, 35278,35279,317, 20512,5037, 16679,12696,363,
317, 10408,35281,466, 404, 345, 35283,35284,351, 2024, 35286,7473, 350, 35288,605, 27222,35290,35297,35299,26788,317, 35285,371, 317, 381, 2402, 35287,
35289,412, 317, 35291,35292,35293,2024, 7401, 27814,12154,35294,350, 363, 317, 35296,317, 867, 479, 317, 317, 317, 381, 317, 35295,1588, 15961,35298,
404, 35300,565, 2222, 11040,35303,35304,343, 317, 350, 35308,7948, 343, 317, 35305,345, 35306,490, 345, 35307,363, 1347, 35310,5570, 1358, 35312,35313,
- 35314,35315,35316,35317,317, 35320,15058,350, 35321,12523,317, 350, 317, 317, 5836, 35324,35325,35326,8022, 35327,16623,35329,35332,35334,35354,317, 2184,
- 20146,404, 404, 2156, 317, 4965, 11146,35328,317, 404, 10629,35330,317, 12216,1108, 596, 35331,351, 362, 11652,35333,5142, 12523,35335,35337,35343,9624,
+ 35314,35315,35316,35317,317, 35320,15058,350, 35321,12523,317, 350, 317, 317, 5836, 35324,35325,35326,8022, 35327,16623,35329,35332,35334,35354,317, 2184,
+ 20146,404, 404, 2156, 317, 4965, 11146,35328,317, 404, 10629,35330,317, 12216,1108, 596, 35331,351, 362, 11652,35333,5142, 12523,35335,35337,35343,9624,
35345,9609, 2171, 35346,35347,35349,12417,35351,35352,6089, 35336,6552, 35338,35340,35342,35339,35341,35344,382, 317, 1011, 317, 8506, 363, 28836,317, 35348,
- 35350,35353,605, 373, 2568, 35355,5105, 317, 35357,35359,35361,35362,35364,35366,490, 35371,35373,596, 35374,350, 35358,501, 35360,466, 3987, 1347, 317,
- 3987, 317, 350, 35363,490, 345, 35365,3284, 317, 317, 6855, 35367,35368,35369,35370,363, 317, 317, 404, 35372,317, 13905,1077, 14644,317, 514, 3284,
- 16398,35376,35384,35391,35392,396, 35394,1588, 35395,5872, 35397,317, 35398,35405,35407,35413,35418,35420,356, 35377,35379,7095, 35382,35378,317, 24623,370,
- 317, 19922,317, 35380,35381,35383,317, 351, 345, 363, 35385,1338, 35386,1902, 35387,35388,350, 35389,35390,363, 2108, 12803,35393,317, 35396,3284, 381,
+ 35350,35353,605, 373, 2568, 35355,5105, 317, 35357,35359,35361,35362,35364,35366,490, 35371,35373,596, 35374,350, 35358,501, 35360,466, 3987, 1347, 317,
+ 3987, 317, 350, 35363,490, 345, 35365,3284, 317, 317, 6855, 35367,35368,35369,35370,363, 317, 317, 404, 35372,317, 13905,1077, 14644,317, 514, 3284,
+ 16398,35376,35384,35391,35392,396, 35394,1588, 35395,5872, 35397,317, 35398,35405,35407,35413,35418,35420,356, 35377,35379,7095, 35382,35378,317, 24623,370,
+ 317, 19922,317, 35380,35381,35383,317, 351, 345, 363, 35385,1338, 35386,1902, 35387,35388,350, 35389,35390,363, 2108, 12803,35393,317, 35396,3284, 381,
1345, 317, 7657, 317, 35399,1160, 35400,345, 35401,35404,345, 35402,2184, 35403,356, 5225, 345, 501, 35406,6412, 448, 12925,350, 7463, 317, 412, 35408,
35410,35411,35409,21162,345, 35412,2108, 16129,35414,35415,35416,35417,8136, 35419,351, 5295, 35421,356, 33962,490, 11831,12987,317, 35423,35424,35425,35427,
35430,317, 35444,2381, 466, 17136,22641,5055, 7261, 35446,35428,35429,35431,35432,35433,35434,35439,35441,35435,35436,35437,35438,35440,2270, 317, 2261, 35442,
35443,35445,317, 317, 35447,35450,317, 8272, 35451,35448,35449,574, 15113,380, 317, 317, 345, 35453,2290, 35465,35468,35454,2272, 35457,401, 35455,35456,
363, 380, 501, 35458,35459,35463,35460,35461,35462,35464,10709,35466,345, 1358, 317, 35467,351, 35469,35470,35471,317, 596, 2413, 35473,390, 35474,35476,
35478,35479,1044, 439, 35475,30944,3153, 1020, 35477,35480,317, 35482,35485,607, 35494,35498,35500,390, 345, 35508,35483,35484,2533, 4591, 35486,418, 35487,
- 35493,317, 2184, 22578,490, 35488,35490,35489,35491,35492,371, 10351,370, 35495,1588, 35496,35497,1078, 35499,971, 5570, 2280, 35501,35502,35507,490, 1347,
+ 35493,317, 2184, 22578,490, 35488,35490,35489,35491,35492,371, 10351,370, 35495,1588, 35496,35497,1078, 35499,971, 5570, 2280, 35501,35502,35507,490, 1347,
371, 363, 35503,362, 35504,35505,35506,345, 6466, 35509,2585, 14132,35510,35511,3182, 35155,35512,35514,35531,35557,35565,35615,35637,35644,35653,35659,35666,
- 35669,35670,35748,35759,35798,35864,35875,35924,35943,35985,36007,36020,36025,36028,2188, 15016,35513,35515,21618,11089,35516,1347, 35528,35529,1230, 543, 2156,
- 35517,2571, 35521,35522,35525,35518,35519,35520,35523,35524,35526,35527,8301, 35530,11089,2022, 362, 317, 2845, 35532,35536,35537,35548,35551,317, 35553,317,
+ 35669,35670,35748,35759,35798,35864,35875,35924,35943,35985,36007,36020,36025,36028,2188, 15016,35513,35515,21618,11089,35516,1347, 35528,35529,1230, 543, 2156,
+ 35517,2571, 35521,35522,35525,35518,35519,35520,35523,35524,35526,35527,8301, 35530,11089,2022, 362, 317, 2845, 35532,35536,35537,35548,35551,317, 35553,317,
317, 35533,317, 35534,35535,317, 317, 19798,19798,15138,19565,5120, 317, 15845,363, 35538,35547,2247, 2033, 1325, 35539,35540,35541,35542,35543,35544,35545,
35546,35549,35550,6419, 1347, 11147,6594, 35552,3078, 35554,35555,2033, 35556,35558,371, 35559,35563,11086,1720, 596, 30444,345, 35560,35561,343, 35562,11034,
- 381, 7408, 1444, 35564,2022, 949, 1087, 35566,35569,35572,35578,35580,11089,35586,1020, 35592,35596,2391, 35597,35599,35601,35603,35608,35609,363, 35611,2074,
- 32769,35567,1325, 2177, 35568,379, 345, 35570,2571, 35571,317, 5917, 381, 317, 35573,35576,382, 35574,356, 30301,381, 2036, 35575,317, 35577,7990, 1060,
+ 381, 7408, 1444, 35564,2022, 949, 1087, 35566,35569,35572,35578,35580,11089,35586,1020, 35592,35596,2391, 35597,35599,35601,35603,35608,35609,363, 35611,2074,
+ 32769,35567,1325, 2177, 35568,379, 345, 35570,2571, 35571,317, 5917, 381, 317, 35573,35576,382, 35574,356, 30301,381, 2036, 35575,317, 35577,7990, 1060,
22207,317, 317, 35579,345, 574, 35581,21137,35583,16838,35582,35584,35585,35587,35588,490, 317, 8243, 317, 332, 317, 35589,35590,16059,6326, 35591,35593,
35595,9383, 317, 35594,5836, 317, 363, 2071, 6961, 9859, 345, 35598,5295, 317, 363, 317, 35600,5530, 365, 35602,339, 20015,35604,31644,543, 7073, 35605,
363, 35606,8023, 35607,2719, 343, 8281, 35610,363, 7214, 345, 35612,317, 35613,317, 1109, 35614,35344,35616,35617,35618,35620,466, 10907,35621,11236,35622,
- 35623,35626,35630,35631,2022, 15892,6780, 343, 35619,12711,501, 317, 350, 25453,2568, 350, 1108, 317, 380, 35624,35625,5810, 1999, 35627,27506,466, 343,
- 35628,350, 317, 34972,9075, 317, 35629,390, 1108, 35632,501, 2108, 35633,35636,12731,35634,1358, 362, 35635,317, 4738, 343, 9610, 351, 35638,389, 362,
+ 35623,35626,35630,35631,2022, 15892,6780, 343, 35619,12711,501, 317, 350, 25453,2568, 350, 1108, 317, 380, 35624,35625,5810, 1999, 35627,27506,466, 343,
+ 35628,350, 317, 34972,9075, 317, 35629,390, 1108, 35632,501, 2108, 35633,35636,12731,35634,1358, 362, 35635,317, 4738, 343, 9610, 351, 35638,389, 362,
35640,6309, 35642,404, 4965, 35639,362, 2022, 5608, 362, 9657, 35641,21303,390, 35643,35645,35646,35648,317, 35649,5241, 35650,527, 35651,317, 397, 24122,
317, 1329, 35647,3079, 5055, 2156, 2218, 345, 380, 1459, 1383, 3599, 363, 35652,35654,35656,553, 317, 35658,2184, 35655,317, 317, 2719, 35657,356, 35655,
- 343, 35660,35661,317, 343, 35664,35665,381, 350, 317, 317, 35662,35663,345, 6379, 317, 13498,1915, 2110, 554, 35667,35668,317, 382, 8096, 1999, 370,
- 6195, 317, 35671,35673,35093,35674,35711,35719,35727,35729,35734,35735,35742,35745,11539,35746,35747,317, 8455, 24029,2188, 35672,317, 13553,317, 317, 4949,
- 363, 1266, 35675,35676,35680,35684,35689,35691,35692,35693,350, 35694,35695,35697,35702,412, 35708,4984, 317, 343, 317, 2152, 317, 35677,35678,35679,2117,
- 427, 362, 35681,11411,317, 317, 35682,35683,362, 2063, 9012, 4949, 1345, 4717, 35685,35686,13646,476, 6710, 35687,35688,390, 317, 2222, 35690,22609,479,
- 350, 501, 363, 2152, 1160, 17189,11678,501, 10580,2357, 7662, 2272, 3529, 7672, 7850, 24638,35696,35698,25352,2193, 35699,363, 35701,29521,7590, 10453,317,
+ 343, 35660,35661,317, 343, 35664,35665,381, 350, 317, 317, 35662,35663,345, 6379, 317, 13498,1915, 2110, 554, 35667,35668,317, 382, 8096, 1999, 370,
+ 6195, 317, 35671,35673,35093,35674,35711,35719,35727,35729,35734,35735,35742,35745,11539,35746,35747,317, 8455, 24029,2188, 35672,317, 13553,317, 317, 4949,
+ 363, 1266, 35675,35676,35680,35684,35689,35691,35692,35693,350, 35694,35695,35697,35702,412, 35708,4984, 317, 343, 317, 2152, 317, 35677,35678,35679,2117,
+ 427, 362, 35681,11411,317, 317, 35682,35683,362, 2063, 9012, 4949, 1345, 4717, 35685,35686,13646,476, 6710, 35687,35688,390, 317, 2222, 35690,22609,479,
+ 350, 501, 363, 2152, 1160, 17189,11678,501, 10580,2357, 7662, 2272, 3529, 7672, 7850, 24638,35696,35698,25352,2193, 35699,363, 35701,29521,7590, 10453,317,
35700,317, 15951,351, 28722,14338,35703,35706,35707,9176, 35704,35705,35709,35710,363, 343, 7651, 350, 35712,35714,317, 35716,35718,3967, 9667, 317, 35713,
- 35715,8296, 8296, 363, 35717,317, 317, 5836, 11280,637, 35720,694, 633, 320, 633, 543, 35721,35722,2715, 35724,362, 385, 317, 867, 35726,1999, 7477,
+ 35715,8296, 8296, 363, 35717,317, 317, 5836, 11280,637, 35720,694, 633, 320, 633, 543, 35721,35722,2715, 35724,362, 385, 317, 867, 35726,1999, 7477,
35723,637, 5942, 1909, 633, 317, 35725,317, 35728,651, 1459, 35730,371, 13856,317, 35731,317, 5836, 3079, 390, 35733,343, 317, 317, 317, 24487,35732,
- 5836, 4965, 363, 35736,35737,14223,35738,362, 2391, 35740,427, 35741,317, 1230, 4773, 1230, 351, 35739,317, 317, 418, 317, 317, 10796,35743,1481, 1160,
- 9909, 35744,1109, 5836, 35749,35750,35752,35753,2222, 35754,35756,20237,35758,371, 35751,345, 317, 6648, 317, 345, 317, 1160, 12588,317, 380, 35755,4984,
+ 5836, 4965, 363, 35736,35737,14223,35738,362, 2391, 35740,427, 35741,317, 1230, 4773, 1230, 351, 35739,317, 317, 418, 317, 317, 10796,35743,1481, 1160,
+ 9909, 35744,1109, 5836, 35749,35750,35752,35753,2222, 35754,35756,20237,35758,371, 35751,345, 317, 6648, 317, 345, 317, 1160, 12588,317, 380, 35755,4984,
2533, 317, 35757,317, 35760,355, 35765,35770,35775,35776,35780,35781,35783,35785,35789,5037, 35790,35791,35761,12920,370, 18305,380, 35762,317, 35763,35764,
- 35766,317, 35768,6450, 35767,35769,3529, 13392,12332,1109, 35771,35774,9702, 35772,4987, 1347, 35773,388, 1347, 317, 317, 317, 35777,2110, 35779,35778,317,
- 35782,2381, 450, 5037, 596, 35784,35786,12946,35788,490, 17637,35787,317, 5392, 596, 596, 8296, 351, 6855, 2236, 317, 15313,5943, 35792,35795,35797,490,
- 35793,5392, 35794,5392, 1347, 35796,345, 5392, 6228, 35796,317, 35799,14995,35801,370, 35847,35848,7023, 35851,35855,35856,35859,1345, 35860,35863,35800,343,
+ 35766,317, 35768,6450, 35767,35769,3529, 13392,12332,1109, 35771,35774,9702, 35772,4987, 1347, 35773,388, 1347, 317, 317, 317, 35777,2110, 35779,35778,317,
+ 35782,2381, 450, 5037, 596, 35784,35786,12946,35788,490, 17637,35787,317, 5392, 596, 596, 8296, 351, 6855, 2236, 317, 15313,5943, 35792,35795,35797,490,
+ 35793,5392, 35794,5392, 1347, 35796,345, 5392, 6228, 35796,317, 35799,14995,35801,370, 35847,35848,7023, 35851,35855,35856,35859,1345, 35860,35863,35800,343,
35802,2809, 35805,35806,35807,24120,35809,35810,35814,35818,35820,35821,32606,35823,35824,35827,35830,2272, 35833,35837,35840,35843,1020, 35844,35846,35803,35804,
740, 1271, 343, 2402, 317, 589, 1588, 350, 17219,356, 350, 35808,16602,370, 382, 380, 12815,35811,35813,317, 5897, 35812,35815,6598, 2063, 13320,35816,
- 35817,1347, 605, 2060, 351, 35819,356, 1531, 343, 363, 380, 1999, 34256,373, 343, 35822,22412,404, 363, 2301, 439, 15864,35825,35826,384, 317, 343,
- 1992, 35828,35829,35831,31252,35832,317, 345, 345, 35834,3621, 35835,35836,35838,35839,29510,427, 10592,990, 35841,574, 363, 3646, 35842,1020, 2181, 6166,
- 2809, 349, 35845,2063, 363, 380, 1358, 543, 356, 466, 345, 6227, 317, 343, 35849,35850,317, 317, 18206,317, 437, 35852,35853,362, 35854,7384, 343,
- 4984, 35857,2156, 317, 317, 35858,317, 317, 370, 35861,343, 1020, 13378,317, 317, 317, 35862,317, 362, 317, 317, 317, 7590, 32944,35865,363, 2509,
+ 35817,1347, 605, 2060, 351, 35819,356, 1531, 343, 363, 380, 1999, 34256,373, 343, 35822,22412,404, 363, 2301, 439, 15864,35825,35826,384, 317, 343,
+ 1992, 35828,35829,35831,31252,35832,317, 345, 345, 35834,3621, 35835,35836,35838,35839,29510,427, 10592,990, 35841,574, 363, 3646, 35842,1020, 2181, 6166,
+ 2809, 349, 35845,2063, 363, 380, 1358, 543, 356, 466, 345, 6227, 317, 343, 35849,35850,317, 317, 18206,317, 437, 35852,35853,362, 35854,7384, 343,
+ 4984, 35857,2156, 317, 317, 35858,317, 317, 370, 35861,343, 1020, 13378,317, 317, 317, 35862,317, 362, 317, 317, 317, 7590, 32944,35865,363, 2509,
35873,883, 6693, 13386,18138,35866,35867,35868,1444, 35869,317, 35870,35871,35872,317, 35874,35876,35879,35882,35885,35894,35899,554, 35901,35906,35907,35910,
35912,35915,35917,35920,35921,427, 35922,35923,553, 35877,11198,345, 35878,2261, 35880,19979,35881,317, 1880, 345, 35883,35884,490, 5836, 4984, 12886,35886,
2022, 350, 35890,1160, 363, 35887,35888,35889,317, 7143, 8099, 5295, 317, 35891,35893,35892,35895,35896,317, 35897,35898,317, 2715, 317, 365, 2590, 12062,
- 5120, 317, 5896, 343, 2142, 317, 6002, 18712,348, 10196,35900,1358, 5138, 490, 35902,35903,1992, 317, 345, 5241, 317, 35904,35905,370, 35908,35909,1108,
- 35911,5661, 2369, 418, 34320,317, 35913,35914,6999, 317, 332, 317, 371, 317, 23547,35916,10626,428, 35918,380, 35919,317, 5838, 2271, 2108, 1913, 332,
- 605, 11347,317, 35925,35926,35927,16136,35928,7490, 3078, 35931,362, 15733,35932,35933,35938,35941,35942,317, 1358, 5158, 317, 17469,317, 35929,363, 317,
+ 5120, 317, 5896, 343, 2142, 317, 6002, 18712,348, 10196,35900,1358, 5138, 490, 35902,35903,1992, 317, 345, 5241, 317, 35904,35905,370, 35908,35909,1108,
+ 35911,5661, 2369, 418, 34320,317, 35913,35914,6999, 317, 332, 317, 371, 317, 23547,35916,10626,428, 35918,380, 35919,317, 5838, 2271, 2108, 1913, 332,
+ 605, 11347,317, 35925,35926,35927,16136,35928,7490, 3078, 35931,362, 15733,35932,35933,35938,35941,35942,317, 1358, 5158, 317, 17469,317, 35929,363, 317,
35930,351, 343, 28276,4564, 339, 1999, 1033, 35934,35935,35936,511, 362, 35937,371, 343, 350, 356, 1020, 317, 15821,5223, 9244, 13638,1020, 35939,12705,
5836, 317, 35940,5836, 3429, 384, 35944,35945,35947,35950,35954,35955,35956,35957,35958,35960,35963,9688, 35983,317, 35946,427, 35948,35949,5737, 35951,35952,
35953,332, 317, 2188, 490, 6917, 317, 439, 367, 434, 3987, 381, 1481, 1347, 35959,35961,543, 35962,30992,35964,35965,35973,35974,35975,343, 35976,35977,
- 404, 35978,2381, 10538,35966,317, 35967,450, 35968,35969,35970,35971,35972,15280,2206, 2334, 10093,367, 35979,543, 35980,35981,343, 35982,317, 35984,2410,
+ 404, 35978,2381, 10538,35966,317, 35967,450, 35968,35969,35970,35971,35972,15280,2206, 2334, 10093,367, 35979,543, 35980,35981,343, 35982,317, 35984,2410,
9303, 35986,35987,35989,363, 350, 35992,35996,3361, 35997,343, 36000,36003,36006,317, 35988,343, 343, 11921,317, 590, 2584, 35990,35991,8137, 35993,35994,
- 35995,13190,10820,4925, 10011,479, 363, 16651,362, 23079,35998,35999,16838,539, 384, 367, 2236, 36001,317, 36002,36004,490, 36005,18305,317, 381, 363,
- 36008,36014,36019,317, 317, 36009,36010,317, 317, 36011,14932,466, 25302,36012,317, 36013,5689, 9139, 317, 36015,36016,4984, 36017,36018,345, 365, 595,
- 36021,10533,36022,36023,350, 1347, 36024,380, 1347, 1347, 381, 317, 363, 1358, 363, 36026,332, 490, 14088,2156, 317, 36027,36029,362, 317, 351, 345,
+ 35995,13190,10820,4925, 10011,479, 363, 16651,362, 23079,35998,35999,16838,539, 384, 367, 2236, 36001,317, 36002,36004,490, 36005,18305,317, 381, 363,
+ 36008,36014,36019,317, 317, 36009,36010,317, 317, 36011,14932,466, 25302,36012,317, 36013,5689, 9139, 317, 36015,36016,4984, 36017,36018,345, 365, 595,
+ 36021,10533,36022,36023,350, 1347, 36024,380, 1347, 1347, 381, 317, 363, 1358, 363, 36026,332, 490, 14088,2156, 317, 36027,36029,362, 317, 351, 345,
317, 345, 36032,36033,36034,36035,116, 36218,7149, 117, 36325,554, 118, 119, 36496,36499,36535,36542,379, 2272, 36036,36040,36050,36060,36066,36069,36076,
36078,36083,36085,36087,36088,36104,36164,36171,36182,36188,36191,36207,36208,36213,36037,317, 317, 36038,36039,36041,36043,36044,8948, 36045,6917, 350, 36047,
- 11831,317, 10315,36042,5991, 3999, 317, 317, 15308,5223, 380, 36046,350, 3284, 5836, 3284, 36048,36049,11844,36051,5425, 36052,36056,317, 10317,36053,317,
- 317, 317, 36054,36055,317, 317, 332, 5701, 36057,36058,36059,382, 7834, 7954, 317, 317, 345, 31178,5365, 370, 36061,2024, 36062,10223,2022, 12803,3284,
+ 11831,317, 10315,36042,5991, 3999, 317, 317, 15308,5223, 380, 36046,350, 3284, 5836, 3284, 36048,36049,11844,36051,5425, 36052,36056,317, 10317,36053,317,
+ 317, 317, 36054,36055,317, 317, 332, 5701, 36057,36058,36059,382, 7834, 7954, 317, 317, 345, 31178,5365, 370, 36061,2024, 36062,10223,2022, 12803,3284,
36063,36065,317, 317, 317, 317, 317, 8488, 317, 345, 4267, 17335,382, 1481, 345, 36064,5324, 5502, 428, 7852, 350, 36067,25781,343, 317, 350, 36068,
2033, 36070,36071,14680,36075,36072,332, 36074,2022, 36073,317, 356, 466, 363, 317, 345, 36077,317, 317, 404, 36079,317, 317, 317, 317, 36082,36080,
317, 317, 317, 36081,2566, 317, 2086, 317, 36084,343, 15608,350, 343, 317, 317, 6394, 36086,7785, 5836, 317, 36089,36090,317, 36091,554, 11347,36093,
- 36094,36101,36103,12860,490, 4949, 472, 317, 317, 363, 36092,317, 370, 33256,36095,9450, 36100,1347, 36096,36097,36098,36099,5418, 345, 381, 10480,2210,
+ 36094,36101,36103,12860,490, 4949, 472, 317, 317, 363, 36092,317, 370, 33256,36095,9450, 36100,1347, 36096,36097,36098,36099,5418, 345, 381, 10480,2210,
381, 36102,317, 5419, 317, 345, 36105,36107,36108,36139,9624, 36140,8223, 36142,490, 4962, 490, 36146,36148,317, 6601, 5138, 36152,36154,36156,36162,36163,
- 19707,362, 317, 5201, 36106,32950,2163, 317, 317, 36109,36110,36111,36116,36118,36119,36122,5628, 7328, 36125,36128,36130,36131,36134,317, 36138,5573, 317,
- 16278,7590, 2163, 36112,36113,36114,36115,36117,11874,12485,1347, 317, 7214, 5223, 351, 36120,6598, 36121,36123,36124,393, 4980, 36126,36127,317, 2551, 490,
- 14558,381, 23034,36129,18941,4437, 317, 19791,317, 36132,36133,1588, 5055, 36135,36136,396, 36137,18104,2317, 6402, 317, 317, 317, 36141,10854,317, 317,
- 36143,36144,36145,332, 545, 332, 363, 36147,345, 427, 317, 36149,36151,36150,10641,370, 36153,317, 317, 9109, 36155,15058,15983,7866, 317, 5037, 317,
- 7386, 36157,36158,1347, 36159,13323,5536, 36160,490, 36161,24070,578, 5687, 363, 605, 36165,36167,36170,4045, 36166,317, 28210,8000, 36168,36169,317, 2156,
+ 19707,362, 317, 5201, 36106,32950,2163, 317, 317, 36109,36110,36111,36116,36118,36119,36122,5628, 7328, 36125,36128,36130,36131,36134,317, 36138,5573, 317,
+ 16278,7590, 2163, 36112,36113,36114,36115,36117,11874,12485,1347, 317, 7214, 5223, 351, 36120,6598, 36121,36123,36124,393, 4980, 36126,36127,317, 2551, 490,
+ 14558,381, 23034,36129,18941,4437, 317, 19791,317, 36132,36133,1588, 5055, 36135,36136,396, 36137,18104,2317, 6402, 317, 317, 317, 36141,10854,317, 317,
+ 36143,36144,36145,332, 545, 332, 363, 36147,345, 427, 317, 36149,36151,36150,10641,370, 36153,317, 317, 9109, 36155,15058,15983,7866, 317, 5037, 317,
+ 7386, 36157,36158,1347, 36159,13323,5536, 36160,490, 36161,24070,578, 5687, 363, 605, 36165,36167,36170,4045, 36166,317, 28210,8000, 36168,36169,317, 2156,
343, 5700, 382, 343, 427, 317, 317, 20331,24322,317, 351, 36172,36173,5273, 36174,36181,363, 1588, 384, 384, 317, 5570, 8136, 36175,5891, 36178,36179,
- 317, 36180,317, 317, 427, 36176,36177,11229,1345, 5663, 350, 317, 36183,36184,36186,36187,317, 317, 10891,317, 317, 4984, 36185,10878,381, 317, 4040,
+ 317, 36180,317, 317, 427, 36176,36177,11229,1345, 5663, 350, 317, 36183,36184,36186,36187,317, 317, 10891,317, 317, 4984, 36185,10878,381, 317, 4040,
12464,511, 363, 2142, 363, 36189,13392,2515, 317, 362, 317, 551, 5898, 36190,36192,36193,36201,15732,2163, 1588, 1160, 332, 5223, 317, 36194,36196,36197,
5223, 36198,10820,11263,36195,18885,13269,317, 317, 439, 36199,36200,8234, 317, 36202,36203,4984, 317, 317, 317, 317, 36204,1325, 36205,36206,36209,36210,
404, 9450, 3599, 389, 511, 36211,36212,13650,433, 428, 6195, 5684, 317, 9124, 36214,2035, 13262,36215,382, 36216,36217,365, 36219,36221,36226,36227,36228,
- 36229,36278,36279,36287,13376,36292,36296,605, 36304,36307,36310,36311,36315,36316,36220,388, 317, 5661, 317, 36222,36224,316, 16220,36223,466, 363, 317,
- 6228, 362, 24398,2066, 7401, 370, 362, 36225,2272, 34185,2078, 5883, 35822,363, 350, 317, 332, 317, 362, 317, 16310,351, 317, 343, 36230,36233,5661,
+ 36229,36278,36279,36287,13376,36292,36296,605, 36304,36307,36310,36311,36315,36316,36220,388, 317, 5661, 317, 36222,36224,316, 16220,36223,466, 363, 317,
+ 6228, 362, 24398,2066, 7401, 370, 362, 36225,2272, 34185,2078, 5883, 35822,363, 350, 317, 332, 317, 362, 317, 16310,351, 317, 343, 36230,36233,5661,
317, 36234,317, 317, 12189,10876,36277,36231,317, 317, 36232,317, 8301, 2063, 317, 36235,14278,1267, 36236,1615, 1353, 4243, 1025, 1353, 36237,36240,36245,
36247,36249,36250,36251,36253,36257,36258,36263,317, 36264,36265,5956, 36268,36272,1060, 5037, 36273,317, 380, 317, 36238,36239,36241,36243,17889,2236, 36244,
36242,371, 427, 317, 381, 11678,317, 382, 390, 36246,372, 317, 36248,382, 382, 317, 1345, 381, 5037, 2156, 32998,6598, 551, 317, 36252,370, 36254,
- 4563, 36256,36255,317, 317, 7506, 550, 990, 4965, 382, 390, 36259,36261,36262,605, 363, 317, 36260,317, 5746, 478, 1383, 1347, 381, 317, 317, 396,
+ 4563, 36256,36255,317, 317, 7506, 550, 990, 4965, 382, 390, 36259,36261,36262,605, 363, 317, 36260,317, 5746, 478, 1383, 1347, 381, 317, 317, 396,
471, 317, 363, 23950,350, 371, 4943, 36266,36267,2369, 381, 439, 36269,24775,7942, 36270,36271,867, 4949, 1020, 2272, 3076, 490, 5841, 19466,36274,36276,
- 9768, 16059,343, 36275,317, 1347, 12563,317, 317, 317, 9289, 651, 649, 36280,36281,36282,36283,36286,345, 14062,1588, 36284,5836, 36285,3529, 3284, 1160,
+ 9768, 16059,343, 36275,317, 1347, 12563,317, 317, 317, 9289, 651, 649, 36280,36281,36282,36283,36286,345, 14062,1588, 36284,5836, 36285,3529, 3284, 1160,
4984, 390, 1347, 345, 363, 6412, 350, 350, 36288,357, 317, 36289,36290,343, 317, 317, 10537,351, 36291,350, 317, 12731,36293,36294,36295,317, 12588,
- 2219, 317, 351, 20684,2033, 4738, 36297,36300,381, 3987, 345, 36302,7865, 4952, 36303,27906,2317, 5037, 1230, 317, 342, 36298,317, 1347, 36299,363, 2510,
- 596, 5105, 36301,351, 2219, 332, 36305,332, 8392, 36306,427, 883, 2117, 15745,30881,1160, 21245,5105, 2222, 490, 317, 2108, 11688,36308,4738, 36309,350,
+ 2219, 317, 351, 20684,2033, 4738, 36297,36300,381, 3987, 345, 36302,7865, 4952, 36303,27906,2317, 5037, 1230, 317, 342, 36298,317, 1347, 36299,363, 2510,
+ 596, 5105, 36301,351, 2219, 332, 36305,332, 8392, 36306,427, 883, 2117, 15745,30881,1160, 21245,5105, 2222, 490, 317, 2108, 11688,36308,4738, 36309,350,
2134, 380, 8178, 419, 11409,36312,36313,2067, 36314,380, 20909,12429,36317,36318,36319,389, 2584, 10854,36322,8177, 36323,7850, 36324,316, 14299,32024,36320,
- 36321,363, 7438, 12711,2206, 36326,36327,36330,36332,36333,36344,36350,36359,36361,36364,36374,381, 36382,36384,36385,36394,36397,317, 36398,36328,1020, 363,
+ 36321,363, 7438, 12711,2206, 36326,36327,36330,36332,36333,36344,36350,36359,36361,36364,36374,381, 36382,36384,36385,36394,36397,317, 36398,36328,1020, 363,
36329,343, 317, 36331,317, 373, 351, 13338,15915,317, 36334,332, 1383, 36335,1358, 36336,7214, 36339,317, 36343,380, 511, 36337,36338,36340,4965, 36341,
- 36342,6596, 317, 317, 2334, 1060, 5708, 5447, 466, 7834, 317, 36345,363, 363, 11211,14161,36346,36347,5616, 390, 317, 317, 317, 317, 317, 390, 1160,
- 12361,36348,317, 36349,36351,36354,332, 501, 36355,36356,36358,36352,317, 36353,2581, 36357,10072,317, 7118, 6600, 36360,36362,317, 36363,7871, 5223, 317,
- 317, 317, 574, 317, 36365,1347, 343, 36366,36367,36368,36369,36372,6089, 343, 5438, 356, 356, 370, 343, 5961, 317, 20880,4591, 317, 36370,36371,370,
+ 36342,6596, 317, 317, 2334, 1060, 5708, 5447, 466, 7834, 317, 36345,363, 363, 11211,14161,36346,36347,5616, 390, 317, 317, 317, 317, 317, 390, 1160,
+ 12361,36348,317, 36349,36351,36354,332, 501, 36355,36356,36358,36352,317, 36353,2581, 36357,10072,317, 7118, 6600, 36360,36362,317, 36363,7871, 5223, 317,
+ 317, 317, 574, 317, 36365,1347, 343, 36366,36367,36368,36369,36372,6089, 343, 5438, 356, 356, 370, 343, 5961, 317, 20880,4591, 317, 36370,36371,370,
12154,2022, 36373,356, 355, 363, 990, 5896, 390, 36375,6546, 332, 1358, 2021, 362, 36380,36381,350, 21973,317, 2171, 36376,7401, 466, 343, 36378,36377,
1347, 439, 317, 10538,36379,3529, 2272, 363, 11654,466, 12448,11089,9521, 466, 36383,317, 15044,7871, 317, 5043, 370, 426, 36386,36387,370, 20774,36389,
- 36390,36391,36392,9581, 490, 36388,317, 345, 22906,317, 427, 14535,4738, 28565,2261, 343, 18640,578, 428, 36393,356, 578, 362, 317, 36395,36396,317,
+ 36390,36391,36392,9581, 490, 36388,317, 345, 22906,317, 427, 14535,4738, 28565,2261, 343, 18640,578, 428, 36393,356, 578, 362, 317, 36395,36396,317,
390, 7035, 363, 350, 363, 317, 345, 6993, 5611, 365, 36399,36400,9878, 36401,317, 5955, 356, 19163,2156, 1160, 36402,36403,36405,36408,36411,36417,36418,
- 36419,363, 7892, 36421,36424,36426,36431,36435,36438,36465,36475,36490,36493,345, 36495,11613,1347, 363, 36404,2405, 9012, 317, 36406,36407,2117, 362, 6123,
- 433, 20102,36409,4984, 332, 3284, 36410,9937, 2298, 36412,465, 36415,36416,36413,466, 343, 36414,6598, 966, 10487,2507, 350, 317, 5662, 36420,317, 5836,
- 553, 5836, 10471,350, 36422,2108, 36423,362, 363, 351, 381, 2022, 22727,36425,8099, 317, 5896, 36427,36428,36429,13638,4962, 36430,6601, 2128, 543, 7852,
- 363, 5223, 10538,11940,1108, 370, 36432,36433,1358, 36434,11442,8136, 466, 9844, 8136, 363, 1160, 1325, 36436,36437,36439,36440,36442,36444,5628, 36445,4952,
+ 36419,363, 7892, 36421,36424,36426,36431,36435,36438,36465,36475,36490,36493,345, 36495,11613,1347, 363, 36404,2405, 9012, 317, 36406,36407,2117, 362, 6123,
+ 433, 20102,36409,4984, 332, 3284, 36410,9937, 2298, 36412,465, 36415,36416,36413,466, 343, 36414,6598, 966, 10487,2507, 350, 317, 5662, 36420,317, 5836,
+ 553, 5836, 10471,350, 36422,2108, 36423,362, 363, 351, 381, 2022, 22727,36425,8099, 317, 5896, 36427,36428,36429,13638,4962, 36430,6601, 2128, 543, 7852,
+ 363, 5223, 10538,11940,1108, 370, 36432,36433,1358, 36434,11442,8136, 466, 9844, 8136, 363, 1160, 1325, 36436,36437,36439,36440,36442,36444,5628, 36445,4952,
36446,36447,36462,36464,7850, 350, 317, 317, 36441,412, 36443,2391, 3079, 371, 466, 16020,317, 384, 5896, 36448,36454,6704, 36457,36458,5661, 36459,36460,
317, 11308,36449,36450,36451,36452,36453,317, 36455,317, 317, 36456,6415, 14835,16020,5663, 2405, 545, 36461,36463,5896, 36466,36469,4591, 363, 36473,36474,
36467,9226, 36468,4591, 36470,3529, 351, 36471,36472,551, 36476,316, 36478,36486,343, 317, 36477,36479,36480,356, 36482,466, 36483,9479, 36484,36485,36481,
476, 14695,33875,362, 3987, 349, 406, 36487,29185,36489,363, 317, 36488,36491,350, 36492,317, 317, 439, 466, 511, 2584, 501, 32544,3999, 16802,36494,
317, 15951,370, 6736, 36497,36498,317, 18770,36500,490, 36502,36507,36512,350, 36514,36515,36516,36517,36519,36528,36532,2188, 350, 3987, 16371,7021, 36501,
- 33733,362, 317, 317, 317, 351, 466, 317, 317, 317, 5332, 36503,317, 36504,1347, 8553, 36505,36506,363, 5836, 350, 36508,36509,36511,381, 466, 2184,
- 5896, 36510,11939,12704,10538,10487,351, 2060, 36513,2051, 2051, 8993, 350, 317, 10223,404, 363, 36518,12744,362, 2022, 11944,2108, 2272, 12422,590, 5896,
+ 33733,362, 317, 317, 317, 351, 466, 317, 317, 317, 5332, 36503,317, 36504,1347, 8553, 36505,36506,363, 5836, 350, 36508,36509,36511,381, 466, 2184,
+ 5896, 36510,11939,12704,10538,10487,351, 2060, 36513,2051, 2051, 8993, 350, 317, 10223,404, 363, 36518,12744,362, 2022, 11944,2108, 2272, 12422,590, 5896,
36520,36525,6598, 6021, 36526,14806,605, 381, 36527,10538,12696,36521,343, 36523,363, 36524,317, 36522,9938, 5223, 10538,371, 10086,317, 350, 466, 19922,
317, 317, 317, 317, 317, 36529,317, 36530,317, 36531,36533,1109, 363, 490, 36534,348, 12933,466, 2134, 350, 36536,2203, 2033, 596, 36538,10480,36539,
36537,36540,36541,36543,36548,14806,36544,7850, 36547,36545,36546,16910,36549,4773, 11347,36551,36554,36557,2584, 3869, 36560,36561,36552,36553,380, 36555,36556,
- 36558,36559,355, 7852, 511, 36562,36563,620, 2731, 620, 1688, 620, 36565,36567,36580,36582,36587,36594,16146,371, 36597,36598,36566,466, 36568,36569,351,
+ 36558,36559,355, 7852, 511, 36562,36563,620, 2731, 620, 1688, 620, 36565,36567,36580,36582,36587,36594,16146,371, 36597,36598,36566,466, 36568,36569,351,
34810,36570,36574,36571,36572,36573,36575,36579,36576,36577,36578,36581,35726,317, 36583,36584,36585,36586,36588,612, 36589,30114,32202,36590,36591,36592,36593,
36595,36596,36599,36600,36601,36659,36668,36673,36687,36724,36726,26830,36736,36815,36821,36847,36855,6600, 36891,36894,36916,36928,345, 36959,36961,36968,36602,
36604,36618,36622,36623,36624,6600, 36625,332, 36636,36652,36653,490, 36657,36603,36605,36615,36617,36606,36608,11446,36607,36609,36610,36611,36614,36612,36613,
36616,5043, 36619,36620,36621,6940, 2110, 13174,13233,36626,342, 23682,36629,36631,36632,36633,1020, 36635,6834, 36627,36628,5623, 36630,19307,36634,36637,36642,
5570, 36646,36648,36650,36638,317, 36639,36640,2510, 317, 36641,36643,356, 7401, 36644,5005, 18700,332, 11446,36645,17160,2381, 558, 36647,7668, 5428, 36649,
7273, 317, 36651,5032, 36654,2177, 36655,36656,36658,348, 17363,490, 490, 9470, 317, 6817, 36660,36662,36667,350, 350, 351, 36661,36663,362, 36664,36665,
- 5619, 36666,317, 8700, 317, 17856,36669,36672,362, 490, 36670,317, 36671,2272, 36674,36675,36678,36680,36681,36685,36676,36677,362, 16860,36679,5105, 363,
- 317, 380, 9215, 317, 36682,36683,36684,5996, 351, 36686,363, 36688,2416, 36689,1915, 36691,36693,36694,36700,36713,36716,36722,2110, 1999, 36690,5624, 370,
- 2188, 36692,396, 1109, 29747,345, 350, 2134, 2610, 36695,363, 36698,36696,404, 36697,351, 36699,351, 350, 351, 551, 2537, 36701,36703,36705,36706,317,
+ 5619, 36666,317, 8700, 317, 17856,36669,36672,362, 490, 36670,317, 36671,2272, 36674,36675,36678,36680,36681,36685,36676,36677,362, 16860,36679,5105, 363,
+ 317, 380, 9215, 317, 36682,36683,36684,5996, 351, 36686,363, 36688,2416, 36689,1915, 36691,36693,36694,36700,36713,36716,36722,2110, 1999, 36690,5624, 370,
+ 2188, 36692,396, 1109, 29747,345, 350, 2134, 2610, 36695,363, 36698,36696,404, 36697,351, 36699,351, 350, 351, 551, 2537, 36701,36703,36705,36706,317,
1020, 490, 490, 36702,5792, 17335,36704,2280, 2022, 36707,36708,36709,36711,317, 381, 5890, 867, 17368,574, 332, 36710,17335,365, 36712,362, 36714,36715,
- 317, 5464, 14172,317, 2416, 317, 356, 7504, 466, 317, 36717,8083, 36720,490, 36718,36719,36721,36723,2110, 363, 490, 7060, 36725,5043, 370, 363, 317,
- 36727,36728,5570, 36730,36729,2086, 13364,351, 36731,36732,36735,3874, 36733,36734,36737,36738,36741,36742,36748,35094,36749,350, 35170,36751,36779,36782,363,
- 36789,36790,36793,2357, 36814,317, 5238, 6409, 317, 36739,36740,36743,36744,36745,36746,36747,13174,514, 317, 7448, 317, 8000, 317, 1109, 317, 2715, 1230,
+ 317, 5464, 14172,317, 2416, 317, 356, 7504, 466, 317, 36717,8083, 36720,490, 36718,36719,36721,36723,2110, 363, 490, 7060, 36725,5043, 370, 363, 317,
+ 36727,36728,5570, 36730,36729,2086, 13364,351, 36731,36732,36735,3874, 36733,36734,36737,36738,36741,36742,36748,35094,36749,350, 35170,36751,36779,36782,363,
+ 36789,36790,36793,2357, 36814,317, 5238, 6409, 317, 36739,36740,36743,36744,36745,36746,36747,13174,514, 317, 7448, 317, 8000, 317, 1109, 317, 2715, 1230,
317, 317, 317, 317, 2715, 370, 1108, 317, 317, 2022, 36750,36752,36756,1347, 36761,36763,36764,36767,36776,36777,36778,9319, 36753,550, 36754,381, 36755,
36757,2024, 543, 317, 1032, 36758,36760,36759,36762,380, 345, 356, 373, 36765,317, 36766,36768,36770,8117, 36774,363, 490, 317, 370, 36769,11921,36771,
317, 36772,9244, 2610, 1915, 9319, 14981,36773,370, 36775,317, 317, 25651,343, 1020, 2610, 356, 350, 350, 317, 36780,439, 36781,596, 317, 345, 36783,
370, 36784,11709,343, 36786,36787,550, 1358, 5325, 36785,345, 8906, 317, 9443, 317, 317, 24130,1060, 36788,350, 317, 439, 317, 2163, 36791,550, 36792,
4738, 365, 365, 1999, 7064, 36794,36807,317, 36809,11921,36810,317, 332, 36795,36796,637, 5942, 633, 317, 317, 5517, 36799,5217, 490, 317, 36797,36798,
- 36800,36801,36802,317, 36803,36804,36805,36806,36808,1108, 6555, 363, 36807,351, 36811,36813,36812,6555, 351, 589, 381, 36816,565, 36818,36817,36819,317,
- 36820,317, 36822,36823,390, 36829,36832,36833,36837,343, 36840,7579, 36844,7567, 317, 36846,317, 348, 565, 317, 317, 317, 9244, 365, 19855,36824,345,
+ 36800,36801,36802,317, 36803,36804,36805,36806,36808,1108, 6555, 363, 36807,351, 36811,36813,36812,6555, 351, 589, 381, 36816,565, 36818,36817,36819,317,
+ 36820,317, 36822,36823,390, 36829,36832,36833,36837,343, 36840,7579, 36844,7567, 317, 36846,317, 348, 565, 317, 317, 317, 9244, 365, 19855,36824,345,
36826,11342,36825,36827,317, 36828,8051, 6046, 36830,36831,363, 662, 317, 3075, 36834,36835,36836,371, 2188, 36838,36839,2537, 5570, 362, 36841,36842,36843,
- 20276,317, 466, 317, 343, 343, 317, 10820,990, 10820,317, 373, 12940,345, 6831, 382, 363, 317, 350, 2551, 36845,384, 351, 362, 404, 10081,350,
+ 20276,317, 466, 317, 343, 343, 317, 10820,990, 10820,317, 373, 12940,345, 6831, 382, 363, 317, 350, 2551, 36845,384, 351, 362, 404, 10081,350,
36848,6454, 6847, 36849,36853,36854,317, 428, 24831,317, 317, 1160, 36850,317, 317, 317, 36851,36852,428, 7734, 21274,2275, 6593, 5226, 36856,36857,36858,
- 370, 36865,36868,36869,36870,2584, 32079,36872,36878,36880,36886,466, 11236,36889,7942, 24393,317, 36859,36861,5626, 382, 36864,317, 2351, 36860,621, 511,
- 5626, 36862,362, 36863,317, 36866,36867,343, 6961, 332, 351, 10519,317, 2381, 1358, 36871,36873,36874,36877,343, 317, 1160, 317, 36875,36876,381, 637,
- 317, 8361, 317, 36879,2369, 566, 27913,36881,32608,25453,36882,36883,36885,6736, 4268, 545, 553, 36884,363, 6081, 36887,36888,4984, 741, 351, 16164,8587,
+ 370, 36865,36868,36869,36870,2584, 32079,36872,36878,36880,36886,466, 11236,36889,7942, 24393,317, 36859,36861,5626, 382, 36864,317, 2351, 36860,621, 511,
+ 5626, 36862,362, 36863,317, 36866,36867,343, 6961, 332, 351, 10519,317, 2381, 1358, 36871,36873,36874,36877,343, 317, 1160, 317, 36875,36876,381, 637,
+ 317, 8361, 317, 36879,2369, 566, 27913,36881,32608,25453,36882,36883,36885,6736, 4268, 545, 553, 36884,363, 6081, 36887,36888,4984, 741, 351, 16164,8587,
2503, 18305,7911, 36890,450, 31084,36892,36893,317, 428, 363, 36895,36896,36899,36900,36903,565, 36904,8392, 19266,36905,317, 36907,36908,36909,36910,36911,
- 2271, 36915,317, 343, 32064,365, 36897,6234, 363, 36898,317, 35895,8178, 36901,380, 511, 36902,363, 5727, 345, 317, 365, 317, 363, 1108, 4984, 4984,
+ 2271, 36915,317, 343, 32064,365, 36897,6234, 363, 36898,317, 35895,8178, 36901,380, 511, 36902,363, 5727, 345, 317, 365, 317, 363, 1108, 4984, 4984,
6409, 363, 36906,2022, 3076, 317, 356, 867, 7273, 2381, 317, 19682,365, 379, 343, 36912,1992, 317, 36913,36914,428, 5309, 949, 317, 36917,36918,36919,
6021, 350, 36921,36923,36924,7850, 317, 317, 11362,551, 11404,36920,343, 490, 317, 317, 501, 382, 36922,381, 10476,350, 362, 605, 36925,351, 36927,
14415,2402, 317, 345, 317, 9884, 404, 36926,7214, 1160, 404, 345, 1358, 4980, 4591, 2394, 36929,36935,36937,36940,28720,36945,2571, 5662, 15326,36946,36948,
36951,36958,36930,36932,36933,36931,28588,404, 3236, 33156,36934,36719,36936,448, 8546, 15457,479, 36938,36939,36941,7196, 36721,36812,36942,5392, 36943,36944,
- 363, 6593, 8296, 36947,7196, 349, 36949,543, 317, 36950,317, 36952,36955,5662, 36956,432, 317, 9567, 36953,7368, 362, 6555, 36954,317, 36807,382, 6555,
+ 363, 6593, 8296, 36947,7196, 349, 36949,543, 317, 36950,317, 36952,36955,5662, 36956,432, 317, 9567, 36953,7368, 362, 6555, 36954,317, 36807,382, 6555,
36957,350, 11608,15457,36960,12421,949, 36962,36963,36964,380, 404, 36965,36966,36967,404, 574, 8586, 317, 317, 11962,345, 317, 1060, 15678,7063, 36969,
36970,36971,36972,36974,317, 36975,371, 7261, 339, 317, 36973,363, 6940, 7567, 357, 511, 317, 17946,36977,36978,36980,36987,36988,36993,36998,37000,37001,
- 565, 365, 36981,36983,36985,36986,2146, 36982,2037, 2022, 36984,36989,36990,15571,317, 317, 36991,36992,363, 7916, 363, 36994,36996,36997,5309, 36995,2948,
- 317, 427, 36999,37002,37004,37003,37005,1358, 356, 317, 390, 37007,37008,37009,37010,37011,37013,37018,37020,37024,37025,37033,37042,37051,37053,37055,1020,
+ 565, 365, 36981,36983,36985,36986,2146, 36982,2037, 2022, 36984,36989,36990,15571,317, 317, 36991,36992,363, 7916, 363, 36994,36996,36997,5309, 36995,2948,
+ 317, 427, 36999,37002,37004,37003,37005,1358, 356, 317, 390, 37007,37008,37009,37010,37011,37013,37018,37020,37024,37025,37033,37042,37051,37053,37055,1020,
37060,37014,37015,37016,37017,365, 37019,317, 5325, 332, 6831, 37021,37022,37023,590, 365, 590, 2357, 316, 9450, 345, 37026,37030,37027,37028,37029,37031,
37032,4952, 26850,6340, 27985,37034,2058, 317, 37035,37039,9623, 37036,37037,37038,317, 5732, 317, 37040,37041,37043,37044,317, 317, 37045,37046,37047,37048,
37049,37050,317, 9549, 381, 37052,332, 1526, 37054,596, 427, 27776,317, 37056,345, 37057,37058,37059,490, 2178, 8099, 37062,427, 18803,37063,37064,37065,
37066,37067,37069,37075,37078,37084,37089,37091,37092,37099,122, 38028,38029,38031,125, 38804,34745,38826,128, 39203,39223,39228,39236,39240,129, 39948,39961,
39995,40006,131, 40286,40293,40297,132, 40485,427, 2533, 2738, 4797, 37068,4576, 2242, 37070,37071,37072,37073,37074,3738, 37076,637, 37077,37079,37082,37083,
37080,37081,317, 18978,3284, 37085,37086,37087,37088,37090,37093,37094,37095,37096,37097,37098,37100,37101,37102,37103,37104,37114,37148,37171,37192,37213,37224,
- 37257,37264,37294,37299,37308,37400,123, 37583,37611,124, 37819,37866,37903,37945,37967,37985,37986,38015,1987, 1345, 21123,317, 37105,317, 37107,4952, 317,
- 6388, 37111,37112,37113,317, 317, 37106,37108,12726,363, 37109,317, 37110,27177,5126, 9938, 4976, 363, 390, 317, 317, 317, 37115,37117,37119,37132,5793,
+ 37257,37264,37294,37299,37308,37400,123, 37583,37611,124, 37819,37866,37903,37945,37967,37985,37986,38015,1987, 1345, 21123,317, 37105,317, 37107,4952, 317,
+ 6388, 37111,37112,37113,317, 317, 37106,37108,12726,363, 37109,317, 37110,27177,5126, 9938, 4976, 363, 390, 317, 317, 317, 37115,37117,37119,37132,5793,
37140,37141,37142,317, 37144,37116,365, 390, 37118,363, 1243, 317, 17038,345, 371, 367, 2219, 317, 37120,37121,37122,37126,37127,343, 37128,37130,37123,
37124,37125,10580,479, 37129,7852, 554, 37131,37133,471, 317, 317, 37134,490, 2108, 37136,1358, 10939,37135,317, 13696,37137,317, 37139,5457, 37138,30634,
317, 389, 5836, 37143,37145,37146,37147,24893,37149,37153,37156,37170,14561,37150,37151,511, 317, 574, 317, 317, 5624, 362, 37152,4186, 37154,37155,37157,
- 37158,37159,2024, 466, 37165,37167,15745,37169,22415,317, 501, 16623,13336,7590, 479, 37160,317, 37161,37163,37164,317, 37162,15457,1194, 317, 317, 2117,
- 317, 317, 433, 27419,37166,5663, 37168,605, 12154,37172,2584, 37174,37179,9624, 596, 37180,37183,5120, 37186,37188,37189,37190,37191,1601, 1020, 317, 317,
- 2298, 13979,317, 37173,1230, 37175,37176,37177,37178,317, 317, 317, 1230, 7070, 317, 371, 5538, 317, 371, 11473,317, 317, 317, 317, 317, 1109, 1329,
- 37181,37182,37184,317, 37185,439, 37187,23306,317, 4943, 317, 317, 381, 14535,501, 1060, 362, 5055, 428, 428, 363, 350, 37193,350, 37195,37196,363,
+ 37158,37159,2024, 466, 37165,37167,15745,37169,22415,317, 501, 16623,13336,7590, 479, 37160,317, 37161,37163,37164,317, 37162,15457,1194, 317, 317, 2117,
+ 317, 317, 433, 27419,37166,5663, 37168,605, 12154,37172,2584, 37174,37179,9624, 596, 37180,37183,5120, 37186,37188,37189,37190,37191,1601, 1020, 317, 317,
+ 2298, 13979,317, 37173,1230, 37175,37176,37177,37178,317, 317, 317, 1230, 7070, 317, 371, 5538, 317, 371, 11473,317, 317, 317, 317, 317, 1109, 1329,
+ 37181,37182,37184,317, 37185,439, 37187,23306,317, 4943, 317, 317, 381, 14535,501, 1060, 362, 5055, 428, 428, 363, 350, 37193,350, 37195,37196,363,
37198,2222, 37208,37209,37211,37194,37197,37199,37200,37202,37206,37201,37203,37204,37205,37207,466, 317, 12732,317, 37210,382, 23995,37212,351, 2298, 37214,
- 37218,1108, 14173,37221,37222,1108, 343, 37215,37216,37217,317, 363, 12288,2761, 9012, 37219,511, 350, 551, 37220,317, 37223,351, 37225,5896, 37229,388,
- 37234,37241,37243,37250,37251,350, 37253,5087, 37254,37255,10467,317, 37226,5761, 362, 37228,1329, 37227,15459,8948, 317, 37230,11195,37231,37233,317, 317,
+ 37218,1108, 14173,37221,37222,1108, 343, 37215,37216,37217,317, 363, 12288,2761, 9012, 37219,511, 350, 551, 37220,317, 37223,351, 37225,5896, 37229,388,
+ 37234,37241,37243,37250,37251,350, 37253,5087, 37254,37255,10467,317, 37226,5761, 362, 37228,1329, 37227,15459,8948, 317, 37230,11195,37231,37233,317, 317,
317, 6704, 363, 37232,317, 16187,4980, 317, 6674, 9696, 2108, 362, 27420,1345, 37235,5896, 37237,37239,37240,18839,2533, 1347, 37236,317, 37238,381, 16092,
- 18661,317, 466, 439, 37242,317, 317, 1347, 37244,381, 1459, 37245,37246,37247,37248,37249,12142,439, 37252,317, 356, 5624, 317, 37256,37258,317, 317,
- 37262,317, 14361,37259,37260,317, 37261,37263,37265,37266,37267,37268,37269,6242, 37274,36635,37280,37289,37291,362, 4965, 351, 5223, 350, 6089, 37270,466,
+ 18661,317, 466, 439, 37242,317, 317, 1347, 37244,381, 1459, 37245,37246,37247,37248,37249,12142,439, 37252,317, 356, 5624, 317, 37256,37258,317, 317,
+ 37262,317, 14361,37259,37260,317, 37261,37263,37265,37266,37267,37268,37269,6242, 37274,36635,37280,37289,37291,362, 4965, 351, 5223, 350, 6089, 37270,466,
37272,6089, 317, 2163, 317, 37271,554, 37273,37275,345, 37277,37278,37279,317, 37276,317, 20869,317, 370, 5809, 37281,9479, 37282,37285,9624, 7072, 24209,
- 539, 37286,317, 37287,1160, 428, 2732, 317, 37283,37284,7737, 37288,351, 363, 24305,2155, 317, 37290,437, 14174,1060, 37292,37293,317, 351, 37295,371,
- 37297,37298,36540,345, 37296,343, 1444, 1791, 353, 37300,37301,37302,37304,37306,37307,317, 6847, 490, 317, 9884, 2272, 490, 317, 427, 317, 317, 317,
+ 539, 37286,317, 37287,1160, 428, 2732, 317, 37283,37284,7737, 37288,351, 363, 24305,2155, 317, 37290,437, 14174,1060, 37292,37293,317, 351, 37295,371,
+ 37297,37298,36540,345, 37296,343, 1444, 1791, 353, 37300,37301,37302,37304,37306,37307,317, 6847, 490, 317, 9884, 2272, 490, 317, 427, 317, 317, 317,
317, 317, 37303,15371,37305,351, 4006, 390, 2413, 1358, 37309,619, 37311,37314,37322,37324,37327,37332,37340,37342,37349,37350,37375,404, 37379,37384,37388,
37392,27851,37395,37398,37399,37310,345, 370, 37312,3284, 5624, 37312,37313,490, 1100, 317, 2108, 37315,37320,37321,37316,317, 317, 37317,317, 8741, 37318,
- 37319,11245,7449, 37323,404, 2044, 317, 381, 2272, 37325,37326,380, 362, 317, 7949, 317, 20638,37328,37329,317, 317, 317, 317, 37330,5838, 1160, 6388,
+ 37319,11245,7449, 37323,404, 2044, 317, 381, 2272, 37325,37326,380, 362, 317, 7949, 317, 20638,37328,37329,317, 317, 317, 317, 37330,5838, 1160, 6388,
10471,37331,37333,1194, 362, 19187,8023, 37334,37337,551, 37338,971, 4789, 1230, 37335,37336,382, 2366, 404, 5158, 37339,345, 37341,363, 36957,37343,37345,
2156, 3710, 317, 317, 1109, 490, 5828, 8170, 37344,37346,317, 37347,37348,37351,13823,37352,37353,2024, 3023, 37356,37359,37360,6601, 37365,37367,7405, 27235,
- 371, 13856,362, 5153, 1325, 317, 350, 1230, 371, 4984, 37354,6596, 37355,7949, 317, 5223, 317, 37357,371, 1230, 317, 362, 362, 362, 37358,317, 2022,
+ 371, 13856,362, 5153, 1325, 317, 350, 1230, 371, 4984, 37354,6596, 37355,7949, 317, 5223, 317, 37357,371, 1230, 317, 362, 362, 362, 37358,317, 2022,
28594,24041,363, 1266, 371, 590, 317, 6600, 37361,370, 8301, 37362,37363,317, 317, 4984, 380, 37364,37366,2117, 355, 426, 37368,1347, 37369,37370,37371,
- 37373,37372,317, 5113, 448, 37374,37376,345, 384, 37377,7514, 317, 37378,6355, 355, 949, 37380,437, 37383,317, 18882,6563, 37381,37382,37385,37386,501,
- 363, 1020, 37387,428, 37389,343, 37390,380, 490, 390, 317, 37391,363, 426, 37393,37394,5332, 317, 382, 4737, 37396,466, 37397,317, 2551, 317, 551,
+ 37373,37372,317, 5113, 448, 37374,37376,345, 384, 37377,7514, 317, 37378,6355, 355, 949, 37380,437, 37383,317, 18882,6563, 37381,37382,37385,37386,501,
+ 363, 1020, 37387,428, 37389,343, 37390,380, 490, 390, 317, 37391,363, 426, 37393,37394,5332, 317, 382, 4737, 37396,466, 37397,317, 2551, 317, 551,
384, 2063, 37401,37408,37421,37424,396, 37432,37433,37436,37439,15513,37457,37459,37463,37465,37470,37472,1230, 37475,419, 10046,37402,317, 350, 37403,37405,
- 37406,1109, 37407,37404,12756,317, 11485,2322, 37409,37411,37413,37415,37416,37418,317, 37410,2067, 37412,2222, 1020, 370, 37414,363, 317, 404, 317, 4980,
+ 37406,1109, 37407,37404,12756,317, 11485,2322, 37409,37411,37413,37415,37416,37418,317, 37410,2067, 37412,2222, 1020, 370, 37414,363, 317, 404, 317, 4980,
317, 6713, 5295, 6594, 37417,317, 7785, 471, 37419,37420,37422,363, 317, 317, 37423,356, 6600, 37425,9609, 37428,37430,317, 381, 317, 37426,37427,37429,
- 317, 404, 883, 37431,317, 5120, 380, 37434,11408,20592,6412, 565, 317, 37435,363, 17730,37437,28276,363, 317, 37438,317, 37440,37446,37453,37454,8178,
+ 317, 404, 883, 37431,317, 5120, 380, 37434,11408,20592,6412, 565, 317, 37435,363, 17730,37437,28276,363, 317, 37438,317, 37440,37446,37453,37454,8178,
29082,37441,5120, 350, 317, 37442,37443,381, 370, 3023, 4962, 37444,37445,317, 5105, 317, 37447,317, 11962,681, 5942, 320, 633, 633, 10283,1479, 37448,
- 466, 37450,362, 37451,4789, 37449,317, 25352,2022, 2553, 37452,356, 1020, 2272, 426, 317, 380, 382, 381, 5962, 37455,1347, 317, 37456,883, 37458,317,
- 345, 317, 15334,11366,501, 37460,317, 343, 363, 37461,5054, 2609, 363, 37462,37464,317, 14289,37466,350, 371, 363, 37469,363, 37467,37468,15646,6991,
+ 466, 37450,362, 37451,4789, 37449,317, 25352,2022, 2553, 37452,356, 1020, 2272, 426, 317, 380, 382, 381, 5962, 37455,1347, 317, 37456,883, 37458,317,
+ 345, 317, 15334,11366,501, 37460,317, 343, 363, 37461,5054, 2609, 363, 37462,37464,317, 14289,37466,350, 371, 363, 37469,363, 37467,37468,15646,6991,
867, 37471,37473,37474,4925, 371, 37476,37480,37482,37483,37525,37529,37530,37535,37537,490, 37540,37544,22742,37545,37554,37557,37559,37570,37577,37578,37579,
37580,37581,971, 37477,37478,362, 332, 28836,317, 2222, 362, 36238,37479,37481,32950,448, 317, 1345, 15873,363, 5851, 619, 13881,37484,37486,37491,12113,
37493,6709, 37494,32606,37498,37504,7942, 37506,37507,37508,37509,317, 5037, 37518,37523,37524,37485,7449, 12616,2108, 1347, 9075, 2126, 384, 37487,37489,37488,
- 37490,6441, 37492,5995, 439, 362, 450, 37495,370, 1992, 12423,37496,17793,37497,37499,3079, 37500,37501,37502,37503,37505,3999, 426, 317, 13914,317, 317,
+ 37490,6441, 37492,5995, 439, 362, 450, 37495,370, 1992, 12423,37496,17793,37497,37499,3079, 37500,37501,37502,37503,37505,3999, 426, 317, 13914,317, 317,
1347, 317, 317, 396, 317, 4268, 350, 1524, 11617,8882, 363, 384, 1453, 37510,4268, 37513,37515,4952, 5809, 37511,37512,37514,343, 396, 37516,37517,37519,
- 37520,37521,37522,466, 501, 380, 883, 27732,490, 362, 37526,8431, 9938, 37527,317, 317, 317, 10580,317, 5897, 37528,621, 37531,10422,9648, 362, 5005,
- 37533,317, 37534,380, 19307,317, 37532,4268, 2509, 37536,317, 3007, 37538,8175, 362, 317, 10027,37539,19507,332, 317, 37541,37543,490, 5943, 16579,5943,
- 317, 317, 37542,317, 317, 5995, 404, 363, 1345, 6318, 363, 317, 37546,37549,37550,37552,317, 37553,317, 37547,362, 37548,6600, 317, 2108, 36238,317,
+ 37520,37521,37522,466, 501, 380, 883, 27732,490, 362, 37526,8431, 9938, 37527,317, 317, 317, 10580,317, 5897, 37528,621, 37531,10422,9648, 362, 5005,
+ 37533,317, 37534,380, 19307,317, 37532,4268, 2509, 37536,317, 3007, 37538,8175, 362, 317, 10027,37539,19507,332, 317, 37541,37543,490, 5943, 16579,5943,
+ 317, 317, 37542,317, 317, 5995, 404, 363, 1345, 6318, 363, 317, 37546,37549,37550,37552,317, 37553,317, 37547,362, 37548,6600, 317, 2108, 36238,317,
637, 5942, 320, 317, 362, 501, 11647,13122,317, 1347, 317, 317, 433, 362, 6600, 37551,370, 356, 317, 350, 317, 371, 37555,317, 356, 33988,37556,
- 37558,3869, 317, 362, 390, 10894,37560,37563,37564,2024, 37565,37566,2022, 5662, 37567,12815,6046, 37569,13023,37561,6673, 448, 37562,2094, 22395,317, 1325,
- 317, 605, 605, 363, 37568,1358, 317, 19617,2272, 317, 12696,37571,362, 363, 317, 37574,37576,37572,479, 37573,37575,490, 19292,362, 8392, 370, 5038,
+ 37558,3869, 317, 362, 390, 10894,37560,37563,37564,2024, 37565,37566,2022, 5662, 37567,12815,6046, 37569,13023,37561,6673, 448, 37562,2094, 22395,317, 1325,
+ 317, 605, 605, 363, 37568,1358, 317, 19617,2272, 317, 12696,37571,362, 363, 317, 37574,37576,37572,479, 37573,37575,490, 19292,362, 8392, 370, 5038,
370, 428, 5810, 37582,5623, 12668,382, 37584,6089, 37585,37589,37590,2134, 37599,317, 37607,317, 37586,37587,37588,476, 37591,37592,37596,356, 34428,37593,
- 37594,37595,37597,37598,37600,37602,2022, 37603,317, 37601,317, 317, 356, 9648, 370, 317, 28196,370, 36225,37604,37605,317, 1353, 317, 317, 633, 8301,
+ 37594,37595,37597,37598,37600,37602,2022, 37603,317, 37601,317, 317, 356, 9648, 370, 317, 28196,370, 36225,37604,37605,317, 1353, 317, 317, 633, 8301,
2631, 37606,516, 901, 6532, 8301, 2277, 14501,2571, 2272, 317, 2948, 317, 621, 317, 1267, 317, 1531, 382, 339, 37608,37609,37610,15451,343, 37612,37620,
37631,37637,37673,37677,37678,37684,37694,37696,37705,37715,37724,37730,37736,37751,37770,37777,37806,37808,37817,9702, 317, 33965,7490, 37402,37613,6866, 37614,
- 37616,1992, 37617,37618,37619,1230, 5838, 4060, 37615,404, 317, 5996, 37621,37622,37623,37624,37626,37630,317, 390, 350, 4943, 371, 317, 5223, 404, 371,
+ 37616,1992, 37617,37618,37619,1230, 5838, 4060, 37615,404, 317, 5996, 37621,37622,37623,37624,37626,37630,317, 390, 350, 4943, 371, 317, 5223, 404, 371,
37625,404, 5255, 37627,372, 37628,317, 356, 466, 343, 6674, 317, 390, 390, 37629,356, 12416,466, 317, 5962, 382, 317, 351, 37632,37633,37635,37636,
2402, 1700, 37634,343, 1999, 317, 590, 633, 37638,37639,37641,37644,37645,37650,37652,37653,2171, 37657,11236,37660,6690, 1194, 37662,37664,37665,37667,37668,
11769,1588, 343, 350, 362, 10086,345, 1230, 26037,37640,370, 13307,1588, 11960,37642,371, 37643,1999, 350, 384, 2124, 10487,317, 15334,5105, 11236,37646,
- 12019,37648,317, 37647,356, 466, 317, 4949, 9695, 4949, 37649,1347, 37651,370, 434, 434, 381, 16804,317, 37654,11236,37655,37656,317, 4944, 10185,404,
- 363, 23995,37658,317, 37659,37661,345, 10820,317, 37663,384, 15566,990, 9140, 384, 3361, 351, 2060, 37666,37669,37671,37672,37670,317, 21123,1526, 6355,
- 11257,37674,365, 9624, 37676,1347, 1347, 317, 317, 6089, 37675,37679,5381, 7511, 37681,345, 1943, 37680,1347, 5223, 381, 5088, 317, 9383, 37682,37683,363,
- 14323,37685,317, 37686,37687,37688,427, 1444, 365, 37690,390, 345, 565, 37689,37691,363, 404, 37692,37693,37695,317, 3742, 426, 37697,5055, 37699,2571,
- 37703,37704,490, 37698,317, 317, 37700,37701,345, 317, 37702,566, 566, 7389, 37706,37711,37714,2067, 390, 317, 6600, 37707,6718, 37709,37708,37710,8258,
- 1018, 317, 633, 649, 633, 317, 490, 317, 317, 37712,37713,371, 396, 317, 317, 1358, 26791,37716,379, 36877,6668, 37717,37722,317, 2184, 317, 404,
- 350, 37718,317, 37719,1160, 317, 37720,1347, 7834, 18587,427, 317, 10674,37721,317, 363, 37723,370, 5810, 37725,501, 37726,37728,370, 25434,317, 317,
+ 12019,37648,317, 37647,356, 466, 317, 4949, 9695, 4949, 37649,1347, 37651,370, 434, 434, 381, 16804,317, 37654,11236,37655,37656,317, 4944, 10185,404,
+ 363, 23995,37658,317, 37659,37661,345, 10820,317, 37663,384, 15566,990, 9140, 384, 3361, 351, 2060, 37666,37669,37671,37672,37670,317, 21123,1526, 6355,
+ 11257,37674,365, 9624, 37676,1347, 1347, 317, 317, 6089, 37675,37679,5381, 7511, 37681,345, 1943, 37680,1347, 5223, 381, 5088, 317, 9383, 37682,37683,363,
+ 14323,37685,317, 37686,37687,37688,427, 1444, 365, 37690,390, 345, 565, 37689,37691,363, 404, 37692,37693,37695,317, 3742, 426, 37697,5055, 37699,2571,
+ 37703,37704,490, 37698,317, 317, 37700,37701,345, 317, 37702,566, 566, 7389, 37706,37711,37714,2067, 390, 317, 6600, 37707,6718, 37709,37708,37710,8258,
+ 1018, 317, 633, 649, 633, 317, 490, 317, 317, 37712,37713,371, 396, 317, 317, 1358, 26791,37716,379, 36877,6668, 37717,37722,317, 2184, 317, 404,
+ 350, 37718,317, 37719,1160, 317, 37720,1347, 7834, 18587,427, 317, 10674,37721,317, 363, 37723,370, 5810, 37725,501, 37726,37728,370, 25434,317, 317,
317, 37727,381, 317, 37729,37731,37733,317, 37735,37732,317, 37734,396, 317, 37734,37737,37738,554, 37743,37744,37745,15313,317, 317, 3243, 37739,37740,
- 317, 37741,37742,345, 22412,381, 10172,23419,37746,2222, 37747,37748,37749,37750,37752,37755,37757,37765,37766,37753,317, 29034,317, 37754,363, 2272, 363,
+ 317, 37741,37742,345, 22412,381, 10172,23419,37746,2222, 37747,37748,37749,37750,37752,37755,37757,37765,37766,37753,317, 29034,317, 37754,363, 2272, 363,
37756,317, 317, 317, 381, 317, 7214, 404, 990, 362, 37758,37759,380, 362, 37760,14535,37762,381, 317, 1347, 317, 11962,363, 351, 428, 404, 37761,
370, 4980, 317, 7911, 37763,317, 4980, 5037, 37764,317, 1347, 2413, 356, 317, 317, 363, 22983,6228, 317, 317, 317, 2077, 37767,362, 37768,317, 12525,
332, 37769,390, 370, 37771,37774,37776,317, 37772,37773,24398,9624, 370, 362, 2571, 5898, 5898, 37775,990, 37778,37780,37781,37783,37784,10907,37786,37787,
- 37792,37794,37796,5367, 6601, 37797,37799,317, 37667,37801,37803,317, 37805,590, 37779,317, 15308,18215,4959, 37782,9383, 434, 2584, 10012,363, 6600, 380,
- 37785,317, 317, 14835,37788,37789,30116,317, 501, 363, 317, 37790,345, 317, 37791,37793,381, 37795,380, 345, 381, 317, 317, 1992, 370, 37798,343,
- 384, 427, 317, 390, 20909,9624, 14340,37800,2310, 5037, 371, 317, 317, 371, 4943, 37802,428, 37804,371, 8266, 11654,6598, 6599, 350, 1992, 365, 7954,
+ 37792,37794,37796,5367, 6601, 37797,37799,317, 37667,37801,37803,317, 37805,590, 37779,317, 15308,18215,4959, 37782,9383, 434, 2584, 10012,363, 6600, 380,
+ 37785,317, 317, 14835,37788,37789,30116,317, 501, 363, 317, 37790,345, 317, 37791,37793,381, 37795,380, 345, 381, 317, 317, 1992, 370, 37798,343,
+ 384, 427, 317, 390, 20909,9624, 14340,37800,2310, 5037, 371, 317, 317, 371, 4943, 37802,428, 37804,371, 8266, 11654,6598, 6599, 350, 1992, 365, 7954,
5120, 1109, 37807,317, 317, 18906,37809,37810,37814,2022, 356, 4925, 5105, 317, 37811,37813,37812,317, 10422,466, 501, 317, 371, 317, 37815,317, 11539,
37816,4773, 5891, 551, 428, 37818,2063, 10592,317, 37820,37822,37826,37827,37829,32303,8023, 37836,37842,37845,37849,37853,37854,12732,37855,37863,3987, 14615,
- 37821,6814, 317, 37823,365, 37824,363, 380, 448, 37825,428, 15749,1060, 37828,6900, 317, 37830,362, 37833,317, 501, 37831,3529, 37832,11918,462, 7408,
+ 37821,6814, 317, 37823,365, 37824,363, 380, 448, 37825,428, 15749,1060, 37828,6900, 317, 37830,362, 37833,317, 501, 37831,3529, 37832,11918,462, 7408,
37834,11709,37835,7174, 476, 37837,27367,37838,37840,365, 2152, 37841,2533, 404, 1230, 317, 37839,317, 317, 37616,382, 390, 382, 2521, 37843,490, 37844,
- 10580,37846,5055, 37847,5105, 317, 381, 317, 37848,427, 37850,37852,1160, 37851,317, 381, 317, 371, 29772,37856,37858,37862,21186,4984, 3006, 37857,380,
+ 10580,37846,5055, 37847,5105, 317, 381, 317, 37848,427, 37850,37852,1160, 37851,317, 381, 317, 371, 29772,37856,37858,37862,21186,4984, 3006, 37857,380,
317, 13426,356, 37859,37861,381, 317, 37860,16187,4591, 317, 362, 317, 7192, 5810, 384, 355, 28996,350, 14910,363, 371, 317, 317, 11678,317, 37864,
- 37865,363, 351, 317, 381, 5363, 381, 317, 370, 9649, 37867,37868,37872,9624, 37876,37881,343, 37882,27528,37883,37885,37887,37891,363, 37898,490, 343,
+ 37865,363, 351, 317, 381, 5363, 381, 317, 370, 9649, 37867,37868,37872,9624, 37876,37881,343, 37882,27528,37883,37885,37887,37891,363, 37898,490, 343,
490, 29531,1230, 317, 37869,5960, 2584, 37870,20497,27846,317, 5105, 37871,317, 11962,596, 404, 317, 37873,317, 379, 7073, 1358, 1347, 37875,589, 37874,
- 16143,37877,37879,37880,1230, 37878,381, 371, 317, 418, 1230, 2142, 317, 382, 37884,8926, 356, 37886,37888,2631, 343, 37889,37890,37892,37893,37895,2022,
+ 16143,37877,37879,37880,1230, 37878,381, 371, 317, 418, 1230, 2142, 317, 382, 37884,8926, 356, 37886,37888,2631, 343, 37889,37890,37892,37893,37895,2022,
362, 37897,2391, 367, 7698, 317, 1230, 16889,37894,350, 345, 9425, 37896,5022, 37899,380, 37900,37901,14084,37902,14084,2298, 363, 37904,10592,37905,37911,
- 37913,37914,37919,37920,37921,37922,37923,37934,37936,37943,4279, 343, 16553,350, 578, 24637,37906,37907,37908,37909,37910,10546,37912,37915,37916,37917,4952,
+ 37913,37914,37919,37920,37921,37922,37923,37934,37936,37943,4279, 343, 16553,350, 578, 24637,37906,37907,37908,37909,37910,10546,37912,37915,37916,37917,4952,
2521, 551, 12523,317, 317, 4962, 370, 8392, 37918,990, 12523,34987,3999, 317, 317, 350, 363, 7650, 1999, 37924,37925,370, 5662, 37929,37926,37927,37928,
30890,37930,37931,37932,37933,37935,363, 317, 37937,37938,6631, 7866, 37940,3078, 37941,5662, 350, 9289, 15047,37942,10538,37939,10022,351, 3243, 22599,19617,
- 536, 37944,8228, 317, 317, 490, 10898,317, 37946,37948,37961,37963,14832,12028,343, 490, 5526, 37947,356, 5943, 7035, 37949,9590, 37950,18460,37951,317,
- 37952,7678, 317, 317, 490, 384, 317, 381, 351, 8023, 317, 20920,37953,8023, 7871, 11709,22591,37957,37959,370, 6598, 37954,37955,37956,37958,37960,384,
+ 536, 37944,8228, 317, 317, 490, 10898,317, 37946,37948,37961,37963,14832,12028,343, 490, 5526, 37947,356, 5943, 7035, 37949,9590, 37950,18460,37951,317,
+ 37952,7678, 317, 317, 490, 384, 317, 381, 351, 8023, 317, 20920,37953,8023, 7871, 11709,22591,37957,37959,370, 6598, 37954,37955,37956,37958,37960,384,
384, 12154,343, 351, 37962,1992, 317, 317, 439, 4952, 37964,37965,317, 317, 371, 37966,37968,16092,37971,317, 384, 37972,2022, 362, 317, 5810, 37981,
1358, 37982,350, 37969,436, 365, 365, 37970,317, 621, 5055, 901, 320, 37973,37975,4249, 37976,4952, 37978,37979,37980,37974,317, 1347, 25782,16602,37977,
10641,1347, 4980, 317, 8023, 12154,2022, 12025,5809, 439, 2063, 37983,2022, 37984,7035, 2247, 370, 404, 37987,37991,37993,37994,37997,12556,6089, 37998,37999,
- 38002,38005,1108, 38007,38009,38011,38012,2948, 38014,37988,6900, 365, 317, 37989,21067,317, 37990,362, 37992,479, 14836,6894, 12731,37995,317, 15738,317,
- 37996,317, 6551, 27177,317, 343, 11918,38000,466, 38001,38003,9450, 24429,350, 38004,2126, 427, 38006,343, 10956,38008,2261, 1998, 5487, 38010,5960, 2117,
- 1060, 351, 9876, 363, 6354, 1588, 38013,356, 408, 38016,38019,365, 38023,38024,9262, 17583,2631, 317, 38027,317, 38017,1347, 18712,317, 38018,18500,490,
- 11709,38020,317, 317, 317, 317, 38021,2117, 7072, 13023,1060, 317, 9479, 38022,37832,6089, 1453, 389, 38025,38026,7072, 13023,5224, 6089, 317, 428, 590,
+ 38002,38005,1108, 38007,38009,38011,38012,2948, 38014,37988,6900, 365, 317, 37989,21067,317, 37990,362, 37992,479, 14836,6894, 12731,37995,317, 15738,317,
+ 37996,317, 6551, 27177,317, 343, 11918,38000,466, 38001,38003,9450, 24429,350, 38004,2126, 427, 38006,343, 10956,38008,2261, 1998, 5487, 38010,5960, 2117,
+ 1060, 351, 9876, 363, 6354, 1588, 38013,356, 408, 38016,38019,365, 38023,38024,9262, 17583,2631, 317, 38027,317, 38017,1347, 18712,317, 38018,18500,490,
+ 11709,38020,317, 317, 317, 317, 38021,2117, 7072, 13023,1060, 317, 9479, 38022,37832,6089, 1453, 389, 38025,38026,7072, 13023,5224, 6089, 317, 428, 590,
14974,1347, 31322,351, 38030,38032,8491, 339, 365, 539, 1044, 38033,38034,38035,38036,38037,38038,38039,38040,38041,38042,38043,38044,38045,38046,38131,38147,
38159,38187,38195,38204,38214,38221,38293,38299,126, 38405,38451,363, 38519,38535,127, 38683,38716,38747,38762,38768,38773,38784,38802,1087, 38047,38049,38050,
38088,38089,317, 38090,38092,317, 38096,38097,38098,38112,38114,38123,38048,317, 38051,38052,38055,38056,16399,38057,12429,38058,38061,38064,38070,38075,38076,
- 38079,38080,38086,38087,317, 38053,550, 2117, 38054,393, 23950,38059,38060,38062,38063,2022, 317, 404, 38065,38067,38068,38069,317, 38066,6355, 22561,8139,
- 371, 1992, 38071,363, 38072,317, 5450, 38073,38074,7438, 18941,38077,38078,14371,384, 426, 38081,4268, 38082,38083,38084,1060, 381, 1999, 38085,5623, 371,
- 2156, 17265,565, 2590, 343, 2022, 317, 38091,363, 317, 22775,10877,370, 317, 38093,317, 38094,14062,379, 38095,317, 24398,24267,1325, 370, 466, 317,
- 317, 15138,9648, 317, 38099,363, 404, 38100,38101,4984, 31475,370, 317, 363, 4980, 317, 38051,38102,6028, 14444,1347, 418, 38105,38106,38108,38110,317,
- 317, 24393,38103,479, 38104,2102, 11229,15474,317, 26037,38107,38109,38111,2063, 38113,404, 22578,1060, 4472, 10422,38115,466, 5661, 363, 38120,38122,317,
+ 38079,38080,38086,38087,317, 38053,550, 2117, 38054,393, 23950,38059,38060,38062,38063,2022, 317, 404, 38065,38067,38068,38069,317, 38066,6355, 22561,8139,
+ 371, 1992, 38071,363, 38072,317, 5450, 38073,38074,7438, 18941,38077,38078,14371,384, 426, 38081,4268, 38082,38083,38084,1060, 381, 1999, 38085,5623, 371,
+ 2156, 17265,565, 2590, 343, 2022, 317, 38091,363, 317, 22775,10877,370, 317, 38093,317, 38094,14062,379, 38095,317, 24398,24267,1325, 370, 466, 317,
+ 317, 15138,9648, 317, 38099,363, 404, 38100,38101,4984, 31475,370, 317, 363, 4980, 317, 38051,38102,6028, 14444,1347, 418, 38105,38106,38108,38110,317,
+ 317, 24393,38103,479, 38104,2102, 11229,15474,317, 26037,38107,38109,38111,2063, 38113,404, 22578,1060, 4472, 10422,38115,466, 5661, 363, 38120,38122,317,
38116,38118,9624, 4952, 362, 2402, 317, 13917,38117,1347, 38119,317, 317, 317, 317, 317, 317, 5537, 370, 28208,404, 38121,9624, 434, 373, 38124,38126,
- 350, 1020, 38129,317, 38125,317, 351, 370, 317, 22783,38127,38128,2260, 439, 363, 317, 317, 317, 38130,539, 22558,551, 38132,38136,38137,382, 350,
- 38143,2108, 466, 38133,479, 38134,38135,317, 363, 4984, 8266, 317, 38138,38141,345, 38139,38140,351, 38142,317, 9064, 466, 317, 38144,6697, 38145,363,
+ 350, 1020, 38129,317, 38125,317, 351, 370, 317, 22783,38127,38128,2260, 439, 363, 317, 317, 317, 38130,539, 22558,551, 38132,38136,38137,382, 350,
+ 38143,2108, 466, 38133,479, 38134,38135,317, 363, 4984, 8266, 317, 38138,38141,345, 38139,38140,351, 38142,317, 9064, 466, 317, 38144,6697, 38145,363,
38146,574, 20462,38148,38149,490, 3710, 2474, 316, 38158,2073, 30089,350, 317, 38150,1998, 38152,38155,21186,5662, 38157,362, 5255, 38151,317, 38153,38154,
5896, 7618, 551, 38156,317, 6222, 419, 543, 12277,339, 15156,5896, 38160,38164,38166,38172,38175,38177,38178,38179,38181,6601, 38184,38186,553, 10081,10081,
317, 317, 363, 16318,38161,317, 38162,38163,363, 38165,2829, 9938, 550, 1588, 38167,466, 1020, 14263,14263,2584, 38168,38169,38170,38171,350, 38173,10086,
38174,38176,439, 6036, 439, 38180,38182,317, 38183,317, 8448, 38185,10592,345, 5538, 317, 14263,18840,38188,5363, 370, 2568, 317, 12154,38189,20779,20721,
317, 38190,38194,22792,1345, 343, 350, 390, 363, 10422,317, 38191,381, 38192,596, 501, 317, 38193,317, 38196,38197,18430,350, 38203,38198,5537, 38202,
- 350, 6046, 38199,38200,12774,7428, 363, 362, 38201,363, 6036, 4738, 38205,38206,38207,38210,38213,9938, 7490, 343, 4976, 21037,25280,365, 7852, 317, 4591,
+ 350, 6046, 38199,38200,12774,7428, 363, 362, 38201,363, 6036, 4738, 38205,38206,38207,38210,38213,9938, 7490, 343, 4976, 21037,25280,365, 7852, 317, 4591,
6854, 38208,350, 317, 363, 38209,363, 38211,38212,2063, 317, 10035,351, 363, 439, 38215,351, 317, 317, 3505, 317, 38216,317, 38217,38218,38219,38220,
- 363, 38222,38224,38225,38238,38239,38241,38244,38245,38247,38253,38266,373, 38282,38284,38291,32298,38223,3505, 38226,38228,6598, 38234,38236,11709,350, 9938,
- 479, 24637,38237,317, 38227,38229,1453, 2219, 38231,38232,38233,7949, 38230,6594, 2193, 11310,6599, 27334,38235,317, 317, 332, 2219, 317, 4959, 343, 362,
- 38240,350, 38242,317, 38243,5362, 317, 9521, 38246,317, 38248,12713,10561,5662, 38250,38249,38251,38252,38254,38255,543, 38258,38260,8178, 38261,4984, 371,
+ 363, 38222,38224,38225,38238,38239,38241,38244,38245,38247,38253,38266,373, 38282,38284,38291,32298,38223,3505, 38226,38228,6598, 38234,38236,11709,350, 9938,
+ 479, 24637,38237,317, 38227,38229,1453, 2219, 38231,38232,38233,7949, 38230,6594, 2193, 11310,6599, 27334,38235,317, 317, 332, 2219, 317, 4959, 343, 362,
+ 38240,350, 38242,317, 38243,5362, 317, 9521, 38246,317, 38248,12713,10561,5662, 38250,38249,38251,38252,38254,38255,543, 38258,38260,8178, 38261,4984, 371,
317, 7392, 38256,38257,390, 2219, 38259,38262,2571, 545, 38263,38264,38265,9524, 7600, 38267,38268,38269,38272,24119,38273,38274,38275,20011,38278,317, 38280,
- 21123,501, 12564,317, 317, 317, 317, 38270,38271,553, 317, 2222, 2219, 317, 1108, 24181,317, 356, 501, 345, 38276,38277,1108, 38279,27913,362, 673,
- 38281,382, 343, 5662, 450, 317, 8519, 317, 38283,20545,317, 317, 2366, 3007, 5335, 38285,38287,450, 12704,3987, 350, 362, 350, 38288,38290,38286,317,
+ 21123,501, 12564,317, 317, 317, 317, 38270,38271,553, 317, 2222, 2219, 317, 1108, 24181,317, 356, 501, 345, 38276,38277,1108, 38279,27913,362, 673,
+ 38281,382, 343, 5662, 450, 317, 8519, 317, 38283,20545,317, 317, 2366, 3007, 5335, 38285,38287,450, 12704,3987, 350, 362, 350, 38288,38290,38286,317,
317, 9567, 7949, 317, 38289,4959, 350, 350, 466, 11709,4952, 38292,350, 351, 25351,15424,5663, 2405, 15221,949, 1108, 317, 38294,370, 38297,38295,38296,
- 38298,317, 38300,38302,38301,317, 26942,38303,38305,38306,38312,38315,38317,38324,38327,6917, 38336,38373,38384,38385,6601, 38393,38399,317, 38400,38404,317,
+ 38298,317, 38300,38302,38301,317, 26942,38303,38305,38306,38312,38315,38317,38324,38327,6917, 38336,38373,38384,38385,6601, 38393,38399,317, 38400,38404,317,
350, 38304,566, 29457,35634,472, 38307,38308,38309,38310,38311,38313,362, 14263,317, 38314,7949, 1347, 38316,317, 317, 317, 32981,38318,10946,38320,38322,
38319,1344, 2310, 9012, 38321,370, 38323,10592,1108, 38325,38326,317, 6563, 501, 345, 350, 404, 4952, 25993,6046, 317, 38328,38329,4965, 12184,22412,38334,
38335,427, 317, 38330,345, 38331,38332,317, 38060,38333,12083,32397,317, 356, 1999, 38337,1087, 38338,38339,24393,38343,2609, 9060, 38347,38349,38351,23019,
38352,38363,38366,38369,38370,38371,345, 356, 1325, 317, 38340,38341,38342,381, 382, 38344,7949, 38346,317, 16989,345, 38345,38348,343, 7389, 24029,38350,
- 5055, 390, 3987, 11928,5241, 5663, 2108, 10855,545, 38353,38354,317, 317, 1353, 317, 1353, 428, 2134, 38355,38357,38358,317, 38359,317, 38361,589, 637,
+ 5055, 390, 3987, 11928,5241, 5663, 2108, 10855,545, 38353,38354,317, 317, 1353, 317, 1353, 428, 2134, 38355,38357,38358,317, 38359,317, 38361,589, 637,
317, 5826, 38356,363, 317, 2322, 38360,501, 38362,38364,38365,2134, 466, 38367,18840,38368,317, 38372,4925, 317, 317, 7389, 38374,11709,38375,33712,38376,
- 38378,38379,439, 38380,34265,317, 317, 317, 8488, 317, 9720, 10592,317, 38377,317, 4738, 317, 466, 2022, 362, 38381,38382,381, 38383,393, 317, 8275,
- 949, 3800, 38386,10422,379, 38387,3999, 38390,38391,317, 38388,38388,38389,18165,2272, 2366, 38392,419, 38394,38395,2022, 363, 38398,317, 317, 390, 317,
+ 38378,38379,439, 38380,34265,317, 317, 317, 8488, 317, 9720, 10592,317, 38377,317, 4738, 317, 466, 2022, 362, 38381,38382,381, 38383,393, 317, 8275,
+ 949, 3800, 38386,10422,379, 38387,3999, 38390,38391,317, 38388,38388,38389,18165,2272, 2366, 38392,419, 38394,38395,2022, 363, 38398,317, 317, 390, 317,
38396,38397,365, 35948,363, 351, 356, 363, 426, 351, 363, 2021, 2134, 38401,13011,317, 2551, 2067, 38402,317, 38403,363, 382, 13776,38406,38412,38414,
- 38416,14832,38424,38427,38436,38445,38448,38450,317, 38407,38408,350, 574, 38409,10253,490, 38410,38411,5898, 38413,317, 13269,6674, 317, 317, 2208, 363,
- 38415,9289, 317, 350, 844, 11992,38417,30151,38419,38418,541, 351, 317, 13856,317, 38420,38421,38422,38423,1347, 9548, 38425,38426,384, 1060, 317, 317,
+ 38416,14832,38424,38427,38436,38445,38448,38450,317, 38407,38408,350, 574, 38409,10253,490, 38410,38411,5898, 38413,317, 13269,6674, 317, 317, 2208, 363,
+ 38415,9289, 317, 350, 844, 11992,38417,30151,38419,38418,541, 351, 317, 13856,317, 38420,38421,38422,38423,1347, 9548, 38425,38426,384, 1060, 317, 317,
38428,38429,38433,363, 11825,317, 343, 38430,317, 38432,317, 350, 38431,382, 317, 317, 38434,38435,351, 437, 1230, 38437,37200,38438,1325, 38439,38440,
38441,38442,38443,7328, 38444,1347, 27814,38446,8519, 8023, 343, 38447,404, 38449,317, 545, 2022, 15748,5809, 448, 38452,23996,38454,38456,38472,8519, 38475,
7401, 38477,596, 38480,38486,362, 38488,38501,38510,38516,6089, 38518,362, 1588, 38453,317, 9109, 3505, 8016, 38455,501, 32099,10149,38457,15745,363, 38466,
- 38471,317, 317, 317, 38458,404, 38459,21757,38462,38463,38460,38461,38464,38465,317, 363, 38467,363, 1548, 38468,317, 5995, 38470,38469,317, 990, 448,
+ 38471,317, 317, 317, 38458,404, 38459,21757,38462,38463,38460,38461,38464,38465,317, 363, 38467,363, 1548, 38468,317, 5995, 38470,38469,317, 990, 448,
5241, 38473,362, 38474,34034,2022, 317, 38476,33377,412, 317, 381, 317, 1020, 6600, 38478,363, 38479,7911, 351, 404, 38481,6415, 10476,343, 317, 38482,
317, 317, 38483,38484,38485,1345, 2272, 38487,317, 38489,38490,38496,363, 317, 15502,356, 38491,553, 362, 343, 5662, 317, 1020, 38494,317, 38492,38493,
- 38495,317, 371, 345, 350, 38497,38499,317, 5055, 351, 38498,38500,351, 5300, 404, 38502,38503,38508,38504,38505,12994,13221,38506,370, 18329,29423,317,
- 345, 38507,38509,317, 317, 317, 317, 38511,8023, 38514,23446,38515,363, 18840,38512,38513,343, 35570,363, 945, 365, 351, 596, 14340,317, 363, 8178,
+ 38495,317, 371, 345, 350, 38497,38499,317, 5055, 351, 38498,38500,351, 5300, 404, 38502,38503,38508,38504,38505,12994,13221,38506,370, 18329,29423,317,
+ 345, 38507,38509,317, 317, 317, 317, 38511,8023, 38514,23446,38515,363, 18840,38512,38513,343, 35570,363, 945, 365, 351, 596, 14340,317, 363, 8178,
38517,317, 1358, 38520,10943,2631, 350, 38525,38528,350, 350, 350, 38529,38532,5809, 22466,38521,38522,38523,38524,30712,595, 38526,38527,511, 38530,12712,
350, 551, 5105, 38531,38533,37608,38534,38536,38537,38538,38547,38559,38564,38565,16136,38576,38581,38584,38591,38594,38613,38621,38627,38633,38643,38660,38670,
- 38671,38673,7582, 38674,38539,38542,38544,9525, 356, 317, 1345, 38546,38540,19478,38541,38543,38545,356, 27814,370, 317, 38548,38549,38551,38556,32958,317,
- 18092,343, 11108,29783,363, 317, 38550,350, 317, 24024,38552,1160, 317, 317, 404, 38553,5752, 317, 38554,38555,1347, 4591, 317, 38557,317, 38558,382,
+ 38671,38673,7582, 38674,38539,38542,38544,9525, 356, 317, 1345, 38546,38540,19478,38541,38543,38545,356, 27814,370, 317, 38548,38549,38551,38556,32958,317,
+ 18092,343, 11108,29783,363, 317, 38550,350, 317, 24024,38552,1160, 317, 317, 404, 38553,5752, 317, 38554,38555,1347, 4591, 317, 38557,317, 38558,382,
350, 362, 38560,38561,38562,1347, 345, 38563,317, 8020, 466, 362, 363, 18700,317, 345, 38566,370, 38567,12584,38570,317, 317, 38571,38572,5201, 38573,
38575,317, 38568,5328, 38569,317, 527, 317, 25877,38574,551, 2809, 38577,38580,38578,381, 317, 38579,566, 349, 38227,35025,2024, 9938, 5861, 381, 38582,
38583,5457, 2156, 38585,2152, 38587,38588,6394, 317, 38586,381, 38589,38590,370, 38592,38593,370, 29866,1453, 382, 38595,38604,38608,38611,437, 345, 38596,
- 38599,317, 343, 6555, 1347, 38597,38598,345, 363, 363, 13288,38600,38601,38602,38603,29870,38605,1160, 401, 317, 317, 590, 38606,317, 38607,6163, 490,
- 317, 490, 38609,2272, 38610,990, 317, 362, 317, 317, 38612,317, 20424,2110, 38614,38618,4965, 38619,363, 404, 317, 6555, 38615,9525, 38616,1108, 1108,
+ 38599,317, 343, 6555, 1347, 38597,38598,345, 363, 363, 13288,38600,38601,38602,38603,29870,38605,1160, 401, 317, 317, 590, 38606,317, 38607,6163, 490,
+ 317, 490, 38609,2272, 38610,990, 317, 362, 317, 317, 38612,317, 20424,2110, 38614,38618,4965, 38619,363, 404, 317, 6555, 38615,9525, 38616,1108, 1108,
38617,317, 317, 38620,382, 651, 38622,345, 38623,356, 362, 38625,317, 390, 38626,345, 10279,5003, 6172, 5634, 38624,17434,317, 38628,38629,2108, 38631,
- 38630,30195,38632,38634,38636,38637,38638,33255,5662, 38641,38642,6892, 356, 317, 490, 38635,9711, 317, 5105, 317, 6849, 16197,990, 371, 990, 1078, 362,
+ 38630,30195,38632,38634,38636,38637,38638,33255,5662, 38641,38642,6892, 356, 317, 490, 38635,9711, 317, 5105, 317, 6849, 16197,990, 371, 990, 1078, 362,
38639,36966,381, 38640,7035, 317, 404, 5897, 38644,38647,6598, 38648,38655,362, 5332, 38659,38645,6696, 38646,5926, 28588,38649,9624, 38651,38652,362, 38654,
7949, 2551, 38650,38653,38656,38657,38658,576, 363, 317, 38661,12584,1109, 466, 38662,38664,317, 10487,38669,317, 10546,317, 38663,38665,38666,38667,38668,
- 5896, 380, 350, 382, 38672,382, 380, 342, 382, 2063, 38675,38676,6598, 35634,38682,382, 10560,5205, 38677,317, 317, 38678,38679,38680,38681,351, 370,
+ 5896, 380, 350, 382, 38672,382, 380, 342, 382, 2063, 38675,38676,6598, 35634,38682,382, 10560,5205, 38677,317, 317, 38678,38679,38680,38681,351, 370,
38684,38686,2024, 38687,38690,38693,38695,38698,38701,38711,38714,38685,384, 356, 38688,38689,5323, 23268,38691,38692,317, 38694,363, 7452, 38696,38697,38699,
- 317, 38700,18281,345, 38702,38709,38710,362, 3999, 317, 38703,38706,317, 317, 32069,2193, 317, 362, 10664,38704,2271, 38705,38707,38708,5055, 382, 363,
+ 317, 38700,18281,345, 38702,38709,38710,362, 3999, 317, 38703,38706,317, 317, 32069,2193, 317, 362, 10664,38704,2271, 38705,38707,38708,5055, 382, 363,
439, 38712,363, 38713,38715,38717,38719,9624, 38734,38739,16008,38740,2391, 38741,38742,317, 38746,38718,351, 362, 317, 38720,38721,38722,38724,38725,38728,
- 38730,38732,38733,38723,2152, 316, 2272, 38726,38727,38729,38731,38735,38737,38736,38738,5537, 362, 38743,38744,350, 2391, 350, 317, 12845,317, 390, 317,
+ 38730,38732,38733,38723,2152, 316, 2272, 38726,38727,38729,38731,38735,38737,38736,38738,5537, 362, 38743,38744,350, 2391, 350, 317, 12845,317, 390, 317,
38745,38748,38752,371, 12144,2134, 317, 5662, 382, 2134, 38753,38755,38760,15756,38761,38749,38750,38751,345, 317, 38754,382, 6163, 38756,501, 12731,38757,
- 2022, 350, 38758,38759,317, 38763,490, 38766,12756,38767,38764,38765,317, 363, 5661, 351, 1011, 38769,38770,2021, 38771,332, 38772,317, 4980, 332, 380,
+ 2022, 350, 38758,38759,317, 38763,490, 38766,12756,38767,38764,38765,317, 363, 5661, 351, 1011, 38769,38770,2021, 38771,332, 38772,317, 4980, 332, 380,
317, 381, 317, 38774,345, 554, 2152, 38783,38775,38778,38780,28079,343, 38781,38776,38777,38779,9852, 554, 38782,317, 38785,38786,38791,2024, 466, 38792,
38793,38794,5662, 38796,38797,38798,6598, 38800,38801,16278,2584, 38787,38788,363, 8178, 317, 38790,353, 317, 317, 38789,317, 26283,317, 343, 2261, 38795,
4984, 605, 12731,554, 38799,8906, 466, 551, 2063, 10938,38803,7850, 38805,38812,38815,38816,38819,18774,38823,38824,38806,38807,38810,317, 1108, 4115, 38808,
38809,612, 38811,19065,38813,38814,3664, 22940,38817,38818,24361,38820,38821,38822,38825,38827,38828,317, 38829,317, 38830,38831,38834,38844,38865,38874,38895,
- 38896,38937,590, 38940,38949,38953,39028,39041,2117, 39084,39111,39135,39175,39196,39198,39200,490, 39201,38832,23574,38833,38835,404, 38838,38842,8037, 490,
- 350, 38843,551, 38836,38837,6917, 317, 317, 5255, 20613,382, 21053,345, 38839,38840,317, 38841,8214, 317, 365, 10655,37598,317, 38845,7657, 38846,427,
+ 38896,38937,590, 38940,38949,38953,39028,39041,2117, 39084,39111,39135,39175,39196,39198,39200,490, 39201,38832,23574,38833,38835,404, 38838,38842,8037, 490,
+ 350, 38843,551, 38836,38837,6917, 317, 317, 5255, 20613,382, 21053,345, 38839,38840,317, 38841,8214, 317, 365, 10655,37598,317, 38845,7657, 38846,427,
3079, 427, 38847,38854,38862,11236,38863,12057,404, 317, 38848,38853,15561,317, 38849,38851,38850,38852,3987, 404, 317, 317, 38855,38856,38858,38857,38859,
38860,38861,554, 426, 1345, 3999, 371, 317, 38864,370, 317, 38866,38867,38868,38873,15435,13558,317, 490, 2809, 1943, 317, 7314, 2193, 38869,365, 38870,
- 317, 38872,365, 1230, 38871,6851, 3284, 2117, 38875,38876,38877,317, 11310,38878,1347, 317, 38879,38892,38894,351, 15772,38880,38884,38887,332, 26214,6904,
- 38881,401, 38882,38883,20086,317, 317, 38885,38886,38888,38739,23551,38889,38890,38891,38893,26175,38897,38899,404, 38900,38908,38931,10223,362, 38933,404,
+ 317, 38872,365, 1230, 38871,6851, 3284, 2117, 38875,38876,38877,317, 11310,38878,1347, 317, 38879,38892,38894,351, 15772,38880,38884,38887,332, 26214,6904,
+ 38881,401, 38882,38883,20086,317, 317, 38885,38886,38888,38739,23551,38889,38890,38891,38893,26175,38897,38899,404, 38900,38908,38931,10223,362, 38933,404,
38934,317, 11626,38898,2551, 38901,38903,3079, 317, 38902,38859,317, 38904,38905,8361, 38906,38907,15837,426, 427, 38909,21382,38912,2413, 3652, 38914,38915,
38178,38922,32249,8722, 38923,38924,6598, 38928,38910,5898, 38911,448, 38913,6710, 380, 343, 38916,370, 38918,317, 38917,343, 38919,343, 38920,38921,15293,
466, 317, 476, 574, 534, 12154,2553, 558, 38925,2108, 38926,8047, 558, 38927,38929,439, 2063, 38930,38932,370, 21758,2078, 38935,38936,15892,38938,38939,
@@ -8839,217 +8834,217 @@ static const unsigned int ChildLocs[185261] =
38962,38964,38972,362, 350, 38973,38963,38965,38968,38314,38970,13364,38966,38967,38969,38971,362, 408, 466, 19187,38976,38978,3075, 362, 12934,8488, 38980,
38981,38984,38987,38990,38992,39002,39004,39005,39006,16825,39008,5961, 39010,39011,10081,26181,2732, 1588, 38985,38986,7590, 38988,2368, 4949, 38989,38991,30400,
448, 38993,38997,317, 362, 38998,39000,39001,317, 38994,38995,38996,38999,4952, 4949, 356, 362, 317, 356, 317, 6599, 4952, 355, 39003,355, 392, 14161,
- 4965, 350, 39007,317, 39009,10452,6195, 545, 7072, 5752, 362, 466, 18840,39012,39013,7866, 9450, 317, 32568,419, 39017,501, 4738, 363, 39019,39018,317,
- 10487,2323, 16989,39021,350, 363, 317, 12756,317, 317, 39022,39023,39025,39026,2389, 351, 419, 39029,350, 39032,39035,39036,39040,2110, 13686,39030,6551,
- 39031,7698, 365, 39033,6555, 490, 4925, 39034,9012, 5428, 7797, 39037,350, 3079, 39038,9938, 2301, 39039,7053, 5626, 5626, 39042,39043,39049,39063,39065,317,
- 389, 39066,2022, 362, 39068,39070,39075,39078,39079,39083,404, 6199, 362, 490, 3505, 317, 39044,39048,39045,6021, 39046,362, 39047,10223,4980, 428, 7698,
- 39050,4984, 332, 39052,39054,39056,39059,39060,39061,27846,2553, 9931, 39051,317, 1453, 5897, 5991, 466, 22177,362, 317, 1345, 39053,39055,39057,39058,530,
- 362, 363, 5343, 39062,5711, 7698, 15068,39064,362, 7949, 9425, 317, 8136, 554, 345, 343, 15887,39067,10223,28479,317, 2369, 39069,37217,345, 39071,6900,
+ 4965, 350, 39007,317, 39009,10452,6195, 545, 7072, 5752, 362, 466, 18840,39012,39013,7866, 9450, 317, 32568,419, 39017,501, 4738, 363, 39019,39018,317,
+ 10487,2323, 16989,39021,350, 363, 317, 12756,317, 317, 39022,39023,39025,39026,2389, 351, 419, 39029,350, 39032,39035,39036,39040,2110, 13686,39030,6551,
+ 39031,7698, 365, 39033,6555, 490, 4925, 39034,9012, 5428, 7797, 39037,350, 3079, 39038,9938, 2301, 39039,7053, 5626, 5626, 39042,39043,39049,39063,39065,317,
+ 389, 39066,2022, 362, 39068,39070,39075,39078,39079,39083,404, 6199, 362, 490, 3505, 317, 39044,39048,39045,6021, 39046,362, 39047,10223,4980, 428, 7698,
+ 39050,4984, 332, 39052,39054,39056,39059,39060,39061,27846,2553, 9931, 39051,317, 1453, 5897, 5991, 466, 22177,362, 317, 1345, 39053,39055,39057,39058,530,
+ 362, 363, 5343, 39062,5711, 7698, 15068,39064,362, 7949, 9425, 317, 8136, 554, 345, 343, 15887,39067,10223,28479,317, 2369, 39069,37217,345, 39071,6900,
39073,343, 39072,39074,39076,39077,390, 6195, 370, 12154,2022, 363, 39080,466, 363, 4980, 39082,317, 39081,14708,31023,12287,19811,490, 39085,3078, 39088,
39090,39110,3987, 39086,39087,39089,39091,39094,39098,12141,39099,317, 317, 39092,39093,317, 317, 39095,5223, 381, 39096,39097,2134, 2134, 317, 39100,23595,
39104,39107,317, 39101,39103,39102,39105,39106,39108,39109,350, 2022, 2509, 39112,317, 39113,466, 39114,39115,4952, 39116,39117,6834, 39124,39130,39131,39134,
590, 317, 9702, 317, 365, 5238, 317, 332, 9174, 6900, 490, 8926, 450, 450, 3284, 501, 15074,5439, 39118,39120,39121,490, 6808, 39119,3284, 317, 39122,
- 39123,39125,39126,39129,317, 13426,5792, 39127,5896, 317, 32952,8948, 317, 39128,317, 5663, 15221,5896, 8948, 39132,39133,419, 39136,38049,317, 39137,554,
- 10223,39138,39139,39140,8178, 39145,39148,332, 317, 2078, 317, 317, 1060, 36614,39141,39142,39143,317, 317, 39144,2381, 317, 8557, 317, 6623, 39146,466,
+ 39123,39125,39126,39129,317, 13426,5792, 39127,5896, 317, 32952,8948, 317, 39128,317, 5663, 15221,5896, 8948, 39132,39133,419, 39136,38049,317, 39137,554,
+ 10223,39138,39139,39140,8178, 39145,39148,332, 317, 2078, 317, 317, 1060, 36614,39141,39142,39143,317, 317, 39144,2381, 317, 8557, 317, 6623, 39146,466,
39147,317, 317, 396, 317, 8178, 317, 39149,9993, 39151,39152,39174,39150,2271, 356, 39153,18138,1588, 39159,5634, 39161,39164,39154,39155,39156,39157,39158,
39160,39162,39163,39165,1160, 39166,39167,1347, 39168,10376,5418, 21910,317, 39169,39170,39171,39172,39173,351, 521, 317, 39176,39177,39183,2326, 39184,39187,
- 39188,39191,39192,39193,39195,39178,2584, 39179,39180,39182,332, 362, 39181,390, 362, 317, 317, 39185,39186,39189,4984, 39190,365, 2078, 2510, 39194,343,
+ 39188,39191,39192,39193,39195,39178,2584, 39179,39180,39182,332, 362, 39181,390, 362, 317, 317, 39185,39186,39189,4984, 39190,365, 2078, 2510, 39194,343,
362, 350, 404, 1992, 2156, 33590,24775,350, 39197,317, 5477, 39199,24714,363, 404, 39202,351, 355, 7874, 39204,39205,39207,39210,39213,39216,606, 39218,
39206,6581, 39208,39209,356, 18809,317, 39211,39212,39214,370, 39215,396, 39217,39219,607, 39220,39221,1193, 39222,39224,39225,565, 39226,39227,39229,19931,
- 10997,39234,6901, 39230,39231,39232,39233,490, 8455, 370, 1481, 39235,345, 345, 39237,39239,7871, 390, 339, 317, 39238,390, 39241,2997, 363, 39242,2004,
- 39243,39248,39267,39292,39308,39325,39352,39369,39384,39388,39390,130, 39517,39603,39658,39693,965, 39711,39780,39816,39858,39903,39916,39939,39940,39946,9425,
+ 10997,39234,6901, 39230,39231,39232,39233,490, 8455, 370, 1481, 39235,345, 345, 39237,39239,7871, 390, 339, 317, 39238,390, 39241,2997, 363, 39242,2004,
+ 39243,39248,39267,39292,39308,39325,39352,39369,39384,39388,39390,130, 39517,39603,39658,39693,965, 39711,39780,39816,39858,39903,39916,39939,39940,39946,9425,
39244,317, 39246,39247,1078, 5896, 317, 343, 39245,343, 317, 439, 363, 439, 5273, 317, 343, 317, 39249,39250,39253,39254,39256,7401, 39258,39260,39261,
- 39262,39265,39266,317, 371, 317, 381, 4943, 39251,39252,5441, 317, 9783, 1347, 345, 17019,5105, 317, 39255,317, 371, 317, 362, 317, 39257,2087, 356,
+ 39262,39265,39266,317, 371, 317, 381, 4943, 39251,39252,5441, 317, 9783, 1347, 345, 17019,5105, 317, 39255,317, 371, 317, 362, 317, 39257,2087, 356,
39259,317, 39263,39264,371, 345, 501, 363, 13219,574, 39268,39279,39290,39269,5896, 39270,24775,39271,33156,39273,39274,39272,349, 7651, 39275,39277,39276,
578, 373, 11245,39278,2272, 2298, 363, 38383,8904, 39280,16318,2022, 362, 2022, 317, 490, 39281,20671,381, 39287,39282,39283,20672,7590, 2584, 448, 39284,
39285,39286,39288,5942, 1909, 317, 633, 673, 1353, 39289,39291,381, 39293,39294,39295,39299,39303,39304,39306,2391, 39307,427, 4965, 472, 317, 5105, 39296,
- 317, 39297,39298,404, 39300,5055, 39301,362, 404, 362, 1347, 317, 39302,5995, 345, 39305,11146,9624, 381, 39309,5840, 39310,39314,25283,39316,39317,9938,
- 39319,39320,39321,39324,2219, 33124,317, 412, 2222, 31227,39311,39313,317, 351, 39312,350, 4965, 33256,39315,317, 317, 362, 15772,39318,6204, 350, 2134,
- 351, 15899,4965, 382, 16131,351, 2568, 2568, 3664, 350, 382, 317, 39322,317, 350, 39323,2566, 4965, 466, 370, 16129,39326,4965, 39327,39343,4591, 343,
- 26175,39344,350, 39346,39350,7408, 4949, 39328,39329,18581,10815,350, 39332,39335,551, 39336,39338,10626,317, 39330,13364,39331,39333,39334,4984, 349, 9609,
- 350, 542, 351, 39337,5022, 5022, 39339,345, 39342,39340,39341,11245,11245,381, 7592, 2272, 37793,39345,9609, 351, 39347,39348,39349,490, 39351,39353,5896,
+ 317, 39297,39298,404, 39300,5055, 39301,362, 404, 362, 1347, 317, 39302,5995, 345, 39305,11146,9624, 381, 39309,5840, 39310,39314,25283,39316,39317,9938,
+ 39319,39320,39321,39324,2219, 33124,317, 412, 2222, 31227,39311,39313,317, 351, 39312,350, 4965, 33256,39315,317, 317, 362, 15772,39318,6204, 350, 2134,
+ 351, 15899,4965, 382, 16131,351, 2568, 2568, 3664, 350, 382, 317, 39322,317, 350, 39323,2566, 4965, 466, 370, 16129,39326,4965, 39327,39343,4591, 343,
+ 26175,39344,350, 39346,39350,7408, 4949, 39328,39329,18581,10815,350, 39332,39335,551, 39336,39338,10626,317, 39330,13364,39331,39333,39334,4984, 349, 9609,
+ 350, 542, 351, 39337,5022, 5022, 39339,345, 39342,39340,39341,11245,11245,381, 7592, 2272, 37793,39345,9609, 351, 39347,39348,39349,490, 39351,39353,5896,
2077, 39356,362, 39360,11089,39362,363, 29025,39363,39366,15274,39367,317, 3079, 39354,39355,381, 317, 11709,4980, 39357,39358,317, 39359,15457,404, 39361,
4965, 16318,343, 317, 356, 381, 7389, 4984, 439, 39364,39365,39368,578, 32352,1915, 390, 5241, 39370,15500,39379,39380,39381,39382,39383,11915,11418,39371,
- 317, 39372,37152,39373,39376,10560,4960, 343, 39374,39375,1020, 39377,39378,351, 6598, 9012, 317, 12142,28434,554, 5836, 450, 39385,39386,18215,427, 883,
+ 317, 39372,37152,39373,39376,10560,4960, 343, 39374,39375,1020, 39377,39378,351, 6598, 9012, 317, 12142,28434,554, 5836, 450, 39385,39386,18215,427, 883,
11146,12060,545, 5537, 317, 39387,356, 5987, 317, 10316,39389,11145,317, 39391,39392,39393,39394,39396,490, 2551, 23657,2551, 317, 381, 317, 1347, 11501,
39395,501, 5238, 501, 490, 39397,2351, 39398,39399,39401,39407,39408,39419,2024, 39423,39424,343, 39432,39433,39460,2571, 39469,1060, 39478,5676, 39480,39489,
- 39500,39501,39503,39504,39509,949, 39400,1230, 362, 317, 317, 8718, 317, 1230, 2108, 39402,479, 39404,317, 2108, 371, 363, 317, 39403,39405,39406,370,
- 317, 317, 27860,11702,5126, 16143,12523,8695, 39409,16603,39412,39414,362, 2571, 39416,39417,20869,317, 1060, 39418,317, 6600, 1160, 39410,39411,9624, 1020,
- 362, 2571, 317, 39413,39415,476, 1347, 317, 396, 381, 350, 39420,317, 39421,362, 1160, 490, 39422,345, 317, 3869, 13110,574, 36281,1020, 363, 7698,
+ 39500,39501,39503,39504,39509,949, 39400,1230, 362, 317, 317, 8718, 317, 1230, 2108, 39402,479, 39404,317, 2108, 371, 363, 317, 39403,39405,39406,370,
+ 317, 317, 27860,11702,5126, 16143,12523,8695, 39409,16603,39412,39414,362, 2571, 39416,39417,20869,317, 1060, 39418,317, 6600, 1160, 39410,39411,9624, 1020,
+ 362, 2571, 317, 39413,39415,476, 1347, 317, 396, 381, 350, 39420,317, 39421,362, 1160, 490, 39422,345, 317, 3869, 13110,574, 36281,1020, 363, 7698,
39425,39429,39430,362, 362, 39431,317, 7682, 2035, 39426,39427,317, 466, 39428,317, 15778,6598, 476, 317, 5093, 39434,5896, 39437,39445,5662, 350, 39453,
39455,39456,317, 7698, 371, 1230, 343, 404, 39435,20539,1230, 39436,317, 8722, 4965, 490, 20869,39438,39440,39444,317, 381, 7949, 363, 39439,363, 39441,
39443,11088,39442,16264,10592,4943, 351, 2567, 363, 3999, 362, 317, 356, 7698, 39446,6546, 9624, 11236,39447,39451,1230, 39448,12616,39449,351, 16250,39449,
- 404, 5809, 39450,5809, 39452,7698, 11236,317, 28079,362, 39454,370, 12421,317, 1266, 317, 317, 35809,9624, 39457,317, 39458,317, 39459,363, 39461,2134,
+ 404, 5809, 39450,5809, 39452,7698, 11236,317, 28079,362, 39454,370, 12421,317, 1266, 317, 317, 35809,9624, 39457,317, 39458,317, 39459,363, 39461,2134,
39462,39465,3023, 4962, 363, 39466,39467,6089, 4949, 343, 39463,1347, 317, 39464,39468,39470,39471,39472,39474,362, 39477,317, 23859,15750,2026, 2272, 39473,
39475,39476,1347, 20065,363, 8686, 39479,22698,39481,370, 39482,12704,362, 39484,39485,39487,350, 12154,39483,343, 7651, 7651, 13960,13960,515, 356, 39486,
- 2272, 363, 426, 39488,363, 5896, 39490,39491,39494,11709,36523,39496,39497,39498,39499,39492,39493,39495,28066,345, 14938,365, 5896, 14938,12696,7192, 362,
- 39502,370, 2219, 39505,9624, 11089,39507,39508,6089, 19590,10467,605, 39506,1060, 476, 21123,343, 39510,39511,39512,4738, 39513,39514,39516,317, 31987,7408,
- 7592, 28079,363, 12288,15221,39515,13336,5810, 39518,39519,39520,39521,39570,596, 39573,39576,39598,39600,39601,7850, 490, 2156, 1020, 9521, 4949, 2156, 4949,
- 317, 1266, 673, 39522,32768,39526,39527,39529,39531,39534,39536,39537,39547,39549,39551,22704,39566,2222, 39523,39524,2328, 39525,3505, 390, 39528,343, 2369,
- 3366, 39530,11229,39532,317, 39533,39535,343, 2509, 3599, 39538,39540,39542,39544,39539,39541,39543,39545,39546,990, 39548,6228, 6996, 633, 511, 356, 339,
+ 2272, 363, 426, 39488,363, 5896, 39490,39491,39494,11709,36523,39496,39497,39498,39499,39492,39493,39495,28066,345, 14938,365, 5896, 14938,12696,7192, 362,
+ 39502,370, 2219, 39505,9624, 11089,39507,39508,6089, 19590,10467,605, 39506,1060, 476, 21123,343, 39510,39511,39512,4738, 39513,39514,39516,317, 31987,7408,
+ 7592, 28079,363, 12288,15221,39515,13336,5810, 39518,39519,39520,39521,39570,596, 39573,39576,39598,39600,39601,7850, 490, 2156, 1020, 9521, 4949, 2156, 4949,
+ 317, 1266, 673, 39522,32768,39526,39527,39529,39531,39534,39536,39537,39547,39549,39551,22704,39566,2222, 39523,39524,2328, 39525,3505, 390, 39528,343, 2369,
+ 3366, 39530,11229,39532,317, 39533,39535,343, 2509, 3599, 39538,39540,39542,39544,39539,39541,39543,39545,39546,990, 39548,6228, 6996, 633, 511, 356, 339,
11055,9866, 39550,404, 5684, 39552,39555,2022, 5205, 39557,39553,39554,39556,39558,39559,39560,39561,10422,466, 317, 39562,39563,39564,39565,551, 39567,39569,
356, 39568,371, 34426,1347, 5201, 39571,317, 39572,7091, 39574,5105, 39575,317, 39577,39580,39582,39585,39588,39592,39594,39597,2555, 38733,39578,39579,39581,
39583,39584,33232,18615,4591, 317, 490, 39586,39587,6088, 521, 4591, 317, 2156, 317, 39589,39590,39591,39593,39595,39596,8583, 18617,39599,390, 27295,39602,
- 410, 39604,5897, 39606,39608,39617,39634,5159, 39638,39640,490, 39641,39643,490, 39653,39654,345, 1526, 39655,39657,39605,350, 317, 15571,317, 39607,428,
+ 410, 39604,5897, 39606,39608,39617,39634,5159, 39638,39640,490, 39641,39643,490, 39653,39654,345, 1526, 39655,39657,39605,350, 317, 15571,317, 39607,428,
317, 380, 39609,380, 39615,2086, 39616,637, 6228, 39610,2731, 633, 317, 39611,362, 39614,19097,4603, 621, 351, 351, 39612,39613,1155, 1060, 317, 14470,
317, 11373,2219, 37217,39618,39619,1266, 317, 633, 39620,39622,39624,39625,39626,39630,39631,3987, 39621,363, 39623,14535,18532,381, 605, 382, 5450, 17641,
- 363, 39627,39628,39629,1033, 466, 317, 39632,39633,7940, 39635,4962, 11635,5623, 317, 590, 39637,39636,490, 2110, 317, 11132,39639,404, 12756,6036, 3999,
- 317, 317, 39642,578, 317, 14938,574, 362, 39644,39646,39647,39652,39645,317, 8100, 317, 39648,39650,39651,317, 6020, 39649,5748, 382, 317, 345, 5897,
- 317, 590, 4738, 39656,2298, 39659,39661,1345, 39664,39667,39671,39674,9702, 317, 357, 39677,39684,39685,39687,39692,2533, 39660,317, 356, 343, 10285,332,
+ 363, 39627,39628,39629,1033, 466, 317, 39632,39633,7940, 39635,4962, 11635,5623, 317, 590, 39637,39636,490, 2110, 317, 11132,39639,404, 12756,6036, 3999,
+ 317, 317, 39642,578, 317, 14938,574, 362, 39644,39646,39647,39652,39645,317, 8100, 317, 39648,39650,39651,317, 6020, 39649,5748, 382, 317, 345, 5897,
+ 317, 590, 4738, 39656,2298, 39659,39661,1345, 39664,39667,39671,39674,9702, 317, 357, 39677,39684,39685,39687,39692,2533, 39660,317, 356, 343, 10285,332,
317, 39662,39663,551, 39665,317, 39666,39668,39670,4952, 39669,5126, 39260,370, 39672,39673,1020, 466, 317, 1060, 12987,317, 33343,317, 6420, 1345, 39675,
- 39676,362, 39678,39680,5793, 2156, 39683,370, 39679,317, 317, 317, 39681,39682,39686,15645,384, 2558, 39688,343, 362, 363, 5020, 39689,39690,39691,9450,
- 350, 39694,39695,39699,6089, 39701,39702,27101,362, 39706,39710,404, 6089, 317, 317, 39696,31338,317, 18971,3987, 39697,39698,3664, 39700,35069,317, 1992,
- 433, 317, 39703,317, 317, 39704,371, 39705,404, 317, 39707,11942,343, 362, 317, 345, 317, 317, 317, 39708,39709,7940, 9289, 14826,9624, 363, 3078,
- 363, 39712,1998, 14084,39714,39716,39717,39718,39724,2022, 39725,39731,39748,39751,39758,39766,39777,39778,39779,317, 883, 39713,317, 317, 8392, 2537, 6563,
- 39715,343, 371, 2391, 15308,9454, 390, 317, 317, 317, 362, 317, 39719,29531,343, 317, 490, 11388,39720,39721,39722,317, 317, 39723,317, 370, 7734,
+ 39676,362, 39678,39680,5793, 2156, 39683,370, 39679,317, 317, 317, 39681,39682,39686,15645,384, 2558, 39688,343, 362, 363, 5020, 39689,39690,39691,9450,
+ 350, 39694,39695,39699,6089, 39701,39702,27101,362, 39706,39710,404, 6089, 317, 317, 39696,31338,317, 18971,3987, 39697,39698,3664, 39700,35069,317, 1992,
+ 433, 317, 39703,317, 317, 39704,371, 39705,404, 317, 39707,11942,343, 362, 317, 345, 317, 317, 317, 39708,39709,7940, 9289, 14826,9624, 363, 3078,
+ 363, 39712,1998, 14084,39714,39716,39717,39718,39724,2022, 39725,39731,39748,39751,39758,39766,39777,39778,39779,317, 883, 39713,317, 317, 8392, 2537, 6563,
+ 39715,343, 371, 2391, 15308,9454, 390, 317, 317, 317, 362, 317, 39719,29531,343, 317, 490, 11388,39720,39721,39722,317, 317, 39723,317, 370, 7734,
2022, 317, 39726,9878, 39728,39729,39730,39727,5974, 2348, 39732,39733,39738,39739,39742,39743,2310, 39744,39745,466, 39747,371, 1230, 317, 9525, 39734,39735,
- 4563, 39737,9695, 36461,317, 37441,350, 380, 2219, 39736,371, 10561,11124,8047, 11960,20023,39740,39741,317, 396, 380, 317, 317, 15202,1160, 371, 371,
- 4965, 317, 317, 382, 390, 370, 5163, 12154,39746,1020, 426, 6228, 317, 633, 371, 8301, 2077, 901, 14501,2272, 317, 23633,39749,10626,10626,39750,332,
- 7850, 8649, 15526,39752,39754,39757,317, 380, 39753,6020, 7091, 39755,362, 317, 39756,511, 2719, 1347, 317, 32982,390, 39759,39764,554, 10147,2022, 362,
+ 4563, 39737,9695, 36461,317, 37441,350, 380, 2219, 39736,371, 10561,11124,8047, 11960,20023,39740,39741,317, 396, 380, 317, 317, 15202,1160, 371, 371,
+ 4965, 317, 317, 382, 390, 370, 5163, 12154,39746,1020, 426, 6228, 317, 633, 371, 8301, 2077, 901, 14501,2272, 317, 23633,39749,10626,10626,39750,332,
+ 7850, 8649, 15526,39752,39754,39757,317, 380, 39753,6020, 7091, 39755,362, 317, 39756,511, 2719, 1347, 317, 32982,390, 39759,39764,554, 10147,2022, 362,
39765,317, 1194, 2024, 6954, 370, 22716,345, 12774,39760,39762,317, 39761,511, 388, 317, 39763,381, 5634, 428, 6598, 551, 355, 466, 5662, 317, 39767,
1345, 39769,362, 5055, 345, 363, 39768,5241, 7098, 39770,39776,317, 39771,39772,39773,39774,39775,22057,317, 412, 6191, 1033, 5309, 545, 35629,2063, 39781,
- 39783,39786,39789,39790,39792,39794,12141,16825,10845,39797,39798,39806,39808,351, 371, 490, 39782,39784,2586, 39785,317, 7408, 317, 371, 317, 11089,363,
- 317, 362, 39787,6420, 317, 39788,578, 6598, 551, 23447,39791,19673,332, 371, 39793,382, 370, 39795,3079, 317, 39796,317, 6900, 39799,39800,3078, 2156,
+ 39783,39786,39789,39790,39792,39794,12141,16825,10845,39797,39798,39806,39808,351, 371, 490, 39782,39784,2586, 39785,317, 7408, 317, 371, 317, 11089,363,
+ 317, 362, 39787,6420, 317, 39788,578, 6598, 551, 23447,39791,19673,332, 371, 39793,382, 370, 39795,3079, 317, 39796,317, 6900, 39799,39800,3078, 2156,
39801,39802,373, 39803,39804,2509, 317, 7888, 370, 39805,32075,39807,6598, 350, 9067, 39809,39813,350, 39815,317, 317, 317, 39810,317, 24226,5335, 39811,
350, 39812,39814,1992, 1347, 5200, 2577, 317, 6228, 39817,39819,39820,39822,39824,39829,39832,39834,39835,39836,514, 39837,39839,2571, 39842,39843,39844,39845,
39851,39856,1358, 39818,365, 32327,39821,345, 25938,356, 2107, 39823,1345, 317, 317, 317, 6420, 6693, 39825,384, 39828,384, 39826,39827,39830,384, 39831,
317, 39833,317, 317, 350, 511, 317, 27498,370, 5332, 16804,392, 13478,3338, 39838,434, 317, 39840,39841,343, 7892, 2218, 479, 3621, 1915, 356, 14549,
- 427, 9097, 39846,39847,39848,39849,381, 12450,4268, 2510, 39850,317, 1383, 317, 39852,39853,343, 362, 363, 39854,39855,1160, 5105, 317, 317, 5223, 6420,
- 2219, 349, 18361,39857,39859,39860,39862,370, 1383, 39863,345, 317, 39868,39870,39871,39874,39876,39878,39900,317, 39902,363, 35585,39861,317, 551, 5055,
- 5055, 7785, 2211, 8137, 4984, 39864,39867,427, 4952, 39865,8519, 39866,511, 363, 5561, 5896, 317, 5561, 2236, 39869,4984, 3075, 35155,39872,362, 39873,317,
- 2077, 356, 466, 382, 317, 3987, 2402, 317, 39875,317, 2211, 31751,39877,370, 317, 39879,501, 39880,39897,10877,39898,15745,362, 350, 39899,356, 9234,
- 1266, 317, 380, 39881,39883,317, 39886,39888,39890,317, 39891,317, 501, 317, 317, 39893,317, 356, 2631, 39882,381, 39884,39885,39887,39889,15216,6593,
+ 427, 9097, 39846,39847,39848,39849,381, 12450,4268, 2510, 39850,317, 1383, 317, 39852,39853,343, 362, 363, 39854,39855,1160, 5105, 317, 317, 5223, 6420,
+ 2219, 349, 18361,39857,39859,39860,39862,370, 1383, 39863,345, 317, 39868,39870,39871,39874,39876,39878,39900,317, 39902,363, 35585,39861,317, 551, 5055,
+ 5055, 7785, 2211, 8137, 4984, 39864,39867,427, 4952, 39865,8519, 39866,511, 363, 5561, 5896, 317, 5561, 2236, 39869,4984, 3075, 35155,39872,362, 39873,317,
+ 2077, 356, 466, 382, 317, 3987, 2402, 317, 39875,317, 2211, 31751,39877,370, 317, 39879,501, 39880,39897,10877,39898,15745,362, 350, 39899,356, 9234,
+ 1266, 317, 380, 39881,39883,317, 39886,39888,39890,317, 39891,317, 501, 317, 317, 39893,317, 356, 2631, 39882,381, 39884,39885,39887,39889,15216,6593,
39892,400, 356, 317, 349, 2156, 39894,39896,14602,2301, 39895,2156, 596, 317, 464, 363, 5684, 39901,363, 7168, 38851,362, 317, 317, 39904,39907,39908,
- 39911,39913,4952, 18905,39914,39915,39905,16594,349, 39906,5890, 37676,7565, 4974, 39909,317, 8695, 7088, 356, 418, 466, 6195, 39910,39912,371, 382, 317,
+ 39911,39913,4952, 18905,39914,39915,39905,16594,349, 39906,5890, 37676,7565, 4974, 39909,317, 8695, 7088, 356, 418, 466, 6195, 39910,39912,371, 382, 317,
39917,39918,4280, 39922,39925,5575, 39927,18672,39930,39935,2402, 5810, 39936,39937,39938,490, 20908,317, 380, 317, 343, 317, 343, 39919,5223, 6420, 39920,
22792,39921,39923,343, 39924,317, 35155,4564, 38321,39926,317, 38692,350, 317, 317, 6412, 317, 371, 39928,5538, 404, 39929,439, 39931,39932,317, 39933,
39934,390, 6817, 1588, 4965, 363, 490, 33398,2058, 404, 5809, 39941,4965, 466, 39944,362, 2156, 345, 39945,6578, 317, 39942,39943,28239,1347, 404, 17335,
384, 11916,39947,11034,39949,39951,39952,339, 39954,39957,39960,39950,39953,39955,39956,39958,39959,39962,39963,39967,1481, 39968,39971,39972,39973,490, 39978,
- 39981,39986,39990,39964,39965,14615,5836, 380, 13110,39966,6352, 13434,371, 39969,39970,39974,30214,39975,39977,35902,39976,5295, 2035, 971, 39979,39980,2631,
+ 39981,39986,39990,39964,39965,14615,5836, 380, 13110,39966,6352, 13434,371, 39969,39970,39974,30214,39975,39977,35902,39976,5295, 2035, 971, 39979,39980,2631,
371, 384, 39982,1481, 39983,317, 39984,39985,39987,12642,39988,39989,39991,39992,15108,332, 39993,39994,339, 7306, 39996,40001,40003,40005,39997,39998,39999,
40000,7631, 18406,40002,7871, 11749,317, 40004,490, 8311, 40007,20426,40010,6736, 40012,343, 33155,40008,40009,40011,317, 10926,40013,40014,396, 40015,40016,
40027,40043,40052,40066,40081,40092,40103,40108,350, 40115,40116,40132,40176,40217,40219,40223,40241,40268,20592,40277,343, 40278,40279,40283,40017,40018,14806,
- 40019,40020,356, 40026,28836,40021,40025,343, 5428, 40022,40023,332, 40024,565, 10246,40028,40029,40032,40033,40036,490, 40037,350, 40038,40040,390, 356,
+ 40019,40020,356, 40026,28836,40021,40025,343, 5428, 40022,40023,332, 40024,565, 10246,40028,40029,40032,40033,40036,490, 40037,350, 40038,40040,390, 356,
317, 40030,40031,343, 317, 367, 317, 7477, 20496,5105, 381, 317, 317, 13685,40034,362, 40035,40039,317, 471, 317, 40041,40042,317, 40044,40045,40047,
- 16017,3079, 40048,543, 40049,40046,5163, 13766,2272, 317, 40050,3007, 40051,40053,40054,40059,40060,3078, 40062,11236,40063,40064,2391, 40065,317, 10592,317,
+ 16017,3079, 40048,543, 40049,40046,5163, 13766,2272, 317, 40050,3007, 40051,40053,40054,40059,40060,3078, 40062,11236,40063,40064,2391, 40065,317, 10592,317,
2381, 317, 40055,40057,317, 14377,40056,40058,466, 8455, 317, 2551, 317, 40061,3079, 345, 3079, 6036, 363, 605, 428, 428, 381, 5055, 14263,40067,40068,
317, 372, 2134, 40069,40072,2152, 40074,40077,40078,40080,2086, 343, 317, 332, 1999, 350, 28654,317, 40070,40071,1358, 40073,490, 317, 11709,362, 40075,
2193, 343, 40076,2280, 18424,490, 351, 466, 362, 317, 332, 40079,350, 7949, 2035, 40082,2700, 13394,40089,37918,1453, 5991, 40083,33877,350, 551, 40085,
- 317, 317, 40084,1347, 5862, 40086,11954,40087,40088,40090,40091,2298, 2298, 351, 40093,40094,40097,20909,10223,40099,404, 317, 40100,2584, 2391, 317, 1345,
+ 317, 317, 40084,1347, 5862, 40086,11954,40087,40088,40090,40091,2298, 2298, 351, 40093,40094,40097,20909,10223,40099,404, 317, 40100,2584, 2391, 317, 1345,
317, 5223, 2054, 551, 14559,40095,40096,350, 317, 345, 9575, 1999, 40098,343, 5872, 14173,28479,40101,2022, 317, 2022, 40102,317, 317, 363, 4268, 40104,
317, 362, 1358, 40106,390, 40105,40107,490, 6636, 317, 317, 490, 3338, 40109,40110,40114,12931,317, 12931,362, 40111,404, 317, 40112,40113,351, 12931,
- 589, 12931,466, 40117,40118,370, 490, 40119,40120,40121,40122,40128,363, 40129,40131,317, 2022, 511, 590, 38793,1325, 1999, 1999, 371, 362, 9649, 381,
- 27765,466, 16579,40123,5459, 40126,40127,317, 317, 427, 40124,40125,317, 566, 381, 501, 34334,1345, 16187,1135, 7192, 362, 40130,2272, 4952, 5896, 3023,
+ 589, 12931,466, 40117,40118,370, 490, 40119,40120,40121,40122,40128,363, 40129,40131,317, 2022, 511, 590, 38793,1325, 1999, 1999, 371, 362, 9649, 381,
+ 27765,466, 16579,40123,5459, 40126,40127,317, 317, 427, 40124,40125,317, 566, 381, 501, 34334,1345, 16187,1135, 7192, 362, 40130,2272, 4952, 5896, 3023,
362, 363, 6601, 317, 317, 40133,40138,7428, 40145,40151,40152,40158,40165,40168,5862, 741, 345, 558, 6763, 2272, 490, 40134,404, 5205, 1358, 5324, 40135,
12291,370, 317, 7328, 317, 8158, 40136,1526, 40137,596, 317, 10677,317, 40139,40141,551, 35278,16018,40144,40140,317, 40142,40143,6043, 2261, 363, 40146,
- 40148,317, 17642,40147,380, 40149,345, 40150,578, 2022, 40153,40155,40157,2067, 40154,351, 2236, 370, 40156,5501, 317, 370, 40159,40161,317, 3079, 345,
- 317, 5105, 40160,317, 633, 320, 317, 40162,40163,40164,40166,40167,351, 380, 356, 11612,2571, 7834, 317, 380, 1194, 40169,40172,3999, 20759,317, 370,
- 317, 40170,40171,317, 40173,40175,40174,1531, 596, 1347, 632, 4984, 40177,40179,40186,40189,4925, 40193,2022, 40195,40200,40204,27477,40215,40178,2298, 1194,
- 5464, 40180,2022, 40183,317, 350, 317, 40181,5626, 40182,40184,40185,40187,343, 317, 40188,40190,40192,2402, 541, 370, 3987, 490, 40191,343, 8214, 3884,
- 317, 40194,9574, 317, 317, 40196,40197,40199,380, 381, 3987, 450, 40198,317, 3338, 1453, 5897, 16129,40201,22882,363, 5897, 8125, 40202,16129,40203,2219,
+ 40148,317, 17642,40147,380, 40149,345, 40150,578, 2022, 40153,40155,40157,2067, 40154,351, 2236, 370, 40156,5501, 317, 370, 40159,40161,317, 3079, 345,
+ 317, 5105, 40160,317, 633, 320, 317, 40162,40163,40164,40166,40167,351, 380, 356, 11612,2571, 7834, 317, 380, 1194, 40169,40172,3999, 20759,317, 370,
+ 317, 40170,40171,317, 40173,40175,40174,1531, 596, 1347, 632, 4984, 40177,40179,40186,40189,4925, 40193,2022, 40195,40200,40204,27477,40215,40178,2298, 1194,
+ 5464, 40180,2022, 40183,317, 350, 317, 40181,5626, 40182,40184,40185,40187,343, 317, 40188,40190,40192,2402, 541, 370, 3987, 490, 40191,343, 8214, 3884,
+ 317, 40194,9574, 317, 317, 40196,40197,40199,380, 381, 3987, 450, 40198,317, 3338, 1453, 5897, 16129,40201,22882,363, 5897, 8125, 40202,16129,40203,2219,
40205,2247, 40206,40208,5661, 40212,2571, 40213,7428, 317, 317, 40207,637, 1300, 6996, 317, 633, 633, 404, 362, 317, 40209,40210,317, 40211,404, 40214,
- 4738, 362, 5037, 317, 40216,1453, 1992, 317, 40218,317, 317, 490, 362, 40220,8178, 317, 40221,40222,5223, 361, 362, 40224,381, 2024, 363, 40226,1358,
- 40230,5616, 40231,40237,40238,10626,317, 40225,317, 6546, 466, 317, 40227,40229,15852,384, 5862, 1999, 40228,381, 5223, 6415, 317, 1347, 1347, 317, 404,
- 1345, 317, 317, 22791,40232,40233,343, 40236,363, 40234,40235,362, 5538, 539, 466, 1060, 1345, 317, 12057,7711, 351, 379, 501, 40239,511, 343, 317,
+ 4738, 362, 5037, 317, 40216,1453, 1992, 317, 40218,317, 317, 490, 362, 40220,8178, 317, 40221,40222,5223, 361, 362, 40224,381, 2024, 363, 40226,1358,
+ 40230,5616, 40231,40237,40238,10626,317, 40225,317, 6546, 466, 317, 40227,40229,15852,384, 5862, 1999, 40228,381, 5223, 6415, 317, 1347, 1347, 317, 404,
+ 1345, 317, 317, 22791,40232,40233,343, 40236,363, 40234,40235,362, 5538, 539, 466, 1060, 1345, 317, 12057,7711, 351, 379, 501, 40239,511, 343, 317,
317, 40240,317, 40242,40244,40247,40249,14444,40252,40256,7192, 5662, 365, 4984, 40260,40262,40266,24192,565, 10058,317, 2210, 317, 40243,332, 5120, 40245,
- 317, 40246,40248,370, 363, 362, 40250,317, 390, 40251,1791, 317, 363, 10073,356, 40253,40254,40255,317, 40257,40259,317, 1160, 40258,317, 317, 590,
- 1160, 3573, 5995, 2551, 40261,40263,40264,40265,362, 3999, 317, 10058,1347, 10058,32538,5105, 317, 363, 363, 2156, 514, 40267,14695,10811,363, 345, 356,
- 5223, 317, 40269,351, 317, 2022, 6203, 7850, 40275,40276,1347, 2110, 25681,40270,10015,40271,40273,14478,40272,2551, 404, 343, 4980, 40274,404, 5995, 4980,
+ 317, 40246,40248,370, 363, 362, 40250,317, 390, 40251,1791, 317, 363, 10073,356, 40253,40254,40255,317, 40257,40259,317, 1160, 40258,317, 317, 590,
+ 1160, 3573, 5995, 2551, 40261,40263,40264,40265,362, 3999, 317, 10058,1347, 10058,32538,5105, 317, 363, 363, 2156, 514, 40267,14695,10811,363, 345, 356,
+ 5223, 317, 40269,351, 317, 2022, 6203, 7850, 40275,40276,1347, 2110, 25681,40270,10015,40271,40273,14478,40272,2551, 404, 343, 4980, 40274,404, 5995, 4980,
428, 350, 363, 351, 12696,317, 343, 362, 4984, 317, 2024, 4982, 2022, 362, 24938,551, 371, 7456, 40280,350, 40281,40282,404, 351, 5419, 351, 40284,
40285,40287,637, 12902,339, 40289,40288,40290,40292,40291,40294,343, 40295,40296,14746,40298,40299,40300,40301,40306,26076,40311,40360,40361,40367,40368,40371,
40378,40381,40382,40471,40472,40482,40483,2134, 350, 40302,317, 2271, 345, 40304,40305,40303,5898, 5898, 40307,40308,40309,40310,317, 5488, 18587,40312,40316,
883, 317, 4974, 40313,40314,40315,40317,40321,40322,5640, 40318,40319,40320,2271, 2081, 1347, 5447, 404, 22407,40323,40332,40335,40340,40343,40346,40349,40352,
- 40353,40357,40324,40325,40327,40326,40328,40329,40330,40331,40333,40334,40336,40337,40338,40339,40341,3361, 40342,40344,23111,40345,7506, 40347,40348,2163, 9832,
+ 40353,40357,40324,40325,40327,40326,40328,40329,40330,40331,40333,40334,40336,40337,40338,40339,40341,3361, 40342,40344,23111,40345,7506, 40347,40348,2163, 9832,
40350,9298, 40351,525, 8105, 5748, 350, 40354,40355,40356,443, 433, 5752, 40358,40359,390, 6409, 363, 6242, 381, 343, 40362,40365,40363,4591, 40364,40366,
345, 2086, 40369,14571,6546, 40370,343, 404, 5030, 9702, 5483, 5836, 6002, 40372,343, 21968,40377,317, 40373,317, 317, 741, 40374,40375,40376,40379,40380,
404, 427, 332, 356, 317, 40383,40386,40429,40430,40435,40466,40468,40384,40385,317, 40387,317, 317, 40388,40389,40392,17063,40393,40397,40399,40401,10613,
- 40404,40407,40414,40422,2330, 40390,40391,317, 317, 339, 5087, 551, 5866, 40394,40395,40396,741, 40398,363, 40400,40402,15754,40403,40405,40406,40408,8682,
- 516, 40409,40410,40411,40412,40413,40415,40416,40421,28562,381, 40417,40418,40419,40420,40423,22165,40424,40425,40426,40427,40428,17219,37381,40431,40432,2163,
+ 40404,40407,40414,40422,2330, 40390,40391,317, 317, 339, 5087, 551, 5866, 40394,40395,40396,741, 40398,363, 40400,40402,15754,40403,40405,40406,40408,8682,
+ 516, 40409,40410,40411,40412,40413,40415,40416,40421,28562,381, 40417,40418,40419,40420,40423,22165,40424,40425,40426,40427,40428,17219,37381,40431,40432,2163,
40433,9684, 40434,317, 5355, 5492, 40436,30601,40444,2627, 40449,40450,40453,8583, 40437,40441,36150,40438,40439,40440,40442,370, 40443,40445,40446,40447,40448,
- 40451,40452,40454,40456,40455,5220, 393, 40457,40461,40418,40458,40459,40460,5437, 40462,40464,345, 40463,5487, 9832, 40465,40467,40469,40470,29785,36317,317,
+ 40451,40452,40454,40456,40455,5220, 393, 40457,40461,40418,40458,40459,40460,5437, 40462,40464,345, 40463,5487, 9832, 40465,40467,40469,40470,29785,36317,317,
348, 39211,11654,4738, 343, 2503, 2553, 40473,40474,40477,40475,40476,40478,40479,40480,40481,9069, 2163, 12696,343, 2086, 490, 317, 40484,2351, 317, 40486,
40489,40487,40488,40490,40491,40492,40493,40497,40500,40501,40503,40505,40555,40586,40644,40706,40714,40735,40768,40784,40791,40801,40815,134, 135, 42220,42245,
- 42268,42274,139, 42504,42538,42547,42568,42582,42583,42586,40494,40495,380, 40496,343, 343, 40498,11073,40499,40502,40504,3009, 999, 40506,40507,40514,490,
- 21355,332, 363, 40516,40518,40540,40547,40548,40550,40551,40553,40554,317, 38174,7566, 40508,23696,40509,2280, 332, 9422, 40511,40510,7385, 40512,40513,2272,
- 6402, 2322, 332, 3751, 40515,40517,5381, 2809, 40519,40522,535, 15334,40524,40525,40527,511, 40528,40535,40537,40520,40521,40523,370, 356, 6326, 1446, 1588,
- 40526,40529,40530,40531,40532,40533,40534,427, 4447, 40536,40538,40539,317, 5217, 2272, 40541,590, 40542,332, 8594, 40543,6486, 40545,34925,40546,40544,332,
+ 42268,42274,139, 42504,42538,42547,42568,42582,42583,42586,40494,40495,380, 40496,343, 343, 40498,11073,40499,40502,40504,3009, 999, 40506,40507,40514,490,
+ 21355,332, 363, 40516,40518,40540,40547,40548,40550,40551,40553,40554,317, 38174,7566, 40508,23696,40509,2280, 332, 9422, 40511,40510,7385, 40512,40513,2272,
+ 6402, 2322, 332, 3751, 40515,40517,5381, 2809, 40519,40522,535, 15334,40524,40525,40527,511, 40528,40535,40537,40520,40521,40523,370, 356, 6326, 1446, 1588,
+ 40526,40529,40530,40531,40532,40533,40534,427, 4447, 40536,40538,40539,317, 5217, 2272, 40541,590, 40542,332, 8594, 40543,6486, 40545,34925,40546,40544,332,
7035, 2272, 7386, 5890, 317, 317, 12780,40549,18706,7386, 3751, 620, 317, 317, 40552,40556,40558,40561,2533, 40562,343, 40572,343, 317, 5120, 40575,40576,
7473, 40583,40585,40557,390, 362, 343, 12869,40559,40560,29449,29449,40563,40565,317, 317, 40564,317, 8214, 40566,490, 5037, 40567,40568,40569,40570,40571,
- 317, 40573,1078, 490, 40574,637, 949, 14835,596, 40577,339, 316, 40578,40580,40579,427, 40581,40582,317, 5656, 365, 40584,382, 2078, 621, 40587,5742,
- 40593,40594,40614,40628,40630,5270, 1060, 40631,339, 343, 40642,40643,317, 363, 317, 363, 40588,40591,317, 40592,40589,40590,27218,317, 357, 370, 345,
- 351, 6207, 40595,40598,317, 40602,40603,40605,40609,40612,2391, 526, 317, 2081, 40613,16278,40596,316, 40597,351, 10878,5737, 578, 40599,40601,40600,428,
- 21115,40604,345, 393, 40606,40607,40608,1033, 339, 40610,40611,637, 1160, 320, 1011, 633, 11034,2272, 542, 40615,12598,40616,40621,8023, 5683, 332, 6834,
+ 317, 40573,1078, 490, 40574,637, 949, 14835,596, 40577,339, 316, 40578,40580,40579,427, 40581,40582,317, 5656, 365, 40584,382, 2078, 621, 40587,5742,
+ 40593,40594,40614,40628,40630,5270, 1060, 40631,339, 343, 40642,40643,317, 363, 317, 363, 40588,40591,317, 40592,40589,40590,27218,317, 357, 370, 345,
+ 351, 6207, 40595,40598,317, 40602,40603,40605,40609,40612,2391, 526, 317, 2081, 40613,16278,40596,316, 40597,351, 10878,5737, 578, 40599,40601,40600,428,
+ 21115,40604,345, 393, 40606,40607,40608,1033, 339, 40610,40611,637, 1160, 320, 1011, 633, 11034,2272, 542, 40615,12598,40616,40621,8023, 5683, 332, 6834,
332, 6900, 40617,40620,40618,7874, 343, 40619,40622,40623,40624,40625,40627,40626,40629,382, 24841,9624, 317, 317, 317, 40632,40637,339, 40633,317, 40634,
- 20062,40636,40635,40638,40639,40640,40641,10283,40645,40646,40653,317, 40670,642, 40683,40685,40690,40691,345, 40703,9012, 19923,40704,40705,332, 5241, 317,
- 317, 14695,40647,40648,40649,40650,40651,40652,642, 40654,2326, 13376,40658,40661,40666,317, 343, 40655,317, 5226, 40656,370, 317, 40657,7888, 356, 317,
+ 20062,40636,40635,40638,40639,40640,40641,10283,40645,40646,40653,317, 40670,642, 40683,40685,40690,40691,345, 40703,9012, 19923,40704,40705,332, 5241, 317,
+ 317, 14695,40647,40648,40649,40650,40651,40652,642, 40654,2326, 13376,40658,40661,40666,317, 343, 40655,317, 5226, 40656,370, 317, 40657,7888, 356, 317,
7242, 317, 2322, 40659,40660,40662,40663,317, 9313, 40664,5201, 40665,2184, 410, 6425, 8020, 40667,40668,40669,20086,2156, 317, 1999, 2036, 40671,40673,40682,
40672,370, 10922,40674,40675,40681,40676,40677,40678,40679,40680,7689, 401, 317, 317, 339, 317, 40684,34727,317, 7911, 2571, 317, 15778,40686,40687,40688,
40689,40692,40696,40698,40693,40695,19922,317, 40694,351, 14419,40697,40699,12456,40700,332, 40701,40702,12060,1189, 3284, 5570, 40707,345, 343, 40708,40711,
- 40713,396, 362, 7796, 5890, 40709,40710,332, 317, 40712,40715,367, 40717,40719,40720,40722,35232,40723,365, 40728,317, 40730,40732,40733,40716,40718,1999,
+ 40713,396, 362, 7796, 5890, 40709,40710,332, 317, 40712,40715,367, 40717,40719,40720,40722,35232,40723,365, 40728,317, 40730,40732,40733,40716,40718,1999,
345, 4952, 317, 317, 40721,21013,4617, 380, 7753, 40724,40725,381, 40726,40727,40729,317, 40731,32416,6763, 40734,40736,40738,393, 12731,40742,381, 40744,
40745,40747,40748,40757,40761,40763,40765,343, 40737,6851, 2291, 380, 40739,317, 317, 40740,40741,40743,40746,332, 5159, 317, 17719,40749,40753,23267,40754,
40750,8828, 40751,25086,40752,317, 3529, 345, 4591, 365, 40755,5836, 40756,5447, 9522, 4591, 5190, 317, 40758,317, 40759,40760,10131,4101, 1950, 40762,40764,
40766,2035, 317, 590, 40767,590, 1347, 2070, 40769,343, 40774,40779,440, 351, 40782,40783,40770,40771,317, 40772,40773,40775,343, 5084, 40776,40777,23172,
40778,40780,40781,317, 40785,2997, 490, 490, 345, 396, 40786,332, 339, 345, 8926, 40790,40785,317, 40787,317, 40788,317, 40789,40792,40793,40794,11418,
- 40799,29424,317, 317, 40795,40796,40797,40798,40800,40802,40804,25768,40808,40811,332, 40812,350, 363, 489, 2004, 34832,40803,317, 10894,40805,490, 6834,
- 40807,23079,1325, 40806,1588, 2322, 40809,40810,6817, 317, 40813,40814,40816,40817,332, 40826,40827,40829,40830,17321,40832,40833,40840,40842,40874,40876,5793,
- 40898,40899,596, 40903,13397,362, 40818,2537, 317, 1109, 40822,1020, 490, 40824,40819,40820,40821,365, 490, 40823,40825,317, 40828,2035, 363, 343, 317,
+ 40799,29424,317, 317, 40795,40796,40797,40798,40800,40802,40804,25768,40808,40811,332, 40812,350, 363, 489, 2004, 34832,40803,317, 10894,40805,490, 6834,
+ 40807,23079,1325, 40806,1588, 2322, 40809,40810,6817, 317, 40813,40814,40816,40817,332, 40826,40827,40829,40830,17321,40832,40833,40840,40842,40874,40876,5793,
+ 40898,40899,596, 40903,13397,362, 40818,2537, 317, 1109, 40822,1020, 490, 40824,40819,40820,40821,365, 490, 40823,40825,317, 40828,2035, 363, 343, 317,
317, 427, 317, 551, 40831,40834,317, 40835,23328,362, 490, 40836,3243, 427, 8484, 317, 40837,633, 40838,40839,1428, 589, 343, 479, 3621, 1881, 14377,
40841,490, 2022, 317, 40843,40845,40853,5640, 30793,40859,9425, 40860,8023, 40871,317, 317, 317, 40844,40846,317, 40852,40847,40849,40848,373, 40850,40851,
- 40854,40855,345, 317, 40856,40857,10956,1160, 2163, 40858,520, 5295, 40861,40867,5890, 40862,40863,40864,40865,5447, 40866,351, 40868,448, 40869,5515, 343,
+ 40854,40855,345, 317, 40856,40857,10956,1160, 2163, 40858,520, 5295, 40861,40867,5890, 40862,40863,40864,40865,5447, 40866,351, 40868,448, 40869,5515, 343,
40870,30347,317, 5727, 2035, 40872,40873,5616, 741, 40875,351, 40877,2142, 8333, 1020, 40878,40879,633, 40880,40881,2584, 2391, 558, 40883,40884,381, 40885,
- 2948, 40887,40889,40891,40893,6255, 5942, 40894,40882,365, 3039, 356, 40886,533, 40888,351, 5942, 427, 400, 40890,8999, 2277, 39040,37126,40892,427, 316,
- 40895,40896,317, 40897,6996, 317, 1267, 651, 40900,1459, 40902,40901,633, 2227, 381, 343, 8948, 1428, 2054, 317, 40904,27286,2573, 40905,317, 1220, 1209,
+ 2948, 40887,40889,40891,40893,6255, 5942, 40894,40882,365, 3039, 356, 40886,533, 40888,351, 5942, 427, 400, 40890,8999, 2277, 39040,37126,40892,427, 316,
+ 40895,40896,317, 40897,6996, 317, 1267, 651, 40900,1459, 40902,40901,633, 2227, 381, 343, 8948, 1428, 2054, 317, 40904,27286,2573, 40905,317, 1220, 1209,
40536,40906,40920,535, 40930,40931,40933,40934,40935,40937,40944,40948,40950,41014,41016,41132,490, 41133,345, 27477,40907,1109, 40908,40914,2279, 40915,40916,
- 5120, 317, 317, 40917,317, 6901, 40909,40910,317, 317, 317, 317, 1345, 317, 40911,40912,40913,317, 466, 373, 370, 5554, 317, 317, 3884, 317, 332,
- 15087,574, 317, 2110, 40918,40919,363, 40921,40922,40925,40926,40927,40929,10592,39059,40923,5337, 14790,365, 40924,1526, 351, 3375, 501, 1526, 2003, 6195,
+ 5120, 317, 317, 40917,317, 6901, 40909,40910,317, 317, 317, 317, 1345, 317, 40911,40912,40913,317, 466, 373, 370, 5554, 317, 317, 3884, 317, 332,
+ 15087,574, 317, 2110, 40918,40919,363, 40921,40922,40925,40926,40927,40929,10592,39059,40923,5337, 14790,365, 40924,1526, 351, 3375, 501, 1526, 2003, 6195,
40928,14150,1325, 8863, 317, 16298,9581, 2271, 365, 40932,24036,2715, 2035, 578, 558, 1588, 40936,1383, 574, 343, 2590, 2680, 40938,317, 343, 40940,40942,
30346,40939,40941,40943,40945,363, 40946,40947,40949,351, 390, 3522, 317, 40951,40957,40966,40969,40979,40952,40954,40955,40953,2369, 2134, 8700, 40956,40958,
- 40961,317, 30743,40964,40965,40959,40960,40962,40963,370, 14236,362, 20994,40967,40968,2369, 7070, 40970,1479, 5488, 40974,24938,40971,40972,317, 40973,370,
+ 40961,317, 30743,40964,40965,40959,40960,40962,40963,370, 14236,362, 20994,40967,40968,2369, 7070, 40970,1479, 5488, 40974,24938,40971,40972,317, 40973,370,
18587,21700,9422, 40975,40976,40977,40978,317, 1526, 370, 1526, 40980,24938,317, 40981,40982,5201, 5488, 40983,40990,40995,40998,11272,41007,41013,40984,40985,
- 40986,40987,40988,40989,40991,40992,40993,40994,40996,40997,40999,41000,41001,41002,41003,41004,41005,41006,41008,41009,41010,41011,41012,41015,490, 3688, 332,
- 41017,41032,433, 41068,41071,41081,41099,4980, 41126,41018,41020,41021,41023,41026,41028,41019,356, 379, 466, 351, 317, 4944, 41022,466, 317, 3854, 317,
+ 40986,40987,40988,40989,40991,40992,40993,40994,40996,40997,40999,41000,41001,41002,41003,41004,41005,41006,41008,41009,41010,41011,41012,41015,490, 3688, 332,
+ 41017,41032,433, 41068,41071,41081,41099,4980, 41126,41018,41020,41021,41023,41026,41028,41019,356, 379, 466, 351, 317, 4944, 41022,466, 317, 3854, 317,
317, 2322, 41024,356, 41025,317, 21661,382, 41027,410, 317, 6307, 41029,41030,41031,41033,41035,41037,41039,41040,41042,41066,41034,41036,5708, 5447, 41038,
- 5399, 382, 511, 41041,41043,41045,41048,41052,41057,41060,41064,6108, 41044,9383, 12120,41046,41047,41049,21355,41050,41051,5262, 370, 41053,1526, 6387, 427,
+ 5399, 382, 511, 41041,41043,41045,41048,41052,41057,41060,41064,6108, 41044,9383, 12120,41046,41047,41049,21355,41050,41051,5262, 370, 41053,1526, 6387, 427,
41054,317, 41055,317, 41056,5366, 24938,41058,41059,41061,41062,41063,317, 5446, 41065,41067,41069,4591, 41070,41072,41075,41078,41080,2184, 24938,41073,41059,
41074,6055, 356, 466, 317, 41076,41077,41079,5464, 5501, 5323, 5441, 5717, 5226, 2627, 41082,41089,6265, 41095,41097,41083,41084,41086,10422,466, 317, 41085,
41087,5226, 343, 41088,5447, 41090,41091,41094,41092,41093,41096,41098,41100,41106,41115,41118,20960,41101,41102,41103,41104,41105,8722, 41107,41110,490, 41108,
- 41109,373, 5492, 12849,41111,5464, 41112,3854, 382, 41113,5550, 41114,410, 10347,317, 41116,7988, 5010, 41117,24938,41119,41120,41123,8658, 41121,41122,5675,
+ 41109,373, 5492, 12849,41111,5464, 41112,3854, 382, 41113,5550, 41114,410, 10347,317, 41116,7988, 5010, 41117,24938,41119,41120,41123,8658, 41121,41122,5675,
41124,382, 41125,21690,9124, 466, 6265, 41127,5459, 41131,7888, 41128,1347, 41129,41130,363, 317, 343, 317, 2254, 2462, 41134,41189,41198,41325,41450,41499,
- 41585,41630,41658,41670,41680,41693,41696,41698,41721,41744,41752,41759,41761,136, 42163,42171,42214,345, 42217,42218,41135,41138,41149,41156,10898,317, 365,
+ 41585,41630,41658,41670,41680,41693,41696,41698,41721,41744,41752,41759,41761,136, 42163,42171,42214,345, 42217,42218,41135,41138,41149,41156,10898,317, 365,
41157,41160,41162,41170,41175,41176,41179,2631, 317, 41136,2036, 5459, 41137,41139,332, 41146,41140,41143,41141,41142,41144,41145,5201, 5550, 41147,363, 41148,
6434, 317, 397, 41150,41152,41153,41151,41154,41155,41158,41159,4280, 317, 41161,490, 41163,41164,41166,41165,41167,41168,41169,317, 41171,41172,41173,41174,
- 41177,41178,26388,41180,41184,41186,41181,41182,41183,317, 7765, 41185,41187,41188,41190,41194,41196,22992,41197,317, 41191,317, 41192,41193,41195,551, 370,
+ 41177,41178,26388,41180,41184,41186,41181,41182,41183,317, 7765, 41185,41187,41188,41190,41194,41196,22992,41197,317, 41191,317, 41192,41193,41195,551, 370,
363, 439, 317, 11073,41199,41214,41220,41221,41234,41242,41305,41319,1459, 41200,41203,41204,41209,1358, 41201,41202,317, 28546,6425, 41205,373, 41206,41207,
41208,41210,41211,41212,41213,1325, 5054, 317, 41215,5225, 41217,41218,41216,5492, 33165,21579,41219,5665, 25237,363, 41222,41226,466, 41231,7337, 41233,21349,
- 41223,41224,2156, 41225,5476, 317, 41227,41228,41229,41230,1325, 404, 351, 41232,356, 5262, 2510, 363, 10395,41235,41237,41236,41238,41240,41239,466, 317,
+ 41223,41224,2156, 41225,5476, 317, 41227,41228,41229,41230,1325, 404, 351, 41232,356, 5262, 2510, 363, 10395,41235,41237,41236,41238,41240,41239,466, 317,
2007, 317, 41241,41243,41245,41247,41267,41295,41244,41246,1347, 466, 41248,41252,41266,41249,41250,41251,41253,41257,41258,41262,24938,41254,41255,41256,17943,
343, 41259,41260,41261,41263,41264,41059,41265,41268,41272,41274,41284,41289,41269,41271,41270,41273,41275,41279,41202,41282,41276,41277,41278,41280,41281,41283,
5366, 41285,41286,41287,41288,41290,41291,41292,41293,41294,41296,41301,41304,41297,41298,41299,433, 41300,5447, 5987, 1033, 41302,41303,41046,41306,41315,41307,
41308,41311,41309,10703,41310,41312,41313,41314,5701, 356, 317, 41316,41317,41318,41320,15351,41321,41322,41324,22121,6050, 41323,410, 5174, 7465, 41326,41329,
41369,41412,41429,41434,41449,41327,363, 317, 41328,41330,41332,41333,41334,41340,21816,41344,41347,41354,41357,41364,7858, 41331,5968, 28562,317, 41335,41265,
- 41338,41336,41337,41339,410, 6249, 41341,373, 41342,41343,41345,5365, 356, 466, 41346,41348,41349,41350,2218, 41351,24884,41352,7098, 41353,412, 370, 317,
- 41355,41356,41358,41361,41359,41360,41362,41363,41365,41366,41367,41368,41370,41374,41377,41378,41381,1347, 41386,41387,427, 41405,6228, 41371,10149,41372,317,
+ 41338,41336,41337,41339,410, 6249, 41341,373, 41342,41343,41345,5365, 356, 466, 41346,41348,41349,41350,2218, 41351,24884,41352,7098, 41353,412, 370, 317,
+ 41355,41356,41358,41361,41359,41360,41362,41363,41365,41366,41367,41368,41370,41374,41377,41378,41381,1347, 41386,41387,427, 41405,6228, 41371,10149,41372,317,
317, 41373,351, 2381, 1160, 317, 317, 365, 32397,41375,345, 41376,345, 410, 356, 5399, 15435,317, 317, 2609, 41379,41380,41382,332, 41384,1160, 41383,
5225, 41385,5200, 381, 5226, 317, 41302,41388,41394,41398,343, 41389,41390,41391,41392,41393,41395,9141, 41397,41396,41399,41400,381, 41401,41402,41403,41404,
- 41406,41407,26388,41408,41409,41410,5226, 41411,370, 317, 8448, 370, 1526, 41413,41415,41420,41421,41422,41425,343, 7149, 41414,41416,41417,41418,41419,317,
- 40626,41423,41424,41426,41427,317, 41428,41430,317, 365, 41431,41432,41433,41435,41439,3688, 41441,5653, 41442,41436,41437,41438,5675, 21157,41440,523, 9109,
+ 41406,41407,26388,41408,41409,41410,5226, 41411,370, 317, 8448, 370, 1526, 41413,41415,41420,41421,41422,41425,343, 7149, 41414,41416,41417,41418,41419,317,
+ 40626,41423,41424,41426,41427,317, 41428,41430,317, 365, 41431,41432,41433,41435,41439,3688, 41441,5653, 41442,41436,41437,41438,5675, 21157,41440,523, 9109,
21036,2510, 41443,41444,41445,317, 41446,1347, 4591, 41447,41448,370, 27467,7888, 620, 565, 41451,26388,41452,41454,365, 41463,41465,41468,41472,41474,41479,
- 41480,41484,317, 41453,41455,410, 41456,41460,41457,41458,41459,433, 41461,41462,8436, 41464,317, 41466,41467,41469,17943,41470,41471,410, 596, 317, 2163,
+ 41480,41484,317, 41453,41455,410, 41456,41460,41457,41458,41459,433, 41461,41462,8436, 41464,317, 41466,41467,41469,17943,41470,41471,410, 596, 317, 2163,
41473,29773,41475,363, 490, 39074,41476,41477,41478,41481,41482,41483,1009, 41485,41486,41489,41490,41496,41487,41488,41491,41495,41492,41493,41494,41497,41498,
41500,41509,41520,41536,41554,41566,41581,381, 41501,41503,41504,17228,41508,41502,41142,370, 41505,317, 41506,41507,15373,18699,317, 2260, 343, 332, 41059,
41510,41513,41519,41511,356, 41512,317, 382, 7837, 343, 20356,41514,41516,41517,317, 41518,41515,14145,466, 41521,41523,17477,41524,41527,41534,317, 41522,
- 33060,5570, 5487, 41525,41526,404, 350, 41528,41529,41530,41533,427, 317, 370, 41531,41532,41535,448, 397, 41537,41542,41544,41546,41550,41538,41540,5447,
+ 33060,5570, 5487, 41525,41526,404, 350, 41528,41529,41530,41533,427, 317, 370, 41531,41532,41535,448, 397, 41537,41542,41544,41546,41550,41538,41540,5447,
41539,410, 1325, 41541,382, 26508,41543,26388,41545,471, 41547,1347, 41548,41549,41551,317, 41552,41553,498, 8011, 12204,466, 3599, 426, 41555,41556,41559,
- 4476, 41565,26518,41557,41558,41560,41561,10422,41564,317, 18675,4268, 41562,41563,345, 9852, 343, 28503,2108, 41567,41575,41577,41568,25230,1526, 41569,5872,
+ 4476, 41565,26518,41557,41558,41560,41561,10422,41564,317, 18675,4268, 41562,41563,345, 9852, 343, 28503,2108, 41567,41575,41577,41568,25230,1526, 41569,5872,
5167, 41570,41571,41572,41573,41574,41576,41578,41579,41580,466, 41582,5502, 41583,41584,41586,350, 41591,41600,41601,41604,41605,41611,317, 41620,41625,41628,
41587,41588,317, 1347, 5866, 41589,41590,41592,20324,41595,7716, 41596,41598,20360,4949, 41593,41594,41597,7327, 351, 7834, 332, 41599,427, 427, 554, 41602,
- 41603,370, 24680,404, 6089, 41606,41610,1347, 41607,41608,41609,317, 317, 11915,41612,41617,41618,41619,427, 41613,41614,6308, 6769, 317, 8959, 41615,1347,
+ 41603,370, 24680,404, 6089, 41606,41610,1347, 41607,41608,41609,317, 317, 11915,41612,41617,41618,41619,427, 41613,41614,6308, 6769, 317, 8959, 41615,1347,
41616,574, 4040, 20989,1347, 41621,460, 41623,41622,41624,351, 41626,41627,41629,380, 8051, 41631,41640,317, 41645,41649,41654,41632,29766,41633,41634,41635,
356, 466, 317, 41636,5226, 41637,41638,41639,381, 41641,41642,41643,41644,5708, 356, 466, 2510, 317, 41646,41647,41648,356, 5113, 22021,317, 41650,41653,
- 393, 41651,41652,6831, 41655,41656,41657,317, 397, 317, 41659,9257, 41661,382, 41663,317, 41665,41660,41662,433, 24938,41664,1108, 397, 41666,41667,317,
- 41668,25177,41669,370, 317, 427, 18587,41671,41674,41672,41673,410, 356, 5847, 2510, 317, 41675,41676,41678,5553, 317, 5447, 41677,317, 345, 382, 4591,
- 41679,41681,37393,41688,539, 41689,41691,16579,3987, 41682,41683,41684,41685,41686,41687,16768,382, 41690,466, 41692,41694,4268, 2272, 41695,356, 356, 1347,
+ 393, 41651,41652,6831, 41655,41656,41657,317, 397, 317, 41659,9257, 41661,382, 41663,317, 41665,41660,41662,433, 24938,41664,1108, 397, 41666,41667,317,
+ 41668,25177,41669,370, 317, 427, 18587,41671,41674,41672,41673,410, 356, 5847, 2510, 317, 41675,41676,41678,5553, 317, 5447, 41677,317, 345, 382, 4591,
+ 41679,41681,37393,41688,539, 41689,41691,16579,3987, 41682,41683,41684,41685,41686,41687,16768,382, 41690,466, 41692,41694,4268, 2272, 41695,356, 356, 1347,
41697,363, 317, 30331,2156, 41699,41703,41705,33875,41708,41716,41717,41700,41702,5550, 41701,2381, 41704,317, 9590, 381, 5095, 10878,41706,317, 5005, 41707,
317, 41709,41713,317, 41710,5727, 41711,7098, 41712,41714,41715,1325, 5847, 2510, 41718,41720,41719,317, 41722,41727,365, 590, 41728,41736,41738,41740,41741,
41723,41725,41724,9917, 343, 41726,6088, 427, 41729,41732,41730,41731,373, 3031, 41733,41734,41735,28544,41737,12670,41739,41742,41743,41745,41746,41747,41748,
@@ -9060,219 +9055,219 @@ static const unsigned int ChildLocs[185261] =
5447, 466, 363, 41812,41821,41822,41834,373, 41813,18138,41814,41818,1347, 365, 1526, 41815,5399, 5365, 22945,10422,466, 5399, 41816,7704, 41817,2156, 41819,
41820,21188,370, 21830,11777,41823,41826,41824,41825,21419,317, 433, 41827,41828,20333,41829,317, 382, 41830,41831,41832,317, 41833,21506,370, 41835,41836,
41838,41837,356, 22295,2510, 317, 41839,41840,41841,41842,356, 317, 41843,5226, 41844,370, 317, 41846,41853,41859,41861,41847,41851,41848,41849,41850,41852,
- 41854,40960,41855,41856,41857,41858,41860,363, 5273, 2001, 21832,41862,9124, 21969,466, 41863,41866,41864,41865,41867,41868,41869,41870,380, 41871,137, 317,
+ 41854,40960,41855,41856,41857,41858,41860,363, 5273, 2001, 21832,41862,9124, 21969,466, 41863,41866,41864,41865,41867,41868,41869,41870,380, 41871,137, 317,
42111,42113,1212, 42117,42123,42157,6598, 381, 11339,2156, 1020, 41872,317, 41873,41877,41890,138, 42108,2510, 41874,3853, 41875,41876,317, 373, 5477, 21392,
8418, 1347, 1345, 317, 33340,41878,2631, 41879,41885,41880,41881,41882,41883,41884,5343, 370, 317, 41886,17357,41887,6270, 41888,22724,41889,370, 5241, 41891,
41892,41896,2369, 356, 466, 317, 5324, 41893,41894,5201, 5550, 41895,2184, 5488, 5464, 41897,370, 317, 41898,41899,21661,356, 317, 317, 41900,41905,41909,
- 41939,41959,41963,41977,41985,41986,41988,41999,42015,42033,42038,42055,42071,42081,42086,42089,42103,42106,41901,22524,41904,433, 41902,356, 41903,317, 382,
+ 41939,41959,41963,41977,41985,41986,41988,41999,42015,42033,42038,42055,42071,42081,42086,42089,42103,42106,41901,22524,41904,433, 41902,356, 41903,317, 382,
5055, 41130,2193, 41906,41907,5337, 8643, 41908,41910,41913,41914,397, 41919,41935,41936,41911,41912,370, 5536, 5492, 30713,30562,17358,41915,41916,41917,41918,
- 466, 41483,317, 317, 41920,41924,41926,2298, 2128, 41934,41921,41923,41922,41925,24578,41927,41931,41928,41929,41930,34977,5113, 317, 41932,41933,397, 393,
+ 466, 41483,317, 317, 41920,41924,41926,2298, 2128, 41934,41921,41923,41922,41925,24578,41927,41931,41928,41929,41930,34977,5113, 317, 41932,41933,397, 393,
41937,317, 41938,41940,41950,21079,41941,41944,41942,41943,41945,41948,41946,41947,41949,25396,41951,41954,41952,41953,41955,41956,41957,41958,41960,317, 41961,
356, 41962,317, 41964,41966,41973,41965,545, 5447, 15814,41967,41968,466, 41969,317, 5709, 317, 41970,317, 41971,41972,351, 8470, 41974,41975,41976,30721,
- 41978,22737,41981,20394,41979,41980,41982,41983,41984,5570, 317, 2510, 41987,41989,41990,41992,41995,5752, 5441, 501, 41991,2419, 965, 5174, 41993,41994,2291,
+ 41978,22737,41981,20394,41979,41980,41982,41983,41984,5570, 317, 2510, 41987,41989,41990,41992,41995,5752, 5441, 501, 41991,2419, 965, 5174, 41993,41994,2291,
1526, 41996,350, 501, 5363, 41997,41998,42000,42004,42008,42011,42001,42002,42003,317, 42005,4268, 7399, 42006,42007,345, 5201, 2156, 42009,42010,17358,41155,
1526, 410, 29586,433, 42012,42013,42014,42016,42031,11612,3854, 9139, 458, 42017,42019,42027,42018,370, 317, 42020,42021,42022,42023,42024,316, 1347, 42025,
- 370, 317, 42026,7888, 5225, 317, 317, 42028,42029,42030,2271, 317, 345, 1160, 42032,42034,42037,42035,42036,42039,42041,42045,42049,42040,42042,42043,317,
+ 370, 317, 42026,7888, 5225, 317, 317, 42028,42029,42030,2271, 317, 345, 1160, 42032,42034,42037,42035,42036,42039,42041,42045,42049,42040,42042,42043,317,
42044,42046,1526, 42047,42048,42050,42052,42051,5553, 10422,5395, 317, 42053,42054,42056,42057,42067,42068,498, 574, 317, 42058,42059,459, 741, 42060,42066,
- 42061,356, 42062,42063,42064,42065,42069,42070,356, 5113, 317, 345, 42072,42076,42077,42079,42073,4045, 42074,42075,22063,317, 5709, 42078,10069,9141, 6967,
+ 42061,356, 42062,42063,42064,42065,42069,42070,356, 5113, 317, 345, 42072,42076,42077,42079,42073,4045, 42074,42075,22063,317, 5709, 42078,10069,9141, 6967,
18415,42080,596, 498, 42082,2322, 42083,42084,433, 6394, 2039, 6330, 42085,42087,11028,42088,42090,42091,42100,1347, 13944,42092,42097,5447, 466, 42093,42094,
42095,42096,380, 18577,317, 42098,42099,42101,42102,29284,466, 317, 351, 42104,675, 42105,42107,42109,574, 42110,42112,476, 439, 6638, 565, 42114,42115,
29123,370, 42116,381, 42118,5488, 42121,42119,42120,42122,42124,42143,42144,42146,42156,42125,42128,42130,42134,10406,32292,42137,42139,42141,42126,42127,30712,
- 42129,41935,24938,42131,42132,42133,10406,381, 42135,42136,6265, 3031, 42138,2413, 42140,18154,42142,2809, 41144,2178, 11860,42145,42147,2211, 1347, 42150,4954,
+ 42129,41935,24938,42131,42132,42133,10406,381, 42135,42136,6265, 3031, 42138,2413, 42140,18154,42142,2809, 41144,2178, 11860,42145,42147,2211, 1347, 42150,4954,
42153,42148,42149,5447, 466, 21670,42151,42152,42154,42155,5226, 1526, 8139, 5554, 5095, 42158,42159,42160,42161,5550, 42162,8436, 317, 381, 42164,42167,42168,
- 883, 42169,42165,42166,42170,42172,42179,42196,42207,42212,8139, 42173,42176,5554, 42174,24938,42175,30461,5464, 397, 317, 317, 42177,42178,6020, 5932, 4788,
+ 883, 42169,42165,42166,42170,42172,42179,42196,42207,42212,8139, 42173,42176,5554, 42174,24938,42175,30461,5464, 397, 317, 317, 42177,42178,6020, 5932, 4788,
42180,42184,42190,41280,42181,356, 10153,42182,317, 42183,17897,317, 317, 42185,36225,42187,42188,8546, 42186,5581, 5477, 5054, 317, 42189,21157,317, 11870,
317, 1347, 42191,317, 356, 42192,5399, 2510, 317, 42193,382, 5761, 42194,5226, 42195,5447, 22295,22021,42197,42198,42200,41202,42203,42206,42199,42201,42202,
42204,42205,5458, 5634, 21690,25756,466, 332, 6425, 5709, 5717, 42208,42209,26676,42210,15531,42211,42213,42215,2063, 42216,9214, 42219,10364,42221,317, 42225,
- 373, 42227,42229,42230,42239,42240,42241,19979,345, 42242,42244,9185, 42222,42223,317, 345, 42224,42226,343, 343, 343, 42228,317, 317, 317, 341, 345,
+ 373, 42227,42229,42230,42239,42240,42241,19979,345, 42242,42244,9185, 42222,42223,317, 345, 42224,42226,343, 343, 343, 42228,317, 317, 317, 341, 345,
6551, 365, 317, 42231,42233,42234,317, 42232,5616, 317, 5488, 10674,42235,42236,42237,42238,696, 317, 42243,317, 39819,42246,339, 42247,42248,34041,42252,
- 42261,42263,1044, 42267,1347, 8172, 42249,6188, 42250,42251,42253,371, 1347, 317, 42260,317, 42254,42255,42256,42257,42258,42259,42262,317, 2053, 42264,9521,
+ 42261,42263,1044, 42267,1347, 8172, 42249,6188, 42250,42251,42253,371, 1347, 317, 42260,317, 42254,42255,42256,42257,42258,42259,42262,317, 2053, 42264,9521,
42265,42266,42269,433, 42270,42272,42271,965, 2086, 42273,42275,42281,554, 42282,42289,42290,42291,42309,42311,42312,42313,42314,42335,42386,42387,42388,42389,
35267,2035, 10317,487, 317, 42276,488, 42277,317, 8513, 42278,36628,10320,42280,343, 490, 635, 10373,3529, 42279,22636,42283,42286,42288,404, 317, 42284,
42285,42287,1160, 363, 7035, 42292,42293,371, 42295,317, 28314,5266, 42300,363, 42304,42306,42294,13995,741, 42296,42297,42298,42299,42301,332, 490, 42302,
- 651, 42303,345, 42305,490, 6228, 649, 317, 8301, 490, 355, 10149,42307,8205, 42308,356, 42310,317, 2219, 550, 1481, 42315,42316,42332,1481, 11073,2962,
+ 651, 42303,345, 42305,490, 6228, 649, 317, 8301, 490, 355, 10149,42307,8205, 42308,356, 42310,317, 2219, 550, 1481, 42315,42316,42332,1481, 11073,2962,
42317,42318,42319,356, 42322,12151,42324,42326,5379, 42327,14883,14768,42329,37456,42331,317, 406, 551, 9914, 395, 397, 7499, 42320,2146, 42321,371, 42323,
355, 2261, 42325,7223, 345, 382, 42328,363, 553, 4738, 436, 5942, 349, 42330,7035, 2156, 371, 42333,42334,42336,42343,42380,42385,42337,42340,37573,42338,
- 42339,514, 5536, 42341,42342,42344,42348,42354,42355,42360,42363,42368,42376,42345,42346,42347,42349,42353,42350,42351,42352,42356,42357,42358,42359,5200, 370,
- 317, 42361,42362,41489,42364,42367,42365,42366,42369,42372,42370,42371,410, 9482, 22546,42373,42374,42375,42377,41035,42378,6266, 42379,42381,42383,42382,373,
+ 42339,514, 5536, 42341,42342,42344,42348,42354,42355,42360,42363,42368,42376,42345,42346,42347,42349,42353,42350,42351,42352,42356,42357,42358,42359,5200, 370,
+ 317, 42361,42362,41489,42364,42367,42365,42366,42369,42372,42370,42371,410, 9482, 22546,42373,42374,42375,42377,41035,42378,6266, 42379,42381,42383,42382,373,
5097, 42384,5457, 381, 23268,355, 371, 17513,317, 883, 363, 42390,42391,42392,42394,42397,42400,42414,42416,42419,42420,42432,42433,42435,42442,42446,42449,
- 42459,42464,42465,8756, 42485,42490,42496,42503,42393,42395,42396,42398,42399,42401,42403,42406,42408,5711, 317, 42409,42410,42412,596, 42413,1992, 317, 317,
+ 42459,42464,42465,8756, 42485,42490,42496,42503,42393,42395,42396,42398,42399,42401,42403,42406,42408,5711, 317, 42409,42410,42412,596, 42413,1992, 317, 317,
3751, 2110, 490, 42402,317, 317, 1347, 5300, 42404,590, 42405,6831, 2551, 42407,1131, 363, 6901, 490, 42411,317, 1044, 6046, 363, 550, 317, 571, 42415,
317, 6593, 317, 380, 349, 42417,42418,536, 365, 40448,490, 450, 317, 355, 317, 16989,42421,42426,362, 42427,42431,381, 3505, 42422,589, 42423,42424,
42425,317, 370, 4984, 42428,550, 42429,5898, 10560,4949, 1999, 42430,317, 317, 29108,362, 370, 35859,42434,351, 2631, 13736,317, 42436,42437,42438,42439,
- 42441,317, 565, 565, 12742,490, 10898,6834, 317, 6900, 590, 42440,363, 390, 42443,42445,7428, 1992, 15753,317, 317, 490, 42444,5611, 42447,404, 490,
- 42448,42450,42457,42458,42451,42455,317, 317, 317, 354, 42452,42454,317, 317, 42453,5488, 5225, 317, 1347, 42456,317, 2510, 317, 367, 317, 317, 1347,
+ 42441,317, 565, 565, 12742,490, 10898,6834, 317, 6900, 590, 42440,363, 390, 42443,42445,7428, 1992, 15753,317, 317, 490, 42444,5611, 42447,404, 490,
+ 42448,42450,42457,42458,42451,42455,317, 317, 317, 354, 42452,42454,317, 317, 42453,5488, 5225, 317, 1347, 42456,317, 2510, 317, 367, 317, 317, 1347,
5809, 317, 42460,381, 317, 42461,380, 42462,317, 42463,381, 351, 317, 14799,2134, 42466,31612,42467,42468,42475,24111,42480,42483,42484,42469,343, 42473,
- 42470,5447, 42471,382, 42472,42474,42476,42479,42477,42478,393, 26229,317, 3125, 42481,42482,8580, 1020, 5640, 28392,37059,9824, 490, 343, 42486,433, 317,
- 42487,42488,42489,5300, 42491,42493,317, 350, 543, 317, 42494,7785, 1347, 42492,6266, 42495,466, 651, 317, 1347, 317, 42497,42499,42501,8536, 42502,362,
+ 42470,5447, 42471,382, 42472,42474,42476,42479,42477,42478,393, 26229,317, 3125, 42481,42482,8580, 1020, 5640, 28392,37059,9824, 490, 343, 42486,433, 317,
+ 42487,42488,42489,5300, 42491,42493,317, 350, 543, 317, 42494,7785, 1347, 42492,6266, 42495,466, 651, 317, 1347, 317, 42497,42499,42501,8536, 42502,362,
42498,317, 42500,6156, 30400,362, 490, 3503, 317, 1347, 5217, 42505,42506,42512,42514,42515,317, 18794,42519,1020, 15729,42524,365, 42525,42531,42532,42536,
- 15960,42537,2078, 10898,42507,7716, 42511,2280, 42508,317, 1160, 42509,39144,4984, 317, 42510,637, 317, 9244, 317, 317, 317, 42513,317, 6002, 466, 317,
- 596, 34849,1347, 42516,42517,42518,1325, 21036,317, 42520,6332, 42521,42522,42523,842, 42526,2206, 42529,363, 4789, 3284, 317, 42527,42528,42530,2272, 317,
+ 15960,42537,2078, 10898,42507,7716, 42511,2280, 42508,317, 1160, 42509,39144,4984, 317, 42510,637, 317, 9244, 317, 317, 317, 42513,317, 6002, 466, 317,
+ 596, 34849,1347, 42516,42517,42518,1325, 21036,317, 42520,6332, 42521,42522,42523,842, 42526,2206, 42529,363, 4789, 3284, 317, 42527,42528,42530,2272, 317,
40800,350, 317, 596, 42533,42534,317, 42535,317, 7850, 38654,2609, 42539,490, 42540,380, 42545,42546,42541,317, 42542,42544,42543,42548,42557,42564,42565,
- 42567,317, 42549,317, 1481, 2142, 42550,7127, 317, 42552,317, 9779, 42553,2279, 5611, 490, 42555,317, 651, 42551,5656, 9768, 22945,42554,396, 42556,317,
- 9768, 490, 317, 42558,332, 42559,2572, 42560,42563,9711, 317, 42561,317, 363, 2058, 42562,7916, 42566,12044,1160, 42569,15961,1060, 42578,42581,382, 317,
- 42570,42571,42572,1481, 42577,5793, 42573,11146,490, 8296, 3284, 42574,42575,16917,1428, 317, 589, 42576,11831,5381, 332, 42579,42580,42584,42585,18785,317,
- 18785,590, 6615, 317, 42587,42594,42598,42599,883, 42600,42601,7850, 42605,42607,42609,371, 42588,42589,317, 42592,42593,381, 42590,42591,343, 1588, 317,
+ 42567,317, 42549,317, 1481, 2142, 42550,7127, 317, 42552,317, 9779, 42553,2279, 5611, 490, 42555,317, 651, 42551,5656, 9768, 22945,42554,396, 42556,317,
+ 9768, 490, 317, 42558,332, 42559,2572, 42560,42563,9711, 317, 42561,317, 363, 2058, 42562,7916, 42566,12044,1160, 42569,15961,1060, 42578,42581,382, 317,
+ 42570,42571,42572,1481, 42577,5793, 42573,11146,490, 8296, 3284, 42574,42575,16917,1428, 317, 589, 42576,11831,5381, 332, 42579,42580,42584,42585,18785,317,
+ 18785,590, 6615, 317, 42587,42594,42598,42599,883, 42600,42601,7850, 42605,42607,42609,371, 42588,42589,317, 42592,42593,381, 42590,42591,343, 1588, 317,
29023,317, 42595,42596,490, 42597,42602,42603,42604,42606,42608,5920, 42610,42611,317, 317, 2351, 42612,42614,42617,42621,141, 43003,43008,43014,142, 43243,
43251,43272,43342,43349,43363,43370,43375,143, 43583,43586,43589,43593,43594,144, 43774,43778,43779,43784,43792,4797, 4797, 11073,11077,4797, 4797, 4797, 42613,
42615,19833,42616,42618,11091,2738, 42619,42620,42622,42623,42624,42625,42626,42627,34722,619, 42628,42629,42646,42707,42711,42714,42716,42743,42750,42762,42763,
- 42776,42787,42814,42862,42869,42873,42905,42926,42929,42938,42944,42955,42956,42995,565, 8099, 1358, 317, 9581, 42630,42632,42637,42638,42640,42643,42644,317,
- 370, 42631,365, 381, 13790,42633,16651,1444, 42634,466, 12154,42635,42636,42639,18064,42641,42642,339, 8296, 11844,16371,351, 42645,42647,24029,42649,9064,
+ 42776,42787,42814,42862,42869,42873,42905,42926,42929,42938,42944,42955,42956,42995,565, 8099, 1358, 317, 9581, 42630,42632,42637,42638,42640,42643,42644,317,
+ 370, 42631,365, 381, 13790,42633,16651,1444, 42634,466, 12154,42635,42636,42639,18064,42641,42642,339, 8296, 11844,16371,351, 42645,42647,24029,42649,9064,
42650,42653,11607,2134, 42691,42699,42706,11607,490, 42648,2003, 5325, 317, 11607,317, 42651,490, 42652,637, 42654,42655,42656,633, 42657,42660,42664,42667,
42670,42673,42675,42676,42678,42680,42682,42684,42687,5105, 317, 317, 5826, 317, 2742, 317, 1347, 2066, 42658,42659,42661,382, 42662,317, 42663,317, 42665,
1347, 42666,2272, 317, 363, 42668,14589,42669,42671,42672,42674,1992, 637, 317, 317, 633, 390, 8275, 363, 42677,42679,490, 317, 363, 10626,12054,42681,
- 42683,42685,476, 362, 42686,1915, 42688,42690,42689,317, 317, 317, 317, 317, 317, 362, 317, 5037, 3007, 351, 42692,2719, 343, 5836, 332, 317, 1230,
+ 42683,42685,476, 362, 42686,1915, 42688,42690,42689,317, 317, 317, 317, 317, 317, 362, 317, 5037, 3007, 351, 42692,2719, 343, 5836, 332, 317, 1230,
317, 6228, 317, 317, 317, 42693,42694,42696,42697,345, 317, 363, 8304, 363, 1347, 42695,317, 2054, 10626,363, 490, 42698,5270, 42700,42701,42702,42705,
18621,381, 2271, 356, 317, 42703,9064, 317, 7523, 317, 6063, 42704,4965, 2271, 317, 7149, 5890, 42708,42709,5184, 10283,42710,332, 7801, 5241, 14478,11408,
- 2719, 2509, 2134, 42712,42713,12711,343, 6813, 371, 42715,4965, 9212, 490, 16838,317, 42717,42718,42728,42730,350, 42732,490, 362, 9303, 42737,42739,317,
+ 2719, 2509, 2134, 42712,42713,12711,343, 6813, 371, 42715,4965, 9212, 490, 16838,317, 42717,42718,42728,42730,350, 42732,490, 362, 9303, 42737,42739,317,
42740,388, 11341,27260,42719,389, 42724,42720,42721,42722,42723,42725,42726,42727,362, 42729,42731,343, 317, 9351, 42733,317, 42734,42735,3284, 42736,42738,
317, 396, 317, 317, 2035, 11346,42741,42742,42744,42746,343, 7073, 42747,42748,42749,370, 42745,354, 5022, 553, 380, 343, 437, 490, 2317, 501, 12291,
42751,42753,42755,1444, 357, 42756,42760,42752,5991, 7401, 466, 539, 317, 2036, 551, 24305,42754,11266,343, 317, 5343, 2116, 317, 5241, 42757,42758,42759,
- 42761,42764,42765,42767,42768,42771,42772,14651,24265,320, 42766,633, 633, 2077, 362, 345, 16579,24269,13221,42769,8178, 42770,317, 40627,42773,42775,8639,
+ 42761,42764,42765,42767,42768,42771,42772,14651,24265,320, 42766,633, 633, 2077, 362, 345, 16579,24269,13221,42769,8178, 42770,317, 40627,42773,42775,8639,
371, 23651,42774,42777,1998, 42781,15136,42782,385, 490, 42783,42784,42778,42779,42780,949, 354, 317, 11342,353, 7488, 332, 501, 370, 2134, 42785,42786,
- 949, 42788,42792,5840, 42794,42802,42804,565, 42809,6614, 17075,42811,6563, 2035, 2368, 317, 31361,42789,42791,317, 404, 42790,317, 317, 42793,5105, 9027,
- 7214, 42795,317, 42796,42797,14278,317, 317, 317, 1353, 3469, 317, 633, 317, 42798,317, 28220,317, 317, 317, 317, 317, 317, 317, 5684, 317, 317,
+ 949, 42788,42792,5840, 42794,42802,42804,565, 42809,6614, 17075,42811,6563, 2035, 2368, 317, 31361,42789,42791,317, 404, 42790,317, 317, 42793,5105, 9027,
+ 7214, 42795,317, 42796,42797,14278,317, 317, 317, 1353, 3469, 317, 633, 317, 42798,317, 28220,317, 317, 317, 317, 317, 317, 317, 5684, 317, 317,
42801,30878,317, 317, 42799,42800,42803,5223, 42805,490, 8597, 9657, 42806,404, 1266, 317, 317, 558, 4980, 42807,42808,10422,16717,317, 42810,42812,42813,
- 356, 317, 949, 42815,554, 42818,42820,42823,42828,42829,42830,42834,42837,42841,42847,42848,42850,42851,2236, 1230, 42861,437, 42816,317, 42817,317, 490,
- 317, 371, 317, 42819,371, 8296, 11347,317, 317, 42821,42822,6002, 363, 6318, 42824,4984, 867, 317, 8503, 343, 42826,42827,1230, 317, 317, 371, 490,
- 42825,317, 317, 317, 5891, 380, 343, 317, 2381, 371, 42831,9095, 16910,5891, 332, 42832,42833,1160, 6278, 390, 317, 317, 8543, 11280,317, 21886,317,
+ 356, 317, 949, 42815,554, 42818,42820,42823,42828,42829,42830,42834,42837,42841,42847,42848,42850,42851,2236, 1230, 42861,437, 42816,317, 42817,317, 490,
+ 317, 371, 317, 42819,371, 8296, 11347,317, 317, 42821,42822,6002, 363, 6318, 42824,4984, 867, 317, 8503, 343, 42826,42827,1230, 317, 317, 371, 490,
+ 42825,317, 317, 317, 5891, 380, 343, 317, 2381, 371, 42831,9095, 16910,5891, 332, 42832,42833,1160, 6278, 390, 317, 317, 8543, 11280,317, 21886,317,
42835,317, 31834,343, 42836,396, 3284, 401, 12054,317, 42838,42840,501, 11147,380, 317, 42839,317, 317, 317, 382, 343, 1459, 9690, 42842,42843,42844,
42845,371, 371, 5439, 351, 2108, 971, 351, 42846,3284, 317, 390, 4984, 466, 5838, 490, 5055, 3075, 42849,437, 42852,8273, 42860,42853,317, 42854,42855,
317, 317, 42856,42857,42858,42859,317, 23670,317, 343, 971, 42863,42866,1109, 317, 317, 317, 42864,1018, 42865,42867,42868,42870,1345, 42871,42872,18621,
1347, 317, 317, 345, 390, 390, 42874,9779, 16876,42876,42879,42882,42883,317, 8099, 11132,42885,42886,42888,2396, 42892,317, 42897,42898,42900,9262, 42875,
- 9878, 42877,16917,317, 42878,42880,42881,12966,8333, 5571, 317, 24242,317, 2321, 42884,363, 380, 363, 363, 11147,8285, 5295, 2348, 317, 42887,42889,317,
+ 9878, 42877,16917,317, 42878,42880,42881,12966,8333, 5571, 317, 24242,317, 2321, 42884,363, 380, 363, 363, 11147,8285, 5295, 2348, 317, 42887,42889,317,
5022, 42890,7850, 317, 365, 42891,317, 317, 42893,42894,42895,42896,1325, 317, 1325, 381, 590, 317, 9325, 11962,2117, 382, 317, 351, 42899,42901,42903,
- 10997,42902,42904,362, 7939, 42906,42908,42909,332, 42912,490, 42916,42919,42922,42923,2368, 42907,490, 317, 11198,28127,8273, 42910,42911,317, 2366, 351,
- 42913,42914,317, 317, 42915,317, 6228, 317, 317, 317, 317, 317, 42917,637, 9088, 42918,317, 317, 633, 317, 317, 317, 317, 317, 317, 317, 317,
+ 10997,42902,42904,362, 7939, 42906,42908,42909,332, 42912,490, 42916,42919,42922,42923,2368, 42907,490, 317, 11198,28127,8273, 42910,42911,317, 2366, 351,
+ 42913,42914,317, 317, 42915,317, 6228, 317, 317, 317, 317, 317, 42917,637, 9088, 42918,317, 317, 633, 317, 317, 317, 317, 317, 317, 317, 317,
558, 317, 317, 317, 317, 317, 317, 317, 317, 42920,42921,637, 6996, 317, 1358, 317, 351, 42924,42925,30801,5836, 5836, 1481, 332, 42927,317, 42928,
317, 317, 317, 17531,1998, 390, 404, 565, 343, 42930,42931,42936,2541, 317, 489, 1444, 1345, 42932,42934,363, 42933,8613, 317, 317, 42935,42937,42939,
42941,42943,490, 351, 5628, 317, 362, 8217, 7035, 42940,316, 317, 42942,345, 27939,5055, 9702, 317, 15156,317, 345, 42945,42949,356, 317, 42952,42954,
2731, 317, 42946,317, 42947,42948,2272, 42950,42951,42953,27606,11844,949, 42957,42978,42979,42981,42984,42985,42987,1230, 501, 42989,8955, 317, 9779, 42990,
- 558, 42993,317, 42958,42960,42965,42967,42970,42972,42974,42975,42959,42961,42962,42963,42964,42966,42968,2110, 42969,42971,42973,42976,42977,343, 551, 370,
+ 558, 42993,317, 42958,42960,42965,42967,42970,42972,42974,42975,42959,42961,42962,42963,42964,42966,42968,2110, 42969,42971,42973,42976,42977,343, 551, 370,
2156, 42980,29210,42982,42983,317, 42975,42986,42988,5684, 317, 343, 42991,2110, 42992,42994,7514, 2110, 42996,490, 42998,363, 42997,11366,363, 3182, 42999,
- 5991, 43000,43001,43002,1160, 1108, 5684, 6318, 2815, 16278,3361, 551, 43004,43005,43007,5017, 867, 43006,345, 43009,43011,43012,10382,43010,43013,2162, 8906,
- 382, 43015,43054,43058,43061,43072,43080,43092,43093,590, 43098,43099,43113,43117,43141,43149,43152,43185,43215,43226,43229,43231,43240,3429, 43016,43019,418,
- 3640, 29396,43017,43018,317, 43020,43025,43028,43029,43033,43034,43035,43039,43040,43043,43046,43051,43052,43053,43021,43022,381, 43023,43024,43026,36441,317,
+ 5991, 43000,43001,43002,1160, 1108, 5684, 6318, 2815, 16278,3361, 551, 43004,43005,43007,5017, 867, 43006,345, 43009,43011,43012,10382,43010,43013,2162, 8906,
+ 382, 43015,43054,43058,43061,43072,43080,43092,43093,590, 43098,43099,43113,43117,43141,43149,43152,43185,43215,43226,43229,43231,43240,3429, 43016,43019,418,
+ 3640, 29396,43017,43018,317, 43020,43025,43028,43029,43033,43034,43035,43039,43040,43043,43046,43051,43052,43053,43021,43022,381, 43023,43024,43026,36441,317,
43027,373, 343, 317, 11902,43030,43031,43032,43036,43037,43038,12625,339, 43041,43042,317, 43044,27723,43045,539, 11902,380, 574, 379, 43047,43050,43048,
43049,43055,20485,43057,43056,29305,317, 317, 19463,43059,43060,3433, 363, 32982,2533, 43062,43063,39969,43068,550, 43071,29305,343, 637, 317, 633, 29305,
- 43064,43065,43066,43067,370, 43069,43070,43073,43074,1526, 4591, 43077,43079,13269,43075,43076,2510, 363, 362, 1530, 16579,43078,12151,317, 43081,5825, 1011,
+ 43064,43065,43066,43067,370, 43069,43070,43073,43074,1526, 4591, 43077,43079,13269,43075,43076,2510, 363, 362, 1530, 16579,43078,12151,317, 43081,5825, 1011,
10487,12151,43082,32592,43087,6354, 43088,317, 345, 43091,317, 43083,345, 370, 29424,43084,6420, 43085,43086,43089,43090,317, 1078, 345, 18289,2261, 17297,
43094,43096,43097,1329, 43095,317, 39970,380, 381, 428, 43100,501, 43101,6231, 43104,345, 43105,43111,43112,8172, 1230, 401, 2261, 43102,317, 43103,43106,
- 43107,1160, 43109,9779, 345, 43108,4980, 317, 29856,43110,362, 343, 8178, 2271, 43114,43115,43116,38227,397, 6555, 2551, 317, 490, 6555, 404, 317, 2117,
- 14695,2117, 949, 43118,5962, 43119,43121,317, 43122,43125,43128,43129,43137,2396, 3941, 43138,43139,501, 9644, 43120,345, 384, 317, 317, 11533,574, 490,
- 343, 43123,1358, 4591, 43124,43126,43127,317, 317, 345, 2551, 2577, 43130,43131,43132,2058, 8178, 43136,350, 11533,317, 345, 10820,317, 317, 43133,596,
+ 43107,1160, 43109,9779, 345, 43108,4980, 317, 29856,43110,362, 343, 8178, 2271, 43114,43115,43116,38227,397, 6555, 2551, 317, 490, 6555, 404, 317, 2117,
+ 14695,2117, 949, 43118,5962, 43119,43121,317, 43122,43125,43128,43129,43137,2396, 3941, 43138,43139,501, 9644, 43120,345, 384, 317, 317, 11533,574, 490,
+ 343, 43123,1358, 4591, 43124,43126,43127,317, 317, 345, 2551, 2577, 43130,43131,43132,2058, 8178, 43136,350, 11533,317, 345, 10820,317, 317, 43133,596,
43135,404, 43134,350, 6228, 317, 633, 317, 317, 396, 317, 317, 317, 396, 22831,13683,5684, 363, 2521, 501, 4982, 370, 2108, 43140,43142,2381, 43143,
43144,317, 10506,317, 590, 43145,43146,43147,43148,317, 2551, 332, 43150,6046, 43151,6046, 2551, 501, 43153,43155,43156,43157,43160,43162,43164,15540,43167,
- 43169,43172,43175,43180,11716,43181,43184,370, 971, 43154,370, 578, 29210,466, 363, 317, 43158,317, 43159,5942, 16941,317, 43161,5995, 317, 43163,332,
- 332, 11607,317, 37568,317, 5991, 43165,4987, 317, 43166,43168,6563, 363, 5896, 43170,2348, 43171,363, 356, 43173,43174,5836, 43176,43177,43178,43179,2163,
+ 43169,43172,43175,43180,11716,43181,43184,370, 971, 43154,370, 578, 29210,466, 363, 317, 43158,317, 43159,5942, 16941,317, 43161,5995, 317, 43163,332,
+ 332, 11607,317, 37568,317, 5991, 43165,4987, 317, 43166,43168,6563, 363, 5896, 43170,2348, 43171,363, 356, 43173,43174,5836, 43176,43177,43178,43179,2163,
490, 1347, 6228, 317, 633, 317, 317, 558, 317, 43182,43183,43186,43188,43192,43194,43195,43196,43197,43204,43206,10538,43187,43189,43190,43191,490, 43193,
351, 2586, 439, 2280, 43198,43199,43200,43203,1060, 317, 6228, 317, 32125,317, 362, 9027, 317, 317, 43201,1160, 490, 43202,317, 43205,10815,317, 43207,
- 4268, 317, 43208,637, 1266, 317, 1267, 2060, 3469, 317, 43209,24304,2063, 43212,43214,43210,43211,43213,490, 4789, 43216,43218,2609, 43220,316, 43221,362,
- 1194, 43222,43224,43217,383, 34392,43219,320, 317, 317, 17683,490, 382, 12107,381, 365, 363, 43223,351, 6081, 6420, 4965, 43225,363, 317, 1347, 382,
- 14648,370, 43227,317, 43228,43230,3079, 401, 43232,43234,43238,596, 370, 317, 43233,370, 43235,381, 317, 10422,43236,370, 317, 43237,43239,6497, 363,
- 43241,43242,3652, 2058, 2134, 317, 5836, 14170,14170,43244,43247,2898, 43248,43245,43246,32457,43249,43250,43252,43255,43257,43259,43263,43265,43268,43253,490,
+ 4268, 317, 43208,637, 1266, 317, 1267, 2060, 3469, 317, 43209,24304,2063, 43212,43214,43210,43211,43213,490, 4789, 43216,43218,2609, 43220,316, 43221,362,
+ 1194, 43222,43224,43217,383, 34392,43219,320, 317, 317, 17683,490, 382, 12107,381, 365, 363, 43223,351, 6081, 6420, 4965, 43225,363, 317, 1347, 382,
+ 14648,370, 43227,317, 43228,43230,3079, 401, 43232,43234,43238,596, 370, 317, 43233,370, 43235,381, 317, 10422,43236,370, 317, 43237,43239,6497, 363,
+ 43241,43242,3652, 2058, 2134, 317, 5836, 14170,14170,43244,43247,2898, 43248,43245,43246,32457,43249,43250,43252,43255,43257,43259,43263,43265,43268,43253,490,
16853,317, 43254,741, 43256,966, 43258,43260,43261,43262,43264,3967, 370, 11539,43266,43267,43269,43270,43271,43273,43278,1020, 43280,43284,43286,43287,43295,
- 365, 43299,43301,43316,466, 2551, 43327,351, 43330,43336,43339,5624, 43340,6763, 43274,43277,317, 43275,43276,2357, 343, 511, 362, 590, 365, 350, 3361,
- 43279,43281,43282,43283,43285,43288,43289,43293,343, 12027,2066, 5623, 43290,43291,43292,11769,43294,35278,317, 43296,6231, 43297,43298,2211, 8852, 363, 317,
- 43300,1526, 14495,5683, 404, 317, 949, 43302,43305,43307,43308,43311,554, 39260,43313,404, 43303,43304,554, 43306,6228, 317, 633, 1160, 317, 317, 317,
- 43309,43310,404, 317, 5392, 317, 317, 1108, 404, 43312,404, 1108, 362, 317, 317, 31154,43314,370, 43315,1300, 317, 317, 1353, 633, 24054,317, 317,
- 317, 9876, 13816,317, 317, 4984, 43317,43321,43322,2291, 490, 43324,43325,511, 2301, 2078, 6763, 7053, 43326,19307,380, 43318,317, 43319,43320,12422,362,
+ 365, 43299,43301,43316,466, 2551, 43327,351, 43330,43336,43339,5624, 43340,6763, 43274,43277,317, 43275,43276,2357, 343, 511, 362, 590, 365, 350, 3361,
+ 43279,43281,43282,43283,43285,43288,43289,43293,343, 12027,2066, 5623, 43290,43291,43292,11769,43294,35278,317, 43296,6231, 43297,43298,2211, 8852, 363, 317,
+ 43300,1526, 14495,5683, 404, 317, 949, 43302,43305,43307,43308,43311,554, 39260,43313,404, 43303,43304,554, 43306,6228, 317, 633, 1160, 317, 317, 317,
+ 43309,43310,404, 317, 5392, 317, 317, 1108, 404, 43312,404, 1108, 362, 317, 317, 31154,43314,370, 43315,1300, 317, 317, 1353, 633, 24054,317, 317,
+ 317, 9876, 13816,317, 317, 4984, 43317,43321,43322,2291, 490, 43324,43325,511, 2301, 2078, 6763, 7053, 43326,19307,380, 43318,317, 43319,43320,12422,362,
381, 2357, 317, 28836,43323,589, 466, 43126,3079, 317, 43328,490, 7785, 2163, 43329,490, 317, 317, 971, 43331,17658,590, 43333,43332,43334,43335,43337,
43338,466, 7797, 490, 43341,7688, 362, 631, 664, 43343,43347,43348,949, 18746,43344,2300, 317, 43345,317, 43346,12726,596, 43350,2546, 1243, 43354,43355,
43357,1243, 43351,43352,43353,43356,611, 43358,43361,608, 611, 43359,43360,43362,26004,43364,43368,9540, 43365,43366,43367,396, 20433,43369,19398,363, 43371,
43373,1193, 43374,43372,781, 2022, 2035, 43376,43377,43378,43379,43380,43383,43391,43395,43406,43412,43426,43429,43432,43469,43473,43475,43480,43488,43489,43505,
- 43510,43511,43526,43547,43548,43558,43564,43567,43571,43578,43381,43382,317, 43384,317, 2948, 43386,317, 43388,317, 43385,317, 8772, 8506, 43387,317, 1160,
+ 43510,43511,43526,43547,43548,43558,43564,43567,43571,43578,43381,43382,317, 43384,317, 2948, 43386,317, 43388,317, 43385,317, 8772, 8506, 43387,317, 1160,
6420, 343, 43389,43390,1519, 2509, 1347, 5332, 2571, 43392,43393,363, 317, 43394,7577, 43396,43398,43401,370, 10408,43397,43399,427, 43400,43402,317, 43403,
43404,43405,43407,43408,1358, 43409,3987, 1230, 317, 363, 317, 43410,43411,949, 632, 2366, 43413,43416,2077, 30797,43418,11487,43419,43421,43422,5792, 43424,
- 43414,43415,384, 605, 43417,536, 39907,404, 43420,2222, 511, 317, 43423,2290, 2553, 390, 6228, 637, 43425,43427,317, 43428,43430,5711, 9081, 43431,317,
+ 43414,43415,384, 605, 43417,536, 39907,404, 43420,2222, 511, 317, 43423,2290, 2553, 390, 6228, 637, 43425,43427,317, 43428,43430,5711, 9081, 43431,317,
2381, 401, 43433,35975,380, 43443,11648,404, 317, 43434,317, 317, 4984, 371, 43435,43442,1160, 43436,43438,437, 43437,7911, 363, 501, 43439,43440,43441,
363, 466, 363, 404, 637, 42654,43444,43445,1011, 740, 633, 673, 633, 43446,43449,43450,43451,43453,43454,43455,351, 343, 43457,43458,38462,43460,43462,
- 511, 43468,317, 43447,43448,43452,343, 2402, 3505, 5872, 332, 317, 362, 43456,363, 3079, 317, 343, 317, 317, 43459,6996, 317, 633, 633, 357, 317,
- 43461,7055, 9557, 8301, 343, 2553, 43463,2521, 404, 43465,43464,317, 317, 317, 317, 5037, 356, 43466,43467,363, 343, 317, 43470,1915, 43471,466, 317,
- 43472,5037, 5991, 370, 317, 317, 43474,1753, 490, 490, 43476,43478,350, 317, 317, 490, 43477,317, 317, 18438,317, 14773,3469, 381, 362, 317, 317,
- 43479,363, 5324, 2003, 43481,3611, 43482,43486,317, 404, 317, 10041,43483,43484,43485,32322,3941, 317, 370, 43487,317, 19806,1347, 23328,2171, 2576, 1347,
+ 511, 43468,317, 43447,43448,43452,343, 2402, 3505, 5872, 332, 317, 362, 43456,363, 3079, 317, 343, 317, 317, 43459,6996, 317, 633, 633, 357, 317,
+ 43461,7055, 9557, 8301, 343, 2553, 43463,2521, 404, 43465,43464,317, 317, 317, 317, 5037, 356, 43466,43467,363, 343, 317, 43470,1915, 43471,466, 317,
+ 43472,5037, 5991, 370, 317, 317, 43474,1753, 490, 490, 43476,43478,350, 317, 317, 490, 43477,317, 317, 18438,317, 14773,3469, 381, 362, 317, 317,
+ 43479,363, 5324, 2003, 43481,3611, 43482,43486,317, 404, 317, 10041,43483,43484,43485,32322,3941, 317, 370, 43487,317, 19806,1347, 23328,2171, 2576, 1347,
4984, 43490,8301, 348, 43494,43495,43497,2551, 1358, 43501,43503,317, 31533,28583,343, 5207, 343, 1160, 317, 43491,43492,43493,7852, 343, 2402, 317, 11533,
- 43496,6228, 317, 10452,466, 363, 317, 5840, 5037, 317, 43498,317, 2845, 43499,511, 43500,4965, 43502,317, 343, 404, 43504,317, 345, 43506,317, 317,
- 43509,345, 43507,317, 43508,16022,490, 43512,427, 43513,5105, 43518,2631, 43520,490, 43522,43524,43525,317, 43514,4984, 43517,363, 317, 4984, 363, 380,
+ 43496,6228, 317, 10452,466, 363, 317, 5840, 5037, 317, 43498,317, 2845, 43499,511, 43500,4965, 43502,317, 343, 404, 43504,317, 345, 43506,317, 317,
+ 43509,345, 43507,317, 43508,16022,490, 43512,427, 43513,5105, 43518,2631, 43520,490, 43522,43524,43525,317, 43514,4984, 43517,363, 317, 4984, 363, 380,
43515,681, 7769, 43516,740, 317, 317, 27446,317, 345, 5419, 317, 317, 1992, 404, 43519,6228, 13221,43521,317, 43523,345, 11147,365, 355, 43527,43528,
- 43529,43539,43542,43397,43544,2396, 43545,43546,343, 2391, 2087, 365, 1266, 649, 317, 43530,43531,363, 43532,574, 317, 317, 18611,317, 5823, 7168, 363,
+ 43529,43539,43542,43397,43544,2396, 43545,43546,343, 2391, 2087, 365, 1266, 649, 317, 43530,43531,363, 43532,574, 317, 317, 18611,317, 5823, 7168, 363,
43533,8248, 317, 317, 18611,43534,5300, 345, 43535,43536,43537,43538,1266, 1358, 1020, 362, 43540,317, 43541,24695,10038,1267, 317, 317, 317, 633, 20592,
- 4925, 43543,43410,16767,390, 2271, 363, 15705,343, 439, 6002, 1526, 317, 4213, 317, 1526, 1998, 43549,1992, 43550,16398,43551,43552,317, 43553,43556,381,
+ 4925, 43543,43410,16767,390, 2271, 363, 15705,343, 439, 6002, 1526, 317, 4213, 317, 1526, 1998, 43549,1992, 43550,16398,43551,43552,317, 43553,43556,381,
43554,43555,317, 382, 8158, 370, 380, 43557,317, 356, 466, 10149,317, 43559,33733,43563,8177, 43560,43561,43562,9768, 3284, 6780, 390, 490, 43565,43566,
43568,43569,43570,949, 5105, 43572,23998,10891,43574,4591, 2260, 43575,43573,6546, 404, 317, 43576,43577,43579,43580,43581,43582,382, 43584,10381,43585,43587,
8807, 43588,11073,3182, 43590,9172, 43592,43591,5626, 5763, 2553, 363, 2146, 381, 39260,43595,339, 43596,43597,43598,43606,43611,43612,43623,350, 43628,43639,
43641,43646,43649,43651,43668,43677,43715,43716,590, 43720,43737,43760,380, 43762,43768,490, 1588, 43599,43605,1347, 43600,345, 43602,43603,490, 43604,43601,
357, 332, 7143, 343, 5392, 33534,317, 43607,317, 43608,43609,362, 2035, 317, 317, 43610,15510,41385,2156, 317, 362, 343, 2116, 43613,317, 43615,43616,
- 43618,3078, 43622,404, 317, 5611, 317, 43614,317, 1109, 427, 43617,466, 25302,317, 25302,7821, 43619,317, 4925, 5760, 317, 43620,43621,4591, 5324, 370,
+ 43618,3078, 43622,404, 317, 5611, 317, 43614,317, 1109, 427, 43617,466, 25302,317, 25302,7821, 43619,317, 4925, 5760, 317, 43620,43621,4591, 5324, 370,
596, 604, 43624,43625,43627,381, 345, 2108, 317, 15758,43626,6780, 43629,43632,11089,6704, 43638,317, 317, 10408,43630,43631,43633,43635,11128,317, 43634,
- 43636,43637,43640,317, 317, 553, 317, 365, 1100, 43642,43644,317, 43643,1160, 317, 317, 317, 3599, 317, 362, 317, 317, 317, 345, 43645,381, 550,
+ 43636,43637,43640,317, 317, 553, 317, 365, 1100, 43642,43644,317, 43643,1160, 317, 317, 317, 3599, 317, 362, 317, 317, 317, 345, 43645,381, 550,
11485,43647,43648,343, 7797, 317, 43650,2108, 490, 317, 2586, 490, 43652,43653,43660,384, 43661,553, 43662,317, 4952, 1358, 317, 317, 43654,390, 43656,
490, 1160, 1943, 1100, 43658,490, 6228, 1087, 43655,317, 317, 317, 1160, 317, 5891, 317, 345, 6228, 317, 866, 2366, 317, 7916, 317, 43657,43659,43663,
- 43666,43667,637, 363, 317, 43664,43665,43669,43670,33415,490, 43672,43673,404, 4186, 317, 43671,6420, 2117, 1325, 651, 10422,3999, 539, 43674,43676,1060,
+ 43666,43667,637, 363, 317, 43664,43665,43669,43670,33415,490, 43672,43673,404, 4186, 317, 43671,6420, 2117, 1325, 651, 10422,3999, 539, 43674,43676,1060,
317, 43675,3869, 5159, 2036, 43678,43680,5223, 43682,362, 43689,43694,43705,43706,43713,2078, 43714,43679,356, 1791, 350, 317, 43681,345, 5054, 1588, 43683,
- 43685,43687,621, 590, 43688,317, 490, 317, 43684,317, 317, 43686,317, 317, 43690,371, 43691,43692,6704, 362, 43693,362, 6601, 39465,345, 317, 1347,
+ 43685,43687,621, 590, 43688,317, 490, 317, 43684,317, 317, 43686,317, 317, 43690,371, 43691,43692,6704, 362, 43693,362, 6601, 39465,345, 317, 1347,
6420, 11612,489, 43695,5105, 2081, 43697,43698,43703,5611, 345, 43696,317, 43699,345, 43700,637, 18438,1292, 317, 317, 43701,43702,43704,43707,6089, 43710,
43711,317, 317, 15130,43708,317, 43709,43712,1347, 317, 12756,43717,317, 350, 317, 43718,43719,43721,43723,501, 43724,43725,43730,43736,6388, 2022, 14766,
- 7689, 317, 357, 332, 317, 317, 43722,317, 371, 363, 401, 13378,371, 5832, 317, 8275, 317, 43726,43727,43728,363, 43729,363, 40281,520, 5464, 490,
+ 7689, 317, 357, 332, 317, 317, 43722,317, 371, 363, 401, 13378,371, 5832, 317, 8275, 317, 43726,43727,43728,363, 43729,363, 40281,520, 5464, 490,
317, 317, 1109, 43731,637, 390, 43732,43733,7242, 43734,43735,8273, 16416,1020, 5570, 332, 43738,43740,396, 43739,317, 43741,43742,27218,43743,43744,43747,
- 43758,43759,25404,345, 2035, 5205, 343, 317, 589, 43745,363, 43746,363, 43748,43751,43753,1347, 14425,43749,43750,6602, 1345, 43752,2184, 9482, 6425, 5464,
+ 43758,43759,25404,345, 2035, 5205, 343, 317, 589, 43745,363, 43746,363, 43748,43751,43753,1347, 14425,43749,43750,6602, 1345, 43752,2184, 9482, 6425, 5464,
637, 43754,317, 317, 633, 317, 43755,1160, 350, 17976,317, 43756,43757,363, 1160, 2272, 317, 4952, 348, 5943, 43761,317, 317, 466, 1243, 43763,43767,
43764,490, 380, 5633, 43765,43766,317, 1243, 43769,43770,43771,43772,43773,5464, 20858,43775,43776,43777,2381, 412, 43780,43781,43782,43783,43785,43786,43787,
- 43789,43788,43790,43791,43793,43794,43795,43796,43797,43801,43804,16575,43813,146, 44467,44481,44493,148, 44805,44816,44820,149, 45308,45325,151, 45487,152,
+ 43789,43788,43790,43791,43793,43794,43795,43796,43797,43801,43804,16575,43813,146, 44467,44481,44493,148, 44805,44816,44820,149, 45308,45325,151, 45487,152,
153, 46062,46069,154, 46336,46352,155, 46613,46623,46650,46679,43798,43800,43799,342, 8178, 24333,43802,607, 43803,43805,43811,2298, 43806,43807,43808,43809,
43810,43812,43814,43816,43815,43817,43818,43819,43821,43826,43842,43858,43867,43884,43888,43893,43912,43932,43936,43950,44033,44084,44145,44148,44180,147, 44291,
44335,44400,44418,44424,44434,44444,43820,490, 43822,317, 43823,43824,1358, 1108, 43825,490, 317, 43827,43831,317, 12731,365, 43836,43837,43838,2391, 43839,
- 43840,11346,883, 11346,3688, 490, 490, 43828,25960,43830,43829,384, 43832,317, 43833,390, 43834,43835,12656,490, 490, 317, 317, 1700, 349, 317, 365,
- 317, 317, 332, 43841,43843,43844,43852,2021, 317, 43853,5293, 26963,43854,2178, 43845,43847,43850,43846,43846,5624, 317, 43848,43849,43851,351, 13638,490,
+ 43840,11346,883, 11346,3688, 490, 490, 43828,25960,43830,43829,384, 43832,317, 43833,390, 43834,43835,12656,490, 490, 317, 317, 1700, 349, 317, 365,
+ 317, 317, 332, 43841,43843,43844,43852,2021, 317, 43853,5293, 26963,43854,2178, 43845,43847,43850,43846,43846,5624, 317, 43848,43849,43851,351, 13638,490,
43855,23622,11347,43856,43857,10316,371, 3284, 43859,388, 43860,433, 43862,43863,350, 43864,365, 43865,43866,317, 5241, 7973, 490, 317, 14410,490, 43861,
390, 381, 8301, 490, 382, 317, 4925, 1331, 42902,317, 472, 2298, 43868,43869,1992, 317, 43874,27022,43877,43879,43880,43870,43872,2577, 43871,43873,43875,
- 43876,43878,466, 2568, 43881,43882,43883,43885,43887,317, 15090,317, 404, 2110, 43886,317, 43889,39137,345, 43890,343, 43891,43892,5943, 7672, 317, 8722,
- 490, 317, 343, 33429,43894,12202,428, 43899,43901,43903,43910,43911,317, 9298, 43895,43897,317, 317, 2351, 317, 43896,9779, 490, 43898,7785, 317, 363,
+ 43876,43878,466, 2568, 43881,43882,43883,43885,43887,317, 15090,317, 404, 2110, 43886,317, 43889,39137,345, 43890,343, 43891,43892,5943, 7672, 317, 8722,
+ 490, 317, 343, 33429,43894,12202,428, 43899,43901,43903,43910,43911,317, 9298, 43895,43897,317, 317, 2351, 317, 43896,9779, 490, 43898,7785, 317, 363,
43900,317, 490, 43902,7949, 490, 43904,363, 43905,43909,43906,43907,43908,4965, 1108, 317, 590, 490, 2576, 43913,357, 43914,43915,590, 43916,43917,43920,
- 2102, 6834, 43921,43923,43929,365, 14832,363, 6917, 8403, 7005, 43918,370, 43919,490, 390, 590, 317, 1347, 317, 490, 317, 381, 43922,351, 43924,490,
+ 2102, 6834, 43921,43923,43929,365, 14832,363, 6917, 8403, 7005, 43918,370, 43919,490, 390, 590, 317, 1347, 317, 490, 317, 381, 43922,351, 43924,490,
43925,25092,362, 43926,43927,43928,43930,317, 317, 363, 363, 43931,43933,350, 317, 43934,348, 380, 43935,43937,2380, 390, 43944,43945,43946,43947,43948,
43949,949, 320, 971, 590, 490, 9398, 43938,43939,43940,7874, 43942,1481, 43941,439, 43943,29531,6638, 9913, 2885, 12756,16643,5836, 4186, 5173, 43951,43964,
- 43969,43971,43973,43988,43990,8948, 43993,44004,44005,44015,44017,44019,44021,44024,44028,44029,44030,43952,43954,43956,317, 43957,43961,317, 43962,43963,6402,
+ 43969,43971,43973,43988,43990,8948, 43993,44004,44005,44015,44017,44019,44021,44024,44028,44029,44030,43952,43954,43956,317, 43957,43961,317, 43962,43963,6402,
343, 43953,381, 5836, 2163, 43955,3284, 3688, 365, 43958,1444, 43959,348, 490, 43960,317, 390, 348, 7392, 43965,43967,43966,43968,43970,371, 38707,43972,
351, 380, 43974,43978,490, 317, 43985,43986,5223, 317, 490, 43987,30119,43975,43976,43977,43979,390, 43984,43980,43981,43982,43983,371, 350, 1020, 25114,
- 43989,345, 43991,501, 43992,317, 28655,43994,43995,9869, 350, 490, 317, 43997,43999,44002,317, 43996,43998,2110, 5623, 317, 24664,44000,490, 15326,3284,
- 44001,317, 13062,390, 371, 317, 3987, 490, 44003,8296, 371, 317, 29998,317, 362, 38081,44006,44007,44008,44013,16187,44014,18460,2108, 18839,345, 350,
+ 43989,345, 43991,501, 43992,317, 28655,43994,43995,9869, 350, 490, 317, 43997,43999,44002,317, 43996,43998,2110, 5623, 317, 24664,44000,490, 15326,3284,
+ 44001,317, 13062,390, 371, 317, 3987, 490, 44003,8296, 371, 317, 29998,317, 362, 38081,44006,44007,44008,44013,16187,44014,18460,2108, 18839,345, 350,
317, 317, 19633,317, 317, 4949, 2236, 6228, 44009,317, 44011,317, 4976, 10081,317, 44010,44012,2108, 10560,317, 317, 317, 2105, 2080, 12696,5626, 12696,
- 345, 44016,317, 44018,362, 2163, 26310,44020,16187,490, 44022,605, 44023,44025,16187,1526, 317, 44026,44027,317, 5626, 13369,317, 490, 490, 490, 6834,
+ 345, 44016,317, 44018,362, 2163, 26310,44020,16187,490, 44022,605, 44023,44025,16187,1526, 317, 44026,44027,317, 5626, 13369,317, 490, 490, 490, 6834,
2590, 6048, 20578,44031,317, 44032,44034,44040,44042,44044,44057,343, 44067,44068,44072,9981, 44073,44081,15772,44083,490, 317, 44035,44036,13003,44037,44038,
44039,15876,317, 17985,490, 2178, 2110, 2020, 7306, 317, 351, 466, 44041,44043,44045,490, 1108, 44047,44050,29531,44054,44055,44046,44048,44049,44051,44052,
- 381, 44053,1044, 2280, 15017,1325, 44056,511, 363, 363, 44058,44060,44062,8403, 44063,10997,6555, 490, 44059,7892, 490, 3284, 44061,5017, 10734,317, 4925,
- 371, 490, 490, 9174, 44064,317, 44065,317, 17095,44066,317, 351, 5736, 5663, 44069,350, 317, 44070,317, 44071,351, 3987, 6817, 7866, 44074,44077,5662,
+ 381, 44053,1044, 2280, 15017,1325, 44056,511, 363, 363, 44058,44060,44062,8403, 44063,10997,6555, 490, 44059,7892, 490, 3284, 44061,5017, 10734,317, 4925,
+ 371, 490, 490, 9174, 44064,317, 44065,317, 17095,44066,317, 351, 5736, 5663, 44069,350, 317, 44070,317, 44071,351, 3987, 6817, 7866, 44074,44077,5662,
350, 466, 317, 44080,351, 44075,42720,44076,44078,44079,2080, 382, 44082,8296, 1060, 381, 317, 390, 44085,44092,44099,44102,44109,44111,44113,44118,44120,
- 44124,44127,1444, 44128,44130,44139,565, 44140,44144,363, 42897,5163, 317, 44086,43909,317, 44087,317, 44089,317, 44090,317, 44091,24903,6900, 6901, 317,
- 44088,317, 44093,44094,44097,44095,44096,44098,44100,12731,44101,428, 490, 317, 545, 6600, 343, 565, 5624, 343, 5295, 317, 44103,490, 44104,44105,2086,
+ 44124,44127,1444, 44128,44130,44139,565, 44140,44144,363, 42897,5163, 317, 44086,43909,317, 44087,317, 44089,317, 44090,317, 44091,24903,6900, 6901, 317,
+ 44088,317, 44093,44094,44097,44095,44096,44098,44100,12731,44101,428, 490, 317, 545, 6600, 343, 565, 5624, 343, 5295, 317, 44103,490, 44104,44105,2086,
44106,342, 365, 317, 44107,490, 5295, 2291, 2233, 44108,44110,8096, 31290,490, 365, 20919,317, 317, 44112,317, 343, 8855, 44114,44115,44116,44117,44119,
- 351, 44121,44122,44123,44125,44126,550, 4984, 351, 5163, 317, 32397,356, 317, 1791, 317, 9567, 317, 317, 317, 343, 396, 317, 363, 390, 317, 490,
- 44129,370, 44131,44136,44137,9473, 350, 44138,38654,317, 317, 44132,5624, 44133,44134,44135,44141,317, 44142,44143,3284, 15461,350, 44146,1020, 317, 2291,
+ 351, 44121,44122,44123,44125,44126,550, 4984, 351, 5163, 317, 32397,356, 317, 1791, 317, 9567, 317, 317, 317, 343, 396, 317, 363, 390, 317, 490,
+ 44129,370, 44131,44136,44137,9473, 350, 44138,38654,317, 317, 44132,5624, 44133,44134,44135,44141,317, 44142,44143,3284, 15461,350, 44146,1020, 317, 2291,
36630,317, 44147,44149,44152,350, 44157,343, 44164,2391, 44165,44170,44174,44176,44177,5241, 590, 44150,553, 363, 44151,44153,44155,44156,343, 44154,44158,
- 44159,2086, 490, 44160,44161,317, 2381, 317, 44162,44163,363, 351, 363, 10625,363, 44166,317, 351, 5836, 44167,44168,44169,44171,44172,16860,350, 317,
+ 44159,2086, 490, 44160,44161,317, 2381, 317, 44162,44163,363, 351, 363, 10625,363, 44166,317, 351, 5836, 44167,44168,44169,44171,44172,16860,350, 317,
317, 362, 7568, 44173,317, 7949, 317, 44175,1108, 8304, 350, 345, 44178,44179,317, 11346,8828, 490, 44181,44182,44183,44185,44218,44219,44220,44227,44231,
- 16187,44232,6388, 385, 44236,44248,44250,44254,44259,44266,44269,44274,44280,44287,44288,44289,44290,44184,44186,44188,44189,642, 44193,44198,6600, 44200,2163,
+ 16187,44232,6388, 385, 44236,44248,44250,44254,44259,44266,44269,44274,44280,44287,44288,44289,44290,44184,44186,44188,44189,642, 44193,44198,6600, 44200,2163,
44202,44209,553, 44211,44213,44214,317, 362, 44187,363, 2585, 44190,401, 44191,44192,2003, 44194,44195,44196,44197,44199,2156, 380, 3688, 345, 44201,44203,
490, 44204,44208,317, 10604,8281, 44205,44206,44207,3387, 44210,44212,1108, 371, 371, 365, 345, 44215,44216,317, 44217,7495, 317, 8296, 2222, 2108, 23670,
- 44221,44223,44225,6002, 316, 44226,44222,44224,433, 1943, 44228,44229,44230,553, 490, 317, 5217, 1109, 317, 12642,6228, 317, 317, 317, 2035, 317, 317,
+ 44221,44223,44225,6002, 316, 44226,44222,44224,433, 1943, 44228,44229,44230,553, 490, 317, 5217, 1109, 317, 12642,6228, 317, 317, 317, 2035, 317, 317,
4965, 380, 490, 317, 350, 2086, 44233,44234,44235,490, 2845, 7928, 317, 6614, 7116, 317, 1160, 317, 490, 15017,317, 2845, 490, 1160, 44237,11114,44238,
- 44240,44241,44243,44245,4984, 363, 1358, 317, 44239,13003,317, 332, 44242,316, 339, 396, 317, 44244,339, 365, 9768, 317, 363, 44246,363, 44247,404,
- 355, 44249,34520,339, 317, 317, 317, 4984, 490, 317, 11607,44251,12563,389, 44253,317, 317, 5120, 317, 44252,5836, 1060, 5295, 44255,317, 317, 365,
+ 44240,44241,44243,44245,4984, 363, 1358, 317, 44239,13003,317, 332, 44242,316, 339, 396, 317, 44244,339, 365, 9768, 317, 363, 44246,363, 44247,404,
+ 355, 44249,34520,339, 317, 317, 317, 4984, 490, 317, 11607,44251,12563,389, 44253,317, 317, 5120, 317, 44252,5836, 1060, 5295, 44255,317, 317, 365,
490, 317, 317, 317, 317, 44256,44258,44257,1160, 317, 490, 1481, 7585, 33733,317, 44260,44262,9012, 371, 44261,363, 11844,1109, 44263,44264,44265,44267,
- 44268,1358, 11186,317, 350, 317, 2715, 345, 8526, 14353,44270,7850, 44272,44271,44273,339, 18329,349, 5105, 12316,9450, 44275,44278,365, 362, 7129, 317,
+ 44268,1358, 11186,317, 350, 317, 2715, 345, 8526, 14353,44270,7850, 44272,44271,44273,339, 18329,349, 5105, 12316,9450, 44275,44278,365, 362, 7129, 317,
30114,1358, 44276,44277,44279,7594, 44281,44285,317, 44282,28454,44283,44284,44286,363, 345, 12756,351, 15326,317, 317, 317, 23858,44292,44295,11236,44298,
- 44300,44307,44309,44312,16187,8296, 44313,44319,44325,44332,44334,5624, 371, 6834, 317, 317, 12226,44293,1481, 317, 44294,371, 44296,371, 380, 44297,317,
+ 44300,44307,44309,44312,16187,8296, 44313,44319,44325,44332,44334,5624, 371, 6834, 317, 317, 12226,44293,1481, 317, 44294,371, 44296,371, 380, 44297,317,
317, 44299,317, 7916, 1160, 13196,565, 44301,44302,350, 385, 44304,44305,44303,44306,1160, 40281,317, 317, 44308,2219, 44310,370, 317, 317, 44311,17471,
351, 44314,44316,44318,44315,371, 6600, 1044, 44317,371, 371, 11844,371, 8274, 5832, 44320,44322,44323,350, 362, 350, 44324,31786,317, 44321,317, 12226,
317, 741, 362, 9059, 5105, 317, 450, 370, 317, 317, 1992, 317, 343, 44326,44328,466, 2222, 362, 11249,13103,44330,2178, 44327,596, 363, 317, 44329,
317, 36472,317, 44331,44333,490, 490, 365, 317, 317, 11347,404, 2073, 11347,949, 44336,44341,44344,44351,44369,490, 343, 11607,44363,44374,44376,44380,
44383,44389,44393,490, 44395,44396,367, 9702, 1020, 2177, 44337,1481, 44338,8926, 44339,2035, 23666,44340,350, 44342,44343,2732, 44345,44346,11373,44347,44348,
317, 363, 10041,44349,2035, 44350,44352,44357,44360,44361,44363,44365,44367,44368,44353,527, 317, 44354,44355,18611,363, 44356,350, 44358,44359,317, 18611,
- 317, 363, 9859, 317, 317, 44362,2272, 363, 44364,44366,6318, 6690, 317, 633, 363, 317, 44370,44372,44373,317, 1266, 317, 44371,2077, 317, 317, 317,
- 317, 44375,317, 317, 13385,44377,365, 317, 44378,44379,317, 44381,343, 44382,44384,44386,390, 2035, 44387,44385,490, 44388,490, 44390,44391,343, 350,
+ 317, 363, 9859, 317, 317, 44362,2272, 363, 44364,44366,6318, 6690, 317, 633, 363, 317, 44370,44372,44373,317, 1266, 317, 44371,2077, 317, 317, 317,
+ 317, 44375,317, 317, 13385,44377,365, 317, 44378,44379,317, 44381,343, 44382,44384,44386,390, 2035, 44387,44385,490, 44388,490, 44390,44391,343, 350,
2631, 317, 44392,490, 490, 44394,1430, 5087, 11198,24185,450, 5896, 44397,32757,350, 44398,317, 44012,44399,42966,8083, 419, 350, 351, 44401,317, 44403,
- 44405,44406,44407,317, 44408,44410,44412,44415,44416,44402,4982, 5662, 3751, 578, 5662, 44404,345, 490, 317, 11635,44409,5120, 317, 44411,317, 490, 390,
+ 44405,44406,44407,317, 44408,44410,44412,44415,44416,44402,4982, 5662, 3751, 578, 5662, 44404,345, 490, 317, 11635,44409,5120, 317, 44411,317, 490, 390,
44413,380, 44414,2317, 16679,44417,44419,44422,44423,2462, 365, 39914,317, 490, 44420,343, 490, 44421,18702,370, 5661, 365, 351, 317, 24903,44425,44432,
44433,1481, 3284, 25643,317, 5266, 2078, 490, 44426,6834, 44427,34721,5295, 44428,44429,27266,44430,490, 343, 11388,2081, 317, 2322, 2110, 6851, 317, 44431,
2844, 44435,19466,1347, 8464, 44438,10345,44440,44441,558, 6089, 44436,44437,317, 27266,317, 6227, 44439,10476,4965, 2366, 4984, 4943, 343, 317, 317, 44442,
@@ -9281,157 +9276,157 @@ static const unsigned int ChildLocs[185261] =
44478,320, 44480,44469,607, 20465,44472,44473,44476,44477,44479,607, 44482,345, 44483,427, 381, 356, 44486,44490,382, 605, 365, 396, 332, 44484,44485,
44487,44488,44489,44491,317, 44492,44494,44499,490, 44495,44496,44497,44498,44500,44501,44502,44505,44521,44528,44534,44543,44559,44562,44565,44567,44578,44579,
44587,44616,44634,44679,44697,44703,44747,44759,44778,44779,44785,2134, 44791,44804,44503,44504,390, 44506,44507,44508,2022, 44509,15179,44513,44514,44517,44518,
- 44519,343, 1347, 317, 370, 44510,317, 44511,44512,1345, 1030, 317, 5661, 363, 8392, 44515,44516,2212, 1345, 2022, 6036, 15745,317, 4984, 9425, 466, 2022,
+ 44519,343, 1347, 317, 370, 44510,317, 44511,44512,1345, 1030, 317, 5661, 363, 8392, 44515,44516,2212, 1345, 2022, 6036, 15745,317, 4984, 9425, 466, 2022,
12696,317, 345, 317, 44520,2022, 44522,365, 44526,351, 44527,1999, 1347, 1481, 44523,44524,44525,44529,2568, 490, 44530,44531,44532,44533,44535,370, 44538,
2022, 11511,44539,317, 44536,11341,44537,44540,44541,44542,3284, 11607,44544,390, 44545,44546,5683, 44548,44549,16825,44551,44553,44555,44556,44558,350, 20380,
- 350, 44547,4965, 350, 363, 10185,363, 12151,44550,3999, 317, 466, 317, 4984, 44552,370, 427, 317, 427, 317, 4952, 317, 390, 317, 15646,3999, 385,
- 44554,44557,490, 11249,1453, 317, 317, 317, 363, 390, 351, 317, 363, 317, 44547,350, 44560,44561,44563,11211,44564,317, 317, 30314,6036, 5656, 605,
- 2222, 317, 317, 343, 44566,317, 317, 419, 5623, 43123,44568,44569,11388,365, 44570,44571,7568, 44572,317, 6917, 44573,44574,44576,350, 351, 2021, 2022,
- 317, 363, 6627, 2146, 351, 370, 317, 363, 9473, 38447,16129,44575,490, 350, 11249,317, 350, 553, 13219,317, 12731,44577,2584, 317, 350, 6228, 4984,
+ 350, 44547,4965, 350, 363, 10185,363, 12151,44550,3999, 317, 466, 317, 4984, 44552,370, 427, 317, 427, 317, 4952, 317, 390, 317, 15646,3999, 385,
+ 44554,44557,490, 11249,1453, 317, 317, 317, 363, 390, 351, 317, 363, 317, 44547,350, 44560,44561,44563,11211,44564,317, 317, 30314,6036, 5656, 605,
+ 2222, 317, 317, 343, 44566,317, 317, 419, 5623, 43123,44568,44569,11388,365, 44570,44571,7568, 44572,317, 6917, 44573,44574,44576,350, 351, 2021, 2022,
+ 317, 363, 6627, 2146, 351, 370, 317, 363, 9473, 38447,16129,44575,490, 350, 11249,317, 350, 553, 13219,317, 12731,44577,2584, 317, 350, 6228, 4984,
317, 5661, 317, 44580,317, 44581,44582,44583,490, 12756,381, 44584,44585,44586,44588,44590,16438,44593,44594,2222, 44605,6600, 14222,44612,317, 44613,44615,
1020, 350, 44589,390, 317, 14353,44591,44592,971, 9224, 350, 10149,1519, 44595,317, 44596,5040, 44602,44597,44598,44600,44599,44601,44603,332, 44604,44606,
44607,44609,362, 2222, 44610,37254,427, 44611,1347, 317, 317, 1230, 16093,317, 350, 1347, 31475,44608,381, 317, 7401, 5662, 317, 1160, 350, 1992, 24036,
- 9649, 317, 317, 4943, 317, 781, 1266, 317, 317, 633, 2366, 317, 317, 317, 317, 317, 6089, 370, 390, 44614,7734, 1358, 29210,18840,351, 350, 363,
+ 9649, 317, 317, 4943, 317, 781, 1266, 317, 317, 633, 2366, 317, 317, 317, 317, 317, 6089, 370, 390, 44614,7734, 1358, 29210,18840,351, 350, 363,
317, 317, 317, 380, 44617,44618,3075, 16865,350, 44621,44624,44625,44626,2021, 8658, 5793, 317, 370, 44619,351, 44620,1189, 317, 44622,345, 350, 44623,
- 351, 596, 16022,317, 351, 5309, 317, 33733,2222, 317, 44627,44628,44629,350, 363, 44630,44632,44633,5836, 397, 44631,370, 363, 6412, 12696,20487,363,
+ 351, 596, 16022,317, 351, 5309, 317, 33733,2222, 317, 44627,44628,44629,350, 363, 44630,44632,44633,5836, 397, 44631,370, 363, 6412, 12696,20487,363,
949, 44635,44637,44645,9624, 357, 44647,365, 2134, 2022, 44649,44650,44662,17683,2391, 44663,44669,44674,44676,44678,363, 370, 5163, 44636,317, 5943, 44638,
44639,1992, 343, 317, 44641,44643,380, 44640,317, 605, 44642,5962, 317, 490, 44644,14170,6547, 44646,16093,370, 2391, 8490, 7678, 17033,390, 317, 38415,
356, 317, 2078, 317, 10956,350, 370, 44648,490, 363, 404, 44651,5661, 44652,10946,44660,363, 3075, 44661,370, 22742,317, 356, 4943, 44653,44654,10946,
44655,44656,44657,44658,12154,44659,2391, 317, 14289,2328, 21074,317, 370, 351, 1588, 12946,317, 8977, 28479,390, 365, 317, 490, 1459, 332, 350, 38196,
- 30398,44664,44666,363, 553, 44665,44667,44668,317, 44670,351, 389, 350, 363, 317, 44671,6089, 44672,44673,44675,7695, 32866,44677,7567, 5055, 317, 1347,
- 489, 44680,44684,44685,9298, 10506,44686,317, 4943, 44693,363, 44681,44682,44683,44687,44690,44688,44689,317, 44691,44692,44694,44695,44696,7142, 44698,343,
+ 30398,44664,44666,363, 553, 44665,44667,44668,317, 44670,351, 389, 350, 363, 317, 44671,6089, 44672,44673,44675,7695, 32866,44677,7567, 5055, 317, 1347,
+ 489, 44680,44684,44685,9298, 10506,44686,317, 4943, 44693,363, 44681,44682,44683,44687,44690,44688,44689,317, 44691,44692,44694,44695,44696,7142, 44698,343,
44700,23019,44701,317, 44699,41304,381, 6036, 17988,44702,6917, 350, 44704,44709,44711,44714,44718,44719,5616, 44720,44722,44723,44727,44732,44733,44734,44736,
- 44743,1020, 44745,44746,32298,490, 490, 24661,44705,44706,44707,44708,44710,5926, 317, 317, 317, 24455,5238, 317, 44712,317, 380, 44713,350, 396, 317,
+ 44743,1020, 44745,44746,32298,490, 490, 24661,44705,44706,44707,44708,44710,5926, 317, 317, 317, 24455,5238, 317, 44712,317, 380, 44713,350, 396, 317,
433, 44715,596, 10506,317, 44717,9666, 44716,501, 3869, 351, 44210,12731,16187,362, 24224,44721,44724,345, 21303,2261, 7892, 44725,44726,44728,44729,44730,
- 44731,317, 553, 15618,317, 317, 317, 317, 30200,338, 351, 5353, 466, 44735,5037, 1160, 14474,370, 44737,490, 12616,363, 317, 44740,605, 44738,350,
- 44739,44741,44742,363, 317, 349, 44744,317, 345, 7949, 2178, 370, 44748,44749,44752,343, 44753,350, 44754,44757,2391, 2298, 317, 13638,317, 317, 9981,
+ 44731,317, 553, 15618,317, 317, 317, 317, 30200,338, 351, 5353, 466, 44735,5037, 1160, 14474,370, 44737,490, 12616,363, 317, 44740,605, 44738,350,
+ 44739,44741,44742,363, 317, 349, 44744,317, 345, 7949, 2178, 370, 44748,44749,44752,343, 44753,350, 44754,44757,2391, 2298, 317, 13638,317, 317, 9981,
12744,44750,317, 44751,351, 6036, 466, 3079, 44755,4738, 350, 350, 363, 44756,8178, 317, 362, 511, 44758,6917, 350, 13962,5828, 317, 7214, 501, 44760,
- 44761,44768,44770,380, 350, 350, 44771,44772,44773,37223,2298, 44762,427, 44763,44766,44767,317, 317, 44764,2260, 44765,44769,317, 565, 385, 501, 466,
- 363, 11607,44774,4738, 44776,5662, 350, 17926,3884, 44775,351, 15852,2184, 362, 44777,350, 1992, 2222, 949, 4984, 44780,44782,565, 44784,370, 16620,1020,
- 317, 44781,390, 317, 373, 44783,1300, 317, 633, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 44786,44789,389, 317, 2058,
- 317, 44787,2403, 44788,44790,380, 44792,550, 1914, 5447, 1962, 466, 44794,33877,44796,3999, 355, 44798,4980, 44801,44793,44795,476, 12696,317, 44797,574,
- 7678, 351, 5241, 44799,6188, 44800,363, 21302,44802,44803,351, 373, 2533, 351, 44806,34834,44807,33236,44809,351, 44811,44814,44815,44808,607, 6222, 608,
+ 44761,44768,44770,380, 350, 350, 44771,44772,44773,37223,2298, 44762,427, 44763,44766,44767,317, 317, 44764,2260, 44765,44769,317, 565, 385, 501, 466,
+ 363, 11607,44774,4738, 44776,5662, 350, 17926,3884, 44775,351, 15852,2184, 362, 44777,350, 1992, 2222, 949, 4984, 44780,44782,565, 44784,370, 16620,1020,
+ 317, 44781,390, 317, 373, 44783,1300, 317, 633, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 44786,44789,389, 317, 2058,
+ 317, 44787,2403, 44788,44790,380, 44792,550, 1914, 5447, 1962, 466, 44794,33877,44796,3999, 355, 44798,4980, 44801,44793,44795,476, 12696,317, 44797,574,
+ 7678, 351, 5241, 44799,6188, 44800,363, 21302,44802,44803,351, 373, 2533, 351, 44806,34834,44807,33236,44809,351, 44811,44814,44815,44808,607, 6222, 608,
1108, 44810,44812,44813,11097,1511, 317, 40747,44817,44818,44819,44821,44873,44886,44893,44895,44903,44932,44936,44943,44944,44948,317, 44822,44825,44830,38740,
44832,44834,7168, 44837,44841,44850,317, 44857,44863,44864,1044, 6375, 44869,44870,44823,44824,44826,44827,44828,44829,11366,351, 44831,317, 2533, 44833,10939,
1444, 44835,44836,396, 5205, 44838,44839,1459, 317, 490, 371, 1109, 380, 5120, 25754,44840,3967, 317, 44842,345, 44843,317, 44844,32563,427, 44696,44845,
44846,44847,44848,44849,6967, 44851,44852,317, 317, 317, 490, 317, 44853,2533, 40218,370, 427, 317, 389, 2073, 44854,44855,44856,44858,317, 44859,44861,
- 44862,28408,44860,1044, 1044, 44865,44866,367, 365, 44867,363, 44868,44871,44872,3611, 1347, 44874,380, 1109, 44875,44879,44884,44885,44876,44877,44878,332,
+ 44862,28408,44860,1044, 1044, 44865,44866,367, 365, 44867,363, 44868,44871,44872,3611, 1347, 44874,380, 1109, 44875,44879,44884,44885,44876,44877,44878,332,
44880,44881,27874,44882,44883,317, 11825,351, 44887,44888,44890,317, 44891,5419, 490, 44889,365, 511, 365, 2631, 44892,317, 44894,44896,44897,317, 44898,
- 44899,44900,44901,44902,565, 44904,44911,490, 419, 44913,7254, 44917,4984, 44919,44924,362, 44927,317, 317, 44905,44908,44906,44907,44909,44910,44912,362,
- 317, 317, 44914,44915,8281, 44916,44918,44920,343, 44921,44922,44923,354, 42279,490, 44925,317, 44926,605, 44928,5838, 44929,44930,44931,44933,44934,1880,
+ 44899,44900,44901,44902,565, 44904,44911,490, 419, 44913,7254, 44917,4984, 44919,44924,362, 44927,317, 317, 44905,44908,44906,44907,44909,44910,44912,362,
+ 317, 317, 44914,44915,8281, 44916,44918,44920,343, 44921,44922,44923,354, 42279,490, 44925,317, 44926,605, 44928,5838, 44929,44930,44931,44933,44934,1880,
44935,2073, 490, 590, 2035, 317, 317, 44937,44940,317, 44942,44938,317, 554, 44939,317, 44941,44945,490, 44946,44947,350, 44949,44950,44951,44956,44963,
44974,44985,45003,45007,45010,45012,45013,45014,45018,45075,150, 45176,45177,45181,45235,45259,45288,45291,45294,45296,45299,317, 490, 44952,44953,317, 44954,
44955,44957,44958,44961,350, 44962,1108, 365, 13269,6917, 44959,317, 44960,9303, 382, 390, 23516,44964,44965,44966,44969,44970,28250,30300,343, 32589,44971,
317, 2066, 6050, 44967,44968,2117, 5962, 380, 476, 44972,44973,428, 7916, 44975,362, 44978,317, 44983,44984,3987, 317, 44976,16717,343, 317, 317, 44977,
- 44979,44982,44980,44981,317, 428, 7072, 404, 44986,14470,44987,44988,350, 44989,29864,44990,44991,1998, 44994,44998,45001,317, 45002,22460,2381, 350, 345,
- 13638,31227,2222, 317, 351, 28795,343, 351, 2108, 4952, 362, 370, 317, 412, 9059, 351, 44992,343, 605, 44993,373, 382, 1108, 4984, 343, 44995,362,
- 363, 490, 44996,11280,44997,44999,490, 45000,605, 43626,2222, 317, 317, 317, 13219,466, 8296, 317, 32298,351, 44629,45004,45005,45006,6402, 351, 3078,
+ 44979,44982,44980,44981,317, 428, 7072, 404, 44986,14470,44987,44988,350, 44989,29864,44990,44991,1998, 44994,44998,45001,317, 45002,22460,2381, 350, 345,
+ 13638,31227,2222, 317, 351, 28795,343, 351, 2108, 4952, 362, 370, 317, 412, 9059, 351, 44992,343, 605, 44993,373, 382, 1108, 4984, 343, 44995,362,
+ 363, 490, 44996,11280,44997,44999,490, 45000,605, 43626,2222, 317, 317, 317, 13219,466, 8296, 317, 32298,351, 44629,45004,45005,45006,6402, 351, 3078,
45008,45009,317, 45011,317, 371, 371, 8296, 317, 4965, 45015,22130,45016,45017,5423, 3283, 2078, 590, 45019,45020,45024,45027,11443,45029,45030,45032,45040,
45042,45060,45063,45064,32105,8301, 45070,45073,350, 45074,350, 9224, 2081, 2272, 45021,45022,45023,2260, 9809, 317, 11235,317, 6318, 883, 14341,350, 11786,
- 45025,28512,45026,393, 381, 556, 45028,3529, 14143,351, 45031,1358, 351, 363, 45033,45034,45037,45035,883, 45036,45038,45039,45041,345, 345, 418, 2590,
- 317, 949, 1087, 45043,8023, 45046,2171, 45050,8301, 45054,45056,1194, 8301, 45057,589, 7035, 317, 558, 317, 45044,317, 45045,317, 317, 45047,16093,317,
- 363, 2081, 45048,317, 45049,574, 681, 9088, 8258, 740, 8344, 1155, 1353, 31745,362, 317, 45051,16093,371, 317, 388, 16093,2081, 45052,363, 317, 345,
- 45053,317, 10487,351, 20869,404, 5809, 363, 45055,363, 10149,4943, 317, 45058,45059,45061,351, 9609, 573, 19544,317, 45062,1033, 2584, 1020, 14320,317,
+ 45025,28512,45026,393, 381, 556, 45028,3529, 14143,351, 45031,1358, 351, 363, 45033,45034,45037,45035,883, 45036,45038,45039,45041,345, 345, 418, 2590,
+ 317, 949, 1087, 45043,8023, 45046,2171, 45050,8301, 45054,45056,1194, 8301, 45057,589, 7035, 317, 558, 317, 45044,317, 45045,317, 317, 45047,16093,317,
+ 363, 2081, 45048,317, 45049,574, 681, 9088, 8258, 740, 8344, 1155, 1353, 31745,362, 317, 45051,16093,371, 317, 388, 16093,2081, 45052,363, 317, 345,
+ 45053,317, 10487,351, 20869,404, 5809, 363, 45055,363, 10149,4943, 317, 45058,45059,45061,351, 9609, 573, 19544,317, 45062,1033, 2584, 1020, 14320,317,
10255,45065,45066,317, 5054, 45068,363, 8117, 45067,45069,949, 363, 45071,545, 45072,351, 343, 363, 317, 317, 317, 317, 37029,949, 371, 45076,45084,
- 45085,30214,350, 45086,45090,45091,2022, 2022, 2110, 2022, 45077,45078,12141,1160, 45082,5105, 45079,317, 740, 418, 45080,317, 13269,45081,1160, 5105, 9878,
+ 45085,30214,350, 45086,45090,45091,2022, 2022, 2110, 2022, 45077,45078,12141,1160, 45082,5105, 45079,317, 740, 418, 45080,317, 13269,45081,1160, 5105, 9878,
38267,45083,45087,45088,3079, 1160, 5105, 8083, 317, 317, 317, 317, 45089,380, 343, 404, 45092,45094,45102,45115,45121,317, 45145,45146,45151,10149,45157,
45161,45163,45165,45171,5037, 404, 45174,45093,362, 317, 317, 5255, 5634, 6138, 8100, 2328, 45095,6036, 45100,317, 343, 32011,10699,45096,45097,45098,45099,
- 45101,9779, 317, 22469,20909,45103,45104,1992, 45110,2571, 45112,45114,317, 4949, 6355, 5105, 45105,381, 45106,9695, 11905,5662, 2021, 45107,45108,45109,5055,
+ 45101,9779, 317, 22469,20909,45103,45104,1992, 45110,2571, 45112,45114,317, 4949, 6355, 5105, 45105,381, 45106,9695, 11905,5662, 2021, 45107,45108,45109,5055,
2188, 317, 44550,45111,317, 9938, 382, 317, 45113,384, 381, 45116,7214, 45118,5748, 45117,45119,45120,42654,633, 633, 15346,7942, 45122,23391,45124,45126,
45127,45128,45130,1588, 12598,45132,45133,45143,45144,6089, 45123,11266,317, 45125,427, 479, 45129,317, 45131,317, 381, 370, 33256,317, 317, 45134,12815,
- 2024, 45135,5017, 15983,45137,45138,3075, 317, 45139,5037, 45142,317, 7590, 9914, 448, 45136,2117, 363, 428, 45140,45141,363, 370, 2063, 2210, 363, 370,
+ 2024, 45135,5017, 15983,45137,45138,3075, 317, 45139,5037, 45142,317, 7590, 9914, 448, 45136,2117, 363, 428, 45140,45141,363, 370, 2063, 2210, 363, 370,
45147,45148,4984, 343, 345, 317, 45150,356, 45149,317, 605, 45152,363, 45156,45153,317, 45154,45155,45158,45159,45160,15738,12756,551, 11236,317, 10172,
- 351, 16093,362, 317, 381, 317, 32982,371, 4965, 15853,363, 404, 45162,45164,8083, 45166,45167,4738, 5838, 45168,10149,45169,45170,6817, 317, 390, 317,
+ 351, 16093,362, 317, 381, 317, 32982,371, 4965, 15853,363, 404, 45162,45164,8083, 45166,45167,4738, 5838, 45168,10149,45169,45170,6817, 317, 390, 317,
1943, 1060, 439, 6036, 605, 42105,317, 6917, 363, 3361, 45172,4943, 350, 45173,2134, 1588, 37194,317, 7797, 12731,45175,343, 5962, 345, 6409, 14616,45178,
350, 5159, 5793, 25453,45179,317, 316, 45180,16651,10223,317, 351, 317, 45182,45185,45186,45195,45196,45199,15732,350, 15513,45219,8178, 45222,45224,45232,
7729, 19617,22466,45233,45183,45184,1345, 1109, 317, 5898, 343, 317, 6420, 45187,5644, 12525,13100,7866, 45188,45191,36523,350, 3529, 45189,45190,45192,45193,
45194,363, 3717, 26250,7776, 45197,317, 33429,2420, 15108,45198,949, 1044, 45200,45201,45205,23842,45208,45214,362, 39187,45216,45217,8852, 45218,45202,45203,
45204,370, 11114,45206,317, 317, 45207,345, 45209,45210,45211,45212,45213,439, 45215,3999, 370, 543, 5037, 338, 45220,339, 45221,45223,45225,16433,45229,
45230,45226,9059, 45227,343, 362, 350, 317, 45228,9059, 5662, 45231,10476,317, 363, 11158,317, 15983,350, 363, 317, 45234,332, 317, 7638, 317, 45236,
- 19507,45238,45240,45243,7490, 11249,45245,350, 4965, 332, 45246,45255,45258,1481, 317, 2171, 45237,317, 45239,317, 45241,7698, 6780, 45242,1588, 29531,1881,
+ 19507,45238,45240,45243,7490, 11249,45245,350, 4965, 332, 45246,45255,45258,1481, 317, 2171, 45237,317, 45239,317, 45241,7698, 6780, 45242,1588, 29531,1881,
3284, 45244,317, 2219, 5883, 381, 949, 45247,45248,362, 45250,490, 11249,45253,350, 345, 44345,317, 373, 371, 317, 343, 2593, 345, 317, 317, 45249,
317, 317, 371, 317, 45251,45252,317, 1160, 45254,45256,6917, 350, 317, 45257,317, 5619, 590, 45260,45263,45267,44770,45270,16626,350, 45271,45272,45284,
317, 6900, 45261,8403, 28934,45262,381, 45264,45265,3999, 317, 5105, 45266,317, 351, 362, 317, 14062,8301, 7428, 45268,45269,2110, 2631, 1060, 32867,15457,
- 363, 2272, 37029,45273,45275,45278,45279,350, 317, 45281,4980, 45282,45274,6420, 8486, 5897, 317, 362, 404, 45276,45277,1347, 2219, 20055,45280,27003,7368,
+ 363, 2272, 37029,45273,45275,45278,45279,350, 317, 45281,4980, 45282,45274,6420, 8486, 5897, 317, 362, 404, 45276,45277,1347, 2219, 20055,45280,27003,7368,
6228, 317, 317, 27039,12154,45283,317, 45285,45286,45287,2402, 363, 15221,45289,45290,4965, 45292,45293,317, 1950, 2322, 2581, 45295,45297,45298,2035, 35158,
- 45300,45306,45301,351, 45302,45303,45304,45305,343, 45307,317, 45309,7191, 45310,33155,45314,45317,45320,45322,45311,11113,45313,11113,45312,439, 5896, 362,
+ 45300,45306,45301,351, 45302,45303,45304,45305,343, 45307,317, 45309,7191, 45310,33155,45314,45317,45320,45322,45311,11113,45313,11113,45312,439, 5896, 362,
501, 380, 4952, 45315,396, 45316,4589, 45318,45319,45321,317, 45323,45324,45326,45329,45327,45328,1087, 2051, 45330,45331,317, 45332,45333,45337,45362,45412,
45449,45452,45473,45486,45334,45335,45336,45338,45339,401, 5570, 1033, 45340,45341,12696,45344,490, 45345,45346,45347,45348,45352,45353,10820,45354,45357,45359,
7949, 6596, 18329,590, 462, 317, 45342,45343,317, 350, 390, 11626,34975,24260,2222, 317, 15480,343, 317, 317, 21037,45349,339, 12616,45351,45350,34964,
31580,317, 5896, 4984, 27286,362, 317, 4984, 33962,39082,6917, 45355,351, 45356,317, 351, 317, 350, 45358,350, 363, 462, 45360,462, 5836, 45361,45363,
- 45364,45368,45370,45373,1020, 363, 45380,45392,45399,45401,45403,371, 45407,45408,45409,45411,16979,45365,6546, 45366,45367,490, 45369,351, 2022, 350, 317,
+ 45364,45368,45370,45373,1020, 363, 45380,45392,45399,45401,45403,371, 45407,45408,45409,45411,16979,45365,6546, 45366,45367,490, 45369,351, 2022, 350, 317,
17469,11709,362, 45371,45372,317, 7689, 45374,45375,45376,45377,45378,45379,45381,4980, 351, 11940,45382,45383,5223, 351, 11349,363, 2381, 28588,45384,24038,
32997,45386,45387,5662, 28079,45388,2503, 45389,45385,3079, 11663,317, 6593, 14835,7650, 25352,2553, 2212, 45390,45391,317, 45393,45394,45396,343, 1358, 45398,
- 11198,390, 45395,2551, 45397,317, 9644, 317, 45400,1358, 8177, 45402,45404,39520,350, 45406,332, 45405,971, 7866, 4738, 1912, 1358, 45410,350, 362, 5626,
+ 11198,390, 45395,2551, 45397,317, 9644, 317, 45400,1358, 8177, 45402,45404,39520,350, 45406,332, 45405,971, 7866, 4738, 1912, 1358, 45410,350, 362, 5626,
348, 317, 45413,45415,350, 45419,45425,45443,45444,45445,2845, 317, 317, 45414,1998, 317, 317, 317, 45416,350, 350, 45417,45418,45420,10316,45422,45424,
- 24035,317, 13553,45421,317, 45423,4925, 371, 381, 45426,45428,2108, 45440,22130,45442,20869,45427,10021,1962, 317, 32606,450, 45429,45431,32760,45437,362,
+ 24035,317, 13553,45421,317, 45423,4925, 371, 381, 45426,45428,2108, 45440,22130,45442,20869,45427,10021,1962, 317, 32606,450, 45429,45431,32760,45437,362,
350, 20684,45439,45430,45432,45436,7949, 45433,45434,45435,28588,20672,45438,317, 20672,45441,27614,317, 365, 9938, 2134, 11040,2108, 45446,45448,45447,45450,
45451,45453,45458,45460,45461,35530,2334, 343, 1060, 45463,45464,45465,2134, 45469,45472,2004, 363, 45454,45456,45455,45457,371, 45459,371, 20123,350, 45462,
317, 4477, 317, 15326,371, 317, 8639, 45466,371, 45468,45467,317, 11347,5163, 350, 8296, 14353,45470,45471,45474,371, 381, 45477,45478,45479,45480,45481,
45483,45484,45485,350, 317, 317, 351, 45475,45476,465, 566, 2568, 350, 4965, 317, 362, 9521, 501, 45482,317, 18460,15047,317, 317, 5392, 1345, 45488,
317, 45489,45492,45493,45494,45495,2889, 45497,45500,45490,45491,317, 381, 1108, 26872,20465,381, 1100, 45496,45498,45499,45501,339, 45516,45530,45557,45558,
- 1044, 45584,367, 45595,12062,45502,45503,45506,396, 3338, 343, 380, 45507,45510,45512,45515,24119,345, 317, 317, 5624, 343, 45504,397, 45505,37816,317,
+ 1044, 45584,367, 45595,12062,45502,45503,45506,396, 3338, 343, 380, 45507,45510,45512,45515,24119,345, 317, 317, 5624, 343, 45504,397, 45505,37816,317,
4591, 12062,7865, 45508,1194, 45509,8325, 5223, 45511,317, 317, 45513,317, 45514,317, 351, 1383, 8488, 373, 45517,471, 2298, 45518,6704, 45521,45523,45524,
45525,45526,11147,465, 45527,45528,380, 5809, 40032,14905,343, 45519,45520,439, 466, 317, 38267,317, 45522,380, 15745,24815,317, 380, 2222, 23032,25111,
539, 2390, 45529,8177, 45531,45539,45543,45544,45549,317, 2381, 45550,45553,45554,596, 2021, 27199,45532,45533,45536,362, 45538,1160, 28972,45534,370, 45535,
2571, 317, 45537,2134, 350, 45540,45542,2134, 45541,1325, 19617,343, 45545,45546,6996, 317, 633, 14483,45547,5661, 14062,363, 45548,12348,2063, 317, 11442,
2680, 3124, 317, 317, 2134, 2577, 45551,45552,466, 343, 317, 9567, 1347, 418, 2022, 2134, 317, 45555,12429,45556,466, 343, 45559,45561,2134, 45564,45566,
- 343, 45567,1060, 45569,45571,45572,45573,45575,45576,7941, 317, 6021, 380, 45560,317, 10796,4965, 24638,24899,45562,1998, 22704,9124, 3999, 45563,317, 2134,
+ 343, 45567,1060, 45569,45571,45572,45573,45575,45576,7941, 317, 6021, 380, 45560,317, 10796,4965, 24638,24899,45562,1998, 22704,9124, 3999, 45563,317, 2134,
2507, 2298, 380, 45565,1135, 2298, 343, 2134, 317, 13433,1347, 45568,404, 27765,362, 317, 345, 14905,11347,490, 45570,317, 19324,15124,8274, 317, 45574,
3646, 396, 1358, 16310,45577,45578,45579,317, 9425, 5635, 404, 439, 45580,466, 404, 45581,317, 45582,45583,45585,45589,45591,2381, 45592,381, 45593,45586,
45587,45588,543, 16137,317, 2134, 45590,2551, 363, 363, 10081,10081,7214, 317, 45594,317, 501, 363, 2024, 363, 1108, 2035, 11280,45596,45598,45616,45632,
45643,45663,45667,45674,45694,45698,45700,45707,45747,45771,45827,45838,45856,45915,45964,45993,46024,46036,17323,46044,46048,45597,317, 45599,343, 45603,45607,
45608,45610,45611,317, 31849,45612,490, 371, 317, 365, 490, 45600,45602,45601,649, 1011, 45604,317, 45336,45606,45605,20237,317, 317, 45609,384, 45613,
- 45614,11347,3284, 45615,45617,45618,45619,45626,45627,45628,2163, 45629,45630,45620,45623,16023,1347, 45624,350, 45625,45621,45622,6138, 371, 343, 3284, 317,
+ 45614,11347,3284, 45615,45617,45618,45619,45626,45627,45628,2163, 45629,45630,45620,45623,16023,1347, 45624,350, 45625,45621,45622,6138, 371, 343, 3284, 317,
317, 5223, 565, 19324,2004, 317, 20159,45631,351, 6834, 45633,45637,45638,16660,45639,317, 23594,971, 590, 45634,317, 370, 490, 45636,490, 36610,45635,
- 551, 490, 11753,390, 45640,45641,45642,45644,45645,13653,45646,7871, 45647,362, 45650,45656,45658,45659,45661,2298, 380, 2022, 2087, 317, 37649,39082,511,
- 2134, 45648,45649,2108, 350, 4965, 466, 9938, 350, 45651,45653,511, 553, 45652,317, 317, 45654,10561,1135, 45655,5896, 6598, 362, 2310, 317, 343, 2391,
- 45657,15066,350, 350, 350, 317, 10626,45660,351, 350, 350, 343, 45662,11249,317, 15986,45664,317, 350, 362, 45665,404, 45666,343, 350, 362, 551,
+ 551, 490, 11753,390, 45640,45641,45642,45644,45645,13653,45646,7871, 45647,362, 45650,45656,45658,45659,45661,2298, 380, 2022, 2087, 317, 37649,39082,511,
+ 2134, 45648,45649,2108, 350, 4965, 466, 9938, 350, 45651,45653,511, 553, 45652,317, 317, 45654,10561,1135, 45655,5896, 6598, 362, 2310, 317, 343, 2391,
+ 45657,15066,350, 350, 350, 317, 10626,45660,351, 350, 350, 343, 45662,11249,317, 15986,45664,317, 350, 362, 45665,404, 45666,343, 350, 362, 551,
45668,33733,317, 350, 317, 45673,332, 45669,317, 2533, 45670,45671,45672,45675,45677,45678,45681,45682,317, 45690,385, 38154,45692,15330,590, 490, 39550,
- 490, 45676,45679,45680,490, 3967, 5896, 9450, 45683,317, 45684,45685,8490, 3529, 363, 11196,350, 45686,45687,45688,45689,45691,343, 317, 45693,2078, 343,
- 317, 45695,6388, 45696,40898,45697,15087,4965, 362, 12062,45699,317, 45701,45703,2073, 1109, 332, 45704,647, 45706,6318, 8937, 370, 45702,990, 390, 1481,
- 11346,490, 332, 3987, 332, 45705,317, 45708,45710,14616,45712,45713,45716,45717,45720,45723,45727,45730,45731,27623,45743,45744,45745,33694,45746,3284, 490,
- 317, 13638,566, 12668,45709,1109, 1962, 317, 317, 11347,490, 1943, 45711,317, 23524,317, 317, 363, 466, 363, 45714,317, 317, 9581, 45715,351, 883,
+ 490, 45676,45679,45680,490, 3967, 5896, 9450, 45683,317, 45684,45685,8490, 3529, 363, 11196,350, 45686,45687,45688,45689,45691,343, 317, 45693,2078, 343,
+ 317, 45695,6388, 45696,40898,45697,15087,4965, 362, 12062,45699,317, 45701,45703,2073, 1109, 332, 45704,647, 45706,6318, 8937, 370, 45702,990, 390, 1481,
+ 11346,490, 332, 3987, 332, 45705,317, 45708,45710,14616,45712,45713,45716,45717,45720,45723,45727,45730,45731,27623,45743,45744,45745,33694,45746,3284, 490,
+ 317, 13638,566, 12668,45709,1109, 1962, 317, 317, 11347,490, 1943, 45711,317, 23524,317, 317, 363, 466, 363, 45714,317, 317, 9581, 45715,351, 883,
317, 45718,2178, 4925, 348, 45719,317, 489, 43878,45721,5662, 8296, 45722,45724,33733,466, 45725,345, 11373,15030,363, 2405, 45726,363, 38240,45728,45729,
- 45732,317, 45734,396, 370, 536, 2035, 45738,45739,381, 45741,37528,45742,371, 45733,45735,45736,45737,317, 45740,5838, 1044, 2521, 355, 351, 16187,317,
- 317, 7000, 490, 45748,36210,45752,45753,2086, 45754,45757,45760,45761,45762,45769,490, 332, 317, 317, 45749,45751,317, 371, 332, 45750,2322, 317, 317,
+ 45732,317, 45734,396, 370, 536, 2035, 45738,45739,381, 45741,37528,45742,371, 45733,45735,45736,45737,317, 45740,5838, 1044, 2521, 355, 351, 16187,317,
+ 317, 7000, 490, 45748,36210,45752,45753,2086, 45754,45757,45760,45761,45762,45769,490, 332, 317, 317, 45749,45751,317, 371, 332, 45750,2322, 317, 317,
345, 345, 14820,317, 348, 7062, 45755,6318, 45756,45758,45759,332, 13638,11346,345, 349, 45763,45767,45764,45765,45766,45768,490, 332, 45770,350, 45772,
12352,45775,45777,45782,45784,45786,45789,401, 45801,490, 45802,45803,45807,45808,45816,11346,45823,45824,45773,365, 317, 45774,317, 363, 45776,317, 45778,
45779,45780,2742, 317, 317, 45781,3284, 31801,45783,433, 317, 317, 9350, 433, 45785,45787,317, 45788,317, 5896, 7428, 45790,45791,45795,363, 317, 45797,
- 2078, 1108, 317, 371, 5120, 45792,45793,45794,8178, 45796,5896, 2310, 317, 45798,45799,45800,10058,380, 343, 380, 363, 11388,317, 317, 15107,45804,345,
+ 2078, 1108, 317, 371, 5120, 45792,45793,45794,8178, 45796,5896, 2310, 317, 45798,45799,45800,10058,380, 343, 380, 363, 11388,317, 317, 15107,45804,345,
45805,9549, 35421,490, 5619, 23247,3284, 45806,356, 3529, 2058, 45809,45810,45811,45812,317, 45813,317, 45814,3688, 45815,3632, 45817,45818,317, 365, 41933,
- 45819,317, 317, 45820,45821,45822,380, 45825,317, 45826,317, 390, 44544,20779,45828,45831,45832,45833,1347, 16679,45835,7949, 45829,12696,343, 317, 317,
- 45830,5087, 29132,332, 2631, 362, 343, 317, 317, 466, 317, 1108, 317, 317, 351, 45834,2355, 45836,317, 45837,45839,45841,45843,2222, 45845,9680, 1020,
- 45848,45853,43697,44123,1108, 45840,317, 317, 1108, 317, 2391, 45842,15017,317, 7949, 2391, 45844,317, 45846,8099, 11198,45847,30913,45849,4738, 15581,317,
- 317, 15424,45850,45852,317, 45851,45854,8296, 8100, 45855,317, 2279, 45857,45859,45860,45863,45869,45873,45874,39134,45875,2585, 45878,45880,45891,45893,490,
+ 45819,317, 317, 45820,45821,45822,380, 45825,317, 45826,317, 390, 44544,20779,45828,45831,45832,45833,1347, 16679,45835,7949, 45829,12696,343, 317, 317,
+ 45830,5087, 29132,332, 2631, 362, 343, 317, 317, 466, 317, 1108, 317, 317, 351, 45834,2355, 45836,317, 45837,45839,45841,45843,2222, 45845,9680, 1020,
+ 45848,45853,43697,44123,1108, 45840,317, 317, 1108, 317, 2391, 45842,15017,317, 7949, 2391, 45844,317, 45846,8099, 11198,45847,30913,45849,4738, 15581,317,
+ 317, 15424,45850,45852,317, 45851,45854,8296, 8100, 45855,317, 2279, 45857,45859,45860,45863,45869,45873,45874,39134,45875,2585, 45878,45880,45891,45893,490,
45894,45897,345, 45900,45909,45910,45911,317, 317, 380, 45858,23670,7711, 385, 317, 13392,12309,363, 317, 317, 45861,2381, 14561,45862,1347, 45864,45866,
- 45867,45868,345, 345, 45865,371, 390, 362, 5836, 45870,45871,4925, 5295, 45872,317, 1347, 5840, 371, 339, 543, 317, 2387, 317, 45876,8099, 45877,490,
- 5663, 45879,45881,45884,32952,4982, 45885,16494,362, 317, 45886,45889,317, 590, 45882,2117, 45883,8421, 16024,45887,45888,8178, 45890,390, 45892,490, 490,
+ 45867,45868,345, 345, 45865,371, 390, 362, 5836, 45870,45871,4925, 5295, 45872,317, 1347, 5840, 371, 339, 543, 317, 2387, 317, 45876,8099, 45877,490,
+ 5663, 45879,45881,45884,32952,4982, 45885,16494,362, 317, 45886,45889,317, 590, 45882,2117, 45883,8421, 16024,45887,45888,8178, 45890,390, 45892,490, 490,
490, 380, 2381, 317, 317, 45895,45896,7850, 4962, 6596, 317, 5212, 343, 13235,11709,2022, 45898,427, 317, 45899,471, 371, 45901,363, 45902,45903,45904,
- 45905,45906,45907,45908,2107, 363, 489, 317, 317, 45912,45913,5836, 45914,45916,1601, 45919,45931,45932,45935,45939,45942,45944,45949,45951,45953,45962,8285,
- 45963,371, 16910,490, 45917,45918,343, 5656, 45920,45924,317, 45921,317, 45922,45923,363, 45925,5836, 45929,45926,45928,371, 45927,45930,332, 8099, 351,
- 45933,45934,490, 317, 490, 45936,351, 317, 45937,17471,317, 45938,317, 45940,45941,317, 363, 45943,11844,317, 11198,45945,11146,45946,490, 317, 1481,
+ 45905,45906,45907,45908,2107, 363, 489, 317, 317, 45912,45913,5836, 45914,45916,1601, 45919,45931,45932,45935,45939,45942,45944,45949,45951,45953,45962,8285,
+ 45963,371, 16910,490, 45917,45918,343, 5656, 45920,45924,317, 45921,317, 45922,45923,363, 45925,5836, 45929,45926,45928,371, 45927,45930,332, 8099, 351,
+ 45933,45934,490, 317, 490, 45936,351, 317, 45937,17471,317, 45938,317, 45940,45941,317, 363, 45943,11844,317, 11198,45945,11146,45946,490, 317, 1481,
45947,317, 5836, 45948,9690, 2077, 2317, 45950,5836, 45952,18322,363, 5662, 605, 476, 545, 45954,45955,45957,490, 45958,45960,2110, 45961,3284, 317, 45956,
30214,1347, 2316, 14439,8264, 317, 317, 371, 317, 45959,317, 2845, 17642,4984, 317, 490, 2087, 371, 949, 45965,45967,45968,45971,7785, 45977,883, 45978,
- 45979,45980,45983,45989,45990,45991,36630,45966,317, 45969,1160, 596, 9696, 45970,317, 45972,45973,317, 2131, 365, 2152, 45974,45975,45976,4965, 351, 317,
+ 45979,45980,45983,45989,45990,45991,36630,45966,317, 45969,1160, 596, 9696, 45970,317, 45972,45973,317, 2131, 365, 2152, 45974,45975,45976,4965, 351, 317,
8296, 332, 5836, 596, 317, 490, 11198,45981,363, 45982,13495,45984,343, 45987,362, 363, 45988,12789,10626,45985,6847, 45986,351, 8296, 45992,351, 45994,
- 490, 45996,45997,40281,2381, 45999,46001,46004,46014,46023,2413, 45995,45998,46000,4280, 2163, 32563,343, 384, 2134, 44931,13110,317, 46002,351, 46003,317,
- 15550,466, 317, 317, 46005,46010,46013,317, 46006,46007,46008,46009,46011,46012,46015,46019,46016,46017,46018,317, 46020,46021,46022,46025,46034,46035,332,
- 46026,46028,46033,25423,5656, 317, 46027,317, 317, 46029,46030,46032,371, 13110,2317, 12756,553, 46031,19324,384, 371, 371, 8099, 3284, 1109, 371, 5656,
- 390, 317, 5295, 2108, 46037,46042,12448,46043,16535,2402, 46038,46039,317, 46041,371, 27154,2001, 8296, 36909,46040,371, 10317,317, 3284, 5836, 382, 317,
- 1108, 46045,46047,490, 46046,46049,46051,46054,46056,46058,490, 6817, 46061,2110, 23547,46050,317, 971, 317, 20779,317, 46052,46053,2533, 46055,371, 3284,
+ 490, 45996,45997,40281,2381, 45999,46001,46004,46014,46023,2413, 45995,45998,46000,4280, 2163, 32563,343, 384, 2134, 44931,13110,317, 46002,351, 46003,317,
+ 15550,466, 317, 317, 46005,46010,46013,317, 46006,46007,46008,46009,46011,46012,46015,46019,46016,46017,46018,317, 46020,46021,46022,46025,46034,46035,332,
+ 46026,46028,46033,25423,5656, 317, 46027,317, 317, 46029,46030,46032,371, 13110,2317, 12756,553, 46031,19324,384, 371, 371, 8099, 3284, 1109, 371, 5656,
+ 390, 317, 5295, 2108, 46037,46042,12448,46043,16535,2402, 46038,46039,317, 46041,371, 27154,2001, 8296, 36909,46040,371, 10317,317, 3284, 5836, 382, 317,
+ 1108, 46045,46047,490, 46046,46049,46051,46054,46056,46058,490, 6817, 46061,2110, 23547,46050,317, 971, 317, 20779,317, 46052,46053,2533, 46055,371, 3284,
46057,16910,5836, 380, 971, 11198,2541, 371, 317, 371, 46059,396, 3284, 46060,11198,9549, 390, 8099, 46063,316, 382, 370, 46065,46064,46066,46067,46068,
356, 46070,46071,46074,46154,46205,490, 5626, 46258,388, 46281,46282,46312,46324,46072,46073,46075,46076,46080,2134, 46081,46083,46085,46088,46092,46096,46102,
- 46106,46110,46116,46123,46124,46136,46140,46143,46149,46153,370, 371, 317, 382, 2108, 1108, 45591,46077,380, 20909,46078,46079,5223, 10185,2134, 350, 350,
- 46082,11147,381, 46084,4965, 317, 317, 46086,46087,427, 46089,317, 46091,46090,46093,317, 317, 46094,317, 46095,46097,46098,46100,46101,6901, 46099,5836,
- 371, 8177, 46103,7866, 46104,5040, 350, 46105,7850, 11844,46107,46108,46109,434, 971, 317, 382, 46111,317, 46113,381, 44566,883, 46115,46112,46114,4965,
- 5309, 46117,343, 46118,317, 2108, 317, 384, 317, 46120,46121,46122,46119,317, 46125,317, 11347,46127,2022, 46128,46135,14999,11280,46126,43829,2280, 317,
- 11469,46129,46130,18284,46131,46134,5295, 490, 565, 317, 46132,46133,317, 8333, 7892, 5091, 370, 46137,317, 36289,46138,3361, 317, 8275, 46139,3361, 3361,
- 380, 46141,46142,4965, 7334, 14834,9938, 1358, 317, 317, 2584, 317, 46144,46146,46148,317, 46145,317, 317, 46147,46150,5309, 46151,10506,10317,46152,1108,
- 7850, 2058, 46155,46160,10592,46162,46163,46164,46165,46166,46175,6917, 380, 46177,46180,46181,46182,46186,46194,46197,46204,317, 350, 46156,46158,46157,351,
- 351, 46159,345, 380, 46161,5626, 363, 578, 381, 317, 2203, 380, 46167,46168,16825,46169,46170,46172,12731,31418,3884, 9450, 11939,5896, 419, 12731,350,
+ 46106,46110,46116,46123,46124,46136,46140,46143,46149,46153,370, 371, 317, 382, 2108, 1108, 45591,46077,380, 20909,46078,46079,5223, 10185,2134, 350, 350,
+ 46082,11147,381, 46084,4965, 317, 317, 46086,46087,427, 46089,317, 46091,46090,46093,317, 317, 46094,317, 46095,46097,46098,46100,46101,6901, 46099,5836,
+ 371, 8177, 46103,7866, 46104,5040, 350, 46105,7850, 11844,46107,46108,46109,434, 971, 317, 382, 46111,317, 46113,381, 44566,883, 46115,46112,46114,4965,
+ 5309, 46117,343, 46118,317, 2108, 317, 384, 317, 46120,46121,46122,46119,317, 46125,317, 11347,46127,2022, 46128,46135,14999,11280,46126,43829,2280, 317,
+ 11469,46129,46130,18284,46131,46134,5295, 490, 565, 317, 46132,46133,317, 8333, 7892, 5091, 370, 46137,317, 36289,46138,3361, 317, 8275, 46139,3361, 3361,
+ 380, 46141,46142,4965, 7334, 14834,9938, 1358, 317, 317, 2584, 317, 46144,46146,46148,317, 46145,317, 317, 46147,46150,5309, 46151,10506,10317,46152,1108,
+ 7850, 2058, 46155,46160,10592,46162,46163,46164,46165,46166,46175,6917, 380, 46177,46180,46181,46182,46186,46194,46197,46204,317, 350, 46156,46158,46157,351,
+ 351, 46159,345, 380, 46161,5626, 363, 578, 381, 317, 2203, 380, 46167,46168,16825,46169,46170,46172,12731,31418,3884, 9450, 11939,5896, 419, 12731,350,
46171,362, 14905,351, 6551, 351, 46173,350, 46174,13648,351, 46176,490, 46178,1020, 2134, 373, 317, 46179,1347, 2298, 371, 371, 343, 2184, 1108, 36289,
- 380, 343, 490, 46183,27407,46184,317, 317, 46185,350, 46187,2402, 46189,46192,46188,46190,4738, 46191,351, 4738, 46193,350, 317, 2108, 46195,46196,351,
+ 380, 343, 490, 46183,27407,46184,317, 317, 46185,350, 46187,2402, 46189,46192,46188,46190,4738, 46191,351, 4738, 46193,350, 317, 2108, 46195,46196,351,
46174,5896, 351, 2219, 5626, 46198,46199,46200,46201,46202,46203,4965, 404, 46206,46207,46167,46211,46215,44829,46216,46218,46219,317, 46222,46223,46251,46253,
490, 46256,46208,31418,317, 46209,46210,2134, 46212,317, 46214,317, 14572,343, 13392,317, 46213,13369,8810, 9059, 351, 350, 46217,380, 373, 351, 46220,
46221,1044, 2317, 345, 380, 343, 317, 949, 4965, 46224,46235,362, 370, 46236,46237,363, 351, 317, 362, 46225,363, 46226,317, 46227,6866, 46231,33930,
@@ -9439,242 +9434,242 @@ static const unsigned int ChildLocs[185261] =
46245,490, 46246,439, 363, 363, 355, 439, 46249,317, 317, 419, 351, 46250,345, 46252,350, 2222, 46254,317, 46255,363, 46257,35874,46259,46260,46263,
46264,4984, 345, 46265,46267,46268,46270,363, 46274,317, 46278,46279,46280,6108, 345, 350, 7322, 317, 350, 350, 2568, 350, 4564, 350, 46261,46262,13158,
343, 553, 351, 466, 343, 5223, 1109, 351, 317, 5662, 4976, 46266,345, 371, 10316,45952,317, 46269,490, 1078, 2134, 2022, 5943, 28588,2146, 46271,46272,
- 317, 9450, 46273,1453, 6596, 9567, 317, 46275,46276,46277,317, 15325,317, 2507, 1481, 332, 437, 3236, 2272, 42575,2222, 390, 490, 1358, 317, 332, 490,
- 401, 46283,46287,46288,46289,46290,343, 46293,46294,46296,46301,46306,46309,381, 46310,6340, 46284,46286,46285,5896, 9567, 317, 371, 11347,1060, 3284, 5866,
+ 317, 9450, 46273,1453, 6596, 9567, 317, 46275,46276,46277,317, 15325,317, 2507, 1481, 332, 437, 3236, 2272, 42575,2222, 390, 490, 1358, 317, 332, 490,
+ 401, 46283,46287,46288,46289,46290,343, 46293,46294,46296,46301,46306,46309,381, 46310,6340, 46284,46286,46285,5896, 9567, 317, 371, 11347,1060, 3284, 5866,
12732,317, 2134, 317, 390, 46291,317, 12930,46292,2134, 8296, 46295,317, 46297,29646,31580,3079, 10073,24899,46298,24224,46299,46300,2108, 1020, 31580,27702,
46302,5793, 46303,3284, 371, 1481, 16589,317, 46304,46305,13683,46307,46308,2058, 351, 317, 370, 11280,4974, 317, 338, 363, 46311,350, 2236, 46313,46314,
46315,46320,501, 27053,7850, 490, 9981, 46316,46317,46318,317, 46319,317, 46321,317, 46322,371, 5836, 5105, 19324,18333,343, 46323,2035, 8828, 317, 46325,
46326,46330,46327,46328,11346,11346,46329,13638,11346,46331,46333,23247,46335,46332,404, 46334,28127,8296, 4215, 351, 46337,46339,46345,9172, 46346,46348,24185,
46349,46350,46351,46338,46340,15772,46343,46341,46342,46344,46347,4295, 476, 3793, 606, 46353,490, 46359,46360,46362,1044, 46363,590, 46364,46354,380, 46355,
46356,46357,46358,46361,6793, 7892, 46365,46366,46367,6222, 608, 608, 46368,46371,46382,46396,46404,46413,46416,46418,46429,46431,46433,46445,46467,46478,46512,
- 46517,46528,46566,46587,46596,46598,46603,317, 2210, 46369,2066, 46370,6555, 332, 317, 2211, 362, 46372,46374,46376,46379,46380,2391, 2108, 317, 3284, 1109,
- 317, 46373,317, 390, 371, 490, 44010,1481, 883, 46375,4925, 317, 3284, 317, 371, 46377,317, 317, 4591, 11198,46378,1108, 317, 371, 5120, 317, 7523,
+ 46517,46528,46566,46587,46596,46598,46603,317, 2210, 46369,2066, 46370,6555, 332, 317, 2211, 362, 46372,46374,46376,46379,46380,2391, 2108, 317, 3284, 1109,
+ 317, 46373,317, 390, 371, 490, 44010,1481, 883, 46375,4925, 317, 3284, 317, 371, 46377,317, 317, 4591, 11198,46378,1108, 317, 371, 5120, 317, 7523,
7850, 11280,5120, 6036, 317, 490, 46381,4984, 46383,46384,46390,46394,371, 46395,46385,46386,46388,6917, 490, 5611, 317, 317, 45774,317, 317, 317, 46387,
490, 39569,12287,33963,46389,4318, 46391,317, 2108, 46392,46393,11347,13638,490, 11347,46397,46398,46399,46400,46402,317, 46403,2631, 883, 33700,370, 46401,
- 384, 343, 490, 14093,2298, 46405,46406,317, 350, 46409,46410,2577, 46411,16579,46412,2222, 46407,46408,4982, 343, 317, 362, 5223, 501, 11954,317, 365,
+ 384, 343, 490, 14093,2298, 46405,46406,317, 350, 46409,46410,2577, 46411,16579,46412,2222, 46407,46408,4982, 343, 317, 362, 5223, 501, 11954,317, 365,
10626,501, 46414,46415,8957, 350, 490, 9012, 380, 350, 46417,46419,46420,46422,46423,46427,13269,1358, 9667, 46421,345, 3967, 46424,46426,317, 317, 46425,
- 5663, 370, 46428,343, 343, 317, 317, 4962, 317, 5223, 371, 362, 2509, 590, 46430,46432,317, 317, 490, 4925, 16672,46434,46436,46437,46438,46441,317,
+ 5663, 370, 46428,343, 343, 317, 317, 4962, 317, 5223, 371, 362, 2509, 590, 46430,46432,317, 317, 490, 4925, 16672,46434,46436,46437,46438,46441,317,
46442,44388,317, 46435,7311, 23199,4060, 317, 46439,46440,1481, 5836, 1481, 46443,1913, 317, 46444,46446,46448,7356, 46450,46452,46453,590, 46457,46459,16889,
- 46460,1109, 14263,46463,23247,350, 1108, 490, 46447,317, 46449,545, 2004, 46451,317, 8281, 490, 371, 46454,46455,11198,4925, 46456,46458,1347, 466, 5662,
+ 46460,1109, 14263,46463,23247,350, 1108, 490, 46447,317, 46449,545, 2004, 46451,317, 8281, 490, 371, 46454,46455,11198,4925, 46456,46458,1347, 466, 5662,
317, 317, 317, 46461,317, 46462,741, 46464,46465,46466,46468,46473,317, 350, 46475,7192, 46476,1383, 23309,332, 635, 29531,46469,363, 46471,365, 46470,
- 6228, 46472,317, 46474,490, 490, 343, 11051,490, 46477,46479,317, 46480,46483,46484,46485,46490,5205, 511, 317, 46492,46509,565, 46510,46481,46482,4738,
- 490, 2391, 1108, 34078,2210, 15451,363, 590, 362, 46486,45339,46487,1992, 317, 46488,39719,46489,317, 380, 46491,390, 27913,2236, 362, 46493,46494,4984,
- 46498,27012,46505,46507,46495,46496,46497,5038, 46499,46500,46501,46502,46503,46504,46506,46508,351, 317, 7949, 46511,343, 350, 362, 46513,8172, 46515,2537,
+ 6228, 46472,317, 46474,490, 490, 343, 11051,490, 46477,46479,317, 46480,46483,46484,46485,46490,5205, 511, 317, 46492,46509,565, 46510,46481,46482,4738,
+ 490, 2391, 1108, 34078,2210, 15451,363, 590, 362, 46486,45339,46487,1992, 317, 46488,39719,46489,317, 380, 46491,390, 27913,2236, 362, 46493,46494,4984,
+ 46498,27012,46505,46507,46495,46496,46497,5038, 46499,46500,46501,46502,46503,46504,46506,46508,351, 317, 7949, 46511,343, 350, 362, 46513,8172, 46515,2537,
46514,46516,7871, 46518,46520,46522,46525,490, 350, 46526,8061, 46519,5294, 317, 317, 46521,1108, 362, 20672,46523,46524,339, 2081, 46527,46529,362, 46531,
- 46532,46535,13023,46536,46537,46538,14250,46540,46541,46545,46547,46548,46549,46556,46562,18084,46564,381, 46530,381, 1100, 46533,317, 2381, 2203, 46534,317,
+ 46532,46535,13023,46536,46537,46538,14250,46540,46541,46545,46547,46548,46549,46556,46562,18084,46564,381, 46530,381, 1100, 46533,317, 2381, 2203, 46534,317,
8099, 8178, 363, 781, 363, 490, 351, 350, 6834, 317, 590, 9667, 317, 46539,5624, 8296, 371, 536, 317, 490, 6834, 46542,46543,5836, 46544,2537, 46546,
- 380, 5836, 427, 1358, 2369, 12316,10506,317, 1020, 317, 46550,46552,317, 46553,5652, 365, 6207, 1481, 46554,46551,46555,362, 12514,46557,46560,5223, 317,
- 1108, 6923, 46558,46559,46561,46563,11347,363, 12514,46565,46567,46568,46569,46570,46574,46575,46578,46579,46582,46584,46586,317, 46046,46571,46572,317, 362,
+ 380, 5836, 427, 1358, 2369, 12316,10506,317, 1020, 317, 46550,46552,317, 46553,5652, 365, 6207, 1481, 46554,46551,46555,362, 12514,46557,46560,5223, 317,
+ 1108, 6923, 46558,46559,46561,46563,11347,363, 12514,46565,46567,46568,46569,46570,46574,46575,46578,46579,46582,46584,46586,317, 46046,46571,46572,317, 362,
46573,371, 371, 5836, 317, 46576,317, 46577,380, 46580,46581,46583,490, 30310,46585,10317,11347,46588,46589,46591,343, 5105, 590, 46592,8599, 46593,46594,
317, 46595,5619, 3751, 46590,351, 6547, 10476,317, 351, 350, 350, 317, 351, 350, 5840, 46597,490, 6834, 12854,490, 43935,46599,46600,2509, 46601,46602,
- 11986,46604,46605,46606,46609,371, 317, 14615,46607,46608,390, 45844,390, 46610,46612,46611,351, 16291,46614,46619,46620,36468,5624, 6343, 46615,6332, 3361,
+ 11986,46604,46605,46606,46609,371, 317, 14615,46607,46608,390, 45844,390, 46610,46612,46611,351, 16291,46614,46619,46620,36468,5624, 6343, 46615,6332, 3361,
46616,46617,46618,46621,6826, 46622,46624,46642,46643,46649,363, 371, 46625,46626,46627,343, 46635,46636,490, 46638,46641,12980,46628,46629,46630,46631,46632,
- 46633,46634,317, 5379, 46637,46639,46640,317, 3284, 8296, 317, 46644,42576,46647,317, 46648,9702, 317, 46645,371, 13638,46646,46328,2295, 46651,7911, 351,
- 350, 363, 1044, 46653,350, 46654,46659,46662,46665,46667,46668,46673,46221,46674,46678,370, 46652,317, 46655,46657,39134,12459,317, 46656,317, 46658,390,
- 46660,46661,46663,46664,356, 2067, 7514, 46666,382, 332, 317, 2573, 351, 2829, 317, 5431, 46669,343, 46670,46671,46672,351, 12946,1992, 46675,590, 317,
+ 46633,46634,317, 5379, 46637,46639,46640,317, 3284, 8296, 317, 46644,42576,46647,317, 46648,9702, 317, 46645,371, 13638,46646,46328,2295, 46651,7911, 351,
+ 350, 363, 1044, 46653,350, 46654,46659,46662,46665,46667,46668,46673,46221,46674,46678,370, 46652,317, 46655,46657,39134,12459,317, 46656,317, 46658,390,
+ 46660,46661,46663,46664,356, 2067, 7514, 46666,382, 332, 317, 2573, 351, 2829, 317, 5431, 46669,343, 46670,46671,46672,351, 12946,1992, 46675,590, 317,
46676,46677,351, 351, 380, 5043, 19098,46680,25825,46681,46682,46683,46732,739, 46733,46740,46743,46745,46749,46756,157, 47536,47551,47554,159, 48098,48112,
48119,160, 48653,48667,48675,48717,48718,162, 49214,49220,49231,163, 49527,49537,49539,49542,49616,46684,46698,46709,46717,46724,46726,46685,46495,351, 46686,
- 393, 20847,46687,46688,46692,46696,46689,46690,46691,46693,46694,343, 46695,46697,590, 1962, 46699,46700,46701,46702,46703,46705,46706,20289,46707,2368, 373,
- 46704,381, 5590, 46708,23726,46710,46715,2060, 2143, 46711,46712,46713,46714,46716,1358, 46718,373, 46722,46719,46720,46721,46723,3361, 7514, 46725,1479, 1588,
+ 393, 20847,46687,46688,46692,46696,46689,46690,46691,46693,46694,343, 46695,46697,590, 1962, 46699,46700,46701,46702,46703,46705,46706,20289,46707,2368, 373,
+ 46704,381, 5590, 46708,23726,46710,46715,2060, 2143, 46711,46712,46713,46714,46716,1358, 46718,373, 46722,46719,46720,46721,46723,3361, 7514, 46725,1479, 1588,
433, 46727,46728,363, 46729,46730,46731,46734,46736,46735,46737,46738,46739,10985,46741,46742,46744,46746,46747,46748,46750,46751,46752,46753,46754,46755,46757,
46760,46758,46759,46761,46762,46764,46807,46851,46878,46886,46920,46947,46955,46965,46970,46988,47001,158, 47200,47205,47237,47240,47287,47334,47383,47455,47481,
47504,47508,47519,345, 371, 46763,1358, 9436, 11147,46765,46770,5241, 46771,46776,44910,46778,46779,46794,317, 7892, 46801,46802,2036, 5149, 2073, 317, 46766,
- 46769,434, 317, 46767,343, 317, 46768,11986,2110, 15754,1358, 343, 17768,46772,317, 46774,46775,356, 466, 46773,6275, 317, 317, 1325, 466, 427, 343,
- 535, 46777,351, 343, 343, 5217, 1347, 2280, 43588,343, 317, 317, 46780,46783,46784,46785,46790,46791,46793,317, 46781,46782,343, 343, 5037, 46786,343,
- 9124, 46789,317, 317, 46787,46788,1588, 5201, 1992, 7834, 46792,12631,317, 2107, 46795,46797,46799,2261, 46800,46796,343, 2410, 317, 46798,317, 965, 343,
- 317, 965, 317, 343, 8906, 7399, 363, 490, 396, 46803,46804,46805,46806,46808,46811,46813,46822,46824,46829,490, 46830,46835,46836,46841,46843,46849,317,
+ 46769,434, 317, 46767,343, 317, 46768,11986,2110, 15754,1358, 343, 17768,46772,317, 46774,46775,356, 466, 46773,6275, 317, 317, 1325, 466, 427, 343,
+ 535, 46777,351, 343, 343, 5217, 1347, 2280, 43588,343, 317, 317, 46780,46783,46784,46785,46790,46791,46793,317, 46781,46782,343, 343, 5037, 46786,343,
+ 9124, 46789,317, 317, 46787,46788,1588, 5201, 1992, 7834, 46792,12631,317, 2107, 46795,46797,46799,2261, 46800,46796,343, 2410, 317, 46798,317, 965, 343,
+ 317, 965, 317, 343, 8906, 7399, 363, 490, 396, 46803,46804,46805,46806,46808,46811,46813,46822,46824,46829,490, 46830,46835,46836,46841,46843,46849,317,
317, 5038, 31133,46809,9699, 317, 490, 332, 343, 317, 46810,10758,317, 317, 9624, 317, 46812,317, 3987, 1160, 5052, 490, 10364,343, 46814,46816,46817,
- 20721,362, 15745,46818,46820,381, 393, 514, 46815,2627, 317, 5038, 11362,373, 13235,5212, 2163, 317, 7777, 21067,46819,4773, 11844,46821,317, 46823,317,
- 46825,46826,36457,46827,362, 350, 317, 317, 343, 20391,439, 46828,36368,2261, 371, 46831,22475,46832,574, 46833,46834,6834, 317, 8311, 343, 2610, 381,
+ 20721,362, 15745,46818,46820,381, 393, 514, 46815,2627, 317, 5038, 11362,373, 13235,5212, 2163, 317, 7777, 21067,46819,4773, 11844,46821,317, 46823,317,
+ 46825,46826,36457,46827,362, 350, 317, 317, 343, 20391,439, 46828,36368,2261, 371, 46831,22475,46832,574, 46833,46834,6834, 317, 8311, 343, 2610, 381,
7095, 24185,46837,46839,343, 46838,380, 39072,316, 343, 46840,46842,363, 46844,339, 46845,7085, 9182, 19534,46846,343, 343, 46847,46848,7577, 8011, 46850,
- 370, 8811, 46852,15016,46857,46859,46861,2156, 362, 33957,46866,4980, 46868,46869,10081,46870,3793, 46853,343, 46855,382, 317, 363, 317, 46854,46856,317,
+ 370, 8811, 46852,15016,46857,46859,46861,2156, 362, 33957,46866,4980, 46868,46869,10081,46870,3793, 46853,343, 46855,382, 317, 363, 317, 46854,46856,317,
46858,2156, 590, 46860,490, 380, 317, 16679,2845, 10081,371, 46862,490, 12243,46863,1481, 46864,46865,490, 18611,46867,2222, 317, 343, 320, 46871,46872,
- 46873,46875,46876,362, 46877,13338,551, 370, 35725,46874,6551, 3366, 434, 384, 1597, 2553, 350, 363, 317, 46879,46880,46881,46882,46884,46883,46885,5266,
- 317, 46887,46890,46893,46896,348, 46897,46901,46912,46919,343, 24765,31002,332, 490, 7386, 46888,46889,7149, 46891,46892,317, 2610, 2022, 15600,6021, 2510,
- 343, 46894,46895,404, 5608, 1329, 317, 317, 29974,578, 574, 46898,46900,363, 1588, 350, 46899,342, 317, 317, 351, 317, 15596,46902,363, 46905,393,
+ 46873,46875,46876,362, 46877,13338,551, 370, 35725,46874,6551, 3366, 434, 384, 1597, 2553, 350, 363, 317, 46879,46880,46881,46882,46884,46883,46885,5266,
+ 317, 46887,46890,46893,46896,348, 46897,46901,46912,46919,343, 24765,31002,332, 490, 7386, 46888,46889,7149, 46891,46892,317, 2610, 2022, 15600,6021, 2510,
+ 343, 46894,46895,404, 5608, 1329, 317, 317, 29974,578, 574, 46898,46900,363, 1588, 350, 46899,342, 317, 317, 351, 317, 15596,46902,363, 46905,393,
46910,317, 317, 317, 46903,46904,6318, 381, 343, 317, 46906,343, 1479, 46907,317, 46908,46909,46911,2410, 46913,25384,46918,46914,46915,46917,5241, 46916,
- 5028, 343, 46921,46928,46931,6504, 43841,362, 46932,46933,46940,317, 46945,14669,343, 46922,2073, 46923,46924,46926,46927,332, 46925,345, 332, 490, 317,
- 43841,362, 46929,393, 5896, 6598, 3023, 362, 6601, 46930,363, 1325, 466, 1383, 393, 317, 490, 46934,46938,5616, 46939,317, 46935,46937,46936,490, 1109,
+ 5028, 343, 46921,46928,46931,6504, 43841,362, 46932,46933,46940,317, 46945,14669,343, 46922,2073, 46923,46924,46926,46927,332, 46925,345, 332, 490, 317,
+ 43841,362, 46929,393, 5896, 6598, 3023, 362, 6601, 46930,363, 1325, 466, 1383, 393, 317, 490, 46934,46938,5616, 46939,317, 46935,46937,46936,490, 1109,
46941,46943,2585, 46944,5017, 46942,393, 343, 317, 24067,317, 490, 7942, 343, 363, 489, 317, 15753,46946,1588, 6409, 12943,316, 46948,6036, 46949,46950,
46951,46952,12613,46953,343, 16415,317, 1347, 1358, 362, 317, 365, 317, 5663, 1033, 490, 3967, 343, 356, 46954,46956,26076,46957,17350,490, 1109, 46959,
- 345, 515, 46962,46963,46964,5761, 2108, 363, 343, 46958,605, 6036, 46960,317, 5159, 317, 404, 46961,1347, 2171, 20621,317, 6555, 1588, 317, 44404,317,
+ 345, 515, 46962,46963,46964,5761, 2108, 363, 343, 46958,605, 6036, 46960,317, 5159, 317, 404, 46961,1347, 2171, 20621,317, 6555, 1588, 317, 44404,317,
46966,46967,46969,2631, 9702, 490, 490, 9104, 317, 46968,343, 2381, 382, 317, 1358, 46971,46972,46979,46981,343, 350, 46982,46983,317, 1526, 24185,12416,
16250,24185,4952, 362, 46973,46974,46976,44836,35352,6089, 317, 2110, 13419,490, 362, 46975,649, 6996, 1292, 1894, 317, 46977,2261, 317, 490, 46978,10058,
46980,317, 317, 24185,14227,1459, 490, 396, 490, 5836, 46984,46985,46987,46986,46989,4925, 46993,1109, 46997,46999,47000,949, 2188, 46990,46992,490, 46991,
- 6228, 356, 46994,390, 317, 10345,5828, 46996,46995,317, 490, 1444, 13171,46998,2222, 317, 317, 16358,389, 317, 15600,490, 47002,47012,490, 47023,2188,
- 47028,47033,47034,47037,47048,404, 47061,317, 384, 47003,21264,29086,15183,47004,47006,47009,47011,317, 317, 343, 9538, 317, 317, 343, 332, 595, 490,
- 47005,10758,490, 47007,317, 965, 5891, 390, 47008,18978,47010,47013,19811,9909, 47014,47017,490, 1020, 47018,47021,4980, 404, 545, 490, 2601, 20289,590,
- 371, 47015,317, 390, 317, 8254, 404, 47016,317, 317, 317, 4984, 404, 345, 5037, 317, 393, 317, 17160,317, 47019,14341,317, 47020,1358, 2210, 2211,
+ 6228, 356, 46994,390, 317, 10345,5828, 46996,46995,317, 490, 1444, 13171,46998,2222, 317, 317, 16358,389, 317, 15600,490, 47002,47012,490, 47023,2188,
+ 47028,47033,47034,47037,47048,404, 47061,317, 384, 47003,21264,29086,15183,47004,47006,47009,47011,317, 317, 343, 9538, 317, 317, 343, 332, 595, 490,
+ 47005,10758,490, 47007,317, 965, 5891, 390, 47008,18978,47010,47013,19811,9909, 47014,47017,490, 1020, 47018,47021,4980, 404, 545, 490, 2601, 20289,590,
+ 371, 47015,317, 390, 317, 8254, 404, 47016,317, 317, 317, 4984, 404, 345, 5037, 317, 393, 317, 17160,317, 47019,14341,317, 47020,1358, 2210, 2211,
26250,47022,530, 345, 46856,471, 381, 490, 47024,47026,47027,19979,317, 317, 47025,8937, 476, 317, 5535, 8549, 490, 24799,22139,47029,47031,404, 47030,
- 317, 5862, 363, 371, 317, 317, 40319,47032,345, 47035,1358, 363, 317, 317, 47036,317, 12025,317, 317, 47038,47039,1588, 47042,317, 47044,47045,1109,
+ 317, 5862, 363, 371, 317, 317, 40319,47032,345, 47035,1358, 363, 317, 317, 47036,317, 12025,317, 317, 47038,47039,1588, 47042,317, 47044,47045,1109,
2280, 317, 47040,47041,317, 317, 47043,5058, 343, 11144,317, 2381, 316, 343, 5891, 42014,47046,47047,47049,47051,47052,47054,47033,8392, 362, 47055,47056,
- 47057,47059,404, 466, 382, 47050,1025, 3284, 317, 5223, 350, 317, 47053,28762,3751, 37551,381, 10528,381, 47058,6002, 471, 1347, 345, 47060,363, 2261,
- 1588, 2537, 47062,317, 47063,47065,47072,47118,47120,47123,554, 47164,47167,362, 47170,47174,47176,6601, 47179,47183,47191,1020, 36355,47192,362, 362, 317,
- 317, 13276,490, 490, 47064,47066,47069,12312,47071,2086, 18420,317, 3869, 317, 47067,2609, 47068,7419, 7891, 317, 47070,40953,6420, 317, 1347, 317, 5328,
+ 47057,47059,404, 466, 382, 47050,1025, 3284, 317, 5223, 350, 317, 47053,28762,3751, 37551,381, 10528,381, 47058,6002, 471, 1347, 345, 47060,363, 2261,
+ 1588, 2537, 47062,317, 47063,47065,47072,47118,47120,47123,554, 47164,47167,362, 47170,47174,47176,6601, 47179,47183,47191,1020, 36355,47192,362, 362, 317,
+ 317, 13276,490, 490, 47064,47066,47069,12312,47071,2086, 18420,317, 3869, 317, 47067,2609, 47068,7419, 7891, 317, 47070,40953,6420, 317, 1347, 317, 5328,
382, 6993, 47073,47075,47076,47080,47084,47089,47093,47095,47096,47098,47100,6601, 47103,47108,13816,47116,11244,47117,317, 1588, 350, 317, 2222, 47074,17583,
- 7399, 8219, 317, 6598, 31475,47077,47078,2086, 317, 5896, 7801, 47079,47081,4563, 47082,24570,351, 4564, 47083,47085,47086,47088,317, 47087,317, 2413, 427,
- 1830, 47090,47091,47092,2510, 10877,47094,317, 2152, 25455,2074, 476, 6188, 47097,1525, 6355, 47099,7650, 6188, 4984, 5962, 5335, 317, 47101,5120, 317, 350,
+ 7399, 8219, 317, 6598, 31475,47077,47078,2086, 317, 5896, 7801, 47079,47081,4563, 47082,24570,351, 4564, 47083,47085,47086,47088,317, 47087,317, 2413, 427,
+ 1830, 47090,47091,47092,2510, 10877,47094,317, 2152, 25455,2074, 476, 6188, 47097,1525, 6355, 47099,7650, 6188, 4984, 5962, 5335, 317, 47101,5120, 317, 350,
47102,9081, 3284, 12954,47104,47105,47106,47107,317, 11921,1347, 390, 5037, 317, 363, 5943, 362, 390, 13782,47109,47111,350, 385, 44246,47113,362, 47115,
47110,32950,7064, 47112,47114,426, 7852, 7386, 396, 551, 5401, 7990, 317, 362, 5159, 11533,317, 47119,574, 343, 1230, 317, 5022, 565, 2389, 47121,47122,
47124,47126,47128,47129,47138,6089, 47140,47145,47146,47148,47152,39187,47154,3075, 47155,47156,47159,47160,47163,350, 15749,47125,47127,316, 15892,47130,47133,
47134,47136,47137,47131,47132,439, 350, 490, 47135,7618, 476, 6598, 6599, 578, 363, 16018,47139,551, 47141,47142,47143,47144,381, 11533,317, 317, 47147,
- 2134, 365, 47149,370, 47150,47151,345, 6355, 12494,1108, 47153,317, 5022, 350, 396, 6278, 5836, 8569, 7368, 427, 427, 6195, 545, 12154,47157,3529, 363,
- 47158,9067, 47161,47162,317, 30780,380, 317, 317, 4952, 13414,428, 545, 29522,5238, 4965, 362, 47165,490, 345, 47166,317, 47168,9609, 2024, 349, 317,
- 1347, 47169,4984, 47171,47172,47173,317, 4965, 362, 382, 349, 8506, 490, 47175,8771, 47177,47178,350, 466, 47180,47181,6036, 2024, 466, 5838, 363, 373,
- 8035, 47182,47184,47185,501, 47187,47190,6002, 9860, 332, 1345, 396, 2272, 490, 317, 10758,2060, 47186,317, 362, 6420, 47188,350, 47189,5752, 427, 6334,
+ 2134, 365, 47149,370, 47150,47151,345, 6355, 12494,1108, 47153,317, 5022, 350, 396, 6278, 5836, 8569, 7368, 427, 427, 6195, 545, 12154,47157,3529, 363,
+ 47158,9067, 47161,47162,317, 30780,380, 317, 317, 4952, 13414,428, 545, 29522,5238, 4965, 362, 47165,490, 345, 47166,317, 47168,9609, 2024, 349, 317,
+ 1347, 47169,4984, 47171,47172,47173,317, 4965, 362, 382, 349, 8506, 490, 47175,8771, 47177,47178,350, 466, 47180,47181,6036, 2024, 466, 5838, 363, 373,
+ 8035, 47182,47184,47185,501, 47187,47190,6002, 9860, 332, 1345, 396, 2272, 490, 317, 10758,2060, 47186,317, 362, 6420, 47188,350, 47189,5752, 427, 6334,
2291, 382, 317, 47193,47196,589, 47197,7142, 14409,20265,47194,363, 47195,47198,47199,7567, 382, 47201,47203,345, 317, 2373, 317, 47204,365, 47202,47206,
- 47210,47211,554, 47216,47219,47222,47224,47230,47232,47233,47235,27846,9869, 47207,2060, 317, 47208,2110, 317, 47209,9823, 9070, 523, 382, 351, 317, 1347,
+ 47210,47211,554, 47216,47219,47222,47224,47230,47232,47233,47235,27846,9869, 47207,2060, 317, 47208,2110, 317, 47209,9823, 9070, 523, 382, 351, 317, 1347,
489, 47212,343, 47213,317, 343, 392, 15600,489, 47214,47215,17693,393, 2035, 47217,23987,10447,47218,317, 362, 317, 11844,490, 47220,2060, 47221,24804,
2369, 1481, 1913, 12503,2381, 47223,1347, 47225,47228,317, 47226,317, 47227,47229,47231,9244, 393, 10172,8546, 2058, 5447, 2022, 47234,317, 25016,35902,47236,
317, 47238,47239,10763,489, 47241,8525, 47248,47250,47252,47254,35093,47257,47263,47264,47265,47266,317, 47269,47276,47277,47278,47281,6089, 47282,47285,47242,
- 47244,317, 370, 10179,47246,47247,404, 343, 2058, 1230, 47243,317, 47245,24884,343, 343, 1588, 2261, 2590, 47249,427, 4965, 8254, 476, 4965, 47251,350,
- 2272, 6083, 2178, 317, 9530, 590, 332, 317, 7149, 317, 8254, 514, 47253,317, 317, 317, 1345, 47255,363, 317, 317, 370, 10854,47256,317, 381, 381,
+ 47244,317, 370, 10179,47246,47247,404, 343, 2058, 1230, 47243,317, 47245,24884,343, 343, 1588, 2261, 2590, 47249,427, 4965, 8254, 476, 4965, 47251,350,
+ 2272, 6083, 2178, 317, 9530, 590, 332, 317, 7149, 317, 8254, 514, 47253,317, 317, 317, 1345, 47255,363, 317, 317, 370, 10854,47256,317, 381, 381,
47258,5483, 22742,47259,47260,47261,490, 47262,317, 748, 8281, 1109, 317, 317, 363, 490, 18333,1345, 543, 5055, 317, 8148, 363, 12144,573, 2280, 44550,
- 47267,317, 490, 2004, 965, 5793, 489, 47268,343, 5611, 24798,317, 965, 342, 393, 317, 47270,7522, 47271,47273,47274,14146,6318, 2261, 9436, 11921,371,
- 15565,2171, 404, 1108, 47272,965, 490, 317, 6228, 651, 47275,317, 317, 363, 363, 317, 363, 404, 6036, 19791,47279,317, 642, 47280,9447, 317, 371,
+ 47267,317, 490, 2004, 965, 5793, 489, 47268,343, 5611, 24798,317, 965, 342, 393, 317, 47270,7522, 47271,47273,47274,14146,6318, 2261, 9436, 11921,371,
+ 15565,2171, 404, 1108, 47272,965, 490, 317, 6228, 651, 47275,317, 317, 363, 363, 317, 363, 404, 6036, 19791,47279,317, 642, 47280,9447, 317, 371,
47283,47284,317, 433, 5828, 39239,47286,47288,47292,47296,47298,47309,47314,47318,47319,7149, 47321,47326,1588, 47333,3987, 7035, 2142, 47289,2369, 47290,47291,
5325, 350, 2110, 317, 490, 47293,24100,27584,47294,47295,18448,490, 332, 24949,3284, 11533,16278,47297,350, 6228, 27689,539, 490, 317, 47299,47304,47305,
15058,565, 12454,539, 47306,47307,1230, 47300,47301,47302,317, 47303,6674, 9695, 367, 9581, 317, 2004, 343, 47308,317, 317, 47310,350, 47311,47312,47313,
- 7825, 12142,4984, 47315,317, 47316,5308, 47317,3432, 8626, 47320,490, 47322,47323,47324,14834,2022, 47325,345, 3987, 10758,373, 317, 31950,404, 45361,7738,
+ 7825, 12142,4984, 47315,317, 47316,5308, 47317,3432, 8626, 47320,490, 47322,47323,47324,14834,2022, 47325,345, 3987, 10758,373, 317, 31950,404, 45361,7738,
543, 47327,47328,370, 362, 47329,47330,317, 4789, 47332,10561,365, 1913, 343, 2279, 47331,47335,47337,47339,6195, 47349,47352,5611, 15745,47361,47366,47369,
- 47371,47377,47381,2152, 47382,5038, 5241, 317, 5619, 2396, 24185,47336,20219,490, 47338,605, 5464, 2024, 466, 47340,47341,47342,47343,47345,47348,1548, 370,
- 47344,476, 574, 317, 47346,574, 317, 490, 47347,317, 345, 370, 317, 1347, 28565,47350,427, 363, 47351,317, 317, 4984, 317, 317, 47353,47354,332,
- 350, 22742,47355,47360,1459, 7658, 427, 390, 6607, 317, 1347, 47356,47357,317, 345, 47358,317, 47359,12494,345, 47362,47363,17760,47364,20219,490, 343,
- 965, 342, 317, 47365,428, 47367,47368,363, 7098, 8955, 1459, 47370,332, 363, 47372,47374,47376,350, 3987, 345, 317, 47373,365, 317, 317, 47375,317,
- 2156, 317, 22742,1992, 47378,5836, 317, 317, 345, 47379,47380,2381, 8214, 382, 5793, 47384,47387,47388,47398,47400,47402,47410,6048, 590, 47411,47413,350,
+ 47371,47377,47381,2152, 47382,5038, 5241, 317, 5619, 2396, 24185,47336,20219,490, 47338,605, 5464, 2024, 466, 47340,47341,47342,47343,47345,47348,1548, 370,
+ 47344,476, 574, 317, 47346,574, 317, 490, 47347,317, 345, 370, 317, 1347, 28565,47350,427, 363, 47351,317, 317, 4984, 317, 317, 47353,47354,332,
+ 350, 22742,47355,47360,1459, 7658, 427, 390, 6607, 317, 1347, 47356,47357,317, 345, 47358,317, 47359,12494,345, 47362,47363,17760,47364,20219,490, 343,
+ 965, 342, 317, 47365,428, 47367,47368,363, 7098, 8955, 1459, 47370,332, 363, 47372,47374,47376,350, 3987, 345, 317, 47373,365, 317, 317, 47375,317,
+ 2156, 317, 22742,1992, 47378,5836, 317, 317, 345, 47379,47380,2381, 8214, 382, 5793, 47384,47387,47388,47398,47400,47402,47410,6048, 590, 47411,47413,350,
47424,47438,47440,350, 18317,317, 47454,8599, 47385,362, 6204, 317, 47386,19237,14353,47389,47391,466, 2705, 317, 373, 2537, 741, 47390,317, 362, 47392,
- 47394,47393,47395,6195, 47397,47396,363, 12303,47399,7949, 7911, 5138, 47401,350, 8526, 317, 363, 47403,47404,9059, 47405,47406,22466,362, 350, 363, 9914,
+ 47394,47393,47395,6195, 47397,47396,363, 12303,47399,7949, 7911, 5138, 47401,350, 8526, 317, 363, 47403,47404,9059, 47405,47406,22466,362, 350, 363, 9914,
317, 6412, 47407,47408,7401, 11911,47409,2272, 2219, 2366, 5626, 47412,1345, 47414,47417,47422,47423,317, 47415,47416,3869, 2067, 8020, 466, 355, 47418,47420,
47419,356, 466, 5037, 343, 596, 47421,317, 6555, 317, 317, 1588, 345, 47425,47427,47434,8083, 501, 4984, 6228, 317, 317, 7792, 2161, 47426,317, 47428,
- 363, 47429,47430,5792, 317, 332, 2156, 345, 2272, 365, 317, 6996, 317, 47431,11921,317, 5828, 317, 317, 47432,6492, 317, 47433,317, 4984, 596, 345,
- 345, 5328, 47435,6831, 4965, 490, 2171, 47436,363, 2067, 47437,6048, 490, 317, 317, 317, 317, 501, 437, 10770,5425, 317, 47439,350, 350, 380, 1992,
+ 363, 47429,47430,5792, 317, 332, 2156, 345, 2272, 365, 317, 6996, 317, 47431,11921,317, 5828, 317, 317, 47432,6492, 317, 47433,317, 4984, 596, 345,
+ 345, 5328, 47435,6831, 4965, 490, 2171, 47436,363, 2067, 47437,6048, 490, 317, 317, 317, 317, 501, 437, 10770,5425, 317, 47439,350, 350, 380, 1992,
317, 47441,47442,47450,7273, 362, 350, 1481, 7892, 317, 1588, 47451,47443,47448,47444,47445,47446,47447,47449,2101, 317, 2108, 479, 47452,47453,47456,47463,
- 373, 47469,47475,47480,317, 404, 490, 47457,36073,47458,47461,317, 47462,317, 2110, 343, 47459,2610, 47460,317, 13269,343, 5162, 7490, 317, 317, 1230,
- 390, 8544, 351, 9537, 317, 47464,47465,47466,9226, 9711, 317, 7399, 2117, 6278, 350, 317, 490, 5761, 317, 47467,8772, 2272, 5891, 15600,47468,317, 317,
- 317, 8906, 1588, 9265, 9504, 47470,47471,47473,317, 350, 317, 2067, 490, 47472,47474,490, 47476,47477,343, 47478,47479,317, 317, 490, 317, 6370, 490,
- 5793, 317, 371, 1044, 47482,7698, 8273, 2077, 47485,47487,47488,47489,47490,47492,47494,47497,47502,47503,350, 8023, 20766,47483,47484,6021, 47486,317, 523,
+ 373, 47469,47475,47480,317, 404, 490, 47457,36073,47458,47461,317, 47462,317, 2110, 343, 47459,2610, 47460,317, 13269,343, 5162, 7490, 317, 317, 1230,
+ 390, 8544, 351, 9537, 317, 47464,47465,47466,9226, 9711, 317, 7399, 2117, 6278, 350, 317, 490, 5761, 317, 47467,8772, 2272, 5891, 15600,47468,317, 317,
+ 317, 8906, 1588, 9265, 9504, 47470,47471,47473,317, 350, 317, 2067, 490, 47472,47474,490, 47476,47477,343, 47478,47479,317, 317, 490, 317, 6370, 490,
+ 5793, 317, 371, 1044, 47482,7698, 8273, 2077, 47485,47487,47488,47489,47490,47492,47494,47497,47502,47503,350, 8023, 20766,47483,47484,6021, 47486,317, 523,
523, 514, 317, 551, 5701, 355, 18724,14455,317, 47491,345, 351, 317, 39533,317, 47493,363, 8301, 14062,6195, 11146,47495,317, 4554, 47496,523, 47498,
343, 363, 317, 47499,317, 47500,1108, 317, 47501,7911, 5037, 343, 370, 5055, 6255, 47505,363, 397, 47506,404, 404, 363, 47507,47509,47510,501, 47511,
9624, 15827,3999, 47512,22427,47514,47515,47516,47518,404, 1060, 490, 2584, 5851, 5105, 5273, 47513,11434,21053,350, 47517,515, 19174,363, 363, 550, 47520,
47521,7657, 47524,47528,332, 47529,47530,47531,47533,490, 2261, 332, 47522,10316,317, 47523,11669,4987, 7865, 11831,343, 345, 317, 317, 11843,47525,47527,
5836, 47526,404, 7590, 317, 390, 351, 2571, 317, 365, 971, 2317, 47532,8301, 47534,47535,6696, 384, 631, 47537,47538,47540,47543,47545,1479, 47546,47548,
47539,47541,47542,47544,19080,47547,607, 6222, 6222, 47549,396, 47550,6546, 345, 47552,47553,621, 1060, 317, 47555,47557,47593,47616,47642,47663,47680,47702,
- 47749,47763,47812,47814,47816,47821,47844,47885,47912,47931,47932,47939,47981,48008,48021,48059,48070,48087,48096,47556,14999,47558,47560,47567,47570,47571,551,
- 47572,317, 47573,47574,317, 47576,47578,47580,47582,47587,350, 47559,384, 574, 356, 39147,362, 47561,47563,16249,47565,2022, 362, 3529, 317, 5037, 317,
- 47562,349, 349, 317, 317, 47564,390, 317, 23337,2571, 9139, 47566,1325, 47568,1160, 317, 47569,6598, 6725, 2948, 370, 362, 317, 990, 16867,466, 317,
- 317, 363, 351, 6000, 363, 317, 10894,47575,14483,9648, 5891, 17748,317, 490, 351, 12853,5991, 22786,47577,466, 317, 317, 1999, 5159, 479, 5120, 539,
- 362, 47579,317, 10422,3999, 317, 317, 410, 47581,2222, 466, 317, 12696,317, 1588, 317, 317, 4982, 317, 317, 47583,363, 2541, 1030, 47584,47585,317,
- 317, 47586,516, 11089,362, 317, 6089, 317, 384, 7590, 47588,47592,317, 317, 11533,47589,47591,6718, 317, 47590,356, 6089, 466, 317, 5809, 2272, 9575,
+ 47749,47763,47812,47814,47816,47821,47844,47885,47912,47931,47932,47939,47981,48008,48021,48059,48070,48087,48096,47556,14999,47558,47560,47567,47570,47571,551,
+ 47572,317, 47573,47574,317, 47576,47578,47580,47582,47587,350, 47559,384, 574, 356, 39147,362, 47561,47563,16249,47565,2022, 362, 3529, 317, 5037, 317,
+ 47562,349, 349, 317, 317, 47564,390, 317, 23337,2571, 9139, 47566,1325, 47568,1160, 317, 47569,6598, 6725, 2948, 370, 362, 317, 990, 16867,466, 317,
+ 317, 363, 351, 6000, 363, 317, 10894,47575,14483,9648, 5891, 17748,317, 490, 351, 12853,5991, 22786,47577,466, 317, 317, 1999, 5159, 479, 5120, 539,
+ 362, 47579,317, 10422,3999, 317, 317, 410, 47581,2222, 466, 317, 12696,317, 1588, 317, 317, 4982, 317, 317, 47583,363, 2541, 1030, 47584,47585,317,
+ 317, 47586,516, 11089,362, 317, 6089, 317, 384, 7590, 47588,47592,317, 317, 11533,47589,47591,6718, 317, 47590,356, 6089, 466, 317, 5809, 2272, 9575,
381, 47594,370, 47597,47603,47604,47607,47612,14378,363, 47595,47596,4943, 393, 363, 343, 332, 363, 404, 11144,371, 47598,317, 47600,3664, 47602,19791,
- 317, 47599,47601,390, 5836, 47605,590, 439, 47606,3664, 356, 317, 7785, 47608,401, 47611,396, 317, 47609,47610,2272, 47613,47615,363, 47614,404, 381,
+ 317, 47599,47601,390, 5836, 47605,590, 439, 47606,3664, 356, 317, 7785, 47608,401, 47611,396, 317, 47609,47610,2272, 47613,47615,363, 47614,404, 381,
965, 47617,7865, 490, 47618,47623,47624,47626,47629,47634,47636,2405, 317, 47641,363, 2086, 9440, 381, 47619,490, 47620,47622,350, 6551, 317, 5223, 34320,
- 371, 47621,349, 15070,317, 317, 2148, 47625,14842,362, 317, 47627,47628,11648,343, 351, 351, 47606,1065, 47630,47631,317, 47632,47633,15183,381, 381,
+ 371, 47621,349, 15070,317, 317, 2148, 47625,14842,362, 317, 47627,47628,11648,343, 351, 351, 47606,1065, 47630,47631,317, 47632,47633,15183,381, 381,
343, 47635,37126,47637,351, 47638,317, 18147,47639,47640,466, 317, 1347, 7821, 7481, 2280, 13674,47643,47644,47645,2024, 47649,47652,47653,47654,47655,47656,
- 47657,15130,47659,11245,448, 47646,317, 317, 13679,47647,2845, 317, 2845, 351, 47648,5662, 47650,47651,317, 370, 343, 605, 7916, 316, 4738, 2060, 428,
- 47658,47660,47661,317, 47662,949, 47664,47665,47666,47667,317, 317, 35774,11928,47670,47671,1109, 2222, 47673,47674,47675,47676,350, 47679,24682,351, 2391,
- 351, 427, 47668,317, 317, 47669,37256,332, 47672,466, 605, 351, 466, 370, 317, 317, 7911, 317, 5662, 363, 5037, 390, 317, 9876, 47677,47678,363,
- 363, 35018,2301, 47681,43829,47682,47684,38654,47688,47689,47691,47695,13950,47683,356, 46892,317, 351, 343, 1588, 1588, 47685,47686,350, 7949, 21053,317,
+ 47657,15130,47659,11245,448, 47646,317, 317, 13679,47647,2845, 317, 2845, 351, 47648,5662, 47650,47651,317, 370, 343, 605, 7916, 316, 4738, 2060, 428,
+ 47658,47660,47661,317, 47662,949, 47664,47665,47666,47667,317, 317, 35774,11928,47670,47671,1109, 2222, 47673,47674,47675,47676,350, 47679,24682,351, 2391,
+ 351, 427, 47668,317, 317, 47669,37256,332, 47672,466, 605, 351, 466, 370, 317, 317, 7911, 317, 5662, 363, 5037, 390, 317, 9876, 47677,47678,363,
+ 363, 35018,2301, 47681,43829,47682,47684,38654,47688,47689,47691,47695,13950,47683,356, 46892,317, 351, 343, 1588, 1588, 47685,47686,350, 7949, 21053,317,
47687,351, 422, 12277,47690,47692,370, 47693,47694,47696,47700,4952, 47701,9590, 23004,9914, 317, 33255,1160, 47697,47698,47699,47703,332, 47711,47717,47721,
- 47722,47735,362, 47737,47738,47742,47746,47747,12423,317, 551, 6408, 47704,1078, 47708,47709,47710,3505, 17375,47705,47707,47706,5201, 10674,5225, 1325, 317,
+ 47722,47735,362, 47737,47738,47742,47746,47747,12423,317, 551, 6408, 47704,1078, 47708,47709,47710,3505, 17375,47705,47707,47706,5201, 10674,5225, 1325, 317,
401, 317, 317, 488, 365, 2058, 1347, 317, 5054, 317, 345, 317, 47712,47716,574, 381, 47713,317, 317, 47714,317, 343, 1160, 47715,47718,47719,47720,
317, 317, 317, 34942,317, 381, 317, 5457, 351, 47723,47725,47729,47724,317, 8544, 46591,12275,317, 47726,47727,47728,1325, 6017, 2510, 12277,47730,47731,
47732,47733,370, 25572,47734,5441, 47736,541, 349, 317, 345, 317, 5570, 351, 2280, 363, 396, 47739,362, 47741,317, 14143,47740,47743,343, 47745,47744,
343, 317, 574, 317, 637, 316, 2402, 47748,5634, 46436,5897, 47750,37775,607, 47752,47753,47758,47760,47761,47751,317, 13670,317, 5663, 5896, 351, 16052,
47754,47756,466, 47757,345, 317, 47755,1830, 3529, 47759,27721,317, 351, 6598, 362, 343, 362, 12756,47762,10898,501, 47764,47765,47772,47782,47785,47787,
47788,7850, 490, 43837,47790,47791,47794,47796,5241, 47798,47806,490, 47811,317, 47766,35973,362, 3717, 47767,47768,317, 317, 317, 10546,12969,356, 10626,
- 10626,47769,47770,47771,317, 47773,47777,317, 47774,47775,47776,351, 14708,350, 47778,47779,362, 317, 47780,47781,20909,47783,3504, 47784,317, 390, 317,
+ 10626,47769,47770,47771,317, 47773,47777,317, 47774,47775,47776,351, 14708,350, 47778,47779,362, 317, 47780,47781,20909,47783,3504, 47784,317, 390, 317,
382, 47786,317, 1033, 47789,4952, 317, 28438,1020, 37918,7142, 2108, 47792,351, 47793,34257,47792,16888,2357, 5159, 30089,46954,16579,47795,439, 2334, 21274,
7734, 578, 47797,317, 27303,47799,47800,12704,350, 350, 317, 47804,47805,317, 317, 351, 47801,47802,47803,12696,8099, 350, 332, 390, 24310,47807,47808,
- 350, 2948, 501, 47810,8421, 16024,7651, 3529, 363, 47809,5105, 4738, 343, 1597, 596, 317, 47813,362, 2272, 9521, 47815,1345, 24185,350, 317, 2146, 490,
+ 350, 2948, 501, 47810,8421, 16024,7651, 3529, 363, 47809,5105, 4738, 343, 1597, 596, 317, 47813,362, 2272, 9521, 47815,1345, 24185,350, 317, 2146, 490,
4949, 3226, 47817,25726,19478,47819,47820,317, 47818,317, 356, 971, 2108, 47822,47826,553, 47827,47830,47831,12141,47832,2086, 47838,47842,47843,47823,15661,
47824,47825,317, 553, 4949, 343, 317, 2391, 351, 317, 47828,317, 47829,10592,7990, 9649, 343, 390, 590, 317, 363, 317, 47833,47834,47836,317, 10878,
- 47835,47837,2272, 47839,1588, 317, 2272, 317, 2261, 1347, 317, 47840,350, 47841,317, 317, 317, 317, 11146,5793, 11388,380, 8614, 317, 47845,47848,5896,
+ 47835,47837,2272, 47839,1588, 317, 2272, 317, 2261, 1347, 317, 47840,350, 47841,317, 317, 317, 317, 11146,5793, 11388,380, 8614, 317, 47845,47848,5896,
47852,47853,47855,1479, 47858,47862,47865,47869,511, 47870,47876,47879,47880,47883,15130,47884,47846,47847,47849,47850,362, 343, 47851,558, 5826, 1799, 26913,
317, 317, 12668,34793,10317,47854,466, 317, 7866, 741, 317, 317, 47856,362, 47857,6204, 47859,343, 47860,490, 2134, 47861,5362, 317, 8722, 317, 47863,
- 1830, 3529, 47864,5968, 6600, 362, 47866,351, 317, 47868,345, 317, 317, 47867,18577,317, 4965, 8273, 47871,47872,47874,47875,1160, 47873,317, 362, 5861,
- 317, 1481, 47877,351, 317, 47878,343, 332, 317, 317, 317, 317, 317, 356, 9450, 466, 7672, 47881,47882,4984, 7940, 6207, 317, 10407,1347, 7672, 317,
+ 1830, 3529, 47864,5968, 6600, 362, 47866,351, 317, 47868,345, 317, 317, 47867,18577,317, 4965, 8273, 47871,47872,47874,47875,1160, 47873,317, 362, 5861,
+ 317, 1481, 47877,351, 317, 47878,343, 332, 317, 317, 317, 317, 317, 356, 9450, 466, 7672, 47881,47882,4984, 7940, 6207, 317, 10407,1347, 7672, 317,
4984, 7142, 317, 949, 501, 2077, 47886,47868,47887,47889,47903,490, 317, 47910,401, 2317, 317, 47888,9609, 365, 949, 47890,5897, 47894,47896,317, 28651,
47899,47901,6203, 47902,47891,47892,47893,317, 317, 1347, 1160, 317, 47895,317, 363, 47897,47898,18692,317, 371, 47900,317, 490, 317, 47904,47907,47905,
- 47906,47908,47909,2035, 317, 5037, 47911,47913,1459, 47914,47916,27154,2022, 350, 12943,47924,47926,317, 47930,345, 343, 317, 2322, 356, 47915,8178, 317,
+ 47906,47908,47909,2035, 317, 5037, 47911,47913,1459, 47914,47916,27154,2022, 350, 12943,47924,47926,317, 47930,345, 343, 317, 2322, 356, 47915,8178, 317,
47917,47923,2322, 47918,345, 47919,30151,47920,47921,47922,47925,21274,40111,343, 490, 501, 356, 47927,317, 2420, 47928,1588, 47929,47933,390, 15828,26214,
47934,23019,47937,350, 490, 5423, 356, 47938,412, 619, 317, 4984, 47935,47936,1481, 1913, 317, 317, 316, 317, 1160, 47940,47941,47946,47949,47950,47951,
- 47952,47955,47957,47960,47962,47963,47966,47972,47979,490, 47980,1020, 47942,47943,1347, 47944,47945,317, 5343, 317, 47947,1078, 317, 332, 47948,381, 2387,
- 317, 6623, 5294, 5611, 1588, 7785, 1444, 5836, 5055, 317, 317, 47953,317, 47954,47956,19665,317, 47958,345, 9609, 47959,4965, 16528,47961,47964,47965,350,
- 596, 21318,10894,47967,47969,47970,5662, 350, 47971,1347, 47968,345, 317, 317, 10641,356, 466, 317, 47973,47974,47976,47977,373, 47975,317, 34174,317,
- 317, 11436,47978,2374, 422, 343, 44432,371, 332, 47982,47983,13219,47984,5840, 47986,47989,47991,332, 2402, 47993,47998,48001,48002,48003,343, 14806,382,
+ 47952,47955,47957,47960,47962,47963,47966,47972,47979,490, 47980,1020, 47942,47943,1347, 47944,47945,317, 5343, 317, 47947,1078, 317, 332, 47948,381, 2387,
+ 317, 6623, 5294, 5611, 1588, 7785, 1444, 5836, 5055, 317, 317, 47953,317, 47954,47956,19665,317, 47958,345, 9609, 47959,4965, 16528,47961,47964,47965,350,
+ 596, 21318,10894,47967,47969,47970,5662, 350, 47971,1347, 47968,345, 317, 317, 10641,356, 466, 317, 47973,47974,47976,47977,373, 47975,317, 34174,317,
+ 317, 11436,47978,2374, 422, 343, 44432,371, 332, 47982,47983,13219,47984,5840, 47986,47989,47991,332, 2402, 47993,47998,48001,48002,48003,343, 14806,382,
574, 47985,605, 351, 5809, 47987,47988,5295, 47990,11442,332, 1030, 13323,23116,5894, 1459, 47992,5241, 343, 490, 5087, 363, 47994,363, 332, 47995,47997,
558, 47996,317, 6228, 6996, 317, 317, 317, 317, 317, 317, 14999,317, 7127, 5295, 47999,48000,12344,27218,8125, 332, 4738, 363, 11038,558, 317, 48004,
- 48006,362, 2156, 16931,514, 317, 351, 2022, 48005,3599, 356, 11089,466, 5157, 6673, 32079,46708,317, 343, 48007,47229,48009,2568, 48011,48015,490, 3884,
- 48017,2036, 382, 4982, 317, 4960, 48019,501, 317, 343, 48010,48012,48013,2272, 11040,1033, 317, 48014,48016,5897, 13686,5436, 5437, 14708,48018,2845, 1033,
+ 48006,362, 2156, 16931,514, 317, 351, 2022, 48005,3599, 356, 11089,466, 5157, 6673, 32079,46708,317, 343, 48007,47229,48009,2568, 48011,48015,490, 3884,
+ 48017,2036, 382, 4982, 317, 4960, 48019,501, 317, 343, 48010,48012,48013,2272, 11040,1033, 317, 48014,48016,5897, 13686,5436, 5437, 14708,48018,2845, 1033,
48020,2368, 11308,317, 8421, 317, 578, 48022,48029,48045,48056,48058,3284, 317, 2184, 20219,48023,48025,25086,48010,9422, 317, 48024,370, 2163, 48026,27231,
- 317, 317, 48028,351, 48027,5295, 3284, 5836, 553, 1347, 48030,48032,48035,965, 48038,48044,24810,317, 48031,317, 320, 356, 48033,466, 14462,2272, 317,
+ 317, 317, 48028,351, 48027,5295, 3284, 5836, 553, 1347, 48030,48032,48035,965, 48038,48044,24810,317, 48031,317, 320, 356, 48033,466, 14462,2272, 317,
48034,48036,317, 6089, 11939,9692, 48037,351, 433, 48039,48040,48041,33256,12525,2272, 48043,4980, 5717, 514, 6629, 10820,48042,965, 363, 965, 404, 48046,
- 371, 48048,48049,48052,48053,317, 48047,317, 373, 317, 317, 317, 345, 4965, 48050,48051,13686,48054,390, 345, 48055,363, 343, 2317, 30878,317, 317,
+ 371, 48048,48049,48052,48053,317, 48047,317, 373, 317, 317, 317, 345, 4965, 48050,48051,13686,48054,390, 345, 48055,363, 343, 2317, 30878,317, 317,
317, 317, 15531,365, 48057,317, 317, 317, 9320, 363, 48060,10316,317, 48064,48067,362, 370, 6412, 317, 6645, 48061,8852, 48062,48063,3284, 16589,48065,
317, 553, 317, 317, 48066,3284, 4410, 48068,48069,381, 2067, 11844,317, 7911, 345, 554, 42698,11782,5037, 317, 351, 48071,48083,350, 48085,6387, 48072,
317, 404, 48079,48081,5701, 48073,48074,317, 48075,48076,48077,48078,351, 9548, 317, 48080,370, 6382, 48082,48084,48086,1160, 620, 345, 317, 48088,48089,
- 48091,317, 14250,12287,596, 7490, 48094,48095,490, 6409, 317, 479, 317, 48090,48092,48093,1347, 16129,545, 363, 317, 29097,48097,7657, 351, 343, 404,
- 2058, 4984, 48099,22866,48101,48103,48109,48100,48102,19082,48104,48105,48106,48107,48108,48110,607, 371, 48111,317, 356, 396, 48113,48116,48117,48118,380,
+ 48091,317, 14250,12287,596, 7490, 48094,48095,490, 6409, 317, 479, 317, 48090,48092,48093,1347, 16129,545, 363, 317, 29097,48097,7657, 351, 343, 404,
+ 2058, 4984, 48099,22866,48101,48103,48109,48100,48102,19082,48104,48105,48106,48107,48108,48110,607, 371, 48111,317, 356, 396, 48113,48116,48117,48118,380,
48114,48115,48120,48121,48131,48133,48134,48138,48122,48123,48124,48125,48126,48127,48128,48129,48130,18791,48132,48135,490, 48136,48137,380, 48139,48145,48177,
48214,48223,48257,48275,490, 48303,11280,48304,48315,48348,161, 48471,48477,48503,48511,48514,48537,48606,48611,48638,343, 48640,41256,48140,2086, 317, 48142,
- 48144,2163, 23309,5447, 317, 317, 48141,317, 466, 5055, 1347, 1347, 48143,343, 317, 5623, 511, 48146,48147,48149,5238, 343, 362, 48167,48168,317, 4873,
+ 48144,2163, 23309,5447, 317, 317, 48141,317, 466, 5055, 1347, 1347, 48143,343, 317, 5623, 511, 48146,48147,48149,5238, 343, 362, 48167,48168,317, 4873,
48176,8214, 317, 5226, 317, 48148,343, 1160, 317, 317, 2067, 345, 317, 48150,36232,48151,48166,48152,7942, 339, 5217, 362, 317, 48158,15531,48153,48156,
- 48154,370, 317, 48155,370, 7888, 5447, 27142,48157,48159,317, 48163,317, 48165,48160,48162,317, 48161,345, 48164,48169,48172,48175,317, 317, 490, 3688,
- 48170,317, 48171,1160, 21412,345, 15642,317, 48173,5037, 48174,7976, 1347, 356, 2715, 48178,48179,48181,48186,48199,48200,48211,48213,5890, 332, 365, 490,
+ 48154,370, 317, 48155,370, 7888, 5447, 27142,48157,48159,317, 48163,317, 48165,48160,48162,317, 48161,345, 48164,48169,48172,48175,317, 317, 490, 3688,
+ 48170,317, 48171,1160, 21412,345, 15642,317, 48173,5037, 48174,7976, 1347, 356, 2715, 48178,48179,48181,48186,48199,48200,48211,48213,5890, 332, 365, 490,
15035,6651, 48180,16117,11065,2272, 7565, 48182,317, 2537, 317, 5717, 48183,48184,25756,466, 351, 1588, 48185,574, 4591, 371, 48187,9624, 511, 48189,48190,
- 9012, 48191,48188,8557, 15337,2631, 490, 48192,382, 362, 317, 48193,48197,28588,6598, 9012, 48194,48195,48196,48198,9182, 4591, 317, 633, 48201,14444,350,
+ 9012, 48191,48188,8557, 15337,2631, 490, 48192,382, 362, 317, 48193,48197,28588,6598, 9012, 48194,48195,48196,48198,9182, 4591, 317, 633, 48201,14444,350,
48202,48203,48205,2571, 48207,317, 48210,317, 317, 5223, 370, 317, 1992, 345, 317, 370, 48204,48206,48208,48209,317, 48212,2271, 3751, 4965, 426, 48215,
- 12142,343, 48218,343, 317, 48219,48220,553, 48222,11654,48216,343, 317, 551, 48217,317, 48221,351, 2272, 426, 48224,48234,48237,48239,48241,351, 5425,
+ 12142,343, 48218,343, 317, 48219,48220,553, 48222,11654,48216,343, 317, 551, 48217,317, 48221,351, 2272, 426, 48224,48234,48237,48239,48241,351, 5425,
317, 48242,48243,48244,48245,48248,48251,48255,27865,2134, 590, 2566, 48225,48228,382, 48229,48230,362, 48231,48232,48233,371, 5223, 48226,48227,605, 13686,
- 317, 5662, 317, 14709,1830, 439, 6593, 351, 466, 466, 6594, 476, 390, 12291,48235,48236,33795,317, 317, 5896, 48238,343, 553, 317, 343, 48240,332,
+ 317, 5662, 317, 14709,1830, 439, 6593, 351, 466, 466, 6594, 476, 390, 12291,48235,48236,33795,317, 317, 5896, 48238,343, 553, 317, 343, 48240,332,
15758,317, 550, 343, 317, 1950, 3079, 343, 362, 343, 317, 390, 48246,343, 317, 5662, 317, 7949, 6598, 48247,317, 317, 48249,48250,28512,21318,48252,
- 48253,48254,5570, 48256,1230, 673, 1347, 363, 48258,48272,4952, 551, 48273,48274,48259,48260,3178, 48261,48262,48263,48265,1347, 48267,48271,6089, 24393,384,
+ 48253,48254,5570, 48256,1230, 673, 1347, 363, 48258,48272,4952, 551, 48273,48274,48259,48260,3178, 48261,48262,48263,48265,1347, 48267,48271,6089, 24393,384,
392, 48264,476, 48266,466, 48268,363, 5419, 48269,48270,339, 6166, 370, 384, 551, 27066,370, 10626,1194, 10422,3999, 12993,317, 48276,48278,48279,48280,
- 7490, 350, 362, 48298,48299,48301,363, 5399, 6355, 5634, 48277,404, 12277,3079, 14535,5055, 3079, 48281,317, 317, 48282,6532, 48285,48286,48288,466, 6021,
- 362, 48294,48295,11803,35846,48283,48284,370, 10012,317, 5363, 1347, 381, 48287,5223, 356, 48289,48290,428, 48292,48291,1526, 2601, 48293,14320,9648, 317,
+ 7490, 350, 362, 48298,48299,48301,363, 5399, 6355, 5634, 48277,404, 12277,3079, 14535,5055, 3079, 48281,317, 317, 48282,6532, 48285,48286,48288,466, 6021,
+ 362, 48294,48295,11803,35846,48283,48284,370, 10012,317, 5363, 1347, 381, 48287,5223, 356, 48289,48290,428, 48292,48291,1526, 2601, 48293,14320,9648, 317,
48296,370, 1597, 48297,317, 21139,317, 48300,17410,317, 5687, 2178, 48302,48305,48306,48314,345, 356, 949, 410, 317, 381, 48307,48309,48310,48312,44345,
48313,48308,317, 48311,466, 317, 317, 5335, 2391, 381, 5040, 393, 48316,48317,48318,48319,9170, 48321,48328,2948, 48331,48342,48344,1526, 511, 48346,48347,
- 381, 14341,48320,48322,48323,385, 390, 48325,490, 7792, 5891, 48324,317, 317, 48326,48327,317, 48329,10476,5896, 14571,48330,10894,48332,48336,48339,2503,
+ 381, 14341,48320,48322,48323,385, 390, 48325,490, 7792, 5891, 48324,317, 317, 48326,48327,317, 48329,10476,5896, 14571,48330,10894,48332,48336,48339,2503,
48340,5896, 317, 48333,343, 317, 48335,317, 48334,2152, 382, 543, 18840,48337,11442,10592,48338,317, 385, 317, 317, 317, 48341,48343,553, 490, 48345,
317, 945, 13422,6195, 6601, 48349,48352,490, 48358,48361,343, 343, 48364,48365,48366,48370,36635,5628, 343, 48350,6752, 5438, 48351,867, 32869,48353,48354,
- 339, 317, 2391, 317, 48355,48356,362, 48357,7401, 48359,16368,48360,2609, 317, 439, 7438, 48362,48363,5365, 5991, 466, 2571, 317, 381, 12731,596, 365,
- 48367,317, 48368,32011,345, 48369,48371,2391, 48374,466, 48375,317, 48372,48373,48376,9444, 48378,48386,48412,12556,48422,48436,48439,365, 48440,48449,362,
+ 339, 317, 2391, 317, 48355,48356,362, 48357,7401, 48359,16368,48360,2609, 317, 439, 7438, 48362,48363,5365, 5991, 466, 2571, 317, 381, 12731,596, 365,
+ 48367,317, 48368,32011,345, 48369,48371,2391, 48374,466, 48375,317, 48372,48373,48376,9444, 48378,48386,48412,12556,48422,48436,48439,365, 48440,48449,362,
48453,48456,6601, 48459,48466,48469,5037, 6089, 317, 48470,1588, 362, 317, 501, 14805,48377,5120, 5392, 48379,48380,48381,1347, 48383,48382,48384,1999, 48385,
317, 317, 317, 18133,48387,48390,48394,48401,3023, 48402,48403,48406,18460,350, 48407,14573,48408,48410,543, 317, 370, 6228, 317, 7055, 317, 380, 48388,
- 48389,317, 2222, 48391,48392,1358, 4949, 371, 11685,356, 48393,363, 48395,48396,48397,48400,20672,439, 317, 396, 5663, 545, 48398,24047,48399,10626,6089,
+ 48389,317, 2222, 48391,48392,1358, 4949, 371, 11685,356, 48393,363, 48395,48396,48397,48400,20672,439, 317, 396, 5663, 545, 48398,24047,48399,10626,6089,
741, 10560,8223, 20746,362, 9719, 317, 6598, 1033, 317, 317, 1459, 48404,48405,6036, 2272, 3529, 48409,1025, 390, 48411,17565,2077, 2022, 6604, 317, 48413,
48418,317, 565, 362, 350, 10149,21014,6379, 48420,9244, 6736, 48421,48414,317, 48416,5412, 48415,949, 317, 317, 48417,370, 317, 370, 1526, 48419,37561,
- 4960, 22254,2219, 4943, 362, 1871, 48423,48426,48428,9624, 317, 590, 48430,317, 10223,16825,317, 490, 501, 48432,317, 48424,490, 317, 317, 16992,501,
+ 4960, 22254,2219, 4943, 362, 1871, 48423,48426,48428,9624, 317, 590, 48430,317, 10223,16825,317, 490, 501, 48432,317, 48424,490, 317, 317, 16992,501,
48425,48427,371, 371, 382, 14444,16889,10020,48429,356, 48424,16651,317, 48431,5105, 48433,317, 48434,48435,48437,48438,317, 381, 345, 317, 1033, 14499,
9067, 48441,5159, 48442,20848,48444,48445,48446,9064, 5223, 48443,349, 11245,317, 27846,345, 8178, 5836, 48447,48448,317, 370, 48450,48451,48452,48454,48455,
- 343, 10633,1358, 7866, 553, 380, 5662, 317, 47873,317, 317, 345, 48457,23859,48458,339, 427, 370, 48460,48462,48464,363, 370, 2022, 350, 363, 501,
+ 343, 10633,1358, 7866, 553, 380, 5662, 317, 47873,317, 317, 345, 48457,23859,48458,339, 427, 370, 48460,48462,48464,363, 370, 2022, 350, 363, 501,
18840,48461,367, 381, 48463,356, 48465,317, 4564, 48467,350, 363, 317, 317, 48468,4984, 370, 343, 317, 48472,317, 489, 7941, 1753, 5897, 48473,48474,
- 511, 48476,2086, 18084,345, 2715, 1999, 48475,317, 501, 2413, 48478,48479,2024, 554, 48480,48481,362, 48483,48485,48489,48494,48500,5120, 365, 343, 1347,
- 16589,490, 1108, 317, 317, 7389, 48482,351, 48484,317, 490, 48486,48488,5295, 48487,35460,10894,48490,14708,48491,5662, 48493,317, 317, 2117, 317, 5223,
- 48492,381, 48495,14174,16021,48497,48498,363, 48499,15658,48496,27860,5309, 5309, 351, 317, 317, 317, 384, 2272, 371, 48501,48502,317, 317, 5295, 317,
+ 511, 48476,2086, 18084,345, 2715, 1999, 48475,317, 501, 2413, 48478,48479,2024, 554, 48480,48481,362, 48483,48485,48489,48494,48500,5120, 365, 343, 1347,
+ 16589,490, 1108, 317, 317, 7389, 48482,351, 48484,317, 490, 48486,48488,5295, 48487,35460,10894,48490,14708,48491,5662, 48493,317, 317, 2117, 317, 5223,
+ 48492,381, 48495,14174,16021,48497,48498,363, 48499,15658,48496,27860,5309, 5309, 351, 317, 317, 317, 384, 2272, 371, 48501,48502,317, 317, 5295, 317,
48504,48505,48507,48509,48506,317, 2510, 17228,1526, 317, 48508,21831,397, 317, 48510,356, 9095, 317, 48512,8772, 48513,317, 317, 317, 7399, 48515,48517,
- 48518,48519,48521,48523,48526,343, 9420, 48529,317, 48530,48531,317, 317, 48536,637, 5825, 633, 2366, 14263,7073, 2177, 48516,12001,365, 30398,19287,479,
- 317, 5570, 7850, 332, 8978, 317, 48520,365, 574, 317, 14146,371, 317, 48522,362, 48524,48525,7657, 345, 317, 1481, 365, 3284, 316, 5120, 48527,8273,
+ 48518,48519,48521,48523,48526,343, 9420, 48529,317, 48530,48531,317, 317, 48536,637, 5825, 633, 2366, 14263,7073, 2177, 48516,12001,365, 30398,19287,479,
+ 317, 5570, 7850, 332, 8978, 317, 48520,365, 574, 317, 14146,371, 317, 48522,362, 48524,48525,7657, 345, 317, 1481, 365, 3284, 316, 5120, 48527,8273,
48528,32538,47923,10894,14088,317, 317, 48532,13895,48535,317, 317, 48533,9027, 410, 48534,3999, 317, 317, 21413,317, 355, 2134, 48538,1194, 48540,48542,
48548,48559,5793, 343, 48563,350, 48565,48568,48570,48571,48595,48599,48602,48603,350, 14806,48539,48541,551, 12556,2171, 19303,2317, 16024,317, 363, 48543,
- 48547,317, 48544,317, 370, 5477, 370, 48545,1347, 317, 48546,48549,2402, 48550,48551,48557,317, 317, 45496,48552,10253,14569,48553,48554,48555,48556,351,
- 339, 317, 317, 48558,48560,48561,5727, 4268, 48562,48564,345, 48566,48567,9573, 48569,419, 370, 350, 590, 48572,1020, 2108, 48575,5662, 48594,15066,317,
+ 48547,317, 48544,317, 370, 5477, 370, 48545,1347, 317, 48546,48549,2402, 48550,48551,48557,317, 317, 45496,48552,10253,14569,48553,48554,48555,48556,351,
+ 339, 317, 317, 48558,48560,48561,5727, 4268, 48562,48564,345, 48566,48567,9573, 48569,419, 370, 350, 590, 48572,1020, 2108, 48575,5662, 48594,15066,317,
317, 351, 380, 317, 48573,48574,2306, 5991, 466, 317, 1588, 317, 5761, 48576,317, 48577,48582,317, 48583,48584,48586,48589,48591,6318, 2387, 317, 48592,
- 404, 48593,565, 48578,317, 48579,7940, 48580,48581,6598, 317, 384, 48585,370, 48587,343, 48588,48590,4984, 2374, 1588, 2171, 9822, 48596,48597,48598,317,
- 10267,345, 12062,48600,48601,5943, 48604,4738, 7428, 48605,48607,48608,48610,31083,48609,48612,48613,48633,2022, 5439, 48636,2156, 48637,2058, 317, 373, 1345,
- 11388,317, 48320,15334,48614,48617,48264,7850, 48619,48631,2609, 2022, 48615,48616,48618,317, 343, 16384,2571, 48620,356, 596, 48621,48622,48624,48629,2272,
+ 404, 48593,565, 48578,317, 48579,7940, 48580,48581,6598, 317, 384, 48585,370, 48587,343, 48588,48590,4984, 2374, 1588, 2171, 9822, 48596,48597,48598,317,
+ 10267,345, 12062,48600,48601,5943, 48604,4738, 7428, 48605,48607,48608,48610,31083,48609,48612,48613,48633,2022, 5439, 48636,2156, 48637,2058, 317, 373, 1345,
+ 11388,317, 48320,15334,48614,48617,48264,7850, 48619,48631,2609, 2022, 48615,48616,48618,317, 343, 16384,2571, 48620,356, 596, 48621,48622,48624,48629,2272,
48630,317, 363, 573, 389, 48623,342, 345, 48625,48626,48627,48628,370, 370, 48632,384, 5623, 317, 317, 2211, 48634,317, 1347, 48635,404, 2063, 31345,
404, 5406, 5570, 365, 370, 2054, 48639,48641,48644,14263,48650,8099, 7525, 48652,48642,48643,48645,14263,317, 490, 490, 2381, 48647,488, 48646,48648,48649,
- 317, 48651,551, 2610, 6713, 6227, 48654,48658,48660,48661,17196,48662,36597,48655,48656,48657,48659,382, 30374,48663,48665,1044, 18152,48664,46183,48666,5896,
+ 317, 48651,551, 2610, 6713, 6227, 48654,48658,48660,48661,17196,48662,36597,48655,48656,48657,48659,382, 30374,48663,48665,1044, 18152,48664,46183,48666,5896,
6601, 48668,48669,48670,48671,48672,48673,48674,48676,48677,5628, 48691,48694,367, 48700,48707,2163, 5677, 48715,48678,48680,48681,48690,48679,13020,345, 48682,
- 48684,48685,39464,1347, 48687,5573, 3529, 26336,8806, 48683,6402, 317, 317, 1109, 5022, 48686,5570, 48688,2036, 48689,48692,48693,48695,2004, 48696,48697,2067,
+ 48684,48685,39464,1347, 48687,5573, 3529, 26336,8806, 48683,6402, 317, 317, 1109, 5022, 48686,5570, 48688,2036, 48689,48692,48693,48695,2004, 48696,48697,2067,
1347, 2035, 48698,11607,48699,48701,48704,48702,317, 48703,48705,48706,48708,2110, 356, 631, 2163, 48711,490, 48713,48709,48710,490, 48712,48714,317, 12592,
317, 317, 356, 48716,332, 6763, 23928,48719,48728,48743,48776,48784,48802,48813,48833,48841,48849,48850,48863,48883,48903,48980,48996,49014,49015,49040,49070,
- 49092,49130,49183,49201,49206,49209,390, 48720,19945,748, 1345, 48721,10832,48726,596, 10422,3504, 10877,317, 48722,466, 48723,20964,48724,48725,48727,362,
- 317, 5447, 466, 13631,48729,48730,3987, 48733,48736,48738,350, 48739,48709,48740,11404,883, 390, 3375, 317, 5325, 6382, 37775,363, 356, 48731,48732,5464,
+ 49092,49130,49183,49201,49206,49209,390, 48720,19945,748, 1345, 48721,10832,48726,596, 10422,3504, 10877,317, 48722,466, 48723,20964,48724,48725,48727,362,
+ 317, 5447, 466, 13631,48729,48730,3987, 48733,48736,48738,350, 48739,48709,48740,11404,883, 390, 3375, 317, 5325, 6382, 37775,363, 356, 48731,48732,5464,
16319,317, 48734,48735,1992, 317, 317, 16860,9869, 17992,48737,332, 605, 370, 2546, 9454, 9070, 466, 48741,48742,363, 14425,48744,2077, 370, 48751,48755,
- 48756,48768,1020, 48774,317, 48745,48747,5570, 48748,48749,317, 1347, 48746,370, 317, 21365,5201, 18588,2537, 867, 48750,5847, 351, 48752,7866, 11089,2134,
- 23206,39187,45922,48753,317, 343, 48754,332, 990, 48757,9059, 5840, 48758,48760,48762,12154,48763,45287,48765,385, 3075, 48766,48767,1060, 6089, 350, 370,
+ 48756,48768,1020, 48774,317, 48745,48747,5570, 48748,48749,317, 1347, 48746,370, 317, 21365,5201, 18588,2537, 867, 48750,5847, 351, 48752,7866, 11089,2134,
+ 23206,39187,45922,48753,317, 343, 48754,332, 990, 48757,9059, 5840, 48758,48760,48762,12154,48763,45287,48765,385, 3075, 48766,48767,1060, 6089, 350, 370,
370, 5255, 33343,350, 317, 48759,11962,317, 5149, 362, 11242,317, 317, 1999, 48761,351, 48764,16785,427, 7368, 12154,2022, 6190, 332, 48769,574, 48773,
317, 48770,48771,48772,21988,351, 317, 490, 3677, 48775,2322, 404, 48777,48779,48781,317, 48782,48783,2280, 2391, 317, 867, 7095, 317, 48778,48780,10877,
317, 1962, 1347, 317, 317, 2708, 345, 6179, 48785,48786,48788,13954,48792,12934,48793,48795,48796,48798,2758, 501, 48799,490, 351, 2310, 317, 48787,48789,
@@ -9685,27 +9680,27 @@ static const unsigned int ChildLocs[185261] =
48838,343, 317, 48840,48835,5663, 11196,15221,396, 13338,48839,343, 5662, 317, 48842,317, 490, 332, 317, 48844,48846,48847,13954,48843,48845,317, 48848,
9298, 590, 8083, 16865,371, 48851,48852,48853,48857,48858,15551,48859,433, 489, 317, 36102,2146, 317, 437, 317, 48854,48855,48856,45499,590, 317, 48860,
48861,48862,48864,317, 48867,48868,48870,48872,362, 48879,48880,2503, 390, 385, 317, 48865,48866,949, 1251, 2503, 48869,48871,48873,6036, 48874,48877,40743,
- 356, 7635, 317, 317, 382, 48875,317, 48876,48878,343, 48881,382, 339, 316, 380, 48882,48884,48887,48893,317, 48894,48896,48898,48901,48902,490, 371,
- 332, 7403, 48885,48886,317, 317, 18978,2022, 48888,48892,11636,9702, 48889,48890,48891,317, 317, 317, 6179, 365, 317, 317, 48895,48897,48899,5428, 317,
- 48900,343, 48904,48905,48907,48912,48920,48976,2022, 48977,363, 48979,1108, 332, 48906,48908,33717,350, 48909,48911,48910,637, 1300, 5463, 633, 10641,2510,
+ 356, 7635, 317, 317, 382, 48875,317, 48876,48878,343, 48881,382, 339, 316, 380, 48882,48884,48887,48893,317, 48894,48896,48898,48901,48902,490, 371,
+ 332, 7403, 48885,48886,317, 317, 18978,2022, 48888,48892,11636,9702, 48889,48890,48891,317, 317, 317, 6179, 365, 317, 317, 48895,48897,48899,5428, 317,
+ 48900,343, 48904,48905,48907,48912,48920,48976,2022, 48977,363, 48979,1108, 332, 48906,48908,33717,350, 48909,48911,48910,637, 1300, 5463, 633, 10641,2510,
317, 48913,48918,48919,13650,317, 48914,48915,24398,2571, 317, 48916,48917,2060, 565, 48921,48923,48928,48931,48932,48936,48939,48943,48948,2276, 48949,48952,
- 48956,48957,1588, 48958,48959,48967,48969,5573, 48971,48972,7698, 1588, 350, 48922,428, 48924,2272, 48925,48927,48926,38861,317, 553, 7368, 48929,351, 381,
- 48930,363, 384, 466, 317, 48933,48935,381, 5459, 5897, 48934,16129,6081, 3079, 48937,6598, 551, 48938,48940,48941,7142, 48942,11918,350, 5055, 7506, 317,
+ 48956,48957,1588, 48958,48959,48967,48969,5573, 48971,48972,7698, 1588, 350, 48922,428, 48924,2272, 48925,48927,48926,38861,317, 553, 7368, 48929,351, 381,
+ 48930,363, 384, 466, 317, 48933,48935,381, 5459, 5897, 48934,16129,6081, 3079, 48937,6598, 551, 48938,48940,48941,7142, 48942,11918,350, 5055, 7506, 317,
8418, 48944,6993, 596, 390, 48945,317, 8357, 345, 48946,48947,1347, 21728,317, 462, 10580,48950,48951,11884,345, 317, 343, 2601, 363, 48953,1588, 48955,
- 48954,16129,393, 11064,343, 5241, 5626, 7368, 7618, 48960,48963,16136,48961,48962,317, 48964,48965,396, 510, 48966,3361, 2758, 48968,3999, 48970,317, 3361,
- 5037, 16458,428, 545, 10059,363, 48973,48974,48975,7514, 317, 362, 317, 48978,343, 317, 6195, 4738, 1230, 370, 371, 317, 48981,2058, 317, 48985,317,
- 48988,48989,5395, 48990,490, 48992,48994,390, 48982,317, 48983,48984,48986,48722,48987,9479, 2161, 1060, 317, 7698, 2066, 4477, 6332, 317, 32083,317, 363,
+ 48954,16129,393, 11064,343, 5241, 5626, 7368, 7618, 48960,48963,16136,48961,48962,317, 48964,48965,396, 510, 48966,3361, 2758, 48968,3999, 48970,317, 3361,
+ 5037, 16458,428, 545, 10059,363, 48973,48974,48975,7514, 317, 362, 317, 48978,343, 317, 6195, 4738, 1230, 370, 371, 317, 48981,2058, 317, 48985,317,
+ 48988,48989,5395, 48990,490, 48992,48994,390, 48982,317, 48983,48984,48986,48722,48987,9479, 2161, 1060, 317, 7698, 2066, 4477, 6332, 317, 32083,317, 363,
5991, 8137, 490, 317, 6036, 317, 2156, 317, 317, 5991, 48991,466, 317, 317, 48993,15058,7672, 1243, 370, 5363, 317, 317, 48995,466, 317, 48997,48999,
49001,49004,49006,49009,49010,49012,49013,343, 48998,1430, 490, 317, 317, 362, 49000,7785, 317, 1160, 317, 2035, 29979,49002,6240, 2322, 49003,49005,49007,
- 49008,5991, 380, 49011,2171, 343, 14188,49016,350, 40281,49018,49021,343, 49031,13638,20638,16110,21269,15387,49036,49038,49039,17782,317, 317, 317, 6318,
- 558, 49017,317, 343, 24059,6917, 5321, 49019,27994,370, 49020,317, 9140, 545, 49022,49023,4984, 317, 49024,362, 49025,3967, 49030,317, 365, 365, 317,
- 5439, 317, 1358, 317, 5300, 49026,49028,317, 2272, 49027,21554,49029,7142, 1160, 317, 317, 6565, 317, 28438,371, 49032,3076, 49033,49034,49035,4984, 1078,
+ 49008,5991, 380, 49011,2171, 343, 14188,49016,350, 40281,49018,49021,343, 49031,13638,20638,16110,21269,15387,49036,49038,49039,17782,317, 317, 317, 6318,
+ 558, 49017,317, 343, 24059,6917, 5321, 49019,27994,370, 49020,317, 9140, 545, 49022,49023,4984, 317, 49024,362, 49025,3967, 49030,317, 365, 365, 317,
+ 5439, 317, 1358, 317, 5300, 49026,49028,317, 2272, 49027,21554,49029,7142, 1160, 317, 317, 6565, 317, 28438,371, 49032,3076, 49033,49034,49035,4984, 1078,
490, 317, 1108, 490, 317, 317, 317, 19390,20276,49037,317, 2272, 1347, 343, 390, 363, 466, 380, 343, 363, 317, 317, 49041,1187, 49044,49047,49049,
- 49051,49052,49054,10487,49055,49056,49059,14561,5428, 5611, 49042,5238, 2537, 49043,317, 49045,49046,317, 5428, 317, 343, 2024, 49048,317, 390, 317, 6228,
- 317, 5087, 317, 49050,2110, 7698, 7785, 343, 35158,49053,332, 2222, 3284, 317, 20909,381, 2381, 317, 490, 317, 14080,49057,2571, 362, 317, 49058,382,
+ 49051,49052,49054,10487,49055,49056,49059,14561,5428, 5611, 49042,5238, 2537, 49043,317, 49045,49046,317, 5428, 317, 343, 2024, 49048,317, 390, 317, 6228,
+ 317, 5087, 317, 49050,2110, 7698, 7785, 343, 35158,49053,332, 2222, 3284, 317, 20909,381, 2381, 317, 490, 317, 14080,49057,2571, 362, 317, 49058,382,
345, 49060,2119, 11245,7073, 14338,49066,7178, 49067,49061,49062,49063,49064,49065,8400, 390, 49068,49069,4984, 49071,49072,49074,49082,49083,49087,49088,49090,
10185,2536, 49073,49075,351, 5419, 49078,49079,49081,351, 350, 49076,49077,49080,1060, 990, 2219, 49084,7368, 49085,49086,317, 12154,363, 27334,317, 49089,
- 27614,1358, 4984, 317, 49091,924, 49093,2236, 49094,49095,49102,49103,49108,49114,332, 49116,1358, 965, 49119,49123,49124,49125,49128,317, 6318, 332, 437,
+ 27614,1358, 4984, 317, 49091,924, 49093,2236, 49094,49095,49102,49103,49108,49114,332, 49116,1358, 965, 49119,49123,49124,49125,49128,317, 6318, 332, 437,
1347, 49096,363, 370, 10854,2571, 49099,49100,317, 47392,49097,381, 1194, 49098,3505, 35981,49101,2381, 317, 489, 1358, 49104,448, 7063, 49105,1020, 45287,
49106,49107,404, 6318, 6036, 363, 370, 7368, 317, 1160, 317, 49109,6228, 317, 49110,7183, 36617,49111,49113,49112,49115,19414,489, 317, 2572, 49117,49118,
1347, 596, 49120,49122,596, 317, 317, 867, 49121,7865, 317, 18657,14337,11921,317, 38201,343, 1020, 49126,43452,9832, 5241, 49127,356, 317, 5761, 49129,
@@ -9713,45 +9708,45 @@ static const unsigned int ChildLocs[185261] =
49145,49146,49150,343, 49151,49152,49153,49154,49156,49157,49162,49164,2272, 49166,49167,49171,49174,6996, 49176,49178,317, 317, 7155, 317, 1267, 317, 49136,
317, 317, 317, 317, 633, 1018, 681, 47681,343, 317, 589, 317, 1897, 49140,49141,49142,49143,16278,7590, 6354, 2631, 9649, 381, 10609,317, 384, 49147,
49148,49149,539, 1579, 2060, 27498,35859,363, 574, 351, 2035, 39003,49155,317, 49158,476, 49159,49160,49161,1160, 343, 370, 356, 22783,343, 17040,35295,
- 49163,7055, 49165,38558,479, 48208,6228, 317, 633, 317, 49168,7672, 49169,49170,362, 317, 317, 317, 1160, 390, 990, 28241,317, 1107, 49172,384, 343,
- 466, 49173,317, 447, 16865,589, 5126, 49175,5891, 5295, 345, 317, 49177,10592,4965, 317, 49180,49182,22641,17588,49181,381, 317, 6089, 370, 2063, 317,
- 490, 2272, 317, 49184,49185,49186,49189,8948, 49193,2022, 49194,362, 49195,49197,317, 49199,317, 351, 370, 2402, 345, 22995,49187,5841, 317, 49188,317,
- 380, 48801,49190,49191,2406, 356, 466, 9590, 317, 317, 49192,1108, 1992, 317, 1108, 11229,351, 35119,317, 596, 370, 49196,523, 370, 49198,317, 350,
+ 49163,7055, 49165,38558,479, 48208,6228, 317, 633, 317, 49168,7672, 49169,49170,362, 317, 317, 317, 1160, 390, 990, 28241,317, 1107, 49172,384, 343,
+ 466, 49173,317, 447, 16865,589, 5126, 49175,5891, 5295, 345, 317, 49177,10592,4965, 317, 49180,49182,22641,17588,49181,381, 317, 6089, 370, 2063, 317,
+ 490, 2272, 317, 49184,49185,49186,49189,8948, 49193,2022, 49194,362, 49195,49197,317, 49199,317, 351, 370, 2402, 345, 22995,49187,5841, 317, 49188,317,
+ 380, 48801,49190,49191,2406, 356, 466, 9590, 317, 317, 49192,1108, 1992, 317, 1108, 11229,351, 35119,317, 596, 370, 49196,523, 370, 49198,317, 350,
317, 2171, 49200,21274,16164,2022, 49202,49203,49204,363, 49205,49207,19283,343, 317, 5991, 5112, 2381, 381, 371, 49208,6514, 370, 2584, 5201, 49210,49211,
49212,2279, 49213,365, 5611, 332, 332, 490, 590, 9067, 343, 317, 351, 42911,332, 317, 5836, 490, 49215,490, 49216,49217,49218,49219,381, 49221,49224,
49229,345, 49230,351, 49222,49223,49225,49226,49227,49228,317, 49232,49235,49236,49240,25825,343, 49241,49233,49234,11073,607, 49237,34691,49238,49239,49242,
7477, 49243,949, 1193, 396, 49244,49256,49276,49325,49346,49370,49384,49391,49393,49398,49400,49409,49414,49430,49452,49457,49466,49468,49473,49484,317, 49501,
5624, 49508,49519,49521,596, 965, 49245,49246,317, 2280, 317, 317, 2073, 501, 317, 490, 49247,5891, 49253,49248,9289, 49249,1230, 49250,49251,49252,49254,
- 49255,49257,49260,49262,49265,343, 1020, 362, 49267,49270,49274,317, 39985,363, 11451,49258,370, 49259,49261,384, 317, 553, 317, 15330,371, 49263,317,
+ 49255,49257,49260,49262,49265,343, 1020, 362, 49267,49270,49274,317, 39985,363, 11451,49258,370, 49259,49261,384, 317, 553, 317, 15330,371, 49263,317,
10086,317, 49264,317, 49266,45719,11147,5619, 490, 49268,317, 317, 49269,5570, 49271,49272,49273,4268, 30478,49275,1108, 49277,49281,49284,49287,49294,49305,
49317,49318,49320,49321,49323,9027, 49278,49280,5517, 49279,332, 1266, 14689,33417,317, 501, 317, 49282,15051,4591, 49283,2211, 7672, 2715, 351, 317, 49285,
- 49286,317, 49288,49289,9427, 7428, 49292,49290,2210, 49291,2715, 49293,49295,4925, 49296,49297,49298,317, 49301,49303,49304,317, 343, 345, 317, 15307,317,
+ 49286,317, 49288,49289,9427, 7428, 49292,49290,2210, 49291,2715, 49293,49295,4925, 49296,49297,49298,317, 49301,49303,49304,317, 343, 345, 317, 15307,317,
1329, 317, 49299,49300,317, 317, 49302,49306,49307,14708,49310,362, 46173,605, 10626,49312,49313,317, 317, 49308,317, 381, 317, 49309,7392, 428, 49311,
- 370, 49290,4738, 427, 14277,6996, 317, 317, 317, 1353, 3469, 317, 1353, 8301, 49314,35809,14501,2272, 49316,317, 381, 49315,343, 7942, 4788, 49319,5241,
- 5411, 5241, 1160, 2631, 49322,590, 371, 49324,11347,49326,49327,49328,49331,49332,49333,27154,49335,49336,49337,553, 345, 49340,49342,317, 553, 6917, 5662,
- 49329,49330,10081,317, 5309, 362, 574, 351, 2063, 49334,317, 5538, 7149, 427, 605, 427, 19605,2290, 49338,49339,7668, 365, 49341,13221,317, 49343,371,
+ 370, 49290,4738, 427, 14277,6996, 317, 317, 317, 1353, 3469, 317, 1353, 8301, 49314,35809,14501,2272, 49316,317, 381, 49315,343, 7942, 4788, 49319,5241,
+ 5411, 5241, 1160, 2631, 49322,590, 371, 49324,11347,49326,49327,49328,49331,49332,49333,27154,49335,49336,49337,553, 345, 49340,49342,317, 553, 6917, 5662,
+ 49329,49330,10081,317, 5309, 362, 574, 351, 2063, 49334,317, 5538, 7149, 427, 605, 427, 19605,2290, 49338,49339,7668, 365, 49341,13221,317, 49343,371,
49344,317, 49345,7911, 31976,2026, 49347,49350,49356,332, 49358,11249,49360,49361,553, 49362,49363,49365,49367,5570, 49348,343, 365, 49349,49351,49353,49352,
- 49354,466, 49355,5626, 16187,2610, 49357,317, 343, 553, 553, 362, 1347, 49359,466, 15758,1347, 437, 49364,365, 317, 49366,350, 5793, 49368,49369,7063,
+ 49354,466, 49355,5626, 16187,2610, 49357,317, 343, 553, 553, 362, 1347, 49359,466, 15758,1347, 437, 49364,365, 317, 49366,350, 5793, 49368,49369,7063,
15908,1020, 2022, 49371,317, 49372,49373,49375,49383,49374,49376,49377,49378,49379,49380,49381,49382,49385,49387,4965, 49388,317, 49389,385, 49390,317, 49386,
- 332, 5134, 990, 351, 466, 19548,5662, 14999,49392,466, 9938, 317, 371, 11173,5159, 49394,49395,49397,1109, 317, 15772,317, 317, 317, 49396,7403, 317,
+ 332, 5134, 990, 351, 466, 19548,5662, 14999,49392,466, 9938, 317, 371, 11173,5159, 49394,49395,49397,1109, 317, 15772,317, 317, 317, 49396,7403, 317,
3648, 4982, 49399,371, 357, 49401,49405,49407,362, 49408,490, 20592,14805,49402,419, 5295, 6228, 25872,49403,19913,49404,317, 5159, 1347, 317, 49406,49315,
35321,317, 1347, 380, 11198,1347, 49410,339, 49411,49413,317, 5809, 49412,356, 317, 396, 382, 317, 49415,49417,36329,49422,2022, 49426,49427,3243, 49428,
- 965, 49416,317, 49418,49419,2211, 2022, 49421,317, 49420,317, 466, 5960, 10149,4980, 550, 317, 7225, 317, 12277,49423,317, 49424,13995,49425,514, 5201,
- 365, 5459, 345, 9068, 12598,317, 317, 351, 1160, 49429,2073, 49431,49432,49434,49443,2024, 49446,49448,350, 49449,49450,49451,317, 370, 317, 6996, 317,
- 5748, 7582, 49433,7582, 3599, 5665, 466, 11242,4789, 49435,49436,49437,49439,8223, 29210,38178,14573,49440,49441,543, 317, 4949, 355, 4949, 4949, 317, 370,
- 363, 11114,380, 332, 317, 49438,2024, 49442,590, 7911, 9938, 49444,345, 49445,5037, 317, 8136, 388, 14223,501, 49447,10626,2024, 18840,20351,490, 370,
+ 965, 49416,317, 49418,49419,2211, 2022, 49421,317, 49420,317, 466, 5960, 10149,4980, 550, 317, 7225, 317, 12277,49423,317, 49424,13995,49425,514, 5201,
+ 365, 5459, 345, 9068, 12598,317, 317, 351, 1160, 49429,2073, 49431,49432,49434,49443,2024, 49446,49448,350, 49449,49450,49451,317, 370, 317, 6996, 317,
+ 5748, 7582, 49433,7582, 3599, 5665, 466, 11242,4789, 49435,49436,49437,49439,8223, 29210,38178,14573,49440,49441,543, 317, 4949, 355, 4949, 4949, 317, 370,
+ 363, 11114,380, 332, 317, 49438,2024, 49442,590, 7911, 9938, 49444,345, 49445,5037, 317, 8136, 388, 14223,501, 49447,10626,2024, 18840,20351,490, 370,
466, 363, 2024, 9818, 49453,490, 49456,332, 2357, 49454,49455,49458,49460,350, 49462,49464,49465,9422, 20246,15618,49459,14492,49461,317, 2211, 363, 49463,
1109, 7385, 317, 317, 345, 49467,8772, 363, 1345, 49469,49470,362, 49471,16802,49472,370, 1108, 2022, 1358, 317, 2222, 2581, 49474,370, 49475,317, 49478,
- 49479,44722,49481,23015,49482,490, 343, 3688, 5406, 49476,5727, 49477,363, 7698, 351, 5537, 12349,49480,5896, 351, 379, 35634,49483,317, 317, 332, 5091,
- 49485,5838, 501, 49486,13378,49490,362, 49491,16123,49494,49495,1020, 3648, 49500,317, 11108,317, 317, 49487,49489,351, 317, 49488,1160, 49492,49493,419,
+ 49479,44722,49481,23015,49482,490, 343, 3688, 5406, 49476,5727, 49477,363, 7698, 351, 5537, 12349,49480,5896, 351, 379, 35634,49483,317, 317, 332, 5091,
+ 49485,5838, 501, 49486,13378,49490,362, 49491,16123,49494,49495,1020, 3648, 49500,317, 11108,317, 317, 49487,49489,351, 317, 49488,1160, 49492,49493,419,
1345, 49496,16825,363, 49499,317, 49497,49498,362, 545, 49502,49503,49505,1444, 49506,4041, 1428, 633, 28822,8125, 49504,382, 7098, 19979,49507,619, 49509,
- 2171, 12696,404, 49516,49510,9567, 49511,49512,4949, 49513,49514,49515,49517,49518,317, 2369, 345, 4591, 7062, 49520,49522,49523,49524,49525,363, 49526,365,
+ 2171, 12696,404, 49516,49510,9567, 49511,49512,4949, 49513,49514,49515,49517,49518,317, 2369, 345, 4591, 7062, 49520,49522,49523,49524,49525,363, 49526,365,
350, 5241, 317, 380, 6318, 363, 3283, 351, 350, 5836, 49528,49532,49533,49534,390, 1044, 49529,49530,49531,1160, 1193, 49535,49536,2163, 363, 49538,17206,
- 49540,365, 49541,49543,49546,49549,49555,49559,2024, 490, 3999, 49561,8955, 49563,49571,49582,49583,49586,49595,49615,2188, 4564, 49544,5634, 49545,5898, 1998,
- 49547,4952, 1453, 49548,49550,8207, 36820,5217, 49554,490, 18298,16970,49551,49552,49553,1345, 1109, 49556,49557,2022, 363, 1453, 4564, 317, 49558,7785, 380,
- 49560,317, 427, 49562,3079, 10907,49564,317, 5537, 363, 49566,49565,349, 49567,343, 2094, 49568,49569,49570,356, 6409, 49572,49573,49575,49578,49579,317,
+ 49540,365, 49541,49543,49546,49549,49555,49559,2024, 490, 3999, 49561,8955, 49563,49571,49582,49583,49586,49595,49615,2188, 4564, 49544,5634, 49545,5898, 1998,
+ 49547,4952, 1453, 49548,49550,8207, 36820,5217, 49554,490, 18298,16970,49551,49552,49553,1345, 1109, 49556,49557,2022, 363, 1453, 4564, 317, 49558,7785, 380,
+ 49560,317, 427, 49562,3079, 10907,49564,317, 5537, 363, 49566,49565,349, 49567,343, 2094, 49568,49569,49570,356, 6409, 49572,49573,49575,49578,49579,317,
2022, 49580,2117, 49581,404, 427, 6089, 317, 551, 370, 317, 317, 4943, 49574,317, 551, 7911, 356, 10877,317, 49576,4984, 13023,490, 363, 49577,11533,
- 490, 1347, 5792, 370, 317, 8223, 4976, 317, 8772, 6089, 1358, 317, 49584,49585,965, 5701, 5249, 317, 49587,49588,350, 49589,343, 49592,370, 350, 471,
+ 490, 1347, 5792, 370, 317, 8223, 4976, 317, 8772, 6089, 1358, 317, 49584,49585,965, 5701, 5249, 317, 49587,49588,350, 49589,343, 49592,370, 350, 471,
317, 566, 30214,3284, 8852, 17616,343, 49590,49591,317, 317, 49593,49594,380, 390, 49596,6620, 49605,49613,339, 343, 49614,49597,49598,49599,49600,49601,
49602,49603,49604,49606,49607,49608,49609,49610,49611,49612,427, 9779, 18324,343, 363, 8281, 48607,49617,49620,49625,49618,49619,49621,49622,49623,49624,49626,
49627,49628,49634,49638,35556,49644,49653,34218,49665,49668,49677,49683,165, 51433,173, 51988,175, 52717,52722,178, 53544,53553,53557,53568,53583,183, 54366,
@@ -9760,386 +9755,386 @@ static const unsigned int ChildLocs[185261] =
49656,49657,317, 49660,49661,49662,49664,49666,49667,49669,49672,49670,49671,49673,49674,49675,49676,49678,49681,49679,49680,49682,49684,49685,49686,49688,49694,
49710,166, 49899,49966,49983,167, 50082,50138,50204,50227,168, 50403,169, 50657,50661,50685,170, 171, 172, 51266,51309,51321,51323,51351,51398,49687,35779,
49689,49693,49690,49691,49692,7785, 5120, 317, 345, 49695,49696,49697,49698,49704,2134, 1044, 501, 317, 365, 390, 363, 7312, 343, 437, 49699,49700,49701,
- 49702,49703,49705,490, 49706,49707,49708,49709,49711,49712,49713,49714,343, 6318, 49716,49717,317, 8083, 317, 10430,317, 317, 49715,317, 18995,317, 2078,
- 1230, 1358, 6228, 49718,49734,49737,49754,49769,49778,49783,49789,49810,49819,49839,49846,49851,49857,49859,49863,49867,49886,49888,49890,49894,49895,1347, 8099,
- 49719,5611, 49720,558, 49723,49724,49726,317, 49728,10376,49729,49732,49733,5459, 1347, 362, 49721,317, 9027, 49722,9609, 9609, 49725,490, 5325, 49727,2077,
- 393, 5238, 38370,9214, 22351,49730,49731,365, 3079, 1444, 2022, 49735,9696, 49736,11786,2261, 49738,49742,2211, 49746,49749,49753,49739,8643, 49740,2021, 1078,
+ 49702,49703,49705,490, 49706,49707,49708,49709,49711,49712,49713,49714,343, 6318, 49716,49717,317, 8083, 317, 10430,317, 317, 49715,317, 18995,317, 2078,
+ 1230, 1358, 6228, 49718,49734,49737,49754,49769,49778,49783,49789,49810,49819,49839,49846,49851,49857,49859,49863,49867,49886,49888,49890,49894,49895,1347, 8099,
+ 49719,5611, 49720,558, 49723,49724,49726,317, 49728,10376,49729,49732,49733,5459, 1347, 362, 49721,317, 9027, 49722,9609, 9609, 49725,490, 5325, 49727,2077,
+ 393, 5238, 38370,9214, 22351,49730,49731,365, 3079, 1444, 2022, 49735,9696, 49736,11786,2261, 49738,49742,2211, 49746,49749,49753,49739,8643, 49740,2021, 1078,
37821,9427, 2272, 49741,351, 370, 2022, 11786,49743,49744,7916, 49745,332, 5687, 6402, 49747,49748,7622, 12590,380, 317, 49750,49752,49751,3987, 45212,41478,
- 49755,49756,49758,49760,49767,11874,2203, 49757,49759,380, 317, 49761,49763,3987, 49762,428, 3987, 6674, 390, 5030, 49764,49765,49766,49768,49770,49772,317,
- 49775,317, 49776,317, 10149,14410,49771,317, 49773,49774,23936,3284, 49777,49779,5084, 49780,49781,49782,49784,25768,49788,2609, 541, 49785,49786,49787,317,
+ 49755,49756,49758,49760,49767,11874,2203, 49757,49759,380, 317, 49761,49763,3987, 49762,428, 3987, 6674, 390, 5030, 49764,49765,49766,49768,49770,49772,317,
+ 49775,317, 49776,317, 10149,14410,49771,317, 49773,49774,23936,3284, 49777,49779,5084, 49780,49781,49782,49784,25768,49788,2609, 541, 49785,49786,49787,317,
49790,49792,49793,14991,15581,883, 49805,9425, 49806,49807,971, 332, 363, 317, 49791,350, 317, 317, 8083, 9337, 2317, 2156, 317, 49794,490, 49797,49801,
3726, 317, 49795,49796,49798,49799,49800,49802,49803,49804,2317, 317, 317, 37493,370, 317, 490, 382, 4268, 1325, 362, 1358, 350, 5836, 49808,49809,49811,
49812,49814,49817,49818,12199,317, 317, 5032, 1100, 49813,317, 317, 10316,8296, 332, 317, 49815,34487,49816,16503,1588, 343, 971, 343, 621, 49820,49821,
- 49824,49830,49833,49835,12053,49836,5809, 46954,380, 362, 1358, 49822,49823,49825,11662,363, 49826,49827,49829,38765,317, 490, 501, 13753,49828,380, 317,
- 348, 317, 13908,32352,20918,49831,49832,350, 317, 1230, 404, 317, 10056,49834,363, 17870,317, 317, 5022, 370, 530, 370, 49837,49838,49840,49844,363,
- 49841,362, 6318, 343, 501, 49842,317, 49841,49843,1020, 49845,389, 7622, 12349,6355, 49847,49848,49850,404, 6387, 349, 49849,49849,7737, 49852,49855,2117,
- 317, 49853,351, 49854,21767,380, 49856,1020, 490, 48296,7711, 49858,49860,49861,3361, 49862,49864,49865,501, 49866,343, 49868,6847, 49869,427, 2074, 2074,
- 332, 49870,49873,49875,49878,49882,317, 49883,49885,5836, 49871,4591, 49872,49874,49876,49877,49879,49880,49881,15754,14013,49884,9067, 5687, 9824, 25279,2058,
+ 49824,49830,49833,49835,12053,49836,5809, 46954,380, 362, 1358, 49822,49823,49825,11662,363, 49826,49827,49829,38765,317, 490, 501, 13753,49828,380, 317,
+ 348, 317, 13908,32352,20918,49831,49832,350, 317, 1230, 404, 317, 10056,49834,363, 17870,317, 317, 5022, 370, 530, 370, 49837,49838,49840,49844,363,
+ 49841,362, 6318, 343, 501, 49842,317, 49841,49843,1020, 49845,389, 7622, 12349,6355, 49847,49848,49850,404, 6387, 349, 49849,49849,7737, 49852,49855,2117,
+ 317, 49853,351, 49854,21767,380, 49856,1020, 490, 48296,7711, 49858,49860,49861,3361, 49862,49864,49865,501, 49866,343, 49868,6847, 49869,427, 2074, 2074,
+ 332, 49870,49873,49875,49878,49882,317, 49883,49885,5836, 49871,4591, 49872,49874,49876,49877,49879,49880,49881,15754,14013,49884,9067, 5687, 9824, 25279,2058,
49887,49889,1230, 49891,2334, 49893,49892,317, 5412, 7916, 362, 2360, 49896,2634, 49897,49898,49900,543, 49918,49919,49928,343, 49935,49943,12598,49948,49950,
- 49952,49953,49955,5300, 49962,49963,1871, 35779,49965,49901,49902,49909,49912,11717,49913,49917,13816,49903,317, 49904,49905,565, 49906,317, 49907,49908,928,
- 9504, 49910,363, 49911,49914,49915,49916,45136,501, 605, 49920,49922,49923,49924,49925,49927,316, 1160, 49921,382, 9214, 2211, 2184, 4984, 1160, 1992, 404,
- 317, 5962, 49926,317, 317, 317, 5943, 38935,16672,49929,49931,49933,49934,317, 3987, 2271, 49930,6318, 6318, 6318, 343, 317, 49932,1347, 317, 2086, 317,
- 49936,49938,49939,49941,6916, 49937,4984, 317, 6763, 1444, 393, 5173, 5120, 49940,49942,317, 317, 362, 380, 49944,49945,1108, 4925, 317, 350, 2035, 317,
+ 49952,49953,49955,5300, 49962,49963,1871, 35779,49965,49901,49902,49909,49912,11717,49913,49917,13816,49903,317, 49904,49905,565, 49906,317, 49907,49908,928,
+ 9504, 49910,363, 49911,49914,49915,49916,45136,501, 605, 49920,49922,49923,49924,49925,49927,316, 1160, 49921,382, 9214, 2211, 2184, 4984, 1160, 1992, 404,
+ 317, 5962, 49926,317, 317, 317, 5943, 38935,16672,49929,49931,49933,49934,317, 3987, 2271, 49930,6318, 6318, 6318, 343, 317, 49932,1347, 317, 2086, 317,
+ 49936,49938,49939,49941,6916, 49937,4984, 317, 6763, 1444, 393, 5173, 5120, 49940,49942,317, 317, 362, 380, 49944,49945,1108, 4925, 317, 350, 2035, 317,
49946,49947,317, 317, 317, 317, 317, 317, 5037, 49949,367, 384, 466, 4984, 49951,363, 553, 1160, 4810, 24130,384, 7785, 396, 317, 490, 343, 49954,
- 1358, 317, 317, 317, 490, 7266, 49956,4984, 49958,49959,49960,317, 332, 49957,317, 332, 16941,490, 317, 18923,317, 317, 5570, 49961,9214, 49964,370,
- 49967,49968,49971,49974,49975,49977,49980,343, 5557, 317, 317, 342, 351, 343, 49969,317, 49970,49972,49973,6551, 2134, 4280, 4591, 350, 317, 635, 371,
+ 1358, 317, 317, 317, 490, 7266, 49956,4984, 49958,49959,49960,317, 332, 49957,317, 332, 16941,490, 317, 18923,317, 317, 5570, 49961,9214, 49964,370,
+ 49967,49968,49971,49974,49975,49977,49980,343, 5557, 317, 317, 342, 351, 343, 49969,317, 49970,49972,49973,6551, 2134, 4280, 4591, 350, 317, 635, 371,
49976,317, 317, 49978,345, 382, 345, 49979,49981,49982,8914, 15968,49984,49987,348, 490, 490, 49985,49986,7385, 1160, 317, 15082,49988,50003,50004,50009,
- 50014,50018,50022,50033,50041,50043,50065,50068,50071,50073,50076,50081,13914,49989,490, 49990,49996,49997,49999,317, 50000,363, 9422, 490, 365, 49991,317,
- 49992,49995,3284, 317, 49993,363, 49994,49998,332, 50001,50002,2356, 317, 50005,50008,317, 50006,317, 50007,7911, 43692,50010,317, 50011,7523, 2012, 317,
- 10820,317, 363, 50012,6831, 50013,12487,1999, 50015,4268, 317, 317, 317, 50016,50017,12943,317, 637, 43754,317, 633, 490, 317, 50019,50021,50020,367,
- 367, 50023,317, 14170,317, 18232,50026,50027,381, 345, 1266, 317, 320, 633, 317, 50024,2631, 5419, 1347, 362, 7916, 317, 50025,6228, 370, 2001, 381,
+ 50014,50018,50022,50033,50041,50043,50065,50068,50071,50073,50076,50081,13914,49989,490, 49990,49996,49997,49999,317, 50000,363, 9422, 490, 365, 49991,317,
+ 49992,49995,3284, 317, 49993,363, 49994,49998,332, 50001,50002,2356, 317, 50005,50008,317, 50006,317, 50007,7911, 43692,50010,317, 50011,7523, 2012, 317,
+ 10820,317, 363, 50012,6831, 50013,12487,1999, 50015,4268, 317, 317, 317, 50016,50017,12943,317, 637, 43754,317, 633, 490, 317, 50019,50021,50020,367,
+ 367, 50023,317, 14170,317, 18232,50026,50027,381, 345, 1266, 317, 320, 633, 317, 50024,2631, 5419, 1347, 362, 7916, 317, 50025,6228, 370, 2001, 381,
50028,50029,50031,50030,50032,370, 343, 2156, 50034,50036,50037,50040,348, 50035,490, 50038,50039,2142, 10380,5439, 343, 50042,50044,50047,50053,50061,50063,
317, 380, 50045,5634, 3599, 50046,317, 5120, 1347, 50048,50050,50049,317, 50051,50052,404, 317, 5120, 7223, 427, 343, 7888, 5449, 14569,317, 317, 50054,
- 5120, 50058,50055,2184, 50056,356, 965, 50057,21047,317, 345, 50059,5752, 50060,50062,1358, 7383, 1160, 50064,317, 363, 6046, 539, 2353, 317, 1526, 1358,
- 7000, 7149, 317, 50066,362, 406, 50067,317, 406, 6402, 50069,50070,365, 6763, 50072,8772, 7916, 566, 50074,370, 501, 50075,317, 22578,50077,490, 317,
- 50078,343, 50079,50080,1588, 2063, 50083,50117,50118,44440,50121,5623, 2131, 50123,50124,50127,50128,50132,50136,2533, 50084,50091,50093,362, 13457,50094,317,
- 50099,50100,50103,50109,50111,50112,1230, 9702, 50085,50088,351, 317, 50086,50087,50089,50090,50092,50095,370, 490, 50098,38220,317, 50096,50097,17547,317,
+ 5120, 50058,50055,2184, 50056,356, 965, 50057,21047,317, 345, 50059,5752, 50060,50062,1358, 7383, 1160, 50064,317, 363, 6046, 539, 2353, 317, 1526, 1358,
+ 7000, 7149, 317, 50066,362, 406, 50067,317, 406, 6402, 50069,50070,365, 6763, 50072,8772, 7916, 566, 50074,370, 501, 50075,317, 22578,50077,490, 317,
+ 50078,343, 50079,50080,1588, 2063, 50083,50117,50118,44440,50121,5623, 2131, 50123,50124,50127,50128,50132,50136,2533, 50084,50091,50093,362, 13457,50094,317,
+ 50099,50100,50103,50109,50111,50112,1230, 9702, 50085,50088,351, 317, 50086,50087,50089,50090,50092,50095,370, 490, 50098,38220,317, 50096,50097,17547,317,
15093,2110, 370, 490, 370, 317, 317, 15772,50101,50102,50104,317, 6851, 2022, 2078, 50105,7384, 50106,50107,2110, 50108,50110,5022, 490, 50113,50114,50115,
1109, 50116,490, 12226,10072,50119,1548, 50120,317, 536, 490, 317, 50122,317, 7060, 12142,317, 343, 362, 363, 427, 50125,50126,317, 2589, 664, 50129,
50130,50131,10538,15330,370, 50133,50134,50135,317, 490, 50137,9064, 1230, 317, 18387,4591, 50139,50146,6598, 50147,50148,50152,50165,50168,50188,50190,50191,
50200,2568, 50202,50203,4984, 50140,50142,50143,317, 50141,317, 1087, 11089,317, 50144,7035, 50145,2142, 1347, 489, 50149,50150,50151,949, 2586, 34254,50153,
22796,50160,10877,50161,18708,317, 50164,317, 332, 50154,50155,50156,50157,50158,50159,3869, 381, 551, 5223, 50162,50163,317, 356, 466, 50166,50167,10894,
- 50169,50170,901, 50171,50172,50173,50174,50175,50180,5037, 50186,317, 317, 6937, 357, 317, 2715, 317, 2078, 867, 439, 2272, 317, 5955, 1325, 3361, 3884,
- 50176,50177,50178,50179,50181,50184,50182,50183,13927,10422,466, 317, 50185,523, 363, 3884, 50187,5428, 332, 343, 50189,5570, 17588,317, 20509,343, 381,
- 317, 5570, 390, 50192,1109, 343, 50193,50197,50198,317, 46305,317, 50194,434, 381, 50195,317, 50196,50199,5120, 4984, 6401, 4952, 50201,1347, 2683, 317,
- 50205,50207,50209,50211,50216,50219,2163, 50220,50222,50226,1230, 332, 50206,50208,351, 8639, 50210,590, 317, 356, 50212,50214,574, 5836, 317, 50213,317,
- 8296, 2317, 345, 7672, 50215,317, 28082,317, 50217,317, 356, 317, 50218,317, 8296, 381, 50221,1481, 50223,317, 6847, 490, 10715,50224,490, 50225,370,
+ 50169,50170,901, 50171,50172,50173,50174,50175,50180,5037, 50186,317, 317, 6937, 357, 317, 2715, 317, 2078, 867, 439, 2272, 317, 5955, 1325, 3361, 3884,
+ 50176,50177,50178,50179,50181,50184,50182,50183,13927,10422,466, 317, 50185,523, 363, 3884, 50187,5428, 332, 343, 50189,5570, 17588,317, 20509,343, 381,
+ 317, 5570, 390, 50192,1109, 343, 50193,50197,50198,317, 46305,317, 50194,434, 381, 50195,317, 50196,50199,5120, 4984, 6401, 4952, 50201,1347, 2683, 317,
+ 50205,50207,50209,50211,50216,50219,2163, 50220,50222,50226,1230, 332, 50206,50208,351, 8639, 50210,590, 317, 356, 50212,50214,574, 5836, 317, 50213,317,
+ 8296, 2317, 345, 7672, 50215,317, 28082,317, 50217,317, 356, 317, 50218,317, 8296, 381, 50221,1481, 50223,317, 6847, 490, 10715,50224,490, 50225,370,
317, 426, 317, 382, 317, 5201, 1460, 7865, 574, 50228,2948, 50233,50244,50247,50249,15745,50251,50252,50253,50257,50258,343, 317, 317, 490, 590, 15451,
- 50229,6370, 365, 50231,50232,317, 50230,2086, 7116, 317, 8099, 8275, 490, 490, 50234,50235,50237,50238,50240,32473,50241,50242,50243,390, 1060, 317, 590,
- 50236,317, 50239,317, 490, 2058, 50245,11242,1950, 332, 50246,50248,490, 363, 1347, 317, 42563,50250,5295, 12756,317, 332, 7892, 45719,50254,7127, 3569,
+ 50229,6370, 365, 50231,50232,317, 50230,2086, 7116, 317, 8099, 8275, 490, 490, 50234,50235,50237,50238,50240,32473,50241,50242,50243,390, 1060, 317, 590,
+ 50236,317, 50239,317, 490, 2058, 50245,11242,1950, 332, 50246,50248,490, 363, 1347, 317, 42563,50250,5295, 12756,317, 332, 7892, 45719,50254,7127, 3569,
381, 50255,427, 651, 3426, 317, 50256,490, 1044, 12060,367, 741, 367, 317, 390, 45162,490, 11388,50259,50294,50296,50301,50309,50322,50331,50334,50336,
50349,50353,50366,50371,50377,50379,9304, 50383,50384,50394,50395,50399,50400,50402,50260,50264,50268,50270,50271,50273,50274,50275,50277,50279,50087,50285,50286,
- 50287,50289,50290,50291,50261,1345, 4984, 50262,50263,50265,490, 50266,50267,2357, 490, 9244, 8296, 317, 40625,317, 50269,596, 317, 50272,3751, 363, 2058,
- 370, 50276,317, 43411,317, 317, 1325, 317, 317, 50278,50280,50281,370, 7143, 6834, 332, 2355, 351, 50282,317, 5570, 50283,50284,317, 363, 5104, 2022,
+ 50287,50289,50290,50291,50261,1345, 4984, 50262,50263,50265,490, 50266,50267,2357, 490, 9244, 8296, 317, 40625,317, 50269,596, 317, 50272,3751, 363, 2058,
+ 370, 50276,317, 43411,317, 317, 1325, 317, 317, 50278,50280,50281,370, 7143, 6834, 332, 2355, 351, 50282,317, 5570, 50283,50284,317, 363, 5104, 2022,
370, 7149, 50288,490, 1588, 489, 363, 15763,50292,351, 317, 8213, 50293,317, 10943,339, 50295,6673, 3664, 317, 16915,2402, 371, 50297,50298,50300,40660,
50299,50302,50303,50304,50306,365, 50305,5237, 50307,50308,357, 5238, 50310,50313,50314,15136,47721,50315,50317,50142,317, 50319,50320,50321,5836, 317, 50311,
50312,50316,12693,317, 2368, 50318,971, 490, 5838, 1481, 2108, 38782,6993, 50323,50325,50327,50324,50326,317, 50328,50329,50330,7273, 50332,50333,351, 50335,
- 317, 15772,5866, 351, 4984, 50337,50338,50340,50341,50343,50344,50347,357, 5241, 382, 1160, 5126, 317, 5120, 21882,317, 50339,50342,24725,356, 317, 317,
- 317, 8296, 7785, 50345,7384, 317, 490, 317, 5163, 50346,11844,12302,26029,345, 3284, 5295, 5836, 317, 539, 50348,490, 490, 11280,50350,50351,50352,365,
+ 317, 15772,5866, 351, 4984, 50337,50338,50340,50341,50343,50344,50347,357, 5241, 382, 1160, 5126, 317, 5120, 21882,317, 50339,50342,24725,356, 317, 317,
+ 317, 8296, 7785, 50345,7384, 317, 490, 317, 5163, 50346,11844,12302,26029,345, 3284, 5295, 5836, 317, 539, 50348,490, 490, 11280,50350,50351,50352,365,
5624, 317, 50354,50357,50359,50364,9198, 317, 317, 50355,6600, 317, 13314,50356,317, 317, 6420, 317, 343, 317, 410, 371, 317, 2211, 317, 317, 50358,
- 15163,345, 317, 317, 48217,317, 50360,50363,317, 50361,50362,371, 2222, 404, 390, 1032, 31745,50365,317, 317, 5890, 50367,5896, 50368,3023, 363, 317,
- 6601, 50369,2551, 2219, 370, 26034,50370,10907,426, 351, 50372,50375,50373,50374,50376,7939, 396, 2086, 10223,50378,5149, 10820,2181, 8178, 317, 12060,9388,
+ 15163,345, 317, 317, 48217,317, 50360,50363,317, 50361,50362,371, 2222, 404, 390, 1032, 31745,50365,317, 317, 5890, 50367,5896, 50368,3023, 363, 317,
+ 6601, 50369,2551, 2219, 370, 26034,50370,10907,426, 351, 50372,50375,50373,50374,50376,7939, 396, 2086, 10223,50378,5149, 10820,2181, 8178, 317, 12060,9388,
2280, 50380,50381,50382,427, 390, 5332, 18840,50385,50386,50387,50388,50389,50390,50391,31475,317, 392, 44797,317, 9649, 50392,50393,7386, 382, 590, 15017,
1481, 50396,50397,50398,7792, 1108, 5241, 7990, 363, 50401,462, 362, 50404,50414,50415,50417,50419,50420,50429,2086, 490, 50430,50405,50408,672, 12429,50409,
- 23751,7801, 5241, 317, 44305,50410,50412,50413,317, 7155, 50406,50407,621, 732, 317, 489, 1230, 380, 50411,2211, 8301, 489, 24111,317, 8281, 50416,317,
+ 23751,7801, 5241, 317, 44305,50410,50412,50413,317, 7155, 50406,50407,621, 732, 317, 489, 1230, 380, 50411,2211, 8301, 489, 24111,317, 8281, 50416,317,
317, 317, 50418,1109, 490, 50421,50422,50423,50425,50428,317, 6228, 8281, 17731,5241, 332, 370, 317, 50424,5571, 50426,317, 10329,50427,1481, 1913, 32908,
42289,4965, 25114,490, 10991,317, 5241, 428, 50431,6228, 50439,50452,50453,50465,50491,50499,50503,50526,50533,50555,50558,50562,50566,50567,50584,12774,50595,
50596,50598,50613,50625,50640,50643,317, 50646,50648,50432,50433,50434,50435,50436,50437,50438,590, 332, 50440,362, 33846,50443,490, 50444,2163, 50445,50446,
50448,50449,50450,50451,50441,466, 317, 490, 410, 317, 18569,50442,317, 466, 17462,317, 44088,332, 9186, 50447,5022, 1347, 4925, 317, 50454,50455,50461,
50464,15082,317, 50456,50459,50460,317, 6854, 50457,50458,356, 5120, 22210,5406, 317, 1347, 380, 50462,50463,17565,317, 20331,317, 317, 50466,50474,50479,
50482,345, 50483,50486,317, 50489,50490,380, 50467,4591, 317, 50469,50470,50473,343, 1345, 317, 50468,317, 37432,50471,50472,5447, 466, 568, 50475,50477,
- 317, 5037, 317, 317, 50476,371, 1109, 404, 741, 4949, 3869, 2022, 50478,7450, 363, 317, 50480,4925, 317, 332, 50481,2381, 317, 317, 50484,5237, 2503,
+ 317, 5037, 317, 317, 50476,371, 1109, 404, 741, 4949, 3869, 2022, 50478,7450, 363, 317, 50480,4925, 317, 332, 50481,2381, 317, 317, 50484,5237, 2503,
490, 332, 50485,50487,50488,380, 317, 5423, 343, 365, 5105, 490, 7657, 2533, 50492,553, 343, 370, 9938, 50494,1347, 50495,50496,317, 50493,50497,50498,
- 551, 50500,317, 50501,50502,7142, 5431, 50504,50509,50512,50513,50519,50520,50521,50522,317, 317, 50505,50507,2357, 317, 317, 1030, 50506,867, 50508,5032,
- 317, 6458, 343, 50510,317, 1358, 50511,50514,50517,2178, 50518,2272, 317, 6179, 43909,9298, 50515,50516,1325, 2035, 6228, 345, 356, 1358, 317, 317, 427,
- 2108, 9383, 427, 380, 2631, 317, 50523,50524,50525,50527,2948, 50531,50532,490, 50528,4966, 4218, 50529,50530,50534,50536,50541,50542,50546,50547,50548,433,
- 357, 2053, 50549,343, 50551,50553,317, 5623, 50535,317, 317, 2163, 50537,50538,317, 18179,50539,50540,50543,6710, 50544,50545,5365, 356, 466, 370, 1347,
+ 551, 50500,317, 50501,50502,7142, 5431, 50504,50509,50512,50513,50519,50520,50521,50522,317, 317, 50505,50507,2357, 317, 317, 1030, 50506,867, 50508,5032,
+ 317, 6458, 343, 50510,317, 1358, 50511,50514,50517,2178, 50518,2272, 317, 6179, 43909,9298, 50515,50516,1325, 2035, 6228, 345, 356, 1358, 317, 317, 427,
+ 2108, 9383, 427, 380, 2631, 317, 50523,50524,50525,50527,2948, 50531,50532,490, 50528,4966, 4218, 50529,50530,50534,50536,50541,50542,50546,50547,50548,433,
+ 357, 2053, 50549,343, 50551,50553,317, 5623, 50535,317, 317, 2163, 50537,50538,317, 18179,50539,50540,50543,6710, 50544,50545,5365, 356, 466, 370, 1347,
317, 9319, 21013,345, 8296, 317, 490, 605, 380, 50550,30346,5120, 317, 11006,1109, 50552,50554,490, 19463,5526, 50556,317, 6817, 50557,7403, 39137,50559,
- 50561,345, 8274, 50560,50563,370, 50565,434, 317, 50564,12625,2571, 332, 345, 2261, 5561, 50568,2566, 50569,50574,50576,50579,317, 50580,50581,1160, 317,
- 10792,5626, 317, 6937, 50570,50571,317, 317, 356, 6599, 50572,317, 50573,50575,371, 317, 50577,363, 317, 536, 317, 317, 317, 50578,317, 1025, 554,
- 317, 50582,50583,317, 50585,50587,50591,4965, 317, 2022, 50592,362, 50593,35300,50594,357, 345, 565, 2280, 50586,317, 50588,50589,50590,6270, 5447, 466,
+ 50561,345, 8274, 50560,50563,370, 50565,434, 317, 50564,12625,2571, 332, 345, 2261, 5561, 50568,2566, 50569,50574,50576,50579,317, 50580,50581,1160, 317,
+ 10792,5626, 317, 6937, 50570,50571,317, 317, 356, 6599, 50572,317, 50573,50575,371, 317, 50577,363, 317, 536, 317, 317, 317, 50578,317, 1025, 554,
+ 317, 50582,50583,317, 50585,50587,50591,4965, 317, 2022, 50592,362, 50593,35300,50594,357, 345, 565, 2280, 50586,317, 50588,50589,50590,6270, 5447, 466,
26250,25336,317, 2576, 433, 317, 370, 1943, 50597,476, 29553,317, 382, 27151,50599,50601,50602,50604,1597, 50605,6917, 50606,50608,50609,50610,50611,50612,
50600,5255, 2108, 9914, 590, 2110, 5105, 50603,578, 16923,1588, 1481, 5055, 317, 50607,2366, 545, 1160, 351, 6334, 24814,317, 50614,50616,50618,50619,50621,
- 50623,6409, 2108, 50624,2381, 317, 50615,490, 1230, 317, 490, 2035, 50617,28340,42726,317, 317, 8597, 317, 317, 2171, 2134, 317, 50620,365, 2272, 317,
- 50622,317, 545, 16063,5328, 5207, 5476, 50626,50628,490, 37687,50633,50634,343, 50635,20962,50627,317, 317, 317, 317, 2322, 317, 50629,50630,50631,448,
+ 50623,6409, 2108, 50624,2381, 317, 50615,490, 1230, 317, 490, 2035, 50617,28340,42726,317, 317, 8597, 317, 317, 2171, 2134, 317, 50620,365, 2272, 317,
+ 50622,317, 545, 16063,5328, 5207, 5476, 50626,50628,490, 37687,50633,50634,343, 50635,20962,50627,317, 317, 317, 317, 2322, 317, 50629,50630,50631,448,
50632,50636,50639,50637,50638,50641,5038, 50642,2322, 362, 50644,11308,2171, 428, 50645,7785, 50647,9289, 50649,50653,50654,50655,50656,50650,971, 317, 50651,
- 867, 50652,317, 6937, 490, 6506, 317, 842, 5105, 1998, 317, 2272, 7672, 351, 365, 590, 5249, 317, 50658,365, 2566, 50659,50660,50662,50663,2163, 317,
+ 867, 50652,317, 6937, 490, 6506, 317, 842, 5105, 1998, 317, 2272, 7672, 351, 365, 590, 5249, 317, 50658,365, 2566, 50659,50660,50662,50663,2163, 317,
50666,50671,50675,31345,50681,317, 317, 50664,50665,50667,50668,317, 404, 6089, 50669,50670,5991, 50672,50673,317, 490, 10878,50674,50676,50677,50678,50679,
50680,317, 21280,50682,343, 332, 50683,50684,427, 2163, 50686,50705,50712,50757,50761,50769,50770,50801,50802,50845,50848,50867,50877,50886,50888,2155, 50897,
50906,50923,50950,50993,50999,51004,51006,51008,51022,50687,50688,50690,317, 44330,50691,317, 19478,7942, 50692,50693,29200,50694,50698,50700,35527,50702,50704,
- 5687, 343, 50689,343, 3375, 490, 317, 317, 9436, 18333,2539, 38220,5439, 539, 332, 345, 332, 50695,50696,18664,13174,6763, 317, 4984, 50697,5037, 7657,
+ 5687, 343, 50689,343, 3375, 490, 317, 317, 9436, 18333,2539, 38220,5439, 539, 332, 345, 332, 50695,50696,18664,13174,6763, 317, 4984, 50697,5037, 7657,
317, 7939, 317, 351, 317, 6817, 50699,24064,2348, 5427, 25904,317, 50701,371, 345, 343, 1347, 317, 5055, 6638, 50703,390, 2381, 27286,50706,50707,50709,
- 50710,2381, 448, 50708,50711,317, 317, 50713,50716,50721,50736,1347, 50741,741, 50752,50754,317, 7850, 2004, 50714,317, 50715,380, 21094,11144,50717,343,
- 317, 317, 317, 317, 2272, 50718,50719,317, 9238, 317, 317, 50720,317, 345, 50722,50725,50726,317, 50727,2717, 50728,50732,362, 371, 50723,50724,317,
+ 50710,2381, 448, 50708,50711,317, 317, 50713,50716,50721,50736,1347, 50741,741, 50752,50754,317, 7850, 2004, 50714,317, 50715,380, 21094,11144,50717,343,
+ 317, 317, 317, 317, 2272, 50718,50719,317, 9238, 317, 317, 50720,317, 345, 50722,50725,50726,317, 50727,2717, 50728,50732,362, 371, 50723,50724,317,
16039,10590,317, 50729,50730,1347, 50731,7383, 5570, 317, 317, 365, 14982,5570, 1992, 50733,2322, 7657, 50734,365, 50735,365, 317, 50737,5105, 8083, 50739,
- 4984, 7850, 35556,317, 317, 50738,317, 371, 7850, 50740,317, 8273, 12803,6228, 50742,50746,317, 50747,50748,1160, 50749,1548, 50743,50744,50745,50750,1358,
- 50751,50753,7386, 317, 50755,6996, 317, 50756,501, 363, 50758,50759,371, 317, 380, 317, 317, 8178, 2110, 5120, 50760,317, 50762,50763,50764,317, 317,
- 6937, 2845, 50765,357, 50767,50768,1481, 317, 433, 365, 332, 332, 317, 50766,317, 380, 7850, 50771,50776,50778,50780,50787,50790,50796,317, 5828, 317,
- 317, 50772,404, 343, 316, 50773,50775,317, 362, 50774,317, 317, 317, 5793, 317, 5891, 343, 317, 18539,317, 317, 343, 50777,404, 317, 317, 381,
+ 4984, 7850, 35556,317, 317, 50738,317, 371, 7850, 50740,317, 8273, 12803,6228, 50742,50746,317, 50747,50748,1160, 50749,1548, 50743,50744,50745,50750,1358,
+ 50751,50753,7386, 317, 50755,6996, 317, 50756,501, 363, 50758,50759,371, 317, 380, 317, 317, 8178, 2110, 5120, 50760,317, 50762,50763,50764,317, 317,
+ 6937, 2845, 50765,357, 50767,50768,1481, 317, 433, 365, 332, 332, 317, 50766,317, 380, 7850, 50771,50776,50778,50780,50787,50790,50796,317, 5828, 317,
+ 317, 50772,404, 343, 316, 50773,50775,317, 362, 50774,317, 317, 317, 5793, 317, 5891, 343, 317, 18539,317, 317, 343, 50777,404, 317, 317, 381,
317, 427, 317, 50779,427, 5381, 317, 50781,7567, 4980, 317, 50782,50785,317, 50783,490, 50784,370, 317, 50786,317, 50788,2058, 50789,7523, 50791,50794,
317, 50792,1347, 50793,349, 50795,14709,50797,50800,2627, 50798,317, 50799,2073, 47332,36522,490, 50803,50807,50811,50814,50817,50818,5294, 50819,50821,50822,
50824,50825,50833,39071,50836,50838,50841,50842,490, 1266, 317, 317, 317, 50804,317, 1160, 2086, 317, 50805,50806,317, 6420, 2381, 317, 5891, 317, 50808,
351, 50809,50810,317, 2381, 50812,2108, 317, 343, 50813,4573, 6228, 317, 50815,50816,27787,317, 317, 5792, 370, 9357, 50820,343, 36617,1358, 9702, 16415,
- 50823,590, 317, 43931,50826,50828,50829,317, 332, 1325, 50831,50832,317, 8362, 50827,8841, 5611, 317, 5492, 317, 9226, 6996, 637, 590, 19695,50830,6691,
+ 50823,590, 317, 43931,50826,50828,50829,317, 332, 1325, 50831,50832,317, 8362, 50827,8841, 5611, 317, 5492, 317, 9226, 6996, 637, 590, 19695,50830,6691,
18692,317, 1267, 1913, 365, 317, 1266, 317, 50834,10253,50835,317, 2715, 317, 7525, 317, 9303, 317, 50837,2381, 8333, 490, 5105, 7266, 317, 50839,50840,
- 12869,490, 317, 1109, 536, 1100, 50843,50844,4984, 50846,50847,637, 42654,6996, 3815, 633, 673, 50849,50851,16951,50855,50857,590, 50859,362, 50861,317,
+ 12869,490, 317, 1109, 536, 1100, 50843,50844,4984, 50846,50847,637, 42654,6996, 3815, 633, 673, 50849,50851,16951,50855,50857,590, 50859,362, 50861,317,
5644, 50863,317, 50864,343, 50865,1160, 2163, 50850,5624, 365, 5324, 317, 550, 5105, 317, 8488, 317, 50852,8178, 8178, 317, 317, 6270, 10422,3999, 50853,
- 317, 5793, 50854,427, 50856,13908,50858,26214,490, 1109, 50860,9170, 439, 396, 317, 317, 50862,47611,317, 5307, 3284, 10442,22716,363, 18840,317, 348,
+ 317, 5793, 50854,427, 50856,13908,50858,26214,490, 1109, 50860,9170, 439, 396, 317, 317, 50862,47611,317, 5307, 3284, 10442,22716,363, 18840,317, 348,
317, 8361, 50866,428, 10059,50868,50869,50873,50874,50876,9521, 3772, 317, 381, 50870,50871,50872,4984, 8529, 317, 10820,8346, 345, 50875,2067, 50878,50880,
50882,50883,50879,32010,6944, 317, 355, 50881,317, 50884,5223, 490, 539, 1347, 50885,317, 50887,1358, 50889,50890,345, 50891,50892,50893,343, 50895,50896,
- 15842,5890, 317, 1345, 343, 6967, 2355, 50894,2110, 348, 317, 971, 50898,50899,50900,50903,356, 5917, 317, 490, 2627, 50901,5792, 317, 345, 50902,490,
+ 15842,5890, 317, 1345, 343, 6967, 2355, 50894,2110, 348, 317, 971, 50898,50899,50900,50903,356, 5917, 317, 490, 2627, 50901,5792, 317, 345, 50902,490,
50904,50905,50907,50911,50912,50919,317, 50920,50922,373, 50908,332, 50910,490, 7399, 50909,393, 3688, 317, 380, 2142, 317, 317, 332, 381, 50913,50916,
- 50917,50918,36966,4980, 50914,50915,1160, 317, 317, 489, 363, 351, 2067, 2396, 1358, 2396, 574, 317, 50921,332, 350, 466, 343, 50924,13914,50926,501,
- 50928,50933,50942,343, 4952, 50944,50946,50948,50949,7785, 6944, 317, 317, 50925,50927,428, 380, 343, 317, 6607, 50929,317, 50932,574, 50930,50931,8722,
+ 50917,50918,36966,4980, 50914,50915,1160, 317, 317, 489, 363, 351, 2067, 2396, 1358, 2396, 574, 317, 50921,332, 350, 466, 343, 50924,13914,50926,501,
+ 50928,50933,50942,343, 4952, 50944,50946,50948,50949,7785, 6944, 317, 317, 50925,50927,428, 380, 343, 317, 6607, 50929,317, 50932,574, 50930,50931,8722,
1347, 50934,50938,20641,9624, 31023,50939,317, 371, 317, 50935,317, 317, 371, 50936,28220,317, 50937,466, 317, 5840, 2718, 479, 50940,50941,317, 50943,
6607, 317, 365, 33040,50945,317, 2163, 371, 15221,50947,363, 2298, 345, 50951,50952,50956,50958,50984,6555, 50986,50989,5120, 50990,50991,317, 317, 17976,
363, 50953,50955,317, 43823,317, 50954,9265, 1347, 317, 317, 16090,5300, 50957,317, 2845, 317, 350, 2004, 50959,4925, 1100, 50961,363, 2142, 50963,50964,
50981,50982,345, 50960,1347, 9699, 50962,50965,637, 50973,1160, 317, 317, 50974,401, 50975,50977,6195, 332, 50978,4591, 50979,50980,1347, 317, 317, 50966,
- 50967,50968,50969,50970,50971,50972,373, 50976,5943, 317, 17018,317, 19689,317, 1358, 317, 12943,965, 317, 317, 7911, 363, 5055, 5037, 50983,50985,466,
- 1358, 50987,317, 396, 5836, 9214, 50988,7386, 7657, 5241, 317, 565, 1109, 50992,317, 426, 356, 10252,317, 50994,4437, 382, 2142, 44106,50995,50996,365,
- 8926, 50997,50998,5241, 44137,490, 490, 5241, 1109, 317, 46420,51000,51003,1230, 51001,466, 51002,4591, 317, 351, 373, 1160, 317, 51005,384, 2063, 363,
- 51007,501, 363, 5250, 6996, 633, 51009,51011,51013,8023, 51014,51015,51017,23949,2117, 3075, 5956, 51021,5037, 2541, 317, 51010,51012,7064, 373, 390, 6645,
+ 50967,50968,50969,50970,50971,50972,373, 50976,5943, 317, 17018,317, 19689,317, 1358, 317, 12943,965, 317, 317, 7911, 363, 5055, 5037, 50983,50985,466,
+ 1358, 50987,317, 396, 5836, 9214, 50988,7386, 7657, 5241, 317, 565, 1109, 50992,317, 426, 356, 10252,317, 50994,4437, 382, 2142, 44106,50995,50996,365,
+ 8926, 50997,50998,5241, 44137,490, 490, 5241, 1109, 317, 46420,51000,51003,1230, 51001,466, 51002,4591, 317, 351, 373, 1160, 317, 51005,384, 2063, 363,
+ 51007,501, 363, 5250, 6996, 633, 51009,51011,51013,8023, 51014,51015,51017,23949,2117, 3075, 5956, 51021,5037, 2541, 317, 51010,51012,7064, 373, 390, 6645,
489, 6318, 1345, 51016,11158,439, 51018,363, 317, 51019,5663, 51020,317, 490, 5037, 6920, 51023,51024,51026,5033, 317, 2381, 490, 10820,9163, 365, 51025,
- 362, 11388,396, 2521, 51027,51036,51038,501, 51058,15495,51060,51068,24134,51071,51074,51077,51081,5838, 51086,51111,51141,51142,15551,2128, 3284, 5571, 490,
+ 362, 11388,396, 2521, 51027,51036,51038,501, 51058,15495,51060,51068,24134,51071,51074,51077,51081,5838, 51086,51111,51141,51142,15551,2128, 3284, 5571, 490,
51028,51029,15307,490, 51030,51031,317, 51033,2078, 51034,51035,2683, 44466,317, 51032,20423,317, 371, 317, 6851, 3284, 51037,51039,6993, 51043,51051,51055,
11702,51056,2211, 380, 51040,1347, 51041,7523, 317, 51042,1347, 317, 348, 7785, 51044,51045,343, 6596, 51046,317, 51047,317, 51048,51049,51050,51052,17462,
317, 2715, 51053,51054,5611, 867, 1347, 51057,9624, 317, 18125,6340, 51059,317, 51061,51062,10943,51065,355, 51066,490, 365, 51067,558, 6736, 51063,26912,
- 373, 371, 317, 380, 51064,317, 651, 862, 390, 7594, 12547,343, 20441,35660,19639,51069,317, 8099, 51070,46112,2142, 317, 2705, 6195, 317, 317, 317,
+ 373, 371, 317, 380, 51064,317, 651, 862, 390, 7594, 12547,343, 20441,35660,19639,51069,317, 8099, 51070,46112,2142, 317, 2705, 6195, 317, 317, 317,
418, 51072,7871, 317, 317, 51073,317, 51075,9557, 363, 51076,363, 16910,1481, 1481, 3284, 1109, 45719,51078,317, 51080,356, 25899,2715, 356, 5406, 51079,
6228, 4965, 339, 370, 317, 51082,51083,51084,317, 51085,317, 1220, 51087,51099,51103,2571, 5662, 51110,42544,317, 51088,317, 51093,51094,51096,51097,51098,
- 27218,490, 317, 51089,5717, 51090,51091,51092,8136, 466, 5241, 51095,317, 20331,317, 317, 317, 317, 317, 317, 51100,51101,9027, 317, 12854,23849,317,
+ 27218,490, 317, 51089,5717, 51090,51091,51092,8136, 466, 5241, 51095,317, 20331,317, 317, 317, 317, 317, 317, 51100,51101,9027, 317, 12854,23849,317,
317, 9444, 381, 51102,390, 48247,317, 1347, 51104,51105,51107,51109,51106,317, 8419, 332, 317, 51108,317, 317, 373, 351, 428, 5120, 356, 51112,51113,
- 11089,51125,51126,51127,317, 51137,9069, 317, 51114,27209,51115,24024,24272,8258, 6996, 317, 1615, 2767, 1155, 1353, 317, 51116,51118,356, 10891,466, 2022,
- 6994, 51121,396, 51123,51124,4980, 9864, 317, 317, 51117,12656,472, 10894,51119,51120,396, 395, 4984, 51122,7615, 362, 317, 1597, 363, 317, 396, 1358,
- 5054, 356, 317, 2163, 24094,6486, 51128,51131,51129,51130,51132,51133,18511,12846,5241, 21090,11064,51135,51134,18978,51136,51138,51139,332, 51140,7386, 8597,
+ 11089,51125,51126,51127,317, 51137,9069, 317, 51114,27209,51115,24024,24272,8258, 6996, 317, 1615, 2767, 1155, 1353, 317, 51116,51118,356, 10891,466, 2022,
+ 6994, 51121,396, 51123,51124,4980, 9864, 317, 317, 51117,12656,472, 10894,51119,51120,396, 395, 4984, 51122,7615, 362, 317, 1597, 363, 317, 396, 1358,
+ 5054, 356, 317, 2163, 24094,6486, 51128,51131,51129,51130,51132,51133,18511,12846,5241, 21090,11064,51135,51134,18978,51136,51138,51139,332, 51140,7386, 8597,
2142, 9436, 1459, 45141,8926, 51143,51155,51161,51174,51191,51196,51198,362, 2022, 51200,51201,51220,51230,51254,51262,51264,51265,51144,51145,6195, 12958,51148,
- 2177, 317, 51149,51150,51151,51152,23172,51153,317, 490, 490, 362, 39719,51146,51147,317, 2581, 49476,317, 490, 2272, 317, 27851,348, 51154,393, 5381,
- 51156,7850, 51157,7405, 51159,466, 2571, 51160,11038,6736, 51158,371, 28779,317, 317, 317, 10820,317, 12696,9265, 51162,51163,51164,317, 1347, 51167,5746,
- 24113,1347, 317, 371, 5611, 9768, 381, 3284, 51165,51166,317, 51168,51173,317, 51169,380, 51170,51171,370, 317, 51172,370, 5492, 1325, 317, 5746, 5418,
- 397, 51175,51176,51186,2590, 343, 4980, 51189,8178, 345, 345, 2236, 51177,51182,51183,51184,1347, 51185,317, 51178,51179,51180,51181,317, 370, 490, 317,
- 370, 1358, 4980, 317, 317, 345, 4980, 29423,51187,51188,5300, 5300, 317, 317, 51190,317, 1347, 6798, 351, 10699,490, 51192,51193,51194,42695,1347, 317,
+ 2177, 317, 51149,51150,51151,51152,23172,51153,317, 490, 490, 362, 39719,51146,51147,317, 2581, 49476,317, 490, 2272, 317, 27851,348, 51154,393, 5381,
+ 51156,7850, 51157,7405, 51159,466, 2571, 51160,11038,6736, 51158,371, 28779,317, 317, 317, 10820,317, 12696,9265, 51162,51163,51164,317, 1347, 51167,5746,
+ 24113,1347, 317, 371, 5611, 9768, 381, 3284, 51165,51166,317, 51168,51173,317, 51169,380, 51170,51171,370, 317, 51172,370, 5492, 1325, 317, 5746, 5418,
+ 397, 51175,51176,51186,2590, 343, 4980, 51189,8178, 345, 345, 2236, 51177,51182,51183,51184,1347, 51185,317, 51178,51179,51180,51181,317, 370, 490, 317,
+ 370, 1358, 4980, 317, 317, 345, 4980, 29423,51187,51188,5300, 5300, 317, 317, 51190,317, 1347, 6798, 351, 10699,490, 51192,51193,51194,42695,1347, 317,
317, 363, 343, 51195,10471,5055, 51197,401, 16589,51199,370, 15738,23306,11148,362, 317, 5223, 42843,51202,51203,51204,51219,390, 971, 317, 317, 51205,
- 51209,51210,51213,51216,51217,51206,51207,51208,345, 10174,51211,51212,51214,51215,637, 51218,317, 317, 633, 317, 633, 1548, 6355, 6578, 317, 363, 9483,
+ 51209,51210,51213,51216,51217,51206,51207,51208,345, 10174,51211,51212,51214,51215,637, 51218,317, 317, 633, 317, 633, 1548, 6355, 6578, 317, 363, 9483,
51221,51222,490, 317, 7312, 6834, 51223,317, 6834, 317, 365, 44428,51225,9174, 365, 51226,2110, 8926, 51229,51224,51227,51228,637, 22090,51231,51232,51233,
- 51235,51242,343, 33846,362, 51248,30793,51249,51250,51251,3901, 317, 317, 317, 1347, 317, 317, 317, 317, 51234,4980, 7385, 345, 317, 317, 356, 8948,
+ 51235,51242,343, 33846,362, 51248,30793,51249,51250,51251,3901, 317, 317, 317, 1347, 317, 317, 317, 317, 51234,4980, 7385, 345, 317, 317, 356, 8948,
317, 4980, 51236,51237,51239,345, 317, 345, 345, 317, 51238,317, 317, 1018, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 4980, 345, 51240,
- 345, 317, 51241,317, 51243,13011,51244,490, 9779, 51245,51247,4980, 317, 317, 51246,404, 5962, 317, 363, 317, 317, 9557, 363, 404, 317, 51252,317,
- 51253,371, 5793, 51255,51256,51258,343, 317, 8274, 5570, 10114,5447, 51257,51259,27326,12071,490, 51260,371, 51261,51263,7116, 317, 317, 1347, 317, 317,
- 8828, 4925, 19324,4738, 343, 390, 51267,51269,51271,351, 51273,51274,317, 317, 51276,558, 51280,51281,51283,51297,51301,343, 51302,51268,370, 51270,317,
+ 345, 317, 51241,317, 51243,13011,51244,490, 9779, 51245,51247,4980, 317, 317, 51246,404, 5962, 317, 363, 317, 317, 9557, 363, 404, 317, 51252,317,
+ 51253,371, 5793, 51255,51256,51258,343, 317, 8274, 5570, 10114,5447, 51257,51259,27326,12071,490, 51260,371, 51261,51263,7116, 317, 317, 1347, 317, 317,
+ 8828, 4925, 19324,4738, 343, 390, 51267,51269,51271,351, 51273,51274,317, 317, 51276,558, 51280,51281,51283,51297,51301,343, 51302,51268,370, 51270,317,
317, 317, 33398,1020, 51272,3688, 6334, 51275,2035, 51277,51278,363, 2222, 16278,51279,365, 10276,11147,16278,317, 23995,1345, 317, 3987, 51282,5055, 19453,
- 51284,51285,51286,51290,348, 345, 10046,419, 345, 317, 5684, 348, 317, 3726, 5430, 317, 51287,15148,1358, 51288,2537, 1160, 21067,51289,10633,317, 317,
+ 51284,51285,51286,51290,348, 345, 10046,419, 345, 317, 5684, 348, 317, 3726, 5430, 317, 51287,15148,1358, 51288,2537, 1160, 21067,51289,10633,317, 317,
51291,51292,51293,51294,51295,51296,5626, 51298,14708,317, 51299,2222, 317, 51300,317, 4965, 12524,5570, 350, 2272, 343, 317, 51303,370, 317, 51304,51305,
- 51306,51307,51308,365, 51310,51314,343, 351, 51315,317, 317, 51311,317, 51312,51313,317, 51316,51318,51319,51317,51320,7185, 51322,317, 317, 404, 350,
+ 51306,51307,51308,365, 51310,51314,343, 351, 51315,317, 317, 51311,317, 51312,51313,317, 51316,51318,51319,51317,51320,7185, 51322,317, 317, 404, 350,
43013,10761,2815, 51324,9801, 51327,2962, 1087, 672, 427, 10641,34392,2077, 51329,51330,554, 51331,51341,363, 51344,51345,51346,51347,51350,14772,51325,51326,
51328,317, 2770, 4980, 380, 46880,317, 6598, 365, 1160, 51332,51334,19665,317, 51333,568, 22736,51335,31917,317, 51336,490, 317, 317, 51340,363, 51337,
16218,472, 18588,51338,6854, 51339,363, 51342,51343,11786,8047, 427, 427, 363, 5608, 12696,51348,51349,427, 343, 427, 1548, 434, 51352,51353,51354,51357,
- 51358,51359,51363,51366,51370,51376,51377,51378,51381,51386,51388,51389,51390,51393,5037, 51397,2156, 12994,44910,26830,1347, 356, 51355,51356,363, 10011,2236,
- 448, 317, 11533,317, 448, 317, 384, 8647, 370, 22370,7990, 490, 51360,9592, 51362,574, 316, 343, 51361,22223,365, 5022, 6598, 51364,596, 51365,317,
+ 51358,51359,51363,51366,51370,51376,51377,51378,51381,51386,51388,51389,51390,51393,5037, 51397,2156, 12994,44910,26830,1347, 356, 51355,51356,363, 10011,2236,
+ 448, 317, 11533,317, 448, 317, 384, 8647, 370, 22370,7990, 490, 51360,9592, 51362,574, 316, 343, 51361,22223,365, 5022, 6598, 51364,596, 51365,317,
8035, 51367,51368,51369,51371,51372,51373,51374,51375,439, 317, 2272, 7694, 51379,2381, 51380,7114, 317, 317, 490, 1109, 51382,51384,574, 317, 317, 51383,
- 51385,490, 490, 7821, 51387,15118,393, 1011, 317, 1194, 11135,5037, 382, 51391,51392,365, 51394,51395,317, 51396,3505, 5558, 2063, 51399,51403,51409,565,
- 51410,51413,51419,51421,16865,51424,44271,44271,51400,51401,7622, 28454,339, 51402,9375, 317, 51404,6228, 6228, 29130,51405,51407,51406,51408,18232,13770,317,
+ 51385,490, 490, 7821, 51387,15118,393, 1011, 317, 1194, 11135,5037, 382, 51391,51392,365, 51394,51395,317, 51396,3505, 5558, 2063, 51399,51403,51409,565,
+ 51410,51413,51419,51421,16865,51424,44271,44271,51400,51401,7622, 28454,339, 51402,9375, 317, 51404,6228, 6228, 29130,51405,51407,51406,51408,18232,13770,317,
317, 317, 7285, 51411,13638,51412,363, 965, 317, 317, 5241, 51414,51415,51416,51417,3284, 51418,51420,3611, 390, 317, 2110, 1460, 317, 51422,371, 51423,
- 8296, 51425,51429,51430,51431,51432,7657, 51426,2715, 51427,365, 317, 5687, 51428,317, 2381, 317, 490, 2715, 317, 2142, 365, 5428, 490, 7672, 489, 7488,
+ 8296, 51425,51429,51430,51431,51432,7657, 51426,2715, 51427,365, 317, 5687, 51428,317, 2381, 317, 490, 2715, 317, 2142, 365, 5428, 490, 7672, 489, 7488,
5428, 345, 51434,345, 490, 51436,51437,51438,490, 15876,490, 2003, 5205, 44601,51435,317, 363, 490, 34218,51439,1820, 51440,51466,174, 51620,51646,51679,
51691,51773,51782,51797,51800,51841,51870,51900,51919,51920,51932,51944,51953,51964,8647, 51974,51978,51212,51441,51442,51444,51446,2163, 51452,51458,51461,51462,
51463,51465,343, 350, 370, 5742, 51443,51445,558, 51447,51448,51449,9609, 51450,662, 404, 51451,5653, 23849,349, 370, 7192, 363, 9609, 51453,51455,51457,
- 10189,25909,35409,51454,370, 317, 51456,33170,343, 4982, 51459,51460,351, 51464,6563, 370, 370, 7010, 317, 2037, 370, 51467,51468,51470,51476,363, 343,
- 390, 317, 51469,317, 390, 51471,51472,51473,51474,51475,370, 2037, 350, 19187,363, 36769,363, 51477,51478,51479,14174,343, 51480,51481,51518,51519,350,
+ 10189,25909,35409,51454,370, 317, 51456,33170,343, 4982, 51459,51460,351, 51464,6563, 370, 370, 7010, 317, 2037, 370, 51467,51468,51470,51476,363, 343,
+ 390, 317, 51469,317, 390, 51471,51472,51473,51474,51475,370, 2037, 350, 19187,363, 36769,363, 51477,51478,51479,14174,343, 51480,51481,51518,51519,350,
51525,51557,51589,51602,317, 343, 51482,51483,51486,51487,51488,51489,51496,51499,51504,51511,51513,51515,9425, 317, 2997, 6046, 317, 51484,51485,397, 12454,
- 317, 3023, 343, 51490,51491,9609, 51492,51494,1060, 51495,1020, 317, 9557, 51493,28253,5332, 317, 317, 363, 349, 363, 2369, 2369, 20535,11442,16775,389,
- 51497,51498,317, 343, 51500,317, 2571, 51503,343, 1347, 51501,2328, 12060,51502,51505,370, 8298, 8392, 34944,51506,404, 51508,51510,317, 51507,17400,384,
+ 317, 3023, 343, 51490,51491,9609, 51492,51494,1060, 51495,1020, 317, 9557, 51493,28253,5332, 317, 317, 363, 349, 363, 2369, 2369, 20535,11442,16775,389,
+ 51497,51498,317, 343, 51500,317, 2571, 51503,343, 1347, 51501,2328, 12060,51502,51505,370, 8298, 8392, 34944,51506,404, 51508,51510,317, 51507,17400,384,
17400,317, 363, 4965, 51509,363, 2022, 317, 317, 317, 6036, 5342, 351, 30811,317, 317, 51512,39357,32289,15734,8035, 51514,370, 479, 362, 51516,51517,
- 6563, 1020, 51520,551, 51521,51522,51523,51524,51526,51537,51546,51550,51553,51556,51527,51528,6645, 51529,51530,51531,2242, 51532,51534,343, 317, 20552,1020,
- 5163, 45213,317, 16069,1345, 363, 317, 363, 363, 404, 370, 317, 51533,51535,51536,19187,370, 51538,51539,51540,3854, 51542,356, 2419, 51545,51147,317,
- 317, 12331,343, 1345, 1358, 51541,7389, 363, 51543,404, 339, 51544,363, 18661,5561, 362, 363, 13177,363, 317, 51547,51548,390, 3079, 3079, 363, 317,
+ 6563, 1020, 51520,551, 51521,51522,51523,51524,51526,51537,51546,51550,51553,51556,51527,51528,6645, 51529,51530,51531,2242, 51532,51534,343, 317, 20552,1020,
+ 5163, 45213,317, 16069,1345, 363, 317, 363, 363, 404, 370, 317, 51533,51535,51536,19187,370, 51538,51539,51540,3854, 51542,356, 2419, 51545,51147,317,
+ 317, 12331,343, 1345, 1358, 51541,7389, 363, 51543,404, 339, 51544,363, 18661,5561, 362, 363, 13177,363, 317, 51547,51548,390, 3079, 3079, 363, 317,
2022, 51549,14289,15738,51551,317, 370, 23304,51552,317, 13269,5561, 317, 348, 351, 51554,51555,23304,317, 317, 35144,51558,542, 51559,51560,51564,51566,
- 51576,17973,51578,51583,349, 51584,51587,51588,9592, 317, 362, 51561,317, 1020, 427, 51562,47672,51563,427, 8569, 51565,16503,5054, 2022, 51567,2558, 5428,
+ 51576,17973,51578,51583,349, 51584,51587,51588,9592, 317, 362, 51561,317, 1020, 427, 51562,47672,51563,427, 8569, 51565,16503,5054, 2022, 51567,2558, 5428,
2022, 51570,2593, 5037, 2355, 50709,2355, 51568,51569,51571,51575,5428, 317, 51572,51573,51574,370, 1230, 317, 370, 317, 51577,317, 317, 370, 2551, 51579,
- 51580,1194, 51582,317, 2022, 317, 428, 12334,343, 384, 51581,317, 15745,2275, 51585,317, 51586,363, 363, 363, 317, 51590,51594,51597,51599,51601,2127,
+ 51580,1194, 51582,317, 2022, 317, 428, 12334,343, 384, 51581,317, 15745,2275, 51585,317, 51586,363, 363, 363, 317, 51590,51594,51597,51599,51601,2127,
367, 51591,370, 317, 51593,501, 30926,370, 343, 12331,317, 317, 51592,51595,2058, 51596,530, 2571, 5149, 370, 471, 51598,2058, 362, 343, 5661, 51600,
- 317, 5661, 19617,3243, 2044, 51603,51604,4984, 51605,51607,51612,10476,51615,1453, 51617,12598,2022, 363, 317, 51606,51608,6674, 51609,51610,15738,51611,427,
- 317, 390, 317, 317, 1347, 10592,390, 317, 317, 317, 345, 4943, 51613,51585,51614,370, 317, 2272, 2022, 12331,51616,1020, 345, 317, 51618,51619,363,
+ 317, 5661, 19617,3243, 2044, 51603,51604,4984, 51605,51607,51612,10476,51615,1453, 51617,12598,2022, 363, 317, 51606,51608,6674, 51609,51610,15738,51611,427,
+ 317, 390, 317, 317, 1347, 10592,390, 317, 317, 317, 345, 4943, 51613,51585,51614,370, 317, 2272, 2022, 12331,51616,1020, 345, 317, 51618,51619,363,
40212,51621,51628,51634,51635,51641,343, 356, 343, 51622,51625,51626,317, 9357, 51623,51624,578, 428, 578, 390, 29424,51627,51629,51631,12719,12719,51630,
12719,51632,2117, 20496,51633,49759,43523,12719,317, 343, 51636,450, 51638,51640,49762,9878, 2134, 51637,6674, 428, 9878, 51639,2116, 49765,343, 371, 51642,
373, 51644,51643,51645,51647,51652,51653,51673,5627, 501, 51678,35144,51648,51650,51651,51649,479, 363, 11236,51654,51656,51657,51663,51665,51666,51667,51670,
- 51672,2081, 7590, 51655,3529, 51658,51660,51661,2272, 51659,3967, 370, 404, 317, 51662,51664,7590, 2134, 10429,51668,51669,370, 51671,501, 317, 6318, 370,
+ 51672,2081, 7590, 51655,3529, 51658,51660,51661,2272, 51659,3967, 370, 404, 317, 51662,51664,7590, 2134, 10429,51668,51669,370, 51671,501, 317, 6318, 370,
19390,343, 2272, 44520,51674,51675,448, 2163, 9779, 51676,51677,1588, 1588, 2510, 370, 51680,51686,6598, 370, 51690,51681,4564, 4984, 51682,51685,380, 19617,
363, 501, 51683,501, 51684,363, 3999, 363, 23232,317, 9914, 14832,51687,51688,11442,5661, 2188, 51689,363, 363, 363, 363, 51692,51709,51714,51719,51732,
- 51744,51750,51760,51771,51693,51696,51698,51699,51700,32867,51704,51707,317, 51694,51695,4984, 51697,370, 397, 51701,6563, 6675, 317, 51702,428, 51703,317,
+ 51744,51750,51760,51771,51693,51696,51698,51699,51700,32867,51704,51707,317, 51694,51695,4984, 51697,370, 397, 51701,6563, 6675, 317, 51702,428, 51703,317,
51705,2022, 51706,51708,384, 51710,51711,558, 51712,51713,362, 2355, 370, 370, 362, 2022, 350, 990, 4943, 51715,51716,51717,8392, 317, 317, 51718,51720,
51722,51727,12744,51730,51721,2022, 2037, 10641,51723,404, 51726,363, 51724,51725,317, 7737, 448, 1230, 51728,2022, 51729,370, 12060,32897,51731,2022, 51733,
605, 51736,51738,51743,2366, 343, 8807, 51734,24457,51735,363, 2087, 49843,317, 51737,51739,404, 363, 1358, 370, 349, 51741,363, 51740,1020, 404, 51742,
- 25952,7237, 19617,370, 396, 362, 51745,51746,51748,10430,51749,478, 51588,542, 51747,3987, 51751,51754,3529, 51757,51759,6021, 396, 6780, 51752,51753,390,
+ 25952,7237, 19617,370, 396, 362, 51745,51746,51748,10430,51749,478, 51588,542, 51747,3987, 51751,51754,3529, 51757,51759,6021, 396, 6780, 51752,51753,390,
317, 317, 5561, 317, 317, 351, 317, 51755,51756,41998,2022, 317, 19187,362, 343, 370, 51758,350, 317, 396, 2419, 317, 51761,1020, 51763,51767,51770,
350, 51762,6021, 10476,362, 51764,51766,476, 51765,370, 542, 51768,51769,343, 317, 317, 317, 437, 51772,51774,51778,51780,51781,51775,51776,8392, 51777,
2295, 317, 28369,370, 965, 51779,317, 396, 51783,51789,2296, 49818,2110, 12199,51796,51784,22671,51785,39818,51786,51787,545, 370, 19390,5158, 19390,51788,
2546, 9779, 51790,51791,8301, 51792,6195, 345, 16503,343, 1588, 389, 5108, 51793,51795,51794,51798,51799,51801,51804,51821,51836,51837,51838,1230, 51839,51802,
362, 20578,343, 6675, 8231, 51803,44730,317, 373, 404, 51805,49825,51807,51808,51810,2058, 51813,51817,51818,2551, 5561, 51820,437, 317, 7028, 23232,51806,
- 362, 362, 317, 362, 317, 22459,350, 5561, 12349,51809,51811,2148, 51812,12696,12696,6736, 1060, 370, 10476,317, 51814,5017, 2022, 51816,2391, 2058, 5149,
+ 362, 362, 317, 362, 317, 22459,350, 5561, 12349,51809,51811,2148, 51812,12696,12696,6736, 1060, 370, 10476,317, 51814,5017, 2022, 51816,2391, 2058, 5149,
5149, 428, 51815,343, 384, 317, 4984, 370, 343, 363, 317, 2058, 35986,6675, 51819,2402, 51822,2074, 51824,51825,51827,51828,51831,51833,51835,350, 51823,
- 5055, 363, 363, 51826,2022, 370, 404, 2110, 6859, 16838,51829,51830,47970,317, 15734,43090,5055, 317, 370, 448, 362, 51832,51834,384, 14289,363, 2391,
+ 5055, 363, 363, 51826,2022, 370, 404, 2110, 6859, 16838,51829,51830,47970,317, 15734,43090,5055, 317, 370, 448, 362, 51832,51834,384, 14289,363, 2391,
2390, 17745,530, 363, 343, 363, 2317, 501, 13137,317, 343, 51840,384, 350, 51842,51859,51865,51866,51868,450, 51843,363, 51845,362, 51846,51847,51848,
51849,9350, 51852,17410,51858,317, 51844,5561, 1345, 51850,2022, 370, 51851,51853,51855,51857,51854,51856,1020, 363, 22466,51860,31150,389, 51861,2171, 51862,
51863,51864,51545,317, 317, 44555,439, 20638,404, 11236,404, 370, 362, 2272, 51867,317, 317, 49843,390, 51869,363, 362, 343, 345, 2058, 51871,51878,
- 51882,51890,51894,2419, 51872,5055, 19617,51873,51877,5450, 390, 363, 363, 428, 363, 51874,2593, 51876,6387, 25434,51875,1230, 1020, 1020, 3079, 51879,6645,
- 51880,51881,21037,2593, 51883,373, 51885,51889,51884,33170,2134, 433, 51886,363, 51887,51888,363, 5332, 317, 363, 317, 596, 7941, 51891,51892,542, 542,
- 51893,363, 29424,605, 51895,363, 51897,448, 363, 51896,363, 363, 5055, 44678,2355, 51898,51899,370, 370, 363, 317, 51901,51903,51911,51916,51917,2044,
- 32240,418, 51902,5661, 370, 381, 21767,4965, 6547, 11404,51904,51905,396, 51906,51907,25091,51909,51910,381, 1020, 317, 21074,1345, 343, 343, 21074,317,
- 1358, 31158,390, 345, 51908,370, 8506, 317, 51912,9878, 396, 471, 2108, 390, 381, 51913,373, 9878, 51914,51915,397, 2067, 51918,317, 397, 6645, 7585,
+ 51882,51890,51894,2419, 51872,5055, 19617,51873,51877,5450, 390, 363, 363, 428, 363, 51874,2593, 51876,6387, 25434,51875,1230, 1020, 1020, 3079, 51879,6645,
+ 51880,51881,21037,2593, 51883,373, 51885,51889,51884,33170,2134, 433, 51886,363, 51887,51888,363, 5332, 317, 363, 317, 596, 7941, 51891,51892,542, 542,
+ 51893,363, 29424,605, 51895,363, 51897,448, 363, 51896,363, 363, 5055, 44678,2355, 51898,51899,370, 370, 363, 317, 51901,51903,51911,51916,51917,2044,
+ 32240,418, 51902,5661, 370, 381, 21767,4965, 6547, 11404,51904,51905,396, 51906,51907,25091,51909,51910,381, 1020, 317, 21074,1345, 343, 343, 21074,317,
+ 1358, 31158,390, 345, 51908,370, 8506, 317, 51912,9878, 396, 471, 2108, 390, 381, 51913,373, 9878, 51914,51915,397, 2067, 51918,317, 397, 6645, 7585,
2334, 23345,501, 317, 51921,51924,51925,553, 3243, 51922,4952, 51923,21123,371, 371, 2188, 51926,51928,51931,380, 317, 51927,349, 380, 5993, 51929,51930,
- 11442,363, 501, 404, 317, 9005, 51933,51934,51937,51939,5841, 343, 343, 51935,51936,317, 448, 51938,448, 6340, 2074, 51940,51941,363, 51943,51606,397,
- 1020, 51942,363, 12696,26385,51945,51946,51949,51951,317, 2022, 370, 381, 19617,317, 7784, 51947,317, 36322,51948,471, 380, 51950,51952,2058, 9549, 2058,
- 14689,51954,51957,51958,1230, 51961,51955,51956,1358, 448, 317, 51959,2070, 15637,3243, 51960,1020, 51962,51963,51965,51969,51970,51971,389, 51966,51967,388,
+ 11442,363, 501, 404, 317, 9005, 51933,51934,51937,51939,5841, 343, 343, 51935,51936,317, 448, 51938,448, 6340, 2074, 51940,51941,363, 51943,51606,397,
+ 1020, 51942,363, 12696,26385,51945,51946,51949,51951,317, 2022, 370, 381, 19617,317, 7784, 51947,317, 36322,51948,471, 380, 51950,51952,2058, 9549, 2058,
+ 14689,51954,51957,51958,1230, 51961,51955,51956,1358, 448, 317, 51959,2070, 15637,3243, 51960,1020, 51962,51963,51965,51969,51970,51971,389, 51966,51967,388,
51968,370, 990, 2272, 51972,51973,32912,51975,51976,370, 4984, 4943, 596, 317, 51977,317, 2037, 51979,51981,51982,51985,2301, 343, 363, 4576, 356, 51980,
2272, 1033, 2188, 2037, 2033, 2355, 10761,51983,10761,51984,9274, 343, 51986,51987,404, 3150, 345, 2035, 51989,490, 52001,52002,51990,51992,51995,525, 51999,
- 51991,51993,51994,51996,51998,51997,52000,363, 3182, 39819,52003,52032,52033,52061,52115,52129,52131,52168,52182,52207,52209,176, 52290,52312,52382,52385,177,
+ 51991,51993,51994,51996,51998,51997,52000,363, 3182, 39819,52003,52032,52033,52061,52115,52129,52131,52168,52182,52207,52209,176, 52290,52312,52382,52385,177,
52481,52552,52676,52681,52688,52691,52696,52706,404, 52004,52006,52012,380, 33846,52013,52014,52022,52024,52028,316, 3987, 52005,427, 5332, 427, 12461,52007,
317, 5037, 1347, 52008,52009,20920,52010,317, 2193, 9695, 52011,15616,351, 16825,343, 6036, 466, 351, 317, 317, 52015,52016,52017,2571, 24893,317, 52021,
- 10517,317, 6013, 589, 317, 52018,52019,10891,52020,317, 2060, 2272, 317, 404, 345, 466, 345, 52023,16865,52025,11897,5332, 52026,52027,410, 5675, 466,
+ 10517,317, 6013, 589, 317, 52018,52019,10891,52020,317, 2060, 2272, 317, 404, 345, 466, 345, 52023,16865,52025,11897,5332, 52026,52027,410, 5675, 466,
4562, 15124,52029,362, 52030,317, 355, 317, 52031,2272, 343, 345, 52034,52036,52037,348, 52046,2211, 427, 52054,52059,52035,5238, 9226, 401, 317, 18454,
490, 3773, 52038,52045,317, 11249,317, 490, 317, 52039,52043,52040,52041,52042,7888, 5476, 47501,5225, 356, 1347, 401, 52044,48787,317, 12966,3529, 52047,
52048,52049,317, 317, 52050,52051,52052,52053,52055,52056,52057,52058,52060,52062,8807, 2205, 52068,52071,12556,4591, 52077,52107,362, 52109,52110,7657, 49576,
4873, 52111,52113,1230, 5038, 317, 52063,7114, 52067,317, 565, 52064,52065,317, 52066,5055, 4268, 6674, 1033, 52069,384, 52070,466, 317, 13631,7825, 52072,
52074,52075,490, 52076,317, 338, 317, 52073,2086, 1347, 52078,16277,52086,52090,380, 52092,52094,52095,52097,52105,338, 317, 2406, 52079,9392, 5324, 52081,
- 9657, 22122,52085,52080,52082,317, 317, 52083,52084,3284, 15961,317, 52087,317, 52088,317, 317, 317, 345, 356, 7810, 343, 7765, 52089,317, 5418, 1347,
- 2086, 52091,52093,317, 317, 350, 11408,317, 40956,52096,317, 345, 52098,52100,317, 52099,52101,52102,52103,52104,52106,7821, 10519,10035,52108,28276,384,
+ 9657, 22122,52085,52080,52082,317, 317, 52083,52084,3284, 15961,317, 52087,317, 52088,317, 317, 317, 345, 356, 7810, 343, 7765, 52089,317, 5418, 1347,
+ 2086, 52091,52093,317, 317, 350, 11408,317, 40956,52096,317, 345, 52098,52100,317, 52099,52101,52102,52103,52104,52106,7821, 10519,10035,52108,28276,384,
317, 396, 490, 2108, 8178, 345, 490, 52112,490, 343, 8278, 490, 52114,317, 45892,42775,52116,2572, 31745,39398,52117,52119,350, 52120,52121,52123,52124,
- 52125,52128,317, 9876, 32606,363, 52118,351, 3079, 317, 317, 52122,317, 390, 6851, 317, 317, 4960, 2631, 3529, 317, 381, 317, 490, 343, 350, 351,
+ 52125,52128,317, 9876, 32606,363, 52118,351, 3079, 317, 317, 52122,317, 390, 6851, 317, 317, 4960, 2631, 3529, 317, 381, 317, 490, 343, 350, 351,
52126,343, 332, 317, 343, 52127,52130,12487,551, 52132,52157,52158,52161,52163,2537, 490, 52164,52165,404, 52167,52133,52134,14263,52138,52140,52142,52148,
- 52150,52151,490, 28337,52153,52154,476, 345, 5689, 43907,52135,52136,13300,52137,10836,52139,3469, 514, 363, 52141,52143,52145,52144,404, 52146,32397,8944,
- 52147,52149,1548, 363, 6228, 317, 317, 317, 317, 401, 476, 7035, 52152,8304, 5055, 404, 52155,52156,545, 317, 317, 363, 52159,52160,317, 38461,381,
+ 52150,52151,490, 28337,52153,52154,476, 345, 5689, 43907,52135,52136,13300,52137,10836,52139,3469, 514, 363, 52141,52143,52145,52144,404, 52146,32397,8944,
+ 52147,52149,1548, 363, 6228, 317, 317, 317, 317, 401, 476, 7035, 52152,8304, 5055, 404, 52155,52156,545, 317, 317, 363, 52159,52160,317, 38461,381,
317, 2551, 404, 381, 52162,490, 6964, 4984, 317, 5238, 380, 44197,478, 52166,362, 6138, 365, 317, 52169,48879,52171,52173,345, 52174,52175,52176,52177,
- 52178,52180,52181,50093,52170,317, 32951,339, 332, 317, 52172,354, 12693,10471,4965, 13611,35634,362, 5255, 2063, 52179,22665,16187,12704,15772,3648, 6988,
- 356, 317, 52183,52184,52186,14223,52187,17350,52188,52189,9031, 52193,52194,52204,52205,4738, 27584,52185,14223,7777, 317, 380, 345, 10149,317, 4965, 466,
- 12785,5896, 2188, 52190,52192,30089,343, 501, 345, 350, 553, 343, 317, 317, 52191,511, 11938,317, 28207,396, 317, 6394, 384, 390, 52195,4738, 350,
- 350, 52197,52198,1347, 52196,317, 7911, 50574,52199,52201,52200,317, 7428, 52202,52203,11485,350, 14905,52206,350, 317, 6409, 52208,24119,596, 52210,345,
- 52211,949, 52212,52232,52233,52240,52241,52244,52245,8948, 52248,52256,52258,2052, 52265,52267,6601, 52281,52283,52284,52285,52287,2003, 350, 370, 363, 2272,
+ 52178,52180,52181,50093,52170,317, 32951,339, 332, 317, 52172,354, 12693,10471,4965, 13611,35634,362, 5255, 2063, 52179,22665,16187,12704,15772,3648, 6988,
+ 356, 317, 52183,52184,52186,14223,52187,17350,52188,52189,9031, 52193,52194,52204,52205,4738, 27584,52185,14223,7777, 317, 380, 345, 10149,317, 4965, 466,
+ 12785,5896, 2188, 52190,52192,30089,343, 501, 345, 350, 553, 343, 317, 317, 52191,511, 11938,317, 28207,396, 317, 6394, 384, 390, 52195,4738, 350,
+ 350, 52197,52198,1347, 52196,317, 7911, 50574,52199,52201,52200,317, 7428, 52202,52203,11485,350, 14905,52206,350, 317, 6409, 52208,24119,596, 52210,345,
+ 52211,949, 52212,52232,52233,52240,52241,52244,52245,8948, 52248,52256,52258,2052, 52265,52267,6601, 52281,52283,52284,52285,52287,2003, 350, 370, 363, 2272,
52213,52215,52216,52217,5611, 52225,52230,363, 590, 52214,52218,52222,10648,343, 52223,52224,404, 317, 52219,363, 52220,10480,52221,8311, 317, 10255,19922,
- 490, 52226,52227,52228,52229,52231,317, 48354,19139,1358, 351, 52234,21274,52235,351, 1992, 52236,52238,52237,52239,15986,5991, 466, 741, 317, 351, 2537,
- 4984, 317, 52242,317, 357, 11831,317, 317, 11709,52243,5392, 12920,317, 52246,748, 551, 52247,52249,52250,490, 345, 52251,6937, 52252,52253,5611, 345,
+ 490, 52226,52227,52228,52229,52231,317, 48354,19139,1358, 351, 52234,21274,52235,351, 1992, 52236,52238,52237,52239,15986,5991, 466, 741, 317, 351, 2537,
+ 4984, 317, 52242,317, 357, 11831,317, 317, 11709,52243,5392, 12920,317, 52246,748, 551, 52247,52249,52250,490, 345, 52251,6937, 52252,52253,5611, 345,
317, 15090,317, 317, 317, 47325,11124,317, 52254,52255,490, 317, 317, 317, 317, 317, 2261, 317, 574, 52257,7678, 52259,5896, 52260,3023, 52262,52263,
- 317, 317, 6994, 343, 356, 356, 317, 1453, 348, 490, 52261,7214, 381, 317, 11709,7618, 2148, 371, 12943,7514, 11678,47261,4591, 317, 317, 1347, 1347,
+ 317, 317, 6994, 343, 356, 356, 317, 1453, 348, 490, 52261,7214, 381, 317, 11709,7618, 2148, 371, 12943,7514, 11678,47261,4591, 317, 317, 1347, 1347,
317, 52264,5363, 317, 52266,371, 371, 34510,363, 52268,52270,362, 52280,317, 5223, 317, 52269,343, 52271,52278,317, 317, 9856, 1347, 52272,4591, 52273,
- 52274,52275,52276,52277,52279,317, 317, 1358, 4980, 317, 52282,351, 7734, 4984, 18840,5840, 5991, 3999, 363, 317, 7688, 14475,317, 1020, 317, 52286,317,
- 317, 52288,363, 373, 52289,52291,52297,511, 52298,52299,52300,52310,317, 52311,52292,52294,52293,317, 356, 9139, 52295,5570, 52296,317, 317, 25055,317,
- 317, 351, 13387,3111, 52301,332, 1347, 52303,317, 52302,1347, 412, 317, 52304,316, 52307,317, 52305,52306,6607, 6021, 52308,345, 10674,52309,317, 428,
- 52313,52318,52321,52332,52337,52342,52345,52350,52351,52352,52353,52357,52364,52372,52377,5241, 52378,52314,52315,5126, 317, 7490, 566, 516, 6355, 52317,5447,
- 5126, 466, 52316,351, 52319,5412, 39082,317, 317, 52320,6002, 317, 52322,554, 52325,350, 52328,52330,317, 7785, 317, 52323,34127,1078, 1109, 317, 1881,
+ 52274,52275,52276,52277,52279,317, 317, 1358, 4980, 317, 52282,351, 7734, 4984, 18840,5840, 5991, 3999, 363, 317, 7688, 14475,317, 1020, 317, 52286,317,
+ 317, 52288,363, 373, 52289,52291,52297,511, 52298,52299,52300,52310,317, 52311,52292,52294,52293,317, 356, 9139, 52295,5570, 52296,317, 317, 25055,317,
+ 317, 351, 13387,3111, 52301,332, 1347, 52303,317, 52302,1347, 412, 317, 52304,316, 52307,317, 52305,52306,6607, 6021, 52308,345, 10674,52309,317, 428,
+ 52313,52318,52321,52332,52337,52342,52345,52350,52351,52352,52353,52357,52364,52372,52377,5241, 52378,52314,52315,5126, 317, 7490, 566, 516, 6355, 52317,5447,
+ 5126, 466, 52316,351, 52319,5412, 39082,317, 317, 52320,6002, 317, 52322,554, 52325,350, 52328,52330,317, 7785, 317, 52323,34127,1078, 1109, 317, 1881,
362, 317, 10625,52324,42698,29108,8243, 6394, 52326,489, 2142, 382, 2381, 317, 317, 52327,9530, 2369, 5570, 7530, 20219,52329,490, 490, 1109, 2381, 52331,
12731,6555, 52333,52334,52335,317, 52336,49994,574, 345, 1078, 343, 6598, 4591, 370, 371, 6555, 2533, 8765, 52338,2210, 52339,343, 52340,48840,52341,52343,
351, 52344,380, 52346,558, 317, 52347,52349,1108, 52348,317, 9623, 345, 7498, 317, 52354,52355,52356,553, 2381, 7565, 317, 317, 317, 362, 10561,52358,
52359,5120, 52360,52363,2715, 42843,52361,52362,52365,21245,7866, 52366,52368,9521, 52369,384, 12429,52367,12088,52370,52371,16500,52373,501, 536, 52374,13638,
- 4873, 52375,52376,37194,545, 317, 5120, 1358, 18911,317, 7386, 332, 370, 1020, 317, 52379,52380,52381,396, 490, 5324, 52383,52384,2402, 316, 52386,317,
+ 4873, 52375,52376,37194,545, 317, 5120, 1358, 18911,317, 7386, 332, 370, 1020, 317, 52379,52380,52381,396, 490, 5324, 52383,52384,2402, 316, 52386,317,
11635,52387,52388,52389,52390,52391,9059, 52394,52418,52420,6598, 52423,52427,52429,52449,52452,52456,52459,52460,52463,52471,52475,317, 52479,15581,22395,52480,
- 317, 52392,52393,365, 317, 365, 317, 317, 317, 2537, 5611, 317, 7865, 52395,52401,52406,52412,52413,52414,52415,13022,52396,6402, 52397,5238, 2146, 332,
- 52398,317, 52399,52400,52402,351, 52404,52405,52403,52407,363, 14377,52408,52409,52411,52410,5616, 9450, 379, 317, 6668, 52416,2537, 317, 52417,16339,317,
+ 317, 52392,52393,365, 317, 365, 317, 317, 317, 2537, 5611, 317, 7865, 52395,52401,52406,52412,52413,52414,52415,13022,52396,6402, 52397,5238, 2146, 332,
+ 52398,317, 52399,52400,52402,351, 52404,52405,52403,52407,363, 14377,52408,52409,52411,52410,5616, 9450, 379, 317, 6668, 52416,2537, 317, 52417,16339,317,
52419,362, 2553, 1345, 52421,317, 52422,7530, 965, 317, 52424,52426,11612,52425,317, 317, 38706,1347, 317, 52428,5332, 2134, 52430,52431,52435,52436,52438,
- 52442,52443,6195, 52447,5105, 2134, 343, 317, 34975,52432,5055, 545, 52433,390, 52434,317, 317, 52437,317, 52439,52440,52441,1325, 2328, 52444,317, 317,
+ 52442,52443,6195, 52447,5105, 2134, 343, 317, 34975,52432,5055, 545, 52433,390, 52434,317, 317, 52437,317, 52439,52440,52441,1325, 2328, 52444,317, 317,
52445,6108, 52446,52448,2071, 419, 52450,363, 52451,10625,29906,317, 351, 362, 13674,3999, 363, 15616,52453,52454,8488, 363, 590, 343, 317, 574, 52455,
- 637, 8248, 1160, 633, 317, 633, 317, 317, 317, 52457,52458,345, 343, 317, 490, 8685, 29910,52461,317, 52462,5626, 52464,52465,605, 52470,427, 371,
- 4965, 9624, 362, 16600,52466,52467,382, 7456, 52469,52447,343, 6420, 317, 52468,2369, 2328, 1347, 317, 362, 5557, 317, 28655,52472,52474,17988,362, 363,
+ 637, 8248, 1160, 633, 317, 633, 317, 317, 317, 52457,52458,345, 343, 317, 490, 8685, 29910,52461,317, 52462,5626, 52464,52465,605, 52470,427, 371,
+ 4965, 9624, 362, 16600,52466,52467,382, 7456, 52469,52447,343, 6420, 317, 52468,2369, 2328, 1347, 317, 362, 5557, 317, 28655,52472,52474,17988,362, 363,
380, 7911, 596, 2272, 11921,52473,5005, 2260, 317, 52476,52477,52478,363, 317, 15573,363, 12849,2402, 382, 7850, 52482,52483,52487,52489,52498,52502,52503,
- 350, 52504,3361, 52508,52526,52527,52528,52530,52545,52550,52551,52484,52486,52485,867, 2272, 351, 5570, 343, 52488,52490,396, 52491,52496,52492,52494,2329,
+ 350, 52504,3361, 52508,52526,52527,52528,52530,52545,52550,52551,52484,52486,52485,867, 2272, 351, 5570, 343, 52488,52490,396, 52491,52496,52492,52494,2329,
52493,52495,373, 52497,15108,52499,1020, 466, 52500,2584, 52501,1347, 8264, 2146, 2381, 490, 2035, 365, 4965, 428, 317, 52505,52506,52507,52509,29397,52514,
52515,1347, 52516,52520,52521,52522,18908,52510,52511,52512,52513,19201,7225, 52517,52518,52519,52523,52524,52525,3505, 1230, 52529,52531,52532,52541,350, 20774,
- 350, 1588, 52544,317, 40225,7149, 2171, 7143, 317, 317, 52533,52536,317, 317, 52534,490, 52535,5838, 52537,370, 52538,2553, 52539,52540,621, 52542,371,
+ 350, 1588, 52544,317, 40225,7149, 2171, 7143, 317, 317, 52533,52536,317, 317, 52534,490, 52535,5838, 52537,370, 52538,2553, 52539,52540,621, 52542,371,
422, 52543,363, 1160, 401, 317, 15179,2222, 52546,52547,52548,350, 317, 52549,317, 748, 317, 350, 6203, 317, 390, 317, 45529,6322, 52553,52595,52599,
52606,343, 52608,52642,52645,52646,52648,52666,52668,317, 52673,52554,52558,5266, 52560,8546, 52561,52572,52581,52583,381, 52587,52591,348, 350, 52555,52556,
52557,7223, 427, 2156, 5492, 52559,11818,35272,6228, 14773,2171, 20913,22240,52562,52563,362, 317, 10994,52569,356, 52564,317, 52566,52565,1160, 397, 52567,
52568,52570,52571,52573,52575,52574,52576,52577,52578,8804, 52579,52580,52582,52584,393, 52585,14031,52586,2171, 52588,52589,373, 52590,401, 345, 15179,52592,
52594,404, 52593,5652, 4554, 52596,52597,52598,317, 351, 52600,52601,52602,5273, 52605,332, 4591, 345, 52603,317, 21033,52604,317, 8304, 7490, 52607,52609,
- 52616,52617,52618,52627,19617,52629,7035, 52610,52615,52611,52612,52613,52614,5661, 3987, 317, 2719, 4304, 52619,317, 52624,370, 317, 317, 317, 52620,5217,
+ 52616,52617,52618,52627,19617,52629,7035, 52610,52615,52611,52612,52613,52614,5661, 3987, 317, 2719, 4304, 52619,317, 52624,370, 317, 317, 317, 52620,5217,
52621,317, 9313, 5250, 345, 52622,52623,52625,52626,363, 52628,52630,6088, 2272, 52631,52636,52632,52633,52634,52635,52637,52638,52639,52640,52641,317, 52643,
- 2510, 317, 317, 317, 2236, 52644,351, 533, 52647,317, 317, 381, 501, 15528,317, 6578, 52649,52655,52650,18946,52651,317, 317, 52652,52653,52654,317,
- 1860, 4591, 13631,356, 490, 52656,23172,13631,52657,5005, 52664,2193, 10254,1428, 52658,52659,7187, 317, 52660,1078, 52661,52662,52663,52665,1032, 52667,633,
- 694, 350, 317, 52669,52671,52672,1347, 317, 317, 9931, 52670,7866, 466, 52674,52675,4738, 350, 350, 350, 317, 31418,317, 317, 7386, 404, 52677,2236,
+ 2510, 317, 317, 317, 2236, 52644,351, 533, 52647,317, 317, 381, 501, 15528,317, 6578, 52649,52655,52650,18946,52651,317, 317, 52652,52653,52654,317,
+ 1860, 4591, 13631,356, 490, 52656,23172,13631,52657,5005, 52664,2193, 10254,1428, 52658,52659,7187, 317, 52660,1078, 52661,52662,52663,52665,1032, 52667,633,
+ 694, 350, 317, 52669,52671,52672,1347, 317, 317, 9931, 52670,7866, 466, 52674,52675,4738, 350, 350, 350, 317, 31418,317, 317, 7386, 404, 52677,2236,
52679,52680,52678,2341, 351, 15989,342, 317, 52682,345, 52683,345, 52684,52685,52686,52687,351, 52689,345, 317, 331, 52690,7063, 52692,317, 52693,52694,
5942, 365, 52695,52697,52698,52699,2146, 52705,2391, 38536,52700,574, 19303,52701,466, 511, 362, 52704,4980, 52702,2577, 52703,356, 381, 10626,317, 52707,
52708,317, 7902, 52709,52710,371, 9623, 52711,12931,52713,52714,52712,46874,52715,11617,52716,52718,17274,52720,52721,5084, 52719,382, 317, 2291, 317, 52723,
- 52724,635, 317, 363, 52725,52726,52727,52736,179, 52864,52915,52940,52942,52962,553, 52975,52977,180, 53100,181, 53223,345, 53227,53230,182, 53462,2110,
+ 52724,635, 317, 363, 52725,52726,52727,52736,179, 52864,52915,52940,52942,52962,553, 52975,52977,180, 53100,181, 53223,345, 53227,53230,182, 53462,2110,
53513,53514,53515,53517,53534,317, 317, 52728,52730,17462,52732,52733,6551, 52729,4965, 6228, 916, 633, 52731,317, 13457,52734,317, 52735,52737,52740,52744,
52746,52779,3941, 338, 33038,52791,317, 35155,7385, 13376,317, 52738,365, 490, 317, 52739,395, 52741,52742,52743,317, 52745,52747,52757,52766,52775,52776,
52777,52748,380, 52751,356, 356, 52756,356, 317, 52749,317, 18438,317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 1347, 52750,
317, 10072,317, 5300, 317, 317, 371, 52752,52753,52754,343, 52755,11831,10506,883, 514, 5836, 52758,52759,350, 2715, 5995, 1548, 317, 52760,52761,24775,
52762,52763,362, 52764,52765,317, 490, 2105, 21183,1108, 363, 363, 2310, 52767,52768,332, 52769,33428,9174, 590, 11147,5120, 5890, 52770,52771,52772,52773,
- 52774,361, 3284, 52778,317, 52780,2134, 52781,52785,52786,52788,317, 52789,1160, 52782,41595,52783,10641,317, 5300, 637, 5942, 6996, 633, 317, 52784,317,
+ 52774,361, 3284, 52778,317, 52780,2134, 52781,52785,52786,52788,317, 52789,1160, 52782,41595,52783,10641,317, 5300, 637, 5942, 6996, 633, 317, 52784,317,
52787,345, 10641,317, 317, 317, 2391, 2163, 52790,317, 52792,317, 52793,52797,52803,52814,52818,52820,52823,52824,52826,52828,52832,52836,52840,52848,52849,
52859,52862,52794,52795,52796,7405, 1347, 52798,52800,380, 52799,11272,490, 52801,52802,9140, 52804,52805,52813,343, 52806,52808,427, 52807,52809,52810,52811,
52812,49876,52815,52816,52817,52819,427, 21318,5241, 52821,52822,345, 5459, 52825,52827,530, 45067,52829,52830,52831,10648,317, 52833,52834,52835,52837,52838,
- 52839,52841,52842,52843,6188, 5687, 52844,52845,343, 52846,52847,18995,6409, 52850,52853,317, 3122, 11219,52856,52858,52851,52852,52854,52855,1347, 7222, 317,
+ 52839,52841,52842,52843,6188, 5687, 52844,52845,343, 52846,52847,18995,6409, 52850,52853,317, 3122, 11219,52856,52858,52851,52852,52854,52855,1347, 7222, 317,
595, 52857,460, 52860,52861,52863,52865,52866,52867,52868,52890,52891,52894,13023,52896,13917,52897,52899,2178, 32249,52900,52903,52908,2110, 6195, 52911,20485,
2074, 5653, 52869,52870,596, 52872,6674, 4943, 1347, 9931, 52871,7618, 317, 345, 52873,466, 52874,52882,52883,9624, 52884,52885,52886,52887,52889,52875,52876,
52877,52878,52879,52880,52881,7064, 7448, 14610,363, 363, 476, 7064, 316, 5809, 52888,1588, 2301, 2108, 52892,52893,551, 52895,2022, 363, 4952, 11229,46664,
7151, 52898,18720,16656,52901,52902,52904,52905,5017, 2152, 52907,2151, 2551, 5225, 52906,52909,5205, 52910,5841, 11279,5742, 370, 52912,52914,2063, 371, 52913,
567, 349, 596, 1033, 52916,52920,343, 343, 52925,52930,52931,52936,52939,2402, 52917,13638,52918,52919,2845, 52921,52922,49915,52923,52924,52926,52928,43841,
23247,52929,2108, 36545,52927,25135,1109, 1108, 52932,605, 317, 52933,52934,52935,390, 363, 490, 350, 52937,52938,52941,2521, 2272, 317, 52943,52945,52946,
- 52950,52954,52956,317, 52958,52944,52947,434, 317, 52948,40690,52949,52951,8546, 31594,52952,52953,317, 22232,5570, 14981,52955,2035, 1358, 317, 52957,6188,
+ 52950,52954,52956,317, 52958,52944,52947,434, 317, 52948,40690,52949,52951,8546, 31594,52952,52953,317, 22232,5570, 14981,52955,2035, 1358, 317, 52957,6188,
4268, 9836, 52959,52960,317, 317, 317, 52961,52963,52971,52973,40781,317, 52974,1601, 13376,52964,52966,52968,490, 11147,52965,52967,371, 52969,371, 52970,
- 52967,317, 371, 371, 317, 345, 52972,401, 9768, 52976,317, 20231,596, 52978,52979,52986,17851,52989,52991,52992,52996,52997,3611, 621, 332, 13376,365,
- 317, 490, 490, 2381, 42796,52980,52981,52982,1011, 633, 673, 633, 317, 343, 23950,7035, 52983,317, 52984,52985,317, 317, 317, 7155, 317, 317, 756,
- 620, 317, 317, 317, 317, 317, 317, 390, 428, 490, 52987,3361, 52988,380, 33656,52990,317, 17333,345, 9450, 5309, 345, 52993,317, 5611, 7892, 5836,
- 362, 52994,363, 52995,52998,13553,7480, 39966,2108, 3284, 52999,53006,8600, 53011,53015,53021,53023,53025,53028,53038,53045,362, 53079,53080,40560,53084,8301,
+ 52967,317, 371, 371, 317, 345, 52972,401, 9768, 52976,317, 20231,596, 52978,52979,52986,17851,52989,52991,52992,52996,52997,3611, 621, 332, 13376,365,
+ 317, 490, 490, 2381, 42796,52980,52981,52982,1011, 633, 673, 633, 317, 343, 23950,7035, 52983,317, 52984,52985,317, 317, 317, 7155, 317, 317, 756,
+ 620, 317, 317, 317, 317, 317, 317, 390, 428, 490, 52987,3361, 52988,380, 33656,52990,317, 17333,345, 9450, 5309, 345, 52993,317, 5611, 7892, 5836,
+ 362, 52994,363, 52995,52998,13553,7480, 39966,2108, 3284, 52999,53006,8600, 53011,53015,53021,53023,53025,53028,53038,53045,362, 53079,53080,40560,53084,8301,
53088,53091,53093,53096,317, 370, 53000,317, 53001,53002,53005,8562, 7399, 317, 317, 317, 24797,317, 53003,317, 53004,5836, 339, 339, 53007,53008,19139,
- 53009,9809, 317, 53010,2117, 3007, 381, 3007, 390, 317, 53012,370, 1230, 363, 53014,2110, 53013,31475,317, 5897, 543, 9012, 10283,427, 990, 11959,365,
+ 53009,9809, 317, 53010,2117, 3007, 381, 3007, 390, 317, 53012,370, 1230, 363, 53014,2110, 53013,31475,317, 5897, 543, 9012, 10283,427, 990, 11959,365,
2035, 53016,317, 351, 53017,53018,1109, 53019,53020,5836, 317, 427, 4943, 317, 741, 332, 317, 317, 365, 7438, 1331, 343, 345, 578, 53022,2328, 12487,
- 53024,53026,53027,363, 6563, 363, 8522, 363, 4952, 53029,590, 2142, 53030,5839, 1943, 53031,345, 53032,53036,53037,317, 7874, 427, 1588, 53033,53034,370,
- 317, 6578, 317, 53035,317, 345, 370, 8448, 7888, 317, 7035, 2521, 53039,466, 53040,16416,53042,53044,3646, 16143,53041,363, 53043,53046,53048,53050,9624,
+ 53024,53026,53027,363, 6563, 363, 8522, 363, 4952, 53029,590, 2142, 53030,5839, 1943, 53031,345, 53032,53036,53037,317, 7874, 427, 1588, 53033,53034,370,
+ 317, 6578, 317, 53035,317, 345, 370, 8448, 7888, 317, 7035, 2521, 53039,466, 53040,16416,53042,53044,3646, 16143,53041,363, 53043,53046,53048,53050,9624,
2413, 53061,53063,362, 350, 53073,51449,53075,5840, 5037, 53078,317, 343, 345, 317, 53047,23232,317, 317, 2193, 20577,53049,479, 439, 9696, 317, 53051,
- 53052,53056,4980, 11962,317, 350, 351, 53053,53054,53055,9325, 427, 637, 6996, 317, 637, 53057,317, 53059,317, 47501,53060,53058,7651, 53062,6563, 393,
+ 53052,53056,4980, 11962,317, 350, 351, 53053,53054,53055,9325, 427, 637, 6996, 317, 637, 53057,317, 53059,317, 47501,53060,53058,7651, 53062,6563, 393,
16891,53064,53065,45065,35144,53066,53067,53068,18930,6046, 53071,363, 2369, 317, 317, 37935,45067,21434,6718, 351, 53069,317, 53070,351, 317, 390, 53072,
12696,53074,490, 5223, 1230, 317, 28926,365, 6736, 363, 7698, 53076,53077,6188, 14079,343, 2063, 2301, 6546, 371, 351, 673, 53081,37391,53082,1109, 53083,
- 4925, 45529,5184, 317, 53085,53086,53087,6736, 363, 53089,53090,356, 363, 317, 53092,350, 363, 317, 351, 8325, 317, 390, 53094,53095,53097,343, 356,
- 53098,53099,53101,345, 53102,53103,345, 7698, 53107,317, 6207, 365, 1943, 317, 317, 2001, 401, 53104,53106,382, 317, 53105,5174, 317, 370, 317, 6409,
- 5611, 53108,2177, 53117,53122,53132,53151,53152,53158,53161,53183,53185,53188,53201,2063, 53206,53212,53214,53219,317, 38027,53220,365, 317, 7386, 362, 317,
+ 4925, 45529,5184, 317, 53085,53086,53087,6736, 363, 53089,53090,356, 363, 317, 53092,350, 363, 317, 351, 8325, 317, 390, 53094,53095,53097,343, 356,
+ 53098,53099,53101,345, 53102,53103,345, 7698, 53107,317, 6207, 365, 1943, 317, 317, 2001, 401, 53104,53106,382, 317, 53105,5174, 317, 370, 317, 6409,
+ 5611, 53108,2177, 53117,53122,53132,53151,53152,53158,53161,53183,53185,53188,53201,2063, 53206,53212,53214,53219,317, 38027,53220,365, 317, 7386, 362, 317,
332, 6551, 53109,53110,53114,53115,53116,490, 489, 317, 2322, 53111,53112,53113,50213,7668, 4268, 7785, 53118,53119,53121,317, 317, 6326, 317, 317, 53120,
- 19287,605, 2381, 317, 317, 317, 53123,5526, 53124,32693,14409,53125,53127,867, 53128,53129,1160, 6763, 17513,6497, 317, 380, 317, 7949, 53126,381, 2178,
- 53130,53131,5942, 53133,633, 53134,53135,317, 20857,53139,867, 53141,53143,53144,53148,574, 53150,317, 365, 25413,53136,53137,53138,53140,355, 53142,7384,
- 490, 418, 53145,317, 2108, 317, 317, 317, 53147,317, 53146,24623,11273,317, 6894, 53149,53153,14132,53154,53155,317, 7035, 317, 345, 5623, 53156,466,
- 53157,53159,317, 53160,1011, 53162,53167,53168,27689,351, 9624, 6714, 31980,53171,53176,5055, 53177,39736,5419, 317, 356, 53163,53164,53165,1347, 53166,381,
- 7888, 351, 5335, 53169,317, 1597, 53170,7385, 52806,36371,5890, 53172,317, 53174,7142, 53175,53173,1160, 8447, 370, 5441, 18588,22668,30314,317, 53178,6195,
+ 19287,605, 2381, 317, 317, 317, 53123,5526, 53124,32693,14409,53125,53127,867, 53128,53129,1160, 6763, 17513,6497, 317, 380, 317, 7949, 53126,381, 2178,
+ 53130,53131,5942, 53133,633, 53134,53135,317, 20857,53139,867, 53141,53143,53144,53148,574, 53150,317, 365, 25413,53136,53137,53138,53140,355, 53142,7384,
+ 490, 418, 53145,317, 2108, 317, 317, 317, 53147,317, 53146,24623,11273,317, 6894, 53149,53153,14132,53154,53155,317, 7035, 317, 345, 5623, 53156,466,
+ 53157,53159,317, 53160,1011, 53162,53167,53168,27689,351, 9624, 6714, 31980,53171,53176,5055, 53177,39736,5419, 317, 356, 53163,53164,53165,1347, 53166,381,
+ 7888, 351, 5335, 53169,317, 1597, 53170,7385, 52806,36371,5890, 53172,317, 53174,7142, 53175,53173,1160, 8447, 370, 5441, 18588,22668,30314,317, 53178,6195,
53179,53180,5201, 53181,1325, 53182,7821, 53184,317, 53186,12352,5055, 350, 53187,317, 396, 5308, 53189,53190,53199,6697, 317, 42580,1999, 558, 53191,53192,
- 6402, 490, 5324, 53193,53198,5557, 317, 53194,53195,53196,53197,10997,343, 10592,53200,9624, 382, 317, 365, 317, 317, 317, 351, 9624, 317, 363, 371,
- 965, 489, 317, 53202,317, 53204,26214,5890, 490, 53203,317, 317, 53205,5120, 53207,21074,363, 53208,428, 605, 351, 53209,53210,53211,7091, 53213,466,
- 501, 13226,6176, 317, 479, 317, 2222, 317, 351, 317, 317, 317, 7386, 381, 390, 381, 53215,53216,22668,345, 317, 53217,53218,345, 370, 10149,317,
+ 6402, 490, 5324, 53193,53198,5557, 317, 53194,53195,53196,53197,10997,343, 10592,53200,9624, 382, 317, 365, 317, 317, 317, 351, 9624, 317, 363, 371,
+ 965, 489, 317, 53202,317, 53204,26214,5890, 490, 53203,317, 317, 53205,5120, 53207,21074,363, 53208,428, 605, 351, 53209,53210,53211,7091, 53213,466,
+ 501, 13226,6176, 317, 479, 317, 2222, 317, 351, 317, 317, 317, 7386, 381, 390, 381, 53215,53216,22668,345, 317, 53217,53218,345, 370, 10149,317,
53221,317, 317, 53222,5897, 34041,15540,53224,501, 343, 53226,553, 3236, 53225,53228,53229,53231,53244,53245,53247,53249,53251,53253,596, 53254,53255,53256,
1444, 53261,53263,53264,53265,388, 12494,53268,53232,53236,46796,53237,53238,317, 317, 6394, 53239,53242,317, 11388,317, 5612, 576, 53233,53235,590, 53234,
- 614, 332, 6419, 52644,9947, 6540, 1347, 5241, 15867,11388,53240,53241,53243,343, 1160, 6817, 1459, 10471,490, 53246,44206,317, 317, 5038, 53248,317, 490,
- 317, 5392, 490, 28565,53250,5033, 317, 2004, 8937, 53252,363, 14415,53257,53258,15108,7116, 53259,53260,317, 363, 53262,5022, 53266,53267,53269,3611, 1444,
- 53270,53288,53294,53324,53336,53342,53348,53350,53361,53379,53381,53385,53390,53393,53394,53398,53404,53406,53416,53436,53451,53271,365, 53275,2163, 53277,317,
+ 614, 332, 6419, 52644,9947, 6540, 1347, 5241, 15867,11388,53240,53241,53243,343, 1160, 6817, 1459, 10471,490, 53246,44206,317, 317, 5038, 53248,317, 490,
+ 317, 5392, 490, 28565,53250,5033, 317, 2004, 8937, 53252,363, 14415,53257,53258,15108,7116, 53259,53260,317, 363, 53262,5022, 53266,53267,53269,3611, 1444,
+ 53270,53288,53294,53324,53336,53342,53348,53350,53361,53379,53381,53385,53390,53393,53394,53398,53404,53406,53416,53436,53451,53271,365, 53275,2163, 53277,317,
53280,365, 53283,490, 53272,53273,53274,53276,53278,53279,53281,53282,317, 53284,53285,53286,53287,53289,53290,53291,53292,317, 53293,382, 422, 53295,53303,
- 53309,7035, 53312,53323,53296,53299,53302,53297,53298,53300,53301,317, 9067, 356, 990, 990, 53304,53305,53306,53307,53308,317, 380, 53310,343, 350, 2391,
- 317, 53311,317, 53313,53316,8178, 53314,53315,53317,53319,53320,53318,53321,53322,53325,53329,3125, 53326,53327,53328,53330,53335,53331,53332,53333,53334,317,
+ 53309,7035, 53312,53323,53296,53299,53302,53297,53298,53300,53301,317, 9067, 356, 990, 990, 53304,53305,53306,53307,53308,317, 380, 53310,343, 350, 2391,
+ 317, 53311,317, 53313,53316,8178, 53314,53315,53317,53319,53320,53318,53321,53322,53325,53329,3125, 53326,53327,53328,53330,53335,53331,53332,53333,53334,317,
350, 53337,53338,317, 351, 12551,365, 41309,8937, 53339,53340,370, 317, 25960,343, 53341,345, 16018,53343,53345,343, 53344,53346,53347,53349,49012,53351,
53355,2845, 53356,350, 3387, 53357,13066,490, 53358,53352,53353,1347, 317, 53354,928, 651, 29586,490, 53359,1481, 53360,53362,53365,53369,317, 53370,34164,
- 317, 53363,317, 7261, 53364,53366,53367,53368,1160, 8275, 53371,53374,53372,53373,53375,53376,53377,53378,53380,317, 53382,53383,53384,8274, 2001, 332, 339,
+ 317, 53363,317, 7261, 53364,53366,53367,53368,1160, 8275, 53371,53374,53372,53373,53375,53376,53377,53378,53380,317, 53382,53383,53384,8274, 2001, 332, 339,
8178, 53386,53387,371, 53388,317, 53389,53391,381, 53392,25568,351, 384, 2152, 53395,343, 53396,53397,30236,317, 53399,53400,2369, 53401,53402,53403,53405,
- 53407,53408,373, 21606,380, 53409,53410,53411,53412,53413,53414,53415,317, 5105, 53417,53418,53419,53427,6917, 53429,53432,53434,345, 53435,317, 317, 393,
- 317, 317, 317, 53420,1992, 53421,53423,53422,317, 8544, 317, 51097,53424,19720,53425,53426,53428,53430,490, 53431,53433,553, 29586,381, 6228, 317, 2077,
- 590, 317, 53437,53440,53442,53443,9696, 53445,317, 390, 53450,317, 53438,53439,466, 53441,317, 18021,343, 317, 357, 317, 317, 53444,53446,53448,433,
+ 53407,53408,373, 21606,380, 53409,53410,53411,53412,53413,53414,53415,317, 5105, 53417,53418,53419,53427,6917, 53429,53432,53434,345, 53435,317, 317, 393,
+ 317, 317, 317, 53420,1992, 53421,53423,53422,317, 8544, 317, 51097,53424,19720,53425,53426,53428,53430,490, 53431,53433,553, 29586,381, 6228, 317, 2077,
+ 590, 317, 53437,53440,53442,53443,9696, 53445,317, 390, 53450,317, 53438,53439,466, 53441,317, 18021,343, 317, 357, 317, 317, 53444,53446,53448,433,
381, 26610,317, 1160, 53447,53449,5335, 489, 6228, 317, 2631, 2077, 317, 365, 53452,53461,5441, 53453,53454,53455,53456,53457,53458,2063, 53459,53460,53463,
53465,6726, 2024, 53470,53474,13638,362, 2391, 53475,53483,53489,53497,53510,317, 53464,53466,317, 5332, 53467,2568, 350, 53469,53468,317, 2222, 6578, 15334,
2211, 3987, 428, 2381, 53471,363, 53472,53473,3787, 317, 332, 6433, 332, 53476,501, 2163, 401, 53477,53478,53479,53480,53481,53482,53484,317, 53485,53486,
- 53487,490, 8636, 53488,46856,53490,53493,590, 53494,53491,53492,343, 53495,490, 317, 317, 332, 317, 590, 53496,53498,35155,53499,53507,53508,362, 363,
- 317, 317, 53500,53505,53506,362, 53501,53502,53503,53504,7618, 1160, 53509,362, 317, 11915,53511,6691, 350, 53512,15951,381, 5038, 970, 3361, 7618, 5394,
+ 53487,490, 8636, 53488,46856,53490,53493,590, 53494,53491,53492,343, 53495,490, 317, 317, 332, 317, 590, 53496,53498,35155,53499,53507,53508,362, 363,
+ 317, 317, 53500,53505,53506,362, 53501,53502,53503,53504,7618, 1160, 53509,362, 317, 11915,53511,6691, 350, 53512,15951,381, 5038, 970, 3361, 7618, 5394,
466, 19922,363, 404, 53516,1060, 8649, 8637, 12277,53518,53529,11831,53531,53519,53521,7865, 44428,53522,317, 596, 53523,53527,53528,6901, 53520,53524,53525,
- 7384, 332, 53526,332, 53530,53532,53533,363, 53535,490, 350, 53536,53537,53540,23247,53542,317, 11533,8099, 317, 37402,554, 53538,53539,332, 53541,332,
- 5173, 3429, 317, 53543,317, 590, 3182, 3738, 53545,380, 53548,53551,53546,53547,53549,53550,2288, 46697,5022, 53552,370, 365, 53554,53555,53556,980, 4186,
- 53558,7433, 53560,38877,343, 53564,317, 53567,53559,317, 490, 317, 53095,339, 412, 53561,565, 53563,53562,332, 11347,53565,53566,53569,53572,317, 1959,
- 53574,1230, 53575,53579,390, 53582,53570,53571,53573,1087, 53576,2366, 53577,317, 53578,53580,53581,393, 53584,53587,317, 53588,53585,53586,8444, 317, 476,
+ 7384, 332, 53526,332, 53530,53532,53533,363, 53535,490, 350, 53536,53537,53540,23247,53542,317, 11533,8099, 317, 37402,554, 53538,53539,332, 53541,332,
+ 5173, 3429, 317, 53543,317, 590, 3182, 3738, 53545,380, 53548,53551,53546,53547,53549,53550,2288, 46697,5022, 53552,370, 365, 53554,53555,53556,980, 4186,
+ 53558,7433, 53560,38877,343, 53564,317, 53567,53559,317, 490, 317, 53095,339, 412, 53561,565, 53563,53562,332, 11347,53565,53566,53569,53572,317, 1959,
+ 53574,1230, 53575,53579,390, 53582,53570,53571,53573,1087, 53576,2366, 53577,317, 53578,53580,53581,393, 53584,53587,317, 53588,53585,53586,8444, 317, 476,
53589,53590,53597,53606,53630,53659,53668,53672,53684,53700,53709,53715,53717,53764,184, 54026,54068,54073,185, 54198,54244,54305,54333,54340,54346,54348,54352,
- 317, 317, 317, 317, 1358, 53591,53594,53595,53596,317, 53592,53593,53598,53599,53601,2022, 317, 14558,53604,53605,2679, 356, 317, 53600,53602,345, 317,
+ 317, 317, 317, 317, 1358, 53591,53594,53595,53596,317, 53592,53593,53598,53599,53601,2022, 317, 14558,53604,53605,2679, 356, 317, 53600,53602,345, 317,
317, 6420, 53603,317, 317, 10674,370, 10674,53607,53609,53611,53612,53615,53624,53627,332, 53608,7689, 3284, 53610,5611, 317, 3869, 365, 53613,13392,53614,
50552,53616,53617,350, 5911, 317, 53620,317, 53618,53619,40164,370, 53621,317, 317, 53622,53623,53625,53626,317, 16535,53628,53629,53631,53634,53637,53647,
- 490, 53648,53651,53652,7850, 317, 53653,317, 53656,2074, 53632,53633,332, 53635,466, 53636,53638,6420, 490, 53639,53645,317, 9124, 466, 5363, 317, 7916,
+ 490, 53648,53651,53652,7850, 317, 53653,317, 53656,2074, 53632,53633,332, 53635,466, 53636,53638,6420, 490, 53639,53645,317, 9124, 466, 5363, 317, 7916,
53640,53642,317, 3284, 317, 53641,7640, 5987, 7419, 317, 1347, 53643,317, 317, 53644,370, 10674,5225, 1325, 466, 317, 7242, 2117, 53646,1020, 53649,20542,
53650,1358, 965, 24852,345, 3999, 5570, 53654,317, 53655,1347, 317, 317, 345, 13323,5446, 53657,53658,9182, 16294,6917, 53660,53663,362, 53665,53666,53667,
317, 370, 6763, 53661,317, 53662,53664,350, 2510, 362, 390, 36436,343, 343, 362, 317, 390, 351, 490, 2568, 53669,381, 53670,6598, 343, 317, 53671,
- 14535,14535,551, 53673,53676,15571,53677,53678,53680,53681,53682,53683,2351, 53674,365, 53675,5517, 23747,351, 317, 25646,317, 17734,380, 53679,1044, 332,
- 53685,317, 53693,53694,36289,53696,8392, 53697,53698,53699,363, 2381, 53686,345, 351, 53687,53688,53692,45402,317, 5765, 343, 5962, 2631, 350, 351, 356,
- 356, 53689,356, 53690,53691,348, 433, 370, 356, 362, 317, 317, 5419, 53695,317, 11342,2211, 350, 317, 1526, 14991,317, 6203, 317, 466, 2584, 5662,
- 10058,363, 5200, 1481, 53701,8405, 5634, 5891, 53702,53707,12756,501, 49032,9170, 343, 53703,6308, 350, 53704,53705,317, 53706,350, 6917, 53708,53710,2280,
+ 14535,14535,551, 53673,53676,15571,53677,53678,53680,53681,53682,53683,2351, 53674,365, 53675,5517, 23747,351, 317, 25646,317, 17734,380, 53679,1044, 332,
+ 53685,317, 53693,53694,36289,53696,8392, 53697,53698,53699,363, 2381, 53686,345, 351, 53687,53688,53692,45402,317, 5765, 343, 5962, 2631, 350, 351, 356,
+ 356, 53689,356, 53690,53691,348, 433, 370, 356, 362, 317, 317, 5419, 53695,317, 11342,2211, 350, 317, 1526, 14991,317, 6203, 317, 466, 2584, 5662,
+ 10058,363, 5200, 1481, 53701,8405, 5634, 5891, 53702,53707,12756,501, 49032,9170, 343, 53703,6308, 350, 53704,53705,317, 53706,350, 6917, 53708,53710,2280,
53712,53714,53711,343, 633, 53713,362, 317, 2134, 2227, 6763, 350, 317, 332, 53716,1459, 53718,5561, 53721,53727,7566, 550, 53732,317, 53739,53749,53750,
- 4591, 53754,53755,53757,53759,53763,971, 2551, 53719,1347, 53720,365, 53722,53723,53725,53726,5126, 317, 317, 317, 53724,1347, 5237, 8214, 53728,8023, 317,
- 362, 9581, 317, 53729,10820,317, 370, 365, 53730,5809, 5225, 53731,466, 1588, 490, 53733,343, 53737,53734,53736,317, 2211, 1347, 3284, 53735,317, 7990,
- 6402, 343, 316, 5654, 53738,14251,5896, 53740,53742,53744,53745,53748,490, 350, 1109, 53741,1358, 317, 11962,351, 317, 13670,14834,53743,12943,345, 4980,
- 490, 53746,53747,1347, 18438,317, 317, 2631, 2077, 2066, 317, 15565,351, 5619, 10592,7892, 33765,53751,53752,1345, 2142, 317, 53753,363, 365, 363, 355,
+ 4591, 53754,53755,53757,53759,53763,971, 2551, 53719,1347, 53720,365, 53722,53723,53725,53726,5126, 317, 317, 317, 53724,1347, 5237, 8214, 53728,8023, 317,
+ 362, 9581, 317, 53729,10820,317, 370, 365, 53730,5809, 5225, 53731,466, 1588, 490, 53733,343, 53737,53734,53736,317, 2211, 1347, 3284, 53735,317, 7990,
+ 6402, 343, 316, 5654, 53738,14251,5896, 53740,53742,53744,53745,53748,490, 350, 1109, 53741,1358, 317, 11962,351, 317, 13670,14834,53743,12943,345, 4980,
+ 490, 53746,53747,1347, 18438,317, 317, 2631, 2077, 2066, 317, 15565,351, 5619, 10592,7892, 33765,53751,53752,1345, 2142, 317, 53753,363, 365, 363, 355,
53756,466, 343, 4984, 2058, 317, 53758,53760,53762,53761,428, 949, 53765,53767,28795,26336,355, 53769,53773,53774,53776,53778,53780,53766,53768,490, 53770,
317, 53771,53772,6387, 317, 427, 317, 2156, 501, 53775,949, 53777,8926, 351, 550, 53779,11617,53781,363, 384, 53782,53783,53784,53800,53815,53823,53835,
- 53839,53846,53849,53857,53858,53864,53867,53871,53921,53924,53934,54020,5037, 54025,53785,53786,317, 53787,15837,53788,53790,53791,53795,4925, 432, 6002, 362,
+ 53839,53846,53849,53857,53858,53864,53867,53871,53921,53924,53934,54020,5037, 54025,53785,53786,317, 53787,15837,53788,53790,53791,53795,4925, 432, 6002, 362,
343, 365, 53789,53792,317, 5392, 317, 965, 6555, 317, 53793,53794,317, 317, 9549, 345, 4268, 317, 53796,53797,53799,53798,9440, 317, 6468, 317, 53801,
53802,53803,53809,5862, 6826, 53810,404, 53814,53804,317, 317, 53805,317, 53806,53807,53808,351, 363, 12494,53811,53812,53813,53816,53818,53820,45213,53821,
- 53822,317, 317, 317, 8920, 2272, 1358, 53817,565, 18125,317, 317, 53819,11533,351, 332, 317, 343, 317, 316, 365, 490, 2150, 362, 317, 7990, 490,
- 53824,380, 53826,53829,53830,53825,332, 53827,53828,317, 568, 18615,7672, 637, 53831,15631,317, 6332, 317, 633, 8345, 317, 633, 53832,5205, 53833,5157,
- 43697,317, 621, 637, 5826, 317, 53834,363, 53836,2033, 53837,53838,2211, 12696,53840,53841,53842,53843,53845,343, 590, 6402, 363, 11613,317, 5033, 2142,
- 365, 19829,317, 53844,8807, 317, 7506, 6703, 317, 30176,6314, 317, 1020, 380, 53847,53848,371, 53850,6546, 4982, 53852,5538, 15330,53853,1030, 53854,317,
+ 53822,317, 317, 317, 8920, 2272, 1358, 53817,565, 18125,317, 317, 53819,11533,351, 332, 317, 343, 317, 316, 365, 490, 2150, 362, 317, 7990, 490,
+ 53824,380, 53826,53829,53830,53825,332, 53827,53828,317, 568, 18615,7672, 637, 53831,15631,317, 6332, 317, 633, 8345, 317, 633, 53832,5205, 53833,5157,
+ 43697,317, 621, 637, 5826, 317, 53834,363, 53836,2033, 53837,53838,2211, 12696,53840,53841,53842,53843,53845,343, 590, 6402, 363, 11613,317, 5033, 2142,
+ 365, 19829,317, 53844,8807, 317, 7506, 6703, 317, 30176,6314, 317, 1020, 380, 53847,53848,371, 53850,6546, 4982, 53852,5538, 15330,53853,1030, 53854,317,
53851,317, 637, 6996, 317, 633, 1160, 2510, 53855,53856,7225, 317, 1588, 370, 317, 53859,388, 7401, 1078, 4952, 362, 8296, 36081,404, 1347, 317, 53860,
- 681, 39288,53861,317, 6996, 317, 53862,1155, 1353, 53863,5217, 1160, 1345, 3111, 53865,53866,2058, 53868,53870,13782,53869,5223, 4965, 10086,2270, 53872,317,
- 26313,53881,362, 29067,53886,53891,53893,53899,53901,5005, 53908,53916,2260, 317, 9922, 53873,53877,53878,53879,595, 53874,53875,53876,317, 8682, 460, 965,
+ 681, 39288,53861,317, 6996, 317, 53862,1155, 1353, 53863,5217, 1160, 1345, 3111, 53865,53866,2058, 53868,53870,13782,53869,5223, 4965, 10086,2270, 53872,317,
+ 26313,53881,362, 29067,53886,53891,53893,53899,53901,5005, 53908,53916,2260, 317, 9922, 53873,53877,53878,53879,595, 53874,53875,53876,317, 8682, 460, 965,
345, 53880,351, 5761, 53882,53883,14419,2177, 53884,53885,52144,2405, 53887,53890,53888,53889,53892,433, 53894,553, 53896,53895,2380, 5241, 53897,53898,53900,
- 53902,6187, 53905,53903,53904,401, 14185,53906,1347, 53907,317, 345, 2094, 5441, 53909,53913,53910,53911,53912,53914,53915,53917,53918,53920,43983,53919,317,
- 7222, 4591, 317, 433, 53922,53923,7941, 382, 5241, 317, 317, 53925,53926,53928,6021, 490, 53929,2521, 53930,434, 2322, 317, 345, 1444, 317, 53927,317,
+ 53902,6187, 53905,53903,53904,401, 14185,53906,1347, 53907,317, 345, 2094, 5441, 53909,53913,53910,53911,53912,53914,53915,53917,53918,53920,43983,53919,317,
+ 7222, 4591, 317, 433, 53922,53923,7941, 382, 5241, 317, 317, 53925,53926,53928,6021, 490, 53929,2521, 53930,434, 2322, 317, 345, 1444, 317, 53927,317,
1444, 36463,12494,317, 9852, 351, 317, 53931,53933,53932,53935,53946,53948,53949,53985,53988,53993,53994,53998,53999,2022, 54002,54007,54012,54016,317, 54018,
- 5037, 54019,317, 53936,2113, 53937,53939,53940,53942,965, 317, 53945,404, 10578,34721,1347, 53938,1358, 47911,1347, 53941,332, 332, 332, 39398,53943,404,
+ 5037, 54019,317, 53936,2113, 53937,53939,53940,53942,965, 317, 53945,404, 10578,34721,1347, 53938,1358, 47911,1347, 53941,332, 332, 332, 39398,53943,404,
53944,317, 343, 345, 343, 317, 317, 5439, 51698,53947,12770,8224, 6954, 317, 53950,5032, 53954,317, 53957,53959,53960,53961,53962,53964,53966,53970,53972,
53976,316, 53981,317, 53984,53951,53952,343, 5238, 53953,53955,53956,1189, 18084,53958,2171, 13847,20149,7035, 53963,2808, 5328, 317, 317, 53965,11921,24957,
7657, 2146, 53967,53968,53969,53971,317, 53973,332, 6420, 53974,5570, 1345, 53975,47279,5328, 53977,18014,362, 53979,53980,53978,53982,10516,53983,53986,53987,
@@ -10151,69 +10146,69 @@ static const unsigned int ChildLocs[185261] =
2272, 54056,54057,54058,12397,2413, 39005,54060,31023,362, 4974, 317, 2355, 13837,5624, 384, 11702,317, 317, 317, 9624, 39005,4952, 317, 54059,317, 54062,
54064,343, 362, 54063,6228, 651, 633, 317, 2081, 12154,362, 3075, 317, 317, 317, 1325, 5159, 54066,370, 317, 317, 317, 54067,54069,54071,466, 54072,
317, 365, 54070,317, 1624, 362, 317, 576, 3999, 54074,5692, 363, 7869, 54075,54090,54092,54093,54102,54113,54114,54134,54144,54145,54149,54152,54157,54162,
- 54170,54172,54184,54186,490, 54196,15750,5105, 15074,343, 54076,345, 7143, 54077,317, 54078,54082,54083,54085,54087,54088,16672,317, 362, 7928, 380, 362,
- 317, 5634, 317, 34487,345, 54079,54080,370, 317, 54081,370, 511, 15307,317, 317, 317, 1358, 5037, 54084,365, 54086,5619, 317, 6903, 332, 6901, 317,
- 343, 12028,54089,5616, 371, 351, 54091,13323,362, 345, 54094,54095,16464,9427, 54101,1526, 343, 5223, 5836, 2369, 54096,1230, 54097,317, 365, 2351, 317,
- 54098,317, 54099,5483, 54100,363, 5943, 54103,54104,2584, 317, 54105,39005,54106,404, 54107,54108,54109,541, 490, 54111,54112,317, 5865, 317, 6598, 363,
+ 54170,54172,54184,54186,490, 54196,15750,5105, 15074,343, 54076,345, 7143, 54077,317, 54078,54082,54083,54085,54087,54088,16672,317, 362, 7928, 380, 362,
+ 317, 5634, 317, 34487,345, 54079,54080,370, 317, 54081,370, 511, 15307,317, 317, 317, 1358, 5037, 54084,365, 54086,5619, 317, 6903, 332, 6901, 317,
+ 343, 12028,54089,5616, 371, 351, 54091,13323,362, 345, 54094,54095,16464,9427, 54101,1526, 343, 5223, 5836, 2369, 54096,1230, 54097,317, 365, 2351, 317,
+ 54098,317, 54099,5483, 54100,363, 5943, 54103,54104,2584, 317, 54105,39005,54106,404, 54107,54108,54109,541, 490, 54111,54112,317, 5865, 317, 6598, 363,
439, 6002, 490, 8354, 8569, 317, 363, 50239,1160, 54110,317, 1020, 317, 370, 24756,316, 11089,317, 317, 363, 7954, 317, 343, 363, 551, 54115,54121,
- 490, 350, 34975,539, 54133,332, 2272, 54116,317, 637, 6996, 317, 10217,365, 317, 9624, 317, 54117,54120,363, 54118,54119,317, 317, 11783,54122,317,
+ 490, 350, 34975,539, 54133,332, 2272, 54116,317, 637, 6996, 317, 10217,365, 317, 9624, 317, 54117,54120,363, 54118,54119,317, 317, 11783,54122,317,
317, 54123,5138, 54127,54130,54124,54125,54126,363, 54128,54129,54131,54132,54135,54136,54138,11986,6900, 2142, 29531,54139,9174, 54140,9667, 10898,8926, 54137,
- 439, 490, 317, 317, 343, 2086, 1345, 54141,370, 363, 54142,54143,590, 574, 53140,10801,343, 54146,54147,54148,5961, 316, 1325, 317, 54150,54151,8395,
- 317, 9774, 54153,54154,54155,317, 54156,404, 2261, 565, 343, 54158,350, 596, 54160,54161,2351, 5836, 34510,54159,317, 6859, 317, 1331, 317, 317, 490,
+ 439, 490, 317, 317, 343, 2086, 1345, 54141,370, 363, 54142,54143,590, 574, 53140,10801,343, 54146,54147,54148,5961, 316, 1325, 317, 54150,54151,8395,
+ 317, 9774, 54153,54154,54155,317, 54156,404, 2261, 565, 343, 54158,350, 596, 54160,54161,2351, 5836, 34510,54159,317, 6859, 317, 1331, 317, 317, 490,
332, 317, 2211, 605, 545, 54163,406, 574, 54164,54165,54167,317, 317, 317, 2156, 381, 345, 317, 22412,54166,345, 54168,20083,54169,54171,54173,54175,
- 54177,54182,54174,54176,380, 317, 332, 317, 54178,317, 362, 380, 1992, 54179,317, 7733, 317, 5055, 9779, 54180,11782,5037, 54181,590, 574, 317, 1358,
+ 54177,54182,54174,54176,380, 317, 332, 317, 54178,317, 362, 380, 1992, 54179,317, 7733, 317, 5055, 9779, 54180,11782,5037, 54181,590, 574, 317, 1358,
54183,47792,54185,11089,317, 363, 317, 54187,54191,54193,6563, 54194,54195,5653, 363, 317, 8205, 317, 363, 54188,1347, 397, 54189,370, 317, 54190,54192,
317, 13221,317, 490, 5406, 351, 36185,22742,12869,1358, 28239,384, 54197,479, 5033, 54199,54200,54202,395, 54211,539, 7072, 54214,54216,54218,54220,18460,
363, 3075, 54222,54227,54234,54243,317, 5732, 13638,9387, 5898, 370, 54201,4949, 317, 54203,54206,11146,54208,1597, 54204,332, 8766, 54205,5033, 18978,54207,
- 5570, 2381, 12949,54209,7672, 332, 401, 54210,54212,54213,362, 1109, 317, 1160, 317, 9981, 4965, 2222, 54215,54217,351, 5662, 5836, 15919,54219,490, 490,
- 317, 317, 10626,9691, 54221,54223,54224,54225,54226,1011, 54228,54230,54231,54232,2022, 362, 12696,54233,54229,5898, 4949, 317, 5120, 317, 317, 363, 332,
+ 5570, 2381, 12949,54209,7672, 332, 401, 54210,54212,54213,362, 1109, 317, 1160, 317, 9981, 4965, 2222, 54215,54217,351, 5662, 5836, 15919,54219,490, 490,
+ 317, 317, 10626,9691, 54221,54223,54224,54225,54226,1011, 54228,54230,54231,54232,2022, 362, 12696,54233,54229,5898, 4949, 317, 5120, 317, 317, 363, 332,
382, 54235,54238,15221,370, 54240,20259,54241,4984, 317, 54236,317, 54237,54239,24281,2298, 370, 54242,54245,54249,54253,54255,54272,8392, 54279,27584,54296,
54301,54302,54303,490, 54246,2291, 490, 54248,332, 44362,54247,54250,54251,54252,365, 1347, 317, 54254,317, 1347, 54256,54258,54261,490, 317, 54257,54259,
- 54260,54262,6996, 317, 23337,54263,54267,466, 54269,54270,3987, 54264,54265,54266,54268,356, 393, 439, 476, 2261, 317, 7698, 54271,37391,1060, 363, 1347,
+ 54260,54262,6996, 317, 23337,54263,54267,466, 54269,54270,3987, 54264,54265,54266,54268,356, 393, 439, 476, 2261, 317, 7698, 54271,37391,1060, 363, 1347,
54273,54274,54276,380, 490, 317, 397, 54275,54277,1347, 54278,5447, 21470,351, 317, 54280,54282,332, 490, 362, 53522,54283,363, 13760,54281,54284,54285,
356, 54290,54291,362, 54293,355, 54295,7405, 9831, 24393,54286,54287,54288,54289,1347, 9385, 22241,2060, 382, 54292,1526, 54294,5120, 54297,14109,54299,54300,
- 554, 317, 317, 54298,2515, 317, 15608,466, 54304,351, 317, 342, 10430,54306,54312,54319,54322,54329,3852, 317, 42882,54307,54308,317, 5126, 54309,2521,
- 54311,14483,9648, 317, 54310,6454, 466, 363, 5149, 343, 1347, 350, 351, 596, 2022, 54313,54314,54318,11959,356, 2024, 36489,8301, 317, 363, 54315,317,
- 54316,14536,4591, 54317,2503, 1325, 15763,54320,54321,317, 22611,6831, 9124, 379, 466, 317, 54237,13338,54323,343, 2022, 54324,54327,317, 6228, 317, 317,
+ 554, 317, 317, 54298,2515, 317, 15608,466, 54304,351, 317, 342, 10430,54306,54312,54319,54322,54329,3852, 317, 42882,54307,54308,317, 5126, 54309,2521,
+ 54311,14483,9648, 317, 54310,6454, 466, 363, 5149, 343, 1347, 350, 351, 596, 2022, 54313,54314,54318,11959,356, 2024, 36489,8301, 317, 363, 54315,317,
+ 54316,14536,4591, 54317,2503, 1325, 15763,54320,54321,317, 22611,6831, 9124, 379, 466, 317, 54237,13338,54323,343, 2022, 54324,54327,317, 6228, 317, 317,
362, 355, 317, 317, 6531, 5037, 317, 54325,54326,590, 317, 574, 54328,54330,350, 54332,1230, 356, 379, 466, 54331,317, 3387, 317, 14689,7615, 54334,
54335,54336,1020, 596, 410, 317, 5399, 363, 1347, 317, 54337,54339,1992, 2227, 345, 317, 3664, 54338,362, 12459,7035, 6517, 6516, 36966,7737, 23995,54341,
6402, 466, 596, 317, 54343,54344,317, 380, 317, 54342,6036, 345, 317, 54345,370, 554, 54347,2022, 2571, 363, 490, 1155, 317, 317, 54349,54350,54351,
- 317, 343, 317, 12019,317, 317, 363, 6546, 5561, 317, 5561, 54353,54359,54362,28058,54364,2022, 2116, 317, 54365,317, 54354,54357,54355,54356,362, 965,
+ 317, 343, 317, 12019,317, 317, 363, 6546, 5561, 317, 5561, 54353,54359,54362,28058,54364,2022, 2116, 317, 54365,317, 54354,54357,54355,54356,362, 965,
8105, 54358,54360,54361,317, 54363,490, 317, 371, 5891, 371, 4965, 2381, 2809, 21524,351, 2272, 5276, 54367,19478,54369,14744,19478,8047, 1060, 317, 54371,
54368,1347, 54370,54372,54373,317, 54375,54376,54382,388, 31380,54383,54384,14792,54387,2899, 54388,54390,54391,54394,54396,345, 54397,362, 48341,971, 28119,
- 317, 371, 317, 39230,362, 8054, 54377,54378,54381,11124,343, 54379,54380,5628, 536, 54385,433, 317, 54386,10329,39969,54389,553, 6975, 54392,36546,1481,
+ 317, 371, 317, 39230,362, 8054, 54377,54378,54381,11124,343, 54379,54380,5628, 536, 54385,433, 317, 54386,10329,39969,54389,553, 6975, 54392,36546,1481,
54393,971, 16310,371, 11347,5836, 54395,367, 371, 317, 317, 1020, 2553, 2584, 317, 54399,54400,54403,351, 54404,54405,54406,54419,1060, 54420,54423,54424,
54401,54402,27690,317, 4437, 365, 339, 5207, 54407,54417,54408,54413,54409,54410,54411,54412,54414,54415,54416,54418,54421,54422,317, 54425,54427,54428,54429,
54431,54435,351, 54436,54437,54438,54439,54442,605, 490, 54430,316, 54432,54433,54434,2328, 362, 54440,54441,54443,54446,54451,54453,54470,54489,54506,54513,
54525,54543,54549,54555,54560,54666,54673,54712,54713,54715,54776,54851,54885,54886,54891,54892,54894,1107, 54444,54445,54447,46188,382, 1109, 54448,54449,40919,
- 367, 54450,54452,54454,21091,54458,54463,54469,13498,345, 14561,54455,317, 54456,18084,54457,54459,351, 350, 54461,54462,54460,317, 1588, 400, 11451,317,
- 54464,466, 54467,51160,54465,54466,7949, 317, 8301, 51449,8603, 38707,54468,605, 5104, 345, 54471,54474,2631, 54475,54479,54480,54481,54483,343, 362, 2058,
- 54484,54485,48346,54472,54473,351, 565, 2272, 382, 54476,356, 351, 450, 5492, 382, 1160, 54477,54478,54482,317, 384, 345, 4974, 54486,7438, 54487,2156,
+ 367, 54450,54452,54454,21091,54458,54463,54469,13498,345, 14561,54455,317, 54456,18084,54457,54459,351, 350, 54461,54462,54460,317, 1588, 400, 11451,317,
+ 54464,466, 54467,51160,54465,54466,7949, 317, 8301, 51449,8603, 38707,54468,605, 5104, 345, 54471,54474,2631, 54475,54479,54480,54481,54483,343, 362, 2058,
+ 54484,54485,48346,54472,54473,351, 565, 2272, 382, 54476,356, 351, 450, 5492, 382, 1160, 54477,54478,54482,317, 384, 345, 4974, 54486,7438, 54487,2156,
54488,466, 553, 990, 54490,54492,54497,54502,54504,54505,54491,47792,6830, 362, 54493,54494,350, 54495,54496,54498,2134, 54500,54499,54501,54503,343, 10081,
1943, 317, 54507,365, 54508,16456,54509,54511,54512,1160, 317, 54510,5942, 362, 317, 5866, 54514,2024, 54515,54520,2280, 54524,18978,2387, 1345, 317, 38914,
54516,54517,54518,1345, 317, 54519,54521,54522,317, 54523,54526,54535,317, 317, 9064, 54541,54527,54528,54532,54529,54530,356, 54531,4963, 317, 54533,54534,
- 12553,7618, 54536,54538,9012, 54537,9012, 5896, 11709,54539,54540,54542,317, 9929, 38936,54544,343, 54545,11089,54546,54547,54548,54550,54553,54554,54551,6402,
- 6961, 54552,367, 1078, 19460,490, 44083,501, 54556,54557,427, 9869, 365, 380, 4186, 390, 54558,11734,5173, 565, 54559,54561,10641,54564,54566,54571,2024,
+ 12553,7618, 54536,54538,9012, 54537,9012, 5896, 11709,54539,54540,54542,317, 9929, 38936,54544,343, 54545,11089,54546,54547,54548,54550,54553,54554,54551,6402,
+ 6961, 54552,367, 1078, 19460,490, 44083,501, 54556,54557,427, 9869, 365, 380, 4186, 390, 54558,11734,5173, 565, 54559,54561,10641,54564,54566,54571,2024,
54572,54574,54577,54578,54580,54594,384, 526, 54595,54598,54662,7737, 350, 317, 54562,54563,316, 370, 317, 29165,51569,54565,1444, 54567,54569,54570,54568,
19303,362, 332, 317, 317, 317, 54573,434, 605, 428, 54575,54576,479, 427, 15616,53848,393, 317, 390, 317, 2326, 54579,2022, 5055, 15616,317, 54581,
54584,54588,350, 54593,21074,38415,54582,54583,317, 317, 54585,6854, 8488, 54586,5626, 2171, 316, 54587,317, 54589,362, 1020, 54590,23411,4980, 316, 54591,
54592,38945,317, 7990, 317, 317, 2037, 317, 2326, 316, 1020, 54596,54597,6600, 2074, 1020, 2022, 2037, 317, 363, 54599,54660,54600,54602,54613,54615,54617,
317, 54622,54627,54628,54634,54651,54652,54654,54658,54601,412, 30712,54603,54605,317, 54608,54604,54606,54607,1526, 2247, 54609,54610,54611,54612,54614,54616,
- 54618,54620,54619,417, 54621,54623,13689,54624,431, 17916,54625,54626,31964,54601,9171, 54629,54633,54630,54631,54632,54635,54636,54642,54643,54649,397, 1347,
+ 54618,54620,54619,417, 54621,54623,13689,54624,431, 17916,54625,54626,31964,54601,9171, 54629,54633,54630,54631,54632,54635,54636,54642,54643,54649,397, 1347,
390, 54637,54639,54640,2184, 54638,350, 36482,317, 20664,54641,8020, 5553, 397, 2369, 343, 54644,54645,54646,54647,54648,54650,497, 373, 5217, 2387, 54653,
- 54655,54656,1194, 5752, 54657,54659,44592,54661,54663,54664,54665,8023, 2022, 8023, 8022, 317, 8023, 373, 45083,54667,355, 2024, 54669,54672,1345, 2462, 5120,
+ 54655,54656,1194, 5752, 54657,54659,44592,54661,54663,54664,54665,8023, 2022, 8023, 8022, 317, 8023, 373, 45083,54667,355, 2024, 54669,54672,1345, 2462, 5120,
5717, 54668,317, 317, 54670,54671,1160, 15330,317, 345, 12463,351, 8047, 317, 54674,54675,54677,54687,2024, 54688,543, 54689,54694,44722,54695,8243, 54697,
54698,54705,1108, 6412, 54710,332, 5120, 317, 1345, 54676,17219,317, 394, 317, 12525,12696,12237,12598,6596, 350, 317, 11307,317, 54678,54679,54681,54682,
- 40798,54684,317, 345, 15457,317, 7849, 54680,317, 7941, 380, 317, 54683,54685,54686,590, 2193, 490, 15705,317, 317, 317, 351, 19287,343, 317, 5241,
+ 40798,54684,317, 345, 15457,317, 7849, 54680,317, 7941, 380, 317, 54683,54685,54686,590, 2193, 490, 15705,317, 317, 317, 351, 19287,343, 317, 5241,
54690,351, 2219, 363, 317, 1358, 5167, 6555, 317, 317, 54691,54692,5234, 54693,5896, 6021, 317, 4965, 54696,8137, 317, 317, 37582,15705,2110, 390, 54699,
- 54700,4738, 54701,54702,317, 11533,317, 317, 317, 8047, 54703,54704,5896, 5662, 317, 54706,343, 54707,338, 317, 23861,317, 54708,54709,54711,380, 9567,
- 317, 357, 9575, 370, 54714,54716,54728,54735,54740,54741,54746,54747,54748,2022, 54749,54750,54752,54753,54756,54767,54770,54772,1020, 54773,19507,317, 317,
- 54717,54719,29531,54723,1481, 332, 54724,54725,54726,5836, 54727,54718,54720,54722,317, 381, 54721,3284, 365, 332, 11855,1588, 54729,54731,332, 54730,317,
- 317, 54732,54733,54734,6674, 54736,384, 54739,317, 317, 54737,317, 54738,466, 4591, 317, 47897,490, 6600, 317, 317, 363, 54742,54743,54744,54745,5481,
- 5483, 5105, 6937, 1358, 19548,380, 2510, 54751,384, 38244,382, 317, 54754,317, 370, 12454,54755,637, 1160, 332, 317, 54757,54758,54759,23306,54762,317,
+ 54700,4738, 54701,54702,317, 11533,317, 317, 317, 8047, 54703,54704,5896, 5662, 317, 54706,343, 54707,338, 317, 23861,317, 54708,54709,54711,380, 9567,
+ 317, 357, 9575, 370, 54714,54716,54728,54735,54740,54741,54746,54747,54748,2022, 54749,54750,54752,54753,54756,54767,54770,54772,1020, 54773,19507,317, 317,
+ 54717,54719,29531,54723,1481, 332, 54724,54725,54726,5836, 54727,54718,54720,54722,317, 381, 54721,3284, 365, 332, 11855,1588, 54729,54731,332, 54730,317,
+ 317, 54732,54733,54734,6674, 54736,384, 54739,317, 317, 54737,317, 54738,466, 4591, 317, 47897,490, 6600, 317, 317, 363, 54742,54743,54744,54745,5481,
+ 5483, 5105, 6937, 1358, 19548,380, 2510, 54751,384, 38244,382, 317, 54754,317, 370, 12454,54755,637, 1160, 332, 317, 54757,54758,54759,23306,54762,317,
317, 363, 11473,54760,54761,317, 390, 332, 54763,54764,54765,54766,390, 54768,5611, 54769,54771,5163, 317, 363, 317, 390, 4943, 490, 54774,54775,54777,
54779,54797,54799,54800,54804,54820,54826,54828,54829,54831,54832,54839,54848,3987, 54850,317, 50585,574, 317, 54778,54780,5028, 54783,54785,54787,54788,54790,
- 54781,54782,317, 20424,8682, 317, 5033, 2272, 317, 54784,2117, 45877,1060, 10487,54786,558, 9422, 381, 54789,54791,54792,54793,345, 54794,54795,54796,317,
+ 54781,54782,317, 20424,8682, 317, 5033, 2272, 317, 54784,2117, 45877,1060, 10487,54786,558, 9422, 381, 54789,54791,54792,54793,345, 54794,54795,54796,317,
317, 7949, 54798,34552,317, 2715, 54166,6857, 37782,2609, 54801,54802,363, 490, 54803,4336, 317, 317, 11619,389, 380, 54805,36969,54816,54818,17462,54819,
965, 7657, 54806,54807,317, 317, 54808,3599, 317, 54810,317, 2899, 362, 54811,54815,317, 637, 317, 651, 54809,317, 1347, 397, 370, 317, 54812,54813,
54814,8683, 390, 54817,30885,46507,4984, 54821,54823,54825,24393,2507, 345, 404, 418, 448, 54822,2509, 370, 317, 317, 317, 54824,558, 490, 396, 54827,
@@ -10221,71 +10216,71 @@ static const unsigned int ChildLocs[185261] =
317, 342, 54841,6318, 54842,1459, 54845,54843,317, 317, 317, 317, 317, 317, 54844,317, 317, 317, 5223, 317, 363, 1481, 317, 1020, 54849,351, 11347,
54852,54860,54861,54862,54869,54871,350, 54872,54873,54879,54882,490, 317, 54853,54854,30432,33398,21541,54857,54855,54856,5652, 339, 54858,54859,317, 54066,
317, 54863,54865,54867,350, 54868,490, 54864,54866,54201,54067,6433, 54870,2188, 17897,4591, 317, 1065, 370, 54874,317, 54875,54876,350, 54877,54878,54880,
- 54881,14537,5661, 363, 317, 2187, 40919,54883,54884,7681, 370, 54887,54888,54889,54890,11442,317, 596, 54893,27765,3648, 54895,741, 54900,466, 54831,1481,
- 54901,1108, 54896,317, 54897,54898,54899,354, 6614, 1444, 8765, 370, 5033, 343, 317, 17375,1347, 54903,54904,54906,54910,54912,317, 317, 54907,748, 317,
+ 54881,14537,5661, 363, 317, 2187, 40919,54883,54884,7681, 370, 54887,54888,54889,54890,11442,317, 596, 54893,27765,3648, 54895,741, 54900,466, 54831,1481,
+ 54901,1108, 54896,317, 54897,54898,54899,354, 6614, 1444, 8765, 370, 5033, 343, 317, 17375,1347, 54903,54904,54906,54910,54912,317, 317, 54907,748, 317,
54908,54909,54911,54914,54917,54915,54916,54918,54919,54921,54922,7869, 54923,54927,54930,54941,54942,54947,54948,54949,54953,54956,54961,54969,54974,54980,54991,
- 54997,55003,55013,55030,466, 55034,55036,15680,3605, 15680,3605, 3640, 380, 54924,381, 54925,381, 2134, 565, 317, 54926,54928,2107, 4476, 54929,47956,2033,
+ 54997,55003,55013,55030,466, 55034,55036,15680,3605, 15680,3605, 3640, 380, 54924,381, 54925,381, 2134, 565, 317, 54926,54928,2107, 4476, 54929,47956,2033,
2074, 381, 1915, 54931,54934,11702,29783,54932,54933,54935,371, 8683, 54939,28400,54936,54937,54938,54940,4396, 565, 384, 10878,6081, 54943,5005, 363, 54945,
17760,363, 54944,54946,6673, 363, 9000, 13320,380, 27498,439, 54950,54951,54952,1358, 343, 2022, 393, 381, 54954,54955,54957,54958,54959,54960,54962,54963,
54964,54966,345, 16319,345, 397, 54965,54967,2086, 54968,54970,54971,54972,343, 54973,370, 343, 2171, 317, 356, 381, 13789,3361, 54975,54979,400, 54976,
- 54977,54978,35480,419, 54981,54983,2236, 54989,2715, 1915, 2051, 54982,381, 351, 54984,54988,54985,54986,54987,26288,348, 54990,54992,37200,382, 54995,1020,
- 54996,54993,595, 54994,5164, 490, 54998,479, 55002,54999,55000,317, 55001,443, 2420, 55004,371, 433, 55005,55006,55007,55008,490, 363, 390, 55011,427,
+ 54977,54978,35480,419, 54981,54983,2236, 54989,2715, 1915, 2051, 54982,381, 351, 54984,54988,54985,54986,54987,26288,348, 54990,54992,37200,382, 54995,1020,
+ 54996,54993,595, 54994,5164, 490, 54998,479, 55002,54999,55000,317, 55001,443, 2420, 55004,371, 433, 55005,55006,55007,55008,490, 363, 390, 55011,427,
52723,5962, 317, 7489, 363, 7521, 55009,55010,8549, 55012,343, 371, 55014,2036, 55015,55016,1588, 55020,380, 55023,1481, 2539, 396, 345, 2219, 343, 55017,
55018,55019,317, 11198,14799,55021,55022,55024,55027,3529, 55025,317, 55026,3079, 1160, 345, 21955,427, 55028,55029,9549, 965, 317, 380, 5343, 317, 55031,
55033,8125, 404, 479, 2108, 34863,9548, 55032,317, 52622,317, 15540,343, 370, 533, 55035,55037,55038,55039,55040,55042,55043,55048,55051,55054,55057,55058,
55062,2272, 188, 55470,55483,55499,189, 56080,56099,56115,190, 56475,56490,56492,55100,56493,191, 56976,56978,56980,56983,56991,193, 57139,57140,57148,57151,
57197,55044,412, 40690,55047,317, 38832,5107, 55045,1444, 55046,4797, 4797, 4797, 55049,4797, 4800, 4797, 55050,55052,55053,10985,55055,55056,55059,55060,55061,
55063,55064,55065,55066,55067,55077,55097,55110,55113,55117,55139,55147,55157,55162,55183,55192,55207,55253,55255,55274,55280,55323,55356,55406,55426,55448,55450,
- 55452,55458,317, 7452, 317, 317, 317, 317, 317, 1100, 55068,35575,317, 55072,362, 55073,4591, 55074,12719,55076,36414,55069,55071,5624, 43411,55070,1109,
+ 55452,55458,317, 7452, 317, 317, 317, 317, 317, 1100, 55068,35575,317, 55072,362, 55073,4591, 55074,12719,55076,36414,55069,55071,5624, 43411,55070,1109,
9454, 370, 8281, 55075,317, 9575, 1033, 2590, 7609, 55078,55080,55081,55087,55092,55093,2521, 55094,343, 317, 55079,317, 43879,565, 55082,8367, 55083,55085,
- 55084,55086,55088,393, 55089,55090,55091,345, 7577, 55095,317, 55096,317, 55098,2612, 55099,317, 55104,490, 350, 55106,55107,55109,3094, 317, 317, 490,
+ 55084,55086,55088,393, 55089,55090,55091,345, 7577, 55095,317, 55096,317, 55098,2612, 55099,317, 55104,490, 350, 55106,55107,55109,3094, 317, 317, 490,
590, 427, 55100,2004, 55101,343, 55102,55103,5626, 317, 404, 1160, 317, 343, 317, 55105,1109, 490, 396, 55108,317, 370, 3284, 1453, 427, 317, 55111,
- 350, 55112,343, 17939,343, 15552,1915, 55114,55115,9672, 17462,380, 55116,350, 4738, 55118,55125,5363, 55130,6917, 55132,1444, 55134,55135,55136,55137,317,
+ 350, 55112,343, 17939,343, 15552,1915, 55114,55115,9672, 17462,380, 55116,350, 4738, 55118,55125,5363, 55130,6917, 55132,1444, 55134,55135,55136,55137,317,
317, 4952, 2271, 24810,43622,55119,55123,55124,5611, 351, 55120,55121,55122,25707,317, 10836,46544,317, 2844, 55126,55127,2610, 55128,55129,317, 4280, 39260,
25351,2110, 16603,55131,490, 343, 55133,490, 2020, 427, 380, 55138,332, 16672,55140,490, 317, 348, 55142,12668,55143,55144,362, 55145,362, 317, 55141,
- 1347, 4952, 14826,4982, 55146,317, 1325, 317, 55148,38220,317, 55149,55150,55151,55152,55153,55154,332, 55155,5991, 466, 4980, 351, 317, 4984, 6402, 317,
- 2128, 317, 490, 1358, 5207, 317, 55156,370, 6021, 55158,55160,2110, 55161,565, 317, 362, 6814, 55159,55163,55169,55171,55177,501, 332, 55178,55182,5623,
- 2683, 55164,490, 6900, 6834, 317, 2844, 55165,44429,9174, 55167,55168,8926, 39119,55166,2110, 2844, 2272, 317, 3429, 590, 55170,1459, 55172,55174,343, 363,
- 55173,55175,55176,317, 1459, 490, 55179,55180,55181,55184,55185,43829,350, 55187,55188,10058,55189,55191,370, 55186,2272, 390, 33966,8333, 44716,345, 2272,
- 2003, 55190,343, 317, 317, 16871,317, 55193,55196,332, 565, 55200,19916,55203,317, 10035,8957, 55204,55205,1601, 7866, 55206,317, 55194,55195,574, 390,
- 590, 317, 21190,490, 55197,317, 55198,351, 55199,317, 24438,55201,317, 55202,3236, 317, 20015,50854,5216, 317, 7579, 382, 35902,28822,363, 418, 345,
- 55208,55209,55210,55213,15074,55214,55216,511, 55217,55218,55221,55237,55239,55251,55252,3726, 317, 1345, 13269,2357, 1358, 6227, 55211,356, 55212,317, 317,
+ 1347, 4952, 14826,4982, 55146,317, 1325, 317, 55148,38220,317, 55149,55150,55151,55152,55153,55154,332, 55155,5991, 466, 4980, 351, 317, 4984, 6402, 317,
+ 2128, 317, 490, 1358, 5207, 317, 55156,370, 6021, 55158,55160,2110, 55161,565, 317, 362, 6814, 55159,55163,55169,55171,55177,501, 332, 55178,55182,5623,
+ 2683, 55164,490, 6900, 6834, 317, 2844, 55165,44429,9174, 55167,55168,8926, 39119,55166,2110, 2844, 2272, 317, 3429, 590, 55170,1459, 55172,55174,343, 363,
+ 55173,55175,55176,317, 1459, 490, 55179,55180,55181,55184,55185,43829,350, 55187,55188,10058,55189,55191,370, 55186,2272, 390, 33966,8333, 44716,345, 2272,
+ 2003, 55190,343, 317, 317, 16871,317, 55193,55196,332, 565, 55200,19916,55203,317, 10035,8957, 55204,55205,1601, 7866, 55206,317, 55194,55195,574, 390,
+ 590, 317, 21190,490, 55197,317, 55198,351, 55199,317, 24438,55201,317, 55202,3236, 317, 20015,50854,5216, 317, 7579, 382, 35902,28822,363, 418, 345,
+ 55208,55209,55210,55213,15074,55214,55216,511, 55217,55218,55221,55237,55239,55251,55252,3726, 317, 1345, 13269,2357, 1358, 6227, 55211,356, 55212,317, 317,
17583,317, 55215,343, 317, 6529, 317, 317, 2156, 490, 5120, 317, 466, 317, 55219,55220,317, 1347, 21869,9162, 10255,55222,371, 55224,55229,55235,23681,
- 55223,5450, 55225,55226,55227,55228,55230,53072,55231,373, 5367, 55232,55233,55234,55236,25938,55238,4561, 3652, 55240,55245,55246,30206,55247,55248,55250,317,
- 6388, 55241,55242,55243,55244,55249,5439, 55254,343, 332, 490, 55256,55257,55258,55262,12598,596, 55266,55269,55271,55273,12880,427, 558, 345, 317, 348,
- 15510,55259,6402, 55260,55261,55263,635, 55264,55265,490, 55267,55268,7760, 363, 16235,317, 7657, 317, 5991, 55270,317, 317, 317, 55272,55275,55278,365,
- 55276,55277,55279,363, 55281,26080,55290,55297,55300,317, 55302,55304,55307,2584, 6638, 9027, 55309,55311,596, 55317,55318,55321,13686,317, 490, 404, 6063,
+ 55223,5450, 55225,55226,55227,55228,55230,53072,55231,373, 5367, 55232,55233,55234,55236,25938,55238,4561, 3652, 55240,55245,55246,30206,55247,55248,55250,317,
+ 6388, 55241,55242,55243,55244,55249,5439, 55254,343, 332, 490, 55256,55257,55258,55262,12598,596, 55266,55269,55271,55273,12880,427, 558, 345, 317, 348,
+ 15510,55259,6402, 55260,55261,55263,635, 55264,55265,490, 55267,55268,7760, 363, 16235,317, 7657, 317, 5991, 55270,317, 317, 317, 55272,55275,55278,365,
+ 55276,55277,55279,363, 55281,26080,55290,55297,55300,317, 55302,55304,55307,2584, 6638, 9027, 55309,55311,596, 55317,55318,55321,13686,317, 490, 404, 6063,
317, 2171, 6975, 55282,55284,55287,55283,55285,55286,55288,55289,55291,55294,55292,317, 317, 55293,317, 10347,345, 55295,404, 5748, 55296,55298,13262,55299,
7385, 317, 9537, 17454,343, 5890, 12226,55301,317, 317, 317, 55303,55305,7865, 490, 55306,55308,350, 450, 55310,317, 490, 55312,55315,55313,2171, 25177,
55314,317, 55316,4952, 30957,466, 370, 2571, 317, 6555, 317, 55319,55320,11376,1266, 633, 55322,371, 55324,370, 55326,4336, 55331,55334,55336,459, 55338,
- 5171, 4984, 55339,55341,55345,55354,29521,1588, 55325,8557, 14768,317, 55327,2369, 553, 25300,55328,55329,317, 55330,317, 1025, 633, 370, 332, 55332,6402,
- 1347, 317, 317, 55333,55335,371, 490, 31144,317, 317, 317, 460, 55337,354, 4963, 55340,317, 10939,355, 5130, 55342,55343,55344,4984, 317, 7527, 317,
+ 5171, 4984, 55339,55341,55345,55354,29521,1588, 55325,8557, 14768,317, 55327,2369, 553, 25300,55328,55329,317, 55330,317, 1025, 633, 370, 332, 55332,6402,
+ 1347, 317, 317, 55333,55335,371, 490, 31144,317, 317, 317, 460, 55337,354, 4963, 55340,317, 10939,355, 5130, 55342,55343,55344,4984, 317, 7527, 317,
55346,55347,55348,490, 5439, 55349,317, 24398,317, 317, 55350,8301, 362, 55351,7127, 651, 55352,55353,55355,55357,55368,55371,55373,55377,55391,404, 55394,
- 55396,55397,10081,55405,490, 55358,1459, 490, 317, 55360,5120, 55363,55365,30267,490, 651, 55359,317, 55361,55362,490, 490, 1109, 317, 2142, 5652, 1160,
+ 55396,55397,10081,55405,490, 55358,1459, 490, 317, 55360,5120, 55363,55365,30267,490, 651, 55359,317, 55361,55362,490, 490, 1109, 317, 2142, 5652, 1160,
5942, 490, 2537, 55364,1087, 317, 1459, 55366,55367,490, 490, 55369,19401,55370,55372,1109, 490, 16790,15419,55374,317, 357, 8510, 55375,1160, 6996, 24119,
- 55376,4980, 371, 5033, 55378,1459, 55389,55379,317, 55380,6089, 317, 2260, 55381,317, 317, 55382,55384,317, 55385,55383,5201, 18587,5225, 356, 317, 7242,
+ 55376,4980, 371, 5033, 55378,1459, 55389,55379,317, 55380,6089, 317, 2260, 55381,317, 317, 55382,55384,317, 55385,55383,5201, 18587,5225, 356, 317, 7242,
55386,55387,55388,5477, 55390,355, 381, 370, 365, 55392,1459, 55393,345, 55395,365, 7672, 317, 351, 2533, 2571, 317, 55398,883, 55399,55403,18577,55404,
317, 55400,317, 317, 55401,370, 2571, 317, 55402,7888, 24957,55407,1358, 351, 55409,55410,317, 15330,55415,55417,55418,55422,2066, 501, 55408,55411,55412,
6917, 351, 55413,363, 55414,5663, 7911, 55416,47599,55419,355, 55421,317, 55420,4591, 55423,55424,55425,965, 3605, 345, 55427,55434,55436,55441,55442,55447,
6294, 55428,365, 9789, 11279,55429,15017,6463, 55430,5570, 317, 55432,55431,317, 9244, 55433,317, 343, 29974,357, 10283,55435,317, 317, 317, 317, 20509,
9450, 55437,6207, 317, 55440,55438,373, 55439,10196,5447, 21470,7419, 574, 565, 6964, 343, 9265, 348, 351, 55443,55444,55445,365, 55446,24667,362, 51212,
- 55449,490, 2134, 317, 35333,490, 565, 55451,345, 55453,55454,2146, 362, 55455,20672,565, 2012, 13914,30882,55456,55457,55459,490, 55465,379, 55466,379,
+ 55449,490, 2134, 317, 35333,490, 565, 55451,345, 55453,55454,2146, 362, 55455,20672,565, 2012, 13914,30882,55456,55457,55459,490, 55465,379, 55466,379,
55468,1588, 55460,55461,55462,55464,47599,55463,4925, 317, 55467,1109, 1030, 55469,393, 317, 55471,55476,22866,55477,1060, 55478,55480,363, 55472,55473,55474,
55475,55479,45493,55481,17211,28600,55482,20441,33650,55484,365, 55485,490, 22685,367, 51212,345, 2035, 55498,55486,55488,55492,55494,55487,55489,2738, 55490,
55491,55493,55495,55496,55497,55500,55501,55503,2381, 317, 55504,1044, 43909,317, 55502,55505,317, 55506,55507,350, 55508,55509,55519,55539,55558,55582,55598,
55615,55620,55644,55650,55677,55679,55684,55694,55725,55729,55773,55790,55800,55816,55845,55949,55965,56069,56072,56076,55510,55511,55512,55513,55514,55515,55516,
- 55517,55518,343, 317, 55520,351, 55521,33398,55523,55528,55532,55536,55537,3505, 2156, 317, 343, 490, 55522,41067,21074,363, 317, 4943, 317, 317, 317,
+ 55517,55518,343, 317, 55520,351, 55521,33398,55523,55528,55532,55536,55537,3505, 2156, 317, 343, 490, 55522,41067,21074,363, 317, 4943, 317, 317, 317,
55524,317, 55525,55526,55527,55529,55530,55531,370, 2094, 30957,466, 370, 2571, 55533,317, 55534,55535,501, 317, 363, 55538,370, 2571, 317, 7196, 55540,
55541,501, 55546,55547,55548,55549,18978,2254, 350, 55542,55543,55544,55545,1943, 7850, 27851,356, 490, 55550,55556,55551,55552,55553,55554,55555,1358, 55557,
- 841, 55559,380, 55560,55565,55566,55569,55570,55580,393, 490, 55561,55562,21495,55563,55564,41584,596, 317, 8099, 345, 351, 5991, 466, 317, 55567,317,
- 55568,5709, 2272, 2080, 343, 55571,55572,55575,32397,2163, 55578,55573,55574,633, 55576,55577,55579,55581,1501, 317, 50949,55583,55587,55595,46653,2022, 362,
- 2022, 55596,55597,1526, 55584,317, 55585,55586,590, 450, 55588,55589,55594,55590,55591,55592,55593,317, 317, 605, 317, 317, 343, 55599,317, 317, 7401,
+ 841, 55559,380, 55560,55565,55566,55569,55570,55580,393, 490, 55561,55562,21495,55563,55564,41584,596, 317, 8099, 345, 351, 5991, 466, 317, 55567,317,
+ 55568,5709, 2272, 2080, 343, 55571,55572,55575,32397,2163, 55578,55573,55574,633, 55576,55577,55579,55581,1501, 317, 50949,55583,55587,55595,46653,2022, 362,
+ 2022, 55596,55597,1526, 55584,317, 55585,55586,590, 450, 55588,55589,55594,55590,55591,55592,55593,317, 317, 605, 317, 317, 343, 55599,317, 317, 7401,
55610,55611,55612,350, 55613,55614,55600,55602,55603,55604,554, 55606,55607,40690,490, 55609,317, 55601,32606,317, 55605,412, 38128,317, 55608,362, 32249,
317, 8578, 12423,316, 2060, 637, 1030, 317, 370, 370, 363, 317, 9083, 351, 1791, 466, 4965, 2553, 363, 55616,55617,317, 11388,2219, 55618,390, 55619,
55621,55625,55629,370, 27061,55630,55636,55638,345, 490, 55622,5447, 55623,382, 363, 55624,55626,55627,55628,55631,55633,55632,317, 317, 55634,317, 55635,
- 410, 3375, 55637,55639,55640,55642,55643,317, 55641,317, 317, 2146, 7143, 345, 5120, 5027, 317, 55645,55646,55648,25646,6917, 55649,55647,317, 1998, 343,
- 55651,55655,55656,55665,39260,55666,18460,2222, 350, 490, 55668,55673,596, 350, 317, 55652,15213,55654,7428, 1453, 13679,55653,390, 2222, 21274,350, 551,
- 55657,55659,55658,317, 317, 55660,55661,55662,55663,16384,466, 370, 317, 55664,16384,466, 317, 1999, 3529, 363, 317, 466, 1345, 55667,363, 317, 4591,
+ 410, 3375, 55637,55639,55640,55642,55643,317, 55641,317, 317, 2146, 7143, 345, 5120, 5027, 317, 55645,55646,55648,25646,6917, 55649,55647,317, 1998, 343,
+ 55651,55655,55656,55665,39260,55666,18460,2222, 350, 490, 55668,55673,596, 350, 317, 55652,15213,55654,7428, 1453, 13679,55653,390, 2222, 21274,350, 551,
+ 55657,55659,55658,317, 317, 55660,55661,55662,55663,16384,466, 370, 317, 55664,16384,466, 317, 1999, 3529, 363, 317, 466, 1345, 55667,363, 317, 4591,
350, 55669,55671,55670,2586, 2586, 55672,317, 55674,38685,55675,55676,55678,317, 362, 55680,5087, 6817, 55682,55681,48900,55683,55685,55686,343, 55687,55691,
43399,55692,404, 9702, 317, 490, 393, 317, 55688,55689,55690,5742, 1160, 317, 13960,317, 317, 406, 345, 317, 363, 363, 55693,55695,2515, 55698,55703,
55704,55705,48900,55708,55709,55723,55696,356, 55697,317, 7906, 55699,55700,55701,55702,2187, 16187,2163, 44265,2261, 1033, 55706,55707,55710,55711,55712,55713,
@@ -10293,22 +10288,22 @@ static const unsigned int ChildLocs[185261] =
43697,55770,55731,55737,55732,55733,55734,55735,55736,55738,55740,55744,55739,55741,55742,55743,55746,1020, 36631,55749,55751,55750,8066, 55753,2163, 5784, 55755,
1915, 33890,55756,55761,55757,55758,55759,490, 1347, 401, 55760,2272, 55762,55763,55764,55765,55766,55768,18526,55769,55771,317, 55772,55774,55775,55776,55778,
55782,55785,363, 55777,6697, 55779,55780,2948, 596, 5828, 55781,10253,18142,55783,4218, 317, 8783, 55784,21444,317, 55786,55788,55787,317, 55789,6420, 29140,
- 55791,55792,317, 9170, 55793,317, 433, 55794,8178, 55795,55796,4984, 2537, 501, 55797,2004, 55798,317, 2004, 8526, 5711, 345, 317, 317, 7779, 317, 1347,
+ 55791,55792,317, 9170, 55793,317, 433, 55794,8178, 55795,55796,4984, 2537, 501, 55797,2004, 55798,317, 2004, 8526, 5711, 345, 317, 317, 7779, 317, 1347,
345, 55799,490, 18166,317, 55801,55802,55803,363, 343, 55804,2553, 317, 55805,55809,10081,545, 14535,317, 533, 24225,439, 351, 2272, 2364, 317, 55806,
343, 26001,2553, 350, 2146, 55807,317, 317, 4925, 55808,317, 55810,55811,55813,55814,317, 317, 317, 317, 53257,332, 55812,14337,10877,317, 55815,55817,
55819,426, 55820,12429,55821,55827,45345,15983,362, 55828,55830,5872, 23690,55832,55833,10515,55838,55844,365, 55818,428, 7449, 356, 55822,19617,55823,27732,
- 55824,404, 26518,317, 55825,55826,13689,55829,55831,10520,1597, 55834,55835,55836,317, 12478,55837,13177,317, 404, 28529,55839,55840,55841,317, 317, 356,
+ 55824,404, 26518,317, 55825,55826,13689,55829,55831,10520,1597, 55834,55835,55836,317, 12478,55837,13177,317, 404, 28529,55839,55840,55841,317, 317, 356,
55842,317, 55843,12731,2022, 12478,55846,55852,55854,55855,55862,55863,55865,2546, 28720,501, 55868,55873,45858,55874,55933,55938,55946,55947,3361, 55847,49547,
- 382, 55849,10560,317, 419, 55848,351, 317, 501, 55850,55851,55853,384, 608, 55856,317, 317, 7618, 16017,55857,55859,55858,55860,7192, 55861,48240,5037,
- 55864,363, 13670,381, 55866,3529, 381, 55867,55869,55871,15221,12593,350, 4984, 55870,350, 55872,350, 351, 349, 13288,351, 7625, 55875,55877,55876,390,
+ 382, 55849,10560,317, 419, 55848,351, 317, 501, 55850,55851,55853,384, 608, 55856,317, 317, 7618, 16017,55857,55859,55858,55860,7192, 55861,48240,5037,
+ 55864,363, 13670,381, 55866,3529, 381, 55867,55869,55871,15221,12593,350, 4984, 55870,350, 55872,350, 351, 349, 13288,351, 7625, 55875,55877,55876,390,
55878,55880,55881,55889,55893,351, 55896,55898,55902,9853, 55903,55915,55923,55879,28917,35368,55882,55883,55885,55884,55886,55887,55888,55890,55891,55892,55894,
55895,55897,55899,55900,55901,317, 9549, 4268, 363, 18154,39541,55904,55905,55908,55910,55906,55907,55909,55911,55912,55913,55914,20660,55916,345, 345, 55920,
- 55917,55918,55919,2156, 8081, 55921,55922,47159,521, 28361,55924,55927,55925,55926,13323,1347, 55928,8065, 55929,55930,55931,55932,17358,5450, 55934,4965, 3646,
+ 55917,55918,55919,2156, 8081, 55921,55922,47159,521, 28361,55924,55927,55925,55926,13323,1347, 55928,8065, 55929,55930,55931,55932,17358,5450, 55934,4965, 3646,
317, 55936,55935,3007, 55937,41371,490, 17917,55939,55940,55943,55944,55941,55942,317, 5492, 370, 10674,1347, 55945,5431, 8882, 382, 55948,55950,55952,55962,
4952, 2317, 8506, 39465,5611, 390, 490, 55951,5392, 6555, 1347, 345, 55953,317, 345, 1548, 317, 55954,2058, 509, 55956,4952, 55959,4980, 55960,31026,55955,
55957,55958,363, 7389, 11648,55961,55963,55964,4980, 381, 345, 949, 55966,55967,55976,55981,55984,55985,55990,55992,55995,55998,39260,56001,56006,56012,56013,
- 56016,56028,370, 56030,56055,7651, 5037, 26518,56062,56066,343, 380, 356, 7785, 55968,55969,55971,6089, 55972,55973,55974,317, 380, 55970,2222, 317, 370,
- 317, 317, 356, 5055, 439, 6674, 7368, 6674, 55975,4925, 317, 24007,55977,55979,317, 55978,55980,1358, 12461,370, 55982,55983,5105, 24051,1109, 5223, 317,
+ 56016,56028,370, 56030,56055,7651, 5037, 26518,56062,56066,343, 380, 356, 7785, 55968,55969,55971,6089, 55972,55973,55974,317, 380, 55970,2222, 317, 370,
+ 317, 317, 356, 5055, 439, 6674, 7368, 6674, 55975,4925, 317, 24007,55977,55979,317, 55978,55980,1358, 12461,370, 55982,55983,5105, 24051,1109, 5223, 317,
55986,55987,55988,55989,55991,2369, 370, 55993,55994,380, 317, 5255, 501, 343, 371, 343, 393, 380, 55996,381, 55997,55999,367, 56000,36321,370, 56002,
56003,56004,55022,317, 317, 56005,56007,56009,56010,350, 7925, 56008,381, 5241, 6071, 350, 56011,363, 5332, 12060,554, 427, 343, 56014,350, 56015,56017,
56020,56022,56018,56019,317, 317, 317, 317, 12109,2369, 56021,56023,56024,56025,56026,56027,56029,370, 412, 56031,56032,2119, 56033,1230, 56036,37596,56037,
@@ -10316,87 +10311,87 @@ static const unsigned int ChildLocs[185261] =
566, 4564, 56053,37391,426, 373, 971, 1588, 29522,56056,317, 4045, 56057,56058,56059,56060,56061,3125, 565, 56063,56064,56065,56067,56068,2227, 56070,56071,
4591, 12025,380, 501, 7880, 7386, 351, 5159, 56073,56074,56075,12696,2405, 56077,2108, 56078,317, 56079,56081,317, 56082,56086,56089,27623,56091,490, 56094,
56095,56098,56083,56084,56085,56087,56088,34849,31822,56090,31310,56092,56093,19065,56096,56097,612, 608, 19111,607, 4090, 1430, 56100,56101,56105,56107,56109,
- 363, 56111,56112,5084, 5205, 56102,317, 317, 317, 56104,7384, 317, 2357, 56103,56106,317, 56108,317, 56110,56113,365, 365, 56114,490, 317, 5325, 363,
- 363, 16917,317, 56116,56120,56127,56135,27623,56154,490, 317, 1943, 381, 317, 317, 56117,2357, 56118,56119,56121,56122,56123,56124,56125,56126,56128,317,
+ 363, 56111,56112,5084, 5205, 56102,317, 317, 317, 56104,7384, 317, 2357, 56103,56106,317, 56108,317, 56110,56113,365, 365, 56114,490, 317, 5325, 363,
+ 363, 16917,317, 56116,56120,56127,56135,27623,56154,490, 317, 1943, 381, 317, 317, 56117,2357, 56118,56119,56121,56122,56123,56124,56125,56126,56128,317,
317, 56129,56130,56131,56132,56133,56134,56136,56143,33155,56145,56149,56137,56138,56139,56140,56141,56142,56144,34662,56146,56147,56148,56150,56151,56152,56153,
- 56155,56170,56177,56243,56246,56296,56300,56335,56341,56342,56344,56364,56369,56379,56397,56399,56403,56404,56413,56436,56461,56462,490, 56465,56466,56467,1020,
- 56156,380, 56168,56169,317, 317, 317, 5120, 56157,490, 56158,56159,56160,56161,56162,56163,56164,56165,56166,56167,6402, 56171,56173,2683, 56175,317, 317,
- 56172,317, 8488, 466, 56174,381, 384, 56176,384, 384, 56178,56182,56183,56194,10072,56201,56222,338, 56223,317, 56242,490, 2146, 56179,12752,56180,370,
+ 56155,56170,56177,56243,56246,56296,56300,56335,56341,56342,56344,56364,56369,56379,56397,56399,56403,56404,56413,56436,56461,56462,490, 56465,56466,56467,1020,
+ 56156,380, 56168,56169,317, 317, 317, 5120, 56157,490, 56158,56159,56160,56161,56162,56163,56164,56165,56166,56167,6402, 56171,56173,2683, 56175,317, 317,
+ 56172,317, 8488, 466, 56174,381, 384, 56176,384, 384, 56178,56182,56183,56194,10072,56201,56222,338, 56223,317, 56242,490, 2146, 56179,12752,56180,370,
56181,6458, 427, 317, 476, 56184,1230, 56185,56186,343, 2272, 56187,56188,56189,56190,56192,317, 370, 2117, 3366, 370, 345, 56191,370, 56193,4738, 16517,
- 56195,3023, 2086, 56197,2222, 56196,317, 345, 56198,317, 56199,1347, 6578, 5300, 56200,637, 56202,1347, 56210,56214,56215,20956,56218,56220,56221,1160, 317,
- 56203,56204,56205,56206,56207,56208,56209,317, 56211,56213,38461,404, 317, 1194, 317, 56212,28479,56216,56217,13137,56216,47526,17019,5126, 56219,345, 1345,
- 2108, 345, 4980, 5205, 363, 350, 565, 56224,56225,56234,32397,56237,56238,2087, 56226,56229,7141, 56232,56233,4980, 317, 345, 1347, 56227,56228,1347, 8266,
- 596, 437, 1160, 56230,1267, 317, 633, 2381, 317, 56231,365, 20055,56235,56236,332, 490, 363, 363, 2110, 56239,2035, 56240,56241,317, 339, 56244,365,
+ 56195,3023, 2086, 56197,2222, 56196,317, 345, 56198,317, 56199,1347, 6578, 5300, 56200,637, 56202,1347, 56210,56214,56215,20956,56218,56220,56221,1160, 317,
+ 56203,56204,56205,56206,56207,56208,56209,317, 56211,56213,38461,404, 317, 1194, 317, 56212,28479,56216,56217,13137,56216,47526,17019,5126, 56219,345, 1345,
+ 2108, 345, 4980, 5205, 363, 350, 565, 56224,56225,56234,32397,56237,56238,2087, 56226,56229,7141, 56232,56233,4980, 317, 345, 1347, 56227,56228,1347, 8266,
+ 596, 437, 1160, 56230,1267, 317, 633, 2381, 317, 56231,365, 20055,56235,56236,332, 490, 363, 363, 2110, 56239,2035, 56240,56241,317, 339, 56244,365,
56245,317, 2279, 317, 2577, 56247,2156, 56249,56267,56268,56269,56275,56277,56279,56282,56287,56288,56289,56295,741, 56248,490, 5401, 380, 317, 55543,56250,
- 56253,56261,56262,56251,56252,317, 339, 3284, 2102, 345, 56254,5897, 351, 56255,8948, 56257,56258,56256,11196,11196,56259,56260,18848,56263,56264,56265,3284,
+ 56253,56261,56262,56251,56252,317, 339, 3284, 2102, 345, 56254,5897, 351, 56255,8948, 56257,56258,56256,11196,11196,56259,56260,18848,56263,56264,56265,3284,
56266,4591, 3529, 345, 439, 317, 5300, 56270,10316,56272,56273,2134, 56271,350, 490, 317, 350, 56274,501, 23696,2334, 317, 56276,605, 4591, 2163, 56278,
- 45441,5662, 56280,49032,490, 362, 56281,317, 16017,29906,317, 56283,56284,351, 56285,56286,3075, 1358, 1347, 1347, 343, 56290,56291,56294,56292,56293,317,
- 25114,56297,317, 56299,370, 56298,382, 2086, 6623, 343, 56301,56304,56307,25086,363, 56333,1160, 56302,56303,5616, 363, 56305,56306,9938, 8446, 56308,362,
+ 45441,5662, 56280,49032,490, 362, 56281,317, 16017,29906,317, 56283,56284,351, 56285,56286,3075, 1358, 1347, 1347, 343, 56290,56291,56294,56292,56293,317,
+ 25114,56297,317, 56299,370, 56298,382, 2086, 6623, 343, 56301,56304,56307,25086,363, 56333,1160, 56302,56303,5616, 363, 56305,56306,9938, 8446, 56308,362,
56309,56310,317, 1999, 351, 317, 56311,56315,15260,5840, 56317,56319,13914,56321,56324,6765, 56327,4789, 56330,317, 1060, 56312,56313,56314,56316,1347, 56318,
317, 343, 56320,56322,317, 343, 56323,56325,317, 56326,6420, 389, 56328,56329,439, 384, 56331,56332,2206, 22412,4925, 317, 56334,317, 427, 56336,36630,
- 56338,56340,317, 56337,381, 56339,8447, 317, 5266, 365, 5294, 56343,317, 56345,56346,3361, 56348,56351,56353,56355,15842,56363,390, 317, 5238, 317, 490,
- 3182, 651, 5022, 13650,56347,317, 10279,661, 317, 2146, 371, 56349,56350,18333,490, 345, 51063,619, 43075,11485,38196,56352,13790,6228, 317, 633, 317,
+ 56338,56340,317, 56337,381, 56339,8447, 317, 5266, 365, 5294, 56343,317, 56345,56346,3361, 56348,56351,56353,56355,15842,56363,390, 317, 5238, 317, 490,
+ 3182, 651, 5022, 13650,56347,317, 10279,661, 317, 2146, 371, 56349,56350,18333,490, 345, 51063,619, 43075,11485,38196,56352,13790,6228, 317, 633, 317,
317, 317, 490, 56354,22945,5126, 56356,56362,536, 317, 1020, 56357,317, 339, 1044, 56358,56360,317, 345, 317, 345, 56361,56359,317, 2108, 490, 24137,
490, 1347, 56365,317, 56366,56367,5213, 10217,40659,5126, 56368,345, 23887,317, 370, 363, 363, 404, 56370,56372,56373,345, 317, 56375,56376,56377,56378,
317, 1108, 2110, 317, 56371,6817, 343, 345, 56374,351, 18244,2719, 317, 317, 317, 6227, 56380,7618, 56384,490, 56386,317, 6600, 56387,343, 56389,56391,
- 56392,25016,56381,56382,56383,633, 543, 10189,1347, 317, 56385,3611, 31824,596, 1353, 332, 2035, 5241, 56388,11485,6228, 317, 317, 362, 317, 56390,317,
- 7874, 317, 1912, 317, 56393,317, 56394,56395,56396,56398,381, 390, 317, 741, 6834, 55411,317, 56400,56402,317, 404, 56401,27845,466, 50069,363, 317,
+ 56392,25016,56381,56382,56383,633, 543, 10189,1347, 317, 56385,3611, 31824,596, 1353, 332, 2035, 5241, 56388,11485,6228, 317, 317, 362, 317, 56390,317,
+ 7874, 317, 1912, 317, 56393,317, 56394,56395,56396,56398,381, 390, 317, 741, 6834, 55411,317, 56400,56402,317, 404, 56401,27845,466, 50069,363, 317,
351, 317, 367, 3941, 56405,27765,56406,317, 56408,56409,56407,56410,56411,56412,4984, 56414,365, 56415,56417,56421,56422,5661, 332, 4738, 56423,56424,56430,
56435,14535,381, 56416,27957,56418,490, 37402,6834, 56419,56420,490, 9174, 5173, 8926, 6901, 2178, 56425,4984, 56429,2022, 553, 56426,317, 56427,56428,56431,
350, 56432,56434,56433,2586, 2586, 4738, 317, 56437,56439,56441,23624,56442,56453,56457,6255, 56459,56438,2033, 351, 362, 56440,14062,317, 958, 56443,56444,
56445,317, 343, 343, 343, 317, 56446,56450,317, 345, 317, 56447,56448,56449,34319,56451,56452,56454,56456,56455,12329,56458,36342,350, 317, 5105, 13638,
56460,56463,56464,2551, 554, 317, 5381, 317, 2155, 1347, 7214, 317, 317, 356, 404, 20684,404, 56468,2590, 56470,56472,883, 317, 56469,5120, 56471,56473,
- 56474,2808, 635, 56476,20231,56478,56480,56482,56486,4060, 56487,56488,56489,56477,34687,56479,56481,317, 317, 56483,56484,3314, 56485,1915, 612, 30221,4589,
+ 56474,2808, 635, 56476,20231,56478,56480,56482,56486,4060, 56487,56488,56489,56477,34687,56479,56481,317, 317, 56483,56484,3314, 56485,1915, 612, 30221,4589,
370, 3726, 56491,4060, 356, 345, 345, 317, 367, 56494,56496,44581,19922,56498,56502,56495,56497,3688, 56499,317, 56500,317, 56501,56503,56504,56508,56521,
- 56529,56535,56541,56545,56551,56556,6866, 56561,56580,56594,56606,56693,56708,192, 56824,56848,56899,56910,56956,56971,56972,56973,24024,317, 317, 317, 317,
- 317, 317, 317, 317, 317, 56505,317, 24100,56506,317, 56507,345, 13457,317, 56509,380, 56510,56513,56516,56519,56520,56511,317, 317, 56512,56514,7456,
+ 56529,56535,56541,56545,56551,56556,6866, 56561,56580,56594,56606,56693,56708,192, 56824,56848,56899,56910,56956,56971,56972,56973,24024,317, 317, 317, 317,
+ 317, 317, 317, 317, 317, 56505,317, 24100,56506,317, 56507,345, 13457,317, 56509,380, 56510,56513,56516,56519,56520,56511,317, 317, 56512,56514,7456,
317, 10149,317, 56515,5223, 1871, 317, 56517,590, 596, 56518,32873,6551, 332, 380, 9436, 317, 6808, 351, 56522,56523,2322, 56524,965, 56526,317, 56527,
- 427, 523, 1347, 365, 56525,317, 56528,5482, 42110,56530,56531,1347, 2272, 4952, 56532,56533,2077, 317, 56534,4717, 380, 18034,6696, 1453, 2134, 56536,365,
+ 427, 523, 1347, 365, 56525,317, 56528,5482, 42110,56530,56531,1347, 2272, 4952, 56532,56533,2077, 317, 56534,4717, 380, 18034,6696, 1453, 2134, 56536,365,
56537,56538,56539,317, 2568, 1109, 5891, 27765,317, 56540,28413,2219, 56542,565, 9474, 7428, 56543,317, 317, 9672, 56544,56546,15118,56547,343, 56548,56549,
- 317, 596, 356, 363, 22724,490, 356, 971, 5836, 2078, 56550,490, 2110, 6409, 56552,56554,56555,56553,317, 343, 8979, 56557,6578, 56559,343, 56558,317,
- 56560,418, 317, 317, 574, 316, 1347, 56562,501, 26221,37595,56563,345, 56564,3119, 56565,56567,56570,56575,56576,317, 56577,1721, 56579,317, 320, 1267,
+ 317, 596, 356, 363, 22724,490, 356, 971, 5836, 2078, 56550,490, 2110, 6409, 56552,56554,56555,56553,317, 343, 8979, 56557,6578, 56559,343, 56558,317,
+ 56560,418, 317, 317, 574, 316, 1347, 56562,501, 26221,37595,56563,345, 56564,3119, 56565,56567,56570,56575,56576,317, 56577,1721, 56579,317, 320, 1267,
620, 732, 56566,732, 669, 56568,56569,669, 732, 620, 620, 621, 649, 621, 56571,56572,56574,620, 669, 56573,839, 732, 56578,1909, 320, 740, 56581,
- 56582,56583,1358, 56584,56588,56590,56591,17158,5428, 317, 5428, 317, 7866, 351, 317, 1160, 9244, 317, 343, 56585,317, 56586,56587,56589,343, 362, 2110,
- 15030,56592,466, 363, 56593,56595,1588, 56598,56602,7689, 24918,56605,2110, 56596,317, 596, 317, 56597,56599,9922, 56600,56601,56603,317, 56604,5634, 5477,
+ 56582,56583,1358, 56584,56588,56590,56591,17158,5428, 317, 5428, 317, 7866, 351, 317, 1160, 9244, 317, 343, 56585,317, 56586,56587,56589,343, 362, 2110,
+ 15030,56592,466, 363, 56593,56595,1588, 56598,56602,7689, 24918,56605,2110, 56596,317, 596, 317, 56597,56599,9922, 56600,56601,56603,317, 56604,5634, 5477,
21347,2022, 343, 317, 56607,56612,56630,56643,56647,56649,52560,56650,56654,56658,56659,56664,56666,56676,56680,56687,317, 56690,5517, 56608,490, 56611,56609,
56610,1453, 1430, 56613,56615,56616,56614,56617,56625,56618,56623,56619,56620,56622,56621,56624,56626,56627,56628,56629,56631,608, 56638,41941,42940,56632,56633,
- 56634,56635,56636,56637,56639,56640,56641,56642,317, 56644,31423,55960,56645,490, 14841,397, 56646,381, 17228,56648,56651,56653,56652,56655,56656,56657,8451,
+ 56634,56635,56636,56637,56639,56640,56641,56642,317, 56644,31423,55960,56645,490, 14841,397, 56646,381, 17228,56648,56651,56653,56652,56655,56656,56657,8451,
56660,343, 317, 56661,6203, 4788, 56662,56663,56665,56667,56669,56670,56675,56668,2369, 565, 56671,6255, 56672,56673,56674,56677,343, 56678,56679,56681,42138,
56685,2108, 56682,56683,56684,317, 521, 56686,1060, 56688,562, 56689,56691,56692,317, 390, 56694,317, 317, 15571,362, 56696,56701,56706,5793, 1481, 56695,
363, 56697,565, 343, 12312,363, 4789, 56698,317, 317, 56699,56700,56702,56703,56704,56705,2211, 50469,56707,56709,317, 350, 54450,56710,11505,56711,56712,
56713,56718,56721,56723,56752,56757,56758,56760,56761,56762,56764,1347, 56770,39466,56771,56775,56782,427, 56817,56819,56823,56714,317, 29424,2004, 317, 56715,
56716,56717,56719,317, 568, 317, 371, 56720,380, 2280, 490, 56722,11373,56724,56733,56734,56735,56738,3023, 56742,56743,56744,56747,14829,6601, 56748,56749,
543, 553, 56725,56726,56727,56728,56729,56730,56731,56732,56736,56737,363, 380, 56739,317, 9244, 56740,56741,363, 18840,12525,2948, 3529, 7785, 1358, 43038,
- 371, 439, 56745,439, 317, 56746,7662, 2405, 971, 56750,14575,56751,6551, 317, 363, 6551, 17136,56753,56754,56755,56756,3076, 12303,56759,1347, 741, 7713,
- 332, 9573, 343, 1358, 6048, 363, 317, 345, 14951,370, 56763,439, 56765,13839,5537, 31944,317, 317, 56766,56768,3031, 317, 370, 317, 56767,370, 317,
- 7888, 370, 10674,317, 370, 56769,317, 317, 404, 10471,10476,317, 426, 1459, 317, 33571,56772,56773,56774,4952, 356, 371, 317, 317, 5538, 36081,317,
+ 371, 439, 56745,439, 317, 56746,7662, 2405, 971, 56750,14575,56751,6551, 317, 363, 6551, 17136,56753,56754,56755,56756,3076, 12303,56759,1347, 741, 7713,
+ 332, 9573, 343, 1358, 6048, 363, 317, 345, 14951,370, 56763,439, 56765,13839,5537, 31944,317, 317, 56766,56768,3031, 317, 370, 317, 56767,370, 317,
+ 7888, 370, 10674,317, 370, 56769,317, 317, 404, 10471,10476,317, 426, 1459, 317, 33571,56772,56773,56774,4952, 356, 371, 317, 317, 5538, 36081,317,
56776,56778,54381,56779,56780,29521,56777,10149,317, 390, 29521,56781,439, 427, 356, 56783,56784,5684, 317, 317, 332, 7657, 56785,317, 56786,56792,56794,
- 56797,56805,2413, 5537, 31023,56806,51386,56807,56808,56809,5037, 56813,56787,56789,56791,56788,56790,4962, 56793,7368, 9696, 23325,56795,56796,14535,6696, 476,
+ 56797,56805,2413, 5537, 31023,56806,51386,56807,56808,56809,5037, 56813,56787,56789,56791,56788,56790,4962, 56793,7368, 9696, 23325,56795,56796,14535,6696, 476,
56798,56803,317, 56799,56800,56801,550, 56802,370, 56804,2510, 9590, 6598, 3076, 381, 393, 350, 7368, 1060, 1060, 2171, 2261, 7481, 56810,317, 56811,56812,
5406, 56814,56815,2108, 9822, 56816,380, 428, 56818,56820,56821,42266,2063, 56822,380, 381, 56825,56826,56828,56832,5138, 30882,8137, 56836,56837,348, 56838,
- 22786,554, 380, 56839,56842,56843,29521,317, 1481, 2218, 317, 317, 56827,56829,22409,396, 317, 317, 317, 317, 56831,317, 56830,56833,56834,56835,2680,
+ 22786,554, 380, 56839,56842,56843,29521,317, 1481, 2218, 317, 317, 56827,56829,22409,396, 317, 317, 317, 317, 56831,317, 56830,56833,56834,56835,2680,
605, 56840,56841,56844,351, 56846,56845,56847,4564, 21234,427, 39109,356, 56849,56851,7857, 56859,6089, 56863,56873,56877,56878,2402, 56879,56884,317, 56887,
- 9141, 56893,56897,343, 56850,589, 56852,5653, 317, 56853,10119,56856,5458, 13766,56854,56855,317, 317, 380, 345, 1526, 56857,56858,3182, 56860,317, 355,
- 56862,29521,56861,56864,56865,56866,13394,56869,56871,427, 1453, 2719, 56867,56868,56870,56872,56874,20523,317, 343, 382, 5869, 317, 5241, 56875,56876,9482,
+ 9141, 56893,56897,343, 56850,589, 56852,5653, 317, 56853,10119,56856,5458, 13766,56854,56855,317, 317, 380, 345, 1526, 56857,56858,3182, 56860,317, 355,
+ 56862,29521,56861,56864,56865,56866,13394,56869,56871,427, 1453, 2719, 56867,56868,56870,56872,56874,20523,317, 343, 382, 5869, 317, 5241, 56875,56876,9482,
317, 317, 370, 367, 56880,490, 56882,35628,501, 56881,56883,56885,367, 56886,990, 4965, 56888,56892,317, 56889,56890,56891,56894,371, 56895,56896,56898,
56900,317, 56903,56904,18257,2081, 56905,56906,317, 390, 56908,56901,56902,21786,317, 56907,343, 317, 56909,11144,23192,317, 56911,56915,56928,56929,56933,
1700, 317, 42816,317, 317, 56912,56913,56914,332, 490, 56916,56920,56927,5295, 317, 7525, 56917,56919,317, 5201, 56918,6425, 1347, 5328, 317, 317, 56921,
56922,343, 56923,56924,317, 56925,56926,317, 29979,56930,490, 15464,49315,56931,2219, 56932,1347, 10320,2413, 36909,317, 56934,56940,56943,56947,56952,56955,
19390,56935,56936,56937,56938,56939,56941,56942,56944,56945,56946,56948,56949,56950,56951,23609,56953,365, 56954,56957,56958,501, 20909,8906, 56961,56963,56964,
- 56967,56968,56969,317, 2177, 56959,32534,16910,56960,5120, 10317,6228, 362, 385, 44431,16528,56962,7389, 9557, 3999, 56965,56966,18848,56970,317, 343, 317,
+ 56967,56968,56969,317, 2177, 56959,32534,16910,56960,5120, 10317,6228, 362, 385, 44431,16528,56962,7389, 9557, 3999, 56965,56966,18848,56970,317, 343, 317,
6546, 7495, 56974,3429, 427, 56975,345, 317, 380, 56977,56979,5084, 56981,1060, 345, 317, 56982,56984,635, 6532, 56985,3557, 56988,56989,43588,56986,56987,
56990,56992,345, 56993,57002,22420,57011,339, 57012,339, 56994,56995,56996,56997,56998,56999,57000,57001,57003,5211, 57004,57009,57005,57006,57007,57008,57010,
450, 57013,57019,57021,57039,57046,57048,57050,57054,57055,57056,57057,57059,57064,57081,57095,57096,965, 57097,57109,57115,57132,57133,57135,11158,57137,57138,
57014,490, 57018,490, 57015,57016,57017,9832, 345, 317, 1020, 351, 57020,57022,317, 57024,57025,57029,57023,380, 2033, 2033, 466, 57026,57027,317, 57028,
- 57030,5752, 57031,1331, 57032,345, 317, 343, 5536, 57033,1347, 57034,57035,33511,2261, 2060, 57036,57037,57038,57040,6713, 57042,427, 4249, 57041,317, 8978,
- 362, 57043,317, 382, 381, 370, 57044,57045,596, 317, 57047,16308,5611, 490, 48787,12001,317, 57049,380, 20535,57051,57052,57053,21318,1347, 4373, 2845,
+ 57030,5752, 57031,1331, 57032,345, 317, 343, 5536, 57033,1347, 57034,57035,33511,2261, 2060, 57036,57037,57038,57040,6713, 57042,427, 4249, 57041,317, 8978,
+ 362, 57043,317, 382, 381, 370, 57044,57045,596, 317, 57047,16308,5611, 490, 48787,12001,317, 57049,380, 20535,57051,57052,57053,21318,1347, 4373, 2845,
354, 57058,317, 57060,57061,390, 22791,57062,317, 57063,41894,370, 57065,57067,57072,57076,9699, 2584, 370, 57080,57066,371, 1033, 57068,466, 57070,57071,
57069,1018, 1018, 317, 317, 317, 317, 317, 317, 356, 466, 363, 317, 476, 1915, 2146, 57073,57074,10291,57075,370, 1347, 2146, 10253,345, 5406, 57077,
- 57078,57079,57082,57085,57087,57088,6599, 1108, 12454,16092,57089,1100, 317, 57092,351, 490, 57093,16092,57083,57084,317, 57086,2067, 16092,1345, 317, 317,
- 317, 2546, 57090,317, 57091,37220,370, 7737, 9175, 57094,5694, 317, 354, 57098,57101,57102,57103,57104,362, 362, 365, 48605,343, 57105,57108,380, 371,
+ 57078,57079,57082,57085,57087,57088,6599, 1108, 12454,16092,57089,1100, 317, 57092,351, 490, 57093,16092,57083,57084,317, 57086,2067, 16092,1345, 317, 317,
+ 317, 2546, 57090,317, 57091,37220,370, 7737, 9175, 57094,5694, 317, 354, 57098,57101,57102,57103,57104,362, 362, 365, 48605,343, 57105,57108,380, 371,
380, 57099,57100,5225, 9567, 1881, 317, 390, 6961, 317, 57106,466, 57107,317, 317, 6309, 5201, 317, 501, 18042,57110,9059, 317, 317, 427, 16626,57112,
317, 57111,57113,6036, 57114,8035, 543, 57116,11855,57117,373, 32606,2022, 966, 57119,57125,57126,15047,393, 32015,57118,363, 392, 57120,4267, 57121,57122,
- 57123,57124,345, 5701, 412, 14289,3987, 317, 317, 428, 57127,57131,317, 57128,57129,57130,17964,57134,57136,1194, 11347,427, 5439, 57141,1060, 14746,380,
+ 57123,57124,345, 5701, 412, 14289,3987, 317, 317, 428, 57127,57131,317, 57128,57129,57130,17964,57134,57136,1194, 11347,427, 5439, 57141,1060, 14746,380,
16298,57142,36917,6833, 57145,57147,57143,57144,57146,57149,57150,57152,57160,57161,57162,57164,57167,57169,57170,1914, 57175,57176,57177,50060,3999, 57182,57183,
57186,57187,43002,57191,57193,371, 11055,490, 57153,57159,490, 5624, 57154,490, 57155,57156,57157,57158,4949, 34634,427, 39009,57163,57165,57166,317, 57168,
50639,490, 501, 551, 630, 363, 349, 8224, 345, 44746,57171,6394, 317, 57172,57173,57174,2134, 19960,43502,23291,363, 363, 5055, 439, 363, 57178,57179,
@@ -10405,42 +10400,42 @@ static const unsigned int ChildLocs[185261] =
57201,57205,57212,351, 57220,57223,57224,57231,57234,57236,57238,57241,57242,57243,57248,27587,57202,57204,10012,57203,57206,2584, 57209,57207,57208,2022, 57210,
57211,351, 57213,22356,57214,57217,2405, 2203, 317, 20552,57215,356, 3987, 57216,27211,362, 57218,57219,57221,57222,14144,22952,20551,2366, 6547, 6855, 32869,
57225,57228,57229,362, 57226,57227,5793, 479, 448, 57230,2272, 57232,57233,418, 8205, 57235,57237,6834, 14883,2021, 490, 57239,380, 57240,17444,57244,57245,
- 57246,362, 44653,2022, 2849, 57247,57249,57255,57250,490, 57251,57252,57253,57254,57256,6907, 57259,57260,57261,57262,57264,57265,57267,57268,57269,57270,8451,
+ 57246,362, 44653,2022, 2849, 57247,57249,57255,57250,490, 57251,57252,57253,57254,57256,6907, 57259,57260,57261,57262,57264,57265,57267,57268,57269,57270,8451,
590, 18794,57272,57281,57282,57283,57284,18794,57273,57274,9624, 13863,343, 57277,36446,9914, 317, 57280,5037, 6089, 57275,57276,317, 10946,363, 57278,57279,
14549,363, 396, 4943, 317, 5841, 558, 317, 1325, 9844, 345, 9624, 57285,345, 57286,57287,2022, 9914, 317, 3124, 370, 363, 433, 57288,57296,57299,57300,
57339,57341,57343,57346,57353,57364,57366,57369,57376,57404,57408,10012,29305,57289,350, 373, 57290,57292,4965, 57294,490, 3429, 2464, 57291,332, 404, 57293,
351, 404, 363, 57295,2193, 57297,57298,390, 317, 57301,57302,57303,57305,57306,57338,5273, 317, 2272, 21318,57304,7408, 16968,317, 16968,1711, 10487,57307,
- 351, 3987, 57309,57315,57320,57324,57327,57329,57330,370, 57331,317, 317, 57308,608, 3987, 57310,57311,57312,57313,57314,57316,57317,57318,317, 57319,1135,
+ 351, 3987, 57309,57315,57320,57324,57327,57329,57330,370, 57331,317, 317, 57308,608, 3987, 57310,57311,57312,57313,57314,57316,57317,57318,317, 57319,1135,
350, 57321,57322,57323,14951,57325,57326,390, 317, 34395,317, 5663, 11196,57328,28650,15221,365, 363, 57332,7618, 1020, 44163,57333,57334,57335,57336,16153,
57337,57340,57342,21838,57344,401, 317, 11279,57345,362, 57347,57348,57349,356, 57350,2510, 317, 5650, 382, 57351,57352,5477, 21910,57354,57355,57356,57363,
- 317, 566, 4268, 21602,2571, 404, 57357,36046,57360,57362,21936,57358,5447, 466, 57359,1325, 5054, 448, 57361,317, 5324, 397, 2150, 19548,57365,1347, 412,
- 57367,343, 2413, 8083, 57368,57370,57373,57374,57375,385, 57371,317, 317, 57372,317, 15842,471, 404, 363, 5836, 5655, 5611, 20535,363, 2219, 363, 381,
- 57377,57383,33966,57391,57394,57378,57380,57379,5324, 5200, 57381,317, 7640, 57382,57384,57388,57385,57386,5394, 466, 2155, 7377, 57387,10120,8544, 57389,356,
+ 317, 566, 4268, 21602,2571, 404, 57357,36046,57360,57362,21936,57358,5447, 466, 57359,1325, 5054, 448, 57361,317, 5324, 397, 2150, 19548,57365,1347, 412,
+ 57367,343, 2413, 8083, 57368,57370,57373,57374,57375,385, 57371,317, 317, 57372,317, 15842,471, 404, 363, 5836, 5655, 5611, 20535,363, 2219, 363, 381,
+ 57377,57383,33966,57391,57394,57378,57380,57379,5324, 5200, 57381,317, 7640, 57382,57384,57388,57385,57386,5394, 466, 2155, 7377, 57387,10120,8544, 57389,356,
57390,382, 5616, 5550, 57392,57393,13996,343, 55228,57395,6598, 13596,57400,57396,57397,57398,57399,380, 5419, 317, 57401,57402,57403,57405,57407,57406,24722,
343, 44592,57409,57410,57411,57413,57418,339, 57425,57453,57465,343, 57477,57481,57482,57484,362, 57487,57504,404, 57414,57415,57416,57417,2537, 363, 57419,
57421,57422,57423,57424,4984, 57420,2035, 11158,57426,57430,57435,57441,57444,317, 57427,57428,57429,57431,57434,332, 57432,57433,57436,2143, 362, 57437,57438,
57439,57440,317, 57442,1526, 57443,57445,57447,57450,57446,5225, 18577,57448,57449,2184, 5524, 21680,356, 57451,317, 57452,466, 57454,57460,332, 57463,57464,
- 57455,1160, 317, 317, 12416,57456,57457,57458,57459,345, 637, 2261, 57461,57462,57466,57467,57469,57470,57473,57475,2631, 44910,8455, 57468,365, 57468,2357,
+ 57455,1160, 317, 317, 12416,57456,57457,57458,57459,345, 637, 2261, 57461,57462,57466,57467,57469,57470,57473,57475,2631, 44910,8455, 57468,365, 57468,2357,
317, 3284, 57471,57472,57474,34320,57476,350, 57478,554, 57480,28694,16166,57479,7949, 317, 5022, 317, 384, 57483,343, 57485,343, 57486,351, 332, 32092,
- 351, 317, 647, 57488,4268, 57493,24818,20984,57489,317, 343, 57492,57490,57491,1347, 30324,317, 57494,57500,57501,57495,343, 57496,57497,317, 317, 1160,
- 317, 317, 317, 57498,57499,57502,57503,57505,317, 351, 57506,345, 57507,356, 57509,339, 57510,57515,57523,57527,57528,8207, 4974, 51212,57534,57542,433,
- 57545,5742, 2405, 57549,351, 1337, 317, 2203, 6834, 317, 317, 543, 14829,57511,57514,32606,370, 317, 317, 26518,57512,57513,4965, 57516,317, 57517,317,
+ 351, 317, 647, 57488,4268, 57493,24818,20984,57489,317, 343, 57492,57490,57491,1347, 30324,317, 57494,57500,57501,57495,343, 57496,57497,317, 317, 1160,
+ 317, 317, 317, 57498,57499,57502,57503,57505,317, 351, 57506,345, 57507,356, 57509,339, 57510,57515,57523,57527,57528,8207, 4974, 51212,57534,57542,433,
+ 57545,5742, 2405, 57549,351, 1337, 317, 2203, 6834, 317, 317, 543, 14829,57511,57514,32606,370, 317, 317, 26518,57512,57513,4965, 57516,317, 57517,317,
39260,57518,1347, 57519,363, 57520,57521,57522,7734, 39260,1358, 10538,39260,10946,57524,317, 345, 57525,57526,427, 350, 7095, 4984, 57529,57530,57532,57533,
- 490, 57531,2557, 20552,57535,57536,57538,57539,317, 57541,356, 32358,317, 57537,428, 15066,57216,965, 1325, 489, 317, 52739,2571, 317, 57540,20551,317,
+ 490, 57531,2557, 20552,57535,57536,57538,57539,317, 57541,356, 32358,317, 57537,428, 15066,57216,965, 1325, 489, 317, 52739,2571, 317, 57540,20551,317,
317, 57218,57543,57544,57546,57547,57548,57550,57551,57553,57558,57560,57561,7225, 57569,57576,18299,57577,57580,57587,23738,317, 13525,57554,57555,57556,57557,
- 57559,39102,12478,317, 57562,57567,57568,57563,57565,57564,5223, 57566,351, 343, 57570,57575,343, 57571,57572,57573,57574,29831,317, 57578,57579,380, 350,
+ 57559,39102,12478,317, 57562,57567,57568,57563,57565,57564,5223, 57566,351, 343, 57570,57575,343, 57571,57572,57573,57574,29831,317, 57578,57579,380, 350,
343, 390, 57581,57583,57582,57584,9938, 57586,57585,472, 27334,501, 57588,2134, 57589,5126, 57221,57591,427, 57594,57595,350, 497, 57619,57622,57623,57592,
57593,317, 44592,31158,6326, 57596,4952, 57604,57610,350, 551, 57612,57613,2117, 317, 57597,57603,57598,2156, 12631,57601,57599,5898, 4949, 57600,1347, 57602,
14571,356, 10877,5662, 317, 57605,578, 380, 382, 57606,57607,317, 15110,21413,317, 57608,351, 17724,317, 57609,5441, 426, 370, 317, 370, 2272, 57611,
31380,57614,57616,36199,57618,2387, 2551, 57615,57617,4268, 343, 57620,2366, 317, 57621,19187,5459, 11881,1526, 57624,343, 14571,57625,57627,57631,57634,57636,
317, 57637,57638,57641,2171, 57645,590, 57646,2067, 57649,57651,57652,501, 317, 9525, 365, 57628,57629,57630,490, 490, 317, 332, 7005, 317, 362, 57632,
- 479, 57633,363, 57635,28836,4984, 317, 317, 427, 1108, 57639,490, 351, 57640,5836, 370, 434, 5149, 2381, 57642,466, 317, 57643,57644,317, 9175, 558,
- 450, 2078, 57647,9521, 57648,7062, 5663, 57650,590, 317, 363, 2366, 57653,57654,57656,57660,57661,57663,57669,490, 57673,57682,57685,57686,57690,57692,490,
+ 479, 57633,363, 57635,28836,4984, 317, 317, 427, 1108, 57639,490, 351, 57640,5836, 370, 434, 5149, 2381, 57642,466, 317, 57643,57644,317, 9175, 558,
+ 450, 2078, 57647,9521, 57648,7062, 5663, 57650,590, 317, 363, 2366, 57653,57654,57656,57660,57661,57663,57669,490, 57673,57682,57685,57686,57690,57692,490,
3987, 57693,362, 11648,57226,57657,57658,2078, 490, 350, 404, 317, 7005, 362, 20621,317, 317, 57659,16278,370, 479, 317, 57662,57664,57665,57666,57667,
- 57668,57670,57671,57672,57674,57675,13369,4738, 57679,2272, 8178, 57681,439, 6203, 57676,317, 15459,7618, 57677,57678,57680,419, 363, 5663, 7866, 57683,317,
- 57684,317, 317, 2063, 317, 317, 317, 4976, 490, 57687,57688,332, 57689,2035, 57691,356, 10546,317, 490, 2036, 2845, 57694,13730,317, 1000, 57696,6935,
- 57697,57700,57701,57705,490, 362, 57698,20857,362, 57699,50600,317, 317, 3573, 345, 2222, 12756,9756, 4268, 57702,57703,57704,12800,365, 363, 57707,2004,
- 57708,345, 50664,339, 317, 490, 53682,356, 57709,490, 332, 57710,57712,57717,57729,57730,57734,57736,57739,57740,57746,57747,57748,57753,57756,1230, 490,
+ 57668,57670,57671,57672,57674,57675,13369,4738, 57679,2272, 8178, 57681,439, 6203, 57676,317, 15459,7618, 57677,57678,57680,419, 363, 5663, 7866, 57683,317,
+ 57684,317, 317, 2063, 317, 317, 317, 4976, 490, 57687,57688,332, 57689,2035, 57691,356, 10546,317, 490, 2036, 2845, 57694,13730,317, 1000, 57696,6935,
+ 57697,57700,57701,57705,490, 362, 57698,20857,362, 57699,50600,317, 317, 3573, 345, 2222, 12756,9756, 4268, 57702,57703,57704,12800,365, 363, 57707,2004,
+ 57708,345, 50664,339, 317, 490, 53682,356, 57709,490, 332, 57710,57712,57717,57729,57730,57734,57736,57739,57740,57746,57747,57748,57753,57756,1230, 490,
2146, 2844, 57713,57714,57715,365, 490, 2807, 490, 57716,10898,317, 317, 2322, 2110, 2348, 317, 52725,2845, 356, 371, 57718,57721,343, 57723,317, 57724,
404, 57726,57719,54972,57720,57722,10641,5661, 57725,4962, 404, 57727,57728,57731,1347, 6834, 29531,57732,7797, 57733,317, 317, 490, 5217, 57735,363, 57737,
384, 57738,982, 4186, 57483,1459, 2058, 5439, 57741,57742,343, 371, 11280,3284, 363, 57743,57744,57745,1345, 2369, 10878,55347,363, 43191,57749,57750,57751,
@@ -10448,98 +10443,98 @@ static const unsigned int ChildLocs[185261] =
57889,57893,57897,19617,57900,949, 345, 57758,965, 317, 57759,2261, 12417,57761,317, 574, 317, 342, 57762,57763,490, 1109, 9530, 317, 5996, 351, 57760,
2222, 9981, 49843,437, 19455,317, 317, 57765,490, 388, 57766,511, 9938, 57768,2117, 57769,345, 57770,57771,57772,57774,57775,11959,2077, 57776,57779,57781,
554, 12237,5419, 57782,57783,4041, 57784,57786,7592, 45987,365, 965, 370, 448, 57777,57778,381, 10559,7618, 11709,57780,6598, 578, 370, 3742, 673, 57785,
- 5677, 1603, 57787,535, 57789,2541, 57788,57790,57791,1481, 57793,57794,317, 12598,57795,317, 339, 57801,57806,57809,57810,17098,57814,57817,57822,57823,5163,
+ 5677, 1603, 57787,535, 57789,2541, 57788,57790,57791,1481, 57793,57794,317, 12598,57795,317, 339, 57801,57806,57809,57810,17098,57814,57817,57822,57823,5163,
317, 14805,370, 3167, 1481, 5439, 57796,57799,651, 57797,740, 57798,57800,57802,57804,57803,57805,57807,57808,13109,317, 317, 317, 57811,490, 3284, 57812,
- 57813,363, 26204,490, 57815,57816,363, 490, 8177, 2280, 317, 317, 57818,57819,57820,57821,57462,490, 57824,57826,1033, 57828,363, 1020, 1020, 57829,5826,
+ 57813,363, 26204,490, 57815,57816,363, 490, 8177, 2280, 317, 317, 57818,57819,57820,57821,57462,490, 57824,57826,1033, 57828,363, 1020, 1020, 57829,5826,
57830,2767, 637, 32434,16024,343, 363, 396, 57833,57851,57854,25128,317, 57856,57834,11404,57838,57846,57835,57836,317, 57837,15540,2188, 57839,57845,57840,
- 57841,57842,57843,57844,57847,57848,57849,57850,57852,57853,490, 317, 57855,384, 2317, 351, 7401, 57857,57860,57862,1347, 57858,317, 5392, 57859,317, 2110,
+ 57841,57842,57843,57844,57847,57848,57849,57850,57852,57853,490, 317, 57855,384, 2317, 351, 7401, 57857,57860,57862,1347, 57858,317, 5392, 57859,317, 2110,
2381, 57066,3361, 57861,317, 2105, 637, 1266, 317, 633, 1347, 345, 7143, 1347, 4980, 1160, 23582,57863,343, 317, 57864,8296, 23524,4965, 57867,16187,57869,
- 9938, 57873,317, 390, 57868,317, 57870,396, 317, 490, 4980, 57871,351, 57872,317, 8613, 317, 57875,1347, 57876,317, 5611, 381, 7450, 39450,6859, 384,
+ 9938, 57873,317, 390, 57868,317, 57870,396, 317, 490, 4980, 57871,351, 57872,317, 8613, 317, 57875,1347, 57876,317, 5611, 381, 7450, 39450,6859, 384,
9884, 57879,57880,57881,49464,50035,343, 317, 57882,370, 363, 57885,363, 363, 404, 57887,57888,363, 57886,8296, 36541,11607,11141,16187,57890,363, 57892,
- 317, 57891,44143,25025,57894,7214, 317, 57896,57895,57898,5611, 2110, 57899,317, 317, 57901,2219, 25128,57902,57903,345, 57904,1347, 317, 965, 2086, 1347,
+ 317, 57891,44143,25025,57894,7214, 317, 57896,57895,57898,5611, 2110, 57899,317, 317, 57901,2219, 25128,57902,57903,345, 57904,1347, 317, 965, 2086, 1347,
2086, 1347, 57905,57906,57907,57909,57913,57915,57916,57923,57930,57933,437, 57934,57944,365, 57951,57953,57955,57956,317, 390, 57910,317, 2021, 57911,57912,
- 621, 4925, 4980, 317, 57914,7852, 6855, 2110, 57917,57919,57921,57922,57918,16596,317, 317, 317, 317, 317, 362, 1526, 317, 57920,490, 883, 490, 490,
- 949, 57924,536, 57927,57925,57926,57928,57929,13338,317, 2063, 57931,22032,57932,490, 6486, 7834, 439, 4984, 345, 57935,317, 4591, 57936,57938,57941,427,
+ 621, 4925, 4980, 317, 57914,7852, 6855, 2110, 57917,57919,57921,57922,57918,16596,317, 317, 317, 317, 317, 362, 1526, 317, 57920,490, 883, 490, 490,
+ 949, 57924,536, 57927,57925,57926,57928,57929,13338,317, 2063, 57931,22032,57932,490, 6486, 7834, 439, 4984, 345, 57935,317, 4591, 57936,57938,57941,427,
57942,57937,41257,57939,57940,26642,3387, 57943,317, 57945,57949,9027, 57950,332, 17856,57946,57947,57948,57952,317, 57954,7622, 34545,490, 385, 57957,57958,
- 57960,57961,5279, 57962,57969,57976,2609, 57997,57998,58003,58005,343, 7473, 58014,58023,58027,58039,58041,58043,343, 3529, 11158,490, 317, 317, 5652, 343,
+ 57960,57961,5279, 57962,57969,57976,2609, 57997,57998,58003,58005,343, 7473, 58014,58023,58027,58039,58041,58043,343, 3529, 11158,490, 317, 317, 5652, 343,
373, 317, 2391, 57963,57964,8322, 511, 57966,57965,57967,57968,57970,57972,57973,317, 57974,57971,371, 23178,57975,384, 42843,428, 57977,57982,543, 11533,
- 1230, 57983,9909, 46462,57984,57985,9420, 2571, 13478,57987,57988,57991,57992,57996,317, 2272, 32840,57978,57979,57980,57981,1522, 2272, 533, 317, 57986,1044,
+ 1230, 57983,9909, 46462,57984,57985,9420, 2571, 13478,57987,57988,57991,57992,57996,317, 2272, 32840,57978,57979,57980,57981,1522, 2272, 533, 317, 57986,1044,
18941,2117, 57989,466, 4591, 57990,2206, 3869, 343, 2060, 363, 57993,57994,320, 1292, 57995,370, 2634, 351, 317, 511, 20382,7942, 46350,5055, 57999,58001,
40790,58000,384, 317, 58002,58004,5223, 370, 19664,58006,58007,58008,2063, 58009,7073, 343, 58012,589, 58010,58011,58013,58015,58016,58022,7952, 58017,58018,
58019,58020,58021,31380,16917,550, 2171, 36199,58024,3646, 58025,7196, 6312, 605, 58026,355, 2117, 12849,58028,58034,332, 58038,58029,58030,58032,58031,58033,
- 343, 58035,58036,58037,52622,14669,58040,30214,6354, 58042,58044,317, 58045,590, 4591, 5688, 6394, 317, 58047,58048,370, 58049,58050,7384, 58054,53211,381,
+ 343, 58035,58036,58037,52622,14669,58040,30214,6354, 58042,58044,317, 58045,590, 4591, 5688, 6394, 317, 58047,58048,370, 58049,58050,7384, 58054,53211,381,
58061,47644,999, 605, 12422,4938, 2533, 501, 58051,58052,58053,4937, 58055,58060,317, 4938, 58056,317, 317, 58057,317, 633, 317, 58058,317, 317, 58059,
58062,58063,2261, 58064,44525,5644, 58066,58069,58070,58071,350, 58101,58111,58116,58117,58121,58140,58141,58142,58155,356, 5459, 490, 58067,965, 490, 58068,
- 490, 11146,490, 317, 605, 2590, 317, 7852, 553, 317, 490, 58072,58076,58093,4925, 58073,381, 1481, 317, 58074,20848,15772,58075,5825, 936, 2060, 3502,
+ 490, 11146,490, 317, 605, 2590, 317, 7852, 553, 317, 490, 58072,58076,58093,4925, 58073,381, 1481, 317, 58074,20848,15772,58075,5825, 936, 2060, 3502,
16603,58077,10422,380, 58080,370, 343, 58081,58082,58088,23859,1060, 2997, 58092,58078,58079,351, 476, 605, 58083,58084,58085,58086,58087,58089,12154,58091,
- 380, 1194, 58090,2301, 2261, 58094,58099,58100,363, 373, 5226, 4249, 58095,317, 58096,5447, 58097,2510, 317, 382, 58098,2156, 58102,58103,58106,345, 427,
- 5241, 317, 58104,317, 11388,58105,58107,58108,58109,58110,339, 28631,5689, 1913, 58112,58113,58115,1108, 427, 5464, 58114,382, 37381,6355, 490, 439, 4738,
+ 380, 1194, 58090,2301, 2261, 58094,58099,58100,363, 373, 5226, 4249, 58095,317, 58096,5447, 58097,2510, 317, 382, 58098,2156, 58102,58103,58106,345, 427,
+ 5241, 317, 58104,317, 11388,58105,58107,58108,58109,58110,339, 28631,5689, 1913, 58112,58113,58115,1108, 427, 5464, 58114,382, 37381,6355, 490, 439, 4738,
19978,501, 490, 343, 58118,2322, 58120,58119,58122,5855, 58124,58125,58136,317, 550, 5223, 58123,7949, 50574,7192, 439, 2219, 5399, 58126,58133,58127,58128,
58129,317, 58130,58131,5201, 317, 58132,410, 5447, 58134,382, 58135,5477, 10120,58137,58138,58139,356, 5221, 2510, 22791,31987,7852, 2310, 58143,58144,58145,
58151,317, 345, 343, 3031, 317, 404, 8390, 20674,58146,382, 57429,8456, 30399,22930,58147,58150,58148,58149,5225, 1325, 317, 58132,5365, 8136, 466, 58152,
58153,58154,58156,58157,58158,317, 6266, 2272, 316, 58160,58162,58161,58163,5663, 58164,58167,58180,58185,58195,58216,58230,58231,58244,58245,365, 58269,58272,
- 58279,58284,58303,58318,58324,58326,58330,58335,58366,58367,58369,58371,58373,58165,58166,58168,50480,2081, 6089, 58169,1109, 58170,317, 58175,15355,58179,2272,
- 9699, 343, 490, 370, 1428, 5032, 58171,58174,343, 2317, 596, 58172,58173,637, 8248, 6996, 317, 1011, 317, 673, 1025, 1353, 7911, 501, 370, 1160, 5037,
- 317, 9930, 5054, 58176,58177,58178,317, 317, 433, 1347, 58181,58182,58183,317, 10407,1992, 4980, 58184,9325, 10422,466, 317, 1347, 317, 58186,317, 317,
- 7511, 6354, 58187,58193,16535,58188,58189,351, 58190,58191,317, 317, 317, 58192,1325, 5113, 351, 58194,58196,58197,58201,362, 58206,58207,343, 21554,1230,
- 58211,380, 5362, 317, 317, 24111,4564, 58198,58199,356, 58200,5201, 317, 58202,1230, 58203,317, 1347, 5709, 58204,21541,58205,317, 574, 345, 370, 345,
+ 58279,58284,58303,58318,58324,58326,58330,58335,58366,58367,58369,58371,58373,58165,58166,58168,50480,2081, 6089, 58169,1109, 58170,317, 58175,15355,58179,2272,
+ 9699, 343, 490, 370, 1428, 5032, 58171,58174,343, 2317, 596, 58172,58173,637, 8248, 6996, 317, 1011, 317, 673, 1025, 1353, 7911, 501, 370, 1160, 5037,
+ 317, 9930, 5054, 58176,58177,58178,317, 317, 433, 1347, 58181,58182,58183,317, 10407,1992, 4980, 58184,9325, 10422,466, 317, 1347, 317, 58186,317, 317,
+ 7511, 6354, 58187,58193,16535,58188,58189,351, 58190,58191,317, 317, 317, 58192,1325, 5113, 351, 58194,58196,58197,58201,362, 58206,58207,343, 21554,1230,
+ 58211,380, 5362, 317, 317, 24111,4564, 58198,58199,356, 58200,5201, 317, 58202,1230, 58203,317, 1347, 5709, 58204,21541,58205,317, 574, 345, 370, 345,
523, 351, 58208,2279, 317, 58209,2272, 351, 58210,58212,58213,58214,58215,317, 4965, 58217,490, 317, 2541, 58218,971, 58219,58221,58222,58223,317, 58226,
- 58228,58229,1459, 11308,317, 6674, 332, 6920, 380, 9781, 58220,380, 2380, 58224,58225,7911, 58227,332, 9012, 1020, 351, 6632, 14991,2156, 439, 332, 317,
+ 58228,58229,1459, 11308,317, 6674, 332, 6920, 380, 9781, 58220,380, 2380, 58224,58225,7911, 58227,332, 9012, 1020, 351, 6632, 14991,2156, 439, 332, 317,
551, 58232,13338,58243,27874,33890,317, 363, 58233,7241, 58234,58235,58239,317, 427, 6172, 58236,58237,21690,5394, 466, 1347, 2012, 58238,5394, 466, 58240,
58241,58242,363, 28141,6847, 343, 58246,58247,58254,58255,58259,58260,58262,58263,58266,46120,317, 490, 58267,37431,58248,58249,58250,58253,466, 373, 58251,
- 5053, 1347, 58252,5709, 14409,3429, 12696,58256,58257,58258,317, 317, 40848,22122,370, 58261,345, 5428, 58264,58265,2288, 6228, 317, 317, 317, 345, 317,
+ 5053, 1347, 58252,5709, 14409,3429, 12696,58256,58257,58258,317, 317, 40848,22122,370, 58261,345, 5428, 58264,58265,2288, 6228, 317, 317, 317, 345, 317,
2589, 363, 490, 7657, 58268,6993, 58270,2022, 2163, 317, 58271,58273,6704, 58276,58278,317, 58274,58275,58277,13638,45719,1383, 11844,5891, 45719,58280,58281,
- 14377,58282,58283,317, 32011,14146,39260,58285,58291,58293,58295,58298,54368,58286,5808, 58287,58288,58289,58290,356, 317, 1347, 5226, 58292,396, 2181, 332,
- 58294,1345, 574, 5392, 348, 345, 58296,58297,2272, 9347, 58299,2310, 58300,58301,58302,58304,7356, 58305,9422, 58308,58310,58312,58313,553, 58314,58316,5037,
+ 14377,58282,58283,317, 32011,14146,39260,58285,58291,58293,58295,58298,54368,58286,5808, 58287,58288,58289,58290,356, 317, 1347, 5226, 58292,396, 2181, 332,
+ 58294,1345, 574, 5392, 348, 345, 58296,58297,2272, 9347, 58299,2310, 58300,58301,58302,58304,7356, 58305,9422, 58308,58310,58312,58313,553, 58314,58316,5037,
58317,58306,2035, 58307,38209,58309,58311,317, 317, 317, 317, 596, 332, 58315,317, 363, 58319,58323,58320,58322,339, 58321,9067, 356, 317, 58325,58327,
58328,58329,384, 490, 8095, 332, 380, 317, 370, 16915,990, 380, 317, 4980, 371, 58331,58332,351, 490, 13262,4984, 58333,58334,20231,36969,58336,58337,
490, 58340,58355,55086,11195,350, 58356,58358,58363,5570, 56872,317, 490, 8301, 317, 58338,58339,23696,9246, 1108, 58341,58342,58344,18639,58347,58348,58352,
58343,57079,1345, 58345,37246,58346,21700,4591, 58349,58351,1428, 7514, 58350,58353,58354,317, 348, 317, 317, 58357,317, 58359,54496,58360,58361,58362,58364,
58365,380, 5038, 58368,2322, 373, 317, 317, 428, 58370,380, 317, 58372,317, 4593, 6486, 58374,58375,5105, 320, 58376,58379,58381,58396,58397,58399,58401,
- 58405,58408,58410,58412,58419,58421,58423,58425,58426,58431,58484,30069,58485,2026, 490, 343, 373, 7954, 58377,317, 2537, 10836,490, 25525,58378,58380,3854,
+ 58405,58408,58410,58412,58419,58421,58423,58425,58426,58431,58484,30069,58485,2026, 490, 343, 373, 7954, 58377,317, 2537, 10836,490, 25525,58378,58380,3854,
20574,14341,317, 371, 11235,317, 58382,9730, 58384,58388,317, 317, 58383,6228, 317, 2077, 317, 4980, 58385,9938, 58386,58387,58389,58390,58391,58393,58392,
1347, 5113, 22021,58394,58395,57460,317, 317, 58398,8655, 317, 7618, 13638,13638,58400,58402,58403,58404,10056,362, 317, 363, 57251,490, 12399,490, 13003,
332, 490, 345, 371, 58406,971, 490, 5836, 34510,58407,971, 332, 3284, 373, 317, 317, 58409,3079, 57713,1430, 7389, 12142,363, 58411,439, 58413,58415,
- 741, 58416,58417,58414,354, 1109, 3284, 19979,2012, 1325, 2163, 401, 58418,317, 58420,343, 5295, 18084,58422,49264,16508,5611, 404, 15445,58424,1530, 490,
+ 741, 58416,58417,58414,354, 1109, 3284, 19979,2012, 1325, 2163, 401, 58418,317, 58420,343, 5295, 18084,58422,49264,16508,5611, 404, 15445,58424,1530, 490,
433, 317, 58427,58429,362, 58430,8205, 10538,23927,58428,363, 6394, 317, 12463,511, 558, 490, 370, 5836, 58432,56734,58433,4982, 58463,58464,58466,58467,
58468,558, 58483,490, 19913,363, 58434,58440,58451,5896, 58435,58437,58438,58436,9482, 363, 58439,58441,58445,28327,58447,58450,58442,58443,58444,58446,58448,
- 58449,39541,9815, 28588,10317,6598, 58452,58453,58456,58457,58458,58462,3236, 551, 6562, 501, 385, 58454,381, 58455,439, 390, 439, 58459,58460,58461,8125,
- 439, 7592, 3529, 317, 901, 58465,351, 16651,439, 490, 40823,6551, 58469,427, 1076, 58473,427, 343, 58482,58470,566, 490, 58471,58472,1526, 58474,490,
- 396, 58477,58480,317, 381, 11844,13003,58481,58475,58476,58478,58479,7892, 3284, 39984,43283,578, 16830,7939, 57256,365, 1109, 58486,58488,58489,58487,332,
- 6525, 29040,317, 58491,58496,58498,58506,2022, 58507,58513,58515,58516,58533,58534,332, 58492,58493,58494,5943, 317, 58495,317, 490, 58497,332, 317, 317,
+ 58449,39541,9815, 28588,10317,6598, 58452,58453,58456,58457,58458,58462,3236, 551, 6562, 501, 385, 58454,381, 58455,439, 390, 439, 58459,58460,58461,8125,
+ 439, 7592, 3529, 317, 901, 58465,351, 16651,439, 490, 40823,6551, 58469,427, 1076, 58473,427, 343, 58482,58470,566, 490, 58471,58472,1526, 58474,490,
+ 396, 58477,58480,317, 381, 11844,13003,58481,58475,58476,58478,58479,7892, 3284, 39984,43283,578, 16830,7939, 57256,365, 1109, 58486,58488,58489,58487,332,
+ 6525, 29040,317, 58491,58496,58498,58506,2022, 58507,58513,58515,58516,58533,58534,332, 58492,58493,58494,5943, 317, 58495,317, 490, 58497,332, 317, 317,
490, 332, 380, 317, 58499,362, 58505,58500,58501,317, 2571, 12417,58502,393, 58503,58504,5241, 2219, 317, 2163, 317, 332, 58508,11295,11533,58509,58510,
- 58511,58512,58514,4318, 317, 2809, 362, 9174, 58517,58521,58524,2022, 362, 58528,2326, 317, 58532,58518,58520,13856,58519,6600, 58522,58523,6046, 317, 317,
+ 58511,58512,58514,4318, 317, 2809, 362, 9174, 58517,58521,58524,2022, 362, 58528,2326, 317, 58532,58518,58520,13856,58519,6600, 58522,58523,6046, 317, 317,
56872,3504, 4980, 317, 58525,58527,317, 58526,8205, 565, 58529,24067,5300, 58530,58531,5955, 18978,317, 2652, 58535,58538,1588, 14995,58544,58547,58554,58557,
- 2004, 58558,565, 58560,58561,58566,58568,58657,58658,58659,58536,58537,317, 7156, 2060, 633, 317, 339, 45162,58539,57111,58540,58541,58542,58543,58545,317,
- 350, 12478,58546,58548,58550,317, 381, 58549,2610, 58551,58552,58553,58555,58556,317, 40690,363, 490, 490, 490, 15596,32837,14792,356, 317, 58559,3941,
+ 2004, 58558,565, 58560,58561,58566,58568,58657,58658,58659,58536,58537,317, 7156, 2060, 633, 317, 339, 45162,58539,57111,58540,58541,58542,58543,58545,317,
+ 350, 12478,58546,58548,58550,317, 381, 58549,2610, 58551,58552,58553,58555,58556,317, 40690,363, 490, 490, 490, 15596,32837,14792,356, 317, 58559,3941,
404, 317, 2156, 373, 370, 58562,58563,317, 58564,390, 317, 58565,350, 317, 14571,317, 2022, 9298, 58567,8926, 20146,434, 58569,58570,58572,58578,58584,
- 58588,58590,58596,58601,10877,21301,58602,58609,58613,58616,58625,58632,58650,53405,58652,501, 2156, 58571,384, 356, 58573,58574,58575,551, 439, 58576,6514,
+ 58588,58590,58596,58601,10877,21301,58602,58609,58613,58616,58625,58632,58650,53405,58652,501, 2156, 58571,384, 356, 58573,58574,58575,551, 439, 58576,6514,
58577,58579,58580,6166, 58581,381, 4268, 58582,317, 58583,2601, 356, 58585,343, 58586,58587,317, 317, 58589,11442,9590, 12429,428, 58591,58593,58595,52893,
- 58592,58594,6697, 26135,511, 58597,58600,605, 58598,1060, 58599,350, 7505, 58603,58607,58608,7449, 511, 58604,6724, 58606,1347, 58605,317, 356, 466, 317,
+ 58592,58594,6697, 26135,511, 58597,58600,605, 58598,1060, 58599,350, 7505, 58603,58607,58608,7449, 511, 58604,6724, 58606,1347, 58605,317, 356, 466, 317,
317, 2510, 5717, 5492, 58610,5337, 58611,31123,58612,58614,58615,58617,58618,58623,58624,4268, 1526, 20989,58619,58620,58621,58622,54242,8519, 4268, 3884, 58626,
58629,58630,317, 363, 58627,317, 24400,58628,317, 7834, 317, 2108, 8254, 350, 58631,2509, 6724, 58633,58635,58636,14688,58639,58640,58643,58644,58634,58637,
58638,356, 58641,58642,2369, 2102, 58645,58647,58646,5226, 58648,58649,58651,363, 58653,58654,26257,58656,42216,390, 350, 58655,58660,58661,54681,201, 58781,
58789,343, 58795,58796,6923, 58662,5238, 58663,317, 58664,317, 5634, 317, 2271, 317, 12044,317, 317, 317, 5054, 47476,15596,1347, 202, 6046, 58665,58668,
58672,58685,58691,58697,58699,58703,58711,58713,58714,58715,58720,22559,16129,58722,58729,58732,58739,58759,24528,58769,58770,317, 58780,58666,343, 4564, 57365,
12863,58667,3031, 58669,58670,574, 5840, 58671,56793,47678,317, 3884, 371, 7785, 317, 551, 1525, 4943, 58673,58674,58676,58682,343, 38692,58675,381, 58677,
- 58681,1525, 1347, 466, 58678,58679,58680,58683,58684,58182,58686,58687,58689,466, 343, 396, 5717, 58688,22912,35591,58690,317, 427, 58692,58694,58693,2600,
+ 58681,1525, 1347, 466, 58678,58679,58680,58683,58684,58182,58686,58687,58689,466, 343, 396, 5717, 58688,22912,35591,58690,317, 427, 58692,58694,58693,2600,
58695,58696,14449,26684,3505, 58698,32672,578, 12864,550, 58700,58701,58702,439, 34975,58704,58706,428, 58708,24048,58705,22809,58707,1347, 36641,5363, 58709,
350, 58710,58712,10580,428, 58716,6021, 2156, 58717,2184, 10283,356, 37497,11613,10238,371, 382, 58718,58719,58721,2405, 1588, 350, 58723,384, 58724,58725,
356, 5335, 511, 25337,20766,58726,58727,58728,1526, 12360,48488,29321,58730,58731,58733,58734,58735,2261, 58737,58736,501, 1347, 466, 5441, 58738,605, 58740,
58743,58746,58747,363, 8023, 58749,58753,1347, 58741,58742,1526, 58744,2568, 58745,471, 5492, 58748,58750,28262,58751,5441, 5487, 58752,427, 381, 345, 31123,
58754,58755,58756,58757,58758,58760,58761,58765,370, 58766,58767,2193, 58762,605, 58763,9609, 58764,343, 1526, 5634, 371, 58768,1347, 317, 5363, 58771,58772,
58775,58777,58779,58773,58774,58776,58778,5487, 356, 33572,6312, 2117, 58782,5238, 5538, 58783,58788,590, 1009, 7831, 58784,58785,58786,58787,356, 58790,58791,
- 58792,58793,58794,58797,317, 7340, 345, 58799,58803,58805,58808,10877,1347, 58813,58816,58817,7797, 58818,19446,58800,58801,58802,363, 365, 58804,7606, 490,
- 317, 58806,58807,317, 332, 58809,58812,317, 681, 370, 58810,58811,58814,5661, 58815,466, 5943, 37875,317, 21413,317, 317, 317, 29083,317, 2022, 404,
- 7582, 58820,58825,5159, 58828,58833,58837,2022, 362, 58847,58848,58853,345, 58854,58821,574, 22685,58822,58823,58824,58826,9914, 58827,317, 6674, 2402, 501,
+ 58792,58793,58794,58797,317, 7340, 345, 58799,58803,58805,58808,10877,1347, 58813,58816,58817,7797, 58818,19446,58800,58801,58802,363, 365, 58804,7606, 490,
+ 317, 58806,58807,317, 332, 58809,58812,317, 681, 370, 58810,58811,58814,5661, 58815,466, 5943, 37875,317, 21413,317, 317, 317, 29083,317, 2022, 404,
+ 7582, 58820,58825,5159, 58828,58833,58837,2022, 362, 58847,58848,58853,345, 58854,58821,574, 22685,58822,58823,58824,58826,9914, 58827,317, 6674, 2402, 501,
58829,2271, 22114,58830,58831,58832,427, 58834,58835,58836,362, 5154, 58838,58839,1347, 58840,58841,4268, 343, 5220, 1526, 21186,58842,58843,58844,58845,58846,
16920,351, 58849,317, 58850,58851,58852,58855,58856,58859,57966,58860,58857,58858,58862,58863,350, 2381, 58865,2380, 12291,15596,317, 58864,317, 317, 58866,
58867,363, 363, 58868,32461,317, 58870,58872,58873,490, 58874,58875,58879,58880,58882,2035, 10538,58883,489, 2272, 365, 317, 343, 58871,490, 365, 13376,
2272, 317, 4965, 971, 370, 58876,58877,58878,317, 2369, 28141,317, 58881,6713, 5687, 1479, 6713, 58884,58885,363, 5652, 1087, 362, 58886,58887,58904,58908,
58912,58920,58925,204, 59863,59865,59868,210, 60537,60600,214, 215, 61368,61380,216, 61621,61632,218, 62351,62360,220, 63146,63252,224, 63546,63550,63554,
- 63558,63607,58888,58890,58898,58889,2058, 58891,58892,58893,58894,58895,58896,58897,58899,58900,58901,58902,58903,11091,58905,58906,58907,58909,58910,58911,621,
+ 63558,63607,58888,58890,58898,58889,2058, 58891,58892,58893,58894,58895,58896,58897,58899,58900,58901,58902,58903,11091,58905,58906,58907,58909,58910,58911,621,
58913,58915,58918,58919,58914,58916,58917,58921,58922,317, 58910,58923,58924,58926,58927,58928,58929,1020, 58930,58932,58935,58940,58945,58975,59006,59012,59014,
- 59033,59036,59054,59058,205, 59182,206, 59314,59320,59373,207, 208, 209, 59770,59791,59813,59826,59827,59858,58931,58933,58934,551, 317, 551, 11617,6600,
+ 59033,59036,59054,59058,205, 59182,206, 59314,59320,59373,207, 208, 209, 59770,59791,59813,59826,59827,59858,58931,58933,58934,551, 317, 551, 11617,6600,
317, 317, 58936,58937,58939,58938,343, 58941,58942,58944,490, 363, 381, 58943,390, 5823, 8446, 58946,58947,58948,58949,58956,58961,58968,362, 15618,58972,
317, 1347, 33948,16310,317, 490, 338, 317, 49332,7035, 317, 317, 17454,20702,489, 1347, 317, 2715, 8275, 317, 58950,58951,15108,9909, 58953,350, 16290,
58955,332, 58952,317, 332, 317, 58954,58957,2537, 33895,58960,317, 12949,345, 58958,2184, 58959,5991, 5250, 317, 10114,317, 317, 345, 2381, 8455, 58962,
@@ -10549,158 +10544,158 @@ static const unsigned int ChildLocs[185261] =
58993,58995,58996,58997,317, 317, 58999,59001,1347, 5570, 4984, 59002,5328, 59005,53743,490, 363, 317, 59007,317, 2381, 5431, 317, 59010,317, 59008,59009,
317, 59011,380, 59013,9554, 551, 9289, 59015,59018,59022,466, 59026,59029,59030,59031,9186, 59016,317, 490, 6486, 59017,317, 317, 332, 365, 427, 59019,
59020,59021,59023,30878,1347, 14833,59025,317, 5223, 1060, 59024,317, 370, 59027,59028,25767,7916, 2280, 7386, 46462,15169,18664,317, 8594, 6409, 2001, 59032,
- 317, 49440,59034,317, 59035,5213, 553, 351, 317, 8100, 382, 5120, 317, 19829,351, 317, 343, 2222, 59037,317, 59038,59040,59052,59053,4925, 574, 490,
+ 317, 49440,59034,317, 59035,5213, 553, 351, 317, 8100, 382, 5120, 317, 19829,351, 317, 343, 2222, 59037,317, 59038,59040,59052,59053,4925, 574, 490,
317, 357, 317, 1160, 2067, 605, 363, 381, 59039,29069,2369, 5223, 2060, 1325, 10891,59041,2571, 317, 59044,59047,59042,59043,59045,59046,317, 59048,59051,
10877,363, 317, 12423,59049,2732, 59050,317, 1325, 10877,317, 8722, 317, 2022, 343, 59055,59056,348, 317, 6409, 332, 19978,59057,59059,59060,59061,59065,
12756,1459, 5241, 18978,362, 490, 343, 7678, 317, 59062,14837,59063,59064,59066,59067,59068,59069,59070,59105,59107,59120,59123,59124,59126,7143, 59135,59150,
- 59164,59170,59175,59176,59180,345, 59071,59074,59077,3599, 365, 59087,59088,59093,59094,59095,2074, 59097,59098,9473, 362, 317, 59103,59072,59073,2163, 317,
- 320, 317, 59075,59076,59078,59079,47011,59080,59084,59085,18908,59081,59082,59083,19201,18299,59086,317, 59089,317, 59090,59091,59092,8099, 355, 17748,5570,
- 363, 5793, 343, 317, 490, 2396, 59096,490, 371, 348, 317, 59099,317, 59101,490, 373, 59100,380, 59102,2381, 59104,317, 31606,20178,59106,59108,971,
- 317, 12233,59109,59110,59115,59116,49445,16628,317, 343, 343, 8718, 5241, 371, 965, 58259,55907,15540,59111,59112,19200,59113,18908,2272, 59081,59114,5570,
+ 59164,59170,59175,59176,59180,345, 59071,59074,59077,3599, 365, 59087,59088,59093,59094,59095,2074, 59097,59098,9473, 362, 317, 59103,59072,59073,2163, 317,
+ 320, 317, 59075,59076,59078,59079,47011,59080,59084,59085,18908,59081,59082,59083,19201,18299,59086,317, 59089,317, 59090,59091,59092,8099, 355, 17748,5570,
+ 363, 5793, 343, 317, 490, 2396, 59096,490, 371, 348, 317, 59099,317, 59101,490, 373, 59100,380, 59102,2381, 59104,317, 31606,20178,59106,59108,971,
+ 317, 12233,59109,59110,59115,59116,49445,16628,317, 343, 343, 8718, 5241, 371, 965, 58259,55907,15540,59111,59112,19200,59113,18908,2272, 59081,59114,5570,
317, 59117,59118,6519, 59119,370, 59121,59122,30315,10519,59125,1481, 2381, 59127,59129,20276,59133,15095,59128,59130,317, 348, 317, 3284, 59131,59132,59134,
- 332, 14616,317, 59136,59142,59145,59147,543, 59149,317, 59137,59139,2146, 59141,29424,317, 11591,7399, 59138,59140,363, 357, 317, 1700, 345, 2108, 1358,
- 59143,59144,9422, 59146,8488, 317, 2078, 363, 4788, 59148,5611, 350, 427, 59151,5896, 6195, 59153,59156,59161,6601, 5956, 317, 15334,7385, 59162,390, 1078,
+ 332, 14616,317, 59136,59142,59145,59147,543, 59149,317, 59137,59139,2146, 59141,29424,317, 11591,7399, 59138,59140,363, 357, 317, 1700, 345, 2108, 1358,
+ 59143,59144,9422, 59146,8488, 317, 2078, 363, 4788, 59148,5611, 350, 427, 59151,5896, 6195, 59153,59156,59161,6601, 5956, 317, 15334,7385, 59162,390, 1078,
317, 59152,317, 17535,59154,1358, 59155,317, 18454,317, 5862, 37456,16570,332, 59157,490, 59158,59159,5570, 8419, 59160,3031, 343, 351, 59163,59165,59166,
343, 748, 317, 59169,2391, 19872,59167,59168,6920, 317, 365, 49994,59171,59173,317, 373, 59172,59174,7072, 317, 317, 59177,59179,317, 59178,8828, 10592,
317, 3375, 59181,5890, 317, 3522, 14561,6817, 59183,59185,59187,6179, 370, 59189,59194,59184,59186,317, 1160, 490, 490, 490, 59188,317, 51202,59190,59191,
- 59193,11147,17939,59192,363, 2035, 317, 490, 2242, 59195,59218,59231,59242,59249,59251,59261,59265,59272,59273,59277,59278,59282,3987, 59286,59287,17998,2134,
- 59303,59304,59196,59197,23403,24455,59204,59209,59210,59213,17357,317, 46856,59198,59202,317, 59199,317, 59200,345, 59201,317, 59203,59205,59206,317, 5624,
- 317, 332, 59207,59208,365, 59211,59212,59214,317, 59215,59216,59217,59219,1189, 59220,7514, 16603,59227,6419, 332, 20848,59221,59225,59226,17462,317, 1109,
- 365, 490, 59222,59223,59224,8522, 59228,59229,317, 59230,59232,59233,59235,59236,59237,59240,59241,6228, 12429,6387, 317, 6409, 317, 59234,2184, 317, 339,
+ 59193,11147,17939,59192,363, 2035, 317, 490, 2242, 59195,59218,59231,59242,59249,59251,59261,59265,59272,59273,59277,59278,59282,3987, 59286,59287,17998,2134,
+ 59303,59304,59196,59197,23403,24455,59204,59209,59210,59213,17357,317, 46856,59198,59202,317, 59199,317, 59200,345, 59201,317, 59203,59205,59206,317, 5624,
+ 317, 332, 59207,59208,365, 59211,59212,59214,317, 59215,59216,59217,59219,1189, 59220,7514, 16603,59227,6419, 332, 20848,59221,59225,59226,17462,317, 1109,
+ 365, 490, 59222,59223,59224,8522, 59228,59229,317, 59230,59232,59233,59235,59236,59237,59240,59241,6228, 12429,6387, 317, 6409, 317, 59234,2184, 317, 339,
33717,10058,16970,2012, 59238,59239,17990,45460,317, 59243,317, 59244,10995,965, 7779, 7301, 59247,317, 356, 9385, 59245,317, 317, 356, 59246,59248,59250,
- 59252,58331,59255,59257,59258,59259,59260,317, 490, 2142, 59253,59254,317, 59256,317, 59262,59263,20516,356, 356, 59264,59266,59267,59269,317, 490, 365,
- 59271,2631, 317, 1108, 317, 5241, 317, 32242,2156, 317, 317, 59268,59270,59274,1345, 13023,59275,59276,7174, 317, 317, 59279,16187,466, 59281,23695,317,
+ 59252,58331,59255,59257,59258,59259,59260,317, 490, 2142, 59253,59254,317, 59256,317, 59262,59263,20516,356, 356, 59264,59266,59267,59269,317, 490, 365,
+ 59271,2631, 317, 1108, 317, 5241, 317, 32242,2156, 317, 317, 59268,59270,59274,1345, 13023,59275,59276,7174, 317, 317, 59279,16187,466, 59281,23695,317,
16092,317, 380, 59280,1459, 5295, 490, 343, 59283,59284,317, 8275, 24111,59285,2211, 5033, 317, 59288,59291,59293,59296,343, 59297,370, 6420, 5325, 59301,
- 596, 317, 59289,21314,317, 6382, 59290,26249,59292,59294,5343, 5055, 59295,15193,1992, 59298,9667, 8419, 59300,6278, 490, 59299,59302,362, 59305,59307,2280,
- 59306,5687, 5570, 2381, 59308,317, 59309,317, 59310,59311,59312,59313,317, 59315,59318,317, 59316,59317,1160, 7385, 2142, 7953, 8766, 5439, 317, 59319,332,
+ 596, 317, 59289,21314,317, 6382, 59290,26249,59292,59294,5343, 5055, 59295,15193,1992, 59298,9667, 8419, 59300,6278, 490, 59299,59302,362, 59305,59307,2280,
+ 59306,5687, 5570, 2381, 59308,317, 59309,317, 59310,59311,59312,59313,317, 59315,59318,317, 59316,59317,1160, 7385, 2142, 7953, 8766, 5439, 317, 59319,332,
59321,8828, 59344,2086, 59352,5793, 2402, 59366,59367,59370,28434,59371,5809, 59372,1753, 12429,370, 59322,59323,59325,59329,59331,8926, 59332,59338,59341,11357,
5624, 26250,7184, 59324,365, 332, 2212, 59326,59327,59328,59330,2110, 357, 490, 332, 59333,59334,59336,51054,365, 59335,317, 59337,8594, 59339,59340,11186,
- 59342,59343,574, 6854, 59345,59346,2715, 6228, 59347,59349,15293,5570, 2571, 35294,317, 317, 59351,317, 5961, 59348,59350,381, 2301, 406, 59353,59355,1358,
- 59357,24059,4591, 59365,59354,59356,59358,59360,59359,59361,404, 59362,59363,317, 59364,20178,343, 59368,59369,2406, 317, 1347, 1160, 29108,25961,317, 317,
+ 59342,59343,574, 6854, 59345,59346,2715, 6228, 59347,59349,15293,5570, 2571, 35294,317, 317, 59351,317, 5961, 59348,59350,381, 2301, 406, 59353,59355,1358,
+ 59357,24059,4591, 59365,59354,59356,59358,59360,59359,59361,404, 59362,59363,317, 59364,20178,343, 59368,59369,2406, 317, 1347, 1160, 29108,25961,317, 317,
19989,1481, 11146,4984, 5619, 59374,13190,59375,59376,59463,59464,59469,59474,59483,59485,15837,59488,59497,59506,59518,59524,59530,6600, 59540,59542,59551,59560,
489, 59591,59596,59377,59378,59384,2353, 59389,317, 59393,404, 59394,59404,59413,59428,59431,490, 59440,59452,380, 59459,59461,30882,8642, 2156, 27461,59379,
- 59381,23348,59380,59382,59383,317, 24644,59385,59387,317, 59386,382, 21067,345, 5836, 59388,317, 345, 40465,317, 345, 59390,5684, 59299,59391,59392,8049,
+ 59381,23348,59380,59382,59383,317, 24644,59385,59387,317, 59386,382, 21067,345, 5836, 59388,317, 345, 40465,317, 345, 59390,5684, 59299,59391,59392,8049,
59395,59400,59396,59397,59398,59399,59401,59402,59403,8748, 59405,59409,316, 59406,59407,356, 59408,20480,317, 59410,53334,401, 5441, 59411,59412,59414,59415,
- 59423,59426,6834, 345, 25898,30085,59416,59418,59417,59419,59421,59420,7986, 317, 59422,59424,59425,317, 343, 59427,59429,317, 59430,490, 6928, 965, 3772,
- 7322, 490, 363, 4268, 59432,59437,59438,59433,59435,59436,59434,59439,59441,59442,59443,19828,380, 59447,4925, 11446,59444,1347, 59445,59446,317, 427, 5492,
- 6355, 10253,59448,59449,59450,59451,59453,1588, 59455,4045, 59454,59456,59457,59458,59460,1108, 351, 332, 59462,381, 5173, 5105, 317, 59465,59467,317, 2328,
+ 59423,59426,6834, 345, 25898,30085,59416,59418,59417,59419,59421,59420,7986, 317, 59422,59424,59425,317, 343, 59427,59429,317, 59430,490, 6928, 965, 3772,
+ 7322, 490, 363, 4268, 59432,59437,59438,59433,59435,59436,59434,59439,59441,59442,59443,19828,380, 59447,4925, 11446,59444,1347, 59445,59446,317, 427, 5492,
+ 6355, 10253,59448,59449,59450,59451,59453,1588, 59455,4045, 59454,59456,59457,59458,59460,1108, 351, 332, 59462,381, 5173, 5105, 317, 59465,59467,317, 2328,
59466,59468,427, 13368,20909,59470,59471,350, 59472,59473,317, 2541, 317, 363, 317, 317, 49994,317, 6409, 390, 596, 59475,4925, 15095,317, 59476,59478,
59477,59479,59480,59481,55791,317, 590, 433, 59482,2063, 2036, 59484,1881, 381, 59486,362, 59487,9083, 348, 59489,59490,565, 390, 6937, 348, 14991,59491,
1345, 565, 59495,574, 433, 6228, 740, 20741,59492,59494,317, 4873, 356, 345, 59493,5055, 17711,317, 59496,317, 13171,6195, 59498,2413, 59501,59502,31023,
- 362, 59504,12417,351, 35352,59505,317, 59499,317, 317, 637, 6996, 59500,355, 428, 392, 11918,39796,59503,1531, 2063, 59507,59509,59510,59517,3854, 514,
- 332, 59508,5487, 317, 3854, 317, 5223, 317, 317, 59511,351, 362, 317, 59512,59513,59514,59515,59516,317, 36102,1347, 2510, 317, 59519,59521,2022, 317,
+ 362, 59504,12417,351, 35352,59505,317, 59499,317, 317, 637, 6996, 59500,355, 428, 392, 11918,39796,59503,1531, 2063, 59507,59509,59510,59517,3854, 514,
+ 332, 59508,5487, 317, 3854, 317, 5223, 317, 317, 59511,351, 362, 317, 59512,59513,59514,59515,59516,317, 36102,1347, 2510, 317, 59519,59521,2022, 317,
558, 59520,317, 59522,59523,317, 362, 350, 7045, 33957,59525,59528,363, 317, 59526,59527,59529,1347, 971, 59531,59532,59534,59537,380, 317, 5087, 11289,
- 59538,317, 59533,2184, 5073, 632, 59535,5447, 7142, 317, 59536,320, 2081, 365, 59539,59541,59543,59545,59546,59549,317, 371, 490, 1078, 59544,317, 317,
+ 59538,317, 59533,2184, 5073, 632, 59535,5447, 7142, 317, 59536,320, 2081, 365, 59539,59541,59543,59545,59546,59549,317, 371, 490, 1078, 59544,317, 317,
317, 7567, 1588, 2110, 2381, 24810,381, 2110, 362, 59547,59548,2117, 4925, 5033, 2067, 317, 317, 59550,317, 343, 317, 5891, 7928, 59552,59553,59554,17919,
1597, 59556,59558,345, 317, 25407,4564, 345, 1347, 428, 8741, 433, 14883,382, 59555,317, 59557,59559,59561,390, 59562,59564,59571,59179,5662, 59583,59586,
59587,317, 1230, 59590,348, 363, 472, 317, 317, 317, 2402, 59563,12943,7625, 4045, 59565,59568,8214, 59566,59567,22742,59569,490, 59570,23534,317, 40847,
- 373, 59572,5611, 5447, 8977, 26336,59581,59582,23844,59573,317, 2156, 59578,317, 59574,59575,2156, 4268, 59576,59577,5847, 448, 59579,59580,40848,2156, 317,
- 29642,317, 59584,59585,317, 356, 466, 9139, 59588,59589,637, 317, 8301, 466, 490, 362, 363, 317, 2948, 59592,59593,59594,345, 44631,59595,317, 317,
+ 373, 59572,5611, 5447, 8977, 26336,59581,59582,23844,59573,317, 2156, 59578,317, 59574,59575,2156, 4268, 59576,59577,5847, 448, 59579,59580,40848,2156, 317,
+ 29642,317, 59584,59585,317, 356, 466, 9139, 59588,59589,637, 317, 8301, 466, 490, 362, 363, 317, 2948, 59592,59593,59594,345, 44631,59595,317, 317,
317, 5423, 6607, 59597,59598,59605,59606,59609,59610,8392, 59613,3075, 59614,59619,59672,59688,59690,59692,9699, 7473, 317, 5891, 59599,2178, 59602,59603,59604,
- 371, 59600,19620,883, 59601,5571, 20382,13392,427, 343, 380, 5032, 317, 3987, 5105, 7386, 6402, 5890, 59607,26830,490, 490, 2022, 317, 59608,317, 4717,
- 317, 2132, 5836, 363, 317, 317, 59611,50351,59612,5105, 381, 5223, 317, 59615,59616,380, 12988,59617,59618,8357, 5570, 59339,5032, 637, 59620,59621,345,
- 633, 649, 20008,59622,4952, 59633,59638,59647,59648,13258,2022, 59652,59654,59655,59656,59658,59661,317, 317, 1160, 5826, 936, 2388, 1000, 317, 317, 317,
- 373, 59623,59624,339, 59625,59626,59630,59631,1168, 317, 59627,59628,59629,59632,317, 17454,2715, 59634,2261, 59635,59636,59637,317, 2512, 59639,317, 317,
- 370, 59640,317, 14295,5483, 59641,23819,59642,59643,59644,59645,59646,36123,59649,59650,317, 41130,10471,317, 317, 317, 59651,317, 6249, 317, 59653,317,
- 1588, 317, 356, 317, 381, 350, 317, 990, 39003,59657,2024, 59659,5088, 59660,59662,59663,1160, 551, 59664,356, 551, 317, 59665,317, 59666,1160, 317,
+ 371, 59600,19620,883, 59601,5571, 20382,13392,427, 343, 380, 5032, 317, 3987, 5105, 7386, 6402, 5890, 59607,26830,490, 490, 2022, 317, 59608,317, 4717,
+ 317, 2132, 5836, 363, 317, 317, 59611,50351,59612,5105, 381, 5223, 317, 59615,59616,380, 12988,59617,59618,8357, 5570, 59339,5032, 637, 59620,59621,345,
+ 633, 649, 20008,59622,4952, 59633,59638,59647,59648,13258,2022, 59652,59654,59655,59656,59658,59661,317, 317, 1160, 5826, 936, 2388, 1000, 317, 317, 317,
+ 373, 59623,59624,339, 59625,59626,59630,59631,1168, 317, 59627,59628,59629,59632,317, 17454,2715, 59634,2261, 59635,59636,59637,317, 2512, 59639,317, 317,
+ 370, 59640,317, 14295,5483, 59641,23819,59642,59643,59644,59645,59646,36123,59649,59650,317, 41130,10471,317, 317, 317, 59651,317, 6249, 317, 59653,317,
+ 1588, 317, 356, 317, 381, 350, 317, 990, 39003,59657,2024, 59659,5088, 59660,59662,59663,1160, 551, 59664,356, 551, 317, 59665,317, 59666,1160, 317,
24024,42654,8258, 317, 317, 317, 1353, 317, 1025, 1353, 59667,317, 59670,59668,59669,59671,59673,59674,59677,59679,59684,317, 59686,317, 317, 1347, 59675,
317, 59676,363, 59678,345, 2156, 382, 490, 317, 59680,59681,1325, 59683,317, 59682,343, 59685,596, 317, 390, 490, 59687,990, 36760,59689,4576, 59691,
551, 7695, 371, 19913,59693,59701,59705,59715,59730,490, 362, 59734,59736,59738,59739,1345, 59760,59767,3987, 317, 59768,5241, 59694,332, 5120, 59697,59699,
- 317, 20149,59700,59695,343, 59696,5570, 59698,11855,317, 13457,59702,317, 6228, 59703,3999, 59704,12423,317, 317, 380, 317, 317, 5942, 381, 965, 6402,
+ 317, 20149,59700,59695,343, 59696,5570, 59698,11855,317, 13457,59702,317, 6228, 59703,3999, 59704,12423,317, 317, 380, 317, 317, 5942, 381, 965, 6402,
317, 317, 59706,59708,59710,317, 343, 59707,4040, 59709,6270, 10172,466, 370, 317, 317, 59711,345, 404, 59712,19186,59714,59713,651, 59716,59721,59722,
317, 59724,317, 427, 7405, 317, 59717,59718,3869, 317, 59719,59720,59723,18116,59725,317, 59729,317, 59726,59727,59728,317, 7560, 345, 4268, 2381, 59731,
317, 18084,59733,1347, 357, 59732,5570, 343, 5477, 363, 59735,59737,36441,2261, 371, 2261, 44010,10815,3869, 317, 317, 381, 50464,393, 59740,59753,59758,
- 59759,59741,59745,990, 317, 1109, 51210,59747,1109, 59750,2396, 59752,5241, 59742,317, 59743,317, 59744,317, 317, 317, 317, 317, 59746,33056,6956, 317,
+ 59759,59741,59745,990, 317, 1109, 51210,59747,1109, 59750,2396, 59752,5241, 59742,317, 59743,317, 59744,317, 317, 317, 317, 317, 59746,33056,6956, 317,
345, 59748,59749,59751,317, 8804, 1160, 6207, 59754,59755,363, 5174, 10149,317, 990, 59756,59757,317, 13947,2381, 345, 5174, 5441, 1950, 317, 7850, 59761,
- 59762,59765,5684, 317, 1030, 59766,317, 317, 59763,59764,404, 5273, 6382, 317, 1347, 2142, 29447,404, 317, 12616,343, 380, 332, 3854, 59769,351, 343,
- 350, 5459, 490, 59771,59772,59773,11211,59787,59790,317, 490, 21274,5828, 59774,59775,633, 59776,2566, 22275,59780,4591, 59781,351, 317, 59783,59784,1347,
- 59785,345, 317, 6228, 350, 317, 59777,59778,59779,343, 317, 14108,317, 7785, 317, 317, 59782,7523, 490, 1160, 1160, 317, 332, 490, 317, 345, 363,
- 5570, 59786,2584, 363, 404, 59788,390, 5447, 59789,5624, 59792,59793,59795,59798,317, 59811,317, 317, 317, 20265,317, 11339,317, 59794,5399, 343, 317,
- 6228, 339, 9768, 5611, 1109, 3284, 317, 10592,59796,382, 59797,4925, 5054, 404, 59799,59800,59801,59803,24185,59806,8099, 401, 59802,596, 16910,317, 1481,
- 371, 565, 13216,59804,317, 9768, 490, 59805,59807,59808,59809,59810,18829,59812,12696,59814,466, 59816,59822,317, 59825,59815,317, 10316,371, 317, 317,
+ 59762,59765,5684, 317, 1030, 59766,317, 317, 59763,59764,404, 5273, 6382, 317, 1347, 2142, 29447,404, 317, 12616,343, 380, 332, 3854, 59769,351, 343,
+ 350, 5459, 490, 59771,59772,59773,11211,59787,59790,317, 490, 21274,5828, 59774,59775,633, 59776,2566, 22275,59780,4591, 59781,351, 317, 59783,59784,1347,
+ 59785,345, 317, 6228, 350, 317, 59777,59778,59779,343, 317, 14108,317, 7785, 317, 317, 59782,7523, 490, 1160, 1160, 317, 332, 490, 317, 345, 363,
+ 5570, 59786,2584, 363, 404, 59788,390, 5447, 59789,5624, 59792,59793,59795,59798,317, 59811,317, 317, 317, 20265,317, 11339,317, 59794,5399, 343, 317,
+ 6228, 339, 9768, 5611, 1109, 3284, 317, 10592,59796,382, 59797,4925, 5054, 404, 59799,59800,59801,59803,24185,59806,8099, 401, 59802,596, 16910,317, 1481,
+ 371, 565, 13216,59804,317, 9768, 490, 59805,59807,59808,59809,59810,18829,59812,12696,59814,466, 59816,59822,317, 59825,59815,317, 10316,371, 317, 317,
371, 59817,59818,59820,59821,3284, 16910,382, 59819,11844,16508,390, 317, 8828, 59823,10172,466, 11864,59824,2402, 362, 404, 404, 59828,59835,1194, 59837,
- 59839,59840,3999, 362, 59841,59843,59844,59845,59846,11158,59847,59856,490, 59829,59830,59831,59832,59833,59834,373, 317, 59836,24281,59838,9581, 1347, 317,
+ 59839,59840,3999, 362, 59841,59843,59844,59845,59846,11158,59847,59856,490, 59829,59830,59831,59832,59833,59834,373, 317, 59836,24281,59838,9581, 1347, 317,
574, 351, 476, 59842,9609, 4267, 11434,317, 317, 4268, 380, 7035, 59848,59855,18420,4738, 18420,59849,59850,59851,59852,59853,59854,345, 59857,59859,46641,
- 22341,371, 9422, 1347, 59862,317, 59860,59861,317, 317, 59864,345, 29906,59866,59867,7521, 356, 317, 317, 21384,740, 345, 1347, 4396, 490, 59869,1943,
+ 22341,371, 9422, 1347, 59862,317, 59860,59861,317, 317, 59864,345, 29906,59866,59867,7521, 356, 317, 317, 21384,740, 345, 1347, 4396, 490, 59869,1943,
59870,350, 59871,59898,59901,59931,59967,59982,59986,59997,59999,60006,60009,60012,60058,211, 60178,60182,60203,212, 60416,213, 60519,60524,60528,60529,60530,
60533,10489,59872,59881,9443, 2298, 1033, 59882,59883,59884,2063, 59889,59893,59895,59897,317, 59873,59877,59879,317, 6228, 317, 410, 59874,10891,53149,31894,
385, 317, 4789, 59875,59876,317, 370, 59878,4573, 15334,317, 317, 8258, 317, 59880,8136, 466, 7941, 317, 317, 59885,59886,5942, 59887,1160, 59888,52497,
- 317, 317, 59890,362, 59892,6676, 2222, 317, 439, 7916, 59891,554, 362, 15337,317, 317, 13324,428, 317, 363, 59894,5105, 12454,543, 362, 59896,317,
- 59899,2022, 10956,5809, 59900,59902,59905,59906,59910,59913,59919,317, 59922,59926,56512,59903,59904,867, 2035, 448, 1109, 59907,59908,363, 59909,317, 971,
- 2110, 317, 5223, 33252,317, 59911,317, 59912,5295, 5295, 317, 59914,554, 59916,350, 362, 317, 317, 59915,1347, 59917,390, 317, 59918,59920,317, 317,
+ 317, 317, 59890,362, 59892,6676, 2222, 317, 439, 7916, 59891,554, 362, 15337,317, 317, 13324,428, 317, 363, 59894,5105, 12454,543, 362, 59896,317,
+ 59899,2022, 10956,5809, 59900,59902,59905,59906,59910,59913,59919,317, 59922,59926,56512,59903,59904,867, 2035, 448, 1109, 59907,59908,363, 59909,317, 971,
+ 2110, 317, 5223, 33252,317, 59911,317, 59912,5295, 5295, 317, 59914,554, 59916,350, 362, 317, 317, 59915,1347, 59917,390, 317, 59918,59920,317, 317,
59921,20331,363, 59923,317, 59924,59925,317, 46344,59927,59930,59928,59929,59932,59936,59938,59946,59955,59956,59960,59966,365, 59933,11613,2094, 59934,59935,
9548, 343, 317, 4965, 59937,11128,317, 1588, 397, 317, 59939,59940,317, 26581,6046, 5173, 59941,4564, 59942,59943,59944,59945,59947,59951,59952,59953,59948,
- 59949,59950,4564, 343, 12277,59954,351, 370, 605, 343, 59957,59958,59959,59961,59962,59963,59964,490, 2073, 490, 404, 2715, 371, 317, 332, 6228, 332,
- 59965,7143, 2715, 5611, 2381, 55228,332, 5890, 6394, 1459, 59968,466, 1230, 59969,59972,59973,59975,59976,317, 59977,59978,59979,10476,363, 59970,5991, 466,
+ 59949,59950,4564, 343, 12277,59954,351, 370, 605, 343, 59957,59958,59959,59961,59962,59963,59964,490, 2073, 490, 404, 2715, 371, 317, 332, 6228, 332,
+ 59965,7143, 2715, 5611, 2381, 55228,332, 5890, 6394, 1459, 59968,466, 1230, 59969,59972,59973,59975,59976,317, 59977,59978,59979,10476,363, 59970,5991, 466,
51461,59971,14337,466, 343, 362, 317, 59974,2510, 1962, 466, 596, 32383,9067, 3504, 466, 2571, 317, 317, 6638, 15138,317, 426, 317, 317, 59980,59981,
- 2581, 59983,59984,5661, 59985,8948, 362, 317, 59987,59989,59990,59992,59994,2004, 554, 317, 59995,59988,317, 317, 317, 6050, 356, 16651,317, 59991,6996,
- 7028, 59993,59996,317, 2222, 59998,7214, 371, 43123,60000,317, 60003,350, 60004,1108, 60005,60001,59994,60002,5238, 317, 317, 5761, 343, 317, 345, 404,
+ 2581, 59983,59984,5661, 59985,8948, 362, 317, 59987,59989,59990,59992,59994,2004, 554, 317, 59995,59988,317, 317, 317, 6050, 356, 16651,317, 59991,6996,
+ 7028, 59993,59996,317, 2222, 59998,7214, 371, 43123,60000,317, 60003,350, 60004,1108, 60005,60001,59994,60002,5238, 317, 317, 5761, 343, 317, 345, 404,
60007,60008,60010,3999, 490, 379, 490, 317, 60011,317, 60013,60017,60019,2275, 60024,60026,60029,60030,10149,565, 60046,60054,60055,60056,60057,332, 37194,
332, 1108, 60014,317, 60015,332, 60016,60018,565, 621, 60020,317, 317, 317, 1728, 317, 60021,317, 60022,60023,427, 60025,60027,362, 5439, 60028,60031,
- 60032,554, 60038,362, 60044,60045,317, 345, 9537, 60033,60035,60036,317, 317, 60034,363, 12988,60037,317, 317, 60039,19398,60040,317, 60042,60043,5241,
+ 60032,554, 60038,362, 60044,60045,317, 345, 9537, 60033,60035,60036,317, 317, 60034,363, 12988,60037,317, 317, 60039,19398,60040,317, 60042,60043,5241,
2272, 60041,350, 7273, 317, 317, 317, 11198,2187, 317, 317, 60047,2396, 7954, 60053,317, 60048,60049,60050,60051,60052,1347, 317, 363, 343, 5991, 15058,
4984, 317, 2222, 26076,332, 6565, 317, 60059,60064,360, 317, 60060,2035, 60061,60062,370, 60063,317, 45099,371, 60065,60072,60073,60078,60094,60101,60102,
- 60106,60111,60126,15983,60127,60128,60142,433, 60145,60147,60149,60156,60173,60175,490, 60177,332, 60066,2086, 60067,60069,60071,30022,1109, 20763,317, 2134,
+ 60106,60111,60126,15983,60127,60128,60142,433, 60145,60147,60149,60156,60173,60175,490, 60177,332, 60066,2086, 60067,60069,60071,30022,1109, 20763,317, 2134,
2146, 60068,317, 60070,25563,5201, 350, 1526, 5492, 343, 14810,317, 371, 60074,60075,60076,60077,317, 5991, 466, 16307,317, 60079,60080,60086,60087,60089,
- 60090,60092,4268, 2162, 8695, 357, 2067, 51343,60081,349, 60082,60083,317, 412, 60084,60085,381, 390, 15330,60088,7055, 404, 317, 60091,317, 60093,4591,
+ 60090,60092,4268, 2162, 8695, 357, 2067, 51343,60081,349, 60082,60083,317, 412, 60084,60085,381, 390, 15330,60088,7055, 404, 317, 60091,317, 60093,4591,
5742, 565, 60095,3854, 60097,317, 317, 60096,60098,365, 60099,60100,5447, 5847, 351, 6598, 12025,578, 9857, 590, 363, 490, 60103,60104,60105,60107,60110,
- 60108,60109,2401, 393, 60112,565, 343, 60117,356, 60120,60122,317, 60113,317, 883, 60114,60115,60116,7079, 60118,60119,6228, 345, 4980, 60121,351, 6318,
- 60123,60124,343, 60125,30423,317, 16535,3079, 9914, 14069,392, 60129,18191,60131,60133,384, 60137,60140,20310,60130,4268, 16092,317, 60132,317, 489, 3987,
- 317, 371, 1347, 5862, 2571, 60134,60135,60136,317, 363, 2336, 1347, 25415,317, 57672,60138,60139,6228, 317, 16092,11344,2077, 32297,317, 60141,428, 8522,
- 60143,8178, 350, 60144,60146,11607,60148,50937,4984, 694, 60150,317, 13023,60152,25193,4984, 60155,60151,371, 867, 2219, 60153,317, 343, 60154,9124, 317,
+ 60108,60109,2401, 393, 60112,565, 343, 60117,356, 60120,60122,317, 60113,317, 883, 60114,60115,60116,7079, 60118,60119,6228, 345, 4980, 60121,351, 6318,
+ 60123,60124,343, 60125,30423,317, 16535,3079, 9914, 14069,392, 60129,18191,60131,60133,384, 60137,60140,20310,60130,4268, 16092,317, 60132,317, 489, 3987,
+ 317, 371, 1347, 5862, 2571, 60134,60135,60136,317, 363, 2336, 1347, 25415,317, 57672,60138,60139,6228, 317, 16092,11344,2077, 32297,317, 60141,428, 8522,
+ 60143,8178, 350, 60144,60146,11607,60148,50937,4984, 694, 60150,317, 13023,60152,25193,4984, 60155,60151,371, 867, 2219, 60153,317, 343, 60154,9124, 317,
3645, 384, 60157,60161,60166,60168,4952, 60172,13066,20848,317, 373, 373, 38780,28079,60158,2163, 60160,317, 60159,10796,13573,8682, 60162,317, 60163,60164,
- 60165,60167,41328,60169,332, 60170,4987, 404, 60171,7941, 343, 13686,380, 60174,3432, 17583,47678,428, 60176,5238, 390, 25404,55469,501, 1345, 60179,5241,
- 60180,60181,428, 41639,317, 317, 317, 317, 60183,60184,490, 60186,574, 60187,60193,60197,345, 357, 363, 60185,590, 11347,1044, 557, 60188,60192,6917,
- 317, 317, 60189,637, 60190,317, 694, 8948, 2271, 356, 1194, 60191,10058,317, 60194,1266, 317, 60195,60196,2272, 317, 60198,317, 317, 60199,393, 1347,
+ 60165,60167,41328,60169,332, 60170,4987, 404, 60171,7941, 343, 13686,380, 60174,3432, 17583,47678,428, 60176,5238, 390, 25404,55469,501, 1345, 60179,5241,
+ 60180,60181,428, 41639,317, 317, 317, 317, 60183,60184,490, 60186,574, 60187,60193,60197,345, 357, 363, 60185,590, 11347,1044, 557, 60188,60192,6917,
+ 317, 317, 60189,637, 60190,317, 694, 8948, 2271, 356, 1194, 60191,10058,317, 60194,1266, 317, 60195,60196,2272, 317, 60198,317, 317, 60199,393, 1347,
60200,60201,60202,60204,18422,381, 23348,60205,60210,60229,60232,60248,60261,60263,60265,60294,60297,60301,60303,60319,60326,60336,965, 60353,60366,60399,60408,
60410,317, 60414,60206,2271, 490, 317, 60207,60208,332, 3505, 60209,5392, 5611, 7460, 332, 60211,60217,60219,343, 60221,60223,1160, 60212,380, 60213,60215,
- 433, 317, 60214,9067, 373, 60216,24655,433, 523, 5447, 33962,60218,33467,60220,433, 6598, 380, 539, 362, 60222,15027,60224,30685,60225,60226,60227,343,
+ 433, 317, 60214,9067, 373, 60216,24655,433, 523, 5447, 33962,60218,33467,60220,433, 6598, 380, 539, 362, 60222,15027,60224,30685,60225,60226,60227,343,
60228,2035, 605, 60230,3726, 1358, 2584, 60231,332, 47868,317, 60233,60234,60238,60239,60240,60241,20219,60243,60246,60247,317, 1345, 60235,60236,60237,14359,
- 60242,2210, 60244,539, 60245,349, 60249,60253,60257,60250,2715, 60251,317, 356, 60252,370, 317, 382, 42472,343, 60254,7764, 60255,60256,10422,466, 317,
- 5709, 3031, 60258,60260,5226, 60259,60262,5993, 2381, 554, 60264,60266,60267,60268,60269,60270,60271,5449, 60273,60275,60283,60288,60291,46121,7481, 54993,317,
- 596, 6757, 343, 404, 10894,16078,60272,4591, 317, 317, 25726,29248,60274,317, 317, 60276,60277,60279,317, 60278,5476, 397, 60280,60281,380, 60282,381,
- 2163, 60284,60285,4591, 60286,60287,58395,60289,60290,2060, 373, 60292,60293,7467, 5828, 60295,60296,14337,317, 60298,60299,362, 50561,317, 317, 343, 2551,
- 317, 317, 60300,21037,345, 476, 317, 4980, 1347, 11443,46553,60302,45367,9692, 363, 11245,60304,60309,60311,60317,9199, 60305,3387, 60306,60307,40841,317,
- 60308,60310,349, 5457, 9832, 363, 60312,60314,60313,317, 60315,356, 60316,382, 5459, 60318,60320,60322,317, 60323,1325, 60321,380, 2317, 317, 60324,317,
+ 60242,2210, 60244,539, 60245,349, 60249,60253,60257,60250,2715, 60251,317, 356, 60252,370, 317, 382, 42472,343, 60254,7764, 60255,60256,10422,466, 317,
+ 5709, 3031, 60258,60260,5226, 60259,60262,5993, 2381, 554, 60264,60266,60267,60268,60269,60270,60271,5449, 60273,60275,60283,60288,60291,46121,7481, 54993,317,
+ 596, 6757, 343, 404, 10894,16078,60272,4591, 317, 317, 25726,29248,60274,317, 317, 60276,60277,60279,317, 60278,5476, 397, 60280,60281,380, 60282,381,
+ 2163, 60284,60285,4591, 60286,60287,58395,60289,60290,2060, 373, 60292,60293,7467, 5828, 60295,60296,14337,317, 60298,60299,362, 50561,317, 317, 343, 2551,
+ 317, 317, 60300,21037,345, 476, 317, 4980, 1347, 11443,46553,60302,45367,9692, 363, 11245,60304,60309,60311,60317,9199, 60305,3387, 60306,60307,40841,317,
+ 60308,60310,349, 5457, 9832, 363, 60312,60314,60313,317, 60315,356, 60316,382, 5459, 60318,60320,60322,317, 60323,1325, 60321,380, 2317, 317, 60324,317,
6506, 317, 317, 60325,867, 4591, 2416, 2074, 396, 489, 60327,317, 60329,60330,60331,317, 60333,332, 317, 317, 60328,343, 343, 1481, 60332,60334,60335,
428, 60337,13135,60351,317, 60338,317, 60345,60339,60340,60341,60342,60343,60344,60346,60349,60347,60348,1325, 466, 2510, 60350,397, 5324, 23268,60352,60354,
- 60355,60357,60362,60364,60365,9319, 2110, 60356,5270, 490, 56231,317, 7035, 60358,39398,60359,60361,2117, 4925, 24281,60360,1020, 1358, 317, 60363,317, 7386,
+ 60355,60357,60362,60364,60365,9319, 2110, 60356,5270, 490, 56231,317, 7035, 60358,39398,60359,60361,2117, 4925, 24281,60360,1020, 1358, 317, 60363,317, 7386,
31083,60367,60369,60371,60378,60379,370, 2022, 60384,60387,60394,404, 501, 60397,363, 317, 380, 60368,9186, 356, 60370,428, 6203, 60372,317, 60373,60374,
- 345, 60375,9422, 7764, 9739, 8304, 60376,60377,523, 1325, 428, 466, 1588, 5616, 317, 60380,317, 317, 3645, 10561,60381,317, 20178,317, 60382,60383,466,
- 317, 60385,60386,60388,5431, 60389,2610, 6089, 60392,2134, 317, 317, 373, 317, 2156, 60390,317, 60391,370, 317, 1526, 5201, 18587,60393,345, 20524,317,
- 60395,60396,47505,317, 60398,5717, 5554, 60400,60401,60402,60403,44910,60405,558, 345, 5154, 60404,363, 433, 381, 60406,5652, 60407,18333,12231,433, 317,
+ 345, 60375,9422, 7764, 9739, 8304, 60376,60377,523, 1325, 428, 466, 1588, 5616, 317, 60380,317, 317, 3645, 10561,60381,317, 20178,317, 60382,60383,466,
+ 317, 60385,60386,60388,5431, 60389,2610, 6089, 60392,2134, 317, 317, 373, 317, 2156, 60390,317, 60391,370, 317, 1526, 5201, 18587,60393,345, 20524,317,
+ 60395,60396,47505,317, 60398,5717, 5554, 60400,60401,60402,60403,44910,60405,558, 345, 5154, 60404,363, 433, 381, 60406,5652, 60407,18333,12231,433, 317,
60409,7891, 5890, 60411,60412,10815,317, 32491,3031, 60413,317, 15531,29147,60415,317, 60417,60419,60425,60426,60429,60430,12565,17333,19016,60431,60434,14561,
390, 5689, 60418,6516, 427, 39520,317, 60420,317, 60424,317, 60421,60423,11647,60422,380, 343, 466, 317, 2715, 348, 9859, 371, 7567, 60427,60428,49396,
490, 44010,1109, 365, 345, 60432,60433,51079,317, 60435,60436,60438,490, 343, 12246,38739,317, 8593, 5611, 60437,33511,5367, 317, 60439,60444,60446,60454,
- 60455,60456,60461,60463,60465,60503,60504,60517,37723,351, 60518,60440,317, 363, 60442,60443,317, 1230, 60441,590, 466, 317, 2845, 384, 965, 60445,317,
+ 60455,60456,60461,60463,60465,60503,60504,60517,37723,351, 60518,60440,317, 363, 60442,60443,317, 1230, 60441,590, 466, 317, 2845, 384, 965, 60445,317,
1011, 381, 317, 26830,317, 60447,5746, 317, 3361, 1160, 637, 1300, 6996, 317, 317, 633, 317, 317, 60448,317, 317, 356, 317, 39005,317, 51190,39381,
- 60450,393, 6600, 60452,317, 60449,7064, 4949, 60451,7911, 39520,7618, 363, 9624, 60453,371, 363, 404, 427, 2948, 345, 10519,381, 2590, 2142, 2155, 490,
- 60457,317, 60458,1347, 60460,5628, 317, 317, 7983, 60459,317, 60462,345, 396, 5746, 365, 343, 60464,60466,60469,60471,60475,404, 60497,317, 317, 4591,
- 6607, 363, 2001, 60467,6195, 60468,4925, 7311, 317, 2280, 317, 60470,8099, 8484, 2715, 317, 60472,34487,53036,24570,317, 60473,15307,317, 7399, 10196,317,
- 1109, 2272, 60474,7225, 60476,396, 60480,60482,60483,60485,60489,2054, 60491,5836, 60493,332, 6486, 60477,60478,2142, 60479,60481,355, 741, 490, 10254,380,
+ 60450,393, 6600, 60452,317, 60449,7064, 4949, 60451,7911, 39520,7618, 363, 9624, 60453,371, 363, 404, 427, 2948, 345, 10519,381, 2590, 2142, 2155, 490,
+ 60457,317, 60458,1347, 60460,5628, 317, 317, 7983, 60459,317, 60462,345, 396, 5746, 365, 343, 60464,60466,60469,60471,60475,404, 60497,317, 317, 4591,
+ 6607, 363, 2001, 60467,6195, 60468,4925, 7311, 317, 2280, 317, 60470,8099, 8484, 2715, 317, 60472,34487,53036,24570,317, 60473,15307,317, 7399, 10196,317,
+ 1109, 2272, 60474,7225, 60476,396, 60480,60482,60483,60485,60489,2054, 60491,5836, 60493,332, 6486, 60477,60478,2142, 60479,60481,355, 741, 490, 10254,380,
345, 11855,60484,2537, 9364, 317, 317, 345, 60486,20848,60488,7187, 60487,2163, 7187, 60490,25193,6854, 362, 1331, 60492,490, 2317, 60494,60495,60496,60498,
- 490, 60499,2219, 60500,60501,36766,6486, 1481, 5163, 317, 60502,26076,2503, 60505,60506,60508,350, 363, 5661, 317, 345, 1230, 60516,33040,60507,317, 5223,
+ 490, 60499,2219, 60500,60501,36766,6486, 1481, 5163, 317, 60502,26076,2503, 60505,60506,60508,350, 363, 5661, 317, 345, 1230, 60516,33040,60507,317, 5223,
1230, 317, 6949, 60509,1347, 2024, 60511,29108,60513,348, 317, 11962,1230, 60510,2328, 60512,605, 434, 2322, 60514,60515,651, 29108,15117,5241, 380, 13659,
- 60520,373, 60521,317, 60522,60523,15536,60525,2568, 317, 7401, 350, 13181,60526,332, 317, 317, 60527,2117, 317, 317, 350, 2117, 351, 574, 343, 350,
+ 60520,373, 60521,317, 60522,60523,15536,60525,2568, 317, 7401, 350, 13181,60526,332, 317, 317, 60527,2117, 317, 317, 350, 2117, 351, 574, 343, 350,
60531,60532,1108, 2035, 2022, 60534,5570, 6993, 60535,60536,490, 11294,17677,5439, 60538,60550,60554,60565,60566,60570,60575,60577,12288,60583,60587,60595,60597,
60539,60540,60541,60543,351, 27177,350, 60542,350, 60544,60549,60545,60546,60547,60548,60551,60552,60553,396, 605, 60555,60560,60564,15146,60556,60557,60558,
8948, 343, 60559,60561,317, 349, 351, 60562,343, 60563,47780,317, 2298, 511, 6778, 60567,60568,396, 60569,15146,350, 60571,11147,60572,350, 60573,60574,
60576,11663,60578,982, 57574,5677, 317, 60580,26871,350, 60579,2219, 2219, 60581,317, 351, 60582,7508, 380, 60584,381, 60585,5309, 317, 13364,60586,60588,
60594,60589,60590,60591,60592,60593,351, 20465,20465,60596,2568, 2152, 60598,380, 60599,317, 60601,60602,60603,60604,14720,2398, 60605,1347, 60665,60710,60781,
- 426, 60784,4150, 60882,60888,60893,60897,55769,60606,60608,4965, 60611,317, 60622,60635,60658,60661,1060, 60664,60607,404, 363, 1347, 60609,60610,60612,363,
- 343, 40460,60621,60613,60619,60620,60614,60615,60616,60617,60618,332, 3664, 317, 317, 60623,60624,60625,60629,60633,60626,60627,317, 60628,60630,60631,5623,
+ 426, 60784,4150, 60882,60888,60893,60897,55769,60606,60608,4965, 60611,317, 60622,60635,60658,60661,1060, 60664,60607,404, 363, 1347, 60609,60610,60612,363,
+ 343, 40460,60621,60613,60619,60620,60614,60615,60616,60617,60618,332, 3664, 317, 317, 60623,60624,60625,60629,60633,60626,60627,317, 60628,60630,60631,5623,
32563,60632,60634,60636,15618,60638,60640,60654,60655,60656,60637,1347, 5746, 60639,60641,317, 9450, 60642,60643,60645,60646,317, 60644,60647,60648,60652,60649,
60650,60651,317, 9313, 381, 60653,428, 345, 60657,51212,317, 60659,60660,317, 317, 317, 385, 1347, 317, 16970,382, 60662,8301, 60663,49315,370, 60666,
60668,1720, 2021, 60669,60670,60671,60687,60690,60695,317, 60705,60667,4266, 363, 343, 427, 490, 1347, 345, 60672,316, 60676,60677,60683,317, 60673,60674,
60675,7242, 60678,60682,60679,60680,5418, 60681,60684,4751, 60685,60686,343, 60688,60689,60691,2809, 60692,60694,404, 60693,60696,60700,60703,60697,60698,60699,
60701,60702,60704,60706,60707,60708,60709,60711,1720, 14444,350, 554, 6532, 60712,60765,60772,60773,5120, 60775,60777,1042, 60713,60732,332, 2146, 60735,60736,
- 60743,60748,60753,60755,60763,404, 12154,9059, 60714,60719,60728,60731,60715,60716,60717,60718,60720,60722,60721,60723,60724,60725,60726,60727,317, 317, 345,
- 4268, 60729,60730,32532,317, 7744, 466, 60733,363, 60734,317, 384, 9696, 60737,8047, 60738,60739,60740,60741,60742,1998, 2146, 317, 60744,60747,317, 393,
+ 60743,60748,60753,60755,60763,404, 12154,9059, 60714,60719,60728,60731,60715,60716,60717,60718,60720,60722,60721,60723,60724,60725,60726,60727,317, 317, 345,
+ 4268, 60729,60730,32532,317, 7744, 466, 60733,363, 60734,317, 384, 9696, 60737,8047, 60738,60739,60740,60741,60742,1998, 2146, 317, 60744,60747,317, 393,
60745,60746,317, 317, 32350,363, 317, 345, 317, 7911, 317, 363, 60749,60750,345, 1160, 3079, 350, 345, 2171, 60751,317, 317, 317, 317, 60752,59500,
- 363, 60754,5223, 343, 60756,15540,8683, 9699, 60758,317, 60757,60759,60760,60761,2510, 60762,317, 60764,317, 60766,60770,60767,60768,60769,60771,20995,348,
+ 363, 60754,5223, 343, 60756,15540,8683, 9699, 60758,317, 60757,60759,60760,60761,2510, 60762,317, 60764,317, 60766,60770,60767,60768,60769,60771,20995,348,
14399,2022, 17375,60774,5120, 551, 363, 363, 317, 60776,382, 6228, 842, 3999, 317, 590, 60778,60779,60780,60782,57850,60783,60785,59779,60787,348, 60792,
60801,28447,466, 60813,60837,60878,60786,345, 60788,60789,371, 60790,9048, 60791,317, 317, 317, 317, 317, 317, 317, 317, 317, 5037, 60793,60796,60799,
- 60794,1194, 23353,60795,60797,60798,60800,5225, 60802,317, 60804,60805,60806,343, 317, 317, 317, 60803,317, 6170, 317, 363, 1347, 339, 345, 345, 382,
+ 60794,1194, 23353,60795,60797,60798,60800,5225, 60802,317, 60804,60805,60806,343, 317, 317, 317, 60803,317, 6170, 317, 363, 1347, 339, 345, 345, 382,
60807,60810,1347, 60808,60809,317, 52144,60811,60812,15540,60814,60815,60816,16330,60826,60817,7506, 1347, 60818,60819,60820,60821,60822,60823,60824,60825,60827,
60830,60833,5603, 60828,60829,60831,60832,393, 6355, 28547,339, 4591, 317, 345, 60834,60835,60836,343, 40319,60838,4591, 60839,317, 9695, 60840,60842,60843,
60848,60854,60857,5731, 11038,60864,60869,60874,3717, 28878,60841,31613,317, 8682, 60844,60845,60846,60847,10422,27814,317, 317, 60849,60850,60851,60852,60853,
@@ -10709,228 +10704,228 @@ static const unsigned int ChildLocs[185261] =
7064, 9303, 60898,60899,60910,60928,317, 60900,60901,60906,427, 5241, 1347, 30314,345, 60902,60903,7514, 60904,60905,60907,60908,60909,6212, 317, 60911,60912,
317, 60917,965, 60913,60916,317, 317, 60914,60915,370, 317, 60918,60919,60923,9070, 58309,60920,60921,60922,317, 7560, 381, 60924,60925,60926,60927,60929,
60930,60931,60933,60932,60934,60935,60936,60940,60958,60960,61015,61017,61083,61084,61097,20255,28126,61098,61105,61141,61156,61235,61243,61256,61259,61274,61300,
- 61349,61351,61354,61355,490, 61357,60937,60938,60939,317, 60941,317, 60945,60946,317, 60952,60955,365, 343, 60956,60942,18969,60944,60943,60947,60948,490,
+ 61349,61351,61354,61355,490, 61357,60937,60938,60939,317, 60941,317, 60945,60946,317, 60952,60955,365, 343, 60956,60942,18969,60944,60943,60947,60948,490,
60949,60950,332, 4268, 317, 15817,362, 317, 60951,883, 60953,365, 317, 60954,365, 5570, 371, 371, 13638,490, 317, 317, 60957,23244,5687, 60959,60961,
- 60962,60968,60978,60979,60984,60985,60999,61002,15387,317, 61003,7385, 15721,332, 60963,60966,60967,41735,332, 60964,60965,5032, 317, 317, 317, 1358, 317,
- 317, 2142, 9226, 60969,60970,60971,60975,6471, 17445,356, 490, 5570, 2142, 60972,11669,60974,2322, 60973,2272, 60976,343, 317, 317, 60977,317, 332, 9427,
- 2715, 60980,60981,60982,350, 12993,317, 2683, 317, 574, 60983,23199,5483, 8993, 365, 60986,60987,2024, 20865,14708,9648, 60993,362, 15733,60996,60998,317,
+ 60962,60968,60978,60979,60984,60985,60999,61002,15387,317, 61003,7385, 15721,332, 60963,60966,60967,41735,332, 60964,60965,5032, 317, 317, 317, 1358, 317,
+ 317, 2142, 9226, 60969,60970,60971,60975,6471, 17445,356, 490, 5570, 2142, 60972,11669,60974,2322, 60973,2272, 60976,343, 317, 317, 60977,317, 332, 9427,
+ 2715, 60980,60981,60982,350, 12993,317, 2683, 317, 574, 60983,23199,5483, 8993, 365, 60986,60987,2024, 20865,14708,9648, 60993,362, 15733,60996,60998,317,
6736, 2391, 317, 317, 60988,60989,60990,60992,317, 7592, 9878, 60086,60991,317, 356, 466, 1020, 317, 6578, 60994,466, 317, 317, 317, 60995,60997,17400,
- 363, 61000,61001,16908,1358, 9244, 317, 5890, 317, 61004,61005,61006,317, 61010,18147,390, 61007,317, 498, 317, 61008,61009,345, 8451, 1033, 61011,317,
+ 363, 61000,61001,16908,1358, 9244, 317, 5890, 317, 61004,61005,61006,317, 61010,18147,390, 61007,317, 498, 317, 61008,61009,345, 8451, 1033, 61011,317,
61012,61014,317, 317, 317, 61013,7225, 2584, 27540,61016,7225, 332, 949, 61018,61019,61023,558, 43123,2084, 61031,61034,61035,31813,61037,61038,61042,61064,
61065,343, 61081,61020,61021,466, 2108, 14561,317, 51212,317, 8722, 61022,3284, 3284, 490, 5836, 356, 317, 61024,61026,61029,317, 61025,61027,61028,61030,
2222, 61032,61033,14170,345, 317, 61036,565, 466, 8333, 61039,332, 61040,317, 61041,4960, 4949, 61043,61045,404, 8357, 3710, 61047,61048,61049,61052,61053,
- 61054,61057,61059,61063,61044,381, 61046,10877,317, 428, 317, 9624, 317, 317, 317, 5483, 365, 317, 61050,2369, 2210, 61051,61055,1358, 61056,61058,7850,
- 6780, 61060,61061,61062,317, 61066,61073,343, 61074,28654,343, 317, 7974, 61067,61068,437, 61069,61070,61071,61072,317, 490, 5355, 61075,7142, 61077,6551,
+ 61054,61057,61059,61063,61044,381, 61046,10877,317, 428, 317, 9624, 317, 317, 317, 5483, 365, 317, 61050,2369, 2210, 61051,61055,1358, 61056,61058,7850,
+ 6780, 61060,61061,61062,317, 61066,61073,343, 61074,28654,343, 317, 7974, 61067,61068,437, 61069,61070,61071,61072,317, 490, 5355, 61075,7142, 61077,6551,
61079,61076,317, 317, 61078,16508,371, 61080,61082,12901,351, 373, 61085,8301, 2077, 5054, 2024, 61086,48033,61088,61090,61094,14535,501, 554, 61096,20870,
- 15274,8766, 317, 317, 343, 2156, 370, 2117, 317, 61087,61089,363, 61091,61092,61093,5225, 356, 1943, 317, 61095,34925,317, 37113,61099,61101,61102,1020,
- 883, 61104,61100,1060, 317, 501, 317, 317, 5037, 1606, 61103,61106,61110,61111,61113,61117,61121,61124,61128,61137,61139,20512,5325, 317, 13638,61107,3361,
+ 15274,8766, 317, 317, 343, 2156, 370, 2117, 317, 61087,61089,363, 61091,61092,61093,5225, 356, 1943, 317, 61095,34925,317, 37113,61099,61101,61102,1020,
+ 883, 61104,61100,1060, 317, 501, 317, 317, 5037, 1606, 61103,61106,61110,61111,61113,61117,61121,61124,61128,61137,61139,20512,5325, 317, 13638,61107,3361,
61108,14558,61109,61112,551, 351, 8296, 61114,13559,2222, 574, 1060, 61115,61116,351, 61118,501, 61119,61120,9067, 317, 490, 867, 5117, 10878,61122,15108,
- 61123,61125,61126,2067, 2067, 317, 61127,2067, 317, 404, 61129,34254,61132,61133,362, 61135,25782,332, 5441, 317, 61130,317, 317, 61131,317, 1347, 574,
- 317, 382, 363, 345, 61134,317, 370, 317, 356, 61136,317, 2406, 317, 317, 490, 61138,6228, 990, 1325, 466, 317, 317, 7672, 7055, 363, 350, 363,
+ 61123,61125,61126,2067, 2067, 317, 61127,2067, 317, 404, 61129,34254,61132,61133,362, 61135,25782,332, 5441, 317, 61130,317, 317, 61131,317, 1347, 574,
+ 317, 382, 363, 345, 61134,317, 370, 317, 356, 61136,317, 2406, 317, 317, 490, 61138,6228, 990, 1325, 466, 317, 317, 7672, 7055, 363, 350, 363,
61140,8116, 61142,6179, 2134, 61145,61143,61144,5105, 380, 317, 1267, 633, 1588, 61146,61149,550, 61151,61153,13766,362, 61155,61147,13736,61148,317, 61150,
- 61152,317, 61154,2036, 7490, 61157,31191,61164,61172,61173,543, 61183,61193,61195,61199,2022, 61213,61218,61222,61224,61229,61232,56831,61233,61234,61158,2171,
+ 61152,317, 61154,2036, 7490, 61157,31191,61164,61172,61173,543, 61183,61193,61195,61199,2022, 61213,61218,61222,61224,61229,61232,56831,61233,61234,61158,2171,
61160,1078, 382, 61162,317, 61163,3505, 61159,61161,7419, 61165,61168,61169,384, 61170,2402, 345, 61166,8136, 466, 61167,867, 514, 551, 2022, 2022, 61171,
- 351, 11654,345, 61174,61177,5611, 565, 13023,867, 61178,490, 317, 61181,317, 61182,5037, 6089, 317, 317, 61175,9322, 61176,2272, 1479, 61179,61180,317,
- 558, 7672, 317, 61184,13650,61186,61187,5623, 12454,5379, 61188,1020, 61189,317, 317, 61185,61190,466, 61191,61192,61194,373, 6355, 867, 371, 5687, 2381,
+ 351, 11654,345, 61174,61177,5611, 565, 13023,867, 61178,490, 317, 61181,317, 61182,5037, 6089, 317, 317, 61175,9322, 61176,2272, 1479, 61179,61180,317,
+ 558, 7672, 317, 61184,13650,61186,61187,5623, 12454,5379, 61188,1020, 61189,317, 317, 61185,61190,466, 61191,61192,61194,373, 6355, 867, 371, 5687, 2381,
61196,363, 61197,317, 61198,6228, 551, 61200,61202,554, 61205,61206,15745,61208,61209,61210,404, 345, 61212,2067, 9931, 61201,381, 317, 362, 29982,61203,
- 61204,2074, 61207,2369, 48208,61211,61214,61215,61216,23306,317, 2155, 317, 5808, 317, 380, 317, 317, 574, 317, 371, 382, 61217,317, 61219,2537, 317,
+ 61204,2074, 61207,2369, 48208,61211,61214,61215,61216,23306,317, 2155, 317, 5808, 317, 380, 317, 317, 574, 317, 371, 382, 61217,317, 61219,2537, 317,
317, 317, 61221,10609,61220,61223,59954,317, 2369, 7654, 61225,61227,61226,61228,61230,61231,343, 8367, 317, 2110, 332, 380, 317, 867, 317, 2142, 16582,
5570, 6318, 342, 28722,61236,61237,16310,553, 61241,345, 61238,317, 61240,61239,317, 317, 61242,371, 2402, 8296, 317, 61244,23019,61248,12598,317, 61251,
- 317, 317, 388, 8000, 362, 14425,16138,61245,61246,12423,61247,317, 348, 382, 61249,1347, 490, 61250,1160, 61252,61254,61255,317, 61253,5223, 651, 350,
+ 317, 317, 388, 8000, 362, 14425,16138,61245,61246,12423,61247,317, 348, 382, 61249,1347, 490, 61250,1160, 61252,61254,61255,317, 61253,5223, 651, 350,
317, 61257,317, 61258,61260,317, 61265,61266,19648,332, 61267,61269,61270,61272,317, 373, 317, 370, 4591, 5570, 61261,61262,61263,5032, 6409, 317, 61264,
- 521, 9581, 2142, 317, 61268,490, 317, 6458, 7672, 357, 317, 61271,53036,61273,61275,61276,61281,2533, 61282,14821,61283,317, 61284,61286,2381, 61297,7668,
+ 521, 9581, 2142, 317, 61268,490, 317, 6458, 7672, 357, 317, 61271,53036,61273,61275,61276,61281,2533, 61282,14821,61283,317, 61284,61286,2381, 61297,7668,
5836, 61277,345, 553, 61279,61280,61278,490, 36735,15463,427, 2035, 317, 6402, 10619,5105, 2110, 317, 61285,12925,3999, 3529, 2024, 317, 381, 867, 61287,
- 20331,61290,61293,20237,61288,61289,61291,61292,490, 61294,61295,61296,3751, 4591, 61298,61299,42887,371, 61301,61304,61306,61314,61315,8175, 61316,61317,9909,
- 61323,15745,61326,45908,61328,61331,61334,61348,2184, 12700,490, 13566,61302,3751, 61303,476, 61305,61307,61309,384, 61308,317, 2387, 61310,61312,466, 317,
+ 20331,61290,61293,20237,61288,61289,61291,61292,490, 61294,61295,61296,3751, 4591, 61298,61299,42887,371, 61301,61304,61306,61314,61315,8175, 61316,61317,9909,
+ 61323,15745,61326,45908,61328,61331,61334,61348,2184, 12700,490, 13566,61302,3751, 61303,476, 61305,61307,61309,384, 61308,317, 2387, 61310,61312,466, 317,
61311,317, 61313,4563, 6598, 356, 379, 332, 61318,61319,61320,61321,61322,61324,363, 61325,5428, 61327,7850, 317, 317, 61329,61330,390, 61332,61333,61335,
- 584, 61337,61339,61340,350, 61341,61342,7688, 514, 61336,317, 61338,2219, 317, 2142, 10561,61343,61332,12556,4738, 2022, 404, 61346,61344,61345,61347,390,
- 332, 53623,596, 61350,317, 317, 2053, 363, 2066, 61352,61353,380, 356, 466, 317, 5309, 9859, 351, 4564, 61356,15745,6420, 21188,61358,61359,351, 2110,
- 351, 61360,7954, 867, 317, 38658,61361,61362,61363,343, 61365,61367,6228, 317, 317, 8301, 385, 362, 332, 2058, 13076,317, 1108, 2381, 5241, 61364,5439,
+ 584, 61337,61339,61340,350, 61341,61342,7688, 514, 61336,317, 61338,2219, 317, 2142, 10561,61343,61332,12556,4738, 2022, 404, 61346,61344,61345,61347,390,
+ 332, 53623,596, 61350,317, 317, 2053, 363, 2066, 61352,61353,380, 356, 466, 317, 5309, 9859, 351, 4564, 61356,15745,6420, 21188,61358,61359,351, 2110,
+ 351, 61360,7954, 867, 317, 38658,61361,61362,61363,343, 61365,61367,6228, 317, 317, 8301, 385, 362, 332, 2058, 13076,317, 1108, 2381, 5241, 61364,5439,
8937, 61366,371, 61369,61372,61374,61376,61370,61371,61373,61375,612, 17249,61377,61378,61379,61381,61382,61384,61383,365, 217, 317, 381, 61507,61556,61564,
61569,61573,61575,381, 61593,61619,501, 61385,61386,38461,61397,345, 61404,56455,61411,61414,61433,61436,61451,61471,15480,61473,61474,61506,61387,61388,61394,
61395,61396,971, 6355, 343, 428, 6294, 317, 15324,61389,61390,61391,61393,317, 1915, 4267, 6166, 9917, 61392,345, 317, 5037, 21067,15063,20880,317, 61398,
343, 61399,5662, 5717, 61400,61403,61401,61402,427, 1526, 1347, 61405,317, 61409,5487, 61406,6546, 9624, 370, 15881,61407,35352,317, 2368, 35349,20320,61408,
- 11434,343, 523, 351, 61410,356, 605, 10487,7866, 61412,61413,61415,61416,61417,61421,61422,61424,5223, 61425,61426,427, 13847,317, 343, 317, 6902, 317,
- 61418,61419,317, 61420,317, 317, 490, 7594, 5241, 370, 466, 317, 61423,317, 61427,61429,61431,317, 317, 317, 61428,5055, 10351,5167, 317, 61430,1347,
- 317, 5896, 490, 351, 61432,61434,61435,10075,10076,61437,61438,61445,61446,61439,61442,61444,61440,317, 61441,1347, 61443,317, 12564,61447,61449,605, 404,
- 61448,5991, 466, 12423,61450,317, 317, 965, 317, 1347, 397, 317, 317, 29853,61452,61453,61458,1358, 61461,332, 350, 61463,61466,61469,2222, 490, 5241,
+ 11434,343, 523, 351, 61410,356, 605, 10487,7866, 61412,61413,61415,61416,61417,61421,61422,61424,5223, 61425,61426,427, 13847,317, 343, 317, 6902, 317,
+ 61418,61419,317, 61420,317, 317, 490, 7594, 5241, 370, 466, 317, 61423,317, 61427,61429,61431,317, 317, 317, 61428,5055, 10351,5167, 317, 61430,1347,
+ 317, 5896, 490, 351, 61432,61434,61435,10075,10076,61437,61438,61445,61446,61439,61442,61444,61440,317, 61441,1347, 61443,317, 12564,61447,61449,605, 404,
+ 61448,5991, 466, 12423,61450,317, 317, 965, 317, 1347, 397, 317, 317, 29853,61452,61453,61458,1358, 61461,332, 350, 61463,61466,61469,2222, 490, 5241,
317, 61454,317, 317, 8049, 61456,61457,317, 61455,7911, 343, 61459,61460,61462,8021, 317, 317, 317, 8044, 317, 317, 61464,5055, 61465,61467,350, 61468,
- 317, 317, 1347, 5037, 32982,2236, 61470,17649,345, 342, 2054, 363, 419, 42375,61472,332, 5428, 404, 949, 42580,61475,61476,61479,61485,61487,61491,3999,
+ 317, 317, 1347, 5037, 32982,2236, 61470,17649,345, 342, 2054, 363, 419, 42375,61472,332, 5428, 404, 949, 42580,61475,61476,61479,61485,61487,61491,3999,
61492,61493,61495,501, 11242,61496,61502,61503,317, 5457, 317, 317, 26037,428, 61477,371, 61478,317, 61480,61481,317, 637, 633, 317, 61482,61483,61484,
5022, 6598, 551, 61486,3366, 2206, 61488,61489,61490,551, 392, 439, 317, 6514, 61494,317, 11434,381, 61497,61498,61499,61500,61501,27846,2060, 61504,61505,
22561,511, 1347, 490, 490, 61508,61516,61519,61520,61523,990, 61524,61528,61529,61530,3709, 11279,61540,61547,61551,35926,61553,61554,2134, 10876,61509,12262,
- 317, 61510,61513,466, 12000,61514,61511,343, 61512,370, 363, 7689, 317, 5037, 6996, 317, 343, 5190, 317, 317, 61515,410, 1347, 466, 7891, 61517,317,
- 61518,350, 9818, 61521,61522,466, 317, 3131, 317, 317, 2406, 317, 343, 7045, 590, 317, 362, 317, 61525,6555, 317, 61526,61527,380, 3640, 3079, 568,
- 61531,61537,61539,427, 61532,61533,61534,61535,61536,61538,378, 317, 61541,5241, 48479,5793, 61542,338, 61544,61545,2328, 61543,370, 61546,350, 317, 419,
- 61548,2108, 317, 317, 61549,61550,490, 61552,5105, 2420, 61555,345, 332, 2132, 61557,61561,61558,61559,61560,61562,61563,410, 433, 61565,471, 15380,350,
+ 317, 61510,61513,466, 12000,61514,61511,343, 61512,370, 363, 7689, 317, 5037, 6996, 317, 343, 5190, 317, 317, 61515,410, 1347, 466, 7891, 61517,317,
+ 61518,350, 9818, 61521,61522,466, 317, 3131, 317, 317, 2406, 317, 343, 7045, 590, 317, 362, 317, 61525,6555, 317, 61526,61527,380, 3640, 3079, 568,
+ 61531,61537,61539,427, 61532,61533,61534,61535,61536,61538,378, 317, 61541,5241, 48479,5793, 61542,338, 61544,61545,2328, 61543,370, 61546,350, 317, 419,
+ 61548,2108, 317, 317, 61549,61550,490, 61552,5105, 2420, 61555,345, 332, 2132, 61557,61561,61558,61559,61560,61562,61563,410, 433, 61565,471, 15380,350,
61566,61567,61527,61568,381, 317, 332, 2163, 345, 317, 4965, 15951,317, 61570,61571,61572,61574,61576,510, 61577,351, 16630,61580,2845, 61583,396, 33816,
- 61584,61586,61587,61591,61592,317, 371, 2222, 2280, 317, 350, 61578,1108, 61579,343, 61581,61582,317, 7490, 371, 9383, 61585,317, 13498,351, 35902,7951,
- 1020, 8000, 46097,13638,317, 12631,49576,343, 533, 61588,32011,61589,356, 466, 362, 61590,2124, 2510, 8301, 501, 1325, 466, 362, 2301, 317, 61594,343,
+ 61584,61586,61587,61591,61592,317, 371, 2222, 2280, 317, 350, 61578,1108, 61579,343, 61581,61582,317, 7490, 371, 9383, 61585,317, 13498,351, 35902,7951,
+ 1020, 8000, 46097,13638,317, 12631,49576,343, 533, 61588,32011,61589,356, 466, 362, 61590,2124, 2510, 8301, 501, 1325, 466, 362, 2301, 317, 61594,343,
61595,396, 61596,565, 10172,61597,61604,61607,61611,61613,61618,427, 32372,5055, 317, 61598,61599,8136, 12454,61600,61602,61603,2171, 9832, 317, 351, 15646,
- 466, 61601,351, 404, 317, 32408,61605,61606,61608,61610,61609,27691,317, 61612,345, 9174, 61614,61615,317, 317, 61616,61617,5956, 8722, 351, 466, 350,
+ 466, 61601,351, 404, 317, 32408,61605,61606,61608,61610,61609,27691,317, 61612,345, 9174, 61614,61615,317, 317, 61616,61617,5956, 8722, 351, 466, 350,
61620,317, 6089, 373, 380, 1588, 10855,2067, 61622,61624,8952, 317, 61629,61623,61625,61626,61627,61628,61630,61631,61633,61635,61642,11280,61643,61634,61636,
61637,10217,61638,61639,61641,52058,61640,61644,61645,61649,61651,61669,61705,61718,61722,61727,61731,61757,219, 61943,61966,62016,62038,62076,62077,62160,62246,
62292,62313,62317,4980, 62342,62346,61646,61647,61648,9422, 2108, 9027, 5483, 14462,11663,2004, 61650,343, 10098,574, 61652,9538, 61657,61658,61661,61662,61666,
- 345, 61667,61653,317, 61655,5032, 61654,61656,56278,317, 61659,490, 490, 61660,9573, 4211, 345, 61663,61665,4591, 61664,9695, 356, 379, 466, 2276, 317,
- 343, 371, 3422, 6294, 317, 61668,61670,61672,61673,61676,61678,61681,61682,61686,61690,2171, 61693,61698,61700,61701,61702,25114,317, 370, 61671,345, 490,
+ 345, 61667,61653,317, 61655,5032, 61654,61656,56278,317, 61659,490, 490, 61660,9573, 4211, 345, 61663,61665,4591, 61664,9695, 356, 379, 466, 2276, 317,
+ 343, 371, 3422, 6294, 317, 61668,61670,61672,61673,61676,61678,61681,61682,61686,61690,2171, 61693,61698,61700,61701,61702,25114,317, 370, 61671,345, 490,
371, 61674,61675,61677,61679,380, 317, 61680,20871,490, 6901, 317, 30310,14170,61683,5742, 61684,61685,10742,317, 61687,36541,61688,61689,61691,61692,61694,
61696,61695,371, 490, 61697,61699,6551, 2317, 1108, 490, 355, 6231, 61703,61704,61706,2058, 61708,1347, 61711,61713,61714,61716,61707,22599,362, 466, 61709,
- 362, 61710,10626,381, 61712,36871,466, 2310, 61715,5793, 343, 317, 476, 61717,350, 370, 317, 6917, 11147,7852, 61719,61720,61721,5897, 5138, 351, 5788,
+ 362, 61710,10626,381, 61712,36871,466, 2310, 61715,5793, 343, 317, 476, 61717,350, 370, 317, 6917, 11147,7852, 61719,61720,61721,5897, 5138, 351, 5788,
61723,61724,11619,2156, 490, 317, 61725,6138, 18848,61726,466, 8937, 61728,61729,61730,351, 5662, 404, 862, 949, 2035, 2077, 61732,9983, 61734,945, 61743,
- 61744,61750,61753,61733,14062,61735,6486, 61737,61740,61736,61738,363, 61739,317, 61741,61735,61742,466, 2571, 362, 363, 317, 8722, 317, 16277,24305,4965,
+ 61744,61750,61753,61733,14062,61735,6486, 61737,61740,61736,61738,363, 61739,317, 61741,61735,61742,466, 2571, 362, 363, 317, 8722, 317, 16277,24305,4965,
350, 381, 2236, 49766,61745,61747,350, 61746,317, 356, 10877,4591, 317, 2369, 61748,317, 61749,61751,2509, 590, 6409, 317, 61752,1027, 10130,61754,61755,
- 61756,50843,61758,6834, 19661,61765,61767,61769,345, 317, 61759,61762,61764,1160, 61760,61761,621, 1266, 317, 317, 317, 6228, 317, 516, 362, 61763,317,
+ 61756,50843,61758,6834, 19661,61765,61767,61769,345, 317, 61759,61762,61764,1160, 61760,61761,621, 1266, 317, 317, 317, 6228, 317, 516, 362, 61763,317,
61766,317, 5661, 3284, 13110,61768,4230, 61770,61779,61780,61781,350, 61790,61791,61792,61824,61826,61832,61847,61858,61866,61868,61872,61873,61874,33846,61771,
- 5624, 61772,61774,61775,61778,6402, 332, 371, 971, 317, 317, 345, 61773,332, 317, 11844,365, 20913,61776,7328, 61777,370, 20419,317, 5225, 356, 371,
+ 5624, 61772,61774,61775,61778,6402, 332, 371, 971, 317, 317, 345, 61773,332, 317, 11844,365, 20913,61776,7328, 61777,370, 20419,317, 5225, 356, 371,
971, 5838, 11346,8177, 363, 14561,351, 1194, 2631, 2171, 317, 317, 61782,7523, 490, 61785,61787,550, 61788,2211, 61783,363, 61784,61786,61789,17434,17434,
428, 621, 363, 61793,61801,61808,61809,61812,61814,61815,2396, 61816,61817,61822,61823,61794,61796,317, 61797,61798,317, 1358, 61795,317, 320, 317, 32079,
317, 1871, 317, 10619,345, 382, 15110,61799,61800,61802,61807,61803,61804,61805,61806,61810,3529, 317, 61811,61813,317, 317, 490, 317, 11844,362, 58447,
- 5909, 12849,20146,370, 2322, 596, 5570, 6755, 61818,61819,12803,343, 317, 317, 26029,18064,370, 2571, 61820,345, 7673, 10376,317, 5418, 61821,317, 317,
+ 5909, 12849,20146,370, 2322, 596, 5570, 6755, 61818,61819,12803,343, 317, 317, 26029,18064,370, 2571, 61820,345, 7673, 10376,317, 5418, 61821,317, 317,
5055, 1526, 7888, 365, 332, 365, 61825,317, 61827,61829,363, 61831,317, 3869, 317, 317, 61828,332, 61830,61833,61836,61837,5662, 2402, 61841,61842,61844,
- 61846,61834,317, 1325, 61835,332, 365, 317, 61838,61839,317, 24281,61840,2222, 317, 371, 317, 317, 317, 317, 61843,61845,317, 4267, 13296,5987, 332,
- 6228, 7606, 317, 590, 61848,61849,61850,61851,61852,61853,61854,61855,1143, 61856,61857,14361,633, 371, 61859,332, 61860,61863,23304,9573, 8301, 1345, 8722,
- 22828,61861,2317, 61862,61864,61865,381, 6486, 7072, 61867,363, 6412, 1160, 1358, 317, 5711, 61869,54452,2584, 317, 61870,61871,1459, 3375, 317, 2176, 5570,
+ 61846,61834,317, 1325, 61835,332, 365, 317, 61838,61839,317, 24281,61840,2222, 317, 371, 317, 317, 317, 317, 61843,61845,317, 4267, 13296,5987, 332,
+ 6228, 7606, 317, 590, 61848,61849,61850,61851,61852,61853,61854,61855,1143, 61856,61857,14361,633, 371, 61859,332, 61860,61863,23304,9573, 8301, 1345, 8722,
+ 22828,61861,2317, 61862,61864,61865,381, 6486, 7072, 61867,363, 6412, 1160, 1358, 317, 5711, 61869,54452,2584, 317, 61870,61871,1459, 3375, 317, 2176, 5570,
61875,9182, 61877,2146, 61893,61896,57489,61902,61909,61912,61920,61929,61935,61942,34510,61876,61878,61880,61886,61887,61892,61879,13595,1358, 61881,61882,13631,
- 61883,61884,61885,61888,61889,61890,61891,525, 2094, 349, 61894,61895,14418,3869, 61897,61899,61901,61898,380, 317, 427, 61900,545, 61903,61905,61904,7506,
+ 61883,61884,61885,61888,61889,61890,61891,525, 2094, 349, 61894,61895,14418,3869, 61897,61899,61901,61898,380, 317, 427, 61900,545, 61903,61905,61904,7506,
59422,317, 61906,61907,61908,317, 10738,61910,514, 61911,61913,61914,61917,317, 61919,61915,61916,59436,4591, 57130,61918,61921,61926,61927,61922,61923,61924,
- 61925,61928,61930,53917,8649, 61931,61932,61933,61934,9853, 965, 61936,61940,61937,61938,61939,61941,61944,61946,61947,2539, 61954,61955,61956,61958,61965,317,
- 23481,343, 15509,596, 61945,1347, 5428, 380, 4949, 317, 61948,2381, 61951,61949,61950,61952,6607, 11921,370, 61953,343, 5217, 1108, 317, 2146, 35192,2381,
+ 61925,61928,61930,53917,8649, 61931,61932,61933,61934,9853, 965, 61936,61940,61937,61938,61939,61941,61944,61946,61947,2539, 61954,61955,61956,61958,61965,317,
+ 23481,343, 15509,596, 61945,1347, 5428, 380, 4949, 317, 61948,2381, 61951,61949,61950,61952,6607, 11921,370, 61953,343, 5217, 1108, 317, 2146, 35192,2381,
35822,350, 5793, 61957,61959,61960,61962,5205, 61963,404, 11034,332, 61961,317, 317, 589, 351, 2537, 345, 61964,332, 345, 10188,370, 61967,61969,61972,
- 59319,61978,61982,61988,317, 61991,61993,62014,62015,61968,317, 61970,61971,53961,61973,61975,61977,345, 3646, 61974,349, 356, 466, 55557,317, 61976,380,
+ 59319,61978,61982,61988,317, 61991,61993,62014,62015,61968,317, 61970,61971,53961,61973,61975,61977,345, 3646, 61974,349, 356, 466, 55557,317, 61976,380,
61979,1160, 61980,61981,61983,61985,61984,317, 61986,61987,61989,61990,365, 2024, 350, 61992,20207,19434,61994,61998,13314,62002,62008,62009,317, 345, 62011,
61995,61996,61997,61999,62001,317, 317, 12225,62000,62003,317, 62004,2142, 22412,4591, 345, 1160, 14410,316, 317, 62005,62006,62007,5611, 427, 393, 25086,
5055, 21621,62010,62012,536, 62013,694, 390, 8301, 5005, 317, 12429,62017,62019,9170, 62020,6409, 62023,62025,62027,62028,62033,62035,62036,2022, 62037,62018,
- 317, 317, 62021,355, 62022,317, 6036, 62024,349, 1160, 1243, 8301, 44550,62026,466, 362, 12417,5428, 392, 1030, 390, 317, 2357, 1300, 2391, 62029,516,
+ 317, 317, 62021,355, 62022,317, 6036, 62024,349, 1160, 1243, 8301, 44550,62026,466, 362, 12417,5428, 392, 1030, 390, 317, 2357, 1300, 2391, 62029,516,
11089,62030,37568,62031,62032,427, 8301, 28196,7401, 370, 11236,2844, 62034,13683,351, 26065,949, 62039,62040,62043,554, 62044,62048,62050,62051,62053,62055,
62060,355, 62066,62067,62069,3987, 36538,381, 317, 362, 62041,62042,317, 8301, 317, 1481, 1345, 12108,19665,62045,62046,317, 1060, 20159,390, 62047,62049,
4984, 363, 479, 62052,363, 1347, 3284, 5836, 62054,381, 4576, 62056,396, 62057,62058,5836, 317, 339, 62059,4925, 2108, 317, 62061,62062,62063,317, 62065,
- 317, 317, 5105, 490, 11938,8488, 317, 1347, 9575, 62064,6228, 2584, 2077, 317, 55228,13914,62068,62070,62071,62075,4591, 345, 343, 1588, 62072,7765, 345,
+ 317, 317, 5105, 490, 11938,8488, 317, 1347, 9575, 62064,6228, 2584, 2077, 317, 55228,13914,62068,62070,62071,62075,4591, 345, 343, 1588, 62072,7765, 345,
62073,370, 62074,370, 10674,62078,62079,62080,62084,62085,62087,370, 62088,62089,62091,62103,62106,965, 62108,62112,62120,345, 62159,2537, 867, 62081,62083,
- 2272, 317, 13056,62082,1020, 5439, 6546, 490, 490, 317, 380, 62086,317, 317, 5828, 382, 2291, 19811,351, 2058, 62090,62092,62093,633, 8301, 15001,2077,
+ 2272, 317, 13056,62082,1020, 5439, 6546, 490, 490, 317, 380, 62086,317, 317, 5828, 382, 2291, 19811,351, 2058, 62090,62092,62093,633, 8301, 15001,2077,
511, 62094,362, 62096,5872, 55440,317, 10131,2277, 343, 62095,6228, 317, 633, 62097,362, 62102,62098,62099,5241, 62100,62101,1033, 339, 317, 4472, 62104,
- 345, 5836, 62105,25872,397, 62107,30499,62109,62110,62111,317, 490, 2142, 317, 990, 365, 317, 381, 62113,62116,62118,317, 62114,62115,317, 317, 317,
+ 345, 5836, 62105,25872,397, 62107,30499,62109,62110,62111,317, 490, 2142, 317, 990, 365, 317, 381, 62113,62116,62118,317, 62114,62115,317, 317, 317,
636, 317, 62117,317, 62119,62121,62124,62125,62128,62130,62133,2022, 62134,62136,62139,62142,32105,62145,62151,62154,6195, 62158,317, 22060,5840, 343, 62122,
- 62123,317, 2027, 345, 317, 61665,317, 317, 317, 62126,24281,4591, 62127,317, 345, 317, 9624, 7401, 317, 5037, 62129,62131,62132,24051,317, 54226,4965,
+ 62123,317, 2027, 345, 317, 61665,317, 317, 317, 62126,24281,4591, 62127,317, 345, 317, 9624, 7401, 317, 5037, 62129,62131,62132,24051,317, 54226,4965,
6937, 6763, 382, 5055, 55135,62135,370, 384, 356, 8722, 62137,62138,62140,62141,5032, 9422, 62143,62144,317, 317, 5328, 393, 62146,62150,62147,62149,62148,
412, 317, 1588, 4564, 356, 466, 317, 342, 490, 62152,62153,62155,343, 7062, 317, 5105, 62156,62157,2272, 2063, 46697,332, 62161,19507,62162,62163,62165,
62170,2022, 15031,62171,62174,62181,7577, 317, 2070, 317, 317, 317, 317, 351, 317, 62164,390, 16871,345, 317, 382, 317, 62166,317, 5570, 356, 62167,
- 5054, 317, 382, 62168,62169,5477, 21910,317, 317, 370, 2117, 345, 62172,3361, 62173,62175,62178,4984, 62180,380, 62176,62177,5464, 5847, 2510, 62179,371,
- 2219, 17943,6021, 62182,62185,62186,62189,62194,62199,62204,62207,62209,62213,62224,62225,62230,62234,62241,62244,565, 343, 62183,317, 62184,2193, 8642, 6354,
+ 5054, 317, 382, 62168,62169,5477, 21910,317, 317, 370, 2117, 345, 62172,3361, 62173,62175,62178,4984, 62180,380, 62176,62177,5464, 5847, 2510, 62179,371,
+ 2219, 17943,6021, 62182,62185,62186,62189,62194,62199,62204,62207,62209,62213,62224,62225,62230,62234,62241,62244,565, 343, 62183,317, 62184,2193, 8642, 6354,
398, 62187,41935,2156, 62188,62190,62191,62192,62193,317, 5105, 16672,317, 62195,62196,317, 317, 62197,370, 62198,10105,62200,62201,62203,62202,62205,62206,
317, 7834, 345, 4965, 62208,9649, 317, 62210,317, 62211,35704,317, 62212,62214,62215,62221,317, 371, 5450, 62216,62217,62218,62219,62220,62222,9804, 62223,
- 317, 62226,62228,62227,62229,62231,62232,9057, 62233,5763, 62235,62239,2551, 62236,62237,62238,62240,62242,62243,365, 41583,59527,62245,380, 1347, 466, 842,
+ 317, 62226,62228,62227,62229,62231,62232,9057, 62233,5763, 62235,62239,2551, 62236,62237,62238,62240,62242,62243,365, 41583,59527,62245,380, 1347, 466, 842,
62247,62256,62261,62269,62270,62272,9119, 62273,62276,62277,62278,62281,62291,1020, 373, 62248,62249,5655, 31866,62251,62252,62253,62250,62254,62255,62257,62258,
- 62259,62260,381, 10820,62262,62263,317, 62268,317, 370, 62264,490, 62265,62266,2381, 62267,40848,5226, 355, 350, 62271,317, 62274,317, 62275,338, 365,
- 365, 883, 343, 20166,27177,867, 317, 2586, 62279,62280,343, 3422, 33202,1915, 62282,62286,62288,62289,62290,343, 58436,54059,317, 62283,62284,62285,9059,
+ 62259,62260,381, 10820,62262,62263,317, 62268,317, 370, 62264,490, 62265,62266,2381, 62267,40848,5226, 355, 350, 62271,317, 62274,317, 62275,338, 365,
+ 365, 883, 343, 20166,27177,867, 317, 2586, 62279,62280,343, 3422, 33202,1915, 62282,62286,62288,62289,62290,343, 58436,54059,317, 62283,62284,62285,9059,
317, 2219, 2219, 62287,317, 596, 12057,317, 412, 3529, 2566, 6546, 10561,971, 5836, 317, 62293,62294,62295,2546, 317, 62300,317, 62305,550, 62308,62311,
- 62312,317, 317, 62296,62297,62298,62299,62301,62302,62303,345, 6046, 62304,339, 11962,317, 13190,393, 551, 404, 62306,62307,44550,380, 317, 10422,466,
- 16138,12641,356, 15058,62309,51097,317, 2406, 62310,2035, 9993, 30116,343, 317, 62314,2108, 62316,62315,397, 317, 62318,62319,62322,3988, 62335,62336,5241,
+ 62312,317, 317, 62296,62297,62298,62299,62301,62302,62303,345, 6046, 62304,339, 11962,317, 13190,393, 551, 404, 62306,62307,44550,380, 317, 10422,466,
+ 16138,12641,356, 15058,62309,51097,317, 2406, 62310,2035, 9993, 30116,343, 317, 62314,2108, 62316,62315,397, 317, 62318,62319,62322,3988, 62335,62336,5241,
62338,62339,62341,2402, 345, 62320,62321,317, 356, 7428, 370, 317, 317, 62323,62324,637, 6228, 317, 317, 1087, 317, 317, 2261, 62325,356, 10891,62327,
- 466, 62328,2052, 2673, 62331,317, 62334,18448,6736, 11654,62326,381, 367, 7785, 39532,62329,62330,343, 317, 62332,11617,3529, 62333,3987, 351, 62337,990,
- 317, 1347, 381, 317, 62340,7225, 351, 62343,350, 62345,7191, 14695,351, 62344,351, 363, 317, 351, 6551, 62347,62348,1347, 14883,62349,9623, 2124, 363,
+ 466, 62328,2052, 2673, 62331,317, 62334,18448,6736, 11654,62326,381, 367, 7785, 39532,62329,62330,343, 317, 62332,11617,3529, 62333,3987, 351, 62337,990,
+ 317, 1347, 381, 317, 62340,7225, 351, 62343,350, 62345,7191, 14695,351, 62344,351, 363, 317, 351, 6551, 62347,62348,1347, 14883,62349,9623, 2124, 363,
7850, 317, 62350,6651, 1787, 62352,62353,62357,2066, 62354,62355,317, 62356,62358,62359,62361,62362,62363,62364,62365,62366,62435,221, 222, 223, 63100,63120,
63122,63126,62367,62373,62379,62381,11838,62391,62396,62397,62400,62408,62411,62412,62413,2146, 62416,62422,62429,62430,62431,2163, 62432,62433,466, 380, 62368,
- 62369,62372,62370,317, 62371,317, 5223, 62374,62375,62376,5717, 62378,62377,5447, 466, 427, 373, 18675,317, 62380,362, 350, 317, 1060, 317, 317, 4925,
+ 62369,62372,62370,317, 62371,317, 5223, 62374,62375,62376,5717, 62378,62377,5447, 466, 427, 373, 18675,317, 62380,362, 350, 317, 1060, 317, 317, 4925,
3599, 317, 62382,350, 62384,62387,62383,62385,62386,62388,62389,62390,317, 351, 62392,343, 62393,62394,62395,317, 20509,317, 5711, 362, 317, 332, 55568,
62398,62399,466, 317, 317, 29521,62401,62402,62403,62404,62405,62406,62407,62409,545, 2036, 62410,370, 6188, 1358, 317, 356, 371, 2044, 62414,10926,10185,
- 62415,343, 363, 4965, 466, 62417,371, 62418,490, 62420,2222, 317, 62419,317, 6191, 62421,62423,15872,62424,350, 62425,490, 2022, 4965, 317, 62427,370,
- 5652, 317, 1459, 332, 2142, 62426,965, 62428,345, 472, 317, 489, 490, 501, 61987,317, 1347, 382, 10422,3999, 2402, 317, 2146, 371, 62434,490, 2279,
+ 62415,343, 363, 4965, 466, 62417,371, 62418,490, 62420,2222, 317, 62419,317, 6191, 62421,62423,15872,62424,350, 62425,490, 2022, 4965, 317, 62427,370,
+ 5652, 317, 1459, 332, 2142, 62426,965, 62428,345, 472, 317, 489, 490, 501, 61987,317, 1347, 382, 10422,3999, 2402, 317, 2146, 371, 62434,490, 2279,
596, 317, 62436,62437,62444,62447,62469,62500,62511,62526,62528,62534,62538,62543,62544,62554,62573,62582,62587,62598,62599,62608,62665,62676,62678,62685,62687,
- 62688,62438,317, 6504, 5737, 62440,62441,5223, 332, 62439,8020, 466, 317, 62442,62443,373, 62445,389, 343, 62446,62448,62451,62454,62456,62462,62464,4789,
- 62468,341, 62449,62450,381, 41868,5930, 2381, 2145, 62452,17358,62453,62455,5238, 5988, 62457,62458,62461,1109, 3573, 62459,343, 62460,23267,7834, 5324, 6382,
- 365, 399, 25696,62463,6108, 1347, 62188,62465,1999, 62466,5718, 62467,3649, 25361,62470,370, 62473,62482,2171, 62492,62493,3236, 62499,5054, 62471,5447, 5987,
+ 62688,62438,317, 6504, 5737, 62440,62441,5223, 332, 62439,8020, 466, 317, 62442,62443,373, 62445,389, 343, 62446,62448,62451,62454,62456,62462,62464,4789,
+ 62468,341, 62449,62450,381, 41868,5930, 2381, 2145, 62452,17358,62453,62455,5238, 5988, 62457,62458,62461,1109, 3573, 62459,343, 62460,23267,7834, 5324, 6382,
+ 365, 399, 25696,62463,6108, 1347, 62188,62465,1999, 62466,5718, 62467,3649, 25361,62470,370, 62473,62482,2171, 62492,62493,3236, 62499,5054, 62471,5447, 5987,
62472,62474,26135,62476,62479,62475,9141, 52847,62477,62478,62480,62481,62483,62487,62488,62484,62486,3854, 62485,5447, 434, 41483,356, 5847, 2510, 317, 62489,
- 62490,62491,1325, 41090,62494,8178, 62495,62496,62497,21048,62498,7640, 466, 62501,426, 62505,317, 5120, 62509,317, 62502,62503,62504,62506,62507,317, 6265,
- 62508,356, 21494,62510,62512,62516,62522,62524,62525,62513,9832, 447, 62514,62515,62517,62519,317, 62518,317, 34600,9482, 62520,3854, 5174, 317, 62521,2156,
- 30039,62523,7858, 24883,5556, 2060, 2368, 332, 350, 62527,317, 62529,62531,317, 317, 2004, 427, 62530,62532,41737,62533,62535,6021, 2108, 62536,4738, 350,
+ 62490,62491,1325, 41090,62494,8178, 62495,62496,62497,21048,62498,7640, 466, 62501,426, 62505,317, 5120, 62509,317, 62502,62503,62504,62506,62507,317, 6265,
+ 62508,356, 21494,62510,62512,62516,62522,62524,62525,62513,9832, 447, 62514,62515,62517,62519,317, 62518,317, 34600,9482, 62520,3854, 5174, 317, 62521,2156,
+ 30039,62523,7858, 24883,5556, 2060, 2368, 332, 350, 62527,317, 62529,62531,317, 317, 2004, 427, 62530,62532,41737,62533,62535,6021, 2108, 62536,4738, 350,
350, 62537,2222, 317, 12934,362, 38877,62539,62540,62541,62542,5447, 433, 350, 52092,62545,62547,62550,16804,62551,62546,62548,62549,317, 62552,62553,62555,
- 16854,62557,62560,62565,62571,28795,2143, 62556,6923, 7990, 62558,317, 62559,62561,2219, 1347, 9832, 62563,62562,317, 5447, 466, 9139, 62564,13914,62566,5365,
+ 16854,62557,62560,62565,62571,28795,2143, 62556,6923, 7990, 62558,317, 62559,62561,2219, 1347, 9832, 62563,62562,317, 5447, 466, 9139, 62564,13914,62566,5365,
62567,62568,62569,62570,62572,62574,343, 62575,350, 490, 62578,62580,62576,62577,317, 62579,62581,62583,566, 62584,4045, 62585,62586,5365, 1526, 62588,62591,
62595,62596,356, 62589,21669,62590,466, 62592,62594,24884,62593,21690,14983,62597,22163,48488,62600,62606,62601,62603,62602,62604,62605,62607,317, 62609,62610,
- 62616,62623,62632,5611, 62633,62640,62641,62643,1044, 490, 965, 62644,62650,62659,62239,1526, 5788, 317, 62611,62612,62613,62614,62615,317, 317, 8395, 345,
- 62617,3854, 62620,62621,62618,62619,62622,5717, 5553, 2551, 62624,62625,62627,1347, 26103,317, 2156, 62626,5254, 10422,466, 370, 317, 363, 62628,62629,8136,
+ 62616,62623,62632,5611, 62633,62640,62641,62643,1044, 490, 965, 62644,62650,62659,62239,1526, 5788, 317, 62611,62612,62613,62614,62615,317, 317, 8395, 345,
+ 62617,3854, 62620,62621,62618,62619,62622,5717, 5553, 2551, 62624,62625,62627,1347, 26103,317, 2156, 62626,5254, 10422,466, 370, 317, 363, 62628,62629,8136,
466, 62630,62631,9782, 2156, 5238, 62634,62635,62639,317, 62636,317, 5201, 62637,62638,317, 433, 317, 44056,6036, 62642,32092,428, 428, 10559,62645,62646,
- 22079,362, 3987, 363, 62647,6089, 7035, 10878,62648,5447, 62649,382, 1526, 7888, 62651,9450, 62652,2022, 62655,62657,62658,317, 990, 62653,332, 9422, 317,
- 62654,62656,22912,7368, 24638,2063, 62660,62663,2715, 41438,5447, 466, 62661,62662,5221, 5727, 62664,317, 62666,317, 2402, 62670,498, 62671,317, 62674,363,
+ 22079,362, 3987, 363, 62647,6089, 7035, 10878,62648,5447, 62649,382, 1526, 7888, 62651,9450, 62652,2022, 62655,62657,62658,317, 990, 62653,332, 9422, 317,
+ 62654,62656,22912,7368, 24638,2063, 62660,62663,2715, 41438,5447, 466, 62661,62662,5221, 5727, 62664,317, 62666,317, 2402, 62670,498, 62671,317, 62674,363,
62667,62669,381, 343, 25609,62668,6108, 1347, 5054, 62672,350, 62673,317, 49168,4249, 362, 62675,2117, 2117, 62677,62679,62680,62683,62684,22809,6265, 10820,
62681,381, 11962,490, 62682,41731,356, 9130, 317, 317, 32673,317, 7834, 5226, 343, 351, 62686,2117, 510, 317, 381, 5991, 466, 351, 317, 317, 62689,
- 5241, 62690,62692,62695,62713,62718,62723,62724,536, 62725,62727,62745,62761,19872,62768,62778,345, 62786,317, 62797,62799,317, 317, 62691,62693,389, 343,
+ 5241, 62690,62692,62695,62713,62718,62723,62724,536, 62725,62727,62745,62761,19872,62768,62778,345, 62786,317, 62797,62799,317, 317, 62691,62693,389, 343,
2402, 554, 380, 62694,343, 62696,62710,62711,62712,317, 317, 2571, 317, 317, 62697,317, 62698,62699,62700,62701,62702,62703,62704,62705,62706,62707,62708,
- 62709,551, 2117, 20496,11897,317, 370, 62714,62715,554, 317, 2171, 62717,317, 7990, 317, 2171, 317, 62716,317, 363, 381, 343, 317, 1998, 62719,317,
+ 62709,551, 2117, 20496,11897,317, 370, 62714,62715,554, 317, 2171, 62717,317, 7990, 317, 2171, 317, 62716,317, 363, 381, 343, 317, 1998, 62719,317,
317, 62720,5611, 351, 343, 6596, 317, 62721,62722,6089, 5661, 317, 1358, 2171, 1060, 62726,62728,62732,62736,2222, 62739,511, 5956, 62744,11636,13323,62729,
317, 2156, 62731,317, 62730,317, 317, 11144,317, 12001,10375,317, 62733,433, 62734,62735,5570, 382, 62737,62738,317, 62740,62743,317, 8178, 62741,62742,
- 498, 343, 2317, 343, 490, 317, 1160, 62746,62754,317, 23192,62755,317, 62756,62757,62759,62747,62750,5942, 317, 740, 426, 370, 345, 62748,6382, 5612,
- 317, 381, 62749,7567, 62751,62752,1347, 490, 9832, 62753,7865, 345, 5200, 370, 317, 428, 15510,343, 370, 23072,410, 62758,10877,31894,9479, 317, 1060,
- 317, 317, 317, 5737, 6420, 317, 62760,382, 33467,343, 62762,1347, 62764,62763,317, 17768,2715, 317, 4944, 62765,317, 317, 345, 62766,62767,317, 345,
+ 498, 343, 2317, 343, 490, 317, 1160, 62746,62754,317, 23192,62755,317, 62756,62757,62759,62747,62750,5942, 317, 740, 426, 370, 345, 62748,6382, 5612,
+ 317, 381, 62749,7567, 62751,62752,1347, 490, 9832, 62753,7865, 345, 5200, 370, 317, 428, 15510,343, 370, 23072,410, 62758,10877,31894,9479, 317, 1060,
+ 317, 317, 317, 5737, 6420, 317, 62760,382, 33467,343, 62762,1347, 62764,62763,317, 17768,2715, 317, 4944, 62765,317, 317, 345, 62766,62767,317, 345,
1526, 10674,2275, 62769,47011,317, 62772,62773,1345, 62775,317, 62770,317, 345, 62771,10217,317, 7785, 62774,24304,2510, 317, 62776,62777,5793, 427, 62779,
- 62782,1347, 62785,62780,551, 62781,380, 317, 5223, 62783,62784,62787,62793,62795,2117, 317, 370, 332, 5295, 62788,62789,62791,62792,2317, 62790,317, 317,
+ 62782,1347, 62785,62780,551, 62781,380, 317, 5223, 62783,62784,62787,62793,62795,2117, 317, 370, 332, 5295, 62788,62789,62791,62792,2317, 62790,317, 317,
14537,370, 317, 3079, 7888, 10674,62794,949, 371, 1358, 62796,7514, 62798,27238,1481, 62800,332, 62801,365, 317, 30300,317, 62802,62803,62804,62820,62845,
62861,62862,62883,62901,62907,62908,62913,62917,62931,62953,62960,62964,28974,62996,62998,63033,63067,63069,63093,63095,19744,63099,21833,332, 418, 62805,62814,
62815,62816,62819,381, 345, 317, 62806,5428, 62810,62807,6021, 62808,62809,2094, 5201, 317, 62811,62812,62813,317, 381, 5223, 317, 317, 382, 6163, 62817,
- 62818,50042,317, 317, 62821,62823,62831,10506,27058,62833,62836,62838,433, 62841,62843,404, 62822,62824,62825,62826,490, 62829,62827,62828,62830,317, 5464,
- 21470,2510, 62832,2402, 317, 1481, 1481, 62834,62835,345, 30514,6425, 317, 62837,12795,62839,28767,62840,351, 62842,40625,1347, 62844,2145, 5019, 466, 363,
+ 62818,50042,317, 317, 62821,62823,62831,10506,27058,62833,62836,62838,433, 62841,62843,404, 62822,62824,62825,62826,490, 62829,62827,62828,62830,317, 5464,
+ 21470,2510, 62832,2402, 317, 1481, 1481, 62834,62835,345, 30514,6425, 317, 62837,12795,62839,28767,62840,351, 62842,40625,1347, 62844,2145, 5019, 466, 363,
5174, 62846,62848,62849,62850,62847,380, 31029,1160, 7852, 332, 434, 17434,382, 62851,21518,62852,466, 62859,317, 62853,317, 62854,317, 5773, 62855,62856,
62857,62858,62860,317, 380, 748, 6204, 317, 62863,62865,62875,62876,62880,62882,365, 62864,883, 317, 5200, 490, 62866,490, 459, 351, 62867,5464, 62868,
- 62874,382, 62869,62870,62871,11362,317, 62872,62873,370, 317, 17917,14535,62877,20589,62878,41483,62879,466, 317, 317, 62881,332, 25572,4773, 62884,7401,
- 317, 62888,363, 62891,62885,62886,12957,317, 62887,7088, 363, 62889,62890,62892,62896,62893,317, 466, 62894,317, 62895,5394, 466, 373, 401, 62897,317,
- 62898,5464, 62899,382, 5055, 62900,5477, 5343, 27851,62902,62906,62903,62904,62905,356, 21153,317, 62909,62910,381, 317, 62911,317, 356, 62912,2510, 317,
+ 62874,382, 62869,62870,62871,11362,317, 62872,62873,370, 317, 17917,14535,62877,20589,62878,41483,62879,466, 317, 317, 62881,332, 25572,4773, 62884,7401,
+ 317, 62888,363, 62891,62885,62886,12957,317, 62887,7088, 363, 62889,62890,62892,62896,62893,317, 466, 62894,317, 62895,5394, 466, 373, 401, 62897,317,
+ 62898,5464, 62899,382, 5055, 62900,5477, 5343, 27851,62902,62906,62903,62904,62905,356, 21153,317, 62909,62910,381, 317, 62911,317, 356, 62912,2510, 317,
2156, 382, 5515, 343, 30249,345, 62914,2108, 62916,62915,317, 317, 62918,62919,62924,62929,2027, 393, 62920,62921,62922,62923,62925,36314,62926,7222, 62927,
62928,7028, 62930,62932,62936,62939,62949,317, 62951,62933,317, 62934,62935,21046,62937,62938,5447, 466, 447, 317, 33232,317, 20629,348, 317, 62940,10196,
- 5394, 62941,382, 62942,62943,62944,380, 317, 62945,62946,62947,62948,62950,5991, 466, 370, 317, 62952,19894,317, 62954,363, 317, 62955,332, 62958,5991,
+ 5394, 62941,382, 62942,62943,62944,380, 317, 62945,62946,62947,62948,62950,5991, 466, 370, 317, 62952,19894,317, 62954,363, 317, 62955,332, 62958,5991,
8948, 317, 317, 504, 741, 62956,9590, 62957,62959,62961,356, 466, 62962,317, 62963,62965,62971,62975,62980,14316,62991,5223, 62995,36217,62966,343, 62967,
- 62968,62970,62969,317, 43834,5447, 5987, 351, 62972,13944,62974,317, 62973,317, 4267, 10422,466, 62976,381, 8151, 5201, 62977,62978,317, 62979,339, 317,
+ 62968,62970,62969,317, 43834,5447, 5987, 351, 62972,13944,62974,317, 62973,317, 4267, 10422,466, 62976,381, 8151, 5201, 62977,62978,317, 62979,339, 317,
317, 38563,536, 5399, 62981,62987,5336, 62982,62983,62984,62985,62986,356, 317, 18675,5550, 4564, 5447, 62988,382, 62989,62990,62992,317, 62993,317, 62994,
- 448, 39546,317, 62997,53322,317, 62999,63000,63002,63010,370, 63012,63013,2222, 63019,63032,33717,317, 63001,20354,63003,63006,2391, 20372,63004,63005,1325,
- 5113, 21886,63007,63008,63009,427, 511, 63011,343, 501, 5836, 498, 8470, 401, 2163, 380, 63014,63015,381, 63017,63016,356, 5395, 2510, 317, 345, 356,
+ 448, 39546,317, 62997,53322,317, 62999,63000,63002,63010,370, 63012,63013,2222, 63019,63032,33717,317, 63001,20354,63003,63006,2391, 20372,63004,63005,1325,
+ 5113, 21886,63007,63008,63009,427, 511, 63011,343, 501, 5836, 498, 8470, 401, 2163, 380, 63014,63015,381, 63017,63016,356, 5395, 2510, 317, 345, 356,
63018,6387, 317, 382, 370, 63020,63025,63026,63028,63030,63031,63021,8231, 63022,63023,63024,63027,34487,5748, 63029,24698,539, 63034,63038,63054,63055,63056,
- 63064,450, 36697,7949, 63035,363, 332, 63037,63036,8081, 348, 63039,63041,25953,63046,63048,55765,63050,345, 7792, 317, 63040,63042,10172,63043,63044,317,
- 1992, 30609,343, 63045,63047,23500,38438,63049,317, 8440, 63051,63052,10422,466, 1033, 317, 63053,25362,867, 4554, 332, 390, 317, 1915, 63057,40345,2033,
- 1347, 63059,351, 63063,63058,63060,63061,1347, 63062,63065,63066,5717, 5167, 63068,317, 316, 33398,1345, 24398,11716,404, 370, 63070,63071,63076,63089,373,
- 9095, 883, 971, 7990, 317, 63072,63075,317, 523, 63073,317, 63074,380, 317, 350, 332, 63077,605, 63081,63085,381, 63078,63080,317, 63079,1347, 317,
+ 63064,450, 36697,7949, 63035,363, 332, 63037,63036,8081, 348, 63039,63041,25953,63046,63048,55765,63050,345, 7792, 317, 63040,63042,10172,63043,63044,317,
+ 1992, 30609,343, 63045,63047,23500,38438,63049,317, 8440, 63051,63052,10422,466, 1033, 317, 63053,25362,867, 4554, 332, 390, 317, 1915, 63057,40345,2033,
+ 1347, 63059,351, 63063,63058,63060,63061,1347, 63062,63065,63066,5717, 5167, 63068,317, 316, 33398,1345, 24398,11716,404, 370, 63070,63071,63076,63089,373,
+ 9095, 883, 971, 7990, 317, 63072,63075,317, 523, 63073,317, 63074,380, 317, 350, 332, 63077,605, 63081,63085,381, 63078,63080,317, 63079,1347, 317,
7098, 317, 4984, 382, 63082,1347, 317, 317, 317, 63083,63084,63086,317, 490, 63087,63088,5701, 356, 466, 317, 63090,5717, 7035, 393, 22542,317, 63091,
- 63092,1444, 21036,2369, 63094,34170,1358, 63096,317, 345, 63097,63098,397, 317, 63101,63103,63109,26065,390, 63112,2503, 317, 63113,63115,63116,63118,6318,
- 63119,63102,433, 501, 63104,63107,427, 317, 63105,317, 5819, 63106,317, 433, 370, 63108,63110,63111,2117, 5223, 317, 63114,15058,370, 345, 590, 1109,
+ 63092,1444, 21036,2369, 63094,34170,1358, 63096,317, 345, 63097,63098,397, 317, 63101,63103,63109,26065,390, 63112,2503, 317, 63113,63115,63116,63118,6318,
+ 63119,63102,433, 501, 63104,63107,427, 317, 63105,317, 5819, 63106,317, 433, 370, 63108,63110,63111,2117, 5223, 317, 63114,15058,370, 345, 590, 1109,
2381, 317, 317, 371, 317, 490, 11347,13638,8213, 317, 63117,1108, 2402, 351, 317, 450, 63121,2117, 63123,343, 343, 4965, 466, 2272, 351, 63124,63125,
63127,63130,63141,63128,63129,63131,2503, 63133,63136,36917,63139,63132,371, 63134,63135,63137,63138,63140,9573, 450, 63142,35333,63145,63143,14806,45844,63144,
- 320, 63147,63153,63157,63158,63159,63158,63160,63158,63163,63166,63189,8281, 365, 63196,63198,363, 63199,63200,63203,63251,63148,1277, 63150,30285,63152,317,
- 63149,620, 619, 63151,619, 30285,63154,740, 63150,63155,619, 30285,63156,619, 740, 63150,63152,619, 63152,619, 63150,619, 63161,63162,317, 63164,1347,
+ 320, 63147,63153,63157,63158,63159,63158,63160,63158,63163,63166,63189,8281, 365, 63196,63198,363, 63199,63200,63203,63251,63148,1277, 63150,30285,63152,317,
+ 63149,620, 619, 63151,619, 30285,63154,740, 63150,63155,619, 30285,63156,619, 740, 63150,63152,619, 63152,619, 63150,619, 63161,63162,317, 63164,1347,
63165,350, 63167,345, 63168,63169,63170,10664,63171,20623,63175,63176,63178,63181,63183,63188,63172,63173,63174,63177,63179,63180,63182,63184,63185,63186,63187,
343, 10069,8170, 63190,63194,317, 63195,63191,63192,59217,63193,317, 7043, 63197,1347, 317, 381, 317, 551, 63201,63202,63204,63249,63250,63205,317, 63206,
63209,63212,63215,63207,63208,63210,5700, 63211,63213,63214,317, 51326,63216,63222,63224,8681, 63225,63230,63231,63239,63242,4788, 63217,63218,63219,63220,63221,
- 9547, 343, 63223,2546, 8926, 13945,63226,63229,63227,63228,8815, 2145, 63232,63235,63233,63234,339, 10252,317, 317, 63236,63237,63238,63240,345, 63241,498,
- 5640, 63243,5732, 63248,63244,63245,63246,63247,19562,6514, 317, 490, 9825, 63253,63257,63258,63270,63274,1912, 63276,63277,356, 1791, 63281,971, 317, 317,
+ 9547, 343, 63223,2546, 8926, 13945,63226,63229,63227,63228,8815, 2145, 63232,63235,63233,63234,339, 10252,317, 317, 63236,63237,63238,63240,345, 63241,498,
+ 5640, 63243,5732, 63248,63244,63245,63246,63247,19562,6514, 317, 490, 9825, 63253,63257,63258,63270,63274,1912, 63276,63277,356, 1791, 63281,971, 317, 317,
63254,63255,63256,14561,63259,63260,63261,63269,63262,57555,63265,63263,63264,21786,63266,63267,63268,63271,63272,63273,63275,63278,2022, 63279,63280,63282,63283,
63284,63285,63286,317, 63287,63302,63312,63323,63332,63344,63349,63352,63355,63356,63359,63390,63402,63436,63437,63443,63499,63520,63541,63542,63544,1042, 63288,
22685,63292,1526, 317, 397, 63289,63290,63291,63293,63294,965, 26662,345, 317, 63295,63299,63300,370, 317, 317, 63296,63297,63298,418, 317, 5167, 63301,
370, 5441, 1325, 466, 1347, 11986,63303,11855,63305,63308,63309,6993, 63304,20207,60502,317, 63306,63307,63310,63311,2184, 5223, 2334, 355, 63313,11663,63318,
11346,466, 2022, 63319,63314,63316,2156, 317, 63315,317, 63317,61976,63320,63321,63322,63324,7865, 2298, 17677,20245,63325,2022, 22641,63329,63326,1347, 63327,
- 63328,63330,63331,63333,63340,543, 63334,63335,63337,317, 1160, 317, 63336,317, 381, 63338,63339,317, 317, 63341,63342,63343,63345,2077, 63346,317, 363,
- 63347,2609, 27199,3387, 63348,44088,393, 365, 2381, 317, 7949, 63350,63351,6993, 63353,317, 63354,490, 343, 2368, 23883,490, 4564, 317, 63357,63358,317,
+ 63328,63330,63331,63333,63340,543, 63334,63335,63337,317, 1160, 317, 63336,317, 381, 63338,63339,317, 317, 63341,63342,63343,63345,2077, 63346,317, 363,
+ 63347,2609, 27199,3387, 63348,44088,393, 365, 2381, 317, 7949, 63350,63351,6993, 63353,317, 63354,490, 343, 2368, 23883,490, 4564, 317, 63357,63358,317,
37152,7850, 1992, 63360,63361,63363,63364,63365,554, 63366,63368,63370,63376,1347, 63380,965, 63382,63386,63387,350, 2081, 5428, 3284, 317, 370, 63362,46591,
- 490, 332, 317, 490, 3750, 351, 551, 2022, 63367,343, 332, 317, 1135, 5890, 44631,63369,63371,1194, 63372,63373,362, 63374,317, 63375,317, 317, 357,
+ 490, 332, 317, 490, 3750, 351, 551, 2022, 63367,343, 332, 317, 1135, 5890, 44631,63369,63371,1194, 63372,63373,362, 63374,317, 63375,317, 317, 357,
1109, 317, 317, 1347, 317, 1347, 5332, 317, 26123,317, 63377,63378,63379,63381,317, 6089, 63383,5447, 63385,1347, 63384,46013,31999,317, 9573, 317, 63388,
63389,8557, 6203, 63391,63392,63393,1020, 63394,63397,6974, 317, 63395,428, 63396,5991, 63398,63399,63400,317, 448, 2022, 1992, 2705, 363, 63401,63403,63404,
63410,9657, 63411,488, 63412,63418,63420,511, 317, 317, 63426,63432,317, 332, 589, 1444, 5838, 63405,63407,9443, 63406,466, 2271, 317, 42197,63408,63409,
5717, 365, 4268, 1194, 317, 2369, 536, 317, 63413,63414,63416,63415,410, 12925,466, 5399, 63417,63419,476, 351, 10476,63421,63422,317, 32024,384, 63423,
63424,63425,2036, 63427,63429,63431,4952, 317, 317, 382, 63428,317, 63430,63433,63434,63435,2322, 44631,63438,388, 4564, 1020, 317, 63439,12668,514, 63440,
- 43090,317, 63442,317, 63441,63444,63447,63448,63452,63453,63456,63457,63459,63467,8392, 63470,63471,63473,63482,63483,63488,63491,63495,1020, 12429,63498,317,
+ 43090,317, 63442,317, 63441,63444,63447,63448,63452,63453,63456,63457,63459,63467,8392, 63470,63471,63473,63482,63483,63488,63491,63495,1020, 12429,63498,317,
63445,7823, 370, 2187, 63446,339, 317, 384, 12291,63449,63450,63451,370, 10476,5332, 11564,317, 2247, 63454,12691,4982, 370, 63455,317, 381, 63458,20539,
466, 404, 41998,63460,317, 63462,63463,63464,63461,370, 2184, 5488, 10422,317, 317, 2067, 404, 2845, 1347, 63465,317, 63466,28417,317, 63468,16024,63469,
- 2551, 381, 317, 12642,345, 317, 428, 40385,317, 63472,63474,63476,63481,63475,389, 637, 8258, 317, 317, 633, 1155, 63477,63479,317, 63478,6028, 466,
- 317, 63480,434, 317, 10891,370, 317, 63484,63485,17919,63486,3987, 6266, 5394, 63487,382, 1347, 2368, 63489,428, 63490,317, 59020,5241, 63492,63493,317,
+ 2551, 381, 317, 12642,345, 317, 428, 40385,317, 63472,63474,63476,63481,63475,389, 637, 8258, 317, 317, 633, 1155, 63477,63479,317, 63478,6028, 466,
+ 317, 63480,434, 317, 10891,370, 317, 63484,63485,17919,63486,3987, 6266, 5394, 63487,382, 1347, 2368, 63489,428, 63490,317, 59020,5241, 63492,63493,317,
63494,317, 63496,63497,317, 12958,523, 605, 596, 317, 380, 11146,63500,46568,370, 63501,63508,63510,317, 63512,317, 370, 971, 63502,48475,8020, 63503,
63504,63505,63507,490, 2063, 317, 1992, 882, 317, 63506,63509,63511,6036, 2156, 370, 63513,63514,24695,317, 63515,317, 1353, 317, 317, 63516,16626,20591,
8125, 433, 2631, 63517,362, 317, 317, 621, 343, 2107, 370, 63518,61116,63519,1347, 5126, 63521,1459, 63525,63527,18406,362, 63532,63533,63534,7940, 63536,
63539,63540,363, 59178,63522,63523,5241, 11831,21834,317, 63524,63526,63528,3529, 63529,63530,63531,24192,370, 63535,356, 63537,351, 19284,363, 317, 63538,
317, 7805, 63543,565, 317, 317, 63545,4984, 33469,490, 63547,63549,63548,63551,2387, 63553,63552,63555,63556,63557,63559,63561,63563,63564,63568,63571,63573,
343, 63574,63576,63577,63580,63581,63598,63599,33549,3987, 351, 13638,63560,381, 63562,2117, 63565,317, 574, 63566,63567,2533, 351, 63569,63570,427, 19578,
- 63572,12588,596, 317, 34149,2012, 63575,44630,1347, 365, 317, 10480,1347, 63578,351, 63579,63582,741, 63587,2086, 63590,8254, 63592,63596,63597,35429,5481,
- 63583,7577, 63584,317, 345, 63585,317, 317, 380, 63586,317, 63588,63589,2271, 63591,343, 42074,23107,52146,317, 58241,317, 63593,15540,63594,63595,380,
+ 63572,12588,596, 317, 34149,2012, 63575,44630,1347, 365, 317, 10480,1347, 63578,351, 63579,63582,741, 63587,2086, 63590,8254, 63592,63596,63597,35429,5481,
+ 63583,7577, 63584,317, 345, 63585,317, 317, 380, 63586,317, 63588,63589,2271, 63591,343, 42074,23107,52146,317, 58241,317, 63593,15540,63594,63595,380,
63600,332, 63605,63601,11809,20684,63602,63603,63604,8296, 63606,63608,63609,63610,63648,63654,63656,1242, 63659,63661,63665,63667,63727,63729,63737,63739,63744,
63747,63749,63751,63767,63775,6402, 63778,63787,63806,63809,226, 64038,64041,64104,63611,63614,63623,63626,63632,63612,63613,63615,63620,949, 63616,63617,63618,
317, 63619,317, 63621,63622,63624,63625,63627,63628,63629,63630,63631,1080, 63633,63634,63635,63636,63637,63638,63639,63640,63641,63642,63643,63644,63645,63646,
63647,1111, 63649,63650,63651,63652,63653,63655,63657,63658,4881, 63660,63662,63663,63664,63666,63668,63669,6935, 63670,63671,11833,565, 63672,565, 63674,23183,
- 63675,63677,63680,3429, 63681,63689,63690,350, 24310,365, 3611, 63673,390, 63676,4925, 317, 3236, 317, 343, 490, 63678,15766,317, 63679,1526, 6334, 396,
+ 63675,63677,63680,3429, 63681,63689,63690,350, 24310,365, 3611, 63673,390, 63676,4925, 317, 3236, 317, 343, 490, 63678,15766,317, 63679,1526, 6334, 396,
63682,13457,63683,63684,949, 63685,63686,63687,63688,317, 315, 741, 63691,63698,936, 767, 63702,317, 2464, 8224, 63705,63707,1020, 63710,63719,4336, 63692,
63696,63693,315, 1251, 2462, 63694,63695,63697,63699,63700,63701,63703,63704,63706,343, 63708,63709,317, 63711,63712,63713,317, 63714,317, 5071, 63715,63716,
1266, 63717,63718,63720,351, 63722,51456,63721,63723,1266, 5942, 63724,63725,63726,949, 19097,1999, 63728,63730,63731,63732,63734,63733,63735,63736,63738,63740,
@@ -10943,48 +10938,48 @@ static const unsigned int ChildLocs[185261] =
25970,2178, 317, 343, 6578, 63842,63843,523, 370, 363, 63845,466, 317, 317, 317, 63824,6468, 317, 63847,1345, 6599, 63848,6578, 345, 317, 63849,63851,
63850,2184, 21833,596, 1160, 390, 343, 63854,317, 317, 63855,63856,63864,448, 12731,317, 317, 63857,317, 1548, 63860,8023, 45496,63858,63859,332, 63861,
63863,7888, 63862,2184, 410, 5488, 8020, 21833,596, 317, 63865,63866,63868,23178,1347, 596, 45011,63871,63875,63869,63870,317, 25651,317, 63872,17897,63874,
- 63873,356, 466, 5487, 16931,63876,63877,63885,317, 63886,63887,63878,1347, 5960, 10487,356, 63879,466, 370, 63883,317, 63880,63881,63882,63884,6188, 317,
- 349, 317, 36710,2510, 7618, 63889,63890,20509,356, 343, 2584, 63891,63893,63896,63901,2146, 63894,317, 5872, 63895,448, 5054, 63897,63898,317, 5055, 332,
+ 63873,356, 466, 5487, 16931,63876,63877,63885,317, 63886,63887,63878,1347, 5960, 10487,356, 63879,466, 370, 63883,317, 63880,63881,63882,63884,6188, 317,
+ 349, 317, 36710,2510, 7618, 63889,63890,20509,356, 343, 2584, 63891,63893,63896,63901,2146, 63894,317, 5872, 63895,448, 5054, 63897,63898,317, 5055, 332,
20310,63899,63900,63902,63903,2211, 63904,317, 11388,343, 317, 343, 12417,63908,63911,19833,63916,63918,63929,490, 63930,317, 63933,28795,63935,63942,63947,
63953,5608, 63954,1345, 63909,317, 370, 63910,428, 63912,63915,63913,9303, 1033, 63914,63917,317, 2022, 63919,63928,1347, 317, 63920,63923,4965, 343, 63924,
- 317, 317, 63921,63922,343, 7064, 317, 63925,16112,10641,63926,63927,11782,1230, 7590, 867, 448, 390, 2610, 63931,317, 63932,466, 63934,17955,9064, 490,
- 12732,63936,63938,63939,1347, 5661, 63940,2184, 63937,345, 2086, 17883,5611, 5464, 317, 317, 63941,2004, 23078,23078,15066,317, 63943,317, 63944,7073, 351,
+ 317, 317, 63921,63922,343, 7064, 317, 63925,16112,10641,63926,63927,11782,1230, 7590, 867, 448, 390, 2610, 63931,317, 63932,466, 63934,17955,9064, 490,
+ 12732,63936,63938,63939,1347, 5661, 63940,2184, 63937,345, 2086, 17883,5611, 5464, 317, 317, 63941,2004, 23078,23078,15066,317, 63943,317, 63944,7073, 351,
61418,63945,63946,410, 356, 466, 12275,317, 15117,63948,63949,63950,63951,19194,63952,36641,466, 63955,63956,363, 1109, 1588, 63958,63960,63962,63969,63970,
- 63972,54831,63973,63975,63978,63983,63984,64005,965, 64006,64012,64013,64017,64018,64019,63959,490, 332, 373, 13338,63961,23819,63963,317, 63964,343, 6021,
- 2571, 63965,4789, 317, 317, 5363, 317, 381, 63966,370, 63967,63968,345, 16620,351, 2022, 317, 317, 332, 28548,63971,317, 24398,2022, 370, 362, 317,
+ 63972,54831,63973,63975,63978,63983,63984,64005,965, 64006,64012,64013,64017,64018,64019,63959,490, 332, 373, 13338,63961,23819,63963,317, 63964,343, 6021,
+ 2571, 63965,4789, 317, 317, 5363, 317, 381, 63966,370, 63967,63968,345, 16620,351, 2022, 317, 317, 332, 28548,63971,317, 24398,2022, 370, 362, 317,
345, 8083, 2022, 63974,63976,63977,46516,345, 63979,63981,596, 363, 32258,365, 40712,63980,363, 45787,63982,362, 317, 54827,1992, 370, 381, 350, 63985,
370, 63986,2537, 63987,2272, 317, 63988,63990,63992,63993,365, 397, 3505, 53186,5241, 317, 43566,317, 363, 370, 63989,317, 371, 362, 317, 363, 14174,
- 63991,317, 8968, 63994,63996,64001,21269,317, 64002,2272, 363, 317, 63995,356, 317, 4965, 15071,317, 1109, 317, 9595, 63997,1347, 63998,63999,64000,343,
- 30039,64003,317, 64004,64007,317, 64008,22699,64011,574, 317, 574, 64009,363, 380, 64010,317, 317, 345, 23078,511, 343, 317, 64014,362, 317, 317,
+ 63991,317, 8968, 63994,63996,64001,21269,317, 64002,2272, 363, 317, 63995,356, 317, 4965, 15071,317, 1109, 317, 9595, 63997,1347, 63998,63999,64000,343,
+ 30039,64003,317, 64004,64007,317, 64008,22699,64011,574, 317, 574, 64009,363, 380, 64010,317, 317, 345, 23078,511, 343, 317, 64014,362, 317, 317,
64015,64016,2510, 3999, 350, 2291, 2291, 14537,1108, 8230, 565, 19922,363, 64020,6334, 362, 64024,60804,317, 317, 18244,64026,64027,345, 64028,64031,64029,
- 5447, 317, 64030,4267, 382, 50012,64033,6851, 317, 32468,5746, 389, 64035,64039,64040,64042,19187,64045,64050,64101,64103,64043,64044,49086,605, 64046,351,
+ 5447, 317, 64030,4267, 382, 50012,64033,6851, 317, 32468,5746, 389, 64035,64039,64040,64042,19187,64045,64050,64101,64103,64043,64044,49086,605, 64046,351,
64047,64048,1300, 64049,605, 339, 3230, 64051,936, 866, 736, 64055,64060,1276, 958, 64064,64066,64100,2856, 64052,64053,936, 64054,3502, 945, 397, 64056,
64057,1266, 945, 64058,64059,64061,64062,64063,1108, 64065,64067,1302, 64069,9965, 64072,1394, 317, 64068,633, 7156, 64070,64071,9967, 621, 1309, 64073,64080,
- 64081,64082,64099,64074,64075,64076,64077,64078,64079,64083,64084,64087,64088,317, 889, 8344, 64089,27446,20008,64090,64093,64098,317, 1018, 1160, 64085,317,
+ 64081,64082,64099,64074,64075,64076,64077,64078,64079,64083,64084,64087,64088,317, 889, 8344, 64089,27446,20008,64090,64093,64098,317, 1018, 1160, 64085,317,
64086,732, 317, 317, 317, 64091,64092,6228, 317, 64094,317, 64095,64096,64097,1430, 2856, 64102,64105,64106,64107,64108,64109,64113,64114,64121,64128,64131,
- 228, 64787,64795,64798,229, 65995,66066,234, 66470,66516,66523,66527,66528,235, 67127,67128,67135,67142,237, 67396,67401,67403,67405,67443,4797, 64110,4798,
+ 228, 64787,64795,64798,229, 65995,66066,234, 66470,66516,66523,66527,66528,235, 67127,67128,67135,67142,237, 67396,67401,67403,67405,67443,4797, 64110,4798,
4797, 64112,4797, 4797, 4798, 4797, 64111,637, 11091,2515, 64115,64116,64117,64118,64119,64120,64122,64125,64123,64124,64126,64127,64129,64130,64132,64133,64134,
- 64136,64156,64194,64260,64264,64278,64299,64306,64349,64382,64397,64405,64488,64545,64546,64583,64586,64592,64634,64696,64721,64742,349, 64754,64774,1358, 317,
- 317, 317, 317, 317, 317, 64135,1100, 64137,64139,64144,64147,29108,1020, 350, 64153,501, 17889,64155,317, 362, 332, 317, 12371,317, 64138,24908,317,
+ 64136,64156,64194,64260,64264,64278,64299,64306,64349,64382,64397,64405,64488,64545,64546,64583,64586,64592,64634,64696,64721,64742,349, 64754,64774,1358, 317,
+ 317, 317, 317, 317, 317, 64135,1100, 64137,64139,64144,64147,29108,1020, 350, 64153,501, 17889,64155,317, 362, 332, 317, 12371,317, 64138,24908,317,
380, 64140,317, 64141,343, 64142,317, 64143,574, 9548, 6996, 2767, 8451, 317, 317, 371, 380, 64145,64146,4984, 317, 2163, 357, 317, 317, 384, 16464,
578, 9012, 317, 64148,345, 317, 64149,357, 10471,7990, 64150,317, 64152,64151,8178, 10626,16277,363, 356, 317, 363, 64154,371, 317, 363, 343, 64157,
- 64159,64160,64170,64179,64183,64187,64189,317, 64193,64158,64161,357, 362, 64166,64167,64168,317, 64169,1230, 317, 64162,64164,64163,64165,1347, 339, 1943,
- 5960, 343, 64171,64172,5447, 1020, 64174,45865,317, 317, 380, 64173,637, 317, 633, 317, 317, 1358, 317, 64175,64176,64177,64178,5701, 55019,3869, 2163,
+ 64159,64160,64170,64179,64183,64187,64189,317, 64193,64158,64161,357, 362, 64166,64167,64168,317, 64169,1230, 317, 64162,64164,64163,64165,1347, 339, 1943,
+ 5960, 343, 64171,64172,5447, 1020, 64174,45865,317, 317, 380, 64173,637, 317, 633, 317, 317, 1358, 317, 64175,64176,64177,64178,5701, 55019,3869, 2163,
64180,64181,5250, 64182,551, 64184,554, 7871, 64186,5926, 317, 317, 345, 64185,14644,317, 317, 64188,363, 64190,64191,317, 64192,371, 23624,11347,64195,
- 5270, 64197,64199,64200,2024, 64204,64206,343, 64239,64240,64242,64243,64249,553, 64250,2589, 64253,357, 64256,7698, 16603,64196,10578,8446, 1108, 351, 8177,
- 64198,39047,7010, 5309, 7866, 343, 7698, 3284, 317, 1358, 5105, 64201,317, 363, 64203,17095,64202,419, 350, 317, 64205,1481, 64207,64212,317, 362, 317,
- 2381, 317, 64215,64238,2108, 1700, 317, 64208,64209,64210,317, 5447, 64211,2510, 382, 5616, 343, 64213,317, 317, 317, 317, 64214,317, 317, 7887, 370,
- 317, 6228, 40388,64216,356, 64219,64223,22240,64228,55898,64231,64232,20103,64235,41013,64217,64218,64220,64221,64222,64224,64225,64226,64227,64229,64230,363,
- 11978,64233,64234,1194, 64236,64237,1078, 8177, 404, 317, 12142,11347,3529, 64241,351, 419, 380, 317, 6036, 11146,32685,64244,1109, 64246,64248,317, 351,
+ 5270, 64197,64199,64200,2024, 64204,64206,343, 64239,64240,64242,64243,64249,553, 64250,2589, 64253,357, 64256,7698, 16603,64196,10578,8446, 1108, 351, 8177,
+ 64198,39047,7010, 5309, 7866, 343, 7698, 3284, 317, 1358, 5105, 64201,317, 363, 64203,17095,64202,419, 350, 317, 64205,1481, 64207,64212,317, 362, 317,
+ 2381, 317, 64215,64238,2108, 1700, 317, 64208,64209,64210,317, 5447, 64211,2510, 382, 5616, 343, 64213,317, 317, 317, 317, 64214,317, 317, 7887, 370,
+ 317, 6228, 40388,64216,356, 64219,64223,22240,64228,55898,64231,64232,20103,64235,41013,64217,64218,64220,64221,64222,64224,64225,64226,64227,64229,64230,363,
+ 11978,64233,64234,1194, 64236,64237,1078, 8177, 404, 317, 12142,11347,3529, 64241,351, 419, 380, 317, 6036, 11146,32685,64244,1109, 64246,64248,317, 351,
64245,8177, 64247,317, 16067,8177, 363, 9768, 371, 370, 2584, 1459, 64251,490, 64252,43000,317, 17588,64254,384, 64255,317, 8177, 64257,363, 64258,64259,
- 2402, 8275, 2366, 64261,350, 317, 380, 57760,64262,350, 12417,64263,380, 479, 2272, 404, 46214,490, 317, 64265,39137,64268,64273,490, 64274,64277,8522,
+ 2402, 8275, 2366, 64261,350, 317, 380, 57760,64262,350, 12417,64263,380, 479, 2272, 404, 46214,490, 317, 64265,39137,64268,64273,490, 64274,64277,8522,
18232,317, 380, 64266,64267,317, 317, 332, 3284, 363, 5032, 64269,64272,22157,2156, 7916, 64270,64271,365, 5120, 317, 64275,64276,22021,466, 317, 64279,
- 11158,38951,64280,64283,64289,64291,362, 64292,64294,11945,64296,64297,3646, 5055, 1347, 1347, 317, 1109, 7399, 317, 64281,64282,317, 64284,64286,64285,4984,
+ 11158,38951,64280,64283,64289,64291,362, 64292,64294,11945,64296,64297,3646, 5055, 1347, 1347, 317, 1109, 7399, 317, 64281,64282,317, 64284,64286,64285,4984,
17658,64287,64288,2288, 7939, 64290,7389, 317, 363, 605, 64293,15778,317, 10538,380, 35916,64295,7095, 381, 2060, 1060, 370, 380, 490, 64298,64300,64301,
64302,317, 64303,2222, 2410, 317, 64305,1230, 427, 5105, 5217, 5241, 317, 427, 490, 370, 390, 317, 6814, 64304,345, 466, 5120, 353, 317, 373, 64307,
64309,64312,64313,64315,64316,64326,64329,64343,1444, 2070, 64344,64348,64308,64310,64282,317, 317, 317, 64311,6996, 8248, 6829, 551, 64314,25563,1347, 39134,
317, 64317,13914,64318,64319,10877,370, 57507,64320,64322,64323,64324,12348,355, 64321,64325,2366, 351, 317, 64327,64328,317, 64330,64333,64334,22796,64335,
- 6917, 64338,64339,64340,317, 2272, 64342,15334,5037, 15952,27235,3124, 64331,381, 381, 64332,10487,24393,523, 382, 25545,4563, 64336,64337,317, 6514, 390,
+ 6917, 64338,64339,64340,317, 2272, 64342,15334,5037, 15952,27235,3124, 64331,381, 381, 64332,10487,24393,523, 382, 25545,4563, 64336,64337,317, 6514, 390,
1030, 428, 7419, 382, 64341,6917, 1160, 317, 10487,390, 5394, 64345,15745,64347,490, 2087, 64346,29679,317, 317, 11040,317, 317, 64350,24814,64369,64371,
64374,64375,64376,64378,64381,565, 317, 5173, 490, 317, 64351,64357,365, 490, 64361,64362,64366,64368,317, 64352,64353,64354,64355,64356,64358,64359,64360,
64363,64364,64365,64367,490, 317, 11052,1044, 64370,46486,5836, 64372,317, 64373,5223, 46188,64377,64379,64380,345, 64383,47902,64387,64388,64390,64393,64395,
@@ -10992,130 +10987,130 @@ static const unsigned int ChildLocs[185261] =
317, 363, 64401,317, 64402,1999, 5483, 5464, 4980, 23533,317, 466, 64404,64406,655, 64407,64425,64434,64438,64439,362, 64444,64446,64454,64455,64458,64460,
64464,64467,64469,64475,64477,64485,64486,1109, 64487,64408,64411,64413,317, 64414,64415,64416,64417,332, 3717, 64422,317, 1460, 36617,362, 64409,64410,64412,
317, 5570, 317, 345, 351, 11496,345, 332, 317, 2533, 64418,317, 317, 55364,64419,64420,64421,317, 44098,2593, 64423,64424,64426,64427,363, 64428,64429,
- 64432,590, 11235,317, 26121,9648, 6228, 317, 343, 317, 64430,64431,971, 64433,317, 64435,64436,12226,64437,590, 64440,7403, 64441,64443,489, 317, 317,
- 317, 5017, 6999, 5392, 64442,317, 351, 317, 596, 19733,10994,380, 64445,1100, 64447,64449,64450,64451,64453,64448,64452,1108, 317, 363, 381, 404, 317,
- 64456,64457,64459,351, 363, 5991, 466, 64461,64462,64463,64465,8484, 317, 565, 64466,545, 393, 2272, 64468,1230, 317, 565, 2227, 317, 317, 8243, 489,
+ 64432,590, 11235,317, 26121,9648, 6228, 317, 343, 317, 64430,64431,971, 64433,317, 64435,64436,12226,64437,590, 64440,7403, 64441,64443,489, 317, 317,
+ 317, 5017, 6999, 5392, 64442,317, 351, 317, 596, 19733,10994,380, 64445,1100, 64447,64449,64450,64451,64453,64448,64452,1108, 317, 363, 381, 404, 317,
+ 64456,64457,64459,351, 363, 5991, 466, 64461,64462,64463,64465,8484, 317, 565, 64466,545, 393, 2272, 64468,1230, 317, 565, 2227, 317, 317, 8243, 489,
64470,64472,433, 466, 64474,317, 404, 46591,317, 64471,472, 317, 381, 4268, 317, 64473,317, 1108, 7196, 64476,64478,64480,64481,64482,9624, 2413, 64483,
- 350, 18420,64484,350, 317, 2351, 64479,317, 38850,4949, 317, 317, 317, 351, 2222, 36461,351, 5205, 6674, 64489,5022, 64495,64501,64511,64512,64513,317,
- 64522,64523,64530,64533,64535,345, 64538,64541,64542,64544,11307,343, 317, 7878, 317, 64490,64491,64493,64494,64492,64496,1347, 64497,64500,317, 6450, 2291,
- 2715, 317, 64498,7871, 1347, 64499,317, 317, 490, 1347, 317, 64502,64503,11114,64504,1358, 25883,64505,64507,2705, 33936,317, 2391, 64510,1020, 380, 5105,
+ 350, 18420,64484,350, 317, 2351, 64479,317, 38850,4949, 317, 317, 317, 351, 2222, 36461,351, 5205, 6674, 64489,5022, 64495,64501,64511,64512,64513,317,
+ 64522,64523,64530,64533,64535,345, 64538,64541,64542,64544,11307,343, 317, 7878, 317, 64490,64491,64493,64494,64492,64496,1347, 64497,64500,317, 6450, 2291,
+ 2715, 317, 64498,7871, 1347, 64499,317, 317, 490, 1347, 317, 64502,64503,11114,64504,1358, 25883,64505,64507,2705, 33936,317, 2391, 64510,1020, 380, 5105,
7399, 6901, 351, 64506,64508,64509,317, 6228, 21506,370, 2571, 317, 18500,317, 1078, 15388,317, 551, 317, 46661,64514,64517,64521,2402, 404, 1444, 64515,
64516,317, 64518,15821,64519,317, 23928,22650,1160, 317, 317, 53862,1615, 320, 27446,541, 64520,382, 2110, 11147,317, 5483, 36710,3688, 490, 363, 64524,
64525,64526,317, 64527,64528,64529,1325, 8948, 64531,317, 64532,64534,6486, 64536,317, 7940, 64537,317, 24399,64539,3987, 2024, 57308,350, 64540,5898, 38850,
4949, 55092,48846,46954,466, 317, 317, 64543,317, 39602,401, 396, 380, 64547,64548,64551,64557,64560,14121,64561,64562,4980, 64578,64582,3284, 25975,20532,
3869, 3075, 317, 64549,343, 317, 64550,64552,317, 64554,343, 64553,64555,64556,64558,351, 1992, 64559,317, 363, 1347, 397, 370, 317, 317, 363, 13908,
7672, 3075, 9680, 5611, 64563,64566,466, 64569,64572,64575,64564,39002,64565,317, 8519, 39569,64567,64568,64570,64571,356, 64573,64574,64576,64577,1347, 64579,
- 64581,64580,637, 317, 320, 1160, 5570, 43879,2533, 64584,64585,317, 30821,7871, 64587,64588,64589,64591,317, 24570,370, 317, 381, 317, 371, 404, 382,
- 64590,363, 596, 317, 433, 22621,64593,64594,64595,64597,64599,64600,64612,64613,2022, 64614,64617,64618,64619,64622,64627,64633,501, 5623, 439, 10429,2110,
+ 64581,64580,637, 317, 320, 1160, 5570, 43879,2533, 64584,64585,317, 30821,7871, 64587,64588,64589,64591,317, 24570,370, 317, 381, 317, 371, 404, 382,
+ 64590,363, 596, 317, 433, 22621,64593,64594,64595,64597,64599,64600,64612,64613,2022, 64614,64617,64618,64619,64622,64627,64633,501, 5623, 439, 10429,2110,
448, 12138,64596,29210,7850, 317, 5687, 7865, 64598,370, 52725,317, 317, 64601,365, 64602,64604,64606,365, 3645, 64608,427, 317, 64603,317, 317, 64605,
- 64607,317, 4943, 861, 64609,64610,5619, 64611,317, 1345, 363, 64615,64616,553, 14289,14744,64620,64621,2027, 317, 64623,14144,64625,539, 317, 64624,317,
- 363, 64626,64628,64631,1020, 64632,345, 317, 842, 633, 64629,362, 317, 381, 64630,565, 6402, 317, 349, 365, 2577, 380, 357, 64635,64638,64639,2077,
+ 64607,317, 4943, 861, 64609,64610,5619, 64611,317, 1345, 363, 64615,64616,553, 14289,14744,64620,64621,2027, 317, 64623,14144,64625,539, 317, 64624,317,
+ 363, 64626,64628,64631,1020, 64632,345, 317, 842, 633, 64629,362, 317, 381, 64630,565, 6402, 317, 349, 365, 2577, 380, 357, 64635,64638,64639,2077,
64642,64645,64646,64656,64667,64669,64671,64672,4984, 56188,516, 64674,64676,64692,64693,8639, 64636,1109, 2086, 64637,382, 1999, 370, 381, 64640,39046,64641,
- 5255, 2024, 317, 8083, 64643,64644,317, 514, 2193, 61961,64647,5840, 25151,64649,64651,10907,343, 64652,64655,2584, 2272, 64648,64650,363, 64653,428, 7360,
- 64654,26702,362, 64657,64661,64218,596, 382, 64658,64659,317, 64660,64662,317, 64663,356, 466, 317, 64664,1347, 64665,370, 317, 64666,370, 10674,5225,
- 1325, 317, 1347, 64668,427, 64670,3529, 990, 396, 317, 64673,351, 6866, 317, 8403, 1060, 64675,317, 64677,64681,64683,64684,350, 64688,64690,1347, 317,
+ 5255, 2024, 317, 8083, 64643,64644,317, 514, 2193, 61961,64647,5840, 25151,64649,64651,10907,343, 64652,64655,2584, 2272, 64648,64650,363, 64653,428, 7360,
+ 64654,26702,362, 64657,64661,64218,596, 382, 64658,64659,317, 64660,64662,317, 64663,356, 466, 317, 64664,1347, 64665,370, 317, 64666,370, 10674,5225,
+ 1325, 317, 1347, 64668,427, 64670,3529, 990, 396, 317, 64673,351, 6866, 317, 8403, 1060, 64675,317, 64677,64681,64683,64684,350, 64688,64690,1347, 317,
64678,317, 64679,18882,64680,317, 317, 380, 317, 64682,362, 558, 64685,64687,317, 1347, 64686,317, 64689,64691,64694,4738, 64695,7911, 8325, 317, 64697,
64699,64702,1430, 64703,64704,64706,1109, 64707,64708,64710,64715,450, 365, 64698,6387, 64700,64701,7698, 63824,381, 412, 64705,3529, 5993, 5570, 5862, 64709,
- 317, 390, 2652, 64711,4965, 363, 64712,64713,64714,317, 64716,317, 332, 64717,5896, 64718,64719,64720,64722,64728,64734,2086, 20276,5561, 64723,64724,1109,
- 64725,64726,64727,317, 64729,64730,50974,317, 12949,20977,317, 14773,8695, 24070,64731,47245,490, 4591, 64732,6089, 428, 11918,317, 64733,10015,12612,8125,
- 4949, 64735,373, 64739,64740,6402, 64741,1108, 558, 64736,64737,64738,2110, 1347, 1347, 490, 28468,2184, 64743,64746,317, 64747,64749,345, 64750,317, 404,
- 64753,64744,382, 317, 64745,466, 20578,317, 2261, 64748,396, 7651, 14916,9859, 9170, 64751,5862, 64752,949, 64755,64759,64762,501, 64763,12556,64764,2134,
- 64765,64767,64770,64772,64773,20130,362, 6638, 64756,317, 2272, 317, 64757,64758,64760,7365, 317, 363, 64761,550, 427, 10016,25563,363, 64766,363, 351,
- 64768,7062, 64769,343, 317, 21013,6546, 554, 64771,3125, 317, 332, 343, 1992, 317, 317, 3987, 2261, 12696,317, 64775,64776,44550,64778,64779,64781,362,
+ 317, 390, 2652, 64711,4965, 363, 64712,64713,64714,317, 64716,317, 332, 64717,5896, 64718,64719,64720,64722,64728,64734,2086, 20276,5561, 64723,64724,1109,
+ 64725,64726,64727,317, 64729,64730,50974,317, 12949,20977,317, 14773,8695, 24070,64731,47245,490, 4591, 64732,6089, 428, 11918,317, 64733,10015,12612,8125,
+ 4949, 64735,373, 64739,64740,6402, 64741,1108, 558, 64736,64737,64738,2110, 1347, 1347, 490, 28468,2184, 64743,64746,317, 64747,64749,345, 64750,317, 404,
+ 64753,64744,382, 317, 64745,466, 20578,317, 2261, 64748,396, 7651, 14916,9859, 9170, 64751,5862, 64752,949, 64755,64759,64762,501, 64763,12556,64764,2134,
+ 64765,64767,64770,64772,64773,20130,362, 6638, 64756,317, 2272, 317, 64757,64758,64760,7365, 317, 363, 64761,550, 427, 10016,25563,363, 64766,363, 351,
+ 64768,7062, 64769,343, 317, 21013,6546, 554, 64771,3125, 317, 332, 343, 1992, 317, 317, 3987, 2261, 12696,317, 64775,64776,44550,64778,64779,64781,362,
64785,64777,355, 380, 5328, 380, 64780,2222, 363, 317, 64782,317, 64783,317, 64784,64786,317, 343, 343, 64788,64790,64792,64794,1347, 64789,64791,64793,
- 2300, 16751,607, 612, 1383, 8937, 64796,10898,1060, 64797,317, 317, 6581, 2997, 64799,64801,490, 64803,64800,43246,64802,64804,64805,64806,64807,64898,230,
+ 2300, 16751,607, 612, 1383, 8937, 64796,10898,1060, 64797,317, 317, 6581, 2997, 64799,64801,490, 64803,64800,43246,64802,64804,64805,64806,64807,64898,230,
231, 65191,65221,65273,65331,232, 65455,65462,65466,65502,65543,65600,65615,65714,65723,233, 65842,65907,65918,65961,65972,65976,65989,64808,64810,64819,64835,
- 64839,5464, 64841,64855,64856,64860,64861,64872,64875,64888,64891,64894,64896,317, 350, 64809,64811,64812,64814,410, 12925,3999, 64813,26612,2247, 6042, 356,
+ 64839,5464, 64841,64855,64856,64860,64861,64872,64875,64888,64891,64894,64896,317, 350, 64809,64811,64812,64814,410, 12925,3999, 64813,26612,2247, 6042, 356,
64815,2510, 317, 382, 64816,64818,64817,5096, 317, 397, 64820,6270, 370, 64821,64822,64830,64832,11034,17009,317, 345, 64834,11034,21413,356, 370, 64823,
- 476, 64824,64825,317, 351, 317, 64826,64827,64828,64829,64831,317, 64833,17358,2601, 317, 2809, 466, 2402, 64836,64837,64838,5055, 64840,317, 363, 343,
- 12696,3677, 317, 317, 3503, 51212,6546, 6089, 550, 64842,64846,64847,64850,64853,64854,317, 64843,64844,64845,10680,5225, 5447, 466, 317, 26354,596, 1615,
+ 476, 64824,64825,317, 351, 317, 64826,64827,64828,64829,64831,317, 64833,17358,2601, 317, 2809, 466, 2402, 64836,64837,64838,5055, 64840,317, 363, 343,
+ 12696,3677, 317, 317, 3503, 51212,6546, 6089, 550, 64842,64846,64847,64850,64853,64854,317, 64843,64844,64845,10680,5225, 5447, 466, 317, 26354,596, 1615,
13695,317, 64848,15754,317, 2322, 64849,317, 64851,64852,30890,316, 2060, 2510, 317, 12925,317, 317, 23106,332, 370, 64857,490, 317, 64858,64859,10812,
- 466, 64862,64863,64866,64870,64864,64865,523, 356, 466, 317, 26531,64867,64868,64869,64871,6046, 356, 20865,16053,64873,64874,317, 5573, 11263,317, 3853,
+ 466, 64862,64863,64866,64870,64864,64865,523, 356, 466, 317, 26531,64867,64868,64869,64871,6046, 356, 20865,16053,64873,64874,317, 5573, 11263,317, 3853,
356, 412, 41577,13154,4965, 317, 4738, 350, 64876,64881,64877,317, 64878,5991, 466, 541, 317, 64879,64880,64882,64884,64886,26440,6724, 64883,64885,64887,
- 8612, 64889,5626, 317, 64890,389, 343, 64892,317, 64893,64895,16503,2022, 64897,64899,64901,64904,31580,64911,362, 64912,64917,64923,64900,317, 2156, 1526,
+ 8612, 64889,5626, 317, 64890,389, 343, 64892,317, 64893,64895,16503,2022, 64897,64899,64901,64904,31580,64911,362, 64912,64917,64923,64900,317, 2156, 1526,
605, 64902,64903,26204,317, 64905,867, 5079, 64907,9696, 47256,317, 64906,1109, 6996, 317, 1358, 345, 64908,317, 1160, 317, 356, 64909,317, 382, 64910,
- 10592,317, 12281,545, 64913,317, 6724, 363, 64915,317, 64914,351, 5238, 5325, 64916,10237,5558, 64918,64919,317, 64920,64921,64922,371, 37490,64924,9832,
+ 10592,317, 12281,545, 64913,317, 6724, 363, 64915,317, 64914,351, 5238, 5325, 64916,10237,5558, 64918,64919,317, 64920,64921,64922,371, 37490,64924,9832,
64926,64927,5120, 5719, 64925,5720, 317, 64928,64937,64938,64947,64960,64974,64980,26074,64986,65047,317, 65062,65069,65082,971, 64929,64932,64933,317, 16398,
- 64930,343, 5273, 64931,2715, 5363, 64934,317, 64935,64936,317, 5241, 345, 5717, 64939,317, 64942,64943,64945,4268, 64940,21168,64941,466, 6555, 5167, 5324,
+ 64930,343, 5273, 64931,2715, 5363, 64934,317, 64935,64936,317, 5241, 345, 5717, 64939,317, 64942,64943,64945,4268, 64940,21168,64941,466, 6555, 5167, 5324,
64944,55228,40868,2510, 64946,5464, 5262, 64948,64952,11388,64954,64955,64958,64949,64950,64951,466, 24400,317, 64953,64956,64957,64959,64961,3649, 343, 45759,
317, 64964,64969,64972,64962,64963,1347, 5399, 64965,64966,64967,64968,397, 64970,64971,64973,5447, 466, 5516, 5310, 12487,2510, 2117, 64975,350, 5362, 24224,
64976,64977,501, 18166,317, 64978,64979,64981,64983,64984,30514,5488, 64982,64985,490, 64987,64993,64995,65000,65008,490, 65041,65043,65044,64988,64989,64990,
5167, 64991,410, 5447, 466, 64992,5447, 466, 6020, 514, 64994,489, 64996,64997,64998,64999,356, 5054, 317, 65001,65004,21464,65002,65003,41385,1325, 65005,
65007,65006,1526, 5535, 56621,2601, 317, 317, 65009,65013,65014,65019,65024,65027,65039,65010,65011,5447, 65012,5225, 382, 65015,65016,5556, 65017,65018,65020,
- 65022,65023,65021,65025,65026,7577, 5487, 381, 65028,65031,65029,65030,65032,65034,65033,65035,65036,65037,356, 65038,317, 65040,5492, 2601, 65042,317, 410,
+ 65022,65023,65021,65025,65026,7577, 5487, 381, 65028,65031,65029,65030,65032,65034,65033,65035,65036,65037,356, 65038,317, 65040,5492, 2601, 65042,317, 410,
10422,10877,317, 7988, 5487, 393, 65045,65046,410, 356, 10147,317, 317, 65048,65052,65055,65058,65049,65050,5447, 65051,382, 5869, 332, 65053,65054,65056,
65057,10422,466, 3854, 317, 65059,65060,65061,65063,65065,65066,65068,1700, 317, 65064,65067,23401,63461,2184, 65070,65071,65074,65081,317, 867, 65072,65073,
25639,65075,65076,1325, 65077,65078,65079,65080,4267, 1325, 65083,2815, 65084,1112, 65085,866, 2786, 1087, 928, 65086,65087,65093,65097,65105,65127,65131,65133,
65138,65152,65153,65158,65161,65164,65167,65168,65172,65181,65182,19215,65187,621, 637, 7155, 3599, 6088, 31413,317, 515, 2593, 345, 65088,550, 14548,65090,
65091,9914, 65092,2719, 380, 371, 65089,11086,343, 343, 371, 317, 317, 5197, 363, 65094,65096,24393,11373,65095,317, 317, 7010, 2521, 65098,65099,65101,
- 65102,65103,38081,317, 356, 65100,380, 317, 317, 8882, 14303,317, 37785,390, 12298,317, 390, 1160, 381, 65104,384, 65106,65108,65109,65110,350, 5105,
- 65112,65115,65116,5120, 65119,65123,343, 65107,65111,351, 65113,65114,5221, 43207,7698, 4591, 317, 37029,65117,65118,6195, 65120,65121,65122,6088, 356, 466,
- 317, 65124,65125,65126,65128,65129,3236, 65130,1526, 37126,363, 578, 343, 13730,343, 574, 65132,434, 501, 65134,65135,428, 65137,343, 351, 19655,5962,
+ 65102,65103,38081,317, 356, 65100,380, 317, 317, 8882, 14303,317, 37785,390, 12298,317, 390, 1160, 381, 65104,384, 65106,65108,65109,65110,350, 5105,
+ 65112,65115,65116,5120, 65119,65123,343, 65107,65111,351, 65113,65114,5221, 43207,7698, 4591, 317, 37029,65117,65118,6195, 65120,65121,65122,6088, 356, 466,
+ 317, 65124,65125,65126,65128,65129,3236, 65130,1526, 37126,363, 578, 343, 13730,343, 574, 65132,434, 501, 65134,65135,428, 65137,343, 351, 19655,5962,
65136,317, 371, 393, 317, 393, 380, 65139,317, 65140,2222, 350, 65142,65143,65144,351, 65141,2603, 17358,332, 25415,65145,317, 5793, 65149,65146,65147,
- 65148,65150,65151,65033,24479,370, 13646,65154,65155,65156,33878,2134, 6355, 390, 471, 65157,363, 65159,12696,65160,1325, 363, 65162,65163,13715,317, 345,
- 371, 466, 65165,65166,317, 545, 11617,58763,476, 65169,65170,65171,566, 371, 350, 350, 1020, 21123,5634, 350, 439, 490, 65173,65175,65177,65179,605,
- 65174,596, 381, 8567, 65176,317, 65178,1011, 50973,1924, 317, 633, 351, 65180,3361, 2261, 1060, 8125, 65183,65185,65186,317, 317, 5447, 21157,65184,393,
- 30608,15734,2627, 65188,65190,65189,396, 14549,65192,65193,65194,11928,350, 2222, 65196,65197,65199,65203,2222, 65207,36068,65214,65217,1160, 15130,317, 351,
+ 65148,65150,65151,65033,24479,370, 13646,65154,65155,65156,33878,2134, 6355, 390, 471, 65157,363, 65159,12696,65160,1325, 363, 65162,65163,13715,317, 345,
+ 371, 466, 65165,65166,317, 545, 11617,58763,476, 65169,65170,65171,566, 371, 350, 350, 1020, 21123,5634, 350, 439, 490, 65173,65175,65177,65179,605,
+ 65174,596, 381, 8567, 65176,317, 65178,1011, 50973,1924, 317, 633, 351, 65180,3361, 2261, 1060, 8125, 65183,65185,65186,317, 317, 5447, 21157,65184,393,
+ 30608,15734,2627, 65188,65190,65189,396, 14549,65192,65193,65194,11928,350, 2222, 65196,65197,65199,65203,2222, 65207,36068,65214,65217,1160, 15130,317, 351,
8223, 317, 65195,317, 1033, 16651,317, 65198,3999, 317, 317, 65200,65201,65202,65204,2188, 317, 65206,65205,15042,370, 317, 65208,351, 65209,65210,65211,
65212,65213,65215,6726, 65216,65218,65219,65220,65222,65225,65231,65232,65235,65241,65250,65263,65264,65223,332, 65224,20629,65226,65227,65230,317, 36641,65228,
- 5717, 37037,65229,2117, 2117, 350, 22809,65233,57932,15940,65234,466, 3368, 317, 5399, 6123, 65236,65237,21188,316, 65238,65240,65239,523, 356, 10195,2510,
- 317, 5464, 28910,65242,65244,65248,65243,6271, 65245,65246,10422,9385, 317, 25338,65247,404, 448, 1526, 65249,65251,65254,65257,65252,10528,65253,356, 9130,
- 21434,65255,65256,5991, 8553, 5399, 65258,65259,65260,65261,4268, 65262,356, 404, 2510, 65265,65267,65268,65269,65272,18588,65266,356, 466, 511, 24504,5611,
+ 5717, 37037,65229,2117, 2117, 350, 22809,65233,57932,15940,65234,466, 3368, 317, 5399, 6123, 65236,65237,21188,316, 65238,65240,65239,523, 356, 10195,2510,
+ 317, 5464, 28910,65242,65244,65248,65243,6271, 65245,65246,10422,9385, 317, 25338,65247,404, 448, 1526, 65249,65251,65254,65257,65252,10528,65253,356, 9130,
+ 21434,65255,65256,5991, 8553, 5399, 65258,65259,65260,65261,4268, 65262,356, 404, 2510, 65265,65267,65268,65269,65272,18588,65266,356, 466, 511, 24504,5611,
65270,65271,4564, 5447, 466, 65274,65279,65283,65286,65310,65312,65314,65315,317, 65323,10528,65275,1347, 65276,317, 65277,65278,317, 5238, 3503, 317, 19478,
- 2036, 351, 7949, 65280,317, 16579,317, 5201, 65281,490, 9931, 1347, 65282,60061,65284,2035, 65285,1109, 317, 317, 2260, 65287,65295,65299,65301,65306,345,
+ 2036, 351, 7949, 65280,317, 16579,317, 5201, 65281,490, 9931, 1347, 65282,60061,65284,2035, 65285,1109, 317, 317, 2260, 65287,65295,65299,65301,65306,345,
65288,65289,65290,65291,65292,65293,65294,65296,65297,317, 317, 65298,65300,317, 490, 317, 65302,65303,317, 65304,16860,317, 65305,55384,317, 317, 65307,
- 6013, 65308,65309,596, 317, 4268, 1347, 5167, 351, 65311,65313,351, 2222, 317, 427, 65316,65321,65317,65319,65318,317, 65320,65322,7784, 7579, 65324,317,
+ 6013, 65308,65309,596, 317, 4268, 1347, 5167, 351, 65311,65313,351, 2222, 317, 427, 65316,65321,65317,65319,65318,317, 65320,65322,7784, 7579, 65324,317,
65328,4576, 65325,3284, 345, 65326,22020,65327,370, 317, 5201, 7888, 65329,65330,65332,65337,350, 65339,13658,2247, 65343,2503, 65345,65346,65348,65349,13273,
- 343, 317, 65350,65333,501, 317, 490, 381, 2183, 65334,65335,65336,65338,384, 396, 65340,317, 65341,317, 466, 65342,4564, 1325, 466, 65344,2586, 351,
+ 343, 317, 65350,65333,501, 317, 490, 381, 2183, 65334,65335,65336,65338,384, 396, 65340,317, 65341,317, 466, 65342,4564, 1325, 466, 65344,2586, 351,
466, 5663, 65347,350, 5223, 47075,1999, 6601, 396, 5138, 317, 3869, 65351,380, 65352,65354,65372,31154,65376,65379,65384,65385,65387,65388,65396,317, 65441,
65448,65453,65353,362, 13631,65355,1347, 28207,65356,14708,38710,5662, 605, 65360,65357,65358,381, 12433,317, 590, 65359,24638,4949, 16860,16153,10471,65361,
- 65369,3236, 5400, 65362,65363,65364,65365,65366,65367,65368,65370,65371,351, 65373,65374,4738, 11249,317, 317, 13679,317, 565, 65375,12731,317, 350, 362,
+ 65369,3236, 5400, 65362,65363,65364,65365,65366,65367,65368,65370,65371,351, 65373,65374,4738, 11249,317, 317, 13679,317, 565, 65375,12731,317, 350, 362,
65377,39339,65378,10487,574, 12731,65380,65381,65382,4976, 5991, 65383,317, 4965, 466, 317, 65386,439, 370, 466, 21074,317, 65389,65391,65395,350, 10626,
- 578, 317, 439, 65390,4984, 65392,65393,65394,65397,65398,65400,65406,65408,65410,317, 65413,65416,65417,65419,65421,65422,65427,65437,10538,390, 5238, 9664,
+ 578, 317, 439, 65390,4984, 65392,65393,65394,65397,65398,65400,65406,65408,65410,317, 65413,65416,65417,65419,65421,65422,65427,65437,10538,390, 5238, 9664,
65399,65401,65403,65402,65404,65405,65407,317, 590, 351, 317, 345, 65409,472, 362, 317, 8488, 317, 9182, 1358, 13659,65411,65412,28207,7592, 65414,65415,
5223, 1100, 553, 351, 350, 10561,1108, 65418,466, 65420,15221,7852, 332, 5836, 65423,24775,2553, 65425,32626,4982, 65424,65426,1020, 13307,9057, 65428,65432,
317, 25503,65429,65430,1526, 65431,65433,65434,65435,65436,1325, 466, 5226, 65438,65439,20360,10197,65440,65442,7618, 65443,47010,65444,511, 362, 350, 65445,
65446,10081,317, 13235,5223, 351, 382, 5717, 356, 65447,18454,65449,2222, 350, 65451,2845, 350, 65452,490, 317, 65450,41584,362, 65454,65456,65457,65459,
- 65458,5441, 5273, 65460,65461,16365,35229,43878,490, 65463,8926, 65464,551, 65465,22685,65467,65478,12109,65484,1020, 65495,65497,390, 65498,65501,5226, 2024,
- 356, 21483,65468,65474,65476,14316,410, 62590,65469,382, 65470,65472,65471,380, 9139, 5477, 65473,7682, 370, 65475,65477,5464, 466, 4268, 5226, 65479,2024,
- 21672,65480,65481,65482,65483,65485,8488, 65486,2024, 65487,362, 65491,42859,65494,5441, 21417,5190, 317, 1347, 381, 317, 8139, 65488,65489,65490,5459, 6670,
- 65492,65493,5487, 345, 2576, 9450, 65496,10238,5500, 65499,65500,65503,65508,65509,1998, 65516,60668,65525,65526,4266, 65529,24119,65540,65541,317, 343, 501,
+ 65458,5441, 5273, 65460,65461,16365,35229,43878,490, 65463,8926, 65464,551, 65465,22685,65467,65478,12109,65484,1020, 65495,65497,390, 65498,65501,5226, 2024,
+ 356, 21483,65468,65474,65476,14316,410, 62590,65469,382, 65470,65472,65471,380, 9139, 5477, 65473,7682, 370, 65475,65477,5464, 466, 4268, 5226, 65479,2024,
+ 21672,65480,65481,65482,65483,65485,8488, 65486,2024, 65487,362, 65491,42859,65494,5441, 21417,5190, 317, 1347, 381, 317, 8139, 65488,65489,65490,5459, 6670,
+ 65492,65493,5487, 345, 2576, 9450, 65496,10238,5500, 65499,65500,65503,65508,65509,1998, 65516,60668,65525,65526,4266, 65529,24119,65540,65541,317, 343, 501,
65504,65506,5661, 14523,53131,65507,29355,2108, 65505,2509, 356, 466, 317, 1347, 466, 4591, 31185,42002,1999, 578, 22338,350, 65510,343, 65512,65515,12869,
317, 351, 65511,317, 18946,5464, 345, 65513,65514,39059,2330, 350, 65517,371, 12795,65518,65519,65522,65523,20664,12631,11330,65520,65521,24596,11280,65524,
- 370, 17988,390, 65527,65528,345, 65530,65533,65536,317, 65537,26484,65539,65531,65532,356, 466, 5174, 317, 65534,65535,370, 317, 26746,65538,370, 2571,
- 5223, 26683,8136, 466, 9444, 363, 363, 65542,317, 65544,7911, 65546,65549,65555,65562,65566,65567,65568,65569,65572,65576,6601, 385, 65582,65587,65593,5037,
+ 370, 17988,390, 65527,65528,345, 65530,65533,65536,317, 65537,26484,65539,65531,65532,356, 466, 5174, 317, 65534,65535,370, 317, 26746,65538,370, 2571,
+ 5223, 26683,8136, 466, 9444, 363, 363, 65542,317, 65544,7911, 65546,65549,65555,65562,65566,65567,65568,65569,65572,65576,6601, 385, 65582,65587,65593,5037,
65597,2222, 65598,317, 65021,350, 7711, 64723,317, 5255, 6565, 65545,317, 2222, 65547,65548,20909,65550,65554,46491,363, 9931, 5105, 65551,65552,5991, 10877,
- 345, 317, 65553,5611, 5167, 5943, 6691, 65556,380, 5223, 489, 65560,65557,1325, 466, 65558,65559,65561,356, 466, 317, 4965, 6598, 65563,65564,65565,317,
- 44702,4437, 14470,351, 12987,565, 10086,404, 490, 27185,317, 65570,65571,65573,65574,65575,317, 317, 350, 12966,6596, 317, 317, 317, 317, 371, 317,
+ 345, 317, 65553,5611, 5167, 5943, 6691, 65556,380, 5223, 489, 65560,65557,1325, 466, 65558,65559,65561,356, 466, 317, 4965, 6598, 65563,65564,65565,317,
+ 44702,4437, 14470,351, 12987,565, 10086,404, 490, 27185,317, 65570,65571,65573,65574,65575,317, 317, 350, 12966,6596, 317, 317, 317, 317, 371, 317,
10561,317, 317, 351, 65577,41418,65578,2317, 65579,65580,14649,317, 25260,65581,65583,54860,363, 12154,466, 65584,65585,65586,65588,65589,65590,16651,65591,
65592,317, 317, 8614, 1999, 490, 65594,65596,65595,65599,317, 7142, 15464,65601,490, 343, 317, 65605,65607,317, 65602,65603,65604,3884, 5225, 1526, 65606,
380, 5363, 65595,65608,65613,65609,65610,65611,10674,65612,5365, 1325, 466, 65614,317, 65616,65626,65644,65645,9680, 65646,65655,65658,65669,65671,65695,65696,
65699,34849,65712,65617,65620,65622,27955,65623,1526, 65625,317, 65618,65619,317, 8567, 65621,5365, 558, 65624,65627,11276,65630,65632,65634,65640,5273, 65628,
410, 65629,466, 317, 65631,317, 2369, 13839,466, 511, 317, 65633,6266, 356, 317, 65635,65638,65636,65637,65639,12277,370, 65641,8296, 65642,65643,65647,
- 65650,65652,542, 2184, 65648,24479,5273, 65649,466, 410, 317, 5399, 317, 65651,343, 65213,3284, 65653,5464, 317, 65654,381, 317, 22122,65656,65657,317,
+ 65650,65652,542, 2184, 65648,24479,5273, 65649,466, 410, 317, 5399, 317, 65651,343, 65213,3284, 65653,5464, 317, 65654,381, 317, 22122,65656,65657,317,
396, 362, 65659,65661,65663,65660,65662,990, 65629,466, 317, 317, 317, 65664,65666,65665,24589,8544, 65667,65668,65670,439, 7385, 65672,65679,65684,41264,
65673,65674,65678,65675,65676,65677,356, 466, 317, 373, 25420,5464, 5847, 351, 65680,65681,7988, 65272,65682,65683,25568,2413, 65685,65687,65691,65686,65688,
- 65689,5447, 65690,21575,343, 65692,65693,65694,65697,363, 611, 65698,65700,65559,34396,65705,65706,65710,40024,65701,65702,65703,1109, 965, 5093, 65704,317,
+ 65689,5447, 65690,21575,343, 65692,65693,65694,65697,363, 611, 65698,65700,65559,34396,65705,65706,65710,40024,65701,65702,65703,1109, 965, 5093, 65704,317,
6468, 5226, 65707,65709,65708,5254, 65711,65713,6589, 6222, 65715,65716,65717,65718,490, 7988, 427, 317, 26676,65719,65720,65721,1347, 65722,65724,65728,56088,
332, 65730,65731,356, 65725,2086, 65726,608, 65727,62602,317, 65729,58569,1588, 1459, 317, 1347, 65732,65733,65740,65757,65762,350, 65773,65776,65788,65803,
65806,65824,65838,65734,65737,5764, 65738,65735,343, 65736,14523,17358,65739,466, 65741,65745,490, 4943, 317, 65746,65747,65750,65753,65755,65742,317, 65743,
- 65744,65748,65749,65751,65752,317, 8243, 1108, 356, 379, 466, 5399, 317, 65754,7629, 5447, 9385, 54527,6228, 351, 317, 65756,466, 9057, 65758,13110,356,
+ 65744,65748,65749,65751,65752,317, 8243, 1108, 356, 379, 466, 5399, 317, 65754,7629, 5447, 9385, 54527,6228, 351, 317, 65756,466, 9057, 65758,13110,356,
490, 65759,65760,5441, 356, 65761,65763,21598,65767,18712,1943, 65769,490, 65764,466, 5260, 317, 65765,317, 21438,65766,317, 48320,30423,317, 65768,65770,
7376, 65771,65772,2510, 317, 317, 7521, 345, 382, 7327, 2163, 351, 65774,371, 65775,65777,65780,65783,317, 65784,317, 65778,5717, 65779,5324, 5054, 65781,
- 7377, 65782,5447, 466, 2510, 5225, 5273, 510, 65785,65786,65787,317, 32693,317, 476, 65789,65793,20958,65796,2571, 65802,65790,381, 1347, 1347, 65791,6270,
- 356, 10891,65792,317, 382, 5550, 2537, 2078, 65794,343, 65795,65797,65798,65800,65799,466, 317, 317, 1347, 65801,62179,6496, 65804,343, 350, 65805,317,
+ 7377, 65782,5447, 466, 2510, 5225, 5273, 510, 65785,65786,65787,317, 32693,317, 476, 65789,65793,20958,65796,2571, 65802,65790,381, 1347, 1347, 65791,6270,
+ 356, 10891,65792,317, 382, 5550, 2537, 2078, 65794,343, 65795,65797,65798,65800,65799,466, 317, 317, 1347, 65801,62179,6496, 65804,343, 350, 65805,317,
65807,5991, 379, 65811,52020,65814,65816,317, 65823,13307,24692,13098,65808,65809,65810,4268, 12785,332, 46853,382, 65812,7865, 65813,371, 317, 65815,65817,
11279,65820,11619,65821,65818,65819,356, 466, 1347, 65822,65825,317, 65828,65829,65830,65832,65835,65826,65827,5447, 466, 5225, 65831,65833,65834,6265, 65143,
- 65836,65837,65839,65840,65841,65843,65849,317, 65851,2024, 65854,65858,490, 12154,16871,65867,65870,65896,65897,65901,6757, 65905,65844,65845,65846,565, 490,
+ 65836,65837,65839,65840,65841,65843,65849,317, 65851,2024, 65854,65858,490, 12154,16871,65867,65870,65896,65897,65901,6757, 65905,65844,65845,65846,565, 490,
65847,12631,12631,65848,317, 65477,356, 317, 42746,65850,317, 65852,6430, 1160, 60667,381, 65853,317, 65855,65856,8364, 6312, 65857,65859,396, 65863,65865,
13307,6266, 343, 65860,65861,65862,427, 317, 20253,15618,317, 5828, 65864,343, 35367,339, 317, 18142,65866,466, 317, 1160, 1347, 5399, 317, 356, 65868,
- 12360,65869,5093, 317, 65871,65877,65880,65883,317, 65872,65874,65875,1325, 466, 65873,410, 356, 5987, 351, 317, 5174, 343, 65876,7988, 65878,65879,380,
- 20998,65881,350, 317, 65882,380, 5394, 466, 65884,65885,8660, 65888,65893,65886,1428, 65887,65889,65890,65891,65892,65894,65895,380, 5335, 427, 367, 317,
+ 12360,65869,5093, 317, 65871,65877,65880,65883,317, 65872,65874,65875,1325, 466, 65873,410, 356, 5987, 351, 317, 5174, 343, 65876,7988, 65878,65879,380,
+ 20998,65881,350, 317, 65882,380, 5394, 466, 65884,65885,8660, 65888,65893,65886,1428, 65887,65889,65890,65891,65892,65894,65895,380, 5335, 427, 367, 317,
65898,65900,27154,317, 343, 65899,545, 2732, 65902,65903,65904,466, 317, 351, 65906,3529, 351, 3529, 65908,4960, 351, 380, 65909,65910,65912,65913,65915,
- 501, 439, 381, 65911,12463,5055, 5717, 410, 46568,1325, 466, 65914,317, 351, 10081,65916,350, 15758,65917,350, 2134, 350, 9938, 1347, 619, 65919,317,
+ 501, 439, 381, 65911,12463,5055, 5717, 410, 46568,1325, 466, 65914,317, 351, 10081,65916,350, 15758,65917,350, 2134, 350, 9938, 1347, 619, 65919,317,
65921,65934,404, 65948,317, 65960,1526, 317, 65920,65322,356, 2078, 317, 22809,5038, 65922,65927,65928,317, 574, 65923,65925,466, 18695,317, 370, 65926,
- 65924,49082,448, 2369, 343, 2401, 2156, 317, 65929,65930,16651,9938, 363, 65932,5273, 317, 65931,4564, 5447, 65933,65935,65938,490, 65939,65941,65945,317,
- 65936,633, 10422,466, 65937,317, 356, 5793, 317, 317, 1325, 65940,490, 382, 22800,5273, 65942,65943,65944,18587,10674,65946,5447, 466, 65947,673, 5249,
+ 65924,49082,448, 2369, 343, 2401, 2156, 317, 65929,65930,16651,9938, 363, 65932,5273, 317, 65931,4564, 5447, 65933,65935,65938,490, 65939,65941,65945,317,
+ 65936,633, 10422,466, 65937,317, 356, 5793, 317, 317, 1325, 65940,490, 382, 22800,5273, 65942,65943,65944,18587,10674,65946,5447, 466, 65947,673, 5249,
317, 5488, 351, 5441, 65949,356, 12849,5273, 65950,8139, 65951,65955,65952,65953,65954,65956,65957,65958,8544, 65959,19237,317, 1526, 5441, 1347, 17358,65962,
65964,65965,65966,65969,349, 13638,65963,8099, 1915, 356, 5492, 317, 1135, 65967,65968,65970,574, 65971,1347, 466, 501, 65973,2077, 2024, 2035, 65974,46121,
317, 317, 390, 380, 65975,5255, 343, 390, 1796, 10943,65977,65978,65979,65983,65988,317, 1915, 1347, 317, 317, 363, 439, 65980,65981,65982,65984,22201,
@@ -11125,160 +11120,160 @@ static const unsigned int ChildLocs[185261] =
66029,66031,66032,612, 66034,16278,608, 66041,66046,66035,66038,22866,66036,66037,66039,66040,66042,66045,66043,66044,1024, 396, 317, 351, 608, 66048,34639,
66049,1193, 317, 3037, 612, 34752,7892, 66052,66056,66058,65344,381, 66053,66054,66055,66057,66059,427, 66060,66062,66064,66065,66063,66067,66071,66076,66097,
66109,66111,66127,66131,66147,66151,66154,66068,26310,317, 66069,66070,49440,66072,66075,66073,66074,66077,490, 317, 1347, 66079,1109, 66084,2060, 4591, 66086,
- 66092,317, 490, 490, 317, 66078,596, 345, 66080,317, 66081,14708,2409, 4952, 66083,25351,66082,578, 66085,1065, 66087,66091,66088,66089,66090,5701, 362,
+ 66092,317, 490, 490, 317, 66078,596, 345, 66080,317, 66081,14708,2409, 4952, 66083,25351,66082,578, 66085,1065, 66087,66091,66088,66089,66090,5701, 362,
66093,66094,66095,8804, 66096,356, 10253,66098,66105,66106,23490,66099,66101,66102,66100,26872,6222, 66103,1065, 4090, 66104,66107,66108,66110,66112,1078, 66114,
- 66123,66113,66115,66116,5828, 66118,66117,15213,63926,2551, 20883,384, 3505, 317, 66119,66122,317, 66120,66121,9947, 8377, 66124,66125,66126,1347, 608, 6222,
+ 66123,66113,66115,66116,5828, 66118,66117,15213,63926,2551, 20883,384, 3505, 317, 66119,66122,317, 66120,66121,9947, 8377, 66124,66125,66126,1347, 608, 6222,
66128,66129,66130,66132,66133,317, 66142,66144,350, 317, 66146,6242, 317, 66134,317, 66135,8207, 66136,365, 345, 317, 23018,317, 2391, 8213, 66137,66141,
- 66138,66139,66140,66143,317, 339, 5087, 345, 317, 66145,1345, 1160, 490, 345, 363, 339, 363, 66148,35237,66150,66149,39034,66152,317, 343, 66153,317,
+ 66138,66139,66140,66143,317, 339, 5087, 345, 317, 66145,1345, 1160, 490, 345, 363, 339, 363, 66148,35237,66150,66149,39034,66152,317, 343, 66153,317,
7622, 317, 317, 363, 317, 66155,66156,40467,317, 66157,8136, 466, 2022, 551, 6546, 66158,66159,66162,66178,66223,66242,66281,66289,66309,66312,66317,66322,
- 66325,66330,66339,66378,66384,66398,66400,66419,345, 66441,15571,66464,66466,317, 317, 317, 66160,66161,1358, 490, 317, 317, 66163,66165,2387, 66169,5517,
+ 66325,66330,66339,66378,66384,66398,66400,66419,345, 66441,15571,66464,66466,317, 317, 317, 66160,66161,1358, 490, 317, 317, 66163,66165,2387, 66169,5517,
66172,2279, 66173,404, 66177,371, 66164,356, 317, 317, 317, 5238, 66166,66168,343, 5055, 317, 66167,66170,66171,317, 343, 53671,490, 66174,29405,66176,
317, 20992,66175,317, 20077,66179,66182,66189,14974,66190,363, 66207,2022, 66220,66222,1347, 66180,356, 66181,317, 1108, 317, 1160, 404, 66183,6486, 66185,
- 317, 66184,7668, 404, 66186,317, 8766, 2715, 66187,66188,6486, 317, 7916, 621, 362, 9567, 949, 66191,66195,66196,66198,9624, 66202,38127,66203,39187,7990,
- 34545,66206,2271, 317, 317, 66192,317, 66193,404, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 66194,317, 5037, 4949, 7911, 4949,
- 66197,66199,662, 345, 66200,66201,317, 6840, 343, 345, 404, 317, 317, 345, 404, 1943, 5663, 2236, 66204,66205,2510, 7623, 317, 633, 66208,66209,2024,
+ 317, 66184,7668, 404, 66186,317, 8766, 2715, 66187,66188,6486, 317, 7916, 621, 362, 9567, 949, 66191,66195,66196,66198,9624, 66202,38127,66203,39187,7990,
+ 34545,66206,2271, 317, 317, 66192,317, 66193,404, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 66194,317, 5037, 4949, 7911, 4949,
+ 66197,66199,662, 345, 66200,66201,317, 6840, 343, 345, 404, 317, 317, 345, 404, 1943, 5663, 2236, 66204,66205,2510, 7623, 317, 633, 66208,66209,2024,
1358, 66214,66216,350, 33878,66219,1160, 7698, 6355, 1347, 66210,12037,66213,317, 66211,66212,57600,350, 4943, 4980, 1347, 317, 66215,66217,363, 66218,18030,
363, 350, 66221,317, 24298,489, 7386, 31822,20909,66224,66230,66233,66236,66240,350, 66241,9289, 523, 66225,66227,66228,384, 5105, 317, 66226,66229,37773,
- 317, 317, 317, 317, 11144,5105, 343, 66231,385, 317, 66232,317, 351, 11034,1444, 317, 317, 356, 7821, 66234,428, 10223,433, 1230, 12429,317, 9624,
- 66235,317, 45142,66237,34630,66238,66239,12886,466, 363, 66243,66245,66247,66253,66259,66260,66261,66263,66264,66272,350, 57899,66273,66278,317, 66280,7428,
- 590, 66244,605, 66246,1358, 1033, 362, 66248,4738, 66251,66252,317, 5105, 66249,2222, 2134, 66250,66254,66257,66255,317, 66256,66258,12731,6917, 66262,317,
+ 317, 317, 317, 317, 11144,5105, 343, 66231,385, 317, 66232,317, 351, 11034,1444, 317, 317, 356, 7821, 66234,428, 10223,433, 1230, 12429,317, 9624,
+ 66235,317, 45142,66237,34630,66238,66239,12886,466, 363, 66243,66245,66247,66253,66259,66260,66261,66263,66264,66272,350, 57899,66273,66278,317, 66280,7428,
+ 590, 66244,605, 66246,1358, 1033, 362, 66248,4738, 66251,66252,317, 5105, 66249,2222, 2134, 66250,66254,66257,66255,317, 66256,66258,12731,6917, 66262,317,
439, 370, 370, 66265,66266,66267,66271,66268,66269,66270,11921,15772,345, 5439, 66274,66277,4738, 343, 16008,350, 437, 350, 317, 66275,317, 5896, 66276,
7618, 317, 317, 66279,6598, 317, 11181,66282,66285,66286,66287,4253, 11613,66283,66284,406, 448, 4949, 9447, 466, 2156, 363, 13611,317, 66288,466, 66290,
- 370, 404, 66291,66292,66297,66305,66306,2022, 66307,57643,11626,365, 357, 317, 2715, 356, 2537, 5055, 66293,66295,66296,2117, 57643,317, 66294,8488, 6993,
- 317, 66298,317, 317, 66299,10891,66301,11612,5661, 66302,66303,4984, 317, 317, 66300,317, 5336, 392, 1588, 412, 350, 66304,35025,16117,365, 66308,2715,
+ 370, 404, 66291,66292,66297,66305,66306,2022, 66307,57643,11626,365, 357, 317, 2715, 356, 2537, 5055, 66293,66295,66296,2117, 57643,317, 66294,8488, 6993,
+ 317, 66298,317, 317, 66299,10891,66301,11612,5661, 66302,66303,4984, 317, 317, 66300,317, 5336, 392, 1588, 412, 350, 66304,35025,16117,365, 66308,2715,
351, 66310,551, 2222, 66311,66313,66315,490, 17375,1358, 66314,66316,1481, 66318,317, 1347, 66319,66320,66321,46506,10894,15156,66323,365, 66324,317, 57281,
2078, 317, 66326,66327,343, 66328,317, 317, 317, 27776,2024, 382, 66329,16651,66331,66332,35822,2609, 66334,32606,4591, 2571, 15441,49165,66336,66337,66338,
- 66333,370, 66335,3869, 370, 363, 66340,66343,66347,66350,2539, 66353,66370,66371,38982,317, 66373,5441, 66374,2351, 66341,356, 66342,363, 66344,501, 317,
- 66345,345, 66286,66346,2004, 345, 380, 66348,43967,343, 350, 2272, 317, 317, 345, 66349,351, 11905,343, 66351,351, 66352,2381, 317, 317, 317, 5898,
- 578, 11965,5159, 2152, 66354,66355,66356,66360,66361,3999, 66362,33877,66364,6601, 5956, 66365,66366,66367,66368,7852, 466, 317, 6831, 66357,8526, 66358,6599,
+ 66333,370, 66335,3869, 370, 363, 66340,66343,66347,66350,2539, 66353,66370,66371,38982,317, 66373,5441, 66374,2351, 66341,356, 66342,363, 66344,501, 317,
+ 66345,345, 66286,66346,2004, 345, 380, 66348,43967,343, 350, 2272, 317, 317, 345, 66349,351, 11905,343, 66351,351, 66352,2381, 317, 317, 317, 5898,
+ 578, 11965,5159, 2152, 66354,66355,66356,66360,66361,3999, 66362,33877,66364,6601, 5956, 66365,66366,66367,66368,7852, 466, 317, 6831, 66357,8526, 66358,6599,
54031,66359,317, 27765,578, 35043,392, 439, 66363,466, 17255,363, 317, 317, 2261, 13611,3361, 6188, 66369,58656,66372,317, 345, 317, 8325, 1160, 66375,
66376,66377,66379,12849,66380,6409, 5611, 1358, 66381,2288, 66382,66383,316, 317, 15293,466, 4591, 317, 66385,66386,66387,66389,35480,66391,66392,4980, 66396,
5624, 1459, 551, 3366, 66388,14932,466, 317, 317, 66390,66393,3999, 66395,363, 9012, 317, 317, 317, 43846,66167,363, 66394,9779, 317, 1347, 12704,66397,
66399,8357, 66401,66402,5300, 66403,66406,66409,66410,15745,350, 66411,66414,965, 66415,66416,16264,7064, 317, 501, 66404,1347, 317, 2391, 66405,317, 66407,
- 66408,12696,370, 21137,317, 363, 20688,345, 11855,1325, 57131,317, 317, 1160, 317, 66412,2322, 66413,12756,6620, 350, 362, 22763,66417,351, 59002,343,
+ 66408,12696,370, 21137,317, 363, 20688,345, 11855,1325, 57131,317, 317, 1160, 317, 66412,2322, 66413,12756,6620, 350, 362, 22763,66417,351, 59002,343,
66418,317, 5035, 317, 66420,66421,66424,66425,317, 66426,66428,66429,66436,66440,949, 5428, 1020, 365, 66422,66423,5159, 343, 332, 1020, 2610, 380, 11034,
317, 317, 15221,317, 66427,2515, 363, 66430,38708,66435,343, 317, 66431,66432,10641,7401, 1444, 2732, 66433,66434,15561,317, 2219, 66437,345, 66438,66439,
- 370, 317, 2094, 1526, 31227,343, 343, 362, 317, 66442,66446,66459,9909, 1020, 343, 66462,66463,66443,66445,3772, 317, 18739,66444,5687, 332, 356, 7871,
- 5174, 5201, 7433, 867, 47897,66447,66449,5223, 66458,317, 66448,3987, 406, 4949, 28462,6228, 8488, 66450,66452,12416,66453,66455,4952, 10149,66456,5911, 2631,
- 66457,404, 5573, 12302,19814,66451,24393,355, 66454,6195, 32011,356, 466, 317, 1358, 66460,66461,490, 8955, 7399, 2067, 4591, 66465,15618,4965, 317, 4965,
+ 370, 317, 2094, 1526, 31227,343, 343, 362, 317, 66442,66446,66459,9909, 1020, 343, 66462,66463,66443,66445,3772, 317, 18739,66444,5687, 332, 356, 7871,
+ 5174, 5201, 7433, 867, 47897,66447,66449,5223, 66458,317, 66448,3987, 406, 4949, 28462,6228, 8488, 66450,66452,12416,66453,66455,4952, 10149,66456,5911, 2631,
+ 66457,404, 5573, 12302,19814,66451,24393,355, 66454,6195, 32011,356, 466, 317, 1358, 66460,66461,490, 8955, 7399, 2067, 4591, 66465,15618,4965, 317, 4965,
365, 362, 66467,66468,357, 66469,12949,5439, 2322, 66471,66473,66477,66482,66486,66492,66496,66501,7460, 66504,66507,66508,66472,25805,351, 18761,370, 66474,
66475,35186,66476,396, 18762,66478,66479,66480,396, 66481,1193, 66483,607, 66484,66485,66487,66491,28164,66488,66489,66490,66493,66494,19065,20441,9172, 66495,
66497,66500,34639,66498,396, 66499,66502,66503,10381,66505,363, 66506,66509,66510,66065,66515,66511,66512,66514,66513,66517,2546, 66518,66520,66519,66521,66522,
345, 339, 66524,66525,66526,2581, 62013,381, 2503, 43592,66529,365, 351, 66530,66531,66552,66593,66647,66682,66707,66711,66733,66754,66755,66757,66763,66787,
- 66827,66854,66872,66877,66880,236, 66988,67038,67078,67087,67101,67109,67120,66532,66534,317, 1325, 14316,66548,332, 66550,38920,66551,66533,66535,66536,6532,
- 66537,6002, 66538,2156, 66540,2571, 66541,66543,66546,66547,7405, 317, 356, 15237,66539,66542,66544,66545,343, 343, 390, 371, 32658,2402, 5752, 61843,317,
+ 66827,66854,66872,66877,66880,236, 66988,67038,67078,67087,67101,67109,67120,66532,66534,317, 1325, 14316,66548,332, 66550,38920,66551,66533,66535,66536,6532,
+ 66537,6002, 66538,2156, 66540,2571, 66541,66543,66546,66547,7405, 317, 356, 15237,66539,66542,66544,66545,343, 343, 390, 371, 32658,2402, 5752, 61843,317,
66549,553, 356, 466, 1358, 317, 370, 317, 317, 949, 66553,66558,66562,66571,66584,2116, 66587,66589,4980, 317, 66590,7314, 371, 66554,317, 574, 66555,
66556,24059,332, 345, 317, 343, 345, 66557,66559,66561,558, 2044, 317, 4984, 317, 317, 66560,596, 4980, 317, 317, 16637,39796,66563,317, 31606,57899,
- 66564,66569,317, 490, 9304, 317, 345, 1358, 343, 29449,28479,66565,24024,66566,66567,317, 317, 317, 317, 637, 317, 633, 1160, 5033, 317, 7925, 317,
+ 66564,66569,317, 490, 9304, 317, 345, 1358, 343, 29449,28479,66565,24024,66566,66567,317, 317, 317, 317, 637, 317, 633, 1160, 5033, 317, 7925, 317,
66568,317, 12154,4984, 363, 66570,66572,66576,317, 66577,66578,3125, 66582,66583,66573,66574,15504,356, 66575,317, 10471,7990, 550, 7777, 6228, 317, 12006,
- 317, 23376,66579,66581,2271, 66580,66585,363, 66586,332, 317, 317, 332, 317, 317, 2503, 66588,317, 9768, 554, 5732, 883, 317, 317, 5238, 370, 371,
+ 317, 23376,66579,66581,2271, 66580,66585,363, 66586,332, 317, 317, 332, 317, 317, 2503, 66588,317, 9768, 554, 5732, 883, 317, 317, 5238, 370, 371,
317, 66591,66592,317, 370, 2571, 317, 345, 66594,66595,345, 66597,66610,66611,343, 66642,66643,66646,317, 5423, 2533, 12429,317, 5788, 5611, 66596,66598,
6195, 66599,2024, 31580,363, 596, 66608,14093,345, 317, 47948,356, 317, 66600,66602,66605,66606,317, 66607,317, 66601,66603,5255, 66604,10471,1358, 66609,
- 66612,66614,5825, 320, 633, 66615,66620,66623,66624,66625,66628,66629,66632,4952, 66633,66634,66635,3075, 11158,66636,5037, 66640,66641,317, 66613,18947,2503,
- 17445,66616,380, 66617,1230, 66618,66619,66621,9914, 66622,397, 23325,317, 28650,450, 66626,6420, 66627,317, 637, 6996, 1160, 633, 317, 649, 11786,356,
+ 66612,66614,5825, 320, 633, 66615,66620,66623,66624,66625,66628,66629,66632,4952, 66633,66634,66635,3075, 11158,66636,5037, 66640,66641,317, 66613,18947,2503,
+ 17445,66616,380, 66617,1230, 66618,66619,66621,9914, 66622,397, 23325,317, 28650,450, 66626,6420, 66627,317, 637, 6996, 1160, 633, 317, 649, 11786,356,
5217, 370, 1160, 1078, 15123,551, 66630,355, 428, 66631,48588,356, 5255, 465, 1347, 47566,317, 317, 3599, 317, 66637,66638,66639,428, 428, 2063, 20977,
- 317, 317, 317, 317, 317, 8301, 2077, 2171, 317, 2503, 317, 66644,66645,66648,5896, 66650,66652,66661,554, 66663,15732,66666,66669,66670,66672,317, 4982,
+ 317, 317, 317, 317, 317, 8301, 2077, 2171, 317, 2503, 317, 66644,66645,66648,5896, 66650,66652,66661,554, 66663,15732,66666,66669,66670,66672,317, 4982,
3987, 317, 7698, 317, 1358, 2163, 317, 66649,317, 2134, 5793, 1030, 66651,384, 317, 15682,1347, 317, 317, 66653,363, 350, 48421,66654,26830,66656,66657,
- 6420, 66659,317, 10538,317, 6674, 389, 66655,363, 2405, 2405, 66658,1135, 8614, 6674, 35678,6674, 4949, 66660,362, 317, 7785, 66655,66662,317, 7698, 371,
+ 6420, 66659,317, 10538,317, 6674, 389, 66655,363, 2405, 2405, 66658,1135, 8614, 6674, 35678,6674, 4949, 66660,362, 317, 7785, 66655,66662,317, 7698, 371,
12994,2132, 4591, 66664,66665,12994,317, 317, 317, 317, 317, 404, 66667,66668,17565,12994,1453, 66671,332, 26076,66673,12994,66675,66674,12994,1108, 12920,
5962, 66676,66680,6555, 66677,317, 596, 66678,66679,1108, 317, 317, 66681,66683,1453, 66684,2084, 66685,66686,32289,66690,66691,66692,46214,66694,66696,66700,
- 350, 343, 351, 343, 511, 384, 13392,2219, 317, 57722,22983,317, 66687,66688,66689,362, 317, 345, 1358, 28201,12696,15778,8178, 66693,66695,662, 317,
+ 350, 343, 351, 343, 511, 384, 13392,2219, 317, 57722,22983,317, 66687,66688,66689,362, 317, 345, 1358, 28201,12696,15778,8178, 66693,66695,662, 317,
390, 317, 382, 390, 66697,66698,466, 343, 350, 350, 66699,351, 466, 26001,350, 66701,66704,317, 30090,2298, 66702,66703,380, 66705,4965, 66706,66708,
- 28720,66709,66710,6763, 66712,66715,66717,6954, 66720,66721,66725,66726,4976, 66728,66713,332, 66714,317, 317, 14251,3284, 25086,1347, 66716,345, 6228, 317,
- 332, 12057,66718,362, 66719,332, 9059, 1194, 363, 351, 11339,2551, 390, 4944, 4976, 66722,66723,66724,396, 317, 2317, 16508,66727,66729,66730,317, 317,
+ 28720,66709,66710,6763, 66712,66715,66717,6954, 66720,66721,66725,66726,4976, 66728,66713,332, 66714,317, 317, 14251,3284, 25086,1347, 66716,345, 6228, 317,
+ 332, 12057,66718,362, 66719,332, 9059, 1194, 363, 351, 11339,2551, 390, 4944, 4976, 66722,66723,66724,396, 317, 2317, 16508,66727,66729,66730,317, 317,
2171, 317, 66731,66732,66734,66735,7866, 66736,66739,66741,2222, 66742,66743,317, 66750,66751,66753,8392, 6847, 66737,66738,317, 16854,490, 66740,566, 11613,
466, 362, 3529, 66744,11662,351, 31797,66747,66745,66746,4943, 66748,66749,66752,350, 2222, 317, 9064, 450, 1347, 66756,1347, 66758,66759,66760,9702, 66762,
- 66761,44910,317, 66764,44555,66766,66770,66772,66773,66785,390, 66786,317, 9262, 371, 66765,371, 317, 1347, 66767,317, 1160, 317, 66768,66769,1347, 317,
- 343, 66771,363, 5838, 363, 9575, 404, 66774,1194, 66775,317, 16023,66781,362, 66783,2584, 317, 66784,2551, 317, 2551, 317, 356, 66776,2067, 317, 317,
+ 66761,44910,317, 66764,44555,66766,66770,66772,66773,66785,390, 66786,317, 9262, 371, 66765,371, 317, 1347, 66767,317, 1160, 317, 66768,66769,1347, 317,
+ 343, 66771,363, 5838, 363, 9575, 404, 66774,1194, 66775,317, 16023,66781,362, 66783,2584, 317, 66784,2551, 317, 2551, 317, 356, 66776,2067, 317, 317,
66777,66780,15680,4980, 66778,66779,15968,317, 66782,404, 317, 11928,4980, 371, 381, 350, 317, 66397,1060, 1428, 396, 317, 404, 34975,363, 37776,66788,
66810,66812,2024, 66815,965, 8172, 66817,66820,11879,66821,66822,66823,66824,317, 66789,7127, 371, 66792,6063, 66793,66808,66809,1481, 317, 651, 66790,66791,
- 1266, 1112, 672, 317, 66794,66795,66796,66797,317, 66801,66803,66804,1700, 317, 6420, 10506,466, 7805, 317, 6458, 8099, 9226, 66798,11881,66799,317, 365,
- 66800,7888, 5225, 356, 11607,396, 741, 11831,66802,16508,317, 5838, 363, 66805,66806,1109, 9857, 66807,317, 13478,9174, 66811,10560,404, 6674, 317, 3505,
- 867, 37205,66813,8446, 7143, 9931, 317, 66814,317, 317, 317, 418, 66816,332, 5611, 317, 1347, 350, 66818,66819,351, 317, 466, 2022, 66825,66826,5055,
+ 1266, 1112, 672, 317, 66794,66795,66796,66797,317, 66801,66803,66804,1700, 317, 6420, 10506,466, 7805, 317, 6458, 8099, 9226, 66798,11881,66799,317, 365,
+ 66800,7888, 5225, 356, 11607,396, 741, 11831,66802,16508,317, 5838, 363, 66805,66806,1109, 9857, 66807,317, 13478,9174, 66811,10560,404, 6674, 317, 3505,
+ 867, 37205,66813,8446, 7143, 9931, 317, 66814,317, 317, 317, 418, 66816,332, 5611, 317, 1347, 350, 66818,66819,351, 317, 466, 2022, 66825,66826,5055,
317, 345, 949, 66828,66835,66843,66846,16017,66847,7334, 4984, 404, 66848,66851,317, 18070,66853,11940,317, 13174,66829,317, 2272, 66830,317, 66831,66834,
66832,66833,6228, 317, 1353, 20331,66836,66839,317, 66840,66837,66838,66841,66842,20909,66844,19691,66845,317, 9027, 381, 317, 357, 317, 595, 317, 66849,
66850,317, 317, 16017,66852,317, 2211, 2211, 363, 42690,66855,66857,66858,66860,66862,1358, 66864,66865,66870,317, 66856,14337,12237,24209,350, 317, 25545,
345, 317, 551, 39793,6419, 66859,6089, 66861,1325, 379, 12237,6275, 317, 317, 66863,490, 558, 317, 66866,66869,66867,66868,15646,466, 317, 1489, 19303,
66871,317, 19661,2036, 13124,30882,317, 317, 339, 66873,66874,490, 66875,317, 317, 66160,317, 1230, 490, 382, 3284, 66876,332, 13559,66878,66879,66881,
15867,65528,1358, 1347, 350, 66884,370, 317, 66882,2845, 66883,419, 4943, 66885,66886,66895,66898,66901,66946,66948,66956,66962,66963,350, 66965,66966,66979,
- 5105, 16123,7784, 66987,66887,5611, 66888,66891,66892,66893,66894,5439, 2110, 2537, 748, 490, 18736,66889,490, 363, 317, 317, 66890,490, 9993, 439, 439,
+ 5105, 16123,7784, 66987,66887,5611, 66888,66891,66892,66893,66894,5439, 2110, 2537, 748, 490, 18736,66889,490, 363, 317, 317, 66890,490, 9993, 439, 439,
317, 350, 317, 5891, 317, 332, 38431,4949, 66896,66897,4943, 426, 380, 6674, 317, 317, 66899,66900,2081, 1060, 317, 6648, 3645, 2381, 317, 1266, 66902,
- 66903,66910,6195, 8023, 66911,66912,66914,66917,357, 1160, 66943,427, 5037, 66945,317, 66904,10429,66905,66906,66908,427, 10454,380, 66907,371, 371, 4943,
- 66909,22412,390, 439, 343, 66913,8354, 363, 66915,66916,317, 47317,5255, 343, 2369, 5943, 66918,66923,66927,4965, 13658,66929,66930,66931,5644, 605, 6601,
+ 66903,66910,6195, 8023, 66911,66912,66914,66917,357, 1160, 66943,427, 5037, 66945,317, 66904,10429,66905,66906,66908,427, 10454,380, 66907,371, 371, 4943,
+ 66909,22412,390, 439, 343, 66913,8354, 363, 66915,66916,317, 47317,5255, 343, 2369, 5943, 66918,66923,66927,4965, 13658,66929,66930,66931,5644, 605, 6601,
3869, 66936,66938,66941,66942,66919,66920,66921,4949, 9695, 66922,427, 2219, 427, 371, 38493,2117, 426, 45883,66924,66925,66926,66928,40798,16031,501, 11940,
- 2948, 8224, 66932,13219,66934,66933,66935,66937,25847,384, 15260,66939,66940,514, 350, 578, 32892,317, 317, 66944,14344,428, 2063, 66947,351, 1109, 362,
- 66949,66950,66952,66953,66954,317, 66955,317, 317, 66951,317, 317, 317, 3284, 427, 66957,66958,66960,317, 66959,1383, 317, 66961,11346,66964,396, 317,
- 7618, 66967,54212,332, 6195, 66968,66972,66976,66977,13394,66978,427, 5037, 317, 380, 5611, 17768,380, 66969,11945,317, 317, 66971,317, 66970,317, 317,
+ 2948, 8224, 66932,13219,66934,66933,66935,66937,25847,384, 15260,66939,66940,514, 350, 578, 32892,317, 317, 66944,14344,428, 2063, 66947,351, 1109, 362,
+ 66949,66950,66952,66953,66954,317, 66955,317, 317, 66951,317, 317, 317, 3284, 427, 66957,66958,66960,317, 66959,1383, 317, 66961,11346,66964,396, 317,
+ 7618, 66967,54212,332, 6195, 66968,66972,66976,66977,13394,66978,427, 5037, 317, 380, 5611, 17768,380, 66969,11945,317, 317, 66971,317, 66970,317, 317,
7142, 317, 351, 5439, 694, 317, 317, 66973,317, 66974,350, 490, 66975,317, 536, 404, 1588, 351, 363, 66980,66981,66983,343, 66984,66985,317, 66982,
- 317, 1347, 317, 15839,380, 66986,427, 6394, 9878, 66989,66992,66993,66997,67016,67018,362, 350, 67020,67023,15337,67024,67033,317, 66990,66991,54278,5909,
- 317, 317, 332, 6486, 5046, 1044, 17454,317, 66994,66996,66995,32950,4949, 466, 4962, 317, 6204, 66998,24120,67000,67006,67007,13607,332, 67009,67010,434,
+ 317, 1347, 317, 15839,380, 66986,427, 6394, 9878, 66989,66992,66993,66997,67016,67018,362, 350, 67020,67023,15337,67024,67033,317, 66990,66991,54278,5909,
+ 317, 317, 332, 6486, 5046, 1044, 17454,317, 66994,66996,66995,32950,4949, 466, 4962, 317, 6204, 66998,24120,67000,67006,67007,13607,332, 67009,67010,434,
2584, 67011,67014,66999,4949, 448, 5255, 350, 380, 67001,67003,11055,67002,2108, 10560,10560,67004,67005,317, 427, 341, 54243,2108, 578, 12060,2334, 67008,
37793,15221,67012,2310, 67013,67015,67017,67019,52924,5836, 332, 67021,67022,8695, 317, 490, 22681,384, 67025,67027,362, 26394,363, 67031,317, 317, 27787,
67026,4965, 67028,67029,67030,4591, 4591, 67032,67034,490, 67035,67036,332, 317, 67037,317, 67039,67040,67042,363, 61385,67043,67049,67050,67053,67055,67057,
- 1358, 67065,67067,67072,348, 317, 317, 363, 67077,2326, 7312, 596, 317, 67041,63824,63824,63824,67044,67045,350, 11144,381, 317, 990, 14483,466, 370,
- 67046,67048,11911,4980, 67047,2719, 345, 2211, 3529, 67051,393, 67052,67054,338, 2067, 317, 67056,67058,6394, 67064,15334,67059,67061,67062,12434,370, 317,
- 67063,1060, 317, 67060,427, 9479, 389, 370, 355, 392, 21168,558, 15510,5037, 4984, 67066,390, 67068,317, 466, 67069,5363, 317, 67070,67071,1347, 590,
- 396, 17926,67073,23015,67074,7367, 363, 404, 1358, 67076,694, 317, 19922,1347, 317, 67075,462, 363, 67079,67081,67084,67086,371, 67080,67082,67083,6228,
- 317, 317, 1160, 317, 332, 67085,490, 351, 44294,67088,67089,67091,67092,67093,67094,466, 67095,362, 67098,578, 11055,67099,404, 558, 384, 67090,381,
- 38861,363, 596, 1160, 317, 12966,1109, 1347, 381, 317, 11229,67096,67097,317, 16319,404, 67100,363, 67102,67104,2610, 6713, 44636,67103,317, 317, 317,
- 8529, 7590, 7064, 67105,67106,67107,317, 67108,949, 67110,67113,343, 345, 67114,67115,14792,67116,67117,67118,67119,67111,317, 317, 317, 6514, 1345, 1160,
- 67112,380, 370, 501, 317, 6412, 67121,67123,67125,350, 10633,13638,4984, 490, 11146,67126,67122,317, 317, 343, 343, 3284, 11242,317, 67124,490, 9567,
+ 1358, 67065,67067,67072,348, 317, 317, 363, 67077,2326, 7312, 596, 317, 67041,63824,63824,63824,67044,67045,350, 11144,381, 317, 990, 14483,466, 370,
+ 67046,67048,11911,4980, 67047,2719, 345, 2211, 3529, 67051,393, 67052,67054,338, 2067, 317, 67056,67058,6394, 67064,15334,67059,67061,67062,12434,370, 317,
+ 67063,1060, 317, 67060,427, 9479, 389, 370, 355, 392, 21168,558, 15510,5037, 4984, 67066,390, 67068,317, 466, 67069,5363, 317, 67070,67071,1347, 590,
+ 396, 17926,67073,23015,67074,7367, 363, 404, 1358, 67076,694, 317, 19922,1347, 317, 67075,462, 363, 67079,67081,67084,67086,371, 67080,67082,67083,6228,
+ 317, 317, 1160, 317, 332, 67085,490, 351, 44294,67088,67089,67091,67092,67093,67094,466, 67095,362, 67098,578, 11055,67099,404, 558, 384, 67090,381,
+ 38861,363, 596, 1160, 317, 12966,1109, 1347, 381, 317, 11229,67096,67097,317, 16319,404, 67100,363, 67102,67104,2610, 6713, 44636,67103,317, 317, 317,
+ 8529, 7590, 7064, 67105,67106,67107,317, 67108,949, 67110,67113,343, 345, 67114,67115,14792,67116,67117,67118,67119,67111,317, 317, 317, 6514, 1345, 1160,
+ 67112,380, 370, 501, 317, 6412, 67121,67123,67125,350, 10633,13638,4984, 490, 11146,67126,67122,317, 317, 343, 343, 3284, 11242,317, 67124,490, 9567,
317, 40718,490, 67129,67131,67130,67132,67133,317, 67134,619, 67136,5286, 67137,4617, 490, 339, 67139,22210,67140,67141,317, 24195,67138,2272, 4619, 67143,
67146,396, 317, 345, 371, 345, 67148,67144,67145,67147,67149,67150,67151,342, 67152,67153,67155,67180,67185,67205,67215,67226,67234,67238,67242,67243,67245,
- 67253,67286,67308,67311,67319,67320,67362,67382,67383,15274,2067, 67388,67389,404, 2416, 390, 67154,21067,371, 34177,365, 67156,67160,67164,67167,67172,350,
- 67173,67174,9876, 67176,67178,67157,332, 1915, 390, 67158,2086, 67159,67161,12434,343, 317, 317, 67162,317, 67163,8557, 317, 317, 371, 6817, 67165,317,
+ 67253,67286,67308,67311,67319,67320,67362,67382,67383,15274,2067, 67388,67389,404, 2416, 390, 67154,21067,371, 34177,365, 67156,67160,67164,67167,67172,350,
+ 67173,67174,9876, 67176,67178,67157,332, 1915, 390, 67158,2086, 67159,67161,12434,343, 317, 317, 67162,317, 67163,8557, 317, 317, 371, 6817, 67165,317,
67166,317, 317, 16129,543, 32952,15337,350, 67168,67169,67170,1347, 317, 67171,317, 404, 7792, 332, 741, 7990, 317, 2108, 59612,9692, 6578, 3529, 20098,
- 317, 317, 67175,427, 1347, 471, 67177,317, 317, 351, 67179,365, 2105, 11347,67181,67182,67184,317, 343, 362, 317, 345, 317, 67183,67183,67186,565,
- 67187,67190,37659,317, 67193,1020, 67200,362, 67201,67203,490, 565, 15130,20112,9436, 371, 317, 317, 8023, 317, 67188,67189,343, 384, 384, 317, 371,
+ 317, 317, 67175,427, 1347, 471, 67177,317, 317, 351, 67179,365, 2105, 11347,67181,67182,67184,317, 343, 362, 317, 345, 317, 67183,67183,67186,565,
+ 67187,67190,37659,317, 67193,1020, 67200,362, 67201,67203,490, 565, 15130,20112,9436, 371, 317, 317, 8023, 317, 67188,67189,343, 384, 384, 317, 371,
2171, 8301, 2077, 363, 53186,67191,7949, 67192,476, 332, 67194,317, 2222, 67195,317, 317, 67199,67196,67197,67198,3361, 428, 317, 428, 370, 67202,61697,
317, 5836, 67204,317, 317, 317, 390, 11915,67206,35445,67207,317, 67208,67209,67211,67213,67214,6551, 363, 389, 1347, 2219, 317, 351, 2222, 49497,67210,
350, 67212,1358, 348, 8600, 490, 2193, 15377,317, 351, 350, 317, 317, 317, 67216,67218,67224,6387, 67225,67217,317, 32267,6594, 351, 67219,8948, 24145,
- 67220,9832, 67222,67223,5581, 345, 5055, 67221,2845, 67227,67229,67230,317, 67233,24393,317, 479, 67228,6228, 317, 317, 317, 362, 2022, 317, 1160, 317,
+ 67220,9832, 67222,67223,5581, 345, 5055, 67221,2845, 67227,67229,67230,317, 67233,24393,317, 479, 67228,6228, 317, 317, 317, 362, 2022, 317, 1160, 317,
67231,67232,2156, 317, 317, 66808,5570, 61807,5032, 53593,67235,5662, 15749,67236,317, 67237,350, 439, 317, 3999, 5662, 396, 5130, 317, 675, 67239,67240,
- 67241,350, 332, 8563, 5225, 356, 466, 4591, 317, 317, 317, 1597, 11921,67244,317, 2210, 317, 1108, 67246,67247,67250,67252,2391, 363, 317, 9695, 317,
+ 67241,350, 332, 8563, 5225, 356, 466, 4591, 317, 317, 317, 1597, 11921,67244,317, 2210, 317, 1108, 67246,67247,67250,67252,2391, 363, 317, 9695, 317,
35294,21413,67248,317, 67249,317, 381, 589, 317, 2671, 67251,10878,404, 363, 351, 317, 362, 317, 67254,67255,67258,67259,67261,15745,67263,2022, 67266,
- 67268,8023, 67279,67282,48353,5898, 67256,67257,551, 1345, 10877,5241, 317, 1345, 317, 3505, 67260,67262,65477,3284, 67264,67265,350, 317, 472, 345, 5105,
+ 67268,8023, 67279,67282,48353,5898, 67256,67257,551, 1345, 10877,5241, 317, 1345, 317, 3505, 67260,67262,65477,3284, 67264,67265,350, 317, 472, 345, 5105,
11473,67267,20712,490, 67269,317, 67276,67277,373, 317, 345, 317, 67270,67271,67272,67273,67274,67275,67278,317, 67271,67280,370, 6598, 363, 67281,67283,
67284,67285,67287,67288,67289,67291,67296,67300,6578, 18234,67301,67302,4987, 6601, 10081,15377,55678,345, 7405, 67307,2298, 4280, 5281, 7405, 450, 317, 67290,
67292,20909,5353, 3023, 67293,339, 5841, 6601, 67294,380, 380, 490, 3111, 1732, 67295,6604, 345, 67297,67298,7438, 67299,412, 2381, 67303,67304,67306,64537,
- 14786,390, 67305,363, 5428, 396, 332, 67309,67310,7399, 67312,67313,67315,343, 10223,2391, 67316,12297,67318,1325, 380, 1347, 317, 67314,67317,6593, 317,
- 13685,381, 380, 371, 28112,1060, 317, 67321,38636,67322,67326,67327,67334,67336,67337,7850, 6651, 6532, 67340,67353,317, 5055, 67361,6993, 67323,67325,2211,
- 7785, 13392,67324,2366, 2405, 317, 380, 317, 381, 317, 67328,12349,67330,67331,67332,11034,67333,2402, 9420, 404, 5037, 5809, 67329,363, 363, 1358, 317,
+ 14786,390, 67305,363, 5428, 396, 332, 67309,67310,7399, 67312,67313,67315,343, 10223,2391, 67316,12297,67318,1325, 380, 1347, 317, 67314,67317,6593, 317,
+ 13685,381, 380, 371, 28112,1060, 317, 67321,38636,67322,67326,67327,67334,67336,67337,7850, 6651, 6532, 67340,67353,317, 5055, 67361,6993, 67323,67325,2211,
+ 7785, 13392,67324,2366, 2405, 317, 380, 317, 381, 317, 67328,12349,67330,67331,67332,11034,67333,2402, 9420, 404, 5037, 5809, 67329,363, 363, 1358, 317,
8526, 1347, 317, 363, 11687,317, 1992, 365, 390, 11146,317, 67335,67338,370, 67339,842, 67341,67342,67345,26175,362, 7850, 67348,56429,67352,317, 67343,
- 5223, 317, 5223, 317, 317, 67344,67346,5650, 317, 317, 67347,67349,317, 12949,317, 67350,67351,67354,67356,67357,11128,363, 5624, 67360,317, 317, 382,
+ 5223, 317, 5223, 317, 317, 67344,67346,5650, 317, 317, 67347,67349,317, 12949,317, 67350,67351,67354,67356,67357,11128,363, 5624, 67360,317, 317, 382,
67355,5896, 317, 1481, 317, 7910, 67358,317, 1992, 67359,490, 1526, 6228, 1160, 317, 8301, 2077, 317, 317, 2381, 13638,67363,67365,2509, 67368,67376,67377,
67378,362, 67380,67381,317, 67364,7792, 1109, 317, 6551, 6551, 3284, 67366,317, 67367,351, 4949, 67369,67370,10476,67374,362, 37254,501, 2024, 67371,67373,
5896, 67372,5616, 427, 2024, 6645, 317, 67375,990, 18166,6551, 9163, 343, 363, 12803,439, 67379,363, 7866, 7734, 12704,362, 317, 67384,18084,67385,67386,
67387,433, 345, 343, 317, 350, 317, 67390,67391,67393,11146,332, 67392,67394,67395,67397,67398,1108, 67399,67400,67402,390, 67404,67406,67408,67412,67414,
67418,67419,67422,67423,67424,67427,67433,67434,67436,1020, 67437,67439,67440,11346,339, 15618,67407,362, 637, 1300, 320, 5022, 317, 317, 317, 67409,10316,
- 4949, 67410,490, 883, 67411,479, 44431,317, 46112,381, 8828, 317, 67413,450, 11702,67415,5896, 67416,363, 362, 13632,11280,363, 67417,317, 6420, 317,
+ 4949, 67410,490, 883, 67411,479, 44431,317, 46112,381, 8828, 317, 67413,450, 11702,67415,5896, 67416,363, 362, 13632,11280,363, 67417,317, 6420, 317,
12605,6195, 317, 7214, 16535,317, 67420,67421,380, 551, 3505, 67425,16553,11040,67426,317, 16670,356, 27689,5836, 67428,67432,317, 8274, 67429,67431,67430,
65517,9450, 428, 381, 2188, 67435,13638,10185,949, 5993, 351, 7214, 317, 332, 490, 1992, 50879,18688,67438,351, 362, 15130,345, 350, 363, 2073, 11388,
365, 67441,317, 67442,67444,1943, 67447,1881, 67452,67445,67446,67448,67449,67450,67451,605, 56278,67453,67454,67456,342, 67467,67468,67486,67488,67494,67500,
- 67502,67506,239, 68375,242, 69114,244, 69795,69806,245, 250, 70877,251, 252, 253, 254, 255, 256, 72169,72202,72237,259, 266, 73954,269, 74159,270,
+ 67502,67506,239, 68375,242, 69114,244, 69795,69806,245, 250, 70877,251, 252, 253, 254, 255, 256, 72169,72202,72237,259, 266, 73954,269, 74159,270,
74305,7053, 392, 380, 15226,61657,67455,4797, 42613,4797, 67457,4797, 19789,40499,67464,67466,67458,317, 67459,67460,67461,67462,67463,67465,67469,67471,67477,
541, 67483,67470,928, 67472,67473,67474,67475,67476,317, 67478,67479,67480,67481,67482,67484,67485,620, 67487,67489,67490,67491,67492,67493,67495,67496,67497,
67498,67499,67501,67503,67504,67505,67507,67508,67509,67510,67511,67528,67559,67595,67614,67626,67644,67667,67682,67718,67720,240, 67838,241, 68083,68085,68100,
68105,68186,68220,68278,68309,68335,68346,68355,68373,67512,67516,317, 350, 67517,67521,5120, 8178, 67523,317, 67527,12225,67513,67514,4603, 317, 317, 67515,
381, 317, 4925, 1287, 67518,67519,67520,317, 67522,578, 16277,67524,317, 67526,46954,4952, 67525,2078, 65775,67529,67538,317, 67542,490, 67546,67548,67550,
- 67554,9265, 67558,317, 67530,390, 317, 317, 490, 67531,67532,67533,26310,67535,428, 1347, 67534,7776, 6300, 67536,317, 67537,317, 67539,545, 390, 317,
- 67540,1160, 67541,363, 2110, 1459, 67543,490, 67545,317, 67544,317, 9198, 11939,317, 317, 4984, 67547,317, 317, 2067, 317, 1347, 317, 317, 317, 345,
- 363, 67549,14595,317, 67551,67553,17410,67552,10817,21786,317, 67555,67556,1943, 317, 317, 21296,67557,67560,67563,317, 67570,67576,67578,67581,317, 5840,
+ 67554,9265, 67558,317, 67530,390, 317, 317, 490, 67531,67532,67533,26310,67535,428, 1347, 67534,7776, 6300, 67536,317, 67537,317, 67539,545, 390, 317,
+ 67540,1160, 67541,363, 2110, 1459, 67543,490, 67545,317, 67544,317, 9198, 11939,317, 317, 4984, 67547,317, 317, 2067, 317, 1347, 317, 317, 317, 345,
+ 363, 67549,14595,317, 67551,67553,17410,67552,10817,21786,317, 67555,67556,1943, 317, 317, 21296,67557,67560,67563,317, 67570,67576,67578,67581,317, 5840,
317, 67561,7657, 343, 5032, 2387, 59021,67562,67564,67565,7916, 7385, 67566,6993, 317, 67567,2272, 67568,427, 67569,6546, 1881, 67571,67573,29922,67574,58387,
317, 317, 317, 2715, 67572,317, 67575,2409, 380, 67577,466, 350, 362, 345, 22114,317, 5037, 67579,67580,67582,21772,67587,317, 427, 317, 67583,67584,
- 317, 67585,67586,67588,67591,67594,67589,67590,67592,67593,949, 67596,10442,317, 67598,67603,317, 350, 67604,67605,67607,362, 2571, 67608,5120, 5295, 8205,
- 343, 67597,357, 317, 317, 317, 317, 5355, 67599,343, 67600,67602,12262,317, 381, 67601,1194, 317, 1347, 317, 5809, 317, 2078, 317, 317, 317, 2035,
+ 317, 67585,67586,67588,67591,67594,67589,67590,67592,67593,949, 67596,10442,317, 67598,67603,317, 350, 67604,67605,67607,362, 2571, 67608,5120, 5295, 8205,
+ 343, 67597,357, 317, 317, 317, 317, 5355, 67599,343, 67600,67602,12262,317, 381, 67601,1194, 317, 1347, 317, 5809, 317, 2078, 317, 317, 317, 2035,
490, 1347, 67606,317, 317, 317, 8448, 6228, 317, 2077, 5483, 317, 351, 350, 22370,317, 5295, 67609,2110, 3284, 45672,45719,67610,67611,67612,67613,67615,
356, 5623, 350, 2845, 365, 67616,20623,67618,5561, 67623,317, 67617,317, 2222, 67619,317, 317, 67620,67621,67622,67624,350, 67625,479, 67627,67629,67630,
67636,67638,332, 2022, 67639,67640,317, 357, 67628,7328, 1347, 5711, 351, 5108, 67631,317, 67632,7401, 67633,370, 317, 5223, 32022,67635,1230, 317, 32297,
67634,32092,351, 67637,404, 351, 1109, 1358, 67641,381, 67643,67642,67645,67650,67651,67653,67658,362, 67662,67663,67666,466, 317, 67646,317, 67647,67648,
9436, 317, 38833,351, 67649,8612, 2060, 36963,14571,8948, 317, 13427,1347, 317, 317, 393, 67652,382, 7916, 12154,67654,2178, 67655,67656,317, 67657,67659,
- 15540,67660,67661,67664,67665,867, 2537, 42582,380, 317, 67668,67672,67673,5561, 67674,317, 67675,489, 67676,450, 67677,317, 67680,1109, 370, 67669,1020,
- 67670,67671,1109, 317, 317, 317, 317, 5619, 433, 5896, 351, 317, 67678,67679,1602, 649, 633, 320, 67681,317, 46531,67683,67684,5711, 55333,67685,5120,
- 67686,404, 67693,5217, 40600,67713,67714,67715,67716,317, 7928, 317, 4984, 5105, 4984, 2208, 67687,48845,14337,388, 67688,67690,6186, 317, 67689,67691,317,
+ 15540,67660,67661,67664,67665,867, 2537, 42582,380, 317, 67668,67672,67673,5561, 67674,317, 67675,489, 67676,450, 67677,317, 67680,1109, 370, 67669,1020,
+ 67670,67671,1109, 317, 317, 317, 317, 5619, 433, 5896, 351, 317, 67678,67679,1602, 649, 633, 320, 67681,317, 46531,67683,67684,5711, 55333,67685,5120,
+ 67686,404, 67693,5217, 40600,67713,67714,67715,67716,317, 7928, 317, 4984, 5105, 4984, 2208, 67687,48845,14337,388, 67688,67690,6186, 317, 67689,67691,317,
67692,317, 2322, 404, 1347, 7785, 15600,25782,67694,317, 67695,317, 67515,5447, 67711,6089, 15378,67712,1160, 317, 67696,67697,67698,67699,67700,67701,67702,
- 67703,67704,67708,67705,67706,67707,67709,67710,12625,317, 317, 6322, 490, 363, 2845, 371, 317, 317, 490, 67717,7850, 356, 355, 67719,9581, 345, 401,
- 67721,67725,67726,67728,67730,67731,370, 67732,24279,67734,490, 317, 37402,317, 45154,317, 67722,67723,67724,490, 3284, 2322, 6899, 317, 35307,317, 317,
+ 67703,67704,67708,67705,67706,67707,67709,67710,12625,317, 317, 6322, 490, 363, 2845, 371, 317, 317, 490, 67717,7850, 356, 355, 67719,9581, 345, 401,
+ 67721,67725,67726,67728,67730,67731,370, 67732,24279,67734,490, 317, 37402,317, 45154,317, 67722,67723,67724,490, 3284, 2322, 6899, 317, 35307,317, 317,
317, 67727,317, 67729,61789,6834, 490, 317, 490, 317, 16620,5836, 67733,2306, 317, 2086, 46530,67735,490, 67736,67737,67755,67756,67758,67762,67773,67774,
67777,22157,67790,67796,67800,50595,67805,67807,67817,67819,67831,67833,67835,427, 67738,67739,67740,67741,67743,8243, 317, 37821,67745,67749,67750,67751,67752,
2631, 317, 67753,19455,7590, 317, 6920, 317, 317, 67742,67744,6961, 6961, 67746,390, 55639,6318, 317, 1459, 67747,317, 490, 1109, 67748,2510, 490, 23995,
@@ -11287,79 +11282,79 @@ static const unsigned int ChildLocs[185261] =
67787,317, 67789,67779,67780,5190, 67782,1347, 1347, 2222, 397, 317, 67786,317, 7590, 21434,67788,351, 13174,67791,67792,67793,501, 67794,317, 412, 67795,
390, 1358, 317, 317, 317, 1347, 10878,317, 6228, 317, 2366, 2077, 317, 49562,67797,46954,67798,404, 490, 317, 404, 67799,317, 317, 5687, 5300, 18029,
345, 67801,67802,67804,343, 317, 2715, 427, 10626,317, 6690, 2603, 317, 66949,490, 67803,317, 6420, 47180,67806,2371, 362, 18840,740, 67808,67809,67810,
- 67811,12616,39054,2571, 67812,28079,7949, 345, 67814,67815,67816,2631, 8766, 390, 316, 389, 5481, 2142, 13228,343, 317, 67813,26328,349, 15961,317, 2077,
- 8281, 5896, 31236,362, 363, 1109, 490, 365, 317, 25782,67818,7399, 5365, 5447, 466, 317, 67820,67828,67829,6546, 7385, 317, 67821,67824,343, 381, 317,
- 67825,343, 67822,67823,1325, 2537, 466, 67826,67827,1588, 2549, 4984, 2210, 2551, 6046, 2715, 317, 2105, 67830,7668, 317, 2715, 332, 2715, 67832,501, 7651,
+ 67811,12616,39054,2571, 67812,28079,7949, 345, 67814,67815,67816,2631, 8766, 390, 316, 389, 5481, 2142, 13228,343, 317, 67813,26328,349, 15961,317, 2077,
+ 8281, 5896, 31236,362, 363, 1109, 490, 365, 317, 25782,67818,7399, 5365, 5447, 466, 317, 67820,67828,67829,6546, 7385, 317, 67821,67824,343, 381, 317,
+ 67825,343, 67822,67823,1325, 2537, 466, 67826,67827,1588, 2549, 4984, 2210, 2551, 6046, 2715, 317, 2105, 67830,7668, 317, 2715, 332, 2715, 67832,501, 7651,
317, 67834,2510, 381, 67836,9444, 351, 44297,317, 5662, 67837,67839,619, 67841,67851,67857,2077, 67858,67860,10506,67861,67862,10962,67865,67867,27101,67874,
- 67878,67890,67891,67897,67898,67905,67906,4984, 5074, 67840,363, 67842,380, 490, 363, 67843,317, 317, 67844,365, 67848,317, 67850,13875,2997, 365, 317,
- 67845,29441,317, 67846,1347, 2809, 317, 67847,1347, 67849,4952, 332, 490, 390, 317, 5419, 427, 67852,18209,67853,67854,67855,67856,317, 8148, 317, 317,
+ 67878,67890,67891,67897,67898,67905,67906,4984, 5074, 67840,363, 67842,380, 490, 363, 67843,317, 317, 67844,365, 67848,317, 67850,13875,2997, 365, 317,
+ 67845,29441,317, 67846,1347, 2809, 317, 67847,1347, 67849,4952, 332, 490, 390, 317, 5419, 427, 67852,18209,67853,67854,67855,67856,317, 8148, 317, 317,
45844,317, 5570, 317, 9696, 31062,490, 590, 345, 317, 365, 351, 317, 67859,2571, 317, 317, 1020, 489, 1030, 371, 343, 67863,317, 1109, 42966,67864,
- 67866,466, 67868,67871,67872,5379, 370, 5616, 317, 381, 67873,388, 317, 67869,332, 33426,67870,5570, 5570, 7183, 317, 1300, 317, 633, 317, 8301, 2631,
+ 67866,466, 67868,67871,67872,5379, 370, 5616, 317, 381, 67873,388, 317, 67869,332, 33426,67870,5570, 5570, 7183, 317, 1300, 317, 633, 317, 8301, 2631,
2077, 332, 24455,317, 5616, 67875,381, 317, 539, 19478,380, 6492, 317, 67876,10626,5040, 14902,363, 67877,67879,9992, 67882,67883,67884,67886,67887,67889,
67880,67881,5526, 382, 390, 362, 867, 6278, 317, 490, 2178, 332, 67885,466, 67888,6964, 317, 24070,5684, 24242,1044, 67892,380, 67893,67894,67895,67896,
58359,404, 380, 67899,67900,380, 317, 67902,317, 317, 67901,6996, 317, 317, 29848,67903,317, 67904,370, 428, 393, 490, 949, 67907,67915,67916,67926,
- 67971,67973,67980,67994,67996,68001,68005,68008,68012,68016,68019,68021,68022,68025,68026,68035,317, 5037, 68080,68082,490, 317, 9993, 2171, 7490, 67908,317,
- 67910,2553, 67914,67909,67911,317, 67912,1791, 6176, 67913,4949, 479, 4949, 67917,67918,501, 2368, 67921,317, 67919,67920,317, 317, 317, 4591, 6179, 1358,
- 67922,9818, 67925,12463,67923,10528,370, 67924,14662,317, 317, 67927,67929,67932,12109,67939,67941,67944,67949,67951,36225,67952,67955,6601, 67957,67962,4980,
+ 67971,67973,67980,67994,67996,68001,68005,68008,68012,68016,68019,68021,68022,68025,68026,68035,317, 5037, 68080,68082,490, 317, 9993, 2171, 7490, 67908,317,
+ 67910,2553, 67914,67909,67911,317, 67912,1791, 6176, 67913,4949, 479, 4949, 67917,67918,501, 2368, 67921,317, 67919,67920,317, 317, 317, 4591, 6179, 1358,
+ 67922,9818, 67925,12463,67923,10528,370, 67924,14662,317, 317, 67927,67929,67932,12109,67939,67941,67944,67949,67951,36225,67952,67955,6601, 67957,67962,4980,
67966,67967,67969,67970,7850, 6917, 380, 362, 67928,11198,343, 317, 536, 317, 67930,4949, 426, 67931,4949, 390, 1347, 5962, 1347, 317, 67933,67934,67935,
362, 317, 67936,390, 317, 351, 2024, 351, 21938,1109, 2584, 67937,1020, 362, 67938,351, 551, 351, 317, 317, 363, 4984, 574, 67940,4591, 17887,67942,
- 67943,490, 396, 427, 317, 67945,317, 990, 67946,67947,332, 7411, 67948,317, 404, 317, 317, 9179, 317, 7389, 9450, 67950,381, 65159,2236, 433, 317,
- 362, 54360,5891, 67953,317, 433, 67954,4984, 317, 62675,351, 465, 67956,67958,67959,67961,317, 990, 67960,490, 371, 8275, 67963,67964,67965,426, 363,
+ 67943,490, 396, 427, 317, 67945,317, 990, 67946,67947,332, 7411, 67948,317, 404, 317, 317, 9179, 317, 7389, 9450, 67950,381, 65159,2236, 433, 317,
+ 362, 54360,5891, 67953,317, 433, 67954,4984, 317, 62675,351, 465, 67956,67958,67959,67961,317, 990, 67960,490, 371, 8275, 67963,67964,67965,426, 363,
67968,317, 1109, 380, 428, 25568,1266, 317, 317, 633, 2077, 317, 971, 7990, 67972,317, 5223, 317, 949, 1011, 55820,67974,67976,551, 67977,317, 26108,
- 67975,67978,67979,5032, 67981,67982,67984,67986,67987,590, 365, 317, 67989,349, 67990,14117,6402, 4980, 317, 370, 317, 67983,317, 317, 67985,7142, 1108,
+ 67975,67978,67979,5032, 67981,67982,67984,67986,67987,590, 365, 317, 67989,349, 67990,14117,6402, 4980, 317, 370, 317, 67983,317, 317, 67985,7142, 1108,
365, 24777,317, 67988,427, 18322,490, 317, 67991,67992,67993,345, 67995,47253,2134, 350, 317, 3750, 2142, 67997,67998,8557, 67999,39649,5226, 68000,68002,
1881, 31150,68003,365, 1347, 490, 317, 1109, 68004,6975, 68006,12142,68007,31986,317, 317, 396, 317, 8178, 5836, 2610, 68009,68011,68010,9449, 345, 68013,
68015,317, 68014,317, 68017,68018,363, 6993, 28795,3284, 365, 317, 2631, 317, 1109, 68020,345, 18978,2869, 404, 68023,68024,3726, 332, 450, 68027,68028,
- 68029,68031,7871, 15637,68033,5561, 68030,490, 68032,317, 1358, 489, 68034,68036,68039,68049,68053,68054,2022, 11196,68069,68078,317, 365, 68079,2609, 317,
- 68037,5266, 68038,10594,18068,490, 51054,317, 1220, 2035, 68040,5687, 6713, 21126,317, 68042,68043,68046,68047,317, 9702, 490, 68041,514, 27079,7386, 7521,
- 68044,68045,1416, 6917, 9300, 5032, 490, 317, 68048,5241, 21621,317, 68050,317, 68052,68051,3726, 490, 343, 11052,2551, 389, 3529, 68055,68056,68057,332,
- 68060,68063,317, 68066,332, 68058,68059,68061,56988,68062,317, 317, 317, 68064,317, 68065,2845, 2844, 68067,68068,68070,68071,7672, 68074,68075,68077,7143,
- 317, 28771,68072,68073,867, 51136,2142, 317, 60514,68076,317, 427, 317, 5687, 5120, 8301, 345, 5120, 18657,2609, 12849,7386, 6402, 514, 68081,332, 317,
- 46304,61273,44592,343, 68084,365, 345, 68086,68088,5022, 68089,68091,332, 27846,58377,68094,68096,2332, 317, 2322, 68087,332, 317, 51317,68090,11648,317,
- 68092,5836, 317, 332, 490, 68093,68095,7790, 5694, 490, 390, 68097,68098,5537, 867, 317, 12590,1347, 68099,317, 68101,68104,317, 68102,68103,2110, 1108,
+ 68029,68031,7871, 15637,68033,5561, 68030,490, 68032,317, 1358, 489, 68034,68036,68039,68049,68053,68054,2022, 11196,68069,68078,317, 365, 68079,2609, 317,
+ 68037,5266, 68038,10594,18068,490, 51054,317, 1220, 2035, 68040,5687, 6713, 21126,317, 68042,68043,68046,68047,317, 9702, 490, 68041,514, 27079,7386, 7521,
+ 68044,68045,1416, 6917, 9300, 5032, 490, 317, 68048,5241, 21621,317, 68050,317, 68052,68051,3726, 490, 343, 11052,2551, 389, 3529, 68055,68056,68057,332,
+ 68060,68063,317, 68066,332, 68058,68059,68061,56988,68062,317, 317, 317, 68064,317, 68065,2845, 2844, 68067,68068,68070,68071,7672, 68074,68075,68077,7143,
+ 317, 28771,68072,68073,867, 51136,2142, 317, 60514,68076,317, 427, 317, 5687, 5120, 8301, 345, 5120, 18657,2609, 12849,7386, 6402, 514, 68081,332, 317,
+ 46304,61273,44592,343, 68084,365, 345, 68086,68088,5022, 68089,68091,332, 27846,58377,68094,68096,2332, 317, 2322, 68087,332, 317, 51317,68090,11648,317,
+ 68092,5836, 317, 332, 490, 68093,68095,7790, 5694, 490, 390, 68097,68098,5537, 867, 317, 12590,1347, 68099,317, 68101,68104,317, 68102,68103,2110, 1108,
68106,68127,68131,68140,68147,396, 68151,27477,68155,68158,68160,68163,68165,68167,68171,68173,68175,68178,68179,68183,68184,68185,317, 14561,949, 2366, 68107,
- 68109,490, 68110,68111,68114,68115,68116,6900, 68117,68119,68120,317, 68121,68124,3505, 68126,7850, 317, 19617,68108,2351, 490, 332, 51339,5570, 68112,1943,
+ 68109,490, 68110,68111,68114,68115,68116,6900, 68117,68119,68120,317, 68121,68124,3505, 68126,7850, 317, 19617,68108,2351, 490, 332, 51339,5570, 68112,1943,
68113,16596,1688, 633, 317, 317, 317, 317, 317, 317, 317, 317, 317, 2272, 1189, 317, 68118,339, 43254,5120, 2105, 371, 26249,7850, 489, 7776, 68122,
68123,317, 68125,48303,12349,490, 68128,351, 68129,419, 596, 68130,68132,41137,68134,68135,68133,317, 10295,317, 59601,68136,490, 7672, 68137,68138,68139,
68141,68142,68143,68145,68146,2035, 2381, 317, 68144,317, 1347, 1347, 490, 5217, 1347, 68148,68149,68150,68152,68153,345, 68154,6138, 317, 2369, 381, 26249,
- 317, 68156,317, 15017,68157,6847, 2317, 317, 68159,4965, 68161,68162,317, 317, 53115,6859, 68164,317, 68166,6517, 6516, 68168,1347, 68169,68170,3284, 390,
- 317, 8937, 396, 2317, 5836, 317, 68172,382, 1060, 317, 46856,565, 362, 10189,68174,317, 68176,68177,19478,317, 9422, 490, 381, 1020, 20857,18420,1020,
+ 317, 68156,317, 15017,68157,6847, 2317, 317, 68159,4965, 68161,68162,317, 317, 53115,6859, 68164,317, 68166,6517, 6516, 68168,1347, 68169,68170,3284, 390,
+ 317, 8937, 396, 2317, 5836, 317, 68172,382, 1060, 317, 46856,565, 362, 10189,68174,317, 68176,68177,19478,317, 9422, 490, 381, 1020, 20857,18420,1020,
428, 343, 4984, 68180,343, 3987, 68181,20331,68182,2142, 6600, 6546, 6036, 345, 21434,11347,949, 68187,68188,68189,68192,68201,68202,2116, 317, 68207,68209,
- 68212,68218,68219,949, 7225, 6834, 365, 490, 365, 38681,317, 332, 68190,68191,68193,68199,68200,490, 371, 68194,68197,317, 672, 15105,317, 2077, 317,
- 1160, 7155, 317, 68195,649, 68196,68198,365, 5538, 68203,15090,68204,68205,6382, 68206,68208,1033, 68210,68211,68213,68216,1358, 362, 68217,18978,53450,7225,
+ 68212,68218,68219,949, 7225, 6834, 365, 490, 365, 38681,317, 332, 68190,68191,68193,68199,68200,490, 371, 68194,68197,317, 672, 15105,317, 2077, 317,
+ 1160, 7155, 317, 68195,649, 68196,68198,365, 5538, 68203,15090,68204,68205,6382, 68206,68208,1033, 68210,68211,68213,68216,1358, 362, 68217,18978,53450,7225,
362, 68214,365, 68215,317, 5038, 64065,68221,68223,317, 68229,68232,68236,68242,68251,40600,68252,8403, 68254,68256,68258,68265,68270,317, 68222,343, 68224,
1109, 68227,490, 317, 317, 24435,57921,68225,317, 317, 5355, 68226,68228,68230,427, 68231,332, 3987, 68233,68235,574, 68234,351, 68237,343, 68240,68238,
68239,68241,2809, 317, 6691, 68243,68245,490, 1347, 68244,7560, 21745,5717, 68246,317, 68247,68250,2184, 68248,68249,404, 21495,13927,5464, 317, 68253,36630,
- 2078, 317, 68255,317, 16063,466, 370, 68257,68259,68260,68263,317, 68261,9624, 68262,38135,48341,6021, 439, 317, 68264,348, 68266,5096, 7405, 68267,317,
+ 2078, 317, 68255,317, 16063,466, 370, 68257,68259,68260,68263,317, 68261,9624, 68262,38135,48341,6021, 439, 317, 68264,348, 68266,5096, 7405, 68267,317,
317, 317, 6607, 317, 68268,317, 5482, 68269,317, 68271,68277,68272,2036, 317, 68273,68274,68275,68276,2174, 317, 990, 68279,68280,68282,68284,501, 68286,
- 317, 68287,68288,68289,343, 68297,68302,68306,68307,68281,6555, 350, 317, 5611, 362, 1347, 317, 68283,2510, 1347, 68285,448, 2387, 29805,4952, 317, 2310,
+ 317, 68287,68288,68289,343, 68297,68302,68306,68307,68281,6555, 350, 317, 5611, 362, 1347, 317, 68283,2510, 1347, 68285,448, 2387, 29805,4952, 317, 2310,
21304,345, 345, 351, 5570, 2236, 317, 7698, 27989,22632,7196, 350, 351, 68290,1347, 68295,350, 68291,68292,68293,68294,68296,490, 68298,68300,536, 68301,
345, 68299,317, 9822, 68303,68304,68305,6419, 15074,55335,350, 350, 68308,19460,15378,68310,68318,68319,68325,5611, 68331,370, 68311,68313,2001, 6409, 68314,
68316,68317,2387, 68312,2537, 317, 590, 370, 370, 317, 4925, 68315,317, 317, 393, 10236,565, 317, 5238, 25872,68320,11986,317, 68322,343, 317, 68323,
- 317, 68321,317, 370, 7919, 317, 68324,332, 317, 317, 5570, 68326,990, 2590, 68327,5207, 68328,68329,68330,4965, 317, 1347, 317, 490, 4984, 490, 1347,
+ 317, 68321,317, 370, 7919, 317, 68324,332, 317, 317, 5570, 68326,990, 2590, 68327,5207, 68328,68329,68330,4965, 317, 1347, 317, 490, 4984, 490, 1347,
351, 390, 365, 2317, 345, 317, 68332,68333,68334,56531,21434,15130,317, 9538, 40552,490, 68336,13422,68338,68340,5991, 17601,8023, 68341,490, 68343,18640,
- 8392, 68344,317, 68345,2509, 1000, 50552,1109, 34344,5223, 68337,490, 10506,68339,3284, 68342,5294, 370, 30811,5138, 23996,6847, 9624, 68347,362, 68350,404,
- 68348,2219, 68349,9351, 68351,68352,68353,68354,1347, 6514, 68356,68358,332, 68359,317, 68360,332, 68361,362, 1358, 68362,2156, 68363,2178, 68371,68372,490,
+ 8392, 68344,317, 68345,2509, 1000, 50552,1109, 34344,5223, 68337,490, 10506,68339,3284, 68342,5294, 370, 30811,5138, 23996,6847, 9624, 68347,362, 68350,404,
+ 68348,2219, 68349,9351, 68351,68352,68353,68354,1347, 6514, 68356,68358,332, 68359,317, 68360,332, 68361,362, 1358, 68362,2156, 68363,2178, 68371,68372,490,
68357,10480,17490,5623, 317, 20312,317, 356, 390, 1347, 390, 53153,51614,2035, 68364,68368,68365,68366,68367,68369,68370,551, 2631, 396, 356, 356, 68374,
317, 317, 490, 589, 68376,68378,8514, 867, 317, 68377,332, 2110, 68379,68381,68464,68466,243, 68923,68962,68969,69018,69077,1044, 69082,69108,69109,69112,
- 68380,6563, 68382,68383,68384,68385,68386,68389,8023, 68392,68393,68401,68406,68425,68430,68455,68460,59348,596, 317, 15721,317, 3941, 317, 501, 2584, 317,
- 68387,55166,317, 3688, 68388,345, 68390,20178,68391,5328, 343, 68394,2184, 68395,317, 68396,68397,68399,317, 5439, 5457, 1347, 317, 343, 350, 382, 7672,
+ 68380,6563, 68382,68383,68384,68385,68386,68389,8023, 68392,68393,68401,68406,68425,68430,68455,68460,59348,596, 317, 15721,317, 3941, 317, 501, 2584, 317,
+ 68387,55166,317, 3688, 68388,345, 68390,20178,68391,5328, 343, 68394,2184, 68395,317, 68396,68397,68399,317, 5439, 5457, 1347, 317, 343, 350, 382, 7672,
363, 370, 5054, 68398,317, 317, 9720, 363, 68400,466, 317, 28981,16623,68402,68403,317, 16623,45577,466, 363, 317, 68404,317, 6402, 317, 317, 68405,
- 68407,68409,7993, 61233,362, 68417,317, 68422,68408,68410,68413,2116, 68416,68411,68412,4591, 317, 345, 317, 1526, 68414,371, 427, 68415,68418,68421,466,
+ 68407,68409,7993, 61233,362, 68417,317, 68422,68408,68410,68413,2116, 68416,68411,68412,4591, 317, 345, 317, 1526, 68414,371, 427, 68415,68418,68421,466,
68419,68420,317, 380, 6420, 317, 418, 68423,317, 68424,3999, 317, 68426,68427,21271,67687,317, 68428,68429,68431,68434,68436,68437,68438,68439,68441,68442,
- 68444,68448,2381, 68449,68452,68453,390, 16220,317, 68432,24090,332, 68433,68435,10453,10454,5324, 30164,9214, 23696,65590,1345, 317, 68440,317, 317, 7871,
+ 68444,68448,2381, 68449,68452,68453,390, 16220,317, 68432,24090,332, 68433,68435,10453,10454,5324, 30164,9214, 23696,65590,1345, 317, 68440,317, 317, 7871,
7916, 5570, 24398,68443,55010,68445,68447,68446,68450,15464,68451,2272, 317, 365, 5439, 332, 5694, 356, 20497,605, 6195, 68454,68456,511, 362, 68457,24957,
- 68458,363, 68459,68461,68463,7398, 68462,489, 5793, 2322, 68465,317, 68467,317, 68468,68469,68471,68474,514, 316, 490, 332, 365, 332, 68470,9337, 339,
+ 68458,363, 68459,68461,68463,7398, 68462,489, 5793, 2322, 68465,317, 68467,317, 68468,68469,68471,68474,514, 316, 490, 332, 365, 332, 68470,9337, 339,
28334,9720, 68472,2510, 68473,343, 332, 370, 490, 68475,68529,68588,7942, 68633,68680,68709,68740,68802,68833,68874,317, 68476,68478,68481,68485,68487,68490,
68495,11040,68496,68500,68503,68507,68509,2295, 68516,68519,7035, 350, 317, 371, 5223, 317, 2576, 317, 68477,16129,511, 68479,68480,317, 14790,317, 68482,
- 14999,350, 60574,36472,68483,68484,68486,6917, 317, 419, 2298, 68488,317, 317, 68489,2510, 39812,68491,68493,68492,68494,54538,350, 350, 1325, 5223, 373,
- 390, 317, 68497,68499,605, 68498,351, 8948, 382, 68501,380, 466, 2134, 317, 317, 68502,17471,6203, 371, 68504,37584,343, 317, 332, 68505,68506,351,
+ 14999,350, 60574,36472,68483,68484,68486,6917, 317, 419, 2298, 68488,317, 317, 68489,2510, 39812,68491,68493,68492,68494,54538,350, 350, 1325, 5223, 373,
+ 390, 317, 68497,68499,605, 68498,351, 8948, 382, 68501,380, 466, 2134, 317, 317, 68502,17471,6203, 371, 68504,37584,343, 317, 332, 68505,68506,351,
867, 68508,2108, 48289,68510,68511,9450, 68512,2108, 350, 68513,68514,68515,2222, 43000,9289, 2108, 351, 351, 6673, 5896, 16464,317, 466, 362, 343, 68517,
68518,363, 350, 66268,5896, 380, 317, 343, 362, 68520,2134, 351, 68521,15821,68523,68524,1060, 68525,39569,1999, 385, 343, 68522,5663, 9444, 68526,68527,
- 68528,68530,13653,68531,68533,68534,68535,24008,68537,68541,68548,68554,68559,68564,68567,23881,68576,68578,68583,343, 68585,2222, 2577, 2222, 68532,16579,350,
- 4738, 32298,350, 29307,10185,2222, 5392, 1033, 68536,31227,350, 16860,68538,317, 317, 68539,68540,68542,68545,479, 68547,450, 8522, 2087, 68543,30795,350,
- 68544,317, 68546,350, 317, 1453, 2219, 317, 2222, 317, 381, 68549,317, 68550,68552,3999, 362, 317, 68551,15047,33386,350, 68553,479, 68555,68557,8136,
- 466, 37194,5431, 1060, 317, 317, 68556,68558,7384, 14084,317, 371, 2134, 68560,6598, 501, 68562,2022, 317, 317, 68561,12478,68563,362, 68565,345, 350,
+ 68528,68530,13653,68531,68533,68534,68535,24008,68537,68541,68548,68554,68559,68564,68567,23881,68576,68578,68583,343, 68585,2222, 2577, 2222, 68532,16579,350,
+ 4738, 32298,350, 29307,10185,2222, 5392, 1033, 68536,31227,350, 16860,68538,317, 317, 68539,68540,68542,68545,479, 68547,450, 8522, 2087, 68543,30795,350,
+ 68544,317, 68546,350, 317, 1453, 2219, 317, 2222, 317, 381, 68549,317, 68550,68552,3999, 362, 317, 68551,15047,33386,350, 68553,479, 68555,68557,8136,
+ 466, 37194,5431, 1060, 317, 317, 68556,68558,7384, 14084,317, 371, 2134, 68560,6598, 501, 68562,2022, 317, 317, 68561,12478,68563,362, 68565,345, 350,
68566,345, 24051,68568,351, 1383, 33256,350, 68569,511, 16679,68571,1108, 68575,5810, 380, 511, 10041,68570,68572,68573,68574,351, 4738, 317, 68577,24065,
68579,10907,9938, 68581,68582,12416,68580,68584,68586,68587,68589,68592,68593,68596,68603,5423, 68606,68609,68612,68617,68618,68621,68626,68628,26436,332, 68590,
68591,8765, 490, 317, 12246,2078, 68594,68595,350, 11662,317, 12732,68597,68598,68600,68601,68602,68599,350, 28972,317, 15308,317, 4965, 343, 26065,66688,
@@ -11367,52 +11362,52 @@ static const unsigned int ChildLocs[185261] =
35982,8594, 343, 350, 68504,396, 68611,373, 3284, 68613,10487,490, 68616,3987, 68614,350, 68615,13650,12710,317, 536, 2509, 68619,2222, 317, 553, 45257,
55409,68620,350, 10922,13653,68622,68623,317, 2110, 68624,68625,68627,68629,356, 68630,68631,68632,68634,68646,68660,68670,68677,384, 68635,17021,68636,68637,
68639,68640,381, 4045, 68642,17375,68643,68645,7940, 7392, 317, 68638,350, 5838, 68641,68644,68647,317, 2134, 68649,68650,350, 68652,68653,68654,14263,68656,
- 10820,68659,317, 68648,317, 350, 9059, 8600, 350, 68651,45194,317, 350, 2184, 7949, 5626, 350, 350, 350, 350, 1453, 317, 68655,15461,16464,317, 2568,
- 36302,350, 68657,10081,68658,362, 68661,68665,2152, 68666,68668,11418,68669,68662,2222, 68663,22983,68664,317, 7624, 9938, 2222, 7651, 350, 68667,350, 2222,
- 31770,68671,382, 1060, 68672,68674,5896, 68673,5896, 351, 362, 317, 16017,68675,24229,68676,13670,5662, 317, 349, 68678,68679,317, 11418,350, 1453, 5897,
+ 10820,68659,317, 68648,317, 350, 9059, 8600, 350, 68651,45194,317, 350, 2184, 7949, 5626, 350, 350, 350, 350, 1453, 317, 68655,15461,16464,317, 2568,
+ 36302,350, 68657,10081,68658,362, 68661,68665,2152, 68666,68668,11418,68669,68662,2222, 68663,22983,68664,317, 7624, 9938, 2222, 7651, 350, 68667,350, 2222,
+ 31770,68671,382, 1060, 68672,68674,5896, 68673,5896, 351, 362, 317, 16017,68675,24229,68676,13670,5662, 317, 349, 68678,68679,317, 11418,350, 1453, 5897,
396, 68681,68688,68697,68704,68707,350, 380, 68682,68686,1108, 68687,317, 466, 68683,1108, 68685,68684,350, 317, 1108, 68689,68691,68692,68694,68696,68690,
- 2507, 39812,68693,466, 350, 68695,40248,351, 343, 1108, 371, 68698,68700,317, 373, 381, 68703,13670,351, 543, 1020, 68699,68701,343, 317, 2222, 511,
+ 2507, 39812,68693,466, 350, 68695,40248,351, 343, 1108, 371, 68698,68700,317, 373, 381, 68703,13670,351, 543, 1020, 68699,68701,343, 317, 2222, 511,
68702,317, 37220,317, 343, 6596, 317, 8116, 2222, 371, 317, 68705,68706,350, 36242,396, 380, 371, 68708,68710,68718,68731,68735,68737,31959,38267,68711,
350, 68714,68715,380, 6736, 2510, 16463,68717,68712,68713,68716,1108, 350, 418, 68719,68721,68724,68728,68729,68730,68720,317, 5138, 5897, 48845,362, 68722,
- 68723,68725,351, 350, 68726,45287,68727,350, 10185,350, 39812,350, 5866, 68732,350, 17255,465, 68733,350, 362, 54047,68734,13392,350, 38893,343, 351,
+ 68723,68725,351, 350, 68726,45287,68727,350, 10185,350, 39812,350, 5866, 68732,350, 17255,465, 68733,350, 362, 54047,68734,13392,350, 38893,343, 351,
1060, 68736,317, 3284, 9644, 68738,68739,15459,317, 317, 68741,68742,68743,68745,68765,11940,8545, 371, 68766,68775,68777,68781,68793,68794,68762,68796,68797,
5037, 68798,48354,4949, 68744,68746,371, 350, 68747,68748,68750,68751,68760,68762,68763,343, 2298, 6598, 68749,362, 351, 14834,14841,351, 68752,68753,68754,
- 68757,14952,68759,16092,2584, 9012, 13686,13219,35678,479, 14470,990, 5662, 317, 68755,68756,68758,1830, 381, 68761,14353,68764,428, 67813,11743,68767,9450,
+ 68757,14952,68759,16092,2584, 9012, 13686,13219,35678,479, 14470,990, 5662, 317, 68755,68756,68758,1830, 381, 68761,14353,68764,428, 67813,11743,68767,9450,
9624, 19287,68773,2391, 68774,39082,68768,68769,370, 9139, 68770,68771,68772,4965, 43729,37239,317, 68776,9444, 351, 363, 350, 68778,68779,68780,6598, 14708,
- 4738, 317, 1108, 371, 14689,317, 10560,479, 62117,5896, 371, 6598, 362, 381, 317, 317, 317, 68782,68792,6996, 2119, 68783,32534,22775,9624, 68784,7504,
+ 4738, 317, 1108, 371, 14689,317, 10560,479, 62117,5896, 371, 6598, 362, 381, 317, 317, 317, 68782,68792,6996, 2119, 68783,32534,22775,9624, 68784,7504,
466, 68788,11242,317, 68790,12423,550, 3020, 6894, 68785,68786,68787,68789,317, 5450, 2156, 68791,2510, 28707,16092,541, 60586,2087, 6596, 38982,350, 68795,
12789,317, 2108, 450, 15017,2058, 5309, 501, 15457,11307,10022,68799,68800,68801,68803,68808,68818,68821,68830,68832,317, 371, 32289,566, 396, 10185,68804,
68806,68807,566, 349, 68805,317, 381, 317, 1108, 317, 68809,350, 68810,350, 68815,68816,1060, 371, 68817,350, 553, 350, 68811,68813,68811,68812,68814,
- 8722, 68812,317, 6917, 351, 15892,9938, 350, 350, 371, 68819,68820,350, 350, 350, 350, 317, 350, 396, 419, 566, 371, 68822,68823,396, 380, 437,
+ 8722, 68812,317, 6917, 351, 15892,9938, 350, 350, 371, 68819,68820,350, 350, 350, 350, 317, 350, 396, 419, 566, 371, 68822,68823,396, 380, 437,
514, 381, 343, 68826,2222, 68824,317, 68825,317, 350, 33733,350, 68827,317, 317, 68828,68829,5866, 380, 68831,371, 1060, 343, 68834,68835,2134, 68839,
- 68844,317, 68845,68846,68847,68854,68860,68861,68864,68866,68868,351, 68872,2108, 343, 21274,343, 68836,68838,68837,5662, 23576,362, 68840,9938, 68841,2577,
+ 68844,317, 68845,68846,68847,68854,68860,68861,68864,68866,68868,351, 68872,2108, 343, 21274,343, 68836,68838,68837,5662, 23576,362, 68840,9938, 68841,2577,
68842,23881,68843,317, 4965, 343, 350, 363, 31580,466, 5662, 317, 1358, 1358, 14296,68848,68849,15581,10185,362, 68850,25455,1358, 33028,317, 68851,68852,
6691, 345, 345, 317, 317, 68853,12060,345, 68855,351, 317, 2222, 68858,16129,68856,350, 9521, 68857,350, 68859,16436,317, 350, 5626, 68862,68863,24229,
381, 4965, 317, 466, 68865,362, 317, 317, 2298, 68867,37393,8178, 317, 350, 68869,68870,68871,362, 42724,68873,12713,8023, 68875,68894,68911,68921,68922,
- 1108, 68876,68878,350, 68879,8325, 68881,68885,345, 7408, 68877,11147,9644, 404, 1358, 317, 68880,62036,317, 10487,68882,68883,343, 317, 68884,317, 1108,
+ 1108, 68876,68878,350, 68879,8325, 68881,68885,345, 7408, 68877,11147,9644, 404, 1358, 317, 68880,62036,317, 10487,68882,68883,343, 317, 68884,317, 1108,
317, 317, 68886,68890,363, 466, 317, 68887,47444,68888,14834,362, 42535,68889,317, 7911, 68891,14834,5956, 68893,10538,68892,317, 47444,39009,68895,68896,
2510, 2134, 68897,42672,68904,8649, 68906,1108, 501, 2108, 380, 343, 68898,68899,22130,317, 68900,345, 68901,68902,1999, 21274,5896, 21274,13335,9567, 68903,
- 371, 68905,1358, 11349,49576,350, 6206, 4738, 68907,3999, 68909,317, 68908,68910,350, 68912,68916,2152, 68918,5737, 68920,4576, 350, 68913,68914,68915,1998,
+ 371, 68905,1358, 11349,49576,350, 6206, 4738, 68907,3999, 68909,317, 68908,68910,350, 68912,68916,2152, 68918,5737, 68920,4576, 350, 68913,68914,68915,1998,
350, 317, 317, 68917,10629,5223, 68919,317, 12731,27614,350, 605, 350, 9644, 427, 350, 16876,412, 68924,68935,68936,68938,9623, 9163, 418, 68947,68948,
- 68951,68953,68955,68956,68960,68961,25909,2279, 68925,68928,68929,68933,7521, 401, 6471, 68926,317, 68927,7035, 332, 365, 68930,2110, 490, 68931,68932,317,
+ 68951,68953,68955,68956,68960,68961,25909,2279, 68925,68928,68929,68933,7521, 401, 6471, 68926,317, 68927,7035, 332, 365, 68930,2110, 490, 68931,68932,317,
2211, 68934,7567, 6607, 68937,14131,68939,8333, 6461, 68940,68943,343, 68941,68942,317, 317, 68944,28631,68945,4268, 68946,7223, 965, 2280, 2227, 5241, 68949,
- 68950,317, 490, 68952,15027,15095,68954,373, 317, 8400, 332, 317, 68957,68958,68959,7411, 317, 345, 490, 2413, 6458, 332, 68963,317, 68964,5173, 350,
- 365, 68965,317, 595, 68966,68967,68968,2163, 68970,2280, 68971,68972,317, 380, 68974,490, 68978,68979,68986,68988,68998,69004,69013,69014,69015,6021, 343,
+ 68950,317, 490, 68952,15027,15095,68954,373, 317, 8400, 332, 317, 68957,68958,68959,7411, 317, 345, 490, 2413, 6458, 332, 68963,317, 68964,5173, 350,
+ 365, 68965,317, 595, 68966,68967,68968,2163, 68970,2280, 68971,68972,317, 380, 68974,490, 68978,68979,68986,68988,68998,69004,69013,69014,69015,6021, 343,
343, 317, 68973,363, 68975,5273, 58812,68976,38027,883, 68977,1588, 5439, 2178, 5652, 343, 1347, 2188, 7225, 2188, 68980,390, 68982,68983,317, 343, 68981,
- 5942, 317, 633, 43960,68984,317, 68985,55670,15618,466, 317, 68987,68989,68990,68991,2058, 9522, 26769,68994,68997,8766, 317, 20146,2322, 5570, 317, 317,
- 23337,11263,317, 68992,1347, 68993,7389, 476, 2272, 370, 3076, 68995,62105,363, 317, 68996,345, 1077, 8948, 68999,20638,5005, 7949, 69001,345, 69000,1300,
- 317, 317, 317, 363, 69002,317, 4984, 69003,317, 1160, 11761,9626, 5037, 69005,2298, 69009,69011,6917, 69012,69006,69007,69008,69010,356, 343, 466, 2603,
- 317, 317, 31806,466, 19922,317, 9878, 24070,501, 2184, 69016,69017,6231, 365, 69019,69035,69046,69057,69064,2184, 69020,69021,69022,69029,69031,69034,373,
- 384, 69023,69024,69025,69026,69027,69028,7448, 5394, 10877,4952, 69030,317, 15130,5991, 466, 1160, 69032,69033,69036,69038,7386, 69045,69037,2183, 69039,356,
- 10877,69040,69041,69042,69043,69044,15260,17341,356, 3999, 343, 317, 38066,8116, 13837,69047,69049,69050,69052,69054,2568, 69055,380, 26627,69048,350, 2387,
+ 5942, 317, 633, 43960,68984,317, 68985,55670,15618,466, 317, 68987,68989,68990,68991,2058, 9522, 26769,68994,68997,8766, 317, 20146,2322, 5570, 317, 317,
+ 23337,11263,317, 68992,1347, 68993,7389, 476, 2272, 370, 3076, 68995,62105,363, 317, 68996,345, 1077, 8948, 68999,20638,5005, 7949, 69001,345, 69000,1300,
+ 317, 317, 317, 363, 69002,317, 4984, 69003,317, 1160, 11761,9626, 5037, 69005,2298, 69009,69011,6917, 69012,69006,69007,69008,69010,356, 343, 466, 2603,
+ 317, 317, 31806,466, 19922,317, 9878, 24070,501, 2184, 69016,69017,6231, 365, 69019,69035,69046,69057,69064,2184, 69020,69021,69022,69029,69031,69034,373,
+ 384, 69023,69024,69025,69026,69027,69028,7448, 5394, 10877,4952, 69030,317, 15130,5991, 466, 1160, 69032,69033,69036,69038,7386, 69045,69037,2183, 69039,356,
+ 10877,69040,69041,69042,69043,69044,15260,17341,356, 3999, 343, 317, 38066,8116, 13837,69047,69049,69050,69052,69054,2568, 69055,380, 26627,69048,350, 2387,
69051,419, 345, 69053,317, 5991, 466, 30357,317, 34600,69042,69056,350, 69058,69060,22809,514, 990, 343, 8207, 69062,69059,2381, 351, 69061,554, 26277,
- 317, 317, 69063,69065,6240, 69067,3338, 69068,69070,69073,69074,69066,4952, 317, 69069,317, 69071,69072,596, 52644,69075,363, 69076,60070,317, 69078,317,
+ 317, 317, 69063,69065,6240, 69067,3338, 69068,69070,69073,69074,69066,4952, 317, 69069,317, 69071,69072,596, 52644,69075,363, 69076,60070,317, 69078,317,
1932, 69079,69080,69081,69083,11388,69085,69088,2322, 69089,69096,69097,2381, 69098,5793, 69099,69104,69084,16424,317, 54968,362, 867, 317, 10628,350, 69086,
- 7273, 69087,2322, 69090,69094,29069,69091,69092,69093,317, 1160, 1992, 363, 363, 69095,356, 466, 2510, 21741,53832,370, 2537, 29069,365, 2584, 66769,365,
- 370, 2178, 69100,69101,8643, 317, 69102,69103,466, 27732,317, 69105,69106,317, 69107,2381, 339, 69110,69111,36049,69113,69115,16092,39818,69120,69124,1060,
+ 7273, 69087,2322, 69090,69094,29069,69091,69092,69093,317, 1160, 1992, 363, 363, 69095,356, 466, 2510, 21741,53832,370, 2537, 29069,365, 2584, 66769,365,
+ 370, 2178, 69100,69101,8643, 317, 69102,69103,466, 27732,317, 69105,69106,317, 69107,2381, 339, 69110,69111,36049,69113,69115,16092,39818,69120,69124,1060,
5241, 5872, 554, 69130,69116,69118,69117,69119,69121,69122,69123,69125,69126,69127,69128,69129,69131,317, 69132,69133,69134,69193,69212,69251,69275,69306,69310,
69331,69332,69360,69361,69368,69418,69465,69550,69552,69589,69598,69676,69693,69713,69715,69736,69740,69781,69135,69147,69149,69152,69153,69156,1194, 511, 69161,
- 69165,69169,69170,39466,69171,69177,69182,1131, 69187,69188,317, 69136,69137,69139,69141,69143,69145,6050, 4943, 1347, 317, 1347, 69138,6355, 69140,551, 5255,
+ 69165,69169,69170,39466,69171,69177,69182,1131, 69187,69188,317, 69136,69137,69139,69141,69143,69145,6050, 4943, 1347, 317, 1347, 69138,6355, 69140,551, 5255,
69142,8746, 530, 69144,317, 39406,69146,5223, 317, 2024, 69148,35005,69150,317, 69151,35524,6598, 12025,38013,8254, 17591,2510, 343, 2184, 69154,4563, 69155,
363, 4757, 1347, 345, 2156, 69157,69158,317, 501, 5962, 69159,69160,69162,2533, 67885,69164,384, 317, 6081, 317, 69163,381, 28241,21412,12696,6668, 69166,
69167,345, 1347, 4267, 69168,356, 2156, 16090,2222, 29108,351, 6187, 39003,1345, 370, 69172,317, 5991, 11373,3854, 69174,24504,69175,4980, 317, 370, 69173,
@@ -11421,403 +11416,403 @@ static const unsigned int ChildLocs[185261] =
501, 69201,4980, 69206,69209,4949, 69195,356, 69196,5727, 332, 8177, 69197,69198,69200,69199,4984, 363, 23973,317, 317, 9182, 69202,23193,69204,69203,69205,
356, 69207,479, 69208,43060,10476,69210,363, 69211,69213,332, 69214,69218,69220,69224,69225,69229,317, 69236,69240,317, 381, 10655,5441, 69215,69216,69217,
466, 350, 69219,35005,351, 69221,69222,362, 317, 69223,317, 61789,5866, 69226,55491,1033, 69227,69228,356, 4952, 370, 3854, 317, 317, 1588, 62729,69230,
- 412, 393, 370, 381, 69231,621, 1266, 317, 633, 69232,5447, 5847, 370, 568, 317, 69233,69234,317, 69235,345, 28578,69237,12685,317, 69238,69239,317,
+ 412, 393, 370, 381, 69231,621, 1266, 317, 633, 69232,5447, 5847, 370, 568, 317, 69233,69234,317, 69235,345, 28578,69237,12685,317, 69238,69239,317,
4564, 356, 317, 69241,69244,69246,69242,69243,69245,317, 11824,317, 1700, 69247,69248,382, 69249,574, 317, 69250,1160, 345, 5488, 69252,69255,404, 69258,
69260,69262,69268,362, 490, 69271,6136, 433, 69272,2391, 317, 490, 5241, 317, 69253,2001, 69254,1325, 21988,69256,9695, 69257,69259,317, 332, 8205, 69261,
- 2022, 2391, 9624, 12025,317, 2142, 69263,317, 69267,370, 69264,69265,69266,32902,317, 69269,6036, 384, 69270,317, 317, 490, 1358, 433, 69273,317, 8136,
+ 2022, 2391, 9624, 12025,317, 2142, 69263,317, 69267,370, 69264,69265,69266,32902,317, 69269,6036, 384, 69270,317, 317, 490, 1358, 433, 69273,317, 8136,
466, 69274,5221, 2571, 69276,69277,69278,69281,69283,69284,69285,3999, 69287,69289,69291,69297,69299,32485,69303,69304,2509, 10538,23751,35677,68502,578, 69279,
- 69280,19283,356, 10877,69282,58436,317, 317, 476, 10877,13659,24570,2510, 23576,15457,13837,2577, 69286,6831, 10580,69288,2024, 16318,2193, 317, 69290,1345,
- 10561,1358, 2108, 2586, 10041,69292,8553, 69293,1588, 317, 69294,69295,69296,370, 69298,317, 990, 69300,466, 317, 317, 69301,69302,605, 317, 33712,317,
+ 69280,19283,356, 10877,69282,58436,317, 317, 476, 10877,13659,24570,2510, 23576,15457,13837,2577, 69286,6831, 10580,69288,2024, 16318,2193, 317, 69290,1345,
+ 10561,1358, 2108, 2586, 10041,69292,8553, 69293,1588, 317, 69294,69295,69296,370, 69298,317, 990, 69300,466, 317, 317, 69301,69302,605, 317, 33712,317,
69305,363, 69307,69308,356, 69309,10487,371, 5656, 381, 16767,69311,69314,69316,10629,2188, 350, 69319,10845,69323,69325,69330,1230, 69312,69313,490, 69315,
317, 69317,69318,362, 4980, 69320,69321,69322,18946,356, 317, 5241, 5241, 490, 9027, 69324,9383, 69326,4757, 332, 69327,381, 15095,69328,69329,1325, 30706,
5447, 4984, 18470,18203,351, 433, 317, 1998, 479, 5223, 3236, 7942, 48482,69333,69336,69342,69343,69344,365, 69349,69350,10072,69352,69353,2222, 69354,69358,
317, 22130,3987, 348, 490, 69359,69334,578, 317, 317, 317, 69335,33255,317, 317, 69337,489, 69341,362, 350, 317, 5105, 69338,1347, 39569,69339,69340,
- 4965, 44992,31135,8266, 5810, 21274,1998, 24570,345, 1999, 12731,35973,6917, 69345,5809, 69346,69347,69348,418, 380, 317, 6036, 69351,317, 2152, 7592, 2152,
+ 4965, 44992,31135,8266, 5810, 21274,1998, 24570,345, 1999, 12731,35973,6917, 69345,5809, 69346,69347,69348,418, 380, 317, 6036, 69351,317, 2152, 7592, 2152,
7866, 6709, 4965, 350, 69355,69356,20660,69357,2546, 397, 2510, 317, 6532, 27584,7951, 5423, 317, 370, 466, 365, 69362,565, 69363,69366,539, 2146, 69367,
69364,60676,12616,69365,16672,46641,69369,69371,69373,69374,69378,69388,8660, 13023,69392,69396,69398,69399,69403,596, 69404,390, 4372, 69405,69409,69410,69411,
69416,69417,317, 5655, 69370,23920,362, 350, 2146, 343, 35751,382, 69372,317, 69375,363, 69376,69377,317, 69379,404, 317, 317, 69382,69384,565, 69385,
317, 69380,317, 7913, 356, 69381,10149,2510, 317, 1992, 5055, 41130,317, 317, 69383,2391, 17642,69386,69387,345, 317, 69389,31338,69391,32603,317, 69390,
- 317, 490, 317, 69393,317, 69394,69395,2322, 317, 5662, 404, 317, 2222, 16331,365, 501, 69397,1345, 17099,69400,5896, 69401,69402,18460,350, 385, 317,
- 317, 9624, 317, 20615,371, 317, 317, 1347, 317, 371, 11678,66949,351, 363, 69406,69407,3611, 317, 317, 317, 69408,6593, 12700,69412,69414,69415,317,
+ 317, 490, 317, 69393,317, 69394,69395,2322, 317, 5662, 404, 317, 2222, 16331,365, 501, 69397,1345, 17099,69400,5896, 69401,69402,18460,350, 385, 317,
+ 317, 9624, 317, 20615,371, 317, 317, 1347, 317, 371, 11678,66949,351, 363, 69406,69407,3611, 317, 317, 317, 69408,6593, 12700,69412,69414,69415,317,
69413,490, 16579,317, 370, 2063, 363, 351, 350, 2391, 69419,69421,69423,69425,343, 350, 69450,362, 69453,69455,69462,5126, 1428, 69463,363, 1160, 69420,
20075,2357, 30214,317, 11831,6170, 69422,351, 7622, 58206,2631, 1358, 69424,5450, 6834, 339, 384, 7116, 31775,490, 69426,69428,2022, 363, 69438,37596,69442,
6163, 69446,69448,69449,5087, 69427,69429,69432,69430,69431,343, 10408,404, 69433,69434,69435,69436,69437,69439,69440,69441,69443,2155, 1588, 317, 69444,69445,
- 317, 317, 5055, 345, 317, 69447,1347, 8804, 6188, 69451,350, 69452,345, 317, 7149, 69454,1347, 8569, 317, 69456,428, 343, 69461,317, 69457,69458,8611,
- 69459,69460,317, 2211, 9732, 69464,317, 69466,69470,69471,69483,36417,69501,69503,69505,317, 357, 2163, 69512,69518,69520,69537,69548,1109, 2004, 26721,7776,
- 69467,29304,317, 317, 69468,345, 69469,69472,69473,69475,3529, 5611, 317, 332, 69474,69476,69477,69478,69479,69480,69481,69482,69484,69485,350, 69489,9537,
+ 317, 317, 5055, 345, 317, 69447,1347, 8804, 6188, 69451,350, 69452,345, 317, 7149, 69454,1347, 8569, 317, 69456,428, 343, 69461,317, 69457,69458,8611,
+ 69459,69460,317, 2211, 9732, 69464,317, 69466,69470,69471,69483,36417,69501,69503,69505,317, 357, 2163, 69512,69518,69520,69537,69548,1109, 2004, 26721,7776,
+ 69467,29304,317, 317, 69468,345, 69469,69472,69473,69475,3529, 5611, 317, 332, 69474,69476,69477,69478,69479,69480,69481,69482,69484,69485,350, 69489,9537,
69493,69496,317, 5105, 433, 332, 69486,69487,69488,69490,69491,69492,69494,69495,523, 433, 69497,69498,69499,69500,15459,351, 2146, 2357, 4060, 11911,69502,
38751,69504,6547, 40281,396, 7327, 69506,69508,317, 69507,69509,69510,69511,69513,69517,3111, 317, 69514,69515,69516,69519,371, 317, 345, 489, 69521,69526,
- 365, 69529,343, 5213, 69534,317, 69536,7698, 69522,69523,69524,69525,30579,317, 317, 317, 6406, 362, 69527,317, 69528,370, 382, 2108, 26788,69530,382,
- 69531,6674, 17943,6021, 69532,69533,7888, 69535,57506,317, 317, 69538,69539,3361, 69541,1943, 69547,317, 380, 69540,1347, 6266, 69542,69545,69543,69544,380,
+ 365, 69529,343, 5213, 69534,317, 69536,7698, 69522,69523,69524,69525,30579,317, 317, 317, 6406, 362, 69527,317, 69528,370, 382, 2108, 26788,69530,382,
+ 69531,6674, 17943,6021, 69532,69533,7888, 69535,57506,317, 317, 69538,69539,3361, 69541,1943, 69547,317, 380, 69540,1347, 6266, 69542,69545,69543,69544,380,
69546,5105, 596, 317, 69549,539, 365, 317, 69551,380, 317, 69553,69558,69559,69565,69567,69568,2163, 69569,69583,69588,362, 317, 345, 382, 69554,69555,
- 373, 69556,7640, 69557,2510, 382, 5055, 5250, 69560,69563,404, 345, 317, 69561,69562,69564,317, 390, 362, 317, 69566,5570, 1347, 37305,60449,317, 317,
+ 373, 69556,7640, 69557,2510, 382, 5055, 5250, 69560,69563,404, 345, 317, 69561,69562,69564,317, 390, 362, 317, 69566,5570, 1347, 37305,60449,317, 317,
4060, 317, 5105, 69570,69579,363, 317, 69581,1481, 69571,317, 317, 69572,69573,317, 69574,69575,69576,69577,69578,317, 25988,69580,5431, 4591, 345, 69582,
- 317, 69584,11626,69585,69586,11626,69587,5238, 2004, 69590,69591,69596,69597,490, 2110, 1347, 69592,69594,8139, 69593,69595,17917,5488, 9720, 1444, 490, 2533,
+ 317, 69584,11626,69585,69586,11626,69587,5238, 2004, 69590,69591,69596,69597,490, 2110, 1347, 69592,69594,8139, 69593,69595,17917,5488, 9720, 1444, 490, 2533,
949, 69599,69607,69608,69609,69610,69618,69619,13113,69623,69642,362, 69643,69644,6409, 69647,69653,69657,69663,11183,1030, 69664,7850, 5241, 69600,69602,69603,
69604,69605,2537, 12854,69601,1109, 8354, 8083, 490, 2086, 12448,317, 39550,69606,363, 8214, 317, 317, 345, 4965, 343, 2381, 867, 490, 69611,69612,69613,
- 317, 317, 317, 69614,69615,317, 43944,69617,317, 317, 69616,476, 426, 511, 476, 317, 2369, 1479, 69620,69622,18739,317, 4267, 56358,1160, 317, 381,
- 69621,6228, 317, 7118, 317, 1160, 343, 1347, 69624,69629,1347, 317, 471, 317, 69630,69640,2317, 490, 69625,2211, 69626,370, 317, 21365,69627,69628,356,
+ 317, 317, 317, 69614,69615,317, 43944,69617,317, 317, 69616,476, 426, 511, 476, 317, 2369, 1479, 69620,69622,18739,317, 4267, 56358,1160, 317, 381,
+ 69621,6228, 317, 7118, 317, 1160, 343, 1347, 69624,69629,1347, 317, 471, 317, 69630,69640,2317, 490, 69625,2211, 69626,370, 317, 21365,69627,69628,356,
13928,5226, 1109, 9200, 317, 69631,69637,317, 317, 69632,69633,69634,69635,69636,69638,69639,69641,2368, 371, 5431, 69645,5055, 332, 69646,490, 69648,69650,
345, 317, 69649,69651,8649, 69652,6064, 363, 1347, 69654,5428, 69655,317, 69656,317, 10815,351, 317, 69658,69662,363, 317, 332, 69659,317, 69660,33467,
- 317, 1325, 3640, 69661,363, 20997,69665,69668,69669,4944, 345, 345, 317, 69666,9182, 317, 69667,25086,2142, 317, 6420, 317, 574, 317, 317, 69670,2537,
- 69674,14388,1347, 69675,345, 69671,19510,637, 317, 936, 410, 317, 69672,317, 363, 69673,11724,317, 317, 5412, 343, 69677,332, 69679,67680,5481, 332,
+ 317, 1325, 3640, 69661,363, 20997,69665,69668,69669,4944, 345, 345, 317, 69666,9182, 317, 69667,25086,2142, 317, 6420, 317, 574, 317, 317, 69670,2537,
+ 69674,14388,1347, 69675,345, 69671,19510,637, 317, 936, 410, 317, 69672,317, 363, 69673,11724,317, 317, 5412, 343, 69677,332, 69679,67680,5481, 332,
15745,490, 69680,6197, 69681,69688,69690,69678,2612, 317, 69682,69683,69684,69685,69686,69687,317, 351, 69689,350, 54166,5742, 343, 317, 9852, 371, 69691,
6300, 490, 69692,69694,5960, 35155,11986,69695,69697,69698,4984, 69700,69701,69708,39812,317, 6964, 489, 357, 351, 317, 69696,371, 351, 69699,384, 69702,
69704,69705,363, 317, 2406, 69703,5896, 4952, 317, 332, 14388,69706,466, 317, 69707,1347, 317, 4267, 12277,1588, 69709,69710,380, 33729,69711,317, 69712,
- 1998, 428, 22130,317, 20975,382, 69714,345, 349, 69716,883, 69721,69733,2279, 596, 317, 69717,9224, 317, 69719,69718,69720,990, 69722,69729,317, 1160,
- 8345, 69723,69724,370, 4982, 317, 69725,317, 69726,1060, 2719, 633, 381, 69727,317, 28691,1155, 69728,69730,24978,69731,1347, 317, 48051,7214, 345, 4984,
+ 1998, 428, 22130,317, 20975,382, 69714,345, 349, 69716,883, 69721,69733,2279, 596, 317, 69717,9224, 317, 69719,69718,69720,990, 69722,69729,317, 1160,
+ 8345, 69723,69724,370, 4982, 317, 69725,317, 69726,1060, 2719, 633, 381, 69727,317, 28691,1155, 69728,69730,24978,69731,1347, 317, 48051,7214, 345, 4984,
69732,370, 371, 351, 2590, 69734,317, 31405,365, 1843, 69735,69737,69738,69739,317, 15380,343, 343, 576, 558, 356, 428, 317, 380, 59557,349, 18748,
382, 69741,619, 69742,69744,672, 69745,69748,69750,1347, 69751,2063, 69752,69754,69757,69758,2402, 69760,69761,69764,69767,69768,3710, 69771,69774,541, 69743,
- 343, 694, 2888, 69746,350, 69747,69749,382, 3031, 2308, 24305,363, 24398,2571, 69753,5205, 6089, 317, 317, 69755,382, 69756,476, 541, 69759,33343,3901,
- 317, 9027, 633, 8322, 69762,14449,381, 345, 69763,69765,5689, 10519,2553, 363, 11344,2033, 69766,2369, 381, 2060, 9557, 345, 69769,69770,317, 32430,370,
- 345, 69772,69773,13760,317, 637, 38353,8258, 2060, 633, 476, 69775,3076, 39835,69778,69779,2272, 5872, 69780,1428, 4789, 2277, 69776,69777,68211,1345, 2074,
- 3338, 434, 11488,317, 380, 69782,69783,69788,5991, 69789,362, 69790,39812,69792,317, 69794,69784,69785,69786,69787,380, 10626,5810, 1999, 24570,69791,351,
- 69793,351, 1358, 11648,69796,69798,69799,69800,69804,332, 69805,351, 490, 69797,69801,317, 69802,69803,69807,317, 69809,380, 69813,317, 69816,69808,7776,
+ 343, 694, 2888, 69746,350, 69747,69749,382, 3031, 2308, 24305,363, 24398,2571, 69753,5205, 6089, 317, 317, 69755,382, 69756,476, 541, 69759,33343,3901,
+ 317, 9027, 633, 8322, 69762,14449,381, 345, 69763,69765,5689, 10519,2553, 363, 11344,2033, 69766,2369, 381, 2060, 9557, 345, 69769,69770,317, 32430,370,
+ 345, 69772,69773,13760,317, 637, 38353,8258, 2060, 633, 476, 69775,3076, 39835,69778,69779,2272, 5872, 69780,1428, 4789, 2277, 69776,69777,68211,1345, 2074,
+ 3338, 434, 11488,317, 380, 69782,69783,69788,5991, 69789,362, 69790,39812,69792,317, 69794,69784,69785,69786,69787,380, 10626,5810, 1999, 24570,69791,351,
+ 69793,351, 1358, 11648,69796,69798,69799,69800,69804,332, 69805,351, 490, 69797,69801,317, 69802,69803,69807,317, 69809,380, 69813,317, 69816,69808,7776,
6240, 69810,69811,69812,69814,5120, 69815,14150,351, 69817,246, 365, 70013,247, 6585, 248, 70249,70252,70254,249, 70341,70371,70373,70414,70416,70417,69818,
69819,69820,69821,69823,69827,69834,69847,69849,69854,69855,69867,365, 69870,69883,69897,69914,69942,69943,69952,69954,69984,69987,69990,69994,69998,317, 70010,
70011,351, 27535,343, 317, 69822,317, 69824,69825,6780, 554, 381, 367, 317, 490, 1109, 1108, 8488, 69826,317, 69828,69829,317, 69830,2024, 466, 69832,
- 317, 317, 69831,381, 69833,317, 2024, 317, 5224, 317, 605, 1321, 10943,69835,5394, 565, 69837,12141,69838,69845,16123,69846,363, 41564,5851, 69836,317,
- 384, 317, 382, 317, 363, 317, 69839,681, 69840,43516,317, 633, 317, 649, 1353, 69842,69843,466, 5217, 69844,1160, 317, 317, 317, 69841,317, 317,
- 69848,317, 4965, 69850,69851,362, 69852,12696,350, 501, 37610,317, 69853,339, 317, 317, 317, 317, 317, 26034,2178, 69030,44790,343, 317, 69856,2462,
- 58333,69857,69859,69863,1444, 69865,317, 355, 20509,490, 317, 317, 317, 317, 69858,69860,69861,69862,69864,371, 2177, 565, 69866,4925, 69868,1109, 362,
- 69869,69871,69872,2227, 69878,558, 69879,24279,69880,69881,317, 317, 379, 5840, 380, 317, 1347, 69873,1060, 317, 69874,69875,69876,69877,317, 317, 1992,
+ 317, 317, 69831,381, 69833,317, 2024, 317, 5224, 317, 605, 1321, 10943,69835,5394, 565, 69837,12141,69838,69845,16123,69846,363, 41564,5851, 69836,317,
+ 384, 317, 382, 317, 363, 317, 69839,681, 69840,43516,317, 633, 317, 649, 1353, 69842,69843,466, 5217, 69844,1160, 317, 317, 317, 69841,317, 317,
+ 69848,317, 4965, 69850,69851,362, 69852,12696,350, 501, 37610,317, 69853,339, 317, 317, 317, 317, 317, 26034,2178, 69030,44790,343, 317, 69856,2462,
+ 58333,69857,69859,69863,1444, 69865,317, 355, 20509,490, 317, 317, 317, 317, 69858,69860,69861,69862,69864,371, 2177, 565, 69866,4925, 69868,1109, 362,
+ 69869,69871,69872,2227, 69878,558, 69879,24279,69880,69881,317, 317, 379, 5840, 380, 317, 1347, 69873,1060, 317, 69874,69875,69876,69877,317, 317, 1992,
1109, 490, 351, 558, 38244,39231,317, 69882,69884,6546, 69885,69888,69889,69892,69895,317, 69896,317, 2004, 390, 69886,69887,565, 7672, 317, 317, 23533,
54501,69890,345, 69891,351, 370, 2571, 317, 69893,69894,1160, 9581, 633, 69898,69901,69903,69906,1020, 69907,69908,69909,69910,69911,1347, 2078, 317, 69899,
25525,4925, 69900,511, 317, 6674, 6388, 69902,317, 9695, 10560,6859, 363, 317, 379, 490, 69904,317, 317, 69905,490, 1345, 317, 382, 317, 501, 40281,
- 317, 317, 317, 1020, 5295, 2272, 43634,354, 350, 69912,11342,69913,381, 69915,5896, 69916,69917,69919,69924,69927,69928,2022, 69934,12696,69938,69939,365,
+ 317, 317, 317, 1020, 5295, 2272, 43634,354, 350, 69912,11342,69913,381, 69915,5896, 69916,69917,69919,69924,69927,69928,2022, 69934,12696,69938,69939,365,
317, 317, 317, 14444,362, 317, 317, 13258,466, 5611, 317, 317, 6228, 317, 490, 17926,317, 69918,1011, 14444,9186, 69920,317, 69923,11749,69921,69922,
356, 5058, 69925,69926,1160, 343, 490, 2291, 490, 69929,351, 8035, 69933,362, 317, 69930,69931,69932,439, 1347, 363, 317, 69935,363, 69936,317, 69937,
69940,69941,365, 1078, 590, 317, 317, 317, 590, 554, 317, 64463,511, 551, 69944,69948,69949,17583,69950,69951,351, 317, 370, 357, 69945,23859,69946,
69947,12243,5611, 551, 8035, 317, 1011, 69953,2035, 5131, 69955,69956,2012, 69957,317, 69962,2533, 69964,69965,69967,69969,69971,365, 69980,69983,427, 13881,
- 365, 1109, 317, 317, 6826, 317, 69958,317, 1383, 69961,380, 317, 32249,317, 317, 14062,69959,69960,490, 24242,13011,317, 69963,1109, 11607,51940,8281,
+ 365, 1109, 317, 317, 6826, 317, 69958,317, 1383, 69961,380, 317, 32249,317, 317, 14062,69959,69960,490, 24242,13011,317, 69963,1109, 11607,51940,8281,
19478,7928, 317, 317, 637, 317, 5397, 370, 16651,362, 317, 1160, 1155, 317, 69966,363, 605, 69968,2381, 11607,69970,6996, 633, 317, 490, 317, 69972,
- 6713, 69973,69975,69976,404, 317, 14316,7214, 5223, 317, 69974,363, 317, 7911, 69977,69979,69978,501, 5841, 69981,12144,45918,69982,69985,6021, 69986,1160,
- 501, 7384, 69988,371, 2022, 350, 10471,4279, 69989,2222, 6013, 596, 317, 384, 317, 317, 351, 317, 69991,2631, 69992,69993,351, 57253,317, 1160, 317,
- 490, 490, 5793, 6209, 69995,10877,2631, 69996,3869, 69997,69999,350, 70001,317, 332, 362, 70004,2631, 70005,70006,70007,370, 350, 3284, 70000,317, 490,
+ 6713, 69973,69975,69976,404, 317, 14316,7214, 5223, 317, 69974,363, 317, 7911, 69977,69979,69978,501, 5841, 69981,12144,45918,69982,69985,6021, 69986,1160,
+ 501, 7384, 69988,371, 2022, 350, 10471,4279, 69989,2222, 6013, 596, 317, 384, 317, 317, 351, 317, 69991,2631, 69992,69993,351, 57253,317, 1160, 317,
+ 490, 490, 5793, 6209, 69995,10877,2631, 69996,3869, 69997,69999,350, 70001,317, 332, 362, 70004,2631, 70005,70006,70007,370, 350, 3284, 70000,317, 490,
5353, 490, 317, 70002,70003,317, 637, 317, 490, 343, 490, 317, 490, 70008,70009,317, 390, 490, 5793, 317, 70012,3869, 7490, 490, 70014,42505,70015,
70022,70024,70026,70028,70039,70041,70043,70051,70056,70081,70084,70095,70106,70124,70125,70131,70132,70136,70137,317, 70016,362, 34261,5661, 10633,317, 70017,
16278,70021,596, 317, 70018,5159, 57131,362, 317, 363, 70020,15952,317, 70019,317, 70023,370, 10505,19493,317, 2077, 382, 5126, 70025,70027,48320,23305,
- 2391, 317, 490, 23995,35774,381, 70029,70030,70031,70032,70036,70037,70038,317, 2077, 70033,70035,70034,11089,1020, 363, 351, 363, 2571, 380, 356, 466,
- 2584, 317, 317, 70040,35962,67184,16923,33846,317, 1526, 70042,343, 479, 317, 317, 1358, 490, 2298, 70044,70047,70048,8178, 343, 70045,317, 317, 317,
+ 2391, 317, 490, 23995,35774,381, 70029,70030,70031,70032,70036,70037,70038,317, 2077, 70033,70035,70034,11089,1020, 363, 351, 363, 2571, 380, 356, 466,
+ 2584, 317, 317, 70040,35962,67184,16923,33846,317, 1526, 70042,343, 479, 317, 317, 1358, 490, 2298, 70044,70047,70048,8178, 343, 70045,317, 317, 317,
70046,16637,1347, 70049,4982, 70050,70052,70053,70054,70055,70057,70058,70062,70064,12109,70065,70066,70067,70068,11236,27732,351, 7949, 6601, 70077,70078,70080,
317, 317, 10011,14341,70059,317, 317, 70060,5037, 70061,363, 5684, 70063,553, 384, 1060, 8325, 317, 317, 2152, 44592,317, 70069,70070,70071,3023, 70073,
- 70076,362, 385, 317, 427, 1160, 27367,317, 317, 63336,317, 1160, 70072,70074,479, 345, 70075,317, 382, 332, 6013, 343, 363, 70079,16867,3999, 317,
- 70082,70083,1481, 38875,3987, 2156, 11198,70085,5897, 70089,317, 2291, 70090,70091,5623, 965, 490, 70092,404, 2357, 70093,70086,1943, 70087,70088,12731,343,
+ 70076,362, 385, 317, 427, 1160, 27367,317, 317, 63336,317, 1160, 70072,70074,479, 345, 70075,317, 382, 332, 6013, 343, 363, 70079,16867,3999, 317,
+ 70082,70083,1481, 38875,3987, 2156, 11198,70085,5897, 70089,317, 2291, 70090,70091,5623, 965, 490, 70092,404, 2357, 70093,70086,1943, 70087,70088,12731,343,
362, 70094,70096,56759,70098,15745,70102,404, 70097,551, 70099,551, 70100,70101,14932,466, 36081,70103,70104,317, 317, 70105,317, 7214, 404, 404, 70107,
- 70108,5665, 70110,70111,565, 70112,317, 70115,70117,317, 70118,6409, 70119,317, 1135, 5037, 44745,20382,2063, 24260,70109,18192,14341,11874,2272, 370, 6598,
- 317, 317, 13011,11236,1383, 70113,490, 70114,13178,343, 490, 70116,3999, 384, 4984, 20684,351, 70120,70121,70122,70123,10617,501, 990, 356, 381, 380,
- 317, 317, 1915, 371, 317, 5105, 16704,317, 70126,70127,70128,317, 10035,6036, 8296, 2272, 8658, 70129,23516,317, 70130,16092,382, 70133,68324,23345,5309,
+ 70108,5665, 70110,70111,565, 70112,317, 70115,70117,317, 70118,6409, 70119,317, 1135, 5037, 44745,20382,2063, 24260,70109,18192,14341,11874,2272, 370, 6598,
+ 317, 317, 13011,11236,1383, 70113,490, 70114,13178,343, 490, 70116,3999, 384, 4984, 20684,351, 70120,70121,70122,70123,10617,501, 990, 356, 381, 380,
+ 317, 317, 1915, 371, 317, 5105, 16704,317, 70126,70127,70128,317, 10035,6036, 8296, 2272, 8658, 70129,23516,317, 70130,16092,382, 70133,68324,23345,5309,
1020, 70134,70135,10894,11442,10505,54046,70138,70139,70140,371, 70143,70147,70149,70154,70157,70159,70160,70164,70167,70173,70184,59225,70209,70221,70229,70231,
- 317, 70242,589, 70246,4965, 9244, 2272, 317, 7797, 70141,370, 317, 317, 31403,70142,6834, 15876,490, 317, 70144,350, 317, 2222, 70145,317, 70146,317,
+ 317, 70242,589, 70246,4965, 9244, 2272, 317, 7797, 70141,370, 317, 317, 31403,70142,6834, 15876,490, 317, 70144,350, 317, 2222, 70145,317, 70146,317,
317, 70148,69474,350, 317, 5273, 317, 317, 70150,15863,362, 1020, 70153,317, 2389, 70151,70152,10422,466, 2571, 317, 317, 317, 70155,2022, 317, 70156,
317, 590, 490, 11485,39119,70158,317, 3611, 317, 490, 365, 490, 2156, 70161,70162,70163,70165,317, 317, 596, 4060, 1459, 2845, 317, 70166,7871, 70168,
370, 5266, 49165,70169,24487,490, 17019,14198,70170,466, 70171,332, 70172,7911, 351, 2024, 5046, 70174,5205, 12332,70177,12796,490, 70178,70180,317, 70183,
2110, 70175,490, 70176,1481, 10898,590, 2110, 40806,11198,590, 70179,363, 317, 490, 490, 6900, 8403, 70181,6851, 70182,7850, 370, 70185,5561, 70187,70190,
70191,70194,70196,70198,70199,70201,70203,70204,70207,1109, 332, 70186,6900, 380, 332, 3505, 45402,5898, 10429,5105, 382, 70188,40798,70189,39569,317, 30878,
- 317, 363, 6420, 317, 317, 363, 70192,4984, 70193,48922,317, 317, 404, 351, 70195,490, 2078, 70197,10561,70200,380, 343, 317, 70202,384, 2584, 345,
+ 317, 363, 6420, 317, 317, 363, 70192,4984, 70193,48922,317, 317, 404, 351, 70195,490, 2078, 70197,10561,70200,380, 343, 317, 70202,384, 2584, 345,
317, 36630,490, 70205,590, 370, 553, 317, 70206,70208,317, 317, 590, 365, 332, 70210,1347, 70213,70214,70215,70216,70218,404, 70219,11263,550, 70211,
- 70212,18409,3676, 70217,466, 317, 317, 317, 317, 317, 14350,1347, 317, 389, 70220,22496,22560,70222,5120, 70224,70225,20757,70226,70228,54275,9780, 317,
+ 70212,18409,3676, 70217,466, 317, 317, 317, 317, 317, 14350,1347, 317, 389, 70220,22496,22560,70222,5120, 70224,70225,20757,70226,70228,54275,9780, 317,
27061,70223,317, 5120, 370, 362, 317, 317, 317, 2381, 1992, 70227,317, 4984, 343, 1160, 16063,490, 317, 70230,2381, 350, 5238, 362, 5825, 476, 70232,
- 317, 70233,70234,70239,362, 70240,70241,8054, 551, 22502,1588, 384, 70235,70237,70238,70236,476, 355, 351, 3999, 317, 1160, 70243,70244,2022, 17583,317,
+ 317, 70233,70234,70239,362, 70240,70241,8054, 551, 22502,1588, 384, 70235,70237,70238,70236,476, 355, 351, 3999, 317, 1160, 70243,70244,2022, 17583,317,
317, 365, 317, 5120, 64777,1345, 70245,317, 39569,466, 317, 2036, 70247,70248,317, 5611, 1481, 465, 70250,13899,70251,490, 70253,22525,70255,70256,70257,
- 490, 443, 70258,70260,70261,70264,70265,70272,70274,28836,70276,70277,70279,70283,70285,70288,70292,70300,70316,70321,70323,70328,70330,350, 1383, 317, 367,
+ 490, 443, 70258,70260,70261,70264,70265,70272,70274,28836,70276,70277,70279,70283,70285,70288,70292,70300,70316,70321,70323,70328,70330,350, 1383, 317, 367,
70259,1347, 16029,317, 39397,70262,949, 317, 70263,8553, 2022, 317, 52862,317, 9922, 6420, 317, 363, 5149, 5841, 10188,3599, 70266,8948, 70268,70269,14553,
70271,70267,5709, 476, 70270,12017,317, 343, 351, 37609,70273,350, 350, 37610,70275,351, 365, 317, 317, 501, 21424,317, 70278,5711, 4965, 2188, 19652,
- 70280,427, 70282,70281,70284,351, 363, 317, 350, 365, 317, 3611, 4984, 7060, 70286,332, 70287,490, 35794,2181, 70289,317, 7949, 70290,5840, 15646,9648,
+ 70280,427, 70282,70281,70284,351, 363, 317, 350, 365, 317, 3611, 4984, 7060, 70286,332, 70287,490, 35794,2181, 70289,317, 7949, 70290,5840, 15646,9648,
343, 70291,317, 3987, 4984, 67094,70293,70295,70298,70299,317, 12154,70294,70296,70297,9124, 35724,317, 70301,466, 2022, 70302,63124,70303,317, 33201,16620,
- 554, 8000, 317, 574, 6089, 317, 317, 70304,12605,70305,2077, 70307,4562, 70308,70310,70311,362, 70313,9914, 70314,317, 10519,6420, 553, 70306,4268, 317,
+ 554, 8000, 317, 574, 6089, 317, 317, 70304,12605,70305,2077, 70307,4562, 70308,70310,70311,362, 70313,9914, 70314,317, 10519,6420, 553, 70306,4268, 317,
380, 5273, 317, 5223, 317, 70309,479, 351, 14523,439, 317, 70312,317, 343, 6724, 9922, 476, 55534,35013,70315,70317,70318,2035, 57265,2272, 70319,70320,
- 9265, 363, 70322,25114,16660,317, 17019,3987, 390, 70324,16092,317, 1358, 343, 5273, 1033, 70325,32546,22469,317, 20712,514, 70326,70327,70329,466, 1020,
+ 9265, 363, 70322,25114,16660,317, 17019,3987, 390, 70324,16092,317, 1358, 343, 5273, 1033, 70325,32546,22469,317, 20712,514, 70326,70327,70329,466, 1020,
70331,70332,59435,70333,70334,70335,70336,70337,317, 3529, 18940,70338,70339,4789, 317, 439, 1108, 2631, 6502, 363, 5841, 317, 380, 317, 5273, 317, 27498,
- 11227,14069,7000, 11619,12106,70340,70342,8100, 70344,70353,70363,70365,70370,70343,343, 971, 371, 5313, 362, 566, 1459, 351, 70345,70347,41533,70348,2568,
+ 11227,14069,7000, 11619,12106,70340,70342,8100, 70344,70353,70363,70365,70370,70343,343, 971, 371, 5313, 362, 566, 1459, 351, 70345,70347,41533,70348,2568,
317, 317, 27266,70349,70351,490, 70346,32372,317, 2298, 350, 70350,317, 70352,350, 70354,2021, 70355,380, 70357,70359,70361,11613,317, 596, 70356,70358,
- 6726, 70360,990, 466, 317, 70362,371, 343, 566, 396, 380, 5742, 20476,70364,343, 350, 9720, 317, 70366,70368,317, 70369,365, 70367,31023,317, 384,
- 351, 384, 10926,384, 70372,356, 70374,70375,70377,70379,70381,70382,70387,70389,17042,7384, 70390,70391,70393,70396,317, 70398,70399,70404,70407,70412,317,
- 1992, 381, 28698,363, 1044, 70376,384, 10623,70378,70380,8695, 24185,16092,317, 3505, 70383,551, 6598, 70384,551, 37610,70385,466, 70386,317, 317, 317,
+ 6726, 70360,990, 466, 317, 70362,371, 343, 566, 396, 380, 5742, 20476,70364,343, 350, 9720, 317, 70366,70368,317, 70369,365, 70367,31023,317, 384,
+ 351, 384, 10926,384, 70372,356, 70374,70375,70377,70379,70381,70382,70387,70389,17042,7384, 70390,70391,70393,70396,317, 70398,70399,70404,70407,70412,317,
+ 1992, 381, 28698,363, 1044, 70376,384, 10623,70378,70380,8695, 24185,16092,317, 3505, 70383,551, 6598, 70384,551, 37610,70385,466, 70386,317, 317, 317,
5898, 550, 4949, 70388,490, 317, 965, 21274,490, 4965, 5561, 490, 66258,1020, 384, 12789,362, 343, 70392,439, 317, 317, 2571, 345, 317, 317, 70394,
- 363, 70395,404, 384, 1998, 11844,1230, 350, 6917, 317, 356, 343, 317, 490, 317, 70397,14462,2078, 8874, 356, 466, 12721,466, 317, 8811, 70400,317,
+ 363, 70395,404, 384, 1998, 11844,1230, 350, 6917, 317, 356, 343, 317, 490, 317, 70397,14462,2078, 8874, 356, 466, 12721,466, 317, 8811, 70400,317,
3869, 70401,4591, 2022, 362, 317, 70402,70403,317, 317, 70405,2022, 70406,6532, 317, 466, 565, 317, 7948, 5840, 70408,350, 9479, 317, 70409,1060, 52535,
- 466, 70410,317, 317, 70411,466, 317, 20869,5809, 70413,8281, 2163, 70415,367, 7523, 466, 70418,385, 70421,466, 70423,51025,17040,349, 317, 70419,2272,
+ 466, 70410,317, 317, 70411,466, 317, 20869,5809, 70413,8281, 2163, 70415,367, 7523, 466, 70418,385, 70421,466, 70423,51025,17040,349, 317, 70419,2272,
70420,70422,370, 70424,70426,70431,70443,70467,70502,70536,70540,70578,70583,70591,70649,70705,70778,70783,70792,70793,70810,70827,70845,70846,70862,70864,70872,
70873,70425,317, 2566, 317, 317, 70427,9943, 70428,70429,317, 317, 70430,2035, 339, 3869, 1108, 9454, 317, 70432,70433,70434,1998, 70437,67256,70439,70440,
- 12721,70441,578, 2117, 343, 70435,883, 70436,332, 70438,317, 317, 4267, 5611, 343, 70442,70444,1526, 70445,70453,70457,38081,70465,70466,404, 70446,350,
- 6991, 362, 317, 38227,70447,70448,70449,70450,70451,70452,70454,5836, 70455,317, 70456,345, 70458,8301, 70460,70462,70463,70464,2571, 1347, 317, 70459,317,
- 1347, 70461,5223, 381, 2391, 356, 466, 317, 363, 5022, 4591, 14132,949, 70468,10442,2705, 70470,70479,27664,70496,70497,22711,70498,35480,70499,490, 317,
+ 12721,70441,578, 2117, 343, 70435,883, 70436,332, 70438,317, 317, 4267, 5611, 343, 70442,70444,1526, 70445,70453,70457,38081,70465,70466,404, 70446,350,
+ 6991, 362, 317, 38227,70447,70448,70449,70450,70451,70452,70454,5836, 70455,317, 70456,345, 70458,8301, 70460,70462,70463,70464,2571, 1347, 317, 70459,317,
+ 1347, 70461,5223, 381, 2391, 356, 466, 317, 363, 5022, 4591, 14132,949, 70468,10442,2705, 70470,70479,27664,70496,70497,22711,70498,35480,70499,490, 317,
351, 3987, 70469,428, 70471,70472,70476,343, 70478,351, 28447,345, 70473,317, 489, 70474,70475,70477,317, 1347, 39684,8381, 70480,70483,317, 16368,70486,
10149,350, 385, 70489,70490,70491,70493,10035,70481,70482,551, 20098,70484,70485,70487,317, 22561,70488,5447, 350, 466, 433, 10815,362, 317, 2402, 25067,
70492,70494,14951,70495,345, 343, 10878,363, 10855,9027, 70500,365, 70501,1109, 8275, 70503,70507,70509,70511,70513,490, 350, 70515,70516,70523,1453, 70525,
489, 70530,351, 70532,70535,70504,578, 317, 70505,70506,2298, 5896, 384, 317, 13686,317, 343, 70508,380, 70510,350, 343, 11146,371, 1999, 10629,70512,
380, 70514,24793,12514,6917, 4962, 6602, 15899,3529, 351, 27652,3529, 3284, 2187, 70517,70518,70522,1588, 437, 317, 3573, 11613,70519,5836, 70520,70521,66271,
- 2036, 317, 393, 11146,70524,490, 70526,12696,466, 70527,70528,317, 317, 12930,3284, 57803,70529,317, 70531,317, 70533,466, 317, 70534,317, 511, 4980,
+ 2036, 317, 393, 11146,70524,490, 70526,12696,466, 70527,70528,317, 317, 12930,3284, 57803,70529,317, 70531,317, 70533,466, 317, 70534,317, 511, 4980,
8266, 1481, 1033, 70537,70538,343, 70539,6540, 317, 1999, 551, 19453,595, 356, 2832, 70541,2078, 70542,35973,70543,70545,70549,70552,70553,70557,70572,70573,
- 13670,10471,70574,70577,63668,490, 345, 1998, 317, 38461,70544,3079, 18907,466, 317, 70546,356, 10877,2571, 70547,70548,317, 381, 70550,70551,7062, 439,
+ 13670,10471,70574,70577,63668,490, 345, 1998, 317, 38461,70544,3079, 18907,466, 317, 70546,356, 10877,2571, 70547,70548,317, 381, 70550,70551,7062, 439,
351, 6036, 363, 5926, 427, 70554,70556,439, 317, 317, 2078, 5943, 365, 70555,70558,70561,70562,70567,70570,317, 44767,317, 317, 343, 2809, 70559,70560,
356, 19291,5174, 362, 317, 8544, 13161,70563,9649, 70564,2184, 70565,12925,70566,21048,5226, 317, 70568,317, 20331,70569,317, 343, 5611, 70571,490, 49815,
10364,70575,332, 70576,1999, 5810, 70579,70580,70581,70582,70584,70586,6468, 7386, 70587,70589,2381, 42448,70585,5325, 317, 2845, 70588,70590,317, 490, 11844,
70592,70593,70596,70598,7689, 50595,70602,70607,490, 70609,70614,70620,70625,50595,35854,70626,70628,70629,380, 7386, 54110,17160,317, 317, 317, 6674, 70594,
2219, 70595,5896, 317, 8948, 362, 13394,9012, 317, 565, 70597,70599,317, 25086,5216, 52774,70600,317, 70601,65739,64282,332, 8023, 741, 370, 317, 70603,
70604,70605,70606,5238, 70608,11516,553, 17583,5849, 6967, 5727, 6063, 385, 70610,343, 70611,70612,1160, 19283,7214, 317, 70613,356, 5742, 70615,70616,70617,
- 362, 2208, 317, 70619,362, 1345, 2322, 412, 362, 2571, 70618,317, 8301, 14501,70621,363, 317, 70622,70623,70624,427, 317, 8178, 5225, 356, 466, 362,
- 363, 70627,317, 345, 5624, 70630,70631,70648,18077,68269,317, 2110, 70632,70645,317, 637, 5942, 5942, 651, 317, 633, 1155, 633, 5134, 70633,70634,6195,
- 70636,332, 8948, 7143, 15121,7993, 70637,70639,70642,70644,317, 11086,4949, 70635,70638,476, 317, 70640,70641,14340,70643,70646,351, 70647,1160, 317, 317,
- 345, 70650,70651,70653,317, 70657,70660,70662,70663,70670,70671,70672,70677,70685,70695,70696,70697,350, 371, 317, 1325, 317, 70652,384, 6228, 317, 2631,
+ 362, 2208, 317, 70619,362, 1345, 2322, 412, 362, 2571, 70618,317, 8301, 14501,70621,363, 317, 70622,70623,70624,427, 317, 8178, 5225, 356, 466, 362,
+ 363, 70627,317, 345, 5624, 70630,70631,70648,18077,68269,317, 2110, 70632,70645,317, 637, 5942, 5942, 651, 317, 633, 1155, 633, 5134, 70633,70634,6195,
+ 70636,332, 8948, 7143, 15121,7993, 70637,70639,70642,70644,317, 11086,4949, 70635,70638,476, 317, 70640,70641,14340,70643,70646,351, 70647,1160, 317, 317,
+ 345, 70650,70651,70653,317, 70657,70660,70662,70663,70670,70671,70672,70677,70685,70695,70696,70697,350, 371, 317, 1325, 317, 70652,384, 6228, 317, 2631,
317, 317, 70654,70655,70656,317, 2067, 70658,18611,70659,317, 1108, 363, 48051,433, 70661,363, 4925, 363, 70664,70668,363, 70669,5624, 70665,317, 24661,
70666,404, 70667,2022, 363, 350, 5055, 62550,18257,317, 6036, 384, 70673,3640, 70675,317, 38193,345, 70674,317, 356, 466, 362, 317, 317, 345, 70676,
- 1347, 10471,317, 31834,2631, 70678,317, 404, 1266, 317, 2210, 345, 70679,70683,1358, 5711, 70684,404, 317, 317, 70680,6402, 70681,1548, 356, 70682,363,
- 5033, 317, 317, 1531, 363, 363, 70686,70687,12598,70688,363, 70694,404, 382, 6179, 332, 11613,70689,70690,16917,317, 317, 7622, 317, 381, 5054, 317,
+ 1347, 10471,317, 31834,2631, 70678,317, 404, 1266, 317, 2210, 345, 70679,70683,1358, 5711, 70684,404, 317, 317, 70680,6402, 70681,1548, 356, 70682,363,
+ 5033, 317, 317, 1531, 363, 363, 70686,70687,12598,70688,363, 70694,404, 382, 6179, 332, 11613,70689,70690,16917,317, 317, 7622, 317, 381, 5054, 317,
70691,20523,2094, 345, 70692,70693,370, 7055, 351, 363, 380, 70698,70704,5547, 70699,70701,70700,70702,70703,70706,355, 70711,70715,70721,70722,70726,70756,
- 70758,63504,70763,70765,70767,70769,8178, 70771,70772,70775,550, 2110, 70707,5040, 317, 70709,70710,70708,70712,397, 70714,384, 7698, 380, 70713,31812,397,
- 17410,70716,70718,317, 7428, 70720,317, 317, 70717,317, 1347, 70719,408, 5761, 433, 5652, 317, 17699,370, 6598, 70723,380, 70724,70725,317, 490, 7567,
+ 70758,63504,70763,70765,70767,70769,8178, 70771,70772,70775,550, 2110, 70707,5040, 317, 70709,70710,70708,70712,397, 70714,384, 7698, 380, 70713,31812,397,
+ 17410,70716,70718,317, 7428, 70720,317, 317, 70717,317, 1347, 70719,408, 5761, 433, 5652, 317, 17699,370, 6598, 70723,380, 70724,70725,317, 490, 7567,
70727,332, 70731,70744,3999, 70746,317, 70753,70754,70755,5623, 70728,70729,6547, 70730,637, 317, 70732,70734,10538,70733,70735,317, 362, 317, 70736,70740,
- 70737,70738,70739,70741,70742,70743,70745,6831, 70747,12434,404, 317, 317, 317, 70748,317, 317, 70752,317, 70749,70750,70751,448, 7590, 363, 363, 2203,
- 565, 12590,59928,70757,551, 29666,16291,2219, 70759,15600,317, 70760,317, 70762,70761,351, 1588, 433, 317, 6036, 9624, 48991,70764,350, 14415,317, 8274,
- 10878,70766,2310, 466, 2117, 317, 1347, 5223, 40625,317, 70768,317, 574, 70770,10550,1194, 70773,363, 490, 5174, 70774,4591, 70776,345, 5828, 70777,317,
- 5561, 27985,317, 490, 70779,15754,70781,317, 70780,363, 70782,1347, 70784,8172, 25441,46527,70787,70788,317, 7850, 363, 70785,70786,68400,15814,343, 317,
- 70789,7657, 70790,70791,70794,7698, 48764,70796,59647,70798,362, 70803,70804,70806,10447,70807,6923, 70808,1109, 343, 70809,539, 70795,37988,317, 317, 332,
- 317, 317, 565, 317, 70797,317, 317, 70799,332, 14168,1992, 9699, 70801,70800,70802,70805,1020, 317, 5055, 741, 5055, 5428, 365, 345, 44066,6402, 317,
+ 70737,70738,70739,70741,70742,70743,70745,6831, 70747,12434,404, 317, 317, 317, 70748,317, 317, 70752,317, 70749,70750,70751,448, 7590, 363, 363, 2203,
+ 565, 12590,59928,70757,551, 29666,16291,2219, 70759,15600,317, 70760,317, 70762,70761,351, 1588, 433, 317, 6036, 9624, 48991,70764,350, 14415,317, 8274,
+ 10878,70766,2310, 466, 2117, 317, 1347, 5223, 40625,317, 70768,317, 574, 70770,10550,1194, 70773,363, 490, 5174, 70774,4591, 70776,345, 5828, 70777,317,
+ 5561, 27985,317, 490, 70779,15754,70781,317, 70780,363, 70782,1347, 70784,8172, 25441,46527,70787,70788,317, 7850, 363, 70785,70786,68400,15814,343, 317,
+ 70789,7657, 70790,70791,70794,7698, 48764,70796,59647,70798,362, 70803,70804,70806,10447,70807,6923, 70808,1109, 343, 70809,539, 70795,37988,317, 317, 332,
+ 317, 317, 565, 317, 70797,317, 317, 70799,332, 14168,1992, 9699, 70801,70800,70802,70805,1020, 317, 5055, 741, 5055, 5428, 365, 345, 44066,6402, 317,
2317, 343, 2272, 427, 70811,70812,66645,317, 70813,15745,70815,70817,70819,70823,70826,5739, 317, 53186,70814,317, 1325, 589, 70816,58037,317, 332, 70818,
317, 339, 9878, 70820,362, 70821,70822,1347, 2036, 363, 6228, 8301, 64140,70824,7916, 317, 5353, 317, 1109, 70825,317, 6089, 370, 317, 70828,11619,70830,
596, 70831,7631, 28011,350, 13003,70832,14905,70833,70839,3987, 70844,490, 70829,1030, 7045, 317, 356, 5872, 317, 317, 351, 2024, 317, 551, 70834,70836,
- 17290,362, 350, 4984, 343, 317, 70835,511, 370, 4980, 356, 317, 70837,70838,16410,317, 70840,70841,1325, 70842,70843,1347, 350, 362, 490, 317, 971,
- 70847,70858,70860,2022, 539, 350, 24090,365, 70848,9027, 70849,70850,381, 30012,317, 70851,70852,70853,70854,70855,70856,70857,345, 70859,317, 44620,4980,
- 13221,317, 7785, 317, 6607, 317, 70861,16891,371, 70863,3284, 339, 317, 5836, 70865,70867,5205, 15457,2271, 363, 70868,70869,70870,317, 317, 70866,317,
+ 17290,362, 350, 4984, 343, 317, 70835,511, 370, 4980, 356, 317, 70837,70838,16410,317, 70840,70841,1325, 70842,70843,1347, 350, 362, 490, 317, 971,
+ 70847,70858,70860,2022, 539, 350, 24090,365, 70848,9027, 70849,70850,381, 30012,317, 70851,70852,70853,70854,70855,70856,70857,345, 70859,317, 44620,4980,
+ 13221,317, 7785, 317, 6607, 317, 70861,16891,371, 70863,3284, 339, 317, 5836, 70865,70867,5205, 15457,2271, 363, 70868,70869,70870,317, 317, 70866,317,
384, 523, 63548,2553, 17410,317, 31824,1347, 28691,1347, 345, 70871,317, 19390,2326, 68714,70874,70875,343, 12798,410, 317, 7073, 2171, 317, 317, 70876,
70878,70879,70880,70882,24876,51518,2279, 675, 5896, 1020, 3023, 70881,6601, 14574,619, 70883,70884,70912,70945,28836,70979,46641,70981,71004,71013,71019,71021,
2362, 5279, 22100,350, 28945,332, 351, 70885,70886,362, 70889,70890,70896,8403, 70902,70905,501, 317, 1481, 339, 317, 29673,501, 70887,345, 381, 20178,
- 1230, 317, 70888,5896, 7850, 7785, 70891,11146,2316, 490, 490, 11844,339, 70892,70893,70894,70895,70897,70900,9170, 1481, 317, 70898,70899,70901,317, 317,
- 58377,317, 343, 2116, 70903,70904,31167,7306, 14561,70906,466, 70911,6228, 70907,317, 4974, 6420, 317, 70908,70909,70910,18244,70913,70914,70916,6504, 362,
+ 1230, 317, 70888,5896, 7850, 7785, 70891,11146,2316, 490, 490, 11844,339, 70892,70893,70894,70895,70897,70900,9170, 1481, 317, 70898,70899,70901,317, 317,
+ 58377,317, 343, 2116, 70903,70904,31167,7306, 14561,70906,466, 70911,6228, 70907,317, 4974, 6420, 317, 70908,70909,70910,18244,70913,70914,70916,6504, 362,
356, 70917,1060, 70925,70931,70933,70935,70938,70943,8506, 317, 2012, 12789,70915,10798,317, 404, 70918,70920,70923,6412, 70919,380, 45787,70921,317, 70922,
- 317, 70924,70926,70928,317, 70927,70929,70930,373, 70932,317, 70934,2117, 596, 317, 70936,70937,7448, 5464, 466, 317, 70939,70940,70941,70942,70944,345,
- 2571, 70946,70948,70951,70955,14767,70957,70961,70962,70967,70970,317, 70976,70978,317, 343, 70947,10840,3284, 427, 3284, 5836, 2317, 70949,2134, 70950,332,
+ 317, 70924,70926,70928,317, 70927,70929,70930,373, 70932,317, 70934,2117, 596, 317, 70936,70937,7448, 5464, 466, 317, 70939,70940,70941,70942,70944,345,
+ 2571, 70946,70948,70951,70955,14767,70957,70961,70962,70967,70970,317, 70976,70978,317, 343, 70947,10840,3284, 427, 3284, 5836, 2317, 70949,2134, 70950,332,
2402, 317, 605, 5991, 406, 1588, 317, 317, 70952,317, 70953,317, 70954,70956,5537, 343, 317, 741, 345, 10891,70958,389, 404, 363, 70959,10891,70960,
362, 427, 490, 317, 1100, 317, 317, 4984, 5223, 8948, 6717, 363, 16623,15253,1345, 14062,16137,9592, 2571, 70963,70965,476, 70964,466, 1160, 317, 70966,
1194, 70968,317, 404, 5809, 70969,466, 1160, 70971,5273, 1020, 70972,70973,70974,70975,466, 317, 70977,389, 2156, 351, 7689, 70980,38877,45865,8828, 70982,
- 490, 396, 70984,501, 70985,70986,70987,70988,70989,12642,70990,70997,6831, 70998,70999,34344,70983,363, 2132, 363, 4962, 4976, 363, 343, 8296, 317, 1030,
- 9624, 332, 317, 14439,16670,317, 332, 317, 1108, 14571,7306, 70991,70992,3284, 70996,45155,70993,70994,70995,2035, 23247,343, 2110, 4962, 71000,71001,2110,
+ 490, 396, 70984,501, 70985,70986,70987,70988,70989,12642,70990,70997,6831, 70998,70999,34344,70983,363, 2132, 363, 4962, 4976, 363, 343, 8296, 317, 1030,
+ 9624, 332, 317, 14439,16670,317, 332, 317, 1108, 14571,7306, 70991,70992,3284, 70996,45155,70993,70994,70995,2035, 23247,343, 2110, 4962, 71000,71001,2110,
71002,71003,71005,71006,71007,71009,4563, 71010,46452,5836, 596, 363, 45345,8456, 343, 71008,11145,46486,71011,71012,1347, 71014,2280, 71015,71016,5836, 71017,
343, 71018,2184, 9170, 3284, 14038,71020,9623, 6228, 71022,4213, 71024,71027,71028,71029,511, 71030,33877,71033,71034,71035,71039,71042,71044,4949, 71023,71025,
- 10257,71026,13790,466, 345, 16032,42986,4943, 9696, 71031,9450, 71032,317, 343, 7785, 22561,19665,317, 23311,71036,71037,71038,71040,71041,71043,2592, 5653,
+ 10257,71026,13790,466, 345, 16032,42986,4943, 9696, 71031,9450, 71032,317, 343, 7785, 22561,19665,317, 23311,71036,71037,71038,71040,71041,71043,2592, 5653,
71045,412, 1588, 10158,356, 1347, 11324,71046,71099,1060, 71126,668, 71156,1060, 345, 71190,71204,71047,71048,71050,1383, 71052,71054,426, 71057,71064,71069,
- 371, 71072,71075,71077,71088,71094,71096,6674, 2004, 317, 317, 71049,427, 15646,466, 362, 317, 67754,384, 71051,71053,381, 343, 8296, 350, 651, 7095,
- 317, 471, 71055,317, 71056,317, 71058,71059,317, 523, 2193, 15244,71060,1992, 71061,71062,71063,71065,1345, 317, 2035, 71068,5363, 71066,71067,356, 4591,
+ 371, 71072,71075,71077,71088,71094,71096,6674, 2004, 317, 317, 71049,427, 15646,466, 362, 317, 67754,384, 71051,71053,381, 343, 8296, 350, 651, 7095,
+ 317, 471, 71055,317, 71056,317, 71058,71059,317, 523, 2193, 15244,71060,1992, 71061,71062,71063,71065,1345, 317, 2035, 71068,5363, 71066,71067,356, 4591,
317, 11089,24684,71070,71071,34987,466, 1160, 3869, 2391, 71073,71074,317, 3869, 12925,466, 15247,18333,1020, 363, 317, 71076,317, 23391,363, 7698, 71078,
- 404, 71079,71081,71080,71082,71085,71083,71084,71086,71087,10487,356, 7504, 466, 317, 10890,71089,71090,332, 71092,317, 317, 8301, 317, 18127,1347, 9170,
+ 404, 71079,71081,71080,71082,71085,71083,71084,71086,71087,10487,356, 7504, 466, 317, 10890,71089,71090,332, 71092,317, 317, 8301, 317, 18127,1347, 9170,
317, 317, 7785, 490, 317, 71091,317, 317, 71093,57457,3284, 332, 46183,71095,350, 990, 7698, 6046, 71097,466, 27528,317, 6412, 317, 71098,6228, 25732,
1160, 71100,8184, 71104,71108,350, 71118,71120,71122,71123,71124,6340, 11332,9909, 317, 7850, 2024, 2222, 71101,71102,317, 71103,71105,71106,317, 317, 71107,
- 466, 2222, 362, 71109,71115,71116,15646,71110,2571, 32473,317, 71111,71114,71112,71113,71117,71119,362, 46697,71121,317, 350, 350, 1108, 351, 370, 3284,
+ 466, 2222, 362, 71109,71115,71116,15646,71110,2571, 32473,317, 71111,71114,71112,71113,71117,71119,362, 46697,71121,317, 350, 350, 1108, 351, 370, 3284,
317, 71125,71127,71129,71131,71132,71133,350, 71136,71142,71148,1108, 71154,71155,18849,317, 60259,466, 71128,6228, 621, 351, 7916, 401, 317, 317, 71130,
466, 380, 1347, 32383,4965, 343, 332, 351, 351, 71134,317, 71135,427, 14586,370, 71137,71138,2948, 332, 11249,71139,317, 543, 1243, 317, 317, 71140,
- 71141,370, 71143,71147,2317, 71144,466, 71145,71146,439, 3529, 370, 3869, 551, 351, 466, 317, 2406, 71149,71152,71153,1230, 71150,71151,990, 42731,3999,
+ 71141,370, 71143,71147,2317, 71144,466, 71145,71146,439, 3529, 370, 3869, 551, 351, 466, 317, 2406, 71149,71152,71153,1230, 71150,71151,990, 42731,3999,
317, 351, 20766,317, 511, 317, 12696,490, 71157,71158,71161,71164,2334, 71165,71166,71167,71170,71171,71174,71176,71179,71180,71187,14644,71159,317, 71160,
- 4984, 883, 71162,27860,71163,5616, 3522, 4984, 490, 351, 11347,23624,3284, 1453, 71168,39736,332, 3284, 71169,350, 8099, 370, 317, 9170, 317, 71172,466,
- 370, 317, 71173,371, 1526, 71175,355, 2693, 317, 71177,71178,1020, 2391, 317, 5174, 390, 15951,317, 71181,71183,71186,317, 971, 71182,317, 71184,317,
+ 4984, 883, 71162,27860,71163,5616, 3522, 4984, 490, 351, 11347,23624,3284, 1453, 71168,39736,332, 3284, 71169,350, 8099, 370, 317, 9170, 317, 71172,466,
+ 370, 317, 71173,371, 1526, 71175,355, 2693, 317, 71177,71178,1020, 2391, 317, 5174, 390, 15951,317, 71181,71183,71186,317, 971, 71182,317, 71184,317,
1347, 5217, 71185,371, 16589,5840, 71188,4952, 71189,370, 6406, 3422, 2260, 317, 2541, 71191,71192,71194,490, 71195,71196,71197,71198,71200,71201,349, 71193,
- 317, 10422,12434,317, 317, 363, 350, 2077, 2024, 511, 5363, 317, 490, 317, 490, 371, 71199,14716,317, 49269,37649,365, 2222, 317, 1234, 633, 351,
+ 317, 10422,12434,317, 317, 363, 350, 2077, 2024, 511, 5363, 317, 490, 317, 490, 371, 71199,14716,317, 49269,37649,365, 2222, 317, 1234, 633, 351,
8125, 71202,71203,2277, 15017,370, 1267, 2077, 317, 3599, 6412, 5241, 71205,71206,2631, 490, 1243, 71222,71236,71255,71256,574, 71279,71280,71281,71282,71292,
- 71207,596, 380, 71209,71218,71219,20663,71221,317, 9581, 71208,39530,10422,466, 317, 317, 71210,7035, 317, 71211,317, 356, 1108, 317, 2077, 71212,448,
- 18127,71213,71214,3599, 317, 71216,71217,6089, 990, 1992, 390, 363, 71215,12303,381, 370, 1109, 390, 71220,317, 476, 550, 19487,2156, 370, 7437, 317,
+ 71207,596, 380, 71209,71218,71219,20663,71221,317, 9581, 71208,39530,10422,466, 317, 317, 71210,7035, 317, 71211,317, 356, 1108, 317, 2077, 71212,448,
+ 18127,71213,71214,3599, 317, 71216,71217,6089, 990, 1992, 390, 363, 71215,12303,381, 370, 1109, 390, 71220,317, 476, 550, 19487,2156, 370, 7437, 317,
317, 317, 2188, 13954,71223,370, 371, 71225,71227,71228,55194,71229,71233,33936,71234,317, 536, 317, 5273, 71224,2188, 363, 71226,384, 2022, 4969, 46108,
- 317, 350, 332, 71230,350, 71232,34987,466, 317, 71231,10422,466, 2222, 404, 565, 390, 43865,71235,1033, 2391, 71237,71238,71239,71240,381, 71241,371,
+ 317, 350, 332, 71230,350, 71232,34987,466, 317, 71231,10422,466, 2222, 404, 565, 390, 43865,71235,1033, 2391, 71237,71238,71239,71240,381, 71241,371,
71244,971, 71246,317, 370, 10907,317, 45033,9702, 1791, 380, 2134, 11280,1548, 71242,19661,2058, 317, 71243,317, 58008,317, 317, 317, 1160, 46262,71245,
317, 317, 71247,2022, 45995,317, 71254,317, 6228, 320, 71248,71249,9624, 71251,71252,317, 2405, 66194,5840, 5037, 2391, 317, 7408, 5898, 317, 317, 71250,
- 317, 3648, 362, 317, 1999, 5159, 23881,317, 71253,363, 343, 1160, 371, 371, 317, 71257,71262,71267,71272,71276,393, 71258,71261,317, 317, 621, 842,
+ 317, 3648, 362, 317, 1999, 5159, 23881,317, 71253,363, 343, 1160, 371, 371, 317, 71257,71262,71267,71272,71276,393, 71258,71261,317, 317, 621, 842,
3599, 16401,317, 7401, 381, 2571, 317, 2272, 3869, 1347, 71259,37874,71260,31380,5960, 637, 6996, 6996, 6420, 1992, 317, 71263,71264,71266,5611, 2116, 55831,
- 3284, 1108, 14645,317, 71265,317, 317, 317, 16589,71268,370, 71270,343, 71269,345, 12237,317, 351, 71271,317, 1615, 2171, 13318,12237,370, 2571, 317,
+ 3284, 1108, 14645,317, 71265,317, 317, 317, 16589,71268,370, 71270,343, 71269,345, 12237,317, 351, 71271,317, 1615, 2171, 13318,12237,370, 2571, 317,
71273,71274,71275,71277,71278,7823, 2715, 317, 14470,71283,71285,363, 71287,71288,390, 71290,71284,2391, 2381, 71286,2571, 371, 437, 71289,390, 38135,71291,
317, 370, 14905,2510, 13638,5149, 45499,71293,71294,26076,317, 317, 490, 3284, 351, 8281, 71295,71296,71315,71316,14746,71327,1060, 71342,345, 2035, 71385,
17255,71297,2188, 71298,71299,71300,71302,71303,71307,71310,71311,71312,17745,317, 71314,6555, 11613,71301,317, 1347, 350, 317, 71304,466, 1266, 317, 35705,
71305,11089,362, 2036, 317, 71306,1078, 7878, 71308,317, 596, 363, 71309,69041,15244,466, 6713, 1160, 1347, 317, 1345, 2184, 317, 65743,351, 71313,71317,
2845, 71319,71321,490, 566, 9702, 71322,317, 8519, 317, 71325,356, 317, 71318,38415,21245,6046, 71320,14865,350, 437, 2184, 5441, 7072, 71323,404, 16092,
- 71324,7072, 10877,362, 501, 7428, 71326,16075,466, 71328,6917, 7261, 71332,2188, 71334,71338,71339,71329,71330,71331,317, 71333,350, 14483,3999, 64020,317,
- 317, 71335,466, 71337,71336,317, 7857, 317, 350, 71340,71341,71343,371, 71345,71347,343, 71349,71354,71355,71358,1329, 12360,350, 71362,71344,384, 317,
+ 71324,7072, 10877,362, 501, 7428, 71326,16075,466, 71328,6917, 7261, 71332,2188, 71334,71338,71339,71329,71330,71331,317, 71333,350, 14483,3999, 64020,317,
+ 317, 71335,466, 71337,71336,317, 7857, 317, 350, 71340,71341,71343,371, 71345,71347,343, 71349,71354,71355,71358,1329, 12360,350, 71362,71344,384, 317,
448, 389, 317, 71346,63987,17601,46661,317, 71348,390, 71350,71351,71352,6859, 6021, 317, 351, 343, 317, 2997, 317, 317, 66537,351, 466, 317, 71353,
- 14278,317, 633, 71356,71357,501, 1347, 466, 71359,6409, 365, 14717,71360,71361,949, 71363,71369,71370,19163,71373,2627, 16651,71374,1194, 71379,71384,1160,
- 71364,5898, 551, 71366,71365,371, 71367,71368,71371,71372,2503, 317, 4563, 53043,71375,71376,71377,511, 1160, 345, 71378,71380,71382,71381,71383,71386,371,
+ 14278,317, 633, 71356,71357,501, 1347, 466, 71359,6409, 365, 14717,71360,71361,949, 71363,71369,71370,19163,71373,2627, 16651,71374,1194, 71379,71384,1160,
+ 71364,5898, 551, 71366,71365,371, 71367,71368,71371,71372,2503, 317, 4563, 53043,71375,71376,71377,511, 1160, 345, 71378,71380,71382,71381,71383,71386,371,
71387,71389,490, 71392,71388,5991, 596, 317, 71390,71391,317, 71393,71394,71395,71398,71415,71454,71467,71472,71485,71489,71493,71498,71508,71514,71583,71621,
- 71658,71667,8613, 71676,71708,71717,71728,71791,71800,71804,71805,71806,5363, 596, 8506, 71396,71397,317, 3599, 1347, 466, 16138,317, 317, 12925,466, 317,
- 71399,6991, 71401,71403,71407,343, 71409,71413,317, 345, 490, 71400,71402,371, 20113,371, 381, 317, 317, 596, 71404,3284, 317, 317, 71405,356, 466,
- 370, 317, 317, 71406,2146, 71408,332, 1109, 390, 13498,3284, 71410,317, 317, 71412,71411,371, 3284, 1109, 5836, 6780, 317, 71414,8296, 397, 365, 332,
- 317, 15387,13881,543, 71416,71421,71426,71449,71452,71453,317, 71417,317, 71418,71419,71420,22650,1267, 317, 317, 1353, 1155, 317, 1353, 2086, 317, 317,
+ 71658,71667,8613, 71676,71708,71717,71728,71791,71800,71804,71805,71806,5363, 596, 8506, 71396,71397,317, 3599, 1347, 466, 16138,317, 317, 12925,466, 317,
+ 71399,6991, 71401,71403,71407,343, 71409,71413,317, 345, 490, 71400,71402,371, 20113,371, 381, 317, 317, 596, 71404,3284, 317, 317, 71405,356, 466,
+ 370, 317, 317, 71406,2146, 71408,332, 1109, 390, 13498,3284, 71410,317, 317, 71412,71411,371, 3284, 1109, 5836, 6780, 317, 71414,8296, 397, 365, 332,
+ 317, 15387,13881,543, 71416,71421,71426,71449,71452,71453,317, 71417,317, 71418,71419,71420,22650,1267, 317, 317, 1353, 1155, 317, 1353, 2086, 317, 317,
1267, 317, 317, 317, 317, 317, 317, 317, 71422,71424,71425,71423,317, 316, 71427,71432,71434,5457, 71428,317, 1347, 71429,370, 317, 71430,2156, 10674,
317, 466, 317, 71431,32010,71433,15618,317, 596, 317, 55907,71435,71437,71441,71446,71436,71438,71439,71440,71442,8684, 71443,71444,71445,71447,71448,71450,
71451,1160, 3987, 317, 317, 345, 1347, 1358, 317, 380, 867, 2110, 71455,511, 71456,365, 71464,71465,5793, 317, 345, 44883,332, 2503, 332, 317, 48840,
317, 362, 317, 71457,71458,3023, 8223, 71459,71460,6601, 37254,71462,2391, 28462,426, 71461,71463,396, 71466,317, 8557, 490, 317, 17477,350, 380, 71468,
71469,71470,71471,1033, 71473,351, 71474,71475,490, 490, 44716,71476,363, 511, 490, 317, 3361, 71477,71479,71481,38194,71482,2571, 5005, 71483,317, 71478,
- 5197, 371, 71480,14316,317, 381, 1588, 71484,356, 2719, 317, 71486,6021, 71487,71488,71490,317, 317, 317, 6578, 317, 71491,71492,317, 27912,71494,350,
+ 5197, 371, 71480,14316,317, 381, 1588, 71484,356, 2719, 317, 71486,6021, 71487,71488,71490,317, 317, 317, 6578, 317, 71491,71492,317, 27912,71494,350,
71495,71497,19174,332, 317, 71496,317, 317, 71499,490, 71506,317, 71500,71501,71502,71503,71504,71505,71507,71509,317, 71510,3787, 380, 71511,2351, 16633,
371, 490, 3283, 71512,11844,396, 3284, 1109, 71513,71515,5896, 71520,71527,71532,5655, 71534,71535,38654,71551,71555,71556,71558,338, 71568,71569,71572,71573,
71577,11510,71578,343, 2271, 596, 489, 317, 71516,1444, 71518,317, 565, 71517,317, 343, 365, 317, 427, 317, 317, 345, 71519,3284, 15051,71521,71522,
- 71523,350, 71526,357, 317, 2210, 71524,71525,3284, 22241,5105, 370, 71528,71529,1109, 71531,317, 7949, 363, 18675,71530,317, 3640, 356, 71533,343, 9422,
+ 71523,350, 71526,357, 317, 2210, 71524,71525,3284, 22241,5105, 370, 71528,71529,1109, 71531,317, 7949, 363, 18675,71530,317, 3640, 356, 71533,343, 9422,
2948, 5126, 10058,71536,71539,71544,584, 71545,71547,71548,317, 71549,362, 317, 317, 71537,71538,5365, 356, 466, 2510, 317, 317, 71540,57063,370, 71543,
- 345, 332, 71541,317, 71542,355, 370, 71546,4984, 5570, 2211, 1347, 12700,3284, 71550,5616, 2261, 11648,5838, 15138,5897, 71552,71553,362, 71554,317, 8325,
+ 345, 332, 71541,317, 71542,355, 370, 71546,4984, 5570, 2211, 1347, 12700,3284, 71550,5616, 2261, 11648,5838, 15138,5897, 71552,71553,362, 71554,317, 8325,
1347, 317, 1230, 317, 317, 2322, 371, 345, 7399, 363, 12726,317, 317, 343, 71557,71557,343, 1011, 356, 9385, 71559,71561,71562,317, 71563,71564,11055,
357, 4984, 363, 71560,332, 7657, 7657, 71565,8281, 71566,317, 43829,71567,71570,71571,1347, 9938, 22370,501, 345, 5457, 317, 365, 317, 62668,71574,71575,
- 466, 373, 5226, 317, 317, 382, 5524, 71576,317, 71579,71580,71581,71582,71584,71592,2533, 71594,71612,365, 71614,9289, 71618,7850, 71620,2357, 71585,5120,
+ 466, 373, 5226, 317, 317, 382, 5524, 71576,317, 71579,71580,71581,71582,71584,71592,2533, 71594,71612,365, 71614,9289, 71618,7850, 71620,2357, 71585,5120,
343, 71587,2146, 71586,3284, 4984, 4952, 317, 339, 71588,71589,71590,71591,351, 351, 71593,317, 9265, 1020, 71595,1230, 2402, 71599,71602,71603,317, 71606,
- 71610,71596,71597,71598,71600,71601,363, 516, 317, 9624, 1526, 317, 71604,404, 71605,9319, 381, 428, 5038, 71607,6166, 71608,382, 71609,370, 71611,381,
- 12277,71613,4965, 71615,3079, 71616,71617,1358, 317, 7618, 13658,317, 5037, 365, 71619,317, 490, 71622,71623,71628,71629,71633,15090,71635,71636,71641,2146,
- 71647,71648,71650,71652,71653,490, 365, 317, 317, 6409, 14611,71624,71626,596, 71627,5836, 71625,39009,11114,57320,362, 64979,1060, 50575,317, 317, 317,
- 18915,380, 1060, 71630,332, 351, 2351, 5432, 2271, 71631,71632,69042,317, 317, 6354, 9696, 362, 69168,1160, 71634,351, 14569,6228, 317, 1929, 2546, 317,
- 317, 317, 3079, 363, 71637,71638,71640,3236, 13807,2308, 41323,317, 8948, 317, 6598, 317, 71639,317, 1347, 9444, 6598, 51361,490, 71642,18138,332, 490,
- 71644,3284, 71646,71643,2063, 554, 71645,397, 4591, 2271, 5570, 71649,466, 8423, 71651,10763,7734, 71654,5825, 3228, 317, 71655,8125, 31352,71656,71657,317,
- 2066, 71659,71660,71661,71663,357, 317, 4591, 1358, 71665,317, 317, 343, 332, 554, 71662,71664,317, 15202,381, 351, 71666,1160, 1347, 466, 34041,7523,
+ 71610,71596,71597,71598,71600,71601,363, 516, 317, 9624, 1526, 317, 71604,404, 71605,9319, 381, 428, 5038, 71607,6166, 71608,382, 71609,370, 71611,381,
+ 12277,71613,4965, 71615,3079, 71616,71617,1358, 317, 7618, 13658,317, 5037, 365, 71619,317, 490, 71622,71623,71628,71629,71633,15090,71635,71636,71641,2146,
+ 71647,71648,71650,71652,71653,490, 365, 317, 317, 6409, 14611,71624,71626,596, 71627,5836, 71625,39009,11114,57320,362, 64979,1060, 50575,317, 317, 317,
+ 18915,380, 1060, 71630,332, 351, 2351, 5432, 2271, 71631,71632,69042,317, 317, 6354, 9696, 362, 69168,1160, 71634,351, 14569,6228, 317, 1929, 2546, 317,
+ 317, 317, 3079, 363, 71637,71638,71640,3236, 13807,2308, 41323,317, 8948, 317, 6598, 317, 71639,317, 1347, 9444, 6598, 51361,490, 71642,18138,332, 490,
+ 71644,3284, 71646,71643,2063, 554, 71645,397, 4591, 2271, 5570, 71649,466, 8423, 71651,10763,7734, 71654,5825, 3228, 317, 71655,8125, 31352,71656,71657,317,
+ 2066, 71659,71660,71661,71663,357, 317, 4591, 1358, 71665,317, 317, 343, 332, 554, 71662,71664,317, 15202,381, 351, 71666,1160, 1347, 466, 34041,7523,
8639, 351, 71668,332, 2503, 381, 71674,71675,2391, 2553, 317, 351, 71669,71673,345, 317, 1160, 71670,71671,637, 6996, 317, 317, 694, 71672,6394, 15226,
- 18014,363, 2108, 71677,71678,71681,71685,71686,71689,71690,71691,71693,6675, 362, 8266, 71694,71697,71698,71703,71704,427, 71706,7657, 4186, 343, 317, 2086,
- 6923, 490, 71679,71680,30218,345, 2142, 1109, 317, 71682,71683,71684,317, 7852, 388, 3772, 317, 2546, 71687,71688,317, 317, 476, 6046, 332, 5309, 7494,
- 741, 317, 5328, 71692,317, 20331,5482, 317, 46531,71695,490, 317, 17944,317, 71696,7523, 18333,71699,57308,71702,317, 59466,71700,71701,370, 2150, 7913,
+ 18014,363, 2108, 71677,71678,71681,71685,71686,71689,71690,71691,71693,6675, 362, 8266, 71694,71697,71698,71703,71704,427, 71706,7657, 4186, 343, 317, 2086,
+ 6923, 490, 71679,71680,30218,345, 2142, 1109, 317, 71682,71683,71684,317, 7852, 388, 3772, 317, 2546, 71687,71688,317, 317, 476, 6046, 332, 5309, 7494,
+ 741, 317, 5328, 71692,317, 20331,5482, 317, 46531,71695,490, 317, 17944,317, 71696,7523, 18333,71699,57308,71702,317, 59466,71700,71701,370, 2150, 7913,
5991, 71705,4952, 12120,317, 5447, 17160,71707,317, 2142, 332, 71709,59522,5241, 71710,71711,71712,2627, 71713,71501,71716,1588, 16589,1481, 317, 71714,71715,
- 13898,7871, 7785, 71718,71719,71721,565, 71722,71726,17677,9595, 71720,362, 317, 71723,71724,317, 71725,373, 71727,1000, 8722, 71729,71731,1033, 71732,471,
+ 13898,7871, 7785, 71718,71719,71721,565, 71722,71726,17677,9595, 71720,362, 317, 71723,71724,317, 71725,373, 71727,1000, 8722, 71729,71731,1033, 71732,471,
10750,71735,71736,71746,71756,317, 71757,71760,71762,71782,490, 371, 71730,10185,317, 71733,343, 71734,44930,4591, 1060, 351, 71737,71738,71741,71742,71743,
490, 71744,71745,317, 317, 356, 64680,71739,71740,476, 8906, 71747,476, 317, 71748,5279, 71749,10422,71750,10877,370, 362, 2571, 16797,71751,71754,71755,
10487,5270, 71752,2387, 23118,71753,426, 1060, 317, 317, 1044, 71758,6673, 356, 345, 2163, 8603, 317, 2271, 71759,466, 9695, 317, 44194,317, 317, 71761,
- 14337,343, 351, 71763,317, 317, 71764,71766,10946,5840, 71769,9624, 71771,14842,71772,71773,71774,71776,5840, 71777,380, 71765,356, 356, 71767,71768,9914,
+ 14337,343, 351, 71763,317, 317, 71764,71766,10946,5840, 71769,9624, 71771,14842,71772,71773,71774,71776,5840, 71777,380, 71765,356, 356, 71767,71768,9914,
6673, 439, 56798,356, 71770,317, 22591,56804,317, 71775,1999, 490, 32011,71778,71780,384, 71781,71779,380, 56816,356, 356, 545, 71783,71790,10898,71784,
71785,71786,71787,2553, 6532, 5623, 71788,71789,7785, 71792,71797,40536,317, 71793,8281, 317, 71794,1347, 71795,71796,390, 71798,71799,17229,317, 71801,71802,
71803,2631, 33962,1358, 317, 317, 490, 6355, 390, 317, 36875,14551,332, 15138,23082,10997,343, 3854, 1108, 71807,566, 257, 490, 317, 258, 71971,71977,
72043,3773, 72044,72063,4797, 72112,72153,13736,72166,71808,71809,71820,545, 7582, 71824,12696,71830,2156, 71833,71835,71839,71849,71871,71873,71875,71876,71878,
- 71879,13031,71810,71817,71818,71819,1168, 71811,8695, 317, 71812,554, 317, 1601, 10149,71813,71814,71815,4789, 71816,317, 317, 12731,370, 9298, 1999, 9140,
+ 71879,13031,71810,71817,71818,71819,1168, 71811,8695, 317, 71812,554, 317, 1601, 10149,71813,71814,71815,4789, 71816,317, 317, 12731,370, 9298, 1999, 9140,
6255, 71821,71823,2035, 1020, 2211, 317, 61062,71822,630, 5570, 15100,6993, 71825,71827,71826,317, 71828,18978,71829,1358, 71831,317, 71832,511, 4738, 71834,
350, 317, 2035, 2272, 633, 71836,363, 71838,71837,317, 13670,12616,71840,317, 71841,71843,71845,71846,71847,1347, 71848,404, 590, 316, 13962,71842,45441,
- 71844,14337,389, 6354, 971, 62675,4925, 317, 34987,14172,6713, 317, 1160, 4591, 13670,15244,466, 545, 365, 2391, 71850,357, 490, 71853,71855,56440,8553,
- 71856,16022,71859,71862,71863,71851,332, 71852,317, 317, 71854,317, 351, 317, 351, 64318,16651,71857,362, 8100, 317, 71858,22441,466, 317, 637, 5942,
+ 71844,14337,389, 6354, 971, 62675,4925, 317, 34987,14172,6713, 317, 1160, 4591, 13670,15244,466, 545, 365, 2391, 71850,357, 490, 71853,71855,56440,8553,
+ 71856,16022,71859,71862,71863,71851,332, 71852,317, 317, 71854,317, 351, 317, 351, 64318,16651,71857,362, 8100, 317, 71858,22441,466, 317, 637, 5942,
633, 633, 1325, 3999, 71860,71861,317, 56440,317, 71864,71869,317, 317, 32639,71865,71867,71866,71868,7911, 317, 71870,317, 7657, 71872,2317, 23612,71874,
1347, 1358, 9313, 317, 350, 17335,317, 42408,332, 390, 58577,317, 317, 71877,317, 317, 1087, 317, 356, 466, 317, 71880,71888,39575,71914,433, 21190,
- 71927,71931,71932,71943,71950,71963,71965,71967,11613,71968,71969,390, 317, 373, 71881,71884,1358, 71882,3999, 362, 317, 2420, 71883,317, 317, 36102,7821,
- 71885,5464, 388, 71886,3999, 71887,605, 1160, 11716,10609,317, 381, 71889,71898,5737, 317, 71899,71911,71890,1347, 71894,13378,1943, 71891,5226, 317, 317,
- 317, 71892,317, 370, 317, 317, 5201, 7577, 71893,5201, 10680,5225, 5447, 466, 1347, 1347, 71895,2184, 71896,5464, 71897,397, 317, 418, 5167, 363, 466,
+ 71927,71931,71932,71943,71950,71963,71965,71967,11613,71968,71969,390, 317, 373, 71881,71884,1358, 71882,3999, 362, 317, 2420, 71883,317, 317, 36102,7821,
+ 71885,5464, 388, 71886,3999, 71887,605, 1160, 11716,10609,317, 381, 71889,71898,5737, 317, 71899,71911,71890,1347, 71894,13378,1943, 71891,5226, 317, 317,
+ 317, 71892,317, 370, 317, 317, 5201, 7577, 71893,5201, 10680,5225, 5447, 466, 1347, 1347, 71895,2184, 71896,5464, 71897,397, 317, 418, 5167, 363, 466,
9832, 362, 317, 71900,351, 351, 71905,71901,71902,12958,9832, 71903,71904,5105, 1160, 71906,427, 20082,71907,71910,71908,71909,71912,71913,427, 317, 21392,
- 71915,71922,373, 450, 1347, 1358, 317, 71916,71917,345, 2571, 22176,71918,71919,71920,71921,317, 317, 71923,5991, 71924,28078,338, 16579,1060, 71925,5942,
- 428, 2631, 317, 370, 382, 71926,428, 71928,71929,351, 71930,450, 1347, 2222, 390, 71933,71935,362, 8243, 71934,71936,5281, 71937,10877,362, 317, 317,
+ 71915,71922,373, 450, 1347, 1358, 317, 71916,71917,345, 2571, 22176,71918,71919,71920,71921,317, 317, 71923,5991, 71924,28078,338, 16579,1060, 71925,5942,
+ 428, 2631, 317, 370, 382, 71926,428, 71928,71929,351, 71930,450, 1347, 2222, 390, 71933,71935,362, 8243, 71934,71936,5281, 71937,10877,362, 317, 317,
71938,317, 71939,71940,71941,71942,10894,71944,71947,317, 2298, 71948,317, 14296,317, 71945,71946,2510, 3999, 7073, 317, 31642,351, 20423,71949,71951,71954,
71956,350, 350, 490, 71957,71958,71962,5661, 71952,317, 748, 71953,490, 71955,317, 33256,71959,317, 71960,71961,23534,5040, 459, 71964,317, 71966,12732,
71970,71972,71973,71975,317, 363, 71974,1347, 40465,29066,71976,349, 5481, 317, 71978,71982,71986,69067,71993,71996,71998,72006,72017,72019,14410,72031,72040,
- 7850, 72041,7523, 71979,350, 71980,6402, 71981,317, 551, 7948, 350, 543, 596, 748, 71983,343, 5105, 71984,317, 5463, 317, 317, 317, 71985,317, 343,
- 317, 71987,350, 71988,382, 71992,1347, 390, 7850, 36871,6917, 5896, 351, 71989,71991,71990,71994,381, 350, 381, 5309, 71995,317, 71997,466, 317, 6228,
+ 7850, 72041,7523, 71979,350, 71980,6402, 71981,317, 551, 7948, 350, 543, 596, 748, 71983,343, 5105, 71984,317, 5463, 317, 317, 317, 71985,317, 343,
+ 317, 71987,350, 71988,382, 71992,1347, 390, 7850, 36871,6917, 5896, 351, 71989,71991,71990,71994,381, 350, 381, 5309, 71995,317, 71997,466, 317, 6228,
317, 633, 317, 1914, 1347, 317, 317, 71999,343, 72001,350, 72002,362, 72005,317, 72000,72003,72004,466, 362, 541, 317, 7405, 72007,401, 72008,72009,
- 72012,72013,2012, 72014,72015,16579,72016,317, 380, 70463,2381, 317, 72010,317, 72011,317, 476, 7954, 3361, 365, 54047,8830, 466, 11434,490, 1347, 9680,
- 490, 6199, 5890, 72018,489, 72020,72022,72023,357, 72029,64377,317, 6394, 72021,356, 466, 44620,317, 72024,317, 356, 5343, 317, 317, 72025,72026,317,
- 72027,72028,370, 317, 5250, 370, 1526, 396, 317, 72030,72032,72034,12276,11089,317, 350, 72035,72038,72039,72033,72036,72037,380, 351, 3999, 6917, 351,
- 16098,45877,10430,351, 72042,72045,317, 72050,72056,317, 72060,72062,363, 343, 72046,72048,363, 1526, 72047,317, 5840, 5464, 466, 2171, 317, 72049,363,
+ 72012,72013,2012, 72014,72015,16579,72016,317, 380, 70463,2381, 317, 72010,317, 72011,317, 476, 7954, 3361, 365, 54047,8830, 466, 11434,490, 1347, 9680,
+ 490, 6199, 5890, 72018,489, 72020,72022,72023,357, 72029,64377,317, 6394, 72021,356, 466, 44620,317, 72024,317, 356, 5343, 317, 317, 72025,72026,317,
+ 72027,72028,370, 317, 5250, 370, 1526, 396, 317, 72030,72032,72034,12276,11089,317, 350, 72035,72038,72039,72033,72036,72037,380, 351, 3999, 6917, 351,
+ 16098,45877,10430,351, 72042,72045,317, 72050,72056,317, 72060,72062,363, 343, 72046,72048,363, 1526, 72047,317, 5840, 5464, 466, 2171, 317, 72049,363,
72051,72055,72052,339, 3079, 72053,422, 72054,24322,396, 72057,72059,1347, 72058,7941, 54266,990, 72061,990, 11753,10907,72064,72065,72066,72067,72069,72073,
- 350, 72074,72084,72089,72099,72100,72111,20779,15993,48791,317, 72068,990, 10422,466, 24007,317, 2272, 72070,317, 317, 72071,72072,47516,1871, 363, 363,
+ 350, 72074,72084,72089,72099,72100,72111,20779,15993,48791,317, 72068,990, 10422,466, 24007,317, 2272, 72070,317, 317, 72071,72072,47516,1871, 363, 363,
22269,351, 12949,28755,72075,72078,72079,72082,72076,317, 72077,317, 2948, 2708, 15221,350, 72080,345, 72081,72083,317, 70703,5273, 343, 72085,1347, 72086,
- 72088,370, 317, 5991, 16651,317, 1160, 317, 10628,72087,26789,379, 466, 362, 317, 317, 72090,401, 8136, 2108, 317, 72091,362, 317, 33888,72092,5213,
- 23524,10295,8863, 6228, 990, 356, 72093,317, 72094,46507,317, 351, 317, 1992, 9680, 317, 72095,22716,539, 17091,6917, 72097,72096,3032, 54603,1347, 5450,
+ 72088,370, 317, 5991, 16651,317, 1160, 317, 10628,72087,26789,379, 466, 362, 317, 317, 72090,401, 8136, 2108, 317, 72091,362, 317, 33888,72092,5213,
+ 23524,10295,8863, 6228, 990, 356, 72093,317, 72094,46507,317, 351, 317, 1992, 9680, 317, 72095,22716,539, 17091,6917, 72097,72096,3032, 54603,1347, 5450,
565, 450, 72098,2322, 2322, 317, 31822,72101,10626,72105,72106,72107,6089, 476, 72102,72103,72104,317, 6089, 61346,10422,72108,317, 317, 382, 72109,72110,
- 5974, 11613,72113,72121,72131,72144,72149,8023, 72152,10641,72114,72115,1481, 72116,14649,6917, 1060, 72118,965, 72119,13171,22809,47968,343, 51854,72117,3079,
+ 5974, 11613,72113,72121,72131,72144,72149,8023, 72152,10641,72114,72115,1481, 72116,14649,6917, 1060, 72118,965, 72119,13171,22809,47968,343, 51854,72117,3079,
15732,343, 2134, 2222, 373, 72120,1358, 9557, 3999, 317, 72122,72126,4984, 343, 21240,72127,3987, 72123,351, 466, 72124,72125,350, 15892,72128,18227,72129,
72130,317, 351, 6596, 72132,1060, 72134,72143,72133,9078, 72135,72142,10421,380, 72136,621, 6996, 633, 574, 72138,6195, 4965, 9624, 8023, 466, 343, 18460,
- 72140,4789, 16363,6089, 72137,72139,9695, 72141,57887,363, 380, 8139, 6420, 2222, 381, 72145,2156, 382, 397, 381, 72147,9325, 72146,72148,8654, 343, 5273,
+ 72140,4789, 16363,6089, 72137,72139,9695, 72141,57887,363, 380, 8139, 6420, 2222, 381, 72145,2156, 382, 397, 381, 72147,9325, 72146,72148,8654, 343, 5273,
523, 343, 9878, 72150,72151,428, 380, 317, 371, 72154,2298, 2298, 15031,72155,72157,72162,370, 345, 362, 1160, 8096, 72156,317, 10487,72158,5727, 72160,
- 1526, 72161,8446, 1347, 5126, 72159,363, 72163,13954,427, 72164,72165,2815, 72167,350, 31751,10147,350, 19922,72168,14062,5742, 350, 46856,345, 2070, 1347,
- 72170,72171,72174,72175,72172,72173,72176,72189,72193,2193, 9623, 72177,72178,351, 72181,72182,32407,72183,13071,72187,72188,317, 637, 72179,317, 72180,5055,
- 6607, 332, 356, 1347, 351, 389, 4591, 72184,72186,12434,72185,317, 370, 50639,317, 15571,15253,72190,72192,317, 12656,72191,20146,388, 558, 1345, 5717,
+ 1526, 72161,8446, 1347, 5126, 72159,363, 72163,13954,427, 72164,72165,2815, 72167,350, 31751,10147,350, 19922,72168,14062,5742, 350, 46856,345, 2070, 1347,
+ 72170,72171,72174,72175,72172,72173,72176,72189,72193,2193, 9623, 72177,72178,351, 72181,72182,32407,72183,13071,72187,72188,317, 637, 72179,317, 72180,5055,
+ 6607, 332, 356, 1347, 351, 389, 4591, 72184,72186,12434,72185,317, 370, 50639,317, 15571,15253,72190,72192,317, 12656,72191,20146,388, 558, 1345, 5717,
2044, 22802,2510, 72194,72195,72198,72199,72201,13233,72196,72197,345, 2184, 1347, 2184, 13962,72200,5991, 343, 317, 11073,72203,72205,52647,362, 72207,72214,
5295, 72232,27851,72235,72236,72204,350, 8455, 72206,4757, 72208,72210,2036, 72213,317, 64621,72209,64739,72211,72212,72215,72216,72218,72219,72224,72226,72230,
19829,565, 72217,29878,545, 72220,72221,67390,72222,72223,72225,317, 15901,72227,72229,72228,5619, 6964, 72231,72233,490, 490, 72234,781, 72238,72243,72245,
- 345, 72248,33428,4937, 59260,12616,72249,10320,72251,72255,2024, 72239,72240,72241,72242,72244,317, 317, 72246,72247,2280, 3227, 72250,949, 1131, 489, 2240,
+ 345, 72248,33428,4937, 59260,12616,72249,10320,72251,72255,2024, 72239,72240,72241,72242,72244,317, 317, 72246,72247,2280, 3227, 72250,949, 1131, 489, 2240,
1347, 317, 72252,72253,317, 72254,72256,72257,49652,72263,260, 2401, 72522,72525,261, 72739,72741,72744,262, 72830,72835,72840,263, 72986,264, 73203,73206,
265, 73290,28190,73294,72258,72259,72260,72261,72262,620, 72264,72265,72268,72278,72288,72296,72299,72305,72315,72318,72323,72326,72343,72356,72413,72424,72471,
- 72476,72501,72508,72517,317, 72519,72521,317, 371, 381, 317, 72266,25092,72267,465, 16960,72269,72270,72271,72272,72276,317, 5105, 1992, 317, 72273,317,
+ 72476,72501,72508,72517,317, 72519,72521,317, 371, 381, 317, 72266,25092,72267,465, 16960,72269,72270,72271,72272,72276,317, 5105, 1992, 317, 72273,317,
72274,317, 29766,370, 72275,5225, 5394, 466, 72277,466, 317, 317, 2024, 363, 6275, 317, 317, 317, 6240, 72279,72280,5891, 72287,1160, 11146,72281,72283,
72286,72282,72284,72285,3284, 14483,7401, 466, 1962, 317, 501, 72289,6599, 72290,350, 883, 72293,317, 317, 371, 72291,5742, 72292,16860,72294,72295,15457,
16960,351, 15325,72297,1998, 44544,46394,72298,72300,3368, 363, 72301,72303,72304,317, 317, 72302,317, 1347, 317, 45906,2178, 382, 317, 12586,72306,10709,
- 72309,10877,72311,362, 72312,8296, 317, 72307,317, 362, 1347, 317, 72308,6894, 72310,317, 72313,351, 72314,317, 381, 332, 5536, 6402, 72316,350, 553,
+ 72309,10877,72311,362, 72312,8296, 317, 72307,317, 362, 1347, 317, 72308,6894, 72310,317, 72313,351, 72314,317, 381, 332, 5536, 6402, 72316,350, 553,
5836, 317, 5896, 72317,385, 362, 39569,317, 5570, 317, 317, 317, 350, 2022, 72319,72321,72320,317, 8136, 466, 2571, 317, 317, 404, 24638,9695, 16146,
345, 19922,317, 72322,1531, 4563, 363, 72324,466, 72325,2022, 343, 317, 18127,1020, 55611,9479, 317, 317, 72327,5897, 2705, 350, 72330,2024, 72331,72335,
- 72337,490, 16092,6901, 350, 2022, 72341,72342,350, 72328,72329,2413, 317, 72332,363, 72333,72334,5355, 5488, 72336,466, 317, 317, 53775,551, 44738,2705,
- 34987,72338,362, 72339,72340,5809, 16354,5055, 2553, 5809, 39003,5810, 72344,72346,72347,72348,2024, 72350,72352,2086, 59504,72353,5255, 317, 72345,7392, 6674,
- 72349,317, 317, 72351,404, 70179,350, 317, 72354,466, 490, 10223,317, 72355,317, 72357,72358,72359,72363,72377,72378,72379,45119,72381,72387,72404,2171,
+ 72337,490, 16092,6901, 350, 2022, 72341,72342,350, 72328,72329,2413, 317, 72332,363, 72333,72334,5355, 5488, 72336,466, 317, 317, 53775,551, 44738,2705,
+ 34987,72338,362, 72339,72340,5809, 16354,5055, 2553, 5809, 39003,5810, 72344,72346,72347,72348,2024, 72350,72352,2086, 59504,72353,5255, 317, 72345,7392, 6674,
+ 72349,317, 317, 72351,404, 70179,350, 317, 72354,466, 490, 10223,317, 72355,317, 72357,72358,72359,72363,72377,72378,72379,45119,72381,72387,72404,2171,
72406,72407,8022, 72408,72409,46646,72411,72412,1358, 4952, 356, 1230, 47396,10429,6673, 2322, 11443,12590,72360,72361,72362,5832, 317, 11883,5866, 501, 72364,
- 72369,72370,12556,72372,343, 12454,72373,32249,72375,72376,1060, 1999, 350, 343, 380, 7035, 72365,72366,72367,2247, 65944,317, 72368,384, 7590, 317, 350,
+ 72369,72370,12556,72372,343, 12454,72373,32249,72375,72376,1060, 1999, 350, 343, 380, 7035, 72365,72366,72367,2247, 65944,317, 72368,384, 7590, 317, 350,
317, 72371,501, 67937,9649, 390, 72374,345, 4268, 5926, 13367,356, 1999, 317, 370, 5223, 401, 317, 11743,11687,317, 621, 72380,13392,1358, 317, 11242,
317, 8766, 7035, 317, 371, 12902,72382,72383,351, 11687,317, 72384,11280,72385,317, 345, 45719,72386,605, 3284, 6048, 1345, 8273, 72388,345, 72389,15842,
10626,72390,72391,72392,72393,72394,72395,72396,72397,72398,72399,72400,72401,72402,72403,72405,317, 12487,345, 22945,8178, 5836, 27990,9878, 9624, 2577, 39450,
- 72410,363, 427, 9176, 370, 428, 5851, 2063, 384, 7480, 15685,72414,317, 72416,72422,317, 72415,72417,72418,72419,72420,72421,72423,3079, 317, 2024, 317,
+ 72410,363, 427, 9176, 370, 428, 5851, 2063, 384, 7480, 15685,72414,317, 72416,72422,317, 72415,72417,72418,72419,72420,72421,72423,3079, 317, 2024, 317,
1160, 404, 317, 22090,35386,651, 72425,673, 633, 72426,72427,72429,72434,72435,72436,72440,72443,72444,72446,16825,72448,72450,72454,72456,72459,72465,72466,
317, 72470,393, 551, 550, 72428,5962, 637, 14589,45529,72430,339, 317, 72431,9450, 380, 362, 317, 72432,72433,27795,412, 72437,72438,316, 72439,17021,
- 343, 390, 72441,9878, 72442,3366, 356, 5634, 6917, 390, 317, 1992, 363, 72445,343, 370, 362, 4980, 5037, 5557, 317, 18429,72447,24132,18492,350, 343,
- 72449,5896, 9450, 578, 317, 550, 72451,72452,72453,317, 2117, 7942, 72455,26242,317, 317, 317, 317, 317, 6080, 72457,370, 317, 30944,72458,72460,6228,
- 339, 10422,3999, 26658,2402, 72463,317, 317, 6736, 317, 72461,72462,72464,5225, 1325, 3999, 72467,5558, 2063, 381, 72468,317, 72469,20113,317, 1926, 317,
- 13683,351, 72472,72473,332, 370, 363, 72474,2590, 8304, 490, 72475,7785, 317, 2086, 317, 317, 371, 12696,18490,72477,72487,72489,350, 370, 72496,317,
- 72497,72498,2222, 72478,317, 8695, 317, 54267,24438,5399, 1347, 72485,72486,2260, 72479,72480,72481,72482,72483,72484,11761,2261, 22716,5037, 1700, 345, 345,
+ 343, 390, 72441,9878, 72442,3366, 356, 5634, 6917, 390, 317, 1992, 363, 72445,343, 370, 362, 4980, 5037, 5557, 317, 18429,72447,24132,18492,350, 343,
+ 72449,5896, 9450, 578, 317, 550, 72451,72452,72453,317, 2117, 7942, 72455,26242,317, 317, 317, 317, 317, 6080, 72457,370, 317, 30944,72458,72460,6228,
+ 339, 10422,3999, 26658,2402, 72463,317, 317, 6736, 317, 72461,72462,72464,5225, 1325, 3999, 72467,5558, 2063, 381, 72468,317, 72469,20113,317, 1926, 317,
+ 13683,351, 72472,72473,332, 370, 363, 72474,2590, 8304, 490, 72475,7785, 317, 2086, 317, 317, 371, 12696,18490,72477,72487,72489,350, 370, 72496,317,
+ 72497,72498,2222, 72478,317, 8695, 317, 54267,24438,5399, 1347, 72485,72486,2260, 72479,72480,72481,72482,72483,72484,11761,2261, 22716,5037, 1700, 345, 345,
72488,7185, 317, 72490,16319,72491,596, 72493,345, 343, 72492,317, 317, 448, 43237,466, 19922,317, 72494,72495,20674,490, 965, 27913,363, 448, 72499,
317, 343, 1078, 72500,1347, 21495,72502,390, 72503,72505,317, 72507,317, 345, 1108, 2108, 351, 363, 343, 317, 72504,4738, 317, 45868,317, 54501,72506,
- 6204, 45441,25736,404, 4738, 72509,72510,490, 596, 72511,72516,44046,4925, 7045, 72512,72513,72515,317, 72514,317, 7187, 72518,428, 11146,5991, 3999, 350,
+ 6204, 45441,25736,404, 4738, 72509,72510,490, 596, 72511,72516,44046,4925, 7045, 72512,72513,72515,317, 72514,317, 7187, 72518,428, 11146,5991, 3999, 350,
385, 72520,317, 6412, 9696, 2261, 11347,7035, 72523,70714,72524,351, 43027,351, 72526,317, 72527,72528,72542,72543,72548,72551,72570,72583,72586,72588,72618,
- 72619,72620,72631,72636,72659,72688,72716,72723,72726,72732,72738,5890, 390, 72529,62338,72533,72534,72537,345, 72541,490, 72530,554, 72532,362, 3987, 317,
- 72531,370, 3338, 7401, 2022, 317, 15913,3999, 317, 72535,317, 72536,1704, 72538,10422,72539,466, 5353, 72540,19171,5840, 317, 362, 24504,317, 3078, 4965,
- 350, 72544,72545,332, 351, 11346,14615,68563,72546,362, 5022, 72547,2272, 72549,362, 72550,37649,72552,1358, 72553,72560,72564,72568,343, 16220,317, 2022,
+ 72619,72620,72631,72636,72659,72688,72716,72723,72726,72732,72738,5890, 390, 72529,62338,72533,72534,72537,345, 72541,490, 72530,554, 72532,362, 3987, 317,
+ 72531,370, 3338, 7401, 2022, 317, 15913,3999, 317, 72535,317, 72536,1704, 72538,10422,72539,466, 5353, 72540,19171,5840, 317, 362, 24504,317, 3078, 4965,
+ 350, 72544,72545,332, 351, 11346,14615,68563,72546,362, 5022, 72547,2272, 72549,362, 72550,37649,72552,1358, 72553,72560,72564,72568,343, 16220,317, 2022,
362, 317, 72554,9759, 72555,317, 72556,317, 15202,317, 1358, 35295,363, 72557,72558,72559,317, 72561,384, 72562,501, 4952, 317, 2063, 6563, 72563,72037,
- 28462,551, 675, 2163, 30957,72565,2571, 72566,317, 72567,317, 72569,1325, 466, 362, 317, 72571,72577,490, 317, 72572,9913, 6486, 72573,72574,72576,317,
- 7785, 10592,317, 317, 317, 15842,72575,5838, 404, 72578,72580,1358, 350, 551, 317, 72579,317, 317, 72581,317, 317, 11939,72582,363, 5213, 363, 428,
+ 28462,551, 675, 2163, 30957,72565,2571, 72566,317, 72567,317, 72569,1325, 466, 362, 317, 72571,72577,490, 317, 72572,9913, 6486, 72573,72574,72576,317,
+ 7785, 10592,317, 317, 317, 15842,72575,5838, 404, 72578,72580,1358, 350, 551, 317, 72579,317, 317, 72581,317, 317, 11939,72582,363, 5213, 363, 428,
72584,2254, 37251,350, 72585,5662, 381, 317, 72587,31052,317, 317, 19324,317, 37194,21245,72589,21274,373, 72590,317, 2184, 32289,72594,317, 19181,68901,
12731,4738, 8392, 72591,2568, 362, 72592,72593,72595,72596,7618, 72603,72605,350, 72606,72611,72612,72614,72615,1444, 8125, 317, 37723,1453, 317, 2222, 72597,
- 35678,7365, 72599,4949, 66746,72598,72600,2193, 9696, 72601,419, 2568, 72602,317, 72604,317, 72607,72610,501, 72608,72609,381, 2222, 396, 412, 23849,350,
+ 35678,7365, 72599,4949, 66746,72598,72600,2193, 9696, 72601,419, 2568, 72602,317, 72604,317, 72607,72610,501, 72608,72609,381, 2222, 396, 412, 23849,350,
2219, 1108, 10580,72613,12314,350, 6415, 27369,72616,72617,15221,15221,419, 4984, 1108, 1108, 350, 1358, 317, 1347, 2086, 317, 72621,72627,72628,15993,72622,
- 72623,3599, 8948, 72624,72625,317, 14909,2715, 317, 6996, 317, 7865, 38667,317, 72626,72629,466, 350, 72630,317, 72632,11442,363, 350, 72633,72635,317,
+ 72623,3599, 8948, 72624,72625,317, 14909,2715, 317, 6996, 317, 7865, 38667,317, 72626,72629,466, 350, 72630,317, 72632,11442,363, 350, 72633,72635,317,
72634,466, 350, 31227,501, 343, 317, 72637,72638,72640,72642,72644,72646,11709,362, 72652,72653,6601, 72656,72658,11040,384, 16264,384, 380, 317, 72639,
- 380, 72641,433, 72643,2551, 72645,343, 72647,72648,72649,72650,72651,12144,345, 72654,2163, 72655,545, 72657,363, 2521, 18840,439, 10907,363, 317, 2134,
- 72660,72663,72664,72667,72669,72670,72676,490, 72677,72678,72681,8177, 72682,332, 72685,72687,8722, 72661,1913, 4873, 371, 72662,15319,3284, 19324,317, 317,
- 72665,72666,3022, 5836, 72668,317, 30301,2071, 551, 6228, 72671,332, 72674,27723,2058, 404, 317, 2272, 72672,317, 8529, 72673,11831,345, 317, 72675,317,
+ 380, 72641,433, 72643,2551, 72645,343, 72647,72648,72649,72650,72651,12144,345, 72654,2163, 72655,545, 72657,363, 2521, 18840,439, 10907,363, 317, 2134,
+ 72660,72663,72664,72667,72669,72670,72676,490, 72677,72678,72681,8177, 72682,332, 72685,72687,8722, 72661,1913, 4873, 371, 72662,15319,3284, 19324,317, 317,
+ 72665,72666,3022, 5836, 72668,317, 30301,2071, 551, 6228, 72671,332, 72674,27723,2058, 404, 317, 2272, 72672,317, 8529, 72673,11831,345, 317, 72675,317,
317, 343, 5300, 5037, 363, 338, 33821,46664,72679,72680,419, 370, 15326,72683,72684,317, 317, 2142, 25190,317, 317, 72686,5055, 351, 6552, 72689,72690,
- 72692,72703,72704,72707,72709,16825,72710,72714,1481, 72715,490, 16865,11663,72691,72693,381, 41003,72694,72695,1601, 72697,72698,72699,58309,427, 72696,8718,
+ 72692,72703,72704,72707,72709,16825,72710,72714,1481, 72715,490, 16865,11663,72691,72693,381, 41003,72694,72695,1601, 72697,72698,72699,58309,427, 72696,8718,
72700,72701,5447, 72702,9313, 382, 351, 2086, 317, 72705,317, 72706,5488, 370, 18587,72708,317, 9931, 317, 514, 1345, 3999, 317, 380, 28588,4965, 72711,
370, 356, 317, 427, 72712,317, 1459, 596, 72713,72717,343, 350, 404, 72720,72721,72718,72719,72722,1999, 72724,371, 2254, 351, 23995,72725,363, 72727,
72731,317, 1160, 72728,6996, 317, 633, 317, 317, 317, 72729,317, 7214, 37918,317, 317, 317, 990, 351, 72730,371, 1160, 2551, 404, 72733,34257,16651,
317, 72734,317, 72735,72737,5334, 72736,351, 46262,317, 72740,12487,1444, 25289,72742,12494,2212, 72743,551, 34803,72745,72747,373, 72746,72748,619, 72749,
72750,72762,72763,72770,72776,380, 72780,72782,72793,72799,72812,72819,317, 72825,72828,317, 317, 72751,72752,351, 22983,317, 8301, 72753,72757,72758,28250,
72759,362, 2022, 72761,317, 1060, 1160, 72754,72755,72756,439, 72760,363, 1194, 317, 317, 317, 317, 545, 356, 427, 317, 554, 362, 10354,37194,72764,
- 72765,24192,72767,1347, 72769,16296,72766,362, 590, 72768,317, 343, 317, 317, 9688, 380, 72771,24322,72775,72772,343, 72773,2571, 317, 317, 72774,428,
- 2510, 2509, 72766,72777,3987, 6089, 72778,5687, 317, 72779,317, 7986, 317, 72781,2272, 72783,72784,72786,72787,350, 2566, 404, 72791,72792,72785,2416, 350,
+ 72765,24192,72767,1347, 72769,16296,72766,362, 590, 72768,317, 343, 317, 317, 9688, 380, 72771,24322,72775,72772,343, 72773,2571, 317, 317, 72774,428,
+ 2510, 2509, 72766,72777,3987, 6089, 72778,5687, 317, 72779,317, 7986, 317, 72781,2272, 72783,72784,72786,72787,350, 2566, 404, 72791,72792,72785,2416, 350,
71162,8948, 8830, 350, 72788,362, 2571, 4980, 72789,317, 34334,5055, 72790,428, 356, 350, 317, 317, 11940,428, 72794,351, 1915, 350, 15066,5951, 72795,
404, 72796,1999, 343, 404, 1160, 72797,317, 72798,317, 345, 4268, 62970,4965, 72800,33398,72802,72807,72809,72811,6412, 17019,72801,10392,9624, 72803,72804,
- 24008,317, 72806,381, 6674, 384, 72805,1444, 317, 15334,72808,466, 10223,7405, 317, 317, 8587, 3999, 317, 72810,72813,72814,7114, 72817,317, 72815,317,
+ 24008,317, 72806,381, 6674, 384, 72805,1444, 317, 15334,72808,466, 10223,7405, 317, 317, 8587, 3999, 317, 72810,72813,72814,7114, 72817,317, 72815,317,
8178, 72816,72818,5501, 345, 72820,4591, 317, 72821,362, 24664,72824,317, 72822,72823,356, 466, 6736, 7857, 72826,317, 72827,37194,501, 10956,72829,66662,
2272, 72831,72832,72833,72834,363, 43037,596, 5055, 9171, 343, 57204,574, 72836,72837,72839,14217,24579,72838,72841,38517,72842,343, 1020, 317, 72843,72844,
72847,72860,72864,72871,72875,72877,72878,72884,72885,72890,72901,72908,72925,72931,72936,72957,72958,72965,72977,72978,72983,72845,6578, 351, 72846,332, 42075,
- 72848,72849,72850,565, 51102,72852,17469,72853,72856,2022, 72857,350, 363, 72858,72376,404, 35267,72859,72851,5898, 7368, 13999,16989,317, 317, 5223, 381,
- 12844,72854,396, 72855,16616,363, 33469,21274,72861,72862,72863,12487,12696,428, 8023, 317, 16672,51142,72865,72866,68815,350, 351, 343, 72868,317, 2152,
- 72869,72870,317, 39315,350, 72867,31227,1020, 351, 72872,332, 2317, 317, 72873,15274,56343,1347, 72874,317, 501, 343, 1020, 350, 72876,25415,2222, 317,
+ 72848,72849,72850,565, 51102,72852,17469,72853,72856,2022, 72857,350, 363, 72858,72376,404, 35267,72859,72851,5898, 7368, 13999,16989,317, 317, 5223, 381,
+ 12844,72854,396, 72855,16616,363, 33469,21274,72861,72862,72863,12487,12696,428, 8023, 317, 16672,51142,72865,72866,68815,350, 351, 343, 72868,317, 2152,
+ 72869,72870,317, 39315,350, 72867,31227,1020, 351, 72872,332, 2317, 317, 72873,15274,56343,1347, 72874,317, 501, 343, 1020, 350, 72876,25415,2222, 317,
317, 350, 72879,317, 72880,5343, 317, 72881,72882,72883,53095,5655, 363, 72886,343, 72887,72888,72889,2036, 317, 1345, 1347, 317, 317, 1943, 370, 72891,
- 5896, 14003,381, 72893,365, 72894,72895,3079, 1358, 10081,72897,72900,72892,371, 3284, 317, 27367,3284, 317, 317, 351, 12142,14695,72896,317, 72898,317,
+ 5896, 14003,381, 72893,365, 72894,72895,3079, 1358, 10081,72897,72900,72892,371, 3284, 317, 27367,3284, 317, 317, 351, 12142,14695,72896,317, 72898,317,
72899,72902,72907,596, 12631,72903,72905,72904,317, 5828, 72906,72909,1358, 72923,427, 72924,317, 317, 320, 740, 72910,72912,317, 9624, 72913,511, 72915,
- 72916,72918,72919,72920,1160, 15891,10560,72911,6343, 1453, 16092,7368, 9696, 25986,9357, 25986,72914,2374, 428, 392, 553, 5575, 72917,2577, 15748,72921,406,
- 72922,343, 390, 4965, 5861, 317, 9425, 72926,72928,68787,72929,317, 317, 1347, 72927,370, 25782,356, 72930,317, 317, 345, 2024, 6532, 350, 381, 490,
+ 72916,72918,72919,72920,1160, 15891,10560,72911,6343, 1453, 16092,7368, 9696, 25986,9357, 25986,72914,2374, 428, 392, 553, 5575, 72917,2577, 15748,72921,406,
+ 72922,343, 390, 4965, 5861, 317, 9425, 72926,72928,68787,72929,317, 317, 1347, 72927,370, 25782,356, 72930,317, 317, 345, 2024, 6532, 350, 381, 490,
2301, 541, 72932,317, 9119, 2110, 72933,72934,3999, 48247,2156, 356, 72935,317, 13679,1347, 72937,10487,10592,72938,72939,72942,72943,1347, 2058, 72945,72950,
- 37352,11928,72951,72952,317, 317, 72940,7504, 33875,72485,7821, 9720, 72941,72944,1266, 317, 317, 363, 2178, 72946,19661,15118,317, 72947,72948,1160, 317,
+ 37352,11928,72951,72952,317, 317, 72940,7504, 33875,72485,7821, 9720, 72941,72944,1266, 317, 317, 363, 2178, 72946,19661,15118,317, 72947,72948,1160, 317,
381, 1347, 317, 72949,18978,2208, 2024, 7871, 4984, 317, 317, 72953,8000, 317, 72956,5037, 72954,18192,72955,371, 317, 14834,11040,351, 390, 72959,71964,
332, 350, 2317, 72961,317, 31181,72960,72962,317, 351, 72963,72964,428, 390, 72966,351, 72968,72970,72971,72972,62315,72967,2609, 317, 62315,2609, 62315,
- 317, 72969,351, 5037, 11442,317, 404, 72973,72975,350, 317, 72974,72976,7911, 350, 9878, 63484,7850, 72979,11442,72980,72981,343, 7405, 72982,317, 2126,
+ 317, 72969,351, 5037, 11442,317, 404, 72973,72975,350, 317, 72974,72976,7911, 350, 9878, 63484,7850, 72979,11442,72980,72981,343, 7405, 72982,317, 2126,
72984,351, 343, 72985,379, 5450, 72987,72988,14493,72989,7367, 72990,73071,73114,355, 73146,73178,73196,73198,72991,72993,72995,73002,73007,73008,73009,73010,
- 73020,73021,73022,73023,73032,73033,73036,73055,73059,73063,73066,73068,72992,5644, 9938, 2272, 72994,317, 2568, 72996,72997,72998,14561,363, 370, 362, 317,
- 72999,73000,73001,317, 15016,33469,351, 2024, 73003,29181,2568, 73004,73005,73006,514, 1325, 2024, 466, 73011,14316,73018,73012,73013,2208, 73014,73015,317,
- 990, 14316,317, 381, 73016,73017,73019,363, 317, 317, 2310, 4965, 58943,370, 4962, 317, 380, 5032, 73024,73025,6994, 2024, 73026,883, 317, 65586,2317,
+ 73020,73021,73022,73023,73032,73033,73036,73055,73059,73063,73066,73068,72992,5644, 9938, 2272, 72994,317, 2568, 72996,72997,72998,14561,363, 370, 362, 317,
+ 72999,73000,73001,317, 15016,33469,351, 2024, 73003,29181,2568, 73004,73005,73006,514, 1325, 2024, 466, 73011,14316,73018,73012,73013,2208, 73014,73015,317,
+ 990, 14316,317, 381, 73016,73017,73019,363, 317, 317, 2310, 4965, 58943,370, 4962, 317, 380, 5032, 73024,73025,6994, 2024, 73026,883, 317, 65586,2317,
9444, 1325, 466, 317, 73027,2024, 73029,73031,10709,32534,317, 73028,2571, 1347, 381, 32534,73030,466, 317, 4982, 1347, 317, 2571, 363, 5363, 317, 73034,
46099,73035,2188, 4949, 7911, 10560,9444, 66407,6704, 350, 317, 73037,2631, 73038,2388, 73041,73044,362, 73045,317, 317, 73054,58150,317, 5126, 2086, 73039,
6596, 317, 73040,345, 317, 7560, 345, 4268, 472, 73042,38431,9624, 73043,51910,317, 5581, 2035, 5663, 1588, 12463,20062,317, 73046,73047,539, 317, 73050,
- 3577, 73051,73048,73049,28092,73052,73053,46262,390, 317, 73056,433, 73058,73057,350, 72907,4965, 350, 2222, 317, 73060,73062,73061,73064,16438,8948, 317,
+ 3577, 73051,73048,73049,28092,73052,73053,46262,390, 317, 73056,433, 73058,73057,350, 72907,4965, 350, 2222, 317, 73060,73062,73061,73064,16438,8948, 317,
2222, 419, 73065,9914, 317, 2631, 5991, 73067,466, 317, 35043,479, 73069,73070,73072,73077,73078,73081,73082,73086,343, 73087,73089,73091,73092,73093,73095,
73096,73100,73106,73108,317, 73112,363, 317, 32258,73073,73076,10422,466, 73074,317, 73075,351, 554, 351, 317, 2222, 73079,73080,370, 317, 2222, 73083,
- 317, 543, 13914,351, 22559,362, 363, 61418,317, 73084,73085,393, 73088,317, 8600, 72764,471, 4952, 73090,47779,11244,11244,317, 363, 971, 345, 748,
- 317, 73094,5309, 490, 350, 72282,1459, 380, 317, 2402, 68504,73097,343, 21882,317, 73098,73099,73101,73102,73103,67569,73104,73105,15758,73107,5464, 379,
+ 317, 543, 13914,351, 22559,362, 363, 61418,317, 73084,73085,393, 73088,317, 8600, 72764,471, 4952, 73090,47779,11244,11244,317, 363, 971, 345, 748,
+ 317, 73094,5309, 490, 350, 72282,1459, 380, 317, 2402, 68504,73097,343, 21882,317, 73098,73099,73101,73102,73103,67569,73104,73105,15758,73107,5464, 379,
466, 2510, 73109,2024, 404, 317, 73110,73111,466, 317, 9720, 317, 317, 73113,73115,73117,73118,73124,73127,73128,73129,73131,73135,73136,73139,11418,73140,
- 73145,317, 8178, 317, 73116,317, 1325, 3640, 1700, 373, 13258,73119,73123,16553,73120,7389, 12696,73121,73122,24398,22591,2571, 317, 9623, 73125,73126,381,
- 1160, 317, 317, 2134, 350, 350, 381, 8992, 73130,73132,8553, 317, 317, 73133,25077,9479, 6420, 317, 73134,1194, 380, 511, 373, 9567, 317, 73137,317,
- 2178, 5359, 73138,554, 466, 317, 317, 2655, 6598, 2060, 15001,8136, 466, 16022,15253,317, 29408,390, 317, 7688, 73141,73144,73142,73143,73147,371, 6917,
+ 73145,317, 8178, 317, 73116,317, 1325, 3640, 1700, 373, 13258,73119,73123,16553,73120,7389, 12696,73121,73122,24398,22591,2571, 317, 9623, 73125,73126,381,
+ 1160, 317, 317, 2134, 350, 350, 381, 8992, 73130,73132,8553, 317, 317, 73133,25077,9479, 6420, 317, 73134,1194, 380, 511, 373, 9567, 317, 73137,317,
+ 2178, 5359, 73138,554, 466, 317, 317, 2655, 6598, 2060, 15001,8136, 466, 16022,15253,317, 29408,390, 317, 7688, 73141,73144,73142,73143,73147,371, 6917,
73148,73150,73152,73153,20113,2590, 21186,73158,73160,73166,73170,73171,73172,73173,73175,343, 73176,317, 73177,43607,1358, 9914, 2134, 343, 317, 73149,73151,
64177,363, 73154,73155,317, 73156,73157,25258,11196,317, 73159,73161,73162,4965, 10907,6601, 73163,350, 73164,365, 73165,2108, 73167,6904, 332, 317, 73168,
- 24398,22437,370, 362, 19504,73169,1347, 343, 332, 343, 345, 7785, 22114,73174,362, 317, 2510, 5662, 317, 14350,390, 1358, 1358, 4925, 11442,2222, 317,
+ 24398,22437,370, 362, 19504,73169,1347, 343, 332, 343, 345, 7785, 22114,73174,362, 317, 2510, 5662, 317, 14350,390, 1358, 1358, 4925, 11442,2222, 317,
362, 8296, 350, 365, 73179,73180,73187,32013,73188,73190,73191,28241,73193,345, 73194,343, 371, 73195,343, 13392,343, 501, 73181,73182,16187,5662, 73183,
- 73184,73185,5447, 466, 73186,380, 2391, 317, 73189,41553,317, 317, 2280, 11249,73192,2188, 317, 32360,11347,317, 73197,350, 343, 11280,6917, 350, 8099,
+ 73184,73185,5447, 466, 73186,380, 2391, 317, 73189,41553,317, 317, 2280, 11249,73192,2188, 317, 32360,11347,317, 73197,350, 343, 11280,6917, 350, 8099,
4304, 350, 73199,73200,16670,73201,73202,11146,363, 73204,317, 73205,73207,73208,73210,73219,73223,73241,73248,73253,73255,73257,73258,73261,73265,73269,73247,
73284,343, 73288,450, 73209,73211,73217,1915, 73218,4980, 73212,3079, 73214,73215,317, 317, 317, 73213,381, 332, 73216,64719,317, 73220,7337, 73221,14561,
- 73222,43298,18460,317, 317, 6596, 5223, 381, 317, 317, 633, 73224,73226,73227,73230,73233,73234,73237,72376,317, 3987, 73239,11346,73225,551, 356, 7582,
- 16092,73228,317, 73229,317, 317, 7821, 317, 73231,73232,427, 2368, 317, 1011, 317, 345, 15960,6036, 1160, 363, 1588, 73235,73236,73238,7285, 3284, 466,
+ 73222,43298,18460,317, 317, 6596, 5223, 381, 317, 317, 633, 73224,73226,73227,73230,73233,73234,73237,72376,317, 3987, 73239,11346,73225,551, 356, 7582,
+ 16092,73228,317, 73229,317, 317, 7821, 317, 73231,73232,427, 2368, 317, 1011, 317, 345, 15960,6036, 1160, 363, 1588, 73235,73236,73238,7285, 3284, 466,
73240,6917, 73242,68581,73243,553, 16288,16979,73247,6917, 73244,73245,73246,73249,317, 5991, 317, 14172,73250,317, 317, 73251,73252,73254,317, 317, 73256,
8296, 8392, 68174,317, 343, 384, 2222, 5392, 73259,351, 11158,1358, 73260,6674, 5717, 317, 14337,1383, 317, 10877,317, 317, 317, 317, 317, 15130,73262,
73264,317, 73263,8553, 356, 72022,73266,73267,5793, 351, 317, 73268,6996, 24398,397, 370, 73270,73271,317, 73273,73275,73276,60691,73277,73281,73282,73283,
- 4982, 317, 50145,73272,2368, 317, 490, 351, 2368, 73274,8023, 20641,380, 380, 363, 1347, 73278,57336,351, 317, 73279,317, 73280,351, 5482, 7368, 384,
+ 4982, 317, 50145,73272,2368, 317, 490, 351, 2368, 73274,8023, 20641,380, 380, 363, 1347, 73278,57336,351, 317, 73279,317, 73280,351, 5482, 7368, 384,
1060, 50145,317, 73285,11652,350, 450, 73286,7949, 7949, 5037, 14645,73287,317, 32957,363, 73289,73291,73292,2145, 317, 73293,73295,390, 2510, 73296,73299,
2156, 3079, 73302,317, 317, 8136, 73297,345, 6904, 10878,73298,1526, 356, 317, 48435,73300,73301,2272, 5217, 73303,73304,317, 73305,267, 73474,73500,73517,
73529,73541,73555,73559,73563,73565,73578,73608,73637,73687,268, 73817,73874,73910,73928,73935,73942,73943,73944,5711, 73306,7916, 12920,343, 332, 73307,73308,
@@ -11825,435 +11820,435 @@ static const unsigned int ChildLocs[185261] =
401, 71440,73310,2271, 478, 317, 73312,73314,2094, 317, 73315,73316,73318,356, 466, 73319,380, 3853, 73321,30712,73327,73330,73332,73344,6736, 73322,73324,
73326,73323,2236, 73325,73328,73329,73331,2156, 5335, 5624, 73333,73337,519, 2128, 73334,10714,73335,73336,73338,73339,41065,73340,73341,73342,73343,53274,30685,
73346,73347,73353,73355,73348,73351,73349,73350,73352,5441, 5167, 73354,52593,12598,34396,30477,5447, 466, 433, 565, 317, 47256,73358,6709, 73360,14409,73359,
- 73361,73363,2368, 22737,73365,73364,2110, 2156, 345, 29735,37598,73367,450, 2110, 4925, 9454, 4925, 357, 7657, 332, 73370,73374,73371,73372,356, 73373,317,
+ 73361,73363,2368, 22737,73365,73364,2110, 2156, 345, 29735,37598,73367,450, 2110, 4925, 9454, 4925, 357, 7657, 332, 73370,73374,73371,73372,356, 73373,317,
382, 363, 41130,6433, 22546,45506,73376,73378,317, 73377,2134, 73379,53888,7340, 1160, 460, 73381,73387,73391,3901, 73382,73384,73383,504, 73385,73386,73388,
20856,73389,73390,2155, 363, 73392,57932,73393,73394,457, 381, 390, 73397,73398,8636, 2143, 73399,2510, 73400,73401,73402,351, 9162, 73404,73408,73405,73407,
73406,73409,2060, 73411,28380,73415,73412,990, 490, 73413,73414,40832,490, 490, 60747,73417,73421,73429,73430,1020, 73434,73435,73439,73451,28382,73418,73419,
- 8139, 73420,317, 5365, 73422,73428,1347, 73423,73424,73425,343, 73426,73427,596, 26642,73431,21001,73432,73433,317, 317, 514, 317, 8544, 345, 382, 5492,
+ 8139, 73420,317, 5365, 73422,73428,1347, 73423,73424,73425,343, 73426,73427,596, 26642,73431,21001,73432,73433,317, 317, 514, 317, 8544, 345, 382, 5492,
5441, 5709, 73436,73437,73438,35409,345, 73440,73445,73448,73441,5167, 2156, 550, 73442,73443,73444,343, 5324, 5492, 73446,73447,4267, 5502, 73449,23702,73450,
1526, 30877,73453,73456,73457,73459,8649, 73454,381, 51268,504, 73455,433, 2163, 33469,73458,317, 73460,343, 25938,55772,73461,73462,6255, 73464,73465,73466,
- 490, 317, 73467,73469,73470,5220, 5363, 1531, 14223,73473,73475,73484,2357, 73486,73490,73499,5226, 351, 73476,73479,73481,73482,5272, 73477,73478,317, 317,
- 317, 345, 10891,21036,2510, 73480,574, 5323, 4591, 5399, 73483,5711, 73485,73487,73489,15772,490, 490, 11146,317, 8455, 73488,3284, 11280,317, 633, 4925,
+ 490, 317, 73467,73469,73470,5220, 5363, 1531, 14223,73473,73475,73484,2357, 73486,73490,73499,5226, 351, 73476,73479,73481,73482,5272, 73477,73478,317, 317,
+ 317, 345, 10891,21036,2510, 73480,574, 5323, 4591, 5399, 73483,5711, 73485,73487,73489,15772,490, 490, 11146,317, 8455, 73488,3284, 11280,317, 633, 4925,
2584, 2391, 73491,8125, 73493,472, 73494,605, 1160, 44345,317, 317, 317, 73492,317, 633, 356, 317, 1992, 12527,73495,73496,317, 633, 3529, 371, 35292,
73497,73498,427, 317, 393, 73501,73503,73505,73509,73511,73513,46173,73514,317, 73515,317, 40568,73502,48143,393, 339, 73504,2584, 448, 371, 448, 73506,
73507,545, 545, 14263,545, 5324, 545, 390, 73508,1060, 741, 12019,73510,73512,351, 73516,2719, 381, 2366, 365, 5891, 345, 73518,73525,73526,1347, 73527,
351, 73528,317, 501, 73519,73522,73520,73521,73523,73524,501, 1347, 73522,9938, 317, 343, 73530,73540,362, 362, 73531,73533,73535,73536,20341,381, 73532,
10422,10877,317, 317, 73534,578, 6033, 5447, 41857,6433, 371, 73537,363, 7368, 73538,5055, 73539,6514, 73542,501, 73547,73549,73551,73553,5241, 73554,73543,
- 6834, 317, 5836, 53626,73544,6834, 25493,317, 317, 317, 20913,73545,2077, 10172,73546,362, 8643, 1230, 317, 317, 439, 476, 4253, 73548,73550,2117, 317,
- 29917,381, 317, 73552,365, 29531,2110, 8926, 73556,317, 5836, 73557,7403, 2210, 73558,34426,73560,3242, 6207, 382, 1358, 73561,73562,490, 554, 343, 363,
+ 6834, 317, 5836, 53626,73544,6834, 25493,317, 317, 317, 20913,73545,2077, 10172,73546,362, 8643, 1230, 317, 317, 439, 476, 4253, 73548,73550,2117, 317,
+ 29917,381, 317, 73552,365, 29531,2110, 8926, 73556,317, 5836, 73557,7403, 2210, 73558,34426,73560,3242, 6207, 382, 1358, 73561,73562,490, 554, 343, 363,
41483,16146,8136, 466, 4952, 2510, 317, 317, 73564,73566,73567,73568,317, 73572,73573,554, 73575,25003,5619, 5570, 343, 5809, 73569,73571,554, 3611, 10936,
- 73570,317, 54450,390, 380, 381, 351, 73574,1329, 2108, 73576,317, 317, 73577,73579,73584,73585,73589,73591,73593,73594,11344,73600,350, 73604,317, 2845,
- 73607,332, 450, 61303,73580,73581,73582,73583,3284, 450, 73586,317, 5217, 2094, 3284, 450, 73587,73588,6967, 73590,35443,9914, 48906,450, 16910,490, 317,
- 73592,317, 362, 317, 73595,73597,2208, 317, 73596,317, 5897, 350, 317, 356, 11640,73598,73599,73601,73602,574, 2261, 48906,73603,73605,45868,363, 370,
- 350, 1588, 73606,6967, 317, 1444, 317, 47792,12696,362, 73609,73612,73613,73616,73618,73619,73632,317, 73633,73635,73636,350, 317, 2631, 317, 52647,317,
- 362, 317, 73610,490, 5217, 73611,6656, 2110, 2107, 350, 370, 73614,317, 20909,73615,365, 1020, 317, 5055, 3284, 317, 490, 332, 5836, 73617,39719,351,
- 351, 363, 73620,73623,73630,73631,317, 73621,5226, 428, 73622,317, 317, 345, 370, 32491,5717, 317, 73624,317, 683, 22650,5463, 633, 317, 12447,428,
- 16112,73625,73626,428, 73627,1444, 73628,73629,5037, 412, 6598, 551, 4476, 428, 439, 363, 381, 381, 2261, 554, 363, 6332, 363, 382, 42666,363, 406,
- 73634,351, 404, 5727, 428, 428, 605, 578, 404, 355, 466, 428, 949, 320, 73638,73639,73643,73645,7214, 73659,73663,73665,73666,73667,12448,73668,5428,
- 73675,73679,73686,1060, 1230, 7114, 73640,554, 6354, 2584, 73641,2035, 12864,73642,5487, 381, 317, 73644,412, 1060, 73646,73650,73651,8223, 73654,511, 362,
- 73656,6601, 73657,73658,317, 1347, 380, 4952, 73647,73648,73649,24310,6704, 317, 317, 72174,317, 4949, 355, 4949, 317, 363, 380, 73652,317, 3361, 317,
- 73653,18460,14251,363, 73655,317, 545, 18840,543, 70072,73660,551, 73661,73662,73664,365, 57791,30782,356, 351, 490, 317, 24903,6780, 11612,439, 476,
- 17842,4925, 73669,73671,7976, 490, 73670,317, 6228, 317, 317, 73672,73673,73674,6195, 370, 9695, 370, 73676,73677,73678,31380,73680,73681,9162, 73684,365,
- 6420, 2272, 73682,73683,351, 73685,2053, 448, 2026, 590, 19872,73688,317, 9185, 7495, 46954,6855, 73689,73690,42243,1428, 539, 22912,73789,73810,73691,1266,
- 1160, 1000, 317, 317, 317, 633, 73692,73694,73696,73722,73725,73726,73732,73736,73744,9657, 54189,73754,73755,73762,73767,73768,73771,73784,393, 73786,1871,
+ 73570,317, 54450,390, 380, 381, 351, 73574,1329, 2108, 73576,317, 317, 73577,73579,73584,73585,73589,73591,73593,73594,11344,73600,350, 73604,317, 2845,
+ 73607,332, 450, 61303,73580,73581,73582,73583,3284, 450, 73586,317, 5217, 2094, 3284, 450, 73587,73588,6967, 73590,35443,9914, 48906,450, 16910,490, 317,
+ 73592,317, 362, 317, 73595,73597,2208, 317, 73596,317, 5897, 350, 317, 356, 11640,73598,73599,73601,73602,574, 2261, 48906,73603,73605,45868,363, 370,
+ 350, 1588, 73606,6967, 317, 1444, 317, 47792,12696,362, 73609,73612,73613,73616,73618,73619,73632,317, 73633,73635,73636,350, 317, 2631, 317, 52647,317,
+ 362, 317, 73610,490, 5217, 73611,6656, 2110, 2107, 350, 370, 73614,317, 20909,73615,365, 1020, 317, 5055, 3284, 317, 490, 332, 5836, 73617,39719,351,
+ 351, 363, 73620,73623,73630,73631,317, 73621,5226, 428, 73622,317, 317, 345, 370, 32491,5717, 317, 73624,317, 683, 22650,5463, 633, 317, 12447,428,
+ 16112,73625,73626,428, 73627,1444, 73628,73629,5037, 412, 6598, 551, 4476, 428, 439, 363, 381, 381, 2261, 554, 363, 6332, 363, 382, 42666,363, 406,
+ 73634,351, 404, 5727, 428, 428, 605, 578, 404, 355, 466, 428, 949, 320, 73638,73639,73643,73645,7214, 73659,73663,73665,73666,73667,12448,73668,5428,
+ 73675,73679,73686,1060, 1230, 7114, 73640,554, 6354, 2584, 73641,2035, 12864,73642,5487, 381, 317, 73644,412, 1060, 73646,73650,73651,8223, 73654,511, 362,
+ 73656,6601, 73657,73658,317, 1347, 380, 4952, 73647,73648,73649,24310,6704, 317, 317, 72174,317, 4949, 355, 4949, 317, 363, 380, 73652,317, 3361, 317,
+ 73653,18460,14251,363, 73655,317, 545, 18840,543, 70072,73660,551, 73661,73662,73664,365, 57791,30782,356, 351, 490, 317, 24903,6780, 11612,439, 476,
+ 17842,4925, 73669,73671,7976, 490, 73670,317, 6228, 317, 317, 73672,73673,73674,6195, 370, 9695, 370, 73676,73677,73678,31380,73680,73681,9162, 73684,365,
+ 6420, 2272, 73682,73683,351, 73685,2053, 448, 2026, 590, 19872,73688,317, 9185, 7495, 46954,6855, 73689,73690,42243,1428, 539, 22912,73789,73810,73691,1266,
+ 1160, 1000, 317, 317, 317, 633, 73692,73694,73696,73722,73725,73726,73732,73736,73744,9657, 54189,73754,73755,73762,73767,73768,73771,73784,393, 73786,1871,
317, 73693,5447, 343, 21123,370, 73695,345, 73697,73698,73703,73707,73710,73711,73721,1060, 4564, 73699,73700,73701,73702,317, 73704,73705,73706,73708,73709,
- 4591, 427, 73712,73713,73715,317, 73720,515, 73714,73716,41064,73717,73718,73719,60316,2510, 519, 476, 73723,10257,6894, 73724,343, 2222, 317, 332, 3967,
+ 4591, 427, 73712,73713,73715,317, 73720,515, 73714,73716,41064,73717,73718,73719,60316,2510, 519, 476, 73723,10257,6894, 73724,343, 2222, 317, 332, 3967,
73727,73728,73729,73731,343, 439, 73359,381, 30039,511, 73730,317, 73733,73734,4267, 5105, 73735,2705, 73737,73741,73743,73738,73739,73740,73742,317, 33557,
- 73745,73746,73753,73747,73748,73749,73750,73751,466, 317, 73752,6021, 1347, 47505,19790,6551, 73756,4984, 2211, 73760,317, 317, 73757,73758,73759,21006,317,
- 1266, 317, 8301, 36631,8049, 73761,317, 73763,73764,73765,41938,3505, 317, 73766,566, 2260, 73769,465, 73770,20711,5763, 73772,63194,73773,73776,73783,5717,
+ 73745,73746,73753,73747,73748,73749,73750,73751,466, 317, 73752,6021, 1347, 47505,19790,6551, 73756,4984, 2211, 73760,317, 317, 73757,73758,73759,21006,317,
+ 1266, 317, 8301, 36631,8049, 73761,317, 73763,73764,73765,41938,3505, 317, 73766,566, 2260, 73769,465, 73770,20711,5763, 73772,63194,73773,73776,73783,5717,
7689, 317, 317, 73774,1999, 73775,73777,73778,73780,73781,73779,73782,2280, 356, 73785,8100, 73787,32377,73788,5447, 5987, 22021,317, 73790,73792,73800,73806,
73791,8566, 73793,73799,2184, 317, 73794,73795,73796,73797,73798,356, 466, 317, 31068,8020, 73801,73803,73802,317, 10422,5395, 317, 7372, 73804,382, 73805,
- 404, 30314,73807,73808,73809,5464, 9130, 2510, 73811,73813,73816,317, 317, 73812,456, 317, 381, 73814,2368, 73815,5477, 317, 427, 73818,73820,73821,554,
- 73824,73828,73835,73837,29321,29906,73841,73842,20956,73846,73847,73851,2654, 7565, 73865,6471, 73871,6964, 343, 317, 317, 73819,357, 317, 6674, 46591,2067,
- 73822,3664, 73823,2609, 370, 73825,73826,73827,2110, 1606, 73829,73831,5459, 73832,73833,73834,73830,5447, 466, 4266, 317, 15196,498, 35725,73836,72702,2271,
+ 404, 30314,73807,73808,73809,5464, 9130, 2510, 73811,73813,73816,317, 317, 73812,456, 317, 381, 73814,2368, 73815,5477, 317, 427, 73818,73820,73821,554,
+ 73824,73828,73835,73837,29321,29906,73841,73842,20956,73846,73847,73851,2654, 7565, 73865,6471, 73871,6964, 343, 317, 317, 73819,357, 317, 6674, 46591,2067,
+ 73822,3664, 73823,2609, 370, 73825,73826,73827,2110, 1606, 73829,73831,5459, 73832,73833,73834,73830,5447, 466, 4266, 317, 15196,498, 35725,73836,72702,2271,
22578,317, 5055, 5201, 317, 5570, 38244,380, 6763, 73838,490, 490, 73839,350, 73840,4984, 73843,73844,7892, 9832, 73845,17239,9052, 73848,34396,73849,73850,
73852,73853,7368, 73861,317, 73854,380, 73856,73858,10820,317, 73855,370, 73857,73859,73860,73862,73864,73863,2369, 73866,73868,73867,21801,317, 73869,73870,
- 5447, 466, 39546,5457, 60228,73872,73873,73875,73878,317, 73881,73882,73884,47480,73885,73887,73888,73897,73903,73904,73909,317, 14561,317, 73876,317, 633,
- 317, 317, 363, 73877,317, 317, 4925, 1160, 73879,73880,45954,490, 390, 73883,332, 2035, 370, 24137,317, 363, 73886,1044, 382, 317, 73889,73893,7988,
+ 5447, 466, 39546,5457, 60228,73872,73873,73875,73878,317, 73881,73882,73884,47480,73885,73887,73888,73897,73903,73904,73909,317, 14561,317, 73876,317, 633,
+ 317, 317, 363, 73877,317, 317, 4925, 1160, 73879,73880,45954,490, 390, 73883,332, 2035, 370, 24137,317, 363, 73886,1044, 382, 317, 73889,73893,7988,
73890,73891,73892,24530,5054, 448, 73894,73895,73896,1347, 6670, 73898,73899,73900,73901,73902,316, 12291,362, 2310, 73905,73908,6704, 73906,404, 317, 73907,
- 343, 490, 41483,5991, 466, 3854, 317, 23092,590, 73911,6547, 1020, 73912,73915,73916,4591, 73917,4965, 73919,6849, 73920,73922,73923,7850, 317, 39046,351,
+ 343, 490, 41483,5991, 466, 3854, 317, 23092,590, 73911,6547, 1020, 73912,73915,73916,4591, 73917,4965, 73919,6849, 73920,73922,73923,7850, 317, 39046,351,
73913,3529, 73914,7911, 39357,317, 73918,3529, 317, 73921,10476,2156, 363, 317, 380, 317, 11473,73924,73925,73926,73927,73929,490, 73934,317, 490, 73930,
73931,73932,73933,574, 8281, 73936,363, 3284, 73937,73938,73939,343, 73940,73941,2845, 15837,73945,433, 73947,589, 73951,4064, 466, 73952,1059, 590, 73946,
539, 73948,574, 73949,73950,73953,73955,73961,73983,73987,13434,73990,73991,73956,73957,73958,73959,317, 6834, 343, 371, 73960,63759,317, 31987,317, 19390,
363, 2381, 73962,73963,73974,73976,427, 73964,13457,73965,73966,73968,19283,501, 73967,73967,363, 73969,363, 73972,404, 317, 73970,73971,73973,970, 73975,
9067, 343, 26934,2705, 73977,7785, 73979,73980,73982,317, 949, 73978,73981,371, 1481, 15839,565, 73984,545, 73986,73985,73988,45213,73989,73992,74057,74099,
- 74144,39147,74158,73993,73994,73996,73998,74000,6401, 74003,74005,74007,74011,74017,74024,74025,74038,74045,2219, 17745,74050,74056,317, 317, 6978, 317, 317,
- 73995,8519, 73997,511, 73999,554, 551, 1549, 74001,1999, 74002,29424,317, 74004,36232,317, 1345, 11539,74006,1347, 74008,370, 74009,74010,356, 466, 317,
+ 74144,39147,74158,73993,73994,73996,73998,74000,6401, 74003,74005,74007,74011,74017,74024,74025,74038,74045,2219, 17745,74050,74056,317, 317, 6978, 317, 317,
+ 73995,8519, 73997,511, 73999,554, 551, 1549, 74001,1999, 74002,29424,317, 74004,36232,317, 1345, 11539,74006,1347, 74008,370, 74009,74010,356, 466, 317,
5005, 74012,317, 74016,317, 433, 365, 74013,74014,74015,5561, 356, 3599, 4952, 317, 317, 74018,5896, 74019,7490, 6036, 23019,5159, 74020,13269,37649,74021,
- 74023,2391, 370, 7064, 19287,3999, 74022,371, 12062,332, 350, 363, 490, 317, 5363, 317, 74026,74027,317, 370, 13387,5273, 24664,16302,317, 74028,1060,
+ 74023,2391, 370, 7064, 19287,3999, 74022,371, 12062,332, 350, 363, 490, 317, 5363, 317, 74026,74027,317, 370, 13387,5273, 24664,16302,317, 74028,1060,
317, 74029,2022, 385, 317, 74030,74032,2171, 385, 317, 74031,74033,74034,2323, 7192, 45287,24775,5105, 74035,74036,74036,74037,370, 74039,74043,74040,74041,
- 74042,74044,74046,1077, 371, 74047,317, 25114,362, 74048,74049,3987, 365, 5809, 74051,356, 466, 45759,74055,74052,74053,74054,74058,1453, 74068,74072,7582,
+ 74042,74044,74046,1077, 371, 74047,317, 25114,362, 74048,74049,3987, 365, 5809, 74051,356, 466, 45759,74055,74052,74053,74054,74058,1453, 74068,74072,7582,
350, 2381, 74087,74089,317, 74091,34948,74093,20117,74096,363, 2022, 2568, 5661, 74059,74065,5661, 74060,74062,74061,317, 15540,74061,317, 74063,74064,10422,
- 9624, 3999, 11236,50639,74066,317, 317, 74067,39003,6736, 317, 5896, 74069,389, 4962, 363, 74070,317, 317, 74071,437, 381, 5661, 317, 54582,74073,8506,
- 370, 74075,22079,2510, 466, 74074,34862,317, 14773,476, 74076,74077,74079,4249, 74081,74084,22591,362, 36225,363, 74085,2222, 317, 839, 74086,1160, 370,
+ 9624, 3999, 11236,50639,74066,317, 317, 74067,39003,6736, 317, 5896, 74069,389, 4962, 363, 74070,317, 317, 74071,437, 381, 5661, 317, 54582,74073,8506,
+ 370, 74075,22079,2510, 466, 74074,34862,317, 14773,476, 74076,74077,74079,4249, 74081,74084,22591,362, 36225,363, 74085,2222, 317, 839, 74086,1160, 370,
47840,74078,74080,317, 381, 74082,74083,23436,1992, 1109, 40892,349, 2063, 74088,317, 1135, 332, 370, 5159, 10876,74090,45995,6831, 370, 317, 351, 57681,
- 74092,363, 2134, 74094,5441, 74095,371, 74097,554, 317, 317, 74098,74100,74102,74104,74106,74116,74119,5159, 74121,74123,74126,5441, 74131,74132,74134,2134,
- 74143,74101,36232,74103,551, 551, 351, 7734, 317, 49269,74105,1020, 74107,74108,74109,74111,74110,12931,317, 74112,74113,45914,74114,74115,74117,317, 370,
+ 74092,363, 2134, 74094,5441, 74095,371, 74097,554, 317, 317, 74098,74100,74102,74104,74106,74116,74119,5159, 74121,74123,74126,5441, 74131,74132,74134,2134,
+ 74143,74101,36232,74103,551, 551, 351, 7734, 317, 49269,74105,1020, 74107,74108,74109,74111,74110,12931,317, 74112,74113,45914,74114,74115,74117,317, 370,
74118,317, 1999, 21274,74120,351, 74122,12142,466, 317, 4477, 74124,74125,12429,15646,41962,10011,74127,74129,2024, 74130,317, 5661, 404, 4980, 428, 74128,
71284,8035, 380, 450, 317, 2024, 5159, 2067, 317, 317, 2758, 46858,3999, 6917, 317, 7261, 1347, 32485,2317, 2222, 74133,14410,317, 5022, 10928,16535,74135,
74140,74142,74136,410, 74137,74138,11716,12429,466, 362, 541, 5961, 7942, 550, 317, 74139,317, 74141,363, 74145,19872,74146,2219, 74147,74149,74150,74152,
- 74153,350, 74148,2184, 74151,390, 74154,317, 317, 6228, 43110,11038,74155,74156,74157,363, 1033, 1998, 350, 74160,605, 74161,74162,74167,74170,74173,370,
+ 74153,350, 74148,2184, 74151,390, 74154,317, 317, 6228, 43110,11038,74155,74156,74157,363, 1033, 1998, 350, 74160,605, 74161,74162,74167,74170,74173,370,
74174,74175,74190,74222,74272,74273,74275,74283,74298,74299,74300,74303,393, 1999, 19565,343, 74163,490, 74164,74165,74166,74168,317, 7035, 74169,543, 19544,
74171,605, 74172,351, 317, 317, 317, 8346, 6847, 1347, 345, 2110, 8178, 351, 351, 539, 74176,565, 2022, 390, 317, 74182,5241, 74177,74180,74181,74178,
448, 74179,2156, 345, 74183,74185,74188,363, 74184,2279, 317, 74186,74187,4965, 614, 74189,317, 5482, 317, 317, 6704, 317, 74191,74193,17019,5537, 74200,
74201,74206,74208,317, 74192,3284, 7892, 74194,74196,363, 74195,4268, 2163, 8231, 74197,74198,10254,317, 6172, 74199,5717, 5447, 466, 317, 1347, 9528, 74202,
3124, 317, 74203,74204,74205,317, 74207,343, 649, 74209,74214,74218,74219,404, 74221,74210,74211,401, 74212,74213,317, 345, 73706,24577,74215,5652, 74216,
- 74217,317, 74220,74223,74232,74240,74248,74254,10946,74255,74263,74224,13638,317, 74225,74231,74226,2156, 401, 74227,74228,74229,74230,356, 74233,466, 2271,
+ 74217,317, 74220,74223,74232,74240,74248,74254,10946,74255,74263,74224,13638,317, 74225,74231,74226,2156, 401, 74227,74228,74229,74230,356, 74233,466, 2271,
43065,74238,74239,356, 466, 74234,74235,21137,74236,13338,74237,7834, 317, 5459, 7888, 10674,74241,74243,6165, 74242,74244,74245,74246,74247,74249,74252,74250,
74251,317, 74253,345, 317, 362, 74256,74257,74260,74261,14799,380, 339, 11560,317, 74258,74259,8557, 7834, 317, 317, 34487,401, 74262,74264,74267,74265,
317, 74266,393, 74268,490, 2503, 317, 11786,74269,74271,345, 74270,74080,8139, 393, 6171, 74274,46637,3505, 3505, 551, 2510, 8304, 363, 74276,74277,74278,
- 5241, 74281,74282,4976, 6736, 489, 317, 381, 74279,74280,490, 74284,74286,362, 7892, 74287,363, 74285,13920,317, 74288,74297,74289,74290,6996, 320, 649,
+ 5241, 74281,74282,4976, 6736, 489, 317, 381, 74279,74280,490, 74284,74286,362, 7892, 74287,363, 74285,13920,317, 74288,74297,74289,74290,6996, 320, 649,
74291,317, 7222, 74294,317, 74292,74293,6172, 1526, 74295,74296,883, 365, 74301,74302,6046, 6831, 971, 74304,74306,74319,74329,74347,74351,74352,74353,74354,
- 74356,74361,741, 74362,74368,74371,74307,74309,370, 74310,74313,74316,2322, 971, 1108, 74318,381, 11280,74308,61544,74311,74312,371, 74314,317, 74315,317,
+ 74356,74361,741, 74362,74368,74371,74307,74309,370, 74310,74313,74316,2322, 971, 1108, 74318,381, 11280,74308,61544,74311,74312,371, 74314,317, 74315,317,
74317,13638,565, 74320,74321,17471,74328,28124,74322,74323,74326,74324,13638,74325,371, 23651,3284, 74327,2203, 5570, 74330,1526, 74332,380, 74339,74340,74341,
- 332, 74344,74345,74331,40718,362, 74333,2381, 370, 74334,74335,74336,74337,74338,3751, 317, 1020, 2074, 5623, 350, 28068,74342,74343,74346,74348,74349,565,
+ 332, 74344,74345,74331,40718,362, 74333,2381, 370, 74334,74335,74336,74337,74338,3751, 317, 1020, 2074, 5623, 350, 28068,74342,74343,74346,74348,74349,565,
74350,27053,356, 29654,42843,61726,3007, 74355,11831,5793, 74357,74358,11346,33238,317, 17856,9696, 74359,74360,371, 27913,18849,390, 2631, 74363,74365,74367,
74364,74366,370, 3284, 23524,6388, 348, 28341,74369,5891, 74370,45033,74372,74374,74377,13638,74378,74373,74375,8295, 13638,33549,2381, 74376,74379,74381,74382,
74385,74388,74396,74399,74402,272, 74857,74862,74868,273, 75357,274, 276, 76044,76049,76057,76068,76074,277, 76503,278, 77109,77171,282, 77409,77423,77482,
77483,77545,74380,6332, 6964, 74383,74384,365, 74386,74387,74389,74393,74390,74391,74392,74394,74395,74397,74398,74400,74401,74403,74404,74406,74407,74443,74462,
- 74474,74479,74485,74501,74506,74527,74531,74552,74595,74636,74693,74697,74705,74706,74767,74781,74801,74814,74825,74832,74843,74852,74405,533, 343, 317, 2035,
+ 74474,74479,74485,74501,74506,74527,74531,74552,74595,74636,74693,74697,74705,74706,74767,74781,74801,74814,74825,74832,74843,74852,74405,533, 343, 317, 2035,
74408,74412,74414,74420,74427,74435,74437,317, 74439,16915,317, 317, 19720,74409,9454, 74410,5392, 6283, 74411,490, 317, 490, 34257,74413,511, 74415,17760,
74416,3284, 74417,373, 74418,74419,363, 348, 74421,6002, 74425,74426,74422,74423,74424,2381, 2381, 74428,74429,7328, 490, 382, 317, 5761, 317, 74430,11144,
74431,317, 31023,317, 74433,74434,14062,74432,2004, 381, 1358, 1347, 74436,74438,363, 2368, 2035, 74440,74442,74441,317, 30478,74444,74445,74447,370, 74449,
74452,74454,74456,74457,74458,317, 74459,2073, 317, 7149, 404, 490, 74446,7567, 11669,74448,380, 7408, 12329,74450,62267,74451,9702, 6900, 18281,490, 15752,
363, 74453,370, 63562,74455,20497,21186,317, 317, 317, 317, 317, 11962,3987, 490, 8470, 9422, 1160, 379, 74460,74461,343, 5701, 362, 317, 74463,19922,
74464,74465,74466,382, 74467,2584, 74468,74472,317, 2108, 5439, 332, 21094,370, 490, 317, 393, 23524,363, 74469,74470,74471,74473,1453, 74475,332, 74476,
- 40898,74477,74478,2178, 74480,74481,2715, 6532, 7428, 74483,74484,5022, 317, 2178, 74482,1160, 74486,74489,317, 74491,74493,74494,362, 1588, 317, 74500,362,
- 490, 490, 74487,365, 22786,74488,74490,1999, 74492,466, 7408, 363, 7408, 317, 74495,74496,74499,343, 74497,2210, 365, 5241, 74498,2078, 317, 382, 490,
- 317, 317, 6334, 74502,74503,10305,74505,5022, 3361, 317, 1109, 26867,74504,6420, 490, 317, 74507,74508,2178, 74510,490, 332, 74511,332, 74513,74518,317,
- 74520,490, 74521,74523,74525,19258,74526,74509,74512,1194, 66451,2413, 9695, 10877,74514,6013, 74516,74517,56831,74515,22560,363, 18941,9298, 5087, 1020, 4984,
- 317, 317, 74519,365, 5991, 351, 363, 365, 466, 74522,363, 74524,317, 317, 317, 466, 8216, 317, 317, 589, 466, 317, 74528,19157,74530,74529,490,
+ 40898,74477,74478,2178, 74480,74481,2715, 6532, 7428, 74483,74484,5022, 317, 2178, 74482,1160, 74486,74489,317, 74491,74493,74494,362, 1588, 317, 74500,362,
+ 490, 490, 74487,365, 22786,74488,74490,1999, 74492,466, 7408, 363, 7408, 317, 74495,74496,74499,343, 74497,2210, 365, 5241, 74498,2078, 317, 382, 490,
+ 317, 317, 6334, 74502,74503,10305,74505,5022, 3361, 317, 1109, 26867,74504,6420, 490, 317, 74507,74508,2178, 74510,490, 332, 74511,332, 74513,74518,317,
+ 74520,490, 74521,74523,74525,19258,74526,74509,74512,1194, 66451,2413, 9695, 10877,74514,6013, 74516,74517,56831,74515,22560,363, 18941,9298, 5087, 1020, 4984,
+ 317, 317, 74519,365, 5991, 351, 363, 365, 466, 74522,363, 74524,317, 317, 317, 466, 8216, 317, 317, 589, 466, 317, 74528,19157,74530,74529,490,
365, 3966, 317, 2035, 527, 74532,74541,381, 74549,74550,43385,74551,20592,490, 365, 74533,317, 5439, 490, 74534,74535,9174, 74536,74538,490, 4186, 74540,
6851, 867, 11485,2272, 74537,3284, 74539,2576, 3284, 1162, 35182,14062,74542,3031, 74543,5223, 74544,53354,74545,25135,74546,74548,11388,317, 15942,317, 11485,
2322, 2110, 11434,381, 2509, 74547,37402,9649, 17760,490, 27477,74553,74560,74562,2146, 74563,2024, 74566,10928,74567,74570,74574,74585,74588,74590,74591,74592,
- 74593,370, 565, 74594,381, 5173, 490, 44788,317, 74554,382, 74559,9174, 317, 7514, 39655,74555,74557,317, 74556,317, 490, 38507,74558,1999, 74561,1999,
- 317, 317, 2117, 427, 317, 74564,6179, 4925, 74565,356, 5570, 2571, 317, 74568,6600, 27851,8384, 51426,362, 74569,1459, 8100, 490, 350, 5419, 673, 4788,
+ 74593,370, 565, 74594,381, 5173, 490, 44788,317, 74554,382, 74559,9174, 317, 7514, 39655,74555,74557,317, 74556,317, 490, 38507,74558,1999, 74561,1999,
+ 317, 317, 2117, 427, 317, 74564,6179, 4925, 74565,356, 5570, 2571, 317, 74568,6600, 27851,8384, 51426,362, 74569,1459, 8100, 490, 350, 5419, 673, 4788,
1194, 10422,74571,74572,74573,317, 1347, 8977, 2402, 3075, 12303,2060, 74575,8301, 74577,74579,74580,74581,22370,74583,74584,26033,74576,471, 39198,381, 57713,
- 6179, 317, 317, 6551, 5570, 5223, 74578,381, 381, 53506,5872, 370, 490, 5447, 363, 317, 74582,2533, 332, 332, 466, 16466,74586,74587,74589,317, 317,
+ 6179, 317, 317, 6551, 5570, 5223, 74578,381, 381, 53506,5872, 370, 490, 5447, 363, 317, 74582,2533, 332, 332, 466, 16466,74586,74587,74589,317, 317,
317, 22232,317, 15770,490, 317, 74596,74607,74614,74617,1020, 9909, 74619,74621,74624,490, 74630,74631,74632,490, 74597,317, 365, 74599,74600,74601,74604,
- 1459, 74605,332, 6901, 74598,317, 1347, 12494,74602,332, 74603,317, 5447, 371, 74606,74608,317, 501, 11607,74609,490, 74611,554, 5428, 317, 74610,8811,
- 317, 6551, 74612,5033, 5570, 317, 74613,6486, 5328, 317, 317, 1481, 20219,490, 74615,74616,317, 317, 317, 31980,363, 74618,490, 317, 5611, 2012, 5120,
+ 1459, 74605,332, 6901, 74598,317, 1347, 12494,74602,332, 74603,317, 5447, 371, 74606,74608,317, 501, 11607,74609,490, 74611,554, 5428, 317, 74610,8811,
+ 317, 6551, 74612,5033, 5570, 317, 74613,6486, 5328, 317, 317, 1481, 20219,490, 74615,74616,317, 317, 317, 31980,363, 74618,490, 317, 5611, 2012, 5120,
382, 317, 1459, 490, 74620,59909,45941,317, 1108, 6420, 370, 5611, 74622,74623,74625,74626,74627,74628,74629,1347, 5032, 2163, 490, 490, 351, 5810, 74633,
- 74634,74635,74637,5896, 74639,74641,74644,380, 74650,317, 74666,74668,74669,18581,362, 74674,74681,74683,74685,74689,19303,74690,74691,343, 2509, 74638,6352,
+ 74634,74635,74637,5896, 74639,74641,74644,380, 74650,317, 74666,74668,74669,18581,362, 74674,74681,74683,74685,74689,19303,74690,74691,343, 2509, 74638,6352,
40281,490, 351, 74640,317, 5896, 74642,490, 4984, 490, 74643,317, 317, 317, 45938,1481, 1913, 74645,490, 490, 8948, 31433,74647,1459, 74649,74646,74648,
74651,74654,74657,74660,2022, 53775,74662,74664,74665,317, 74652,380, 74653,5439, 490, 362, 74655,74656,466, 6318, 362, 317, 373, 2510, 74658,74659,74661,
466, 317, 74663,317, 370, 490, 317, 317, 317, 74667,17871,29531,4591, 17760,40281,6901, 11388,317, 35710,466, 10894,2077, 74670,74672,362, 64218,74673,
2021, 317, 74671,418, 74675,74676,13369,74680,4591, 2541, 8023, 7399, 317, 8023, 343, 74677,74679,317, 74678,16552,4949, 317, 8022, 9575, 317, 365, 74682,
- 9557, 380, 365, 2022, 74684,317, 74686,317, 5033, 4984, 74688,427, 74687,23949,58701,1700, 1347, 339, 5742, 365, 44394,6227, 1913, 5405, 12696,74692,362,
- 11147,74694,29531,74696,317, 9186, 74695,5626, 317, 317, 74698,74699,5727, 74701,15732,385, 74702,11716,74704,317, 490, 596, 1078, 362, 317, 317, 317,
+ 9557, 380, 365, 2022, 74684,317, 74686,317, 5033, 4984, 74688,427, 74687,23949,58701,1700, 1347, 339, 5742, 365, 44394,6227, 1913, 5405, 12696,74692,362,
+ 11147,74694,29531,74696,317, 9186, 74695,5626, 317, 317, 74698,74699,5727, 74701,15732,385, 74702,11716,74704,317, 490, 596, 1078, 362, 317, 317, 317,
5273, 74700,12987,4984, 490, 10878,10832,1347, 69935,74703,23372,317, 317, 317, 2568, 13427,317, 356, 74707,74719,74722,74725,74728,74733,74735,490, 74737,
74740,74741,74742,74746,74747,74748,74751,74757,74758,74764,74765,7688, 363, 74766,74708,332, 74710,74712,2142, 74713,18794,74717,5266, 490, 317, 404, 74709,
52647,8766, 74711,3284, 74714,2317, 74715,5687, 5570, 317, 74716,74718,7116, 883, 553, 332, 16278,74720,381, 74721,60693,380, 381, 317, 317, 317, 74723,
74724,317, 317, 1383, 2571, 317, 1160, 317, 317, 74726,74727,1160, 74729,74731,1030, 74730,74732,74734,74736,490, 4925, 317, 317, 1109, 4984, 74738,58323,
74739,345, 339, 61207,466, 605, 404, 2053, 370, 351, 74743,74744,74745,396, 536, 332, 11198,17637,370, 2022, 363, 317, 74749,74750,74752,74754,74756,
- 317, 36081,25501,74753,317, 345, 317, 74755,7035, 363, 382, 317, 380, 6944, 11928,365, 345, 74759,4965, 1914, 37821,317, 74763,584, 74760,14132,1347,
- 11596,74761,74762,317, 351, 8766, 317, 351, 6002, 28514,490, 370, 74768,2510, 74770,490, 74772,350, 74773,74775,74778,427, 74769,15515,350, 350, 8446,
- 74771,5624, 3854, 362, 317, 490, 490, 332, 34987,25077,466, 19922,317, 74774,74776,71687,74777,32924,74779,58200,317, 317, 74780,317, 317, 10891,2571,
- 317, 317, 317, 74782,35155,74784,343, 554, 74787,9702, 74788,362, 543, 74789,6849, 74790,74793,74800,49023,365, 1481, 74783,317, 6002, 490, 47253,317,
+ 317, 36081,25501,74753,317, 345, 317, 74755,7035, 363, 382, 317, 380, 6944, 11928,365, 345, 74759,4965, 1914, 37821,317, 74763,584, 74760,14132,1347,
+ 11596,74761,74762,317, 351, 8766, 317, 351, 6002, 28514,490, 370, 74768,2510, 74770,490, 74772,350, 74773,74775,74778,427, 74769,15515,350, 350, 8446,
+ 74771,5624, 3854, 362, 317, 490, 490, 332, 34987,25077,466, 19922,317, 74774,74776,71687,74777,32924,74779,58200,317, 317, 74780,317, 317, 10891,2571,
+ 317, 317, 317, 74782,35155,74784,343, 554, 74787,9702, 74788,362, 543, 74789,6849, 74790,74793,74800,49023,365, 1481, 74783,317, 6002, 490, 47253,317,
317, 74785,317, 74786,8926, 24316,317, 317, 9174, 8431, 5223, 74791,390, 74792,6834, 365, 332, 317, 490, 490, 74794,74796,343, 543, 74799,2058, 74795,
74797,356, 74798,4563, 543, 2178, 74802,74803,49364,37126,471, 74804,74805,9483, 74806,74808,74809,1020, 2233, 12920,24038,558, 362, 317, 558, 362, 19953,
- 36075,345, 490, 74807,16157,317, 6050, 6551, 5120, 8600, 10081,382, 6651, 74810,637, 74813,74811,74812,74815,74817,74821,74822,6651, 5611, 50766,74816,2381,
- 9937, 74818,317, 74819,74820,317, 351, 7490, 317, 5538, 490, 13124,74823,363, 74824,7273, 7386, 2537, 74826,448, 63762,5087, 5105, 74828,74830,74827,317,
- 6021, 74829,74831,14217,74833,5464, 74834,362, 74838,11615,345, 74835,74836,466, 490, 382, 317, 7405, 74837,74839,74840,74841,74842,317, 7223, 345, 4268,
- 74844,13338,4591, 367, 74845,74849,490, 4965, 74851,1230, 1597, 12696,351, 74846,317, 74847,637, 8248, 317, 317, 317, 317, 74848,7941, 74850,363, 351,
+ 36075,345, 490, 74807,16157,317, 6050, 6551, 5120, 8600, 10081,382, 6651, 74810,637, 74813,74811,74812,74815,74817,74821,74822,6651, 5611, 50766,74816,2381,
+ 9937, 74818,317, 74819,74820,317, 351, 7490, 317, 5538, 490, 13124,74823,363, 74824,7273, 7386, 2537, 74826,448, 63762,5087, 5105, 74828,74830,74827,317,
+ 6021, 74829,74831,14217,74833,5464, 74834,362, 74838,11615,345, 74835,74836,466, 490, 382, 317, 7405, 74837,74839,74840,74841,74842,317, 7223, 345, 4268,
+ 74844,13338,4591, 367, 74845,74849,490, 4965, 74851,1230, 1597, 12696,351, 74846,317, 74847,637, 8248, 317, 317, 317, 317, 74848,7941, 74850,363, 351,
317, 2261, 363, 949, 317, 48319,74853,74854,74856,353, 7334, 3987, 74855,2110, 351, 343, 362, 317, 1108, 74858,565, 74859,74860,16898,14549,1351, 74861,
15196,367, 345, 356, 74863,74865,74867,339, 2328, 74864,74866,44909,5624, 2162, 74869,74873,490, 345, 74879,74870,74871,74872,74874,74876,74875,74877,74878,
74880,396, 74881,74882,74883,74904,74906,74937,74945,74956,74961,74968,74975,74992,74996,75006,75092,75132,75186,75193,75201,75205,75282,75310,75333,75339,75342,
- 75346,52812,75356,74884,74885,74886,74889,74890,74892,5020, 74893,74894,74896,74897,965, 74898,74900,74902,74887,1060, 74888,10877,362, 385, 490, 14425,317,
+ 75346,52812,75356,74884,74885,74886,74889,74890,74892,5020, 74893,74894,74896,74897,965, 74898,74900,74902,74887,1060, 74888,10877,362, 385, 490, 14425,317,
317, 74891,351, 343, 2156, 339, 4965, 317, 316, 393, 5991, 466, 17856,6275, 74895,14558,12423,19187,381, 74899,317, 10891,3999, 317, 317, 6195, 74901,
466, 2022, 6348, 350, 317, 343, 1347, 317, 351, 2060, 351, 74903,317, 6036, 74905,10471,5926, 21241,381, 317, 574, 10609,74907,74923,490, 332, 74925,
- 1347, 404, 74931,74933,317, 74908,74909,10487,317, 343, 362, 74910,317, 1044, 2272, 74911,74912,74915,74913,317, 363, 10376,2410, 74914,10373,2530, 317,
+ 1347, 404, 74931,74933,317, 74908,74909,10487,317, 343, 362, 74910,317, 1044, 2272, 74911,74912,74915,74913,317, 363, 10376,2410, 74914,10373,2530, 317,
317, 74916,74919,74917,74918,74920,74921,74922,317, 9313, 345, 4268, 9929, 74924,74926,74927,74928,74929,74930,74932,74934,74936,74935,317, 12429,74938,74942,
2024, 73709,74944,317, 351, 74939,74940,371, 1347, 5538, 6228, 317, 74941,317, 34320,74943,24756,332, 345, 343, 317, 71750,74946,1230, 74947,1358, 74948,
- 74949,74953,317, 74954,74955,558, 317, 74950,6326, 8125, 4249, 2156, 7073, 74951,74952,317, 316, 385, 317, 1358, 2156, 6195, 2260, 490, 14537,2184, 2060,
+ 74949,74953,317, 74954,74955,558, 317, 74950,6326, 8125, 4249, 2156, 7073, 74951,74952,317, 316, 385, 317, 1358, 2156, 6195, 2260, 490, 14537,2184, 2060,
317, 317, 74957,74959,8014, 5737, 404, 74958,74960,317, 74891,74962,317, 350, 74964,74965,2222, 37220,74963,16186,74966,74967,1000, 74969,11505,2022, 74972,
8882, 74973,74970,490, 317, 74971,10058,971, 7785, 74974,74976,74978,74979,74981,74983,74985,74988,74990,74977,21274,66977,2402, 363, 49058,550, 74980,74982,
5896, 490, 74984,74986,74987,31433,9567, 1999, 5809, 74989,74991,74993,74995,4984, 74994,332, 317, 46796,867, 490, 16021,20909,74997,74998,13066,75000,75003,
- 75005,490, 4045, 66324,74999,363, 75001,75002,75004,75007,75010,565, 75011,75073,501, 339, 75074,75075,75084,539, 75085,75088,75090,75091,75008,75009,350,
- 9702, 380, 12668,317, 75012,11786,75023,75027,75032,75034,75041,75044,75046,75059,75065,75066,317, 75013,75015,370, 75017,75014,75016,75018,317, 75019,317,
+ 75005,490, 4045, 66324,74999,363, 75001,75002,75004,75007,75010,565, 75011,75073,501, 339, 75074,75075,75084,539, 75085,75088,75090,75091,75008,75009,350,
+ 9702, 380, 12668,317, 75012,11786,75023,75027,75032,75034,75041,75044,75046,75059,75065,75066,317, 75013,75015,370, 75017,75014,75016,75018,317, 75019,317,
75020,75021,75022,317, 13961,75024,75026,75025,363, 317, 317, 2280, 317, 317, 75028,75029,1347, 75030,75031,356, 339, 317, 317, 75033,427, 75035,75038,
75040,7062, 5425, 363, 75036,13956,75037,75039,448, 381, 75042,317, 75043,75045,69648,75047,75050,1230, 75053,75056,75048,75049,7222, 317, 317, 75051,75052,
332, 75054,75055,5225, 5991, 466, 317, 75057,3032, 75058,434, 75060,75063,75061,75062,75064,20320,404, 404, 4045, 75067,75070,40428,75068,75069,75071,75072,
317, 1325, 40866,1950, 351, 5022, 351, 551, 10580,427, 5126, 7711, 75076,75077,14501,317, 317, 6195, 75081,317, 8051, 8614, 317, 317, 332, 351, 75078,
- 317, 317, 75079,75080,75082,317, 75083,4984, 316, 317, 317, 75086,317, 75087,16876,75089,605, 71567,590, 317, 6769, 75093,75094,75095,75096,1020, 343,
+ 317, 317, 75079,75080,75082,317, 75083,4984, 316, 317, 317, 75086,317, 75087,16876,75089,605, 71567,590, 317, 6769, 75093,75094,75095,75096,1020, 343,
75102,75108,75111,75131,3182, 34721,317, 971, 29104,317, 317, 9869, 490, 19237,521, 490, 75097,45119,75098,75099,75100,75101,317, 75103,75104,75105,75106,
- 75107,2022, 596, 75109,75110,637, 5825, 390, 75112,2063, 36457,75119,75122,75126,317, 75130,345, 75113,75114,75117,5644, 404, 75115,356, 466, 2022, 317,
+ 75107,2022, 596, 75109,75110,637, 5825, 390, 75112,2063, 36457,75119,75122,75126,317, 75130,345, 75113,75114,75117,5644, 404, 75115,356, 466, 2022, 317,
25302,514, 75116,75118,317, 317, 5727, 75120,75121,363, 6420, 2156, 317, 362, 317, 317, 4980, 317, 75123,317, 75124,317, 5324, 75125,75127,75128,75129,
- 5365, 356, 466, 2571, 332, 1020, 317, 75133,75136,75137,75138,75147,4982, 75157,75158,75162,2022, 490, 75164,75171,75177,1337, 75178,75180,75184,75185,373,
- 31585,6607, 365, 2171, 21903,2537, 75134,75135,426, 4960, 11147,317, 12907,13187,490, 5120, 75139,75142,75144,20871,317, 75146,317, 26505,75140,356, 466,
- 75141,2571, 317, 371, 75143,75145,75148,2086, 5399, 31433,75155,1459, 1347, 384, 75149,75150,5325, 75151,75152,75153,75154,533, 75156,317, 18406,501, 6834,
+ 5365, 356, 466, 2571, 332, 1020, 317, 75133,75136,75137,75138,75147,4982, 75157,75158,75162,2022, 490, 75164,75171,75177,1337, 75178,75180,75184,75185,373,
+ 31585,6607, 365, 2171, 21903,2537, 75134,75135,426, 4960, 11147,317, 12907,13187,490, 5120, 75139,75142,75144,20871,317, 75146,317, 26505,75140,356, 466,
+ 75141,2571, 317, 371, 75143,75145,75148,2086, 5399, 31433,75155,1459, 1347, 384, 75149,75150,5325, 75151,75152,75153,75154,533, 75156,317, 18406,501, 6834,
590, 317, 317, 543, 75159,75161,3529, 75160,396, 566, 5028, 75163,317, 2369, 75165,75169,4984, 7214, 381, 317, 75166,381, 317, 363, 75167,75168,15618,
- 11533,75170,637, 5942, 320, 363, 75172,5295, 317, 75176,75173,75174,75175,317, 317, 332, 362, 7674, 345, 5158, 363, 345, 7919, 365, 75179,2022, 2510,
+ 11533,75170,637, 5942, 320, 363, 75172,5295, 317, 75176,75173,75174,75175,317, 317, 332, 362, 7674, 345, 5158, 363, 345, 7919, 365, 75179,2022, 2510,
343, 23411,75181,75182,1347, 404, 350, 317, 2155, 21834,317, 75183,501, 9624, 345, 4591, 9832, 490, 363, 351, 3999, 34607,75187,75188,317, 75189,75190,
75191,75192,2033, 332, 75194,350, 75195,356, 75198,75199,365, 75196,317, 75197,6036, 8991, 75200,317, 75202,317, 75203,17586,75204,75206,75210,75211,75215,
- 75216,741, 75221,75224,343, 75226,75228,75229,75236,75239,75243,75246,75268,75273,11040,75276,75277,75281,10255,490, 75207,317, 75208,75209,3505, 44630,596,
+ 75216,741, 75221,75224,343, 75226,75228,75229,75236,75239,75243,75246,75268,75273,11040,75276,75277,75281,10255,490, 75207,317, 75208,75209,3505, 44630,596,
332, 6851, 476, 389, 75212,332, 2110, 317, 75213,5611, 317, 75214,1943, 21132,404, 317, 380, 9696, 75217,1481, 75219,9909, 343, 75218,1160, 317, 75220,
- 490, 490, 75222,75223,11918,2272, 351, 7785, 11940,412, 490, 75225,490, 10898,75227,11146,8594, 4984, 75230,75231,317, 4591, 75232,5634, 75233,317, 317,
+ 490, 490, 75222,75223,11918,2272, 351, 7785, 11940,412, 490, 75225,490, 10898,75227,11146,8594, 4984, 75230,75231,317, 4591, 75232,5634, 75233,317, 317,
10252,345, 75234,75235,5447, 5113, 7419, 75237,6859, 317, 75238,317, 5033, 490, 370, 2317, 343, 75240,6602, 75241,75242,13905,75244,317, 75245,2110, 75247,
- 75253,75257,75264,53775,317, 75248,317, 75249,5055, 380, 75250,12598,75251,75252,8419, 5447, 49995,7567, 343, 1347, 18387,26080,5197, 514, 332, 75254,381,
- 317, 748, 317, 75255,75256,317, 363, 6020, 12461,75258,70114,317, 317, 75260,75259,2184, 7223, 5464, 75261,1588, 75262,75263,317, 351, 75265,75266,317,
+ 75253,75257,75264,53775,317, 75248,317, 75249,5055, 380, 75250,12598,75251,75252,8419, 5447, 49995,7567, 343, 1347, 18387,26080,5197, 514, 332, 75254,381,
+ 317, 748, 317, 75255,75256,317, 363, 6020, 12461,75258,70114,317, 317, 75260,75259,2184, 7223, 5464, 75261,1588, 75262,75263,317, 351, 75265,75266,317,
75267,317, 5250, 24322,75269,75271,75272,75270,990, 966, 75274,75275,568, 971, 345, 370, 75278,75279,75280,6615, 2219, 75283,75284,1109, 75286,75287,14865,
- 2402, 75288,11921,75290,75294,75285,1347, 317, 351, 605, 75289,1160, 75291,75293,350, 16825,350, 10709,75292,10714,450, 7618, 350, 4965, 317, 317, 2171,
- 637, 22090,6996, 317, 633, 75295,1526, 17063,75300,75302,75308,75309,5872, 317, 7651, 317, 75296,75297,365, 2146, 8218, 343, 5898, 75298,75299,317, 317,
+ 2402, 75288,11921,75290,75294,75285,1347, 317, 351, 605, 75289,1160, 75291,75293,350, 16825,350, 10709,75292,10714,450, 7618, 350, 4965, 317, 317, 2171,
+ 637, 22090,6996, 317, 633, 75295,1526, 17063,75300,75302,75308,75309,5872, 317, 7651, 317, 75296,75297,365, 2146, 8218, 343, 5898, 75298,75299,317, 317,
75301,317, 3361, 50480,30549,8281, 75303,75307,317, 317, 75304,75305,75306,317, 363, 6996, 320, 1020, 317, 7086, 75311,75312,75313,317, 17919,75316,75317,
- 75328,75330,317, 75332,75314,345, 75315,543, 356, 466, 317, 1347, 362, 332, 75318,9320, 8569, 75327,75319,317, 75321,57489,10253,350, 75326,2108, 3505,
- 75320,27416,460, 75322,75323,75324,75325,33017,6355, 75329,75331,75334,27022,75337,75335,75336,317, 9567, 75338,7911, 401, 75340,75341,5665, 1020, 343, 7698,
+ 75328,75330,317, 75332,75314,345, 75315,543, 356, 466, 317, 1347, 362, 332, 75318,9320, 8569, 75327,75319,317, 75321,57489,10253,350, 75326,2108, 3505,
+ 75320,27416,460, 75322,75323,75324,75325,33017,6355, 75329,75331,75334,27022,75337,75335,75336,317, 9567, 75338,7911, 401, 75340,75341,5665, 1020, 343, 7698,
10550,317, 317, 75343,20641,75344,2022, 75345,317, 5608, 365, 365, 38799,26034,2829, 2261, 75347,75350,75351,75352,1428, 75353,332, 490, 10375,75348,75349,
- 6228, 6996, 317, 633, 8301, 317, 5055, 2146, 2110, 316, 7448, 2510, 75354,351, 404, 317, 75355,380, 21742,317, 371, 5570, 1444, 1481, 20835,75358,396,
+ 6228, 6996, 317, 633, 8301, 317, 5055, 2146, 2110, 316, 7448, 2510, 75354,351, 404, 317, 75355,380, 21742,317, 371, 5570, 1444, 1481, 20835,75358,396,
75361,75364,75366,75359,462, 75360,75362,75363,75365,75367,2585, 75368,67397,75424,275, 75563,371, 75623,75683,26076,75733,75764,75765,75767,75770,75369,75370,
75374,75376,75377,75378,75379,75380,75388,75397,317, 75414,75415,317, 75417,5223, 75420,5363, 2067, 75423,2222, 75371,23079,75372,2022, 2067, 2067, 75373,75375,
- 363, 2551, 317, 317, 4965, 565, 1020, 351, 75381,5896, 6726, 7734, 75385,75387,5662, 1453, 40460,75382,75383,75384,6847, 75386,351, 741, 317, 345, 5663,
- 365, 75389,75390,75396,75391,75395,2631, 2631, 75392,75393,75394,5241, 317, 11505,75398,75400,75401,75404,11040,75405,75407,345, 75411,75412,317, 75399,2086,
- 75402,317, 75403,75406,356, 10891,2063, 466, 2571, 75408,317, 589, 75409,75410,75413,75416,388, 1358, 61665,2163, 75418,2208, 15440,317, 901, 56788,345,
+ 363, 2551, 317, 317, 4965, 565, 1020, 351, 75381,5896, 6726, 7734, 75385,75387,5662, 1453, 40460,75382,75383,75384,6847, 75386,351, 741, 317, 345, 5663,
+ 365, 75389,75390,75396,75391,75395,2631, 2631, 75392,75393,75394,5241, 317, 11505,75398,75400,75401,75404,11040,75405,75407,345, 75411,75412,317, 75399,2086,
+ 75402,317, 75403,75406,356, 10891,2063, 466, 2571, 75408,317, 589, 75409,75410,75413,75416,388, 1358, 61665,2163, 75418,2208, 15440,317, 901, 56788,345,
75419,490, 75421,75422,75425,75426,75431,75437,75445,75449,75450,75453,75458,75460,75463,75464,75466,75472,75479,75481,75510,75514,75540,75553,75555,75557,75558,
- 75561,350, 380, 317, 356, 75427,316, 2510, 75428,1347, 75429,427, 75430,40847,317, 75432,75433,75435,75436,5653, 20641,75434,990, 5223, 390, 317, 1347,
- 381, 18307,317, 384, 596, 367, 382, 345, 1347, 75438,11709,75443,23950,2402, 75444,75439,317, 75440,75441,75442,389, 5841, 381, 6713, 24867,75446,2024,
+ 75561,350, 380, 317, 356, 75427,316, 2510, 75428,1347, 75429,427, 75430,40847,317, 75432,75433,75435,75436,5653, 20641,75434,990, 5223, 390, 317, 1347,
+ 381, 18307,317, 384, 596, 367, 382, 345, 1347, 75438,11709,75443,23950,2402, 75444,75439,317, 75440,75441,75442,389, 5841, 381, 6713, 24867,75446,2024,
75447,6081, 75448,356, 317, 3361, 317, 317, 317, 1033, 990, 317, 362, 356, 40781,75451,75452,2077, 1347, 75454,9590, 27498,317, 75455,75456,637, 75457,
21303,371, 1060, 75459,75461,2222, 31413,1347, 75462,363, 317, 317, 401, 75465,1347, 2298, 13719,47847,75467,75469,363, 317, 11511,75471,543, 75468,75470,
317, 75473,5447, 75476,5224, 75478,371, 75474,6916, 75475,7222, 36133,382, 75477,75480,381, 6415, 317, 10538,75482,75485,75490,19665,75494,75500,75506,75509,
75483,75484,2330, 9922, 75486,75487,5411, 75488,317, 339, 75489,345, 25903,317, 317, 317, 75491,75492,75493,317, 5055, 9313, 1347, 75495,7360, 75496,75498,
- 75499,75497,75501,75505,317, 1347, 75502,75503,75504,1347, 54292,5717, 75507,75508,75511,8047, 332, 75512,75513,75515,75519,75526,75527,75537,75538,490, 9644,
- 345, 75516,317, 75518,75517,60645,3605, 317, 75520,38566,370, 1347, 75521,363, 1020, 47341,75522,332, 75525,2553, 317, 380, 343, 317, 343, 11648,426,
+ 75499,75497,75501,75505,317, 1347, 75502,75503,75504,1347, 54292,5717, 75507,75508,75511,8047, 332, 75512,75513,75515,75519,75526,75527,75537,75538,490, 9644,
+ 345, 75516,317, 75518,75517,60645,3605, 317, 75520,38566,370, 1347, 75521,363, 1020, 47341,75522,332, 75525,2553, 317, 380, 343, 317, 343, 11648,426,
1160, 317, 75523,490, 317, 75524,9319, 363, 382, 16917,350, 75528,75529,75530,2146, 8682, 343, 75531,31612,5449, 75532,75535,28104,75536,75533,75534,48487,
- 42075,73130,13722,317, 9822, 316, 20641,75539,75541,75542,2036, 75543,2553, 12616,75545,75546,7035, 75552,317, 362, 2369, 343, 5910, 350, 75544,382, 317,
+ 42075,73130,13722,317, 9822, 316, 20641,75539,75541,75542,2036, 75543,2553, 12616,75545,75546,7035, 75552,317, 362, 2369, 343, 5910, 350, 75544,382, 317,
3639, 14278,8756, 381, 75547,466, 75548,362, 75549,317, 75550,75551,3079, 490, 365, 75554,2024, 511, 8569, 10855,2078, 317, 365, 52231,343, 75556,15449,
317, 351, 64626,351, 52231,15734,332, 75559,317, 396, 75560,75562,317, 380, 343, 343, 75564,75565,75571,2354, 75576,75587,45400,490, 75588,75589,75592,
75597,75599,75614,419, 75622,2067, 332, 8431, 490, 75566,75568,13853,75569,11921,75567,24059,381, 317, 36754,11921,381, 75570,56108,7990, 15504,317, 75572,
3052, 75573,370, 75574,5273, 317, 381, 1347, 75575,75577,343, 317, 2087, 75578,75581,75582,9392, 75583,75584,46188,317, 75585,565, 75579,596, 362, 75580,
317, 2366, 350, 3664, 362, 370, 317, 317, 6598, 10907,75586,466, 1347, 19617,7460, 596, 511, 9657, 14883,373, 75590,11749,75591,317, 75593,75594,39064,
- 75595,317, 428, 317, 2156, 71601,4982, 317, 317, 10081,2510, 3999, 355, 317, 75596,466, 317, 1347, 15330,75598,317, 15510,75600,75601,75602,75606,317,
+ 75595,317, 428, 317, 2156, 71601,4982, 317, 317, 10081,2510, 3999, 355, 317, 75596,466, 317, 1347, 15330,75598,317, 15510,75600,75601,75602,75606,317,
5108, 370, 317, 75603,28691,317, 75604,75605,651, 390, 433, 75607,75608,2381, 75609,75610,75611,75612,75613,12421,75615,2272, 75616,75617,363, 5961, 75618,
- 75619,317, 75620,75621,2568, 47781,2997, 75624,75625,75626,317, 10907,75628,75638,75640,75644,343, 390, 75674,345, 363, 479, 317, 317, 54890,317, 343,
- 75627,75629,345, 75631,75632,75633,75634,439, 75635,75637,1588, 317, 4984, 75630,1160, 42797,1160, 317, 317, 317, 6145, 9504, 317, 363, 6046, 11782,5037,
+ 75619,317, 75620,75621,2568, 47781,2997, 75624,75625,75626,317, 10907,75628,75638,75640,75644,343, 390, 75674,345, 363, 479, 317, 317, 54890,317, 343,
+ 75627,75629,345, 75631,75632,75633,75634,439, 75635,75637,1588, 317, 4984, 75630,1160, 42797,1160, 317, 317, 317, 6145, 9504, 317, 363, 6046, 11782,5037,
7261, 317, 317, 317, 1108, 370, 72829,5993, 317, 317, 3078, 363, 75636,17583,4984, 75639,2022, 44883,370, 317, 75641,75642,75643,11324,633, 75645,75647,
- 75648,75649,23207,75650,2134, 2022, 75651,75653,75663,29910,75669,404, 75672,75646,15581,317, 317, 2271, 339, 9069, 8948, 479, 5993, 382, 590, 380, 317,
+ 75648,75649,23207,75650,2134, 2022, 75651,75653,75663,29910,75669,404, 75672,75646,15581,317, 317, 2271, 339, 9069, 8948, 479, 5993, 382, 590, 380, 317,
6046, 16704,427, 75652,351, 2035, 57678,6645, 317, 16278,75654,75659,75660,3023, 75661,2022, 384, 6601, 70352,404, 10467,75662,32950,75655,75656,75657,75658,
- 553, 363, 553, 39003,428, 6089, 356, 75664,75665,75666,75667,75668,6089, 370, 362, 2571, 363, 2571, 363, 75670,356, 75671,317, 363, 7214, 75673,1033,
+ 553, 363, 553, 39003,428, 6089, 356, 75664,75665,75666,75667,75668,6089, 370, 362, 2571, 363, 2571, 363, 75670,356, 75671,317, 363, 7214, 75673,1033,
75675,75679,75682,75676,75677,75678,2571, 317, 75680,75681,75684,75686,75706,75708,75730,59119,363, 75685,380, 2572, 317, 1060, 14461,47313,363, 75687,75690,
- 75698,4304, 75699,317, 75688,75689,356, 8023, 466, 317, 317, 75691,637, 317, 1230, 317, 4982, 75696,75697,1347, 32840,75692,75693,75694,75695,5158, 332,
- 543, 6598, 317, 75700,75701,317, 2510, 466, 6710, 75702,75703,75704,75705,343, 7585, 75707,345, 52414,5717, 75709,75711,75712,345, 75713,75715,75722,1060,
- 343, 36936,75725,75726,75729,75710,356, 8125, 317, 75714,75716,363, 75717,345, 75718,2163, 75719,75720,75721,2551, 75723,9720, 404, 404, 75724,317, 7590,
+ 75698,4304, 75699,317, 75688,75689,356, 8023, 466, 317, 317, 75691,637, 317, 1230, 317, 4982, 75696,75697,1347, 32840,75692,75693,75694,75695,5158, 332,
+ 543, 6598, 317, 75700,75701,317, 2510, 466, 6710, 75702,75703,75704,75705,343, 7585, 75707,345, 52414,5717, 75709,75711,75712,345, 75713,75715,75722,1060,
+ 343, 36936,75725,75726,75729,75710,356, 8125, 317, 75714,75716,363, 75717,345, 75718,2163, 75719,75720,75721,2551, 75723,9720, 404, 404, 75724,317, 7590,
4949, 75727,75728,385, 385, 1230, 2208, 5960, 5840, 10422,3999, 317, 317, 362, 1358, 75731,14503,1230, 2067, 1078, 75732,2510, 466, 363, 317, 363, 75734,
- 317, 6831, 75736,75738,75739,75745,75752,75753,5477, 46821,317, 75735,2362, 75737,33351,57128,4984, 75740,317, 75743,64377,466, 75741,75742,317, 8882, 2033,
+ 317, 6831, 75736,75738,75739,75745,75752,75753,5477, 46821,317, 75735,2362, 75737,33351,57128,4984, 75740,317, 75743,64377,466, 75741,75742,317, 8882, 2033,
75744,466, 5896, 75746,1345, 317, 317, 75747,75748,317, 6996, 317, 317, 317, 317, 317, 317, 75749,75750,13631,351, 466, 4591, 64342,428, 6354, 69184,
- 4268, 75751,590, 23995,75754,75755,75758,75759,75760,75761,75762,404, 317, 590, 2063, 75756,75757,12696,5217, 370, 345, 605, 363, 351, 7389, 370, 7405,
+ 4268, 75751,590, 23995,75754,75755,75758,75759,75760,75761,75762,404, 317, 590, 2063, 75756,75757,12696,5217, 370, 345, 605, 363, 351, 7389, 370, 7405,
317, 75763,363, 35828,75766,17889,371, 595, 317, 7988, 75768,75769,75771,5896, 14981,74466,75772,75773,75775,75776,75780,317, 75774,345, 75777,75778,75779,
2206, 75781,75782,75783,75784,75785,75786,75789,75801,75812,75818,75834,75838,565, 75858,75859,75863,75866,75883,75930,75959,75963,75976,76011,76021,76038,76040,
2236, 76042,332, 2631, 75787,317, 490, 75788,5428, 343, 1020, 490, 317, 75790,75794,67953,2236, 75798,75799,3987, 75791,75792,75793,596, 317, 381, 20613,
- 75795,2715, 75797,75796,6002, 317, 1700, 2381, 365, 317, 75800,2537, 7314, 15618,4965, 75802,5570, 75803,75808,317, 338, 13434,20487,36463,317, 3987, 317,
- 75804,466, 75806,12199,317, 2584, 317, 380, 317, 75805,356, 466, 19922,317, 75807,12434,75809,75810,75811,380, 75813,64700,75814,14695,2171, 75816,3987,
- 2184, 428, 4268, 2261, 317, 75815,317, 75817,75819,75822,75823,2572, 501, 501, 75826,75827,75829,18978,75830,75832,75833,317, 75820,75821,15424,3429, 317,
- 1060, 75824,75825,7408, 15332,5663, 75828,332, 490, 317, 317, 501, 8384, 317, 343, 356, 16030,362, 75831,490, 317, 490, 332, 501, 343, 30393,1358,
+ 75795,2715, 75797,75796,6002, 317, 1700, 2381, 365, 317, 75800,2537, 7314, 15618,4965, 75802,5570, 75803,75808,317, 338, 13434,20487,36463,317, 3987, 317,
+ 75804,466, 75806,12199,317, 2584, 317, 380, 317, 75805,356, 466, 19922,317, 75807,12434,75809,75810,75811,380, 75813,64700,75814,14695,2171, 75816,3987,
+ 2184, 428, 4268, 2261, 317, 75815,317, 75817,75819,75822,75823,2572, 501, 501, 75826,75827,75829,18978,75830,75832,75833,317, 75820,75821,15424,3429, 317,
+ 1060, 75824,75825,7408, 15332,5663, 75828,332, 490, 317, 317, 501, 8384, 317, 343, 356, 16030,362, 75831,490, 317, 490, 332, 501, 343, 30393,1358,
2590, 75835,2163, 3751, 317, 75836,343, 16002,350, 317, 317, 75837,370, 1358, 14425,75839,75840,75846,75849,9289, 75853,75854,343, 75841,681, 43754,75842,
- 317, 317, 1353, 1155, 889, 1353, 8301, 2631, 5108, 362, 5570, 3361, 362, 12154,317, 75843,7568, 75844,75845,75847,317, 75848,317, 637, 22650,6996, 317,
- 633, 317, 633, 317, 317, 75850,317, 476, 75851,370, 2571, 45119,317, 317, 75852,317, 381, 6036, 351, 75855,75856,75857,317, 9696, 1347, 75860,350,
+ 317, 317, 1353, 1155, 889, 1353, 8301, 2631, 5108, 362, 5570, 3361, 362, 12154,317, 75843,7568, 75844,75845,75847,317, 75848,317, 637, 22650,6996, 317,
+ 633, 317, 633, 317, 317, 75850,317, 476, 75851,370, 2571, 45119,317, 317, 75852,317, 381, 6036, 351, 75855,75856,75857,317, 9696, 1347, 75860,350,
466, 75862,363, 75861,9214, 5241, 5105, 69463,317, 75864,2036, 75865,490, 46954,363, 75867,75868,39907,75869,2024, 75870,75871,75872,11236,2022, 75881,75882,
36075,345, 350, 9695, 14610,450, 350, 75873,32949,75875,75876,11236,75880,404, 317, 343, 9695, 75874,317, 343, 5217, 1345, 381, 317, 390, 317, 75877,
- 4980, 75878,75879,412, 392, 949, 75884,75885,75896,2077, 75898,75909,53682,1020, 75914,75918,75928,490, 4980, 1603, 75929,949, 4591, 317, 5943, 317, 365,
- 75886,75888,1020, 317, 75894,317, 75895,75887,75889,317, 356, 466, 75890,362, 317, 75892,75891,2272, 75893,16365,9696, 75897,371, 2381, 6228, 2809, 317,
- 10392,10664,317, 75899,15215,75900,6555, 9479, 75903,1347, 75904,75906,16163,1548, 317, 7035, 2758, 14409,476, 75901,551, 317, 343, 75902,476, 7615, 1999,
- 20682,75905,9162, 362, 11709,1588, 6696, 75907,75908,317, 490, 75910,75911,75913,1347, 2317, 75912,6834, 370, 75915,75917,3079, 10487,317, 390, 8446, 317,
+ 4980, 75878,75879,412, 392, 949, 75884,75885,75896,2077, 75898,75909,53682,1020, 75914,75918,75928,490, 4980, 1603, 75929,949, 4591, 317, 5943, 317, 365,
+ 75886,75888,1020, 317, 75894,317, 75895,75887,75889,317, 356, 466, 75890,362, 317, 75892,75891,2272, 75893,16365,9696, 75897,371, 2381, 6228, 2809, 317,
+ 10392,10664,317, 75899,15215,75900,6555, 9479, 75903,1347, 75904,75906,16163,1548, 317, 7035, 2758, 14409,476, 75901,551, 317, 343, 75902,476, 7615, 1999,
+ 20682,75905,9162, 362, 11709,1588, 6696, 75907,75908,317, 490, 75910,75911,75913,1347, 2317, 75912,6834, 370, 75915,75917,3079, 10487,317, 390, 8446, 317,
75916,5896, 45834,317, 317, 317, 4935, 345, 317, 75919,490, 8096, 75921,8217, 75922,75924,75926,75920,5711, 317, 317, 75923,357, 75925,75927,2211, 31436,
- 2272, 404, 2291, 6314, 317, 75931,69723,75933,75936,75938,75939,75940,75942,75943,75944,15732,74892,75950,9454, 5911, 13020,75953,75954,75957,75958,317, 5517,
- 75932,342, 363, 75934,10796,75935,1060, 5022, 351, 317, 9993, 12277,9878, 32092,343, 75937,317, 5482, 6402, 317, 317, 317, 12025,3361, 317, 27092,365,
- 75941,18839,10538,11443,466, 317, 363, 7976, 317, 317, 1459, 345, 75945,554, 75948,75946,317, 317, 75947,356, 466, 75949,75951,75952,363, 317, 5896,
- 317, 5105, 19830,317, 317, 380, 2022, 362, 363, 450, 75955,6576, 10085,343, 75956,317, 373, 2134, 7386, 2203, 75960,9575, 75962,75961,317, 490, 350,
+ 2272, 404, 2291, 6314, 317, 75931,69723,75933,75936,75938,75939,75940,75942,75943,75944,15732,74892,75950,9454, 5911, 13020,75953,75954,75957,75958,317, 5517,
+ 75932,342, 363, 75934,10796,75935,1060, 5022, 351, 317, 9993, 12277,9878, 32092,343, 75937,317, 5482, 6402, 317, 317, 317, 12025,3361, 317, 27092,365,
+ 75941,18839,10538,11443,466, 317, 363, 7976, 317, 317, 1459, 345, 75945,554, 75948,75946,317, 317, 75947,356, 466, 75949,75951,75952,363, 317, 5896,
+ 317, 5105, 19830,317, 317, 380, 2022, 362, 363, 450, 75955,6576, 10085,343, 75956,317, 373, 2134, 7386, 2203, 75960,9575, 75962,75961,317, 490, 350,
21013,75964,343, 75973,75974,317, 75965,75972,343, 9938, 317, 317, 1160, 75966,317, 75968,1347, 75971,23382,317, 75967,75969,75970,75975,558, 75977,15934,
75982,75984,317, 75986,75987,75988,332, 75990,75993,317, 22341,7865, 75978,75981,5891, 69200,75979,75980,6497, 6668, 75983,317, 348, 2060, 75985,3787, 17160,
390, 371, 5309, 75989,317, 75991,75992,75994,6388, 76000,76003,76004,75995,75996,75997,75998,75999,6486, 33467,76001,76002,76005,76006,1444, 76007,76008,76009,
- 76010,317, 23996,76012,76016,317, 76017,36342,76018,7866, 76020,343, 490, 76013,76014,76015,350, 350, 11533,9878, 317, 351, 490, 350, 76019,317, 381,
- 2156, 76022,76025,317, 8125, 76027,76028,76029,76031,76032,5488, 76033,76034,76037,6917, 76023,317, 317, 317, 574, 345, 76024,1160, 317, 1160, 317, 427,
- 76026,8978, 2568, 22608,363, 18794,345, 76030,11612,491, 317, 18127,412, 317, 317, 363, 392, 345, 317, 476, 5872, 5809, 76035,1078, 1358, 317, 1347,
+ 76010,317, 23996,76012,76016,317, 76017,36342,76018,7866, 76020,343, 490, 76013,76014,76015,350, 350, 11533,9878, 317, 351, 490, 350, 76019,317, 381,
+ 2156, 76022,76025,317, 8125, 76027,76028,76029,76031,76032,5488, 76033,76034,76037,6917, 76023,317, 317, 317, 574, 345, 76024,1160, 317, 1160, 317, 427,
+ 76026,8978, 2568, 22608,363, 18794,345, 76030,11612,491, 317, 18127,412, 317, 317, 363, 392, 345, 317, 476, 5872, 5809, 76035,1078, 1358, 317, 1347,
317, 76036,5537, 2571, 57033,7941, 351, 76039,345, 17462,76041,317, 551, 76043,5237, 363, 370, 76045,76046,501, 12226,2719, 76047,76048,936, 76050,76053,
76055,317, 6778, 76051,76052,371, 317, 76054,76056,619, 76058,76063,76065,50563,332, 76067,5526, 1481, 76059,76062,76060,5173, 76061,11388,5427, 490, 76064,
76066,971, 11145,76069,363, 76072,381, 2037, 76070,76071,76073,317, 1430, 57130,434, 76075,76076,76082,76094,76101,76111,76119,76124,76137,76140,332, 76144,
- 76158,76184,76236,76260,76282,76329,76331,76401,76413,76430,76465,76467,76486,76494,76502,76077,76079,317, 76080,1011, 76078,343, 362, 66859,2271, 389, 2077,
- 76081,317, 10422,10147,363, 317, 317, 76083,2058, 76084,76086,76089,76091,10506,317, 317, 76093,31001,332, 317, 317, 5428, 371, 76085,317, 447, 317,
+ 76158,76184,76236,76260,76282,76329,76331,76401,76413,76430,76465,76467,76486,76494,76502,76077,76079,317, 76080,1011, 76078,343, 362, 66859,2271, 389, 2077,
+ 76081,317, 10422,10147,363, 317, 317, 76083,2058, 76084,76086,76089,76091,10506,317, 317, 76093,31001,332, 317, 317, 5428, 371, 76085,317, 447, 317,
317, 76087,317, 317, 76088,317, 363, 6046, 317, 76090,2348, 76092,317, 382, 490, 317, 5942, 320, 2077, 332, 76095,76097,317, 76099,8392, 536, 76100,
971, 76096,76098,2537, 317, 1109, 11366,351, 13559,10629,76102,76103,76104,53022,76105,76107,76108,317, 317, 380, 332, 14425,320, 596, 11128,317, 76106,
- 5428, 363, 47678,76109,317, 317, 76110,396, 7114, 76112,76113,317, 554, 76114,362, 76115,76116,511, 317, 345, 345, 2156, 6917, 8882, 596, 596, 380,
+ 5428, 363, 47678,76109,317, 317, 76110,396, 7114, 76112,76113,317, 554, 76114,362, 76115,76116,511, 317, 345, 345, 2156, 6917, 8882, 596, 596, 380,
350, 343, 76117,76118,76120,76121,380, 5687, 1358, 76123,343, 76122,404, 371, 2242, 76125,76126,76130,76131,76132,76135,317, 11388,365, 76127,76128,76129,
9930, 343, 76133,6993, 317, 76134,76136,439, 393, 12696,428, 76138,590, 590, 76139,370, 76141,2067, 1345, 48609,76142,466, 317, 76143,2110, 76145,76147,
- 76149,76152,2022, 317, 76154,76156,7711, 7850, 76146,317, 1044, 3284, 317, 10471,76148,390, 67597,76150,490, 76151,76153,6900, 9436, 1481, 76155,11485,2844,
+ 76149,76152,2022, 317, 76154,76156,7711, 7850, 76146,317, 1044, 3284, 317, 10471,76148,390, 67597,76150,490, 76151,76153,6900, 9436, 1481, 76155,11485,2844,
76157,317, 76159,76160,2148, 76162,76163,15334,13023,76167,76168,76170,76177,490, 76178,76181,7892, 76183,343, 15047,1325, 317, 332, 76161,53961,15334,76164,
76165,5862, 76166,373, 7377, 23268,317, 490, 1358, 21070,350, 317, 1020, 76169,33899,21296,76171,76175,362, 350, 317, 1230, 15305,317, 76172,31538,76174,
4980, 381, 317, 76173,363, 363, 2521, 76176,404, 350, 363, 38194,76179,15027,76180,3611, 332, 363, 76182,6228, 1184, 76185,76196,76203,76206,76209,76212,
- 76215,76216,76218,76220,76225,76229,76231,76232,2108, 76234,76235,76186,5570, 490, 8455, 76188,76189,76194,317, 76187,317, 317, 76190,317, 76191,5439, 317,
+ 76215,76216,76218,76220,76225,76229,76231,76232,2108, 76234,76235,76186,5570, 490, 8455, 76188,76189,76194,317, 76187,317, 317, 76190,317, 76191,5439, 317,
76192,2142, 76193,317, 6458, 2715, 401, 8296, 605, 11146,317, 76195,38048,76197,76198,76199,76200,76202,2551, 35828,76201,5033, 76204,317, 12625,7850, 76205,
- 7850, 317, 6648, 2288, 76207,19463,317, 317, 76208,76210,76211,76213,370, 317, 5611, 2551, 76214,490, 363, 5184, 384, 7590, 7360, 5223, 76217,13908,345,
+ 7850, 317, 6648, 2288, 76207,19463,317, 317, 76208,76210,76211,76213,370, 317, 5611, 2551, 76214,490, 363, 5184, 384, 7590, 7360, 5223, 76217,13908,345,
8274, 38461,76219,76221,317, 1358, 76222,76224,9422, 76223,605, 2402, 6228, 317, 740, 24054,2631, 317, 317, 5205, 317, 558, 317, 317, 317, 317, 28335,
67597,332, 365, 7185, 76226,490, 76227,317, 76228,10329,12598,76230,342, 62000,1194, 38449,5120, 363, 404, 76233,76237,11442,76238,76239,76240,76243,76247,
490, 76248,343, 76250,76254,2022, 76255,76257,76258,365, 317, 13323,343, 317, 49429,15581,2022, 317, 351, 317, 12799,33343,76241,76242,317, 317, 18692,
- 317, 365, 404, 76244,36115,365, 501, 317, 9832, 490, 2078, 317, 76245,345, 76246,343, 867, 20782,317, 8357, 1347, 317, 471, 33895,317, 1459, 5793,
- 76249,363, 317, 76251,76252,12943,76253,363, 363, 501, 2533, 5890, 428, 5896, 76256,4564, 41346,14170,317, 6420, 1266, 320, 76259,633, 649, 633, 381,
+ 317, 365, 404, 76244,36115,365, 501, 317, 9832, 490, 2078, 317, 76245,345, 76246,343, 867, 20782,317, 8357, 1347, 317, 471, 33895,317, 1459, 5793,
+ 76249,363, 317, 76251,76252,12943,76253,363, 363, 501, 2533, 5890, 428, 5896, 76256,4564, 41346,14170,317, 6420, 1266, 320, 76259,633, 649, 633, 381,
317, 56440,76261,535, 76262,373, 52890,6089, 76263,76264,76265,76268,76269,317, 317, 14410,76271,76272,76280,343, 356, 382, 2156, 1230, 6546, 343, 18905,
- 317, 633, 363, 76266,16867,362, 466, 6255, 5683, 466, 76267,4789, 351, 316, 317, 381, 1526, 18138,363, 363, 345, 12563,437, 2108, 76270,596, 317,
+ 317, 633, 363, 76266,16867,362, 466, 6255, 5683, 466, 76267,4789, 351, 316, 317, 381, 1526, 18138,363, 363, 345, 12563,437, 2108, 76270,596, 317,
8948, 34185,5840, 365, 2593, 4447, 3075, 3076, 428, 351, 76273,19661,343, 76279,317, 76274,76276,356, 428, 2571, 362, 76278,76275,350, 76277,6352, 64784,
- 76281,382, 4318, 76283,76290,76293,76294,76295,76296,37949,76297,76298,76300,76301,76304,76305,76306,76320,76323,76328,76284,76285,76286,76287,76288,76289,2537,
+ 76281,382, 4318, 76283,76290,76293,76294,76295,76296,37949,76297,76298,76300,76301,76304,76305,76306,76320,76323,76328,76284,76285,76286,76287,76288,76289,2537,
76291,6551, 76292,362, 1044, 381, 1060, 16790,2540, 382, 490, 317, 317, 317, 343, 317, 2627, 2134, 5355, 351, 568, 76299,1481, 5701, 317, 317, 17375,
16863,370, 476, 76302,317, 533, 317, 76303,476, 2107, 76307,76312,76315,76318,8455, 317, 76308,76309,76310,76311,351, 10291,317, 363, 76313,76314,27702,
8296, 76316,76317,11844,20085,2317, 76319,4925, 13735,31806,76321,5441, 76322,3361, 76324,76325,76327,2261, 3361, 1020, 317, 76326,427, 2206, 1060, 363, 10329,
76330,76332,76333,76335,76338,76341,75970,76342,76345,76348,76350,76352,76358,76362,76366,76370,76382,76385,76399,76400,317, 317, 363, 317, 1109, 317, 22578,
76334,381, 8948, 4949, 345, 371, 317, 381, 381, 76336,5464, 76337,2301, 6089, 317, 76339,501, 76340,7588, 7667, 317, 317, 317, 317, 590, 76343,76344,
- 2551, 8051, 404, 76346,2537, 18183,5624, 317, 76347,332, 2537, 8926, 16517,76349,317, 76351,76353,76355,3023, 76356,5926, 6601, 345, 15540,76354,317, 2171,
+ 2551, 8051, 404, 76346,2537, 18183,5624, 317, 76347,332, 2537, 8926, 16517,76349,317, 76351,76353,76355,3023, 76356,5926, 6601, 345, 15540,76354,317, 2171,
339, 26271,332, 317, 317, 1358, 343, 76357,317, 371, 9171, 317, 76359,76361,317, 76360,11921,37568,76363,351, 76364,317, 76365,76367,76368,76369,76371,
- 76373,76380,345, 76381,317, 332, 363, 67387,76372,76374,76340,317, 76376,404, 13376,76378,363, 76379,317, 317, 76375,76377,343, 317, 69469,13076,7091,
+ 76373,76380,345, 76381,317, 332, 363, 67387,76372,76374,76340,317, 76376,404, 13376,76378,363, 76379,317, 317, 76375,76377,343, 317, 69469,13076,7091,
317, 2086, 2142, 5538, 4984, 5120, 381, 20032,76383,1347, 76384,5033, 20985,320, 6486, 76386,76387,76393,317, 76397,17335,4591, 76388,6492, 76391,490, 76389,
- 76390,317, 17453,76392,7672, 5033, 76394,76395,76396,5483, 5483, 317, 6409, 4591, 76398,8136, 466, 4591, 12399,428, 76402,76403,76404,76407,76408,1331, 317,
+ 76390,317, 17453,76392,7672, 5033, 76394,76395,76396,5483, 5483, 317, 6409, 4591, 76398,8136, 466, 4591, 12399,428, 76402,76403,76404,76407,76408,1331, 317,
76410,76411,332, 3869, 76405,1078, 317, 76406,16865,76409,490, 11831,7266, 332, 317, 332, 6808, 12925,19661,76412,4984, 317, 317, 332, 25114,76414,76418,
- 76420,76422,362, 596, 76423,317, 76426,553, 76415,332, 356, 76416,14716,317, 565, 382, 76417,28578,317, 1347, 76419,76421,2402, 2503, 633, 338, 332,
+ 76420,76422,362, 596, 76423,317, 76426,553, 76415,332, 356, 76416,14716,317, 565, 382, 76417,28578,317, 1347, 76419,76421,2402, 2503, 633, 338, 332,
1108, 76424,76425,76427,76429,2178, 317, 76428,317, 621, 13178,76431,370, 76433,373, 76437,5661, 76439,76440,490, 76442,76444,76445,76459,76463,3987, 76432,
- 363, 76434,10894,1194, 19784,76435,3999, 2271, 343, 355, 76436,404, 317, 31380,7035, 345, 76438,16162,901, 343, 2571, 317, 317, 1020, 76441,404, 370,
+ 363, 76434,10894,1194, 19784,76435,3999, 2271, 343, 355, 76436,404, 317, 31380,7035, 345, 76438,16162,901, 343, 2571, 317, 317, 1020, 76441,404, 370,
76443,2271, 76446,76447,76449,56717,76451,317, 317, 76455,5037, 317, 6394, 76448,317, 574, 2590, 2163, 382, 76450,76452,76453,76454,76456,76458,76457,48247,
- 2610, 2369, 370, 76460,2022, 427, 76461,76462,2368, 2369, 5255, 356, 466, 76464,4965, 9170, 348, 76466,2081, 76468,350, 12312,76472,466, 76475,76477,9289,
+ 2610, 2369, 370, 76460,2022, 427, 76461,76462,2368, 2369, 5255, 356, 466, 76464,4965, 9170, 348, 76466,2081, 76468,350, 12312,76472,466, 76475,76477,9289,
370, 76484,30944,2004, 76469,1347, 76470,76471,317, 76473,76474,317, 76476,404, 565, 76478,7504, 2156, 76479,76480,501, 2022, 356, 317, 317, 439, 10520,
76481,76482,76483,574, 2022, 501, 363, 22717,25578,5037, 5105, 356, 439, 6736, 76485,2022, 363, 370, 76487,76489,14263,76488,1347, 397, 20660,76490,76491,
76492,76493,76495,76496,1325, 466, 76497,27528,76498,76499,446, 490, 12742,33429,76500,76501,3429, 351, 350, 25114,365, 1526, 2413, 1928, 76504,279, 14991,
280, 76820,281, 76966,76967,77038,77040,77044,77091,77106,76505,76506,76507,76514,76525,2219, 76533,76542,76548,76549,76559,76562,76563,76564,76572,1588, 76687,
- 76694,76696,76700,76702,76711,76722,76723,76724,76508,21274,578, 76511,76512,76509,381, 332, 76510,317, 76513,76515,76516,76518,76519,76522,76524,10317,317,
- 6270, 317, 317, 9170, 317, 3987, 1160, 76517,2134, 68715,5105, 9069, 317, 990, 1526, 15244,466, 76520,76521,7405, 476, 30397,76523,5221, 15646,317, 373,
+ 76694,76696,76700,76702,76711,76722,76723,76724,76508,21274,578, 76511,76512,76509,381, 332, 76510,317, 76513,76515,76516,76518,76519,76522,76524,10317,317,
+ 6270, 317, 317, 9170, 317, 3987, 1160, 76517,2134, 68715,5105, 9069, 317, 990, 1526, 15244,466, 76520,76521,7405, 476, 30397,76523,5221, 15646,317, 373,
60668,410, 76526,76529,1060, 317, 76527,32589,14786,18700,76528,317, 22497,1992, 76530,76531,76532,76534,76536,76541,404, 76535,76537,76539,551, 76538,76540,
76543,76545,76544,317, 68693,76546,2546, 76547,363, 37126,363, 363, 16187,76550,76554,76557,349, 76558,76551,15244,16137,466, 1347, 351, 317, 32534,76552,
76553,317, 317, 29284,554, 9648, 4960, 362, 7419, 76555,427, 317, 4268, 76556,317, 21732,317, 363, 76560,5033, 76561,2381, 343, 2462, 373, 13914,20382,
76565,76567,76568,76571,14768,317, 7405, 76566,76569,76570,317, 466, 5441, 23516,317, 317, 317, 27367,76573,13392,317, 317, 317, 43452,76544,76574,76579,
73076,427, 30882,317, 2156, 5325, 76575,76576,76577,76578,5459, 370, 2509, 317, 76580,76586,76588,76604,76609,76610,76621,76626,76631,2848, 28836,76638,76645,
76654,76658,76659,76669,76674,76680,26518,76685,76581,1060, 76583,76584,373, 76582,317, 30310,24828,76585,370, 76587,76589,76592,76598,76600,76590,76591,32473,
- 76593,76594,76595,466, 317, 317, 76596,343, 76597,76599,317, 41931,41923,76601,5441, 76602,76603,393, 10120,317, 76605,76606,76607,76608,2510, 5226, 4268,
+ 76593,76594,76595,466, 317, 317, 76596,343, 76597,76599,317, 41931,41923,76601,5441, 76602,76603,393, 10120,317, 76605,76606,76607,76608,2510, 5226, 4268,
10523,76611,76615,76616,76620,5225, 76612,76613,523, 76614,317, 373, 2156, 5542, 2627, 76617,76618,76619,10422,466, 317, 76622,76624,76623,350, 5732, 76625,
76627,76628,76629,76630,343, 412, 4267, 76632,76636,76633,76634,76635,356, 76637,448, 317, 1230, 382, 62168,7327, 76639,76641,76644,28548,76640,5447, 21470,
2510, 371, 76642,76643,76646,76649,6272, 5241, 76647,76648,5543, 76650,76651,29241,76652,76653,457, 381, 76655,76656,76657,5628, 1347, 401, 317, 49332,76660,
- 76661,76663,76664,76665,10069,28552,4304, 76662,459, 390, 17255,76666,76668,76667,6055, 8020, 466, 317, 1325, 20858,363, 76670,76672,76671,76673,76675,317,
+ 76661,76663,76664,76665,10069,28552,4304, 76662,459, 390, 17255,76666,76668,76667,6055, 8020, 466, 317, 1325, 20858,363, 76670,76672,76671,76673,76675,317,
76676,76677,76678,76679,433, 76681,76682,76684,76683,380, 5324, 76686,76688,12025,76690,11939,76692,317, 2163, 76689,5325, 26349,365, 76691,317, 29066,28043,
76693,76695,76697,317, 3075, 317, 76698,317, 362, 12925,466, 362, 317, 76699,8197, 76701,350, 9993, 1358, 76703,76705,76706,40781,28727,76710,317, 76704,
53001,2117, 76707,317, 76708,76709,317, 5662, 350, 2310, 317, 76712,76714,76719,490, 883, 1954, 11339,4564, 365, 76713,76715,76716,76718,317, 550, 10422,
466, 24577,53890,61603,76717,2271, 5105, 5447, 466, 317, 489, 5325, 76720,332, 6420, 76721,971, 384, 11241,5266, 350, 404, 348, 317, 76725,351, 12199,
- 76726,317, 404, 2391, 76727,76740,76746,76750,76753,76759,76761,76763,76764,6294, 76767,76769,76773,76781,76792,76793,76796,76805,76809,76810,76818,25681,317,
- 76819,76728,76732,373, 350, 2146, 317, 76733,76738,76729,343, 317, 76730,76731,2208, 466, 8023, 16138,15750,317, 317, 76734,350, 76736,76735,410, 4591,
+ 76726,317, 404, 2391, 76727,76740,76746,76750,76753,76759,76761,76763,76764,6294, 76767,76769,76773,76781,76792,76793,76796,76805,76809,76810,76818,25681,317,
+ 76819,76728,76732,373, 350, 2146, 317, 76733,76738,76729,343, 317, 76730,76731,2208, 466, 8023, 16138,15750,317, 317, 76734,350, 76736,76735,410, 4591,
76737,5394, 596, 317, 410, 15293,76739,5399, 317, 317, 345, 1992, 2156, 343, 76741,76742,76743,12642,76744,76745,317, 37292,12642,662, 317, 317, 10997,
76747,317, 22138,76749,76748,76751,76752,317, 15750,565, 43876,317, 6228, 76754,22786,350, 76757,24209,362, 1109, 11266,25545,317, 317, 76755,76756,76758,
76760,31413,3361, 370, 1108, 5652, 317, 363, 351, 5241, 76762,343, 10012,10012,40248,76765,350, 10907,76766,11324,4477, 351, 76768,28337,10422,16651,76770,
- 675, 76771,565, 76772,345, 19283,317, 76774,76775,76777,5033, 317, 2134, 76780,350, 6318, 2272, 545, 11347,76776,16775,19163,466, 317, 32505,76778,343,
+ 675, 76771,565, 76772,345, 19283,317, 76774,76775,76777,5033, 317, 2134, 76780,350, 6318, 2272, 545, 11347,76776,16775,19163,466, 317, 32505,76778,343,
76779,5038, 332, 12854,6578, 568, 13419,76782,76785,76786,11059,373, 3987, 351, 76788,76783,363, 76784,12151,345, 428, 466, 317, 317, 76787,317, 76789,
554, 76790,362, 4984, 317, 76791,76794,76795,2086, 2402, 19430,2236, 317, 76797,554, 350, 4965, 76800,76803,76804,2368, 317, 317, 76798,76799,76801,76802,
317, 60449,343, 350, 351, 2156, 363, 2110, 76806,2035, 6817, 13393,76808,76807,6083, 12732,76811,76812,76814,76816,418, 76760,5561, 6138, 317, 317, 76813,
317, 2272, 76720,332, 76815,39520,332, 490, 317, 76817,12719,363, 13950,76821,76822,76823,76824,3342, 76825,76836,76845,76857,76861,76865,76871,76883,76884,
- 76889,76901,76916,76917,76941,53920,76942,76947,76950,76957,76965,35345,71431,343, 76826,76827,3751, 76832,76833,317, 356, 412, 5174, 317, 317, 76828,4984,
- 2156, 76829,76830,76831,427, 76834,76835,5689, 5616, 4564, 76837,76838,76839,12846,76840,590, 76842,14174,5173, 2156, 317, 317, 490, 18700,76841,317, 6425,
+ 76889,76901,76916,76917,76941,53920,76942,76947,76950,76957,76965,35345,71431,343, 76826,76827,3751, 76832,76833,317, 356, 412, 5174, 317, 317, 76828,4984,
+ 2156, 76829,76830,76831,427, 76834,76835,5689, 5616, 4564, 76837,76838,76839,12846,76840,590, 76842,14174,5173, 2156, 317, 317, 490, 18700,76841,317, 6425,
76843,76844,9325, 1347, 8544, 1347, 76846,76847,76850,490, 76852,76854,76856,332, 6179, 345, 76848,76849,20382,25978,76851,317, 5908, 596, 317, 76853,15058,
343, 66607,1160, 317, 317, 370, 381, 317, 342, 76855,365, 317, 422, 76858,343, 76859,317, 76860,317, 489, 7916, 343, 317, 350, 76862,317, 76864,
- 317, 76863,373, 433, 76866,76867,76868,76869,76870,489, 332, 5447, 466, 25978,6904, 343, 514, 76872,76873,5033, 76876,76879,76881,76874,317, 76875,317,
- 317, 356, 388, 466, 317, 1044, 545, 490, 76877,76878,76880,380, 72882,76882,317, 332, 867, 2086, 2381, 1347, 22003,370, 76885,76886,76888,317, 6145,
+ 317, 76863,373, 433, 76866,76867,76868,76869,76870,489, 332, 5447, 466, 25978,6904, 343, 514, 76872,76873,5033, 76876,76879,76881,76874,317, 76875,317,
+ 317, 356, 388, 466, 317, 1044, 545, 490, 76877,76878,76880,380, 72882,76882,317, 332, 867, 2086, 2381, 1347, 22003,370, 76885,76886,76888,317, 6145,
351, 76887,317, 317, 363, 382, 5055, 427, 27101,5201, 50684,76890,76892,76893,18422,76900,65263,343, 317, 76891,363, 24756,2108, 343, 6402, 349, 76894,
- 76895,76896,76897,76898,76899,32544,10877,76902,76903,76906,1331, 76907,317, 76908,76913,76915,317, 76904,76905,6402, 554, 343, 76909,76910,427, 76911,317,
+ 76895,76896,76897,76898,76899,32544,10877,76902,76903,76906,1331, 76907,317, 76908,76913,76915,317, 76904,76905,6402, 554, 343, 76909,76910,427, 76911,317,
317, 6382, 76912,317, 4268, 76914,317, 343, 5611, 9038, 317, 317, 2260, 76918,317, 76920,76929,76930,76936,76939,317, 61919,2110, 76919,2078, 76921,14184,
76922,76923,76924,76925,76926,76927,76928,2272, 76931,76932,76933,317, 1020, 317, 5430, 317, 15163,317, 2413, 382, 76934,76935,7919, 2369, 76937,317, 76938,
- 2590, 76940,19284,2116, 317, 317, 317, 14399,1347, 5223, 76943,6195, 6648, 490, 350, 2593, 76945,76944,76946,4984, 6002, 363, 554, 16880,317, 390, 1347,
- 741, 343, 76948,2108, 76949,317, 76951,76956,76952,76954,76953,317, 9053, 356, 466, 317, 76955,76958,76960,76961,3854, 76959,365, 5439, 10820,76962,332,
+ 2590, 76940,19284,2116, 317, 317, 317, 14399,1347, 5223, 76943,6195, 6648, 490, 350, 2593, 76945,76944,76946,4984, 6002, 363, 554, 16880,317, 390, 1347,
+ 741, 343, 76948,2108, 76949,317, 76951,76956,76952,76954,76953,317, 9053, 356, 466, 317, 76955,76958,76960,76961,3854, 76959,365, 5439, 10820,76962,332,
76964,381, 427, 76963,5017, 370, 19665,350, 18387,490, 466, 76968,76969,3243, 76974,76975,76976,76980,76982,76983,10223,76986,76993,76999,77002,77005,77010,
- 77011,77017,77030,77034,77036,77037,6674, 317, 6674, 9914, 29164,76970,76971,11347,2537, 6402, 76972,76973,5483, 5481, 20516,76766,332, 317, 31580,76977,317,
- 351, 76978,5055, 4976, 363, 363, 76979,76981,13262,380, 5793, 12796,6278, 76984,11146,5033, 971, 363, 317, 76985,317, 16416,1160, 76987,76988,2142, 317,
- 76989,76991,12704,36614,317, 317, 76990,9052, 317, 76992,317, 76994,11245,2022, 76998,357, 317, 7567, 5570, 76995,76996,4949, 370, 1345, 317, 76997,348,
- 77000,77001,317, 15685,339, 596, 4976, 317, 332, 67281,71534,317, 77003,381, 77004,466, 9139, 466, 35794,77006,77007,42234,317, 343, 28082,317, 5570,
+ 77011,77017,77030,77034,77036,77037,6674, 317, 6674, 9914, 29164,76970,76971,11347,2537, 6402, 76972,76973,5483, 5481, 20516,76766,332, 317, 31580,76977,317,
+ 351, 76978,5055, 4976, 363, 363, 76979,76981,13262,380, 5793, 12796,6278, 76984,11146,5033, 971, 363, 317, 76985,317, 16416,1160, 76987,76988,2142, 317,
+ 76989,76991,12704,36614,317, 317, 76990,9052, 317, 76992,317, 76994,11245,2022, 76998,357, 317, 7567, 5570, 76995,76996,4949, 370, 1345, 317, 76997,348,
+ 77000,77001,317, 15685,339, 596, 4976, 317, 332, 67281,71534,317, 77003,381, 77004,466, 9139, 466, 35794,77006,77007,42234,317, 343, 28082,317, 5570,
77008,77009,33201,317, 317, 14974,363, 501, 350, 13679,67301,317, 362, 77012,77014,77016,317, 77013,77015,317, 15646,55270,317, 317, 77018,77026,77027,
- 50002,77028,77029,77019,77021,9914, 77020,77022,466, 317, 317, 317, 9624, 20702,77023,77024,2060, 77025,6195, 2510, 11921,317, 741, 362, 350, 317, 317,
- 77031,4965, 77033,77032,11442,77035,5105, 9170, 317, 9878, 380, 350, 12988,8301, 9450, 77039,77041,77042,77043,77045,77047,77048,77053,77056,77062,36647,343,
+ 50002,77028,77029,77019,77021,9914, 77020,77022,466, 317, 317, 317, 9624, 20702,77023,77024,2060, 77025,6195, 2510, 11921,317, 741, 362, 350, 317, 317,
+ 77031,4965, 77033,77032,11442,77035,5105, 9170, 317, 9878, 380, 350, 12988,8301, 9450, 77039,77041,77042,77043,77045,77047,77048,77053,77056,77062,36647,343,
77064,6471, 1109, 77065,77067,77072,77076,77077,332, 77078,77088,350, 77090,77046,317, 1345, 17039,317, 77049,317, 11236,77050,2631, 317, 317, 72585,77051,
- 3999, 77052,362, 1160, 77054,8096, 77055,13638,317, 317, 590, 17926,317, 345, 317, 2142, 316, 77057,15637,28190,77059,362, 332, 317, 77060,77061,317,
+ 3999, 77052,362, 1160, 77054,8096, 77055,13638,317, 317, 590, 17926,317, 345, 317, 2142, 316, 77057,15637,28190,77059,362, 332, 317, 77060,77061,317,
317, 77058,596, 317, 35591,384, 22636,317, 77063,363, 385, 2156, 501, 2142, 381, 317, 77066,33567,4980, 384, 317, 363, 77068,317, 77070,77069,10223,
- 12943,428, 77071,8047, 317, 317, 317, 317, 42456,77073,44506,351, 27623,77075,3987, 332, 10439,77074,356, 466, 2271, 1160, 10619,317, 11235,10946,5033,
- 317, 5033, 77079,46173,77080,77082,36541,8296, 77081,350, 317, 317, 77083,466, 343, 77084,317, 77086,317, 637, 77085,77087,77089,317, 317, 75678,317,
- 428, 5033, 350, 363, 5205, 77092,77093,356, 77095,28250,343, 77096,77098,77099,381, 77104,6817, 77094,16534,317, 351, 77097,8296, 77100,489, 75275,1020,
+ 12943,428, 77071,8047, 317, 317, 317, 317, 42456,77073,44506,351, 27623,77075,3987, 332, 10439,77074,356, 466, 2271, 1160, 10619,317, 11235,10946,5033,
+ 317, 5033, 77079,46173,77080,77082,36541,8296, 77081,350, 317, 317, 77083,466, 343, 77084,317, 77086,317, 637, 77085,77087,77089,317, 317, 75678,317,
+ 428, 5033, 350, 363, 5205, 77092,77093,356, 77095,28250,343, 77096,77098,77099,381, 77104,6817, 77094,16534,317, 351, 77097,8296, 77100,489, 75275,1020,
77103,10506,77101,77102,77105,501, 27851,77107,77108,77110,77116,77124,10596,77128,77135,2553, 77139,77144,77148,77167,9702, 317, 63175,46046,77111,317, 77112,
2058, 317, 332, 61280,26249,426, 8177, 77113,77114,77115,77117,6108, 77118,11245,77120,77121,77122,342, 77119,490, 57768,365, 77123,558, 77125,382, 77126,
7095, 466, 77127,466, 77129,77131,77132,7225, 46344,77134,77130,77133,2058, 2291, 6763, 77136,77137,77138,77140,2058, 317, 77141,317, 77142,77143,77145,77146,
77147,77149,77150,490, 363, 77153,490, 317, 365, 77155,77159,77162,33429,77164,39719,6808, 1943, 365, 46230,77151,77152,490, 2110, 490, 77154,77156,77157,
77158,29531,490, 77160,317, 2004, 77161,77163,27279,77165,77166,2976, 77168,77169,77170,427, 8440, 77172,77173,77174,317, 77175,77176,77179,77184,77198,77208,
77210,77214,77218,45793,77224,77227,77231,77236,77247,77261,77281,77284,965, 77294,77372,77383,46513,77401,77404,77406,77407,77177,77178,317, 317, 20380,77180,
- 20312,966, 404, 77183,404, 77181,77182,590, 77185,77186,77187,4115, 77193,362, 77194,77195,317, 77196,5037, 317, 362, 317, 4943, 77188,13553,77189,501,
- 362, 4591, 317, 2210, 5037, 2156, 77190,77191,351, 77192,55812,28068,9422, 382, 77197,77199,77200,371, 77202,77203,317, 404, 450, 77206,77201,7088, 2142,
+ 20312,966, 404, 77183,404, 77181,77182,590, 77185,77186,77187,4115, 77193,362, 77194,77195,317, 77196,5037, 317, 362, 317, 4943, 77188,13553,77189,501,
+ 362, 4591, 317, 2210, 5037, 2156, 77190,77191,351, 77192,55812,28068,9422, 382, 77197,77199,77200,371, 77202,77203,317, 404, 450, 77206,77201,7088, 2142,
317, 362, 55265,317, 38927,77204,466, 10946,317, 77205,381, 317, 77207,11347,77209,20149,362, 7419, 53552,32500,7091, 7785, 77211,317, 7911, 77212,77213,
- 18454,77215,3987, 317, 77217,370, 77216,363, 317, 1160, 1325, 363, 317, 2261, 67687,2381, 77219,77222,362, 317, 3987, 77220,16651,2156, 77221,50810,404,
+ 18454,77215,3987, 317, 77217,370, 77216,363, 317, 1160, 1325, 363, 317, 2261, 67687,2381, 77219,77222,362, 317, 3987, 77220,16651,2156, 77221,50810,404,
77223,1065, 1065, 317, 77225,20779,77226,77228,77230,29143,965, 77229,612, 1193, 396, 18138,9170, 77232,345, 77235,77233,77234,77237,2081, 1345, 77240,77241,
77242,362, 77246,317, 365, 343, 77238,77239,590, 332, 317, 9473, 1109, 77243,12142,77244,77245,317, 5908, 2171, 317, 351, 317, 4980, 345, 317, 55131,
77248,77249,9557, 77252,1444, 76218,77253,4591, 77256,2419, 77258,1588, 43914,7565, 345, 363, 77250,77251,3999, 317, 317, 317, 28479,3646, 77254,3079, 71386,
- 77255,77257,1347, 2510, 77259,317, 317, 77260,345, 77262,70289,12971,77263,77264,317, 77272,77275,77276,363, 77280,373, 388, 317, 317, 379, 1347, 317,
- 317, 77265,77268,381, 6340, 77270,77266,343, 77267,77269,77271,77273,10878,77274,9666, 317, 317, 7227, 363, 64564,317, 317, 77277,77279,317, 77278,317,
+ 77255,77257,1347, 2510, 77259,317, 317, 77260,345, 77262,70289,12971,77263,77264,317, 77272,77275,77276,363, 77280,373, 388, 317, 317, 379, 1347, 317,
+ 317, 77265,77268,381, 6340, 77270,77266,343, 77267,77269,77271,77273,10878,77274,9666, 317, 317, 7227, 363, 64564,317, 317, 77277,77279,317, 77278,317,
466, 2184, 317, 363, 543, 490, 5661, 77282,77283,382, 2322, 68987,317, 77285,2142, 16934,77290,77291,77292,317, 77286,317, 317, 77287,33530,77288,77289,
- 77293,9095, 28214,77295,77297,77308,77310,77311,6600, 77312,77314,490, 77316,77323,77325,77327,77352,77353,77356,77357,77364,77365,12756,77370,26034,77371,7350,
+ 77293,9095, 28214,77295,77297,77308,77310,77311,6600, 77312,77314,490, 77316,77323,77325,77327,77352,77353,77356,77357,77364,77365,12756,77370,26034,77371,7350,
77296,365, 317, 3869, 317, 2317, 77298,77299,77300,77302,7839, 77307,49165,1347, 317, 7941, 317, 5037, 31484,77301,6546, 741, 317, 317, 317, 928, 77303,
- 77304,5419, 77305,8049, 10246,6923, 74899,27564,317, 317, 49685,382, 77306,68592,6294, 317, 77309,317, 9301, 2272, 4980, 317, 77313,362, 381, 381, 1881,
+ 77304,5419, 77305,8049, 10246,6923, 74899,27564,317, 317, 49685,382, 77306,68592,6294, 317, 77309,317, 9301, 2272, 4980, 317, 77313,362, 381, 381, 1881,
363, 390, 5328, 371, 77315,3726, 1799, 77317,77318,77320,343, 77321,12803,317, 1347, 317, 3967, 77319,317, 16704,46534,343, 370, 77322,317, 370, 77324,
47396,390, 5538, 363, 77326,3361, 8083, 401, 77328,77339,77340,12151,5840, 77342,77343,77344,2022, 2022, 77346,350, 77347,77348,6601, 77349,77350,317, 77329,
- 77330,77331,77332,77333,77334,77335,77336,77337,77338,4280, 343, 5281, 38910,7590, 428, 426, 45083,77341,16380,380, 317, 351, 380, 6420, 317, 317, 427,
- 385, 351, 1992, 77345,396, 4268, 2509, 317, 6674, 20015,77351,2272, 370, 317, 24185,5624, 5836, 363, 77354,77355,77358,77359,317, 77360,380, 16131,9720,
- 317, 22350,20276,8419, 380, 317, 77361,77362,77363,317, 317, 35321,77366,77368,77369,77367,317, 317, 7073, 10487,317, 15510,370, 317, 371, 7657, 317,
- 77373,77378,7871, 77379,350, 77381,77382,3726, 77374,16186,317, 2381, 77377,57713,1345, 77375,77376,2110, 741, 6481, 351, 343, 5836, 317, 77380,317, 558,
- 1347, 74780,370, 466, 343, 384, 77384,77388,8023, 77391,332, 77393,77396,77397,77400,11308,317, 77385,317, 77386,77387,77389,317, 317, 77390,77392,357,
- 370, 5120, 77394,356, 77395,317, 3429, 1347, 363, 77398,317, 77399,363, 317, 13387,2381, 1481, 77402,77403,55417,317, 7055, 77405,8948, 362, 2381, 317,
+ 77330,77331,77332,77333,77334,77335,77336,77337,77338,4280, 343, 5281, 38910,7590, 428, 426, 45083,77341,16380,380, 317, 351, 380, 6420, 317, 317, 427,
+ 385, 351, 1992, 77345,396, 4268, 2509, 317, 6674, 20015,77351,2272, 370, 317, 24185,5624, 5836, 363, 77354,77355,77358,77359,317, 77360,380, 16131,9720,
+ 317, 22350,20276,8419, 380, 317, 77361,77362,77363,317, 317, 35321,77366,77368,77369,77367,317, 317, 7073, 10487,317, 15510,370, 317, 371, 7657, 317,
+ 77373,77378,7871, 77379,350, 77381,77382,3726, 77374,16186,317, 2381, 77377,57713,1345, 77375,77376,2110, 741, 6481, 351, 343, 5836, 317, 77380,317, 558,
+ 1347, 74780,370, 466, 343, 384, 77384,77388,8023, 77391,332, 77393,77396,77397,77400,11308,317, 77385,317, 77386,77387,77389,317, 317, 77390,77392,357,
+ 370, 5120, 77394,356, 77395,317, 3429, 1347, 363, 77398,317, 77399,363, 317, 13387,2381, 1481, 77402,77403,55417,317, 7055, 77405,8948, 362, 2381, 317,
16917,13753,490, 77408,332, 18084,2603, 77410,32759,77412,1108, 77416,56278,77419,77411,77413,77414,77415,77417,77418,317, 77420,77421,77422,77424,77426,77439,
- 77461,77481,20516,77425,74827,2074, 317, 1347, 77427,77428,77429,5727, 77432,77435,77438,501, 33170,8035, 317, 77430,2222, 317, 77431,12017,6195, 317, 343,
+ 77461,77481,20516,77425,74827,2074, 317, 1347, 77427,77428,77429,5727, 77432,77435,77438,501, 33170,8035, 317, 77430,2222, 317, 77431,12017,6195, 317, 343,
343, 317, 5991, 466, 317, 1160, 545, 450, 77433,77434,77436,317, 28691,77437,317, 1018, 363, 77440,77442,31015,2024, 77443,77444,77447,77452,77453,77457,
- 317, 77460,6996, 3987, 77441,24291,3987, 317, 530, 77445,370, 77446,427, 24356,554, 4965, 23819,466, 77448,5174, 77449,77450,77451,317, 2156, 12422,317,
- 317, 317, 317, 317, 565, 6195, 77454,77455,317, 77456,466, 317, 1347, 77458,317, 317, 37649,77459,42505,466, 317, 5087, 2298, 77462,9198, 18639,4982,
- 77474,77475,4757, 77477,77478,338, 971, 77479,77480,77463,77464,77465,77466,77467,77468,77469,77470,77471,77472,77473,3039, 2063, 77476,370, 382, 27199,370,
+ 317, 77460,6996, 3987, 77441,24291,3987, 317, 530, 77445,370, 77446,427, 24356,554, 4965, 23819,466, 77448,5174, 77449,77450,77451,317, 2156, 12422,317,
+ 317, 317, 317, 317, 565, 6195, 77454,77455,317, 77456,466, 317, 1347, 77458,317, 317, 37649,77459,42505,466, 317, 5087, 2298, 77462,9198, 18639,4982,
+ 77474,77475,4757, 77477,77478,338, 971, 77479,77480,77463,77464,77465,77466,77467,77468,77469,77470,77471,77472,77473,3039, 2063, 77476,370, 382, 27199,370,
2060, 2680, 15334,2272, 2024, 490, 11236,77484,77486,77488,77490,77491,77493,77494,77495,77496,77502,77507,363, 77513,77524,77537,2298, 77542,77543,553, 77485,
3505, 4949, 77487,4965, 332, 77489,367, 5055, 450, 3361, 14695,77492,1459, 12721,351, 1351, 382, 1459, 1347, 11346,77497,77498,362, 77501,12302,536, 77499,
- 1266, 317, 317, 77500,317, 317, 317, 37040,317, 317, 7214, 11347,77503,77504,317, 77505,77506,1331, 427, 77508,77509,77511,77512,363, 10538,77510,9447,
+ 1266, 317, 317, 77500,317, 317, 317, 37040,317, 317, 7214, 11347,77503,77504,317, 77505,77506,1331, 427, 77508,77509,77511,77512,363, 10538,77510,9447,
17421,11959,10854,317, 12417,77514,77519,77521,77523,621, 16603,317, 50854,77515,77518,5763, 77516,77517,15346,5736, 77520,345, 356, 317, 20684,9313, 77522,
- 382, 381, 48074,52622,77525,77529,77530,77531,77532,77534,345, 77536,77526,343, 77527,1347, 77528,72585,317, 433, 5483, 7095, 380, 317, 21067,363, 317,
- 1243, 363, 77533,19665,2271, 428, 77535,46111,433, 4738, 490, 77538,77539,77541,77540,511, 345, 77544,77546,77547,77549,365, 971, 77548,382, 53920,1588,
+ 382, 381, 48074,52622,77525,77529,77530,77531,77532,77534,345, 77536,77526,343, 77527,1347, 77528,72585,317, 433, 5483, 7095, 380, 317, 21067,363, 317,
+ 1243, 363, 77533,19665,2271, 428, 77535,46111,433, 4738, 490, 77538,77539,77541,77540,511, 345, 77544,77546,77547,77549,365, 971, 77548,382, 53920,1588,
77550,77560,77561,77565,77568,77596,77605,77613,77625,77642,77652,77677,77683,77695,77711,77762,284, 466, 78609,78687,78748,78791,78837,78844,78851,78854,78858,
78862,77551,4797, 77552,77556,77553,77554,77555,77557,317, 11073,317, 77558,77559,345, 1522, 77562,77563,77564,1060, 77566,380, 345, 77567,621, 77569,77570,
77572,77574,77581,77586,77591,370, 77592,77593,77571,13559,356, 514, 77573,596, 77575,11702,2108, 77576,317, 77577,7035, 77578,77579,7834, 317, 77580,77582,
- 77583,77584,77585,19065,77587,77588,77589,77590,77594,77595,17215,6581, 345, 77597,77600,317, 77602,490, 2366, 77604,77598,357, 77599,317, 317, 77601,1660,
- 7704, 490, 8403, 8926, 77603,9624, 77606,77607,77608,77610,77611,2022, 6450, 18406,17375,1459, 11408,380, 365, 1109, 77609,363, 345, 57654,6108, 77612,7095,
+ 77583,77584,77585,19065,77587,77588,77589,77590,77594,77595,17215,6581, 345, 77597,77600,317, 77602,490, 2366, 77604,77598,357, 77599,317, 317, 77601,1660,
+ 7704, 490, 8403, 8926, 77603,9624, 77606,77607,77608,77610,77611,2022, 6450, 18406,17375,1459, 11408,380, 365, 1109, 77609,363, 345, 57654,6108, 77612,7095,
2317, 77614,77615,77618,490, 490, 6834, 77619,77621,77622,332, 20814,77623,77624,77616,77617,317, 77620,11485,2110, 13386,10625,317, 22223,13559,317, 77626,
- 77628,77629,77633,77639,1347, 20814,31739,6222, 77627,27913,5890, 551, 77630,77631,77632,77634,77638,77635,77636,77637,6778, 77640,607, 77641,77643,77647,2381,
- 77649,77650,77651,401, 351, 77644,2261, 77645,77646,317, 15059,343, 77648,439, 22782,605, 427, 317, 345, 77653,343, 77656,77658,77663,77665,77666,1030,
+ 77628,77629,77633,77639,1347, 20814,31739,6222, 77627,27913,5890, 551, 77630,77631,77632,77634,77638,77635,77636,77637,6778, 77640,607, 77641,77643,77647,2381,
+ 77649,77650,77651,401, 351, 77644,2261, 77645,77646,317, 15059,343, 77648,439, 22782,605, 427, 317, 345, 77653,343, 77656,77658,77663,77665,77666,1030,
390, 77670,77672,77676,2355, 17471,77654,53552,77655,77657,77659,77662,14266,77660,77661,77664,5055, 77667,77669,5662, 77668,317, 317, 65100,10946,27614,77671,
6203, 77673,1526, 77674,77675,77678,2015, 24836,77680,2177, 77682,16093,381, 1108, 339, 77679,77681,5570, 77684,77687,77688,17216,1479, 18855,77693,3658, 77685,
- 77686,1000, 351, 1020, 433, 77689,77690,317, 77691,77692,77694,18333,77696,77700,5840, 77701,77702,77706,1044, 77710,77697,3611, 77698,17196,77699,390, 390,
+ 77686,1000, 351, 1020, 433, 77689,77690,317, 77691,77692,77694,18333,77696,77700,5840, 77701,77702,77706,1044, 77710,77697,3611, 77698,17196,77699,390, 390,
317, 332, 77703,77704,77705,77707,7368, 539, 77708,77709,77712,77715,77717,38893,77719,490, 77720,22945,77725,77731,7481, 426, 77732,77734,77736,77753,77755,
- 77758,77759,77713,35170,356, 1109, 11198,13638,77714,4949, 77716,77718,317, 17249,490, 9492, 317, 5217, 18921,9214, 77721,77722,77723,77724,2078, 317, 317,
- 5120, 883, 390, 345, 343, 77726,77727,5662, 77729,8178, 77730,427, 370, 77728,363, 12696,345, 370, 77733,1601, 8264, 5891, 15512,1071, 77735,31977,2626,
+ 77758,77759,77713,35170,356, 1109, 11198,13638,77714,4949, 77716,77718,317, 17249,490, 9492, 317, 5217, 18921,9214, 77721,77722,77723,77724,2078, 317, 317,
+ 5120, 883, 390, 345, 343, 77726,77727,5662, 77729,8178, 77730,427, 370, 77728,363, 12696,345, 370, 77733,1601, 8264, 5891, 15512,1071, 77735,31977,2626,
77737,77741,77752,77738,77739,317, 77740,5477, 5742, 77742,7225, 363, 6228, 3387, 2301, 77743,77747,2503, 77750,77744,401, 51029,77745,77746,2272, 77748,77749,
- 439, 77751,316, 77754,356, 590, 317, 77756,77757,77760,7506, 77761,317, 26935,77763,77767,77779,28270,77780,77781,77782,77784,77786,12796,77789,77793,345,
- 490, 490, 365, 77764,77765,345, 6923, 77766,77768,317, 77769,77771,77773,77776,390, 2219, 4943, 77770,1347, 24229,77772,77774,77775,317, 77777,77778,317,
- 4984, 471, 317, 490, 317, 390, 6900, 427, 33713,317, 43285,77783,77785,356, 11884,77787,351, 1030, 77788,317, 317, 77790,18042,2291, 77792,77791,2116,
+ 439, 77751,316, 77754,356, 590, 317, 77756,77757,77760,7506, 77761,317, 26935,77763,77767,77779,28270,77780,77781,77782,77784,77786,12796,77789,77793,345,
+ 490, 490, 365, 77764,77765,345, 6923, 77766,77768,317, 77769,77771,77773,77776,390, 2219, 4943, 77770,1347, 24229,77772,77774,77775,317, 77777,77778,317,
+ 4984, 471, 317, 490, 317, 390, 6900, 427, 33713,317, 43285,77783,77785,356, 11884,77787,351, 1030, 77788,317, 317, 77790,18042,2291, 77792,77791,2116,
66820,7450, 11089,77794,77796,77866,77892,77987,78138,78184,78222,78236,78247,78325,78329,78334,78345,78364,78375,78396,78443,78450,78486,78559,78583,78585,78591,
78605,78607,77795,77797,77802,77818,77824,365, 77828,77829,77830,77833,77840,77847,77849,77852,77857,77862,14062,77798,343, 8647, 77800,77799,1526, 77801,77803,
77813,77804,77805,77809,77811,77806,54242,77807,77808,77810,77812,77814,77815,77816,77817,5687, 32683,77819,77822,77820,77821,77823,77825,6309, 63065,26409,77826,
- 77827,12262,1526, 27851,12761,77831,359, 317, 77832,412, 77834,53402,77835,77836,77837,77838,77839,77841,77844,77842,77843,77845,77846,29624,3649, 77848,317,
+ 77827,12262,1526, 27851,12761,77831,359, 317, 77832,412, 77834,53402,77835,77836,77837,77838,77839,77841,77844,77842,77843,77845,77846,29624,3649, 77848,317,
356, 2247, 77850,42347,77851,32769,6308, 2601, 77853,77854,77855,77856,5093, 41159,5337, 2601, 77858,77859,77860,77861,77863,77865,77864,77867,22499,77869,77880,
77881,77883,77885,77890,77868,77870,32768,77872,77876,41036,77871,77873,77874,77875,77877,77878,77879,9482, 1033, 9141, 356, 77882,363, 77884,77886,77887,77889,
2102, 77888,3505, 3243, 77891,77893,77895,77907,77921,317, 77929,77932,77980,355, 77983,317, 13307,2590, 77894,511, 317, 56401,77896,77898,77897,77897,77899,
77903,77900,77901,77902,77904,77905,77906,77908,1524, 6308, 77909,77911,77914,77910,77912,77913,466, 77915,1526, 77916,77917,77918,77919,77920,380, 77922,77926,
77923,77924,77925,77927,77928,77930,77931,382, 5556, 24567,12696,32606,2108, 9876, 77933,77935,77945,77973,77976,77979,20766,77934,77936,77938,77939,77937,65827,
34440,77940,77941,77942,2601, 62515,22912,77943,77944,77946,77947,77950,77934,12760,77954,77962,77970,77948,77949,77951,77952,77953,77955,77958,77959,77956,77957,
- 24938,18166,77960,37675,77961,13154,77963,77964,77965,77967,77966,77968,77969,77971,77972,1526, 317, 77974,77975,317, 77977,77978,2601, 21188,24937,13307,390,
+ 24938,18166,77960,37675,77961,13154,77963,77964,77965,77967,77966,77968,77969,77971,77972,1526, 317, 77974,77975,317, 77977,77978,2601, 21188,24937,13307,390,
77981,77982,2601, 2600, 396, 77984,317, 77985,77986,77988,77990,78109,343, 78128,317, 78133,78135,511, 77989,1526, 54242,356, 77991,77995,77997,78000,78001,
- 78098,78102,78106,77992,77994,24600,77993,77996,6308, 2601, 5337, 77998,77999,317, 78002,78006,78008,78017,78025,78029,78030,78037,78038,78040,78043,78045,9289,
+ 78098,78102,78106,77992,77994,24600,77993,77996,6308, 2601, 5337, 77998,77999,317, 78002,78006,78008,78017,78025,78029,78030,78037,78038,78040,78043,78045,9289,
78047,78061,78067,78081,78086,78087,78089,343, 78003,427, 78004,78005,78007,476, 2732, 78009,78012,78015,11702,78016,78010,317, 78011,78013,78014,381, 68815,
- 350, 12840,33839,78018,78019,78024,343, 78020,78021,78022,78023,78026,78027,78028,12025,3869, 5336, 78031,78032,78033,345, 466, 343, 78034,78036,78035,7389,
+ 350, 12840,33839,78018,78019,78024,343, 78020,78021,78022,78023,78026,78027,78028,12025,3869, 5336, 78031,78032,78033,345, 466, 343, 78034,78036,78035,7389,
545, 77884,9878, 78039,24403,78041,511, 1347, 78042,5447, 1347, 466, 78044,78046,78048,78049,78054,77835,78056,356, 1915, 56791,5335, 78050,78051,78052,78053,
78055,78057,78058,78059,78060,2601, 78062,78063,78064,78065,78066,78068,78069,3311, 78072,78073,317, 78070,3649, 78071,78074,78077,78078,78080,29435,78075,13098,
- 78076,9482, 10877,317, 356, 5661, 78079,78082,78085,380, 78083,78084,10877,2156, 371, 317, 1526, 77926,78088,78090,78091,78092,466, 78094,78095,4965, 530,
+ 78076,9482, 10877,317, 356, 5661, 78079,78082,78085,380, 78083,78084,10877,2156, 371, 317, 1526, 77926,78088,78090,78091,78092,466, 78094,78095,4965, 530,
381, 78093,1325, 21013,78096,78097,7419, 466, 501, 58756,78099,78101,78100,61885,77993,78103,78104,78105,26135,1526, 78107,78108,78110,345, 78112,343, 77934,
78118,49012,78111,78113,78114,78115,78116,78117,78119,53287,78123,78120,65709,78122,78121,78124,78127,78125,78126,78129,466, 343, 78131,78130,78132,78134,26761,
317, 78136,78137,317, 78139,78143,78147,77934,78148,78153,317, 78163,78169,78172,78173,78176,78140,78142,1526, 78141,317, 6504, 317, 78144,78145,78146,78149,
- 78150,78151,78152,410, 356, 3854, 78154,511, 78157,78159,78155,29364,78156,78158,78160,78161,78162,78164,78165,78167,78166,78168,78170,78171,78174,78175,370,
+ 78150,78151,78152,410, 356, 3854, 78154,511, 78157,78159,78155,29364,78156,78158,78160,78161,78162,78164,78165,78167,78166,78168,78170,78171,78174,78175,370,
378, 78177,78178,2247, 78179,78183,78180,78182,78181,78185,3557, 78198,78199,78201,78205,490, 78214,78218,78186,78188,78191,78194,78196,1526, 511, 6441, 78187,
78189,78190,78192,78193,78195,78197,41036,41489,41059,8519, 25393,78200,50374,317, 1526, 12761,78202,78204,78203,78206,5272, 78207,5336, 1526, 78208,78209,78213,
78210,78211,78212,410, 363, 466, 78215,78216,78217,78219,78221,13307,78220,78223,78224,317, 78227,24200,78230,78235,39297,2007, 357, 490, 78225,6594, 78226,
362, 439, 22114,78228,78229,1526, 367, 1526, 78231,78232,78234,78233,62602,5337, 6275, 78237,351, 78239,78244,78246,1999, 356, 78238,5556, 78240,5337, 78241,
- 78242,5164, 356, 1526, 78243,78245,12761,1526, 370, 24400,78248,10489,78249,78254,78260,2134, 78265,78269,78281,78301,20351,78307,2081, 78308,78309,78313,317,
- 78250,78251,317, 78252,78253,18104,431, 381, 317, 30713,343, 2146, 27452,45872,363, 1325, 78255,57937,1347, 78256,78257,78258,78259,78261,78262,2184, 5488,
- 5464, 317, 78263,78264,356, 397, 370, 317, 78266,541, 78267,78268,78270,78273,78271,78272,78274,78276,78277,78275,1526, 78278,3649, 78279,78280,356, 434,
+ 78242,5164, 356, 1526, 78243,78245,12761,1526, 370, 24400,78248,10489,78249,78254,78260,2134, 78265,78269,78281,78301,20351,78307,2081, 78308,78309,78313,317,
+ 78250,78251,317, 78252,78253,18104,431, 381, 317, 30713,343, 2146, 27452,45872,363, 1325, 78255,57937,1347, 78256,78257,78258,78259,78261,78262,2184, 5488,
+ 5464, 317, 78263,78264,356, 397, 370, 317, 78266,541, 78267,78268,78270,78273,78271,78272,78274,78276,78277,78275,1526, 78278,3649, 78279,78280,356, 434,
78282,78283,78284,62523,78288,78290,78299,63065,77951,78285,78287,78286,78289,2247, 78291,78292,78296,78297,78293,78294,78295,2369, 410, 1526, 77949,29362,78298,
2601, 78300,78302,317, 317, 78303,78304,5840, 5037, 5483, 5250, 18587,78305,78306,316, 363, 53322,345, 78310,78312,466, 317, 317, 317, 78311,317, 39676,
- 317, 8122, 317, 78314,78315,17358,317, 30553,78316,78317,78318,78321,78322,317, 78319,78320,370, 317, 21393,370, 2261, 32010,78323,78324,30882,1078, 317,
+ 317, 8122, 317, 78314,78315,17358,317, 30553,78316,78317,78318,78321,78322,317, 78319,78320,370, 317, 21393,370, 2261, 32010,78323,78324,30882,1078, 317,
1588, 9917, 317, 28220,78326,78327,78328,78258,370, 78330,439, 78331,317, 78332,78333,410, 8553, 6420, 78335,78337,78339,78343,2316, 317, 356, 78336,78338,
- 345, 1526, 7857, 29194,78340,78342,50634,1526, 2601, 317, 78341,410, 5324, 10238,78344,77993,78346,78350,78356,78362,343, 78347,78349,24499,31123,78348,1526,
+ 345, 1526, 7857, 29194,78340,78342,50634,1526, 2601, 317, 78341,410, 5324, 10238,78344,77993,78346,78350,78356,78362,343, 78347,78349,24499,31123,78348,1526,
1526, 24570,78351,317, 78352,78353,78354,78355,317, 78357,78360,1526, 78358,78359,78361,24568,78363,1526, 78365,78367,64205,78373,29364,1526, 2108, 78366,78368,
5337, 78371,5400, 78369,78370,78372,5441, 356, 78374,78376,78383,339, 78386,78389,78390,78377,78381,78378,78379,78380,78382,41271,380, 78384,78385,78387,78388,
6308, 65709,12761,78391,503, 78393,78392,78394,78395,78397,78405,78408,78417,78422,78441,24499,78398,78399,78400,78403,1526, 317, 2601, 1526, 78401,29515,78402,
@@ -12262,49 +12257,49 @@ static const unsigned int ChildLocs[185261] =
574, 78275,78446,78447,78448,78449,78451,78454,78480,78484,78485,490, 1526, 1525, 78452,317, 78453,78455,78460,26135,78465,363, 78466,78468,78470,78472,78473,
78477,78478,41404,78456,78457,78458,78459,78461,78462,5337, 78463,78464,1526, 77993,25392,22834,2601, 78467,42036,9141, 12656,78469,78471,16316,78064,78378,78300,
78474,78475,78476,26135,63065,78479,343, 78481,78482,78483,76585,5336, 78487,78493,78503,77887,78510,78220,78512,78519,78531,78537,78558,59447,343, 356, 78488,
- 78489,447, 6305, 53623,78490,24600,78491,78492,60260,1526, 511, 78494,78495,78498,78501,78496,78497,78499,78500,28013,78156,78502,78504,62523,78507,78508,317,
+ 78489,447, 6305, 53623,78490,24600,78491,78492,60260,1526, 511, 78494,78495,78498,78501,78496,78497,78499,78500,28013,78156,78502,78504,62523,78507,78508,317,
78509,5487, 78505,5363, 78506,1526, 418, 317, 1453, 78511,77888,9078, 1526, 78513,78515,439, 317, 78514,1526, 78516,78517,78518,78520,78523,5379, 78359,78521,
24569,78522,78524,501, 78525,78526,78527,78528,78529,78530,78532,32869,78533,78534,384, 373, 29435,1526, 22912,78535,78536,78538,78542,78104,382, 78546,78550,
- 78554,78539,78541,78540,78543,78544,78545,78547,78549,78548,317, 78551,22912,78552,78553,78555,78557,78556,78560,78562,78570,78572,78573,78577,32683,362, 1526,
+ 78554,78539,78541,78540,78543,78544,78545,78547,78549,78548,317, 78551,22912,78552,78553,78555,78557,78556,78560,78562,78570,78572,78573,78577,32683,362, 1526,
78561,53131,24938,78563,2601, 63339,78564,78565,362, 78566,31952,78569,11191,78567,78568,2193, 78571,370, 7727, 317, 17745,511, 13307,356, 78574,550, 78575,
78576,42202,356, 78578,21188,1526, 78580,42366,6308, 78579,317, 78581,78582,317, 78584,410, 356, 9313, 78586,78588,24938,78374,78587,50374,2317, 22809,78589,
- 24569,78590,78592,78594,78596,78602,78604,2601, 78593,5093, 13954,54241,317, 317, 78595,13631,317, 45202,78597,78601,343, 30532,78598,78599,78600,78603,439,
+ 24569,78590,78592,78594,78596,78602,78604,2601, 78593,5093, 13954,54241,317, 317, 78595,13631,317, 45202,78597,78601,343, 30532,78598,78599,78600,78603,439,
24938,2355, 28262,33572,78606,78608,488, 78610,78613,78622,78625,78628,78633,78635,78636,78638,78644,29108,2679, 78645,78649,78651,78652,78653,78664,78668,78674,
- 78682,78684,78686,78611,78612,78614,78618,78621,78615,78616,78617,78619,78620,2631, 78623,78624,78626,32769,78627,371, 2108, 41584,78629,553, 5841, 78632,553,
+ 78682,78684,78686,78611,78612,78614,78618,78621,78615,78616,78617,78619,78620,2631, 78623,78624,78626,32769,78627,371, 2108, 41584,78629,553, 5841, 78632,553,
78630,78631,6696, 1060, 12226,78634,317, 6598, 8254, 78637,39495,78639,428, 78641,78640,356, 396, 78642,11613,78643,5619, 350, 11229,78646,64321,78647,78648,
- 78650,317, 2405, 12593,13066,317, 78654,78660,4952, 6388, 317, 49205,78655,78656,9590, 48917,12417,393, 78657,381, 78658,78659,78661,370, 78662,78663,427,
- 392, 2601, 78665,78666,78667,22561,27846,350, 351, 8567, 2381, 6195, 78669,78670,78671,3311, 362, 363, 78672,2212, 511, 605, 381, 351, 78673,6081, 5492,
- 1033, 510, 4268, 343, 78675,78676,8695, 78679,530, 2146, 11783,78681,78677,11279,78678,6696, 434, 78680,476, 7072, 78683,78685,39866,439, 380, 42216,1912,
- 9388, 78688,78693,78698,78699,78701,350, 78705,16860,78707,2134, 78718,78720,14213,78722,345, 78725,78729,78733,78739,78741,78743,1020, 2291, 343, 78689,7242,
- 317, 78690,78691,490, 490, 490, 22828,565, 345, 380, 78692,78694,4984, 78697,317, 390, 1108, 363, 78695,317, 317, 401, 7785, 78696,317, 3284, 317,
+ 78650,317, 2405, 12593,13066,317, 78654,78660,4952, 6388, 317, 49205,78655,78656,9590, 48917,12417,393, 78657,381, 78658,78659,78661,370, 78662,78663,427,
+ 392, 2601, 78665,78666,78667,22561,27846,350, 351, 8567, 2381, 6195, 78669,78670,78671,3311, 362, 363, 78672,2212, 511, 605, 381, 351, 78673,6081, 5492,
+ 1033, 510, 4268, 343, 78675,78676,8695, 78679,530, 2146, 11783,78681,78677,11279,78678,6696, 434, 78680,476, 7072, 78683,78685,39866,439, 380, 42216,1912,
+ 9388, 78688,78693,78698,78699,78701,350, 78705,16860,78707,2134, 78718,78720,14213,78722,345, 78725,78729,78733,78739,78741,78743,1020, 2291, 343, 78689,7242,
+ 317, 78690,78691,490, 490, 490, 22828,565, 345, 380, 78692,78694,4984, 78697,317, 390, 1108, 363, 78695,317, 317, 401, 7785, 78696,317, 3284, 317,
371, 317, 317, 18937,7888, 489, 9680, 317, 78700,7657, 317, 317, 78702,18692,78703,317, 317, 78704,2272, 5104, 78706,317, 466, 57768,317, 380, 21864,
- 317, 78708,78709,8264, 2271, 78710,317, 78711,78713,317, 343, 78717,78712,317, 1347, 370, 19534,317, 78714,78715,78716,8613, 965, 78719,404, 317, 419,
- 748, 367, 363, 78721,9364, 345, 2067, 78723,11272,60932,317, 78724,78726,5159, 78727,78728,332, 2381, 490, 78730,78732,8095, 317, 78731,7488, 1358, 568,
- 78734,317, 35972,78737,9869, 371, 11858,78735,78736,317, 78738,317, 317, 6188, 5238, 9436, 78740,363, 317, 6551, 10809,317, 489, 78742,317, 934, 317,
+ 317, 78708,78709,8264, 2271, 78710,317, 78711,78713,317, 343, 78717,78712,317, 1347, 370, 19534,317, 78714,78715,78716,8613, 965, 78719,404, 317, 419,
+ 748, 367, 363, 78721,9364, 345, 2067, 78723,11272,60932,317, 78724,78726,5159, 78727,78728,332, 2381, 490, 78730,78732,8095, 317, 78731,7488, 1358, 568,
+ 78734,317, 35972,78737,9869, 371, 11858,78735,78736,317, 78738,317, 317, 6188, 5238, 9436, 78740,363, 317, 6551, 10809,317, 489, 78742,317, 934, 317,
78744,78745,2078, 78746,78747,428, 78749,78752,78753,1109, 78754,12966,19478,78764,78767,78768,317, 78769,78774,78776,78777,78778,78779,78780,78783,490, 78750,
- 71315,5457, 78751,490, 1358, 10734,14483,490, 317, 72680,1109, 1383, 651, 1205, 317, 1331, 15179,9866, 75678,78755,539, 78756,317, 78762,476, 362, 404,
+ 71315,5457, 78751,490, 1358, 10734,14483,490, 317, 72680,1109, 1383, 651, 1205, 317, 1331, 15179,9866, 75678,78755,539, 78756,317, 78762,476, 362, 404,
78757,739, 78758,9298, 78761,5872, 317, 317, 1112, 651, 78759,78760,356, 78763,78765,6013, 78766,317, 41304,8281, 381, 2844, 2004, 317, 317, 2067, 14455,
380, 78770,78771,5120, 2271, 78772,78773,633, 3742, 78775,317, 317, 317, 501, 317, 317, 5294, 317, 332, 317, 448, 317, 350, 317, 2178, 1160, 78781,
356, 78782,6081, 332, 8281, 5701, 78784,317, 78789,78785,78786,78787,78788,78790,317, 78792,1109, 78794,78797,78799,78803,78807,433, 2022, 9590, 343, 78812,
78814,78817,78821,78828,78829,78836,490, 78793,490, 490, 471, 78795,317, 78796,317, 2272, 317, 345, 78798,4965, 78800,362, 78801,78802,490, 78804,78805,
- 18588,78806,18588,28578,596, 317, 78808,78809,56125,78810,78811,78813,5406, 6594, 78815,78816,9981, 370, 350, 78818,78819,78820,78822,78825,2022, 78827,317,
+ 18588,78806,18588,28578,596, 317, 78808,78809,56125,78810,78811,78813,5406, 6594, 78815,78816,9981, 370, 350, 78818,78819,78820,78822,78825,2022, 78827,317,
78823,78824,390, 78826,5708, 1194, 356, 466, 370, 317, 371, 2033, 78830,78831,78832,78833,1065, 78834,78835,65900,363, 390, 4925, 380, 78838,2380, 78840,
- 78839,317, 78841,317, 78842,317, 78843,78845,78847,78848,10408,78846,78849,78850,78852,78853,11442,78855,78856,78857,78859,78860,78861,490, 6834, 77622,332,
+ 78839,317, 78841,317, 78842,317, 78843,78845,78847,78848,10408,78846,78849,78850,78852,78853,11442,78855,78856,78857,78859,78860,78861,490, 6834, 77622,332,
12616,6355, 78863,19493,78867,78868,78869,78870,78872,78864,78865,78866,317, 78871,317, 3284, 6789, 78873,23516,78875,78877,78880,1242, 286, 79492,79508,79511,
288, 79810,79897,79908,290, 80303,80322,80331,80364,4253, 291, 80600,80603,80609,80636,80645,80665,80696,80700,80707,78874,78876,78878,78879,78881,1084, 78882,
78883,78901,78911,78912,78918,78926,78927,78946,78955,78957,79039,287, 79352,79355,79359,79402,79454,79466,79479,349, 6975, 79483,79485,5120, 381, 490, 78884,
78889,371, 78895,357, 78898,2146, 78900,78885,867, 78887,5037, 78886,6278, 1325, 78888,382, 39628,78890,8419, 78893,78891,78892,5570, 317, 6937, 748, 78894,
- 5052, 1347, 741, 317, 78896,363, 2381, 78897,78899,2155, 30514,78902,78903,78904,78908,78909,78910,54100,1108, 12371,8446, 78905,317, 75403,78906,490, 345,
- 78907,78913,78916,78914,78915,78917,78919,9557, 78920,78922,33957,2117, 48254,317, 78924,32087,7689, 317, 78921,317, 78923,6940, 24943,78925,317, 370, 2571,
+ 5052, 1347, 741, 317, 78896,363, 2381, 78897,78899,2155, 30514,78902,78903,78904,78908,78909,78910,54100,1108, 12371,8446, 78905,317, 75403,78906,490, 345,
+ 78907,78913,78916,78914,78915,78917,78919,9557, 78920,78922,33957,2117, 48254,317, 78924,32087,7689, 317, 78921,317, 78923,6940, 24943,78925,317, 370, 2571,
381, 363, 54307,356, 343, 8626, 78928,78929,78933,317, 78936,78939,1030, 50221,1347, 78930,7910, 78931,13025,78932,78934,317, 332, 370, 317, 78935,78937,
- 78938,78940,362, 78945,6402, 78941,490, 78942,78943,317, 78944,10471,8906, 490, 1999, 78947,565, 78951,78953,78948,78949,78950,78952,78954,78956,2356, 380,
+ 78938,78940,362, 78945,6402, 78941,490, 78942,78943,317, 78944,10471,8906, 490, 1999, 78947,565, 78951,78953,78948,78949,78950,78952,78954,78956,2356, 380,
450, 396, 78958,78962,78964,78974,78992,78993,78994,78999,79001,79003,79021,79022,79024,79028,79029,79030,79032,79037,78959,78960,348, 5190, 15571,78961,14959,
- 332, 1100, 317, 332, 371, 12994,78963,490, 332, 363, 6450, 317, 78965,78969,78972,565, 501, 78966,78968,317, 78967,8926, 78970,78971,317, 33979,489,
- 78973,317, 78975,317, 490, 78978,78987,78990,78991,317, 78976,78977,78979,317, 371, 78981,78982,78985,317, 78980,317, 22918,39912,2310, 2380, 317, 317,
- 78983,363, 317, 78984,317, 1347, 6600, 490, 317, 345, 5328, 7657, 78986,2380, 1430, 12931,78988,490, 317, 317, 78989,1160, 317, 332, 317, 1347, 1109,
+ 332, 1100, 317, 332, 371, 12994,78963,490, 332, 363, 6450, 317, 78965,78969,78972,565, 501, 78966,78968,317, 78967,8926, 78970,78971,317, 33979,489,
+ 78973,317, 78975,317, 490, 78978,78987,78990,78991,317, 78976,78977,78979,317, 371, 78981,78982,78985,317, 78980,317, 22918,39912,2310, 2380, 317, 317,
+ 78983,363, 317, 78984,317, 1347, 6600, 490, 317, 345, 5328, 7657, 78986,2380, 1430, 12931,78988,490, 317, 317, 78989,1160, 317, 332, 317, 1347, 1109,
317, 343, 5238, 5687, 2683, 78995,78997,5028, 78998,24574,1358, 404, 427, 78996,23267,317, 397, 370, 317, 317, 351, 2271, 79000,9930, 9993, 317, 79002,
- 79004,79012,79018,79020,317, 79005,79007,79010,79011,317, 79006,79008,79009,5087, 596, 343, 29120,8096, 79013,317, 2086, 6294, 79014,79015,79016,317, 5792,
- 79017,317, 5570, 5033, 2322, 317, 2271, 317, 9624, 317, 490, 20535,79019,8254, 317, 317, 1358, 5862, 317, 5223, 3284, 2369, 345, 343, 79023,2317, 7523,
+ 79004,79012,79018,79020,317, 79005,79007,79010,79011,317, 79006,79008,79009,5087, 596, 343, 29120,8096, 79013,317, 2086, 6294, 79014,79015,79016,317, 5792,
+ 79017,317, 5570, 5033, 2322, 317, 2271, 317, 9624, 317, 490, 20535,79019,8254, 317, 317, 1358, 5862, 317, 5223, 3284, 2369, 345, 343, 79023,2317, 7523,
351, 343, 4591, 79025,79026,79027,10832,363, 345, 79031,17543,79033,79034,466, 317, 2155, 5167, 79035,317, 317, 79036,5570, 79038,317, 79040,79041,79042,
365, 317, 79043,317, 11648,79044,317, 6420, 8804, 317, 79045,79062,79081,79090,79175,79183,79186,79196,79212,79216,79224,79234,79241,79252,79261,79268,79271,
79274,79297,79304,79306,79326,79342,79348,2134, 79046,6904, 19617,79047,79050,79053,43881,79055,79059,489, 79061,14832,2566, 79048,79049,363, 28461,79051,79052,
@@ -12314,62 +12309,62 @@ static const unsigned int ChildLocs[185261] =
317, 79100,11952,79102,79103,79104,79106,79113,79114,79154,6831, 79157,79161,28525,25525,4949, 79098,79099,553, 2193, 79101,13611,11883,10580,7276, 12825,31105,
28789,79105,79107,79108,13687,79109,79112,4960, 28462,79110,79111,427, 7940, 79115,79116,9695, 363, 2024, 79118,79122,539, 78590,79126,79128,79130,11716,79134,
79137,79138,79144,79145,79148,79152,48427,79117,426, 28462,79119,79120,2290, 79121,439, 11884,79123,79125,11918,2261, 79124,3243, 396, 1383, 11884,412, 79127,
- 958, 3243, 317, 317, 362, 343, 79129,332, 79124,317, 79131,79132,79133,351, 6645, 79135,79136,380, 317, 380, 79139,79141,79142,79140,29036,380, 3869,
+ 958, 3243, 317, 317, 362, 343, 79129,332, 79124,317, 79131,79132,79133,351, 6645, 79135,79136,380, 317, 380, 79139,79141,79142,79140,29036,380, 3869,
514, 3869, 73971,79143,79146,79147,12696,3243, 9878, 79149,3505, 79151,371, 79150,343, 2261, 2181, 36190,343, 79153,11124,79155,79156,66197,79158,79159,79160,
- 501, 373, 351, 2261, 48204,1358, 8219, 381, 79162,79164,79163,350, 1999, 343, 1453, 412, 2024, 17001,317, 79166,404, 351, 350, 1999, 22212,79168,350,
- 363, 501, 317, 317, 79170,2134, 476, 12756,356, 565, 371, 14832,79172,350, 79173,317, 28707,371, 79092,1358, 343, 2067, 79176,79177,7624, 79178,317,
- 79179,79180,381, 79181,79182,8807, 384, 317, 371, 1481, 317, 345, 426, 79069,7384, 3076, 79184,79185,79187,79188,79191,79192,21552,79194,365, 79189,1998,
- 79190,2551, 566, 396, 390, 30126,79193,28476,317, 79195,15325,2074, 79197,79203,393, 79205,79211,13905,79198,501, 79199,22269,79202,501, 79200,1020, 343,
+ 501, 373, 351, 2261, 48204,1358, 8219, 381, 79162,79164,79163,350, 1999, 343, 1453, 412, 2024, 17001,317, 79166,404, 351, 350, 1999, 22212,79168,350,
+ 363, 501, 317, 317, 79170,2134, 476, 12756,356, 565, 371, 14832,79172,350, 79173,317, 28707,371, 79092,1358, 343, 2067, 79176,79177,7624, 79178,317,
+ 79179,79180,381, 79181,79182,8807, 384, 317, 371, 1481, 317, 345, 426, 79069,7384, 3076, 79184,79185,79187,79188,79191,79192,21552,79194,365, 79189,1998,
+ 79190,2551, 566, 396, 390, 30126,79193,28476,317, 79195,15325,2074, 79197,79203,393, 79205,79211,13905,79198,501, 79199,22269,79202,501, 79200,1020, 343,
2298, 79201,553, 5105, 2102, 343, 79204,2134, 11070,501, 79206,79207,6563, 79208,6318, 79209,343, 343, 317, 553, 501, 317, 56343,317, 6917, 33957,79210,
- 373, 345, 317, 971, 351, 79213,31062,317, 79214,22666,7858, 79215,79217,79219,79220,79222,79223,79218,79221,371, 79225,79227,79230,79232,79233,351, 1588,
+ 373, 345, 317, 971, 351, 79213,31062,317, 79214,22666,7858, 79215,79217,79219,79220,79222,79223,79218,79221,371, 79225,79227,79230,79232,79233,351, 1588,
79226,29120,13177,79228,381, 79229,317, 317, 37331,79231,3243, 390, 79235,8009, 79236,12756,317, 349, 1588, 79237,79238,79239,79240,79242,79245,79247,79248,
79251,27732,317, 362, 316, 79243,79244,6402, 317, 79246,574, 343, 5033, 79249,79250,343, 350, 317, 501, 362, 6083, 27664,371, 4952, 49853,6645, 79253,
365, 79254,79255,79258,345, 14832,317, 12700,79256,79257,21553,79259,79260,79262,3505, 79263,79265,33572,79264,12711,79266,79267,79269,79270,465, 79272,79273,
- 317, 16288,49881,6340, 350, 2369, 79275,79281,79285,79287,79289,79290,79296,36461,79276,541, 79280,5526, 2391, 79277,79279,79278,351, 384, 15566,349, 350,
+ 317, 16288,49881,6340, 350, 2369, 79275,79281,79285,79287,79289,79290,79296,36461,79276,541, 79280,5526, 2391, 79277,79279,79278,351, 384, 15566,349, 350,
317, 79282,343, 79284,317, 79283,79286,2586, 79288,553, 79291,14595,79294,79292,79293,9444, 79067,10317,79295,427, 566, 501, 79298,79300,22337,380, 79301,
79303,317, 343, 79299,79302,10580,393, 393, 380, 11533,79305,501, 79307,79313,36461,79317,79319,79325,3023, 79308,363, 79309,79310,79311,79312,363, 79314,
79315,79316,79318,539, 79320,79322,412, 79321,9930, 9930, 79323,79324,79327,79333,370, 79335,79338,2301, 79339,79328,381, 79329,12756,350, 2568, 79330,79331,
79332,2507, 79334,381, 317, 3243, 356, 36115,79336,79337,373, 1999, 2152, 371, 317, 343, 317, 79340,79341,79343,317, 79344,79345,79346,79347,79349,79351,
46221,380, 79350,381, 39082,356, 79353,79354,2510, 42018,317, 79356,79357,79358,317, 5328, 1347, 79360,79364,34993,79365,79368,79371,79372,74148,79382,79384,
- 79385,79391,79392,79395,79397,79398,79400,79401,2184, 2948, 79361,7356, 490, 348, 5140, 79362,317, 79363,3751, 490, 393, 7891, 317, 345, 79366,79367,4984,
+ 79385,79391,79392,79395,79397,79398,79400,79401,2184, 2948, 79361,7356, 490, 348, 5140, 79362,317, 79363,3751, 490, 393, 7891, 317, 345, 79366,79367,4984,
317, 362, 4984, 357, 54294,79369,79370,16464,371, 2156, 2078, 317, 332, 5995, 5058, 345, 317, 345, 79373,5956, 79378,317, 2132, 1109, 21955,79381,79374,
- 79377,21680,79375,13766,79376,317, 79379,317, 79380,351, 4564, 596, 317, 79383,370, 79386,79388,79390,4984, 501, 427, 79387,79389,380, 317, 317, 317,
+ 79377,21680,79375,13766,79376,317, 79379,317, 79380,351, 4564, 596, 317, 79383,370, 79386,79388,79390,4984, 501, 427, 79387,79389,380, 317, 317, 317,
79393,79394,2322, 27913,79396,6063, 490, 397, 79399,317, 34287,1109, 317, 7399, 2110, 380, 380, 79403,79404,79405,79413,12994,79417,79418,7865, 79423,79424,
- 79427,79438,79439,79444,79451,26830,417, 317, 2142, 29475,365, 317, 1588, 79406,79411,590, 79407,79408,5392, 79409,79410,79412,54792,5828, 79414,317, 2271,
+ 79427,79438,79439,79444,79451,26830,417, 317, 2142, 29475,365, 317, 1588, 79406,79411,590, 79407,79408,5392, 79409,79410,79412,54792,5828, 79414,317, 2271,
317, 317, 79415,79416,605, 6623, 363, 365, 79419,11469,79420,79421,79422,7117, 1044, 317, 365, 490, 590, 50217,317, 396, 7185, 5711, 365, 79425,79426,
- 79428,79434,79435,317, 79429,79430,79431,79432,79433,79436,79437,79440,79442,79443,317, 1588, 332, 79441,317, 990, 357, 317, 5105, 317, 317, 351, 317,
+ 79428,79434,79435,317, 79429,79430,79431,79432,79433,79436,79437,79440,79442,79443,317, 1588, 332, 79441,317, 990, 357, 317, 5105, 317, 317, 351, 317,
79445,79446,2272, 370, 79449,2571, 2381, 490, 2163, 332, 19414,79447,345, 33571,79448,79450,79452,79453,79455,390, 31518,79456,79458,79461,317, 79462,79457,
- 79459,79460,79463,79465,79464,49712,317, 79467,79468,79469,79475,79477,2601, 2134, 343, 79478,34127,79470,2163, 79474,79471,79472,79473,1020, 9470, 79476,363,
- 363, 11928,317, 381, 14316,317, 2510, 350, 1444, 1020, 14144,79480,37118,317, 79481,317, 79482,79484,490, 965, 350, 363, 317, 79486,79491,66655,9702,
+ 79459,79460,79463,79465,79464,49712,317, 79467,79468,79469,79475,79477,2601, 2134, 343, 79478,34127,79470,2163, 79474,79471,79472,79473,1020, 9470, 79476,363,
+ 363, 11928,317, 381, 14316,317, 2510, 350, 1444, 1020, 14144,79480,37118,317, 79481,317, 79482,79484,490, 965, 350, 363, 317, 79486,79491,66655,9702,
79487,79488,79490,317, 317, 317, 1292, 1267, 79489,363, 6555, 428, 79493,79501,79503,79505,66503,79494,79495,79496,1243, 79498,10382,79497,79499,79500,34213,
2733, 596, 79502,427, 611, 6580, 79504,22939,6778, 34639,608, 396, 79506,608, 79507,79509,79510,317, 79512,381, 79513,79515,79516,79521,79523,79527,79537,
79545,79556,79558,79559,8403, 79585,33917,79635,289, 79774,79793,79801,370, 79803,79804,79805,390, 350, 6578, 317, 79514,28734,6675, 370, 2022, 362, 79517,
- 79519,343, 5570, 350, 608, 79520,79518,345, 6013, 490, 48569,23995,2610, 8311, 79522,490, 371, 79524,79525,79526,350, 351, 2044, 317, 450, 15772,317,
+ 79519,343, 5570, 350, 608, 79520,79518,345, 6013, 490, 48569,23995,2610, 8311, 79522,490, 371, 79524,79525,79526,350, 351, 2044, 317, 450, 15772,317,
356, 466, 11709,317, 79528,79530,317, 55568,2222, 79535,350, 6468, 317, 79529,7657, 79531,79532,317, 79533,317, 48162,79534,373, 5634, 79536,79538,79539,
- 79540,79542,79543,6222, 79541,53593,317, 79544,381, 8957, 79546,79550,79553,79554,79547,79548,79549,1325, 79551,317, 79552,363, 390, 79555,317, 4738, 317,
- 79557,343, 6221, 2298, 79560,867, 79565,79567,5611, 79568,8099, 79570,79571,79574,79575,79579,79580,79581,79584,15754,12994,79561,79563,2631, 79564,79562,332,
- 66655,8611, 332, 12994,66655,317, 64251,79566,11709,2036, 490, 12642,317, 490, 317, 317, 317, 317, 79569,2381, 317, 317, 317, 317, 14754,39015,317,
- 317, 79572,38304,79573,11709,317, 2178, 7386, 317, 2210, 317, 6541, 79576,23595,79578,489, 351, 401, 317, 317, 317, 79577,30835,5201, 53131,317, 363,
+ 79540,79542,79543,6222, 79541,53593,317, 79544,381, 8957, 79546,79550,79553,79554,79547,79548,79549,1325, 79551,317, 79552,363, 390, 79555,317, 4738, 317,
+ 79557,343, 6221, 2298, 79560,867, 79565,79567,5611, 79568,8099, 79570,79571,79574,79575,79579,79580,79581,79584,15754,12994,79561,79563,2631, 79564,79562,332,
+ 66655,8611, 332, 12994,66655,317, 64251,79566,11709,2036, 490, 12642,317, 490, 317, 317, 317, 317, 79569,2381, 317, 317, 317, 317, 14754,39015,317,
+ 317, 79572,38304,79573,11709,317, 2178, 7386, 317, 2210, 317, 6541, 79576,23595,79578,489, 351, 401, 317, 317, 317, 79577,30835,5201, 53131,317, 363,
12625,363, 11709,362, 7672, 317, 748, 7149, 317, 79582,2067, 79583,68828,317, 381, 79586,79588,79589,79594,79601,16464,79603,79604,332, 79608,79610,79614,
79616,79632,79634,2155, 79587,356, 5226, 2537, 332, 365, 317, 79590,79592,79593,2391, 317, 9909, 79591,317, 382, 12949,410, 5241, 2510, 348, 5217, 79595,
- 39072,79597,17357,317, 79598,79596,9549, 317, 317, 6978, 1347, 490, 6492, 79599,79600,79602,6415, 317, 523, 379, 514, 317, 13920,373, 343, 351, 6551,
- 15311,490, 59462,79605,345, 79606,317, 79607,2178, 79609,16651,362, 5120, 317, 79611,490, 40281,345, 79612,4591, 317, 79613,4108, 317, 380, 79615,363,
- 1588, 317, 51025,6847, 10422,317, 79617,2146, 79619,79620,79627,79628,21830,79618,382, 5476, 79621,79622,2272, 343, 317, 2381, 31645,79623,79624,1347, 596,
+ 39072,79597,17357,317, 79598,79596,9549, 317, 317, 6978, 1347, 490, 6492, 79599,79600,79602,6415, 317, 523, 379, 514, 317, 13920,373, 343, 351, 6551,
+ 15311,490, 59462,79605,345, 79606,317, 79607,2178, 79609,16651,362, 5120, 317, 79611,490, 40281,345, 79612,4591, 317, 79613,4108, 317, 380, 79615,363,
+ 1588, 317, 51025,6847, 10422,317, 79617,2146, 79619,79620,79627,79628,21830,79618,382, 5476, 79621,79622,2272, 343, 317, 2381, 31645,79623,79624,1347, 596,
79625,79626,79629,317, 1160, 79630,79631,317, 317, 17454,1347, 317, 1347, 9362, 79633,5439, 317, 362, 8419, 317, 2537, 343, 12696,79636,79637,79638,79646,
79654,79660,79667,79672,79675,79679,79685,362, 79696,79708,79712,79722,79727,79731,79733,79737,79746,79754,55946,79756,79769,365, 79639,79640,79641,2462, 79644,
- 397, 4573, 79642,317, 317, 79643,79645,79647,79652,68454,343, 79653,9914, 317, 4949, 5324, 79648,5428, 79651,79649,79650,58359,7801, 371, 371, 343, 490,
- 6486, 2222, 79655,79656,79657,79658,79659,79661,79662,79664,6318, 79666,317, 317, 381, 5428, 363, 332, 380, 1347, 79663,317, 2060, 350, 1943, 4268, 4965,
- 79665,21067,2163, 2134, 7386, 332, 317, 5428, 5428, 317, 79668,363, 490, 79670,317, 79669,317, 79671,54488,79673,79674,79676,79677,5058, 79678,343, 317,
- 28295,2210, 7384, 351, 7360, 317, 7095, 501, 79680,79683,7360, 79684,41817,382, 79681,79682,675, 396, 7403, 79686,362, 79688,79689,79694,18211,79687,2184,
+ 397, 4573, 79642,317, 317, 79643,79645,79647,79652,68454,343, 79653,9914, 317, 4949, 5324, 79648,5428, 79651,79649,79650,58359,7801, 371, 371, 343, 490,
+ 6486, 2222, 79655,79656,79657,79658,79659,79661,79662,79664,6318, 79666,317, 317, 381, 5428, 363, 332, 380, 1347, 79663,317, 2060, 350, 1943, 4268, 4965,
+ 79665,21067,2163, 2134, 7386, 332, 317, 5428, 5428, 317, 79668,363, 490, 79670,317, 79669,317, 79671,54488,79673,79674,79676,79677,5058, 79678,343, 317,
+ 28295,2210, 7384, 351, 7360, 317, 7095, 501, 79680,79683,7360, 79684,41817,382, 79681,79682,675, 396, 7403, 79686,362, 79688,79689,79694,18211,79687,2184,
410, 5488, 12925,79690,332, 3725, 363, 79691,79692,79693,79695,7940, 317, 10580,79697,79706,350, 79707,79698,79699,79700,79701,79705,79702,79703,79704,79709,
47635,79710,2610, 381, 317, 2272, 566, 332, 317, 79711,79713,79715,79717,79721,79714,79716,380, 574, 6645, 79718,317, 79719,404, 5226, 8979, 79720,21303,
545, 79723,79724,79725,79726,10407,6607, 317, 748, 380, 317, 60329,3361, 317, 317, 343, 4965, 490, 490, 317, 317, 381, 317, 490, 1913, 675, 79728,
317, 490, 79729,79730,11357,1109, 8355, 79732,79734,79735,79736,10815,343, 317, 12752,7657, 9537, 27954,5223, 351, 27954,79738,79739,79740,12625,9246, 79743,
- 345, 6713, 343, 24100,41518,317, 79741,317, 5650, 79742,73971,79744,79745,79747,79751,2654, 79753,317, 79748,317, 317, 79749,79750,79752,317, 332, 317,
- 5476, 345, 15753,79755,554, 748, 317, 79757,1033, 15380,79758,79759,79760,79761,79762,79763,79764,79765,79766,79767,79768,317, 535, 79770,3869, 10796,2541,
- 9029, 79771,79772,79773,79775,79776,79777,79779,79539,2022, 6519, 79780,79784,79786,79790,79791,332, 54237,79778,317, 2053, 490, 317, 79781,79782,490, 7385,
+ 345, 6713, 343, 24100,41518,317, 79741,317, 5650, 79742,73971,79744,79745,79747,79751,2654, 79753,317, 79748,317, 317, 79749,79750,79752,317, 332, 317,
+ 5476, 345, 15753,79755,554, 748, 317, 79757,1033, 15380,79758,79759,79760,79761,79762,79763,79764,79765,79766,79767,79768,317, 535, 79770,3869, 10796,2541,
+ 9029, 79771,79772,79773,79775,79776,79777,79779,79539,2022, 6519, 79780,79784,79786,79790,79791,332, 54237,79778,317, 2053, 490, 317, 79781,79782,490, 7385,
949, 5624, 79783,351, 79785,79787,32336,4982, 79788,5530, 883, 6408, 317, 53728,79789,382, 1347, 433, 79792,43861,390, 79794,317, 6033, 64182,7940, 79798,
- 345, 79795,332, 5055, 317, 79796,371, 79797,79799,466, 317, 317, 317, 362, 79800,317, 79802,317, 58439,356, 8642, 490, 404, 8392, 79806,490, 490,
+ 345, 79795,332, 5055, 317, 79796,371, 79797,79799,466, 317, 317, 317, 362, 79800,317, 79802,317, 58439,356, 8642, 490, 404, 8392, 79806,490, 490,
79807,79808,79809,79811,79813,79814,30373,79815,79834,79837,79842,79848,79856,79859,79869,79873,79890,79812,608, 545, 2733, 79816,79822,79823,6221, 79824,79825,
79828,79830,79833,34849,79817,33650,79818,15105,79819,607, 396, 79820,79821,351, 2464, 79826,79827,608, 10382,79829,79831,24871,79832,6778, 48102,79835,19082,
79836,651, 710, 56093,79838,612, 79839,22866,6222, 79840,79841,79843,79844,79845,79846,79847,79849,20441,79851,79853,17213,79850,79852,26872,79854,79855,79857,
@@ -12378,36 +12373,36 @@ static const unsigned int ChildLocs[185261] =
79893,79894,79896,79898,79901,79902,3366, 79905,79899,79900,79903,79904,79906,79907,317, 2730, 317, 57696,5105, 79909,79917,79928,79964,79992,80010,61790,80030,
80031,80038,80057,80124,80126,80159,80170,80175,80207,80251,80276,80289,80291,5457, 79910,9209, 6834, 79912,343, 79913,79914,8419, 79915,9262, 46796,317, 79911,
427, 317, 5120, 57323,317, 317, 345, 2022, 317, 317, 317, 79916,317, 79918,79919,79920,4949, 79921,79927,551, 1999, 79922,332, 5969, 79923,79926,79924,
- 79925,1347, 21470,65068,79929,2279, 79932,79938,79943,79950,79954,741, 883, 79955,79963,79930,990, 79931,317, 574, 21955,5459, 2024, 79933,79935,317, 2537,
- 317, 79934,490, 8748, 79936,79937,35409,317, 79939,79941,79940,79942,317, 79944,79945,79946,332, 69641,79947,79948,79949,79951,6691, 6954, 79953,7910, 1160,
- 79952,317, 362, 4980, 317, 1020, 574, 370, 317, 79956,79958,2326, 79962,79957,7986, 2571, 317, 12277,79959,317, 867, 79960,317, 5037, 25279,79961,490,
+ 79925,1347, 21470,65068,79929,2279, 79932,79938,79943,79950,79954,741, 883, 79955,79963,79930,990, 79931,317, 574, 21955,5459, 2024, 79933,79935,317, 2537,
+ 317, 79934,490, 8748, 79936,79937,35409,317, 79939,79941,79940,79942,317, 79944,79945,79946,332, 69641,79947,79948,79949,79951,6691, 6954, 79953,7910, 1160,
+ 79952,317, 362, 4980, 317, 1020, 574, 370, 317, 79956,79958,2326, 79962,79957,7986, 2571, 317, 12277,79959,317, 867, 79960,317, 5037, 25279,79961,490,
345, 6565, 6387, 490, 317, 6379, 317, 8925, 490, 317, 4462, 79965,79968,362, 79986,350, 565, 79987,79988,34344,79989,8405, 490, 47847,79966,490, 79967,
317, 20167,5392, 490, 2280, 317, 363, 490, 79969,317, 2322, 317, 79970,345, 79979,362, 317, 79984,79971,1597, 79973,79972,79974,79975,79976,79977,79978,
79980,79981,79982,79983,79985,363, 404, 317, 17760,317, 36631,317, 79990,6964, 79991,13466,6614, 590, 26065,317, 348, 450, 79993,5611, 79994,79995,43038,
- 79999,80000,80002,1548, 80005,2110, 317, 13670,343, 11809,351, 44696,79996,317, 79998,317, 79997,9298, 1347, 317, 384, 317, 511, 596, 345, 490, 317,
+ 79999,80000,80002,1548, 80005,2110, 317, 13670,343, 11809,351, 44696,79996,317, 79998,317, 79997,9298, 1347, 317, 384, 317, 511, 596, 345, 490, 317,
38707,490, 80001,5623, 1347, 80003,351, 317, 365, 553, 80004,410, 80006,79404,10877,19504,80007,80008,80009,80011,80012,80013,80016,80020,80021,80025,80027,
362, 80014,17449,317, 80015,5570, 351, 80017,80018,317, 317, 80019,363, 20265,80022,80023,80024,9289, 316, 9321, 5689, 80026,351, 363, 2322, 7834, 80028,
317, 80029,317, 317, 317, 17583,80032,380, 80033,80034,80035,80036,6638, 2532, 46188,80037,80039,80043,80044,365, 80047,80053,80040,26912,317, 7155, 80041,
80042,317, 69495,317, 80045,80046,80048,80049,80050,80051,80052,80054,80055,80056,8177, 317, 80058,80061,80063,80065,80066,34442,80067,80068,80069,80122,80123,
9993, 1100, 501, 6318, 80059,80060,317, 574, 44892,15100,5711, 4984, 80062,8569, 345, 80064,348, 2142, 317, 317, 7408, 8224, 9554, 501, 2845, 5836, 80070,
- 80106,80120,10519,80121,50087,2584, 317, 80071,490, 80073,80075,80076,80078,80081,80083,80087,80089,317, 80094,80095,80097,80101,80102,80103,2035, 317, 345,
- 25016,80072,80074,9504, 2146, 76375,13846,6726, 80077,22323,80079,80080,80082,343, 476, 4591, 317, 317, 490, 80084,57323,490, 80085,80086,11836,1109, 2086,
- 2086, 80088,380, 317, 9064, 2146, 448, 80090,317, 18387,343, 80091,80092,490, 5711, 490, 80093,7062, 9702, 80096,80098,317, 19351,4984, 80100,317, 490,
+ 80106,80120,10519,80121,50087,2584, 317, 80071,490, 80073,80075,80076,80078,80081,80083,80087,80089,317, 80094,80095,80097,80101,80102,80103,2035, 317, 345,
+ 25016,80072,80074,9504, 2146, 76375,13846,6726, 80077,22323,80079,80080,80082,343, 476, 4591, 317, 317, 490, 80084,57323,490, 80085,80086,11836,1109, 2086,
+ 2086, 80088,380, 317, 9064, 2146, 448, 80090,317, 18387,343, 80091,80092,490, 5711, 490, 80093,7062, 9702, 80096,80098,317, 19351,4984, 80100,317, 490,
80099,433, 2134, 2134, 2035, 36463,345, 8219, 80104,80105,4591, 490, 80107,6409, 80108,9364, 80112,80114,1020, 80115,80116,80118,80119,80109,80110,80111,80113,
1347, 50196,80117,551, 9702, 2510, 9702, 596, 317, 25386,80125,15179,2369, 317, 80127,80130,80131,80137,80141,2222, 317, 80142,343, 80143,4952, 80145,80147,
- 9779, 80153,80154,1060, 53355,80158,1588, 5105, 317, 13233,80128,80129,317, 80132,80135,317, 3941, 80133,596, 317, 596, 80134,5611, 80136,317, 40125,5619,
+ 9779, 80153,80154,1060, 53355,80158,1588, 5105, 317, 13233,80128,80129,317, 80132,80135,317, 3941, 80133,596, 317, 596, 80134,5611, 80136,317, 40125,5619,
80138,80139,11418,2381, 41229,80140,317, 545, 565, 4952, 317, 317, 317, 22597,551, 9182, 14810,7514, 382, 363, 490, 317, 80144,16651,80146,317, 80148,
- 80151,80149,80150,80152,2369, 380, 363, 80155,80156,80157,2509, 363, 490, 6923, 2568, 80160,2134, 317, 80161,80162,80166,539, 80168,2081, 574, 317, 5446,
- 80163,80165,7098, 80164,80167,381, 317, 6514, 317, 80169,949, 80171,80173,439, 16438,317, 80172,80174,637, 1266, 317, 633, 317, 1353, 1915, 362, 317,
- 80176,16876,19617,80181,80184,80190,2298, 80193,80195,80196,80203,365, 357, 317, 80177,80180,317, 80178,80179,17454,80182,1347, 80183,80185,6780, 80186,6420,
- 317, 80187,80188,317, 5105, 80189,317, 5421, 317, 317, 370, 80191,7327, 5055, 80192,371, 80194,56278,317, 8323, 370, 488, 12756,317, 80197,80198,404,
+ 80151,80149,80150,80152,2369, 380, 363, 80155,80156,80157,2509, 363, 490, 6923, 2568, 80160,2134, 317, 80161,80162,80166,539, 80168,2081, 574, 317, 5446,
+ 80163,80165,7098, 80164,80167,381, 317, 6514, 317, 80169,949, 80171,80173,439, 16438,317, 80172,80174,637, 1266, 317, 633, 317, 1353, 1915, 362, 317,
+ 80176,16876,19617,80181,80184,80190,2298, 80193,80195,80196,80203,365, 357, 317, 80177,80180,317, 80178,80179,17454,80182,1347, 80183,80185,6780, 80186,6420,
+ 317, 80187,80188,317, 5105, 80189,317, 5421, 317, 317, 370, 80191,7327, 5055, 80192,371, 80194,56278,317, 8323, 370, 488, 12756,317, 80197,80198,404,
1347, 80200,317, 365, 4249, 80199,7986, 370, 80201,345, 80202,317, 80204,381, 58156,6551, 26271,80205,80206,80208,370, 80212,80219,80220,80227,350, 80233,
- 80235,80239,80240,80241,80245,80247,343, 80209,80211,317, 11809,80210,80213,31485,490, 80215,80214,42074,343, 2715, 79944,80216,80217,317, 80218,370, 476,
- 317, 13062,317, 317, 317, 380, 80221,80222,64151,2146, 80223,80224,80225,80226,21417,371, 80228,80229,80231,80230,317, 14662,317, 80232,356, 3999, 2510,
+ 80235,80239,80240,80241,80245,80247,343, 80209,80211,317, 11809,80210,80213,31485,490, 80215,80214,42074,343, 2715, 79944,80216,80217,317, 80218,370, 476,
+ 317, 13062,317, 317, 317, 380, 80221,80222,64151,2146, 80223,80224,80225,80226,21417,371, 80228,80229,80231,80230,317, 14662,317, 80232,356, 3999, 2510,
317, 5226, 5167, 339, 80234,5295, 1347, 2317, 80236,5295, 80237,80238,14645,317, 362, 1347, 317, 2381, 80242,80243,80244,370, 317, 18587,65612,80246,80248,
80249,80250,80252,80257,80261,80262,12796,80265,80267,80269,80275,2462, 317, 80253,80254,8365, 80256,36102,490, 317, 9779, 8419, 18907,317, 80255,370, 74812,
- 317, 1109, 6227, 490, 317, 370, 317, 3428, 51054,490, 7990, 9573, 317, 80258,317, 80260,393, 317, 317, 80259,867, 6387, 317, 80263,5033, 49396,317,
- 80264,9215, 343, 80266,5570, 5727, 80268,317, 79790,317, 80270,80271,596, 80272,427, 343, 80273,317, 80274,7386, 2142, 317, 80277,80280,80285,80288,343,
+ 317, 1109, 6227, 490, 317, 370, 317, 3428, 51054,490, 7990, 9573, 317, 80258,317, 80260,393, 317, 317, 80259,867, 6387, 317, 80263,5033, 49396,317,
+ 80264,9215, 343, 80266,5570, 5727, 80268,317, 79790,317, 80270,80271,596, 80272,427, 343, 80273,317, 80274,7386, 2142, 317, 80277,80280,80285,80288,343,
362, 80278,2413, 3688, 80279,317, 317, 317, 490, 2829, 80281,80283,80284,317, 80282,2610, 345, 80286,490, 6441, 64347,332, 363, 58794,317, 62487,13338,
80287,80290,5055, 317, 80292,80294,2035, 80298,2391, 27819,80302,80293,80295,5570, 80296,490, 80297,80299,2510, 80300,80301,80304,80305,80308,80310,80312,80316,
80317,80306,80307,80309,604, 3658, 1791, 80311,80313,34691,19278,80314,80315,80318,80320,80319,80321,80323,80324,80327,80325,80326,80328,80329,80330,80332,80359,
@@ -12415,341 +12410,341 @@ static const unsigned int ChildLocs[185261] =
80342,80345,80350,80353,80343,80344,80346,80347,317, 80348,80349,80351,80352,80354,80356,80358,365, 339, 7116, 5355, 80361,80363,490, 80365,490, 14062,80366,
80367,80368,80369,80385,80388,80396,345, 80404,80415,596, 80419,80475,80476,80534,6231, 80544,80571,80577,80581,80582,80587,80589,80592,80599,80370,5241, 80381,
80382,317, 566, 317, 317, 80371,80373,10436,80372,80374,370, 5087, 80378,363, 80375,39805,80376,80377,317, 80379,80380,80383,80384,80386,350, 39970,15090,
- 80387,426, 7035, 11952,8178, 317, 17469,80389,345, 80390,80394,80391,350, 80393,317, 80392,317, 39575,80395,9938, 2108, 363, 345, 80397,80402,80403,8506,
- 80398,52425,317, 351, 80399,362, 17109,80401,2357, 80400,439, 4965, 439, 39357,362, 317, 80405,5273, 80407,10578,14991,317, 317, 80409,80411,80412,317,
+ 80387,426, 7035, 11952,8178, 317, 17469,80389,345, 80390,80394,80391,350, 80393,317, 80392,317, 39575,80395,9938, 2108, 363, 345, 80397,80402,80403,8506,
+ 80398,52425,317, 351, 80399,362, 17109,80401,2357, 80400,439, 4965, 439, 39357,362, 317, 80405,5273, 80407,10578,14991,317, 317, 80409,80411,80412,317,
80406,466, 317, 2571, 5005, 32473,317, 4268, 80408,551, 80410,317, 317, 350, 1588, 80413,80414,19170,14071,54422,490, 80416,80417,317, 2108, 332, 80418,
- 23928,80420,80423,80424,80429,80432,80434,80435,80436,80438,80447,80453,15745,80454,80457,80459,80460,80463,80472,19287,317, 2146, 24804,80421,80422,1999, 6593,
+ 23928,80420,80423,80424,80429,80432,80434,80435,80436,80438,80447,80453,15745,80454,80457,80459,80460,80463,80472,19287,317, 2146, 24804,80421,80422,1999, 6593,
80425,80428,45496,80426,10393,80427,345, 10253,80430,80431,317, 351, 21274,317, 80433,15017,554, 2271, 317, 14358,80437,5226, 490, 80439,8281, 80440,11608,
- 80441,80442,345, 8488, 5184, 396, 1109, 80443,80445,80446,80444,439, 28586,80448,384, 80452,9289, 14826,7385, 80449,317, 574, 80450,28707,39341,80451,317,
- 12696,14537,351, 351, 2193, 80455,2004, 5223, 19287,490, 80456,317, 64035,317, 24038,80458,2272, 317, 365, 355, 80461,2549, 363, 404, 317, 5654, 317,
- 2156, 80462,80464,80465,80470,5241, 80471,11920,8272, 80466,21495,80467,80468,80469,356, 59408,317, 345, 5482, 317, 80473,317, 1624, 2731, 79901,80474,839,
+ 80441,80442,345, 8488, 5184, 396, 1109, 80443,80445,80446,80444,439, 28586,80448,384, 80452,9289, 14826,7385, 80449,317, 574, 80450,28707,39341,80451,317,
+ 12696,14537,351, 351, 2193, 80455,2004, 5223, 19287,490, 80456,317, 64035,317, 24038,80458,2272, 317, 365, 355, 80461,2549, 363, 404, 317, 5654, 317,
+ 2156, 80462,80464,80465,80470,5241, 80471,11920,8272, 80466,21495,80467,80468,80469,356, 59408,317, 345, 5482, 317, 80473,317, 1624, 2731, 79901,80474,839,
80477,80479,80484,80486,351, 80494,80498,80510,80511,80515,80521,80522,80529,80532,80478,316, 971, 80480,80481,371, 11940,80482,80483,80485,373, 317, 80487,
- 80490,80491,80492,80488,342, 80489,3987, 565, 2260, 6645, 25114,80493,971, 317, 317, 971, 80495,80496,80497,380, 80499,2381, 80503,80506,80508,80509,1230,
+ 80490,80491,80492,80488,342, 80489,3987, 565, 2260, 6645, 25114,80493,971, 317, 317, 971, 80495,80496,80497,380, 80499,2381, 80503,80506,80508,80509,1230,
80500,80501,80502,44883,44883,80504,80505,80507,2004, 44882,11940,3505, 80512,80513,80514,80516,80517,80518,80519,80520,80523,80526,6338, 80528,80524,362, 80525,
- 2219, 80527,3243, 1020, 80530,80531,80533,80535,356, 317, 382, 80538,80536,80537,317, 6996, 317, 633, 80539,9938, 80541,80540,29424,80542,80543,80545,2163,
+ 2219, 80527,3243, 1020, 80530,80531,80533,80535,356, 317, 382, 80538,80536,80537,317, 6996, 317, 633, 80539,9938, 80541,80540,29424,80542,80543,80545,2163,
343, 80548,348, 80549,29424,80550,404, 80552,80553,80554,80559,80563,80564,317, 80568,80546,317, 80547,390, 371, 971, 5727, 596, 596, 3505, 2193, 80551,
- 73085,10538,339, 345, 3529, 2022, 80555,80557,317, 11104,18333,80556,48900,80558,80560,80561,80562,32982,317, 2381, 350, 80565,80566,80567,478, 80569,406,
+ 73085,10538,339, 345, 3529, 2022, 80555,80557,317, 11104,18333,80556,48900,80558,80560,80561,80562,32982,317, 2381, 350, 80565,80566,80567,478, 80569,406,
80570,1915, 80572,317, 596, 80573,1481, 80574,4591, 350, 12994,80575,80576,10580,2063, 43411,5105, 371, 80578,5394, 317, 5395, 80579,22894,80580,490, 14461,
- 471, 7722, 348, 317, 80583,43829,345, 1912, 80584,317, 80586,5074, 80585,80588,466, 596, 317, 380, 80590,80591,80593,80596,596, 971, 80594,80595,466,
+ 471, 7722, 348, 317, 80583,43829,345, 1912, 80584,317, 80586,5074, 80585,80588,466, 596, 317, 380, 80590,80591,80593,80596,596, 971, 80594,80595,466,
317, 64332,317, 2510, 317, 80597,80598,80601,80602,332, 80604,80605,80606,80607,80608,80610,80615,80616,80627,80631,338, 80633,80611,9929, 363, 80612,68113,
2134, 380, 8231, 317, 8852, 80613,343, 80614,80617,80619,80622,80623,80618,80620,2035, 80621,6598, 501, 4952, 362, 80624,80625,80626,345, 80628,343, 80629,
- 345, 28220,343, 80630,362, 80632,80634,80635,317, 77641,80637,77641,80640,80644,2004, 1020, 80638,80639,80641,80642,80643,339, 80646,80651,80652,80657,380,
+ 345, 28220,343, 80630,362, 80632,80634,80635,317, 77641,80637,77641,80640,80644,2004, 1020, 80638,80639,80641,80642,80643,339, 80646,80651,80652,80657,380,
80660,80661,80647,80649,80650,80648,19106,19074,80653,80654,80655,80656,80658,80659,80662,5211, 80663,80664,80666,80667,80668,80670,80674,80679,80689,80691,80692,
6755, 14991,80669,80671,2067, 80672,80673,8384, 22945,80675,2108, 80677,80676,80678,351, 9768, 5419, 80680,2108, 362, 332, 80685,596, 80688,490, 80681,80682,
80684,343, 80683,80686,80687,80690,317, 332, 17160,332, 80693,80694,80695,80697,4150, 80698,80699,80701,13650,7566, 80705,80702,80703,80704,80706,80708,19283,
80710,460, 466, 80711,80722,80724,6138, 80709,1109, 80712,80718,80713,80714,80715,80716,80717,80719,80720,80721,80723,7149, 5295, 80725,80729,80731,80743,80749,
80754,80756,80760,7869, 293, 81225,81226,81234,295, 81614,81615,296, 298, 82260,82261,82264,82282,82288,301, 82550,82559,82561,82613,82618,82627,82678,82680,
82694,82697,56281,80726,4797, 11077,4797, 4797, 80727,80728,80730,45290,11091,80732,80737,80733,80734,80735,80736,80738,80739,80740,80741,80742,80744,80745,80746,
- 80747,80748,80750,80751,80752,80753,80755,80757,80758,80759,80761,2601, 80764,80762,80763,80765,80768,80770,80784,80794,80798,80803,80820,80835,80859,80860,294,
+ 80747,80748,80750,80751,80752,80753,80755,80757,80758,80759,80761,2601, 80764,80762,80763,80765,80768,80770,80784,80794,80798,80803,80820,80835,80859,80860,294,
80953,80959,80982,80991,80993,81081,81118,81168,81179,81192,81195,81198,81216,80766,7785, 317, 5891, 317, 80767,46514,317, 80769,2036, 317, 317, 343, 10898,
- 7939, 59714,80771,317, 80773,80777,80782,317, 80783,2146, 371, 80772,380, 80774,80775,80776,14491,317, 5241, 12054,12731,350, 80764,80778,362, 1347, 317,
- 317, 80779,80781,80780,15899,370, 1347, 80785,80790,2024, 8117, 80791,3078, 80792,362, 40690,61831,10956,5295, 11346,80786,80787,2156, 80788,5737, 1109, 5105,
- 317, 2070, 371, 380, 5861, 80789,11442,317, 5105, 362, 490, 16941,80793,69221,605, 80795,2568, 2105, 80796,80797,349, 38047,317, 317, 2510, 80799,317,
- 511, 2381, 80800,2156, 551, 80801,80802,25352,317, 80804,80806,80808,466, 12141,362, 80810,80813,80815,80816,20937,80817,317, 362, 350, 317, 80805,317,
- 5662, 80807,5273, 317, 565, 80368,351, 6599, 13387,11905,16433,80809,466, 350, 14852,317, 80811,12696,80812,80814,7191, 317, 427, 19902,80818,80819,367,
- 490, 80821,80822,80824,80827,80829,2222, 80832,80833,317, 317, 317, 356, 80823,80825,80826,317, 80828,5896, 80830,3023, 362, 6601, 18839,439, 80831,8488,
- 6379, 553, 80834,54798,404, 590, 2134, 80836,317, 471, 80838,80839,2081, 80840,80848,80850,80853,24577,80837,2322, 11831,65454,466, 351, 332, 80841,362,
- 2301, 80844,7053, 80842,80843,80845,80846,80847,80849,490, 77143,317, 80851,362, 350, 317, 80852,501, 390, 4952, 12151,428, 80854,80857,343, 3999, 4591,
- 362, 80858,317, 5397, 317, 57166,80855,13559,490, 80856,317, 5266, 1347, 317, 17239,17791,80861,80864,554, 80872,2022, 317, 15799,80862,11484,11749,8926,
+ 7939, 59714,80771,317, 80773,80777,80782,317, 80783,2146, 371, 80772,380, 80774,80775,80776,14491,317, 5241, 12054,12731,350, 80764,80778,362, 1347, 317,
+ 317, 80779,80781,80780,15899,370, 1347, 80785,80790,2024, 8117, 80791,3078, 80792,362, 40690,61831,10956,5295, 11346,80786,80787,2156, 80788,5737, 1109, 5105,
+ 317, 2070, 371, 380, 5861, 80789,11442,317, 5105, 362, 490, 16941,80793,69221,605, 80795,2568, 2105, 80796,80797,349, 38047,317, 317, 2510, 80799,317,
+ 511, 2381, 80800,2156, 551, 80801,80802,25352,317, 80804,80806,80808,466, 12141,362, 80810,80813,80815,80816,20937,80817,317, 362, 350, 317, 80805,317,
+ 5662, 80807,5273, 317, 565, 80368,351, 6599, 13387,11905,16433,80809,466, 350, 14852,317, 80811,12696,80812,80814,7191, 317, 427, 19902,80818,80819,367,
+ 490, 80821,80822,80824,80827,80829,2222, 80832,80833,317, 317, 317, 356, 80823,80825,80826,317, 80828,5896, 80830,3023, 362, 6601, 18839,439, 80831,8488,
+ 6379, 553, 80834,54798,404, 590, 2134, 80836,317, 471, 80838,80839,2081, 80840,80848,80850,80853,24577,80837,2322, 11831,65454,466, 351, 332, 80841,362,
+ 2301, 80844,7053, 80842,80843,80845,80846,80847,80849,490, 77143,317, 80851,362, 350, 317, 80852,501, 390, 4952, 12151,428, 80854,80857,343, 3999, 4591,
+ 362, 80858,317, 5397, 317, 57166,80855,13559,490, 80856,317, 5266, 1347, 317, 17239,17791,80861,80864,554, 80872,2022, 317, 15799,80862,11484,11749,8926,
80863,80865,80868,554, 80870,362, 80871,317, 317, 1060, 317, 80866,80867,6598, 551, 80869,439, 370, 466, 317, 9575, 490, 80873,80874,80876,80879,80888,
- 2024, 80890,57654,80893,80894,80908,80930,80931,675, 80932,6601, 80933,80935,80941,439, 80950,80952,35308,382, 317, 13648,29457,479, 80875,479, 317, 6594,
- 6864, 9696, 61919,80877,317, 2117, 2117, 80878,371, 3023, 365, 9878, 39326,80880,80883,16651,5662, 350, 80884,80885,25351,71991,14470,80881,565, 80882,4980,
- 9444, 2405, 6703, 8421, 2948, 3529, 317, 10592,317, 396, 317, 427, 7463, 80886,80887,1060, 396, 317, 1060, 1358, 1060, 356, 490, 490, 80889,10046,6648,
- 45460,317, 7850, 80891,80892,3284, 317, 5423, 11198,350, 80895,501, 80897,80899,13258,80903,350, 80906,317, 80907,43203,7405, 80896,317, 69317,80898,317,
- 317, 80900,80901,28208,80902,404, 80904,80905,381, 350, 12054,80909,80911,80913,80917,3023, 80918,80921,8023, 362, 350, 80923,80925,66175,80927,12423,1160,
- 5201, 80910,1999, 350, 10632,2066, 2022, 317, 5942, 5216, 317, 80912,4949, 5840, 371, 317, 80914,80916,317, 8488, 19665,80915,490, 9012, 2271, 4949, 2584,
- 2108, 9012, 2997, 371, 317, 80919,2222, 80920,317, 351, 2024, 404, 80922,390, 80924,5055, 317, 317, 20115,80926,57847,439, 80928,80929,53140,351, 2021,
+ 2024, 80890,57654,80893,80894,80908,80930,80931,675, 80932,6601, 80933,80935,80941,439, 80950,80952,35308,382, 317, 13648,29457,479, 80875,479, 317, 6594,
+ 6864, 9696, 61919,80877,317, 2117, 2117, 80878,371, 3023, 365, 9878, 39326,80880,80883,16651,5662, 350, 80884,80885,25351,71991,14470,80881,565, 80882,4980,
+ 9444, 2405, 6703, 8421, 2948, 3529, 317, 10592,317, 396, 317, 427, 7463, 80886,80887,1060, 396, 317, 1060, 1358, 1060, 356, 490, 490, 80889,10046,6648,
+ 45460,317, 7850, 80891,80892,3284, 317, 5423, 11198,350, 80895,501, 80897,80899,13258,80903,350, 80906,317, 80907,43203,7405, 80896,317, 69317,80898,317,
+ 317, 80900,80901,28208,80902,404, 80904,80905,381, 350, 12054,80909,80911,80913,80917,3023, 80918,80921,8023, 362, 350, 80923,80925,66175,80927,12423,1160,
+ 5201, 80910,1999, 350, 10632,2066, 2022, 317, 5942, 5216, 317, 80912,4949, 5840, 371, 317, 80914,80916,317, 8488, 19665,80915,490, 9012, 2271, 4949, 2584,
+ 2108, 9012, 2997, 371, 317, 80919,2222, 80920,317, 351, 2024, 404, 80922,390, 80924,5055, 317, 317, 20115,80926,57847,439, 80928,80929,53140,351, 2021,
6036, 4268, 80934,66451,345, 428, 80936,12946,80938,13177,363, 80939,5809, 80937,356, 367, 363, 80940,80942,80946,501, 61340,350, 49562,80949,317, 20664,
- 80943,10550,80944,545, 2405, 317, 1011, 30881,80945,7450, 7618, 5888, 363, 80947,2510, 19460,380, 80948,2521, 1060, 80951,345, 2024, 384, 80954,16187,317,
+ 80943,10550,80944,545, 2405, 317, 1011, 30881,80945,7450, 7618, 5888, 363, 80947,2510, 19460,380, 80948,2521, 1060, 80951,345, 2024, 384, 80954,16187,317,
1194, 80955,80956,12651,7940, 343, 16018,80957,350, 11533,427, 80958,80960,5896, 80961,80962,80966,380, 80967,80970,80971,80973,80975,4591, 34820,80978,80980,
- 10081,362, 80981,490, 16092,317, 1160, 80963,39187,80965,20869,5105, 80964,10422,10877,2026, 2161, 317, 1109, 317, 7522, 80968,5896, 37816,80969,350, 317,
- 4976, 8613, 17366,10561,490, 80972,350, 466, 317, 427, 80974,476, 317, 80976,80977,4962, 558, 2156, 16092,1481, 558, 970, 351, 80979,2022, 11089,382,
+ 10081,362, 80981,490, 16092,317, 1160, 80963,39187,80965,20869,5105, 80964,10422,10877,2026, 2161, 317, 1109, 317, 7522, 80968,5896, 37816,80969,350, 317,
+ 4976, 8613, 17366,10561,490, 80972,350, 466, 317, 427, 80974,476, 317, 80976,80977,4962, 558, 2156, 16092,1481, 558, 970, 351, 80979,2022, 11089,382,
2298, 7091, 356, 28250,4952, 4984, 55609,384, 317, 317, 80983,80984,80987,2715, 80988,596, 80989,80990,80985,80986,351, 317, 80992,949, 80994,80995,80997,
- 81002,81007,81017,81021,81024,81026,81035,81036,81038,81041,81048,81052,81053,81055,81069,81073,81078,317, 81079,8748, 80996,317, 15951,2081, 384, 80998,2509,
- 4476, 80999,81000,5538, 356, 2719, 81001,81003,81004,380, 578, 380, 81005,81006,81008,81009,81010,81011,81012,362, 81013,81014,81016,3987, 605, 317, 605,
- 1060, 81015,1060, 1597, 5809, 542, 5126, 81018,466, 17803,317, 317, 427, 2948, 2060, 81019,81020,81022,380, 81023,551, 578, 17477,81025,1325, 81027,7499,
- 81033,11918,81028,5962, 351, 81029,81030,81031,81032,81034,393, 371, 490, 43966,4965, 317, 81037,5809, 370, 81039,81040,371, 343, 382, 13715,14549,317,
- 81042,81043,30957,81045,490, 370, 545, 317, 390, 81047,371, 317, 390, 350, 6089, 81044,4984, 81046,5862, 349, 81049,5896, 553, 81050,81051,10907,384,
+ 81002,81007,81017,81021,81024,81026,81035,81036,81038,81041,81048,81052,81053,81055,81069,81073,81078,317, 81079,8748, 80996,317, 15951,2081, 384, 80998,2509,
+ 4476, 80999,81000,5538, 356, 2719, 81001,81003,81004,380, 578, 380, 81005,81006,81008,81009,81010,81011,81012,362, 81013,81014,81016,3987, 605, 317, 605,
+ 1060, 81015,1060, 1597, 5809, 542, 5126, 81018,466, 17803,317, 317, 427, 2948, 2060, 81019,81020,81022,380, 81023,551, 578, 17477,81025,1325, 81027,7499,
+ 81033,11918,81028,5962, 351, 81029,81030,81031,81032,81034,393, 371, 490, 43966,4965, 317, 81037,5809, 370, 81039,81040,371, 343, 382, 13715,14549,317,
+ 81042,81043,30957,81045,490, 370, 545, 317, 390, 81047,371, 317, 390, 350, 6089, 81044,4984, 81046,5862, 349, 81049,5896, 553, 81050,81051,10907,384,
13610,1108, 553, 317, 2024, 5793, 380, 1347, 317, 317, 371, 10878,317, 1453, 1230, 81054,356, 35634,9540, 536, 317, 501, 2369, 390, 81056,81059,81062,
81066,379, 81057,33890,81058,356, 596, 2571, 317, 317, 332, 380, 81060,317, 350, 81061,7910, 404, 371, 351, 2402, 81063,81065,317, 351, 81064,81067,
- 81068,81070,17039,81071,7871, 343, 363, 2627, 2298, 6900, 81072,6736, 317, 7911, 16876,81074,81075,81076,362, 363, 81077,317, 9567, 345, 363, 10878,343,
+ 81068,81070,17039,81071,7871, 343, 363, 2627, 2298, 6900, 81072,6736, 317, 7911, 16876,81074,81075,81076,362, 363, 81077,317, 9567, 345, 363, 10878,343,
14938,23199,2272, 81080,11336,81082,81083,81084,81087,81088,81099,81101,317, 81104,81106,36974,1347, 81107,81112,2390, 81115,81117,350, 1030, 363, 81085,81086,
317, 81089,81090,48845,81091,81092,332, 350, 33156,2584, 81096,5205, 20545,81097,81098,317, 550, 9695, 479, 351, 317, 380, 6578, 317, 81093,490, 81094,
- 3284, 404, 81095,971, 28124,317, 81100,317, 2219, 317, 489, 8296, 332, 490, 317, 370, 81102,81103,351, 81105,71490,81108,81111,5662, 363, 44767,5105,
+ 3284, 404, 81095,971, 28124,317, 81100,317, 2219, 317, 489, 8296, 332, 490, 317, 370, 81102,81103,351, 81105,71490,81108,81111,5662, 363, 44767,5105,
81109,81110,565, 5896, 5662, 9012, 1345, 78648,990, 81113,3999, 363, 81114,317, 379, 31023,317, 317, 7688, 81116,42575,605, 371, 19913,350, 81119,81124,
81127,2024, 437, 81157,81158,10223,81159,81160,81163,81167,6089, 71185,81120,81123,590, 2078, 6551, 81121,81122,81125,317, 7913, 38168,8020, 379, 28250,47492,
- 81126,32226,466, 81128,317, 1266, 81129,81132,5991, 81137,2413, 81139,466, 81141,81143,81145,81149,81152,81153,81154,317, 356, 33202,81130,448, 81131,2272,
+ 81126,32226,466, 81128,317, 1266, 81129,81132,5991, 81137,2413, 81139,466, 81141,81143,81145,81149,81152,81153,81154,317, 356, 33202,81130,448, 81131,2272,
1347, 81133,81136,81134,64165,81135,57240,6598, 81138,8254, 81140,2156, 393, 476, 2272, 81142,30674,7941, 24041,81144,4563, 49082,317, 406, 9301, 81146,81147,
- 81148,317, 81150,2261, 81151,363, 48630,404, 6355, 1060, 530, 11783,5038, 22460,1531, 3652, 81155,81156,439, 6036, 6000, 380, 466, 4591, 317, 317, 370,
- 81161,3284, 81162,81164,25180,81166,363, 4980, 590, 81165,38461,81169,317, 351, 2024, 81171,81173,81175,18794,81176,2188, 81177,81170,450, 81172,81174,362,
- 1459, 81178,317, 81180,3999, 81189,81191,490, 317, 317, 81181,81183,81184,81187,81188,1160, 8381, 8254, 81182,81185,317, 81186,1347, 370, 8647, 356, 466,
+ 81148,317, 81150,2261, 81151,363, 48630,404, 6355, 1060, 530, 11783,5038, 22460,1531, 3652, 81155,81156,439, 6036, 6000, 380, 466, 4591, 317, 317, 370,
+ 81161,3284, 81162,81164,25180,81166,363, 4980, 590, 81165,38461,81169,317, 351, 2024, 81171,81173,81175,18794,81176,2188, 81177,81170,450, 81172,81174,362,
+ 1459, 81178,317, 81180,3999, 81189,81191,490, 317, 317, 81181,81183,81184,81187,81188,1160, 8381, 8254, 81182,81185,317, 81186,1347, 370, 8647, 356, 466,
5661, 15334,81190,317, 44702,81193,10997,81194,81196,5464, 466, 350, 362, 33883,317, 81197,2809, 81199,81201,81202,343, 4965, 81206,6089, 81207,81210,81212,
- 385, 32249,81215,1347, 550, 81200,9609, 81203,81205,11373,81204,396, 5295, 9644, 551, 81208,363, 81209,81211,12907,1588, 363, 317, 1525, 81213,384, 317,
- 317, 317, 81214,36269,5037, 317, 81217,332, 81219,81218,81220,1060, 81221,81222,81223,81224,38196,427, 19287,81227,67287,590, 345, 8896, 26830,81229,380,
+ 385, 32249,81215,1347, 550, 81200,9609, 81203,81205,11373,81204,396, 5295, 9644, 551, 81208,363, 81209,81211,12907,1588, 363, 317, 1525, 81213,384, 317,
+ 317, 317, 81214,36269,5037, 317, 81217,332, 81219,81218,81220,1060, 81221,81222,81223,81224,38196,427, 19287,81227,67287,590, 345, 8896, 26830,81229,380,
81233,590, 367, 317, 81228,81230,81231,81232,8827, 81235,75562,81236,81262,81293,81302,81317,81334,81335,81344,81350,81425,81430,81433,81462,81466,81497,81498,
- 81527,81584,434, 350, 81603,81605,81606,350, 15513,350, 81237,81238,81240,81244,81245,81248,81251,81252,81261,380, 343, 13611,16248,81239,30793,317, 439,
+ 81527,81584,434, 350, 81603,81605,81606,350, 15513,350, 81237,81238,81240,81244,81245,81248,81251,81252,81261,380, 343, 13611,16248,81239,30793,317, 439,
35604,466, 317, 81241,351, 81242,363, 10354,81243,26394,317, 81246,81247,410, 6195, 81249,71110,370, 14806,317, 317, 81250,1347, 12138,52497,317, 81253,
81254,5537, 81255,317, 428, 81256,356, 12556,81257,81259,5661, 10149,81260,9298, 3710, 343, 550, 317, 355, 81258,14146,12448,5394, 35085,2603, 81263,81264,
- 81266,901, 81268,81271,2036, 81272,81273,345, 81276,343, 81278,81287,81288,2271, 14337,40111,317, 317, 81265,29838,1347, 4268, 81267,355, 81269,81270,1032,
- 55697,81274,317, 81275,81277,30314,5689, 81279,11336,81286,81280,694, 81281,81282,81283,81284,81285,81289,81290,81291,81292,81294,81299,81295,350, 81296,350,
+ 81266,901, 81268,81271,2036, 81272,81273,345, 81276,343, 81278,81287,81288,2271, 14337,40111,317, 317, 81265,29838,1347, 4268, 81267,355, 81269,81270,1032,
+ 55697,81274,317, 81275,81277,30314,5689, 81279,11336,81286,81280,694, 81281,81282,81283,81284,81285,81289,81290,81291,81292,81294,81299,81295,350, 81296,350,
81297,81298,81300,16464,362, 81301,68174,5324, 81303,81309,81311,81313,23305,362, 81314,317, 317, 2391, 81304,81307,343, 317, 5105, 81305,10943,81306,81308,
81310,5105, 6596, 317, 81312,2156, 12612,317, 317, 317, 12612,81315,317, 81316,7055, 11840,32289,390, 81318,317, 81319,81320,317, 81322,81327,81328,81329,
- 32485,20613,81330,81331,8882, 81333,6228, 842, 317, 10283,11089,466, 362, 363, 317, 317, 81321,7405, 81323,81325,81326,317, 81324,317, 317, 370, 596,
- 466, 317, 317, 22560,19283,351, 363, 345, 16187,317, 351, 2156, 370, 427, 317, 81332,351, 317, 8587, 343, 1065, 501, 317, 81336,343, 16464,2134,
+ 32485,20613,81330,81331,8882, 81333,6228, 842, 317, 10283,11089,466, 362, 363, 317, 317, 81321,7405, 81323,81325,81326,317, 81324,317, 317, 370, 596,
+ 466, 317, 317, 22560,19283,351, 363, 345, 16187,317, 351, 2156, 370, 427, 317, 81332,351, 317, 8587, 343, 1065, 501, 317, 81336,343, 16464,2134,
81337,5662, 350, 81340,81343,16023,81338,81339,363, 38271,317, 81341,81342,605, 11607,12525,6021, 317, 511, 511, 81345,44566,81346,8741, 2369, 2366, 11196,
27765,6599, 466, 81347,81348,7568, 2310, 81349,471, 4984, 439, 81351,81352,81355,81359,81362,81370,81378,81379,26790,81381,1998, 81396,81399,81422,28836,81424,
- 81353,10351,81354,380, 362, 317, 317, 81356,382, 350, 5662, 350, 8047, 5662, 81357,81358,5626, 6598, 7734, 81360,81361,81363,81364,81365,81368,362, 350,
- 578, 356, 466, 317, 81366,356, 466, 81367,362, 317, 317, 39532,69947,81369,4965, 317, 81371,81372,81373,81374,81375,4984, 81376,81377,380, 31227,343,
- 439, 81380,351, 317, 6204, 4949, 7389, 81382,21274,81383,81384,81387,4738, 3663, 4952, 5662, 81388,81391,81393,81394,12554,10560,4949, 578, 10761,81385,351,
- 81386,317, 52197,7592, 578, 7477, 81389,81390,81392,1020, 384, 16863,28664,317, 10926,81395,3366, 350, 2219, 81397,81398,24638,317, 419, 2108, 30957,370,
+ 81353,10351,81354,380, 362, 317, 317, 81356,382, 350, 5662, 350, 8047, 5662, 81357,81358,5626, 6598, 7734, 81360,81361,81363,81364,81365,81368,362, 350,
+ 578, 356, 466, 317, 81366,356, 466, 81367,362, 317, 317, 39532,69947,81369,4965, 317, 81371,81372,81373,81374,81375,4984, 81376,81377,380, 31227,343,
+ 439, 81380,351, 317, 6204, 4949, 7389, 81382,21274,81383,81384,81387,4738, 3663, 4952, 5662, 81388,81391,81393,81394,12554,10560,4949, 578, 10761,81385,351,
+ 81386,317, 52197,7592, 578, 7477, 81389,81390,81392,1020, 384, 16863,28664,317, 10926,81395,3366, 350, 2219, 81397,81398,24638,317, 419, 2108, 30957,370,
2571, 6242, 81400,13288,81402,6598, 81406,81408,55672,14834,81410,350, 81413,81415,317, 81421,741, 81401,2063, 1453, 10561,317, 81403,317, 81404,317, 81405,
8948, 9012, 10560,479, 5898, 2033, 16871,81407,81407,81409,2036, 2708, 351, 317, 5765, 81411,15221,81412,81414,81416,81417,81420,4738, 350, 39128,4949, 55808,
81418,5223, 81419,15892,2108, 479, 4949, 351, 317, 11709,362, 13670,81423,5105, 362, 350, 9938, 32297,81426,81428,81427,81429,81431,81432,19283,9938, 43431,
- 81434,81435,81440,81441,81442,81444,8756, 350, 317, 81457,81460,11607,11040,384, 479, 479, 317, 81436,81437,12731,362, 81438,81439,466, 1160, 1266, 317,
- 317, 317, 317, 317, 317, 317, 16399,3999, 363, 317, 317, 1588, 380, 551, 4965, 81443,81445,81446,13631,7035, 81448,81450,81451,380, 5662, 81454,3079,
+ 81434,81435,81440,81441,81442,81444,8756, 350, 317, 81457,81460,11607,11040,384, 479, 479, 317, 81436,81437,12731,362, 81438,81439,466, 1160, 1266, 317,
+ 317, 317, 317, 317, 317, 317, 16399,3999, 363, 317, 317, 1588, 380, 551, 4965, 81443,81445,81446,13631,7035, 81448,81450,81451,380, 5662, 81454,3079,
81455,390, 511, 81447,2584, 81449,317, 9425, 7618, 9012, 81452,350, 81453,7063, 16187,317, 49082,14320,5309, 11761,81456,7035, 5037, 7850, 511, 81458,81459,
- 363, 3079, 10149,535, 390, 81461,490, 317, 350, 363, 317, 317, 9064, 81463,12651,16187,350, 81465,476, 371, 81464,81467,81468,81472,81481,81484,554,
- 81486,10185,2584, 362, 81487,2035, 24637,81490,81494,345, 81496,81469,317, 1453, 317, 81471,81470,428, 81473,81477,81478,81479,5138, 317, 1358, 6420, 2134,
+ 363, 3079, 10149,535, 390, 81461,490, 317, 350, 363, 317, 317, 9064, 81463,12651,16187,350, 81465,476, 371, 81464,81467,81468,81472,81481,81484,554,
+ 81486,10185,2584, 362, 81487,2035, 24637,81490,81494,345, 81496,81469,317, 1453, 317, 81471,81470,428, 81473,81477,81478,81479,5138, 317, 1358, 6420, 2134,
81474,317, 81476,81475,363, 501, 317, 317, 317, 332, 390, 22339,4965, 466, 81480,2181, 350, 371, 81482,317, 81483,81485,350, 13136,317, 10590,81488,
12704,81489,380, 81491,81492,362, 14575,81493,3987, 317, 4982, 16008,5809, 81495,9878, 64695,9878, 589, 4738, 317, 466, 81499,1220, 81500,81501,81503,81505,
- 81506,81508,81510,81512,81513,81517,81518,81521,81522,373, 13650,317, 22924,2402, 7068, 81502,2402, 490, 40690,81504,81507,363, 4984, 81509,466, 12287,450,
- 16024,675, 1345, 81511,317, 15138,350, 81514,350, 81515,365, 450, 1108, 317, 553, 5223, 381, 317, 81516,37635,8254, 382, 317, 81519,81520,317, 558,
- 345, 382, 380, 2022, 13426,81523,637, 66258,81524,362, 317, 81526,5943, 81525,362, 396, 31822,42672,317, 949, 47526,81528,2856, 81530,6917, 81531,350,
+ 81506,81508,81510,81512,81513,81517,81518,81521,81522,373, 13650,317, 22924,2402, 7068, 81502,2402, 490, 40690,81504,81507,363, 4984, 81509,466, 12287,450,
+ 16024,675, 1345, 81511,317, 15138,350, 81514,350, 81515,365, 450, 1108, 317, 553, 5223, 381, 317, 81516,37635,8254, 382, 317, 81519,81520,317, 558,
+ 345, 382, 380, 2022, 13426,81523,637, 66258,81524,362, 317, 81526,5943, 81525,362, 396, 31822,42672,317, 949, 47526,81528,2856, 81530,6917, 81531,350,
81535,81537,81541,1358, 81529,317, 381, 8178, 1345, 9938, 317, 81532,81534,317, 317, 81533,81536,384, 8296, 81538,4738, 11249,362, 350, 81540,81539,12934,
- 317, 11702,2193, 1347, 362, 317, 14361,81542,81543,81547,81549,81559,81561,81563,81564,539, 81566,81568,33878,81572,81577,81579,81581,81582,370, 317, 380,
+ 317, 11702,2193, 1347, 362, 317, 14361,81542,81543,81547,81549,81559,81561,81563,81564,539, 81566,81568,33878,81572,81577,81579,81581,81582,370, 317, 380,
1230, 32950,81544,81545,448, 317, 10454,28233,7368, 81546,12312,81548,13017,33398,22996,81550,81551,37773,55160,45851,490, 81552,32952,57517,81553,81555,81556,
- 81557,81558,10538,16264,4949, 2260, 81554,1383, 52723,10147,317, 439, 317, 7662, 2236, 317, 2510, 7986, 9590, 317, 3505, 5038, 28348,81560,16923,551, 380,
+ 81557,81558,10538,16264,4949, 2260, 81554,1383, 52723,10147,317, 439, 317, 7662, 2236, 317, 2510, 7986, 9590, 317, 3505, 5038, 28348,81560,16923,551, 380,
44224,81562,45496,7592, 28066,1347, 81565,28239,6036, 81567,439, 317, 28789,81569,12593,81570,545, 350, 381, 81571,2369, 6563, 4952, 339, 14571,81573,81576,
- 81574,81575,363, 5217, 1345, 317, 24638,81578,44767,317, 81580,350, 35353,81583,19632,2063, 6355, 350, 81585,23950,2077, 81588,81589,2401, 81593,2171, 2272,
+ 81574,81575,363, 5217, 1345, 317, 24638,81578,44767,317, 81580,350, 35353,81583,19632,2063, 6355, 350, 81585,23950,2077, 81588,81589,2401, 81593,2171, 2272,
48207,81594,81596,81601,81602,81586,81587,317, 81590,5537, 343, 22717,81591,578, 14146,428, 81592,317, 12590,11229,5737, 81595,2036, 2108, 81597,3999, 81599,
- 363, 9012, 317, 81598,381, 7408, 351, 81600,2546, 15961,9878, 14865,9012, 371, 81604,1108, 380, 1481, 428, 2024, 350, 350, 38967,81607,81608,81609,1397,
+ 363, 9012, 317, 81598,381, 7408, 351, 81600,2546, 15961,9878, 14865,9012, 371, 81604,1108, 380, 1481, 428, 2024, 350, 350, 38967,81607,81608,81609,1397,
22338,64719,350, 38290,70498,4952, 81613,9914, 479, 81610,81611,317, 81612,10796,384, 19287,590, 2004, 81616,390, 81617,81618,81619,81663,81664,297, 81775,
- 81776,2058, 81800,7878, 81802,81620,81622,317, 574, 81624,81626,81628,81629,7678, 81632,81634,81635,81662,81621,356, 3999, 317, 317, 5619, 5619, 81623,490,
- 8626, 490, 81625,363, 81627,466, 2022, 2022, 7035, 317, 1347, 317, 317, 6994, 5040, 81630,81631,8613, 28836,81633,370, 404, 31403,317, 11450,317, 2631,
- 317, 81636,5619, 81637,81645,81646,81648,81649,13781,81650,81651,81653,1060, 81656,490, 1459, 8626, 380, 317, 343, 317, 343, 490, 81638,81644,81639,490,
- 81640,81641,81642,81643,370, 81647,317, 30882,490, 81652,1580, 1060, 8626, 81654,490, 81655,37825,5020, 81657,81658,81659,81660,81661,56982,317, 81665,317,
+ 81776,2058, 81800,7878, 81802,81620,81622,317, 574, 81624,81626,81628,81629,7678, 81632,81634,81635,81662,81621,356, 3999, 317, 317, 5619, 5619, 81623,490,
+ 8626, 490, 81625,363, 81627,466, 2022, 2022, 7035, 317, 1347, 317, 317, 6994, 5040, 81630,81631,8613, 28836,81633,370, 404, 31403,317, 11450,317, 2631,
+ 317, 81636,5619, 81637,81645,81646,81648,81649,13781,81650,81651,81653,1060, 81656,490, 1459, 8626, 380, 317, 343, 317, 343, 490, 81638,81644,81639,490,
+ 81640,81641,81642,81643,370, 81647,317, 30882,490, 81652,1580, 1060, 8626, 81654,490, 81655,37825,5020, 81657,81658,81659,81660,81661,56982,317, 81665,317,
38471,81668,81675,81677,81678,81683,5020, 317, 404, 317, 370, 81666,14444,20920,351, 9624, 596, 81667,363, 10354,439, 370, 317, 5537, 81669,2021, 38710,
7389, 81670,81672,404, 81674,7401, 15249,1194, 362, 384, 1160, 345, 7053, 81671,45286,343, 81673,363, 2507, 404, 81676,5561, 345, 350, 2021, 404, 38337,
343, 541, 81679,2022, 370, 81680,81681,370, 2171, 363, 396, 75525,350, 81682,349, 317, 43837,81684,501, 15066,9878, 81685,370, 81686,81688,396, 81689,
81690,81691,81693,81696,81698,81700,81715,81774,81687,350, 428, 551, 541, 7826, 6046, 554, 317, 427, 370, 19617,9170, 2584, 381, 14644,81692,2705, 81694,
- 466, 81695,317, 381, 2022, 3387, 343, 81697,317, 5005, 23014,16651,343, 317, 317, 81699,370, 370, 466, 605, 535, 12291,370, 81701,317, 81703,350,
- 362, 81705,34396,81706,81709,81702,34149,23950,404, 81704,10147,317, 317, 9720, 1160, 2369, 351, 81707,380, 81708,356, 81710,363, 81711,466, 81712,317,
+ 466, 81695,317, 381, 2022, 3387, 343, 81697,317, 5005, 23014,16651,343, 317, 317, 81699,370, 370, 466, 605, 535, 12291,370, 81701,317, 81703,350,
+ 362, 81705,34396,81706,81709,81702,34149,23950,404, 81704,10147,317, 317, 9720, 1160, 2369, 351, 81707,380, 81708,356, 81710,363, 81711,466, 81712,317,
23950,317, 317, 81713,81714,81716,81718,81719,81723,22734,31644,81750,81753,350, 81754,81758,81759,363, 2584, 81760,81763,350, 22415,81717,350, 384, 11089,
- 479, 317, 81720,81721,6894, 81722,317, 1453, 81724,81726,16401,81729,12151,81730,345, 81733,81739,81740,385, 12774,1347, 81741,81745,81747,317, 565, 551,
- 81725,11089,81727,81728,5270, 60693,11373,514, 15123,551, 81731,22241,428, 81732,11918,351, 380, 501, 17791,393, 605, 81734,81735,23306,317, 2071, 317,
- 81736,81737,81738,2510, 1020, 39055,1588, 384, 14320,466, 404, 81742,9878, 81743,12616,316, 516, 81744,2156, 2219, 81746,81748,81749,8412, 350, 317, 1383,
+ 479, 317, 81720,81721,6894, 81722,317, 1453, 81724,81726,16401,81729,12151,81730,345, 81733,81739,81740,385, 12774,1347, 81741,81745,81747,317, 565, 551,
+ 81725,11089,81727,81728,5270, 60693,11373,514, 15123,551, 81731,22241,428, 81732,11918,351, 380, 501, 17791,393, 605, 81734,81735,23306,317, 2071, 317,
+ 81736,81737,81738,2510, 1020, 39055,1588, 384, 14320,466, 404, 81742,9878, 81743,12616,316, 516, 81744,2156, 2219, 81746,81748,81749,8412, 350, 317, 1383,
356, 427, 81751,479, 356, 81752,350, 10561,4925, 81755,14311,81756,23306,81757,39055,16179,1588, 27196,1588, 81761,2117, 363, 24938,81762,81764,81765,81767,
- 81771,9420, 363, 427, 317, 317, 350, 2171, 81766,317, 317, 81552,404, 4965, 350, 81768,81769,81770,404, 81772,466, 317, 317, 81773,317, 5163, 2022,
+ 81771,9420, 363, 427, 317, 317, 350, 2171, 81766,317, 317, 81552,404, 4965, 350, 81768,81769,81770,404, 81772,466, 317, 317, 81773,317, 5163, 2022,
75520,81777,2275, 50600,81779,541, 345, 81780,81781,81789,81790,12622,81793,81795,1109, 317, 365, 81778,15417,54053,81782,370, 81783,2571, 81787,317, 81784,
81785,81786,81788,2060, 2022, 1060, 317, 81791,390, 476, 11404,81792,317, 81794,9064, 466, 34944,404, 317, 7401, 317, 317, 1580, 81796,81797,81798,81799,
317, 81801,38337,81803,16093,2533, 380, 81804,81805,8563, 81807,370, 2381, 356, 363, 317, 350, 317, 381, 317, 81806,81808,81809,81813,81818,81835,81852,
- 81885,81888,81908,81911,81912,299, 82026,300, 363, 82138,82144,82154,82201,3529, 82252,82254,82255,82256,317, 971, 81810,81811,351, 81812,81814,81817,343,
+ 81885,81888,81908,81911,81912,299, 82026,300, 363, 82138,82144,82154,82201,3529, 82252,82254,82255,82256,317, 971, 81810,81811,351, 81812,81814,81817,343,
4949, 81815,343, 81816,2021, 380, 81819,317, 81821,5294, 81823,81834,81820,81822,489, 4952, 5662, 13638,501, 10629,10894,81824,2024, 554, 81829,16024,81830,
- 66252,81832,345, 81833,55170,380, 6596, 81825,81826,317, 81828,317, 81827,317, 33875,2571, 317, 1347, 3338, 350, 439, 81831,605, 439, 23328,1358, 317,
+ 66252,81832,345, 81833,55170,380, 6596, 81825,81826,317, 81828,317, 81827,317, 33875,2571, 317, 1347, 3338, 350, 439, 81831,605, 439, 23328,1358, 317,
370, 81836,81838,81843,81845,384, 6375, 7850, 81846,81848,81849,81851,15951,351, 2551, 81837,345, 317, 38461,4952, 62572,13868,362, 14316,38487,81839,81840,
317, 317, 343, 3284, 31380,81841,317, 81842,81844,81847,351, 350, 4984, 7785, 350, 81850,10422,6089, 11831,439, 81853,81855,81858,81863,343, 81864,11608,
- 81872,81874,81880,81884,2134, 81854,13659,11147,317, 81856,4873, 16910,56281,81857,5662, 81859,37251,8178, 371, 5662, 81860,81861,65398,363, 81862,3710, 2566,
- 2310, 81445,31227,5662, 439, 14316,81865,81866,81867,24638,363, 23524,23524,345, 317, 1358, 81868,81869,81870,81871,8390, 5896, 81873,16187,343, 317, 553,
- 343, 8488, 317, 12931,362, 81875,39984,81878,81876,2845, 490, 363, 31952,81877,81879,13004,81881,350, 362, 81882,317, 317, 362, 2222, 5662, 48324,317,
- 81883,26065,466, 317, 2134, 81886,317, 551, 317, 81887,7389, 81889,2146, 81890,81892,81893,81900,81901,81903,9420, 29485,81905,5862, 81906,554, 81891,317,
+ 81872,81874,81880,81884,2134, 81854,13659,11147,317, 81856,4873, 16910,56281,81857,5662, 81859,37251,8178, 371, 5662, 81860,81861,65398,363, 81862,3710, 2566,
+ 2310, 81445,31227,5662, 439, 14316,81865,81866,81867,24638,363, 23524,23524,345, 317, 1358, 81868,81869,81870,81871,8390, 5896, 81873,16187,343, 317, 553,
+ 343, 8488, 317, 12931,362, 81875,39984,81878,81876,2845, 490, 363, 31952,81877,81879,13004,81881,350, 362, 81882,317, 317, 362, 2222, 5662, 48324,317,
+ 81883,26065,466, 317, 2134, 81886,317, 551, 317, 81887,7389, 81889,2146, 81890,81892,81893,81900,81901,81903,9420, 29485,81905,5862, 81906,554, 81891,317,
317, 81894,81895,81896,81898,317, 427, 317, 81897,5862, 317, 404, 81899,466, 317, 427, 7949, 81902,81904,10956,317, 81907,317, 5152, 317, 81909,14062,
81910,25151,8223, 81913,81915,3529, 18839,81916,77449,23172,81914,23172,317, 20319,81917,81919,81925,81929,81951,81953,81958,81959,81964,81965,81972,82013,23019,
9914, 82017,82020,82025,317, 1230, 81918,2222, 2317, 2718, 81920,81922,81923,81924,317, 81921,25077,317, 317, 317, 363, 14341,81926,11347,81927,14535,81928,
- 371, 29848,317, 81930,81931,81932,81935,81940,81942,3999, 81943,5683, 39187,81944,81945,81947,81949,81950,5898, 428, 965, 81933,3361, 6355, 81934,81936,6831,
- 362, 81937,81938,5223, 317, 1479, 350, 5896, 9012, 38707,33156,2571, 81939,363, 535, 13161,32226,81941,2334, 48917,439, 533, 317, 37886,81946,2261, 2553,
- 81948,351, 2758, 412, 439, 2063, 5836, 7261, 11236,81952,317, 317, 1160, 1020, 2317, 81954,4738, 81955,81956,380, 382, 356, 16992,81957,466, 11146,345,
- 427, 81960,36199,35705,81961,7149, 81962,20610,81963,345, 317, 363, 16029,2997, 4980, 81966,81968,81971,4980, 345, 81967,5995, 15881,317, 317, 81969,404,
- 81970,7911, 4984, 396, 1100, 10626,81973,81975,81979,81980,81982,47487,511, 81990,81991,2058, 82003,350, 82007,12774,82011,24299,81301,82012,81974,370, 6831,
+ 371, 29848,317, 81930,81931,81932,81935,81940,81942,3999, 81943,5683, 39187,81944,81945,81947,81949,81950,5898, 428, 965, 81933,3361, 6355, 81934,81936,6831,
+ 362, 81937,81938,5223, 317, 1479, 350, 5896, 9012, 38707,33156,2571, 81939,363, 535, 13161,32226,81941,2334, 48917,439, 533, 317, 37886,81946,2261, 2553,
+ 81948,351, 2758, 412, 439, 2063, 5836, 7261, 11236,81952,317, 317, 1160, 1020, 2317, 81954,4738, 81955,81956,380, 382, 356, 16992,81957,466, 11146,345,
+ 427, 81960,36199,35705,81961,7149, 81962,20610,81963,345, 317, 363, 16029,2997, 4980, 81966,81968,81971,4980, 345, 81967,5995, 15881,317, 317, 81969,404,
+ 81970,7911, 4984, 396, 1100, 10626,81973,81975,81979,81980,81982,47487,511, 81990,81991,2058, 82003,350, 82007,12774,82011,24299,81301,82012,81974,370, 6831,
1999, 81976,81977,1325, 81978,8772, 4980, 81981,2117, 2719, 381, 4980, 317, 317, 2024, 433, 81983,81985,8488, 51551,81989,317, 81984,317, 81986,317, 81988,
- 317, 4949, 81987,40111,384, 428, 2546, 317, 317, 47915,8224, 574, 2627, 317, 81992,81995,371, 81996,2024, 21190,26385,81997,81999,82001,82002,350, 317,
- 81993,1347, 1325, 317, 317, 317, 317, 317, 317, 317, 317, 317, 13877,317, 317, 363, 81994,317, 7911, 363, 363, 3075, 11782,5037, 578, 4952, 317,
- 6996, 5483, 317, 317, 81998,363, 317, 82000,2317, 404, 351, 13863,370, 2571, 404, 82004,24841,82005,82006,4984, 545, 317, 343, 381, 370, 371, 5628,
- 490, 82008,82010,82009,317, 370, 16278,637, 317, 12523,317, 2117, 2108, 6228, 10894,8301, 317, 82014,82015,5537, 82016,2401, 317, 317, 48651,381, 343,
+ 317, 4949, 81987,40111,384, 428, 2546, 317, 317, 47915,8224, 574, 2627, 317, 81992,81995,371, 81996,2024, 21190,26385,81997,81999,82001,82002,350, 317,
+ 81993,1347, 1325, 317, 317, 317, 317, 317, 317, 317, 317, 317, 13877,317, 317, 363, 81994,317, 7911, 363, 363, 3075, 11782,5037, 578, 4952, 317,
+ 6996, 5483, 317, 317, 81998,363, 317, 82000,2317, 404, 351, 13863,370, 2571, 404, 82004,24841,82005,82006,4984, 545, 317, 343, 381, 370, 371, 5628,
+ 490, 82008,82010,82009,317, 370, 16278,637, 317, 12523,317, 2117, 2108, 6228, 10894,8301, 317, 82014,82015,5537, 82016,2401, 317, 317, 48651,381, 343,
24242,545, 9557, 82018,82019,1588, 6831, 82021,82022,5623, 501, 466, 350, 363, 4280, 82024,317, 2193, 5898, 317, 82023,1345, 2609, 343, 3772, 1108, 14680,
82027,14080,62731,82031,82032,82028,389, 82029,10012,2402, 317, 389, 82030,6021, 373, 317, 317, 2117, 370, 82033,949, 320, 82034,82035,82037,82043,82066,
82076,82079,554, 82086,82089,82097,82098,82111,82112,82113,82119,38800,82135,82136,7452, 345, 5836, 32950,382, 14341,82036,54067,82038,82039,82042,5864, 82040,
- 82041,13679,32958,15757,350, 2776, 82044,82045,82046,81892,82048,82050,27614,82051,82052,82053,25067,2402, 82056,82065,345, 550, 317, 382, 50610,317, 380,
- 82047,317, 317, 427, 82049,11918,371, 1108, 412, 10878,45397,80974,12142,317, 2405, 4563, 317, 317, 350, 82054,356, 466, 2571, 82055,20319,317, 317,
+ 82041,13679,32958,15757,350, 2776, 82044,82045,82046,81892,82048,82050,27614,82051,82052,82053,25067,2402, 82056,82065,345, 550, 317, 382, 50610,317, 380,
+ 82047,317, 317, 427, 82049,11918,371, 1108, 412, 10878,45397,80974,12142,317, 2405, 4563, 317, 317, 350, 82054,356, 466, 2571, 82055,20319,317, 317,
317, 428, 82057,82060,82061,82062,81948,82063,82064,82058,82059,6696, 7592, 6709, 82067,82069,7401, 4738, 317, 4952, 82074,14663,82075,381, 82068,4949, 26788,
- 82070,82072,82071,82073,47493,15221,10641,2117, 36461,6598, 32308,82077,82078,1526, 55991,1194, 13753,511, 82080,9624, 554, 466, 82082,362, 385, 317, 7073,
+ 82070,82072,82071,82073,47493,15221,10641,2117, 36461,6598, 32308,82077,82078,1526, 55991,1194, 13753,511, 82080,9624, 554, 466, 82082,362, 385, 317, 7073,
82084,82085,5517, 317, 350, 349, 82081,5223, 317, 4980, 2222, 82083,317, 362, 18840,6736, 5205, 14170,371, 11146,2247, 65775,82087,82088,82090,9624, 16651,
- 82094,8296, 317, 317, 317, 82091,82092,317, 317, 13670,29108,5662, 10486,317, 82093,82095,82096,362, 10486,317, 317, 317, 439, 15474,384, 82099,9624,
- 82104,82073,54745,82100,362, 25021,317, 82101,82102,82103,317, 3284, 1160, 2247, 343, 82105,82107,82106,24398,554, 317, 82108,82109,82110,13062,1444, 490,
+ 82094,8296, 317, 317, 317, 82091,82092,317, 317, 13670,29108,5662, 10486,317, 82093,82095,82096,362, 10486,317, 317, 317, 439, 15474,384, 82099,9624,
+ 82104,82073,54745,82100,362, 25021,317, 82101,82102,82103,317, 3284, 1160, 2247, 343, 82105,82107,82106,24398,554, 317, 82108,82109,82110,13062,1444, 490,
317, 2108, 605, 10946,2117, 2024, 1597, 5838, 82114,362, 82115,82116,15804,605, 54119,37391,82117,82118,317, 317, 317, 317, 317, 317, 2272, 317, 82120,
82133,501, 343, 18420,82134,317, 82121,82122,8258, 317, 12447,82123,356, 72605,31380,82125,466, 511, 82126,82128,82130,82132,4949, 82124,20098,10012,10022,
- 15221,82127,9244, 82129,2553, 82131,1444, 2060, 363, 351, 2503, 82137,350, 9567, 35973,317, 82139,17462,466, 317, 82140,332, 82141,6593, 82142,82143,317,
+ 15221,82127,9244, 82129,2553, 82131,1444, 2060, 363, 351, 2503, 82137,350, 9567, 35973,317, 82139,17462,466, 317, 82140,332, 82141,6593, 82142,82143,317,
82145,390, 317, 82147,1347, 471, 16053,82152,12756,433, 511, 82153,317, 82146,7698, 317, 82148,362, 17009,317, 82149,6669, 2272, 82150,82151,6388, 10956,
46954,317, 596, 43709,82155,82156,82162,82163,82171,82173,82175,82176,82177,82178,82183,2222, 82185,82197,62338,82200,82157,82158,5866, 82159,2369, 82160,82161,
- 363, 45496,476, 82164,317, 82168,5159, 82169,362, 82170,317, 381, 20652,82165,1060, 82166,82167,16092,351, 351, 82172,7035, 8020, 379, 3999, 33877,363,
+ 363, 45496,476, 82164,317, 82168,5159, 82169,362, 82170,317, 381, 20652,82165,1060, 82166,82167,16092,351, 351, 82172,7035, 8020, 379, 3999, 33877,363,
317, 427, 317, 317, 5255, 317, 82174,1033, 8296, 82179,82180,27123,15326,82181,82182,36049,3284, 317, 317, 82184,82186,82189,82196,350, 5662, 82187,82188,
317, 317, 82190,82191,317, 363, 19591,82192,82193,82194,82195,351, 82198,379, 82199,82202,10487,82203,371, 9624, 82205,317, 82218,66820,16825,82220,82222,
- 370, 82223,82224,11146,27192,82247,38685,350, 7261, 82204,6894, 7850, 317, 551, 8695, 12563,466, 317, 427, 82206,82210,9624, 82213,82215,7073, 5005, 385,
+ 370, 82223,82224,11146,27192,82247,38685,350, 7261, 82204,6894, 7850, 317, 551, 8695, 12563,466, 317, 427, 82206,82210,9624, 82213,82215,7073, 5005, 385,
2402, 82216,8116, 82207,82208,605, 82209,4564, 466, 317, 317, 317, 317, 17038,82211,317, 558, 12421,82212,605, 74433,5861, 343, 578, 82214,427, 16704,
- 82217,21605,2063, 82219,345, 82221,17240,317, 356, 2317, 2078, 428, 81354,82225,82233,82234,82236,82237,82238,82241,82242,363, 82244,82245,350, 317, 317,
- 12291,82226,82227,82229,82228,2405, 4949, 479, 4960, 4949, 466, 82230,82231,82232,82235,462, 6696, 381, 390, 317, 317, 382, 317, 7451, 82239,82240,390,
- 396, 10086,5663, 16179,82243,82246,384, 8125, 82248,351, 2316, 82249,82250,82251,82253,38927,317, 5332, 404, 1526, 82257,5087, 350, 15130,82258,82259,6996,
- 466, 370, 317, 371, 11324,605, 82262,1060, 82263,82265,82268,82279,390, 82266,82267,317, 43193,371, 46183,52919,82269,82271,82276,317, 82270,82272,1481,
+ 82217,21605,2063, 82219,345, 82221,17240,317, 356, 2317, 2078, 428, 81354,82225,82233,82234,82236,82237,82238,82241,82242,363, 82244,82245,350, 317, 317,
+ 12291,82226,82227,82229,82228,2405, 4949, 479, 4960, 4949, 466, 82230,82231,82232,82235,462, 6696, 381, 390, 317, 317, 382, 317, 7451, 82239,82240,390,
+ 396, 10086,5663, 16179,82243,82246,384, 8125, 82248,351, 2316, 82249,82250,82251,82253,38927,317, 5332, 404, 1526, 82257,5087, 350, 15130,82258,82259,6996,
+ 466, 370, 317, 371, 11324,605, 82262,1060, 82263,82265,82268,82279,390, 82266,82267,317, 43193,371, 46183,52919,82269,82271,82276,317, 82270,82272,1481,
82274,82273,490, 82275,11347,82277,82278,82280,82281,77177,832, 82283,490, 82284,82287,82285,82286,539, 390, 82289,82290,82291,381, 605, 82292,34346,61080,
49832,82293,82294,82295,82296,82299,82303,7582, 14501,82309,82320,82321,82337,82338,82398,82411,82424,1347, 82489,82532,82537,82538,10907,82542,82545,82547,82297,
382, 350, 479, 317, 82298,5862, 10147,317, 82300,82301,39970,12931,61338,82302,7401, 317, 565, 35328,82304,82305,30126,82307,82308,43879,82306,1358, 24836,
- 2568, 6917, 82310,350, 317, 82311,82312,82314,1601, 82316,82319,27295,8488, 1108, 82313,3361, 551, 1999, 545, 82315,82317,82318,38654,10664,82322,82325,7850,
+ 2568, 6917, 82310,350, 317, 82311,82312,82314,1601, 82316,82319,27295,8488, 1108, 82313,3361, 551, 1999, 545, 82315,82317,82318,38654,10664,82322,82325,7850,
82328,384, 82329,82332,82323,82324,82326,371, 3284, 82327,317, 371, 5836, 19872,82330,351, 11146,8296, 82331,82333,8639, 13554,13638,82336,2381, 317, 82334,
- 82335,4984, 15852,8275, 82339,82341,82342,82345,82346,82348,82365,9696, 82367,82368,82371,5217, 82381,82382,82385,82386,82392,82394,437, 317, 82340,350, 317,
+ 82335,4984, 15852,8275, 82339,82341,82342,82345,82346,82348,82365,9696, 82367,82368,82371,5217, 82381,82382,82385,82386,82392,82394,437, 317, 82340,350, 317,
363, 11844,28698,6593, 82343,2117, 82344,4984, 9914, 317, 317, 317, 370, 82347,350, 637, 82349,320, 1722, 14773,633, 551, 2077, 82350,1358, 82355,82358,
- 2022, 82360,82361,64783,82362,82363,621, 1267, 317, 317, 82351,47755,82352,501, 82354,5898, 82353,30998,82356,82357,317, 82359,27367,2222, 5684, 2071, 343,
+ 2022, 82360,82361,64783,82362,82363,621, 1267, 317, 317, 82351,47755,82352,501, 82354,5898, 82353,30998,82356,82357,317, 82359,27367,2222, 5684, 2071, 343,
356, 10626,427, 356, 427, 427, 82364,363, 2310, 2272, 5898, 4949, 82366,47716,350, 317, 4984, 82369,82370,82372,82373,6599, 363, 82374,350, 82375,82377,
- 5379, 317, 317, 356, 2067, 404, 27787,5223, 317, 363, 351, 545, 82376,57566,82378,363, 82379,82380,39297,317, 1020, 82383,317, 82384,8639, 363, 7618,
- 82387,25193,38365,82388,82389,317, 82390,82391,82393,12625,350, 5662, 317, 9289, 1347, 82395,10476,317, 82396,1160, 82397,18885,404, 82399,82402,82405,1194,
+ 5379, 317, 317, 356, 2067, 404, 27787,5223, 317, 363, 351, 545, 82376,57566,82378,363, 82379,82380,39297,317, 1020, 82383,317, 82384,8639, 363, 7618,
+ 82387,25193,38365,82388,82389,317, 82390,82391,82393,12625,350, 5662, 317, 9289, 1347, 82395,10476,317, 82396,1160, 82397,18885,404, 82399,82402,82405,1194,
7785, 317, 317, 82400,317, 6089, 82401,370, 317, 82403,2156, 82404,419, 6420, 82406,82408,82410,82407,317, 82409,381, 82412,6387, 82420,82421,82422,82423,
- 317, 82413,82419,20297,82414,317, 82415,356, 82416,3999, 82417,317, 82418,23801,5418, 14251,466, 317, 20909,7949, 317, 2610, 317, 363, 351, 371, 2058,
+ 317, 82413,82419,20297,82414,317, 82415,356, 82416,3999, 82417,317, 82418,23801,5418, 14251,466, 317, 20909,7949, 317, 2610, 317, 363, 351, 371, 2058,
371, 82425,356, 82459,82460,19953,466, 82461,82463,62731,82484,82486,1347, 82487,82488,550, 370, 317, 82426,82427,82428,82431,82432,82433,2413, 82437,82439,
- 5793, 82440,82443,82446,82447,82451,16363,82455,82458,5105, 356, 356, 73504,15076,2584, 9914, 69145,317, 82429,32034,48270,6894, 82430,428, 2146, 384, 317,
- 380, 1325, 34948,82434,82435,428, 578, 317, 390, 371, 82436,82438,355, 392, 428, 380, 1347, 501, 317, 8977, 317, 82441,13269,82442,384, 317, 6355,
- 363, 396, 1992, 82444,363, 1588, 82445,370, 558, 32016,2590, 428, 82448,82449,82450,390, 990, 382, 533, 343, 396, 317, 11761,1526, 82452,82453,363,
+ 5793, 82440,82443,82446,82447,82451,16363,82455,82458,5105, 356, 356, 73504,15076,2584, 9914, 69145,317, 82429,32034,48270,6894, 82430,428, 2146, 384, 317,
+ 380, 1325, 34948,82434,82435,428, 578, 317, 390, 371, 82436,82438,355, 392, 428, 380, 1347, 501, 317, 8977, 317, 82441,13269,82442,384, 317, 6355,
+ 363, 396, 1992, 82444,363, 1588, 82445,370, 558, 32016,2590, 428, 82448,82449,82450,390, 990, 382, 533, 343, 396, 317, 11761,1526, 82452,82453,363,
82454,317, 551, 11229,82456,82457,22518,390, 6228, 38769,317, 351, 350, 13020,343, 1020, 450, 82462,551, 7053, 82464,11442,82466,82467,82469,82470,16825,
- 1194, 9914, 82477,404, 5742, 56788,82481,317, 82465,1347, 317, 370, 350, 49999,82468,2022, 7651, 392, 82471,9557, 82472,317, 82473,82474,82475,82476,370,
+ 1194, 9914, 82477,404, 5742, 56788,82481,317, 82465,1347, 317, 370, 350, 49999,82468,2022, 7651, 392, 82471,9557, 82472,317, 82473,82474,82475,82476,370,
363, 82478,82479,363, 82480,82482,82483,82485,370, 56705,363, 69375,363, 6046, 61665,82490,82491,82497,12109,82498,82510,82514,2222, 82517,82518,82522,82528,
35415,12312,82492,466, 82493,82494,20869,1060, 317, 605, 476, 533, 605, 24130,82495,1230, 2571, 82496,6409, 317, 380, 82499,82500,1230, 10422,82501,20393,
- 82502,82504,77052,22716,82507,82508,82509,1060, 373, 25934,5281, 10189,9696, 16875,25078,551, 82503,393, 7506, 511, 82505,317, 82506,317, 351, 501, 317,
+ 82502,82504,77052,22716,82507,82508,82509,1060, 373, 25934,5281, 10189,9696, 16875,25078,551, 82503,393, 7506, 511, 82505,317, 82506,317, 351, 501, 317,
404, 4268, 5836, 18941,50854,25545,1060, 50854,6425, 384, 439, 82511,370, 343, 605, 6228, 82512,370, 539, 317, 58769,82513,381, 5332, 1060, 351, 32011,
- 15738,82515,48991,82516,2022, 2222, 5005, 545, 6089, 317, 2134, 1108, 82519,428, 9878, 82520,82521,12925,13631,3999, 5159, 82523,4982, 82524,2022, 82527,427,
- 82525,82526,15293,379, 466, 15253,317, 82529,4738, 2022, 362, 363, 317, 5332, 9557, 82530,66820,10517,317, 345, 82531,476, 5862, 350, 384, 82533,317,
- 82534,82535,82536,363, 363, 511, 404, 48014,82539,5272, 2509, 551, 82540,550, 22469,317, 82541,381, 18048,356, 317, 82543,2509, 82544,462, 82546,371,
+ 15738,82515,48991,82516,2022, 2222, 5005, 545, 6089, 317, 2134, 1108, 82519,428, 9878, 82520,82521,12925,13631,3999, 5159, 82523,4982, 82524,2022, 82527,427,
+ 82525,82526,15293,379, 466, 15253,317, 82529,4738, 2022, 362, 363, 317, 5332, 9557, 82530,66820,10517,317, 345, 82531,476, 5862, 350, 384, 82533,317,
+ 82534,82535,82536,363, 363, 511, 404, 48014,82539,5272, 2509, 551, 82540,550, 22469,317, 82541,381, 18048,356, 317, 82543,2509, 82544,462, 82546,371,
82336,82548,10487,370, 82549,317, 13554,44431,82551,476, 82555,380, 316, 82556,380, 365, 82552,82553,82554,317, 82557,82558,82560,82562,605, 82572,82582,
82601,82608,6515, 82609,82610,82563,82564,82565,317, 82566,82568,82569,82570,543, 317, 471, 15951,82567,9878, 24577,5280, 317, 15253,317, 5022, 343, 82571,
24530,82573,82574,343, 2261, 1020, 82576,82577,82581,7678, 7582, 5273, 15951,82575,990, 10422,466, 317, 7857, 1358, 317, 82578,1087, 356, 82579,82580,35724,
317, 317, 5430, 1347, 317, 390, 343, 3007, 82583,82587,82591,82593,82596,373, 82584,2022, 82585,317, 363, 5537, 363, 82586,380, 362, 363, 5037, 22983,
- 82588,317, 82589,82590,317, 82592,2022, 82594,31023,363, 317, 82595,82597,511, 9648, 317, 501, 82598,317, 82599,317, 82600,5773, 26381,82602,14938,317,
- 82604,82607,530, 2134, 380, 82603,15326,5836, 317, 82605,3284, 82606,356, 10891,370, 317, 1230, 4984, 317, 501, 2134, 371, 382, 2033, 317, 370, 363,
+ 82588,317, 82589,82590,317, 82592,2022, 82594,31023,363, 317, 82595,82597,511, 9648, 317, 501, 82598,317, 82599,317, 82600,5773, 26381,82602,14938,317,
+ 82604,82607,530, 2134, 380, 82603,15326,5836, 317, 82605,3284, 82606,356, 10891,370, 317, 1230, 4984, 317, 501, 2134, 371, 382, 2033, 317, 370, 363,
82611,82612,46329,5241, 82614,3869, 1060, 82616,82617,82615,317, 949, 2261, 2476, 2462, 4336, 1358, 82619,2219, 1791, 1060, 82620,82623,2645, 317, 16749,82621,
- 82622,82624,317, 82625,82626,82628,82629,82630,82633,82636,82637,82646,82647,82649,5623, 82650,82653,82658,82659,82662,82671,82673,5894, 965, 82677,82631,1020,
- 10081,82632,82634,466, 82635,1453, 82638,82642,82643,82644,82639,82640,82641,44265,317, 82645,82648,82651,362, 82652,565, 466, 3967, 82654,317, 350, 2108,
- 82655,317, 82656,82657,317, 27286,317, 82660,82661,2254, 2298, 82663,33844,9274, 82664,82667,82670,317, 317, 82665,11040,82666,82668,82669,317, 2507, 590,
- 82672,317, 596, 605, 317, 82674,13954,553, 82675,82676,82679,339, 82681,82682,2631, 365, 356, 82683,82684,82687,949, 12154,1151, 317, 82685,82686,4197,
+ 82622,82624,317, 82625,82626,82628,82629,82630,82633,82636,82637,82646,82647,82649,5623, 82650,82653,82658,82659,82662,82671,82673,5894, 965, 82677,82631,1020,
+ 10081,82632,82634,466, 82635,1453, 82638,82642,82643,82644,82639,82640,82641,44265,317, 82645,82648,82651,362, 82652,565, 466, 3967, 82654,317, 350, 2108,
+ 82655,317, 82656,82657,317, 27286,317, 82660,82661,2254, 2298, 82663,33844,9274, 82664,82667,82670,317, 317, 82665,11040,82666,82668,82669,317, 2507, 590,
+ 82672,317, 596, 605, 317, 82674,13954,553, 82675,82676,82679,339, 82681,82682,2631, 365, 356, 82683,82684,82687,949, 12154,1151, 317, 82685,82686,4197,
1132, 317, 82688,82691,3227, 82689,82690,317, 82692,317, 673, 82693,82695,1108, 949, 82696,82698,82701,82702,82705,82708,82709,82711,82713,82714,82716,82722,
- 82723,82726,82730,82736,34293,82699,21303,82700,317, 13190,317, 12931,343, 40526,1358, 65775,82703,82704,3529, 396, 7010, 396, 5866, 82706,350, 350, 317,
+ 82723,82726,82730,82736,34293,82699,21303,82700,317, 13190,317, 12931,343, 40526,1358, 65775,82703,82704,3529, 396, 7010, 396, 5866, 82706,350, 350, 317,
82707,1347, 38692,82710,343, 82712,343, 3529, 35043,1358, 6546, 343, 2058, 317, 363, 351, 82715,317, 57241,343, 63291,5896, 82717,82719,490, 38793,82720,
82721,6412, 550, 82718,554, 6968, 381, 511, 11235,317, 24638,82724,82725,317, 82727,82729,317, 61338,2219, 82728,44431,2058, 382, 390, 82731,82732,82733,
82734,82735,2742, 82738,82742,82750,82752,82755,82759,82761,82766,82788,82792,82796,82808,82811,82813,82831,82834,82838,82839,82842,82849,82854,82855,82859,82865,
82875,82836,82882,82883,82897,82909,82739,82740,82741,82743,82747,82749,82744,82745,82746,82748,82751,82753,82754,82756,82757,82758,82760,82762,82763,82764,82765,
82767,82771,82778,77143,3710, 82781,82785,82786,82768,82769,82770,82772,82773,82774,82775,82776,82777,82779,82780,82782,2222, 317, 82783,363, 82784,490, 28413,
- 50458,82787,2553, 5623, 339, 82789,82790,82791,3031, 82793,380, 2373, 22995,71740,82794,82795,82797,490, 82799,363, 82805,82807,82798,82800,490, 82801,2260,
+ 50458,82787,2553, 5623, 339, 82789,82790,82791,3031, 82793,380, 2373, 22995,71740,82794,82795,82797,490, 82799,363, 82805,82807,82798,82800,490, 82801,2260,
12429,5430, 1160, 82802,82803,345, 82804,8583, 317, 1108, 339, 82806,596, 5776, 32191,82809,19106,82810,5459, 82812,56100,362, 82814,27184,5120, 82821,82822,
82823,82826,82829,317, 5623, 589, 501, 82815,82817,28836,82816,2357, 5623, 14529,511, 82818,82819,82820,68062,7360, 82824,82825,466, 31505,365, 6834, 82827,
82828,82830,3446, 82832,82833,82835,82836,82837,6002, 363, 317, 1060, 82840,82841,82843,82847,82844,82845,82846,380, 82848,16093,9993, 76324,82850,82851,82852,
- 82853,82856,82857,82858,381, 49591,82860,82863,82861,82862,82864,2462, 4336, 2461, 2475, 2492, 2532, 2549, 82866,82868,82870,82871,82873,82867,20806,82869,1721,
- 317, 2060, 82872,22939,82874,82876,39637,317, 82879,490, 501, 19307,82877,40721,590, 82878,82880,82881,82835,82836,82884,82885,1087, 672, 632, 82886,1230,
+ 82853,82856,82857,82858,381, 49591,82860,82863,82861,82862,82864,2462, 4336, 2461, 2475, 2492, 2532, 2549, 82866,82868,82870,82871,82873,82867,20806,82869,1721,
+ 317, 2060, 82872,22939,82874,82876,39637,317, 82879,490, 501, 19307,82877,40721,590, 82878,82880,82881,82835,82836,82884,82885,1087, 672, 632, 82886,1230,
362, 82887,1428, 82893,2402, 82894,1038, 1107, 637, 5074, 82888,476, 82889,82890,82891,82892,317, 82895,317, 82896,82898,82902,466, 82906,82908,82899,82900,
82901,18123,82903,82904,343, 82905,7360, 2272, 82907,949, 17565,63202,2506, 82910,82911,82912,82913,82933,82935,303, 83071,83083,83088,304, 83167,83197,83208,
83211,83228,83244,83246,83247,83252,305, 83350,83359,83365,83375,83380,83400,83451,83457,83460,83464,83473,82914,541, 3869, 12429,82915,5628, 558, 82928,82916,
82917,82918,82919,82920,82921,82922,82923,82924,82925,82926,82927,82929,82930,82931,82932,82934,82936,82937,82938,82939,82941,82948,82950,82951,82952,82959,82960,
82961,82964,82974,82975,82994,83023,83024,83025,83027,83043,83055,83059,83061,83063,83065,83066,12088,380, 7477, 390, 317, 8281, 317, 317, 82940,82942,21090,
- 82943,82945,82947,5033, 82944,466, 7949, 82946,2022, 317, 1020, 332, 367, 7035, 82949,5611, 363, 2110, 1020, 363, 317, 11357,32289,25562,317, 8926, 8525,
- 365, 343, 13457,5325, 4984, 82953,365, 4984, 82954,490, 82956,596, 590, 82955,317, 490, 82957,82958,7579, 2533, 490, 317, 5891, 332, 6415, 20995,3611,
- 490, 7579, 490, 82962,82963,2845, 13392,2845, 511, 82965,362, 82966,82969,82972,82967,317, 82968,82970,82971,5943, 748, 54996,332, 37575,82973,490, 381,
- 490, 371, 317, 317, 317, 2503, 363, 490, 317, 82976,82985,8023, 4984, 82986,82989,10626,82990,82992,1155, 82993,490, 82977,82978,82980,29531,82982,1481,
+ 82943,82945,82947,5033, 82944,466, 7949, 82946,2022, 317, 1020, 332, 367, 7035, 82949,5611, 363, 2110, 1020, 363, 317, 11357,32289,25562,317, 8926, 8525,
+ 365, 343, 13457,5325, 4984, 82953,365, 4984, 82954,490, 82956,596, 590, 82955,317, 490, 82957,82958,7579, 2533, 490, 317, 5891, 332, 6415, 20995,3611,
+ 490, 7579, 490, 82962,82963,2845, 13392,2845, 511, 82965,362, 82966,82969,82972,82967,317, 82968,82970,82971,5943, 748, 54996,332, 37575,82973,490, 381,
+ 490, 371, 317, 317, 317, 2503, 363, 490, 317, 82976,82985,8023, 4984, 82986,82989,10626,82990,82992,1155, 82993,490, 82977,82978,82980,29531,82982,1481,
82984,357, 11388,10898,489, 11388,82979,6996, 39691,82981,317, 82983,317, 317, 1459, 3284, 343, 53525,82987,82988,14645,2272, 82991,362, 82995,82998,82999,
- 83000,83001,83002,83003,83010,83014,83015,83019,83020,971, 82996,317, 317, 317, 6901, 82997,1345, 883, 371, 317, 317, 9878, 343, 605, 2110, 317, 317,
- 489, 317, 317, 362, 363, 5017, 19307,317, 490, 490, 390, 370, 83004,3999, 83007,1160, 404, 317, 83005,317, 317, 651, 1060, 83006,83008,83009,3284,
+ 83000,83001,83002,83003,83010,83014,83015,83019,83020,971, 82996,317, 317, 317, 6901, 82997,1345, 883, 371, 317, 317, 9878, 343, 605, 2110, 317, 317,
+ 489, 317, 317, 362, 363, 5017, 19307,317, 490, 490, 390, 370, 83004,3999, 83007,1160, 404, 317, 83005,317, 317, 651, 1060, 83006,83008,83009,3284,
4925, 13158,83011,83013,34925,40546,83012,404, 1913, 9690, 34721,15017,317, 83016,83017,83018,365, 345, 490, 36437,9993, 83021,83022,83026,83028,317, 83029,
- 83031,350, 10840,15821,5379, 83032,83034,83035,83040,6089, 9530, 68435,83030,10454,10454,4943, 990, 40164,2077, 4965, 2022, 362, 15935,363, 14446,83033,390,
+ 83031,350, 10840,15821,5379, 83032,83034,83035,83040,6089, 9530, 68435,83030,10454,10454,4943, 990, 40164,2077, 4965, 2022, 362, 15935,363, 14446,83033,390,
317, 83036,317, 83037,83038,83039,83041,428, 83042,605, 5538, 317, 332, 83044,13920,83045,83046,19913,83047,490, 83049,83050,83053,4782, 317, 490, 11198,
- 317, 501, 83048,83051,83052,490, 67597,317, 44105,8920, 317, 971, 2078, 83054,553, 3429, 365, 6546, 490, 83056,12154,83057,332, 83058,83060,350, 317,
- 83062,74387,343, 39298,1108, 348, 2351, 7322, 83064,2022, 11613,317, 317, 42580,83067,83069,332, 83070,2211, 83068,317, 83072,83074,9450, 83075,373, 6555,
+ 317, 501, 83048,83051,83052,490, 67597,317, 44105,8920, 317, 971, 2078, 83054,553, 3429, 365, 6546, 490, 83056,12154,83057,332, 83058,83060,350, 317,
+ 83062,74387,343, 39298,1108, 348, 2351, 7322, 83064,2022, 11613,317, 317, 42580,83067,83069,332, 83070,2211, 83068,317, 83072,83074,9450, 83075,373, 6555,
83073,83076,4773, 83080,83077,6778, 83078,83079,396, 83081,83082,1160, 32201,83084,83085,83086,83087,2110, 39034,83089,70087,83099,83100,83102,83104,83105,83109,
- 83110,83111,83118,83129,83133,83138,83140,83141,83147,83162,83164,83165,3987, 971, 23092,16483,12651,83090,83091,5419, 2022, 83092,12360,83098,637, 23092,4925,
- 362, 48359,317, 380, 10223,317, 83093,83095,2809, 83096,5961, 83097,10876,25995,9425, 490, 6089, 317, 83094,7449, 317, 15616,363, 466, 466, 317, 9450,
+ 83110,83111,83118,83129,83133,83138,83140,83141,83147,83162,83164,83165,3987, 971, 23092,16483,12651,83090,83091,5419, 2022, 83092,12360,83098,637, 23092,4925,
+ 362, 48359,317, 380, 10223,317, 83093,83095,2809, 83096,5961, 83097,10876,25995,9425, 490, 6089, 317, 83094,7449, 317, 15616,363, 466, 466, 317, 9450,
362, 363, 317, 345, 57668,635, 43914,317, 332, 83101,83103,8301, 356, 20592,1358, 83106,83107,83108,510, 12651,83112,380, 83113,83114,83115,83116,83117,
- 25190,37357,83119,83120,1943, 363, 83122,9198, 317, 2533, 83127,317, 83128,11654,363, 83121,317, 317, 15044,3999, 83123,317, 371, 83124,6996, 320, 317,
+ 25190,37357,83119,83120,1943, 363, 83122,9198, 317, 2533, 83127,317, 83128,11654,363, 83121,317, 317, 15044,3999, 83123,317, 371, 83124,6996, 320, 317,
317, 317, 317, 550, 1020, 83125,12434,83126,2276, 16138,5005, 5022, 355, 16075,5537, 10505,83130,83131,83132,12864,31398,83134,83135,83136,351, 5087, 83137,
317, 5058, 2108, 1020, 317, 551, 6036, 317, 2108, 350, 317, 317, 83139,1992, 3361, 317, 9336, 363, 5392, 1108, 501, 83142,404, 83143,33846,3869, 83144,
83145,370, 7850, 83146,370, 79720,18661,363, 332, 362, 317, 9170, 8177, 427, 5570, 949, 83148,5431, 83149,83153,75286,362, 29407,83154,83156,29673,83160,
317, 83150,490, 83151,83152,5431, 83155,14695,1347, 83157,83159,83158,11840,12429,83161,317, 362, 8099, 83163,350, 2717, 382, 317, 2610, 83166,501, 79882,
83168,83177,83179,83181,83184,83187,83189,83195,83196,83169,83170,83171,83172,83174,83173,6228, 3314, 83175,83176,83178,83180,83182,83183,17249,83185,83186,23468,
31822,612, 83188,490, 611, 83190,83192,83191,83193,83194,317, 396, 19082,1100, 1108, 83198,83201,83205,83207,83199,83200,83202,83203,83204,83206,83209,83210,
- 3630, 4076, 317, 39953,45379,39637,83212,83213,433, 596, 83214,317, 83218,83221,83222,83224,590, 5624, 5623, 388, 35307,363, 83215,83217,83216,83219,2357,
+ 3630, 4076, 317, 39953,45379,39637,83212,83213,433, 596, 83214,317, 83218,83221,83222,83224,590, 5624, 5623, 388, 35307,363, 83215,83217,83216,83219,2357,
83220,381, 2357, 466, 384, 317, 27903,3052, 83223,2086, 83225,83226,7850, 83227,83229,83230,83239,83242,83231,83232,83235,83237,83233,83234,83236,34691,24361,
83238,83240,83241,83243,83245,39134,466, 971, 12756,83248,490, 83249,83250,83251,1108, 83253,66727,83254,345, 9171, 2058, 80105,317, 83255,421, 83256,83260,
83263,83264,83269,11388,83272,83274,83277,83280,83284,83290,1060, 83291,83292,83297,83309,83310,83344,83346,543, 83347,83349,33440,381, 317, 83257,4591, 83258,
- 427, 1194, 427, 427, 427, 427, 427, 83259,83261,83262,345, 2261, 949, 633, 2074, 16288,317, 5223, 83265,389, 6450, 83266,1999, 83267,6834, 49429,317,
+ 427, 1194, 427, 427, 427, 427, 427, 83259,83261,83262,345, 2261, 949, 633, 2074, 16288,317, 5223, 83265,389, 6450, 83266,1999, 83267,6834, 49429,317,
12429,317, 317, 83268,83270,317, 317, 317, 83271,2035, 83273,365, 83275,2134, 2022, 83276,427, 8926, 317, 40790,490, 8926, 10836,83278,1347, 13538,32746,
- 83279,83281,345, 83283,26280,83282,317, 3726, 2178, 83285,343, 350, 83286,83288,317, 83289,343, 317, 28836,5392, 2271, 317, 71494,490, 317, 83287,1481,
- 54727,6900, 317, 343, 362, 343, 43275,7419, 51025,2066, 317, 350, 427, 490, 371, 35774,317, 2022, 83293,83294,317, 317, 18661,7973, 317, 10715,8830,
+ 83279,83281,345, 83283,26280,83282,317, 3726, 2178, 83285,343, 350, 83286,83288,317, 83289,343, 317, 28836,5392, 2271, 317, 71494,490, 317, 83287,1481,
+ 54727,6900, 317, 343, 362, 343, 43275,7419, 51025,2066, 317, 350, 427, 490, 371, 35774,317, 2022, 83293,83294,317, 317, 18661,7973, 317, 10715,8830,
83295,362, 83296,11782,5037, 83298,83299,332, 5120, 437, 553, 317, 2627, 390, 83300,317, 3284, 490, 317, 83301,83302,83303,83304,9174, 83306,83307,83308,
2110, 867, 6901, 317, 317, 317, 83305,1481, 41735,2845, 3284, 6901, 3429, 83311,83312,317, 428, 83314,83316,83319,83320,83321,12943,8948, 83333,83337,83343,
- 590, 343, 388, 55181,317, 380, 317, 343, 343, 83313,343, 433, 83315,83317,83318,9702, 8304, 2402, 363, 343, 345, 83322,8506, 83332,317, 1347, 317,
- 83323,14571,83325,83326,1020, 83329,362, 2272, 6601, 501, 83330,4949, 83324,12019,381, 3079, 83327,83328,345, 434, 83331,2510, 5841, 426, 2510, 5055, 476,
+ 590, 343, 388, 55181,317, 380, 317, 343, 343, 83313,343, 433, 83315,83317,83318,9702, 8304, 2402, 363, 343, 345, 83322,8506, 83332,317, 1347, 317,
+ 83323,14571,83325,83326,1020, 83329,362, 2272, 6601, 501, 83330,4949, 83324,12019,381, 3079, 83327,83328,345, 434, 83331,2510, 5841, 426, 2510, 5055, 476,
1358, 83334,83335,83336,2845, 45496,2060, 381, 15224,12154,83338,1383, 396, 332, 83340,317, 83342,83339,83341,11753,317, 41786,2022, 5866, 83345,5570, 83348,
949, 11786,365, 490, 317, 10580,332, 2035, 83351,596, 83356,83352,83353,83354,83355,83357,83358,83360,83362,83361,83363,83364,83366,83369,83370,332, 83373,
83367,83368,83371,83372,6645, 501, 83374,83376,16989,351, 536, 2869, 83377,40474,2705, 83379,42592,343, 83378,1023, 17196,83381,83384,83390,83392,6903, 25002,
83397,83382,83383,83385,83388,83386,83387,83389,83391,83393,83395,83394,490, 83396,83398,83399,83401,490, 83403,83406,83411,83413,83419,83420,83423,83425,83429,
- 83432,83434,83436,83437,83438,83445,83448,83449,501, 490, 83450,83402,490, 83404,490, 7384, 1345, 83405,428, 83407,83408,83410,83409,317, 83412,574, 2078,
+ 83432,83434,83436,83437,83438,83445,83448,83449,501, 490, 83450,83402,490, 83404,490, 7384, 1345, 83405,428, 83407,83408,83410,83409,317, 83412,574, 2078,
317, 83414,83415,83416,83417,83418,2078, 380, 83421,83422,9265, 83424,83426,83427,83428,2003, 83430,83431,1347, 317, 30214,83433,4984, 43275,381, 345, 83435,
345, 2222, 1020, 362, 317, 345, 345, 43690,2132, 673, 2272, 883, 33533,317, 371, 55568,317, 83439,83441,83442,83444,362, 15399,317, 8176, 83440,83443,
- 332, 317, 52231,14415,317, 7850, 396, 83446,317, 5611, 396, 1358, 83447,317, 343, 8281, 9174, 317, 1345, 13881,13498,363, 83452,83453,83455,18581,2070,
+ 332, 317, 52231,14415,317, 7850, 396, 83446,317, 5611, 396, 1358, 83447,317, 343, 8281, 9174, 317, 1345, 13881,13498,363, 83452,83453,83455,18581,2070,
317, 574, 83454,83456,490, 83458,83459,2665, 83461,83462,83463,83465,83468,83472,83466,83467,83469,317, 83470,317, 83471,83474,83475,40474,42592,42592,83476,
2086, 83477,83497,307, 83717,83721,83738,308, 83847,83851,309, 83956,83726,83964,83973,83979,83985,84045,84051,84062,84072,84088,84090,84154,84165,84187,84223,
84234,2779, 83478,83483,83493,83479,83480,83481,83482,317, 83484,83485,83486,83487,83488,83489,83490,83491,83492,83494,83495,83496,83498,83499,83500,83501,83502,
83513,83527,83533,83534,83536,83543,83552,83558,83559,83572,83580,83604,83623,83624,83640,83660,83682,83685,83689,83696,83703,83709,83713,83714,83503,332, 83505,
- 83506,83507,83508,83510,83512,490, 3611, 6693, 490, 83504,16535,317, 5836, 317, 61831,317, 83509,3284, 5836, 18782,83511,339, 8296, 3284, 46099,11146,343,
- 83514,83517,371, 83520,83526,971, 18047,83515,83516,83518,2210, 83519,15721,83521,83525,5662, 370, 350, 83522,317, 8274, 83523,1160, 83524,448, 448, 317,
+ 83506,83507,83508,83510,83512,490, 3611, 6693, 490, 83504,16535,317, 5836, 317, 61831,317, 83509,3284, 5836, 18782,83511,339, 8296, 3284, 46099,11146,343,
+ 83514,83517,371, 83520,83526,971, 18047,83515,83516,83518,2210, 83519,15721,83521,83525,5662, 370, 350, 83522,317, 8274, 83523,1160, 83524,448, 448, 317,
4965, 317, 83528,66554,2279, 83529,83531,317, 83530,317, 317, 63138,317, 83532,490, 317, 2590, 13457,553, 351, 83535,10382,2110, 14144,9214, 2322, 83537,
- 12309,3611, 83538,83539,83541,317, 16535,3284, 1481, 365, 317, 1109, 357, 83540,1331, 343, 3284, 367, 83542,490, 15480,317, 83544,83546,5991, 10185,317,
+ 12309,3611, 83538,83539,83541,317, 16535,3284, 1481, 365, 317, 1109, 357, 83540,1331, 343, 3284, 367, 83542,490, 15480,317, 83544,83546,5991, 10185,317,
83547,83548,83549,317, 83545,10505,371, 345, 7116, 12696,7651, 343, 605, 14615,17471,83550,35975,83551,317, 83553,317, 83554,83555,343, 11928,83557,11485,
- 380, 83556,317, 1020, 1881, 2035, 339, 317, 2134, 13434,83560,9450, 83566,4965, 317, 83567,83568,83570,83571,83561,83562,317, 83563,83564,83565,9298, 5836,
+ 380, 83556,317, 1020, 1881, 2035, 339, 317, 2134, 13434,83560,9450, 83566,4965, 317, 83567,83568,83570,83571,83561,83562,317, 83563,83564,83565,9298, 5836,
83569,11280,83573,83574,83575,83577,2035, 317, 2222, 362, 83578,1108, 83579,5295, 2081, 317, 565, 2035, 14252,5836, 83576,5836, 343, 5838, 83581,83584,37927,
- 83591,83595,83597,83600,26005,83603,7356, 971, 5120, 83582,83583,7306, 363, 83585,83586,83587,83588,83590,596, 7657, 6402, 365, 12931,365, 83589,2715, 5570,
+ 83591,83595,83597,83600,26005,83603,7356, 971, 5120, 83582,83583,7306, 363, 83585,83586,83587,83588,83590,596, 7657, 6402, 365, 12931,365, 83589,2715, 5570,
2317, 9214, 605, 83592,1109, 83593,83594,6993, 83596,83598,83599,5836, 5328, 363, 317, 83601,83602,7273, 62208,2210, 2178, 2381, 2210, 83605,83606,83609,83612,
- 83614,83615,83616,6600, 317, 490, 83617,83618,7823, 83619,83621,317, 83622,3688, 1526, 83607,83608,317, 83610,490, 317, 7894, 83611,2381, 317, 83613,2715,
+ 83614,83615,83616,6600, 317, 490, 83617,83618,7823, 83619,83621,317, 83622,3688, 1526, 83607,83608,317, 83610,490, 317, 7894, 83611,2381, 317, 83613,2715,
365, 5037, 36649,317, 350, 365, 317, 13174,5120, 317, 490, 2715, 490, 339, 351, 83620,371, 490, 489, 2036, 83625,380, 317, 83627,83629,83630,83635,
- 83639,317, 338, 489, 83626,1347, 867, 9179, 317, 83628,332, 2066, 363, 5619, 83631,83634,83632,83633,339, 2316, 83636,5991, 24443,83638,5687, 317, 490,
+ 83639,317, 338, 489, 83626,1347, 867, 9179, 317, 83628,332, 2066, 363, 5619, 83631,83634,83632,83633,339, 2316, 83636,5991, 24443,83638,5687, 317, 490,
83637,400, 566, 83641,83642,2462, 83651,83657,2461, 83643,83648,83644,2462, 83645,740, 315, 83646,83647,83649,83650,83652,83653,6228, 83654,83655,83656,83658,
- 83659,83661,9739, 83666,83667,83668,9483, 83669,12789,83672,83673,83675,7949, 83679,83680,83681,83662,317, 356, 83663,83665,317, 83664,20779,2178, 1108, 5836,
- 317, 2381, 62086,317, 5295, 317, 6937, 14455,3284, 5295, 83670,83671,83674,83676,5687, 83678,317, 365, 83677,5033, 2142, 38220,2380, 11146,2004, 565, 2134,
- 19988,332, 83683,55479,83684,2402, 490, 2590, 83686,332, 83688,18064,2035, 83687,11388,5836, 2381, 83690,1459, 382, 83694,2108, 83691,83692,83693,83695,351,
+ 83659,83661,9739, 83666,83667,83668,9483, 83669,12789,83672,83673,83675,7949, 83679,83680,83681,83662,317, 356, 83663,83665,317, 83664,20779,2178, 1108, 5836,
+ 317, 2381, 62086,317, 5295, 317, 6937, 14455,3284, 5295, 83670,83671,83674,83676,5687, 83678,317, 365, 83677,5033, 2142, 38220,2380, 11146,2004, 565, 2134,
+ 19988,332, 83683,55479,83684,2402, 490, 2590, 83686,332, 83688,18064,2035, 83687,11388,5836, 2381, 83690,1459, 382, 83694,2108, 83691,83692,83693,83695,351,
83697,5608, 83700,83701,83702,2317, 25114,83698,2317, 83699,404, 13233,8281, 1108, 83704,83705,3284, 45923,6866, 2317, 83706,379, 83708,490, 83707,7850, 13638,
490, 345, 83710,404, 83711,83712,52928,317, 356, 13434,43913,317, 363, 83715,83716,428, 83718,432, 46452,83720,14170,83719,13638,3243, 18853,83722,83729,
83731,83723,83724,83725,83727,83728,83730,83732,83733,83734,83735,83736,83737,83739,43060,363, 83740,83743,82302,45345,317, 83741,83742,1881, 83744,83748,83753,
83757,83759,83762,83764,83767,83773,83781,83782,83801,83805,83813,83815,30804,83819,83830,83833,12216,83838,83841,83846,2844, 2298, 83745,2533, 83747,6388, 59723,
- 83746,317, 18820,83749,2022, 83750,83752,558, 5105, 83751,8296, 6228, 317, 3284, 388, 317, 83754,83755,58710,67564,2210, 83756,9450, 2134, 362, 1453, 317,
- 371, 83758,466, 363, 350, 2142, 83760,2188, 317, 4952, 362, 2631, 5561, 83761,83763,83765,351, 83766,83768,317, 83769,83770,83772,566, 48330,350, 351,
+ 83746,317, 18820,83749,2022, 83750,83752,558, 5105, 83751,8296, 6228, 317, 3284, 388, 317, 83754,83755,58710,67564,2210, 83756,9450, 2134, 362, 1453, 317,
+ 371, 83758,466, 363, 350, 2142, 83760,2188, 317, 4952, 362, 2631, 5561, 83761,83763,83765,351, 83766,83768,317, 83769,83770,83772,566, 48330,350, 351,
83771,5626, 351, 466, 83774,351, 39812,83775,83776,22130,83777,83778,363, 1033, 350, 362, 351, 4738, 362, 80843,47873,4965, 350, 317, 83779,33846,83780,
466, 317, 1347, 317, 5241, 83783,83786,83787,83789,83791,83795,83796,83799,15031,2581, 83800,490, 83784,490, 83785,1160, 363, 317, 45033,404, 317, 83788,
- 15480,317, 5611, 3284, 317, 396, 83790,83792,332, 83793,83794,83797,83798,70462,11608,350, 4591, 57850,45286,1347, 83802,12774,83803,7579, 11665,51317,343,
- 83804,4984, 79515,363, 5828, 55446,2163, 26250,317, 39970,490, 83806,45851,83807,351, 36437,83809,10185,350, 83811,317, 83812,437, 317, 83808,317, 317,
+ 15480,317, 5611, 3284, 317, 396, 83790,83792,332, 83793,83794,83797,83798,70462,11608,350, 4591, 57850,45286,1347, 83802,12774,83803,7579, 11665,51317,343,
+ 83804,4984, 79515,363, 5828, 55446,2163, 26250,317, 39970,490, 83806,45851,83807,351, 36437,83809,10185,350, 83811,317, 83812,437, 317, 83808,317, 317,
490, 971, 83810,5570, 16951,350, 741, 317, 317, 83814,6967, 490, 2004, 317, 83816,490, 83818,83817,350, 2510, 59259,1020, 83820,83821,37441,83822,12525,
- 75101,83823,83824,83825,33315,2184, 46854,83826,11836,83829,74524,379, 317, 5105, 381, 317, 2142, 343, 317, 2117, 33969,4603, 317, 535, 5464, 11034,466,
+ 75101,83823,83824,83825,33315,2184, 46854,83826,11836,83829,74524,379, 317, 5105, 381, 317, 2142, 343, 317, 2117, 33969,4603, 317, 535, 5464, 11034,466,
317, 317, 390, 83827,83828,2715, 13683,1345, 83831,83832,1347, 345, 83834,4952, 317, 317, 83835,350, 363, 5611, 317, 380, 83836,83837,44399,317, 18820,
- 83839,317, 363, 83840,83842,83843,83844,83845,12694,351, 2680, 54361,12401,83848,490, 83849,83850,83852,42554,83856,83860,83861,83862,83866,83872,83874,317,
- 83853,83855,380, 83854,490, 5205, 19307,365, 5623, 317, 31505,83857,83858,31505,490, 83859,19307,6763, 365, 332, 82100,317, 83863,317, 83864,22210,2291,
+ 83839,317, 363, 83840,83842,83843,83844,83845,12694,351, 2680, 54361,12401,83848,490, 83849,83850,83852,42554,83856,83860,83861,83862,83866,83872,83874,317,
+ 83853,83855,380, 83854,490, 5205, 19307,365, 5623, 317, 31505,83857,83858,31505,490, 83859,19307,6763, 365, 332, 82100,317, 83863,317, 83864,22210,2291,
83865,5623, 83867,343, 2351, 317, 83870,317, 317, 19307,317, 83868,83869,83871,83873,83875,83876,83877,83880,83882,83887,83890,69088,83906,433, 7865, 83910,
- 83914,83926,83937,83938,83943,83948,83950,83953,83954,83955,83878,317, 2631, 83879,83881,27954,381, 83883,11064,83884,83885,317, 70459,365, 83886,350, 5401,
- 83888,7785, 883, 83889,83891,390, 362, 83893,427, 317, 83896,83899,83900,83902,83903,83905,39328,83892,9357, 83894,6598, 14832,317, 49073,83895,317, 2310,
- 8603, 11939,79716,11347,343, 83897,83898,5663, 490, 351, 343, 11831,7149, 83901,80497,45441,1358, 23247,39637,83904,343, 16825,83907,83908,2108, 14865,662,
+ 83914,83926,83937,83938,83943,83948,83950,83953,83954,83955,83878,317, 2631, 83879,83881,27954,381, 83883,11064,83884,83885,317, 70459,365, 83886,350, 5401,
+ 83888,7785, 883, 83889,83891,390, 362, 83893,427, 317, 83896,83899,83900,83902,83903,83905,39328,83892,9357, 83894,6598, 14832,317, 49073,83895,317, 2310,
+ 8603, 11939,79716,11347,343, 83897,83898,5663, 490, 351, 343, 11831,7149, 83901,80497,45441,1358, 23247,39637,83904,343, 16825,83907,83908,2108, 14865,662,
83909,3236, 343, 350, 37528,54019,5818, 390, 9224, 351, 2035, 1109, 83911,23247,382, 317, 4965, 83912,16825,317, 83913,4984, 83915,6855, 83919,8178, 83920,
83924,83916,27913,83917,6602, 83918,83921,317, 83922,83923,25193,38232,317, 83925,83806,37996,83927,83928,22267,83929,8273, 83931,83932,83933,83934,83935,83936,
16226,9878, 83930,351, 317, 350, 2272, 343, 13076,317, 14359,317, 351, 365, 12287,317, 351, 565, 12933,605, 867, 61350,971, 5248, 620, 370, 10664,
17063,11040,1020, 5526, 83939,490, 1358, 6532, 83940,83942,8446, 6227, 317, 83941,33578,2134, 83944,363, 83947,350, 83945,83946,351, 439, 2156, 1109, 83949,
- 351, 350, 590, 317, 351, 350, 317, 317, 83951,83952,52206,16187,9938, 605, 371, 8281, 5611, 83957,83959,83958,83960,83961,83962,83963,83965,83967,363,
+ 351, 350, 590, 317, 351, 350, 317, 317, 83951,83952,52206,16187,9938, 605, 371, 8281, 5611, 83957,83959,83958,83960,83961,83962,83963,83965,83967,363,
83970,83972,83966,4984, 4984, 9483, 83968,83969,83971,14439,605, 1347, 56154,371, 83974,20159,83975,2004, 83978,390, 42573,11280,83976,83977,83980,83981,83984,
- 83982,317, 83983,351, 15066,83986,83987,83990,5241, 83993,83994,83995,83996,84009,84014,84017,31246,84028,84039,84040,84042,490, 6964, 2142, 317, 24836,317,
- 83988,2402, 317, 83989,9549, 317, 1915, 17469,2077, 83991,46706,317, 83992,4965, 384, 350, 370, 317, 15758,7184, 317, 34628,490, 2719, 317, 83997,8594,
+ 83982,317, 83983,351, 15066,83986,83987,83990,5241, 83993,83994,83995,83996,84009,84014,84017,31246,84028,84039,84040,84042,490, 6964, 2142, 317, 24836,317,
+ 83988,2402, 317, 83989,9549, 317, 1915, 17469,2077, 83991,46706,317, 83992,4965, 384, 350, 370, 317, 15758,7184, 317, 34628,490, 2719, 317, 83997,8594,
83999,84001,362, 84003,84004,84005,84006,7785, 83998,84000,7419, 351, 84002,362, 350, 317, 32760,2219, 47883,381, 52239,332, 12696,371, 317, 84007,84008,
84010,351, 84012,4732, 317, 4949, 84011,568, 332, 33169,24570,84013,5105, 2142, 5447, 84015,9522, 16307,44072,84016,370, 84018,8683, 84019,39581,84020,48057,
- 317, 84021,84022,351, 466, 8686, 317, 406, 60933,84023,84024,84025,84026,84027,84029,490, 317, 362, 3079, 84030,84031,357, 362, 6242, 84032,84037,450,
- 365, 390, 2381, 317, 84033,84036,84034,84035,351, 48162,317, 5687, 84038,6228, 343, 317, 380, 17434,317, 350, 345, 84041,9383, 84043,317, 84044,2163,
+ 317, 84021,84022,351, 466, 8686, 317, 406, 60933,84023,84024,84025,84026,84027,84029,490, 317, 362, 3079, 84030,84031,357, 362, 6242, 84032,84037,450,
+ 365, 390, 2381, 317, 84033,84036,84034,84035,351, 48162,317, 5687, 84038,6228, 343, 317, 380, 17434,317, 350, 345, 84041,9383, 84043,317, 84044,2163,
46856,574, 476, 84046,84049,84047,84048,84050,84052,84053,84054,84055,84056,84057,84058,84059,84060,84061,553, 84063,84066,84068,84070,84064,84065,42843,84067,
84069,84071,84073,84074,84075,84083,84084,84085,84086,84087,84076,84080,19243,10911,84077,84079,84078,84081,84082,565, 381, 84089,84091,84092,84102,84111,84116,
- 84117,31786,84118,60598,84121,84123,84130,84137,84139,84142,450, 84150,84151,84152,84153,7114, 332, 84093,84095,84097,343, 84101,351, 84094,317, 84096,9244,
- 317, 317, 84098,84099,84100,345, 8296, 13652,84103,84107,84108,8178, 84104,84105,7142, 84106,2211, 332, 2322, 2110, 73199,8296, 84109,84110,5896, 362, 565,
- 84112,553, 84115,317, 84113,343, 84114,419, 2310, 428, 3505, 84119,84120,490, 20995,345, 6855, 84122,2178, 317, 317, 3284, 16589,84124,84125,84126,490,
- 13638,84128,490, 343, 84129,351, 84127,65900,317, 6551, 4952, 317, 84131,84132,332, 381, 84134,84135,9688, 7940, 317, 84133,37703,37703,84136,2134, 317,
+ 84117,31786,84118,60598,84121,84123,84130,84137,84139,84142,450, 84150,84151,84152,84153,7114, 332, 84093,84095,84097,343, 84101,351, 84094,317, 84096,9244,
+ 317, 317, 84098,84099,84100,345, 8296, 13652,84103,84107,84108,8178, 84104,84105,7142, 84106,2211, 332, 2322, 2110, 73199,8296, 84109,84110,5896, 362, 565,
+ 84112,553, 84115,317, 84113,343, 84114,419, 2310, 428, 3505, 84119,84120,490, 20995,345, 6855, 84122,2178, 317, 317, 3284, 16589,84124,84125,84126,490,
+ 13638,84128,490, 343, 84129,351, 84127,65900,317, 6551, 4952, 317, 84131,84132,332, 381, 84134,84135,9688, 7940, 317, 84133,37703,37703,84136,2134, 317,
84138,350, 317, 390, 6551, 490, 332, 84140,350, 1109, 84141,84143,419, 371, 10543,84145,84147,15457,317, 84149,317, 2317, 84144,84146,317, 490, 84148,
- 1020, 7892, 5836, 428, 2566, 350, 2316, 13638,2035, 7850, 317, 84155,84158,84159,84161,84156,84157,45239,2004, 84160,501, 84162,84164,84163,46183,883, 2317,
+ 1020, 7892, 5836, 428, 2566, 350, 2316, 13638,2035, 7850, 317, 84155,84158,84159,84161,84156,84157,45239,2004, 84160,501, 84162,84164,84163,46183,883, 2317,
84166,84167,84168,84171,84180,84183,371, 10629,6645, 80796,381, 84169,84170,2004, 67524,351, 2134, 317, 7261, 84172,84174,5159, 8519, 84178,84173,2134, 84175,
350, 84176,84177,84179,351, 365, 362, 84181,371, 84182,11347,343, 3284, 84184,84185,84186,84188,637, 84192,84195,84221,84189,84190,84191,84193,84194,84196,
936, 84199,1442, 1943, 84204,84207,84197,84198,1251, 945, 2856, 84200,84201,949, 84202,84203,84205,84206,14361,1302, 84208,84209,9965, 8047, 9978, 84210,84211,
- 84212,9969, 3933, 84213,317, 84214,317, 84218,317, 84215,84216,84217,84219,84220,84222,5241, 390, 84224,84225,607, 84228,84229,84230,84231,84233,14799,5428,
+ 84212,9969, 3933, 84213,317, 84214,317, 84218,317, 84215,84216,84217,84219,84220,84222,5241, 390, 84224,84225,607, 84228,84229,84230,84231,84233,14799,5428,
16749,84226,84227,5640, 343, 317, 490, 15772,6568, 8296, 13950,84232,2117, 16910,50665,66110,84235,84239,84070,2503, 84240,84244,84236,84237,84238,84241,84242,
84243,4197, 672, 2503, 84245,84247,84246,317, 3226, 84248,317, 84249,1009, 594
};
@@ -12758,7 +12753,7 @@ static const unsigned short Ranks[197839] =
0, 8373, 21965,31881,9875, 27672,35491,30539,29222,19587,12627,10616,10236,10798,36023,19553,38974,13149,30125,17647,35835,35880,33012,29843,34634,38543,38535,
34466,37183,34374,33298,37355,39386,9877, 18650,18911,29370,28853,36516,36439,22394,39192,34402,35820,35070,37824,35594,36626,34317,33985,37389,38180,8025, 38063,
35262,33644,37110,23828,38286,20534,36238,25722,39240,33241,36493,36483,33752,38868,29413,36785,26811,18287,35583,21586,26347,39274,35535,38066,36482,36571,33702,
- 25510,33633,37558,37524,28569,34797,33358,23183,36640,34569,36931,35876,33138,36118,25252,38373,36624,36764,39239,24471,33059,34676,35587,21647,28765,36917,2723,
+ 25510,33633,37558,37524,28569,34797,33358,23183,36640,34569,36931,35876,33138,36118,25252,38373,36624,36764,39239,24471,33059,34676,35587,21647,28765,36917,2723,
36218,33414,35225,35346,34701,25609,36885,39178,36609,28479,36180,38261,33988,35182,25804,34588,36386,25942,34176,30620,36870,12628,29534,34634,37382,22277,38198,
38595,35327,17190,14076,14299,37894,30244,39085,33669,32915,33192,32923,38854,37857,31685,36431,37868,37856,38893,36811,38388,35973,37607,37967,1880, 24949,22205,
32788,34763,23649,34050,35544,39322,33088,37664,34808,32971,38506,36031,39238,33863,33677,38789,36786,39076,37511,28489,37430,36462,34594,33032,35089,36963,19588,
@@ -12766,22 +12761,22 @@ static const unsigned short Ranks[197839] =
29914,36862,38518,32849,38512,29651,38676,27339,13747,33163,37235,23201,27215,18644,19960,38341,36512,39366,12805,17076,36796,32784,13416,14235,28567,12863,14408,
37344,2253, 1510, 34, 21329,7998, 29956,20158,21749,13392,4560, 8677, 32816,23656,2402, 23024,19751,10893,1965, 25995,17459,22427,28510,15336,13575,20585,29937,
6165, 3226, 17765,14908,23018,20590,1516, 19972,23016,17131,13707,32047,20591,10115,12973,16180,30162,29101,28437,31319,18064,19206,12680,24291,26053,392, 19684,
- 20013,7902, 5630, 11090,16408,27701,28179,30760,11290,21660,32934,758, 3973, 2798, 6295, 4225, 6683, 2048, 5278, 5733, 5430, 4659, 2973, 4936, 3100, 4202, 3585,
- 24986,746, 2096, 3286, 3245, 2665, 2019, 2111, 2671, 2576, 2500, 1001, 1895, 2891, 2982, 4552, 4431, 3358, 765, 1702, 1267, 340, 3614, 23758,484, 3336, 8860,
+ 20013,7902, 5630, 11090,16408,27701,28179,30760,11290,21660,32934,758, 3973, 2798, 6295, 4225, 6683, 2048, 5278, 5733, 5430, 4659, 2973, 4936, 3100, 4202, 3585,
+ 24986,746, 2096, 3286, 3245, 2665, 2019, 2111, 2671, 2576, 2500, 1001, 1895, 2891, 2982, 4552, 4431, 3358, 765, 1702, 1267, 340, 3614, 23758,484, 3336, 8860,
11488,32814,4753, 4720, 4130, 4642, 4369, 4540, 4536, 4222, 4309, 19564,3853, 4398, 2902, 4293, 4452, 24110,19818,26173,33006,20682,10051,14060,11326,32026,27243,
- 19784,25482,8783, 21439,10031,22622,11239,31625,11495,5437, 20569,5828, 5257, 3579, 4290, 4679, 4595, 3772, 3078, 3359, 3202, 3529, 4209, 20703,5245, 4316, 4235,
- 4099, 4153, 3662, 3436, 3295, 3321, 3219, 3073, 3154, 3472, 4405, 6059, 5226, 5726, 5023, 4622, 4873, 4249, 4477, 4047, 3783, 3299, 3698, 3151, 3512, 4631, 4515,
- 5744, 5617, 4646, 4711, 5176, 5085, 4862, 4003, 4526, 3963, 3559, 3473, 3385, 3894, 3097, 3563, 3562, 4190, 5719, 4835, 4739, 5281, 4695, 4889, 4669, 4557, 4751,
- 3761, 3487, 4073, 4686, 3107, 3991, 4028, 4076, 5756, 5576, 5571, 5144, 5020, 3798, 4108, 3964, 4043, 3176, 3275, 3841, 3693, 3373, 5455, 4983, 5116, 4627, 4660,
- 3918, 4224, 2928, 4314, 3640, 2719, 3925, 4000, 4336, 5882, 5713, 5452, 4929, 4030, 4386, 3746, 4271, 3268, 3623, 3530, 3274, 3087, 3347, 5487, 5433, 5294, 5265,
- 5332, 3970, 3953, 3855, 3971, 4109, 3213, 3118, 4334, 5593, 5150, 5291, 4681, 4510, 4497, 3595, 3130, 4205, 3875, 4394, 3905, 32810,17113,24567,29505,26612,4658,
+ 19784,25482,8783, 21439,10031,22622,11239,31625,11495,5437, 20569,5828, 5257, 3579, 4290, 4679, 4595, 3772, 3078, 3359, 3202, 3529, 4209, 20703,5245, 4316, 4235,
+ 4099, 4153, 3662, 3436, 3295, 3321, 3219, 3073, 3154, 3472, 4405, 6059, 5226, 5726, 5023, 4622, 4873, 4249, 4477, 4047, 3783, 3299, 3698, 3151, 3512, 4631, 4515,
+ 5744, 5617, 4646, 4711, 5176, 5085, 4862, 4003, 4526, 3963, 3559, 3473, 3385, 3894, 3097, 3563, 3562, 4190, 5719, 4835, 4739, 5281, 4695, 4889, 4669, 4557, 4751,
+ 3761, 3487, 4073, 4686, 3107, 3991, 4028, 4076, 5756, 5576, 5571, 5144, 5020, 3798, 4108, 3964, 4043, 3176, 3275, 3841, 3693, 3373, 5455, 4983, 5116, 4627, 4660,
+ 3918, 4224, 2928, 4314, 3640, 2719, 3925, 4000, 4336, 5882, 5713, 5452, 4929, 4030, 4386, 3746, 4271, 3268, 3623, 3530, 3274, 3087, 3347, 5487, 5433, 5294, 5265,
+ 5332, 3970, 3953, 3855, 3971, 4109, 3213, 3118, 4334, 5593, 5150, 5291, 4681, 4510, 4497, 3595, 3130, 4205, 3875, 4394, 3905, 32810,17113,24567,29505,26612,4658,
27760,4448, 4245, 2736, 18564,4558, 4482, 32640,30791,32943,2548, 18182,12731,23263,14712,4009, 3893, 4579, 31751,32024,16210,32148,4150, 29573,33000,15385,31908,
8886, 16987,4925, 4339, 26765,4745, 18770,22538,11286,21230,4670, 4055, 4572, 26100,4623, 4454, 9935, 11318,8852, 32890,8709, 4490, 23422,14619,17642,13043,12850,
19128,6518, 15760,14033,29487,23605,33383,32969,8961, 6846, 20676,15672,18269,18760,32231,14543,14194,22865,18602,10169,30533,27397,37729,36331,33349,37987,35049,
35706,2407, 9401, 2171, 3836, 9796, 32479,33050,2187, 11676,4120, 4488, 23874,4166, 28256,8894, 4609, 4364, 5264, 24014,3003, 4586, 4425, 7780, 2867, 4412, 26306,
- 5039, 32996,6833, 9638, 38267,31773,6308, 21941,2868, 14435,4443, 4716, 21007,25293,29977,6016, 3589, 23140,15513,2778, 29332,17067,3912, 3190, 11596,3189, 2452,
+ 5039, 32996,6833, 9638, 38267,31773,6308, 21941,2868, 14435,4443, 4716, 21007,25293,29977,6016, 3589, 23140,15513,2778, 29332,17067,3912, 3190, 11596,3189, 2452,
343, 13246,2776, 23157,6223, 11852,31068,25321,20142,3538, 3892, 2587, 1585, 5462, 29054,757, 19130,26929,20828,4332, 19732,24095,18244,34575,20810,2120, 17320,
- 12235,20677,20343,33680,27075,28749,20211,27555,19984,36522,38591,18336,34765,31525,14974,11415,36813,18135,9016, 2108, 7056, 29856,4302, 6983, 20960,4114, 4531,
+ 12235,20677,20343,33680,27075,28749,20211,27555,19984,36522,38591,18336,34765,31525,14974,11415,36813,18135,9016, 2108, 7056, 29856,4302, 6983, 20960,4114, 4531,
4514, 4265, 38642,37657,17103,4119, 32820,8, 63, 10250,16219,24261,19323,17214,27831,3440, 11617,4027, 26955,22220,11111,5298, 22534,4735, 13460,1629, 29773,
25554,10501,20362,6021, 3861, 10756,13191,4641, 460, 30072,8208, 1340, 23728,27477,14280,30547,20733,3211, 5927, 5153, 39287,20314,6129, 28263,23866,3823, 35350,
17645,29132,4029, 1564, 2643, 13895,2896, 56, 24216,24214,7650, 347, 21816,1587, 6234, 11863,22745,9002, 19430,8957, 30274,33051,3458, 14438,29749,1203, 17984,
@@ -12790,7 +12785,7 @@ static const unsigned short Ranks[197839] =
37926,24453,4574, 31094,3637, 16783,1658, 9243, 11670,12944,8744, 32004,4503, 4411, 29082,20725,30069,15061,3065, 1307, 2441, 7397, 31891,33106,4136, 25828,26219,
1718, 26722,3552, 2431, 10472,27671,10149,3626, 2045, 32878,25050,3958, 8144, 1435, 708, 11, 27852,10002,1577, 12897,10575,30070,11772,5992, 12353,16936,29056,
623, 32892,9660, 20821,2378, 23771,32344,10523,13115,17254,32707,8131, 19596,16548,18775,20166,490, 32012,11556,31069,8958, 23130,31070,1970, 23, 10006,18425,
- 9724, 10487,1431, 13237,15961,9260, 25506,25302,3093, 24055,23064,32848,30062,31403,1691, 21485,17246,25590,9349, 19125,22473,23034,8737, 10896,23196,12310,9751,
+ 9724, 10487,1431, 13237,15961,9260, 25506,25302,3093, 24055,23064,32848,30062,31403,1691, 21485,17246,25590,9349, 19125,22473,23034,8737, 10896,23196,12310,9751,
7, 17594,7649, 7268, 4663, 33098,22260,17919,17183,11886,1193, 20720,9728, 213, 21807,10673,11887,20487,6, 21901,5863, 5747, 2877, 18339,7206, 23143,23820,
23204,16340,18655,9289, 9083, 1174, 3339, 33095,16342,540, 27810,17362,31883,1, 3830, 14611,5639, 22461,7656, 4383, 27767,29059,14441,8029, 29660,5506, 20562,
2978, 11470,9, 20718,11391,29434,6241, 32796,3, 16345,14855,17002,19377,27140,5, 32605,20370,24, 7900, 27538,11240,24953,3197, 28252,30896,22053,26477,
@@ -12798,32 +12793,32 @@ static const unsigned short Ranks[197839] =
5312, 19701,14056,11907,17944,26101,8362, 7524, 5118, 9817, 6560, 7403, 693, 10741,15284,12770,14674,5538, 27400,9922, 6086, 4051, 13141,6429, 10494,12357,21513,
1997, 20746,14697,27724,2931, 12158,27076,25234,32849,20191,2742, 17392,18736,24733,13037,2833, 19376,1321, 6099, 17295,13552,29326,18066,19438,20332,1637, 20400,
23571,16308,18730,14406,9637, 19052,15249,10302,5641, 6992, 13680,8391, 18431,6506, 23988,17285,227, 1752, 17323,7540, 8819, 5741, 8306, 7745, 6772, 5795, 13118,
- 6564, 6017, 9680, 12366,10151,1993, 3989, 4042, 5755, 10362,10074,296, 10852,7658, 5742, 3156, 3631, 20576,22718,1720, 2472, 26854,4652, 2692, 16840,5137, 6318,
+ 6564, 6017, 9680, 12366,10151,1993, 3989, 4042, 5755, 10362,10074,296, 10852,7658, 5742, 3156, 3631, 20576,22718,1720, 2472, 26854,4652, 2692, 16840,5137, 6318,
5628, 13534,7087, 1356, 14425,10012,32776,16736,30765,1887, 14442,18337,22457,8827, 5261, 13294,20183,297, 16810,17380,5302, 25816,17999,13058,7438, 20167,15098,
- 8778, 6613, 10946,11141,11218,10906,22453,7594, 14807,32805,4924, 14790,451, 33040,5382, 29792,14411,23590,4683, 2881, 4982, 505, 33028,5049, 5805, 21336,4783,
- 32926,3121, 13346,11200,7340, 7154, 15143,2642, 17510,14677,11532,3666, 14154,32033,11390,5467, 32040,6990, 16466,28452,12223,7042, 963, 17062,15839,3517, 7443,
- 6262, 18495,4089, 2024, 86, 13427,23644,13830,10762,5665, 11278,4906, 11306,5030, 23987,29277,5212, 23131,22825,14263,7947, 6765, 23207,25955,16020,3617, 150,
+ 8778, 6613, 10946,11141,11218,10906,22453,7594, 14807,32805,4924, 14790,451, 33040,5382, 29792,14411,23590,4683, 2881, 4982, 505, 33028,5049, 5805, 21336,4783,
+ 32926,3121, 13346,11200,7340, 7154, 15143,2642, 17510,14677,11532,3666, 14154,32033,11390,5467, 32040,6990, 16466,28452,12223,7042, 963, 17062,15839,3517, 7443,
+ 6262, 18495,4089, 2024, 86, 13427,23644,13830,10762,5665, 11278,4906, 11306,5030, 23987,29277,5212, 23131,22825,14263,7947, 6765, 23207,25955,16020,3617, 150,
17996,3681, 655, 17754,26339,17730,14988,16456,21568,10874,20489,30065,31868,8572, 3220, 1534, 7782, 1501, 14999,25954,27864,16023,534, 33091,2428, 6002, 22831,
27459,5948, 30061,14501,25953,1592, 27806,13004,14763,23938,2801, 7687, 224, 21631,17992,30647,32183,32014,14922,1113, 11804,30571,8530, 25793,12660,30089,20880,
4220, 29142,32439,20691,13572,31585,8623, 23122,29254,12101,16558,26844,23720,8597, 27369,30924,7672, 32728,5949, 15811,1550, 10845,19126,3276, 23813,3885, 25820,
30218,27534,33, 25254,21619,1097, 11977,8574, 13455,7681, 613, 22997,855, 16533,4259, 5323, 2610, 28416,33235,14039,9216, 10166,19536,25794,26317,30304,31782,
17003,13618,14709,29220,9985, 1583, 14468,12146,6758, 9434, 15959,25951,27454,32063,761, 25638,12056,9773, 14150,27845,28833,27453,27452,22862,18763,32080,22886,
16467,22911,25946,32102,31865,24075,15172,24969,33084,26669,32103,32110,26745,28841,2076, 18038,29754,29289,31996,31747,12260,31189,25558,7526, 12681,26183,15626,
- 25695,34550,33063,3237, 4318, 13061,2841, 16679,2783, 10743,350, 28138,8460, 8271, 25058,29565,1929, 4732, 4379, 4233, 4146, 4422, 36478,35444,33587,29557,4676,
+ 25695,34550,33063,3237, 4318, 13061,2841, 16679,2783, 10743,350, 28138,8460, 8271, 25058,29565,1929, 4732, 4379, 4233, 4146, 4422, 36478,35444,33587,29557,4676,
6197, 64, 23111,16575,9462, 16576,21857,29934,23533,1909, 2234, 31199,4849, 19175,7666, 5273, 10961,29432,29433,27469,33383,11721,16455,16582,26989,33465,32793,
- 32794,668, 12670,25309,29563,26911,3938, 27759,26262,25312,17094,34290,20525,2413, 10076,27141,2668, 17082,29560,18000,9151, 20990,9405, 32796,1083, 10109,785,
+ 32794,668, 12670,25309,29563,26911,3938, 27759,26262,25312,17094,34290,20525,2413, 10076,27141,2668, 17082,29560,18000,9151, 20990,9405, 32796,1083, 10109,785,
15337,6361, 4186, 5721, 10662,23110,19196,11728,27883,10540,2960, 3216, 19365,11123,29436,4987, 9465, 13891,14281,28178,21793,29802,1911, 29437,3158, 27127,29439,
- 33614,30055,20579,25821,31103,32800,31162,34375,1996, 4465, 4701, 26336,28741,28738,4255, 20616,32253,30575,4357, 23616,7796, 26893,23614,1042, 31763,26885,792,
+ 33614,30055,20579,25821,31103,32800,31162,34375,1996, 4465, 4701, 26336,28741,28738,4255, 20616,32253,30575,4357, 23616,7796, 26893,23614,1042, 31763,26885,792,
20563,4740, 32950,25705,38978,29478,29570,34216,16140,25700,34122,4858, 18325,9504, 26870,32458,22250,34460,32972,37925,14300,469, 21791,2908, 427, 21909,25629,
3090, 27803,32581,6777, 10040,3725, 20667,493, 9528, 30053,6182, 706, 27802,5014, 1073, 1194, 8346, 1419, 31849,3454, 31101,33537,39016,5439, 17854,30064,30415,
3165, 32984,15908,23826,32217,27345,2098, 29501,14165,23753,29491,4619, 4719, 4077, 4655, 28371,2201, 37937,12387,4696, 25314,22640,15402,32618,9363, 32972,33757,
12328,27247,30404,35516,31314,32960,29707,22652,13388,4019, 7160, 30283,32845,22654,1896, 34003,11726,34194,32595,20775,34901,32844,33601,33593,33864,31177,19884,
- 29928,31727,18327,33374,23255,26617,31845,31454,16192,6076, 249, 21787,26103,15653,18653,29380,31842,29067,5011, 32078,24168,13399,3494, 8069, 16592,3568, 68,
+ 29928,31727,18327,33374,23255,26617,31845,31454,16192,6076, 249, 21787,26103,15653,18653,29380,31842,29067,5011, 32078,24168,13399,3494, 8069, 16592,3568, 68,
20235,19437,27259,9368, 23101,15219,21910,13915,6893, 16927,15873,27911,10023,25875,7596, 15678,17959,20779,7928, 12707,14448,5406, 13628,10532,648, 26102,13404,
32982,34020,17659,2020, 19907,4569, 4567, 28429,4710, 14106,30314,27363,2383, 33875,22183,34362,24210,21600,20869,33407,24777,28499,18321,34744,25282,21601,35036,
- 28491,21604,33579,27038,32970,27976,33858,31051,18575,1785, 16396,1439, 4713, 29589,12318,4424, 4601, 22093,26347,33736,21626,8416, 12810,34779,24462,31766,8975,
- 20985,4294, 21851,34744,21871,29904,21549,34560,20173,29103,17812,30042,34632,16828,23180,4476, 31774,35257,15928,12164,35608,14195,31775,18297,32792,1695, 7308,
- 4304, 4613, 28722,4629, 19486,27872,34869,4350, 5834, 31713,9380, 24556,8019, 23254,36685,6986, 17028,34583,6679, 2293, 33039,5677, 32995,5560, 27420,36437,5235,
+ 28491,21604,33579,27038,32970,27976,33858,31051,18575,1785, 16396,1439, 4713, 29589,12318,4424, 4601, 22093,26347,33736,21626,8416, 12810,34779,24462,31766,8975,
+ 20985,4294, 21851,34744,21871,29904,21549,34560,20173,29103,17812,30042,34632,16828,23180,4476, 31774,35257,15928,12164,35608,14195,31775,18297,32792,1695, 7308,
+ 4304, 4613, 28722,4629, 19486,27872,34869,4350, 5834, 31713,9380, 24556,8019, 23254,36685,6986, 17028,34583,6679, 2293, 33039,5677, 32995,5560, 27420,36437,5235,
13458,32097,32865,4427, 12466,34513,4743, 36797,28950,1419, 5603, 31784,4408, 35501,35299,4374, 9207, 7897, 38326,2032, 12207,18973,27867,2647, 4810, 1481, 29086,
31001,36467,1640, 33103,19082,26141,26142,12758,38876,2401, 2900, 38112,17802,1276, 18918,933, 27001,22059,32398,23454,23455,32984,4541, 37657,9132, 13054,26970,
856, 21130,26968,21563,25091,13019,22069,20379,23479,13585,32437,24296,22079,32445,29019,26901,18600,32468,30338,38719,6137, 13592,27889,29017,25064,819, 32483,
@@ -12837,13 +12832,13 @@ static const unsigned short Ranks[197839] =
18098,32394,31333,28639,15014,22520,28016,18162,11114,19302,32955,19089,25454,24674,26166,10967,28485,8171, 32525,12436,29504,14827,12688,17961,32592,35242,22233,
21141,10174,12708,26080,22190,33081,19240,4664, 33032,25182,14547,20934,22641,18389,25868,22406,27957,24979,32202,25326,20935,16638,17960,27251,17017,26678,21716,
30504,25746,29826,9488, 21833,20559,24818,17241,18871,27710,29030,7638, 15834,9575, 12399,32769,26007,25069,31226,10170,18388,23601,29384,24731,12764,14708,25749,
- 10176,14288,20439,18239,15667,13956,21863,31522,25931,9586, 28526,29695,17563,11746,21585,22537,32650,15802,30407,25457,16375,26126,27047,18786,31313,11752,8578,
+ 10176,14288,20439,18239,15667,13956,21863,31522,25931,9586, 28526,29695,17563,11746,21585,22537,32650,15802,30407,25457,16375,26126,27047,18786,31313,11752,8578,
16429,23449,15681,27238,27236,26532,18426,21347,32602,24052,32412,11066,31155,20948,9831, 29601,15220,15325,20735,27245,23586,15803,15433,21232,18047,10586,31072,
15860,28758,24363,31661,29729,9558, 24810,18246,24700,22845,23476,26324,7914, 23782,27632,27960,24701,29200,6289, 9694, 14251,24304,26045,30014,19845,30373,31324,
21591,23809,11851,4950, 22417,24616,16041,32738,15524,22075,26573,19020,5483, 20444,19723,18364,20593,5705, 26849,32930,7754, 7292, 22539,26657,25619,31839,23710,
17665,32298,31637,20037,25596,22320,6899, 25433,27704,10578,29692,24099,32493,28283,23444,12744,18053,25550,33085,16075,27216,20752,13405,1442, 7049, 11552,29698,
- 21622,24017,12564,32698,16296,11489,14111,19250,17822,18624,21074,21511,18403,22856,30059,32792,28827,33007,3074, 25785,25859,12803,5371, 6120, 10275,21444,8168,
- 689, 192, 2812, 291, 1362, 20940,30657,3669, 13360,2233, 14629,26460,15899,19767,10135,24844,8956, 26762,14896,3234, 28, 31588,1009, 6700, 17306,17369,8281,
+ 21622,24017,12564,32698,16296,11489,14111,19250,17822,18624,21074,21511,18403,22856,30059,32792,28827,33007,3074, 25785,25859,12803,5371, 6120, 10275,21444,8168,
+ 689, 192, 2812, 291, 1362, 20940,30657,3669, 13360,2233, 14629,26460,15899,19767,10135,24844,8956, 26762,14896,3234, 28, 31588,1009, 6700, 17306,17369,8281,
13281,24984,7965, 17000,23341,28823,5972, 312, 5557, 16730,5638, 17331,10301,5990, 28114,7457, 2595, 14403,29769,32890,13614,19641,26274,26628,31465,30927,25866,
8322, 24256,32871,18243,10966,25608,26198,16565,19258,18367,32954,28861,24928,29005,32163,15369,25585,13790,29836,15813,27952,31680,27354,8942, 13809,8866, 30989,
29359,17283,29714,13975,23735,16070,29828,18103,26372,12465,30071,27046,22707,31639,27275,13332,845, 17309,29885,15788,19281,32540,31242,17979,29686,33002,33093,
@@ -12852,50 +12847,50 @@ static const unsigned short Ranks[197839] =
34033,15339,16632,25860,27329,33072,16589,17958,3756, 3878, 6492, 13121,22971,15829,15011,27244,18380,31874,35564,38077,30581,38748,38897,39415,17488,2455, 22174,
30437,11731,26712,2807, 28898,12778,4556, 28718,18409,32748,16359,4639, 31546,4270, 28717,30037,30559,4651, 27115,4573, 11099,30873,14501,9515, 4426, 33105,32952,
27973,13935,35527,25329,12678,24903,30254,38062,36497,37587,32933,27467,6507, 915, 4260, 4142, 3348, 4547, 4767, 4625, 30857,4697, 17178,313, 10788,10716,15615,
- 29070,25333,19413,10265,30701,2572, 19713,32887,27792,16728,6588, 17318,31218,16386,20596,31524,20121,15911,2494, 4504, 4592, 4274, 4718, 4035, 4770, 5224, 4680,
+ 29070,25333,19413,10265,30701,2572, 19713,32887,27792,16728,6588, 17318,31218,16386,20596,31524,20121,15911,2494, 4504, 4592, 4274, 4718, 4035, 4770, 5224, 4680,
31058,18082,19127,32975,31121,29110,32976,20224,32805,32801,2269, 8325, 7711, 21427,5469, 11422,19021,21429,5205, 1755, 7653, 27688,24282,10069,32786,31792,11425,
24705,4617, 6093, 8476, 12950,3817, 39317,24284,32982,17006,27399,24698,5194, 22869,28492,6986, 4748, 4287, 12550,23099,15145,30967,9912, 30970,30029,7052, 12836,
9711, 30971,16516,19116,16289,30972,30977,2909, 10391,13904,31654,13897,17120,5248, 4975, 16646,30043,4382, 27664,31244,4254, 4764, 22847,11082,24486,10894,22179,
- 33062,1426, 4535, 16259,30988,26085,857, 6791, 15154,9706, 21497,28592,21496,3582, 33060,14670,18023,28594,30986,20636,30315,24995,22506,15389,4980, 39184,8547,
+ 33062,1426, 4535, 16259,30988,26085,857, 6791, 15154,9706, 21497,28592,21496,3582, 33060,14670,18023,28594,30986,20636,30315,24995,22506,15389,4980, 39184,8547,
29382,26015,19431,4546, 4741, 30028,4395, 4709, 17292,22956,29150,4568, 21764,11478,6705, 25342,12970,8992, 17712,22699,24293,24589,23620,3355, 6824, 4434, 30846,
31779,13549,28001,1486, 11993,27624,22692,11656,4781, 1537, 10590,17414,3726, 4897, 23067,37635,36985,4053, 28706,4722, 31188,28435,4083, 30526,15254,22557,19336,
30720,19493,21049,9268, 5555, 4527, 11505,9840, 16181,14456,20140,7277, 25346,5641, 4565, 4585, 4441, 4389, 12267,18296,21247,32791,23948,22846,5943, 4582, 28697,
33013,33013,4554, 4542, 31772,16984,24696,6173, 29967,17821,14153,13561,25595,26121,14242,28166,17653,17606,32881,27277,10116,36109,28060,21536,4973, 11319,20861,
11635,13089,25308,13162,30832,6305, 28331,23108,16427,13795,27019,25477,23400,31539,13209,979, 36210,15535,38750,33037,11874,31334,32962,6655, 31437,22430,27554,
8988, 11433,32068,17125,13101,6397, 26549,10119,29766,9335, 26696,6563, 13026,4227, 36281,8652, 8766, 4645, 8079, 4530, 13309,4241, 5210, 15529,12594,13319,36110,
- 33222,34529,20507,10342,27892,35934,17764,18443,37603,23498,37585,38829,38474,23475,24646,36218,31191,4944, 4634, 27981,27079,19948,15477,27884,14381,27931,943,
- 7094, 933, 11899,13192,23357,38442,8124, 353, 9419, 25120,21114,19542,39264,34727,6594, 36607,2165, 2307, 11888,31770,1039, 9117, 2093, 5586, 30285,9021, 5685,
- 20765,12525,23153,9427, 9764, 19184,35574,10527,19158,9767, 12909,7828, 14387,2330, 18553,22022,9284, 9769, 16361,32914,32949,32889,20530,4971, 18291,6071, 2682,
- 9373, 4033, 11751,7124, 15275,22019,5908, 32914,10686,13182,8063, 15367,22017,32907,2755, 22016,18550,16651,7900, 9188, 21775,27122,15569,30020,23054,32321,8915,
- 15542,18544,9100, 20394,27048,7685, 36005,36621,35794,39216,4854, 8058, 20973,5102, 8663, 32308,24598,36142,13851,7676, 19422,32060,23487,32307,32246,28995,2002,
+ 33222,34529,20507,10342,27892,35934,17764,18443,37603,23498,37585,38829,38474,23475,24646,36218,31191,4944, 4634, 27981,27079,19948,15477,27884,14381,27931,943,
+ 7094, 933, 11899,13192,23357,38442,8124, 353, 9419, 25120,21114,19542,39264,34727,6594, 36607,2165, 2307, 11888,31770,1039, 9117, 2093, 5586, 30285,9021, 5685,
+ 20765,12525,23153,9427, 9764, 19184,35574,10527,19158,9767, 12909,7828, 14387,2330, 18553,22022,9284, 9769, 16361,32914,32949,32889,20530,4971, 18291,6071, 2682,
+ 9373, 4033, 11751,7124, 15275,22019,5908, 32914,10686,13182,8063, 15367,22017,32907,2755, 22016,18550,16651,7900, 9188, 21775,27122,15569,30020,23054,32321,8915,
+ 15542,18544,9100, 20394,27048,7685, 36005,36621,35794,39216,4854, 8058, 20973,5102, 8663, 32308,24598,36142,13851,7676, 19422,32060,23487,32307,32246,28995,2002,
8227, 20972,21735,16836,25138,20971,37935,13239,17018,3818, 23326,5526, 18942,23390,3856, 27914,8347, 7609, 17681,21867,3240, 32295,39041,21678,31445,8033, 17831,
23321,26895,38573,8661, 10865,25364,23389,25144,31136,11694,18290,16312,29873,20143,8167, 18532,7605, 8489, 17206,28033,32930,38244,11996,37594,33093,9595, 22056,
7255, 10300,21768,11036,33413,5761, 12939,30375,13038,14055,13693,1195, 6728, 10794,11330,13588,20709,31900,17711,14857,4551, 17224,10849,30260,20825,18068,16314,
- 22830,13571,38501,23494,27010,20969,32881,31760,19624,25770,14305,24854,32880,33113,31509,6180, 2739, 1268, 24611,25146,32937,4589, 19922,9125, 4693, 4327, 2354,
+ 22830,13571,38501,23494,27010,20969,32881,31760,19624,25770,14305,24854,32880,33113,31509,6180, 2739, 1268, 24611,25146,32937,4589, 19922,9125, 4693, 4327, 2354,
497, 13471,27199,23047,32106,27823,32277,30252,23372,30013,3645, 8927, 15546,21990,21729,8262, 18430,7880, 14363,19356,30248,11756,16540,9751, 25156,3733, 21986,
18511,37726,21086,5727, 21981,27272,14358,18509,32232,11145,19428,6348, 17736,18504,9835, 25167,7562, 21721,1612, 23297,18503,27511,25095,8868, 9724, 16054,14283,
10446,31141,19207,15491,18944,21080,813, 13185,21030,9226, 2388, 12038,23294,1665, 29012,13186,19708,32963,1403, 6047, 25233,24303,19915,22703,20867,4258, 37348,
9371, 10884,26151,19720,20541,27300,22038,10480,30011,17928,11163,21968,25713,10451,23259,10586,18255,17061,9314, 16997,323, 16111,31030,12965,25075,25179,30223,
27475,10472,11050,15240,30010,23335,13383,32193,14750,35409,5977, 20928,9467, 14925,14447,23199,37380,17699,37056,15547,24263,4737, 32855,21920,10891,18779,19256,
- 19873,32855,19893,21574,22281,28443,11387,22370,19073,12942,18796,13109,38105,18247,28488,33090,30024,18268,34766,16871,10195,11846,23513,8584, 10925,13222,2058,
- 25101,26740,19671,10464,33087,27506,32923,30396,1400, 15493,14180,11588,12769,9607, 24260,18631,20233,35742,19602,6108, 13090,14296,12940,35372,5941, 26383,9571,
- 34540,27372,20138,14814,27353,25011,25204,36713,21328,37838,33625,37635,38927,35573,30592,30156,2252, 30666,36613,34830,3433, 4862, 11810,20970,27357,309, 5449,
+ 19873,32855,19893,21574,22281,28443,11387,22370,19073,12942,18796,13109,38105,18247,28488,33090,30024,18268,34766,16871,10195,11846,23513,8584, 10925,13222,2058,
+ 25101,26740,19671,10464,33087,27506,32923,30396,1400, 15493,14180,11588,12769,9607, 24260,18631,20233,35742,19602,6108, 13090,14296,12940,35372,5941, 26383,9571,
+ 34540,27372,20138,14814,27353,25011,25204,36713,21328,37838,33625,37635,38927,35573,30592,30156,2252, 30666,36613,34830,3433, 4862, 11810,20970,27357,309, 5449,
29020,26148,6673, 23323,29422,9077, 23272,16319,9813, 5237, 30215,10210,23267,21070,17090,14799,23316,10081,33019,30008,21523,5192, 33043,10659,23391,10989,13173,
32159,27407,19924,14397,15428,26385,26386,30006,25199,17055,31377,29736,10706,32142,13878,32139,27439,27442,27866,17104,29029,21412,10480,26138,13612,9464, 12788,
10247,11718,2919, 21066,21742,7565, 16052,8012, 10216,16090,10753,23878,9467, 10853,22392,16627,14391,27518,31941,12665,25368,1227, 13459,2606, 30005,10511,14348,
29224,23298,17874,5200, 14812,18483,14347,11712,18481,12016,6163, 8884, 10591,33012,10102,20385,32134,14838,32133,10864,25684,19792,19217,27859,12728,10805,20550,
26133,18044,23038,21063,4757, 13243,10409,23237,32203,11986,26187,11699,38906,25568,24249,29927,34549,26925,33088,28000,8713, 16706,26122,17686,12675,31306,24913,
22983,15814,20174,15437,8560, 21239,1623, 23238,30467,21893,5413, 16666,18477,26055,38385,36149,18277,27739,21738,27705,24149,8579, 7893, 7392, 18475,14345,26132,
- 12384,30446,8484, 17904,13711,13055,29753,19642,19228,4344, 32125,32811,12166,15167,27490,17825,25123,13115,6975, 3179, 27, 8549, 9128, 25876,12274,13067,3664,
+ 12384,30446,8484, 17904,13711,13055,29753,19642,19228,4344, 32125,32811,12166,15167,27490,17825,25123,13115,6975, 3179, 27, 8549, 9128, 25876,12274,13067,3664,
24459,22031,11476,23225,30184,23264,7739, 25224,31736,16081,14338,30180,7010, 5735, 23258,6978, 21056,17893,25230,7368, 21, 18275,8156, 14191,17707,1879, 15276,
19911,837, 18645,33103,21009,31228,21054,13080,33030,13320,18108,22076,36471,32841,30316,31773,12660,28527,23217,29996,1645, 19835,29037,8423, 32781,24240,24270,
13344,18861,18274,20041,25880,14726,25235,9634, 24269,14137,8481, 28083,75, 3737, 19, 23029,32084,18456,8129, 32082,12257,5443, 15479,26104,32979,27612,30747,
12735,36136,36904,14189,12802,24770,30247,19486,11869,1871, 6722, 18945,31066,26981,35429,36166,18677,18453,19408,3752, 36834,18452,21507,32846,18451,13868,25369,
21903,34806,7497, 10068,31732,33039,30168,12896,29444,19237,32211,23790,16283,13429,2033, 16682,38232,15321,32233,4219, 19895,10555,6178, 6901, 15465,6480, 33042,
- 6230, 32052,9791, 30157,15482,809, 9092, 690, 20728,17579,4860, 31142,7817, 19213,30154,19390,20662,25246,8503, 17243,39000,10192,6909, 14346,25372,1686, 7543,
+ 6230, 32052,9791, 30157,15482,809, 9092, 690, 20728,17579,4860, 31142,7817, 19213,30154,19390,20662,25246,8503, 17243,39000,10192,6909, 14346,25372,1686, 7543,
13889,871, 23085,19360,21884,22772,12796,10117,16049,18003,33829,9196, 18936,26581,27838,16968,12830,15148,27150,30148,13137,30147,2443, 13296,19929,32034,30146,
- 8111, 32030,7994, 27654,23216,5556, 9880, 6643, 26094,5969, 19947,15144,29, 14818,5465, 32867,32955,25467,25133,18565,16908,2678, 10046,2998, 5481, 13984,8381,
- 18007,28495,17926,2582, 21038,33095,13588,2890, 23210,21037,21874,23198,13892,18971,2916, 33047,32006,28678,25258,2102, 10493,11014,4001, 257, 18264,2271, 383,
+ 8111, 32030,7994, 27654,23216,5556, 9880, 6643, 26094,5969, 19947,15144,29, 14818,5465, 32867,32955,25467,25133,18565,16908,2678, 10046,2998, 5481, 13984,8381,
+ 18007,28495,17926,2582, 21038,33095,13588,2890, 23210,21037,21874,23198,13892,18971,2916, 33047,32006,28678,25258,2102, 10493,11014,4001, 257, 18264,2271, 383,
4128, 26130,31011,1244, 13286,21873,4937, 8472, 6413, 21882,1861, 5624, 22928,29042,9494, 31144,23200,2403, 27909,31123,11997,13198,38684,13847,33086,3167, 27779,
15454,13435,35710,35407,12338,31457,21045,22650,19597,17931,20220,19298,6487, 9410, 25718,21298,21576,15008,26363,32775,21184,16882,17839,30957,17005,23822,33036,
1913, 18679,10824,3279, 15982,17353,21868,14596,13816,20846,38019,36951,32938,20715,13540,28931,27143,33006,21650,32805,6671, 10578,13274,16912,4141, 13693,32985,
@@ -12905,11 +12900,11 @@ static const unsigned short Ranks[197839] =
23330,32283,14960,36030,36369,9487, 10047,37980,11437,22217,6020, 1742, 16396,8674, 9084, 26807,2117, 16732,24496,21212,14958,21111,9154, 13268,28837,29987,23883,
28836,31310,20451,2788, 6375, 31716,1817, 31957,20069,27532,26976,15565,7186, 11089,29980,6585, 1202, 30886,6889, 25381,29050,32314,6147, 6535, 33094,16309,31336,
21019,19384,29979,3425, 16530,642, 17071,24433,19823,18347,22589,19925,17477,10606,29978,5697, 31950,13396,1124, 18641,31699,25385,3489, 32751,15089,21825,16722,
- 15105,18640,6000, 7113, 29497,9302, 10737,32054,1913, 10568,2305, 23929,12790,10611,29385,17471,31152,18366,10746,12812,31003,18335,23002,29053,6569, 4121, 4464,
+ 15105,18640,6000, 7113, 29497,9302, 10737,32054,1913, 10568,2305, 23929,12790,10611,29385,17471,31152,18366,10746,12812,31003,18335,23002,29053,6569, 4121, 4464,
31166,7015, 15090,10189,1644, 12184,3341, 33045,28139,27773,6634, 28800,8201, 18587,26112,7347, 20560,13785,33077,32850,19727,24683,28145,31459,20123,5196, 14434,
6489, 31924,3684, 12147,26285,16514,14687,6468, 8375, 13029,12025,15779,31920,4749, 26091,8734, 6390, 18637,16520,23163,28887,29673,16312,38607,36143,39071,23957,
25716,27172,12107,19169,22146,22286,14801,2238, 34663,26022,11729,36859,37692,35358,38634,38600,33917,34417,19195,36762,4, 19997,21570,24086,10467,8314, 13746,
- 24772,24948,36906,7343, 4259, 38312,13183,32970,34865,9727, 21048,3228, 6836, 30877,24595,19986,14936,10769,9971, 5064, 494, 486, 1167, 3344, 2367, 17869,7463,
+ 24772,24948,36906,7343, 4259, 38312,13183,32970,34865,9727, 21048,3228, 6836, 30877,24595,19986,14936,10769,9971, 5064, 494, 486, 1167, 3344, 2367, 17869,7463,
24484,20276,10936,25520,19686,25086,18257,29420,24609,23373,17284,3707, 6396, 8641, 24300,31678,15751,677, 24180,718, 6619, 16508,2745, 28067,1676, 6718, 28445,
26913,22920,31217,35193,36474,38133,19806,19885,22551,25099,32153,35017,21711,32401,21482,21331,6841, 19456,12995,15127,21935,25441,11575,33000,21987,18855,26074,
17199,12926,32804,18659,20837,14605,10859,14633,3116, 27073,33055,33021,5257, 1758, 21487,6323, 19114,25476,19961,30851,30935,11079,17706,28121,17522,11646,20029,
@@ -12924,7 +12919,7 @@ static const unsigned short Ranks[197839] =
26521,19993,654, 29618,24067,23089,1893, 23692,1695, 13, 2774, 2208, 6109, 18900,26403,14737,20958,37158,10134,16255,31960,35265,26483,14649,2836, 222, 18331,
33097,18001,13249,17302,11157,23835,13530,5621, 37285,8061, 7755, 34942,34194,19989,14318,10614,44072,34858,41088,27949,35084,41087,44072,34231,41087,21700,19137,
14612,13163,41087,12374,34613,34363,6874, 21567,36459,20066,6552, 37331,33519,36067,33232,9542, 4190, 38985,17589,6355, 17588,15848,37796,32937,684, 18870,15590,
- 38059,34230,9233, 4825, 27978,34230,37556,38956,36245,44072,33088,19284,35581,27763,700, 32812,41087,39026,21645,38955,35053,36956,22222,32912,28417,17069,425,
+ 38059,34230,9233, 4825, 27978,34230,37556,38956,36245,44072,33088,19284,35581,27763,700, 32812,41087,39026,21645,38955,35053,36956,22222,32912,28417,17069,425,
41086,25263,32609,35950,19322,37331,11770,3502, 23098,37330,24822,38955,34230,10055,21425,27948,23610,32912,33519,33993,22221,34761,44071,30634,15603,4749, 29341,
17356,1897, 12850,38378,22840,34717,19321,41086,1411, 7373, 19992,16666,25103,38955,39419,14185,36077,33568,44071,38955,41086,18663,6700, 22954,4789, 15210,13178,
1233, 28594,33162,36853,38117,33380,38891,19057,34000,36982,39369,37687,31919,30165,32975,6308, 38830,33077,6425, 20193,33544,23704,17569,492, 9420, 23689,44071,
@@ -12934,42 +12929,42 @@ static const unsigned short Ranks[197839] =
18662,36077,38954,38954,41085,15208,31939,38386,32114,44069,28, 18276,14566,487, 18661,38208,41084,12171,23097,24760,11850,5824, 37330,309, 44069,24205,10359,
29555,9239, 3903, 868, 31359,44069,20895,18724,17651,38158,31547,44069,15793,41084,1150, 4787, 37330,38818,22866,15847,14918,38632,39189,6453, 17586,38953,36076,
6322, 44068,29554,2410, 19988,34230,44068,37134,38953,14381,38054,37811,13392,44068,2233, 37927,27284,34867,36371,32911,9119, 7262, 7141, 17585,34229,34828,36076,
- 17260,7400, 34794,28437,36604,22397,33908,18660,2322, 21062,4013, 14077,34888,16688,37329,6414, 32911,6927, 21012,16664,2470, 33082,2235, 439, 37928,21566,9008,
+ 17260,7400, 34794,28437,36604,22397,33908,18660,2322, 21062,4013, 14077,34888,16688,37329,6414, 32911,6927, 21012,16664,2470, 33082,2235, 439, 37928,21566,9008,
26584,29346,35264,10808,17584,21565,41084,5866, 34285,3543, 21564,23249,22035,9028, 14148,5803, 16663,18594,28023,26348,27815,8547, 9498, 3827, 3706, 12053,13874,
8651, 21627,35413,13657,2707, 30307,36090,17583,21563,29160,36076,2966, 21847,37329,23226,32199,33519,8900, 44068,6424, 31158,44067,38953,17868,16656,10948,37667,
5500, 30624,4612, 8546, 22220,35053,18148,2438, 4870, 16662,27168,7368, 7445, 6354, 44067,17582,29173,20869,26934,26789,23258,13110,14076,10286,33392,21279,23271,
13784,21058,8635, 38017,37178,6211, 854, 23832,18377,9845, 13400,23949,3965, 8041, 7267, 478, 13070,13696,36155,15853,44067,37329,20690,33411,5849, 36362,10366,
- 35360,5923, 32621,32177,12330,44067,18705,19319,35610,27114,17108,37435,33600,8545, 8637, 5800, 20901,11465,5941, 34102,10203,19434,33646,35499,3072, 17297,9921,
- 15846,22076,39208,29473,718, 29430,4134, 3795, 1086, 2912, 15365,34674,4807, 14470,78, 29318,6139, 30127,12188,18639,1129, 30714,9717, 15256,21351,25263,6792,
+ 35360,5923, 32621,32177,12330,44067,18705,19319,35610,27114,17108,37435,33600,8545, 8637, 5800, 20901,11465,5941, 34102,10203,19434,33646,35499,3072, 17297,9921,
+ 15846,22076,39208,29473,718, 29430,4134, 3795, 1086, 2912, 15365,34674,4807, 14470,78, 29318,6139, 30127,12188,18639,1129, 30714,9717, 15256,21351,25263,6792,
4407, 19851,8165, 2632, 10690,5844, 37188,12133,6020, 15845,4420, 20666,41084,602, 5297, 2461, 38686,16661,3090, 29482,39355,31152,3643, 3322, 20229,21562,21561,
- 25132,37329,14377,6707, 38723,37328,3100, 10110,14011,10134,3997, 6920, 1843, 10369,8193, 33223,17753,5250, 4080, 17581,3737, 12690,2666, 2486, 19991,16660,5912,
- 5577, 595, 16976,3722, 10189,213, 4299, 9552, 30645,34815,11555,36076,35053,10807,31764,1136, 8049, 30593,6264, 6699, 13692,3752, 8404, 24323,5355, 3418, 1979,
- 18659,11800,37173,4615, 33141,3752, 16054,36660,37362,19193,14661,38257,24314,17498,34069,33281,35900,9657, 5582, 18450,12516,7323, 25920,22848,37088,3773, 3025,
- 5323, 18658,34229,4189, 3040, 17733,2641, 1677, 17580,21560,8544, 2181, 6551, 38837,7460, 33046,20937,2706, 16607,23343,26769,17769,8390, 31952,19318,32911,8543,
+ 25132,37329,14377,6707, 38723,37328,3100, 10110,14011,10134,3997, 6920, 1843, 10369,8193, 33223,17753,5250, 4080, 17581,3737, 12690,2666, 2486, 19991,16660,5912,
+ 5577, 595, 16976,3722, 10189,213, 4299, 9552, 30645,34815,11555,36076,35053,10807,31764,1136, 8049, 30593,6264, 6699, 13692,3752, 8404, 24323,5355, 3418, 1979,
+ 18659,11800,37173,4615, 33141,3752, 16054,36660,37362,19193,14661,38257,24314,17498,34069,33281,35900,9657, 5582, 18450,12516,7323, 25920,22848,37088,3773, 3025,
+ 5323, 18658,34229,4189, 3040, 17733,2641, 1677, 17580,21560,8544, 2181, 6551, 38837,7460, 33046,20937,2706, 16607,23343,26769,17769,8390, 31952,19318,32911,8543,
22219,44066,13444,25248,34330,44066,7344, 35052,7972, 25013,17228,33409,36075,44066,32911,44066,12863,7349, 12015,29369,32713,36176,8294, 16951,17548,22625,38963,
17932,32952,17289,36706,24197,31343,22218,29553,44065,774, 7720, 18147,41083,28835,19282,30868,35003,17710,38953,12926,5665, 36075,34591,18657,26520,41083,15792,
33773,25967,7565, 11659,37202,37326,19226,1983, 1260, 2251, 3021, 35038,30086,11260,3824, 36625,16369,1816, 25834,44065,6497, 21559,19388,36316,15844,32910,24113,
22217,38021,36075,38952,4168, 15843,41083,41083,1771, 30445,5356, 8702, 27896,15114,15842,12687,4508, 26519,37328,16659,32831,36592,44065,26782,36075,2084, 19987,
35052,1177, 10512,36074,10691,35052,41082,41082,33518,27947,32910,35052,15388,3988, 8190, 14317,38952,3519, 3494, 14216,35291,9856, 9800, 17133,37038,31721,20419,
30005,39006,13819,13109,44065,35478,9720, 23279,4620, 19687,10365,23096,36074,44064,21424,29969,27424,36712,35154,37328,6600, 44064,11423,20637,44064,460, 44064,
- 32138,35051,2967, 21514,25732,11747,38476,15207,4747, 10133,4305, 18704,37304,27951,33273,38952,3634, 911, 12197,4997, 2560, 6439, 36897,11086,6557, 25673,3980,
+ 32138,35051,2967, 21514,25732,11747,38476,15207,4747, 10133,4305, 18704,37304,27951,33273,38952,3634, 911, 12197,4997, 2560, 6439, 36897,11086,6557, 25673,3980,
16958,4350, 2590, 29552,34229,38508,21166,34725,34344,11877,15456,22379,33357,25440,32899,41082,37402,6461, 26007,13806,33854,418, 18656,37406,12819,35811,39273,
- 300, 16184,1917, 38742,34426,8542, 717, 38811,34552,457, 39235,18476,21558,1385, 37909,26518,38181,5445, 3589, 11160,12233,4942, 36825,19990,21557,572, 2991,
+ 300, 16184,1917, 38742,34426,8542, 717, 38811,34552,457, 39235,18476,21558,1385, 37909,26518,38181,5445, 3589, 11160,12233,4942, 36825,19990,21557,572, 2991,
29909,16539,5065, 2771, 3502, 624, 1005, 5703, 772, 37598,1820, 1099, 7052, 20781,1254, 32227,1600, 14075,18655,173, 21556,30291,29904,39371,22130,34193,23065,
21444,35533,16331,22292,7890, 21800,21555,19102,33493,35337,12473,2773, 13574,21554,4777, 8337, 26728,17308,20447,37600,38063,4287, 21827,38450,28208,17236,36275,
- 31968,304, 36709,30484,27946,28222,12689,10949,2918, 1544, 32602,32632,16637,860, 2716, 44063,69, 26435,9265, 3055, 13397,18376,29880,9129, 13108,33518,5811,
+ 31968,304, 36709,30484,27946,28222,12689,10949,2918, 1544, 32602,32632,16637,860, 2716, 44063,69, 26435,9265, 3055, 13397,18376,29880,9129, 13108,33518,5811,
19989,28893,25481,31413,38952,29551,11446,2759, 44063,14674,5938, 22216,41082,29550,31358,37328,8767, 44063,44063,34, 10632,44062,8314, 34229,1998, 44062,32773,
38978,35051,629, 13913,39150,34228,5973, 25371,16630,2242, 4790, 25213,1967, 11463,18907,9129, 13518,33257,6882, 25000,38877,20102,33186,30626,24643,37853,17466,
- 34474,36074,33518,18703,37396,2033, 13391,1184, 32839,36560,25262,13620,21423,508, 17579,44062,21535,21766,25261,32802,33518,37327,3839, 4020, 4007, 19777,8267,
+ 34474,36074,33518,18703,37396,2033, 13391,1184, 32839,36560,25262,13620,21423,508, 17579,44062,21535,21766,25261,32802,33518,37327,3839, 4020, 4007, 19777,8267,
8266, 33025,486, 38951,2004, 5439, 6805, 37328,1570, 376, 659, 1711, 4705, 9682, 13578,17578,35051,35133,27121,1097, 33002,3142, 33869,4219, 5041, 4121, 34727,
- 38256,35051,35386,33473,35694,11238,26551,4606, 36074,17425,680, 1328, 946, 26559,33976,38951,496, 37327,25070,1723, 38577,1056, 600, 44062,1288, 1565, 1908,
+ 38256,35051,35386,33473,35694,11238,26551,4606, 36074,17425,680, 1328, 946, 26559,33976,38951,496, 37327,25070,1723, 38577,1056, 600, 44062,1288, 1565, 1908,
9497, 33517,44061,17829,11004,41081,38951,11897,44061,26517,29742,32808,38951,9131, 3242, 37383,22904,26186,33278,21553,35783,18610,35587,36073,38017,11151,36329,
- 25381,4298, 8748, 19317,38758,27945,36073,13124,38950,38950,35493,38950,41081,34297,35050,37327,33075,14673,4563, 13111,1057, 34760,36073,37327,15087,36164,8835,
+ 25381,4298, 8748, 19317,38758,27945,36073,13124,38950,38950,35493,38950,41081,34297,35050,37327,33075,14673,4563, 13111,1057, 34760,36073,37327,15087,36164,8835,
12392,10005,18940,8422, 16583,15324,11318,34186,11645,22784,35384,30471,22763,39180,22694,44061,10968,185, 6420, 23723,21982,31147,27829,31145,35050,11085,31273,
34656,15402,35771,23520,18877,1807, 31357,4697, 21440,13888,21552,36687,29935,12249,35413,26874,33768,1654, 35640,26056,8727, 10561,36073,36501,24919,5138, 17261,
- 17274,8830, 4329, 31913,20916,33199,27887,38537,22383,30986,7501, 35327,3300, 9536, 5043, 19988,5095, 4469, 6353, 23227,7633, 30769,24112,37326,358, 7540, 8421,
+ 17274,8830, 4329, 31913,20916,33199,27887,38537,22383,30986,7501, 35327,3300, 9536, 5043, 19988,5095, 4469, 6353, 23227,7633, 30769,24112,37326,358, 7540, 8421,
7637, 13573,35050,41081,41081,2078, 32732,23095,44061,38069,44060,33662,33044,30568,25260,719, 5129, 29664,7175, 9819, 15793,7348, 2884, 10109,9913, 23712,19494,
- 37110,677, 9426, 779, 7687, 3355, 5395, 30206,29628,5444, 15206,2022, 14343,11738,5161, 7170, 1950, 4468, 5443, 13572,11644,6018, 34617,11084,3450, 6184, 568,
+ 37110,677, 9426, 779, 7687, 3355, 5395, 30206,29628,5444, 15206,2022, 14343,11738,5161, 7170, 1950, 4468, 5443, 13572,11644,6018, 34617,11084,3450, 6184, 568,
5208, 13107,1808, 9007, 3176, 21209,38630,17577,17576,36820,21551,19914,14740,38432,44060,27944,7004, 6509, 9343, 5042, 9542, 4470, 488, 44060,548, 12745,18146,
21422,14379,35050,38950,9497, 2569, 27733,27586,3144, 1070, 37535,34369,31688,5783, 2753, 19987,8265, 10637,2254, 13106,3143, 5865, 4054, 9541, 18198,8600, 31818,
31684,35676,4854, 31018,37747,23713,38152,25259,36920,15841,11006,5405, 5810, 18654,22211,33000,1687, 24622,32902,212, 7680, 490, 14570,37326,1467, 1369, 25918,
@@ -12994,13 +12989,13 @@ static const unsigned short Ranks[197839] =
19985,28978,4419, 14147,37816,36372,28066,34228,19984,34228,11244,24173,39199,11735,15791,23025,4786, 35049,17854,36370,16656,5155, 30994,9973, 34073,15840,21547,
38489,35159,37325,23094,41078,35051,41078,32039,31356,36071,215, 24105,36573,3090, 41077,14993,9531, 36835,38949,35858,11654,35962,36618,3611, 313, 44057,35694,
38661,26777,12998,19217,16655,8829, 31238,44056,4053, 36071,20283,19983,38948,44056,18145,44056,26514,34958,11237,18576,5516, 37099,36570,44056,11038,17574,24110,
- 7980, 18144,41077,44055,29549,648, 9540, 37946,969, 4032, 988, 3672, 3772, 41077,27941,41077,34227,44055,18791,20784,19095,31106,1378, 36732,35789,32527,1525,
+ 7980, 18144,41077,44055,29549,648, 9540, 37946,969, 4032, 988, 3672, 3772, 41077,27941,41077,34227,44055,18791,20784,19095,31106,1378, 36732,35789,32527,1525,
33618,37873,41076,34738,41076,3016, 17727,26464,15567,39193,19984,32490,26175,37794,9954, 24108,22214,12618,33517,35280,26513,41076,18143,23329,3987, 36627,36301,
17547,38948,3610, 44055,7636, 3480, 27588,7719, 326, 22147,41076,1787, 38948,19983,41075,17546,16631,13972,18702,41075,36071,722, 20664,32770,38948,44055,35049,
28400,38947,15023,35877,44054,33091,33230,29682,33834,29184,485, 1657, 44054,44054,30688,29548,33954,9439, 231, 21546,2557, 12317,36042,39013,12687,21545,41075,
44054,38625,30385,28311,33493,21365,38947,41075,15022,44053,400, 6804, 1079, 3371, 38537,38947,15373,1202, 44053,2588, 4910, 8402, 9919, 15839,15838,15837,44053,
34171,44053,35844,19286,27349,6520, 31355,41074,35049,41074,44052,37880,32910,7231, 31354,35048,44052,18142,34227,23123,36071,33517,36070,44052,21421,41074,13688,
- 34964,20255,9198, 727, 18806,18774,15318,34230,16375,39110,34088,26512,36515,34758,41074,822, 22931,9872, 23709,13976,33599,4538, 36070,44052,6196, 6875, 3543,
+ 34964,20255,9198, 727, 18806,18774,15318,34230,16375,39110,34088,26512,36515,34758,41074,822, 22931,9872, 23709,13976,33599,4538, 36070,44052,6196, 6875, 3543,
37325,19052,37893,41073,37128,9197, 34153,35619,38947,33516,25257,41073,44051,3351, 32909,36070,37863,27940,24008,26511,17573,36617,35284,8080, 24109,33838,25055,
38958,44051,41073,39285,33788,44051,33266,26954,15387,12216,37324,22417,1415, 529, 1521, 23086,12403,2874, 4043, 21749,25316,5966, 6496, 2485, 37324,3679, 44051,
36789,36771,27820,33955,22213,36840,38946,33254,15204,34039,33013,36836,2055, 4445, 33516,37722,2021, 16195,19316,4804, 28990,28770,3241, 646, 2873, 19421,16024,
@@ -13012,7 +13007,7 @@ static const unsigned short Ranks[197839] =
15665,8828, 31993,22930,44048,7561, 18099,38265,38218,10972,12314,11643,4543, 3959, 29464,31140,14267,35602,5984, 38820,858, 23534,24486,35240,2095, 34712,10508,
36698,14296,17545,36069,36482,35048,16630,33516,7230, 31353,36068,33515,2402, 44048,44048,37324,23418,38946,34605,39383,26160,1848, 23267,34997,38520,39310,44048,
36017,16652,38946,6063, 24638,12191,37323,15405,35048,13190,16108,19207,25114,33373,34702,18819,22754,19387,44047,31488,37323,34355,15409,10054,17083,22756,31467,
- 3856, 12872,28188,19017,38423,37226,33419,37323,28980,35638,26383,38946,44047,20900,19315,38945,33044,44047,33515,34992,39295,35619,24382,7968, 34025,14564,8897,
+ 3856, 12872,28188,19017,38423,37226,33419,37323,28980,35638,26383,38946,44047,20900,19315,38945,33044,44047,33515,34992,39295,35619,24382,7968, 34025,14564,8897,
36068,44047,22843,7451, 33868,33652,6874, 36043,39122,37323,30505,35047,36068,7148, 32994,19314,29546,926, 19787,23093,44046,36068,17068,37672,44046,44046,34599,
21481,31476,36795,14320,38910,32581,41072,36733,37855,36402,2236, 39028,3176, 39010,34613,37322,19982,39241,28793,29985,44046,3023, 25935,32066,44045,1303, 41072,
32983,35047,3238, 14068,32821,15195,22314,37852,21382,21420,34887,35853,34079,15617,34227,34229,34890,38945,44045,33515,28314,33555,20872,38945,38989,29545,20281,
@@ -13025,16 +13020,16 @@ static const unsigned short Ranks[197839] =
31350,22710,44043,11896,21763,27017,2143, 9539, 29132,7372, 32817,18479,44043,38944,16314,9238, 4585, 36066,13658,38943,36139,11895,41070,32908,31349,38943,35686,
18141,32633,35047,41070,34226,2917, 16629,54, 8183, 25181,325, 30626,38997,1586, 41070,16628,2110, 1907, 18701,24985,248, 14630,35037,5067, 23092,2728, 35029,
29223,25821,14315,34226,29521,34393,34169,15202,36472,6532, 1453, 24946,31464,7476, 37455,31308,2254, 37022,32908,37968,35336,38332,44042,34048,34226,35598,22842,
- 41069,37322,1851, 41069,1126, 41069,37321,4138, 9118, 44042,39280,35571,97, 25629,873, 13597,30116,7287, 15386,18700,33279,41069,3412, 17783,32827,4998, 5473,
+ 41069,37322,1851, 41069,1126, 41069,37321,4138, 9118, 44042,39280,35571,97, 25629,873, 13597,30116,7287, 15386,18700,33279,41069,3412, 17783,32827,4998, 5473,
44042,11975,41068,17155,4537, 10709,6310, 5627, 1140, 41068,21543,35587,37543,24084,14795,31498,4998, 25891,33840,37397,18140,44042,37321,27934,21070,19946,15385,
- 13970,1895, 26433,3477, 9004, 8719, 16000,41068,18699,36288,38943,36157,37098,3089, 24108,24107,41068,14314,17570,22225,33665,1321, 36065,33850,13687,26509,7371,
- 38943,17067,41067,36065,38942,9237, 33515,38414,34689,38768,34661,21215,25924,25072,37321,18327,24207,731, 36215,8646, 20502,7370, 38942,39055,33514,31165,2372,
- 36456,34328,12726,22644,38430,37458,10813,4955, 38308,32221,31049,34390,19313,39209,696, 39329,35460,37718,44041,33200,24944,23091,27933,41067,21419,14331,1402,
+ 13970,1895, 26433,3477, 9004, 8719, 16000,41068,18699,36288,38943,36157,37098,3089, 24108,24107,41068,14314,17570,22225,33665,1321, 36065,33850,13687,26509,7371,
+ 38943,17067,41067,36065,38942,9237, 33515,38414,34689,38768,34661,21215,25924,25072,37321,18327,24207,731, 36215,8646, 20502,7370, 38942,39055,33514,31165,2372,
+ 36456,34328,12726,22644,38430,37458,10813,4955, 38308,32221,31049,34390,19313,39209,696, 39329,35460,37718,44041,33200,24944,23091,27933,41067,21419,14331,1402,
1176, 44041,18780,44041,34022,36458,44041,29343,4746, 37321,2751, 767, 41067,1055, 14563,36093,23090,2917, 19896,41067,41066,41066,26393,12679,9761, 2410, 10589,
3386, 27371,41066,1123, 749, 13969,44040,1968, 275, 32737,9496, 15384,37314,24703,41066,14955,9388, 16710,13104,8516, 1102, 2717, 35570,18762,31386,20188,20297,
6220, 2669, 38956,36506,38400,33300,2645, 15449,36892,33782,32347,38942,20836,26029,1783, 26318,28781,32025,20262,38401,33334,1066, 34169,3112, 29179,17237,24106,
26629,44040,8456, 19982,35046,15790,2295, 41065,7097, 14071,33055,12563,15201,36065,37320,1466, 2797, 12614,22730,22463,1420, 14816,44040,6479, 15853,3175, 35263,
- 20729,37320,3933, 38942,44040,6413, 9056, 7342, 23577,19139,1368, 1147, 1831, 2181, 27666,14984,31742,41065,35116,37320,15718,37719,18139,151, 16820,20101,6984,
+ 20729,37320,3933, 38942,44040,6413, 9056, 7342, 23577,19139,1368, 1147, 1831, 2181, 27666,14984,31742,41065,35116,37320,15718,37719,18139,151, 16820,20101,6984,
19187,28860,6273, 20333,9015, 27666,5290, 3320, 6160, 19846,11802,26579,19842,26270,20204,25819,26404,27618,32746,26369,27411,27401,23828,23900,28584,14880,20206,
31537,31698,23352,14732,28389,23271,13602,28876,20431,17311,17027,10377,18825,28164,30342,13081,31192,31396,31892,16720,32087,27657,15654,13148,29350,32544,28226,
31750,20195,26239,29963,11633,1127, 17428,41065,41065,44039,10770,17047,28150,400, 92, 5472, 38439,44039,573, 384, 23990,4621, 704, 19067,33964,30766,44039,
@@ -13042,15 +13037,15 @@ static const unsigned short Ranks[197839] =
41064,25254,44038,8714, 2540, 15484,22701,11431,16525,8448, 37319,6735, 1618, 7288, 10241,41064,37319,36064,33073,34225,13615,15106,19312,44038,37319,9218, 25552,
38941,33802,296, 751, 772, 121, 14542,853, 3385, 247, 19967,41064,37338,26326,18698,36064,38839,23664,6644, 18796,14313,16284,41063,3972, 30227,6051, 26486,
10635,22562,35046,41063,3583, 4160, 6092, 21542,29584,8436, 32908,38941,38940,8357, 33611,38940,39405,18321,21805,16272,14261,31348,26584,3279, 18420,4893, 39092,
- 34225,44038,27389,11261,44038,29016,44037,525, 15107,2054, 14820,31347,36064,21607,17075,5402, 20380,9342, 26141,2310, 20034,32908,3322, 11642,34225,24106,2053,
+ 34225,44038,27389,11261,44038,29016,44037,525, 15107,2054, 14820,31347,36064,21607,17075,5402, 20380,9342, 26141,2310, 20034,32908,3322, 11642,34225,24106,2053,
34225,13659,18378,51, 4733, 23402,2388, 44037,19008,11747,152, 17184,20061,39124,37319,1638, 44037,35734,1793, 12767,6495, 8401, 9341, 11844,1504, 36064,29544,
23344,33632,12125,37318,16608,7148, 29083,18528,36157,5669, 34713,34506,37840,4920, 17569,4150, 16547,26881,35711,32864,37866,2260, 34723,35046,38153,44037,44036,
6550, 32306,29240,1164, 16781,29123,24441,27816,26106,27817,31082,29055,28532,31250,27942,27811,791, 38762,5244, 19859,13689,28740,22212,32907,32364,34224,37799,
- 36761,38080,20662,38940,38940,33433,569, 14952,44036,2380, 475, 31213,7561, 2675, 2643, 10944,20455,338, 17279,811, 2514, 30807,2834, 32517,25810,443, 2499,
+ 36761,38080,20662,38940,38940,33433,569, 14952,44036,2380, 475, 31213,7561, 2675, 2643, 10944,20455,338, 17279,811, 2514, 30807,2834, 32517,25810,443, 2499,
20415,14103,19235,37877,2714, 38939,31621,14395,44036,32698,12309,7912, 33420,21357,16962,33040,44036,31409,38529,33869,28969,36063,44035,38939,25716,25714,36952,
44035,8645, 22743,32710,16744,38114,32936,35730,36981,25, 9116, 5248, 16678,17695,16185,18590,11010,28915,13408,2460, 31356,27129,41063,44035,16778,5334, 13522,
30238,10544,18649,31055,6734, 9117, 12698,29544,26876,32907,38939,41063,232, 8941, 20405,27930,14789,44035,38939,2248, 33123,33514,38680,24105,39340,20014,24104,
- 44034,7756, 18230,41062,16194,38938,10864,44034,41062,6066, 44034,10863,20135,25253,12372,2872, 35311,19771,11276,3398, 17741,2187, 3202, 14608,34823,37834,6914,
+ 44034,7756, 18230,41062,16194,38938,10864,44034,41062,6066, 44034,10863,20135,25253,12372,2872, 35311,19771,11276,3398, 17741,2187, 3202, 14608,34823,37834,6914,
5667, 21541,34953,8231, 26508,12013,27765,12163,2325, 41062,38938,31346,35045,5184, 37318,12439,14266,37379,16651,6096, 29543,41062,26, 5650, 22060,3457, 37318,
38938,41061,10805,28185,13704,11894,27932,973, 38084,38938,17066,12007,21540,22211,33115,33361,2612, 4947, 19978,5442, 36063,24103,23266,44034,37318,12685,44033,
41061,33514,38937,44033,9161, 24420,25460,24560,37317,1791, 26024,5381, 29929,4683, 9719, 11358,36481,37317,41061,26507,36960,32703,21418,19352,31345,36063,44033,
@@ -13067,46 +13062,46 @@ static const unsigned short Ranks[197839] =
35144,679, 21411,11910,671, 10406,5821, 32808,12636,11743,15191,31753,27445,9010, 32005,2984, 17278,19999,8919, 11895,19975,21535,15806,32153,22908,8879, 24080,
23300,17529,12034,38036,16045,28851,36811,44029,36868,34077,16193,679, 556, 33160,36083,37184,6565, 1075, 14839,30530,38473,44029,36061,4747, 44028,29541,38935,
37316,41059,216, 18137,37965,41059,357, 6777, 21534,44028,8329, 41059,44028,23885,38935,33513,41058,38934,41058,37316,36061,36061,44028,32906,28303,23565,13440,
- 41058,22, 21417,34223,44027,12613,23086,19978,21569,38934,18468,763, 36060,38934,6675, 8767, 585, 35277,36060,35703,1367, 15112,35242,5957, 38973,31863,5331,
+ 41058,22, 21417,34223,44027,12613,23086,19978,21569,38934,18468,763, 36060,38934,6675, 8767, 585, 35277,36060,35703,1367, 15112,35242,5957, 38973,31863,5331,
44027,27018,29761,2833, 38934,11100,22810,11966,39140,32906,19523,32870,35728,21022,7477, 27370,29540,34564,38402,37316,35994,19028,35977,24102,36064,4248, 29794,
9162, 6303, 10362,34434,3306, 5923, 25251,6697, 41058,32905,35044,31610,19974,18627,2567, 12081,8778, 14024,5636, 18735,33477,29329,1209, 4690, 5613, 17569,35091,
9538, 31342,41057,27365,2210, 38456,19310,32905,744, 41057,34279,38933,8994, 7722, 36319,182, 16627,35637,34223,31341,36060,23085,10054,38933,35044,3998, 30293,
44027,33731,2755, 7647, 34677,9115, 38933,1824, 24101,37661,38933,37315,5206, 32905,32905,29539,3763, 13833,5861, 10053,37315,24100,36060,321, 16885,38932,17435,
41057,18145,20556,34222,16823,41057,29538,37315,19973,14069,20660,38932,44027,32409,44026,41056,31653,35044,41056,44026,34222,26506,2433, 25748,34183,36059,15848,
- 41056,14938,21416,22017,5117, 4916, 41056,22162,22015,2792, 7038, 38403,23513,38932,35957,657, 41055,19972,41055,35969,37315,38932,34671,11148,32904,381, 7809,
+ 41056,14938,21416,22017,5117, 4916, 41056,22162,22015,2792, 7038, 38403,23513,38932,35957,657, 41055,19972,41055,35969,37315,38932,34671,11148,32904,381, 7809,
11445,41055,9760, 205, 33053,529, 38931,38931,21415,21414,41055,13443,33389,2409, 44026,24099,41054,6599, 29537,32904,44026,7808, 3117, 3036, 6674, 31340,37314,
27931,19309,163, 20524,1073, 38931,20659,36059,44025,7807, 31339,32904,11658,41054,5808, 38931,38930,31734,21413,34222,19484,144, 16747,44025,36954,29536,33012,
820, 1541, 28469,35043,35189,20004,37400,37806,3174, 2353, 2180, 1678, 912, 12565,429, 10935,36206,34222,22209,37944,35354,8070, 41054,90, 32417,27971,32828,
32904,38527,32903,37314,32903,1722, 14306,1329, 17227,27727,41054,38930,794, 24098,2444, 37728,27153,33669,21533,41053,15787,38373,3529, 35867,26054,31338,15478,
27183,6192, 33249,7443, 31060,32164,845, 19850,21532,44025,31542,26937,7635, 34351,37502,41053,4479, 40, 18701,2255, 24907,15377,11610,25871,11155,12112,32989,
14476,34212,23000,9494, 26505,31125,17542,39319,33638,38930,36983,10320,19971,3678, 32197,32646,16650,24228,38149,18648,41053,37401,25250,44025,20762,36785,23084,
- 8637, 18926,34185,5702, 29366,36674,35369,39284,35222,44024,37345,35915,27930,23127,7789, 15393,23793,33764,27511,17145,850, 33494,37781,28366,3415, 35200,2684,
+ 8637, 18926,34185,5702, 29366,36674,35369,39284,35222,44024,37345,35915,27930,23127,7789, 15393,23793,33764,27511,17145,850, 33494,37781,28366,3415, 35200,2684,
5566, 13665,6069, 32844,44024,21412,1997, 36059,5616, 3465, 15831,8686, 37823,548, 23499,5483, 1636, 11452,28628,16673,30662,18797,22313,16579,21924,44024,28145,
35992,36219,2058, 33071,6891, 36583,38680,41053,18277,139, 32938,1701, 32542,13184,22359,22982,25581,13570,37759,22605,31370,2750, 23293,5012, 41052,44024,13104,
- 34726,14561,6464, 24985,9433, 7211, 33428,30481,32898,4072, 7370, 4291, 21531,17197,41052,10690,36670,35884,38625,23303,44023,26504,18672,41052,36515,44023,4748,
+ 34726,14561,6464, 24985,9433, 7211, 33428,30481,32898,4072, 7370, 4291, 21531,17197,41052,10690,36670,35884,38625,23303,44023,26504,18672,41052,36515,44023,4748,
37314,34587,28501,904, 4835, 34288,33513,15018,16626,28642,41052,41051,44023,38930,12921,1666, 11640,18741,8539, 44023,19308,5041, 7096, 19080,34493,7704, 32753,
36059,38929,35489,36191,11049,23414,44022,38929,3456, 29535,28154,17743,35043,44022,16389,33513,44022,41051,11196,324, 6100, 41051,27929,30895,39017,37339,17541,
- 27928,44022,2097, 15830,9745, 4933, 16075,2453, 5665, 13390,4527, 35441,22152,5850, 22847,29419,13389,34221,44021,41051,20235,4335, 303, 2228, 24965,33095,76,
+ 27928,44022,2097, 15830,9745, 4933, 16075,2453, 5665, 13390,4527, 35441,22152,5850, 22847,29419,13389,34221,44021,41051,20235,4335, 303, 2228, 24965,33095,76,
32997,9774, 30305,33969,33018,19970,1361, 31379,3785, 35180,31973,34608,34027,36548,30056,3700, 17735,27558,18696,44021,29265,18136,22208,29258,24531,4886, 41050,
30889,1082, 29729,32903,41050,20658,7529, 5562, 32890,8161, 18647,7456, 35043,9918, 9356, 32939,37017,20741,19780,7093, 37394,1373, 37822,18646,38020,13569,21513,
32841,6255, 12876,34221,17949,5914, 34024,38082,8603, 22029,41050,33462,38929,10509,17211,7314, 743, 3455, 37392,11422,5997, 13227,24754,28363,25802,3575, 18292,
31337,5010, 33055,44021,5937, 2010, 38618,14275,19711,26503,29469,4846, 35708,19202,35603,27927,38929,6969, 3609, 24957,36723,35043,24097,38928,38282,15207,41050,
8685, 35496,22207,11639,15895,20107,44021,41049,16493,36441,17654,33131,39252,28719,44020,17355,33060,27211,26312,38439,31812,44020,19942,9495, 39036,17065,31252,
44020,8420, 36048,34023,2436, 44020,32903,38928,4727, 12612,44019,8975, 28983,26494,28803,11863,36699,2875, 3373, 37163,2911, 19969,5690, 37099,9340, 19968,37917,
- 14560,35771,7169, 37314,38928,38928,29555,36058,17064,29534,44019,44019,16390,10804,25496,41049,12370,41049,224, 1892, 6293, 35042,19391,6327, 34317,10129,4264,
- 29510,4823, 44019,30052,8439, 8781, 44018,21411,33512,38805,9887, 44018,32573,26502,38927,11048,13103,14619,35715,37468,37313,23440,411, 38927,44018,1014, 6888,
+ 14560,35771,7169, 37314,38928,38928,29555,36058,17064,29534,44019,44019,16390,10804,25496,41049,12370,41049,224, 1892, 6293, 35042,19391,6327, 34317,10129,4264,
+ 29510,4823, 44019,30052,8439, 8781, 44018,21411,33512,38805,9887, 44018,32573,26502,38927,11048,13103,14619,35715,37468,37313,23440,411, 38927,44018,1014, 6888,
11109,2838, 7287, 32829,30352,44018,34057,1955, 34968,33099,38409,36058,855, 36887,10803,13568,18189,35203,38629,33534,18624,17568,13950,9602, 5548, 35076,34451,
39308,12004,11674,36651,16092,33384,33848,41049,17567,7168, 35365,11537,11608,7949, 9352, 33914,18464,29109,8186, 23064,17566,10802,36394,12683,14068,16867,16649,
35509,29308,35918,35042,34655,31193,33512,18695,38040,38927,33512,30760,16764,14280,25534,37313,37313,21530,37313,18135,37528,41048,41048,34534,16625,37312,44017,
- 33512,31494,41048,5691, 38977,24096,2306, 1704, 14761,20095,44017,25249,9809, 41048,6404, 19967,4006, 15200,18529,11444,3986, 36058,12694,24137,6696, 6494, 5401,
+ 33512,31494,41048,5691, 38977,24096,2306, 1704, 14761,20095,44017,25249,9809, 41048,6404, 19967,4006, 15200,18529,11444,3986, 36058,12694,24137,6696, 6494, 5401,
25368,13567,2832, 38927,19966,25248,36770,32, 32923,15951,19817,35123,11475,19889,36399,16690,38693,27926,32245,41047,44017,22206,16, 19036,18201,179, 28691,
32614,26937,1419, 24311,33511,12483,39378,18645,36176,22348,35042,2127, 39173,19094,14559,38025,35989,34221,31856,25738,34685,36575,22176,33952,13223,23326,13102,
- 37393,39400,32902,37312,41047,12313,16648,37796,7170, 25725,33943,3961, 25723,23144,41047,1106, 18800,31562,7230, 1349, 29309,36571,21594,32901,18463,33292,3321,
- 36058,22773,3868, 37013,22037,6634, 32776,21273,7293, 17306,8135, 1600, 19326,15252,11666,38988,5981, 17098,1042, 5002, 6526, 27844,39320,8253, 6752, 29097,9752,
+ 37393,39400,32902,37312,41047,12313,16648,37796,7170, 25725,33943,3961, 25723,23144,41047,1106, 18800,31562,7230, 1349, 29309,36571,21594,32901,18463,33292,3321,
+ 36058,22773,3868, 37013,22037,6634, 32776,21273,7293, 17306,8135, 1600, 19326,15252,11666,38988,5981, 17098,1042, 5002, 6526, 27844,39320,8253, 6752, 29097,9752,
4327, 6017, 18540,31405,13985,6919, 34014,15929,3061, 29609,27607,38625,23110,19965,5545, 7786, 9089, 36549,34221,38387,37934,29130,33492,34882,37262,38860,37052,
- 35988,21529,34028,23511,28370,10632,6062, 39057,10400,13991,1809, 23273,31631,39120,33629,37493,22372,41047,11343,32569,37312,28725,1863, 36057,22632,4080, 847,
- 38926,18130,18134,35669,26317,17315,3743, 29596,37147,33511,37227,16451,33337,12151,20665,25681,7958, 13606,8994, 13656,36798,29758,9640, 18644,20848,38120,4905,
- 38926,44017,44016,37993,1437, 19219,33831,33987,44016,44016,33029,30298,44016,37312,41046,21546,36900,4720, 4103, 5432, 32501,3809, 38713,7982, 39389,11657,3220,
+ 35988,21529,34028,23511,28370,10632,6062, 39057,10400,13991,1809, 23273,31631,39120,33629,37493,22372,41047,11343,32569,37312,28725,1863, 36057,22632,4080, 847,
+ 38926,18130,18134,35669,26317,17315,3743, 29596,37147,33511,37227,16451,33337,12151,20665,25681,7958, 13606,8994, 13656,36798,29758,9640, 18644,20848,38120,4905,
+ 38926,44017,44016,37993,1437, 19219,33831,33987,44016,44016,33029,30298,44016,37312,41046,21546,36900,4720, 4103, 5432, 32501,3809, 38713,7982, 39389,11657,3220,
17109,7593, 35251,24647,5513, 13871,15829,8757, 12682,35598,44015,20889,797, 33421,15737,13141,36057,44015,12312,38079,38153,14641,36088,32902,35042,41046,38647,
38910,3, 2258, 21724,21528,33973,19964,44015,22999,18359,10663,15287,33406,13568,38091,28136,41046,33511,32902,10959,41046,35041,35041,26281,3240, 31336,44015,
27925,44014,36057,15657,38926,24095,41045,1761, 20680,876, 9511, 11, 16647,35273,37499,11143,44014,38926,4953, 6976, 25683,37127,34220,35011,4810, 8505, 14365,
@@ -13118,15 +13113,15 @@ static const unsigned short Ranks[197839] =
20137,37468,33525,24050,4843, 24542,37311,38564,3431, 2785, 29463,17276,29574,18845,38925,33681,9858, 19962,37310,44011,38925,3314, 41044,44011,37310,21410,11835,
44010,44010,13388,38925,8644, 31334,8930, 260, 29674,17738,19983,19004,11296,26500,29860,20732,26703,26975,12981,4361, 24184,41044,19178,15799,10128,11823,44010,
7716, 13314,41044,16624,6423, 12311,16807,28234,44010,41043,36056,44009,44009,6695, 15199,18643,10361,21527,19961,41043,24191,44009,2109, 38636,8003, 34256,12681,
- 44009,44008,38924,2026, 15677,23083,6515, 31578,7718, 27813,35408,44008,37674,30001,29532,34868,7732, 166, 25422,13625,731, 33032,32446,14218,7753, 3992, 9757,
- 25539,29756,6162, 26980,31364,31254,22436,12928,21122,16292,18026,32215,6912, 15355,8970, 26399,13218,29752,17467,19833,29, 5496, 17250,19795,38924,24692,2603,
+ 44009,44008,38924,2026, 15677,23083,6515, 31578,7718, 27813,35408,44008,37674,30001,29532,34868,7732, 166, 25422,13625,731, 33032,32446,14218,7753, 3992, 9757,
+ 25539,29756,6162, 26980,31364,31254,22436,12928,21122,16292,18026,32215,6912, 15355,8970, 26399,13218,29752,17467,19833,29, 5496, 17250,19795,38924,24692,2603,
2713, 688, 35040,9853, 25319,30292,31285,31633,33338,16465,622, 2352, 380, 33934,32880,31315,2208, 31333,44008,12187,399, 615, 23082,29531,14602,898, 26465,
6938, 879, 8678, 4349, 1763, 23081,37310,44008,292, 19474,14824,41043,17321,41043,9560, 7789, 35040,32902,41042,17539,38924,17134,36055,44007,198, 10284,37310,
21409,4252, 3320, 26795,1430, 7365, 41042,24856,31332,44007,38924,13226,21408,22738,19976,38361,35715,36790,18289,32901,320, 8718, 37720,31308,3768, 44007,44007,
38923,11638,17565,22529,13101,31390,44006,34219,31331,17564,34432,30569,26149,31330,18425,3319, 32901,38923,30148,44006,2227, 1737, 37309,38923,11183,19960,32901,
25247,12322,15296,5024, 12613,36037,41042,8367, 14692,3224, 21363,16166,33825,16818,38623,16882,2409, 10360,2521, 16474,38379,38639,19959,41042,44006,4845, 11733,
- 35040,38923,38922,14558,35142,26501,20315,32901,20975,22091,7759, 9819, 38922,624, 7347, 18133,36923,38922,4563, 16206,7444, 17563,6261, 34363,3658, 2956, 4878,
- 26446,13024,34219,33825,41041,27921,1515, 8729, 21569,19752,39054,38922,12784,26508,24009,2193, 23320,790, 41041,36055,44006,41041,1885, 12917,29977,17251,344,
+ 35040,38923,38922,14558,35142,26501,20315,32901,20975,22091,7759, 9819, 38922,624, 7347, 18133,36923,38922,4563, 16206,7444, 17563,6261, 34363,3658, 2956, 4878,
+ 26446,13024,34219,33825,41041,27921,1515, 8729, 21569,19752,39054,38922,12784,26508,24009,2193, 23320,790, 41041,36055,44006,41041,1885, 12917,29977,17251,344,
10347,32903,25729,30597,37837,1228, 21084,28458,34597,30325,44005,16440,2282, 38896,27860,2633, 11171,9663, 13598,28163,34552,29423,1618, 11011,25505,28559,31607,
33676,35597,33664,7884, 33025,41041,19222,16646,44005,41040,29192,14554,32099,20722,37237,21543,38981,39261,24701,2961, 13100,38185,2916, 33392,23542,26756,25765,
1279, 16008,23591,136, 9256, 33074,26465,44005,1637, 3384, 9733, 38694,17217,2155, 37772,36949,19655,3383, 37148,13762,37144,38566,39106,11429,35281,34254,33840,
@@ -13134,23 +13129,23 @@ static const unsigned short Ranks[197839] =
31706,24623,22573,24072,21560,13180,17504,18312,24189,31882,24403,24192,31442,16648,26325,16758,18414,7746, 31446,33092,39316,1656, 2284, 31448,759, 38943,36321,
44005,32869,36652,44004,35039,2531, 18318,2642, 36159,6906, 30676,2408, 35193,11621,2871, 1287, 12372,32900,18948,24011,8393, 25756,20872,44004,36055,38921,27920,
85, 25261,24596,17264,34219,21549,36252,14259,1830, 32951,3767, 10349,1136, 29530,21663,33012,33510,25840,34219,2674, 1103, 175, 14768,6635, 6462, 33705,26549,
- 4527, 28817,21996,27067,31755,37309,2498, 38920,16954,97, 3482, 20573,14471,30609,17503,32879,15759,13099,15298,34731,12512,35951,3171, 32057,37575,34218,2283,
+ 4527, 28817,21996,27067,31755,37309,2498, 38920,16954,97, 3482, 20573,14471,30609,17503,32879,15759,13099,15298,34731,12512,35951,3171, 32057,37575,34218,2283,
30454,3015, 11080,1654, 882, 12522,36055,37479,36860,38920,12701,19070,16026,2715, 353, 2536, 9149, 5611, 13231,7652, 5404, 5530, 12310,18642,5441, 2004, 14067,
12680,637, 38027,1997, 20310,24231,14687,13566,17618,4946, 2105, 27955,9787, 13969,13387,38392,14747,44004,31150,15828,14017,37564,36337,44004,17562,8134, 24614,
33083,33916,44003,38789,12294,16051,8827, 28091,13565,11962,38827,37761,26766,9537, 12985,2740, 11079,38111,34936,36273,16645,17561,24874,27671,174, 12578,38872,
37721,35863,32811,38962,32898,44003,37999,32900,36865,16217,41040,13967,21801,41040,37309,21114,32562,37980,31264,13564,11892,11358,38236,29529,8079, 25537,29196,
36048,37824,35039,16430,5987, 41039,44003,37309,44003,5567, 34229,38894,14312,21525,33510,15383,25246,19974,29829,374, 27801,1754, 1807, 1036, 4446, 38166,20497,
- 33638,13563,17671,6742, 14557,10837,10359,36201,16644,24094,14633,23509,24361,33677,18970,26952,36513,19958,34339,3639, 4774, 4533, 36054,35399,23079,6628, 9036,
- 34683,14881,41039,18021,17997,36034,36054,36054,4400, 33024,33029,29958,4755, 10907,38829,9139, 32900,33509,35716,38920,5505, 18649,18972,38720,19307,15361,4337,
+ 33638,13563,17671,6742, 14557,10837,10359,36201,16644,24094,14633,23509,24361,33677,18970,26952,36513,19958,34339,3639, 4774, 4533, 36054,35399,23079,6628, 9036,
+ 34683,14881,41039,18021,17997,36034,36054,36054,4400, 33024,33029,29958,4755, 10907,38829,9139, 32900,33509,35716,38920,5505, 18649,18972,38720,19307,15361,4337,
28524,39197,13602,36958,37846,22430,44002,34607,24093,37062,8304, 26325,3888, 4056, 21120,22, 19850,1175, 31318,7382, 21755,28365,24748,6755, 26811,23977,19657,
- 3699, 26172,37895,18700,10308,8133, 12244,4788, 12664,38331,39161,35400,703, 17041,22809,33730,8002, 4188, 7883, 9667, 25877,39077,31908,37308,35416,17560,5529,
+ 3699, 26172,37895,18700,10308,8133, 12244,4788, 12664,38331,39161,35400,703, 17041,22809,33730,8002, 4188, 7883, 9667, 25877,39077,31908,37308,35416,17560,5529,
4769, 23974,9003, 6127, 35147,35162,19957,30738,38079,38080,33283,39332,34235,33267,39135,8133, 35441,19742,14066,4326, 18191,34524,28286,34845,28528,9844, 34405,
14460,44002,8001, 32015,22589,9214, 36991,24411,15198,18641,44002,34218,22205,31554,9337, 32900,37944,22650,16438,19101,21524,37308,41039,33509,38014,6953, 36268,
- 14779,954, 944, 38020,18593,19710,27061,36050,36702,32438,23799,36404,37418,36625,33750,33844,25711,38871,26868,29902,32405,11015,37041,18164,19097,11974,3777,
+ 14779,954, 944, 38020,18593,19710,27061,36050,36702,32438,23799,36404,37418,36625,33750,33844,25711,38871,26868,29902,32405,11015,37041,18164,19097,11974,3777,
5755, 14065,8092, 5648, 29134,27919,12214,10511,32796,10588,34092,16643,35039,14110,34217,26875,21277,35165,38093,11669,39295,17559,35737,21548,13715,26945,31329,
15017,17052,11355,17063,11017,22062,26068,12915,29105,462, 352, 44002,41039,31328,38920,38919,505, 6392, 10685,30994,30495,24092,41038,36054,814, 12721,16035,
7539, 26500,31327,19723,3318, 1207, 27918,33509,3161, 410, 25426,44001,41038,34736,2379, 34218,13328,1884, 29737,25245,30685,24933,98, 8038, 23799,24554,25499,
- 33982,36531,36053,36053,28514,37308,10772,41038,6606, 22705,44001,38919,34218,10199,655, 20656,44001,14275,9286, 20214,41038,33509,8311, 37308,44001,38604,4578,
+ 33982,36531,36053,36053,28514,37308,10772,41038,6606, 22705,44001,38919,34218,10199,655, 20656,44001,14275,9286, 20214,41038,33509,8311, 37308,44001,38604,4578,
9339, 25581,36053,33508,33610,29528,22204,13123,730, 5305, 32931,34848,32900,29527,1347, 29946,34015,36344,25033,36062,37819,11514,20183,32323,10587,21639,31221,
11789,14064,18606,6918, 44000,19956,3751, 32863,1827, 14556,101, 1982, 41037,24166,12309,356, 19955,11973,2658, 303, 278, 4418, 11078,98, 17558,1316, 30619,
32238,20261,288, 2739, 498, 24103,10016,36053,33508,16623,8766, 33761,44000,24132,37347,38919,32899,32899,41037,35817,35617,23493,36653,15382,5899, 10857,21849,
@@ -13164,14 +13159,14 @@ static const unsigned short Ranks[197839] =
20238,1768, 4396, 4605, 3096, 938, 689, 901, 352, 1969, 820, 9717, 21523,23660,38768,3940, 21407,41036,36052,41036,13686,19718,33015,7891, 12135,32998,34217,
34217,17386,20628,36052,34849,13561,16110,15196,14912,26761,14554,36530,8132, 29353,27916,9918, 11047,37307,15195,2652, 11637,7095, 8131, 16642,34618,36962,31689,
36997,37655,34982,43998,6182, 12967,14063,4745, 319, 1187, 24012,12364,2598, 20824,7788, 20217,21117,22934,29803,15785,18938,20654,41035,4413, 35868,31325,22032,
- 2504, 12679,30015,32865,15376,25243,31324,2207, 218, 8859, 16463,23936,23503,15419,21067,35143,3985, 20437,37103,41035,4268, 27915,9338, 8605, 17276,5571, 8649,
+ 2504, 12679,30015,32865,15376,25243,31324,2207, 218, 8859, 16463,23936,23503,15419,21067,35143,3985, 20437,37103,41035,4268, 27915,9338, 8605, 17276,5571, 8649,
6103, 1261, 1325, 1083, 4247, 12611,6147, 36019,43998,2257, 4218, 6077, 408, 18841,17352,9465, 1221, 3848, 11692,22674,35038,16844,19457,19648,33063,11776,31838,
- 21522,11354,19953,37074,23236,34231,539, 3349, 3986, 11353,3736, 8001, 10127,7443, 34188,14062,17557,5241, 10033,13408,7165, 24709,17556,1075, 28427,2757, 2818,
- 3897, 31175,1924, 9921, 8905, 26638,38471,30886,10112,8001, 2311, 20194,2212, 1435, 10585,13239,37107,8225, 32823,5659, 14463,517, 24576,25013,6895, 16972,7535,
+ 21522,11354,19953,37074,23236,34231,539, 3349, 3986, 11353,3736, 8001, 10127,7443, 34188,14062,17557,5241, 10033,13408,7165, 24709,17556,1075, 28427,2757, 2818,
+ 3897, 31175,1924, 9921, 8905, 26638,38471,30886,10112,8001, 2311, 20194,2212, 1435, 10585,13239,37107,8225, 32823,5659, 14463,517, 24576,25013,6895, 16972,7535,
35929,16017,37367,31323,35262,37306,6201, 15826,43997,142, 34839,4811, 13298,31222,13155,19791,27660,25742,28664,15790,32932,33025,25021,21406,28315,20435,30023,
32002,31843,30596,18029,21304,28450,34951,5527, 43997,14458,5094, 17555,17554,41035,2673, 36519,11351,32760,35038,43997,36228,38582,33453,38409,36248,7959, 43997,
35828,8684, 3945, 16472,34651,26672,37442,14574,37690,36722,35976,41035,23078,41034,20079,13390,12306,26599,34869,38617,23644,12561,11369,10804,32888,11974,38647,
- 8774, 9005, 9174, 22245,36704,23935,36840,31710,38819,26808,6228, 18521,1664, 43996,4608, 37920,7271, 8121, 20590,23220,10818,37306,10358,13915,20935,37306,7715,
+ 8774, 9005, 9174, 22245,36704,23935,36840,31710,38819,26808,6228, 18521,1664, 43996,4608, 37920,7271, 8121, 20590,23220,10818,37306,10358,13915,20935,37306,7715,
34875,6873, 22495,35038,35038,20653,10187,2231, 13685,10199,34636,7012, 23662,12231,2833, 20256,1632, 43996,36756,8698, 29854,19449,3387, 5103, 34492,2253, 32924,
29477,41034,36972,37544,34629,38781,10562,5017, 34857,23346,824, 2672, 1523, 29526,35451,29647,12719,16641,17553,14341,41034,34086,14783,36409,41034,38917,43996,
33677,1653, 36578,15188,41033,34571,1030, 11934,35156,36700,41033,41033,17062,6530, 30242,13386,20726,35072,25242,17061,15551,24492,43996,38988,16484,9537, 33066,
@@ -13183,18 +13178,18 @@ static const unsigned short Ranks[197839] =
13829,5221, 7242, 32859,43993,2267, 12979,13129,23077,43993,8288, 17199,38694,28085,4471, 38048,20921,10205,38293,35121,7173, 32630,21521,7360, 22391,20798,15331,
32914,873, 18171,9882, 6850, 5410, 16554,15690,20417,37884,12874,17820,22193,2916, 22203,34216,322, 16772,29428,25241,38916,29583,29129,30979,16550,31623,43993,
4838, 36096,37500,6698, 1483, 37113,2845, 2101, 12920,1049, 11502,33397,38202,19214,8476, 3564, 12250,2998, 19066,14858,31510,20520,8614, 36598,34371,32779,34092,
- 2325, 24090,34216,15825,35650,33507,37304,43993,37304,38916,41031,34611,7718, 41031,43992,38915,16914,18733,34657,35037,22202,25048,11022,30348,3631, 35302,7078,
+ 2325, 24090,34216,15825,35650,33507,37304,43993,37304,38916,41031,34611,7718, 41031,43992,38915,16914,18733,34657,35037,22202,25048,11022,30348,3631, 35302,7078,
35915,13884,32846,38915,36051,11235,4952, 30485,12334,33682,32534,35502,43992,41030,29798,3382, 41030,38152,25666,29672,43992,3766, 2641, 2037, 3454, 889, 43992,
33323,12746,9489, 35363,41030,37539,36051,41030,1465, 1464, 38813,13122,38915,41029,37304,21237,38915,4919, 33507,16622,36357,18132,28082,38914,30578,38298,25240,
35560,15380,15455,36274,18, 98, 1756, 30668,354, 21406,41029,34436,35591,14311,23614,38914,35610,27432,43991,15015,34216,32899,17060,29525,1251, 43991,14061,
305, 1644, 27234,35498,37303,35907,6321, 37336,38914,12369,30076,27941,43991,43991,43990,31321,9917, 41029,11891,41029,36932,41028,41028,41028,23355,17537,34216,
- 36051,15014,35037,25239,37303,22268,10584,27913,32949,1157, 34249,29081,2380, 23076,22201,22440,23980,14108,21159,38972,37303,38914,36050,36050,36050,37303,2832,
+ 36051,15014,35037,25239,37303,22268,10584,27913,32949,1157, 34249,29081,2380, 23076,22201,22440,23980,14108,21159,38972,37303,38914,36050,36050,36050,37303,2832,
41028,27912,8701, 37084,36877,43990,33063,23075,4755, 1779, 36637,2819, 30337,23661,11477,17537,24994,12747,14241,43990,27802,38913,4909, 36085,38761,43990,21104,
38913,6146, 6251, 9416, 10560,16935,13386,30101,41027,32898,43989,38913,34617,5249, 35037,43989,38913,1525, 1683, 7889, 41027,5701, 3176, 5748, 33507,38912,15824,
- 34215,1998, 43989,33506,1575, 24360,14553,3628, 11133,24089,6843, 9753, 37402,39298,38030,10608,41027,41027,34270,5027, 12199,10322,43989,37635,38770,12086,1260,
+ 34215,1998, 43989,33506,1575, 24360,14553,3628, 11133,24089,6843, 9753, 37402,39298,38030,10608,41027,41027,34270,5027, 12199,10322,43989,37635,38770,12086,1260,
2712, 31051,2235, 23041,2796, 38912,33821,1040, 34215,34751,3173, 41026,43988,23074,6361, 41026,36350,2711, 27865,683, 13939,1711, 4912, 16493,37375,41026,17107,
- 10956,21520,41026,34777,39253,38072,34658,43988,29208,37302,39371,41025,9946, 37271,41025,35036,19952,9460, 18131,23754,35870,36844,13676,36854,4978, 10582,6677,
- 33115,10792,24347,6515, 37302,8867, 13765,37844,18308,30934,43988,18107,36486,7985, 11941,7119, 12478,37113,19711,22902,19054,17342,16970,6455, 38912,24088,7074,
+ 10956,21520,41026,34777,39253,38072,34658,43988,29208,37302,39371,41025,9946, 37271,41025,35036,19952,9460, 18131,23754,35870,36844,13676,36854,4978, 10582,6677,
+ 33115,10792,24347,6515, 37302,8867, 13765,37844,18308,30934,43988,18107,36486,7985, 11941,7119, 12478,37113,19711,22902,19054,17342,16970,6455, 38912,24088,7074,
33459,33494,35334,41025,19972,38912,16191,41025,31240,591, 6158, 41024,33222,2209, 34934,41024,21405,10619,13729,37992,37302,5440, 36525,36748,37302,27301,39244,
21841,2013, 25277,32898,38911,34215,14489,17046,26498,43988,41024,37084,33506,38303,43987,23663,2351, 41024,38078,3381, 11656,992, 35582,935, 2435, 222, 15090,
41023,2831, 2261, 1906, 38629,38911,980, 3060, 835, 38911,22221,4967, 35666,29434,38581,38911,37301,10583,3528, 986, 29481,38385,32898,4330, 27855,37104,12883,
@@ -13205,11 +13200,11 @@ static const unsigned short Ranks[197839] =
2408, 34214,20652,4231, 177, 36385,15013,211, 28325,23643,32678,34969,27008,25238,43986,34214,7359, 43985,36234,27939,43985,38910,2658, 11139,41023,32897,31319,
16190,43985,34213,8078, 36049,2100, 2086, 3453, 11234,36049,12366,22199,38910,41022,33879,5807, 22959,32986,38909,37301,41022,37878,2350, 43985,35036,13683,25514,
161, 15458,38909,972, 36049,14060,7888, 35271,18130,12368,33554,25237,29524,43984,35036,37300,36048,20225,35035,38909,36048,41022,37300,43984,20654,691, 15012,
- 36048,43984,14310,38909,9916, 43984,9337, 32822,37067,30852,38947,11075,9038, 36501,35035,709, 39309,38908,41022,37300,23073,34478,35035,37300,17536,41021,5206,
+ 36048,43984,14310,38909,9916, 43984,9337, 32822,37067,30852,38947,11075,9038, 36501,35035,709, 39309,38908,41022,37300,23073,34478,35035,37300,17536,41021,5206,
37299,28324,20651,38131,39157,3767, 43983,31318,13096,138, 36048,14542,12678,7882, 37339,10356,23607,35035,8538, 29512,22054,37699,31831,38058,33490,15011,41021,
37299,39237,43983,31317,31316,23072,21519,38908,8683, 31206,9536, 4945, 36047,7345, 23071,15449,43983,43983,2104, 1928, 2335, 1965, 8027, 30445,9849, 6694, 16189,
33505,13376,27911,3345, 26648,9305, 36047,23070,20234,43982,1569, 16188,13965,43982,37299,23069,3000, 33505,37728,891, 1053, 3896, 39220,6113, 16187,33505,34213,
- 36029,10355,31143,38176,3267, 34090,37299,33504,41021,28379,38908,32897,16186,19305,43982,43982,965, 4193, 38908,43981,26495,36047,13459,1831, 10086,2359, 920,
+ 36029,10355,31143,38176,3267, 34090,37299,33504,41021,28379,38908,32897,16186,19305,43982,43982,965, 4193, 38908,43981,26495,36047,13459,1831, 10086,2359, 920,
15194,3058, 2536, 41021,37298,38907,43981,5754, 2923, 37298,29523,35034,654, 6795, 22464,43981,37298,3630, 9320, 8262, 10535,13560,26828,5099, 3880, 22198,43981,
43980,868, 24086,18640,16639,5610, 35952,34161,14367,16824,10626,7442, 10198,12280,6169, 118, 26217,1823, 29579,32422,14989,28972,29150,11936,9113, 32893,36075,
2351, 23007,24085,43980,9917, 34338,25140,25930,14326,19951,30857,43980,17894,37889,35068,9118, 34213,3012, 5864, 35154,251, 12916,11833,23151,32897,31315,30019,
@@ -13220,59 +13215,59 @@ static const unsigned short Ranks[197839] =
14532,1868, 39232,15489,13037,645, 34043,35034,12367,37297,34800,9914, 16779,34213,43978,6181, 8643, 41020,451, 34447,37977,13094,2723, 21528,32121,32783,17163,
274, 35034,36046,32880,3162, 8364, 7648, 19802,12873,27910,34395,8130, 36337,33958,18639,41020,32896,41019,33658,12185,25216,15415,43978,10121,24485,35372,26668,
25209,43978,38868,35034,43978,35033,37297,39395,23067,38907,43977,25895,16184,39067,17535,43977,2407, 5577, 23351,15010,18129,7369, 15164,34248,7308, 15983,26114,
- 14309,13052,37914,7346, 14059,27575,22579,43977,33504,17059,25826,41019,38907,7538, 43977,37478,18690,35846,8, 32442,10512,20115,6174, 32981,32838,30120,934,
+ 14309,13052,37914,7346, 14059,27575,22579,43977,33504,17059,25826,41019,38907,7538, 43977,37478,18690,35846,8, 32442,10512,20115,6174, 32981,32838,30120,934,
29636,16565,34181,33494,41019,25882,35659,12951,31313,38908,11203,35403,38907,12677,35349,31431,43976,28193,32952,30129,27498,21560,3912, 23724,41019,15783,13344,
9242, 32896,37843,11233,17058,7307, 7647, 18128,37883,33504,3479, 31312,35245,38247,36455,14453,34006,36866,8993, 12022,16982,28664,8259, 39086,8485, 17234,14552,
36046,6859, 25509,6549, 16907,37297,10800,18851,35063,14125,24390,30061,27045,27606,38906,43976,37297,9535, 35033,37296,20650,19304,38906,41018,38906,33564,11481,
- 38525,34558,43976,27909,20015,30821,14490,35569,35086,10186,38256,26019,9201, 29118,36801,13768,441, 10123,7692, 13196,9484, 22419,5772, 19235,7431, 20353,6953,
- 331, 15980,20850,6027, 28018,33002,10738,24607,3724, 10805,258, 30361,11201,19535,3821, 1390, 389, 16924,21469,32734,20912,12622,15694,206, 23314,5519, 594,
+ 38525,34558,43976,27909,20015,30821,14490,35569,35086,10186,38256,26019,9201, 29118,36801,13768,441, 10123,7692, 13196,9484, 22419,5772, 19235,7431, 20353,6953,
+ 331, 15980,20850,6027, 28018,33002,10738,24607,3724, 10805,258, 30361,11201,19535,3821, 1390, 389, 16924,21469,32734,20912,12622,15694,206, 23314,5519, 594,
9599, 13996,5816, 21883,8068, 40, 4299, 5881, 11979,13284,26659,985, 18322,308, 233, 13417,13591,10666,2065, 18099,8509, 27694,17753,6106, 20248,32805,32955,
3281, 35879,15585,13936,4591, 30245,4338, 29488,1260, 24152,36782,10364,26494,10445,19251,36046,43976,27021,22083,11655,43975,43975,15252,37152,27221,41018,18289,
33222,13595,38906,4784, 36935,26586,27949,1207, 24805,1762, 43975,21404,23376,1477, 2915, 30217,38905,43975,33504,8311, 37938,25019,13682,5609, 31146,19769,29889,
1534, 2297, 11654,23457,21184,3266, 1655, 38303,37296,2305, 2671, 26991,12041,37385,18147,2657, 32464,38159,34561,21270,23599,43974,34309,10621,25081,12299,35892,
- 36907,38484,43974,9686, 15122,4926, 3608, 733, 969, 63, 22452,2437, 29776,19562,10724,25869,26464,21871,32189,27925,22386,2036, 1585, 37296,18127,10508,1597,
+ 36907,38484,43974,9686, 15122,4926, 3608, 733, 969, 63, 22452,2437, 29776,19562,10724,25869,26464,21871,32189,27925,22386,2036, 1585, 37296,18127,10508,1597,
2530, 25849,10191,31311,38905,33369,3752, 35033,11008,14595,33716,30045,6147, 30995,41018,39227,14154,11186,36902,37753,27581,37891,1522, 18989,6066, 14058,29506,
- 33276,36659,16183,34083,24084,19180,36533,33503,2727, 34526,999, 25325,34809,37183,37128,928, 38144,18480,37254,33238,33019,4900, 8883, 37420,23847,35637,1290,
+ 33276,36659,16183,34083,24084,19180,36533,33503,2727, 34526,999, 25325,34809,37183,37128,928, 38144,18480,37254,33238,33019,4900, 8883, 37420,23847,35637,1290,
34868,35033,34212,16862,31923,24286,30908,4506, 30264,12676,33005,37579,30271,24905,196, 39294,38905,28332,29866,34670,341, 38905,35032,22624,1616, 19303,43974,
43974,4726, 431, 7147, 34212,22197,2000, 38904,29521,22449,7683, 31310,1005, 38904,22196,3607, 33553,33503,21403,33185,37296,23066,22008,28739,21792,7502, 26263,
15782,18126,11916,35682,43973,37805,16748,35551,34995,36302,38904,38077,10126,35194,29278,34742,36129,38322,38904,2882, 1825, 41018,43973,4417, 12991,17057,34604,
24175,21245,43973,38705,7217, 36841,14057,25595,29520,29717,33883,14560,13252,37327,8355, 2204, 16775,22236,2944, 29003,1613, 8018, 14056,34961,36593,32896,31309,
39159,43973,12732,15257,43972,12563,485, 19639,6285, 32145,11491,23821,12301,9988, 43972,35032,9716, 17887,32791,43972,5740, 12586,26272,38903,4797, 25128,25870,
856, 9303, 5903, 26332,3493, 14022,8538, 2043, 5040, 9336, 8269, 12458,18207,8888, 7858, 15022,19395,6493, 18125,34212,33503,12842,22067,7002, 3435, 38421,18638,
- 36517,22195,6072, 11385,644, 14667,26180,36319,29066,43972,10512,34835,34343,7595, 4922, 9572, 8509, 13152,12307,21517,6934, 3047, 5732, 5335, 20299,9069, 2686,
- 7457, 15691,28695,4234, 2368, 8764, 1635, 30295,20655,30527,14968,18523,37830,6451, 53, 1528, 27219,14568,20629,2608, 34949,36111,5753, 1061, 38855,10125,1698,
+ 36517,22195,6072, 11385,644, 14667,26180,36319,29066,43972,10512,34835,34343,7595, 4922, 9572, 8509, 13152,12307,21517,6934, 3047, 5732, 5335, 20299,9069, 2686,
+ 7457, 15691,28695,4234, 2368, 8764, 1635, 30295,20655,30527,14968,18523,37830,6451, 53, 1528, 27219,14568,20629,2608, 34949,36111,5753, 1061, 38855,10125,1698,
4577, 8912, 17526,10118,32414,9244, 43971,34070,22639,30723,14134,2254, 1735, 877, 6744, 2397, 5181, 29199,3048, 28940,25751,10468,25274,14735,7063, 536, 16309,
- 11264,24551,27176,7009, 16638,18924,20592,1808, 656, 3284, 13558,284, 2937, 13608,36910,24224,11636,11396,25398,7955, 22855,23385,9530, 35098,34877,43971,1004,
+ 11264,24551,27176,7009, 16638,18924,20592,1808, 656, 3284, 13558,284, 2937, 13608,36910,24224,11636,11396,25398,7955, 22855,23385,9530, 35098,34877,43971,1004,
1784, 5979, 1743, 4300, 5439, 2640, 31884,6422, 9534, 1673, 2974, 15193,10124,14055,6155, 3057, 14929,13305,7002, 12777,11635,32896,43971,15192,8107, 11176,37574,
27908,17492,36508,38441,34861,35032,15235,18067,33819,32961,9165, 14096,38363,26853,1603, 13229,23019,5747, 10859,41017,6016, 16637,21324,36912,43971,19302,14670,
14741,20106,41017,41017,5146, 19949,11634,8000, 32731,18637,21859,20535,25118,8046, 10558,9728, 9236, 10357,31308,14054,19948,9335, 3965, 10108,32254,19072,29868,
- 36764,23796,19807,4388, 32301,9715, 35565,37295,32986,1345, 22729,34398,38783,3506, 6915, 35491,10110,31617,32813,29879,29483,32092,18218,24193,16032,37295,9941,
+ 36764,23796,19807,4388, 32301,9715, 35565,37295,32986,1345, 22729,34398,38783,3506, 6915, 35491,10110,31617,32813,29879,29483,32092,18218,24193,16032,37295,9941,
21999,39275,23005,6421, 36245,23501,6549, 30186,6468, 9424, 4955, 4489, 21056,25495,12355,1670, 30668,21516,16132,38903,36046,13121,20694,9140, 8261, 41017,20177,
2234, 14053,19911,33519,30243,34823,26829,35032,4388, 24245,10641,13563,35417,17226,19963,16181,25832,15251,21515,13, 19821,18857,23014,33004,31118,41016,17281,
41016,23162,43970,37295,37295,37610,33544,6764, 24318,38989,11074,14349,21511,27907,31032,18636,35306,33503,31307,22195,3448, 41016,4481, 16636,27906,28619,10499,
1419, 27945,39285,14033,32767,14669,6039, 11910,43970,25814,13964,17534,22194,18839,26882,37294,14052,26493,33914,43970,16985,27905,38903,41016,33502,31306,12853,
- 8170, 29153,15191,35331,878, 20805,15289,34674,25937,33366,9316, 14069,32802,2546, 43970,26492,24263,34660,3248, 7805, 2926, 2373, 1464, 37488,33955,26257,1484,
+ 8170, 29153,15191,35331,878, 20805,15289,34674,25937,33366,9316, 14069,32802,2546, 43970,26492,24263,34660,3248, 7805, 2926, 2373, 1464, 37488,33955,26257,1484,
3393, 24028,18348,41015,21889,21449,5859, 9916, 37198,36017,20649,36401,20648,38903,15431,14051,35268,41015,22316,26491,26490,9114, 444, 555, 14308,43969,11285,
803, 6934, 29327,32331,36481,27177,1170, 32848,33980,36994,13040,22124,24374,858, 4596, 9800, 28300,14796,38190,37882,43969,37912,6031, 16635,38114,22298,34747,
5576, 33399,22984,39167,43969,38210,2713, 18478,4504, 38715,19912,13681,36472,41015,37187,7310, 20519,5089, 20185,1678, 35318,37972,4656, 41015,31061,10582,14086,
5062, 37055,34212,34286,4409, 20908,36856,12754,38073,6269, 38961,19947,14329,37130,27901,17348,37517,35615,10630,14050,8645, 16634,35431,21514,16633,12306,27993,
38062,36744,25553,7094, 7999, 6775, 10941,1742, 13094,12765,5472, 11971,536, 29704,1402, 7757, 7832, 2878, 1230, 21513,6721, 24666,25672,4383, 8862, 12783,35172,
- 15732,33071,34211,34682,33502,34004,35031,6320, 39396,16621,13385,43969,841, 1392, 2689, 1321, 18635,16900,1754, 2702, 13636,5615, 7998, 607, 31253,7377, 2363,
- 8227, 684, 28345,14049,7881, 38120,34535,21018,16681,9759, 18124,35031,11970,25908,34460,6604, 28613,24773,43968,43968,38902,1899, 11818,19946,5528, 34211,3675,
- 33092,41014,9648, 21512,1194, 5036, 41014,34019,39025,22129,43968,34211,29342,861, 3821, 3718, 1882, 5596, 3011, 3744, 1524, 38934,17395,33667,6061, 13125,6690,
- 2328, 4338, 17223,8642, 24628,37652,41014,13494,29946,15190,43968,15781,33996,29333,35519,6672, 2615, 25234,1433, 23582,11267,12286,38952,43967,43967,43967,7981,
+ 15732,33071,34211,34682,33502,34004,35031,6320, 39396,16621,13385,43969,841, 1392, 2689, 1321, 18635,16900,1754, 2702, 13636,5615, 7998, 607, 31253,7377, 2363,
+ 8227, 684, 28345,14049,7881, 38120,34535,21018,16681,9759, 18124,35031,11970,25908,34460,6604, 28613,24773,43968,43968,38902,1899, 11818,19946,5528, 34211,3675,
+ 33092,41014,9648, 21512,1194, 5036, 41014,34019,39025,22129,43968,34211,29342,861, 3821, 3718, 1882, 5596, 3011, 3744, 1524, 38934,17395,33667,6061, 13125,6690,
+ 2328, 4338, 17223,8642, 24628,37652,41014,13494,29946,15190,43968,15781,33996,29333,35519,6672, 2615, 25234,1433, 23582,11267,12286,38952,43967,43967,43967,7981,
43967,36033,35495,27904,19971,36045,32434,6411, 35031,37294,431, 11653,8765, 1449, 22403,38366,31305,21511,43966,33154,32452,36045,35031,35030,3174, 18935,43966,
11889,4412, 38902,2647, 11041,18634,34457,17552,11563,20144,9002, 36045,31304,31531,21298,43966,20197,6732, 6095, 4495, 9397, 6460, 18123,11465,2661, 6317, 20456,
- 43966,12556,39189,2378, 1288, 3246, 20428,1894, 34745,14541,17758,23519,36180,35098,37370,18633,15237,32915,31140,36045,9909, 5852, 12675,13582,2270, 7713, 6492,
+ 43966,12556,39189,2378, 1288, 3246, 20428,1894, 34745,14541,17758,23519,36180,35098,37370,18633,15237,32915,31140,36045,9909, 5852, 12675,13582,2270, 7713, 6492,
5153, 7653, 36531,4345, 28158,14906,9567, 15345,4647, 19304,664, 21370,2282, 173, 3765, 3764, 1549, 12360,38902,36044,9355, 10689,37294,33502,41014,43965,13931,
36044,26489,32895,4480, 36513,34211,4963, 12674,37294,34210,38218,21510,38902,33502,15823,38496,34210,38901,12583,17031,6975, 24771,34384,8540, 17533,41013,35333,
- 18903,159, 37959,10157,28856,18372,19204,23192,16546,22536,30579,15865,28679,32844,25840,23876,18557,32903,28185,32326,18499,22956,842, 26276,28898,37293,7815,
+ 18903,159, 37959,10157,28856,18372,19204,23192,16546,22536,30579,15865,28679,32844,25840,23876,18557,32903,28185,32326,18499,22956,842, 26276,28898,37293,7815,
34164,6485, 2281, 667, 11460,26455,16632,8694, 29183,37293,780, 21402,38901,25233,29519,32895,32895,31303,35030,41013,37610,35293,34210,41013,7455, 43965,36044,
- 36044,38901,37293,26488,43965,3812, 7717, 36043,27960,37974,11443,18122,41013,38901,37293,41012,41012,22193,15009,35030,2602, 18121,15215,18120,41012,34564,698,
+ 36044,38901,37293,26488,43965,3812, 7717, 36043,27960,37974,11443,18122,41013,38901,37293,41012,41012,22193,15009,35030,2602, 18121,15215,18120,41012,34564,698,
4696, 13557,24968,3216, 19945,41012,41011,1198, 20562,10367,12366,17954,15163,15189,1736, 35370,29528,18575,840, 23882,7574, 24395,616, 10420,41011,18941,41011,
35030,35750,37995,37045,34628,29518,20589,35757,36819,22390,33324,16884,504, 31235,36657,2870, 43965,26487,25232,35029,8724, 38900,35946,22192,29517,43964,34210,
22191,31302,34209,20647,6932, 14245,1608, 31375,39196,9758, 24175,36043,18119,9798, 9533, 33501,14575,37301,35983,12828,28952,19944,38900,13424,27903,77, 19111,
- 3058, 19149,12192,18579,25813,5269, 7804, 31821,43964,43964,17630,21401,20118,11064,10469,38353,2223, 325, 20945,402, 5378, 13785,33925,34831,1554, 1949, 9346,
+ 3058, 19149,12192,18579,25813,5269, 7804, 31821,43964,43964,17630,21401,20118,11064,10469,38353,2223, 325, 20945,402, 5378, 13785,33925,34831,1554, 1949, 9346,
6059, 36336,15326,36043,15764,6365, 43964,38900,34209,36402,33599,38886,23849,10052,4944, 32422,21509,20355,38778,9860, 7615, 43963,657, 3065, 35175,13789,17126,
29733,6931, 25350,17551,9296, 24962,9269, 1287, 861, 5152, 36528,7001, 3234, 19305,13267,1877, 8162, 35029,19301,34209,7043, 14048,34209,2922, 38546,11817,43963,
6503, 25480,3866, 33061,13265,10713,32390,9718, 34779,30719,30227,30452,35115,33552,30828,36454,17634,24381,37071,24563,25089,21699,3426, 7997, 9195, 34223,13553,
@@ -13282,17 +13277,17 @@ static const unsigned short Ranks[197839] =
41010,2655, 7466, 22320,11652,32304,35276,571, 14792,27574,1723, 38754,31301,43962,8664, 15008,32894,4381, 37647,36399,7186, 32802,18118,4675, 41010,23916,43962,
32947,20857,38899,24066,667, 14159,16366,36118,38745,34408,30144,39234,7932, 11455,41009,34443,10798,33920,28195,5472, 43962,2233, 35029,38268,24083,26486,25231,
38899,34208,22717,35029,16428,34812,31300,10507,7441, 13555,1717, 12294,5964, 11073,37292,43962,13803,36138,36042,17174,6872, 35829,35411,14257,977, 7599, 27902,
- 12610,348, 4092, 6954, 5221, 36042,38899,33462,37201,7146, 18689,27901,5935, 17532,38898,34328,34034,31299,25230,32894,18632,11633,34967,10581,11351,35035,545,
+ 12610,348, 4092, 6954, 5221, 36042,38899,33462,37201,7146, 18689,27901,5935, 17532,38898,34328,34034,31299,25230,32894,18632,11633,34967,10581,11351,35035,545,
18079,41009,30911,30612,25613,41009,20081,13680,27119,18631,8570, 9749, 24118,34209,11843,35144,19943,1813, 6132, 13396,23120,31752,38933,6632, 34222,41009,33131,
35865,11886,535, 37292,1803, 16619,13120,6597, 30312,26485,34208,36043,13738,38898,720, 43961,34208,31298,37952,12872,39010,4908, 8825, 37330,37413,35834,24470,
15188,36387,18621,20233,30659,26798,1363, 33940,9391, 39005,4322, 2207, 9573, 41008,33501,5986, 43961,15609,31142,24694,23921,17288,31447,39115,37292,3686, 19392,
11530,38441,7828, 38748,31345,25427,18161,16788,10051,36042,26940,36921,34207,7880, 9698, 5752, 5039, 1335, 9714, 7646, 7345, 38477,12691,21163,38518,22190,17460,
- 28265,38119,253, 520, 28790,25770,7480, 395, 1046, 2628, 29233,16759,127, 21507,32894,23993,33855,5269, 17550,38898,24401,615, 5067, 29161,25029,799, 1729,
+ 28265,38119,253, 520, 28790,25770,7480, 395, 1046, 2628, 29233,16759,127, 21507,32894,23993,33855,5269, 17550,38898,24401,615, 5067, 29161,25029,799, 1729,
16631,1621, 1610, 37634,38346,38898,1780, 15187,11969,31055,15822,35561,5340, 27202,13093,33537,7167, 36023,22189,4304, 13092,20294,12775,41008,37292,2704, 39271,
- 3929, 21506,10123,19942,43961,4803, 17007,8328, 23283,38897,18630,41008,15380,8202, 7683, 13384,9656, 36577,23196,25743,37903,6719, 10621,24825,11254,2820, 6199,
+ 3929, 21506,10123,19942,43961,4803, 17007,8328, 23283,38897,18630,41008,15380,8202, 7683, 13384,9656, 36577,23196,25743,37903,6719, 10621,24825,11254,2820, 6199,
11559,19970,41008,15494,43961,15580,17444,29368,16439,36041,27900,9757, 37291,43960,22188,34651,21236,26479,34774,37291,35147,3172, 455, 33501,36339,36233,36580,
2052, 6524, 36850,2108, 22187,41007,34829,13130,35843,10506,32929,4380, 33501,32894,16455,36041,36041,2454, 43960,6477, 589, 37291,1829, 43960,24715,38897,26214,
- 33969,36573,37291,13101,35036,19969,24082,19815,43960,19968,41007,16182,34594,28050,43959,16491,19967,29516,17150,20898,37290,8642, 37290,6319, 15007,32901,2387,
+ 33969,36573,37291,13101,35036,19969,24082,19815,43960,19968,41007,16182,34594,28050,43959,16491,19967,29516,17150,20898,37290,8642, 37290,6319, 15007,32901,2387,
10127,8732, 29515,35836,43959,43959,36720,16914,34207,16630,21278,37756,17976,18662,26484,16761,34001,43959,35473,36709,31144,33552,25428,37019,22843,15780,10570,
25475,33106,43958,35862,14036,36261,3380, 16628,32993,13828,1849, 36390,43958,8310, 21946,32928,37476,36817,26904,13256,43958,17343,4151, 34207,33500,14537,39305,
18117,35028,37290,38897,10801,2844, 7548, 25527,31184,16047,32849,32167,5133, 287, 15898,25874,10816,16413,5042, 5532, 4786, 23740,16387,36041,33586,38463,25229,
@@ -13301,16 +13296,16 @@ static const unsigned short Ranks[197839] =
37289,41006,5344, 3239, 43957,38896,21033,36637,28273,21505,20710,33222,36831,4377, 22678,7872, 19448,37753,36648,32674,32999,36329,32112,27690,8526, 38286,14090,
25463,33121,8496, 32255,21708,19205,16064,26645,30811,15689,23679,32824,6664, 8912, 22921,15686,32488,27772,19269,19265,32496,15614,31107,27661,21504,38896,43957,
15780,35048,35028,17548,16776,33768,36643,33500,26483,43957,26482,35313,35050,37289,5347, 24982,37807,30344,11968,32945,13439,22152,31875,21823,2130, 28220,41006,
- 37604,35028,1582, 27060,33782,41006,41006,43957,35027,4785, 7879, 24141,35449,3788, 31297,19009,1428, 1121, 30643,32929,32123,14509,18642,34207,7733, 34148,7343,
- 6900, 41005,36878,4165, 31296,6104, 979, 14133,2107, 38896,43956,22872,22186,31295,15779,36040,38896,43956,21551,1167, 43956,19941,33500,2644, 33500,15778,6094,
+ 37604,35028,1582, 27060,33782,41006,41006,43957,35027,4785, 7879, 24141,35449,3788, 31297,19009,1428, 1121, 30643,32929,32123,14509,18642,34207,7733, 34148,7343,
+ 6900, 41005,36878,4165, 31296,6104, 979, 14133,2107, 38896,43956,22872,22186,31295,15779,36040,38896,43956,21551,1167, 43956,19941,33500,2644, 33500,15778,6094,
23065,32893,43956,31294,37288,35567,12305,41005,34206,43955,34206,31108,27348,27682,26506,38895,6084, 18629,35682,38895,12304,33379,17055,7261, 30583,34206,18933,
- 8645, 175, 21503,20967,10873,22098,6208, 21150,16650,27541,32441,21493,26481,5894, 32886,27128,2609, 27939,11118,1930, 23121,5669, 10261,14885,882, 27706,2969,
+ 8645, 175, 21503,20967,10873,22098,6208, 21150,16650,27541,32441,21493,26481,5894, 32886,27128,2609, 27939,11118,1930, 23121,5669, 10261,14885,882, 27706,2969,
8916, 393, 11417,33072,10833,19311,19940,32981,984, 32340,964, 29313,18214,9045, 25643,3366, 25299,21897,29532,18628,6858, 3393, 11632,4445, 1159, 34206,28894,
2859, 19516,41005,13554,31155,43955,29514,31506,8955, 27899,15821,33499,38895,3327, 32828,41005,41004,11888,43955,3059, 36040,43955,12122,38895,20535,43954,29511,
14254,23334,14667,33695,1637, 7093, 10122,14666,37288,37288,22185,43954,35774,37288,37287,2558, 9113, 26480,43954,23064,27898,35027,34205,33499,34205,38894,33499,
34205,36039,14665,29513,36039,38894,37287,18602,43954,38894,57, 20158,35714,25508,30860,37501,37729,5976, 20497,38826,24808,35563,2279, 23619,16629,7500, 26706,
- 41004,2683, 41004,30380,41004,6476, 11072,9756, 41003,20320,5093, 5092, 11967,13553,37287,37997,17547,701, 5482, 14551,16618,13982,30795,32773,43953,19939,2918,
- 9838, 36568,34096,34919,19938,33282,12871,6093, 29512,32720,33499,4031, 37480,32986,10354,14048,35847,18627,3002, 37611,5911, 7440, 21502,9124, 17573,15820,8537,
+ 41004,2683, 41004,30380,41004,6476, 11072,9756, 41003,20320,5093, 5092, 11967,13553,37287,37997,17547,701, 5482, 14551,16618,13982,30795,32773,43953,19939,2918,
+ 9838, 36568,34096,34919,19938,33282,12871,6093, 29512,32720,33499,4031, 37480,32986,10354,14048,35847,18627,3002, 37611,5911, 7440, 21502,9124, 17573,15820,8537,
4052, 38241,13637,15186,32868,8531, 13962,16628,35608,32893,1981, 12673,4324, 6708, 33863,2412, 16627,29094,25661,33286,3661, 36103,43953,24142,36039,893, 15534,
43953,28048,36039,31293,16181,34101,3690, 6277, 37772,34352,25680,33517,37316,10557,17546,27569,26802,38894,36558,35027,27897,41003,36038,163, 31889,24385,16894,
17545,6363, 22104,43953,17870,25392,31410,16617,35654,36038,31890,36038,33916,36038,38739,31292,475, 18965,27952,17084,19466,167, 6778, 32327,15161,6533, 31931,
@@ -13318,34 +13313,34 @@ static const unsigned short Ranks[197839] =
455, 10705,15185,6126, 38893,3950, 30735,7878, 41003,8077, 32861,2861, 13158,13961,8542, 31414,36832,28616,29511,32893,14664,4032, 32399,36437,34205,8680, 13354,
43952,9744, 29510,20325,1268, 3230, 22188,5869, 28311,19670,11071,10797,8845, 13091,18237,35027,34879,35026,19300,11657,33498,29509,16252,32738,34680,43952,22124,
36343,32559,22905,34204,39293,19966,18688,43951,9857, 38917,38221,14663,27946,18176,43951,32941,43951,43951,1993, 17129,43950,33498,41002,38893,19937,38893,23861,
- 35026,43950,38892,41002,1337, 4639, 43950,43950,19615,29276,11966,18626,17542,36037,33498,35026,35756,8248, 37012,734, 35885,38322,16333,35026,37571,38689,4723,
+ 35026,43950,38892,41002,1337, 4639, 43950,43950,19615,29276,11966,18626,17542,36037,33498,35026,35756,8248, 37012,734, 35885,38322,16333,35026,37571,38689,4723,
22166,35025,17530,41002,41002,5151, 20884,7000, 23063,31291,21400,3448, 34204,7645, 38892,10496,32893,38892,1840, 36037,22733,6882, 9532, 1377, 14405,3469, 26892,
13090,23062,16180,11631,9350, 38832,5049, 25364,41001,36975,15342,27896,38132,41001,16616,2904, 1802, 38892,18625,32834,21399,43949,38891,41001,18687,31290,38891,
- 27895,31298,34386,25200,36037,38891,16697,10881,5731, 27267,28464,24047,33082,38894,43949,1567, 37286,32892,38489,43949,38157,37006,20302,12215,2407, 43949,5230,
+ 27895,31298,34386,25200,36037,38891,16697,10881,5731, 27267,28464,24047,33082,38894,43949,1567, 37286,32892,38489,43949,38157,37006,20302,12215,2407, 43949,5230,
13630,6770, 10432,16129,43948,8494, 17054,17541,5194, 19071,35025,4724, 22207,37931,31919,36280,24855,43948,12121,5565, 36036,8210, 31484,19299,35025,36036,35025,
32892,35873,28225,35148,5771, 29508,25925,35024,37286,4411, 5551, 15173,19445,33673,37286,37285,38891,20564,20090,29792,34815,41001,7516, 24431,39059,43948,34300,
- 37285,38890,37886,34273,18694,6318, 41000,38890,26479,37255,23061,11629,25375,1433, 34853,43948,36821,38890,30900,10171,3447, 13414,21398,7306, 58, 17453,3481,
- 18923,22485,16234,20065,32284,18697,23060,6491, 21501,36036,4604, 23833,6871, 41000,37285,43947,13383,38131,41000,31758,22184,41000,32892,15725,37266,15184,5564,
+ 37285,38890,37886,34273,18694,6318, 41000,38890,26479,37255,23061,11629,25375,1433, 34853,43948,36821,38890,30900,10171,3447, 13414,21398,7306, 58, 17453,3481,
+ 18923,22485,16234,20065,32284,18697,23060,6491, 21501,36036,4604, 23833,6871, 41000,37285,43947,13383,38131,41000,31758,22184,41000,32892,15725,37266,15184,5564,
32892,37285,1543, 37284,9713, 16179,34204,2973, 43947,26212,14662,15777,36036,18624,43947,2595, 38890,785, 36698,23059,35769,43947,25228,34484,37361,36201,35024,
8188, 40999,34204,36035,14661,43946,38889,2550, 14549,38889,40999,8536, 43946,32531,10688,37627,38848,25227,29507,11442,40999,6938, 24574,39347,38352,40999,43946,
33849,6895, 37991,43946,18785,23318,40998,37679,22323,35024,10050,28516,33498,43945,38889,37284,23304,15099,3310, 3133, 40998,34649,34203,29506,35, 6862, 17505,
33741,29820,10539,10535,38889,4908, 14047,27085,16615,37284,16903,38888,38255,34570,18233,35473,38184,4552, 40998,37559,38888,6870, 8076, 7305, 37284,40998,20594,
11965,22183,37283,36438,13679,37283,11640,29065,34203,15183,37283,20312,40997,6472, 27778,15244,33497,38019,27279,6598, 35024,31829,28855,33081,32365,30292,43945,
35023,37283,40997,32974,36253,17597,36852,33399,37522,33118,31455,18188,36921,20924,2060, 24934,5030, 12546,19584,40997,8630, 38888,43945,35023,37103,35061,13678,
- 37282,36035,32891,40997,43945,35013,38888,26478,23791,28603,25226,40996,27645,38887,17634,31289,40996,36353,7037, 31288,38887,13960,25225,40996,32891,34203,5368,
+ 37282,36035,32891,40997,43945,35013,38888,26478,23791,28603,25226,40996,27645,38887,17634,31289,40996,36353,7037, 31288,38887,13960,25225,40996,32891,34203,5368,
40996,36035,32891,37282,36035,7634, 31287,36529,14264,2696, 36034,43944,2797, 43944,40995,35023,36034,35023,36034,35953,40995,25224,38887,26517,26920,43944,29505,
38887,36034,8188, 25223,3214, 12120,43944,25222,33497,37678,24169,25221,21262,11964,35022,32891,29504,34203,40995,22998,11630,26477,27894,38886,20646,18116,35022,
43943,36981,16178,40995,9566, 4076, 36033,34267,15776,37282,8828, 24081,43943,306, 32807,43943,10598,35022,10505,15975,33434,14101,36231,37282,35022,10358,36436,
30510,35021,2174, 37281,29503,36033,37641,14306,40994,36033,35021,40994,9928, 33891,35756,40994,7546, 36593,43943,37281,19965,38886,43942,38464,36517,28916,24063,
- 16114,29603,25220,22182,43942,21397,31286,43942,33497,13677,6236, 6936, 23058,12119,31050,34731,33497,26838,35021,29502,34202,290, 27871,30587,15823,22495,4301,
- 34202,32947,39143,37703,6643, 43942,27893,24080,38477,7304, 16626,15379,43941,10738,386, 19964,10103,38886,12008,9775, 14548,43941,37281,12454,43941,20645,6254,
+ 16114,29603,25220,22182,43942,21397,31286,43942,33497,13677,6236, 6936, 23058,12119,31050,34731,33497,26838,35021,29502,34202,290, 27871,30587,15823,22495,4301,
+ 34202,32947,39143,37703,6643, 43942,27893,24080,38477,7304, 16626,15379,43941,10738,386, 19964,10103,38886,12008,9775, 14548,43941,37281,12454,43941,20645,6254,
38886,7715, 843, 11161,17581,8824, 36290,22181,18126,26476,36033,27892,37281,4885, 43941,2582, 11760,40994,43940,4267, 40993,43940,23057,9444, 8535, 18686,17053,
- 36032,24079,34202,4011, 31955,31183,38021,39389,15775,4075, 40993,12624,4325, 8260, 31285,43940,38531,29022,36994,38885,11963,2266, 19565,36458,30367,38815,2917,
+ 36032,24079,34202,4011, 31955,31183,38021,39389,15775,4075, 40993,12624,4325, 8260, 31285,43940,38531,29022,36994,38885,11963,2266, 19565,36458,30367,38815,2917,
3679, 17185,5406, 4099, 16614,43940,6917, 33897,9531, 18623,17540,40993,5438, 33835,917, 8524, 23634,22389,5995, 28849,29551,12290,34758,17539,43939,14660,20778,
38318,22349,37645,36477,39404,11375,32838,8129, 31284,14569,10687,29501,37280,15182,40993,37280,11070,35021,43939,14778,32882,10993,43939,15378,11651,32890,32890,
35343,24078,24443,29500,6065, 19293,22400,39355,39128,30094,43939,38885,43938,38885,9001, 7414, 26018,17440,10049,40992,13382,37280,43938,19963,3623, 36032,35020,
35269,18622,32975,6317, 43938,34202,15377,21341,15181,23056,31283,27074,3879, 34389,36128,25219,9538, 5099, 1938, 22099,27819,25218,37280,24077,43938,15819,11232,
- 15774,35020,33496,27526,33234,13675,37264,23382,33729,16901,38355,30945,39392,40992,36833,37279,43937,40992,43937,14238,21396,43937,37279,7804, 43937,3202, 5897,
+ 15774,35020,33496,27526,33234,13675,37264,23382,33729,16901,38355,30945,39392,40992,36833,37279,43937,40992,43937,14238,21396,43937,37279,7804, 43937,3202, 5897,
24524,23033,20644,14368,36833,43936,32890,40992,40991,653, 18858,18621,32862,43936,34201,31282,17529,13962,19962,36032,1404, 22656,29047,7971, 3503, 34320,37950,
11962,22043,31281,22180,37309,17525,19961,40991,22744,43936,36608,38644,22302,40991,21500,38468,31353,36140,2429, 22267,35020,7689, 27891,11887,38365,35020,37228,
14046,40991,18620,5088, 143, 6015, 16951,32871,30674,27197,33340,1447, 24825,2878, 32832,19997,24114,26182,6801, 37279,19960,38885,13813,34659,14515,23902,20563,
@@ -13353,8 +13348,8 @@ static const unsigned short Ranks[197839] =
34650,34201,40990,11109,10201,20920,34838,37065,6796, 27459,21341,39345,40990,16795,27822,252, 19548,5454, 29147,15382,16166,33267,7890, 36032,12134,35019,25508,
32850,14288,14497,38402,32927,25689,38671,39028,39419,22264,1344, 39092,15303,38884,34201,37279,14070,26454,38780,13552,6933, 2630, 43935,35988,4444, 40989,18115,
36601,17538,14386,43934,12870,38884,10861,27891,13084,36275,12365,29499,1554, 30384,37711,28093,4956, 37994,26943,16705,32896,5715, 3882, 12555,12869,27890,15818,
- 3911, 35162,1690, 14190,15127,2526, 8965, 30847,34201,18619,18618,32902,7794, 6774, 37683,27982,38297,12118,39316,39148,12879,9915, 35019,40989,33496,40989,7877,
- 6250, 35085,34454,17668,6145, 15719,7876, 15298,30717,32669,35098,501, 26625,19923,33496,12303,35019,16769,40989,2480, 9184, 31279,20644,33496,8419, 38356,2796,
+ 3911, 35162,1690, 14190,15127,2526, 8965, 30847,34201,18619,18618,32902,7794, 6774, 37683,27982,38297,12118,39316,39148,12879,9915, 35019,40989,33496,40989,7877,
+ 6250, 35085,34454,17668,6145, 15719,7876, 15298,30717,32669,35098,501, 26625,19923,33496,12303,35019,16769,40989,2480, 9184, 31279,20644,33496,8419, 38356,2796,
16177,9551, 32890,19773,43934,38884,9914, 17537,19935,4979, 33753,3528, 21499,200, 23962,10514,38424,33495,3074, 15838,32881,30953,11629,24076,32958,26475,14461,
34576,2683, 36629,3091, 32963,15376,34957,9231, 43934,7596, 17536,2847, 32200,30235,6316, 35019,35078,33011,35018,22797,26444,36031,43934,16992,5528, 30178,20370,
10939,34200,40988,43933,1282, 18949,24512,18394,43933,34463,4824, 9412, 36793,11219,40988,38737,30937,7260, 25750,35018,32245,40988,40988,34215,10686,33288,11214,
@@ -13366,7 +13361,7 @@ static const unsigned short Ranks[197839] =
20855,29650,43930,20642,17001,11709,32402,14439,10352,26474,34200,21498,43930,17052,10357,3035, 13551,13550,16624,11074,2316, 21926,19944,19934,33950,38882,15817,
303, 2571, 33494,40985,22012,17528,40985,20641,43930,21497,7344, 35018,30717,37568,40985,33478,32832,14185,26473,16742,821, 11429,25217,35876,6410, 38882,40984,
36421,36030,37142,33393,33800,36030,34199,15816,38882,36820,12378,2478, 38296,37278,1817, 5298, 674, 5400, 33494,36030,21496,32055,14363,38882,21750,36029,17426,
- 40984,34949,10615,30830,36029,31275,17051,1446, 1059, 34698,38881,11886,16623,43929,31575,38881,43929,12364,43929,43929,2275, 12452,38881,32889,23054,13676,7875,
+ 40984,34949,10615,30830,36029,31275,17051,1446, 1059, 34698,38881,11886,16623,43929,31575,38881,43929,12364,43929,43929,2275, 12452,38881,32889,23054,13676,7875,
16622,13675,36029,11231,29497,4098, 25264,36029,30774,29496,36374,34199,38271,43928,36858,3730, 38207,35017,26737,33279,36014,30613,43928,12868,38881,37277,22179,
31481,43928,43928,27527,21596,34115,13119,32890,6926, 2714, 9185, 14044,6019, 11043,2741, 38880,33493,23807,36028,3750, 26472,1073, 37277,32038,34171,37198,43927,
33493,24364,38880,43927,33493,43927,22178,18617,33493,6857, 12672,40984,2157, 17535,38880,36593,5276, 18114,37071,38880,34199,13380,2222, 6693, 5268, 11350,37277,
@@ -13392,14 +13387,14 @@ static const unsigned short Ranks[197839] =
36908,34740,35968,40975,43916,37273,21394,37272,18685,8075, 29487,19296,29446,18684,504, 13738,4052, 8239, 12, 3192, 31796,25907,23009,16724,31435,17577,24604,
23693,19933,34929,124, 38874,5409, 35014,17534,43915,36024,9147, 36000,36925,6325, 28534,1485, 18612,27886,19043,19932,37199,36390,2588, 26181,23050,27044,24072,
32886,5193, 33661,2554, 19268,36023,6596, 11960,34598,7110, 36023,13088,30392,40974,8823, 11906,34055,24345,43915,32516,31265,19295,27005,20163,1102, 1343, 37272,
- 5575, 32091,16531,36471,566, 22902,43915,23298,35093,24429,4443, 36822,3527, 34942,4966, 32556,28938,33490,18683,21323,37272,2072, 10580,7633, 15524,43915,7912,
+ 5575, 32091,16531,36471,566, 22902,43915,23298,35093,24429,4443, 36822,3527, 34942,4966, 32556,28938,33490,18683,21323,37272,2072, 10580,7633, 15524,43915,7912,
32886,961, 33490,13547,35014,31056,5985, 35853,1076, 25555,926, 7147, 709, 24302,18611,33719,7756, 11230,22174,3823, 38874,12669,19955,43914,33320,11441,26464,
36023,18682,9755, 23049,37272,43914,34196,43914,37256,4910, 21671,13378,14545,13165,38710,407, 33099,33106,32199,36023,16878,38873,37006,38873,24723,36371,14585,
16336,38465,37271,9020, 12971,3866, 39267,1300, 26463,31264,23157,11181,27885,14305,21852,18681,16680,40974,7957, 12668,37752,15872,3370, 25803,43914,11039,12492,
35078,1103, 14576,14706,33033,5890, 37271,6859, 38258,22966,21522,18363,18226,37271,36551,35750,13673,18108,40974,36523,13672,533, 9225, 43913,17797,2300, 14544,
40974,36256,28797,7577, 28331,20446,4681, 36022,40973,32781,43913,26462,23048,35731,40973,13377,40973,13546,19294,38873,10890,17375,24588,22514,31263,9253, 37271,
40973,28877,40972,15752,40972,33489,25392,36022,37951,29486,19954,1702, 19197,15568,29293,30928,19931,38873,19953,40972,37516,26707,18112,38872,37270,38872,36767,
- 15827,10271,21738,14109,31009,19134,3847, 4637, 37270,43913,2874, 36022,14130,19293,11882,12501,40972,1410, 37270,38872,266, 36022,24071,33443,6195, 32507,8808,
+ 15827,10271,21738,14109,31009,19134,3847, 4637, 37270,43913,2874, 36022,14130,19293,11882,12501,40972,1410, 37270,38872,266, 36022,24071,33443,6195, 32507,8808,
1594, 7874, 7873, 32968,19930,25766,20413,34208,35175,3735, 38872,36255,20311,40971,6999, 18610,932, 5750, 6419, 34376,4674, 8043, 38099,12866,9407, 28309,38871,
31262,38007,2567, 3381, 37270,21583,22173,43913,37269,22949,43912,43912,37328,7969, 42, 31314,14021,1922, 18368,6771, 21409,22841,14031,24483,33080,21081,33054,
12045,16509,32963,11253,16621,24628,38324,28602,5791, 24510,13376,35841,34187,38270,9754, 29485,43912,32885,3982, 4402, 10182,3466, 8763, 35013,3303, 40971,38871,
@@ -13411,7 +13406,7 @@ static const unsigned short Ranks[197839] =
37267,1909, 1992, 3035, 10859,38870,40969,33800,16173,11440,17047,43910,40969,3922, 35012,43910,33488,16172,43910,12864,37267,3200, 33488,37648,43909,43909,27882,
43909,43909,34195,37267,40969,7714, 6053, 43908,37267,24067,21393,36020,38870,40968,27881,37266,21392,43908,1375, 43908,27880,30713,36920,20434,27879,26500,40968,
3912, 5440, 33331,19952,38869,10047,43908,37266,40968,35009,35012,43907,37266,37859,15177,24066,43907,16620,43907,14542,12300,37983,38869,14304,38869,19292,36020,
- 3771, 496, 13539,43907,17533,535, 38485,15864,37266,25067,14396,43906,13980,37265,32901,35011,36541,11959,32788,35982,36020,36669,2999, 29250,36860,16171,2630,
+ 3771, 496, 13539,43907,17533,535, 38485,15864,37266,25067,14396,43906,13980,37265,32901,35011,36541,11959,32788,35982,36020,36669,2999, 29250,36860,16171,2630,
29670,27878,34194,16610,14491,40968,23333,26328,31748,35142,38869,32831,35451,35011,32850,33448,38868,35959,7570, 7303, 4636, 18154,32885,9097, 11229,13118,38868,
18680,3538, 27878,37265,23047,43906,21391,3789, 9633, 35011,43906,22172,12687,38964,20189,13877,32884,9637, 38931,43906,38968,39017,13872,3861, 43905,17680,13034,
11038,34194,27684,20514,38868,38868,26827,32884,43905,11025,8465, 38952,8458, 32623,16609,6800, 11447,40967,40967,12360,38867,40967,6987, 33488,35011,10356,21491,
@@ -13421,28 +13416,28 @@ static const unsigned short Ranks[197839] =
2712, 19461,19928,18916,25208,43905,17042,35087,13374,37794,18106,35010,2831, 15428,22258,10796,18607,40966,7713, 15004,34194,40966,6124, 39119,11347,38278,27877,
1149, 26146,22456,32884,37264,9753, 40966,6986, 7558, 23245,4836, 21490,37264,8399, 1374, 2972, 14654,38867,2594, 32884,33488,3501, 1735, 4192, 13545,3050, 29479,
35010,13087,23046,4031, 6340, 621, 8122, 24065,16862,43904,3811, 34898,2138, 22764,24372,2432, 30644,25476,28088,2379, 11346,22352,317, 18028,6338, 20887,17741,
- 10227,12061,25049,22796,16792,31194,21307,9194, 32224,3254, 17957,4200, 15003,21139,24298,533, 27876,10120,1679, 30670,3916, 27589,36019,21747,10351,27875,4097,
- 29478,6180, 10153,40965,2917, 8681, 35797,14181,23203,2065, 6578, 32840,22402,13698,20637,15125,13687,37944,26735,40965,29477,24064,502, 38866,40965,5098, 1791,
+ 10227,12061,25049,22796,16792,31194,21307,9194, 32224,3254, 17957,4200, 15003,21139,24298,533, 27876,10120,1679, 30670,3916, 27589,36019,21747,10351,27875,4097,
+ 29478,6180, 10153,40965,2917, 8681, 35797,14181,23203,2065, 6578, 32840,22402,13698,20637,15125,13687,37944,26735,40965,29477,24064,502, 38866,40965,5098, 1791,
3032, 30192,29493,20077,2565, 23895,31827,19927,30606,19951,7439, 11835,674, 3014, 24877,34795,2847, 4977, 37433,43904,40965,37264,17183,17492,10350,1727, 11958,
13985,3242, 37978,382, 4990, 20354,30839,36019,24883,13086,31257,23877,6144, 33023,15418,170, 3379, 15245,610, 2030, 43904,2726, 17532,975, 38584,2023, 27174,
600, 16170,33487,34193,35416,34193,2435, 11648,15374,34927,9711, 35275,13373,7302, 10355,19926,29476,18231,2948, 21390,32883,40964,4215, 40964,36226,38166,12863,
8590, 40964,31600,36652,17531,36018,3013, 32883,1937, 40964,38866,36679,33792,40963,6485, 38866,33381,43904,38607,11228,40963,3431, 43903,33680,36018,18679,10752,
- 19925,8396, 22626,39251,3001, 315, 15772,3895, 34173,763, 10909,11227,24371,7851, 23045,329, 11192,21535,16242,29321,21489,1778, 29855,25192,40963,318, 5009,
+ 19925,8396, 22626,39251,3001, 315, 15772,3895, 34173,763, 10909,11227,24371,7851, 23045,329, 11192,21535,16242,29321,21489,1778, 29855,25192,40963,318, 5009,
17993,36018,23044,15373,39252,35010,2877, 34193,23043,38168,24009,35009,27485,15078,30374,31133,33558,10531,20803,17046,82, 21488,68, 5917, 13335,36018,35144,
35009,38866,18105,33487,1757, 16608,37264,15002,38986,33487,14303,40963,35975,25207,40962,38374,32883,4096, 40962,16169,5747, 33580,270, 32479,29475,34193,16607,
43903,35009,38865,40962,36378,40962,26630,353, 32334,40961,31256,19950,35009,17045,43903,10785,2406, 35008,38865,6671, 1677, 30525,26268,6192, 2830, 2009, 25206,
- 35590,38865,19291,11037,5795, 43903,40961,1767, 10354,35008,27874,7454, 37263,37778,19924,18606,43902,13300,9112, 31255,25205,36232,26459,2484, 11628,281, 7363,
+ 35590,38865,19291,11037,5795, 43903,40961,1767, 10354,35008,27874,7454, 37263,37778,19924,18606,43902,13300,9112, 31255,25205,36232,26459,2484, 11628,281, 7363,
24730,3172, 276, 1114, 729, 7979, 12116,8641, 14042,36017,37263,35008,390, 22941,43902,3430, 33041,43902,43902,21487,14041,22858,27873,15813,38865,11069,19949,
36996,34192,36017,38429,36017,38864,38864,17530,10808,36017,43901,33487,4266, 37263,43901,43901,18605,2985, 9294, 11881,22222,32883,43901,25204,36016,6224, 43900,
34654,8991, 20636,37263,37262,43900,19948,10353,33486,36016,40961,43900,35396,40961,10504,31254,38864,27872,11983,27825,16168,10119,12667,15812,43900,36112,18604,
- 7514, 1008, 4725, 33486,3762, 40960,32840,19923,4444, 18104,35008,15176,3476, 33486,6314, 36198,37791,3158, 1786, 31253,30605,7555, 43899,5142, 14302,20007,4096,
+ 7514, 1008, 4725, 33486,3762, 40960,32840,19923,4444, 18104,35008,15176,3476, 33486,6314, 36198,37791,3158, 1786, 31253,30605,7555, 43899,5142, 14302,20007,4096,
33533,36540,17057,26458,37262,37262,21486,37751,40960,38864,43899,21389,35920,13372,43899,11036,43899,43898,24063,2138, 1793, 18603,22278,30935,21485,12666,17564,
- 27158,36016,16167,14837,31825,15372,20042,18602,35733,33570,26931,8259, 13117,13116,31252,43898,38863,13187,31325,3410, 7001, 18601,8308, 4442, 3051, 43898,37,
+ 27158,36016,16167,14837,31825,15372,20042,18602,35733,33570,26931,8259, 13117,13116,31252,43898,38863,13187,31325,3410, 7001, 18601,8308, 4442, 3051, 43898,37,
7301, 38863,21484,36002,15175,3402, 9193, 5662, 18600,11345,12299,410, 15384,20303,23709,18708,21689,23711,32662,17500,17190,38863,38863,30960,32892,43898,40960,
34192,3934, 33486,6774, 23671,40960,18821,2863, 34842,17012,26218,14963,5700, 4526, 43897,8073, 38862,3983, 20746,13085,15095,35010,5476, 5614, 1169, 16478,37881,
5873, 40959,37249,8822, 35007,33485,39319,5060, 38862,13084,38146,29215,18599,89, 7872, 27871,17418,15811,8218, 25105,11079,31251,1199, 27572,143, 14541,37679,
- 1589, 10684,13544,38862,23042,5807, 27720,43897,38862,18598,27693,13492,9913, 2234, 13083,1597, 5932, 38861,908, 21483,15051,13613,21482,543, 5031, 1210, 2443,
- 27870,43897,43897,19922,21214,10418,40959,33933,11627,6418, 38861,43896,37164,12251,2150, 43896,2380, 12115,43896,37262,5277, 18103,35650,2281, 4775, 11068,4416,
+ 1589, 10684,13544,38862,23042,5807, 27720,43897,38862,18598,27693,13492,9913, 2234, 13083,1597, 5932, 38861,908, 21483,15051,13613,21482,543, 5031, 1210, 2443,
+ 27870,43897,43897,19922,21214,10418,40959,33933,11627,6418, 38861,43896,37164,12251,2150, 43896,2380, 12115,43896,37262,5277, 18103,35650,2281, 4775, 11068,4416,
1272, 5217, 33267,5653, 3139, 13253,13894,37757,10670,13543,35007,37989,9337, 31250,43896,36160,10444,43895,398, 19921,34580,43895,36016,40959,15371,7074, 38861,
38861,8761, 33485,40959,15772,14301,43895,26457,40958,9353, 34192,3863, 16618,17625,15810,17529,6253, 38860,11067,20635,16166,10858,2483, 37261,27869,22171,21481,
18678,32882,29474,40958,32882,37261,7532, 24062,33264,31249,27868,37261,9111, 33485,38860,7996, 31248,21388,35007,37296,2409, 37261,15174,10683,43895,9110, 38860,
@@ -13452,7 +13447,7 @@ static const unsigned short Ranks[197839] =
24871,36106,37748,40956,35006,15809,25697,917, 16617,43892,36123,36015,6475, 40956,16606,38858,36153,21479,32865,20936,1248, 31857,35943,7453, 40956,43891,38858,
3633, 43891,19290,40956,17043,24058,15771,19554,30414,13516,43891,39215,32769,33484,16605,16797,15627,29436,2302, 16236,35873,33634,28944,1862, 19056,3842, 14829,
14653,33729,34548,43891,32587,2129, 14876,43890,40955,29742,43890,21478,38122,2323, 3085, 36803,43890,5091, 128, 807, 5482, 7563, 1707, 1869, 32882,35006,14652,
- 43890,29807,299, 25019,6449, 36015,31246,36580,25503,6194, 12298,19920,38858,15172,11226,43889,18676,6551, 25038,33484,4635, 29470,43889,43889,6007, 3238, 7803,
+ 43890,29807,299, 25019,6449, 36015,31246,36580,25503,6194, 12298,19920,38858,15172,11226,43889,18676,6551, 25038,33484,4635, 29470,43889,43889,6007, 3238, 7803,
38858,40955,56, 26704,1102, 3085, 11244,22145,43889,6320, 23045,18785,30398,34191,6164, 17526,43888,25474,1550, 34899,22170,15770,43888,15370,36015,24057,43888,
10197,36272,29224,29283,16671,11979,39413,27866,37260,39412,40955,9710, 19919,35360,29831,865, 7867, 25203,19947,33484,33130,28447,33945,43888,36014,40955,43887,
28090,38970,36014,6731, 40954,34923,12665,23040,13115,37259,38857,38857,12495,9447, 13671,19958,40954,32931,43887,11344,21477,43887,10857,38857,39152,34191,11066,
@@ -13468,8 +13463,8 @@ static const unsigned short Ranks[197839] =
15000,38854,43880,725, 37256,37007,38854,33483,19946,38854,19917,12647,5863, 25244,37256,21061,22167,40949,31240,37256,22515,40948,40948,5892, 8680, 40948,38854,
43880,33482,15171,40948,37256,14040,40947,2628, 40947,36489,15768,6529, 36012,928, 7160, 25568,27468,26451,35168,13989,35004,32881,40947,36012,8534, 16132,16201,
39337,36940,28360,5605, 11613,10579,11034,3633, 1646, 7018, 13278,2159, 20020,32913,36675,19916,34189,35004,33482,36012,40947,21244,17953,34189,5806, 25202,18102,
- 38622,5529, 38853,11624,33482,16208,43880,17035,9915, 17524,8679, 33482,43880,15767,16537,2947, 5608, 4600, 3809, 36898,3011, 4593, 31192,2795, 21381,16858,4137,
- 37255,40946,14642,38828,31239,18101,22774,9234, 34271,33502,34553,34189,4560, 22499,15604,13461,39416,33604,39061,21039,6351, 38853,18674,40946,38853,43879,7514,
+ 38622,5529, 38853,11624,33482,16208,43880,17035,9915, 17524,8679, 33482,43880,15767,16537,2947, 5608, 4600, 3809, 36898,3011, 4593, 31192,2795, 21381,16858,4137,
+ 37255,40946,14642,38828,31239,18101,22774,9234, 34271,33502,34553,34189,4560, 22499,15604,13461,39416,33604,39061,21039,6351, 38853,18674,40946,38853,43879,7514,
43879,37255,31238,35003,35472,38828,43879,37086,37255,40946,37255,43879,35003,731, 8418, 1250, 478, 40946,29467,32722,31237,5889, 66, 15448,33481,17523,43878,
5965, 11534,13094,36510,36011,38853,43878,31236,27864,43878,15422,5255, 43878,37254,43877,23036,21384,2281, 40945,40945,38852,5404, 39410,43877,73, 10651,11647,
7755, 22282,31235,32329,36011,33481,331, 43877,38852,7537, 10681,15369,43877,7712, 40945,27863,31234,40945,27530,32280,33481,340, 5803, 30650,15646,16604,24054,
@@ -13479,31 +13474,31 @@ static const unsigned short Ranks[197839] =
36010,35083,22149,17006,38108,38787,40943,34113,17727,36316,30242,34188,3010, 30234,38850,34547,15807,9425, 39190,12971,25665,12862,36010,15353,18099,14651,29461,
28438,5653, 9351, 34536,36010,36010,40942,37854,26763,15170,33244,27338,15169,37253,17316,9620, 43875,35003,19944,34214,18869,38850,34367,43874,33480,43874,38850,
37646,43874,43874,32316,20630,34433,38850,43873,43873,26449,43873,36009,40942,34188,35002,35002,43873,33480,30062,28742,23287,16615,21471,43872,15168,35561,35002,
- 21382,35188,12357,38849,38849,26233,36601,32514,31432,1828, 10196,43872,18595,25200,33479,43872,13371,13419,43872,38849,40942,9912, 20571,2690, 43871,40942,9854,
+ 21382,35188,12357,38849,38849,26233,36601,32514,31432,1828, 10196,43872,18595,25200,33479,43872,13371,13419,43872,38849,40942,9912, 20571,2690, 43871,40942,9854,
38849,34188,29480,17669,38848,659, 38732,43871,43871,35002,13659,11646,35001,36009,31233,35001,20629,35001,12608,26448,39143,36009,37253,26447,4374, 28877,43871,
- 37253,38001,43870,43870,761, 27387,16334,35149,1032, 14999,40941,35001,36009,10046,34187,14998,17041,43870,17523,36008,9914, 15367,38814,37253,40941,31295,6252,
+ 37253,38001,43870,43870,761, 27387,16334,35149,1032, 14999,40941,35001,36009,10046,34187,14998,17041,43870,17523,36008,9914, 15367,38814,37253,40941,31295,6252,
35634,3949, 36008,6730, 1568, 6143, 38848,36008,43870,22165,31232,38572,43869,43869,7300, 40941,17040,40941,37252,27859,43869,28466,43869,34187,23035,3500, 33479,
20055,37252,37591,37252,27858,36565,25887,32690,12851,13370,31439,27857,29460,29156,43868,38645,8990, 35000,43868,14997,23034,2974, 35000,43868,38848,7366, 40940,
28749,25199,38848,34187,14891,5888, 14297,38847,38847,43868,34187,5330, 14724,32838,5416, 17522,34186,38847,9219, 37252,36008,32214,43867,25198,43867,12114,25370,
43867,19464,37251,662, 17586,29902,35786,11482,37192,36007,29459,35000,40940,26654,10349,38847,16257,16665,37993,37251,40940,13063,9911, 33520,1943, 22164,19288,
32880,20628,40940,24051,23628,2017, 24801,14996,1622, 22458,6335, 3059, 9233, 34186,33210,40939,24050,43867,17040,388, 682, 21654,1155, 38033,43866,34754,18927,
137, 10731,3058, 25197,9232, 35470,3526, 2829, 12356,7659, 562, 43866,40939,43866,36007,27856,37251,19943,43866,34186,36007,43865,43865,33517,43865,33163,15143,
- 38846,4823, 13981,21470,37251,2497, 43865,6985, 43864,25306,37250,16615,25196,19287,2280, 17522,40939,7031, 4010, 33479,19915,27492,38846,172, 35961,40939,633,
+ 38846,4823, 13981,21470,37251,2497, 43865,6985, 43864,25306,37250,16615,25196,19287,2280, 17522,40939,7031, 4010, 33479,19915,27492,38846,172, 35961,40939,633,
20114,30185,1135, 1874, 43864,35171,11645,37250,19751,1366, 43864,37750,43864,40938,37250,43863,36007,37250,34186,43863,16605,13369,35000,25195,37249,1756, 43863,
40938,32882,31231,27855,40938,24049,34388,18673,21381,43863,32880,40938,33479,20627,40937,40937,19942,32801,12861,34185,32880,32880,10856,5437, 34778,34999,36006,
- 2470, 15167,27854,43862,34999,34999,43862,159, 23924,5471, 3614, 38169,40937,37062,40937,43862,36006,40936,7349, 13717,12923,43862,38573,23033,32879,38846,396,
+ 2470, 15167,27854,43862,34999,34999,43862,159, 23924,5471, 3614, 38169,40937,37062,40937,43862,36006,40936,7349, 13717,12923,43862,38573,23033,32879,38846,396,
829, 36006,40936,33478,38846,31230,43861,40936,33478,34999,37663,43861,40936,34185,17521,32710,34998,38845,6697, 156, 19520,32428,19988,36006,12355,36005,43861,
9752, 29624,25880,14296,34185,12639,16602,909, 27321,33071,16601,40935,23032,23031,36005,38845,37249,43861,35562,40935,38845,40935,38845,32879,16600,22163,23708,
33920,27853,34998,19941,23030,38844,43860,38844,40935,34998,848, 37249,2959, 40934,43860,9231, 29458,34998,22162,40934,27719,31995,18741,2743, 43860,38844,10855,
- 36005,40934,38844,8732, 28393,30084,37249,884, 13542,33478,38488,31229,43860,32879,18017,43859,26570,18423,43859,40934,12860,26446,38843,37248,27852,18672,8999,
+ 36005,40934,38844,8732, 28393,30084,37249,884, 13542,33478,38488,31229,43860,32879,18017,43859,26570,18423,43859,40934,12860,26446,38843,37248,27852,18672,8999,
43859,37248,43859,37248,43858,36005,15872,26445,34185,34875,10045,32879,36004,43858,2233, 542, 22345,6320, 30130,16370,9517, 40933,38843,37248,36290,43858,34236,
31228,32878,21469,43858,43857,19914,37265,25804,17539,1023, 14718,31774,29457,37807,19286,25255,43857,20217,26444,12607,5931, 13114,40933,218, 43857,34997,34997,
- 15366,36004,40933,24433,43857,160, 22929,4532, 43856,13541,11033,13080,11276,18607,35409,34336,35374,43856,31094,37242,40933,12664,6474, 27947,30163,15581,8573,
+ 15366,36004,40933,24433,43857,160, 22929,4532, 43856,13541,11033,13080,11276,18607,35409,34336,35374,43856,31094,37242,40933,12664,6474, 27947,30163,15581,8573,
22932,11909,43856,35591,12656,447, 3086, 22604,37247,18594,43856,34709,37247,14650,2230, 38843,25194,34366,15806,21468,38119,4644, 26443,33769,24742,36129,37247,
43855,31227,36004,37370,197, 30112,43855,9520, 37121,3171, 2529, 386, 12161,34184,34184,33216,2367, 1981, 24048,24047,11522,37247,7995, 17520,7203, 37593,35170,
36004,34747,22745,40932,31440,7630, 43855,40932,7643, 35128,20185,43855,40932,30255,28907,24046,25601,10998,36003,2334, 3298, 12663,1680, 12297,4603, 13540,23862,
15444,43854,3734, 32878,36003,40932,2670, 30570,37246,40931,34997,412, 16733,37275,34044,18098,573, 38967,4163, 29456,27851,124, 11065,27777,21143,36003,34694,
- 38843,40931,18982,18097,12296,19940,34184,32878,527, 36003,17521,1148, 33044,3474, 19285,26442,38842,34997,4115, 24183,22161,43854,37014,34996,12113,32878,1187,
+ 38843,40931,18982,18097,12296,19940,34184,32878,527, 36003,17521,1148, 33044,3474, 19285,26442,38842,34997,4115, 24183,22161,43854,37014,34996,12113,32878,1187,
14, 7774, 32815,3606, 5569, 7020, 670, 20289,30782,39388,23908,57, 35185,37700,3676, 40931,32877,34184,43854,43854,43853,38842,37246,43853,38842,36002,43853,
43853,43852,40931,3762, 351, 19284,38717,38499,43852,13670,43852,21467,34183,36002,36002,36002,38842,43852,18096,43851,43851,33102,2638, 21380,7629, 17519,25193,
20626,38841,37497,34183,29455,34996,25192,9913, 5574, 7415, 33516,6313, 22404,2154, 925, 18671,73, 23927,11032,43851,34183,19283,12859,36001,13955,17039,30801,
@@ -13525,14 +13520,14 @@ static const unsigned short Ranks[197839] =
19939,43845,28655,25187,24116,37242,6490, 37681,26857,34993,37242,43844,40925,21378,34993,9341, 8173, 32137,26436,35999,32798,12857,18094,37241,40925,19938,31224,
24043,43844,43844,37241,38838,38838,33477,4822, 14293,38837,35998,26435,43844,43843,43843,32876,39142,43843,43843,35998,37241,20623,31223,40925,43842,43842,38837,
40924,43842,35998,43842,43841,37241,9155, 40924,16698,17036,36517,33797,31936,22785,151, 19912,6750, 10215,16768,6199, 12861,22328,34181,24392,12660,9192, 40924,
- 2744, 27217,38837,14230,13120,8869, 21644,23863,32008,1565, 4699, 12777,2484, 32360,24042,3911, 27594,12066,2092, 23767,6115, 4036, 3477, 21375,21310,32035,4170,
- 10895,25090,23428,15208,987, 15803,4771, 32492,3860, 342, 7790, 26637,19006,30153,24500,25418,20871,22858,30190,25475,11827,6625, 29858,29870,27478,3133, 8133,
- 14994,31460,3781, 18123,674, 29848,12368,6652, 37240,7182, 14702,164, 16227,14621,9136, 4630, 32920,13579,10892,15102,174, 6512, 5147, 29884,19359,101, 5380,
- 31360,15261,9870, 14707,28362,23759,25526,20721,21149,22333,2532, 18061,21577,15946,3525, 31304,26526,978, 9940, 29450,14808,9869, 27975,29453,43841,38837,9820,
+ 2744, 27217,38837,14230,13120,8869, 21644,23863,32008,1565, 4699, 12777,2484, 32360,24042,3911, 27594,12066,2092, 23767,6115, 4036, 3477, 21375,21310,32035,4170,
+ 10895,25090,23428,15208,987, 15803,4771, 32492,3860, 342, 7790, 26637,19006,30153,24500,25418,20871,22858,30190,25475,11827,6625, 29858,29870,27478,3133, 8133,
+ 14994,31460,3781, 18123,674, 29848,12368,6652, 37240,7182, 14702,164, 16227,14621,9136, 4630, 32920,13579,10892,15102,174, 6512, 5147, 29884,19359,101, 5380,
+ 31360,15261,9870, 14707,28362,23759,25526,20721,21149,22333,2532, 18061,21577,15946,3525, 31304,26526,978, 9940, 29450,14808,9869, 27975,29453,43841,38837,9820,
37093,32633,1015, 6528, 6729, 1092, 20795,1275, 11033,16165,22003,7744, 13899,2720, 38785,21465,18592,16964,1259, 25566,5183, 5338, 26530,1405, 29244,11207,31241,
4599, 4359, 16337,39386,27848,18218,15790,14575,40924,31197,25579,16586,6826, 7247, 5463, 28661,18244,27881,31172,26631,5438, 7887, 35998,33026,14229,23269,20776,
- 19046,33477,768, 16675,31832,21428,8112, 683, 15170,16186,28482,21640,2953, 2052, 32940,21464,40923,8621, 43841,21463,34993,15184,7645, 25612,36931,971, 4600,
- 43841,36205,40923,13079,16613,14536,9765, 20826,7375, 15507,4481, 9798, 13629,31103,4450, 8497, 8104, 550, 6838, 27714,26719,16170,30918,26726,27847,23117,2219,
+ 19046,33477,768, 16675,31832,21428,8112, 683, 15170,16186,28482,21640,2953, 2052, 32940,21464,40923,8621, 43841,21463,34993,15184,7645, 25612,36931,971, 4600,
+ 43841,36205,40923,13079,16613,14536,9765, 20826,7375, 15507,4481, 9798, 13629,31103,4450, 8497, 8104, 550, 6838, 27714,26719,16170,30918,26726,27847,23117,2219,
22040,10517,7861, 11233,27703,32389,9692, 18346,17912,21584,24075,23296,28333,13648,24605,25822,2089, 18464,31503,3285, 202, 12384,15047,24909,9293, 20828,20771,
5769, 28158,13407,22261,7004, 38836,43840,19626,27707,21242,18349,31565,11389,34181,7097, 33037,5786, 19754,43840,43840,32875,35072,37342,5664, 16612,17890,31572,
33521,35375,36418,29470,37562,8677, 25044,39224,24404,22069,1412, 30423,4489, 7628, 15309,6442, 5333, 36974,10154,2069, 9334, 23014,33415,37492,28552,33302,36634,
@@ -13540,7 +13535,7 @@ static const unsigned short Ranks[197839] =
36487,36731,37589,10578,34484,35997,38339,38836,37240,38835,6594, 35997,21462,13368,32993,38703,30729,38835,25163,6431, 22654,37589,37240,33022,38835,16611,35997,
19911,38250,40923,154, 33001,10340,15841,19787,21709,32152,30729,20223,25488,15802,5223, 7164, 29449,34306,16957,39167,17848,1332, 11957,22312,30202,37240,37239,
5311, 23364,40922,37239,7627, 35997,36998,34121,43839,22020,33023,40922,39286,32131,33476,40922,16685,18437,37239,3316, 20764,43839,9235, 13214,21377,272, 32749,
- 31222,43839,34181,43838,6773, 34180,30917,40922,1107, 43838,18669,2140, 22159,5563, 43838,1349, 7166, 15164,4978, 3729, 32875,15765,27846,32033,32853,25940,8417,
+ 31222,43839,34181,43838,6773, 34180,30917,40922,1107, 43838,18669,2140, 22159,5563, 43838,1349, 7166, 15164,4978, 3729, 32875,15765,27846,32033,32853,25940,8417,
38835,34180,38834,34992,34992,29448,43838,38834,37939,7442, 1975, 19296,43837,2607, 43837,73, 2094, 11607,18731,25240,30708,31365,9893, 16662,725, 2004, 32902,
14895,1952, 23069,20633,32944,12181,22132,18626,10202,3906, 24040,32875,37239,40921,32350,18199,34992,12112,34104,33661,19910,29447,24039,6868, 36598,34208,38096,
4505, 23484,22618,12659,38189,14396,40921,18591,2662, 37997,17044,18271,3071, 24873,43837,23247,4463, 36803,34839,36216,4802, 38834,32874,2584, 32799,43837,36678,
@@ -13570,11 +13565,11 @@ static const unsigned short Ranks[197839] =
43829,141, 1288, 27978,11814,8862, 16071,10405,20547,24035,19198,32987,28439,30800,22667,32478,24124,32663,33474,14580,20549,35105,31672,26432,8374, 27470,19904,
12954,21458,8506, 7853, 11127,35256,6222, 2952, 5274, 30000,14535,28070,11941,8396, 38828,14679,636, 33902,1262, 8392, 7999, 19427,20540,1380, 38775,28163,29388,
30928,6626, 19903,19902,11438,16596,19901,38395,26431,26762,15537,19900,33536,23419,38276,22592,18739,5297, 18364,29931,40915,34988,25002,2423, 6114, 10235,23580,
- 23416,18372,13478,21947,26391,33474,6795, 1088, 9062, 17516,43829,8784, 1689, 2968, 5647, 31619,10044,35993,23023,18374,17991,35520,23022,16154,2193, 4352, 7871,
+ 23416,18372,13478,21947,26391,33474,6795, 1088, 9062, 17516,43829,8784, 1689, 2968, 5647, 31619,10044,35993,23023,18374,17991,35520,23022,16154,2193, 4352, 7871,
3348, 23346,1458, 43829,15210,15362,22493,1237, 29442,38312,43829,25046,6474, 32454,29441,34177,12656,20039,6699, 3147, 11955,16745,5606, 29102,17567,24227,11065,
1810, 22226,29873,17689,11679,5607, 32980,24035,10679,37288,8271, 35062,20181,26430,32580,11418,34988,21224,6142, 11879,7626, 9982, 34164,37461,32782,11855,26542,
- 29184,13382,11030,537, 23840,29349,32420,26760,3350, 1685, 43828,35993,38827,5661, 21457,1457, 6579, 18202,9908, 27479,13891,26748,19935,34821,13808,12512,9369,
- 1303, 25051,18587,43828,43828,32195,43828,43827,43827,9750, 34988,24843,24391,1310, 32819,18474,30744,14991,31719,960, 22154,40915,38827,37234,35509,43827,5296,
+ 29184,13382,11030,537, 23840,29349,32420,26760,3350, 1685, 43828,35993,38827,5661, 21457,1457, 6579, 18202,9908, 27479,13891,26748,19935,34821,13808,12512,9369,
+ 1303, 25051,18587,43828,43828,32195,43828,43827,43827,9750, 34988,24843,24391,1310, 32819,18474,30744,14991,31719,960, 22154,40915,38827,37234,35509,43827,5296,
481, 18586,37708,335, 19489,35992,3088, 6092, 8697, 26429,15800,305, 5485, 40914,32268,10854,37234,2242, 12855,7299, 5437, 31216,15361,12605,7802, 23021,40914,
7298, 37070,6925, 7144, 43827,31215,1796, 4169, 592, 3028, 9708, 29440,3641, 29997,1854, 21374,7072, 374, 26428,34177,31214,38827,1379, 643, 314, 24034,31008,
3188, 31213,18092,1236, 39033,39034,881, 34987,43826,14292,35992,5515, 35372,40914,31212,13953,40914,14990,7071, 16163,43826,1809, 27748,20424,18091,7473, 37234,
@@ -13583,25 +13578,25 @@ static const unsigned short Ranks[197839] =
34177,38826,10349,37233,43824,17515,10345,12604,9491, 2009, 6063, 948, 8139, 32920,21280,7557, 34889,34407,37418,10145,11730,34987,31210,43824,7642, 14038,33909,
35992,21455,17514,35991,38826,40913,9107, 40913,35991,21373,40912,35991,19933,24033,8864, 37233,36657,34986,43823,11437,26427,26426,14291,43823,24419,36605,32910,
11029,32873,37581,3212, 14037,34176,38107,3361, 6945, 29307,13206,26425,11644,355, 12085,6250, 9707, 43823,22153,10148,29439,8995, 11973,33051,40912,30199,31353,
- 13668,5301, 10117,27041,10116,18585,6625, 21372,38825,38825,40912,14988,24032,16607,14647,40912,35991,31209,38825,6692, 35233,37232,1432, 43823,43822,32518,2996,
+ 13668,5301, 10117,27041,10116,18585,6625, 21372,38825,38825,40912,14988,24032,16607,14647,40912,35991,31209,38825,6692, 35233,37232,1432, 43823,43822,32518,2996,
11954,10576,1448, 7437, 38188,37232,11953,19899,34986,37232,21454,35990,12854,43822,43822,32873,40911,35990,43822,38825,35990,34986,33918,35990,40911,18584,38003,
- 4018, 8561, 35989,6122, 9477, 10753,13879,38080,29438,31208,38824,38836,37735,21214,24088,26424,40911,43821,1756, 16655,1160, 7493, 34270,43821,2513, 24031,4152,
+ 4018, 8561, 35989,6122, 9477, 10753,13879,38080,29438,31208,38824,38836,37735,21214,24088,26424,40911,43821,1756, 16655,1160, 7493, 34270,43821,2513, 24031,4152,
38225,37232,18788,25015,17841,34176,40911,11952,36143,43821,34176,627, 1139, 12603,31207,38824,20621,40910,38824,43821,40910,16595,38824,24030,43820,43820,37231,
- 34986,40910,17020,25179,15441,12295,24608,43820,40910,21453,12654,40909,11951,32889,32873,1173, 16469,8950, 5525, 39383,7258, 6771, 9528, 6121, 7436, 22739,8994,
+ 34986,40910,17020,25179,15441,12295,24608,43820,40910,21453,12654,40909,11951,32889,32873,1173, 16469,8950, 5525, 39383,7258, 6771, 9528, 6121, 7436, 22739,8994,
7435, 37284,8819, 43820,38823,43819,8395, 17025,10167,4151, 21153,9503, 335, 38823,8394, 16606,6013, 17513,6004, 21371,37231,35989,15798,8993, 18583,19278,37231,
1624, 27455,23631,40909,25178,13077,15161,11062,21978,14534,32873,35831,21452,17512,5796, 16365,16605,37530,33012,23158,22152,37738,38195,33474,43819,692, 31542,
32154,19898,7870, 38549,9910, 5718, 34511,5447, 6867, 43819,12352,1126, 5392, 18545,31611,15100,13538,38436,26447,9355, 21451,3314, 2503, 19827,33474,21450,38797,
18729,33206,4017, 40909,32872,2215, 36427,25420,35989,2862, 34985,43819,40909,21666,35989,17983,43818,43818,38823,24952,3524, 31206,34908,9898, 12933,15713,33076,
- 7660, 13667,16592,34985,24194,5660, 9909, 10348,16162,37231,27159,29764,19932,34176,37230,40908,38823,7625, 36970,43818,34985,2995, 798, 19861,40908,34729,3011,
+ 7660, 13667,16592,34985,24194,5660, 9909, 10348,16162,37231,27159,29764,19932,34176,37230,40908,38823,7625, 36970,43818,34985,2995, 798, 19861,40908,34729,3011,
38822,1610, 10411,957, 8532, 32810,21152,7619, 6315, 8545, 40908,43818,43817,448, 12455,16752,23999,37188,11342,4150, 33473,31483,13076,16604,17511,25086,14036,
- 33846,15160,25021,23152,29045,38822,27090,7785, 17034,8818, 21449,19897,16603,32686,33960,9191, 12294,19896,10115,33473,15797,17510,6407, 1224, 26295,1190, 8424,
- 38822,38469,5436, 16602,4784, 40908,9818, 12293,21641,9586, 8535, 14010,24906,14052,43817,43817,33100,36741,8662, 18173,35268,38822,15763,43817,12351,9228, 2634,
+ 33846,15160,25021,23152,29045,38822,27090,7785, 17034,8818, 21449,19897,16603,32686,33960,9191, 12294,19896,10115,33473,15797,17510,6407, 1224, 26295,1190, 8424,
+ 38822,38469,5436, 16602,4784, 40908,9818, 12293,21641,9586, 8535, 14010,24906,14052,43817,43817,33100,36741,8662, 18173,35268,38822,15763,43817,12351,9228, 2634,
17509,43816,16601,12292,15159,17965,34454,20309,17508,43816,43816,18582,36963,17507,9632, 8072, 38821,1228, 4324, 19895,38821,719, 19894,19277,17506,8643, 18664,
4636, 14533,39078,9527, 1847, 27074,19666,214, 16513,32774,28636,9827, 200, 8736, 25897,13734,1826, 8992, 30603,2251, 18581,13075,19276,24029,34985,20620,43816,
37230,25034,5634, 22668,9912, 5657, 9190, 17271,35894,18580,34984,261, 22028,11762,18958,6561, 24970,5788, 3651, 1354, 5018, 11186,26286,22439,21268,31622,32892,
14910,31620,19668,10727,1147, 32425,5746, 26011,13674,23345,28058,4827, 10715,31755,32187,5520, 8511, 9987, 17447,11270,13548,14495,9561, 26587,15467,16357,25741,
4999, 11413,4721, 16127,9479, 32009,4054, 21448,5945, 9189, 5090, 30808,811, 33476,36394,31730,2493, 29172,17619,13477,39028,38504,9069, 27405,21075,2570, 27581,
- 23097,14431,33018,1569, 30531,12027,19877,3208, 15439,9966, 11990,7856, 30251,15707,5987, 29566,4931, 17020,43815,29197,10055,8616, 11541,32872,1164, 7690, 9937,
+ 23097,14431,33018,1569, 30531,12027,19877,3208, 15439,9966, 11990,7856, 30251,15707,5987, 29566,4931, 17020,43815,29197,10055,8616, 11541,32872,1164, 7690, 9937,
23137,8128, 10575,6770, 17505,14294,28581,11321,1355, 4284, 27613,20814,37487,22164,31387,1136, 22525,4297, 13493,21447,6438, 31205,23907,27402,20457,11806,34175,
29169,33457,25570,36668,19893,12702,3507, 3473, 11175,31943,13952,15158,7450, 12590,19931,1795, 34175,8639, 5031, 16972,43815,21370,43815,40907,43815,37230,38821,
7365, 14646,35988,43814,43814,27643,21369,17033,37038,13537,17504,13536,43814,18090,43814,37647,2711, 29374,16613,8463, 16600,9706, 5310, 5910, 13074,11622,21793,
@@ -13611,14 +13606,14 @@ static const unsigned short Ranks[197839] =
10301,332, 6998, 8044, 14816,2211, 17502,25296,35988,4536, 8991, 2904, 7434, 37957,40907,38820,26423,23394,38820,16696,11950,9217, 37480,14936,6987, 791, 22151,
4904, 23529,35988,5296, 4328, 28393,12653,4074, 32965,9106, 3959, 2077, 19252,23742,3728, 35771,27350,10043,244, 22139,13133,15988,25855,2449, 13814,16672,20421,
20450,15801,27458,19892,29436,10042,766, 38819,30400,7642, 16983,8504, 26422,640, 31233,282, 32372,13472,38317,17499,11621,12030,35027,35988,3559, 14831,31566,
- 11213,22208,29108,34174,82, 2229, 23563,10958,27542,16671,30786,32942,16007,27304,15972,13994,1921, 15062,23127,24428,18622,28850,8442, 24905,33025,11901,867,
+ 11213,22208,29108,34174,82, 2229, 23563,10958,27542,16671,30786,32942,16007,27304,15972,13994,1921, 15062,23127,24428,18622,28850,8442, 24905,33025,11901,867,
26249,25300,8329, 11210,4438, 3374, 27840,38819,37229,40907,9749, 37229,8004, 43812,3525, 25170,37229,31204,38819,38819,27819,11949,40906,43812,26421,35987,32808,
8039, 5951, 2379, 27559,29099,24714,29106,29107,40906,24719,43812,24366,43812,25779,25177,31203,33994,37229,43811,33692,22973,15957,29038,38818,32872,18707,39118,
16599,20790,38818,8356, 32847,6527, 34178,38392,24915,37265,38818,43811,39360,27839,40906,38818,43811,37228,31202,34174,27838,38817,36153,35987,26456,11146,38817,
38817,34984,43811,19274,38817,43810,43810,35987,35123,11723,2825, 16594,43810,38816,34983,43810,34983,43809,35987,37228,43809,12853,25176,34174,43809,40906,38816,
26621,26420,26419,43809,38816,9526, 36135,32871,34983,37228,43808,37228,34983,40905,10500,5470, 36859,40905,11878,4323, 27521,10344,34173,43808,35986,6670, 43808,
- 15762,40905,25175,31525,34173,40905,43808,16598,31201,43807,40904,18336,13535,36086,19444,33114,38725,33473,35634,8257, 7939, 1616, 14987,32809,6548, 12350,6473,
- 38851,24615,43807,11222,34173,23018,19892,24487,40904,36825,20116,7070, 9105, 14646,35749,36044,43807,34982,38816,38815,40904,34173,38196,35986,38815,40904,400,
+ 15762,40905,25175,31525,34173,40905,43808,16598,31201,43807,40904,18336,13535,36086,19444,33114,38725,33473,35634,8257, 7939, 1616, 14987,32809,6548, 12350,6473,
+ 38851,24615,43807,11222,34173,23018,19892,24487,40904,36825,20116,7070, 9105, 14646,35749,36044,43807,34982,38816,38815,40904,34173,38196,35986,38815,40904,400,
27972,20611,33561,13557,43807,3750, 6062, 18030,33620,37221,13497,38740,13440,29435,9349, 37227,17514,26418,40903,33473,33472,21367,13345,14290,43806,34172,29434,
35986,34172,38815,32871,33472,23017,3518, 17032,12349,14986,35986,34982,32822,38815,43806,32871,34982,1236, 19703,13796,31988,21425,20619,40903,38814,40903,38814,
43806,40903,40902,13666,24028,37227,25174,34982,31200,40902,27837,37227,38814,28875,36461,33472,6870, 43806,32871,13366,43805,43805,37227,11221,43805,16038,22150,
@@ -13634,29 +13629,29 @@ static const unsigned short Ranks[197839] =
43801,34979,33843,33797,34188,38810,29429,40898,36848,34979,23176,40898,38857,25902,34684,22889,38810,19624,37387,13365,3558, 13664,5929, 40897,34979,28981,37223,
37223,3531, 38809,43801,34688,968, 37222,18578,40897,38151,22844,26415,5514, 43800,25599,16620,32870,26903,38571,38809,35983,13663,6984, 43800,2873, 24026,40897,
43800,24025,35983,32869,33471,3302, 19271,20617,10347,21366,8263, 38845,1731, 38338,26401,11367,36287,37718,32964,26877,43800,23015,7711, 16241,29428,43799,11641,
- 35403,43799,29427,5560, 6916, 40897,40896,43799,2304, 43799,40896,2463, 25535,5887, 43798,38809,34170,22660,4575, 37222,8784, 8206, 21208,40896,7276, 4271, 8764,
+ 35403,43799,29427,5560, 6916, 40897,40896,43799,2304, 43799,40896,2463, 25535,5887, 43798,38809,34170,22660,4575, 37222,8784, 8206, 21208,40896,7276, 4271, 8764,
38550,36884,36280,40896,37222,37180,34743,13951,34170,38809,43798,22147,34170,38370,43798,38053,33068,43798,12852,11028,40895,38808,37222,34978,18088,37221,15759,
3810, 2099, 29426,22603,8759, 21444,12741,30246,435, 40895,1527, 37221,31193,5444, 23014,27832,35983,23155,4214, 17629,28662,37976,38808,40895,40895,18263,33301,
29425,35270,8235, 9512, 25519,38788,16984,34509,33268,29424,11720,14802,33789,3409, 10195,8256, 17031,25169,19890,37221,815, 6417, 11877,17400,24988,40894,20624,
- 33282,40894,36480,7710, 19270,21171,9330, 34161,8306, 7801, 37540,43797,1212, 13494,35982,22408,10496,31259,11570,10656,21443,4116, 21553,38327,28229,3800, 6416,
+ 33282,40894,36480,7710, 19270,21171,9330, 34161,8306, 7801, 37540,43797,1212, 13494,35982,22408,10496,31259,11570,10656,21443,4116, 21553,38327,28229,3800, 6416,
1108, 13443,39272,14288,27609,23266,3678, 37221,2952, 6815, 43797,19722,19889,3890, 20506,7164, 36603,32780,39405,34169,19269,43797,43797,38808,23013,11987,40894,
43796,35099,40894,35982,43796,3309, 7994, 17513,40893,40893,35982,40893,32869,38808,43796,43796,26514,40893,22146,29423,38807,34169,7980, 33470,5130, 30500,24498,
- 7725, 8863, 35982,29422,34978,32869,43795,33464,15822,38807,34455,18087,34169,12652,16597,40892,491, 23401,23134,279, 28606,40892,711, 12409,38807,16945,8918,
+ 7725, 8863, 35982,29422,34978,32869,43795,33464,15822,38807,34455,18087,34169,12652,16597,40892,491, 23401,23134,279, 28606,40892,711, 12409,38807,16945,8918,
34745,5192, 38807,39266,33035,16160,3382, 40892,30764,26197,43795,40892,1565, 16313,18577,37220,9101, 13950,1425, 22015,17512,40891,10114,38806,10138,38806,24854,
1197, 21442,15359,31192,20806,34978,14985,43795,1746, 10556,33038,22378,6428, 1656, 9327, 10541,12074,26414,13662,34169,8013, 21975,40891,13364,43795,6526, 19888,
24024,12108,7868, 26932,3237, 32869,37510,35981,38806,40891,34168,7108, 9193, 34978,40891,15758,21365,40890,40890,5107, 15320,12470,29720,29199,4410, 32859,34236,
16591,23012,19268,20616,10330,14883,34977,26413,38806,40890,1072, 37220,33470,6037, 38805,26412,14532,36693,31191,29421,43794,14607,482, 28946,10437,43794,12117,
- 1511, 20178,32704,3365, 11640,27757,2571, 25651,26411,7720, 37813,36085,30629,21857,9100, 40890,6310, 35981,43794,741, 33470,9908, 35404,5652, 10041,14951,4951,
+ 1511, 20178,32704,3365, 11640,27757,2571, 25651,26411,7720, 37813,36085,30629,21857,9100, 40890,6310, 35981,43794,741, 33470,9908, 35404,5652, 10041,14951,4951,
20926,40889,88, 8015, 31016,32773,40889,43794,37220,33470,43793,43793,40889,34977,1392, 39018,6251, 14552,35415,20344,37005,38805,16159,14638,6383, 43793,19887,
2263, 40889,25168,21162,43793,43792,24023,43792,25167,11948,29420,43792,37776,37220,9705, 33469,38805,38805,8638, 35981,43792,17511,2661, 10714,34168,35981,31190,
36683,40888,8673, 43791,35814,7193, 8478, 19693,2075, 2211, 5854, 28867,8733, 9054, 2838, 450, 14779,26986,17132,22224,17030,12588,124, 6779, 25088,19505,26445,
- 20395,482, 10160,26220,20794,5964, 32882,21442,26246,37219,27831,40888,28050,22336,32962,13872,38804,16158,19975,28407,22192,15794,8598, 29970,245, 6539, 7245,
+ 20395,482, 10160,26220,20794,5964, 32882,21442,26246,37219,27831,40888,28050,22336,32962,13872,38804,16158,19975,28407,22192,15794,8598, 29970,245, 6539, 7245,
32077,12291,17500,17499,18576,587, 10823,23116,26488,23845,32974,28934,4853, 7822, 19886,31119,208, 35807,43791,37219,34758,35491,8412, 38805,39309,2074, 32370,
21441,553, 20327,40888,35980,4730, 16596,5909, 18161,17498,15156,15793,7266, 17275,24003,27393,23527,35051,7433, 11783,38959,33339,43791,37274,8184, 471, 13849,
15951,38120,18575,21440,15273,33221,4228, 11341,43791,35980,2964, 34131,11903,1840, 21424,28922,2585, 19425,13848,20966,119, 4175, 29167,29345,10343,37211,21893,
23011,9525, 22145,11340,18998,16802,9227, 11510,38725,426, 31748,35896,11862,38329,16885,17497,38776,19930,32908,33147,18574,33052,22835,17496,32613,9907, 29446,
8840, 17074,18086,38804,32868,34168,14035,33114,43790,10346,43790,9226, 37219,35209,16595,4116, 10002,4038, 22786,13534,13906,21439,2899, 37904,16876,14571,38804,
- 7343, 34168,7654, 37888,517, 36970,12346,2998, 40888,32868,8990, 2246, 9826, 26786,35089,25592,8632, 34177,35867,34661,28778,19885,24000,10953,31189,1968, 7357,
+ 7343, 34168,7654, 37888,517, 36970,12346,2998, 40888,32868,8990, 2246, 9826, 26786,35089,25592,8632, 34177,35867,34661,28778,19885,24000,10953,31189,1968, 7357,
29942,5407, 16539,24821,36060,5188, 931, 9236, 26244,20819,21649,16709,4758, 18792,12478,5749, 24879,32809,35001,2565, 3943, 13533,7993, 35644,8071, 7060, 19884,
43790,43790,27830,6178, 4217, 27733,32165,5149, 34167,31188,21438,28340,36401,35530,43789,26892,12345,32178,40887,38910,29419,8414, 35980,40887,38804,8413, 13110,
39373,40887,25280,21364,40887,32599,17030,4985, 35980,18573,3497, 1702, 27829,43789,35775,844, 4056, 33479,6907, 30498,21211,8393, 2121, 29418,43789,43789,38803,
@@ -13667,57 +13662,57 @@ static const unsigned short Ranks[197839] =
34977,6290, 25165,17389,24049,33469,43786,38801,28565,31185,12107,19729,35577,18404,34045,5965, 38801,25597,23379,34422,24021,38657,38801,37218,8180, 12385,43786,
37473,17028,39237,32868,1521, 37871,6883, 40886,40886,35978,40885,43786,37217,5698, 43785,38182,15358,43785,32868,27523,43785,35978,33468,31184,3809, 39353,29416,
12344,40885,43785,7979, 43784,40885,43784,40885,12438,32867,43784,19265,15357,40884,1418, 37454,2388, 15548,14988,5714, 21734,15367,31183,34166,36505,38801,37751,
- 39153,35978,40884,37217,39066,37217,33545,40884,35978,6798, 35977,36300,18661,23007,43784,19267,20614,8862, 13362,34956,20613,21363,35869,9748, 14983,25164,3257,
+ 39153,35978,40884,37217,39066,37217,33545,40884,35978,6798, 35977,36300,18661,23007,43784,19267,20614,8862, 13362,34956,20613,21363,35869,9748, 14983,25164,3257,
43783,43783,38800,43783,34166,40884,40883,40883,33468,35977,8305, 37217,34166,18660,34651,35377,36752,14643,39109,38800,27824,31651,5329, 37216,23006,24020,43783,
27823,37216,1643, 5604, 20399,31322,13931,9661, 29940,23777,8115, 40883,38800,23005,27822,13949,22143,38800,19266,13109,40883,40882,34977,38799,33508,40882,21362,
17027,30278,36846,24019,40882,4136, 23004,32435,30441,3253, 17089,19626,5748, 35972,21361,40882,7090, 19882,21437,21182,38633,24167,43782,17532,22726,38452,33482,
11639,33468,37216,29415,775, 16829,9478, 25663,18561,18659,43782,35977,21363,8861, 21436,37216,43782,13661,17510,4525, 40881,35977,25163,7799, 22369,19265,37215,
- 24018,18483,11946,28112,35976,37215,1776, 40881,25996,9959, 38879,38516,5963, 4440, 40881,38799,43782,37215,37215,20612,24017,2241, 3135, 15049,23003,145, 5058,
+ 24018,18483,11946,28112,35976,37215,1776, 40881,25996,9959, 38879,38516,5963, 4440, 40881,38799,43782,37215,37215,20612,24017,2241, 3135, 15049,23003,145, 5058,
28842,15723,32815,37467,40881,11026,5064, 1128, 40880,4439, 26429,31271,20244,9943, 4666, 34235,26093,33378,39216,6307, 16884,6466, 16594,7257, 34976,43781,34166,
32867,7143, 40880,4379, 35976,35952,22734,88, 16790,33430,18085,37668,763, 2187, 15792,1462, 2495, 34976,40880,35427,37214,10494,37538,9099, 27821,33468,33515,
31811,37214,34713,13532,43781,12651,43781,37114,22775,13361,7190, 5176, 17026,38799,37214,38799,38724,29414,40880,34976,38798,24016,43781,34976,37214,25162,15791,
38798,43780,31182,34165,25161,27820,38798,1062, 5191, 16377,28149,27109,37458,37207,2823, 13895,32867,43780,43780,929, 18572,36142,9906, 14642,43780,3631, 33467,
38798,40879,35976,14641,40879,4478, 35976,33468,14034,32130,43779,38797,26409,13948,26554,30031,40879,35975,43779,1575, 24015,872, 31602,21934,32867,34165,34165,
- 37497,14982,40879,38797,32653,37213,40878,40878,38797,11063,2173, 1652, 37213,43779,34165,6866, 34975,14178,40878,18658,38797,33467,38796,40878,15356,38182,735,
- 31181,6406, 24014,39125,7069, 25160,25950,14640,40877,8304, 15756,40877,18657,5070, 34094,11072,5132, 35975,35975,29413,38796,34164,38796,29412,27819,32684,2941,
- 18945,11875,23802,40877,37873,35975,43779,38754,31180,11209,31179,27382,17509,37213,9909, 8183, 38796,25159,37651,40877,2681, 6061, 5542, 15790,11062,19881,4504,
+ 37497,14982,40879,38797,32653,37213,40878,40878,38797,11063,2173, 1652, 37213,43779,34165,6866, 34975,14178,40878,18658,38797,33467,38796,40878,15356,38182,735,
+ 31181,6406, 24014,39125,7069, 25160,25950,14640,40877,8304, 15756,40877,18657,5070, 34094,11072,5132, 35975,35975,29413,38796,34164,38796,29412,27819,32684,2941,
+ 18945,11875,23802,40877,37873,35975,43779,38754,31180,11209,31179,27382,17509,37213,9909, 8183, 38796,25159,37651,40877,2681, 6061, 5542, 15790,11062,19881,4504,
9188, 1834, 2396, 1927, 3960, 19880,22328,16593,3007, 43778,38795,37213,33957,19879,3638, 4005, 13531,40876,32866,34975,6091, 37760,12106,40876,4394, 37283,26889,
24736,35974,43778,38869,34065,10040,43778,34975,33141,8758, 43778,34164,43777,6141, 13660,37212,1662, 13626,19260,12343,20592,10678,35974,43777,40876,38795,35974,
- 34888,34164,10853,9489, 43777,12601,35974,2643, 7916, 32866,36900,43777,36491,2254, 12600,40876,38795,38795,30903,34164,39175,29411,26408,20611,43776,26407,6036,
+ 34888,34164,10853,9489, 43777,12601,35974,2643, 7916, 32866,36900,43777,36491,2254, 12600,40876,38795,38795,30903,34164,39175,29411,26408,20611,43776,26407,6036,
43776,43776,36829,40875,1213, 43776,38977,27818,34975,29410,34163,23002,38794,31178,5328, 3690, 16213,16207,6309, 21435,34163,13071,8575, 36476,6090, 4633, 35667,
34378,40875,19878,24013,38794,38794,40875,37212,18084,38794,34037,7800, 43775,27817,15155,4950, 10345,43775,23001,38793,34264,38424,38793,33467,37212,13465,43775,
35439,2387, 29409,35973,38793,38840,40875,43775,1087, 38793,24012,32782,38792,34974,17475,34974,37212,24011,4679, 12622,6305, 29408,8127, 302, 2229, 1162, 35973,
34974,10493,420, 43774,26406,11435,15578,5295, 34974,43774,37211,11875,15526,19504,1942, 24630,31177,10113,6983, 1394, 8913, 29683,37211,17508,11874,26405,40874,
6458, 38792,1805, 17449,9498, 1194, 43774,11434,40874,2970, 17495,769, 14107,28812,6581, 34163,225, 39035,38538,32866,13947,32866,14981,33477,37172,33467,33370,
- 31176,8392, 1714, 22142,35009,36937,31175,5780, 4068, 5982, 33002,709, 5282, 33307,9187, 27816,3769, 11872,33074,3833, 2140, 2057, 25158,24796,38190,24865,3027,
- 28802,30816,7936, 35973,38792,34230,21360,23922,35538,236, 18097,33083,17770,28791,33466,25157,35973,34163,26039,23969,34973,37211,40874,28926,898, 36479,6133,
- 13273,15789,20753,126, 34162,40874,34179,9908, 11025,17025,38988,18656,21359,43774,40873,584, 15355,8412, 4597, 4056, 646, 3446, 13795,16589,16592,29407,1446,
+ 31176,8392, 1714, 22142,35009,36937,31175,5780, 4068, 5982, 33002,709, 5282, 33307,9187, 27816,3769, 11872,33074,3833, 2140, 2057, 25158,24796,38190,24865,3027,
+ 28802,30816,7936, 35973,38792,34230,21360,23922,35538,236, 18097,33083,17770,28791,33466,25157,35973,34163,26039,23969,34973,37211,40874,28926,898, 36479,6133,
+ 13273,15789,20753,126, 34162,40874,34179,9908, 11025,17025,38988,18656,21359,43774,40873,584, 15355,8412, 4597, 4056, 646, 3446, 13795,16589,16592,29407,1446,
4994, 19264,40873,4596, 10852,848, 34162,1730, 27182,35972,18779,29406,3313, 492, 21434,21433,21432,23922,14340,31174,10344,17494,38792,16157,33466,29405,14287,
- 17507,4513, 24010,22477,5402, 33601,24009,26404,38791,6593, 19929,15755,22141,34973,3656, 39035,38791,37775,31173,34604,43773,36474,29404,4678, 25159,26436,9704,
+ 17507,4513, 24010,22477,5402, 33601,24009,26404,38791,6593, 19929,15755,22141,34973,3656, 39035,38791,37775,31173,34604,43773,36474,29404,4678, 25159,26436,9704,
43773,35972,40873,19877,43773,32865,34973,38791,6598, 26293,23825,439, 13462,2230, 26615,2907, 29881,14871,2573, 10574,38791,34162,8533, 26088,15354,40873,10183,
32796,29403,33466,12851,36330,29402,27815,35972,9684, 17341,43773,10039,27814,38790,13659,4168, 14531,13486,2352, 8126, 11433,5862, 43772,14286,6193, 37211,34162,
33661,30146,43772,43772,27813,14033,8182, 40872,24008,43772,37210,3939, 34161,25156,18083,34161,7739, 22281,36707,7669, 2683, 37210,9488, 17024,13552,13530,40872,
14980,23163,24007,37431,36495,18102,4918, 206, 32910,37210,6308, 9225, 3496, 34973,40872,5981, 37643,6797, 32865,19263,1766, 22266,23000,40872,6796, 408, 38790,
- 12342,35972,43771,40871,35971,34161,16588,23056,21431,124, 5345, 817, 12067,40871,35971,35971,43771,14756,43771,612, 15754,17506,11024,43771,13360,13108,401,
+ 12342,35972,43771,40871,35971,34161,16588,23056,21431,124, 5345, 817, 12067,40871,35971,35971,43771,14756,43771,612, 15754,17506,11024,43771,13360,13108,401,
23408,14798,36507,10112,18571,29582,33466,38670,34245,38855,34161,12599,40871,4801, 11671,40871,22140,30787,17999,35971,8303, 37082,22999,40870,1254, 21430,13070,
- 18570,5038, 8757, 18569,32865,13069,16587,23834,35725,38723,27812,29401,9848, 38064,12536,28712,38582,36944,18805,24463,9118, 10815,25239,38419,10845,37210,9186,
- 15154,18568,15788,33584,43770,33838,32865,35970,9967, 20610,43770,514, 18812,7227, 35150,16310,16001,35914,9703, 6915, 14530,12650,21429,10793,1766, 24409,8255,
+ 18570,5038, 8757, 18569,32865,13069,16587,23834,35725,38723,27812,29401,9848, 38064,12536,28712,38582,36944,18805,24463,9118, 10815,25239,38419,10845,37210,9186,
+ 15154,18568,15788,33584,43770,33838,32865,35970,9967, 20610,43770,514, 18812,7227, 35150,16310,16001,35914,9703, 6915, 14530,12650,21429,10793,1766, 24409,8255,
11945,17630,12649,5805, 10111,21428,11339,43770,16591,38790,4595, 38790,37323,25632,4133, 15353,36332,18082,34972,26403,3951, 38789,8665, 40870,43770,6472, 32864,
- 31172,33465,14588,39313,24573,14285,34972,40870,37077,20609,37888,6105, 36008,8181, 38612,7799, 40870,19262,17505,37209,38789,4993, 38789,23484,40869,31171,7142,
- 25155,11657,35970,31170,43769,40869,17504,7256, 12289,34160,26636,10343,25154,13359,43769,22373,40869,43769,38789,34160,43769,626, 34972,22998,38788,8122, 1998,
+ 31172,33465,14588,39313,24573,14285,34972,40870,37077,20609,37888,6105, 36008,8181, 38612,7799, 40870,19262,17505,37209,38789,4993, 38789,23484,40869,31171,7142,
+ 25155,11657,35970,31170,43769,40869,17504,7256, 12289,34160,26636,10343,25154,13359,43769,22373,40869,43769,38789,34160,43769,626, 34972,22998,38788,8122, 1998,
39062,8413, 33107,36804,38788,40869,13658,35155,1315, 2527, 38788,24359,35304,32864,43768,3315, 4122, 1636, 12799,17023,43768,628, 19618,38788,22139,3537, 40868,
- 33465,7978, 22997,313, 18934,919, 21427,5868, 19261,31719,14284,34972,37209,27811,38787,43768,29400,25323,1822, 14985,38787,34160,40868,68, 16818,26886,1782,
+ 33465,7978, 22997,313, 18934,919, 21427,5868, 19261,31719,14284,34972,37209,27811,38787,43768,29400,25323,1822, 14985,38787,34160,40868,68, 16818,26886,1782,
13721,24590,32508,23483,23179,28347,32879,40868,14639,37532,3276, 43768,19928,40868,921, 32864,155, 4869, 23545,30731,16752,35844,43767,43767,33465,37665,21809,
40867,43767,40867,2015, 33465,18567,33684,22887,22996,37997,27810,43767,33229,26402,32864,18140,27695,34971,4992, 34971,4296, 7798, 20608,38787,15753,35970,18655,
18081,1801, 14283,40867,32863,43766,29399,27809,38787,15752,7709, 40867,40866,18080,43766,37209,34160,2642, 38786,8860, 32656,32863,38786,754, 37209,17666,35970,
- 40866,1125, 37208,11220,5846, 34971,6795, 31169,34971,34970,33177,26571,19927,7163, 40866,22138,37707,25419,11638,16156,22145,37208,9224, 7556, 34159,5435, 8987,
+ 40866,1125, 37208,11220,5846, 34971,6795, 31169,34971,34970,33177,26571,19927,7163, 40866,22138,37707,25419,11638,16156,22145,37208,9224, 7556, 34159,5435, 8987,
4678, 34970,19926,16590,21358,1430, 28734,26535,13205,9776, 29864,32863,43766,40866,43766,14032,17069,3105, 12341,25153,12598,38786,33817,35561,37764,40865,32754,
10492,34947,37444,12648,17493,32863,40865,32884,27808,40865,1678, 2777, 12341,3119, 38786,43765,40865,9223, 32679,8385, 31215,6769, 35969,14979,33464,22609,14978,
33464,36105,29548,3134, 16589,35969,18566,35391,34159,33464,38785,37100,43765,37208,40864,5367, 37208,6471, 43765,33464,38785,34902,13107,34159,40864,980, 37207,
40864,29398,37207,22995,30535,38785,13086,43765,43764,10038,40864,28415,22137,8125, 26899,12290,43764,37207,1304, 28364,21426,7525, 7324, 13529,43764,21425,11619,
- 18654,5812, 333, 6011, 18967,21752,7089, 1483, 7006, 32484,32901,28386,15999,35803,34970,37207,7342, 35479,35692,5794, 16588,33553,15751,5175, 34734,1701, 710,
+ 18654,5812, 333, 6011, 18967,21752,7089, 1483, 7006, 32484,32901,28386,15999,35803,34970,37207,7342, 35479,35692,5794, 16588,33553,15751,5175, 34734,1701, 710,
21357,10690,43764,37206,29397,38785,19260,27807,34159,17492,7885, 19259,19925,12340,19258,17503,21356,8302, 9098, 10110,40863,8301, 7797, 675, 11954,18653,31769,
- 1931, 14146,34158,35969,37799,37206,35969,32862,43763,32678,33399,18600,18210,34970,17502,10814,43763,33463,35295,36353,36742,43763,36452,24559,17491,4095, 9329,
+ 1931, 14146,34158,35969,37799,37206,35969,32862,43763,32678,33399,18600,18210,34970,17502,10814,43763,33463,35295,36353,36742,43763,36452,24559,17491,4095, 9329,
12989,16085,1806, 37720,26777,34860,18840,20444,21424,9803, 19876,40863,342, 27246,21423,24146,8780, 31214,28376,37899,2796, 14529,34158,4907, 17930,9963, 22994,
14784,797, 10573,22993,7555, 998, 35422,8911, 1777, 4323, 12288,4186, 18565,16043,34771,20050,19875,3524, 2828, 1117, 1735, 34158,34346,35968,1989, 11944,16836,
34393,2846, 8394, 36582,1018, 17490,18564,892, 8989, 5861, 8817, 14031,1295, 38791,11943,4834, 6624, 33113,22136,40863,6250, 2303, 40863,34969,7364, 40862,36030,
@@ -13725,30 +13720,30 @@ static const unsigned short Ranks[197839] =
38784,34969,34968,35968,24006,18079,38784,43762,40862,40861,43762,43762,1896, 13946,11811,21414,3208, 35967,2456, 11306,7382, 2658, 3047, 25152,5448, 21422,43761,
24005,43761,2540, 24004,22965,11432,1790, 27944,16276,11061,21421,7567, 43761,36049,29442,43761,43760,38784,33376,26401,20607,43760,36921,23511,38783,35967,34158,
4438, 12597,34157,43760,15903,27806,34157,33463,38783,37206,34968,40861,27805,39372,34157,40861,43760,38783,19257,43759,34157,37205,24916,34156,15352,29396,34156,
- 35967,35967,17501,43759,43759,43759,17022,40861,34968,38507,34156,17974,25151,34968,43758,35966,33102,31553,11431,26406,4191, 43758,29395,40860,43758,36938,4978,
+ 35967,35967,17501,43759,43759,43759,17022,40861,34968,38507,34156,17974,25151,34968,43758,35966,33102,31553,11431,26406,4191, 43758,29395,40860,43758,36938,4978,
6089, 21772,19372,38655,43758,22134,15750,37205,43757,11942,38783,43757,43757,34156,13508,31, 7876, 26698,38782,422, 11803,14977,40860,16587,9415, 32862,13945,
43757,829, 38782,17021,34155,17500,38782,43756,36159,38782,40860,37205,1175, 37205,645, 25856,24003,32862,7068, 14282,43756,1996, 40860,38781,37204,43756,43756,
43755,43755,187, 8479, 35700,30315,38781,10152,8813, 33462,33462,43755,759, 34967,32862,28334,12195,40859,25150,26647,20258,10767,34967,20606,38781,19256,29394,
14281,34155,37204,11212,38781,43755,19924,9097, 38207,27804,7624, 32861,43754,29393,40859,27803,27802,9222, 31168,30780,5799, 37204,442, 37204,10424,43754,26400,
13515,38527,43754,7357, 43754,4991, 38196,34052,40859,195, 13113,26614,38780,40859,38780,21477,32861,7226, 38780,9096, 36717,4632, 14369,29392,37203,43753,17970,
32450,40858,11603,33275,30564,29391,33462,43753,21837,20928,43753,38780,5713, 35966,22252,11941,37203,228, 9942, 6959, 4164, 35969,19874,6198, 4265, 38572,14030,
- 17256,18563,19873,1163, 5606, 12339,21027,40858,29390,43753,37203,33462,33461,16641,39122,27801,40858,18652,35966,40858,38142,26922,27288,12287,38779,30596,20,
+ 17256,18563,19873,1163, 5606, 12339,21027,40858,29390,43753,37203,33462,33461,16641,39122,27801,40858,18652,35966,40858,38142,26922,27288,12287,38779,30596,20,
2336, 29859,9620, 17969,32950,823, 13603,24942,38884,13617,27539,32514,30253,10962,21872,32913,18429,14749,695, 9562, 1019, 32861,28289,8030, 17690,38779,25327,
34417,17489,25929,43752,38372,9905, 2864, 5748, 8254, 7432, 19923,8124, 33555,799, 7708, 43752,2024, 20565,21420,37203,26399,37375,4720, 34155,8300, 9907, 27813,
35912,37202,43752,14976,17020,43752,12850,4731, 40857,15649,22043,25665,22270,36324,38263,4443, 38779,43751,1178, 24002,15153,43751,38779,34155,40857,43751,33461,
- 7992, 38194,4743, 5747, 35339,515, 22548,18172,29389,12105,13845,34619,6362, 17777,43751,9360, 14975,7977, 440, 22287,359, 13512,31059,23122,878, 678, 7976,
- 37963,35966,24001,11583,16586,22991,26823,18526,37305,43750,18971,37264,26150,25572,43750,8532, 9524, 37202,34154,1674, 2814, 21419,7088, 38672,3506, 18562,1647,
- 7255, 43750,43750,34967,21675,5327, 40857,26128,34154,38778,40857,11430,22133,27800,16585,33461,34515,29388,31167,15351,36031,6469, 8699, 1251, 37138,5166, 3800,
- 36910,38811,14638,35805,29762,34154,15749,28064,43749,1385, 33442,29387,43749,34967,37202,393, 4190, 34154,38778,33526,789, 29886,34966,8391, 37975,5524, 5613,
+ 7992, 38194,4743, 5747, 35339,515, 22548,18172,29389,12105,13845,34619,6362, 17777,43751,9360, 14975,7977, 440, 22287,359, 13512,31059,23122,878, 678, 7976,
+ 37963,35966,24001,11583,16586,22991,26823,18526,37305,43750,18971,37264,26150,25572,43750,8532, 9524, 37202,34154,1674, 2814, 21419,7088, 38672,3506, 18562,1647,
+ 7255, 43750,43750,34967,21675,5327, 40857,26128,34154,38778,40857,11430,22133,27800,16585,33461,34515,29388,31167,15351,36031,6469, 8699, 1251, 37138,5166, 3800,
+ 36910,38811,14638,35805,29762,34154,15749,28064,43749,1385, 33442,29387,43749,34967,37202,393, 4190, 34154,38778,33526,789, 29886,34966,8391, 37975,5524, 5613,
37202,40856,10004,17499,9358, 2471, 37533,19255,2035, 2324, 19783,911, 38778,8859, 22132,16584,40856,38778,37201,29616,43749,38777,37201,37591,31947,36060,17019,
3905, 17549,37201,3748, 29386,37201,24819,24000,25103,7554, 1182, 8988, 18904,21515,27608,34966,38051,40856,3904, 17018,11637,38777,37200,19922,26398,23999,33461,
35478,7707, 15787,17760,10792,9702, 40856,37200,34153,33460,43749,38777,2669, 37200,38777,40855,21303,9747, 10676,40855,14136,11636,14974,34966,19921,294, 43748,
37200,43748,16586,35965,38776,9523, 926, 11622,28585,31166,43748,1252, 37199,25149,40855,40855,2405, 6982, 9487, 40854,2046, 34153,3199, 12104,35965,26397,20605,
- 26396,40854,15748,20604,32944,2172, 37199,43748,7796, 33803,17488,43747,18078,3226, 7553, 35965,2657, 17498,22990,20603,43747,26395,6981, 1941, 36458,29385,3770,
- 38776,11060,19254,15152,31165,19253,21418,34153,38776,43747,23998,25148,17487,34966,13106,26394,8299, 5605, 31570,17916,33808,31164,2302, 22138,32970,34965,3445,
+ 26396,40854,15748,20604,32944,2172, 37199,43748,7796, 33803,17488,43747,18078,3226, 7553, 35965,2657, 17498,22990,20603,43747,26395,6981, 1941, 36458,29385,3770,
+ 38776,11060,19254,15152,31165,19253,21418,34153,38776,43747,23998,25148,17487,34966,13106,26394,8299, 5605, 31570,17916,33808,31164,2302, 22138,32970,34965,3445,
4833, 35178,831, 28413,33068,8706, 34528,33396,11915,39217,2068, 27799,7991, 16583,162, 32789,43747,680, 11507,11316,2008, 2577, 39294,16408,11927,25232,11059,
27798,37199,33460,759, 17349,2748, 3429, 14016,3314, 1532, 3009, 185, 17032,9906, 22989,3761, 17017,32861,8298, 9328, 38776,517, 2231, 2914, 19920,1005, 33759,
- 40854,43746,29384,33923,33460,35425,15747,36158,43746,35965,14224,37199,39333,11635,40854,29383,34965,10116,1681, 9905, 19872,1730, 34965,31567,6595, 7706, 813,
+ 40854,43746,29384,33923,33460,35425,15747,36158,43746,35965,14224,37199,39333,11635,40854,29383,34965,10116,1681, 9905, 19872,1730, 34965,31567,6595, 7706, 813,
4336, 6121, 1362, 2841, 34923,7225, 10791,11994,16317,34251,4492, 19231,21355,38092,10194,14637,29382,21486,5362, 36347,26531,3982, 40853,37198,8816, 19069,13540,
25461,37040,38242,33460,37621,7067, 30923,6249, 1922, 11429,36972,11873,37198,38775,22988,16585,14973,32998,28339,19252,6768, 43746,16582,24910,27797,40853,43746,
7534, 5266, 7254, 40853,19251,404, 38775,34965,43745,38775,33707,40853,33459,31163,36858,11634,34964,34153,43745,5559, 43745,31162,29381,35350,3087, 22131,34152,
@@ -13761,7 +13756,7 @@ static const unsigned short Ranks[197839] =
34964,2459, 5276, 22834,35949,1343, 17484,15454,21415,35963,39135,8672, 33831,7641, 7867, 17026,24375,8936, 18559,1320, 37882,385, 12953,34152,6140, 11428,13993,
22985,19808,38772,12905,13395,16300,3920, 38653,19552,32553,17019,18467,320, 19255,14279,15744,70, 14624,38772,37195,32860,43742,4055, 12646,25830,40848,35010,
37335,30018,24456,3805, 2418, 43741,27794,8297, 38772,34963,14029,9701, 18558,27444,5928, 39108,11358,4279, 35962,43741,38771,37195,13358,34151,26393,40848,43741,
- 27793,13657,40848,23996,35962,20599,13942,17016,22129,31160,32860,37195,34151,43741,38771,21354,43740,25145,38771,23995,11618,15150,32858,10342,14226,40847,311,
+ 27793,13657,40848,23996,35962,20599,13942,17016,22129,31160,32860,37195,34151,43741,38771,21354,43740,25145,38771,23995,11618,15150,32858,10342,14226,40847,311,
8746, 23979,5100, 32902,7990, 34963,840, 38771,4477, 33459,14278,17015,40847,8070, 19050,29378,422, 2429, 21414,25144,11872,27792,14277,23994,43740,26392,43740,
43740,38770,17496,1002, 8531, 12596,38770,6767, 14846,14526,18557,3146, 37195,30854,37194,1882, 35962,33459,43739,38770,40847,5, 4446, 32873,29554,34404,15766,
34963,6943, 1345, 3958, 14972,9406, 29631,6405, 21540,24172,1309, 14402,5573, 595, 7240, 38770,2315, 35962,40847,22127,9904, 26790,21413,31159,835, 11332,19851,
@@ -13771,7 +13766,7 @@ static const unsigned short Ranks[197839] =
19919,17014,40845,34492,43738,19918,16581,34962,43738,9700, 13356,31155,40845,35960,38768,23992,40845,29401,38768,43737,12549,37541,16938,9221, 37117,14636,33458,
22128,26390,40844,20598,20597,43737,30795,9630, 34934,13486,29376,880, 14148,22657,4602, 4800, 3986, 28047,3950, 8253, 14279,38767,40844,21822,11058,38767,37193,
29375,31154,40844,37761,35960,13941,29374,5469, 14635,28275,34150,43737,15149,18649,38767,20596,2575, 15743,31153,25142,4990, 32859,19249,14028,37193,17013,23991,
- 5030, 15349,17483,18648,33458,12849,3313, 43737,4742, 43736,34962,6139, 43736,11022,18076,38767,8389, 38766,35851,6980, 17012,40844,7331, 37439,13995,11632,4782,
+ 5030, 15349,17483,18648,33458,12849,3313, 43737,4742, 43736,34962,6139, 43736,11022,18076,38767,8389, 38766,35851,6980, 17012,40844,7331, 37439,13995,11632,4782,
35843,33457,1606, 5402, 19917,40843,5572, 15148,14634,33457,22127,34150,14525,34961,14633,15348,40843,2034, 11426,25141,11218,19248,35960,34150,40843,18647,33457,
33457,21353,38423,43736,2039, 34150,36543,589, 3523, 21113,8496, 26426,29226,19865,34961,43736,2682, 35959,43735,1273, 43735,27791,34149,20574,2989, 13067,13654,
35959,33456,40843,30136,40842,18556,38766,34961,43735,43735,43734,2341, 6249, 8252, 6415, 36360,33336,29373,35627,32682,39188,43734,17494,43734,19868,10491,35959,
@@ -13781,14 +13776,14 @@ static const unsigned short Ranks[197839] =
40840,37501,39089,40840,12848,33367,38765,32859,38765,43732,15741,37193,43732,31629,34917,8832, 21599,24918,21168,33811,26833,32622,34516,16842,43732,43731,14053,
38765,18645,34960,38764,13104,298, 698, 26135,33028,22662,4890, 32582,7328, 21185,3770, 30767,28896,32993,9563, 22681,10919,28641,25837,1982, 13527,11761,43731,
19113,21411,25423,831, 15783,28815,12768,7707, 361, 4908, 21978,10789,5659, 10549,16595,37192,33137,40840,32859,38764,25635,9941, 14274,23383,37651,40839,40839,
- 24451,33456,21410,43731,36505,38764,35045,40839,29547,16354,20945,7327, 23990,38764,43731,7533, 38763,33456,32858,33744,34960,30661,34960,27747,35958,35530,4098,
+ 24451,33456,21410,43731,36505,38764,35045,40839,29547,16354,20945,7327, 23990,38764,43731,7533, 38763,33456,32858,33744,34960,30661,34960,27747,35958,35530,4098,
27789,11631,40839,26389,35958,9347, 35958,397, 15786,40838,26388,21352,11425,37192,5247, 38763,43730,27788,40838,34959,21367,38454,3981, 37192,38763,43730,16154,
14632,4476, 36014,35957,40838,40838,35957,18644,37192,9629, 19916,40837,40837,43730,18643,16580,13940,43730,43729,43729,19915,37191,19246,40837,22983,655, 29247,
16806,23027,28647,20594,40837,4724, 22982,43729,35957,16153,33455,6669, 2761, 30552,25331,8987, 40836,11499,1008, 7734, 1000, 14007,23989,34148,38763,25140,31150,
34276,38762,18642,35935,39156,10683,11057,3612, 7401, 10342,8123, 4467, 13526,11871,5326, 40836,17011,649, 13355,18555,4852, 10037,40836,43729,32898,39074,29371,
21520,850, 40836,11616,38762,43728,43728,849, 19567,2567, 15588,25139,12059,35670,38762,13103,7353, 13818,21489,5725, 13521,31149,33915,34959,8738, 12939,13102,
- 18554,36502,38762,18641,40835,22981,33455,783, 12639,14273,33455,3577, 27787,4244, 10013,33059,2946, 6794, 43728,33113,34959,495, 9543, 37564,20220,3847, 2714,
- 10463,3005, 2563, 12311,37191,43728,20113,23690,38761,324, 21846,710, 33105,11366,4407, 6602, 19397,21413,24234,31628,18488,32958,3507, 17843,6312, 16311,6627,
+ 18554,36502,38762,18641,40835,22981,33455,783, 12639,14273,33455,3577, 27787,4244, 10013,33059,2946, 6794, 43728,33113,34959,495, 9543, 37564,20220,3847, 2714,
+ 10463,3005, 2563, 12311,37191,43728,20113,23690,38761,324, 21846,710, 33105,11366,4407, 6602, 19397,21413,24234,31628,18488,32958,3507, 17843,6312, 16311,6627,
38406,22189,32779,21752,40835,38761,43727,5361, 16583,1497, 13171,17745,18946,8935, 5681, 14524,29370,40835,36202,40835,11121,31148,32858,15785,37191,40834,38761,
32217,543, 32305,7360, 23988,1884, 22628,26387,25138,22126,35957,33893,25885,29369,40834,34959,6060, 28529,27873,33068,2479, 4831, 16211,43727,34416,33039,40834,
17010,37191,43727,34148,15347,29368,34958,43727,17492,21351,35956,29367,43726,43726,34148,4821, 40834,31147,27786,34958,21350,40833,4719, 11338,31146,15346,38160,
@@ -13797,7 +13792,7 @@ static const unsigned short Ranks[197839] =
26385,2524, 18075,35956,25238,40833,13066,17481,7975, 18553,10490,742, 2874, 15442,20301,28525,19589,30853,21409,9114, 12847,32253,34873,632, 43724,1600, 19346,
10981,23560,34147,43724,11424,8371, 33455,43724,9486, 43724,35956,20614,4949, 34847,4503, 1408, 26987,15146,31406,11337,37844,28935,33685,12645,3010, 5254, 32620,
8388, 40833,32407,12768,19864,37643,34957,38761,7383, 23295,38760,37190,23987,2232, 7718, 10018,28568,10281,21931,36619,43723,38125,3819, 32677,28968,43723,27298,
- 10674,16579,40832,38760,38760,43723,10341,40832,25137,3630, 18074,7953, 16333,32876,4095, 43723,29366,1015, 2670, 5963, 16582,189, 570, 6282, 11068,40832,173,
+ 10674,16579,40832,38760,38760,43723,10341,40832,25137,3630, 18074,7953, 16333,32876,4095, 43723,29366,1015, 2670, 5963, 16582,189, 570, 6282, 11068,40832,173,
28710,22125,37190,37189,22979,27784,14272,43722,35955,38760,16779,26866,29448,31884,13805,33080,32858,43722,38080,37207,35068,36465,16581,11217,18904,20287,33584,
31377,11048,4776, 35955,19881,35955,40832,43722,6151, 43722,3683, 17921,35284,3008, 34147,38759,38759,36570,39353,19906,5037, 7928, 18996,8122, 22473,38059,37189,
10985,25832,33402,40831,22124,35255,21728,32955,43721,2809, 2852, 10754,25003,11624,8179, 31964,35955,9522, 33454,35954,40831,36781,16580,14523,31145,34147,40831,
@@ -13808,9 +13803,9 @@ static const unsigned short Ranks[197839] =
27342,34147,5980, 19913,43719,21773,39312,29174,43719,2132, 38758,43719,43719,40830,40830,21349,5240, 9743, 14244,34624,15145,43718,18073,34146,17589,32857,30297,
6793, 3600, 25594,43718,4210, 3650, 21407,14026,2488, 34957,33454,40830,3412, 3927, 12338,7431, 21406,5089, 9346, 5804, 6059, 26967,11615,5803, 25273,37188,17941,
8410, 847, 12283,37188,36812,17737,34956,34608,13537,40829,23222,34146,38548,29191,18402,21348,33586,31129,27379,5107, 35213,18894,14205,16064,43718,35954,16578,
- 4624, 10991,10483,43718,33164,17491,18072,38758,10787,1916, 32184,11335,43717,43717,16579,35039,10327,17510,18071,43717,34146,19863,16577,9521, 11423,38758,1885,
+ 4624, 10991,10483,43718,33164,17491,18072,38758,10787,1916, 32184,11335,43717,43717,16579,35039,10327,17510,18071,43717,34146,19863,16577,9521, 11423,38758,1885,
10203,5444, 21405,36045,43717,29655,33548,14522,18551,4976, 38806,23986,3478, 11759,19862,24027,14025,18070,32493,18940,12282,16739,23955,38903,2126, 3408, 17490,
- 7221, 3611, 28816,25136,20631,919, 2809, 17144,18984,23250,33169,9156, 4209, 25135,16578,40829,18550,43716,23985,34146,40829,29761,9485, 3380, 33056,38758,5512,
+ 7221, 3611, 28816,25136,20631,919, 2809, 17144,18984,23250,33169,9156, 4209, 25135,16578,40829,18550,43716,23985,34146,40829,29761,9485, 3380, 33056,38758,5512,
34956,40829,35901,37188,40828,24196,37870,20249,16152,43716,37171,38002,37449,43716,35954,14024,18549,43716,40828,38757,38757,40828,9903, 18069,37187,43715,34956,
16012,13905,20115,26605,20674,8815, 22977,33233,37187,43715,18548,26383,37187,35434,35095,38757,17009,8570, 40828,37187,35954,9627, 23984,13525,4189, 43715,18335,
22123,40827,28684,38786,16576,18547,32857,34956,752, 5253, 10193,7794, 38757,2512, 7297, 38756,2932, 18637,40827,10192,38756,32857,34145,34104,29364,7223, 18636,
@@ -13818,9 +13813,9 @@ static const unsigned short Ranks[197839] =
21240,1347, 34620,9379, 17480,10786,13524,14807,35719,32857,21347,10299,33453,19912,43714,43713,40827,19911,4746, 5886, 38756,21346,10489,18068,38755,18252,43713,
19243,37186,2656, 40826,13065,43713,20592,26116,11023,1055, 32811,36692,3444, 31142,15344,22976,314, 18792,19910,4851, 34145,40826,23983,9847, 38755,18067,22122,
38389,11216,21510,25397,16499,38755,5558, 20591,5436, 18546,10572,5802, 37186,25134,35953,21345,40826,35462,19861,36936,11422,1297, 13939,32856,37104,40826,36760,
- 32856,38755,16169,29966,6996, 27783,35684,26382,33089,31141,35974,39019,19937,3109, 7807, 40825,35952,35952,1213, 13064,43713,34144,38754,33096,38754,24002,2217,
+ 32856,38755,16169,29966,6996, 27783,35684,26382,33089,31141,35974,39019,19937,3109, 7807, 40825,35952,35952,1213, 13064,43713,34144,38754,33096,38754,24002,2217,
43712,31140,11021,38754,221, 34955,43712,43712,32856,6979, 14630,1240, 29363,6669, 5174, 35952,33453,18066,4322, 1713, 9345, 3701, 34800,43712,40825,7618, 29043,
- 32856,20590,32855,17489,29362,16151,40825,40825,33453,37186,799, 40824,819, 40824,37185,43711,17479,40824,29361,6726, 2336, 10892,37090,34955,43711,17008,3006,
+ 32856,20590,32855,17489,29362,16151,40825,40825,33453,37186,799, 40824,819, 40824,37185,43711,17479,40824,29361,6726, 2336, 10892,37090,34955,43711,17008,3006,
40824,35952,12846,6865, 27782,5622, 12103,26381,26390,40823,26384,9270, 40823,3682, 39243,9902, 32855,5173, 5499, 31139,40823,1096, 15891,15343,43711,37572,38754,
34955,40823,38753,24064,1390, 43711,5468, 5477, 31349,15784,10673,35951,14590,449, 1445, 2417, 1784, 26380,20970,14023,1238, 27781,33307,34987,33452,7667, 34144,
5778, 134, 27780,2725, 38753,35049,37185,3276, 35855,43710,23982,38753,26379,38753,25133,40822,8387, 14270,12280,15342,19860,36061,1528, 27932,15739,35951,30361,
@@ -13837,20 +13832,20 @@ static const unsigned short Ranks[197839] =
15305,21632,21462,23530,24829,25911,22879,18443,17478,22974,10850,9520, 3363, 43705,32854,6785, 17243,29355,3557, 12642,3946, 35950,20328,36541,15341,552, 25042,
14520,19858,43705,24, 12278,35950,34062,21403,32854,34953,27566,36101,35949,31136,1908, 6867, 37183,1295, 13522,35779,13521,35160,8359, 25129,8557, 12455,12337,
38749,43705,40819,36073,10035,13100,18498,37182,19908,17596,43705,38749,31466,16148,34141,5322, 27778,87, 32854,14519,34464,36012,37182,14969,38540,37182,35949,
- 34953,32853,35949,4322, 37182,37181,961, 21890,35949,43704,43704,37181,15737,32680,8882, 13063,34953,230, 10846,29214,18238,17477,21344,32804,24445,3346, 5499,
+ 34953,32853,35949,4322, 37182,37181,961, 21890,35949,43704,43704,37181,15737,32680,8882, 13063,34953,230, 10846,29214,18238,17477,21344,32804,24445,3346, 5499,
10785,2200, 16577,992, 5398, 889, 19086,32976,13062,38749,38176,16576,31135,36217,2523, 12641,6864, 18544,27086,14413,3657, 25000,30574,246, 1840, 19857,43704,
6854, 43704,40818,40818,9698, 14269,14645,2325, 13474,17536,19907,19264,22377,30551,9184, 35948,1613, 33049,13061,18543,1381, 13660,9237, 10849,40818,19656,33109,
- 13491,14268,37181,40818,34953,20587,978, 10402,27783,28905,38748,35080,29744,7363, 38748,32853,40817,35948,32938,43703,40817,38020,27777,15144,35138,3980, 458,
+ 13491,14268,37181,40818,34953,20587,978, 10402,27783,28905,38748,35080,29744,7363, 38748,32853,40817,35948,32938,43703,40817,38020,27777,15144,35138,3980, 458,
43703,33451,36674,4723, 5571, 43703,35040,39316,9183, 1189, 11597,33180,3362, 37181,38187,34952,12101,30457,12844,34141,37180,35948,35948,35947,40817,40817,39318,
1894, 40816,43703,2815, 31712,21402,26031,11614,5604, 43702,22973,38748,5540, 13112,18542,34955,38748,5331, 21401,21218,29354,10841,25172,14353,32978,22647,43702,
19864,14282,28441,31223,18541,28865,11, 21490,16031,40816,19906,35947,43702,13099,3331, 12843,26373,5696, 40816,33001,29953,22308,40816,28513,11684,280, 32779,
34891,7974, 18635,6247, 818, 6248, 14968,15736,28634,5330, 20586,6668, 23219,38747,25128,35947,29978,8533, 4675, 27776,17476,18063,43702,34141,38747,43701,37180,
38747,26372,18357,15340,38747,5470, 1444, 40815,38746,33451,34952,23525,40815,4175, 10102,15228,11474,27625,17704,24446,38746,9220, 33451,23978,237, 14292,43701,
- 34952,9094, 26843,43701,25127,1039, 2673, 14628,34952,43701,14627,253, 18326,5252, 40815,33091,8251, 13060,18617,37180,40815,13452,9049, 33859,1395, 24086,9932,
+ 34952,9094, 26843,43701,25127,1039, 2673, 14628,34952,43701,14627,253, 18326,5252, 40815,33091,8251, 13060,18617,37180,40815,13452,9049, 33859,1395, 24086,9932,
43700,35947,30809,25045,37216,7997, 19905,27305,34951,26371,40814,14674,34034,2906, 9862, 11792,43700,7087, 4185, 812, 9011, 39245,37572,38729,35423,33165,33959,
34472,25027,19946,28963,27958,21531,19840,15285,5249, 29251,18802,8700, 23624,17909,11071,30269,15519,16663,38746,33450,28274,38890,1333, 13746,14626,33450,38746,
- 43700,20682,24351,38438,12912,1831, 28499,38745,10674,40814,3903, 11056,27775,37029,38306,40814,43700,26370,40814,17006,40813,7281, 33084,35759,38745,27774,2152,
- 26476,27773,25126,11055,34141,21400,7623, 34951,43699,10848,38745,10488,43699,29353,5081, 37180,21399,10847,21027,14668,38745,21186,43699,25342,33450,38744,1489,
+ 43700,20682,24351,38438,12912,1831, 28499,38745,10674,40814,3903, 11056,27775,37029,38306,40814,43700,26370,40814,17006,40813,7281, 33084,35759,38745,27774,2152,
+ 26476,27773,25126,11055,34141,21400,7623, 34951,43699,10848,38745,10488,43699,29353,5081, 37180,21399,10847,21027,14668,38745,21186,43699,25342,33450,38744,1489,
26414,16888,33111,17485,1686, 34242,7866, 8131, 43699,43698,1763, 13426,34398,25773,9001, 19347,32853,5712, 21173,37410,24516,13220,40813,34294,8027, 37179,38744,
3151, 34140,37179,13213,34671,2112, 8296, 38269,43698,32853,33450,37179,695, 32852,32852,35946,29899,32958,10790,24775,4154, 6691, 40813,37308,23977,30764,35946,
20395,18988,37366,40813,31134,34140,32852,35112,21343,34951,43698,21342,6592, 35717,6736, 33016,26189,17480,21398,23280,10339,38873,33449,11562,10628,20510,33449,
@@ -13865,7 +13860,7 @@ static const unsigned short Ranks[197839] =
530, 10414,1489, 33448,18189,40809,34785,27724,35178,33527,35946,43694,12842,40809,23923,43694,40808,7208, 15091,43694,31611,43693,976, 3640, 15141,40808,35566,
36624,4016, 29279,25719,34748,35019,38038,3788, 37176,10044,32693,7883, 30517,40808,8756, 8141, 34494,30165,43693,11054,43693,34961,32851,26366,16575,27777,21395,
8759, 38796,35780,2959, 37164,29348,34670,26491,13323,27927,14967,43693,21804,21155,18062,37846,43692,16572,20583,34139,40808,38742,14719,34498,25124,43692,37176,
- 33263,35034,10434,18999,4896, 37176,14966,6833, 3781, 18178,7430, 6140, 5962, 9327, 16395,35843,7030, 34139,4973, 34139,40807,43692,18954,21394,31132,4989, 5171,
+ 33263,35034,10434,18999,4896, 37176,14966,6833, 3781, 18178,7430, 6140, 5962, 9327, 16395,35843,7030, 34139,4973, 34139,40807,43692,18954,21394,31132,4989, 5171,
38742,31131,37117,34237,20582,26365,749, 12594,43692,15735,35945,40807,40807,245, 17475,9900, 37399,386, 15045,27448,24935,31182,7246, 9080, 37176,35945,36870,
2513, 12326,20581,38742,38539,43691,36642,22120,11018,37716,36455,12593,6350, 8527, 19855,2986, 28324,38742,37175,9626, 519, 6566, 18910,5523, 24177,4525, 34142,
16435,12260,10878,35981,31856,34949,29347,2286, 37175,14922,35945,29442,18061,16362,1657, 32778,25894,19238,31130,1382, 14819,318, 28217,12547,26631,37672,25359,
@@ -13873,24 +13868,24 @@ static const unsigned short Ranks[197839] =
17474,31128,18633,34948,43691,38741,34948,33448,22971,2724, 121, 26990,19978,24667,38741,40806,3860, 40806,40806,16146,544, 34947,40806,6667, 13351,33663,19406,
18535,35945,37175,43691,15337,18534,2032, 16574,37935,12130,115, 29346,29345,17004,23973,5434, 32851,3369, 26364,43690,3027, 29344,8814, 21340,10846,21339,43690,
15752,13938,33447,31127,639, 31609,14624,31126,22970,40805,24329,37203,29991,11435,43690,40805,7362, 36849,4867, 34947,511, 39120,31125,18897,24012,35992,37564,
- 4378, 6591, 21173,34139,22969,4507, 38102,10371,40805,34947,7750, 31124,34645,7987, 19854,19902,1373, 686, 37175,11405,34969,3672, 25217,15781,34432,588, 5360,
+ 4378, 6591, 21173,34139,22969,4507, 38102,10371,40805,34947,7750, 31124,34645,7987, 19854,19902,1373, 686, 37175,11405,34969,3672, 25217,15781,34432,588, 5360,
10109,21338,38741,8385, 5480, 35004,38258,8532, 21337,35022,38740,38740,38740,19901,43690,38154,32851,43689,43689,33024,25764,28182,13057,6623, 36746,38935,34717,
36807,35623,40805,43689,24171,38582,14518,35944,37174,38740,40804,39000,14796,36287,32380,7141, 34594,29099,29270,40804,14456,37231,33447,18828,40804,38739,34138,
- 43689,43688,10240,31123,43688,43688,43688,32851,1466, 36476,21336,9518, 38739,34947,16305,5511, 150, 5676, 30728,19805,33329,18902,12523,28813,24447,35758,6246,
- 38739,34946,6450, 32368,19307,7065, 43687,23972,37054,10341,17473,4466, 35966,33679,620, 40804,34138,34628,38739,38738,17552,22524,32947,40803,31824,14950,4054,
+ 43689,43688,10240,31123,43688,43688,43688,32851,1466, 36476,21336,9518, 38739,34947,16305,5511, 150, 5676, 30728,19805,33329,18902,12523,28813,24447,35758,6246,
+ 38739,34946,6450, 32368,19307,7065, 43687,23972,37054,10341,17473,4466, 35966,33679,620, 40804,34138,34628,38739,38738,17552,22524,32947,40803,31824,14950,4054,
19853,27770,32850,6863, 40803,34138,8409, 38404,3406, 23339,106, 7033, 18941,10120,17056,4886, 10136,16777,28471,35944,35944,17484,37174,3700, 5458, 25294,43687,
21335,16224,35944,40803,2727, 4673, 33639,33447,4629, 8446, 31479,32692,13098,15686,21334,13179,9687, 43687,5502, 1507, 8433, 10671,43687,20580,35180,36543,35704,
37174,13056,33262,4853, 189, 6642, 27769,1641, 7265, 25067,35578,17505,37849,40803,1980, 40802,11667,3523, 37554,24806,36591,1652, 8510, 1853, 3229, 13520,40802,
4869, 13308,1011, 13134,8121, 32813,40802,2192, 28353,36173,38738,35794,34906,4855, 6452, 238, 26550,3296, 21985,32095,24197,32406,36608,5104, 15886,34946,37769,
- 34946,38738,34138,1721, 34946,43686,2913, 5674, 3681, 29399,9949, 964, 25775,463, 16005,22119,34946,16482,29002,8646, 33447,43686,19237,8082, 38738,23796,8295,
- 40802,40801,35760,8526, 32260,34945,12841,43686,27768,26746,32546,2230, 22968,3452, 26883,34773,12164,13519,43686,26855,34137,8927, 19887,786, 20411,8985, 7222,
+ 34946,38738,34138,1721, 34946,43686,2913, 5674, 3681, 29399,9949, 964, 25775,463, 16005,22119,34946,16482,29002,8646, 33447,43686,19237,8082, 38738,23796,8295,
+ 40802,40801,35760,8526, 32260,34945,12841,43686,27768,26746,32546,2230, 22968,3452, 26883,34773,12164,13519,43686,26855,34137,8927, 19887,786, 20411,8985, 7222,
35893,43685,43685,503, 5662, 12871,18970,6432, 2483, 40801,35943,10845,23971,12592,16145,13330,25819,26033,36731,35943,19037,15336,40801,33446,44, 30467,35955,
35725,22953,34754,40801,36189,37174,21333,19556,7752, 27767,37173,34945,19718,15530,7611, 3131, 26662,9182, 31122,37351,35415,16144,8384, 36749,10974,18671,26546,
34137,26363,18533,36163,24683,3126, 7361, 36171,18632,34945,13937,38737,7530, 34959,37173,34137,43685,36865,40800,542, 29343,21332,35943,2647, 37318,10571,14851,
29342,818, 28729,38737,4321, 8069, 29604,36998,38737,20773,34302,17472,29534,32895,15140,15917,30035,28388,18316,28937,23970,38, 58, 13055,11746,21381,35363,
11548,10097,212, 5797, 25649,23206,32858,37232,7882, 23079,470, 5744, 11421,39276,7233, 3368, 43685,34574,1432, 22548,27232,8858, 1873, 38500,40800,6091, 38737,
27248,40800,21393,25931,17513,38895,21397,28810,31521,39087,17471,28297,34772,38448,34161,38736,6550, 8984, 14020,43684,13097,17217,36072,38736,24135,4904, 18213,
- 38371,15466,1580, 2572, 5397, 31460,37299,5535, 18532,2805, 32850,10570,11612,790, 32976,19747,9180, 9899, 27766,34945,26362,28976,36899,34944,33648,22118,2083,
+ 38371,15466,1580, 2572, 5397, 31460,37299,5535, 18532,2805, 32850,10570,11612,790, 32976,19747,9180, 9899, 27766,34945,26362,28976,36899,34944,33648,22118,2083,
32883,16807,33702,334, 1635, 20579,21392,33446,14990,35228,1397, 6590, 40800,29341,38736,1217, 22967,353, 5859, 1072, 33609,6272, 1053, 1546, 37929,21860,21377,
36966,19852,18224,2007, 15780,6713, 33446,1634, 34137,2038, 31550,21299,6995, 17470,36989,7792, 1833, 17469,14019,15139,40799,24538,36396,43684,28354,12640,40799,
3758, 36615,543, 4373, 13001,12076,32880,5612, 16253,12544,19779,2434, 30946,30796,1730, 7800, 4051, 23969,22117,33446,38763,34944,11798,38736,43684,43684,33445,
@@ -13918,11 +13913,11 @@ static const unsigned short Ranks[197839] =
10107,38982,34942,14516,37168,14515,43676,3246, 16814,35564,37168,40793,36727,23965,35599,32847,17002,40793,4008, 35061,14018,38731,3655, 43675,9746, 39230,27763,
5433, 40792,35854,38723,11627,34107,14218,16570,11364,23944,17479,14212,14164,2031, 33324,33443,17001,8958, 21558,27476,19503,2206, 37168,10843,40792,21328,29824,
12091,21327,27256,15180,34379,32866,37736,35722,19213,38426,12276,21388,38405,8813, 25586,27023,32833,34134,17478,37167,37167,8249, 18703,24870,32800,31116,32847,
- 21326,37167,27664,35213,21570,38033,18528,12094,32128,43675,748, 37167,25376,21325,33443,26357,38057,40792,5908, 16569,43675,43675,31115,11626,34942,15732,2984,
+ 21326,37167,27664,35213,21570,38033,18528,12094,32128,43675,748, 37167,25376,21325,33443,26357,38057,40792,5908, 16569,43675,43675,31115,11626,34942,15732,2984,
29337,34190,677, 43674,3599, 38731,35937,36738,37384,35147,38731,4167, 35840,13653,3506, 13054,38391,33859,13095,33442,6524, 633, 25951,7704, 38730,21568,40792,
3172, 43674,33442,31085,38243,43674,12275,21387,7341, 14017,39294,24781,33587,32278,8283, 43674,37781,29475,37166,32847,19231,1700, 9482, 43673,37166,38730,34941,
32846,7703, 31114,3265, 21217,1123, 10314,26072,38941,34133,35034,1782, 34133,162, 6266, 34941,5279, 1378, 19848,118, 3782, 7986, 615, 1871, 14016,16585,35895,
- 33550,38730,4207, 19847,12274,23160,37166,27762,1033, 37690,34900,24665,874, 13053,19846,7061, 22262,37166,34941,14223,20304,510, 37165,27761,40791,8524, 4849,
+ 33550,38730,4207, 19847,12274,23160,37166,27762,1033, 37690,34900,24665,874, 13053,19846,7061, 22262,37166,34941,14223,20304,510, 37165,27761,40791,8524, 4849,
20578,2339, 17858,11169,31113,998, 33866,33442,23964,43673,25971,2357, 21142,20584,7340, 33602,13490,33179,15488,31842,13094,34133,26123,1154, 34133,35937,40791,
43673,1938, 26356,32150,37411,9898, 38714,35937,43673,43672,5885, 17104,1619, 1445, 16019,38939,13330,1832, 38730,14266,35937,9897, 13651,29565,10294,40791,33442,
2570, 38767,28783,888, 43672,3170, 14015,19899,43672,17465,14014,32846,40791,47, 200, 11903,16271,22303,19439,33441,33441,40790,31481,38557,12840,9745, 34648,
@@ -13932,13 +13927,13 @@ static const unsigned short Ranks[197839] =
16739,6424, 11214,1119, 606, 3522, 2406, 31127,1134, 15707,22681,38728,755, 43671,594, 111, 32009,8751, 32727,38728,25115,11179,3924, 38808,1189, 22964,43671,
40790,29334,33441,39310,40790,3169, 666, 31404,34132,34147,5325, 38728,2599, 1748, 25114,12335,16143,36716,37443,3831, 35936,2756, 43670,11331,33441,35936,36304,
21005,35936,11221,19155,15778,21721,20342,13935,40789,3953, 31947,39270,8636, 6862, 22114,1899, 31111,12591,822, 38599,31110,21386,37695,43670,40789,32846,10195,
- 36881,35760,4115, 36673,20537,33036,34674,33933,18527,18080,11678,19230,43670,43670,22561,35428,34940,33440,17477,39110,16568,3312, 19845,33440,18, 9022, 2827,
+ 36881,35760,4115, 36673,20537,33036,34674,33933,18527,18080,11678,19230,43670,43670,22561,35428,34940,33440,17477,39110,16568,3312, 19845,33440,18, 9022, 2827,
14622,1782, 13638,270, 19027,1506, 21385,35935,37165,2863, 31617,398, 22875,14414,244, 19381,34184,14013,12938,39325,34647,35966,3756, 31954,21384,10190,10783,
- 26906,42, 14601,2279, 1826, 38480,1515, 34558,10842,43669,32845,40789,35935,43669,29290,37163,33855,35935,4503, 12638,8531, 35664,34940,37165,29333,43669,3168,
+ 26906,42, 14601,2279, 1826, 38480,1515, 34558,10842,43669,32845,40789,35935,43669,29290,37163,33855,35935,4503, 12638,8531, 35664,34940,37165,29333,43669,3168,
29332,10177,15777,37164,26090,33384,13730,17957,9180, 3291, 6916, 36933,40789,43669,33101,4499, 178, 11330,8983, 25113,14012,4213, 1563, 25340,19844,12637,10727,
23869,34940,38727,12098,34132,7973, 16567,12273,36673,39257,191, 18059,34940,33274,34492,21490,25112,43668,34939,19229,40788,20577,29331,43668,2190, 38727,40788,
15335,43668,1704, 4502, 37164,43668,43667,38727,4745, 37164,17549,38727,21383,34939,25233,20576,8755, 31109,38726,18058,4243, 43667,7449, 4594, 33876,2309, 31616,
- 14534,8635, 27759,5324, 34518,32845,40788,35935,40788,15776,1761, 35934,3598, 6814, 10336,33139,9896, 25361,3837, 43667,129, 15133,836, 34939,1632, 11419,3862,
+ 14534,8635, 27759,5324, 34518,32845,40788,35935,40788,15776,1761, 35934,3598, 6814, 10336,33139,9896, 25361,3837, 43667,129, 15133,836, 34939,1632, 11419,3862,
2738, 31108,4409, 23963,43667,37164,34905,588, 34132,38726,1904, 34131,35934,3379, 26354,31107,37163,20575,32845,32845,8068, 33238,23962,43666,893, 166, 16780,
37873,8857, 31764,31106,1300, 26105,32844,5359, 40787,37992,13092,19897,15334,27758,43666,37163,5926, 5293, 994, 12636,1171, 1036, 32977,43666,25111,34131,34131,
33170,37163,43666,419, 20401,31266,12334,6913, 9895, 14964,35934,3699, 3238, 14529,26417,5602, 36646,24624,43665,10867,12635,11418,34131,7339, 27757,18440,33440,
@@ -13948,13 +13943,13 @@ static const unsigned short Ranks[197839] =
709, 12272,19842,43664,26353,40787,34130,13586,6853, 8800, 9498, 28810,16999,9219, 35933,429, 36553,43664,1492, 3605, 977, 43664,5951, 10620,7105, 36526,43664,
33439,34938,34130,22962,35933,16569,13091,9894, 43663,19228,29626,11417,43663,40786,21323,43663,37162,25636,38183,43663,35932,40786,32844,877, 33439,2766, 40786,
43662,43662,5366, 4377, 43662,37162,40786,3056, 40785,34130,21322,8523, 40785,16568,7985, 38726,38726,38725,23773,2773, 35714,11093,32893,20855,36926,43662,35932,
- 40785,7880, 35932,21201,38725,23959,295, 19227,32844,18057,35741,21380,21032,31628,43661,10841,38725,43661,17464,43661,43661,25860,18676,19652,25109,1092, 770,
+ 40785,7880, 35932,21201,38725,23959,295, 19227,32844,18057,35741,21380,21032,31628,43661,10841,38725,43661,17464,43661,43661,25860,18676,19652,25109,1092, 770,
37162,246, 1976, 31359,12874,14098,18096,26276,8627, 19029,38358,43660,814, 21862,16877,34129,27753,33309,34938,6766, 17565,18629,34129,34254,40785,7445, 18525,
- 5904, 7338, 38685,14963,10106,35932,9091, 4534, 40784,5479, 5104, 5729, 32844,31104,40784,15333,35721,5925, 7448, 43660,2128, 43660,34938,2209, 43660,37162,9588,
+ 5904, 7338, 38685,14963,10106,35932,9091, 4534, 40784,5479, 5104, 5729, 32844,31104,40784,15333,35721,5925, 7448, 43660,2128, 43660,34938,2209, 43660,37162,9588,
3521, 23958,31554,9326, 13514,40784,806, 7751, 5587, 25792,40784,27408,21379,35931,21047,40783,4184, 10340,3536, 25631,13090,40783,33439,40783,13652,17476,38725,
40783,2083, 43659,7551, 34129,37161,34938,43659,26740,7933, 179, 4520, 15936,28028,32849,16399,18826,19896,35931,13089,32843,9460, 39298,3282, 36671,32843,43659,
- 2141, 5036, 5251, 40782,35747,4734, 264, 38724,13651,34129,31103,16567,43659,29330,29329,43658,43658,33438,25265,31102,3057, 12973,40782,29643,43658,34622,8294,
- 26352,3938, 12839,43658,40782,15731,31101,38724,40782,25108,6177, 21321,32843,5781, 14263,40781,22112,3755, 33017,3311, 22928,35880,40781,37161,1262, 22475,385,
+ 2141, 5036, 5251, 40782,35747,4734, 264, 38724,13651,34129,31103,16567,43659,29330,29329,43658,43658,33438,25265,31102,3057, 12973,40782,29643,43658,34622,8294,
+ 26352,3938, 12839,43658,40782,15731,31101,38724,40782,25108,6177, 21321,32843,5781, 14263,40781,22112,3755, 33017,3311, 22928,35880,40781,37161,1262, 22475,385,
7951, 25283,40781,21320,19895,16801,19013,18524,39288,43657,29279,19841,36915,26291,38724,7360, 8676, 40781,38724,32843,31100,34799,10189,3056, 21319,34128,37888,
3310, 832, 32209,15332,43657,34128,32996,19226,12097,34128,43657,34121,796, 22111,31099,43657,7972, 6978, 11787,26601,5134, 2872, 35931,14362,43656,38723,14011,
38638,22606,34937,39222,34149,32842,3598, 2002, 43656,35931,33816,35930,8634, 40780,8408, 8633, 38723,31098,38863,31097,32842,38466,34084,33424,18188,40780,34128,
@@ -13964,16 +13959,16 @@ static const unsigned short Ranks[197839] =
9103, 2830, 6914, 34825,2861, 7346, 33235,43654,43654,36420,40779,34127,2892, 18522,838, 19363,2544, 16819,37161,35540,31458,21378,34797,11053,43653,32842,35929,
5542, 33588,37160,38722,3517, 37160,19788,33926,34937,8982, 19893,9856, 698, 37547,37160,37160,43653,4697, 27088,18521,11329,4391, 15734,10781,16565,6169, 34319,
37662,13807,37884,34610,16940,16415,6134, 13008,9059, 21319,14902,10532,36314,22610,34496,28194,37342,34374,32842,36520,25105,43653,12076,29328,40779,22961,12837,
- 27752,14514,22041,27418,37159,17368,11935,2569, 7162, 29726,8886, 38280,37899,8985, 18251,33359,21656,31914,23892,557, 29403,715, 5530, 17713,3660, 13052,2221,
+ 27752,14514,22041,27418,37159,17368,11935,2569, 7162, 29726,8886, 38280,37899,8985, 18251,33359,21656,31914,23892,557, 29403,715, 5530, 17713,3660, 13052,2221,
8177, 28461,7421, 33567,13465,28027,40778,7337, 8257, 1038, 17726,4135, 36933,36000,12948,37940,38863,39359,34855,31136,16911,11934,2230, 36373,39236,15931,16196,
19565,6930, 32408,32717,1339, 37159,40778,32922,43653,24745,31141,6665, 11052,5358, 7252, 13836,2432, 19840,4374, 38722,19411,10984,13584,10618,21377,1210, 31519,
- 22318,6675, 815, 10065,33540,7237, 34205,12271,21355,35665,21454,1166, 16796,34412,13051,17463,20868,5292, 33415,1481, 35032,10811,40778,38448,17475,1666, 3754,
- 46, 34937,3055, 43652,40778,34937,3520, 13513,34838,33839,2349, 1795, 1344, 621, 11453,37996,38659,599, 5274, 17773,3606, 25658,16555,1089, 875, 163, 9934,
+ 22318,6675, 815, 10065,33540,7237, 34205,12271,21355,35665,21454,1166, 16796,34412,13051,17463,20868,5292, 33415,1481, 35032,10811,40778,38448,17475,1666, 3754,
+ 46, 34937,3055, 43652,40778,34937,3520, 13513,34838,33839,2349, 1795, 1344, 621, 11453,37996,38659,599, 5274, 17773,3606, 25658,16555,1089, 875, 163, 9934,
40777,37910,43652,1319, 33438,19831,29327,15079,30637,18370,35106,18056,4093, 6791, 10538,37159,2032, 30106,15475,27751,5541, 2693, 28169,35532,12332,38722,31095,
18482,4781, 38721,36191,40777,34936,37159,3753, 29506,1011, 40777,32911,3494, 38721,1299, 15579,32382,25967,16558,12270,16688,28728,15134,10034,43652,40777,20573,
- 37158,28987,35380,32841,9101, 32471,38721,34936,19839,43652,2440, 35926,33538,37076,19892,34755,34849,38721,40776,16258,43651,28588,34936,38927,14912,39287,4197,
+ 37158,28987,35380,32841,9101, 32471,38721,34936,19839,43652,2440, 35926,33538,37076,19892,34755,34849,38721,40776,16258,43651,28588,34936,38927,14912,39287,4197,
40776,17474,21262,6913, 28224,5983, 43651,15047,5942, 17319,11762,36786,37158,7528, 34344,1253, 10033,3367, 33288,29326,25104,10669,40776,16998,35929,18055,40776,
- 43651,27750,591, 21318,13650,8984, 19838,7527, 7063, 13050,37158,16142,43651,14750,9771, 17269,36308,17501,17213,13649,268, 735, 1576, 8160, 33515,2183, 1657,
+ 43651,27750,591, 21318,13650,8984, 19838,7527, 7063, 13050,37158,16142,43651,14750,9771, 17269,36308,17501,17213,13649,268, 735, 1576, 8160, 33515,2183, 1657,
35929,18687,19837,40775,6307, 29325,43650,38720,43650,4030, 28258,14010,16852,19124,4247, 14009,35940,32671,26593,19836,43650,34936,25103,40775,40775,18520,37158,
35764,35523,43650,23954,995, 16997,20572,34127,9345, 26995,38720,10486,33099,33438,26298,8632, 20162,1917, 36534,21067,29324,12615,10188,34935,2066, 37157,38907,
27749,37157,1777, 1828, 16564,36255,7550, 34935,34090,2392, 14728,19835,38844,6244, 8983, 37157,40775,35929,9090, 16141,6852, 30333,13924,34811,28532,4328, 31094,
@@ -13981,10 +13976,10 @@ static const unsigned short Ranks[197839] =
6191, 36742,40774,22959,7447, 23953,20571,35928,28351,25899,18627,37156,38720,27747,38471,32841,7576, 14621,38921,20570,37915,3679, 19156,7446, 4519, 13512,37156,
21376,34126,30641,38720,12096,15656,35657,11016,43649,40774,4161, 18054,38719,43649,40773,29323,36007,26351,37155,43649,6962, 19514,7611, 22445,22112,27088,16242,
4852, 13361,32897,22444,7623, 32853,26581,12994,28443,23626,28744,26277,26786,9195, 18994,2660, 31176,22165,23774,8307, 5925, 4090, 20201,20404,32869,35560,19257,
- 2135, 18859,24517,19226,35769,1933, 33053,11902,7585, 22547,28852,13775,37654,19833,33536,24663,31428,35866,38083,34579,11768,31384,20392,35420,21060,33019,7984,
+ 2135, 18859,24517,19226,35769,1933, 33053,11902,7585, 22547,28852,13775,37654,19833,33536,24663,31428,35866,38083,34579,11768,31384,20392,35420,21060,33019,7984,
17858,35928,31493,22285,18521,30133,13006,19148,31362,31090,37673,2573, 37102,5061, 3587, 27500,11165,28916,1140, 21739,28505,13076,35071,12735,37482,35498,19335,
- 14265,43648,38719,4956, 4071, 2432, 8660, 36350,8121, 10566,16073,43648,17272,4558, 38241,8648, 25123,19224,34031,38719,23952,34935,37155,37155,23951,11050,426,
- 16996,12331,28433,38719,202, 31540,2178, 576, 17975,311, 26563,34708,37155,3378, 1654, 8793, 37154,40773,37321,20569,4228, 33101,5522, 34495,37660,14939,6817,
+ 14265,43648,38719,4956, 4071, 2432, 8660, 36350,8121, 10566,16073,43648,17272,4558, 38241,8648, 25123,19224,34031,38719,23952,34935,37155,37155,23951,11050,426,
+ 16996,12331,28433,38719,202, 31540,2178, 576, 17975,311, 26563,34708,37155,3378, 1654, 8793, 37154,40773,37321,20569,4228, 33101,5522, 34495,37660,14939,6817,
5129, 40773,34935,35928,5323, 38718,22937,31093,346, 979, 34126,19832,14513,16317,36848,38718,17473,38718,31664,33190,33438,43648,37154,18880,17725,31789,28880,
2986, 9375, 39370,20797,4134, 25102,39014,38489,38589,43648,32841,9089, 39031,4070, 31227,28612,31759,34982,22677,1181, 1968, 7703, 2111, 2121, 4110, 11328,33473,
22082,4333, 3272, 15952,25101,2323, 14620,38718,2706, 8383, 13921,3116, 493, 20504,12592,6821, 34926,10337,2006, 1032, 27746,40773,29322,361, 33913,12634,14008,
@@ -14005,35 +14000,35 @@ static const unsigned short Ranks[197839] =
32920,12095,10411,16922,907, 27993,23733,17207,24668,35079,35925,10339,34250,34125,36989,34125,35925,22981,34125,34290,33864,21767,6488, 28852,37646,26303,39082,
37151,35835,19701,15329,39406,40767,4768, 28886,33812,5933, 30226,18032,33436,8531, 43642,9354, 36358,28153,16163,32400,10825,27382,9535, 21795,19001,2743, 20446,
7125, 28911,16583,34559,6256, 14115,14034,11946,17213,28704,16841,2989, 29330,34342,24367,32124,27415,21339,19606,31752,29908,12654,3053, 14887,32897,38714,35925,
- 40766,40766,39323,34934,16687,21316,36915,6663, 43642,40766,38006,35131,39062,9727, 36643,12836,16424,34705,22513,38640,17470,6010, 21538,22797,15328,14418,1598,
+ 40766,40766,39323,34934,16687,21316,36915,6663, 43642,40766,38006,35131,39062,9727, 36643,12836,16424,34705,22513,38640,17470,6010, 21538,22797,15328,14418,1598,
35925,118, 32775,38713,12094,19222,20565,30483,40766,35924,26348,28764,34124,43642,34934,37081,18823,38713,43642,18515,6977, 669, 3518, 43641,32788,33436,21368,
5884, 34124,34792,2771, 9217, 4674, 12633,29320,24426,33270,27958,10187,21315,43641,28971,15730,15305,21367,7564, 33436,17136,21053,3173, 9624, 43641,26255,35924,
- 43641,38284,12351,1551, 35714,4832, 37151,27191,39099,4019, 2490, 14511,32905,1038, 4258, 11866,13087,20709,24517,35379,788, 10834,38426,12475,7569, 34366,2727,
+ 43641,38284,12351,1551, 35714,4832, 37151,27191,39099,4019, 2490, 14511,32905,1038, 4258, 11866,13087,20709,24517,35379,788, 10834,38426,12475,7569, 34366,2727,
15181,43640,15774,4631, 40765,18625,21215,34106,38713,43640,16562,15777,40765,36388,40765,13951,38698,37236,17869,16561,33522,38026,32297,34716,21799,39205,43640,
38260,39292,38139,21203,33749,35948,31978,38713,17308,34381,38757,40765,35924,17460,34724,37151,8293, 34124,33825,38757,15937,23945,31091,27745,43640,4003, 13510,
36445,18514,11014,38712,19599,38712,40764,37150,37150,38712,29319,4874, 1298, 3095, 4513, 11265,2747, 4065, 40764,18052,36305,3198, 39387,27446,34432,32870,18051,
- 43639,21131,23890,11543,34124,37006,10294,32823,33264,33098,35162,1559, 12378,36452,27580,937, 9344, 37317,43639,2781, 16560,261, 26422,32036,43639,5601, 6088,
+ 43639,21131,23890,11543,34124,37006,10294,32823,33264,33098,35162,1559, 12378,36452,27580,937, 9344, 37317,43639,2781, 16560,261, 26422,32036,43639,5601, 6088,
32840,25097,3880, 33922,39031,35048,22487,21366,17433,13151,32926,43639,31066,36243,33989,15729,43638,35924,6790, 16559,9325, 12461,14619,37827,2502, 5076, 25827,
- 19987,40764,9697, 1141, 9966, 43638,34809,38712,38711,15728,22057,464, 32854,9454, 20546,14934,1129, 288, 571, 10980,5322, 29318,16566,30126,35261,31090,1648,
+ 19987,40764,9697, 1141, 9966, 43638,34809,38712,38711,15728,22057,464, 32854,9454, 20546,14934,1129, 288, 571, 10980,5322, 29318,16566,30126,35261,31090,1648,
31835,35327,40764,663, 1575, 43638,34878,43638,26626,275, 8331, 37145,5664, 18097,2525, 14786,30904,22324,35923,10489,1256, 5844, 27039,43637,40763,16139,12107,
1355, 23814,8812, 21310,35712,32008,43637,12993,29246,292, 16558,37150,32949,21128,37039,713, 25957,38168,38641,27160,34977,43637,24866,34309,43637,37576,43636,
31281,36683,21636,1300, 26927,28260,3054, 2868, 766, 35923,598, 10363,39141,27414,19502,302, 39210,11135,26137,28610,487, 11816,30805,661, 25829,23500,18556,
- 22711,29974,706, 28546,34991,19489,15132,1359, 7365, 16839,35605,39022,33413,27972,27744,40763,31089,36286,582, 23912,17459,10565,36547,12329,30744,38227,2177,
- 38711,34123,8530, 36882,19828,43636,37150,18759,22617,7429, 1290, 28872,3377, 2405, 15141,1036, 2348, 1596, 29331,21365,43636,40763,43636,35772,36890,18590,7250,
- 34933,34933,21662,11375,11609,33051,34981,3026, 43635,1359, 5156, 19603,38311,11819,8369, 33347,35555,6765, 2260, 26245,14726,7971, 32373,33985,14960,37149,1501,
+ 22711,29974,706, 28546,34991,19489,15132,1359, 7365, 16839,35605,39022,33413,27972,27744,40763,31089,36286,582, 23912,17459,10565,36547,12329,30744,38227,2177,
+ 38711,34123,8530, 36882,19828,43636,37150,18759,22617,7429, 1290, 28872,3377, 2405, 15141,1036, 2348, 1596, 29331,21365,43636,40763,43636,35772,36890,18590,7250,
+ 34933,34933,21662,11375,11609,33051,34981,3026, 43635,1359, 5156, 19603,38311,11819,8369, 33347,35555,6765, 2260, 26245,14726,7971, 32373,33985,14960,37149,1501,
16138,13445,34371,8142, 40763,8119, 6120, 19827,11933,9515, 18513,2794, 43635,5191, 23239,12629,38711,43635,38711,43635,40762,4242, 195, 33435,40762,32840,34933,
- 35923,40762,43634,37376,37149,13509,9216, 37149,1044, 8381, 32357,24742,7970, 40762,34123,6172, 10105,20194,1621, 3062, 28068,8753, 10443,32763,3451, 9576, 417,
+ 35923,40762,43634,37376,37149,13509,9216, 37149,1044, 8381, 32357,24742,7970, 40762,34123,6172, 10105,20194,1621, 3062, 28068,8753, 10443,32763,3451, 9576, 417,
16975,26914,5940, 33491,38255,2692, 14221,2005, 8013, 22190,10150,2355, 13495,17144,660, 4002, 7249, 34198,15909,16991,38710,40761,26311,13934,7295, 35923,43634,
31088,8427, 22753,22109,34537,35416,8380, 15222,26997,39131,7969, 5250, 43634,43634,43633,789, 37212,1789, 1012, 12134,1394, 17922,937, 21364,3464, 29317,33435,
- 34134,43633,15133,8983, 34141,15194,3167, 2431, 38123,5424, 8636, 1624, 1378, 24947,3308, 3830, 33802,5271, 37954,601, 31918,9794, 1111, 8406, 11932,33145,6215,
+ 34134,43633,15133,8983, 34141,15194,3167, 2431, 38123,5424, 8636, 1624, 1378, 24947,3308, 3830, 33802,5271, 37954,601, 31918,9794, 1111, 8406, 11932,33145,6215,
19794,15727,18272,1278, 9023, 33689,3604, 217, 16183,8, 29312,2338, 9121, 17502,31230,32190,32807,3307, 38328,29581,18362,3964, 14155,15726,43633,1746, 26783,
- 27103,611, 2121, 45, 18371,625, 32466,7676, 5610, 9282, 14214,12432,12757,13097,16938,10779,15246,32549,28124,38179,9334, 1299, 28534,17517,1200, 34759,130,
+ 27103,611, 2121, 45, 18371,625, 32466,7676, 5610, 9282, 14214,12432,12757,13097,16938,10779,15246,32549,28124,38179,9334, 1299, 28534,17517,1200, 34759,130,
32868,24809,13259,15908,3603, 35922,2046, 27062,1428, 23592,3236, 1835, 3450, 779, 17379,1864, 12031,8982, 39311,15647,1523, 15131,4206, 37418,10840,18512,35922,
- 35184,43633,34120,18511,36276,1760, 5062, 9481, 29316,35922,12632,19221,37149,22184,4630, 40761,43632,38710,736, 4197, 1848, 32937,4326, 15400,32403,24526,8353,
+ 35184,43633,34120,18511,36276,1760, 5062, 9481, 29316,35922,12632,19221,37149,22184,4630, 40761,43632,38710,736, 4197, 1848, 32937,4326, 15400,32403,24526,8353,
5883, 6025, 31649,11624,35922,16328,18510,1696, 36392,34552,34933,16684,38710,40761,40761,37924,885, 451, 4048, 14429,3191, 34932,2156, 27189,18969,9514, 10786,
3752, 13508,1705, 817, 37148,18509,37935,31990,23727,43632,14618,43632,40760,4780, 37148,36504,22028,3751, 4168, 40760,1915, 33435,43632,11048,6243, 31087,34123,
32839,37746,29554,35353,1190, 1573, 34123,40760,35921,4270, 34732,36755,34145,33193,28267,34752,23944,39007,24531,32135,8856, 6101, 23450,38710,38709,1401, 11865,
- 15111,15168,43631,10564,34015,17866,37148,19525,8139, 10379,13049,33470,36070,34122,7336, 19826,15773,13725,34374,38709,43631,13086,18050,4722, 34751,30831,9324,
+ 15111,15168,43631,10564,34015,17866,37148,19525,8139, 10379,13049,33470,36070,34122,7336, 19826,15773,13725,34374,38709,43631,13086,18050,4722, 34751,30831,9324,
35677,34132,36099,2668, 38709,35921,13050,43631,19276,15775,33314,33642,38709,18624,43631,4501, 16704,43630,35921,40760,29031,775, 30305,16137,36671,16119,43630,
38708,29007,37148,6403, 34038,16557,18508,32244,33353,37147,35353,31086,18049,2404, 43630,43630,22108,8405, 3879, 182, 31085,40759,37818,8176, 1898, 25451,19891,
40759,27540,22472,1979, 34932,36783,35157,15000,13838,14945,37377,8045, 10839,19205,26347,37147,33965,37147,34932,1346, 14510,4866, 13048,15746,35254,38708,43629,
@@ -14043,13 +14038,13 @@ static const unsigned short Ranks[197839] =
21558,3622, 4865, 5477, 6029, 2040, 6349, 7547, 67, 2696, 13924,21652,40759,37146,5435, 8379, 19625,7084, 19825,10485,29477,15462,23838,18507,10838,3723, 11124,
2242, 24068,18305,23942,12236,16591,9088, 34931,26346,23417,11132,25867,28682,1506, 43629,33048,43628,10104,43628,31084,33557,32839,35784,33320,19210,25096,33024,
31815,14610,37133,30404,38830,35499,37292,29314,37146,38707,37562,17103,35920,5408, 35920,28462,32789,20076,28115,11929,4640, 70, 15958,1369, 11598,24454,19828,
- 26436,17159,22936,17280,16474,11063,943, 23870,1391, 31557,6566, 27743,19144,5476, 43628,1513, 10930,4521, 33858,18850,25725,6008, 8959, 2278, 13446,19861,5658,
+ 26436,17159,22936,17280,16474,11063,943, 23870,1391, 31557,6566, 27743,19144,5476, 43628,1513, 10930,4521, 33858,18850,25725,6008, 8959, 2278, 13446,19861,5658,
34037,37664,36490,35273,9571, 39054,30968,628, 33028,19890,43628,28135,24868,34458,15725,43627,4947, 34931,43627,26345,21314,43627,1963, 2065, 36870,27592,10886,
13648,9323, 4351, 18048,37912,38707,5321, 15130,38128,34779,43627,35476,23574,24244,35919,24571,4303, 26752,35569,10562,2794, 25682,22956,39037,40759,33050,38074,
14440,43626,3166, 35919,2867, 3449, 38707,36713,34931,35865,38707,491, 25095,25094,548, 38609,2958, 1574, 2307, 7161, 36079,34394,1491, 3448, 29313,32770,34122,
- 43626,25093,40758,23941,40758,43626,32892,29408,29546,34433,14826,29312,33205,35919,28095,27742,40758,21771,513, 31685,26178,40758,37146,12385,37145,34931,1653,
- 1609, 38706,4782, 40757,26344,403, 7889, 26768,36579,2458, 26655,24154,39413,39069,24762,13481,36085,35919,34767,37145,35374,43626,43625,27918,43625,2826, 59,
- 18183,1463, 2347, 43625,7006, 22107,37145,32839,37145,23008,32838,34930,4439, 12332,33414,43625,32838,34122,35918,8631, 21313,43624,37144,8855, 9893, 19220,2597,
+ 43626,25093,40758,23941,40758,43626,32892,29408,29546,34433,14826,29312,33205,35919,28095,27742,40758,21771,513, 31685,26178,40758,37146,12385,37145,34931,1653,
+ 1609, 38706,4782, 40757,26344,403, 7889, 26768,36579,2458, 26655,24154,39413,39069,24762,13481,36085,35919,34767,37145,35374,43626,43625,27918,43625,2826, 59,
+ 18183,1463, 2347, 43625,7006, 22107,37145,32839,37145,23008,32838,34930,4439, 12332,33414,43625,32838,34122,35918,8631, 21313,43624,37144,8855, 9893, 19220,2597,
22502,21363,3629, 38706,5440, 35556,13047,13370,26576,16383,7526, 43624,30080,22277,1387, 43624,35918,7511, 16554,34930,156, 2099, 32846,11281,25966,19556,28941,
30544,7801, 29311,28988,11930,36516,2253, 9904, 29310,14509,9292, 13046,847, 33269,43624,37489,20541,19022,38706,32867,35418,29693,40757,3104, 32838,16794,10570,
4884, 37601,34122,31083,39218,18508,639, 17469,40757,40757,27741,30057,11864,33017,40756,43623,33434,27740,1700, 3387, 6119, 25881,29809,470, 27016,1958, 24846,
@@ -14061,7 +14056,7 @@ static const unsigned short Ranks[197839] =
18107,14655,10218,105, 24656,2090, 22918,11486,32325,28696,9177, 15129,21360,2168, 10337,6687, 18047,9513, 21359,35175,1101, 12552,40755,2360, 8920, 23776,13647,
37143,26195,32811,38019,14354,32901,16029,21235,36196,7525, 30129,406, 7479, 29712,30692,24690,30041,25092,5371, 1007, 19277,29767,10143,37989,12419,36049,29542,
38675,3447, 29309,32107,15327,43621,34929,37143,14617,33328,35914,43621,21802,17458,43621,33239,14521,34589,18506,36511,14003,36985,28643,43620,37408,16353,10505,
- 35971,38150,32212,19376,17037,43620,8178, 19824,35917,17650,34121,16565,32685,21311,23940,378, 35378,7639, 16410,27258,39271,911, 43620,1960, 15128,4166, 9506,
+ 35971,38150,32212,19376,17037,43620,8178, 19824,35917,17650,34121,16565,32685,21311,23940,378, 35378,7639, 16410,27258,39271,911, 43620,1960, 15128,4166, 9506,
15127,39184,18879,33434,199, 23488,26343,910, 34928,885, 2333, 22385,4076, 25002,34928,34928,34783,28885,38467,4717, 2845, 11317,43620,24044,37671,1765, 38186,
8528, 17468,14533,4159, 22939,34411,3906, 8118, 31081,23679,40754,9269, 7160, 19823,3999, 38704,27322,38660,40754,8854, 16076,39020,3330, 38704,36365,32838,12607,
28125,40754,23702,13045,43619,32837,33434,3318, 32131,35956,11045,34928,36122,6012, 10763,6690, 14508,14505,14002,13825,1465, 456, 8553, 12579,28367,32288,13069,
@@ -14070,24 +14065,24 @@ static const unsigned short Ranks[197839] =
13085,40753,43618,43618,35917,31360,21172,43618,19889,1758, 32772,31761,38396,40753,28022,11537,21310,5320, 28487,4064, 19190,30700,43617,31320,6414, 33522,21958,
894, 8364, 36179,17935,12096,35479,16553,14507,11212,3403, 37143,2137, 19852,17748,24548,17841,24038,20885,1213, 35795,31454,17958,37142,35226,13944,33472,29915,
38703,43617,34121,43617,33424,16993,31080,32837,33073,36462,25646,13663,15075,8981, 33911,38958,21356,13507,21355,37142,43617,43616,11073,15771,21354,36357,35916,
- 2335, 28785,14246,34836,25091,22954,38703,3535, 40753,43616,2846, 22953,9376, 26931,17467,37462,18253,37142,7248, 24102,20250,7638, 34301,35761,35575,33671,6261,
+ 2335, 28785,14246,34836,25091,22954,38703,3535, 40753,43616,2846, 22953,9376, 26931,17467,37462,18253,37142,7248, 24102,20250,7638, 34301,35761,35575,33671,6261,
22199,35521,24956,40752,10855,37142,37680,11415,33433,22952,43616,31475,36929,38956,15724,12835,35516,4007, 4091, 38703,43616,43615,17115,43615,25457,12628,10780,
2418, 25074,10032,32837,30566,40752,33433,27737,25438,34927,27736,18505,37141,40752,744, 3263, 18805,32181,28602,36727,6442, 30214,30173,33683,10522,36137,36787,
16552,19822,19082,26016,24337,43615,34927,38702,43615,18623,13084,31079,16136,1594, 36094,19888,2268, 40752,9362, 35916,29546,31607,4818, 14295,40751,10779,40751,
12644,14285,9621, 729, 1247, 9409, 4773, 18504,40751,11095,35259,23894,37347,43614,31702,38870,5062, 43614,39226,1279, 39356,497, 1633, 18046,40751,2466, 18503,
25144,8510, 30016,16564,27601,37141,33215,3347, 5475, 17457,15126,38094,4205, 34926,9903, 29308,9334, 37141,19756,9160, 6764, 36376,21309,37141,37140,28967,33326,
- 18502,40750,27082,36720,35336,35816,32836,43614,36041,43614,38702,13043,14247,21353,14001,13476,39211,10031,34398,37576,37245,872, 18998,10929,36076,4576, 7062,
+ 18502,40750,27082,36720,35336,35816,32836,43614,36041,43614,38702,13043,14247,21353,14001,13476,39211,10031,34398,37576,37245,872, 18998,10929,36076,4576, 7062,
4071, 35483,19821,958, 17456,5225, 3287, 14000,2331, 13042,43613,3547, 34121,29323,4442, 605, 6277, 6994, 7865, 14946,10700,3985, 10103,24945,40750,35272,21352,
9623, 24886,36231,5330, 10869,38074,5193, 33105,7247, 9902, 38405,34106,8397, 7122, 17247,27180,37756,35021,7332, 4864, 37363,37054,28455,24240,18307,16887,30856,
37140,35638,37970,3026, 12968,33540,1442, 1227, 12935,30436,38728,36504,33015,29975,43613,2948, 22253,33135,13932,32918,38205,38283,6789, 37140,43613,35916,26342,
43613,38702,26341,29307,2468, 38231,43612,40750,7083, 13646,43612,40750,37140,18605,32787,43612,26340,8752, 37139,37139,37139,25090,38702,10334,28321,94, 16982,
- 770, 23588,28928,15005,7675, 4727, 20707,30474,7740, 27717,15583,13733,18382,28929,23807,32328,19764,28558,26463,30858,15400,32898,31476,16026,28409,18505,8251,
- 27510,2509, 21083,13506,25089,43612,15966,23062,23910,31860,21349,38701,17551,19108,35916,34926,38701,10320,4346, 38701,35915,32780,12959,43611,38701,25435,3884,
+ 770, 23588,28928,15005,7675, 4727, 20707,30474,7740, 27717,15583,13733,18382,28929,23807,32328,19764,28558,26463,30858,15400,32898,31476,16026,28409,18505,8251,
+ 27510,2509, 21083,13506,25089,43612,15966,23062,23910,31860,21349,38701,17551,19108,35916,34926,38701,10320,4346, 38701,35915,32780,12959,43611,38701,25435,3884,
7864, 7863, 14554,13730,1052, 8805, 599, 9262, 534, 21657,34964,38382,37443,22106,1109, 43611,37139,5793, 35915,2430, 1548, 38700,1044, 2429, 18622,40749,20123,
- 1920, 10157,4183, 390, 2314, 15768,40749,35915,31078,27735,15599,629, 26424,842, 22218,219, 18512,1644, 1759, 27734,17072,38122,2544, 21955,29057,12328,2708,
- 36739,1558, 38199,2655, 413, 386, 70, 38700,43, 3235, 38700,21308,26339,43611,38700,25088,33433,3828, 3118, 32836,464, 9695, 16551,8378, 16550,43611,7791,
+ 1920, 10157,4183, 390, 2314, 15768,40749,35915,31078,27735,15599,629, 26424,842, 22218,219, 18512,1644, 1759, 27734,17072,38122,2544, 21955,29057,12328,2708,
+ 36739,1558, 38199,2655, 413, 386, 70, 38700,43, 3235, 38700,21308,26339,43611,38700,25088,33433,3828, 3118, 32836,464, 9695, 16551,8378, 16550,43611,7791,
7071, 26027,34926,12035,17466,34586,33585,14616,8853, 37138,36373,29107,19887,1133, 750, 9074, 6641, 37138,11, 17252,29306,4779, 34079,40749,12724,35915,21351,
- 30558,255, 8938, 28921,40749,19927,35813,34121,23180,43610,35980,10820,38695,37502,18392,38476,14935,3081, 36044,19820,35467,11044,38292,38229,38817,16235,6137,
+ 30558,255, 8938, 28921,40749,19927,35813,34121,23180,43610,35980,10820,38695,37502,18392,38476,14935,3081, 36044,19820,35467,11044,38292,38229,38817,16235,6137,
9292, 43610,717, 18905,33072,20896,3413, 11987,11189,18137,4639, 16348,24631,33433,7359, 19819,2573, 35310,7223, 13573,37421,7860, 33306,35441,8599, 40748,25087,
38699,31077,18167,26357,3331, 22342,34926,786, 37138,37381,21307,34936,1640, 18072,3239, 7836, 2932, 19918,38699,15723,20743,12240,33432,1373, 14004,40748,37013,
32998,34925,30573,9581, 21963,12228,471, 6402, 22837,30993,28128,15125,15770,2938, 16550,15769,8377, 2730, 25913,16496,1513, 43610,35697,34925,43610,43609,34874,
@@ -14106,34 +14101,34 @@ static const unsigned short Ranks[197839] =
7885, 38946,7681, 21951,32875,7187, 27192,28573,32267,30972,34698,13752,30797,37135,38695,40743,43601,35167,18498,2277, 40743,37094,35912,37135,16548,38695,21819,
38311,33343,23142,29360,1452, 32835,37900,2359, 14600,32835,7622, 29304,35912,38694,43601,34923,40742,15326,20833,40742,8858, 19622,23855,38694,13083,31071,43600,
43600,43600,33430,40742,15721,10333,38694,43600,3517, 37134,32834,29303,19818,4730, 16730,20695,25447,21410,40742,1732, 8811, 3034, 37689,5396, 37577,1428, 19817,
- 34613,30526,13482,4849, 3064, 34974,38079,11929,6312, 27868,8371, 3060, 33544,19157,35622,15764,11608,9900, 33432,32935,33745,35611,18781,29992,19491,29316,6175,
+ 34613,30526,13482,4849, 3064, 34974,38079,11929,6312, 27868,8371, 3060, 33544,19157,35622,15764,11608,9900, 33432,32935,33745,35611,18781,29992,19491,29316,6175,
1324, 6011, 36675,15151,29625,33619,34428,2269, 22375,20165,32961,40741,32834,21386,34119,21301,25085,22104,43599,10030,16992,23938,43599,23502,34923,33430,10777,
12268,38694,27730,5180, 34192,29302,7402, 34266,40741,4346, 9559, 16499,28654,14836,43599,38849,27729,38888,43599,31070,1060, 43598,38693,32834,36999,31355,40741,
- 13645,17455,36830,11716,29009,19785,23703,37120,16991,37107,38301,32874,3689, 35672,33430,4031, 7015, 30992,7895, 2089, 5807, 20131,7934, 38343,757, 19004,3157,
+ 13645,17455,36830,11716,29009,19785,23703,37120,16991,37107,38301,32874,3689, 35672,33430,4031, 7015, 30992,7895, 2089, 5807, 20131,7934, 38343,757, 19004,3157,
25084,2377, 19702,1275, 3204, 43598,33684,34119,24285,24838,38693,33430,33931,34923,4348, 8389, 37134,40741,7185, 16703,36217,40740,34119,29474,54, 24706,23308,
- 34082,35824,19423,34702,27600,19816,33429,43598,7909, 37134,31069,19884,34922,29595,35912,43598,43597,43597,28049,2898, 16287,29723,37124,16821,38030,13504,6206,
+ 34082,35824,19423,34702,27600,19816,33429,43598,7909, 37134,31069,19884,34922,29595,35912,43598,43597,43597,28049,2898, 16287,29723,37124,16821,38030,13504,6206,
34922,466, 33350,2234, 3363, 36697,12902,28985,15763,12267,3670, 9078, 4113, 36890,39248,26335,6319, 31568,23670,37180,38370,43597,19815,35762,27705,37134,12929,
32887,24958,24685,29944,22123,24528,22118,695, 31298,1266, 19991,10983,18396,24791,7238, 19982,21565,9906, 32784,28947,13122,33086,5924, 11623,10837,40740,16135,
22949,38693,40740,7445, 25155,35230,32899,7607, 32922,16905,7894, 10561,19331,23860,39376,18360,22489,38693,19883,31068,13644,27728,25083,22103,40740,18044,33429,
22291,7062, 1285, 11390,12612,801, 2310, 1152, 37133,631, 25082,294, 12209,28855,16562,29816,36050,11928,37133,38908,5264, 43597,14264,21348,34118,12266,36807,
- 13503,4671, 13998,33313,19814,19882,11325,5710, 33131,2273, 25081,22948,38930,1712, 26210,9119, 26170,17454,19813,43596,33185,19812,38692,23078,33009,36676,5926,
+ 13503,4671, 13998,33313,19814,19882,11325,5710, 33131,2273, 25081,22948,38930,1712, 26210,9119, 26170,17454,19813,43596,33185,19812,38692,23078,33009,36676,5926,
39382,35746,3073, 37133,5960, 19032,13290,3072, 18497,4946, 9899, 35100,35911,2191, 16883,43596,144, 19101,43596,7621, 748, 8557, 38692,91, 11995,34468,19034,
3234, 20044,3602, 33429,1862, 612, 25080,26788,9511, 37046,9185, 25952,4863, 18496,31644,3516, 2457, 2753, 18351,18760,10100,3446, 3304, 701, 21347,2598, 16547,
- 6247, 20, 14097,428, 11807,21300,19714,25615,16988,28253,34554,2755, 33793,17335,26334,21299,39009,36586,43596,2292, 33429,27727,38692,19219,4985, 8522, 6257,
- 19811,29285,29301,10102,36358,37015,24602,282, 22895,28879,9071, 11414,1144, 23185,685, 9803, 1204, 12316,16846,20358,35643,3618, 3165, 12625,1906, 8450, 1995,
+ 6247, 20, 14097,428, 11807,21300,19714,25615,16988,28253,34554,2755, 33793,17335,26334,21299,39009,36586,43596,2292, 33429,27727,38692,19219,4985, 8522, 6257,
+ 19811,29285,29301,10102,36358,37015,24602,282, 22895,28879,9071, 11414,1144, 23185,685, 9803, 1204, 12316,16846,20358,35643,3618, 3165, 12625,1906, 8450, 1995,
12265,21894,26666,14271,9601, 13824,35700,35068,19810,9557, 6993, 33428,3733, 4350, 3463, 36650,40739,38073,43595,37785,35911,13929,38176,43595,898, 215, 20605,
35484,620, 3138, 231, 5928, 33445,2747, 809, 763, 29553,9114, 38692,10836,2834, 3903, 43595,27726,4029, 8258, 34865,23937,15720,37754,10484,18621,7444, 13502,
- 7750, 12705,25838,37390,43595,37922,37133,36730,22102,43594,39040,19809,33619,40739,31067,4670, 13997,37132,11043,4441, 3103, 5979, 406, 29300,21638,38691,8852,
+ 7750, 12705,25838,37390,43595,37922,37133,36730,22102,43594,39040,19809,33619,40739,31067,4670, 13997,37132,11043,4441, 3103, 5979, 406, 29300,21638,38691,8852,
13643,27725,31066,38691,17463,14615,38691,27724,37132,6523, 35788,36520,31083,3101, 21346,38691,5205, 6661, 16721,14264,43594,233, 15080,7221, 18043,13041,40739,
37132,597, 18703,1904, 3621, 4001, 14506,15762,1515, 13040,24276,6763, 9694, 13039,11607,21345,7082, 38055,8980, 433, 30205,3749, 17066,37132,1830, 4799, 28296,
21846,3689, 25533,24192,43594,1180, 35911,38953,31065,5657, 35903,28932,10785,2082, 40739,40738,18495,8248, 20031,21976,26333,21298,5923, 7968, 34295,26134,29299,
- 26332,31064,36829,36400,9480, 29298,21980,32737,32782,19808,14129,37377,3698, 6242, 21344,8292, 3445, 22947,3145, 20562,34673,30175,16577,26060,3007, 11927,2502,
+ 26332,31064,36829,36400,9480, 29298,21980,32737,32782,19808,14129,37377,3698, 6242, 21344,8292, 3445, 22947,3145, 20562,34673,30175,16577,26060,3007, 11927,2502,
29297,585, 888, 23294,1967, 1253, 795, 11606,37131,38690,5467, 43594,2346, 43593,43593,3055, 43593,23936,16546,782, 2173, 12183,21343,15761,29296,32834,18042,
16561,35911,23935,29295,27723,562, 23570,24493,18267,34986,32322,4261, 2376, 2568, 3376, 21297,34934,37131,33062,18825,43593,3930, 7826, 16007,10386,8228, 37344,
34922,10744,2888, 36285,27568,28282,37131,6246, 33527,10312,38754,40738,43592,34118,1618, 839, 18494,31946,2748, 469, 34922,2045, 1737, 40738,13038,21342,18659,
- 34921,16990,40738,26331,38690,12327,35910,40737,23934,6245, 25941,15760,33262,2751, 6762, 15745,10101,30503,22101,8810, 1032, 38458,6689, 1938, 20561,36068,523,
+ 34921,16990,40738,26331,38690,12327,35910,40737,23934,6245, 25941,15760,33262,2751, 6762, 15745,10101,30503,22101,8810, 1032, 38458,6689, 1938, 20561,36068,523,
19650,27063,17411,144, 5374, 15122,40737,8615, 5095, 256, 32425,24157,16188,1168, 8457, 9167, 37229,31131,5324, 34979,33781,2155, 12123,4373, 4016, 31390,10087,
- 3381, 18002,7809, 12093,31063,10332,10337,9001, 21341,21340,16016,522, 32833,38690,22946,6118, 19881,29294,11013,16134,5474, 33428,16133,19807,9693, 1679, 2106,
+ 3381, 18002,7809, 12093,31063,10332,10337,9001, 21341,21340,16016,522, 32833,38690,22946,6118, 19881,29294,11013,16134,5474, 33428,16133,19807,9693, 1679, 2106,
10335,19398,15270,6373, 14505,22945,27867,40737,38690,34118,8174, 372, 17177,222, 10179,38639,16850,3380, 11605,33428,22944,6992, 2316, 19679,4022, 11604,37131,
7247, 5882, 12215,26734,37130,34118,32833,3826, 43592,25587,36034,9541, 34101,1738, 27641,25761,6214, 23930,27722,33017,27466,21110,9692, 34043,6174, 15759,34539,
31860,16545,11603,38683,1350, 26954,7246, 22471,19806,32775,38970,5858, 35740,8063, 26241,7862, 13996,11413,33289,19805,20560,43592,13928,43592,11042,8117, 10100,
@@ -14148,18 +14143,18 @@ static const unsigned short Ranks[197839] =
19398,43590,32411,8591, 20534,17523,21112,37346,14114,11841,7810, 39343,21099,31053,10646,26040,6842, 27677,4173, 21826,22601,13966,11515,22582,10624,14040,39131,
38697,10768,36609,5028, 17416,23926,14143,7466, 29882,23420,9969, 31023,32388,36810,30732,25833,367, 2272, 26918,7507, 22826,20416,9922, 469, 9834, 36846,35545,
20558,2869, 17455,2497, 2088, 32922,13081,38983,43590,19217,17045,13080,20485,15072,35909,43589,4716, 1574, 38823,18041,26390,25065,35768,38092,15666,24500,31006,
- 1903, 14163,8376, 34921,40734,34299,8173, 35656,43589,38688,19879,8861, 33744,27804,38688,38338,510, 1750, 4622, 11601,10775,27887,21332,5515, 20662,6991, 1179,
+ 1903, 14163,8376, 34921,40734,34299,8173, 35656,43589,38688,19879,8861, 33744,27804,38688,38338,510, 1750, 4622, 11601,10775,27887,21332,5515, 20662,6991, 1179,
26394,18620,7333, 1167, 37229,43589,7726, 12202,43589,18040,1776, 38688,13500,29309,21241,38850,13499,33785,16497,15121,11411,3718, 15113,3414, 36697,43588,40734,
31059,363, 38899,18470,23932,27718,13079,11862,24295,9176, 8526, 13774,32940,22630,36824,20557,36116,2845, 25182,37129,34117,16560,37129,37129,40734,19878,33240,
15280,29291,18619,32832,43588,2870, 19877,17462,31058,29449,37735,5694, 32001,31057,752, 2445, 24784,19956,17395,7115, 29387,29176,32810,13714,4034, 8997, 38362,
35909,11054,1973, 19796,10098,22100,6144, 6797, 194, 18042,3142, 32832,34117,26329,34504,22099,43588,37078,35601,32154,21299,27717,39077,40734,34794,43588,38369,
- 10141,34075,36205,28369,43587,7844, 32384,23057,12534,450, 3428, 40733,38688,23931,437, 15086,23336,18795,36753,11600,21169,34472,25077,13474,37451,17461,8809,
+ 10141,34075,36205,28369,43587,7844, 32384,23057,12534,450, 3428, 40733,38688,23931,437, 15086,23336,18795,36753,11600,21169,34472,25077,13474,37451,17461,8809,
4218, 36428,25017,5600, 40733,34117,33237,21296,38687,16544,31056,15755,36700,23986,30156,33580,18490,38687,19876,32590,18288,18322,5929, 23656,32831,37129,43587,
34116,2442, 37128,19216,43587,15776,6413, 8116, 34116,12325,2199, 4179, 5088, 13498,18489,2501, 5087, 4798, 7081, 25853,25800,18397,32815,4131, 19477,15940,38687,
13610,43587,28739,34177,2113, 8115, 8247, 34044,38687,15732,43586,14378,38686,20344,27836,43586,43586,40733,15683,34921,33427,6939, 12611,22941,25076,35908,32831,
- 8750, 13497,15754,17450,888, 31211,33723,9435, 17192,23588,8375, 25289,38686,43586,16122,34440,13468,12388,38959,18488,11410,29290,4125, 27712,17460,38628,3033,
+ 8750, 13497,15754,17450,888, 31211,33723,9435, 17192,23588,8375, 25289,38686,43586,16122,34440,13468,12388,38959,18488,11410,29290,4125, 27712,17460,38628,3033,
30030,33244,36244,5645, 43585,15304,3749, 9509, 32207,33833,33536,34573,35640,37182,36577,37732,38667,13469,16811,18716,21891,24056,26269,28036,30241,21300,21331,
- 32782,20512,10694,33377,38193,40733,38950,6260, 40732,38686,34116,38994,32831,22510,33133,34707,28051,229, 32055,22121,25282,28291,32790,30670,15648,19916,1972,
+ 32782,20512,10694,33377,38193,40733,38950,6260, 40732,38686,34116,38994,32831,22510,33133,34707,28051,229, 32055,22121,25282,28291,32790,30670,15648,19916,1972,
11926,18487,36893,10204,6784, 7386, 8066, 37981,35753,16132,7294, 34116,24618,12624,9509, 39201,11925,16947,37128,25220,12952,35944,15120,31354,17157,36139,34448,
20317,33678,9691, 4820, 11340,148, 9042, 27653,28319,24621,3297, 33331,6412, 40732,40732,7524, 33427,19215,34772,18486,736, 35289,23930,9479, 38686,2672, 40732,
7080, 26328,1012, 33164,4408, 40731,25588,23635,43585,43585,34991,8065, 12590,33427,9621, 14958,10331,36449,43585,32967,35216,13927,34115,31055,11409,3979, 38685,
@@ -14170,125 +14165,125 @@ static const unsigned short Ranks[197839] =
12262,12261,43583,38685,35908,43583,38684,33912,31054,43582,38684,38684,25072,43582,37128,7060, 32830,32830,31053,37127,34920,38684,34115,43582,29287,16989,34920,
43582,34920,43581,38683,27716,43581,32830,34115,32829,23928,38683,29286,35908,18038,1106, 38683,33426,29378,2462, 593, 40730,40730,6823, 17449,35063,31052,15324,
34114,515, 3460, 39328,38068,7244, 13085,24704,12022,38588,35907,8291, 33373,31051,18484,21329,31451,4478, 18618,13995,43581,20636,19309,11622,103, 32895,34919,
- 36450,38739,40730,39022,35907,856, 38965,28806,10686,11621,43581,6087, 29285,78, 20500,40730,26327,23927,3375, 35466,10965,20558,30468,33426,18543,10970,1783,
+ 36450,38739,40730,39022,35907,856, 38965,28806,10686,11621,43581,6087, 29285,78, 20500,40730,26327,23927,3375, 35466,10965,20558,30468,33426,18543,10970,1783,
40729,38442,10333,26326,34919,19441,2597, 796, 14613,1605, 19708,27715,34114,37127,8630, 10124,23926,43580,27714,11000,43580,38563,12271,13496,35907,40729,34626,
21460,337, 12706,27986,32829,38964,27713,37127,26325,33450,6957, 18483,40729,9620, 33062,7470, 2975, 12895,7120, 1870, 26863,5473, 4571, 20398,6818, 7379, 43580,
3769, 37127,7428, 13072,20025,35907,16481,15300,2868, 3268, 10111,28307,8808, 2801, 18482,6241, 16543,40729,9321, 18818,7427, 38588,38756,33088,2240, 23204,40728,
3817, 3187, 2142, 28123,30187,34424,1682, 8953, 12915,19682,3557, 603, 1944, 2600, 4711, 23752,33935,33603,35606,24808,29233,3743, 4902, 7855, 26324,224, 10929,
136, 10101,32955,34911,1916, 33438,33571,34086,3001, 19562,29705,16199,33426,19874,2306, 3748, 18037,32829,29284,39309,4072, 31050,1277, 7219, 2968, 29283,37126,
- 33426,40728,12260,8289, 22068,33218,17130,5673, 436, 15031,27618,6919, 11861,38335,619, 37196,38745,34555,15119,8402, 21328,18617,20556,16130,7389, 34919,48,
+ 33426,40728,12260,8289, 22068,33218,17130,5673, 436, 15031,27618,6919, 11861,38335,619, 37196,38745,34555,15119,8402, 21328,18617,20556,16130,7389, 34919,48,
16721,16131,34736,7059, 39307,9619, 4653, 38812,9731, 13077,33425,25071,13642,43580,38375,34777,29325,35923,21295,40728,40728,23925,10623,38212,8064, 29220,38107,
37666,43579,43579,43579,37653,38671,7441, 35906,26323,16542,43579,20555,32829,18692,38758,6240, 24749,32828,12589,43578,39096,35906,4074, 20053,13766,38145,33567,
38683,4561, 15406,32828,17459,34519,26322,43578,36245,36105,9196, 1542, 4830, 38730,29941,35607,38682,5867, 43578,379, 43578,37126,17458,950, 35976,10896,38728,
11285,1565, 10762,33821,33525,19436,36408,35228,33476,2797, 14584,34243,23096,20214,5524, 6478, 17606,13298,25150,26330,17485,6486, 36142,34053,43577,17448,39169,
- 39004,1746, 34919,28314,43577,1028, 21737,580, 38145,9451, 30046,19925,3177, 5263, 43577,7243, 37414,33925,35199,15629,1062, 32828,15323,6244, 15118,38782,8083,
+ 39004,1746, 34919,28314,43577,1028, 21737,580, 38145,9451, 30046,19925,3177, 5263, 43577,7243, 37414,33925,35199,15629,1062, 32828,15323,6244, 15118,38782,8083,
2034, 17027,4251, 8625, 15351,24090,3232, 34918,40727,43577,43576,38682,40727,16988,26538,6522, 43576,40727,2891, 20974,38055,35806,33308,11673,23616,33203,11018,
14389,4241, 5176, 11511,1249, 31049,5978, 27712,20554,34114,958, 23924,1450, 38682,5045, 21819,26853,36168,5466, 34918,35202,38388,34601,14413,38628,35614,33449,
- 980, 8583, 33594,33578,19055,7952, 43576,846, 18544,36188,2042, 24152,34433,4764, 17447,2791, 4715, 36826,10483,34114,34918,18111,1258, 3117, 27703,33425,9342,
+ 980, 8583, 33594,33578,19055,7952, 43576,846, 18544,36188,2042, 24152,34433,4764, 17447,2791, 4715, 36826,10483,34114,34918,18111,1258, 3117, 27703,33425,9342,
43576,2259, 18481,12205,1640, 12092,37636,17457,3985, 15117,24185,34544,16845,21943,34918,40727,13209,13994,9898, 4414, 38682,1219, 12285,10652,9672, 12373,15116,
26230,35125,15197,11323,32828,34807,19214,14612,35456,1676, 5423, 34263,15018,21059,4165, 1068, 4712, 9690, 4015, 6485, 22894,38681,478, 36497,13993,21327,21326,
5857, 38757,6780, 13412,37126,20697,51, 21802,5029, 4006, 43575,4478, 18480,33003,3889, 8576, 7545, 20479,24525,7529, 1032, 35906,33425,5373, 34662,35906,15753,
- 33335,6369, 1627, 33443,32896,11620,33759,21325,364, 2926, 14160,32545,35562,16541,6767, 15115,1444, 24939,903, 7636, 7749, 15114,2985, 9508, 4094, 36864,1439,
+ 33335,6369, 1627, 33443,32896,11620,33759,21325,364, 2926, 14160,32545,35562,16541,6767, 15115,1444, 24939,903, 7636, 7749, 15114,2985, 9508, 4094, 36864,1439,
12353,24312,10707,7321, 25127,1633, 16911,32482,39299,28751,1753, 198, 16540,40726,32827,40726,35905,13700,16313,37126,33587,16559,29282,37125,40726,33065,32944,
- 18920,31048,23564,22939,29281,5224, 10332,35067,608, 21014,27982,5911, 37085,4933, 2309, 15752,857, 33223,3971, 15625,36928,2940, 8374, 10096,1731, 9057, 4404,
- 34966,15113,22077,4751, 6650, 8641, 7403, 7784, 17864,6435, 6911, 2887, 7490, 16340,8926, 10774,12259,9530, 24357,18479,38078,8604, 29054,31462,35902,17446,2026,
+ 18920,31048,23564,22939,29281,5224, 10332,35067,608, 21014,27982,5911, 37085,4933, 2309, 15752,857, 33223,3971, 15625,36928,2940, 8374, 10096,1731, 9057, 4404,
+ 34966,15113,22077,4751, 6650, 8641, 7403, 7784, 17864,6435, 6911, 2887, 7490, 16340,8926, 10774,12259,9530, 24357,18479,38078,8604, 29054,31462,35902,17446,2026,
7378, 3104, 27354,28783,4493, 5470, 2533, 5673, 2965, 37125,2054, 614, 33635,39398,19793,14302,28028,17917,3707, 4222, 40726,39314,43575,8979, 13992,17445,33425,
33424,15112,11924,37125,14769,19488,25777,16400,610, 1354, 1922, 4187, 7143, 36741,4494, 1697, 15111,1663, 6482, 10051,34339,1396, 436, 29348,3168, 3910, 15751,
- 27550,17444,36231,38934,7689, 7056, 9619, 4637, 15202,16539,339, 30674,23532,13991,13865,34537,944, 9865, 2458, 1680, 6910, 5458, 36548,32781,39049,22184,1550,
+ 27550,17444,36231,38934,7689, 7056, 9619, 4637, 15202,16539,339, 30674,23532,13991,13865,34537,944, 9865, 2458, 1680, 6910, 5458, 36548,32781,39049,22184,1550,
5684, 33081,27816,38732,3009, 10001,15248,4695, 1515, 1387, 18707,12258,30748,17443,5776, 11599,31111,5349, 1269, 4397, 25735,36529,1027, 223, 22507,12837,28356,
9897, 8418, 4938, 9996, 27607,13218,37629,37125,6348, 36923,38675,43575,36539,39378,38532,36668,14548,32766,7058, 10329,29209,3286, 37474,21984,37446,27148,34238,
- 30158,19792,34252,12623,43575,33905,13356,37124,33042,21294,43574,622, 3200, 5652, 7549, 112, 37782,34970,136, 4349, 13577,26359,20480,36685,4237, 32337,4681,
- 6981, 33760,2494, 1113, 8084, 4797, 2651, 6296, 43574,6545, 9689, 37018,4026, 26872,29203,2686, 4050, 7297, 4204, 12454,17129,38681,43574,43574,13495,5223, 5745,
+ 30158,19792,34252,12623,43575,33905,13356,37124,33042,21294,43574,622, 3200, 5652, 7549, 112, 37782,34970,136, 4349, 13577,26359,20480,36685,4237, 32337,4681,
+ 6981, 33760,2494, 1113, 8084, 4797, 2651, 6296, 43574,6545, 9689, 37018,4026, 26872,29203,2686, 4050, 7297, 4204, 12454,17129,38681,43574,43574,13495,5223, 5745,
17442,11689,7172, 8525, 31449,15750,3336, 38041,37129,19068,38913,33424,1669, 929, 8264, 26266,16788,14173,4906, 35868,4892, 2132, 484, 1936, 2186, 17062,10606,
4440, 3407, 25070,16538,2087, 7286, 10346,3049, 7592, 14194,20269,7866, 43573,18478,17441,2535, 29168,34972,4735, 17440,2326, 12257,3313, 3966, 35780,4951, 33212,
7338, 37324,10624,20959,15325,668, 476, 488, 16233,10571,2604, 2060, 16765,705, 5439, 8524, 15387,4061, 4631, 9073, 6243, 1088, 11598,12622,6909, 3115, 16537,
- 15608,11865,19009,2299, 7334, 10557,11040,3862, 37548,30921,5453, 19173,14262,2227, 1878, 38681,12588,6793, 823, 1425, 3298, 17972,5947, 4434, 14444,29262,1549,
+ 15608,11865,19009,2299, 7334, 10557,11040,3862, 37548,30921,5453, 19173,14262,2227, 1878, 38681,12588,6793, 823, 1425, 3298, 17972,5947, 4434, 14444,29262,1549,
12055,2930, 35347,13036,16253,22525,13494,2765, 11939,18009,3389, 6991, 37850,18477,28348,8978, 2451, 19229,10331,21324,43573,11322,6383, 32816,35661,34322,26163,
4833, 12621,23702,10749,18942,5149, 4068, 2772, 3297, 2500, 3566, 10330,5801, 38507,37124,778, 10352,11923,5800, 17439,35096,5207, 10826,31539,35088,21938,13642,
19610,7875, 5530, 20464,16378,2574, 18352,7959, 51, 5543, 29789,27416,38171,11788,2593, 23838,3385, 5035, 7333, 38998,35905,34131,21323,39307,2592, 7446, 33453,
33424,28669,6622, 32815,37709,35562,34412,34958,23956,1591, 43573,37716,34417,35905,37702,34363,17968,30123,38681,32660,4301, 9300, 5556, 9212, 23923,35020,11408,
26321,40725,3493, 12324,35785,20571,8274, 11321,40725,36245,31952,9436, 7861, 6544, 19791,11597,17438,26925,6908, 7180, 26995,11297,25006,27477,9896, 9175, 17437,
- 5520, 3592, 34081,17436,1471, 3192, 11750,5262, 2371, 4952, 34621,12115,705, 43573,1017, 2956, 14728,2832, 6096, 36485,28650,35519,18749,36871,15988,1138, 671,
+ 5520, 3592, 34081,17436,1471, 3192, 11750,5262, 2371, 4952, 34621,12115,705, 43573,1017, 2956, 14728,2832, 6096, 36485,28650,35519,18749,36871,15988,1138, 671,
2457, 1957, 1117, 33944,13710,26263,29698,32919,39007,23234,4797, 11649,2076, 43572,6578, 36021,37231,7212, 908, 15749,3601, 40725,37124,2106, 35182,33495,33395,
38381,35905,7982, 35274,37631,18715,21854,43572,43572,13211,36737,11147,34261,6411, 1804, 5264, 6181, 2570, 2809, 6761, 14502,15748,10329,18476,11922,34690,22515,
38408,3762, 25773,39071,19223,3596, 16786,8885, 22888,10257,31704,1128, 34254,36434,12922,18900,9174, 15804,19976,8352, 5887, 6285, 20801,33671,38164,3949, 21322,
37295,38680,39118,37395,5170, 43572,36352,22938,6242, 9625, 35326,3758, 9895, 19840,22219,36191,11921,27445,9508, 19011,35672,33342,23957,8749, 15747,6760, 40725,
- 22937,13348,40724,18475,16536,40724,43571,10835,23037,28142,972, 6861, 28820,8563, 5656, 21321,4551, 884, 26320,3174, 26166,16535,5034, 2194, 12065,13558,3838,
- 2566, 7079, 21320,13990,1276, 26729,28037,11921,35947,16987,34113,43571,29280,13926,15322,40724,27711,14184,2055, 21763,1062, 3313, 12015,13424,10969,25228,3066,
+ 22937,13348,40724,18475,16536,40724,43571,10835,23037,28142,972, 6861, 28820,8563, 5656, 21321,4551, 884, 26320,3174, 26166,16535,5034, 2194, 12065,13558,3838,
+ 2566, 7079, 21320,13990,1276, 26729,28037,11921,35947,16987,34113,43571,29280,13926,15322,40724,27711,14184,2055, 21763,1062, 3313, 12015,13424,10969,25228,3066,
7854, 6281, 25069,11320,27759,36665,2742, 32827,17568,23350,10232,33424,31047,43571,21294,35267,37124,10482,34113,8373, 25357,36404,40724,4593, 43571,16534,43570,
- 40723,32433,35307,15198,34841,33060,31310,6393, 2610, 33145,8174, 3825, 14319,7440, 514, 3061, 18846,38046,5536, 18562,17633,1750, 2327, 8032, 4601, 1565, 8372,
+ 40723,32433,35307,15198,34841,33060,31310,6393, 2610, 33145,8174, 3825, 14319,7440, 514, 3061, 18846,38046,5536, 18562,17633,1750, 2327, 8032, 4601, 1565, 8372,
8490, 13064,13493,9894, 12620,38274,4246, 5799, 16986,1623, 17435,2153, 3214, 4393, 15110,20424,15109,9688, 10828,26424,33064,3293, 7648, 21866,9099, 34324,11596,
4737, 8377, 11319,17434,2383, 3984, 35611,37558,1357, 7078, 5295, 11318,6437, 21319,14331,34877,21318,29304,25890,34184,1317, 8977, 7396, 3310, 4995, 33616,37448,
- 8347, 18089,27729,13122,19595,33301,40723,21212,15841,23357,11494,20951,15321,38680,21317,15746,30057,37358,22723,43570,2917, 5413, 16533,13375,4321, 8807, 6165,
+ 8347, 18089,27729,13122,19595,33301,40723,21212,15841,23357,11494,20951,15321,38680,21317,15746,30057,37358,22723,43570,2917, 5413, 16533,13375,4321, 8807, 6165,
10874,14760,13312,4000, 1055, 11317,2285, 20712,3308, 35285,3084, 16532,26207,6861, 37089,19790,12256,9690, 3727, 14099,6988, 21447,30701,27710,8250, 19041,33814,
3231, 10751,7548, 3019, 12619,33245,8669, 809, 30833,27871,19313,31225,38031,2622, 7133, 22408,33512,5554, 34912,36417,728, 7576, 2612, 39159,3722, 11039,10328,
28582,34113,22706,19043,18736,8558, 21623,31125,15333,13524,16698,16558,12323,18036,34831,28977,33654,7734, 15458,20308,15745,37837,34987,8371, 11807,17453,34971,
14132,35551,38108,3267, 28313,38003,36315,34961,31618,5907, 9320, 19789,8668, 18474,11595,23922,9591, 26319,35904,10834,1157, 14957,37123,43570,29279,11920,43570,
- 16557,447, 38680,6521, 31046,40723,4714, 37123,9671, 19236,38278,34917,1334, 33089,9394, 37578,7878, 27200,43569,13727,21293,33423,37668,1155, 10103,24790,1214,
+ 16557,447, 38680,6521, 31046,40723,4714, 37123,9671, 19236,38278,34917,1334, 33089,9394, 37578,7878, 27200,43569,13727,21293,33423,37668,1155, 10103,24790,1214,
33212,14117,1863, 2471, 1142, 2433, 14627,36587,7347, 32049,6785, 10814,3009, 6057, 34917,34917,1531, 27709,35541,1409, 22936,28406,357, 28714,40723,35904,38680,
3726, 29278,43569,11792,37123,38679,22935,43569,31237,22479,37317,40722,18932,25417,106, 10147,20553,35904,6850, 43569,37123,18473,38481,5655, 37122,28175,13492,
- 29983,34113,1134, 37122,19873,581, 13553,26273,29571,1564, 16018,12785,34532,25425,43568,35136,37122,40722,32827,43568,38277,13288,23490,37122,40722,3046, 4862,
+ 29983,34113,1134, 37122,19873,581, 13553,26273,29571,1564, 16018,12785,34532,25425,43568,35136,37122,40722,32827,43568,38277,13288,23490,37122,40722,3046, 4862,
3937, 9687, 9491, 18801,12255,3136, 10593,36163,21778,35145,21185,399, 29680,34917,37419,40722,34916,15351,29277,38679,34112,35319,29276,1855, 18616,5959, 25068,
- 34963,15108,1805, 38567,9319, 39306,34999,2703, 8667, 3198, 28043,14409,8796, 16326,29740,4481, 38028,8267, 34325,17550,1610, 12592,14051,15848,15097,13035,3798,
- 3655, 12254,12253,40721,28103,3399, 1877, 10836,25876,38437,2948, 34112,9737, 1692, 18068,21187,11504,1226, 31321,4006, 10194,22781,25585,31787,20651,29363,4127,
+ 34963,15108,1805, 38567,9319, 39306,34999,2703, 8667, 3198, 28043,14409,8796, 16326,29740,4481, 38028,8267, 34325,17550,1610, 12592,14051,15848,15097,13035,3798,
+ 3655, 12254,12253,40721,28103,3399, 1877, 10836,25876,38437,2948, 34112,9737, 1692, 18068,21187,11504,1226, 31321,4006, 10194,22781,25585,31787,20651,29363,4127,
9318, 7214, 34414,17842,34581,856, 1914, 3475, 4372, 3197, 5920, 337, 1237, 3819, 12322,43568,13989,19213,22958,25170,2881, 1437, 6665, 2853, 3695, 1609, 15961,
812, 27708,37643,3787, 35904,4184, 15107,7827, 43568,8633, 3760, 36905,12499,5910, 36354,13491,21292,29275,38679,34788,6881, 33049,6803, 5341, 37121,29738,15106,
4291, 17407,24839,36967,7628, 20649,13988,2602, 13490,36114,10450,12252,6849, 36836,6347, 38598,2268, 12575,9720, 21695,229, 40721,31806,33064,1858, 19096,19872,
- 31070,10288,4689, 38679,34358,38678,38843,6520, 3993, 17901,2446, 9953, 32827,37767,40721,5427, 11038,20863,40721,15744,17433,34307,4421, 1459, 4500, 8315, 4105,
- 4375, 6426, 11201,1190, 2056, 35236,33155,13402,13390,11121,20001,25234,9822, 34517,36313,9124, 5232, 38765,25837,24236,21316,16089,3270, 893, 34753,5610, 392,
- 37376,7602, 6543, 34564,23673,22501,14620,13000,10133,11919,32826,2105, 544, 4721, 11412,4523, 15574,14686,15836,3443, 31151,26821,35691,8286, 3254, 7810, 5958,
+ 31070,10288,4689, 38679,34358,38678,38843,6520, 3993, 17901,2446, 9953, 32827,37767,40721,5427, 11038,20863,40721,15744,17433,34307,4421, 1459, 4500, 8315, 4105,
+ 4375, 6426, 11201,1190, 2056, 35236,33155,13402,13390,11121,20001,25234,9822, 34517,36313,9124, 5232, 38765,25837,24236,21316,16089,3270, 893, 34753,5610, 392,
+ 37376,7602, 6543, 34564,23673,22501,14620,13000,10133,11919,32826,2105, 544, 4721, 11412,4523, 15574,14686,15836,3443, 31151,26821,35691,8286, 3254, 7810, 5958,
12704,10101,6849, 3736, 19788,35284,35247,7276, 4392, 1048, 20040,38718,3624, 12251,7081, 7547, 11918,33240,2907, 11917,946, 3114, 6687, 29730,2951, 19492,25181,
4621, 1679, 18384,1473, 4965, 6715, 1390, 7332, 672, 26040,13301,11916,6848, 18472,6792, 35655,27763,3836, 37121,26318,9173, 13096,23905,8114, 14660,16800,31389,
- 34947,35857,13319,33197,5678, 935, 3565, 15743,32328,10181,9949, 7082, 8992, 17158,12886,1122, 21315,6747, 36527,9801, 13034,34112,3627, 25067,35903,33496,3374,
+ 34947,35857,13319,33197,5678, 935, 3565, 15743,32328,10181,9949, 7082, 8992, 17158,12886,1122, 21315,6747, 36527,9801, 13034,34112,3627, 25067,35903,33496,3374,
1466, 4417, 3729, 2361, 9317, 5361, 27730,1879, 6331, 14689,2861, 37053,8529, 39326,3603, 2206, 36140,6367, 40720,18471,7077, 5721, 17179,25066,43567,35453,10088,
5537, 9686, 4752, 32817,966, 334, 1087, 1899, 37291,4717, 17415,2354, 3826, 8542, 43567,27707,43567,38678,34916,7174, 21291,6227, 35848,15259,5552, 8806, 31110,
36208,14181,18232,18470,638, 3944, 33589,38713,8007, 7076, 5189, 5239, 6104, 2914, 9516, 28015,9893, 12858,17432,10228,13499,9989, 17401,31127,27774,8666, 34227,
23205,12250,38994,28487,43567,38214,38948,2610, 26152,26159,1778, 8020, 8085, 33947,8082, 34916,35477,38192,35743,26460,24025,32826,34112,38678,22571,494, 40720,
- 43566,43566,38678,3189, 1479, 5831, 2733, 2264, 1819, 4344, 5561, 23595,37121,21314,15742,17173,25896,329, 7833, 26223,32983,30030,20727,1418, 4318, 7581, 3082,
+ 43566,43566,38678,3189, 1479, 5831, 2733, 2264, 1819, 4344, 5561, 23595,37121,21314,15742,17173,25896,329, 7833, 26223,32983,30030,20727,1418, 4318, 7581, 3082,
2870, 2021, 35511,11225,5649, 1626, 13489,13488,10556,18622,11845,18319,30288,23981,36867,7835, 16829,10327,6856, 25194,18469,4049, 29190,38677,2397, 5124, 21200,
- 25709,4209, 1243, 2415, 12021,4166, 33929,17698,33788,34916,9863, 16786,6782, 13065,15479,17040,35717,722, 14501,15105,3196, 5169, 36254,6573, 38009,16531,2404,
- 8908, 36287,3689, 1446, 9883, 15913,37948,4669, 15104,5758, 6913, 15717,6668, 33902,7014, 20692,39269,37028,8539, 14127,13487,34769,14269,3530, 2173, 38339,3411,
+ 25709,4209, 1243, 2415, 12021,4166, 33929,17698,33788,34916,9863, 16786,6782, 13065,15479,17040,35717,722, 14501,15105,3196, 5169, 36254,6573, 38009,16531,2404,
+ 8908, 36287,3689, 1446, 9883, 15913,37948,4669, 15104,5758, 6913, 15717,6668, 33902,7014, 20692,39269,37028,8539, 14127,13487,34769,14269,3530, 2173, 38339,3411,
5798, 9136, 34111,1031, 1161, 6759, 2483, 15904,13307,39047,34151,16530,20715,3241, 7600, 19787,16529,571, 6086, 32826,40720,18616,16556,3247, 28000,34916,43566,
- 43566,22934,7748, 26972,6694, 29821,37121,27706,43565,13925,34770,43565,13987,54, 10095,21313,855, 2624, 8388, 40720,33595,15341,43565,37337,7538, 95, 3883,
+ 43566,22934,7748, 26972,6694, 29821,37121,27706,43565,13925,34770,43565,13987,54, 10095,21313,855, 2624, 8388, 40720,33595,15341,43565,37337,7538, 95, 3883,
27540,13673,27684,26443,23489,16051,912, 11758,7546, 1612, 22926,18615,37120,32785,2890, 3835, 37120,7967, 34627,35882,38677,32697,29928,375, 26620,8880, 19804,
6626, 6357, 23044,26736,29127,20829,12194,43565,38451,14752,16555,9239, 15789,43564,8960, 27480,43564,4553, 29933,1239, 5954, 1599, 11915,3846, 739, 24488,34575,
- 7963, 2519, 20153,6009, 8290, 12097,34764,21312,4406, 1308, 23792,14569,21311,1946, 20386,36392,3398, 9061, 11594,23991,35907,17456,37120,21290,3133, 5977, 9618,
+ 7963, 2519, 20153,6009, 8290, 12097,34764,21312,4406, 1308, 23792,14569,21311,1946, 20386,36392,3398, 9061, 11594,23991,35907,17456,37120,21290,3133, 5977, 9618,
43564,1493, 29274,13398,33423,14791,27705,34915,38677,2428, 37120,34111,43564,37119,38677,8748, 3611, 40719,33423,17168,4796, 40719,11938,5569, 60, 5478, 26432,
- 23561,26209,38624,2665, 10945,19176,6010, 2303, 37587,3859, 23729,10861,40719,13076,35903,10435,22933,35903,21952,33423,43563,40719,37778,34915,23921,4827, 5218,
+ 23561,26209,38624,2665, 10945,19176,6010, 2303, 37587,3859, 23729,10861,40719,13076,35903,10435,22933,35903,21952,33423,43563,40719,37778,34915,23921,4827, 5218,
3829, 7311, 4687, 4091, 18674,19786,38676,29137,5047, 21555,13769,19234,26190,20805,32911,9172, 39219,21973,2139, 26240,12249,9341, 13347,34915,779, 4250, 27081,
- 19785,29685,12832,27704,33432,1288, 34983,38676,399, 36343,19127,29273,25065,19212,6200, 3474, 7058, 31045,38921,26057,26896,33221,15741,10667,14956,36723,5612,
+ 19785,29685,12832,27704,33432,1288, 34983,38676,399, 36343,19127,29273,25065,19212,6200, 3474, 7058, 31045,38921,26057,26896,33221,15741,10667,14956,36723,5612,
13986,1371, 13985,7159, 17458,18468,16554,15716,25064,43563,38219,3102, 13346,27703,40718,36867,36284,43563,12587,12390,7619, 31653,10773,10666,34285,33422,35903,
336, 8432, 36280,31898,31114,12248,19784,38043,38514,35902,35361,19783,13984,34111,37875,40718,37119,32863,34268,12321,13486,13641,9617, 38676,9340, 3808, 35902,
34915,28566,33834,37272,739, 16528,31835,34590,40718,13485,9203, 29890,25879,36986,20721,39146,33422,1076, 9892, 8976, 30470,39115,35745,3402, 12644,15246,26385,
38733,31928,34357,21134,9171, 302, 38453,29898,38987,43563,33422,40718,38676,1437, 2793, 3115, 38789,37931,43562,12822,19871,37119,32826,40717,6283, 1883, 37119,
32819,23920,14955,36863,16553,35019,34914,32302,39215,17326,953, 33422,38629,1042, 34914,34111,3675, 40717,13345,23919,43562,18096,9743, 33382,15320,35902,35902,
- 1646, 40717,3761, 29272,37256,37118,23918,35901,43562,37465,15740,43562,35650,5168, 43561,1211, 921, 33847,40717,4673, 43561,1294, 5401, 14500,40716,3373, 8975,
+ 1646, 40717,3761, 29272,37256,37118,23918,35901,43562,37465,15740,43562,35650,5168, 43561,1211, 921, 33847,40717,4673, 43561,1294, 5401, 14500,40716,3373, 8975,
16527,2596, 25063,40716,37118,11743,35213,33976,8629, 11593,25062,6585, 10481,38675,34914,21310,38675,34110,943, 37118,35901,32825,11619,27702,9170, 31044,12618,
- 37118,3703, 1381, 29373,12320,32825,2104, 37117,34198,35901,18035,28860,33421,1677, 9202, 34914,2085, 174, 12278,40716,33626,35901,13311,8221, 23091,37117,1140,
+ 37118,3703, 1381, 29373,12320,32825,2104, 37117,34198,35901,18035,28860,33421,1677, 9202, 34914,2085, 174, 12278,40716,33626,35901,13311,8221, 23091,37117,1140,
8980, 18467,43561,43561,43560,38675,2305, 12586,23917,34462,852, 784, 34913,1429, 524, 34913,10161,38743,11164,11232,1250, 34813,34129,26471,37117,34110,32973,
- 43560,3035, 38675,16130,26317,12831,18979,26746,22932,37117,12247,29271,40716,21309,10094,32825,2518, 18722,15715,11407,35900,3313, 38412,26316,13075,15714,1333,
- 2277, 37727,17906,14954,13074,26315,43560,43560,1244, 19216,19849,2370, 38674,43559,35701,13033,12894,15739,4242, 37116,15738,16697,37116,9169, 35900,28511,4053,
+ 43560,3035, 38675,16130,26317,12831,18979,26746,22932,37117,12247,29271,40716,21309,10094,32825,2518, 18722,15715,11407,35900,3313, 38412,26316,13075,15714,1333,
+ 2277, 37727,17906,14954,13074,26315,43560,43560,1244, 19216,19849,2370, 38674,43559,35701,13033,12894,15739,4242, 37116,15738,16697,37116,9169, 35900,28511,4053,
20350,667, 34110,37116,12528,6788, 23477,403, 652, 17438,40715,43559,37116,34913,1107, 10018,37566,5611, 21308,3612, 7931, 30976,43559,14201,1217, 35900,13344,
18614,21542,13983,16643,19782,37115,22931,28645,6871, 10827,15103,24042,36675,14817,10530,22850,36449,31043,31042,13073,2313, 10833,34730,40715,40715,34913,12830,
36410,21307,35732,29270,3581, 10093,2274, 4975, 36727,19781,43559,3646, 20196,36351,22518,33421,852, 20499,1677, 34221,23808,7545, 24262,4588, 33651,36555,26962,
7293, 4600, 19780,12880,40715,28961,35878,8137, 6730, 40714,26314,43558,24597,40714,33117,32802,35957,3267, 33449,31041,29574,1850, 35064,897, 3951, 35367,36344,
- 21306,43558,22098,891, 3227, 6056, 16526,5018, 38726,7292, 7966, 26313,33421,22097,2170, 20442,2967, 5400, 12714,18613,43558,30968,38674,1076, 38674,43558,1218,
- 5654, 12246,5568, 7114, 7782, 13350,3312, 15185,33919,27076,32825,34940,22224,31904,3365, 19211,35900,37115,40714,13992,8582, 15463,32954,6037, 14493,37900,4474,
- 43557,37115,43557,25061,38674,5937, 9392, 3984, 21090,4072, 11859,2617, 16557,5187, 43557,27701,30887,40714,34912,38112,38673,33421,40713,43557,3637, 8963, 1273,
+ 21306,43558,22098,891, 3227, 6056, 16526,5018, 38726,7292, 7966, 26313,33421,22097,2170, 20442,2967, 5400, 12714,18613,43558,30968,38674,1076, 38674,43558,1218,
+ 5654, 12246,5568, 7114, 7782, 13350,3312, 15185,33919,27076,32825,34940,22224,31904,3365, 19211,35900,37115,40714,13992,8582, 15463,32954,6037, 14493,37900,4474,
+ 43557,37115,43557,25061,38674,5937, 9392, 3984, 21090,4072, 11859,2617, 16557,5187, 43557,27701,30887,40714,34912,38112,38673,33421,40713,43557,3637, 8963, 1273,
22441,29204,33420,3162, 35899,40713,3678, 1781, 703, 40713,3372, 40713,35899,38049,6085, 8523, 18008,34527,19779,38566,34226,43556,8512, 16525,38673,35539,12123,
- 4741, 8246, 13484,2748, 37285,39117,6990, 18278,8370, 3323, 28401,23566,28910,31200,33420,32824,38673,17502,35899,43556,14655,34017,38673,43556,37560,10186,8851,
+ 4741, 8246, 13484,2748, 37285,39117,6990, 18278,8370, 3323, 28401,23566,28910,31200,33420,32824,38673,17502,35899,43556,14655,34017,38673,43556,37560,10186,8851,
17363,36788,43556,31040,34912,6239, 5746, 37115,13640,37368,35646,20096,34088,21289,1364, 7877, 43555,6129, 427, 34449,12359,38275,35141,27332,40712,8344, 34275,
9742, 40712,35899,20792,37070,11984,3190, 31039,936, 33420,31639,40712,37522,15319,37254,37114,40712,6519, 15409,33140,21505,38517,15068,20782,38672,36192,43555,
35898,17201,7452, 7657, 14302,76, 24265,13882,38672,33846,36178,15318,23916,23101,10772,34541,11719,40711,3859, 18466,214, 31945,36314,37114,16986,37641,38672,
17455,29269,3816, 18578,43555,37436,2461, 43555,20552,35898,37114,35367,35898,8064, 16129,28930,9087, 32320,38672,31038,3465, 36062,40711,24111,40711,43554,19778,
- 34552,43554,15903,21838,39203,17454,11542,38671,35898,37114,21305,38671,38671,40711,40710,40710,27349,4557, 6847, 37500,3088, 33498,3335, 19777,33036,2117, 6884,
+ 34552,43554,15903,21838,39203,17454,11542,38671,35898,37114,21305,38671,38671,40711,40710,40710,27349,4557, 6847, 37500,3088, 33498,3335, 19777,33036,2117, 6884,
26382,25040,22918,36950,14448,10360,18763,24279,8961, 36506,17266,32080,1280, 11860,6306, 27095,36034,38002,6860, 34912,43554,43554,10697,10089,23915,38671,34912,
38670,31037,40710,12091,9339, 20009,16270,35897,27700,764, 920, 34911,26312,37113,11125,11859,34911,38670,14953,3410, 43553,7218, 33532,7834, 12669,39362,15077,
- 20296,36891,37007,43553,33420,22930,36974,1091, 43553,35897,43553,16128,13072,11211,16127,23914,11618,37113,5855, 23913,32285,33419,6139, 10665,5291, 1615, 1928,
+ 20296,36891,37007,43553,33420,22930,36974,1091, 43553,35897,43553,16128,13072,11211,16127,23914,11618,37113,5855, 23913,32285,33419,6139, 10665,5291, 1615, 1928,
16266,3472, 34055,43552,1771, 14499,6907, 2557, 22424,37092,43552,776, 43552,36283,35897,34357,33435,29323,17930,43552,32824,38670,43551,38670,11858,3834, 12829,
18034,34911,8369, 37113,35897,33419,10480,34911,19210,13071,34805,32234,43551,34110,34910,43551,18465,34910,20130,15102,32824,13144,2321, 24602,37883,7036, 27699,
22611,4533, 43551,2700, 32824,33542,31036,34931,35896,37113,26311,43550,5094, 4133, 11857,4848, 29268,742, 24912,16126,37112,38797,34021,14524,1800, 8522, 38669,
- 37112,19209,39214,39190,34937,1048, 35614,37112,15737,18033,36283,40710,39178,29267,13639,22096,32150,558, 12042,33029,3408, 26389,23232,3039, 10555,38669,7544,
+ 37112,19209,39214,39190,34937,1048, 35614,37112,15737,18033,36283,40710,39178,29267,13639,22096,32150,558, 12042,33029,3408, 26389,23232,3039, 10555,38669,7544,
15317,2171, 35896,21304,23912,38669,34910,64, 11592,811, 3275, 12245,228, 18464,23524,37112,33837,26310,34109,20254,5843, 40709,35645,6034, 15713,32823,35896,
1327, 15242,37004,38669,18463,19870,43550,15075,245, 19208,4488, 4733, 10554,33697,35044,11316,15388,3727, 33566,34109,2178, 15736,3335, 38274,13032,8665, 25101,
32823,1915, 7981, 23778,645, 12782,18002,33865,11569,5433, 25206,3861, 35896,19776,1979, 18719,13619,37183,36944,9639, 24449,20374,23558,36413,22955,36752,16994,
@@ -14301,7 +14296,7 @@ static const unsigned short Ranks[197839] =
2692, 19774,36565,36039,35895,32822,31035,13924,40708,27250,43548,9741, 40708,16552,19829,13638,1790, 21288,35894,27698,29265,21287,32822,37083,37930,34108,16292,
27146,23911,43547,17489,21036,43547,4916, 43547,43547,4372, 25060,8978, 16551,25059,7980, 6275, 33260,25467,17165,34910,9622, 40708,4266, 710, 1912, 32866,21302,
16550,35894,866, 36203,19773,1772, 22072,1292, 35894,3329, 16523,38668,21484,13029,29437,10092,9500, 15099,3516, 26308,43546,36607,38668,32822,13923,33422,28593,
- 903, 37111,43546,40707,38668,43546,1949, 22415,866, 6660, 2470, 10091,7075, 7635, 2403, 35283,14535,111, 3316, 23354,22694,141, 28400,1581, 15303,32385,7389,
+ 903, 37111,43546,40707,38668,43546,1949, 22415,866, 6660, 2470, 10091,7075, 7635, 2403, 35283,14535,111, 3316, 23354,22694,141, 28400,1581, 15303,32385,7389,
36375,23113,6659, 24257,43546,33418,37111,29162,38786,25723,17431,33418,3937, 34909,4915, 19207,15098,14497,21346,37206,38668,13343,7702, 5024, 34982,21286,16125,
31698,32822,10664,31034,35894,22778,3747, 3746, 40707,15712,34104,9647, 43545,18462,11315,38816,16702,17490,36762,29339,31326,2875, 43545,26307,31105,62, 19020,
26306,20565,40707,17764,38667,22250,23910,22963,37111,40707,586, 23909,37110,38667,35893,16124,43545,32821,1694, 3101, 29264,37456,881, 26168,10311,22094,12090,
@@ -14317,20 +14312,20 @@ static const unsigned short Ranks[197839] =
19770,37851,38141,33543,22926,40703,40703,37962,43543,6542, 37439,34907,1908, 43542,5204, 6084, 12616,18027,5653, 11313,40703,15735,19939,16135,125, 34535,37234,
38664,2172, 4831, 15850,18459,2259, 18458,2813, 12244,18457,38664,43542,22925,38018,38232,18635,8289, 22092,17283,36456,27696,15652,8559, 10325,18026,3144, 12243,
4620, 5432, 10553,6055, 6009, 318, 1998, 13786,29708,20568,9960, 2182, 16355,28633,17559,25673,21115,31876,33056,27927,6466, 12048,24156,33417,26301,38664,11406,
- 16120,18456,21297,1025, 22648,7859, 3464, 20420,17428,1631, 16520,2140, 20495,22091,33937,26300,29260,12615,21296,31033,21295,11856,15709,11209,7876, 739, 291,
+ 16120,18456,21297,1025, 22648,7859, 3464, 20420,17428,1631, 16520,2140, 20495,22091,33937,26300,29260,12615,21296,31033,21295,11856,15709,11209,7876, 739, 291,
3094, 38664,9223, 1326, 33960,1101, 18055,25305,32102,3150, 10309,26116,299, 17970,17427,36768,5656, 3193, 6233, 2015, 2958, 15423,35808,40702,34907,20551,33995,
33526,19769,37109,13027,20655,37613,33961,4440, 18455,33417,40702,4439, 7158, 43542,962, 28338,31853,1798, 22893,37105,33494,14544,8095, 2033, 12585,13479,10243,
- 1847, 37109,4160, 17374,39156,25058,33467,34108,18454,18453,37108,828, 22840,40702,5882, 23904,8846, 3053, 43542,43541,1989, 10324,7376, 6650, 16519,18452,6054,
+ 1847, 37109,4160, 17374,39156,25058,33467,34108,18454,18453,37108,828, 22840,40702,5882, 23904,8846, 3053, 43542,43541,1989, 10324,7376, 6650, 16519,18452,6054,
21294,3124, 2083, 33417,32820,18611,35893,38663,15316,7073, 40702,43541,40701,43541,25057,29259,2997, 40701,34907,38663,34560,29258,15734,6008, 13026,39090,34905,
32812,11590,37002,8522, 11855,27695,17452,37108,21283,37108,15102,34107,34612,33751,1474, 40701,2911, 7711, 21561,34388,15906,9890, 13637,13980,40701,32819,12242,
- 36420,31928,19869,37815,15733,5190, 40700,19768,33650,34107,31032,40700,43541,34907,31031,10330,37108,2054, 4159, 43540,13342,27821,19205,34057,14260,32819,4161,
- 11447,10877,38293,34107,30450,14591,35408,27130,8521, 38468,21293,6348, 15158,37420,6827, 33515,37107,37107,9355, 15095,34906,29760,21292,38367,32819,18276,8821,
+ 36420,31928,19869,37815,15733,5190, 40700,19768,33650,34107,31032,40700,43541,34907,31031,10330,37108,2054, 4159, 43540,13342,27821,19205,34057,14260,32819,4161,
+ 11447,10877,38293,34107,30450,14591,35408,27130,8521, 38468,21293,6348, 15158,37420,6827, 33515,37107,37107,9355, 15095,34906,29760,21292,38367,32819,18276,8821,
17951,23903,18025,1010, 11083,8152, 19703,18451,35378,22212,12847,1154, 18520,21815,9091, 25986,35390,20550,3597, 40700,7291, 21123,27694,5510, 38663,18450,32975,
19868,10479,39275,8747, 37107,15804,43540,363, 4164, 2932, 10368,17589,10552,19104,37382,34394,27693,13636,2629, 38663,37107,2477, 37394,38662,12241,3894, 18024,
8288, 37106,15315,29947,13979,40700,38662,18449,5842, 749, 7863, 7226, 39212,2180, 22090,34107,1234, 17426,23011,34241,34442,32855,36327,7331, 2732, 34786,14023,
19767,8977, 13478,1270, 9336, 38662,8172, 33416,13477,38662,21282,15732,36828,32046,32616,14494,11405,15094,7618, 35893,5797, 5652, 13918,18448,10769,14259,11037,
43540,2096, 34106,25056,40699,38661,34906,16985,35892,31030,17763,25055,35892,2709, 8985, 38993,1617, 10185,23902,12584,35892,37106,26299,1854, 28901,26298,35892,
- 16518,12319,8972, 23901,43540,18447,33839,6278, 4945, 21291,39279,40699,43539,35891,7965, 37106,2404, 2477, 2051, 1304, 27692,34906,35720,40699,43539,43539,2595,
+ 16518,12319,8972, 23901,43540,18447,33839,6278, 4945, 21291,39279,40699,43539,35891,7965, 37106,2404, 2477, 2051, 1304, 27692,34906,35720,40699,43539,43539,2595,
38932,1794, 10375,635, 34617,9142, 2567, 1861, 418, 1521, 40699,11178,903, 3620, 43539,38661,32805,953, 34781,1133, 36691,3654, 16517,43538,34906,10663,29257,
9476, 22089,3116, 6751, 21790,4944, 2011, 35725,895, 30281,3894, 16516,3680, 24169,14080,1706, 5762, 5519, 2023, 12645,7847, 1153, 6086, 19755,12093,33452,43538,
3364, 9337, 2380, 28359,12614,26297,29256,27691,32819,43538,40698,40698,14258,2816, 22263,29171,13635,34799,36585,37106,34905,38906,11912,16515,19766,16514,35891,
@@ -14342,16 +14337,16 @@ static const unsigned short Ranks[197839] =
11011,13920,13634,43536,10476,20547,35890,37104,37104,317, 18172,19867,18038,34205,7072, 38372,33721,36934,35031,21288,33128,14565,1557, 11615,32818,2758, 13341,
27688,17636,7330, 32818,17423,21287,1738, 7149, 6360, 5167, 13919,37640,4240, 40696,16983,7358, 5938, 19593,26395,23978,27782,6408, 33458,17554,15731,20546,11854,
36632,6989, 34911,35890,38659,16982,16549,36899,7543, 2699, 43536,10662,18745,33487,27687,11853,6787, 43536,32817,1025, 18446,14923,38659,14493,38659,33416,37915,
- 11911,2148, 29255,43535,35890,27686,43535,38659,34106,20000,19765,38658,37104,1004, 8768, 39417,1577, 3379, 19204,1161, 18025,9889, 37104,5433, 39158,27499,878,
+ 11911,2148, 29255,43535,35890,27686,43535,38659,34106,20000,19765,38658,37104,1004, 8768, 39417,1577, 3379, 19204,1161, 18025,9889, 37104,5433, 39158,27499,878,
19764,1398, 37103,12283,36239,27685,43535,19763,8171, 904, 1301, 30750,32916,3664, 22924,12240,36988,10184,8913, 14057,7745, 36025,6859, 26296,8287, 37103,43535,
43534,15708,4847, 7527, 10661,40696,37766,5745, 11840,37850,7789, 15730,3721, 22895,16287,15497,10323,12239,36526,10872,17073,8805, 32724,11588,13475,5518, 21286,
38658,27684,16548,19549,37103,1636, 10768,35889,16513,14492,37814,5395, 43534,40695,38965,37443,37103,13633,20545,2112, 13830,2461, 18020,6076, 16538,8051, 17422,
5517, 43534,39273,25051,15729,942, 6685, 7858, 12612,21285,11587,9475, 10090,34904,31027,6407, 29254,12089,34105,5290, 29252,43534,40695,27683,43533,40695,34904,
- 31026,37102,34105,5188, 1267, 35889,18891,14491,12611,6786, 4113, 13632,34105,2088, 21284,18445,10551,8883, 33356,12318,38658,34904,37102,19866,38658,33196,5944,
+ 31026,37102,34105,5188, 1267, 35889,18891,14491,12611,6786, 4113, 13632,34105,2088, 21284,18445,10551,8883, 33356,12318,38658,34904,37102,19866,38658,33196,5944,
1404, 6710, 12319,29023,37102,3363, 34904,1665, 3081, 3619, 33428,8804, 5473, 17458,40695,19203,33416,6173, 24555,10790,23723,12238,4791, 8244, 2612, 7633, 43533,
2780, 23900,23899,40694,43533,34105,43533,40694,37102,19251,32229,112, 16547,22087,11680,18609,18306,34903,14882,29536,964, 19202,37101,10255,33415,31025,34903,
- 12582,7241, 979, 13978,18274,16512,33964,38925,5610, 27093,6240, 35695,21283,11811,37515,14106,12670,38387,37335,38972,36647,21282,2374, 31024,15093,3444, 102,
- 26813,2786, 22591,29160,9443, 19533,33464,22733,33106,26840,17907,6053, 3600, 12610,32817,34903,33442,37221,38483,34582,32817,8113, 30979,43532,38657,14644,6846,
+ 12582,7241, 979, 13978,18274,16512,33964,38925,5610, 27093,6240, 35695,21283,11811,37515,14106,12670,38387,37335,38972,36647,21282,2374, 31024,15093,3444, 102,
+ 26813,2786, 22591,29160,9443, 19533,33464,22733,33106,26840,17907,6053, 3600, 12610,32817,34903,33442,37221,38483,34582,32817,8113, 30979,43532,38657,14644,6846,
33470,22208,28854,35889,10858,26545,37527,26400,10565,34104,40694,28208,7354, 7106, 17023,9782, 31129,25896,30727,22950,3628, 32426,1980, 26824,13669,849, 14026,
23930,11407,4041, 27341,36169,4942, 9658, 35832,18250,24502,15314,13631,40694,43532,23898,3775, 31168,43532,36660,43532,39041,34903,22826,24791,6239, 2504, 21436,
23188,3325, 26128,9510, 5261, 31023,13482,14610,14103,2651, 15128,32817,15483,26343,5991, 13977,22086,7157, 36679,38657,14301,37101,5284, 5222, 37649,33415,37101,
@@ -14366,21 +14361,21 @@ static const unsigned short Ranks[197839] =
1527, 27680,37099,22167,38822,29192,16980,5586, 18025,23080,10193,33023,12120,32429,25730,25246,34901,38655,34901,19201,31020,8626, 26809,4172, 40692,22922,31164,
17068,22318,11009,43529,22085,8614, 32979,29247,8945, 34901,11553,26516,13024,37269,26295,32249,33414,33413,43529,10268,20120,6123, 7284, 18444,13152,1212, 15311,
304, 1212, 25048,43528,34463,14583,40691,9310, 22084,34103,27366,21035,32940,526, 25645,14261,5234, 31582,21922,20221,31474,8050, 35572,12439,7205, 31019,34103,
- 15495,34103,38655,4713, 32893,33413,15594,38655,11852,36838,23896,6924, 35887,35887,40691,35887,22765,43528,27679,38654,14256,22083,26294,5796, 43528,27619,170,
+ 15495,34103,38655,4713, 32893,33413,15594,38655,11852,36838,23896,6924, 35887,35887,40691,35887,22765,43528,27679,38654,14256,22083,26294,5796, 43528,27619,170,
32992,35886,26293,562, 25923,16477,25061,26963,10388,2405, 11456,23241,19134,37099,5693, 36289,33117,26292,265, 11763,35653,37182,6758, 17420,1920, 11088,11909,
- 43528,34901,32377,31358,33413,5033, 17449,5758, 11534,34629,3515, 13023,29246,25047,13068,14255,36682,36006,3321, 37099,29269,37839,12293,30507,19414,43527,9505,
+ 43528,34901,32377,31358,33413,5033, 17449,5758, 11534,34629,3515, 13023,29246,25047,13068,14255,36682,36006,3321, 37099,29269,37839,12293,30507,19414,43527,9505,
8061, 33183,33948,33061,22931,20544,5408, 21625,15528,3775, 38654,35065,21281,30874,34103,35886,32816,34844,36267,34102,15706,7875, 37098,12088,21278,15727,38313,
- 37098,1771, 43527,3541, 43527,32815,9888, 22921,4819, 40691,4351, 18443,18021,34900,13197,26959,38098,13976,4321, 40691,8971, 19200,33474,21859,3032, 32716,1226,
+ 37098,1771, 43527,3541, 43527,32815,9888, 22921,4819, 40691,4351, 18443,18021,34900,13197,26959,38098,13976,4321, 40691,8971, 19200,33474,21859,3032, 32716,1226,
15679,15726,19761,14882,34102,19038,38584,26604,4465, 26291,7426, 9474, 18899,13975,34102,34900,23408,35042,2118, 43527,17448,5727, 40690,37098,10766,5032, 16326,
21277,29245,25046,13915,20543,38654,38991,43526,43526,21266,25497,1206, 43526,34098,38951,37098,11404,16979,11421,3317, 25045,368, 315, 5742, 40690,8520, 11264,
- 9104, 2716, 1502, 2199, 43526,33862,5975, 21280,36429,20542,283, 1787, 3247, 7979, 7743, 19109,37097,18040,13022,34792,483, 20124,12381,34485,38335,3334, 4112,
+ 9104, 2716, 1502, 2199, 43526,33862,5975, 21280,36429,20542,283, 1787, 3247, 7979, 7743, 19109,37097,18040,13022,34792,483, 20124,12381,34485,38335,3334, 4112,
32815,3405, 110, 11668,6305, 33032,35602,25044,14254,27678,9740, 13021,19760,8659, 3442, 18442,4660, 4907, 37097,24811,31018,11703,34544,35924,43525,31017,43525,
13887,38508,8286, 33413,25043,43525,18794,37404,40690,13474,43525,43524,18608,43524,43524,4158, 37097,6304, 36494,8520, 34458,3597, 40690,38654,43524,11908,18020,
- 5289, 19199,43523,14488,23791,18441,34102,15091,33412,37641,13629,35049,43523,34900,7539, 37097,2869, 14950,9167, 12237,27431,12316,1187, 2593, 17800,6284, 2290,
+ 5289, 19199,43523,14488,23791,18441,34102,15091,33412,37641,13629,35049,43523,34900,7539, 37097,2869, 14950,9167, 12237,27431,12316,1187, 2593, 17800,6284, 2290,
2014, 27009,19078,16540,17414,9617, 35563,2973, 26984,14949,43523,405, 34900,15224,21276,14487,37096,43523,38653,40689,23895,21279,38653,665, 33022,13448,17419,
5958, 4413, 21275,38653,10644,7522, 40689,37096,37096,38653,43522,19759,17418,4320, 15495,4587, 10614,31016,2014, 26143,1830, 18440,26290,9166, 35886,13460,19758,
35022,43522,18439,34467,25042,14948,40689,43522,8170, 33412,37096,2637, 35165,24309,19198,7216, 10660,29244,38652,20105,32815,1917, 9684, 11586,9887, 1641, 14276,
- 33412,34899,27814,38652,9614, 29793,26289,43522,10321,24119,33433,17856,17586,15310,34534,2619, 28857,26207,38652,38652,21076,37095,43521,37095,22588,8981, 7921,
+ 33412,34899,27814,38652,9614, 29793,26289,43522,10321,24119,33433,17856,17586,15310,34534,2619, 28857,26207,38652,38652,21076,37095,43521,37095,22588,8981, 7921,
25116,36207,14064,5122, 13709,33020,32462,23371,10114,40689,36330,38651,37095,34101,40688,35886,36195,9470, 28126,8229, 16012,1684, 11836,19442,22291,39402,34944,
9683, 20956,32813,21278,30374,2546, 10404,33996,35934,19757,18526,16065,21503,18528,19550,19546,10079,21473,27908,7387, 14486,14054,38275,38974,4310, 30891,29245,
12828,36411,35895,43521,37176,31397,37800,35407,30865,1645, 28227,36527,25259,4819, 34483,8090, 18429,38119,20797,3343, 4935, 30190,6867, 33352,20587,34041,39352,
@@ -14392,103 +14387,103 @@ static const unsigned short Ranks[197839] =
26461,32988,1780, 7486, 4507, 19342,17417,37094,14888,43520,26288,24226,37093,37093,38650,43520,43520,43520,43519,36101,38262,14608,28744,18249,35885,33597,37093,
43519,35884,40687,43519,43519,43518,43518,40687,29243,33411,38919,37616,37519,19073,36103,19755,15090,33830,15725,39380,38974,33610,19754,12608,25056,36250,35657,
29851,20150,9315, 33794,36446,3246, 38567,32884,37461,38601,28990,37625,37270,7542, 19753,35453,36570,32943,14848,6684, 30195,38474,36098,21273,32027,30497,38879,
- 20738,38756,37969,38374,37416,36614,36613,26335,18764,6746, 19752,20523,23642,21272,22284,11704,36790,38162,10588,9613, 13974,6845, 11311,33727,37499,37039,8072,
- 33120,17663,24015,27924,15982,21271,21967,21145,32908,35799,3471, 2079, 5892, 2390, 13317,33439,32895,33213,37281,36623,34519,33068,35134,33049,22438,9247, 9638,
+ 20738,38756,37969,38374,37416,36614,36613,26335,18764,6746, 19752,20523,23642,21272,22284,11704,36790,38162,10588,9613, 13974,6845, 11311,33727,37499,37039,8072,
+ 33120,17663,24015,27924,15982,21271,21967,21145,32908,35799,3471, 2079, 5892, 2390, 13317,33439,32895,33213,37281,36623,34519,33068,35134,33049,22438,9247, 9638,
25783,25958,13501,13910,17724,31438,30548,25084,12371,12710,17479,16339,15978,34851,35595,31441,7156, 36647,29242,37093,11907,19751,19750,37092,4188, 38650,34101,
32948,3695, 43518,37289,29556,3768, 35446,5089, 13200,18046,18585,30675,8746, 7145, 34100,18607,33480,22920,27677,40687,34574,15676,43518,43517,37525,2792, 16088,
28711,35922,21270,30270,38949,4239, 31015,25041,22243,36383,34791,18606,29241,34100,11613,29240,40686,169, 13973,23858,11446,10764,37155,29239,34883,23894,43517,
14607,43517,16228,11906,12691,31014,43517,441, 19749,2008, 10463,17807,33093,30345,28772,24288,4961, 6636, 29294,17683,7978, 33410,36721,34924,34100,31013,20496,
37968,5394, 35884,39065,33257,33410,7202, 14722,35884,37092,24288,3421, 33423,34840,34959,43516,2599, 35884,25040,8982, 13020,20541,6443, 31178,18983,26515,22919,
- 35883,40686,10088,18743,19759,32814,38483,34899,35733,26411,35883,37092,29238,19864,16545,13942,20540,34438,40686,37092,9730, 38708,27676,1387, 27755,15724,4883,
+ 35883,40686,10088,18743,19759,32814,38483,34899,35733,26411,35883,37092,29238,19864,16545,13942,20540,34438,40686,37092,9730, 38708,27676,1387, 27755,15724,4883,
32814,43516,37399,35883,38649,35883,21276,2304, 32814,43516,33410,43516,43515,3747, 13019,21269,7335, 17415,4212, 37091,37091,40686,26287,37091,35763,38649,34924,
10582,6171, 32813,35722,11051,35882,38649,38819,1314, 7521, 13914,25039,14253,43515,43515,6518, 37091,34100,2024, 10659,37090,34898,40685,11007,17447,37954,11403,
43515,11006,17446,25038,34898,15705,12235,11402,18018,34898,20231,43514,6560, 43514,36821,40685,35831,39123,34898,1716, 22918,12827,24495,14606,27159,29337,38191,
- 6858, 916, 12234,32813,43514,875, 43514,10014,33450,28983,12155,26286,2910, 35882,3676, 34897,33410,34586,33409,39321,10320,15089,15723,43513,38649,24640,4239,
+ 6858, 916, 12234,32813,43514,875, 43514,10014,33450,28983,12155,26286,2910, 35882,3676, 34897,33410,34586,33409,39321,10320,15089,15723,43513,38649,24640,4239,
33417,18437,32813,2127, 27276,20132,8803, 31012,18677,289, 1995, 12173,17093,29322,5394, 9752, 17515,17473,35309,34897,35882,33409,31998,40685,40685,26652,32813,
- 10590,31004,9891, 40684,38648,21275,9079, 15360,38648,13835,117, 17493,4319, 32182,17036,23902,27105,32294,24248,33641,33850,25953,40684,7301, 16281,39416,7742,
+ 10590,31004,9891, 40684,38648,21275,9079, 15360,38648,13835,117, 17493,4319, 32182,17036,23902,27105,32294,24248,33641,33850,25953,40684,7301, 16281,39416,7742,
19863,39224,17429,43513,31705,32812,23893,43513,37281,35735,20539,16978,34099,107, 9930, 25985,28275,28656,18210,40684,43513,40684,2527, 8109, 20663,14754,11751,
26285,33409,3164, 27675,32812,13340,34897,33409,6517, 6587, 43512,1266, 38648,37417,31011,18136,43512,12906,35882,11914,1101, 13191,37960,35752,2126, 25037,43512,
16648,23279,43512,37090,37090,10182,32771,35006,12580,14195,40683,22082,40683,27905,71, 30316,19825,2429, 18039,14423,15408,6248, 30507,30432,12218,29237,35313,
30267,37090,26320,38648,23892,12826,15088,39039,33408,40683,22081,32812,38647,37089,35881,17414,17413,39206,21274,40683,10745,15894,33739,17603,38993,43511,37089,
31010,27674,40682,43511,33408,34897,35881,22080,43511,40682,21268,36739,4532, 29236,4112, 33215,29799,534, 32725,38367,43511,23411,13628,1133, 36123,14252,35881,
26284,1540, 21267,1127, 9898, 1841, 9903, 4448, 5221, 34104,5132, 29258,38647,33063,33408,1165, 25036,38647,5633, 35883,21266,36552,29975,38173,6032, 36758,38647,
- 38646,37089,38646,35201,34099,34896,25035,19862,6976, 43510,3117, 17445,33965,24329,43510,6304, 11036,22079,38006,32812,13748,472, 25399,13067,7439, 2606, 495,
+ 38646,37089,38646,35201,34099,34896,25035,19862,6976, 43510,3117, 17445,33965,24329,43510,6304, 11036,22079,38006,32812,13748,472, 25399,13067,7439, 2606, 495,
34795,26066,812, 20726,32416,43510,10475,43510,34526,15308,19748,15939,37089,27673,21207,2118, 43509,40682,291, 15087,10549,16509,1546, 17876,8802, 17259,13972,
2267, 21698,39268,19379,22728,317, 16231,10319,10474,43509,43509,34099,38646,6757, 33057,26283,16508,21265,19747,36419,8970, 24298,35881,43509,7699, 35346,16131,
40682,3071, 37025,38646,5726, 7425, 35549,27944,13971,37953,172, 8801, 5843, 32849,177, 2496, 15307,29235,25565,36766,40681,15772,23831,40681,31009,537, 36670,
- 9050, 24694,32532,3213, 26365,15814,32811,569, 7081, 23941,4011, 4225, 36426,34099,38645,7857, 1074, 40681,43508,3070, 43508,34851,29217,21264,21263,17790,9888,
- 39268,29640,26282,36188,40681,26281,4914, 6190, 34896,13473,31008,5651, 531, 30363,34098,15704,34896,37088,38869,43508,1298, 40680,8663, 40680,37088,37088,1017,
- 43508,7617, 4157, 2551, 32768,29143,40680,3069, 635, 19725,7520, 8285, 741, 5472, 6303, 29126,8367, 18436,22917,16507,7856, 29234,1825, 1937, 625, 22078,1734,
- 2013, 12, 23954,29827,21288,1845, 29602,23729,6875, 11304,31024,11361,29381,23128,29266,21971,20993,27254,27731,30580,27270,27060,1054, 10490,1824, 38645,9963,
+ 9050, 24694,32532,3213, 26365,15814,32811,569, 7081, 23941,4011, 4225, 36426,34099,38645,7857, 1074, 40681,43508,3070, 43508,34851,29217,21264,21263,17790,9888,
+ 39268,29640,26282,36188,40681,26281,4914, 6190, 34896,13473,31008,5651, 531, 30363,34098,15704,34896,37088,38869,43508,1298, 40680,8663, 40680,37088,37088,1017,
+ 43508,7617, 4157, 2551, 32768,29143,40680,3069, 635, 19725,7520, 8285, 741, 5472, 6303, 29126,8367, 18436,22917,16507,7856, 29234,1825, 1937, 625, 22078,1734,
+ 2013, 12, 23954,29827,21288,1845, 29602,23729,6875, 11304,31024,11361,29381,23128,29266,21971,20993,27254,27731,30580,27270,27060,1054, 10490,1824, 38645,9963,
18435,2746, 1428, 150, 17046,33408,31007,142, 19197,34098,2860, 34003,40680,1869, 38596,14561,2594, 7905, 13724,1947, 6447, 2791, 897, 17688,29104,12610,36346,
11005,1793, 33407,1174, 39359,6145, 13782,18434,22916,18017,37088,31739,12315,14484,22915,38396,5881, 7772, 9160, 36053,3443, 1021, 35880,40679,32803,43507,40679,
40679,34098,34896,16977,35880,2654, 2525, 34895,1343, 10718,26367,787, 1845, 40679,29149,40678,27746,21170,11395,43507,33407,99, 24125,3463, 15828,17087,20290,
- 1859, 25551,28844,27184,29058,12598,37087,20729,36417,12825,43507,32811,11723,39070,34098,5061, 19653,26280,15306,21273,28624,28769,11585,39118,15305,37315,584,
+ 1859, 25551,28844,27184,29058,12598,37087,20729,36417,12825,43507,32811,11723,39070,34098,5061, 19653,26280,15306,21273,28624,28769,11585,39118,15305,37315,584,
6911, 16828,8607, 12600,13759,16976,14015,25650,43507,12087,38645,27672,38268,4987, 5723, 24356,37087,2593, 7155, 11144,24726,2866, 2790, 1905, 40678,16975,24550,
31006,2564, 22077,39254,16544,7831, 34070,24681,26107,17444,38645,5148, 2276, 584, 32286,35135,33407,17312,37087,18605,34895,37087,9168, 17412,29233,43506,12104,
39320,18016,25034,29232,43506,6621, 1062, 32333,34013,37253,40678,33407,43506,35635,37086,26320,35333,30248,43506,28152,10473,35880,43505,1452, 17739,29231,17443,
3303, 3514, 1473, 1607, 38644,34097,753, 22643,36581,43505,16758,4592, 43505,1470, 37922,19746,22076,34895,941, 7424, 6156, 6667, 30678,1000, 644, 23891,11905,
- 16506,43505,12239,38644,22160,10832,35880,43504,19861,38644,35879,21003,1278, 6610, 40678,37086,10548,34895,410, 5739, 5744, 40677,802, 21582,22914,20538,518,
+ 16506,43505,12239,38644,22160,10832,35880,43504,19861,38644,35879,21003,1278, 6610, 40678,37086,10548,34895,410, 5739, 5744, 40677,802, 21582,22914,20538,518,
34397,43504,14797,693, 20772,18860,20215,5227, 4747, 38705,30279,6228, 11985,17411,26287,36842,4917, 5147, 28521,23315,32806,37086,11131,15169,10234,9681, 21262,
3560, 18974,29115,3011, 18432,9709, 7558, 334, 24546,21099,15488,28612,21478,5979, 11904,18433,27043,21377,682, 17720,25397,756, 26113,10285,12862,447, 38688,
16543,1244, 3053, 157, 14251,3909, 1606, 563, 29467,33712,8662, 7045, 43504,39344,40677,40677,10170,2102, 31100,15304,15086,5709, 43504,417, 22075,34894,18432,
24509,35879,40677,35548,32811,15486,871, 34894,14250,38644,17530,4672, 34097,23890,8625, 35879,14935,10215,391, 159, 226, 20788,14450,833, 20537,421, 34097,
- 16117,29230,37086,879, 31005,4591, 43503,217, 43503,21272,13970,18897,43503,23889,13913,5743, 14641,27721,18015,15630,7046, 23491,40676,12442,27548,6175, 8585,
+ 16117,29230,37086,879, 31005,4591, 43503,217, 43503,21272,13970,18897,43503,23889,13913,5743, 14641,27721,18015,15630,7046, 23491,40676,12442,27548,6175, 8585,
40676,33409,18434,19551,5985, 6988, 32811,23888,37112,37085,20326,20555,33107,37085,40676,43503,39154,16542,26605,33643,35965,21791,40676,500, 21545,21261,18431,
27671,32810,19673,43502,258, 13472,4235, 21961,43502,6349, 36633,21592,40675,22507,36309,40675,32810,26822,40675,26286,4093, 6656, 15288,12493,27130,11266,10547,
36893,11903,38643,17576,6657, 21788,35488,8285, 6406, 20172,8291, 22913,40675,13339,40674,12940,36345,5122, 38643,3492, 43502,40674,43502,37085,34076,38643,40674,
38643,23549,18029,43501,35879,12951,15722,43501,43501,35878,4500, 531, 2734, 6454, 34630,38803,36229,13893,13960,40674,18537,20266,38642,391, 2090, 12607,15085,
17410,1582, 35878,30452,38302,34894,21260,899, 20087,37085,15115,17711,31496,34097,23887,4491, 31004,17442,34659,43501,38642,12314,19750,18077,20202,36059,37499,
- 37084,43500,32810,13066,38642,43500,22074,18014,32810,11208,40673,37084,23369,38642,43500,34096,21271,17441,43500,38641,24566,30614,43499,40673,20536,27670,760,
+ 37084,43500,32810,13066,38642,43500,22074,18014,32810,11208,40673,37084,23369,38642,43500,34096,21271,17441,43500,38641,24566,30614,43499,40673,20536,27670,760,
43499,31003,37084,338, 1919, 38641,9613, 26279,11207,16541,3902, 43499,33406,32962,38330,35024,40673,18489,13912,9335, 39211,33445,25033,14483,32263,25411,10246,
16974,16505,38790,13694,23886,43499,32809,35878,40673,40672,33406,38641,33406,15721,37084,35878,43498,27669,25786,9210, 40672,26278,12193,38510,40672,35877,40672,
43498,249, 27138,10107,32451,14444,9768, 24542,19385,29336,29511,32910,26402,18482,32894,19559,9472, 43498,19028,34894,33246,452, 43498,26417,35877,43497,35877,
6857, 16084,4712, 16371,11139,35877,33406,18430,35876,35876,6, 17847,1033, 25763,26370,8849, 4512, 22476,9672, 24727,32916,32978,20835,18728,25766,20899,30758,
13203,17230,22553,27011,26448,32135,1652, 8084, 8118, 8788, 3135, 43497,15729,16606,35876,33505,9676, 13937,14407,11271,17676,9936, 13928,8247, 36408,40671,16893,
- 18088,17813,2116, 18663,37083,40671,238, 27433,22542,7519, 932, 31112,33405,1018, 16540,14605,1583, 25227,5124, 40671,29229,16686,43497,6, 7896, 40671,1272,
- 7139, 37709,36097,38641,35302,34096,21259,40670,36070,33405,17465,33937,13510,43497,34468,7698, 33170,37040,12313,27686,43496,43496,16504,18429,20535,14249,4473,
- 1788, 10440,29810,10784,6932, 8838, 34828,25525,18449,40670,1383, 16756,10472,35760,105, 1343, 2456, 12233,7423, 17409,8775, 27263,36428,38640,16973,23885,278,
+ 18088,17813,2116, 18663,37083,40671,238, 27433,22542,7519, 932, 31112,33405,1018, 16540,14605,1583, 25227,5124, 40671,29229,16686,43497,6, 7896, 40671,1272,
+ 7139, 37709,36097,38641,35302,34096,21259,40670,36070,33405,17465,33937,13510,43497,34468,7698, 33170,37040,12313,27686,43496,43496,16504,18429,20535,14249,4473,
+ 1788, 10440,29810,10784,6932, 8838, 34828,25525,18449,40670,1383, 16756,10472,35760,105, 1343, 2456, 12233,7423, 17409,8775, 27263,36428,38640,16973,23885,278,
34427,6906, 32948,26715,125, 35939,25758,29064,23938,17932,18625,35118,40670,10546,10087,7055, 8519, 10763,5365, 38640,33405,29228,37083,37083,2229, 37215,23884,
- 3212, 10545,43496,34893,976, 34126,35876,320, 3599, 26453,7813, 4436, 3491, 1312, 17142,32053,23584,33405,27668,12606,16503,19860,40670,15084,40669,8238, 9886,
+ 3212, 10545,43496,34893,976, 34126,35876,320, 3599, 26453,7813, 4436, 3491, 1312, 17142,32053,23584,33405,27668,12606,16503,19860,40670,15084,40669,8238, 9886,
29472,8800, 17009,35486,16057,12560,18620,29235,33781,8797, 5501, 32867,8834, 26739,32936,8459, 12575,10350,2879, 767, 12168,14960,19539,18019,22384,34630,26082,
16236,24550,12649,24120,19517,23574,29353,29588,20473,20964,14102,27465,31581,7606, 9149, 12828,27456,17451,33919,36413,35686,109, 20922,15994,7741, 38640,36841,
- 1058, 32260,38637,12073,10762,11035,21875,37083,237, 26653,25198,7977, 15083,15720,15059,20657,11902,27667,10965,27929,29878,1616, 18428,12349,11973,3266, 7740,
+ 1058, 32260,38637,12073,10762,11035,21875,37083,237, 26653,25198,7977, 15083,15720,15059,20657,11902,27667,10965,27929,29878,1616, 18428,12349,11973,3266, 7740,
15328,27064,2984, 1951, 17373,27077,12000,27742,37082,30076,3284, 3052, 20328,27498,6322, 33685,14205,26277,14604,29238,2632, 17408,17496,19183,43496,32809,34893,
- 21270,16516,14603,40669,254, 10328,32809,2664, 5146, 7976, 15924,13969,11901,1047, 6302, 11584,34096,2808, 2507, 29227,43495,12535,166, 29109,645, 5128, 2303,
+ 21270,16516,14603,40669,254, 10328,32809,2664, 5146, 7976, 15924,13969,11901,1047, 6302, 11584,34096,2808, 2507, 29227,43495,12535,166, 29109,645, 5128, 2303,
37082,737, 3371, 2455, 20534,33175,10539,40669,37082,34893,4556, 944, 34096,43495,918, 256, 788, 17324,5922, 7329, 21258,38640,453, 6031, 43495,40669,29226,
- 38639,14248,33404,33404,3018, 14482,40668,4407, 40668,4070, 7356, 22912,31002,32809,33404,13338,34095,35097,38639,40668,40668,12605,38639,43495,10327,19859,5974,
+ 38639,14248,33404,33404,3018, 14482,40668,4407, 40668,4070, 7356, 22912,31002,32809,33404,13338,34095,35097,38639,40668,40668,12605,38639,43495,10327,19859,5974,
20533,34893,40667,4406, 20532,194, 2473, 10270,29034,29605,28284,32591,3995, 9885, 30810,36172,9086, 38698,14481,25905,6196, 8551, 2343, 12831,18733,32820,13018,
32808,1897, 25032,23324,6975, 14247,34892,26276,1540, 34095,43494,37082,10318,38639,40667,39201,37949,29225,43494,40667,31725,33404,36113,33403,34095,22073,34187,
30725,13968,1872, 6151, 32741,33391,4972, 6006, 11310,2005, 141, 8297, 21803,38638,1844, 1007, 34095,35875,27875,18604,25031,35875,14246,43494,34892,37081,27666,
40667,38638,39018,33364,37817,37206,3370, 33403,22911,3978, 43494,38638,37081,1308, 17512,26275,29224,38638,34904,40666,43493,38378,13017,14388,32808,37081,34892,
- 22072,35875,34892,11612,14946,43493,17407,26274,32808,38637,4211, 23883,25030,9334, 34094,18427,19858,547, 25, 7910, 9612, 21269,40666,5841, 37081,17440,39,
+ 22072,35875,34892,11612,14946,43493,17407,26274,32808,38637,4211, 23883,25030,9334, 34094,18427,19858,547, 25, 7910, 9612, 21269,40666,5841, 37081,17440,39,
26601,40666,43493,1272, 38637,30870,19820,40666,40665,43493,8799, 15082,8969, 5054, 43492,23882,34891,2206, 34094,40665,38637,38637,25029,37080,29223,35875,21268,
- 37080,23423,37080,2113, 31681,13561,18179,4830, 27112,27925,19324,33403,35500,32865,34791,21267,35874,13065,14085,411, 17191,10317,18426,35126,1834, 37080,8281,
+ 37080,23423,37080,2113, 31681,13561,18179,4830, 27112,27925,19324,33403,35500,32865,34791,21267,35874,13065,14085,411, 17191,10317,18426,35126,1834, 37080,8281,
9730, 34891,33546,31816,7719, 10936,27487,30183,1639, 17406,12604,1548, 40665,5005, 40665,32256,37066,26215,27665,35998,9209, 35874,43492,43492,32808,19745,19744,
11900,39168,18425,35874,37079,35874,30464,35894,43492,43491,6238, 40664,13337,33403,37079,40664,43491,34094,6137, 34756,13733,22071,9390, 4931, 15468,12603,18162,
9115, 11065,38504,3969, 34094,35888,7975, 6844, 5795, 6053, 36239,5357, 25027,35873,21266,19203,172, 22037,32814,37320,25164,31001,3760, 34446,1362, 38486,33660,
- 32777,17399,13199,38636,14860,12485,3720, 18424,13016,18423,14245,40664,37079,34891,43491,15703,43491,40664,37079,35873,25028,34093,17405,18422,9333, 37120,814,
- 553, 10761,10397,2448, 4092, 8086, 32311,37078,36020,6709, 15719,13041,32742,34305,34891,38636,7154, 16502,18421,34906,656, 1502, 4715, 11464,30743,1985, 5840,
+ 32777,17399,13199,38636,14860,12485,3720, 18424,13016,18423,14245,40664,37079,34891,43491,15703,43491,40664,37079,35873,25028,34093,17405,18422,9333, 37120,814,
+ 553, 10761,10397,2448, 4092, 8086, 32311,37078,36020,6709, 15719,13041,32742,34305,34891,38636,7154, 16502,18421,34906,656, 1502, 4715, 11464,30743,1985, 5840,
10544,34093,43490,557, 23281,10831,34510,28283,20531,7887, 35716,10460,2848, 11988,20981,32912,3369, 1106, 31633,7231, 5043, 43490,18511,19569,34890,40663,43490,
24218,2008, 2084, 9064, 4934, 43490,12312,8015, 40663,39246,11309,13967,11583,32276,13624,38354,16539,36102,27885,34470,4868, 9768, 43489,18420,14480,23359,12232,
7796, 37178,17404,13864,38431,37505,34774,37922,18419,19743,38636,32807,7855, 35111,5187, 2782, 36031,35477,5085, 4208, 4721, 4362, 7328, 21257,34890,10543,38636,
37078,5060, 25027,31000,4405, 34890,38635,17403,35156,33817,40663,43489,29222,40663,33402,6238, 17402,34890,3478, 3775, 6390, 6065, 3677, 10225,9895, 16501,20504,
38856,34390,39341,38635,35873,43489,35873,10760,34703,30401,19742,17401,20530,43489,40662,37078,22215,33101,3442, 14945,37078,43488,37077,27876,40662,21265,22031,
19093,38635,5902, 1009, 36934,23316,17690,4522, 25684,33175,38635,43488,38634,21264,16972,9611, 40662,43488,43488,38634,1594, 8976, 40662,15081,12788,23184,37314,
- 14479,14913,10542,8661, 15080,15718,656, 31959,2084, 3513, 17439,26997,3080, 18209,2955, 31093,25656,3006, 34093,3391, 30999,7964, 2645, 37405,38634,33402,7057,
- 34889,40661,8624, 27227,3015, 8851, 15079,21096,13627,5319, 839, 32807,740, 21710,28493,7859, 37386,8726, 15717,33968,18791,18506,15429,15916,34450,2358, 4412,
- 26490,36774,1954, 17704,32995,11587,33043,7506, 2453, 21477,14504,3245, 40661,10829,14811,6226, 14051,4404, 20529,19506,2888, 4671, 33872,9610, 43487,19857,3675,
+ 14479,14913,10542,8661, 15080,15718,656, 31959,2084, 3513, 17439,26997,3080, 18209,2955, 31093,25656,3006, 34093,3391, 30999,7964, 2645, 37405,38634,33402,7057,
+ 34889,40661,8624, 27227,3015, 8851, 15079,21096,13627,5319, 839, 32807,740, 21710,28493,7859, 37386,8726, 15717,33968,18791,18506,15429,15916,34450,2358, 4412,
+ 26490,36774,1954, 17704,32995,11587,33043,7506, 2453, 21477,14504,3245, 40661,10829,14811,6226, 14051,4404, 20529,19506,2888, 4671, 33872,9610, 43487,19857,3675,
30998,15078,34093,37003,21878,1955, 2754, 6910, 22740,35042,35872,34889,21256,18418,11611,9456, 24199,37422,12801,39299,43487,4636, 27603,20754,34715,24909,40661,
- 8284, 8445, 14986,24024,1090, 649, 2037, 5298, 36756,32259,7834, 9210, 26764,13363,24317,7854, 19741,20494,6712, 38634,6724, 19856,1375, 18417,9619, 30386,6057,
+ 8284, 8445, 14986,24024,1090, 649, 2037, 5298, 36756,32259,7834, 9210, 26764,13363,24317,7854, 19741,20494,6712, 38634,6724, 19856,1375, 18417,9619, 30386,6057,
1603, 2713, 5899, 2855, 783, 38633,4392, 1888, 11622,36602,870, 29892,5901, 14462,31279,5479, 22497,1794, 19241,30475,11610,11034,16500,38832,38707,35812,10880,
35881,32807,35872,9024, 1607, 11076,18416,21255,17438,18415,10773,6850, 10689,5256, 10687,43487,12231,11582,43487,43486,16499,15716,39277,37077,29221,13064,34889,
29773,19740,3142, 1158, 4047, 4556, 3401, 573, 38551,1756, 4739, 5708, 13012,32807,37077,40661,11634,19739,21254,24475,11033,14572,17400,14684,28270,16498,37028,
25733,21205,37077,18414,19302,37076,40660,14944,37076,9890, 20528,7788, 10095,34840,12824,32799,38955,9927, 28407,11032,38171,23678,19738,33402,40660,33402,40660,
43486,34203,40660,30997,43486,19855,43486,14943,10658,40659,18013,43485,18413,33693,33581,34715,38633,27664,10657,29220,10316,19737,19736,16486,945, 3932, 26273,
- 9314, 17399,37190,5900, 10541,43485,26272,40659,34092,11609,16497,38633,35872,19735,20847,38633,3652, 40659,34889,34888,38632,34888,14942,40659,34888,30349,8518,
+ 9314, 17399,37190,5900, 10541,43485,26272,40659,34092,11609,16497,38633,35872,19735,20847,38633,3652, 40659,34889,34888,38632,34888,14942,40659,34888,30349,8518,
18278,16496,38879,13394,14478,17979,40658,19854,34092,12579,10025,38632,32806,7649, 26271,27663,27662,34888,37076,40658,43485,37076,14092,43485,37075,33401,11004,
- 20527,40658,34887,34887,43484,38632,34887,40658,43484,29219,35872,29218,6003, 15077,8884, 25188,8660, 9208, 14602,34092,38632,40657,43484,35871,40657,35871,6301,
- 30996,32806,37075,7963, 33401,43484,38631,521, 19853,1650, 15303,43483,38631,34887,13336,18603,40657,8169, 35871,35871,32806,35870,43483,43483,6303, 7517, 8850,
+ 20527,40658,34887,34887,43484,38632,34887,40658,43484,29219,35872,29218,6003, 15077,8884, 25188,8660, 9208, 14602,34092,38632,40657,43484,35871,40657,35871,6301,
+ 30996,32806,37075,7963, 33401,43484,38631,521, 19853,1650, 15303,43483,38631,34887,13336,18603,40657,8169, 35871,35871,32806,35870,43483,43483,6303, 7517, 8850,
40657,43483,43482,40656,20526,2640, 34092,4436, 34091,7697, 12630,40656,35697,43482,40656,43482,40656,40655,25026,10471,20525,14941,30995,35321,33401,43482,10326,
13151,38170,19170,43481,37083,8112, 12230,10279,6242, 24574,22070,18602,43481,20524,40655,40655,8231, 43481,23846,939, 816, 43481,37075,37595,26048,40655,33401,
33699,26270,18412,25025,34886,31877,37075,9992, 38631,36180,32806,12311,37074,21263,38580,35448,16443,14078,33423,821, 30994,34886,43480,26933,29217,31671,33400,
@@ -14497,12 +14492,12 @@ static const unsigned short Ranks[197839] =
43478,37074,38630,40653,43478,927, 11899,40653,12823,38022,21253,8517, 838, 37073,34886,29215,38630,36928,33400,19734,5203, 40652,2628, 34287,43478,40652,33400,
34090,43478,21261,40652,35730,13334,30991,34886,34090,2745, 32805,43477,40652,34090,29214,37073,37073,18601,31218,15701,2177, 8283, 30990,17437,800, 37073,18012,
27659,5597, 43477,30989,37072,14244,6856, 26268,5092, 9332, 43477,43477,40651,34885,18600,40651,21260,43476,27658,33399,14243,33399,34089,1014, 43476,33399,38630,
- 43476,35870,40651,43476,15150,2031, 38629,13626,38629,11851,24572,13625,37072,29213,38629,35870,35220,13063,40651,35870,2749, 21259,34089,2789, 3034, 8659, 5173,
+ 43476,35870,40651,43476,15150,2031, 38629,13626,38629,11851,24572,13625,37072,29213,38629,35870,35220,13063,40651,35870,2749, 21259,34089,2789, 3034, 8659, 5173,
35869,40650,336, 43475,12086,7103, 30988,43475,19733,43475,43475,13911,34089,34089,34088,37072,8975, 40650,35269,13624,3512, 43474,33067,34885,32805,34885,38629,
43474,40650,25024,37778,37072,12602,14242,22069,40650,4214, 10966,3641, 35814,3811, 11321,43474,35869,43474,40649,43473,37071,2566, 34088,19906,8623, 516, 34088,
43473,35869,37071,26271,35869,23691,43473,35868,1371, 6725, 20904,35516,22166,11552,24820,43473,26923,43472,43472,34080,29212,43472,18358,34088,4953, 1237, 13623,
- 34885,13560,37071,29206,3490, 43472,325, 29211,34884,32805,38628,43471,19196,40649,32805,27657,22909,43471,34884,2312, 37071,35796,32804,6237, 439, 36397,6236,
- 31482,2601, 36018,14447,15970,25185,43471,38628,38628,39041,16495,9680, 2746, 10315,18411,33079,2524, 38342,20845,1794, 16494,3947, 3211, 3296, 13471,11581,3598,
+ 34885,13560,37071,29206,3490, 43472,325, 29211,34884,32805,38628,43471,19196,40649,32805,27657,22909,43471,34884,2312, 37071,35796,32804,6237, 439, 36397,6236,
+ 31482,2601, 36018,14447,15970,25185,43471,38628,38628,39041,16495,9680, 2746, 10315,18411,33079,2524, 38342,20845,1794, 16494,3947, 3211, 3296, 13471,11581,3598,
1010, 43471,35868,43470,22068,14940,34878,14713,21108,2103, 26267,30792,16173,35943,35140,27220,43470,17170,7153, 15715,25023,21258,5220, 11308,15076,2205, 19732,
25022,32804,4345, 43470,35868,15999,38066,25577,25852,1551, 38190,16493,1835, 7327, 3837, 6405, 1816, 26266,5921, 16538,2260, 27428,24670,21655,23256,366, 43470,
38628,36964,43469,43469,40649,34884,37070,35868,34087,38627,40649,43469,38627,38627,37070,35867,40648,21252,43469,43468,34884,38627,10902,40648,37070,38626,20522,
@@ -14511,7 +14506,7 @@ static const unsigned short Ranks[197839] =
34086,11850,1631, 28237,37068,1882, 3597, 30986,38626,10509,7438, 219, 18598,32804,34882,488, 12085,3233, 23955,37068,43467,43467,19852,18011,40646,10181,27656,
35867,2565, 34086,26265,27655,7615, 6302, 40646,34086,40646,11606,2637, 3041, 1758, 33082,8590, 1018, 38350,43466,5701, 20520,34086,18597,26264,34882,19851,22574,
43466,8622, 35866,4320, 7138, 40645,35866,34085,37239,33713,40645,3005, 16970,40645,7778, 35866,37068,18410,1199, 1734, 29252,15713,16373,31714,16360,26478,21734,
- 26009,28132,15509,18930,15318,16962,6229, 19295,33082,19445,36439,37068,37750,7290, 21251,40645,2287, 25020,20519,26263,43466,9207, 40644,37067,15075,5186, 8366,
+ 26009,28132,15509,18930,15318,16962,6229, 19295,33082,19445,36439,37068,37750,7290, 21251,40645,2287, 25020,20519,26263,43466,9207, 40644,37067,15075,5186, 8366,
15192,33398,40644,5027, 43466,33397,43465,5742, 3274, 4904, 2957, 35866,40644,32803,30985,2358, 14477,8519, 30176,43465,24851,27654,35198,39070,18409,38626,22907,
30984,9679, 33397,35865,37821,37067,8621, 38626,38983,37067,38625,38625,1655, 3242, 3409, 2813, 32803,16116,43465,25019,35865,22067,43465,37765,23906,15645,38625,
2741, 838, 13909,14241,10325,43464,34882,40644,22906,16969,22905,43464,7056, 35865,23880,40643,14939,10180,25018,37067,19850,40643,14601,43464,27653,29210,43464,
@@ -14529,17 +14524,17 @@ static const unsigned short Ranks[197839] =
35352,25622,15714,2411, 16490,933, 40638,21255,18407,2196, 34408,34741,7071, 37364,32802,43459,35453,37871,10759,38621,37064,35863,5325, 494, 7027, 10710,31097,
26711,30203,25879,32498,29675,10337,40638,74, 32059,10292,2454, 2244, 33078,4744, 16587,19560,3596, 32801,32221,1951, 19193,26429,34309,40637,16968,11898,17398,
17436,34084,4090, 17133,1822, 20517,13622,1793, 5839, 32801,16536,16967,22064,43458,11849,2467, 7399, 9739, 38621,40637,35862,2966, 16489,34879,40, 9328, 29549,
- 24073,1936, 1484, 11848,32801,578, 23549,21916,21254,30979,43458,25015,40637,18699,5864, 10216,5686, 11306,21248,40637,33395,32801,40636,40636,39055,6611, 6666,
- 6014, 10766,32930,16610,6210, 27750,13224,43458,32800,35541,20069,3883, 6949, 16527,32116,33540,34879,43458,10675,951, 43457,29203,21253,5249, 1799, 1843, 3505,
+ 24073,1936, 1484, 11848,32801,578, 23549,21916,21254,30979,43458,25015,40637,18699,5864, 10216,5686, 11306,21248,40637,33395,32801,40636,40636,39055,6611, 6666,
+ 6014, 10766,32930,16610,6210, 27750,13224,43458,32800,35541,20069,3883, 6949, 16527,32116,33540,34879,43458,10675,951, 43457,29203,21253,5249, 1799, 1843, 3505,
33285,35325,15183,23877,10758,38621,38621,31332,33460,34083,2738, 32877,9484, 8516, 21384,22901,29835,1031, 30978,17397,32454,21247,33395,37230,22852,34200,34879,
- 596, 11820,24835,19612,40636,1348, 34083,34083,2909, 14869,3674, 18347,14240,32942,38620,40636,30977,36723,39256,40635,36152,7240, 38620,38454,25747,30976,749,
- 43457,40635,3051, 30975,37064,43457,34083,39186,7787, 27649,19192,22063,19849,34684,7663, 37016,2663, 9841, 29640,6004, 292, 9769, 2407, 10357,2218, 10584,9206,
+ 596, 11820,24835,19612,40636,1348, 34083,34083,2909, 14869,3674, 18347,14240,32942,38620,40636,30977,36723,39256,40635,36152,7240, 38620,38454,25747,30976,749,
+ 43457,40635,3051, 30975,37064,43457,34083,39186,7787, 27649,19192,22063,19849,34684,7663, 37016,2663, 9841, 29640,6004, 292, 9769, 2407, 10357,2218, 10584,9206,
34082,43457,12820,35862,43456,25290,12578,2370, 22437,12320,29202,43456,2700, 37760,6904, 21246,36055,5566, 6506, 10129,8528, 2656, 17683,1824, 1301, 33395,38529,
43456,43456,34878,4913, 40635,38620,6095, 2823, 3934, 5627, 6830, 4034, 38620,40635,43455,30974,43455,23876,43455,40634,19728,8448, 38559,27851,11586,14476,19727,
26414,7677, 24859,2439, 10865,3661, 9926, 26582,34878,21245,25996,34878,37064,32800,40634,25014,17362,25507,17396,8223, 16690,6405, 28033,37064,14998,34405,22772,
8349, 17395,6271, 18406,2822, 39339,5593, 21167,4227, 33121,9678, 26041,9884, 3481, 2987, 10211,43455,38840,35862,14600,18010,19191,35862,38619,33395,32800,40634,
43454,7738, 15713,22482,14475,37804,18963,31030,38619,13966,37768,15712,2094, 3259, 1971, 13077,10757,17394,21244,34878,43454,4501, 43454,10699,7239, 6170, 37374,
- 10540,43454,33394,33394,37655,43453,13881,15663,2019, 5294, 34877,10179,37063,38619,23551,34009,33069,4450, 37407,37517,21243,1201, 10323,38619,34082,40634,1902,
+ 10540,43454,33394,33394,37655,43453,13881,15663,2019, 5294, 34877,10179,37063,38619,23551,34009,33069,4450, 37407,37517,21243,1201, 10323,38619,34082,40634,1902,
15712,10085,11030,21242,38024,19133,38197,43453,43453,11847,34082,6005, 38618,40633,21252,37063,40633,43453,35036,38618,34248,35861,27149,2421, 21646,5039, 38618,
37063,33394,40633,36924,27557,38696,33394,32211,13783,30551,158, 11829,29203,10470,33142,21251,43452,34877,43452,43452,43452,43451,40633,40632,43451,32800,43451,
43451,40632,7238, 9536, 38618,5051, 30178,37063,38617,35861,22178,38617,34877,43450,37062,34082,39098,40632,552, 30973,38617,33393,17627,35861,40632,43450,23875,
@@ -14549,43 +14544,43 @@ static const unsigned short Ranks[197839] =
25583,43447,171, 9392, 20247,38195,15700,16114,43447,17908,13014,35860,22900,33393,14937,25012,19726,43447,19848,5554, 7055, 30971,30970,33107,38615,27646,43447,
40630,30098,26260,43446,23874,21648,34643,13114,38615,35860,40630,13907,38028,32846,1572, 33545,13103,37062,4295, 38615,18479,38615,40629,7874, 31595,38614,40629,
43446,33392,40629,34875,17814,16535,9473, 43446,3045, 18009,40629,34080,35521,38614,35860,34875,43446,20515,26259,36010,38614,13184,8484, 4464, 2793, 4167, 17670,
- 13779,6473, 8402, 2352, 28667,32124,16966,22062,38614,43445,15699,9331, 33614,40628,15301,34875,43445,26258,43445,30557,34875,23873,12819,1937, 347, 1635, 2746,
+ 13779,6473, 8402, 2352, 28667,32124,16966,22062,38614,43445,15699,9331, 33614,40628,15301,34875,43445,26258,43445,30557,34875,23873,12819,1937, 347, 1635, 2746,
1040, 4802, 8088, 21495,25405,35360,28987,8968, 38204,18405,19725,21240,35414,35077,15199,23670,29200,35184,18997,23872,43445,1826, 3400, 13013,17952,24399,10539,
15708,34614,10091,663, 1946, 38990,1222, 7853, 43444,32799,37177,35859,25222,33392,18596,34080,31806,35859,892, 29199,40628,23871,43444,12577,40628,9609, 35859,
- 25367,33392,22899,11401,10830,34874,30546,5356, 43444,38216,31478,16965,33636,31370,35859,321, 23459,8363, 1110, 15827,13702,2721, 8127, 23946,435, 1948, 3909,
+ 25367,33392,22899,11401,10830,34874,30546,5356, 43444,38216,31478,16965,33636,31370,35859,321, 23459,8363, 1110, 15827,13702,2721, 8127, 23946,435, 1948, 3909,
4545, 1699, 12576,35285,5166, 38613,43444,40628,3745, 37062,15698,25164,6223, 1881, 1119, 3517, 409, 4245, 16511,32914,43443,13012,35858,43443,18595,4187, 43443,
33392,1030, 22061,10655,1969, 23609,40627,21840,8515, 5679, 24802,35858,32799,43443,12083,34080,43442,5059, 43442,38613,32799,38613,33391,498, 40627,39075,20514,
38613,34874,15073,16488,43442,35858,40627,43442,35858,40627,19847,43441,37403,43441,38612,11605,9608, 8168, 6785, 4267, 38778,33239,32798,43441,22488,19403,14142,
32550,20513,10419,7808, 14307,1124, 2469, 5145, 4091, 3004, 33391,3504, 9313, 6169, 17393,434, 21239,43441,37584,33282,34874,18870,31916,30866,32105,10023,43440,
38612,30969,43440,5744, 9472, 33936,18008,4531, 40626,25011,14474,37177,26674,16820,27645,37062,1790, 6620, 950, 37061,32798,37838,35291,18404,35828,32619,32798,
- 40626,35857,5465, 43440,37061,34874,43440,4268, 40626,2968, 4144, 35857,3732, 27723,20575,10756,29524,369, 4948, 24895,29632,13764,35316,37061,11193,848, 9380,
- 1044, 3440, 4821, 2600, 6168, 5431, 15072,2166, 3141, 33953,38335,19724,37061,38431,43439,29198,6756, 15071,17037,5097, 33833,4564, 10316,40626,1792, 2250, 6641,
+ 40626,35857,5465, 43440,37061,34874,43440,4268, 40626,2968, 4144, 35857,3732, 27723,20575,10756,29524,369, 4948, 24895,29632,13764,35316,37061,11193,848, 9380,
+ 1044, 3440, 4821, 2600, 6168, 5431, 15072,2166, 3141, 33953,38335,19724,37061,38431,43439,29198,6756, 15071,17037,5097, 33833,4564, 10316,40626,1792, 2250, 6641,
1104, 9677, 5490, 18430,9017, 21238,34369,38612,21249,43439,40625,4370, 15373,4358, 9634, 3915, 38408,7491, 794, 2973, 3845, 7852, 15461,34080,19723,3295, 33478,
11395,40625,8967, 24997,43439,10755,7163, 30898,9866, 9143, 40625,18594,40625,12805,17967,33766,4148, 23315,35643,1828, 1438, 35058,34672,5886, 4354, 17324,12986,
22708,17859,12229,33926,29197,40624,8365, 21237,27669,21236,33391,29242,38612,38611,34079,43439,37189,22836,32798,43438,40624,43438,17794,43438,34873,38200,22898,
32386,37060,37060,7737, 11029,21235,17392,8798, 35626,6903, 13011,37060,38611,43438,6482, 19722,11305,30463,19721,2345, 19720,38891,15038,34079,40624,10177,15707,
- 10237,20816,35857,736, 6879, 40624,34079,25010,43437,30968,35857,32797,16964,43437,26257,43437,40623,43437,36314,40623,43436,21248,38611,36176,43436,10022,7137,
+ 10237,20816,35857,736, 6879, 40624,34079,25010,43437,30968,35857,32797,16964,43437,26257,43437,40623,43437,36314,40623,43436,21248,38611,36176,43436,10022,7137,
43436,35856,38611,37060,38610,7851, 23928,32930,26204,9506, 25009,35856,43436,38610,27166,43435,33391,35856,14488,43435,43435,35856,11254,37859,19803,38668,20000,
- 3337, 4551, 18517,38610,13338,16639,29648,8446, 34914,32797,31949,11710,8196, 10952,40623,38429,34459,37059,34079,21247,20512,20190,36927,29412,26256,17427,2916,
+ 3337, 4551, 18517,38610,13338,16639,29648,8446, 34914,32797,31949,11710,8196, 10952,40623,38429,34459,37059,34079,21247,20512,20190,36927,29412,26256,17427,2916,
7289, 40623,35802,29872,37059,35855,30700,25008,40622,32797,21915,40622,9676, 2374, 4861, 18403,10313,32598,38610,7437, 18593,8401, 30967,35855,34541,8619, 20511,
38609,43435,35855,40622,1205, 29994,372, 3439, 3378, 1427, 221, 5063, 27335,2735, 34333,4087, 34078,33966,43434,25007,30966,40622,19846,19189,28538,38609,40621,
4882, 13062,4391, 29196,10829,15700,38609,10021,40621,43434,38609,36815,5681, 31226,11029,21234,15706,12600,23809,31504,8487, 13222,1617, 1796, 30965,43434,34078,
- 35204,1366, 7336, 20254,32405,3122, 24838,15070,18146,897, 12640,12599,18519,19719,29195,5401, 37059,17435,40621,6937, 22896,7484, 12581,703, 9882, 21297,350,
+ 35204,1366, 7336, 20254,32405,3122, 24838,15070,18146,897, 12640,12599,18519,19719,29195,5401, 37059,17435,40621,6937, 22896,7484, 12581,703, 9882, 21297,350,
14046,34078,32797,43434,37059,1276, 33390,15697,19188,33390,5430, 40621,13010,5345, 27429,15705,38608,12082,38608,3281, 11205,43433,38608,18592,22633,2770, 18206,
4588, 16445,24532,4319, 10956,34078,16487,34077,15293,35691,13190,487, 20063,2176, 27644,11120,37058,12987,11469,38608,38607,2708, 2667, 2258, 11002,29194,40620,
40620,6843, 2495, 13240,7534, 18609,32796,34873,14473,4090, 10227,22038,37433,10084,13009,15069,19718,9289, 35102,29193,43433,2958, 37353,3534, 30597,30964,38607,
9888, 8618, 6696, 16364,7873, 43433,21233,38545,40620,38264,38607,438, 7214, 35996,23888,11846,5165, 35855,40620,380, 20544,37058,28160,26993,40619,34077,30963,
25006,32796,43433,38607,27643,37058,43432,758, 32796,34077,16534,16963,40619,13332,6083, 17678,43432,18402,43432,38606,32796,14556,294, 10325,32837,20532,39354,
39040,24418,9205, 40619,40619,43432,43431,43431,8518, 17434,34873,4052, 34307,40618,37058,29192,43431,33390,43431,21359,38606,21246,32869,38763,18756,37482,22897,
- 22527,5646, 3079, 12712,14685,16101,12474,29157,20955,35298,9515, 32881,6697, 32688,27124,19995,35682,28748,14777,14636,28838,2036, 2369, 31674,13250,4688, 2444,
+ 22527,5646, 3079, 12712,14685,16101,12474,29157,20955,35298,9515, 32881,6697, 32688,27124,19995,35682,28748,14777,14636,28838,2036, 2369, 31674,13250,4688, 2444,
22585,27221,14184,17716,920, 24266,28522,6131, 18076,12314,27067,22045,8640, 34656,6419, 38606,31186,37057,25848,38760,32694,33103,32325,25705,33648,36124,38265,
37469,40618,2605, 35135,35531,38575,32451,22914,27312,34191,40618,37057,21245,10748,28734,8197, 33822,36213,35854,30554,33952,43430,38219,36521,35954,31278,21159,
38340,34491,35278,3595, 36123,38261,37243,5242, 7326, 21232,9756, 33468,130, 7040, 19062,32278,4905, 26773,14254,16853,28875,17391,18534,6987, 29166,12900,43430,
- 40618,33875,25560,36969,20376,38667,28408,38858,23555,37220,32971,27264,9312, 4095, 16701,16486,3540, 5861, 19717,14636,7554, 14867,26138,5877, 9304, 43430,2423,
+ 40618,33875,25560,36969,20376,38667,28408,38858,23555,37220,32971,27264,9312, 4095, 16701,16486,3540, 5861, 19717,14636,7554, 14867,26138,5877, 9304, 43430,2423,
3147, 22773,19696,18592,33536,4045, 6842, 19415,8242, 33337,23684,3388, 38864,39097,2978, 9225, 12598,13469,37808,33003,37323,7388, 7309, 33946,40617,2367, 15359,
33823,43430,5938, 82, 26536,1715, 24499,17844,26227,22425,21532,29945,30713,24472,32812,11638,22021,1006, 1334, 96, 5919, 20868,24398,32342,21767,50, 10096,
- 33908,40617,22060,40617,11788,887, 403, 273, 23642,40617,26544,3048, 25528,36150,4204, 3655, 9505, 18401,7224, 17830,24253,31105,31007,33905,9311, 31097,2325,
- 1872, 6516, 37036,37226,33917,21231,38412,33648,28391,17873,15704,21230,23384,94, 34077,11579,35854,34076,35854,27642,34873,30962,40616,4051, 35854,30961,9883,
+ 33908,40617,22060,40617,11788,887, 403, 273, 23642,40617,26544,3048, 25528,36150,4204, 3655, 9505, 18401,7224, 17830,24253,31105,31007,33905,9311, 31097,2325,
+ 1872, 6516, 37036,37226,33917,21231,38412,33648,28391,17873,15704,21230,23384,94, 34077,11579,35854,34076,35854,27642,34873,30962,40616,4051, 35854,30961,9883,
35403,16113,26255,38606,8745, 43429,37057,17433,23870,15300,40616,40616,16533,26254,40616,34872,33390,35853,34872,43429,33389,30810,6167, 33389,34076,14335,13965,
34872,43429,6300, 43429,38605,4029, 27641,15068,23869,10835,25005,32795,9165, 32783,27640,25004,40615,37695,17892,36728,16691,43428,43428,19845,13357,16485,43428,
211, 6303, 32833,16024,23028,10143,34872,33389,29191,6584, 1243, 32869,35853,18400,4943, 6090, 13906,458, 12310,34871,38605,1054, 9956, 30960,37057,406, 35853,
@@ -14596,7 +14591,7 @@ static const unsigned short Ranks[197839] =
35852,16304,35852,43426,547, 13739,22746,18590,2714, 31879,1986, 19844,40612,30959,38604,22059,33388,27639,12602,19712,43426,29861,7631, 18986,9330, 35852,43425,
19106,36077,12309,35852,38604,33388,37056,32786,6855, 34076,35851,15642,22058,33388,3301, 33388,32795,40612,10175,13905,32795,22057,37056,1456, 12947,465, 10313,
19083,43425,35851,27991,43425,40612,2369, 8175, 1177, 33387,34075,3191, 21242,32794,37055,37300,32962,13007,35851,37055,25780,33045,1936, 14239,11599,32794,43425,
- 40612,1808, 35851,29190,37055,32794,34075,11576,33387,43424,7355, 34075,19187,38603,34870,34075,35850,11897,34074,43424,34074,34563,3808, 6863, 22980,730, 1807,
+ 40612,1808, 35851,29190,37055,32794,34075,11576,33387,43424,7355, 34075,19187,38603,34870,34075,35850,11897,34074,43424,34074,34563,3808, 6863, 22980,730, 1807,
234, 16354,4035, 33380,23396,7417, 8472, 19602,16725,7207, 1982, 5913, 4316, 34074,35637,757, 2729, 2897, 33520,33387,38992,11047,10349,21640,31594,35018,35027,
6780, 17432,38603,43424,13904,32794,35850,23868,40611,14238,40611,34074,1356, 38603,29189,38690,22896,11845,31316,15053,14597,40611,27638,43424,5328, 17389,38970,
19711,12596,11020,35283,21227,18192,555, 12509,16272,27637,10538,2082, 31471,7614, 29791,14947,37153,3056, 16484,1514, 38937,33387,26504,37055,7613, 43423,37054,
@@ -14605,8 +14600,8 @@ static const unsigned short Ranks[197839] =
5393, 37053,17210,19977,35850,33386,38602,22008,31404,14236,38602,14400,33386,43422,40610,17770,43422,43422,36398,6300, 35849,35849,37053,12090,26108,38967,16482,
8966, 18313,30958,35849,9887, 841, 5272, 43422,43421,43421,14596,21241,2251, 24064,8765, 10020,34870,34072,40610,34073,4619, 20593,38602,8744, 38602,38601,18399,
27636,40610,43421,26251,27028,34870,38601,38601,35849,15064,13964,18398,40610,25348,19642,38601,18007,1476, 33467,27635,22056,22055,33386,762, 40609,34073,12081,
- 32793,34869,17431,30957,8400, 43421,5792, 35848,37053,1883, 43420,19609,40609,40609,23867,28961,37091,9886, 5126, 6030, 40609,6029, 43420,715, 6723, 9471, 8704,
- 43420,39353,13467,37933,33386,37742,29623,7612, 33385,43420,38600,34869,12603,43419,29187,27634,34869,4369, 20510,16124,15074,34977,16987,32793,4629, 4829, 1388,
+ 32793,34869,17431,30957,8400, 43421,5792, 35848,37053,1883, 43420,19609,40609,40609,23867,28961,37091,9886, 5126, 6030, 40609,6029, 43420,715, 6723, 9471, 8704,
+ 43420,39353,13467,37933,33386,37742,29623,7612, 33385,43420,38600,34869,12603,43419,29187,27634,34869,4369, 20510,16124,15074,34977,16987,32793,4629, 4829, 1388,
13292,5471, 15268,14613,31341,31381,21041,22532,18280,29270,18174,15290,19756,6967, 10283,14187,22811,18310,15266,23380,15085,29814,29804,7712, 32018,25411,29611,
6134, 19185,34073,26485,27050,37073,7786, 34869,30956,40608,10882,30955,40608,10654,40608,38600,4578, 38449,34868,38392,9476, 37053,11001,14595,14936,33106,35661,
2373, 9809, 18813,34868,12140,3378, 3068, 30031,35566,21544,3468, 19843,20553,1846, 4482, 38202,35385,31940,20509,9675, 26190,37818,40608,40607,34868,12308,21643,
@@ -14616,20 +14611,20 @@ static const unsigned short Ranks[197839] =
32904,4370, 5609, 13963,8399, 34072,2003, 7021, 11575,16532,14404,2382, 38411,6265, 1399, 17388,20507,43417,35848,40607,6686, 12574,5164, 38599,34016,15699,40607,
40607,38599,43417,4186, 14594,37315,5464, 30954,5308, 8278, 29587,19409,13466,32793,7872, 27233,13005,5509, 23865,31415,31002,23864,2581, 40606,37052,38598,34072,
35847,22895,38598,10083,19709,11203,35847,33105,34867,3901, 37911,15697,21224,29004,9503, 25501,16454,35847,33385,34867,40606,369, 3815, 10312,37831,18396,38598,
- 734, 27031,34312,29829,32436,34661,43417,40606,3232, 31212,2146, 5121, 43417,43416,19488,40606,5364, 39183,40605,35818,43416,37698,43416,40605,8974, 35847,6960,
+ 734, 27031,34312,29829,32436,34661,43417,40606,3232, 31212,2146, 5121, 43417,43416,19488,40606,5364, 39183,40605,35818,43416,37698,43416,40605,8974, 35847,6960,
1776, 8285, 14969,13033,16621,37051,20498,25278,11120,18298,34160,35951,35688,31645,583, 2322, 40605,43416,18893,15696,43415,2495, 881, 35776,12833,38649,15558,
26852,33866,17583,16480,32919,7871, 36837,5957, 37204,30953,13661,33220,34867,32790,5078, 32874,35163,33571,2939, 14237,40605,16531,10652,27955,9607, 13962,19123,
21223,27129,18460,34072,19842,32792,38598,40604,5791, 40604,38597,38597,27632,29451,38000,17993,19581,3647, 6476, 11867,4190, 2625, 32777,8265, 35132,36622,12596,
- 33120,40604,27631,7973, 25003,5890, 37714,43415,6004, 26249,16479,35846,13004,5916, 3416, 6231, 24853,33724,35181,34142,13667,43415,35846,36196,37051,27630,5354,
+ 33120,40604,27631,7973, 25003,5890, 37714,43415,6004, 26249,16479,35846,13004,5916, 3416, 6231, 24853,33724,35181,34142,13667,43415,35846,36196,37051,27630,5354,
35764,848, 32891,496, 33436,3644, 1037, 7525, 36473,2712, 6080, 12571,907, 34515,289, 38512,5907, 25270,7961, 13744,1649, 14672,33333,5366, 8521, 14305,23548,
18735,16530,10697,30728,37190,18596,26248,35846,40604,34765,627, 38597,16332,7785, 38597,13903,38596,33385,34071,43415,37051,43414,40603,1541, 23008,9421, 17026,
3196, 40603,15698,21222,957, 4707, 23909,12762,30346,14969,6646, 22985,19325,34071,43414,5083, 35489,43414,5110, 4675, 8111, 3684, 31452,16973,7745, 9504, 33856,
- 8592, 19824,33949,36362,2439, 15697,7489, 12595,5608, 8074, 9674, 34100,15575,37433,34867,40603,11400,1490, 22894,27629,23863,14593,1367, 3258, 9502, 1289, 3702,
- 3948, 2171, 1325, 4667, 33649,3173, 7972, 17387,10971,7325, 12598,13961,15064,8364, 10481,13960,14472,38416,10311,43414,37621,17229,31873,35955,35476,1554, 6788,
+ 8592, 19824,33949,36362,2439, 15697,7489, 12595,5608, 8074, 9674, 34100,15575,37433,34867,40603,11400,1490, 22894,27629,23863,14593,1367, 3258, 9502, 1289, 3702,
+ 3948, 2171, 1325, 4667, 33649,3173, 7972, 17387,10971,7325, 12598,13961,15064,8364, 10481,13960,14472,38416,10311,43414,37621,17229,31873,35955,35476,1554, 6788,
5565, 33216,16478,12760,2936, 10942,14058,9164, 12594,32792,22053,32782,35286,1943, 12048,40603,35458,15142,7189, 20819,28350,38596,16821,22580,17024,17386,33576,
- 14872,26247,4317, 5424, 11897,15553,19184,34071,40602,36360,35846,6639, 6146, 33137,29591,6484, 3295, 9882, 4193, 17385,37579,20450,10035,7930, 30301,19933,6755,
+ 14872,26247,4317, 5424, 11897,15553,19184,34071,40602,36360,35846,6639, 6146, 33137,29591,6484, 3295, 9882, 4193, 17385,37579,20450,10035,7930, 30301,19933,6755,
17994,27934,4048, 10510,3243, 39138,34537,35252,11574,21221,6902, 43413,10754,8514, 5120, 37028,31102,9991, 28592,37295,15478,13465,3129, 26716,31604,20658,17340,
- 15063,33782,29847,26510,21220,39222,3746, 10938,19708,13742,7324, 7152, 36944,26161,11028,5817, 12798,21219,1470, 906, 13623,29231,5749, 5704, 3209, 1708, 8241,
+ 15063,33782,29847,26510,21220,39222,3746, 10938,19708,13742,7324, 7152, 36944,26161,11028,5817, 12798,21219,1470, 906, 13623,29231,5749, 5704, 3209, 1708, 8241,
13817,34490,4368, 11896,12593,10082,5764, 4903, 15688,37928,28814,14714,15369,38718,13464,3263, 11009,5635, 29772,5837, 837, 2089, 5835, 1945, 1678, 3711, 22593,
12228,36157,1186, 9310, 2726, 24181,37986,15452,27435,25205,20019,34583,21165,33860,11027,16477,22435,34834,35845,19393,26748,38596,35417,9881, 35913,18395,35920,
38691,4226, 12592,10753,7151, 3774, 6541, 10537,24776,5429, 5708, 1549, 15062,11304,2401, 38388,40602,23862,30762,21218,35798,17430,2812, 18394,38596,16476,43413,
@@ -14637,36 +14632,36 @@ static const unsigned short Ranks[197839] =
13959,11895,14328,34715,16473,13345,34773,15696,35854,17915,24726,26869,32983,35792,3531, 17390,27628,35845,39043,7422, 16529,5185, 7752, 11025,16472,10081,18397,
27458,19705,19704,38941,8513, 15695,10310,33385,7850, 6224, 13168,38924,10620,16288,21216,21787,21215,4182, 5763, 22890,2637, 14187,12591,18392,38595,13958,15811,
7436, 11843,22974,544, 7007, 8110, 18391,11878,35864,9501, 8109, 13002,12573,35845,40602,3126, 20472,11303,3833, 34039,35167,15061,14471,6404, 18390,40602,13957,
- 17383,39219,37983,16471,32916,14470,36133,11648,16091,12279,38595,37472,5031, 5469, 11573,33608,11560,19661,23587,33290,38583,33551,15588,16668,8512, 16653,8965,
+ 17383,39219,37983,16471,32916,14470,36133,11648,16091,12279,38595,37472,5031, 5469, 11573,33608,11560,19661,23587,33290,38583,33551,15588,16668,8512, 16653,8965,
18389,35201,11572,35845,9439, 10599,5801, 36999,21845,10074,33168,39104,43413,15060,4679, 4968, 22834,31865,15128,1470, 2452, 6069, 38347,3063, 13956,12227,43413,
7971, 3802, 20560,5391, 8620, 34409,14469,7970, 21075,20950,36714,13986,16065,13001,23172,35862,39148,31477,2412, 3924, 3991, 12226,9919, 36383,7098, 17382,37048,
- 26245,39239,34828,17245,6117, 15152,20515,35540,9503, 33537,32822,3965, 13000,7070, 15059,6003, 7551, 9673, 7587, 17328,13342,38042,21214,10752,36927,9816, 9189,
+ 26245,39239,34828,17245,6117, 15152,20515,35540,9503, 33537,32822,3965, 13000,7070, 15059,6003, 7551, 9673, 7587, 17328,13342,38042,21214,10752,36927,9816, 9189,
8964, 14468,16470,14467,36316,10309,14914,13768,34783,18376,9738, 22520,37118,8114, 20530,33995,15556,11114,38678,5789, 20685,19703,10208,11969,16469,8963, 33384,
17381,9233, 34682,16898,16488,37613,33028,32795,37575,15447,10751,33938,4153, 7323, 3027, 17575,13724,18195,24799,38594,39371,15058,25623,18255,35844,34849,35844,
- 10268,33282,964, 13769,4303, 18388,3361, 15793,22893,19702,12225,5880, 32792,37518,17380,37292,36952,12101,12816,33201,21855,22917,8810, 22448,43412,21239,1769,
- 2512, 8199, 2652, 15389,28006,7069, 3741, 13175,1592, 8942, 6928, 25002,13955,8396, 25172,7584, 16599,34054,2807, 2264, 4266, 3237, 5119, 15694,5390, 3311, 9500,
+ 10268,33282,964, 13769,4303, 18388,3361, 15793,22893,19702,12225,5880, 32792,37518,17380,37292,36952,12101,12816,33201,21855,22917,8810, 22448,43412,21239,1769,
+ 2512, 8199, 2652, 15389,28006,7069, 3741, 13175,1592, 8942, 6928, 25002,13955,8396, 25172,7584, 16599,34054,2807, 2264, 4266, 3237, 5119, 15694,5390, 3311, 9500,
11894,37636,5722, 1641, 10155,7092, 883, 35639,6967, 20544,6156, 7751, 103, 1130, 20153,11893,24638,21213,38263,2806, 5564, 8597, 13035,2783, 2805, 11302,16806,
33426,13646,9072, 34563,2571, 4973, 11127,43412,6683, 39019,36761,23919,31807,33384,38137,40601,21238,40601,43412,35844,37051,32791,26244,19701,43412,23861,43411,
26243,33384,43411,8398, 40601,15694,8062, 5516, 27056,12818,37050,40601,13462,40600,15693,38594,15057,34866,19182,16468,43411,21212,21211,13453,6062, 25781,34951,
- 38594,24610,13983,2560, 19150,24341,34866,37050,26242,16962,38594,37050,18588,43411,37050,2826, 5813, 31372,16952,13025,10302,34382,11116,20556,19748,6299, 2428,
+ 38594,24610,13983,2560, 19150,24341,34866,37050,26242,16962,38594,37050,18588,43411,37050,2826, 5813, 31372,16952,13025,10302,34382,11116,20556,19748,6299, 2428,
12953,8191, 15422,27496,20780,4411, 18387,17379,3140, 8240, 7033, 38135,15056,29727,10080,21210,18333,38012,33618,27903,38325,4233, 959, 12408,12636,24612,35129,
7058, 5865, 27833,3746, 16066,34071,2319, 27315,30871,22970,24220,38554,34998,33384,3591, 21209,31997,6212, 35959,37814,39406,32791,18006,23804,38799,18494,18151,
217, 5287, 14958,1646, 16706,33101,19200,24373,38593,14935,23179,34866,34206,19700,33383,907, 1746, 12999,7736, 5853, 10750,18386,15055,11328,7178, 17840,19399,
16276,2887, 38593,456, 5568, 12303,22105,12817,22628,131, 25484,37049,6722, 34293,31502,34116,23634,32791,43410,37454,38593,7695, 33299,7849, 28392,2844, 13886,
19699,38679,14684,4812, 27853,8213, 13098,38230,16506,39379,31447,33002,19698,29778,15403,12435,16543,14139,16325,11521,39392,25267,33068,7802, 28768,16485,14549,
15794,27629,20808,32144,13537,15185,13193,8037, 27476,26579,23737,43410,23310,30284,2427, 18925,4763, 1407, 8414, 8867, 25464,29168,43410,34692,16420,25480,43410,
- 30952,40600,35563,37049,22197,12471,29911,15887,23327,8060, 28685,27330,20619,31836,8239, 15057,37464,10516,24729,4577, 8798, 11352,36468,28850,6346, 26389,1556,
- 33592,39164,23707,16612,24693,24620,17497,29124,5851, 15818,35053,18, 32847,11024,6359, 32791,3100, 4818, 39149,43409,40600,8433, 43409,30951,38619,12998,1693,
+ 30952,40600,35563,37049,22197,12471,29911,15887,23327,8060, 28685,27330,20619,31836,8239, 15057,37464,10516,24729,4577, 8798, 11352,36468,28850,6346, 26389,1556,
+ 33592,39164,23707,16612,24693,24620,17497,29124,5851, 15818,35053,18, 32847,11024,6359, 32791,3100, 4818, 39149,43409,40600,8433, 43409,30951,38619,12998,1693,
34866,1794, 40600,22052,35485,1780, 19697,38593,35844,35843,43409,34070,33383,24127,27627,37049,34865,38592,37049,12997,40599,33383,29186,35843,29185,18385,19841,
- 43409,34743,12572,37048,34865,31269,30950,43408,26241,36404,37838,31823,38592,40599,34070,28388,40599,20506,38592,26890,30949,40599,34070,40598,40598,33622,1096,
- 7287, 18005,20, 14018,31574,33959,24122,34070,29771,22892,21776,40598,15693,43408,3052, 37048,10536,38592,38591,14680,11452,40598,2441, 15692,43408,34865,9161,
- 13902,15580,43408,2957, 35074,18004,25001,40597,33383,37048,9113, 26067,33259,12996,29935,37017,12201,247, 10854,4185, 3324, 12510,8108, 16467,21343,35631,1019,
- 27029,39029,12371,3014, 8030, 32974,25989,2123, 30311,37829,5389, 1399, 4659, 3043, 8322, 1791, 9673, 35919,26033,909, 39114,35887,3957, 27288,32792,43407,1221,
+ 43409,34743,12572,37048,34865,31269,30950,43408,26241,36404,37838,31823,38592,40599,34070,28388,40599,20506,38592,26890,30949,40599,34070,40598,40598,33622,1096,
+ 7287, 18005,20, 14018,31574,33959,24122,34070,29771,22892,21776,40598,15693,43408,3052, 37048,10536,38592,38591,14680,11452,40598,2441, 15692,43408,34865,9161,
+ 13902,15580,43408,2957, 35074,18004,25001,40597,33383,37048,9113, 26067,33259,12996,29935,37017,12201,247, 10854,4185, 3324, 12510,8108, 16467,21343,35631,1019,
+ 27029,39029,12371,3014, 8030, 32974,25989,2123, 30311,37829,5389, 1399, 4659, 3043, 8322, 1791, 9673, 35919,26033,909, 39114,35887,3957, 27288,32792,43407,1221,
2638, 10079,8107, 14592,1107, 12370,1548, 776, 3904, 8315, 16825,6540, 40597,33579,13461,39339,43407,3594, 38591,40597,11023,30048,34526,38591,35843,13620,33757,
617, 38591,22891,40597,1772, 40596,23860,34865,18062,35843,33382,38590,38590,40596,37048,43407,38590,22890,43407,18384,29184,43406,38590,6299, 40596,38589,29183,
4500, 34864,15691,34864,136, 18587,29616,7969, 120, 18383,22051,43406,564, 12542,3450, 27505,16961,18357,3969, 24600,12051,5213, 31591,3854, 13342,19159,33071,
- 3799, 16466,15741,28832,15901,33370,4367, 6553, 12906,36655,10485,2971, 23677,1580, 13460,3751, 5248, 37047,8205, 28873,417, 13272,5037, 11022,29926,9802, 1069,
- 4803, 25947,8308, 7781, 13646,8466, 26484,18901,2942, 28465,16723,8348, 21003,1938, 25929,32085,16624,38722,32292,6270, 33047,36316,38598,34816,25360,29154,4789,
+ 3799, 16466,15741,28832,15901,33370,4367, 6553, 12906,36655,10485,2971, 23677,1580, 13460,3751, 5248, 37047,8205, 28873,417, 13272,5037, 11022,29926,9802, 1069,
+ 4803, 25947,8308, 7781, 13646,8466, 26484,18901,2942, 28465,16723,8348, 21003,1938, 25929,32085,16624,38722,32292,6270, 33047,36316,38598,34816,25360,29154,4789,
33227,1290, 27380,3435, 12927,18080,33097,4907, 4902, 9889, 38589,18711,17464,34069,1231, 22050,35842,34069,39133,38589,35143,38589,38588,34069,16528,37743,29182,
35842,43406,19181,35842,34069,15054,1040, 106, 32533,16465,43406,38588,7962, 39387,5238, 3148, 36332,35626,12911,9499, 35842,38588,5471, 36718,38217,35440,13954,
38588,7803, 19696,40596,5289, 43405,34864,1265, 34864,38587,33382,35841,30948,30947,9085, 14934,43405,38587,27626,27625,34068,36568,6481, 38587,40595,33382,37047,
@@ -14674,13 +14669,13 @@ static const unsigned short Ranks[197839] =
34863,13110,43404,43404,1395, 25979,34068,38587,884, 19083,19380,13619,33381,580, 32790,12224,38586,23050,38041,11416,38048,12590,774, 14236,37047,19840,19180,
43404,16112,18382,3529, 652, 9215, 38586,40594,23859,26203,32909,31429,30789,25000,31334,32688,13837,30375,25734,171, 2494, 37609,11841,7906, 259, 3039, 13313,
29815,29758,23505,250, 19239,33406,34068,40594,16527,12589,26239,43403,7027, 30731,11513,29181,40594,40594,1926, 24438,8191, 4591, 13330,34067,16151,34863,29180,
- 43403,23858,40593,26238,13329,18586,5363, 3327, 17887,37047,11298,30944,35841,13618,38586,878, 1843, 40593,19839,6928, 10122,17429,9757, 7362, 1436, 36798,9268,
+ 43403,23858,40593,26238,13329,18586,5363, 3327, 17887,37047,11298,30944,35841,13618,38586,878, 1843, 40593,19839,6928, 10122,17429,9757, 7362, 1436, 36798,9268,
10732,18564,18381,38133,30182,35841,17345,35840,43403,19695,32779,14713,15601,5025, 2514, 33668,5756, 2165, 9823, 20207,8000, 6434, 9323, 38910,15690,33426,16464,
- 38586,25442,1123, 37046,27624,430, 27125,10651,11201,475, 43403,7270, 40593,334, 10019,2909, 3552, 32851,14898,34863,426, 43402,43402,38585,4487, 29925,7032,
+ 38586,25442,1123, 37046,27624,430, 27125,10651,11201,475, 43403,7270, 40593,334, 10019,2909, 3552, 32851,14898,34863,426, 43402,43402,38585,4487, 29925,7032,
4534, 12801,5241, 634, 43402,43402,542, 13860,17378,11774,40593,2175, 3878, 33381,10336,10650,43401,20613,2908, 35632,40592,20505,43401,35840,34862,24689,43401,
16463,29085,22624,2523, 26841,40592,32790,23849,36441,131, 15, 16462,12995,19579,709, 40592,38585,19179,34862,37046,37046,40592,11399,40591,40591,26237,26236,
- 8743, 19838,947, 18553,15, 8696, 24886,26839,37046,681, 15692,43401,37045,22888,4265, 2300, 31762,22049,20257,20180,35840,20504,13617,40591,35840,7630, 3773,
- 3959, 3936, 35332,26731,39013,27623,43400,35839,38585,20071,6574, 19694,43400,35839,11892,32790,35839,180, 8497, 36539,8167, 21208,34862,21796,34067,18003,3231,
+ 8743, 19838,947, 18553,15, 8696, 24886,26839,37046,681, 15692,43401,37045,22888,4265, 2300, 31762,22049,20257,20180,35840,20504,13617,40591,35840,7630, 3773,
+ 3959, 3936, 35332,26731,39013,27623,43400,35839,38585,20071,6574, 19694,43400,35839,11892,32790,35839,180, 8497, 36539,8167, 21208,34862,21796,34067,18003,3231,
34067,43400,7611, 35831,11398,35839,9204, 36220,9338, 2452, 3511, 6854, 35838,877, 36775,37508,39193,39389,11969,34067,34242,29841,38928,13475,43400,13459,22887,
43399,39093,29179,40591,40590,40590,40590,18297,37313,12816,1364, 27261,32790,16442,25836,35226,21125,33875,5920, 27487,43399,365, 9829, 25468,11891,35838,28308,
40590,43399,20503,4071, 22048,16111,40589,33820,43399,14591,769, 17, 5958, 23719,40589,35838,33381,13071,19693,33912,34021,34862,17521,19299,38585,577, 15298,
@@ -14690,89 +14685,89 @@ static const unsigned short Ranks[197839] =
21205,18265,1478, 37044,15691,27622,1046, 12571,17428,3935, 39331,3893, 26772,2750, 19573,38584,3649, 18656,19178,40588,43397,34861,22963,344, 4941, 20267,38584,
6480, 7322, 19691,40588,4367, 9880, 35837,13457,43397,1423, 25655,3983, 4720, 10749,35774,11300,13456,43397,12628,11890,34573,10671,30328,34845,33380,3368, 11021,
22206,23983,21204,7968, 31440,43396,38584,8318, 40588,19177,38583,40587,17427,21203,11419,24999,11324,245, 32977,6814, 36637,11702,22047,35193,38583,1639, 19837,
- 43396,2321, 10320,1259, 24998,37044,43396,24997,9492, 38583,34066,27165,29500,18834,20227,5838, 3673, 10534,407, 11055,26234,4828, 1173, 37044,43396,938, 3672,
- 2744, 11840,30943,34066,10469,14235,38583,39033,1472, 3230, 714, 36991,11675,37044,27356,2562, 43395,29400,30942,15137,1363, 2033, 35837,35837,40587,35837,55,
+ 43396,2321, 10320,1259, 24998,37044,43396,24997,9492, 38583,34066,27165,29500,18834,20227,5838, 3673, 10534,407, 11055,26234,4828, 1173, 37044,43396,938, 3672,
+ 2744, 11840,30943,34066,10469,14235,38583,39033,1472, 3230, 714, 36991,11675,37044,27356,2562, 43395,29400,30942,15137,1363, 2033, 35837,35837,40587,35837,55,
13088,11246,10468,21038,33539,3999, 38582,32863,19690,38582,24748,35836,10748,18762,8238, 37043,3439, 34861,40587,13953,2580, 15053,34066,38779,1985, 25180,43395,
43395,8834, 16915,19412,17426,23857,31820,11527,8282, 34596,8658, 2824, 32789,26233,43395,40587,29177,43394,43394,16526,33811,38582,43394,17092,35836,36744,34861,
43394,28605,34861,11976,14915,31235,35836,43393,40586,38916,32789,37043,20171,17790,1823, 554, 24587,10, 17160,22046,32789,36129,33233,43393,43393,5163, 15690,
19176,43393,37693,37043,40586,34066,1100, 37538,15689,37214,18191,37043,43392,4584, 36069,21280,40586,12080,34065,5379, 37025,5463, 38582,530, 37042,27621,13455,
- 40586,38581,36863,34065,29176,13968,27620,24996,3725, 1303, 31659,1720, 3229, 499, 43392,5999, 7694, 22045,43392,32788,43392,30941,43391,5081, 3835, 37236,6002,
+ 40586,38581,36863,34065,29176,13968,27620,24996,3725, 1303, 31659,1720, 3229, 499, 43392,5999, 7694, 22045,43392,32788,43392,30941,43391,5081, 3835, 37236,6002,
21202,38581,38520,14933,26232,3539, 43391,13952,30940,7990, 40585,38581,29175,19175,29174,25914,43391,30939,1186, 13901,10467,18002,35836,9309, 36221,40585,35835,
17375,11839,8617, 7213, 32941,16460,36158,43391,2258, 33044,3390, 21201,16525,19689,9498, 27858,38581,11671,43390,11299,29148,43390,40585,4827, 660, 43390,24972,
34860,9497, 30938,38580,34860,43390,984, 35835,38628,29173,43389,13900,3113, 1551, 38580,19424,23301,36046,34065,24995,29172,815, 4805, 15160,19397,29955,11570,
2213, 30103,38218,7730, 11889,27619,21761,736, 3719, 7848, 5004, 20971,2179, 35531,4670, 37042,4028, 5985, 16459,7609, 40585,12067,27618,43389,289, 21694,40584,
6146, 35056,10174,16458,3149, 37042,43389,40584,1841, 35835,875, 40584,4771, 4410, 38580,19174,27617,38580,2511, 4962, 23448,45, 6905, 920, 43389,37042,21744,
- 43388,31993,36229,34860,19836,19688,43388,21151,37041,12307,13951,43388,43388,40584,12570,12815,20502,38579,43387,43387,21237,33700,40583,43387,19981,33380,1651,
+ 43388,31993,36229,34860,19836,19688,43388,21151,37041,12307,13951,43388,43388,40584,12570,12815,20502,38579,43387,43387,21237,33700,40583,43387,19981,33380,1651,
33052,27616,37041,43387,2996, 15462,16524,7321, 19039,11888,34698,1183, 35711,1464, 7888, 33380,2239, 40583,37041,4132, 6784, 33209,8973, 40583,1572, 14234,38680,
- 2000, 30937,17425,37041,38579,38579,35835,33380,33416,33379,22399,40583,37216,29910,38579,8848, 17424,34860,1929, 92, 32392,12569,25900,32061,9830, 23856,5742,
+ 2000, 30937,17425,37041,38579,38579,35835,33380,33416,33379,22399,40583,37216,29910,38579,8848, 17424,34860,1929, 92, 32392,12569,25900,32061,9830, 23856,5742,
15689,4050, 1045, 8144, 32769,29808,31145,11661,36539,33379,6247, 40582,9084, 33379,945, 35373,33106,3337, 9055, 8106, 10747,7691, 15034,33734,15688,21607,35716,
21200,39037,39273,5327, 17881,831, 7320, 21199,24546,17374,1154, 35521,4756, 36702,33967,10746,22604,1536, 13950,11372,38135,29171,19793,7582, 12152,25502,21198,
38532,10440,27615,9879, 43386,39119,35737,38578,29170,26231,32972,40582,14590,38578,43386,37802,38578,29169,38072,15297,43386,18001,32870,34859,376, 34722,32788,
6189, 40582,21236,43386,13949,8237, 1786, 3998, 7237, 18462,1712, 19687,43385,31647,33327,22202,27104,282, 737, 27443,36502,12223,34065,32788,40582,32461,32788,
16891,25788,38423,5428, 28072,15548,26897,15662,30039,20893,1964, 27231,43385,9469, 43385,34064,35834,1163, 2381, 37021,33745,37503,7521, 43385,10220,17402,12588,
- 1266, 6331, 36338,43384,13264,22886,22885,40581,1952, 40581,17373,2623, 27614,34859,40581,15687,35834,14972,1762, 36504,10, 14472,15030,6715, 28423,31067,749,
+ 1266, 6331, 36338,43384,13264,22886,22885,40581,1952, 40581,17373,2623, 27614,34859,40581,15687,35834,14972,1762, 36504,10, 14472,15030,6715, 28423,31067,749,
11908,8573, 3080, 7057, 8654, 32883,32779,28342,11710,21769,12760,10600,11832,18868,17649,29376,31686,28051,31650,13491,21073,19260,11666,23452,5113, 9590, 11173,
- 15882,9905, 17867,25812,9496, 26737,3354, 3035, 5809, 33379,38714,22120,15868,5450, 23420,6445, 32800,26497,26124,29533,30329,863, 10181,29633,7985, 16110,2114,
- 23168,10052,14996,43384,40581,7651, 8511, 28613,5474, 43384,16123,43384,33328,13866,18585,33378,37040,40580,3051, 4082, 28120,27613,6324, 43383,9675, 19686,7008,
+ 15882,9905, 17867,25812,9496, 26737,3354, 3035, 5809, 33379,38714,22120,15868,5450, 23420,6445, 32800,26497,26124,29533,30329,863, 10181,29633,7985, 16110,2114,
+ 23168,10052,14996,43384,40581,7651, 8511, 28613,5474, 43384,16123,43384,33328,13866,18585,33378,37040,40580,3051, 4082, 28120,27613,6324, 43383,9675, 19686,7008,
35834,27563,409, 13864,31264,9606, 13423,32967,9738, 13523,29691,3613, 40580,13005,40580,34859,24994,19864,949, 16457,5658, 2420, 4597, 15686,33376,25992,11379,
- 20882,27297,19377,37513,34709,32661,43383,20075,16960,37040,19685,2609, 29421,13948,11200,38578,9672, 1147, 36378,33998,21776,6235, 37040,34064,36808,4795, 7757,
+ 20882,27297,19377,37513,34709,32661,43383,20075,16960,37040,19685,2609, 29421,13948,11200,38578,9672, 1147, 36378,33998,21776,6235, 37040,34064,36808,4795, 7757,
10745,40580,38577,34859,10999,23855,9974, 26858,17692,29523,18748,4401, 14932,27842,16886,15527,43383,1278, 12994,11298,27612,16456,18634,28707,27611,37040,43383,
- 2216, 4860, 32787,2081, 3518, 1662, 30412,3793, 33507,19684,43382,26632,38577,12079,16523,3724, 5118, 21197,11020,38577,33020,27492,11398,32866,31700,6298, 7541,
+ 2216, 4860, 32787,2081, 3518, 1662, 30412,3793, 33507,19684,43382,26632,38577,12079,16523,3724, 5118, 21197,11020,38577,33020,27492,11398,32866,31700,6298, 7541,
3982, 15685,8236, 35842,15014,22093,17248,526, 8935, 29630,2403, 17372,5683, 7102, 35075,27430,1770, 619, 7385, 20111,9614, 23039,34289,11297,1757, 24496,19683,
33078,11944,31592,426, 15738,37717,4028, 31708,33590,26871,13097,33060,8105, 8104, 34858,40579,30936,17371,34064,34778,17455,13603,9308, 13454,12993,6853, 21235,
- 23854,35834,23853,43382,43382,17370,5202, 37039,38577,38576,30394,23852,5080, 22044,9468, 27610,35998,40579,43382,34064,40579,43381,40579,9160, 2636, 11019,6188,
- 6974, 30935,40578,10649,38576,33378,22801,38576,32014,43381,30934,30933,18000,5082, 32419,20501,20500,38576,666, 12683,987, 19173,37039,4499, 38329,2453, 2511,
+ 23854,35834,23853,43382,43382,17370,5202, 37039,38577,38576,30394,23852,5080, 22044,9468, 27610,35998,40579,43382,34064,40579,43381,40579,9160, 2636, 11019,6188,
+ 6974, 30935,40578,10649,38576,33378,22801,38576,32014,43381,30934,30933,18000,5082, 32419,20501,20500,38576,666, 12683,987, 19173,37039,4499, 38329,2453, 2511,
16954,5648, 33690,35833,15052,38575,40578,31634,8742, 34858,377, 25375,27156,31963,38801,34063,37039,22043,13899,34063,35833,17383,29168,12306,7961, 43381,12328,
12992,9885, 22042,18380,5837, 11852,11887,12507,10308,21196,13947,3517, 40578,9307, 43381,12587,38575,43380,34858,40578,16799,37039,33026,3981, 7629, 4086, 22542,
5219, 16455,17369,32787,4070, 43380,11397,2534, 10098,5511, 28763,36581,5916, 38575,10744,43380,26282,40577,438, 35825,43380,9467, 7236, 15051,6479, 996, 38575,
- 1394, 19172,35833,16454,34063,14233,37038,4694, 21984,21195,5515, 38574,19682,21194,40577,1313, 43379,30932,5247, 8616, 29167,40577,35833,520, 34329,10307,1947,
+ 1394, 19172,35833,16454,34063,14233,37038,4694, 21984,21195,5515, 38574,19682,21194,40577,1313, 43379,30932,5247, 8616, 29167,40577,35833,520, 34329,10307,1947,
289, 10401,11096,35848,2366, 2417, 35359,32198,23987,3399, 19681,5899, 801, 38574,20782,35069,1248, 21905,8525, 17179,23842,38574,35832,43379,30931,43379,38574,
38573,17778,40577,15850,34602,35940,37038,16453,21193,22340,36150,33839,32787,9306, 13898,11886,32787,37749,23497,38441,35832,33086,10500,33135,8994, 38573,43379,
10533,34858,26230,43378,27149,40576,37996,40576,33378,5514, 19680,4643, 18379,21192,28060,2635, 524, 35138,8658, 40576,7458, 23759,14875,13453,33980,960, 17368,
18378,1719, 12222,2843, 37681,15050,34804,40576,26397,38573,43378,13844,32786,43378,19679,15688,29166,38573,40575,5397, 15501,23851,7693, 38572,1377, 32996,33095,
- 18377,22884,22635,3045, 32786,3104, 2950, 16452,33751,453, 10532,40575,34099,19171,11604,34857,37038,35832,34857,38572,1016, 29716,2357, 36648,37038,26074,2004,
+ 18377,22884,22635,3045, 32786,3104, 2950, 16452,33751,453, 10532,40575,34099,19171,11604,34857,37038,35832,34857,38572,1016, 29716,2357, 36648,37038,26074,2004,
24993,10018,43378,34063,43377,21191,38512,5353, 37037,872, 34075,34857,31742,2874, 15684,7235, 19678,36628,38243,902, 6001, 32043,8313, 38867,17244,35249,28982,
35324,43377,2699, 23462,25518,37758,40575,34232,22355,35832,43377,26229,43377,12814,16451,11574,8281, 29793,15050,459, 3782, 11535,40575,9539, 1349, 30930,37095,
19483,2245, 18957,14260,17412,17367,14466,43376,38572,860, 14661,21190,3408, 34329,16450,15683,6682, 36137,33368,2914, 38572,2320, 21064,34062,32769,19677,40574,
19811,38571,12755,37502,36782,19765,1078, 34792,26353,33935,43376,38589,5025, 16157,7435, 4130, 12991,31802,6986, 35746,38571,43376,38571,28796,11838,7262, 38571,
37037,34857,24241,43376,34999,8667, 30698,36865,25014,27339,24992,38570,32634,26430,10504,29068,9979, 1910, 23026,11920,6203, 14520,17471,30785,6332, 30861,32845,
- 10591,2306, 36766,38380,20018,39348,32823,12068,14626,36924,37552,3432, 203, 21847,1146, 43375,6691, 34062,30929,4216, 38570,43375,43375,33378,29165,9203, 3218,
+ 10591,2306, 36766,38380,20018,39348,32823,12068,14626,36924,37552,3432, 203, 21847,1146, 43375,6691, 34062,30929,4216, 38570,43375,43375,33378,29165,9203, 3218,
19170,40574,33037,43375,11625,28548,22041,37704,1753, 43374,43374,43374,40574,40574,30928,43374,27413,24991,24824,33851,38570,34062,29164,22883,38570,9329, 16522,
9159, 34062,35831,34115,21234,40573,1416, 28034,36219,1056, 24990,19169,43373,30927,1690, 34856,40573,32786,22040,29163,29162,11199,22039,35831,12773,34061,18413,
37037,18197,14589,16521,12823,12813,38569,36432,8421, 14232,11215,13328,38569,22882,20382,43373,579, 18180,22490,8865, 26420,43373,43373,43372,30926,39326,19676,
40573,23850,32786,32785,21189,16449,40573,4435, 43372,34061,13327,37541,13616,30925,43372,2289, 22110,33119,16490,40572,30924,22351,43372,38569,3662, 1545, 26332,
29830,10078,13542,3085, 21672,30322,38569,8125, 3814, 7628, 11454,37612,40572,5825, 29088,4575, 14688,9153, 12812,38567,34061,1971, 6969, 15595,35831,8280, 32785,
- 14931,30923,29161,4859, 34501,28230,36277,39056,10531,22214,38807,8235, 6082, 43371,38568,20499,11603,34061,40572,25365,19835,16448,617, 20317,20987,23681,8595,
+ 14931,30923,29161,4859, 34501,28230,36277,39056,10531,22214,38807,8235, 6082, 43371,38568,20499,11603,34061,40572,25365,19835,16448,617, 20317,20987,23681,8595,
24222,19310,31991,23290,27609,6401, 37410,16338,5348, 20498,40572,23849,28710,43371,3772, 14588,43371,43371,591, 24919,19675,38568,17423,10530,33951,40571,29160,
23848,40571,34060,181, 38568,34060,35831,5819, 13946,10319,35274,34856,38568,17762,38567,4711, 17654,20497,23847,43370,35830,37037,35830,40571,17999,43370,27608,
- 43370,33339,10998,30922,40571,8796, 35748,37036,15682,40570,40570,4674, 10564,34060,28982,38567,21233,40570,11198,32785,43370,1812, 43369,11645,34060,34856,9496,
+ 43370,33339,10998,30922,40571,8796, 35748,37036,15682,40570,40570,4674, 10564,34060,28982,38567,21233,40570,11198,32785,43370,1812, 43369,11645,34060,34856,9496,
5728, 17855,33377,6028, 35830,19834,8847, 13897,14465,4775, 37036,29159,43369,768, 15695,32112,34059,21232,19833,34059,6852, 40570,34856,7517, 5647, 34855,16447,
3210, 17998,33231,1431, 24892,32785,3767, 37036,24989,24727,2357, 23846,2903, 29158,7286, 43369,35830,36274,43369,38567,37826,37294,11569,28305,21188,40569,36320,
8615, 27607,40569,38920,28721,2800, 20496,22038,37036,11837,18524,17422,29157,15049,5692, 32784,34717,38102,35457,40569,15048,13936,43368,43368,34855,37256,22869,
35936,37035,38567,757, 16955,14993,16414,25920,19678,31822,27953,13882,20281,13856,17712,34059,21231,26825,25383,34059,23567,1174, 43368,43368,16097,40569,24988,
- 25109,43367,38566,24381,39292,22503,34954,17421,14930,34058,40568,4131, 34855,37035,43367,33377,43367,1314, 18376,3163, 29381,11296,37035,35704,29156,35829,8397,
+ 25109,43367,38566,24381,39292,22503,34954,17421,14930,34058,40568,4131, 34855,37035,43367,33377,43367,1314, 18376,3163, 29381,11296,37035,35704,29156,35829,8397,
34855,6973, 26228,38566,39127,2627, 19674,17420,33377,17366,33377,22354,8962, 13452,17365,17364,37035,22037,15047,32784,32784,9566, 14361,5852, 4740, 11902,43367,
36709,34854,12568,27606,40568,32795,1249, 22273,38566,1109, 40568,11540,1466, 17176,15046,36728,6985, 5793, 39402,25922,16446,19168,5218, 15045,38566,19673,33376,
- 40568,38565,37034,43366,38707,11393,33870,21230,37391,26879,38485,29155,19832,27605,34058,15687,30921,40567,19060,10529,43366,21187,3503, 12160,22569,12305,3977,
+ 40568,38565,37034,43366,38707,11393,33870,21230,37391,26879,38485,29155,19832,27605,34058,15687,30921,40567,19060,10529,43366,21187,3503, 12160,22569,12305,3977,
40567,23845,38084,1280, 38565,1458, 9158, 37034,37034,3320, 12221,12586,4666, 37034,4574, 15044,16445,29190,8977, 18542,36666,6027, 23844,40567,43366,38026,38565,
13611,17772,14231,2681, 38565,971, 25336,28104,38834,20865,167, 13165,17744,18375,13326,13463,26227,43366,43365,38564,38564,31075,14243,10439,3541, 32990,29644,
- 40567,37033,19167,33157,36018,39399,8339, 25114,7920, 37033,40566,43365,6871, 12304,12141,6237, 2493, 7354, 22798,35932,24987,32475,4528, 6279, 23843,19166,1118,
+ 40567,37033,19167,33157,36018,39399,8339, 25114,7920, 37033,40566,43365,6871, 12304,12141,6237, 2493, 7354, 22798,35932,24987,32475,4528, 6279, 23843,19166,1118,
6933, 29552,39339,7434, 34854,34437,6166, 40566,19672,11836,9884, 25110,34058,43365,19831,40566,32818,18584,6721, 19671,40566,10711,6468, 37033,23842,9466, 14587,
17363,732, 24986,7285, 32784,5679, 34854,32783,43365,8846, 16520,151, 26226,43364,14586,27604,38564,30920,3426, 15296,34058,40565,9083, 2455, 27603,22881,34854,
1927, 33056,32783,34057,19670,33376,35339,30919,40565,8742, 37286,28545,33286,37033,32783,35829,30918,40565,38564,32783,17997,35475,6656, 34997,21927,14813,30458,
- 6081, 29154,43364,43364,35829,6080, 33016,30917,37460,34501,11568,28010,38563,13451,20495,21229,34407,43364,2288, 36411,30544,25841,3489, 43363,23965,23418,9455,
+ 6081, 29154,43364,43364,35829,6080, 33016,30917,37460,34501,11568,28010,38563,13451,20495,21229,34407,43364,2288, 36411,30544,25841,3489, 43363,23965,23418,9455,
19799,26012,38563,30916,40565,38563,43363,35829,15681,8961, 23841,15680,38563,40564,37032,40564,34647,43363,40564,14929,33900,34853,37032,19830,43363,6583, 40564,
- 12945,33826,6234, 12655,20163,30812,12213,36700,16444,33889,43362,2710, 14232,38562,38562,43362,14585,16109,37032,38562,1850, 1197, 9878, 5790, 27132,32782,2698,
- 9883, 40563,6582, 11993,5596, 20594,10712,8898, 7446, 38562,38089,32948,37364,43362,36439,19829,34038,25143,527, 34729,37032,3744, 21110,32782,1781, 11861,2076,
- 8517, 33847,29153,38859,3388, 22993,10828,34241,8720, 21344,2009, 40563,32973,40563,33376,3349, 26475,38561,24985,43362,34057,43361,8061, 37031,18771,43361,9877,
- 43361,38561,28692,6079, 19165,36941,10391,13896,26151,8972, 606, 32782,33000,38341,34853,32782,43361,40563,38433,41, 20494,40562,37094,40562,37031,35828,5789,
+ 12945,33826,6234, 12655,20163,30812,12213,36700,16444,33889,43362,2710, 14232,38562,38562,43362,14585,16109,37032,38562,1850, 1197, 9878, 5790, 27132,32782,2698,
+ 9883, 40563,6582, 11993,5596, 20594,10712,8898, 7446, 38562,38089,32948,37364,43362,36439,19829,34038,25143,527, 34729,37032,3744, 21110,32782,1781, 11861,2076,
+ 8517, 33847,29153,38859,3388, 22993,10828,34241,8720, 21344,2009, 40563,32973,40563,33376,3349, 26475,38561,24985,43362,34057,43361,8061, 37031,18771,43361,9877,
+ 43361,38561,28692,6079, 19165,36941,10391,13896,26151,8972, 606, 32782,33000,38341,34853,32782,43361,40563,38433,41, 20494,40562,37094,40562,37031,35828,5789,
38561,22415,3877, 34853,35576,24984,29152,17996,34853,40562,19669,32781,21228,37031,32781,38561,33376,40562,23477,13895,43360,6655, 38076,19164,37031,29151,40561,
43360,17362,40561,38560,3463, 16108,19163,18717,9202, 32781,18583,35828,21392,5691, 38560,43360,43360,19668,38720,8614, 4710, 40561,34057,34057,43359,34056,40561,
24160,12567,34056,28094,38560,43359,13124,38560,29150,9201, 35828,38559,19162,32781,32780,34852,40560,34852,26983,37030,37030,33375,37030,34056,9495, 37030,35828,
36976,15472,34852,13450,10827,21227,7177, 1804, 31590,8795, 2313, 37961,3112, 169, 21705,21811,7627, 31434,11072,40560,685, 3793, 20280,17713,9322, 38805,34056,
34852,864, 12495,4881, 19328,3008, 27974,6972, 33322,37029,12984,43359,24983,43359,34851,1784, 12585,35927,12566,34055,32780,26225,35827,6026, 21226,37029,34055,
43358,37029,12125,16622,35827,40560,1576, 34851,32780,1160, 35827,2947, 28125,1451, 38559,43358,38559,43358,37029,18374,37819,35602,11885,21225,43358,28972,34768,
- 40560,22880,33804,34267,9451, 38966,1447, 28708,7644, 28726,34477,4817, 40559,38559,852, 33705,3438, 38558,5099, 21773,30517,29613,11913,29236,33031,13381,236,
+ 40560,22880,33804,34267,9451, 38966,1447, 28708,7644, 28726,34477,4817, 40559,38559,852, 33705,3438, 38558,5099, 21773,30517,29613,11913,29236,33031,13381,236,
21596,27602,12584,4573, 37028,36767,19667,10010,35827,5060, 43357,5925, 18373,20905,27601,237, 31375,12741,13326,23840,34055,36807,24166,17903,20736,34851,30915,
19161,43357,36315,43357,1149, 33646,9082, 35826,2561, 23289,10017,32780,34851,38558,29149,29148,22036,11197,34055,8845, 38558,37028,40559,913, 8234, 18372,43357,
492, 36738,11131,9081, 34850,32904,32824,34734,22035,6901, 807, 33375,5690, 14584,17995,1771, 38558,30914,32779,4403, 470, 5146, 32733,27687,26840,28171,26224,
@@ -14782,17 +14777,17 @@ static const unsigned short Ranks[197839] =
40557,9899, 21186,37600,1752, 3031, 35169,36791,33993,34049,27572,31812,32774,30240,18049,17273,31767,18463,12980,17357,40557,123, 40557,33375,22879,7692, 26223,
38557,34054,4555, 10977,15686,4069, 5058, 14443,43354,5879, 20493,26222,2749, 11567,26290,35826,489, 446, 14028,6760, 23755,13844,14141,32855,19608,31820,22563,
12373,25777,35826,12229,120, 14357,2958, 29357,25325,22528,32858,31268,26221,35826,27600,12303,34054,43354,13325,11396,7212, 7136, 20492,40556,35825,35825,34650,
- 9328, 43354,12318,43353,18371,9465, 7433, 16061,18910,7784, 38557,30912,33375,1349, 34219,34053,16442,13169,43353,43353,8960, 16959,9882, 22033,40556,96, 9920,
+ 9328, 43354,12318,43353,18371,9465, 7433, 16061,18910,7784, 38557,30912,33375,1349, 34219,34053,16442,13169,43353,43353,8960, 16959,9882, 22033,40556,96, 9920,
38282,699, 2275, 2375, 761, 9464, 2769, 38557,26178,43353,34514,3162, 643, 1698, 697, 43352,15043,18370,3766, 95, 22878,43352,14587,19666,15678,2499, 21510,
834, 27856,20886,339, 754, 29487,35851,38556,3849, 11687,32318,32779,2516, 6042, 11106,15295,7054, 19665,15042,9671, 35705,5079, 3265, 1355, 17361,708, 21915,
- 1703, 32879,12732,20818,35791,7144, 11566,4919, 8794, 33374,2778, 6175, 16200,38143,19274,12277,31920,24735,18369,34053,32853,18574,11602,37026,35384,43352,1988,
- 14202,14464,19664,21336,31319,15041,43352,34850,897, 4047, 1545, 11884,34555,43351,21224,1482, 43351,34850,43351,1498, 137, 32807,24406,8726, 12154,16519,8619,
+ 1703, 32879,12732,20818,35791,7144, 11566,4919, 8794, 33374,2778, 6175, 16200,38143,19274,12277,31920,24735,18369,34053,32853,18574,11602,37026,35384,43352,1988,
+ 14202,14464,19664,21336,31319,15041,43352,34850,897, 4047, 1545, 11884,34555,43351,21224,1482, 43351,34850,43351,1498, 137, 32807,24406,8726, 12154,16519,8619,
13059,1313, 35804,26220,7783, 13945,40556,2833, 10826,386, 18522,34347,11286,9605, 26219,29113,14230,11395,25912,11601,19578,32779,40556,35639,37026,1394, 24982,
- 3246, 34692,11196,33143,2495, 39089,6099, 9964, 16588,36139,3455, 347, 25864,11695,24469,22050,17360,34315,26331,8452, 19945,410, 29846,23387,15890,2023, 5512,
+ 3246, 34692,11196,33143,2495, 39089,6099, 9964, 16588,36139,3455, 347, 25864,11695,24469,22050,17360,34315,26331,8452, 19945,410, 29846,23387,15890,2023, 5512,
23580,9670, 32935,25446,32779,5260, 888, 17265,13615,838, 6964, 8636, 7610, 25521,10334,5832, 11102,7608, 24601,521, 40555,30487,1985, 2592, 1451, 21065,32768,
34053,2611, 6619, 21185,4409, 40555,40555,27588,43351,35825,29146,19160,34849,10768,32495,36862,38556,16107,34053,43350,35305,40555,34849,37026,29145,27954,25677,
12583,38191,37026,8741, 8971, 22881,35825,11905,43350,21223,38420,35824,11394,5595, 8613, 40554,43350,5362, 23839,30911,38556,43350,27599,6783, 36307,40554,43349,
- 35824,7432, 34849,40554,2246, 34849,43349,33374,37025,37025,43349,27598,38556,43349,17993,38332,36362,21222,24981,34052,11835,7782, 11295,37885,37617,26493,1676,
+ 35824,7432, 34849,40554,2246, 34849,43349,33374,37025,37025,43349,27598,38556,43349,17993,38332,36362,21222,24981,34052,11835,7782, 11295,37885,37617,26493,1676,
2823, 467, 8513, 21028,26808,20994,34457,40554,43348,39246,22032,19511,13324,38786,32778,5920, 17796,34122,23607,6539, 17359,14735,37572,21184,6923, 24011,32162,
34803,34471,23275,36121,4108, 34807,36265,9327, 27881,33995,39302,24980,43348,12565,37025,43348,38555,29144,7421, 21988,43348,30910,35824,3311, 22031,5741, 33374,
33310,35389,15040,32526,33720,10509,2666, 10711,36003,10191,9019, 14479,32778,28205,1499, 33167,36816,33156,40553,37101,33996,23106,19663,4156, 8516, 40553,12302,
@@ -14803,19 +14798,19 @@ static const unsigned short Ranks[197839] =
21183,11834,34600,3777, 10131,8104, 28430,32785,39130,9644, 18368,333, 34879,31759,1768, 21221,6538, 25640,2635, 38554,34848,132, 3404, 22117,28336,31847,28266,
31323,15370,20491,5508, 7870, 5246, 15685,33373,19159,572, 37778,43345,26218,37024,38554,11393,43345,37024,5919, 34847,1895, 15293,5646, 13032,33624,40552,12220,
34847,1702, 9604, 40552,4294, 33901,8970, 23838,18627,38719,29142,198, 23182,17678,766, 19181,37024,36473,1308, 15677,37286,7083, 34597,34052,36851,13323,37023,
- 22029,37511,13894,30909,5689, 3778, 32777,24979,21912,12082,18401,22623,26217,35276,10825,16685,8514, 18582,34847,23837,22307,4598, 37023,33720,23146,33891,7780,
- 36902,10318,8589, 17933,1403, 39137,12023,25178,38979,28975,22877,31596,33649,24770,8406, 2061, 10996,6133, 31743,23653,43345,31286,891, 34764,5946, 37828,1948,
+ 22029,37511,13894,30909,5689, 3778, 32777,24979,21912,12082,18401,22623,26217,35276,10825,16685,8514, 18582,34847,23837,22307,4598, 37023,33720,23146,33891,7780,
+ 36902,10318,8589, 17933,1403, 39137,12023,25178,38979,28975,22877,31596,33649,24770,8406, 2061, 10996,6133, 31743,23653,43345,31286,891, 34764,5946, 37828,1948,
117, 3629, 697, 2320, 862, 36912,36329,2992, 38102,36463,11850,3720, 13884,12248,37929,38257,40552,43345,14229,43344,26216,21220,18581,37023,17992,16517,39093,
43344,43344,32777,37023,17991,37022,5645, 436, 1124, 1683, 37022,5553, 23836,3593, 344, 988, 4238, 38575,7607, 35823,109, 37022,11392,38554,37022,6615, 17068,
- 38881,34617,8785, 3671, 43344,30737,40551,23835,3298, 35751,23314,19828,23627,5552, 43343,22028,35605,8037, 1708, 15317,268, 18873,31435,6154, 1448, 15981,8851,
+ 38881,34617,8785, 3671, 43344,30737,40551,23835,3298, 35751,23314,19828,23627,5552, 43343,22028,35605,8037, 1708, 15317,268, 18873,31435,6154, 1448, 15981,8851,
18914,214, 1166, 26408,34539,21923,28518,36977,4535, 6767, 33250,38652,34847,15261,43343,10844,19, 2894, 24562,13926,21539,32516,26402,13050,640, 47, 29347,
26215,10252,28362,130, 32874,770, 37651,3050, 968, 38472,18367,34846,7847, 21182,10640,11268,16985,18366,9652, 23834,8305, 20719,40551,8740, 9494, 37713,13449,
37066,38290,8959, 18365,43343,31406,15238,26032,26164,21181,2150, 23365,15039,36310,22027,12650,25295,35044,21180,781, 10986,18364,1327, 2100, 4285, 24607,35753,
- 953, 17358,19989,34189,37729,31348,7291, 17825,2830, 2899, 7138, 500, 23054,13348,17418,22249,32777,18580,20386,36364,35421,37021,34846,1221, 19661,21584,1016,
- 38554,34237,34833,34452,37603,10648,43343,33020,36453,453, 43342,37588,21611,729, 32776,33420,34846,40551,27596,15073,15535,32184,1358, 34846,34845,43342,4530,
+ 953, 17358,19989,34189,37729,31348,7291, 17825,2830, 2899, 7138, 500, 23054,13348,17418,22249,32777,18580,20386,36364,35421,37021,34846,1221, 19661,21584,1016,
+ 38554,34237,34833,34452,37603,10648,43343,33020,36453,453, 43342,37588,21611,729, 32776,33420,34846,40551,27596,15073,15535,32184,1358, 34846,34845,43342,4530,
37725,37021,24978,35823,40551,13614,35822,40550,33373,11833,43342,43342,34032,1775, 43341,15627,24977,21219,35220,38553,9200, 43341,34845,7606, 4402, 5462, 27595,
5152, 29141,21179,34845,34052,32776,29140,2323, 20490,4404, 7540, 21178,4799, 15676,1560, 15038,11883,35752,31130,37252,23960,38553,38553,34845,29139,40550,27594,
- 37021,33373,17417,20052,14419,21383,34844,32863,20027,35660,38853,17990,32776,21218,2071, 13448,32900,12621,25003,32776,10528,21177,16597,12144,29693,6074, 9904,
+ 37021,33373,17417,20052,14419,21383,34844,32863,20027,35660,38853,17990,32776,21218,2071, 13448,32900,12621,25003,32776,10528,21177,16597,12144,29693,6074, 9904,
10369,10077,38607,8793, 18363,36674,11882,28254,31830,27627,20026,20212,34051,16516,43341,43341,43340,40550,1596, 27070,2243, 8192, 23083,25757,26657,15037,40550,
7539, 11565,33065,43340,43340,24104,43340,19827,43339,26214,23833,4529, 9325, 40549,34051,38553,34844,40549,14928,43339,30908,27593,43339,43339,16958,38552,38566,
40549,32775,16106,33372,32775,9199, 10647,26213,40549,38552,38552,35822,35822,4778, 13944,17989,22876,36561,34221,3161, 21288,34125,40548,38552,32775,13893,40548,
@@ -14824,22 +14819,22 @@ static const unsigned short Ranks[197839] =
38595,34603,19140,14957,33321,27329,35688,40547,34844,473, 8824, 26691,7814, 10922,2078, 13672,4925, 35783,1905, 16441,6345, 34977,11564,1974, 27591,34843,15036,
34783,21133,34050,38551,30906,34843,43337,35821,35990,6236, 24303,43337,43336,43336,34843,24023,203, 30919,2953, 13057,12301,8844, 37020,32775,43336,27590,35567,
37020,9385, 15407,36879,37020,11129,19139,33074,39333,29849,34841,43336,30213,17988,37721,36635,33309,36273,34050,26099,449, 32967,38057,13049,15169,26309,40547,
- 37795,23926,8984, 37941,35821,18362,32971,43335,36564,38551,38551,30696,35821,27589,33372,30905,8060, 40546,38551,33372,10466,19619,26000,15292,30904,27588,4628,
+ 37795,23926,8984, 37941,35821,18362,32971,43335,36564,38551,38551,30696,35821,27589,33372,30905,8060, 40546,38551,33372,10466,19619,26000,15292,30904,27588,4628,
40546,33372,40546,14927,8969, 40546,5974, 9881, 19825,22873,38550,34495,16957,35821,38550,37019,32774,21215,23338,40545,27587,29135,34843,20489,35820,33371,40545,
10646,33371,43335,19568,13958,34820,23831,335, 38550,38550,35820,36419,17357,7085, 12219,24352,8325, 31785,13756,39088,35397,31147,35664,30648,43335,33369,36533,
40545,1336, 19070,35935,17416,26035,20488,38549,8657, 21214,38549,36058,20620,6981, 34842,21176,34842,43335,23323,20487,23497,43334,7691, 25226,37019,6292, 19463,
37019,21715,33371,11195,43334,33890,38549,27735,16381,3049, 3853, 9121, 15229,23416,25932,16683,16248,26956,3593, 13943,37959,34886,21733,1488, 127, 19393,11584,
1979, 25295,12564,32683,17305,1719, 22026,3160, 2592, 38791,16848,33784,8809, 38417,14924,18361,31225,37908,33371,2102, 36414,32774,37848,915, 43334,36525,19975,
32016,34842,29134,11161,37057,8138, 34081,37019,43334,397, 43333,40545,34074,22943,43333,4438, 6233, 34620,37803,32148,4492, 27235,30903,34049,960, 37894,15710,
- 999, 863, 34842,22025,4048, 2904, 38549,2557, 6359, 38548,457, 1792, 3427, 38208,4986, 5201, 19157,952, 34049,40544,22072,34049,148, 23218,1859, 997, 2066,
- 20641,34049,19156,4176, 358, 10355,271, 830, 10059,16934,7438, 1688, 4454, 11999,7491, 23240,3102, 20609,36465,666, 2074, 9739, 8792, 21175,2318, 26893,8004,
+ 999, 863, 34842,22025,4048, 2904, 38549,2557, 6359, 38548,457, 1792, 3427, 38208,4986, 5201, 19157,952, 34049,40544,22072,34049,148, 23218,1859, 997, 2066,
+ 20641,34049,19156,4176, 358, 10355,271, 830, 10059,16934,7438, 1688, 4454, 11999,7491, 23240,3102, 20609,36465,666, 2074, 9739, 8792, 21175,2318, 26893,8004,
6872, 33983,27185,3822, 31608,25399,39342,17081,34089,37472,15035,7626, 29553,9438, 10399,24938,37982,35515,21428,13878,12989,21247,34768,6158, 22959,36456,20877,
- 3120, 38884,35967,1444, 10631,10080,3090, 5158, 29595,21856,37473,35113,34690,19675,14462,12771,34537,34813,9022, 29133,4484, 14508,43333,34677,9305, 13321,4437,
+ 3120, 38884,35967,1444, 10631,10080,3090, 5158, 29595,21856,37473,35113,34690,19675,14462,12771,34537,34813,9022, 29133,4484, 14508,43333,34677,9305, 13321,4437,
22891,28504,29461,16684,34841,7402, 15687,13027,13892,30188,1072, 8135, 32126,14023,9980, 36046,1715, 910, 38406,397, 9972, 22468,29103,31890,25291,31276,40544,
15771,17402,3510, 2344, 13854,1362, 1966, 2743, 3369, 3437, 3228, 12738,276, 27360,37768,5184, 35820,34048,34841,24711,35254,33998,10306,2895, 17356,17977,30306,
2105, 6444, 1397, 5293, 43333,1670, 8661, 38034,4226, 43332,5461, 5117, 40544,43332,32774,33370,30263,27597,26211,13349,3509, 2865, 1701, 21213,28549,14511,34048,
- 43332,13016,35820,43332,8902, 43331,37018,37018,7690, 37862,27268,15842,29132,43331,40544,43331,32774,43331,43330,460, 1006, 25483,40543,40543,2428, 31002,395,
- 37018,6358, 30902,39259,2257, 15856,17390,30419,33849,37018,40543,987, 37984,3670, 11390,40543,16290,38548,35819,5833, 2608, 40542,26231,428, 31216,3492, 2188,
+ 43332,13016,35820,43332,8902, 43331,37018,37018,7690, 37862,27268,15842,29132,43331,40544,43331,32774,43331,43330,460, 1006, 25483,40543,40543,2428, 31002,395,
+ 37018,6358, 30902,39259,2257, 15856,17390,30419,33849,37018,40543,987, 37984,3670, 11390,40543,16290,38548,35819,5833, 2608, 40542,26231,428, 31216,3492, 2188,
12011,5602, 3521, 21968,23874,3297, 2864, 36046,18360,750, 3003, 37898,23631,43330,34841,6842, 30901,18329,466, 5253, 528, 31331,575, 24446,726, 949, 36161,
29131,26210,1112, 18190,43330,2508, 9453, 10618,32985,10261,33915,9304, 15469,12988,30039,24797,3111, 676, 17889,590, 5, 13662,10283,36443,20838,9324, 37017,
34841,3247, 1993, 1333, 2946, 13208,6698, 34048,43330,21266,2319, 20822,22400,8612, 27586,22872,994, 25865,12218,32995,9303, 208, 23022,3110, 40542,3669, 21322,
@@ -14851,26 +14846,26 @@ static const unsigned short Ranks[197839] =
987, 37016,10170,17154,1582, 40539,11168,712, 15917,31859,20666,2032, 6979, 43327,10563,21174,2665, 1031, 423, 17805,34111,13994,6979, 19275,4498, 6403, 10743,
5849, 18131,10527,12217,37576,1163, 713, 6531, 40539,27823,36182,20243,36484,43326,40539,12531,26742,40539,21211,2301, 9318, 887, 452, 40538,29888,15683,17985,
32773,14583,34047,43326,178, 14924,19823,43326,11831,19567,2399, 38493,16956,43326,38545,40538,37016,196, 27583,11017,38545,40538,38545,10824,6922, 15034,36748,
- 30898,12987,38545,3488, 23593,7689, 19154,3592, 40538,21271,33369,468, 10670,40537,32773,38936,27691,24101,36434,33214,15033,12216,18359,37865,38544,8363, 523,
- 38455,19001,1757, 24973,43325,36165,5563, 40537,819, 2302, 508, 2591, 37016,25025,438, 10869,561, 1687, 7932, 22081,21391,29539,35243,5287, 15218,38544,3109,
+ 30898,12987,38545,3488, 23593,7689, 19154,3592, 40538,21271,33369,468, 10670,40537,32773,38936,27691,24101,36434,33214,15033,12216,18359,37865,38544,8363, 523,
+ 38455,19001,1757, 24973,43325,36165,5563, 40537,819, 2302, 508, 2591, 37016,25025,438, 10869,561, 1687, 7932, 22081,21391,29539,35243,5287, 15218,38544,3109,
35818,6136, 25522,28535,5131, 4669, 37015,27701,38848,35818,38544,516, 35818,34572,2291, 34461,1145, 34010,20708,32565,13772,27224,3227, 33710,13612,34047,37015,
31675,16103,389, 2174, 10609,9745, 33252,26080,37573,4677, 32885,15675,10716,37015,29895,43325,24296,22839,33584,32770,21173,16880,33717,36262,17354,7994, 40537,
- 37334,25495,434, 15341,13584,37015,43325,34761,38544,34266,16440,43325,21612,36127,29657,18358,7191, 15032,8944, 18783,15031,15030,12582,29706,10780,37945,9157,
+ 37334,25495,434, 15341,13584,37015,43325,34761,38544,34266,16440,43325,21612,36127,29657,18358,7191, 15032,8944, 18783,15031,15030,12582,29706,10780,37945,9157,
22055,3901, 12027,21210,2829, 1529, 14461,1566, 18357,3947, 18356,9986, 3006, 20671,36386,24969,4389, 13379,34952,37529,34805,14452,30317,24739,38543,17353,43324,
34166,43324,43324,40537,16439,32772,10169,35817,32772,21172,10526,9493, 18355,12986,19660,20383,5934, 17370,13914,37014,24972,37014,9186, 15107,11293,17014,24986,
27935,11016,18304,36892,38762,3611, 6576, 12532,9876, 19288,35006,6719, 8513, 11874,11506,11579,38503,3132, 9997, 34047,26784,10322,11292,38543,38543,36517,24971,
- 19726,36307,26209,9875, 40536,43324,18371,34154,43323,34047,2343, 34963,38603,1858, 35662,3296, 3159, 3048, 40536,36743,1068, 14020,17352,5136, 2265, 23997,4850,
+ 19726,36307,26209,9875, 40536,43324,18371,34154,43323,34047,2343, 34963,38603,1858, 35662,3296, 3159, 3048, 40536,36743,1068, 14020,17352,5136, 2265, 23997,4850,
6052, 959, 12870,7473, 3040, 34721,17124,34840,4554, 2822, 4855, 40536,31095,635, 18413,10316,35817,43323,580, 34721,35763,38423,38816,43323,24970,33369,33369,
- 5329, 27582,12077,16515,43323,15427,10370,12080,3815, 15656,6579, 15868,20757,2301, 437, 707, 1935, 7322, 730, 39144,14473,963, 427, 36420,24134,99, 2131,
+ 5329, 27582,12077,16515,43323,15427,10370,12080,3815, 15656,6579, 15868,20757,2301, 437, 707, 1935, 7322, 730, 39144,14473,963, 427, 36420,24134,99, 2131,
21722,20234,27006,21736,20866,19337,7302, 314, 11932,31803,21095,11563,5192, 18354,30474,9013, 12471,5357, 27926,29399,29130,17992,11015,5564, 4078, 35981,11643,
15486,9221, 18206,30388,12303,35817,35817,30897,37014,43322,21210,23129,38205,29471,134, 25028,31284,25445,23349,3508, 18617,446, 24082,29843,25084,35816,30896,
28705,33460,36903,16102,14859,14228,34840,30895,6187, 17139,432, 32772,11014,20486,2125, 36387,31351,35022,870, 8619, 40536,2312, 43322,34840,2083, 24684,18353,
1700, 26258,10315,32842,37014,40535,621, 3112, 1500, 2526, 36663,2125, 21181,37013,40535,12215,15674,21171,11291,7735, 37629,33292,872, 6676, 18578,43322,34428,
2673, 16913,10908,19322,19368,6756, 4919, 7121, 8400, 17351,14460,16438,37013,622, 7320, 27114,8518, 6185, 17919,24971,38397,28445,23061,18857,43322,4562, 34660,
- 1330, 2350, 1558, 4315, 4297, 5419, 1964, 4412, 28665,19848,38728,11881,12256,9492, 13731,8673, 24561,26950,38121,3673, 34321,22871,38399,32228,8103, 11239,7234,
+ 1330, 2350, 1558, 4315, 4297, 5419, 1964, 4412, 28665,19848,38728,11881,12256,9492, 13731,8673, 24561,26950,38121,3673, 34321,22871,38399,32228,8103, 11239,7234,
18352,1043, 12581,34699,8512, 7959, 34839,43321,40535,43321,37013,22023,34038,19659,43321,10612,15011,31294,19658,13861,16902,27737,19084,34212,17493,13524,38543,
1514, 3359, 3167, 38032,4499, 4260, 10827,4101, 14696,8650, 22760,33631,34046,10534,33129,33138,35400,15721,35816,13447,34029,32831,33818,38360,27581,38016,43321,
- 38542,18810,12769,28074,33374,17938,33030,35472,25518,7604, 20919,15755,37660,36928,37013,33116,12985,24126,13446,15029,5741, 35900,7846, 2522, 10742,11013,9737,
+ 38542,18810,12769,28074,33374,17938,33030,35472,25518,7604, 20919,15755,37660,36928,37013,33116,12985,24126,13446,15029,5741, 35900,7846, 2522, 10742,11013,9737,
34046,37822,21170,19926,11621,15425,26502,17156,8396, 32772,10077,15485,16437,4273, 21658,13397,6779, 13187,12609,4254, 21065,34859,11492,6453, 26774,31515,39238,
8907, 8818, 4772, 7022, 5935, 25291,3318, 3271, 11104,4252, 3209, 2231, 5078, 5706, 3442, 34220,25745,20776,14523,32093,21169,38825,30085,9874, 36016,8132, 34749,
15875,38123,10149,36601,4947, 19657,19508,33246,141, 3743, 6984, 3610, 10076,8233, 37605,25655,21168,29391,9669, 15673,7538, 24656,38697,9650, 9615, 21098,36269,
@@ -14880,40 +14875,40 @@ static const unsigned short Ranks[197839] =
35450,1573, 2256, 34137,12214,1909, 1254, 19655,6904, 21714,37104,36589,23530,15782,7502, 36055,10763,12984,21629,38570,26264,574, 19135,28779,33369,33824,26050,
19654,27636,8783, 36792,17984,5967, 20551,5928, 2470, 4538, 20618,21949,9546, 43320,33059,35110,30497,3555, 35784,38349,1957, 1262, 1498, 6902, 8428, 4628, 40534,
19822,34046,34046,43320,32771,33368,23830,11389,1344, 38542,38065,34430,21183,11388,22022,5361, 27580,38541,16101,38541,38541,34839,18577,37012,16100,15682,40533,
- 12811,37012,35816,37012,33368,30894,9461, 35537,21918,12810,43319,33368,33368,43319,43319,40533,21209,35817,38541,39213,664, 16561,22870,25121,7193, 748, 5389,
+ 12811,37012,35816,37012,33368,30894,9461, 35537,21918,12810,43319,33368,33368,43319,43319,40533,21209,35817,38541,39213,664, 16561,22870,25121,7193, 748, 5389,
784, 2182, 1547, 34798,32771,13156,273, 5736, 33367,34113,37012,1456, 37011,33367,37011,43319,37840,22021,8739, 34838,7958, 35815,5399, 5024, 38540,10314,38540,
38540,15624,37011,34045,218, 26196,7625, 16931,34738,11599,15681,40533,33367,8166, 36740,6232, 9187, 22039,8436, 9934, 35815,17350,18350,4985, 34989,14940,36105,
- 35815,43318,4111, 3553, 8069, 11471,21167,35720,12433,7397, 35631,35427,43318,867, 25694,431, 14123,27995,13118,40533,14583,13677,38407,29253,669, 28826,6983,
+ 35815,43318,4111, 3553, 8069, 11471,21167,35720,12433,7397, 35631,35427,43318,867, 25694,431, 14123,27995,13118,40533,14583,13677,38407,29253,669, 28826,6983,
1881, 1599, 21289,9156, 5144, 33117,37011,10700,43318,36334,24894,26775,14594,4295, 11389,36443,36785,18515,24728,4739, 6841, 11012,6149, 30179,8510, 3248, 14208,
14183,35611,16164,39399,33541,7353, 9460, 38540,38477,39383,14897,30893,31045,43318,18576,43317,34045,38539,40532,33367,24170,1798, 37176,22453,43317,34045,19674,
- 34838,12983,43317,14227,43317,828, 11598,40532,38539,36508,35932,2173, 28168,37770,30892,38902,19653,2804, 9873, 3237, 34382,43316,186, 26550,15672,35930,8361,
- 19652,10899,21166,8277, 36895,35784,14533,8743, 36626,20691,9090, 3877, 3821, 22870,37255,15561,270, 28620,20485,1427, 1223, 33686,8833, 2804, 35592,12450,3328,
- 26122,16773,13648,33771,17058,27026,30891,25842,13942,40532,34045,2751, 7124, 21165,18575,38628,11629,38359,7414, 33377,34838,17349,9450, 20357,34867,38539,8738,
+ 34838,12983,43317,14227,43317,828, 11598,40532,38539,36508,35932,2173, 28168,37770,30892,38902,19653,2804, 9873, 3237, 34382,43316,186, 26550,15672,35930,8361,
+ 19652,10899,21166,8277, 36895,35784,14533,8743, 36626,20691,9090, 3877, 3821, 22870,37255,15561,270, 28620,20485,1427, 1223, 33686,8833, 2804, 35592,12450,3328,
+ 26122,16773,13648,33771,17058,27026,30891,25842,13942,40532,34045,2751, 7124, 21165,18575,38628,11629,38359,7414, 33377,34838,17349,9450, 20357,34867,38539,8738,
38539,33366,10168,33934,7688, 35815,23829,12213,6968, 12209,4758, 1951, 6108, 7574, 4906, 34044,40532,19417,14458,13479,35962,10525,14075,19339,17348,34634,32806,
- 43316,18349,36552,14919,190, 2478, 7428, 16202,38820,33654,695, 33430,1974, 19153,4365, 5008, 961, 1900, 3172, 14457,2775, 23751,3980, 6344, 8008, 11273,3596,
+ 43316,18349,36552,14919,190, 2478, 7428, 16202,38820,33654,695, 33430,1974, 19153,4365, 5008, 961, 1900, 3172, 14457,2775, 23751,3980, 6344, 8008, 11273,3596,
1022, 15410,30525,22987,21164,36237,15631,31067,18348,3654, 9896, 4858, 12513,6702, 11562,18347,10741,38538,34044,584, 1509, 6028, 3945, 19651,1237, 16198,26250,
11561,34076,3296, 35814,20298,37172,21876,13215,34769,15612,9302, 28339,11880,34991,34885,1571, 33963,7169, 38568,14702,6637, 16436,6900, 35457,22942,14235,36629,
12212,15671,11597,37189,10842,37966,34527,30901,38174,3926, 10313,6291, 7626, 35814,3762, 33366,35814,37703,3465, 43316,12982,6652, 35076,35697,1345, 32711,33366,
- 13941,29129,15290,27579,43316,21496,38696,35148,14744,33512,36040,19901,33565,34156,2760, 17053,7319, 29374,35858,38793,20533,33630,13445,38866,7967, 1035, 1202,
- 18728,13955,15833,8375, 3595, 13352,38347,10726,34288,8330, 7391, 33901,26112,7449, 12897,3044, 35814,35813,33561,26207,13891,43315,3008, 34838,17446,2846, 5750,
+ 13941,29129,15290,27579,43316,21496,38696,35148,14744,33512,36040,19901,33565,34156,2760, 17053,7319, 29374,35858,38793,20533,33630,13445,38866,7967, 1035, 1202,
+ 18728,13955,15833,8375, 3595, 13352,38347,10726,34288,8330, 7391, 33901,26112,7449, 12897,3044, 35814,35813,33561,26207,13891,43315,3008, 34838,17446,2846, 5750,
13409,11503,35048,12809,38990,33055,19138,30695,35757,11011,35099,37852,37136,30782,40531,6961, 35944,39073,16077,29656,33566,10296,21163,14064,40531,39168,43315,
25885,34149,34914,27005,15503,38845,34365,33225,15887,12204,1999, 35860,35859,35813,35108,17347,7537, 3259, 35604,16860,32881,13521,34722,33971,31935,5848, 13442,
19047,33763,9562, 33359,21852,19040,15028,2560, 36708,43315,18294,35157,31220,26989,31385,32921,33923,10172,11879,11462,38958,37985,11560,35849,32598,7150, 11059,
38500,34475,30527,37263,12113,21015,3046, 19764,33788,13019,442, 14646,1012, 12436,26745,20913,14531,11883,13600,31656,11663,35099,12313,17346,15600,7268, 23421,
16435,36564,29086,38591,37068,38170,17345,26206,7431, 32771,12563,39077,8612, 24130,35813,37318,24712,5360, 33655,32876,34425,18346,8843, 29128,43315,43314,26205,
- 12076,1837, 43314,29127,38538,38538,37010,15165,12075,33366,16099,22020,38538,1284, 7802, 3993, 25983,9025, 8119, 29189,2754, 19821,38511,13590,29056,15935,1575,
+ 12076,1837, 43314,29127,38538,38538,37010,15165,12075,33366,16099,22020,38538,1284, 7802, 3993, 25983,9025, 8119, 29189,2754, 19821,38511,13590,29056,15935,1575,
19440,28206,33100,18049,13999,28777,36798,3676, 18793,31872,26917,15670,33674,14837,21939,3332, 4181, 15669,14549,19206,39065,21033,2806, 3897, 38047,8939, 34195,
7495, 33159,6394, 36433,30890,22652,34837,23571,26229,5144, 37010,43314,13818,6339, 33949,11156,38254,990, 24858,1921, 16373,35092,39359,10379,39382,36109,21179,
- 3530, 8993, 38164,15668,1788, 13071,10789,38753,34358,26342,740, 43314,13304,18471,29142,12976,8351, 38304,33126,43313,9399, 2908, 4046, 2951, 12580,17344,8957,
+ 3530, 8993, 38164,15668,1788, 13071,10789,38753,34358,26342,740, 43314,13304,18471,29142,12976,8351, 38304,33126,43313,9399, 2908, 4046, 2951, 12580,17344,8957,
909, 9324, 40531,31576,8480, 24969,25106,37409,34774,40531,13319,5057, 33946,14923,19820,43313,34044,33365,30144,16695,38537,38537,15680,33365,35813,43313,43313,
35812,37010,40530,23965,37010,36048,43312,35343,27018,32771,36030,34837,4816, 3956, 43312,29520,35812,15320,20336,6754, 33365,26204,14790,14617,6452, 2346, 23433,
15493,5885, 37309,23812,40530,11439,20051,34044,37406,34043,16434,43312,37036,27002,15944,37667,34154,43312,9450, 14658,29668,35037,40530,8509, 33375,29555,24695,
- 36641,37828,19191,14922,14921,13125,38537,37504,33, 9659, 27741,33018,16022,19429,18541,32926,26759,169, 8280, 37477,32796,43311,668, 38537,40530,389, 710,
- 37009,11596,354, 5091, 2163, 33216,4515, 31948,25169,216, 292, 11794,40529,11387,8968, 14252,160, 2706, 23619,34041,19819,37009,31109,36423,33365,33787,8959,
- 15290,37520,43311,38536,30075,37009,24968,17796,36047,37009,36833,16700,37312,10994,34273,19332,34043,43311,31708,40529,38536,2124, 15679,13978,16433,1088, 2521,
- 24766,43311,4302, 373, 37008,2491, 34837,21843,2705, 33283,34837,34836,43310,20823,866, 16194,43310,37053,22869,34836,29519,84, 23604,986, 394, 300, 482,
- 10976,20305,32814,27578,43310,1711, 40529,33364,43310,21162,29126,14513,8252, 37733,21161,15027,38536,32755,34635,37008,34836,10305,5040, 35127,37431,1047, 2624,
- 31867,26537,20933,27577,43309,24967,4642, 3639, 3595, 34019,13444,36224,6680, 21160,37140,19650,34043,34043,19507,15678,34042,638, 31305,12117,9717, 2707, 3756,
+ 36641,37828,19191,14922,14921,13125,38537,37504,33, 9659, 27741,33018,16022,19429,18541,32926,26759,169, 8280, 37477,32796,43311,668, 38537,40530,389, 710,
+ 37009,11596,354, 5091, 2163, 33216,4515, 31948,25169,216, 292, 11794,40529,11387,8968, 14252,160, 2706, 23619,34041,19819,37009,31109,36423,33365,33787,8959,
+ 15290,37520,43311,38536,30075,37009,24968,17796,36047,37009,36833,16700,37312,10994,34273,19332,34043,43311,31708,40529,38536,2124, 15679,13978,16433,1088, 2521,
+ 24766,43311,4302, 373, 37008,2491, 34837,21843,2705, 33283,34837,34836,43310,20823,866, 16194,43310,37053,22869,34836,29519,84, 23604,986, 394, 300, 482,
+ 10976,20305,32814,27578,43310,1711, 40529,33364,43310,21162,29126,14513,8252, 37733,21161,15027,38536,32755,34635,37008,34836,10305,5040, 35127,37431,1047, 2624,
+ 31867,26537,20933,27577,43309,24967,4642, 3639, 3595, 34019,13444,36224,6680, 21160,37140,19650,34043,34043,19507,15678,34042,638, 31305,12117,9717, 2707, 3756,
11290,21159,8791, 19695,35812,40529,34812,30102,23828,4880, 33364,37008,29234,10629,33594,13318,43309,14920,22019,37008,38536,33364,34836,21782,27694,32376,11878,
6758, 25590,6372, 9479, 26248,22438,43309,32770,379, 37343,8967, 34835,477, 23992,21208,27561,33814,2863, 33837,34633,37033,34893,29455,37604,35801,36230,27161,
37161,39256,22590,31538,38540,38491,43309,38535,22886,24966,43308,37007,24259,38535,18017,23769,27646,30889,5390, 2627, 10740,10310,32155,11559,14550,10304,17935,
@@ -14921,70 +14916,70 @@ static const unsigned short Ranks[197839] =
35734,43308,32770,26203,17412,33284,27029,38534,37007,43308,32770,38534,35230,43307,35812,37007,8397, 21880,34835,38534,34297,23540,30221,34582,35811,27576,38534,
33364,944, 1765, 43307,40528,35811,43307,22377,23903,34042,30151,32715,6813, 17364,976, 25193,6016, 9239, 9668, 43307,10465,24965,38533,22868,34042,27118,34205,
11289,10167,35635,26202,13508,38533,27453,27575,36794,36845,29308,43306,35811,38327,40528,34054,33363,38975,39269,22018,7135, 35811,26505,33130,14919,43306,40528,
- 35810,34368,21481,39327,38533,43306,43306,35037,38533,43305,43305,26201,35810,21207,6186, 39047,33903,5148, 11010,35810,40527,40527,28881,39306,24964,35810,4089,
+ 35810,34368,21481,39327,38533,43306,43306,35037,38533,43305,43305,26201,35810,21207,6186, 39047,33903,5148, 11010,35810,40527,40527,28881,39306,24964,35810,4089,
43305,19643,34835,38532,12300,8394, 36659,21158,40527,40527,18344,14341,735, 38256,18343,33363,29028,40526,26200,38569,40526,43305,43304,15667,14456,34542,10371,
34291,17782,8966, 38532,30779,34042,37007,6035, 14449,13723,20152,43304,40526,1160, 24963,24405,540, 40526,33363,38532,38532,33157,40525,38531,43304,29125,34041,
21206,38622,18168,10428,12627,557, 30888,22234,40525,35809,14918,37006,2793, 32769,40525,3697, 38531,27574,1086, 462, 7619, 40525,19185,12074,11386,34041,14162,
29124,4054, 25477,22346,38516,34308,30276,32769,22692,16971,35308,34543,43304,1593, 35809,32912,13925,35353,31559,26199,4857, 21157,6629, 14226,24395,14156,43303,
- 7603, 13890,35809,43303,5643, 17411,25112,40524,5357, 34835,43303,1674, 33363,34834,35599,35505,27573,43303,36096,43302,38715,36627,8059, 3132, 10885,20434,3632,
+ 7603, 13890,35809,43303,5643, 17411,25112,40524,5357, 34835,43303,1674, 33363,34834,35599,35505,27573,43303,36096,43302,38715,36627,8059, 3132, 10885,20434,3632,
34213,38531,43302,10943,3538, 34302,40524,8806, 2337, 37426,38004,2565, 11009,43302,33119,8611, 38531,18573,3007, 43302,26198,449, 38251,29123,34041,34416,40524,
38530,37006,33757,17983,20484,34041,20212,38530,31791,5631, 1934, 43301,34834,1595, 252, 7753, 2422, 1440, 6022, 6399, 29122,38397,33256,39111,6808, 35808,14438,
- 35809,30887,19649,33711,35844,40524,38460,12578,924, 2964, 37037,14458,35808,15857,504, 36068,3286, 8508, 33362,18841,3591, 20905,30109,22150,27572,693, 1992,
+ 35809,30887,19649,33711,35844,40524,38460,12578,924, 2964, 37037,14458,35808,15857,504, 36068,3286, 8508, 33362,18841,3591, 20905,30109,22150,27572,693, 1992,
511, 402, 33362,2205, 10166,586, 38340,37006,43301,21401,21205,43301,15289,20117,10823,43301,616, 40523,34182,43300,38459,30886,9602, 4088, 12073,43300,27154,
132, 35263,35709,12562,40523,3618, 1132, 3379, 12375,9240, 29739,16003,29302,29121,40523,34040,19648,37006,40523,34121,3663, 4630, 22206,28889,32769,20006,18342,
370, 40522,27317,33362,7966, 16432,29661,27620,6044, 1564, 25284,22048,26197,40522,29120,20483,38323,32769,10524,34529,40522,34897,13611,18985,6160, 17271,39014,
27016,37005,27571,43300,37005,24895,38946,7149, 36149,36896,38648,37563,37590,1379, 4882, 23406,9667, 32790,10075,38530,32843,13128,15039,43300,15288,38700,34040,
38173,2840, 14428,7148, 33747,38657,1235, 34239,2907, 420, 6999, 30512,33437,7654, 125, 36584,2520, 1572, 35808,8790, 17137,11385,1913, 29119,7736, 31427,14582,
9491, 4436, 12211,3123, 10645,21204,3949, 5240, 21488,35634,24626,37602,1618, 9082, 14571,6225, 18881,29629,19183,25319,37474,10937,37907,14669,25488,26663,24718,
- 17721,34929,29530,33289,34474,10851,3820, 12981,2227, 14237,7055, 34834,27395,37962,15666,19940,6164, 34828,35808,23827,23292,10231,36847,19318,11313,43299,7434,
+ 17721,34929,29530,33289,34474,10851,3820, 12981,2227, 14237,7055, 34834,27395,37962,15666,19940,6164, 34828,35808,23827,23292,10231,36847,19318,11313,43299,7434,
38413,33590,13652,37352,40522,25023,12257,23208,34206,19152,37454,3668, 506, 40521,37699,5971, 43299,3667, 40521,11384,43299,43299,40521,18997,36536,28071,26129,
13418,38530,14564,18821,24184,24570,3565, 13611,34332,34834,21203,34065,4472, 1348, 34040,16431,27702,31347,36961,10009,11354,17609,7000, 26946,8502, 36215,37453,
- 30390,21518,38569,5398, 22867,38529,34743,3047, 10807,3507, 79, 17756,11678,533, 35344,14805,1880, 689, 33001,37309,13940,38529,15175,13056,419, 3590, 1312,
+ 30390,21518,38569,5398, 22867,38529,34743,3047, 10807,3507, 79, 17756,11678,533, 35344,14805,1880, 689, 33001,37309,13940,38529,15175,13056,419, 3590, 1312,
38899,39009,9560, 35990,32854,33561,40521,36183,34066,7068, 38465,34827,18319,1662, 2906, 319, 12577,16414,37162,36998,33351,24774,9301, 19647,31287,19809,27203,
6940, 19646,13514,36946,10987,36829,29954,38230,35392,38610,36663,34222,36450,38824,36615,35832,37675,3589, 11182,8340, 37611,37005,8511, 3088, 34040,15287,35169,
- 19871,3456, 23867,12146,37806,20072,37836,37522,36804,28562,16206,25215,33220,22929,39344,10568,29262,30959,31828,38231,27302,2505, 32879,429, 20470,314, 4673,
+ 19871,3456, 23867,12146,37806,20072,37836,37522,36804,28562,16206,25215,33220,22929,39344,10568,29262,30959,31828,38231,27302,2505, 32879,429, 20470,314, 4673,
35886,34126,39358,37020,7474, 32835,37848,39260,27948,24007,34190,16430,3920, 16329,43298,12561,25651,30885,22594,3226, 26334,876, 13576,43298,16046,34308,13699,
- 32855,33523,16098,22432,3295, 16376,37173,36664,33997,12707,30210,43298,33013,22017,22866,35808,36443,37593,38889,25962,30477,140, 15026,6051, 4823, 13443,5111,
+ 32855,33523,16098,22432,3295, 16376,37173,36664,33997,12707,30210,43298,33013,22017,22866,35808,36443,37593,38889,25962,30477,140, 15026,6051, 4823, 13443,5111,
20574,20039,13976,10668,16449,33897,11288,15665,6044, 5898, 15050,8730, 3342, 10543,35051,33267,35805,1616, 281, 28456,43298,36364,43297,19645,7254, 36288,37389,
6834, 3928, 33605,17886,863, 795, 4381, 15420,8675, 6298, 39281,20852,16464,19763,33639,37550,35824,38529,36087,38529,34039,11830,43297,43297,46, 43297,40520,
22016,13497,11634,11877,17341,29783,34789,11491,32997,32958,37222,34413,29118,40520,37144,38528,10739,21156,8101, 14225,26682,672, 37784,8278, 37005,43296,37004,
20080,1651, 2490, 1933, 1991, 35807,11405,57, 1965, 3742, 103, 35203,27570,10675,12210,582, 6753, 8406, 26157,8610, 19818,5431, 34778,34039,29822,381, 14455,
- 18432,30983,384, 3255, 19644,407, 35103,36679,125, 11008,16429,32768,21794,17340,24122,38490,23826,2217, 19423,40520,241, 711, 29117,12576,34386,7843, 6188,
- 35256,37004,2449, 37004,34833,43296,39140,8609, 4306, 6840, 43296,35807,40520,19396,9080, 13317,15950,39045,7534, 8372, 40519,3209, 23825,35807,43296,40519,6025,
+ 18432,30983,384, 3255, 19644,407, 35103,36679,125, 11008,16429,32768,21794,17340,24122,38490,23826,2217, 19423,40520,241, 711, 29117,12576,34386,7843, 6188,
+ 35256,37004,2449, 37004,34833,43296,39140,8609, 4306, 6840, 43296,35807,40520,19396,9080, 13317,15950,39045,7534, 8372, 40519,3209, 23825,35807,43296,40519,6025,
35807,3876, 11194,19643,24089,572, 7557, 16260,13610,40519,40519,43295,4497, 185, 32596,331, 21155,2081, 18968,328, 14529,130, 12209,707, 6116, 1100, 16954,
- 19506,14573,32021,18572,1162, 34039,29116,30044,16149,13859,9263, 31956,5031, 9832, 14811,13108,26569,3506, 15664,35806,9872, 6297, 36204,9128, 25386,664, 7523,
+ 19506,14573,32021,18572,1162, 34039,29116,30044,16149,13859,9263, 31956,5031, 9832, 14811,13108,26569,3506, 15664,35806,9872, 6297, 36204,9128, 25386,664, 7523,
17643,4114, 34708,16428,3564, 1409, 572, 29734,8911, 7492, 33012,7089, 7536, 35806,40518,34858,35075,37004,13889,18341,15025,43295,3588, 22865,37003,40518,39143,
27621,15106,12016,13478,15192,18237,17537,27569,37889,5229, 2176, 26572,4520, 26253,7278, 2587, 15512,7319, 1571, 1451, 24144,35806,34659,32640,30161,26340,38350,
38803,3046, 5288, 13055,18007,32065,38528,10822,27568,43295,12021,5287, 15286,33362,27567,8277, 10165,28639,37003,17410,738, 26224,23824,38528,34435,32085,20052,
- 39159,29115,11174,3236, 7233, 15024,14647,19642,10583,33374,1369, 28336,21154,229, 6839, 7965, 4408, 8507, 35642,28114,14454,2396, 35690,2688, 5157, 2862, 3701,
- 35127,6402, 15738,7952, 5792, 360, 1244, 5123, 40518,31096,23397,18340,21153,37508,17118,14778,25491,1912, 3654, 21726,5460, 20425,5997, 4863, 30615,25646,4836,
+ 39159,29115,11174,3236, 7233, 15024,14647,19642,10583,33374,1369, 28336,21154,229, 6839, 7965, 4408, 8507, 35642,28114,14454,2396, 35690,2688, 5157, 2862, 3701,
+ 35127,6402, 15738,7952, 5792, 360, 1244, 5123, 40518,31096,23397,18340,21153,37508,17118,14778,25491,1912, 3654, 21726,5460, 20425,5997, 4863, 30615,25646,4836,
5294, 6360, 11876,8017, 9088, 29531,10607,7598, 8290, 2953, 6752, 925, 34137,24616,21152,37082,17539,12666,534, 13939,17061,2139, 4474, 36942,6620, 4044, 17339,
- 15663,11787,33265,9534, 3575, 14929,4325, 12763,1034, 35556,5687, 19612,26721,5668, 8506, 9732, 37663,12178,23311,21867,34330,33555,13547,35006,23624,4436, 918,
+ 15663,11787,33265,9534, 3575, 14929,4325, 12763,1034, 35556,5687, 19612,26721,5668, 8506, 9732, 37663,12178,23311,21867,34330,33555,13547,35006,23624,4436, 918,
34613,2657, 24645,12208,1210, 38542,22311,17608,30120,27189,8956, 19597,35818,8266, 4441, 12099,5009, 6362, 32321,33741,22630,2552, 2455, 34124,19051,37429,13174,
- 14987,15662,36359,35589,20010,20887,37949,6982, 16427,19641,10402,10914,240, 5217, 2040, 15661,13938,11007,19640,14833,35378,4521, 2157, 16533,8602, 2695, 9666,
- 30627,7862, 15410,682, 4457, 15023,21687,17099,34042,34039,39301,22750,32247,9665, 9472, 17439,22111,33646,6596, 11444,35144,6822, 12380,36248,2070, 6364, 3876,
+ 14987,15662,36359,35589,20010,20887,37949,6982, 16427,19641,10402,10914,240, 5217, 2040, 15661,13938,11007,19640,14833,35378,4521, 2157, 16533,8602, 2695, 9666,
+ 30627,7862, 15410,682, 4457, 15023,21687,17099,34042,34039,39301,22750,32247,9665, 9472, 17439,22111,33646,6596, 11444,35144,6822, 12380,36248,2070, 6364, 3876,
6751, 10738,10419,17338,17337,32895,21613,11875,4617, 21151,34038,36931,12980,36562,5879, 1868, 6115, 7535, 11827,35566,21150,2985, 2876, 8403, 1441, 2700, 27726,
- 16105,3547, 17336,9155, 21149,32126,36837,32086,36788,21148,18339,15693,2634, 1183, 37404,1779, 37169,2811, 5160, 9533, 37331,37003,1400, 2030, 1368, 39050,9741,
+ 16105,3547, 17336,9155, 21149,32126,36837,32086,36788,21148,18339,15693,2634, 1183, 37404,1779, 37169,2811, 5160, 9533, 37331,37003,1400, 2030, 1368, 39050,9741,
8656, 23052,19639,1200, 2124, 2320, 10321,9765, 34502,5116, 33361,9300, 16514,25703,21931,19817,21195,36310,2126, 37740,21366,21556,9871, 8789, 37096,22962,36616,
34291,30127,31753,17335,19638,8100, 36971,12979,22516,32509,3687, 36195,2660, 25095,1161, 34832,3273, 8922, 15168,26126,1331, 31580,23865,9693, 10328,35342,10954,
- 12567,36439,549, 37966,10843,15660,7416, 2857, 1165, 16426,1057, 3731, 32993,15022,11558,19637,18907,1630, 5529, 5084, 10074,3461, 36136,17334,36370,29219,8655,
- 35211,15216,36499,7405, 8057, 2873, 3814, 1511, 38745,802, 1857, 2126, 3925, 15200,2559, 2083, 11780,7792, 7518, 22014,28207,7845, 2727, 1644, 3946, 28021,2999,
- 8955, 11006,5153, 11874,21409,19154,489, 1978, 2745, 2277, 1307, 5030, 12575,16425,38076,4784, 4171, 2695, 4264, 6538, 6679, 5898, 37484,5219, 23830,9896, 6681,
- 19154,8099, 7320, 3196, 11352,12574,3111, 17684,3999, 375, 27406,7025, 5692, 4831, 2200, 7844, 33056,4506, 33165,4319, 6075, 10072,9229, 13923,34187,14516,3245,
- 27681,5405, 11756,18993,10581,4867, 11243,2562, 2427, 11287,12142,5562, 4888, 18350,37086,33412,2574, 12832,35767,19736,35472,35851,904, 8192, 26694,1590, 6019,
- 5333, 1945, 13042,13247,35368,34388,5102, 8954, 33143,10923,16424,4075, 17147,21107,21835,6395, 23070,17333,3964, 19636,14891,4641, 14093,37367,2779, 35995,930,
- 31599,38780,3120, 3133, 7100, 36286,21048,1613, 32852,4914, 1329, 2556, 28718,2224, 33036,10523,3368, 20372,12207,18338,21147,10645,6537, 15659,1405, 33379,9366,
- 2915, 5312, 24672,43295,17332,12285,10073,33875,25796,22657,38758,37357,32835,33909,33268,11557,21146,21145,5326, 19635,876, 20465,21449,29498,11016,5813, 6265,
+ 12567,36439,549, 37966,10843,15660,7416, 2857, 1165, 16426,1057, 3731, 32993,15022,11558,19637,18907,1630, 5529, 5084, 10074,3461, 36136,17334,36370,29219,8655,
+ 35211,15216,36499,7405, 8057, 2873, 3814, 1511, 38745,802, 1857, 2126, 3925, 15200,2559, 2083, 11780,7792, 7518, 22014,28207,7845, 2727, 1644, 3946, 28021,2999,
+ 8955, 11006,5153, 11874,21409,19154,489, 1978, 2745, 2277, 1307, 5030, 12575,16425,38076,4784, 4171, 2695, 4264, 6538, 6679, 5898, 37484,5219, 23830,9896, 6681,
+ 19154,8099, 7320, 3196, 11352,12574,3111, 17684,3999, 375, 27406,7025, 5692, 4831, 2200, 7844, 33056,4506, 33165,4319, 6075, 10072,9229, 13923,34187,14516,3245,
+ 27681,5405, 11756,18993,10581,4867, 11243,2562, 2427, 11287,12142,5562, 4888, 18350,37086,33412,2574, 12832,35767,19736,35472,35851,904, 8192, 26694,1590, 6019,
+ 5333, 1945, 13042,13247,35368,34388,5102, 8954, 33143,10923,16424,4075, 17147,21107,21835,6395, 23070,17333,3964, 19636,14891,4641, 14093,37367,2779, 35995,930,
+ 31599,38780,3120, 3133, 7100, 36286,21048,1613, 32852,4914, 1329, 2556, 28718,2224, 33036,10523,3368, 20372,12207,18338,21147,10645,6537, 15659,1405, 33379,9366,
+ 2915, 5312, 24672,43295,17332,12285,10073,33875,25796,22657,38758,37357,32835,33909,33268,11557,21146,21145,5326, 19635,876, 20465,21449,29498,11016,5813, 6265,
12778,5350, 37748,33802,28055,9427, 7734, 17331,17330,11873,7420, 38262,21471,14670,18337,34471,28584,13442,10303,2549, 37615,31387,38407,30116,6838, 19801,10302,
17329,32943,11857,24439,10301,37050,12573,36485,15069,18011,36433,608, 13291,1508, 10579,37579,15003,12070,12978,11872,11849,14453,22988,36965,24793,23385,28228,
- 19697,36750,34830,5430, 32404,17328,23235,37897,34336,22519,24804,37003,19411,576, 8159, 19634,4665, 8788, 5143, 11187,2949, 21570,18336,16423,11556,8360, 8359,
+ 19697,36750,34830,5430, 32404,17328,23235,37897,34336,22519,24804,37003,19411,576, 8159, 19634,4665, 8788, 5143, 11187,2949, 21570,18336,16423,11556,8360, 8359,
16422,10300,11871,17327,34109,18571,38528,43294,376, 7843, 32119,15021,37355,15131,40518,27806,26355,3653, 8654, 14452,38794,7352, 32768,30885,15676,22864,14562,
7134, 38527,36724,34038,34038,32768,40517,43294,35806,43294,43294,884, 1682, 22863,908, 43293,43293,28291,38305,28986,38527,38527,695, 35823,8276, 40517,22862,
- 2990, 34930,33242,33534,2408, 11329,11508,39063,17941,11745,4543, 30565,22751,15426,24712,12242,8458, 17965,26914,27736,37291,12711,28486,32577,20858,12093,7684,
+ 2990, 34930,33242,33534,2408, 11329,11508,39063,17941,11745,4543, 30565,22751,15426,24712,12242,8458, 17965,26914,27736,37291,12711,28486,32577,20858,12093,7684,
33361,18570,9664, 15104,34038,43293,30884,43293,34037,10464,43292,3280, 21144,34833,23516,30350,13107,7818, 540, 16395,22015,13888,2084, 11873,5783, 8804, 38527,
5258, 32778,8626, 1286, 35805,38526,21010,11908,19633,11485,36499,37535,14370,38526,10644,11653,35352,2517, 31292,14451,8741, 15658,9295, 33688,38880,38667,12814,
- 35761,25782,9312, 38076,20604,39283,16264,7687, 38526,29114,43292,34833,12560,30883,1422, 15020,43292,38526,3394, 10608,35805,265, 32019,3731, 1500, 19632,8543,
- 10072,13393,28896,40517,13937,18569,43292,11363,13887,1647, 13869,15978,18654,17326,10933,19816,35110,13228,2442, 27355,12206,27910,21869,16507,3869, 6915, 9419,
+ 35761,25782,9312, 38076,20604,39283,16264,7687, 38526,29114,43292,34833,12560,30883,1422, 15020,43292,38526,3394, 10608,35805,265, 32019,3731, 1500, 19632,8543,
+ 10072,13393,28896,40517,13937,18569,43292,11363,13887,1647, 13869,15978,18654,17326,10933,19816,35110,13228,2442, 27355,12206,27910,21869,16507,3869, 6915, 9419,
9027, 18509,20717,31805,874, 1154, 2073, 30383,21202,38525,15675,24962,22634,34475,16700,35257,317, 25558,27566,3783, 18979,32183,5080, 4844, 19631,1614, 16421,
23952,3846, 18335,18504,1770, 1384, 1321, 9153, 33696,37482,31718,36386,6182, 1277, 29757,9299, 38096,37002,17982,22861,4045, 6618, 43291,35805,38525,35805,32768,
16513,8954, 38724,37846,5791, 29452,38525,34833,31730,43291,19630,2664, 37856,31709,43291,33110,38525,17007,36297,33657,35804,37002,24961,35804,34832,24083,32864,
@@ -14992,17 +14987,17 @@ static const unsigned short Ranks[197839] =
43290,40516,9490, 32765,9601, 32764,34612,33404,26216,19584,20603,30881,3300, 22014,34862,20193,33361,34832,43290,43290,18568,40515,43289,37002,12572,38524,40515,
43289,38524,40515,34037,35804,40515,26196,9198, 9773, 37582,36943,43289,40514,34832,28811,32763,43289,40514,1676, 40514,805, 40514,3033, 17325,14917,30880,32762,
4263, 8747, 22646,1522, 5616, 2931, 37001,37001,3307, 3516, 17324,10299,8787, 22407,23744,34831,590, 17981,16953,14916,2722, 27563,34831,24625,1896, 4528, 22013,
- 12571,32939,17323,20482,10298,14273,6536, 15737,6799, 35181,21947,13079,37503,27717,26195,8505, 19990,33120,20099,4419, 33650,19151,2844, 25315,34050,2356, 8842,
+ 12571,32939,17323,20482,10298,14273,6536, 15737,6799, 35181,21947,13079,37503,27717,26195,8505, 19990,33120,20099,4419, 33650,19151,2844, 25315,34050,2356, 8842,
13375,17448,6750, 35476,21442,30879,7252, 19629,37361,21006,39405,9952, 9340, 36600,14581,4435, 1861, 33761,31938,19592,36167,7531, 18433,43288,2957, 37001,15657,
459, 4942, 22363,24357,3070, 27048,10737,18334,17322,10709,28674,19815,43288,21709,31846,35141,3099, 34037,19628,27945,1207, 3678, 37001,7937, 11005,11004,26194,
- 27562,31023,2631, 30705,21641,35803,43288,43288,15019,43287,25726,27561,32858,29112,43287,43287,15285,32307,39259,34831,43287,40513,43286,40513,33606,27560,6851,
+ 27562,31023,2631, 30705,21641,35803,43288,43288,15019,43287,25726,27561,32858,29112,43287,43287,15285,32307,39259,34831,43287,40513,43286,40513,33606,27560,6851,
25018,110, 29741,3848, 21575,22044,11130,17354,31373,26888,32912,30016,25938,29146,4668, 8965, 43286,34831,34144,31017,38524,32922,1728, 12756,17527,34531,34830,
36993,40513,19814,34830,10993,24960,24959,43286,5360, 7211, 43286,35803,32761,43285,2671, 23823,30231,24958,34037,35243,32760,43285,34036,38524,11005,8359, 12042,
6971, 43285,21201,33361,560, 35302,27794,27367,33725,37407,15226,37001,34036,38854,12205,35803,1850, 18330,22301,27314,40513,11595,34830,35803,18333,43285,43284,
10164,1071, 11193,37000,1919, 38523,17321,2486, 29094,13784,15152,27306,13441,33810,34830,1217, 33573,21158,10739,23822,1726, 26654,36226,8598, 34829,38523,18228,
28061,15656,17320,31779,35344,29111,43284,7886, 35414,35802,26193,20635,28928,38523,35802,43284,35412,35802,43284,43283,14244,24957,32759,31797,27559,40512,14580,
- 30343,40512,21780,30122,15655,16952,33360,1212, 5230, 12394,20977,43283,15487,38157,35802,6753, 9514, 8499, 11539,1211, 12086,38531,12570,33986,15018,20679,421,
- 32833,94, 19985,8379, 20542,14311,5775, 23062,8953, 22000,593, 6026, 37892,34829,43283,1267, 33913,29110,40512,8378, 16420,21142,13936,27285,15714,21836,4293,
+ 30343,40512,21780,30122,15655,16952,33360,1212, 5230, 12394,20977,43283,15487,38157,35802,6753, 9514, 8499, 11539,1211, 12086,38531,12570,33986,15018,20679,421,
+ 32833,94, 19985,8379, 20542,14311,5775, 23062,8953, 22000,593, 6026, 37892,34829,43283,1267, 33913,29110,40512,8378, 16420,21142,13936,27285,15714,21836,4293,
12977,16419,35913,11003,12569,28080,1376, 24633,3794, 19813,40512,16658,38138,37000,14579,38523,6718, 12467,2447, 39327,25735,35801,34829,32903,5077, 33360,38136,
36125,34036,38522,37000,38522,34829,16511,33501,6921, 29202,37000,43283,38522,335, 27745,4130, 2583, 34036,34035,17980,905, 19306,24898,36999,36695,1206, 24958,
40511,37197,14578,5200, 17111,31583,17319,34095,25530,23470,4215, 33052,3390, 35632,8952, 10297,7733, 30614,16765,7291, 1294, 21679,15017,35991,538, 7187, 18888,
@@ -15012,10 +15007,10 @@ static const unsigned short Ranks[197839] =
21918,16097,15654,12568,37556,38520,8481, 38520,25621,43282,13127,12316,32758,16510,4941, 3116, 33444,18780,6947, 33543,35839,43281,17408,39007,38520,5687, 34827,
17407,29108,33509,35602,40509,24956,4590, 10463,23821,37575,5594, 15338,18332,30878,43281,34110,21199,18567,716, 35799,9600, 986, 12573,20445,43281,5615, 32822,
9918, 324, 14628,2136, 36064,30309,7549, 21895,35025,19627,2537, 32575,12183,5788, 20089,2958, 12808,30093,43281,32257,31606,36999,36304,35115,26192,19150,15255,
- 21198,10313,22011,16932,32757,13609,6078, 2104, 9736, 30877,19110,10518,33187,12724,24955,17406,24353,22329,16953,12975,36999,10462,20481,1202, 34827,12204,1487,
+ 21198,10313,22011,16932,32757,13609,6078, 2104, 9736, 30877,19110,10518,33187,12724,24955,17406,24353,22329,16953,12975,36999,10462,20481,1202, 34827,12204,1487,
21197,34292,27557,32756,12808,34827,1846, 30876,43280,15674,573, 14915,11192,34034,9459, 30875,43280,14577,36998,43280,31505,2539, 11594,951, 10163,22860,24954,
19626,2385, 34034,32755,35458,27556,8244, 3256, 35677,1837, 12662,37037,35799,38520,2239, 9869, 9772, 14452,4044, 11286,7686, 11285,7593, 11284,8653, 40509,34741,
- 43280,27555,18566,6235, 36998,36552,38519,29088,8275, 43279,13608,43279,10778,35100,20480,34591,36690,36090,37259,17318,5183, 15653,1963, 9663, 33819,8140, 5170,
+ 43280,27555,18566,6235, 36998,36552,38519,29088,8275, 43279,13608,43279,10778,35100,20480,34591,36690,36090,37259,17318,5183, 15653,1963, 9663, 33819,8140, 5170,
13822,32754,43279,43279,32753,34827,1384, 7696, 12203,2484, 35526,5511, 32897,33360,40509,37926,7646, 10162,24953,36998,36063,32642,6516, 38902,40509,35799,36998,
30874,32752,516, 23058,12226,3501, 7395, 8688, 24322,16161,6677, 12567,31535,25633,33038,1210, 3092, 14292,28711,34398,38519,36442,11417,38519,12845,23098,36839,
18573,34503,34002,36997,35799,36997,841, 24497,13782,3527, 28253,18331,38652,38802,7197, 13303,9461, 1634, 30985,28962,20766,25450,17981,915, 27210,1114, 14788,
@@ -15030,33 +15025,33 @@ static const unsigned short Ranks[197839] =
35950,40505,22008,35516,1349, 12974,23092,40505,32749,36818,2263, 5325, 10071,16415,36996,552, 34826,38516,40505,303, 33190,36996,9937, 10888,38516,34033,22859,
35673,34032,27058,15651,19149,21195,35801,31262,33161,5318, 33495,40505,38516,38516,43275,21194,30869,33358,1452, 20877,34517,18595,17249,10773,4929, 23890,36897,
28895,32248,12967,6300, 15279,32172,30082,19186,23387,32666,13750,32239,34145,9154, 32319,5830, 11554,18890,36672,37998,39225,29105,38515,40504,38515,8964, 19809,
- 35797,34825,24688,43275,43275,8002, 915, 4538, 43274,10519,43274,6220, 4396, 35663,36185,25706,14576,37595,34197,35797,15282,2636, 17943,34032,34825,8307, 8370,
+ 35797,34825,24688,43275,43275,8002, 915, 4538, 43274,10519,43274,6220, 4396, 35663,36185,25706,14576,37595,34197,35797,15282,2636, 17943,34032,34825,8307, 8370,
3986, 4589, 19623,12961,4936, 2395, 22012,11001,21137,36996,40504,5142, 7430, 6653, 9820, 35002,12148,690, 464, 30576,420, 25402,32973,1051, 38515,36995,24950,
33358,43274,11916,13425,33358,34825,26189,34825,35797,19148,37946,18338,195, 37300,11191,18216,43274,13933,40504,34032,43273,32748,40504,29104,35796,21136,36995,
19622,6398, 40503,32583,2033, 33357,35796,34848,38515,32747,34032,43273,16951,43273,34824,43273,13607,7133, 36169,20634,465, 31578,15650,16601,9543, 16563,28070,
7090, 22325,10079,1341, 10830,26244,38695,9906, 35796,11380,8889, 29103,33357,574, 40503,36995,28480,38514,40503,8504, 40503,40502,34031,13886,8737, 16704,38514,
21135,43272,35796,43272,43272,40502,8000, 13495,32310,19147,2493, 43272,43271,2517, 34031,7842, 1261, 4485, 39411,7329, 16299,19621,2276, 12202,8870, 5003, 23556,
37574,36008,21193,40502,40502,43271,129, 40501,38514,17317,7050, 5773, 3771, 337, 521, 16916,574, 10522,14223,33357,38514,3404, 19808,6899, 40501,43271,43271,
- 3410, 33357,654, 31305,34031,43270,43270,22570,14575,38513,34824,32746,40501,21192,40501,14574,43270,40500,43270,16950,34031,32745,36995,34824,43269,43269,8393,
+ 3410, 33357,654, 31305,34031,43270,43270,22570,14575,38513,34824,32746,40501,21192,40501,14574,43270,40500,43270,16950,34031,32745,36995,34824,43269,43269,8393,
17405,43269,38513,38513,34030,40500,8207, 35795,38513,43269,26188,35795,40500,34030,23819,35795,36994,43268,38512,40500,29102,18327,25187,16414,34833,34030,43268,
22858,43268,32744,33818,40499,38639,19807,24949,9109, 6850, 43268,43267,36994,23818,14913,27554,7957, 32047,40499,34694,36994,10821,40499,34030,40499,6050, 17404,
- 36994,29101,37755,34824,17403,43267,31438,12807,36993,24948,20478,19146,43267,43267,9735, 36266,18326,35795,1760, 35794,43266,34029,30868,43266,37379,1283, 9079,
+ 36994,29101,37755,34824,17403,43267,31438,12807,36993,24948,20478,19146,43267,43267,9735, 36266,18326,35795,1760, 35794,43266,34029,30868,43266,37379,1283, 9079,
37149,33356,43266,38512,22140,16509,13053,43266,922, 35794,36993,43265,17088,40498,1699, 40498,1805, 38512,24929,277, 29452,35954,1229, 18055,2952, 26001,37908,
43265,1132, 1490, 35689,5076, 43265,13616,43265,21093,6259, 37013,35187,40498,11408,1390, 330, 20802,31938,1857, 1471, 35794,239, 3766, 22036,33091,29921,22533,
11551,25349,9868, 40498,35794,4499, 18563,35793,43264,678, 1908, 12973,17316,43264,1960, 5359, 18538,43264,43264,35793,4743, 8392, 40497,43263,43263,35793,18325,
38512,14519,12299,35793,43263,859, 10293,3743, 3074, 8830, 14222,34029,36993,17979,4042, 40497,13932,13931,9298, 3346, 17978,34438,36993,43263,35683,38511,43262,
35792,436, 13316,36992,18562,27553,32050,11190,17977,7602, 907, 3955, 27552,8608, 17402,38601,34029,40497,43262,16413,525, 778, 34029,35609,39068,33518,32743,
23376,38264,4664, 19357,7634, 4085, 11051,39141,10294,33356,9443, 38831,15649,36992,15014,40497,2422, 13736,15013,9086, 43262,19730,6049, 38511,33785,35192,29100,
- 5507, 19145,6401, 17281,34223,168, 3850, 27869,17557,7956, 38097,17315,40496,38511,7601, 40496,34028,23817,36992,36151,21134,36992,32742,12739,35877,34794,2912,
+ 5507, 19145,6401, 17281,34223,168, 3850, 27869,17557,7956, 38097,17315,40496,38511,7601, 40496,34028,23817,36992,36151,21134,36992,32742,12739,35877,34794,2912,
43262,35792,26761,32944,32203,36797,22795,34683,32999,8072, 14573,40496,9255, 38511,36369,16095,18561,6676, 4777, 17976,2222, 19144,36991,3348, 33356,21191,27551,
38510,34823,40496,40495,34028,34823,43261,35296,35792,13930,43261,43261,43261,26922,28611,40495,19331,4794, 19781,43260,8391, 12398,13885,16508,34028,21133,43260,
1638, 10643,34028,4358, 4155, 30255,34098,20477,34823,36991,8098, 29099,35792,9807, 43260,34823,43260,12247,24179,30493,14912,38510,34051,27550,43259,24449,43259,
31715,34822,43259,13095,693, 16219,38510,38510,30867,33446,38928,5460, 43259,36991,33356,13061,21190,27474,36081,21189,38254,43258,40495,40495,40494,35791,34485,
32900,33355,34027,38509,9599, 34027,29098,36776,3278, 36991,26187,3723, 35791,148, 19660,26186,28621,36990,43258,43258,40494,34027,38509,5836, 34027,43258,37490,
- 43257,23816,15189,10782,34134,17314,9595, 12857,30593,21089,12913,36366,858, 3666, 33190,37024,23785,34007,34373,34189,522, 34822,24947,14911,32111,2011, 2254,
+ 43257,23816,15189,10782,34134,17314,9595, 12857,30593,21089,12913,36366,858, 3666, 33190,37024,23785,34007,34373,34189,522, 34822,24947,14911,32111,2011, 2254,
3108, 40494,2384, 208, 33643,221, 31075,43257,34296,35791,36990,16492,43257,1675, 36990,29097,33355,35791,40494,26185,27071,34822,38509,10256,35790,38509,38508,
39172,32069,38029,34026,11000,36082,22587,43257,38508,40493,36775,32864,36160,40493,22007,43256,7841, 35790,38508,36990,43256,32593,21106,43256,23815,4776, 12806,
- 40493,43256,8624, 2501, 40493,109, 2581, 12390,11307,32374,17351,30159,43255,40492,22835,2902, 43255,7731, 38178,43255,40492,43255,38392,21935,36989,38431,7600,
+ 40493,43256,8624, 2501, 40493,109, 2581, 12390,11307,32374,17351,30159,43255,40492,22835,2902, 43255,7731, 38178,43255,40492,43255,38392,21935,36989,38431,7600,
1332, 8607, 745, 23814,38508,2670, 14221,14572,14571,18560,1224, 21136,14486,40492,7781, 29096,7429, 37158,29812,34822,8232, 19149,12298,14570,39130,6713, 15281,
16094,36989,8164, 26398,22857,40492,26184,19620,40491,38507,38507,1181, 43254,34821,32366,27549,4210, 29608,34961,36349,26457,28804,15673,40491,34821,18520,34931,
34030,34026,28409,34026,35586,25603,21138,40491,38507,2379, 38993,20486,33355,33864,34026,43254,35790,35057,17975,40491,5340, 22878,35819,27101,35292,5847, 12431,
@@ -15066,14 +15061,14 @@ static const unsigned short Ranks[197839] =
36988,9880, 19806,4688, 5660, 17879,36676,35143,16282,14365,13485,26183,33438,43253,38506,13315,22275,20727,43252,16412,32740,40490,40489,35789,1734, 13437,16411,
35789,38506,25102,271, 6970, 3067, 12955,43252,8057, 36988,22327,10658,40489,40489,43252,13437,38942,3345, 36938,12566,38900,19403,26069,20356,10910,18315,12110,
12516,24458,35399,13812,32997,20949,20438,30334,2654, 28036,30624,11001,12722,3464, 18658,28640,7183, 19827,15012,19527,13621,13099,6891, 26170,25492,7132, 34886,
- 6903, 26182,38198,40489,11383,40488,7432, 36988,34820,26181,15648,2938, 2772, 10171,23813,5259, 6672, 38505,6478, 5888, 19618,21132,4394, 11445,5968, 20274,7519,
+ 6903, 26182,38198,40489,11383,40488,7432, 36988,34820,26181,15648,2938, 2772, 10171,23813,5259, 6672, 38505,6478, 5888, 19618,21132,4394, 11445,5968, 20274,7519,
20879,12121,24289,35486,33534,35810,33913,25702,34990,35696,14188,13333,22234,22804,24954,33354,40488,23812,43252,34025,22006,40488,33464,15672,22855,5286, 35789,
40488,30665,26180,19805,969, 17809,38505,15671,19142,8951, 34025,16949,24945,36987,18661,33037,36987,1194, 29087,14146,30241,1980, 24908,12574,26587,8455, 36345,
14448,36861,38083,32739,6048, 11953,29711,36783,13929,8097, 36621,521, 3107, 3587, 4081, 10937,5675, 36987,18324,33690,29376,11779,16410,4984, 11151,28378,27346,
43251,34820,18896,34819,43251,38505,30866,26179,15670,4879, 35789,43251,43251,11113,21131,36114,19495,24944,279, 25149,7367, 14220,3723, 24242,19340,4983, 29095,
188, 33354,43250,19617,34129,14541,43250,5650, 17312,11553,38505,18820,32890,37120,4865, 10796,21130,36987,43250,29094,43250,23811,34025,3187, 13605,36986,34025,
6749, 34819,40487,38504,40487,36108,40487,2280, 30681,40487,38504,25974,2276, 32588,19999,24904,25861,3653, 10161,19616,6357, 29065,37558,1084, 6136, 826, 13113,
- 6163, 12972,839, 28761,22151,7963, 25774,2072, 43249,38504,43249,36910,16948,40486,22854,36986,11868,12565,40486,22005,37191,13884,403, 26299,11520,9315, 1353,
+ 6163, 12972,839, 28761,22151,7963, 25774,2072, 43249,38504,43249,36910,16948,40486,22854,36986,11868,12565,40486,22005,37191,13884,403, 26299,11520,9315, 1353,
14734,2583, 6477, 756, 20462,13541,2590, 40486,43249,36986,35788,38504,43249,8950, 35366,30478,43248,16409,32787,23810,35788,12296,38552,38503,17973,32738,16093,
32237,418, 35788,22004,34067,34653,10284,8231, 434, 29408,619, 17208,38704,43248,1270, 20481,11869,3273, 32737,35788,28135,18111,33354,43248,4170, 10897,24999,
4318, 6397, 23582,43248,13743,23250,13194,35787,43247,38810,37787,43247,36986,32428,26936,12224,43247,43247,43246,34024,999, 2204, 38503,26696,36382,34267,10820,
@@ -15081,9 +15076,9 @@ static const unsigned short Ranks[197839] =
23809,20859,33369,3745, 9955, 18323,30267,36985,12095,19804,43246,17972,43246,21188,7671, 18559,34819,32429,38502,35840,38307,43246,10642,19615,1012, 40486,38502,
22952,1365, 12201,19141,43245,25517,15647,21129,32736,33353,14985,18322,2319, 30865,35787,34819,13928,15010,35787,16947,4911, 43245,39021,38501,5002, 9317, 30864,
78, 31151,2039, 35786,10479,39289,37813,2442, 4516, 5894, 8317, 7773, 38770,14447,518, 27083,28892,32907,33039,1151, 43245,34024,38773,38501,29092,40485,19140,
- 34818,30863,13603,43245,1903, 11194,9070, 6555, 4597, 40485,2347, 32568,11862,43244,36985,43244,16946,38501,37343,5071, 9959, 19614,186, 31028,30280,15646,3499,
- 34441,10817,6467, 38117,16293,4540, 4945, 21128,36932,9297, 8594, 18321,415, 1185, 16945,16944,1724, 17598,4798, 5795, 29260,669, 5032, 21127,10988,19131,4267,
- 38501,35786,17238,33647,36277,38500,825, 12295,2913, 19460,8652, 36985,19803,17311,12071,40485,115, 31380,5753, 12971,38966,21126,939, 3352, 5835, 40485,2995,
+ 34818,30863,13603,43245,1903, 11194,9070, 6555, 4597, 40485,2347, 32568,11862,43244,36985,43244,16946,38501,37343,5071, 9959, 19614,186, 31028,30280,15646,3499,
+ 34441,10817,6467, 38117,16293,4540, 4945, 21128,36932,9297, 8594, 18321,415, 1185, 16945,16944,1724, 17598,4798, 5795, 29260,669, 5032, 21127,10988,19131,4267,
+ 38501,35786,17238,33647,36277,38500,825, 12295,2913, 19460,8652, 36985,19803,17311,12071,40485,115, 31380,5753, 12971,38966,21126,939, 3352, 5835, 40485,2995,
30862,12663,13063,904, 28151,132, 25351,24943,6200, 29091,21187,40484,19613,40484,9330, 36985,33560,40484,5388, 33353,36984,35811,7925, 8230, 21125,2157, 19612,
43244,24942,38500,22398,34024,1144, 22885,18320,25546,9488, 35786,15645,40484,9153, 4550, 15009,21124,6114, 15644,15643,2521, 1305, 40483,36403,6536, 38494,33506,
23808,29906,30690,36919,34023,34818,36459,38972,658, 489, 12958,10145,4718, 1601, 27547,26847,30844,3807, 15689,12564,22852,1102, 12070,8274, 9196, 18319,35786,
@@ -15092,7 +15087,7 @@ static const unsigned short Ranks[197839] =
35456,43241,20475,43241,32735,40483,34023,36507,25942,1745, 17268,30097,43241,36984,26178,37417,35282,3628, 32460,35785,26177,26176,14496,35785,8736, 17970,43241,
32734,33074,40483,40482,13883,34071,15668,34818,22003,16943,35785,34198,38499,38499,34817,33758,28017,22191,13602,7864, 32146,27014,384, 9187, 28732,28853,28666,
28156,21712,14503,15754,8850, 4909, 754, 13927,37673,32733,30026,733, 25237,5280, 7472, 35773,35932,19639,39134,22838,29951,21123,18058,12563,11867,924, 22617,
- 27535,6544, 4635, 15008,11463,8348, 14214,12200,1488, 15923,1937, 27681,6887, 20906,17547,12970,30337,18318,30208,559, 7190, 5707, 5127, 3945, 13436,25296,7532,
+ 27535,6544, 4635, 15008,11463,8348, 14214,12200,1488, 15923,1937, 27681,6887, 20906,17547,12970,30337,18318,30208,559, 7190, 5707, 5127, 3945, 13436,25296,7532,
21122,3024, 32564,7768, 15453,38499,24941,29405,8735, 10257,6828, 11018,16133,32830,3768, 29656,29853,18317,17866,9296, 9502, 3103, 2645, 26386,43240,16092,43240,
38499,1039, 34014,36844,27545,21121,24940,5670, 30622,3347, 33371,11500,43240,37732,40482,22851,17310,34023,26, 21781,8477, 32857,7962, 35273,5649, 6183, 17079,
22992,15401,20796,19992,7955, 33442,24282,8251, 21293,43240,3791, 23806,30983,40482,40482,16506,43239,22002,43239,16134,40481,27544,487, 17969,40481,40481,35784,
@@ -15100,7 +15095,7 @@ static const unsigned short Ranks[197839] =
40481,107, 16534,4989, 6499, 5182, 6010, 16606,7969, 2422, 30360,7404, 33043,13128,31489,33505,4147, 22024,20454,21120,3825, 180, 2940, 31594,18694,33642,21468,
3186, 39414,10035,5174, 27782,35176,19611,6213, 6000, 15003,24587,2476, 7516, 35393,22001,35784,36983,40480,24639,9158, 35784,19315,37885,35283,23273,3434, 15007,
6434, 13926,10569,18316,3062, 34022,6162, 26744,906, 36649,34022,1326, 20853,34817,10819,43239,35784,3787, 27543,36983,26175,36473,39036,26862,1820, 22317,38646,
- 31583,2088, 43238,40480,24255,19406,22070,2489, 35783,5645, 38498,13925,3333, 31115,10375,22082,43238,17401,3446, 11552,5788, 23667,43238,21146,30861,27951,374,
+ 31583,2088, 43238,40480,24255,19406,22070,2489, 35783,5645, 38498,13925,3333, 31115,10375,22082,43238,17401,3446, 11552,5788, 23667,43238,21146,30861,27951,374,
12969,43238,40480,10016,12805,20473,31934,6781, 38515,34817,24938,15667,43237,33352,34816,769, 40480,7919, 3299, 17968,8786, 38106,5125, 14316,19610,33352,21504,
43237,14730,179, 27808,34816,32732,34316,25900,31219,19609,10520,6419, 40479,681, 18315,43237,8785, 17309,8949, 1435, 12562,8096, 38498,9865, 2921, 18314,12354,
32945,5523, 6222, 32784,12068,23784,17308,17487,14446,18439,26184,34022,36983,38498,24578,9309, 23056,23565,29990,17758,22186,15514,31709,4918, 7915, 15549,30604,
@@ -15109,15 +15104,15 @@ static const unsigned short Ranks[197839] =
4429, 3561, 37311,38497,15532,37424,35783,34021,1770, 34816,27542,19607,12968,32731,7146, 9864, 6675, 12199,40478,7145, 37644,40478,38497,9487, 32730,30860,35537,
35288,12888,3257, 15821,16093,39382,11626,5293, 26174,24007,10004,1543, 28851,34644,6295, 1936, 20011,37002,38677,30859,36982,19800,36388,9486, 40478,38205,34628,
35715,10070,941, 30858,10992,34815,26173,2691, 40477,13051,7663, 34843,29925,3954, 4548, 7000, 4210, 32771,10097,8971, 33843,11593,6617, 40477,2858, 8841, 18558,
- 6616, 10073,14445,21119,9161, 7961, 26139,11137,27979,5469, 13435,8948, 17307,760, 2366, 15082,26098,29253,32961,18718,8358, 10384,21118,19606,7066, 4888, 4301,
+ 6616, 10073,14445,21119,9161, 7961, 26139,11137,27979,5469, 13435,8948, 17307,760, 2366, 15082,26098,29253,32961,18718,8358, 10384,21118,19606,7066, 4888, 4301,
39169,19267,4770, 4148, 10519,6806, 32361,25055,22314,6294, 7318, 34567,1611, 35783,15006,32366,38483,19333,27541,34021,37040,15642,34021,6742, 35782,32651,19383,
33905,19138,13085,19605,24522,32010,40477,1152, 22409,5385, 5642, 11284,8019, 25206,36925,4572, 2587, 17306,3813, 21117,6535, 30536,30340,19604,21169,19603,36713,
38221,19602,40477,11382,43237,13434,7624, 8784, 20957,43236,33116,26022,21186,34539,25714,2152, 33451,16091,13529,18956,37998,34414,4390, 9485, 38985,24575,35440,
8947, 9735, 18204,35012,16661,36116,4389, 7231, 7065, 21116,6293, 13242,33352,21115,21114,20361,21461,36986,4571, 18313,38627,17967,43236,6047, 35782,22000,40476,
25763,32729,35782,3391, 39310,10818,40476,19601,38497,2484, 21113,33199,8503, 28086,9173, 37814,4229, 14763,32728,23804,6006, 23803,33352,12804,14219,6131, 23802,
- 8772, 983, 7064, 8752, 14802,5787, 29088,24937,21999,43236,33351,17966,26172,6920, 32727,3332, 9879, 40476,9878, 14218,38496,19799,40476,43236,39008,34021,234,
+ 8772, 983, 7064, 8752, 14802,5787, 29088,24937,21999,43236,33351,17966,26172,6920, 32727,3332, 9879, 40476,9878, 14218,38496,19799,40476,43236,39008,34021,234,
11189,23927,5445, 16505,40475,16406,3652, 26171,40475,30857,22850,38496,40475,18312,30856,40475,36982,20472,43235,40474,33351,29087,19880,32726,38496,34213,30855,
- 36981,1722, 29639,27127,8163, 8840, 32725,12561,24936,34815,3224, 2283, 25054,35782,264, 23801,43235,19798,14115,17965,43235,32724,40474,43235,26857,37964,5551,
+ 36981,1722, 29639,27127,8163, 8840, 32725,12561,24936,34815,3224, 2283, 25054,35782,264, 23801,43235,19798,14115,17965,43235,32724,40474,43235,26857,37964,5551,
43234,2093, 27540,18557,7101, 32815,34815,34820,6048, 3255, 36394,17305,24060,37065,24503,23114,38977,37879,27922,9604, 23914,29086,3944, 12751,18311,9863, 11866,
13924,8510, 26170,29379,5207, 29879,37031,36430,40474,8095, 43234,8651, 2898, 40474,868, 17057,21844,2551, 14444,18220,8783, 35179,9862, 16941,11283,19600,10639,
27539,10734,3491, 13923,15641,17400,5786, 34020,43234,1626, 21260,31677,31747,43234,36981,33067,20391,8943, 16405,21112,2177, 28298,5353, 8312, 26406,36981,24732,
@@ -15126,16 +15121,16 @@ static const unsigned short Ranks[197839] =
36980,38239,18310,18309,11105,13433,16504,19797,34228,1668, 5090, 18308,3492, 38726,18346,20400,13609,22986,5162, 37521,25126,38903,23800,705, 21577,19599,12197,
43232,14443,12673,3148, 19598,9294, 6476, 15637,19597,18307,2404, 12561,27726,1161, 344, 8247, 36980,2151, 40472,38495,12179,38495,24934,25209,11229,107, 22135,
1950, 832, 40472,1592, 38495,20856,2030, 11662,37977,886, 38494,85, 32723,39408,43232,13340,2633, 21998,3610, 22478,3436, 2361, 16452,33174,36980,34592,35326,
- 12023,240, 2589, 15576,34426,35655,29084,12974,33956,2029, 901, 26968,8273, 10999,34953,5648, 34624,19596,43231,34147,36980,3435, 35422,5970, 38494,4971, 683,
- 12967,9865, 38494,43231,18306,34815,6159, 32142,36979,43231,15671,30854,2518, 35489,17303,5411, 10354,6142, 20849,9976, 43231,26169,3919, 1528, 6725, 10048,181,
+ 12023,240, 2589, 15576,34426,35655,29084,12974,33956,2029, 901, 26968,8273, 10999,34953,5648, 34624,19596,43231,34147,36980,3435, 35422,5970, 38494,4971, 683,
+ 12967,9865, 38494,43231,18306,34815,6159, 32142,36979,43231,15671,30854,2518, 35489,17303,5411, 10354,6142, 20849,9976, 43231,26169,3919, 1528, 6725, 10048,181,
6064, 21216,5564, 17189,3957, 362, 8179, 30780,15636,3948, 4052, 1977, 1258, 161, 9086, 30679,21286,2340, 40472,8604, 40472,35781,24306,18827,30480,17718,22079,
9923, 33351,14569,18305,43230,35781,35780,8055, 16005,7112, 16879,36979,43230,43230,5637, 21110,17302,395, 9642, 22848,35621,43230,40471,11828,36979,3237, 25634,
34770,4970, 16940,6046, 7132, 35212,43229,22440,35780,20596,34814,9861, 6747, 7230, 15005,8782, 11865,37536,39368,12432,9885, 32902,11308,36072,16817,34346,38836,
37231,21109,18507,15666,33351,3264, 4969, 16403,10644,9860, 5091, 24824,18130,12617,15591,27037,10733,17301,33350,21604,7080, 27711,24472,21634,6060, 832, 37618,
10416,1749, 24920,24040,14576,20461,34814,5914, 15567,413, 9055, 5962, 27569,4139, 24722,34020,7636, 11081,9151, 1172, 20300,19401,24915,461, 8390, 16147,36820,
- 18193,13601,25496,33795,11012,19530,36979,26915,6877, 35365,20955,10244,37800,15589,17302,13833,16708,4549, 12966,33108,13432,19796,38494,12293,24933,27430,5643,
+ 18193,13601,25496,33795,11012,19530,36979,26915,6877, 35365,20955,10244,37800,15589,17302,13833,16708,4549, 12966,33108,13432,19796,38494,12293,24933,27430,5643,
22154,13600,25922,26743,21256,8781, 21108,33350,43229,1027, 9252, 1509, 2580, 3163, 12534,33585,20604,24149,21404,13431,40471,43229,32722,37906,36978,32721,43229,
- 24932,38493,12067,8229, 43228,38493,39342,38904,43228,24931,43228,15665,40471,38493,11940,38493,33363,3102, 20471,3875, 5969, 35780,34814,34020,34814,26713,3976,
+ 24932,38493,12067,8229, 43228,38493,39342,38904,43228,24931,43228,15665,40471,38493,11940,38493,33363,3102, 20471,3875, 5969, 35780,34814,34020,34814,26713,3976,
13430,23887,35780,11864,38492,11551,37870,24020,9746, 2427, 12558,33350,27538,34020,40471,32793,37898,34019,43228,40470,38492,33128,15004,13921,18344,7255, 12965,
38492,34359,24547,13920,27537,21107,20470,22315,7595, 43227,27536,16090,27031,3007, 38524,4276, 12557,6534, 11550,5510, 9276, 602, 43227,9323, 26851,26407,34168,
8470, 39061,39008,35955,32974,33881,34944,33217,30853,11028,23666,34735,1594, 35502,38492,43227,34813,22847,12803,14910,16838,34326,43227,34622,4575, 19695,18499,
@@ -15144,12 +15139,12 @@ static const unsigned short Ranks[197839] =
37680,34367,38536,18302,32311,9468, 32719,40470,2517, 1563, 37658,24310,40470,32936,43226,12964,18301,17299,17298,17297,11281,10998,32032,38490,10817,40470,23156,
9859, 38490,38626,26164,34813,38490,2945, 36978,38490,40469,16402,18556,32718,33350,30852,2564, 43226,35219,5808, 2075, 16784,37723,24929,5878, 34138,35779,33349,
8272, 21997,43225,21183,43225,36978,43225,33047,40469,34150,26163,40469,991, 36494,39147,7049, 38795,39290,34813,43225,9772, 35779,40469,10459,13919,9858, 30389,
- 921, 36087,518, 21690,3280, 27092,36434,16106,34019,28380,31326,18535,36274,30851,818, 33217,2250, 18300,10069,2856, 11216,2298, 33058,10997,10292,6533, 3061,
+ 921, 36087,518, 21690,3280, 27092,36434,16106,34019,28380,31326,18535,36274,30851,818, 33217,2250, 18300,10069,2856, 11216,2298, 33058,10997,10292,6533, 3061,
12292,36977,13598,9293, 19137,935, 3119, 2758, 9438, 14, 2259, 32786,15733,28478,15986,32880,29808,32380,970, 8704, 14908,32081,22196,11952,36784,1665, 10927,
- 12560,31253,14815,6778, 13918,26377,6475, 34577,5100, 34493,14025,30288,11280,8684, 7158, 12559,13839,11488,15012,8928, 6045, 34019,13739,15634,19595,25247,4481,
+ 12560,31253,14815,6778, 13918,26377,6475, 34577,5100, 34493,14025,30288,11280,8684, 7158, 12559,13839,11488,15012,8928, 6045, 34019,13739,15634,19595,25247,4481,
21106,30273,10517,13917,22330,36977,33349,7, 21911,38489,10487,38058,33040,31722,9642, 20469,38056,7411, 18898,35612,35315,8509, 15279,37224,11809,19477,40468,
9729, 38722,43224,40468,842, 38651,23799,2711, 14675,3878, 13035,13916,22501,7869, 43224,36977,16503,10816,43224,290, 9608, 738, 9484, 13565,43224,38489,13429,
- 375, 40468,40468,40467,18943,8096, 8508, 3131, 43223,18555,40467,97, 21929,11597,25659,21470,11744,20564,28775,20981,28546,15650,30966,4627, 38761,34019,2062,
+ 375, 40468,40468,40467,18943,8096, 8508, 3131, 43223,18555,40467,97, 21929,11597,25659,21470,11744,20564,28775,20981,28546,15650,30966,4627, 38761,34019,2062,
7974, 7273, 31980,25904,25635,29205,5023, 36144,10326,43223,20808,16401,7241, 15230,9322, 5397, 19594,12558,16400,40467,28628,34686,35119,7213, 33118,33090,30721,
11184,21928,10094,16399,19593,14248,34609,20141,17964,34743,12963,8616, 14442,25906,14441,12656,7599, 3201, 35368,596, 11549,5906, 40467,36447,37109,26006,36371,
34239,36267,21272,835, 33100,37951,5782, 34831,4856, 2872, 6364, 22846,7984, 20017,30035,17296,9662, 8946, 35819,11279,36153,37652,21480,22911,35766,20186,17201,
@@ -15158,43 +15153,43 @@ static const unsigned short Ranks[197839] =
4569, 17295,27535,15633,1914, 12291,36977,9857, 16939,629, 2618, 2492, 8945, 3638, 17294,35542,608, 17171,13749,1220, 40466,32717,35779,43223,40466,34813,32716,
34812,2964, 38489,14781,40466,27534,21182,34812,36155,9217, 38899,33349,38489,6980, 40465,38134,43222,22980,5817, 35778,38488,31545,232, 25504,40465,1665, 11862,
19258,14866,34232,11548,5292, 33048,29462,11449,35885,1986, 2227, 27533,35439,971, 35640,946, 4663, 9678, 43222,3726, 11088,24775,18935,21181,7982, 364, 22987,
- 32715,43222,161, 937, 31363,43222,43221,33742,12961,40465,7229, 1932, 30850,33513,11644,33560,38201,771, 1536, 1521, 4055, 8410, 38167,8613, 8990, 9384, 9746,
+ 32715,43222,161, 937, 31363,43222,43221,33742,12961,40465,7229, 1932, 30850,33513,11644,33560,38201,771, 1536, 1521, 4055, 8410, 38167,8613, 8990, 9384, 9746,
10029,10229,10412,10702,11195,4729, 11523,11880,12133,12357,12729,13158,13678,13873,14211,14535,5407, 15116,15446,15638,15993,16568,16808,16853,17674,18166,18101,
5863, 18095,19323,19512,20329,20992,20696,21332,22061,22631,22169,6392, 22816,23194,24085,24652,25253,25917,25958,25589,26686,27351,6786, 27320,28943,27874,29221,
29055,30193,31681,33020,33058,33352,7220, 33194,33527,33646,33773,34199,34120,34540,34030,35194,35546,7731, 35007,36337,36296,36490,36853,35773,36973,36787,36426,
37331,7957, 36676,37483,38094,37648,38037,38094,38572,39416,38535,13900,20991,36881,8628, 12686,6865, 34422,15997,6689, 12944,37252,40465,34018,27532,34898,35778,
- 30849,43221,36976,19793,3477, 26162,21104,21103,36976,40464,40464,43221,38488,17672,33827,21996,40464,25353,24928,30377,36976,29083,29082,355, 18232,25690,1185,
+ 30849,43221,36976,19793,3477, 26162,21104,21103,36976,40464,40464,43221,38488,17672,33827,21996,40464,25353,24928,30377,36976,29083,29082,355, 18232,25690,1185,
4641, 36976,38488,18554,29081,19591,3705, 8944, 28062,6297, 43221,43220,40464,36975,34812,33349,17399,38488,38487,38487,14909,19136,13915,40463,26161,12556,40463,
35778,34812,40463,12555,38487,3858, 43220,38487,34811,43220,20702,2956, 2356, 718, 43220,21757,36427,2416, 37074,3378, 38708,13882,17728,34811,2072, 6161, 38486,
- 12557,17293,19792,2280, 9150, 15003,8034, 5048, 4794, 21087,32846,2454, 27531,16502,17749,37742,12960,28424,17398,33348,34018,2169, 4185, 12585,17857,15926,2949,
- 10027,5320, 6581, 13428,38286,18198,2047, 21294,3331, 2855, 7284, 35764,1373, 24400,12597,6355, 11861,35740,38544,34900,1014, 28638,15089,31997,12254,20656,2342,
+ 12557,17293,19792,2280, 9150, 15003,8034, 5048, 4794, 21087,32846,2454, 27531,16502,17749,37742,12960,28424,17398,33348,34018,2169, 4185, 12585,17857,15926,2949,
+ 10027,5320, 6581, 13428,38286,18198,2047, 21294,3331, 2855, 7284, 35764,1373, 24400,12597,6355, 11861,35740,38544,34900,1014, 28638,15089,31997,12254,20656,2342,
21924,7044, 9266, 817, 22102,9483, 7730, 7795, 43219,3034, 22845,16427,26758,17671,34018,40463,34811,43219,37031,36975,10815,18034,33258,36975,8606, 40462,33348,
30848,12290,24927,33348,40462,34811,38486,2014, 17703,35851,38486,16881,34810,30847,43219,10814,36606,1250, 29954,32778,34368,19015,4012, 43219,38486,11592,34810,
89, 25207,10976,10613,5479, 36975,28216,19791,38752,22759,31967,27530,27529,20468,33348,8162, 37688,21208,35778,27423,28435,12643,12554,43218,12289,20467,35777,
- 1337, 40462,35777,2626, 29780,35777,16088,12195,43218,21180,19537,33132,8734, 24926,26160,12288,19281,138, 18164,616, 13621,3585, 293, 1011, 18476,38859,2933,
+ 1337, 40462,35777,2626, 29780,35777,16088,12195,43218,21180,19537,33132,8734, 24926,26160,12288,19281,138, 18164,616, 13621,3585, 293, 1011, 18476,38859,2933,
1319, 25554,29952,37674,21313,7053, 33355,34067,1185, 18553,17292,8917, 30846,40462,114, 27298,7816, 43218,38485,38365,30663,37855,8948, 26941,35777,1440, 23411,
43218,7729, 13914,26592,25678,2110, 5550, 498, 16500,31982,19590,26360,11827,38485,13050,40461,2147, 12287,43217,14568,40461,32852,5124, 35776,11591,43217,43217,
- 36575,33347,40461,27914,17963,9482, 40461,20466,227, 14567,35155,40460,4112, 36172,34018,175, 32320,21161,32016,12362,15002,36471,37796,8610, 32607,22702,9241,
+ 36575,33347,40461,27914,17963,9482, 40461,20466,227, 14567,35155,40460,4112, 36172,34018,175, 32320,21161,32016,12362,15002,36471,37796,8610, 32607,22702,9241,
6488, 14095,12194,19589,9065, 40460,35776,28996,32645,19963,20352,33668,1284, 11775,14217,19284,6466, 21102,8605, 30392,3890, 4524, 22149,2440, 9078, 6837, 18400,
23939,7227, 28290,28374,36411,15557,32555,31405,43217,38485,35776,43216,35244,36974,40460,38485,43216,43216,34017,30302,16060,24898,5399, 11877,32523,11968,34670,
5705, 6400, 10626,15092,26159,40460,8161, 33333,39415,6184, 19790,43216,7209, 2871, 33509,22685,34017,6379, 12284,9676, 10120,4057, 35776,30845,30844,40459,11187,
38484,8650, 15632,15227,13314,10813,6399, 19588,9481, 34810,11381,18298,23797,43215,38484,36974,40459,9458, 12553,11547,35775,8604, 7622, 26158,9457, 40459,38484,
2146, 40459,11826,38484,33347,19072,1801, 36051,25045,3594, 10366,21101,4265, 2577, 11381,6615, 20758,35670,7868, 810, 4082, 12184,9714, 8087, 34751,313, 15941,
- 23453,3002, 47, 19003,37025,2694, 899, 22844,43215,21995,938, 34017,40458,35775,20465,43215,36974,35775,14417,35775,3158, 38483,21179,40458,38301,18203,1985,
+ 23453,3002, 47, 19003,37025,2694, 899, 22844,43215,21995,938, 34017,40458,35775,20465,43215,36974,35775,14417,35775,3158, 38483,21179,40458,38301,18203,1985,
20968,28897,26851,7349, 22646,32480,7315, 15225,2632, 38483,36974,2559, 487, 43215,43214,43214,123, 8612, 30408,4677, 512, 6796, 13426,140, 28347,43214,21614,
7515, 32714,38483,726, 24723,19135,15582,2275, 2704, 25799,38996,43214,36973,14864,17463,10441,33556,25602,30749,39362,36973,7228, 43213,16631,43213,12286,43213,
32713,40458,34017,24437,31, 1606, 21396,7870, 15292,32206,30439,21635,19334,40458,4775, 4774, 19024,35774,23796,43213,32712,35899,43212,4289, 38704,20468,14596,
38483,10733,3776, 17033,21178,9278, 390, 5636, 40457,30843,43212,35149,8686, 28029,32711,28352,186, 38446,1345, 987, 36202,8507, 36204,29080,36973,828, 40457,
- 18629,22843,1867, 26474,29940,31940,6897, 11277,40457,15663,36787,11153,16087,3665, 40457,16086,36973,29079,7419, 15001,14950,30842,40456,2426, 43212,32617,2901,
- 40456,34016,35774,5833, 43212,23795,38482,24999,40456,26634,40456,38482,22842,19789,17962,15278,4165, 19134,34026,36972,30841,40455,38737,20464,38482,10732,1153,
+ 18629,22843,1867, 26474,29940,31940,6897, 11277,40457,15663,36787,11153,16087,3665, 40457,16086,36973,29079,7419, 15001,14950,30842,40456,2426, 43212,32617,2901,
+ 40456,34016,35774,5833, 43212,23795,38482,24999,40456,26634,40456,38482,22842,19789,17962,15278,4165, 19134,34026,36972,30841,40455,38737,20464,38482,10732,1153,
37249,8733, 35935,40455,599, 26381,28099,40455,12066,4350, 35555,34322,40455,11223,11797,4129, 21100,11860,14216,43211,40454,40454,40454,34016,33347,35042,24925,
34016,8649, 2339, 17291,37809,9535, 25031,34118,39112,40454,43211,15000,35774,11859,36972,27870,6515, 26157,18552,43211,6183, 33513,9597, 12959,23794,35774,36972,
- 34016,27528,5550, 34015,3627, 39001,38482,220, 19587,20191,23134,40453,11858,33616,34096,11947,20319,29185,1021, 10412,21099,28552,32614,1596, 21129,3344, 1870,
+ 34016,27528,5550, 34015,3627, 39001,38482,220, 19587,20191,23134,40453,11858,33616,34096,11947,20319,29185,1021, 10412,21099,28552,32614,1596, 21129,3344, 1870,
12556,16397,22238,17409,1956, 22540,16034,853, 16352,33948,32710,38051,16501,38481,14999,32709,36972,30840,35223,5877, 40453,12555,1604, 40453,17290,71, 16494,
7815, 18712,11095,9159, 7770, 26709,19627,31146,14773,16795,414, 10580,3368, 15812,11388,20210,271, 12004,9661, 43211,290, 5392, 16230,36971,34015,27527,35773,
17961,25602,11029,608, 2150, 38577,127, 2318, 3696, 12269,15662,6717, 32644,16128,5652, 17289,22443,34015,36333,37113,5739, 13781,2204, 34810,43210,27078,34015,
35773,36971,43210,36971,7531, 21098,25256,40453,816, 19586,273, 3223, 8603, 30839,3695, 10833,43210,39101,20176,21647,335, 19285,28536,19275,26373,11430,19768,
- 32950,18551,12193,16396,3968, 34143,11380,18812,21177,40452,34014,34014,24948,27638,3462, 2149, 40452,43210,40452,38481,3328, 13420,6119, 58, 25220,902, 7129,
+ 32950,18551,12193,16396,3968, 34143,11380,18812,21177,40452,34014,34014,24948,27638,3462, 2149, 40452,43210,40452,38481,3328, 13420,6119, 58, 25220,902, 7129,
13021,19361,18150,11012,26092,21163,8268, 5509, 16661,4593, 29956,40452,34014,19012,36971,43209,13053,32208,22614,7728, 31491,17973,30434,13881,13751,5699, 34209,
9856, 31068,21097,4067, 43209,18297,21096,43209,11342,10458,4361, 20939,16844,117, 12453,40451,15789,12710,14966,9090, 20684,32647,35828,24924,32687,35773,11812,
17960,22401,724, 2261, 14562,8732, 13091,43209,11857,35153,34738,3953, 4148, 32243,18506,21060,29078,15490,11137,3105, 38043,32830,35773,35772,37235,35218,10021,
@@ -15206,34 +15201,34 @@ static const unsigned short Ranks[197839] =
23792,34012,9956, 39258,27635,8533, 18220,14215,951, 8876, 3801, 13427,14998,18294,37205,19583,43205,7227, 3043, 6674, 14997,10159,4130, 17135,6575, 13313,35771,
8648, 33018,39151,34075,21929,36969,33546,19582,7048, 37282,18549,4901, 26741,36969,30837,24923,11186,38480,22840,10291,43205,3513, 40449,38480,26156,9456, 38479,
1081, 14514,35493,37589,43204,19787,27525,32963,28605,30836,30835,33771,34809,22839,43204,35771,35771,15933,35321,10115,8504, 14886,3171, 20463,38479,15685,38479,
- 17667,25490,38479,3476, 6969, 38478,33346,7142, 17288,37523,12285,38478,6030, 29170,37383,34012,3045, 43204,467, 8215, 6516, 8094, 34012,15661,36968,32997,2608,
+ 17667,25490,38479,3476, 6969, 38478,33346,7142, 17288,37523,12285,38478,6030, 29170,37383,34012,3045, 43204,467, 8215, 6516, 8094, 34012,15661,36968,32997,2608,
11379,35770,23791,17478,34503,36968,40449,2548, 616, 36106,27524,30834,43204,13597,39311,20462,43203,40449,34809,33386,43203,27827,27523,16085,10812,38478,36968,
27522,35770,24922,880, 33851,15236,3309, 17958,34012,28513,38478,43203,18548,40448,35770,6295, 30833,36968,35770,38477,38477,12091,215, 14408,14439,12554,12597,
21095,26565,1544, 259, 7059, 1336, 7530, 12462,5268, 9875, 29077,3512, 2165, 11378,5832, 30832,36939,14107,27521,30831,29076,43203,38477,32707,43202,11347,27079,
5365, 34338,7938, 33342,35769,5509, 8502, 2235, 4069, 1844, 3122, 16395,7960, 13426,21094,9660, 14908,26155,36967,24921,40448,43202,14907,43202,35433,35769,18293,
- 11278,23790,37192,5222, 19762,30830,11303,35112,34078,43202,43201,5507, 26154,34326,38477,38476,19786,6061, 36967,6182, 5686, 6780, 34011,43201,38476,21994,2180,
+ 11278,23790,37192,5222, 19762,30830,11303,35112,34078,43202,43201,5507, 26154,34326,38477,38476,19786,6061, 36967,6182, 5686, 6780, 34011,43201,38476,21994,2180,
34126,43201,35769,29075,19504,12066,27734,13312,40448,43201,9855, 23789,15685,32706,2882, 8963, 34095,35769,38381,9321, 36967,40448,40447,34011,5245, 36105,33054,
34058,32365,19268,32815,8731, 14566,12451,21093,4471, 40447,745, 8031, 16937,36967,33345,16500,35768,43200,19339,22448,14545,35289,39058,7727, 19133,34444,21175,
3650, 21092,34808,14996,16009,15630,34011,23219,34011,40447,10290,11277,34373,33345,2536, 5232, 28327,33016,37116,40447,33345,38476,6849, 34808,13596,43200,32705,
36966,30829,1305, 25177,33034,23221,22838,1620, 17474,6633, 13655,614, 11022,15043,4127, 25831,35891,37270,35171,5508, 26556,40446,33345,34010,23788,43200,43200,
38476,43199,17555,38475,36911,12957,38475,11276,33795,19354,11669,31304,14, 12546,13595,36966,21091,13912,34808,17524,43199,20460,8054, 22341,34808,43199,17222,
- 28233,17287,38475,38475,34010,29074,33755,35947,37110,43199,19828,43198,40446,35768,40446,34010,16936,18292,37470,428, 1727, 12031,38230,6994, 38213,37871,8527,
+ 28233,17287,38475,38475,34010,29074,33755,35947,37110,43199,19828,43198,40446,35768,40446,34010,16936,18292,37470,428, 1727, 12031,38230,6994, 38213,37871,8527,
18185,38856,9750, 1839, 31317,40446,10708,34340,35495,10068,40445,29607,11269,36667,7330, 35927,26238,21926,8026, 36861,38474,31731,21090,43198,5582, 43198,31114,
- 43198,43197,634, 30460,28027,22187,11856,34544,10731,9480, 40445,26992,1301, 19545,28927,35926,34010,15629,39403,33509,21089,6113, 16394,15628,16393,40445,4520,
- 1921, 29395,35145,30435,43197,22837,16774,32704,40445,36966,17286,36381,7778, 40444,34807,40444,1857, 32856,7203, 16327,6474, 12553,17495,11178,37999,14438,3963,
+ 43198,43197,634, 30460,28027,22187,11856,34544,10731,9480, 40445,26992,1301, 19545,28927,35926,34010,15629,39403,33509,21089,6113, 16394,15628,16393,40445,4520,
+ 1921, 29395,35145,30435,43197,22837,16774,32704,40445,36966,17286,36381,7778, 40444,34807,40444,1857, 32856,7203, 16327,6474, 12553,17495,11178,37999,14438,3963,
38281,6030, 43197,20461,40444,34807,34009,15627,33187,35768,25724,33344,40444,30617,3006, 21088,3360, 4940, 11275,34807,23787,40443,22836,43197,10289,43196,28328,
754, 8602, 36966,43196,34857,43196,764, 3649, 7529, 38474,9455, 40443,40443,33344,40443,38474,27520,30828,34009,23749,33028,34910,23087,7766, 35899,8357, 20783,
- 37711,23018,36965,12612,2195, 7025, 26689,32632,29057,20376,31530,25802,20460,2721, 43196,19581,37425,43195,36965,9230, 65, 19580,9662, 4402, 18543,10514,4786,
- 16078,23092,5175, 10486,32341,1468, 18291,8820, 12305,9437, 973, 8407, 21087,8358, 85, 5355, 14014,27921,13124,1804, 32801,1529, 9687, 23404,14089,4165, 2397,
- 31580,14780,974, 11642,310, 25845,4046, 31376,782, 25531,24059,19857,11791,7826, 48, 3777, 5448, 5695, 12882,7548, 22374,12121,22637,26594,18370,20226,8255,
- 157, 3070, 21410,32447,4225, 8034, 10928,30704,32117,31413,7623, 24151,26118,15132,2373, 31159,25462,2663, 32865,2525, 25993,9387, 19579,18616,23190,29409,8132,
+ 37711,23018,36965,12612,2195, 7025, 26689,32632,29057,20376,31530,25802,20460,2721, 43196,19581,37425,43195,36965,9230, 65, 19580,9662, 4402, 18543,10514,4786,
+ 16078,23092,5175, 10486,32341,1468, 18291,8820, 12305,9437, 973, 8407, 21087,8358, 85, 5355, 14014,27921,13124,1804, 32801,1529, 9687, 23404,14089,4165, 2397,
+ 31580,14780,974, 11642,310, 25845,4046, 31376,782, 25531,24059,19857,11791,7826, 48, 3777, 5448, 5695, 12882,7548, 22374,12121,22637,26594,18370,20226,8255,
+ 157, 3070, 21410,32447,4225, 8034, 10928,30704,32117,31413,7623, 24151,26118,15132,2373, 31159,25462,2663, 32865,2525, 25993,9387, 19579,18616,23190,29409,8132,
3504, 30, 17627,20392,1170, 20854,9374, 941, 22116,15258,13420,25041,32926,19521,22771,30277,7581, 34009,43195,21993,33581,18290,15626,35768,4015, 15532,19578,
21086,14567,26153,1443, 7494, 15773,16499,14094,33286,7110, 35767,36965,12259,685, 13311,43195,40442,38474,17397,40442,30827,36965,23905,34009,37940,33344,23716,
34807,27602,33344,43195,28483,34861,43194,39247,1722, 40442,2184, 37073,40442,34008,26152,33753,35767,21085,35767,3744, 8943, 17396,43194,36964,43194,38473,17285,
23786,10516,40441,33253,16084,10067,39211,17584,43194,32703,4939, 24920,38473,30826,35046,8728, 10064,6654, 32702,9874, 40441,34008,29775,28978,22976,8389, 40441,
38473,26151,34078,14906,5715, 12447,43193,38473,13911,14995,7857, 29841,17395,20321,33343,34008,9894, 43193,10361,30141,30254,21123,37670,7210, 3554, 35693,40441,
- 8045, 35164,16429,43193,36964,36964,24919,12425,4147, 5607, 5740, 8942, 16392,22289,35291,5641, 33902,39136,8730, 11377,36964,3444, 27855,4982, 38231,38472,4129,
- 5831, 309, 13425,35767,17957,27519,36186,7099, 16498,18670,35766,14214,17956,21992,214, 36633,36837,3362, 8356, 36963,22321,11590,33377,20459,43193,22835,5640,
+ 8045, 35164,16429,43193,36964,36964,24919,12425,4147, 5607, 5740, 8942, 16392,22289,35291,5641, 33902,39136,8730, 11377,36964,3444, 27855,4982, 38231,38472,4129,
+ 5831, 309, 13425,35767,17957,27519,36186,7099, 16498,18670,35766,14214,17956,21992,214, 36633,36837,3362, 8356, 36963,22321,11590,33377,20459,43193,22835,5640,
15720,3710, 33343,24884,22724,13343,43192,9454, 1252, 36605,2983, 14565,18547,12284,40440,43192,34008,747, 7427, 2152, 38359,36263,33343,38201,37146,34007,43192,
33343,36963,14715,39123,7234, 15260,12891,19577,33562,40440,6531, 14437,19576,18289,2489, 38519,38038,323, 11279,28013,8318, 30154,34806,35565,36057,37487,16497,
19132,19880,18149,31087,8388, 14905,38128,33342,881, 2919, 26528,32374,29871,5259, 37344,12943,34820,24151,28825,7580, 4661, 1391, 16344,27201,1316, 36469,19218,
@@ -15242,48 +15237,48 @@ static const unsigned short Ranks[197839] =
19068,4349, 8928, 21084,9923, 9339, 34577,21174,18784,5956, 21083,5507, 370, 6232, 32968,36963,20907,9815, 32740,29552,11533,19131,5071, 38472,7661, 1223, 17567,
6890, 21991,43191,3310, 13594,3089, 43191,5777, 36962,23785,34806,38472,40439,24918,21173,43191,36962,38472,33342,43190,29490,38471,10013,22834,43190,29073,26150,
35766,35766,14904,38471,16391,27518,37998,35508,2205, 17284,23000,43190,36962,26149,37533,38471,4049, 10587,43190,19130,9320, 2653, 38471,43189,6231, 11077,23784,
- 39290,33342,43189,36874,35765,11152,34007,29072,16079,8230, 36222,18498,9486, 21172,28231,2160, 29071,33064,33334,2806, 33362,27517,43189,12283,21082,27506,6473,
+ 39290,33342,43189,36874,35765,11152,34007,29072,16079,8230, 36222,18498,9486, 21172,28231,2160, 29071,33064,33334,2806, 33362,27517,43189,12283,21082,27506,6473,
10066,32701,8506, 21670,4878, 40439,33342,18626,323, 29619,14412,14378,2383, 35145,9478, 22833,18288,43189,7063, 43188,30825,34806,35765,32700,43188,5075, 38384,
33299,19785,33146,38470,34805,22832,3674, 8506, 35590,4348, 7771, 4873, 36064,11185,14994,43188,30940,37865,43188,32987,43187,23783,12301,17283,40439,16948,34447,
- 1378, 30321,17282,34120,40439,35931,9077, 3189, 11217,4808, 5458, 43187,38775,7062, 30824,7840, 35765,32699,13880,34706,30888,30463,2765, 8505, 12723,34115,8093,
+ 1378, 30321,17282,34120,40439,35931,9077, 3189, 11217,4808, 5458, 43187,38775,7062, 30824,7840, 35765,32699,13880,34706,30888,30463,2765, 8505, 12723,34115,8093,
14436,13424,16083,5429, 36962,21081,8060, 38470,14435,27850,17755,10211,5193, 499, 10455,6343, 23118,18138,10306,33632,30387,18665,7054, 38407,18264,33558,17293,
9659, 6921, 32896,23939,2870, 6571, 18643,43187,24464,15597,31777,15674,14966,20827,9544, 14669,34007,16390,38470,7954, 645, 32834,9873, 12282,4409, 28977,24914,
- 14457,17994,8647, 33341,40438,36961,24488,40438,43187,19595,14662,25662,618, 24010,28813,24576,11394,22390,38470,33068,21071,13248,6324, 29320,28846,20632,7980,
+ 14457,17994,8647, 33341,40438,36961,24488,40438,43187,19595,14662,25662,618, 24010,28813,24576,11394,22390,38470,33068,21071,13248,6324, 29320,28846,20632,7980,
28576,21171,14380,36541,36556,3045, 25178,3272, 10635,5399, 7509, 7122, 28346,16389,19575,37657,8780, 31670,31517,38911,31154,11333,16074,27989,25965,13368,21179,
- 25318,11546,24223,13568,6397, 18287,21990,37892,35572,35765,23782,43186,34244,16869,30825,37823,34006,27207,8839, 38469,36961,35764,38469,28870,40438,31160,4154,
+ 25318,11546,24223,13568,6397, 18287,21990,37892,35572,35765,23782,43186,34244,16869,30825,37823,34006,27207,8839, 38469,36961,35764,38469,28870,40438,31160,4154,
43186,5168, 11184,43186,12001,34006,13423,34978,3677, 7313, 5324, 23781,4470, 40438,23780,32698,40437,11459,36266,43186,43185,40437,2812, 11301,11183,10093,19574,
8538, 26306,13505,26148,26687,40437,43185,21989,34805,43185,38469,40437,33341,40436,2042, 207, 3338, 28607,13359,594, 1964, 37176,2814, 1223, 623, 20458,26147,
- 9319, 29028,36961,12122,43185,22831,32697,38469,17281,34805,38468,17280,38468,40436,37214,43184,21080,34928,36247,30823,36961,12551,8838, 33341,11182,21079,8925,
+ 9319, 29028,36961,12122,43185,22831,32697,38469,17281,34805,38468,17280,38468,40436,37214,43184,21080,34928,36247,30823,36961,12551,8838, 33341,11182,21079,8925,
35239,23779,2466, 2930, 19784,40436,43184,40436,29121,3466, 11273,36390,28538,21170,38468,26146,37136,34862,22830,27516,34006,9733, 34805,4877, 43184,35764,27515,
34804,33341,14982,34514,33340,30822,26145,35436,43184,34984,10067,3786, 4879, 13649,17327,24993,40435,38468,13879,43183,10990,15830,36960,10557,36960,17955,43183,
35764,40435,12552,16388,10200,38861,33340,29070,35764,2322, 9318, 3942, 8699, 38467,6532, 35847,1567, 36960,29069,23778,38467,4885, 14258,4229, 12192,18016,38998,
35763,7777, 7684, 18546,43183,30821,34804,1508, 14903,36960,15660,970, 43183,43182,38770,38223,14207,7418, 15659,17393,35763,35763,29068,32696,24917,33340,12780,
- 43182,27441,13878,35763,19263,34006,8633, 155, 22829,5639, 43182,10638,40435,40435,43182,38604,17701,1634, 1067, 5685, 482, 10013,3807, 33340,14993,17279,3044,
+ 43182,27441,13878,35763,19263,34006,8633, 155, 22829,5639, 43182,10638,40435,40435,43182,38604,17701,1634, 1067, 5685, 482, 10013,3807, 33340,14993,17279,3044,
24916,33339,4293, 13503,25470,32953,35889,14434,33726,11589,35762,13972,5090, 15658,40434,2168, 34401,34804,38467,34352,38417,10293,38543,34429,36423,40434,36959,
- 29067,40434,16496,35762,32388,36536,26153,30443,2915, 3367, 38467,43181,8523, 8092, 26301,13338,9333, 40434,10014,36959,38466,6652, 21169,43181,30820,40433,4761,
+ 29067,40434,16496,35762,32388,36536,26153,30443,2915, 3367, 38467,43181,8523, 8092, 26301,13338,9333, 40434,10014,36959,38466,6652, 21169,43181,30820,40433,4761,
12065,40433,32814,13200,34804,38466,23777,43181,34803,6401, 3236, 28998,43181,37672,43180,34005,40433,11825,34280,30485,21789,9989, 22891,40433,18545,34191,32083,
43180,36959,9317, 18554,36550,9329, 7898, 959, 12913,34803,13310,31845,21988,36959,40432,20457,3403, 5089, 36958,30819,14564,22828,30818,38466,650, 24915,16082,
12802,36958,30817,27630,43180,35762,602, 11780,13593,36958,35762,38466,20996,11598,8102, 33697,7426, 29897,43180,43179,10312,43179,32695,13877,16387,43179,24292,
15657,40432,6508, 9388, 35679,38465,43179,38108,30816,35918,26899,10911,25661,6370, 34005,40432,30815,27514,43178,658, 18544,1219, 40432,21317,43178,43178,30814,
- 38465,12281,40431,32834,29066,43178,34803,40431,4184, 33943,30813,39378,43177,14563,13525,481, 43177,32694,4588, 35761,17954,38465,2394, 43177,33801,8234, 1738,
+ 38465,12281,40431,32834,29066,43178,34803,40431,4184, 33943,30813,39378,43177,14563,13525,481, 43177,32694,4588, 35761,17954,38465,2394, 43177,33801,8234, 1738,
34803,40431,6202, 38276,38465,33339,16247,38464,27434,40431,7208, 18286,13876,36958,43177,38464,6396, 550, 40430,32693,33339,12875,43176,34802,35761,21422,29494,
32692,38464,14169,4205, 36957,1355, 16081,36957,38464,40430,26144,34802,10996,14434,12064,22677,24914,32937,14764,36913,34600,36957,26143,36132,13592,33458,34005,
- 35996,28883,7953, 32691,14213,34802,34005,35058,9596, 22827,35761,36957,21078,26142,40430,34888,8160, 38463,43176,10642,36956,18477,17953,17278,7207, 33339,1621,
+ 35996,28883,7953, 32691,14213,34802,34005,35058,9596, 22827,35761,36957,21078,26142,40430,34888,8160, 38463,43176,10642,36956,18477,17953,17278,7207, 33339,1621,
36956,40430,19783,6342, 5999, 11588,37027,14433,38463,20456,718, 13422,15625,38515,12063,35761,6130, 38463,19812,40429,38463,23776,38462,34004,35760,40429,34419,
43176,17291,43176,583, 17277,36956,38462,29065,5846, 43175,34004,30812,43175,36021,38457,18126,21783,40429,14562,30811,38462,43175,40429,43175,887, 38810,31563,
33288,18285,38911,43174,37046,36108,22817,40428,35760,24101,8847, 2626, 3098, 26141,5053, 38462,12801,23775,10989,10947,5123, 24913,19542,33478,34004,39082,39187,
- 22365,43174,27513,40428,40428,33338,43174,19782,43174,43173,35357,37801,10292,25544,17814,6967, 9195, 932, 19672,692, 11272,4429, 15624,38461,12280,3087, 2552,
- 40428,38351,35760,13309,4261, 40427,30409,38461,120, 3876, 3574, 19738,3082, 39205,19907,36648,33338,43173,19895,36956,40427,31110,26294,12601,3047, 33465,3294,
- 21330,8021, 18680,30406,11771,16566,38873,30810,21987,11339,193, 12046,33683,10515,12514,25201,21612,21047,35875,19129,36100,23055,11948,36324,36199,43173,2182,
+ 22365,43174,27513,40428,40428,33338,43174,19782,43174,43173,35357,37801,10292,25544,17814,6967, 9195, 932, 19672,692, 11272,4429, 15624,38461,12280,3087, 2552,
+ 40428,38351,35760,13309,4261, 40427,30409,38461,120, 3876, 3574, 19738,3082, 39205,19907,36648,33338,43173,19895,36956,40427,31110,26294,12601,3047, 33465,3294,
+ 21330,8021, 18680,30406,11771,16566,38873,30810,21987,11339,193, 12046,33683,10515,12514,25201,21612,21047,35875,19129,36100,23055,11948,36324,36199,43173,2182,
36587,26075,3757, 38467,13591,30998,39355,18929,36955,33338,4921, 16121,9194, 20071,18543,19573,10811,4292, 40427,10457,10514,37662,21986,35760,40427,37946,38163,
37671,35759,34802,43173,19572,36081,17276,9581, 26596,39418,37556,37098,33432,38461,27753,30809,43172,37746,31798,32554,32979,14769,188, 24724,2210, 11741,22450,
26611,12279,23774,43172,17275,18542,39399,8091, 35759,36955,24112,32896,4366, 27713,18284,32924,43172,35204,7633, 33338,34801,8864, 38461,2245, 36059,34801,34801,
- 36955,18795,3740, 9582, 9595, 30808,1668, 10771,33851,43172,37486,39341,1754, 6494, 15623,36955,13910,38460,34004,38460,22826,26140,10651,20455,33125,22825,8779,
+ 36955,18795,3740, 9582, 9595, 30808,1668, 10771,33851,43172,37486,39341,1754, 6494, 15623,36955,13910,38460,34004,38460,22826,26140,10651,20455,33125,22825,8779,
24912,21077,34801,17357,17874,34800,43171,21076,26894,37601,38919,9067, 12551,6112, 14686,1493, 13852,14671,17550,1391, 24778,7726, 36558,43171,19143,17274,23773,
36954,25988,21075,33431,28244,43171,43171,38460,40426,36954,40426,36954,36954,34800,38460,23451,6152, 35533,8577, 43170,9810, 10311,1892, 11587,38459,31929,32709,
17227,40426,5594, 43170,2103, 40426,14212,23772,29064,38459,30807,10810,27512,40425,22824,40425,38266,43170,26139,18794,10694,12643,1890, 30995,22823,38459,43170,
34003,39354,34003,34800,24635,2652, 21074,40425,8159, 40425,34800,11108,5074, 6614, 43169,38459,5556, 13241,13562,5056, 19391,22032,2372, 33602,36953,11546,22822,
- 40424,34003,6746, 29787,21985,43169,36953,35759,36953,34003,1455, 14822,36953,38460,43169,38682,35759,12522,38820,34799,21073,38458,33337,36952,43169,36952,3874,
+ 40424,34003,6746, 29787,21985,43169,36953,35759,36953,34003,1455, 14822,36953,38460,43169,38682,35759,12522,38820,34799,21073,38458,33337,36952,43169,36952,3874,
17273,19571,23771,1352, 20518,35758,16495,30806,2965, 17952,36952,16386,13421,14902,36952,11586,43168,43168,9193, 38298,11535,17, 14921,30262,30805,37936,35758,
13420,39346,33337,34799,6848, 12441,27223,5510, 9316, 35758,33855,11181,34799,1019, 19201,33085,33337,4640, 14992,14901,11892,13419,6835, 1891, 43168,33734,36426,
34719,10809,2333, 38458,33337,12550,35758,155, 38403,34002,34799,34798,10310,43168,10978,23770,34002,38458,43167,22576,43167,5794, 32213,38458,16080,8601, 43167,
@@ -15296,7 +15291,7 @@ static const unsigned short Ranks[197839] =
43164,33336,4375, 29062,43164,20454,23889,22820,40421,8271, 15622,327, 39065,30800,17270,34001,19124,40421,27508,35756,20453,10637,38046,30799,35002,15621,10353,
40421,40421,7725, 21071,659, 43163,32688,19780,16933,35755,9593, 5549, 7776, 19123,35755,38966,15892,36949,38455,37498,43163,6233, 43163,2929, 23769,2013, 34797,
40420,30495,10636,26, 30508,21566,209, 35755,13875,43163,1003, 30996,8387, 21070,34797,18540,43162,40420,34797,34797,21362,13307,21333,38455,24482,22819,43162,
- 13758,38455,5569, 11271,43162,29061,26941,35755,33336,33335,17951,13589,7959, 36688,38455,5161, 3279, 1970, 21069,19569,36949,4004, 26137,34796,35042,4463, 5704,
+ 13758,38455,5569, 11271,43162,29061,26941,35755,33336,33335,17951,13589,7959, 36688,38455,5161, 3279, 1970, 21069,19569,36949,4004, 26137,34796,35042,4463, 5704,
5088, 6779, 33761,43162,39275,38454,39346,26509,19568,7683, 33335,34796,12956,30798,33004,3673, 7951, 43161,12191,36949,35754,11585,21984,14431,14560,34070,43161,
20452,21983,43161,38454,18282,7598, 38526,35410,43161,38454,43160,40420,6778, 43160,27507,19567,38454,23540,942, 33008,35754,33261,12975,21068,34424,28775,10555,
34752,22845,3390, 31950,17277,30262,28306,43160,36948,33335,21166,36836,1569, 11853,11871,30086,27118,9292, 18127,13417,35126,20451,11824,36948,454, 30637,10662,
@@ -15308,7 +15303,7 @@ static const unsigned short Ranks[197839] =
22142,17693,4005, 28557,23768,43159,19122,33333,25775,10456,20449,10807,14066,35545,34795,43159,16932,24803,30479,15971,22331,43159,21978,4626, 40417,13457,11426,
26136,17949,18836,18259,14920,31425,22467,1764, 23767,22203,14559,26135,12278,10012,43158,8270, 38453,7724, 24933,40417,35752,43158,33606,33832,316, 12549,43158,
33333,16931,43158,33634,40417,33333,38187,26134,36947,43157,40417,32872,32686,579, 19172,27504,43157,28925,37580,40416,29059,33283,43157,13558,39195,25253,43157,
- 33987,20435,13416,27503,34795,13415,3248, 20669,13909,43156,38453,22566,34000,26133,21164,36946,32685,40416,21163,672, 14484,40416,28382,23466,7211, 15620,8269,
+ 33987,20435,13416,27503,34795,13415,3248, 20669,13909,43156,38453,22566,34000,26133,21164,36946,32685,40416,21163,672, 14484,40416,28382,23466,7211, 15620,8269,
10309,34794,1187, 16930,21066,38452,27698,12549,30793,953, 365, 2590, 20448,18536,4586, 941, 15276,6304, 43156,12800,38452,1686, 2789, 29058,19566,4317, 43156,
39185,43156,6230, 10484,4183, 6776, 4785, 30792,37668,35070,10455,17392,43155,40416,8090, 5955, 18281,36946,8353, 16384,35633,19286,5131, 12119,17252,21531,32985,
38994,10513,21065,10995,40415,43155,43155,18280,19301,11686,18797,40415,35264,43155,16383,36946,22611,32296,8134, 33084,8790, 30095,15984,4272, 21323,21211,27837,
@@ -15316,26 +15311,26 @@ static const unsigned short Ranks[197839] =
34794,4984, 6737, 43154,19650,32777,32600,30791,27502,36946,14899,43154,35752,40415,2475, 36945,7993, 26600,8332, 4048, 11331,13588,34794,12190,2558, 38452,40415,
30790,8571, 19565,29819,38452,2273, 43154,36767,34000,36945,34211,26132,29057,38451,33333,43153,21162,36945,11822,6919, 6464, 14898,43153,43153,43153,34794,38451,
7627, 11790,20208,9149, 7597, 16929,30789,22818,33061,38987,17078,38673,20198,40414,31974,38451,26131,32594,43152,36945,1023, 36944,3121, 17440,29751,5350, 10065,
- 37712,43152,6783, 15953,21328,40414,37749,27843,3722, 27501,43152,17948,28872,34000,12955,38451,8355, 16928,26130,34165,35197,22085,21977,24868,33332,38125,2069,
+ 37712,43152,6783, 15953,21328,40414,37749,27843,3722, 27501,43152,17948,28872,34000,12955,38451,8355, 16928,26130,34165,35197,22085,21977,24868,33332,38125,2069,
17269,5101, 17268,32381,22675,13250,33999,33332,35752,35752,38450,15349,43152,2700, 37549,33332,1220, 23135,16077,36944,27500,38463,30788,16076,38450,21976,40414,
- 24911,36944,22817,43151,36944,33332,43151,43151,11647,6580, 21161,35751,6463, 40414,43151,32684,33999,33999,25938,12548,7579, 16492,38450,35231,36943,36943,7596,
- 27499,1588, 29056,36943,7769, 18006,38904,43150,23766,36944,28886,12014,7425, 9453, 20447,24910,43150,11376,9731, 19564,21160,40413,4667, 33331,43150,8837, 5457,
+ 24911,36944,22817,43151,36944,33332,43151,43151,11647,6580, 21161,35751,6463, 40414,43151,32684,33999,33999,25938,12548,7579, 16492,38450,35231,36943,36943,7596,
+ 27499,1588, 29056,36943,7769, 18006,38904,43150,23766,36944,28886,12014,7425, 9453, 20447,24910,43150,11376,9731, 19564,21160,40413,4667, 33331,43150,8837, 5457,
43150,32683,32682,37227,23765,26129,34793,6398, 6745, 30425,34793,13908,25816,19563,14211,43149,40413,23764,21064,38450,39101,30277,20967,20888,35751,24250,43149,
35990,10206,38449,40413,32448,38449,40413,43149,40412,8386, 43149,40412,28510,10288,27498,34793,3800, 17267,30787,26128,43148,37421,40412,40412,43148,38449,13587,
40411,43148,23763,32681,13907,29689,29055,38449,33331,34105,37872,30786,43148,36943,6744, 3740, 35751,21762,31465,43147,43147,26127,18166,35751,35138,24738,26126,
10597,38555,38320,237, 7475, 28493,29351,32952,21024,32130,14430,40411,1547, 14683,18279,43147,18535,38448,30785,12799,40411,8443, 10081,21735,8246, 4528, 20697,
- 822, 13047,649, 38448,43147,33999,35485,19562,28074,21063,12462,23476,35750,2000, 22327,38448,13257,33331,12798,5021, 35750,191, 8646, 18522,28904,32811,9101,
+ 822, 13047,649, 38448,43147,33999,35485,19562,28074,21063,12462,23476,35750,2000, 22327,38448,13257,33331,12798,5021, 35750,191, 8646, 18522,28904,32811,9101,
37087,31900,33998,3774, 37122,135, 6621, 31689,40411,13934,34873,35597,33345,34822,24105,35845,32149,29922,27633,22705,10365,15644,22564,6525, 25444,33708,27709,
- 575, 28474,36554,4109, 35125,3383, 2290, 6773, 4023, 1131, 17039,3032, 17845,4318, 6125, 27497,3483, 17801,21576,34346,36121,32873,4769, 43146,1589, 10064,3479,
+ 575, 28474,36554,4109, 35125,3383, 2290, 6773, 4023, 1131, 17039,3032, 17845,4318, 6125, 27497,3483, 17801,21576,34346,36121,32873,4769, 43146,1589, 10064,3479,
12713,31734,10698,439, 4018, 26123,11375,21575,2645, 4900, 19201,33511,5382, 38448,34793,297, 15947,3366, 10717,326, 3505, 35750,3461, 43146,35750,8386, 14558,
- 2488, 23697,36942,38630,2300, 29054,40410,37550,43146,33331,39384,11542,15196,10512,13720,33330,10979,408, 15965,30634,6472, 16649,22759,25130,35050,31249,3044,
+ 2488, 23697,36942,38630,2300, 29054,40410,37550,43146,33331,39384,11542,15196,10512,13720,33330,10979,408, 15965,30634,6472, 16649,22759,25130,35050,31249,3044,
37696,22310,23719,43146,43145,18278,18277,38447,33330,2631, 30784,38447,43145,2951, 10158,2474, 24215,5073, 37933,12708,4958, 12072,12336,14042,36512,17987,27749,
35749,10454,5505, 32680,1252, 2155, 3802, 23762,12416,40410,17391,27496,12277,33330,38252,21062,31446,40410,34792,38447,35749,40410,26125,12797,33224,38884,35106,
26124,2448, 21675,36942,34792,38751,34089,43145,36925,2304, 1639, 13906,750, 34255,10063,34792,3584, 16075,34409,18219,38963,587, 7141, 33330,23761,36942,43145,
38447,34792,2933, 4968, 39119,36942,761, 32679,36941,34791,7566, 35532,32977,28054,18063,32500,29631,17438,6194, 29274,328, 26123,26192,43144,10988,11794,18345,
3143, 3360, 6922, 38771,34170,1082, 43144,38438,37053,18144,21479,6908, 3693, 16120,8112, 12407,3990, 40409,26091,37114,5381, 12712,22261,7820, 17871,3834, 36495,
29722,33588,12364,33691,17594,17010,29590,12885,3599, 38446,43144,3106, 16, 13794,2399, 32676,17436,10359,30410,24821,12127,18756,31473,31512,3043, 3157, 38446,
- 1990, 4365, 33318,36941,4728, 1879, 808, 36941,40409,9584, 228, 6653, 26470,35749,38446,3274, 1216, 2950, 1257, 3586, 14432,1318, 32739,30948,18586,675, 2299,
+ 1990, 4365, 33318,36941,4728, 1879, 808, 36941,40409,9584, 228, 6653, 26470,35749,38446,3274, 1216, 2950, 1257, 3586, 14432,1318, 32739,30948,18586,675, 2299,
21061,14311,24909,36941,39169,14785,38446,36940,16382,39151,33901,32721,21430,21746,21060,28259,10876,16668,22816,14557,38615,29053,30783,35292,23425,10635,38445,
8961, 10806,24647,10190,37120,24876,58, 16899,36940,8706, 161, 845, 27495,20203,38526,1562, 30686,15619,27461,288, 10805,332, 43144,35294,13401,32932,26916,
43143,38445,38445,2102, 25284,29052,43143,40409,5453, 21059,32678,30782,43143,33998,35749,40409,38445,14838,1402, 36940,36940,5122, 40408,35748,30781,38444,20446,
@@ -15344,11 +15339,11 @@ static const unsigned short Ranks[197839] =
30780,13859,26750,4969, 36799,29246,38415,21525,35298,14897,16491,2296, 13755,31869,394, 7923, 43141,43141,31626,34296,26684,43141,20184,37618,16509,37394,29049,
33329,38503,4768, 36939,40408,22815,9872, 36939,40407,34207,15653,43141,35747,24434,32674,9477, 43140,27728,43140,1094, 36039,17031,30236,32673,27492,10308,43140,
24907,4893, 19132,36938,33329,1307, 29397,24906,34790,15652,17716,34790,38444,15651,14327,554, 13810,29180,34229,23256,35747,43140,38444,36938,38444,40407,21159,
- 34700,19121,10730,14556,15275,16927,17946,40407,35747,43139,33997,38935,11584,12503,40407,40406,32672,40406,9871, 2427, 40406,1243, 43139,36006,21975,43139,2147,
+ 34700,19121,10730,14556,15275,16927,17946,40407,35747,43139,33997,38935,11584,12503,40407,40406,32672,40406,9871, 2427, 40406,1243, 43139,36006,21975,43139,2147,
205, 3664, 22814,40406,38443,2821, 43139,10011,38443,38365,36938,5121, 26122,22813,21974,40405,33997,38443,38443,34245,26121,40405,33997,43138,13903,43138,40405,
40405,19499,26120,37549,19120,11334,34980,38738,35747,40404,36938,21973,38442,35746,2845, 13586,27491,43138,33321,34790,35746,38931,37995,10634,38971,30779,20170,
19468,7839, 19561,12750,27616,33776,43138,40404,37035,34959,2445, 7417, 26943,26119,37128,10994,31, 13413,35332,43137,37327,23020,32790,11232,3859, 33010,15666,
- 10993,9592, 38442,36937,18465,6231, 22818,21057,16926,16438,36028,34303,8613, 32865,29687,6665, 30183,14030,13599,38442,6763, 17390,8602, 2481, 14530,37791,6191,
+ 10993,9592, 38442,36937,18465,6231, 22818,21057,16926,16438,36028,34303,8613, 32865,29687,6665, 30183,14030,13599,38442,6763, 17390,8602, 2481, 14530,37791,6191,
4032, 16028,18828,18032,340, 43137,9146, 34790,14029,1338, 31563,33329,22293,33329,30778,40404,43137,40404,12188,34370,36937,1628, 166, 13874,19119,30777,26118,
24905,35746,33997,7514, 14210,22967,7936, 33178,9476, 3581, 40403,40403,43137,19654,31399,33031,33328,30776,38619,34789,21956,43136,35746,19937,43136,36937,36666,
43136,37623,43136,22572,4527, 43135,34563,34789,14990,31621,18149,40403,12869,23532,9057, 9133, 28563,13074,33996,25961,20950,32873,23705,28165,21741,6874, 25791,
@@ -15362,8 +15357,8 @@ static const unsigned short Ranks[197839] =
23995,25556,27218,29396,4590, 18771,9068, 31459,22812,10453,7682, 36846,19560,29048,35415,12052,33615,34789,1298, 3636, 14233,21206,16380,13685,43132,29287,25593,
15671,10242,21158,29837,11960,3141, 2841, 33183,19522,34340,31887,6833, 21054,10729,38027,28183,43132,35745,32788,9508, 26047,13502,33452,10829,12389,1241, 27490,
40402,33995,27489,33995,40402,40402,43132,35262,23758,43131,33995,43131,36936,33917,23757,9067, 36936,36935,43131,27488,24321,40402,34922,23756,30774,30487,21053,
- 38440,15650,35745,43131,17389,29047,19117,36935,30834,24904,13030,40401,32840,17315,43130,13873,43130,40401,15618,24054,19146,38440,38439,37109,34789,33328,6118,
- 36040,2788, 27487,32671,40401,35745,43130,26117,36935,30773,5386, 34855,9591, 27619,36935,13306,22811,43130,35744,43129,30772,1712, 13130,17497,36934,268, 5787,
+ 38440,15650,35745,43131,17389,29047,19117,36935,30834,24904,13030,40401,32840,17315,43130,13873,43130,40401,15618,24054,19146,38440,38439,37109,34789,33328,6118,
+ 36040,2788, 27487,32671,40401,35745,43130,26117,36935,30773,5386, 34855,9591, 27619,36935,13306,22811,43130,35744,43129,30772,1712, 13130,17497,36934,268, 5787,
18749,32670,39361,34660,40401,27486,19116,9731, 33328,24903,40400,35744,36934,26116,40400,40400,40400,14429,36934,8268, 37945,14896,10061,33337,36614,43129,24902,
32669,10592,35744,982, 372, 33995,12795,32668,19777,40399,18534,30771,43129,24901,14578,17266,16074,13872,27485,31485,4269, 35959,34894,27769,110, 6847, 11450,
35744,38439,43129,36934,36933,26115,32667,4553, 6128, 33327,6471, 10010,34218,4463, 3222, 13305,13871,43128,43128,43128,21972,33994,35743,43128,18533,26114,43127,
@@ -15375,51 +15370,51 @@ static const unsigned short Ranks[197839] =
14555,8598, 38438,11819,30371,27480,24899,43125,35742,43125,8384, 24174,635, 43125,16073,10157,43124,14082,20262,40397,33994,18401,38438,38437,16072,43124,24898,
34787,40397,35897,40396,35742,23754,14554,6077, 19115,380, 34806,5917, 14209,13870,33342,4585, 24897,38437,30100,35742,9075, 33994,3044, 43124,7130, 36932,29045,
43124,38437,3923, 21155,684, 30767,6651, 2252, 2393, 13585,37647,843, 1150, 19069,32664,24896,5738, 35015,40396,40396,32663,16490,8267, 37616,4250, 30766,17387,
- 26112,2145, 24895,23753,35741,10737,27479,16489,35741,40396,1417, 12060,5968, 38437,32662,5548, 43123,40395,38436,14208,16071,19114,43123,14207,21968,38436,8089,
+ 26112,2145, 24895,23753,35741,10737,27479,16489,35741,40396,1417, 12060,5968, 38437,32662,5548, 43123,40395,38436,14208,16071,19114,43123,14207,21968,38436,8089,
38436,38436,4153, 36931,15214,21967,3662, 2134, 12793,3899, 474, 15617,9529, 40395,40395,30765,20445,4316, 5830, 7129, 36931,19113,3533, 40395,33327,6462, 14607,
16070,40394,35741,10987,40394,35741,17265,12547,34787,28703,13584,14897,33987,32661,36931,1466, 18276,24606,11545,21051,18275,25068,37319,18063,22807,27797,40394,
3515, 211, 43123,40394,8053, 33993,27478,33993,20976,28105,36931,11818,33992,2862, 38504,38435,34231,8508, 37741,34787,62, 32943,2750, 16593,10118,22986,15265,
- 28363,32941,8500, 6966, 38435,36930,16379,35854,38435,8266, 7424, 36930,30682,33326,33842,3022, 37979,43123,43122,25119,39324,36930,40393,33993,1271, 23804,765,
+ 28363,32941,8500, 6966, 38435,36930,16379,35854,38435,8266, 7424, 36930,30682,33326,33842,3022, 37979,43123,43122,25119,39324,36930,40393,33993,1271, 23804,765,
40393,8277, 35740,33993,35740,5967, 9870, 8666, 40393,20763,36930,7513, 13583,24890,36929,12517,14553,18274,26844,40393,43122,36107,35233,37384,40392,40392,10804,
37669,36036,40392,38852,38435,35740,34786,43122,40392,2371, 2122, 12776,30764,36929,3592, 38104,20086,43122,37992,12187,27622,40391,35030,33992,38434,33011,36929,
10474,1546, 658, 35740,43121,33326,36929,11583,35739,13193,29044,36718,13970,1257, 20990,25245,33701,43121,3982, 19557,10803,40391,1962, 24750,12276,17944,35739,
30451,43121,18532,34850,40391,38741,15727,18772,10930,24894,38976,27477,29043,38434,43121,39220,7881, 30763,22806,19841,37057,38434,29852,213, 25461,16167,32847,
704, 2983, 5216, 6384, 35739,10728,341, 6379, 30496,26538,24648,19556,13259,7317, 31263,14422,36928,43120,8828, 27476,19776,43120,15285,3721, 15610,33326,18106,
- 33779,30762,36928,8729, 37698,3765, 40391,38434,36928,8287, 38433,35739,33326,17264,16069,30761,33325,35738,34786,18039,32946,38433,32660,24534,1094, 1615, 1462,
+ 33779,30762,36928,8729, 37698,3765, 40391,38434,36928,8287, 38433,35739,33326,17264,16069,30761,33325,35738,34786,18039,32946,38433,32660,24534,1094, 1615, 1462,
4664, 33992,16488,32659,43120,21966,21667,32995,33325,33325,43120,38433,38398,43119,3021, 3637, 3294, 32418,7423, 43119,33325,22805,32497,12547,43119,21965,40390,
34786,6716, 32658,43119,5387, 38433,38432,38432,32657,35738,38432,38432,34786,36928,43118,31786,34785,20444,33992,37951,21241,5611, 35738,21238,12844,12546,33582,
- 11854,40390,33324,14206,33699,40390,16599,837, 3105, 10986,37240,29042,15273,40390,33123,108, 9475, 36569,25047,8818, 7369, 257, 28129,1114, 7621, 18273,866,
+ 11854,40390,33324,14206,33699,40390,16599,837, 3105, 10986,37240,29042,15273,40390,33123,108, 9475, 36569,25047,8818, 7369, 257, 28129,1114, 7621, 18273,866,
16378,37867,30760,33992,5181, 474, 43118,9735, 20585,36927,898, 1907, 11632,25944,17034,31577,1654, 6387, 23071,31536,32933,6333, 35221,14427,19775,6006, 35738,
29958,34791,29558,30759,40389,43118,36927,34785,43118,10503,21659,27805,13930,8425, 30937,19849,33088,1807, 13601,17963,33035,20291,20309,25605,29600,24177,17202,
43117,38390,43117,33803,25400,15907,17927,31623,19416,12960,27676,29690,19345,38431,24511,38431,33991,30004,21683,30989,6299, 28533,14255,37341,3057, 7164, 34629,
28241,43117,22804,327, 27621,3020, 16924,15649,43117,43116,13411,22803,40389,35737,4427, 2732, 34509,11433,24893,23036,1650, 36927,39352,40389,3490, 3532, 34712,
16923,34785,14858,7866, 38431,30758,29041,20443,2171, 103, 40389,34785,26111,34243,36927,11962,24133,21050,16377,7849, 34746,4899, 4502, 10015,18488,5428, 11855,
- 9474, 15616,15272,8951, 43116,33324,19112,7620, 16643,32796,16922,9730, 23752,15271,30757,36926,43116,8227, 39375,18272,12548,43116,23790,21004,38431,40388,8597,
- 19774,29040,36926,3084, 36926,43115,2295, 23779,26301,43115,34784,33991,34665,24476,43115,7206, 9452, 33324,563, 25124,37549,26110,22802,6650, 33324,6775, 1488,
+ 9474, 15616,15272,8951, 43116,33324,19112,7620, 16643,32796,16922,9730, 23752,15271,30757,36926,43116,8227, 39375,18272,12548,43116,23790,21004,38431,40388,8597,
+ 19774,29040,36926,3084, 36926,43115,2295, 23779,26301,43115,34784,33991,34665,24476,43115,7206, 9452, 33324,563, 25124,37549,26110,22802,6650, 33324,6775, 1488,
38430,33991,20442,34045,31499,35737,24328,37249,6918, 30756,29039,20278,21049,32537,17263,10655,32383,37845,43115,14895,32656,17386,38430,35737,38521,43114,43114,
- 32816,35623,19555,33963,33363,12059,43114,33991,35737,43114,38430,40388,38430,40388,43113,22801,15787,27475,34784,38425,27293,36926,3365, 33323,3833, 40388,6743,
+ 32816,35623,19555,33963,33363,12059,43114,33991,35737,43114,38430,40388,38430,40388,43113,22801,15787,27475,34784,38425,27293,36926,3365, 33323,3833, 40388,6743,
38429,8052, 27787,36925,8383, 17611,40387,33443,33548,12113,13410,17262,38001,22964,33070,37332,1241, 13304,35736,13046,25290,39176,15606,40387,40387,40387,16068,
8036, 33645,30755,11374,43113,35432,29038,36925,38429,43113,36925,30754,43113,40386,23626,43112,180, 36883,32857,29076,19045,37832,238, 6849, 36190,35736,32655,
32654,34952,2146, 37758,34962,17894,35629,21048,34784,33879,114, 21356,22728,593, 2557, 2253, 10156,8025, 26919,39027,32667,35190,18697,37571,24751,32877,19554,
- 8683, 40386,38429,11817,38429,36885,24408,8778, 43112,4938, 38428,12545,38428,5317, 12045,7188, 10643,33341,6514, 10036,40386,29037,25344,36925,10060,43112,4519,
- 19553,15615,2252, 11180,31800,43112,27474,17261,37104,35754,35736,43111,38428,5876, 11839,35736,11544,5386, 12954,6181, 17260,15614,43111,32115,43111,4596, 6896,
+ 8683, 40386,38429,11817,38429,36885,24408,8778, 43112,4938, 38428,12545,38428,5317, 12045,7188, 10643,33341,6514, 10036,40386,29037,25344,36925,10060,43112,4519,
+ 19553,15615,2252, 11180,31800,43112,27474,17261,37104,35754,35736,43111,38428,5876, 11839,35736,11544,5386, 12954,6181, 17260,15614,43111,32115,43111,4596, 6896,
936, 13378,21888,8747, 34011,5960, 2722, 31369,32892,12186,19552,14509,29594,15534,39042,36851,5036, 4462, 20536,9651, 16958,12934,14182,16857,24935,28464,26665,
19904,32432,38428,36924,34784,43111,34783,27473,43110,40386,38427,43110,27195,40385,35694,33991,36074,34783,33883,36924,7226, 7528, 19773,19551,24892,36924,33990,
15837,56, 24425,37936,26676,27277,14426,8777, 27515,30936,19772,3160, 21047,36924,1698, 17880,40385,40385,6895, 14470,33525,32653,28040,43110,24891,21026,10277,
16921,40385,12024,20441,21057,38194,39067,35735,38427,4818, 5485, 3171, 38784,328, 2168, 34783,40384,2575, 11816,40384,15613,4317, 43110,43109,11543,43109,27402,
- 19550,27472,14989,18271,38100,43109,33827,32020,7128, 43109,38427,34029,34763,37603,37186,6552, 36163,34754,36923,3243, 15856,40384,5739, 21046,43108,18270,9473,
+ 19550,27472,14989,18271,38100,43109,33827,32020,7128, 43109,38427,34029,34763,37603,37186,6552, 36163,34754,36923,3243, 15856,40384,5739, 21046,43108,18270,9473,
30753,35735,27471,36262,37911,35735,28577,12934,34357,29472,22719,37225,17658,19549,39357,34783,31724,10059,12185,33994,38608,19548,21162,18391,20275,18016,27087,
19847,30091,25983,33077,35787,32770,22800,15619,2589, 23933,25014,2787, 3034, 35214,19410,24882,35743,32939,18292,8387, 26656,24444,8437, 7298, 32814,14890,19485,
36953,40384,1737, 10197,2213, 32695,37155,26651,36739,1285, 40383,24599,11549,43108,39236,15612,38427,26425,11822,37957,12953,36923,18269,13740,36923,12952,11854,
12169,40383,32927,34782,22483,37855,35735,35734,18557,20025,9148, 10287,18563,35116,38214,21004,12434,16819,25638,35290,40383,33008,39155,9272, 31981,11250,39285,
- 44, 12246,8270, 32921,30759,18235,32782,5885, 2068, 6470, 2912, 34782,16376,12547,26891,606, 33649,2458, 35579,3400, 16397,16353,34837,36342,14746,36427,725,
+ 44, 12246,8270, 32921,30759,18235,32782,5885, 2068, 6470, 2912, 34782,16376,12547,26891,606, 33649,2458, 35579,3400, 16397,16353,34837,36342,14746,36427,725,
10135,15538,18417,7735, 14937,23162,20583,30752,32652,35734,7139, 3140, 7825, 10286,23969,22799,24365,21154,15838,7198, 3137, 3941, 15527,38963,9291, 21045,21044,
- 15855,8646, 43108,43108,3774, 12544,29036,16487,38426,29035,5737, 43107,11815,43107,23454,37881,37697,33548,7909, 13210,14552,19443,3019, 35734,12184,36361,1324,
+ 15855,8646, 43108,43108,3774, 12544,29036,16487,38426,29035,5737, 43107,11815,43107,23454,37881,37697,33548,7909, 13210,14552,19443,3019, 35734,12184,36361,1324,
13409,40383,641, 12646,20229,43107,11885,17779,19547,3126, 32786,9852, 16286,18293,23706,19855,13710,16656,26951,7286, 40382,34013,36923,40382,36922,11373,40382,
- 43107,43106,35734,34782,35733,43106,35733,18356,5109, 112, 23951,27491,35140,38950,30174,11853,19546,35733,17684,13634,19545,6592, 36922,21964,37129,8265, 6075,
+ 43107,43106,35734,34782,35733,43106,35733,18356,5109, 112, 23951,27491,35140,38950,30174,11853,19546,35733,17684,13634,19545,6592, 36922,21964,37129,8265, 6075,
13869,40382,12792,12058,12172,15270,3537, 9854, 4347, 1060, 4068, 3376, 1526, 18268,43106,35733,23322,1077, 13546,11606,13888,37802,33323,20116,36402,27470,17622,
34695,38426,21693,33990,2963, 2673, 36948,28651,6530, 43106,940, 22976,6395, 15648,35732,12543,3934, 18531,30751,35732,16187,13451,20698,18856,11154,6615, 33990,
- 35732,10727,19111,10985,4807, 19544,23751,16727,21043,35238,5506, 34782,34949,39319,10032,22025,20716,14988,31771,28111,4876, 11542,19518,38287,37293,38794,2510,
+ 35732,10727,19111,10985,4807, 19544,23751,16727,21043,35238,5506, 34782,34949,39319,10032,22025,20716,14988,31771,28111,4876, 11542,19518,38287,37293,38794,2510,
18267,16375,8645, 4344, 25498,35732,12891,1798, 38426,8226, 6568, 35732,19826,28301,16827,27942,1156, 37905,37660,43105,43105,32651,15264,32995,321, 32919,18117,
9657, 3595, 36683,27469,35731,35731,35731,34781,43105,34781,35731,35730,29034,12542,40381,40381,32650,43105,27468,43104,27467,34781,30750,43104,35241,27466,34462,
22798,40381,40381,29033,33990,38426,35222,38425,33740,35730,24890,34781,12951,38425,40380,29032,38425,15391,19110,30749,412, 38425,36922,13905,35730,7393, 43104,
@@ -15441,11 +15436,11 @@ static const unsigned short Ranks[197839] =
37759,38419,33466,33530,34296,37171,32967,21961,24887,38515,37509,12950,34173,34520,19778,15301,14987,43095,36849,18534,256, 11150,6832, 18264,43095,40374,38419,
2992, 36918,33987,12057,29718,32798,28590,77, 32646,33321,36918,14870,7061, 10154,6965, 43094,3742, 40374,14205,38419,40374,38418,33987,19108,27460,29028,29385,
33321,11582,24886,33986,40374,10123,19938,10306,24885,11757,27459,90, 36, 40373,43094,551, 32645,40373,32644,29027,2457, 5461, 26161,38418,22795,43094,23227,
- 4146, 24225,430, 12137,19047,11402,18263,2161, 8338, 52, 16213,22966,12686,4092, 10807,27785,27464,9246, 23463,43094,43093,5785, 5456, 36918,17705,23423,2768,
+ 4146, 24225,430, 12137,19047,11402,18263,2161, 8338, 52, 16213,22966,12686,4092, 10807,27785,27464,9246, 23463,43094,43093,5785, 5456, 36918,17705,23423,2768,
30607,25297,971, 25097,8354, 26104,5216, 8755, 1152, 4815, 30741,2117, 43093,16919,22794,11269,23748,13904,17258,8244, 32781,13562,10983,36918,11378,30740,19640,
43093,43093,33321,4871, 18568,7916, 32091,29026,13622,29025,36917,29622,4916, 38418,32643,6341, 3898, 27458,3933, 8727, 25825,38418,27457,35727,35726,9313, 34778,
7895, 29024,23747,7681, 31294,28747,13303,1452, 19543,350, 38417,40373,28131,9869, 1102, 10554,31837,1745, 36917,17384,30739,9370, 21960,43092,19771,21608,17383,
- 29719,1481, 34778,10982,29023,12275,7594, 1704, 7950, 7686, 38417,1664, 7416, 29022,9417, 28094,1659, 9981, 13014,43092,33986,6673, 343, 34778,14092,9451, 3120,
+ 29719,1481, 34778,10982,29023,12275,7594, 1704, 7950, 7686, 38417,1664, 7416, 29022,9417, 28094,1659, 9981, 13014,43092,33986,6673, 343, 34778,14092,9451, 3120,
5880, 7527, 6978, 6745, 15611,8225, 23958,2789, 6808, 30641,13302,20113,15332,474, 33419,7516, 29158,12424,11917,29175,21039,10992,24884,16374,20438,38417,24388,
35726,35726,43092,32432,38417,43092,3897, 15359,35726,20053,6831, 19542,35725,40373,3446, 33063,18040,17953,21038,43091,18262,8455, 4794, 16373,16372,16371,19541,
34777,14894,1772, 6337, 19979,29075,33017,12949,15610,8592, 36460,20786,18069,31275,20437,33986,32642,27456,43091,8411, 32654,12791,31878,31369,36585,38974,36917,
@@ -15469,8 +15464,8 @@ static const unsigned short Ranks[197839] =
6363, 25785,30613,18613,10713,12109,26428,30719,35445,40365,836, 34774,37965,38411,26098,43083,1935, 24430,17257,3963, 14424,23744,36913,20837,22790,4709, 17941,
40365,14545,36913,36913,9589, 40365,36913,34774,40365,32633,26097,43083,4290, 40364,4145, 23743,34379,39152,33021,114, 5513, 18835,20908,30122,32137,17371,38411,
7415, 8644, 14957,13903,38410,7723, 9866, 19677,2170, 36912,43082,21958,5000, 604, 16144,588, 34339,18882,16686,18260,3636, 8941, 35721,27452,4939, 31350,37350,
- 10153,981, 35664,7769, 34773,21150,7315, 5427, 36912,2368, 40364,40364,6370, 13416,33984,36912,8643, 35349,37519,43082,40364,27451,13299,27450,18259,5957, 2145,
- 1266, 919, 3538, 2244, 2595, 33846,34773,36912,401, 43082,21957,37587,36726,33871,26096,43082,26095,8478, 43081,26094,34773,36839,2139, 40363,35721,38410,2805,
+ 10153,981, 35664,7769, 34773,21150,7315, 5427, 36912,2368, 40364,40364,6370, 13416,33984,36912,8643, 35349,37519,43082,40364,27451,13299,27450,18259,5957, 2145,
+ 1266, 919, 3538, 2244, 2595, 33846,34773,36912,401, 43082,21957,37587,36726,33871,26096,43082,26095,8478, 43081,26094,34773,36839,2139, 40363,35721,38410,2805,
40363,16918,34773,6970, 20348,40363,38992,29302,11267,16370,21461,8503, 14985,40363,38410,40362,38410,3932, 43081,38409,34940,99, 17358,19713,43081,23931,27449,
38409,36911,14891,17380,40362,40362,986, 18387,6613, 3339, 13775,40362,8596, 36549,6740, 21036,35721,19767,6713, 38409,34812,36911,35721,40361,24881,4027, 25660,
33319,35720,43081,40361,30023,36911,33984,38409,30543,32632,30175,23742,34772,43080,36911,18528,17379,29014,5915, 2609, 24243,31799,15430,38408,8190, 24752,36852,
@@ -15480,52 +15475,52 @@ static const unsigned short Ranks[197839] =
1206, 14983,29980,40360,37267,36910,38407,40360,20686,43080,1630, 13406,3877, 8081, 10465,14457,38866,2405, 13362,10980,11667,11541,27707,35720,35713,29012,22935,
10979,43079,27447,40360,15643,30734,6460, 34464,1416, 36551,27446,43079,9588, 40360,43079,8641, 8595, 16553,3882, 30417,26063,43079,36379,36910,18256,32630,35720,
40359,23740,36910,1709, 33984,38618,12181,35032,17514,40359,43078,40359,38407,43078,35720,146, 9403, 33397,1207, 27473,33153,21290,2052, 38407,43078,5431, 34536,
- 37514,40359,37494,35684,2923, 38394,30733,43078,15851,34565,36254,36643,32327,17216,36555,38918,38597,43077,25313,946, 38407,40358,36909,33319,36909,4738, 8606,
+ 37514,40359,37494,35684,2923, 38394,30733,43078,15851,34565,36254,36643,32327,17216,36555,38918,38597,43077,25313,946, 38407,40358,36909,33319,36909,4738, 8606,
5954, 43077,2394, 37958,9146, 34995,3607, 38110,37675,19341,3099, 7029, 16943,2963, 35700,11430,36580,21715,7020, 40358,27649,34771,37923,22339,36947,17531,15316,
43077,7525, 32629,43077,43076,32628,35958,40358,43076,3924, 13405,8776, 35879,2630, 26702,43076,22460,32535,13867,8437, 38406,10832,9290, 16367,13581,27445,33318,
- 23739,7013, 9046, 40358,35437,26092,37499,34771,4909, 7967, 31691,9957, 43076,15642,43075,15607,9853, 19539,1094, 36618,36909,35719,33307,33709,11850,19538,9655,
+ 23739,7013, 9046, 40358,35437,26092,37499,34771,4909, 7967, 31691,9957, 43076,15642,43075,15607,9853, 19539,1094, 36618,36909,35719,33307,33709,11850,19538,9655,
16366,34230,33950,4884, 3069, 24234,38406,10009,10058,18255,19766,8264, 35719,22789,19875,43075,40357,20434,43075,43075,35083,32627,36909,43074,33650,40357,13043,
1774, 30066,25540,16365,5414, 43074,29011,37213,34771,11579,22493,31777,6356, 26091,36535,43074,9070, 36908,249, 15687,37494,18254,19537,17978,21820,30732,27444,
4479, 21034,33318,38347,35719,7964, 43074,36467,37496,31033,18691,7206, 35426,36908,38355,7205, 3659, 35719,12539,36908,7046, 33112,4026, 22948,33318,38406,24880,
- 67, 12538,5285, 30739,2820, 17378,9587, 34771,22080,16842,22133,17256,7348, 35411,1356, 32873,6726, 10443,33984,18724,11849,32533,37780,25107,15641,5019, 6977,
- 7837, 21956,6330, 36908,33318,3434, 38406,43073,29370,30731,40357,14543,36907,14203,3311, 18253,9852, 18883,21033,40357,4793, 123, 2411, 29033,23810,810, 1248,
+ 67, 12538,5285, 30739,2820, 17378,9587, 34771,22080,16842,22133,17256,7348, 35411,1356, 32873,6726, 10443,33984,18724,11849,32533,37780,25107,15641,5019, 6977,
+ 7837, 21956,6330, 36908,33318,3434, 38406,43073,29370,30731,40357,14543,36907,14203,3311, 18253,9852, 18883,21033,40357,4793, 123, 2411, 29033,23810,810, 1248,
24463,3786, 2104, 27361,30837,5214, 2250, 12650,8461, 24783,28031,43073,19765,5396, 19764,27602,43073,40356,25696,38405,40356,43073,27443,27442,28680,2111, 40356,
12178,40356,25390,9865, 43072,1675, 4496, 6013, 10030,3552, 699, 20672,30705,18993,4668, 6127, 18527,40355,33, 1241, 13488,9836, 3720, 32870,28667,25184,12043,
17785,18233,12251,27700,26248,30998,25221,25846,12737,25889,18723,19007,15054,32917,21451,22651,31074,29709,15833,38978,20433,9311, 24733,29634,40355,16364,34354,
11178,2079, 19974,31552,1604, 33983,12055,18953,11335,19763,33830,32985,31987,24570,30222,744, 20549,15182,180, 22469,43072,12948,19580,36187,34315,12213,22676,
- 33317,43072,2415, 35324,40355,38634,32013,32273,40355,11578,35587,8502, 10008,37221,6343, 17304,35718,16917,18943,34770,8051, 9870, 24946,5829, 25087,24540,8263,
+ 33317,43072,2415, 35324,40355,38634,32013,32273,40355,11578,35587,8502, 10008,37221,6343, 17304,35718,16917,18943,34770,8051, 9870, 24946,5829, 25087,24540,8263,
32822,4937, 636, 43072,36094,38405,22788,34770,34379,34724,43071,38405,13866,6238, 36603,36907,22562,16484,12775,12787,28874,12813,33653,38069,43071,2147, 30773,
- 9977, 20389,40354,36340,36638,9069, 9864, 23436,30730,7249, 36567,20998,23652,23738,7300, 34770,5199, 26090,23737,11814,30881,6712, 37611,40354,5087, 32919,5225,
+ 9977, 20389,40354,36340,36638,9069, 9864, 23436,30730,7249, 36567,20998,23652,23738,7300, 34770,5199, 26090,23737,11814,30881,6712, 37611,40354,5087, 32919,5225,
11356,1075, 10348,40354,382, 25854,7680, 4025, 7793, 4024, 4434, 14982,38405,38404,21032,11540,27441,36907,36907,167, 30600,29526,33983,40354,18114,43071,30561,
27440,19105,348, 40353,9586, 15724,15640,4289, 2965, 43071,19042,1206, 8670, 21955,501, 35623,37993,43070,33983,37, 7022, 10631,32798,29010,40353,40353,43070,
- 36906,23736,36906,19555,7592, 33983,36906,23735,3327, 38404,36906,43070,43070,35718,43069,43069,36905,39282,14202,29009,36905,35718,10801,34770,12380,43069,1590,
+ 36906,23736,36906,19555,7592, 33983,36906,23735,3327, 38404,36906,43070,43070,35718,43069,43069,36905,39282,14202,29009,36905,35718,10801,34770,12380,43069,1590,
31862,9786, 40353,22787,40352,30729,34508,10107,4898, 8640, 35302,11707,17085,17483,38404,22442,1297, 13252,22175,40352,16859,43069,2720, 33982,38404,40352,35696,
21149,40352,35718,11558,27439,40351,13254,40351,13580,29516,35014,40351,34769,2236, 21877,43068,43068,27344,11577,17377,32626,30728,36905,40351,685, 25997,21031,
425, 31849,3079, 36905,33982,19160,43068,13450,38403,1878, 35717,36905,43068,26089,2725, 20507,43067,40350,36904,26088,35767,40350,12786,37333,35717,19528,21030,
43067,993, 32625,27438,21954,1705, 30639,43067,20537,25407,15516,8881, 8976, 20004,9605, 36066,34341,34769,43067,18550,31236,13902,39385,38403,38912,6083, 43066,
- 43066,30727,35717,35717,13901,6355, 11539,40350,2994, 2861, 35716,3149, 13900,4027, 14980,12272,16115,14314,21953,20432,40350,6917, 1812, 40349,19746,32624,4772,
+ 43066,30727,35717,35717,13901,6355, 11539,40350,2994, 2861, 35716,3149, 13900,4027, 14980,12272,16115,14314,21953,20432,40350,6917, 1812, 40349,19746,32624,4772,
43066,38403,40349,33317,1689, 20566,14542,24879,29008,21148,27437,40349,40349,43066,36904,43065,34769,21147,8775, 13899,11515,4938, 15606,17939,3489, 11266,38289,
37458,43065,6292, 40348,35716,33982,43065,4625, 43065,13579,1489, 17582,10007,30726,21952,93, 13791,16064,14692,3143, 307, 2378, 40348,29007,36904,9729, 39230,
34769,13800,43064,30616,14981,9597, 21030,43064,43064,43064,4908, 43063,919, 12090,40348,34818,20431,29872,27849,40348,28056,35716,38658,19347,23246,2110, 39095,
5284, 3226, 9457, 5291, 29079,43063,32623,26087,6742, 6230, 26086,17255,7862, 4584, 34768,6092, 7775, 7125, 43063,35716,8141, 493, 35877,16916,43063,10970,14980,
37500,1271, 40347,13042,5160, 38403,18734,13898,34334,23377,32597,30725,8316, 13298,4981, 36613,33317,34720,30724,5374, 30723,38402,4611, 4792, 30625,27502,33982,
43062,35715,35715,36825,7303, 21283,34907,7414, 7865, 21029,9729, 13897,40347,7864, 43062,2200, 36368,38402,38402,43062,35715,9068, 43062,8353, 18252,39377,10800,
- 32622,34768,36909,2487, 9654, 34567,21028,19536,26085,33317,25728,40347,16175,33981,14423,18526,10284,34102,18485,29006,8380, 37977,16063,3364, 985, 38402,5635,
- 30722,3033, 43061,10057,36330,24878,34768,43061,35315,43061,27998,15605,43061,36904,9310, 33981,29005,2151, 17938,13875,43060,17254,21157,38664,30721,38401,3347,
+ 32622,34768,36909,2487, 9654, 34567,21028,19536,26085,33317,25728,40347,16175,33981,14423,18526,10284,34102,18485,29006,8380, 37977,16063,3364, 985, 38402,5635,
+ 30722,3033, 43061,10057,36330,24878,34768,43061,35315,43061,27998,15605,43061,36904,9310, 33981,29005,2151, 17938,13875,43060,17254,21157,38664,30721,38401,3347,
36903,11538,36903,36127,14422,43060,38612,30720,38874,15639,11265,27436,21951,40347,43060,40346,43060,11032,19958,33981,12537,30719,21146,5547, 35713,19933,25563,
11630,1422, 11858,23189,16363,17253,39030,11371,36892,23734,33445,22786,26084,40346,36903,40346,43059,36903,3672, 38401,14421,4693, 22746,3799, 34768,36902,33316,
23733,43059,23732,38401,30718,40346,33981,21027,21222,30717,26226,43059,36902,36902,16915,38401,35715,35714,33316,21656,36902,33980,15638,38400,43059,38400,40345,
- 29004,4111, 33316,13404,2377, 16062,8498, 7948, 19472,40345,33980,38400,43058,40345,33980,7524, 25628,12785,38553,18525,35714,43058,22011,30716,20430,36901,3042,
- 43058,31795,13367,40345,29889,27543,38641,34767,40344,40344,35714,9309, 11813,38400,38399,10217,40344,38249,40344,38399,38399,40343,40343,43058,7523, 33316,2444,
- 39035,22785,8940, 21026,23731,7522, 2886, 19535,33980,8088, 19002,33315,2819, 21469,9067, 10012,30577,1310, 22785,14420,18251,8224, 27255,22784,34767,21025,8835,
+ 29004,4111, 33316,13404,2377, 16062,8498, 7948, 19472,40345,33980,38400,43058,40345,33980,7524, 25628,12785,38553,18525,35714,43058,22011,30716,20430,36901,3042,
+ 43058,31795,13367,40345,29889,27543,38641,34767,40344,40344,35714,9309, 11813,38400,38399,10217,40344,38249,40344,38399,38399,40343,40343,43058,7523, 33316,2444,
+ 39035,22785,8940, 21026,23731,7522, 2886, 19535,33980,8088, 19002,33315,2819, 21469,9067, 10012,30577,1310, 22785,14420,18251,8224, 27255,22784,34767,21025,8835,
37842,32621,43057,19762,40343,43057,5546, 16914,43057,33979,35714,43057,26083,25927,40343,43056,33979,32620,38014,373, 36901,22783,37598,12206,6983, 22782,35713,
- 15315,19534,36745,36901,24322,34767,43056,11576,18250,6625, 43056,32619,40342,43056,14419,1763, 29003,36901,34263,23730,7204, 38399,11248,15268,43055,38398,8594,
- 38398,7722, 5316, 40342,14541,36900,43055,26146,33979,33704,16099,37385,10724,33886,38398,32618,36900,23729,38986,12839,2512, 24442,10056,24877,502, 8124, 2794,
+ 15315,19534,36745,36901,24322,34767,43056,11576,18250,6625, 43056,32619,40342,43056,14419,1763, 29003,36901,34263,23730,7204, 38399,11248,15268,43055,38398,8594,
+ 38398,7722, 5316, 40342,14541,36900,43055,26146,33979,33704,16099,37385,10724,33886,38398,32618,36900,23729,38986,12839,2512, 24442,10056,24877,502, 8124, 2794,
25022,8352, 10283,17252,36145,31548,37002,1660, 13896,38427,37967,8143, 7721, 107, 6860, 14351,5186, 37622,15319,7413, 8497, 6896, 10960,36350,462, 14511,15267,
- 1270, 7836, 35668,8087, 16362,467, 1052, 43055,975, 35713,34767,16361,40342,21993,9655, 13403,1050, 6741, 8354, 10990,33837,1205, 38398,5738, 6291, 2786, 909,
+ 1270, 7836, 35668,8087, 16362,467, 1052, 43055,975, 35713,34767,16361,40342,21993,9655, 13403,1050, 6741, 8354, 10990,33837,1205, 38398,5738, 6291, 2786, 909,
27014,40342,29745,19613,9471, 40341,10723,35960,11848,19533,7059, 43055,21950,1815, 40341,11806,11847,1307, 12180,6229, 40341,40341,2321, 43054,18249,40340,36900,
43054,34766,35237,3398, 8639, 19532,30406,38397,33475,35713,29002,38405,43054,19531,11537,43054,33738,23728,30715,30714,40340,29001,40340,36900,21024,43053,34766,
- 8223, 43053,15604,22687,22859,38397,43053,38397,31015,40340,32617,33315,40339,9585, 38397,40339,30713,32616,19055,19104,14979,38396,29000,11545,40339,16360,2055,
+ 8223, 43053,15604,22687,22859,38397,43053,38397,31015,40340,32617,33315,40339,9585, 38397,40339,30713,32616,19055,19104,14979,38396,29000,11545,40339,16360,2055,
23920,33723,36899,34954,14201,19761,33979,38396,21346,23727,36899,38396,43053,37608,6076, 39026,9470, 17937,40339,13578,37632,11453,12545,21023,43052,43052,38396,
23726,38395,5682, 17235,21022,11536,18248,15603,40338,14540,38840,33133,30712,10449,36899,27082,18967,34851,37437,25768,40338,43052,36899,33100,38842,35713,28999,
35712,40338,43052,10152,23725,40338,43051,38395,16913,34451,33946,43051,35166,40337,34766,4360, 40337,40337,38395,26065,28998,43051,40337,43051,28997,43050,43050,
@@ -15540,12 +15535,12 @@ static const unsigned short Ranks[197839] =
27432,33978,40333,33978,35711,43044,16912,14500,21019,3648, 38392,33314,43044,32704,9075, 547, 22779,40333,11027,27431,14200,369, 33049,12054,36897,11575,27430,
13577,5393, 8989, 40333,14890,43044,28993,33977,5636, 16105,43044,160, 10394,2937, 5790, 2042, 11565,29645,8219, 1051, 16873,20944,10282,38496,34931,1643, 38392,
36896,36896,36896,19515,43043,1630, 30708,38392,30707,14978,40333,3208, 35711,34764,36896,38392,34764,27429,7965, 19103,32612,23724,36895,11176,36895,30706,23723,
- 29645,26080,7899, 33619,40332,43043,9135, 35474,43043,38359,38391,9584, 36895,11574,43043,3023, 1795, 30489,15601,29117,3497, 16046,4058, 30705,22778,35711,4710,
+ 29645,26080,7899, 33619,40332,43043,9135, 35474,43043,38359,38391,9584, 36895,11574,43043,3023, 1795, 30489,15601,29117,3497, 16046,4058, 30705,22778,35711,4710,
38391,35351,10978,34764,6368, 4127, 14976,18650,34790,35711,17936,40332,17375,1331, 40332,43042,33977,43042,40332,40331,28992,38427,28991,38391,17935,43042,22777,
23722,28990,19102,36895,3426, 36454,13894,38685,20369,8733, 13155,11380,19796,31976,27428,38391,40331,7774, 24876,22205,43042,33977,28989,34117,14199,38118,40331,
43041,40331,5495, 8308, 24478,40330,35243,11175,38494,2296, 38390,35710,6552, 1030, 338, 19101,28988,38390,16911,1688, 6847, 43041,10281,34895,12784,38325,33977,
26079,43041,1480, 19530,15600,43041,754, 17481,36355,40330,7045, 8958, 14539,30704,36894,38651,2454, 38798,15963,8426, 2363, 12544,22776,34030,43040,1865, 13285,
- 380, 22407,38390,36894,35710,38390,38389,16061,14538,27427,35710,43040,35710,36765,33977,8279, 34477,30117,24875,38389,38389,13163,40330,103, 34323,28449,3260,
+ 380, 22407,38390,36894,35710,38390,38389,16061,14538,27427,35710,43040,35710,36765,33977,8279, 34477,30117,24875,38389,38389,13163,40330,103, 34323,28449,3260,
26869,16760,27610,38389,26522,30155,1904, 34414,9092, 21364,24820,10730,3951, 33313,8593, 43040,36894,34764,10451,43040,38388,43039,24874,8351, 26078,35253,15266,
14834,38263,36926,5244, 10674,34767,39043,27408,23683,13576,31587,13893,27426,38404,18523,43039,31648,32979,36284,43039,40330,33313,36894,14198,39387,14823,33516,
43039,43038,23839,34763,33089,36893,9833, 43038,1847, 25162,27716,20439,6460, 43038,43038,17374,38388,38388,36648,40329,34763,10594,28097,36893,43037,33970,17934,
@@ -15553,7 +15548,7 @@ static const unsigned short Ranks[197839] =
20428,11263,29247,40329,38388,33803,22775,28722,2117, 40329,36892,9145, 21018,43037,8053, 10151,5601, 8165, 23375,28713,33313,7283, 19759,43036,26076,17250,34763,
15599,7679, 22368,33976,43036,40328,18247,8496, 17249,35709,535, 31185,43036,40328,22629,10717,11856,20427,35544,35437,738, 24794,31227,40328,18522,18521,17373,
2355, 18246,38387,16482,26329,23721,38387,24873,33922,15777,32970,6229, 8774, 28669,12635,40328,30067,21017,21948,38559,32768,23769,10280,22774,43036,26075,20350,
- 7225, 10541,1074, 8939, 2586, 26074,34505,7521, 11370,16481,13041,305, 32817,8802, 2488, 17296,20426,9532, 28987,6672, 24669,22773,36062,19233,25401,6612, 8238,
+ 7225, 10541,1074, 8939, 2586, 26074,34505,7521, 11370,16481,13041,305, 32817,8802, 2488, 17296,20426,9532, 28987,6672, 24669,22773,36062,19233,25401,6612, 8238,
1408, 32611,17879,29019,3997, 8495, 14418,9060, 15163,29092,9583, 33976,30703,38387,34669,40327,1083, 33313,36892,40327,3346, 16670,43035,32610,39280,18520,16669,
25919,35709,40327,33080,36892,36484,40327,43035,6176, 34859,20136,16388,32659,5828, 18519,7044, 32609,36731,37688,36891,43035,32818,35752,25692,34223,17867,35297,
35341,40326,43035,31966,36891,10305,18753,39378,19529,34786,37586,43034,40326,14339,38387,35196,30702,21720,35709,30444,17237,27979,34762,17248,2366, 39337,43034,
@@ -15575,18 +15570,18 @@ static const unsigned short Ranks[197839] =
19755,40320,5592, 34836,21014,34759,43027,38382,19097,22771,7773, 43027,23349,33311,24870,40320,9582, 4192, 37287,33884,33310,43027,40320,39409,38817,16307,38382,
35705,2013, 33638,14157,1642, 10844,33724,3483, 3441, 15597,22263,37185,39103,16355,40320,40319,38382,36374,34115,38382,15624,5949, 14353,37118,32601,37411,18243,
14977,36888,35705,29659,20423,38381,38381,35056,36864,39150,40319,36706,12043,30515,2982, 30145,22770,34759,12052,36581,43026,22290,2870, 27992,28643,35705,35916,
- 20422,43026,43026,17116,810, 14515,43026,40319,7076, 8822, 43025,1415, 38942,36888,28983,5907, 40319,38381,27424,6075, 20421,6459, 33973,13802,43025,35704,2625,
+ 20422,43026,43026,17116,810, 14515,43026,40319,7076, 8822, 43025,1415, 38942,36888,28983,5907, 40319,38381,27424,6075, 20421,6459, 33973,13802,43025,35704,2625,
7618, 10511,23719,32600,5545, 19522,40318,38381,25, 35704,28982,40318,39099,29908,34697,25363,17932,38380,11260,4126, 35845,35704,43025,3806, 40318,38380,33973,
25078,5120, 4434, 19096,36334,34758,10450,38380,36887,33973,9191, 33973,35848,6529, 40318,8155, 36887,33776,14690,43025,28981,32848,9712, 37521,32620,13891,33847,
43024,36666,35047,40317,1306, 7947, 38353,691, 14889,17372,21013,11705,35907,11319,28052,35148,40317,15263,43024,40317,33310,36887,2169, 35704,27423,31749,19095,
40317,34758,15262,38380,38379,27422,36119,37355,37219,26296,43024,43024,28980,40316,43023,30697,40316,40316,43023,43023,40316,40315,32599,35740,26070,35703,36887,
28979,43023,36886,6293, 40315,21468,11259,40315,12051,38379,7345, 14888,16445,34758,14537,7512, 35520,25659,9289, 33288,38379,5073, 8262, 34758,33310,20292,16059,
1384, 17818,5428, 8261, 43022,11810,6773, 34757,9861, 35703,21145,36886,43022,37674,6578, 15635,19094,32598,1325, 38379,38378,21945,38378,34757,21144,38378,43022,
- 1324, 5395, 17828,35703,6710, 33310,40315,37318,26069,34789,36886,23718,33972,2885, 28978,34757,36886,19754,43022,33972,40314,40314,2768, 19093,40314,8956, 3696,
+ 1324, 5395, 17828,35703,6710, 33310,40315,37318,26069,34789,36886,23718,33972,2885, 28978,34757,36886,19754,43022,33972,40314,40314,2768, 19093,40314,8956, 3696,
11533,13890,35703,43021,43021,34506,25298,36885,27421,10449,38220,38196,24308,36885,16354,27420,5359, 32911,11809,38378,32597,35702,32596,43021,6916, 13297,38377,
18242,13401,16480,5289, 30658,43021,16479,7946, 2067, 5072, 32560,10736,31195,11560,6830, 16269,31677,11258,14976,32595,33972,798, 15634,33968,26068,40314,35702,
998, 28977,18369,31985,9306, 7658, 33309,10167,6915, 3244, 9727, 23717,33972,33737,11532,3582, 5827, 6152, 25884,37760,1531, 23020,28392,13075,12426,34300,30696,
- 32594,39403,14691,35702,40313,13296,12947,33531,19453,43020,38377,30695,1036, 34757,30694,36885,28976,17371,43020,33971,33731,495, 5119, 10055,3130, 10510,9288,
+ 32594,39403,14691,35702,40313,13296,12947,33531,19453,43020,38377,30695,1036, 34757,30694,36885,28976,17371,43020,33971,33731,495, 5119, 10055,3130, 10510,9288,
7058, 19521,31937,5966, 4365, 40313,34756,26067,12541,9652, 19520,19348,16963,30693,3858, 12946,43020,1182, 36389,11257,17243,2689, 16909,14417,43020,30692,12050,
26066,32593,43019,7678, 17931,4503, 7616, 23738,36461,40313,32926,33962,33971,36635,14395,43019,10304,10380,16559,36598,10719,33927,13411,19654,33675,27059,12049,
35692,21094,26065,39380,28113,34122,6227, 35928,11282,34756,38377,32855,12782,40313,12264,27419,35702,16123,35518,39262,35701,12829,14416,37304,32946,29933,21051,
@@ -15594,7 +15589,7 @@ static const unsigned short Ranks[197839] =
23995,19519,4342, 43019,18517,34756,35701,38376,43018,3297, 34756,40312,8070, 38376,14910,7224, 31863,33714,19753,40311,38972,35701,30140,13889,267, 36969,36884,
43018,19518,36884,13709,36431,3444, 27219,32751,31528,650, 9532, 342, 39080,14536,9610, 28478,26064,26063,1498, 10599,38169,38376,9641, 6772, 30954,11195,31603,
18241,7072, 2186, 34755,43018,38376,35871,15261,9108, 33901,40311,20672,21463,3451, 34755,28179,20813,22729,2203, 38717,21012,33970,19517,22769,25, 31040,40311,
- 34755,13575,20420,9190, 37756,43018,30611,30691,35701,35700,32592,10149,43017,7591, 26354,20419,43017,4128, 40311,37409,9450, 3580, 43017,36975,34755,4583, 3221,
+ 34755,13575,20420,9190, 37756,43018,30611,30691,35701,35700,32592,10149,43017,7591, 26354,20419,43017,4128, 40311,37409,9450, 3580, 43017,36975,34755,4583, 3221,
16910,34754,7203, 38375,6292, 865, 9860, 33309,40310,28975,11808,26062,38375,43017,30690,2994, 14415,3296, 6125, 19923,33970,1623, 7917, 25226,4848, 4433, 22977,
25214,21011,5875, 15957,9449, 22201,8637, 5553, 1652, 6964, 43016,38305,15596,33970,3898, 30421,43016,24869,13888,5140, 8494, 7314, 34502,21010,24095,39200,11572,
28974,2185, 8493, 26061,35570,20418,34754,33387,33309,35700,43016,33312,35886,43016,40310,6469, 15638,32813,15870,38980,35392,43015,36884,20082,33270,17242,35700,
@@ -15605,57 +15600,57 @@ static const unsigned short Ranks[197839] =
2509, 22276,38375,38938,33308,3018, 17930,40308,34351,40308,8154, 40308,40307,37685,36069,35699,8996, 40307,38374,10303,32676,4469, 40307,98, 11656,39023,38616,
3395, 38374,21143,19751,11570,990, 30514,7024, 4498, 40307,27417,1362, 35325,38374,35190,981, 40306,5915, 36212,34298,21943,27457,8153, 43013,30687,36883,22766,
12206,33308,38374,34941,38373,15193,43013,6963, 18515,24867,84, 32503,27809,3917, 26356,26380,22873,25549,22969,7223, 38373,33928,9580, 24814,32955,7720, 33308,
- 43013,38373,40306,1962, 11045,28973,17929,9797, 43012,13615,33307,34753,24207,10148,43012,3197, 40306,26427,16476,30796,15260,4497, 27257,6181, 361, 1978, 1895,
- 38764,12781,34753,33467,43012,6962, 43012,43011,12047,40306,33307,43011,43011,19750,43011,10828,33307,28972,6385, 7852, 31333,37716,38496,34753,43010,2191, 8260,
+ 43013,38373,40306,1962, 11045,28973,17929,9797, 43012,13615,33307,34753,24207,10148,43012,3197, 40306,26427,16476,30796,15260,4497, 27257,6181, 361, 1978, 1895,
+ 38764,12781,34753,33467,43012,6962, 43012,43011,12047,40306,33307,43011,43011,19750,43011,10828,33307,28972,6385, 7852, 31333,37716,38496,34753,43010,2191, 8260,
10140,24949,346, 6976, 27416,12841,32590,21942,2639, 17241,38811,38729,19092,40305,35699,1032, 13972,10054,36883,14108,37012,32079,34050,11530,43010,16254,23695,
36883,2088, 2065, 43010,43010,24241,43009,43009,43009,38373,28180,31942,21941,15708,33969,40305,40305,38372,40305,37337,36882,17928,24965,21940,5781, 34753,34752,
- 14195,38372,480, 30686,346, 32222,34871,38372,31250,6121, 16184,4371, 26387,18240,6777, 26038,35322,35801,35699,39151,29880,32843,10392,7833, 3593, 1725, 6397,
+ 14195,38372,480, 30686,346, 32222,34871,38372,31250,6121, 16184,4371, 26387,18240,6777, 26038,35322,35801,35699,39151,29880,32843,10392,7833, 3593, 1725, 6397,
29225,8149, 43009,23714,38372,18036,35362,36882,34752,3940, 8492, 13887,10082,38549,18239,5802, 5385, 36617,25861,19919,15559,19745,40304,3319, 10989,16693,40304,
8349, 35296,40304,471, 33997,16353,1688, 34184,9145, 15839,4719, 2767, 43008,2022, 33440,26059,10988,21009,34752,9469, 12540,15984,30601,12945,21008,34625,43008,
38371,395, 38371,43008,19061,23528,5290, 43008,26058,22001,40304,1314, 14414,15595,12539,21007,26448,43007,35698,38371,38371,3514, 13620,1762, 24354,2983, 38370,
- 40303,19091,40303,34041,43007,38370,27415,40303,17927,33307,38370,15594,40303,38370,13864,2857, 827, 33969,11368,34752,466, 20397,37170,8126, 12424,36882,6468,
+ 40303,19091,40303,34041,43007,38370,27415,40303,17927,33307,38370,15594,40303,38370,13864,2857, 827, 33969,11368,34752,466, 20397,37170,8126, 12424,36882,6468,
7057, 11843,4767, 802, 24926,9072, 21006,12538,19516,5703, 18238,3770, 22173,30426,12960,12302,2630, 43007,33968,22177,25289,40302,33693,36630,34751,43007,33306,
35920,35731,23713,24866,38369,30685,43006,43006,12025,807, 24022,8379, 33306,33968,11842,10630,4495, 14413,21142,1204, 12270,40302,30684,36033,34839,1659, 22584,
- 8221, 33480,38716,36882,1549, 11807,17926,3005, 30683,35227,43006,5504, 865, 12819,36881,16908,28971,131, 16038,3713, 21957,25582,29361,19749,34751,19748,3974,
+ 8221, 33480,38716,36882,1549, 11807,17926,3005, 30683,35227,43006,5504, 865, 12819,36881,16908,28971,131, 16038,3713, 21957,25582,29361,19749,34751,19748,3974,
34751,40302,40302,31083,33626,43006,43005,21274,2145, 43005,14887,36881,34751,8049, 27414,5561, 16907,28970,1348, 38369,33968,7772, 40301,12535,24931,27999,17925,
2350, 8673, 24349,34601,43005,9189, 38369,40301,43005,38369,43004,8739, 38368,5169, 17780,5455, 35698,39144,34750,479, 15253,15259,33968,33306,26057,38368,33306,
33967,12269,26542,15604,5964, 11367,12534,207, 33305,27413,36881,9859, 9188, 30682,23429,34746,43004,40301,40301,14194,40300,33305,5596, 1146, 10764,21005,40300,
222, 43004,28641,24562,43004,38368,43003,25507,32589,21004,24865,14844,33274,34750,36881,22765,24061,29060,43003,33967,43003,8086, 5754, 17370,43003,33967,43002,
21939,33333,36174,34396,32790,34750,33967,28969,32813,40300,21938,8938, 38371,43002,34750,43002,37425,26157,35636,34749,14027,15593,34110,11309,26404,23013,25034,
- 31691,8891, 19515,43002,16056,233, 16352,153, 8773, 554, 14412,36880,446, 38368,25939,1692, 2416, 1944, 6374, 1145, 43001,210, 637, 19989,31579,15859,2142,
+ 31691,8891, 19515,43002,16056,233, 16352,153, 8773, 554, 14412,36880,446, 38368,25939,1692, 2416, 1944, 6374, 1145, 43001,210, 637, 19989,31579,15859,2142,
28387,4909, 32784,31156,21108,24888,11952,15700,28167,22387,12413,32038,2149, 11550,8537, 27080,24549,26348,20801,27970,6297, 12868,26071,14052,11980,26784,19801,
21003,34627,36880,36079,35093,33037,23392,6975, 13295,43001,9858, 43001,36880,38367,34749,36308,23775,5336, 39147,34749,36751,9187, 17250,19342,43001,22764,40300,
40299,39300,31082,33383,14839,16906,43000,33940,4595, 8085, 3526, 3242, 33305,21937,24864,40299,6846, 32588,35698,7344, 10799,35698,27178,38367,2402, 21257,33305,
4662, 43000,33304,2130, 35011,24945,9287, 38291,28272,12314,36880,39329,43000,2465, 33457,34967,19514,12984,16055,13886,32444,43000,42999,40299,19513,38367,33966,
28968,6302, 9695, 17924,33966,33966,243, 11069,16528,27680,36879,15632,38367,38366,40299,34243,18129,3973, 19289,5055, 16307,36661,27099,6577, 2959, 13799,29386,
- 140, 12418,37373,10212,4643, 22597,40298,38366,4025, 18514,26056,38366,6290, 32587,962, 34360,21002,38366,9849, 17751,19512,1240, 40298,33304,2887, 35697,2690,
+ 140, 12418,37373,10212,4643, 22597,40298,38366,4025, 18514,26056,38366,6290, 32587,962, 34360,21002,38366,9849, 17751,19512,1240, 40298,33304,2887, 35697,2690,
33304,19747,40298,35697,26055,23285,13453,11170,16351,40298,6513, 42999,38365,4906, 20417,546, 34749,40297,22019,632, 29857,32586,42999,2189, 33304,19746,32999,
16940,35228,942, 2401, 38365,11533,8048, 40297,42999,747, 19702,4759, 22899,13574,38365,36879,2196, 38365,8220, 10504,40297,9065, 16833,40297,13526,22106,17366,
42998,21046,2693, 23096,32585,2708, 21224,17240,5883, 23342,8175, 10509,281, 23742,38364,35463,1581, 15592,18056,38444,31013,36879,26054,12944,38736,27412,42998,
28967,18268,12533,42998,16470,39196,30681,34748,10302,40296,42998,42997,4208, 38858,3043, 35697,4004, 10147,10977,32584,1123, 22763,34748,9106, 34748,9569, 22914,
35673,24852,21141,39308,34469,36271,36476,11366,26920,31855,18100,34479,20572,10798,23816,37518,33966,34748,32301,9581, 42997,18513,10987,36879,42997,40296,33965,
- 22762,42997,5243, 7124, 19511,2267, 16905,35697,9726, 34747,5242, 37831,35696,28966,34747,497, 971, 5933, 33471,21240,4461, 40296,28203,14325,19044,30680,4125,
- 42996,38, 11093,28100,1646, 15224,13253,23301,17197,28715,32889,17528,29649,19605,15172,32912,32281,31930,7056, 17923,27692,38089,23558,38364,42996,17239,2523,
- 38364,42996,1372, 1789, 27411,39365,6671, 33303,35696,12780,34747,38364,6592, 8491, 33965,3005, 36081,331, 35696,26106,6973, 9009, 34589,38643,15464,36234,9945,
+ 22762,42997,5243, 7124, 19511,2267, 16905,35697,9726, 34747,5242, 37831,35696,28966,34747,497, 971, 5933, 33471,21240,4461, 40296,28203,14325,19044,30680,4125,
+ 42996,38, 11093,28100,1646, 15224,13253,23301,17197,28715,32889,17528,29649,19605,15172,32912,32281,31930,7056, 17923,27692,38089,23558,38364,42996,17239,2523,
+ 38364,42996,1372, 1789, 27411,39365,6671, 33303,35696,12780,34747,38364,6592, 8491, 33965,3005, 36081,331, 35696,26106,6973, 9009, 34589,38643,15464,36234,9945,
13752,33553,34693,38126,35627,20702,28465,28196,26095,24435,33994,1214, 17709,2060, 24863,8219, 32972,15631,35892,17922,42996,42995,10976,27410,11174,8152, 42995,
2823, 18237,23734,25911,21936,4496, 35696,9857, 40296,42995,15258,40295,27409,4065, 31717,44, 19015,33965,34747,33689,36878,34746,36878,37402,38363,1961, 31564,
20907,13294,23712,35235,174, 16672,17200,40295,14974,19745,28965,9144, 23977,21001,24862,13038,33303,6497, 19510,17811,12079,32418,36524,33965,14193,8720, 33483,
- 9286, 3873, 42995,42994,35695,12268,38363,42994,42994,34543,14973,35695,9064, 524, 42994,4236, 17921,30679,20416,38363,38363,14984,40295,19509,12753,36090,5329,
+ 9286, 3873, 42995,42994,35695,12268,38363,42994,42994,34543,14973,35695,9064, 524, 42994,4236, 17921,30679,20416,38363,38363,14984,40295,19509,12753,36090,5329,
13011,19090,309, 726, 1153, 4661, 19744,34746,42993,9063, 4288, 16475,33241,32858,425, 36971,19743,14, 14432,8379, 17621,109, 18342,29167,42993,11365,33964,
- 18512,35307,40295,5018, 27975,12959,7423, 37639,15257,26053,8627, 32583,18236,70, 2659, 11162,21704,29495,19561,21466,36395,33042,19089,25975,11561,3846, 7898,
+ 18512,35307,40295,5018, 27975,12959,7423, 37639,15257,26053,8627, 32583,18236,70, 2659, 11162,21704,29495,19561,21466,36395,33042,19089,25975,11561,3846, 7898,
20415,38362,2586, 27220,39174,11364,11363,19088,18380,30050,34746,9468, 9305, 27128,40294,27910,18511,33303,42993,169, 38362,9448, 34746,37059,28964,22761,42993,
3017, 38362,38362,38361,5503, 4478, 42992,42992,42992,17369,19742,36878,36878,38361,11569,10005,34745,14192,11568,40294,36352,24861,24860,42992,35695,38361,13863,
21140,15584,5684, 40294,38361,40294,38360,10646,39397,24859,861, 11173,30678,38360,512, 3390, 9143, 34687,26102,13573,4087, 28963,27408,14191,35695,40293,26052,
- 40293,20414,34225,30677,40293,33303,10508,38360,32582,6354, 5591, 7511, 23711,6771, 19741,19087,27407,38360,33302,37279,14534,5635, 38359,35694,3694, 12779,4980,
+ 40293,20414,34225,30677,40293,33303,10508,38360,32582,6354, 5591, 7511, 23711,6771, 19741,19087,27407,38360,33302,37279,14534,5635, 38359,35694,3694, 12779,4980,
40293,7590, 7343, 4260, 38359,22760,42991,9856, 42991,7123, 27017,33843,24541,36006,37704,33695,25926,20291,32068,35694,39374,42991,14972,1767, 35694,34745,13376,
28962,5454, 38359,3862, 30653,8108, 16720,31712,7733, 36972,17119,210, 21000,12275,32335,13017,30676,42991,38359,12532,38358,6914, 7862, 19086,38358,42990,14886,
3531, 15377,32581,42990,3264, 8559, 13389,24, 36344,42990,35697,6041, 18013,37423,40292,29644,42990,36877,42989,13640,14190,30675,32580,42989,40292,34399,13409,
14533,32803,20413,33964,36877,42989,33302,22759,27406,38358,28961,33302,35694,42989,40292,11841,36877,42988,38358,4618, 42988,32773,33125,40292,42988,38527,17117,
- 30440,31826,20393,34860,36019,17345,37348,6845, 29238,16761,30145,33579,23715,38679,11978,24032,31262,32538,42988,38357,40291,2638, 40291,11172,20412,8726, 1302,
+ 30440,31826,20393,34860,36019,17345,37348,6845, 29238,16761,30145,33579,23715,38679,11978,24032,31262,32538,42988,38357,40291,2638, 40291,11172,20412,8726, 1302,
36877,34745,30771,9186, 21935,34931,16054,11567,26051,42987,24858,21993,15955,33097,33064,20999,545, 38357,38357,3326, 31059,36780,38894,836, 40291,34745,12046,
- 13293,38357,32459,36027,33435,42987,3295, 38356,31391,42987,11806,33302,40291,36876,8151, 35693,38545,38356,38356,3104, 42987,35693,40290,10146,4067, 10507,7589,
+ 13293,38357,32459,36027,33435,42987,3295, 38356,31391,42987,11806,33302,40291,36876,8151, 35693,38545,38356,38356,3104, 42987,35693,40290,10146,4067, 10507,7589,
11256,5998, 39354,5963, 33964,13885,8084, 8218, 40290,19508,18280,37456,33160,17368,10665,40290,12778,958, 14885,23808,5119, 19085,35693,1044, 28917,40290,42986,
- 24857,38755,38356,33231,1095, 13653,37890,36876,9142, 34744,12045,905, 34170,42986,17641,15591,4999, 3325, 42986,10721,40289,38796,24537,312, 26828,38269,1148,
+ 24857,38755,38356,33231,1095, 13653,37890,36876,9142, 34744,12045,905, 34170,42986,17641,15591,4999, 3325, 42986,10721,40289,38796,24537,312, 26828,38269,1148,
4718, 22107,35235,9393, 13884,10262,1176, 15522,16934,631, 6974, 35556,1221, 35693,6394, 42986,36876,23710,10720,8501, 40289,38355,34667,39086,33430,2956, 34744,
42985,22758,3626, 9447, 23812,31892,34174,40289,35651,3225, 24690,42985,3139, 32044,38355,17238,16474,24847,33964,33963,12267,5358, 42985,6371, 8507, 33075,36482,
38355,38215,308, 38355,27549,40289,36876,42985,2097, 26050,5003, 38354,29338,34823,42984,40288,38354,38354,38354,35692,42984,28960,15256,36875,33963,11805,36875,
@@ -15665,13 +15660,13 @@ static const unsigned short Ranks[197839] =
32043,42982,42982,26280,42981,12508,30674,38353,40287,5921, 14030,37276,26046,27450,40287,35692,35082,3881, 30773,26020,6913, 28959,33050,32578,13, 2652, 27516,
42981,10974,24951,40287,18238,36873,15255,36519,3460, 223, 12266,30673,2289, 19506,19083,38352,35692,20637,32781,20891,39027,28073,32577,18510,22757,28958,42981,
35691,33962,22756,36961,21933,11840,23709,38352,42981,7510, 9410, 3440, 230, 40287,18509,27404,33301,36886,18508,40286,36873,34743,4407, 22512,10252,20997,23109,
- 5258, 33769,27281,19507,31167,445, 13758,3625, 2970, 19535,29624,34743,34005,16904,40286,36873,2538, 38352,32830,1592, 32470,15269,8793, 32576,8475, 34066,5502,
- 18122,23245,812, 8555, 2764, 38973,16052,40286,12943,42980,150, 7771, 20996,16872,13565,2207, 8288, 36104,36754,33962,36646,39010,8767, 29122,1747, 38352,7342,
+ 5258, 33769,27281,19507,31167,445, 13758,3625, 2970, 19535,29624,34743,34005,16904,40286,36873,2538, 38352,32830,1592, 32470,15269,8793, 32576,8475, 34066,5502,
+ 18122,23245,812, 8555, 2764, 38973,16052,40286,12943,42980,150, 7771, 20996,16872,13565,2207, 8288, 36104,36754,33962,36646,39010,8767, 29122,1747, 38352,7342,
4235, 21932,5734, 40286,7028, 1728, 33777,38351,36155,28957,13428,40285,22755,1727, 31843,2823, 33184,38957,33670,28956,6844, 19739,15148,19058,36270,32775,42980,
- 35691,38351,15590,27403,11362,38351,34050,1146, 15254,733, 30303,8875, 27330,7121, 40285,35691,34743,17008,18507,14971,34743,20410,40285,95, 35427,17367,4468,
- 38351,12531,32764,18790,16051,24854,1200, 36213,33962,13883,21138,6912, 39356,34742,13483,27402,28955,18506,18505,30672,42980,40285,11361,7945, 272, 33962,5241,
+ 35691,38351,15590,27403,11362,38351,34050,1146, 15254,733, 30303,8875, 27330,7121, 40285,35691,34743,17008,18507,14971,34743,20410,40285,95, 35427,17367,4468,
+ 38351,12531,32764,18790,16051,24854,1200, 36213,33962,13883,21138,6912, 39356,34742,13483,27402,28955,18506,18505,30672,42980,40285,11361,7945, 272, 33962,5241,
36873,35691,34742,38475,35161,791, 42980,14884,19505,12044,17366,8636, 38528,15630,35690,36962,14883,1476, 33736,10053,883, 42979,9061, 34383,34742,40284,19738,
- 17349,35931,4897, 6766, 7705, 33724,36359,37312,9285, 42979,138, 16085,26868,33301,34742,30671,36872,32575,14188,19737,13511,36887,35690,17920,14882,4431, 4624,
+ 17349,35931,4897, 6766, 7705, 33724,36359,37312,9285, 42979,138, 16085,26868,33301,34742,30671,36872,32575,14188,19737,13511,36887,35690,17920,14882,4431, 4624,
4315, 36872,34285,40284,12942,42979,34741,30670,39282,26655,5198, 16050,14881,28954,17919,38646,7812, 42979,13299,8635, 39350,5017, 24485,38259,18440,5503, 38456,
13831,30291,12069,8444, 32827,21746,36548,22854,35978,19667,12, 571, 407, 19504,63, 11058,17445,26045,9185, 30669,260, 28952,1913, 3609, 14970,34108,12941,
35265,14701,37669,33300,15589,36107,40284,1263, 11171,7303, 17335,17237,12940,18948,10506,33834,8634, 1392, 15437,18581,34078,40284,33415,19245,11898,24732,16471,
@@ -15685,7 +15680,7 @@ static const unsigned short Ranks[197839] =
4617, 2854, 5006, 35712,9252, 42977,36871,1493, 33961,35141,12938,34012,12530,21136,814, 20700,12641,25803,25796,19499,3252, 26305,26043,8955, 18232,42976,37330,
38349,33148,31942,33299,29344,10248,40282,20408,36871,19082,42976,36871,34741,14879,36870,676, 36870,38349,28951,34741,42976,2555, 17653,34585,12208,11512,42976,
10952,28939,37278,40282,32574,4400, 1528, 32573,16470,16049,16469,27400,35689,36572,10301,38349,33961,5733, 33961,42975,19735,36870,3007, 23847,22868,17234,19498,
- 15252,9651, 19497,3142, 32572,35459,15251,34753,32575,13269,22752,42975,8692, 4536, 6109, 26527,181, 32229,7519, 11360,20989,7588, 35689,42975,42975,38348,9650,
+ 15252,9651, 19497,3142, 32572,35459,15251,34753,32575,13269,22752,42975,8692, 4536, 6109, 26527,181, 32229,7519, 11360,20989,7588, 35689,42975,42975,38348,9650,
34740,42974,38348,42974,38348,5874, 32571,17918,2222, 24362,20407,4086, 23708,38178,33335,2992, 38348,19496,33299,20406,35688,16235,15629,40282,25374,33606,42974,
11529,9725, 12043,28888,34364,40281,25794,37427,21740,18987,31769,36870,38347,1323, 16347,30668,42974,40281,15628,40281,33121,1643, 2518, 2401, 11839,35688,42973,
5645, 31521,38702,20988,33961,33960,26820,3835, 32570,7422, 33015,33038,2629, 38347,10796,38347,29216,13572,38565,30667,33960,19081,20640,40281,34605,40280,40280,
@@ -15694,8 +15689,8 @@ static const unsigned short Ranks[197839] =
42972,40280,26041,13862,32568,35687,28949,42971,38346,21930,35687,38346,24849,38057,34740,8590, 30664,956, 9847, 9467, 14410,19495,20986,19494,16346,36869,27398,
21929,40279,38345,16334,30663,31625,33960,40279,27397,40279,10973,34740,2028, 40279,36869,20405,14259,12265,6607, 37999,35687,33960,15627,33959,10003,36868,35260,
11565,12264,36868,25943,27396,237, 4282, 24910,32837,33298,22693,32567,16903,42971,28948,40278,14186,15626,23707,42971,40278,3738, 13291,38345,18231,33764,28947,
- 10279,1503, 19493,7518, 35364,2592, 24848,35859,3103, 40278,32566,25963,26040,15250,21358,6074, 42971,21069,42970,21134,35687,13036,36868,4182, 21928,18262,3115,
- 12777,10300,36868,38659,12263,38345,34740,42970,40278,22947,17232,34739,42970,11528,40277,38345,16902,33559,35686,30662,2537, 30661,26039,33959,17231,42970,5544,
+ 10279,1503, 19493,7518, 35364,2592, 24848,35859,3103, 40278,32566,25963,26040,15250,21358,6074, 42971,21069,42970,21134,35687,13036,36868,4182, 21928,18262,3115,
+ 12777,10300,36868,38659,12263,38345,34740,42970,40278,22947,17232,34739,42970,11528,40277,38345,16902,33559,35686,30662,2537, 30661,26039,33959,17231,42970,5544,
32565,21133,2922, 10795,9304, 36867,14877,11803,35686,19734,40277,30660,13400,42969,40277,38344,36867,28946,33298,16029,33298,30659,7832, 34739,34739,36248,36867,
32564,8217, 4003, 35686,21132,34739,7202, 24847,5158, 14185,22749,33959,2991, 21818,19080,35686,38344,42969,40277,42969,23706,38344,35685,3113, 30658,37859,40276,
7707, 35268,8216, 15587,40276,5847, 40276,7769, 34202,36867,16619,5197, 34738,21927,17365,36866,34738,34738,4771, 11331,42969,12776,42968,33959,36866,7140, 34738,
@@ -15703,11 +15698,11 @@ static const unsigned short Ranks[197839] =
36499,42968,33528,38343,27226,5213, 24881,3292, 33958,36866,19079,19078,21130,22748,33958,23705,37681,165, 40275,35186,32563,23389,34737,28944,36865,12042,33020,
40275,40275,15, 8092, 561, 521, 7942, 34056,22747,26038,40274,36865,15249,42967,42967,36865,35685,36865,33958,8378, 32562,38343,891, 40274,40274,36864,23730,
35152,36864,36864,24846,36864,38342,8150, 22746,30800,35055,21926,22064,36268,36737,14518,33788,18854,37412,35698,13149,2644, 4568, 36863,27615,26089,33957,35685,
- 33957,23082,30599,25369,6300, 18230,16102,6919, 9123, 30656,38342,188, 13399,19492,8214, 10051,38342,9724, 38342,16901,5823, 9649, 27395,37988,30158,27804,4088,
+ 33957,23082,30599,25369,6300, 18230,16102,6919, 9123, 30656,38342,188, 13399,19492,8214, 10051,38342,9724, 38342,16901,5823, 9649, 27395,37988,30158,27804,4088,
11692,35862,14184,1285, 42967,35648,8229, 38589,9418, 34111,1214, 42967,36644,35345,42966,750, 20472,36863,6338, 29236,20985,16468,21129,32561,36863,31138,10228,
35770,9466, 42966,6770, 18503,40274,6829, 30655,30654,7172, 83, 444, 25509,27388,5285, 606, 15179,5480, 22552,24787,10562,18952,13922,24167,18351,30762,17600,
16098,20177,7440, 9738, 4917, 15066,9823, 12511,2415, 11254,15586,3360, 10695,13875,11750,8703, 15886,32988,12700,10543,13914,12143,33297,17593,32515,5171, 18354,
- 13997,13881,17363,4639, 40273,14532,11297,21974,2218, 20403,17793,1947, 6769, 18395,33957,42966,38341,38703,21102,42966,5873, 16900,42965,30653,2872, 35984,8215,
+ 13997,13881,17363,4639, 40273,14532,11297,21974,2218, 20403,17793,1947, 6769, 18395,33957,42966,38341,38703,21102,42966,5873, 16900,42965,30653,2872, 35984,8215,
19641,32560,4374, 28943,30652,38341,27394,24845,30651,28942,33957,35735,897, 40273,20984,27486,37078,38341,40273,36863,4903, 8258, 38341,13398,34989,40273,42965,
110, 25238,30959,11620,773, 4457, 12176,2091, 42965,42965,10719,696, 2275, 14966,20983,26628,20539,14409,260, 8687, 22897,31945,1553, 40272,35684,10145,32559,
40272,35684,26806,23302,34204,34423,33003,4574, 14876,26037,36862,33194,16467,13570,22927,1109, 30650,33297,37875,40272,35684,34216,29606,34903,38838,15625,33956,
@@ -15723,19 +15718,19 @@ static const unsigned short Ranks[197839] =
3805, 4373, 33295,36859,34736,40267,20979,8725, 13861,18227,36858,40267,42958,2332, 5501, 10972,22744,30647,35682,13569,28940,18226,26026,38336,38336,3686, 15624,
16899,33954,38335,12529,19729,14530,27230,30211,24841,17463,428, 2101, 28939,5376, 10628,22743,15893,7120, 4467, 40267,46, 3676, 29499,20134,12604,28300,21937,
15070,16159,9283, 33295,24328,35682,42958,42957,40267,7422, 34736,13035,26036,4707, 42957,12774,13290,490, 35681,13879,551, 40266,576, 42957,11359,10791,27390,
- 7233, 7676, 42957,30646,34731,13289,36858,23704,17916,26035,42956,27389,5845, 33953,39260,11253,17086,5788, 35879,35760,7421, 16584,19074,33590,33017,23703,6961,
- 7768, 16047,42956,32552,38335,42956,35681,34736,42956,42955,19490,35681,16046,19772,35681,9722, 42955,35, 15126,33953,14239,34910,16447,36486,27617,42955,3510,
+ 7233, 7676, 42957,30646,34731,13289,36858,23704,17916,26035,42956,27389,5845, 33953,39260,11253,17086,5788, 35879,35760,7421, 16584,19074,33590,33017,23703,6961,
+ 7768, 16047,42956,32552,38335,42956,35681,34736,42956,42955,19490,35681,16046,19772,35681,9722, 42955,35, 15126,33953,14239,34910,16447,36486,27617,42955,3510,
12291,9381, 33055,10841,20469,17915,33953,19728,16536,33953,40266,24006,916, 12088,36673,4766, 16345,36619,14068,38335,35680,24423,38890,38335,126, 30662,18537,
31852,23367,20525,36858,1811, 28021,21128,33953,38334,26199,17896,17518,35447,27388,35680,6108, 4466, 38334,38334,28614,35675,36858,42955,33236,8443, 686, 33852,
4742, 26034,33087,20094,23181,36857,14393,21127,16045,10264,35850,35331,20402,32, 475, 14407,3676, 33952,3052, 37914,5280, 22940,6289, 11289,23696,17230,42954,
42954,42954,40266,40266,29686,33952,27162,10066,33952,8946, 15983,15962,16344,35917,5307, 19727,36857,16167,36857,42954,42953,22742,28938,23509,18225,576, 36857,
- 36856,8588, 24840,23968,33087,26242,1184, 35155,36856,33294,40265,38334,23996,38333,40265,16216,35680,42953,12528,1203, 42953,36856,34735,26033,36188,3291, 175,
+ 36856,8588, 24840,23968,33087,26242,1184, 35155,36856,33294,40265,38334,23996,38333,40265,16216,35680,42953,12528,1203, 42953,36856,34735,26033,36188,3291, 175,
16297,27387,27386,3647, 28937,9465, 26711,40265,30645,17914,9721, 36856,37438,20978,35153,33218,1505, 40265,33952,34918,24091,38333,1766, 20595,22251,18224,36855,
- 30644,38333,3504, 2317, 2003, 927, 8245, 9935, 9079, 34410,23343,20431,21465,11696,13798,35680,7509, 38333,35679,21126,42953,9580, 5590, 14113,40264,36855,7520,
- 34735,38332,4934, 28, 15710,33294,40264,1548, 14965,17056,27385,8490, 19489,20977,37112,34576,30643,36855,42952,1108, 21681,6960, 36744,35052,36743,11361,2810,
+ 30644,38333,3504, 2317, 2003, 927, 8245, 9935, 9079, 34410,23343,20431,21465,11696,13798,35680,7509, 38333,35679,21126,42953,9580, 5590, 14113,40264,36855,7520,
+ 34735,38332,4934, 28, 15710,33294,40264,1548, 14965,17056,27385,8490, 19489,20977,37112,34576,30643,36855,42952,1108, 21681,6960, 36744,35052,36743,11361,2810,
4288, 32772,10278,3439, 7412, 16275,10136,36903,4623, 36855,6647, 42952,11523,34618,42952,42952,15247,15533,8083, 35496,31207,37650,40264,38332,3225, 34735,17361,
- 42951,42951,32551,21921,40264,35679,38332,24839,38332,12773,5732, 240, 28936,14964,40263,36138,38331,2689, 27384,38331,40263,17913,3895, 600, 35097,34532,1580,
- 42951,30642,21125,42951,42950,38331,11802,2349, 42950,8499, 23702,985, 37364,42950,35679,1627, 42950,26032,42949,656, 36854,40263,38331,660, 4660, 35338,7861,
+ 42951,42951,32551,21921,40264,35679,38332,24839,38332,12773,5732, 240, 28936,14964,40263,36138,38331,2689, 27384,38331,40263,17913,3895, 600, 35097,34532,1580,
+ 42951,30642,21125,42951,42950,38331,11802,2349, 42950,8499, 23702,985, 37364,42950,35679,1627, 42950,26032,42949,656, 36854,40263,38331,660, 4660, 35338,7861,
33294,34735,33951,3553, 18223,720, 40263,33951,1317, 7710, 37787,42949,26804,36385,40262,28935,11169,42949,42949,36854,21920,15623,13979,40262,39396,40262,33294,
2742, 6512, 24838,21124,13014,6667, 36854,3001, 38330,42948,19726,32550,26795,32637,35679,7201, 24837,40262,16044,13288,19488,35215,16379,28934,10627,40261,42948,
42948,21123,38330,42948,16465,13860,38330,42947,3943, 36736,35224,33951,33951,10626,24836,23504,28346,2295, 26362,38330,28933,39221,40261,40261,31203,36854,23665,
@@ -15748,19 +15743,19 @@ static const unsigned short Ranks[197839] =
24074,18222,9647, 24912,34224,20064,10615,35031,36729,35818,39185,18221,19487,19778,35676,24752,17229,62, 14962,11766,42943,22741,27141,35112,9708, 33950,38326,
22740,42942,34909,21724,27378,40258,26908,30639,18498,6646, 33025,33293,35687,26030,15641,21453,42942,33293,33292,37737,11358,36643,22739,19723,42942,3522, 32548,
35167,32547,35910,36877,13371,37152,38325,3857, 6911, 16342,6572, 12536,36523,8849, 22907,42942,17452,19705,15918,32868,25131,38513,31307,11951,9524, 7380, 23556,
- 28193,28484,21369,19954,5886, 27752,30646,11890,14278,11624,161, 26162,2354, 4835, 15176,3235, 33292,33292,8498, 35676,23699,38403,42941,40258,12527,42941,7859,
- 5427, 19071,15302,28031,15584,17760,9629, 12160,33083,33425,23698,34893,20265,38325,16898,26029,35675,13568,15491,27377,19486,9846, 12772,38291,40258,42941,7717,
- 26028,17911,28931,26027,35868,35675,4622, 38325,40257,997, 42941,34734,42940,30638,16897,42940,15246,30637,567, 15622,36852,8148, 38325,8394, 7943, 124, 3487,
+ 28193,28484,21369,19954,5886, 27752,30646,11890,14278,11624,161, 26162,2354, 4835, 15176,3235, 33292,33292,8498, 35676,23699,38403,42941,40258,12527,42941,7859,
+ 5427, 19071,15302,28031,15584,17760,9629, 12160,33083,33425,23698,34893,20265,38325,16898,26029,35675,13568,15491,27377,19486,9846, 12772,38291,40258,42941,7717,
+ 26028,17911,28931,26027,35868,35675,4622, 38325,40257,997, 42941,34734,42940,30638,16897,42940,15246,30637,567, 15622,36852,8148, 38325,8394, 7943, 124, 3487,
37608,38324,2533, 37326,33672,2226, 39053,40257,42940,1811, 31954,37031,793, 34719,9646, 21943,22492,3470, 12937,11782,36620,6290, 15545,39140,14406,920, 36852,
38324,38324,12535,28930,19722,17910,8834, 40257,3102, 33292,35182,42940,34733,21122,3433, 42939,38843,16896,36752,8737, 34065,17074,38238,4695, 36790,40257,33950,
25332,23651,16341,17228,38371,20787,30636,8497, 40256,38324,32546,33291,30635,12040,26064,33930,5913, 36851,18124,42939,7675, 35675,13287,2792, 36851,18497,40256,
- 21919,15245,2087, 35675,19721,336, 24839,10971,40256,2982, 91, 14528,14637,40256,36851,35720,36724,4104, 562, 35674,640, 17359,38984,12039,18824,15372,3803,
+ 21919,15245,2087, 35675,19721,336, 24839,10971,40256,2982, 91, 14528,14637,40256,36851,35720,36724,4104, 562, 35674,640, 17359,38984,12039,18824,15372,3803,
23750,1010, 4283, 8933, 4158, 28929,5887, 4558, 4453, 19485,8071, 4007, 34980,892, 33950,34906,3050, 36851,33511,33302,9313, 24013,35674,6124, 25546,4465, 13396,
16340,29372,31632,16542,1282, 36850,42939,36919,623, 27295,29575,33727,3230, 14959,39375,38323,38323,7043, 34733,23697,33949,34733,23696,16043,11801,38323,42939,
27999,12047,36577,42938,23377,11527,11252,33455,16917,15129,36815,35819,37055,38200,14961,27549,13395,27463,34862,31979,33312,14942,12892,3110, 13876,40255,13394,
11582,16339,4996, 16338,37650,42938,35674,16464,17823,36850,2629, 782, 34875,4244, 37026,20975,692, 42938,4526, 42938,42937,28928,40255,24834,6843, 27376,38323,
- 21918,16895,258, 40255,38322,35019,2663, 2909, 5282, 14182,1219, 2487, 22738,23695,9855, 36850,32545,17947,17227,36850,33949,42937,36849,2486, 3082, 33291,9719,
- 7767, 19070,5085, 26026,34733,8890, 40255,18496,40254,21917,15244,40254,38322,35964,42937,34732,18495,42937,32, 42936,42936,38322,36849,36849,40254,3819, 742,
+ 21918,16895,258, 40255,38322,35019,2663, 2909, 5282, 14182,1219, 2487, 22738,23695,9855, 36850,32545,17947,17227,36850,33949,42937,36849,2486, 3082, 33291,9719,
+ 7767, 19070,5085, 26026,34733,8890, 40255,18496,40254,21917,15244,40254,38322,35964,42937,34732,18495,42937,32, 42936,42936,38322,36849,36849,40254,3819, 742,
29041,33291,6036, 20974,9139, 42936,38322,34892,19964,17065,16042,36849,17358,40254,40253,33949,35674,18202,42936,15621,16041,34574,3831, 42935,30634,33949,40253,
11564,36848,32544,35673,35673,14527,26798,38318,33418,38826,10789,30633,1071, 32543,10788,13567,19069,33948,24368,4464, 1769, 30632,18220,21650,35382,1314, 13447,
9626, 20307,42935,35673,6789, 17388,20401,25545,26025,6430, 36262,33277,17357,8006, 10625,7420, 1932, 40253,36027,42935,35673,36722,20368,42935,40253,40252,40252,
@@ -15779,7 +15774,7 @@ static const unsigned short Ranks[197839] =
42929,30628,16040,33289,21914,40247,38318,42929,15209,1956, 37284,16645,12970,15987,16069,36847,8632, 35669,37019,18219,12534,26017,33289,20972,14404,42928,35669,
11250,34130,34564,16334,26016,37049,25712,37388,33254,16351,38703,28903,39138,23088,34785,15729,33378,39191,8679, 36569,1678, 2539, 512, 34480,667, 2247, 33066,
34286,21756,33633,33793,5797, 37111,34373,10793,20745,38533,96, 12163,39047,16333,365, 4285, 39122,4178, 1928, 5702, 40247,13284,37233,15582,12936,18218,10504,
- 22273,13393,42928,17908,42928,19066,2256, 12840,42928,28921,16890,31534,11249,2248, 23133,10650,1716, 32854,479, 19209,8659, 27327,19200,37196,10089,33574,1450,
+ 22273,13393,42928,17908,42928,19066,2256, 12840,42928,28921,16890,31534,11249,2248, 23133,10650,1716, 32854,479, 19209,8659, 27327,19200,37196,10089,33574,1450,
35669,34731,2867, 6346, 12608,8631, 1532, 14001,26084,13283,38317,34730,27371,12771,35668,35668,42927,38317,3581, 7700, 37080,7411, 9717, 6106, 36396,4905, 21913,
4463, 4047, 3343, 28325,37771,32536,5400, 42927,21078,22679,38317,3648, 22800,30214,20783,27370,24828,42927,22710,29391,13580,38380,22734,32402,31255,905, 30761,
27396,11449,32118,24088,23576,35312,23081,38095,35668,40247,40246,42927,36847,35668,34730,40246,38317,35292,36846,37919,42926,12831,15342,209, 2086, 7956, 20971,
@@ -15801,19 +15796,19 @@ static const unsigned short Ranks[197839] =
33945,40239,42917,10001,38310,13391,14694,20966,32525,33743,36842,35664,14960,38309,42917,42917,42917,33286,19164,24822,16886,3972, 38554,27365,30618,42916,10502,
18614,2804, 35622,7485, 34726,17380,42916,33961,36399,40239,26512,4583, 29193,35664,39119,19064,15619,34726,36842,35425,15459,17353,36842,39182,39235,26483,20398,
28916,5157, 33945,17591,1172, 36053,23690,16087,38309,42916,33285,824, 3425, 34703,250, 23915,38309,19063,42916,42915,26352,8333, 20397,792, 14303,743, 36841,
- 34726,33285,36235,12037,25824,4847, 37294,42915,6528, 38309,685, 3382, 20396,38308,29027,30617,33894,35791,10000,19062,1286, 13034,38308,7715, 40239,42915,1112,
- 40238,30616,40238,5897, 5086, 10048,8831, 16462,15592,19750,2421, 22965,36841,38308,34725,12260,13854,5874, 42915,35664,3184, 21011,40238,42914,17781,701, 8839,
+ 34726,33285,36235,12037,25824,4847, 37294,42915,6528, 38309,685, 3382, 20396,38308,29027,30617,33894,35791,10000,19062,1286, 13034,38308,7715, 40239,42915,1112,
+ 40238,30616,40238,5897, 5086, 10048,8831, 16462,15592,19750,2421, 22965,36841,38308,34725,12260,13854,5874, 42915,35664,3184, 21011,40238,42914,17781,701, 8839,
38716,35129,1829, 23689,8214, 20965,17224,38308,5500, 42914,15618,7221, 20964,39035,27024,37317,10776,36841,35664,40238,38307,24278,38047,10445,6046, 31096,17352,
42914,7419, 28609,42914,30615,233, 15566,14959,26281,5240, 24319,30614,10444,4659, 33944,42913,12523,8830, 40237,13281,8953, 42913,38307,13563,17906,33944,27364,
3894, 38307,26014,40237,34725,4621, 15240,19476,11836,40237,19475,42913,34460,42913,883, 42912,1348, 28915,1180, 40237,895, 12522,23024,5196, 4233, 26013,18492,
- 5289, 5960, 35663,42912,27363,6644, 33944,1099, 34725,18491,40236,2434, 30613,34725,28914,596, 16017,5356, 26555,36841,10443,20395,42912,42912,30612,2822, 9999,
- 8952, 28913,22729,2468, 403, 14401,5239, 20044,33944,37773,184, 2554, 32267,16298,25489,17043,42911,11149,27362,12671,19446,1189, 1723, 25288,25126,2176, 680,
+ 5289, 5960, 35663,42912,27363,6644, 33944,1099, 34725,18491,40236,2434, 30613,34725,28914,596, 16017,5356, 26555,36841,10443,20395,42912,42912,30612,2822, 9999,
+ 8952, 28913,22729,2468, 403, 14401,5239, 20044,33944,37773,184, 2554, 32267,16298,25489,17043,42911,11149,27362,12671,19446,1189, 1723, 25288,25126,2176, 680,
6511, 38727,38092,17167,22728,27094,19717,42911,137, 37876,6842, 33285,17351,35663,6352, 20394,32524,13562,37470,17905,38799,4179, 16359,35452,38511,10501,33089,
16933,34159,34724,40236,14178,18669,29226,10996,32523,36840,35663,15617,42911,32066,17904,16461,24821,14177,22727,42911,38307,38306,8147, 36840,32522,40236,36840,
6073, 42910,23688,33943,6845, 20516,8936, 24820,4740, 33943,30611,35183,262, 33943,35663,9059, 28912,8146, 34724,42910,33943,42910,9852, 42910,42909,40236,21118,
11356,42909,42909,2019, 40235,35662,34724,16460,18490,32521,3918, 27361,8584, 18489,35662,33285,9303, 10968,35662,33284,38306,33942,35662,1158, 4459, 29257,33284,
10297,22615,32302,14730,35661,34339,14427,19686,2153, 25935,30272,12036,42909,40235,36840,6072, 34724,26012,36839,42908,19716,9444, 33284,42908,42908,36839,34723,
- 17350,19061,6071, 33486,5501, 33261,37258,3402, 33284,42908,35865,7823, 19474,18134,42907,38306,133, 29653,22266,10802,24816,20963,10246,20962,3573, 14958,7266,
+ 17350,19061,6071, 33486,5501, 33261,37258,3402, 33284,42908,35865,7823, 19474,18134,42907,38306,133, 29653,22266,10802,24816,20963,10246,20962,3573, 14958,7266,
27980,33947,3359, 15998,25011,37455,17223,15854,19868,3998, 18171,2467, 13108,6963, 35309,5342, 12174,38677,36839,35063,35687,33417,34570,18216,22828,20195,36213,
14190,11299,39014,6003, 22806,32243,287, 1765, 8087, 14325,29365,24006,38306,33368,20617,3557, 20103,24944,8489, 1847, 11608,36216,1763, 24599,1518, 26435,33019,
6105, 34318,35661,36903,5456, 33847,34742,39402,30677,34683,19953,3433, 36562,23876,15831,1578, 16894,19473,5643, 19715,35589,42907,5560, 2643, 9844, 12533,10045,
@@ -15823,39 +15818,39 @@ static const unsigned short Ranks[197839] =
32807,31949,20966,6496, 15702,9700, 24378,22294,10453,22791,3488, 25633,24070,42906,10049,15139,33023,40234,42905,11126,5245, 11247,6643, 36838,34677,13390,34595,
34073,30609,34723,42905,575, 933, 1969, 225, 2770, 27790,16527,17200,27362,12655,16218,16623,4420, 33965,6580, 12406,31757,40234,34723,1512, 7622, 28020,23727,
34015,23687,30608,1431, 18214,13389,19472,22906,13157,5198, 34723,17222,17195,930, 36838,40233,38305,42905,33071,42905,1206, 36777,35134,38432,36838,29888,32520,
- 14176,42904,37373,16330,34785,8487, 40233,20476,18732,19471,10717,18213,12935,40233,21909,35660,40233,40232,33942,38305,42904,42904,3937, 565, 23125,38348,2793,
+ 14176,42904,37373,16330,34785,8487, 40233,20476,18732,19471,10717,18213,12935,40233,21909,35660,40233,40232,33942,38305,42904,42904,3937, 565, 23125,38348,2793,
17221,37049,2025, 11163,2395, 20206,21881,12638,34625,6527, 16159,18588,2127, 2119, 7637, 36232,5761, 17437,2214, 35776,13529,35660,38305,13801,40232,19470,35660,
33942,38803,29855,30607,33283,38304,28911,1420, 18488,10083,16337,6851, 40232,453, 13874,37042,10716,12934,19881,11524,17220,36837,11523,9643, 40232,33945,36061,
36872,42904,42903,40231,22540,33942,1228, 21183,40231,20049,1912, 18406,4087, 937, 24849,5737, 34722,5070, 1395, 3909, 38085,7830, 42903,37700,14524,3621, 30356,
12531,38304,38304,14538,14400,14957,6043, 38304,751, 7200, 33941,40231,11351,28211,37253,36913,4363, 12420,11443,10830,32963,3962, 30633,21908,13280,18212,14523,
- 2688, 26158,2901, 42903,5288, 18211,4933, 18210,2291, 362, 6837, 27893,3146, 23686,16459,14869,40231,501, 12530,34722,6291, 2040, 21706,206, 38161,1959, 3479,
+ 2688, 26158,2901, 42903,5288, 18211,4933, 18210,2291, 362, 6837, 27893,3146, 23686,16459,14869,40231,501, 12530,34722,6291, 2040, 21706,206, 38161,1959, 3479,
21637,11623,1584, 25823,2635, 7312, 17219,1709, 34027,12835,17903,42903,36837,35659,24818,16460,9281, 638, 29281,32519,13722,16885,239, 13858,23763,35468,33878,
36573,40230,37290,33451,28869,8723, 42902,3424, 6104, 28174,42902,33283,717, 29179,21306,40230,16884,38303,27203,36837,5642, 40230,21117,35659,13033,27997,14449,
10048,19469,38762,38303,1889, 20393,10296,34722,16040,42902,306, 798, 36837,12770,38303,3443, 38303,6648, 42902,32518,6576, 18743,10424,34790,12933,28910,36836,
- 33504,42901,33941,42901,5877, 42901,36836,36836,7765, 33941,40230,20392,34085,38187,40229,38302,40229,42901,23685,30606,34722,19713,2469, 25915,9843, 3587, 8893,
- 17221,36836,27359,36955,36835,23684,37983,16883,38302,28909,37613,40229,33787,9137, 6159, 3580, 13642,42900,32549,508, 36474,40229,32787,17349,40228,33283,5779,
- 19712,21853,36835,35659,34061,7341, 40228,13032,22295,35064,37690,22910,34721,8583, 15670,34817,25754,1785, 17913,27125,674, 9970, 42900,36638,1299, 30605,999,
- 21762,4263, 26269,541, 16776,31608,38302,14522,14883,28107,42900,30604,4207, 33191,42900,40228,34721,4663, 3160, 39153,26887,42899,20391,36835,10142,207, 1710,
- 16239,13318,10492,16038,9753, 16136,8035, 7723, 30975,14388,28038,37349,26011,34721,9642, 17218,28338,36555,3423, 33941,19468,32517,9851, 7053, 798, 5139, 9280,
+ 33504,42901,33941,42901,5877, 42901,36836,36836,7765, 33941,40230,20392,34085,38187,40229,38302,40229,42901,23685,30606,34722,19713,2469, 25915,9843, 3587, 8893,
+ 17221,36836,27359,36955,36835,23684,37983,16883,38302,28909,37613,40229,33787,9137, 6159, 3580, 13642,42900,32549,508, 36474,40229,32787,17349,40228,33283,5779,
+ 19712,21853,36835,35659,34061,7341, 40228,13032,22295,35064,37690,22910,34721,8583, 15670,34817,25754,1785, 17913,27125,674, 9970, 42900,36638,1299, 30605,999,
+ 21762,4263, 26269,541, 16776,31608,38302,14522,14883,28107,42900,30604,4207, 33191,42900,40228,34721,4663, 3160, 39153,26887,42899,20391,36835,10142,207, 1710,
+ 16239,13318,10492,16038,9753, 16136,8035, 7723, 30975,14388,28038,37349,26011,34721,9642, 17218,28338,36555,3423, 33941,19468,32517,9851, 7053, 798, 5139, 9280,
42899,7410, 6396, 6972, 19711,40228,7857, 2530, 7829, 33036,5425, 35483,36835,28908,704, 6801, 7139, 42899,20961,36834,7079, 29509,6950, 34903,8786, 33481,14399,
- 424, 14207,10047,13020,8298, 31388,9170, 26010,36326,33283,14049,14398,13873,3646, 19710,4180, 40227,14956,9714, 21116,33545,8255, 42899,28176,1013, 1407, 1685,
+ 424, 14207,10047,13020,8298, 31388,9170, 26010,36326,33283,14049,14398,13873,3646, 19710,4180, 40227,14956,9714, 21116,33545,8255, 42899,28176,1013, 1407, 1685,
38302,22196,9110, 37224,10559,32810,38301,35659,23683,251, 27708,33918,38301,9475, 21115,2719, 35658,34721,36834,33892,8722, 33531,38821,18487,28907,30603,37512,
21907,40227,35658,40227,36834,18608,38301,3329, 961, 38301,17217,12308,19059,24817,13009,37790,38300,8022, 18864,20960,12173,4813, 21602,13357,36834,42898,13561,
36833,33282,31754,34600,31778,23682,38300,10295,27260,20959,42898,22726,9058, 13279,1038, 8829, 42898,42898,8951, 8950, 35658,8047, 42897,24092,42897,28858,40227,
- 10517,35191,12172,355, 38284,18855,6158, 16997,35703,8904, 23073,28236,2886, 40226,9576, 33282,19033,34720,15659,33940,33940,33940,917, 2428, 3438, 35325,1148,
- 8237, 40226,13049,32516,30602,40226,35658,4388, 36622,3344, 5778, 26009,2828, 12529,5988, 4346, 36833,3447, 30601,40226,26008,1924, 18209,35777,435, 21983,9232,
+ 10517,35191,12172,355, 38284,18855,6158, 16997,35703,8904, 23073,28236,2886, 40226,9576, 33282,19033,34720,15659,33940,33940,33940,917, 2428, 3438, 35325,1148,
+ 8237, 40226,13049,32516,30602,40226,35658,4388, 36622,3344, 5778, 26009,2828, 12529,5988, 4346, 36833,3447, 30601,40226,26008,1924, 18209,35777,435, 21983,9232,
10723,16808,37283,40225,34720,9713, 16882,35596,5565, 9807, 7978, 20958,25567,15511,18177,22616,23772,3096, 1514, 32609,13954,18208,8835, 38300,27195,4340, 10058,
17437,24755,12761,24362,32759,271, 13202,28403,7505, 42897,668, 19245,10603,27730,40225,3216, 21044,24117,6194, 4887, 12132,20957,22874,38300,12528,19467,18207,
- 31104,23745,8051, 6610, 6355, 23522,15440,18392,7201, 8408, 13764,18686,29694,4279, 36833,10798,32448,2646, 6255, 2644, 468, 11689,32906,40225,5069, 9474, 1011,
+ 31104,23745,8051, 6610, 6355, 23522,15440,18392,7201, 8408, 13764,18686,29694,4279, 36833,10798,32448,2646, 6255, 2644, 468, 11689,32906,40225,5069, 9474, 1011,
19351,7878, 2396, 25969,39232,12932,19466,6924, 22990,29866,18259,928, 5004, 38260,28906,42897,42896,4824, 40225,3634, 19280,887, 10099,4415, 13031,21906,36833,
40224,32964,8745, 23715,8589, 29798,14981,10426,17404,10000,19465,19058,33940,9805, 42896,26304,34720,42896,30600,8145, 8949, 11355,2074, 11354,33939,5140, 42896,
40224,27358,35058,38299,18486,21114,1673, 30599,38299,8828, 42895,33282,2651, 17902,34720,36832,4706, 30598,35657,2216, 5606, 36527,42895,36154,27570,38299,12527,
- 40224,4565, 15343,3996, 11835,6827, 23805,7955, 17216,23681,18738,38299,38298,35101,15616,459, 34719,3785, 24816,42895,7613, 393, 21905,25707,27357,122, 3405,
+ 40224,4565, 15343,3996, 11835,6827, 23805,7955, 17216,23681,18738,38299,38298,35101,15616,459, 34719,3785, 24816,42895,7613, 393, 21905,25707,27357,122, 3405,
29453,12504,15217,35657,21642,33136,19464,18899,18206,2538, 8486, 14840,1052, 2118, 32011,762, 4548, 7311, 14868,11562,33979,12035,35887,14204,10184,31398,33282,
18214,1230, 790, 36027,9842, 6826, 6810, 11705,11246,22725,30597,23680,32515,27356,839, 33562,35657,32514,35657,6458, 8496, 42895,38298,389, 5044, 17901,22724,
26238,31605,32909,42894,24815,32513,14867,35656,42894,17900,26007,42894,40224,42894,42893,35656,33939,34719,30596,33281,8787, 15579,38298,38298,24814,33939,19970,
- 3309, 17215,15578,30850,36281,4823, 24813,33170,32512,28905,6910, 33774,38297,40223,38297,5499, 17899,42893,40223,33939,46, 792, 19463,11522,2903, 440, 6971,
- 63, 11301,26973,30372,31137,42893,7041, 35656,40223,19462,26443,38297,22802,2981, 12975,22723,697, 204, 7587, 26006,34719,7280, 38718,36832,3671, 9850, 3872,
+ 3309, 17215,15578,30850,36281,4823, 24813,33170,32512,28905,6910, 33774,38297,40223,38297,5499, 17899,42893,40223,33939,46, 792, 19463,11522,2903, 440, 6971,
+ 63, 11301,26973,30372,31137,42893,7041, 35656,40223,19462,26443,38297,22802,2981, 12975,22723,697, 204, 7587, 26006,34719,7280, 38718,36832,3671, 9850, 3872,
24812,42893,92, 16458,27161,32995,7119, 30483,26561,38297,9998, 38296,33317,12854,14081,27355,40223,9641, 2279, 11162,11403,35656,5355, 9849, 20956,8082, 42892,
37035,36832,18481,20685,34719,12841,23679,38296,20955,36832,7118, 10294,18485,28818,12259,19461,6122, 35655,22423,11796,36831,42892,29354,38296,2943, 17865,42892,
20487,26079,8144, 8721, 19709,38328,27354,2439, 33938,42892,40222,42891,5257, 8377, 25117,37726,42891,34718,882, 20390,37414,38296,40222,32854,31885,13696,35441,
@@ -15878,36 +15873,36 @@ static const unsigned short Ranks[197839] =
39264,8812, 35802,12730,8454, 13513,22252,4097, 36379,34801,4418, 3235, 36597,14812,7220, 33937,10604,23741,1589, 35651,17680,42881,28897,38291,10160,25249,32503,
7039, 445, 21904,35651,3551, 10500,36827,18203,10277,7126, 34904,6645, 24807,18202,4232, 40215,40215,39199,42881,38291,20602,3278, 40215,19057,38855,5301, 20951,
7221, 18201,3469, 2943, 20950,2932, 3342, 15575,33284,5997, 42881,36878,16033,11244,21953,20949,1995, 14518,518, 16848,33104,20046,42881,6893, 14879,20878,19457,
- 34715,12526,10715,18200,1708, 37483,20948,13388,18645,15574,5338, 18250,38684,4791, 5256, 22717,20947,12930,11784,11243,34715,19456,40215,14174,24806,525, 1912,
+ 34715,12526,10715,18200,1708, 37483,20948,13388,18645,15574,5338, 18250,38684,4791, 5256, 22717,20947,12930,11784,11243,34715,19456,40215,14174,24806,525, 1912,
1703, 25921,39314,24856,8772, 35650,36827,18199,9983, 14954,42880,23621,19455,16328,6738, 10008,34633,9971, 3101, 14953,17211,12525,40214,13558,38291,26199,42880,
42880,2605, 486, 2018, 8347, 32225,14865,34509,21112,42880,4979, 653, 32143,35382,1818, 8221, 38530,1888, 14517,4022, 7199, 26003,15573,827, 18698,5467, 20946,
- 3979, 33936,33936,18198,33936,36826,17894,13871,6970, 6351, 16453,21903,14396,33279,40214,35867,35650,7198, 19736,28896,25217,29208,12171,5280, 14864,8485, 8582,
+ 3979, 33936,33936,18198,33936,36826,17894,13871,6970, 6351, 16453,21903,14396,33279,40214,35867,35650,7198, 19736,28896,25217,29208,12171,5280, 14864,8485, 8582,
9848, 20064,32502,42879,40214,22090,34715,38506,36826,11794,140, 28523,21097,5123, 5179, 38291,37, 11098,1682, 13657,7036, 13969,7967, 20420,32724,19236,18175,
22629,37533,4662, 10714,1060, 12129,11294,20099,3645, 1707, 19364,21902,19707,24195,10984,33279,13557,25998,6708, 9584, 18482,28319,32902,42879,35650,40214,11352,
24338,1856, 40213,8719, 36826,6969, 35650,33279,34714,40213,5238, 30589,42879,33936,17347,27347,42879,23139,38290,1248, 33935,6457, 21701,6447, 36165,35014,36826,
33935,37174,6669, 21901,13029,8254, 11793,27346,32501,10983,12663,30358,28895,22716,699, 4201, 38449,27345,35397,40213,34714,42878,16452,25997,40213,28894,42878,
- 28893,40212,7837, 38294,8081, 12929,20385,36828,36825,33211,1904, 2129, 5872, 14952,20209,28235,38290,38290,37986,33935,653, 9464, 25456,36825,13277,19706,575,
+ 28893,40212,7837, 38294,8081, 12929,20385,36828,36825,33211,1904, 2129, 5872, 14952,20209,28235,38290,38290,37986,33935,653, 9464, 25456,36825,13277,19706,575,
19705,34287,235, 42878,2166, 38290,5424, 40212,40212,10499,1050, 38289,14951,13168,1034, 9995, 42878,36825,9711, 16810,42877,25996,38289,32500,38289,13918,33671,
- 371, 12582,3834, 14173,40212,36825,38289,9574, 13028,38124,13027,40211,16327,24805,28892,28671,38008,37987,40211,2869, 19454,42877,38426,20945,11560,38288,1729,
+ 371, 12582,3834, 14173,40212,36825,38289,9574, 13028,38124,13027,40211,16327,24805,28892,28671,38008,37987,40211,2869, 19454,42877,38426,20945,11560,38288,1729,
15329,25458,1082, 5988, 3594, 42877,19973,2056, 13435,25995,9443, 40211,37730,17210,6840, 12279,38288,14863,33278,38288,38288,14172,38302,5156, 7411, 27344,20406,
11418,5931, 29957,35649,33278,23503,3168, 42877,40211,25466,33458,34714,34714,42876,8628, 14171,40210,36824,6509, 42876,38971,4855, 11520,2034, 15620,35457,11519,
1726, 38287,42876,39245,40210,3462, 22004,7138, 16032,32499,38287,35792,3593, 32498,2591, 3442, 23673,23672,2821, 34713,902, 528, 1200, 34713,42876,6456, 33278,
40210,33935,9507, 11161,38287,1927, 7418, 42875,33934,9573, 33934,35649,42875,3183, 1611, 25994,18891,37683,42875,16326,25993,12768,19453,38287,40210,33278,22715,
14516,28891,24804,11363,34713,22714,34713,33934,34782,30588,19967,38286,27343,42875,1574, 19704,42874,38200,35638,38234,17209,35649,32099,35698,21914,33763,22231,
- 23897,38286,3661, 18930,3324, 38692,32497,17849,21059,2517, 23148,11834,21243,35857,36047,32648,1648, 42874,37337,32496,42874,3215, 34152,14756,35030,33305,7962,
+ 23897,38286,3661, 18930,3324, 38692,32497,17849,21059,2517, 23148,11834,21243,35857,36047,32648,1648, 42874,37337,32496,42874,3215, 34152,14756,35030,33305,7962,
40209,17346,841, 5958, 24858,5195, 4824, 36498,11252,36823,35433,11518,36538,15572,17208,34521,21986,5266, 24335,17207,29274,21900,16374,33835,6365, 35987,12524,
12034,34194,15571,19452,23224,34009,6127, 21821,36618,35552,3334, 34382,23133,38864,36249,14874,29973,18197,26382,33611,21945,14701,12983,38372,31902,39111,24106,
12999,35921,39211,39361,13698,20856,35590,18061,11953,38708,25779,14976,23840,37131,42874,2400, 20944,11242,9463, 32918,8948, 35234,33934,33933,24158,5953, 20943,
17206,37667,34582,36824,32673,32495,3764, 40209,37614,24803,36824,15614,36824,27359,38286,38286,3893, 906, 21111,9057, 25112,37439,28444,36181,17893,10442,18196,
5753, 18084,34026,6612, 40209,40209,22713,34004,17892,23671,20384,20383,3422, 21899,25992,3432, 15950,36436,2426, 38042,38914,7515, 12170,6395, 17198,13387,24950,
32129,32869,12928,10493,38562,38209,34475,9279, 32020,37378,36006,25622,2105, 38585,35434,28964,31415,35544,37707,36479,32574,26964,25349,29287,17205,11253,33872,
- 23505,34739,35483,35620,26225,13386,9462, 34498,12767,16526,38029,14950,32821,36641,39082,17105,7051, 36314,12169,33336,33533,8771, 7310, 13870,34220,14949,7514,
+ 23505,34739,35483,35620,26225,13386,9462, 34498,12767,16526,38029,14950,32821,36641,39082,17105,7051, 36314,12169,33336,33533,8771, 7310, 13870,34220,14949,7514,
3468, 10498,7219, 13385,10713,16325,19056,34139,24641,27953,19451,20942,34044,20875,7409, 9670, 3625, 34466,33922,10485,35534,6103, 5321, 16324,18657,32817,17345,
36221,38909,38482,34814,16451,35649,32408,34780,8046, 32494,38285,42873,15238,21898,40208,28890,35648,42873,11833,29029,8770, 20941,3375, 17204,13384,38285,36823,
- 21205,38285,35927,27274,2099, 5581, 26999,25522,34712,29905,13513,2, 141, 14948,13383,18195,10982,14395,61, 11, 10981,10497,19450,82, 36542,1781, 3262,
+ 21205,38285,35927,27274,2099, 5581, 26999,25522,34712,29905,13513,2, 141, 14948,13383,18195,10982,14395,61, 11, 10981,10497,19450,82, 36542,1781, 3262,
36724,22698,16194,21486,14639,7039, 15112,40208,42873,40208,42873,38097,23670,40208,14170,24802,40207,38285,36823,42872,22712,15109,34712,13869,10045,37754,34712,
30693,17203,28329,7467, 20717,11971,3201, 24593,15863,17511,19513,42872,28653,25384,38284,23063,20139,31331,24004,15296,20997,14560,242, 28264,35648,37476,38284,
- 27342,42872,28889,24801,36823,39347,27341,21110,33277,19055,35254,36823,36407,42872,38030,39125,33277,38284,42871,12311,12503,34212,13284,40207,40207,9635, 2886,
+ 27342,42872,28889,24801,36823,39347,27341,21110,33277,19055,35254,36823,36407,42872,38030,39125,33277,38284,42871,12311,12503,34212,13284,40207,40207,9635, 2886,
30587,16646,40207,27318,953, 38424,36822,20598,901, 42871,40206,42871,42871,25934,34504,40206,10305,7410, 35731,23544,38167,35648,34918,25516,34712,33691,27554,
13933,9722, 11341,9623, 7410, 15911,24940,13737,40206,3406, 2641, 37556,34215,40206,13260,30113,34711,5072, 37378,34424,42870,24315,37277,14118,36933,18194,38284,
39408,15644,39203,33858,35993,24641,23378,21002,15327,37307,40205,42870,33779,6271, 19598,29862,5878, 38501,20793,695, 26662,26438,3495, 19449,14947,16617,26350,
@@ -15915,52 +15910,52 @@ static const unsigned short Ranks[197839] =
16323,27054,34222,7678, 26023,17588,7828, 9840, 22760,14453,20162,15727,32806,15498,37727,36000,25639,37535,38283,38283,11707,30576,35845,39366,36500,27482,33450,
19448,18193,7954, 9278, 42870,8253, 36238,33960,5996, 38839,38497,37015,4777, 5213, 27949,33806,29120,28328,10750,30106,6613, 28102,31638,24031,32563,9152, 37241,
34450,38252,19700,5423, 3744, 5287, 35376,11241,18192,181, 3472, 1633, 39101,31858,12033,9929, 31667,31638,23100,12847,6455, 195, 2785, 31524,13282,17202,10496,
- 36336,36483,14060,9939, 5429, 1209, 34744,5138, 1931, 1229, 38283,40205,35884,34711,27735,2578, 16345,9811, 3114, 24367,1215, 9681, 17592,5275, 2398, 4495, 6124,
- 1457, 23886,6229, 18989,11342,34591,37937,4468, 28633,36822,7946, 42870,21252,38676,23193,12927,10529,26437,19120,21818,19447,15346,843, 20146,16977,4737, 2907,
+ 36336,36483,14060,9939, 5429, 1209, 34744,5138, 1931, 1229, 38283,40205,35884,34711,27735,2578, 16345,9811, 3114, 24367,1215, 9681, 17592,5275, 2398, 4495, 6124,
+ 1457, 23886,6229, 18989,11342,34591,37937,4468, 28633,36822,7946, 42870,21252,38676,23193,12927,10529,26437,19120,21818,19447,15346,843, 20146,16977,4737, 2907,
18191,17220,6609, 36822,33696,33258,15570,24840,19446,11832,29918,20940,3615, 24233,38802,20946,14946,16322,38654,8556, 39208,30025,14293,3019, 2666, 32379,22307,
34249,14056,35419,42869,37581,18122,33204,4007, 33790,14945,20293,33640,6567, 31016,40205,40205,42869,40204,2027, 22299,36127,16634,24800,37, 42869,23694,42869,
38283,37664,35648,42868,10495,17888,42868,37947,26792,16881,31901,25736,34900,4562, 1692, 16402,31683,20515,23050,34410,34482,6737, 32784,21719,37275,40204,37058,
35647,35647,42868,13153,8213, 30020,38282,35517,11464,16208,8934, 38142,27340,38282,42868,15702,4902, 11831,31402,6205, 23149,32793,2098, 385, 24354,38282,32981,
- 7614, 16107,21728,31546,13398,35647,13382,10783,32023,21705,6668, 15569,6042, 4765, 1450, 3563, 9461, 42867,3100, 36822,13026,20382,1901, 18073,25008,25824,8810,
+ 7614, 16107,21728,31546,13398,35647,13382,10783,32023,21705,6668, 15569,6042, 4765, 1450, 3563, 9461, 42867,3100, 36822,13026,20382,1901, 18073,25008,25824,8810,
36317,30586,30455,15610,40204,35088,1854, 12168,37744,38635,42867,42867,37190,11028,33027,1873, 27310,30585,22368,32972,42867,42866,16450,30584,40204,42866,30563,
38953,25991,35647,23806,35958,35065,244, 8009, 38005,25990,31897,34255,38725,8876, 853, 38887,35287,11502,11615,21016,33554,38282,39081,35479,7285, 35778,25989,
34711,37628,35704,36636,4451, 8517, 34371,37126,18454,14862,12855,36400,912, 16321,42866,33833,9181, 28888,42866,42865,42865,40203,20381,36611,13719,16850,42865,
- 32029,5791, 26661,13276,33530,38281,42865,30456,684, 34711,36475,23726,42864,17443,17590,2399, 35646,14319,42864,40203,33165,38909,33950,33907,2485, 24005,7134,
+ 32029,5791, 26661,13276,33530,38281,42865,30456,684, 34711,36475,23726,42864,17443,17590,2399, 35646,14319,42864,40203,33165,38909,33950,33907,2485, 24005,7134,
1396, 3042, 781, 13853,8581, 37457,25257,20703,34646,39159,32951,34555,37630,28621,31184,14601,1697, 33287,29212,29015,36689,37853,12032,42864,35449,30083,25675,
32893,5623, 5115, 28065,25487,8041, 17173,35329,32530,28419,29267,33687,39261,32173,1664, 15054,3363, 39327,42864,42863,12461,25733,1588, 32659,5384, 20939,18190,
35111,6556, 35646,33277,38281,29615,32767,40203,35646,42863,9890, 39178,34710,36821,21897,2129, 18494,1026, 37207,18730,10980,7125, 2451, 8910, 15568,42863,18189,
36821,9181, 12167,7814, 26380,20100,13381,9448, 26224,33401,2893, 30658,5896, 38735,21354,6688, 2639, 8395, 9555, 5642, 4268, 18752,5567, 14300,38291,8484, 40203,
29768,39400,23555,14282,26222,33370,37869,39362,33766,19291,13006,1632, 18374,36185,5022, 10497,12060,17620,23884,32906,24977,26440,30390,17314,4995, 9674, 13011,
8587, 13967,19788,19739,12291,15967,24627,26992,23231,3701, 18529,21267,12288,20758,27205,22731,9975, 11037,7976, 15728,5653, 31080,1209, 29613,28340,861, 18629,
- 9356, 2010, 47, 11485,4516, 28133,27679,19730,30534,4053, 29883,35330,1530, 42863,2628, 22762,19575,31641,28901,28471,13977,11287,22207,24931,31000,12935,6693,
+ 9356, 2010, 47, 11485,4516, 28133,27679,19730,30534,4053, 29883,35330,1530, 42863,2628, 22762,19575,31641,28901,28471,13977,11287,22207,24931,31000,12935,6693,
9249, 28359,28097,38364,22282,24139,1311, 25393,23480,33425,42862,35665,1134, 24008,23190,37022,33159,4815, 1707, 35618,10046,4432, 1911, 13380,8933, 589, 18010,
- 2197, 36289,14944,4390, 2886, 32774,16031,40202,38281,18921,27331,6058, 31573,15966,34710,16449,25380,35294,36024,37813,3686, 13912,36821,10491,10979,24129,9839,
+ 2197, 36289,14944,4390, 2886, 32774,16031,40202,38281,18921,27331,6058, 31573,15966,34710,16449,25380,35294,36024,37813,3686, 13912,36821,10491,10979,24129,9839,
14943,20938,20937,25988,34710,33277,36821,38683,40202,40202,19703,30703,42862,42862,42862,28887,36227,28700,18461,21896,9612, 20796,33276,15612,831, 32766,36255,
26108,37080,6224, 18043,42861,38281,20853,40202,15380,23669,6179, 42861,25676,8564, 12980,37924,34710,36581,19445,27392,12094,9460, 12794,26902,12524,5995, 18343,
31089,35777,25856,32906,36681,38840,25669,30583,9994, 33091,8066, 34459,13846,14942,3833, 18188,27339,36260,22087,2240, 926, 42861,16448,27122,34709,6171, 10251,
- 38475,42861,14941,10731,33566,9502, 18913,4106, 2426, 22969,6008, 22662,2601, 7241, 42860,34942,20936,36424,35172,17201,25221,20935,29435,5320, 20270,36820,1172,
- 30975,7827, 19079,16573,27863,3730, 26850,4066, 18991,35500,25286,22173,39044,24845,37210,14468,37516,34179,32992,17200,10726,589, 23766,33276,27338,9640, 1128,
+ 38475,42861,14941,10731,33566,9502, 18913,4106, 2426, 22969,6008, 22662,2601, 7241, 42860,34942,20936,36424,35172,17201,25221,20935,29435,5320, 20270,36820,1172,
+ 30975,7827, 19079,16573,27863,3730, 26850,4066, 18991,35500,25286,22173,39044,24845,37210,14468,37516,34179,32992,17200,10726,589, 23766,33276,27338,9640, 1128,
7562, 39257,16108,39288,5295, 21751,6923, 34808,9369, 16899,33822,934, 7592, 20934,14940,39349,18151,36860,31809,38280,12166,19438,7615, 21175,39234,21815,24017,
17556,10978,19444,17199,37493,4822, 12926,19443,10198,5422, 36806,9592, 35630,16715,17793,35597,11830,18187,18186,34728,34642,8099, 10494,5421, 33070,20380,12498,
40201,36701,11475,17198,14394,33868,36065,34233,26134,1242, 34568,38812,9789, 13836,36993,32210,28498,35012,32804,20933,9862, 37905,28547,37599,9838, 9277, 12925,
- 35627,6041, 11240,33859,13868,38138,14393,14392,14939,9373, 22419,39189,37348,39152,32076,6467, 34542,17822,9136, 38003,5888, 17197,3738, 2425, 7698, 2487, 5398,
- 8208, 7218, 7204, 17196,13867,8932, 5202, 8562, 11954,5307, 4435, 11517,34812,18185,9135, 32800,34140,36470,16320,4821, 3224, 10276,4686, 37046,23046,1514, 321,
+ 35627,6041, 11240,33859,13868,38138,14393,14392,14939,9373, 22419,39189,37348,39152,32076,6467, 34542,17822,9136, 38003,5888, 17197,3738, 2425, 7698, 2487, 5398,
+ 8208, 7218, 7204, 17196,13867,8932, 5202, 8562, 11954,5307, 4435, 11517,34812,18185,9135, 32800,34140,36470,16320,4821, 3224, 10276,4686, 37046,23046,1514, 321,
20932,3170, 12060,3848, 13379,19585,10531,6079, 5504, 3446, 15745,6998, 9837, 25266,12165,883, 12523,6525, 7513, 20931,17195,7826, 10275,15567,37293,28214,34313,
8826, 37150,34452,10493,25362,16319,16318,12522,16027,2434, 1518, 16317,12924,1568, 7714, 15332,11813,25812,19442,5319, 1931, 20930,38411,4728, 37024,5889, 20929,
32812,18618,20928,3083, 28286,3566, 34389,11516,7953, 8931, 13022,20927,13378,11239,1622, 1599, 2611, 2763, 8804, 3256, 8760, 13647,20047,6466, 7228, 35573,39194,
- 15566,20926,33316,35646,19441,17194,3461, 5895, 4547, 12923,36545,17193,10977,14318,21798,37650,34750,14483,18623,30582,29144,20354,7364, 25916,18184,8863, 4,
- 526, 30572,5353, 14861,36820,42860,34019,10168,17837,27231,8877, 27188,30329,21164,35198,6642, 34664,12165,6204, 15927,20925,13377,5615, 28441,9639, 26830,8627,
+ 15566,20926,33316,35646,19441,17194,3461, 5895, 4547, 12923,36545,17193,10977,14318,21798,37650,34750,14483,18623,30582,29144,20354,7364, 25916,18184,8863, 4,
+ 526, 30572,5353, 14861,36820,42860,34019,10168,17837,27231,8877, 27188,30329,21164,35198,6642, 34664,12165,6204, 15927,20925,13377,5615, 28441,9639, 26830,8627,
40201,33933,37764,37168,16316,24190,10712,11515,35227,37015,2682, 17192,29085,39299,20924,18183,37639,36083,2636, 31560,3900, 33257,6187, 38633,33698,39049,33440,
21595,37982,34333,32982,23687,42860,33469,10492,38354,13866,19440,39004,3308, 1552, 14787,9706, 16315,38739,13865,38580,16149,8769, 11829,4345, 18182,6608, 35424,
- 37552,26228,19439,8346, 8930, 10711,33746,5428, 10695,42860,19438,18181,12521,39094,13864,10491,18180,5605, 7476, 3923, 42859,20083,11238,18179,9044, 19437,2112,
+ 37552,26228,19439,8346, 8930, 10711,33746,5428, 10695,42860,19438,18181,12521,39094,13864,10491,18180,5605, 7476, 3923, 42859,20083,11238,18179,9044, 19437,2112,
13543,3013, 35355,26487,6498, 27137,1545, 10797,6736, 20923,3457, 13863,13862,29493,12164,33933,25549,38922,38776,17391,6892, 30657,24580,34713,16314,17694,18852,
20363,35574,15010,34119,24799,36820,20061,10169,22552,12116,5255, 28919,188, 220, 36151,455, 87, 3675, 17555,7085, 34848,37676,19669,38165,11681,37816,14391,
- 20922,565, 9777, 4462, 15565,15564,38706,21093,8973, 6394, 4691, 4498, 34022,32785,20921,13376,31407,42859,9836, 11237,38450,33154,20920,8080, 13809,15974,7265,
- 34146,19436,17191,24459,20919,4517, 11514,19435,6524, 4512, 1396, 4664, 4726, 5685, 38764,37401,6038, 6964, 11828,36544,38280,815, 720, 2472, 1397, 1970, 858,
+ 20922,565, 9777, 4462, 15565,15564,38706,21093,8973, 6394, 4691, 4498, 34022,32785,20921,13376,31407,42859,9836, 11237,38450,33154,20920,8080, 13809,15974,7265,
+ 34146,19436,17191,24459,20919,4517, 11514,19435,6524, 4512, 1396, 4664, 4726, 5685, 38764,37401,6038, 6964, 11828,36544,38280,815, 720, 2472, 1397, 1970, 858,
36562,1539, 36946,18957,12950,27984,38150,16906,5952, 4998, 19434,30351,22143,34987,34527,12966,8483, 19433,1555, 15081,35377,32034,32481,2851, 13018,35946,11827,
- 11513,7904, 21078,33728,14668,12219,36820,34278,10085,24015,6830, 42859,9459, 23252,26098,10045,17190,16313,42859,1358, 11826,32909,23622,15563,20918,9164, 4896,
+ 11513,7904, 21078,33728,14668,12219,36820,34278,10085,24015,6830, 42859,9459, 23252,26098,10045,17190,16313,42859,1358, 11826,32909,23622,15563,20918,9164, 4896,
24299,19432,18481,16731,20917,34713,23199,37775,32993,14352,14071,33041,1078, 25125,475, 36914,3088, 8212, 15022,33751,42858,14390,20916,38280,9458, 34551,13375,
- 2053, 8465, 13369,9760, 30684,319, 15160,6556, 35510,33676,34046,423, 19436,965, 9031, 27167,11956,3365, 25173,28365,1002, 10259,28590,26327,9557, 2326, 2103,
+ 2053, 8465, 13369,9760, 30684,319, 15160,6556, 35510,33676,34046,423, 19436,965, 9031, 27167,11956,3365, 25173,28365,1002, 10259,28590,26327,9557, 2326, 2103,
2616, 3315, 4143, 8586, 8845, 6375, 7200, 9482, 17189,37376,7217, 7309, 15562,34782,3730, 33874,27943,3155, 34124,10274,10273,25276,2070, 34028,21368,9134, 10870,
15561,9835, 17188,16312,998, 18391,17187,27463,2251, 5438, 6315, 38349,37366,17186,8079, 17185,18922,21979,12521,11512,20915,36264,15110,13080,22036,633, 15964,
17383,22870,13374,15137,5233, 748, 36705,27967,3899, 32793,9422, 33116,37035,24619,26346,37189,25271,6766, 27457,2049, 3357, 18311,2353, 38446,8345, 13300,33276,
@@ -15969,30 +15964,30 @@ static const unsigned short Ranks[197839] =
37869,7429, 31512,11511,30426,20293,11138,38605,31958,37866,8331, 2398, 8929, 34245,12997,6023, 38216,20913,35232,42858,37429,36831,12550,12323,11701,907, 32759,
38837,38280,13932,38279,28422,15558,3078, 7050, 38197,8482, 33871,37186,36496,7975, 36220,13861,7825, 12520,19557,26948,321, 20912,29991,28075,12161,5306, 30350,
17184,8475, 4192, 17815,5054, 26202,14388,21574,9638, 21895,33276,1048, 24066,20362,6274, 12922,9133, 8077, 34419,7952, 3234, 10490,2693, 5544, 6684, 31526,17183,
- 15771,9990, 20624,37801,5212, 13860,11825,1153, 12835,10989,42858,34667,37359,14938,17161,34020,13373,25994,6393, 26371,18178,7408, 27796,14522,13343,38317,6891,
+ 15771,9990, 20624,37801,5212, 13860,11825,1153, 12835,10989,42858,34667,37359,14938,17161,34020,13373,25994,6393, 26371,18178,7408, 27796,14522,13343,38317,6891,
17595,20755,33965,7137, 13154,25453,21459,11034,34541,34603,32493,13413,4149, 11668,18620,38851,1769, 18231,38502,20911,535, 26087,6523, 36252,26513,15557,13859,
10027,7968, 7336, 10710,17182,10489,18177,4811, 26507,17802,18614,31197,32835,15556,7512, 7115, 13776,19431,37586,33737,9243, 14704,15881,29345,825, 1421, 36772,
2376, 9176, 1962, 8384, 38002,6386, 3632, 36547,32918,35398,12519,26085,3208, 4177, 39365,7385, 5115, 10976,14540,11199,377, 13973,36496,10975,2509, 12921,27843,
- 8473, 38702,5703, 32907,32299,24777,38547,19343,38224,12920,21736,36477,5972, 22380,1939, 16008,14274,13953,20910,18641,7131, 30411,17695,18176,13681,19430,7713,
+ 8473, 38702,5703, 32907,32299,24777,38547,19343,38224,12920,21736,36477,5972, 22380,1939, 16008,14274,13953,20910,18641,7131, 30411,17695,18176,13681,19430,7713,
32962,12509,37498,20909,13866,34209,3908, 1559, 38279,38682,4045, 33932,35645,42857,28886,1486, 1545, 36819,33932,36447,30581,38128,34709,33627,28767,8212, 36594,
22711,15555,11236,2250, 23730,4399, 18480,15554,9834, 20908,13587,7340, 42857,22710,3224, 35041,12256,38279,33984,37956,16542,38279,11559,33275,27229,25987,19192,
17322,17891,40201,18005,36982,27758,42857,3830, 42857,28927,337, 14491,42856,16030,10709,13372,39107,19429,5736, 4780, 25009,29522,30699,37877,531, 38278,36069,
20907,30580,20906,42856,32392,26431,32852,33004,42856,36819,19702,28885,7504, 15404,1482, 39398,39039,3323, 12379,10458,10488,8211, 10272,10271,13371,19428,22343,
20449,5953, 9327, 5212, 4262, 36829,2822, 15518,35317,33921,15553,23722,9273, 12845,13015,8412, 11510,8623, 8914, 13654,11293,33320,23733,16285,40201,9132, 13370,
- 35701,28929,37054,35645,12518,9180, 37089,34256,20905,28884,36331,36028,37709,974, 33400,27003,37647,31960,641, 4202, 7037, 2463, 13162,9361, 6800, 36187,2026,
- 3701, 16246,26841,32907,5951, 34516,5349, 10974,4243, 8626, 23835,19427,29448,25408,12160,7614, 21557,35992,16310,11824,1826, 22831,2281, 8545, 30550,1356, 5559,
+ 35701,28929,37054,35645,12518,9180, 37089,34256,20905,28884,36331,36028,37709,974, 33400,27003,37647,31960,641, 4202, 7037, 2463, 13162,9361, 6800, 36187,2026,
+ 3701, 16246,26841,32907,5951, 34516,5349, 10974,4243, 8626, 23835,19427,29448,25408,12160,7614, 21557,35992,16310,11824,1826, 22831,2281, 8545, 30550,1356, 5559,
18628,3579, 34359,42856,17898,28816,35494,34607,26442,11859,34709,10487,15233,17303,35856,38651,35224,19426,3361, 16309,28232,5487, 19623,8337, 38278,5431, 24798,
1135, 35646,5604, 4790, 24797,1572, 7034, 42855,19425,42855,10376,37077,42855,1816, 12159,42855,37669,32850,27964,9302, 4683, 2114, 9301, 36134,37957,11792,10044,
14387,3200, 11509,777, 33275,12517,6890, 14386,28064,24990,30491,35119,2986, 5197, 3238, 13366,16482,15846,11305,10309,34932,10043,17181,15304,23668,2702, 23667,
40200,34016,24325,38704,37474,33468,33404,23589,33253,17180,35525,9711, 26358,42854,11160,25523,9847, 30990,16546,38445,2814, 25299,7123, 11802,10973,21517,13575,
- 32896,9456, 11235,3614, 8210, 16308,18175,39255,37199,19424,4201, 38014,35645,35645,40200,1025, 16529,8076, 2722, 38706,7951, 36819,38278,34709,33275,38300,5402,
- 3496, 4699, 19423,33659,4661, 20930,22715,23856,18399,38458,13369,3500, 2885, 5894, 6735, 32750,37540,18174,10972,2989, 19422,8625, 42854,2691, 5108, 12396,8466,
- 8594, 12576,25736,31399,15443,399, 19590,7546, 17476,6157, 10042,3922, 8624, 7216, 5738, 37156,35263,5603, 34233,13368,11234,15552,6156, 14937,13858,1718, 2400,
- 8187, 10041,4316, 4594, 17890,40200,15237,15525,33932,42854,35109,13367,8481, 16302,13660,17164,3549, 33028,8075, 10100,16586,4232, 10158,13991,2037, 18041,9994,
+ 32896,9456, 11235,3614, 8210, 16308,18175,39255,37199,19424,4201, 38014,35645,35645,40200,1025, 16529,8076, 2722, 38706,7951, 36819,38278,34709,33275,38300,5402,
+ 3496, 4699, 19423,33659,4661, 20930,22715,23856,18399,38458,13369,3500, 2885, 5894, 6735, 32750,37540,18174,10972,2989, 19422,8625, 42854,2691, 5108, 12396,8466,
+ 8594, 12576,25736,31399,15443,399, 19590,7546, 17476,6157, 10042,3922, 8624, 7216, 5738, 37156,35263,5603, 34233,13368,11234,15552,6156, 14937,13858,1718, 2400,
+ 8187, 10041,4316, 4594, 17890,40200,15237,15525,33932,42854,35109,13367,8481, 16302,13660,17164,3549, 33028,8075, 10100,16586,4232, 10158,13991,2037, 18041,9994,
35025,2665, 8623, 13510,4088, 1223, 8344, 4546, 3687, 33251,6732, 16833,3962, 2962, 4915, 17330,1653, 22363,35218,8435, 7253, 12105,25139,21426,16572,23152,27672,
1910, 4243, 2438, 14810,20904,37932,4406, 22209,29664,36819,21491,479, 17179,20903,10831,26616,15362,17178,34395,17177,19421,30072,2480, 16307,8343, 1943, 37089,
7202, 444, 5026, 4241, 38191,20842,1469, 4332, 34587,33304,9466, 36687,1311, 8821, 8480, 4616, 12919,2740, 7974, 2249, 16306,3567, 7103, 13120,2173, 2162, 10026,
- 19481,36107,36900,15354,5919, 34512,1805, 20902,16305,10708,38082,6968, 21872,5075, 19773,32978,12162,34986,33990,13554,17620,9336, 21959,25918,6392, 2231, 3397,
+ 19481,36107,36900,15354,5919, 34512,1805, 20902,16305,10708,38082,6968, 21872,5075, 19773,32978,12162,34986,33990,13554,17620,9336, 21959,25918,6392, 2231, 3397,
3294, 4717, 14152,1375, 8768, 8209, 17219,15371,35421,7976, 10826,7091, 19420,14385,9480, 38127,33597,9455, 37924,38832,4200, 34058,5396, 20284,37437,39377,14321,
16304,37051,5966, 8159, 859, 10317,21413,3356, 37056,16251,6167, 2007, 11479,7923, 2880, 35765,17222,26821,34816,35173,33186,37393,20613,2676, 38212,2966, 17151,
22642,11708,6465, 2680, 35643,9454, 6098, 1351, 22531,32978,2437, 17176,16487,27494,15286,35207,25564,1475, 23248,996, 7413, 7032, 1886, 8767, 15041,6645, 32951,
@@ -16001,58 +15996,58 @@ static const unsigned short Ranks[197839] =
10395,33029,8180, 7011, 35230,8074, 35911,36389,18358,10465,36906,29601,18584,33582,34170,6797, 33865,20901,35999,5017, 18173,16021,26578,32286,38706,21433,23058,
23553,16966,38175,6811, 36818,32842,576, 609, 19419,667, 9621, 1631, 9758, 2794, 38024,6921, 35216,19418,12751,2220, 6391, 3652, 36735,11823,3685, 20914,37840,
27053,16302,38301,11233,33108,33161,12058,31813,35645,3495, 1393, 7461, 19417,38973,36694,36816,22636,37597,27247,26690,34025,38842,20225,38995,29788,30347,34131,
- 32918,33962,13268,36445,39185,20900,11822,19074,17810,22288,37079,21084,18577,11815,2720, 17005,37052,14347,29637,33139,23787,38278,20899,32801,38042,8928, 8313,
+ 32918,33962,13268,36445,39185,20900,11822,19074,17810,22288,37079,21084,18577,11815,2720, 17005,37052,14347,29637,33139,23787,38278,20899,32801,38042,8928, 8313,
11103,28098,16031,30981,32955,3592, 10640,1380, 34842,38792,29831,6319, 35245,10022,131, 8324, 34894,38709,29503,20876,24662,38717,2417, 8205, 36519,13346,28434,
- 5447, 33250,8869, 20827,89, 9824, 35858,12158,18172,9589, 6825, 5602, 15057,11781,28599,38480,11150,33546,16959,12483,6607, 25066,38813,13823,34951,39098,5893,
+ 5447, 33250,8869, 20827,89, 9824, 35858,12158,18172,9589, 6825, 5602, 15057,11781,28599,38480,11150,33546,16959,12483,6607, 25066,38813,13823,34951,39098,5893,
2498, 5277, 31610,3515, 7258, 13024,9328, 11945,13134,28357,15335,38277,4578, 34184,18950,19538,36120,33532,5420, 7613, 33021,6390, 3285, 19416,27397,30365,26027,
1481, 2993, 2032, 5383, 6227, 13638,19415,11635,13990,9553, 17792,9020, 2259, 8956, 5780, 17824,33523,33854,34733,9348, 21972,2435, 22736,10679,36392,17636,17490,
37988,19721,37580,37157,38677,11821,34704,31236,15033,4776, 5231, 37258,7568, 8236, 15995,9700, 3159, 26519,36396,29964,7107, 38660,1290, 3698, 34218,27238,12017,
31196,4789, 2646, 10648,37171,17918,34073,38444,34024,10677,11508,8622, 29876,12658,18048,32202,17644,40200,4261, 2505, 17173,7824, 20898,4936, 4086, 6522, 10838,
13713,43, 21475,8927, 12681,10270,16278,13790,8479, 15551,9630, 40199,11410,30081,22919,26608,28399,15855,32230,34317,13704,37651,38037,23962,33516,38422,36785,
- 29603,33648,36532,13569,19414,1319, 31090,38277,16301,39310,8299, 20749,36818,6966, 5558, 16279,4736, 8404, 17779,7049, 1564, 551, 5203, 3828, 1499, 8621, 8819,
+ 29603,33648,36532,13569,19414,1319, 31090,38277,16301,39310,8299, 20749,36818,6966, 5558, 16279,4736, 8404, 17779,7049, 1564, 551, 5203, 3828, 1499, 8621, 8819,
42854,30754,29227,19413,22198,17364,30468,38638,25570,4638, 19412,2553, 9131, 38183,6040, 7950, 19497,10971,10269,20897,33714,34447,5994, 34500,20896,8766, 18454,
- 36818,8478, 31041,14111,26227,37960,20895,17065,3031, 5382, 4000, 10121,6570, 24817,6606, 6289, 14934,19614,36478,29518,35038,35837,14865,36128,8477, 35190,9916,
+ 36818,8478, 31041,14111,26227,37960,20895,17065,3031, 5382, 4000, 10121,6570, 24817,6606, 6289, 14934,19614,36478,29518,35038,35837,14865,36128,8477, 35190,9916,
20132,8202, 18586,1512, 7853, 6283, 36778,5137, 2710, 11232,3904, 7496, 12451,30207,4614, 36591,17975,12288,3907, 27384,20208,33752,25231,8138, 6696, 19114,36019,
- 9679, 24424,32492,32774,16331,8405, 7682, 23081,33662,19997,27772,38881,37672,4110, 21932,3939, 37835,3109, 3955, 10049,2681, 1230, 35279,3469, 5901, 3358, 5754,
- 34646,7383, 16545,1564, 3747, 5273, 3266, 16988,36514,20943,7784, 19411,13366,35035,5892, 35744,38537,9126, 13857,25186,2491, 37738,1810, 7886, 3423, 1231, 953,
+ 9679, 24424,32492,32774,16331,8405, 7682, 23081,33662,19997,27772,38881,37672,4110, 21932,3939, 37835,3109, 3955, 10049,2681, 1230, 35279,3469, 5901, 3358, 5754,
+ 34646,7383, 16545,1564, 3747, 5273, 3266, 16988,36514,20943,7784, 19411,13366,35035,5892, 35744,38537,9126, 13857,25186,2491, 37738,1810, 7886, 3423, 1231, 953,
36475,35916,6775, 2498, 17172,15694,34731,11820,13365,9637, 9095, 20884,15959,24812,10707,36008,30420,2622, 491, 2071, 33971,2423, 1873, 32992,10970,10953,27383,
18258,31265,23434,33275,26015,36818,42853,33274,33932,27337,17432,24136,37878,38277,21320,17956,8895, 38277,16481,10906,35644,983, 34155,33032,38276,20888,38948,
3300, 30045,3742, 1024, 1093, 33800,25029,23932,12674,35821,8631, 38119,13167,38186,19579,19328,23197,32811,5545, 22857,40199,22818,37569,9179, 6544, 28525,42853,
- 10969,38276,18171,35710,30579,1728, 21228,40199,40199,9707, 33881,15931,15572,19410,30872,35550,7086, 34894,33448,32166,19054,11414,36172,23870,34993,38235,9846,
+ 10969,38276,18171,35710,30579,1728, 21228,40199,40199,9707, 33881,15931,15572,19410,30872,35550,7086, 34894,33448,32166,19054,11414,36172,23870,34993,38235,9846,
36620,37879,38997,42853,36924,36224,35644,36133,3200, 22639,18927,24042,17950,28224,33914,10883,30861,34056,13697,311, 38276,38598,26428,15236,3156, 30740,38323,
- 7866, 22086,954, 20789,2566, 12470,13364,35938,35502,1718, 3101, 13556,33703,37112,10968,36381,2198, 38053,34708,36375,27325,556, 5918, 31106,1631, 22658,76,
+ 7866, 22086,954, 20789,2566, 12470,13364,35938,35502,1718, 3101, 13556,33703,37112,10968,36381,2198, 38053,34708,36375,27325,556, 5918, 31106,1631, 22658,76,
26077,39278,42853,40198,36567,18479,25075,36070,36022,18813,34130,19701,36817,38951,38276,8252, 36510,19799,15186,35985,22526,42852,40198,1071, 23739,24772,32788,
26650,40198,4178, 16880,318, 24392,731, 2041, 23547,29364,7767, 31368,4416, 33064,3955, 20686,5072, 38275,1903, 35644,40198,16300,17378,12176,25986,250, 34708,
1930, 27168,22097,36901,15042,20519,20561,20888,998, 37145,18748,37036,20186,26858,11819,25469,38106,29295,16834,15550,24887,24153,30366,10722,34081,8160, 22429,
29266,2655, 5820, 17171,8765, 23166,31790,10356,4946, 545, 7481, 18236,35109,38475,18195,37492,13238,16196,3892, 19726,36862,18549,22676,33944,13846,28140,28247,
12077,3367, 32925,8168, 35401,24513,17600,3892, 34216,17170,21706,23771,20894,38273,36616,13612,16299,4572, 9946, 20893,11950,22406,38880,4040, 38314,35263,12516,
- 35448,10268,20892,18170,4344, 38766,11830,15549,3341, 20891,37763,19671,11231,33358,16298,17169,37427,17168,12562,4334, 16297,8476, 28802,7949, 7407, 16296,5254,
+ 35448,10268,20892,18170,4344, 38766,11830,15549,3341, 20891,37763,19671,11231,33358,16298,17169,37427,17168,12562,4334, 16297,8476, 28802,7949, 7407, 16296,5254,
13707,23875,35320,5641, 37273,36817,32295,33274,38051,32921,5844, 35644,414, 2964, 359, 25308,27232,609, 37021,40197,6, 32859,25709,21520,2701, 255, 15064,
42852,32491,2086, 40197,3343, 22641,9361, 36858,306, 22829,15548,1092, 926, 17454,577, 37137,33931,38275,40197,10213,42852,3585, 34708,18240,16095,40197,42852,
24489,543, 19067,856, 32490,34112,19874,42851,12766,38275,38275,22709,32795,33315,25862,35252,33636,30427,36817,2373, 24796,2215, 26353,40196,33274,4090, 36817,
38274,37446,34332,35643,22898,21398,33872,3212, 36058,29999,37507,26509,26928,42851,12659,16868,1877, 36816,36816,36628,42851,42851,6121, 33274,27812,18823,23666,
11351,30578,16029,19715,36816,35613,32489,21894,35442,8820, 17139,26531,16086,10112,36816,42850,42850,5701, 29426,21893,5279, 19370,29813,14515,19053,35871,21109,
16447,37322,32743,16879,10513,36815,7993, 24795,36815,32331,12186,26962,11048,36219,706, 23801,14614,34158,2700, 603, 9387, 38437,42850,33084,32059,40196,36815,
- 2516, 40196,22116,10995,24414,20379,10015,2292, 9599, 16172,25962,1693, 39292,31468,9291, 17519,33434,33398,246, 10647,3610, 5998, 709, 35643,7417, 21664,3213,
+ 2516, 40196,22116,10995,24414,20379,10015,2292, 9599, 16172,25962,1693, 39292,31468,9291, 17519,33434,33398,246, 10647,3610, 5998, 709, 35643,7417, 21664,3213,
40196,14514,5010, 11722,12714,32566,7278, 10746,22051,29883,37866,375, 5953, 20506,35066,30313,33128,33473,39229,143, 28883,14384,5183, 13405,2949, 38139,39318,
23260,15531,23438,6734, 2620, 18489,15295,4753, 35221,30359,21933,37913,2188, 35643,17635,29499,36213,35236,17548,19523,35871,31792,12261,13380,36668,2572, 34952,
- 39174,36063,33350,38710,37460,38649,34590,9793, 9403, 19267,19493,37994,19957,36861,14558,12518,353, 1671, 9362, 15269,10295,40195,40195,33931,931, 25653,9764,
- 12520,590, 15547,33872,34199,31944,28413,36815,25048,23937,11655,33725,696, 13631,921, 20986,24788,658, 5628, 35503,35520,31574,3364, 38032,23090,32477,5662,
+ 39174,36063,33350,38710,37460,38649,34590,9793, 9403, 19267,19493,37994,19957,36861,14558,12518,353, 1671, 9362, 15269,10295,40195,40195,33931,931, 25653,9764,
+ 12520,590, 15547,33872,34199,31944,28413,36815,25048,23937,11655,33725,696, 13631,921, 20986,24788,658, 5628, 35503,35520,31574,3364, 38032,23090,32477,5662,
14045,10658,29455,22185,42850,36828,19052,36304,16513,32958,12688,9825, 17214,6, 1156, 409, 22, 10521,36761,20127,1058, 23337,560, 18830,12560,9674, 35535,
- 5810, 6013, 31162,14564,36357,34827,9829, 32333,21334,12890,687, 13737,35742,36725,35643,33774,28329,4895, 33715,8926, 5993, 6155, 38809,29052,15007,2473, 1703,
+ 5810, 6013, 31162,14564,36357,34827,9829, 32333,21334,12890,687, 13737,35742,36725,35643,33774,28329,4895, 33715,8926, 5993, 6155, 38809,29052,15007,2473, 1703,
35900,38618,25443,10137,15378,16163,34577,9671, 10078,35347,13471,33380,5786, 38162,5704, 38274,42849,8251, 38634,20157,36814,29, 11698,29195,581, 4181, 31508,
- 30259,33048,16859,30577,12684,38531,12918,37102,20893,40195,9833, 4081, 33931,26554,35362,40195,4049, 21101,25678,36909,10442,21064,33573,35642,26826,42849,7454,
+ 30259,33048,16859,30577,12684,38531,12918,37102,20893,40195,9833, 4081, 33931,26554,35362,40195,4049, 21101,25678,36909,10442,21064,33573,35642,26826,42849,7454,
38315,28299,36814,25985,38857,38274,38274,20890,22671,34304,36814,34873,532, 250, 14466,25652,32931,19230,2397, 36814,42849,40194,39358,8395, 36397,32932,37352,
17964,32965,14987,23192,32488,1775, 2350, 18047,14480,34609,27830,23665,14403,33931,36516,34699,42849,31796,35642,2786, 42848,30576,26052,12519,9993, 40194,23059,
1393, 32856,3571, 12031,3441, 28882,17344,37686,1043, 1034, 28521,6020, 14933,23664,40194,1199, 11887,17843,14383,740, 32208,34068,42848,35678,655, 35841,34195,
34593,34708,16446,26251,40194,33273,12866,40193,25984,11152,15634,9759, 183, 10142,38273,33930,38273,24794,42848,42848,24976,20289,36634,16462,31506,22665,18768,
16295,18458,39039,20886,35236,22802,12869,37074,32936,10780,42847,7508, 42847,33930,35642,38273,21108,33389,38815,3101, 34618,11312,35122,38845,37836,2905, 39392,
9056, 38273,20707,32062,22680,39400,33260,19051,20889,16878,10429,35089,5084, 12157,14932,16977,13862,7845, 36684,37762,13117,23228,11958,14167,34431,21876,26261,
- 29182,14216,18926,24281,28948,7379, 23481,26675,34525,37064,20609,36732,26359,38519,42847,4820, 20090,40193,17204,42847,19862,27393,42846,9453, 18706,19176,5525,
+ 29182,14216,18926,24281,28948,7379, 23481,26675,34525,37064,20609,36732,26359,38519,42847,4820, 20090,40193,17204,42847,19862,27393,42846,9453, 18706,19176,5525,
17167,20887,29096,39006,42846,20886,28881,22122,24221,3938, 34151,40193,37537,39065,36813,35995,18478,4844, 40193,29863,2504, 35925,38272,2550, 25332,14382,36732,
1709, 37531,36048,33273,40192,15546,22871,2904, 36912,33930,6930, 38375,2741, 1581, 42846,985, 53, 14916,8609, 18611,13365,12625,10126,13045,30845,29898,26875,
- 14736,28475,26388,31386,23461,40192,1615, 13856,22426,21137,280, 4239, 30320,14931,32953,13961,19041,32296,8874, 7948, 9525, 1855, 38272,3431, 8836, 14930,1227,
- 36430,5734, 42846,27537,26036,31048,35898,23260,16294,2082, 219, 28570,6398, 28637,25066,26699,38272,16293,9130, 40192,28880,871, 4002, 27968,26016,7929, 1242,
+ 14736,28475,26388,31386,23461,40192,1615, 13856,22426,21137,280, 4239, 30320,14931,32953,13961,19041,32296,8874, 7948, 9525, 1855, 38272,3431, 8836, 14930,1227,
+ 36430,5734, 42846,27537,26036,31048,35898,23260,16294,2082, 219, 28570,6398, 28637,25066,26699,38272,16293,9130, 40192,28880,871, 4002, 27968,26016,7929, 1242,
25757,40192,35642,42845,40191,38272,28879,3409, 20601,30124,3289, 34833,20885,33094,15844,2262, 42845,9747, 12, 1831, 10653,31720,3199, 27529,27940,23659,14381,
4554, 38271,21194,12262,19457,603, 38250,7764, 119, 2459, 18393,19094,15079,30051,17127,36813,7586, 30735,25664,31514,9474, 21529,35641,6575, 40191,42845,38271,
212, 1542, 33930,42845,671, 13852,2908, 34707,19700,36813,17538,30575,34707,19699,14380,2372, 37223,36813,1228, 12740,1186, 86, 372, 2627, 2425, 36812,19698,
@@ -16066,10 +16061,10 @@ static const unsigned short Ranks[197839] =
36811,42841,12030,38269,34625,15288,16306,23853,36220,36353,10431,20188,35740,16292,7673, 2626, 38563,32819,21747,36453,2903, 11013,42841,37662,32484,34705,14928,
42841,30203,2219, 17141,3737, 757, 18648,26534,1166, 8843, 6486, 32860,37806,486, 22659,33867,35301,704, 42840,34735,12345,13771,26608,30734,648, 3220, 35535,
677, 38900,42840,4705, 1, 22241,2817, 14526,799, 26677,13197,16205,4117, 27519,29726,7798, 25078,12293,20117,26529,16088,25524,15387,14035,31985,31019,15621,
- 27146,8078, 1999, 2424, 12794,14705,9004, 27384,25394,27938,27450,32717,20017,28345,25345,1859, 13119,18054,14179,4603, 42840,33057,9864, 9159, 24516,27504,861,
- 42840,711, 21453,33098,146, 2854, 31652,13941,32946,31290,13280,11116,4085, 3502, 20455,1513, 40190,30573,42839,36811,35071,831, 29000,3562, 1705, 30794,1684,
+ 27146,8078, 1999, 2424, 12794,14705,9004, 27384,25394,27938,27450,32717,20017,28345,25345,1859, 13119,18054,14179,4603, 42840,33057,9864, 9159, 24516,27504,861,
+ 42840,711, 21453,33098,146, 2854, 31652,13941,32946,31290,13280,11116,4085, 3502, 20455,1513, 40190,30573,42839,36811,35071,831, 29000,3562, 1705, 30794,1684,
10267,3134, 9128, 8042, 30947,33900,35513,38269,8924, 34705,30958,23160,26131,29101,40189,38129,332, 11868,25731,430, 22399,36810,1842, 23663,38104,25036,29392,
- 20378,9445, 2661, 21144,40189,17889,32483,36810,40189,10441,35640,11350,34705,35640,36810,30572,40189,77, 3287, 16291,19049,32482,36810,40188,2740, 1347, 4616,
+ 20378,9445, 2661, 21144,40189,17889,32483,36810,40189,10441,35640,11350,34705,35640,36810,30572,40189,77, 3287, 16291,19049,32482,36810,40188,2740, 1347, 4616,
25983,1045, 906, 2999, 518, 1822, 2779, 2064, 27443,45, 7608, 2202, 25151,2144, 2002, 541, 7855, 1790, 25032,10628,34551,37955,14927,38269,36809,3501, 28878,
66, 22884,33273,38269,12255,329, 3362, 9845, 34705,32010,1372, 566, 19409,411, 33273,2784, 25982,27340,34745,25981,2298, 3876, 19408,14926,38268,28877,36809,
36809,9442, 38268,14925,20882,24425,42839,35640,16921,28876,3856, 2484, 837, 25060,40188,28875,2739, 42839,1270, 40188,35669,15235,880, 32931,34704,42839,28874,
@@ -16078,10 +16073,10 @@ static const unsigned short Ranks[197839] =
3584, 42837,21107,9572, 42837,461, 10365,29234,7173, 10706,448, 18844,35554,36808,35639,8341, 38146,17887,35639,991, 3660, 7197, 38267,27334,5682, 40186,24792,
18476,2988, 5730, 40186,40186,34545,1255, 8143, 23662,42837,35639,30714,14000,6573, 35168,42837,37116,25978,35638,42836,30569,211, 8776, 14907,40186,42836,42836,
42836,33929,40185,38267,30384,32481,35638,13855,2110, 20800,25035,34749,23453,36389,4231, 20881,42835,5957, 34762,12765,40185,14513,33484,42835,28750,35826,36808,
- 915, 33678,27333,40185,40185,42835,16211,22443,38267,10619,21891,21703,35638,10440,23661,26200,32480,768, 34703,1907, 16445,19696,682, 32479,42835,17166,492,
+ 915, 33678,27333,40185,40185,42835,16211,22443,38267,10619,21891,21703,35638,10440,23661,26200,32480,768, 34703,1907, 16445,19696,682, 32479,42835,17166,492,
25324,32478,35738,8923, 38267,20581,36634,40184,25977,19695,36808,588, 40184,33928,38266,27599,42834,36875,8475, 34642,42834,17886,38266,11349,38266,42834,42834,
- 42833,38266,27332,35390,42833,35638,27662,929, 25023,21275,182, 32782,2104, 29297,17612,26215,18714,24880,28562,38267,17543,24, 32898,1331, 25292,15413,8310,
- 23602,14130,23746,31547,18316,19327,18386,29598,29838,11778,18008,15690,27116,30805,25857,28137,32859,16856,17416,18035,16995,7348, 17393,32905,18065,11439,169,
+ 42833,38266,27332,35390,42833,35638,27662,929, 25023,21275,182, 32782,2104, 29297,17612,26215,18714,24880,28562,38267,17543,24, 32898,1331, 25292,15413,8310,
+ 23602,14130,23746,31547,18316,19327,18386,29598,29838,11778,18008,15690,27116,30805,25857,28137,32859,16856,17416,18035,16995,7348, 17393,32905,18065,11439,169,
29887,7282, 16694,29713,28873,35637,40184,33497,4179, 21691,33928,42833,42833,40184,36448,34156,34703,35947,30022,39156,38353,32584,36579,23076,33237,32477,40183,
35637,42832,28330,13854,34450,1718, 33685,17165,20880,24791,6508, 36807,33272,37276,30568,36807,40183,34703,38265,38265,42832,33928,2421, 19011,33488,13624,25093,
9297, 38265,11204,36807,42832,17251,5203, 33198,40183,27331,42832,32497,35637,37189,36856,7092, 220, 24432,42831,34739,18169,36803,3591, 33169,26160,17885,25542,
@@ -16091,13 +16086,13 @@ static const unsigned short Ranks[197839] =
1112, 26606,15052,12968,8208, 13594,15010,33079,2227, 24275,22541,31951,35575,5606, 8500, 18427,19781,17196,37876,18652,18308,28446,8296, 38633,22736,30425,17615,
23091,32256,32943,12013,24126,8220, 20879,871, 34334,2634, 58, 1297, 40182,7507, 21890,40182,36807,42831,1484, 2902, 2371, 16444,3100, 1414, 189, 33927,32475,
2948, 723, 613, 28871,7339, 13126,29582,35637,2818, 1009, 198, 40182,30427,3736, 355, 454, 644, 42831,32474,15716,42830,12518,42830,3357, 19048,36806,25976,
- 17633,40182,6464, 36949,34268,38264,38790,20720,27328,42830,42830,42829,792, 26953,42829,33545,15418,20878,34703,2136, 28118,33054,32431,31976,38264,6952, 9414,
+ 17633,40182,6464, 36949,34268,38264,38790,20720,27328,42830,42830,42829,792, 26953,42829,33545,15418,20878,34703,2136, 28118,33054,32431,31976,38264,6952, 9414,
10233,27860,37071,22708,34702,31565,39403,36806,10967,16290,28429,1525, 18102,24963,16346,10351,5891, 6692, 21338,12003,38752,36347,18168,5360, 37491,16289,20877,
37809,16288,31767,28335,9850, 1501, 16287,26689,10787,13363,117, 14931,25347,19195,19248,13262,30522,5053, 15636,24790,821, 3141, 19047,1372, 3984, 411, 32780,
33926,29502,115, 24843,16876,26752,3583, 42829,38264,8718, 17146,18475,30, 6600, 26724,8045, 38264,1098, 36806,8586, 530, 42829,33272,25975,32768,12916,28870,
24415,23407,33214,40181,17341,36806,18090,5670, 35125,29989,17449,40181,40181,14952,36809,42828,42828,36654,7603, 37694,38263,33815,12764,38263,12254,5601, 38263,
24789,19046,27296,18167,34702,42828,40181,9441, 5536, 14002,3566, 9657, 3607, 5275, 12044,7136, 20876,42828,36805,32473,20087,35636,32904,37380,38263,35636,37048,
- 18407,40180,4619, 36535,36805,42827,33272,11008,42827,462, 29805,1004, 42827,3361, 35636,38262,27327,42827,33927,40180,24788,2738, 3099, 2026, 1444, 1963, 3659,
+ 18407,40180,4619, 36535,36805,42827,33272,11008,42827,462, 29805,1004, 42827,3361, 35636,38262,27327,42827,33927,40180,24788,2738, 3099, 2026, 1444, 1963, 3659,
35636,2168, 2660, 537, 1361, 24544,2316, 38262,2123, 40180,36805,24787,36805,11791,79, 15234,20875,4978, 17855,3012, 32502,432, 8269, 29719,31544,5091, 27969,
32472,2201, 3429, 40180,11348,22707,33272,1512, 12517,1461, 260, 3922, 11628,6, 6025, 1779, 33271,3154, 14169,247, 40179,21106,42826,38262,276, 2038, 15612,
17585,11404,16858,24069,13144,27571,11714,31214,33134,19406,12605,42826,40179,27326,9478, 40179,235, 31983,3609, 34702,36984,38262,10786,35635,38261,36804,24786,
@@ -16114,42 +16109,42 @@ static const unsigned short Ranks[197839] =
23053,30024,7759, 2258, 2703, 3263, 804, 37398,38464,30564,15268,1495, 3604, 33270,33270,21889,34700,33656,16285,13279,29097,21311,17602,26774,33692,21648,42823,
39161,11715,19635,32874,25703,42823,26111,30787,27787,11557,38260,24767,37793,7422, 36191,7146, 34303,3233, 33301,33385,9721, 13034,33241,38580,3603, 38782,36803,
22619,36584,18500,37066,38774,9415, 30884,13853,9635, 6605, 31733,18165,18375,7196, 21015,3612, 32970,11345,21104,10483,20872,31902,14377,17164,10009,26754,32175,
- 8033, 8723, 37122,25945,33842,22924,35488,35912,19694,4525, 16876,38260,159, 7947, 553, 15981,23660,27147,14376,148, 9631, 11238,22804,24672,6296, 1601, 3816,
+ 8033, 8723, 37122,25945,33842,22924,35488,35912,19694,4525, 16876,38260,159, 7947, 553, 15981,23660,27147,14376,148, 9631, 11238,22804,24672,6296, 1601, 3816,
26140,24750,25683,1567, 26201,22391,11898,20659,22602,35508,13554,250, 36803,27322,35634,5777, 33926,10057,5016, 36803,12915,13275,15668,29264,15175,36186,15651,
- 14168,32789,240, 20871,15543,40178,32610,97, 1832, 32910,22556,9006, 10495,32661,27877,20910,22949,13201,18461,15819,14203,15216,18754,18962,28531,28724,5696,
+ 14168,32789,240, 20871,15543,40178,32610,97, 1832, 32910,22556,9006, 10495,32661,27877,20910,22949,13201,18461,15819,14203,15216,18754,18962,28531,28724,5696,
26731,14921,2167, 2081, 20969,35833,19514,27321,36844,38940,33926,18474,3301, 3788, 5966, 18164,34631,42823,37925,34867,37248,37872,35453,36462,24461,36803,36802,
18473,6393, 32524,14138,3735, 32876,32470,36873,29797,33925,4287, 10706,9125, 34856,3353, 36802,42823,42822,40177,36802,30310,12843,36802,40177,23251,26458,10617,
42822,34453,23659,32957,12909,29165,24107,5381, 10266,8829, 36599,11528,34387,10966,25974,32992,33750,11699,30347,32901,32797,32954,31851,23482,30105,10385,12089,
13373,17950,32966,21443,23191,25259,27131,21417,12577,24212,19891,32912,32902,33086,4847, 3077, 22941,12421,19150,21253,11385,27522,15130,16066,19762,20364,12648,
- 37539,17918,33669,23836,26312,246, 15074,37839,6925, 32469,14375,21823,62, 1876, 2997, 36801,1423, 42822,164, 317, 23156,147, 27346,30706,2736, 33925,6429,
+ 37539,17918,33669,23836,26312,246, 15074,37839,6925, 32469,14375,21823,62, 1876, 2997, 36801,1423, 42822,164, 317, 23156,147, 27346,30706,2736, 33925,6429,
22356,16505,496, 3499, 25973,219, 17624,12797,39106,2669, 24784,32772,18472,17163,1547, 18158,30475,18163,21888,34662,38819,579, 38260,13288,22705,30563,34700,
5028, 13527,33925,3292, 13362,20870,8205, 27597,17162,35633,39016,9183, 2122, 42822,15912,328, 626, 32979,33925,32468,35373,37068,36801,378, 51, 4498, 32973,
2396, 18365,7924, 4320, 20311,11955,33270,34700,5093, 18448,42821,129, 2342, 1210, 1436, 42821,5202, 17901,28869,36163,38259,42821,22704,36801,13361,15913,32919,
- 22683,532, 1716, 3360, 276, 15655,18299,22615,32927,32455,23448,28658,24783,4894, 28995,42821,37018,12513,37224,6153, 36215,35475,16284,42820,5154, 30802,2624,
+ 22683,532, 1716, 3360, 276, 15655,18299,22615,32927,32455,23448,28658,24783,4894, 28995,42821,37018,12513,37224,6153, 36215,35475,16284,42820,5154, 30802,2624,
33818,40177,3127, 461, 13723,3219, 2563, 6128, 24782,33270,24781,38259,33924,8827, 3223, 42820,5589, 10325,27764,42820,36801,30562,2, 19026,5875, 26455,11760,
- 8098, 4736, 10421,30622,32074,29864,20286,22587,32375,18434,1725, 22119,22686,24461,16887,27630,17949,2817, 22991,314, 606, 2751, 30630,32176,4778, 24003,3940,
+ 8098, 4736, 10421,30622,32074,29864,20286,22587,32375,18434,1725, 22119,22686,24461,16887,27630,17949,2817, 22991,314, 606, 2751, 30630,32176,4778, 24003,3940,
8899, 4857, 24780,1715, 3098, 4474, 35633,40177,681, 30561,42820,42819,30812,38259,32861,10877,9649, 1197, 251, 25358,32395,95, 4198, 28957,5420, 14380,17419,
15995,22784,24330,19693,32975,12526,538, 37606,5083, 27320,40176,3286, 22824,12907,2, 4189, 16197,22789,29111,34264,22703,37847,32467,199, 42819,4657, 12676,
42819,22511,24355,9458, 35065,9440, 1821, 33269,3734, 747, 311, 1321, 36495,26621,13851,1638, 3556, 1097, 16283,36800,3872, 5640, 26314,20869,38065,14953,14255,
24388,31658,32466,759, 13664,34700,883, 2787, 22424,13743,23399,33014,18516,13234,15178,24475,33038,30702,21797,2340, 1839, 20868,42819,12155,34699,1783, 12919,
31872,37369,2623, 1520, 590, 42818,25972,25365,37194,16027,2062, 12512,35207,7763, 42818,8474, 3153, 36800,25971,14920,3081, 30560,13852,12253,27319,42818,40176,
- 1524, 25148,30880,19404,8073, 13274,2782, 1674, 33924,5157, 42818,33269,27021,32196,152, 2515, 804, 32850,28868,673, 22702,29654,36800,6469, 55, 10982,329,
+ 1524, 25148,30880,19404,8073, 13274,2782, 1674, 33924,5157, 42818,33269,27021,32196,152, 2515, 804, 32850,28868,673, 22702,29654,36800,6469, 55, 10982,329,
7251, 33924,33269,40176,42817,19403,2996, 1978, 2025, 4, 3491, 32170,25280,19303,38217,14374,36800,10860,20867,37776,6477, 3658, 36457,40176,40175,38806,35633,
36799,581, 3097, 25970,25969,26936,1630, 1342, 35633,4353, 19017,29976,14918,19374,22130,28844,38919,36224,10438,15457,38259,13466,33183,34574,24867,16426,11683,
32965,34260,20268,38258,21103,24891,33924,7585, 33269,35290,18075,36322,3555, 38622,16443,32, 30333,16644,1821, 29348,15605,11593,17742,24713,5829, 27239,16568,
- 195, 24779,32791,20778,26566,30490,20459,24316,33888,9275, 34749,13675,38258,14859,17560,19402,34484,42817,21887,896, 42817,15542,8457, 36799,24074,16363,168,
- 23757,32023,13210,1487, 3459, 31371,40175,25422,32189,23441,38745,34427,36799,42817,40175,19044,35589,36796,37324,13082,28, 19731,23241,32979,22167,39188,712,
- 841, 20267,453, 3428, 40175,27592,19107,10631,9026, 2024, 10460,6631, 9, 3975, 15497,26806,17158,23857,29118,3997, 1450, 121, 38258,32960,10966,38258,6178,
+ 195, 24779,32791,20778,26566,30490,20459,24316,33888,9275, 34749,13675,38258,14859,17560,19402,34484,42817,21887,896, 42817,15542,8457, 36799,24074,16363,168,
+ 23757,32023,13210,1487, 3459, 31371,40175,25422,32189,23441,38745,34427,36799,42817,40175,19044,35589,36796,37324,13082,28, 19731,23241,32979,22167,39188,712,
+ 841, 20267,453, 3428, 40175,27592,19107,10631,9026, 2024, 10460,6631, 9, 3975, 15497,26806,17158,23857,29118,3997, 1450, 121, 38258,32960,10966,38258,6178,
12864,1212, 7506, 383, 16748,25038,31335,10785,18966,40174,23120,4708, 38, 26229,16803,31711,2631, 28187,28116,9344, 30781,25667,13496,30494,22714,28479,30562,
- 26032,32274,753, 31901,42816,40174,513, 16240,26482,38257,13594,38635,4259, 2249, 957, 2781, 38107,33516,13837,28867,24734,35632,6288, 40174,40174,20866,639,
+ 26032,32274,753, 31901,42816,40174,513, 16240,26482,38257,13594,38635,4259, 2249, 957, 2781, 38107,33516,13837,28867,24734,35632,6288, 40174,40174,20866,639,
35632,35860,42816,42816,18162,6453, 25493,35634,40173,35632,8184, 9451, 24779,9178, 887, 39215,2704, 1573, 10108,3135, 3211, 38257,27318,1874, 26284,15879,31223,
- 15778,34645,7178, 42816,35404,18161,32304,3427, 18449,32465,37029,35379,21102,38148,42815,12511,31678,30405,36799,1232, 36940,33923,7762, 16026,15023,24916,227,
+ 15778,34645,7178, 42816,35404,18161,32304,3427, 18449,32465,37029,35379,21102,38148,42815,12511,31678,30405,36799,1232, 36940,33923,7762, 16026,15023,24916,227,
15956,3359, 11347,49, 9714, 1389, 2096, 36113,8103, 34347,42815,720, 21101,42815,19043,5891, 9977, 7946, 6770, 34495,38444,35765,8577, 35814,40173,16304,12029,
- 30559,19687,23348,25115,14248,39194,1377, 13688,29040,1842, 18059,26295,32830,4212, 27258,20152,29707,39001,16282,19744,19890,10515,40173,52, 354, 20155,9383,
+ 30559,19687,23348,25115,14248,39194,1377, 13688,29040,1842, 18059,26295,32830,4212, 27258,20152,29707,39001,16282,19744,19890,10515,40173,52, 354, 20155,9383,
26780,30326,18373,34135,42815,17398,135, 8625, 29343,22185,20670,28431,21886,21100,581, 40173,38257,16999,42814,32819,25968,42814,35973,33923,40172,35632,32838,
- 35164,3864, 34557,35826,36798,42814,42814,36798,35746,19042,28866,34550,35253,8073, 25111,34106,4400, 6733, 1541, 919, 16680,24413,36071,18878,711, 4966, 4893,
+ 35164,3864, 34557,35826,36798,42814,42814,36798,35746,19042,28866,34550,35253,8073, 25111,34106,4400, 6733, 1541, 919, 16680,24413,36071,18878,711, 4966, 4893,
16281,19516,2190, 26493,2460, 1744, 5177, 8922, 942, 28502,28865,2687, 35177,5279, 29404,1789, 29703,64, 3951, 6344, 13105,16442,764, 69, 40172,16437,17882,
- 28864,42813,36798,42813,35631,36798,42813,11299,12252,34699,40172,35838,38257,33019,37644,2426, 20484,39163,19735,20687,12914,9124, 22863,33835,7047, 11245,5416,
+ 28864,42813,36798,42813,35631,36798,42813,11299,12252,34699,40172,35838,38257,33019,37644,2426, 20484,39163,19735,20687,12914,9124, 22863,33835,7047, 11245,5416,
37710,36832,33923,11817,9450, 28812,22893,36797,16025,34937,10616,34699,35886,1159, 13138,12755,30667,32251,11816,20239,13166,8921, 16659,4085, 13650,33268,16016,
8473, 39380,14654,29254,20242,29050,27541,20865,13360,6226, 28863,42813,30538,27319,35631,38256,3218, 2451, 27188,40172,3217, 19401,724, 1264, 89, 5975, 17245,
31543,254, 16254,790, 32629,2659, 1756, 1178, 768, 10293,39076,24778,26357,22021,52, 3806, 27685,33015,16633,3285, 16729,4116, 2370, 11609,870, 1733, 30117,
@@ -16161,8 +16156,8 @@ static const unsigned short Ranks[197839] =
21371,28250,6143, 16875,5963, 35193,27170,2514, 29953,17503,38256,19399,1933, 34698,9992, 12632,42812,16280,24285,4397, 8472, 16441,12251,5583, 18960,3498, 34284,
15541,9332, 7612, 42811,33259,33922,35324,18159,7541, 27152,38987,21099,36753,17219,21098,20878,523, 5580, 6235, 33219,34207,10597,6841, 26643,25967,34697,28861,
34697,6050, 42811,20815,31833,38256,34697,24776,40170,11900,16440,30557,33922,38865,9818, 9708, 12250,40170,33268,33922,28587,27316,33921,20143,30006,12154,36796,
- 35578,38256,42811,38255,10344,22775,40170,2496, 15985,5772, 8683, 8366, 38362,15542,23658,42811,33268,36269,42810,20503,7945, 9448, 42810,40170,1303, 27204,4084,
- 35853,10139,36796,26793,37503,15540,16, 3467, 2980, 27583,12039,3152, 42810,40169,1632, 32966,36796,11257,22701,25391,15503,17587,5981, 42810,20785,563, 5654,
+ 35578,38256,42811,38255,10344,22775,40170,2496, 15985,5772, 8683, 8366, 38362,15542,23658,42811,33268,36269,42810,20503,7945, 9448, 42810,40170,1303, 27204,4084,
+ 35853,10139,36796,26793,37503,15540,16, 3467, 2980, 27583,12039,3152, 42810,40169,1632, 32966,36796,11257,22701,25391,15503,17587,5981, 42810,20785,563, 5654,
26289,6678, 32071,34865,32528,36342,10040,37770,7364, 24417,4716, 7823, 3004, 11230,56, 23021,2192, 22041,15763,9839, 24382,30287,32939,31343,961, 29523,19246,
6977, 630, 25092,35630,11526,16439,40169,9439, 33268,27087,23027,38255,1050, 28524,32988,20282,27103,3720, 14746,37615,16892,10912,20374,35199,37660,2142, 36795,
30567,32990,35630,17948,26872,35431,3798, 8797, 11379,19897,36230,582, 36795,20864,8763, 26019,19672,36356,35085,19273,38939,40169,22383,38288,30691,24221,34870,
@@ -16187,7 +16182,7 @@ static const unsigned short Ranks[197839] =
38245,34695,33265,14167,16041,19395,34694,40162,40162,33315,37043,36001,24850,36791,35624,36791,37543,33265,33796,33920,27552,40162,30551,25959,36791,32457,38245,
40161,28856,40161,33919,32807,33919,22155,40161,40161,36084,40160,38245,34694,32839,15065,34781,36522,21177,3358, 2622, 12484,27311,28855,17339,27686,36790,28882,
13911,7944, 3151, 25958,30550,33919,33427,24772,33122,33491,14757,5313, 35624,38873,37388,36790,26212,40160,38482,42798,31273,32891,29919,17452,37809,40160,39363,
- 39330,10708,13550,17880,40160,27447,33007,38244,9138, 34415,37685,38244,42797,17338,32840,40159,19035,20862,27310,19903,37358,1317, 26551,38316,35322,36790,6159,
+ 39330,10708,13550,17880,40160,27447,33007,38244,9138, 34415,37685,38244,42797,17338,32840,40159,19035,20862,27310,19903,37358,1317, 26551,38316,35322,36790,6159,
1950, 38602,28397,11074,16892,3778, 3150, 24369,29319,5871, 38244,16438,33069,36790,33919,36789,36306,42797,2680, 7037, 37294,35623,34823,32456,35358,34694,17467,
13850,42797,34694,22699,14511,40159,8044, 42797,40159,36789,42796,36855,28500,38619,7584, 21882,12587,33264,20373,30549,19034,34693,35095,33383,40159,36789,38244,
33264,42796,19042,10138,24634,18064,42796,13583,33918,19691,33174,42796,35623,32791,9261, 15080,24879,29731,40158,12058,20372,36789,12988,9843, 33264,36788,33390,
@@ -16201,12 +16196,12 @@ static const unsigned short Ranks[197839] =
18135,16124,40155,11158,36786,42792,35622,35622,42791,23653,33918,10965,38242,33263,40155,29833,32447,36786,42791,38242,36282,22697,35594,27308,40155,10159,10039,
37431,7215, 32316,371, 10266,21395,42791,35393,4428, 40154,36166,37920,25069,38242,12798,42791,42790,34691,35446,34510,37985,32827,34669,34631,20861,17158,36786,
27501,36294,23652,10784,33002,34314,35724,7053, 42790,14781,9926, 38416,1804, 18531,42790,6056, 35621,36785,9816, 10137,33263,32988,34691,14919,38981,1003, 18487,
- 37156,32446,40154,32445,40154,20781,30546,37545,33918,36785,9438, 36785,34691,40154,35621,28836,31312,35621,18328,38945,10750,13025,42790,27214,8203, 703, 3096,
+ 37156,32446,40154,32445,40154,20781,30546,37545,33918,36785,9438, 36785,34691,40154,35621,28836,31312,35621,18328,38945,10750,13025,42790,27214,8203, 703, 3096,
26983,10394,16389,19551,40153,33917,28853,28587,13, 3815, 18459,17368,2899, 32789,18157,14173,26597,19394,25919,2200, 8946, 33917,33917,22490,35621,401, 37453,
- 1580, 38241,18156,9405, 3426, 32823,34400,30875,18197,21588,516, 21276,553, 17660,2621, 15027,36785,6288, 3282, 18105,1426, 13756,26193,34691,38241,213, 360,
+ 1580, 38241,18156,9405, 3426, 32823,34400,30875,18197,21588,516, 21276,553, 17660,2621, 15027,36785,6288, 3282, 18105,1426, 13756,26193,34691,38241,213, 360,
19949,15233,2513, 38241,1776, 36784,42789,25173,15610,42789,35425,28502,20086,22995,12912,16278,11644,29567,36291,39274,38241,23749,16871,22696,33245,11345,10202,
33177,17332,33365,2898, 3425, 2395, 14480,36521,15207,26307,28417,38330,34690,36784,33263,2341, 10965,35620,10435,21301,27877,33667,36263,42789,4104, 42789,17879,
- 4810, 19689,40153,33917,34690,14918,6019, 22387,1222, 29730,31424,3733, 28353,2238, 17366,3149, 26882,33256,22688,33325,1470, 1172, 19790,39005,37732,35620,6120,
+ 4810, 19689,40153,33917,34690,14918,6019, 22387,1222, 29730,31424,3733, 28353,2238, 17366,3149, 26882,33256,22688,33325,1470, 1172, 19790,39005,37732,35620,6120,
37271,33414,42788,34690,38240,35620,20860,40153,32444,38240,8826, 33262,12908,23329,40153,30545,42788,2866, 33916,13358,38240,42788,2001, 35620,1605, 1052, 42788,
42787,3656, 19356,36784,36784,35248,36783,13024,13848,33262,42787,35619,37109,12733,36895,15512,33262,18470,30544,36783,16576,37598,35642,27158,39000,38076,32775,
15361,18895,34690,18225,25909,24831,35619,33262,36566,33535,27297,37456,32122,13215,32287,32236,37246,40152,40152,35986,27307,42787,2780, 38644,2620, 860, 34482,
@@ -16215,48 +16210,48 @@ static const unsigned short Ranks[197839] =
30605,15699,38239,28851,36782,14873,30019,38239,42785,42785,36782,4315, 36782,10964,25954,42785,27305,11183,1694, 36782,26860,28850,37182,40151,36781,19033,33916,
8043, 21093,32128,32443,40151,36781,38238,1388, 36781,33261,10334,40151,28849,36781,20671,2274, 27304,33916,35618,34689,35777,38238,35618,28848,27303,38238,35618,
24771,31215,32442,35618,35617,6223, 33916,42784,11344,36780,38238,32441,40151,5633, 40150,38237,33575,35779,35649,42784,33915,34802,42784,8954, 28847,35438,42784,
- 42783,33261,33261,7611, 24807,13001,37822,23506,35318,36889,10264,727, 11064,18260,38505,11814,3706, 28211,27302,30543,40150,440, 30880,40150,3095, 38237,825,
- 2994, 26395,36780,22090,10739,36780,22381,1462, 3576, 14659,36263,7115, 13849,17298,30587,27355,2061, 22694,38273,9307, 2023, 625, 3281, 2483, 38237,42783,3280,
- 2166, 3655, 61, 2199, 886, 2482, 952, 36995,802, 34321,36, 1629, 3423, 1744, 32440,9917, 35182,2859, 777, 82, 24548,1775, 71, 5459, 31117,1839, 2049,
+ 42783,33261,33261,7611, 24807,13001,37822,23506,35318,36889,10264,727, 11064,18260,38505,11814,3706, 28211,27302,30543,40150,440, 30880,40150,3095, 38237,825,
+ 2994, 26395,36780,22090,10739,36780,22381,1462, 3576, 14659,36263,7115, 13849,17298,30587,27355,2061, 22694,38273,9307, 2023, 625, 3281, 2483, 38237,42783,3280,
+ 2166, 3655, 61, 2199, 886, 2482, 952, 36995,802, 34321,36, 1629, 3423, 1744, 32440,9917, 35182,2859, 777, 82, 24548,1775, 71, 5459, 31117,1839, 2049,
2588, 191, 2167, 31864,12005,28201,20440,26235,23816,29426,19355,13195,31309,42783,883, 29538,27249,25225,42783,13946,42782,2340, 32922,15487,38760,40150,34646,
5194, 34689,42782,21880,33260,39288,27486,36193,36340,38237,12476,38236,19393,2553, 1617, 293, 9939, 18318,31520,19373,42782,40149,28846,32406,34314,36780,39222,
- 32969,16279,34689,42782,36351,8123, 26624,42781,1989, 35617,24897,40149,11086,30698,38970,767, 7550, 22684,22851,30761,40149,25892,1000, 42781,40149,12554,8149,
+ 32969,16279,34689,42782,36351,8123, 26624,42781,1989, 35617,24897,40149,11086,30698,38970,767, 7550, 22684,22851,30761,40149,25892,1000, 42781,40149,12554,8149,
30542,33260,24770,17156,14166,14165,42781,36779,36779,42781,35617,14539,40148,30541,42780,42780,34688,38236,1454, 33260,33260,811, 5871, 38236,42780,36779,38236,
37530,10136,14849,40148,42780,35617,34107,11222,33316,40148,35616,42779,22693,40148,33259,21879,30540,15618,35960,32363,38648,27301,42779,38248,33247,36779,42779,
39226,6572, 38235,27300,18469,32829,37316,40147,36600,29748,6018, 38235,6222, 42779,42778,25953,40147,21684,23990,32356,34688,16393,15187,7346, 37939,20859,36988,
32756,25952,35616,36293,36778,34311,38188,30539,33915,30553,42778,10378,12516,12153,12515,13023,37101,25951,34265,15297,557, 28845,40147,42778,42778,38235,23066,
42777,35616,267, 10954,8758, 14420,15308,34369,13826,20815,35408,38920,42777,42777,3148, 3357, 785, 33915,31044,330, 7786, 21327,1628, 2339, 2226, 2121, 34688,
- 16990,17700,23531,40147,4656, 30660,34674,32806,40146,9437, 7276, 29403,38683,29145,33915,36866,42777,21069,10454,27361,4518, 23498,40146,16974,21403,24160,8010,
+ 16990,17700,23531,40147,4656, 30660,34674,32806,40146,9437, 7276, 29403,38683,29145,33915,36866,42777,21069,10454,27361,4518, 23498,40146,16974,21403,24160,8010,
38235,7682, 38234,3594, 42776,28844,13765,28843,33126,40146,17337,35786,36013,34866,17206,15538,31837,42776,12974,36937,37733,40146,38443,30174,40145,35387,17878,
28842,36778,36045,32848,17155,22590,37621,37200,28933,2273, 33139,18849,42776,14373,26694,10657,14074,7776, 19151,17265,29137,17811,28604,24665,38105,11476,20646,
34193,34260,6022, 19392,38071,26863,2375, 22225,20200,23286,34360,38971,17886,30763,22790,27627,32681,32875,11555,14164,38234,32439,38234,36175,16870,38234,33914,
- 33259,21092,17877,19687,40145,32438,40145,27299,5956, 3458, 13272,14372,40145,40144,13847,30538,34688,35616,21091,19032,42776,1469, 1902, 15570,40144,34787,6507,
+ 33259,21092,17877,19687,40145,32438,40145,27299,5956, 3458, 13272,14372,40145,40144,13847,30538,34688,35616,21091,19032,42776,1469, 1902, 15570,40144,34787,6507,
42775,23651,20370,42775,21878,13022,40144,30537,36778,36778,42775,40144,17336,2029, 28841,2500, 32437,13848,21877,20858,23650,40143,38233,32436,35615,38459,42775,
16277,38530,34687,33132,38111,42774,42774,30536,27551,25092,34687,36777,32966,20857,1774, 3342, 42774,40143,37427,42774,14999,38772,33030,34013,23649,42773,38233,
- 35997,35615,42773,37645,36777,37692,3182, 13271,12514,11554,38233,30535,18468,27298,3309, 3195, 36777,3068, 29489,42773,19031,38233,42773,3067, 32435,36736,6571,
- 17154,2551, 3496, 27297,2791, 10292,27410,1460, 42772,40143,1361, 2587, 842, 1492, 32336,2604, 36777,3181, 21436,42772,40143,16022,27296,135, 1283, 14652,8762,
+ 35997,35615,42773,37645,36777,37692,3182, 13271,12514,11554,38233,30535,18468,27298,3309, 3195, 36777,3068, 29489,42773,19031,38233,42773,3067, 32435,36736,6571,
+ 17154,2551, 3496, 27297,2791, 10292,27410,1460, 42772,40143,1361, 2587, 842, 1492, 32336,2604, 36777,3181, 21436,42772,40143,16022,27296,135, 1283, 14652,8762,
6336, 689, 4673, 870, 16276,20856,33914,30534,34687,8580, 12248,38232,7338, 42772,28840,1988, 15609,20369,42772,42771,42771,7941, 17876,2926, 36776,8141, 37083,
22692,24769,8494, 33407,5600, 36776,40142,33914,12152,20855,14163,9436, 38232,12151,32434,14857,30533,30532,33259,4286, 18467,21090,42771,35615,35615,40142,36776,
13553,32433,38232,17946,40142,39301,42771,33865,27360,1875, 36971,5588, 2993, 32432,42770,42770,34880,36710,36776,4932, 33259,13160,42770,19363,33914,12762,25051,
3732, 33903,22691,33258,32431,27295,42770,42769,32329,35614,5543, 591, 34687,13270,33258,36775,4206, 31541,36775,17897,24768,27294,59, 5767, 20894,2858, 35614,
19709,13552,33913,20807,34686,8140, 40142,25950,38002,33258,31123,36775,35026,32798,32823,8490, 27425,22715,38232,4735, 33913,38363,16058,40141,42769,8945, 33913,
- 38231,40141,24767,36636,29666,35614,19030,36775,13021,1903, 19279,22690,38231,36774,35614,42769,40141,31401,38231,25949,4205, 5955, 27293,35613,4873, 35431,2699,
+ 38231,40141,24767,36636,29666,35614,19030,36775,13021,1903, 19279,22690,38231,36774,35614,42769,40141,31401,38231,25949,4205, 5955, 27293,35613,4873, 35431,2699,
40141,2248, 3401, 42769,14510,18084,33258,291, 20368,5587, 32430,9570, 185, 357, 27261,443, 21392,16021,40140,10963,27292,42768,14856,12911,33257,6221, 40140,
17875,1888, 30776,38231,40140,21876,38230,13846,27291,3803, 67, 11665,2059, 30629,10553,13867,31411,16201,16014,11919,2247, 27839,17442,10993,42768,8250, 33306,
- 27290,18186,12509,33913,15232,27481,36144,525, 15277,33257,2947, 1894, 2382, 25948,8920, 38230,36774,10962,7035, 42768,11343,19686,318, 40140,13023,37833,3215,
+ 27290,18186,12509,33913,15232,27481,36144,525, 15277,33257,2947, 1894, 2382, 25948,8920, 38230,36774,10962,7035, 42768,11343,19686,318, 40140,13023,37833,3215,
33287,13845,14371,37459,40139,33912,42768,29013,27289,38230,35209,34686,27288,40139,11789,12247,42767,36774,38230,33912,40139,35613,40139,27287,15537,515, 33257,
- 21849,30531,36774,3207, 5237, 36773,33257,35613,36773,42767,17335,28839,36773,20367,33912,42767,32429,42767,38216,30530,42766,39075,28838,36869,35613,37222,8716,
- 38664,243, 30806,2586, 36773,40138,42766,40138,26739,23768,19779,34672,13847,2857, 3214, 464, 22088,23648,14660,40138,35612,11788,28837,19391,390, 40138,517,
+ 21849,30531,36774,3207, 5237, 36773,33257,35613,36773,42767,17335,28839,36773,20367,33912,42767,32429,42767,38216,30530,42766,39075,28838,36869,35613,37222,8716,
+ 38664,243, 30806,2586, 36773,40138,42766,40138,26739,23768,19779,34672,13847,2857, 3214, 464, 22088,23648,14660,40138,35612,11788,28837,19391,390, 40138,517,
8249, 28836,31315,33912,32428,42766,34863,42766,30863,24766,37927,33256,30529,42765,37818,40137,984, 42765,34686,3867, 36077,2946, 29244,42765,16804,34686,33911,
- 2272, 21875,21089,14370,38229,20366,34663,17153,30594,1743, 32427,14509,24765,19685,5392, 42765,35612,27286,36772,27285,40137,22413,27284,21874,37931,24258,129,
+ 2272, 21875,21089,14370,38229,20366,34663,17153,30594,1743, 32427,14509,24765,19685,5392, 42765,35612,27286,36772,27285,40137,22413,27284,21874,37931,24258,129,
12933,31165,12910,11229,12028,33911,8944, 31931,38229,12761,27283,35612,38229,5082, 16437,15608,22990,11927,17, 6433, 28052,9569, 34522,1132, 42764,17152,38229,
32426,20555,38228,9435, 24764,665, 5776, 7301, 290, 5252, 14369,21808,18021,17422,17236,5632, 32425,23912,15536,42764,42764,21438,26051,25974,20689,26260,17782,
- 20365,2264, 23663,15313,16436,23427,6586, 42764,36225,265, 32832,28745,36099,16603,33911,17279,21873,811, 36984,37106,1583, 38900,1578, 21415,2145, 8943, 773,
+ 20365,2264, 23663,15313,16436,23427,6586, 42764,36225,265, 32832,28745,36099,16603,33911,17279,21873,811, 36984,37106,1583, 38900,1578, 21415,2145, 8943, 773,
22344,7161, 32745,1788, 2000, 2244, 20854,6661, 29593,9568, 42763,42763,36772,17874,42763,40137,27754,35612,35611,33911,37238,8715, 42763,8042, 35250,42762,37073,
8041, 42762,7196, 13844,21872,17873,16020,37838,32424,17685,40137,30528,12760,42762,562, 3213, 3050, 33053,33910,42762,25070,38389,34057,38228,9842, 26518,33910,
27282,17334,6119, 40136,42761,28609,38228,42761,33256,28835,23647,38228,40136,21871,40136,34558,3041, 42761,33702,33339,24763,20364,14508,40136,33747,595, 34685,
- 33256,30094,40135,36772,33910,36772,33910,35611,25947,5632, 14855,36692,6855, 9925, 42761,502, 8931, 33521,1193, 42760,11157,38227,4674, 35611,16855,36771,9434,
- 34685,9433, 42760,42760,27132,1486, 40135,35611,40135,13357,4668, 42760,31816,629, 15809,508, 15607,1130, 5453, 35346,308, 17091,39117,33256,34685,20363,4110,
+ 33256,30094,40135,36772,33910,36772,33910,35611,25947,5632, 14855,36692,6855, 9925, 42761,502, 8931, 33521,1193, 42760,11157,38227,4674, 35611,16855,36771,9434,
+ 34685,9433, 42760,42760,27132,1486, 40135,35611,40135,13357,4668, 42760,31816,629, 15809,508, 15607,1130, 5453, 35346,308, 17091,39117,33256,34685,20363,4110,
13551,6177, 40135,7505, 40134,34685,36771,40134,42759,30527,10783,10782,2856, 32242,33255,42759,34684,35610,36771,28834,42759,17872,9298, 33909,31899,40134,34684,
33651,38227,42759,19024,28833,34090,33086,1296, 34228,18155,38446,1310, 33255,34684,33909,18466,30526,38227,7034, 34684,30525,16869,35610,42758,8248, 32423,21088,
24762,32422,6642, 1020, 40134,33909,17333,4370, 8376, 25778,40133,19029,12027,4793, 35001,35680,19353,33909,38923,21627,38227,18154,5542, 32421,33255,20362,42758,
@@ -16270,11 +16265,11 @@ static const unsigned short Ranks[197839] =
40131,40131,9653, 3495, 32419,37343,33846,39003,16529,18118,35706,25484,32982,33584,40131,32418,35609,28830,1450, 32722,11557,34813,37159,37133,37169,26410,38961,
16017,15395,22915,13933,40130,40130,37506,23090,40130,29717,29255,18211,30836,36749,24164,36769,35872,38695,38867,11314,18330,13484,22680,32891,29573,4142, 34052,
34682,38396,24651,38225,30092,34648,31590,30462,27590,42755,26024,40130,28475,42754,18632,26174,42754,37572,29923,19921,16346,40129,42754,35736,42754,40129,26488,
- 36709,36650,29859,38297,31695,39160,37697,36769,37626,35683,30099,42753,25945,36781,33868,27637,38295,33465,39030,16664,35718,37532,42753,31221,26503,35016,7089,
+ 36709,36650,29859,38297,31695,39160,37697,36769,37626,35683,30099,42753,25945,36781,33868,27637,38295,33465,39030,16664,35718,37532,42753,31221,26503,35016,7089,
36936,33219,38577,34555,33722,37470,34813,30643,42753,38568,9276, 38224,19389,14217,24834,27280,28358,32802,39066,29375,42753,6251, 14795,22062,38926,33065,26236,
38224,28216,34077,33058,36768,40129,40129,35609,22689,6017, 40128,34226,9447, 11026,42752,35272,30978,22716,37747,20384,37365,28260,27313,36751,34884,37280,38112,
21296,34682,8672, 31056,20502,38586,9609, 38167,6619, 1295, 25944,33873,35094,2338, 35609,36551,1708, 35506,37748,26192,28320,11787,35609,27279,14369,42752,10498,
- 32857,16016,35608,35608,38098,5354, 28829,27527,12508,42752,835, 25082,2410, 15228,19388,19387,20849,29786,21600,12438,22113,1371, 42752,1824, 23815,15032,7329,
+ 32857,16016,35608,35608,38098,5354, 28829,27527,12508,42752,835, 25082,2410, 15228,19388,19387,20849,29786,21600,12438,22113,1371, 42752,1824, 23815,15032,7329,
7712, 1932, 11715,17871,12962,8156, 25341,2972, 5835, 35582,11989,19386,324, 19385,34682,32417,820, 4462, 15299,10038,6732, 4176, 450, 42751,2770, 20361,15492,
2725, 1514, 4660, 5992, 1849, 10963,13339,34682,19384,2782, 4892, 31394,3874, 37368,299, 17151,39134,38756,3552, 27628,42751,35608,42751,33254,27853,32416,30523,
40128,3669, 36768,40128,4872, 38791,40128,30522,24761,38224,36768,36768,42751,6392, 38224,18464,11237,35608,40127,34272,33908,36767,7275, 30473,42750,42750,22688,
@@ -16284,11 +16279,11 @@ static const unsigned short Ranks[197839] =
38222,22244,16435,13842,20835,4901, 32413,6909, 33253,24759,17870,40126,32412,8257, 8537, 17332,34733,38222,18463,17869,5825, 21683,36767,2095, 35606,33253,36766,
14854,38221,1269, 24758,38632,11786,42748,19877,42748,37001,35338,5799, 27277,36639,35606,242, 30768,18110,5486, 13883,16913,8249, 37253,12888,33824,16867,18698,
38221,24870,33907,2268, 4414, 36766,40126,6958, 354, 10434,35606,23916,20070,9890, 7274, 35, 28316,21942,1774, 17723,3641, 5182, 24440,12613,33096,32806,17732,
- 32330,32719,15991,15383,18560,12010,24766,30191,17263,21651,15765,27100,27901,3028, 38221,15230,1926, 14284,35606,36766,33253,14003,36809,33167,33907,6287, 774,
- 34680,13841,6131, 4770, 20848,32411,25941,4702, 27796,42748,3865, 30521,1944, 36766,33907,33252,21867,42748,5631, 38221,21083,9109, 1762, 24157,35092,9740, 8114,
+ 32330,32719,15991,15383,18560,12010,24766,30191,17263,21651,15765,27100,27901,3028, 38221,15230,1926, 14284,35606,36766,33253,14003,36809,33167,33907,6287, 774,
+ 34680,13841,6131, 4770, 20848,32411,25941,4702, 27796,42748,3865, 30521,1944, 36766,33907,33252,21867,42748,5631, 38221,21083,9109, 1762, 24157,35092,9740, 8114,
37052,18462,10893,23646,38068,4339, 42747,21082,24351,11855,37897,42747,15375,8948, 36896,42747,14943,9915, 8040, 3051, 7567, 3210, 6667, 39044,36125,17504,22638,
- 2008, 3418, 18959,25940,42747,33991,10482,19383,42746,30520,33906,33906,36765,42746,35916,30602,36765,118, 15037,35605,16177,30523,42746,977, 27276,11785,2198,
- 28042,14226,1696, 14937,12230,957, 559, 1929, 2450, 8375, 13018,35939,24, 18037,2619, 1523, 13845,33906,23886,21717,3654, 40125,12246,3551, 28828,36765,6957,
+ 2008, 3418, 18959,25940,42747,33991,10482,19383,42746,30520,33906,33906,36765,42746,35916,30602,36765,118, 15037,35605,16177,30523,42746,977, 27276,11785,2198,
+ 28042,14226,1696, 14937,12230,957, 559, 1929, 2450, 8375, 13018,35939,24, 18037,2619, 1523, 13845,33906,23886,21717,3654, 40125,12246,3551, 28828,36765,6957,
1864, 16273,14312,8631, 14506,33252,19028,6220, 2992, 2658, 21866,22635,36765,2981, 15229,21865,33906,35605,34680,33905,28687,4008, 42746,24757,11342,8164, 12964,
20011,14368,19382,32410,14505,27275,33252,17868,6641, 4843, 15606,4343, 3279, 21590,40125,35605,38220,40125,3389, 40125,38220,7642, 17036,36764,10615,1497, 25939,
15228,26674,39247,14162,32409,8825, 12514,9431, 32408,157, 18153,14367,633, 25938,38220,10669,15012,42745,16014,17867,2272, 4313, 20509,19381,36749,35605,42745,
@@ -16309,14 +16304,14 @@ static const unsigned short Ranks[197839] =
16548,38216,33964,23559,38216,28820,26986,35439,40118,38551,33251,38650,30874,32996,1579, 3950, 1097, 40118,27091,35601,35601,39164,33227,25931,36559,16171,38216,
33251,42739,38012,22686,17872,35601,27271,19025,36207,6268, 7337, 35603,33250,42739,505, 27683,25668,19380,30514,32403,21859,14083,14804,1163, 14851,7940, 33903,
13269,5286, 1638, 23668,36761,33903,40118,27308,12908,1147, 39066,6640, 32944,10524,24752,22685,32090,1063, 20626,30723,6471, 3514, 13268,13681,23880,8619, 14504,
- 38215,35601,36761,5630, 13267,33903,28543,30251,38215,2184, 14930,19982,24751,33183,19024,11933,42739,32218,21674,17862,35314,25930,21858,830, 9680, 42739,2718,
+ 38215,35601,36761,5630, 13267,33903,28543,30251,38215,2184, 14930,19982,24751,33183,19024,11933,42739,32218,21674,17862,35314,25930,21858,830, 9680, 42739,2718,
39312,42738,16431,36761,4618, 5284, 42738,13431,38342,35600,39349,39209,34677,1559, 23643,6356, 26779,24697,16271,33250,12512,15357,10135,35971,13771,16011,40118,
- 22684,42738,15225,326, 10645,3834, 11783,33694,42738,3212, 6776, 13838,37926,6766, 23642,30513,12245,40117,34677,9840, 5193, 13356,6391, 39138,512, 1996, 9375,
+ 22684,42738,15225,326, 10645,3834, 11783,33694,42738,3212, 6776, 13838,37926,6766, 23642,30513,12245,40117,34677,9840, 5193, 13356,6391, 39138,512, 1996, 9375,
11336,32822,1436, 32803,32520,3052, 23856,5550, 38215,30422,38215,21079,18460,38214,32998,16270,7711, 38214,42737,13548,16010,40117,38214,22594,19379,5341, 37810,
17224,34621,40117,3093, 25384,36761,4808, 40117,36959,42737,34677,42737,25929,3211, 1918, 36806,37074,38214,42737,20245,36760,33250,42736,42736,42736,36135,40116,
11736,8428, 7464, 16689,15197,3988, 42736,19684,4069, 27959,24842,27262,12566,17670,27002,27966,36760,25928,36760,28819,7699, 42735,38213,33981,38213,42735,35600,
22862,25927,15604,24750,22683,42735,20359,42735,35600,34677,13351,42734,38213,23641,38213,42734,9669, 42734,42734,14693,21078,36733,20883,36760,27270,21857,12511,
- 40116,42733,15224,2815, 40116,32402,32401,28818,42733,40116,36759,34676,33903,30512,36759,36759,13017,24343,8714, 4550, 55, 5870, 32400,8356, 23084,36759,4734,
+ 40116,42733,15224,2815, 40116,32402,32401,28818,42733,40116,36759,34676,33903,30512,36759,36759,13017,24343,8714, 4550, 55, 5870, 32400,8356, 23084,36759,4734,
22268,32399,13965,19023,38212,40115,42733,33069,42733,36758,34834,42732,30511,16430,42732,40115,40115,22372,42732,40115,38212,38212,35600,25926,42732,38212,42731,
33250,33902,13266,17331,33249,42731,40114,18459,35599,33457,8470, 22682,40114,40114,22681,33902,42731,36758,36758,36758,14850,36757,42731,40114,34676,42730,12244,
36757,391, 33902,40113,33249,17861,13265,28817,42730,34676,33902,38211,40113,36757,36757,13264,33901,32398,42730,10290,40113,34676,42730,40113,21077,10961,10778,
@@ -16336,10 +16331,10 @@ static const unsigned short Ranks[197839] =
36804,33898,36752,42715,20357,12149,38206,12241,36962,7214, 2617, 19375,18147,40105,30506,939, 15489,40105,40104,34672,33247,33247,32390,36751,42715,38206,20844,
1265, 17148,19019,35596,38205,18817,147, 4943, 19145,32953,22568,6638, 6639, 40104,39024,11785,25391,28654,36720,6452, 1424, 20710,26597,38205,38208,42715,42715,
27612,42714,14848,40104,35596,10433,28815,30505,32389,27263,40104,30504,8941, 6389, 34672,36751,6463, 13355,17858,39195,6604, 35596,35722,4342, 36751,19374,35595,
- 6286, 38205,16198,16426,34672,32388,42714,16860,17328,13354,27262,40103,38205,863, 42714,17147,36193,30503,1522, 11567,3413, 9445, 2459, 12907,4163, 18554,5114,
+ 6286, 38205,16198,16426,34672,32388,42714,16860,17328,13354,27262,40103,38205,863, 42714,17147,36193,30503,1522, 11567,3413, 9445, 2459, 12907,4163, 18554,5114,
42714,35595,42713,30502,42713,40103,42713,42713,28814,32387,42712,24743,38204,22676,3262, 36751,35595,33255,34479,34671,30501,11553,10960,23522,40103,2162, 22109,
5824, 23638,40103,42712,8246, 33315,40102,3699, 38204,38204,35595,28771,42712,4788, 2311, 14915,4001, 20145,37988,28813,42712,10288,10, 20843,14914,42711,36750,
- 10481,766, 8469, 42711,36051,29926,11215,1057, 12840,854, 28812,2843, 66, 270, 23012,560, 6791, 33247,39251,8919, 37068,14913,16269,4581, 25598,22898,2707,
+ 10481,766, 8469, 42711,36051,29926,11215,1057, 12840,854, 28812,2843, 66, 270, 23012,560, 6791, 33247,39251,8919, 37068,14913,16269,4581, 25598,22898,2707,
3592, 38204,42711,15601,33247,9587, 42711,13836,33246,14144,30110,32386,8137, 10777,33421,1637, 23637,34671,25501,34248,37861,42710,8196, 19064,28428,31328,32385,
34671,40102,32359,33898,32384,27377,6350, 30500,7003, 9902, 12695,32171,20164,19018,37798,11781,36750,40102,38228,40102,38203,40101,34671,15272,33898,40101,14365,
14912,33092,34720,32383,36750,33246,38814,28811,42710,42710,36750,42710,34670,39410,36749,35956,40101,36888,641, 12393,9457, 17857,42709,10299,28810,38991,25919,
@@ -16370,7 +16365,7 @@ static const unsigned short Ranks[197839] =
27252,27640,21297,35586,33048,4657, 42693,36741,34585,42692,36741,38192,42692,32442,1273, 1372, 8179, 34788,20841,42692,40087,42692,24480,40087,42691,956, 40086,
31715,33893,38192,24339,36740,31073,16004,1511, 42691,37907,40086,36740,42691,42691,42690,12509,40086,37727,36740,2600, 35586,42690,27251,32376,4397, 25374,26948,
21063,42690,36174,36740,37849,38759,40086,42690,40085,18449,38192,40085,31263,42689,40085,23633,4105, 33460,14766,4738, 36739,24735,32375,22724,30074,36058,35586,
- 17652,17325,20840,40085,40084,42689,42689,42689,14844,7671, 42688,35586,10959,40084,38192,3210, 36739,26854,40084,40084,17853,32834,36985,17341,42688,42688,779,
+ 17652,17325,20840,40085,40084,42689,42689,42689,14844,7671, 42688,35586,10959,40084,38192,3210, 36739,26854,40084,40084,17853,32834,36985,17341,42688,42688,779,
42688,36193,38844,40083,38191,42687,42687,32374,38191,21845,21844,35388,35585,35585,30493,42687,38191,33242,38191,40083,35781,40083,38568,42687,33113,30451,33242,
35015,17484,38190,36014,36739,23632,38190,18448,30492,36739,14682,6730, 28830,37534,40083,2190, 34666,26955,33242,13935,36738,38190,35585,38190,35585,13263,42686,
32373,33893,35584,33242,24032,5014, 36738,33893,32372,42686,22675,23631,38952,25917,36738,32371,38189,40082,34665,33092,2746, 35584,42686,40082,38189,42686,42685,
@@ -16383,28 +16378,28 @@ static const unsigned short Ranks[197839] =
42678,36195,42678,38187,27247,8039, 28849,3550, 38206,22670,42677,34664,4807, 9055, 27832,42677,38187,33240,37984,34664,36736,9360, 33892,17077,29995,33240,38187,
34664,15599,32369,36736,32368,20354,36645,33892,32367,42677,6388, 26345,20839,19370,37118,5452, 40077,38186,40076,6451, 33892,42677,16859,7759, 23628,42676,36735,
40076,40076,38186,35583,2109, 12757,40076,35583,42676,11338,40075,40075,17146,20838,34775,32814,35023,36735,37993,25915,3855, 34664,36794,32962,30883,23627,34663,
- 38186,17323,23626,38186,11219,42676,16291,42676,33240,22669,35582,33546,25914,35582,12906,7758, 32366,38185,35633,42675,38185,34663,11142,11555,42675,33891,3222,
+ 38186,17323,23626,38186,11219,42676,16291,42676,33240,22669,35582,33546,25914,35582,12906,7758, 32366,38185,35633,42675,38185,34663,11142,11555,42675,33891,3222,
30486,36776,35582,30485,36735,34663,35582,33240,27606,38794,23141,18145,22009,36095,16435,19955,42675,38827,37642,42675,13544,18144,21842,42674,42674,37867,32365,
- 15598,23625,38185,33891,27715,25913,30484,23624,4283, 37349,42674,32364,1439, 22402,27246,30483,34663,34662,42674,23168,42673,38185,42673,28797,9990, 42673,9056,
+ 15598,23625,38185,33891,27715,25913,30484,23624,4283, 37349,42674,32364,1439, 22402,27246,30483,34663,34662,42674,23168,42673,38185,42673,28797,9990, 42673,9056,
42673,975, 38184,40075,42672,38448,36576,40075,38184,37515,12024,35628,19867,36735,40074,30160,20837,36626,35581,7121, 14159,5223, 42672,25912,33891,10132,40074,
32363,28796,34002,7670, 42672,42672,23143,8366, 42671,33239,479, 10787,20836,25839,40074,24732,35581,29569,16858,40074,40073,34662,36734,38184,30482,40073,24731,
36400,34662,33974,42671,28795,34097,4806, 42671,5013, 40073,33239,36734,40073,33891,27245,33016,18314,36734,28418,25911,42671,40072,39326,42670,36317,39406,38184,
19014,42670,33529,9445, 27244,18761,33006,35171,35581,7945, 4118, 36734,33239,38183,35581,42670,19675,15597,36733,33890,10199,42670,38183,6175, 7854, 30481,42669,
- 2266, 961, 23623,18446,38183,42669,3577, 42669,25910,11505,19674,31874,16268,37953,25389,39135,42669,34588,42668,42668,16857,30572,34299,12756,34662,34661,8136,
+ 2266, 961, 23623,18446,38183,42669,3577, 42669,25910,11505,19674,31874,16268,37953,25389,39135,42669,34588,42668,42668,16857,30572,34299,12756,34662,34661,8136,
40072,19673,40072,42668,30991,33239,20557,17075,40072,40071,21841,24501,36733,40071,21840,28794,2412, 16424,33099,22668,35580,16267,24730,42668,27624,38183,27243,
11779,36733,35580,15596,42667,36733,10958,19672,38182,17145,18445,35580,35580,34661,18444,40071,18443,38182,42667,13777,35579,28793,17322,25909,33238,27242,34553,
27241,33890,42667,28792,40071,33238,34661,35579,40070,11552,17321,42667,38182,27240,27558,15595,38143,42666,37708,4524, 34661,10479,42666,42666,35017,17144,25908,
42666,34660,32362,42665,34660,18442,30480,42665,42665,24729,11337,38182,12508,36732,35799,19369,42665,5278, 28791,42664,42664,42664,36327,40070,38181,34660,36732,
16423,38181,28790,32361,42664,28789,34904,38181,42663,36732,39031,42663,16003,33574,30840,20353,35579,23911,13843,34318,42663,28788,21839,40070,33238,38022,40070,
7114, 38181,21061,20352,13262,7757, 38180,17320,3486, 40069,42663,12329,42662,28787,40069,10776,30479,21838,34660,36732,27239,17319,34659,16856,26735,25921,22035,
- 34329,24592,30478,10432,15594,36731,33890,15532,21837,40069,17143,42662,23622,37333,25574,36731,542, 32940,25907,36731,37839,33316,40069,38556,42662,21314,1736,
- 29974,38543,35081,32567,31918,15577,37387,42662,42661,42661,38180,16266,16422,42661,2897, 22085,378, 32928,1143, 20917,29514,1604, 12446,3494, 21836,2481, 192,
+ 34329,24592,30478,10432,15594,36731,33890,15532,21837,40069,17143,42662,23622,37333,25574,36731,542, 32940,25907,36731,37839,33316,40069,38556,42662,21314,1736,
+ 29974,38543,35081,32567,31918,15577,37387,42662,42661,42661,38180,16266,16422,42661,2897, 22085,378, 32928,1143, 20917,29514,1604, 12446,3494, 21836,2481, 192,
6511, 21835,312, 31933,1838, 18127,17102,33966,36731,37305,32512,474, 29665,212, 6134, 284, 23265,333, 13179,13154,3730, 23859,27096,970, 33481,33832,25153,
39266,32360,364, 346, 1732, 18143,40068,40068,28786,38180,30477,33238,35579,42661,33890,37478,16855,16854,33889,36639,33117,42660,17318,42660,35523,42660,32359,
36462,5775, 9123, 13015,33237,35578,27238,34659,38180,38179,22667,38179,33889,42660,40068,36730,36730,16265,42659,34659,42659,37200,16002,19671,15220,36730,36730,
20351,7853, 28785,15593,5073, 33237,17923,7939, 38179,40068,42659,4766, 40067,3549, 11778,42659,13543,38854,33889,38179,38178,30476,36729,14158,29623,42658,33889,
34659,20425,11336,32082,32358,21834,19368,32899,24867,42658,35578,33024,5154, 23074,36729,14157,13014,42658,42658,33237,31267,7113, 29467,35578,12884,24941,10704,
- 40067,42657,42657,36186,36729,27237,36729,36728,30475,7411, 14842,38178,40067,36469,39113,35755,37769,33931,21060,42657,21059,27236,36728,35578,20835,38178,8468,
+ 40067,42657,42657,36186,36729,27237,36729,36728,30475,7411, 14842,38178,40067,36469,39113,35755,37769,33931,21060,42657,21059,27236,36728,35578,20835,38178,8468,
42657,32357,948, 40067,22095,40066,40066,3891, 2214, 28784,24887,42656,42656,42656,35338,20350,42656,32356,32355,40066,40066,40065,8579, 9429, 42655,42655,38178,
35577,38177,36728,40065,39082,8245, 33237,25906,36728,42655,40065,38177,33236,9428, 38177,40065,33236,24728,42655,33888,38177,9427, 32354,42654,38176,33888,30474,
1615, 40064,40064,33097,36674,42654,42654,42654,40064,3819, 42653,40064,33888,42653,36727,42653,36727,34658,38176,37950,42653,34368,42652,38232,7499, 4023, 27830,
@@ -16423,7 +16418,7 @@ static const unsigned short Ranks[197839] =
14840,23961,28980,13261,35821,21054,38171,33233,32348,36720,24365,9296, 35573,40055,35573,19012,34656,38186,40055,35953,35348,36720,34493,38171,8373, 16849,42643,
36796,37900,31489,35960,36987,33887,1853, 22702,42643,16840,42643,37331,27209,26003,3966, 17835,23747,23399,33932,38249,16724,20600,36498,24366,11810,38268,38920,
34376,2249, 42643,27884,22937,32517,42642,19011,11150,42642,11335,36720,13147,36719,24725,26742,34304,42642,33232,32866,33607,33039,38895,42642,22664,17142,32347,
- 40055,40055,40054,38171,12905,34196,37561,25903,36719,33232,5599, 21799,2474, 30022,33232,42641,35573,38913,42641,36719,40054,35322,37753,38171,42641,35572,3234,
+ 40055,40055,40054,38171,12905,34196,37561,25903,36719,33232,5599, 21799,2474, 30022,33232,42641,35573,38913,42641,36719,40054,35322,37753,38171,42641,35572,3234,
5116, 42641,36719,34968,16889,33737,34656,32346,27233,28778,33232,14872,37626,26532,39110,24613,37777,33639,35572,34524,36655,32410,42640,36225,3440, 38170,33720,
3456, 9295, 40054,36718,40054,33231,19667,9176, 40053,27721,11236,32896,36295,37628,42640,33886,36718,24724,34655,42640,38170,22663,42640,36718,19666,42639,33231,
36718,40053,38170,34655,22767,38170,29468,34655,42639,36717,42639,36717,38169,30751,38831,5855, 7816, 10692,33231,36717,19459,16421,38169,42639,39349,19822,29903,
@@ -16439,19 +16434,19 @@ static const unsigned short Ranks[197839] =
22661,1236, 122, 21701,33023,28615,1672, 13012,31000,4739, 1108, 20347,20433,40046,22660,2296, 2337, 36714,5501, 42631,39166,22334,2943, 36054,1395, 5794, 42631,
42631,1377, 34167,13949,8341, 39366,29564,21830,6218, 42631,14156,38166,34053,1413, 10039,34443,33492,36714,15592,37825,21827,23931,21087,21287,16155,35741,33920,
30724,37258,19319,35671,24140,20078,38918,24168,36691,34934,39252,37923,37970,23178,35574,37471,22585,38305,35264,35924,35464,38073,35371,38464,38074,38655,29347,
- 21948,38609,36763,38631,20833,33216,39381,27543,20832,29025,34053,28932,24959,35410,37891,36310,6834, 22970,38081,28024,22583,28385,22996,27233,11171,7168, 7670,
+ 21948,38609,36763,38631,20833,33216,39381,27543,20832,29025,34053,28932,24959,35410,37891,36310,6834, 22970,38081,28024,22583,28385,22996,27233,11171,7168, 7670,
11881,14727,357, 24723,36714,42630,40045,20347,37147,21621,42630,42630,1061, 36714,40045,15219,38165,19276,19679,21051,38165,42630,7504, 8939, 42629,24722,10287,
- 42629,15218,23617,18142,8830, 14138,33229,30462,38165,3360, 34653,40045,34848,37343,35570,27231,855, 4765, 9815, 21050,3871, 6513, 16162,37636,35585,35195,3640,
- 22777,33728,42629,36592,18439,14155,38165,6863, 20763,35631,25900,42629,36579,33229,40045,42628,40044,14154,35570,42628,27230,40044,42628,42628,16000,33885,4064,
+ 42629,15218,23617,18142,8830, 14138,33229,30462,38165,3360, 34653,40045,34848,37343,35570,27231,855, 4765, 9815, 21050,3871, 6513, 16162,37636,35585,35195,3640,
+ 22777,33728,42629,36592,18439,14155,38165,6863, 20763,35631,25900,42629,36579,33229,40045,42628,40044,14154,35570,42628,27230,40044,42628,42628,16000,33885,4064,
34653,1229, 37123,4174, 1975, 9054, 27229,19367,16264,8380, 33229,16263,23999,38190,33884,22447,36713,42627,14153,1203, 33152,14948,8566, 33395,20607,38164,42627,
4701, 28775,1724, 36713,23616,14299,38164,40044,30461,30460,5498, 21049,40044,5681, 13834,40043,20346,40043,36713,38164,5171, 1818, 24442,21048,33229,11188,35847,
- 37481,6890, 42627,22297,34767,38164,40043,4700, 42627,42626,25899,10613,21047,5466, 7710, 13011,42626,27228,19366,10262,13352,38163,42626,33228,14362,24721,592,
+ 37481,6890, 42627,22297,34767,38164,40043,4700, 42627,42626,25899,10613,21047,5466, 7710, 13011,42626,27228,19366,10262,13352,38163,42626,33228,14362,24721,592,
13974,8134, 30028,2499, 8712, 33884,42626,34653,2814, 32823,35570,12239,17848,27410,37526,42625,36081,31640,42625,16098,40043,37034,32340,30459,21829,36713,38163,
20831,32339,1820, 1527, 23615,36114,38163,38163,1013, 42625,13135,4249, 42625,1336, 11809,38162,40042,4355, 33228,17610,33476,40042,21046,25898,5165, 7669, 32338,
- 37321,36121,40042,33228,22659,6069, 22302,34706,19664,22658,30458,33884,40042,6827, 40041,21828,7272, 9564, 42624,38162,18141,34893,3729, 33176,24364,6925, 2687,
+ 37321,36121,40042,33228,22659,6069, 22302,34706,19664,22658,30458,33884,40042,6827, 40041,21828,7272, 9564, 42624,38162,18141,34893,3729, 33176,24364,6925, 2687,
36712,15591,428, 30261,32337,23672,36712,31757,34992,33739,38149,28914,23707,37884,25961,18140,31909,35142,15531,27227,27488,29078,33612,42624,33986,869, 42624,
2436, 11974,30336,34652,36712,38162,16623,36249,40041,3278, 25897,33828,1614, 32336,2971, 28081,14122,5117, 19365,15590,40041,42624,25811,38162,6189, 28774,38161,
- 32335,33228,32334,42623,632, 31922,34652,42623,32251,38658,32852,16534,24692,40041,13842,9210, 17141,1121, 33227,29572,23520,18139,648, 42623,42623,14152,4891,
+ 32335,33228,32334,42623,632, 31922,34652,42623,32251,38658,32852,16534,24692,40041,13842,9210, 17141,1121, 33227,29572,23520,18139,648, 42623,42623,14152,4891,
11550,42622,40040,38161,33227,9989, 11149,11549,461, 19224,7583, 6731, 22768,1132, 10947,18695,11310,16890,9452, 21423,26305,14608,40040,9633, 23478,38246,34652,
42622,3421, 34648,35850,40040,42622,32127,5432, 37447,34420,42622,42621,36712,29249,36711,21827,40040,6570, 40039,33227,38161,19622,5185, 42621,40039,11504,35569,
19663,34652,40039,15217,30457,42621,36697,42621,3719, 12754,21045,35710,25896,15999,40039,38161,30950,38160,42620,30456,3785, 28773,33227,20345,2900, 36711,38160,
@@ -16464,29 +16459,29 @@ static const unsigned short Ranks[197839] =
20716,5052, 1961, 8711, 3574, 10960,15998,4494, 23613,21824,36709,27983,42614,25893,5068, 1381, 34264,30450,21043,23612,38159,37942,19943,33882,20828,34651,35567,
33224,14727,33224,32331,36709,36350,20343,5191, 18968,37623,19461,42614,42614,38516,2896, 36709,38338,33645,28767,371, 37917,3356, 20827,37038,34035,813, 11659,
28766,3208, 37785,3420, 7073, 30813,137, 27119,4899, 19685,32070,8158, 11525,15619,16217,1999, 971, 1401, 13774,20761,4698, 26602,2721, 28349,4930, 6174, 14917,
- 42614,32330,9275, 35311,19242,35892,2942, 2778, 7195, 9163, 25892,769, 3092, 36966,40036,39193,3092, 42613,35834,27042,29159,6987, 35567,8038, 2813, 20285,4788,
+ 42614,32330,9275, 35311,19242,35892,2942, 2778, 7195, 9163, 25892,769, 3092, 36966,40036,39193,3092, 42613,35834,27042,29159,6987, 35567,8038, 2813, 20285,4788,
14648,19855,31703,9030, 40035,33968,39025,40035,42613,37638,33721,5080, 40035,42613,35566,27223,42613,36708,25062,7046, 33048,35161,28765,38158,19661,28764,38158,
33882,22656,15216,30449,40035,5823, 17269,4699, 23611,12904,17317,35150,40034,23589,1033, 6858, 42612,22655,36949,33882,20342,18138,40034,20341,36708,36708,42612,
- 35244,8038, 40034,14500,404, 20340,38158,14499,33066,19010,22654,12022,35566,9706, 40034,35566,42612,35126,8133, 40033,24720,24719,30448,38158,13260,12505,424,
+ 35244,8038, 40034,14500,404, 20340,38158,14499,33066,19010,22654,12022,35566,9706, 40034,35566,42612,35126,8133, 40033,24720,24719,30448,38158,13260,12505,424,
36288,14716,33270,37885,7381, 4472, 10286,20339,18137,40033,40033,42612,12506,263, 26785,14838,19660,34395,15588,23610,42611,38435,32329,35566,11046,33882,34650,
25891,38157,40033,36708,25890,22329,6906, 19777,19659,38157,35647,40032,22653,38157,8372, 15202,14150,19658,38157,6823, 20338,18014,42611,38709,1809, 42611,40032,
37640,33326,32828,32328,19364,33224,12477,32752,32702,14374,21759,16277,4324, 29861,7668, 17128,33881,25310,11601,11503,18438,36707,23900,33389,20337,42611,40032,
- 21913,38130,19526,24718,36814,22269,28920,14910,36990,37348,36104,42610,35804,37020,35565,18437,42610,24717,7937, 28763,2610, 20182,35565,42610,32414,30774,6837,
+ 21913,38130,19526,24718,36814,22269,28920,14910,36990,37348,36104,42610,35804,37020,35565,18437,42610,24717,7937, 28763,2610, 20182,35565,42610,32414,30774,6837,
22652,24716,34650,40032,35565,42610,36757,36707,11548,25889,34650,3653, 10131,450, 42609,4178, 27222,42609,36707,22651,42609,8490, 42609,40031,38156,40031,21042,
36707,7111, 34650,9122, 14149,22650,21567,19657,6117, 2737, 35314,32071,8057, 30532,40031,5051, 42608,33881,10956,28651,36706,15587,9174, 42608,32327,25888,35565,
42608,34649,35564,33881,5012, 14148,42608,7409, 12021,33881,15973,29330,36770,38929,33838,40031,12147,22649,27324,36612,21823,33224,6338, 42607,31064,38156,34697,
- 19009,35407,10285,35134,42607,35564,35564,15997,1284, 446, 38156,17845,34968,24187,16268,12370,19656,38642,38896,3217, 8404, 802, 34244,23951,35909,228, 8218,
+ 19009,35407,10285,35134,42607,35564,35564,15997,1284, 446, 38156,17845,34968,24187,16268,12370,19656,38642,38896,3217, 8404, 802, 34244,23951,35909,228, 8218,
30331,1932, 34726,16520,938, 15688,12289,23611,12856,36089,35564,26477,6088, 37480,32558,36706,13259,17844,23609,34444,15996,42607,243, 6068, 34649,25887,42607,
9053, 34649,33880,13010,35563,35563,38156,21041,2349, 40030,21040,42606,5350, 33880,34649,5629, 1354, 5910, 36706,17168,28762,38650,42606,19008,36706,6980, 39318,
- 9723, 21611,23608,28148,21892,30447,12505,18184,36721,40030,30446,40030,35563,34301,26560,35101,24621,20336,6765, 1729, 5285, 5675, 42606,1645, 40030,29334,6102,
- 19714,22047,36947,17961,3784, 10327,14498,36705,2856, 4570, 22675,37635,36705,27556,19363,7822, 14909,42606,38155,40029,28761,626, 35563,22648,34118,7283, 6857,
+ 9723, 21611,23608,28148,21892,30447,12505,18184,36721,40030,30446,40030,35563,34301,26560,35101,24621,20336,6765, 1729, 5285, 5675, 42606,1645, 40030,29334,6102,
+ 19714,22047,36947,17961,3784, 10327,14498,36705,2856, 4570, 22675,37635,36705,27556,19363,7822, 14909,42606,38155,40029,28761,626, 35563,22648,34118,7283, 6857,
29989,30445,42605,35696,32326,12504,42605,21039,4549, 42605,40029,36705,42605,31616,28760,17843,36705,34648,7229, 11572,1881, 33223,42604,605, 1508, 35427,32325,
38868,22596,40029,36960,9894, 2128, 12020,4748, 10425,36929,22605,32559,7218, 12803,38533,18436,32324,36355,33880,18690,42604,40029,36209,38155,29319,8823, 13009,
171, 42604,37219,35767,35562,2449, 2895, 42604,4016, 33223,26310,1613, 40028,38801,2884, 38155,23781,42603,11333,36306,38155,477, 27937,38154,8037, 42603,35024,
38154,35562,36704,30591,3277, 1184, 31910,38154,40028,30444,36704,25886,33223,27221,35562,35924,35562,38154,14147,40028,3818, 37826,36704,30443,7032, 33880,33879,
- 35561,1392, 42603,4738, 42603,35561,42602,35561,33879,11547,40028,40027,42602,38153,27220,36704,38272,38153,33361,15586,32323,31567,853, 15215,42602,35561,3066,
+ 35561,1392, 42603,4738, 42603,35561,42602,35561,33879,11547,40028,40027,42602,38153,27220,36704,38272,38153,33361,15586,32323,31567,853, 15215,42602,35561,3066,
35560,33223,32322,42602,32829,36703,14146,42601,18435,35560,34648,21038,40027,33879,37833,38153,36227,30442,42601,21037,40027,32321,36703,20335,1330, 38153,10431,
- 18136,316, 963, 24923,33881,15834,38152,36391,36292,38152,24283,17139,33372,25885,35560,12020,2637, 1671, 33879,3040, 1422, 11777,17316,40027,34648,38152,1893,
+ 18136,316, 963, 24923,33881,15834,38152,36391,36292,38152,24283,17139,33372,25885,35560,12020,2637, 1671, 33879,3040, 1422, 11777,17316,40027,34648,38152,1893,
38152,17315,2387, 5597, 32639,33424,33878,38293,2028, 42601,19362,11373,35560,9274, 35559,42601,38999,23607,35678,19655,3147, 42600,22647,3854, 35433,27219,28759,
10284,37197,702, 32320,33878,33490,3091, 40026,40026,11332,27218,15585,33878,19007,33222,40026,19361,40026,42600,13831,10478,26652,33878,40025,36464,13589,19006,
42600,13258,2028, 34648,25847,38151,21036,38151,33222,30720,33114,42600,42599,20334,19654,3680, 31880,11502,40025,42599,36022,36015,34476,25884,34647,35559,15214,
@@ -16497,13 +16492,13 @@ static const unsigned short Ranks[197839] =
3323, 5353, 35558,34646,33877,31254,37896,15404,42596,10610,13841,42595,38150,9837, 40023,36702,38150,38149,32318,4517, 6461, 14908,9632, 25882,1893, 26767,13127,
33748,34440,42595,38149,30101,19142,40023,33729,33354,2812, 40022,34646,1215, 590, 14144,42595,42595,42594,10028,8017, 21821,2197, 42594,28756,2618, 21820,10609,
17842,35558,29411,42594,42594,40022,40022,17841,42593,42593,33221,9631, 9630, 42593,32317,37246,42593,9444, 10959,40022,38926,36701,38149,35558,18135,42592,40021,
- 27217,12750,10059,3728, 42592,11808,35557,24713,11545,38037,35557,40021,38149,35794,40021,187, 1064, 21717,27216,42592,5276, 747, 422, 38148,12503,32007,2080,
+ 27217,12750,10059,3728, 42592,11808,35557,24713,11545,38037,35557,40021,38149,35794,40021,187, 1064, 21717,27216,42592,5276, 747, 422, 38148,12503,32007,2080,
34222,38614,38148,28755,34756,13257,9424, 20332,25030,14696,24084,7503, 33221,32316,980, 34646,23604,1081, 3039, 34645,7936, 37229,34645,5628, 42592,34718,24712,
- 19005,36758,1196, 4805, 40021,24268,25728,42591,32315,42591,12502,24711,21092,22755,37609,24710,38148,36701,7667, 13256,3870, 5869, 8371, 10430,42591,42591,2552,
+ 19005,36758,1196, 4805, 40021,24268,25728,42591,32315,42591,12502,24711,21092,22755,37609,24710,38148,36701,7667, 13256,3870, 5869, 8371, 10430,42591,42591,2552,
21819,5497, 3276, 42590,18903,25698,34645,42590,37768,42590,4396, 12903,37815,3727, 42590,30439,25881,40020,38148,15213,38147,38147,19653,9052, 35557,36701,27215,
42589,28754,42589,25880,29, 3745, 10766,12924,14667,19166,33007,30922,11289,17947,6941, 500, 40020,219, 8302, 38315,36701,33877,35557,1591, 40020,37016,42589,
19652,10263,3137, 11187,40020,26165,36025,12237,25030,14907,10958,35556,35556,2050, 42589,8760, 10261,40019,17840,6016, 37617,2698, 42588,34645,36700,6638, 28753,
- 32314,37555,42588,27594,20331,42588,14906,40019,33220,33876,33876,36700,42588,33220,2913, 5955, 27885,18023,5895, 40019,7644, 10774,3359, 1425, 3652, 3419, 3355,
+ 32314,37555,42588,27594,20331,42588,14906,40019,33220,33876,33876,36700,42588,33220,2913, 5955, 27885,18023,5895, 40019,7644, 10774,3359, 1425, 3652, 3419, 3355,
1061, 3573, 2941, 3726, 28752,14497,9629, 3651, 5541, 10260,42587,6889, 24037,42587,3829, 38147,36700,2991, 941, 19651,2094, 33876,38147,40019,27214,36547,42587,
37513,18434,29314,24709,37279,33220,18082,9836, 31005,28751,16847,34644,42587,42586,33220,6907, 5698, 5390, 33219,38146,33219,14917,34644,2855, 37843,20330,33876,
33219,9628, 38146,23603,35556,20885,33219,40018,17839,25879,33218,25878,38146,8488, 42586,3288, 37340,1591, 18134,27213,12504,21818,38738,38146,134, 36653,32863,
@@ -16511,36 +16506,36 @@ static const unsigned short Ranks[197839] =
954, 36699,2894, 481, 2697, 42585,8339, 36699,13840,34763,38215,27611,231, 37861,33385,39074,40017,728, 12473,42585,16261,26127,10913,58, 4199, 35751,12150,
38504,20741,21011,16457,25356,20825,36699,2551, 40017,1714, 7404, 30300,39404,34469,34966,1062, 6955, 13839,14496,28750,12145,36699,32242,40017,40017,4429, 42585,
2368, 2079, 19886,17761,26177,33277,33875,36698,3131, 9051, 916, 29509,2811, 3343, 33218,34320,21530,1437, 34228,11501,24402,27322,25877,20824,673, 4941, 11590,
- 37612,26470,19359,36698,28749,24708,30438,42585,24707,1283, 542, 2196, 10130,40016,42584,1336, 28748,36698,7270, 24706,42584,362, 2854, 28811,1003, 1276, 2078,
+ 37612,26470,19359,36698,28749,24708,30438,42585,24707,1283, 542, 2196, 10130,40016,42584,1336, 28748,36698,7270, 24706,42584,362, 2854, 28811,1003, 1276, 2078,
7510, 20823,2777, 15096,36698,38514,24705,12236,33218,12501,4461, 38145,32313,38145,3561, 16846,38145,838, 38144,13929,7943, 6262, 19531,36697,10773,3692, 12019,
33218,38144,38144,32312,30437,30436,34643,36697,32311,34643,31493,42584,35767,4539, 5455, 28936,38481,20329,40016,40016,36697,1968, 9294, 12235,40016,25876,14837,
42584,34643,19650,42583,42583,23602,42583,20953,18777,38692,42583,20822,40015,33217,34945,7522, 9331, 42582,33217,21817,14451,21816,33217,6449, 34643,23601,36547,
- 32259,35982,23600,20983,36697,3691, 40015,30921,34642,15584,20328,42582,913, 10259,27212,40015,34642,2662, 20821,25875,7403, 1296, 32310,9831, 39320,14905,1946,
+ 32259,35982,23600,20983,36697,3691, 40015,30921,34642,15584,20328,42582,913, 10259,27212,40015,34642,2662, 20821,25875,7403, 1296, 32310,9831, 39320,14905,1946,
25874,25873,42582,21815,3042, 4690, 16419,42582,36696,38144,25872,24704,36696,33875,35556,27211,2585, 37732,11807,11335,1424, 692, 9274, 10849,6995, 4460, 34546,
12503,13350,8338, 35555,42581,35959,8072, 1672, 40015,19002,34642,42581,17837,40014,19418,18767,22, 3807, 17771,25737,21464,33985,31556,3090, 3572, 35866,38355,
34642,9137, 2423, 38617,6637, 7348, 14968,1346, 520, 42581,36887,38143,16260,162, 5484, 26842,3725, 25063,374, 40014,35555,1819, 38143,42581,16584,3449, 38143,
- 38143,36268,21475,36819,33231,33936,38951,36696,36696,1107, 1503, 38142,890, 9423, 34641,2550, 22646,22645,38142,190, 14234,35555,38142,17836,37312,2990, 2295,
+ 38143,36268,21475,36819,33231,33936,38951,36696,36696,1107, 1503, 38142,890, 9423, 34641,2550, 22646,22645,38142,190, 14234,35555,38142,17836,37312,2990, 2295,
36695,40014,39085,29576,25871,13255,34590,14495,17314,42580,15212,14836,2776, 38101,8578, 42580,36834,42580,36695,36695,38142,34641,33875,34051,42580,37123,34641,
37934,21814,24703,13254,36695,33977,40014,27210,35555,42579,40013,35455,36757,32828,38141,40013,32309,38141,12234,40013,40013,7110, 32308,24702,8710, 5549, 37795,
1755, 42579,38141,42579,9423, 38141,34641,6122, 38140,36694,11148,4282, 4842, 12749,30435,30434,38140,21157,42579,42578,33875,38140,24287,40012,37168,16259,42578,
40012,22644,40012,38140,24701,3354, 42578,21034,3358, 38139,2989, 33874,19001,2480, 25925,28747,16418,35554,21813,40012,5079, 722, 1987, 434, 10129,33770,28746,
34640,7935, 4300, 35554,3038, 2775, 23599,42578,42577,30433,35310,34640,24700,2668, 5424, 1412, 38139,7934, 36396,1852, 38139,20327,38139,9012, 19358,19582,38138,
- 38518,2475, 31922,35554,1406, 2940, 1627, 3650, 42577,2479, 2810, 780, 34640,39257,28745,29265,30926,33276,33217,36694,203, 35482,21033,34640,2140, 798, 2584,
+ 38518,2475, 31922,35554,1406, 2940, 1627, 3650, 42577,2479, 2810, 780, 34640,39257,28745,29265,30926,33276,33217,36694,203, 35482,21033,34640,2140, 798, 2584,
38138,42577,42577,42576,10680,40011,38138,28744,867, 36694,32307,24699,17138,8917, 5733, 17313,12018,3890, 24698,35554,23907,9563, 42576,1853, 3233, 24595,10608,
- 24697,5496, 28223,12678,38732,6286, 18133,2685, 15993,20684,4199, 27209,24399,9121, 9830, 19337,24696,63, 36847,21507,42576,33216,32306,16845,16405,16417,1188,
+ 24697,5496, 28223,12678,38732,6286, 18133,2685, 15993,20684,4199, 27209,24399,9121, 9830, 19337,24696,63, 36847,21507,42576,33216,32306,16845,16405,16417,1188,
38138,42576,187, 30850,2781, 6521, 33216,28743,2156, 16844,34639,699, 15530,20820,1711, 9835, 12144,19357,28742,37481,10552,21227,34488,16416,10128,981, 35095,
- 35467,14904,36694,19000,42575,13829,28741,36693,42575,2430, 8781, 19007,3532, 6906, 40011,36693,9443, 2399, 2336, 24911,25870,2790, 17847,9562, 1994, 38137,7821,
+ 35467,14904,36694,19000,42575,13829,28741,36693,42575,2430, 8781, 19007,3532, 6906, 40011,36693,9443, 2399, 2336, 24911,25870,2790, 17847,9562, 1994, 38137,7821,
28740,31232,19694,32305,3087, 12661,16258,34701,37922,39224,5598, 37201,36693,36693,1823, 33363,42575,24277,38137,23598,30432,21032,6569, 36692,18999,17137,42575,
27499,30130,33967,38137,38137,678, 33874,15529,20819,20818,25869,35553,3554, 32304,30431,40011,9422, 40011,13823,24848,17136,42574,42574,29027,14903,9909, 34956,
5389, 23597,20326,42574,33430,42574,42573,3159, 19604,30833,40010,30430,24695,14143,28739,38136,35645,5125, 32994,10573,13855,30228,19591,8089, 39334,7688, 27061,
- 13055,23006,31971,7541, 15916,33093,12342,9842, 33362,35426,28694,29919,33542,35430,5830, 25236,628, 32303,40010,597, 38662,35723,22229,22735,11147,21031,388,
+ 13055,23006,31971,7541, 15916,33093,12342,9842, 33362,35426,28694,29919,33542,35430,5830, 25236,628, 32303,40010,597, 38662,35723,22229,22735,11147,21031,388,
34364,12017,24201,33705,585, 18995,25973,38038,34498,987, 973, 39298,17135,19953,42573,20817,460, 25868,30429,35553,26321,1620, 28041,38136,2603, 40010,34793,
- 35962,17532,9298, 7610, 17319,17134,40010,119, 21091,24131,2624, 265, 8672, 24694,42573,2980, 42573,2516, 11884,3643, 6039, 32302,26611,5380, 7045, 8337, 1166,
+ 35962,17532,9298, 7610, 17319,17134,40010,119, 21091,24131,2624, 265, 8672, 24694,42573,2980, 42573,2516, 11884,3643, 6039, 32302,26611,5380, 7045, 8337, 1166,
11146,38136,20325,15639,13539,36692,2346, 2093, 33874,13401,1670, 974, 28738,6822, 42572,35753,19356,3844, 16187,677, 854, 643, 3493, 13007,8467, 42572,35553,
- 2720, 29188,33216,17092,23596,35553,35643,9627, 9626, 12143,2802, 16415,36692,8267, 36692,598, 780, 10702,9021, 15528,1118, 3613, 7903, 1610, 25867,35835,3256,
- 4215, 30883,25866,10007,4222, 42572,9237, 21030,35553,42572,304, 8938, 40009,38290,5078, 1602, 15583,716, 21923,30560,37102,38136,34221,26241,4204, 4258, 4804,
+ 2720, 29188,33216,17092,23596,35553,35643,9627, 9626, 12143,2802, 16415,36692,8267, 36692,598, 780, 10702,9021, 15528,1118, 3613, 7903, 1610, 25867,35835,3256,
+ 4215, 30883,25866,10007,4222, 42572,9237, 21030,35553,42572,304, 8938, 40009,38290,5078, 1602, 15583,716, 21923,30560,37102,38136,34221,26241,4204, 4258, 4804,
20003,20324,1400, 170, 14394,9988, 40009,2906, 42571,35945,33874,38946,14494,13353,17133,32894,36691,1020, 42571,6285, 427, 34639,2064, 10283,34639,38135,36691,
- 4347, 2833, 42571,40009,13349,35552,42571,42570,6836, 36691,36691,33873,42570,22782,13679,7194, 19435,36124,36690,15211,40009,28737,42570,22097,42570,42569,594,
+ 4347, 2833, 42571,40009,13349,35552,42571,42570,6836, 36691,36691,33873,42570,22782,13679,7194, 19435,36124,36690,15211,40009,28737,42570,22097,42570,42569,594,
42569,21029,24693,11331,4124, 42569,34639,35507,38360,13006,34638,40008,40008,13005,14142,5348, 35552,33216,38135,38858,42569,3576, 7850, 5729, 34638,21812,42568,
42568,36690,42568,17686,30363,30428,15001,29317,29684,24131,40008,42568,33215,35800,38310,40008,42567,21811,35552,34638,34908,7851, 9421, 3571, 38542,28736,42567,
38135,32940,40007,38135,34638,2580, 8487, 38134,38134,35552,5153, 28735,32301,5679, 32300,40007,26539,37117,38134,40007,30427,34637,37049,34637,10772,4461, 29126,
@@ -16550,46 +16545,46 @@ static const unsigned short Ranks[197839] =
14141,2607, 9011, 28310,24689,4529, 9987, 32777,36689,42565,30425,9173, 42565,21810,13477,37731,7225, 10282,38133,38133,28731,40005,24691,3037, 16413,3802, 10957,
36689,10258,7991, 2853, 3970, 1742, 21498,24690,42565,38132,10954,36096,15209,16880,32298,21809,42565,32994,26294,35918,36297,32297,13899,11806,34637,12901,35551,
30424,42564,33215,35551,13253,18998,3421, 42564,10953,20322,5275, 40005,9986, 13537,42564,42564,20321,12900,17835,20320,7502, 8708, 35551,7501, 36689,5774, 42563,
- 36688,36688,21028,39177,22642,34796,185, 5730, 20862,32861,14902,16490,28157,8157, 21160,34920,36688,6335, 5639, 34636,14901,5627, 36768,5397, 15594,42563,1152,
+ 36688,36688,21028,39177,22642,34796,185, 5730, 20862,32861,14902,16490,28157,8157, 21160,34920,36688,6335, 5639, 34636,14901,5627, 36768,5397, 15594,42563,1152,
9968, 38132,36688,17940,1837, 693, 33358,35991,31048,37469,39143,13348,10388,15166,18582,13979,18131,42563,36687,40005,2450, 30423,37876,32296,23595,34636,10281,
- 34636,42563,14165,33171,34636,15366,36309,30712,36486,7850, 29284,31669,27207,40004,315, 13289,32887,6829, 33008,35712,3016, 38610,12500,3653, 28517,2942, 7269,
+ 34636,42563,14165,33171,34636,15366,36309,30712,36486,7850, 29284,31669,27207,40004,315, 13289,32887,6829, 33008,35712,3016, 38610,12500,3653, 28517,2942, 7269,
32295,9834, 36687,3114, 38132,38132,11776,7308, 34635,1935, 32294,34067,33873,20319,23594,15527,35550,17132,33725,25575,27891,36436,29994,33215,22355,1216, 24121,
28509,24209,34018,19452,32809,19283,9043, 18130,19596,38040,1817, 36177,1313, 39365,8979, 7977, 1901, 8878, 4109, 7948, 2920, 18075,38381,38877,38825,38289,20816,
31396,36635,17834,14140,36712,38131,12367,6150, 33978,25865,22814,22641,10242,38131,22198,9285, 1296, 21034,22682,40004,38131,5970, 36687,42562,4521, 21027,40004,
- 17312,42562,27206,13828,42562,40004,1164, 24926,13557,27508,37961,36687,14609,21035,10035,20815,28730,36130,35478,42562,42561,38131,33214,20714,8255, 6623, 1007,
+ 17312,42562,27206,13828,42562,40004,1164, 24926,13557,27508,37961,36687,14609,21035,10035,20815,28730,36130,35478,42562,42561,38131,33214,20714,8255, 6623, 1007,
2907, 33873,42561,21808,11544,30422,42561,21807,10607,33214,38130,24689,36686,42561,34635,42560,34635,11543,5423, 21806,40003,40003,24688,18997,28729,15995,35550,
33214,12748,3089, 35550,11330,40003,38130,24687,24686,40003,22359,38130,42560,34635,33873,12929,30421,37256,6347, 34430,24685,20127,10395,3962, 6701, 36686,33872,
22926,33872,19649,42560,40002,40002,20318,36686,3570, 40002,30420,40002,8241, 21026,24684,36686,33214,40001,36685,35550,23593,990, 24683,34634,34634,420, 22162,
3492, 2549, 38428,20317,3293, 12747,42560,32204,5678, 33213,8244, 666, 1306, 42559,24682,42559,34634,40001,42559,18129,5577, 36995,33213,33213,35241,21025,36685,
- 36685,33213,33872,31702,7193, 36685,28728,33212,5759, 42559,27205,42558,38130,36402,23592,4725, 36323,27070,9705, 1341, 35549,34634,35549,23591,14835,34633,2734,
+ 36685,33213,33872,31702,7193, 36685,28728,33212,5759, 42559,27205,42558,38130,36402,23592,4725, 36323,27070,9705, 1341, 35549,34634,35549,23591,14835,34633,2734,
35549,13004,37272,28727,18996,39050,34633,33212,10127,33212,7408, 38129,40001,4426, 13838,21805,30419,9050, 9704, 40001,11542,8370, 35549,36684,42558,38129,38129,
36469,9561, 18271,36684,18433,40000,19648,42558,27204,6448, 38905,38123,17311,38129,5388, 42558,40000,34214,42557,36684,42557,16975,38110,42557,3207, 4964, 35548,
23843,40000,460, 38128,3491, 357, 37734,16412,876, 40000,35548,34633,36684,42557,33212,28709,36641,8822, 9833, 33880,29648,5738, 14834,42556,27203,34633,21024,
36393,3548, 10126,2717, 42556,27062,18432,15581,33211,32293,42556,16257,12016,15208,15994,33872,39999,35548,39999,38128,2424, 39999,12015,36683,5387, 42556,36683,
- 3420, 13837,36683,28726,5868, 33871,12114,2427, 4798, 33871,16842,35548,8973, 8233, 15526,32292,3485, 18431,42555,5953, 27886,29982,4581, 1687, 8026, 4174, 9844,
+ 3420, 13837,36683,28726,5868, 33871,12114,2427, 4798, 33871,16842,35548,8973, 8233, 15526,32292,3485, 18431,42555,5953, 27886,29982,4581, 1687, 8026, 4174, 9844,
21804,39999,38635,36683,20814,1741, 31584,17131,35246,5728, 33766,27202,39998,36682,33871,27201,38128,721, 13892,36259,14923,2603, 911, 17937,254, 26831,11228,
31092,22027,16860,30878,31169,15993,14366,774, 18995,38128,38686,42555,20813,42555,23392,38127,39998,42555,3407, 13139,21023,12367,6836, 30906,42554,34632,42554,
36682,11964,42554,32553,33871,39998,38127,39998,42554,38127,36682,3086, 39997,27200,34632,35547,39997,652, 26371,11801,17394,4079, 31499,4602, 32892,19647,36682,
13252,42553,6568, 33211,42553,29415,10257,10701,21803,42553,9293, 6892, 29315,39997,5870, 21408,12449,36681,38127,3649, 39166,32291,39997,14493,36990,42553,22640,
- 38126,42552,38126,2165, 42552,25864,20812,38774,39996,36681,35728,1707, 38126,27199,38126,42552,807, 24608,6081, 795, 16385,11825,8979, 35547,5013, 38125,5235,
+ 38126,42552,38126,2165, 42552,25864,20812,38774,39996,36681,35728,1707, 38126,27199,38126,42552,807, 24608,6081, 795, 16385,11825,8979, 35547,5013, 38125,5235,
28725,505, 39996,714, 42552,42551,35547,13432,6964, 3713, 22639,5992, 33232,33870,42551,4890, 36681,31031,39996,26624,35352,18128,17310,15207,36681,19646,30418,
- 32290,39028,1814, 14355,42551,34632,2842, 39996,30417,21022,18994,23590,30416,162, 11274,35704,32332,39335,38125,583, 27257,3088, 25479,42551,157, 30939,275,
+ 32290,39028,1814, 14355,42551,34632,2842, 39996,30417,21022,18994,23590,30416,162, 11274,35704,32332,39335,38125,583, 27257,3088, 25479,42551,157, 30939,275,
39995,105, 13556,2225, 19645,35547,475, 29334,21156,42550,36954,35051,1305, 25152,620, 30415,38125,27406,26189,36680,32289,10606,5386, 19852,8821, 28724,25863,
- 2939, 42550,2658, 3648, 6618, 35546,2477, 2476, 33698,834, 1182, 2548, 24081,42550,39995,3087, 1794, 32875,37610,12120,34870,4785, 33276,710, 36094,1039, 6954,
+ 2939, 42550,2658, 3648, 6618, 35546,2477, 2476, 33698,834, 1182, 2548, 24081,42550,39995,3087, 1794, 32875,37610,12120,34870,4785, 33276,710, 36094,1039, 6954,
1116, 12502,19355,38593,6015, 18430,30742,33870,37255,10952,9625, 33870,28723,14900,42550,42549,36714,14557,28962,20316,33211,23589,42549,34632,12014,17130,38125,
7336, 38124,33211,19487,21021,8937, 38124,42549,38124,35546,42549,8618, 11226,42548,38124,11500,36680,33586,13348,36730,36870,33870,2195, 30763,34631,7933, 33210,
- 39995,38123,38123,3193, 11144,42548,39995,31337,3575, 33869,42548,21249,14710,37027,14899,9832, 42548,139, 8240, 42547,42547,35546,36680,34631,35546,17746,736,
+ 39995,38123,38123,3193, 11144,42548,39995,31337,3575, 33869,42548,21249,14710,37027,14899,9832, 42548,139, 8240, 42547,42547,35546,36680,34631,35546,17746,736,
924, 14898,12233,18993,6941, 7429, 8450, 19480,844, 16854,20811,1740, 10834,7424, 32288,16841,35029,39994,25862,42547,42547,35011,32287,17833,13536,3647, 36680,
6506, 38123,26315,39994,39994,2077, 38123,27198,23588,10700,8071, 34631,35545,6835, 36576,34249,42546,25861,39994,1695, 578, 31809,1803, 143, 13223,33210,33210,
33869,32956,37170,18143,42546,32286,12746,33869,21802,19109,42546,11346,1906, 22305,42546,8707, 39993,425, 39993,3574, 18127,37098,15337,39993,17426,26419,36036,
35902,2873, 36679,844, 20315,39993,21335,20314,33869,42545,15580,42545,42545,36679,1233, 2266, 27197,7820, 32862,34631,885, 28140,19931,39992,186, 19969,18126,
42545,42544,42544,38208,42544,36679,33210,22638,12232,31065,34630,23439,30703,88, 20810,119, 921, 39992,39992,17832,33209,16256,42544,15206,13535,10956,38334,
- 12499,42543,6706, 36679,21801,691, 3388, 31275,35644,32657,13219,36678,36672,38580,24238,376, 2893, 11182,917, 11406,23587,39992,36678,39991,6612, 23686,4618,
- 16, 14193,688, 30631,1131, 9432, 17261,21465,28709,12299,13022,14764,7269, 12087,23233,27170,31272,6835, 9560, 19112,39991,4460, 39991,31249,34294,39991,1443,
- 38122,42543,5618, 6590, 1653, 18429,9420, 8417, 29077,4899, 39032,39990,39990,813, 38880,13639,14897,10502,27254,35545,24749,7307, 39076,33473,1218, 36636,1077,
+ 12499,42543,6706, 36679,21801,691, 3388, 31275,35644,32657,13219,36678,36672,38580,24238,376, 2893, 11182,917, 11406,23587,39992,36678,39991,6612, 23686,4618,
+ 16, 14193,688, 30631,1131, 9432, 17261,21465,28709,12299,13022,14764,7269, 12087,23233,27170,31272,6835, 9560, 19112,39991,4460, 39991,31249,34294,39991,1443,
+ 38122,42543,5618, 6590, 1653, 18429,9420, 8417, 29077,4899, 39032,39990,39990,813, 38880,13639,14897,10502,27254,35545,24749,7307, 39076,33473,1218, 36636,1077,
42543,18428,7942, 783, 20313,36678,35097,14159,16411,42543,4935, 2022, 35545,11541,42542,33868,36713,37748,39990,38257,24569,28722,42542,34630,35545,42542,42542,
25787,6334, 23586,33147,32838,36678,25058,2963, 39990,39198,39989,39989,33209,42541,35544,19796,42541,39989,11778,36677,42541,9591, 34220,38288,38605,35544,20312,
- 34097,8485, 33209,42541,28721,24681,34802,36677,10186,42540,9487, 20471,25321,21020,21019,4655, 42540,15992,38122,35544,13695,19060,8369, 38122,287, 21387,9565,
+ 34097,8485, 33209,42541,28721,24681,34802,36677,10186,42540,9487, 20471,25321,21020,21019,4655, 42540,15992,38122,35544,13695,19060,8369, 38122,287, 21387,9565,
10955,14896,16676,15991,15490,32017,35084,24711,15420,908, 15623,42540,39989,15525,25860,38122,19644,11775,34630,29583,38121,14833,16840,6772, 3874, 15223,33436,
21719,42540,36677,39988,36677,4769, 10951,33938,17831,15579,16297,42539,17664,42539,33209,18427,22637,33208,19966,2096, 36676,42539,17309,14139,365, 42539,13531,
16100,35544,30414,11122,42538,36676,20311,18081,1934, 37804,817, 34630,35543,10771,10280,39988,5385, 27196,12498,20310,39988,38121,20309,39988,11805,18125,39987,
@@ -16597,15 +16592,15 @@ static const unsigned short Ranks[197839] =
38120,2679, 39987,34629,42538,34629,11804,7335, 32285,13003,18124,36675,11211,18992,42537,17308,21277,5540, 37245,24680,32670,22, 12619,23829,16255,15907,37658,
21018,14098,33247,32849,37637,35543,39987,10429,39254,33660,3668, 28147,42537,11506,10453,37316,27517,37457,39298,34014,9986, 1193, 37417,8896, 11420,5322, 35449,
37345,1532, 22993,17129,2993, 7026, 30283,25817,27323,32822,25719,6013, 38120,7031, 39407,42537,42537,19914,38000,37073,36445,18991,42536,25710,10062,36675,39986,
- 35542,33868,30428,32284,34629,8769, 12157,36047,30413,2059, 33868,28720,39986,11329,27195,39986,35238,33067,2696, 33208,39986,18260,9833, 25787,11455,32169,5354,
+ 35542,33868,30428,32284,34629,8769, 12157,36047,30413,2059, 33868,28720,39986,11329,27195,39986,35238,33067,2696, 33208,39986,18260,9833, 25787,11455,32169,5354,
18876,4638, 6437, 27451,10064,22917,22010,4405, 24737,29464,25190,34583,19354,10256,16431,12785,4841, 5087, 35542,34810,35542,13347,1302, 11934,5026, 5176, 36765,
38437,5067, 20432,17307,6232, 6157, 1694, 38988,1787, 39985,3397, 23516,2988, 39985,3493, 31494,12468,33207,34530,1121, 37326,5253, 17128,38120,37110,19353,37730,
39049,35542,42536,11803,13251,3276, 951, 11490,8588, 38008,34629,12414,28965,11499,38591,1098, 23636,8896, 38171,15792,34277,23756,4511, 10954,7299, 38606,27194,
10255,2724, 32283,12996,9172, 20735,31102,21426,6398, 12601,24679,5850, 16941,11578,6417, 34274,10362,6794, 26344,21619,27504,14134,22636,6545, 27590,31361,34098,
- 42536,17306,504, 5625, 21140,24082,31595,38261,38841,7050, 39985,38120,39060,28964,34628,7462, 28713,2695, 39985,5318, 12192,25388,2971, 629, 32108,21199,8059,
+ 42536,17306,504, 5625, 21140,24082,31595,38261,38841,7050, 39985,38120,39060,28964,34628,7462, 28713,2695, 39985,5318, 12192,25388,2971, 629, 32108,21199,8059,
39256,34966,32456,17809,7384, 34006,31852,25620,19352,39984,24722,35005,22264,37514,23585,34628,4566, 6528, 27157,39984,36675,21017,8820, 38119,38119,35541,35541,
39984,42536,7044, 17830,42535,4156, 21291,11482,36814,1328, 2277, 13038,20084,5609, 4547, 38781,20724,16864,37724,21940,38119,33500,30209,38119,13246,34566,15103,
- 42535,11620,25650,33868,39984,39983,42535,39983,11774,39983,19962,17829,38118,10605,38118,39983,33207,38860,39982,17305,18426,22537,19351,1753, 32835,31601,6387,
+ 42535,11620,25650,33868,39984,39983,42535,39983,11774,39983,19962,17829,38118,10605,38118,39983,33207,38860,39982,17305,18426,22537,19351,1753, 32835,31601,6387,
10452,1316, 33867,11225,39982,42535,14813,18123,3534, 39982,1991, 33207,42534,24678,755, 26609,19836,39982,29816,27876,10033,21016,39981,9831, 39981,9073, 30412,
42534,3783, 1435, 27052,39981,3888, 42534,38118,32282,33207,39981,8484, 11224,24677,34202,34628,42534,702, 42533,23647,38118,38621,18122,11802,14894,32281,42533,
36674,36674,34554,451, 6834, 36674,19350,18472,42533,17828,39980,19742,42533,42532,13250,42532,3869, 27193,27192,39980,21564,21015,14893,34587,23584,34628,19810,
@@ -16618,15 +16613,15 @@ static const unsigned short Ranks[197839] =
2902, 14892,19306,22554,2820, 18989,33206,42529,9828, 18119,28717,6597, 3579, 12908,3108, 13002,4313, 22463,3817, 19348,1651, 2515, 35149,829, 16715,13329,16532,
10125,25148,28040,33825,4795, 15990,36651,2194, 28670,42529,36671,27507,29775,21406,36035,3221, 34190,42529,39978,20807,6826, 38421,23583,34358,17808,23259,38763,
14348,42528,27190,26961,10953,42528,35, 32970,24214,776, 11717,6450, 989, 27222,19171,9832, 8201, 33132,29712,9830, 755, 29299,24659,30447,19468,3906, 19347,
- 3017, 33866,39978,33206,17071,6899, 445, 14360,15522,5557, 5802, 32279,37742,29281,15810,9829, 1984, 28716,2475, 746, 36518,789, 843, 36203,38116,14138,8916,
- 23655,3194, 33506,35592,5846, 39977,39977,39977,23582,25532,18584,14088,24676,1986, 5822, 8544, 39977,35231,16738,42528,15435,13827,38674,23891,2856, 3418, 3352,
+ 3017, 33866,39978,33206,17071,6899, 445, 14360,15522,5557, 5802, 32279,37742,29281,15810,9829, 1984, 28716,2475, 746, 36518,789, 843, 36203,38116,14138,8916,
+ 23655,3194, 33506,35592,5846, 39977,39977,39977,23582,25532,18584,14088,24676,1986, 5822, 8544, 39977,35231,16738,42528,15435,13827,38674,23891,2856, 3418, 3352,
3490, 98, 25984,3489, 13533,38116,38116,230, 10952,33866,37445,14137,23873,22813,38115,689, 11197,33014,29605,30862,27265,7093, 25606,6332, 38115,25516,38235,
13536,36192,6176, 617, 42528,35734,38115,1636, 2752, 13545,32278,28721,38684,12028,42527,39976,22632,16416,39976,35572,3374, 38319,33205,16410,15521,21014,42527,
- 29785,5252, 33205,6978, 34380,11159,37070,37381,38413,4934, 25300,31401,12142,5583, 16253,14891,39976,3421, 22040,5043, 13836,37563,21799,1911, 7995, 4308, 589,
+ 29785,5252, 33205,6978, 34380,11159,37070,37381,38413,4934, 25300,31401,12142,5583, 16253,14891,39976,3421, 22040,5043, 13836,37563,21799,1911, 7995, 4308, 589,
34996,5296, 15520,2286, 38115,42527,35442,42527,20306,37048,2152, 18136,23581,3180, 32911,31208,12231,10254,20216,4853, 14890,4997, 14085,9204, 19182,33257,24406,
19973,8759, 9198, 9295, 19346,39976,1215, 787, 39303,39975,42526,38114,33205,33205,36671,36671,3130, 35539,38114,42526,34157,37455,37851,13826,39351,38114,39975,
15577,33204,28807,647, 6825, 29368,28089,33712,5718, 25857,1725, 3, 3071, 17167,13968,42526,28085,8132, 33204,29131,27311,38114,16409,11929,25874,13532,30411,
- 2924, 13217,19641,21798,21013,32277,36670,38113,9828, 33866,34627,36670,6833, 31295,5495, 8936, 33865,5446, 28715,15205,35539,35539,12141,25856,34627,30794,2073,
+ 2924, 13217,19641,21798,21013,32277,36670,38113,9828, 33866,34627,36670,6833, 31295,5495, 8936, 33865,5446, 28715,15205,35539,35539,12141,25856,34627,30794,2073,
38113,42526,8368, 38113,38113,38112,39975,39114,25855,3784, 35693,7030, 24675,35539,33204,42525,20312,33204,2536, 39975,28714,38112,42525,4698, 8367, 18988,42525,
21797,2447, 38238,3677, 22240,36670,16252,296, 8146, 31986,295, 8653, 39974,8483, 21012,3763, 3488, 19882,1294, 38112,146, 14889,4102, 32471,2332, 10164,23021,
2389, 38555,23948,39300,14143,37796,38720,22420,5798, 16600,16408,21011,10770,6284, 36670,3223, 36669,9559, 34207,8388, 19476,4787, 28713,12140,4589, 42525,11268,
@@ -16635,15 +16630,15 @@ static const unsigned short Ranks[197839] =
5701, 10435,22271,1902, 32276,25854,11540,38647,36233,3525, 12013,27649,33203,38891,1343, 10821,15536,13001,1875, 25309,5909, 36668,36668,5347, 4029, 23996,39973,
28746,38225,38111,42523,21472,36299,3400, 33203,38111,1462, 5697, 20941,18987,23483,42523,1911, 34447,11822,39973,25853,30410,1469, 21932,35538,39973,21010,15989,
33865,20305,42523,38111,34998,15988,1316, 914, 35334,36569,15518,32385,14831,16251,39972,33203,10279,42523,35538,32778,42522,1874, 42522,30409,14492,39972,19640,
- 39972,39972,7708, 21863,23375,12230,21796,2116, 27189,11773,7591, 18737,4102, 3668, 599, 35566,12082,42522,42522,22631,39971,14136,2257, 32777,33044,23580,369,
+ 39972,39972,7708, 21863,23375,12230,21796,2116, 27189,11773,7591, 18737,4102, 3668, 599, 35566,12082,42522,42522,22631,39971,14136,2257, 32777,33044,23580,369,
35538,7086, 33202,33073,6783, 6671, 2141, 2553, 12037,23593,19951,39971,36202,18118,32275,33018,2164, 20097,37152,38110,16407,34274,10124,33263,12012,18986,10265,
15167,8935, 38110,42521,39971,18424,39971,22630,39970,42521,10428,33865,38685,8617, 32611,42521,34728,30186,39007,11801,39970,9049, 33864,19639,15221,32274,13834,
18176,5077, 38110,26284,9703, 42521,8200, 32879,37255,17304,42520,8243, 19345,1186, 35887,38110,1829, 38109,22629,6388, 38006,42520,39970,38109,22628,35221,15576,
- 12745,2684, 39970,35537,9048, 34626,6168, 39164,36667,25852,33202,31011,20595,19344,34626,20806,35355,1397, 15517,13689,36055,9791, 29139,36181,12964,9755, 2520,
- 13833,33202,16250,31741,2789, 34688,36667,33202,22132,8706, 39057,9419, 32993,18484,13000,11, 15928,18309,22558,13257,22816,9907, 26070,3487, 32838,18913,3206,
+ 12745,2684, 39970,35537,9048, 34626,6168, 39164,36667,25852,33202,31011,20595,19344,34626,20806,35355,1397, 15517,13689,36055,9791, 29139,36181,12964,9755, 2520,
+ 13833,33202,16250,31741,2789, 34688,36667,33202,22132,8706, 39057,9419, 32993,18484,13000,11, 15928,18309,22558,13257,22816,9907, 26070,3487, 32838,18913,3206,
37579,39969,2512, 42520,9594, 4398, 22215,21795,33201,36667,38109,32273,1459, 35537,42520,33201,14491,7204, 36237,1360, 15575,2367, 39969,36667,15574,26083,20199,
35232,39969,32547,42519,39969,11328,13531,39968,30408,30418,42519,21794,39968,38109,39968,12229,34626,19159,33201,25851,22627,12702,9558, 1773, 38108,18117,33864,
- 1327, 36666,228, 28629,597, 145, 36918,1752, 5785, 4789, 35095,10031,737, 3619, 3388, 37402,42519,2041, 4642, 6705, 20471,34504,2137, 37396,36666,34625,9026,
+ 1327, 36666,228, 28629,597, 145, 36918,1752, 5785, 4789, 35095,10031,737, 3619, 3388, 37402,42519,2041, 4642, 6705, 20471,34504,2137, 37396,36666,34625,9026,
2176, 1649, 25850,27188,38357,39051,38108,14888,14887,42519,6012, 11772,36666,8464, 24943,39968,39967,26958,14700,8873, 2847, 6982, 1967, 34151,1271, 10040,34460,
26787,35793,33785,922, 21446,10477,35085,28466,32906,16249,15204,20626,38027,25088,4075, 17911,30285,30552,28209,20422,15439,35108,24281,3471, 3719, 14681,34641,
27725,34117,5354, 16248,15516,33201,17827,7218, 17826,42518,37368,34625,34204,37442,34494,38039,28606,6157, 34625,11470,22626,34625,30407,18985,36666,34624,13530,
@@ -16651,41 +16646,41 @@ static const unsigned short Ranks[197839] =
24319,25052,29622,39967,34022,18248,1871, 8023, 12264,26876,38487,13226,22073,20304,17825,8131, 30948,13344,2571, 25060,18984,38648,27187,33864,5422, 12249,33864,
5384, 24673,34624,6662, 28132,24623,7100, 9827, 42518,35537,32298,34154,35536,10278,15203,39967,34624,38108,42518,24672,39967,1925, 26479,36665,42517,37221,39966,
32272,2748, 14358,33264,39966,42517,263, 42517,611, 15684,26672,36056,6690, 8199, 17675,38387,2376, 10253,6217, 23783,2085, 42517,39966,20805,23841,10277,42516,
- 9557, 36665,38108,42516,17225,217, 241, 4850, 21805,13832,42516,12830,35391,6500, 416, 6905, 30406,4074, 21348,6689, 39966,39965,2448, 10252,36664,4362, 341,
+ 9557, 36665,38108,42516,17225,217, 241, 4850, 21805,13832,42516,12830,35391,6500, 416, 6905, 30406,4074, 21348,6689, 39966,39965,2448, 10252,36664,4362, 341,
35536,24671,623, 9950, 32271,42516,35091,36502,36464,42515,35674,37371,14645,17050,14597,28711,19039,20723,21793,34624,855, 16258,33870,38107,39060,886, 31355,
- 758, 22161,25625,1458, 35536,22625,34623,20303,30328,485, 8568, 39965,23579,30458,13831,8758, 8034, 36664,9932, 1502, 39965,3275, 1293, 26750,5586, 22861,6233,
- 2733, 597, 27415,5910, 18548,32906,19817,18842,31569,21691,30915,9999, 38849,37137,7712, 35176,34384,39965,5931, 15554,27658,12603,18842,21258,29177,29795,7629,
+ 758, 22161,25625,1458, 35536,22625,34623,20303,30328,485, 8568, 39965,23579,30458,13831,8758, 8034, 36664,9932, 1502, 39965,3275, 1293, 26750,5586, 22861,6233,
+ 2733, 597, 27415,5910, 18548,32906,19817,18842,31569,21691,30915,9999, 38849,37137,7712, 35176,34384,39965,5931, 15554,27658,12603,18842,21258,29177,29795,7629,
24426,4911, 42515,15202,21917,38872,35041,26548,15646,7334, 42515,38107,42515,4221, 39317,30047,18314,9556, 11498,38362,39158,1704, 33863,39964,27497,4346, 18121,
28686,18092,33863,35536,32270,4366, 25924,38107,33800,17019,20804,13051,20875,29591,26439,32800,35744,38107,28374,39964,38106,22624,37228,33162,155, 16497,34391,
17285,27800,35188,21120,39964,15960,20946,20527,33286,25396,15717,18487,18983,1691, 2056, 6788, 24225,17303,4477, 33796,5784, 4763, 31303,9826, 35400,13249,19065,
33560,1689, 4861, 37921,20803,12500,3838, 38103,33867,14932,11771,39964,19343,5843, 18116,13343,9624, 11497,35535,39963,15370,42514,42514,38106,34623,12497,35535,
39344,20302,11539,36664,38277,8937, 20393,20802,36664,2066, 6624, 14063,18282,12744,8419, 14084,13825,35481,42514,42514,34623,37317,27186,18423,8887, 36667,30405,
39963,14504,35513,42513,38164,27185,5197, 13520,39963,8198, 42513,36978,27184,1323, 16222,30348,8336, 18422,38106,28474,17125,168, 33049,13596,13842,33422,17347,
- 37283,5051, 3476, 10366,29562,7963, 36520,37560,2319, 3942, 39963,39962,18153,15987,24670,3077, 133, 33200,16448,8757, 612, 1426, 25871,14886,32920,33200,5512,
- 30377,36361,38106,39962,36663,10950,39049,36607,37821,14830,13828,39962,42513,25849,33085,38105,16365,18982,1000, 30404,17824,4493, 25848,38105,4593, 1035, 965,
- 27335,42513,35535,1778, 27377,35535,35534,7044, 7306, 42512,4819, 1391, 39962,38105,918, 34623,6703, 32269,4163, 42512,36069,30403,2480, 11800,39961,12011,7664,
+ 37283,5051, 3476, 10366,29562,7963, 36520,37560,2319, 3942, 39963,39962,18153,15987,24670,3077, 133, 33200,16448,8757, 612, 1426, 25871,14886,32920,33200,5512,
+ 30377,36361,38106,39962,36663,10950,39049,36607,37821,14830,13828,39962,42513,25849,33085,38105,16365,18982,1000, 30404,17824,4493, 25848,38105,4593, 1035, 965,
+ 27335,42513,35535,1778, 27377,35535,35534,7044, 7306, 42512,4819, 1391, 39962,38105,918, 34623,6703, 32269,4163, 42512,36069,30403,2480, 11800,39961,12011,7664,
28710,42512,25847,6541, 21072,33863,6387, 3501, 42512,29465,15975,10251,5317, 1312, 19995,2790, 12999,11725,14652,2728, 2410, 36265,35534,39961,16950,36091,35833,
33049,8854, 6501, 9272, 6406, 29290,35534,36663,34010,12899,39961,13248,39961,16406,34695,2741, 7133, 33356,26898,20801,9010, 10025,16303,33877,38105,14624,18597,
- 33326,33863,39960,33862,5055, 8705, 8366, 24669,36663,39960,42511,39960,33862,28709,5383, 38104,39960,42511,7663, 42511,35534,34622,36663,38104,38104,42511,3608,
+ 33326,33863,39960,33862,5055, 8705, 8366, 24669,36663,39960,42511,39960,33862,28709,5383, 38104,39960,42511,7663, 42511,35534,34622,36663,38104,38104,42511,3608,
36662,42510,38104,7755, 39959,34622,39959,33200,24539,39959,37138,22623,33862,38103,33200,17124,28385,10276,23578,38103,35533,34902,34857,27183,24668,35533,42510,
- 42510,34622,20301,36662,38103,8704, 42510,42509,38103,15986,38102,12998,42509,42509,32938,23577,34622,36662,42509,2674, 42508,37762,35533,22622,42508,30402,3547,
+ 42510,34622,20301,36662,38103,8704, 42510,42509,38103,15986,38102,12998,42509,42509,32938,23577,34622,36662,42509,2674, 42508,37762,35533,22622,42508,30402,3547,
2716, 35533,1775, 20800,4108, 13385,42508,2680, 33862,406, 2869, 18844,23165,10585,23360,24555,34872,37201,42508,16486,17562,29804,36029,23224,33199,32268,24667,
39959,36662,38102,7940, 42507,5926, 34127,35878,22821,36661,20578,34621,5725, 22410,5234, 24666,36735,2948, 22813,2827, 7508, 33067,36864,24114,16059,20405,27053,
- 32485,20027,34621,37401,11977,9886, 36902,4848, 15630,568, 20023,20300,28760,8350, 2705, 28645,42507,30395,8423, 38102,27781,35532,33519,6888, 2530, 13529,3573,
+ 32485,20027,34621,37401,11977,9886, 36902,4848, 15630,568, 20023,20300,28760,8350, 2705, 28645,42507,30395,8423, 38102,27781,35532,33519,6888, 2530, 13529,3573,
25846,28708,12997,30459,18428,35532,29230,6067, 10123,39958,27182,33861,35532,35846,24665,36661,26658,4228, 42507,30401,36661,42507,32267,33861,42506,16405,23576,
35532,38102,42506,16404,34141,2511, 30400,39958,18115,20799,9120, 19165,7185, 30913,91, 3486, 32266,20299,9292, 14869,7939, 33400,19342,39958,4808, 26665,42506,
34621,32022,36222,14135,28707,35075,10949,39958,33199,4702, 30399,20475,28010,39957,14134,38101,34380,34568,25328,2619, 36383,38432,39957,27381,11748,421, 19789,
9013, 5763, 20184,7634, 349, 34621,39957,30652,2347, 10789,876, 23524,12742,27473,9098, 35881,24518,7581, 22721,15201,39957,23970,39956,19179,1234, 32886,17123,
8130, 11039,1036, 10459,27395,26582,13705,12190,3667, 31204,24033,24783,5177, 8232, 19786,32856,24492,8467, 17865,35401,9721, 29457,2447, 34620,42506,13247,15573,
38101,5585, 34620,33861,2423, 33861,35483,36661,3546, 2320, 33206,42505,1967, 17284,8805, 42505,30398,24796,38101,36660,25235,35531,4617, 42505,19341,39956,42505,
- 42504,38101,36800,27652,11770,20605,20279,42504,39956,16246,38100,25845,24593,664, 1035, 38100,32265,28706,36660,3086, 38100,37985,39956,5708, 134, 24936,3891,
- 15381,11117,27266,19716,17623,13896,14196,11226,36038,25208,12743,38100,32812,38236,4014, 19340,19339,4637, 1225, 14090,17122,6152, 8129, 27181,18114,21792,5296,
+ 42504,38101,36800,27652,11770,20605,20279,42504,39956,16246,38100,25845,24593,664, 1035, 38100,32265,28706,36660,3086, 38100,37985,39956,5708, 134, 24936,3891,
+ 15381,11117,27266,19716,17623,13896,14196,11226,36038,25208,12743,38100,32812,38236,4014, 19340,19339,4637, 1225, 14090,17122,6152, 8129, 27181,18114,21792,5296,
1473, 862, 6636, 82, 33002,42504,13246,42504,34620,27180,16707,10975,17506,42503,23438,25542,35550,38099,33860,3897, 33199,34451,18634,28705,39955,14572,33199,
9554, 4323, 27179,11222,42503,38099,15985,579, 22621,35903,2151, 9372, 30197,8756, 38492,12175,5590, 31445,32264,37639,38099,34620,834, 8370, 33158,36260,35028,
- 36660,34703,39955,5316, 12228,35531,31463,38099,37851,35934,6311, 31095,7445, 21147,38675,3921, 29619,39955,33990,38994,9150, 7109, 17776,32855,25511,38498,7754,
+ 36660,34703,39955,5316, 12228,35531,31463,38099,37851,35934,6311, 31095,7445, 21147,38675,3921, 29619,39955,33990,38994,9150, 7109, 17776,32855,25511,38498,7754,
36187,16838,13528,37208,3042, 33860,13840,1491, 36660,39148,37694,13342,28704,10948,34217,7256, 33860,10772,9291, 23575,39296,24664,31291,38033,3839, 18421,36485,
22706,35812,24113,33303,30752,15550,33014,20298,15984,42503,13483,15572,38295,37584,1947, 35052,34619,3651, 31128,38098,2092, 11496,38098,227, 910, 14490,39955,
- 13627,35531,39954,36659,22620,5556, 21791,39954,29372,17121,42503,34619,18113,39954,54, 16245,20297,38098,32810,32937,12482,532, 14357,1855, 9271, 1773, 199,
+ 13627,35531,39954,36659,22620,5556, 21791,39954,29372,17121,42503,34619,18113,39954,54, 16245,20297,38098,32810,32937,12482,532, 14357,1855, 9271, 1773, 199,
25848,25413,5555, 4920, 18112,293, 18533,7762, 6460, 20983,13475,33860,28732,28703,13341,1676, 13340,15750,8197, 32813,1522, 32275,32983,20798,17120,4286, 20797,
17119,2535, 15515,6764, 7402, 12499,16812,6584, 10699,20796,5908, 1157, 21258,4704, 3631, 9119, 14356,2451, 39954,28702,13339,33859,27178,7707, 9788, 38098,26845,
10304,33859,42502,28701,30397,9241, 17804,8518, 36659,34619,23218,30396,3510, 39953,33859,42502,1906, 28372,42502,31, 21220,22742,42502,13245,39953,21790,25056,
@@ -16693,10 +16688,10 @@ static const unsigned short Ranks[197839] =
21790,36281,28700,18111,17302,661, 24960,36987,28699,34694,18725,18110,36166,2890, 8287, 23884,20961,12139,2315, 15925,3646, 38096,9668, 15571,1946, 1917, 38096,
1382, 1741, 25466,35530,36659,34619,335, 442, 25844,16403,451, 38096,25843,17118,36658,34618,42501,11117,15570,37996,2058, 1394, 17822,28698,8128, 33198,27177,
25842,302, 16511,11322,2938, 14725,38096,187, 2986, 26644,42501,34618,32263,78, 2985, 2547, 25841,647, 7295, 16465,36145,3724, 36184,35781,24058,38095,30775,
- 2892, 42501,1590, 1171, 9290, 34618,32262,39953,2732, 36148,2853, 34618,35530,33198,39040,540, 26546,5783, 35972,42500,23574,34617,42500,33210,165, 20795,1683,
+ 2892, 42501,1590, 1171, 9290, 34618,32262,39953,2732, 36148,2853, 34618,35530,33198,39040,540, 26546,5783, 35972,42500,23574,34617,42500,33210,165, 20795,1683,
1087, 2937, 751, 18786,3723, 14355,34610,28697,34617,34937,36658,30395,33198,33859,11143,2546, 39952,569, 42500,42500,12742,42499,7571, 6611, 42499,42499,42499,
24333,33858,28696,34617,33198,394, 36658,16402,33858,21010,1112, 4841, 14371,20876,32419,2443, 2691, 42498,9984, 24978,13244,17916,33858,39952,36658,37314,38095,
- 35530,7610, 771, 36657,36657,34617,39952,20794,39952,35530,42498,17821,38095,39951,11327,734, 38095,33858,1846, 15569,35906,20296,42498,22815,39951,31589,292,
+ 35530,7610, 771, 36657,36657,34617,39952,20794,39952,35530,42498,17821,38095,39951,11327,734, 38095,33858,1846, 15569,35906,20296,42498,22815,39951,31589,292,
11503,19420,26060,35529,15600,38116,39951,11432,39951,30394,9681, 37382,42498,152, 35995,38094,36149,39950,36657,39950,17820,20436,36657,7643, 33998,11799,36656,
10822,39371,32660,42497,42497,17301,38094,39183,4889, 16244,23159,42497,993, 10698,36656,38094,27176,748, 3500, 6284, 39950,20874,4431, 39950,24662,507, 13338,
33857,13527,3145, 6985, 8520, 13484,8482, 39949,34616,570, 23082,1177, 2366, 36656,42497,39949,42496,32261,4365, 1165, 11326,38094,3356, 25840,42496,6283, 35529,
@@ -16708,14 +16703,14 @@ static const unsigned short Ranks[197839] =
25305,11259,24466,32866,16645,23215,14383,12584,10677,11084,22326,20307,28412,17516,32264,28610,12763,30695,13123,24523,27291,26783,31618,2353, 15251,13879,30964,
24405,28053,20891,13829,18420,29529,42494,13387,5113, 13105,27828,3598, 23433,39946,32973,30391,25844,19593,11700,10998,37962,430, 8703, 27768,17081,9211, 20736,
28117,13436,30383,9032, 32903,10398,39946,6495, 17157,24495,27807,16069,6596, 17175,1815, 27575,3129, 7719, 2221, 5821, 5152, 3128, 12898,14354,13828,4072, 27832,
- 16243,1093, 2422, 42494,28555,14884,19242,414, 7652, 7625, 7507, 20483,360, 9051, 30887,11140,8807, 33197,39946,35528,38093,19839,12811,25453,11312,357, 2799,
- 27185,15446,10758,32260,19998,650, 34616,42494,15164,22529,36654,17818,18419,38092,5808, 10604,42494,15444,266, 32879,494, 32926,32415,20791,2791, 9570, 8335,
+ 16243,1093, 2422, 42494,28555,14884,19242,414, 7652, 7625, 7507, 20483,360, 9051, 30887,11140,8807, 33197,39946,35528,38093,19839,12811,25453,11312,357, 2799,
+ 27185,15446,10758,32260,19998,650, 34616,42494,15164,22529,36654,17818,18419,38092,5808, 10604,42494,15444,266, 32879,494, 32926,32415,20791,2791, 9570, 8335,
9267, 20986,22690,14941,24639,14308,31062,23552,18781,42493,23932,42493,12248,1388, 3721, 9288, 14320,12822,8913, 4932, 12806,519, 9035, 8707, 24826,42493,38092,
39946,20295,1483, 28694,38092,6038, 36258,966, 35528,13335,16836,21009,27174,8480, 38092,42493,17817,35527,34615,42492,21008,453, 42492,39945,17512,38462,42492,
35592,36653,28693,5907, 35527,9568, 246, 38091,347, 32259,13243,15568,505, 19019,5547, 7850, 36444,12138,574, 21789,2529, 17582,36653,31690,39945,33197,34615,
25835,22211,4979, 8859, 42492,4083, 10250,7938, 3762, 14488,16515,25834,42491,8127, 5494, 1485, 8933, 23572,1089, 11797,6447, 35527,38091,19638,37115,33089,42491,
28754,3357, 3868, 42491,1891, 7701, 8947, 34375,36388,7819, 2036, 42491,2021, 546, 39945,35527,38091,34615,7002, 39945,8819, 4580, 33856,890, 35526,38091,38090,
- 32258,29380,15514,34510,42490,7267, 26642,34615,36653,37634,39944,38090,35526,7753, 39944,19847,9554, 36417,16549,17542,38286,38144,34653,6918, 12165,17329,4766,
+ 32258,29380,15514,34510,42490,7267, 26642,34615,36653,37634,39944,38090,35526,7753, 39944,19847,9554, 36417,16549,17542,38286,38144,34653,6918, 12165,17329,4766,
21498,2316, 3578, 33813,9169, 28857,12108,11925,18689,6313, 15271,11680,32837,32143,22335,3314, 7527, 34614,42490,39056,32257,3235, 1892, 16890,15723,42490,42490,
39944,42489,792, 3485, 1170, 26221,21950,34614,35420,8754, 3568, 38431,42489,33907,30687,38206,42489,39250,42489,13824,42488,11155,33856,14883,11591,38090,22575,
34308,39944,33197,42488,36653,26097,25671,7500, 19637,21788,34548,38090,5624, 36652,36203,32920,38965,33196,33196,17117,19336,20790,31231,17372,36688,13489,11769,
@@ -16723,25 +16718,25 @@ static const unsigned short Ranks[197839] =
17299,8150, 33196,30058,11873,867, 9701, 36117,9684, 33009,34055,38089,33856,39943,39943,36652,33196,37087,30390,12496,42487,2936, 457, 32132,7372, 1802, 13823,
686, 35949,36652,9118, 33378,28692,28883,25833,1399, 692, 1754, 6173, 789, 12854,20699,42487,1181, 642, 3036, 145, 32910,1960, 498, 717, 39942,18981,42487,
19335,969, 501, 32254,39942,16400,6666, 33025,38089,25832,38089,25831,25830,2923, 5421, 38089,8242, 10476,20817,4477, 3193, 42487,25829,34614,8507, 21787,39942,
- 20789,34613,39942,283, 471, 30201,17560,6325, 2215, 9656, 32262,13036,28270,14748,22555,19611,1398, 9424, 19724,21085,23940,10560,16252,19741,31202,1860, 9007,
- 6949, 5438, 7314, 27208,28390,42486,34613,24348,7609, 2047, 1051, 34403,23426,32239,11142,206, 26756,27030,24447,12349,32116,17116,15567,42486,38088,16399,6831,
- 33855,21786,39941,42486,35525,42486,28691,33195,26930,42485,38735,39941,30389,33855,38154,36652,20205,34530,27586,5347, 2446, 28081,2984, 34613,39941,33195,8365,
+ 20789,34613,39942,283, 471, 30201,17560,6325, 2215, 9656, 32262,13036,28270,14748,22555,19611,1398, 9424, 19724,21085,23940,10560,16252,19741,31202,1860, 9007,
+ 6949, 5438, 7314, 27208,28390,42486,34613,24348,7609, 2047, 1051, 34403,23426,32239,11142,206, 26756,27030,24447,12349,32116,17116,15567,42486,38088,16399,6831,
+ 33855,21786,39941,42486,35525,42486,28691,33195,26930,42485,38735,39941,30389,33855,38154,36652,20205,34530,27586,5347, 2446, 28081,2984, 34613,39941,33195,8365,
15566,2975, 22581,32409,34717,25828,16669,39941,17672,38259,38088,38462,19866,33195,36651,39940,6635, 1639, 27585,28187,35460,28638,21785,1669, 39940,25827,42485,
18418,12996,11768,13214,39940,21784,7499, 25826,42485,33855,39940,36651,42485,34613,35525,19636,39939,20294,9170, 20788,39939,36651,42484,36651,39939,632, 15983,
42484,42484,38088,36650,13242,14133,33195,42484,42483,42483,19921,32253,21783,38088,2891, 42483,36650,5050, 33855,42483,12995,27173,39939,17298,38087,9047, 12431,
34372,31154,16981,37702,6005, 6665, 37878,42482,8361, 17816,37223,38087,39131,12584,13455,38087,3108, 33606,11495,38937,24657,9354, 931, 35525,8616, 30817,19680,
20293,33194,25825,38087,23571,39938,33812,23570,7266, 21782,983, 23181,42482,42482,36650,102, 21845,659, 2510, 33031,33854,13988,38086,39938,35013,13111,39324,
- 17116,1571, 25824,11234,21781,27655,34612,42482,7210, 25059,27915,28134,18417,15565,36650,21257,38086,35525,36120,39938,286, 16079,30388,15199,7192, 4257, 9417,
+ 17116,1571, 25824,11234,21781,27655,34612,42482,7210, 25059,27915,28134,18417,15565,36650,21257,38086,35525,36120,39938,286, 16079,30388,15199,7192, 4257, 9417,
42481,31998,13827,34962,42481,34244,35170,33194,35524,35214,30486,18980,28690,348, 42481,36649,23811,38086,38086,12897,16242,6283, 20787,28963,39938,34049,35524,
1359, 37558,5076, 33194,42481,11767,39937,33854,21780,42480,8334, 36649,35786,3888, 31666,18108,12498,23431,34405,38857,32252,35642,20786,28251,42480,32251,23569,
- 16603,38533,33381,23618,19374,39004,5505, 23768,15330,35983,42480,32420,34680,12766,11773,35524,8932, 38085,35989,10947,4592, 18107,20785,2340, 8702, 39937,9117,
+ 16603,38533,33381,23618,19374,39004,5505, 23768,15330,35983,42480,32420,34680,12766,11773,35524,8932, 38085,35989,10947,4592, 18107,20785,2340, 8702, 39937,9117,
6719, 8912, 18673,10122,39937,25656,437, 10475,33194,4050, 29352,39322,2532, 8753, 10275,634, 5847, 5696, 5990, 15513,15512,6820, 39937,1137, 35158,16835,18979,
3455, 21007,35524,38085,35524,8364, 36649,12227,13334,11325,39936,32250,42480,34612,21779,4044, 19635,39936,39936,8818, 39936,24656,5010, 35540,34612,33854,25823,
11537,35523,1463, 22011,32249,12910,42479,19456,35996,22964,33854,34925,37233,35052,36649,3769, 29294,12896,14353,33193,20784,34178,35523,38085,2744, 42479,36648,
- 42479,38643,37592,15058,16116,4227, 28689,32248,35523,1666, 42479,7191, 42478,15194,25822,9770, 14830,11766,4000, 11536,39935,12112,36242,42478,35523,568, 8578,
+ 42479,38643,37592,15058,16116,4227, 28689,32248,35523,1666, 42479,7191, 42478,15194,25822,9770, 14830,11766,4000, 11536,39935,12112,36242,42478,35523,568, 8578,
20292,30387,39935,18978,42478,12994,17077,25821,18359,33708,34100,32793,1648, 35522,39935,5151, 34612,36648,36082,16834,24655,11141,35039,39935,8333, 19634,42478,
39934,1126, 36686,9442, 32098,17115,3891, 5597, 20783,17681,39934,29767,25805,11494,14487,10030,13826,18546,4430, 14882,3351, 2164, 16398,42477,23568,42477,42477,
- 23567,19420,27172,33853,23265,31532,9827, 39934,8327, 33853,33853,15564,9063, 31474,39934,12495,38822,24913,21502,37325,1500, 38085,38084,34445,38815,39933,4977,
+ 23567,19420,27172,33853,23265,31532,9827, 39934,8327, 33853,33853,15564,9063, 31474,39934,12495,38822,24913,21502,37325,1500, 38085,38084,34445,38815,39933,4977,
3076, 42477,3031, 11472,15982,12497,24899,20782,19334,8933, 38084,38084,10427,33623,42476,36196,15563,6634, 36301,34611,36648,20291,39933,278, 3554, 18908,14041,
34611,16600,26066,35363,13109,17297,33193,36066,25820,38084,42476,22618,7060, 26619,36138,35522,23566,22874,31181,34611,38669,38083,28688,16833,37933,34611,36648,
34610,3127, 30386,30385,33853,23880,927, 14352,39933,27281,5584, 7401, 20936,8772, 14970,25593,14339,39933,1945, 42476,30384,12539,38083,42476,16042,24520,36521,
@@ -16753,11 +16748,11 @@ static const unsigned short Ranks[197839] =
32247,15035,17114,15602,33541,42473,18415,322, 36647,14131,34592,24759,2935, 841, 27171,1682, 1371, 17155,2509, 2394, 34610,17815,36646,2774, 416, 32246,33612,
39931,42473,38682,25817,17113,166, 3417, 368, 851, 36851,33713,2583, 36646,32984,34610,996, 8765, 25964,956, 23126,295, 18113,37012,19685,5346, 5654, 10387,
19805,8067, 25333,1403, 33459,34609,39930,15021,38082,33274,35521,42472,24653,38898,34686,17256,29942,10951,36646,14881,42472,33209,36639,28685,36646,33192,21778,
- 22922,31992,33456,42472,36645,23688,31972,35432,37779,2081, 14307,18414,10945,19549,12227,22616,13901,25789,29044,12495,20781,39347,20780,16240,16239,12894,4636,
+ 22922,31992,33456,42472,36645,23688,31972,35432,37779,2081, 14307,18414,10945,19549,12227,22616,13901,25789,29044,12495,20781,39347,20780,16240,16239,12894,4636,
10697,12893,16238,19332,23132,5682, 23278,23942,8824, 16746,36830,36706,26142,23920,36363,27644,38103,29296,15969,33783,8580, 38899,20954,8521, 7536, 31735,31551,
31669,16434,34285,7304, 5079, 13783,29135,36838,16092,39241,17287,18473,33018,30963,14774,24403,12114,17897,15326,13672,22395,27616,29139,38999,831, 37200,20779,
29033,28617,33100,26709,25816,37096,38575,15198,33192,39930,28968,24163,27479,37812,16161,42472,3607, 23185,35521,42471,26176,34609,18413,38082,12298,31020,36540,
- 29886,39930,35484,38082,39930,33852,33852,3079, 21006,251, 2890, 21777,15981,11324,20289,14130,36645,36018,38288,38082,393, 12494,39929,30382,35521,8577, 1880,
+ 29886,39930,35484,38082,39930,33852,33852,3079, 21006,251, 2890, 21777,15981,11324,20289,14130,36645,36018,38288,38082,393, 12494,39929,30382,35521,8577, 1880,
39351,30923,38081,36211,803, 20952,13871,42471,17117,37591,6861, 24652,14880,25815,20778,38081,39929,34499,34181,38081,25814,42471,6904, 42471,19331,42470,37329,
17485,20680,18239,22695,25718,18977,39929,12277,39929,36645,38485,34502,5782, 15509,5539, 24998,34609,6263, 10426,17295,32974,25168,19330,36645,36644,4115, 26757,
38204,29617,35279,33852,26416,8799, 24153,23563,42470,42470,32245,42470,22975,39928,39928,42469,30238,33192,42469,36644,19329,35520,38081,42469,42469,42468,11758,
@@ -16765,7 +16760,7 @@ static const unsigned short Ranks[197839] =
42467,2422, 34609,39928,6505, 14133,3995, 4932, 15182,36644,34324,14486,39927,31793,34608,34608,33460,37274,36946,36307,34608,12226,35520,37226,17814,6762, 37044,
21004,28684,5114, 33851,6739, 5382, 15282,15197,35520,1924, 36644,42467,30381,38080,33851,34608,35314,15508,34491,1772, 10274,33850,39927,35520,9441, 34406,35519,
27097,35519,33093,17112,19327,16237,36894,14129,22535,14879,824, 13283,21681,26594,36503,3878, 2348, 26094,16356,19366,33493,38080,18106,34607,42467,30380,19632,
- 3797, 38080,36643,8449, 35519,30567,42466,38080,33192,39927,20777,6903, 30379,35745,28683,33850,39927,42466,806, 39926,2246, 22186,33850,10425,39926,8286, 5009,
+ 3797, 38080,36643,8449, 35519,30567,42466,38080,33192,39927,20777,6903, 30379,35745,28683,33850,39927,42466,806, 39926,2246, 22186,33850,10425,39926,8286, 5009,
25812,14878,28682,20288,5827, 7697, 10944,30378,42466,42466,33850,2621, 36643,320, 10290,27170,42465,3356, 32915,18874,16226,21119,16831,42465,39926,34607,28681,
33191,33191,18412,38610,37001,42465,7709, 1499, 37607,19644,11492,36643,35289,33191,36643,35519,906, 33849,3625, 21003,34219,39926,9287, 15784,34037,38079,19326,
35518,7406, 28680,13087,39925,42465,35944,32243,16830,3167, 42464,38079,33849,16397,16396,36642,38079,33849,21776,38079,42464,33110,22614,38078,14485,39192,42464,
@@ -16775,7 +16770,7 @@ static const unsigned short Ranks[197839] =
21141,16902,37077,36135,38078,35803,27571,26237,35648,30377,39924,42462,35391,36802,32242,39924,42462,23561,33633,2293, 32983,38077,533, 21013,33848,34606,37261,
4378, 34725,5806, 7013, 27822,3644, 21861,2139, 36642,1959, 2189, 25607,21775,3158, 15566,33336,34015,23560,34605,35518,27502,32241,38077,33006,15196,35518,12820,
17394,4237, 35588,6080, 31085,17813,39923,35517,24745,810, 14351,9269, 42461,30826,899, 14246,34988,17812,8583, 14828,19530,19649,9983, 15195,267, 28984,11399,
- 25005,35470,652, 42461,33848,36641,38077,4492, 8596, 14551,65, 31421,39923,9924, 21774,42461,39155,3085, 15092,873, 2983, 33411,32501,323, 836, 37387,6819,
+ 25005,35470,652, 42461,33848,36641,38077,4492, 8596, 14551,65, 31421,39923,9924, 21774,42461,39155,3085, 15092,873, 2983, 33411,32501,323, 836, 37387,6819,
28679,36641,39923,5677, 3999, 38077,19631,36641,16122,35517,7190, 801, 19301,25232,27390,27116,20920,34031,38249,38076,37494,10696,17115,37116,39174,17205,38224,
7321, 37154,30770,21002,1999, 4151, 21001,42461,3113, 32887,42460,38076,27294,35517,9209, 197, 20577,2549, 14142,19758,29801,19389,35039,33191,34605,21773,32240,
29699,39923,36084,17294,39922,3996, 2545, 21809,833, 28115,678, 24704,27918,15507,19313,25758,1110, 21561,33848,38747,34562,39922,16925,35651,10630,27169,30376,
@@ -16785,13 +16780,13 @@ static const unsigned short Ranks[197839] =
36978,36141,31550,38076,9826, 3146, 37282,11765,32238,22612,39920,32924,32237,39920,18411,5113, 29344,30577,32252,21895,36640,37911,42459,8911, 24380,7637, 33847,
29469,39920,29537,42459,27578,3145, 19630,7333, 38075,9286, 37889,39920,42459,1998, 2393, 1977, 7948, 36640,22611,33847,2474, 37009,38075,33190,42458,38075,13233,
459, 42458,2413, 39919,19629,1221, 12523,36714,2694, 661, 1326, 7662, 10445,42458,9886, 39919,33847,936, 35516,3920, 4843, 27678,38075,2445, 6513, 9416, 39919,
- 9555, 23569,28675,42458,20775,42457,3931, 22610,39919,4230, 36748,60, 30293,3362, 30591,13605,16158,31785,13410,31116,14868,36640,39918,4697, 15998,42457,2752,
- 9622, 36250,14665,34860,38085,37947,17314,37949,14854,327, 1180, 32480,6476, 23612,5083, 26651,25865,14079,2087, 28438,21899,5112, 28030,3565, 9825, 2362, 9621,
+ 9555, 23569,28675,42458,20775,42457,3931, 22610,39919,4230, 36748,60, 30293,3362, 30591,13605,16158,31785,13410,31116,14868,36640,39918,4697, 15998,42457,2752,
+ 9622, 36250,14665,34860,38085,37947,17314,37949,14854,327, 1180, 32480,6476, 23612,5083, 26651,25865,14079,2087, 28438,21899,5112, 28030,3565, 9825, 2362, 9621,
2436, 35253,29263,8321, 25809,36639,29292,38074,5150, 12136,38074,38074,12493,24552,13331,32979,34347,19405,34863,36639,5519, 7906, 39918,32893,33190,36639,38074,
- 38073,28683,33846,36639,36638,15980,23559,39918,42457,39918,14827,39917,34605,34604,10720,35972,32424,7136, 38073,23558,20999,11220,33846,34604,36638,18721,9520,
+ 38073,28683,33846,36639,36638,15980,23559,39918,42457,39918,14827,39917,34605,34604,10720,35972,32424,7136, 38073,23558,20999,11220,33846,34604,36638,18721,9520,
15554,9195, 30922,9699, 36838,30811,38390,8624, 6831, 3960, 2799, 33418,12892,24048,20101,33802,4694, 33346,37174,26058,33643,11795,42457,39917,33129,36638,42456,
36491,25281,18342,14350,3157, 19325,42456,38561,20774,16234,14876,11491,38924,42456,24684,35239,3806, 19158,12010,28673,1434, 20773,19324,39917,35516,34604,21854,
- 425, 16531,1640, 21668,3853, 33360,14484,32820,25395,42456,35495,29067,15094,37370,38073,7420, 19143,8817, 42455,34604,33189,42455,39917,28674,38073,42455,2653,
+ 425, 16531,1640, 21668,3853, 33360,14484,32820,25395,42456,35495,29067,15094,37370,38073,7420, 19143,8817, 42455,34604,33189,42455,39917,28674,38073,42455,2653,
4765, 19552,39916,33846,42455,21771,42454,27167,28175,28673,42454,6066, 14349,33846,42454,23191,42454,10474,38072,38399,28126,2018, 37367,24483,39916,12492,10571,
23575,6101, 8868, 33558,37437,34521,10736,19628,21287,27625,26273,3783, 33189,34938,33843,8939, 35515,34897,33189,3643, 13853,8018, 10679,42453,14450,7370, 36638,
2125, 36637,34439,20772,9698, 30374,36488,37238,38072,33189,35409,9982, 11275,8016, 13825,36712,31069,25224,4526, 36895,35446,38072,16141,25808,31955,34387,23263,
@@ -16799,41 +16794,41 @@ static const unsigned short Ranks[197839] =
25415,16847,26517,38369,32236,13822,4608, 34603,39916,39915,33845,37383,15979,15194,10046,8766, 23721,37670,15978,19627,36637,36703,36636,10950,39915,36636,37251,
42453,2115, 5727, 915, 26211,16394,11323,30533,35515,11140,42453,37408,39915,42452,39915,42452,36636,42452,39914,37971,8576, 38072,35434,38149,862, 2582, 28672,
42452,1593, 2224, 18467,31768,1015, 14228,32637,18807,16259,42451,6100, 38475,11543,38557,42451,2550, 42451,21770,42451,33845,34771,38070,39914,919, 30488,36636,
- 5111, 12891,1526, 2773, 4933, 10248,38071,36635,27166,17811,6729, 35757,33188,35515,9697, 33845,27241,35733,8931, 39386,1978, 20548,20771,39914,10029,6744, 5025,
- 12876,13333,12890,18105,37943,42450,14519,196, 37858,33188,2260, 14186,30373,38071,18747,42450,7498, 42450,36635,9620, 29466,33845,28410,38071,2730, 7034, 791,
+ 5111, 12891,1526, 2773, 4933, 10248,38071,36635,27166,17811,6729, 35757,33188,35515,9697, 33845,27241,35733,8931, 39386,1978, 20548,20771,39914,10029,6744, 5025,
+ 12876,13333,12890,18105,37943,42450,14519,196, 37858,33188,2260, 14186,30373,38071,18747,42450,7498, 42450,36635,9620, 29466,33845,28410,38071,2730, 7034, 791,
12937,34045,33188,22609,11535,33188,10121,20770,36719,32070,10446,26352,28087,2443, 35504,27577,1727, 38723,1520, 35250,37141,3003, 3000, 2003, 38925,25807,17799,
38664,7345, 12491,39914,34603,42450,29576,15977,33783,8242, 1916, 2934, 34364,34218,42449,27165,11219,27164,16826,32235,25806,36635,33844,25805,3205, 3416, 31972,
5852, 33187,8930, 32552,29207,39913,35869,30554,34603,17270,38650,38071,30051,9593, 9116, 26144,39913,21456,7559, 42449,38635,8398, 18243,36635,30372,21694,32234,
30371,37839,38730,35107,34458,42449,39229,19626,36634,39913,36634,33844,12792,39913,38070,20287,39912,11764,37210,2311, 20769,2476, 23557,7189, 37231,42449,42448,
20975,15231,39912,21774,38623,17910,16825,33844,24647,16014,38070,42448,175, 8546, 37943,36694,15232,39008,10165,19323,42448,1202, 12147,30619,16185,700, 11490,
- 2498, 18196,26781,32233,25644,39912,10424,33773,35345,37782,28250,5687, 28913,33265,35515,33296,27163,42448,22780,28671,33577,9402, 11058,22837,16072,27693,1251,
- 5870, 30955,30859,75, 36382,3720, 24390,6412, 38070,14854,42447,13525,13466,35972,16440,10862,10297,30724,27670,28005,5695, 18104,32018,3422, 32536,24316,3927,
+ 2498, 18196,26781,32233,25644,39912,10424,33773,35345,37782,28250,5687, 28913,33265,35515,33296,27163,42448,22780,28671,33577,9402, 11058,22837,16072,27693,1251,
+ 5870, 30955,30859,75, 36382,3720, 24390,6412, 38070,14854,42447,13525,13466,35972,16440,10862,10297,30724,27670,28005,5695, 18104,32018,3422, 32536,24316,3927,
308, 10703,18103,1895, 36634,29660,35471,42447,35761,3624, 3068, 33844,286, 13332,33187,28670,28669,34603,13114,30565,35629,39912,38070,14666,39911,38936,35514,
9546, 36634,32935,7188, 33843,34592,11763,19032,23213,33058,25287,29363,22844,11983,669, 3588, 29811,14588,32162,37890,38281,22237,24720,35577,42447,17293,35888,
- 38804,32172,8444, 9754, 33187,9060, 34602,42447,36167,36165,37417,36391,23556,9518, 39911,4366, 34100,33843,26079,36757,28533,37361,34856,34708,34932,38069,8682,
+ 38804,32172,8444, 9754, 33187,9060, 34602,42447,36167,36165,37417,36391,23556,9518, 39911,4366, 34100,33843,26079,36757,28533,37361,34856,34708,34932,38069,8682,
34602,12969,33843,20998,33843,18102,31137,14678,20768,35618,33187,2278, 29021,12494,38069,33929,8185, 29355,36633,35040,42446,36633,12296,16393,42446,39911,16824,
35514,35514,36633,33186,34602,31728,27162,39911,16866,23941,33984,38069,36061,6801, 32860,16233,39910,39910,29725,32461,34602,21769,34281,38105,4931, 39910,39910,
- 6537, 24828,42446,4793, 7459, 4657, 34442,12000,38573,34282,13805,2012, 4284, 28018,38069,37155,27161,14483,34881,19883,14128,15976,39909,315, 9805, 24176,955,
+ 6537, 24828,42446,4793, 7459, 4657, 34442,12000,38573,34282,13805,2012, 4284, 28018,38069,37155,27161,14483,34881,19883,14128,15976,39909,315, 9805, 24176,955,
20286,42446,39909,20767,33324,12225,16218,33186,11612,8791, 20769,39909,22712,32701,351, 34601,773, 37550,13238,38068,20285,42445,24646,30413,39116,38068,42445,
- 6953, 38346,42445,38068,33842,3719, 33186,42445,35107,38210,35514,42444,38068,775, 36337,34601,38067,42444,33504,39909,24645,28668,38067,35079,15506,39908,6704,
- 36633,18101,28986,24769,36876,38035,7706, 11218,14875,17109,42444,35563,37749,34864,33462,36632,20973,5717, 1740, 15828,31497,14096,854, 15717,38488,36632,4494,
+ 6953, 38346,42445,38068,33842,3719, 33186,42445,35107,38210,35514,42444,38068,775, 36337,34601,38067,42444,33504,39909,24645,28668,38067,35079,15506,39908,6704,
+ 36633,18101,28986,24769,36876,38035,7706, 11218,14875,17109,42444,35563,37749,34864,33462,36632,20973,5717, 1740, 15828,31497,14096,854, 15717,38488,36632,4494,
38067,42444,6728, 18100,9981, 36632,38067,36075,19322,32762,30642,9619, 33978,948, 19220,2223, 19767,32232,9285, 2454, 42443,38066,36632,738, 36874,32231,39344,
27391,6551, 42443,22154,36631,39908,5113, 38066,25804,38066,2193, 35299,5737, 29973,10781,34601,1034, 22608,38066,35513,14826,19321,3204, 35513,38065,16823,39908,
12490,42443,3460, 35513,1740, 19699,39908,35513,38859,34601,32230,39907,33842,1576, 15257,27404,20284,35030,28667,39907,42443,34255,25297,35512,20575,42442,36631,
- 19625,30370,25803,12009,12203,33773,4579, 6761, 37599,3572, 39161,33842,32229,35512,2809, 34197,38616,28666,42442,27348,42442,36631,35512,22607,38065,20766,6830,
+ 19625,30370,25803,12009,12203,33773,4579, 6761, 37599,3572, 39161,33842,32229,35512,2809, 34197,38616,28666,42442,27348,42442,36631,35512,22607,38065,20766,6830,
36631,28665,5473, 762, 17810,1699, 30369,5971, 8332, 17809,10273,35261,42442,13524,36088,21388,28664,35512,7929, 23555,32867,33240,37419,36630,19320,12779,14507,
30368,42441,42441,28495,360, 969, 14825,39907,36630,2982, 30512,8929, 38065,33186,42441,42441,6065, 12889,35296,10943,38065,25802,7937, 35357,38918,22606,42440,
36630,18410,33185,7400, 3649, 35511,39907,32228,39906,38064,15975,35911,39906,6824, 33842,33977,31352,37080,38064,18099,35462,35036,21603,18409,36813,32440,37904,
- 35511,23554,35921,12135,39906,20909,25797,38064,33004,33792,38064,36168,10120,9879, 22105,3567, 38935,20404,14598,13237,38063,30885,26117,36630,36629,9115, 724,
+ 35511,23554,35921,12135,39906,20909,25797,38064,33004,33792,38064,36168,10120,9879, 22105,3567, 38935,20404,14598,13237,38063,30885,26117,36630,36629,9115, 724,
30435,21221,15165,4062, 12527,23732,32776,24306,20929,26226,29832,27708,20245,28829,26625,14243,5034, 39906,25989,25076,25739,4571, 14373,25147,2477, 39905,35557,
- 5934, 34718,25999,11589,32826,28632,26541,38686,10774,19319,10574,38666,38063,25786,3138, 347, 39175,11024,8893, 27752,14852,18608,5889, 26013,25275,33801,8474,
+ 5934, 34718,25999,11589,32826,28632,26541,38686,10774,19319,10574,38666,38063,25786,3138, 347, 39175,11024,8893, 27752,14852,18608,5889, 26013,25275,33801,8474,
9034, 3925, 9321, 42440,25573,24644,39905,2271, 39255,39905,36629,10695,34811,35615,22787,6153, 20461,28579,38063,23518,33185,8085, 6498, 19843,42440,7983, 38063,
- 25071,29617,33104,33841,36505,39905,13030,24529,14049,38492,24043,93, 18098,33109,26392,10408,2693, 35413,34483,1479, 11217,878, 26272,493, 37745,654, 7078,
+ 25071,29617,33104,33841,36505,39905,13030,24529,14049,38492,24043,93, 18098,33109,26392,10408,2693, 35413,34483,1479, 11217,878, 26272,493, 37745,654, 7078,
6951, 3491, 3156, 2330, 32227,15232,8928, 42440,38033,34600,34497,39904,16392,26561,35914,9804, 39904,28663,37061,28539,32226,34600,23356,35689,39904,25801,38610,
- 39904,17676,34600,30393,38140,7714, 18097,42439,39903,26988,38365,37257,18273,33841,38611,42439,14482,33185,30367,12008,19607,42439,39903,42439,1974, 13564,996,
+ 39904,17676,34600,30393,38140,7714, 18097,42439,39903,26988,38365,37257,18273,33841,38611,42439,14482,33185,30367,12008,19607,42439,39903,42439,1974, 13564,996,
25754,21219,37571,38062,9097, 17820,10429,21589,22899,10767,33841,42438,20997,39903,8479, 24643,35511,36629,34600,3387, 16823,3293, 18846,34159,42438,18766,36629,
- 2751, 32076,2245, 42438,8197, 17500,13941,37444,36628,32874,33695,35351,28728,42438,35775,34158,38711,3178, 24682,34599,35257,3843, 6155, 9278, 22404,24642,3885,
- 37907,28201,4280, 9837, 11216,39903,34520,36628,8927, 36628,34768,15136,9268, 7869, 20283,23553,36628,8362, 20996,1122, 33841,11652,13062,21307,37245,23552,2933,
+ 2751, 32076,2245, 42438,8197, 17500,13941,37444,36628,32874,33695,35351,28728,42438,35775,34158,38711,3178, 24682,34599,35257,3843, 6155, 9278, 22404,24642,3885,
+ 37907,28201,4280, 9837, 11216,39903,34520,36628,8927, 36628,34768,15136,9268, 7869, 20283,23553,36628,8362, 20996,1122, 33841,11652,13062,21307,37245,23552,2933,
33185,1877, 34099,34599,38062,8987, 38960,42437,35511,30749,29986,28949,39902,8743, 35510,35184,33840,35237,32225,19091,4896, 22168,37868,32224,39902,42437,35510,
39411,36127,10942,32909,450, 3792, 17240,36544,19189,13028,39902,42437,39162,39902,42437,10941,36627,39901,33184,10766,3473, 21348,35299,34599,5841, 19678,28747,
14348,10028,8738, 9415, 38062,42436,17292,4460, 9169, 35510,27160,3974, 2834, 19303,27099,33598,37185,12297,34548,6633, 17808,30366,32223,10909,34599,15561,38062,
@@ -16843,22 +16838,22 @@ static const unsigned short Ranks[197839] =
37559,17721,6099, 19318,15505,11215,3350, 24626,22604,39899,5554, 8916, 10241,9744, 13824,33512,6120, 32930,13984,6653, 11536,9414, 22603,38060,33353,35509,34598,
3292, 36189,10694,23025,35509,39899,33213,6009, 32934,3292, 3590, 12888,4220, 5596, 9822, 3832, 7705, 38574,11901,28541,34598,6760, 34302,15193,10291,13366,34598,
32929,3354, 10682,33904,24195,38075,42436,39085,33840,14127,36145,29012,35967,15504,24639,22164,8575, 36626,23551,22602,27394,11762,3914, 26956,35509,34598,42436,
- 33839,35509,39899,984, 38060,39121,42435,30465,25799,3978, 27723,19739,319, 14481,33184,26963,25798,42435,32136,42435,5528, 19624,39898,9267, 17106,2001, 8070,
+ 33839,35509,39899,984, 38060,39121,42435,30465,25799,3978, 27723,19739,319, 14481,33184,26963,25798,42435,32136,42435,5528, 19624,39898,9267, 17106,2001, 8070,
28779,28969,18142,22229,2466, 34261,16391,7077, 42435,17939,36626,13331,28661,42434,329, 16963,27307,30272,15974,5274, 10118,20763,38099,16390,36099,8909, 12007,
16389,32624,3591, 36626,3433, 13862,9114, 23943,39898,34597,26545,34575,38744,15055,37614,16541,33066,21834,39048,35508,34051,18225,42434,19324,42434,31203,18801,
- 4014, 21165,17613,32961,33839,22601,2327, 42434,30200,20804,11761,8241, 39898,39898,3054, 38060,7506, 33839,11489,34512,33839,10117,8240, 17807,30364,20282,5644,
+ 4014, 21165,17613,32961,33839,22601,2327, 42434,30200,20804,11761,8241, 39898,39898,3054, 38060,7506, 33839,11489,34512,33839,10117,8240, 17807,30364,20282,5644,
25698,42433,20179,39102,39897,42433,20762,14126,34787,32222,7332, 20281,20761,29993,23946,1329, 38059,29687,20760,25408,1684, 9758, 20995,9825, 22600,4932, 38059,
36625,17317,954, 32506,24591,5676, 35508,39897,19156,35053,33183,10052,13188,5781, 38059,35508,36919,25618,18985,33183,28357,29896,10027,42433,32989,39897,27158,
39330,27157,33838,38959,28660,31450,22599,24638,12489,35322,39897,2884, 39896,42433,36625,17291,10247,35508,3269, 5841, 21309,34465,37860,35904,25797,7403, 34523,
- 39133,6474, 22075,38059,11890,38058,16232,20280,15973,6360, 939, 7621, 8009, 7820, 108, 18041,650, 32221,18408,42432,33183,24978,3333, 2469, 2509, 2798, 7399,
+ 39133,6474, 22075,38059,11890,38058,16232,20280,15973,6360, 939, 7621, 8009, 7820, 108, 18041,650, 32221,18408,42432,33183,24978,3333, 2469, 2509, 2798, 7399,
1734, 39896,36978,23456,34950,11501,6301, 6603, 8126, 2821, 3626, 38058,28420,640, 26732,42432,42432,38058,20279,15559,27156,39896,11659,34597,10193,68, 16231,
- 16415,23550,38058,13523,38057,11577,39243,6446, 36625,34597,33838,28941,32980,4976, 37594,42432,13236,17105,11761,32673,9979, 42431,38623,36780,35381,24637,3782,
+ 16415,23550,38058,13523,38057,11577,39243,6446, 36625,34597,33838,28941,32980,4976, 37594,42432,13236,17105,11761,32673,9979, 42431,38623,36780,35381,24637,3782,
28659,32904,36209,33838,39896,3144, 42431,39895,36451,14283,32002,37195,42431,4324, 30499,1436, 37659,33173,38057,35718,36625,4768, 9107, 32220,36203,2473, 12745,
21491,2369, 33403,17104,5190, 6250, 21261,38794,4455, 23533,36746,30363,24678,2548, 35507,39895,35934,19298,37395,39204,14874,21777,33236,23764,4135, 874, 42431,
6116, 26833,21653,34302,35208,23549,35192,38057,27155,18405,2097, 32235,34597,3349, 42430,36303,42430,30362,2889, 1130, 23548,17833,7425, 23547,20339,20478,34596,
36624,42430,31739,27154,33183,30361,32803,35616,1384, 38057,38056,39895,33182,21598,21786,39895,20756,38056,10602,35386,39894,15192,26912,38056,37045,36677,39894,
42430,8239, 39894,42429,38056,33838,8383, 9930, 14818,6737, 993, 17547,35023,20603,42429,42429,6070, 17396,28095,37308,12006,38055,38055,28658,32219,11144,24636,
- 3487, 21594,23971,5585, 39894,42429,32218,13335,12739,8465, 38055,30360,192, 32019,38055,5726, 13821,12224,9821, 8361, 42428,524, 31859,1160, 3566, 28073,1354,
+ 3487, 21594,23971,5585, 39894,42429,32218,13335,12739,8465, 38055,30360,192, 32019,38055,5726, 13821,12224,9821, 8361, 42428,524, 31859,1160, 3566, 28073,1354,
2692, 612, 23661,3718, 396, 1242, 39893,35405,35507,31627,3660, 968, 778, 38054,3143, 39893,34596,140, 33244,13039,31727,24021,9144, 28780,24036,24768,21669,
30726,30367,27419,31705,36264,33182,17806,39893,42428,9824, 3801, 5049, 20994,12069,4465, 33837,36624,3274, 36624,35507,20921,28315,21665,7756, 42428,5273, 37545,
42428,34596,42427,24635,6445, 18975,33182,19317,4065, 28657,30359,42427,23238,39893,42427,36624,42427,42426,28656,38054,833, 232, 24624,15972,38426,8125, 28655,
@@ -16866,12 +16861,12 @@ static const unsigned short Ranks[197839] =
38053,11220,39892,11999,14309,366, 26095,42425,35506,3527, 36623,7402, 25796,33037,19274,14125,1275, 141, 9272, 23429,24305,34257,31289,39892,34596,658, 27153,
30819,3484, 8033, 27152,34595,13330,18937,24857,42425,33182,39891,7497, 9945, 34715,4640, 30358,33837,21170,38053,36223,33101,5772, 32353,32217,25210,2192, 12991,
22556,33837,35506,42425,36623,39891,42425,2602, 10940,42424,30357,33836,35506,34595,42424,8574, 31443,39891,39891,3415, 26891,36623,35498,42424,19934,9, 23407,
- 2581, 1626, 31211,33980,39038,1928, 2314, 1449, 26810,35506,4468, 300, 7505, 1958, 732, 2334, 42424,35505,9820, 8850, 1149, 26054,42423,3084, 23492,2138, 2731,
+ 2581, 1626, 31211,33980,39038,1928, 2314, 1449, 26810,35506,4468, 300, 7505, 1958, 732, 2334, 42424,35505,9820, 8850, 1149, 26054,42423,3084, 23492,2138, 2731,
22598,772, 23546,2691, 35505,2932, 262, 2563, 5468, 33613,25104,26369,12566,14873,32054,34385,36651,35357,6316, 38053,39890,35505,2118, 637, 17045,23545,20759,
9284, 2313, 9593, 34595,945, 27151,42423,11017,32949,26049,38207,42423,633, 26949,3348, 42423,2544, 13823,307, 15558,21768,33181,2046, 3642, 29508,25795,38053,
- 3273, 807, 7, 2920, 24109,10856,17864,26814,12374,39890,13822,33984,1028, 32191,15559,26692,1263, 30838,24923,35468,242, 868, 25218,14461,3483, 8360, 1340,
- 1028, 370, 624, 13000,11360,571, 1569, 13047,35468,32967,2852, 771, 28653,34595,38052,18094,16388,10796,18666,3565, 44, 4923, 19620,20769,35186,2191, 1801,
- 3482, 3481, 42422,35505,39194,36161,28652,19652,832, 2981, 33386,32696,9012, 22126,25322,15631,39361,31042,16230,30198,5054, 3977, 3166, 24720,2730, 42422,1383,
+ 3273, 807, 7, 2920, 24109,10856,17864,26814,12374,39890,13822,33984,1028, 32191,15559,26692,1263, 30838,24923,35468,242, 868, 25218,14461,3483, 8360, 1340,
+ 1028, 370, 624, 13000,11360,571, 1569, 13047,35468,32967,2852, 771, 28653,34595,38052,18094,16388,10796,18666,3565, 44, 4923, 19620,20769,35186,2191, 1801,
+ 3482, 3481, 42422,35505,39194,36161,28652,19652,832, 2981, 33386,32696,9012, 22126,25322,15631,39361,31042,16230,30198,5054, 3977, 3166, 24720,2730, 42422,1383,
20374,11166,27622,1817, 2657, 80, 15642,1050, 28565,11258,1252, 122, 8014, 17644,32528,23544,25794,11488,19622,23572,19316,33062,2729, 35715,173, 3153, 31858,
29585,36622,35504,6703, 15557,5306, 19210,28651,1614, 554, 4244, 38052,31770,36327,11760,16387,38315,10272,37440,7882, 42422,36622,975, 25459,2465, 30903,42422,
34011,36918,22597,24057,138, 4501, 24443,17566,22595,33075,23632,6218, 36282,176, 28971,25335,33680,34594,38052,12185,14480,8305, 3647, 1608, 607, 7265, 31839,
@@ -16880,25 +16875,25 @@ static const unsigned short Ranks[197839] =
14663,35504,1295, 9828, 20277,35504,7496, 17805,34594,3407, 5883, 10939,33836,497, 30499,38009,20758,3950, 23988,18326,8136, 1761, 6534, 31124,1844, 3564, 38051,
38051,42421,6386, 20992,2154, 19025,36622,4957, 25793,20276,3896, 5352, 33181,9265, 29702,39379,2292, 4194, 7977, 38384,12005,7132, 13821,5189, 20757,3800, 42421,
32216,9696, 32215,14382,39889,13073,17185,12493,11139,38051,14346,19621,6759, 12223,24018,38051,566, 17804,38050,20165,19315,27525,42421,13820,28623,30453,17290,
- 36621,14415,849, 22228,39889,34594,39889,32214,19620,28650,39888,11396,28309,19744,479, 2543, 17289,9283, 11138,17257,176, 20028,19314,7915, 16267,14345,2163,
- 2690, 1169, 236, 33054,3949, 20991,16822,510, 7366, 24267,33543,520, 18515,2851, 18407,7267, 24932,16229,1537, 433, 28649,2153, 3340, 32954,1235, 1196, 9942,
+ 36621,14415,849, 22228,39889,34594,39889,32214,19620,28650,39888,11396,28309,19744,479, 2543, 17289,9283, 11138,17257,176, 20028,19314,7915, 16267,14345,2163,
+ 2690, 1169, 236, 33054,3949, 20991,16822,510, 7366, 24267,33543,520, 18515,2851, 18407,7267, 24932,16229,1537, 433, 28649,2153, 3340, 32954,1235, 1196, 9942,
18093,24235,13329,19077,27264,28648,14112,39888,38050,23542,7922, 17803,32109,11759,10271,42421,12738,33993,37534,38564,13142,36021,36621,2137, 8585, 18406,33836,
42420,18405,2190, 1358, 34601,34431,28259,30355,36621,34594,20275,38050,33181,30354,28647,33181,19619,38050,3718, 6902, 39888,30353,15569,31971,39013,7608, 20661,
- 18092,12273,42420,37296,7187, 33836,42420,35504,20274,36455,33835,32213,39888,42420,25792,42419,10764,36621,34426,24634,4150, 11137,13150,12918,38049,1448, 8238,
+ 18092,12273,42420,37296,7187, 33836,42420,35504,20274,36455,33835,32213,39888,42420,25792,42419,10764,36621,34426,24634,4150, 11137,13150,12918,38049,1448, 8238,
27140,6660, 36134,34260,2333, 8516, 448, 42419,701, 34400,22500,894, 3272, 39887,2738, 4176, 42419,20770,23212,33180,39887,39887,30352,36620,10653,42419,42418,
27150,38049,1148, 39887,33017,476, 37801,3937, 33883,285, 20482,39886,5110, 42418,17288,22596,16821,42418,42418,42417,6115, 30351,32212,15970,38049,8032, 10270,
- 2737, 23541,3222, 4490, 36620,6567, 32211,523, 19218,1203, 22100,2868, 33604,34593,34593,13820,19883,34906,39886,36879,17472,30073,19618,36620,34593,25791,8573,
+ 2737, 23541,3222, 4490, 36620,6567, 32211,523, 19218,1203, 22100,2868, 33604,34593,34593,13820,19883,34906,39886,36879,17472,30073,19618,36620,34593,25791,8573,
20273,17287,42417,4842, 34679,4372, 7399, 42417,7498, 42417,33835,8331, 38049,408, 252, 20756,39886,3503, 23654,42416,113, 32959,37505,35538,17660,20919,37132,
10693,37853,38284,39886,9696, 17802,6457, 22791,18076,30355,8464, 6459, 33180,13939,38896,35503,18974,33835,9466, 39885,35503,38048,21767,33180,39885,24633,14479,
35503,30350,37039,5008, 25064,24578,28646,4733, 458, 12159,38066,34593,28645,7028, 2235, 2570, 27149,30349,39885,39885,12488,13235,13819,36620,32210,3078, 20990,
33835,30348,33180,17868,39884,3083, 38, 22627,33179,33873,23078,39132,1526, 2579, 19313,34654,6435, 11487,42416,37527,39884,16228,36619,38048,42416,37429,27252,
42416,37820,8196, 7818, 15, 36217,27545,2637, 17877,12902,33075,15352,31501,8856, 16450,636, 14041,36619,39884,38048,3126, 25790,1753, 38048,5771, 13819,39884,
- 39883,6632, 5867, 27906,38047,38047,33834,18, 42415,34397,37569,1246, 11223,23540,38202,10625,5251, 30347,36619,2138, 39883,39883,39883,3419, 24644,14478,3917,
+ 39883,6632, 5867, 27906,38047,38047,33834,18, 42415,34397,37569,1246, 11223,23540,38202,10625,5251, 30347,36619,2138, 39883,39883,39883,3419, 24644,14478,3917,
39882,16978,35874,29960,34592,38047,19617,39882,36619,22595,39882,30582,38321,39882,25789,18973,12004,30346,25788,32209,36618,39881,42415,42415,11486,34592,12990,
39881,35503,33631,10763,42415,20996,370, 6609, 29936,11070,17215,5638, 10451,14877,27535,7245, 32489,3275, 9411, 38047,30345,32208,38046,35502,42414,36618,39881,
- 38046,22092,39881,19607,34592,36618,39880,39880,38046,12717,42414,32922,28644,35428,32863,8693, 25355,33018,7042, 830, 34808,1501, 18091,31743,3271, 8909, 3188,
- 21073,18457,36618,38046,112, 8282, 3035, 34592,19444,33617,33687,35502,38255,2460, 38045,30115,9282, 5339, 19135,39880,1, 24490,30493,25412,2444, 2617, 2443,
- 32968,336, 23712,2888, 794, 3347, 981, 20423,42414,889, 3717, 31199,28103,463, 1641, 17044,22237,8951, 33174,1494, 10075,1786, 1405, 3716, 716, 3082, 1837,
+ 38046,22092,39881,19607,34592,36618,39880,39880,38046,12717,42414,32922,28644,35428,32863,8693, 25355,33018,7042, 830, 34808,1501, 18091,31743,3271, 8909, 3188,
+ 21073,18457,36618,38046,112, 8282, 3035, 34592,19444,33617,33687,35502,38255,2460, 38045,30115,9282, 5339, 19135,39880,1, 24490,30493,25412,2444, 2617, 2443,
+ 32968,336, 23712,2888, 794, 3347, 981, 20423,42414,889, 3717, 31199,28103,463, 1641, 17044,22237,8951, 33174,1494, 10075,1786, 1405, 3716, 716, 3082, 1837,
2979, 17876,35502,37069,3142, 12134,32003,15328,18591,26947,24632,23539,12737,34591,36617,35502,20383,21766,20989,42414,42413,38045,17103,39348,42413,28643,24631,
8002, 33085,9683, 32797,39024,28668,37495,35035,13951,17102,39880,39879,39113,12379,1944, 21198,19977,3644, 34965,37755,38998,36511,32589,39879,42413,34785,26495,
32345,23325,38199,34253,36708,32723,34565,12887,28642,35501,6225, 38884,35501,6346, 28461,34494,39879,37175,33179,28641,38045,23974,39879,39878,33949,36880,23538,
@@ -16911,40 +16906,40 @@ static const unsigned short Ranks[197839] =
6631, 16049,42410,42409,19312,42409,18831,35500,9282, 23706,6504, 9168, 17800,35300,4385, 27145,42409,13818,10246,417, 17799,25787,42409,2636, 8698, 37679,39191,
22936,29383,19755,36616,1823, 39170,21739,16386,35821,10601,39876,35928,1649, 26503,12138,33502,20988,28638,33178,8816, 34590,21742,37322,34590,33085,3799, 36348,
37242,39875,2797, 18089,20780,36616,38042,30343,15191,38042,18, 23834,19858,9094, 967, 16960,9339, 3665, 7615, 20768,11823,22153,14075,16367,13804,31087,29036,
- 17548,22743,31170,14322,18909,19568,31455,12006,38042,18270,18419,24962,7777, 5318, 5872, 14145,14872,13826,21760,15366,34562,27481,7305, 16226,34976,10743,8668,
- 13641,31501,22938,27144,7572, 6263, 14871,38917,35064,15976,5500, 5250, 12168,25052,1414, 16039,33461,2635, 30096,24844,33638,24211,9618, 22442,34904,14032,5770,
+ 17548,22743,31170,14322,18909,19568,31455,12006,38042,18270,18419,24962,7777, 5318, 5872, 14145,14872,13826,21760,15366,34562,27481,7305, 16226,34976,10743,8668,
+ 13641,31501,22938,27144,7572, 6263, 14871,38917,35064,15976,5500, 5250, 12168,25052,1414, 16039,33461,2635, 30096,24844,33638,24211,9618, 22442,34904,14032,5770,
35499,23732,38691,37673,12735,38042,13521,42408,42408,42408,42408,13818,38041,42407,38041,30342,16385,36616,36616,21764,36615,15190,10335,15541,10949,19311,12886,
7220, 42407,25786,29795,14823,42407,33833,39875,42407,20987,42406,8685, 42406,37057,13702,36615,4387, 1017, 38041,33780,30492,42406,2352, 35372,33049,14333,34130,
42406,42405,38041,38179,33833,15969,36615,39059,37517,26466,36997,34653,33009,23029,22591,38040,42405,15555,12133,33178,38769,35499,380, 12132,5876, 25153,15322,
34919,4714, 42405,774, 11322,35499,3578, 31711,8614, 12491,30846,13383,22796,42405,1587, 15249,33178,14477,34201,39875,32892,36615,42404,36614,37223,38040,42404,
- 30225,39875,21533,12629,42404,1447, 24628,5810, 32206,22626,742, 25566,22122,13498,24830,14870,34425,14869,13668,19688,1231, 12859,32205,38040,4064, 38579,5840,
- 35499,3675, 38040,16244,9317, 15503,20755,1751, 3563, 25785,38039,33833,25784,39874,27069,2812, 11326,5094, 9869, 1764, 42404,15554,15968,36614,2899, 4869, 5725,
+ 30225,39875,21533,12629,42404,1447, 24628,5810, 32206,22626,742, 25566,22122,13498,24830,14870,34425,14869,13668,19688,1231, 12859,32205,38040,4064, 38579,5840,
+ 35499,3675, 38040,16244,9317, 15503,20755,1751, 3563, 25785,38039,33833,25784,39874,27069,2812, 11326,5094, 9869, 1764, 42404,15554,15968,36614,2899, 4869, 5725,
35498,4767, 5381, 42403,42403,4395, 12131,3761, 36614,20059,224, 16157,38039,485, 6282, 24627,33177,3606, 33833,30341,25197,23537,28637,13520,6216, 32204,32088,
- 1873, 2580, 429, 18972,4520, 42403,33177,12110,36614,27143,18117,28636,42403,42402,22590,32515,17936,4084, 18200,34965,36613,17101,34590,38731,34294,17850,665,
- 18404,1080, 32807,9819, 38758,22589,5780, 37663,28997,15967,42402,39874,5930, 37981,20991,27142,33832,25783,39874,35498,42402,28355,36613,18404,38039,42402,1901,
+ 1873, 2580, 429, 18972,4520, 42403,33177,12110,36614,27143,18117,28636,42403,42402,22590,32515,17936,4084, 18200,34965,36613,17101,34590,38731,34294,17850,665,
+ 18404,1080, 32807,9819, 38758,22589,5780, 37663,28997,15967,42402,39874,5930, 37981,20991,27142,33832,25783,39874,35498,42402,28355,36613,18404,38039,42402,1901,
39874,12252,3690, 14654,39873,39873,37531,1546, 42401,24626,18403,22201,12003,34589,38039,38906,42401,6340, 19310,32808,39412,35316,7699, 37479,11241,29853,12880,
21202,27427,17100,5024, 39873,73, 21865,4790, 17049,26180,20148,29428,12720,15623,19194,21571,24312,26034,27789,36613,24030,34596,7304, 34589,38490,8127, 36682,
8613, 38038,39873,27141,1863, 42401,30521,34589,10762,23374,39283,38038,16820,36613,8031, 14822,20271,27140,20986,34989,30759,34589,27139,22588,27836,36889,24625,
- 34735,295, 24174,9828, 14183,18060,14465,16248,28061,30941,29112,32913,5352, 39095,39872,28635,7849, 18088,17798,42401,39397,14734,34588,3500, 226, 15553,3650,
+ 34735,295, 24174,9828, 14183,18060,14465,16248,28061,30941,29112,32913,5352, 39095,39872,28635,7849, 18088,17798,42401,39397,14734,34588,3500, 226, 15553,3650,
23985,6630, 880, 34588,14123,3740, 38038,19614,34588,30340,34235,33087,4433, 17761,30339,36612,9281, 25, 26081,1091, 32031,9212, 21350,29051,24776,26864,10721,
15211,15915,29338,32952,160, 32203,33832,4377, 12734,22587,37306,16642,39419,30338,38038,17835,13307,35498,24150,10269,39872,248, 30337,38037,20270,34588,39872,
- 34161,8905, 39872,1960, 20269,21763,42400,9167, 2883, 19613,27138,35498,36612,11382,35497,39871,12002,17286,13234,3718, 2265, 3167, 12130,33177,33832,42400,1759,
+ 34161,8905, 39872,1960, 20269,21763,42400,9167, 2883, 19613,27138,35498,36612,11382,35497,39871,12002,17286,13234,3718, 2265, 3167, 12130,33177,33832,42400,1759,
27137,38037,36612,5603, 18704,26907,42400,42400,9113, 35497,16384,39871,22821,35214,13407,1385, 8907, 19698,36612,23269,18310,5709, 9554, 42399,38037,42399,33832,
- 39871,38037,39871,39870,42399,34587,38036,27136,23536,25743,19451,9915, 8749, 35497,22586,39870,42399,39870,6064, 24624,19309,33177,17285,36611,14821,18087,8612,
- 35802,27647,36611,25782,13817,9695, 1292, 536, 1008, 30465,10472,36279,35222,36005,10268,20268,19612,19611,23116,10600,33176,5465, 8359, 14476,14326,25781,2133,
- 27135,15552,13327,42398,38036,23535,33831,35497,42398,15966,34959,23398,26909,28634,21437,37166,33792,24623,6566, 20552,33266,35683,3292, 39870,42398,22480,861,
+ 39871,38037,39871,39870,42399,34587,38036,27136,23536,25743,19451,9915, 8749, 35497,22586,39870,42399,39870,6064, 24624,19309,33177,17285,36611,14821,18087,8612,
+ 35802,27647,36611,25782,13817,9695, 1292, 536, 1008, 30465,10472,36279,35222,36005,10268,20268,19612,19611,23116,10600,33176,5465, 8359, 14476,14326,25781,2133,
+ 27135,15552,13327,42398,38036,23535,33831,35497,42398,15966,34959,23398,26909,28634,21437,37166,33792,24623,6566, 20552,33266,35683,3292, 39870,42398,22480,861,
39869,33176,39869,223, 19065,38130,1490, 33273,25529,38036,33710,27827,176, 15912,6743, 34541,563, 14820,24397,12733,1002, 3715, 10022,24979,19296,6541, 35569,
37298,6721, 786, 8056, 38660,34660,8069, 23536,29614,6629, 42398,10948,42397,42397,39869,15722,6386, 32864,42397,37414,35496,13519,38036,32202,29102,36611,36611,
34587,42397,28633,20754,37405,27134,13816,42396,32949,24622,4876, 30462,97, 10177,9556, 13369,35496,35496,638, 27133,42396,36734,36610,11122,16594,39869,36610,
35496,42396,35840,42396,36610,39868,13745,17848,23534,235, 22459,27223,2994, 29502,30980,32971,26408,17089,26693,5219, 20257,33035,32566,18131,33176,33831,26225,
- 27132,5352, 10471,35495,2258, 33826,2667, 3916, 9308, 16819,6098, 1482, 28228,22761,13283,33833,2943, 11362,14980,822, 9993, 33053,39291,3608, 33022,15327,7415,
+ 27132,5352, 10471,35495,2258, 33826,2667, 3916, 9308, 16819,6098, 1482, 28228,22761,13283,33833,2943, 11362,14980,822, 9993, 33053,39291,3608, 33022,15327,7415,
34689,38296,32911,29920,14344,35340,3414, 34988,19192,36110,29998,8918, 27716,30684,16768,5947, 864, 27824,25032,1348, 412, 7390, 22741,32101,249, 22492,33841,
- 10128,29907,29463,8124, 7507, 6458, 29196,25987,6702, 23132,20267,12620,13990,263, 3519, 22486,22083,2475, 29610,31382,31688,17290,3510, 46, 20753,33372,1070,
+ 10128,29907,29463,8124, 7507, 6458, 29196,25987,6702, 23132,20267,12620,13990,263, 3519, 22486,22083,2475, 29610,31382,31688,17290,3510, 46, 20753,33372,1070,
16667,14343,38035,20373,10470,33356,35495,24139,35981,91, 17797,2542, 1443, 25780,1603, 12490,33176,8195, 34587,25779,17796,38035,2023, 33831,42395,2472, 32201,
18402,20266,27916,35495,771, 35495,3642, 974, 42395,38035,28632,20985,8316, 862, 35650,24076,8749, 17099,17830,13233,19610,2078, 39868,3261, 42395,27131,17284,
- 12989,37919,32200,5380, 42395,1096, 30336,38035,568, 14113,7848, 30335,42394,12222,21762,39267,20539,6829, 731, 42394,13326,3081, 10267,33175,7606, 894, 7732,
+ 12989,37919,32200,5380, 42395,1096, 30336,38035,568, 14113,7848, 30335,42394,12222,21762,39267,20539,6829, 731, 42394,13326,3081, 10267,33175,7606, 894, 7732,
17469,33831,42394,5769, 6396, 36895,23579,42394,20752,28873,22585,601, 32199,42393,661, 31267,18401,42393,19609,13518,33105,19308,10938,32198,30334,30042,32879,
- 39228,38590,30640,13517,39868,15189,24368,39868,38034,18400,2737, 16585,10339,28631,19945,34584,27130,21761,24592,25214,3367, 8526, 31407,5811, 6543, 4403, 3632,
+ 39228,38590,30640,13517,39868,15189,24368,39868,38034,18400,2737, 16585,10339,28631,19945,34584,27130,21761,24592,25214,3367, 8526, 31407,5811, 6543, 4403, 3632,
32421,27984,26801,4066, 11626,4428, 10947,34587,39867,25630,38094,19608,27879,42393,32839,14475,1557, 39867,38034,28630,10026,36610,42393,33830,36609,12732,35494,
37858,25559,14525,29297,39867,25525,12465,37043,36609,39867,37335,42392,4766, 8478, 35494,36182,27129,33830,33830,23533,3852, 42392,42392,35494,35494,12731,13815,
35493,42392,42391,16383,15551,11321,42391,39866,28629,39866,32913,33830,27128,7331, 8926, 20265,18399,30333,27127,36609,35751,5502, 42391,20151,35346,37755,20803,
@@ -16955,7 +16950,7 @@ static const unsigned short Ranks[197839] =
39864,4763, 12000,38032,42389,3274, 33828,34586,36608,42389,36608,35492,30330,1169, 36607,39864,6701, 39864,19607,586, 6758, 33175,19606,17794,18970,3526, 18398,
42388,3065, 42388,33828,36607,42388,36607,38032,39864,42388,42387,38032,36607,20264,34585,21759,33828,38032,8123, 13814,38031,32190,34585,33827,5149, 24620,42387,
42387,11999,27126,925, 24619,23532,28628,24618,3915, 42387,20263,9046, 33174,33827,16382,36606,6700, 42386,28627,42386,42386,39863,34504,33827,25777,30329,33174,
- 39863,8815, 7932, 34585,33827,10761,32189,35492,2339, 36606,42386,33826,368, 20751,38031,2213, 25776,737, 7107, 42385,13232,39863,6215, 39863,36606,18969,3525,
+ 39863,8815, 7932, 34585,33827,10761,32189,35492,2339, 36606,42386,33826,368, 20751,38031,2213, 25776,737, 7107, 42385,13232,39863,6215, 39863,36606,18969,3525,
38031,11998,5537, 20982,42385,33826,39862,34585,32188,10423,19605,1203, 14473,20262,11136,14867,8358, 42385,42385,6280, 34297,11135,36606,22583,39862,34584,30328,
42384,486, 12486,36605,35492,25775,42384,35491,35491,32187,2855, 36605,9112, 36605,13813,18968,19604,36605,36604,42384,3948, 11534,42384,28626,28611,42383,30327,
36604,10760,34584,6345, 38031,3930, 28625,39862,38030,10422,38030,27125,1092, 1811, 42383,35491,36604,25774,1145, 39862,38030,42383,33826,18967,21758,16818,38030,
@@ -16981,41 +16976,41 @@ static const unsigned short Ranks[197839] =
36596,36596,42368,38025,23525,33822,4175, 2400, 780, 8237, 20977,16815,38025,9820, 38024,13515,35483,21749,9977, 34577,25762,36596,42368,32178,959, 1233, 15964,
38024,33822,39851,37658,14121,1945, 34577,39851,2953, 3928, 33171,42367,36596,21748,42367,36595,7186, 34577,18085,17279,35483,36595,34576,17278,17787,11532,37692,
7578, 42367,28613,22575,42367,5724, 29763,439, 19595,35482,38024,42366,42366,42366,39851,13226,27116,35482,42366,42365,24609,38024,36595,10855,33171,4898, 42365,
- 35482,10935,39850,20256,32177,38023,2497, 8814, 33171,1879, 28612,22574,36595,39850,36594,16814,25437,42365,11757,17786,36594,6500, 42365,33822,38023,36594,7577,
+ 35482,10935,39850,20256,32177,38023,2497, 8814, 33171,1879, 28612,22574,36595,39850,36594,16814,25437,42365,11757,17786,36594,6500, 42365,33822,38023,36594,7577,
35482,21747,3077, 42364,42364,27115,2666, 640, 33170,36594,35481,8698, 42364,678, 34576,33170,22573,28888,5232, 18962,39850,10115,23524,34757,32176,36593,38023,
8570, 33822,7494, 17785,18390,42364,42363,35481,39850,735, 28611,39849,5007, 33821,36593,33170,24608,6037, 609, 36593,8030, 10759,35481,13225,33479,3666, 22572,
- 34576,19594,30317,22571,38023,6344, 29440,16813,34576,30316,34575,39849,4394, 23523,39849,12728,42363,33821,34575,20255,17784,22570,34575,34575,1341, 35481,3590,
+ 34576,19594,30317,22571,38023,6344, 29440,16813,34576,30316,34575,39849,4394, 23523,39849,12728,42363,33821,34575,20255,17784,22570,34575,34575,1341, 35481,3590,
38022,21746,12727,39849,23522,36593,42363,35480,435, 42363,3851, 38022,3689, 36592,38022,38022,39848,20254,10934,39848,42362,23521,27114,39848,36592,36592,42362,
12726,5765, 34574,27113,35480,25761,7930, 17783,11756,35480,17782,5865, 42362,42362,39308,39848,39847,42361,24607,33170,863, 42361,35480,257, 8477, 32175,10114,
- 1660, 19303,19593,9280, 11317,33821,6385, 27112,36592,39847,13224,35479,6563, 42361,21745,12725,33169,33821,35479,654, 38021,35479,42361,39847,42360,33169,7106,
+ 1660, 19303,19593,9280, 11317,33821,6385, 27112,36592,39847,13224,35479,6563, 42361,21745,12725,33169,33821,35479,654, 38021,35479,42361,39847,42360,33169,7106,
4337, 42360,32174,39847,34574,14469,39247,42360,27111,35479,1644, 22569,34574,8813, 39846,34574,4043, 32173,3429, 23560,31740,23161,36850,24606,18961,42360,42359,
17277,19592,38021,395, 32172,39846,2810, 32171,33820,14120,34573,33820,17276,583, 38021,42359,27110,34573,20976,34573,22568,36591,4278, 14119,2665, 2365, 13514,
- 22567,823, 33820,35478,39846,15963,35478,42359,21744,42359,7185, 38021,12219,6384, 35478,38020,21743,42358,35478,25854,30315,36591,19591,2095, 33169,38020,849,
+ 22567,823, 33820,35478,39846,15963,35478,42359,21744,42359,7185, 38021,12219,6384, 35478,38020,21743,42358,35478,25854,30315,36591,19591,2095, 33169,38020,849,
36591,20975,32170,14817,34652,36591,33169,33820,39846,42358,9976, 7846, 35477,39845,1239, 38020,14468,3589, 8029, 9279, 12481,35477,34573,20974,39845,17275,42358,
39845,38020,4107, 34572,34572,20973,32169,657, 2979, 34572,10421,38019,1839, 5006, 9693, 6699, 42358,38019,5188, 30398,16375,25760,22566,34572,5673, 13808,39845,
9165, 1340, 4149, 39844,13807,27109,19249,5839, 2906, 34571,28610,6757, 23520,17781,9278, 35477,12218,2549, 36590,1365, 33168,1505, 39844,1339, 4202, 36590,38019,
39844,7751, 9413, 18960,9277, 32168,42357,1158, 33819,10933,12217,35477,28609,33168,18389,13806,12982,2622, 32167,15184,7493, 28608,703, 1164, 14118,39844,23519,
35476,33168,42357,19590,11531,14816,42357,11755,36590,42357,11316,42356,5351, 18959,11754,10113,22565,42356,42356,7845, 33819,16374,34571,14117,15547,14815,39843,
- 36590,20750,42356,2399, 33168,2398, 42355,25759,39843,36589,36589,30314,33819,19589,42355,5419, 35476,38019,12981,13223,5270, 42355,42355,18958,20972,13805,4299,
+ 36590,20750,42356,2399, 33168,2398, 42355,25759,39843,36589,36589,30314,33819,19589,42355,5419, 35476,38019,12981,13223,5270, 42355,42355,18958,20972,13805,4299,
16812,27108,38018,773, 39843,33167,19588,35476,8357, 38018,9412, 38018,15183,21742,21741,33167,12980,14116,1112, 20971,42354,33167,39843,42354,30313,19587,38018,
17780,13513,24605,39842,16811,16810,34571,33167,38017,7844, 27107,24604,1319, 14467,33166,39842,38017,38017,11753,28607,33166,32166,14115,39842,3605, 33166,42354,
42354,36589,7492, 36589,13804,39842,15182,6383, 38017,39841,24603,10265,16224,9411, 36588,28606,38016,24602,42353,3355, 16809,8356, 38016,42353,11995,24601,42353,
34439,33819,33818,34678,39841,39841,38016,34571,42353,23518,27106,42352,32165,34570,3259, 21740,38016,9819, 39841,2898, 36588,9550, 33858,39840,42352,42352,18957,
42352,42351,20253,25758,28605,32164,39840,38015,28604,39840,39840,18956,8355, 19586,2132, 19585,1318, 42351,33166,25757,16378,35632,38398,26002,23973,28006,33065,
- 33070,33065,33011,33063,36377,7421, 32159,32799,7, 14342,14889,27142,8068, 33165,32292,39839,3418, 23517,36588,15962,1232, 1068, 39839,8028, 17274,2263, 7843,
+ 33070,33065,33011,33063,36377,7421, 32159,32799,7, 14342,14889,27142,8068, 33165,32292,39839,3418, 23517,36588,15962,1232, 1068, 39839,8028, 17274,2263, 7843,
5436, 34102,33427,35476,20349,38482,665, 9276, 30902,18398,663, 12489,1325, 4277, 23681,25756,25755,39312,1428, 19584,14466,20970,36588,3421, 15181,59, 21012,
37784,17294,19860,8400, 10026,9817, 10112,13816,833, 4064, 34085,3560, 20749,5858, 18084,17461,38015,310, 445, 1465, 37063,1757, 14814,38243,36587,18388,42351,
30312,3484, 36587,38299,13803,7750, 42351,42350,10025,7041, 39839,38015,11004,1790, 2706, 3723, 4154, 1832, 3513, 1293, 1977, 9440, 9389, 2738, 2107, 11781,33404,
10469,26205,14866,9410, 39839,8476, 12488,38015,36928,39838,30196,42350,7657, 34391,35169,42350,13718,32061,9264, 5818, 2295, 2154, 10315,34346,3537, 33141,35373,
34726,16471,2400, 3709, 24942,23207,9756, 36151,20969,17280,1668, 19583,37511,35475,15180,38570,13667,39838,28603,42350,33818,38656,7302, 37096,24600,30311,36587,
- 25754,31527,32163,2840, 3562, 27986,30646,619, 42349,5618, 11642,11033,18012,11025,22825,2066, 19272,42349,34776,39838,24599,39838,38014,20968,36587,10420,8194,
- 19302,15502,5553, 39837,36586,17149,42349,33958,34636,33818,1472, 16373,36586,6112, 35475,21739,33165,33165,10597,29513,15501,38014,38084,5536, 42349,36251,414,
+ 25754,31527,32163,2840, 3562, 27986,30646,619, 42349,5618, 11642,11033,18012,11025,22825,2066, 19272,42349,34776,39838,24599,39838,38014,20968,36587,10420,8194,
+ 19302,15502,5553, 39837,36586,17149,42349,33958,34636,33818,1472, 16373,36586,6112, 35475,21739,33165,33165,10597,29513,15501,38014,38084,5536, 42349,36251,414,
17187,35220,38613,17082,11466,8290, 31783,780, 37795,36586,34950,25229,35311,11920,7282, 21492,20442,9007, 11904,21385,33939,30843,36199,4063, 5980, 21903,12500,
530, 24229,7213, 9431, 19301,10692,13815,1721, 7504, 38014,8222, 18776,10372,7159, 35663,1197, 7934, 35055,35475,23602,12129,25089,42348,1743, 36276,34561,35082,
28383,226, 34570,39837,34852,42348,28177,6818, 9439, 38592,4012, 42348,13325,34160,14341,5403, 17726,18612,2280, 35016,33818,1602, 13256,35232,37551,20748,42348,
35475,21738,30310,1836, 37273,2841, 36649,42347,3524, 20804,38014,42347,35047,30309,35813,42347,34570,38013,25753,1613, 4219, 33165,24998,20747,33172,34570,42347,
- 34569,2976, 37721,25798,39837,4470, 15262,21160,38175,12604,1915, 9692, 32162,39837,19300,38013,42346,17097,20746,21265,30308,37339,2294, 32161,42346,2187, 3178,
- 6111, 24917,889, 30307,42346,5838, 16675,36586,22096,39836,13814,20962,17257,34569,32966,42346,27105,19222,18955,16808,29291,38013,29788,287, 38013,10245,452,
+ 34569,2976, 37721,25798,39837,4470, 15262,21160,38175,12604,1915, 9692, 32162,39837,19300,38013,42346,17097,20746,21265,30308,37339,2294, 32161,42346,2187, 3178,
+ 6111, 24917,889, 30307,42346,5838, 16675,36586,22096,39836,13814,20962,17257,34569,32966,42346,27105,19222,18955,16808,29291,38013,29788,287, 38013,10245,452,
18421,2115, 29517,27562,1961, 42345,35474,39836,25752,5672, 1901, 4581, 32309,36392,13760,34206,35070,5900, 18439,38904,1278, 32969,9624, 30381,35912,39836,35435,
38408,17624,34063,38912,20745,33486,38736,28799,1480, 20943,12325,36296,34730,29211,151, 3966, 27383,26779,32891,4555, 19813,34639,2406, 13813,20666,36690,17443,
20744,15171,19090,16570,20743,39094,2892, 35131,18302,15059,30306,35474,38012,2689, 38012,42345,42345,6521, 28602,42345,38012,17273,23628,18685,421, 2244, 33188,
@@ -17030,14 +17025,14 @@ static const unsigned short Ranks[197839] =
18083,8697, 35145,7576, 42339,20964,11605,42339,37602,36583,20754,42338,28599,714, 33816,12723,14811,39832,28598,38009,34361,38009,42338,30303,33567,37325,39832,
7025, 20250,11131,33816,12479,3203, 38400,39831,39274,35472,33816,25750,2977, 20743,37859,39831,42338,27639,10419,12979,1447, 220, 18120,35471,36583,32159,23055,
717, 33510,38710,38008,5369, 30, 1928, 11526,22598,18283,19753,12885,33045,2616, 2976, 18385,22563,37803,22454,38008,13217,38709,17778,25749,28597,42338,42337,
- 33162,34567,24596,39831,19581,42337,38008,34567,9045, 25039,39831,33162,19580,39830,33816,30302,35471,33057,33815,2471, 42337,36550,17777,23516,10931,42337,956,
+ 33162,34567,24596,39831,19581,42337,38008,34567,9045, 25039,39831,33162,19580,39830,33816,30302,35471,33057,33815,2471, 42337,36550,17777,23516,10931,42337,956,
19579,39830,1099, 19826,2801, 27180,38008,2085, 11428,12216,38007,42336,31091,6562, 2794, 13324,15500,34567,35471,28009,17014,39830,6440, 12857,36989,24764,21737,
4973, 39830,24595,35471,30582,3034, 3561, 42336,6164, 39126,36258,1125, 6054, 17233,24557,10023,30588,6602, 340, 30266,8067, 22909,19578,33073,1556, 5537, 23515,
1510, 33350,33162,30301,17272,28596,5523, 35470,42336,42336,39829,7183, 42335,3272, 4460, 5210, 42335,33104,5066, 489, 8611, 24460,36583,10930,42335,37605,18384,
35390,28595,25748,797, 39829,7660, 120, 24161,33083,1269, 19928,27834,2420, 26176,31531,149, 12440,24637,178, 1627, 11105,3799, 8759, 26673,20963,14865,31876,
- 26560,10022,13323,29881,38588,20742,33162,36678,42335,22562,9029, 35225,3340, 4959, 33165,25452,35016,4991, 36582,34750,38075,9780, 4580, 25618,29395,7387, 2155,
+ 26560,10022,13323,29881,38588,20742,33162,36678,42335,22562,9029, 35225,3340, 4959, 33165,25452,35016,4991, 36582,34750,38075,9780, 4580, 25618,29395,7387, 2155,
32117,1024, 34600,21302,39352,7304, 23820,1113, 31395,5379, 5732, 11792,823, 10021,1213, 12704,25378,11238,209, 20741,2330, 2910, 34345,38690,16695,11791,15499,
- 17096,32765,31723,37419,32158,31378,27102,2137, 26501,42334,34566,35087,17776,23514,4654, 39829,39829,42334,42334,37249,37206,39828,42334,30832,38007,36582,4545,
+ 17096,32765,31723,37419,32158,31378,27102,2137, 26501,42334,34566,35087,17776,23514,4654, 39829,39829,42334,42334,37249,37206,39828,42334,30832,38007,36582,4545,
22561,12884,11752,35679,33456,15960,38007,12478,9409, 11814,27101,2809, 28594,34908,4226, 42333,274, 38036,33161,34566,42333,24594,31917,19577,12722,35470,13812,
6754, 24150,34881,34566,15545,28593,36957,34566,16990,12883,33815,34081,9163, 23513,9408, 29955,27605,223, 42333,42333,38166,22560,2771, 34565,37529,39828,30300,
39828,18952,42332,6382, 42332,10946,32157,27123,26392,37432,3041, 33341,36582,6061, 38007,34565,42332,38006,20679,3370, 38006,24593,12477,18082,36664,12215,33161,
@@ -17045,9 +17040,9 @@ static const unsigned short Ranks[197839] =
18883,34565,33161,28592,39827,39827,20962,34565,20249,27099,36581,35470,7817, 33161,34564,35744,10547,16323,33815,37213,21418,10475,36581,17095,7816, 30299,18081,
38109,28684,33160,11790,14864,24592,39827,8335, 37124,36581,42330,27098,35609,33768,36089,34564,35470,36581,24591,38005,42330,35469,32293,15498,22718,22111,23388,
14340,1638, 31738,8330, 3717, 34564,36244,33814,18951,34615,42330,5905, 676, 1094, 4544, 3408, 33814,42330,35469,18383,22559,37042,3667, 11378,10282,11045,18074,
- 8485, 38067,32156,33814,8696, 2367, 42329,20740,33160,23859,6282, 30071,19576,35469,9407, 35469,39826,19575,11610,34598,19386,22558,36373,7116, 3857, 2777, 8541,
+ 8485, 38067,32156,33814,8696, 2367, 42329,20740,33160,23859,6282, 30071,19576,35469,9407, 35469,39826,19575,11610,34598,19386,22558,36373,7116, 3857, 2777, 8541,
10691,3480, 33042,15817,9469, 11130,29124,33052,42329,36812,42329,36580,32155,32154,37596,42329,36580,39300,25746,33814,36580,4427, 34564,16223,28591,604, 35546,
- 42328,38005,8790, 34969,39139,33813,21800,34213,8568, 5372, 29747,107, 16620,3141, 42328,20324,7708, 8329, 724, 36754,38041,4285, 12667,1797, 26361,22977,3790,
+ 42328,38005,8790, 34969,39139,33813,21800,34213,8568, 5372, 29747,107, 16620,3141, 42328,20324,7708, 8329, 724, 36754,38041,4285, 12667,1797, 26361,22977,3790,
33813,38524,5949, 13212,22544,37393,2788, 38841,6520, 28590,10945,14339,17429,39826,21912,32579,13007,14642,11529,30704,5493, 38391,503, 5868, 29416,14245,15497,
1544, 30038,36711,16094,11484,31245,24489,32625,42328,3649, 415, 35468,2329, 33813,36580,23350,42328,33160,22397,42327,37042,28589,39826,5130, 1628, 34563,35468,
33160,2450, 9102, 11192,6145, 39826,11991,42327,2541, 38101,34549,31534,36579,42327,38005,15959,6628, 22107,3270, 1475, 33239,35468,37817,38747,2470, 35468,42327,
@@ -17061,23 +17056,23 @@ static const unsigned short Ranks[197839] =
32100,33967,36578,15544,30297,42323,8245, 42323,35492,22556,30396,42322,35235,39100,36514,39823,36577,25745,35620,24307,33811,23511,38003,37149,39823,42322,39822,
35466,33811,27094,36577,24589,38224,14862,19298,33255,33193,16895,14556,28653,25443,17369,42322,33166,33735,8901, 16423,35665,35154,33670,14905,39822,39822,28586,
14861,30296,662, 38003,606, 36319,1474, 8658, 38877,39822,42322,19574,34561,24372,1364, 37293,22357,2503, 11483,11216,33770,1213, 27093,14810,30295,14072,11315,
- 42321,4459, 42321,20826,9177, 23051,4331, 23891,15672,5722, 4972, 17094,9263, 2548, 22555,31072,1874, 7929, 33159,42321,11993,30294,5721, 34561,24045,22469,2992,
+ 42321,4459, 42321,20826,9177, 23051,4331, 23891,15672,5722, 4972, 17094,9263, 2548, 22555,31072,1874, 7929, 33159,42321,11993,30294,5721, 34561,24045,22469,2992,
14114,35466,42321,8236, 21732,39821,20031,36577,19179,25939,42320,22513,20246,39363,38003,35911,22554,421, 5743, 1509, 7624, 38835,6477, 17322,14422,33941,21792,
34091,30985,6186, 9709, 36234,29476,923, 6024, 28262,9916, 29449,16564,21572,9273, 30041,25135,9350, 34434,5304, 39129,270, 416, 6055, 33742,33158,27105,15510,
34948,12637,10409,4309, 30914,19644,36366,22427,37548,33215,15187,26842,36705,24441,23364,12128,19797,38411,4458, 37017,16865,10018,9618, 10698,11174,18286,37583,
33051,33439,36065,20825,20918,28666,33163,19378,19270,33682,17271,1199, 6110, 42320,38436,33163,42320,39821,17773,32152,42320,35783,4516, 15020,29115,11528,16507,
29451,6776, 13732,26516,11548,18080,3020, 29944,15837,1897, 42319,36577,38002,37362,30293,6519, 17093,17172,8695, 14478,33158,20245,8695, 42319,33812,11482,21997,
994, 19920,25223,36074,12487,32942,18865,2997, 13810,21930,26073,13446,13867,12153,5436, 1282, 6757, 24588,36115,39260,21457,20737,30292,18949,9933, 28415,14387,
- 27609,37872,17732,39209,42319,9438, 17853,39821,34943,42319,36381,11394,13221,30291,27204,36701,6373, 42318,42318,34561,8694, 24771,16737,2698, 32953,1322, 4669,
+ 27609,37872,17732,39209,42319,9438, 17853,39821,34943,42319,36381,11394,13221,30291,27204,36701,6373, 42318,42318,34561,8694, 24771,16737,2698, 32953,1322, 4669,
18889,35077,18079,35466,11434,1745, 10678,15237,25385,30924,5220, 38002,14873,26341,33886,28867,23415,9499, 21886,7109, 39038,1408, 25382,38379,33463,21925,36576,
- 23984,14377,38237,33070,3383, 31352,22850,21057,11755,35466,38002,33722,38002,39821,38001,22319,36576,33810,39820,42318,36576,18078,42318,12475,36576,5148, 9678,
+ 23984,14377,38237,33070,3383, 31352,22850,21057,11755,35466,38002,33722,38002,39821,38001,22319,36576,33810,39820,42318,36576,18078,42318,12475,36576,5148, 9678,
39820,39158,1390, 42317,16222,20959,42317,16805,1706, 12978,36575,3156, 28585,42317,30290,35729,42317,42316,38001,34561,7928, 11751,8610, 36575,21338,38001,39820,
11291,39820,19573,15432,42316,42316,26723,17270,36575,33810,26255,9967, 35033,38759,9081, 33042,25200,1404, 29342,13161,13560,8609, 37475,405, 10923,32894,34861,
32577,39819,201, 26496,42316,38001,16372,38000,38933,24587,19297,42315,42315,42315,505, 15958,38000,35465,34560,35465,38478,12179,42315,1101, 38000,33810,35465,
33144,28584,38000,35465,37999,13780,42314,36575,39819,39819,42314,14498,38810,34562,36726,34082,17138,23080,29201,5575, 37466,33611,11529,39819,33765,19296,37999,
38814,17570,37412,4557, 14018,700, 33672,20958,1406, 6350, 32999,23311,32537,7911, 7962, 2961, 38389,23510,34929,3163, 37937,37999,29525,27328,14754,18755,29151,
- 35464,30844,32795,8608, 2770, 28933,1193, 452, 33810,33158,39818,34560,36574,17361,39818,36574,15957,37887,4689, 17772,8027, 39142,8420, 3713, 3000, 14336,4,
- 13199,520, 21593,27045,31915,3673, 9103, 13940,14043,12679,10180,9792, 9311, 975, 22696,14126,14337,3202, 33158,8354, 12220,27052,24693,27835,28449,30836,1989,
+ 35464,30844,32795,8608, 2770, 28933,1193, 452, 33810,33158,39818,34560,36574,17361,39818,36574,15957,37887,4689, 17772,8027, 39142,8420, 3713, 3000, 14336,4,
+ 13199,520, 21593,27045,31915,3673, 9103, 13940,14043,12679,10180,9792, 9311, 975, 22696,14126,14337,3202, 33158,8354, 12220,27052,24693,27835,28449,30836,1989,
20244,6278, 32551,20918,995, 28205,7024, 14860,42314,945, 14113,18948,37999,37998,39818,15543,33182,35464,36995,22553,25744,5269, 32151,28583,1368, 18382,42314,
16220,142, 15956,42313,33157,38846,537, 18486,20566,10406,154, 7275, 36574,34560,25743,32150,32149,11256,3140, 2311, 39818,37509,935, 27332,21, 7141, 34560,
42313,37998,17481,32148,4201, 17269,8921, 39817,18947,34559,9879, 15179,25196,39817,35464,30429,397, 33046,2060, 39369,32832,36242,33157,39333,32147,25742,39817,
@@ -17095,8 +17090,8 @@ static const unsigned short Ranks[197839] =
14733,7135, 19570,24585,1042, 28582,42309,17091,183, 2558, 13321,19293,36964,20732,19292,1972, 14853,18087,37997,35219,24584,12214,33809,33808,34558,36572,33155,
37996,2769, 14111,36572,6331, 11213,7829, 6202, 7960, 4552, 26254,9636, 3161, 11427,7513, 28042,5860, 145, 30486,2540, 21354,20731,14461,18380,32706,13068,16463,
3749, 35463,33382,21770,38306,32997,36572,42309,36571,42308,36571,42308,39814,27091,39813,37996,37996,24714,36571,37996,33808,35463,20956,32913,38036,37995,23508,
- 16220,27090,42308,42308,32400,35020,4930, 18946,12720,3099, 2687, 18156,6936, 5164, 3412, 30289,31569,21813,27398,7521, 103, 17863,28098,8817, 4103, 32519,9513,
- 7554, 4065, 6454, 25031,12405,17462,28155,15740,27623,18294,14012,6858, 18141,20463,21254,26852,30788,23714,20675,7290, 13817,25436,17597,24543,22034,28045,827,
+ 16220,27090,42308,42308,32400,35020,4930, 18946,12720,3099, 2687, 18156,6936, 5164, 3412, 30289,31569,21813,27398,7521, 103, 17863,28098,8817, 4103, 32519,9513,
+ 7554, 4065, 6454, 25031,12405,17462,28155,15740,27623,18294,14012,6858, 18141,20463,21254,26852,30788,23714,20675,7290, 13817,25436,17597,24543,22034,28045,827,
7575, 14460,37995,21731,32736,17090,31432,7262, 22552,1597, 3394, 13678,27749,21843,20956,12671,42307,42307,5199, 37564,19993,33502,2850, 28634,37995,6638, 12976,
13800,2090, 23783,33155,12486,33808,35462,34558,39813,15859,10638,15262,23368,33155,30288,42307,33808,42307,34219,42306,35462,24757,34557,28581,34047,11992,37995,
34916,42306,37994,33807,36571,18945,39813,35406,6457, 1985, 10689,2508, 729, 36570,2300, 6832, 913, 21191,2176, 18379,30287,17339,27089,21730,1421, 22655,36348,
@@ -17104,7 +17099,7 @@ static const unsigned short Ranks[197839] =
28143,42305,15803,42305,13320,5174, 33251,39812,60, 37993,39812,25127,968, 7605, 24024,24545,37234,36570,16126,37993,42305,13729,2247, 9180, 20033,25789,37516,
14458,17769,259, 7246, 11061,27088,7075, 10981,37993,38272,39812,25947,13799,4174, 15129,36569,28616,7532, 747, 33807,34345,37260,36569,27561,33154,18944,17768,
24583,7775, 33034,10758,20548,37175,37325,39811,19569,14232,35462,39811,39811,34403,19635,33154,1568, 20542,22321,37993,6081, 33154,6754, 23792,34866,34042,22563,
- 13188,20288,35108,24071,34177,33045,255, 42305,15541,2944, 15840,9558, 33807,37932,31700,35325,1276, 23514,13167,18920,39811,19291,34197,42304,28833,36569,9437,
+ 13188,20288,35108,24071,34177,33045,255, 42305,15541,2944, 15840,9558, 33807,37932,31700,35325,1276, 23514,13167,18920,39811,19291,34197,42304,28833,36569,9437,
25980,3129, 20349,34996,37992,34557,25741,16032,10467,12127,38367,34007,9262, 7367, 1411, 20377,33153,28809,35461,4616, 34733,15495,16219,5418, 549, 39810,37145,
14457,35775,42304,42304,42304,24246,34974,8495, 36569,21370,17767,34186,7400, 14808,20955,18360,12281,4875, 14437,11861,22947,38993,3387, 7, 26823,3956, 27166,
20249,17605,33153,36568,10595,22428,42303,14424,35271,37291,22671,19499,30285,33153,5764, 8235, 10596,35461,35177,18077,42303,33153,11314,12877,39403,42303,23507,
@@ -17112,20 +17107,20 @@ static const unsigned short Ranks[197839] =
249, 9846, 26131,4995, 8748, 32337,1789, 11212,35860,31417,37992,11312,10111,19290,20582,33806,37991,11750,6900, 33152,35118,35461,42303,37991,42302,35460,33806,
37991,144, 5862, 7399, 35460,18377,42302,28579,22296,27422,9436, 24872,3350, 17268,28578,11991,33791,3346, 37991,3739, 2234, 22551,34557,34557,791, 24143,33806,
33152,15953,33103,34556,10942,15753,39810,12752,42302,39367,36325,17766,35460,36308,37990,33934,20730,27087,36424,15952,42302,36957,9043, 25740,37990,17089,28577,
- 15951,37990,199, 42301,21729,37990,33298,36624,38279,12334,3146, 38248,42301,42301,34334,42301,38466,37895,23505,9261, 37119,19289,38608,34465,1185, 14291,8967,
+ 15951,37990,199, 42301,21729,37990,33298,36624,38279,12334,3146, 38248,42301,42301,34334,42301,38466,37895,23505,9261, 37119,19289,38608,34465,1185, 14291,8967,
23929,16437,34024,16006,15281,35537,33806,11311,34556,32995,6885, 15494,15371,39809,1353, 36969,2115, 955, 36568,35101,42300,33152,13140,10655,39809,35227,15111,
18368,27386,33349,42300,34556,7022, 18943,37989,17528,22703,37989,11310,7983, 28576,33805,24953,37989,11990,31530,13319,20729,17088,39809,4393, 11527,42300,37989,
- 13798,35460,18211,34039,39809,27086,21728,14455,184, 2768, 8644, 33177,23007,2936, 27803,19288,28575,11580,13511,33152,15493,21315,20316,1589, 4786, 42300,6281,
+ 13798,35460,18211,34039,39809,27086,21728,14455,184, 2768, 8644, 33177,23007,2936, 27803,19288,28575,11580,13511,33152,15493,21315,20316,1589, 4786, 42300,6281,
13811,18680,1700, 14859,31721,20728,448, 12071,353, 22531,24773,14589,12404,25894,37988,20954,22550,35459,42299,411, 17591,7612, 9617, 18613,42299,33151,29801,
20937,25254,37191,33327,30284,20953,17087,31840,23261,1171, 38662,3396, 38767,31932,34420,27911,28880,16249,4643, 34556,33151,32143,4024, 39808,688, 35651,34555,
- 42299,2375, 16218,12772,17105,17769,15109,34383,11788,27394,42299,2664, 27085,39808,20952,30283,39340,25739,39808,5500, 24284,36568,11481,5952, 34555,17765,4545,
+ 42299,2375, 16218,12772,17105,17769,15109,34383,11788,27394,42299,2664, 27085,39808,20952,30283,39340,25739,39808,5500, 24284,36568,11481,5952, 34555,17765,4545,
37562,835, 39808,19329,29949,2682, 23566,36567,5425, 10065,36604,37032,33666,12881,21716,28490,39807,15540,28574,9690, 26473,34518,35013,17376,26930,42298,35459,
- 11221,16804,28573,30326,24206,42298,35459,25105,20038,3696, 19132,12176,32889,14743,19475,30884,2510, 15424,35059,33379,23657,6889, 15026,19257,12762,32970,5262,
+ 11221,16804,28573,30326,24206,42298,35459,25105,20038,3696, 19132,12176,32889,14743,19475,30884,2510, 15424,35059,33379,23657,6889, 15026,19257,12762,32970,5262,
2096, 13318,38420,30904,1636, 33151,10071,6518, 32309,18076,5488, 27084,20236,20727,42298,393, 36393,24022,6459, 29646,35080,2493, 33330,5604, 942, 42298,35459,
12125,34972,13797,13796,20242,4256, 17328,33508,37988,28803,37388,33151,39807,28572,36567,39807,18156,11309,39807,2392, 36567,42297,4181, 33781,37988,22793,35458,
10595,34555,6149, 1370, 28269,33540,19005,37988,35458,12255,7105, 3377, 235, 16290,32058,32142,24582,37987,12485,35458,9405, 34555,18376,12250,30169,17267,33088,
21389,18069,42297,9357, 18194,34554,835, 23795,39239,37093,5147, 2338, 7028, 19498,24180,16772,9521, 28473,21727,42297,14835,19710,24581,35458,17312,24580,23504,
- 7870, 36567,26927,20241,12529,12124,20360,37178,3328, 3640, 35837,10462,35457,39806,2547, 33805,21588,39806,15177,1862, 42297,42296,42296,5779, 25738,17086,3076,
+ 7870, 36567,26927,20241,12529,12124,20360,37178,3328, 3640, 35837,10462,35457,39806,2547, 33805,21588,39806,15177,1862, 42297,42296,42296,5779, 25738,17086,3076,
36566,42296,27969,36566,36958,2919, 8654, 19287,35636,221, 32797,19793,10941,330, 38248,36566,39206,28571,11211,33449,8812, 36566,39806,39806,39805,7398, 10342,
34214,37987,36565,39805,35457,33805,33805,20122,875, 32025,5088, 1752, 38053,8693, 29916,34445,21726,34554,28570,24173,18942,1170, 23510,2607, 5315, 7503, 35553,
33698,32922,39805,1365, 36315,12213,33329,33969,33804,12689,12123,24523,37987,5046, 39805,33134,28600,455, 8842, 19568,38656,35457,42296,19567,37987,37986,34554,
@@ -17133,33 +17128,33 @@ static const unsigned short Ranks[197839] =
35405,19344,42295,36565,42295,42295,1129, 33954,35023,14182,10110,31598,36272,13454,10567,20409,36932,26343,27083,35456,13488,1492, 22422,11446,16145,4162, 36565,
18941,1579, 15492,2656, 36565,30751,29144,39202,39250,6781, 36564,34756,8193, 17784,37973,21283,25704,35401,31166,39379,37041,38688,35469,25966,37986,13505,38346,
17875,12122,38831,36054,39199,38314,13317,14335,38864,5378, 20726,11210,19286,37986,38356,25904,8610, 23654,33150,8494, 30282,4605, 16175,17764,32141,39804,39803,
- 34554,42295,11787,12484,18075,8655, 13316,37985,18074,17085,11209,14334,33078,38851,20725,16217,30459,42294,37985,33804,24579,35456,39803,14807,1249, 16590,7502,
- 28569,42294,38336,33400,35921,37897,2063, 23982,33804,36998,2462, 3872, 3526, 23577,7501, 16216,14858,5173, 23503,2849, 12464,26588,24019,18073,33011,17339,9435,
+ 34554,42295,11787,12484,18075,8655, 13316,37985,18074,17085,11209,14334,33078,38851,20725,16217,30459,42294,37985,33804,24579,35456,39803,14807,1249, 16590,7502,
+ 28569,42294,38336,33400,35921,37897,2063, 23982,33804,36998,2462, 3872, 3526, 23577,7501, 16216,14858,5173, 23503,2849, 12464,26588,24019,18073,33011,17339,9435,
22412,39803,25737,38534,18072,20326,18394,2846, 16215,39803,10264,28194,37637,15765,38247,16803,42294,13633,39802,39802,20032,34323,30912,8155, 32982,22547,36564,
34682,22883,5858, 27565,21725,39802,20724,12483,12880,19285,8328, 13810,35371,27323,20723,5377, 39802,25736,13510,36564,39801,32140,39801,34129,25735,27131,42294,
18872,37341,9434, 8145, 37069,9433, 42293,35693,13940,18573,15491,37514,42293,8919, 37985,18071,33014,36684,13809,29075,42293,11786,4284, 15490,38175,34311,35837,
27082,37985,31630,8066, 12121,18070,38565,19572,35525,16214,33840,39138,284, 33985,19527,19669,578, 36564,38023,2617, 18536,38632,5956, 21724,2606, 3812, 10017,
- 607, 671, 14522,4005, 3028, 1994, 17084,38151,11936,6422, 1765, 15786,12422,17929,21273,37984,14751,1498, 35624,13315,29577,19284,13314,20722,37184,6599, 1139,
- 2999, 21455,18581,30889,24144,24663,5778, 16213,469, 2289, 7393, 1103, 10940,989, 26909,18369,38947,24996,21860,1189, 21814,29125,3712, 32853,33150,5552, 8192,
- 8032, 21405,38887,12120,20721,15810,901, 19283,9404, 7397, 33150,10244,39080,28568,26046,17083,286, 3040, 12832,22183,29899,16590,23528,36563,4852, 2215, 7704,
- 39358,2769, 37984,39801,10921,22659,34694,4379, 26111,32139,30281,33397,698, 11690,10418,35456,674, 39, 24578,32326,33803,4311, 33149,16371,28567,42293,6007,
+ 607, 671, 14522,4005, 3028, 1994, 17084,38151,11936,6422, 1765, 15786,12422,17929,21273,37984,14751,1498, 35624,13315,29577,19284,13314,20722,37184,6599, 1139,
+ 2999, 21455,18581,30889,24144,24663,5778, 16213,469, 2289, 7393, 1103, 10940,989, 26909,18369,38947,24996,21860,1189, 21814,29125,3712, 32853,33150,5552, 8192,
+ 8032, 21405,38887,12120,20721,15810,901, 19283,9404, 7397, 33150,10244,39080,28568,26046,17083,286, 3040, 12832,22183,29899,16590,23528,36563,4852, 2215, 7704,
+ 39358,2769, 37984,39801,10921,22659,34694,4379, 26111,32139,30281,33397,698, 11690,10418,35456,674, 39, 24578,32326,33803,4311, 33149,16371,28567,42293,6007,
33149,10466,35189,32413,14050,22210,37984,42292,28566,34553,30589,36080,18657,34939,17844,15138,22313,31701,11101,19640,16212,11090,31212,39801,39800,28565,25262,
13987,8417, 38397,38967,11208,23700,12335,24410,39800,14710,33149,38608,35456,39224,37713,36723,23352,36879,37984,34553,35455,37228,20951,39800,26836,19400,14523,
7251, 36563,3639, 23167,2885, 37704,34879,9432, 42292,27495,33803,42292,21901,35455,37983,34553,34553,35455,11315,37983,2716, 13909,42292,17862,1418, 33803,34552,
- 33149,35455,34552,8566, 8462, 35570,9110, 36029,13509,806, 25740,2767, 27081,6455, 20720,35532,15539,39800,34552,34587,30323,1651, 13372,42291,36825,1085, 9816,
+ 33149,35455,34552,8566, 8462, 35570,9110, 36029,13509,806, 25740,2767, 27081,6455, 20720,35532,15539,39800,34552,34587,30323,1651, 13372,42291,36825,1085, 9816,
18069,7553, 4331, 31464,1822, 10594,7140, 18098,27407,38410,3080, 11798,14857,29858,34552,16831,37983,37983,30280,20950,27368,8474, 35454,28226,39799,42291,37982,
42291,32138,23502,14110,36563,36563,39799,13487,35699,3268, 36562,27080,37696,26014,25732,36693,2080, 42291,5005, 14454,39799,12212,39799,42290,24577,36377,15749,
36033,11988,16692,34127,37982,23770,6376, 39798,39798,19282,18940,33148,35367,42290,5149, 32550,30783,30973,39091,21881,7095, 36947,14342,21383,6280, 35288,30553,
- 28245,23439,24182,8046, 27205,25352,34798,35306,28678,19359,30697,4727, 36166,20949,39798,42290,21718,33148,33845,39798,5745, 34489,33803,367, 20255,22251,7840,
+ 28245,23439,24182,8046, 27205,25352,34798,35306,28678,19359,30697,4727, 36166,20949,39798,42290,21718,33148,33845,39798,5745, 34489,33803,367, 20255,22251,7840,
23148,34942,7130, 17082,680, 17282,3060, 6726, 13065,10465,18591,20719,24707,24465,36698,21360,34269,14013,12482,27449,551, 9600, 18803,35822,21666,4851, 34265,
- 35381,18068,20923,26277,21723,34551,35727,11526,30279,30278,36562,8607, 27206,6385, 15489,9260, 28733,21722,4868, 39797,39797,2062, 32977,8972, 16211,22546,8353,
+ 35381,18068,20923,26277,21723,34551,35727,11526,30279,30278,36562,8607, 27206,6385, 15489,9260, 28733,21722,4868, 39797,39797,2062, 32977,8972, 16211,22546,8353,
36562,8692, 9962, 11602,24795,1365, 26643,26681,34551,42290,19126,30456,17141,36510,4691, 9084, 10464,9485, 20520,12204,976, 33734,17420,7212, 11480,37982,21001,
- 10939,3721, 20718,30680,18067,37982,33454,37578,25734,33148,37981,30949,27079,35454,5777, 12988,19357,32945,36562,36561,33150,32137,1562, 24640,36561,8461, 7211,
- 4850, 11479,37205,33618,42289,14333,19281,22436,20717,33148,17081,17763,37981,39797,17762,6887, 28035,29215,30277,10359,17839,18972,13220,42289,36613,1867, 468,
- 22178,29596,5137, 34873,37790,3339, 26523,7943, 6885, 33982,1056, 5169, 8831, 25407,15570,3204, 35454,2984, 13650,6507, 17909,27668,12481,29621,10755,26053,351,
+ 10939,3721, 20718,30680,18067,37982,33454,37578,25734,33148,37981,30949,27079,35454,5777, 12988,19357,32945,36562,36561,33150,32137,1562, 24640,36561,8461, 7211,
+ 4850, 11479,37205,33618,42289,14333,19281,22436,20717,33148,17081,17763,37981,39797,17762,6887, 28035,29215,30277,10359,17839,18972,13220,42289,36613,1867, 468,
+ 22178,29596,5137, 34873,37790,3339, 26523,7943, 6885, 33982,1056, 5169, 8831, 25407,15570,3204, 35454,2984, 13650,6507, 17909,27668,12481,29621,10755,26053,351,
24069,13644,39380,11971,23594,14152,31188,9287, 7046, 36318,25430,11672,6859, 13336,9471, 19006,34072,33236,37981,39797,36561,3974, 34551,3890, 1647, 20240,17346,
- 937, 9109, 39796,39796,33802,11832,38160,33802,8473, 14332,4962, 4327, 2009, 38980,21455,22892,20341,7174, 9998, 28787,33802,33802,39796,28564,17761,8173, 6343,
- 38996,25010,21031,39038,42289,18705,35454,6693, 29277,21081,15105,31035,24730,8564, 34866,22228,33153,4021, 4886, 27579,15475,15048,14331,28563,30276,15538,2952,
+ 937, 9109, 39796,39796,33802,11832,38160,33802,8473, 14332,4962, 4327, 2009, 38980,21455,22892,20341,7174, 9998, 28787,33802,33802,39796,28564,17761,8173, 6343,
+ 38996,25010,21031,39038,42289,18705,35454,6693, 29277,21081,15105,31035,24730,8564, 34866,22228,33153,4021, 4886, 27579,15475,15048,14331,28563,30276,15538,2952,
20988,36561,22545,42289,32136,39796,35453,34551,39795,30275,30274,34550,2197, 36560,37981,42288,30956,3454, 21721,25733,35453,32135,35453,37980,33147,27078,28562,
39795,27171,33147,38235,39795,42288,12904,20716,22544,10593,6109, 12474,2027, 12719,2706, 42288,32134,42288,10029,25732,12397,39370,36176,17266,34550,27077,33801,
34295,12211,33801,35453,32772,42287,36241,36363,32834,35123,34550,26591,28561,37653,33201,36560,37980,11207,18438,39795,36560,5961, 35086,42287,27076,35618,17080,
@@ -17174,11 +17169,11 @@ static const unsigned short Ranks[197839] =
34578,24575,27071,42282,5231, 39792,14289,38933,36443,11274,4033, 9219, 310, 1204, 19774,6794, 32864,21856,22239,15746,3217, 22859,10352,5905, 39792,35451,35568,
36760,14328,16802,25692,21362,1857, 36559,42282,10928,36994,35450,8024, 12469,35450,39792,37978,1558, 39791,33244,11205,33918,11747,37209,19118,14856,18375,42282,
36558,38491,27679,10243,15539,33146,15537,39791,28560,164, 14855,14091,13535,17910,17265,27347,37978,16602,39296,5790, 42281,381, 33064,6330, 7703, 12479,10938,
- 1510, 4363, 35450,39791,3855, 9279, 8064, 29860,714, 5781, 20851,27762,22933,13312,33009,17264,1915, 24891,36782,42281,33145,35450,34548,3936, 8272, 35848,7533,
- 2497, 406, 35449,2460, 34515,30257,35728,33799,38023,3945, 42281,42281,2021, 36558,29593,2728, 15221,15259,16809,34548,3392, 38662,25338,18505,16508,27366,6589,
+ 1510, 4363, 35450,39791,3855, 9279, 8064, 29860,714, 5781, 20851,27762,22933,13312,33009,17264,1915, 24891,36782,42281,33145,35450,34548,3936, 8272, 35848,7533,
+ 2497, 406, 35449,2460, 34515,30257,35728,33799,38023,3945, 42281,42281,2021, 36558,29593,2728, 15221,15259,16809,34548,3392, 38662,25338,18505,16508,27366,6589,
4014, 33799,27070,28559,12647,42280,10263,35449,12672,5336, 36562,1984, 5843, 22505,34457,33149,27069,39791,34891,8026, 15950,34548,25730,37023,16798,39790,31186,
19276,42280,36558,33798,23446,24128,39790,5671, 33184,42280,13201,28558,33145,30271,24448,21008,36523,42280,37124,21606,561, 7488, 16919,24041,10291,10958,35449,
- 42279,36558,39790,33798,34547,2528, 13808,25729,33338,36223,34547,37978,39790,13959,36557,42279,13794,42279,39183,39789,4042, 30679,37977,37977,39789,15949,5426,
+ 42279,36558,39790,33798,34547,2528, 13808,25729,33338,36223,34547,37978,39790,13959,36557,42279,13794,42279,39183,39789,4042, 30679,37977,37977,39789,15949,5426,
39789,38414,30510,25728,23501,28557,25727,37977,3201, 17501,29932,4329, 35841,8811, 36557,142, 15708,499, 26973,19491,4902, 4628, 27178,32839,7307, 27013,23276,
28544,19282,14167,21936,23145,16055,27818,20846,26442,23594,9703, 14854,39789,16179,11795,2508, 18710,16210,1875, 33034,10622,32272,35031,30270,42279,22543,32129,
7328, 31869,23500,33798,6277, 16368,24574,25726,6006, 38797,16209,39788,17077,18374,15175,27123,42278,33369,34024,6314, 12196,5987, 19564,4970, 6680, 12878,35107,
@@ -17192,20 +17187,20 @@ static const unsigned short Ranks[197839] =
30332,10269,12106,35448,9689, 20700,464, 34898,22541,17657,42277,4971, 36557,42277,10552,33797,16553,39786,34547,37976,13508,36557,2419, 37774,3306, 13434,22540,
42277,37976,36556,2922, 6745, 34825,27227,12718,36556,19734,6473, 128, 2796, 31149,13820,23823,24859,2792, 12480,10688,7936, 6876, 35383,36206,5208, 11839,35724,
14453,39258,36644,11646,34955,10175,2800, 27641,39786,30623,17263,20947,42276,14452,21720,17262,2007, 12222,409, 5092, 32896,34547,24573,20237,7005, 34112,38654,
- 2044, 1382, 34546,35229,20236,32127,20946,25668,10589,32126,37975,39786,37975,31679,27316,32125,26526,14189,480, 18004,37734,35448,20235,23121,37975,5599, 7519,
- 36556,34359,29354,36008,25351,34546,37975,3629, 12859,30269,7182, 9042, 9688, 30268,18063,9162, 42276,29022,25723,42276,32124,6439, 32123,3968, 39786,20945,9035,
+ 2044, 1382, 34546,35229,20236,32127,20946,25668,10589,32126,37975,39786,37975,31679,27316,32125,26526,14189,480, 18004,37734,35448,20235,23121,37975,5599, 7519,
+ 36556,34359,29354,36008,25351,34546,37975,3629, 12859,30269,7182, 9042, 9688, 30268,18063,9162, 42276,29022,25723,42276,32124,6439, 32123,3968, 39786,20945,9035,
29148,4173, 37773,33797,33144,38069,6143, 33797,3015, 29772,37974,36556,17608,9271, 22539,19563,32122,39785,979, 23369,20944,20234,39785,17261,19562,36854,32954,
13821,13921,34663,35585,19734,8134, 39785,3797, 19388,38312,25486,14804,12259,2852, 18022,20032,196, 24001,42276,712, 30584,2344, 454, 7181, 12907,36122,32925,
6276, 37974,27067,36555,24572,33658,42275,9975, 16367,33797,35448,35007,37624,19935,34546,18704,33144,33796,25722,27066,27065,34675,39785,36555,33796,36555,39784,
34546,20233,39784,23499,36555,545, 23430,24571,17506,10634,36646,35447,911, 42275,25721,15394,5649, 32121,24570,27064,24788,13216,25969,19561,33796,42275,19560,
538, 4340, 12813,33052,12210,35388,2017, 36716,5935, 13806,37400,3486, 39784,42275,11752,35447,13219,7398, 4929, 28223,42274,14327,17076,7317, 20710,36554,20709,
36554,1919, 977, 12974,42274,19275,5989, 364, 26574,34545,27063,15722,21445,13544,10463,19031,20342,636, 11722,16344,18062,30187,21226,23079,28970,24569,39784,
- 15212,1245, 21188,656, 21124,32991,19033,32829,26010,32147,37293,3674, 15484,38774,4013, 24921,20943,33775,35447,8147, 779, 8472, 11525,15314,11265,10937,4756,
+ 15212,1245, 21188,656, 21124,32991,19033,32829,26010,32147,37293,3674, 15484,38774,4013, 24921,20943,33775,35447,8147, 779, 8472, 11525,15314,11265,10937,4756,
2924, 10462,9616, 21135,6439, 10287,24194,36938,8327, 4892, 8829, 28176,42274,42274,25204,8910, 25750,18950,29415,30332,20882,29612,10461,6288, 34745,30267,27177,
- 37974,9, 10978,27734,12143,8471, 4897, 18373,27062,5763, 8352, 35579,35627,36052,34332,7180, 15947,11985,21661,11725,17464,33931,3887, 38170,7702, 39188,9687,
- 34642,42273,906, 2349, 17456,31174,24780,32700,14507,17518,12156,10241,27826,5549, 10719,15711,33796,6598, 37974,22141,35447,42273,39783,18939,36554,42273,4818,
+ 37974,9, 10978,27734,12143,8471, 4897, 18373,27062,5763, 8352, 35579,35627,36052,34332,7180, 15947,11985,21661,11725,17464,33931,3887, 38170,7702, 39188,9687,
+ 34642,42273,906, 2349, 17456,31174,24780,32700,14507,17518,12156,10241,27826,5549, 10719,15711,33796,6598, 37974,22141,35447,42273,39783,18939,36554,42273,4818,
4787, 10185,29743,26025,15618,9615, 13805,34507,11784,12877,6384, 19274,18421,33795,10015,17075,36567,38807,22538,8663, 32000,891, 7397, 20942,28279,39783,27776,
- 35446,39783,15535,24568,29813,16366,24568,22537,13530,26393,15946,37973,37973,35446,2090, 35446,6963, 128, 33077,6005, 37973,39404,20708,5284, 38592,5637, 4762,
+ 35446,39783,15535,24568,29813,16366,24568,22537,13530,26393,15946,37973,37973,35446,2090, 35446,6963, 128, 33077,6005, 37973,39404,20708,5284, 38592,5637, 4762,
398, 33144,37973,30266,39783,32936,33143,9275, 12717,34545,35446,35445,39782,36554,37488,35445,33143,37972,34545,32120,39782,11478,39782,37273,21774,36489,28556,
30265,10073,9264, 33563,36553,36553,33143,9839, 28453,36553,5888, 20110,31012,18569,35445,32290,33795,34545,42273,27061,35976,30264,24747,17514,17184,39782,42272,
16243,16699,11739,20345,36553,42272,42272,3620, 33322,17074,36552,45, 7129, 20232,2840, 42272,16137,13245,42271,30263,10592,15174,25191,3030, 4577, 42271,19559,
@@ -17214,32 +17209,32 @@ static const unsigned short Ranks[197839] =
16787,6472, 31596,42270,17687,22535,39781,28757,35444,24899,34544,12473,36390,19890,42270,28555,9867, 4659, 18061,32119,35444,37972,12716,33142,24464,33142,35287,
36551,42270,23498,6347, 42270,3233, 15483,33795,7491, 33879,2975, 18371,3439, 42269,24274,35444,34501,39780,42269,33794,42269,23497,15173,23496,683, 28554,12472,
21718,18370,39780,38995,33046,15945,34927,42269,36551,36551,39780,36551,12209,39780,13506,9403, 3303, 42268,37534,10415,39779,39779,10489,42268,36550,39350,11984,
- 32340,37972,36550,33794,2601, 9413, 14852,39779,16365,14326,37425,8120, 30262,23495,33142,5435, 19171,12008,12876,39345,32669,13793,42268,4240, 257, 32945,5135,
+ 32340,37972,36550,33794,2601, 9413, 14852,39779,16365,14326,37425,8120, 30262,23495,33142,5435, 19171,12008,12876,39345,32669,13793,42268,4240, 257, 32945,5135,
17354,9818, 19178,10927,38501,6374, 29971,3546, 39779,27791,37972,2433, 11306,12715,38696,14430,9108, 42268,5249, 15172,20707,36550,11477,36126,42267,28975,37971,
20941,9024, 7427, 24943,14325,20706,19273,23380,22056,38917,1041, 19558,36872,4888, 20705,14108,18988,21007,25093,34645,35163,38135,8360, 18248,35946,6241, 22421,
32831,34657,18938,30261,18937,39778,39778,35443,25720,18369,37971,2179, 36550,33142,39778,24242,30260,23979,12117,10602,2989, 36549,23494,51, 14008,19557,15171,
33794,206, 28044,33141,16801,10518,34544,5045, 2124, 39327,14944,33151,19441,35443,10591,466, 25833,5230, 33790,37971,39778,618, 14324,33794,36549,38945,19026,
- 27058,35443,7701, 37971,35131,1962, 5081, 27870,9496, 4082, 5746, 9965, 19893,36549,33141,18368,11783,5792, 3338, 5861, 17260,35889,2935, 16207,12049,37970,7253,
+ 27058,35443,7701, 37971,35131,1962, 5081, 27870,9496, 4082, 5746, 9965, 19893,36549,33141,18368,11783,5792, 3338, 5861, 17260,35889,2935, 16207,12049,37970,7253,
11476,34008,33125,9259, 18060,2977, 17259,39777,36549,6045, 38509,31551,23493,38590,16206,412, 36115,9107, 5947, 35443,36548,35815,10926,30259,11782,39777,37970,
37531,33793,39777,6256, 11510,33141,39348,35442,21717,36548,34544,3014, 13505,42267,42267,42267,15534,20940,35442,37970,33057,36548,24566,39777,34404,28553,20939,
- 42266,1383, 28418,24565,35442,12780,929, 37970,33141,34130,1367, 10090,5268, 33140,39776,39776,923, 413, 10610,12875,33692,37969,18059,35442,19960,826, 1781,
+ 42266,1383, 28418,24565,35442,12780,929, 37970,33141,34130,1367, 10090,5268, 33140,39776,39776,923, 413, 10610,12875,33692,37969,18059,35442,19960,826, 1781,
32104,11746,42266,34543,42266,29305,3219, 36548,34543,37969,21716,42266,30258,39776,23492,37969,32230,7749, 4140, 26378,28127,39061,35441,498, 27365,42265,37655,
- 37119,3052, 5417, 14451,7509, 6661, 9258, 19272,321, 11531,33793,17736,38509,39776,23572,36289,42265,11745,33793,16476,20231,34368,42265,16113,42265,33303,8918,
- 42264,35441,26512,29685,51, 39775,27106,36547,16495,42264,12471,32118,42264,37969,42264,716, 42263,36547,20704,37968,8926, 39775,31553,12399,35441,42263,4148,
- 17073,35165,31930,37217,42263,36547,27356,39775,39775,18323,25971,7323, 8917, 36719,1865, 10014,4106, 30790,9817, 24743,20768,1702, 16205,28563,13310,9673, 153,
- 3941, 25486,22227,16983,26682,20703,7409, 17193,2294, 5499, 12116,7039, 6329, 32802,13309,16714,19271,2594, 10936,2410, 38746,39774,21715,13804,10949,8563, 4525,
- 24558,37523,6017, 6310, 33140,34171,32931,20984,16204,1474, 20407,5988, 8326, 4126, 17072,17649,4658, 11601,10769,16203,2046, 3618, 23491,2212, 6185, 36884,5660,
+ 37119,3052, 5417, 14451,7509, 6661, 9258, 19272,321, 11531,33793,17736,38509,39776,23572,36289,42265,11745,33793,16476,20231,34368,42265,16113,42265,33303,8918,
+ 42264,35441,26512,29685,51, 39775,27106,36547,16495,42264,12471,32118,42264,37969,42264,716, 42263,36547,20704,37968,8926, 39775,31553,12399,35441,42263,4148,
+ 17073,35165,31930,37217,42263,36547,27356,39775,39775,18323,25971,7323, 8917, 36719,1865, 10014,4106, 30790,9817, 24743,20768,1702, 16205,28563,13310,9673, 153,
+ 3941, 25486,22227,16983,26682,20703,7409, 17193,2294, 5499, 12116,7039, 6329, 32802,13309,16714,19271,2594, 10936,2410, 38746,39774,21715,13804,10949,8563, 4525,
+ 24558,37523,6017, 6310, 33140,34171,32931,20984,16204,1474, 20407,5988, 8326, 4126, 17072,17649,4658, 11601,10769,16203,2046, 3618, 23491,2212, 6185, 36884,5660,
6907, 18170,23347,15247,33793,21330,6171, 39774,1506, 20406,17071,31187,24901,36630,8905, 37927,38879,7970, 2482, 6750, 28702,26895,29143,37181,15884,17258,38488,
15721,16392,22322,11676,10024,22358,17717,574, 20740,21000,3346, 7179, 7199, 4422, 13456,6040, 23868,24782,36920,15533,1768, 7842, 34543,12145,36547,10756,28552,
42263,42262,36546,42262,27057,15060,33140,34941,4266, 21714,20938,35364,25719,35441,22491,39154,14802,31615,11983,14323,27793,32117,4737, 14436,30257,17757,34543,
34372,34301,11774,14306,18936,11524,33792,19297,24893,19454,37158,42262,15681,37968,33475,29998,26521,23490,34884,1923, 3967, 12470,37968,10109,4874, 7543, 33140,
37440,39774,21713,992, 9964, 29198,273, 12115,11554,11457,5224, 1079, 19270,39129,14851,16432,24564,1855, 30256,3617, 8325, 6391, 22655,20230,6627, 21743,35861,
- 35440,21712,25718,22851,42262,36546,5209, 35070,12874,36645,16832,20702,3976, 20701,34542,35758,32383,37629,808, 2607, 18558,26162,24563,19554,9347, 5784, 6274,
+ 35440,21712,25718,22851,42262,36546,5209, 35070,12874,36645,16832,20702,3976, 20701,34542,35758,32383,37629,808, 2607, 18558,26162,24563,19554,9347, 5784, 6274,
20700,18058,6593, 20699,37968,19647,38127,7700, 11523,36546,37967,6098, 36546,12873,612, 7935, 10240,8191, 15494,10013,36969,3889, 14322,17070,38828,4172, 37967,
32116,25517,24562,42261,10414,36545,11098,19350,277, 20704,240, 499, 2052, 13604,11475,6597, 1507, 555, 20381,27737,34335,21473,1022, 32908,28396,33448,36011,
29228,4457, 566, 33659,33792,42261,38721,7210, 42261,25851,32115,11305,42261,24561,11781,32114,12972,7128, 14567,14801,3483, 8106, 10239,28551,20698,15944,12714,
37967,6004, 23980,12977,39774,37967,16202,14850,31452,5535, 39773,33714,4696, 2006, 32113,2853, 35397,983, 42260,4489, 15943,28550,12469,12971,34542,33010,33139,
- 23821,6561, 34337,37966,39773,23005,5875, 20848,34629,480, 14384,33522,34542,14800,42260,1836, 2365, 1209, 33792,28549,39773,42260,39773,42260,36545,11769,9548,
+ 23821,6561, 34337,37966,39773,23005,5875, 20848,34629,480, 14384,33522,34542,14800,42260,1836, 2365, 1209, 33792,28549,39773,42260,39773,42260,36545,11769,9548,
42259,37966,42259,16201,11100,42259,9525, 37345,36872,11078,21764,36955,12834,6729, 19658,3535, 33575,22751,34014,12472,36669,4466, 20675,147, 1081, 37966,34349,
38468,38251,39772,9041, 35440,42259,15506,23753,7989, 22002,31834,13881,11586,11103,15577,14155,32800,32843,18946,11397,5023, 36133,38267,19269,16756,20351,39772,
19290,23819,28427,27888,9878, 34542,31345,37966,24560,34541,37965,37965,12468,15942,27056,36545,23554,12387,336, 2351, 20697,16618,19117,18496,38877,35440,32112,
@@ -17248,7 +17243,7 @@ static const unsigned short Ranks[197839] =
15941,37965,36545,39772,35440,34541,100, 10108,27228,14321,19268,14849,32111,33792,23489,17259,7934, 42258,30255,7302, 38592,31929,39771,42258,33791,35439,22322,
35439,32110,11206,23488,25717,42258,42257,19267,20696,19254,27562,14848,31788,13308,42257,2273, 21037,28530,38548,25724,26575,17575,4695, 16200,42257,32810,13732,
35439,13803,33620,32851,5946, 32345,34913,25128,9547, 36818,33791,33791,27055,29547,15093,35409,18410,30766,26727,42257,35761,33617,19966,24129,27634,20695,25171,
- 33208,3967, 14089,28548,23487,35439,37965,37964,42256,36544,42256,514, 39771,33791,16800,10346,33790,42256,39771,15987,19266,34610,42256,32109,37964,27054,5820,
+ 33208,3967, 14089,28548,23487,35439,37965,37964,42256,36544,42256,514, 39771,33791,16800,10346,33790,42256,39771,15987,19266,34610,42256,32109,37964,27054,5820,
18628,9739, 7913, 18833,24380,17069,39771,10971,13632,216, 5911, 26681,19221,27626,3684, 15482,12872,33139,32108,6287, 18682,14884,3467, 14705,35397,24983,34541,
34541,39770,4785, 39770,8904, 12871,7500, 17068,22919,37142,37181,42255,35342,13317,19265,6039, 14628,39367,39337,37964,37524,34540,39770,28547,8324, 12540,37407,
9716, 9106, 36544,35890,36341,32386,2364, 38494,34538,14290,30993,36046,33790,42255,24559,37281,18100,42255,34540,36080,34540,39770,37964,37963,33139,34444,13948,
@@ -17256,22 +17251,22 @@ static const unsigned short Ranks[197839] =
36871,24297,34259,31299,24961,35386,32060,35438,8190, 34540,34539,39769,22242,37727,10601,30254,4930, 14847,39769,37441,38420,1168, 14954,35438,33790,7261, 12970,
20937,7021, 5208, 22171,24387,22534,12815,18057,8690, 36511,32999,34386,13504,30253,33005,17258,10755,4615, 35438,22475,39068,39372,42254,33139,33790,22547,39769,
39768,3816, 33789,35438,33138,2649, 24744,21632,36544,39768,18935,37963,13792,9816, 9161, 42254,38842,17756,19264,34539,753, 39768,9274, 30252,33789,15170,33789,
- 36543,4364, 1129, 35628,3251, 34048,10412,13791,37963,35437,2438, 9815, 2787, 6214, 36543,34258,36543,15480,28159,9686, 33138,13790,299, 38942,32948,36936,3337,
+ 36543,4364, 1129, 35628,3251, 34048,10412,13791,37963,35437,2438, 9815, 2787, 6214, 36543,34258,36543,15480,28159,9686, 33138,13790,299, 38942,32948,36936,3337,
42254,42254,42253,13218,42253,39768,36026,33138,36543,42253,39767,14846,34539,20229,37963,42253,13548,1335, 39053,19909,23881,28172,29782,39261,39106,9577, 16459,
- 19053,10903,34120,22135,38086,37513,30054,18518,12954,34732,36990,32437,14695,36066,16929,5387, 14845,29756,7225, 34206,37936,28681,23788,32151,35694,38590,7004,
+ 19053,10903,34120,22135,38086,37513,30054,18518,12954,34732,36990,32437,14695,36066,16929,5387, 14845,29756,7225, 34206,37936,28681,23788,32151,35694,38590,7004,
905, 2592, 20994,15309,12078,18410,38603,25798,23102,8461, 35121,18606,16716,10272,14643,31380,34036,6224, 14485,35603,36961,36792,35129,13206,21519,37763,30538,
25573,38779,9723, 11092,20693,38501,34400,8513, 34692,19255,16404,21050,15479,42252,6951, 17067,27052,6381, 9160, 39767,5595, 42252,1907, 22533,39767,14107,38617,
3179, 11780,17066,14310,10238,6816, 36542,36542,19754,5075, 16797,12969,16796,36894,9159, 35437,11779,36415,16199,3327, 16746,20228,23486,13802,13801,18056,23033,
30260,32107,24558,33789,42252,30251,30250,5027, 36854,13287,10197,10303,11205,18055,1433, 14844,42252,36261,25355,36843,24847,11304,42251,38600,28546,2432, 11128,
23467,33788,11778,7327, 32106,37053,8025, 9974, 39767,42251,42251,16118,17655,27051,33788,37962,39766,11304,35437,42251,25715,9973, 34163,30249,3640, 39766,42250,
27967,34539,42250,42250,16795,7748, 10935,4105, 15532,21711,34538,13503,4576, 42250,15915,2671, 1157, 2299, 527, 25159,32868,36722,37246,33138,42249,36542,23086,
- 36542,34538,25312,7693, 33788,1057, 10925,35437,25311,13355,35436,42249,33788,37962,3588, 31772,39391,35436,33787,23485,19113,42249,30248,28545,17755,33137,7841,
+ 36542,34538,25312,7693, 33788,1057, 10925,35437,25311,13355,35436,42249,33788,37962,3588, 31772,39391,35436,33787,23485,19113,42249,30248,28545,17755,33137,7841,
289, 4802, 5230, 34479,28544,15940,34287,12968,34538,34538,8024, 28921,37962,35436,1520, 26887,4220, 35790,17257,34537,34215,37962,39766,37961,25714,35316,35598,
- 37164,16794,34537,42249,20936,13217,37961,34321,36541,3139, 32105,25614,34595,36604,39766,1830, 27656,14691,20331,28543,42248,12460,37961,39765,9814, 35436,5376,
+ 37164,16794,34537,42249,20936,13217,37961,34321,36541,3139, 32105,25614,34595,36604,39766,1830, 27656,14691,20331,28543,42248,12460,37961,39765,9814, 35436,5376,
20643,29091,33441,23484,42248,6898, 28542,42248,28541,32482,36541,20227,42248,30676,36541,42247,9863, 23483,30247,27050,37503,12467,33787,37397,13789,30246,25713,
5951, 20692,12873,28294,31977,21036,39765,24557,20935,570, 15226,1306, 1801, 4515, 18054,4197, 7604, 3000, 30245,39223,6213, 1127, 34537,35435,35061,39765,37961,
35435,27235,17321,34537,16347,15531,33787,19228,20226,33137,8351, 29633,18597,32739,34536,395, 37960,1309, 32104,33103,36755,14320,13502,14748,32272,15478,38593,
- 36541,18367,32867,42247,5670, 28108,13148,39765,7298, 30380,5112, 6626, 30244,57, 20586,5574, 28785,29093,21480,7179, 39764,15939,37960,116, 31423,34016,2196,
+ 36541,18367,32867,42247,5670, 28108,13148,39765,7298, 30380,5112, 6626, 30244,57, 20586,5574, 28785,29093,21480,7179, 39764,15939,37960,116, 31423,34016,2196,
33137,33137,37960,32103,12967,24556,39764,15938,35435,13788,33787,37960,13216,36540,27922,1858, 23554,39764,34238,27493,38788,42247,11522,18053,33693,12713,20492,
34299,20934,42247,32906,21013,42246,4928, 12350,36540,35435,35434,8068, 38674,33786,36540,20933,38110,3168, 35673,35434,33786,19556,36540,35118,37959,12942,32102,
32947,30243,33786,42246,36539,39764,42246,6800, 42246,39763,34239,1334, 21580,15477,3437, 33786,25695,33785,39763,23846,23410,7924, 30820,26092,36637,2490, 36945,
@@ -17283,10 +17278,10 @@ static const unsigned short Ranks[197839] =
6321, 20, 9125, 759, 5384, 9288, 14224,6031, 4228, 33076,26109,21193,10880,8501, 8273, 9555, 17430,1549, 23034,2773, 17495,39760,12145,28557,7301, 8334, 32652,
37185,35433,32770,24555,3255, 12208,36539,42243,10934,39760,21542,28540,35810,37957,17256,33904,36965,9913, 35554,27314,33709,37957,4405, 7499, 38340,42243,20690,
10236,20689,19262,6068, 5426, 18050,35600,14450,9402, 7300, 15835,37957,37037,6697, 20688,42243,35274,42242,20687,20686,42242,37975,35433,32101,33596,39192,31577,
- 15476,8747, 20685,11777,18050,23344,33126,34278,7063, 36964,6528, 42242,16793,33961,36539,42242,39760,28539,29667,6328, 32456,38383,38130,6948, 11204,39759,8254,
+ 15476,8747, 20685,11777,18050,23344,33126,34278,7063, 36964,6528, 42242,16793,33961,36539,42242,39760,28539,29667,6328, 32456,38383,38130,6948, 11204,39759,8254,
23236,10235,34536,39012,33738,2544, 32746,35529,7444, 34425,23482,17065,36399,39759,6725, 37426,38469,39759,42241,42241,42241,25380,36654,36159,32789,17064,37398,
39759,23559,36538,34361,34535,42241,35433,28538,33136,8219, 33785,30504,4723, 38929,23468,10933,37372,33785,35897,42240,13963,21127,18204,21340,14, 17666,16805,
- 16391,11998,7207, 30401,39758,9526, 5263, 34535,12410,37314,6696, 27665,2531, 32990,16464,12705,8515, 14614,17556,21732,38210,28516,33514,17063,19199,21737,9550,
+ 16391,11998,7207, 30401,39758,9526, 5263, 34535,12410,37314,6696, 27665,2531, 32990,16464,12705,8515, 14614,17556,21732,38210,28516,33514,17063,19199,21737,9550,
35265,17160,36749,33553,33842,28101,15921,20947,32872,4132, 17795,19249,14932,26213,27553,25557,29629,27438,4575, 96, 37957,16792,42240,3638, 12162,7118, 27950,
3847, 6805, 33785,22380,23734,19261,11592,24622,8976, 37956,8119, 33027,33405,30034,33530,4113, 42240,36538,24016,26680,27049,21126,29679,20684,20811,33100,34692,
37485,10868,14106,672, 12477,2674, 35510,39019,11189,42240,15344,958, 16998,28251,21654,29133,10633,23421,9312, 14745,35585,3380, 5578, 10590,35433,15611,24702,
@@ -17296,7 +17291,7 @@ static const unsigned short Ranks[197839] =
1880, 23833,5021, 10994,16709,13800,19260,13799,18632,11473,8317, 9601, 4281, 31065,14843,7453, 7632, 23688,3583, 11693,6659, 33790,6183, 19137,39391,26932,42238,
2363, 31599,9070, 16948,6243, 5170, 14376,10926,36687,33289,38526,13798,17062,18048,297, 19259,18778,33100,26540,20308,31652,31672,16385,27049,18333,16517,32933,
29824,25065,23803,34811,17754,32999,9320, 11472,38787,25314,32744,36990,21709,39758,38277,39757,36538,32099,38134,39757,33784,11471,14842,32963,13305,10754,35432,
- 42237,17212,24138,28866,36907,21516,42237,16271,16541,37167,18047,39757,42237,3354, 35432,36537,34535,35461,34535,39757,22260,39042,42237,10107,33784,39756,8810,
+ 42237,17212,24138,28866,36907,21516,42237,16271,16541,37167,18047,39757,42237,3354, 35432,36537,34535,35461,34535,39757,22260,39042,42237,10107,33784,39756,8810,
28794,31202,20303,42236,39756,21708,42236,11992,28731,36537,6344, 37213,26291,42236,26515,12372,4142, 38755,31782,42236,17255,34534,8295, 33526,36537,32980,35460,
28219,36537,38268,42235,7706, 18390,1680, 10633,25077,26778,42235,1366, 27781,9123, 21196,6902, 15936,42235,37956,33136,3138, 8470, 42235,39756,15703,8454, 18856,
15900,800, 17697,37905,35432,36005,12844,400, 29527,17753,14407,39134,38396,29779,8233, 30308,42234,27048,30242,37591,20365,19500,16751,18046,3623, 28257,37956,
@@ -17314,52 +17309,52 @@ static const unsigned short Ranks[197839] =
42229,1006, 3560, 3266, 24355,1382, 2418, 12, 4410, 6599, 23361,14955,38433,34335,29414,14849,25061,38981,16843,34704,39751,778, 18366,39751,3731, 35815,38737,
36346,30239,13797,37954,42229,19258,6595, 38965,7656, 35430,28522,36535,16633,31240,39751,30181,1481, 14448,25711,725, 7699, 33775,36058,2365, 11775,8063, 38731,
19257,34107,32931,28053,3532, 34365,15731,24301,36162,14841,38310,35774,19433,12137,33045,19280,38107,36537,19416,39278,33783,28387,38369,42229,33388,9565, 42229,
- 32818,34532,37449,37390,25373,12113,39750,19668,11744,19168,35827,39750,38500,25037,32349,2136, 33348,269, 20925,37954,33443,39209,2048, 11240,5689, 37794,1825,
- 21957,35120,39750,28157,37674,34147,19256,1420, 36534,42228,37954,4283, 5207, 3710, 33414,20989,20252,20012,17229,743, 6196, 16362,37954,3417, 4929, 33135,9104,
+ 32818,34532,37449,37390,25373,12113,39750,19668,11744,19168,35827,39750,38500,25037,32349,2136, 33348,269, 20925,37954,33443,39209,2048, 11240,5689, 37794,1825,
+ 21957,35120,39750,28157,37674,34147,19256,1420, 36534,42228,37954,4283, 5207, 3710, 33414,20989,20252,20012,17229,743, 6196, 16362,37954,3417, 4929, 33135,9104,
20681,6342, 11127,37953,7698, 32095,33782,12112,36983,9103, 2895, 23388,39750,36534,33195,13796,12111,1629, 32961,10238,22200,36534,37565,23748,33782,38467,22528,
3796, 15925,35430,38487,9182, 12064,22576,30447,19518,12110,2539, 19554,8564, 14317,11776,12476,20680,18412,16197,15475,37997,14316,5550, 32094,36534,25710,33134,
6950, 36533,39749,35430,8118, 39749,20223,42228,14749,32465,11773,35074,36533,35266,37953,29458,42228,32283,26496,33268,18042,11918,32093,29324,34063,21351,39749,
- 36533,20008,34532,22805,33158,5383, 34881,37332,37917,11303,36083,42228,16081,33782,24551,6487, 12339,20394,8021, 31766,2924, 8309, 4541, 24767,33782,10262,1923,
+ 36533,20008,34532,22805,33158,5383, 34881,37332,37917,11303,36083,42228,16081,33782,24551,6487, 12339,20394,8021, 31766,2924, 8309, 4541, 24767,33782,10262,1923,
38911,6517, 8603, 19196,14621,4286, 34626,9431, 37498,25526,34499,39749,33781,7468, 502, 32780,30009,8554, 12189,12726,32802,18424,3966, 33134,18549,17060,19255,
- 7261, 3381, 39748,6594, 36592,42227,32048,34532,29857,123, 19698,32966,6244, 15354,15440,4129, 9666, 20315,13699,16906,10850,37953,24581,10078,37953,37566,4965,
+ 7261, 3381, 39748,6594, 36592,42227,32048,34532,29857,123, 19698,32966,6244, 15354,15440,4129, 9666, 20315,13699,16906,10850,37953,24581,10078,37953,37566,4965,
34358,39197,35318,37952,27783,42227,35430,442, 34995,34641,38705,23254,18187,11870,3036, 21629,27044,33996,36560,18757,10881,35649,39246,37816,12104,22527,36294,
- 36533,4147, 13963,36857,33532,33804,38071,16361,39002,11982,35387,5348, 36532,9319, 36532,42227,20222,35429,35429,37952,36532,18384,33134,32092,22526,39748,6786,
+ 36533,4147, 13963,36857,33532,33804,38071,16361,39002,11982,35387,5348, 36532,9319, 36532,42227,20222,35429,35429,37952,36532,18384,33134,32092,22526,39748,6786,
7090, 42227,5110, 16196,15474,22979,14579,28535,36937,1258, 3022, 745, 27600,21616,26508,31022,25211,12401,17384,36360,35429,34820,27043,6887, 9516, 22867,31329,
27780,3265, 6845, 24271,6276, 22607,4336, 32457,42226,39379,772, 849, 16394,214, 5090, 28623,11930,39748,32679,9469, 5209, 3559, 32305,42226,35565,36083,11020,
16846,18081,7299, 11346,172, 4997, 25776,17617,32925,2727, 10888,34976,26725,34531,6180, 19898,1761, 16556,7992, 5898, 33134,21707,42226,11589,9143, 32809,28191,
- 1241, 106, 19450,22945,4106, 16095,30771,926, 895, 6491, 196, 42226,14798,34531,34531,37952,42225,26677,37952,904, 31395,63, 34610,6734, 12923,14174,5129,
+ 1241, 106, 19450,22945,4106, 16095,30771,926, 895, 6491, 196, 42226,14798,34531,34531,37952,42225,26677,37952,904, 31395,63, 34610,6734, 12923,14174,5129,
2996, 13119,6088, 8441, 5459, 15718,36980,12931,27786,3150, 3864, 37875,33454,827, 3069, 3032, 524, 17254,4467, 1315, 33885,11290,3542, 9813, 36532,2269, 30940,
- 30230,42225,35878,37180,32585,34267,33133,37504,33133,42225,36531,7814, 38449,17469,32939,554, 21969,37230,33221,32831,17962,15406,7244, 13410,15523,15586,9632,
- 1920, 35683,23331,732, 14315,37520,25198,21972,35837,23911,37954,14059,39748,14543,42225,33485,34531,34638,37951,39160,39747,33781,33495,24552,7875, 7178, 604,
+ 30230,42225,35878,37180,32585,34267,33133,37504,33133,42225,36531,7814, 38449,17469,32939,554, 21969,37230,33221,32831,17962,15406,7244, 13410,15523,15586,9632,
+ 1920, 35683,23331,732, 14315,37520,25198,21972,35837,23911,37954,14059,39748,14543,42225,33485,34531,34638,37951,39160,39747,33781,33495,24552,7875, 7178, 604,
5812, 32862,30349,15909,8916, 39747,37465,18041,9685, 34033,8689, 7396, 32151,26942,39747,33781,26960,28272,13280,37166,5206, 18040,15473,10234,5171, 36112,24087,
39747,5435, 29522,6352, 35242,38978,4305, 17652,16939,25709,1510, 5631, 35925,957, 36242,38583,27042,38253,25266,42224,42224,37951,38674,39746,42224,12206,33133,
34972,27041,7260, 42224,8049, 24778,3545, 8350, 523, 9684, 20679,4633, 37509,37951,18852,12685,34530,34530,37951,11470,39225,23913,21755,33664,36070,16195,33975,
12579,9222, 6962, 23284,35155,12475,3199, 11343,37734,7807, 4915, 17188,39347,32122,22525,33085,35518,39746,33272,37950,30238,33133,37286,18039,32091,21695,36311,
595, 16425,26313,5316, 3263, 33083,9066, 32969,35600,15139,42223,39746,37950,14105,38833,42223,35791,39340,15932,6279, 23567,17765,29441,35503,24370,38518,34679,
28630,37950,35026,36531,1675, 42223,36763,42223,35705,20632,23872,31896,12865,38472,23736,28534,26450,9957, 33132,30237,4762, 36531,37744,21866,30506,36531,42222,
- 4830, 2014, 22766,13628,16597,15774,4665, 11595,30631,42222,20221,42222,2116, 2207, 38901,25481,27690,24146,11968,611, 18444,21835,8801, 11222,19168,16446,4826,
+ 4830, 2014, 22766,13628,16597,15774,4665, 11595,30631,42222,20221,42222,2116, 2207, 38901,25481,27690,24146,11968,611, 18444,21835,8801, 11222,19168,16446,4826,
9254, 13761,1672, 38492,33764,31511,19048,144, 1819, 607, 1087, 22776,5266, 21457,39027,19254,15637,36340,42222,17642,36886,37820,22727,15364,29382,29205,13925,
9639, 38801,7638, 21101,38826,24396,16194,2343, 32752,5349, 32090,36841,12205,39080,42221,244, 6003, 37950,37949,42221,15529,42221,33781,42221,37949,25708,12962,
3508, 35104,29981,9257, 13306,34530,37304,12098,38620,230, 847, 35195,16446,10687,3151, 10686,795, 36059,29147,16193,5860, 36530,38368,12204,32089,2151, 14803,
- 16790,9102, 14314,12870,19553,27040,16789,42220,38882,17059,15169,12712,33957,33780,42220,39746,35429,13501,42220,30087,33559,39745,1846, 42220,27243,26623,7326,
+ 16790,9102, 14314,12870,19553,27040,16789,42220,38882,17059,15169,12712,33957,33780,42220,39746,35429,13501,42220,30087,33559,39745,1846, 42220,27243,26623,7326,
23604,38098,33947,9628, 11720,4171, 32862,38189,1862, 1072, 25869,9978, 27959,15874,14653,5430, 39745,37393,36754,990, 15826,11712,33415,18038,32714,2639, 12869,
17058,5636, 11203,39331,33132,3635, 19076,19598,15517,37193,14231,29823,13795,13204,12474,30570,37391,7318, 22324,534, 24527,2884, 42219,12961,39745,42219,21706,
42219,14832,32975,35459,21758,42219,35941,42218,24506,36530,42218,39265,1282, 39410,27039,18037,36552,20038,2889, 36530,12466,76, 29371,28601,37949,481, 37949,
7456, 2506, 20678,19253,19252,2490, 8925, 2435, 22524,12868,33780,3843, 6327, 12109,28155,4993, 18036,352, 18287,19780,3666, 20677,33780,33780,3604, 24571,33204,
24290,20929,2786, 34530,37948,1016, 31868,36530,38021,38882,39745,16411,37948,9546, 24102,33779,15168,5669, 34529,35428,12867,10012,29443,16898,39214,1468, 33519,
- 37948,38916,21024,14313,20313,36528,29405,14401,1421, 7447, 8902, 8901, 42218,16452,14551,32141,33973,38529,7375, 4635, 19251,10233,30630,21705,30236,12473,7932,
+ 37948,38916,21024,14313,20313,36528,29405,14401,1421, 7447, 8902, 8901, 42218,16452,14551,32141,33973,38529,7375, 4635, 19251,10233,30630,21705,30236,12473,7932,
7931, 37282,10919,42218,36306,6151, 3386, 4860, 30680,4992, 5549, 2586, 7813, 20236,17902,39744,12852,37715,39744,2527, 37948,11743,17565,15933,37947,10470,25801,
21606,4812, 7299, 1530, 36529,34429,13230,35817,18933,27147,36958,34947,19724,10105,10753,39744,42217,37947,15167,42217,8260, 10232,36529,24551,33779,3711, 32088,
- 39744,20928,37947,17254,35428,35210,36529,12465,42217,30235,33779,18932,30234,39743,39743,36529,38128,27038,2055, 1451, 3867, 2920, 10460,2101, 7298, 3845, 8669,
+ 39744,20928,37947,17254,35428,35210,36529,12465,42217,30235,33779,18932,30234,39743,39743,36529,38128,27038,2055, 1451, 3867, 2920, 10460,2101, 7298, 3845, 8669,
2981, 5265, 37947,15166,27037,218, 35428,42217,34529,2817, 33779,36528,9272, 4363, 39079,12464,39743,15472,39743,42216,20220,20927,33778,37946,37946,19552,20926,
26367,39179,37946,35428,42216,35427,39742,679, 37946,32087,18365,39742,36528,36528,42216,42216,38551,30233,13794,18340,32560,34529,33751,32986,39398,687, 39742,
36528,2075, 1816, 42215,33132,555, 1693, 1588, 37945,42215,33778,34529,16063,234, 14104,9158, 37928,33778,25008,20219,42215,937, 24959,37945,42215,3587, 17752,
33778,33044,26397,5044, 9785, 37, 9910, 31490,39263,34528,32597,30505,33712,42214,23246,35306,42214,17747,18727,16788,11126,28533,35492,37945,28532,25707,13906,
629, 7485, 28766,33777,4041, 42214,22523,20756,29626,14797,39742,17253,4761, 37945,29419,18056,6057, 38818,42214,19344,37944,23871,42213,1480, 19462,35494,15240,
- 34739,36527,3162, 38285,20427,3031, 42213,37944,30232,3244, 24448,36207,8083, 25498,28059,35392,34283,33888,38902,25605,11019,24534,32925,6597, 26967,33657,1957,
+ 34739,36527,3162, 38285,20427,3031, 42213,37944,30232,3244, 24448,36207,8083, 25498,28059,35392,34283,33888,38902,25605,11019,24534,32925,6597, 26967,33657,1957,
3411, 5524, 42213,10459,35686,33688,33882,20318,20944,39103,36448,34381,36118,37929,34641,35916,38681,35763,26547,34490,31473,18706,33890,34720,34093,2731, 10297,
9864, 31032,17696,25155,14789,2150, 11473,26747,19697,35124,37266,32714,35192,36384,27419,38041,35125,13305,28249,38360,10749,1332, 19289,26609,35194,35999,31676,
- 36527,36561,32086,32085,38212,4341, 5837, 12108,1234, 39741,39741,26391,36680,20676,36986,6002, 33777,32084,39741,2469, 42213,6712, 24208,32083,20925,37704,5450,
+ 36527,36561,32086,32085,38212,4341, 5837, 12108,1234, 39741,39741,26391,36680,20676,36986,6002, 33777,32084,39741,2469, 42213,6712, 24208,32083,20925,37704,5450,
32115,37944,27036,39191,32082,15714,33033,1538, 2780, 37944,8606, 788, 17057,12107,2974, 9220, 38445,39741,4652, 1857, 17751,16881,34144,33132,39740,42212,34528,
42212,14447,42212,42212,3716, 38207,2941, 6516, 39740,25706,33131,34528,39740,37943,8965, 39740,33777,42211,39739,36527,2791, 24155,22744,13536,37943,5111, 32234,
18109,28317,42211,39739,7395, 36527,6294, 16192,30231,35430,28738,37137,595, 22003,34448,5332, 39739,2109, 2089, 29867,22182,14555,8689, 35211,35593,33897,18583,
@@ -17371,10 +17366,10 @@ static const unsigned short Ranks[197839] =
32896,20821,10777,11556,5601, 34899,20467,39373,33616,37225,34787,32132,33036,8755, 33279,26413,34687,14840,13793,9430, 15471,35487,4991, 34676,34665,37264,33978,
37072,37103,16215,20014,36206,34527,34527,37311,35426,18436,33708,13374,39270,35554,13327,12471,35692,3341, 36167,37835,7464, 29638,8746, 12106,26805,37433,15117,
18353,6425, 10721,38023,34655,26951,30730,28837,36525,34990,24549,33131,715, 1874, 36599,16449,36525,23480,3013, 42209,13792,33776,6274, 33776,78, 8343, 26568,
- 11734,16994,36795,25024,16814,27028,6195, 3730, 8855, 5243, 14797,30228,2203, 23214,7020, 5007, 13215,33130,33043,24876,890, 42208,33776,28530,8563, 42208,6499,
- 11818,39737,13214,12463,37942,21373,39737,36278,35426,31, 11545,10080,34944,39737,32484,4719, 21750,42208,35426,42208,10261,33775,12960,1976, 34526,18611,2632,
+ 11734,16994,36795,25024,16814,27028,6195, 3730, 8855, 5243, 14797,30228,2203, 23214,7020, 5007, 13215,33130,33043,24876,890, 42208,33776,28530,8563, 42208,6499,
+ 11818,39737,13214,12463,37942,21373,39737,36278,35426,31, 11545,10080,34944,39737,32484,4719, 21750,42208,35426,42208,10261,33775,12960,1976, 34526,18611,2632,
13498,26984,9039, 5346, 15470,39737,39736,23223,22522,37942,15597,11742,10704,26848,1870, 20770,2560, 2744, 30227,1751, 15165,33775,33627,7191, 9365, 7930, 18361,
- 37793,38435,877, 39736,42207,3822, 21685,42207,4196, 35425,14119,32078,8460, 3873, 39736,22393,36525,11547,13497,20799,20218,18364,15414,19634,42207,19095,4928,
+ 37793,38435,877, 39736,42207,3822, 21685,42207,4196, 35425,14119,32078,8460, 3873, 39736,22393,36525,11547,13497,20799,20218,18364,15414,19634,42207,19095,4928,
30226,20922,13392,39736,16500,15345,8502, 2589, 34526,5043, 21189,37668,1350, 10902,28134,6694, 10589,23243,1179, 32089,11775,5170, 271, 14875,33130,8745, 33692,
8097, 19250,29074,19498,29062,34526,36524,26763,37416,11518,39735,16359,37382,37643,6811, 21841,37942,7171, 7137, 19749,19058,1411, 7616, 30516,23562,3114, 28395,
14919,14997,673, 7721, 31163,11557,7377, 27387,15164,16927,377, 19333,32956,33622,34526,39197,34568,6839, 20674,7742, 17922,12470,29917,34257,33130,19119,32990,
@@ -17383,13 +17378,13 @@ static const unsigned short Ranks[197839] =
16580,30549,218, 24031,3682, 30152,37577,8043, 22670,6892, 30962,8117, 42207,39735,23478,33059,25703,19550,34072,36524,36524,37894,4736, 15286,42206,42206,13593,
8062, 32801,29892,6798, 26789,27093,1511, 36656,15824,818, 24649,34699,22049,9408, 14729,7997, 20911,24215,4275, 13363,31018,23319,39297,2045, 35124,19765,38722,
3344, 35953,37759,13451,38410,33770,9453, 23119,39213,32041,33307,37942,18929,42206,2150, 2074, 7591, 39735,37941,38358,37941,32631,37941,38631,37505,25702,42206,
- 211, 3410, 36524,34525,33130,42205,33836,28220,32927,39735,32510,24232,34525,37940,20009,25697,29130,22807,8198, 28762,26480,2212, 37097,22033,34489,22233,6412,
+ 211, 3410, 36524,34525,33130,42205,33836,28220,32927,39735,32510,24232,34525,37940,20009,25697,29130,22807,8198, 28762,26480,2212, 37097,22033,34489,22233,6412,
28930,34370,1913, 33684,5498, 38967,26290,12594,32030,33876,6980, 3639, 39287,3384, 33672,42205,38054,32827,34108,39734,8744, 9911, 14839,11774,35425,33603,17750,
25730,30225,39734,32821,14445,35320,20965,22521,20671,35168,16267,33129,37940,32909,5552, 12050,37143,37940,10752,35425,13850,20921,176, 32539,3935, 31624,31417,
9130, 22360,3907, 32965,2531, 21194,11897,38766,2896, 21187,3589, 37940,38940,18034,6275, 24273,32077,37939,42205,12469,42205,6569, 42204,1889, 22520,11483,22063,
30224,37939,1912, 17940,8363, 64, 10003,31292,42204,391, 9038, 32357,3634, 4840, 145, 27034,463, 16190,33129,39734,37514,277, 21980,23672,12743,12804,13999,
29852,39734,42204,9256, 2775, 29358,4866, 7151, 5379, 7395, 37939,42204,6625, 27224,1539, 33129,23077,1201, 30999,1977, 39733,33129,11125,16096,35425,9258, 32076,
- 37448,6380, 37939,35424,42203,23477,42203,39733,33129,2808, 3351, 9429, 39733,37938,567, 2362, 42203,36523,37938,9972, 25701,6826, 24337,13213,32951,33263,951,
+ 37448,6380, 37939,35424,42203,23477,42203,39733,33129,2808, 3351, 9429, 39733,37938,567, 2362, 42203,36523,37938,9972, 25701,6826, 24337,13213,32951,33263,951,
8086, 35576,20920,29679,5714, 17776,15527,2417, 1089, 18221,33015,12037,35850,10011,36523,32075,37938,373, 15914,24989,1911, 32839,18849,16358,33128,68, 28902,
27557,2417, 19312,20352,29018,23704,12327,22039,25493,32888,32074,39733,30300,20367,35424,1640, 9037, 42203,39732,28529,13496,2020, 33151,33775,22120,16357,39732,
20217,18363,39732,38066,34134,36523,34449,12292,18980,42202,37938,38292,34922,7603, 31888,33128,38844,18033,35152,3078, 35066,26468,17251,37619,1536, 33128,33923,
@@ -17398,21 +17393,21 @@ static const unsigned short Ranks[197839] =
42200,30627,38447,24548,33774,32071,24547,37937,39731,33774,23473,42200,22519,32070,9156, 42200,23472,33127,42200,3077, 37936,39731,42199,42199,37936,2025, 33127,
35424,11374,9911, 38659,20500,26971,25825,37936,33774,39325,830, 32917,27031,26437,35423,39730,37936,39730,35056,35423,37935,8323, 29003,35222,38016,728, 19757,
5862, 2631, 4475, 24691,26093,37935,3899, 11483,8798, 7713, 21754,42199,564, 7334, 25603,5548, 10230,36521,39730,39730,36521,126, 14829,6660, 5463, 11218,32794,
- 21320,34525,6961, 15468,24762,6886, 6815, 9404, 14664,23638,11469,21337,6693, 35963,31668,30431,13761,18032,42199,8915, 14961,5429, 1251, 31888,3098, 18031,6190,
+ 21320,34525,6961, 15468,24762,6886, 6815, 9404, 14664,23638,11469,21337,6693, 35963,31668,30431,13761,18032,42199,8915, 14961,5429, 1251, 31888,3098, 18031,6190,
1380, 25813,19249,12105,14312,8605, 39210,6354, 39729,17656,25339,4996, 14948,8322, 38091,34524,36521,36521,18551,35353,6379, 38646,33572,16000,24317,33127,37935,
37935,35914,26047,19248,33412,39204,14717,10088,14342,37934,30519,14801,36001,8010, 39729,39109,42198,36520,27563,2590, 22128,22512,17310,32991,19465,16189,36983,
38070,30323,19340,1291, 2135, 29060,37934,10053,151, 7949, 10343,23195,20873,22871,26688,9618, 10415,12626,3508, 27345,33021,23471,510, 3954, 22833,16241,28904,
12593,15586,24079,28035,9519, 29039,37841,7943, 34901,7088, 42198,42198,32532,2262, 12103,12068,29016,26154,4508, 37938,16263,20623,1010, 10498,2858, 27003,34868,
21316,1956, 23473,36090,6747, 17226,32834,30099,14745,33012,28863,42198,39729,14122,1442, 34524,27030,1020, 5739, 586, 19549,26356,32816,38827,20180,37934,15526,
- 14311,39729,26843,34313,33105,15153,10258,1730, 37934,8022, 8562, 6273, 33192,30421,38458,17056,16188,3111, 21246,12415,19496,27740,42197,6077, 37933,11521,8116,
- 37933,35423,42197,24954,36876,1409, 27098,11981,30221,39728,39728,263, 29461,21325,39728,39728,673, 26999,5993, 5057, 7930, 1228, 12468,2963, 3184, 7697, 1984,
- 31692,22422,1765, 3406, 19175,9078, 26499,18832,35973,19351,1320, 3539, 27615,32694,24140,17520,3180, 25416,42197,30220,33773,35423,12467,5186, 37630,34223,6454,
- 35010,23037,367, 18887,18648,2163, 35312,32240,24109,34525,34795,34853,5547, 35967,37936,38151,22509,12959,37933,17055,2511, 37933,14310,1079, 823, 28370,7838,
- 42197,34735,13791,20670,36063,39727,35731,36190,39727,42196,18433,19106,17316,39727,7918, 269, 4267, 28467,27309,29568,10924,14796,36520,31683,37307,17250,3076,
+ 14311,39729,26843,34313,33105,15153,10258,1730, 37934,8022, 8562, 6273, 33192,30421,38458,17056,16188,3111, 21246,12415,19496,27740,42197,6077, 37933,11521,8116,
+ 37933,35423,42197,24954,36876,1409, 27098,11981,30221,39728,39728,263, 29461,21325,39728,39728,673, 26999,5993, 5057, 7930, 1228, 12468,2963, 3184, 7697, 1984,
+ 31692,22422,1765, 3406, 19175,9078, 26499,18832,35973,19351,1320, 3539, 27615,32694,24140,17520,3180, 25416,42197,30220,33773,35423,12467,5186, 37630,34223,6454,
+ 35010,23037,367, 18887,18648,2163, 35312,32240,24109,34525,34795,34853,5547, 35967,37936,38151,22509,12959,37933,17055,2511, 37933,14310,1079, 823, 28370,7838,
+ 42197,34735,13791,20670,36063,39727,35731,36190,39727,42196,18433,19106,17316,39727,7918, 269, 4267, 28467,27309,29568,10924,14796,36520,31683,37307,17250,3076,
35202,22741,15873,15525,37932,33127,35422,36558,42196,18928,10104,39727,38320,21703,39726,27029,35519,32165,34524,24546,37886,42196,39726,37526,24545,34259,30219,
15562,35422,304, 6746, 19613,15287,5718, 37932,33884,27028,18621,36511,39726,23470,17749,42196,21702,764, 37932,42195,39726,9428, 16119,22472,37932,35765,36583,
26076,35787,27027,37931,18416,2680, 9831, 28826,13965,23983,35497,24136,4329, 13271,34556,5050, 34913,14838,28037,9456, 9105, 35480,32069,23469,25941,15436,14444,
- 5162, 37931,18927,37931,35422,15467,9813, 20669,12461,38106,36520,42195,42195,42195,18555,11007,36976,42194,38022,42194,33503,36111,17519,33634,37811,14795,9971,
+ 5162, 37931,18927,37931,35422,15467,9813, 20669,12461,38106,36520,42195,42195,42195,18555,11007,36976,42194,38022,42194,33503,36111,17519,33634,37811,14795,9971,
18362,37931,34524,35422,17021,30218,1015, 42194,19247,42194,576, 30945,32928,27026,36939,11587,30330,28361,29670,34963,35130,14158,42193,33773,32989,30217,39725,
42193,23270,9872, 32801,25094,23512,29073,39725,38941,12075,26855,32885,13658,32811,30216,31357,19369,13701,30756,23117,17054,36429,20016,42193,11796,22640,34152,
9427, 22405,22861,7918, 25978,13421,37826,37472,23057,13957,24283,24708,15466,16918,12, 9683, 38839,38777,16216,22444,26485,29647,29709,34602,35266,36644,12033,
@@ -17421,21 +17416,21 @@ static const unsigned short Ranks[197839] =
28526,7104, 42192,39724,37930,39724,20187,15051,39724,38885,28303,7867, 8632, 7133, 34918,37930,4657, 13212,20215,42192,36520,10229,8900, 21062,4878, 5150, 19548,
39724,26738,33099,10280,10912,6960, 35893,33888,18030,42192,559, 21700,42192,341, 37929,32530,1600, 13495,1976, 916, 756, 35421,20607,42191,39723,31453,31923,
36519,42191,21290,20470,1914, 17249,28525,37929,42191,34863,13299,35421,10923,34252,23810,7891, 19246,37553,12103,15931,42191,42190,20918,42190,13849,37929,37929,
- 24826,42190,17748,15163,37928,14225,42190,36519,2973, 20667,32968,42189,39723,20023,16731,20666,29999,20665,6425, 18312,33021,1399, 3577, 18908,42189,36449,5169,
+ 24826,42190,17748,15163,37928,14225,42190,36519,2973, 20667,32968,42189,39723,20023,16731,20666,29999,20665,6425, 18312,33021,1399, 3577, 18908,42189,36449,5169,
32287,36519,42189,10751,1814, 5303, 33020,6126, 33080,22753,17942,15640,9298, 10432,7084, 25721,16681,7640, 10161,11539,19300,6559, 28974,31138,5964, 14379,26156,
17303,21094,4321, 2822, 11737,26186,19299,25686,13656,13062,24147,25098,28195,23226,9436, 4706, 30166,13295,14482,24557,12233,42189,35421,38316,681, 509, 18469,
- 2310, 6751, 37928,42188,14443,37928,33126,28524,30215,34679,20664,2309, 6674, 6142, 36519,9155, 20917,42188,24188,27025,20570,1188, 15757,11880,12672,9234, 8115,
- 3828, 39723,24386,39723,42188,16355,29562,37928,37927,33066,32671,10939,27024,5229, 42188,13211,18925,2614, 4750, 11950,7467, 9433, 12466,23136,39722,22621,9202,
+ 2310, 6751, 37928,42188,14443,37928,33126,28524,30215,34679,20664,2309, 6674, 6142, 36519,9155, 20917,42188,24188,27025,20570,1188, 15757,11880,12672,9234, 8115,
+ 3828, 39723,24386,39723,42188,16355,29562,37928,37927,33066,32671,10939,27024,5229, 42188,13211,18925,2614, 4750, 11950,7467, 9433, 12466,23136,39722,22621,9202,
20713,33384,13790,18961,37834,7066, 12793,28614,34040,5281, 8320, 37065,8638, 1177, 33420,13595,2246, 2959, 15633,19245,4212, 5909, 24509,19244,39722,37871,22288,
3372, 37724,18871,262, 805, 37377,37927,39722,4877, 4675, 16266,13789,33220,35043,33490,37080,18139,34195,34838,35827,33815,38721,42187,28384,519, 28199,39722,
- 42187,33439,42187,32453,3801, 10228,19942,16186,10071,38982,3170, 29560,30918,37976,36634,18029,9762, 37220,7941, 29759,33226,12465,30214,18028,16185,9255, 9426,
- 13788,13791,37528,38133,5164, 22696,35394,26140,35067,22055,9947, 39721,35649,1843, 17053,20663,33630,6885, 34761,33002,26557,42187,22478,21559,14258,16989,5109,
+ 42187,33439,42187,32453,3801, 10228,19942,16186,10071,38982,3170, 29560,30918,37976,36634,18029,9762, 37220,7941, 29759,33226,12465,30214,18028,16185,9255, 9426,
+ 13788,13791,37528,38133,5164, 22696,35394,26140,35067,22055,9947, 39721,35649,1843, 17053,20663,33630,6885, 34761,33002,26557,42187,22478,21559,14258,16989,5109,
8792, 17052,1941, 25847,1624, 20760,35421,12615,10685,1427, 39721,2415, 2664, 11741,32556,17375,37927,35267,21586,14442,37927,35986,3486, 4687, 7038, 10227,13303,
13787,14309,12463,30213,27404,39721,42186,34523,42186,33703,6097, 22146,39721,27375,1642, 16077,6177, 1016, 24544,1713, 34826,261, 13786,37022,2613, 39720,32067,
36302,35420,37926,9154, 507, 742, 42186,19243,28523,12460,16176,33929,25698,37988,17051,37926,9036, 5319, 22357,21699,32066,14441,21698,36843,20916,28522,10922,
34380,36518,42186,32065,39720,38834,24543,33669,38517,32064,4803, 42185,9035, 34523,18826,28600,15541,30212,32063,36898,42185,22516,11980,36518,39720,35420,35420,
38089,14103,34609,38374,42185,35272,38559,5267, 42185,17747,25283,20045,33773,739, 42184,36518,26020,13784,33772,34523,1543, 18983,3507, 2554, 42184,33772,20214,
- 22246,26849,33176,36460,2851, 42184,2726, 36413,1692, 28521,39720,33126,42184,35420,42183,33772,19242,33772,37926,35419,32062,18924,37926,5118, 94, 19394,697,
+ 22246,26849,33176,36460,2851, 42184,2726, 36413,1692, 28521,39720,33126,42184,35420,42183,33772,19242,33772,37926,35419,32062,18924,37926,5118, 94, 19394,697,
32927,12464,16532,37790,32263,24862,16394,32822,11272,33595,1893, 38272,111, 18572,32968,738, 21697,12569,11979,4814, 37925,11858,28030,12457,34103,27023,34522,
39719,6523, 39011,38657,28556,31444,37925,30211,39719,23761,33374,15523,13783,35107,28520,37925,34623,32061,280, 28772,35419,24073,31582,34522,42183,5246, 22638,
30090,33771,42183,34522,39719,14257,17406,37925,39719,24542,42183,8468, 7340, 13518,37546,39718,90, 24347,14851,31457,20213,5608, 7147, 34522,34547,7113, 34125,
@@ -17443,7 +17438,7 @@ static const unsigned short Ranks[197839] =
36517,30078,28949,17612,7259, 6825, 36273,38762,16929,10819,18027,33771,5828, 12541,17784,10259,38656,5841, 9250, 18361,17431,1241, 23794,2547, 15243,17052,16543,
36147,415, 19146,27022,39718,36232,6341, 27021,18360,12158,1453, 21472,1416, 14593,37703,28854,4039, 32393,1066, 36517,8116, 39718,23600,13431,14794,31970,35419,
867, 11202,13785,8321, 19241,42182,20915,37924,30135,4476, 35533,9101, 9473, 6246, 20774,18026,14166,9254, 37924,26639,32136,27744,27256,29842,33058,23030,39030,
- 37852,27520,18923,18947,35419,24541,9812, 8189, 38742,17656,17049,16184,9100, 7208, 42182,4172, 36871,39717,5247, 17, 31529,27879,28200,7667, 32869,20793,628,
+ 37852,27520,18923,18947,35419,24541,9812, 8189, 38742,17656,17049,16184,9100, 7208, 42182,4172, 36871,39717,5247, 17, 31529,27879,28200,7667, 32869,20793,628,
12337,1543, 11661,35418,37924,37420,25454,11467,39717,19546,13160,23883,4930, 37215,18502,20062,3961, 14047,12102,27369,930, 12808,4867, 10684,27020,666, 14837,
1103, 33126,6337, 26817,18025,42182,25693,42181,10683,27844,1329, 116, 24474,6414, 10932,10226,35418,35340,33126,33771,35418,808, 7260, 10452,923, 5836, 26308,
3995, 9887, 20513,4964, 33820,4239, 16183,37923,16699,3568, 3729, 22374,34563,8188, 42181,34153,35389,22666,24314,23956,6242, 8688, 36179,28780,39717,7645, 14859,
@@ -17455,13 +17450,13 @@ static const unsigned short Ranks[197839] =
17248,43, 32168,13192,22515,15522,36516,4563, 2037, 8809, 4968, 19199,32898,22907,15581,24539,14260,4040, 1090, 36516,6211, 30209,39079,42178,33133,27018,20914,
22514,42177,3544, 24538,42177,39716,34612,35206,37152,16432,10224,42177,14835,36516,39715,33274,27017,39715,33125,2364, 12711,35741,38017,36515,35127,42177,32847,
13036,21009,23648,8080, 22285,14574,18209,36515,17815,14073,39263,7341, 4404, 28871,28457,16759,31934,37119,36926,4912, 26697,23583,28017,14991,33266,32813,28561,
- 5522, 30226,3379, 6440, 29988,28917,20661,37951,18022,36212,18915,16025,37582,39205,25129,37356,3462, 12463,18642,18824,28519,36515,33334,20660,34521,3480, 9655,
+ 5522, 30226,3379, 6440, 29988,28917,20661,37951,18022,36212,18915,16025,37582,39205,25129,37356,3462, 12463,18642,18824,28519,36515,33334,20660,34521,3480, 9655,
36483,13302,42176,24537,42176,37923,37187,39715,27016,20659,17745,37922,42176,14440,11519,32771,1211, 38108,38158,27144,7996, 14835,23145,35839,34394,34453,29245,
35725,20159,29507,38862,34633,11292,15355,4667, 35853,30385,3177, 27872,19292,37922,4355, 7207, 32966,16970,35128,10458,39715,2487, 6814, 38697,33887,33723,42176,
39714,42175,11553,20980,42175,9321, 8204, 28161,19239,35417,21660,39714,36515,1869, 1099, 16476,3267, 25933,29398,5205, 39714,36514,5497, 21154,34876,16712,38782,
- 38109,5694, 19238,22023,8320, 34903,29874,42175,3815, 36730,35417,20658,18959,20657,27536,37388,36974,20211,37193,32060,18021,19968,34411,11834,3975, 35891,111,
- 2082, 32841,11444,20355,21271,14512,9492, 14518,26078,9176, 2912, 4832, 17701,630, 9099, 13301,11308,20656,34307,33152,13172,10000,28696,12861,5534, 13296,9811,
- 37139,630, 32261,35713,18808,31714,35198,39714,8921, 19237,19236,24513,3183, 27015,12761,20219,38172,10192,37656,35968,33928,14467,17650,17247,39713,42175,2978,
+ 38109,5694, 19238,22023,8320, 34903,29874,42175,3815, 36730,35417,20658,18959,20657,27536,37388,36974,20211,37193,32060,18021,19968,34411,11834,3975, 35891,111,
+ 2082, 32841,11444,20355,21271,14512,9492, 14518,26078,9176, 2912, 4832, 17701,630, 9099, 13301,11308,20656,34307,33152,13172,10000,28696,12861,5534, 13296,9811,
+ 37139,630, 32261,35713,18808,31714,35198,39714,8921, 19237,19236,24513,3183, 27015,12761,20219,38172,10192,37656,35968,33928,14467,17650,17247,39713,42175,2978,
37922,385, 36810,34521,14834,42174,39713,3417, 42174,1686, 6340, 42174,27014,33770,7925, 39713,7490, 33770,4260, 39713,38245,16182,28685,35417,37922,33770,12269,
28518,20528,23403,14833,10010,35417,36799,10838,16510,15902,17048,6711, 32953,15227,31026,20655,34616,21487,34623,26753,34521,16444,24080,6523, 34322,15397,37921,
30208,991, 11800,8899, 11201,16113,3355, 2029, 3377, 20606,39712,11200,12865,37512,7127, 35071,26785,33640,10749,34520,37921,37921,23253,29261,7573, 7177, 36514,
@@ -17474,25 +17469,25 @@ static const unsigned short Ranks[197839] =
20248,33806,37076,1114, 6383, 39099,4841, 34010,12101,22528,27396,29777,28862,7277, 20024,20305,30653,28151,16180,13299,38140,21534,32224,35820,17047,36043,30157,
14971,32213,27155,19233,27567,9614, 12100,38037,20649,13784,33860,12588,20091,26187,7296, 30168,31034,6278, 33813,25223,10353,6096, 2543, 37972,32923,33970,37418,
33280,7037, 4887, 13783,33757,13930,24532,14915,9015, 11199,38529,27034,32833,18811,19632,34519,11779,36513,2148, 1318, 33124,30098,32591,1370, 38007,30206,29830,
- 38923,32430,37037,17046,1469, 14888,35463,36937,37920,27110,1471, 11123,37136,16010,3257, 26351,6418, 17385,11911,33065,33124,27011,38606,15461,35200,26803,2885,
+ 38923,32430,37037,17046,1469, 14888,35463,36937,37920,27110,1471, 11123,37136,16010,3257, 26351,6418, 17385,11911,33065,33124,27011,38606,15461,35200,26803,2885,
7893, 3040, 39711,2542, 18358,14650,17744,35906,23466,13494,3944, 39711,36513,9810, 9519, 28492,35327,27263,39711,33124,2743, 35626,20646,15930,11122,33124,37920,
7839, 30205,27010,34519,24564,33084,39711,38953,2686, 7570, 20648,13133,36702,9606, 10931,37154,23465,39123,11958,34075,3548, 39710,32058,36512,32057,7175, 37973,
35415,42171,42171,33123,36512,37919,5348, 39710,35503,42170,22803,39186,35415,39130,20913,42170,35301,29661,10748,9682, 20168,36512,39710,10791,11623,37919,35415,
18921,34519,32056,33123,39710,20209,42170,42170,28910,4955, 42169,15161,39709,42169,19446,33308,35280,33431,36389,38005,20912,42169,13782,8572, 23464,4591, 18848,
- 13781,20647,38757,39709,39709,37017,42169,20367,39709,37919,38304,39708,14441,14306,10930,7812, 1341, 1651, 6451, 34250,12099,2280, 15460,5593, 2690, 10929,3671,
+ 13781,20647,38757,39709,39709,37017,42169,20367,39709,37919,38304,39708,14441,14306,10930,7812, 1341, 1651, 6451, 34250,12099,2280, 15460,5593, 2690, 10929,3671,
35984,34566,8604, 23272,24324,1620, 34518,36512,2910, 25774,29868,32833,38621,37919,35415,22656,4615, 3016, 5462, 9120, 6724, 5546, 33734,35473,42168,39708,38180,
8023, 16794,38815,15459,18018,38565,37557,1557, 8603, 12159,42168,42168,33085,3674, 11584,17379,33208,39708,35905,36511,33175,33104,23051,9970, 35371,37248,35702,
33769,34830,39708,24536,7572, 39707,28513,30100,37947,35239,4694, 24535,254, 36511,27009,36511,3623, 5626, 28512,36511,6150, 16179,17045,15250,21269,5676, 11795,
- 38775,33044,21044,11420,12003,34141,10119,21275,10225,3205, 13293,3455, 17688,3621, 3768, 1709, 3612, 4800, 8909, 5978, 8897, 1856, 4238, 22157,2690, 13780,4514,
+ 38775,33044,21044,11420,12003,34141,10119,21275,10225,3205, 13293,3455, 17688,3621, 3768, 1709, 3612, 4800, 8909, 5978, 8897, 1856, 4238, 22157,2690, 13780,4514,
19232,4682, 25272,32499,5620, 24534,5835, 4963, 28403,20646,12461,33873,14639,37918,13298,16178,13779,10928,4590, 20557,22388,2266, 25248,1291, 3978, 11531,36002,
- 14305,11569,963, 25386,508, 12202,10298,42168,33769,21508,37659,10258,35414,35414,2348, 17246,27008,39707,37918,9821, 34518,37741,2850, 38611,35517,1841, 3249,
- 1883, 20858,2181, 42167,28511,15521,39707,38785,11087,38285,19961,38742,18431,15007,38409,38673,21771,8455, 31898,32017,30095,10696,13982,7818, 1881, 6177, 8003,
+ 14305,11569,963, 25386,508, 12202,10298,42168,33769,21508,37659,10258,35414,35414,2348, 17246,27008,39707,37918,9821, 34518,37741,2850, 38611,35517,1841, 3249,
+ 1883, 20858,2181, 42167,28511,15521,39707,38785,11087,38285,19961,38742,18431,15007,38409,38673,21771,8455, 31898,32017,30095,10696,13982,7818, 1881, 6177, 8003,
1281, 31503,14404,4881, 4094, 5121, 1455, 13297,1155, 5047, 9137, 3516, 1505, 1245, 8803, 13538,26675,17377,35405,36092,7736, 34324,6825, 20522,33063,15016,15360,
- 3340, 10190,22807,34492,20208,15160,37918,33035,6395, 39707,34518,39706,39706,42167,18920,37320,42167,37379,42167,34136,670, 35414,37918,34114,16089,9958, 3997,
+ 3340, 10190,22807,34492,20208,15160,37918,33035,6395, 39707,34518,39706,39706,42167,18920,37320,42167,37379,42167,34136,670, 35414,37918,34114,16089,9958, 3997,
42166,18357,37917,1706, 39706,35414,30204,28510,37917,34970,33123,39706,39705,33123,35413,35849,31893,39302,36263,18919,29826,34518,871, 3438, 468, 36510,37776,
36510,11112,29950,37784,12377,7955, 35363,20508,30871,35881,13296,8386, 15496,931, 10656,651, 9424, 33936,22484,37998,17917,157, 36589,8385, 9244, 21164,32925,
22249,23968,19809,30319,38668,5644, 33318,14410,39304,38926,16177,38188,29355,42166,39705,17044,3343, 39705,35728,33122,6898, 31251,7326, 36778,1497, 37339,15458,
- 33769,12098,35764,28509,34287,27961,25406,10908,5419, 11739,1730, 18851,9722, 10257,37917,32055,37436,13493,24533,32054,36510,21885,2766, 587, 19544,34517,3192,
+ 33769,12098,35764,28509,34287,27961,25406,10908,5419, 11739,1730, 18851,9722, 10257,37917,32055,37436,13493,24533,32054,36510,21885,2766, 587, 19544,34517,3192,
42166,38727,37917,14100,30826,15027,11517,33768,39705,19949,38086,42166,724, 36516,36156,1739, 39704,33768,27997,24532,42165,7344, 21902,37916,12595,42165,39704,
31788,2390, 6749, 33023,24643,35413,12863,773, 7882, 33892,7103, 34927,39704,33768,34649,28508,767, 39704,42165,36146,11738,29870,37916,37916,23463,23462,32053,
758, 15159,24531,6813, 36451,37916,38839,42165,18017,23435,21369,37259,42164,11465,16785,34476,14793,36504,33818,25405,3965, 22513,20207,10251,5056, 11407,28507,
@@ -17500,14 +17495,14 @@ static const unsigned short Ranks[197839] =
21393,21695,37915,34517,32052,37677,36509,24227,32051,20206,37915,30203,10256,24530,34517,22512,35900,28506,15416,36718,2, 17043,33122,13210,6277, 25370,15776,
26125,35889,662, 33981,104, 10224,33687,11229,19231,11198,33122,13954,37915,30202,37392,5545, 6760, 4340, 3232, 8319, 7069, 10457,9613, 1803, 8900, 1814, 21246,
15526,652, 32050,787, 1624, 5229, 25694,28505,975, 11464,281, 19103,33710,605, 913, 21499,1376, 441, 37749,978, 1238, 14304,11961,14776,33118,32056,12985,
- 35413,34516,11770,24529,11173,32801,33665,33644,32049,32048,42162,7074, 4885, 35586,9286, 6043, 20836,30192,10595,26693,4340, 18884,36345,13386,5178, 27275,6692,
+ 35413,34516,11770,24529,11173,32801,33665,33644,32049,32048,42162,7074, 4885, 35586,9286, 6043, 20836,30192,10595,26693,4340, 18884,36345,13386,5178, 27275,6692,
20645,33357,33954,34516,42162,39702,38129,39702,12860,33121,212, 13295,20644,31490,39070,36509,42162,13492,35413,36509,42162,37914,11978,39702,27006,32989,11977,
13209,35412,42161,34516,6170, 1586, 31658,35821,34279,37914,42161,39702,9400, 7498, 34043,29237,39701,37914,28504,38214,42161,9153, 17988,39701,25251,1944, 12200,
17743,2338, 20098,6169, 33121,19230,34565,35766,11302,26547,39391,4865, 42161,6149, 10921,18016,39701,39701,28503,33121,37914,26377,42160,39700,34816,34516,42160,
39700,27, 12199,20911,35412,8467, 34515,39032,33768,36508,39700,9152, 1360, 5949, 28502,42160,17042,38901,42160,33121,8650, 21342,12710,37212,22511,36508,36508,
985, 2230, 4686, 9097, 18015,19229,19228,900, 30428,12064,12733,37319,14439,25352,37913,39700,33767,42159,42159,35412,39699,9399, 39699,16784,42159,32047,33005,
33120,16783,15158,36508,35412,9096, 12709,37913,33767,39699,36507,39012,42159,9253, 42158,34020,26214,6381, 33242,28737,39699,9252, 24528,35411,28002,34515,30895,
- 42158,37913,18234,42158,28501,36806,4204, 25693,17391,39698,1633, 19352,28864,29273,925, 42158,23461,789, 29982,10456,17742,1918, 31804,22176,32426,9222, 7452,
+ 42158,37913,18234,42158,28501,36806,4204, 25693,17391,39698,1633, 19352,28864,29273,925, 42158,23461,789, 29982,10456,17742,1918, 31804,22176,32426,9222, 7452,
39275,38528,42157,11769,42157,6453, 24404,34515,7696, 37768,32021,34579,19136,15120,21281,23460,38508,20550,14438,12097,34515,42157,39698,42157,1983, 24991,34375,
14250,34514,39698,33230,26565,38728,70, 17041,18858,20910,37913,38954,12460,35333,12459,17741,14375,9545, 24527,31074,37705,35341,37621,37669,56, 17132,14829,
26945,25556,19227,25713,2101, 17245,32980,34105,35411,39698,39697,6108, 15929,42156,37912,25692,42156,39697,4456, 20643,17040,24028,13084,12862,19226,42156,33120,
@@ -17520,48 +17515,48 @@ static const unsigned short Ranks[197839] =
26552,16947,29517,36680,42153,36506,28498,36506,17585,37911,35652,34513,6094, 28209,789, 33812,2931, 19542,39695,5547, 39695,39037,20909,39694,10411,14437,17180,
27659,27799,42153,37911,37910,32646,36729,7019, 4143, 1227, 39251,42152,39694,3633, 42152,42152,37910,33765,30199,36800,12537,42152,271, 30063,12599,32909,24635,
33027,31904,39694,6272, 42151,39011,39694,34513,33765,33765,36465,37197,33178,22668,28564,42151,32044,17181,37030,35355,35260,38461,39693,38088,2765, 37212,19122,
- 22573,761, 3137, 37910,4761, 42151,36506,36506,3322, 37910,1835, 15157,2251, 2839, 42151,34513,39693,11301,2526, 435, 15397,3075, 35956,37909,30198,13555,158,
+ 22573,761, 3137, 37910,4761, 42151,36506,36506,3322, 37910,1835, 15157,2251, 2839, 42151,34513,39693,11301,2526, 435, 15397,3075, 35956,37909,30198,13555,158,
30984,3123, 32918,32271,26028,30602,4426, 11300,42150,8913, 25690,12707,18918,14101,42150,37909,5635, 22026,10447,10914,343, 9458, 42150,38232,2545, 28671,39693,
10920,22514,37909,3715, 27003,42150,38602,36560,39693,30373,39692,42149,7325, 42149,18157,472, 12141,27753,31640,20204,33764,36505,7324, 16782,42149,28497,30197,
35409,30196,42149,11463,39692,20013,12457,17740,27875,11299,4801, 37909,2678, 10588,42148,6271, 34512,16640,28496,38088,16981,20750,14279,42148,33933,39692,13221,
7571, 42148,39374,38846,25689,37908,37908,39692,510, 33764,39691,35409,165, 10747,28495,36505,6270, 33764,10975,36822,37529,36505,17244,28494,37908,23457,34512,
37908,39691,36595,39691,36505,28966,17243,42148,42147,2319, 42147,39691,36500,39690,7565, 2059, 12402,9523, 19908,23077,10262,15445,37273,39293,1151, 756, 38679,
- 12749,4880, 39690,38902,1064, 38698,25049,4619, 33764,34883,2397, 6422, 20388,9359, 303, 12340,5416, 19541,37060,38109,33119,11690,37907,34748,6438, 1093, 1801,
+ 12749,4880, 39690,38902,1064, 38698,25049,4619, 33764,34883,2397, 6422, 20388,9359, 303, 12340,5416, 19541,37060,38109,33119,11690,37907,34748,6438, 1093, 1801,
13267,20368,10588,10652,13923,13735,18764,15412,7669, 12624,5731, 20641,7396, 14303,39690,6095, 31190,14828,855, 39690,42147,8326, 21077,19144,32881,20618,20654,
7950, 35279,6884, 39689,10223,36801,11462,21244,16813,17639,6215, 15860,32953,36504,42147,42146,9423, 39689,37724,14242,33109,10139,33960,34201,12860,28202,20640,
36588,28861,28101,31176,34773,33200,21885,14827,35674,30195,37303,30765,33481,11197,42146,37907,34167,9157, 18644,36504,42146,37907,36437,32968,32089,9, 32792,
36080,1251, 33763,36827,16781,24087,34326,4784, 23456,255, 10974,33497,37441,38537,11461,11250,11768,33905,33529,37649,39689,42146,42145,42145,34376,25318,27385,
36504,35408,37907,27, 9422, 30779,29089,31937,25973,14856,476, 42145,15696,37906,12126,33963,27934,35885,2161, 837, 667, 32511,27002,27004,1139, 12396,18300,
13008,21524,19487,28344,8487, 24857,35028,17632,27472,657, 9809, 10703,20639,3115, 10017,3802, 26564,30586,29091,29440,12955,34178,8114, 39689,14498,5668, 34232,
- 33894,2564, 3479, 16780,20203,42145,31787,4475, 4886, 36802,37906,32043,42144,3075, 34462,37906,25348,12154,16779,34512,28493,24525,28477,346, 9763, 19952,49,
+ 33894,2564, 3479, 16780,20203,42145,31787,4475, 4886, 36802,37906,32043,42144,3075, 34462,37906,25348,12154,16779,34512,28493,24525,28477,346, 9763, 19952,49,
13776,32226,30809,6441, 33071,2393, 6205, 25878,16652,15587,32816,33380,33119,11120,33763,17242,35606,39031,14678,37906,33119,12197,13203,23637,5210, 35408,15519,
- 26240,19513,13717,15654,30954,21692,8742, 37905,23455,32042,1167, 29412,16830,18810,16775,2838, 30194,36504,1153, 17775,31768,13045,37462,42144,30970,37905,6661,
- 3445, 42144,39688,42144,11942,37678,30849,34025,13294,6094, 470, 7811, 15455,18013,22077,26928,19224,36503,38875,18917,12096,25843,15454,17039,36793,36705,2913,
+ 26240,19513,13717,15654,30954,21692,8742, 37905,23455,32042,1167, 29412,16830,18810,16775,2838, 30194,36504,1153, 17775,31768,13045,37462,42144,30970,37905,6661,
+ 3445, 42144,39688,42144,11942,37678,30849,34025,13294,6094, 470, 7811, 15455,18013,22077,26928,19224,36503,38875,18917,12096,25843,15454,17039,36793,36705,2913,
2210, 11460,11196,16176,7206, 4928, 17038,14302,9421, 13181,7395, 16175,22688,22213,14301,19223,29592,20638,16174,18012,21688,15453,18011,6812, 2002, 16173,33989,
33433,34892,37656,37905,16778,42143,26886,21757,16172,15452,20637,9095, 31028,42143,337, 42143,36503,36451,12161,37905,30933,37904,32041,31629,37030,36783,34512,
- 27001,19222,39688,11007,37904,27923,16468,27326,35528,39688,34758,299, 20196,28555,8773, 8750, 28923,11563,30696,35939,37203,4921, 362, 5134, 19221,18144,678,
+ 27001,19222,39688,11007,37904,27923,16468,27326,35528,39688,34758,299, 20196,28555,8773, 8750, 28923,11563,30696,35939,37203,4921, 362, 5134, 19221,18144,678,
6716, 6490, 4010, 7066, 12136,5288, 34236,2541, 11640,9119, 30193,38352,38578,39172,34247,870, 38261,34656,17277,21831,941, 30138,33961,20636,32180,14826,32861,
33248,4713, 1606, 710, 1666, 7675, 976, 14426,584, 1955, 14373,538, 4587, 7810, 2297, 3030, 14899,12518,20232,32772,42143,33082,27000,28492,803, 42142,38558,
29680,37281,21555,20635,35820,14581,37904,6639, 33102,42142,13778,34511,39688,9493, 32246,29371,1066, 13293,3698, 13734,24716,39687,15928,7205, 33763,22509,32443,
- 36503,39687,9402, 17086,31635,22467,33635,42142,35408,26999,12196,12789,36503,21691,12195,33253,24536,42142,2507, 2545, 18010,33539,8060, 14981,39270,2172, 882,
+ 36503,39687,9402, 17086,31635,22467,33635,42142,35408,26999,12196,12789,36503,21691,12195,33253,24536,42142,2507, 2545, 18010,33539,8060, 14981,39270,2172, 882,
17037,5580, 1409, 9944, 3570, 1663, 33020,8454, 1164, 28725,32845,17036,11195,7889, 12217,38925,33405,28491,4760, 37904,16920,39342,4817, 33763,42141,8584, 34333,
39227,4806, 38177,39687,8106, 3229, 20865,35191,37148,7475, 6998, 5672, 33635,26701,33285,34458,28758,6723, 4992, 4237, 38492,7316, 28716,12659,10179,38086,37747,
20665,10666,2925, 24930,12046,1671, 4439, 14093,12916,1662, 7597, 31033,23637,38176,14825,36331,22361,28342,29181,42141,33823,21494,33426,36502,6386, 28394,32935,
- 39687,15029,39686,4170, 18356,5449, 23, 20634,469, 39686,30192,1582, 10455,39250,25026,25688,3131, 3342, 1079, 13437,8608, 11298,28490,12695,39686,6918, 94,
+ 39687,15029,39686,4170, 18356,5449, 23, 20634,469, 39686,30192,1582, 10455,39250,25026,25688,3131, 3342, 1079, 13437,8608, 11298,28490,12695,39686,6918, 94,
29518,2715, 23617,25964,9523, 16726,28784,18138,11994,28549,13753,10878,26898,30752,21380,31409,32985,33814,2063, 15368,29008,16171,27688,38863,38253,32339,35408,
25687,42141,18270,33862,11831,34039,12652,25575,30378,10576,37903,39686,39685,34027,3499, 36082,34511,17241,37903,9612, 35647,35407,8059, 24977,14100,3282, 16370,
4926, 14644,32942,12232,37336,9363, 7908, 10009,9780, 31327,42141,5404, 7790, 34802,1235, 5092, 6421, 17035,9112, 19220,12127,22674,31159,18861,2927, 24685,10927,
- 42140,37740,17171,33042,5266, 38882,42140,26473,3247, 36266,35407,37903,11119,42140,33482,4259, 37290,26533,28489,200, 1019, 39280,2788, 38514,10454,4513, 1086,
+ 42140,37740,17171,33042,5266, 38882,42140,26473,3247, 36266,35407,37903,11119,42140,33482,4259, 37290,26533,28489,200, 1019, 39280,2788, 38514,10454,4513, 1086,
13996,26307,6073, 10556,32989,34711,5634, 36295,2196, 14824,18709,14300,23826,6280, 33626,21023,35407,32040,39685,5588, 37903,25531,39685,39685,36502,3399, 38771,
35407,32827,14299,13360,33762,22217,37451,14792,18916,6560, 38411,3871, 34172,37902,8912, 42140,30191,18496,38581,37902,25686,30190,8318, 26998,1526, 22382,42139,
- 38736,3028, 42139,35406,33762,39010,28292,42139,3472, 33762,14099,825, 20711,37902,39684,37902,34511,11517,4939, 38322,14298,14077,42139,34312,19610,29059,3341,
+ 38736,3028, 42139,35406,33762,39010,28292,42139,3472, 33762,14099,825, 20711,37902,39684,37902,34511,11517,4939, 38322,14298,14077,42139,34312,19610,29059,3341,
36502,39684,29045,29893,21824,18009,37901,2228, 39684,35124,24514,2605, 23198,32894,1608, 12181,2831, 8163, 2437, 11719,10765,11080,7606, 5891, 4009, 6138, 30189,
20482,481, 4519, 36100,1060, 3910, 1038, 7064, 6590, 7531, 3874, 27244,39221,3665, 36012,2158, 18008,7215, 34511,14297,28488,37901,36824,6288, 28067,42138,39291,
- 26803,38669,20908,8011, 42138,16228,39684,39683,3584, 34224,4282, 29291,24687,21071,29995,17387,38275,16319,3660, 15858,20166,2589, 12526,34062,16170,39153,9715,
+ 26803,38669,20908,8011, 42138,16228,39684,39683,3584, 34224,4282, 29291,24687,21071,29995,17387,38275,16319,3660, 15858,20166,2589, 12526,34062,16170,39153,9715,
14484,17789,42138,1150, 233, 10572,370, 7602, 7538, 2571, 5716, 5044, 22461,14206,27218,34796,1940, 35406,18915,33608,33119,14296,37901,19330,34510,20907,10815,
- 2044, 18836,1225, 3376, 26599,12692,27015,27941,37631,14483,25685,37901,36523,39683,11169,36004,42138,13491,35809,17603,33806,42137,37900,39683,32039,10279,9412,
+ 2044, 18836,1225, 3376, 26599,12692,27015,27941,37631,14483,25685,37901,36523,39683,11169,36004,42138,13491,35809,17603,33806,42137,37900,39683,32039,10279,9412,
37900,29969,9974, 39683,13781,297, 9377, 2044, 39682,37947,30188,42137,42137,42137,42136,17240,39682,42136,21539,10984,42136,25684,12958,26997,27762,7489, 20906,
- 36824,9398, 34510,33118,15520,37060,11118,19728,32038,30187,7394, 33265,7695, 6521, 38960,11401,13964,7929, 35234,8634, 34180,32037,39682,8113, 18325,42136,1999,
+ 36824,9398, 34510,33118,15520,37060,11118,19728,32038,30187,7394, 33265,7695, 6521, 38960,11401,13964,7929, 35234,8634, 34180,32037,39682,8113, 18325,42136,1999,
36502,15927,42135,15156,18007,32925,38122,20638,15019,21191,18288,39407,23454,13563,9041, 32036,42135,42135,42135,31866,29390,37900,38806,35804,17193,38115,24984,
39084,16456,33921,9681, 37900,34061,34507,33118,9544, 33762,16354,3231, 28553,37165,18355,37899,2005, 32981,28487,929, 42134,35597,1500, 5375, 5544, 17423,10061,
5543, 24244,6736, 19219,38922,42134,33057,21118,38251,556, 37899,37899,42134,15926,34510,36509,20202,33118,36002,39682,16169,12957,33761,30186,24524,17739,26996,
@@ -17570,7 +17565,7 @@ static const unsigned short Ranks[197839] =
114, 24523,17239,20905,34510,39681,16353,37775,7394, 35405,42133,4200, 36501,23480,38528,42133,36501,36501,39680,35404,18354,32836,785, 8602, 32270,376, 39680,
12194,7406, 33118,18353,36500,27347,27840,37829,32772,36500,33117,14436,34509,39680,20129,34925,13868,35404,5172, 30185,39680,8095, 21238,35807,25683,27548,37898,
39679,39679,42133,34509,35111,39679,39679,33117,723, 367, 14435,10100,3191, 37898,12193,20209,39367,146, 1796, 9391, 14469,16083,18649,6804, 35404,15935,16782,
- 42133,38133,39678,30075,35465,18885,12696,14323,11872,18398,33196,31182,36871,37948,42132,34509,22508,30184,19540,37146,34509,37898,39678,42132,39678,20904,3004,
+ 42133,38133,39678,30075,35465,18885,12696,14323,11872,18398,33196,31182,36871,37948,42132,34509,22508,30184,19540,37146,34509,37898,39678,42132,39678,20904,3004,
28245,23370,8466, 15780,3663, 33761,33117,39678,12455,19836,36037,36500,8349, 25682,16703,42132,34480,20632,42132,34508,32035,36976,34684,18352,16436,26995,32034,
37520,23212,31014,30268,1467, 32219,36500,26634,38574,10802,30598,37897,34508,34508,37897,26994,35404,30183,3522, 37098,16776,7838, 38155,35132,30198,42131,32849,
25681,32033,39677,39677,34241,37897,10746,24565,23482,17238,28486,42131,17004,42131,36499,42131,42130,33760,2437, 35785,16775,34200,39677,36499,42130,26993,11975,
@@ -17582,13 +17577,13 @@ static const unsigned short Ranks[197839] =
35054,29586,10255,36497,35403,36497,38848,36385,42128,3632, 17135,38355,1425, 42127,7924, 874, 20630,3224, 30645,38, 20693,38226,359, 28019,917, 30776,13292,
26992,28959,28485,42127,1712, 39675,284, 37989,42127,29307,36645,35304,35820,27102,31549,36497,2600, 33148,27475,36496,35420,26113,39675,33523,28484,1242, 33116,
35402,35078,31174,2696, 32030,6750, 23452,39675,5762, 42127,7510, 22923,33116,35402,37894,9688, 15925,37091,20903,28483,23451,39314,42126,25679,6378, 42126,37894,
- 13489,15518,439, 42126,25129,24653,1886, 39674,6334, 37483,33783,16168,25678,34507,42126,16773,39674,33271,42125,35402,36934,42125,23384,10744,34338,429, 2740,
+ 13489,15518,439, 42126,25129,24653,1886, 39674,6334, 37483,33783,16168,25678,34507,42126,16773,39674,33271,42125,35402,36934,42125,23384,10744,34338,429, 2740,
4966, 28746,23495,16128,23481,23760,10851,18678,28460,34271,6210, 2204, 34507,25146,33759,37894,28372,42125,26467,37431,25677,30181,42125,1578, 33600,20063,20629,
1042, 2364, 20628,39253,6959, 4816, 1729, 13777,33758,15517,28482,39674,38340,38356,20627,34827,36496,19538,28047,19994,38013,4039, 6883, 34401,42124,85, 35402,
34922,39674,30974,31893,1300, 909, 28481,37894,42124,42124,42124,17893,5074, 35977,27531,29225,17434,9283, 21113,20058,33, 19218,10318,3767, 13776,16778,37842,
- 5239, 15451,15980,16525,2718, 11063,33615,12820,7497, 11194,33116,6811, 13291,25949,3646, 4856, 14755,32850,33454,12709,11766,9646, 10008,17034,7496, 2531, 5987,
+ 5239, 15451,15980,16525,2718, 11063,33615,12820,7497, 11194,33116,6811, 13291,25949,3646, 4856, 14755,32850,33454,12709,11766,9646, 10008,17034,7496, 2531, 5987,
36468,17033,11459,14791,2170, 38442,17617,37277,34168,10521,7511, 28767,1592, 4361, 13289,27950,28520,31198,33361,37965,10756,35903,20626,37793,8136, 17032,34804,
- 15450,8896, 18054,33510,39673,13775,38532,8895, 16167,2636, 32908,11516,19217,17031,19216,33719,741, 23551,10060,26715,7542, 12752,33086,38888,22507,4901, 4089,
+ 15450,8896, 18054,33510,39673,13775,38532,8895, 16167,2636, 32908,11516,19217,17031,19216,33719,741, 23551,10060,26715,7542, 12752,33086,38888,22507,4901, 4089,
25676,30813,26818,5369, 5939, 8771, 12836,14294,16893,6512, 35589,8553, 21690,20625,37479,36244,32913,19215,8317, 34664,32474,11875,35247,29778,23591,37452,34097,
38554,38160,8024, 12341,13774,2027, 9499, 5986, 6382, 3395, 18006,33891,29990,13773,39232,5288, 39334,29850,31775,38467,5785, 34805,22997,9251, 4589, 15511,34010,
36376,9265, 465, 27108,5204, 8058, 5029, 11458,11766,31398,33390,18265,12177,39181,7770, 1731, 38084,37706,21540,35128,878, 30925,17063,14790,19214,7650, 16797,
@@ -17597,35 +17592,35 @@ static const unsigned short Ranks[197839] =
36496,8911, 15448,18005,37893,3921, 16163,42122,35568,33034,35163,3686, 10639,7018, 19210,18004,20624,11456,3536, 20271,10298,20623,14822,16162,17030,14626,12422,
42122,14293,8186, 10681,14821,35401,6593, 18003,34016,38996,35808,20622,10007,21661,10222,37137,23603,33365,20415,4656, 39079,17029,15447,19209,37849,37891,29468,
37589,21689,19537,22386,11600,25193,12095,29165,34507,30736,20670,14336,33503,33719,23395,19262,31289,6184, 14057,34685,33821,4943, 35803,5283, 2426, 6148, 14298,
- 35033,13290,18002,37061,33115,13208,39673,39673,29961,9420, 42122,2849, 16559,23850,7477, 6269, 16127,7671, 12234,14112,34809,27226,39672,42122,37893,33639,6276,
+ 35033,13290,18002,37061,33115,13208,39673,39673,29961,9420, 42122,2849, 16559,23850,7477, 6269, 16127,7671, 12234,14112,34809,27226,39672,42122,37893,33639,6276,
10680,30708,15923,39146,5417, 6810, 5070, 10473,1065, 24018,22344,4815, 17176,4693, 39672,30950,30180,42121,18351,2136, 19208,34506,14292,14100,32412,20621,36495,
- 37863,23242,12858,16161,16160,32423,36376,9249, 37441,23322,35863,33819,4962, 13289,15684,5834, 6093, 3796, 2826, 13288,30331,4927, 20620,18712,34401,17028,6658,
+ 37863,23242,12858,16161,16160,32423,36376,9249, 37441,23322,35863,33819,4962, 13289,15684,5834, 6093, 3796, 2826, 13288,30331,4927, 20620,18712,34401,17028,6658,
37696,8894, 33683,22998,5563, 5076, 36945,2275, 6496, 7222, 7846, 14651,20409,7636, 19207,20619,34582,10142,37561,42121,34753,31951,34506,6007, 34415,10006,18001,
- 7928, 22506,37409,16159,27839,14291,15446,17027,12857,11455,12459,2042, 19206,39172,42121,37573,11499,16158,11808,16296,17026,13054,5996, 20261,10403,11765,4236,
+ 7928, 22506,37409,16159,27839,14291,15446,17027,12857,11455,12459,2042, 19206,39172,42121,37573,11499,16158,11808,16296,17026,13054,5996, 20261,10403,11765,4236,
19205,13313,1291, 32215,14437,13244,11263,17025,6896, 11454,6728, 20161,22950,36778,2334, 35966,33115,8893, 13771,3459, 3524, 8792, 14290,28909,31847,28912,33845,
7601, 34126,36406,13287,22505,10926,42121,32028,17235,13164,37306,39404,8686, 30179,32888,36359,35894,42120,20201,39672,19891,36178,34761,37893,8453, 16157,36104,
- 33779,28588,14568,33971,37817,14820,39672,25675,694, 3406, 37329,360, 21333,28778,12955,105, 29158,7488, 34635,42120,2743, 4028, 4800, 4926, 7158, 192, 6353,
+ 33779,28588,14568,33971,37817,14820,39672,25675,694, 3406, 37329,360, 21333,28778,12955,105, 29158,7488, 34635,42120,2743, 4028, 4800, 4926, 7158, 192, 6353,
24352,21688,10743,547, 1096, 1716, 1815, 25674,33758,5416, 1939, 13900,13959,13793,39671,34506,19204,6107, 37892,20200,5246, 9611, 20618,35915,26416,29264,37720,
37396,38586,42120,32027,22853,33513,20269,34606,14036,7487, 42120,35081,18615,1272, 38083,7047, 26193,37524,14297,6761, 13276,5363, 12448,37288,29384,14141,25645,
35522,18829,17090,25004,6623, 36495,42119,16147,19536,38656,29702,37140,42119,34997,36360,2530, 28806,32052,14819,19016,31288,35401,15922,42119,25673,14788,24521,
20617,12458,6168, 14434,33889,6037, 34724,33721,6657, 42119,37892,36529,42118,42118,21687,38242,42118,14356,24027,38510,21074,33115,30178,28170,3710, 2655, 36495,
42118,36495,3340, 28479,33758,33758,13587,27520,11117,37892,37892,37891,36494,8316, 32790,38095,4838, 30722,39671,33211,7919, 11481,14612,29425,3661, 24409,31229,
3529, 2416, 12920,20634,6809, 5215, 24547,13161,17300,19538,29821,21132,38795,15036,22222,24416,13172,27287,8377, 16641,4969, 15611,32067,4780, 23107,15782,28530,
- 1835, 28276,1602, 17024,37913,42117,37862,34506,27889,36880,42117,36942,36494,38836,39671,31520,22504,39671,42117,33757,36435,35401,31210,26314,9970, 301, 9848,
- 26902,17051,36984,4926, 10587,5466, 36911,38977,42117,42116,37891,35401,33757,592, 9166, 42116,33115,18913,10221,32924,42116,17023,3004, 8601, 22503,36494,922,
+ 1835, 28276,1602, 17024,37913,42117,37862,34506,27889,36880,42117,36942,36494,38836,39671,31520,22504,39671,42117,33757,36435,35401,31210,26314,9970, 301, 9848,
+ 26902,17051,36984,4926, 10587,5466, 36911,38977,42117,42116,37891,35401,33757,592, 9166, 42116,33115,18913,10221,32924,42116,17023,3004, 8601, 22503,36494,922,
42116,31276,25171,36494,561, 34922,33757,17737,36493,39670,38074,42115,42115,33114,42115,34505,39670,22601,26990,15445,37891,723, 13766,10747,18646,16143,38928,
37540,20616,12457,20155,11885,34031,20615,36021,39670,7600, 25672,5378, 34505,42115,33114,36792,28478,35400,37891,1048, 1530, 7819, 4512, 5308, 786, 8289, 37890,
1769, 35400,2133, 16754,30163,254, 2281, 27196,11206,6293, 8600, 17736,28477,37680,12456,42114,1853, 37890,11214,12586,4634, 34612,33757,37688,1733, 4671, 39670,
- 33819,36493,19064,42114,27542,3697, 31598,37890,30177,3458, 31284,39669,38306,36493,18980,39669,37890,42114,25440,39669,42114,7809, 26989,34505,33335,42113,9419,
+ 33819,36493,19064,42114,27542,3697, 31598,37890,30177,3458, 31284,39669,38306,36493,18980,39669,37890,42114,25440,39669,42114,7809, 26989,34505,33335,42113,9419,
5108, 42113,37889,3753, 34190,32973,33599,7295, 18000,4310, 33726,6446, 17165,42113,32026,10586,18386,34861,36493,32025,1131, 42113,33598,383, 34505,15921,23450,
- 35400,39669,33756,34504,17999,9616, 37167,35400,34046,36512,30863,20902,42112,35399,21285,36492,26988,37445,24728,8599, 2707, 27012,15154,4392, 5542, 33620,9030,
+ 35400,39669,33756,34504,17999,9616, 37167,35400,34046,36512,30863,20902,42112,35399,21285,36492,26988,37445,24728,8599, 2707, 27012,15154,4392, 5542, 33620,9030,
37889,20948,14818,36913,34017,9969, 36383,32379,23904,33621,34626,16772,14817,38693,27010,33756,34504,33756,17735,5859, 42112,16352,14787,26987,39668,42112,19535,
1023, 26986,18912,34504,14268,14067,4255, 16082,35349,21547,39668,288, 3981, 26374,13106,39668,4562, 21855,7837, 33114,35399,4732, 37351,15444,2175, 12963,30176,
30617,5730, 33756,20901,13286,39668,36492,37889,28476,33755,42112,39667,36492,36242,42111,42111,37889,19203,9664, 22538,33755,36492,39667,37888,16126,38866,34400,
35758,42111,9680, 14804,33755,37888,32024,37888,38538,34765,34504,35583,770, 39667,34142,580, 10196,33799,28323,14433,10220,38357,39667,42111,14098,39666,33755,
- 510, 14131,2255, 13770,1605, 5729, 24414,11434,6452, 5541, 25671,3854, 25892,28699,1270, 19212,2616, 2705, 22163,19202,17022,1753, 1226, 17816,29822,4376, 1247,
+ 510, 14131,2255, 13770,1605, 5729, 24414,11434,6452, 5541, 25671,3854, 25892,28699,1270, 19212,2616, 2705, 22163,19202,17022,1753, 1226, 17816,29822,4376, 1247,
1700, 34503,8452, 38309,1401, 36414,39666,4963, 8338, 18990,2875, 22670,14729,33153,6470, 17751,24520,36491,21954,8561, 29198,7747, 38554,20199,12455,3888, 14475,
- 35268,5748, 42110,33754,2977, 37995,25006,36253,33754,29014,22502,24189,30175,36296,11769,23425,6583, 370, 27917,3702, 15762,42110,37175,39360,1052, 16324,1216,
+ 35268,5748, 42110,33754,2977, 37995,25006,36253,33754,29014,22502,24189,30175,36296,11769,23425,6583, 370, 27917,3702, 15762,42110,37175,39360,1052, 16324,1216,
24307,27873,7896, 5858, 1218, 37888,42110,994, 5844, 21726,39666,11297,33401,35625,24065,23009,39341,37580,33116,32887,37372,36100,13488,34503,39226,39144,36491,
38937,18018,8822, 36491,19479,39666,33349,29875,17998,33834,36049,35399,30618,32994,36037,19201,21259,34503,32023,34390,37887,39665,37774,20614,18027,32890,33355,
10925,22437,6172, 7586, 34402,10210,37259,36182,16871,39665,42110,34503,7285, 39665,12954,42109,37887,36491,2895, 36490,12118,20265,37887,28475,25543,9679, 19534,
@@ -17634,7 +17629,7 @@ static const unsigned short Ranks[197839] =
13359,39664,42109,37886,39664,32285,37886,36490,20900,11737,14959,34502,37023,17109,28335,6437, 22684,10775,39017,42109,32022,34502,42109,42108,22501,28473,37624,
13059,23825,33915,33459,37885,34667,31500,39664,36489,37885,22326,26059,35398,42108,33202,18765,34441,31680,36994,34654,26330,13277,25700,30502,4015, 38824,33113,
33754,36489,16156,2896, 1771, 29865,28191,24657,14197,39059,10742,12453,26985,20613,16322,20612,21948,19450,143, 25762,11116,37885,39664,35398,33058,10901,37885,
- 23449,34789,36489,32021,10194,5816, 37884,39663,42108,37884,3074, 14097,36489,28472,35397,33753,34108,4970, 39663,9397, 36488,5945, 4356, 39663,14536,38816,8858,
+ 23449,34789,36489,32021,10194,5816, 37884,39663,42108,37884,3074, 14097,36489,28472,35397,33753,34108,4970, 39663,9397, 36488,5945, 4356, 39663,14536,38816,8858,
30176,13880,14048,3244, 34501,19845,8808, 36488,19533,42108,15920,34501,5378, 5492, 23448,20611,14096,42107,33945,37884,39663,12093,15443,23550,32869,38788,35613,
35229,19200,17574,3647, 37884,39662,13044,37883,17997,15442,31330,37577,39662,21686,42107,42107,2588, 38352,30174,27907,42107,34501,33113,356, 33753,974, 32411,
7717, 37, 8984, 2114, 2189, 30173,3709, 30172,27829,36604,21964,17450,17187,25923,13769,9418, 35397,12856,11043,30171,38636,7436, 38168,8736, 17234,15593,35397,
@@ -17647,14 +17642,14 @@ static const unsigned short Ranks[197839] =
29388,6060, 42104,1626, 17275,32019,33112,3354, 34173,6036, 11764,33179,26501,33752,14287,37198,38833,35625,35396,42104,24256,25569,28544,33538,42104,33496,34825,
30753,14240,42104,39660,39659,6167, 27680,39659,42103,28467,12855,18910,37882,13780,10924,22504,34557,31659,26984,11816,2940, 39659,37881,25459,18909,18863,28022,
34501,39659,38231,13235,38895,36446,39658,36299,42103,7197, 33308,10525,15918,42103,35895,24517,42103,7036, 36487,39658,914, 10005,36546,36472,18908,32018,39658,
- 19199,35680,15153,32702,33752,42102,5607, 402, 4354, 32627,26282,19481,33870,9378, 35378,199, 2650, 16044,21617,25166,30438,26717,28659,30134,626, 22159,8741,
+ 19199,35680,15153,32702,33752,42102,5607, 402, 4354, 32627,26282,19481,33870,9378, 35378,199, 2650, 16044,21617,25166,30438,26717,28659,30134,626, 22159,8741,
184, 8387, 20002,39170,8892, 39658,33112,24269,34511,3230, 33112,42102,12009,26450,12706,35436,35396,42102,7927, 1020, 21017,22257,33752,10219,2018, 7808, 25642,
42102,33906,39657,42101,17996,39657,34500,42101,739, 23359,24473,38892,42101,17913,12572,1764, 36486,34500,19532,37881,20767,39657,14786,20419,28086,4286, 25559,
9396, 32017,24516,42101,2130, 29968,30916,7156, 10174,25670,12452,23901,18350,34500,37881,36486,35396,34730,4062, 42100,34500,25669,39657,5785, 42100,37346,32016,
- 25748,42100,42100,42099,37055,12854,37881,33752,36486,33223,32015,17604,14432,33112,29652,24410,36486,9059, 19198,15440,42099,3814, 35421,37619,33111,23445,9543,
+ 25748,42100,42100,42099,37055,12854,37881,33752,36486,33223,32015,17604,14432,33112,29652,24410,36486,9059, 19198,15440,42099,3814, 35421,37619,33111,23445,9543,
642, 10049,31433,6926, 19998,36726,11797,13086,19197,10876,20606,20605,6441, 38368,34290,31671,14650,857, 13768,2124, 33565,35395,24393,13285,39656,9698, 32938,
17021,42099,37880,42099,21082,35135,36368,25849,34308,37880,39333,4580, 28466,10919,28302,7779, 4435, 42098,39656,13487,39656,29164,42098,30420,9034, 15712,42098,
- 11515,20198,2375, 39656,23581,35395,34546,28477,6958, 32856,42098,12054,30167,37880,35395,4768, 18451,39081,38800,20683,9199, 11514,1810, 5004, 21231,5155, 5226,
+ 11515,20198,2375, 39656,23581,35395,34546,28477,6958, 32856,42098,12054,30167,37880,35395,4768, 18451,39081,38800,20683,9199, 11514,1810, 5004, 21231,5155, 5226,
32757,14527,24411,13640,14324,34428,31562,16343,5034, 23561,14814,19196,30376,35588,7746, 2386, 17754,28465,8968, 4208, 35906,16137,10451,2648, 422, 10740,39655,
29394,34499,1491, 37566,22100,19188,21029,14414,23444,23774,28464,31299,5375, 31486,5775, 12853,5140, 9647, 35396,39655,20759,22232,32014,11763,35969,28246,37384,
12852,13147,1869, 14688,14240,21521,32851,6378, 29251,6757, 4598, 21066,5693, 32898,14813,3498, 15439,31376,37030,32891,33223,4742, 9417, 38384,4195, 5866, 38549,
@@ -17662,10 +17657,10 @@ static const unsigned short Ranks[197839] =
15438,23187,29671,34389,20604,21317,20603,30638,42097,14785,17019,28792,21168,35559,5107, 6221, 9122, 28973,39163,38400,35502,35282,34150,37542,21017,32401,36485,
30739,42097,32615,34837,15437,12032,32928,37470,17424,42097,34499,20989,33941,37880,33751,42097,36485,19197,33717,38234,37879,39655,39654,9940, 8014, 20197,20230,
10218,10678,19195,36809,16351,10276,28327,36873,36485,39654,39654,13207,37879,36078,36420,39654,24515,36485,17734,9093, 3827, 42096,1271, 9248, 20602,14286,20840,
- 4546, 37879,35395,39257,28463,5815, 32837,3166, 16771,39653,20196,35770,18907,33904,35917,1716, 14196,4783, 9395, 4925, 35930,9266, 28204,9092, 16350,35445,4474,
+ 4546, 37879,35395,39257,28463,5815, 32837,3166, 16771,39653,20196,35770,18907,33904,35917,1716, 14196,4783, 9395, 4925, 35930,9266, 28204,9092, 16350,35445,4474,
437, 24514,33524,22697,35394,36484,17018,21345,33559,25668,37461,24836,42096,30166,15231,1352, 42096,20559,36583,10677,36950,18604,36161,35394,39653,14227,42096,
- 9812, 28462,19531,42095,42095,631, 4576, 15617,32913,10099,16770,37879,755, 16332,3732, 19194,10733,4692, 8808, 27108,12951,33402,37878,21653,38734,38772,9840,
- 38885,36518,42095,33111,202, 11762,19619,27643,5814, 2324, 45, 27287,8187, 17773,20601,24670,8560, 10585,15515,38701,28375,11296,42095,4837, 7659, 1434, 7017,
+ 9812, 28462,19531,42095,42095,631, 4576, 15617,32913,10099,16770,37879,755, 16332,3732, 19194,10733,4692, 8808, 27108,12951,33402,37878,21653,38734,38772,9840,
+ 38885,36518,42095,33111,202, 11762,19619,27643,5814, 2324, 45, 27287,8187, 17773,20601,24670,8560, 10585,15515,38701,28375,11296,42095,4837, 7659, 1434, 7017,
2976, 20600,12950,10047,21260,6339, 42094,5986, 277, 18009,29915,17648,35624,4294, 30607,36358,5879, 19586,34499,36484,16155,38562,28981,26983,22102,30165,39653,
30164,27866,16154,26012,602, 10730,12247,1687, 10495,16349,34499,16769,22721,4360, 17995,13767,37705,30163,19530,6601, 39653,15152,39652,42094,33751,36484,13206,
33111,34853,6690, 17233,5813, 10218,24513,11115,42094,36513,29842,1788, 38227,34498,26982,42094,21476,11974,39652,9475, 39652,15151,36115,11172,9406, 4645, 21879,
@@ -17676,16 +17671,16 @@ static const unsigned short Ranks[197839] =
35512,35639,36126,35394,39651,3198, 34696,23424,22312,13821,23777,11200,2691, 36802,2441, 38324,34498,1942, 4866, 2141, 1712, 37023,1063, 5773, 2598, 2048, 32058,
38061,12404,16660,33243,16316,3779, 3319, 733, 35574,711, 9247, 17474,33007,4651, 11030,38093,9808, 1111, 2951, 7035, 12705,42090,37878,5077, 7312, 32957,36742,
4854, 12614,16146,10847,36556,7827, 34114,7923, 2317, 42090,39650,982, 25710,4654, 9598, 1822, 1612, 4380, 4275, 33518,28360,2421, 29525,555, 29584,163, 32476,
- 9495, 19010,4312, 24512,25672,20273,19414,16150,42089,18539,30746,37407,14083,36345,35406,36483,38004,39358,11114,39650,22194,38245,25667,25666,6451, 11453,4473,
+ 9495, 19010,4312, 24512,25672,20273,19414,16150,42089,18539,30746,37407,14083,36345,35406,36483,38004,39358,11114,39650,22194,38245,25667,25666,6451, 11453,4473,
42089,39650,34429,27448,42089,39650,18654,37139,27251,1043, 30207,9968, 42089,42088,14784,19529,32012,36483,18905,15340,4518, 4836, 24511,30160,39649,34269,15514,
10584,42088,35393,8347, 42088,10918,4835, 18904,32011,36483,32010,21682,20511,30159,39649,23442,5112, 26149,17862,42088,42087,39649,37877,15156,37877,42087,15504,
13893,22265,34677,36368,28460,19108,9149, 42087,25665,23210,14847,34498,33110,33751,37877,42087,17732,30158,39649,39648,15916,39648,42086,37079,7836, 6415, 29049,
30905,37877,9695, 24510,36428,622, 36482,39648,30157,37876,25664,17231,37876,36482,33109,37876,61, 10127,5059, 22458,14163,27674,7621, 1463, 2125, 30656,26089,
- 13236,16767,33079,21181,31510,31504,32352,17840,24344,9342, 21625,17017,39202,2167, 5291, 9807, 14285,13605,33109,35816,32610,34497,36482,15915,34497,39648,1171,
+ 13236,16767,33079,21181,31510,31504,32352,17840,24344,9342, 21625,17017,39202,2167, 5291, 9807, 14285,13605,33109,35816,32610,34497,36482,15915,34497,39648,1171,
26506,21970,38818,25933,6976, 10397,767, 1478, 1799, 13056,36088,33750,35116,37469,8547, 10030,33227,42086,22500,21745,32878,1591, 33109,6959, 9390, 37876,34059,
17994,37875,1524, 33750,25663,16502,525, 9646, 2779, 8315, 7204, 26964,5023, 20701,33636,15436,24497,34497,20897,6356, 12896,2521, 3781, 28572,33109,6290, 31434,
28368,13622,34497,26687,531, 6957, 12773,26889,25842,8177, 24239,30084,23875,9441, 221, 15773,17348,37875,3025, 26283,8782, 19016,20737,1014, 2037, 2, 26191,
- 11089,16483,5619, 189, 16719,6815, 3895, 598, 11300,14744,2988, 21171,26861,16800,8787, 10687,12402,11921,10942,12433,18045,30595,5165, 5759, 33069,30829,2324,
+ 11089,16483,5619, 189, 16719,6815, 3895, 598, 11300,14744,2988, 21171,26861,16800,8787, 10687,12402,11921,10942,12433,18045,30595,5165, 5759, 33069,30829,2324,
24579,1935, 32523,18702,31513,33916,404, 3842, 15119,39647,18153,6656, 19192,15209,13766,30156,39647,15914,36361,15264,36364,35943,42086,19008,36719,37875,17993,
10217,28084,37308,37875,36629,31042,3498, 34496,4993, 39052,35103,23787,22660,24159,6559, 34366,39647,35393,20193,10500,8314, 8685, 34496,10922,6147, 17992,36482,
36481,36586,8495, 27620,8770, 3478, 42086,36481,24686,3570, 28759,36481,32009,377, 24995,32008,17571,14737,26859,16348,42085,24509,24134,33750,36892,26249,34496,
@@ -17693,11 +17688,11 @@ static const unsigned short Ranks[197839] =
37969,801, 33750,34496,518, 33146,36943,42085,38890,11736,2542, 37153,35726,5832, 35996,33594,17016,4757, 21456,28697,5680, 36863,33959,42084,2931, 18349,34579,
38747,3039, 21681,32007,1733, 21368,26980,22187,27943,35317,33597,17067,25800,1126, 11761,5163, 8062, 33290,39332,9414, 18165,13566,34886,10338,34311,6956, 17990,
29837,13284,25829,7007, 39021,17974,19191,4352, 38541,5122, 6565, 30859,18519,1975, 790, 10450,1389, 39647,42084,14721,8559, 15149,33500,37428,3398, 5887, 36170,
- 9781, 27593,37874,18348,17731,24508,33749,37299,10396,31745,12450,36481,7570, 10639,37874,35393,37874,19190,42084,10583,37464,18903,35021,15256,39646,23934,2764,
+ 9781, 27593,37874,18348,17731,24508,33749,37299,10396,31745,12450,36481,7570, 10639,37874,35393,37874,19190,42084,10583,37464,18903,35021,15256,39646,23934,2764,
37276,4484, 10649,10839,14770,23166,39646,42084,3520, 18768,558, 483, 39646,5053, 2, 30803,13509,25186,10818,37798,42, 20343,1579, 10087,19353,33067,28989,
13470,13953,11053,31570,12192,34495,6128, 33733,22378,39064,34175,20377,42083,2018, 1256, 11052,5417, 10280,575, 25434,42083,36480,30992,7887, 34648,2220, 10669,
6881, 12851,19189,5372, 3265, 5343, 34495,39646,23366,26685,38957,5886, 14811,7392, 5441, 17431,38812,34495,37874,24507,14198,9837, 39645,11099,257, 10917,33266,
- 9037, 20599,16767,1861, 42083,9074, 1860, 10058,19246,2474, 8552, 83, 33108,441, 26850,1047, 15435,16347,17989,26627,4545, 348, 31296,36480,39318,39645,363,
+ 9037, 20599,16767,1861, 42083,9074, 1860, 10058,19246,2474, 8552, 83, 33108,441, 26850,1047, 15435,16347,17989,26627,4545, 348, 31296,36480,39318,39645,363,
16966,19188,42083,42082,37873,21295,42082,39076,18902,37510,32006,42082,42082,29751,26979,8465, 42081,36480,42081,39645,36480,13, 20617,32608,11023,33026,27089,
12261,10328,14622,28677,95, 10039,20141,17895,42081,42081,42080,12321,21680,37873,25479,2848, 22499,28698,2268, 404, 2704, 17230,12949,42080,39645,4010, 33749,
6095, 1115, 15544,133, 33040,15512,36544,24596,5228, 28889,35393,13989,3408, 32917,4145, 8910, 33108,37873,23494,36479,42080,3436, 21679,12948,34495,2431, 42080,
@@ -17707,12 +17702,12 @@ static const unsigned short Ranks[197839] =
39235,17590,37944,17376,35099,34494,14782,12449,37872,36341,24506,6381, 26728,28077,18375,22246,37872,24375,33748,39643,9806, 8909, 34063,23441,30154,18900,24505,
36728,36479,18899,39643,16766,8908, 42078,39643,36478,4108, 38587,16150,15314,19186,10921,17988,5592, 16783,20597,24504,10409,2072, 373, 35227,26977,13282,36729,
37906,42077,9033, 33747,42077,2768, 3795, 30721,10449,5417, 26976,36478,33107,39643,18347,24675,37872,24503,14431,7034, 1003, 37978,33067,6947, 16723,14430,21325,
- 2883, 3818, 35391,42077,157, 33747,39642,6689, 4759, 12092,37863,42077,17220,32145,12502,12091,3974, 2355, 38857,34953,35391,42076,37872,11513,32002,35391,1049,
- 8357, 37871,2505, 39642,25340,39177,39642,38729,39642,28458,36478,19528,33641,13765,19059,8109, 5180, 23765,21264,29800,34291,24613,36041,24098,30754,5065, 9061,
- 24632,29789,9748, 37893,7311, 32488,3412, 16336,36922,35504,3664, 4760, 852, 4981, 21295,32487,35015,30229,2852, 7126, 33601,17472,9310, 17987,35739,36076,8246,
- 13480,10799,2934, 19129,42076,12456,26975,256, 4180, 10289,32798,1845, 29023,17791,4796, 1347, 20896,39012,26446,42076,35390,38213,19527,36372,17728,33747,1236,
+ 2883, 3818, 35391,42077,157, 33747,39642,6689, 4759, 12092,37863,42077,17220,32145,12502,12091,3974, 2355, 38857,34953,35391,42076,37872,11513,32002,35391,1049,
+ 8357, 37871,2505, 39642,25340,39177,39642,38729,39642,28458,36478,19528,33641,13765,19059,8109, 5180, 23765,21264,29800,34291,24613,36041,24098,30754,5065, 9061,
+ 24632,29789,9748, 37893,7311, 32488,3412, 16336,36922,35504,3664, 4760, 852, 4981, 21295,32487,35015,30229,2852, 7126, 33601,17472,9310, 17987,35739,36076,8246,
+ 13480,10799,2934, 19129,42076,12456,26975,256, 4180, 10289,32798,1845, 29023,17791,4796, 1347, 20896,39012,26446,42076,35390,38213,19527,36372,17728,33747,1236,
4799, 2109, 39641,37871,4304, 4137, 20596,20595,28457,21900,25661,36478,33107,30951,7735, 108, 5199, 24737,19519,33050,17997,1315, 17489,17824,7807, 884, 25660,
- 7745, 37871,32001,221, 6068, 38521,2017, 2310, 736, 1158, 36454,612, 9811, 5064, 26974,3073, 5491, 10920,4144, 16346,232, 7173, 14359,22603,42076,5245, 5638,
+ 7745, 37871,32001,221, 6068, 38521,2017, 2310, 736, 1158, 36454,612, 9811, 5064, 26974,3073, 5491, 10920,4144, 16346,232, 7173, 14359,22603,42076,5245, 5638,
14758,4825, 2063, 34494,7922, 11973,35390,8326, 36477,26973,37871,38986,6394, 12704,6688, 8232, 4509, 1066, 13356,32237,18898,35390,30153,39641,7926, 19185,32000,
42075,42075,42075,38888,36477,39641,17727,36477,19526,42075,35390,33747,37870,37406,33353,34494,39641,28456,36354,39640,24502,42074,16345,688, 36477,17015,33107,
39640,3741, 19184,4425, 20594,12849,27154,39640,12453,36476,35389,17014,23440,12703,10254,35389,8346, 33746,37870,18542,37870,11760,36710,37870,12347,36278,20593,
@@ -17721,7 +17716,7 @@ static const unsigned short Ranks[197839] =
21991,27533,35389,33746,39639,16765,15434,36700,32445,31509,29456,34493,42074,5185, 36475,22498,36475,15148,39639,24817,170, 10692,15910,36475,36475,35388,10528,
14095,21678,36474,4083, 36474,36474,22305,36268,36474,42073,2345, 2798, 42073,6450, 15926,28455,36473,8312, 19952,2677, 17097,631, 8890, 13189,6380, 17985,31325,
3231, 4458, 8185, 3795, 10216,35388,39638,15433,35482,4633, 5078, 8575, 20592,8451, 3155, 12452,22530,3072, 6216, 24208,37869,15432,13281,4890, 6209, 42073,12451,
- 9394, 13485,28801,39011,42073,14781,39638,20591,13280,34493,19525,869, 16243,28511,36473,17726,42072,33106,39638,24500,42072,1407, 25331,33095,36789,12400,832,
+ 9394, 13485,28801,39011,42073,14781,39638,20591,13280,34493,19525,869, 16243,28511,36473,17726,42072,33106,39638,24500,42072,1407, 25331,33095,36789,12400,832,
7528, 39638,42072,9542, 5728, 1440, 37240,36473,101, 18691,22479,29543,24518,14760,39637,20590,35388,6895, 19983,25624,13484,5667, 36473,42072,26972,35388,22497,
42071,38269,14780,3708, 36472,23439,8231, 33106,37869,39637,19182,16764,39637,33746,37869,13764,34116,33106,8558, 36826,37003,25659,30152,38886,26971,15339,34489,
37868,36422,10215,42071,25658,42071,28106,10021,20142,34493,35387,29962,10582,37072,16521,34448,39637,37332,4895, 17725,35387,11735,26970,35387,11759,24841,37919,
@@ -17733,35 +17728,35 @@ static const unsigned short Ranks[197839] =
30144,13205,4438, 2194, 33744,7203, 39635,8788, 23909,25472,34491,39635,39635,24497,31998,33105,42068,2430, 39634,37867,25914,11451,1021, 15869,29504,34446,37162,
36322,34939,5692, 35591,29305,8057, 29743,13482,42068,30212,7630, 13481,38953,3996, 33013,42067,8184, 11734,35387,2777, 11758,23438,33744,39634,4511, 39634,27240,
33156,1537, 6558, 35386,37195,36471,9736, 13728,34491,31997,34459,10527,37535,28454,37867,17983,20322,728, 19524,7202, 10682,20589,8169, 5414, 37964,36269,35726,
- 20588,34491,18897,25772,8762, 3159, 38313,37866,34951,20587,42067,25163,524, 4333, 33003,27201,1533, 14082,42067,20586,42067,20189,28015,25474,7125, 16195,7016,
+ 20588,34491,18897,25772,8762, 3159, 38313,37866,34951,20587,42067,25163,524, 4333, 33003,27201,1533, 14082,42067,20586,42067,20189,28015,25474,7125, 16195,7016,
37014,34491,28416,37866,37866,1803, 7911, 28784,42066,627, 5913, 16635,13762,14151,39634,35386,34864,34176,35585,29257,32856,6449, 37921,11972,36471,36471,37047,
- 6165, 7102, 11512,11450,17951,1192, 17229,37866,33744,7779, 24740,20585,17982,15147,6258, 21675,3291, 31996,42066,31995,6435, 32987,37865,2441, 2612, 28451,1497,
+ 6165, 7102, 11512,11450,17951,1192, 17229,37866,33744,7779, 24740,20585,17982,15147,6258, 21675,3291, 31996,42066,31995,6435, 32987,37865,2441, 2612, 28451,1497,
5633, 39633,39633,10448,15511,39633,17998,23535,13779,33743,637, 30143,36471,37865,25656,30142,8684, 33883,10469,7487, 9313, 676, 23138,33917,266, 2865, 19984,
29288,20584,33743,25883,15146,13589,21674,6994, 12608,38784,33105,17551,39633,39632,24339,23717,35386,32982,39632,11888,4121, 11733,38765,32477,4961, 23994,42066,
- 25957,8889, 39632,34011,42066,34490,20895,4125, 20583,38127,25279,18419,8383, 35386,20582,17488,39632,13761,36470,9810, 33678,39208,10919,17724,27647,20581,3873,
+ 25957,8889, 39632,34011,42066,34490,20895,4125, 20583,38127,25279,18419,8383, 35386,20582,17488,39632,13761,36470,9810, 33678,39208,10919,17724,27647,20581,3873,
19023,38881,14809,20580,11757,38307,37865,23428,24203,13417,29001,12505,10408,9743, 33428,31824,37865,36659,2515, 2226, 39631,14284,30113,39383,1219, 12570,16174,
15499,9104, 27111,6059, 12090,39102,13760,37076,36457,34490,18346,36470,9033, 37832,36470,42065,11294,31965,35117,42065,34490,27482,14709,42065,39631,42065,17013,
33598,22418,93, 12848,37289,11235,35428,1111, 9660, 3616, 31829,6338, 20894,36470,34292,4894, 11649,42064,10913,14731,3808, 39631,42064,42064,16343,24188,23860,
22494,39631,4935, 26967,54, 16318,2166, 20464,10623,15919,29201,20238,17355,33390,15430,26991,19178,28450,8183, 32916,5345, 4834, 32809,30141,27812,34490,22493,
10676,923, 1420, 28979,8780, 17444,17728,12652,10566,23629,12017,11566,11370,36629,33471,8676, 12307,35320,17981,15429,25536,37864,23201,296, 19177,16763,33499,
- 33743,42064,11783,39630,3154, 9967, 1715, 21673,35303,17228,37864,26966,6894, 33104,36211,16418,8741, 3037, 17300,20860,20188,984, 2252, 12415,13759,30522,3961,
+ 33743,42064,11783,39630,3154, 9967, 1715, 21673,35303,17228,37864,26966,6894, 33104,36211,16418,8741, 3037, 17300,20860,20188,984, 2252, 12415,13759,30522,3961,
8716, 5314, 13395,20522,42063,10245,13278,33930,12450,24627,24894,37864,27900,39630,26965,30140,9678, 34489,19176,20579,17980,33080,39630,30001,4424, 11371,29618,
36599,18973,34204,407, 17233,37435,33104,35529,20578,36965,35344,6622, 39414,1475, 37864,10213,3943, 15145,21672,42063,31994,35385,8005, 39265,14193,35385,35059,
- 24496,1623, 37863,34489,23002,37192,42063,5253, 34149,30683,11293,37863,5625, 39630,22875,28737,33104,12847,27068,39629,37863,8020, 40, 37250,36469,362, 4820,
+ 24496,1623, 37863,34489,23002,37192,42063,5253, 34149,30683,11293,37863,5625, 39630,22875,28737,33104,12847,27068,39629,37863,8020, 40, 37250,36469,362, 4820,
11190,15428,3853, 34770,12846,32191,893, 11931,20187,39291,15053,38982,26062,27720,1340, 15629,426, 1146, 33371,447, 3590, 3212, 1172, 3584, 2954, 19175,38629,
35391,17012,20577,25424,24432,17227,37863,25655,31993,12702,558, 14909,37862,33142,35509,39238,35385,13841,11497,37955,42063,36973,21671,31301,17011,34489,33305,
37880,21862,7201, 26964,11732,39629,16149,10310,3646, 19174,15144,42062,32952,12701,36124,38409,30139,13778,266, 5558, 7478, 6726, 7354, 26513,25218,20576,38676,
- 2235, 33407,6322, 38012,17417,8890, 34786,38829,14808,39104,8182, 19173,8864, 39139,35385,29508,38100,30699,35908,33332,36450,34733,20121,13758,15427,20575,4782,
+ 2235, 33407,6322, 38012,17417,8890, 34786,38829,14808,39104,8182, 19173,8864, 39139,35385,29508,38100,30699,35908,33332,36450,34733,20121,13758,15427,20575,4782,
6808, 8055, 35384,36469,24495,17226,20574,36469,152, 12700,37331,42062,20531,23437,39629,26963,4925, 6591, 12635,1205, 35384,33348,39629,38741,24494,36469,34489,
26755,6337, 19523,37862,25654,36117,42062,23436,12449,33278,20963,7495, 33743,24609,1323, 27388,2980, 35985,42062,14088,18918,32719,27011,33656,7834, 11042,12838,
1415, 19519,21567,3221, 5128, 2766, 8611, 29317,19172,13318,13957,33284,9966, 15398,7485, 42061,34488,39628,20893,42061,28367,35571,32819,14070,42061,37862,36574,
- 9541, 37862,37861,35384,39628,11619,30138,16762,33104,37344,26340,36103,34488,21286,30137,21670,34341,33103,38332,37861,34314,12089,37447,36468,5632, 33742,6406,
+ 9541, 37862,37861,35384,39628,11619,30138,16762,33104,37344,26340,36103,34488,21286,30137,21670,34341,33103,38332,37861,34314,12089,37447,36468,5632, 33742,6406,
35549,34625,39628,17979,10214,20573,7694, 10332,35412,7859, 16148,16147,16980,34764,19171,33711,18015,18876,20572,36946,14283,35384,18199,31992,14093,8019, 39628,
3241, 7015, 42061,20892,42060,35383,33103,18345,20186,26962,42060,33103,31991,5812, 34488,36468,35383,14807,36468,12191,33742,42060,3386, 5811, 42060,33742,21669,
24493,42059,25653,36468,22901,20830,33103,9049, 15912,3586, 4614, 12508,27316,42059,33102,7484, 22492,34488,37861,33102,36467,80, 15485,2135, 32907,23611,35505,
23435,39627,39627,37118,4924, 42059,37861,36467,36945,25652,13757,7806, 13277,5011, 15343,35945,24289,21974,15203,20571,17599,10918,34598,29636,19522,11882,36698,
5859, 2298, 8966, 35671,38601,25651,25650,33952,3459, 33019,21668,6208, 38461,10213,7966, 10884,5244, 19532,27200,13649,33102,23434,17978,37726,279, 5242, 25580,
- 12088,33259,30907,23606,449, 31204,4382, 1859, 34119,15426,12087,1149, 12448,24883,39627,33106,16647,35270,15425,39356,20570,33742,1410, 1667, 38753,2154, 6388,
+ 12088,33259,30907,23606,449, 31204,4382, 1859, 34119,15426,12087,1149, 12448,24883,39627,33106,16647,35270,15425,39356,20570,33742,1410, 1667, 38753,2154, 6388,
37423,14282,20569,17248,42059,4218, 4274, 11957,13546,7294, 35223,5019, 42058,35168,21754,33154,7269, 15424,42058,36467,36467,3201, 39171,17479,6124, 8450, 39627,
27417,37860,17723,17290,21626,36837,19170,35524,30205,2501, 28255,34350,12874,20891,35870,18949,34487,15423,30136,5344, 29479,30135,9415, 34781,33645,35366,10502,
7693, 12447,820, 12919,8311, 10004,19529,37860,24492,20568,33741,14092,42058,35383,36466,35017,36597,24491,42058,17977,42057,20614,35383,16551,36466,37367,18110,
@@ -17769,7 +17764,7 @@ static const unsigned short Ranks[197839] =
5985, 36465,37859,14983,19521,11328,20185,42057,23893,14281,13756,33101,24490,25868,42056,6807, 34487,34093,16761,35382,38693,19169,33101,14806,13585,10806,14280,
39071,34487,34843,9805, 33101,35382,39626,11078,42056,1903, 14150,38137,34487,21998,20443,13276,42056,27456,7293, 28913,42056,39121,12490,37859,35382,39626,36416,
325, 30103,30133,42055,34486,24489,23998,43, 8701, 1994, 32770,19138,10131,21958,24444,31600,32373,23287,27963,25145,19136,5320, 11248,6161, 25252,20036,30402,
- 35242,20722,27712,28692,13995,23270,17225,8229, 25952,2736, 16342,33101,16156,8629, 10141,18170,1596, 184, 2835, 37859,39625,503, 32348,28627,31990,42055,66,
+ 35242,20722,27712,28692,13995,23270,17225,8229, 25952,2736, 16342,33101,16156,8629, 10141,18170,1596, 184, 2835, 37859,39625,503, 32348,28627,31990,42055,66,
35617,26394,35271,42055,39625,39625,3696, 16406,39625,37859,25647,31989,37858,42055,15143,22001,21112,28458,3255, 39107,6955, 39270,3545, 7811, 17975,20290,19168,
8690, 39624,34486,33078,11511,34486,25646,36465,28449,42054,36465,39624,37480,28583,37858,23433,36775,34595,26961,34924,13463,587, 9686, 29610,33741,39624,13275,
39624,39623,42054,33741,17224,20775,28448,33741,37858,16244,25645,42054,8344, 16912,9032, 35350,30132,16560,39008,34514,33100,11510,9809, 42054,42053,23432,10916,
@@ -17780,7 +17775,7 @@ static const unsigned short Ranks[197839] =
39621,21665,28878,19166,37537,39621,14426,15911,6164, 3738, 42052,42051,31987,36464,39621,33100,8740, 23430,31986,42051,3622, 1496, 9965, 38453,19517,39620,42051,
35380,11509,39620,4254, 3964, 705, 28248,13203,30740,10917,5250, 15142,31149,17974,19516,39620,19515,35380,28172,1778, 26957,20184,33097,42051,37856,34484,35293,
38270,33740,18344,22488,37856,19169,35380,8056, 10252,39620,14753,19165,39619,39619,36464,28444,23913,36463,42050,2701, 28468,42050,42050,42050,34484,35379,37856,
- 39619,25643,34483,30130,39619,4424, 42049,30129,39618,39618,42049,22341,21664,42049,39618,15510,42049,15509,16340,37855,32807,12545,6207, 42048,34483,20567,3585,
+ 39619,25643,34483,30130,39619,4424, 42049,30129,39618,39618,42049,22341,21664,42049,39618,15510,42049,15509,16340,37855,32807,12545,6207, 42048,34483,20567,3585,
37855,42048,2328, 36463,11971,36463,39618,35379,34483,20566,14279,7805, 25928,28727,17836,37855,42048,42048,39617,6336, 33100,16755,8421, 37855,30128,37854,37854,
42047,18869,25642,36463,7990, 31029,21663,17223,34483,36462,36462,42047,42047,18343,11813,42047,24488,42046,26942,23429,37854,42046,31044,8380, 19215,28459,33099,
42046,28355,35379,28443,34482,32735,5175, 22480,9987, 3207, 32944,33750,23151,8182, 28591,28442,18323,36759,33632,39296,10915,35797,35330,15144,38670,18895,37904,
@@ -17792,53 +17787,53 @@ static const unsigned short Ranks[197839] =
34482,4038, 25160,4953, 5457, 28440,12958,4022, 33008,18057,402, 20205,42044,31157,1183, 39001,37895,37698,35364,20563,19162,8554, 35005,6094, 20809,7195, 12444,
27755,32393,24474,36461,37853,18342,39616,24507,25641,7569, 9964, 17972,34592,42044,25903,20889,21527,4592, 33866,21662,24431,24486,35104,42044,93, 22750,39616,
6584, 16677,2649, 21661,2635, 1529, 39615,16760,36035,1098, 16946,36561,17971,36461,16145,20562,32192,15608,28439,28765,37853,42043,1834, 37306,85, 9111, 17970,
- 39615,9608, 11970,34488,37853,43, 33511,33740,1086, 30127,1231, 14625,36461,25640,15457,42043,15455,38997,33099,21195,15384,37297,10654,1180, 29557,3648, 6191,
- 39157,24053,3424, 25135,30960,11374,1312, 26996,25639,4517, 6687, 39615,25638,15910,16759,42043,42043,37666,37852,15941,23427,7483, 22719,36460,39615,34482,1080,
- 38499,11311,35417,38339,2830, 5573, 21318,15657,21759,22623,7726, 16058,17832,31286,11189,39614,34413,32938,13029,9089, 17010,19161,14374,34993,36470,20561,639,
+ 39615,9608, 11970,34488,37853,43, 33511,33740,1086, 30127,1231, 14625,36461,25640,15457,42043,15455,38997,33099,21195,15384,37297,10654,1180, 29557,3648, 6191,
+ 39157,24053,3424, 25135,30960,11374,1312, 26996,25639,4517, 6687, 39615,25638,15910,16759,42043,42043,37666,37852,15941,23427,7483, 22719,36460,39615,34482,1080,
+ 38499,11311,35417,38339,2830, 5573, 21318,15657,21759,22623,7726, 16058,17832,31286,11189,39614,34413,32938,13029,9089, 17010,19161,14374,34993,36470,20561,639,
20560,8310, 19862,3369, 28263,13221,21111,99, 26856,1773, 8384, 22375,26837,31282,17892,20321,24756,36306,33739,33771,42042,42042,37852,39614,39614,37852,38414,
38934,289, 11847,4385, 19691,17461,14335,17527,2123, 8906, 21034,21466,9088, 19665,37852,33395,14805,10675,37166,36515,17270,17755,39286,12899,37360,10868,29662,
34253,6590, 2218, 14804,32933,35378,35907,18718,38583,6252, 23282,34872,39089,34558,35549,33762,33799,31222,26814,39081,30929,14278,37571,8753, 35338,36181,23098,
- 36056,12071,35553,36460,34048,1441, 6716, 35526,33189,39245,16144,20559,17009,37874,31729,10113,8258, 14277,24412,2767, 5792, 2851, 6654, 4706, 13273,2629, 2406,
+ 36056,12071,35553,36460,34048,1441, 6716, 35526,33189,39245,16144,20559,17009,37874,31729,10113,8258, 14277,24412,2767, 5792, 2851, 6654, 4706, 13273,2629, 2406,
26127,18565,39142,13293,26293,36010,38462,6034, 27073,27181,10999,35647,39297,33226,35170,1425, 34701,21367,29087,19606,36915,13798,18571,37865,12962,28240,27798,
18893,42042,38494,37851,728, 12914,42042,2703, 20558,36141,5936, 18247,19075,6944, 12428,34835,27906,23146,38866,38890,11731,42041,28503,39094,10663,35546,42041,
- 3263, 17967,24161,1376, 42041,12166,42041,35378,26804,2763, 1375, 1417, 36379,93, 21688,31190,8534, 34881,33095,11313,16042,16143,19160,914, 38922,32983,2248,
+ 3263, 17967,24161,1376, 42041,12166,42041,35378,26804,2763, 1375, 1417, 36379,93, 21688,31190,8534, 34881,33095,11313,16042,16143,19160,914, 38922,32983,2248,
15422,2745, 4088, 5464, 10940,37108,1854, 34644,36784,35317,30618,32786,6989, 19159,19833,6135, 26363,39274,18065,13755,33551,21411,11982,21234,9607, 1974, 24097,
23426,15013,42040,37851,28450,23335,29710,3396, 35477,37851,31057,3338, 13926,36460,1475, 11509,33387,2763, 6732, 36460,3172, 36662,26958,20183,32436,34193,19278,
39387,37851,31983,28438,33437,6497, 42040,26447,32395,3804, 10907,34109,31731,6459, 15140,38351,30675,36459,647, 10304,34481,22058,36459,16635,36459,33845,33739,
37850,26957,30440,19000,1444, 12948,34917,27676,24485,10701,22487,17008,42040,31982,19158,25637,42040,42039,36459,42039,24484,25636,42039,10251,36458,39614,25635,
20888,2091, 23486,26956,28437,42039,26815,34760,37850,35377,36458,33739,20887,31981,4199, 10579,38464,7051, 18892,26782,35522,33098,42038,16339,39613,35569,37054,
37850,387, 35377,2562, 38838,803, 7919, 11112,33739,20886,42038,1633, 9573, 15139,42038,26955,2049, 16142,36458,20182,4561, 34148,13272,42038,22971,729, 33098,
- 42037,17969,37516,37850,6220, 1308, 12845,32196,713, 14938,14276,33098,1195, 12142,13202,35544,42037,33738,14779,15421,19157,31980,13777,39613,21660,2947, 3243,
+ 42037,17969,37516,37850,6220, 1308, 12845,32196,713, 14938,14276,33098,1195, 12142,13202,35544,42037,33738,14779,15421,19157,31980,13777,39613,21660,2947, 3243,
12607,25228,5374, 2306, 21861,9804, 10558,39613,12394,19156,18341,24483,42037,13201,33098,35377,1800, 35950,7018, 39073,17007,19152,38471,35898,18977,9871, 23596,
22123,7083, 483, 26419,4654, 824, 8098, 6219, 38506,4025, 36007,37849,11975,39613,16141,14275,19155,11969,19838,26514,42037,1313, 24427,39612,551, 14274,21622,
1309, 33271,36458,33738,39612,35377,36457,17968,42036,36457,12711,2654, 39612,39612,6295, 22131,11292,33738,18746,39120,20557,42036,37849,42036,20181,33738,16737,
- 42036,16338,35376,18891,42035,37849,42035,9395, 34320,34549,33737,35376,42035,37849,33737,5109, 31979,2930, 42035,35376,158, 35376,5691, 39611,33595,25634,5822,
+ 42036,16338,35376,18891,42035,37849,42035,9395, 34320,34549,33737,35376,42035,37849,33737,5109, 31979,2930, 42035,35376,158, 35376,5691, 39611,33595,25634,5822,
14803,5346, 42034,30126,28436,39611,37848,37979,33320,34481,39204,33583,22486,33097,36457,12626,17222,23425,34481,13754,14104,459, 24584,25458,20180,39611,11968,
35375,17618,35375,6377, 18890,37848,42034,31978,990, 42034,39611,5203, 42034,23700,15271,21853,9031, 28146,36338,26050,35375,21659,36755,38774,33050,34437,39610,
30125,38809,42033,6385, 42033,37848,42033,22485,37848,14425,36457,37847,15138,34481,37847,11177,18340,39610,29652,33761,22241,31710,7393, 17006,1405, 42033,37847,
39610,19558,10084,4133, 6146, 12448,4274, 22484,17301,6733, 19154,11111,36456,4247, 12549,17967,14481,13753,39610,908, 21042,11493,19582,14802,20556,9719, 20588,
- 23309,37825,11804,39609,33097,31977,35375,31976,36456,31210,10914,5084, 21658,2820, 17005,10447,9607, 34480,39609,34332,36456,42032,42032,37847,33081,23393,1314,
+ 23309,37825,11804,39609,33097,31977,35375,31976,36456,31210,10914,5084, 21658,2820, 17005,10447,9607, 34480,39609,34332,36456,42032,42032,37847,33081,23393,1314,
13380,15573,36018,973, 36929,20555,15883,34351,39609,30466,37846,36120,17924,33737,37846,37846,20979,37846,9963, 35582,26954,31975,1110, 17721,33097,38737,37260,
10180,34480,19693,20554,39609,22483,17266,22938,39608,33097,33068,4021, 42032,2381, 9087, 30528,33256,23424,8597, 37248,42032,20553,15909,35374,5608, 5327, 17563,
6465, 21657,36774,34480,15885,7804, 32578,30746,15692,29570,17720,33096,42031,4488, 21656,33737,2344, 15137,42031,13752,19239,23262,11281,6369, 30124,32214,42031,
5705, 34661,31383,27117,22482,20179,31974,31973,35374,21655,33736,39608,37845,35863,36456,42031,34816,22481,37845,2129, 20719,16140,4632, 1370, 10407,10250,37174,
1364, 6996, 14656,37837,28795,9703, 15150,20232,2843, 36455,39608,25451,26705,8519, 21654,15706,29545,35754,33736,42030,33736,18847,27547,30123,6106, 2079, 20552,
20051,14962,802, 27668,29459,11579,37845,18446,5121, 6085, 29081,31808,17966,25909,32280,26237,16068,434, 14591,26764,5343, 31953,28571,20681,8596, 19153,17965,
- 27035,11449,15205,23685,8600, 2001, 1449, 34385,19152,38097,32695,22480,36464,24262,8228, 24245,32494,11756,36056,39608,13271,3889, 36455,42030,20551,36624,3811,
+ 27035,11449,15205,23685,8600, 2001, 1449, 34385,19152,38097,32695,22480,36464,24262,8228, 24245,32494,11756,36056,39608,13271,3889, 36455,42030,20551,36624,3811,
33691,28435,37845,18159,8055, 26234,13751,8449, 42030,24482,25721,33736,34480,21653,34479,3737, 34479,13480,17964,34064,35501,28297,42030,4833, 38678,1586, 34888,
1739, 3844, 28242,19151,21652,39607,12012,13750,1079, 11967,15908,33279,14778,38852,39607,36251,33735,22128,20885,30122,35374,39607,19514,10097,32851,8343, 39123,
- 8161, 33096,5663, 10096,14801,24291,9838, 20987,18960,1476, 15892,30121,35374,32876,14658,31966,25633,28434,37679,2296, 17221,35373,34791,22042,8088, 22815,7639,
+ 8161, 33096,5663, 10096,14801,24291,9838, 20987,18960,1476, 15892,30121,35374,32876,14658,31966,25633,28434,37679,2296, 17221,35373,34791,22042,8088, 22815,7639,
34567,18892,2848, 17963,9807, 33452,25632,33735,38162,25631,29931,4814, 11730,1460, 22270,15755,7482, 42029,39607,42029,27921,37844,33096,23852,3714, 16337,23802,
25465,1856, 3543, 5582, 1815, 25630,14383,30502,31972,15907,20550,4038, 36455,18339,19243,15104,23309,17004,36455,3571, 37844,17003,3187, 4444, 25448,28751,30608,
30934,30120,42029,34978,5351, 17682,35368,38296,26658,38060,4359, 18338,30119,13442,33735,8682, 22479,9414, 38324,15136,15508,30118,39606,3506, 8889, 16202,19150,
23171,7172, 34230,9606, 18215,24326,6953, 17002,20549,30409,5313, 35937,33877,34479,26953,2204, 42029,39606,42028,20548,5282, 36454,35373,8203, 30117,20547,36454,
- 42028,10578,37170,38856,2750, 18693,18889,33096,8739, 36959,33735,12429,38219,39606,9904, 28233,42028,14777,31971,33095,25851,19223,37486,22478,10810,1037, 9250,
- 5434, 4649, 4609, 7489, 15930,39152,30116,23423,37844,42028,12700,11603,21253,8227, 9032, 3420, 26725,2328, 17482,35224,4122, 11061,26251,928, 7283, 26230,9058,
+ 42028,10578,37170,38856,2750, 18693,18889,33096,8739, 36959,33735,12429,38219,39606,9904, 28233,42028,14777,31971,33095,25851,19223,37486,22478,10810,1037, 9250,
+ 5434, 4649, 4609, 7489, 15930,39152,30116,23423,37844,42028,12700,11603,21253,8227, 9032, 3420, 26725,2328, 17482,35224,4122, 11061,26251,928, 7283, 26230,9058,
4107, 35295,17326,39173,25317,37786,31970,33095,42027,36454,12089,9352, 37100,33622,33807,3229, 12945,11619,22924,20909,37722,2401, 6591, 19513,25629,14171,39606,
37106,3150, 11729,37844,3805, 27591,28219,28976,24660,37020,26646,13749,15140,33095,35006,8044, 14028,20884,17166,3475, 10098,32152,35260,10067,14273,15398,10760,
617, 11896,19149,1232, 17234,38222,34479,10003,5904, 33569,19740,42027,39605,29885,37843,35373,10406,38114,35373,37428,35594,39605,37843,18337,24002,33095,35372,
42027,35372,39323,35372,26952,35866,42027,42026,17099,26951,26950,42026,37352,4391, 38204,9174, 33898,14091,6749, 33734,28994,2584, 30115,33109,25628,36454,11291,
- 42026,35136,34538,20883,37843,36126,35372,42026,28290,11448,35371,37843,39605,42025,37842,42025,26949,38329,32959,2059, 10183,31491,1760, 6509, 7803, 15420,2955,
+ 42026,35136,34538,20883,37843,36126,35372,42026,28290,11448,35371,37843,39605,42025,37842,42025,26949,38329,32959,2059, 10183,31491,1760, 6509, 7803, 15420,2955,
3140, 27191,10916,18692,15419,19148,35866,42025,39364,35371,27268,1862, 22551,25547,37842,7597, 6670, 20178,3908, 15516,34478,34681,37842,39605,33305,39604,42025,
2100, 16336,36976,34478,42024,37842,28411,15427,1056, 16040,17873,17552,33499,39604,30114,2261, 2801, 2939, 27102,36453,5475, 6860, 6949, 8865, 4829, 9677, 38394,
37841,39604,17305,30438,36616,13748,37841,32223,37894,36453,12446,14800,5243, 35151,39020,42024,16335,3914, 33081,37841,23422,30600,42024,38876,37841,42024,36786,
@@ -17846,12 +17841,12 @@ static const unsigned short Ranks[197839] =
446, 13944,15292,1981, 34477,17888,35467,37840,16758,33698,37945,37018,39603,16473,15190,8040, 1616, 13747,35370,16757,6822, 35000,39603,4957, 38078,42023,36537,
37840,27776,29839,11364,7171, 34009,29052,33487,36453,36452,14026,8148, 9836, 8154, 16535,3930, 14271,18888,8907, 35967,20882,35370,10913,5345, 7984, 4648, 19382,
20177,36452,39603,1026, 4246, 13241,32924,32891,18690,6389, 5698, 37839,10188,38030,25627,2985, 20546,34477,11447,24481,33281,42023,42023,33094,30112,28512,13479,
- 34477,39603,42022,25626,20176,39254,18052,42022,16658,25004,6309, 30239,14559,23606,11359,37105,37144,42022,33636,34615,30306,13269,151, 19147,3690, 19146,567,
+ 34477,39603,42022,25626,20176,39254,18052,42022,16658,25004,6309, 30239,14559,23606,11359,37105,37144,42022,33636,34615,30306,13269,151, 19147,3690, 19146,567,
28316,18336,20536,20545,3814, 13316,23609,21836,7481, 39602,10915,22574,29731,15945,42022,39064,35882,615, 36452,42021,6091, 22477,18365,2849, 17942,42021,35370,
28433,36452,42021,34476,25625,38578,37839,34466,34476,33734,36451,13146,29800,33207,31969,30111,3291, 7084, 12445,17961,36451,6218, 20544,1898, 38562,17001,30303,
37378,27933,16342,9803, 3097, 38652,22649,6806, 8452, 34757,28834,38698,42021,30110,8806, 32347,14776,35491,13268,39399,33094,37839,33734,33463,37975,39602,42020,
- 19511,392, 29539,42020,10011,15906,37839,42020,36623,9462, 723, 19145,34751,3283, 33246,1159, 13600,7885, 7124, 6470, 4560, 11674,38184,33304,12444,38141,4253,
- 36451,29939,15529,15418,24786,1046, 5833, 9151, 13746,795, 16015,11937,702, 39602,635, 24252,36219,21233,37211,21804,16139,25473,28130,3582, 5227, 3165, 2394,
+ 19511,392, 29539,42020,10011,15906,37839,42020,36623,9462, 723, 19145,34751,3283, 33246,1159, 13600,7885, 7124, 6470, 4560, 11674,38184,33304,12444,38141,4253,
+ 36451,29939,15529,15418,24786,1046, 5833, 9151, 13746,795, 16015,11937,702, 39602,635, 24252,36219,21233,37211,21804,16139,25473,28130,3582, 5227, 3165, 2394,
30109,37838,12198,11565,35749,37838,6092, 36966,13713,1107, 26948,18335,37597,4544, 39090,36522,10069,22204,6268, 12944,25624,35370,3521, 20543,30012,21086,28831,
39328,15234,38095,34476,19510,42020,37838,42019,6515, 7691, 39187,20542,32449,1173, 12479,35800,39176,14359,31167,5235, 39317,27225,17000,42019,38929,20833,23015,
7216, 37758,37838,39602,1517, 3489, 17960,17632,33943,8888, 33734,17715,19144,36805,39601,35692,31968,18887,42019,42019,2605, 1162, 29912,33340,2416, 11755,36451,
@@ -17859,11 +17854,11 @@ static const unsigned short Ranks[197839] =
19509,21651,20330,36450,39285,3886, 14775,33094,23421,33069,33896,30108,31303,7390, 35007,33094,32864,34475,42018,33733,37837,34706,226, 31420,27436,4480, 17096,
36221,6768, 12690,14983,7552, 5491, 36721,10765,19143,359, 3553, 5656, 31400,28271,9712, 11570,116, 159, 34143,35746,4440, 29867,9965, 427, 24327,29039,26518,
9413, 27352,33777,13917,20512,24853,4402, 13627,20539,18013,6623, 4401, 343, 42018,36595,35369,12151,21306,22192,5688, 16138,22853,2659, 2345, 37701,11188,13267,
- 613, 3977, 32157,3099, 20957,15443,14270,16999,1384, 4261, 10477,20286,2954, 16711,14497,37837,5527, 38476,2766, 2970, 6789, 4758, 19142,14102,8897, 37723,2039,
+ 613, 3977, 32157,3099, 20957,15443,14270,16999,1384, 4261, 10477,20286,2954, 16711,14497,37837,5527, 38476,2766, 2970, 6789, 4758, 19142,14102,8897, 37723,2039,
10446,31302,8738, 12447,11187,105, 5750, 32836,1625, 9330, 38738,35369,14798,5540, 7802, 39384,11446,800, 6722, 17958,32706,36305,24480,20114,31488,12531,38482,
33372,39601,36248,13745,3353, 6449, 35667,10405,10002,13266,14797,37837,19141,42018,27994,37346,36450,20881,23214,36450,9335, 33733,36920,33733,8017, 10249,37985,
12434,13797,39601,11031,875, 21977,20696,42018,16137,42017,24479,35369,35057,39601,42017,37084,36473,42017,39600,6377, 35653,34475,21116,33093,36210,38056,10404,
- 36395,15557,33733,42017,33732,17927,22607,35452,28432,32617,39600,36450,22476,42016,35328,36449,35792,17821,35209,31627,26548,34284,30053,26976,30107,42016,9412,
+ 36395,15557,33733,42017,33732,17927,22607,35452,28432,32617,39600,36450,22476,42016,35328,36449,35792,17821,35209,31627,26548,34284,30053,26976,30107,42016,9412,
33022,7925, 37836,39600,35369,16998,34475,35368,15613,39229,10461,15864,33093,7493, 33732,33549,32868,18885,37836,33093,34475,39600,16412,37496,26947,42016,37836,
37836,39599,21765,7272, 28822,14019,39599,33269,36449,25623,17334,29209,14774,15083,5563, 34450,34646,35974,39599,42016,22475,33732,808, 32051,8464, 24833,32897,
16334,33093,42015,5270, 7744, 9605, 33982,19981,3645, 30106,33092,42015,39599,13200,12757,29303,22278,39064,25970,34005,23420,4544, 12792,10530,26552,10001,28698,
@@ -17884,14 +17879,14 @@ static const unsigned short Ranks[197839] =
26466,19367,35332,14792,16403,6880, 9901, 33074,32900,19137,4614, 34472,28429,33731,11508,39592,38627,42010,36446,32568,9446, 33046,30664,17989,42010,35367,23418,
20536,37832,39592,9147, 39592,39592,37832,30102,2374, 754, 20779,15505,34166,4217, 8991, 14852,909, 11945,33924,33310,14247,9907, 38894,11838,27372,8405, 14791,
16331,37831,33731,33090,37398,37831,39591,28428,34472,29427,39591,2499, 12837,42010,42010,35366,36446,18822,20149,38219,25268,38319,9676, 16134,39591,3687, 37892,
- 38584,42009,33731,38686,26942,39591,23417,33280,9892, 30101,16330,33730,11381,32950,39590,17667,37831,42009,42009,16329,345, 8690, 10473,33514,18872,3466, 6272,
- 34764,34365,19506,17955,42009,1884, 7609, 663, 36143,17029,36682,37831,38830,24476,33090,28427,34780,15658,34283,42008,42008,30100,30951,18332,665, 3867, 8691,
+ 38584,42009,33731,38686,26942,39591,23417,33280,9892, 30101,16330,33730,11381,32950,39590,17667,37831,42009,42009,16329,345, 8690, 10473,33514,18872,3466, 6272,
+ 34764,34365,19506,17955,42009,1884, 7609, 663, 36143,17029,36682,37831,38830,24476,33090,28427,34780,15658,34283,42008,42008,30100,30951,18332,665, 3867, 8691,
31966,23416,21649,42008,12342,35059,37415,34472,19886,22504,955, 7122, 20535,9999, 37830,42008,28431,26941,34472,10693,2245, 33047,34666,6655, 20534,25621,20533,
33184,263, 3539, 852, 3079, 36773,36845,26530,17885,1002, 27259,39390,30819,39180,33208,26620,26940,8016, 34471,14423,14313,25620,42007,39590,19707,35366,12190,
36446,37188,18758,908, 9411, 32983,24900,30386,38376,22766,24301,27655,31965,10720,37828,2854, 29280,39590,37319,2776, 8557, 22474,33090,37830,750, 35366,34471,
33730,9600, 6266, 36445,26939,5311, 35366,38182,23415,33730,34772,18409,19433,34890,14423,32980,21230,5943, 39590,37830,39589,16404,11691,11289,15905,39589,42007,
14267,1211, 17954,31964,35365,42007,4428, 37897,35994,39243,22567,11618,14266,10914,38156,15416,3797, 36445,6028, 549, 8152, 26076,14790,32449,37830,2181, 32689,
- 14860,1621, 21514,32887,17015,29939,24537,38031,20093,35412,15920,28243,35032,37448,29256,20366,22274,42007,35365,29425,39589,39293,26938,37848,37829,24475,2015,
+ 14860,1621, 21514,32887,17015,29939,24537,38031,20093,35412,15920,28243,35032,37448,29256,20366,22274,42007,35365,29425,39589,39293,26938,37848,37829,24475,2015,
10056,24348,34074,24474,5534, 14422,7257, 17083,34318,42006,9801, 16993,42006,39589,42006,37829,36445,35339,39588,42006,9612, 36842,39588,34349,30909,37536,35688,
23507,30172,35313,34471,34303,36122,37312,19752,37306,35863,32885,36911,13525,7292, 16390,25667,13534,27078,11128,15220,16468,36777,17742,5631, 34841,32957,16874,
30256,16710,23781,6440, 11593,34760,24277,13285,20532,9270, 37842,25491,18301,25304,11755,10905,33008,39588,6055, 9018, 33322,20915,35178,33423,36606,16053,19248,
@@ -17911,19 +17906,19 @@ static const unsigned short Ranks[197839] =
39584,10551,25111,7860, 13261,12313,3766, 10913,39583,25618,33089,42003,2562, 6130, 18668,19134,24343,16774,35199,2651, 7389, 14788,16117,26758,5878, 32956,21505,
6763, 27965,333, 37253,42002,38798,33597,15301,34979,1762, 21149,16726,6807, 17981,5351, 19261,3586, 35806,134, 2271, 34997,26678,10318,34242,6945, 22462,33729,
36443,22472,4400, 36443,33089,38366,9961, 34913,15904,8054, 18330,39583,2839, 12243,24470,16492,23414,35480,20170,8887, 34899,33275,12084,35363,36443,42002,31959,
- 39583,42002,8448, 772, 24290,26279,37826,19133,33207,3281, 1672, 11227,26327,8937, 21798,282, 11473,23443,8620, 21509,10239,7795, 9003, 32800,26944,30797,5292,
+ 39583,42002,8448, 772, 24290,26279,37826,19133,33207,3281, 1672, 11227,26327,8937, 21798,282, 11473,23443,8620, 21509,10239,7795, 9003, 32800,26944,30797,5292,
24657,17750,20387,19424,496, 3643, 17140,27255,11658,28652,14973,15505,19132,7316, 6649, 14944,2408, 22984,24325,8791, 12867,1018, 37826,27113,27385,32910,21806,
12505,25617,36483,22034,20137,29180,16131,4362, 33729,39583,39582,39582,37982,15415,37826,42002,28424,35363,12429,127, 3371, 27578,30400,1792, 7332, 19262,36092,
2309, 7904, 31484,36443,714, 11428,17904,4542, 37111,22471,8505, 3659, 20875,20169,9409, 38469,39582,36188,35514,10117,9213, 23413,23412,24469,42001,36442,33746,
17951,22471,123, 21648,2703, 19131,17447,37789,25616,33728,3956, 10875,23411,39153,33538,20526,11753,1059, 8827, 39303,36948,34469,18329,34469,1921, 38422,22906,
- 1303, 2951, 4335, 24706,19130,1376, 35936,26935,23410,10918,13853,18883,37754,30096,42001,20874,5135, 25567,5415, 16991,25959,16990,37825,26934,14553,39087,2464,
+ 1303, 2951, 4335, 24706,19130,1376, 35936,26935,23410,10918,13853,18883,37754,30096,42001,20874,5135, 25567,5415, 16991,25959,16990,37825,26934,14553,39087,2464,
27799,3604, 15283,6342, 4732, 12172,2193, 6333, 6600, 34468,36631,2994, 37825,35348,15510,3787, 11978,1105, 33110,20332,1532, 39582,36442,36214,22306,39581,10401,
- 23409,38609,37167,37604,30095,36442,6748, 31958,34468,33728,37799,3628, 5463, 2558, 17631,16989,7801, 34928,20525,1286, 11445,22673,33822,36741,19129,37825,4757,
+ 23409,38609,37167,37604,30095,36442,6748, 31958,34468,33728,37799,3628, 5463, 2558, 17631,16989,7801, 34928,20525,1286, 11445,22673,33822,36741,19129,37825,4757,
42001,27895,28683,16037,35365,340, 16227,4891, 7664, 1181, 21285,967, 3535, 16988,21259,28539,29585,11637,19816,36610,15357,25610,42001,35363,42000,37825,35363,
- 8225, 35362,42000,37824,10739,8015, 5942, 42000,19128,4255, 3550, 5489, 7295, 2329, 5198, 6805, 20765,38126,2724, 1417, 467, 715, 42000,41999,39581,36442,1916,
+ 8225, 35362,42000,37824,10739,8015, 5942, 42000,19128,4255, 3550, 5489, 7295, 2329, 5198, 6805, 20765,38126,2724, 1417, 467, 715, 42000,41999,39581,36442,1916,
32799,32470,346, 35641,7325, 1456, 20648,38750,21476,30841,4885, 9084, 33412,14037,38062,25915,34097,35527,37557,10964,32776,2304, 17218,10576,31957,41999,30228,
3049, 5220, 35626,17516,11444,4258, 36441,34156,38357,5496, 33824,34064,28423,6962, 4702, 35362,24828,31956,41999,37824,5422, 15338,14081,33728,41999,34468,37333,
- 33728,35362,30094,15135,3797, 14787,7661, 37675,23652,33202,37860,12097,20589,34427,12842,33915,41998,2836, 16987,33048,12055,9281, 15414,3457, 4685, 9408, 8180,
+ 33728,35362,30094,15135,3797, 14787,7661, 37675,23652,33202,37860,12097,20589,34427,12842,33915,41998,2836, 16987,33048,12055,9281, 15414,3457, 4685, 9408, 8180,
37902,3084, 17944,6050, 25806,23819,13260,39581,19362,12024,18919,37487,39279,36795,33740,7800, 24125,11443,6237, 41998,1657, 16855,16002,41998,38513,41998,27956,
25685,19577,6381, 1372, 16347,2765, 18079,33376,30093,5948, 6162, 12189,26034,34468,14841,7665, 1071, 37563,3444, 11049,35846,35455,39284,25615,28422,37824,34467,
32699,39231,28421,3155, 14420,10211,19127,41997,39581,35021,23408,39580,2420, 5832, 33772,37824,23537,39580,22690,30482,37823,6479, 12578,20524,16130,34467,28420,
@@ -17931,7 +17926,7 @@ static const unsigned short Ranks[197839] =
19124,39580,20523,15413,18328,41996,25614,30092,13198,719, 34584,23866,8737, 36441,41996,16986,10738,12446,9083, 41996,21647,21176,35593,16328,35362,14090,10912,
37519,41996,20070,33156,23546,19629,38019,23557,2165, 7917, 39579,41995,36441,39579,6105, 8681, 7833, 18882,16327,7956, 37804,8736, 16128,20452,17717,41995,15903,
2128, 7430, 7388, 12941,4105, 1585, 34467,37823,2315, 41995,3935, 41995,3549, 38358,41994,16102,9799, 41994,21676,23407,7690, 30546,34887,22521,8594, 21646,10674,
- 39579,39116,1607, 30091,15412,21864,37334,4756, 39579,34467,36602,1413, 32657,7198, 33079,33727,16985,24992,4252, 18881,81, 41994,22470,236, 32845,1693, 5063,
+ 39579,39116,1607, 30091,15412,21864,37334,4756, 39579,34467,36602,1413, 32657,7198, 33079,33727,16985,24992,4252, 18881,81, 41994,22470,236, 32845,1693, 5063,
11314,28054,25245,19294,20329,9357, 31403,19123,34945,36137,11467,32106,2016, 1204, 17945,23361,8532, 32841,16974,4399, 36279,38622,16944,32952,11468,6253, 30085,
10319,24217,15408,31163,34158,27190,20522,22951,284, 38456,23118,18465,11777,39330,18381,32072,30932,35361,41994,36441,30090,38947,15134,32949,28418,28417,39578,
10347,41993,41993,11183,12224,5063, 35361,20873,22469,39578,11727,38258,16755,6001, 35963,34874,37822,11507,41993,33046,36696,16162,6371, 35361,18327,36440,37262,
@@ -17941,104 +17936,104 @@ static const unsigned short Ranks[197839] =
6179, 33305,36302,38939,33727,33092,9452, 41992,27030,41992,28489,19121,11726,37822,19120,39578,35139,41992,31038,34958,35666,20521,10210,8426, 8886, 37582,38642,
13776,26932,3673, 6804, 15411,35784,41992,17638,7533, 30181,37767,26931,33088,9306, 37395,33727,39577,34466,39577,36440,25512,26930,14793,33440,34466,23538,41991,
37218,1274, 1597, 38450,30200,19505,33727,39066,34274,34466,30088,16326,35360,34643,392, 17716,39577,41991,33726,16127,15410,17217,39577,41991,31955,14427,23718,
- 36440,30087,23159,27184,7373, 1288, 34239,3290, 2333, 2539, 12441,2045, 18880,14786,33087,39576,36439,39576,35360,8336, 37979,33726,39576,785, 7121, 7694, 3095,
- 10779,33292,6091, 16982,32864,15379,37682,14344,37858,36669,14771,33087,39576,39129,26935,22591,39575,10247,19389,11182,37051,29628,5062, 14265,5460, 15938,4178,
+ 36440,30087,23159,27184,7373, 1288, 34239,3290, 2333, 2539, 12441,2045, 18880,14786,33087,39576,36439,39576,35360,8336, 37979,33726,39576,785, 7121, 7694, 3095,
+ 10779,33292,6091, 16982,32864,15379,37682,14344,37858,36669,14771,33087,39576,39129,26935,22591,39575,10247,19389,11182,37051,29628,5062, 14265,5460, 15938,4178,
8308, 7210, 11752,10673,3841, 35360,34578,22808,28788,33739,15704,19832,41991,41990,25613,5581, 4217, 13997,16536,18229,20567,784, 12521,19119,17404,12241,32884,
- 24093,4684, 25608,34572,37654,4189, 2689, 23356,4625, 41990,28252,31120,18567,17232,15409,36553,15408,16126,8593, 39258,19118,20520,28373,33205,17216,8179, 5156,
+ 24093,4684, 25608,34572,37654,4189, 2689, 23356,4625, 41990,28252,31120,18567,17232,15409,36553,15408,16126,8593, 39258,19118,20520,28373,33205,17216,8179, 5156,
10918,39575,31954,38228,34462,18427,16937,13549,18804,10303,621, 32826,4621, 9301, 31953,14664,2916, 5623, 20925,25107,38502,13281,6951, 12786,25316,22560,36733,
3782, 27519,3994, 23925,3804, 10676,6535, 7380, 11836,17659,28198,11688,31982,37216,14264,38975,15407,12445,13258,41990,20252,7016, 3122, 18058,25601,12543,27748,
- 33903,36439,28014,37618,31952,4390, 9407, 37822,20519,34960,15432,20518,26613,32536,9244, 38701,31951,38889,23872,22727,37194,16475,7630, 28593,32804,38652,7273,
+ 33903,36439,28014,37618,31952,4390, 9407, 37822,20519,34960,15432,20518,26613,32536,9244, 38701,31951,38889,23872,22727,37194,16475,7630, 28593,32804,38652,7273,
16735,11513,2518, 12494,1286, 9998, 5202, 4476, 7065, 12706,18589,34793,2649, 7964, 6326, 19117,38596,6066, 15628,11866,39070,32926,37491,17860,18187,37821,24536,
35359,14263,1814, 613, 16125,41990,33466,36873,5007, 11249,37821,26929,36439,19227,39575,34465,37821,37821,34465,41989,15504,35359,36439,41989,41989,30086,35359,
38704,9806, 41989,5774, 8592, 11181,19116,22577,39575,32845,11681,20681,30040,36438,12083,18514,3125, 30080,31950,23406,38401,38017,851, 7263, 28049,19905,11036,
27651,38585,14262,4297, 8885, 35487,38805,37820,8053, 8884, 11442,37820,39198,1127, 18539,2321, 1952, 10054,16891,10413,3905, 13512,29074,11261,21153,5720, 37097,
3792, 3629, 22894,14502,9393, 36303,33642,2393, 3904, 34685,37701,7598, 19504,39574,5715, 41988,23405,31261,3321, 34465,7566, 8447, 10672,16124,33894,3993, 19115,
36160,3031, 17960,2520, 4652, 4559, 1601, 1151, 12703,7433, 3097, 24936,20517,33637,22126,6145, 39574,6803, 13740,7799, 13257,37958,37713,10374,34896,33620,14411,
- 23868,8052, 24478,36397,3289, 33726,33966,19358,795, 33726,22468,32590,3380, 32932,15766,31819,37416,11547,7491, 34175,34497,32984,33087,28598,1643, 6802, 5589,
+ 23868,8052, 24478,36397,3289, 33726,33966,19358,795, 33726,22468,32590,3380, 32932,15766,31819,37416,11547,7491, 34175,34497,32984,33087,28598,1643, 6802, 5589,
19114,12082,2867, 9997, 24556,6771, 35840,25329,38608,1145, 34695,305, 9603, 2993, 6253, 821, 3794, 7953, 3907, 4662, 1571, 33725,2767, 35271,30625,24148,16981,
2803, 2146, 13739,6317, 5533, 20516,19113,20872,33087,34465,41988,15533,5480, 3757, 31694,2929, 191, 39069,9406, 1413, 3658, 17875,6433, 13886,13799,37820,36438,
15133,35852,15902,1529, 41988,41988,33725,34464,6496, 18497,36704,24038,655, 19112,27236,37193,17787,3485, 37820,29489,20515,6514, 17215,36438,3156, 16349,10737,
1951, 18326,14089,12444,14088,984, 5459, 5491, 4081, 28950,35493,13083,11106,31949,30085,28416,36553,37819,39169,18325,33086,18324,5655, 20253,2862, 36438,41987,
- 41987,2298, 320, 11961,39301,35577,11105,21644,27742,14419,4063, 3513, 5566, 33144,13256,14856,15797,5773, 33763,20871,29038,35247,32588,22467,22000,32065,885,
+ 41987,2298, 320, 11961,39301,35577,11105,21644,27742,14419,4063, 3513, 5566, 33144,13256,14856,15797,5773, 33763,20871,29038,35247,32588,22467,22000,32065,885,
22577,2764, 13544,19373,1374, 5630, 8591, 7597, 38151,23541,5831, 33392,33348,11235,33725,33086,22142,9198, 33046,17950,18740,22466,4398, 5168, 37819,211, 13908,
- 14531,15294,10214,11966,41987,6271, 6035, 41987,28415,39574,37819,13197,33535,15132,6090, 7101, 6735, 16980,6924, 4977, 25612,11965,1386, 25937,16979,3127, 3996,
- 3443, 10607,33725,5980, 26467,41986,39574,28414,34691,4780, 17984,36526,10911,30296,537, 579, 20514,24468,20168,5533, 41986,18229,11441,39573,14770,2327, 3509,
+ 14531,15294,10214,11966,41987,6271, 6035, 41987,28415,39574,37819,13197,33535,15132,6090, 7101, 6735, 16980,6924, 4977, 25612,11965,1386, 25937,16979,3127, 3996,
+ 3443, 10607,33725,5980, 26467,41986,39574,28414,34691,4780, 17984,36526,10911,30296,537, 579, 20514,24468,20168,5533, 41986,18229,11441,39573,14770,2327, 3509,
17949,36437,15406,39573,13738,25500,35359,35358,20870,39573,8499, 36437,30259,37112,39573,41986,16754,41986,41985,36437,31647,22465,72, 21821,6801, 4311, 17715,
2503, 30500,10209,36437,2988, 16753,1142, 7201, 3373, 19111,6820, 38917,11751,11750,5227, 1582, 28809,20167,14785,6206, 16123,2897, 18879,33724,37819,39218,12698,
14879,9805, 11440,37818,41985,41985,31948,39572,17214,33724,33086,1755, 7014, 10671,32857,6074, 8805, 12036,3188, 29681,2621, 30084,39572,20513,41985,20166,39572,
34604,10417,33433,10246,33086,15131,8172, 30083,13439,6950, 35171,9488, 879, 546, 26633,9344, 9691, 15215,13255,15543,799, 8993, 28413,11104,10208,16523,37155,
11315,5890, 37464,23767,11764,10361,6524, 14132,21020,25611,20414,4169, 20480,34754,7171, 10400,8735, 20259,19970,11749,39266,28646,37800,41984,37818,16978,11067,
34793,37214,1706, 24774,7708, 178, 4994, 24902,18605,26069,31037,39046,7722, 24383,1357, 5943, 28109,59, 6258, 32570,8837, 22842,9602, 7439, 3431, 41984,36436,
- 28869,18014,1091, 34439,13229,6116, 5532, 8789, 34258,15503,12139,38428,24162,2216, 16122,2045, 33724,41984,8014, 6686, 28412,1894, 3536, 36436,33724,41984,9804,
+ 28869,18014,1091, 34439,13229,6116, 5532, 8789, 34258,15503,12139,38428,24162,2216, 16122,2045, 33724,41984,8014, 6686, 28412,1894, 3536, 36436,33724,41984,9804,
37941,1864, 34483,2107, 33161,1594, 15786,8249, 2769, 20204,19010,35164,15210,10670,20512,1996, 19503,37818,14769,12940,19110,39572,39571,34464,16121,36436,41983,
- 14418,36436,14768,28730,36764,591, 18422,39571,31178,17616,35275,3254, 38093,35536,15405,24928,19109,2031, 8051, 4781, 30519,17714,25538,3136, 8752, 268, 8680,
+ 14418,36436,14768,28730,36764,591, 18422,39571,31178,17616,35275,3254, 38093,35536,15405,24928,19109,2031, 8051, 4781, 30519,17714,25538,3136, 8752, 268, 8680,
30666,33217,36435,9288, 26067,22968,20660,41983,37818,683, 22752,1815, 1959, 5932, 12841,2713, 23099,14097,10669,32026,1090, 41983,41983,31947,1351, 22995,24490,
14087,15901,33085,41982,22018,19561,1653, 27429,37817,7180, 34449,377, 4391, 23280,9629, 28946,13116,3227, 11439,38332,12108,19859,8511, 33508,17009,38709,39571,
27758,1292, 28578,32628,7916, 13775,2778, 5414, 4731, 23404,31946,5376, 1777, 12782,35492,6970, 886, 10019,35646,3857, 41982,10973,20380,37817,1076, 6014, 30632,
- 36435,12840,33715,23403,10207,10668,15284,11679,3434, 5690, 232, 24467,12440,3432, 16977,39242,5242, 20511,31029,18341,16412,5996, 13737,11438,38553,37013,220,
- 14784,28858,6692, 9081, 569, 25360,4759, 33036,35358,33250,33085,41982,8128, 38699,1695, 3121, 2163, 3454, 6034, 3638, 3813, 34464,35961,39018,437, 28421,5356,
+ 36435,12840,33715,23403,10207,10668,15284,11679,3434, 5690, 232, 24467,12440,3432, 16977,39242,5242, 20511,31029,18341,16412,5996, 13737,11438,38553,37013,220,
+ 14784,28858,6692, 9081, 569, 25360,4759, 33036,35358,33250,33085,41982,8128, 38699,1695, 3121, 2163, 3454, 6034, 3638, 3813, 34464,35961,39018,437, 28421,5356,
1991, 2079, 5565, 17948,13039,4682, 6255, 41982,41981,9269, 24466,16325,41981,19502,35358,11437,3714, 11566,15948,5970, 16120,19108,20510,34846,36435,34919,27566,
- 14767,22527,17947,12839,16976,19107,16119,41981,9268, 11748,888, 39062,20958,13254,11549,8065, 19571,37547,12439,39571,11747,13253,27136,8734, 37432,18105,1546,
- 15203,34464,28436,35621,36992,35126,38247,931, 275, 837, 33735,38015,2110, 2263, 1452, 967, 18012,261, 1605, 4063, 36651,5647, 751, 22464,37817,39570,5885,
+ 14767,22527,17947,12839,16976,19107,16119,41981,9268, 11748,888, 39062,20958,13254,11549,8065, 19571,37547,12439,39571,11747,13253,27136,8734, 37432,18105,1546,
+ 15203,34464,28436,35621,36992,35126,38247,931, 275, 837, 33735,38015,2110, 2263, 1452, 967, 18012,261, 1605, 4063, 36651,5647, 751, 22464,37817,39570,5885,
5478, 37886,41981,18393,38563,15404,41980,25207,14920,13252,11451,25565,25401,3459, 308, 10444,35531,4447, 2762, 27595,7973, 13075,566, 21620,4579, 8107, 20251,
41980,24465,36098,20165,2546, 9170, 9574, 27601,2133, 11288,31201,6599, 12748,1690, 11355,5511, 29229,19884,34543,28246,3781, 12188,4848, 9996, 34886,34253,14783,
26504,18750,39570,13291,24611,11448,20493,39341,28023,41980,5241, 33431,30311,277, 37945,18466,16612,13261,21135,1262, 4560, 7557, 9476, 2643, 1367, 625, 31841,
30556,1631, 4586, 7937, 9405, 5214, 22244,2029, 7270, 15884,35815,25610,8151, 3854, 9116, 4809, 37752,15582,20489,29807,8852, 39570,29071,37817,37816,328, 19588,
4306, 9608, 12111,7520, 5316, 35023,7490, 9224, 7032, 13757,865, 30838,38950,37816,24983,25184,39570,15564,9803, 41980,37816,41979,28690,32758,33828,33685,15323,
17113,28118,25393,34465,7139, 35583,4202, 27470,14392,30264,27893,9246, 10443,32521,5826, 16118,1473, 32656,10130,35992,41979,11675,12715,3947, 956, 5087, 41979,
- 25760,15403,343, 762, 1972, 3241, 29301,8399, 29530,12591,24233,10667,1580, 934, 5650, 8972, 4858, 2549, 1265, 26994,3635, 5126, 37595,8883, 3596, 19106,5994,
+ 25760,15403,343, 762, 1972, 3241, 29301,8399, 29530,12591,24233,10667,1580, 934, 5650, 8972, 4858, 2549, 1265, 26994,3635, 5126, 37595,8883, 3596, 19106,5994,
5922, 15241,13736,33031,9623, 35515,21412,16614,39569,5251, 20712,20276,17772,34393,34353,28712,33723,16372,31424,29657,10967,3934, 3138, 33295,26045,34749,16117,
8482, 37816,5941, 5695, 19187,39569,889, 19105,12081,38333,36660,10459,5629, 3704, 27246,38085,35113,12338,11981,26642,15595,6971, 37958,6144, 12884,10430,24334,
6505, 5874, 10173,20730,33992,14782,1706, 2569, 1307, 636, 11725,7291, 4713, 14781,38120,39011,2781, 24113,33085,41979,37403,13099,8986, 37815,35358,19104,30941,
19392,38833,7603, 6571, 3821, 4971, 20911,18121,23695,26589,19103,7544, 2099, 3507, 1968, 882, 6126, 4062, 3576, 19604,20509,16975,11564,28332,15502,17946,26928,
- 19102,30082,38212,5559, 8440, 12653,35041,17945,35246,5588, 4361, 5630, 31808,30308,37432,36997,27040,5344, 20508,41978,23136,34463,41978,16974,22506,36130,4623,
+ 19102,30082,38212,5559, 8440, 12653,35041,17945,35246,5588, 4361, 5630, 31808,30308,37432,36997,27040,5344, 20508,41978,23136,34463,41978,16974,22506,36130,4623,
4281, 6217, 7290, 3548, 11162,4961, 16973,7096, 38287,29047,41978,34471,36691,41978,24464,10910,37633,35033,26656,37815,36852,31945,4098, 38181,18389,6428, 18177,
- 17722,5940, 16116,32923,5498, 10685,31944,15130,35309,5124, 8932, 6542, 41977,3453, 12846,32994,36296,8795, 34920,36275,34280,24533,13735,26618,3903, 8048, 5518,
- 7310, 15645,32863,22707,39229,28254,38130,3850, 7823, 39363,39569,30081,41977,39569,33554,32691,33706,15919,22901,22431,527, 1866, 20507,30393,19101,1302, 1072,
- 26168,21115,10482,2303, 4384, 7487, 34068,12838,5495, 9404, 35718,27913,1603, 35073,2877, 36087,34295,26478,37798,30201,33675,2378, 2710, 10705,6558, 20506,5945,
+ 17722,5940, 16116,32923,5498, 10685,31944,15130,35309,5124, 8932, 6542, 41977,3453, 12846,32994,36296,8795, 34920,36275,34280,24533,13735,26618,3903, 8048, 5518,
+ 7310, 15645,32863,22707,39229,28254,38130,3850, 7823, 39363,39569,30081,41977,39569,33554,32691,33706,15919,22901,22431,527, 1866, 20507,30393,19101,1302, 1072,
+ 26168,21115,10482,2303, 4384, 7487, 34068,12838,5495, 9404, 35718,27913,1603, 35073,2877, 36087,34295,26478,37798,30201,33675,2378, 2710, 10705,6558, 20506,5945,
23393,4634, 7031, 11746,2742, 1642, 31943,39420,20164,41977,36435,33874,5495, 3098, 6024, 33774,5006, 34690,37699,12352,20089,18854,8274, 24164,3115, 6878, 23444,
- 21226,26399,25427,34060,11053,24270,35103,29073,12242,29766,33581,20869,34463,37815,31942,647, 11745,12837,19100,27041,7596, 37815,4969, 24463,14261,10245,6621,
- 32808,32906,36697,26927,19099,39568,604, 35357,1461, 2409, 6588, 14417,7469, 5310, 23402,41977,18878,8804, 41976,15402,6800, 10836,2323, 544, 509, 17871,4131,
+ 21226,26399,25427,34060,11053,24270,35103,29073,12242,29766,33581,20869,34463,37815,31942,647, 11745,12837,19100,27041,7596, 37815,4969, 24463,14261,10245,6621,
+ 32808,32906,36697,26927,19099,39568,604, 35357,1461, 2409, 6588, 14417,7469, 5310, 23402,41977,18878,8804, 41976,15402,6800, 10836,2323, 544, 509, 17871,4131,
2847, 19649,3770, 3939, 750, 32413,27428,1140, 5311, 379, 2153, 19666,27019,1373, 22414,34979,37814,33723,3253, 41976,41976,37814,3281, 4001, 16843,33094,19300,
3091, 21340,20816,36434,13686,35024,9995, 11744,7595, 37906,4813, 6447, 25563,8050, 17944,41976,3320, 38624,41975,33085,22463,33723,15900,9952, 8882, 3859, 32816,
11180,31941,21643,23817,20227,13462,26042,3699, 16115,2856, 37529,4729, 28787,36434,35357,34463,39568,8178, 10736,1496, 31940,7197, 34463,15247,39385,17943,34659,
- 11103,35357,12836,970, 35357,41975,30080,1878, 37814,14676,39568,33084,31939,543, 41975,19501,33723,8177, 36434,34597,11964,36780,24462,12438,35356,19098,9960,
+ 11103,35357,12836,970, 35357,41975,30080,1878, 37814,14676,39568,33084,31939,543, 41975,19501,33723,8177, 36434,34597,11964,36780,24462,12438,35356,19098,9960,
16986,38943,34917,30079,28411,34462,37814,39568,33084,3534, 3688, 14772,37813,38363,37064,34635,35356,36434,36433,37813,31938,37813,21907,34273,39567,3207, 41975,
9802, 25609,41974,31937,6799, 38134,928, 37813,35356,39567,33184,39567,33084,30448,17861,34862,41974,37812,36479,35356,39567,41974,21642,12697,39566,34462,34462,
35687,37265,16338,38223,34336,38206,31703,15620,14046,13262,15313,24293,33673,33921,30204,25997,30783,28003,35166,21391,35406,35323,18531,18123,17763,23308,34756,
27973,22106,29688,22403,23456,24911,38777,26004,21251,22022,26315,38351,38334,35352,37863,37941,30745,27673,26650,28456,33477,18469,16650,17923,15781,20056,35768,
- 33200,34268,31781,33732,35282,36400,35823,36907,36650,38356,35294,35032,35112,34920,35319,39374,38614,9931, 14741,20526,9947, 18046,10666,20505,39566,24235,6809,
+ 33200,34268,31781,33732,35282,36400,35823,36907,36650,38356,35294,35032,35112,34920,35319,39374,38614,9931, 14741,20526,9947, 18046,10666,20505,39566,24235,6809,
34596,36883,37710,20033,4923, 31365,12790,38236,34508,25043,34501,38687,7777, 34143,23067,26167,41974,35468,23600,37544,19430,38444,14916,36493,19027,39566,25167,
32369,18701,38808,12835,3794, 14267,33396,41973,41973,21474,3059, 23998,5772, 4125, 23257,6562, 36988,3559, 1897, 6270, 6446, 2457, 25449,14260,10665,9500, 10403,
634, 10307,32915,32567,20240,11339,19312,36627,14170,34571,19097,9994, 35519,20504,36186,37974,39168,19630,2982, 8733, 5281, 8587, 2362, 32507,37445,4588, 12437,
25991,19096,32753,39217,11743,38472,7798, 20931,15401,37890,16972,38405,10622,3038, 19095,34781,30430,38499,15386,38435,7120, 21641,34133,17713,34176,41973,39566,
16363,38548,20503,21680,29406,28945,24545,36241,34554,12826,14689,25357,15004,17816,8164, 35355,17203,38654,14971,14766,3887, 23469,5984, 8176, 30910,17942,12080,
- 34087,144, 36009,23668,19094,26559,1246, 1477, 37783,32367,15088,38811,8175, 36602,2699, 18879,8310, 29721,2411, 33405,33317,33188,3549, 205, 2284, 3358, 4139,
+ 34087,144, 36009,23668,19094,26559,1246, 1477, 37783,32367,15088,38811,8175, 36602,2699, 18879,8310, 29721,2411, 33405,33317,33188,3549, 205, 2284, 3358, 4139,
1434, 15431,30610,32796,7905, 33722,12256,34462,15129,26926,36433,24461,13502,10575,16971,39565,37432,36433,20163,37812,39565,5771, 10442,20502,41973,852, 31936,
30789,37812,28352,3021, 32371,2657, 27207,20501,5312, 7075, 7489, 41972,13845,22265,20500,34461,30194,33885,21225,27631,9444, 6656, 23319,16114,16970,35355,33084,
- 37812,41972,2766, 8462, 23401,39565,1802, 27109,14690,37811,21640,35355,39393,4161, 39388,29066,9080, 39565,41972,6620, 39564,3952, 23400,37811,12436,34281,5689,
+ 37812,41972,2766, 8462, 23401,39565,1802, 27109,14690,37811,21640,35355,39393,4161, 39388,29066,9080, 39565,41972,6620, 39564,3952, 23400,37811,12436,34281,5689,
3609, 23959,4868, 5147, 36140,24047,39564,33722,9194, 613, 23486,21639,30078,5947, 12939,33083,5857, 18031,19467,8881, 36433,41972,41971,41971,37811,39564,37811,
10912,33149,29311,41971,10854,39564,36363,35355,20162,28545,34641,3793, 10909,36661,27284,20499,9079, 21124,10454,25608,11696,19003,31381,34826,31935,33701,35354,
6948, 31934,37810,35354,39563,36432,39563,37810,33944,36432,16752,2797, 33517,6553, 30077,34461,36432,34461,544, 33083,33722,36432,28410,41971,35499,895, 35354,
2203, 34461,11682,3505, 28238,1868, 37810,39563,9993, 1320, 12585,10574,25607,10329,36311,36431,39563,20498,2906, 9031, 20517,41970,34460,7861, 12802,37486,26925,
5628, 37808,8653, 36276,35478,38969,37597,15501,3419, 32861,15400,36603,37671,1837, 18838,9713, 16324,33551,36431,30559,37810,37809,31994,34460,6058, 35069,34460,
- 41970,7586, 34460,18119,28056,11436,27648,33428,8007, 16969,16113,34459,21638,2894, 4631, 5256, 34459,5146, 17941,4080, 32804,28046,19662,371, 3796, 23409,3722,
+ 41970,7586, 34460,18119,28056,11436,27648,33428,8007, 16969,16113,34459,21638,2894, 4631, 5256, 34459,5146, 17941,4080, 32804,28046,19662,371, 3796, 23409,3722,
4990, 6143, 25219,35596,38555,7045, 31913,1595, 19093,3658, 38209,5494, 36435,4194, 10908,9992, 33628,38317,9797, 13734,14512,14020,7119, 10441,34585,37716,27260,
- 16803,16068,41970,20868,6267, 20611,15128,16968,33193,19152,14251,41970,2225, 10907,2731, 1325, 12834,4235, 2156, 11086,20497,11134,35354,3376, 6593, 23746,2293,
+ 16803,16068,41970,20868,6267, 20611,15128,16968,33193,19152,14251,41970,2225, 10907,2731, 1325, 12834,4235, 2156, 11086,20497,11134,35354,3376, 6593, 23746,2293,
6724, 5172, 13177,1745, 22564,1265, 6216, 20932,14742,36573,22092,12079,6117, 21109,9699, 18160,36567,23568,8340, 26647,14259,41969,22170,18230,24815,14871,12833,
- 11742,33083,35353,41969,7797, 20100,25330,31244,33542,19490,37425,3858, 2543, 6325, 36431,39562,14042,3338, 9078, 30747,20402,5939, 17102,1878, 36276,33722,1868,
+ 11742,33083,35353,41969,7797, 20100,25330,31244,33542,19490,37425,3858, 2543, 6325, 36431,39562,14042,3338, 9078, 30747,20402,5939, 17102,1878, 36276,33722,1868,
5680, 31118,32496,5423, 8730, 15845,2348, 13445,3030, 33585,33979,11135,38313,19915,34263,33930,41969,10915,36136,26318,19092,39562,1301, 39562,1694, 1065, 15030,
- 16766,6720, 4676, 32956,13478,35353,15500,26924,2821, 21637,2131, 1536, 22523,16967,20496,26734,23288,33078,4175, 33375,16966,9403, 41969,19500,26727,9601, 9600,
+ 16766,6720, 4676, 32956,13478,35353,15500,26924,2821, 21637,2131, 1536, 22523,16967,20496,26734,23288,33078,4175, 33375,16966,9403, 41969,19500,26727,9601, 9600,
15852,10519,18317,14258,10955,9763, 13095,20495,36576,7832, 19270,26867,31271,28820,30496,14416,21636,35286,35558,29963,10553,16965,34399,16203,6033, 39562,26923,
7013, 41968,34596,37809,30076,31601,35180,2453, 39155,29665,38999,37809,36663,5167, 135, 21995,4544, 23935,14276,24250,23583,29407,26000,31801,33032,14304,31933,
- 33385,9238, 11576,24305,22517,1043, 30247,21826,12078,6215, 1758, 38430,11963,32378,14257,16112,28409,1487, 15899,11506,5264, 10906,26922,6620, 33083,35119,9435,
+ 33385,9238, 11576,24305,22517,1043, 30247,21826,12078,6215, 1758, 38430,11963,32378,14257,16112,28409,1487, 15899,11506,5264, 10906,26922,6620, 33083,35119,9435,
2522, 3411, 35103,21282,11717,4296, 3473, 7947, 35497,31932,18323,10399,37809,35353,35353,36431,19091,26921,31177,35031,36428,38980,20867,35109,36013,36430,17940,
- 21635,1448, 37808,4543, 15306,39561,17939,23399,33082,15006,10735,772, 34854,17213,33082,36430,30893,1243, 10005,17938,5133, 13251,1245, 23167,18808,34463,5396,
+ 21635,1448, 37808,4543, 15306,39561,17939,23399,33082,15006,10735,772, 34854,17213,33082,36430,30893,1243, 10005,17938,5133, 13251,1245, 23167,18808,34463,5396,
35674,7091, 7689, 34266,35386,4684, 37131,38874,18322,41968,28408,37950,3780, 15896,3250, 2359, 860, 6614, 25, 578, 20408,19943,23129,3801, 7096, 18345,32844,
- 15250,24927,33070,7355, 24675,24991,1573, 14805,28936,22330,18953,19569,712, 7831, 10333,16461,28693,25378,14250,17628,8983, 16256,29938,9224, 7111, 3283, 1084,
+ 15250,24927,33070,7355, 24675,24991,1573, 14805,28936,22330,18953,19569,712, 7831, 10333,16461,28693,25378,14250,17628,8983, 16256,29938,9224, 7111, 3283, 1084,
14445,35352,6336, 20832,137, 20494,7620, 20161,39561,18716,32783,14893,25322,18200,16523,37808,14815,39237,41968,17712,33713,39561,22462,36947,8391, 2599, 34459,
1317, 10095,32369,31003,23041,33499,12435,1526, 20608,10094,23126,16964,1647, 35750,5167, 692, 41968,8446, 20493,11179,30075,41967,28407,39561,34098,33311,39560,
- 33124,29791,34459,36430,17711,41967,3022, 12077,6214, 13733,27454,31535,19919,36194,20493,11540,12210,26751,36430,31373,34686,8013, 14086,37808,39560,41967,7480,
+ 33124,29791,34459,36430,17711,41967,3022, 12077,6214, 13733,27454,31535,19919,36194,20493,11540,12210,26751,36430,31373,34686,8013, 14086,37808,39560,41967,7480,
34458,38011,36429,41967,16369,41966,32086,41966,36039,17937,13732,12322,11741,25998,39560,14415,1920, 12434,4457, 17513,16682,33614,35660,39560,12887,9146, 30074,
6186, 13793,13258,22461,21418,36531,773, 7846, 25545,12849,16598,16186,8093, 16591,37831,27133,34458,17936,39295,33367,7442, 34938,25212,34262,22770,27524,15399,
21041,28727,16963,12696,32103,41966,30078,15398,35079,36214,24219,36098,18837,38835,35352,41966,33082,23169,17697,39179,37824,34547,1363, 24511,26700,36429,39559,
@@ -18048,80 +18043,80 @@ static const unsigned short Ranks[197839] =
33728,12180,36690,21541,31746,34354,15096,4949, 16178,36725,37618,1158, 19013,19315,1777, 7279, 19096,35500,35557,6784, 37975,21197,721, 20759,8115, 16742,32771,
6517, 27303,19585,15969,30943,28884,7849, 9857, 15698,17263,19532,8539, 848, 27157,22052,19118,27374,14332,4280, 31, 3016, 24803,2483, 839, 21624,23437,31886,
26815,18807,1306, 239, 7308, 16711,3602, 1681, 8540, 25701,19529,4976, 14116,19797,21530,13018,226, 15324,8656, 6818, 19680,11294,32322,24871,10488,1138, 25249,
- 9955, 3044, 21255,11451,14200,12716,16421,29229,14604,10684,39140,33015,35861,5688, 15310,14821,6537, 2291, 3442, 20147,3205, 36484,36275,25442,33602,35297,6443,
+ 9955, 3044, 21255,11451,14200,12716,16421,29229,14604,10684,39140,33015,35861,5688, 15310,14821,6537, 2291, 3442, 20147,3205, 36484,36275,25442,33602,35297,6443,
38968,3105, 16362,16168,3312, 35682,23075,19287,19888,14208,28025,6819, 17508,14772,11305,29248,31347,20398,6688, 13170,12611,12651,30612,720, 14360,29485,25771,
22819,9948, 3829, 9933, 12580,29183,27279,5098, 14286,6260, 19443,19719,16315,17138,28282,25530,11900,14699,32050,25353,37807,7101, 3695, 7743, 24394,28003,38152,
14780,7376, 6619, 39559,41965,28020,10792,36923,22179,9796, 20492,35532,34876,10162,26459,37446,29527,36297,34101,18226,37713,36143,37044,35675,11337,26981,33300,
33474,36086,34616,38004,39559,41964,35352,15792,13731,25156,6032, 26920,11435,33082,31762,30073,5884, 24460,20491,38054,6444, 13164,13244,6989, 33081,6616, 38433,
- 9223, 29836,14779,38180,19415,31931,19499,41964,35730,2664, 5317, 1593, 6341, 6997, 5938, 2681, 1966, 10231,28411,3456, 880, 11581,37807,36429,2130, 15397,9392,
+ 9223, 29836,14779,38180,19415,31931,19499,41964,35730,2664, 5317, 1593, 6341, 6997, 5938, 2681, 1966, 10231,28411,3456, 880, 11581,37807,36429,2130, 15397,9392,
39559,41964,3015, 37354,31930,36706,12433,34458,30072,37081,11962,11142,37807,41964,23398,17658,6802, 30788,39558,23017,8732, 35661,19794,17466,33593,32899,36508,
15922,31026,7184, 26349,4292, 4182, 18880,28626,33817,2583, 15496,30017,30839,35212,20866,5539, 14256,34458,23053,11441,17468,2048, 33721,6798, 19090,20490,41963,
- 31428,18833,36348,13176,9054, 4877, 14900,36627,7594, 36429,41963,1139, 2972, 11879,30060,16093,10201,35908,4988, 34427,4749, 1788, 3627, 10911,10196,2735, 3536,
+ 31428,18833,36348,13176,9054, 4877, 14900,36627,7594, 36429,41963,1139, 2972, 11879,30060,16093,10201,35908,4988, 34427,4749, 1788, 3627, 10911,10196,2735, 3536,
13202,34237,26960,41963,41963,17428,30071,41962,2698, 27635,19400,4475, 33291,41962,33461,19894,17710,41962,6603, 29913,16962,12443,35352,24996,13749,27603,25767,
31929,32956,34145,36428,21039,35214,41962,20243,7831, 33081,2412, 17980,25606,31928,38337,34457,7970, 39558,11285,20771,33481,34289,33143,34971,35415,36292,25390,
3076, 30070,39558,28558,35351,8049, 26087,1578, 33688,11951,36715,20161,35922,41961,9654, 33801,15396,35351,691, 6581, 28405,25420,21397,13682,37026,37114,15898,
1927, 2718, 24637,30869,38312,34116,37264,35711,1725, 37523,29948,34996,16160,26439,19740,26802,4473, 12832,29894,28404,20489,35351,37807,13811,36428,16961,26220,
16960,17935,16323,33136,35300,41961,20488,35013,29360,35351,39558,484, 33535,41961,28403,32967,33721,41961,9962, 16959,16787,37806,29784,39557,29035,11442,41960,
26919,41960,37645,16322,39557,30069,8936, 34928,20487,4832, 8461, 14765,17709,24459,37676,3194, 7589, 348, 5413, 3394, 1951, 10440,21605,507, 38191,27814,14219,
- 17934,15068,41960,11302,33562,35197,10038,37134,35174,20474,28632,7915, 41960,2071, 34457,41959,9522, 36428,2113, 38420,12076,34049,41959,9077, 20486,41959,727,
+ 17934,15068,41960,11302,33562,35197,10038,37134,35174,20474,28632,7915, 41960,2071, 34457,41959,9522, 36428,2113, 38420,12076,34049,41959,9077, 20486,41959,727,
11684,33081,14698,37146,35842,3523, 8307, 6378, 30068,927, 32934,39557,15041,8880, 37806,14493,12317,25433,30324,5687, 41959,29431,35350,34457,41958,19089,15395,
34026,670, 20831,8879, 38465,23848,2905, 33038,39557,34099,18877,21634,2219, 39556,10573,7479, 19498,33663,27858,19081,37806,5490, 31927,34457,41958,13774,41958,
3913, 39556,35350,39556,35350,39556,17212,39555,41958,33610,27521,32872,6797, 36589,36597,19088,19087,34456,4334, 34456,32372,13196,36428,35062,18876,9076, 39555,
- 31317,39555,35350,22810,571, 37657,21550,33721,17933,35349,3713, 21633,39555,37806,41957,365, 30470,41957,36427,13477,22460,25591,31926,36574,1027, 3570, 8556,
+ 31317,39555,35350,22810,571, 37657,21550,33721,17933,35349,3713, 21633,39555,37806,41957,365, 30470,41957,36427,13477,22460,25591,31926,36574,1027, 3570, 8556,
20160,27667,15127,1136, 14414,41957,2144, 39554,41957,37805,35065,39554,34456,30160,21632,1130, 21631,34040,16958,35380,8182, 37026,35971,830, 15499,512, 36427,
19086,35123,13730,14617,33081,35349,34849,21255,16111,29031,41956,41956,33080,31836,36427,39235,39554,26918,23740,36907,10734,5263, 35763,9795, 8731, 9540, 11102,
1919, 10572,27528,31925,12695,805, 406, 41956,35349,41956,33634,10900,5727, 7196, 16957,16956,3206, 41955,41955,41955,15394,11740,31924,41955,8174, 27846,12287,
3030, 6324, 34456,10439,16110,33046,36365,11178,19085,27440,37790,39554,4755, 20501,33301,14255,30560,13773,30197,10206,34445,10862,34455,7192, 7843, 11990,10492,
10898,2481, 3148, 5719, 19084,11498,34263,6949, 18562,8169, 27051,38509,33721,7797, 23805,27793,17729,38820,37261,35501,20120,37100,3072, 36620,17826,11753,25626,
- 6594, 12589,17920,30060,28742,14846,229, 18152,27988,7894, 10536,26583,24268,20879,501, 32774,25536,18848,22697,11448,4067, 15281,5349, 23124,9988, 14901,517,
+ 6594, 12589,17920,30060,28742,14846,229, 18152,27988,7894, 10536,26583,24268,20879,501, 32774,25536,18848,22697,11448,4067, 15281,5349, 23124,9988, 14901,517,
24297,15445,3207, 18850,6257, 442, 12351,33077,6023, 12823,4774, 7120, 8339, 13934,19417,29204,338, 23630,9720, 27027,3980, 25273,2390, 139, 13303,10520,28182,
19447,1524, 5967, 10091,325, 2337, 9066, 1674, 17898,3902, 4991, 17991,16870,27617,10125,29606,25553,23282,4, 30091,10668,22047,17673,25943,387, 15805,27579,
- 3837, 18094,492, 220, 2497, 1264, 1858, 12497,6307, 8243, 16349,11487,10370,18832,17164,26338,15480,18619,28406,12966,33024,12084,12450,16826,18630,4199, 8857,
+ 3837, 18094,492, 220, 2497, 1264, 1858, 12497,6307, 8243, 16349,11487,10370,18832,17164,26338,15480,18619,28406,12966,33024,12084,12450,16826,18630,4199, 8857,
8816, 7544, 26057,27317,15469,16567,7845, 28071,20545,18222,10043,432, 12079,26884,12244,264, 31649,1848, 22, 14538,25158,29392,13916,26472,24294,13174,23881,
1541, 23756,9290, 24558,11830,30616,24419,15471,9304, 32828,24971,16262,19085,20060,19466,33829,33681,33041,36208,36085,23379,36968,36397,35862,37840,10904,14110,
23138,17350,13839,5798, 8729, 2377, 13393,18408,8234, 23837,22848,6557, 11505,33255,7768, 39093,36358,35474,12938,36510,14413,34639,33398,22459,36324,34455,14412,
38090,41954,20160,19083,39553,20485,35349,34455,16549,17148,7256, 37843,28923,34673,32457,41954,2719, 26155,11386,10979,8351, 171, 5901, 32093,24869,28868,17781,
5468, 15293,4923, 6556, 41954,41954,39553,32876,35348,39553,37805,34455,41953,31923,33720,37805,8224, 37805,41953,20601,34917,7593, 7170, 39553,7388, 35348,13832,
28760,18708,35348,30067,7100, 32048,41953,41953,39552,37804,34561,24458,37804,8012, 20159,2726, 39388,24457,41952,39552,20865,24456,41952,4573, 39256,20864,39552,
- 35348,20863,10272,14254,373, 1070, 26723,22289,16193,6056, 38305,4837, 37804,22578,8595, 19385,32035,29080,32868,35251,2626, 6624, 27057,6486, 1490, 25367,869,
+ 35348,20863,10272,14254,373, 1070, 26723,22289,16193,6056, 38305,4837, 37804,22578,8595, 19385,32035,29080,32868,35251,2626, 6624, 27057,6486, 1490, 25367,869,
9688, 31891,14085,8102, 20158,2229, 38013,392, 21994,3197, 39552,10441,1029, 79, 33031,2911, 22361,32712,2188, 2058, 582, 24455,37804,19932,33542,34454,16815,
37617,1619, 10437,30369,17211,37803,20484,39551,4516, 443, 17370,30066,41952,5204, 4812, 20483,39551,41952,3021, 36608,13250,12937,4653, 16955,8048, 11434,37803,
20862,34454,8878, 5040, 26917,41951,39551,9402, 20861,37633,8716, 1750, 9075, 8877, 34209,14778,21630,41951,24454,33720,36427,11035,13772,14236,30065,31922,37880,
37624,1463, 7181, 30177,11217,33720,37904,5761, 4922, 35770,25605,35347,39551,39550,41951,30064,18875,36426,41951,26440,39550,13476,37803,5489, 34454,39550,33578,
- 5655, 1820, 41950,37841,1958, 10803,25118,25468,38495,6015, 18662,24059,20482,38038,9883, 32466,7030, 32618,19099,13945,28840,13754,21772,2902, 38327,20569,7688,
+ 5655, 1820, 41950,37841,1958, 10803,25118,25468,38495,6015, 18662,24059,20482,38038,9883, 32466,7030, 32618,19099,13945,28840,13754,21772,2902, 38327,20569,7688,
20939,33008,2459, 20150,17925,33913,33694,8848, 8054, 24453,19497,22458,36426,39550,41950,18321,18438,35347,20860,285, 7925, 28554,5412, 15979,15678,9794, 37854,
34634,36530,28687,3516, 3898, 31283,32910,37151,18583,15393,37002,8876, 11914,36342,32291,38113,35161,38690,8173, 34725,39388,20348,11739,19082,39549,19081,30115,
7687, 15217,4611, 25133,8342, 23397,33720,10093,41950,23396,36426,41950,14634,21270,36355,20157,22203,23112,33755,18874,17899,36956,34355,35347,26205,17338,39549,
36426,16751,33160,38906,41949,16139,33127,37771,18320,37803,33719,35513,5039, 17097,33719,39549,37802,5902, 31784,34818,37802,28402,36425,34454,25642,41949,39549,
41949,20481,29532,37802,35536,33080,19125,41949,36134,708, 2389, 39548,30379,20823,41948,39548,31300,4862, 3262, 39548,41948,37802,34453,34453,41948,38916,34453,
2449, 33102,10364,197, 1069, 29377,39548,32155,41948,24280,37801,28401,37801,34453,745, 41947,14777,41947,13771,12936,23568,12102,20272,3396, 33719,13249,22457,
- 9991, 9539, 39547,39547,16537,33719,35471,14192,33861,39547,33228,34123,4630, 15498,11433,14411,12432,15720,41947,36425,3455, 13236,30063,33718,20387,34824,2896,
+ 9991, 9539, 39547,39547,16537,33719,35471,14192,33861,39547,33228,34123,4630, 15498,11433,14411,12432,15720,41947,36425,3455, 13236,30063,33718,20387,34824,2896,
33718,36425,21712,28400,35347,14606,2594, 16083,30062,6057, 32083,17932,35043,8730, 9243, 32244,36280,8875, 30061,10244,34844,35852,24795,32797,20606,36425,33228,
37441,39373,8460, 4079, 35083,24452,21424,1519, 24451,9675, 41947,8812, 35743,8128, 1535, 33925,36424,39092,21629,17708,26916,34452,37327,6213, 1755, 14847,14899,
41946,2762, 41946,41946,9539, 37351,39547,37801,31528,6142, 33625,19496,24625,37801,39546,41946,11107,35742,16321,19080,37800,36152,20480,33486,41945,13614,33851,
- 20156,39546,12442,5368, 36424,34289,35279,41945,35346,5003, 38377,41945,28399,35050,12270,31036,33981,6084, 20859,26915,37800,33588,2858, 29418,7003, 6898, 532,
- 10062,29207,177, 32949,1661, 20630,8635, 35465,3875, 37800,36259,10571,35200,38883,41945,35346,41944,34452,14819,1089, 36808,36747,17564,14410,32310,41944,6618,
- 34087,25287,5983, 15971,13729,37496,1030, 10664,12831,5297, 5796, 11284,36839,34988,331, 36147,2226, 39546,39546,23188,37800,16320,26914,36210,31242,1284, 2073,
+ 20156,39546,12442,5368, 36424,34289,35279,41945,35346,5003, 38377,41945,28399,35050,12270,31036,33981,6084, 20859,26915,37800,33588,2858, 29418,7003, 6898, 532,
+ 10062,29207,177, 32949,1661, 20630,8635, 35465,3875, 37800,36259,10571,35200,38883,41945,35346,41944,34452,14819,1089, 36808,36747,17564,14410,32310,41944,6618,
+ 34087,25287,5983, 15971,13729,37496,1030, 10664,12831,5297, 5796, 11284,36839,34988,331, 36147,2226, 39546,39546,23188,37800,16320,26914,36210,31242,1284, 2073,
36818,11009,8111, 39545,232, 4176, 16125,3448, 18664,5391, 13248,12075,38776,35983,26819,7927, 20479,11961,8445, 6658, 1168, 1065, 3429, 35442,31921,6920, 13020,
33718,35346,15472,33718,35160,38627,35346,9166, 36409,3841, 19449,21147,2818, 21175,34483,28398,2446, 12830,38907,14977,13475,4389, 39545,6269, 5377, 31920,39545,
7324, 33403,19979,37799,28038,2883, 26913,28397,992, 816, 6323, 17931,5373, 7686, 19079,1993, 6513, 41944,41944,17930,36527,18319,23971,1263, 18892,35345,23031,
- 28396,4992, 3988, 30133,36539,34901,14996,32653,35514,35345,15530,30060,22786,41943,33877,33795,36424,25898,5948, 26218,32352,35789,35971,16003,12930,34954,9808,
- 17929,22456,34006,37909,20458,12747,41943,36347,25383,16232,35993,36765,11406,29061,15412,20814,37799,11258,36424,13535,24822,8047, 13247,37799,14084,41943,6433,
+ 28396,4992, 3988, 30133,36539,34901,14996,32653,35514,35345,15530,30060,22786,41943,33877,33795,36424,25898,5948, 26218,32352,35789,35971,16003,12930,34954,9808,
+ 17929,22456,34006,37909,20458,12747,41943,36347,25383,16232,35993,36765,11406,29061,15412,20814,37799,11258,36424,13535,24822,8047, 13247,37799,14084,41943,6433,
9522, 11101,41943,8195, 38681,29214,39317,39545,32931,10905,31815,9046, 19283,36423,24191,36423,38486,35345,20858,15897,35672,36893,41942,34260,20612,41942,37799,
- 36423,37294,38185,866, 29316,3685, 14071,37798,11724,32513,28322,33005,8794, 7836, 26912,39544,9538, 2836, 30382,22939,11665,39544,62, 6741, 6603, 20867,8998,
- 2202, 39251,3269, 26396,8261, 22836,5437, 41942,26826,18382,6993, 13314,37798,28672,41942,4735, 37798,35592,38576,10688,20857,11043,35060,41941,39544,35479,9074,
+ 36423,37294,38185,866, 29316,3685, 14071,37798,11724,32513,28322,33005,8794, 7836, 26912,39544,9538, 2836, 30382,22939,11665,39544,62, 6741, 6603, 20867,8998,
+ 2202, 39251,3269, 26396,8261, 22836,5437, 41942,26826,18382,6993, 13314,37798,28672,41942,4735, 37798,35592,38576,10688,20857,11043,35060,41941,39544,35479,9074,
20427,12236,23177,32916,35132,38159,34452,33061,23947,27066,28395,35466,38379,32313,15743,41941,37907,12306,9859, 4339, 36401,39544,30059,12694,22455,37262,10205,
2274, 21891,16827,38323,31101,6796, 14253,2807, 5771, 16195,25154,17486,24814,35465,31919,15392,37798,34323,33717,31354,41941,30058,41941,38519,21628,41940,41940,
- 26911,11738,41940,25174,39543,5415, 35345,20155,37797,6432, 19495,22454,39543,13334,16360,34725,41940,1209, 37797,30539,33090,39543,39043,19677,23395,26910,7488,
+ 26911,11738,41940,25174,39543,5415, 35345,20155,37797,6432, 19495,22454,39543,13334,16360,34725,41940,1209, 37797,30539,33090,39543,39043,19677,23395,26910,7488,
22900,36503,29470,27791,14764,27990,27042,36423,41939,8223, 68, 37797,398, 33717,39543,41939,5833, 41939,35647,31918,29492,37797,41939,41938,11504,26044,12829,
- 12416,20478,7378, 1429, 18631,37913,33856,37796,39542,25604,39315,28394,188, 32979,290, 10345,3401, 41938,2044, 20477,132, 35344,37796,5883, 41938,41938,4384,
- 33697,28911,10255,14398,14420,35611,33717,33080,39542,38678,16109,36422,37623,8768, 20856,41937,23186,41937,36422,41937,3633, 34452,4778, 36422,16190,36422,3662,
+ 12416,20478,7378, 1429, 18631,37913,33856,37796,39542,25604,39315,28394,188, 32979,290, 10345,3401, 41938,2044, 20477,132, 35344,37796,5883, 41938,41938,4384,
+ 33697,28911,10255,14398,14420,35611,33717,33080,39542,38678,16109,36422,37623,8768, 20856,41937,23186,41937,36422,41937,3633, 34452,4778, 36422,16190,36422,3662,
34435,18318,41937,28393,7830, 21627,30132,36421,2312, 28392,296, 28391,34451,20067,34709,41936,20154,33080,41936,39542,7483, 39542,41936,21626,31909,25867,39541,
11737,39541,33135,34765,7128, 33882,627, 1955, 38093,2507, 37665,41936,34776,23394,15126,36899,41935,38443,36999,33220,36215,37796,11432,37796,2860, 32773,12828,
38165,27342,9643, 16108,14606,14008,18414,13142,5804, 33535,3053, 32864,35344,12935,6617, 3254, 1814, 41935,418, 135, 5488, 2506, 8459, 680, 20109,41935,34451,
38823,671, 24451,39541,1462, 33079,9030, 26909,16750,20153,30057,39541,326, 888, 8740, 18809,35323,33647,13017,7583, 20972,35344,33079,28390,38497,36421,21795,
78, 4910, 20338,31907,32861,32037,37795,33898,3071, 33590,31917,25603,30056,21945,6717, 3003, 39540,26908,33142,3787, 16802,37166,37707,36421,416, 5818, 22216,
- 36027,892, 35111,49, 12083,20528,1471, 32976,14566,17593,33014,12941,12786,28769,18947,22209,31635,21386,21702,21419,31660,28520,23094,11841,28735,161, 1973,
+ 36027,892, 35111,49, 12083,20528,1471, 32976,14566,17593,33014,12941,12786,28769,18947,22209,31635,21386,21702,21419,31660,28520,23094,11841,28735,161, 1973,
23578,16221,32638,2739, 29909,2384, 38657,36421,35344,14421,27598,36655,8921, 36766,38847,32149,10398,37795,41935,23194,17313,37282,39540,17095,15043,30943,36239,
1333, 36420,1174, 37795,864, 26366,1915, 3550, 4650, 2219, 15607,21886,20843,41934,21833,39540,36420,34451,10243,41934,25602,37534,37795,19078,20475,39540,31916,
35343,8341, 33717,37794,39539,41934,1596, 11723,29713,6267, 35343,41934,7195, 26907,31915,6948, 16954,25601,25886,37123,22453,36419,37099,36640,41933,4775, 35612,
@@ -18133,34 +18128,34 @@ static const unsigned short Ranks[197839] =
39537,38711,11225,32824,25599,2715, 30281,869, 37793,37793,26906,15896,2685, 37793,17928,19172,7255, 1728, 36260,31864,38743,30543,19075,14663,39051,28815,36649,
35074,37009,22078,16106,41931,36419,17706,26905,22452,41930,11960,41930,4941, 39537,832, 17705,16748,33716,12692,21625,41930,35281,16747,30055,41930,16952,14328,
32179,7923, 41929,2300, 35081,33078,38361,41929,32622,39536,33078,17747,15125,2860, 9705, 12447,7797, 19651,16278,37509,2282, 17983,34093,41929,39536,8901, 41929,
- 32981,39536,25598,8771, 41928,23542,33078,1607, 24579,37793,33716,23392,26661,36169,24654,16105,12582,31722,5711, 31297,33378,9073, 10663,7657, 2195, 6266, 9141,
+ 32981,39536,25598,8771, 41928,23542,33078,1607, 24579,37793,33716,23392,26661,36169,24654,16105,12582,31722,5711, 31297,33378,9073, 10663,7657, 2195, 6266, 9141,
744, 2161, 35343,36418,32121,30054,34450,35342,37792,1925, 19971,9679, 3558, 30793,41928,32882,5377, 39536,5809, 8679, 39136,39535,41928,507, 35342,38005,33715,
- 37792,39535,28388,12187,20854,18317,25597,39535,37792,35141,34827,16951,27614,41928,36503,9193, 35286,6067, 15353,27405,30053,1933, 36294,2623, 2210, 14251,2935,
+ 37792,39535,28388,12187,20854,18317,25597,39535,37792,35141,34827,16951,27614,41928,36503,9193, 35286,6067, 15353,27405,30053,1933, 36294,2623, 2210, 14251,2935,
9796, 38215,28762,38783,36784,19521,19428,38008,15119,16104,9990, 33807,11736,6587, 35007,34027,14534,11896,7577, 37233,37286,27743,35066,41927,33078,35738,18316,
- 37792,11283,808, 4816, 30663,18664,31009,25157,39390,12440,36819,15413,36227,12175,15726,2338, 41927,38575,15391,14440,23775,39535,39534,41927,39534,28387,6586,
- 39534,41927,21662,30052,34450,16746,26904,12826,4847, 5937, 8534, 19269,19074,19494,10204,19073,33715,33715,7795, 37791,15883,27160,27874,24448,41926,32993,8874,
+ 37792,11283,808, 4816, 30663,18664,31009,25157,39390,12440,36819,15413,36227,12175,15726,2338, 41927,38575,15391,14440,23775,39535,39534,41927,39534,28387,6586,
+ 39534,41927,21662,30052,34450,16746,26904,12826,4847, 5937, 8534, 19269,19074,19494,10204,19073,33715,33715,7795, 37791,15883,27160,27874,24448,41926,32993,8874,
15626,34450,24447,38699,39240,26575,10092,41926,3639, 14763,41926,3385, 27977,36418,41926,22052,28386,31912,37791,31911,39534,34450,36418,26299,33094,41925,31910,
23391,41925,41925,28385,200, 17704,41925,24446,13473,34449,32312,27738,37791,33715,34449,38558,25596,25595,4063, 36418,29004,10733,36417,34449,37791,37933,37790,
41924,33714,31909,37790,16950,10885,10932,20475,32324,41924,30051,34681,34032,17350,4884, 19072,14649,34449,13246,20151,793, 1942, 28582,16654,27825,21460,31135,
18254,20150,36417,17703,33714,35436,37790,29797,35613,11578,12430,1277, 16755,32300,36053,39533,17702,28099,39302,11735,18315,32001,24618,35342,10904,39533,33714,
7317, 34073,41924,37008,37957,30688,9989, 18272,4683, 15390,35941,10903,33714,16949,8306, 35342,41924,33005,35341,35341,24798,2697, 24807,29299,13058,38437,26118,
37790,16622,8729, 17927,26903,7706, 39533,41923,41923,39533,35026,14477,15087,31908,33713,18314,6512, 20149,2620, 3523, 11959,2619, 20474,28551,4515, 38755,33077,
- 128, 25624,7012, 35534,37987,41923,16948,33713,10091,6555, 35341,31907,28384,2975, 41923,31237,33713,25594,12018,2332, 13245,39295,35341,14762,38525,8011, 902,
+ 128, 25624,7012, 35534,37987,41923,16948,33713,10091,6555, 35341,31907,28384,2975, 41923,31237,33713,25594,12018,2332, 13245,39295,35341,14762,38525,8011, 902,
37789,12439,14287,41922,13472,18309,2611, 8008, 5760, 14083,901, 36, 6462, 3707, 36417,37789,643, 2043, 38050,15389,5447, 16319,34437,25593,35340,3736, 33077,
13770,41922,8224, 38295,17701,41922,3716, 41922,37789,34448,20853,8590, 18379,34874,13666,18352,36408,9778, 11354,33446,10426,26017,37789,34579,19071,27176,36493,
36417,9088, 33557,37788,16103,3712, 35559,4216, 12019,10905,27677,16104,15555,23967,234, 38905,35340,35090,39532,34064,9650, 7741, 7560, 29981,28066,1787, 21322,
- 25998,4828, 9209, 32927,5189, 12616,18981,27987,15396,8728, 38587,33927,2290, 38707,7453, 32039,22223,38669,32011,443, 20473,2233, 35402,35216,955, 21425,557,
+ 25998,4828, 9209, 32927,5189, 12616,18981,27987,15396,8728, 38587,33927,2290, 38707,7453, 32039,22223,38669,32011,443, 20473,2233, 35402,35216,955, 21425,557,
34436,2618, 20472,1534, 16947,13727,25571,2019, 35113,32156,25227,3933, 4295, 1496, 38455,13975,3260, 32580,9342, 22350,8091, 14890,4635, 7508, 9599, 383, 35539,
- 25671,12885,41921,5240, 39532,2944, 2867, 10324,27516,4565, 12825,7678, 842, 32950,32762,41921,5881, 37765,13514,36952,26081,35340,37788,14250,3182, 28383,247,
- 10434,12131,38221,30257,29930,38304,11793,21896,35811,1671, 37788,35340,13511,15517,39532,41921,30050,35339,14082,36416,26902,37788,35485,204, 33713,11242,9674,
- 20471,29878,17289,30711,21624,34408,13574,10536,36415,15587,3280, 4310, 8416, 10948,5493, 7289, 3780, 9793, 29630,7029, 1192, 32612,7481, 33201,477, 834, 3058,
+ 25671,12885,41921,5240, 39532,2944, 2867, 10324,27516,4565, 12825,7678, 842, 32950,32762,41921,5881, 37765,13514,36952,26081,35340,37788,14250,3182, 28383,247,
+ 10434,12131,38221,30257,29930,38304,11793,21896,35811,1671, 37788,35340,13511,15517,39532,41921,30050,35339,14082,36416,26902,37788,35485,204, 33713,11242,9674,
+ 20471,29878,17289,30711,21624,34408,13574,10536,36415,15587,3280, 4310, 8416, 10948,5493, 7289, 3780, 9793, 29630,7029, 1192, 32612,7481, 33201,477, 834, 3058,
3715, 33239,36327,53, 2145, 22663,17411,2915, 20532,10438,7117, 39532,38240,27714,33243,24955,12771,7599, 16102,13901,20470,7011, 16946,9959, 8803, 5038, 24445,
36467,34448,37787,32317,16101,17360,3261, 30049,41921,6947, 23366,33136,956, 10515,14249,33310,12824,22286,10972,33744,12941,14135,36146,25910,36422,1420, 33077,
- 1988, 12619,17318,9267, 13890,27687,33722,38507,6268, 11176,14171,29985,9988, 38584,16945,15388,25870,36378,39531,39531,20148,30048,41920,39531,30047,290, 1785,
- 33945,6879, 12312,15124,5504, 30046,1013, 14410,16944,18547,39290,29200,32834,16100,36040,20469,31566,35970,15387,6326, 19070,14248,10203,5018, 11175,25679,4989,
+ 1988, 12619,17318,9267, 13890,27687,33722,38507,6268, 11176,14171,29985,9988, 38584,16945,15388,25870,36378,39531,39531,20148,30048,41920,39531,30047,290, 1785,
+ 33945,6879, 12312,15124,5504, 30046,1013, 14410,16944,18547,39290,29200,32834,16100,36040,20469,31566,35970,15387,6326, 19070,14248,10203,5018, 11175,25679,4989,
35339,39531,2331, 37787,19069,37787,39530,26901,31412,18873,41920,8260, 39104,1625, 4360, 41920,37787,39210,38744,11958,39530,502, 23617,10202,34319,13726,27909,
11693,2267, 2221, 37250,8512, 980, 11056,34, 2862, 22633,31561,36416,2846, 31906,30353,497, 1940, 3496, 29119,18777,24204,10820,37786,12532,9105, 15386,20218,
- 2486, 10683,8444, 14409,16318,1531, 32894,6923, 23208,5376, 37786,35339,39530,36416,39530,41920,36416,9076, 22451,41919,30045,23390,30044,29750,6752, 32877,7685,
+ 2486, 10683,8444, 14409,16318,1531, 32894,6923, 23208,5376, 37786,35339,39530,36416,39530,41920,36416,9076, 22451,41919,30045,23390,30044,29750,6752, 32877,7685,
4358, 12466,34200,16824,4384, 21971,6935, 13635,34850,16588,35883,35929,33644,13952,21623,39090,15521,31533,4257, 5098, 31130,2358, 23299,20221,35507,37786,34896,
21334,41919,25149,37786,35954,10437,33219,7028, 33863,20147,1598, 3012, 9867, 6259, 37734,10201,14776,19068,7684, 26208,37687,8589, 8488, 27341,31905,13781,34755,
35912,26900,14386,33706,20441,37736,14247,3137, 4652, 33359,38664,1208, 192, 3228, 6648, 14180,2756, 1471, 36415,24444,32873,37147,674, 824, 25741,16099,34621,
@@ -18170,20 +18165,20 @@ static const unsigned short Ranks[197839] =
9307, 30963,10113,17926,19067,10902,14774,31274,23351,13897,6089, 2672, 11860,12368,1395, 13295,7666, 38153,13722,1258, 1092, 5315, 6046, 10817,29874,37482,16098,
36607,7387, 14471,34036,17064,12957,37354,36366,27077,2363, 3607, 4038, 2241, 7922, 8970, 11567,16097,32836,5982, 12834,25893,6088, 8172, 25387,5884, 13721,36498,
36664,27036,36416,16822,33868,3364, 6266, 15385,12429,38605,36916,37483,38621,33489,25687,20689,20517,3119, 28686,9791, 10661,34680,11119,32928,11071,5337, 18486,
- 3017, 28080,14176,16096,36096,10436,25827,39228,34572,33712,248, 38070,344, 4124, 11296,707, 1652, 349, 20146,9598, 8688, 15650,8226, 20467,35795,9072, 2442,
+ 3017, 28080,14176,16096,36096,10436,25827,39228,34572,33712,248, 38070,344, 4124, 11296,707, 1652, 349, 20146,9598, 8688, 15650,8226, 20467,35795,9072, 2442,
21842,2393, 19034,3352, 9071, 1875, 10435,9992, 28828,15384,2653, 3601, 36463,24754,32346,19066,16942,4960, 2979, 17925,22181,5106, 5581, 5827, 36877,35419,14245,
12893,20466,4242, 36415,26462,17508,24020,35374,8305, 36194,27659,31557,1750, 21636,8842, 12074,33990,25828,41918,8045, 34381,7592, 25445,33712,24147,33392,11912,
- 8981, 3682, 34146,18457,12409,21983,19948,29490,35621,37799,38056,13720,37976,37374,28735,9597, 8117, 19065,6481, 33711,345, 20551,16470,25415,22366,17622,295,
- 10799,9379, 31906,24976,11237,25344,13619,15590,31545,27964,21526,2610, 28561,33204,41918,1663, 36004,18798,24320,32900,38916,33089,32711,14433,4111, 9548, 3509,
+ 8981, 3682, 34146,18457,12409,21983,19948,29490,35621,37799,38056,13720,37976,37374,28735,9597, 8117, 19065,6481, 33711,345, 20551,16470,25415,22366,17622,295,
+ 10799,9379, 31906,24976,11237,25344,13619,15590,31545,27964,21526,2610, 28561,33204,41918,1663, 36004,18798,24320,32900,38916,33089,32711,14433,4111, 9548, 3509,
30831,11054,36133,12606,5181, 36157,18699,17258,20777,32781,1795, 18837,28382,5033, 26376,23789,12284,35338,20199,15770,32933,20465,17064,1793, 17626,30982,30108,
- 39529,21622,3273, 20464,3728, 28959,21621,2765, 36415,36415,15123,1721, 35338,14408,5912, 24323,23645,33076,18313,36414,483, 7566, 18872,11673,10837,37785,3919,
+ 39529,21622,3273, 20464,3728, 28959,21621,2765, 36415,36415,15123,1721, 35338,14408,5912, 24323,23645,33076,18313,36414,483, 7566, 18872,11673,10837,37785,3919,
3190, 14947,9070, 16095,8588, 21975,38813,6795, 20463,11174,15621,13244,39331,15383,13762,26910,34392,19494,20852,37784,41917,6721, 34742,36384,28381,23389,37784,
34447,37192,18158,29010,15895,38715,39221,8601, 5640, 34053,6093, 30261,36315,17110,9254, 33817,5141, 4337, 39529,18871,10241,9391, 17385,2677, 21713,9633, 31690,
8109, 4101, 16061,28380,16713,12682,37784,19994,4872, 30194,11158,22046,742, 9148, 11173,6072, 29471,24533,14643,23406,2005, 12930,8873, 12428,39529,36414,14081,
- 15382,28379,27983,32919,32700,41917,34447,41917,41917,9145, 12691,14407,11733,15049,32288,33107,29112,16094,9306, 35319,16383,37784,10759,30041,30573,15265,8666,
- 34044,10863,41916,15820,32905,29780,20659,39528,6710, 18315,30040,38964,6127, 26899,3075, 25592,22509,41916,31148,30210,1013, 18227,35338,34370,36414,3471, 1316,
+ 15382,28379,27983,32919,32700,41917,34447,41917,41917,9145, 12691,14407,11733,15049,32288,33107,29112,16094,9306, 35319,16383,37784,10759,30041,30573,15265,8666,
+ 34044,10863,41916,15820,32905,29780,20659,39528,6710, 18315,30040,38964,6127, 26899,3075, 25592,22509,41916,31148,30210,1013, 18227,35338,34370,36414,3471, 1316,
16384,944, 8873, 13243,16317,20462,33089,28378,7591, 21002,11172,35794,35045,11957,6380, 13227,27381,17744,30930,32821,38154,37040,18512,15550,14080,13385,13777,
- 29187,9028, 19531,31362,4131, 15943,13444,549, 16320,32833,29100,3411, 25137,17985,33711,9039, 16595,23211,36003,18757,4945, 15598,236, 20378,15536,17494,165,
+ 29187,9028, 19531,31362,4131, 15943,13444,549, 16320,32833,29100,3411, 25137,17985,33711,9039, 16595,23211,36003,18757,4945, 15598,236, 20378,15536,17494,165,
11040,3869, 24118,28192,27786,26278,29540,29231,28130,5745, 16288,7361, 14565,32932,30088,10619,1714, 1173, 4740, 32645,2768, 12903,2444, 36741,37730,8447, 21188,
14244,12812,7590, 26622,10240,31622,36617,21055,7582, 28377,24170,26570,5989, 2832, 8906, 374, 19261,8283, 2831, 17476,23877,21620,37783,2119, 1077, 30193,37783,
13719,36414,53, 1408, 39528,12668,36568,33711,2479, 4569, 2784, 7462, 35338,23388,37783,9596, 35337,33076,14773,6945, 4273, 7102, 6118, 14243,37475,7486, 12822,
@@ -18192,8 +18187,8 @@ static const unsigned short Ranks[197839] =
33040,3316, 14009,26130,22081,12006,19063,746, 2472, 1353, 26898,33075,30039,36413,3973, 33319,20459,14772,35298,33767,14390,5876, 11628,20466,39412,12793,38908,
7235, 9549, 25690,8855, 35552,13527,23427,36407,2928, 29516,3106, 4245, 3714, 7463, 8430, 28864,13971,23097,3940, 4303, 37518,8727, 16689,38281,24535,24498,19062,
31104,22220,1502, 26944,4501, 23264,30827,3010, 8841, 10200,9969, 11574,25403,2925, 30909,35975,35895,22452,34923,36144,16424,12901,34879,16678,7027, 19638,35429,
- 31887,5458, 12427,11171,4280, 20458,10900,8587, 28412,39219,14242,13370,3096, 17923,41915,37782,11170,20457,8295, 19936,3290, 5067, 3183, 20965,2930, 733, 6210,
- 11732,33547,16093,23581,6636, 23200,8389, 34683,5401, 36763,1629, 1320, 3575, 4078, 23601,14241,13763,33745,30635,18312,5299, 4693, 11651,11169,9069, 26260,3307,
+ 31887,5458, 12427,11171,4280, 20458,10900,8587, 28412,39219,14242,13370,3096, 17923,41915,37782,11170,20457,8295, 19936,3290, 5067, 3183, 20965,2930, 733, 6210,
+ 11732,33547,16093,23581,6636, 23200,8389, 34683,5401, 36763,1629, 1320, 3575, 4078, 23601,14241,13763,33745,30635,18312,5299, 4693, 11651,11169,9069, 26260,3307,
36413,39262,14850,36586,1732, 33075,41915,2828, 1560, 1517, 3076, 4215, 39527,37395,9473, 23717,34955,23466,37782,37782,41915,37919,2072, 33691,5370, 35337,12821,
19061,35321,27269,7142, 14435,2290, 12559,4159, 7585, 10910,39527,30038,5068, 16140,21251,35385,541, 10744,28184,19587,29106,12889,13974,32789,37966,26897,30590,
2192, 12073,28551,899, 6605, 38110,3654, 8731, 19980,168, 30330,39527,193, 41915,3631, 3196, 36412,16652,258, 568, 28824,33939,39033,28822,27512,12087,11280,
@@ -18211,11 +18206,11 @@ static const unsigned short Ranks[197839] =
39521,13717,37779,31898,36409,13195,41908,11430,18867,30032,41908,25589,31451,7385, 6621, 15046,16941,31897,25177,41908,38443,36753,24875,38502,27215,25464,31293,
23493,9547, 33668,15667,36409,13716,17921,17920,30916,35184,21423,33394,31076,20851,37779,2785, 22450,36409,22449,35447,28504,30031,8222, 37778,34445,33074,33709,
39521,17698,9029, 37778,14760,18308,4198, 37778,34445,7778, 5787, 15513,36536,37778,24439,31896,41907,33073,30030,31751,3406, 31895,34444,39521,39521,2496, 13715,
- 11257,34153,33152,37777,15497,33709,36409,21618,33073,31894,33073,41907,4104, 19491,39520,35745,41907,3606, 1838, 6377, 3713, 19059,7017, 10199,35723,15378,9459,
+ 11257,34153,33152,37777,15497,33709,36409,21618,33073,31894,33073,41907,4104, 19491,39520,35745,41907,3606, 1838, 6377, 3713, 19059,7017, 10199,35723,15378,9459,
5314, 13481,21221,19058,16940,16939,23592,26023,10899,39520,18738,41907,36408,20985,12819,16938,20455,10612,30777,31593,11461,39520,36408,41906,36408,39520,36369,
7921, 35221,38149,16937,32853,3418, 553, 24232,5069, 3077, 2350, 9611, 1007, 493, 1848, 1859, 1256, 3230, 24440,12271,7137, 12759,9002, 37172,600, 20454,19057,
7794, 3067, 12818,4013, 2995, 13185,22304,23901,10691,20453,356, 117, 2099, 3203, 18866,35604,2732, 30370,3605, 33557,34689,16221,6265, 14770,26797,7555, 38173,
- 2783, 19490,25588,5303, 3522, 11529,6359, 8841, 10106,6217, 28736,5019, 1782, 10034,37450,5839, 4651, 1890, 14530,34946,32832,13719,10569,33813,1250, 37984,4186,
+ 2783, 19490,25588,5303, 3522, 11529,6359, 8841, 10106,6217, 28736,5019, 1782, 10034,37450,5839, 4651, 1890, 14530,34946,32832,13719,10569,33813,1250, 37984,4186,
25292,670, 14013,35336,10198,9826, 20452,15377,23512,8304, 34506,12445,5166, 20451,6087, 37777,36408,28371,41906,19489,39519,39519,11440,30965,3813, 6087, 24436,
7408, 2506, 35755,9421, 6286, 33828,39519,10219,5211, 7145, 3605, 15893,7071, 3338, 10006,36468,1119, 2270, 34722,472, 846, 726, 33073,4533, 16117,33388,33072,
10731,39519,21268,11167,38071,4541, 2776, 5457, 4871, 13454,4141, 24702,5311, 7793, 28302,7290, 33242,39132,6577, 4455, 28370,18241,12469,19056,41906,11731,12535,
@@ -18224,19 +18219,19 @@ static const unsigned short Ranks[197839] =
5587, 25538,34444,39518,11501,39517,34444,29181,34443,31893,33072,37776,15891,39517,39517,27144,7503, 4480, 6719, 11429,9510, 10660,14021,14769,3260, 41905,33709,
36272,11730,19054,5201, 35137,39517,2392, 3758, 21583,36367,39386,37361,36782,11456,2829, 32935,1883, 1054, 9401, 8242, 3812, 15496,17696,28368,39516,19488,36407,
33072,17218,18853,5726, 7040, 477, 958, 2753, 37776,8593, 967, 12220,997, 36670,8153, 35993,28273,10898,35336,8715, 1256, 1255, 881, 5487, 2398, 3337, 39516,
- 19487,12185,38065,41905,3405, 24438,24437,33071,14634,6966, 3780, 35904,5300, 22882,26892,11889,20449,3872, 25183,33071,37776,7095, 14949,39516,30029,41904,2383,
- 31760,267, 1727, 8009, 180, 7646, 19926,952, 15897,20850,16936,16092,14768,12070,34705,20448,38233,36407,37776,41904,2683, 6209, 4994, 23736,5142, 34258,3384,
+ 19487,12185,38065,41905,3405, 24438,24437,33071,14634,6966, 3780, 35904,5300, 22882,26892,11889,20449,3872, 25183,33071,37776,7095, 14949,39516,30029,41904,2383,
+ 31760,267, 1727, 8009, 180, 7646, 19926,952, 15897,20850,16936,16092,14768,12070,34705,20448,38233,36407,37776,41904,2683, 6209, 4994, 23736,5142, 34258,3384,
12817,35484,33035,37775,19053,15484,17708,2634, 5309, 5624, 3298, 38090,35335,35335,23385,32927,12933,33071,39057,34584,41904,34456,35335,35335,1083, 33071,10909,
33070,39516,34443,35805,36701,8108, 3558, 37121,36407,33070,39515,34967,26891,39515,2299, 12245,38333,37775,15890,7742, 37775,9144, 37775,30028,36839,3290, 28951,
11729,19486,35334,33664,13669,33463,41904,38341,9790, 10296,35567,24043,35334,12122,3749, 13714,3666, 5471, 11602,2562, 16935,28777,36407,36406,36091,26890,35334,
- 35334,6495, 26889,12253,1281, 35485,3902, 13068,36406,8905, 2819, 33708,1877, 14599,20144,39515,41903,5105, 16321,41903,8171, 14079,10396,36564,39515,33609,9434,
+ 35334,6495, 26889,12253,1281, 35485,3902, 13068,36406,8905, 2819, 33708,1877, 14599,20144,39515,41903,5105, 16321,41903,8171, 14079,10396,36564,39515,33609,9434,
12223,17986,37684,9388, 18783,14078,41903,8107, 37774,33070,12932,19052,41903,33708,39514,37849,24842,35957,41902,35333,36406,33070,7118, 4387, 10351,37994,37203,
9188, 33401,11615,37161,5766, 33769,13713,5086, 17919,35819,38383,35333,4587, 8609, 39514,19463,39107,12816,16934,12620,20447,2619, 5168, 10037,8871, 3700, 21897,
12069,19051,41902,12931,33025,13956,12126,39088,2979, 16091,14616,33010,20446,7775, 7313, 26096,33640,1491, 33009,2485, 3235, 14843,20841,3792, 8094, 15435,34478,
10659,20445,11231,10434,21910,37267,37774,34821,9067, 14965,20444,33979,39202,33069,6086, 4582, 34059,7256, 8742, 21474,17918,8969, 41902,34443,6794, 33319,22448,
37774,20143,35333,23384,1811, 15375,526, 1941, 8745, 7690, 2147, 32787,35370,6002, 18939,16933,14270,17895,21329,34448,16512,36406,21206,5752, 20443,11388,10421,
- 12001,28091,12815,7526, 35377,15374,4288, 8022, 41902,12438,5836, 25889,26090,27051,13301,26640,41901,8341, 36075,32914,681, 23010,492, 2402, 2028, 3155, 2569,
- 1169, 33708,23487,34496,27798,32279,17457,8195, 19050,34277,38829,7392, 35333,37774,27634,13471,23383,33708,10658,1458, 37517,2097, 17344,5290, 1234, 1147, 675,
+ 12001,28091,12815,7526, 35377,15374,4288, 8022, 41902,12438,5836, 25889,26090,27051,13301,26640,41901,8341, 36075,32914,681, 23010,492, 2402, 2028, 3155, 2569,
+ 1169, 33708,23487,34496,27798,32279,17457,8195, 19050,34277,38829,7392, 35333,37774,27634,13471,23383,33708,10658,1458, 37517,2097, 17344,5290, 1234, 1147, 675,
1496, 1766, 13242,6376, 39083,16090,7767, 28271,14578,32873,9987, 34609,15373,14240,35554,12411,5598, 25317,12552,16361,15082,8344, 8154, 23255,14577,9986, 35723,
38184,16932,38780,24062,7812, 8734, 18599,36044,32788,14671,4698, 14358,5573, 37616,41901,17917,20442,19049,8870, 37773,35649,4368, 7249, 13712,21364,30151,26794,
542, 17441,962, 17373,3703, 36508,8181, 34599,12063,22788,9409, 33664,16371,38681,26300,12814,16089,9590, 36577,21936,6445, 33398,34545,25547,11428,1570, 10897,
@@ -18244,13 +18239,13 @@ static const unsigned short Ranks[197839] =
17914,28414,12949,22073,9296, 2185, 36492,22445,9353, 8071, 11260,37773,13240,12610,33724,41901,27461,10896,9400, 33506,19929,10395,3960, 10196,37239,33069,10657,
12737,38069,38751,1561, 12677,3166, 17913,17093,9132, 4883, 250, 31418,7167, 4077, 2269, 10032,6208, 33435,41900,26313,17912,39514,39514,33939,33052,31426,36232,
4294, 32881,4430, 7550, 4529, 5918, 36886,22447,4691, 10568,3041, 9399, 10433,12423,5280, 19048,13711,41900,14406,36950,2670, 2650, 1000, 3764, 2795, 17911,27331,
- 15467,2640, 7536, 5132, 26259,31778,41900,35000,19047,25142,12642,11577,36181,16744,29863,23613,26028,39513,39083,35332,13341,17910,19046,39196,14175,34176,4894,
- 4622, 1585, 4872, 16687,5375, 2067, 19036,1697, 37133,860, 38731,3788, 2062, 8639, 32613,6944, 8189, 4309, 2859, 18533,1673, 8044, 18437,12675,34720,7383, 7839,
- 36956,17078,29011,2108, 1533, 33893,4804, 6399, 38254,33190,5411, 23261,25555,17002,20264,16088,38139,14077,35879,39513,7322, 31892,37773,20037,16931,28459,1719,
+ 15467,2640, 7536, 5132, 26259,31778,41900,35000,19047,25142,12642,11577,36181,16744,29863,23613,26028,39513,39083,35332,13341,17910,19046,39196,14175,34176,4894,
+ 4622, 1585, 4872, 16687,5375, 2067, 19036,1697, 37133,860, 38731,3788, 2062, 8639, 32613,6944, 8189, 4309, 2859, 18533,1673, 8044, 18437,12675,34720,7383, 7839,
+ 36956,17078,29011,2108, 1533, 33893,4804, 6399, 38254,33190,5411, 23261,25555,17002,20264,16088,38139,14077,35879,39513,7322, 31892,37773,20037,16931,28459,1719,
6445, 3417, 3757, 12677,10471,6483, 24261,12489,23085,29387,33298,34281,18362,28469,35235,2414, 12363,16087,5689, 41900,16086,2644, 36084,5456, 33986,1115, 33121,
18307,682, 12068,4140, 2991, 7483, 6444, 5770, 2712, 1160, 3136, 10850,39513,41899,41899,23382,41899,36681,9595, 16930,5627, 6012, 16085,35067,2224, 2510, 15036,
- 9053, 22618,17430,3574, 7326, 25801,843, 4039, 2978, 1105, 840, 11728,10195,20954,31891,21988,17207,30027,39513,41899,2929, 8106, 322, 35398,5678, 31100,9349,
- 24967,33504,25981,28419,23864,1093, 2634, 19045,6085, 12184,13710,37773,33820,3187, 33697,12689,37491,11100,4455, 33413,8677, 20441,19044,2015, 15205,19043,3350,
+ 9053, 22618,17430,3574, 7326, 25801,843, 4039, 2978, 1105, 840, 11728,10195,20954,31891,21988,17207,30027,39513,41899,2929, 8106, 322, 35398,5678, 31100,9349,
+ 24967,33504,25981,28419,23864,1093, 2634, 19045,6085, 12184,13710,37773,33820,3187, 33697,12689,37491,11100,4455, 33413,8677, 20441,19044,2015, 15205,19043,3350,
1861, 25337,36393,16084,6071, 7382, 10008,2642, 4754, 6207, 9537, 7680, 2593, 9624, 6085, 3144, 9014, 35745,15350,6084, 13239,15546,10491,6278, 5537, 36405,23023,
37983,36405,383, 9511, 1159, 1199, 601, 3095, 2892, 9594, 13007,13373,35560,12744,37772,16083,12555,34536,25901,8607, 23437,11164,8368, 28308,6063, 37045,10895,
20440,21672,37159,1105, 2217, 29295,7146, 5625, 15179,37059,3277, 1864, 6083, 18146,4573, 5182, 11611,20174,38117,26009,6793, 15157,33386,19042,7155, 15372,41898,
@@ -18263,10 +18258,10 @@ static const unsigned short Ranks[197839] =
7792, 4066, 16071,12595,21356,28190,15522,26888,41897,10466,9096, 26445,19116,39511,39511,41897,41896,33159,3942, 9761, 19485,35766,34884,37771,31890,24435,32842,
2911, 20881,815, 25587,34056,33068,36241,15371,10567,33144,20849,37773,41896,17445,27096,2723, 1047, 4496, 2550, 33413,11161,23304,4986, 9029, 36534,35925,10239,
36405,19039,6376, 17695,41896,36404,31889,39511,35757,6818, 33609,37770,19868,1285, 37682,2138, 4256, 41896,9968, 32825,9985, 8957, 13156,2297, 36631,13708,32826,
- 41895,24434,34443,8294, 26197,2305, 4444, 15829,39145,10657,36290,11021,23320,10194,6021, 15905,16926,20142,39510,33670,28367,743, 12237,2945, 4446, 5842, 6064,
+ 41895,24434,34443,8294, 26197,2305, 4444, 15829,39145,10657,36290,11021,23320,10194,6021, 15905,16926,20142,39510,33670,28367,743, 12237,2945, 4446, 5842, 6064,
11522,24526,1189, 32806,11281,36404,12273,41895,41895,6685, 12806,2921, 16657,4889, 26278,16192,36509,8270, 8586, 10055,16081,33670,19037,37213,35004,34356,11581,
15390,18721,26865,1989, 7480, 36032,26563,37215,13237,6585, 3622, 23449,11757,7288, 39113,17128,7117, 9066, 6943, 16925,39510,3428, 12324,8585, 11805,26864,35969,
- 5770, 1124, 8350, 1887, 33605,14239,15758,36380,38081,8823, 6878, 12658,4234, 15135,6816, 9594, 37770,33562,7152, 21985,13707,11426,23552,41895,2244, 5904, 6141,
+ 5770, 1124, 8350, 1887, 33605,14239,15758,36380,38081,8823, 6878, 12658,4234, 15135,6816, 9594, 37770,33562,7152, 21985,13707,11426,23552,41895,2244, 5904, 6141,
7381, 29398,36404,41894,5829, 11425,20437,24433,33068,26373,9563, 15145,38568,5371, 16924,9065, 10602,15370,24539,298, 33707,37263,19512,12930,11935,14076,20141,
17694,38716,37770,19676,11424,966, 19699,24432,37770,41894,14404,33068,133, 36404,10193,36403,38607,30755,903, 17693,26233,2761, 441, 36403,19898,24431,38779,
41894,39510,16743,106, 26887,11719,2411, 37769,37769,33707,26886,22446,8555, 38484,21617,36403,35332,16928,37769,12183,19484,41894,39510,34442,6939, 36682,33876,
@@ -18277,8 +18272,8 @@ static const unsigned short Ranks[197839] =
35607,41893,16589,35258,18669,36402,26704,6640, 7287, 35550,36194,918, 31926,18975,25759,24567,19085,34416,28366,12422,16080,23441,5864, 9205, 6701, 2851, 20900,
27343,12736,15675,27324,32603,20651,1519, 39509,34036,14426,34557,22348,3771, 34808,25585,24430,4572, 7263, 34467,41893,17206,13238,14766,35153,3305, 6706, 12991,
37472,36230,37956,5866, 32848,19396,18057,16203,6557, 3635, 41893,1577, 2278, 41893,679, 16799,34442,33067,3369, 39509,3995, 35331,268, 7307, 11636,35908,36402,
- 31522,16250,33416,34528,36444,32592,17692,31888,41892,33215,36926,36318,33067,30312,2725, 137, 27840,16212,39509,5666, 37768,41892,34185,16313,33982,13469,3125,
- 19002,28408,5793, 38430,39508,23380,26885,39508,36068,32269,41892,35680,35331,27756,39508,4650, 16922,12437,6322, 11160,32125,35331,4082, 30025,14403,28266,8005,
+ 31522,16250,33416,34528,36444,32592,17692,31888,41892,33215,36926,36318,33067,30312,2725, 137, 27840,16212,39509,5666, 37768,41892,34185,16313,33982,13469,3125,
+ 19002,28408,5793, 38430,39508,23380,26885,39508,36068,32269,41892,35680,35331,27756,39508,4650, 16922,12437,6322, 11160,32125,35331,4082, 30025,14403,28266,8005,
3124, 5950, 35487,25647,6609, 3556, 7717, 34993,27196,30024,24429,13237,33911,8584, 2441, 34123,23379,39508,32492,23131,33440,4510, 17478,30023,38193,32849,35305,
34442,39507,20848,22445,36402,16034,15740,35260,41892,6820, 16742,3728, 7791, 20435,35430,23674,33058,7169, 21797,36402,41891,37465,33124,20372,41891,16079,37768,
39507,38029,37563,35888,36151,30545,17333,21314,32964,33033,38118,41891,3262, 41891,2380, 4399, 4703, 14774,4882, 3476, 39507,41890,183, 11323,28365,41890,14075,
@@ -18286,19 +18281,19 @@ static const unsigned short Ranks[197839] =
1487, 10172,18395,26062,32860,16626,26058,25251,32918,17908,197, 61, 32013,35330,39506,11280,14402,30022,36401,5343, 36401,13765,39506,12807,1226, 39506,34441,
4077, 41889,6554, 8457, 8583, 33707,12690,5686, 1290, 21840,24582,797, 9957, 16741,41889,11525,41889,10063,4613, 41889,33706,28363,664, 38152,30021,12103,34441,
37768,1122, 41888,21512,28362,23640,35340,185, 24103,33087,33706,2950, 13468,25584,15120,34441,21616,31887,18306,36401,31886,2521, 39505,34441,18865,6553, 16078,
- 15119,9673, 2238, 19038,310, 41888,2807, 558, 20140,16921,37767,3228, 35203,37767,35330,34440,35788,1179, 13236,23337,37767,7958, 133, 7107, 39505,756, 9043,
+ 15119,9673, 2238, 19038,310, 41888,2807, 558, 20140,16921,37767,3228, 35203,37767,35330,34440,35788,1179, 13236,23337,37767,7958, 133, 7107, 39505,756, 9043,
27811,33706,34471,21615,39505,41888,731, 20187,39505,6031, 35330,4020, 6831, 15889,34440,41888,2094, 34261,13235,755, 33066,41887,11727,7065, 7920, 33706,37767,
618, 15097,18864,41887,39504,27091,26884,35329,6552, 3152, 35329,6265, 41887,2020, 11293,28586,3022, 12144,3304, 641, 39504,30961,23017,35329,30155,17691,32799,
5474, 2495, 21830,41887,41886,10730,41886,5946, 8170, 10432,36456,33539,785, 8169, 7025, 1552, 15494,8340, 23378,37766,1966, 26883,13764,26882,34440,12436,37766,
36400,35329,13194,22444,37766,37766,37765,33066,35328,37765,33705,18305,33066,15888,33066,4454, 37765,11159,12689,23377,25583,36400,17205,36400,41886,33065,34440,
28361,41886,34070,39504,37765,34439,33065,37764,8802, 6551, 28360,35328,8339, 14757,35328,30020,12688,33705,36400,28359,41885,33705,12182,31885,41885,18304,25582,
11284,17433,31884,11279,39504,33357,6375, 36399,17204,38893,39503,12812,20847,21614,5414, 16312,30019,31883,37764,18863,22443,36399,41885,41885,41884,18133,39503,
- 16311,36399,24428,35207,36399,15887,32829,31882,36398,36398,35328,37764,15493,37764,41884,39043,39503,3711, 34439,41884,35327,9064, 6615, 41884,16740,20434,5623,
- 37240,37763,5686, 11744,12811,35997,2576, 17112,16869,17409,3784, 13706,25410,6804, 29533,27024,3547, 6414, 36398,33469,34439,36017,35327,32832,35327,3779, 7565,
+ 16311,36399,24428,35207,36399,15887,32829,31882,36398,36398,35328,37764,15493,37764,41884,39043,39503,3711, 34439,41884,35327,9064, 6615, 41884,16740,20434,5623,
+ 37240,37763,5686, 11744,12811,35997,2576, 17112,16869,17409,3784, 13706,25410,6804, 29533,27024,3547, 6414, 36398,33469,34439,36017,35327,32832,35327,3779, 7565,
25581,39503,9800, 17203,35327,4492, 34439,19483,36398,8301, 39502,39502,35326,20139,16310,11348,41883,2520, 11955,6817, 9956, 24427,37763,765, 28358,25580,13705,
- 35326,26881,29, 16816,32713,3118, 8303, 18862,5685, 5936, 34054,39502,33372,24605,41883,9396, 30018,34030,39502,41883,2103, 14765,8963, 467, 3694, 36122,5734,
+ 35326,26881,29, 16816,32713,3118, 8303, 18862,5685, 5936, 34054,39502,33372,24605,41883,9396, 30018,34030,39502,41883,2103, 14765,8963, 467, 3694, 36122,5734,
15230,21702,30017,39501,36398,5532, 22442,555, 17907,37763,15896,6854, 18658,33259,35326,33070,11726,24426,2905, 25022,26880,37763,8952, 39501,37762,39501,36967,
- 36397,24425,41883,28357,41882,12898,36356,32825,32368,36397,33705,28280,15118,16077,7829, 11749,29429,16504,33951,1941, 16413,34033,33693,15369,6584, 8008, 176,
+ 36397,24425,41883,28357,41882,12898,36356,32825,32368,36397,33705,28280,15118,16077,7829, 11749,29429,16504,33951,1941, 16413,34033,33693,15369,6584, 8008, 176,
6101, 16250,37762,31881,26529,36397,39501,41882,33704,39500,36397,39500,4851, 3555, 33704,37762,39500,7380, 26879,23824,39500,14756,16739,32821,38169,37135,16048,
14911,39499,37681,41882,24863,4772, 29976,39286,36396,17509,12375,18682,37762,36845,1567, 3735, 39499,19482,30016,26878,39499,39499,19037,17845,15593,36336,31880,
4103, 37942,37761,21811,39498,37761,33065,35326,28356,41882,26877,37544,41881,33065,10892,38025,9536, 34438,41881,36396,35325,2114, 39498,31879,36396,13467,10238,
@@ -18307,14 +18302,14 @@ static const unsigned short Ranks[197839] =
41880,6820, 18860,37760,25579,7655, 31604,24099,41880,33064,24424,35325,41880,34638,12169,6718, 38309,19035,31878,32763,1982, 41879,22763,41879,35324,27570,12810,
5145, 35324,25578,31877,35000,23376,34438,4333, 356, 36395,2825, 33515,14494,12262,33351,4431, 6947, 41879,1581, 31876,12321,19321,19162,13100,5310, 26398,34766,
37925,19540,36479,33064,37759,2880, 32458,15540,3046, 26462,16019,39223,13378,35324,18859,1992, 25577,16738,36395,33063,10729,1184, 19341,34438,30013,15491,19034,
- 3810, 2839, 17906,17905,30012,31561,36395,7097, 6511, 39497,7888, 24845,35733,1940, 39497,41879,37759,34746,34437,17121,41878,12181,41878,37739,41878,33576,1302,
+ 3810, 2839, 17906,17905,30012,31561,36395,7097, 6511, 39497,7888, 24845,35733,1940, 39497,41879,37759,34746,34437,17121,41878,12181,41878,37739,41878,33576,1302,
31875,6240, 26876,9672, 34327,3669, 41878,10907,41877,33703,15490,41877,9799, 13908,33999,35528,27035,39497,36394,33703,39496,2035, 6494, 34864,41877,782, 37759,
41877,26875,3326, 36235,39496,3317, 20844,2742, 2790, 28644,41876,6431, 6205, 24423,18858,33127,8869, 35324,22441,20516,19481,41876,34437,41876,16309,33063,31874,
28355,35462,11718,41876,14401,11500,39051,36394,13704,33063,28354,19033,22440,104, 32888,18303,7790, 41875,10089,31873,37759,3253, 36394,1108, 36394,41875,30011,
- 5481, 37758,11098,15886,6347, 39496,34162,23904,33703,33702,37918,25576,17904,14400,4612, 35323,966, 36393,38495,39496,39495,39495,39495,19032,18857,34776,2953,
- 16919,35240,24455,5116, 41875,4893, 21613,16737,37758,41875,41874,11717,16918,33702,3195, 22323,28353,39495,2080, 16291,23669,34437,30579,33835,36332,9517, 3462,
+ 5481, 37758,11098,15886,6347, 39496,34162,23904,33703,33702,37918,25576,17904,14400,4612, 35323,966, 36393,38495,39496,39495,39495,39495,19032,18857,34776,2953,
+ 16919,35240,24455,5116, 41875,4893, 21613,16737,37758,41875,41874,11717,16918,33702,3195, 22323,28353,39495,2080, 16291,23669,34437,30579,33835,36332,9517, 3462,
3164, 16010,34437,4081, 644, 29588,33702,41874,39494,39494,19454,37758,15117,34436,11716,23375,35793,148, 7907, 25242,59, 39494,28912,10431,29116,20645,36943,
- 19663,35980,15244,38546,13473,31959,34830,10728,22336,16078,38781,32893,35899,4169, 41874,33063,35323,22596,6154, 611, 35482,5848, 4523, 23735,16707,32954,6816,
+ 19663,35980,15244,38546,13473,31959,34830,10728,22336,16078,38781,32893,35899,4169, 41874,33063,35323,22596,6154, 611, 35482,5848, 4523, 23735,16707,32954,6816,
33062,13763,15368,13703,25675,21612,26874,36393,6443, 11170,15808,33062,29809,39494,37758,3029, 28352,37369,35503,27864,41874,35277,38702,11499,33702,38132,13243,
28436,11082,41873,34202,13466,33701,7740, 25575,28381,13469,33701,39493,36393,9535, 31872,2363, 32160,33062,31871,35323,10394,10625,13688,20913,6908, 22533,29156,
12645,6844, 31046,5867, 17203,3765, 30654,25081,2101, 7501, 30290,31996,15635,26257,13559,1482, 13461,8304, 30843,32826,16944,15778,20144,38318,31589,32823,19637,
@@ -18327,7 +18322,7 @@ static const unsigned short Ranks[197839] =
1445, 20977,10916,22133,28782,8947, 24026,28648,33015,15430,28991,29871,30925,32859,26668,22575,183, 16495,37756,21611,178, 9931, 35322,30150,28629,41, 15974,
35322,19320,139, 5769, 8220, 20751,3994, 41871,20075,41871,35322,5342, 5530, 30008,10727,35321,20841,8904, 14755,10726,41870,100, 5297, 24470,26701,36487,41870,
30530,6335, 2036, 21778,23918,10077,8447, 2250, 21167,19, 16917,41870,31868,35321,1117, 8801, 33700,4102, 33061,532, 34435,37756,33700,32053,41870,41869,21610,
- 12809,4725, 3252, 26979,23403,2288, 23374,8146, 3719, 36106,23222,5683, 33852,12307,14237,3603, 806, 19480,35334,5506, 23762,36342,19620,39491,33249,2445, 381,
+ 12809,4725, 3252, 26979,23403,2288, 23374,8146, 3719, 36106,23222,5683, 33852,12307,14237,3603, 806, 19480,35334,5506, 23762,36342,19620,39491,33249,2445, 381,
12587,7954, 10567,20137,41869,19419,16405,31867,16736,35321,36392,550, 10162,34435,36195,17566,851, 31516,33681,7179, 28351,8565, 1720, 39312,39491,18000,36459,
3028, 15489,2579, 424, 41869,33297,31297,10561,3681, 28350,22439,30007,20840,39491,41869,39490,41868,9671, 33700,37870,30891,966, 355, 22698,36972,36168,11030,
20813,14903,30879,28755,26965,14281,41868,37803,24487,31932,15184,13645,24941,36380,23943,38177,28221,32842,17400,7116, 6294, 41868,37756,34435,1161, 26018,11639,
@@ -18335,7 +18330,7 @@ static const unsigned short Ranks[197839] =
33700,27134,4661, 4196, 5233, 5165, 12131,12195,13100,8120, 22065,21609,27656,5173, 5494, 15401,33028,1544, 36392,11590,9301, 827, 9512, 24138,16006,26120,31866,
797, 27854,33311,30250,15576,38992,2070, 8219, 458, 886, 32961,7061, 18124,6391, 16106,22712,20724,14550,16749,9760, 41868,13251,25469,24402,15450,39490,13870,
39277,30006,35321,26873,28701,38566,511, 17201,33061,30005,41867,37400,41867,30004,41867,33699,37756,5184, 6056, 36391,18302,18301,35320,39490,13762,23475,26350,
- 22084,35320,18651,4120, 3337, 41867,34435,39490,35320,33699,31865,41866,37755,22438,37755,34434,36391,41866,3375, 37755,33699,17689,22437,39489,36391,39489,7518,
+ 22084,35320,18651,4120, 3337, 41867,34435,39490,35320,33699,31865,41866,37755,22438,37755,34434,36391,41866,3375, 37755,33699,17689,22437,39489,36391,39489,7518,
38014,9258, 5159, 11770,26308,15885,34530,307, 36391,39489,39489,39488,16308,25573,32875,455, 332, 30003,35320,22045,21608,37755,36390,28349,9955, 37754,34652,
17934,8644, 41866,38989,37754,41866,9811, 31646,35727,39488,41865,17200,39488,2685, 23981,109, 17955,41865,30002,342, 39488,31400,33061,39487,17199,26872,34434,
715, 37754,10699,30001,41865,6614, 553, 39487,3189, 35319,1165, 21, 25572,33699,12180,17198,6493, 260, 26871,41865,7306, 39487,33698,37754,1041, 41864,33060,
@@ -18348,7 +18343,7 @@ static const unsigned short Ranks[197839] =
11498,20134,41860,3569, 9796, 33059,25568,9795, 39483,6204, 31855,33058,29998,35317,41859,32888,38930,33698,35317,17901,28346,22435,22434,37751,33058,23413,29997,
22569,564, 29996,20839,4571, 34967,34242,17900,39483,37751,36654,35316,38889,29995,15894,32715,33697,41859,15949,39483,12397,209, 9019, 1612, 3630, 405, 37750,
37750,3621, 16075,274, 41859,8903, 33058,28433,15876,1137, 5786, 13801,25567,965, 4309, 12687,41859,16916,26868,41858,20430,12066,39483,26063,24416,11497,33058,
- 34432,954, 23369,39482,810, 37750,35021,8105, 3117, 33057,36304,41858,1671, 21703,17899,16074,16915,33158,8042, 33057,32330,33057,39482,37750,36524,11591,5690,
+ 34432,954, 23369,39482,810, 37750,35021,8105, 3117, 33057,36304,41858,1671, 21703,17899,16074,16915,33158,8042, 33057,32330,33057,39482,37750,36524,11591,5690,
41858,1791, 35316,11715,691, 17686,13761,17197,7254, 37749,19659,24437,31854,27528,2969, 632, 26358,20429,29994,36606,19031,14754,5225, 37749,14753,19528,41858,
36388,31853,11954,35919,35079,28404,6608, 1225, 10525,26535,22799,29076,33097,31124,33697,41857,14215,36388,21174,9396, 2308, 416, 7080, 32845,12258,16447,23178,
1872, 1694, 26124,9984, 41857,12808,39124,41857,39268,35265,35488,39482,18298,34432,23088,6411, 8647, 1978, 41857,2385, 10794,20428,37749,34554,26867,22433,37749,
@@ -18359,14 +18354,14 @@ static const unsigned short Ranks[197839] =
208, 32851,1381, 12007,21, 7413, 5869, 33084,687, 10576,30689,9275, 10288,28918,9954, 39480,23367,37485,38306,35316,37748,18853,41855,36520,484, 13234,20041,
5224, 15366,35315,17584,9266, 34412,36146,36385,7913, 7482, 39480,39479,37747,37779,3113, 36385,3381, 38159,35315,28345,37747,1926, 16303,22612,13191,38451,39479,
1542, 22946,39479,2220, 153, 16048,14752,662, 33076,12928,41855,36385,39479,17573,19105,30669,37217,36807,41855,4570, 21524,10428,1201, 37747,9734, 4859, 19029,
- 16072,12853,36781,22071,39478,6332, 8581, 8725, 23694,19028,7912, 28344,24415,5808, 32361,1894, 18700,14603,4359, 33697,33381,201, 32779,17378,34431,20426,9788,
+ 16072,12853,36781,22071,39478,6332, 8581, 8725, 23694,19028,7912, 28344,24415,5808, 32361,1894, 18700,14603,4359, 33697,33381,201, 32779,17378,34431,20426,9788,
7589, 10890,9983, 1961, 4338, 1722, 14235,33056,1807, 29541,27319,5759, 25565,36385,34572,7008, 13190,12927,36678,22434,352, 14234,660, 9200, 6691, 25250,30665,
- 1536, 31656,1619, 6531, 8670, 8276, 29891,36384,19027,16912,5935, 38714,2091, 33791,36384,2195, 9240, 1346, 35315,35315,4882, 34293,34916,32837,41854,39478,9385,
- 25564,37252,36853,4019, 13760,33696,39478,31850,33799,29993,36384,18852,8455, 24414,36257,37450,34704,36384,28494,35901,539, 12686,112, 33393,41854,35314,896,
- 31849,1254, 1001, 788, 13464,978, 383, 1250, 608, 745, 1800, 17898,1599, 696, 3135, 2071, 30233,37747,2289, 36383,39478,2330, 864, 826, 31848,15316,1784,
+ 1536, 31656,1619, 6531, 8670, 8276, 29891,36384,19027,16912,5935, 38714,2091, 33791,36384,2195, 9240, 1346, 35315,35315,4882, 34293,34916,32837,41854,39478,9385,
+ 25564,37252,36853,4019, 13760,33696,39478,31850,33799,29993,36384,18852,8455, 24414,36257,37450,34704,36384,28494,35901,539, 12686,112, 33393,41854,35314,896,
+ 31849,1254, 1001, 788, 13464,978, 383, 1250, 608, 745, 1800, 17898,1599, 696, 3135, 2071, 30233,37747,2289, 36383,39478,2330, 864, 826, 31848,15316,1784,
564, 35314,10654,1278, 31847,15365,8554, 11496,1660, 41854,39477,15544,39477,14751,37746,41854,39477,20133,35314,36383,6030, 21213,503, 15481,39284,14647,41853,
41853,36662,39477,65, 23426,16815,17154,33908,812, 1433, 1138, 33409,38181,37746,5108, 24223,41853,8104, 18851,12571,22431,19475,25563,21382,272, 6576, 28627,
- 25338,16407,39476,41853,35952,15364,21607,19119,24679,39476,41852,20837,24806,3259, 3336, 2806, 35314,20836,850, 2760, 8800, 33696,1268, 6892, 14833,408, 202,
+ 25338,16407,39476,41853,35952,15364,21607,19119,24679,39476,41852,20837,24806,3259, 3336, 2806, 35314,20836,850, 2760, 8800, 33696,1268, 6892, 14833,408, 202,
7391, 21127,39476,35356,1369, 3554, 16307,12926,41852,3568, 18296,1247, 4758, 8218, 7253, 10905,5622, 31846,17123,37746,18295,39476,33696,33696,37746,3705, 11952,
34519,746, 39475,31845,33695,4798, 36383,16734,17684,39475,39475,28656,37745,34226,41852,33695,29992,39475,12434,19474,26676,34431,13759,35313,1806, 41852,41851,
39474,23366,39474,15883,11951,23365,2371, 30370,25562,39474,546, 3629, 22776,29991,41851,39474,20870,34271,34755,33056,6221, 12591,13208,29990,15963,36383,39473,
@@ -18374,15 +18369,15 @@ static const unsigned short Ranks[197839] =
34431,34431,33055,16207,37247,31844,41850,37745,37745,41850,35313,39473,37795,20425,776, 24413,23364,8676, 33694,25561,15488,11725,76, 25098,37284,2972, 22430,
17196,38053,22880,38814,21606,33694,33694,39473,23363,19473,20022,41850,37539,27968,35435,36433,28934,3306, 14233,37552,37745,12179,37744,36382,1335, 13569,11928,
3553, 25930,10725,37722,20835,41849,41849,37117,12557,7390, 33039,36174,35313,14232,5856, 31843,36382,41849,12925,8902, 36382,17195,33229,36645,32611,7167, 18850,
- 20433,38049,36183,33055,39413,28342,3152, 12881,10187,18036,13702,12692,13701,8096, 25883,32944,19442,37744,39472,4123, 37744,3069, 27217,41849,34430,36382,3316,
+ 20433,38049,36183,33055,39413,28342,3152, 12881,10187,18036,13702,12692,13701,8096, 25883,32944,19442,37744,39472,4123, 37744,3069, 27217,41849,34430,36382,3316,
14526,28341,37163,37744,39472,20424,38795,6235, 9006, 8439, 12852,5013, 3571, 9781, 12320,26749,36130,18354,14322,39472,29988,20602,16733,13463,34430,32273,11096,
37743,17194,33617,41848,24412,35312,572, 41848,29030,37743,41848,22429,39237,21605,9534, 29987,36381,13758,19472,36759,41848,9794, 9127, 33641,10566,37471,33055,
35312,36265,25158,39472,41847,19471,33055,33054,37743,41847,25080,33694,4797, 41847,22613,37743,34430,8337, 8105, 37538,6161, 33693,7911, 27584,19026,39471,39471,
- 33693,33693,19025,18849,33054,39305,36381,16732,7208, 36960,17021,20621,28340,39471,12421,41847,18294,13233,2064, 25560,36545,15882,10783,5853, 13106,39471,5061,
- 33054,39470,15116,37742,37570,36381,11516,16071,35312,31010,37291,38343,11820,38620,29986,20132,7321, 18702,41846,33424,39470,41846,34854,29985,11278,41846,9873,
+ 33693,33693,19025,18849,33054,39305,36381,16732,7208, 36960,17021,20621,28340,39471,12421,41847,18294,13233,2064, 25560,36545,15882,10783,5853, 13106,39471,5061,
+ 33054,39470,15116,37742,37570,36381,11516,16071,35312,31010,37291,38343,11820,38620,29986,20132,7321, 18702,41846,33424,39470,41846,34854,29985,11278,41846,9873,
41846,23362,4783, 26864,35312,28339,25009,1039, 19024,10653,39470,14231,13232,1773, 14230,20982,13013,33909,24411,14073,41845,34513,39470,13462,36381,41845,39469,
7007, 9593, 39469,35311,39469,31842,324, 8407, 29357,41845,38470,3769, 29032,34411,12572,17722,38806,36515,14492,8868, 38342,30399,2211, 16269,38875,3926, 10652,
- 5529, 41845,29984,39469,3272, 37742,23361,35311,37687,24410,6945, 33192,28432,34430,860, 28821,39468,35311,26863,38239,12685,2352, 11724,26862,3151, 33270,3848,
+ 5529, 41845,29984,39469,3272, 37742,23361,35311,37687,24410,6945, 33192,28432,34430,860, 28821,39468,35311,26863,38239,12685,2352, 11724,26862,3151, 33270,3848,
17683,20131,18689,26861,39468,41844,15363,16911,20423,36380,12665,365, 2314, 6829, 39165,8569, 15989,1643, 6891, 28338,1723, 7157, 8816, 5688, 15603,18848,24409,
12684,39468,39468,39467,28420,39467,7827, 39075,31841,41844,38278,41844,35298,18033,39467,41844,41843,2623, 8054, 29965,27500,26860,2109, 32994,29901,33138,11723,
37742,25559,35311,18815,1618, 35310,1698, 28337,41843,12065,39334,33693,37742,5621, 24326,7602, 15501,345, 13880,1554, 39467,12924,902, 8622, 17883,33054,37741,
@@ -18393,7 +18388,7 @@ static const unsigned short Ranks[197839] =
8376, 18183,4754, 18453,6280, 10888,15260,21172,21602,30040,38183,8368, 39116,21870,22820,36860,26511,29136,31150,4540, 24644,29043,12420,16910,31171,7751, 37568,
7023, 36819,34129,36793,16072,32868,2693, 31429,35968,24407,36466,36618,36125,38325,3174, 16304,7096, 9793, 2012, 41841,13189,8007, 39466,41840,23359,41840,39465,
5493, 1201, 32941,21829,32959,39276,19023,20422,3604, 6583, 4313, 33692,13231,33053,19470,33572,194, 28903,41840,34429,39465,39465,11092,7564, 37740,39465,38734,
- 36380,21601,41840,39464,33053,17897,3194, 21431,29980,38570,39464,6184, 33224,36379,1925, 12417,25717,697, 18827,36379,5106, 34429,41839,37740,29979,9025, 992,
+ 36380,21601,41840,39464,33053,17897,3194, 21431,29980,38570,39464,6184, 33224,36379,1925, 12417,25717,697, 18827,36379,5106, 34429,41839,37740,29979,9025, 992,
41839,4611, 33053,15029,41839,29978,18845,41839,27792,28227,34814,33692,38165,7681, 39464,35310,17353,90, 1353, 31838,15307,29327,33053,5855, 23358,29977,14399,
39464,37740,39463,989, 39463,29976,23357,8454, 14072,9061, 37740,23590,16069,39463,36571,35402,20833,39463,20448,1584, 13460,26859,8866, 25902,16731,38935,28335,
17681,37739,9141, 1460, 5845, 12135,41838,26858,39462,15362,35310,12807,22889,9265, 29975,41838,29974,20421,23992,29973,39462,13066,41838,36379,21600,31837,23949,
@@ -18406,9 +18401,9 @@ static const unsigned short Ranks[197839] =
11060,41834,28332,35308,14763,34427,911, 16067,1117, 2318, 23462,3302, 11095,37737,35307,28096,32956,39458,39457,173, 32595,41834,34427,33691,26710,33104,36093,
23368,18292,39457,858, 19022,1659, 33927,36378,2776, 3609, 31983,778, 11280,38824,16129,15880,774, 21992,16027,2936, 31498,33051,2294, 11091,21594,37737,33051,
29967,29966,34426,35307,41834,36378,10691,2866, 37101,37097,41834,39151,19021,39457,11094,33051,5694, 24405,14762,14761,23354,36856,36378,41833,33155,36045,36377,
- 18844,36609,14748,37737,28473,19345,38778,33159,36930,37736,37736,14070,10887,9787, 37736,7005, 20832,37736,36377,41833,10192,38144,2465, 20831,8415, 3015, 5309,
+ 18844,36609,14748,37737,28473,19345,38778,33159,36930,37736,37736,14070,10887,9787, 37736,7005, 20832,37736,36377,41833,10192,38144,2465, 20831,8415, 3015, 5309,
11208,6717, 11722,35307,29072,35307,37714,28331,5486, 35306,10462,19020,35842,23659,39457,13229,25557,34426,5308, 19947,8867, 38699,276, 25257,35738,33050,12419,
- 4453, 12418,30414,33691,29965,19091,37735,37735,33691,38976,33690,7166, 22884,22570,12432,33690,33033,8728, 7919, 20130,39132,33334,34426,6653, 35306,14760,2875,
+ 4453, 12418,30414,33691,29965,19091,37735,37735,33691,38976,33690,7166, 22884,22570,12432,33690,33033,8728, 7919, 20130,39132,33334,34426,6653, 35306,14760,2875,
17921,17601,23305,24661,41833,9786, 4796, 38406,15761,5620, 20129,16730,23353,8453, 26754,34426,5307, 378, 10461,32803,3186, 17895,4193, 432, 17352,36013,23352,
9060, 33104,31943,6911, 25556,30092,590, 41833,10191,11992,23235,3463, 7933, 3684, 2194, 41832,41832,18291,18843,41832,39456,33690,35306,36377,35306,28543,33051,
24404,23488,7095, 19792,12350,33690,36377,809, 21831,41832,32108,39456,37735,21593,39456,39456,3050, 11277,19469,37735,5485, 25555,26855,31835,11400,7680, 34644,
@@ -18418,7 +18413,7 @@ static const unsigned short Ranks[197839] =
22425,10886,41829,476, 21605,81, 7868, 22235,32949,39454,12064,29771,39454,36065,31084,33767,24403,26854,22424,522, 14930,522, 33010,7901, 4104, 32961,33049,
14546,35305,41829,37733,653, 18842,39454,39454,34425,41829,41829,26853,32829,22423,39453,2618, 16301,2050, 32658,36987,38050,41828,12063,41828,13473,37732,36677,
10866,35667,33885,23691,30938,15878,16066,11721,21292,33686,11422,19916,36375,536, 1679, 13456,4666, 29724,23832,25981,5666, 17578,32266,35305,33694,37154,41828,
- 28329,24313,32969,21390,36051,7826, 37732,39453,35305,36375,39453,37732,32935,6700, 19, 2724, 1324, 3027, 3068, 39453,41828,26606,19421,35234,28675,18841,934,
+ 28329,24313,32969,21390,36051,7826, 37732,39453,35305,36375,39453,37732,32935,6700, 19, 2724, 1324, 3027, 3068, 39453,41828,26606,19421,35234,28675,18841,934,
29322,39452,686, 33227,35304,3972, 17894,32965,39452,39452,33049,18670,37940,35304,18290,35852,39452,36375,7563, 4861, 793, 41827,39451,35539,39451,39451,11093,
34424,38273,17679,4168, 20420,17893,37732,37731,24402,12431,17678,37731,5413, 39451,33689,21592,35304,41827,37423,15485,34424,15484,37731,33331,41827,35304,33689,
11948,36375,37403,41827,33049,15852,23882,37731,6423, 12542,37113,13898,9059, 41826,38240,4487, 49, 23651,12567,15922,30364,19231,21671,24914,3193, 12178,14398,
@@ -18426,15 +18421,15 @@ static const unsigned short Ranks[197839] =
9591, 26851,1692, 23003,38522,39449,34423,36374,31831,4613, 39449,31257,36434,39449,16726,9792, 16065,33689,29963,41825,37730,37730,35890,18234,9351, 39449,36374,
41825,25554,36374,38124,36374,35328,35303,37730,39448,13755,18288,33233,37729,31402,21591,30564,12177,33688,41825,41825,14069,39448,8799, 39448,36357,39448,35303,
25553,39447,34423,39447,36373,39447,33688,35303,28426,15599,29845,34852,36373,36550,36869,39201,38777,38495,41824,41824,34423,23539,39447,28244,34734,37729,35323,
- 36373,7799, 32643,32665,14014,33030,34133,41824,36373,23072,34423,39446,34422,36372,14198,37729,36212,37729,20419,17892,12806,12805,9239, 16909,13700,7481, 9386,
+ 36373,7799, 32643,32665,14014,33030,34133,41824,36373,23072,34423,39446,34422,36372,14198,37729,36212,37729,20419,17892,12806,12805,9239, 16909,13700,7481, 9386,
11632,34970,38238,38375,14192,39212,29550,24900,33354,39012,25046,14791,35426,29486,25395,12382,32884,7189, 5395, 19848,27190,22232,32185,31279,18761,32509,27472,
37771,32032,17347,15417,22691,22014,18551,29607,35997,21953,8952, 7847, 8456, 14794,15425,39446,6264, 37135,41824,23351,33688,31609,34941,35012,27591,37728,25809,
33688,20059,30583,33687,20128,34415,31927,16402,14528,29332,25358,39446,33463,6430, 23630,16841,16750,37224,17734,39243,16299,2494, 9791, 33299,36372,27518,16725,
31830,34422,8705, 41823,7908, 31829,15483,29962,17118,34000,33577,35878,37237,36372,18840,36372,37728,31828,28328,37728,20418,35988,9953, 10904,33143,9952, 15114,
- 35303,13913,1844, 15989,10190,31827,23252,28011,19018,37728,34422,34422,25552,15113,41823,35552,10617,18916,27282,8168, 39446,14759,35302,3525, 34478,15877,9189,
- 4610, 1240, 1361, 35856,41823,27623,35302,33914,33048,20127,41823,23350,6382, 9689, 41822,34444,41822,41822,3866, 7252, 32469,29961,35302,34421,35348,36371,3663,
+ 35303,13913,1844, 15989,10190,31827,23252,28011,19018,37728,34422,34422,25552,15113,41823,35552,10617,18916,27282,8168, 39446,14759,35302,3525, 34478,15877,9189,
+ 4610, 1240, 1361, 35856,41823,27623,35302,33914,33048,20127,41823,23350,6382, 9689, 41822,34444,41822,41822,3866, 7252, 32469,29961,35302,34421,35348,36371,3663,
6374, 34329,8866, 33743,28829,17677,1749, 6773, 16522,2507, 29410,27862,8717, 305, 4881, 20417,32964,20748,34077,35258,35310,6424, 38869,37000,19017,41822,37727,
- 37727,34421,39445,35302,19016,27194,38543,23349,34741,3993, 24401,41821,34280,34515,2845, 41821,16619,38010,37727,15141,21590,41821,39445,37324,33687,2187, 7437,
+ 37727,34421,39445,35302,19016,27194,38543,23349,34741,3993, 24401,41821,34280,34515,2845, 41821,16619,38010,37727,15141,21590,41821,39445,37324,33687,2187, 7437,
41821,4831, 26850,27826,27306,37851,36371,2616, 36371,4918, 6263, 33048,12484,33574,28327,41820,22422,5769, 13425,24255,33074,22846,20401,39445,14884,10042,21448,
4330, 13260,19015,2475, 38915,25298,1879, 4012, 4036, 13406,6582, 13228,20416,37490,17296,33753,29114,17094,26129,26915,816, 21501,21529,37727,33687,35928,34421,
38026,19601,14035,20828,37726,33716,29835,4959, 41820,12417,16064,7378, 6581, 17823,4213, 30043,9785, 4224, 39052,18383,34474,38536,1578, 41820,39445,41820,38576,
@@ -18446,7 +18441,7 @@ static const unsigned short Ranks[197839] =
34420,33686,37726,2735, 18714,36369,37725,29957,35301,41818,2663, 9670, 13819,16063,33686,17891,35300,41818,34018,11938,14149,34896,35929,19014,29956,35300,37725,
16908,28677,37725,29955,36369,27437,35307,24399,33048,35300,37059,21587,24430,35300,23347,20894,33474,37607,39442,41818,25550,25641,27488,3515, 8449, 32399,39441,
22961,18367,38343,37882,8543, 38586,28953,32831,33277,36067,12570,33637,11720,35218,41818,41817,41817,33047,38626,33973,33686,19466,21659,41817,33056,30907,33066,
- 33010,33999,36518,7798, 18287,7150, 32716,39441,41817,99, 35046,39258,41816,20126,32396,39441,16504,37180,35506,36939,33253,4972, 39441,19465,2865, 21939,1827,
+ 33010,33999,36518,7798, 18287,7150, 32716,39441,41817,99, 35046,39258,41816,20126,32396,39441,16504,37180,35506,36939,33253,4972, 39441,19465,2865, 21939,1827,
19013,36564,33686,2568, 15112,9087, 1196, 11891,33622,816, 9509, 24553,10221,4357, 28879,36619,7572, 33094,6160, 39440,28323,14068,36369,22421,35207,39440,37177,
14445,594, 39370,33441,11212,36369,7196, 11157,25231,41816,16062,36368,33685,12416,593, 12386,37664,10392,33402,10585,38613,4031, 14228,41816,23599,23247,37848,
34410,13213,13023,19012,7004, 35299,33853,35354,32911,4061, 4860, 33047,29669,33347,37725,37724,39440,39440,21390,35896,33707,14396,41816,33685,39439,14067,39063,
@@ -18455,20 +18450,20 @@ static const unsigned short Ranks[197839] =
13404,14066,30304,7918, 29077,35298,35614,14942,36368,33094,34698,18838,35298,34420,39203,36835,13238,15701,36368,32780,10401,11087,2834, 18773,9868, 11512,35905,
35298,5339, 39097,20622,26847,10563,31824,37126,41814,33685,21103,20880,7309, 3014, 690, 3478, 39439,36367,32057,31823,31822,36367,13334,41814,33685,41814,39438,
41813,310, 29954,39438,25549,31821,41813,2882, 3240, 1658, 26726,39438,41813,41813,37723,3963, 41812,1555, 41812,34419,35298,12323,2937, 7320, 39438,35087,35297,
- 37723,1054, 12098,39437,36367,34419,41812,2219, 37723,34419,34726,3758, 1108, 14323,36987,22922,34058,39437,2718, 9982, 38197,14756,41812,17890,35297,41811,7879,
- 1224, 34218,30415,23346,36367,9790, 20533,30660,34721,12176,33743,38358,37103,31814,19464,34342,11132,11421,25548,18201,37625,10788,24097,41811,36366,36366,1518,
- 541, 7917, 39437,16298,16061,11544,20413,32953,41811,18750,2143, 19011,6263, 22653,16060,17625,28322,36366,20412,26846,34419,39088,39437,12193,35297,41811,9588,
- 33046,6851, 3452, 34505,33684,33347,3374, 503, 38720,31820,41810,18837,39436,31819,20411,13754,35977,167, 3009, 17905,32552,32952,30007,19959,23696,13919,5732,
+ 37723,1054, 12098,39437,36367,34419,41812,2219, 37723,34419,34726,3758, 1108, 14323,36987,22922,34058,39437,2718, 9982, 38197,14756,41812,17890,35297,41811,7879,
+ 1224, 34218,30415,23346,36367,9790, 20533,30660,34721,12176,33743,38358,37103,31814,19464,34342,11132,11421,25548,18201,37625,10788,24097,41811,36366,36366,1518,
+ 541, 7917, 39437,16298,16061,11544,20413,32953,41811,18750,2143, 19011,6263, 22653,16060,17625,28322,36366,20412,26846,34419,39088,39437,12193,35297,41811,9588,
+ 33046,6851, 3452, 34505,33684,33347,3374, 503, 38720,31820,41810,18837,39436,31819,20411,13754,35977,167, 3009, 17905,32552,32952,30007,19959,23696,13919,5732,
33046,36082,33046,26845,9533, 16724,25547,34534,1255, 20413,25409,13227,6262, 39436,33046,35382,8102, 32796,29953,28503,2070, 2949, 31974,17676,4887, 28285,36779,
19463,34418,34116,33254,37723,33632,24300,14364,41810,6806, 15682,4744, 41810,39436,37901,36366,36365,4987, 26770,29849,41810,29952,10236,23345,20826,3068, 33684,
18836,39436,1876, 15222,18303,11739,35297,34301,39085,35272,37722,15622,1535, 37722,8101, 33218,26985,13699,33408,21079,31818,15055,39435,35927,33684,22643,28150,
34567,41809,33621,8409, 9383, 39435,13137,38789,5882, 20068,7530, 38148,14395,39435,37722,8217, 39435,14227,34681,41809,17209,34418,36365,37360,13457,34164,16906,
- 4308, 19010,27490,14226,41809,34802,20125,39434,22565,261, 12498,36257,33684,38091,4076, 11403,14065,13226,38417,35296,19462,39434,25546,12548,5101, 14394,7109,
+ 4308, 19010,27490,14226,41809,34802,20125,39434,22565,261, 12498,36257,33684,38091,4076, 11403,14065,13226,38417,35296,19462,39434,25546,12548,5101, 14394,7109,
345, 35296,41809,25497,36365,41808,31817,36365,18835,35296,34172,15482,37068,29951,34418,36240,38661,25545,39434,34418,11714,38192,35449,35296,12062,36364,36364,
- 35014,38348,20124,4061, 6332, 24715,26844,20123,25544,36364,6753, 14393,36786,39434,8006, 24398,25543,184, 21278,3600, 32947,18601,19930,16382,33683,24753,7673,
- 17731,10050,28321,37722,14697,32817,39405,38461,30096,34004,33605,36906,4569, 41808,34417,27081,8319, 5693, 21400,90, 8871, 14073,13323,2186, 31092,22247,6652,
+ 35014,38348,20124,4061, 6332, 24715,26844,20123,25544,36364,6753, 14393,36786,39434,8006, 24398,25543,184, 21278,3600, 32947,18601,19930,16382,33683,24753,7673,
+ 17731,10050,28321,37722,14697,32817,39405,38461,30096,34004,33605,36906,4569, 41808,34417,27081,8319, 5693, 21400,90, 8871, 14073,13323,2186, 31092,22247,6652,
24359,35151,18503,39433,27741,35530,26843,24525,1078, 25379,33683,12922,8731, 27148,36863,26484,31408,37721,35793,36590,5398, 27695,34417,26208,39433,24420,17675,
- 30059,39433,14419,41808,24552,38309,29480,34696,7319, 126, 21393,36364,18173,10226,33683,36363,41808,3403, 38641,39433,20122,12175,28232,36229,9611, 28390,1197,
+ 30059,39433,14419,41808,24552,38309,29480,34696,7319, 126, 21393,36364,18173,10226,33683,36363,41808,3403, 38641,39433,20122,12175,28232,36229,9611, 28390,1197,
28618,2216, 41807,37721,41807,39432,39432,6917, 2609, 35295,36403,17691,33778,33232,37817,36363,39432,35829,5204, 36884,33856,33683,29691,33045,26842,35750,35295,
22419,8052, 535, 31164,17299,34417,38124,21756,36770,23344,3026, 20121,41807,363, 1095, 24940,13046,5097, 13668,23523,24198,10863,20336,7664, 31361,6343, 32947,
21454,33704,32886,16905,5516, 10393,30966,34340,38856,33019,5194, 37721,10433,34417,5412, 20410,7653, 37721,20260,38846,41807,41806,36363,39204,36363,33853,41806,
@@ -18476,7 +18471,7 @@ static const unsigned short Ranks[197839] =
708, 9493, 28320,39431,35274,39431,1670, 31077,26905,11599,13459,20402,285, 8077, 30236,3655, 114, 2206, 14840,11724,26451,31058,3209, 34121,873, 26841,35578,
6961, 60, 5368, 21928,31877,41805,1030, 37720,4795, 35942,35250,39431,30296,896, 10927,30081,28569,18282,35423,33595,35846,19098,41805,38163,10016,30897,39430,
327, 27663,28039,3628, 19768,34165,4757, 39430,30879,39002,26840,30403,19771,34524,15938,8536, 25403,29950,41805,34926,12995,39430,2271, 35295,36362,36361,41805,
- 39430,33741,16896,41804,39429,3992, 50, 20553,38634,26846,36361,39429,2974, 41804,39429,39429,33412,39096,22366,26901,26952,9394, 10752,5751, 16489,6292, 7022,
+ 39430,33741,16896,41804,39429,3992, 50, 20553,38634,26846,36361,39429,2974, 41804,39429,39429,33412,39096,22366,26901,26952,9394, 10752,5751, 16489,6292, 7022,
23899,19633,15267,3409, 11719,24629,2116, 3067, 18834,39428,25542,33329,14220,36361,8041, 16904,23415,37825,34416,28319,20119,39428,33492,13698,33001,34319,35307,
19009,37079,3962, 39428,41804,9981, 2076, 14392,15360,3134, 39428,9866, 33682,23605,10562,23343,34416,36361,11713,35295,10189,16297,2749, 29949,26839,25541,20825,
8451, 33045,71, 22787,27933,41804,32636,1143, 35830,23342,37743,10903,30280,25540,36222,33682,36387,32772,30424,36360,37720,39427,18286,13354,17557,1068, 30549,
@@ -18484,9 +18479,9 @@ static const unsigned short Ranks[197839] =
530, 6577, 14361,31815,31642,41803,28317,29948,33681,15891,19163,34022,34416,41803,15000,37719,29947,41802,37719,371, 17888,41802,38903,29485,15634,13458,14225,
27880,27228,16296,5061, 16, 5206, 32630,32870,33045,11947,16215,4385, 20473,32998,2098, 11636,37719,41802,1600, 39427,41802,4230, 16023,16903,6203, 22418,37500,
39426,7476, 36360,35294,29946,38316,39426,30892,1724, 19161,2604, 315, 2132, 30716,10898,22068,33066,20371,9551, 9139, 33208,3163, 26275,41801,23682,30824,17365,
- 11494,33045,14755,35294,39426,9264, 37719,13796,34416,592, 3227, 23278,34415,33681,748, 27179,36185,36360,15294,30433,38331,39426,38889,16154,16274,32810,9532,
+ 11494,33045,14755,35294,39426,9264, 37719,13796,34416,592, 3227, 23278,34415,33681,748, 27179,36185,36360,15294,30433,38331,39426,38889,16154,16274,32810,9532,
34415,29172,17017,15094,36360,41801,37718,37468,34415,38927,34695,38600,31882,35646,36325,19451,41801,37718,11718,38603,12174,34585,38611,37519,37972,27139,23432,
- 21395,34589,34415,12838,41801,39273,41800,41800,15359,9142, 6647, 37050,4211, 7824, 13636,28542,37718,15170,38786,34605,19305,6982, 37532,12529,36826,26107,7327,
+ 21395,34589,34415,12838,41801,39273,41800,41800,15359,9142, 6647, 37050,4211, 7824, 13636,28542,37718,15170,38786,34605,19305,6982, 37532,12529,36826,26107,7327,
36941,10450,1386, 1380, 26838,4462, 26837,14754,37204,41800,41800,36359,6202, 36359,33044,39425,41799,33681,33149,16295,12606,41799,38908,38824,37718,22417,22877,
32236,22416,6943, 41799,25502,37717,9024, 35294,20824,37717,39425,39141,15110,37717,33611,32824,34642,15482,13188,2578, 36359,41799,41798,37717,15744,39425,41798,
16693,35515,15875,8740, 33416,36359,39166,37716,13753,25537,41798,34414,37896,34414,4086, 6942, 10561,6201, 39425,35294,33044,28316,38944,8184, 39409,35190,25431,
@@ -18496,12 +18491,12 @@ static const unsigned short Ranks[197839] =
35293,35292,963, 33043,41796,39424,41796,33043,33680,34414,37715,39423,13752,16294,37715,34414,39423,24023,32028,4119, 21371,34413,315, 41796,10651,12922,39216,
28314,33680,6373, 41796,39423,37271,41795,36582,9381, 34413,28168,39423,14753,35773,24395,16348,34092,39422,24967,25438,19811,41795,23339,19461,37715,2679, 32619,
12855,9017, 34481,41795,5017, 34299,39422,39422,29580,22415,32770,37775,19806,9221, 35292,32871,10391,13225,38339,10560,39422,27652,28859,41795,35106,30655,34788,
- 41794,26778,41794,24394,36311,34732,1419, 39421,37714,2622, 22155,6049, 33096,1673, 15358,17112,7475, 12520,6651, 31987,13224,36357,24758,33753,36185,38001,5961,
+ 41794,26778,41794,24394,36311,34732,1419, 39421,37714,2622, 22155,6049, 33096,1673, 15358,17112,7475, 12520,6651, 31987,13224,36357,24758,33753,36185,38001,5961,
84, 27312,26250,21327,32182,41794,34640,7562, 41794,34413,12642,37714,14310,22414,30180,41793,41793,26836,12681,35073,37714,23, 1517, 9996, 30111,17372,32820,
23291,27020,28076,13832,17693,32809,26264,18976,10264,28279,3627, 33732,22413,17448,6695, 30411,36447,25557,39421,38963,38671,3626, 29259,36150,28740,17777,36917,
38897,41793,26596,39421,41793,39421,41792,11479,30509,33498,33211,13835,32943,39420,27187,38940,2070, 8137, 39420,34936,9023, 8301, 35883,38943,35292,37714,33396,
28313,37661,4509, 4356, 22885,34413,39420,41792,41792,41792,19008,24415,21586,37713,28581,12061,36244,10575,24789,37391,33680,39420,36029,36357,15874,25535,16902,
- 12060,26835,7578, 15936,28076,39419,28258,15016,35606,36440,34412,33608,34887,37713,36357,17050,41791,29435,41791,41791,33680,39299,39241,4337, 13955,7389, 829,
+ 12060,26835,7578, 15936,28076,39419,28258,15016,35606,36440,34412,33608,34887,37713,36357,17050,41791,29435,41791,41791,33680,39299,39241,4337, 13955,7389, 829,
41791,38034,28377,13827,25765,37615,2266, 29942,26520,2160, 19460,39419,35292,26834,35291,15108,1566, 29597,34678,33679,36357,4383, 39419,16274,35291,20695,19459,
21585,41790,14973,41790,38032,21584,37713,37713,39419,41790,38121,29175,26791,34199,35044,36356,5484, 35291,41790,38259,36356,41789,39418,19633,33043,10235,33391,
39418,37712,32381,37263,36240,34608,34362,20408,41789,27321,37712,37487,35736,39418,33272,26259,26833,33679,28312,29941,41789,14064,37248,35536,41789,23338,34095,
@@ -18511,9 +18506,9 @@ static const unsigned short Ranks[197839] =
15866,22546,29850,13767,41788,6079, 10354,33358,33054,37712,3214, 23544,8608, 5768, 33033,28310,38995,36355,31548,19770,13697,6550, 30335,24393,34275,13277,32932,
20117,27090,13750,28309,3112, 39416,36324,9664, 20823,11276,19458,29940,18951,31675,33434,1966, 3527, 24503,25430,27338,23664,26498,36542,33679,26583,32852,41788,
32745,2602, 32972,32558,1403, 24085,20133,35624,1714, 9382, 18656,14616,1253, 3017, 12216,8904, 11198,28012,38534,28169,17610,36355,25044,39416,37914,34412,37620,
- 34372,12804,9506, 28356,8798, 17190,5991, 41787,28141,35605,20443,8538, 1856, 5216, 17673,15873,39416,7910, 41787,34411,23074,34191,34705,15673,37711,22541,6262,
+ 34372,12804,9506, 28356,8798, 17190,5991, 41787,28141,35605,20443,8538, 1856, 5216, 17673,15873,39416,7910, 41787,34411,23074,34191,34705,15673,37711,22541,6262,
30807,13223,6382, 21339,25762,6027, 37008,34167,19719,36205,24664,33964,34306,3181, 20581,8751, 35414,1910, 10551,4011, 4958, 21543,7244, 37451,41787,39334,18598,
- 4332, 35290,39415,33488,8226, 28354,17435,33679,38719,27610,38024,36011,31813,39306,9732, 9238, 39009,35290,36540,14464,38515,31632,33678,39415,14062,2107, 8797,
+ 4332, 35290,39415,33488,8226, 28354,17435,33679,38719,27610,38024,36011,31813,39306,9732, 9238, 39009,35290,36540,14464,38515,31632,33678,39415,14062,2107, 8797,
37711,33678,22412,19457,4648, 41787,6159, 37711,24320,37711,25616,36376,9416, 11997,1166, 6917, 368, 9025, 32840,9993, 37537,21263,36431,31160,3475, 37909,35117,
39415,12332,17852,23468,25077,25863,33796,10429,34689,35776,41786,2882, 22411,14694,37710,41786,1971, 4308, 1719, 34411,7194, 12415,16057,34411,2937, 10650,12280,
24332,20057,23337,20822,2983, 17886,2249, 41786,41786,12058,36572,14746,33042,32205,36165,41785,39415,13696,18269,415, 39414,39414,17672,36355,39414,3206, 11493,
@@ -18524,26 +18519,26 @@ static const unsigned short Ranks[197839] =
4212, 34672,35289,33318,39413,36354,21582,34795,16020,37709,6747, 34466,13222,24603,41783,39413,1146, 3886, 33041,24458,7909, 24392,26375,22770,4628, 38949,11572,
41783,27333,36354,39413,33678,39413,39412,31862,26830,33041,26490,5411, 20406,23655,35741,37989,7285, 19006,16901,14744,19005,32797,3353, 35231,6579, 212, 28924,
32999,36353,26972,27004,41783,39412,32821,35159,39412,41783,34410,34410,32937,13695,37709,36353,39412,9762, 16900,34409,38166,41782,7388, 15872,34409,13221,26829,
- 26828,37709,8709, 16255,24452,39411,41782,23335,14752,41782,16293,17774,456, 3352, 31810,23334,8408, 32541,41782,38510,37232,41781,7029, 24076,3465, 32146,9514,
- 4305, 6782, 5982, 20718,7420, 32434,2764, 69, 23142,28144,24479,14168,2124, 11965,39411,31809,39411,37708,32219,16899,39411,28307,17928,34189,21581,8005, 3865,
+ 26828,37709,8709, 16255,24452,39411,41782,23335,14752,41782,16293,17774,456, 3352, 31810,23334,8408, 32541,41782,38510,37232,41781,7029, 24076,3465, 32146,9514,
+ 4305, 6782, 5982, 20718,7420, 32434,2764, 69, 23142,28144,24479,14168,2124, 11965,39411,31809,39411,37708,32219,16899,39411,28307,17928,34189,21581,8005, 3865,
16898,33566,23950,2928, 217, 14442,39410,29937,36353,9951, 4859, 41781,2004, 12680,36353,33200,33678,9784, 3757, 37708,314, 41781,37708,41781,23754,31808,11625,
33740,33467,13279,37708,34029,30074,35129,27333,36352,41780,34409,41780,9108, 14771,10024,15835,9393, 33479,19004,36226,12414,28306,35288,41780,39410,36333,35753,
35288,33041,38661,21580,31807,39410,23333,16330,16056,35295,35288,39410,17884,8900, 16721,41780,13694,37707,41779,41779,8335, 8099, 22992,16754,10144,32572,19003,
16897,1073, 16762,7471, 1886, 33677,41779,6331, 37707,15107,37707,37085,9367, 6746, 23332,23331,35288,41779,19002,35287,16896,20405,15357,41778,18830,5828, 16895,
- 5587, 14751,16894,16055,16054,37678,13749,2337, 36352,36352,41778,39409,9392, 37656,17805,5827, 35287,11651,29410,5466, 32965,17883,14273,35287,20404,31718,6877,
- 2882, 41778,3261, 41778,39409,37537,11155,9716, 6862, 6130, 31513,32941,36382,41777,39409,39409,2491, 33589,41777,5527, 37707,2748, 25168,41777,10428,8674, 2625,
- 25679,12057,41777,8113, 9057, 16524,33012,29936,41776,29935,31806,26719,19234,25976,9783, 38615,37022,33041,27033,25210,2799, 7433, 35424,39063,34409,23330,6158,
+ 5587, 14751,16894,16055,16054,37678,13749,2337, 36352,36352,41778,39409,9392, 37656,17805,5827, 35287,11651,29410,5466, 32965,17883,14273,35287,20404,31718,6877,
+ 2882, 41778,3261, 41778,39409,37537,11155,9716, 6862, 6130, 31513,32941,36382,41777,39409,39409,2491, 33589,41777,5527, 37707,2748, 25168,41777,10428,8674, 2625,
+ 25679,12057,41777,8113, 9057, 16524,33012,29936,41776,29935,31806,26719,19234,25976,9783, 38615,37022,33041,27033,25210,2799, 7433, 35424,39063,34409,23330,6158,
18285,2149, 35287,2962, 5826, 11717,34408,11228,17670,26827,36352,1129, 12326,4279, 482, 13693,2314, 2688, 20688,491, 12699,37569,31805,41776,19001,31804,33677,
41776,38457,39408,7193, 9391, 19000,2292, 36351,34408,30025,39408,41776,31986,37706,1518, 14975,25932,1357, 34408,34408,31803,23213,16053,37706,41775,41775,16720,
36351,24391,41775,41775,39408,38536,39408,6578, 11420,37706,37706,4103, 12413,35286,37705,33677,35286,9980, 1229, 9237, 41774,8796, 15549,14209,6716, 3657, 37705,
- 7435, 35504,39407,41774,33696,34643,12803,23994,18999,41774,41774,39407,33677,35286,20116,25917,19308,26826,38440,33676,39407,36351,41773,41773,2638, 6877, 851,
+ 7435, 35504,39407,41774,33696,34643,12803,23994,18999,41774,41774,39407,33677,35286,20116,25917,19308,26826,38440,33676,39407,36351,41773,41773,2638, 6877, 851,
4922, 1541, 4414, 37452,3626, 8040, 16893,8166, 16052,37766,17819,21129,38377,9135, 39407,37705,37705,35286,34407,25532,37704,6889, 7319, 29934,17611,20115,34407,
35285,33676,41773,28305,18829,37704,35285,35285,37704,35285,19208,14387,21579,41773,10233,17188,41772,20114,35284,36351,26825,6492, 37704,35284,36350,37703,31802,
35284,39406,28304,895, 35284,2057, 37703,41772,26824,39406,36350,1357, 41772,9669, 41772,41771,1635, 31801,26125,31800,6612, 41771,11090,33040,28303,39406,25531,
- 14223,3755, 19615,25039,8334, 6261, 35283,41771,36350,17669,39406,37703,35283,37703,41771,23329,23328,37702,37702,31799,41770,37702,26823,39405,17668,41770,9668,
+ 14223,3755, 19615,25039,8334, 6261, 35283,41771,36350,17669,39406,37703,35283,37703,41771,23329,23328,37702,37702,31799,41770,37702,26823,39405,17668,41770,9668,
26822,41770,9140, 14743,41770,41769,12921,22408,35283,39405,37702,35283,33676,39405,36350,41769,29933,33676,33675,39405,6491, 26821,11711,39404,41769,41769,36349,
36349,24165,34407,36349,36349,33040,35282,36348,37701,21578,34407,9045, 32044,37701,36387,37701,39404,5069, 35282,36348,8753, 41768,34406,35282,6611, 39404,41768,
- 41768,35282,7652, 35281,33675,33675,36348,24390,41768,29932,19603,36348,41767,35281,22411,35523,21577,41767,36347,37701,22407,39404,33040,22406,37700,41767,9950,
+ 41768,35282,7652, 35281,33675,33675,36348,24390,41768,29932,19603,36348,41767,35281,22411,35523,21577,41767,36347,37701,22407,39404,33040,22406,37700,41767,9950,
33040,16292,32170,16051,31798,1215, 1535, 24198,5934, 6840, 39403,7093, 14061,21576,4966, 15106,34406,9022, 39403,17667,15871,15105,41767,5578, 41766,41766,35662,
39403,36347,37700,29931,29930,37700,13457,25530,39403,39402,9021, 29929,39402,20820,34406,18284,41766,17666,14060,41766,29928,25529,34406,37700,23861,5141, 39402,
33675,22549,2056, 39402,28302,39401,35281,7164, 41765,37699,31797,39401,41765,23327,37699,41765,36347,10729,33674,26132,35917,19277,10188,30324,31796,39401,39401,
@@ -18571,14 +18566,14 @@ static const unsigned short Ranks[197839] =
2175, 4364, 1748, 2198, 5383, 8674, 35551,33157,37184,33035,16713,34400,37064,41742,3710, 29916,36337,39390,31777,37689,15478,41742,23323,29915,5854, 19452,37688,
41742,24380,41741,32318,26811,20814,41741,18823,21569,37688,39390,39267,24671,25522,34874,35278,37227,35150,39390,39050,34400,37688,36337,28289,33668,39390,23322,
39389,9978, 26810,26809,44, 6855, 23467,9236, 18936,14757,12171,36714,9235, 15104,16049,8795, 25521,7114, 23698,33933,9205, 36922,5022, 35271,13843,39072,30594,
- 28843,33404,369, 11745,35328,7588, 11419,25520,7484, 19651,35271,6609, 4018, 41741,20296,41741,41740,28288,24379,34400,34400,19451,36337,39389,18822,39389,8794,
+ 28843,33404,369, 11745,35328,7588, 11419,25520,7484, 19651,35271,6609, 4018, 41741,20296,41741,41740,28288,24379,34400,34400,19451,36337,39389,18822,39389,8794,
13567,36336,41740,3239, 34348,16888,39389,33035,24378,37688,39388,36336,21568,33035,41740,41740,14057,2186, 41739,29914,41739,24377,21567,33668,6549, 41739,25519,
31776,4167, 37687,28287,15103,17659,41739,37687,41738,41738,41738,41738,35271,20402,11944,7651, 17658,39388,35271,29913,28286,13455,27065,1950, 12170,33035,39388,
3886, 29912,33034,41737,39388,34399,34282,29911,20109,33034,28285,23321,29910,26808,8004, 25518,14740,31775,4756, 4331, 15191,29909,23793,39387,26807,511, 41737,
41737,26806,39387,10556,12428,36336,26805,15869,39387,24376,41737,37687,34399,12679,37687,39387,14056,35270,35270,9138, 41736,28284,13184,37538,33668,25517,39386,
41736,31774,41736,2881, 39386,19450,33034,33034,36336,41736,34399,39386,7249, 24375,35270,34249,36335,31773,36335,37686,10231,15477,12169,41735,41735,36335,37686,
41735,33667,41735,34399,37686,17657,39386,17656,11705,8899, 29908,23012,33667,35270,16289,7650, 37686,34398,39385,41734,35269,21566,36335,11490,9448, 21565,33667,
- 2123, 37777,41734,25516,41734,13183,37685,6888, 5577, 20108,2392, 37685,41734,41733,33033,14384,26804,37685,285, 32524,18278,35269,1617, 3620, 31772,15388,1792,
+ 2123, 37777,41734,25516,41734,13183,37685,6888, 5577, 20108,2392, 37685,41734,41733,33033,14384,26804,37685,285, 32524,18278,35269,1617, 3620, 31772,15388,1792,
41733,31771,8793, 5073, 4965, 39385,24721,6225, 33667,33033,26803,36270,39385,26802,35269,37685,19449,36334,31770,12168,39385,37684,20639,37684,39384,21564,37684,
41733,36334,15476,20107,33314,26801,41733,1957, 34398,39384,36334,41732,37684,6490, 9263, 23320,37683,4964, 41732,29907,35269,34730,31769,39384,8003, 13057,30170,
2122, 37683,16712,32265,37683,34205,26800,41732,15868,21563,24374,39384,35268,37683,36334,36333,39383,16288,37682,12678,39383,36333,11943,39383,31768,13454,33264,
@@ -18592,21 +18587,21 @@ static const unsigned short Ranks[197839] =
14054,38421,39377,29186,39350,35361,36236,33900,11206,29901,33665,35267,39377,18820,37678,12056,5262, 29900,14383,3437, 17183,39377,36250,17655,30033,35522,31765,
11418,18995,14748,27808,37678,15867,31764,13692,41726,29899,39376,34134,35266,36330,8724, 8165, 26796,34395,21562,10312,19876,7231, 149, 5327, 25356,11070,10020,
30054,1556, 4152, 14747,3727, 22737,12802,25330,15354,12801,23573,5682, 8099, 92, 1622, 11000,30933,28942,22482,20104,32905,10387,17902,34395,29119,3372, 23317,
- 17879,14746,36610,14926,19256,33665,15528,10427,16887,14224,35266,31763,29898,796, 14439,12207,35521,16048,23966,621, 16785,19088,9401, 15709,4041, 9218, 2527,
+ 17879,14746,36610,14926,19256,33665,15528,10427,16887,14224,35266,31763,29898,796, 14439,12207,35521,16048,23966,621, 16785,19088,9401, 15709,4041, 9218, 2527,
36247,35818,41726,36882,1143, 10884,8442, 38141,30683,8360, 23095,38476,284, 3271, 19643,23673,16099,228, 6854, 26292,35173,14153,37678,26795,569, 2030, 18994,
35266,2957, 30494,33758,25751,511, 29774,4311, 13583,32, 2633, 27890,22988,10436,14545,29188,25838,36330,10555,688, 19782,22416,41726,1008, 24046,12167,23316,
7496, 35054,25130,14677,35630,9386, 433, 10577,32140,15365,21243,22734,41726,7916, 12412,11417,14223,8580, 16047,18304,18865,2354, 30503,7176, 20582,15017,20104,
- 16630,39220,5001, 34175,3726, 23315,26794,17654,33032,7003, 16886,37677,10883,16046,36330,39376,3624, 33664,6440, 8723, 4846, 17878,36646,10187,9380, 35177,5454,
- 7789, 37369,4711, 8164, 33182,30689,9979, 7021, 14222,25194,25278,5109, 5260, 11683,1723, 19931,7679, 28264,33444,1994, 25281,4586, 6373, 4730, 7284, 37158,6942,
+ 16630,39220,5001, 34175,3726, 23315,26794,17654,33032,7003, 16886,37677,10883,16046,36330,39376,3624, 33664,6440, 8723, 4846, 17878,36646,10187,9380, 35177,5454,
+ 7789, 37369,4711, 8164, 33182,30689,9979, 7021, 14222,25194,25278,5109, 5260, 11683,1723, 19931,7679, 28264,33444,1994, 25281,4586, 6373, 4730, 7284, 37158,6942,
1660, 4102, 4637, 38112,10649,1424, 39030,4539, 32548,3180, 10426,1352, 4505, 4020, 8857, 3541, 11891,5167, 35529,28323,4606, 19087,14140,41725,1099, 14067,14745,
5933, 1188, 12411,2716, 21934,4336, 28207,9978, 13219,6005, 6362, 27560,33667,11167,18993,15353,11188,39376,13182,16506,3912, 41725,36329,15056,33664,41725,33718,
11728,1976, 37888,8261, 37677,11972,17346,35717,5093, 16030,7156, 7950, 16626,35797,35100,33664,41725,12676,16936,18276,25514,8216, 41724,28942,39376,33032,33664,
- 21561,2192, 11942,37677,34395,3741, 37590,11851,10053,39375,7988, 25662,13218,6595, 9782, 15352,4256, 9977, 32275,36457,7020, 36312,33786,7678, 39375,14806,1432,
+ 21561,2192, 11942,37677,34395,3741, 37590,11851,10053,39375,7988, 25662,13218,6595, 9782, 15352,4256, 9977, 32275,36457,7020, 36312,33786,7678, 39375,14806,1432,
9540, 1287, 13741,31456,10648,18672,33332,13217,20400,18992,7677, 33807,34915,38300,39396,18991,7272, 20810,12800,10647,23358,41724,17661,32727,2769, 4773, 27308,
30195,29754,21743,12100,29063,15147,24759,41724,18990,33456,2568, 15475,19181,41724,34133,36329,14744,12055,41723,7908, 33031,34394,37677,16885,34394,33416,33339,
39375,14317,914, 27209,32887,16045,8837, 17596,3754, 9736, 11436,2377, 20242,3938, 39230,2757, 5932, 12410,18989,33663,12187,21639,41723,9379, 7649, 13216,37676,
13691,20399,3885, 30237,18338,32600,18275,30711,16044,13415,20398,12409,18988,12191,21794,34394,14793,33848,20085,21420,41723,37676,18118,25439,23889,36813,31038,
- 31425,30755,41723,21613,33198,14094,33493,409, 7871, 24274,20103,14743,12799,13838,4392, 32947,13746,20809,37676,20140,12787,36822,8441, 34394,6330, 36596,5343,
+ 31425,30755,41723,21613,33198,14094,33493,409, 7871, 24274,20103,14743,12799,13838,4392, 32947,13746,20809,37676,20140,12787,36822,8441, 34394,6330, 36596,5343,
26626,25513,35266,28280,8215, 36329,15866,33663,41722,21560,39301,41722,37676,36329,28422,33663,24501,36328,37952,6493, 3601, 32813,36460,20396,20134,38680,22338,
7283, 20785,22665,22896,33197,10478,9378, 41722,11704,18274,22151,30240,13042,26544,11596,7737, 28279,28278,4167, 10646,39330,35814,16884,9171, 2962, 33663,41722,
35265,7551, 34011,41721,16677,2293, 33125,39375,20397,37825,33211,4037, 2449, 35157,29418,10230,7387, 25596,9175, 37893,25512,1198, 6276, 5526, 11157,2069, 11273,
@@ -18617,7 +18612,7 @@ static const unsigned short Ranks[197839] =
18160,14170,8332, 35739,15101,6730, 29411,18819,25419,38370,31133,7825, 1506, 35265,35766,18986,35265,41720,21508,1217, 573, 16062,37530,22748,26201,8581, 11075,
37674,29578,31759,33031,35185,41720,33031,41720,39373,33662,37108,18273,39373,37373,41720,28276,37674,6704, 19407,25510,41719,21559,28275,2608, 5482, 23424,33030,
37674,1696, 22468,36224,37593,20396,36349,19865,17959,36779,7787, 19111,35945,41719,23314,37149,22400,8333, 29896,35265,39373,36328,41719,18818,39373,7676, 12797,
- 23015,37144,79, 23312,37289,36177,28089,896, 13232,10881,5060, 35933,35264,826, 9262, 39372,19448,36327,36074,38632,8634, 36327,4454, 11703,81, 31143,2351,
+ 23015,37144,79, 23312,37289,36177,28089,896, 13232,10881,5060, 35933,35264,826, 9262, 39372,19448,36327,36074,38632,8634, 36327,4454, 11703,81, 31143,2351,
12391,14118,22230,31921,29249,20154,33455,18985,5373, 38270,7915, 679, 17545,13618,33568,33039,11505,16042,5931, 3712, 12212,24427,1070, 14382,35985,6408, 10031,
30354,488, 16188,10126,36365,31716,1611, 1305, 25987,3849, 10577,3611, 35946,17267,33762,22395,27373,27769,19224,41719,38061,35127,1799, 23268,2575, 13215,23174,
4787, 20149,27583,35259,4183, 35653,473, 16725,7163, 28505,34757,33030,6685, 37674,41718,16094,35264,37136,8039, 5768, 12408,4559, 10425,35658,19447,36327,12426,
@@ -18632,48 +18627,48 @@ static const unsigned short Ranks[197839] =
33030,37672,24367,33662,34869,37978,41715,28271,7002, 6489, 39370,36324,41714,3319, 13180,41714,18667,35262,39370,3619, 16285,16284,41714,29895,24366,21557,36324,
9261, 39369,26791,29894,33030,9946, 28270,33661,37671,36324,29893,33661,37671,18674,2880, 39369,18270,39369,39369,17182,39368,34392,35261,11488,17700,38215,36024,
25508,25617,41714,35261,16223,41713,3683, 39368,33029,34392,39368,36323,14381,33468,22005,6387, 30927,33661,1274, 20392,18269,20101,29892,23310,35187,39368,37943,
- 36323,35261,41713,7998, 37116,35452,36512,28786,41713,14052,41713,26790,29840,2391, 24365,27854,39367,36323,36323,37680,31126,39367,4278, 3344, 17874,9781, 5131,
+ 36323,35261,41713,7998, 37116,35452,36512,28786,41713,14052,41713,26790,29840,2391, 24365,27854,39367,36323,36323,37680,31126,39367,4278, 3344, 17874,9781, 5131,
6577, 36141,39367,10317,34076,28604,34007,34391,39367,33657,30469,33580,26598,36289,36982,20256,34331,4276, 21748,36322,22398,36322,23177,36478,41712,36322,18268,
- 11267,32827,15584,36855,39366,37381,39366,33661,36322,34046,2167, 39366,36014,12920,11086,29891,6940, 33029,12425,35756,1866, 28026,25988,24457,719, 38637,6675,
+ 11267,32827,15584,36855,39366,37381,39366,33661,36322,34046,2167, 39366,36014,12920,11086,29891,6940, 33029,12425,35756,1866, 28026,25988,24457,719, 38637,6675,
1516, 6163, 4707, 11753,14814,15348,26171,12684,12376,9685, 36321,36321,39366,11172,765, 2288, 37554,16434,34185,41712,39365,38170,29847,17096,34580,23071,28269,
620, 37671,36173,1393, 11716,7788, 4453, 20391,14742,22319,10551,34872,41712,28230,39365,37671,41712,13179,34391,20100,39365,29890,13966,24364,970, 36321,26789,
- 35122,39365,39364,36321,35261,17159,33330,24710,38897,29889,17653,41711,37670,14109,804, 30702,36894,36320,38960,41711,4059, 37670,19445,10388,37670,28268,5562,
+ 35122,39365,39364,36321,35261,17159,33330,24710,38897,29889,17653,41711,37670,14109,804, 30702,36894,36320,38960,41711,4059, 37670,19445,10388,37670,28268,5562,
599, 19444,25507,9975, 1357, 34391,12166,31752,13178,10880,3124, 33641,651, 12795,6940, 7396, 28267,41711,10083,36011,25506,9377, 23724,36868,37670,33995,22397,
36977,39364,35260,37669,6608, 27633,41711,21808,14738,36320,37669,31751,7587, 41710,18816,10900,29888,21556,25505,35548,14508,35260,12675,41710,18984,30477,31750,
10344,25366,10387,33541,29887,20390,7407, 24725,9055, 21305,24171,31749,35260,35285,41710,20616,12406,37669,33660,36320,36996,6576, 31748,39364,13742,15315,25504,
28266,2741, 13286,37669,1095, 33760,18983,25948,15153,38085,37561,7012, 14970,35260,18815,5930, 20960,22456,3597, 22465,35215,29433,6929, 4921, 37056,21673,14707,
36041,5816, 2913, 1122, 12992,31732,21873,38361,20389,29260,18982,35679,7073, 10385,27414,32701,34391,28265,29765,35654,23309,14051,36320,20740,39364,38631,14050,
- 33660,22396,37668,41710,34390,35259,5752, 30119,24178,506, 32972,34390,37094,35191,8002, 36373,12986,37694,34390,34390,41709,10879,23641,35062,6111, 12029,3192,
- 3402, 33108,37565,952, 35259,1690, 25503,10382,3427, 35768,41709,29886,37668,480, 14431,37600,23308,12631,41709,35462,20388,1257, 33469,13690,34389,37668,2660,
+ 33660,22396,37668,41710,34390,35259,5752, 30119,24178,506, 32972,34390,37094,35191,8002, 36373,12986,37694,34390,34390,41709,10879,23641,35062,6111, 12029,3192,
+ 3402, 33108,37565,952, 35259,1690, 25503,10382,3427, 35768,41709,29886,37668,480, 14431,37600,23308,12631,41709,35462,20388,1257, 33469,13690,34389,37668,2660,
4852, 10229,33029,26825,6082, 39415,13572,39363,39363,37668,33419,29544,33660,41709,41708,24363,35259,33660,31747,3252, 34389,9945, 34523,35944,15952,33659,41708,
26788,41708,12200,12696,32651,39036,18665,35653,38279,34389,41708,8440, 18981,39363,559, 31301,9580, 5626, 30464,37000,39363,20099,36678,4734, 5379, 11643,34569,
25502,39362,37667,20098,37667,33659,3588, 5724, 20387,7914, 37667,22253,15099,10175,5586, 5410, 34691,33780,10645,444, 3992, 4124, 35259,6140, 41707,39362,41707,
41707,31746,2239, 34880,34389,16732,12497,4234, 38174,4753, 32729,1439, 36930,29041,4710, 34140,35909,36319,41707,5282, 36236,5546, 6201, 41706,22148,7377, 16040,
- 16882,506, 34887,13661,16039,20097,1486, 2480, 4487, 4811, 23307,7386, 15862,32872,37667,34304,12481,6029, 3587, 11152,8722, 19370,1987, 35258,11715,33348,7391,
- 33007,16038,6416, 24362,37490,29846,41706,34611,11941,20157,25339,23510,33484,4026, 36352,38090,28617,39329,14091,36053,18710,817, 1839, 3665, 6718, 6070, 3154,
+ 16882,506, 34887,13661,16039,20097,1486, 2480, 4487, 4811, 23307,7386, 15862,32872,37667,34304,12481,6029, 3587, 11152,8722, 19370,1987, 35258,11715,33348,7391,
+ 33007,16038,6416, 24362,37490,29846,41706,34611,11941,20157,25339,23510,33484,4026, 36352,38090,28617,39329,14091,36053,18710,817, 1839, 3665, 6718, 6070, 3154,
25373,21816,10043,14780,18875,31486,13745,17181,23306,20260,19991,13069,33073,6534, 5551, 39362,35258,22747,25501,38046,35367,26588,37981,33510,28210,22511,41706,
20806,41706,22061,41705,35258,39210,18980,20386,11519,9775, 11944,28925,41705,1418, 142, 34306,16674,33659,34978,8301, 28655,37606,25619,26164,33659,35356,17786,
14741,41705,38418,16327,16229,10831,29885,23305,2544, 41705,8553, 2934, 7978, 1736, 14399,23244,33854,3580, 8962, 36925,8775, 16240,34201,12794,19431,37666,17873,
14220,36583,15668,27657,23304,21332,5881, 39362,14022,27514,9789, 3133, 11151,18814,19443,38647,36432,41704,41704,34113,33043,41704,35568,26787,11013,8861, 36319,
- 34388,36401,41704,41703,41703,6864, 34062,2460, 2359, 35561,14360,6009, 35258,34822,41703,28264,12292,20747,33029,33831,10704,19131,654, 18093,31665,39361,9813,
- 719, 29402,22580,12054,37122,12295,16037,8163, 34328,34388,19761,751, 17652,41703,18843,41702,41702,28295,20805,19594,41702,41702,16736,8151, 21092,5717, 7258,
+ 34388,36401,41704,41703,41703,6864, 34062,2460, 2359, 35561,14360,6009, 35258,34822,41703,28264,12292,20747,33029,33831,10704,19131,654, 18093,31665,39361,9813,
+ 719, 29402,22580,12054,37122,12295,16037,8163, 34328,34388,19761,751, 17652,41703,18843,41702,41702,28295,20805,19594,41702,41702,16736,8151, 21092,5717, 7258,
31256,2007, 14711,12553,20284,30709,13504,1503, 25406,8966, 7560, 373, 13012,17182,31047,36037,22779,3049, 16442,263, 24091,33771,32824,18051,39361,22080,15024,
- 26117,2730, 39102,21545,36851,38834,17030,9154, 33478,9155, 37666,28263,36594,38203,3081, 99, 18042,26786,33099,2042, 15832,35564,37666,33574,34388,18813,9788,
+ 26117,2730, 39102,21545,36851,38834,17030,9154, 33478,9155, 37666,28263,36594,38203,3081, 99, 18042,26786,33099,2042, 15832,35564,37666,33574,34388,18813,9788,
396, 27775,764, 9234, 37666,2928, 18630,28004,18005,34388,36319,26247,39361,36319,41701,6875, 7806, 1982, 26785,33658,26784,38028,36840,12171,34714,37100,35347,
36170,9944, 31745,36318,38886,4819, 33001,12693,36619,38731,20156,15009,29884,5576, 34387,37665,37789,565, 34387,19442,18812,37658,17705,35775,5375, 33028,29883,
- 41701,23750,31744,25334,39361,37665,33658,39360,35257,33028,2853, 34351,39360,36899,3884, 37665,15861,14462,37665,39360,3497, 11085,24361,3512, 34387,902, 190,
+ 41701,23750,31744,25334,39361,37665,33658,39360,35257,33028,2853, 34351,39360,36899,3884, 37665,15861,14462,37665,39360,3497, 11085,24361,3512, 34387,902, 190,
41701,28262,35257,1553, 26649,5420, 1033, 29559,39360,41701,37709,33023,171, 17740,6935, 26422,20385,7873, 26268,35989,9177, 294, 9285, 36502,39098,33658,33603,
37812,38220,41700,9787, 763, 17872,36318,24594,28261,38233,14219,32805,19014,36318,13788,35257,12992,1289, 33047,18711,35257,36318,10721,36556,38321,37743,33839,
- 33028,34387,33658,35256,38769,39359,29018,23303,41700,20926,41700,1685, 39026,2179, 18811,31979,33657,4568, 28260,15860,34192,16707,16881,31592,41700,7720, 198,
+ 33028,34387,33658,35256,38769,39359,29018,23303,41700,20926,41700,1685, 39026,2179, 18811,31979,33657,4568, 28260,15860,34192,16707,16881,31592,41700,7720, 198,
33013,24063,38503,21197,35797,41699,5059, 10424,41699,24204,36317,264, 35256,23302,33598,38481,16722,35364,41699,32768,33028,41699,13177,14429,35936,29882,15472,
- 9914, 1374, 7648, 3132, 36904,37664,39359,13419,36317,41698,31743,41698,11714,1358, 3865, 41698,1132, 1293, 958, 2419, 35256,41698,41697,6893, 2308, 4017, 3959,
+ 9914, 1374, 7648, 3132, 36904,37664,39359,13419,36317,41698,31743,41698,11714,1358, 3865, 41698,1132, 1293, 958, 2419, 35256,41698,41697,6893, 2308, 4017, 3959,
21555,31742,36412,22989,35605,2729, 33079,24827,5144, 25500,34386,36317,39359,31741,35074,36317,14053,33588,37664,12053,39359,17628,36316,41697,35138,13448,34386,
32829,37664,404, 13261,10887,1330, 9920, 10804,36316,16969,34160,41697,31024,29267,21810,7449, 31258,4692, 13490,2348, 5728, 1531, 8038, 34750,1863, 15968,12026,
- 8439, 22395,113, 6607, 1827, 5825, 3160, 41697,4037, 17530,18475,15098,7250, 8541, 15097,32839,14049,37686,3289, 14048,25499,14559,23301,39358,33027,37664,8214,
+ 8439, 22395,113, 6607, 1827, 5825, 3160, 41697,4037, 17530,18475,15098,7250, 8541, 15097,32839,14049,37686,3289, 14048,25499,14559,23301,39358,33027,37664,8214,
6887, 13353,5182, 34386,7039, 15471,22795,8761, 38740,17788,16283,5409, 34407,41696,7305, 36316,23300,21690,2277, 41696,9389, 1061, 3740, 14986,5824, 39358,38465,
5492, 9780, 41696,479, 9632, 32992,2400, 14011,15429,20258,33004,28956,32878,1165, 12070,5613, 10671,24030,29125,33027,10587,10712,14892,18886,8848, 7450, 22255,
25012,19871,4846, 22944,7787, 7376, 27642,15523,18765,15703,5370, 29424,19683,29604,14740,12336,11894,29528,5548, 22798,11480,13507,14069,5247, 32207,38233,38755,
- 26673,22748,38631,6965, 31895,13533,22342,201, 21452,8130, 17643,30864,10664,36559,21554,27851,20384,17242,24987,591, 5856, 21725,1120, 27240,5324, 34910,3586,
+ 26673,22748,38631,6965, 31895,13533,22342,201, 21452,8130, 17643,30864,10664,36559,21554,27851,20384,17242,24987,591, 5856, 21725,1120, 27240,5324, 34910,3586,
30842,2031, 16801,4839, 2561, 22455,3715, 4779, 15463,28059,113, 27086,2735, 32948,17038,8815, 7068, 11972,32529,26002,25437,32962,26491,2628, 8431, 5508, 10150,
26457,15632,22600,5362, 26507,3434, 12849,2001, 23966,10457,4644, 15843,17496,7138, 2771, 7607, 5544, 31984,8721, 29155,20916,24830,18381,20096,41696,10720,18267,
9897, 37973,36316,35393,37279,26783,29881,34386,18266,37477,34385,41695,11272,33657,29880,35256,3567, 687, 39358,25588,33027,15433,38900,24248,4471, 39358,36655,
@@ -18682,7 +18677,7 @@ static const unsigned short Ranks[197839] =
31739,6649, 18977,12793,6939, 10423,13263,35255,36315,26765,962, 15889,38068,41694,39357,25498,29879,41694,15096,25497,20803,20095,16880,19148,2661, 11037,22144,
33896,5369, 41693,36876,37663,31738,14784,39357,10386,33026,20802,2304, 31737,15347,17, 29046,8089, 1044, 26056,9364, 4970, 16182,10980,9881, 25747,9547, 32821,
19472,28900,19661,11426,15407,25823,32904,13706,22700,34385,12817,25324,15346,14356,24652,20384,30632,2283, 13225,9779, 34468,14047,29164,13451,5978, 9341, 38956,
- 3131, 38156,25496,7786, 39357,35255,1011, 23297,41693,483, 24360,41693,34385,27545,31910,35832,23296,3920, 20521,14739,20382,14637,37663,39356,7914, 31693,5016,
+ 3131, 38156,25496,7786, 39357,35255,1011, 23297,41693,483, 24360,41693,34385,27545,31910,35832,23296,3920, 20521,14739,20382,14637,37663,39356,7914, 31693,5016,
39414,28025,16879,12298,12405,714, 13608,39356,19368,36252,1838, 31057,38569,38872,8898, 30548,31339,16993,16663,16318,11233,41693,22006,41692,39356,39116,33859,
35217,14762,16433,37995,37311,38458,23450,33799,34434,2945, 39248,12770,38802,11702,1468, 16999,34179,31217,37357,16036,11611,30599,21408,32626,1317, 10644,31655,
3657, 6839, 13689,4986, 19544,35255,2952, 14433,37597,38796,11530,18958,35281,3025, 35246,9388, 2182, 14045,2185, 3191, 35255,41692,39411,35431,10093,35410,35371,
@@ -18690,18 +18685,18 @@ static const unsigned short Ranks[197839] =
36955,25139,1218, 32962,3334, 1525, 5723, 41691,38220,5453, 21779,18881,37024,28730,1570, 26990,19575,33829,20219,19076,39355,34384,39263,19441,33785,8162, 33026,
8001, 17180,36315,34384,16706,1226, 9589, 8299, 1332, 34384,26304,6206, 11150,22279,37662,17945,1479, 8907, 41691,37208,18975,24004,35210,36314,39355,41691,37774,
36314,15670,26718,29878,26781,25495,4779, 26341,20380,30354,940, 20561,15825,33775,35212,41690,33025,37434,14217,4418, 3401, 10186,599, 23731,36314,2881, 26780,
- 4080, 41690,11939,1085, 3625, 36314,38961,8902, 1813, 41690,24359,8206, 182, 6189, 17616,30449,2112, 3333, 1770, 2468, 4330, 33006,1465, 25494,3018, 39046,2980,
+ 4080, 41690,11939,1085, 3625, 36314,38961,8902, 1813, 41690,24359,8206, 182, 6189, 17616,30449,2112, 3333, 1770, 2468, 4330, 33006,1465, 25494,3018, 39046,2980,
13688,37287,30535,39355,12052,33496,23295,29877,1812, 2179, 22778,2088, 1555, 3130, 1811, 2696, 6927, 22050,34431,32844,23523,36313,37662,6260, 16282,5525, 30423,
- 28259,2185, 11084,560, 1667, 10872,10878,6711, 123, 2419, 26593,39355,9018, 1218, 33657,17871,39354,27648,1335, 3624, 39361,36492,3257, 1352, 1247, 1748, 2844,
+ 28259,2185, 11084,560, 1667, 10872,10878,6711, 123, 2419, 26593,39355,9018, 1218, 33657,17871,39354,27648,1335, 3624, 39361,36492,3257, 1352, 1247, 1748, 2844,
36948,3400, 33234,35517,16789,31736,11181,3524, 32942,1627, 16959,36025,37992,26779,1381, 1740, 14738,35203,33657,4335, 15345,36505,32981,18974,39354,7586, 41690,
35028,1397, 41689,24358,41689,35254,25493,41689,33656,37662,21528,17870,28234,3256, 17869,2970, 8721, 1416, 41689,30114,31841,31436,3129, 17626,39354,15095,24357,
21828,3190, 12792,651, 38513,32884,1431, 1851, 12051,6828, 5477, 15385,37428,3703, 1850, 33056,14737,2178, 23851,37662,462, 34146,10548,30725,39354,3332, 35254,
- 2880, 7724, 20379,35527,36548,34384,11392,3552, 3255, 1742, 16168,26553,1954, 37661,16234,1352, 22169,5766, 10185,3566, 21051,16878,13287,36313,1281, 16300,2467,
+ 2880, 7724, 20379,35527,36548,34384,11392,3552, 3255, 1742, 16168,26553,1954, 37661,16234,1352, 22169,5766, 10185,3566, 21051,16878,13287,36313,1281, 16300,2467,
21960,1323, 2467, 923, 39353,37661,19440,34512,5524, 3623, 18264,35965,10745,3254, 20, 7987, 30282,23841,23451,1246, 301, 14290,803, 10877,15344,14737,13687,
17868,9588, 41688,33656,9778, 39353,7434, 29834,18810,14046,25492,41688,6036, 33025,23402,13902,35383,25845,16877,39353,35941,10899,30301,12725,37661,39353,33025,
28258,39352,33656,28257,2758, 25491,18263,707, 13176,34383,26778,26777,41688,2359, 1289, 33498,24374,28999,21645,35254,41688,1259, 17592,17651,34021,16793,17867,
33411,41687,8673, 14736,34383,35253,36878,7478, 3971, 6939, 20378,19439,29876,5483, 23294,11271,36519,24356,37661,35253,33025,36313,6684, 30171,9786, 33656,39352,
- 293, 18441,618, 31828,30655,2805, 2504, 3128, 3189, 16876,2838, 1261, 13468,1461, 7248, 14735,4277, 20377,25478,2041, 3188, 2577, 36656,136, 39352,2503, 1871,
+ 293, 18441,618, 31828,30655,2805, 2504, 3128, 3189, 16876,2838, 1261, 13468,1461, 7248, 14735,4277, 20377,25478,2041, 3188, 2577, 36656,136, 39352,2503, 1871,
37268,3253, 37798,41687,29875,35542,28256,16705,37660,31393,38223,9233, 39352,34383,33471,90, 7294, 21550,465, 2134, 2111, 2502, 30327,3474, 19254,14216,29770,
8792, 10876,1870, 38714,14889,1075, 1411, 894, 35335,28508,1520, 22935,20543,29984,37660,28791,41687,22888,36, 733, 502, 81, 859, 10228,16792,35253,12165,
10898,41687,37660,11487,5220, 33655,27085,23293,6430, 10385,31529,1657, 14592,36518,36313,39351,39351,8449, 16143,31001,24355,23292,5619, 38320,37330,22010,33025,
@@ -18711,8 +18706,8 @@ static const unsigned short Ranks[197839] =
37659,41686,22394,31320,3334, 41685,15078,4913, 39198,34347,38491,37365,24353,124, 16366,2576, 33655,9666, 23291,34382,37659,41685,41685,39351,11340,36426,37659,
38456,37673,37658,18283,39205,10420,2466, 35252,16037,2133, 18148,34382,17051,328, 6931, 28756,32939,31811,17865,24352,388, 26686,6510, 34382,35252,39350,33024,
12674,3546, 34138,37658,29874,364, 37658,34382,37658,41685,2010, 14099,2843, 34381,24504,32983,12050,11938,13743,14735,345, 13258,35822,9777, 39350,35251,35251,
- 17179,39350,1208, 1037, 11493,29873,14734,39350,4133, 39349,288, 13500,18809,37657,17649,11937,33655,34381,33024,33655,41684,2265, 8078, 17709,6389, 9585, 252,
- 34381,39349,17864,10307,6372, 29872,33654,20375,41684,34381,18782,35198,1588, 11860,41684,26776,2804, 34421,2385, 26877,39349,41684,22393,5510, 1900, 10496,6648,
+ 17179,39350,1208, 1037, 11493,29873,14734,39350,4133, 39349,288, 13500,18809,37657,17649,11937,33655,34381,33024,33655,41684,2265, 8078, 17709,6389, 9585, 252,
+ 34381,39349,17864,10307,6372, 29872,33654,20375,41684,34381,18782,35198,1588, 11860,41684,26776,2804, 34421,2385, 26877,39349,41684,22393,5510, 1900, 10496,6648,
39349,39348,41683,33654,41683,3528, 28087,3252, 2653, 8213, 22392,41683,34380,23290,21864,24688,3622, 38541,38712,27767,16306,10124,34210,7477, 675, 8672, 33024,
9260, 3618, 25487,499, 37652,36677,35732,9232, 38925,14045,15469,34025,619, 27307,18260,41683,26775,29393,33096,33654,30107,34232,12252,2969, 17648,13685,13843,
35687,39348,41682,23289,16875,14229,33654,12424,37657,32794,33024,818, 3187, 5446, 21552,28255,39348,28953,369, 37723,3551, 31734,547, 37657,1398, 41682,14037,
@@ -18720,27 +18715,27 @@ static const unsigned short Ranks[197839] =
11143,37506,33023,41682,41681,9020, 39348,2265, 37656,7091, 34380,291, 15859,485, 3399, 1415, 35251,37777,41681,2243, 1738, 16703,119, 15234,1535, 37656,35251,
41681,6683, 900, 2682, 301, 2879, 17294,17863,39347,33023,16280,8811, 34380,7907, 16702,36311,34379,36311,41681,37655,41680,36311,15958,39347,31732,37655,29127,
22381,32113,7490, 39347,37655,15858,10897,28506,34379,37655,36311,20801,9665, 39347,18355,746, 2214, 5104, 8865, 12049,3508, 14946,29535,36119,27413,7154, 30541,
- 27462,16035,21551,39346,26521,15857,4393, 36189,41680,35250,17647,8528, 18867,7317, 33732,35762,39346,29871,39346,41680,26773,39346,36459,23288,23287,1058, 2669,
- 16139,11149,507, 25486,15468,37654,36310,39345,39170,12163,41680,33023,25485,3638, 39345,15856,8448, 39345,36310,33023,1516, 3340, 11844,33080,5508, 20374,3644,
+ 27462,16035,21551,39346,26521,15857,4393, 36189,41680,35250,17647,8528, 18867,7317, 33732,35762,39346,29871,39346,41680,26773,39346,36459,23288,23287,1058, 2669,
+ 16139,11149,507, 25486,15468,37654,36310,39345,39170,12163,41680,33023,25485,3638, 39345,15856,8448, 39345,36310,33023,1516, 3340, 11844,33080,5508, 20374,3644,
8593, 17862,20364,39345,41679,39344,37200,21218,41679,34379,36310,9259, 33396,37654,24763,39344,33653,35026,17542,34152,32885,23743,38611,30818,35876,39212,41679,
29497,29870,18088,37436,41679,3127, 33332,41678,37683,17646,41678,41678,17861,37654,10643,5712, 25484,37654,36310,10507,41678,41677,21987,14615,1500, 30021,16770,
29869,31448,24351,8332, 14214,39098,24350,25483,29037,7374, 39344,41677,33022,28100,20861,18259,15467,24932,36309,9019, 35250,16279,21497,23286,7064, 12404,22391,
- 12963,37653,33408,32793,16874,33653,16694,39344,33182,14044,34379,37653,35711,2895, 29868,36309,37653,35250,34614,28254,33218,9530, 27334,25992,27699,41677,6028,
+ 12963,37653,33408,32793,16874,33653,16694,39344,33182,14044,34379,37653,35711,2895, 29868,36309,37653,35250,34614,28254,33218,9530, 27334,25992,27699,41677,6028,
37653,36309,22390,33309,39343,2598, 11413,37990,33647,29725,3426, 30913,38673,6792, 19583,19863,33255,13043,27375,41677,17645,14945,13450,41676,11638,32607,37652,
34803,33844,19173,7131, 3116, 33022,7280, 38035,17996,15739,41676,14733,39343,2555, 37208,35250,39343,41676,4257, 16056,27252,14213,36309,35385,34516,41676,37119,
- 33653,39343,33491,11881,22308,3325, 32157,34508,34985,39097,545, 22275,21042,18518,5599, 6156, 28253,39342,39342,31731,1485, 1609, 23223,20373,36308,3572, 8761,
- 28425,33551,1828, 3970, 14043,35369,34965,29867,29177,25482,2666, 28665,28252,8447, 849, 17860,15093,39342,11511,14212,12722,33707,37934,4826, 10125,19731,2416,
- 18258,32805,31730,13337,33040,29866,35249,8695, 25147,39342,35390,4600, 2842, 20093,26772,13742,4452, 38946,39341,13479,24349,5757, 20800,14734,2841, 29072,1554,
+ 33653,39343,33491,11881,22308,3325, 32157,34508,34985,39097,545, 22275,21042,18518,5599, 6156, 28253,39342,39342,31731,1485, 1609, 23223,20373,36308,3572, 8761,
+ 28425,33551,1828, 3970, 14043,35369,34965,29867,29177,25482,2666, 28665,28252,8447, 849, 17860,15093,39342,11511,14212,12722,33707,37934,4826, 10125,19731,2416,
+ 18258,32805,31730,13337,33040,29866,35249,8695, 25147,39342,35390,4600, 2842, 20093,26772,13742,4452, 38946,39341,13479,24349,5757, 20800,14734,2841, 29072,1554,
2652, 1331, 27, 14599,1659, 20210,16701,33507,37652,31664,1037, 17859,2786, 24344,41675,14211,28251,35990,41675,11083,397, 27440,26052,19133,30550,15905,20372,
17661,13333,11148,3511, 20371,32681,7899, 24292,265, 21973,20370,11713,17858,11712,9776, 30476,7675, 18972,32825,7250, 14210,8298, 31348,1698, 22610,35249,13820,
4410, 19875,12937,32893,14765,20546,37422,15466,36308,3416, 5807, 33022,7785, 3991, 11701,33652,36916,41675,31729,8719, 3251, 34196,3549, 14907,20369,11409,32803,
- 19691,35317,20216,19438,15218,12846,20368,35249,32942,38117,10184,20367,18480,8897, 22389,34003,33073,14032,34682,11440,34378,36308,24348,41675,34583,38637,1244,
+ 19691,35317,20216,19438,15218,12846,20368,35249,32942,38117,10184,20367,18480,8897, 22389,34003,33073,14032,34682,11440,34378,36308,24348,41675,34583,38637,1244,
15124,11068,1977, 36308,4045, 28906,21911,5104, 4160, 14733,1819, 9053, 27709,15986,37752,37218,5330, 39341,12048,36035,41674,1484, 10419,35601,37313,17857,12790,
9775, 32463,4513, 933, 33952,24457,34378,28250,34378,21550,850, 32097,37142,41674,21549,5853, 33022,10227,22429,37652,28693,22622,36016,34378,1327, 10944,38428,
24981,17114,5944, 34626,36953,19760,15343,35706,12919,34377,11700,34377,37652,41674,28249,34377,32605,19437,39236,33021,25481,16133,41674,33132,37651,37651,21548,
- 994, 2069, 33704,1012, 3548, 15342,11524,37651,36307,41673,25480,31728,23285,2158, 37651,2968, 39341,17644,5415, 18303,4957, 41673,17298,1311, 5711, 22388,621,
+ 994, 2069, 33704,1012, 3548, 15342,11524,37651,36307,41673,25480,31728,23285,2158, 37651,2968, 39341,17644,5415, 18303,4957, 41673,17298,1311, 5711, 22388,621,
38252,845, 9400, 6139, 7476, 1232, 11166,12809,20104,6587, 34948,3871, 948, 41673,6745, 37650,38416,17856,20366,16034,16873,18971,6321, 33091,35249,35556,12403,
- 6033, 10875,16872,1175, 26006,2558, 33021,13741,33021,1829, 30275,24067,22558,19395,6950, 26137,3584, 37650,38619,9664, 38452,36307,33902,38853,33652,36307,301,
+ 6033, 10875,16872,1175, 26006,2558, 33021,13741,33021,1829, 30275,24067,22558,19395,6950, 26137,3584, 37650,38619,9664, 38452,36307,33902,38853,33652,36307,301,
23898,35836,5779, 7881, 20365,14732,33313,9974, 6439, 11147,20704,12789,31727,14312,4456, 12814,35075,2487, 33652,7426, 36307,18441,30212,41673,9587, 14209,38271,
14499,20364,35248,20518,23284,34688,13579,8964, 950, 29159,34377,9586, 8212, 3146, 17855,37650,15044,8568, 35841,9018, 15383,477, 10066,18727,2465, 34702,16231,
37650,33652,14931,429, 33169,35610,23495,875, 10742,9774, 37649,39341,7549, 1513, 18257,34687,16700,6606, 2824, 33021,35248,97, 14731,833, 3165, 1449, 20807,
@@ -18752,9 +18747,9 @@ static const unsigned short Ranks[197839] =
31725,39339,32836,35248,9172, 14513,5181, 5536, 16031,18967,9136, 38087,8211, 6401, 16030,11710,27574,12758,28337,7441, 10418,14728,18966,11709,5180, 6874, 12401,
27420,41671,35247,39339,8671, 37260,14727,39363,20362,1984, 11828,3545, 7890, 3424, 33651,37649,29865,5997, 29864,41671,37649,33020,6548, 39338,8437, 10874,37717,
13740,28247,23016,33651,9785, 13739,12423,24347,7281, 34376,16029,41671,14207,13449,37008,13211,37648,33651,10550,39338,37648,15464,15341,32666,31724,39338,33098,
- 3734, 38057,27589,35219,16028,37648,39338,18744,34778,31171,28246,34370,36305,41671,2093, 34438,41670,2714, 41670,10896,41670,41670,37648,41669,14042,6053, 1504,
+ 3734, 38057,27589,35219,16028,37648,39338,18744,34778,31171,28246,34370,36305,41671,2093, 34438,41670,2714, 41670,10896,41670,41670,37648,41669,14042,6053, 1504,
37647,31723,19436,18224,14377,3436, 3217, 33020,3205, 39337,36283,33650,41669,33650,7473, 37647,25477,5306, 2883, 35776,9663, 26771,12400,20361,15340,35046,36249,
- 34604,15815,38592,3437, 4609, 41669,36304,16698,41669,16027,20125,37041,41668,31722,36304,33326,6404, 24308,39337,28245,26770,41668,10087,20799,35247,11936,5722,
+ 34604,15815,38592,3437, 4609, 41669,36304,16698,41669,16027,20125,37041,41668,31722,36304,33326,6404, 24308,39337,28245,26770,41668,10087,20799,35247,11936,5722,
25263,15339,37920,35247,35247,5305, 41668,33060,359, 10373,8896, 37647,39337,16026,36304,9597, 11949,6260, 5664, 39337,11270,22637,9051, 3534, 4118, 32881,18965,
29863,9943, 34969,11486,41668,3505, 38436,17853,39174,37647,41667,29369,20598,26683,2035, 15764,36717,36092,21272,41667,14316,8922, 20360,2967, 14726,39336,41667,
17852,19100,37646,26410,34262,35970,35609,17416,41667,37601,19473,9178, 10873,41666,21077,28244,32883,39336,34376,41666,41666,8895, 26598,41666,37646,35246,33020,
@@ -18763,16 +18758,16 @@ static const unsigned short Ranks[197839] =
6212, 41664,15462,16870,39335,14206,9229, 12399,7475, 37874,13209,16025,36303,12634,6938, 9529, 11708,36303,39335,2756, 7474, 15338,41664,15861,33650,34375,31282,
33650,37106,989, 18990,35633,13684,37645,36302,33699,17643,16942,34375,25476,26527,34297,30869,20811,25109,34606,38497,20092,28065,12422,24619,33020,29862,16024,
35246,9771, 34118,227, 16023,20359,34057,15337,18964,17177,12046,14724,38724,37864,4296, 4269, 16869,37624,34490,12118,10484,5980, 26769,38499,35245,15753,35417,
- 20091,15331,20090,31469,37645,22386,37645,13738,1253, 11386,38560,7019, 4233, 11707,38452,6437, 8482, 16743,37494,36207,34375,13448,11842,35910,6647, 10781,9584,
- 20089,39335,41663,33019,33324,252, 16965,19038,33893,34374,13779,19287,41663,20088,12398,20358,35245,10719,33649,34891,14376,24346,37644,37644,33649,41663,9528,
+ 20091,15331,20090,31469,37645,22386,37645,13738,1253, 11386,38560,7019, 4233, 11707,38452,6437, 8482, 16743,37494,36207,34375,13448,11842,35910,6647, 10781,9584,
+ 20089,39335,41663,33019,33324,252, 16965,19038,33893,34374,13779,19287,41663,20088,12398,20358,35245,10719,33649,34891,14376,24346,37644,37644,33649,41663,9528,
33649,36302,5261, 23281,16278,22609,31721,31720,41663,22608,36302,35245,41662,12421,39334,37644,29861,33649,39334,10549,20087,2152, 1430, 21669,23280,39334,34374,
18263,39334,7906, 24040,13175,22385,19435,12162,33019,41662,35245,41662,28242,37644,37643,36302,29692,35244,37643,12381,947, 11263,33648,36301,19434,33230,26768,
- 33648,36301,36585,12987,12917,36301,38440,8432, 34479,36301,21547,33648,7960, 39333,41662,33648,41661,23237,18808,39333,36300,33935,37011,25201,243, 24422,6209,
+ 33648,36301,36585,12987,12917,36301,38440,8432, 34479,36301,21547,33648,7960, 39333,41662,33648,41661,23237,18808,39333,36300,33935,37011,25201,243, 24422,6209,
31978,32138,17642,41661,39333,17851,34128,36300,35244,41661,23489,19632,39333,33019,36300,5304, 41661,12672,41660,37868,36300,35034,39332,15461,38143,41660,36299,
- 12671,25335,41660,34374,37121,12787,13208,34441,6547, 31911,28472,39332,35244,9135, 37643,30828,39055,14732,36299,38035,16022,19433,26459,14041,28241,35801,5058,
+ 12671,25335,41660,34374,37121,12787,13208,34441,6547, 31911,28472,39332,35244,9135, 37643,30828,39055,14732,36299,38035,16022,19433,26459,14041,28241,35801,5058,
16868,12397,1177, 7412, 6575, 8436, 18963,4275, 10872,33746,25772,39385,9302, 41660,2775, 35244,35243,32808,41659,35546,4206, 7954, 27631,5145, 7246, 12996,23277,
7016, 29697,38125,4222, 37643,8037, 491, 39242,9903, 37642,1488, 12825,6083, 34982,14392,7897, 27237,2842, 10580,12883,23989,2170, 6302, 2218, 405, 21130,21870,
- 24794,2388, 617, 1853, 36569,14736,35671,11546,11107,11917,24924,2184, 11686,38804,20745,6081, 8036, 8297, 14040,37353,25475,20357,39332,37021,31803,39127,1604,
+ 24794,2388, 617, 1853, 36569,14736,35671,11546,11107,11917,24924,2184, 11686,38804,20745,6081, 8036, 8297, 14040,37353,25475,20357,39332,37021,31803,39127,1604,
36444,16864,35281,37642,32986,1639, 31719,14913,17434,18807,32784,13361,36299,33583,39158,20356,37642,39332,18633,39184,34337,29189,33853,33701,41659,35701,39331,
39331,36299,2211, 36298,5848, 16556,8500, 18559,33647,39331,10433,25474,5575, 39331,8791, 15279,35243,22159,31718,37823,39330,39330,36672,23279,41659,607, 28485,
36298,12420,33019,29860,31717,10086,37642,26767,35243,41659,35187,29859,10384,1842, 28160,12045,15100,36600,14723,18767,34562,34250,1736, 32820,20211,32884,10642,
@@ -18781,34 +18776,34 @@ static const unsigned short Ranks[197839] =
39329,21546,33647,3924, 945, 8441, 15038,33091,21745,25473,24514,32886,23278,10871,33907,17804,41657,39329,35242,21545,11771,33629,32917,31597,41657,33647,29627,
38480,33126,41657,15509,231, 41657,28835,2607, 36501,34703,6052, 8235, 4732, 87, 27546,2835, 18114,10204,20190,32258,27334,23595,30784,29706,14653,27137,23435,
12916,3119, 6866, 25734,9017, 28463,35383,33924,23515,11211,20251,29993,39329,37641,21544,21543,20355,34094,23770,2106, 33006,11699,36298,35242,3661, 20228,18806,
- 35699,15473,5303, 13249,25472,36297,23206,28240,7674, 38155,12756,12161,18882,11485,8790, 41656,31713,4890, 7243, 437, 20734,11441,10548,33647,38469,6051, 2966,
+ 35699,15473,5303, 13249,25472,36297,23206,28240,7674, 38155,12756,12161,18882,11485,8790, 41656,31713,4890, 7243, 437, 20734,11441,10548,33647,38469,6051, 2966,
39328,31712,31711,7162, 7316, 1721, 4289, 17990,22063,25534,12781,33018,25241,35121,37640,39328,8895, 37640,41656,13814,10718,34315,23277,13737,36297,37640,36062,
31251,41656,28239,12670,8867, 35242,12160,39328,19431,39328,41656,20086,26595,34842,13797,19791,10870,34606,41655,17176,28238,363, 4371, 5145, 2164, 35392,33646,
32786,37278,28237,18805,39327,34374,37157,36297,37640,37639,41655,25471,9784, 23276,39327,35241,27199,35241,33018,39327,34139,37991,39327,36297,8035, 35998,23275,
- 13447,32794,8446, 41655,29858,33646,6259, 41655,9942, 35241,88, 939, 17526,41654,14730,41654,358, 2711, 32954,12486,1910, 37639,4608, 669, 17859,7090, 7089,
+ 13447,32794,8446, 41655,29858,33646,6259, 41655,9942, 35241,88, 939, 17526,41654,14730,41654,358, 2711, 32954,12486,1910, 37639,4608, 669, 17859,7090, 7089,
39326,21542,41654,39326,39326,10226,41654,31710,29857,41653,29856,37639,32857,2926, 32882,1140, 14657,32241,8551, 3435, 7088, 18959,41653,37639,18958,38087,11144,
39326,41653,16021,33018,34373,2142, 23011,454, 5924, 21068,4139, 7673, 12396,18957,11956,38898,27465,37638,6838, 15453,35595,5415, 19046,11495,18500,12786,35105,
39325,1081, 35241,19601,120, 9663, 515, 37638,12388,37638,183, 37090,22384,13684,37638,9091, 8373, 17850,16115,4724, 9004, 9050, 16494,7506, 33191,16441,21435,
- 36446,6366, 2725, 39325,37637,39325,2217, 3547, 35240,7289, 35810,13800,19629,41653,29855,1979, 23761,2533, 102, 33646,26766,3093, 5057, 14205,6646, 8398, 946,
- 37637,33646,18770,34943,39325,15092,18956,33482,6879, 12633,33887,26835,39417,38311,34373,39324,39324,39324,2243, 8445, 14478,31709,35838,14729,23220,39324,6744,
- 20949,20354,35581,11742,33600,24400,7261, 934, 39044,5305, 1584, 9835, 21882,25752,36964,39323,16867,24199,14204,39323,24344,698, 26421,10486,23395,41652,2942,
+ 36446,6366, 2725, 39325,37637,39325,2217, 3547, 35240,7289, 35810,13800,19629,41653,29855,1979, 23761,2533, 102, 33646,26766,3093, 5057, 14205,6646, 8398, 946,
+ 37637,33646,18770,34943,39325,15092,18956,33482,6879, 12633,33887,26835,39417,38311,34373,39324,39324,39324,2243, 8445, 14478,31709,35838,14729,23220,39324,6744,
+ 20949,20354,35581,11742,33600,24400,7261, 934, 39044,5305, 1584, 9835, 21882,25752,36964,39323,16867,24199,14204,39323,24344,698, 26421,10486,23395,41652,2942,
41652,1097, 20012,41652,39323,9583, 1360, 31981,180, 9102, 9279, 35156,18254,745, 30011,1876, 17175,430, 6546, 17849,38143,35240,14600,37637,4221, 34373,38697,
- 36395,37881,41652,39323,5020, 23539,14330,20353,36194,12419,13329,13365,14039,34373,33314,33018,39322,37895,35240,34372,3064, 37637,39277,36296,35580,9797, 2027,
+ 36395,37881,41652,39323,5020, 23539,14330,20353,36194,12419,13329,13365,14039,34373,33314,33018,39322,37895,35240,34372,3064, 37637,39277,36296,35580,9797, 2027,
29854,9972, 37636,19430,27239,33186,39322,4491, 39015,14728,22383,37636,8296, 9098, 4091, 1508, 8161, 19219,31708,27898,20352,9374, 6880, 33100,33645,35150,36823,
28236,26765,33645,13174,41651,2927, 34372,35240,11316,36525,33182,19694,26764,17998,23274,8160, 12044,36578,25119,29853,34766,1726, 30444,41651,39322,13076,41651,
37714,39322,23274,33319,6090, 16847,3454, 4358, 3522, 41651,37636,16020,16019,14203,35855,32873,36296,36296,14375,37636,13446,17848,13736,18955,13173,36296,39321,
- 7018, 6050, 36393,36295,41650,10641,35239,17641,214, 29768,33017,37635,24343,31004,35239,41650,35239,39293,20798,5279, 10457,14202,35239,39321,6027, 32916,3398,
+ 7018, 6050, 36393,36295,41650,10641,35239,17641,214, 29768,33017,37635,24343,31004,35239,41650,35239,39293,20798,5279, 10457,14202,35239,39321,6027, 32916,3398,
18681,37129,6714, 18253,36745,36594,37030,16018,39321,15460,37635,41650,34372,34372,37612,37359,1497, 27095,34752,28759,26763,25470,37635,34611,34371,16866,33645,
33645,12669,33992,37635,18804,35081,39321,26817,22716,38940,5340, 41650,35884,34371,41649,35238,41649,41649,12785,39320,29877,5767, 38049,30395,39320,37634,39320,
2403, 33522,35671,41649,31707,39320,3565, 34371,15091,26957,2092, 23273,35238,31674,39319,32571,35238,25600,32519,9373, 37521,5410, 39319,37634,41648,41648,13172,
37634,28235,36295,25142,21459,14721,29140,37634,39319,36750,25469,2419, 4248, 11759,30018,21091,20351,18954,11976,38719,41648,26830,11424,329, 11344,13682,11411,
- 1242, 28234,15336,15090,6886, 28058,38486,21052,319, 12331,37633,17080,32996,35600,18953,4433, 13110,298, 9483, 16865,31419,33644,1135, 21420,23153,35238,1551,
+ 1242, 28234,15336,15090,6886, 28058,38486,21052,319, 12331,37633,17080,32996,35600,18953,4433, 13110,298, 9483, 16865,31419,33644,1135, 21420,23153,35238,1551,
38914,23115,23639,27211,18048,41648,31706,22382,26520,41647,33017,10224,2817, 22381,36295,34665,3261, 41647,34371,12395,28233,36295,21541,4255, 593, 33198,25594,
34370,41647,41647,39319,7558, 41646,36294,9400, 35066,1055, 541, 15677,33238,2811, 33491,15089,33644,22380,35237,20085,2723, 41646,34162,41646,11246,36795,21309,
26762,35375,41646,41645,23517,38599,37662,14720,15362,31053,39336,41645,32808,23272,26761,23271,35237,26760,33017,35237,39318,33017,29852,39318,33016,41645,41645,
- 35901,37633,41644,41644,17640,34370,31705,35237,37408,37642,36249,28232,41644,26759,37633,34370,242, 16017,24760,2073, 12784,28373,17882,33644,13653,39318,4883,
+ 35901,37633,41644,41644,17640,34370,31705,35237,37408,37642,36249,28232,41644,26759,37633,34370,242, 16017,24760,2073, 12784,28373,17882,33644,13653,39318,4883,
17847,20481,41644,31756,41643,3702, 1930, 5574, 1187, 37244,5721, 31313,36340,35236,19098,1615, 5533, 8324, 9449, 30991,33587,37918,23867,8435, 41643,486, 11360,
- 2773, 18803,1195, 9016, 3979, 15335,33083,36005,6973, 12783,36294,39127,38943,41643,21540,24342,15459,36294,24341,31704,35236,31703,41643,17483,10526,16033,7469,
+ 2773, 18803,1195, 9016, 3979, 15335,33083,36005,6973, 12783,36294,39127,38943,41643,21540,24342,15459,36294,24341,31704,35236,31703,41643,17483,10526,16033,7469,
9845, 8756, 26758,11143,36294,41642,41642,39318,33644,33016,41642,16864,24813,37633,36849,1608, 26154,20350,34470,26757,37194,26756,22379,33643,38452,38153,38493,
39317,28231,33643,34370,13171,25468,32088,17225,19409,36281,29851,5929, 16016,9582, 38930,41642,41641,34570,28230,37600,23270,33643,29876,36293,37590,41641,36293,
41641,38282,3157, 11924,19375,9378, 5228, 22701,31316,12201,12782,14719,30021,997, 13630,8176, 5766, 3170, 37632,14394,37632,9477, 35236,24340,9971, 38350,36293,
@@ -18829,7 +18824,7 @@ static const unsigned short Ranks[197839] =
37628,8275, 32639,8712, 32874,6495, 3205, 15088,35842,3929, 4508, 4940, 32993,37009,16860,6319, 34138,10181,8034, 39287,16859,12159,31697,7482, 39312,20797,33641,
10180,16858,36260,2538, 11270,31819,6574, 31969,37903,3969, 3363, 34367,6645, 1697, 33088,9581, 1417, 15862,41634,5056, 12997,37214,7672, 7155, 32848,12394,36200,
33256,33076,32726,36728,4709, 6522, 17174,797, 21358,39312,28397,31696,3813, 24604,35233,22376,3734, 24337,34636,20084,41634,8550, 37628,869, 37627,7671, 12778,
- 35278,14717,36322,35233,21631,6781, 15767,22679,25945,2339, 3265, 12499,13680,38561,28937,11082,10225,37386,33400,3171, 2667, 17246,4624, 26751,38550,3535, 5756,
+ 35278,14717,36322,35233,21631,6781, 15767,22679,25945,2339, 3265, 12499,13680,38561,28937,11082,10225,37386,33400,3171, 2667, 17246,4624, 26751,38550,3535, 5756,
10640,36290,39312,26182,38688,14738,39157,13368,38535,10233,9969, 33145,37058,35233,9941, 36290,5452, 16014,18802,11934,24336,17694,14716,170, 4288, 31854,10274,
9564, 17696,6025, 24797,5163, 18250,39311,16013,35232,3961, 23936,37187,37744,5308, 14715,18950,4537, 37627,5681, 28226,8033, 25343,2270, 10179,37011,38798,16012,
37627,21538,14200,37766,20083,382, 3558, 32547,13326,10417,35655,743, 6791, 6080, 14199,3431, 18949,16011,6873, 1589, 15616,10178,14198,33641,18249,3366, 24466,
@@ -18840,98 +18835,98 @@ static const unsigned short Ranks[197839] =
37626,33524,1845, 6589, 28818,5055, 3206, 20345,3602, 8567, 4158, 28887,27697,39311,5238, 20796,9049, 11705,14714,20344,16197,36158,15086,35218,5658, 35232,22375,
28224,37626,15238,580, 2597, 41631,23267,6815, 5765, 20343,12041,24108,16067,41631,16010,39311,33640,39310,2747, 12040,35232,25533,34915,4999, 10748,41631,25465,
12393,37626,41630,29848,37625,37625,39310,21977,17637,2326, 41630,18185,5779, 38415,24334,31694,32877,39310,8920, 20777,15180,36797,9384, 4083, 17310,3674, 34856,
- 10128,3958, 39310,17842,11081,33014,18946,36289,3891, 22248,26750,35231,41630,10868,35231,30532,39309,34366,6790, 18558,38550,13678,10882,36362,39309,29847,4651,
- 3922, 20421,18725,19292,7499, 14357,3533, 5815, 31834,37877,8000, 33640,41630,22374,35002,825, 22864,34366,6789, 5269, 14713,31693,4162, 15085,5680, 29846,1892,
+ 10128,3958, 39310,17842,11081,33014,18946,36289,3891, 22248,26750,35231,41630,10868,35231,30532,39309,34366,6790, 18558,38550,13678,10882,36362,39309,29847,4651,
+ 3922, 20421,18725,19292,7499, 14357,3533, 5815, 31834,37877,8000, 33640,41630,22374,35002,825, 22864,34366,6789, 5269, 14713,31693,4162, 15085,5680, 29846,1892,
33640,33395,16716,13634,11409,36441,34871,39359,8670, 10335,5625, 12039,4656, 37882,13067,11704,4413, 27441,9968, 18408,34151,39309,33640,9769, 20342,6024, 34341,
18945,8295, 10638,14712,34397,12685,33639,15329,33147,37625,38303,20579,17841,17840,14080,13677,29721,10311,20341,19821,28586,31692,34366,12392,6049, 20340,41629,
- 10224,12418,602, 13400,20448,9789, 37625,24878,1190, 13117,41629,6607, 2331, 19690,13403,30706,39309,36289,6370, 10483,13444,12343,22373,41629,2329, 18104,3271,
+ 10224,12418,602, 13400,20448,9789, 37625,24878,1190, 13117,41629,6607, 2331, 19690,13403,30706,39309,36289,6370, 10483,13444,12343,22373,41629,2329, 18104,3271,
4752, 5516, 8294, 17194,18944,11138,12777,23684,33639,14373,29098,39308,36289,20795,183, 23893,24950,33639,947, 3968, 2390, 17819,35873,27780,41629,41628,15084,
20339,28223,41628,27883,9008, 1697, 27923,24336,13219,26848,9891, 1396, 39308,34366,41628,11408,25464,41628,39308,605, 5393, 6240, 36992,20338,2288, 3791, 17123,
10642,34565,10667,12085,6573, 10546,7835, 3901, 3585, 14787,17839,3492, 12915,36659,39308,28222,39307,38022,38984,30457,13443,20048,25463,5278, 9383, 14196,14711,
41627,27770,35231,36288,29420,41627,29845,7001, 39307,34365,39307,30623,2803, 2522, 41627,36288,17173,39307,820, 3083, 7604, 10894,4138, 1519, 2578, 22029,29646,
8331, 12776,35599,15699,30877,12395,39306,9940, 41627,35231,38487,23285,37624,34211,36288,25462,31691,29498,36288,39306,33014,35230,17636,10867,18943,11483,35230,
- 39306,35230,35230,41626,39306,37624,16856,38802,912, 6161, 32878,11576,27663,20818,26452,4137, 12062,1148, 891, 12664,31833,16009,1813, 28221,39305,36287,8031,
+ 39306,35230,35230,41626,39306,37624,16856,38802,912, 6161, 32878,11576,27663,20818,26452,4137, 12062,1148, 891, 12664,31833,16009,1813, 28221,39305,36287,8031,
36921,14195,4135, 5722, 6714, 39305,10893,37655,11703,1, 5186, 12701,23818,13205,39305,41626,29844,39305,8894, 12775,4794, 4689, 9527, 13903,28220,37624,34365,
- 37976,36287,33013,39304,3020, 3251, 6239, 36007,33172,12158,7199, 23266,33639,17172,6205, 29843,977, 13278,33638,17191,10716,5445, 12038,970, 4195, 26589,7098,
+ 37976,36287,33013,39304,3020, 3251, 6239, 36007,33172,12158,7199, 23266,33639,17172,6205, 29843,977, 13278,33638,17191,10716,5445, 12038,970, 4195, 26589,7098,
33530,3693, 8157, 23485,23714,19525,22157,30012,20176,21233,1552, 12037,2683, 16008,33373,38667,26495,11652,116, 20612,3810, 20838,20890,31813,32975,3386, 32875,
33437,1667, 1655, 10728,25461,31690,13204,33638,11698,13428,31689,31688,31687,35229,26749,26748,41626,22372,37624,35782,41626,39304,38597,6751, 21357,15394,20337,
- 13676,6204, 31665,2647, 18942,584, 9191, 30642,27917,28808,20336,10416,17838,5217, 38776,10637,4752, 24785,13136,33638,19124,13675,6112, 9228, 12391,12417,3288,
+ 13676,6204, 31665,2647, 18942,584, 9191, 30642,27917,28808,20336,10416,17838,5217, 38776,10637,4752, 24785,13136,33638,19124,13675,6112, 9228, 12391,12417,3288,
29842,34283,22371,31584,34842,8372, 31686,7087, 27805,41625,31685,1722, 14194,13887,33013,3900, 41625,7192, 8863, 13674,14179,9442, 5880, 17837,21537,41625,37623,
18248,5942, 15725,30710,10070,15048,23537,39304,18941,2029, 33638,41625,20045,8785, 33013,41624,24335,17635,41624,24334,33637,41624,18801,37623,12266,41624,23265,
37061,3470, 3129, 13104,39304,2934, 14710,5277, 41623,34654,41623,7839, 32978,29358,5306, 9768, 18940,25110,14193,3577, 4231, 17890,36287,893, 2323, 29781,18902,
- 23446,27037,13673,14010,21143,36973,8376, 32440,16581,1162, 18939,17415,29891,20335,2018, 37135,31585,22168,41623,2762, 5806, 3270, 1252, 14304,33105,7670, 2526,
+ 23446,27037,13673,14010,21143,36973,8376, 32440,16581,1162, 18939,17415,29891,20335,2018, 37135,31585,22168,41623,2762, 5806, 3270, 1252, 14304,33105,7670, 2526,
32045,3820, 25609,6872, 6966, 11702,10636,27710,29008,33306,14709,16855,14708,22370,1157, 28350,6203, 10415,14707,17836,12390,36287,20334,8210, 16276,35229,13672,
- 27995,15347,2815, 1650, 9967, 9644, 2537, 12774,2241, 7669, 3957, 39303,33637,37623,37623,38242,20794,26747,26746,39303,14036,28219,1268, 36286,16854,20333,5879,
+ 27995,15347,2815, 1650, 9967, 9644, 2537, 12774,2241, 7669, 3957, 39303,33637,37623,37623,38242,20794,26747,26746,39303,14036,28219,1268, 36286,16854,20333,5879,
9580, 9382, 32921,35229,31495,20793,1037, 37622,37622,37622,15083,17634,7086, 25460,37622,8789, 33196,35229,18103,34365,41623,36117,37621,37969,31039,5592, 16853,
- 418, 15758,34926,7912, 787, 33637,4985, 14192,29841,7848, 16852,4558, 13671,18938,16007,22749,16851,9675, 9767, 9766, 352, 23458,6587, 18514,30969,8578, 3227,
- 16850,23989,19869,10635,12389,5015, 20332,16849,20331,39303,39303,10866,18937,14726,38583,5679, 37262,33234,10414,35228,10634,39302,28218,8893, 41622,39302,1956,
- 24358,28217,28149,9381, 14451,4036, 32918,3497, 8116, 10238,10865,14249,2613, 16937,2379, 7618, 14874,3870, 14517,102, 3714, 16895,31234,19482,25886,28216,7911,
+ 418, 15758,34926,7912, 787, 33637,4985, 14192,29841,7848, 16852,4558, 13671,18938,16007,22749,16851,9675, 9767, 9766, 352, 23458,6587, 18514,30969,8578, 3227,
+ 16850,23989,19869,10635,12389,5015, 20332,16849,20331,39303,39303,10866,18937,14726,38583,5679, 37262,33234,10414,35228,10634,39302,28218,8893, 41622,39302,1956,
+ 24358,28217,28149,9381, 14451,4036, 32918,3497, 8116, 10238,10865,14249,2613, 16937,2379, 7618, 14874,3870, 14517,102, 3714, 16895,31234,19482,25886,28216,7911,
7280, 34365,34364,21991,30693,41622,5878, 15328,6937, 17010,16848,39109,28396,36689,19355,9579, 16847,13670,34364,7112, 7373, 6841, 36854,34499,20082,497, 26816,
- 28349,358, 20578,17835,18936,15327,18935,24333,5295, 2506, 3704, 26036,35269,13003,38013,20330,20329,39302,1940, 41622,7939, 22832,28231,16640,37621,38975,6079,
+ 28349,358, 20578,17835,18936,15327,18935,24333,5295, 2506, 3704, 26036,35269,13003,38013,20330,20329,39302,1940, 41622,7939, 22832,28231,16640,37621,38975,6079,
21822,9677, 32903,3972, 7764, 15326,25010,21182,5368, 38772,730, 7632, 21235,34237,18934,14191,17834,33499,38266,20328,20179,34671,37208,25959,8030, 36814,19288,
- 21590,7838, 11445,27107,36524,13669,13668,3153, 7910, 16006,39302,22096,3357, 9381, 8660, 14190,1760, 29331,14706,17633,35060,20412,168, 17833,23, 4751, 4844,
- 5822, 31832,28625,39301,2169, 13203,41622,37621,20327,8720, 33935,18933,9966, 34364,16941,25799,2920, 9578, 16846,33531,2584, 34122,1505, 39301,41621,39301,8432,
+ 21590,7838, 11445,27107,36524,13669,13668,3153, 7910, 16006,39302,22096,3357, 9381, 8660, 14190,1760, 29331,14706,17633,35060,20412,168, 17833,23, 4751, 4844,
+ 5822, 31832,28625,39301,2169, 13203,41622,37621,20327,8720, 33935,18933,9966, 34364,16941,25799,2920, 9578, 16846,33531,2584, 34122,1505, 39301,41621,39301,8432,
18247,26745,36286,41621,34364,15719,39086,8444, 41621,3229, 8550, 41621,35228,39301,18932,15325,18931,8892, 41620,41620,26744,31696,31684,35228,41620,18246,37621,
33637,34363,29840,18800,39300,20288,21902,25459,20792,33013,37885,18245,21536,34363,34911,36286,27001,9924, 20326,39300,41620,22879,39300,18930,19429,19517,22689,
38979,17073,6082, 43, 30690,24065,1509, 4421, 6065, 4163, 19763,8483, 11241,10945,16978,12360,18168,25592,9645, 17024,16114,12234,29869,13927,20767,17780,18859,
- 28304,20458,11350,29218,32312,14024,15876,34005,39300,9015, 30726,37620,29396,11480,11989,39299,33012,22369,37870,13667,317, 16817,32735,32991,36979,36922,5159,
+ 28304,20458,11350,29218,32312,14024,15876,34005,39300,9015, 30726,37620,29396,11480,11989,39299,33012,22369,37870,13667,317, 16817,32735,32991,36979,36922,5159,
1851, 33623,33556,35216,7428, 12912,34801,18235,9048, 17832,8159, 5321, 37821,13088,28922,19354,8471, 36496,7643, 2774, 302, 6329, 38753,30105,10105,38102,35896,
8995, 9134, 16581,4263, 7783, 17831,27531,2962, 37620,13666,29668,30044,8862, 12388,41619,36419,2238, 20128,19428,29579,27417,635, 33912,9276, 1512, 25057,39112,
5979, 1685, 39299,36286,7408, 36285,6078, 41619,13202,20325,37620,35228,17048,19427,9662, 27938,33636,31683,28215,33012,15457,20081,29280,10084,41619,19426,31285,
41619,29839,41618,4680, 23306,21249,20324,39299,15334,27151,21493,38408,20323,37854,41618,25458,31682,38045,33636,35227,33636,34363,34325,39315,3048, 26167,35443,
18929,26834,36285,36285,24332,26096,722, 21817,28395,24272,8320, 39299,6467, 33012,1464, 3857, 17731,547, 25212,32884,25778,37823,6509, 10633,13201,14705,34675,
7372, 17830,41618,10864,36285,8577, 14704,6236, 866, 34851,38703,14703,23445,32960,35313,37541,23264,8431, 19800,33626,36574,39298,11442,31497,36138,22771,33012,
- 37620,7736, 39238,36284,7371, 33011,27956,39298,35227,34363,39165,41618,1908, 3621, 4141, 12773,4840, 14189,8719, 38604,41617,39298,22827,41617,19425,36284,2284,
+ 37620,7736, 39238,36284,7371, 33011,27956,39298,35227,34363,39165,41618,1908, 3621, 4141, 12773,4840, 14189,8719, 38604,41617,39298,22827,41617,19425,36284,2284,
18244,41617,17604,25457,8669, 28649,22794,34362,32467,33271,4962, 39298,24530,36438,20080,16275,8434, 6545, 25701,41617,13168,41616,23263,39297,22634,41616,12609,
41616,865, 14878,6399, 41616,35227,41615,33011,20791,26585,35765,37905,25456,2575, 33232,2774, 23676,27294,1950, 15183,16696,8788, 9661, 5005, 12036,41615,39297,
- 34362,34272,41615,6103, 430, 34362,26743,6252, 37619,41615,19664,31907,24502,37619,1116, 10933,39125,943, 38054,19424,28214,31707,39297,2467, 35227,8292, 1041,
+ 34362,34272,41615,6103, 430, 34362,26743,6252, 37619,41615,19664,31907,24502,37619,1116, 10933,39125,943, 38054,19424,28214,31707,39297,2467, 35227,8292, 1041,
14105,1926, 3452, 14372,37619,6936, 30837,10632,38234,15324,20228,5663, 41614,8891, 26742,39343,35226,27378,36897,38843,39297,23262,41614,29566,41614,35226,41614,
14702,12035,39154,14792,15323,5784, 14186,37047,1661, 26181,33830,37843,5494, 19423,34090,13331,35910,16845,29394,33984,16919,9397, 21951,9299, 20647,18243,39296,
41613,41613,17405,20322,41613,20790,39296,37619,35226,41613,37091,33736,36284,36284,633, 21976,12034,12348,4293, 41612,35025,37769,4191, 23261,2807, 37618,34362,
35226,7000, 37618,39296,23260,17632,22368,12914,41612,35225,23259,41612,39296,39295,41612,9965, 26741,35225,37618,32680,34135,2345, 7731, 20992,13574,1058, 33037,
38035,33880,6328, 10681,24650,7244, 41611,506, 18709,36079,15796,17196,41611,39295,4250, 41611,6048, 8978, 22300,37618,34233,21467,36590,34762,33636,27025,20049,
- 9095, 37811,13403,38103,10383,32227,37088,18242,36209,14725,39295,32258,11080,41611,37617,41610,39295,13442,14831,8232, 11697,15456,26147,20941,33384,1710, 2356,
+ 9095, 37811,13403,38103,10383,32227,37088,18242,36209,14725,39295,32258,11080,41611,37617,41610,39295,13442,14831,8232, 11697,15456,26147,20941,33384,1710, 2356,
23945,36973,28199,1583, 2615, 33563,32908,8103, 12327,25079,28743,39294,41610,7191, 4956, 23289,41610,37617,28261,14160,6306, 5184, 36595,14002,23843,37617,35082,
37617,36832,15115,33280,41610,14188,37901,20664,25715,10631,41609,55, 20321,281, 17829,15322,1200, 769, 190, 18928,18927,1098, 3331, 28213,41609,37127,34361,
2831, 34240,3082, 30479,36822,3826, 33635,18926,1478, 67, 18925,24564,16844,16005,1292, 388, 10177,1852, 512, 14187,41609,41609,19422,23683,8715, 36734,39294,
1522, 24115,39294,18241,24331,13735,2452, 7243, 16843,35225,41608,34188,41608,35225,35586,41608,28212,35399,23175,41608,39294,41607,41607,205, 3546, 13242,32529,
8158, 4343, 12482,22367,33635,39293,41607,36283,35564,41607,33011,37779,37616,15940,41606,37808,41606,605, 34755,39293,37573,36283,41606,32774,25471,11371,17171,
- 38751,158, 7873, 26169,16148,34361,8209, 33409,34313,26487,38422,20583,7454, 382, 36405,36283,36986,2297, 7540, 5394, 41606,29248,21535,278, 14210,2003, 5720,
+ 38751,158, 7873, 26169,16148,34361,8209, 33409,34313,26487,38422,20583,7454, 382, 36405,36283,36986,2297, 7540, 5394, 41606,29248,21535,278, 14210,2003, 5720,
15116,13290,30589,30603,2923, 16605,28211,38511,444, 26641,41605,39293,29838,36283,38961,8189, 30894,35224,41605,41605,25455,14066,9526, 39293,37616,29535,33635,
9227, 12387,20055,4221, 35238,15082,386, 7417, 10641,33041,18924,35224,3496, 19238,24246,6788, 27495,3324, 6461, 20750,39394,36198,35588,37616,14701,39091,11407,
1125, 21692,36282,41605,37616,36042,13167,38237,41604,37615,31523,16004,2027, 35861,26918,25768,14001,15897,30104,331, 4347, 4895, 8314, 37615,2217, 26740,35224,
- 2328, 38743,2054, 39292,33011,36791,41604,41604,269, 873, 21837,1379, 6848, 18923,25878,5276, 12772,41604,39292,34361,36282,14186,25454,20320,9226, 17828,6023,
+ 2328, 38743,2054, 39292,33011,36791,41604,41604,269, 873, 21837,1379, 6848, 18923,25878,5276, 12772,41604,39292,34361,36282,14186,25454,20320,9226, 17828,6023,
16842,18027,27907,41603,32789,39292,41603,4220, 23258,24330,3468, 422, 18311,205, 29286,5126, 16935,21547,30611,25562,36109,3107, 11701,36580,21532,4452, 18905,
37296,41603,26739,35224,25190,25453,21534,41603,29310,3791, 5903, 28570,39292,41602,16582,31681,9577, 14629,38009,41602,33010,36282,39291,2464, 33635,19421,35223,
13665,33137,39294,31680,10389,31814,29837,10630,14185,18028,13337,37615,20468,41602,4382, 37223,2567, 21516,2763, 41602,36282,10863,14465,35987,1100, 1718, 23627,
8293, 28210,9783, 39291,16695,37615,15831,35223,41601,33073,3434, 2587, 31679,35223,38137,27120,25788,36768,22366,36281,41601,39291,31678,37614,33329,37614,36440,
- 15560,41601,28455,19266,33634,37614,14700,4920, 22762,39291,30615,18922,10629,3123, 4307, 12666,8787, 13391,37614,10628,4536, 20319,8029, 86, 35223,34086,424,
+ 15560,41601,28455,19266,33634,37614,14700,4920, 22762,39291,30615,18922,10629,3123, 4307, 12666,8787, 13391,37614,10628,4536, 20319,8029, 86, 35223,34086,424,
2881, 27981,6318, 20318,15121,22934,10537,7472, 33634,41601,22365,33634,36281,2669, 23257,41600,34361,36869,41600,9576, 826, 12309,34360,41600,31677,35222,39290,
9134, 26267,35222,20317,37613,22364,39290,7486, 33021,33010,35688,19420,900, 37613,35222,39290,39290,28209,34965,39289,33634,2525, 34729,37613,37613,15830,41600,
32948,36281,30336,36281,39289,242, 37612,28208,34360,8668, 41599,12157,24304,39289,27165,38826,39289,31676,39145,34924,14035,37612,5072, 38808,8890, 8889, 31675,
9225, 29836,37612,1510, 41599,29979,39288,39199,7384, 758, 39172,35222,26738,37612,32358,4035, 31916,39288,13734,6549, 13449,29835,28207,14034,34307,12386,41599,
12487,3428, 15321,2508, 23170,35221,455, 8923, 29834,39306,32903,38203,20610,1334, 10627,13863,22020,3511, 33446,15320,21302,30274,16841,385, 17964,27779,25706,
- 17827,33864,1751, 7560, 29524,22667,30239,1503, 35221,23908,15319,17826,37283,3683, 38006,702, 30977,8442, 33195,969, 15943,35280,16003,12898,41599,17825,8888,
+ 17827,33864,1751, 7560, 29524,22667,30239,1503, 35221,23908,15319,17826,37283,3683, 38006,702, 30977,8442, 33195,969, 15943,35280,16003,12898,41599,17825,8888,
36280,12238,1805, 28907,16840,20316,39288,36996,24329,81, 15333,9014, 32421,3973, 41598,3482, 24917,19645,36684,7054, 33119,33010,36769,1299, 25285,2655, 25377,
8694, 10715,3122, 12421,330, 32830,15480,7579, 18799,16002,25379,16571,16839,17824,37628,37134,10234,34360,3175, 2722, 4851, 9343, 26407,32390,9777, 8036, 20315,
7729, 10372,10661,13441,24938,1442, 28026,2857, 26720,7383, 34278,12665,5409, 41598,41598,39288,39287,36280,39287,4585, 7782, 17823,1421, 15455,39287,41598,24436,
3860, 18893,4360, 36280,35221,34787,39287,34360,33633,651, 36172,5148, 29833,7016, 9939, 41597,25452,8887, 39286,41597,6488, 15454,34878,2382, 34359,37611,33010,
- 27940,2519, 20531,3784, 14699,19419,41597,28206,18921,34736,3301, 23318,6508, 25843,35221,16636,17491,37082,41597,29346,9257, 14033,41596,37611,17982,19872,2546,
+ 27940,2519, 20531,3784, 14699,19419,41597,28206,18921,34736,3301, 23318,6508, 25843,35221,16636,17491,37082,41597,29346,9257, 14033,41596,37611,17982,19872,2546,
38322,35220,36808,41596,452, 7482, 27771,26492,17247,17803,4099, 8158, 12651,38841,29255,35224,35432,2866, 35640,38345,26418,14161,35476,18920,2615, 5877, 26206,
- 35245,38636,12445,24010,34286,17914,12065,37611,41596,37611,10273,9972, 11700,23256,26030,11696,37610,33633,15855,37610,41596,10862,7584, 8748, 37610,23255,6077,
+ 35245,38636,12445,24010,34286,17914,12065,37611,41596,37611,10273,9972, 11700,23256,26030,11696,37610,33633,15855,37610,41596,10862,7584, 8748, 37610,23255,6077,
24286,39286,18798,10714,8667, 13166,20005,21360,4397, 36280,16274,16694,37610,20789,22363,9133, 15453,28205,39286,811, 18251,17170,31674,19418,41595,3395, 37609,
33009,20788,33633,26737,34359,4137, 26788,21506,31673,18015,34041,36563,28044,13890,3103, 39286,20787,36279,21730,7781, 35014,33716,41595,37609,22362,28204,41595,
26736,16001,1436, 37201,13200,7182, 41595,8401, 35068,33009,17405,539, 2301, 16515,12033,4762, 16273,1472, 15149,1719, 23040,10258,203, 7435, 1932, 37609,39285,
6765, 4792, 22827,26800,4924, 41594,8330, 18797,5195, 37609,39285,39285,12354,39285,41594,15854,31672,34359,16273,25694,11134,26086,1287, 4955, 14698,17180,33009,
17631,28203,6886, 12385,16409,3852, 5871, 22361,8230, 11554,13726,2212, 26420,14697,5555, 5978, 10413,3110, 29321,414, 98, 25587,3061, 20623,14828,30873,24510,
- 31671,10382,22360,38315,38237,17822,9575, 2530, 20639,33214,12525,19426,8273, 9050, 41594,2077, 9691, 18919,1053, 29930,24396,982, 4500, 26697,8006, 17982,1757,
+ 31671,10382,22360,38315,38237,17822,9575, 2530, 20639,33214,12525,19426,8273, 9050, 41594,2077, 9691, 18919,1053, 29930,24396,982, 4500, 26697,8006, 17982,1757,
41594,15705,41593,7224, 31670,17662,36279,9047, 38727,13199,29071,17821,35620,7583, 37608,37608,10083,18918,7382, 18240,39281,4927, 19326,34953,16000,7370, 20314,
- 16693,37608,1305, 6712, 39284,29832,36279,2575, 10206,13938,18567,25704,6122, 9308, 24257,41593,33633,11699,23254,34359,30131,35495,9417, 37608,33009,39284,460,
+ 16693,37608,1305, 6712, 39284,29832,36279,2575, 10206,13938,18567,25704,6122, 9308, 24257,41593,33633,11699,23254,34359,30131,35495,9417, 37608,33009,39284,460,
39284,12771,1802, 14866,16838,2642, 36605,35220,10626,784, 8886, 2574, 2128, 20313,34680,35220,39304,15643,9126, 26809,34807,33632,26735,2987, 15999,41593,41593,
- 625, 28966,17169,33008,11327,24165,33632,18796,7242, 350, 5616, 31232,15452,20271,26982,23045,17820,6045, 10823,8239, 33146,38692,2931, 5646, 22002,11137,9529,
+ 625, 28966,17169,33008,11327,24165,33632,18796,7242, 350, 5616, 31232,15452,20271,26982,23045,17820,6045, 10823,8239, 33146,38692,2931, 5646, 22002,11137,9529,
20412,7582, 2534, 5729, 4880, 3474, 4136, 30581,4396, 9975, 3869, 19233,26011,201, 803, 1429, 4341, 4750, 10894,5678, 3415, 9216, 7294, 11784,4459, 3416, 32783,
5523, 41592,33008,35825,15888,35186,28202,30988,15659,7581, 20312,34337,5821, 33707,16764,3436, 13664,7369, 4482, 14184,6999, 3220, 6488, 3294, 29095,32826,15954,
- 34157,15130,18004,8881, 1707, 35856,7471, 5521, 16301,9964, 4367, 14979,8831, 25073,19818,19820,11136,36695,26476,15081,1085, 39357,4627, 5977, 28805,752, 7024,
+ 34157,15130,18004,8881, 1707, 35856,7471, 5521, 16301,9964, 4367, 14979,8831, 25073,19818,19820,11136,36695,26476,15081,1085, 39357,4627, 5977, 28805,752, 7024,
22508,36493,16837,37471,15643,21623,17819,4425, 3345, 12770,15318,13911,3902, 28277,39108,37142,3588, 33397,419, 9220, 26213,9938, 22359,1917, 11695,26734,39284,
41592,33008,26733,37607,34358,9937, 13165,39283,39283,12664,37607,3847, 9660, 37607,18239,13440,39283,23253,39283,27327,35005,37349,822, 39282,23252,41592,32489,
3977, 39186,8666, 3716, 10274,2836, 2479, 18795,10422,35220,36279,39282,37607,700, 154, 3485, 19533,29272,13198,472, 9765, 15998,20311,1035, 28201,3601, 36063,
@@ -18946,84 +18941,84 @@ static const unsigned short Ranks[197839] =
13825,33520,24892,34210,36466,25449,19209,39279,18053,8718, 12769,38410,28197,12283,31555,36276,33007,33655,5019, 38694,12768,35931,29217,16836,7668, 37604,36276,
5219, 23608,498, 11685,5491, 37607,33970,2419, 2057, 20338,22699,37150,7588, 38077,11134,25394,14696,41588,31665,14029,36276,30558,19141,41588,18916,35218,39180,
31664,1802, 37087,36276,33690,2361, 7668, 41588,461, 14256,31969,37278,7734, 8717, 36275,18944,35978,20308,18915,4648, 20307,22358,8208, 4688, 37604,11269,34357,
- 33006,24328,960, 37604,36275,39278,14500,17989,27272,37604,39278,1923, 32872,36762,10625,33892,14183,12032,14182,11697,26004,8566, 11133,13439,35759,35104,5764,
+ 33006,24328,960, 37604,36275,39278,14500,17989,27272,37604,39278,1923, 32872,36762,10625,33892,14183,12032,14182,11697,26004,8566, 11133,13439,35759,35104,5764,
34815,3482, 14181,18914,9763, 18966,37880,41587,36275,11406,11696,29210,13196,5364, 30900,37750,14180,2384, 20306,39246,11695,35958,1118, 7067, 17818,41587,17885,
- 34665,17817,3956, 37761,17883,39278,17371,14127,9422, 3712, 6054, 39162,33631,31663,39278,39277,16272,38417,10221,41587,35218,2144, 33690,2596, 15193,24758,6202,
+ 34665,17817,3956, 37761,17883,39278,17371,14127,9422, 3712, 6054, 39162,33631,31663,39278,39277,16272,38417,10221,41587,35218,2144, 33690,2596, 15193,24758,6202,
7909, 13195,32398,7737, 1128, 34089,1563, 14695,4981, 20305,38439,36271,5956, 32969,16325,34357,41587,18293,25448,16271,25447,3043, 3901, 2734, 8575, 20304,26771,
- 35218,23249,17168,36626,3735, 1990, 9380, 4253, 3946, 16767,35217,8716, 3430, 9762, 11353,26396,26271,30672,5579, 6116, 27639,5014, 20270,22518,18913,12031,509,
+ 35218,23249,17168,36626,3735, 1990, 9380, 4253, 3946, 16767,35217,8716, 3430, 9762, 11353,26396,26271,30672,5579, 6116, 27639,5014, 20270,22518,18913,12031,509,
10751,15316,38280,3179, 11889,33631,25346,41586,2936, 17816,16835,11160,5028, 17842,18793,37160,23945,33034,8825, 10423,32854,35217,11592,35024,22357,8520, 41586,
30865,39277,35217,41586,33006,38018,1138, 8618, 28120,24833,16220,38124,27987,20054,2502, 29677,17757,27771,18912,485, 7935, 31185,16883,38552,15376,35883,23940,
35246,9356, 14694,16444,15757,34080,19831,10306,18964,17815,33654,17397,23472,38246,3679, 37792,41586,24327,26731,1002, 36275,22121,9224, 26865,4810, 36154,16834,
34675,20784,41585,3024, 15879,33330,23378,2668, 12767,18911,7368, 38865,8549, 4213, 37603,15996,6787, 10624,11405,9379, 37229,27661,31662,37941,23248,28196,12663,
- 3318, 8329, 39277,29829,7733, 20783,31661,41585,31660,1293, 9378, 6935, 37603,26730,18910,33006,11925,33630,15451,33006,37996,39277,26729,23247,18792,33946,7905,
+ 3318, 8329, 39277,29829,7733, 20783,31661,41585,31660,1293, 9378, 6935, 37603,26730,18910,33006,11925,33630,15451,33006,37996,39277,26729,23247,18792,33946,7905,
37603,22356,41585,15816,16833,13078,41585,2946, 7732, 8861, 9573, 17814,1077, 20303,3481, 9377, 18909,16832,24326,34040,5819, 24325,24324,33005,37603,34356,41584,
- 12662,33005,33005,14905,15995,33005,39276,35217,3756, 17813,16831,20436,676, 27000,25237,14362,23517,16280,37602,12641,20854,18653,37648,22720,41584,914, 2158,
+ 12662,33005,33005,14905,15995,33005,39276,35217,3756, 17813,16831,20436,676, 27000,25237,14362,23517,16280,37602,12641,20854,18653,37648,22720,41584,914, 2158,
30822,10176,36274,35216,34356,1993, 11614,29828,9083, 23246,8715, 31241,29465,35590,35216,4421, 14693,9761, 10412,7470, 20302,1515, 20477,33932,4390, 20673,22731,
- 15882,36274,31744,1230, 32965,17381,15994,17812,34356,37602,6400, 35892,41584,12416,41584,36274,33004,36274,7381, 24323,22355,41583,3149, 5451, 15315,16830,8027,
+ 15882,36274,31744,1230, 32965,17381,15994,17812,34356,37602,6400, 35892,41584,12416,41584,36274,33004,36274,7381, 24323,22355,41583,3149, 5451, 15315,16830,8027,
17167,20078,41583,33507,7492, 39276,12913,41583,2518, 39276,4809, 24322,33630,32464,22354,8207, 41583,41582,4684, 26188,41582,18545,15993,26881,39276,36273,34356,
41582,6138, 17811,6475, 32992,1179, 22195,39275,4816, 33630,35899,3845, 41582,35216,17166,16308,8664, 8443, 2210, 28188,11694,8803, 10543,29276,2329, 3332, 21225,
24703,17810,39105,37602,2837, 23105,28979,36145,36890,22226,1983, 31383,20587,15614,41581,1186, 12623,41581,2698, 33489,37269,41581,36273,35488,33162,31478,24964,
- 5840, 30929,12180,20301,14692,34853,20300,1369, 32648,26988,36379,29827,982, 3831, 6463, 41581,20299,3144, 37943,14691,26262,23084,9963, 14179,20298,41580,528,
+ 5840, 30929,12180,20301,14692,34853,20300,1369, 32648,26988,36379,29827,982, 3831, 6463, 41581,20299,3144, 37943,14691,26262,23084,9963, 14179,20298,41580,528,
5367, 15314,22238,5553, 18908,38553,2897, 9572, 18907,4647, 32798,20297,35621,15313,13663,13662,17809,14690,13194,4458, 13212,12030,13193,6934, 9760, 16829,21293,
10861,11132,11694,16110,24104,2065, 5408, 15312,6933, 34355,6803, 38447,24321,6507, 13532,27784,12225,15853,31659,18906,18905,10471,22353,17629,37602,10623,16828,
6545, 1827, 7279, 10860,1291, 7469, 946, 15992,15084,28681,6651, 9571, 11693,16827,11404,36273,11126,33630,3789, 34392,12972,19892,34355,28567,37601,32787,31444,
33497,34355,35434,20351,13423,32870,32205,30890,25400,36135,36273,1553, 28213,30609,33796,33000,11867,15705,36722,872, 20034,22352,41580,33652,33158,25446,38700,
27704,38189,34355,28195,34354,26409,8786, 34354,20077,11658,33004,36272,41580,38807,31181,39091,21820,35061,26042,37440,20963,15312,22136,9570, 7780, 13661,16826,
27253,29575,14156,7432, 37323,32356,25782,33022,31049,9377, 17808,15502,34111,38687,20296,10847,12631,17016,21680,32894,322, 36967,9849, 20422,28650,9257, 36272,
- 39275,33004,35833,6814, 29658,35568,2755, 39275,27731,34700,37601,2775, 26297,5054, 35216,39275,39274,35215,35280,12661,24973,24251,21707,37230,33759,3288, 9892,
+ 39275,33004,35833,6814, 29658,35568,2755, 39275,27731,34700,37601,2775, 26297,5054, 35216,39275,39274,35215,35280,12661,24973,24251,21707,37230,33759,3288, 9892,
7278, 5763, 15976,24889,29887,12766,14401,2127, 35096,37601,22351,30987,38115,8442, 5407, 41580,30778,38314,11131,38905,24756,10622,3473, 39274,209, 12851,12415,
37601,39274,39274,23245,25445,24320,29826,41579,627, 1191, 489, 2935, 7667, 37600,18238,3709, 11403,15450,7908, 178, 11347,14689,35215,6999, 29825,29824,36272,
34354,20036,41579,16256,9733, 35565,708, 8280, 5996, 41579,15767,20554,41579,24077,34354,26728,33629,38363,33629,34353,33629,18904,33629,41578,36665,33004,41578,
609, 38739,7622, 26574,41578,38047,39273,13660,9223, 39273,12440,39273,549, 5905, 13040,39273,7907, 445, 8871, 35869,35923,3422, 37600,17165,41578,1783, 37560,
7557, 14178,11729,8157, 17807,10542,3139, 5585, 35654,41577,33628,41577,16729,24319,28090,15592,7823, 33003,39272,41577,41577,18635,34353,1501, 35215,37600,26727,
22350,24318,25444,9256, 33003,17164,34353,37600,36272,15077,31658,37599,29823,34750,37599,16270,37599,3931, 41576,18237,14371,8236, 35215,5046, 37862,18415,14927,
- 7981, 33003,5275, 36030,11482,6162, 15239,35214,13659,1534, 9376, 23119,5490, 20295,19860,1505, 7468, 17239,8401, 39272,33003,41576,6201, 14688,22349,2905, 7906,
+ 7981, 33003,5275, 36030,11482,6162, 15239,35214,13659,1534, 9376, 23119,5490, 20295,19860,1505, 7468, 17239,8401, 39272,33003,41576,6201, 14688,22349,2905, 7906,
41576,41576,41575,31921,32921,21649,35060,41575,12660,13438,5342, 12932,1438, 36271,2981, 32198,13528,24124,14286,39240,32836,4954, 23340,5762, 415, 11035,19318,
29678,11692,2614, 13538,3057, 6102, 37599,11693,7905, 17163,28194,3725, 1406, 36271,1145, 13009,15852,10822,39272,37598,8606, 33628,28193,2660, 35214,6427, 37781,
13164,9525, 15991,23460,35214,23772,19416,15449,17162,15448,41575,41575,41574,6937, 39272,35214,37380,41574,12403,36271,6155, 7727, 7904, 39351,37598,3708, 39271,
33002,18903,41574,37598,20294,29822,1542, 34912,35213,7277, 9085, 13541,2091, 17638,36271,36270,11481,2676, 474, 41574,36768,35213,24317,25443,33002,11692,41573,
- 15076,20782,34353,39271,4672, 39271,16659,41573,34352,37598,4420, 20076,37597,34352,41573,35213,39271,41573,36270,33628,363, 41572,33628,35213,36270,9824, 564,
- 35736,22174,36692,14168,9540, 19843,5612, 32220,1310, 17943,38172,37143,39270,35212,6267, 33627,26726,21532,23244,39270,41572,35212,37597,6743, 26725,41572,7779,
+ 15076,20782,34353,39271,4672, 39271,16659,41573,34352,37598,4420, 20076,37597,34352,41573,35213,39271,41573,36270,33628,363, 41572,33628,35213,36270,9824, 564,
+ 35736,22174,36692,14168,9540, 19843,5612, 32220,1310, 17943,38172,37143,39270,35212,6267, 33627,26726,21532,23244,39270,41572,35212,37597,6743, 26725,41572,7779,
628, 4191, 8663, 37597,39270,4921, 10411,15990,41572,9814, 34889,9222, 33627,23068,6372, 37597,36270,1664, 18093,9759, 32806,41571,9372, 36269,33627,41571,41571,
35212,2347, 6047, 824, 20075,5422, 16991,25852,39270,39269,9936, 31657,6998, 13731,18791,23243,41571,28287,9371, 41570,37596,41570,35548,31656,33627,39269,34352,
26724,26755,20068,14105,3717, 32976,37743,8555, 34259,21531,25442,34352,41570,31655,39269,12414,12413,29549,29821,41570,33002,20552,15989,17022,104, 4922, 18261,
14597,28915,9524, 10859,37170,22348,37596,39269,41569,25441,16825,4166, 24316,4387, 12659,11079,10892,37596,36335,22865,35212,32899,38140,786, 39268,41569,36974,
- 31654,34529,21530,28659,10323,41569,13332,11130,29820,24315,41569,37596,39268,37595,21704,6561, 13192,36348,8714, 1495, 25470,1379, 26723,41568,9659, 440, 8681,
- 13143,7234, 6823, 25670,30325,21315,32158,32951,32718,2016, 23896,14783,12720,39268,36405,28214,18236,6436, 1806, 7260, 29782,21940,33171,41568,34351,11124,8548,
- 36254,32996,39268,35948,36269,19415,3225, 1453, 30958,16950,11724,1304, 2553, 6644, 37595,7189, 31134,2614, 1813, 12040,23633,7123, 14782,15734,25116,25195,500,
- 18902,10546,17253,29819,34351,11129,41568,25903,24974,41568,20995,10858,1410, 11838,744, 9370, 41567,15075,1905, 36269,33742,41567,1178, 31653,35063,15851,1374,
+ 31654,34529,21530,28659,10323,41569,13332,11130,29820,24315,41569,37596,39268,37595,21704,6561, 13192,36348,8714, 1495, 25470,1379, 26723,41568,9659, 440, 8681,
+ 13143,7234, 6823, 25670,30325,21315,32158,32951,32718,2016, 23896,14783,12720,39268,36405,28214,18236,6436, 1806, 7260, 29782,21940,33171,41568,34351,11124,8548,
+ 36254,32996,39268,35948,36269,19415,3225, 1453, 30958,16950,11724,1304, 2553, 6644, 37595,7189, 31134,2614, 1813, 12040,23633,7123, 14782,15734,25116,25195,500,
+ 18902,10546,17253,29819,34351,11129,41568,25903,24974,41568,20995,10858,1410, 11838,744, 9370, 41567,15075,1905, 36269,33742,41567,1178, 31653,35063,15851,1374,
13191,17806,41567,4144, 6790, 33626,23575,2830, 25189,33626,6957, 2855, 29818,29817,41567,37595,38849,15447,1545, 39267,12412,31693,38050,36036,39276,36269,36268,
- 955, 17995,34351,33605,1661, 28162,9523, 33626,1324, 39267,19689,26236,9962, 776, 10164,27181,17749,32817,20293,2245, 33382,9152, 15836,29213,241, 37827,4967,
- 6316, 10757,269, 2954, 2892, 6076, 583, 5677, 4535, 9961, 37940,22489,25176,231, 28292,1068, 34351,8551, 15093,36268,8950, 4354, 4557, 8026, 1942, 37595,5317,
+ 955, 17995,34351,33605,1661, 28162,9523, 33626,1324, 39267,19689,26236,9962, 776, 10164,27181,17749,32817,20293,2245, 33382,9152, 15836,29213,241, 37827,4967,
+ 6316, 10757,269, 2954, 2892, 6076, 583, 5677, 4535, 9961, 37940,22489,25176,231, 28292,1068, 34351,8551, 15093,36268,8950, 4354, 4557, 8026, 1942, 37595,5317,
16277,52, 5333, 30294,31091,41566,27493,16116,18864,23242,39267,31643,8763, 30278,39267,41566,41566,3991, 33030,3990, 20292,19541,3064, 23241,3926, 37594,39266,
- 14177,33626,31652,41566,21361,41565,39266,33002,39266,33625,41565,15196,31651,33940,3056, 60, 7892, 20018,37401,580, 8998, 31088,19243,13687,1291, 3018, 2878,
+ 14177,33626,31652,41566,21361,41565,39266,33002,39266,33625,41565,15196,31651,33940,3056, 60, 7892, 20018,37401,580, 8998, 31088,19243,13687,1291, 3018, 2878,
35608,23434,16824,35798,83, 37047,12382,6407, 38991,16165,4173, 4822, 17628,41565,39266,15988,36268,41565,2557, 28752,32970,36375,20396,1717, 35778,129, 19674,
23464,6491, 3206, 37659,26683,8713, 32707,33302,766, 41564,37915,11931,2424, 9960, 16074,26553,1797, 29032,33656,35908,36540,9658, 25520,24968,28676,1467, 25972,
5928, 41564,18790,17805,2325, 4549, 22782,29803,26722,8306, 721, 30804,3967, 6289, 38623,5174, 29816,37594,6487, 34174,16269,29815,23240,36268,36267,37594,41564,
37594,28192,15446,33001,37593,31021,3271, 37593,9245, 19617,13195,36267,35211,34350,11943,14345,32222,34350,33625,25435,33625,37593,39265,33662,35211,39265,25744,
36267,2525, 41564,33001,39265,36267,39265,32910,41563,19876,179, 1133, 16268,6317, 673, 29814,5634, 35211,30798,1674, 41563,10220,37593,38801,30142,28191,41563,
2346, 22347,28190,6544, 25440,41563,14176,8934, 41562,39264,9959, 16823,28776,12658,4990, 39264,3733, 16822,2135, 26721,39264,2391, 15987,20074,5927, 944, 15311,
- 38551,35211,14687,1440, 4584, 868, 10729,37178,13658,39264,1823, 27847,14344,8327, 16611,6435, 6658, 11538,27842,7276, 21905,14175,16821,7922, 17677,35241,6786,
+ 38551,35211,14687,1440, 4584, 868, 10729,37178,13658,39264,1823, 27847,14344,8327, 16611,6435, 6658, 11538,27842,7276, 21905,14175,16821,7922, 17677,35241,6786,
29813,25439,20073,15074,41562,41562,1774, 29812,5046, 4961, 41562,41561,29811,13163,39263,21529,41561,41561,7731, 20072,37592,10713,41561,18789,10175,35210,37592,
24314,41560,33168,7904, 41560,41560,36266,39263,2543, 19663,18235,35210,41560,24313,1233, 8811, 282, 2317, 11372,115, 10920,35000,31650,36118,9617, 21139,15986,
35845,5339, 41559,15556,32468,20933,11933,2040, 17804,17161,20781,31649,37592,37592,35210,41559,34350,35210,39263,37591,39263,39262,18901,41559,3852, 19279,18965,
23747,13272,11180,31648,11461,35149,3830, 32226,17803,12912,9758, 4442, 35209,15985,34350,26720,11078,19227,12337,597, 41559,29810,1769, 2415, 19414,36266,36266,
- 563, 18234,2237, 34902,33958,37591,34349,26719,9657, 39262,34935,3250, 12683,41558,11268,35209,2242, 33625,37591,3204, 26718,6543, 19413,17627,20780,11480,9656,
+ 563, 18234,2237, 34902,33958,37591,34349,26719,9657, 39262,34935,3250, 12683,41558,11268,35209,2242, 33625,37591,3204, 26718,6543, 19413,17627,20780,11480,9656,
3932, 17946,24312,41558,9375, 37591,41558,3542, 24311,31647,35209,5260, 41558,34349,13730,39262,13437,35185,11691,20779,34349,37590,37590,41557,20071,6486, 41557,
- 35209,41557,23239,33624,33001,37590,18788,34349,20070,41557,36266,6997, 15850,33001,41556,35208,41556,15849,33624,29809,17160,721, 39262,35923,39261,33000,7472,
+ 35209,41557,23239,33624,33001,37590,18788,34349,20070,41557,36266,6997, 15850,33001,41556,35208,41556,15849,33624,29809,17160,721, 39262,35923,39261,33000,7472,
33624,23238,41556,33624,12411,2633, 14723,28189,35208,25438,6785, 41556,34348,35208,36265,39261,41555,34984,1459, 41555,19412,33623,21528,14028,39261,36265,23237,
20778,36265,15848,36265,19411,14722,36264,39261,39260,37590,33000,26232,28188,6258, 41555,41555,33718,31646,41554,24310,37589,36264,6813, 21527,41554,4306, 33000,
39260,36264,39260,41554,38264,12574,39260,37589,36264,16267,39259,20069,35208,16381,22669,36263,14466,37279,34796,41554,9106, 243, 8419, 27865,5764, 36719,24309,
17626,20731,15445,41553,18787,17427,16692,37589,18233,33623,34348,41553,33000,8096, 38507,28187,28186,24308,21526,37589,41553,11932,41553,2817, 39259,37588,15073,
18786,28185,19410,37588,10638,36263,37588,9859, 41552,32999,7367, 24307,39259,35207,10541,4100, 18800,21642,41552,1120, 10219,38360,35207,6434, 24549,38736,34153,
33740,41552,10540,34539,25437,36263,34348,14027,39259,8885, 39258,33302,33207,36263,37588,41552,33623,9522, 11931,18900,14174,20786,33623,16820,34348,10857,39258,
- 39258,8206, 23236,25436,25776,37492,35082,35207,41551,18785,559, 3668, 28184,39258,29808,3126, 39257,12148,11986,37845,36262,28096,12381,15984,30785,39257,9045,
- 10621,4612, 17802,2499, 10548,23676,1553, 447, 1997, 935, 2965, 41, 32909,20291,37810,38558,24306,39257,31975,1220, 37587,12697,34, 4207, 30821,1239, 156,
+ 39258,8206, 23236,25436,25776,37492,35082,35207,41551,18785,559, 3668, 28184,39258,29808,3126, 39257,12148,11986,37845,36262,28096,12381,15984,30785,39257,9045,
+ 10621,4612, 17802,2499, 10548,23676,1553, 447, 1997, 935, 2965, 41, 32909,20291,37810,38558,24306,39257,31975,1220, 37587,12697,34, 4207, 30821,1239, 156,
41551,562, 34430,13570,1691, 3545, 34347,9574, 36262,37460,31293,15983,31645,39257,12029,20290,5341, 10539,35207,29807,34347,2175, 10925,2149, 35206,24422,35241,
17003,39256,12380,3429, 33622,34347,1748, 26660,33477,7778, 37887,29806,10538,39256,34154,20289,20068,37587,32999,37484,38701,2601, 31780,38274,34876,37850,36970,
32826,34454,38402,19676,39024,8430, 21962,8345, 11694,33615,20288,35206,39256,36262,26310,6932, 37548,31984,14482,14686,14685,33622,41551,41551,41550,33622,34347,
- 34346,1975, 466, 28183,22346,1378, 32384,37587,6154, 36262,18552,5143, 12765,23235,13251,36534,39256,13436,15982,33096,9958, 33052,4708, 34975,41550,37587,8884,
- 25435,5075, 7666, 41550,10381,4060, 15451,32999,32999,21525,37586,41550,22230,39255,19384,26101,29805,22345,37586,29804,34346,41549,28535,74, 32794,18803,1959,
+ 34346,1975, 466, 28183,22346,1378, 32384,37587,6154, 36262,18552,5143, 12765,23235,13251,36534,39256,13436,15982,33096,9958, 33052,4708, 34975,41550,37587,8884,
+ 25435,5075, 7666, 41550,10381,4060, 15451,32999,32999,21525,37586,41550,22230,39255,19384,26101,29805,22345,37586,29804,34346,41549,28535,74, 32794,18803,1959,
25636,20501,8929, 21697,25261,31462,15762,28670,25666,17545,18, 5094, 20441,11408,37586,121, 33060,20844,313, 8628, 11479,7556, 9895, 14026,18899,35206,28182,
663, 23174,35206,39255,20748,4534, 25294,13573,1013, 7777, 14684,13946,10476,39255,49, 5994, 36489,30110,12379,31644,9044, 20287,30518,17625,25025,15981,35885,
21375,31643,22344,41549,41549,23234,20777,8785, 36261,5444, 29803,24045,6328, 28181,41549,16293,39255,37586,9132, 13435,39254,37585,31642,30334,622, 14330,23158,
@@ -19033,13 +19028,13 @@ static const unsigned short Ranks[197839] =
28180,29802,32022,10290,34614,5050, 38528,32764,22598,41546,36872,37725,28179,34345,36259,31571,26716,1296, 6167, 18898,39254,35514,39253,113, 33621,20426,22342,
10082,26845,22341,24358,41546,37584,9935, 37584,33621,4016, 18897,9782, 17624,18231,11691,3384, 41545,36259,10536,25888,34091,3012, 9568, 41545,41545,5481, 20775,
20774,33621,36259,35204,41545,24304,35204,25702,36259,41544,8661, 1389, 17216,10712,15979,26816,8240, 8776, 15728,6368, 7617, 38726,7783, 6403, 39253,38164,39253,
- 15444,29801,39253,41544,2702, 17623,41544,35204,41544,39252,11478,8441, 41543,37583,2805, 9461, 35679,34345,942, 7228, 22054,15674,41543,13729,732, 20633,7467,
+ 15444,29801,39253,41544,2702, 17623,41544,35204,41544,39252,11478,8441, 41543,37583,2805, 9461, 35679,34345,942, 7228, 22054,15674,41543,13729,732, 20633,7467,
13190,2313, 4380, 28716,7466, 3756, 2440, 601, 7312, 25062,36258,2746, 26715,39252,900, 4017, 29800,9999, 36073,39165,41543,13770,37583,15211,33278,32824,34345,
36258,34345,39252,14173,8940, 17614,30073,13189,23836,36367,3066, 41543,39252,25434,32998,34344,5698, 22256,35204,41542,36258,25140,5305, 4918, 28138,20286,10410,
- 37437,5053, 9221, 4381, 9757, 33621,32998,5662, 4829, 3707, 39251,37583,39251,32998,31640,29799,34344,9369, 7730, 16691,41542,24112,32599,12214,20773,15372,9934,
+ 37437,5053, 9221, 4381, 9757, 33621,32998,5662, 4829, 3707, 39251,37583,39251,32998,31640,29799,34344,9369, 7730, 16691,41542,24112,32599,12214,20773,15372,9934,
23042,1885, 27398,38860,29972,29798,28178,33620,8205, 19409,5480, 41542,39251,19408,14369,28177,23233,35300,39251,39411,26883,21524,34344,32997,35203,16266,41542,
- 35203,41541,10871,1279, 16121,12410,17159,9756, 17800,39250,22904,6426, 32997,36258,41541,7014, 26714,4451, 32997,37583,33620,33620,16205,39250,24338,11690,6871,
- 3225, 33747,41541,1243, 32997,5761, 23232,4356, 34344,39157,32996,41541,14683,33813,28648,15978,28430,8525, 2205, 9655, 1773, 5037, 41540,15309,27818,37220,1883,
+ 35203,41541,10871,1279, 16121,12410,17159,9756, 17800,39250,22904,6426, 32997,36258,41541,7014, 26714,4451, 32997,37583,33620,33620,16205,39250,24338,11690,6871,
+ 3225, 33747,41541,1243, 32997,5761, 23232,4356, 34344,39157,32996,41541,14683,33813,28648,15978,28430,8525, 2205, 9655, 1773, 5037, 41540,15309,27818,37220,1883,
17158,35203,41540,36257,25433,15308,15443,37582,41540,35203,41540,41539,32996,18230,41539,39250,41539,29797,13728,41539,41538,41538,39250,39249,31639,35202,37582,
41538,32996,41538,33620,35202,37582,6936, 37582,24303,39249,41537,41537,36257,35202,37581,35202,37581,41537,10620,36257,7903, 18784,26713,26712,35201,25432,39249,
39249,25431,31638,12764,33619,29755,35359,34779,35834,37386,30899,37298,32996,4262, 29677,8712, 39248,13162,3885, 38448,375, 24302,32995,41537,14721,39354,27605,
@@ -19047,16 +19042,16 @@ static const unsigned short Ranks[197839] =
13727,36257,36256,33619,13726,15847,31637,37580,5373, 4607, 36256,10218,35200,39248,41535,1337, 12378,8711, 35029,37963,20304,36256,35200,28176,6199, 7465, 10413,
38502,9374, 38028,37588,149, 4944, 32851,17491,4085, 34343,24301,20067,32995,10534,33619,34009,36256,13725,12657,1479, 3356, 32995,2914, 39248,22340,34217,17124,
36843,25430,9933, 36255,36931,11690,22094,32882,1826, 27358,19407,1051, 18783,23231,6299, 10619,18896,11401,30079,16260,2757, 31416,17622,4079, 41535,26211,32994,
- 25578,28902,31636,32994,7404, 33711,1298, 18229,6852, 7386, 32494,14368,36255,24300,5451, 15307,13656,4489, 13188,18954,13655,5617, 39247,41535,39247,31635,139,
+ 25578,28902,31636,32994,7404, 33711,1298, 18229,6852, 7386, 32494,14368,36255,24300,5451, 15307,13656,4489, 13188,18954,13655,5617, 39247,41535,39247,31635,139,
37580,36415,32079,36736,29794,6748, 34342,20285,19706,33619,12418,33108,27022,626, 26471,6558, 36255,39247,15977,35877,14172,1550, 37580,1964, 11689,31634,38000,
- 24000,38901,1842, 39247,10533,16265,34234,29793,732, 3047, 15976,23469,20108,32815,29597,5805, 7665, 37676,1569, 38862,1835, 19253,10499,28277,12409,13674,876,
+ 24000,38901,1842, 39247,10533,16265,34234,29793,732, 3047, 15976,23469,20108,32815,29597,5805, 7665, 37676,1569, 38862,1835, 19253,10499,28277,12409,13674,876,
8946, 26711,32994,11688,17882,18782,1017, 4093, 28675,30431,33022,26321,36255,28608,5818, 18781,14025,35749,36254,19803,27175,8710, 31633,22819,4566, 37601,35394,
19404,988, 16232,32994,29191,29792,28175,26710,10379,27047,35200,32644,41535,39246,28174,26709,312, 19899,37301,29728,8709, 33180,3311, 6410, 8580, 14402,23229,
8076, 36721,36254,12377,39246,35200,37251,22974,17799,39246,41534,41534,41534,36254,41534,11689,36254,3844, 41533,36755,18780,6327, 22339,41533,41533,41533,33618,
- 20066,36253,37580,34342,10711,41532,37579,5995, 30926,10532,10710,20892,19729,17621,32929,712, 29791,39246,20065,39245,37579,41532,24299,37579,22338,1518, 4101,
- 36253,41532,1151, 16692,41532,9373, 33197,12763,17798,37579,2632, 9372, 4793, 34342,4197, 37578,38470,29790,38606,37578,34688,37578,31632,28173,8204, 36253,2829,
+ 20066,36253,37580,34342,10711,41532,37579,5995, 30926,10532,10710,20892,19729,17621,32929,712, 29791,39246,20065,39245,37579,41532,24299,37579,22338,1518, 4101,
+ 36253,41532,1151, 16692,41532,9373, 33197,12763,17798,37579,2632, 9372, 4793, 34342,4197, 37578,38470,29790,38606,37578,34688,37578,31632,28173,8204, 36253,2829,
41531,29474,19909,41531,36253,29318,34981,13358,16690,7999, 24454,41531,37578,12408,21523,33618,41531,33629,25120,34616,17797,30218,15769,17796,4219, 14720,33296,
- 29736,12656,39263,15306,41530,36252,39084,28192,22682,20545,31430,6485, 41530,17620,24298,26708,514, 16816,37060,2390, 4395, 20284,8156, 15975,20283,15974,6433,
+ 29736,12656,39263,15306,41530,36252,39084,28192,22682,20545,31430,6485, 41530,17620,24298,26708,514, 16816,37060,2390, 4395, 20284,8156, 15975,20283,15974,6433,
39314,18895,2865, 6643, 20282,16815,7130, 3851, 9957, 34342,6741, 7821, 37577,37075,14719,36956,7241, 21312,33618,35199,29789,37577,39022,41530,33618,2934, 16264,
41530,37577,3790, 30656,9311, 37646,31631,41529,9131, 720, 9080, 35985,4059, 17795,1368, 1947, 4507, 38382,35931,3682, 4880, 17794,9755, 32094,33492,8860, 39245,
13187,37495,9615, 31630,21848,17619,4556, 13654,15421,37577,4842, 10174,7464, 25811,6731, 20772,36252,37576,39245,22337,12464,28172,39245,7315, 17793,35199,41529,
@@ -19067,18 +19062,18 @@ static const unsigned short Ranks[197839] =
3435, 19874,18485,11128,11812,37829,2113, 11551,27841,11399,5672, 14723,9799, 37272,21850,3425, 39244,12654,21874,35699,37575,25429,28170,21521,39243,25428,11267,
35198,41527,38010,32993,34341,34341,28169,11687,25427,254, 28494,17477,7398, 13684,2024, 20280,17792,12910,41527,1590, 27846,20770,16813,34417,41526,41526,22336,
29788,33617,31628,26705,26704,18228,15442,37575,36251,18779,17617,7664, 8440, 39243,37575,41526,39243,41526,37574,39243,39242,13041,20275,11384,41525,30816,33087,
- 39242,5497, 17616,39242,29787,37574,41525,37574,35198,33617,23230,41525,1239, 4782, 5005, 6011, 15973,7580, 33617,15807,18894,9371, 39313,23130,32163,36430,1414,
+ 39242,5497, 17616,39242,29787,37574,41525,37574,35198,33617,23230,41525,1239, 4782, 5005, 6011, 15973,7580, 33617,15807,18894,9371, 39313,23130,32163,36430,1414,
2967, 8177, 3989, 7275, 38553,28731,2148, 5977, 8429, 38882,34914,5572, 5989, 29271,23035,41525,36251,41524,33617,41524,41524,12762,17156,28773,35642,34576,26376,
- 33338,33072,38549,33616,41524,5408, 26703,6367, 6935, 37574,39242,340, 26702,4542, 4218, 41523,36251,3449, 13427,10856,29786,2236, 35505,36259,32601,41523,8859,
- 25456,1326, 15990,13185,38386,39241,29785,15441,37573,36251,6334, 39241,39241,36827,35805,38979,762, 11085,22805,33081,17846,17720,5334, 1852, 12241,8801, 2849,
- 3448, 15652,41523,39241,41523,35198,23953,14367,2092, 41522,15744,11073,1350, 34216,5945, 8660, 8547, 7111, 2385, 15972,41522,2120, 29153,14204,7076, 7903, 6995,
+ 33338,33072,38549,33616,41524,5408, 26703,6367, 6935, 37574,39242,340, 26702,4542, 4218, 41523,36251,3449, 13427,10856,29786,2236, 35505,36259,32601,41523,8859,
+ 25456,1326, 15990,13185,38386,39241,29785,15441,37573,36251,6334, 39241,39241,36827,35805,38979,762, 11085,22805,33081,17846,17720,5334, 1852, 12241,8801, 2849,
+ 3448, 15652,41523,39241,41523,35198,23953,14367,2092, 41522,15744,11073,1350, 34216,5945, 8660, 8547, 7111, 2385, 15972,41522,2120, 29153,14204,7076, 7903, 6995,
5318, 18893,15846,7471, 4841, 1902, 6931, 6259, 4998, 15304,35197,33816,17615,36250,37573,20769,37573,37573,9567, 30366,39099,11727,12593,38249,41522,37572,14682,
36250,5372, 18227,15440,36250,13160,6425, 26701,31627,34340,36250,36588,33616,20279,38578,41522,5944, 36249,39240,34890,12653,15439,28168,41521,35197,21520,31089,
33616,34340,37572,33616,2134, 20278,3550, 5450, 10855,28167,4254, 15971,9871, 38932,8708, 34340,14681,4118, 31229,13724,33908,5218, 13135,41521,5616, 23229,23228,
25426,36751,32993,33394,31626,32992,20064,569, 23031,28198,34208,15303,1311, 3656, 6345, 12657,2010, 15679,37031,36933,21014,22972,34344,19406,20768,39240,31625,
9781, 32992,38952,37572,39240,39240,26700,30433,18778,37572,2608, 13723,33615,24297,34340,41521,37571,1067, 27266,24296,3911, 9654, 41521,6884, 10081,14718,16578,
- 39239,33615,37571,36249,41520,20277,34339,41520,11928,32930,14023,24295,20767,41520,39239,6046, 36249,2047, 26699,29784,39239,18799,2815, 24504,30555,9983, 588,
- 5033, 1463, 17929,10854,37571,36249,36406,2239, 3683, 34443,4550, 3324, 37571,32992,12407,37467,38383,13184,33892,13652,15114,4380, 3433, 29783,23431,24294,9043,
+ 39239,33615,37571,36249,41520,20277,34339,41520,11928,32930,14023,24295,20767,41520,39239,6046, 36249,2047, 26699,29784,39239,18799,2815, 24504,30555,9983, 588,
+ 5033, 1463, 17929,10854,37571,36249,36406,2239, 3683, 34443,4550, 3324, 37571,32992,12407,37467,38383,13184,33892,13652,15114,4380, 3433, 29783,23431,24294,9043,
7663, 11682,29519,14062,12761,31624,39239,33615,24293,33615,41520,41519,17791,24292,14577,38487,34339,22431,4717, 29964,37570,41519,26604,39238,18777,36321,39238,
7328, 35197,20276,15438,3829, 31623,272, 16624,33457,7662, 20063,16812,41519,39238,12760,16811,2535, 36248,2126, 27289,11398,1289, 4057, 37570,14366,37570,41519,
37570,39238,8858, 37569,10718,23776,31622,729, 41518,31621,35197,11688,24291,31620,2701, 21519,38294,37352,28166,34339,11927,36248,1609, 32833,25449,37235,13950,
@@ -19086,25 +19081,25 @@ static const unsigned short Ranks[197839] =
13159,2559, 23360,4456, 41518,12694,22364,41518,41517,9370, 19405,23227,39237,457, 1693, 41517,37569,34338,41517,25425,39237,39237,39237,31619,26698,36248,41517,
41516,41516,39236,24290,39236,261, 12119,2524, 8985, 22396,4424, 21711,33614,21518,39236,14171,5624, 36247,18776,27508,39236,39244,35196,12155,41516,35196,37569,
3064, 31618,12154,5574, 28165,39235,14717,6258, 4778, 14170,8857, 18225,36247,33614,39235,37569,2389, 24289,8707, 12376,5036, 21517,26697,34435,31619,31617,32992,
- 12400,2756, 7902, 8856, 8574, 32991,20723,4172, 2686, 27390,3625, 15302,2633, 16810,25858,17790,38542,5719, 32845,14675,31616,28164,27034,16809,14620,275, 4517,
+ 12400,2756, 7902, 8856, 8574, 32991,20723,4172, 2686, 27390,3625, 15302,2633, 16810,25858,17790,38542,5719, 32845,14675,31616,28164,27034,16809,14620,275, 4517,
28119,10173,5585, 5199, 13651,17155,39235,13183,32991,32991,35196,10216,37061,3843, 39235,9754, 37860,31995,37594,21516,3177, 7902, 26696,41516,3148, 3842, 41515,
39234,39234,41515,34338,26695,31844,3451, 35691,17614,35106,33172,28163,34338,41515,37910,38962,20062,36247,15658,7820, 14022,39234,35196,39234,10393,15437,31615,
- 23226,33614,13434,17613,33057,7776, 13182,22354,5331, 34860,41515,12153,8095, 4485, 36247,16273,39233,39233,37568,36246,17154,35195,37568,29781,15071,15070,399,
+ 23226,33614,13434,17613,33057,7776, 13182,22354,5331, 34860,41515,12153,8095, 4485, 36247,16273,39233,39233,37568,36246,17154,35195,37568,29781,15071,15070,399,
5042, 39233,2078, 34724,7322, 14680,16388,6930, 10409,8414, 13852,35796,33168,7641, 3811, 13389,17789,36246,38847,39128,17153,29505,10529,33624,14679,9255, 31614,
17637,41514,39233,3476, 3701, 25424,704, 9042, 7647, 1557, 33891,39353,33749,21741,33381,31654,32786,38195,34771,23755,951, 37568,16808,33166,35604,18891,35368,
16807,35255,37931,16450,34581,33134,33572,38480,35930,11907,26184,36452,35994,15147,29913,37338,7765, 23195,34775,4335, 8025, 9107, 33201,32391,29542,37421,32571,
12682,24768,20268,37347,9044, 13902,33702,4928, 36033,4510, 6511, 38010,38144,38134,36382,34518,35206,15661,13645,10056,35656,26776,11686,34485,37568,4449, 41514,
- 41514,14537,4157, 31259,35717,34295,38430,34885,25412,13539,21597,10550,36312,34060,27510,36612,7631, 11003,35053,26585,20253,20275,21515,19722,11266,41514,5675,
- 35195,41513,16923,798, 5037, 16806,30520,7315, 31948,20693,1772, 31536,19238,38665,17788,20834,37968,37567,12759,5943, 24288,15301,18890,17787,29300,681, 7350,
+ 41514,14537,4157, 31259,35717,34295,38430,34885,25412,13539,21597,10550,36312,34060,27510,36612,7631, 11003,35053,26585,20253,20275,21515,19722,11266,41514,5675,
+ 35195,41513,16923,798, 5037, 16806,30520,7315, 31948,20693,1772, 31536,19238,38665,17788,20834,37968,37567,12759,5943, 24288,15301,18890,17787,29300,681, 7350,
20274,39389,15364,38474,14868,7830, 2197, 38767,35620,4280, 33784,5120, 36146,34620,17786,37423,36992,14318,4857, 8763, 16805,3540, 21919,2626, 10636,37266,37491,
37737,37830,32118,16004,37285,5412, 12018,10538,19147,38211,22283,36152,16013,27343,4729, 7110, 12375,39016,34905,27409,19938,37512,27608,32991,34528,34632,38853,
- 18809,34485,14211,26070,33765,11397,10853,13005,11362,5849, 30319,28289,30408,5492, 10724,35876,27546,17253,27353,35945,1248, 722, 10852,38816,36437,15300,6033,
+ 18809,34485,14211,26070,33765,11397,10853,13005,11362,5849, 30319,28289,30408,5492, 10724,35876,27546,17253,27353,35945,1248, 722, 10852,38816,36437,15300,6033,
11251,38905,15970,16428,16050,20273,6427, 2447, 7573, 38878,38211,20647,14169,11179,34903,10104,33401,35290,9281, 38424,32878,31228,21379,15348,14585,28764,37115,
3861, 3645, 5058, 20844,34852,2199, 4246, 17785,19992,9300, 14172,24708,27912,23443,2715, 6110, 11024,11467,7254, 18109,5737, 7858, 28554,30352,15363,15598,15113,
16928,15299,18266,11359,8290, 36364,34251,13093,11307,9753, 38998,2376, 37806,20272,8855, 11685,26026,19524,22389,19634,34936,35698,26319,39179,3594, 36299,14580,
- 16112,8700, 10533,2349, 3221, 34854,14678,3128, 16753,12393,17784,34094,35607,2356, 15298,13033,29780,3149, 26361,41513,3065, 1259, 4694, 8548, 7703, 278, 4469,
+ 16112,8700, 10533,2349, 3221, 34854,14678,3128, 16753,12393,17784,34094,35607,2356, 15298,13033,29780,3149, 26361,41513,3065, 1259, 4694, 8548, 7703, 278, 4469,
26993,32450,4638, 533, 1489, 2752, 35874,3759, 8254, 1953, 6178, 35188,16804,31692,39232,18889,6572, 12374,37434,14168,10494,18887,24521,26275,16571,24468,41513,
- 61, 33881,20766,37567,33614,37567,37567,34338,30191,37801,12633,41513,41512,23225,1178, 27732,29061,20271,18888,6446, 5015, 2278, 29638,539, 14544,18978,9752,
+ 61, 33881,20766,37567,33614,37567,37567,34338,30191,37801,12633,41513,41512,23225,1178, 27732,29061,20271,18888,6446, 5015, 2278, 29638,539, 14544,18978,9752,
4315, 24462,12028,2803, 277, 23083,17675,20270,26769,664, 29634,33085,17333,26505,21880,17583,19636,31475,4703, 22335,1295, 20102,15025,8024, 17799,16856,20073,
5162, 7865, 13158,35195,15466,3692, 8681, 38951,37566,34797,33613,36246,41512,8802, 22334,39232,931, 845, 22333,18224,37247,24287,36246,34337,5615, 37736,41512,
20765,25423,37566,34256,25465,31673,24309,29034,2216, 33578,17612,35195,34337,33971,28162,12027,33613,28287,195, 2463, 34179,4603, 39232,6148, 41512,16803,34337,
@@ -19112,24 +19107,24 @@ static const unsigned short Ranks[197839] =
5976, 5161, 15969,30984,15162,2492, 4903, 28107,5965, 26103,11369,10172,8023, 6431, 16802,4277, 11185,36739,5743, 26252,34520,26827,36155,34915,29779,14925,24016,
7337, 25094,15651,38784,34957,14167,23782,41511,35194,17782,33613,36245,968, 4182, 29740,12787,15067,10178,15297,25696,20269,16702,34405,15968,22645,17151,13650,
14135,6668, 17781,35545,20764,22300,36245,33613,11266,1150, 1258, 1733, 2257, 3404, 11817,1900, 37566,26693,1377, 36730,35194,28161,37565,32990,37373,26555,37565,
- 37365,17150,5217, 36245,14384,38135,38764,36245,14021,35708,8735, 6316, 1699, 9751, 39231,9048, 34956,3571, 35497,20061,15967,37515,13812,30472,900, 14472,2511,
+ 37365,17150,5217, 36245,14384,38135,38764,36245,14021,35708,8735, 6316, 1699, 9751, 39231,9048, 34956,3571, 35497,20061,15967,37515,13812,30472,900, 14472,2511,
16179,2880, 6198, 1687, 4534, 6101, 7498, 36777,36179,10408,15296,2139, 14365,24970,35716,23748,2215, 29635,32346,12833,37466,15067,7747, 37565,39176,22248,26148,
35194,38895,33612,28293,18887,39297,25036,33349,34043,39084,33612,39231,17406,36478,25960,37246,39230,39230,7709, 17780,26805,18150,10926,25256,38711,39230,37565,
23751,32990,36244,12738,41511,28160,3330, 37027,41511,37564,18890,15966,9165, 33355,10951,29655,34182,39213,35194,6670, 15083,34337,20763,41510,41510,41510,41510,
31613,26692,10407,8573, 39230,15356,14166,41509,22332,21514,34611,20268,37564,6100, 100, 35435,25422,39229,9192, 36244,33145,34233,10300,35083,27216,35938,21513,
29778,32195,39229,2068, 24738,7750, 29540,41509,34631,14894,26691,19404,14676,36244,14151,34336,30896,36954,33612,17149,37564,2736, 29936,33612,33628,36003,18223,
39229,37564,7181, 21610,26690,33611,34482,35951,39229,14675,34336,23224,27509,35193,32990,13265,35979,41509,41509,14256,24285,36244,39228,34845,34336,3329, 37563,
- 18478,38438,37588,37563,11926,9129, 11736,37563,35193,11190,16801,15066,29362,34742,14674,7992, 14582,20832,31612,2360, 12026,6328, 10601,69, 15060,17381,9071,
+ 18478,38438,37588,37563,11926,9129, 11736,37563,35193,11190,16801,15066,29362,34742,14674,7992, 14582,20832,31612,2360, 12026,6328, 10601,69, 15060,17381,9071,
28537,21494,18752,12784,12638,19555,28261,32921,1981, 14720,14217,8686, 25187,13850,13228,27585,5328, 33035,21189,4145, 14716,20267,36152,11925,16262,32990,28752,
- 34336,32966,3841, 41508,36243,443, 32989,32041,18472,26689,9041, 8170, 29777,4960, 9653, 18643,1992, 39369,9556, 16261,3955, 4680, 23585,9566, 7463, 12909,1308,
+ 34336,32966,3841, 41508,36243,443, 32989,32041,18472,26689,9041, 8170, 29777,4960, 9653, 18643,1992, 39369,9556, 16261,3955, 4680, 23585,9566, 7463, 12909,1308,
19403,35193,9861, 18886,14165,38401,3048, 41508,17779,5443, 18774,41508,39228,7661, 37563,39228,30047,11077,34219,960, 15965,21970,32871,28848,33580,27718,16800,
7702, 8284, 35387,13649,13181,20266,24966,16961,35714,32825,13433,15730,6257, 9041, 34335,38944,1067, 22259,23405,33304,24818,39045,34656,33377,930, 25687,22661,
5462, 6153, 32989,36243,33611,16260,28159,25421,28973,7679, 5142, 24284,13722,28158,29776,4226, 39216,37562,18385,36418,39048,12032,37562,39228,24646,7901, 38863,
9013, 18885,13613,25548,34335,19402,28173,26688,33840,39227,4251, 14590,2603, 3282, 31408,12758,34335,808, 31611,16946,27582,37715,19543,12779,5237, 22999,41508,
11076,13048,10629,28897,4121, 37562,11158,19853,7300, 37695,18884,5052, 36796,16673,35143,34800,22960,3700, 11091,37649,41507,18883,35160,19930,1143, 4187, 12239,
27164,21023,14188,38837,19553,3036, 2568, 21121,18713,17008,24499,31679,14349,1293, 10182,31990,13648,8374, 8428, 27553,15436,726, 22339,12373,20168,2802, 28212,
- 46, 5588, 32825,28161,18882,12053,15295,34335,35736,20265,13654,32705,36099,7030, 15964,37776,12496,41507,33611,41507,28481,26610,39227,39227,34334,35193,6075,
- 29959,32934,26616,31492,565, 1925, 4149, 1237, 13255,31723,30365,20842,11334,13087,31603,23234,25179,3738, 37005,16302,39025,11226,32850,13372,25085,30243,7331,
+ 46, 5588, 32825,28161,18882,12053,15295,34335,35736,20265,13654,32705,36099,7030, 15964,37776,12496,41507,33611,41507,28481,26610,39227,39227,34334,35193,6075,
+ 29959,32934,26616,31492,565, 1925, 4149, 1237, 13255,31723,30365,20842,11334,13087,31603,23234,25179,3738, 37005,16302,39025,11226,32850,13372,25085,30243,7331,
7775, 10924,37442,29550,16107,34569,21969,27151,28462,39239,37554,36823,38599,15459,19689,37302,20264,37634,39181,16799,16339,25012,29641,18938,25244,32166,27538,
28527,20976,20263,28069,34693,38008,28394,32989,15615,12468,17778,25756,32935,12739,23958,20790,22960,10840,13070,32579,18881,31650,35361,9513, 20198,4750, 14372,
36908,35995,18880,1109, 20625,37724,20358,19934,29741,38273,14753,11864,34445,38845,12654,27163,37773,4917, 9369, 34960,15963,39021,9747, 33754,24600,12743,13121,
@@ -19137,14 +19132,14 @@ static const unsigned short Ranks[197839] =
15633,16418,17001,24005,4646, 8621, 33647,19576,26706,15888,38345,31704,7109, 15962,26333,4120, 35192,25420,4989, 5651, 22309,32773,35964,30790,39269,21682,14673,
36927,13647,16436,8300, 33154,27364,6853, 35261,32174,38768,35859,14277,11583,5893, 18776,26498,18070,2435, 2066, 11130,33352,4119, 11396,6366, 34533,20262,38850,
32897,10099,37630,35114,30416,28186,34211,21344,15840,34559,31724,36812,16477,18879,6365, 4982, 19316,8498, 3803, 4035, 8039, 10188,12372,23274,33929,36243,30830,
- 33611,17777,34685,23223,2925, 18878,28448,12229,34035,12025,36243,4650, 9191, 9036, 20764,6937, 21254,8657, 34392,33610,2837, 6238, 7050, 2189, 1268, 6339, 259,
+ 33611,17777,34685,23223,2925, 18878,28448,12229,34035,12025,36243,4650, 9191, 9036, 20764,6937, 21254,8657, 34392,33610,2837, 6238, 7050, 2189, 1268, 6339, 259,
14314,768, 3430, 2086, 1363, 2199, 2205, 587, 258, 2673, 33593,11127,18877,20261,7026, 5962, 27262,10617,5693, 33754,16191,36056,5507, 15272,36010,24182,24988,
27376,22799,20260,7830, 1105, 14164,16849,33475,35547,29775,20259,38860,31610,3275, 15898,15396,17148,28197,20399,26639,37562,36242,11926,23222,41507,5141, 29326,
21803,37096,38848,29774,83, 20258,1747, 38827,30188,31713,21151,41506,11767,15574,36848,15069,25242,2241, 793, 6413, 3562, 21146,24878,28386,17657,13646,20257,
21399,25264,18876,436, 6554, 25398,11833,38109,10605,1370, 12725,23786,7143, 6301, 18713,2147, 5198, 11484,1056, 15961,4058, 8854, 14163,41506,33048,41506,15756,
- 29773,39113,17611,22559,34649,34334,21572,9351, 23128,36333,18222,33168,34318,39227,8783, 28157,12024,28156,32989,41506,20256,20627,34884,10873,30131,37056,1456,
+ 29773,39113,17611,22559,34649,34334,21572,9351, 23128,36333,18222,33168,34318,39227,8783, 28157,12024,28156,32989,41506,20256,20627,34884,10873,30131,37056,1456,
28515,7979, 41505,34334,13266,5825, 26105,9742, 5607, 25243,20762,41505,529, 687, 1896, 3091, 5236, 36242,39226,4058, 7579, 14191,12039,27245,30878,23221,24283,
- 27214,2754, 3887, 9565, 22420,39307,25288,12908,22331,3437, 39226,29790,5674, 34885,5817, 2043, 1171, 5666, 7857, 22042,25053,36538,35551,34334,1948, 1588, 5778,
+ 27214,2754, 3887, 9565, 22420,39307,25288,12908,22331,3437, 39226,29790,5674, 34885,5817, 2043, 1171, 5666, 7857, 22042,25053,36538,35551,34334,1948, 1588, 5778,
8220, 6193, 13601,4342, 41505,24790,37835,2835, 36951,20255,36532,1277, 1701, 4950, 2125, 4136, 3185, 38195,37561,12296,33610,41505,20669,39316,8, 4901, 25447,
574, 18445,41504,1868, 814, 1517, 572, 20849,19812,41504,12231,6798, 34215,20254,4193, 9194, 34859,30376,38168,13204,37561,342, 18678,6601, 35258,36089,41504,
35192,36242,38483,39226,39226,5041, 18875,32989,39225,39401,37561,36242,37561,1106, 2679, 11395,2448, 7774, 17130,2405, 12371,13180,35480,4679, 33176,2961, 15349,
@@ -19153,22 +19148,22 @@ static const unsigned short Ranks[197839] =
36241,28154,5573, 9784, 15768,34999,39225,22600,41502,37560,35192,3063, 10531,31609,41502,6542, 5216, 256, 37560,10616,12756,30944,35191,7274, 16897,41501,37872,
38552,37505,18873,23365,20253,35943,23173,41501,32990,21216,24508,29772,18221,41501,34000,1074, 1983, 1231, 153, 16190,34639,15155,11613,34684,14782,783, 14613,
3186, 1747, 30651,16866,19866,32740,15135,22620,507, 14563,1598, 22494,13607,41501,35396,41500,15637,34333,34029,41500,35191,34521,33741,31608,33610,41500,35191,
- 28153,26413,31935,7942, 27988,38081,12406,20252,32491,20251,31607,41500,39224,33017,14203,32984,36241,31631,20378,36240,21479,25050,7281, 21045,20688,36717,3236,
+ 28153,26413,31935,7942, 27988,38081,12406,20252,32491,20251,31607,41500,39224,33017,14203,32984,36241,31631,20378,36240,21479,25050,7281, 21045,20688,36717,3236,
15504,23478,22409,1924, 9690, 17776,41499,466, 10572,37560,30318,38463,33943,37559,31606,31988,37559,37687,39224,3109, 41499,26679,37559,31330,38078,8427, 41499,
- 41499,35705,16321,16443,35958,12370,18220,33099,17775,17774,31605,15845,36295,39224,38493,2345, 33418,21512,24282,41498,15960,37559,34333,13889,31604,37558,5902,
+ 41499,35705,16321,16443,35958,12370,18220,33099,17775,17774,31605,15845,36295,39224,38493,2345, 33418,21512,24282,41498,15960,37559,34333,13889,31604,37558,5902,
882, 38131,41498,34387,22330,37558,41498,38344,26977,32988,37558,1396, 4100, 9368, 8826, 24850,6074, 6868, 37893,27483,19467,36888,41498,3711, 5051, 15346,33778,
- 7876, 7271, 14368,1234, 8706, 31603,32893,41497,16259,36240,41497,34333,29771,22329,6934, 8439, 34333,35191,39224,10709,3334, 29770,9162, 1955, 8094, 20901,7273,
+ 7876, 7271, 14368,1234, 8706, 31603,32893,41497,16259,36240,41497,34333,29771,22329,6934, 8439, 34333,35191,39224,10709,3334, 29770,9162, 1955, 8094, 20901,7273,
34332,5657, 37558,349, 23587,34607,33610,36240,41497,39223,22328,39223,39223,24281,36211,39223,5584, 28914,19505,28152,11259,10406,16857,37733,29383,37568,39222,
39222,38787,18219,6424, 31602,9564, 33746,9956, 22362,39222,35471,23220,33866,39222,8438, 19166,15067,15959,39221,19401,11924,12405,32988,1120, 37557,37557,33609,
41497,36240,23219,24280,25418,41496,37557,35190,35875,39221,10708,34624,35383,16101,34437,4707, 39406,37268,7072, 14162,39221,22811,37731,34396,35909,34994,34123,
39221,41496,37557,37556,37556,20690,16798,14019,34332,37556,6711, 35510,10405,14672,13720,39220,11394,10215,28151,27534,11002,35190,32988,32988,550, 33609,35190,
12404,32934,5406, 3910, 22327,36239,39220,20060,5925, 1735, 15958,1738, 5583, 41496,11684,3614, 9520, 41496,15294,8022, 6784, 14161,13645,17773,5804, 3919, 39220,
34332,23218,41495,29769,20760,9830, 39220,1289, 22125,29723,36239,9979, 1192, 26686,34316,34332,29768,24515,35190,34331,41495,34331,32987,568, 8328, 2566, 10725,
- 33956,5340, 6133, 12369,39219,32987,34331,442, 2850, 19366,9682, 26969,27526,14417,8642, 31662,16797,22685,32787,10615,20495,31450,34077,6073, 3453, 16050,9861,
+ 33956,5340, 6133, 12369,39219,32987,34331,442, 2850, 19366,9682, 26969,27526,14417,8642, 31662,16797,22685,32787,10615,20495,31450,34077,6073, 3453, 16050,9861,
15937,530, 9220, 20426,675, 12138,31344,27894,37556,13432,21511,18872,14018,3642, 4075, 23217,15875,17470,972, 26441,20974,1238, 16689,22421,27841,19211,36239,
892, 19422,35189,34331,31601,39219,39219,41495,34330,18772,28150,32987,6682, 16796,39219,41495,2414, 12755,4706, 38349,14160,41494,18871,25417,41494,34330,33609,
37555,26685,9012, 1447, 32987,39218,36239,31600,3954, 41494,29767,12368,10850,17772,36238,31034,14076,37555,36238,37555,6045, 28013,31599,36238,31598,28149,19400,
- 7901, 31597,14159,37555,41494,35189,11477,13431,33099,37771,34317,37400,41493,31596,32775,31595,41493,41493,34330,11437,37554,1173, 24671,9645, 13691,35665,6708,
+ 7901, 31597,14159,37555,41494,35189,11477,13431,33099,37771,34317,37400,41493,31596,32775,31595,41493,41493,34330,11437,37554,1173, 24671,9645, 13691,35665,6708,
14671,10890,5901, 11476,32986,36238,14363,35189,11683,41493,39218,8883, 17771,39278,1701, 32913,33609,2342, 12952,7104, 11393,778, 13644,10171,7272, 18870,25099,
20171,19399,5215, 21510,4755, 17770,11475,22326,7493, 7271, 41492,24279,9011, 41492,9519, 7819, 1659, 31728,38323,41492,955, 22345,1838, 13179,3851, 9652, 41492,
4157, 5942, 4730, 34330,7085, 7900, 5407, 8853, 9040, 17769,41491,29805,37554,10170,9750, 37808,15293,37554,11126,2894, 1566, 22673,22388,39218,31594,28148,20759,
@@ -19176,9 +19171,9 @@ static const unsigned short Ranks[197839] =
11923,31593,5582, 41491,32986,39218,10848,18868,6197, 15435,15291,35188,17767,13178,5659, 3840, 11922,41491,35188,2299, 13247,25810,570, 794, 37404,2857, 28830,
18203,32003,35069,2058, 2552, 29766,30412,7188, 20758,25416,36237,11840,14337,37833,35188,34329,25653,20757,653, 34246,1534, 39217,21562,8852, 34406,36237,11704,
34330,13643,3710, 39217,14992,10075,27596,37554,33608,292, 8832, 20073,7084, 15844,6916, 34714,41490,34329,17454,728, 14017,41490,18840,32986,17207,37536,31329,
- 36454,19117,37371,6631, 8125, 13177,33871,34819,37473,41490,38391,34052,13430,11474,14532,10208,33081,36267,24278,32986,22325,4834, 351, 14715,33727,16769,120,
+ 36454,19117,37371,6631, 8125, 13177,33871,34819,37473,41490,38391,34052,13430,11474,14532,10208,33081,36267,24278,32986,22325,4834, 351, 14715,33727,16769,120,
13374,31471,36236,2840, 35188,26684,16683,36236,22049,23698,37987,35539,19858,10169,15476,2229, 4509, 13399,38471,23693,29020,24603,24713,7373, 19107,38264,11146,
- 13876,10997,13180,37105,3371, 32119,31612,19398,28376,41490,36170,34329,6686, 8779, 21434,18598,5283, 37553,32835,8782, 38345,7818, 39217,17907,3899, 32842,9039,
+ 13876,10997,13180,37105,3371, 32119,31612,19398,28376,41490,36170,34329,6686, 8779, 21434,18598,5283, 37553,32835,8782, 38345,7818, 39217,17907,3899, 32842,9039,
37390,36888,30471,6072, 27845,25884,15085,37476,2343, 31867,38023,6948, 33031,9891, 2149, 36204,20540,16629,7594, 33673,34329,6196, 13642,2194, 39322,4386, 11097,
39217,37553,38390,13847,18867,12182,37708,5760, 35229,18866,39390,34921,31078,36694,18865,34276,19232,11411,13641,8508, 33472,12200,37810,33112,20207,33786,38082,
11639,2709, 24939,34807,33290,27198,29154,7899, 36236,26919,20656,36312,27283,6219, 4613, 22832,8302, 2977, 17412,18864,41489,33561,29620,4559, 30013,37924,32854,
@@ -19190,7 +19185,7 @@ static const unsigned short Ranks[197839] =
30537,38373,37552,25414,36234,17146,41487,39215,35187,39214,37552,33362,34880,20249,21573,22876,33899,37551,36640,39214,36074,41487,34328,37551,41487,36234,41486,
9780, 10899,41486,34328,20059,39214,28146,34293,41486,41486,21628,39214,36234,39213,39213,32985,41485,41485,32984,35187,33867,36817,31591,29765,22324,41485,12023,
35323,39213,37551,39213,37551,41485,39212,35187,39212,39212,35186,39212,31590,39211,35186,37550,41484,37550,39211,38336,29764,33607,4386, 37550,25413,31589,33607,
- 34378,41484,39211,39211,39210,41484,36233,22830,36429,16795,34832,16835,11411,30718,30048,12125,10964,16547,13266,33053,30355,13987,25412,39210,28369,31771,3600,
+ 34378,41484,39211,39211,39210,41484,36233,22830,36429,16795,34832,16835,11411,30718,30048,12125,10964,16547,13266,33053,30355,13987,25412,39210,28369,31771,3600,
36826,37550,26228,32984,31588,22559,35186,9368, 12403,26664,34734,35684,4685, 36233,718, 41484,4448, 39210,33809,33607,2252, 28577,13863,32984,3317, 11011,38344,
39210,39209,2264, 37549,35186,33607,38931,41483,24276,37549,35185,471, 20248,17570,39209,35185,35094,35329,610, 32709,24505,17174,24252,17766,13640,18663,32828,
24340,20058,2342, 18862,5927, 20002,20247,6582, 26659,3350, 4808, 20755,37549,18218,28145,10410,21068,1619, 33606,37549,24275,14044,38289,10707,32290,4451, 26021,
@@ -19205,21 +19200,21 @@ static const unsigned short Ranks[197839] =
27225,19395,6195, 9705, 19088,18858,38767,18236,4272, 34727,17764,25175,26911,3544, 19501,10378,20390,11682,5816, 31586,37547,37461,36917,6431, 5614, 15748,21380,
14668,2721, 34408,35921,23404,26705,5071, 34975,41477,23215,21000,18217,35966,2195, 6119, 36231,37883,32625,18722,36261,13753,28689,37665,14765,8493, 33364,37365,
27469,12319,3543, 41477,16368,36231,10079,33344,15290,5803, 33604,41477,32983,3699, 36231,33210,8174, 39175,37412,24484,36371,32073,33715,35139,9309, 33606,34326,
- 37131,37867,27290,21088,71, 12515,27271,38242,30388,15726,17763,38460,30378,10951,34326,33765,18585,27533,37458,22323,37547,433, 39206,22972,7660, 34363,5339,
+ 37131,37867,27290,21088,71, 12515,27271,38242,30388,15726,17763,38460,30378,10951,34326,33765,18585,27533,37458,22323,37547,433, 39206,22972,7660, 34363,5339,
5454, 11125,9038, 10168,34421,538, 13013,37547,19394,15953,31657,23214,21407,15289,39206,2999, 309, 26641,35423,2241, 38524,30802,34941,34248,36184,22239,33295,
28884,32176,9569, 22272,37785,39286,41477,33606,26772,38596,32982,8437, 11264,39206,41476,23213,38663,8882, 41476,30220,35184,31245,7239, 35183,2261, 1561, 39206,
- 3481, 39205,9748, 33653,36369,17144,14667,13175,2247, 31588,1453, 2287, 41476,15288,3755, 21509,2927, 34545,31585,8498, 39264,34326,30758,1625, 7083, 16930,5851,
+ 3481, 39205,9748, 33653,36369,17144,14667,13175,2247, 31588,1453, 2287, 41476,15288,3755, 21509,2927, 34545,31585,8498, 39264,34326,30758,1625, 7083, 16930,5851,
41476,15378,41475,36231,2384, 18502,2967, 34637,2681, 39205,111, 27269,9563, 33280,484, 6571, 34001,10167,10847,1576, 159, 8436, 1559, 37878,35690,38043,21961,
10404,1495, 41475,34326,15077,39205,27460,11085,9779, 36407,20754,35183,27162,29393,3909, 4034, 35719,34325,4416, 41475,805, 29365,34486,16299,31568,25408,14552,
30798,8123, 29844,22322,4304, 20753,15952,21441,37547,7094, 12020,23140,10214,12402,29763,8028, 14775,38609,3310, 10986,31584,24581,13503,21508,35204,37527,38453,
41475,25407,7161, 14252,11263,7371, 10510,33972,32233,22910,28200,41474,34550,35183,38538,2414, 3125, 25444,38846,35202,41474,22867,2157, 11124,18857,35259,17578,
37546,36912,1725, 226, 32886,37685,37546,34277,24068,37062,35093,35183,21284,20752,1888, 13567,3038, 38199,34575,37546,32982,38032,35182,25277,9181, 35571,41474,
- 15287,26221,3124, 36230,25406,41474,28144,41473,25405,37546,36230,7270, 15951,2651, 740, 2326, 1128, 20245,897, 17507,5974, 34454,39205,21507,2606, 33679,6256,
- 464, 37380,17211,36942,2287, 1899, 545, 1833, 1885, 17152,14503,33278,29762,20079,34210,2720, 29672,41473,36525,32982,26683,16517,2263, 13429,25404,3024, 782,
+ 15287,26221,3124, 36230,25406,41474,28144,41473,25405,37546,36230,7270, 15951,2651, 740, 2326, 1128, 20245,897, 17507,5974, 34454,39205,21507,2606, 33679,6256,
+ 464, 37380,17211,36942,2287, 1899, 545, 1833, 1885, 17152,14503,33278,29762,20079,34210,2720, 29672,41473,36525,32982,26683,16517,2263, 13429,25404,3024, 782,
480, 39204,34325,38172,75, 5950, 20902,33605,38555,3412, 26539,5667, 10403,14473,5975, 6870, 20148,28674,29083,14711,12754,9954, 36230,857, 32982,34658,35348,
- 31187,37545,9447, 10213,39095,11609,16453,2177, 1114, 23212,22722,36129,27745,31079,38394,3011, 24869,28480,26682,39204,24632,19393,33078,37257,38834,41473,6958,
+ 31187,37545,9447, 10213,39095,11609,16453,2177, 1114, 23212,22722,36129,27745,31079,38394,3011, 24869,28480,26682,39204,24632,19393,33078,37257,38834,41473,6958,
35447,39204,36816,37350,29146,3698, 34244,41473,3123, 35381,19369,8914, 38044,34325,2925, 28307,39204,24273,36230,1587, 25403,39367,38314,1780, 33599,41472,38558,
- 14623,41472,41472,36040,1690, 25402,28143,9715, 21785,35226,36818,34588,6807, 12177,41472,37545,9366, 15759,35864,37405,9562, 5304, 20244,20088,18856,41471,2767,
+ 14623,41472,41472,36040,1690, 25402,28143,9715, 21785,35226,36818,34588,6807, 12177,41472,37545,9366, 15759,35864,37405,9562, 5304, 20244,20088,18856,41471,2767,
5642, 24251,18219,25895,36874,37545,37545,36229,35421,24861,7470, 25401,31433,27689,20243,41471,22582,734, 34325,17610,1623, 35182,29761,37544,17762,766, 28955,
14666,1924, 30112,27167,19547,1721, 28640,33225,32512,39203,7462, 1344, 10895,4541, 37544,41471,38389,13639,20508,31613,16872,2482, 9128, 28142,41471,30588,13528,
11687,2214, 36963,33605,39203,18329,18855,10377,17761,36481,23313,12401,35559,559, 20938,33762,34451,19215,28141,29996,38039,36229,31272,9953, 23028,41470,35607,
@@ -19229,27 +19224,27 @@ static const unsigned short Ranks[197839] =
14664,34127,36902,5755, 13717,18256,3660, 35182,17143,38708,31582,3867, 16262,37544,34324,33604,8546, 31581,7185, 39200,14663,25561,10614,12152,35199,27646,41469,
6570, 20240,201, 34324,36229,23660,2040, 39357,14662,5442, 37184,26680,20912,13610,35182,6099, 6569, 38185,9127, 10078,9483, 11123,18853,35933,11776,39200,37544,
16617,15660,39200,24259,21789,41469,28139,20105,15843,36285,34716,39200,23155,39199,41468,7998, 33604,20239,37501,28138,7469, 5710, 14661,37543,1566, 14881,19392,
- 41468,12753,36918,36930,30137,22961,41468,3472, 35772,28203,20509,24563,836, 14297,3405, 5461, 2824, 34323,39223,22841,33245,1346, 12494,743, 3023, 37217,8178,
+ 41468,12753,36918,36930,30137,22961,41468,3472, 35772,28203,20509,24563,836, 14297,3405, 5461, 2824, 34323,39223,22841,33245,1346, 12494,743, 3023, 37217,8178,
9003, 36554,32791,34331,21289,10077,15118,38649,34991,34323,17293,37543,35181,16793,12907,31661,34323,18705,24036,11262,36229,41468,34323,18216,9747, 41467,41467,
13592,39199,12021,12363,36576,41467,35737,23032,20629,15065,13916,36339,36228,8426, 12362,37999,22321,7729, 5434, 32981,31482,29840,33604,34300,4249, 3022, 14157,
- 16341,39199,14015,4959, 36228,37543,36228,15286,28137,41467,39199,37543,37542,39198,24272,14361,30253,36312,30920,1809, 31580,17337,38060,39198,29589,14685,5337,
- 20238,12652,32981,25399,33604,9471, 35795,12752,36470,33514,29759,6423, 20237,7578, 41466,13157,11965,37093,41466,41466,34322,31537,3025, 9518, 35181,15842,1005,
- 1100, 23253,13638,37542,36228,16931,21506,36809,33603,36227,15950,37788,13428,436, 5211, 31441,25727,32006,2680, 34322,3122, 41466,29758,9175, 39198,2839, 1563,
- 5151, 7997, 41465,22982,15949,34087,3173, 28136,41465,11468,4290, 7232, 20330,41465,21578,39198,10846,13637,37542,14479,18770,35181,24271,24270,11686,31579,989,
- 20236,3828, 30430,7013, 15948,11122,35754,2672, 41465,15947,5924, 37463,39197,3809, 9037, 8536, 36098,12789,10524,4123, 35181,30419,11998,21219,31602,34875,316,
+ 16341,39199,14015,4959, 36228,37543,36228,15286,28137,41467,39199,37543,37542,39198,24272,14361,30253,36312,30920,1809, 31580,17337,38060,39198,29589,14685,5337,
+ 20238,12652,32981,25399,33604,9471, 35795,12752,36470,33514,29759,6423, 20237,7578, 41466,13157,11965,37093,41466,41466,34322,31537,3025, 9518, 35181,15842,1005,
+ 1100, 23253,13638,37542,36228,16931,21506,36809,33603,36227,15950,37788,13428,436, 5211, 31441,25727,32006,2680, 34322,3122, 41466,29758,9175, 39198,2839, 1563,
+ 5151, 7997, 41465,22982,15949,34087,3173, 28136,41465,11468,4290, 7232, 20330,41465,21578,39198,10846,13637,37542,14479,18770,35181,24271,24270,11686,31579,989,
+ 20236,3828, 30430,7013, 15948,11122,35754,2672, 41465,15947,5924, 37463,39197,3809, 9037, 8536, 36098,12789,10524,4123, 35181,30419,11998,21219,31602,34875,316,
41464,17609,8028, 30140,16400,18253,39197,37542,38377,41464,15841,30066,10732,1176, 22649,34322,6768, 32774,35180,13156,39197,11075,41464,31430,18852,15476,16792,
- 38385,17724,35440,4687, 39197,35180,26679,38691,41464,33476,36227,35438,36227,29151,13636,17760,17759,37541,31578,37555,36227,14660,37574,28135,819, 22883,6710,
+ 38385,17724,35440,4687, 39197,35180,26679,38691,41464,33476,36227,35438,36227,29151,13636,17760,17759,37541,31578,37555,36227,14660,37574,28135,819, 22883,6710,
25790,5101, 41463,39196,924, 15015,1611, 30141,7788, 12361,41463,33603,36226,12151,15840,9517, 33603,36226,20751,15973,19748,23211,33798,1149, 13427,41463,10530,
36226,37216,37261,9219, 14659,6568, 9253, 17546,21265,3697, 34111,24705,21462,32981,38911,33248,35616,36226,36354,663, 22018,34322,41463,23210,28134,38495,17758,
39196,41462,36752,24747,37541,41462,32981,41462,35180,2560, 6484, 41462,39352,22946,37541,28133,37081,25398,15064,41461,6098, 5639, 37541,35404,22320,20750,17807,
39196,12751,37540,31577,17911,36225,39196,41461,37540,33559,1063, 1422, 37653,1577, 9036, 37791,34461,22227,21505,3542, 11878,13716,2184, 31559,1455, 41461,36225,
- 1074, 39374,8035, 14676,5236, 12736,2621, 2431, 17757,33150,16791,20235,34638,33346,13174,9277, 24645,25826,3591, 9568, 8581, 35838,37507,36235,29040,4393, 9058,
+ 1074, 39374,8035, 14676,5236, 12736,2621, 2431, 17757,33150,16791,20235,34638,33346,13174,9277, 24645,25826,3591, 9568, 8581, 35838,37507,36235,29040,4393, 9058,
6642, 37475,35924,38534,31576,41461,24269,39195,39100,39195,41460,18517,6311, 34321,10, 22219,2542, 32683,26303,10295,12238,31558,26354,25726,19508,32839,19386,
35202,38194,39195,38887,3696, 39195,37540,33603,36225,35140,15739,39390,28237,18411,35385,9938, 31626,33111,35180,27706,1410, 15962,2456, 5710, 37540,22236,17143,
24186,32261,12081,18963,23010,8188, 6188, 29362,13876,18455,4021, 12616,32817,15568,18317,36335,34353,23004,8020, 9376, 37539,19049,29373,34353,32843,27669,31472,
25265,37179,37385,19856,1931, 3203, 877, 20701,9014, 37539,947, 11893,910, 7840, 32785,1527, 4123, 32980,1120, 4162, 37539,15839,22306,11046,28132,23209,24039,
26678,41460,20056,1073, 37539,35179,35379,16968,41460,3176, 2119, 37341,32980,31575,74, 15756,31021,4224, 17142,8974, 27111,4373, 5252, 14603,27009,389, 21907,
- 16372,8725, 25928,37538,17498,6991, 32980,1354, 14558,35579,25397,13173,25784,15946,2659, 1763, 13635,14156,17608,3709, 9035, 14271,6703, 32860,30855,3452, 6541,
+ 16372,8725, 25928,37538,17498,6991, 32980,1354, 14558,35579,25397,13173,25784,15946,2659, 1763, 13635,14156,17608,3709, 9035, 14271,6703, 32860,30855,3452, 6541,
14658,18851,18215,20234,26051,15070,31574,35709,36734,39407,6380, 37538,37538,37538,39194,39194,38399,22319,35179,11685,28906,14375,41460,2305, 29237,36225,41459,
30026,22297,38923,13708,23844,32951,24740,32917,15673,25512,1059, 12360,6256, 1825, 29227,7577, 7714, 12810,1890, 27503,24755,1830, 1579, 20845,1035, 16989,36718,
35902,14584,3768, 12020,2168, 23182,21899,500, 13634,37942,21374,36224,18155,37239,32570,36423,24341,34507,38441,33427,37219,36287,26677,10916,19321,20233,41459,
@@ -19259,33 +19254,33 @@ static const unsigned short Ranks[197839] =
12543,8092, 28131,15284,37537,35178,37536,10888,37486,20859,11392,3620, 37536,34411,20749,39193,38150,29756,37812,41458,39193,33602,24377,21557,33212,37964,33602,
33759,41458,4975, 25396,33826,39372,37083,7361, 22396,29827,26676,23208,29755,34321,33602,39193,39192,29754,31573,34091,37615,38655,36175,41458,3471, 41458,39192,
15433,37536,37536,33601,11494,5522, 41457,23293,3504, 36224,22108,29526,3755, 33601,39192,22318,36783,33461,25395,37008,35178,14315,37535,39207,37379,2273, 22067,
- 31050,34155,41457,39346,36668,22317,4283, 29753,41457,8662, 38040,32541,36220,41457,39192,33974,11681,10248,9364, 37405,20931,36285,14104,35638,37646,35178,6350,
+ 31050,34155,41457,39346,36668,22317,4283, 29753,41457,8662, 38040,32541,36220,41457,39192,33974,11681,10248,9364, 37405,20931,36285,14104,35638,37646,35178,6350,
31875,9052, 4046, 23485,35774,37063,29537,34938,1784, 32140,22915,25115,18116,22411,35402,39191,4953, 10166,30179,3602, 33591,29121,28133,20381,38140,15283,18849,
- 15447,34898,33776,11959,15945,15282,34345,33564,14155,35695,14911,38539,27291,8425, 17891,34402,34570,31572,36022,16496,18848,36199,15281,3567, 1991, 15944,9746,
+ 15447,34898,33776,11959,15945,15282,34345,33564,14155,35695,14911,38539,27291,8425, 17891,34402,34570,31572,36022,16496,18848,36199,15281,3567, 1991, 15944,9746,
13098,15943,22686,12365,18847,27807,37932,34767,29545,37930,35755,14657,41456,6071, 17607,27352,4678, 9249, 16918,32914,38378,27514,14656,29750,33235,37698,14425,
33841,4741, 12116,37065,256, 12443,37923,9609, 35504,23578,17755,24268,16688,7555, 41456,36959,41456,32389,60, 15280,37702,31571,37535,41456,35177,4879, 32980,
14154,6422, 3203, 34251,9778, 2976, 272, 39191,35177,10076,20231,15785,5521, 862, 15942,29777,19145,30027,38713,6567, 3470, 39191,37625,36530,12821,36908,38104,
- 34380,35389,35487,34601,37535,19102,16679,36935,37535,4590, 33233,23417,25755,29924,27153,33921,41455,32185,21504,37557,33601,37439,30448,2650, 34140,36076,3469,
- 38761,19586,32979,14014,37650,38346,41455,32979,39191,2237, 21780,20834,28893,3498, 10144,33863,14589,21503,32911,41455,2407, 25293,9374, 10165,30712,9192, 5591,
- 1476, 2572, 8572, 33423,36051,12750,1538, 15692,28130,33878,15321,38383,3328, 20230,3259, 29503,18246,8839, 14249,759, 23249,12400,32973,3195, 20748,2017, 7897,
+ 34380,35389,35487,34601,37535,19102,16679,36935,37535,4590, 33233,23417,25755,29924,27153,33921,41455,32185,21504,37557,33601,37439,30448,2650, 34140,36076,3469,
+ 38761,19586,32979,14014,37650,38346,41455,32979,39191,2237, 21780,20834,28893,3498, 10144,33863,14589,21503,32911,41455,2407, 25293,9374, 10165,30712,9192, 5591,
+ 1476, 2572, 8572, 33423,36051,12750,1538, 15692,28130,33878,15321,38383,3328, 20230,3259, 29503,18246,8839, 14249,759, 23249,12400,32973,3195, 20748,2017, 7897,
5358, 30286,5824, 28868,11101,3005, 1929, 14285,21956,3773, 20340,16790,4450, 4506, 9952, 3415, 3545, 7865, 12347,37095,27359,23773,457, 1238, 38685,11680,39033,
- 14153,18214,37004,36224,33687,17100,6234, 5286, 41455,34410,17754,33601,33600,34673,38067,39190,25394,4856, 12092,36224,2044, 41454,33365,4760, 7561, 4353, 3278,
+ 14153,18214,37004,36224,33687,17100,6234, 5286, 41455,34410,17754,33601,33600,34673,38067,39190,25394,4856, 12092,36224,2044, 41454,33365,4760, 7561, 4353, 3278,
14293,31052,34035,36966,8019, 12362,39190,7576, 34921,10710,17753,18846,30772,4118, 19758,26075,32282,39190,35615,14655,20599,35177,20055,41454,7973, 41454,39190,
31570,3541, 17382,12797,12651,15941,3143, 35547,12906,41454,33919,23108,15940,36421,39189,41453,39189,41453,33600,36398,33271,1867, 37780,37534,35772,22231,20300,
3062, 32939,17752,32979,5873, 36174,1491, 37534,2998, 11730,2356, 38666,36223,37534,2286, 146, 30002,5048, 18281,14332,31247,8091, 36292,34321,18769,5661, 33600,
20851,41453,36333,4948, 30114,19863,6326, 9561, 14152,27507,37534,28129,10038,30297,5570, 34840,1958, 38179,21667,20047,15381,2133, 35057,4595, 31569,7902, 28542,
- 2413, 20229,11083,10678,11287,37292,37148,37165,2754, 14654,41453,39189,8571, 33187,14653,2365, 15138,23713,35177,36891,36223,29770,37810,28404,14058,1898, 862,
+ 2413, 20229,11083,10678,11287,37292,37148,37165,2754, 14654,41453,39189,8571, 33187,14653,2365, 15138,23713,35177,36891,36223,29770,37810,28404,14058,1898, 862,
3695, 32382,41452,23217,23268,27442,29559,37533,34320,32979,33991,25136,21942,17751,37533,35176,33600,33160,36223,11683,39189,37533,20228,41452,6409, 7759, 23865,
1368, 11094,16634,6315, 1049, 38111,32978,36344,25669,29021,35176,7082, 37533,39188,37532,41452,41452,35176,39188,26908,11821,36661,15403,18213,18207,38361,20227,
25258,2574, 35090,36161,5035, 25637,32978,17702,393, 16379,37532,9338, 54, 16708,1356, 36223,3185, 1015, 36222,1351, 11679,38855,19045,18768,37532,37532,37531,
- 41451,41451,11074,417, 3540, 3184, 41451,2924, 14151,26415,39117,39188,37531,21502,361, 38867,36222,24035,4093, 37531,16979,41451,21082,1774, 33709,10844,6209,
+ 41451,41451,11074,417, 3540, 3184, 41451,2924, 14151,26415,39117,39188,37531,21502,361, 38867,36222,24035,4093, 37531,16979,41451,21082,1774, 33709,10844,6209,
4160, 5875, 4716, 9324, 8486, 6682, 34699,24051,1833, 36072,37864,15573,5517, 2315, 32925,5954, 6566, 694, 15442,36412,20430,35176,32110,26675,37531,34238,25197,
- 15857,33599,34678,41450,20652,41450,29752,20266,20357,39163,10075,12749,928, 32880,41450,3692, 12719,9085, 32978,26615,12796,37869,17750,3432, 27325,39188,7157,
+ 15857,33599,34678,41450,20652,41450,29752,20266,20357,39163,10075,12749,928, 32880,41450,3692, 12719,9085, 32978,26615,12796,37869,17750,3432, 27325,39188,7157,
266, 29734,35703,29751,12399,2749, 19484,19665,37530,36222,35735,4729, 33077,9782, 28635,21501,412, 25982,269, 39187,37530,2213, 4211, 38449,39187,37530,41450,
204, 23348,41449,596, 1543, 690, 24267,5633, 8020, 20226,1110, 18845,1902, 10164,12019,3708, 3884, 3539, 14360,36222,26674,36715,2678, 36967,2046, 867, 34325,
- 36221,41449,15432,35175,1836, 29948,3737, 3656, 3662, 9951, 8018, 37169,8705, 12018,57, 6896, 24836,18774,17899,31311,20225,34320,41449,39187,30488,39315,4458,
+ 36221,41449,15432,35175,1836, 29948,3737, 3656, 3662, 9951, 8018, 37169,8705, 12018,57, 6896, 24836,18774,17899,31311,20225,34320,41449,39187,30488,39315,4458,
41449,37791,25944,38260,24654,35175,37530,41448,35175,6812, 35175,28128,17606,39187,5994, 28001,41448,31568,11894,32889,25393,2537, 33599,9010, 35174,10647,36221,
- 36221,41448,36221,39186,39186,17432,23207,1082, 828, 21559,33528,41448,37529,34499,35174,1048, 6681, 35747,16789,23206,35174,22316,21500,39186,93, 13216,1364,
+ 36221,41448,36221,39186,39186,17432,23207,1082, 828, 21559,33528,41448,37529,34499,35174,1048, 6681, 35747,16789,23206,35174,22316,21500,39186,93, 13216,1364,
9274, 4988, 597, 2588, 8794, 30628,23726,15018,4303, 35166,20224,3268, 38936,25864,21499,30501,37215,28242,27230,9261, 2256, 37529,476, 15832,23795,7380, 22508,
22202,8199, 12748,9745, 14150,5128, 13171,1632, 4532, 17749,14428,26191,14469,1885, 22004,399, 4100, 11939,18646,25471,15628,39186,10867,11815,32899,41447,13714,
6194, 3531, 1075, 18939,7012, 9950, 23043,9365, 41447,7379, 25392,12359,17748,20223,38290,37484,25693,16256,26247,35174,35173,15701,16784,36612,33781,19167,33869,
@@ -19296,26 +19291,26 @@ static const unsigned short Ranks[197839] =
21497,36896,22672,31527,24823,12856,31663,27460,19541,18418,26203,6193, 37802,25995,8203, 28126,34319,1328, 19842,39184,39183,18767,39183,694, 522, 14652,32977,
41446,37559,37528,39183,28125,31567,3029, 805, 39183,20222,37528,29749,16686,16454,13341,31356,32977,36529,21321,36490,33906,28384,37638,11473,38031,11970,39182,
2087, 34593,34067,41446,41446,29735,41446,32168,33598,34362,24266,18399,41445,36286,31776,3793, 24039,35796,34505,23204,33598,39182,39182,30164,34060,77, 23355,
- 41445,41445,2524, 14827,41445,21655,11391,36128,41444,793, 26438,14499,39182,13860,107, 4583, 2961, 7269, 14717,2960, 15279,154, 1283, 17747,24865,1660, 7513,
+ 41445,41445,2524, 14827,41445,21655,11391,36128,41444,793, 26438,14499,39182,13860,107, 4583, 2961, 7269, 14717,2960, 15279,154, 1283, 17747,24865,1660, 7513,
33598,41444,35913,2383, 35240,23171,33968,16788,34319,34319,1891, 5406, 17605,37105,13633,5, 1609, 943, 42, 17746,18844,17139,14682,3541, 32977,28265,12747,
- 14149,8288, 12824,7884, 16787,23203,35173,35172,6192, 12358,16786,6325, 37528,1503, 33597,31566,25452,23244,1, 1245, 39181,25390,37528,35172,1182, 4312, 540,
+ 14149,8288, 12824,7884, 16787,23203,35173,35172,6192, 12358,16786,6325, 37528,1503, 33597,31566,25452,23244,1, 1245, 39181,25390,37528,35172,1182, 4312, 540,
4497, 3059, 36240,12194,36536,12746,39247,29748,20648,26998,34456,32818,15242,33073,5661, 18715,6051, 23367,24710,29747,12149,10276,6012, 31379,17609,41444,10594,
- 32779,2381, 13700,7504, 31205,16183,27800,29282,2534, 21633,8210, 16439,27912,4387, 31572,4672, 25916,1262, 29450,32977,20584,41444,16475,11261,22614,2889, 5361,
+ 32779,2381, 13700,7504, 31205,16183,27800,29282,2534, 21633,8210, 16439,27912,4387, 31572,4672, 25916,1262, 29450,32977,20584,41444,16475,11261,22614,2889, 5361,
3273, 28129,3063, 31248,7564, 1997, 8228, 22315,41443,2620, 39181,9486, 28034,5136, 19578,23972,3570, 17745,1440, 15521,17421,26456,16538,39338,32980,28011,31122,
2842, 30841,32779,17744,18922,14822,22026,31565,32976,29746,39181,39181,33597,33174,41443,28, 3055, 4644, 4385, 32371,8435, 25354,30997,10331,2020, 23251,19534,
1799, 22337,24680,17743,9271, 11159,41443,7816, 41443,41442,122, 25389,22769,33103,18843,84, 17119,27462,262, 8429, 32100,29069,31391,21204,13304,8243, 18373,
- 9719, 9579, 1193, 4236, 2068, 37321,26008,34696,21269,39180,758, 62, 8680, 27957,30450,37527,35610,844, 6995, 31507,31119,36192,34476,7877, 1014, 37527,143,
+ 9719, 9579, 1193, 4236, 2068, 37321,26008,34696,21269,39180,758, 62, 8680, 27957,30450,37527,35610,844, 6995, 31507,31119,36192,34476,7877, 1014, 37527,143,
22125,34318,27794,34318,29541,34227,13792,2679, 6614, 9827, 3181, 25551,38796,37567,2711, 34383,814, 12426,32650,24480,34440,15302,33277,38228,3054, 13166,17015,
- 3222, 7184, 27565,36765,34357,2670, 33231,8678, 9146, 32158,11982,29882,32809,685, 35444,17325,36835,37377,23623,22499,41442,26667,28705,11678,26452,32870,6268,
+ 3222, 7184, 27565,36765,34357,2670, 33231,8678, 9146, 32158,11982,29882,32809,685, 35444,17325,36835,37377,23623,22499,41442,26667,28705,11678,26452,32870,6268,
39081,17299,10331,2025, 7659, 38849,1499, 15056,15214,10866,42, 2901, 1860, 5366, 96, 8425, 2169, 2938, 14502,24230,36538,794, 35258,9744, 27929,8424, 26591,
13170,72, 15229,538, 2183, 30829,2964, 28112,18570,36484,3706, 28124,26562,10104,3864, 25548,36788,3480, 22983,36442,38349,36764,39370,15798,11382,34069,11975,
30294,7183, 32807,18842,37513,31906,28380,35011,9560, 8851, 39139,39180,14351,379, 4965, 32505,642, 19012,25742,9009, 23202,36220,22314,4540, 1832, 39180,37097,
23697,8207, 23721,16785,75, 14148,13107,18006,7946, 36924,30822,2529, 23115,27271,24265,3490, 29941,20897,14651,12745,24827,36662,35897,20995,8256, 16001,39180,
- 23432,20222,26638,36891,38115,8892, 9980, 20221,23613,12650,7730, 11648,24792,6968, 41442,41442,39179,25388,20747,28123,9777, 31992,34318,41441,8854, 13623,4442,
+ 23432,20222,26638,36891,38115,8892, 9980, 20221,23613,12650,7730, 11648,24792,6968, 41442,41442,39179,25388,20747,28123,9777, 31992,34318,41441,8854, 13623,4442,
25527,27924,9213, 22204,37527,33, 997, 522, 140, 650, 2923, 18841,21906,38371,28426,37527,41441,38699,26673,4510, 35480,16685,5479, 20746,39179,20745,35172,
- 9931, 2493, 2473, 35172,33637,2209, 24336,36574,17576,18840,11677,7658, 32950,20220,20698,21178,20915,5733, 27665,21458,41441,32976,37526,14709,2064, 41441,3776,
+ 9931, 2493, 2473, 35172,33637,2209, 24336,36574,17576,18840,11677,7658, 32950,20220,20698,21178,20915,5733, 27665,21458,41441,32976,37526,14709,2064, 41441,3776,
37526,7896, 35171,36220,5572, 41440,32976,18212,24264,24263,16684,20408,41440,35261,34318,37526,35171,5534, 28312,32976,5754, 37526,39179,10705,39412,24540,34455,
- 4057, 11390,5874, 5303, 2516, 36219,38886,38772,36701,28122,35171,10375,39179,41440,41440,11121,35171,34317,30888,1732, 9949, 89, 17742,30258,10843,7575, 118,
+ 4057, 11390,5874, 5303, 2516, 36219,38886,38772,36701,28122,35171,10375,39179,41440,41440,11121,35171,34317,30888,1732, 9949, 89, 17742,30258,10843,7575, 118,
9948, 37525,4626, 41, 31112,21696,9921, 8501, 2418, 222, 9190, 463, 28057,12900,28832,4705, 13632,38511,20219,12357,13631,39089,33173,36491,197, 10278,18563,
4413, 27121,4984, 2577, 2353, 32339,5486, 8850, 10401,781, 33346,24034,38016,12308,18766,9, 14650,2697, 14460,4005, 11808,11677,33597,9572, 17004,7956, 32139,
37525,38316,41439,20054,37525,12356,37525,41439,37524,41439,39178,19391,38599,36219,36219,39178,33597,37524,39178,39178,39121,13155,29745,4728, 3400, 41439,13154,
@@ -19325,19 +19320,19 @@ static const unsigned short Ranks[197839] =
29743,11073,36236,32635,16683,16411,17740,33596,41437,20744,22313,39177,39177,2343, 38435,29742,8327, 41437,28120,26672,37523,3705, 23199,25386,20218,38679,36218,
1443, 14359,39176,32975,35379,37523,3967, 20217,3394, 14012,36218,39176,8423, 11681,32975,322, 35170,15939,21032,27208,37449,33213,3555, 6123, 22158,11279,19375,
41436,4271, 36218,35727,4015, 1315, 14649,9776, 41436,5035, 29741,33596,36326,9076, 41436,3147, 34246,34556,150, 27754,2228, 37088,295, 109, 2603, 17739,15938,
- 6136, 1191, 16783,640, 1713, 10842,41436,10545,14638,32900,41435,15431,12649,36217,41435,25385,41435,3617, 27436,2127, 18104,14147,35657,8462, 4192, 14733,7815,
+ 6136, 1191, 16783,640, 1713, 10842,41436,10545,14638,32900,41435,15431,12649,36217,41435,25385,41435,3617, 27436,2127, 18104,14147,35657,8462, 4192, 14733,7815,
24070,7776, 13630,1223, 1906, 1339, 1562, 6363, 2041, 7895, 59, 20213,36906,16488,10271,33027,26592,19741,34461,17738,10841,4300, 8849, 12648,37523,41435,14358,
- 28996,1972, 14708,39207,23612,5237, 17535,35010,41434,1033, 13422,6883, 20216,3260, 1504, 4107, 15795,5873, 8422, 36703,12437,6927, 12599,12744,7209, 35169,1472,
- 13470,25660,4471, 37805,29232,8421, 8202, 20215,23198,33512,34921,18010,20214,32975,2262, 20743,24260,14343,32505,38936,39207,21495,31563,10212,26671,41434,6191,
+ 28996,1972, 14708,39207,23612,5237, 17535,35010,41434,1033, 13422,6883, 20216,3260, 1504, 4107, 15795,5873, 8422, 36703,12437,6927, 12599,12744,7209, 35169,1472,
+ 13470,25660,4471, 37805,29232,8421, 8202, 20215,23198,33512,34921,18010,20214,32975,2262, 20743,24260,14343,32505,38936,39207,21495,31563,10212,26671,41434,6191,
35689,85, 397, 11295,18839,513, 34497,11119,38025,36575,18838,5214, 18837,8420, 1162, 1416, 2965, 8155, 33596,39176,37523,14635,25616,4911, 15937,14146,20213,
32975,18836,41434,17022,35490,16782,18835,2039, 26926,36864,22134,10840,32974,4555, 31533,20212,16238,1024, 25072,5302, 26669,35169,18532,24259,41434,26670,41433,
39176,2900, 38968,14145,33686,38147,7135, 15278,3139, 23197,7182, 478, 5490, 31469,9743, 19789,31562,11498,79, 26328,1360, 30854,12765,19167,14274,27446,15399,
17327,3132, 33747,9214, 13593,12718,16226,21316,32792,34377,35210,39175,37442,38616,14648,33115,10156,12355,11193,36696,41433,33727,10613,33739,36217,29740,37522,
- 5478, 41433,30478,9947, 37474,35169,10122,22426,41433,25630,9367, 33595,533, 36217,19390,4754, 25577,26669,41432,33595,25161,33595,1782, 10162,33877,38009,1834,
+ 5478, 41433,30478,9947, 37474,35169,10122,22426,41433,25630,9367, 33595,533, 36217,19390,4754, 25577,26669,41432,33595,25161,33595,1782, 10162,33877,38009,1834,
39175,37522,41432,450, 18834,25384,24143,1421, 24141,29090,24258,18833,15176,10478,31480,37338,17604,23680,208, 2455, 37626,33595,39175,29739,39060,17737,36952,
35003,25154,37522,34316,32889,34810,9034, 38797,12354,31660,39146,706, 21858,5940, 3315, 1224, 16805,39175,36732,9449, 2413, 13713,3692, 1137, 20742,28658,37522,
17603,3732, 39174,12398,11260,20741,2646, 20732,35169,7455, 20065,37521,15177,2820, 38092,4692, 4264, 15155,31280,35594,14144,33003,33594,39174,37521,19846,31561,
- 25304,3542, 23471,39174,5759, 36217,7495, 37521,3092, 22312,36881,36216,34519,8781, 41432,41432,25383,14573,3186, 4171, 36979,9217, 1155, 17736,14003,20353,1143,
+ 25304,3542, 23471,39174,5759, 36217,7495, 37521,3092, 22312,36881,36216,34519,8781, 41432,41432,25383,14573,3186, 4171, 36979,9217, 1155, 17736,14003,20353,1143,
3707, 918, 10839,15225,6463, 9216, 6632, 5570, 31560,20740,9364, 7170, 25157,19950,33361,6484, 5755, 24257,10838,17735,12397,21938,3953, 37356,8746, 18493,38740,
37521,10400,16255,39174,39173,1142, 5581, 14143,1135, 27080,16955,30287,1454, 23196,12148,14011,26421,24256,10755,24255,36216,39173,36216,37520,36216,34316,37520,
13424,10211,37520,37520,21518,3397, 16682,38644,41431,33594,30199,34909,2787, 2963, 20053,13438,36015,35168,22491,12647,2877, 25382,1507, 11052,2519, 2240, 12485,
@@ -19346,23 +19341,23 @@ static const unsigned short Ranks[197839] =
32754,17012,21321,5800, 23170,26030,36215,10950,11164,16138,22678,121, 18390,3786, 24350,20110,25905,29738,24058,10839,16637,39173,4376, 44, 9755, 2615, 32291,
18955,9294, 27691,3709, 31031,27926,12407,30209,22519,22262,34316,11680,32819,6152, 1049, 25808,10681,6783, 21229,14647,13168,17734,4952, 20211,7390, 17733,16781,
2695, 17732,36811,9515, 29737,14707,29960,36494,12477,32133,26987,8878, 27903,14906,20029,8964, 34676,14880,18765,38780,26577,30216,2734, 36215,34315,15809,39172,
- 3183, 38683,36365,23479,35137,34284,9946, 36197,35168,35667,32546,15920,21134,20526,1669, 18688,26288,37018,20223,17985,3396, 35341,16604,6866, 14121,27644,5632,
+ 3183, 38683,36365,23479,35137,34284,9946, 36197,35168,35667,32546,15920,21134,20526,1669, 18688,26288,37018,20223,17985,3396, 35341,16604,6866, 14121,27644,5632,
39172,12396,7160, 37519,35197,12519,24228,567, 32863,25977,16745,34315,37519,39172,38147,31470,33594,39172,3564, 2814, 7646, 1634, 36253,996, 32925,16254,14142,
6044, 15837,686, 14357,6151, 41431,14010,12500,12905,36215,17731,34315,41431,33919,12904,6022, 13773,15520,2961, 34507,41430,41430,164, 8675, 26200,29669,37542,
33874,41430,27766,41430,23885,37835,15669,39335,1023, 14086,19534,37078,18580,5571, 22405,34783,35168,9766, 18125,20091,17544,34315,10689,17309,41429,34573,36214,
23195,11118,37519,41429,29643,40, 16579,27496,28079,36684,13464,37953,6565, 22933,18516,34018,32919,7181, 36506,4532, 20440,38695,7755, 8656, 41429,4825, 34072,
14721,37359,35337,11966,3866, 8704, 229, 26819,34901,37545,38236,10809,31861,36680,26265,6641, 38290,20210,17242,11940,27289,20209,33026,37518,8703, 3468, 20208,
- 1385, 23401,37518,33601,35432,15697,17730,39178,11259,16253,3637, 14141,35167,36214,11921,37518,4117, 31559,35167,34314,18832,12155,4704, 10161,8545, 35167,1359,
+ 1385, 23401,37518,33601,35432,15697,17730,39178,11259,16253,3637, 14141,35167,36214,11921,37518,4117, 31559,35167,34314,18832,12155,4704, 10161,8545, 35167,1359,
37518,5900, 17729,420, 8403, 20418,29641,16625,30118,14864,14695,11327,37805,14646,39171,41429,41428,7070, 23022,4952, 38526,28985,31052,22310,17127,22488,41428,
27, 6894, 30952,16249,6542, 15277,24254,34314,35167,33594,14706,38648,8201, 35166,23205,34441,6799, 32049,41428,3808, 92, 32538,16680,33290,37792,38873,37608,
18137,13712,27824,6200, 37263,20417,39145,29092,33994,11106,13423,4034, 19389,9253, 20739,8200, 32973,32589,15936,35925,33748,37517,11920,9252, 23194,15822,16780,
- 3319, 9033, 19035,11748,32973,41428,18210,33258,5802, 22309,20207,7159, 8570, 10160,32973,36214,26368,14826,21698,34714,6505, 39171,37495,2922, 37517,14140,567,
+ 3319, 9033, 19035,11748,32973,41428,18210,33258,5802, 22309,20207,7159, 8570, 10160,32973,36214,26368,14826,21698,34714,6505, 39171,37495,2922, 37517,14140,567,
8987, 4291, 13492,2918, 16779,12743,35166,13711,13153,29736,20738,22308,41427,2043, 30083,41427,39171,37517,38351,23193,34314,16252,41427,32973,5570, 9251, 32544,
- 23192,12596,10074,35976,27340,14139,10399,1745, 24253,34314,31558,18673,39092,21319,36475,14645,37125,24071,1135, 41427,37517,18086,36045,33715,41426,29454,1361,
+ 23192,12596,10074,35976,27340,14139,10399,1745, 24253,34314,31558,18673,39092,21319,36475,14645,37125,24071,1135, 41427,37517,18086,36045,33715,41426,29454,1361,
13666,18035,32972,12353,36885,17728,39171,1297, 37719,37516,14009,27374,41426,17016,27491,3789, 22433,25381,18764,3776, 6489, 18831,34313,35166,36214,8434, 17136,
41426,21494,6135, 7460, 16251,16679,34313,17978,12147,33489,7426, 10696,41426,2529, 29735,10398,8848, 14138,1069, 7019, 35158,15724,35464,35166,11389,2307, 35616,
10871,34438,9314, 37832,28661,23191,2785, 581, 37737,14137,19237,3988, 35942,8154, 24252,22912,34664,8017, 39170,39395,39170,34631,27727,39170,34313,23190,21489,
- 15063,38997,37516,36044,32836,34844,34712,21884,30574,18835,38309,22474,34890,35839,31557,5301, 3694, 38278,20052,28119,19327,38468,23189,20737,41425,41425,2559,
+ 15063,38997,37516,36044,32836,34844,34712,21884,30574,18835,38309,22474,34890,35839,31557,5301, 3694, 38278,20052,28119,19327,38468,23189,20737,41425,41425,2559,
41425,28118,36213,3618, 896, 17602,15046,35165,41425,39170,38451,38773,36879,19388,31556,33838,14157,2975, 5661, 39169,24888,5923, 14644,3871, 8689, 27604,39343,
36238,17808,23718,588, 9303, 15072,2547, 1144, 19035,38672,37516,37516,36923,14705,33080,5734, 41424,16109,17175,34298,28093,18181,33899,9774, 268, 1080, 14007,
26590,1560, 41424,1116, 33092,36857,9489, 35165,6237, 22498,26667,7014, 24092,35847,20125,33178,376, 17679,31371,11785,15062,3083, 29734,41424,23042,2017, 39169,
@@ -19371,7 +19366,7 @@ static const unsigned short Ranks[197839] =
32841,20403,37515,36213,41422,15181,18179,14201,36171,11462,6417, 9183, 24811,29890,3, 20205,18860,5013, 33070,37270,28676,19647,26222,11117,20204,37515,22307,
37515,34312,34312,1190, 19897,8016, 3838, 15935,20203,8569, 41422,11676,7130, 18256,3329, 35164,6327, 35164,7554, 26311,28794,18829,37514,14008,37274,35164,35164,
5337, 2838, 18763,834, 25674,39168,32972,36213,35163,3327, 1478, 11919,32783,34012,37514,36535,41422,26665,23188,39168,41421,15923,18828,21097,423, 17424,30513,
- 24974,27274,6342, 29906,29733,25247,3617, 24834,39167,16250,11072,36246,34312,35779,39167,23464,36212,8153, 36212,27863,33695,36212,776, 22392,39167,12395,245,
+ 24974,27274,6342, 29906,29733,25247,3617, 24834,39167,16250,11072,36246,34312,35779,39167,23464,36212,8153, 36212,27863,33695,36212,776, 22392,39167,12395,245,
7612, 24893,19577,86, 30848,20202,18827,8847, 14643,20201,6709, 37514,41421,23187,33479,22828,36212,33593,33616,7459, 31556,39167,41421,35630,36211,23677,33453,
34312,2384, 12352,41421,35163,38345,15823,4097, 41420,36211,31555,41420,27135,14136,6564, 35163,17135,36211,21493,28117,41420,18416,2312, 39166,20051,34311,32972,
4020, 34311,36211,32972,41420,19386,33593,7773, 32578,20200,11675,20199,41419,22131,168, 9215, 37307,9771, 33570,37514,39166,37513,8183, 37456,25582,20198,34311,
@@ -19381,10 +19376,10 @@ static const unsigned short Ranks[197839] =
17511,8780, 39165,31554,36210,12412,33659,31553,41418,39165,3091, 37374,29417,1988, 27468,3417, 15275,37005,20195,20194,6421, 27065,41418,7377, 35162,33526,15061,
26663,41418,33592,13710,15060,4033, 41418,33592,28720,8779, 2472, 36209,35162,10085,23471,32971,29315,5660, 35162,25380,38681,37019,11438,36209,41417,29731,37512,
5659, 37511,11507,20860,16631,29460,34310,38759,37511,149, 22747,7162, 24634,16249,4445, 37007,24250,33592,9775, 41417,28269,34310,15934,387, 19364,1121, 16678,
- 17600,16677,36209,38289,41417,17599,41417,15059,23186,37511,39165,33575,26627,26662,31552,41416,23185,15871,9250, 18684,37511,16387,8334, 2137, 19140,28238,5012,
+ 17600,16677,36209,38289,41417,17599,41417,15059,23186,37511,39165,33575,26627,26662,31552,41416,23185,15871,9250, 18684,37511,16387,8334, 2137, 19140,28238,5012,
38259,3041, 15058,36578,41416,8433, 33592,8342, 39168,19455,19193,37510,6114, 13757,9742, 20619,339, 12490,16790,30741,31726,15057,10260,41416,10397,26661,18223,
1524, 41416,34114,38055,17598,25379,8199, 20736,16778,2757, 27757,23184,41415,41415,38291,1953, 2719, 36209,36208,23307,13422,37510,23065,19022,41415,20170,31551,
- 24249,37371,10210,39164,41415,2218, 1105, 35161,11303,34310,15505,29730,13167,419, 37510,15274,20193,156, 2159, 12889,12324,30455,22788,2464, 26867,19908,3020,
+ 24249,37371,10210,39164,41415,2218, 1105, 35161,11303,34310,15505,29730,13167,419, 37510,15274,20193,156, 2159, 12889,12324,30455,22788,2464, 26867,19908,3020,
11604,32794,19462,11015,13275,26524,29044,36501,15042,38180,2382, 32818,39164,298, 29810,18825,37510,39208,32338,37509,1263, 37509,13152,5140, 39164,8453, 41414,
23183,35161,39164,18824,41414,16676,41414,32862,25589,29303,16763,33977,37209,2463, 2921, 41414,10800,20744,8418, 39163,23518,17750,39163,24655,37509,2462, 41413,
24764,28115,11472,2051, 14641,16744,37467,23182,41413,6043, 6109, 3467, 41413,925, 3302, 7455, 14893,13166,37761,38958,34976,41413,25378,35595,39321,39163,18823,
@@ -19394,11 +19389,11 @@ static const unsigned short Ranks[197839] =
7563, 170, 25376,16248,11257,9877, 41411,33591,1851, 18305,41410,32123,5080, 4643, 38334,29729,4958, 29460,17706,14788,36738,3261, 33060,19319,1987, 23669,38987,
11338,41410,31549,8011, 31548,4727, 8090, 34309,4957, 41410,39162,5853, 3210, 23903,5120, 8293, 13709,13028,9291, 23982,10612,20192,35161,33591,31122,14651,10368,
10754,6708, 17059,11912,2496, 10159,41410,11470,3779, 14640,11341,35161,15933,11679,6134, 29910,11674,14134,3634, 12739,25225,21491,6782, 2175, 27673,15932,30102,
- 11772,36207,219, 35166,41409,41409,28114,35466,8014, 7879, 19837,29268,1767, 23923,21300,15750,1797, 15056,10723,28113,37509,18821,9513, 37508,14581,11128,366,
+ 11772,36207,219, 35166,41409,41409,28114,35466,8014, 7879, 19837,29268,1767, 23923,21300,15750,1797, 15056,10723,28113,37509,18821,9513, 37508,14581,11128,366,
11519,17134,4584, 2535, 34229,28112,37046,2824, 8677, 35894,37508,2581, 39162,33809,37637,24335,6503, 41409,39162,39161,41409,39161,13712,28519,41408,17726,32188,
36633,11854,13145,35122,7168, 41408,37140,36273,37162,36207,41408,6284, 39161,8198, 27573,27071,6723, 37508,28111,5872, 18981,36477,22648,17849,35160,37508,35474,
11071,35160,39161,25473,3544, 39160,1586, 29943,37507,18761,7553, 12738,39160,17725,16084,28899,12645,39096,3029, 34529,34064,8735, 6586, 38771,28215,18820,12017,
- 28164,7405, 17724,23328,32686,38671,41408,8617, 3538, 5621, 9249, 39096,26660,13057,35159,32186,23089,39160,14548,10529,15430,39160,35645,26659,41407,37559,3372,
+ 28164,7405, 17724,23328,32686,38671,41408,8617, 3538, 5621, 9249, 39096,26660,13057,35159,32186,23089,39160,14548,10529,15430,39160,35645,26659,41407,37559,3372,
6563, 9032, 19385,11673,33591,36772,15972,38534,34309,35286,39159,2649, 20191,36207,20190,35160,41407,15835,15348,25375,38945,38722,37277,16247,5139, 20735,18760,
34309,930, 4954, 15429,11678,3394, 29728,13138,35160,27996,15273,21490,37742,4375, 25500,29727,33093,29726,11918,37507,37507,28142,4916, 10158,8287, 39002,33229,
26658,1976, 39126,35159,38556,828, 12392,7406, 23800,38640,29725,38922,37855,10418,36207,33590,39159,39159,22913,41407,39323,39159,28110,33590,22749,3138, 27022,
@@ -19414,33 +19409,33 @@ static const unsigned short Ranks[197839] =
20185,18030,13629,26655,39156,37366,27650,8013, 33570,9808, 6591, 36205,39155,41401,17722,21372,41401,8702, 13708,13420,412, 32840,38126,17101,2256, 18816,35729,
25946,24052,20732,37504,2085, 2063, 2515, 21693,3367, 20184,37257,22756,549, 2840, 37364,32720,15931,33931,2394, 36204,39155,34308,14703,26558,16246,32970,11070,
36204,39155,5336, 41401,37504,39155,10611,11698,34128,41400,21398,37504,3393, 1532, 31194,33589,20731,37503,36204,35159,3918, 39279,2536, 1480, 632, 37865,39154,
- 38938,6539, 7041, 2010, 8152, 10374,2678, 871, 12759,33429,11388,2788, 8432, 36204,10223,4216, 10886,36203,10373,37503,36203,132, 18302,4302, 35196,36120,6097,
+ 38938,6539, 7041, 2010, 8152, 10374,2678, 871, 12759,33429,11388,2788, 8432, 36204,10223,4216, 10886,36203,10373,37503,36203,132, 18302,4302, 35196,36120,6097,
3792, 12351,19692,9945, 18815,10540,16809,6371, 1225, 41400,35706,8880, 34308,341, 14131,10490,665, 4200, 14615,7552, 34315,14356,10395,31472,11425,39154,24217,
- 11255,34984,41400,20049,29763,29723,16575,21414,8286, 28108,3521, 7274, 36726,10157,9741, 7364, 17721,34261,1781, 1454, 32606,17739,26298,17837,16675,12350,7011,
+ 11255,34984,41400,20049,29763,29723,16575,21414,8286, 28108,3521, 7274, 36726,10157,9741, 7364, 17721,34261,1781, 1454, 32606,17739,26298,17837,16675,12350,7011,
34282,30580,37701,21421,41400,27962,39154,23233,34576,37781,37503,12289,209, 8708, 23292,19971,2389, 18273,28107,15055,41399,25372,17720,25790,23106,30770,33411,
28295,24812,41399,22305,20048,41399,34307,37901,22304,22536,24200,28782,1872, 26977,34192,20183,3917, 1887, 4898, 34271,17990,4008, 41399,274, 24884,15272,20182,
- 33191,15930,41398,37503,26654,389, 32846,514, 8285, 387, 19092,14974,19985,3145, 2903, 16886,18814,2360, 35882,15779,18275,777, 35445,29423,33518,34156,4502,
- 33942,27828,32931,5897, 29984,1829, 32847,9718, 7590, 108, 6640, 24789,12130,29722,30741,37004,587, 2528, 17356,3931, 16156,11911,15271,37959,2492, 19291,9900,
+ 33191,15930,41398,37503,26654,389, 32846,514, 8285, 387, 19092,14974,19985,3145, 2903, 16886,18814,2360, 35882,15779,18275,777, 35445,29423,33518,34156,4502,
+ 33942,27828,32931,5897, 29984,1829, 32847,9718, 7590, 108, 6640, 24789,12130,29722,30741,37004,587, 2528, 17356,3931, 16156,11911,15271,37959,2492, 19291,9900,
4647, 5310, 30715,19709,18813,1937, 1191, 586, 32991,13590,21608,2094, 2324, 39154,23181,27512,10759,32970,41398,1100, 19225,15819,16776,15683,4147, 8684, 35158,
- 9774, 37357,9944, 2143, 29721,35158,31547,2223, 7010, 36175,2047, 39153,41398,39153,36694,28484,41398,1530, 30295,38280,11191,3204, 18181,7696, 18830,35890,6436,
+ 9774, 37357,9944, 2143, 29721,35158,31547,2223, 7010, 36175,2047, 39153,41398,39153,36694,28484,41398,1530, 30295,38280,11191,3204, 18181,7696, 18830,35890,6436,
33571,30473,35158,3630, 35356,783, 10330,17133,1538, 8151, 12501,3490, 8445, 41397,20181,398, 19018,33586,14841,34307,4355, 18812,1198, 30017,33735,21748,37769,
- 34307,15270,20180,9740, 35158,7009, 30756,3898, 34846,9031, 4839, 14303,17798,7900, 39153,33807,34737,6345, 5700, 21281,15201,4423, 18209,36696,32485,37502,7237,
- 11115,36611,37085,39153,7728, 2420, 37502,34307,32970,41397,2502, 37502,15929,6102, 11114,17719,11387,14130,20179,37354,6376, 5846, 10760,423, 33589,34306,1448,
- 35342,37677,35157,33589,29720,41397,2535, 34739,37502,21487,12527,15928,32903,4158, 20178,17718,10394,7363, 10610,31682,3573, 29401,35881,38825,4738, 20339,4368,
+ 34307,15270,20180,9740, 35158,7009, 30756,3898, 34846,9031, 4839, 14303,17798,7900, 39153,33807,34737,6345, 5700, 21281,15201,4423, 18209,36696,32485,37502,7237,
+ 11115,36611,37085,39153,7728, 2420, 37502,34307,32970,41397,2502, 37502,15929,6102, 11114,17719,11387,14130,20179,37354,6376, 5846, 10760,423, 33589,34306,1448,
+ 35342,37677,35157,33589,29720,41397,2535, 34739,37502,21487,12527,15928,32903,4158, 20178,17718,10394,7363, 10610,31682,3573, 29401,35881,38825,4738, 20339,4368,
29620,922, 10917,36123,34319,9211, 34360,39080,36533,32257,31614,26364,34687,18931,29157,19380,14129,12218,38347,31098,16775,39176,11282,37857,26637,9368, 20177,
7362, 34084,5133, 16022,15558,6362, 39277,28865,38434,22768,28123,16875,11402,20379,7223, 37816,1294, 15910,25597,26339,9363, 995, 37299,5262, 4607, 20172,39046,
8974, 4002, 3283, 22293,7940, 18921,3239, 10523,6813, 7087, 7941, 20176,8150, 14639,7284, 5814, 6926, 13628,17717,33276,39214,39417,9299, 20175,10138,38773,12826,
2093, 18580,21089,2200, 6115, 8874, 13515,7987, 13391,36162,20174,27040,32161,23105,32785,4423, 1821, 5837, 8549, 1833, 13967,3992, 2430, 9290, 26261,25132,12035,
12282,34355,37138,20615,39170,11050,36291,13804,36272,34829,37245,2156, 7651, 7264, 13751,4272, 3976, 8773, 8321, 29364,11984,38318,17034,34183,37139,21232,38136,
- 34355,33589,33932,38505,37502,6493, 5235, 33077,35153,33042,38418,36708,13627,31717,2528, 11459,15747,35124,15927,36328,12349,23328,11706,863, 30534,1304, 3501,
+ 34355,33589,33932,38505,37502,6493, 5235, 33077,35153,33042,38418,36708,13627,31717,2528, 11459,15747,35124,15927,36328,12349,23328,11706,863, 30534,1304, 3501,
11645,19509,34352,6717, 6812, 25414,21337,34701,19707,36323,38853,14638,33682,30476,35183,16245,9888, 30063,6706, 25674,8701, 18811,33375,7423, 16587,35157,28106,
4248, 21176,36203,36311,21898,23225,1558, 41397,39152,13419,35157,38317,17085,41396,15269,30286,23728,41396,2919, 38949,1520, 2876, 15926,34306,9689, 9943, 33128,
4611, 34710,35473,1330, 19399,14128,3840, 35157,17716,5758, 10137,6021, 3305, 37501,41396,37501,35684,37501,11895,41396,17715,9651, 36203,33588,35156,18759,34306,
39074,2203, 17714,3916, 36584,20173,5922, 18810,39152,41395,36202,29719,33588,10885,23180,41395,23179,31546,41395,29688,36202,28871,35151,33588,10151,962, 17572,
- 32987,2236, 2759, 6040, 2398, 10797,2650, 8438, 7510, 3312, 20820,33294,2860, 23178,8879, 1494, 37501,31258,7803, 10414,11853,13883,15834,29695,37500,12911,8149,
+ 32987,2236, 2759, 6040, 2398, 10797,2650, 8438, 7510, 3312, 20820,33294,2860, 23178,8879, 1494, 37501,31258,7803, 10414,11853,13883,15834,29695,37500,12911,8149,
14834,15925,23211,36202,36202,34306,116, 5614, 41395,29748,35962,12348,24244,25371,7551, 33849,16193,19128,29182,37547,15061,24725,9248, 35156,24111,3479, 18809,
33588,34305,29718,1691, 24243,6933, 7657, 39234,16674,39152,38393,7458, 37970,11671,10068,17132,7268, 15054,10609,9558, 13626,14127,3393, 2828, 36201,35156,17131,
- 41394,2877, 24242,5592, 37876,34710,16673,2106, 10393,3765, 34477,6562, 34440,3600, 914, 10392,1264, 13625,5543, 14126,1731, 5700, 11245,965, 4864, 3064, 1359,
+ 41394,2877, 24242,5592, 37876,34710,16673,2106, 10393,3765, 34477,6562, 34440,3600, 914, 10392,1264, 13625,5543, 14126,1731, 5700, 11245,965, 4864, 3064, 1359,
36201,37127,41394,33532,37500,26653,32087,20476,22761,5757, 24302,38294,41394,1523, 32991,39034,39152,39005,34145,22279,37500,27425,37500,41394,41393,28105,24241,
36201,940, 23529,28181,4726, 29466,36640,5504, 15268,15924,19271,10836,33130,38787,12530,26649,3616, 1350, 20432,17130,18847,5535, 12864,29717,41393,33587,24121,
26652,37499,38567,36201,39151,36200,35156,13151,33587,11917,29716,34305,37499,14007,41393,28104,35155,37499,41393,35155,36200,41392,1655, 33587,5380, 30405,25377,
@@ -19456,16 +19451,16 @@ static const unsigned short Ranks[197839] =
34833,37206,24630,433, 983, 28695,2747, 26650,12347,18208,19383,14125,9029, 12800,1717, 32576,17711,1759, 19570,35154,41387,20438,25042,34303,13123,34198,34948,
2315, 21376,39255,41387,27861,39148,35153,38662,39148,349, 37495,36867,18978,9145, 1741, 9042, 35486,16244,16771,41387,33821,41386,35153,8284, 16770,20168,17710,
38531,33550,41386,13778,9557, 30353,5801, 877, 10564,27120,5449, 37712,11224,9739, 9512, 41386,34092,34303,41386,35893,32573,29710,37640,33628,19310,16769,34303,
- 39148,6001, 39147,34300,34213,39240,33322,36743,33518,21733,41385,41385,32969,39147,15335,35975,7572, 38240,23040,32968,34817,26699,20453,38238,4140, 41385,5050,
+ 39148,6001, 39147,34300,34213,39240,33322,36743,33518,21733,41385,41385,32969,39147,15335,35975,7572, 38240,23040,32968,34817,26699,20453,38238,4140, 41385,5050,
24896,34877,20728,35153,32968,1849, 26649,6639, 33390,38931,41385,41384,11068,11409,37495,12644,18806,10608,14124,41384,39147,19382,22401,501, 25326,37495,20316,
37153,39147,31543,38348,29090,33586,39146,17709,2800, 14123,770, 20273,16080,33950,23113,37267,20479,4493, 5960, 354, 5367, 15452,27032,13624,31542,10383,12014,
- 39146,12902,24239,39146,26648,37434,2709, 35052,29709,20727,16830,34344,13436,33213,585, 13349,29635,16768,38184,27362,26647,36792,33316,2102, 14836,34902,5179,
+ 39146,12902,24239,39146,26648,37434,2709, 35052,29709,20727,16830,34344,13436,33213,585, 13349,29635,16768,38184,27362,26647,36792,33316,2102, 14836,34902,5179,
23710,10259,19057,7837, 1400, 15265,6042, 13163,33436,37349,3564, 17597,35306,35337,7640, 32794,26569,1280, 33586,22300,3826, 41384,32968,3694, 35923,37495,23174,
32968,8283, 4915, 28101,14050,3277, 16522,13255,18805,36121,22033,37494,37494,23173,1552, 25835,509, 35153,14355,36756,1214, 645, 9713, 38367,9463, 19737,11738,
7361, 38194,26489,18501,37494,8700, 36199,20761,33586,1888, 26041,35497,35266,29708,15053,33585,33585,37494,1034, 14063,16134,10607,30010,16743,38147,13162,39063,
17699,35662,33652,37725,15448,41384,17127,39290,36199,11469,10704,8891, 6361, 20167,33910,23172,33585,32967,21355,11386,28501,1104, 26219,32802,34303,17125,21274,
34302,41383,35152,22752,41383,41383,32973,41383,37493,8878, 39146,32396,37413,36198,36991,41382,35152,33585,22299,23286,33584,39145,13707,12441,39145,37107,33584,
- 37493,37463,36866,37304,41382,23171,41382,38105,12643,37493,9930, 39145,21919,39145,29707,26064,11370,26646,28100,21485,39144,41382,1096, 18385,41381,13418,1891,
+ 37493,37463,36866,37304,41382,23171,41382,38105,12643,37493,9930, 39145,21919,39145,29707,26064,11370,26646,28100,21485,39144,41382,1096, 18385,41381,13418,1891,
8756, 39144,34302,41381,37493,36198,35152,4325, 28845,39144,7800, 14116,15419,20080,38645,10156,10528,14636,22053,7457, 17441,33365,41381,15830,41381,37492,37492,
4078, 14702,1134, 18696,17486,39144,41380,39143,30845,29968,25152,35152,24078,13090,11517,39143,10527,33144,14029,8853, 36351,24238,33520,37492,24237,35151,36198,
41380,41380,25982,3913, 781, 5789, 22309,9028, 36544,809, 24041,37381,41380,36769,38914,26258,22298,22113,12736,25720,22613,7008, 1759, 36198,11988,1309, 18804,
@@ -19474,11 +19469,11 @@ static const unsigned short Ranks[197839] =
21483,7727, 5213, 15264,16518,18757,17708,6707, 20166,2113, 6604, 26729,2284, 24237,10897,8777, 26645,29359,16767,35151,31539,41379,38898,4140, 20165,16243,11066,
35151,36197,18802,8877, 6882, 41378,8198, 134, 25370,39143,39142,17554,5753, 17351,28127,13670,15204,41378,36377,16766,5102, 41378,31538,17707,14701,32705,37491,
41378,35150,3825, 36197,41377,1115, 6958, 19917,17706,34974,25984,950, 8576, 10479,9131, 4665, 8566, 38303,19343,825, 32924,18801,36197,3636, 14006,11065,34302,
- 37491,39142,2016, 39142,1996, 36196,39142,41377,556, 267, 37491,37491,7550, 6193, 24591,22297,25369,32790,35150,25720,1986, 41377,14700,22484,16765,5335, 8776,
- 13161,7549, 37243,9773, 16764,9951, 6903, 39141,39141,41377,39141,39335,41376,2835, 578, 19749,41376,2573, 5993, 22909,35150,26644,23170,19105,24236,14699,1029,
+ 37491,39142,2016, 39142,1996, 36196,39142,41377,556, 267, 37491,37491,7550, 6193, 24591,22297,25369,32790,35150,25720,1986, 41377,14700,22484,16765,5335, 8776,
+ 13161,7549, 37243,9773, 16764,9951, 6903, 39141,39141,41377,39141,39335,41376,2835, 578, 19749,41376,2573, 5993, 22909,35150,26644,23170,19105,24236,14699,1029,
604, 34302,15052,12642,39141,14634,33584,12394,35150,6190, 10606,36346,981, 5489, 10003,33623,9362, 33584,41376,17705,38240,35146,8693, 25755,39140,35149,17596,
35149,23390,36601,1925, 34599,38718,26564,1192, 28146,21482,18756,39140,34301,2164, 41376,35149,35149,35148,12453,24235,39140,39140,36196,25543,37490,36196,34301,
- 6881, 14633,31537,5519, 17602,36196,39139,300, 9889, 1327, 4801, 3165, 27172,2564, 5409, 9459, 5575, 36, 13664,10959,3385, 35189,5197, 7726, 264, 16667,6133,
+ 6881, 14633,31537,5519, 17602,36196,39139,300, 9889, 1327, 4801, 3165, 27172,2564, 5409, 9459, 5575, 36, 13664,10959,3385, 35189,5197, 7726, 264, 16667,6133,
5974, 32769,5921, 33596,39139,39139,26643,36195,36195,37016,187, 8264, 34301,37490,34678,20726,20164,39139,32951,2430, 156, 32758,31514,33583,41375,34301,14005,
14121,15263,39138,37555,31492,38689,34084,21263,11385,41375,18355,37490,41375,36349,35237,5899, 39138,26721,11915,6680, 37820,41375,14004,6314, 34037,35412,34331,
15870,36448,34714,37552,39138,39138,14632,12013,41374,37490,21481,31536,12641,41374,34300,39345,34300,39137,5941, 36195,39137,10526,39101,38574,24535,35922,34945,
@@ -19486,9 +19481,9 @@ static const unsigned short Ranks[197839] =
23072,38364,28719,35148,16868,20725,31535,31064,36784,36195,30803,38225,18800,34644,2151, 26344,26156,28768,37489,39052,41373,38479,37329,20661,34348,35147,32967,
31646,37489,18018,29765,33265,21156,21914,15424,15613,26279,24377,28197,36295,39136,29263,19683,39136,38021,950, 26837,18407,37489,38386,12735,28099,2286, 10391,
32096,20904,35666,35147,17126,31012,2283, 10155,27692,2816, 25657,26543,12809,36284,16762,5711, 34300,41373,32081,18799,35147,33583,4210, 37489,26648,11397,12420,
- 14121,16242,34299,9843, 34305,13160,8953, 32856,27990,32732,36194,30621,41372,5614, 39136,37488,41372,39136,22296,36194,33331,34299,39135,2733, 35161,24677,4333,
+ 14121,16242,34299,9843, 34305,13160,8953, 32856,27990,32732,36194,30621,41372,5614, 39136,37488,41372,39136,22296,36194,33331,34299,39135,2733, 35161,24677,4333,
122, 8722, 32966,39135,34299,34299,10390,37488,30177,6141, 15481,15525,36194,13622,37228,28098,36194,41372,25018,33884,4272, 32871,41372,13706,32966,23169,26077,
- 41371,41371,41371,41371,1843, 20074,29462,9361, 32966,29819,33006,37488,14640,34298,29212,18822,41370,38748,9398, 16152,35147,32966,19381,32965,21677,36699,8876,
+ 41371,41371,41371,41371,1843, 20074,29462,9361, 32966,29819,33006,37488,14640,34298,29212,18822,41370,38748,9398, 16152,35147,32966,19381,32965,21677,36699,8876,
6502, 41370,7067, 33910,37322,10165,36336,39135,35146,15921,3137, 37488,34412,37141,37487,17038,17595,35146,41370,24055,31534,23168,5418, 33583,41370,15071,15508,
19814,5716, 32502,38223,35952,33874,32965,35658,38969,41369,41369,3466, 27505,8094, 23100,16761,37238,24617,20046,37506,41369,39135,37161,7248, 25494,3169, 41369,
38350,37487,34977,33906,5992, 34294,33728,39134,15262,14354,13417,17594,22295,6370, 41368,16241,16671,29705,11064,4384, 26847,5621, 24729,34645,21990,10525,21933,
@@ -19500,9 +19495,9 @@ static const unsigned short Ranks[197839] =
33643,41365,34298,41365,13705,35145,11468,34399,41365,26730,35145,5004, 41365,6097, 18798,1163, 2577, 14234,29098,24676,12203,20942,33628,35804,17080,23358,39377,
36821,20773,38542,38689,14892,15319,30664,6032, 35709,23334,33035,9026, 8552, 24230,32965,31530,41364,15427,22294,11467,24229,4827, 5871, 35220,41364,13620,20162,
9247, 33582,39132,31108,33582,41364,4156, 38096,28548,31268,6323, 39128,18797,38407,33272,34666,35748,36192,36192,5012, 41364,9804, 15195,36192,2732, 7700, 31093,
- 41363,30454,32964,16367,656, 12078,2154, 5757, 22920,7672, 37487,31529,1577, 33829,20903,18796,41363,13506,9117, 37592,34297,32964,4469, 11562,35145,37487,2827,
+ 41363,30454,32964,16367,656, 12078,2154, 5757, 22920,7672, 37487,31529,1577, 33829,20903,18796,41363,13506,9117, 37592,34297,32964,4469, 11562,35145,37487,2827,
37486,37486,16240,15261,32932,3825, 32964,17125,23193,6132, 296, 33776,20161,4329, 9214, 21133,37486,23166,39137,39132,35145,37486,22293,5940, 33504,3216, 15260,
- 16760,35144,503, 39132,39131,42, 28170,20160,31528,3175, 34297,35335,41363,12734,1006, 4806, 12012,10883,29785,24228,24227,41363,36192,11113,5215, 35362,7227,
+ 16760,35144,503, 39132,39131,42, 28170,20160,31528,3175, 34297,35335,41363,12734,1006, 4806, 12012,10883,29785,24228,24227,41363,36192,11113,5215, 35362,7227,
14510,41362,41362,5790, 34384,18207,869, 30667,24094,28221,13922,21723,29704,39267,41362,38202,41362,38691,37485,34114,14353,10833,41361,2184, 11670,18755,17593,
5465, 34292,7537, 33582,34297,30882,33045,41361,39131,37485,41361,39338,35144,34297,34296,26640,37485,38896,24964,242, 7553, 28688,36664,12345,6221, 18139,22292,
39131,41361,24226,35670,41360,20045,36897,35144,39131,39130,19380,14161,12287,4170, 34846,18795,37485,5412, 37899,32894,38530,7772, 38056,13619,41360,18794,33568,
@@ -19511,29 +19506,29 @@ static const unsigned short Ranks[197839] =
28771,11509,33659,34868,33067,3510, 41359,4914, 13618,14628,35144,38311,35678,37356,34524,2439, 38386,22557,39130,36191,36191,419, 36762,23766,41359,15136,30351,
10605,22197,38142,34224,29122,16323,29703,7771, 30648,41358,2038, 3019, 32851,2718, 39129,12011,7522, 30221,12732,12010,23546,11669,32830,41358,33582,33581,37484,
12639,36467,7376, 38198,37777,17123,12344,8326, 4056, 12818,14120,10476,15219,12657,34850,18491,657, 15200,18792,32697,10604,35143,4071, 17122,1080, 32947,28322,
- 35143,17968,5196, 3153, 528, 21966,27435,7935, 29715,8146, 18754,36190,896, 17828,36190,12882,20159,20158,25367,39129,41358,41358,16239,6560, 6482, 13149,4604,
+ 35143,17968,5196, 3153, 528, 21966,27435,7935, 29715,8146, 18754,36190,896, 17828,36190,12882,20159,20158,25367,39129,41358,41358,16239,6560, 6482, 13149,4604,
10742,904, 1311, 8431, 41357,39129,1920, 32963,16199,26335,11668,28096,9738, 20157,10616,16238,20156,5178, 10389,2724, 21670,20155,31278,17933,8053, 17365,31798,
1658, 19653,7794, 20098,32778,25877,15806,8565, 10832,20154,33581,21479,36190,2162, 21495,32587,1926, 12860,1271, 17595,3952, 7108, 14627,24831,5448, 6638, 20153,
- 8544, 20152,9556, 13157,41357,16758,37483,4120, 6741, 11112,9605, 21102,34, 17517,36388,15243,9348, 20322,17533,26639,41357,36190,31526,22006,31525,8089, 6369,
+ 8544, 20152,9556, 13157,41357,16758,37483,4120, 6741, 11112,9605, 21102,34, 17517,36388,15243,9348, 20322,17533,26639,41357,36190,31526,22006,31525,8089, 6369,
32885,21554,18083,17121,14119,16757,8415, 28841,25337,30806,1281, 7467, 36189,35290,557, 32963,39107,36760,16756,37483,33043,29702,32963,37483,21451,33054,14595,
5309, 36497,41357,21506,38248,6042, 12146,39271,39129,2238, 33958,16237,33581,18787,5049, 3392, 10831,16755,37483,26158,12731,189, 2169, 32500,11672,12202,20088,
33036,24802,23172,8640, 41356,38748,12901,39128,31524,33906,33581,26638,32962,19186,38734,34119,21674,39128,14626,14352,39128,22494,5371, 15259,6318, 35573,32883,
- 3287, 6420, 15946,41356,3615, 28095,33318,31523,474, 14485,29828,7107, 12012,18284,940, 36406,33768,37632,22833,7106, 20151,37574,35143,36279,13617,27985,2368,
- 32841,19628,17084,1544, 948, 14731,36887,5364, 16754,12009,34343,27304,24178,15867,34002,38052,19432,1261, 41356,18862,34384,18723,9360, 6519, 16753,35641,8462,
- 820, 35889,840, 29701,9527, 28210,36658,36908,39128,16376,33112,8929, 22664,854, 225, 29738,12978,5405, 28057,37482,34826,36189,34296,25366,32962,489, 5225,
+ 3287, 6420, 15946,41356,3615, 28095,33318,31523,474, 14485,29828,7107, 12012,18284,940, 36406,33768,37632,22833,7106, 20151,37574,35143,36279,13617,27985,2368,
+ 32841,19628,17084,1544, 948, 14731,36887,5364, 16754,12009,34343,27304,24178,15867,34002,38052,19432,1261, 41356,18862,34384,18723,9360, 6519, 16753,35641,8462,
+ 820, 35889,840, 29701,9527, 28210,36658,36908,39128,16376,33112,8929, 22664,854, 225, 29738,12978,5405, 28057,37482,34826,36189,34296,25366,32962,489, 5225,
25841,20554,37482,41356,41355,37898,32962,33580,26025,7466, 11077,34569,34012,36737,32297,35143,37482,11119,33048,17703,36584,9016, 12824,33261,2314, 247, 24659,
17070,9876, 14785,22616,34059,38517,28834,19594,17743,6835, 25417,33804,16138,34566,8473, 34503,28094,36594,38764,41355,12002,41355,41355,21904,35856,19725,36591,
10092,36418,28368,17198,30961,29375,9878, 32601,37482,34255,41354,14005,30742,19314,36228,35172,36189,34296,28093,41354,41354,38979,36810,10072,34296,39127,29035,
35142,5095, 39120,34736,4257, 14921,26660,35191,24117,31392,7545, 19240,14625,39127,22586,33798,12335,24739,39418,24387,33011,18206,36950,41354,19681,17619,41353,
37481,33998,35142,30088,20839,17710,41353,11914,39127,23858,2436, 29700,41353,18744,35142,39364,29169,32962,22257,27182,36310,36189,39171,33033,30142,4648, 32984,
- 24460,32961,31189,39127,19372,21020,8760, 2640, 15893,25991,29599,6706, 13616,32691,18332,41353,12393,3739, 10673,38489,36747,36026,13704,41352,12715,36904,1026,
- 20150,20149,36188,11111,17702,8845, 9359, 36188,39126,1174, 39126,39005,32539,38692,94, 36188,8367, 12538,37481,36188,39173,6974, 27296,20060,32042,1634, 4155,
+ 24460,32961,31189,39127,19372,21020,8760, 2640, 15893,25991,29599,6706, 13616,32691,18332,41353,12393,3739, 10673,38489,36747,36026,13704,41352,12715,36904,1026,
+ 20150,20149,36188,11111,17702,8845, 9359, 36188,39126,1174, 39126,39005,32539,38692,94, 36188,8367, 12538,37481,36188,39173,6974, 27296,20060,32042,1634, 4155,
9555, 15920,18791,28824,6604, 35993,35800,41352,36187,17591,41352,35142,15426,33580,17120,37886,2527, 20148,32240,41352,37481,17119,16669,41351,35141,24864,34894,
30219,9554, 29475,20147,35141,16832,35090,39126,37857,39126,34670,36978,32473,29312,34295,37733,39125,20857,25680,33003,25303,37869,20744,19160,22284,30150,20742,
32404,438, 41351,37481,13079,11190,32998,34880,41351,16399,25691,37480,35141,27364,10092,1946, 2075, 10503,38477,26664,29197,17817,2962, 25552,39125,33252,32871,
22180,26337,36187,35141,37480,25365,34088,36187,7267, 34225,33084,12730,37480,36218,37480,37196,25213,41351,34295,19379,36948,22254,37479,6538, 35953,41350,39149,
- 33580,41350,32028,34082,41350,17791,11879,13504,39125,25685,24224,20044,10372,39401,37864,7157, 24223,33580,4484, 26637,7465, 38068,41350,14002,20043,36187,4100,
- 16421,32888,25641,29240,15425,35870,1818, 37479,29838,27421,3247, 32895,39125,22602,41349,35140,23164,39124,36186,3837, 5300, 2060, 1086, 1398, 33406,4983, 8564,
+ 33580,41350,32028,34082,41350,17791,11879,13504,39125,25685,24224,20044,10372,39401,37864,7157, 24223,33580,4484, 26637,7465, 38068,41350,14002,20043,36187,4100,
+ 16421,32888,25641,29240,15425,35870,1818, 37479,29838,27421,3247, 32895,39125,22602,41349,35140,23164,39124,36186,3837, 5300, 2060, 1086, 1398, 33406,4983, 8564,
16386,4002, 13384,25053,32892,13641,33366,8872, 37521,35215,35091,9481, 16239,34593,4982, 34281,9315, 33500,41349,28657,26636,41349,19402,38039,18790,36559,33607,
38729,35018,39124,39124,36460,36186,22822,32376,11175,575, 208, 32201,23163,33635,9650, 33579,9455, 35787,35333,16616,29970,13027,30651,31522,24222,24221,33704,
37479,34422,36880,35140,37565,12638,13183,11667,19928,32540,24220,2376, 10830,18217,36109,36186,35596,18527,37632,39124,36453,41349,20724,20146,36186,33579,32851,
@@ -19542,28 +19537,28 @@ static const unsigned short Ranks[197839] =
35997,24507,37398,17231,17403,18934,23731,20143,37121,35140,35529,33537,5021, 5541, 8145, 8416, 33317,32920,13614,12728,20142,5870, 37592,33975,18788,35407,32504,
30036,24386,12008,12727,8699, 36159,6637, 18066,5718, 29402,5195, 8698, 5016, 22030,38996,8844, 5159, 14118,13156,6802, 9213, 35780,13126,1315, 4135, 34464,15918,
15917,18787,5405, 21342,21890,30971,14623,10603,11765,30709,11666,15916,18786,20141,28128,9942, 6255, 39123,35002,14117,20140,38581,7737, 16419,35009,4069, 16949,
- 5589, 35139,29006,20139,38756,5715, 26333,17700,18785,10602,15915,16845,20138,17699,41348,18784,17778,761, 10829,3740, 23169,18783,7898, 22007,20137,35675,1406,
+ 5589, 35139,29006,20139,38756,5715, 26333,17700,18785,10602,15915,16845,20138,17699,41348,18784,17778,761, 10829,3740, 23169,18783,7898, 22007,20137,35675,1406,
34254,37555,4954, 20136,33011,25793,9553, 31804,15944,16752,7105, 10601,11108,34718,18492,36012,9941, 2047, 15258,15257,36608,7237, 34979,35637,18912,8697, 13155,
13367,35508,8596, 28723,26280,35933,7180, 13154,34650,20135,38404,35001,32810,38807,20134,6559, 5971, 15256,20883,36951,8844, 33772,38296,34279,13613,32781,10388,
3728, 18378,21784,22739,4253, 34324,14116,27439,36771,5114, 29724,16670,27449,10600,18782,67, 26775,5973, 20133,34990,11383,36185,26904,39281,20628,11350,31880,
- 38243,37387,32961,2595, 35860,17698,39227,15255,35989,16236,36980,15918,36148,2391, 22109,17118,39123,3003, 5127, 20132,8563, 35786,15914,32994,18781,16751,4875,
- 9884, 5292, 6106, 12343,2677, 10230,14136,31397,1710, 22098,36528,7179, 25286,3383, 37478,29699,32193,36185,22144,21361,17697,12726,33237,20131,17696,20130,3712,
+ 38243,37387,32961,2595, 35860,17698,39227,15255,35989,16236,36980,15918,36148,2391, 22109,17118,39123,3003, 5127, 20132,8563, 35786,15914,32994,18781,16751,4875,
+ 9884, 5292, 6106, 12343,2677, 10230,14136,31397,1710, 22098,36528,7179, 25286,3383, 37478,29699,32193,36185,22144,21361,17697,12726,33237,20131,17696,20130,3712,
5048, 10660,16750,9358, 1970, 26322,38324,13612,5447, 13434,12972,17166,34814,35707,34826,34240,27126,24280,23844,36546,25413,11665,15913,26969,24717,25652,32955,
- 35904,14487,17091,20766,17695,7292, 23341,33340,11382,17694,171, 3063, 9552, 1331, 19625,1936, 10828,4332, 1342, 35195,19559,35538,38352,7360, 37058,4059, 6089,
+ 35904,14487,17091,20766,17695,7292, 23341,33340,11382,17694,171, 3063, 9552, 1331, 19625,1936, 10828,4332, 1342, 35195,19559,35538,38352,7360, 37058,4059, 6089,
3636, 2503, 35494,15426,6844, 18059,35807,21692,4369, 7216, 37605,36410,33621,21765,4530, 4791, 30942,1866, 34105,3278, 34538,25818,15808,433, 15954,4449, 20129,
- 33403,29832,19048,33175,24183,36953,16749,20022,10340,27295,12725,14115,17131,23878,9740, 33407,10387,26078,36196,28079,17693,6993, 17692,11202,25487,14040,8562,
+ 33403,29832,19048,33175,24183,36953,16749,20022,10340,27295,12725,14115,17131,23878,9740, 33407,10387,26078,36196,28079,17693,6993, 17692,11202,25487,14040,8562,
32788,3288, 14340,9212, 6189, 34356,6636, 17140,7488, 8561, 5972, 11664,13153,14233,38878,15254,7455, 32271,17691,9858, 35999,35685,28885,36846,6705, 32416,33738,
22136,15253,33242,15252,4531, 4143, 35376,17690,17689,32936,35341,24590,10554,37701,38799,15912,14622,4610, 34557,5580, 8100, 31500,11663,2583, 6402, 26722,11381,
10154,23321,18780,17688,38241,1889, 9025, 17687,4878, 7454, 38029,20128,14621,11413,30149,17142,34005,35833,33694,33284,11380,11379,35249,34581,3807, 4913, 17686,
34930,11378,8843, 16398,13611,15251,35988,9737, 7770, 19614,4448, 15035,10386,2537, 1059, 9736, 35267,37424,8842, 17685,13610,12724,32446,17684,34442,7464, 26635,
- 34467,14001,23162,38196,2035, 37478,36185,37478,36185,17683,41348,38986,39123,15911,13152,38624,3881, 18779,32063,38831,19329,37478,2941, 14620,18778,7104, 2050,
- 8282, 18307,6131, 8841, 37272,39057,33976,37385,30644,14619,7103, 9940, 17682,31200,33878,41348,20418,37677,34957,37788,16562,38989,9995, 33221,33579,34320,8718,
+ 34467,14001,23162,38196,2035, 37478,36185,37478,36185,17683,41348,38986,39123,15911,13152,38624,3881, 18779,32063,38831,19329,37478,2941, 14620,18778,7104, 2050,
+ 8282, 18307,6131, 8841, 37272,39057,33976,37385,30644,14619,7103, 9940, 17682,31200,33878,41348,20418,37677,34957,37788,16562,38989,9995, 33221,33579,34320,8718,
35512,18284,865, 8110, 10827,37462,19129,17681,37725,34488,12170,38003,6360, 30032,26568,34107,5834, 3559, 36857,32771,1901, 11107,12862,9666, 3764, 12728,12356,
37477,12124,15146,16598,37596,10599,16748,20127,33710,7769, 18405,32344,26846,2479, 35490,18777,26562,8643, 12007,27452,17680,36328,17679,35739,16747,14225,15910,
14114,19560,16746,10385,4877, 16745,38668,286, 23976,32576,38701,16674,5969, 11067,33054,37360,25830,3055, 38655,27963,26708,38783,1104, 7280, 12540,34383,36386,
- 16744,13384,34920,34452,604, 16995,36707,8550, 34088,27270,7359, 24677,6170, 70, 8488, 28084,16422,9200, 558, 2955, 28156,29746,35628,18610,18726,4795, 1739,
+ 16744,13384,34920,34452,604, 16995,36707,8550, 34088,27270,7359, 24677,6170, 70, 8488, 28084,16422,9200, 558, 2955, 28156,29746,35628,18610,18726,4795, 1739,
35782,26916,15675,37811,18566,7148, 29703,1490, 22138,13943,8853, 8382, 6673, 19407,27744,33667,32725,17273,33188,13322,30980,8931, 23447,26194,1537, 69, 28284,
- 12340,6518, 11106,38335,23400,15250,35205,11105,41347,7995, 35288,35880,15009,1283, 17013,18776,13609,37477,8319, 21615,17678,7656, 7102, 30015,15909,34247,478,
+ 12340,6518, 11106,38335,23400,15250,35205,11105,41347,7995, 35288,35880,15009,1283, 17013,18776,13609,37477,8319, 21615,17678,7656, 7102, 30015,15909,34247,478,
14896,17677,1300, 3533, 17162,5767, 37570,9735, 38225,5011, 10826,12006,4010, 23290,5672, 14113,13151,18775,12005,5920, 17707,20126,35049,8118, 8144, 6739, 15908,
19162,34796,20947,18774,15249,39112,35173,36845,13608,33678,11662,37972,22337,33809,33911,36888,5059, 29698,5919, 36775,10825,3624, 35823,20125,17676,18773,11104,
41347,29962,37415,41347,11103,25059,9211, 34595,28797,39392,33955,38169,14712,37916,4027, 9810, 16743,7035, 38594,12423,34928,7178, 5010, 9024, 7453, 8712, 31248,
@@ -19571,19 +19566,19 @@ static const unsigned short Ranks[197839] =
33364,12981,6130, 17529,33633,7655, 20226,13607,7352, 10153,12723,18772,35663,23409,34274,12722,38331,21839,33072,29697,32961,7768, 16742,12721,37327,13606,34925,
38227,1211, 7767, 34340,4581, 34336,33387,15906,18525,22335,35843,18444,18886,11913,5152, 5143, 26426,28310,6781, 20123,33887,25580,36131,11102,19264,6869, 10152,
5915, 30621,10455,20122,37525,34391,34669,33882,15905,35583,25364,5441, 13150,25956,9643, 14112,34163,16741,13532,18771,17675,19474,10151,33079,10384,12341,31666,
- 20121,32187,12720,17674,14617,17673,17672,16431,34947,20120,23789,9356, 7176, 7897, 33578,15563,13149,8281, 13148,32961,34675,9232, 39241,17301,20998,11377,6780,
- 33293,24394,6359, 12719,9333, 36667,17671,36170,8696, 33870,38620,4074, 27447,37226,33122,7359, 20699,23060,15247,12718,17670,2468, 4004, 8903, 24379,12717,9938,
+ 20121,32187,12720,17674,14617,17673,17672,16431,34947,20120,23789,9356, 7176, 7897, 33578,15563,13149,8281, 13148,32961,34675,9232, 39241,17301,20998,11377,6780,
+ 33293,24394,6359, 12719,9333, 36667,17671,36170,8696, 33870,38620,4074, 27447,37226,33122,7359, 20699,23060,15247,12718,17670,2468, 4004, 8903, 24379,12717,9938,
18291,8840, 28248,37149,23690,8012, 17262,29869,18753,15904,36184,16740,16739,20119,18770,17531,23026,30327,35139,37326,41347,39123,38209,32960,39122,36184,11376,
37477,7175, 37159,4307, 10383,24219,101, 10150,34561,11653,4331, 15903,36237,8695, 20118,9734, 13147,9937, 15246,33197,14079,38404,6558, 11661,20117,34950,15499,
- 6554, 1768, 4937, 20116,39122,12004,4188, 9210, 36778,33328,39122,37583,38948,6501, 12340,37511,15245,15902,11101,9355, 27700,18769,7068, 29367,16103,19932,6635,
- 36993,10149,16738,14616,32167,8415, 35438,12716,38095,18768,12715,20115,33578,15244,15829,24218,39, 21202,39335,35139,15605,20543,11819,39254,7570, 7896, 9936,
- 2515, 3226, 3269, 3123, 5390, 11497,12900,25363,9511, 11837,38333,32882,24217,26005,36671,22303,36563,6868, 4356, 3423, 6580, 8840, 9246, 35139,13604,21228,6035,
+ 6554, 1768, 4937, 20116,39122,12004,4188, 9210, 36778,33328,39122,37583,38948,6501, 12340,37511,15245,15902,11101,9355, 27700,18769,7068, 29367,16103,19932,6635,
+ 36993,10149,16738,14616,32167,8415, 35438,12716,38095,18768,12715,20115,33578,15244,15829,24218,39, 21202,39335,35139,15605,20543,11819,39254,7570, 7896, 9936,
+ 2515, 3226, 3269, 3123, 5390, 11497,12900,25363,9511, 11837,38333,32882,24217,26005,36671,22303,36563,6868, 4356, 3423, 6580, 8840, 9246, 35139,13604,21228,6035,
10148,22290,5869, 14928,32875,15901,10382,31209,29564,30508,11404,8725, 12936,12276,21922,11660,33815,21478,12003,12506,8276, 18767,33503,20831,33421,34295,34105,
11471,39122,36377,378, 8280, 41346,727, 26912,32997,34727,17679,18638,14615,14876,16737,33172,37477,14111,27809,9100, 32004,34655,36110,6197, 34208,3403, 11230,
- 14715,12714,12339,17669,34762,2240, 38548,8694, 418, 5579, 2489, 3121, 15243,20723,2322, 21008,28515,22823,10524,14110,18766,712, 6129, 17668,39088,7358, 5000,
+ 14715,12714,12339,17669,34762,2240, 38548,8694, 418, 5579, 2489, 3121, 15243,20723,2322, 21008,28515,22823,10524,14110,18766,712, 6129, 17668,39088,7358, 5000,
25389,34517,24216,12548,41346,35138,17244,36184,26903,33578,3706, 39121,1987, 5336, 33948,27432,19988,35138,7238, 35312,6704, 27050,34079,32535,4184, 36184,38179,
34071,12539,23048,20366,23161,31521,24215,30360,4897, 37476,3790, 39091,35735,33808,37476,33711,23160,39121,20722,932, 9908, 35138,34330,13416,31520,15828,37476,
- 29696,21376,31591,17228,38048,11847,14832,10882,9929, 39121,34294,21825,33578,38760,41346,2949, 36183,19720,38123,36183,37476,14077,21117,34294,34132,41346,5342,
+ 29696,21376,31591,17228,38048,11847,14832,10882,9929, 39121,34294,21825,33578,38760,41346,2949, 36183,19720,38123,36183,37476,14077,21117,34294,34132,41346,5342,
14885,15051,4271, 22289,41345,12145,36183,12637,35138,37747,18765,34269,25362,35137,3569, 4275, 32708,9551, 2213, 13146,5918, 8279, 6349, 34294,37475,21732,38197,
10881,4857, 37475,2362, 31367,12636,14000,34560,23159,28091,28451,41345,14614,20114,12344,12713,16736,17667,4378, 33577,29695,21477,41345,33656,28090,33577,37916,
12338,19832,41345,7471, 33062,24823,19378,37475,19371,34985,39121,37583,5099, 41344,16735,36958,37896,17666,21138,36681,21417,37475,34614,5898, 39120,23158,35137,
@@ -19591,8 +19586,8 @@ static const unsigned short Ranks[197839] =
38675,37474,39120,39120,35864,39120,25361,39119,35136,4173, 7880, 36538,25366,25561,17665,33550,34486,37474,36183,73, 20113,885, 1713, 31153,37453,11320,15967,
8519, 17307,37320,41343,38018,6547, 24421,2313, 17794,29278,14131,36292,39265,37723,37115,36951,2829, 36007,38402,35345,35470,7129, 35329,38044,5268, 38705,24423,
17559,41343,36780,4964, 9881, 128, 64, 37010,2188, 33303,11633,2106, 33577,15050,19063,1567, 14593,30233,24718,9138, 32917,27678,4201, 20112,29790,1467, 26634,
- 713, 39119,21630,20046,37751,33226,10770,2677, 36763,36227,3863, 14962,17664,13145,41343,41343,32520,35830,38930,36182,35136,9354, 41342,272, 21526,35937,7723,
- 20138,36642,5801, 2409, 28447,8875, 25320,11568,15845,2597, 23499,31825,36329,18639,34892,37473,23817,34622,36830,35874,27007,29131,38276,35425,14351,11254,2232,
+ 713, 39119,21630,20046,37751,33226,10770,2677, 36763,36227,3863, 14962,17664,13145,41343,41343,32520,35830,38930,36182,35136,9354, 41342,272, 21526,35937,7723,
+ 20138,36642,5801, 2409, 28447,8875, 25320,11568,15845,2597, 23499,31825,36329,18639,34892,37473,23817,34622,36830,35874,27007,29131,38276,35425,14351,11254,2232,
35609,4301, 32042,16734,3725, 35334,8145, 29762,16733,16552,38246,18582,14613,21063,41342,25940,36995,1095, 432, 546, 39115,20111,25505,17178,18802,36647,33189,
28045,35802,23514,2143, 7829, 32927,38157,5671, 38676,2756, 10523,36943,37254,12002,25102,15921,13144,7357, 18726,19473,26633,32847,30556,17456,17066,27556,11392,
24469,16039,10456,22612,14967,14355,26580,5736, 3453, 9579, 5811, 4289, 7419, 5975, 6505, 18070,15076,35756,3250, 7101, 38327,21502,2115, 12646,6629, 22139,34007,
@@ -19607,10 +19602,10 @@ static const unsigned short Ranks[197839] =
37622,39117,32784,19425,26946,36903,38545,36181,33203,41338,35135,41338,37619,39117,26980,33419,24363,41337,24744,34293,28405,41337,41337,34858,899, 30732,32960,
19377,2492, 39116,16483,37472,32997,33124,39116,32794,694, 32959,31516,11464,15826,32959,35084,41337,41336,20039,2156, 10212,9425, 41336,16668,19376,2373, 28084,
308, 5212, 34292,25360,39116,23650,34292,7463, 3810, 9150, 11099,34292,39116,33576,11344,20731,836, 12074,35239,38750,20335,38479,3018, 24123,21999,41336,36180,
- 27568,16235,5939, 3754, 33582,592, 874, 651, 5971, 32959,23725,30542,4247, 38239,41336,13998,35134,36180,770, 18205,41335,31797,983, 32999,24407,2779, 804,
+ 27568,16235,5939, 3754, 33582,592, 874, 651, 5971, 32959,23725,30542,4247, 38239,41336,13998,35134,36180,770, 18205,41335,31797,983, 32999,24407,2779, 804,
26171,17473,39115,33576,149, 11353,22769,39115,3202, 36404,18751,15858,6117, 13877,7462, 2461, 20720,33575,5916, 15900,36328,29949,12392,34065,41335,1808, 17060,
19543,5867, 30164,20109,31081,3391, 10381,11271,20108,27286,9874, 36500,5814, 28603,35134,16667,34292,29690,36171,36180,31515,36180,15241,34291,6557, 15451,34276,
- 32959,34577,22669,33575,3024, 34560,34008,20038,36968,36179,5179, 11695,39115,20719,31514,37472,39115,41335,19375,31513,1458, 32031,14350,8325, 39114,2731, 8775,
+ 32959,34577,22669,33575,3024, 34560,34008,20038,36968,36179,5179, 11695,39115,20719,31514,37472,39115,41335,19375,31513,1458, 32031,14350,8325, 39114,2731, 8775,
41335,26631,37512,16732,41334,36179,34291,12144,3002, 14697,34291,513, 22801,39074,4451, 6684, 26630,18169,29689,39114,1995, 31512,22285,6481, 24212,41334,32958,
31637,10371,22864,12143,26629,39114,39114,19374,39113,25654,30652,20107,37033,15213,22284,10380,1301, 35933,18760,41334,37471,15125,11006,41334,37471,2920, 34789,
35558,41333,35134,39113,37165,13978,13415,2282, 10147,9168, 28497,850, 36409,4060, 1556, 24963,37258,34291,3823, 37711,5211, 6226, 15825,38216,14107,14610,14609,
@@ -19645,14 +19640,14 @@ static const unsigned short Ranks[197839] =
18745,27587,28083,34354,36167,3754, 33568,41311,2594, 3348, 22451,13910,35366,39099,38559,28918,37889,20591,35747,41310,13701,10573,33568,22276,24361,36167,28063,
7761, 35636,15898,4645, 20104,8011, 39098,8303, 13808,10379,31498,34968,23152,23954,36167,16229,2876, 32954,24201,37457,18205,12774,32936,13415,18599,34083,11824,
3692, 21245,36166,35623,3232, 22925,7811, 37457,33568,11786,35233,32498,28062,18744,18759,25627,35123,35315,35490,33680,39098,34285,8195, 192, 41310,11676,23202,
- 8333, 33136,35123,8428, 12358,7548, 17581,18198,41310,9245, 41310,34284,41309,41309,34840,36166,41309,2431, 16228,37456,36166,41309,25727,35351,33134,31497,9230,
+ 8333, 33136,35123,8428, 12358,7548, 17581,18198,41310,9245, 41310,34284,41309,41309,34840,36166,41309,2431, 16228,37456,36166,41309,25727,35351,33134,31497,9230,
38540,20103,41308,19761,25615,32350,33449,11044,27658,37456,7766, 36166,41308,12999,16729,35123,11910,41308,4323, 34247,10245,30606,38868,22275,39098,37456,41308,
27674,41307,23919,16028,8081, 37962,38257,36165,28876,14695,740, 33567,276, 41307,16664,2730, 39098,2762, 11325,29938,19427,10795,41307,36091,36165,20035,41307,
37456,39097,17111,35122,16770,5065, 11915,13700,41306,35122,37455,36034,16663,32696,15897,35225,23151,14106,41306,41306,33876,13414,20511,29456,15799,12558,28410,
- 16925,30397,13297,21374,10701,18169,24980,23985,32971,17580,18743,457, 36165,14505,7806, 29492,17231,28490,29283,29922,6630, 7142, 39097,26059,17972,10061,4986,
+ 16925,30397,13297,21374,10701,18169,24980,23985,32971,17580,18743,457, 36165,14505,7806, 29492,17231,28490,29283,29922,6630, 7142, 39097,26059,17972,10061,4986,
9927, 24060,11662,32971,24025,19211,14162,5620, 13607,36466,14557,39372,5656, 41306,3540, 10700,25351,35122,8427, 14694,39097,8874, 41305,11062,23150,41305,31761,
- 31496,31495,36165,2296, 25350,35122,35470,41305,35121,15578,36898,2485, 38137,34523,6527, 1764, 1046, 13685,14220,3072, 18758,35256,36164,8618, 39097,37756,9022,
- 33323,28061,37737,15434,33552,20794,37455,24200,15238,23745,18757,18756,41305,22737,34284,327, 13947,38620,36891,41304,1341, 6856, 8514, 29783,39096,27058,644,
+ 31496,31495,36165,2296, 25350,35122,35470,41305,35121,15578,36898,2485, 38137,34523,6527, 1764, 1046, 13685,14220,3072, 18758,35256,36164,8618, 39097,37756,9022,
+ 33323,28061,37737,15434,33552,20794,37455,24200,15238,23745,18757,18756,41305,22737,34284,327, 13947,38620,36891,41304,1341, 6856, 8514, 29783,39096,27058,644,
29608,41304,31586,3478, 3850, 33775,4950, 21676,16728,24216,3642, 15386,38711,32905,10824,12712,36164,41304,9182, 6421, 5842, 26616,24051,14034,1336, 1346, 11742,
12352,4845, 39096,33567,28663,25279,39106,13143,37455,26885,4231, 28060,8560, 41304,4483, 16662,14105,5273, 28620,37455,4055, 11675,12142,41303,12635,39096,41303,
32954,31494,27315,17291,39096,1260, 35121,24199,18976,5655, 39095,21470,22274,1813, 17110,596, 26615,35935,11462,34284,37454,856, 10106,37058,1195, 24877,27539,
@@ -19664,21 +19659,21 @@ static const unsigned short Ranks[197839] =
3020, 7452, 20660,30189,41301,37132,37452,35825,39233,41300,2237, 31491,41300,35593,29893,17658,1329, 21812,12467,21678,21144,24493,41300,24416,27991,41300,15045,
39093,23149,35120,35120,3390, 39093,24196,5503, 20240,11655,24522,11383,35096,35090,37784,41299,14475,18197,28058,39093,20710,33341,3915, 31636,36905,18753,22112,
13995,41299,18752,14605,38968,7569, 5009, 34994,15823,10378,34933,10206,35119,37452,41299,8434, 22873,36754,37908,35119,24195,37452,41299,13602,26109,13597,17657,
- 14103,33566,13141,19978,34283,17126,34283,8277, 25202,41298,1429, 24453,2369, 28341,10513,37451,39092,39127,38224,4452, 20709,18281,20708,26614,37021,22118,2287,
+ 14103,33566,13141,19978,34283,17126,34283,8277, 25202,41298,1429, 24453,2369, 28341,10513,37451,39092,39127,38224,4452, 20709,18281,20708,26614,37021,22118,2287,
2969, 39300,1131, 10036,37126,35311,15423,34283,12000,37451,28057,21469,39092,2676, 25550,8163, 29298,15044,216, 14604,8300, 37584,15237,13599,23570,37770,22581,
37451,34915,15422,32953,4314, 33566,4486, 12265,30037,11923,23232,41298,26923,1257, 26613,37447,36162,35008,41298,41298,41297,37609,21949,41297,5760, 24194,21609,
36162,13994,38182,41297,1065, 15236,33185,33731,6357, 23680,21468,2381, 24155,37654,36162,31490,36161,20477,8129, 2987, 20224,2501, 32953,38203,41297,3563, 41296,
- 35119,29674,32953,37451,5897, 12149,36161,4753, 37270,13186,34283,6602, 38171,22466,41296,34282,2500, 36251,37697,16660,41296,39092,15518,41296,3908, 26612,3864,
- 35119,38878,13140,21467,24852,9082, 37450,1478, 28805,32953,34834,35118,20098,41295,35118,35118,36161,20034,34282,34282,22272,35118,35117,28948,36161,20119,8296,
+ 35119,29674,32953,37451,5897, 12149,36161,4753, 37270,13186,34283,6602, 38171,22466,41296,34282,2500, 36251,37697,16660,41296,39092,15518,41296,3908, 26612,3864,
+ 35119,38878,13140,21467,24852,9082, 37450,1478, 28805,32953,34834,35118,20098,41295,35118,35118,36161,20034,34282,34282,22272,35118,35117,28948,36161,20119,8296,
7437, 36000,33137,4949, 15896,41295,38300,16727,36175,38557,38488,25348,9733, 1699, 19497,26100,12872,10793,3597, 11964,36160,37450,39232,34079,20318,37450,39092,
- 1267, 22732,13173,29211,37629,37450,2605, 24193,2604, 39091,39091,3691, 37449,41295,16182,36246,15895,35117,13139,23148,18742,36313,14166,4508, 29673,24192,7007,
+ 1267, 22732,13173,29211,37629,37450,2605, 24193,2604, 39091,39091,3691, 37449,41295,16182,36246,15895,35117,13139,23148,18742,36313,14166,4508, 29673,24192,7007,
2358, 10542,13138,560, 350, 6532, 32952,19455,39091,11928,1120, 9772, 28167,2015, 37449,35534,23797,37449,3537, 1057, 1799, 32952,1724, 36160,177, 38633,28574,
34282,16608,41295,19772,36160,26611,1664, 24757,39091,23765,34281,7508, 158, 36789,21609,879, 19870,3325, 39090,28056,39090,39207,37449,36160,37448,6679, 11250,
- 20033,9649, 37448,39090,32952,39090,35117,32948,6254, 4050, 30673,39089,6738, 7944, 11486,33566,2874, 12336,41294,34281,4146, 34980,2131, 37389,303, 37711,1121,
+ 20033,9649, 37448,39090,32952,39090,35117,32948,6254, 4050, 30673,39089,6738, 7944, 11486,33566,2874, 12336,41294,34281,4146, 34980,2131, 37389,303, 37711,1121,
37448,28032,36159,33758,22271,31489,29672,1890, 13683,33030,19271,9521, 16665,11059,10096,16726,6905, 2599, 7355, 35859,6633, 36298,3062, 1502, 37448,25347,33565,
38721,35117,15894,28055,37826,39089,34166,14301,10522,27675,39089,39231,95, 19378,14673,7792, 15001,17460,25891,17860,20264,41294,34226,36935,20032,33565,32952,
- 41294,34958,22270,11461,14344,36159,22084,15716,33899,39089,34394,36409,13328,32992,20048,9480, 39088,33565,16725,41294,27106,11061,39088,2134, 32951,31488,2082,
- 26610,2337, 1082, 5799, 37688,11732,5535, 10699,36159,23786,21443,12335,38328,31247,16572,18751,34525,19576,39281,34063,36817,12225,12334,20097,29649,4330, 2649,
+ 41294,34958,22270,11461,14344,36159,22084,15716,33899,39089,34394,36409,13328,32992,20048,9480, 39088,33565,16725,41294,27106,11061,39088,2134, 32951,31488,2082,
+ 26610,2337, 1082, 5799, 37688,11732,5535, 10699,36159,23786,21443,12335,38328,31247,16572,18751,34525,19576,39281,34063,36817,12225,12334,20097,29649,4330, 2649,
21148,32147,2737, 2826, 24191,10377,23093,5990, 18530,33565,36159,5534, 12669,35189,18196,37447,13137,37447,29114,1871, 7356, 17656,13680,16324,3010, 39088,39088,
17535,31495,35524,14603,39087,34281,33662,16642,16724,39305,35816,24046,31487,38712,34281,41293,12895,36278,39087,32554,26871,6681, 2189, 22005,32726,18507,14909,
7697, 527, 26586,7041, 9367, 32201,12825,15241,14951,1539, 29339,30917,20050,15140,7465, 25628,10761,16501,2468, 18320,6514, 11133,20274,33001,3750, 21416,10778,
@@ -19689,13 +19684,13 @@ static const unsigned short Ranks[197839] =
20031,36158,14343,3135, 36158,4876, 36585,20263,35695,7747, 27810,35254,8080, 36790,10376,8194, 19944,8142, 20263,11754,38235,37329,34663,34470,3218, 4700, 14338,
17109,13347,18741,20096,11999,21708,41293,889, 9280, 29178,24190,37447,36158,1689, 449, 39086,13928,33194,6626, 15015,32171,15893,34280,41293,9702, 20095,38564,
37446,15822,3651, 41293,2708, 32984,15892,16723,33576,1599, 35116,33564,1088, 35116,2695, 1350, 199, 12041,247, 14693,15821,24189,19364,9935, 367, 14878,25482,
- 11375,29424,28053,32951,17655,37446,34465,1235, 24761,11374,15235,1980, 8971, 16980,38650,83, 8588, 25346,5932, 116, 11631,2201, 34909,28838,32370,41292,2956,
+ 11375,29424,28053,32951,17655,37446,34465,1235, 24761,11374,15235,1980, 8971, 16980,38650,83, 8588, 25346,5932, 116, 11631,2201, 34909,28838,32370,41292,2956,
37446,3614, 17578,12633,37033,5056, 27962,15930,35472,651, 6775, 27713,38229,38547,39086,34597,33991,21446,1026, 39085,19834,2514, 12894,36158,38211,32989,37446,
21466,34143,27582,39085,12893,30654,35116,35616,338, 5723, 34305,36130,33081,7660, 23184,18473,20094,34753,28255,23764,2158, 2648, 9732, 9020, 15891,37961,39022,
6107, 32951,7589, 37570,39139,27276,35116,41292,25345,33836,36157,34280,36157,5708, 13699,26609,35115,13507,13760,38154,37788,37605,27660,37792,9208, 39085,37445,
23336,37445,35115,36217,3882, 30284,15204,23147,24188,35115,34280,31486,36157,35115,19363,35114,39085,1992, 15159,41292,11826,10069,34280,18034,37328,41292,28842,
29669,3315, 32951,39084,17577,22268,41291,5178, 11060,41291,41291,41291,41290,6790, 32120,21465,36157,1504, 3073, 37445,34279,37445,39084,39084,18523,769, 21904,
- 2301, 37444,5035, 2332, 10983,23445,3958, 36868,7715, 12038,1542, 4378, 2514, 20030,34046,41290,36156,18750,22267,18660,33058,34279,21464,28636,39084,37444,1063,
+ 2301, 37444,5035, 2332, 10983,23445,3958, 36868,7715, 12038,1542, 4378, 2514, 20030,34046,41290,36156,18750,22267,18660,33058,34279,21464,28636,39084,37444,1063,
11998,7895, 6188, 15890,39083,33299,30068,22266,15820,37444,37444,35114,39083,31485,25817,16403,32950,37443,12927,16214,37443,41290,7972, 10390,20830,7993, 37443,
41290,41289,39032,20410,25446,3392, 34008,24135,3705, 35016,7342, 13904,37237,35433,29298,25780,20182,18267,39083,9550, 7523, 33059,11383,33072,32029,26707,21686,
21548,19080,22723,22189,41289,39083,35536,28743,1007, 28596,244, 7705, 514, 3913, 28733,1266, 11919,38460,27930,796, 14949,1803, 16245,14385,3915, 33151,24345,
@@ -19705,15 +19700,15 @@ static const unsigned short Ranks[197839] =
21503,39080,41287,24187,28049,34278,9508, 18740,11918,37442,894, 39080,39080,11674,39080,29667,39079,41287,7644, 37057,26482,3286, 36997,35114,37442,585, 25341,
31483,26013,35113,9382, 37441,3539, 39079,31482,36156,7080, 24186,18194,8335, 41286,15421,34221,32950,1139, 39225,13993,24185,41286,28048,41286,8426, 39078,34277,
19757,18193,39079,37441,33275,24664,38015,37441,14342,18749,10447,37441,13142,39079,33238,35057,41286,36614,37440,848, 34277,37156,19522,7635, 16226,39078,37440,
- 39078,37354,38304,33001,33262,36076,32950,22913,7893, 1688, 37440,31481,36156,28047,33312,26614,28895,38230,33039,35980,20640,33567,570, 21463,9737, 9549, 113,
- 4815, 23145,33782,39164,1923, 993, 18748,11659,7354, 31480,33564,41285,37440,20093,34819,35444,11997,12711,36052,4251, 18747,32730,34277,6273, 36067,38587,7174,
+ 39078,37354,38304,33001,33262,36076,32950,22913,7893, 1688, 37440,31481,36156,28047,33312,26614,28895,38230,33039,35980,20640,33567,570, 21463,9737, 9549, 113,
+ 4815, 23145,33782,39164,1923, 993, 18748,11659,7354, 31480,33564,41285,37440,20093,34819,35444,11997,12711,36052,4251, 18747,32730,34277,6273, 36067,38587,7174,
30568,24184,2282, 32950,31479,5002, 7010, 38185,37439,20246,38581,29666,26029,41285,32491,4606, 35113,3613, 39132,25340,37439,36102,35100,2055, 29665,12437,21313,
- 32820,12333,16469,19078,33090,34658,34277,37134,23144,41285,839, 36126,4110, 33017,34393,21335,19247,39078,39078,41285,41284,38798,36079,15041,35113,8542, 3458,
- 37439,16658,30449,240, 36642,26608,30692,6314, 3914, 10146,5671, 3240, 4796, 7205, 26738,30736,1586, 37926,2114, 26695,9019, 283, 21782,1274, 11658,26511,3484,
- 1970, 3420, 28691,6270, 23202,11650,23562,37232,34275,41284,36155,7266, 18729,33755,447, 26037,1441, 24951,9394, 14078,24376,22930,18353,20538,5315, 21040,1929,
+ 32820,12333,16469,19078,33090,34658,34277,37134,23144,41285,839, 36126,4110, 33017,34393,21335,19247,39078,39078,41285,41284,38798,36079,15041,35113,8542, 3458,
+ 37439,16658,30449,240, 36642,26608,30692,6314, 3914, 10146,5671, 3240, 4796, 7205, 26738,30736,1586, 37926,2114, 26695,9019, 283, 21782,1274, 11658,26511,3484,
+ 1970, 3420, 28691,6270, 23202,11650,23562,37232,34275,41284,36155,7266, 18729,33755,447, 26037,1441, 24951,9394, 14078,24376,22930,18353,20538,5315, 21040,1929,
33564,31327,26607,20092,30070,34276,6407, 5196, 41284,9125, 36155,39077,29664,34273,16225,34276,20028,36155,41284,37439,37453,33841,39056,26606,38498,16722,24183,
39077,41283,3017, 672, 259, 39077,41283,924, 1064, 21264,993, 13135,7966, 35, 17059,33975,28147,5640, 34396,4875, 6187, 6876, 12766,27097,14602,27451,12332,
- 36885,34403,35178,41283,35113,37438,38644,23970,39077,36155,37438,38666,41283,10559,19492,2561, 15208,36055,3110, 14601,4270, 8166, 36095,30595,19621,11356,9018,
+ 36885,34403,35178,41283,35113,37438,38644,23970,39077,36155,37438,38666,41283,10559,19492,2561, 15208,36055,3110, 14601,4270, 8166, 36095,30595,19621,11356,9018,
23689,36466,21174,36840,17108,36154,21920,18746,38067,1818, 17475,6538, 32120,36154,7892, 3939, 17654,17151,24829,29663,11227,41282,24389,15906,30647,26605,32949,
41282,33343,12710,37438,35112,37336,36154,12442,39076,11718,4577, 32069,27529,25769,15154,18739,27015,37438,28046,30673,18587,19185,37437,18745,6246, 33570,33385,
33167,6230, 2069, 11947,39076,25769,19544,20278,616, 13727,28694,30965,10050,2959, 810, 38118,21462,3162, 30716,1412, 17653,1919, 2879, 1840, 2825, 29662,37437,
@@ -19722,37 +19717,37 @@ static const unsigned short Ranks[197839] =
41280,29661,31260,14609,38913,36154,36153,20462,23143,15420,39076,32949,34799,18192,37437,41280,21832,20027,14389,37131,38962,37759,30184,25191,16705,14341,38412,
20664,37437,41279,35112,41279,618, 37436,21461,15889,25176,10922,41279,39075,23543,36779,35422,8982, 27403,34487,28044,41279,35454,20705,19361,36153,25339,20091,
34276,38597,13780,37436,9874, 41278,36153,29660,24450,37634,6556, 1798, 32889,17651,39305,16310,8216, 2212, 15040,17650,29659,18191,39289,12709,17649,11909,20314,
- 12502,23780,36153,12892,10205,18190,35133,25614,182, 30027,1280, 16430,19360,12390,17648,5970, 10823,38733,2014, 1994, 13141,36152,39075,28321,35137,32967,7114,
- 9783, 41278,36152,20090,39075,39075,39074,6734, 15826,9226, 28807,37436,37436,10698,12141,15419,25523,35112,31657,10722,37164,14102,41278,41278,39074,14600,3979,
+ 12502,23780,36153,12892,10205,18190,35133,25614,182, 30027,1280, 16430,19360,12390,17648,5970, 10823,38733,2014, 1994, 13141,36152,39075,28321,35137,32967,7114,
+ 9783, 41278,36152,20090,39075,39075,39074,6734, 15826,9226, 28807,37436,37436,10698,12141,15419,25523,35112,31657,10722,37164,14102,41278,41278,39074,14600,3979,
31088,13755,11005,11904,31006,4960, 21839,32957,4564, 28348,13683,15118,14594,13351,28285,1876, 33614,37092,32934,29658,23109,4861, 32430,24279,25222,22101,16615,
9995, 12266,18806,32435,28881,22852,13430,27104,1870, 29241,22258,529, 24568,17740,27555,33679,2075, 19147,14972,31776,33451,9053, 26604,41277,35437,41277,41277,
- 32949,37570,17336,22792,22264,39074,39074,37435,30135,33895,39073,35670,36152,36889,25576,33179,37510,30136,36772,23165,38203,35809,32833,5619, 2059, 35211,2802,
+ 32949,37570,17336,22792,22264,39074,39074,37435,30135,33895,39073,35670,36152,36889,25576,33179,37510,30136,36772,23165,38203,35809,32833,5619, 2059, 35211,2802,
34919,9255, 27303,23297,38453,19252,33095,1648, 38434,11996,4655, 24222,34374,37435,20371,39073,37435,33417,39100,36152,34055,37047,37435,27337,16055,6678, 41277,
33563,2810, 19161,17524,11492,34276,28278,41276,15039,36151,34275,23142,6880, 39073,29657,36151,39073,32949,10714,36151,41276,36151,10368,41276,31478,1116, 35111,
29656,11995,41276,11994,33563,39072,41275,16657,15418,41275,33563,6879, 41275,1641, 38876,41275,41274,37434,6714, 20704,28043,659, 3145, 13270,11098,17079,33930,
- 2311, 11864,3681, 22758,36661,22298,7643, 41274,4139, 39072,4703, 24182,36398,13711,18744,36150,18189,20703,26603,16224,41274,34487,37434,9197, 25001,16996,1519,
+ 2311, 11864,3681, 22758,36661,22298,7643, 41274,4139, 39072,4703, 24182,36398,13711,18744,36150,18189,20703,26603,16224,41274,34487,37434,9197, 25001,16996,1519,
34177,34192,29058,31756,39072,41274,35331,35111,36644,10270,33562,3685, 31366,35326,25814,8833, 12708,24658,5533, 36446,13998,39072,36150,33394,3935, 30489,17737,
4806, 8362, 36898,35641,41273,35111,3683, 16503,31477,17399,32990,20089,36150,19293,39071,35009,35111,24787,41273,9047, 17768,18742,38397,41273,34275,39071,11993,
22263,4642, 41273,14340,41272,11673,35308,41272,34837,7814, 21460,36150,8162, 31086,4894, 8533, 35163,38569,4240, 6965, 15038,35110,29655,34275,37757,37434,33562,
39071,2160, 5567, 2871, 29288,37434,31476,26602,5798, 41272,39071,29654,31475,37433,39070,29653,41272,31474,37841,35600,26415,9928, 30876,9251, 17311,12369,31467,
35320,41271,4725, 41271,41271,34275,35110,39070,9490, 19334,37540,36149,11349,11096,3438, 13320,35948,9954, 30368,35110,7252, 10145,38011,18738,1133, 2285, 21055,
- 19086,5008, 3870, 15157,2307, 3754, 5670, 29417,2374, 15888,30777,33756,37675,36416,2760, 6403, 19664,15948,32919,13789,15979,28890,17359,19188,37689,32856,4077,
+ 19086,5008, 3870, 15157,2307, 3754, 5670, 29417,2374, 15888,30777,33756,37675,36416,2760, 6403, 19664,15948,32919,13789,15979,28890,17359,19188,37689,32856,4077,
4625, 11097,7451, 39050,960, 23141,37433,41271,37433,39070,31473,41270,36149,3464, 913, 39070,39069,17107,41270,37433,41270,35110,32948,39069,37432,28042,39069,
39069,39068,41270,9005, 41269,39068,39068,39117,34274,41269,39068,41269,41269,41268,37432,39067,26601,41268,11496,37432,1797, 37432,20702,39067,30087,39067,25338,
41268,41268,35109,37431,41267,300, 8669, 15996,32969,32862,30362,33562,11992,41267,18087,5101, 31472,36149,13140,17106,37818,38658,39067,35109,41267,37431,26860,
35109,26619,14599,36480,17105,17576,36149,35729,36148,20088,25337,41267,32948,14692,20087,32948,37203,7668, 37431,28041,18743,39066,20086,20213,7407, 17374,22394,
23829,39029,30738,31013,35713,36148,36498,21459,19272,13927,39066,36148,37623,35387,16120,33010,1939, 24849,34058,34878,34296,36148,41266,35903,34274,10697,35109,
- 13992,11249,13411,15421,20026,27834,36147,34274,37752,41266,32948,35108,36147,1245, 17104,17575,34274,25791,39066,9606, 41266,10879,925, 1656, 5066, 2392, 1264,
+ 13992,11249,13411,15421,20026,27834,36147,34274,37752,41266,32948,35108,36147,1245, 17104,17575,34274,25791,39066,9606, 41266,10879,925, 1656, 5066, 2392, 1264,
16223,2248, 18720,35108,36147,41266,17647,39066,24181,5097, 14101,20085,11373,17646,24180,16719,15887,36147,5096, 7470, 12673,24580,29333,26194,39065,26838,29389,
- 14061,37431,16209,3128, 6186, 4842, 8087, 5509, 19704,28040,2098, 37209,33102,3307, 38062,348, 4496, 18525,32363,29895,34523,7951, 34096,25521,35999,35108,2226,
+ 14061,37431,16209,3128, 6186, 4842, 8087, 5509, 19704,28040,2098, 37209,33102,3307, 38062,348, 4496, 18525,32363,29895,34523,7951, 34096,25521,35999,35108,2226,
32957,36156,6678, 37430,38861,15545,14809,35555,5166, 14339,35108,41265,36146,37438,35107,37430,37430,39065,41265,35102,38100,36309,37430,18188,37580,36146,29997,
- 35107,26600,39065,11527,36146,9648, 37429,37429,41265,39065,16510,25681,17103,32192,33528,8774, 8276, 13697,36197,16718,2541, 29483,3702, 39360,14239,10883,3569,
+ 35107,26600,39065,11527,36146,9648, 37429,37429,41265,39065,16510,25681,17103,32192,33528,8774, 8276, 13697,36197,16718,2541, 29483,3702, 39360,14239,10883,3569,
28774,30368,9501, 29284,26934,22367,18919,33055,7552, 28326,31277,33118,9353, 31008,20066,17403,33562,3164, 12530,32947,32947,20167,37923,37429,34273,39064,41265,
- 22485,34824,29652,1744, 30862,34273,41264,7100, 35395,18175,32844,18060,29651,37844,31471,16155,8275, 1755, 33645,37900,9731, 6866, 7213, 26599,28117,29650,6480,
+ 22485,34824,29652,1744, 30862,34273,41264,7100, 35395,18175,32844,18060,29651,37844,31471,16155,8275, 1755, 33645,37900,9731, 6866, 7213, 26599,28117,29650,6480,
32947,39064,23963,41264,29649,15031,13970,20423,14843,8779, 15441,26387,16957,24179,31307,26839,34983,41264,13601,36962,12300,29100,36139,19142,35212,32181,32308,
38276,33360,27012,17766,7293, 12049,10963,13083,23104,32914,23197,10374,32839,19019,30382,10458,31041,15278,20015,24243,4726, 18742,13600,14100,36918,37429,36894,
21458,39064,22262,8558, 13599,24585,34946,37428,37252,36471,11255,41264,12618,20139,37866,35107,35037,22261,34310,36140,26598,37428,25336,22695,20025,34273,35107,
- 34273,41263,39064,12140,4327, 34272,6649, 35822,9207, 13134,33882,37428,37428,6419, 41263,35106,41263,5299, 17645,4530, 32814,37427,12040,16717,34272,36146,6313,
+ 34273,41263,39064,12140,4327, 34272,6649, 35822,9207, 13134,33882,37428,37428,6419, 41263,35106,41263,5299, 17645,4530, 32814,37427,12040,16717,34272,36146,6313,
15417,39063,34272,1208, 34914,38915,36145,24178,32947,11248,4752, 39063,41263,32946,39063,11908,18741,241, 36652,38649,29648,33561,35106,37443,35936,21365,21076,
28039,19996,31470,9583, 27743,13133,37518,12891,32946,18737,5991, 31469,12890,18187,22260,14598,36078,2569, 37427,35106,19359,41262,39063,34957,41262,41262,41262,
36326,38052,12632,23215,37243,12084,39062,7693, 4298, 4874, 15816,17863,15886,41261,37884,14691,41261,15815,39062,4073, 11571,17102,39062,35106,37427,17101,41261,
@@ -19767,10 +19762,10 @@ static const unsigned short Ranks[197839] =
35104,27682,17509,922, 41257,37830,36144,38473,17574,39059,35104,33772,37425,32944,32943,5990, 41257,17098,815, 8556, 31466,36144,4888, 11095,21457,35104,26592,
9507, 24175,16656,37424,1595, 39059,2317, 41256,14338,8086, 13989,24174,21058,20096,36144,35103,39059,34271,36143,34271,24673,38742,765, 23149,28808,34270,35893,
37424,13325,31895,39058,24346,13493,41256,14747,32943,34270,33561,39058,351, 39058,35629,35384,38927,19358,753, 25331,33560,24, 9545, 27391,9627, 37639,20701,
- 6865, 4353, 738, 36143,33560,16222,33112,32293,37424,10508,23093,34270,10878,32941,29920,12388,28034,1540, 39023,9647, 33973,10386,14870,488, 11059,15751,9352,
+ 6865, 4353, 738, 36143,33560,16222,33112,32293,37424,10508,23093,34270,10878,32941,29920,12388,28034,1540, 39023,9647, 33973,10386,14870,488, 11059,15751,9352,
101, 10037,28965,10204,13834,24784,41256,41256,41255,41255,20022,38234,33663,39058,20082,41255,41255,41254,34270,41254,6963, 3659, 23465,39057,38871,27604,41254,
679, 37424,35580,41254,1667, 8274, 36143,6536, 2164, 17662,37466,36738,35103,34210,10695,27299,4195, 2598, 41253,36143,16473,17573,2062, 39057,37423,33880,39057,
- 14337,39057,36142,15417,38571,13663,39419,13132,41253,6555, 33793,6925, 24193,6070, 33975,41253,607, 35103,27399,18400,18420,25307,39056,982, 6502, 41253,2612,
+ 14337,39057,36142,15417,38571,13663,39419,13132,41253,6555, 33793,6925, 24193,6070, 33975,41253,607, 35103,27399,18400,18420,25307,39056,982, 6502, 41253,2612,
36142,9646, 39056,36142,37340,1438, 10822,41252,36142,39056,10904,22259,16655,10068,39056,35103,2494, 9442, 38368,8658, 36141,294, 36060,35102,17579,17097,26591,
28599,3521, 28033,39055,36141,3705, 18604,41252,37423,41252,41, 9431, 25912,33560,26590,243, 32943,36141,29638,35102,23138,12387,11713,21404,4447, 35102,39055,
26589,32943,7460, 36141,29637,31465,41252,344, 20081,39055,2648, 15814,20021,4702, 10821,35102,15885,7890, 39055,37423,33903,41251,19357,34269,4270, 21456,41251,
@@ -19779,15 +19774,15 @@ static const unsigned short Ranks[197839] =
33157,35101,33496,39221,14128,25329,8141, 16714,37421,36108,15099,41251,1658, 16713,20700,31733,638, 14164,13131,32948,5187, 39054,26588,41250,37421,36140,37631,
12139,251, 6097, 11094,15415,39054,32883,9506, 33674,39054,34871,37421,6166, 41250,41250,35101,36139,11460,34334,40, 4948, 32866,146, 13596,1183, 10025,32942,
15234,12706,249, 24990,13647,39054,37421,20020,41250,38838,35100,34269,38372,7981, 2579, 29216,34236,18492,30211,32941,17642,14596,39053,41249,32334,36875,31885,
- 16350,84, 24743,16804,36368,22481,28673,25421,25100,36480,37169,33559,18588,10840,15044,37420,31464,20080,16355,11672,37420,14253,36139,20492,586, 9973, 6817,
+ 16350,84, 24743,16804,36368,22481,28673,25421,25100,36480,37169,33559,18588,10840,15044,37420,31464,20080,16355,11672,37420,14253,36139,20492,586, 9973, 6817,
64, 35625,37420,34721,7155, 2068, 18769,24172,33797,37420,41249,41249,7992, 11671,8657, 41249,14174,41248,35868,28032,2997, 41248,37419,4408, 36711,35100,16221,
470, 3033, 34748,11907,41248,29635,8986, 2034, 8815, 18987,23137,19356,34508,41248,13625,4599, 11459,2866, 14595,15414,2795, 36680,10521,34268,26172,10380,30139,
6930, 16578,28470,5346, 1954, 24813,10373,32583,8839, 9548, 10501,41247,41247,37867,27044,35100,34290,41247,34268,36139,5100, 33895,19638,34311,11906,15037,37334,
33592,13139,19545,34268,1117, 17170,3249, 2061, 18415,13450,39053,894, 24171,8085, 31463,41247,36492,39053,35100,4837, 4678, 12705,33988,8899, 4009, 37419,29769,
39053,14481,34268,9206, 4470, 38546,37419,1274, 32941,41246,39052,28031,10520,24170,1614, 20079,41246,25328,24169,312, 26525,34267,36139,11670,1169, 6430, 34267,
- 8425, 36138,4269, 7460, 37419,39052,37541,39052,8838, 39108,10144,5126, 33009,22663,32894,41246,35709,10431,8424, 38643,39052,39269,1728, 13130,34637,33671,5969,
+ 8425, 36138,4269, 7460, 37419,39052,37541,39052,8838, 39108,10144,5126, 33009,22663,32894,41246,35709,10431,8424, 38643,39052,39269,1728, 13130,34637,33671,5969,
10820,38328,32941,130, 22503,37418,35099,38100,37578,27089,34900,4154, 36630,39051,10066,11366,18789,5257, 14618,274, 3936, 15270,26947,29806,1392, 32941,26115,
- 1629, 41246,2761, 41245,37418,37418,17096,7844, 5821, 35055,41245,41245,35099,27946,39051,16901,7353, 29696,27290,37418,35099,36138,33559,13410,2772, 39253,4203,
+ 1629, 41246,2761, 41245,37418,37418,17096,7844, 5821, 35055,41245,41245,35099,27946,39051,16901,7353, 29696,27290,37418,35099,36138,33559,13410,2772, 39253,4203,
35557,41245,2551, 8413, 33310,33725,4826, 6207, 11967,32940,10889,39051,5, 22447,33992,4281, 22214,35225,33558,31462,31461,18184,9147, 26458,22790,41244,39051,
1437, 35850,33558,8656, 15884,35033,1479, 14099,23701,2613, 35099,6924, 11355,29600,9017, 3217, 4107, 28267,86, 35744,41244,20019,34722,35098,39050,41244,36138,
41244,24746,37417,15233,39050,9547, 18738,33652,41243,39050,41243,41243,18737,31460,19355,25327,12889,37417,37023,35158,15413,38921,34267,41243,41242,14098,25326,
@@ -19797,18 +19792,18 @@ static const unsigned short Ranks[197839] =
9545, 13747,34266,27422,17215,33321,35795,225, 3685, 27980,10034,13594,28585,35200,33442,5029, 36095,12137,12924,16335,14901,18192,22023,22356,21630,34933,10143,
36137,6144, 6297, 8722, 15412,6490, 12474,6128, 6069, 35326,38415,6601, 7173, 37971,13248,27054,1269, 35548,2089, 25783,37616,10943,8010, 15883,38579,20568,32838,
27300,12569,8527, 11990,33811,384, 21517,4117, 17336,37834,20499,6329, 37620,21454,33387,34253,19735,34167,13182,21657,34847,8110, 7468, 26073,13593,34266,14095,
- 39048,5114, 35830,10065,12888,164, 25324,32940,25323,15036,21515,12630,41241,35762,41240,33557,18183,41240,39048,39048,69, 32959,21198,38875,35857,33689,1804,
+ 39048,5114, 35830,10065,12888,164, 25324,32940,25323,15036,21515,12630,41241,35762,41240,33557,18183,41240,39048,39048,69, 32959,21198,38875,35857,33689,1804,
37416,36043,16654,37416,2597, 6149, 39048,16870,37970,20699,21453,24168,265, 41240,18736,17641,21452,24167,41240,41239,37495,37416,37416,34266,36137,2298, 41239,
41239,32780,23386,24166,15232,37676,24816,36137,37415,39064,3119, 1670, 6703, 16544,25327,33398,27057,21192,35949,6985, 9692, 23864,37301,30432,35707,37145,34265,
16710,33654,12173,14594,39149,2947, 26646,20076,3178, 17562,11711,41239,12044,29945,32098,29633,31883,20017,3365, 38193,10375,18735,9729, 36137,13988,34885,14593,
72, 17838,32675,32655,28618,41238,16220,24165,35097,39047,31763,35097,36472,41238,20698,8491, 20076,39047,39047,7236, 30902,20075,959, 4383, 36599,24164,41238,
8773, 39047,72, 5589, 22115,15862,27138,35015,33836,19354,35097,21838,36750,864, 18660,39046,15035,39046,8691, 24445,23632,22619,12331,29536,6187, 39068,39342,
31735,38013,39201,13336,19656,35339,22921,36461,37689,22065,34266,17714,37336,27702,36050,36553,8150, 35097,7153, 6408, 21, 556, 167, 79, 234, 36136,25322,
- 39046,41238,36136,41237,35096,39046,1326, 7765, 4576, 8492, 26602,6429, 9016, 21451,37415,8873, 14592,11870,2859, 5669, 22257,35096,17470,33033,35175,39045,2613,
+ 39046,41238,36136,41237,35096,39046,1326, 7765, 4576, 8492, 26602,6429, 9016, 21451,37415,8873, 14592,11870,2859, 5669, 22257,35096,17470,33033,35175,39045,2613,
15186,9696, 2585, 18734,29095,17640,39045,1338, 8713, 1423, 11868,620, 23046,39040,32940,31332,5818, 12389,33202,6428, 36591,631, 41237,41237,2576, 5335, 18736,
- 787, 17733,14094,20641,35668,18733,17094,1413, 15363,13409,20697,25670,5797, 12704,30834,2864, 18735,11669,16653,41237,13977,39045,41236,3009, 15231,39381,1825,
+ 787, 17733,14094,20641,35668,18733,17094,1413, 15363,13409,20697,25670,5797, 12704,30834,2864, 18735,11669,16653,41237,13977,39045,41236,3009, 15231,39381,1825,
28030,4641, 4354, 36372,10064,36136,6427, 37357,179, 11399,21722,41236,6942, 1417, 28476,119, 36183,17598,952, 18732,41236,41236,23845,7274, 36233,21699,37341,
- 19631,34080,293, 36136,32830,21869,20706,3981, 11585,37181,37627,30784,37187,33484,29450,19965,3328, 1789, 38880,37174,16096,33983,28892,11247,16734,36820,991,
+ 19631,34080,293, 36136,32830,21869,20706,3981, 11585,37181,37627,30784,37187,33484,29450,19965,3328, 1789, 38880,37174,16096,33983,28892,11247,16734,36820,991,
3884, 6527, 6530, 27756,35576,16282,359, 13394,16922,24617,27117,33345,41235,10063,35096,35096,41235,25321,18182,37415,37415,39045,5446, 36135,4485, 24163,20016,
18734,36135,12703,358, 33024,2940, 9004, 3681, 34265,29632,16219,13408,20015,24162,37414,4911, 30232,10596,16709,36135,9645, 11656,18731,16953,41235,41235,39044,
36135,8273, 41234,37414,41234,30321,6883, 2310, 9934, 36134,17639,41234,3062, 41234,10316,28029,1130, 32693,32989,5299, 34265,19968,7642, 16002,15882,10808,19353,
@@ -19819,14 +19814,14 @@ static const unsigned short Ranks[197839] =
17572,32939,26583,24161,39043,18181,41231,36133,17093,17092,21450,41231,21449,38491,41231,25320,37412,35095,37411,15813,6992, 31455,4751, 39043,29630,30482,39043,
7641, 13592,5138, 24160,35095,3413, 5809, 5272, 5578, 1351, 7741, 17255,18729,35080,17088,37804,8703, 26582,6185, 33609,32938,12887,41230,36133,41230,33556,32938,
25319,39042,26581,22398,24236,27206,29662,41230,41230,8772, 41229,36133,32938,4685, 5301, 25318,32561,4245, 15132,31454,35094,7409, 4418, 11458,38486,41229,37411,
- 37411,3824, 8194, 39042,2121, 19352,26580,39042,26579,21448,11058,15812,35094,25317,24159,32938,28027,39042,15811,13405,37411,25316,36132,39041,23134,33555,2361,
+ 37411,3824, 8194, 39042,2121, 19352,26580,39042,26579,21448,11058,15812,35094,25317,24159,32938,28027,39042,15811,13405,37411,25316,36132,39041,23134,33555,2361,
12628,34166,6738, 41229,41229,39041,41228,41228,31453,1424, 41228,39041,500, 9544, 5717, 4701, 15229,8140, 4836, 17638,9933, 17091,28026,24369,3562, 37410,39041,
- 7991, 41228,18732,41227,5612, 16218,41227,17571,31452,22254,41227,36132,41227,41226,34264,6198, 36132,32937,12886,13986,37410,19351,33555,37410,41226,13985,6864,
+ 7991, 41228,18732,41227,5612, 16218,41227,17571,31452,22254,41227,36132,41227,41226,34264,6198, 36132,32937,12886,13986,37410,19351,33555,37410,41226,13985,6864,
6535, 39040,41226,12627,39040,577, 31451,41226,34272,39040,26578,38738,34782,12626,41225,33555,15810,35094,7724, 41225,36588,13696,13984,41225,39040,34264,41225,
- 41224,37410,35094,14336,37409,7154, 14335,31450,37831,20922,33447,30541,23303,34264,37409,34264,33555,32627,4564, 36132,26120,218, 35093,15410,35093,4079, 112,
+ 41224,37410,35094,14336,37409,7154, 14335,31450,37831,20922,33447,30541,23303,34264,37409,34264,33555,32627,4564, 36132,26120,218, 35093,15410,35093,4079, 112,
28509,26832,775, 14770,9754, 7151, 27899,27171,28723,16905,4658, 13004,5271, 10889,36131,10358,17570,2806, 36187,26577,8535, 601, 33979,11905,28823,2790, 41224,
33554,11057,13404,3703, 5946, 11809,26, 16741,28025,17541,39136,14334,34263,11963,13362,17090,29629,41224,37409,1785, 6358, 9497, 38308,8298, 13137,29438,39039,
- 33554,7011, 3008, 36842,13136,18728,2003, 34263,19350,8888, 37409,17089,118, 37353,33554,36285,16707,34786,20073,41224,41223,25315,20072,32859,12625,34263,1022,
+ 33554,7011, 3008, 36842,13136,18728,2003, 34263,19350,8888, 37409,17089,118, 37353,33554,36285,16707,34786,20073,41224,41223,25315,20072,32859,12625,34263,1022,
36131,18638,38938,32768,34263,16706,37408,17569,6929, 35093,7738, 39039,37408,41223,5001, 16705,5137, 23133,37408,24782,24158,39039,41223,8271, 35093,6060, 36131,
19349,37408,24157,22253,21591,2754, 23124,41223,32885,17292,5668, 36131,35092,32937,41222,31894,14091,28024,5370, 37407,36130,35092,25314,279, 35092,39303,31449,
41222,32755,827, 3324, 11092,36821,10877,32937,13591,14333,8321, 37407,3182, 18180,39039,25033,28023,36020,2596, 41222,115, 4802, 8806, 36130,20696,41222,15013,
@@ -19839,39 +19834,39 @@ static const unsigned short Ranks[197839] =
39035,28626,33552,165, 11606,7057, 35090,41217,41217,37404,9769, 33552,10876,16651,5033, 41217,41216,23130,28021,35090,7813, 36127,9468, 31442,33552,28020,31441,
20694,4353, 16562,104, 32423,20491,29700,29624,37404,34262,41216,8771, 8319, 34286,37506,8749, 29352,5298, 11801,1517, 39035,6040, 14332,18177,8938, 11220,10360,
32936,41216,4605, 39409,36127,34262,34261,19838,13403,36127,35301,3561, 41216,15409,15881,37404,7546, 41215,19348,36127,37404,39035,35090,36126,35003,25313,37135,
- 12624,10810,5752, 38177,39035,39034,260, 17468,32190,14706,33791,33205,11014,12551,12386,37789,41215,34132,36126,29356,2534, 32817,9259, 37392,37403,8654, 1126,
+ 12624,10810,5752, 38177,39035,39034,260, 17468,32190,14706,33791,33205,11014,12551,12386,37789,41215,34132,36126,29356,2534, 32817,9259, 37392,37403,8654, 1126,
8980, 35008,14689,41215,9589, 30737,24585,10609,38710,9002, 12662,39034,9205, 37403,9238, 14331,7812, 33552,8653, 29623,15131,26573,3250, 33135,2288, 14563,29187,
719, 5751, 18874,31440,4482, 33551,7688, 23973,32481,10987,14688,20012,41215,18728,10518,41214,31439,37403,33551,32936,17359,20600,472, 32827,35089,34012,31970,
- 5325, 11731,41214,11618,17976,2596, 1432, 29386,38809,20898,17382,28313,34261,33551,29134,36126,13134,14687,9001, 29622,11457,37403,32355,7723, 35089,41214,7716,
- 5730, 32723,5611, 12406,29851,1046, 18727,37402,41214,25807,20071,32289,37402,37305,5388, 41213,37402,16225,30118,11989,37402,35461,24153,21967,24001,26572,1856,
+ 5325, 11731,41214,11618,17976,2596, 1432, 29386,38809,20898,17382,28313,34261,33551,29134,36126,13134,14687,9001, 29622,11457,37403,32355,7723, 35089,41214,7716,
+ 5730, 32723,5611, 12406,29851,1046, 18727,37402,41214,25807,20071,32289,37402,37305,5388, 41213,37402,16225,30118,11989,37402,35461,24153,21967,24001,26572,1856,
39034,31328,14330,39034,39033,18727,36206,20070,20069,41213,25336,36126,8058, 6368, 37447,13402,16650,9362, 31349,35165,32856,39033,11456,35778,25312,30313,38864,
- 36125,41213,39033,18052,33551,35089,35089,10474,39033,25311,23129,35656,32232,37819,29694,3627, 27400,2021, 3013, 3520, 18726,10595,12330,20068,14591,8557, 8690,
+ 36125,41213,39033,18052,33551,35089,35089,10474,39033,25311,23129,35656,32232,37819,29694,3627, 27400,2021, 3013, 3520, 18726,10595,12330,20068,14591,8557, 8690,
8009, 5234, 15228,17636,37401,37567,41213,36125,4033, 38876,1399, 8999, 11323,6251, 1010, 8278, 20340,39032,6634, 18725,9015, 27936,41212,15809,33604,26998,37401,
20067,6409, 34511,35088,25806,37426,35088,2745, 17635,16704,28019,14590,8, 10374,916, 20066,2891, 10373,1427, 87, 5487, 13129,18724,3532, 14589,17634,32890,
33550,18723,20065,35612,22711,7694, 104, 9331, 17708,27471,10997,15227,1754, 24840,7172, 17677,20064,36125,8008, 11988,14588,2424, 2793, 3509, 10594,5836, 21512,
10466,16861,17397,14587,6125, 20063,12329,20062,15639,34506,28018,34867,29621,2163, 29454,37401,39032,34187,16753,26905,1949, 34261,3215, 35533,37449,28017,15411,
8556, 41212,1602, 36125,36124,15880,9929, 2302, 13128,39032,9141, 33550,194, 22280,33550,20693,33550,33910,36225,20061,9727, 22249,35790,15879,7811, 1454, 31168,
- 25310,16649,36124,18722,15878,18721,3503, 13983,29599,36124,34034,36124,15408,39032,27852,24152,21447,41212,39, 7450, 15877,8836, 1064, 56, 1168, 4250, 384,
- 5404, 3823, 34690,1930, 4671, 16703,6203, 18720,9081, 1319, 28016,10366,16702,34261,706, 15407,32936,25309,4300, 33549,8872, 39031,2208, 38617,16701,41212,19,
+ 25310,16649,36124,18722,15878,18721,3503, 13983,29599,36124,34034,36124,15408,39032,27852,24152,21447,41212,39, 7450, 15877,8836, 1064, 56, 1168, 4250, 384,
+ 5404, 3823, 34690,1930, 4671, 16703,6203, 18720,9081, 1319, 28016,10366,16702,34261,706, 15407,32936,25309,4300, 33549,8872, 39031,2208, 38617,16701,41212,19,
13127,22248,5532, 11904,19347,26896,26571,9124, 11455,7006, 7279, 12623,12800,41211,37401,39031,41211,71, 39031,31438,37400,1787, 5531, 13126,12702,15226,12701,
- 14090,33488,4553, 17633,28015,15876,3613, 37400,20060,6863, 1527, 20175,9644, 5403, 23526,41211,3303, 14586,14693,41211,6357, 1980, 36123,20011,11371,38012,9204,
+ 14090,33488,4553, 17633,28015,15876,3613, 37400,20060,6863, 1527, 20175,9644, 5403, 23526,41211,3303, 14586,14693,41211,6357, 1980, 36123,20011,11371,38012,9204,
34260,18719,39031,11091,9203, 35088,32935,26570,6676, 7640, 41210,36123,7889, 10142,15225,37802,2847, 1176, 10684,36190,14089,2733, 8193, 12885,10365,28014,32935,
33549,2161, 18050,8412, 27775,3106, 8689, 20059,39030,2816, 17343,29324,38142,20058,37400,4715, 7352, 9350, 34231,5046, 41210,5210, 467, 15406,20057,35798,11575,
14686,15808,3061, 33879,39030,32935,13, 4049, 9504, 36123,29620,34693,37766,4624, 33549,14666,26971,14486,37400,29619,38310,3382, 14525,35420,8541, 17756,18726,
- 32935,13401,10333,20237,25620,504, 11903,12884,19294,4299, 2762, 31437,20692,34260,6367, 3680, 8270, 39030,31436,18725,13133,4014, 37399,41210,15807,17567,5000,
+ 32935,13401,10333,20237,25620,504, 11903,12884,19294,4299, 2762, 31437,20692,34260,6367, 3680, 8270, 39030,31436,18725,13133,4014, 37399,41210,15807,17567,5000,
17632,35575,34260,4040, 13053,12328,29618,4946, 37399,13400,7311, 2904, 9361, 41210,18718,2520, 37302,20057,21128,32604,18911,24172,15875,23896,12026,39045,22932,
17417,38909,2513, 804, 33549,5135, 33627,14329,41209,36526,29617,37824,39030,2158, 37399,11902,6848, 32934,35088,16420,12385,29616,37399,857, 29615,33548,35087,
- 1654, 2876, 1607, 15034,4999, 41209,3270, 1696, 36123,41209,33026,14685,358, 10507,34260,28013,24151,26569,41209,10062,35087,16648,2381, 35173,36464,38141,1566,
+ 1654, 2876, 1607, 15034,4999, 41209,3270, 1696, 36123,41209,33026,14685,358, 10507,34260,28013,24151,26569,41209,10062,35087,16648,2381, 35173,36464,38141,1566,
1477, 37398,5256, 41208,4856, 1516, 39029,18176,13132,29614,11090,31435,33548,7153, 41208,19346,15405,39029,1717, 2761, 16700,29613,38545,18717,14585,41208,18716,
37398,32934,7545, 39029,13695,36122,20691,2586, 5007, 20056,29561,20055,10130,32, 1900, 3672, 5233, 274, 4008, 334, 20054,18715,6633, 9158, 32971,17719,12622,
- 1863, 29223,9245, 18714,995, 39217,6567, 193, 13125,34943,6166, 17631,21347,37350,7005, 35087,4813, 639, 25677,7449, 1111, 36122,17630,11370,4805, 9052, 6862,
+ 1863, 29223,9245, 18714,995, 39217,6567, 193, 13125,34943,6166, 17631,21347,37350,7005, 35087,4813, 639, 25677,7449, 1111, 36122,17630,11370,4805, 9052, 6862,
36122,17629,13124,16699,12327,3753, 10141,9622, 20053,13590,1141, 20488,11369,5486, 33850,12700,15874,12391,17088,9981, 5069, 18713,561, 38888,10422,33548,18712,
10818,17628,18711,49, 1353, 7652, 33469,35087,37398,38590,37398,41208,13716,38817,36122,9932, 37397,779, 24981,18710,36121,3772, 17664,20052,35987,31434,41207,
36934,31433,24150,41207,41207,25308,39029,41207,35086,41206,2308, 29612,41206,9643, 39028,34259,11368,6660, 17627,37274,24149,36121,33548,26568,6722, 36121,19345,
20690,35086,22567,36121,41206,3791, 41206,36120,25307,916, 9227, 13123,32934,41205,28012,22247,2471, 34259,9642, 39028,17566,26567,4119, 21132,34522,3258, 36120,
41205,34259,39409,4013, 33547,35086,32934,26566,29611,18175,39028,11246,12925,7459, 8423, 38865,2568, 33547,12621,41205,32933,14584,34836,37397,37397,19115,37397,
41205,37396,37396,31432,626, 33565,18845,22246,1004, 7894, 12326,8211, 6809, 8924, 17884,25262,2789, 39028,25999,37396,38725,12892,19854,2180, 10848,31576,37396,
- 15806,5365, 21593,37395,28011,39027,41204,41204,11056,26565,37395,33547,34259,7152, 7893, 13496,33547,2935, 8671, 9202, 16561,34071,9037, 41204,18174,41204,3572,
+ 15806,5365, 21593,37395,28011,39027,41204,41204,11056,26565,37395,33547,34259,7152, 7893, 13496,33547,2935, 8671, 9202, 16561,34071,9037, 41204,18174,41204,3572,
21152,37395,9243, 39027,35086,32933,35085,28010,36120,31431,37395,41203,41203,23128,11668,41203,18173,37394,11454,31416,41203,15404,16217,32933,17565,28009,39027,
41202,16698,32933,41202,32932,14684,37394,39027,26564,5333, 39026,34258,41202,33546,34258,29610,41202,5896, 9931, 15715,33171,10372,18737,39026,37394,35085,36101,
22114,24468,16965,28891,15956,37394,39026,30540,36120,20689,19344,10592,37393,39026,37393,28008,5518, 16697,37393,35085,28007,9123, 10203,14583,20010,24148,19343,
@@ -19879,8 +19874,8 @@ static const unsigned short Ranks[197839] =
33545,41200,37392,33545,273, 7152, 3873, 26412,20749,15800,28006,2945, 5163, 6632, 35084,36119,37392,41200,36119,5706, 24147,29609,41200,39025,10140,18709,35084,
20009,29608,36119,11055,10817,34258,484, 8652, 5270, 18708,8424, 31430,14582,14581,6418, 14463,16696,33545,5989, 10517,12883,24146,37392,36119,7990, 37392,19795,
34257,25134,32641,34257,8269, 37981,17087,35571,36154,20016,5995, 34954,41199,32966,38954,35512,10364,25305,31429,41199,36118,10917,14367,20772,11571,32867,41199,
- 5326, 31019,34632,28005,39024,17564,37391,29607,20784,34136,41199,31428,37715,41198,2631, 880, 16485,37391,356, 29606,4684, 8192, 26563,26695,304, 26771,670,
- 35217,37391,34257,5569, 41198,18071,35084,445, 15033,12135,13399,39024,37391,39024,35084,17086,1028, 13516,859, 41198,33545,36118,4256, 11664,3518, 12680,702,
+ 5326, 31019,34632,28005,39024,17564,37391,29607,20784,34136,41199,31428,37715,41198,2631, 880, 16485,37391,356, 29606,4684, 8192, 26563,26695,304, 26771,670,
+ 35217,37391,34257,5569, 41198,18071,35084,445, 15033,12135,13399,39024,37391,39024,35084,17086,1028, 13516,859, 41198,33545,36118,4256, 11664,3518, 12680,702,
9505, 32911,566, 26177,2542, 20051,34257,41198,37390,31427,37390,36391,41197,734, 17085,13131,3670, 30694,41197,37586,11901,5716, 17084,33051,2074, 17725,21995,
20050,41197,33981,33544,38247,41197,16216,32360,2142, 6861, 2864, 17663,25304,15873,24629,5319, 36118,31426,39024,12990,11269,7639, 17122,36118,14321,24674,21446,
14197,19974,14269,4269, 4523, 9242, 41196,37390,37390,26562,34256,34256,28004,32932,2237, 520, 25382,24238,34256,41196,5332, 641, 382, 490, 11111,22310,35086,
@@ -19892,30 +19887,30 @@ static const unsigned short Ranks[197839] =
198, 16097,37389,13932,36914,992, 31421,33544,21443,34591,29603,36115,20048,61, 7104, 21842,2799, 34255,10139,3060, 33543,41193,15402,38368,17083,35083,36115,
14088,751, 33805,36115,1740, 37388,4700, 7910, 34142,41193,163, 23879,8084, 21438,12134,34254,37388,33770,7310, 41192,32932,39022,41192,11667,17562,26561,16647,
37388,16646,15159,17626,39022,3389, 9349, 36115,1739, 41192,364, 27919,8885, 33947,8555, 9726, 41192,35083,995, 15804,2784, 36114,823, 7742, 29173,10138,28001,
- 28575,10522,35083,210, 30424,24202,25302,634, 12384,19341,34497,6245, 31420,10874,5894, 3615, 36114,21442,35370,12383,24586,31419,39021,10516,11655,39021,9670,
+ 28575,10522,35083,210, 30424,24202,25302,634, 12384,19341,34497,6245, 31420,10874,5894, 3615, 36114,21442,35370,12383,24586,31419,39021,10516,11655,39021,9670,
8, 10921,28625,30722,34935,3392, 32931,35082,20047,41191,29602,37388,20046,41191,755, 26560,30364,9241, 33543,6018, 18724,12882,20045,39021,33543,12698,38726,
- 26965,37387,17561,3249, 10202,39021,4555, 11900,29708,39020,37387,7987, 7079, 35082,29601,4417, 34377,5157, 33543,38162,38319,9201, 9725, 26559,17082,34140,385,
+ 26965,37387,17561,3249, 10202,39021,4555, 11900,29708,39020,37387,7987, 7079, 35082,29601,4417, 34377,5157, 33543,38162,38319,9201, 9725, 26559,17082,34140,385,
36834,27699,35979,24994,10593,10515,37387,19340,28000,29625,26558,15803,8316, 9767, 39020,17560,35822,8139, 38497,36114,5475, 34214,18723,33475,8611, 3120, 39272,
35082,1045, 32756,41191,39020,14087,16695,12325,27999,5474, 18552,11666,32931,11538,15224,39020,2306, 19823,18170,39019,41191,6563, 23921,32931,32931,15223,36114,
36861,7235, 35082,9503, 37387,41190,3942, 13589,7078, 32930,37386,752, 35659,35785,35151,649, 7257, 25767,19077,15222,20044,14086,39019,2627, 34254,18366,36167,
32857,39019,5232, 38613,16611,2873, 17338,39122,10060,20043,3727, 18707,37310,18706,26557,12697,1338, 1001, 14326,37386,33542,9000, 8422, 36113,18169,31418,32780,
- 20109,18168,41190,24144,23705,23991,16514,31417,29600,12133,13920,8429, 4940, 41190,27998,41190,41189,2585, 981, 35081,617, 9766, 3372, 38841,760, 4382, 3285,
+ 20109,18168,41190,24144,23705,23991,16514,31417,29600,12133,13920,8429, 4940, 41190,27998,41190,41189,2585, 981, 35081,617, 9766, 3372, 38841,760, 4382, 3285,
37012,7821, 20042,27997,6190, 39019,31416,5209, 23124,24597,36113,9359, 16214,10061,32930,3284, 18167,11987,15032,32264,34117,3736, 4865, 4887, 17081,1637, 11793,
3919, 41189,32212,32635,32861,7278, 34254,27996,22245,27995,473, 39018,41189,17625,41189,11665,5125, 15872,10873,41188,41188,7151, 26556,41188,31415,36113,20007,
34254,9922, 13327,12324,7077, 41188,15401,41187,1412, 14683,37386,31414,13588,10702,12382,16910,37386,37385,1376, 18633,8411, 41187,35806,39018,187, 4138, 23944,
32974,27900,1561, 33732,15031,41187,41187,36579,14740,39018,657, 18784,1322, 31413,15871,516, 41186,20416,11245,7651, 3836, 17757,39111,39223,37691,11089,37385,
- 25301,1025, 18705,37385,20688,1451, 39018,14682,34031,11244,29599,35081,29666,19339,39017,27994,1669, 36113,29587,23123,10201,27993,2368, 41186,11913,196, 2621,
+ 25301,1025, 18705,37385,20688,1451, 39018,14682,34031,11244,29599,35081,29666,19339,39017,27994,1669, 36113,29587,23123,10201,27993,2368, 41186,11913,196, 2621,
11283,32795,27965,32247,33283,31645,19936,12381,19074,186, 26494,21521,13316,32846,32641,4505, 15849,9855, 33046,28481,32228,6279, 37086,25676,34245,28690,36112,
41186,34964,29598,36112,14708,36112,34253,26254,34253,37385,32930,582, 37384,24143,37384,18193,33104,35888,22244,5968, 34253,25300,5705, 33029,41186,20041,26555,
- 20687,25100,39003,17881,37384,41185,20006,41185,34253,2146, 2815, 10315,18704,18703,9930, 32930,39017,6356, 31208,36112,33542,41185,35105,37693,33542,38582,1824,
+ 20687,25100,39003,17881,37384,41185,20006,41185,34253,2146, 2815, 10315,18704,18703,9930, 32930,39017,6356, 31208,36112,33542,41185,35105,37693,33542,38582,1824,
37384,3239, 3477, 33980,34777,8083, 21441,29080,3403, 15221,32956,17624,41185,39017,41184,29597,5667, 34252,37617,32929,14855,27992,8769, 21440,23122,3269, 41184,
- 9358, 39017,20040,27902,41184,34252,37383,34252,21439,37383,41184,37383,9418, 1433, 35362,32929,12258,1459, 24093,378, 17623,18166,39336,14580,18722,11654,5270,
+ 9358, 39017,20040,27902,41184,34252,37383,34252,21439,37383,41184,37383,9418, 1433, 35362,32929,12258,1459, 24093,378, 17623,18166,39336,14580,18722,11654,5270,
16694,32929,18721,27991,5915, 1227, 35081,16213,41183,4699, 9929, 297, 25299,36111,15400,33509,3059, 2677, 35081,34199,1831, 5156, 16693,2728, 26554,14953,16212,
18702,34252,18701,36301,41183,31412,41183,29929,41183,20292,29596,36111,37383,33542,32960,20005,6479, 13982,33541,31411,3449, 37546,41182,36111,41182,39016,18720,
34251,33541,20039,25976,35080,36150,27990,37382,37382,34251,37978,34981,36509,24142,21438,36111,32929,31410,25298,32928,36110,37708,20004,35823,26110,41182,33090,
- 35080,24141,37382,35080,3336, 35080,35079,36110,859, 17646,31409,4191, 3881, 1459, 33541,17622,8554, 32928,41182,16211,32928,10, 5850, 3952, 3697, 12696,8710,
- 3484, 18700,2701, 25297,29595,41181,10371,41181,13587,13981,17621,15399,22243,20686,2436, 1494, 18165,37382,9013, 7099, 6426, 37381,176, 29594,14751,10593,248,
- 3753, 7917, 14579,18462,41181,12674,38560,26553,5893, 39016,36110,11986,38740,14681,7150, 938, 3930, 1941, 8835, 27283,25063,41181,32928,4873, 35079,41180,790,
+ 35080,24141,37382,35080,3336, 35080,35079,36110,859, 17646,31409,4191, 3881, 1459, 33541,17622,8554, 32928,41182,16211,32928,10, 5850, 3952, 3697, 12696,8710,
+ 3484, 18700,2701, 25297,29595,41181,10371,41181,13587,13981,17621,15399,22243,20686,2436, 1494, 18165,37382,9013, 7099, 6426, 37381,176, 29594,14751,10593,248,
+ 3753, 7917, 14579,18462,41181,12674,38560,26553,5893, 39016,36110,11986,38740,14681,7150, 938, 3930, 1941, 8835, 27283,25063,41181,32928,4873, 35079,41180,790,
39016,3413, 11367,36110,35079,37381,23209,7234, 12829,37381,39016,35079,26552,3074, 37596,31408,41180,13089,39015,36109,36109,24140,25296,14680,32927,36109,34251,
37381,14578,26551,9012, 36410,41180,37380,36109,6737, 24139,15398,33541,39015,20685,26379,14325,39015,41180,20684,32927,41179,23121,4447, 39015,41179,19413,12695,
38950,33540,9921, 18164,41179,35538,2309, 39195,18699,12620,11452,16645,23120,29593,39014,14582,175, 4467, 19878,36164,24521,5231, 11735,34251,15622,6622, 38778,
@@ -19929,23 +19924,23 @@ static const unsigned short Ranks[197839] =
12748,33539,41174,1442, 41173,913, 17161,10200,36107,9543, 2231, 26549,20036,16209,27989,1279, 18615,36277,27305,2396, 35517,4866, 684, 27768,4529, 41173,24134,
18718,37466,41173,16052,6878, 37318,34249,33989,41173,20681,39010,33539,41172,11451,20733,37378,12619,37378,41172,41172,15802,25294,37378,16208,19659,39413,35077,
27988,22240,39010,41172,39010,25402,37311,37377,17559,33538,35077,29589,37648,13315,27987,20035,23800,37377,37377,36106,34249,32927,37377,18696,30969,34112,41171,
- 25293,38063,34249,39009,17558,39009,17334,20788,22239,16644,41171,37376,41171,33503,33538,7374, 8082, 41171,31402,20680,35076,18162,27517,37376,6884, 589, 1294,
+ 25293,38063,34249,39009,17558,39009,17334,20788,22239,16644,41171,37376,41171,33503,33538,7374, 8082, 41171,31402,20680,35076,18162,27517,37376,6884, 589, 1294,
8216, 8999, 734, 11845,7852, 36106,35076,41170,12881,907, 37841,6455, 200, 23553,11985,14085,18695,13121,6073, 5666, 31207,27986,697, 21448,28804,4416, 25292,
41170,14577,35076,36106,210, 25994,13983,36582,20679,18623,15030,127, 155, 2646, 509, 12541,22170,5709, 28831,2084, 13120,6018, 402, 6310, 10370,655, 29896,
- 7887, 39009,25291,3553, 30379,23708,23937,29728,39009,33538,9724, 410, 18161,19769,10957,18694,32927,30528,27985,37376,3302, 9371, 33538,2202, 12355,37376,74,
+ 7887, 39009,25291,3553, 30379,23708,23937,29728,39009,33538,9724, 410, 18161,19769,10957,18694,32927,30528,27985,37376,3302, 9371, 33538,2202, 12355,37376,74,
32848,39008,1628, 41170,513, 39008,9502, 18853,19913,24350,12428,41170,11664,3702, 12132,35275,27193,17619,2918, 39058,37375,35719,21248,20111,37631,29588,15575,
12099,36106,6539, 9764, 1954, 38378,35076,41169,37375,10871,27994,23118,5440, 37244,20001,34921,34843,35792,6928, 29587,35723,25532,5134, 33470,4322, 25290,15801,
- 29586,25289,39008,32926,3732, 6724, 14272,27984,26548,3107, 41169,39008,33537,27983,33537,4956, 37375,15800,37912,36105,9723, 17282,22523,15220,35075,24133,5892,
- 34169,33537,29585,362, 1003, 7722, 102, 10816,17618,7748, 15502,23117,15870,1298, 5255, 7188, 17617,37322,14895,638, 17669,25795,7192, 39394,17723,2848, 895,
+ 29586,25289,39008,32926,3732, 6724, 14272,27984,26548,3107, 41169,39008,33537,27983,33537,4956, 37375,15800,37912,36105,9723, 17282,22523,15220,35075,24133,5892,
+ 34169,33537,29585,362, 1003, 7722, 102, 10816,17618,7748, 15502,23117,15870,1298, 5255, 7188, 17617,37322,14895,638, 17669,25795,7192, 39394,17723,2848, 895,
1423, 20131,8081, 39045,11113,15219,3671, 3708, 36105,2130, 11466,19510,14084,17616,2899, 11653,28281,1547, 15391,16690,5243, 5849, 13130,32926,41169,3304, 35075,
37375,16237,6417, 23116,3839, 41169,5988, 7233, 8871, 31401,39007,41168,37413,25288,17060,4352, 37854,13919,25287,37916,36026,7544, 37374,4298, 33537,34249,17557,
- 37082,12380,27982,13129,10566,17078,21350,19266,35937,16207,33955,31036,33974,7264, 26423,11652,16689,18693,18692,13119,20034,6366, 7986, 41168,845, 32926,7892,
- 18160,12880,39007,7098, 8553, 17615,37374,4415, 6755, 39007,325, 15218,29584,3008, 11076,19337,28004,18576,39007,30518,890, 31614,35586,22025,33706,517, 5914,
+ 37082,12380,27982,13129,10566,17078,21350,19266,35937,16207,33955,31036,33974,7264, 26423,11652,16689,18693,18692,13119,20034,6366, 7986, 41168,845, 32926,7892,
+ 18160,12880,39007,7098, 8553, 17615,37374,4415, 6755, 39007,325, 15218,29584,3008, 11076,19337,28004,18576,39007,30518,890, 31614,35586,22025,33706,517, 5914,
5445, 27186,1797, 10520,25579,33536,39006,14576,33536,106, 12323,8409, 37718,29185,38262,17614,307, 2301, 851, 15552,33501,5205, 35101,18717,33923,15161,35213,
18691,3371, 307, 30815,41168,34836,9463, 16908,14640,9348, 34531,821, 15869,13355,4422, 25106,39006,21644,6148, 17169,278, 3191, 3321, 22967,24528,39355,15933,
16265,20277,10369,31400,53, 9277, 25760,34930,20968,34449,8413, 8688, 27187,3199, 14200,35528,22210,20466,1274, 998, 33536,41168,3185, 29583,19336,17613,41167,
- 7764, 20033,17612,35075,4927, 12879,3913, 16688,20032,36105,12333,20031,2761, 41167,33536,34248,32928,10514,37374,2034, 417, 14083,2166, 18690,262, 16687,1445,
- 13118,468, 32926,18541,9893, 13533,29171,37374,3990, 2523, 13433,20241,16863,20030,7650, 34421,14062,10136,6253, 7543, 716, 33188,37373,41167,18159,20029,546,
+ 7764, 20033,17612,35075,4927, 12879,3913, 16688,20032,36105,12333,20031,2761, 41167,33536,34248,32928,10514,37374,2034, 417, 14083,2166, 18690,262, 16687,1445,
+ 13118,468, 32926,18541,9893, 13533,29171,37374,3990, 2523, 13433,20241,16863,20030,7650, 34421,14062,10136,6253, 7543, 716, 33188,37373,41167,18159,20029,546,
3862, 37373,5207, 11450,35102,20028,14632,1744, 2802, 15396,4804, 2243, 41167,27904,6148, 31399,32925,41166,39006,41166,36097,12914,36105,9357, 17556,41166,18689,
41166,52, 16686,661, 3822, 11366,172, 15868,17611,20027,18717,1493, 1806, 9850, 2653, 20133,35075,33854,7821, 339, 16657,23312,17610,35074,25745,9847, 29136,
41165,39006,39005,37373,35074,24925,4791, 36104,32925,35074,38393,4653, 16316,27107,13582,37342,31977,20365,36258,37913,18208,13586,11651,21437,36104,41165,36104,
@@ -19954,7 +19949,7 @@ static const unsigned short Ranks[197839] =
3108, 20852,8292, 9564, 3844, 5125, 33268,2318, 1422, 23625,9200, 4749, 8814, 39005,35074,39005,41164,14082,30, 20337,35073,39005,36104,30231,33535,31398,34235,
35886,7655, 6923, 12694,11984,6554, 1118, 13194,7886, 6701, 13585,31397,35237,32925,2890, 39056,36831,27981,4981, 20025,38799,9322, 625, 686, 24952,34553,28994,
1366, 26287,2237, 12322,13116,548, 2491, 19480,283, 37372,10363,26546,8651, 37372,8079, 37372,17554,158, 10815,34925,7567, 8407, 13115,10377,9347, 25431,18158,
- 326, 12131,37955,41164,8721, 34248,37371,17608,11377,34248,27980,37765,39004,39004,27979,33808,31903,38503,34481,15596,27064,15867,36971,30557,31269,6702, 9654,
+ 326, 12131,37955,41164,8721, 34248,37371,17608,11377,34248,27980,37765,39004,39004,27979,33808,31903,38503,34481,15596,27064,15867,36971,30557,31269,6702, 9654,
7578, 7746, 39391,22299,23508,33053,36868,39328,9950, 32769,12139,31780,37847,15350,28068,41164,39004,39004,41164,39003,32886,38897,41163,11983,33535,41163,34248,
19335,35073,33535,41163,13980,39003,41163,6631, 12511,38302,41162,36103,35949,35233,7542, 9639, 36103,13093,37371,34033,41162,10870,35073,6991, 35073,41162,35245,
39003,36103,13694,41162,33535,20030,36103,41161,35072,23283,13979,35418,13128,10060,6807, 41161,5768, 18157,36102,38539,38400,37371,10852,35072,33251,15939,22171,
@@ -19966,7 +19961,7 @@ static const unsigned short Ranks[197839] =
11899,11662,34446,29581,31037,35251,7662, 39401,33533,39001,41159,35570,29222,19435,13861,32900,20181,31738,12057,13973,21921,21079,8209, 12270,37369,12917,15880,
32912,38523,1568, 11364,18686,1426, 26544,38928,24697,29011,39160,5492, 26866,38915,35445,23899,332, 9636, 39001,36101,37757,4599, 24295,2439, 10207,19900,20094,
30436,36869,38792,11251,31385,22331,11843,33777,3118, 16294,21541,36435,15844,24561,24594,27784,17832,33767,16566,35768,33709,9345, 20023,3183, 23541,10267,25936,
- 846, 21450,24731,19776,14863,18442,30245,15561,9148, 28428,19737,6026, 26133,3264, 34679,36112,24229,3152, 38266,39149,21352,37414,35973,26288,34500,5497, 5908,
+ 846, 21450,24731,19776,14863,18442,30245,15561,9148, 28428,19737,6026, 26133,3264, 34679,36112,24229,3152, 38266,39149,21352,37414,35973,26288,34500,5497, 5908,
39148,20863,30139,38630,33533,37369,7842, 3537, 38693,36180,34480,21950,36914,8758, 37644,1477, 1453, 15785,14823,6102, 25897,28622,14555,34309,35781,36414,36686,
34832,35389,34996,8065, 7728, 9998, 7639, 35787,11199,31079,35244,2717, 21433,33106,26741,19349,14842,22817,12011,8887, 12425,11272,37199,39034,22172,10256,12496,
30555,18561,18412,28631,9000, 10305,16530,11365,26708,22271,2051, 28821,15945,32788,3160, 27169,28009,14489,32300,37736,8932, 24254,33344,37182,29563,6354, 15878,
@@ -19976,11 +19971,11 @@ static const unsigned short Ranks[197839] =
2545, 16261,10864,33314,25284,37368,29579,36101,9961, 36101,37287,39001,39000,4249, 22238,12051,36830,37372,8268, 37062,29578,1204, 30389,22237,8870, 36101,37368,
3534, 3462, 39112,41159,39000,41159,34247,41158,39000,32982,37950,41158,4415, 33533,13397,41158,25020,27974,37094,34247,37368,41158,35071,34752,2242, 3181, 20020,
37141,41157,22236,41157,39000,7019, 41157,18683,8571, 12564,34068,38999,38999,3244, 34895,37873,5485, 36935,38999,41157,35071,15174,10135,41156,38999,16949,20897,
- 19336,38209,36100,15865,38113,34594,35087,34375,32156,41156,36834,17934,14080,37090,38999,36811,32268,11616,32945,2839, 36086,38924,38998,18682,28954,15215,4750,
+ 19336,38209,36100,15865,38113,34594,35087,34375,32156,41156,36834,17934,14080,37090,38999,36811,32268,11616,32945,2839, 36086,38924,38998,18682,28954,15215,4750,
16654,11449,11412,152, 7232, 27483,27474,4522, 8140, 21021,37367,38998,3790, 36461,19333,25893,26543,37583,38998,27973,12130,38163,18156,9638, 33533,5703, 18155,
24294,37367,31396,31686,35624,35584,41156,17605,8138, 41156,41155,29141,36100,8833, 26411,16649,15864,2285, 30289,10358,38998,34246,37367,38997,38997,41155,35277,
41155,37367,1964, 38997,41155,4351, 25283,35690,7638, 37366,38997,41154,37366,11243,41154,25282,2191, 702, 39015,13021,10448,23685,35941,33532,20730,2411, 33532,
- 41154,5045, 33532,6630, 423, 7401, 31676,17218,74, 16852,986, 3758, 32878,22755,21806,20067,21892,20000,20019,7448, 36100,14618,34246,38996,41154,38996,8769,
+ 41154,5045, 33532,6630, 423, 7401, 31676,17218,74, 16852,986, 3758, 32878,22755,21806,20067,21892,20000,20019,7448, 36100,14618,34246,38996,41154,38996,8769,
8047, 31338,22235,38996,38996,21436,29718,10243,28268,24132,41153,38995,34246,26210,14006,41153,35070,38015,32924,37366,17803,16574,19332,35110,16206,36286,37366,
37365,38995,36100,17963,8075, 33298,22524,7263, 16643,29577,8552, 28798,26008,38533,34857,34473,6877, 18154,34246,4194, 23115,15394,886, 1142, 17801,10477,25090,
27711,23114,27164,9637, 26519,1232, 17604,13977,36054,41153,34245,35779,39375,22234,38995,32987,9785, 7763, 16642,9240, 20737,38995,36759,36099,6526, 16295,39385,
@@ -19988,20 +19983,20 @@ static const unsigned short Ranks[197839] =
34453,20145,29152,23113,39023,27746,29515,37365,2919, 36153,38808,34709,37365,36162,33532,41152,37490,34782,41152,352, 19830,37290,24131,36099,31394,36099,39410,
26542,37364,37375,27280,38031,32615,38265,41151,34138,27379,37604,6778, 18681,20018,20017,38994,2201, 29149,20016,32837,38129,15698,38993,35651,36586,21150,34132,
35380,19972,38993,1553, 38993,41151,13396,18153,1405, 33531,14346,33096,41151,24219,1115, 22955,8200, 26365,15572,29089,2504, 32776,18618,13763,32362,23785,20643,
- 41151,32773,2889, 26557,34496,18715,1285, 25281,36, 16505,3441, 15863,13584,28840,22158,26747,36596,38993,41150,27972,22233,41150,33531,50, 38735,12943,9023,
+ 41151,32773,2889, 26557,34496,18715,1285, 25281,36, 16505,3441, 15863,13584,28840,22158,26747,36596,38993,41150,27972,22233,41150,33531,50, 38735,12943,9023,
3544, 11982,13127,38992,27971,31393,26541,33531,41150,15862,34593,4096, 11088,18680,8832, 18679,18678,33531,20678,47, 19999,16204,10059,8540, 7874, 34245,29096,
- 16203,10362,21435,16641,13827,24130,36099,20015,20014,10133,17603,36692,31392,36098,36098,15029,2201, 24037,13813,41150,41149,15861,16680,20013,41149,34971,3383,
- 27970,35070,33041,13829,37448,27336,41149,33530,41149,19887,34069,22792,41148,39262,16679,15798,29576,41148,3180, 27293,38983,27350,36098,1703, 18677,15797,3177,
- 24129,14079,10813,1619, 7580, 24128,126, 4466, 18956,21053,26136,23649,29414,33049,36676,36563,16640,30014,37383,6909, 39124,37786,22709,15860,9576, 38454,7447,
+ 16203,10362,21435,16641,13827,24130,36099,20015,20014,10133,17603,36692,31392,36098,36098,15029,2201, 24037,13813,41150,41149,15861,16680,20013,41149,34971,3383,
+ 27970,35070,33041,13829,37448,27336,41149,33530,41149,19887,34069,22792,41148,39262,16679,15798,29576,41148,3180, 27293,38983,27350,36098,1703, 18677,15797,3177,
+ 24129,14079,10813,1619, 7580, 24128,126, 4466, 18956,21053,26136,23649,29414,33049,36676,36563,16640,30014,37383,6909, 39124,37786,22709,15860,9576, 38454,7447,
18570,35975,26632,11052,15583,34972,9122, 21434,37364,5052, 11677,37424,24553,2211, 38233,41148,10229,13583,41148,41147,35070,30007,33972,37364,41147,41147,38992,
17745,20012,37364,36098,41147,35314,37288,12129,9694, 10058,25083,14806,26423,10935,16678,844, 24127,7721, 36097,36097,3243, 22689,37363,41146,11448,33530,32924,
9668, 9500, 38992,35070,22232,33530,37363,38992,32924,11447,31391,29575,41146,36649,31390,38991,41146,37520,27969,38991,66, 20011,37109,30501,15358,799, 39121,
33703,7248, 38253,24835,33572,7793, 11909,20192,15859,26540,41146,18428,32888,8955, 2837, 41145,5108, 32075,9721, 16204,37413,8248, 725, 18676,34719,41145,35179,
29862,252, 11981,17076,38991,29574,1663, 9121, 37363,38991,37363,7810, 15858,3461, 22740,15857,34534,38990,41145,8968, 19174,30931,6254, 3262, 18895,21223,14124,
25503,21492,20359,25599,14758,9164, 26974,32223,23052,32831,18245,15117,27133,600, 6929, 7398, 4232, 9231, 3195, 26342,23699,24681,27729,36282,26539,39376,12875,
- 30049,35872,17107,36279,34385,7350, 41145,3929, 6529, 7758, 5617, 34771,4980, 34545,28298,33148,41144,27629,7985, 6912, 1922, 5299, 39048,15028,11049,6138, 9763,
+ 30049,35872,17107,36279,34385,7350, 41145,3929, 6529, 7758, 5617, 34771,4980, 34545,28298,33148,41144,27629,7985, 6912, 1922, 5299, 39048,15028,11049,6138, 9763,
16677,9011, 18675,30429,15212,33235,7761, 30561,34101,15149,34421,38793,36450,17212,26537,24491,22645,3578, 10410,22141,28078,31517,32980,35500,20010,32527,41144,
- 23430,9065, 33340,41144,8048, 24126,38990,8558, 33431,35448,8191, 25280,34172,38470,37362,37362,33530,32923,19998,37362,35069,32923,7076, 12378,29128,3989, 3029,
+ 23430,9065, 33340,41144,8048, 24126,38990,8558, 33431,35448,8191, 25280,34172,38470,37362,37362,33530,32923,19998,37362,35069,32923,7076, 12378,29128,3989, 3029,
28293,29667,25529,14572,38544,957, 41144,37362,28055,37361,35721,25279,38990,4871, 35777,34306,35309,38479,12321,10355,4155, 32342,37430,5617, 15076,38341,32281,
33445,10869,16639,5568, 34396,36078,36423,16459,29141,11648,12692,17602,41143,41143,14324,1866, 7760, 39283,10860,12878,12377,17055,14323,36638,18424,188, 30872,
2013, 2645, 18674,37478,38065,30442,1493, 8551, 35831,1205, 27248,21326,30792,38990,36494,24421,21898,10439,2836, 35296,37361,24125,38989,31389,10812,36097,41143,
@@ -20011,18 +20006,18 @@ static const unsigned short Ranks[197839] =
26502,10868,34916,35507,36096,34897,27967,36096,41140,35068,28580,1758, 32923,36341,13692,33529,38988,1, 244, 191, 20009,30, 131, 8194, 20310,24124,33529,
34180,29894,37360,35068,37360,41140,36096,38810,6457, 38988,3179, 4790, 38988,35068,16202,12128,26537,27, 5546, 15393,1404, 37360,37360,34245,1178, 36096,33528,
2293, 38988,34084,32923,41139,41139,6736, 21679,10867,19997,5177, 12507,9927, 11277,35068,33528,28637,10057,37359,14679,41139,36095,3037, 6990, 16675,11363,31109,
- 20, 21761,9010, 31387,7787, 1591, 20621,19434,41139,380, 194, 1606, 37359,11980,33488,36707,6922, 17075,25278,38987,17553,38987,35067,2466, 22416,27098,683,
+ 20, 21761,9010, 31387,7787, 1591, 20621,19434,41139,380, 194, 1606, 37359,11980,33488,36707,6922, 17075,25278,38987,17553,38987,35067,2466, 22416,27098,683,
7446, 7229, 23112,3175, 17601,18673,13379,33810,38987,41138,41138,9762, 13126,36975,35067,20008,21190,13582,37542,4754, 11647,41138,38987,41138,36102,12255,22912,
38382,14202,17833,18471,41137,38986,41137,35351,36687,24456,38986,37764,37359,37444,23928,36032,26536,41137,35067,12052,38418,36828,19121,12667,22200,7535, 20608,
26300,771, 31799,12408,8969, 33354,29573,9707, 3374, 35685,37359,21992,9524, 35938,18125,41137,33057,4021, 11087,38986,34550,31158,8467, 41136,5704, 37358,33528,
- 3612, 34310,22376,35266,3840, 34700,4343, 3071, 15607,34532,4748, 15027,34244,32799,37358,28379,21080,38099,19470,2753, 27547,34446,37147,3459, 2644, 23584,2533,
+ 3612, 34310,22376,35266,3840, 34700,4343, 3071, 15607,34532,4748, 15027,34244,32799,37358,28379,21080,38099,19470,2753, 27547,34446,37147,3459, 2644, 23584,2533,
6921, 15825,35304,2835, 11362,13581,38588,19180,35289,8064, 3495, 12300,38986,27043,22522,16811,18672,15964,29048,3544, 10775,2012, 25839,41136,37277,26535,38985,
2798, 37690,41136,41136,36938,32922,10361,38227,8284, 36095,19367,16915,3388, 1836, 26939,38800,36095,35110,9926, 14571,38321,33528,41135,38496,38985,2752, 41135,
37358,22231,3533, 20454,41135,22230,34244,34244,36095,38985,34976,20478,33942,38505,38985,22789,22925,41135,38984,34244,35543,32922,41134,8626, 26790,37014,37964,
28482,38646,18671,13976,33938,34170,27882,32795,17209,35408,38734,41134,27326,27032,35540,8615, 339, 27760,3458, 174, 20599,13770,22434,14786,10237,10339,14810,
13044,26940,11605,8940, 16281,17033,17074,36094,2341, 15245,27966,34838,33000,6298, 6738, 15691,14933,17774,32852,2539, 3098, 6239, 31805,28924,21499,23814,26890,
38136,8998, 31386,37358,31385,38422,38984,41134,8869, 38984,41134,41133,27965,41133,37757,32922,32922,41133,37357,33527,27964,37357,16638,33527,34163,15392,33527,
- 19349,37357,37357,17552,35067,38984,36094,1905, 15874,25862,41133,24832,37356,788, 8868, 173, 4096, 26534,31384,636, 26533,37356,24123,38983,936, 949, 9636,
+ 19349,37357,37357,17552,35067,38984,36094,1905, 15874,25862,41133,24832,37356,788, 8868, 173, 4096, 26534,31384,636, 26533,37356,24123,38983,936, 949, 9636,
17600,38983,3387, 16086,41132,34243,36094,35066,38983,10591,30892,35506,41132,27963,35066,41132,41132,36094,16933,32921,15904,36093,19141,41131,41131,29572,37356,
30289,12551,38983,24691,37356,33193,32921,37355,20007,35730,37355,41131,10513,39213,35094,26044,41131,34748,23111,4895, 37355,36093,28039,39025,38982,37114,38088,
36093,41130,38982,33527,14867,20529,32127,32996,33313,17534,22229,35105,16201,16637,5517, 37355,27962,31383,33526,33526,34367,38982,18388,41130,16200,37354,41130,
@@ -20046,7 +20041,7 @@ static const unsigned short Ranks[197839] =
37347,32918,35063,38972,36088,13974,1893, 17071,37347,41116,41116,35063,41116,35063,36088,41116,33525,34239,36088,17771,19902,20005,13394,34239,23675,12727,11242,
6498, 15213,36977,38972,27961,36088,33525,5891, 34017,34238,959, 8252, 32918,15856,35063,33525,15025,35062,35593,23106,41115,37347,41115,38972,38971,35062,19996,
31376,32782,22370,37347,41115,38971,10693,1067, 19329,20004,35062,41115,3268, 7541, 7350, 38971,36087,31375,9120, 11051,41114,35482,737, 19328,41114,15855,23105,
- 38971,35062,36087,37346,36087,9635, 28278,37346,33524,37346,34207,34238,12723,33808,41114,41114,20674,21430,32241,31586,41113,36087,33327,24653,6553, 1621, 1152,
+ 38971,35062,36087,37346,36087,9635, 28278,37346,33524,37346,34207,34238,12723,33808,41114,41114,20674,21430,32241,31586,41113,36087,33327,24653,6553, 1621, 1152,
41113,36806,38934,5967, 8315, 32051,23104,14570,37019,3835, 35061,38770,37346,3532, 33591,36086,14857,13744,2177, 32918,33524,41113,23103,9499, 1849, 13393,29568,
27960,20673,20672,41113,31374,33206,37345,18152,19995,31373,21429,37125,38284,16198,1743, 36086,36509,34238,3742, 17598,37345,18151,735, 34549,10449,20003,35061,
38970,15389,27628,35061,8768, 41112,34060,19327,38970,41112,36499,32917,33078,37345,6876, 17715,36086,37345,18089,34651,12127,1759, 21031,28945,36622,2672, 13580,
@@ -20060,18 +20055,18 @@ static const unsigned short Ranks[197839] =
32358,23967,34804,2710, 5922, 18839,31697,36085,22224,10056,34237,38966,2827, 41106,27958,41105,38075,41105,11361,3957, 41105,22117,38966,37340,31370,23667,38892,
31369,6068, 17597,36084,36084,34236,37340,20671,35253,32916,41105,41104,4036, 12047,36100,35550,29566,38966,38965,29565,41104,36084,14078,37340,1832, 37340,19325,
27957,34236,34236,23374,396, 4640, 38638,34000,1620, 12359,5568, 18710,35059,31368,28383,36084,37339,15788,13312,33173,17596,9009, 32916,33522,20670,6628, 32916,
- 36083,32916,37339,4012, 14676,33522,41104,4325, 31367,41104,26525,32853,23102,33522,37339,35059,35133,36083,17595,35058,39027,38965,34236,35058,14675,32987,7230,
- 11310,7194, 18816,3073, 22180,41103,28391,27351,37339,27956,41103,18669,19993,35058,9922, 1074, 32282,31366,20002,31826,13579,13578,4521, 20982,32299,27367,2939,
+ 36083,32916,37339,4012, 14676,33522,41104,4325, 31367,41104,26525,32853,23102,33522,37339,35059,35133,36083,17595,35058,39027,38965,34236,35058,14675,32987,7230,
+ 11310,7194, 18816,3073, 22180,41103,28391,27351,37339,27956,41103,18669,19993,35058,9922, 1074, 32282,31366,20002,31826,13579,13578,4521, 20982,32299,27367,2939,
7874, 19322,38364,32649,41103,32104,37468,37338,20669,41103,22267,20001,21807,41102,24117,38965,21428,8997, 35058,36083,33522,41102,41102,8549, 7761, 2011, 41102,
32289,6416, 18668,37990,34235,38965,35057,38964,35057,24655,33786,35979,34148,37628,38919,34240,38730,33521,31365,18468,23457,30506,38594,30520,38746,36083,41101,
32784,21996,19835,41101,37338,33061,33949,16669,13566,38593,31384,38964,36082,41101,36082,33521,31746,33521,17011,15706,36082,34109,32647,38147,18709,41101,35968,
27955,37338,41100,4183, 35780,21927,38932,41100,25272,1091, 41100,24218,41100,12376,41099,24116,38007,4376, 2354, 38964,25271,29564,38964,37086,20277,32915,17685,
- 36075,1104, 15101,1476, 18667,37338,35438,37337,36082,41099,41099,11898,38963,41099,19324,12615,23101,11241,27954,18708,36081,41098,37337,34235,13596,37337,4633,
- 12536,26175,38963,37337,8418, 30314,29558,41098,611, 13382,22903,5403, 37412,41098,41098,41097,36081,41097,37336,21090,1533, 14954,41097,1141, 12188,3466, 3586,
+ 36075,1104, 15101,1476, 18667,37338,35438,37337,36082,41099,41099,11898,38963,41099,19324,12615,23101,11241,27954,18708,36081,41098,37337,34235,13596,37337,4633,
+ 12536,26175,38963,37337,8418, 30314,29558,41098,611, 13382,22903,5403, 37412,41098,41098,41097,36081,41097,37336,21090,1533, 14954,41097,1141, 12188,3466, 3586,
38872,3531, 8007, 13111,14137,37836,27438,2174, 37609,2760, 20000,9089, 12398,35301,8599, 5913, 6988, 13577,38474,33059,37259,31458,22539,8050, 13082,15853,29325,
38524,41097,1550, 1370, 14540,16191,35057,27953,41096,15212,10604,37336,27952,17594,32062,34235,36081,6533, 29563,35057,29512,31419,15770,21633,29193,41096,37336,
34235,2172, 5684, 28190,30358,16171,32915,41096,38963,35595,36081,39292,41096,38963,36080,38522,34933,35056,35558,32776,37336,19572,37335,34234,41095,31291,34234,
- 34883,26202,16714,16067,38962,33850,41095,38146,34647,22593,30590,8548, 38962,41095,27788,25560,25096,29521,29796,18540,38898,13153,41095,32858,17239,14939,3739,
+ 34883,26202,16714,16067,38962,33850,41095,38146,34647,22593,30590,8548, 38962,41095,27788,25560,25096,29521,29796,18540,38898,13153,41095,32858,17239,14939,3739,
37335,41094,35617,38044,33205,29562,4603, 41094,11240,36080,36080,32658,38962,31364,35056,38962,41094,38961,35056,22223,23917,38961,19999,19992,32915,32915,41094,
38961,16197,25270,7309, 29932,8649, 35056,41093,33521,12375,38961,32914,25269,26524,38960,18862,31363,20668,30229,38960,32914,22838,25268,38642,12111,37335,39162,
8006, 41093,37335,37334,8648, 41093,38969,1679, 21427,34234,1969, 38960,29592,30090,31344,38960,41093,34234,11050,1864, 37408,6330, 29561,33507,32204,18279,38959,
@@ -20079,7 +20074,7 @@ static const unsigned short Ranks[197839] =
38959,35310,35055,41092,31362,10692,25266,41092,3916, 38760,37334,13973,38958,41091,34232,24115,41091,35448,38958,36079,41091,32913,34278,36079,35055,29559,18666,
38958,36824,41091,15852,16926,27650,37072,1886, 23103,38136,31099,34335,34615,36078,15460,37333,26523,33520,36078,20667,30824,16655,41090,17070,29558,37333,24961,
36052,14319,26302,29557,35054,18150,34232,33520,36078,38958,11239,41090,26996,37333,37333,35443,36078,23100,21994,38957,30046,13282,13824,37501,5201, 2687, 24062,
- 700, 21029,15735,29696,32797,19278,14703,2053, 25216,20486,2174, 4417, 6483, 20812,31519,21303,13429,4864, 1562, 28753,6723, 9325, 5692, 25108,7575, 28825,57,
+ 700, 21029,15735,29696,32797,19278,14703,2053, 25216,20486,2174, 4417, 6483, 20812,31519,21303,13429,4864, 1562, 28753,6723, 9325, 5692, 25108,7575, 28825,57,
8657, 13834,13894,25404,31045,39, 16664,2328, 13347,3843, 30170,27740,28240,12750,31206,21026,16616,31120,8117, 17272,38957,18707,19660,8789, 18706,20824,34259,
26613,5521, 38957,37332,13690,18951,38957,25972,19991,31643,36009,41090,32913,34232,33520,16423,22876,8474, 25073,18165,8582, 7418, 19571,7725, 8108, 32586,29917,
4078, 22433,25409,18878,8679, 9784, 19998,12513,36366,33730
@@ -20087,2727 +20082,2728 @@ static const unsigned short Ranks[197839] =
#define SizeChildMapEntry 8
static const unsigned char ChildMap[13547*8] =
{
- 251,244,63, 152,255,255,255,7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 64, 0, 0, 0, 0, 128,0,
- 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
- 16, 128,63, 0, 255,255,127,1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 56, 2, 0,
- 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
- 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 8, 0, 0, 0, 0, 0, 17, 0, 8, 0, 0, 0, 0, 0, 17, 73, 18, 0,
- 0, 0, 0, 0, 14, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 129,73, 0, 0,
- 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 17, 64, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 1, 48, 0, 0, 0, 0, 0, 0, 1, 65, 18, 0,
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 16, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 16, 64, 0, 0,
- 0, 0, 0, 0, 16, 65, 2, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 8, 72, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0, 17, 65, 16, 0, 0, 0, 0, 0, 0, 128,34, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 64, 0, 4, 0, 0, 0, 0, 0, 0, 24, 88, 0,
- 0, 0, 0, 0, 1, 64, 16, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 17, 73, 0, 0, 0, 0, 0, 0, 8, 32, 4, 0, 0, 0, 0, 0, 32, 0, 8, 0,
- 0, 0, 0, 0, 96, 4, 40, 0, 0, 0, 0, 0, 4, 96, 102,0, 0, 0, 0, 0, 1, 65, 16, 0, 0, 0, 0, 0, 64, 36, 4, 0, 0, 0, 0, 0, 8, 0, 14, 0,
- 0, 0, 0, 0, 25, 64, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 32, 74, 0, 0, 0, 0, 0, 32, 168,58, 0,
- 0, 0, 0, 0, 8, 0, 0, 1, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 16, 72, 18, 0, 0, 0, 0, 0, 1, 64, 0, 0,
- 0, 0, 0, 0, 0, 136,68, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 16, 65, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 4, 0, 16, 1,
- 0, 0, 0, 0, 149,209,24, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 36, 48, 16, 0,
- 0, 0, 0, 0, 0, 32, 10, 0, 0, 0, 0, 0, 145,65, 66, 0, 0, 0, 0, 0, 17, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 6, 0,
- 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 145,65, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
- 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 17, 65, 0, 1, 0, 0, 0, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 8, 8, 0, 0,
- 0, 0, 0, 0, 0, 16, 2, 0, 64, 0, 0, 0, 0, 0, 8, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 1, 0, 0, 1, 0, 133,36, 8, 0,
- 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 128,1, 0, 244,63, 0, 12, 200,86, 0,
- 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 112,63, 0, 0, 0, 4, 0, 0, 240,62, 0, 0, 0, 0, 0, 0, 48, 40, 0, 1, 0, 0, 0,
- 0, 112,62, 0, 1, 0, 8, 0, 0, 48, 8, 0, 1, 0, 1, 2, 0, 48, 8, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 64, 0, 0,
- 0, 0, 32, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0, 0, 0, 0, 176,32, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0,
- 0, 80, 8, 0, 2, 2, 0, 0, 0, 16, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
- 0, 240,49, 0, 0, 0, 8, 0, 0, 224,61, 0, 0, 0, 0, 0, 0, 96, 16, 0, 8, 0, 0, 0, 0, 48, 62, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
- 0, 240,63, 0, 0, 0, 0, 0, 0, 240,35, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
- 0, 0, 40, 0, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 128,16, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 0, 0, 0, 0, 80, 16, 0, 0, 0, 0, 0, 0, 144,0, 0, 0, 0, 0, 0, 0, 48, 19, 0, 0, 0, 0, 0,
- 0, 224,63, 0, 0, 0, 0, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 160,36, 0, 0, 0, 0, 0, 0, 144,59, 0, 0, 0, 0, 0,
- 0, 112,63, 0, 0, 0, 0, 0, 0, 192,63, 0, 0, 0, 0, 0, 0, 208,30, 0, 0, 0, 0, 0, 0, 96, 13, 0, 0, 0, 0, 0, 0, 208,63, 0, 0, 0, 0, 0,
- 0, 32, 54, 0, 0, 0, 0, 0, 0, 240,61, 0, 0, 0, 0, 0, 0, 144,13, 0, 0, 0, 0, 0, 0, 160,14, 0, 0, 0, 0, 0, 0, 176,47, 0, 0, 0, 0, 0,
- 0, 16, 1, 0, 0, 0, 0, 0, 0, 128,44, 0, 0, 0, 0, 0, 0, 160,63, 0, 0, 0, 0, 0, 0, 128,17, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0,
- 0, 208,48, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 64, 0, 0, 1, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0,
- 0, 240,0, 0, 0, 0, 0, 0, 0, 48, 16, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 16, 57, 0, 0, 0, 0, 0, 0, 48, 22, 0, 0, 0, 0, 0,
- 0, 128,18, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 8, 0, 0, 32, 24, 0, 0, 128,0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
- 0, 0, 32, 0, 0, 4, 0, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 2, 0, 255,63, 0, 255,255,255,3, 0, 0, 2, 0, 24, 0, 0, 0,
- 0, 32, 0, 0, 0, 4, 4, 0, 0, 240,127,0, 13, 145,12, 0, 0, 240,63, 0, 0, 16, 12, 1, 0, 16, 0, 0, 0, 16, 8, 0, 0, 48, 0, 0, 0, 0, 4, 0,
- 0, 240,8, 0, 0, 0, 4, 0, 0, 224,34, 0, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
- 0, 208,33, 0, 0, 32, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 2, 0, 0, 128,0, 0, 0, 0, 8, 0,
- 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 16, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 129,0, 0, 0, 0, 0, 0, 0, 0, 12, 0,
- 0, 0, 0, 0, 1, 128,0, 0, 0, 240,63, 0, 7, 134,9, 0, 0, 112,23, 0, 0, 16, 12, 0, 0, 240,10, 0, 1, 8, 13, 2, 0, 96, 33, 0, 1, 0, 1, 0,
- 0, 96, 0, 0, 1, 0, 1, 2, 0, 96, 0, 0, 1, 0, 65, 2, 0, 32, 16, 0, 1, 0, 1, 0, 0, 32, 0, 0, 1, 0, 0, 0, 0, 128,32, 0, 0, 0, 0, 0,
- 0, 128,0, 0, 1, 0, 1, 0, 0, 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 224,3, 0, 0, 0, 8, 0, 0, 160,0, 0, 0, 0, 1, 0,
- 0, 48, 3, 0, 1, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 128,1, 0, 0, 0, 8, 0, 0, 96, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0,
- 0, 32, 12, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 32, 32, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0,
- 0, 0, 16, 0, 1, 0, 8, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 240,63, 0, 17, 153,13, 0, 0, 224,7, 0, 8, 16, 8, 0,
- 0, 0, 10, 0, 0, 0, 0, 0, 0, 240,3, 0, 16, 0, 4, 0, 0, 160,0, 0, 1, 0, 1, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 160,0, 0, 1, 0, 1, 2,
- 0, 32, 1, 0, 0, 0, 0, 0, 0, 160,3, 0, 0, 32, 0, 0, 0, 128,1, 0, 0, 0, 0, 0, 0, 242,63, 0, 187,158,239,2, 0, 48, 32, 0, 0, 0, 0, 0,
- 0, 176,9, 0, 49, 0, 69, 2, 0, 0, 0, 0, 0, 0, 65, 0, 0, 160,2, 0, 0, 0, 0, 0, 0, 224,0, 0, 0, 0, 0, 0, 0, 192,1, 0, 0, 0, 0, 0,
- 0, 16, 8, 0, 0, 0, 0, 0, 0, 192,5, 0, 0, 0, 0, 0, 0, 48, 3, 0, 9, 9, 69, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 65, 0,
- 0, 240,63, 0, 1, 4, 3, 2, 0, 64, 1, 0, 0, 0, 0, 0, 0, 128,3, 0, 0, 0, 0, 0, 4, 112,63, 0, 127,63, 239,2, 0, 128,0, 0, 0, 1, 0, 0,
- 0, 240,62, 4, 255,255,239,3, 0, 112,56, 0, 11, 30, 127,2, 0, 112,48, 0, 13, 25, 69, 2, 64, 116,48, 0, 127,255,239,3, 0, 16, 32, 0, 9, 216,69, 2,
- 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 128,2, 0, 0, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8, 0,
- 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 40, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 28, 0, 0, 0, 0, 0,
- 0, 16, 28, 0, 0, 0, 0, 0, 0, 160,1, 0, 3, 8, 4, 0, 0, 0, 0, 0, 4, 0, 32, 0, 0, 32, 0, 0, 8, 0, 0, 0, 0, 128,0, 0, 2, 64, 0, 0,
- 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 16, 16, 0,
- 0, 0, 0, 0, 0, 0, 132,0, 0, 160,0, 0, 1, 0, 65, 0, 0, 32, 0, 0, 0, 0, 64, 0, 0, 32, 0, 0, 0, 0, 1, 0, 0, 32, 0, 0, 17, 0, 0, 0,
- 0, 160,1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 24, 0, 2, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 32, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, 0, 64, 0,
- 0, 0, 0, 0, 0, 1, 0, 2, 0, 144,18, 0, 4, 0, 8, 0, 0, 128,12, 0, 0, 0, 0, 0, 0, 80, 23, 0, 4, 0, 72, 0, 0, 32, 24, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 0, 8, 0, 0, 64, 2, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 16, 8, 0, 0, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 24, 0, 0,
- 0, 128,0, 0, 0, 0, 64, 0, 0, 160,0, 0, 17, 0, 0, 0, 0, 240,63, 0, 0, 0, 8, 0, 0, 192,5, 0, 128,2, 12, 0, 0, 192,3, 0, 0, 0, 4, 0,
- 0, 32, 4, 0, 0, 0, 0, 0, 0, 128,7, 0, 32, 32, 0, 0, 0, 128,6, 0, 0, 0, 0, 0, 0, 96, 0, 0, 1, 0, 2, 0, 0, 64, 4, 0, 0, 4, 8, 0,
- 0, 64, 18, 0, 1, 0, 1, 0, 0, 96, 14, 0, 0, 0, 8, 0, 0, 96, 52, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0, 114,58, 0, 1, 0, 0, 0,
- 0, 64, 36, 0, 0, 0, 8, 0, 0, 32, 32, 0, 0, 0, 8, 0, 0, 240,63, 0, 0, 0, 60, 0, 0, 192,14, 0, 0, 0, 8, 0, 0, 32, 7, 0, 0, 0, 4, 0,
- 0, 0, 18, 0, 0, 32, 0, 0, 0, 176,0, 0, 0, 0, 2, 0, 0, 16, 0, 0, 0, 0, 4, 0, 0, 16, 1, 0, 0, 0, 8, 0, 0, 192,4, 0, 0, 0, 8, 0,
- 0, 128,8, 0, 0, 0, 0, 0, 0, 240,58, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 144,32, 0, 0, 0, 0, 0, 0, 128,2, 0, 0, 0, 0, 0,
- 0, 32, 16, 0, 0, 0, 4, 0, 0, 192,2, 0, 0, 0, 8, 0, 0, 240,63, 0, 8, 0, 12, 0, 0, 112,10, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 16, 4, 0,
- 0, 80, 6, 0, 0, 32, 4, 0, 0, 16, 2, 0, 64, 32, 0, 0, 0, 240,13, 0, 0, 0, 2, 0, 0, 80, 0, 0, 0, 0, 24, 0, 0, 16, 3, 0, 0, 16, 8, 0,
- 0, 144,32, 0, 0, 0, 8, 0, 0, 240,61, 0, 0, 0, 8, 0, 0, 16, 8, 0, 0, 0, 4, 0, 0, 112,19, 0, 1, 0, 1, 0, 0, 112,51, 0, 1, 0, 1, 2,
- 0, 32, 3, 0, 0, 0, 0, 0, 0, 240,63, 0, 32, 16, 8, 0, 0, 16, 2, 0, 0, 0, 8, 0, 0, 64, 8, 0, 0, 0, 4, 0, 0, 16, 2, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 0, 2, 0, 0, 144,8, 0, 0, 0, 8, 0, 0, 16, 4, 0, 0, 0, 8, 0, 0, 16, 32, 0, 0, 0, 8, 0, 0, 48, 46, 0, 0, 0, 8, 0,
- 0, 32, 0, 0, 9, 0, 0, 0, 0, 64, 24, 0, 0, 0, 4, 0, 0, 48, 22, 0, 0, 32, 0, 0, 0, 48, 12, 0, 0, 0, 8, 0, 0, 144,0, 0, 0, 0, 8, 0,
- 0, 240,63, 0, 0, 32, 8, 0, 0, 48, 36, 0, 8, 0, 8, 0, 0, 80, 0, 0, 0, 0, 4, 0, 0, 16, 26, 0, 0, 32, 0, 0, 0, 16, 1, 0, 0, 0, 2, 0,
- 0, 48, 0, 0, 0, 0, 8, 0, 0, 80, 1, 0, 0, 0, 8, 0, 0, 80, 0, 0, 0, 0, 8, 0, 0, 240,63, 0, 8, 16, 8, 0, 0, 144,4, 0, 0, 0, 12, 0,
- 0, 32, 0, 0, 0, 0, 4, 0, 0, 48, 16, 0, 0, 32, 0, 0, 0, 16, 58, 0, 0, 0, 2, 0, 0, 48, 51, 0, 0, 0, 8, 0, 0, 16, 0, 0, 4, 0, 0, 0,
- 0, 16, 2, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 112,0, 0, 0, 0, 4, 0, 0, 112,0, 0, 0, 0, 0, 0, 0, 16, 12, 0, 0, 0, 0, 0,
- 0, 176,0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 112,2, 0, 0, 0, 0, 0, 0, 112,4, 0, 0, 17, 0, 0, 0, 208,0, 0, 0, 0, 0, 0,
- 0, 112,32, 0, 4, 0, 0, 0, 0, 240,47, 0, 0, 0, 8, 0, 0, 80, 32, 0, 0, 0, 4, 0, 0, 240,1, 0, 0, 0, 0, 0, 0, 80, 2, 0, 0, 0, 0, 0,
- 0, 48, 4, 0, 64, 0, 0, 0, 0, 64, 0, 0, 15, 184,22, 0, 0, 64, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 136,0, 4, 0, 0, 0, 0, 0, 128,0, 64, 0, 0, 0, 0, 0, 64, 0, 12, 0, 0, 0, 0, 0, 19, 73, 18, 0,
- 0, 0, 0, 0, 10, 41, 14, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 8, 0, 0, 0, 0, 0, 64, 8, 10, 0, 0, 0, 0, 0, 40, 16, 8, 0,
- 0, 0, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 66, 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, 0, 10, 8, 12, 0, 0, 0, 0, 0, 8, 0, 4, 0,
- 0, 0, 0, 0, 149,72, 2, 0, 0, 0, 0, 0, 0, 16, 6, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 8, 38, 0, 0, 0, 0, 0, 38, 80, 66, 0,
- 0, 0, 0, 0, 0, 132,0, 0, 0, 0, 0, 0, 17, 1, 0, 1, 0, 0, 0, 0, 4, 0, 0, 2, 0, 0, 0, 0, 25, 65, 2, 0, 0, 0, 0, 0, 8, 44, 96, 0,
- 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 64, 0, 2, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 0, 136,0, 0,
- 0, 0, 0, 0, 1, 1, 16, 0, 0, 0, 0, 0, 25, 8, 132,0, 0, 0, 0, 0, 49, 73, 18, 0, 0, 0, 0, 0, 0, 64, 0, 1, 0, 0, 0, 0, 17, 1, 0, 0,
- 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 81, 65, 18, 0, 0, 0, 0, 0, 2, 32, 8, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 1, 32, 2, 0,
- 0, 0, 0, 0, 145,64, 144,0, 0, 0, 0, 0, 0, 144,66, 0, 0, 0, 0, 0, 8, 8, 2, 0, 0, 0, 0, 0, 4, 64, 0, 0, 0, 0, 0, 0, 1, 8, 2, 0,
- 0, 0, 0, 0, 4, 48, 26, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 4, 33, 2, 0, 0, 0, 32, 0, 17, 66, 16, 0, 0, 0, 0, 0, 4, 20, 4, 0,
- 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 32, 32, 6, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 128,32, 6, 0, 0, 0, 0, 0, 144,0, 0, 0,
- 0, 0, 0, 0, 17, 37, 0, 0, 0, 0, 0, 0, 0, 40, 8, 0, 0, 0, 0, 0, 17, 73, 16, 0, 0, 0, 0, 0, 64, 0, 8, 0, 0, 0, 0, 0, 64, 32, 8, 0,
- 0, 0, 0, 0, 17, 81, 16, 0, 0, 0, 0, 0, 72, 32, 46, 0, 0, 0, 0, 0, 64, 33, 0, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 24, 2, 0,
- 0, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0, 128,4, 0, 0, 0, 0, 0, 0, 0, 104,26, 0, 0, 0, 0, 0, 16, 4, 12, 0, 0, 0, 0, 0, 129,0, 0, 0,
- 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 32, 0, 6, 0, 0, 0, 0, 0, 17, 33, 4, 0, 0, 0, 0, 0, 0, 72, 2, 0, 0, 64, 0, 0, 145,73, 22, 0,
- 0, 0, 0, 0, 4, 48, 12, 0, 0, 0, 0, 0, 128,1, 0, 0, 0, 0, 0, 0, 1, 160,8, 0, 0, 0, 0, 0, 0, 72, 0, 2, 0, 0, 0, 0, 0, 64, 66, 0,
- 0, 224,0, 0, 1, 0, 65, 0, 0, 128,0, 0, 1, 0, 69, 0, 0, 64, 0, 0, 0, 0, 4, 3, 1, 208,0, 4, 0, 0, 196,2, 0, 0, 0, 0, 12, 0, 4, 0,
- 0, 64, 0, 0, 16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 2, 0, 0, 96, 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 6, 33, 0, 0, 0, 0, 0, 0, 8, 32, 0, 0,
- 0, 0, 0, 0, 6, 0, 4, 0, 0, 0, 0, 0, 16, 0, 4, 1, 0, 32, 0, 0, 149,249,24, 0, 0, 0, 0, 0, 0, 25, 2, 0, 0, 0, 0, 0, 0, 64, 10, 0,
- 0, 0, 0, 0, 4, 0, 130,0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 0, 16, 24, 0, 0, 0, 0, 0, 0, 4, 128,0, 0,
- 0, 0, 0, 0, 17, 0, 16, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 16, 136,32, 0, 0, 0, 0, 0, 68, 176,2, 0, 0, 0, 0, 0, 4, 4, 0, 0,
- 0, 0, 0, 0, 145,65, 18, 0, 0, 0, 0, 0, 0, 32, 132,0, 0, 0, 0, 0, 16, 64, 16, 0, 0, 0, 0, 0, 96, 16, 8, 0, 0, 0, 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 176,20, 0, 0, 0, 0, 0, 17, 65, 0, 0, 0, 0, 0, 0, 8, 16, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0,
- 0, 64, 0, 0, 129,65, 64, 0, 0, 0, 0, 0, 16, 0, 65, 0, 0, 0, 0, 0, 0, 40, 0, 2, 0, 0, 0, 0, 0, 32, 12, 0, 0, 64, 0, 0, 1, 0, 138,0,
- 0, 0, 0, 0, 17, 0, 0, 1, 0, 64, 0, 0, 0, 0, 128,2, 0, 254,63, 0, 255,189,109,1, 0, 16, 0, 0, 0, 32, 0, 0, 0, 96, 4, 0, 0, 4, 0, 0,
- 0, 240,15, 0, 8, 16, 12, 0, 0, 240,55, 0, 0, 16, 12, 0, 0, 48, 0, 0, 0, 2, 4, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 0, 16, 0, 0, 0, 112,36, 0, 0, 2, 4, 0, 0, 240,51, 0, 4, 0, 4, 0, 0, 160,6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 1,
- 0, 240,16, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 32, 3, 0, 0, 0, 1, 0, 0, 240,31, 0, 0, 32, 9, 0, 0, 224,13, 0, 0, 0, 0, 0,
- 0, 224,17, 0, 0, 0, 0, 0, 0, 128,5, 0, 0, 0, 0, 0, 0, 96, 7, 0, 0, 0, 0, 0, 0, 64, 22, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0,
- 0, 240,27, 0, 8, 2, 70, 0, 0, 80, 19, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0,
- 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 240,30, 0, 66, 136,136,0, 0, 32, 5, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 128,0, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 112,48, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 16, 0, 0, 240,51, 0, 8, 16, 8, 0, 0, 208,51, 0, 4, 0, 8, 0,
- 0, 16, 0, 0, 129,0, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 64, 6, 0, 0, 64, 0, 0, 0, 176,57, 0, 0, 0, 0, 0, 0, 112,1, 0, 0, 0, 0, 0,
- 0, 48, 13, 0, 16, 0, 8, 0, 0, 192,7, 0, 0, 0, 0, 2, 0, 0, 4, 0, 0, 4, 0, 0, 0, 112,45, 0, 0, 0, 8, 0, 0, 0, 0, 64, 0, 0, 0, 0,
- 0, 208,13, 0, 0, 1, 8, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 16, 33, 0, 0, 128,8, 0, 0, 224,11, 0, 0, 0, 0, 0, 0, 0, 17, 0, 1, 65, 2, 0,
- 0, 0, 0, 0, 128,64, 0, 0, 0, 0, 0, 0, 16, 0, 16, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 16, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 16, 1,
- 0, 128,4, 0, 24, 0, 0, 0, 0, 0, 0, 0, 144,0, 64, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 128,32, 0, 0, 2, 4, 0, 0, 160,1, 0, 4, 0, 128,2,
- 0, 240,63, 0, 127,21, 207,0, 0, 112,30, 0, 8, 16, 12, 0, 0, 176,63, 0, 16, 16, 12, 2, 0, 16, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0, 0, 128,8, 0,
- 0, 240,39, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 64, 9, 0, 0, 0, 8, 0,
- 0, 240,7, 0, 0, 32, 0, 0, 0, 32, 5, 0, 20, 0, 2, 0, 0, 160,16, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 64, 0, 0, 224,47, 0, 8, 0, 6, 0,
- 0, 208,63, 0, 0, 0, 0, 2, 0, 160,1, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 192,15, 0, 16, 0, 8, 0,
- 0, 16, 27, 0, 8, 16, 8, 0, 0, 0, 0, 0, 4, 0, 8, 0, 0, 32, 56, 0, 0, 16, 0, 0, 0, 0, 16, 0, 128,0, 0, 0, 0, 240,55, 0, 24, 0, 8, 0,
- 0, 32, 36, 0, 0, 0, 0, 0, 0, 224,56, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 20, 8, 0, 0, 240,32, 0, 72, 0, 8, 0, 0, 64, 0, 0, 0, 128,0, 0,
- 0, 32, 8, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 128,64, 16, 0, 0, 64, 1, 0, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 32, 0,
- 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 8, 1, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 240,63, 64, 125,191,206,3,
- 0, 144,30, 0, 8, 16, 8, 0, 0, 112,8, 0, 0, 16, 12, 0, 0, 128,4, 0, 0, 0, 0, 0, 0, 192,3, 0, 8, 0, 4, 0, 0, 208,63, 0, 0, 32, 1, 0,
- 0, 80, 21, 0, 0, 0, 4, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 112,0, 0, 0, 0, 2, 0, 0, 48, 0, 0, 0, 0, 2, 0, 0, 224,7, 0, 16, 16, 8, 0,
- 0, 64, 0, 0, 0, 32, 0, 0, 0, 240,31, 0, 0, 0, 0, 0, 0, 112,7, 0, 13, 16, 10, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 224,61, 0, 1, 0, 2, 0,
- 0, 0, 8, 0, 1, 0, 0, 0, 0, 128,9, 0, 9, 0, 8, 0, 0, 16, 59, 0, 8, 0, 8, 0, 0, 176,4, 0, 0, 32, 8, 0, 0, 0, 0, 0, 1, 8, 1, 0,
- 0, 0, 0, 0, 32, 64, 0, 0, 0, 208,2, 0, 16, 0, 8, 0, 0, 64, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 129,0, 2, 0, 0, 0, 0, 0, 2, 0, 32, 0,
- 0, 0, 0, 0, 1, 0, 18, 0, 0, 128,0, 0, 0, 1, 128,0, 0, 0, 0, 0, 16, 96, 16, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0,
- 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 32, 0, 16, 8, 24, 0, 0, 128,2, 0, 48, 4, 16, 2, 0, 0, 0, 0, 16, 224,16, 0, 0, 0, 0, 0, 1, 0, 128,0,
- 0, 0, 0, 0, 144,8, 0, 0, 0, 0, 0, 0, 132,0, 64, 0, 0, 96, 9, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
- 0, 244,127,0, 253,40, 95, 0, 0, 176,38, 0, 12, 16, 12, 0, 0, 176,6, 0, 4, 16, 12, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 48, 18, 0, 0, 0, 4, 0,
- 0, 112,6, 0, 0, 0, 32, 0, 0, 144,15, 0, 0, 32, 128,0, 0, 64, 9, 0, 0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 2, 0, 0, 224,2, 0, 68, 0, 8, 0,
- 0, 64, 3, 0, 0, 0, 0, 0, 0, 32, 4, 0, 1, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 224,31, 0, 6, 0, 8, 0, 0, 0, 33, 0, 0, 0, 16, 0,
- 0, 240,63, 0, 1, 0, 0, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 160,32, 0, 0, 0, 0, 0, 0, 32, 6, 0, 9, 32, 7, 0, 0, 0, 43, 0, 0, 0, 0, 0,
- 0, 64, 27, 0, 0, 0, 9, 0, 0, 0, 12, 0, 128,0, 0, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 128,52, 0, 4, 32, 8, 0, 0, 0, 0, 0, 16, 128,8, 0,
- 0, 0, 5, 0, 192,0, 0, 0, 0, 0, 4, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 240,127,0, 70, 3, 156,1, 0, 144,13, 0, 8, 0, 12, 0,
- 0, 48, 0, 0, 0, 16, 8, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 96, 10, 0, 0, 32, 32, 0, 0, 128,7, 0, 4, 0, 2, 0, 0, 16, 2, 0, 4, 0, 8, 0,
- 0, 32, 3, 0, 0, 144,8, 0, 0, 160,33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 144,46, 0, 20, 16, 12, 0, 0, 64, 10, 0, 0, 0, 0, 0,
- 0, 240,63, 0, 128,0, 132,0, 0, 0, 8, 0, 1, 0, 1, 0, 0, 0, 32, 0, 16, 0, 0, 0, 0, 160,19, 0, 4, 16, 44, 0, 0, 64, 13, 0, 4, 0, 12, 0,
- 0, 64, 45, 0, 29, 144,12, 0, 0, 0, 8, 0, 128,0, 0, 0, 0, 244,127,0, 242,215,156,0, 0, 0, 0, 0, 0, 16, 128,0, 0, 144,58, 0, 0, 16, 12, 0,
- 0, 48, 8, 0, 0, 0, 8, 0, 0, 16, 24, 0, 0, 0, 4, 0, 0, 208,0, 0, 12, 32, 0, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 96, 27, 0, 0, 0, 8, 0,
- 0, 240,58, 0, 0, 0, 0, 0, 0, 64, 1, 0, 2, 0, 4, 0, 0, 144,3, 0, 0, 16, 8, 0, 0, 16, 18, 0, 8, 0, 0, 0, 0, 0, 6, 0, 16, 0, 8, 0,
- 0, 0, 16, 0, 0, 0, 2, 0, 0, 144,63, 0, 0, 0, 12, 0, 0, 240,63, 0, 1, 0, 96, 0, 0, 32, 10, 0, 0, 0, 0, 0, 0, 0, 16, 0, 33, 0, 5, 2,
- 0, 0, 47, 0, 96, 32, 42, 0, 0, 96, 8, 0, 0, 0, 0, 0, 0, 176,63, 0, 0, 0, 1, 0, 0, 16, 0, 0, 1, 0, 1, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 128,32, 0, 0, 0, 0, 0, 32, 0, 32, 0, 0, 0, 16, 0, 96, 0, 0, 0, 0, 240,127,0, 10, 139,252,0,
- 0, 144,52, 0, 4, 0, 12, 0, 0, 0, 26, 0, 0, 16, 12, 0, 0, 32, 8, 0, 32, 0, 4, 0, 0, 160,5, 0, 0, 32, 0, 0, 0, 32, 12, 0, 0, 0, 2, 1,
- 0, 192,17, 0, 2, 0, 8, 0, 0, 112,45, 0, 0, 0, 0, 0, 0, 128,8, 0, 4, 16, 8, 0, 0, 80, 22, 0, 16, 0, 8, 0, 0, 0, 0, 0, 0, 0, 33, 0,
- 0, 0, 2, 0, 128,0, 0, 0, 0, 144,58, 0, 0, 20, 8, 0, 0, 32, 62, 0, 0, 0, 0, 0, 0, 112,22, 0, 0, 0, 12, 0, 0, 240,6, 0, 0, 0, 0, 0,
- 0, 128,24, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 32, 0, 0, 0, 0, 0, 0, 32, 2, 0, 0, 0, 240,127,0, 130,45, 140,2, 0, 208,28, 0, 8, 0, 12, 0,
- 0, 48, 57, 0, 0, 0, 0, 0, 0, 240,56, 0, 0, 0, 4, 0, 0, 32, 32, 0, 0, 0, 10, 0, 0, 128,44, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 128,2, 0,
- 0, 0, 1, 0, 0, 0, 10, 0, 0, 32, 6, 0, 0, 2, 8, 0, 0, 224,12, 0, 0, 0, 0, 0, 0, 128,16, 0, 32, 0, 8, 0, 0, 224,24, 0, 0, 0, 0, 0,
- 0, 32, 18, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 128,22, 0, 32, 0, 8, 0, 0, 96, 44, 0, 4, 0, 140,0, 0, 160,47, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 65, 0, 1, 2, 0, 128,62, 0, 32, 0, 14, 0, 0, 0, 40, 0, 1, 0, 0, 0, 0, 176,63, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 36, 52, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 244,63, 0, 255,255,255,3, 0, 0, 0, 0, 0, 1, 2, 0,
- 0, 0, 0, 0, 237,21, 44, 0, 0, 224,34, 0, 3, 8, 4, 0, 0, 160,5, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 8, 0, 3, 0, 0, 2,
- 0, 240,51, 0, 16, 2, 0, 0, 0, 0, 6, 0, 0, 128,0, 0, 0, 0, 24, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 32, 0, 0, 239,60, 118,0,
- 0, 96, 32, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 160,14, 0, 203,32, 6, 2, 0, 32, 0, 0, 131,0, 4, 0, 0, 32, 0, 0, 129,0, 2, 0,
- 0, 32, 0, 0, 129,0, 4, 0, 0, 32, 0, 0, 129,0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 1, 0, 0, 0, 0, 128,0, 12, 0, 0, 0, 0, 0, 0, 25, 8, 0,
- 0, 0, 0, 0, 145,128,0, 0, 0, 0, 0, 0, 27, 1, 28, 0, 0, 0, 0, 0, 217,224,12, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 16, 16, 32, 0,
- 0, 96, 16, 0, 2, 0, 4, 0, 0, 0, 0, 0, 146,0, 4, 0, 0, 32, 2, 0, 255,255,94, 1, 0, 128,0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 78, 47, 30, 3,
- 0, 0, 0, 0, 145,68, 16, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 32, 4, 2, 0, 0, 0, 0, 16, 17, 4, 0, 0, 0, 0, 0, 20, 0, 8, 0,
- 0, 0, 0, 0, 132,0, 8, 0, 0, 0, 0, 0, 16, 65, 8, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 17, 65, 22, 1,
- 0, 0, 0, 0, 12, 16, 12, 1, 0, 0, 0, 0, 1, 65, 4, 0, 0, 0, 0, 0, 8, 32, 36, 1, 0, 32, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 16, 32, 8, 0,
- 0, 0, 0, 0, 0, 0, 24, 0, 0, 224,1, 0, 9, 0, 132,0, 0, 32, 0, 0, 16, 0, 0, 0, 0, 32, 0, 0, 32, 0, 0, 0, 0, 32, 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 137,28, 66, 0, 0, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 0, 120,16, 0, 0, 0, 0, 0, 4, 8, 6, 0, 0, 0, 0, 0, 16, 65, 4, 0,
- 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 129,28, 2, 0, 0, 0, 0, 0, 128,1, 0, 1, 0, 0, 2, 0, 90, 105,14, 1, 0, 0, 0, 0, 17, 57, 4, 0,
- 0, 0, 0, 0, 205,40, 14, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 17, 0, 10, 0, 0, 0, 0, 0, 1, 65, 8, 0, 0, 0, 0, 0, 8, 50, 4, 0,
- 0, 0, 0, 0, 89, 104,14, 0, 0, 0, 0, 0, 16, 3, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 0, 8, 8, 8, 0,
- 0, 0, 0, 0, 0, 65, 16, 0, 0, 0, 0, 0, 146,0, 0, 0, 0, 0, 0, 0, 64, 0, 32, 0, 0, 0, 0, 0, 17, 1, 16, 1, 0, 0, 0, 0, 0, 96, 24, 2,
- 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 73, 88, 54, 1,
- 0, 0, 0, 0, 1, 1, 8, 0, 0, 0, 0, 0, 8, 40, 12, 0, 0, 0, 0, 0, 16, 1, 4, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 66, 0, 0, 0,
- 0, 0, 0, 0, 132,52, 166,0, 0, 0, 0, 0, 32, 0, 96, 0, 0, 0, 0, 0, 69, 72, 112,1, 0, 0, 0, 0, 9, 72, 0, 0, 0, 0, 0, 0, 65, 56, 0, 0,
- 0, 0, 0, 0, 0, 128,4, 2, 0, 0, 0, 0, 149,65, 24, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 32, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 136,4, 0,
- 0, 0, 0, 0, 0, 64, 36, 0, 0, 0, 0, 0, 2, 128,0, 0, 0, 0, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 8, 32, 2, 0, 0, 0, 0, 0, 17, 65, 2, 0,
- 0, 0, 0, 0, 16, 9, 4, 0, 16, 0, 0, 0, 219,42, 14, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 16, 1, 16, 0, 0, 0, 0, 0, 8, 0, 6, 0,
- 0, 0, 0, 0, 0, 16, 12, 0, 0, 72, 0, 0, 191,125,95, 1, 0, 0, 0, 0, 12, 184,10, 0, 0, 0, 0, 0, 16, 1, 0, 1, 0, 0, 0, 0, 21, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 21, 73, 18, 0, 0, 128,0, 0, 8, 8, 2, 0, 0, 0, 0, 0, 8, 168,12, 0, 0, 0, 0, 0, 16, 0, 20, 0,
- 0, 0, 0, 0, 17, 65, 4, 0, 0, 0, 0, 0, 2, 32, 0, 0, 0, 112,48, 0, 16, 97, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 96, 0, 0,
- 0, 0, 0, 0, 16, 0, 0, 2, 0, 0, 0, 0, 8, 192,0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 2, 24, 22, 0,
- 0, 0, 0, 0, 1, 144,0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 16, 16, 4, 0, 0, 32, 0, 0, 17, 1, 4, 0, 0, 32, 0, 0, 19, 1, 4, 0,
- 0, 0, 0, 0, 17, 1, 16, 0, 0, 0, 0, 0, 0, 24, 70, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 0, 0, 17, 1, 8, 0, 0, 96, 0, 0, 154,49, 62, 1,
- 0, 0, 0, 0, 0, 33, 0, 0, 0, 32, 0, 0, 18, 96, 34, 0, 0, 0, 0, 0, 128,0, 4, 0, 0, 0, 0, 0, 1, 65, 0, 1, 0, 0, 0, 0, 0, 24, 8, 0,
- 0, 0, 0, 0, 21, 0, 8, 0, 0, 0, 0, 0, 17, 81, 10, 3, 0, 0, 0, 0, 16, 32, 2, 0, 0, 0, 0, 0, 27, 36, 22, 0, 0, 0, 0, 0, 16, 56, 0, 0,
- 0, 0, 0, 0, 8, 16, 6, 0, 0, 0, 0, 0, 24, 48, 4, 0, 0, 0, 0, 0, 2, 65, 6, 0, 0, 0, 0, 0, 36, 0, 8, 0, 0, 0, 0, 0, 64, 64, 0, 0,
- 0, 0, 0, 0, 19, 57, 2, 0, 0, 0, 0, 0, 0, 24, 12, 0, 0, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 16, 32, 4, 0, 0, 0, 0, 0, 0, 32, 4, 1,
- 0, 0, 0, 0, 8, 16, 4, 0, 0, 0, 0, 0, 17, 0, 20, 1, 0, 0, 0, 0, 38, 56, 30, 0, 0, 0, 0, 0, 16, 8, 14, 0, 0, 0, 0, 0, 17, 0, 4, 1,
- 0, 0, 0, 0, 6, 168,4, 0, 0, 0, 0, 0, 145,65, 22, 0, 0, 0, 0, 0, 0, 96, 52, 0, 0, 40, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 8, 128,0,
- 0, 0, 0, 0, 0, 17, 8, 0, 0, 8, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 8, 10, 0, 0, 0, 0, 0, 33, 185,14, 0, 0, 128,0, 0, 1, 0, 0, 0,
- 0, 32, 0, 0, 4, 32, 2, 0, 0, 32, 0, 0, 221,255,246,3, 0, 0, 0, 0, 206,189,94, 1, 0, 0, 0, 0, 2, 3, 0, 0, 0, 112,0, 0, 21, 65, 4, 1,
- 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 1, 4, 12, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 32, 0, 0, 16, 68, 12, 0,
- 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 12, 0, 2, 0, 0, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 4, 0, 128,0, 0, 0, 0, 0, 17, 201,22, 1,
- 0, 0, 0, 0, 0, 17, 2, 0, 0, 0, 0, 0, 8, 96, 6, 0, 0, 0, 0, 0, 28, 32, 12, 0, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 24, 0, 4, 0,
- 0, 0, 0, 0, 16, 1, 8, 0, 0, 0, 0, 0, 18, 184,39, 1, 0, 0, 0, 0, 211,153,4, 1, 0, 0, 0, 0, 17, 32, 0, 2, 0, 0, 0, 0, 2, 192,8, 0,
- 0, 0, 0, 0, 1, 65, 4, 1, 0, 0, 0, 0, 4, 17, 36, 0, 0, 0, 0, 0, 132,16, 4, 0, 0, 32, 0, 0, 16, 2, 0, 0, 0, 0, 8, 0, 95, 232,42, 1,
- 0, 96, 36, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 17, 64, 16, 0, 0, 0, 0, 0, 4, 0, 2, 0,
- 0, 0, 0, 0, 16, 1, 12, 0, 0, 0, 0, 0, 8, 32, 44, 0, 0, 0, 0, 0, 17, 17, 4, 0, 0, 0, 0, 0, 0, 16, 2, 1, 0, 36, 0, 0, 1, 69, 0, 0,
- 0, 0, 0, 0, 0, 32, 142,0, 0, 96, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 2, 8, 8, 0, 0, 32, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 2, 64, 0, 0,
- 0, 0, 0, 0, 0, 48, 8, 0, 0, 0, 0, 0, 2, 248,18, 0, 0, 0, 0, 0, 48, 128,0, 0, 0, 0, 0, 0, 17, 33, 0, 0, 0, 0, 0, 0, 16, 81, 4, 0,
- 0, 0, 0, 0, 57, 64, 0, 0, 0, 0, 0, 0, 17, 32, 8, 0, 0, 32, 0, 0, 21, 96, 0, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 4, 1, 32, 0,
- 0, 0, 0, 0, 0, 73, 8, 0, 0, 0, 0, 0, 8, 24, 2, 0, 0, 0, 0, 0, 17, 0, 8, 1, 0, 32, 0, 0, 144,0, 4, 0, 0, 0, 0, 0, 1, 64, 0, 1,
- 0, 48, 0, 0, 17, 65, 0, 0, 0, 0, 0, 0, 4, 1, 8, 0, 0, 32, 0, 0, 8, 16, 4, 0, 0, 0, 0, 0, 8, 64, 4, 0, 0, 0, 0, 0, 4, 32, 2, 0,
- 0, 0, 0, 0, 0, 8, 6, 0, 0, 0, 0, 0, 2, 0, 12, 0, 0, 0, 0, 0, 4, 8, 4, 0, 0, 0, 0, 0, 0, 1, 4, 1, 0, 0, 0, 0, 4, 4, 64, 0,
- 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 76, 125,14, 3, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 0, 1, 32, 16, 0, 0, 0, 0, 0, 0, 40, 0, 0,
- 0, 0, 0, 0, 25, 97, 24, 1, 0, 0, 0, 0, 42, 186,4, 0, 0, 0, 0, 0, 8, 0, 128,0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 208,8, 0,
- 0, 0, 0, 0, 5, 65, 12, 0, 0, 0, 0, 0, 2, 8, 0, 1, 0, 0, 0, 0, 128,97, 0, 0, 0, 0, 0, 0, 2, 0, 70, 0, 0, 0, 0, 0, 255,105,30, 3,
- 0, 0, 0, 0, 2, 40, 2, 0, 0, 0, 0, 0, 17, 73, 2, 0, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 4, 8, 2, 0, 0, 0, 0, 0, 8, 40, 130,0,
- 0, 0, 0, 0, 20, 0, 6, 0, 0, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 1, 96, 18, 0, 0, 0, 0, 0, 21, 65, 0, 0, 0, 0, 0, 0, 28, 4, 1, 0,
- 0, 32, 0, 0, 0, 33, 0, 0, 0, 32, 0, 0, 1, 1, 20, 0, 0, 64, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 11, 18, 8, 0, 0, 0, 0, 0, 132,0, 0, 0,
- 0, 0, 0, 0, 17, 64, 2, 0, 0, 0, 0, 0, 66, 56, 76, 0, 0, 0, 8, 0, 255,233,30, 1, 0, 0, 0, 0, 136,177,110,0, 0, 0, 0, 0, 8, 65, 72, 0,
- 0, 0, 0, 0, 145,4, 0, 0, 0, 0, 0, 0, 26, 57, 6, 0, 0, 0, 0, 0, 13, 64, 8, 0, 0, 48, 48, 0, 0, 0, 132,0, 0, 0, 0, 0, 17, 9, 2, 0,
- 0, 0, 0, 0, 145,1, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 11, 104,12, 0, 0, 0, 0, 0, 68, 0, 4, 0, 0, 0, 0, 0, 0, 8, 78, 1,
- 0, 0, 0, 0, 32, 32, 22, 0, 0, 0, 0, 0, 68, 65, 0, 1, 0, 0, 0, 0, 0, 128,0, 1, 0, 0, 0, 0, 0, 128,4, 0, 0, 0, 0, 0, 144,65, 0, 0,
- 0, 0, 0, 0, 2, 16, 66, 0, 0, 0, 0, 0, 24, 8, 4, 0, 0, 0, 0, 0, 9, 17, 4, 0, 0, 0, 0, 0, 86, 192,0, 0, 0, 0, 0, 0, 32, 32, 24, 0,
- 0, 0, 0, 0, 25, 121,6, 0, 0, 0, 0, 0, 8, 8, 4, 1, 0, 0, 0, 0, 1, 40, 2, 0, 0, 0, 0, 0, 17, 8, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0,
- 0, 0, 0, 0, 129,1, 0, 0, 0, 0, 0, 0, 72, 64, 0, 0, 0, 0, 0, 0, 16, 32, 32, 0, 16, 0, 0, 0, 177,123,126,1, 0, 0, 0, 0, 170,56, 18, 0,
- 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 1, 16, 2, 0, 0, 0, 0, 0, 242,81, 21, 1, 0, 0, 0, 0, 16, 64, 2, 0, 0, 0, 0, 0, 0, 48, 6, 0,
- 0, 0, 0, 0, 8, 32, 18, 0, 0, 0, 0, 0, 1, 33, 16, 0, 0, 32, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 56, 2, 1, 0, 0, 0, 0, 136,0, 12, 0,
- 0, 0, 0, 0, 16, 0, 12, 0, 0, 0, 0, 0, 0, 50, 2, 0, 0, 0, 0, 0, 255,253,126,3, 0, 0, 0, 0, 9, 0, 96, 0, 0, 0, 0, 0, 128,4, 8, 0,
- 0, 0, 0, 0, 17, 1, 12, 0, 0, 0, 0, 0, 0, 8, 32, 0, 0, 0, 0, 0, 17, 40, 16, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0, 17, 81, 0, 0,
- 0, 0, 0, 0, 0, 32, 0, 1, 0, 0, 0, 0, 16, 89, 12, 0, 0, 0, 0, 0, 16, 32, 6, 1, 0, 0, 0, 0, 32, 40, 0, 0, 0, 0, 0, 0, 129,0, 72, 0,
- 0, 0, 0, 0, 147,73, 4, 0, 16, 0, 0, 0, 81, 73, 28, 0, 0, 0, 0, 0, 4, 8, 64, 0, 0, 0, 0, 0, 1, 192,0, 0, 0, 0, 0, 0, 0, 128,2, 0,
- 0, 64, 0, 0, 191,219,108,1, 0, 0, 0, 0, 1, 64, 18, 0, 0, 0, 0, 0, 0, 144,0, 0, 0, 0, 0, 0, 8, 0, 4, 1, 0, 0, 0, 0, 1, 73, 2, 0,
- 0, 0, 0, 0, 48, 32, 0, 0, 0, 0, 0, 0, 0, 33, 128,0, 0, 0, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 128,193,8, 0, 0, 0, 0, 0, 144,1, 2, 0,
- 0, 0, 0, 0, 0, 8, 32, 1, 0, 0, 0, 0, 129,169,0, 0, 0, 0, 0, 0, 1, 1, 64, 0, 0, 0, 0, 0, 21, 68, 0, 0, 0, 0, 0, 0, 149,241,8, 0,
- 0, 0, 0, 0, 132,48, 134,1, 0, 0, 0, 0, 0, 36, 4, 0, 0, 32, 1, 0, 147,221,126,0, 0, 0, 0, 0, 232,185,94, 0, 0, 0, 0, 0, 17, 4, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 8, 65, 0, 0, 0, 0, 0, 0, 18, 56, 6, 1, 0, 0, 0, 0, 0, 28, 4, 1, 0, 0, 0, 0, 19, 17, 24, 0,
- 0, 0, 0, 0, 146,124,42, 1, 0, 0, 0, 0, 128,16, 0, 0, 0, 0, 0, 0, 3, 64, 4, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 32, 64, 6, 1,
- 0, 0, 0, 0, 0, 40, 4, 0, 0, 0, 0, 0, 145,66, 16, 0, 0, 0, 0, 0, 0, 48, 2, 0, 0, 0, 0, 0, 4, 48, 10, 0, 0, 36, 32, 0, 255,255,127,3,
- 0, 64, 40, 0, 0, 0, 0, 0, 0, 4, 0, 0, 79, 191,126,1, 0, 0, 0, 0, 0, 56, 4, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 2, 52, 0, 0,
- 0, 0, 0, 0, 83, 193,16, 0, 0, 0, 0, 0, 1, 40, 8, 0, 0, 32, 0, 0, 121,101,4, 1, 0, 0, 0, 0, 1, 32, 4, 2, 0, 0, 0, 0, 4, 17, 0, 0,
- 0, 0, 0, 0, 28, 64, 0, 0, 0, 0, 0, 0, 8, 4, 8, 0, 0, 0, 0, 0, 1, 64, 8, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 21, 65, 18, 1,
- 0, 0, 0, 0, 4, 41, 26, 1, 0, 0, 0, 0, 144,64, 0, 0, 0, 0, 0, 0, 80, 65, 4, 1, 0, 0, 0, 0, 17, 32, 2, 0, 0, 0, 0, 0, 8, 0, 0, 2,
- 0, 0, 0, 0, 25, 57, 2, 0, 0, 0, 0, 0, 72, 97, 14, 1, 0, 32, 0, 0, 129,67, 52, 1, 0, 0, 0, 0, 85, 96, 6, 2, 0, 0, 0, 0, 16, 32, 0, 2,
- 0, 0, 0, 0, 0, 56, 7, 0, 0, 0, 0, 0, 145,65, 20, 0, 0, 0, 0, 0, 0, 233,10, 2, 0, 0, 0, 0, 10, 32, 32, 0, 0, 0, 0, 0, 133,48, 46, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 4, 32, 8, 0, 0, 0, 0, 0, 83, 65, 86, 0, 0, 0, 0, 0, 6, 176,38, 3, 0, 0, 0, 0, 135,32, 2, 0,
- 0, 0, 0, 0, 113,57, 12, 0, 0, 0, 0, 0, 192,64, 0, 0, 0, 0, 0, 0, 2, 40, 20, 0, 0, 0, 0, 0, 72, 0, 8, 0, 0, 0, 0, 0, 76, 32, 0, 0,
- 0, 0, 0, 0, 125,247,255,1, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 1, 33, 2, 0, 0, 0, 0, 0, 8, 4, 4, 2, 0, 0, 0, 0, 128,0, 8, 0,
- 0, 0, 0, 0, 128,32, 4, 0, 0, 0, 0, 0, 17, 0, 2, 0, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 0, 0, 33, 0, 1, 0, 0, 0, 0, 21, 5, 24, 0,
- 0, 0, 0, 0, 128,129,0, 0, 0, 0, 0, 0, 16, 33, 4, 0, 0, 0, 0, 0, 132,33, 20, 1, 0, 0, 0, 0, 16, 1, 10, 0, 0, 0, 0, 0, 32, 32, 0, 0,
- 0, 240,62, 0, 17, 97, 148,3, 0, 112,4, 0, 0, 0, 0, 0, 0, 240,34, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 160,7, 0, 0, 0, 0, 0,
- 0, 240,42, 0, 0, 0, 0, 0, 0, 240,22, 0, 0, 0, 0, 0, 0, 240,5, 0, 0, 0, 0, 0, 0, 128,9, 0, 0, 0, 0, 0, 0, 32, 0, 0, 8, 36, 0, 0,
- 0, 32, 0, 0, 16, 0, 2, 0, 0, 32, 0, 0, 0, 128,4, 0, 0, 0, 0, 0, 0, 128,36, 0, 0, 0, 0, 0, 9, 64, 20, 0, 0, 0, 0, 0, 0, 32, 20, 0,
- 0, 0, 0, 0, 49, 65, 38, 0, 0, 32, 0, 0, 2, 40, 2, 0, 0, 0, 0, 0, 8, 0, 8, 1, 0, 32, 0, 0, 1, 65, 4, 0, 0, 0, 0, 0, 145,65, 16, 0,
- 0, 0, 0, 0, 16, 8, 2, 0, 0, 0, 0, 0, 22, 64, 2, 0, 0, 32, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 120,2, 0, 0, 0, 0, 0, 8, 18, 0, 0,
- 0, 32, 0, 0, 255,245,175,3, 0, 0, 0, 0, 66, 32, 4, 0, 0, 0, 0, 0, 0, 64, 0, 2, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 17, 7, 16, 0,
- 0, 32, 0, 0, 1, 0, 6, 0, 0, 0, 0, 0, 32, 32, 34, 0, 0, 32, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 129,32, 16, 0, 0, 0, 0, 1, 16, 17, 4, 0,
- 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 81, 68, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 80, 36, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 128,65, 0, 0, 0, 0, 0, 0, 145,69, 12, 0, 0, 32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 19, 81, 0, 1, 0, 0, 1, 0, 255,241,126,1,
- 0, 0, 0, 0, 0, 80, 16, 1, 0, 192,48, 0, 0, 0, 0, 0, 0, 32, 32, 0, 138,57, 74, 1, 0, 32, 8, 0, 1, 0, 16, 0, 0, 32, 0, 0, 1, 64, 4, 0,
- 0, 0, 0, 0, 16, 72, 2, 0, 0, 0, 0, 0, 82, 56, 166,1, 0, 0, 0, 0, 145,65, 2, 0, 0, 32, 0, 0, 27, 0, 76, 0, 0, 0, 0, 0, 4, 0, 16, 0,
- 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 64, 16, 28, 1, 0, 0, 0, 0, 20, 0, 4, 0, 0, 32, 0, 0, 4, 32, 68, 0, 0, 0, 0, 0, 16, 17, 16, 0,
- 0, 0, 0, 0, 0, 17, 0, 1, 0, 0, 0, 0, 81, 112,28, 0, 0, 0, 0, 0, 4, 0, 8, 2, 0, 32, 0, 0, 8, 0, 6, 0, 0, 0, 0, 0, 88, 0, 0, 0,
- 0, 0, 0, 0, 144,0, 8, 0, 0, 0, 0, 0, 37, 160,126,1, 0, 0, 0, 0, 133,0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 1, 0, 0, 0, 0, 129,64, 2, 0,
- 0, 0, 0, 0, 134,192,56, 0, 0, 0, 0, 0, 8, 16, 38, 0, 0, 0, 0, 0, 6, 41, 4, 0, 0, 0, 0, 0, 81, 65, 5, 1, 0, 0, 0, 0, 72, 34, 46, 2,
- 0, 0, 0, 0, 16, 0, 18, 0, 0, 0, 0, 0, 9, 0, 0, 2, 0, 0, 0, 0, 17, 1, 0, 2, 0, 0, 0, 0, 8, 41, 14, 1, 0, 0, 0, 0, 73, 0, 0, 0,
- 0, 0, 0, 0, 136,32, 6, 0, 0, 0, 0, 0, 24, 0, 8, 0, 0, 0, 0, 0, 1, 64, 80, 0, 0, 0, 0, 0, 177,245,30, 1, 0, 0, 0, 0, 89, 32, 4, 2,
- 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 145,1, 4, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 33, 12, 0, 0, 240,46, 0, 10, 112,38, 0,
- 0, 0, 0, 0, 4, 2, 4, 0, 0, 0, 0, 0, 9, 0, 4, 0, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 0, 0, 139,213,28, 0, 0, 0, 0, 0, 4, 32, 9, 0,
- 0, 0, 0, 0, 2, 160,0, 0, 0, 0, 0, 0, 1, 64, 2, 0, 0, 0, 0, 0, 153,85, 118,1, 0, 0, 0, 0, 104,49, 38, 1, 0, 0, 0, 0, 1, 128,4, 0,
- 0, 0, 0, 0, 4, 48, 70, 2, 0, 0, 0, 0, 195,4, 0, 0, 0, 0, 0, 0, 21, 49, 4, 0, 0, 0, 0, 0, 8, 8, 4, 0, 0, 0, 0, 0, 0, 16, 16, 0,
- 0, 0, 0, 0, 32, 0, 18, 0, 0, 0, 0, 0, 92, 144,8, 2, 0, 0, 0, 0, 66, 241,4, 0, 0, 0, 0, 0, 16, 65, 16, 0, 0, 0, 0, 0, 68, 0, 0, 0,
- 0, 0, 0, 0, 132,1, 8, 0, 0, 0, 0, 0, 5, 53, 33, 0, 0, 0, 0, 0, 2, 49, 4, 0, 0, 0, 0, 0, 132,40, 2, 0, 0, 0, 0, 0, 1, 104,6, 3,
- 0, 0, 0, 0, 17, 97, 12, 0, 0, 0, 0, 0, 9, 32, 6, 2, 0, 32, 0, 0, 17, 64, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 32, 2, 3,
- 0, 0, 0, 0, 28, 96, 12, 0, 0, 0, 0, 0, 145,65, 4, 0, 0, 0, 0, 0, 145,0, 16, 0, 0, 8, 3, 0, 223,251,94, 1, 0, 0, 0, 0, 206,189,62, 3,
- 0, 0, 0, 0, 0, 32, 18, 0, 0, 0, 0, 0, 97, 65, 2, 0, 0, 0, 0, 0, 13, 97, 24, 2, 0, 48, 36, 0, 0, 0, 0, 0, 0, 112,16, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 97, 24, 1, 0, 0, 0, 0, 0, 40, 32, 0, 0, 0, 0, 0, 145,0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 64, 32, 0, 0,
- 0, 32, 0, 0, 0, 8, 0, 0, 0, 36, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 64, 40, 14, 0, 0, 0, 0, 0, 9, 0, 2, 0, 0, 112,4, 0, 72, 8, 14, 0,
- 0, 0, 0, 0, 89, 4, 40, 0, 0, 0, 0, 0, 0, 33, 2, 1, 0, 0, 0, 0, 8, 0, 4, 2, 0, 0, 0, 0, 64, 1, 4, 2, 0, 0, 0, 0, 1, 96, 16, 0,
- 0, 0, 0, 0, 16, 8, 6, 0, 0, 0, 0, 0, 92, 63, 142,3, 0, 0, 0, 0, 1, 9, 16, 0, 0, 0, 0, 0, 17, 96, 0, 0, 0, 0, 0, 0, 153,1, 10, 0,
- 0, 0, 0, 0, 0, 81, 12, 1, 0, 0, 0, 0, 68, 100,8, 0, 0, 96, 8, 0, 0, 32, 4, 0, 0, 32, 0, 0, 1, 65, 20, 0, 0, 0, 0, 0, 160,64, 0, 0,
- 0, 0, 0, 0, 6, 0, 1, 0, 0, 0, 0, 0, 144,1, 16, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 93, 104,14, 2, 0, 0, 0, 0, 1, 69, 16, 0,
- 0, 0, 0, 0, 128,8, 0, 0, 0, 0, 0, 0, 16, 40, 0, 0, 0, 32, 2, 0, 0, 64, 4, 0, 0, 32, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 17, 69, 0, 0,
- 0, 0, 0, 0, 1, 0, 42, 0, 0, 0, 0, 0, 2, 8, 16, 0, 0, 0, 0, 0, 129,64, 12, 0, 0, 0, 0, 0, 145,0, 0, 1, 0, 0, 0, 0, 8, 65, 4, 0,
- 0, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 29, 44, 30, 1, 0, 0, 0, 0, 80, 0, 14, 0, 0, 0, 0, 0, 21, 209,24, 1, 0, 0, 0, 0, 0, 24, 4, 0,
- 0, 0, 0, 0, 16, 48, 8, 0, 0, 0, 0, 0, 145,9, 28, 1, 0, 0, 0, 0, 0, 32, 14, 0, 0, 0, 0, 0, 8, 0, 130,0, 0, 0, 0, 0, 16, 65, 0, 1,
- 0, 0, 0, 0, 128,0, 2, 0, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 30, 137,8, 0, 0, 0, 0, 0, 18, 0, 18, 0, 0, 0, 0, 0, 0, 9, 2, 0,
- 0, 0, 0, 0, 4, 40, 6, 0, 0, 32, 0, 0, 64, 104,132,0, 0, 0, 0, 0, 17, 64, 0, 1, 0, 8, 16, 0, 255,239,255,3, 0, 0, 0, 0, 222,189,94, 1,
- 0, 0, 0, 0, 17, 72, 0, 0, 0, 0, 0, 0, 129,68, 2, 0, 0, 0, 0, 0, 1, 65, 2, 1, 0, 0, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0, 96, 2, 0,
- 0, 0, 4, 0, 112,73, 4, 1, 0, 0, 0, 0, 0, 65, 20, 1, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 3, 65, 0, 0, 0, 0, 0, 0, 9, 1, 12, 1,
- 0, 0, 0, 0, 20, 4, 4, 0, 0, 0, 0, 0, 0, 65, 0, 1, 0, 0, 0, 0, 129,0, 8, 0, 0, 0, 0, 0, 64, 0, 0, 2, 0, 0, 0, 0, 1, 66, 16, 1,
- 0, 0, 0, 0, 145,69, 10, 1, 0, 0, 0, 0, 16, 72, 0, 0, 0, 0, 0, 0, 0, 32, 34, 0, 0, 0, 0, 0, 20, 8, 6, 0, 0, 40, 0, 0, 145,65, 18, 3,
- 0, 0, 0, 0, 0, 56, 34, 1, 0, 0, 0, 0, 3, 8, 6, 0, 0, 0, 0, 0, 147,88, 12, 0, 0, 32, 0, 0, 16, 64, 12, 0, 0, 0, 0, 0, 0, 0, 36, 0,
- 0, 16, 0, 0, 17, 38, 4, 0, 0, 0, 0, 0, 65, 64, 0, 0, 0, 0, 0, 0, 128,40, 34, 0, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 0, 0, 17, 73, 20, 3,
- 0, 0, 0, 0, 28, 32, 4, 0, 0, 32, 0, 0, 81, 227,92, 1, 0, 112,36, 0, 24, 0, 12, 0, 0, 32, 0, 0, 16, 64, 4, 0, 0, 0, 0, 0, 1, 32, 36, 0,
- 0, 32, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 40, 8, 2, 0, 32, 0, 0, 16, 0, 4, 0, 0, 240,60, 0, 18, 2, 4, 0, 0, 240,8, 0, 0, 0, 0, 0,
- 0, 32, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 21, 98, 4, 1, 0, 0, 0, 0, 88, 185,4, 0, 0, 0, 0, 0, 0, 8, 4, 2, 0, 0, 0, 0, 16, 2, 2, 0,
- 0, 112,12, 0, 2, 80, 0, 0, 0, 0, 1, 0, 4, 56, 94, 3, 0, 0, 0, 0, 152,0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 128,1, 8, 0,
- 0, 0, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 64, 0, 0, 209,77, 126,0, 0, 0, 0, 0, 0, 8, 34, 0, 0, 240,62, 0, 59, 73, 20, 3,
- 0, 240,24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12, 1, 0, 0, 0, 0, 21, 44, 13, 0, 0, 32, 1, 0, 36, 36, 62, 2, 0, 0, 0, 0, 32, 0, 64, 0,
- 0, 32, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 16, 81, 12, 0, 0, 0, 0, 0, 17, 104,4, 0, 0, 0, 0, 0, 64, 168,12, 0, 0, 0, 0, 0, 8, 33, 0, 0,
- 0, 0, 0, 0, 11, 48, 14, 1, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 128,6, 0, 0, 0, 0, 0, 4, 40, 62, 0, 0, 0, 0, 0, 9, 64, 0, 0,
- 0, 0, 0, 0, 20, 8, 4, 0, 0, 0, 0, 0, 17, 96, 16, 1, 0, 0, 0, 0, 31, 252,14, 0, 0, 0, 0, 0, 0, 40, 140,0, 0, 96, 0, 0, 16, 1, 4, 0,
- 0, 0, 0, 0, 192,1, 0, 0, 0, 0, 0, 0, 136,0, 0, 0, 0, 0, 0, 0, 145,65, 12, 0, 0, 0, 0, 0, 145,41, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1,
- 0, 0, 0, 0, 17, 81, 16, 1, 0, 96, 24, 0, 10, 184,6, 0, 0, 224,32, 0, 0, 0, 0, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 80, 25, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 1, 16, 0, 0, 0, 0, 0, 5, 60, 140,0, 0, 0, 0, 0, 16, 9, 0, 0, 0, 0, 0, 0, 16, 8, 4, 0, 0, 0, 0, 0, 150,36, 44, 0,
- 0, 0, 0, 0, 148,4, 0, 0, 0, 96, 0, 0, 26, 0, 4, 0, 0, 0, 0, 0, 0, 32, 24, 1, 0, 0, 0, 0, 1, 57, 4, 2, 0, 0, 0, 0, 1, 24, 16, 0,
- 0, 0, 0, 0, 24, 253,190,0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 215,201,72, 0, 0, 0, 0, 0, 0, 8, 16, 0, 0, 0, 0, 0, 16, 1, 2, 0,
- 0, 0, 0, 0, 1, 0, 8, 1, 0, 32, 0, 0, 151,93, 94, 0, 0, 0, 0, 0, 68, 104,2, 1, 0, 0, 0, 0, 23, 56, 7, 0, 0, 0, 0, 0, 16, 65, 18, 0,
- 0, 0, 0, 0, 1, 48, 6, 0, 0, 0, 0, 0, 4, 40, 0, 0, 0, 32, 0, 0, 0, 0, 0, 1, 0, 240,59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 24, 4, 0,
- 0, 0, 0, 0, 255,248,111,0, 0, 0, 0, 0, 129,73, 4, 1, 0, 0, 0, 0, 1, 8, 18, 0, 0, 0, 0, 0, 4, 160,129,0, 0, 0, 0, 0, 129,64, 6, 0,
- 0, 0, 0, 0, 8, 136,0, 0, 0, 0, 0, 0, 16, 72, 24, 1, 0, 0, 0, 0, 0, 176,0, 0, 0, 0, 0, 0, 129,64, 18, 0, 0, 0, 0, 0, 160,41, 132,0,
- 0, 32, 0, 0, 17, 65, 20, 1, 0, 0, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 21, 96, 20, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 224,0, 0, 0, 34, 28, 0,
- 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 66, 128,14, 0, 0, 0, 0, 0, 131,208,88, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0, 128,5, 0, 0,
- 0, 0, 0, 0, 129,65, 16, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 11, 61, 30, 1, 0, 0, 16, 0, 32, 0, 0, 0, 0, 32, 32, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 247,237,30, 1, 0, 32, 0, 0, 28, 56, 10, 0, 0, 32, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 16, 97, 8, 0, 0, 0, 0, 0, 4, 56, 134,0,
- 0, 0, 0, 0, 9, 1, 4, 0, 0, 0, 0, 0, 64, 1, 8, 0, 0, 0, 0, 0, 21, 8, 4, 0, 0, 0, 0, 0, 92, 172,12, 0, 0, 0, 0, 0, 40, 0, 0, 0,
- 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 160,8, 0, 0, 32, 16, 0, 8, 32, 0, 0, 0, 224,8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 2,
- 0, 0, 0, 0, 128,12, 8, 0, 0, 0, 0, 0, 1, 72, 2, 0, 0, 0, 0, 0, 17, 201,22, 0, 0, 0, 0, 0, 1, 40, 10, 0, 0, 0, 0, 0, 66, 25, 12, 0,
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 4, 32, 128,0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 5, 32, 16, 0, 0, 0, 0, 0, 128,32, 0, 0,
- 0, 224,34, 0, 74, 178,76, 1, 0, 0, 0, 0, 17, 0, 16, 1, 0, 96, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 64, 6, 0, 0, 0, 0, 0, 21, 32, 1, 0,
- 0, 0, 0, 0, 132,32, 0, 0, 0, 0, 0, 0, 3, 128,160,0, 0, 0, 0, 0, 8, 40, 4, 0, 0, 0, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 68, 8, 0, 0,
- 0, 232,45, 0, 16, 9, 4, 0, 0, 96, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145,9, 2, 0, 0, 0, 0, 0, 144,9, 0, 0, 0, 0, 0, 0, 1, 0, 40, 0,
- 0, 0, 0, 0, 16, 8, 6, 2, 0, 32, 0, 0, 129,1, 84, 0, 0, 64, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 54, 24, 14, 0, 0, 0, 0, 0, 1, 1, 20, 0,
- 0, 0, 0, 0, 8, 80, 2, 0, 0, 0, 0, 0, 32, 40, 10, 0, 0, 128,0, 0, 255,255,255,3, 0, 32, 0, 0, 110,189,127,1, 0, 0, 0, 0, 17, 9, 4, 0,
- 0, 0, 0, 0, 29, 0, 4, 3, 0, 0, 0, 0, 1, 40, 0, 0, 0, 0, 0, 0, 0, 33, 8, 0, 0, 0, 0, 0, 0, 100,0, 0, 0, 0, 0, 0, 1, 32, 4, 0,
- 0, 0, 0, 0, 0, 36, 64, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 93, 66, 12, 0, 0, 0, 0, 0, 4, 2, 0, 2, 0, 0, 0, 0, 17, 3, 0, 0,
- 0, 0, 0, 0, 17, 65, 18, 0, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 33, 10, 0, 0, 0, 0, 0, 128,8, 8, 2, 0, 0, 0, 0, 64, 40, 18, 0,
- 0, 0, 0, 0, 4, 0, 12, 0, 0, 0, 0, 0, 128,0, 16, 0, 0, 0, 0, 0, 209,73, 28, 0, 0, 0, 0, 0, 8, 32, 26, 0, 0, 0, 0, 0, 1, 128,16, 0,
- 0, 0, 0, 0, 89, 64, 16, 0, 0, 0, 0, 0, 81, 120,0, 0, 0, 0, 0, 0, 27, 209,82, 0, 0, 0, 0, 0, 20, 49, 0, 0, 0, 0, 0, 0, 9, 232,14, 1,
- 0, 32, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 18, 248,40, 0, 0, 0, 0, 0, 0, 64, 20, 0, 0, 0, 0, 0, 83, 104,0, 2, 0, 0, 0, 0, 64, 65, 0, 0,
- 0, 0, 0, 0, 0, 8, 14, 0, 0, 0, 0, 0, 9, 64, 2, 0, 0, 0, 0, 0, 25, 113,118,0, 0, 0, 0, 0, 194,40, 12, 0, 0, 0, 0, 0, 5, 41, 6, 0,
- 0, 0, 0, 0, 0, 96, 12, 2, 0, 0, 0, 0, 0, 41, 0, 2, 0, 0, 0, 0, 16, 64, 0, 1, 0, 0, 0, 0, 239,105,45, 3, 0, 0, 2, 0, 0, 8, 4, 0,
- 16, 0, 0, 0, 27, 65, 14, 2, 0, 0, 0, 0, 2, 8, 6, 0, 0, 0, 0, 0, 17, 0, 12, 2, 0, 0, 0, 0, 145,65, 18, 1, 0, 0, 0, 0, 2, 40, 0, 0,
- 0, 0, 0, 0, 0, 40, 12, 0, 0, 0, 0, 0, 3, 0, 8, 2, 0, 0, 0, 0, 17, 32, 0, 0, 0, 0, 0, 0, 27, 25, 4, 0, 0, 0, 0, 0, 8, 8, 12, 0,
- 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 125,124,30, 3, 0, 0, 0, 0, 8, 45, 4, 2, 0, 0, 0, 0, 17, 97, 4, 0, 0, 0, 0, 0, 129,64, 0, 0,
- 0, 0, 0, 0, 64, 8, 12, 0, 0, 0, 0, 0, 69, 0, 8, 0, 0, 0, 0, 0, 4, 40, 4, 0, 0, 0, 0, 0, 145,145,24, 0, 0, 0, 0, 0, 6, 168,8, 0,
- 0, 0, 0, 0, 1, 80, 0, 2, 0, 0, 0, 0, 145,73, 64, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 17, 65, 8, 1, 0, 0, 0, 0, 25, 33, 12, 1,
- 0, 0, 0, 0, 17, 32, 4, 0, 0, 0, 0, 0, 55, 217,70, 1, 0, 0, 0, 0, 77, 56, 44, 0, 0, 0, 0, 0, 144,96, 0, 0, 0, 0, 0, 0, 8, 1, 8, 0,
- 0, 0, 0, 0, 24, 40, 6, 0, 0, 0, 0, 0, 72, 1, 8, 0, 0, 0, 0, 0, 89, 42, 12, 0, 0, 0, 0, 0, 88, 1, 8, 0, 0, 0, 0, 0, 4, 41, 18, 0,
- 0, 0, 0, 0, 16, 1, 4, 1, 0, 0, 0, 0, 2, 64, 8, 0, 0, 0, 0, 0, 153,97, 92, 2, 0, 0, 0, 0, 0, 72, 16, 2, 0, 0, 0, 0, 16, 64, 8, 0,
- 0, 0, 0, 0, 18, 8, 14, 1, 0, 0, 0, 0, 16, 112,12, 0, 0, 0, 0, 0, 0, 40, 90, 0, 0, 32, 0, 0, 0, 65, 0, 1, 0, 0, 0, 0, 2, 128,72, 0,
- 0, 0, 0, 0, 4, 120,86, 1, 0, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 2, 8, 10, 0, 0, 0, 0, 0, 0, 53, 4, 1, 0, 0, 0, 0, 76, 0, 8, 0,
- 0, 0, 0, 0, 73, 104,7, 3, 0, 0, 0, 0, 87, 96, 44, 2, 0, 0, 0, 0, 64, 32, 0, 2, 0, 0, 0, 0, 68, 42, 76, 3, 0, 32, 0, 0, 129,64, 4, 0,
- 0, 0, 0, 0, 149,73, 0, 0, 0, 112,40, 0, 32, 0, 4, 0, 0, 0, 0, 0, 12, 65, 0, 1, 0, 0, 0, 0, 8, 16, 32, 0, 0, 32, 0, 0, 183,89, 118,3,
- 0, 0, 0, 0, 0, 40, 144,0, 0, 0, 0, 0, 97, 16, 6, 2, 0, 96, 8, 0, 1, 69, 16, 0, 0, 96, 19, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 2, 1, 4, 1, 0, 0, 0, 0, 17, 64, 18, 0, 0, 32, 4, 0, 0, 1, 4, 0, 0, 0, 0, 0, 119,120,20, 0, 0, 0, 0, 0, 144,8, 16, 0,
- 0, 32, 0, 0, 16, 1, 6, 0, 0, 0, 0, 0, 32, 105,0, 0, 0, 0, 0, 0, 1, 128,0, 1, 0, 32, 1, 0, 0, 65, 0, 0, 0, 0, 0, 0, 70, 179,4, 0,
- 0, 0, 0, 0, 17, 97, 0, 0, 0, 0, 0, 0, 8, 32, 0, 1, 0, 0, 0, 0, 24, 40, 4, 2, 0, 0, 0, 0, 17, 65, 24, 0, 0, 0, 0, 0, 66, 0, 8, 0,
- 0, 96, 2, 0, 255,253,95, 1, 0, 32, 0, 0, 248,189,14, 1, 0, 0, 0, 0, 1, 64, 12, 0, 0, 0, 0, 0, 16, 3, 18, 1, 0, 0, 0, 0, 145,73, 2, 0,
- 0, 0, 0, 0, 0, 168,2, 0, 0, 0, 0, 0, 12, 0, 12, 2, 0, 0, 0, 0, 4, 65, 0, 0, 0, 0, 0, 0, 19, 81, 0, 0, 0, 0, 0, 0, 0, 56, 14, 0,
- 0, 224,1, 0, 61, 11, 1, 2, 0, 96, 0, 0, 1, 0, 0, 0, 0, 48, 5, 0, 97, 10, 35, 2, 0, 32, 0, 0, 128,0, 0, 0, 0, 48, 0, 0, 0, 2, 0, 0,
- 0, 32, 128,0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 184,164,0, 0, 0, 0, 0, 68, 34, 0, 0, 0, 0, 0, 0, 129,0, 16, 0, 0, 32, 0, 0, 127,253,90, 1,
- 0, 0, 0, 0, 32, 56, 24, 0, 0, 0, 0, 0, 17, 64, 18, 1, 0, 0, 0, 0, 0, 32, 8, 1, 0, 0, 0, 0, 8, 0, 64, 0, 0, 0, 0, 0, 0, 40, 38, 0,
- 0, 0, 0, 0, 4, 16, 0, 0, 0, 112,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 10, 0, 0, 0, 0, 0, 48, 16, 0, 0, 0, 0, 0, 0, 61, 120,6, 0,
- 0, 8, 0, 0, 74, 32, 8, 0, 0, 40, 0, 0, 17, 8, 4, 0, 0, 0, 0, 0, 17, 9, 102,0, 0, 0, 0, 0, 72, 32, 66, 1, 0, 0, 0, 0, 16, 0, 12, 1,
- 0, 0, 0, 0, 1, 0, 16, 1, 0, 4, 0, 0, 153,9, 2, 0, 0, 0, 0, 0, 4, 0, 14, 0, 0, 0, 0, 0, 68, 40, 2, 0, 0, 0, 0, 0, 193,32, 0, 0,
- 0, 0, 0, 0, 81, 0, 4, 0, 0, 128,0, 0, 0, 0, 16, 0, 0, 32, 32, 0, 181,89, 94, 1, 0, 32, 0, 0, 56, 57, 20, 1, 0, 0, 0, 0, 9, 56, 14, 0,
- 0, 0, 0, 0, 24, 0, 6, 0, 0, 0, 0, 0, 0, 16, 64, 0, 0, 0, 0, 0, 16, 81, 0, 0, 0, 224,0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 72, 48, 4, 2,
- 0, 0, 0, 0, 1, 48, 2, 0, 0, 0, 0, 0, 16, 129,0, 0, 0, 0, 0, 0, 147,89, 82, 0, 0, 0, 0, 0, 36, 41, 10, 0, 0, 0, 0, 0, 1, 97, 4, 0,
- 0, 0, 0, 0, 1, 64, 132,0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 64, 40, 0, 0, 0, 0, 0, 0, 0, 40, 18, 0, 0, 0, 0, 0, 0, 17, 32, 0,
- 0, 160,0, 0, 80, 12, 4, 3, 0, 0, 0, 0, 8, 32, 16, 0, 0, 32, 0, 0, 14, 184,44, 0, 0, 0, 0, 0, 8, 0, 10, 0, 0, 0, 0, 0, 0, 36, 6, 0,
- 0, 0, 1, 64, 157,253,126,3, 0, 0, 0, 0, 132,56, 142,1, 0, 0, 0, 0, 132,65, 0, 0, 0, 0, 0, 0, 33, 168,6, 0, 0, 0, 0, 0, 84, 0, 0, 0,
- 0, 0, 0, 0, 17, 88, 0, 1, 0, 0, 0, 0, 2, 56, 4, 1, 0, 0, 0, 0, 1, 41, 2, 1, 0, 0, 0, 0, 17, 1, 6, 0, 0, 0, 0, 0, 128,72, 12, 0,
- 0, 0, 4, 0, 16, 0, 0, 0, 0, 0, 0, 0, 49, 8, 32, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 17, 3, 16, 0, 0, 0, 0, 0, 12, 0, 5, 0,
- 0, 0, 0, 0, 1, 64, 4, 0, 0, 32, 0, 0, 16, 0, 8, 0, 0, 0, 0, 0, 144,0, 8, 1, 0, 0, 0, 0, 17, 64, 4, 0, 0, 0, 0, 0, 20, 188,6, 0,
- 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 0, 1, 20, 1, 0, 0, 0, 0, 1, 192,16, 0, 0, 0, 0, 0, 4, 144,0, 0, 0, 0, 0, 0, 64, 4, 4, 0,
- 0, 0, 0, 0, 145,77, 82, 1, 0, 0, 0, 0, 70, 41, 66, 0, 0, 32, 0, 0, 16, 1, 4, 0, 0, 0, 0, 0, 25, 17, 12, 0, 0, 0, 0, 0, 2, 48, 6, 0,
- 0, 0, 0, 0, 10, 0, 24, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 69, 40, 10, 0, 0, 0, 0, 0, 1, 0, 20, 0, 0, 0, 0, 0, 18, 0, 4, 0,
- 0, 0, 0, 0, 10, 0, 8, 0, 0, 0, 0, 0, 2, 128,2, 0, 0, 0, 0, 0, 127,191,238,3, 0, 0, 0, 0, 16, 9, 18, 1, 0, 0, 0, 0, 64, 0, 10, 0,
- 0, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 144,76, 8, 0, 0, 0, 0, 0, 17, 9, 18, 0, 0, 0, 0, 0, 4, 1, 132,0,
- 0, 32, 16, 0, 19, 64, 14, 0, 0, 128,21, 0, 0, 0, 0, 0, 0, 40, 0, 0, 2, 136,44, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 0, 0, 16, 65, 12, 0,
- 0, 0, 0, 0, 40, 1, 0, 0, 0, 4, 0, 0, 208,25, 20, 0, 0, 0, 0, 0, 16, 0, 10, 0, 0, 232,32, 0, 17, 65, 20, 1, 0, 112,46, 0, 0, 0, 0, 0,
- 0, 112,51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 0, 0, 0, 0, 0, 27, 8, 28, 0, 0, 0, 0, 0, 16, 0, 6, 0, 0, 0, 0, 0, 0, 16, 0, 2,
- 0, 0, 0, 0, 89, 68, 8, 0, 0, 0, 0, 0, 0, 3, 4, 1, 0, 0, 0, 0, 81, 65, 2, 0, 0, 0, 0, 0, 1, 8, 20, 0, 0, 0, 0, 0, 68, 96, 32, 0,
- 0, 0, 0, 0, 132,0, 16, 0, 0, 0, 0, 0, 6, 0, 2, 0, 0, 0, 0, 0, 174,153,12, 0, 0, 0, 0, 0, 0, 0, 18, 1, 0, 32, 0, 0, 81, 65, 2, 0,
- 0, 0, 0, 0, 18, 73, 0, 0, 0, 240,32, 0, 16, 64, 8, 0, 0, 0, 0, 0, 145,81, 18, 0, 0, 0, 0, 0, 4, 32, 18, 0, 0, 0, 0, 0, 20, 64, 16, 0,
- 0, 0, 0, 0, 1, 32, 12, 2, 0, 0, 0, 0, 128,0, 10, 0, 0, 0, 0, 0, 0, 96, 4, 0, 0, 0, 0, 0, 111,185,38, 0, 0, 0, 0, 0, 145,72, 2, 0,
- 0, 0, 0, 0, 0, 64, 2, 1, 0, 0, 0, 0, 64, 4, 8, 0, 0, 0, 0, 0, 4, 96, 4, 0, 0, 0, 0, 0, 2, 0, 10, 0, 0, 0, 0, 0, 129,1, 4, 0,
- 0, 0, 0, 0, 0, 192,8, 0, 0, 0, 5, 0, 93, 97, 10, 0, 0, 0, 0, 0, 0, 41, 10, 1, 0, 0, 0, 0, 68, 0, 12, 3, 0, 0, 0, 0, 80, 1, 4, 0,
- 0, 4, 0, 0, 15, 57, 142,3, 0, 0, 0, 0, 17, 9, 0, 0, 0, 0, 0, 0, 81, 64, 0, 0, 0, 0, 0, 0, 73, 65, 28, 0, 0, 0, 0, 0, 147,33, 14, 1,
- 0, 0, 0, 0, 125,104,46, 2, 0, 0, 0, 0, 4, 32, 10, 0, 0, 0, 0, 0, 68, 41, 64, 0, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 8, 0, 17, 65, 0, 0,
- 0, 0, 0, 0, 128,48, 0, 0, 0, 0, 32, 0, 251,109,78, 1, 0, 0, 0, 0, 12, 61, 14, 1, 0, 0, 0, 0, 64, 0, 0, 1, 0, 0, 16, 0, 0, 44, 0, 0,
- 0, 0, 0, 0, 0, 4, 64, 0, 0, 0, 0, 0, 48, 89, 28, 0, 0, 0, 0, 0, 8, 24, 4, 0, 0, 0, 0, 0, 1, 104,4, 0, 0, 0, 0, 0, 144,80, 0, 0,
- 0, 0, 0, 0, 159,125,30, 1, 0, 0, 0, 0, 132,61, 10, 2, 0, 0, 0, 0, 8, 0, 16, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 16, 9, 8, 0,
- 0, 0, 0, 0, 17, 81, 68, 0, 0, 0, 0, 0, 34, 0, 64, 0, 0, 0, 0, 0, 8, 104,24, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 138,48, 14, 0,
- 0, 0, 0, 0, 8, 128,32, 0, 0, 32, 0, 0, 183,125,94, 2, 0, 0, 0, 0, 136,152,10, 2, 0, 0, 0, 0, 128,0, 0, 1, 0, 16, 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 18, 32, 34, 0, 0, 0, 0, 0, 2, 65, 8, 0, 0, 0, 0, 0, 8, 20, 0, 2, 0, 0, 0, 0, 0, 32, 58, 0, 0, 0, 0, 0, 16, 40, 2, 0,
- 0, 0, 0, 0, 5, 24, 6, 1, 0, 0, 0, 0, 17, 97, 16, 0, 16, 124,40, 0, 255,255,254,3, 0, 0, 0, 0, 32, 32, 10, 0, 0, 0, 0, 0, 53, 65, 44, 0,
- 0, 4, 0, 0, 0, 64, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 16, 0, 0, 136,40, 0, 0, 0, 128,0, 0, 16, 0, 0, 0, 0, 64, 0, 0, 1, 0, 8, 0,
- 16, 64, 0, 0, 255,255,255,3, 0, 0, 0, 0, 15, 44, 14, 0, 0, 0, 0, 0, 128,0, 0, 2, 0, 0, 0, 0, 23, 107,22, 1, 0, 32, 0, 0, 0, 47, 26, 0,
- 0, 96, 4, 0, 4, 56, 30, 1, 0, 0, 0, 0, 21, 108,14, 0, 0, 0, 0, 0, 128,4, 0, 2, 0, 0, 0, 0, 80, 64, 4, 0, 0, 0, 0, 0, 4, 104,0, 0,
- 0, 0, 0, 0, 0, 9, 6, 0, 16, 240,4, 0, 239,141,6, 0, 0, 0, 0, 0, 16, 73, 0, 0, 0, 32, 6, 0, 0, 1, 0, 0, 0, 0, 0, 0, 149,85, 28, 3,
- 0, 0, 0, 0, 0, 12, 18, 1, 0, 0, 0, 0, 129,64, 16, 0, 0, 0, 0, 0, 149,121,26, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 68, 108,0, 0,
- 0, 0, 0, 0, 255,217,94, 1, 0, 16, 0, 0, 1, 64, 2, 0, 0, 0, 0, 0, 8, 32, 6, 1, 0, 0, 0, 0, 16, 16, 16, 0, 0, 0, 0, 0, 32, 0, 16, 0,
- 0, 0, 0, 0, 20, 137,8, 0, 0, 0, 0, 0, 16, 128,4, 0, 0, 0, 0, 0, 0, 40, 10, 0, 0, 0, 0, 0, 0, 136,6, 0, 0, 32, 0, 0, 255,125,22, 3,
- 0, 0, 0, 0, 66, 62, 70, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 32, 4, 0, 0, 0, 4, 2, 0, 0, 0, 0, 64, 0, 16, 0, 0, 0, 0, 0, 1, 32, 2, 1,
- 0, 0, 0, 0, 1, 64, 64, 0, 0, 0, 0, 0, 16, 9, 16, 0, 0, 32, 0, 0, 16, 65, 4, 0, 0, 0, 0, 0, 17, 56, 0, 0, 0, 0, 0, 0, 32, 2, 16, 0,
- 0, 0, 0, 0, 64, 40, 16, 0, 0, 0, 0, 0, 140,44, 14, 2, 0, 0, 0, 0, 68, 25, 16, 0, 0, 0, 0, 0, 16, 4, 4, 0, 0, 0, 0, 0, 32, 1, 8, 0,
- 0, 0, 0, 0, 1, 73, 16, 0, 0, 0, 0, 0, 219,249,86, 0, 0, 0, 0, 0, 0, 232,8, 0, 0, 0, 0, 0, 17, 65, 4, 1, 0, 0, 0, 0, 8, 32, 14, 0,
- 0, 0, 0, 0, 16, 96, 0, 0, 0, 0, 0, 0, 25, 8, 0, 0, 0, 0, 0, 0, 8, 0, 12, 0, 0, 0, 0, 0, 0, 32, 8, 3, 0, 0, 0, 0, 130,0, 0, 0,
- 0, 0, 0, 0, 17, 1, 32, 0, 0, 0, 0, 0, 25, 121,26, 0, 16, 0, 0, 0, 8, 16, 86, 0, 0, 0, 0, 0, 144,0, 4, 0, 0, 0, 0, 0, 1, 21, 20, 0,
- 0, 0, 0, 0, 95, 126,142,2, 0, 0, 0, 0, 19, 73, 4, 1, 0, 0, 0, 0, 24, 0, 6, 1, 0, 112,32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 48, 32, 64, 0,
- 0, 0, 0, 0, 19, 1, 28, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 25, 96, 6, 0, 0, 0, 0, 0, 156,72, 8, 0, 0, 0, 0, 0, 80, 33, 4, 1,
- 0, 0, 0, 0, 25, 229,68, 0, 0, 0, 0, 0, 0, 34, 16, 0, 0, 0, 0, 0, 145,77, 22, 0, 0, 0, 0, 0, 0, 40, 2, 1, 0, 0, 0, 0, 8, 56, 70, 1,
- 0, 32, 0, 0, 0, 25, 36, 1, 0, 0, 0, 0, 0, 96, 0, 1, 0, 0, 0, 0, 96, 56, 0, 0, 0, 0, 0, 0, 191,125,127,3, 0, 0, 0, 0, 111,127,14, 3,
- 0, 0, 0, 0, 76, 64, 0, 0, 0, 0, 0, 0, 144,1, 0, 0, 0, 32, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 133,68, 20, 0, 0, 0, 0, 0, 145,69, 0, 0,
- 0, 0, 0, 0, 2, 0, 64, 0, 0, 0, 0, 0, 145,113,82, 1, 0, 0, 0, 0, 4, 0, 20, 0, 0, 0, 0, 0, 1, 40, 34, 0, 0, 0, 0, 0, 1, 0, 6, 0,
- 0, 0, 0, 0, 4, 48, 6, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 36, 0, 6, 2, 0, 0, 0, 0, 49, 32, 78, 3, 0, 0, 0, 0, 69, 36, 28, 0,
- 0, 0, 0, 0, 17, 128,0, 0, 0, 0, 0, 0, 149,65, 16, 0, 0, 32, 0, 0, 83, 209,86, 3, 0, 16, 0, 0, 72, 48, 14, 0, 0, 0, 0, 0, 17, 0, 6, 0,
- 0, 0, 0, 0, 8, 38, 78, 3, 0, 0, 0, 0, 65, 0, 12, 0, 0, 0, 0, 0, 48, 96, 4, 0, 0, 64, 0, 0, 69, 0, 8, 0, 0, 0, 0, 0, 68, 96, 88, 0,
- 0, 96, 0, 0, 9, 64, 12, 1, 0, 0, 0, 0, 68, 116,90, 1, 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 17, 73, 8, 0, 0, 0, 0, 0, 145,65, 18, 2,
- 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 20, 20, 4, 0, 0, 0, 0, 0, 51, 176,0, 1, 0, 0, 0, 0, 5, 48, 6, 0, 0, 0, 0, 0, 255,103,125,3,
- 0, 0, 0, 0, 197,41, 14, 0, 0, 32, 4, 0, 0, 48, 6, 0, 0, 0, 0, 0, 145,68, 2, 0, 0, 32, 0, 0, 213,217,94, 1, 0, 0, 0, 0, 64, 33, 6, 0,
- 0, 0, 0, 0, 1, 32, 0, 2, 0, 0, 0, 0, 8, 25, 2, 0, 0, 0, 0, 0, 12, 32, 8, 0, 0, 48, 0, 0, 0, 64, 6, 0, 0, 0, 0, 0, 4, 40, 2, 0,
- 0, 0, 0, 0, 196,4, 14, 3, 0, 0, 0, 0, 151,93, 20, 0, 0, 0, 0, 0, 2, 8, 4, 0, 0, 0, 0, 0, 5, 4, 4, 0, 0, 32, 0, 0, 0, 16, 4, 0,
- 0, 0, 0, 0, 147,97, 22, 1, 0, 0, 0, 0, 8, 16, 6, 1, 0, 0, 0, 0, 0, 32, 68, 0, 0, 0, 0, 0, 128,65, 8, 1, 0, 0, 0, 0, 0, 32, 64, 0,
- 0, 0, 0, 0, 8, 4, 10, 0, 0, 0, 0, 0, 4, 32, 64, 0, 0, 0, 0, 0, 0, 16, 100,0, 0, 0, 0, 0, 147,20, 8, 0, 0, 0, 0, 0, 0, 44, 0, 0,
- 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 145,0, 28, 0, 0, 0, 0, 0, 16, 0, 4, 2, 0, 0, 0, 0, 16, 16, 8, 0, 0, 0, 0, 0, 255,127,127,3,
- 0, 0, 0, 0, 206,127,76, 1, 0, 0, 0, 0, 3, 65, 0, 1, 0, 0, 0, 0, 129,4, 16, 0, 0, 0, 0, 0, 64, 67, 4, 1, 0, 0, 0, 0, 0, 0, 100,0,
- 0, 0, 0, 0, 133,0, 4, 0, 0, 0, 0, 0, 17, 65, 86, 1, 0, 0, 0, 0, 72, 40, 14, 2, 0, 0, 0, 0, 5, 32, 12, 0, 0, 0, 0, 0, 29, 40, 11, 0,
- 0, 0, 0, 0, 1, 65, 14, 0, 0, 0, 0, 0, 1, 96, 4, 0, 0, 0, 0, 0, 21, 32, 14, 2, 0, 0, 0, 0, 0, 32, 30, 2, 0, 0, 0, 0, 145,77, 18, 2,
- 0, 0, 0, 0, 145,97, 68, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 16, 56, 6, 0, 0, 0, 0, 0, 5, 40, 4, 0, 0, 0, 0, 0, 0, 9, 8, 0,
- 0, 0, 0, 0, 42, 57, 14, 0, 0, 0, 0, 0, 1, 8, 0, 1, 0, 0, 0, 0, 11, 0, 8, 0, 0, 0, 0, 0, 48, 77, 16, 0, 0, 0, 0, 0, 145,81, 4, 0,
- 0, 0, 0, 0, 0, 33, 6, 0, 0, 0, 0, 0, 8, 32, 6, 0, 0, 0, 0, 0, 31, 124,28, 0, 0, 0, 0, 0, 153,89, 20, 0, 0, 0, 0, 0, 24, 48, 14, 0,
- 0, 0, 0, 0, 65, 4, 16, 0, 0, 0, 0, 0, 4, 0, 64, 0, 0, 0, 0, 0, 189,65, 92, 1, 0, 0, 0, 0, 6, 4, 30, 0, 0, 0, 0, 0, 66, 8, 46, 1,
- 0, 0, 0, 0, 20, 48, 0, 0, 0, 0, 0, 0, 4, 8, 8, 0, 0, 0, 0, 0, 12, 120,5, 0, 0, 32, 0, 0, 17, 33, 4, 1, 0, 0, 0, 0, 5, 0, 4, 0,
- 0, 0, 0, 0, 145,65, 20, 1, 0, 0, 0, 0, 70, 44, 12, 2, 0, 0, 0, 0, 0, 76, 16, 0, 0, 0, 0, 0, 68, 0, 1, 0, 0, 8, 0, 0, 28, 41, 14, 0,
- 0, 0, 0, 0, 81, 0, 12, 0, 0, 0, 0, 0, 87, 104,12, 0, 0, 0, 0, 0, 1, 32, 6, 0, 0, 0, 0, 0, 4, 113,76, 0, 0, 32, 0, 0, 0, 48, 12, 0,
- 0, 0, 0, 0, 149,101,88, 0, 0, 0, 0, 0, 0, 96, 24, 0, 0, 144,0, 0, 215,127,22, 3, 0, 0, 0, 0, 16, 44, 2, 0, 0, 0, 0, 0, 20, 1, 4, 0,
- 0, 0, 0, 0, 56, 65, 0, 0, 0, 0, 0, 0, 2, 0, 12, 1, 0, 0, 0, 0, 0, 48, 64, 0, 0, 0, 0, 0, 0, 44, 68, 0, 0, 0, 0, 0, 24, 65, 0, 0,
- 0, 0, 0, 0, 132,1, 0, 2, 0, 0, 0, 0, 37, 32, 12, 0, 0, 0, 0, 0, 4, 64, 4, 0, 0, 0, 0, 0, 255,109,95, 1, 0, 0, 0, 0, 145,72, 16, 0,
- 0, 0, 0, 0, 138,56, 6, 1, 0, 32, 0, 0, 0, 40, 0, 0, 0, 224,40, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 96, 0, 0, 0, 0, 0, 0, 49, 77, 0, 0,
- 0, 0, 0, 0, 0, 16, 66, 0, 0, 0, 0, 0, 29, 42, 4, 0, 0, 0, 0, 0, 129,0, 4, 0, 0, 32, 0, 0, 25, 65, 0, 0, 0, 0, 0, 0, 21, 64, 4, 0,
- 0, 0, 0, 0, 64, 1, 4, 0, 0, 32, 0, 0, 2, 0, 14, 0, 0, 0, 0, 0, 72, 0, 4, 0, 0, 0, 0, 0, 0, 48, 10, 0, 0, 32, 0, 0, 179,217,84, 0,
- 0, 0, 0, 0, 64, 56, 2, 0, 0, 0, 0, 0, 0, 9, 14, 1, 0, 0, 0, 0, 16, 40, 12, 0, 0, 32, 0, 0, 0, 65, 4, 0, 0, 0, 0, 0, 8, 32, 10, 0,
- 0, 0, 0, 0, 29, 104,0, 0, 0, 0, 0, 0, 64, 32, 68, 0, 0, 0, 0, 0, 1, 8, 10, 0, 0, 0, 0, 0, 255,125,94, 3, 0, 0, 0, 0, 1, 45, 46, 0,
- 0, 0, 0, 0, 1, 24, 6, 1, 0, 0, 0, 0, 208,69, 30, 0, 0, 0, 0, 0, 80, 20, 4, 2, 0, 240,44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145,77, 20, 1,
- 0, 0, 0, 0, 64, 56, 0, 0, 0, 0, 0, 0, 24, 41, 2, 1, 0, 0, 0, 0, 162,0, 4, 0, 0, 0, 0, 0, 16, 17, 12, 1, 0, 0, 0, 0, 146,64, 0, 0,
- 0, 0, 0, 0, 85, 32, 4, 0, 0, 32, 0, 0, 109,16, 14, 0, 0, 0, 0, 0, 0, 65, 2, 0, 0, 0, 0, 0, 222,60, 142,2, 0, 0, 0, 0, 144,64, 16, 0,
- 0, 0, 0, 0, 16, 73, 2, 0, 0, 0, 0, 0, 0, 60, 4, 0, 0, 0, 0, 0, 17, 48, 0, 0, 0, 0, 0, 0, 243,77, 0, 0, 0, 0, 0, 0, 8, 32, 8, 0,
- 0, 0, 0, 0, 20, 28, 64, 0, 0, 0, 0, 0, 20, 1, 0, 2, 0, 0, 0, 0, 29, 44, 0, 0, 0, 0, 0, 0, 17, 9, 72, 0, 0, 0, 0, 0, 251,249,126,0,
- 0, 0, 0, 0, 8, 56, 14, 0, 0, 0, 0, 0, 0, 8, 30, 2, 0, 0, 0, 0, 0, 41, 4, 0, 0, 0, 0, 0, 32, 32, 4, 0, 0, 0, 0, 0, 0, 32, 24, 0,
- 0, 0, 0, 0, 136,17, 64, 0, 0, 0, 0, 0, 17, 97, 16, 3, 0, 0, 0, 0, 17, 9, 0, 2, 0, 160,0, 0, 39, 100,96, 0, 0, 96, 0, 0, 0, 0, 4, 0,
- 0, 32, 8, 0, 2, 0, 0, 0, 0, 32, 0, 0, 2, 0, 0, 0, 0, 32, 32, 0, 2, 0, 0, 0, 0, 0, 0, 0, 245,36, 6, 0, 0, 0, 0, 0, 2, 2, 0, 0,
- 0, 0, 0, 0, 33, 96, 6, 0, 0, 0, 0, 0, 16, 2, 4, 0, 0, 0, 0, 0, 32, 0, 0, 1, 16, 0, 0, 0, 255,255,255,3, 0, 0, 0, 0, 206,61, 62, 2,
- 0, 96, 4, 0, 183,24, 84, 1, 0, 0, 0, 0, 8, 24, 6, 0, 0, 0, 0, 0, 16, 40, 68, 1, 0, 0, 0, 0, 16, 24, 4, 0, 0, 0, 0, 0, 154,65, 12, 0,
- 0, 112,36, 0, 63, 53, 20, 1, 0, 0, 0, 0, 17, 8, 16, 0, 0, 0, 0, 0, 17, 80, 4, 0, 0, 0, 0, 0, 64, 32, 64, 0, 0, 224,16, 0, 144,4, 4, 0,
- 0, 0, 0, 0, 0, 88, 8, 0, 0, 32, 4, 0, 0, 89, 4, 1, 0, 0, 0, 0, 147,249,30, 3, 0, 0, 0, 0, 48, 32, 8, 0, 0, 0, 0, 0, 0, 16, 4, 1,
- 0, 0, 0, 0, 4, 0, 132,2, 0, 0, 0, 0, 0, 9, 0, 1, 0, 0, 0, 0, 238,186,174,0, 0, 0, 0, 0, 145,72, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 16, 1, 0, 32, 4, 0, 130,0, 12, 0, 0, 0, 0, 0, 18, 65, 0, 0, 0, 0, 0, 0, 17, 8, 10, 0, 0, 0, 0, 0, 0, 128,16, 0,
- 0, 0, 0, 0, 149,100,122,2, 0, 0, 0, 0, 1, 8, 16, 0, 0, 0, 0, 0, 17, 24, 28, 0, 0, 0, 4, 0, 177,121,92, 1, 0, 0, 0, 0, 0, 56, 14, 1,
- 0, 0, 0, 0, 138,0, 0, 0, 0, 32, 0, 0, 8, 24, 12, 0, 0, 0, 0, 0, 16, 48, 16, 0, 0, 0, 0, 0, 127,253,78, 2, 0, 0, 0, 0, 0, 0, 78, 0,
- 0, 0, 0, 0, 16, 16, 64, 0, 0, 0, 0, 0, 17, 44, 34, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 65, 4, 2, 0, 0, 0, 0, 4, 44, 18, 1,
- 0, 0, 0, 0, 145,193,0, 0, 0, 0, 0, 0, 238,190,46, 2, 0, 0, 0, 0, 128,4, 2, 0, 0, 0, 0, 0, 21, 41, 80, 0, 0, 0, 0, 0, 144,72, 0, 1,
- 0, 0, 0, 0, 148,0, 4, 1, 0, 0, 0, 0, 31, 1, 0, 2, 0, 160,5, 0, 86, 56, 12, 1, 0, 0, 0, 0, 132,0, 4, 0, 0, 0, 0, 0, 16, 88, 72, 0,
- 0, 0, 0, 0, 128,72, 4, 2, 0, 32, 0, 0, 0, 2, 4, 1, 0, 0, 0, 0, 211,105,22, 0, 0, 0, 0, 0, 0, 32, 72, 1, 0, 0, 0, 0, 1, 48, 10, 0,
- 0, 0, 0, 0, 0, 33, 4, 0, 0, 0, 0, 0, 0, 104,10, 0, 0, 0, 0, 0, 144,49, 0, 0, 0, 0, 0, 0, 17, 121,18, 1, 0, 0, 0, 0, 0, 168,34, 0,
- 0, 0, 0, 0, 1, 56, 6, 0, 0, 0, 0, 0, 0, 48, 0, 2, 0, 0, 0, 0, 16, 21, 0, 0, 0, 0, 0, 0, 16, 5, 0, 0, 0, 0, 0, 0, 17, 57, 0, 0,
- 0, 0, 0, 0, 8, 0, 68, 0, 0, 0, 0, 0, 92, 174,14, 1, 0, 0, 0, 0, 48, 21, 4, 0, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 0, 0, 150,32, 68, 0,
- 0, 0, 0, 0, 145,8, 2, 2, 0, 0, 0, 0, 85, 3, 0, 0, 0, 0, 0, 0, 145,5, 8, 0, 0, 0, 0, 0, 255,255,126,3, 0, 0, 0, 0, 34, 37, 14, 1,
- 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 0, 8, 16, 16, 0, 0, 0, 0, 0, 9, 48, 66, 3, 0, 0, 0, 0, 1, 73, 2, 1, 0, 0, 0, 0, 80, 64, 0, 0,
- 0, 0, 0, 0, 5, 0, 17, 0, 0, 0, 0, 0, 8, 32, 32, 0, 0, 0, 0, 0, 29, 40, 44, 2, 0, 0, 0, 0, 40, 0, 52, 0, 0, 0, 0, 0, 25, 0, 4, 0,
- 0, 32, 0, 0, 191,81, 126,1, 0, 32, 0, 0, 238,49, 46, 2, 0, 0, 0, 0, 76, 0, 8, 1, 0, 0, 0, 0, 8, 17, 0, 1, 0, 32, 0, 0, 225,48, 110,2,
- 0, 0, 0, 0, 93, 224,44, 2, 0, 0, 0, 0, 73, 65, 0, 2, 0, 0, 0, 0, 144,0, 12, 0, 0, 0, 0, 0, 129,8, 8, 0, 0, 0, 0, 0, 4, 48, 77, 0,
- 0, 0, 0, 0, 20, 112,4, 2, 0, 32, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 37, 49, 122,0, 0, 0, 0, 0, 80, 0, 0, 1, 0, 0, 0, 0, 148,69, 8, 0,
- 0, 0, 0, 0, 0, 32, 2, 1, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 144,73, 70, 2, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 80, 0, 6, 0,
- 0, 0, 0, 0, 8, 40, 0, 0, 0, 0, 0, 0, 19, 65, 18, 0, 0, 32, 0, 0, 255,111,124,3, 0, 0, 0, 0, 110,60, 62, 2, 0, 0, 0, 0, 24, 1, 0, 0,
- 0, 0, 0, 0, 144,69, 0, 0, 0, 0, 0, 0, 16, 89, 0, 0, 0, 0, 0, 0, 17, 73, 28, 3, 0, 0, 0, 0, 128,40, 36, 0, 0, 0, 0, 0, 8, 8, 10, 0,
- 0, 0, 0, 0, 68, 32, 140,0, 0, 0, 0, 0, 64, 8, 34, 0, 0, 0, 0, 0, 109,46, 60, 2, 0, 0, 0, 0, 4, 4, 136,0, 0, 0, 0, 0, 132,64, 12, 0,
- 0, 0, 0, 0, 145,68, 28, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 77, 116,13, 0, 0, 0, 0, 0, 85, 0, 8, 0, 0, 0, 0, 0, 148,0, 0, 0,
- 0, 0, 0, 0, 17, 64, 0, 2, 0, 0, 0, 0, 96, 0, 2, 0, 0, 0, 0, 0, 32, 0, 46, 1, 0, 0, 0, 0, 84, 96, 4, 0, 0, 0, 0, 0, 48, 0, 12, 0,
- 0, 96, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0, 1, 0, 0, 0, 0, 151,93, 8, 0, 0, 0, 0, 0, 145,73, 70, 3, 0, 0, 0, 0, 28, 0, 0, 0,
- 0, 32, 0, 0, 17, 65, 4, 1, 0, 0, 0, 0, 16, 56, 2, 0, 0, 0, 0, 0, 80, 32, 0, 0, 0, 0, 0, 0, 9, 1, 0, 1, 0, 0, 0, 0, 64, 0, 92, 0,
- 0, 16, 0, 0, 255,125,127,3, 0, 0, 0, 0, 0, 32, 30, 0, 0, 0, 0, 0, 144,1, 0, 3, 0, 0, 0, 0, 128,32, 2, 0, 0, 0, 0, 0, 64, 0, 128,0,
- 0, 0, 0, 0, 105,32, 12, 3, 0, 0, 0, 0, 74, 1, 12, 0, 0, 0, 0, 0, 32, 37, 0, 0, 0, 0, 0, 0, 249,125,23, 0, 0, 0, 0, 0, 9, 48, 46, 1,
- 0, 16, 0, 0, 16, 0, 12, 0, 0, 32, 0, 0, 17, 64, 12, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 64, 8, 16, 0, 0, 0, 0, 0, 16, 82, 8, 0,
- 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 1, 100,12, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 0, 0, 147,89, 20, 1, 0, 0, 0, 0, 2, 40, 2, 1,
- 0, 0, 0, 0, 128,64, 8, 0, 0, 32, 0, 0, 17, 65, 16, 0, 0, 0, 0, 0, 16, 96, 8, 0, 0, 32, 0, 0, 81, 1, 4, 0, 0, 0, 0, 0, 1, 74, 2, 0,
- 0, 0, 0, 0, 155,85, 28, 0, 0, 0, 0, 0, 14, 40, 30, 1, 0, 32, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 132,64, 0, 0, 0, 0, 0, 0, 4, 9, 14, 1,
- 0, 0, 0, 0, 21, 32, 8, 0, 0, 32, 2, 0, 4, 0, 2, 0, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 0, 0, 0, 32, 28, 0, 0, 0, 0, 0, 16, 68, 8, 0,
- 0, 0, 0, 0, 0, 8, 8, 1, 0, 0, 0, 0, 89, 96, 4, 0, 0, 0, 0, 0, 5, 32, 4, 0, 0, 32, 0, 0, 128,16, 32, 0, 0, 0, 0, 0, 149,65, 8, 0,
- 0, 0, 0, 0, 64, 16, 64, 0, 0, 0, 0, 0, 149,93, 22, 1, 0, 0, 0, 0, 64, 73, 0, 0, 0, 0, 0, 0, 16, 80, 0, 0, 0, 0, 0, 0, 16, 64, 4, 0,
- 0, 0, 0, 0, 64, 40, 42, 2, 0, 0, 0, 0, 9, 1, 24, 0, 0, 0, 0, 0, 4, 0, 4, 2, 0, 0, 0, 0, 2, 24, 0, 0, 0, 0, 0, 0, 149,253,76, 2,
- 0, 0, 0, 0, 0, 32, 66, 0, 0, 0, 0, 0, 21, 52, 10, 0, 0, 0, 0, 0, 24, 68, 0, 0, 0, 0, 0, 0, 19, 89, 0, 0, 0, 0, 0, 0, 0, 56, 10, 1,
- 0, 0, 0, 0, 20, 32, 130,0, 0, 0, 0, 0, 50, 65, 68, 0, 0, 0, 0, 0, 1, 32, 32, 0, 0, 0, 0, 0, 181,87, 94, 2, 0, 32, 0, 0, 12, 52, 70, 0,
- 0, 0, 4, 0, 17, 253,16, 1, 0, 0, 0, 0, 1, 8, 6, 1, 0, 0, 0, 0, 128,48, 0, 1, 0, 0, 0, 0, 20, 65, 0, 1, 0, 0, 0, 0, 149,121,6, 1,
- 0, 0, 0, 0, 0, 40, 6, 0, 0, 0, 0, 0, 140,0, 0, 0, 16, 32, 0, 0, 16, 25, 12, 0, 0, 0, 0, 0, 65, 65, 4, 0, 0, 32, 0, 0, 19, 136,0, 0,
- 0, 0, 0, 0, 16, 105,0, 0, 0, 0, 0, 0, 20, 60, 14, 1, 0, 0, 0, 0, 128,12, 0, 0, 0, 0, 0, 0, 144,40, 8, 0, 0, 0, 0, 0, 17, 9, 0, 1,
- 0, 0, 0, 0, 0, 40, 34, 0, 0, 0, 0, 0, 17, 8, 4, 0, 0, 0, 0, 0, 16, 40, 4, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 68, 8, 8, 0,
- 0, 0, 0, 0, 91, 108,14, 0, 0, 0, 0, 0, 1, 32, 10, 0, 0, 0, 0, 0, 25, 33, 0, 2, 0, 0, 0, 0, 1, 24, 8, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 32, 0, 19, 67, 18, 0, 0, 0, 0, 0, 74, 63, 126,1, 0, 0, 0, 0, 0, 8, 40, 0, 0, 0, 0, 0, 72, 0, 20, 0, 0, 0, 0, 0, 73, 0, 24, 0,
- 0, 0, 0, 0, 129,129,0, 0, 0, 0, 0, 0, 129,5, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 4, 1, 0, 1, 0, 0, 0, 0, 32, 2, 2, 0,
- 0, 0, 0, 0, 0, 28, 68, 0, 0, 0, 0, 0, 0, 234,4, 0, 0, 0, 0, 0, 2, 154,12, 0, 0, 0, 0, 0, 255,255,238,3, 0, 0, 0, 0, 96, 124,46, 0,
- 0, 0, 0, 0, 21, 69, 0, 1, 0, 0, 0, 0, 68, 36, 0, 0, 0, 0, 0, 0, 19, 73, 0, 1, 0, 0, 0, 0, 16, 9, 4, 1, 0, 0, 0, 0, 17, 8, 2, 0,
- 0, 0, 0, 0, 65, 8, 0, 0, 0, 0, 0, 0, 5, 64, 0, 0, 0, 0, 0, 0, 64, 128,8, 0, 0, 0, 0, 0, 4, 4, 1, 0, 0, 0, 0, 0, 149,68, 16, 1,
- 0, 0, 0, 0, 0, 164,4, 0, 0, 0, 0, 0, 16, 72, 6, 0, 0, 0, 0, 0, 32, 32, 16, 0, 0, 0, 0, 0, 177,57, 4, 0, 0, 0, 0, 0, 0, 1, 12, 0,
- 0, 0, 0, 0, 0, 17, 2, 1, 0, 0, 0, 0, 89, 105,86, 0, 0, 0, 0, 0, 16, 9, 16, 1, 0, 0, 0, 0, 32, 0, 2, 0, 0, 0, 0, 0, 20, 32, 132,0,
- 0, 0, 0, 0, 33, 40, 10, 2, 0, 0, 0, 0, 202,60, 110,2, 0, 0, 0, 0, 0, 36, 2, 0, 0, 0, 0, 0, 19, 13, 4, 0, 0, 0, 0, 0, 0, 4, 72, 0,
- 0, 0, 0, 0, 36, 0, 2, 0, 0, 0, 0, 0, 4, 36, 0, 0, 0, 0, 0, 0, 49, 37, 32, 0, 0, 0, 0, 0, 22, 125,84, 1, 0, 0, 0, 0, 5, 32, 8, 0,
- 0, 0, 0, 0, 148,1, 0, 0, 0, 0, 0, 0, 32, 1, 16, 0, 0, 0, 0, 0, 17, 8, 0, 1, 16, 32, 0, 0, 255,255,94, 0, 0, 0, 0, 0, 0, 25, 20, 0,
- 0, 160,0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 17, 73, 18, 1, 0, 0, 0, 0, 10, 40, 4, 0, 0, 0, 0, 0, 3, 97, 4, 1, 0, 32, 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 78, 8, 8, 0, 0, 0, 0, 0, 8, 32, 96, 0, 0, 96, 4, 0, 64, 0, 4, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0, 0, 25, 9, 22, 1,
- 0, 0, 0, 0, 16, 96, 2, 0, 0, 0, 0, 0, 0, 48, 4, 1, 0, 0, 0, 0, 17, 64, 24, 0, 0, 0, 0, 0, 4, 4, 0, 1, 0, 0, 0, 0, 144,32, 0, 0,
- 0, 0, 0, 0, 1, 0, 116,0, 0, 0, 0, 0, 4, 48, 128,0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 147,20, 24, 0,
- 0, 0, 0, 0, 16, 65, 18, 1, 0, 0, 0, 0, 24, 32, 128,0, 0, 0, 0, 0, 16, 144,0, 0, 0, 0, 0, 0, 1, 88, 16, 0, 0, 0, 0, 0, 17, 96, 16, 0,
- 0, 0, 0, 0, 0, 160,2, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 17, 81, 2, 0, 0, 32, 0, 0, 2, 0, 4, 0,
- 0, 0, 0, 0, 95, 77, 12, 1, 0, 0, 0, 0, 66, 40, 12, 3, 0, 0, 0, 0, 17, 64, 2, 1, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 16, 0, 24, 0,
- 0, 0, 0, 0, 132,12, 6, 1, 0, 0, 0, 0, 5, 32, 6, 0, 0, 0, 0, 0, 80, 0, 4, 0, 0, 112,32, 0, 211,89, 20, 1, 0, 0, 0, 0, 34, 32, 2, 0,
- 0, 0, 0, 0, 93, 32, 14, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 85, 224,8, 0, 0, 32, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 8, 0, 1,
- 0, 0, 0, 0, 4, 160,72, 0, 0, 96, 22, 0, 94, 6, 6, 0, 0, 0, 0, 0, 8, 0, 152,0, 0, 0, 0, 0, 2, 68, 8, 0, 0, 0, 0, 0, 0, 80, 0, 2,
- 0, 160,0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 249,109,12, 3, 0, 0, 0, 0, 0, 16, 26, 1, 0, 0, 0, 0, 17, 1, 22, 0, 0, 0, 0, 0, 211,88, 4, 0,
- 0, 32, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 18, 96, 0, 0, 0, 0, 0, 0, 16, 73, 4, 1, 0, 0, 0, 0, 20, 32, 0, 0, 0, 0, 0, 0, 1, 41, 16, 2,
- 0, 0, 0, 0, 253,189,78, 0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0, 0, 0, 128,1, 4, 0, 0, 0, 0, 0, 149,128,8, 1,
- 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 0, 0, 17, 200,0, 0, 0, 0, 0, 0, 95, 127,30, 1, 0, 0, 0, 0, 49, 8, 64, 0, 16, 128,0, 0, 158,89, 76, 1,
- 0, 0, 0, 0, 16, 8, 0, 1, 0, 0, 0, 0, 32, 40, 4, 0, 0, 0, 0, 0, 154,57, 4, 1, 0, 0, 0, 0, 0, 40, 12, 1, 0, 0, 0, 0, 161,16, 0, 0,
- 0, 0, 0, 0, 0, 8, 2, 1, 0, 0, 0, 0, 132,72, 68, 0, 0, 0, 0, 0, 24, 145,70, 0, 0, 224,7, 0, 0, 0, 4, 0, 0, 32, 60, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 215,221,77, 0, 0, 0, 0, 0, 68, 33, 2, 0, 0, 0, 0, 0, 145,64, 16, 0, 0, 0, 0, 0, 128,0, 2, 1, 0, 0, 0, 0, 16, 68, 0, 0,
- 0, 0, 0, 0, 20, 32, 8, 0, 0, 0, 0, 0, 4, 8, 134,0, 0, 0, 0, 0, 17, 100,0, 0, 0, 0, 0, 0, 128,8, 2, 0, 0, 0, 0, 0, 32, 130,0, 0,
- 0, 32, 0, 0, 0, 128,6, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0, 64, 48, 16, 0, 0, 0, 0, 0, 17, 66, 0, 0, 0, 0, 0, 0, 64, 40, 8, 0,
- 0, 8, 0, 0, 151,121,94, 2, 0, 96, 4, 0, 19, 1, 4, 1, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 24, 1, 0, 0, 0, 0, 16, 121,0, 1,
- 0, 32, 0, 0, 32, 56, 6, 0, 0, 0, 0, 0, 18, 8, 0, 0, 0, 0, 0, 0, 21, 37, 16, 2, 0, 64, 0, 0, 149,192,0, 0, 0, 0, 0, 0, 0, 76, 0, 0,
- 0, 0, 0, 0, 64, 44, 4, 0, 0, 0, 0, 0, 16, 24, 1, 0, 0, 4, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 29, 65, 56, 1, 0, 0, 0, 0, 255,61, 190,3,
- 0, 0, 0, 0, 128,69, 0, 0, 0, 224,39, 0, 255,251,78, 1, 0, 0, 0, 0, 10, 40, 6, 0, 0, 0, 0, 0, 1, 64, 128,1, 0, 0, 0, 0, 64, 0, 64, 0,
- 0, 0, 0, 0, 8, 32, 14, 1, 0, 0, 0, 0, 0, 16, 72, 0, 0, 0, 0, 0, 20, 32, 4, 0, 0, 0, 0, 0, 8, 0, 2, 1, 0, 0, 0, 0, 64, 33, 2, 0,
- 0, 0, 0, 0, 0, 160,16, 0, 0, 0, 0, 0, 147,80, 24, 0, 0, 0, 0, 0, 0, 128,64, 0, 0, 0, 0, 0, 25, 1, 8, 1, 0, 96, 2, 0, 8, 48, 6, 2,
- 0, 0, 0, 0, 64, 80, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 32, 0, 0, 3, 96, 0, 0, 0, 0, 0, 0, 12, 44, 6, 2, 0, 0, 0, 0, 16, 41, 4, 0,
- 0, 32, 0, 0, 6, 56, 70, 1, 0, 0, 0, 0, 8, 8, 6, 1, 0, 0, 0, 0, 124,36, 13, 2, 0, 0, 0, 0, 145,196,0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
- 0, 0, 0, 0, 49, 65, 0, 1, 0, 32, 0, 0, 17, 89, 20, 1, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 80, 33, 0, 0, 0, 0, 0, 0, 148,141,12, 2,
- 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 133,32, 8, 2, 0, 0, 0, 0, 16, 41, 0, 0, 0, 0, 0, 0, 20, 16, 100,0,
- 0, 32, 1, 0, 8, 6, 6, 0, 0, 0, 0, 0, 221,53, 126,1, 0, 0, 0, 0, 4, 4, 28, 2, 0, 0, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 12, 132,8, 0,
- 0, 0, 0, 0, 52, 56, 64, 0, 0, 0, 0, 0, 140,52, 0, 0, 0, 0, 0, 0, 144,64, 4, 0, 0, 0, 0, 0, 16, 17, 0, 1, 0, 0, 0, 0, 16, 8, 8, 0,
- 0, 0, 0, 0, 220,184,172,2, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 16, 132,0, 0, 0, 0, 0, 0, 92, 36, 12, 0, 0, 32, 0, 0, 49, 57, 12, 0,
- 0, 32, 0, 0, 17, 1, 4, 1, 0, 0, 0, 0, 128,4, 12, 0, 0, 32, 8, 0, 48, 0, 0, 0, 0, 0, 0, 0, 132,0, 0, 2, 0, 0, 0, 0, 255,117,254,1,
- 0, 0, 0, 0, 128,4, 4, 2, 0, 0, 0, 0, 147,25, 4, 1, 0, 0, 0, 0, 10, 16, 4, 0, 0, 0, 0, 0, 50, 4, 0, 0, 0, 0, 0, 0, 64, 64, 4, 0,
- 0, 0, 0, 0, 122,20, 5, 0, 0, 0, 0, 0, 72, 1, 4, 0, 0, 32, 0, 0, 1, 8, 6, 0, 0, 0, 0, 0, 8, 144,2, 0, 0, 32, 4, 0, 211,73, 78, 1,
- 0, 0, 0, 0, 129,0, 88, 0, 0, 0, 0, 0, 114,1, 5, 0, 0, 0, 0, 0, 52, 0, 4, 0, 0, 0, 0, 0, 64, 33, 4, 0, 0, 0, 0, 0, 178,243,28, 0,
- 0, 0, 0, 0, 128,64, 4, 0, 0, 0, 0, 0, 190,49, 30, 0, 0, 240,63, 0, 127,251,78, 1, 0, 240,23, 0, 0, 0, 0, 0, 0, 240,19, 0, 0, 0, 0, 0,
- 0, 208,1, 0, 0, 0, 0, 0, 0, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 128,1, 0, 0, 0, 0, 16, 64, 18, 0, 0, 0, 0, 0, 16, 32, 6, 0,
- 0, 0, 0, 0, 0, 32, 128,0, 0, 96, 0, 0, 144,20, 12, 1, 0, 0, 0, 0, 0, 65, 8, 0, 0, 0, 0, 0, 147,133,4, 0, 0, 0, 0, 0, 34, 4, 12, 0,
- 0, 32, 1, 0, 16, 24, 4, 0, 0, 0, 0, 0, 2, 0, 14, 0, 0, 0, 0, 0, 24, 8, 12, 2, 0, 0, 0, 0, 33, 0, 224,0, 0, 224,10, 0, 0, 148,0, 0,
- 0, 144,18, 0, 0, 0, 0, 0, 0, 16, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 16, 4, 0, 0, 0, 0, 0, 204,60, 46, 2, 0, 0, 0, 0, 0, 1, 64, 1,
- 0, 0, 0, 0, 8, 16, 12, 0, 0, 0, 0, 0, 16, 25, 70, 0, 0, 0, 0, 0, 48, 1, 4, 0, 0, 0, 0, 0, 176,57, 70, 1, 0, 112,4, 0, 31, 95, 30, 3,
- 0, 0, 0, 0, 44, 36, 0, 0, 0, 0, 0, 0, 18, 73, 4, 1, 0, 32, 0, 0, 16, 106,8, 0, 0, 96, 3, 0, 90, 82, 44, 1, 0, 0, 0, 0, 4, 36, 10, 0,
- 0, 0, 0, 0, 21, 32, 0, 0, 0, 32, 0, 0, 2, 8, 64, 0, 0, 0, 0, 0, 16, 89, 8, 0, 0, 0, 0, 0, 149,92, 4, 2, 0, 0, 0, 0, 64, 32, 4, 0,
- 0, 0, 0, 0, 0, 140,0, 0, 0, 0, 0, 0, 17, 33, 16, 0, 0, 0, 0, 0, 144,88, 6, 0, 0, 0, 0, 0, 0, 56, 2, 0, 0, 0, 0, 0, 249,125,66, 3,
- 0, 0, 0, 0, 128,20, 2, 1, 0, 0, 0, 0, 65, 56, 6, 1, 0, 0, 0, 0, 52, 40, 6, 0, 0, 8, 0, 0, 0, 48, 34, 0, 0, 0, 0, 0, 226,8, 68, 0,
- 0, 0, 0, 0, 206,253,62, 1, 0, 0, 0, 0, 16, 16, 128,0, 0, 0, 0, 0, 4, 4, 2, 0, 0, 0, 0, 0, 16, 13, 0, 0, 0, 0, 0, 0, 24, 1, 4, 0,
- 0, 0, 0, 0, 67, 113,4, 0, 0, 0, 0, 0, 148,193,0, 0, 0, 0, 0, 0, 68, 32, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 217,105,22, 1,
- 0, 0, 0, 0, 20, 32, 14, 2, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 17, 9, 20, 1, 0, 0, 0, 0, 20, 16, 12, 0, 0, 0, 0, 0, 25, 121,22, 0,
- 0, 0, 0, 0, 4, 57, 10, 0, 0, 0, 0, 0, 1, 96, 0, 0, 0, 0, 0, 0, 17, 21, 4, 0, 0, 0, 0, 0, 0, 32, 10, 1, 0, 0, 0, 0, 2, 4, 0, 0,
- 0, 0, 0, 0, 17, 49, 0, 0, 0, 0, 0, 0, 93, 44, 44, 0, 0, 0, 0, 0, 9, 0, 6, 0, 0, 0, 0, 0, 0, 144,4, 0, 0, 0, 8, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 20, 10, 60, 0, 0, 0, 0, 0, 17, 68, 0, 0, 0, 0, 0, 0, 17, 88, 20, 0, 0, 0, 0, 0, 125,125,60, 3, 0, 0, 0, 0, 72, 32, 10, 1,
- 0, 0, 0, 0, 8, 64, 8, 0, 0, 0, 0, 0, 49, 125,94, 0, 0, 0, 0, 0, 21, 8, 0, 0, 0, 0, 0, 0, 2, 38, 110,1, 0, 0, 0, 0, 0, 0, 112,0,
- 0, 0, 0, 0, 85, 96, 40, 0, 0, 0, 0, 0, 0, 4, 16, 0, 0, 0, 0, 0, 88, 0, 4, 0, 0, 0, 0, 0, 19, 81, 4, 1, 0, 0, 0, 0, 20, 32, 2, 0,
- 0, 0, 0, 0, 84, 32, 132,0, 0, 0, 0, 0, 4, 16, 128,2, 0, 0, 0, 0, 64, 32, 10, 0, 0, 0, 0, 0, 145,64, 8, 0, 0, 0, 0, 0, 16, 65, 4, 2,
- 0, 0, 0, 0, 83, 149,4, 2, 0, 0, 0, 0, 17, 65, 20, 1, 0, 0, 0, 0, 12, 0, 6, 1, 0, 32, 0, 0, 64, 80, 4, 0, 0, 0, 0, 0, 255,103,124,3,
- 0, 0, 0, 0, 76, 185,110,0, 0, 0, 0, 0, 0, 96, 0, 2, 0, 16, 32, 0, 145,65, 22, 1, 0, 0, 0, 0, 64, 32, 2, 0, 0, 0, 0, 0, 8, 0, 34, 0,
- 0, 32, 0, 0, 170,184,14, 1, 0, 96, 4, 0, 0, 0, 4, 0, 0, 32, 4, 0, 0, 0, 12, 0, 0, 0, 0, 0, 80, 0, 2, 0, 0, 0, 0, 0, 145,73, 72, 0,
- 0, 0, 0, 0, 1, 64, 32, 0, 0, 0, 0, 0, 48, 104,8, 0, 0, 0, 0, 0, 4, 32, 0, 1, 0, 0, 0, 0, 81, 65, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
- 0, 0, 0, 0, 17, 73, 0, 1, 0, 0, 0, 0, 1, 56, 46, 1, 0, 0, 0, 0, 52, 32, 64, 0, 0, 0, 0, 0, 18, 16, 112,0, 0, 0, 0, 0, 21, 65, 16, 0,
- 0, 0, 0, 0, 16, 8, 2, 1, 0, 0, 0, 0, 68, 0, 6, 2, 0, 0, 0, 0, 254,255,14, 3, 0, 0, 0, 0, 16, 89, 4, 1, 0, 0, 0, 0, 128,68, 0, 0,
- 0, 0, 0, 0, 0, 73, 0, 1, 0, 0, 0, 0, 17, 41, 4, 1, 0, 0, 0, 0, 151,93, 76, 0, 0, 0, 0, 0, 2, 16, 2, 0, 0, 0, 0, 0, 8, 48, 2, 0,
- 0, 0, 0, 0, 147,1, 12, 0, 0, 0, 0, 0, 0, 64, 128,0, 0, 96, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 24, 1, 44, 0, 0, 0, 0, 0, 8, 32, 34, 0,
- 0, 0, 0, 0, 2, 80, 0, 0, 0, 0, 1, 0, 16, 1, 0, 0, 0, 0, 0, 0, 25, 81, 0, 0, 0, 0, 0, 0, 145,0, 8, 0, 0, 0, 0, 0, 149,121,4, 1,
- 0, 0, 0, 0, 19, 16, 6, 0, 0, 32, 0, 0, 0, 17, 8, 1, 0, 32, 4, 0, 4, 16, 4, 0, 0, 0, 0, 0, 129,4, 0, 0, 0, 0, 0, 0, 128,128,0, 0,
- 0, 0, 0, 0, 95, 255,95, 3, 0, 0, 0, 0, 198,32, 140,0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 81, 107,64, 0, 0, 0, 0, 0, 1, 40, 6, 0,
- 0, 0, 0, 0, 16, 4, 8, 0, 0, 0, 0, 0, 153,60, 6, 1, 0, 0, 0, 0, 145,121,20, 0, 0, 0, 0, 0, 5, 96, 5, 0, 0, 96, 0, 0, 16, 76, 0, 0,
- 0, 0, 0, 0, 4, 32, 4, 0, 0, 64, 0, 0, 176,80, 28, 0, 0, 0, 0, 0, 1, 80, 2, 0, 0, 0, 0, 0, 170,52, 116,2, 0, 0, 0, 0, 21, 4, 0, 0,
- 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0, 0, 64, 24, 10, 0, 0, 0, 0, 0, 16, 24, 74, 0, 0, 0, 0, 0, 149,69, 8, 0, 0, 0, 0, 0, 128,105,0, 2,
- 0, 0, 0, 0, 36, 178,36, 0, 0, 0, 0, 0, 149,253,77, 0, 0, 0, 0, 0, 4, 36, 6, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 129,65, 0, 0,
- 0, 96, 0, 0, 16, 16, 4, 0, 0, 0, 0, 0, 32, 56, 2, 0, 0, 0, 0, 0, 17, 8, 6, 0, 0, 0, 0, 0, 0, 56, 192,0, 0, 160,1, 0, 153,89, 28, 1,
- 0, 0, 0, 0, 17, 65, 66, 0, 0, 32, 32, 0, 0, 1, 0, 0, 0, 64, 0, 64, 157,100,126,2, 0, 0, 0, 0, 4, 4, 5, 0, 0, 0, 0, 0, 0, 9, 42, 0,
- 0, 0, 0, 0, 17, 112,64, 1, 0, 0, 0, 0, 0, 8, 132,0, 0, 0, 0, 0, 85, 73, 22, 0, 0, 0, 0, 0, 0, 56, 130,0, 0, 0, 0, 0, 126,61, 111,3,
- 0, 0, 0, 0, 129,69, 0, 0, 0, 0, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 75, 2, 0, 0, 0, 0, 0, 145,1, 16, 0, 0, 0, 0, 0, 1, 48, 12, 0,
- 0, 0, 0, 0, 93, 73, 72, 0, 0, 0, 0, 0, 0, 0, 42, 3, 0, 0, 0, 0, 12, 8, 8, 0, 0, 0, 0, 0, 17, 9, 4, 1, 0, 0, 0, 0, 127,46, 15, 0,
- 0, 0, 0, 0, 64, 33, 0, 1, 0, 0, 0, 0, 17, 64, 36, 0, 0, 0, 0, 0, 144,28, 29, 0, 0, 0, 0, 0, 148,65, 78, 0, 0, 0, 0, 0, 32, 40, 8, 0,
- 0, 0, 0, 0, 16, 40, 9, 0, 0, 0, 0, 0, 16, 20, 0, 0, 0, 0, 0, 0, 16, 42, 2, 1, 0, 0, 0, 0, 17, 96, 4, 0, 0, 0, 0, 0, 221,61, 78, 3,
- 0, 0, 0, 0, 8, 40, 6, 1, 0, 0, 0, 0, 0, 17, 4, 1, 0, 128,0, 0, 27, 1, 20, 0, 0, 0, 0, 0, 144,128,8, 0, 0, 0, 0, 0, 20, 89, 204,1,
- 0, 0, 0, 0, 8, 8, 6, 0, 0, 32, 1, 0, 191,45, 92, 2, 0, 64, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 32, 6, 0, 0, 0, 0, 0, 17, 0, 12, 0,
- 0, 0, 0, 0, 1, 32, 14, 0, 16, 8, 0, 0, 20, 64, 8, 0, 0, 0, 0, 0, 17, 81, 64, 3, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 12, 32, 0, 2,
- 0, 32, 0, 0, 0, 0, 38, 0, 0, 64, 0, 0, 64, 0, 32, 0, 0, 48, 2, 0, 93, 105,90, 3, 0, 16, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 255,127,255,3,
- 0, 0, 0, 0, 144,0, 0, 2, 0, 0, 0, 0, 147,64, 20, 0, 0, 0, 0, 0, 149,5, 8, 1, 0, 0, 0, 0, 10, 8, 78, 1, 0, 0, 0, 0, 16, 25, 8, 0,
- 0, 0, 0, 0, 18, 57, 4, 0, 0, 0, 0, 0, 16, 56, 10, 1, 0, 0, 0, 0, 2, 0, 6, 0, 0, 64, 0, 0, 187,249,78, 1, 0, 0, 0, 0, 16, 0, 16, 1,
- 0, 0, 0, 0, 16, 32, 2, 1, 0, 0, 0, 0, 68, 32, 4, 0, 0, 32, 0, 0, 4, 0, 68, 0, 0, 0, 0, 0, 192,16, 4, 0, 0, 0, 0, 0, 32, 16, 0, 0,
- 0, 0, 0, 0, 89, 0, 20, 0, 0, 0, 0, 0, 4, 160,0, 0, 0, 0, 0, 0, 72, 56, 12, 0, 0, 0, 0, 0, 16, 1, 68, 0, 0, 0, 0, 0, 49, 8, 4, 0,
- 0, 32, 0, 0, 29, 9, 76, 1, 0, 0, 0, 0, 144,5, 4, 0, 0, 0, 0, 0, 42, 16, 6, 0, 0, 0, 0, 0, 151,216,84, 0, 0, 0, 0, 0, 253,101,28, 3,
- 0, 0, 0, 0, 129,69, 16, 0, 0, 0, 0, 0, 4, 32, 8, 2, 0, 0, 0, 0, 17, 121,78, 1, 0, 0, 0, 0, 0, 104,16, 0, 0, 0, 0, 0, 24, 41, 70, 0,
- 0, 32, 0, 0, 16, 32, 4, 0, 0, 32, 0, 0, 0, 56, 66, 0, 0, 240,30, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 113,48, 4, 0,
- 0, 0, 0, 0, 52, 68, 8, 0, 0, 0, 0, 0, 48, 105,0, 2, 0, 0, 0, 0, 182,77, 84, 0, 0, 0, 0, 0, 49, 1, 64, 1, 0, 0, 0, 0, 1, 8, 22, 1,
- 0, 0, 0, 0, 0, 0, 130,0, 0, 0, 0, 0, 20, 8, 0, 0, 0, 0, 0, 0, 149,129,92, 2, 0, 0, 0, 0, 0, 1, 128,0, 0, 0, 0, 0, 92, 60, 12, 0,
- 0, 0, 0, 0, 58, 1, 68, 0, 0, 0, 0, 0, 12, 0, 8, 0, 0, 32, 0, 0, 136,40, 6, 0, 0, 96, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 24, 40, 0, 0,
- 0, 0, 0, 0, 26, 24, 12, 0, 0, 0, 0, 0, 17, 73, 0, 2, 0, 0, 0, 0, 17, 40, 0, 0, 0, 32, 0, 0, 16, 9, 0, 0, 0, 0, 0, 0, 255,125,126,3,
- 0, 0, 0, 0, 12, 52, 30, 2, 0, 0, 0, 0, 33, 16, 76, 1, 0, 32, 0, 0, 59, 97, 92, 0, 0, 0, 0, 0, 66, 0, 64, 0, 0, 0, 0, 0, 48, 128,68, 0,
- 0, 0, 0, 0, 17, 9, 12, 1, 0, 0, 0, 0, 8, 8, 128,0, 0, 0, 0, 0, 148,68, 0, 0, 0, 0, 0, 0, 18, 33, 8, 0, 0, 0, 0, 0, 128,48, 70, 0,
- 0, 0, 0, 0, 140,56, 6, 2, 0, 0, 0, 0, 17, 73, 4, 0, 0, 0, 0, 0, 17, 80, 16, 0, 0, 0, 0, 0, 17, 80, 0, 2, 0, 0, 0, 0, 248,40, 44, 2,
- 0, 0, 0, 0, 68, 0, 8, 0, 0, 0, 0, 0, 146,28, 80, 0, 0, 0, 0, 0, 34, 0, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 83, 48, 4, 0,
- 0, 0, 0, 0, 221,97, 12, 0, 0, 32, 4, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 20, 6, 0, 0, 0, 0, 0, 4, 49, 2, 0, 0, 0, 0, 0, 16, 33, 0, 0,
- 0, 32, 0, 0, 33, 104,68, 2, 0, 0, 0, 0, 148,108,12, 0, 0, 0, 0, 0, 129,72, 8, 2, 0, 0, 0, 0, 72, 32, 0, 0, 0, 32, 0, 0, 128,80, 4, 0,
- 0, 0, 0, 0, 16, 33, 8, 0, 0, 0, 0, 0, 65, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 150,129,12, 0, 0, 0, 0, 0, 144,97, 0, 0,
- 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 2, 0, 223,122,172,2, 0, 0, 0, 0, 64, 33, 18, 0, 0, 96, 2, 0, 127,254,76, 2, 0, 0, 0, 0, 20, 0, 64, 0,
- 0, 0, 0, 0, 144,4, 4, 0, 0, 32, 0, 0, 144,56, 68, 1, 0, 0, 0, 0, 8, 8, 10, 1, 0, 0, 0, 0, 89, 139,68, 0, 0, 0, 0, 0, 65, 32, 68, 0,
- 0, 0, 0, 0, 10, 0, 4, 0, 0, 0, 0, 0, 176,49, 64, 0, 0, 32, 0, 0, 168,176,78, 0, 0, 32, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 232,40, 22, 0,
- 0, 0, 0, 0, 20, 9, 4, 0, 0, 0, 0, 0, 16, 96, 8, 2, 0, 0, 0, 0, 209,57, 20, 0, 0, 0, 0, 0, 17, 65, 8, 0, 0, 32, 0, 0, 178,120,68, 0,
- 0, 0, 0, 0, 144,72, 0, 0, 0, 16, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 177,24, 4, 0, 0, 0, 0, 0, 93, 45, 12, 0, 0, 0, 0, 0, 81, 9, 0, 2,
- 0, 0, 0, 0, 64, 0, 6, 1, 0, 0, 0, 0, 145,25, 4, 0, 0, 0, 0, 0, 4, 32, 16, 0, 0, 0, 0, 0, 144,24, 4, 0, 0, 0, 0, 0, 32, 72, 0, 0,
- 0, 0, 0, 0, 22, 76, 12, 0, 0, 0, 0, 0, 16, 9, 0, 1, 0, 0, 0, 0, 0, 40, 64, 0, 0, 32, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 225,12, 2,
- 0, 32, 0, 0, 17, 121,4, 0, 0, 0, 0, 0, 144,33, 8, 0, 0, 0, 0, 0, 255,255,222,3, 0, 0, 0, 0, 191,57, 118,1, 0, 0, 0, 0, 128,1, 72, 0,
- 0, 0, 0, 0, 149,5, 0, 0, 0, 0, 0, 0, 146,249,124,0, 0, 0, 0, 0, 130,0, 4, 1, 0, 0, 0, 0, 187,117,14, 3, 0, 0, 0, 0, 0, 40, 22, 1,
- 0, 0, 0, 0, 80, 32, 4, 0, 0, 0, 0, 0, 68, 36, 2, 0, 0, 0, 0, 0, 0, 17, 4, 0, 0, 0, 0, 0, 32, 24, 0, 0, 0, 0, 0, 0, 73, 40, 2, 0,
- 0, 0, 0, 0, 17, 5, 4, 0, 0, 0, 0, 0, 2, 32, 2, 0, 0, 0, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 59, 153,68, 0, 0, 0, 0, 0, 125,37, 204,2,
- 0, 0, 0, 0, 0, 68, 8, 0, 0, 0, 0, 0, 12, 20, 0, 2, 0, 0, 0, 0, 0, 17, 68, 1, 0, 0, 0, 0, 184,89, 100,0, 0, 32, 0, 0, 0, 32, 6, 0,
- 0, 32, 0, 0, 128,5, 32, 0, 0, 0, 0, 0, 176,0, 4, 0, 0, 4, 0, 0, 148,53, 12, 0, 0, 0, 0, 0, 64, 64, 16, 0, 0, 0, 0, 0, 17, 80, 0, 0,
- 0, 0, 0, 0, 144,16, 8, 2, 0, 96, 0, 0, 128,40, 12, 0, 0, 0, 0, 0, 200,53, 68, 0, 0, 0, 0, 0, 27, 57, 4, 1, 0, 96, 0, 0, 62, 105,70, 1,
- 0, 32, 32, 0, 2, 64, 104,0, 0, 0, 0, 0, 0, 44, 4, 0, 0, 0, 0, 0, 254,63, 156,3, 0, 0, 0, 0, 149,5, 0, 2, 0, 96, 4, 0, 0, 8, 68, 1,
- 0, 0, 0, 0, 144,49, 4, 0, 0, 0, 0, 0, 68, 48, 6, 0, 0, 0, 0, 0, 208,16, 0, 0, 0, 0, 0, 0, 209,56, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0,
- 0, 0, 0, 0, 51, 25, 68, 0, 0, 0, 0, 0, 4, 8, 16, 0, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 127,119,12, 2, 0, 0, 0, 0, 17, 9, 10, 0,
- 0, 0, 0, 0, 5, 9, 10, 1, 0, 0, 0, 0, 1, 16, 10, 0, 0, 32, 0, 0, 10, 0, 76, 0, 0, 0, 0, 0, 4, 68, 104,0, 0, 0, 0, 0, 148,69, 29, 0,
- 0, 0, 0, 0, 16, 9, 68, 1, 0, 0, 0, 0, 81, 73, 20, 0, 0, 0, 0, 0, 93, 125,28, 0, 0, 96, 0, 0, 9, 32, 12, 0, 0, 0, 0, 0, 81, 32, 8, 0,
- 0, 0, 0, 0, 0, 160,0, 2, 0, 0, 0, 0, 16, 64, 16, 1, 0, 0, 0, 0, 64, 32, 4, 2, 0, 64, 0, 0, 133,52, 0, 0, 0, 0, 0, 0, 255,255,191,3,
- 0, 96, 60, 0, 139,16, 4, 0, 0, 32, 0, 0, 66, 0, 4, 0, 0, 0, 0, 0, 149,69, 20, 3, 0, 0, 0, 0, 145,73, 16, 0, 0, 0, 0, 0, 0, 4, 10, 1,
- 0, 0, 0, 0, 147,125,76, 0, 0, 0, 0, 0, 0, 56, 18, 0, 0, 48, 0, 0, 179,121,78, 1, 0, 0, 0, 0, 0, 40, 10, 1, 0, 32, 0, 0, 128,0, 12, 0,
- 0, 0, 0, 0, 8, 0, 70, 1, 0, 32, 0, 0, 128,68, 8, 0, 0, 0, 0, 0, 17, 4, 0, 1, 0, 0, 1, 0, 217,125,118,3, 0, 0, 0, 0, 0, 132,0, 1,
- 0, 0, 0, 0, 145,73, 4, 1, 0, 32, 0, 0, 128,0, 4, 0, 0, 240,43, 0, 14, 8, 12, 1, 0, 0, 0, 0, 0, 34, 6, 0, 0, 0, 0, 0, 196,56, 14, 0,
- 0, 0, 0, 0, 80, 8, 0, 0, 0, 0, 0, 0, 16, 104,0, 0, 0, 0, 0, 0, 73, 65, 42, 0, 0, 0, 0, 0, 68, 1, 4, 0, 0, 0, 0, 0, 33, 68, 8, 0,
- 0, 0, 0, 0, 17, 69, 20, 1, 0, 32, 0, 0, 0, 8, 0, 1, 0, 32, 8, 0, 16, 0, 4, 0, 0, 0, 0, 0, 8, 0, 10, 1, 0, 96, 1, 0, 2, 0, 4, 0,
- 0, 64, 4, 0, 0, 16, 0, 0, 0, 0, 0, 0, 211,121,12, 1, 0, 0, 0, 0, 66, 32, 10, 1, 0, 32, 0, 0, 16, 16, 4, 1, 0, 0, 0, 0, 2, 0, 4, 1,
- 0, 0, 0, 0, 17, 91, 2, 0, 0, 0, 0, 0, 20, 44, 12, 0, 0, 0, 0, 0, 16, 1, 20, 0, 0, 0, 0, 0, 129,97, 16, 0, 0, 0, 0, 0, 145,69, 2, 0,
- 0, 0, 0, 0, 127,127,76, 0, 0, 0, 0, 0, 196,32, 74, 0, 0, 0, 0, 0, 4, 52, 4, 0, 0, 0, 0, 0, 144,9, 0, 1, 0, 0, 0, 0, 253,241,86, 1,
- 0, 224,30, 0, 64, 0, 4, 0, 0, 0, 0, 0, 0, 1, 76, 0, 0, 32, 0, 0, 0, 129,12, 0, 0, 0, 0, 0, 16, 96, 44, 0, 0, 96, 0, 0, 144,0, 0, 0,
- 0, 32, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 4, 0, 100,0, 0, 0, 0, 0, 17, 16, 2, 0, 0, 0, 0, 0, 243,144,4, 0, 0, 0, 0, 0, 1, 8, 2, 1,
- 0, 0, 0, 0, 17, 5, 20, 1, 0, 0, 0, 0, 95, 37, 28, 3, 0, 0, 0, 0, 144,68, 0, 0, 0, 0, 0, 0, 17, 9, 14, 1, 0, 0, 0, 0, 66, 96, 4, 0,
- 0, 0, 0, 0, 3, 8, 78, 0, 0, 0, 0, 0, 149,73, 0, 1, 0, 96, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 17, 67, 6, 3, 0, 0, 0, 0, 0, 40, 8, 1,
- 0, 0, 0, 0, 8, 49, 4, 0, 0, 0, 0, 0, 255,255,127,3, 0, 0, 0, 0, 0, 36, 28, 0, 0, 0, 0, 0, 17, 65, 6, 1, 0, 0, 0, 0, 144,5, 0, 2,
- 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 0, 0, 81, 81, 68, 2, 0, 0, 0, 0, 20, 32, 12, 0, 0, 0, 0, 0, 1, 40, 12, 0, 0, 0, 0, 0, 4, 0, 132,0,
- 0, 0, 0, 0, 219,121,30, 1, 0, 0, 0, 0, 16, 104,14, 1, 0, 0, 0, 0, 0, 20, 12, 0, 0, 0, 0, 0, 1, 112,4, 1, 0, 0, 0, 0, 64, 48, 0, 0,
- 0, 0, 0, 0, 85, 32, 6, 0, 0, 0, 0, 0, 153,89, 4, 0, 0, 0, 0, 0, 16, 8, 14, 1, 0, 0, 0, 0, 17, 193,12, 1, 0, 0, 0, 0, 64, 160,0, 2,
- 0, 0, 0, 0, 0, 1, 76, 1, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 145,73, 92, 0, 0, 0, 0, 0, 2, 176,22, 0, 0, 0, 0, 0, 8, 9, 14, 1,
- 0, 0, 0, 0, 16, 1, 104,0, 0, 0, 0, 0, 49, 65, 20, 1, 0, 0, 0, 0, 64, 8, 6, 0, 0, 0, 0, 0, 92, 40, 12, 0, 0, 0, 0, 0, 0, 8, 84, 0,
- 0, 0, 0, 0, 21, 73, 8, 0, 0, 0, 0, 0, 16, 65, 4, 1, 0, 0, 0, 0, 148,121,12, 0, 0, 0, 0, 0, 0, 8, 16, 1, 0, 0, 0, 0, 159,93, 93, 3,
- 0, 0, 0, 0, 12, 48, 6, 1, 0, 0, 0, 0, 51, 125,98, 1, 0, 0, 0, 0, 152,8, 6, 1, 0, 0, 0, 0, 24, 32, 0, 0, 0, 0, 0, 0, 8, 4, 6, 0,
- 0, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 18, 144,64, 0, 0, 0, 0, 0, 21, 93, 8, 1, 0, 0, 0, 0, 17, 73, 4, 1, 0, 240,52, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 149,124,30, 3, 0, 0, 0, 0, 14, 41, 16, 1, 0, 32, 0, 0, 16, 5, 0, 1, 0, 0, 0, 0, 1, 104,18, 0, 0, 0, 0, 0, 35, 0, 0, 0,
- 0, 32, 0, 0, 179,253,14, 2, 0, 0, 0, 0, 0, 65, 4, 0, 0, 32, 0, 0, 54, 57, 68, 1, 0, 0, 0, 0, 16, 12, 0, 0, 0, 0, 0, 0, 3, 8, 8, 0,
- 0, 0, 0, 0, 21, 65, 20, 0, 0, 0, 0, 0, 147,65, 16, 2, 0, 0, 0, 0, 53, 85, 68, 3, 0, 0, 0, 0, 8, 72, 6, 0, 0, 0, 0, 0, 255,253,94, 2,
- 0, 0, 0, 0, 2, 58, 6, 0, 0, 0, 0, 0, 17, 1, 20, 0, 0, 0, 0, 0, 89, 64, 24, 0, 0, 0, 0, 0, 89, 106,16, 0, 0, 0, 0, 0, 16, 0, 28, 0,
- 0, 0, 0, 0, 4, 16, 4, 0, 144,252,13, 0, 255,255,255,3, 128,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 32, 0, 0, 0, 0, 0, 9, 128,0, 0,
- 0, 16, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0, 64, 0, 0, 255,255,255,3, 0, 0, 0, 0, 0, 56, 8, 0, 0, 0, 1, 0, 27, 73, 22, 0,
- 0, 0, 0, 0, 72, 56, 14, 0, 0, 0, 0, 0, 20, 0, 2, 0, 0, 0, 0, 0, 6, 8, 2, 2, 0, 0, 0, 0, 1, 32, 8, 0, 0, 0, 0, 0, 10, 40, 0, 1,
- 0, 32, 0, 0, 26, 0, 4, 0, 0, 32, 0, 0, 72, 16, 102,0, 0, 0, 0, 0, 0, 96, 78, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 0, 34, 2, 0,
- 0, 0, 0, 0, 1, 104,0, 0, 0, 0, 0, 0, 149,69, 8, 1, 0, 0, 0, 0, 4, 204,8, 0, 0, 0, 0, 0, 16, 40, 18, 0, 0, 0, 0, 0, 2, 64, 1, 0,
- 0, 8, 0, 0, 187,89, 82, 1, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 16, 73, 0, 1, 0, 0, 0, 0, 84, 0, 4, 0, 0, 0, 0, 0, 0, 56, 10, 0,
- 0, 0, 0, 0, 133,0, 0, 2, 0, 0, 0, 0, 84, 8, 0, 2, 0, 0, 0, 0, 96, 0, 10, 1, 0, 0, 0, 0, 12, 40, 14, 2, 0, 0, 0, 0, 0, 168,16, 0,
- 0, 0, 0, 0, 53, 72, 0, 0, 0, 0, 0, 0, 64, 0, 6, 0, 0, 0, 0, 0, 16, 33, 2, 1, 0, 0, 0, 0, 0, 4, 8, 1, 0, 0, 0, 0, 81, 41, 16, 0,
- 0, 0, 0, 0, 40, 0, 6, 1, 0, 0, 0, 0, 0, 68, 2, 0, 0, 0, 0, 0, 5, 120,190,0, 0, 0, 0, 0, 32, 0, 0, 2, 16, 0, 0, 0, 80, 33, 4, 0,
- 0, 0, 0, 0, 25, 96, 0, 0, 0, 0, 0, 0, 128,72, 0, 0, 0, 0, 0, 0, 17, 69, 16, 0, 0, 0, 0, 0, 255,253,122,3, 0, 0, 0, 0, 170,53, 106,1,
- 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 19, 65, 16, 0, 0, 0, 0, 0, 64, 96, 14, 0, 0, 0, 0, 0, 33, 64, 24, 0, 0, 0, 0, 0, 17, 64, 66, 1,
- 0, 0, 0, 0, 4, 1, 2, 0, 0, 0, 0, 0, 9, 65, 68, 0, 0, 0, 0, 0, 75, 48, 142,1, 0, 0, 0, 0, 126,178,140,2, 0, 0, 0, 0, 17, 0, 18, 0,
- 0, 4, 0, 0, 33, 64, 0, 0, 0, 0, 0, 0, 145,0, 4, 0, 0, 16, 32, 0, 19, 113,20, 1, 0, 0, 0, 0, 202,113,78, 0, 0, 0, 0, 0, 0, 81, 0, 0,
- 0, 0, 0, 0, 72, 98, 6, 3, 0, 0, 0, 0, 0, 64, 4, 1, 0, 0, 0, 0, 212,112,132,0, 0, 0, 0, 0, 65, 0, 4, 0, 0, 0, 0, 0, 0, 128,12, 0,
- 0, 0, 0, 0, 32, 32, 84, 0, 0, 0, 0, 0, 16, 105,4, 0, 0, 0, 0, 0, 68, 224,94, 0, 0, 0, 0, 0, 20, 16, 0, 0, 0, 0, 0, 0, 145,64, 2, 0,
- 0, 0, 0, 0, 66, 32, 0, 0, 0, 0, 0, 0, 0, 40, 14, 1, 0, 32, 4, 0, 64, 65, 0, 0, 0, 0, 0, 0, 0, 128,128,0, 16, 0, 0, 0, 63, 249,22, 0,
- 0, 0, 0, 0, 84, 46, 6, 0, 0, 0, 0, 0, 89, 65, 0, 0, 0, 32, 4, 0, 0, 32, 4, 2, 0, 0, 0, 0, 0, 72, 64, 0, 0, 0, 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 22, 0, 0, 32, 0, 0, 0, 122,2, 1, 0, 32, 0, 0, 50, 73, 12, 0, 0, 32, 0, 0, 0, 48, 76, 0, 0, 32, 0, 0, 0, 96, 16, 0,
- 0, 112,44, 0, 0, 0, 4, 0, 0, 0, 0, 0, 28, 104,6, 0, 0, 0, 0, 0, 1, 73, 0, 0, 0, 0, 0, 0, 80, 32, 18, 0, 0, 16, 0, 0, 251,81, 28, 1,
- 0, 0, 0, 0, 64, 33, 22, 0, 0, 0, 0, 0, 13, 104,6, 0, 0, 0, 0, 0, 0, 104,4, 0, 0, 0, 0, 0, 2, 40, 38, 1, 16, 0, 0, 0, 255,253,124,3,
- 0, 0, 0, 0, 11, 172,110,0, 0, 32, 32, 0, 0, 1, 4, 1, 128,0, 0, 0, 20, 0, 4, 0, 0, 0, 0, 0, 17, 64, 20, 0, 0, 0, 0, 0, 145,9, 18, 0,
- 0, 0, 4, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0, 104,0, 0, 0, 4, 0, 0, 17, 73, 18, 1, 0, 0, 0, 0, 29, 8, 4, 0, 0, 32, 0, 0, 2, 24, 70, 0,
- 0, 0, 0, 0, 0, 104,2, 2, 0, 96, 4, 0, 55, 16, 4, 0, 0, 0, 0, 0, 24, 140,46, 3, 0, 32, 0, 0, 36, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 2,
- 0, 0, 0, 0, 0, 24, 0, 1, 0, 0, 0, 0, 42, 224,4, 2, 0, 0, 0, 0, 26, 32, 42, 0, 0, 0, 0, 0, 34, 32, 4, 2, 0, 0, 0, 0, 4, 40, 8, 0,
- 0, 32, 0, 0, 27, 1, 4, 0, 0, 0, 0, 0, 80, 168,38, 1, 0, 0, 0, 0, 0, 1, 6, 0, 0, 32, 0, 0, 80, 1, 6, 0, 0, 0, 0, 0, 49, 73, 126,1,
- 0, 0, 0, 0, 14, 44, 42, 0, 0, 0, 0, 0, 24, 24, 2, 1, 0, 0, 0, 0, 4, 44, 0, 0, 0, 0, 0, 0, 113,0, 0, 0, 0, 0, 0, 0, 0, 160,6, 0,
- 0, 32, 8, 0, 0, 8, 0, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 32, 8, 4, 0, 0, 0, 0, 0, 4, 136,8, 0, 16, 0, 0, 0, 29, 201,94, 1,
- 0, 64, 0, 0, 14, 40, 14, 0, 0, 0, 0, 0, 10, 64, 0, 0, 0, 0, 0, 0, 0, 72, 4, 0, 0, 0, 0, 0, 4, 64, 12, 0, 0, 0, 0, 0, 68, 40, 12, 2,
- 0, 32, 2, 0, 16, 1, 4, 0, 0, 0, 0, 0, 17, 16, 8, 0, 0, 0, 0, 0, 22, 32, 30, 2, 0, 0, 0, 0, 17, 73, 20, 1, 0, 0, 2, 0, 5, 80, 36, 0,
- 0, 0, 0, 0, 129,9, 24, 0, 0, 0, 0, 0, 12, 0, 0, 2, 16, 0, 0, 0, 1, 65, 16, 0, 0, 96, 8, 0, 20, 5, 4, 0, 0, 0, 0, 0, 5, 8, 10, 2,
- 0, 32, 0, 0, 255,255,126,3, 0, 0, 0, 0, 238,191,108,1, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 5, 64, 4, 0, 0, 0, 0, 0, 19, 64, 0, 0,
- 0, 0, 0, 0, 72, 64, 0, 2, 0, 0, 0, 0, 0, 72, 8, 0, 0, 0, 0, 0, 4, 26, 18, 0, 0, 0, 0, 0, 128,32, 128,0, 0, 0, 0, 0, 25, 33, 4, 1,
- 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 0, 0, 0, 0, 0, 147,121,84, 1, 0, 0, 0, 0, 0, 48, 6, 2, 0, 0, 0, 0, 8, 43, 66, 0,
- 0, 0, 0, 0, 113,120,4, 0, 0, 0, 0, 0, 64, 152,40, 0, 0, 0, 0, 0, 0, 32, 36, 2, 0, 32, 0, 0, 123,40, 206,1, 0, 0, 0, 0, 0, 73, 16, 0,
- 0, 0, 0, 0, 127,108,44, 0, 0, 0, 0, 0, 18, 64, 4, 0, 0, 0, 0, 0, 81, 65, 8, 0, 0, 0, 0, 0, 3, 16, 12, 0, 0, 0, 0, 0, 19, 73, 28, 1,
- 0, 32, 2, 0, 4, 32, 68, 0, 0, 0, 0, 0, 18, 96, 76, 1, 0, 0, 0, 0, 80, 65, 0, 0, 0, 0, 0, 0, 16, 24, 8, 0, 0, 32, 0, 0, 5, 48, 92, 2,
- 0, 0, 0, 0, 18, 72, 12, 0, 0, 32, 0, 0, 16, 104,0, 0, 0, 0, 0, 0, 1, 40, 130,0, 0, 112,0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 40, 16, 0,
- 0, 0, 0, 0, 17, 73, 70, 1, 0, 0, 0, 0, 198,136,42, 0, 0, 0, 0, 0, 65, 9, 46, 1, 0, 0, 0, 0, 117,104,40, 0, 0, 0, 0, 0, 128,0, 60, 0,
- 0, 0, 0, 0, 10, 56, 124,3, 0, 32, 0, 0, 53, 9, 20, 1, 0, 32, 0, 0, 81, 1, 0, 0, 0, 32, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 8, 40, 10, 0,
- 0, 0, 0, 0, 206,104,94, 2, 0, 0, 0, 0, 4, 64, 4, 2, 0, 0, 0, 0, 37, 111,10, 1, 0, 0, 0, 0, 144,1, 8, 0, 0, 0, 0, 0, 93, 108,44, 2,
- 0, 0, 0, 0, 4, 56, 92, 2, 0, 0, 0, 0, 148,100,72, 0, 0, 0, 0, 0, 145,121,86, 1, 0, 0, 0, 0, 64, 32, 0, 1, 0, 0, 0, 0, 88, 40, 6, 2,
- 0, 32, 16, 0, 16, 0, 4, 0, 0, 0, 0, 0, 17, 64, 16, 1, 0, 96, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 64, 96, 16, 0, 0, 0, 0, 0, 5, 8, 12, 0,
- 0, 0, 0, 0, 128,40, 0, 0, 0, 0, 0, 0, 8, 8, 14, 1, 0, 0, 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 255,253,93, 1, 0, 0, 0, 0, 78, 56, 54, 2,
- 0, 0, 0, 0, 16, 1, 2, 2, 0, 0, 0, 0, 0, 40, 4, 2, 0, 0, 0, 0, 10, 25, 70, 1, 0, 0, 0, 0, 8, 72, 8, 0, 0, 96, 0, 0, 10, 0, 4, 0,
- 0, 32, 0, 0, 59, 81, 64, 0, 0, 0, 0, 0, 8, 40, 78, 0, 0, 0, 0, 0, 25, 120,44, 0, 0, 96, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 17, 89, 40, 1,
- 0, 0, 0, 0, 72, 32, 62, 0, 0, 0, 0, 0, 9, 65, 16, 0, 0, 0, 0, 0, 72, 56, 30, 1, 0, 0, 0, 0, 2, 24, 4, 0, 0, 0, 0, 0, 25, 104,28, 0,
- 0, 0, 0, 0, 8, 160,0, 0, 0, 0, 0, 0, 17, 105,6, 0, 0, 0, 0, 0, 64, 40, 64, 0, 0, 0, 0, 0, 16, 42, 6, 0, 0, 0, 0, 0, 129,104,16, 0,
- 0, 0, 0, 0, 1, 65, 20, 0, 0, 0, 0, 0, 80, 104,0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 32, 0, 0, 98, 52, 46, 0, 0, 0, 0, 0, 0, 10, 4, 1,
- 0, 0, 0, 0, 64, 40, 36, 0, 0, 0, 0, 0, 1, 16, 4, 0, 0, 96, 0, 0, 191,125,126,0, 0, 0, 0, 0, 6, 184,79, 0, 0, 0, 0, 0, 0, 72, 16, 0,
- 0, 0, 0, 0, 41, 201,16, 1, 0, 0, 0, 0, 25, 65, 0, 2, 0, 64, 0, 0, 16, 145,0, 1, 0, 0, 0, 0, 77, 40, 6, 1, 0, 0, 0, 0, 21, 0, 4, 2,
- 0, 0, 0, 0, 144,129,68, 0, 0, 0, 0, 0, 21, 73, 2, 1, 0, 0, 0, 0, 8, 136,10, 1, 0, 0, 0, 0, 0, 49, 68, 1, 0, 0, 0, 0, 8, 8, 16, 0,
- 0, 0, 0, 0, 64, 104,0, 0, 0, 0, 0, 0, 145,64, 0, 0, 0, 0, 0, 0, 84, 41, 0, 2, 0, 0, 0, 0, 152,20, 20, 0, 0, 0, 0, 0, 17, 73, 6, 1,
- 0, 0, 0, 0, 111,8, 172,0, 0, 0, 0, 0, 17, 9, 2, 1, 0, 0, 0, 0, 16, 88, 10, 0, 0, 0, 0, 0, 56, 13, 0, 0, 0, 0, 0, 0, 16, 0, 66, 0,
- 0, 0, 0, 0, 19, 9, 8, 0, 0, 0, 0, 0, 8, 0, 68, 1, 0, 0, 0, 0, 144,1, 0, 1, 0, 32, 0, 0, 17, 0, 4, 0, 0, 0, 0, 0, 17, 97, 6, 0,
- 0, 0, 0, 0, 68, 41, 6, 2, 0, 0, 0, 0, 192,0, 16, 0, 0, 0, 0, 0, 9, 56, 14, 3, 0, 0, 0, 0, 77, 40, 8, 0, 0, 0, 0, 0, 17, 1, 8, 1,
- 0, 0, 0, 0, 24, 104,8, 0, 0, 0, 0, 0, 21, 120,92, 0, 0, 0, 0, 0, 1, 32, 14, 1, 0, 0, 0, 0, 17, 65, 0, 2, 0, 64, 0, 0, 215,44, 54, 0,
- 0, 128,0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 8, 0, 0, 32, 36, 0, 16, 96, 0, 0, 0, 0, 0, 0, 223,32, 10, 0,
- 0, 0, 0, 0, 12, 128,0, 0, 128,8, 1, 0, 119,242,28, 2, 0, 128,0, 0, 2, 0, 130,0, 0, 0, 0, 0, 34, 6, 2, 0, 0, 0, 0, 0, 127,251,190,3,
- 0, 0, 0, 0, 0, 32, 22, 0, 0, 0, 0, 0, 40, 8, 6, 0, 0, 0, 0, 0, 149,69, 0, 0, 0, 32, 0, 0, 17, 9, 0, 1, 0, 32, 0, 0, 0, 0, 36, 0,
- 0, 0, 0, 0, 19, 91, 28, 1, 0, 0, 0, 0, 10, 32, 6, 1, 0, 0, 0, 0, 16, 1, 6, 0, 0, 0, 0, 0, 1, 0, 8, 2, 0, 0, 0, 0, 7, 36, 20, 0,
- 0, 0, 0, 0, 19, 209,20, 0, 0, 0, 0, 0, 16, 96, 4, 0, 0, 0, 0, 0, 4, 136,0, 0, 0, 64, 0, 0, 1, 1, 4, 0, 0, 32, 20, 0, 32, 0, 4, 0,
- 0, 0, 0, 0, 93, 65, 12, 0, 0, 0, 0, 0, 0, 16, 8, 2, 0, 0, 0, 0, 0, 68, 16, 0, 0, 0, 0, 0, 21, 97, 22, 0, 0, 0, 0, 0, 0, 32, 50, 0,
- 0, 0, 0, 0, 48, 137,36, 0, 0, 0, 0, 0, 1, 0, 12, 2, 0, 0, 0, 0, 8, 152,36, 0, 0, 0, 0, 0, 36, 160,4, 0, 0, 0, 0, 0, 0, 8, 36, 0,
- 0, 0, 0, 0, 145,129,12, 0, 0, 0, 0, 0, 0, 160,12, 0, 0, 0, 32, 0, 63, 113,63, 2, 0, 0, 0, 0, 0, 112,38, 0, 0, 0, 0, 0, 79, 112,44, 2,
- 0, 0, 0, 0, 0, 96, 28, 0, 0, 0, 0, 0, 5, 65, 4, 0, 0, 0, 0, 0, 1, 8, 8, 0, 0, 0, 0, 0, 0, 32, 10, 2, 0, 0, 0, 0, 1, 4, 8, 1,
- 0, 0, 0, 0, 21, 133,12, 0, 0, 0, 0, 0, 1, 225,0, 0, 0, 0, 0, 0, 17, 1, 28, 0, 0, 0, 0, 0, 205,45, 42, 1, 0, 0, 0, 0, 48, 0, 8, 0,
- 0, 0, 0, 0, 52, 10, 0, 0, 0, 0, 0, 0, 160,16, 8, 2, 16, 160,2, 0, 215,93, 122,1, 0, 0, 0, 0, 254,255,126,3, 0, 0, 0, 0, 19, 72, 2, 0,
- 0, 0, 0, 0, 136,32, 16, 0, 0, 0, 0, 0, 145,68, 0, 0, 0, 0, 0, 0, 2, 8, 2, 0, 0, 32, 0, 0, 154,1, 68, 0, 0, 0, 0, 0, 0, 4, 2, 2,
- 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 16, 0, 2, 1, 0, 0, 0, 0, 1, 96, 2, 0, 0, 0, 0, 0, 8, 60, 142,0, 0, 0, 0, 0, 16, 17, 4, 2,
- 0, 0, 0, 0, 16, 153,68, 0, 0, 0, 0, 0, 1, 52, 66, 0, 0, 0, 0, 0, 2, 0, 36, 0, 0, 0, 0, 0, 61, 93, 16, 0, 0, 0, 0, 0, 2, 4, 8, 0,
- 0, 0, 0, 0, 0, 160,24, 0, 0, 0, 0, 0, 101,0, 8, 0, 0, 0, 0, 0, 18, 8, 0, 1, 0, 0, 0, 0, 19, 65, 0, 0, 0, 0, 0, 0, 0, 32, 80, 0,
- 0, 0, 0, 0, 0, 132,4, 0, 0, 0, 0, 0, 59, 233,20, 0, 0, 0, 0, 0, 17, 72, 2, 0, 0, 0, 0, 0, 16, 25, 4, 1, 0, 0, 0, 0, 0, 49, 18, 0,
- 0, 32, 0, 0, 17, 121,4, 1, 0, 32, 0, 0, 16, 33, 4, 0, 0, 0, 0, 0, 93, 105,28, 1, 0, 0, 0, 0, 8, 36, 0, 0, 0, 0, 0, 0, 144,64, 0, 1,
- 0, 32, 0, 0, 8, 8, 6, 1, 0, 0, 0, 0, 128,0, 32, 0, 0, 0, 0, 0, 17, 233,22, 1, 0, 0, 0, 0, 64, 180,4, 0, 0, 0, 0, 0, 0, 8, 0, 3,
- 0, 32, 2, 0, 0, 8, 0, 0, 16, 0, 0, 0, 149,65, 68, 2, 0, 36, 0, 0, 9, 217,22, 0, 0, 32, 0, 0, 16, 9, 4, 0, 0, 0, 0, 0, 145,73, 6, 0,
- 0, 0, 0, 0, 8, 8, 18, 0, 0, 0, 0, 0, 20, 40, 0, 0, 0, 0, 0, 0, 2, 0, 12, 3, 0, 0, 0, 0, 27, 253,28, 0, 0, 0, 0, 0, 0, 44, 2, 0,
- 0, 0, 0, 0, 17, 73, 16, 1, 0, 0, 0, 0, 0, 32, 3, 0, 0, 0, 1, 0, 127,249,62, 1, 0, 0, 0, 0, 12, 32, 130,0, 0, 0, 0, 0, 32, 96, 12, 2,
- 0, 0, 0, 0, 17, 65, 28, 1, 0, 32, 0, 0, 18, 48, 46, 1, 0, 240,41, 0, 16, 64, 76, 0, 0, 240,63, 0, 10, 16, 6, 0, 0, 32, 0, 0, 0, 32, 12, 0,
- 0, 0, 0, 0, 16, 73, 64, 0, 0, 32, 0, 0, 144,1, 4, 0, 0, 0, 0, 0, 16, 117,12, 0, 0, 32, 0, 0, 8, 32, 6, 1, 0, 0, 0, 0, 181,89, 94, 0,
- 0, 0, 0, 0, 66, 32, 130,0, 0, 0, 0, 0, 8, 40, 2, 0, 0, 0, 0, 0, 2, 11, 12, 0, 0, 0, 0, 0, 189,56, 172,0, 0, 0, 0, 0, 0, 32, 6, 2,
- 0, 0, 0, 0, 17, 32, 6, 0, 0, 0, 0, 0, 1, 4, 8, 0, 0, 0, 0, 0, 255,253,127,3, 0, 0, 0, 0, 8, 181,14, 0, 0, 0, 0, 0, 145,65, 84, 0,
- 0, 0, 0, 0, 8, 16, 2, 0, 0, 0, 0, 0, 1, 64, 18, 1, 0, 0, 0, 0, 133,68, 0, 0, 0, 32, 4, 0, 18, 217,20, 0, 0, 0, 16, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 6, 188,46, 2, 0, 0, 0, 0, 18, 0, 4, 1, 0, 32, 0, 0, 48, 9, 4, 1, 0, 96, 0, 0, 14, 16, 6, 1, 0, 0, 0, 0, 0, 64, 18, 0,
- 0, 0, 0, 0, 41, 0, 4, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 49, 25, 12, 1, 0, 240,31, 0, 32, 0, 0, 0, 0, 0, 0, 0, 16, 97, 20, 0,
- 0, 0, 0, 0, 81, 97, 0, 0, 0, 0, 0, 0, 2, 33, 18, 0, 0, 0, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 0, 128,72, 0, 0, 0, 0, 0, 0, 168,0, 0,
- 0, 0, 0, 0, 23, 253,122,1, 0, 0, 0, 0, 0, 48, 68, 0, 0, 0, 0, 0, 18, 168,0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 53, 8, 12, 0,
- 0, 0, 0, 0, 196,0, 32, 0, 0, 0, 0, 0, 34, 16, 100,0, 0, 32, 0, 0, 128,136,0, 0, 0, 32, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 147,57, 76, 0,
- 0, 0, 0, 0, 17, 17, 16, 0, 0, 32, 0, 0, 146,89, 4, 1, 0, 0, 0, 0, 17, 32, 4, 1, 0, 224,56, 0, 32, 16, 12, 0, 0, 0, 0, 0, 145,32, 74, 0,
- 0, 0, 0, 0, 17, 1, 34, 1, 0, 0, 0, 0, 0, 8, 14, 2, 0, 240,7, 0, 0, 16, 12, 3, 0, 0, 0, 0, 18, 33, 4, 1, 0, 0, 0, 0, 2, 48, 8, 0,
- 0, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 48, 26, 0, 0, 0, 0, 0, 0, 112,0, 0, 0, 0, 0, 0, 255,252,63, 3, 0, 0, 0, 0, 8, 244,38, 1,
- 0, 0, 0, 0, 80, 0, 8, 0, 0, 0, 0, 0, 133,76, 16, 0, 0, 32, 0, 0, 64, 40, 4, 0, 0, 240,42, 0, 1, 8, 0, 0, 0, 32, 0, 0, 17, 137,4, 1,
- 0, 0, 0, 0, 136,16, 4, 0, 0, 112,5, 0, 16, 129,68, 0, 0, 32, 0, 0, 0, 161,22, 0, 0, 0, 0, 0, 160,52, 62, 0, 0, 96, 0, 0, 40, 8, 12, 1,
- 0, 0, 0, 0, 64, 105,64, 0, 0, 0, 0, 0, 17, 4, 4, 0, 0, 0, 0, 0, 29, 205,44, 0, 0, 0, 0, 0, 150,9, 6, 0, 0, 0, 0, 0, 16, 32, 4, 1,
- 0, 32, 0, 0, 1, 36, 4, 0, 0, 0, 0, 0, 20, 32, 68, 0, 0, 0, 0, 0, 17, 161,0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 221,237,76, 2,
- 0, 32, 0, 0, 12, 16, 28, 0, 0, 0, 0, 0, 0, 8, 64, 0, 0, 0, 0, 0, 33, 64, 0, 1, 0, 32, 0, 0, 0, 96, 4, 0, 0, 0, 0, 0, 8, 56, 28, 0,
- 0, 0, 0, 0, 68, 64, 0, 0, 0, 0, 0, 0, 148,217,6, 0, 0, 0, 0, 0, 8, 32, 66, 0, 0, 32, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 13, 197,0, 0,
- 0, 0, 0, 0, 100,40, 4, 0, 0, 0, 0, 0, 4, 32, 1, 0, 0, 0, 0, 0, 149,249,80, 2, 0, 0, 0, 0, 0, 24, 128,0, 0, 0, 0, 0, 5, 65, 74, 0,
- 0, 0, 0, 0, 64, 16, 2, 0, 0, 0, 0, 0, 0, 80, 2, 0, 0, 0, 0, 0, 36, 128,0, 0, 0, 0, 0, 0, 95, 255,127,1, 0, 0, 0, 0, 132,76, 10, 0,
- 0, 0, 0, 0, 16, 68, 16, 2, 0, 0, 0, 0, 6, 32, 6, 0, 0, 0, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 17, 89, 16, 0, 0, 0, 0, 0, 17, 133,20, 0,
- 0, 0, 0, 0, 74, 64, 0, 0, 0, 0, 0, 0, 16, 129,14, 0, 0, 0, 0, 0, 25, 105,16, 2, 0, 0, 0, 0, 1, 64, 20, 0, 0, 0, 0, 0, 0, 64, 4, 2,
- 0, 0, 0, 0, 144,1, 16, 2, 0, 0, 0, 0, 92, 41, 8, 0, 0, 0, 0, 0, 153,52, 0, 0, 0, 0, 0, 0, 17, 65, 16, 3, 0, 240,62, 0, 207,191,206,1,
- 0, 240,32, 0, 0, 0, 0, 0, 0, 240,7, 0, 0, 0, 0, 0, 0, 32, 0, 0, 85, 121,20, 1, 0, 32, 0, 0, 10, 41, 0, 0, 0, 0, 0, 0, 16, 40, 6, 0,
- 0, 0, 0, 0, 27, 1, 4, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 32, 0, 0, 17, 96, 4, 0, 0, 32, 0, 0, 17, 65, 4, 0, 0, 32, 0, 0, 40, 168,20, 0,
- 0, 0, 0, 0, 12, 32, 0, 0, 0, 0, 0, 0, 4, 0, 24, 0, 0, 0, 0, 0, 8, 128,4, 0, 0, 32, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 1, 72, 8, 0,
- 0, 0, 0, 0, 223,253,63, 1, 0, 0, 0, 0, 3, 1, 16, 0, 0, 0, 0, 0, 1, 0, 20, 1, 0, 96, 0, 0, 24, 73, 4, 1, 0, 0, 0, 0, 16, 8, 0, 3,
- 0, 0, 0, 0, 21, 64, 2, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 3, 152,4, 0, 0, 0, 0, 0, 68, 45, 0, 0, 0, 0, 0, 0, 1, 133,0, 0,
- 0, 0, 0, 0, 5, 40, 16, 0, 0, 32, 0, 0, 48, 17, 104,1, 0, 0, 0, 0, 255,248,254,2, 0, 32, 0, 0, 38, 124,38, 0, 0, 0, 0, 0, 36, 65, 0, 0,
- 0, 0, 0, 0, 9, 8, 2, 0, 0, 0, 0, 0, 23, 65, 18, 0, 0, 0, 0, 0, 149,65, 4, 0, 0, 0, 0, 0, 0, 72, 0, 1, 0, 0, 0, 0, 4, 32, 68, 0,
- 0, 0, 0, 0, 17, 4, 2, 0, 0, 4, 0, 0, 4, 42, 6, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 1, 137,38, 0, 0, 0, 0, 0, 4, 9, 0, 2,
- 0, 0, 0, 0, 49, 9, 32, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 19, 85, 0, 0, 0, 0, 0, 0, 93, 101,9, 2, 0, 0, 0, 0, 128,65, 0, 1,
- 0, 0, 0, 0, 17, 1, 2, 1, 0, 96, 4, 0, 0, 8, 4, 0, 0, 0, 0, 0, 4, 152,2, 0, 0, 0, 0, 0, 0, 0, 140,0, 0, 0, 0, 0, 36, 168,24, 0,
- 0, 0, 0, 0, 132,196,18, 0, 0, 0, 0, 0, 21, 65, 23, 0, 0, 0, 0, 0, 4, 64, 16, 0, 0, 0, 0, 0, 17, 72, 16, 0, 0, 0, 0, 0, 0, 25, 4, 0,
- 0, 0, 0, 0, 16, 64, 6, 0, 0, 0, 0, 0, 36, 160,36, 0, 0, 0, 0, 0, 2, 40, 4, 0, 0, 0, 0, 0, 81, 104,0, 0, 0, 0, 0, 0, 128,1, 16, 0,
- 0, 0, 0, 0, 21, 236,12, 0, 0, 32, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 16, 1, 18, 0, 0, 0, 0, 0, 19, 65, 42, 1, 0, 0, 0, 0, 10, 0, 10, 0,
- 0, 0, 0, 0, 86, 32, 0, 2, 0, 32, 0, 0, 2, 8, 76, 0, 0, 0, 0, 0, 46, 24, 4, 0, 0, 0, 0, 0, 21, 1, 32, 0, 0, 0, 0, 0, 20, 8, 8, 0,
- 0, 32, 32, 0, 17, 64, 4, 0, 0, 0, 0, 0, 16, 9, 68, 0, 0, 0, 0, 0, 172,12, 130,1, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 4, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 17, 77, 88, 1, 0, 0, 0, 0, 255,189,254,1, 0, 0, 0, 0, 208,64, 16, 0, 0, 0, 0, 0, 2, 48, 2, 0, 0, 0, 0, 0, 24, 16, 32, 0,
- 0, 0, 0, 0, 3, 208,4, 0, 0, 0, 0, 0, 76, 37, 14, 0, 0, 0, 0, 0, 130,128,12, 0, 0, 0, 0, 0, 27, 101,6, 1, 0, 0, 0, 0, 0, 48, 12, 1,
- 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 46, 96, 12, 0, 0, 0, 0, 0, 129,0, 0, 1, 0, 32, 0, 0, 16, 5, 4, 0, 0, 0, 0, 0, 10, 64, 40, 0,
- 0, 0, 0, 0, 146,193,12, 0, 0, 0, 0, 0, 17, 89, 2, 1, 0, 0, 0, 0, 52, 0, 5, 0, 0, 0, 0, 0, 144,64, 12, 0, 0, 0, 0, 0, 76, 32, 4, 0,
- 0, 0, 0, 0, 16, 65, 28, 0, 0, 0, 0, 0, 0, 40, 68, 0, 0, 0, 0, 0, 0, 8, 10, 1, 0, 0, 0, 0, 20, 34, 0, 0, 0, 0, 0, 0, 30, 144,76, 0,
- 0, 0, 0, 0, 119,249,110,0, 0, 0, 0, 0, 0, 56, 46, 0, 0, 32, 0, 0, 16, 9, 28, 0, 0, 32, 0, 0, 49, 125,100,1, 0, 0, 0, 0, 8, 40, 6, 0,
- 0, 0, 0, 0, 32, 4, 46, 0, 0, 0, 0, 0, 4, 0, 12, 2, 0, 0, 0, 0, 16, 97, 0, 0, 0, 32, 0, 0, 12, 176,10, 0, 0, 0, 0, 0, 116,21, 0, 1,
- 0, 0, 0, 0, 8, 40, 14, 0, 0, 0, 0, 0, 55, 242,45, 2, 0, 8, 0, 0, 16, 0, 4, 0, 0, 0, 0, 0, 40, 0, 8, 0, 0, 32, 0, 0, 144,64, 12, 1,
- 0, 0, 0, 0, 4, 0, 136,0, 0, 0, 8, 0, 16, 65, 4, 0, 0, 0, 0, 0, 85, 5, 8, 0, 0, 0, 0, 0, 17, 17, 4, 1, 0, 0, 0, 0, 2, 128,4, 0,
- 0, 0, 0, 0, 144,73, 10, 0, 0, 0, 0, 0, 127,253,127,3, 0, 32, 0, 0, 16, 17, 76, 0, 0, 0, 0, 0, 32, 1, 4, 0, 0, 0, 0, 0, 192,0, 4, 0,
- 0, 0, 0, 0, 53, 17, 8, 0, 0, 0, 0, 0, 1, 0, 4, 2, 0, 2, 0, 0, 8, 40, 30, 1, 0, 0, 0, 0, 128,1, 28, 0, 0, 0, 0, 0, 73, 0, 12, 0,
- 0, 32, 36, 0, 16, 1, 4, 1, 0, 0, 0, 0, 128,17, 0, 0, 0, 0, 0, 0, 25, 32, 4, 0, 0, 32, 0, 0, 50, 1, 4, 0, 0, 0, 0, 0, 118,54, 174,0,
- 0, 0, 0, 0, 150,152,4, 0, 0, 0, 0, 0, 80, 5, 0, 1, 0, 0, 0, 0, 148,0, 8, 0, 0, 0, 0, 0, 11, 48, 10, 0, 0, 0, 0, 0, 109,73, 16, 1,
- 0, 0, 1, 0, 178,51, 26, 0, 0, 0, 0, 0, 132,36, 0, 1, 0, 128,0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 32, 2, 8, 0, 0, 0, 0, 0, 2, 0, 1, 0,
- 0, 0, 0, 0, 192,4, 12, 0, 0, 68, 1, 0, 255,255,255,3, 0, 0, 0, 0, 204,44, 158,0, 0, 32, 0, 0, 18, 21, 64, 1, 0, 0, 0, 0, 50, 1, 44, 0,
- 0, 0, 0, 0, 81, 9, 4, 0, 0, 0, 0, 0, 18, 41, 12, 0, 0, 0, 0, 0, 155,73, 82, 1, 0, 0, 0, 0, 0, 45, 2, 0, 0, 0, 0, 0, 16, 73, 4, 0,
- 0, 0, 0, 0, 8, 128,6, 1, 0, 0, 0, 0, 0, 8, 22, 0, 0, 96, 43, 0, 0, 2, 4, 1, 0, 0, 0, 0, 149,68, 26, 0, 0, 0, 0, 0, 4, 33, 0, 0,
- 0, 96, 4, 0, 119,185,14, 1, 0, 0, 0, 0, 8, 16, 8, 1, 0, 0, 0, 0, 144,17, 0, 0, 0, 32, 0, 0, 9, 248,14, 2, 0, 0, 0, 0, 57, 121,2, 1,
- 0, 128,0, 0, 14, 185,198,1, 0, 0, 0, 0, 52, 56, 4, 0, 0, 0, 0, 64, 0, 0, 4, 0, 0, 48, 0, 0, 10, 16, 0, 0, 0, 0, 0, 0, 40, 40, 186,0,
- 0, 0, 0, 0, 128,9, 0, 0, 0, 0, 0, 0, 49, 65, 2, 0, 0, 0, 0, 0, 16, 25, 4, 0, 0, 0, 0, 0, 16, 40, 2, 1, 0, 96, 0, 0, 128,0, 4, 0,
- 0, 0, 0, 0, 219,41, 4, 0, 0, 0, 0, 0, 17, 105,2, 0, 0, 0, 0, 0, 67, 32, 4, 0, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 16, 80, 2, 0,
- 0, 0, 0, 0, 33, 56, 10, 0, 0, 0, 0, 0, 21, 1, 4, 0, 0, 32, 0, 0, 0, 25, 6, 1, 0, 4, 0, 0, 127,253,125,1, 0, 0, 0, 0, 110,249,110,0,
- 0, 0, 0, 0, 88, 0, 8, 0, 0, 0, 0, 0, 4, 48, 0, 0, 0, 0, 0, 0, 54, 233,70, 0, 0, 0, 0, 0, 0, 32, 42, 0, 0, 32, 0, 0, 214,120,14, 1,
- 0, 0, 0, 0, 129,72, 8, 0, 0, 0, 0, 0, 1, 9, 2, 0, 0, 0, 0, 0, 87, 48, 12, 0, 0, 32, 0, 0, 73, 0, 4, 0, 0, 0, 0, 0, 94, 176,10, 2,
- 0, 0, 0, 0, 26, 1, 4, 0, 0, 0, 0, 0, 93, 40, 10, 1, 0, 0, 0, 0, 2, 96, 32, 0, 0, 0, 0, 0, 92, 48, 36, 0, 0, 0, 0, 0, 1, 68, 0, 0,
- 0, 0, 0, 0, 81, 1, 68, 0, 0, 32, 0, 0, 0, 64, 96, 0, 0, 0, 0, 0, 4, 177,35, 2, 0, 0, 0, 0, 66, 184,22, 0, 0, 0, 0, 0, 3, 0, 0, 1,
- 0, 0, 0, 0, 25, 97, 4, 1, 0, 32, 0, 0, 49, 9, 4, 0, 0, 0, 0, 0, 49, 9, 4, 0, 0, 0, 0, 0, 4, 192,8, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 32, 1, 0, 144,80, 6, 0, 0, 0, 0, 0, 6, 49, 4, 0, 0, 0, 0, 0, 18, 32, 0, 0, 0, 0, 0, 0, 9, 32, 0, 0, 16, 64, 0, 0, 191,249,30, 1,
- 0, 0, 0, 0, 4, 40, 14, 0, 0, 0, 0, 0, 17, 65, 28, 0, 0, 32, 0, 0, 1, 1, 12, 0, 0, 0, 0, 0, 81, 1, 0, 0, 0, 64, 0, 0, 95, 105,30, 0,
- 0, 0, 0, 0, 36, 1, 4, 0, 0, 0, 0, 0, 12, 44, 141,0, 0, 0, 0, 0, 64, 64, 12, 0, 0, 0, 0, 0, 128,69, 4, 0, 0, 96, 0, 0, 17, 81, 4, 0,
- 0, 0, 0, 0, 24, 0, 18, 0, 0, 0, 0, 0, 8, 48, 6, 0, 0, 0, 0, 0, 36, 0, 0, 2, 0, 0, 0, 0, 17, 16, 0, 0, 0, 0, 0, 0, 16, 32, 12, 0,
- 0, 0, 0, 0, 16, 16, 12, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 32, 64, 8, 0, 0, 0, 0, 0, 17, 136,68, 0, 0, 0, 0, 0, 0, 8, 18, 0,
- 0, 0, 0, 0, 4, 96, 13, 0, 0, 0, 0, 0, 24, 8, 130,0, 0, 0, 0, 0, 145,73, 30, 0, 0, 0, 0, 0, 76, 96, 31, 0, 0, 0, 0, 0, 17, 105,4, 0,
- 0, 0, 0, 0, 1, 16, 136,0, 0, 0, 0, 0, 21, 48, 0, 0, 0, 0, 0, 0, 16, 1, 24, 0, 0, 0, 0, 0, 2, 64, 32, 0, 0, 0, 0, 0, 127,127,127,3,
- 0, 0, 0, 0, 70, 45, 94, 0, 0, 0, 0, 0, 145,73, 18, 0, 0, 0, 0, 0, 4, 32, 40, 0, 0, 0, 0, 0, 9, 161,14, 0, 0, 0, 0, 0, 4, 0, 40, 0,
- 0, 0, 0, 0, 81, 81, 4, 0, 0, 0, 0, 0, 4, 24, 18, 0, 0, 0, 0, 0, 17, 65, 18, 1, 0, 0, 0, 0, 0, 56, 6, 0, 0, 0, 0, 0, 52, 48, 8, 0,
- 0, 0, 0, 0, 1, 32, 0, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 0, 0, 136,26, 70, 1, 0, 0, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 12, 0, 14, 0,
- 0, 0, 0, 0, 16, 16, 6, 0, 0, 0, 0, 0, 72, 32, 14, 0, 0, 0, 0, 0, 4, 0, 18, 0, 0, 0, 0, 0, 25, 76, 2, 0, 0, 0, 0, 0, 64, 0, 36, 0,
- 0, 0, 0, 0, 16, 17, 64, 0, 0, 0, 0, 0, 108,32, 4, 0, 0, 0, 0, 0, 16, 9, 66, 0, 0, 0, 0, 0, 8, 8, 2, 1, 0, 4, 0, 0, 17, 73, 0, 1,
- 0, 0, 0, 0, 132,8, 18, 0, 0, 0, 0, 0, 29, 24, 142,1, 0, 0, 0, 0, 4, 96, 32, 0, 0, 32, 0, 0, 1, 8, 12, 1, 0, 0, 0, 0, 52, 160,32, 0,
- 0, 0, 0, 0, 0, 41, 10, 0, 0, 0, 0, 0, 4, 40, 50, 0, 0, 0, 0, 0, 8, 33, 8, 0, 0, 32, 0, 0, 0, 65, 8, 1, 0, 0, 0, 0, 24, 0, 64, 1,
- 0, 0, 0, 0, 21, 201,24, 0, 0, 0, 0, 0, 4, 35, 11, 0, 0, 0, 0, 0, 17, 65, 32, 0, 0, 0, 0, 0, 17, 145,0, 0, 0, 0, 0, 0, 76, 17, 130,0,
- 0, 0, 0, 0, 144,48, 134,0, 0, 0, 0, 0, 0, 33, 2, 0, 0, 0, 0, 0, 80, 65, 16, 0, 0, 0, 0, 0, 32, 129,22, 0, 0, 0, 0, 0, 14, 137,46, 0,
- 0, 0, 0, 0, 16, 65, 20, 0, 0, 0, 0, 0, 2, 32, 40, 0, 0, 96, 0, 0, 16, 8, 4, 0, 0, 0, 0, 0, 4, 32, 130,1, 0, 0, 0, 0, 0, 65, 20, 0,
- 0, 0, 0, 0, 64, 0, 12, 1, 0, 0, 0, 0, 4, 12, 0, 1, 0, 0, 0, 0, 92, 253,46, 0, 0, 0, 0, 0, 146,17, 92, 1, 0, 96, 2, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 16, 72, 8, 0, 0, 98, 36, 0, 255,125,68, 0, 0, 0, 0, 0, 8, 0, 6, 1, 0, 0, 0, 0, 24, 96, 0, 0, 0, 0, 0, 0, 61, 8, 14, 0,
- 0, 0, 0, 0, 17, 128,68, 0, 0, 96, 0, 0, 1, 17, 70, 0, 0, 0, 0, 0, 153,233,30, 1, 0, 0, 0, 0, 8, 184,6, 0, 0, 0, 0, 0, 17, 104,0, 0,
- 0, 32, 0, 0, 166,176,4, 1, 16, 0, 0, 0, 16, 0, 8, 0, 0, 0, 0, 0, 4, 9, 66, 0, 0, 0, 0, 0, 127,253,126,3, 0, 0, 0, 0, 140,60, 8, 3,
- 0, 0, 0, 0, 0, 41, 8, 0, 0, 0, 0, 0, 128,65, 16, 0, 0, 0, 0, 0, 17, 105,94, 1, 0, 0, 0, 0, 64, 32, 14, 1, 0, 0, 0, 0, 8, 41, 70, 0,
- 0, 0, 0, 0, 17, 8, 8, 0, 0, 0, 0, 0, 2, 32, 48, 2, 0, 64, 0, 0, 17, 41, 12, 1, 0, 0, 0, 0, 93, 224,12, 2, 0, 0, 0, 0, 81, 96, 8, 0,
- 0, 0, 0, 0, 16, 17, 22, 1, 0, 0, 0, 0, 16, 64, 76, 1, 0, 0, 0, 0, 187,113,84, 1, 0, 0, 0, 0, 9, 11, 14, 1, 0, 0, 0, 0, 0, 9, 20, 1,
- 0, 0, 0, 0, 18, 1, 4, 0, 0, 0, 0, 0, 144,4, 0, 0, 0, 0, 0, 0, 0, 56, 8, 2, 0, 32, 0, 0, 24, 8, 46, 0, 0, 4, 0, 0, 16, 65, 22, 0,
- 0, 0, 0, 0, 81, 65, 20, 1, 0, 0, 0, 0, 8, 104,10, 0, 0, 0, 0, 0, 77, 105,14, 3, 0, 0, 0, 0, 223,96, 36, 0, 0, 0, 0, 0, 81, 32, 0, 0,
- 0, 0, 0, 0, 10, 32, 68, 0, 0, 0, 0, 0, 64, 128,0, 0, 0, 0, 0, 0, 149,65, 0, 0, 0, 0, 0, 0, 17, 105,70, 0, 0, 0, 0, 0, 64, 0, 134,2,
- 0, 0, 0, 0, 4, 34, 4, 0, 0, 0, 0, 0, 0, 50, 4, 0, 0, 0, 0, 0, 16, 8, 10, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 0, 0, 0, 223,189,76, 1,
- 0, 0, 0, 0, 84, 112,8, 0, 0, 32, 0, 0, 72, 168,4, 0, 0, 0, 0, 0, 21, 105,20, 0, 0, 0, 0, 0, 66, 41, 6, 0, 0, 0, 0, 0, 16, 0, 8, 2,
- 0, 0, 0, 0, 8, 41, 2, 0, 0, 0, 0, 0, 145,121,30, 1, 0, 0, 0, 0, 1, 40, 6, 1, 0, 0, 0, 0, 19, 89, 2, 1, 0, 0, 0, 0, 0, 32, 70, 0,
- 0, 32, 0, 0, 80, 0, 76, 0, 0, 0, 0, 0, 126,169,46, 2, 0, 0, 0, 0, 16, 9, 6, 0, 0, 0, 0, 0, 27, 73, 12, 0, 16, 0, 0, 0, 1, 32, 0, 0,
- 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 4, 1, 12, 0, 0, 0, 0, 0, 0, 88, 68, 0, 0, 0, 0, 0, 16, 89, 4, 0, 0, 16, 0, 0, 25, 73, 6, 1,
- 0, 0, 0, 0, 24, 32, 6, 0, 0, 32, 0, 0, 55, 209,78, 0, 0, 32, 0, 0, 2, 16, 68, 0, 0, 0, 0, 0, 16, 72, 4, 0, 16, 0, 0, 0, 8, 0, 14, 0,
- 0, 0, 0, 0, 23, 105,46, 1, 0, 0, 0, 0, 144,0, 0, 1, 0, 0, 0, 0, 9, 0, 70, 1, 0, 32, 0, 0, 145,105,70, 1, 0, 0, 0, 0, 9, 112,6, 0,
- 0, 0, 0, 0, 145,1, 8, 1, 0, 0, 0, 0, 21, 65, 30, 1, 0, 0, 0, 0, 89, 1, 28, 0, 0, 0, 0, 0, 16, 40, 8, 0, 0, 0, 0, 0, 219,249,6, 0,
- 0, 96, 0, 0, 0, 0, 20, 0, 0, 16, 0, 0, 16, 65, 2, 0, 0, 0, 0, 0, 24, 40, 14, 0, 0, 0, 0, 0, 17, 72, 84, 0, 0, 0, 0, 0, 8, 32, 8, 1,
- 0, 0, 0, 0, 21, 109,8, 0, 0, 0, 0, 0, 19, 65, 16, 3, 0, 8, 0, 0, 71, 1, 30, 0, 0, 64, 0, 0, 0, 32, 16, 0, 0, 64, 0, 0, 177,115,56, 1,
- 0, 0, 0, 0, 111,189,254,3, 0, 0, 0, 0, 71, 9, 12, 0, 0, 0, 0, 0, 21, 68, 2, 0, 0, 32, 0, 0, 152,169,4, 1, 0, 32, 0, 0, 0, 2, 4, 0,
- 0, 0, 0, 0, 0, 8, 96, 0, 0, 0, 0, 0, 24, 73, 0, 1, 0, 0, 0, 0, 209,73, 20, 0, 0, 0, 0, 0, 66, 108,0, 0, 0, 32, 0, 0, 145,81, 84, 0,
- 0, 0, 0, 0, 18, 144,0, 0, 0, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0, 63, 125,76, 0, 0, 0, 0, 0, 20, 1, 4, 1, 0, 0, 0, 0, 17, 192,4, 0,
- 0, 0, 0, 0, 148,4, 4, 0, 0, 32, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 96, 32, 4, 0, 0, 0, 0, 0, 8, 33, 6, 1, 0, 0, 0, 0, 168,56, 4, 0,
- 0, 0, 0, 0, 36, 96, 12, 0, 0, 0, 0, 0, 16, 1, 0, 3, 0, 96, 17, 0, 174,18, 0, 2, 0, 0, 0, 0, 223,249,127,0, 0, 0, 0, 0, 68, 52, 46, 0,
- 0, 32, 0, 0, 16, 129,4, 1, 0, 0, 0, 0, 16, 80, 0, 1, 0, 0, 0, 0, 144,65, 16, 0, 0, 32, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 148,0, 0, 1,
- 0, 0, 0, 0, 0, 40, 16, 0, 0, 0, 0, 0, 21, 65, 4, 0, 0, 0, 0, 0, 204,172,6, 0, 0, 32, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 81, 73, 0, 0,
- 0, 0, 0, 0, 16, 0, 68, 0, 0, 0, 0, 0, 16, 128,28, 0, 0, 0, 0, 0, 20, 192,76, 0, 0, 0, 0, 0, 8, 0, 8, 2, 0, 0, 0, 0, 16, 81, 64, 1,
- 0, 0, 0, 0, 17, 65, 100,0, 0, 0, 0, 0, 20, 16, 4, 0, 0, 0, 1, 0, 0, 160,0, 0, 0, 0, 0, 0, 95, 252,45, 0, 0, 0, 0, 0, 3, 8, 4, 0,
- 0, 0, 0, 0, 144,5, 0, 0, 0, 0, 0, 0, 17, 24, 0, 0, 0, 32, 0, 0, 16, 1, 12, 0, 0, 0, 0, 0, 88, 8, 0, 0, 0, 0, 0, 0, 104,0, 6, 0,
- 0, 0, 0, 0, 208,8, 0, 0, 0, 0, 0, 0, 16, 145,4, 0, 0, 0, 0, 0, 84, 68, 0, 0, 0, 0, 0, 0, 53, 217,92, 0, 0, 0, 0, 0, 21, 89, 0, 1,
- 0, 0, 0, 0, 34, 128,32, 0, 0, 0, 0, 0, 20, 65, 8, 2, 0, 0, 0, 0, 48, 8, 0, 0, 0, 0, 0, 0, 1, 69, 0, 0, 0, 0, 0, 0, 245,253,255,3,
- 0, 0, 0, 0, 0, 36, 12, 0, 0, 0, 0, 0, 148,69, 16, 0, 0, 0, 0, 0, 17, 0, 64, 0, 0, 0, 0, 0, 32, 64, 24, 0, 0, 0, 0, 0, 129,33, 0, 0,
- 0, 0, 0, 0, 51, 137,80, 0, 0, 0, 0, 0, 25, 0, 2, 1, 0, 0, 0, 0, 149,71, 85, 1, 0, 0, 0, 0, 2, 32, 4, 0, 0, 0, 0, 0, 0, 52, 0, 0,
- 0, 0, 0, 0, 154,125,76, 0, 0, 32, 0, 0, 247,121,74, 0, 0, 0, 0, 0, 149,64, 72, 2, 0, 0, 0, 0, 68, 160,12, 0, 0, 0, 0, 0, 148,64, 0, 0,
- 0, 0, 0, 0, 58, 41, 12, 0, 0, 32, 0, 0, 16, 65, 36, 0, 0, 0, 0, 0, 0, 96, 8, 0, 0, 0, 0, 0, 124,185,140,3, 0, 0, 0, 0, 35, 0, 4, 0,
- 0, 0, 0, 0, 16, 0, 128,0, 0, 0, 0, 0, 24, 64, 16, 0, 0, 0, 0, 0, 4, 4, 4, 2, 0, 32, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 18, 152,66, 0,
- 0, 0, 0, 0, 8, 8, 8, 1, 0, 0, 0, 0, 145,65, 8, 0, 0, 0, 0, 0, 148,1, 4, 0, 0, 0, 0, 0, 8, 32, 0, 2, 0, 0, 0, 0, 27, 193,12, 0,
- 0, 0, 0, 0, 64, 160,0, 0, 0, 0, 0, 0, 64, 8, 4, 0, 0, 0, 0, 0, 0, 9, 12, 0, 0, 112,8, 0, 0, 8, 4, 0, 0, 0, 0, 0, 53, 85, 24, 1,
- 0, 0, 0, 0, 2, 4, 6, 0, 0, 0, 0, 0, 156,0, 50, 0, 0, 0, 0, 0, 8, 8, 24, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 34, 0, 0, 1,
- 0, 0, 0, 0, 255,255,174,3, 0, 0, 0, 0, 8, 32, 30, 0, 0, 0, 0, 0, 51, 65, 22, 0, 0, 0, 0, 0, 21, 40, 12, 0, 0, 0, 0, 0, 0, 64, 12, 0,
- 0, 32, 0, 0, 32, 0, 64, 0, 0, 0, 0, 0, 133,69, 48, 0, 0, 0, 0, 0, 32, 24, 10, 2, 0, 0, 0, 0, 25, 51, 64, 0, 0, 0, 0, 0, 10, 40, 46, 2,
- 0, 0, 0, 0, 0, 224,32, 0, 0, 0, 0, 0, 17, 25, 4, 1, 0, 0, 0, 0, 1, 0, 6, 2, 0, 0, 0, 0, 151,253,108,0, 0, 0, 0, 0, 8, 32, 10, 1,
- 0, 0, 0, 0, 96, 160,44, 0, 0, 0, 0, 0, 8, 144,8, 0, 0, 0, 0, 0, 16, 128,0, 0, 0, 0, 0, 0, 4, 0, 36, 0, 0, 96, 5, 0, 179,249,29, 0,
- 0, 0, 0, 0, 17, 73, 2, 1, 0, 0, 0, 0, 64, 16, 4, 0, 0, 0, 0, 0, 129,8, 24, 0, 0, 0, 0, 0, 217,41, 136,1, 0, 0, 0, 0, 36, 32, 0, 0,
- 0, 0, 0, 0, 100,32, 0, 0, 0, 32, 4, 0, 160,8, 4, 0, 0, 0, 0, 0, 4, 48, 2, 2, 0, 64, 0, 0, 23, 193,6, 0, 0, 0, 0, 0, 63, 249,110,3,
- 0, 0, 0, 0, 6, 16, 8, 0, 0, 0, 0, 0, 9, 40, 12, 1, 0, 0, 0, 0, 21, 112,56, 0, 0, 0, 0, 0, 24, 0, 70, 1, 0, 0, 0, 0, 192,32, 0, 0,
- 0, 0, 0, 0, 4, 32, 20, 2, 0, 0, 0, 0, 10, 0, 4, 1, 0, 0, 0, 0, 149,145,92, 0, 0, 0, 0, 0, 17, 49, 64, 1, 0, 0, 0, 0, 183,105,78, 0,
- 0, 0, 0, 0, 0, 33, 64, 0, 0, 0, 0, 0, 65, 32, 6, 0, 0, 0, 0, 0, 18, 1, 2, 0, 0, 0, 0, 0, 32, 128,0, 0, 0, 0, 0, 0, 32, 40, 16, 0,
- 0, 0, 0, 0, 164,1, 0, 0, 0, 0, 0, 0, 145,9, 4, 1, 0, 0, 0, 0, 5, 17, 0, 2, 0, 32, 0, 0, 18, 0, 8, 3, 0, 0, 0, 0, 128,33, 0, 0,
- 0, 0, 0, 0, 129,81, 0, 0, 0, 32, 0, 0, 32, 0, 0, 2, 0, 0, 0, 0, 119,190,78, 2, 0, 32, 0, 0, 14, 241,12, 0, 0, 0, 0, 0, 129,8, 0, 0,
- 0, 32, 0, 0, 12, 0, 68, 0, 0, 0, 0, 0, 4, 32, 4, 2, 0, 0, 0, 0, 197,160,10, 0, 0, 0, 0, 0, 16, 0, 1, 0, 0, 0, 0, 0, 16, 69, 0, 0,
- 0, 0, 0, 0, 9, 65, 72, 0, 0, 128,0, 0, 144,0, 2, 0, 0, 0, 0, 0, 17, 33, 20, 0, 0, 0, 0, 0, 4, 156,140,0, 0, 0, 0, 0, 0, 69, 0, 0,
- 0, 0, 0, 0, 17, 72, 80, 1, 0, 0, 0, 0, 4, 130,2, 0, 0, 0, 0, 0, 0, 73, 4, 0, 0, 0, 0, 0, 0, 37, 8, 0, 0, 0, 0, 0, 17, 69, 0, 1,
- 0, 0, 0, 0, 4, 140,6, 0, 0, 0, 0, 0, 0, 36, 68, 0, 16, 244,47, 0, 255,255,126,3, 0, 0, 0, 0, 145,193,20, 1, 0, 0, 0, 0, 236,121,54, 2,
- 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 3, 193,0, 0, 0, 0, 0, 0, 72, 34, 8, 0, 0, 0, 0, 0, 68, 16, 8, 0, 0, 0, 0, 0, 128,64, 0, 1,
- 0, 0, 0, 0, 144,41, 2, 1, 0, 0, 0, 0, 140,153,100,0, 0, 64, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 27, 105,18, 0, 0, 0, 0, 0, 149,197,19, 3,
- 16, 96, 0, 0, 25, 73, 30, 1, 16, 224,4, 0, 0, 80, 4, 1, 0, 0, 0, 0, 200,50, 66, 0, 0, 0, 0, 0, 32, 64, 8, 1, 0, 0, 0, 0, 16, 65, 2, 1,
- 0, 0, 0, 0, 219,121,82, 0, 0, 0, 0, 0, 21, 121,0, 0, 0, 0, 0, 0, 210,85, 5, 0, 0, 0, 0, 0, 0, 48, 2, 1, 0, 0, 0, 0, 220,59, 47, 2,
- 0, 0, 0, 0, 129,104,2, 0, 0, 0, 0, 0, 1, 72, 0, 1, 0, 0, 0, 0, 144,9, 16, 1, 0, 224,0, 0, 8, 16, 4, 0, 0, 16, 0, 0, 17, 65, 20, 0,
- 0, 112,32, 0, 128,0, 4, 0, 0, 0, 0, 0, 247,221,30, 3, 0, 0, 0, 0, 8, 25, 3, 0, 0, 0, 0, 0, 4, 0, 2, 1, 0, 144,16, 0, 84, 102,22, 1,
- 0, 0, 0, 0, 11, 104,40, 0, 0, 0, 0, 0, 17, 17, 16, 1, 0, 0, 0, 0, 64, 17, 38, 0, 0, 248,16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 32, 38, 1,
- 0, 0, 0, 0, 83, 241,6, 0, 0, 0, 0, 0, 64, 40, 46, 0, 0, 0, 0, 0, 4, 68, 24, 0, 0, 0, 0, 0, 0, 104,70, 0, 0, 0, 0, 0, 21, 72, 6, 0,
- 0, 32, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 8, 48, 0, 0, 0, 0, 0, 0, 89, 1, 0, 1, 0, 0, 0, 0, 12, 32, 26, 0, 0, 0, 0, 0, 176,1, 0, 0,
- 0, 0, 0, 0, 24, 32, 2, 0, 16, 160,0, 0, 255,127,60, 3, 0, 0, 0, 0, 144,32, 4, 0, 0, 0, 0, 0, 145,65, 0, 3, 0, 40, 0, 0, 169,8, 6, 1,
- 0, 0, 0, 0, 49, 65, 18, 1, 0, 0, 0, 0, 132,12, 14, 0, 0, 32, 0, 0, 32, 64, 4, 0, 0, 0, 0, 0, 21, 95, 12, 0, 0, 240,47, 0, 17, 75, 4, 1,
- 0, 0, 0, 0, 16, 68, 4, 0, 0, 0, 16, 0, 1, 76, 0, 0, 0, 0, 1, 0, 16, 112,68, 0, 0, 0, 0, 0, 6, 56, 10, 0, 0, 112,0, 0, 74, 16, 4, 0,
- 0, 0, 0, 0, 32, 32, 70, 0, 0, 0, 0, 0, 18, 69, 32, 0, 0, 0, 0, 0, 145,65, 16, 2, 0, 0, 0, 0, 129,193,34, 2, 0, 0, 0, 0, 127,255,126,1,
- 0, 0, 0, 0, 3, 20, 5, 0, 0, 0, 0, 0, 145,64, 2, 1, 0, 0, 0, 0, 64, 32, 6, 0, 0, 0, 0, 0, 8, 40, 4, 1, 0, 0, 0, 0, 128,32, 8, 0,
- 0, 0, 0, 0, 21, 96, 28, 0, 0, 32, 4, 0, 181,127,70, 0, 0, 0, 0, 0, 16, 65, 24, 0, 0, 0, 0, 0, 16, 32, 0, 1, 0, 0, 0, 0, 25, 73, 4, 0,
- 0, 0, 0, 0, 4, 32, 20, 0, 0, 0, 0, 0, 196,0, 4, 0, 0, 0, 0, 0, 69, 32, 4, 0, 0, 0, 0, 0, 4, 32, 80, 0, 0, 0, 0, 0, 148,65, 8, 0,
- 0, 0, 0, 0, 176,17, 12, 1, 0, 32, 0, 0, 1, 16, 32, 0, 0, 0, 0, 0, 215,85, 12, 0, 0, 0, 0, 0, 19, 37, 72, 0, 0, 96, 0, 0, 8, 0, 0, 0,
- 0, 0, 0, 0, 149,101,94, 3, 0, 0, 0, 0, 70, 24, 4, 0, 0, 0, 0, 0, 122,185,14, 2, 0, 0, 0, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0, 12, 1,
- 0, 0, 0, 0, 144,0, 2, 0, 0, 32, 0, 0, 25, 97, 26, 1, 0, 0, 0, 0, 0, 104,18, 2, 0, 112,47, 0, 4, 56, 134,1, 0, 0, 0, 0, 1, 128,12, 0,
- 0, 0, 0, 0, 93, 104,14, 0, 0, 240,47, 0, 223,223,78, 0, 0, 96, 6, 0, 0, 0, 0, 0, 0, 32, 0, 0, 16, 80, 0, 0, 0, 0, 0, 0, 21, 64, 0, 0,
- 0, 32, 0, 0, 16, 64, 36, 0, 0, 0, 0, 0, 91, 109,20, 0, 0, 32, 4, 0, 64, 0, 4, 0, 0, 8, 0, 0, 159,60, 78, 0, 0, 0, 0, 0, 0, 108,0, 0,
- 0, 0, 0, 0, 17, 1, 4, 2, 0, 0, 0, 0, 1, 59, 2, 1, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 50, 96, 0, 0,
- 0, 128,0, 0, 8, 200,24, 0, 0, 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 8, 4, 48, 0, 0, 0, 0, 0, 72, 64, 2, 0, 0, 32, 8, 0, 255,255,255,3,
- 0, 0, 0, 0, 236,60, 63, 0, 0, 0, 0, 0, 16, 64, 8, 1, 0, 32, 0, 0, 186,152,70, 3, 0, 0, 0, 0, 16, 192,0, 0, 0, 0, 0, 0, 18, 17, 12, 1,
- 0, 32, 0, 0, 217,96, 4, 0, 0, 0, 0, 0, 30, 121,14, 1, 0, 0, 0, 0, 128,72, 4, 0, 0, 96, 4, 0, 22, 56, 70, 0, 0, 0, 0, 0, 19, 105,30, 1,
- 0, 0, 0, 0, 20, 12, 30, 0, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 74, 5, 10, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 17, 56, 14, 1,
- 0, 0, 0, 0, 65, 32, 2, 0, 0, 0, 0, 0, 21, 8, 8, 0, 0, 0, 0, 0, 17, 41, 86, 0, 0, 32, 0, 0, 208,0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0,
- 0, 0, 0, 0, 132,9, 0, 1, 0, 0, 0, 0, 32, 64, 4, 0, 0, 0, 0, 0, 192,32, 12, 0, 0, 4, 0, 0, 149,77, 18, 0, 0, 0, 0, 0, 56, 185,14, 1,
- 0, 0, 0, 0, 18, 128,0, 0, 0, 0, 0, 0, 24, 32, 8, 0, 0, 0, 0, 0, 0, 1, 18, 0, 0, 0, 0, 0, 10, 88, 34, 0, 0, 0, 0, 0, 13, 185,4, 0,
- 0, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 32, 8, 2, 0, 0, 0, 0, 4, 64, 32, 0, 0, 0, 0, 0, 0, 49, 34, 0, 0, 0, 0, 0, 14, 248,20, 0,
- 0, 0, 0, 0, 145,17, 4, 0, 0, 0, 0, 0, 17, 5, 0, 0, 0, 0, 0, 0, 140,120,30, 1, 0, 0, 0, 0, 0, 208,0, 0, 0, 0, 0, 0, 32, 96, 32, 0,
- 0, 0, 0, 0, 8, 128,130,0, 0, 0, 0, 0, 4, 8, 12, 0, 0, 0, 0, 0, 147,113,18, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 5, 4, 2, 0,
- 0, 0, 0, 0, 20, 96, 0, 0, 0, 32, 0, 0, 75, 190,110,2, 0, 32, 0, 0, 31, 137,78, 0, 0, 0, 0, 0, 0, 4, 32, 0, 0, 0, 0, 0, 184,145,0, 0,
- 0, 0, 0, 0, 16, 0, 12, 2, 0, 0, 1, 0, 53, 75, 26, 1, 0, 0, 0, 0, 6, 24, 18, 3, 0, 0, 0, 0, 21, 104,2, 0, 0, 0, 0, 0, 14, 0, 4, 0,
- 0, 0, 0, 0, 95, 104,2, 0, 0, 0, 0, 0, 16, 96, 22, 0, 0, 0, 0, 0, 88, 16, 2, 0, 0, 0, 0, 0, 0, 33, 24, 1, 0, 0, 0, 0, 68, 4, 0, 0,
- 0, 0, 0, 0, 53, 121,18, 0, 0, 0, 0, 0, 88, 32, 22, 0, 0, 0, 0, 0, 17, 104,4, 1, 0, 0, 0, 0, 177,32, 0, 0, 0, 0, 0, 0, 9, 64, 18, 0,
- 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 104,2, 0, 0, 0, 0, 0, 45, 32, 108,2, 0, 0, 0, 0, 33, 64, 4, 0, 0, 0, 0, 0, 0, 33, 0, 2,
- 0, 0, 0, 0, 81, 248,2, 1, 0, 0, 0, 0, 17, 32, 38, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 32, 16, 0, 1, 0, 16, 0, 0, 254,124,46, 0,
- 0, 0, 0, 0, 129,32, 0, 0, 0, 0, 0, 0, 148,16, 12, 0, 0, 0, 0, 0, 20, 1, 6, 3, 0, 0, 0, 0, 84, 32, 34, 2, 0, 0, 0, 0, 128,97, 4, 0,
- 0, 0, 0, 0, 21, 77, 18, 0, 0, 0, 0, 0, 0, 40, 0, 1, 0, 0, 0, 0, 255,253,126,2, 0, 0, 0, 0, 246,249,126,1, 0, 0, 0, 0, 16, 64, 18, 1,
- 0, 0, 0, 0, 17, 72, 18, 0, 0, 0, 0, 0, 0, 0, 16, 3, 0, 0, 0, 0, 93, 64, 16, 1, 0, 0, 0, 0, 17, 200,16, 0, 0, 0, 0, 0, 81, 81, 0, 0,
- 0, 0, 0, 0, 131,68, 0, 0, 0, 0, 0, 0, 72, 32, 10, 0, 0, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 0, 213,252,62, 1, 0, 0, 0, 0, 1, 33, 0, 0,
- 0, 0, 0, 0, 71, 120,62, 2, 0, 0, 0, 0, 48, 0, 4, 0, 0, 0, 0, 0, 24, 64, 1, 0, 0, 0, 0, 0, 129,73, 12, 0, 0, 0, 0, 0, 17, 1, 4, 1,
- 16, 32, 2, 0, 19, 65, 84, 1, 0, 0, 0, 0, 68, 178,38, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 32, 32, 6, 1, 0, 0, 0, 0, 66, 32, 36, 0,
- 0, 0, 0, 0, 113,33, 22, 3, 0, 0, 0, 0, 83, 17, 4, 0, 0, 0, 0, 0, 1, 32, 4, 1, 0, 0, 0, 0, 129,1, 6, 0, 0, 0, 0, 0, 0, 41, 2, 0,
- 0, 224,63, 0, 36, 64, 12, 0, 0, 0, 0, 0, 76, 41, 132,2, 0, 0, 0, 0, 5, 65, 0, 0, 0, 0, 0, 0, 28, 0, 4, 0, 0, 0, 0, 0, 23, 255,22, 1,
- 0, 0, 0, 0, 64, 45, 30, 1, 0, 0, 0, 0, 21, 5, 14, 3, 0, 0, 0, 0, 16, 65, 6, 1, 0, 0, 0, 0, 89, 104,14, 3, 0, 0, 0, 0, 85, 65, 4, 1,
- 0, 0, 0, 0, 5, 64, 20, 0, 0, 0, 0, 0, 93, 44, 30, 0, 0, 0, 0, 0, 132,4, 0, 0, 0, 0, 0, 0, 20, 2, 0, 0, 0, 0, 0, 0, 86, 185,30, 1,
- 0, 0, 0, 0, 20, 0, 5, 2, 0, 96, 4, 0, 27, 65, 12, 1, 0, 0, 0, 0, 4, 68, 0, 0, 0, 0, 0, 0, 16, 0, 8, 1, 0, 0, 0, 0, 0, 9, 14, 2,
- 0, 48, 0, 0, 255,255,124,3, 0, 0, 0, 0, 48, 136,26, 2, 0, 0, 0, 0, 0, 65, 16, 1, 0, 0, 0, 0, 81, 52, 30, 0, 0, 0, 0, 0, 85, 124,14, 2,
- 0, 0, 0, 0, 12, 0, 6, 0, 0, 96, 0, 0, 149,68, 12, 2, 0, 128,57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,32, 10, 1, 0, 96, 0, 0, 16, 64, 8, 0,
- 0, 0, 0, 0, 98, 113,28, 1, 0, 0, 0, 0, 48, 93, 0, 0, 0, 0, 0, 0, 17, 89, 22, 1, 0, 0, 0, 0, 4, 32, 12, 0, 0, 0, 0, 0, 14, 46, 2, 0,
- 0, 0, 0, 0, 145,233,30, 0, 0, 0, 0, 0, 12, 73, 22, 2, 0, 0, 0, 0, 17, 17, 20, 0, 0, 0, 0, 0, 12, 32, 74, 1, 0, 0, 0, 0, 20, 160,2, 0,
- 0, 0, 0, 0, 0, 168,78, 1, 0, 0, 0, 0, 28, 0, 4, 3, 0, 0, 0, 0, 16, 32, 32, 2, 0, 0, 0, 0, 32, 0, 12, 0, 0, 0, 0, 0, 160,0, 16, 0,
- 0, 0, 0, 0, 80, 32, 8, 1, 0, 0, 0, 0, 255,253,254,1, 0, 0, 0, 0, 0, 185,36, 2, 0, 0, 0, 0, 16, 25, 0, 0, 0, 0, 0, 0, 196,60, 50, 2,
- 0, 0, 0, 0, 10, 0, 12, 2, 0, 0, 0, 0, 93, 96, 44, 2, 0, 0, 0, 0, 8, 40, 8, 0, 0, 0, 0, 0, 86, 117,52, 1, 0, 0, 0, 0, 19, 1, 4, 0,
- 0, 0, 0, 0, 92, 32, 4, 0, 0, 0, 0, 0, 2, 9, 4, 1, 0, 0, 0, 0, 255,255,63, 0, 0, 0, 0, 0, 8, 61, 26, 0, 0, 0, 0, 0, 0, 9, 32, 0,
- 0, 0, 0, 0, 12, 64, 8, 0, 0, 0, 0, 0, 68, 48, 2, 0, 0, 0, 0, 0, 16, 1, 42, 0, 0, 0, 0, 0, 32, 96, 0, 0, 0, 0, 0, 0, 17, 249,0, 0,
- 0, 0, 0, 0, 0, 1, 82, 3, 0, 0, 0, 0, 77, 24, 6, 1, 0, 0, 0, 0, 16, 0, 48, 0, 0, 0, 0, 0, 0, 195,12, 0, 0, 0, 0, 0, 0, 56, 26, 0,
- 0, 0, 0, 0, 6, 144,8, 0, 0, 0, 0, 0, 0, 1, 10, 0, 0, 0, 0, 0, 6, 32, 4, 0, 0, 0, 0, 0, 4, 48, 8, 0, 0, 0, 0, 0, 149,91, 90, 2,
- 0, 0, 0, 0, 20, 17, 2, 0, 0, 0, 0, 0, 72, 25, 6, 0, 0, 0, 0, 0, 16, 76, 2, 0, 0, 0, 0, 0, 0, 48, 146,0, 0, 0, 0, 0, 4, 16, 8, 0,
- 0, 0, 0, 0, 16, 89, 2, 1, 0, 0, 0, 0, 22, 145,142,0, 0, 0, 0, 0, 89, 73, 2, 0, 0, 0, 0, 0, 0, 45, 22, 2, 0, 0, 0, 0, 4, 12, 16, 0,
- 0, 0, 0, 0, 17, 0, 12, 1, 0, 0, 0, 0, 65, 64, 0, 1, 0, 0, 0, 0, 64, 8, 128,0, 0, 0, 0, 0, 1, 42, 2, 1, 0, 0, 0, 0, 2, 65, 0, 0,
- 0, 0, 0, 0, 24, 160,28, 1, 0, 0, 0, 0, 21, 108,44, 2, 0, 32, 4, 0, 26, 25, 4, 0, 0, 32, 0, 0, 20, 96, 4, 0, 0, 64, 0, 0, 20, 105,30, 1,
- 0, 0, 0, 0, 1, 8, 48, 0, 0, 32, 0, 0, 17, 129,4, 0, 0, 0, 0, 0, 155,65, 20, 1, 0, 0, 0, 0, 17, 40, 14, 1, 0, 0, 0, 0, 16, 0, 6, 1,
- 0, 0, 0, 0, 20, 40, 14, 0, 0, 0, 0, 0, 72, 32, 8, 0, 0, 0, 0, 0, 16, 32, 16, 0, 0, 0, 0, 0, 177,64, 4, 2, 0, 0, 0, 0, 205,45, 32, 1,
- 0, 0, 0, 0, 2, 16, 0, 2, 0, 0, 0, 0, 2, 16, 8, 0, 0, 0, 0, 0, 128,0, 128,1, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 18, 8, 0,
- 0, 0, 0, 0, 21, 67, 26, 1, 0, 0, 0, 0, 130,60, 66, 0, 0, 0, 0, 0, 1, 16, 64, 0, 0, 0, 0, 0, 0, 136,32, 0, 0, 0, 0, 0, 32, 104,12, 0,
- 0, 0, 0, 0, 255,255,254,3, 0, 0, 0, 0, 94, 252,46, 2, 0, 0, 0, 0, 128,64, 2, 0, 0, 0, 0, 0, 144,96, 2, 0, 0, 240,61, 0, 10, 0, 4, 0,
- 0, 0, 0, 0, 81, 101,0, 0, 0, 0, 0, 0, 27, 73, 6, 0, 0, 0, 0, 0, 145,77, 24, 0, 0, 0, 0, 0, 0, 176,6, 0, 0, 0, 0, 0, 12, 24, 6, 1,
- 0, 0, 0, 0, 21, 96, 0, 0, 0, 32, 4, 0, 177,89, 84, 1, 0, 0, 0, 0, 0, 40, 6, 1, 0, 32, 0, 0, 128,65, 0, 0, 0, 0, 0, 0, 0, 64, 24, 0,
- 0, 0, 0, 0, 93, 107,70, 1, 16, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 238,188,94, 2, 0, 0, 0, 0, 16, 16, 2, 0, 0, 0, 0, 0, 208,0, 4, 0,
- 0, 0, 0, 0, 12, 69, 4, 0, 0, 0, 0, 0, 149,153,14, 2, 0, 0, 0, 0, 0, 24, 10, 0, 0, 0, 0, 0, 10, 72, 0, 0, 0, 0, 0, 0, 16, 9, 18, 0,
- 0, 0, 0, 0, 16, 96, 2, 1, 0, 0, 0, 0, 219,57, 70, 0, 0, 0, 0, 0, 16, 48, 0, 0, 0, 0, 0, 0, 0, 96, 6, 0, 0, 0, 0, 0, 13, 216,58, 0,
- 0, 0, 0, 0, 0, 1, 50, 0, 0, 96, 0, 0, 0, 137,0, 0, 0, 0, 0, 0, 0, 48, 14, 0, 0, 0, 0, 0, 95, 125,92, 0, 0, 0, 0, 0, 0, 168,26, 0,
- 0, 0, 0, 0, 16, 120,12, 1, 0, 0, 0, 0, 70, 152,4, 0, 0, 0, 0, 0, 17, 81, 68, 1, 0, 0, 0, 0, 130,16, 38, 0, 0, 0, 0, 0, 128,32, 6, 1,
- 0, 0, 0, 0, 81, 96, 4, 0, 0, 0, 0, 0, 128,0, 4, 2, 0, 0, 0, 0, 4, 8, 8, 2, 0, 0, 0, 0, 19, 221,84, 0, 0, 224,10, 0, 66, 169,30, 2,
- 0, 192,32, 0, 0, 0, 0, 0, 0, 128,34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 8, 2, 0, 0, 0, 0, 1, 100,0, 0, 0, 0, 0, 0, 133,1, 4, 0,
- 0, 0, 0, 0, 74, 96, 14, 2, 0, 0, 0, 0, 1, 1, 4, 1, 0, 0, 0, 0, 0, 97, 16, 0, 0, 0, 0, 0, 17, 66, 4, 0, 0, 0, 1, 0, 12, 160,146,0,
- 0, 0, 33, 0, 9, 0, 0, 0, 0, 0, 0, 0, 48, 8, 4, 0, 0, 0, 0, 0, 221,117,92, 0, 0, 0, 0, 0, 128,178,14, 0, 0, 0, 0, 0, 152,0, 6, 0,
- 0, 0, 0, 0, 187,89, 84, 1, 0, 0, 0, 0, 24, 8, 6, 0, 0, 0, 0, 0, 16, 8, 32, 0, 0, 0, 0, 0, 4, 32, 28, 2, 0, 32, 0, 0, 46, 8, 38, 0,
- 0, 0, 0, 0, 4, 32, 0, 2, 0, 0, 0, 0, 92, 184,158,0, 0, 0, 0, 0, 16, 33, 0, 1, 0, 0, 0, 0, 28, 128,0, 0, 0, 0, 0, 0, 145,201,14, 0,
- 0, 0, 0, 0, 17, 168,2, 0, 0, 0, 0, 0, 8, 17, 0, 0, 0, 0, 0, 0, 221,77, 26, 0, 0, 0, 0, 0, 4, 36, 64, 0, 0, 128,0, 0, 16, 105,164,0,
- 0, 8, 0, 0, 1, 1, 4, 1, 0, 0, 1, 0, 130,1, 0, 1, 0, 32, 0, 0, 78, 16, 0, 0, 0, 0, 0, 0, 255,255,31, 0, 0, 0, 0, 0, 106,184,38, 0,
- 0, 0, 0, 0, 0, 16, 18, 0, 0, 0, 0, 0, 209,89, 86, 0, 0, 32, 0, 0, 64, 57, 62, 0, 0, 0, 0, 0, 24, 128,8, 0, 0, 0, 0, 0, 1, 48, 15, 0,
- 0, 0, 0, 0, 100,0, 0, 0, 0, 0, 0, 0, 17, 113,64, 0, 0, 0, 0, 0, 9, 0, 38, 0, 0, 0, 0, 0, 224,0, 8, 0, 0, 0, 0, 0, 12, 0, 0, 1,
- 0, 0, 0, 0, 0, 40, 4, 1, 0, 32, 0, 0, 0, 8, 64, 0, 0, 0, 0, 0, 2, 32, 74, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 16, 129,4, 0,
- 0, 0, 0, 0, 64, 128,4, 0, 0, 0, 0, 0, 17, 193,24, 0, 0, 0, 0, 0, 12, 48, 2, 0, 0, 0, 0, 0, 8, 176,0, 0, 0, 0, 0, 0, 17, 73, 26, 0,
- 0, 0, 0, 0, 40, 40, 4, 0, 0, 0, 0, 0, 32, 56, 0, 0, 0, 0, 0, 0, 6, 0, 8, 0, 0, 0, 0, 0, 133,84, 28, 2, 0, 0, 0, 0, 19, 81, 18, 1,
- 0, 0, 0, 0, 17, 73, 176,1, 0, 32, 0, 0, 72, 0, 12, 0, 0, 0, 0, 0, 8, 32, 14, 2, 0, 0, 0, 0, 85, 65, 0, 1, 0, 96, 2, 0, 0, 8, 6, 1,
- 0, 0, 0, 0, 1, 67, 0, 0, 0, 0, 0, 0, 18, 64, 32, 0, 0, 32, 0, 0, 8, 8, 0, 0, 0, 64, 0, 0, 0, 8, 2, 0, 0, 8, 0, 0, 253,77, 28, 0,
- 0, 0, 0, 0, 0, 2, 128,0, 0, 0, 0, 0, 2, 16, 10, 2, 0, 0, 1, 0, 129,0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 2, 146,0,
- 0, 0, 0, 0, 33, 34, 0, 0, 0, 0, 0, 0, 12, 0, 34, 0, 0, 0, 0, 0, 2, 48, 0, 0, 0, 0, 4, 0, 167,65, 52, 1, 0, 0, 0, 0, 16, 3, 0, 1,
- 0, 0, 0, 0, 17, 65, 36, 0, 0, 0, 0, 0, 255,255,255,3, 0, 0, 0, 0, 2, 36, 0, 0, 0, 0, 0, 0, 19, 93, 6, 1, 0, 0, 0, 0, 16, 1, 6, 1,
- 0, 0, 0, 0, 0, 12, 6, 1, 0, 32, 0, 64, 144,69, 28, 0, 0, 0, 0, 0, 145,9, 94, 1, 0, 32, 0, 0, 17, 67, 68, 0, 0, 0, 0, 0, 89, 65, 70, 1,
- 0, 32, 0, 0, 10, 32, 38, 0, 0, 0, 0, 0, 202,152,14, 0, 0, 0, 0, 0, 160,45, 6, 0, 0, 96, 0, 0, 255,248,78, 0, 0, 0, 0, 0, 80, 65, 0, 1,
- 0, 32, 0, 0, 128,0, 8, 0, 0, 0, 0, 0, 21, 112,6, 0, 0, 0, 0, 0, 88, 40, 14, 0, 0, 0, 0, 0, 144,69, 24, 0, 0, 0, 0, 0, 255,251,44, 0,
- 0, 0, 0, 0, 5, 50, 6, 2, 0, 0, 0, 0, 4, 96, 40, 0, 0, 0, 0, 0, 177,65, 4, 1, 0, 32, 0, 0, 138,0, 4, 0, 0, 0, 0, 0, 8, 32, 2, 1,
- 0, 0, 0, 0, 16, 32, 36, 0, 0, 96, 38, 0, 0, 0, 4, 0, 0, 0, 0, 0, 147,245,16, 2, 0, 0, 8, 0, 64, 33, 4, 0, 0, 0, 0, 0, 16, 4, 2, 0,
- 0, 0, 4, 0, 10, 37, 6, 0, 0, 0, 0, 0, 5, 96, 8, 0, 0, 0, 0, 0, 81, 65, 21, 1, 0, 0, 0, 0, 69, 68, 5, 0, 0, 32, 0, 0, 1, 69, 16, 0,
- 0, 32, 0, 0, 16, 0, 68, 0, 16, 32, 0, 0, 223,127,60, 3, 0, 0, 0, 0, 206,8, 122,1, 0, 32, 0, 0, 8, 64, 4, 0, 0, 0, 0, 0, 192,41, 14, 3,
- 0, 0, 0, 0, 1, 72, 4, 0, 0, 0, 0, 0, 245,72, 4, 0, 0, 0, 0, 0, 84, 168,44, 2, 0, 0, 0, 0, 29, 1, 0, 1, 0, 32, 0, 0, 0, 40, 12, 0,
- 0, 0, 0, 0, 224,0, 110,0, 0, 0, 0, 0, 0, 64, 48, 0, 0, 0, 0, 0, 8, 68, 0, 0, 0, 0, 1, 0, 253,68, 8, 0, 0, 0, 0, 0, 234,188,14, 2,
- 0, 0, 0, 0, 1, 9, 0, 1, 0, 0, 0, 0, 26, 60, 68, 0, 0, 0, 0, 0, 49, 201,4, 0, 0, 0, 0, 0, 136,16, 4, 1, 0, 0, 0, 0, 125,255,110,1,
- 0, 0, 0, 0, 24, 57, 8, 2, 0, 0, 0, 0, 17, 48, 10, 1, 0, 0, 0, 0, 93, 96, 12, 0, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 0, 0, 35, 65, 20, 1,
- 0, 0, 0, 0, 179,65, 4, 0, 0, 0, 0, 0, 96, 48, 92, 0, 0, 0, 0, 0, 17, 40, 12, 0, 0, 0, 0, 0, 133,81, 0, 0, 0, 0, 0, 0, 149,5, 78, 0,
- 0, 0, 0, 0, 149,97, 12, 3, 0, 0, 0, 0, 16, 0, 64, 1, 0, 0, 0, 0, 95, 61, 174,1, 0, 0, 0, 0, 136,18, 12, 0, 0, 0, 0, 0, 48, 9, 4, 0,
- 0, 32, 0, 0, 193,9, 0, 0, 0, 0, 0, 0, 19, 48, 8, 0, 0, 0, 0, 0, 128,0, 8, 1, 0, 0, 0, 0, 4, 40, 14, 1, 0, 0, 0, 0, 217,47, 14, 0,
- 0, 32, 0, 0, 243,137,94, 1, 0, 0, 0, 0, 0, 1, 40, 0, 0, 0, 0, 0, 19, 65, 8, 1, 0, 4, 16, 0, 89, 203,116,3, 0, 0, 0, 0, 255,189,252,3,
- 0, 0, 0, 0, 33, 0, 8, 0, 0, 16, 0, 0, 209,105,30, 0, 0, 0, 0, 0, 0, 112,44, 0, 0, 240,63, 0, 51, 24, 4, 2, 0, 48, 6, 0, 0, 0, 0, 0,
- 0, 240,56, 0, 0, 0, 0, 0, 0, 240,2, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 129,36, 0, 0, 0, 0, 0, 20, 68, 16, 0,
- 0, 96, 0, 0, 32, 32, 4, 0, 0, 0, 0, 0, 80, 4, 2, 0, 0, 0, 0, 0, 72, 128,0, 0, 0, 0, 0, 0, 154,97, 4, 1, 0, 0, 0, 0, 223,191,252,1,
- 0, 0, 0, 0, 48, 41, 4, 0, 0, 96, 0, 0, 87, 73, 76, 1, 0, 0, 0, 0, 16, 80, 4, 0, 0, 0, 0, 0, 26, 8, 12, 0, 0, 0, 0, 0, 4, 96, 8, 0,
- 0, 0, 0, 0, 158,32, 4, 0, 0, 0, 0, 0, 17, 25, 0, 1, 0, 32, 0, 0, 16, 49, 6, 0, 16, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 114,184,36, 2,
- 0, 0, 0, 0, 8, 0, 38, 0, 0, 0, 0, 0, 18, 0, 12, 0, 0, 0, 0, 0, 17, 36, 4, 0, 0, 0, 0, 0, 17, 9, 68, 1, 0, 0, 0, 0, 0, 129,4, 0,
- 0, 0, 0, 0, 140,4, 4, 0, 0, 8, 0, 0, 0, 40, 78, 0, 0, 32, 16, 0, 0, 8, 4, 0, 0, 0, 16, 0, 214,253,126,3, 0, 0, 0, 0, 194,64, 16, 0,
- 0, 0, 0, 0, 81, 5, 0, 0, 0, 0, 0, 0, 2, 32, 12, 1, 0, 0, 0, 0, 10, 205,4, 2, 0, 0, 0, 0, 16, 69, 12, 0, 0, 0, 0, 0, 66, 1, 4, 0,
- 0, 0, 0, 0, 222,189,62, 2, 0, 0, 0, 0, 144,16, 0, 0, 0, 0, 0, 0, 97, 1, 4, 0, 0, 0, 4, 0, 215,56, 68, 0, 0, 32, 0, 0, 16, 0, 12, 0,
- 0, 0, 0, 0, 4, 1, 28, 0, 0, 0, 0, 0, 59, 57, 68, 0, 0, 0, 8, 0, 137,216,8, 0, 0, 0, 0, 0, 148,44, 130,1, 0, 0, 0, 0, 16, 2, 0, 1,
- 0, 0, 0, 0, 255,253,239,3, 0, 0, 0, 0, 9, 9, 4, 0, 0, 0, 0, 0, 151,105,22, 3, 0, 0, 0, 0, 4, 41, 6, 1, 0, 0, 0, 0, 5, 10, 6, 1,
- 0, 0, 0, 0, 21, 104,28, 0, 0, 0, 0, 0, 0, 33, 118,0, 0, 0, 0, 0, 4, 0, 96, 0, 0, 0, 0, 0, 4, 1, 1, 0, 0, 0, 0, 0, 149,76, 10, 0,
- 0, 32, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 97, 4, 1, 0, 0, 0, 0, 0, 49, 10, 0, 0, 0, 0, 0, 0, 32, 96, 0, 0, 32, 0, 0, 146,153,76, 1,
- 0, 32, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 16, 1, 28, 0, 0, 0, 0, 0, 89, 57, 20, 3, 0, 96, 4, 0, 4, 60, 6, 0, 0, 0, 0, 0, 5, 36, 0, 0,
- 0, 0, 0, 0, 6, 57, 78, 1, 0, 0, 0, 0, 25, 68, 68, 0, 0, 0, 0, 0, 0, 68, 6, 0, 0, 0, 0, 0, 49, 97, 26, 0, 0, 0, 0, 0, 19, 121,16, 1,
- 0, 0, 0, 0, 16, 12, 10, 1, 0, 0, 0, 0, 201,81, 82, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0, 0, 0, 0, 64, 44, 12, 0, 0, 0, 0, 0, 145,9, 0, 0,
- 0, 0, 0, 0, 64, 36, 6, 0, 0, 176,0, 0, 10, 56, 14, 1, 0, 128,0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 31, 93, 80, 1,
- 0, 0, 0, 0, 4, 36, 10, 1, 0, 0, 0, 0, 16, 20, 0, 1, 0, 0, 0, 0, 9, 32, 6, 0, 0, 0, 0, 0, 59, 221,0, 0, 0, 0, 0, 0, 64, 33, 6, 1,
- 0, 0, 0, 0, 51, 72, 4, 0, 0, 0, 0, 0, 16, 5, 0, 1, 0, 0, 0, 0, 144,9, 12, 1, 0, 0, 4, 0, 255,253,126,3, 0, 0, 0, 0, 192,22, 96, 1,
- 0, 64, 0, 0, 72, 16, 4, 0, 0, 0, 0, 0, 16, 96, 0, 1, 0, 0, 0, 0, 65, 0, 32, 1, 0, 0, 0, 0, 0, 8, 5, 0, 0, 0, 0, 0, 192,16, 96, 0,
- 0, 0, 0, 0, 66, 8, 0, 0, 0, 0, 0, 0, 64, 32, 32, 0, 0, 0, 0, 0, 0, 81, 32, 0, 0, 0, 0, 0, 181,81, 72, 0, 0, 0, 0, 0, 16, 72, 2, 2,
- 0, 0, 0, 0, 8, 176,4, 0, 0, 0, 0, 0, 17, 201,18, 0, 0, 32, 0, 0, 64, 0, 14, 1, 0, 0, 0, 0, 4, 0, 134,0, 0, 0, 0, 0, 255,253,94, 1,
- 0, 0, 0, 0, 14, 61, 12, 2, 0, 0, 0, 0, 16, 168,142,0, 0, 0, 0, 0, 85, 96, 4, 0, 0, 0, 0, 0, 8, 8, 0, 1, 0, 0, 0, 0, 4, 168,20, 0,
- 0, 0, 0, 0, 4, 72, 8, 0, 0, 0, 0, 0, 149,69, 28, 2, 0, 0, 0, 0, 2, 36, 8, 0, 0, 0, 0, 0, 0, 44, 8, 0, 0, 0, 0, 0, 18, 81, 0, 1,
- 0, 96, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 148,5, 14, 1, 0, 32, 0, 0, 16, 81, 0, 1, 0, 0, 0, 0, 9, 65, 0, 0, 0, 0, 0, 0, 25, 89, 0, 1,
- 0, 0, 0, 0, 32, 4, 32, 0, 0, 0, 0, 0, 64, 32, 34, 0, 0, 0, 0, 0, 1, 36, 0, 0, 0, 0, 0, 0, 127,61, 14, 0, 0, 0, 0, 0, 144,4, 16, 0,
- 0, 0, 0, 0, 8, 33, 142,0, 0, 96, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 17, 68, 128,0, 0, 0, 0, 0, 53, 205,10, 0, 0, 0, 0, 0, 17, 73, 208,0,
- 0, 0, 0, 0, 25, 32, 16, 0, 0, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 72, 4, 66, 0, 0, 0, 0, 0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 97, 0, 0,
- 16, 228,38, 0, 255,255,255,3, 0, 0, 0, 0, 224,88, 0, 0, 0, 0, 0, 0, 0, 128,0, 2, 0, 0, 2, 0, 126,188,62, 3, 0, 0, 0, 0, 88, 1, 4, 1,
- 0, 224,46, 0, 16, 112,12, 0, 0, 112,2, 0, 0, 64, 8, 0, 0, 0, 0, 0, 25, 9, 0, 1, 0, 0, 0, 0, 249,185,110,1, 0, 0, 0, 0, 136,32, 0, 0,
- 0, 0, 0, 0, 216,73, 4, 1, 0, 128,0, 0, 144,1, 4, 0, 0, 0, 0, 0, 128,9, 4, 0, 0, 32, 0, 0, 51, 24, 69, 1, 0, 0, 0, 0, 153,77, 8, 1,
- 0, 0, 0, 0, 8, 24, 4, 1, 0, 8, 0, 0, 210,217,102,0, 0, 0, 0, 0, 10, 40, 64, 0, 0, 32, 0, 0, 16, 16, 0, 0, 0, 32, 0, 0, 64, 130,2, 0,
- 0, 0, 0, 0, 149,209,4, 0, 0, 96, 4, 0, 17, 32, 2, 0, 0, 0, 0, 0, 27, 105,6, 1, 0, 0, 0, 0, 12, 32, 18, 1, 0, 0, 0, 0, 17, 1, 68, 1,
- 0, 0, 0, 0, 0, 41, 6, 1, 0, 0, 0, 0, 146,8, 78, 0, 0, 0, 0, 0, 128,192,8, 0, 0, 0, 0, 0, 1, 40, 4, 0, 0, 0, 0, 0, 149,125,92, 2,
- 0, 0, 0, 0, 64, 56, 32, 0, 0, 0, 0, 0, 72, 32, 0, 2, 0, 0, 1, 0, 20, 9, 4, 0, 0, 0, 0, 0, 179,89, 6, 0, 0, 0, 0, 0, 8, 56, 12, 0,
- 0, 0, 0, 0, 2, 72, 0, 0, 0, 96, 32, 0, 8, 0, 4, 0, 0, 0, 0, 0, 34, 56, 78, 2, 0, 0, 0, 0, 16, 65, 16, 1, 0, 0, 0, 0, 29, 0, 5, 0,
- 0, 0, 0, 0, 24, 176,2, 0, 0, 36, 0, 0, 223,121,126,3, 0, 224,4, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 60, 134,1, 0, 0, 0, 0, 18, 25, 68, 0,
- 0, 0, 0, 0, 160,0, 12, 0, 0, 0, 0, 0, 151,25, 64, 1, 0, 0, 0, 0, 172,24, 78, 0, 0, 0, 0, 0, 119,36, 14, 2, 0, 0, 0, 0, 0, 5, 8, 0,
- 0, 0, 0, 0, 67, 64, 0, 0, 0, 0, 0, 0, 65, 16, 16, 0, 0, 0, 0, 0, 12, 32, 4, 0, 0, 4, 0, 0, 17, 64, 8, 0, 0, 0, 0, 0, 5, 8, 8, 0,
- 0, 96, 0, 0, 20, 65, 4, 0, 0, 32, 0, 0, 0, 64, 36, 0, 0, 0, 0, 0, 28, 236,78, 1, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 69, 4, 0,
- 0, 0, 0, 0, 51, 9, 26, 1, 0, 0, 0, 0, 17, 105,18, 1, 0, 0, 0, 0, 4, 48, 2, 0, 0, 0, 0, 0, 84, 32, 0, 0, 0, 0, 0, 0, 243,121,114,1,
- 0, 0, 0, 0, 147,249,6, 0, 0, 0, 0, 0, 10, 48, 10, 0, 0, 0, 0, 0, 8, 8, 8, 2, 0, 0, 0, 0, 4, 57, 46, 0, 0, 32, 0, 0, 0, 68, 0, 0,
- 0, 0, 0, 0, 64, 16, 12, 0, 0, 0, 0, 0, 144,121,30, 0, 0, 0, 0, 0, 72, 48, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 0, 0, 0, 0, 208,29, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 2, 0, 0, 0, 0, 254,62, 46, 0, 0, 0, 0, 0, 146,121,4, 0, 0, 0, 0, 0, 18, 16, 0, 0, 0, 0, 0, 0, 3, 24, 0, 0,
- 0, 0, 0, 0, 145,96, 8, 0, 0, 0, 0, 0, 32, 0, 36, 0, 0, 0, 16, 0, 178,1, 4, 1, 0, 0, 0, 0, 16, 120,0, 0, 0, 0, 0, 0, 27, 0, 8, 0,
- 0, 0, 0, 0, 17, 48, 2, 0, 0, 0, 0, 0, 253,64, 76, 0, 0, 0, 0, 0, 1, 129,8, 0, 0, 0, 0, 0, 20, 9, 0, 0, 0, 0, 0, 0, 151,121,12, 0,
- 0, 0, 0, 0, 131,16, 12, 2, 0, 0, 0, 0, 145,32, 0, 2, 0, 0, 0, 0, 219,61, 76, 0, 0, 128,2, 0, 255,255,127,3, 0, 0, 0, 0, 206,177,76, 3,
- 0, 0, 0, 0, 128,0, 22, 2, 0, 0, 0, 0, 0, 13, 12, 0, 0, 0, 0, 0, 111,244,118,1, 0, 0, 0, 0, 0, 48, 4, 2, 0, 0, 0, 0, 16, 65, 6, 0,
- 0, 32, 0, 0, 29, 184,76, 0, 0, 0, 0, 0, 27, 69, 0, 0, 0, 0, 0, 0, 16, 81, 15, 0, 0, 0, 0, 0, 8, 2, 6, 0, 0, 0, 0, 0, 253,114,140,3,
- 0, 0, 0, 0, 81, 64, 8, 0, 0, 0, 0, 0, 145,65, 12, 2, 0, 32, 0, 0, 2, 40, 34, 0, 0, 32, 0, 0, 1, 0, 8, 0, 0, 0, 0, 0, 149,65, 12, 0,
- 0, 0, 0, 0, 29, 113,70, 3, 0, 0, 0, 0, 234,48, 14, 1, 0, 32, 0, 0, 11, 64, 68, 0, 0, 0, 0, 0, 10, 20, 12, 1, 0, 0, 0, 0, 16, 0, 18, 1,
- 0, 0, 0, 0, 53, 224,12, 0, 0, 0, 0, 0, 146,0, 76, 0, 0, 0, 0, 0, 16, 64, 64, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, 2, 80, 72, 0,
- 0, 0, 0, 0, 147,65, 69, 0, 0, 0, 0, 0, 172,161,19, 1, 0, 0, 0, 0, 147,245,72, 1, 0, 0, 0, 0, 16, 8, 4, 1, 0, 0, 0, 0, 1, 32, 98, 1,
- 0, 0, 0, 0, 17, 96, 2, 0, 0, 0, 0, 0, 144,65, 2, 2, 0, 0, 0, 0, 13, 16, 4, 0, 0, 0, 0, 0, 0, 32, 6, 1, 0, 0, 0, 0, 1, 0, 28, 0,
- 0, 32, 44, 0, 128,128,4, 0, 0, 0, 0, 0, 145,65, 0, 1, 0, 0, 0, 0, 19, 65, 0, 1, 0, 0, 0, 0, 255,221,30, 3, 0, 0, 0, 0, 12, 185,6, 1,
- 0, 0, 0, 0, 5, 64, 16, 0, 0, 128,0, 0, 17, 73, 30, 0, 0, 0, 0, 0, 69, 4, 2, 0, 0, 0, 0, 0, 8, 8, 2, 2, 0, 0, 0, 0, 64, 9, 12, 1,
- 0, 0, 0, 0, 0, 16, 10, 0, 0, 0, 0, 0, 8, 8, 20, 0, 0, 0, 0, 0, 64, 40, 4, 0, 0, 0, 0, 0, 5, 40, 14, 0, 0, 0, 0, 0, 24, 1, 0, 1,
- 0, 0, 0, 0, 65, 9, 28, 1, 0, 0, 0, 0, 68, 44, 14, 0, 0, 96, 0, 0, 3, 0, 4, 0, 0, 112,0, 0, 0, 42, 18, 0, 0, 0, 0, 0, 8, 9, 12, 0,
- 0, 0, 0, 0, 20, 0, 12, 0, 0, 0, 0, 0, 64, 36, 10, 0, 0, 0, 0, 0, 177,73, 14, 0, 0, 0, 0, 0, 0, 8, 66, 0, 0, 0, 0, 0, 128,8, 64, 0,
- 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 6, 48, 0, 0, 0, 0, 0, 0, 145,77, 18, 1, 0, 0, 0, 0, 0, 152,22, 0, 0, 0, 0, 0, 16, 17, 2, 0,
- 0, 0, 0, 0, 8, 16, 18, 0, 0, 0, 0, 0, 0, 64, 16, 1, 0, 0, 0, 0, 81, 201,22, 3, 0, 0, 0, 0, 13, 16, 2, 0, 0, 32, 0, 0, 2, 8, 4, 0,
- 0, 0, 0, 0, 5, 32, 40, 0, 0, 0, 0, 0, 76, 176,78, 0, 0, 0, 0, 0, 160,128,4, 0, 0, 0, 0, 0, 9, 57, 6, 0, 0, 0, 0, 0, 17, 0, 0, 3,
- 0, 0, 0, 0, 9, 16, 6, 0, 0, 0, 0, 0, 187,57, 87, 0, 0, 0, 0, 0, 72, 0, 2, 0, 0, 0, 0, 0, 2, 56, 14, 0, 0, 0, 0, 0, 130,28, 4, 0,
- 0, 0, 0, 0, 0, 80, 8, 0, 0, 224,0, 0, 24, 0, 4, 0, 0, 0, 0, 0, 162,20, 78, 1, 0, 32, 0, 0, 0, 16, 64, 0, 0, 0, 0, 0, 77, 0, 196,0,
- 0, 96, 0, 0, 0, 0, 8, 0, 0, 32, 0, 0, 17, 17, 4, 0, 0, 0, 0, 0, 64, 8, 36, 0, 0, 0, 0, 0, 4, 4, 8, 0, 0, 0, 0, 0, 68, 56, 30, 0,
- 0, 0, 0, 0, 1, 65, 2, 0, 0, 0, 0, 0, 68, 8, 1, 0, 0, 32, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 148,89, 88, 2, 0, 0, 0, 0, 0, 56, 0, 1,
- 0, 0, 0, 0, 145,73, 70, 2, 0, 0, 0, 0, 2, 33, 0, 0, 0, 96, 0, 0, 22, 185,12, 0, 0, 0, 0, 0, 8, 161,2, 0, 0, 0, 0, 0, 17, 164,4, 0,
- 0, 0, 0, 0, 17, 64, 6, 0, 0, 0, 0, 0, 100,101,44, 0, 0, 0, 0, 0, 149,201,124,0, 0, 0, 0, 0, 0, 16, 26, 0, 0, 0, 0, 0, 0, 16, 36, 0,
- 0, 0, 0, 0, 108,184,14, 2, 0, 0, 0, 0, 4, 64, 8, 0, 0, 0, 0, 0, 4, 40, 129,0, 0, 0, 0, 0, 128,8, 12, 0, 0, 0, 0, 0, 0, 32, 12, 2,
- 0, 0, 0, 0, 8, 0, 20, 0, 0, 0, 0, 0, 137,168,44, 0, 0, 0, 0, 0, 16, 144,4, 0, 0, 0, 0, 0, 255,253,254,3, 0, 0, 0, 0, 76, 36, 14, 2,
- 0, 0, 0, 0, 16, 81, 24, 0, 0, 0, 0, 0, 49, 121,0, 0, 0, 0, 0, 0, 15, 37, 108,2, 0, 0, 0, 0, 128,0, 2, 2, 0, 0, 0, 0, 33, 64, 16, 0,
- 0, 0, 0, 0, 92, 100,173,0, 0, 32, 36, 0, 149,4, 4, 0, 0, 0, 0, 0, 17, 1, 64, 0, 0, 0, 0, 0, 2, 32, 66, 0, 0, 128,0, 0, 17, 65, 4, 2,
- 0, 0, 0, 0, 200,57, 12, 0, 0, 0, 0, 0, 0, 32, 8, 2, 0, 0, 0, 0, 8, 0, 74, 0, 0, 0, 0, 0, 149,132,8, 0, 0, 0, 0, 0, 16, 24, 0, 2,
- 0, 0, 0, 0, 0, 36, 8, 0, 0, 0, 0, 0, 192,1, 20, 0, 0, 64, 0, 0, 255,253,79, 2, 0, 0, 0, 0, 0, 40, 82, 0, 0, 0, 0, 0, 40, 186,10, 0,
- 0, 32, 0, 0, 24, 16, 4, 0, 0, 0, 0, 0, 84, 128,6, 0, 0, 0, 0, 0, 19, 17, 2, 0, 0, 0, 0, 0, 18, 40, 42, 0, 0, 0, 0, 0, 8, 64, 2, 0,
- 0, 0, 0, 0, 4, 129,8, 2, 0, 0, 0, 0, 2, 16, 32, 0, 0, 0, 0, 0, 19, 92, 0, 0, 0, 0, 0, 0, 0, 144,2, 0, 0, 0, 0, 0, 25, 65, 18, 0,
- 0, 0, 0, 0, 16, 40, 66, 0, 0, 0, 0, 0, 0, 129,8, 0, 0, 0, 0, 0, 17, 105,2, 1, 0, 0, 0, 0, 76, 41, 2, 0, 0, 0, 0, 0, 4, 42, 2, 1,
- 0, 0, 0, 0, 0, 96, 10, 0, 0, 196,0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 97, 22, 0, 0, 4, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 56, 50, 0,
- 0, 0, 0, 0, 145,125,0, 0, 0, 0, 0, 0, 32, 17, 2, 1, 0, 0, 0, 0, 0, 168,135,0, 0, 0, 0, 0, 84, 32, 128,0, 0, 0, 0, 0, 149,73, 82, 1,
- 0, 0, 0, 0, 14, 57, 14, 0, 0, 0, 0, 0, 114,168,38, 1, 0, 0, 0, 0, 195,72, 4, 0, 0, 0, 0, 0, 4, 164,2, 1, 0, 8, 0, 0, 181,109,62, 3,
- 0, 0, 0, 0, 0, 40, 72, 0, 0, 4, 0, 0, 144,1, 4, 0, 0, 0, 0, 0, 17, 113,2, 1, 0, 32, 0, 0, 16, 64, 0, 0, 0, 0, 0, 0, 16, 33, 12, 0,
- 0, 0, 0, 0, 144,112,5, 0, 16, 0, 0, 0, 2, 41, 64, 0, 0, 0, 0, 0, 127,188,238,0, 0, 0, 0, 0, 0, 36, 130,0, 0, 0, 0, 0, 21, 64, 16, 0,
- 0, 0, 0, 0, 145,1, 8, 0, 0, 224,3, 0, 19, 65, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 238,184,44, 2, 0, 8, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0, 20, 192,8, 0, 0, 32, 0, 0, 16, 68, 8, 0, 0, 0, 0, 0, 145,64, 6, 0, 0, 0, 8, 0, 211,75, 2, 0, 0, 0, 0, 0, 140,168,14, 0,
- 0, 32, 0, 0, 92, 69, 4, 0, 0, 0, 0, 0, 4, 96, 4, 2, 0, 0, 0, 0, 0, 68, 40, 0, 0, 0, 0, 0, 48, 137,12, 0, 0, 0, 0, 0, 32, 9, 20, 0,
- 16, 0, 0, 0, 223,57, 79, 1, 0, 0, 0, 0, 128,64, 12, 2, 0, 32, 0, 0, 10, 80, 72, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 0, 0, 0, 29, 40, 12, 0,
- 0, 32, 4, 0, 8, 72, 4, 0, 0, 0, 0, 0, 4, 44, 2, 1, 0, 0, 0, 0, 1, 0, 48, 0, 0, 0, 0, 0, 19, 65, 73, 1, 0, 128,0, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 183,249,153,0, 0, 0, 0, 0, 68, 56, 6, 0, 0, 0, 0, 0, 16, 136,6, 0, 0, 0, 0, 0, 68, 24, 14, 0, 0, 0, 0, 0, 80, 8, 12, 0,
- 0, 0, 0, 0, 76, 160,14, 0, 0, 0, 0, 0, 12, 40, 2, 0, 0, 0, 0, 0, 8, 1, 6, 0, 0, 96, 0, 0, 16, 73, 64, 0, 0, 0, 0, 0, 8, 0, 28, 0,
- 0, 160,0, 0, 76, 250,44, 0, 0, 0, 0, 0, 10, 144,0, 0, 0, 0, 0, 0, 87, 184,30, 0, 0, 0, 0, 0, 110,137,70, 0, 0, 0, 0, 0, 0, 193,8, 0,
- 0, 0, 0, 0, 25, 153,2, 2, 0, 0, 0, 0, 4, 12, 3, 0, 64, 244,54, 0, 255,255,255,3, 0, 192,0, 0, 22, 0, 0, 0, 0, 64, 3, 0, 32, 0, 0, 0,
- 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 255,191,255,3, 0, 0, 0, 0, 51, 73, 18, 1, 0, 0, 0, 0, 17, 96, 20, 0, 0, 0, 0, 0, 0, 9, 0, 2,
- 0, 0, 0, 0, 4, 4, 1, 2, 0, 0, 0, 0, 149,5, 28, 0, 0, 64, 0, 0, 42, 120,14, 1, 0, 0, 0, 0, 18, 65, 20, 0, 0, 0, 0, 0, 25, 105,6, 0,
- 0, 0, 0, 0, 8, 41, 6, 0, 0, 0, 0, 0, 132,32, 14, 0, 0, 0, 0, 0, 1, 33, 0, 1, 0, 0, 0, 0, 81, 105,20, 0, 0, 0, 0, 0, 1, 8, 5, 0,
- 0, 0, 0, 0, 27, 43, 6, 1, 0, 0, 0, 0, 138,4, 72, 0, 0, 0, 0, 0, 93, 104,174,2, 0, 0, 0, 0, 24, 73, 28, 0, 0, 0, 0, 0, 247,185,126,1,
- 0, 0, 0, 0, 5, 64, 8, 0, 0, 96, 0, 0, 32, 8, 4, 1, 0, 0, 0, 0, 8, 160,6, 0, 0, 0, 0, 0, 223,93, 124,2, 0, 0, 0, 0, 164,33, 6, 0,
- 0, 16, 0, 0, 0, 32, 2, 0, 0, 240,15, 0, 16, 1, 6, 0, 0, 0, 0, 0, 40, 64, 0, 0, 0, 0, 0, 0, 0, 32, 14, 1, 0, 0, 0, 0, 130,0, 12, 0,
- 0, 8, 32, 0, 27, 65, 20, 0, 0, 0, 0, 0, 68, 0, 192,0, 0, 32, 0, 0, 65, 0, 4, 0, 0, 0, 0, 0, 22, 32, 4, 0, 0, 0, 0, 0, 0, 160,80, 0,
- 0, 224,0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 128,8, 8, 0, 0, 0, 0, 0, 16, 65, 20, 2, 0, 0, 0, 0, 19, 65, 16, 1, 0, 0, 0, 0, 69, 40, 12, 0,
- 0, 48, 2, 0, 64, 0, 0, 0, 0, 0, 0, 0, 127,111,28, 2, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 128,9, 0, 1, 0, 0, 0, 0, 16, 81, 20, 0,
- 0, 0, 0, 0, 17, 65, 2, 2, 0, 32, 0, 0, 66, 1, 20, 2, 0, 0, 0, 0, 0, 17, 8, 1, 0, 32, 24, 0, 0, 8, 0, 0, 0, 0, 8, 0, 255,127,127,3,
- 0, 0, 0, 0, 206,91, 64, 2, 0, 0, 0, 0, 152,40, 78, 0, 0, 0, 0, 0, 27, 48, 4, 0, 0, 0, 0, 0, 209,64, 0, 0, 0, 0, 0, 0, 147,9, 100,1,
- 0, 0, 0, 0, 147,0, 84, 0, 0, 0, 0, 0, 0, 8, 6, 1, 0, 0, 0, 0, 192,46, 18, 0, 0, 0, 0, 0, 4, 73, 8, 0, 0, 0, 0, 0, 176,17, 6, 0,
- 0, 0, 0, 0, 151,77, 28, 1, 0, 0, 0, 0, 5, 96, 4, 0, 0, 0, 0, 0, 18, 41, 0, 0, 0, 32, 0, 0, 62, 249,4, 0, 0, 0, 0, 0, 255,223,94, 2,
- 0, 0, 0, 0, 128,8, 4, 0, 0, 16, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 168,0, 4, 0, 0, 0, 0, 0, 17, 65, 2, 1, 0, 32, 0, 0, 144,9, 4, 0,
- 0, 0, 0, 0, 196,16, 0, 0, 0, 0, 0, 0, 94, 168,175,0, 0, 0, 0, 0, 16, 73, 16, 0, 0, 0, 0, 0, 140,13, 12, 0, 0, 0, 0, 0, 5, 1, 8, 0,
- 0, 0, 0, 0, 20, 36, 12, 0, 0, 0, 0, 0, 0, 81, 16, 0, 0, 0, 0, 0, 0, 8, 2, 2, 0, 192,31, 0, 0, 0, 4, 0, 0, 0, 0, 0, 22, 44, 38, 2,
- 0, 0, 0, 0, 21, 44, 6, 0, 0, 0, 0, 0, 71, 160,0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 161,51, 22, 0, 16, 224,0, 0, 255,127,127,3,
- 0, 0, 0, 0, 96, 56, 62, 2, 0, 0, 0, 0, 176,121,4, 1, 0, 0, 0, 0, 128,0, 20, 0, 0, 32, 0, 0, 16, 65, 68, 1, 0, 68, 0, 0, 2, 72, 18, 0,
- 0, 0, 0, 0, 145,4, 24, 0, 0, 0, 0, 0, 25, 73, 22, 0, 0, 0, 0, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 8, 194,2, 0, 0, 0, 0, 81, 77, 0, 0,
- 0, 0, 0, 0, 21, 69, 0, 0, 0, 0, 0, 0, 138,60, 14, 2, 0, 0, 0, 0, 18, 17, 68, 0, 0, 0, 0, 0, 81, 17, 4, 1, 0, 0, 0, 0, 81, 72, 16, 0,
- 0, 0, 0, 0, 86, 62, 14, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 90, 16, 12, 0, 0, 0, 0, 0, 144,32, 0, 1, 0, 0, 0, 0, 95, 221,60, 2,
- 0, 0, 0, 0, 147,180,12, 0, 0, 0, 0, 0, 6, 236,148,2, 0, 0, 0, 0, 25, 64, 8, 0, 0, 96, 0, 0, 4, 0, 132,0, 0, 0, 0, 0, 145,113,4, 0,
- 0, 0, 0, 0, 128,0, 14, 0, 0, 0, 0, 0, 8, 48, 2, 2, 0, 0, 0, 0, 144,69, 8, 0, 0, 0, 0, 0, 144,112,20, 3, 0, 0, 0, 0, 17, 81, 18, 0,
- 0, 0, 0, 0, 94, 125,78, 0, 0, 0, 0, 0, 16, 9, 10, 0, 0, 0, 0, 0, 4, 9, 6, 0, 0, 0, 0, 0, 16, 8, 140,0, 0, 0, 0, 0, 5, 20, 132,0,
- 0, 0, 0, 0, 0, 24, 70, 1, 0, 0, 0, 0, 64, 48, 64, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 95, 127,62, 0,
- 0, 0, 0, 0, 4, 56, 2, 0, 0, 0, 0, 0, 8, 1, 2, 0, 0, 0, 0, 0, 10, 41, 10, 0, 0, 0, 0, 0, 68, 0, 8, 2, 0, 0, 0, 0, 16, 0, 32, 2,
- 0, 0, 0, 0, 155,65, 76, 1, 0, 0, 0, 0, 8, 104,8, 0, 0, 0, 0, 0, 4, 32, 144,2, 0, 0, 0, 0, 68, 105,10, 2, 0, 224,3, 0, 32, 96, 4, 0,
- 0, 0, 0, 0, 17, 64, 8, 0, 0, 0, 0, 0, 26, 41, 10, 1, 0, 0, 0, 0, 86, 120,12, 0, 0, 0, 0, 0, 20, 56, 48, 0, 0, 0, 0, 0, 100,16, 4, 0,
- 0, 0, 0, 0, 2, 17, 0, 0, 0, 0, 0, 0, 64, 12, 8, 0, 0, 0, 0, 0, 148,156,28, 0, 0, 0, 0, 0, 149,33, 30, 2, 0, 16, 4, 0, 16, 1, 0, 0,
- 0, 0, 0, 0, 128,88, 4, 0, 0, 0, 0, 0, 28, 8, 14, 0, 0, 0, 0, 0, 2, 0, 68, 0, 0, 0, 0, 0, 144,40, 0, 2, 0, 16, 0, 0, 112,0, 36, 0,
- 0, 0, 0, 0, 136,34, 8, 0, 0, 0, 0, 0, 6, 41, 114,0, 0, 32, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 255,254,255,2, 0, 0, 0, 0, 4, 40, 12, 0,
- 0, 0, 0, 0, 129,12, 0, 0, 0, 0, 0, 0, 19, 64, 26, 0, 0, 0, 0, 0, 2, 48, 20, 0, 0, 0, 0, 0, 149,68, 24, 0, 0, 0, 0, 0, 27, 8, 12, 0,
- 0, 0, 0, 0, 0, 40, 14, 0, 0, 0, 0, 0, 0, 64, 40, 0, 0, 0, 44, 0, 1, 0, 4, 0, 0, 0, 0, 0, 89, 72, 20, 0, 0, 0, 0, 0, 110,40, 14, 0,
- 0, 32, 0, 0, 144,17, 76, 0, 0, 0, 0, 0, 85, 80, 6, 1, 0, 0, 0, 0, 17, 97, 8, 0, 0, 0, 0, 0, 213,89, 60, 0, 0, 0, 0, 0, 0, 64, 12, 1,
- 0, 32, 0, 0, 20, 65, 4, 0, 0, 0, 16, 0, 136,8, 4, 0, 0, 0, 0, 0, 211,221,12, 3, 0, 0, 0, 0, 0, 52, 14, 0, 0, 0, 0, 0, 71, 240,16, 0,
- 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 16, 193,4, 0, 0, 0, 0, 0, 145,209,4, 1, 0, 0, 0, 0, 8, 0, 14, 1, 0, 0, 0, 0, 16, 224,0, 0,
- 0, 0, 0, 0, 144,1, 4, 0, 0, 0, 0, 0, 49, 81, 68, 0, 0, 0, 0, 0, 32, 48, 12, 0, 0, 0, 0, 0, 144,64, 2, 0, 0, 0, 0, 0, 127,109,94, 2,
- 0, 0, 0, 0, 64, 56, 16, 2, 0, 32, 1, 0, 56, 9, 4, 0, 0, 0, 0, 0, 17, 24, 16, 1, 0, 0, 0, 0, 145,89, 20, 0, 0, 32, 0, 0, 106,120,14, 1,
- 0, 32, 0, 0, 146,177,12, 0, 0, 0, 0, 0, 69, 32, 12, 2, 0, 0, 0, 0, 18, 8, 4, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 17, 89, 4, 0,
- 0, 0, 0, 0, 104,56, 2, 1, 0, 0, 0, 0, 84, 40, 4, 0, 0, 0, 0, 0, 22, 0, 8, 0, 0, 0, 0, 0, 4, 32, 14, 0, 0, 0, 0, 0, 25, 221,28, 0,
- 0, 32, 44, 0, 239,185,76, 0, 0, 0, 0, 0, 1, 73, 18, 0, 0, 0, 0, 0, 0, 8, 20, 0, 0, 0, 0, 0, 1, 16, 128,1, 0, 0, 0, 0, 17, 41, 84, 0,
- 0, 34, 0, 0, 195,72, 12, 0, 0, 0, 0, 0, 213,13, 12, 0, 0, 0, 0, 0, 147,24, 0, 0, 0, 32, 32, 0, 246,253,12, 1, 0, 0, 0, 0, 4, 1, 16, 0,
- 0, 0, 0, 0, 0, 32, 64, 1, 0, 0, 0, 0, 9, 8, 6, 1, 0, 32, 0, 0, 0, 17, 4, 1, 0, 0, 0, 0, 48, 9, 20, 0, 0, 0, 0, 0, 213,100,14, 2,
- 0, 0, 0, 0, 17, 67, 4, 1, 0, 0, 0, 0, 209,190,70, 1, 0, 0, 2, 0, 37, 5, 6, 0, 0, 0, 0, 0, 18, 1, 0, 2, 0, 32, 0, 0, 24, 96, 0, 1,
- 0, 0, 16, 0, 66, 80, 10, 0, 0, 0, 0, 0, 8, 1, 2, 1, 0, 32, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0, 155,65, 56, 1, 0, 4, 0, 0, 207,181,255,1,
- 0, 0, 0, 0, 132,68, 0, 0, 0, 0, 0, 0, 82, 153,6, 0, 0, 0, 0, 0, 64, 24, 2, 0, 0, 0, 0, 0, 16, 33, 4, 1, 0, 0, 0, 0, 19, 17, 20, 0,
- 0, 32, 0, 0, 2, 96, 14, 0, 0, 0, 0, 0, 89, 37, 4, 0, 0, 0, 0, 0, 0, 130,4, 0, 0, 224,2, 0, 122,185,0, 1, 0, 0, 0, 0, 179,105,94, 0,
- 0, 0, 0, 0, 74, 48, 8, 0, 0, 0, 0, 0, 223,53, 254,0, 0, 0, 0, 0, 66, 4, 4, 0, 0, 0, 0, 0, 68, 53, 14, 0, 0, 0, 0, 0, 0, 1, 68, 0,
- 0, 0, 0, 0, 145,48, 0, 0, 0, 0, 0, 0, 25, 97, 12, 0, 0, 0, 0, 0, 132,32, 4, 0, 0, 0, 0, 0, 18, 48, 0, 1, 0, 0, 0, 0, 149,0, 8, 0,
- 0, 0, 0, 0, 17, 1, 20, 1, 0, 0, 0, 0, 86, 176,14, 0, 0, 0, 0, 0, 17, 33, 6, 0, 0, 32, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 76, 36, 12, 0,
- 0, 0, 0, 0, 18, 1, 16, 0, 0, 32, 0, 0, 0, 72, 6, 0, 0, 0, 0, 0, 48, 208,4, 1, 0, 0, 0, 0, 221,240,94, 1, 0, 0, 0, 0, 8, 4, 2, 2,
- 0, 0, 0, 0, 80, 137,68, 0, 0, 0, 0, 0, 128,128,4, 0, 0, 0, 0, 0, 21, 69, 18, 1, 0, 0, 0, 0, 1, 36, 12, 3, 0, 0, 0, 0, 28, 0, 12, 2,
- 0, 0, 0, 0, 11, 96, 4, 0, 0, 32, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 129,65, 12, 0, 0, 96, 0, 0, 16, 1, 4, 1, 0, 0, 0, 0, 255,117,174,0,
- 0, 0, 0, 0, 68, 40, 8, 0, 0, 0, 0, 0, 16, 1, 8, 1, 0, 0, 0, 0, 247,113,106,2, 0, 32, 48, 0, 0, 0, 0, 0, 0, 32, 0, 0, 1, 8, 2, 0,
- 0, 0, 0, 0, 223,253,254,3, 0, 0, 0, 0, 129,5, 16, 0, 0, 0, 0, 0, 89, 96, 0, 0, 0, 0, 0, 0, 12, 8, 14, 0, 0, 0, 0, 0, 209,72, 28, 0,
- 0, 0, 0, 0, 0, 16, 5, 0, 0, 0, 0, 0, 19, 8, 132,0, 0, 0, 0, 0, 217,29, 76, 2, 0, 0, 0, 0, 85, 96, 0, 0, 0, 0, 0, 0, 16, 57, 76, 0,
- 0, 0, 0, 0, 17, 81, 0, 1, 0, 0, 0, 0, 21, 32, 4, 0, 0, 0, 0, 0, 0, 12, 16, 0, 0, 0, 0, 0, 16, 17, 20, 0, 0, 0, 0, 0, 92, 97, 60, 2,
- 0, 0, 0, 0, 17, 104,22, 1, 0, 0, 0, 0, 0, 32, 72, 2, 0, 0, 0, 0, 145,33, 20, 0, 0, 0, 0, 0, 0, 8, 8, 2, 0, 0, 0, 0, 6, 40, 6, 1,
- 0, 32, 0, 0, 62, 12, 14, 0, 0, 0, 0, 0, 145,129,4, 0, 0, 0, 0, 0, 179,187,68, 1, 0, 96, 14, 0, 16, 1, 4, 0, 0, 0, 0, 0, 4, 9, 8, 1,
- 0, 0, 0, 0, 127,253,95, 3, 0, 0, 0, 0, 72, 60, 0, 1, 0, 0, 0, 0, 145,5, 16, 0, 0, 32, 0, 0, 40, 136,4, 0, 0, 240,35, 0, 240,81, 12, 1,
- 0, 224,0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 247,191,238,0, 0, 0, 0, 0, 145,21, 8, 0, 0, 0, 0, 0, 1, 33, 4, 0, 0, 32, 32, 0, 17, 17, 38, 0,
- 0, 96, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 32, 17, 12, 0, 0, 0, 0, 0, 16, 96, 32, 0, 0, 0, 0, 0, 17, 105,20, 0, 0, 0, 0, 0, 32, 32, 32, 0,
- 0, 0, 0, 0, 147,73, 84, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 8, 40, 2, 1, 0, 32, 0, 64, 16, 1, 14, 0, 0, 0, 0, 0, 3, 8, 6, 1,
- 0, 0, 0, 0, 215,88, 28, 1, 0, 0, 0, 0, 16, 8, 8, 1, 0, 0, 0, 0, 209,53, 22, 1, 0, 0, 0, 0, 1, 160,4, 0, 0, 0, 0, 0, 4, 16, 66, 0,
- 0, 0, 0, 0, 48, 32, 12, 0, 0, 96, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 206,60, 12, 0, 0, 0, 0, 0, 32, 0, 4, 2, 0, 32, 0, 0, 16, 1, 36, 0,
- 0, 0, 0, 0, 146,65, 0, 2, 0, 0, 0, 0, 197,40, 143,1, 0, 0, 0, 0, 94, 5, 4, 0, 0, 0, 0, 0, 17, 9, 6, 0, 0, 66, 0, 0, 37, 165,142,0,
- 0, 0, 0, 0, 0, 64, 9, 0, 0, 0, 0, 0, 144,0, 2, 1, 0, 0, 0, 0, 21, 0, 6, 3, 0, 0, 0, 0, 18, 12, 0, 0, 0, 32, 0, 0, 254,16, 206,1,
- 0, 0, 0, 0, 0, 8, 48, 0, 0, 128,0, 0, 61, 97, 148,1, 0, 0, 0, 0, 222,189,254,3, 0, 0, 0, 0, 5, 5, 8, 0, 0, 0, 0, 0, 16, 4, 0, 1,
- 0, 0, 0, 0, 65, 113,2, 0, 0, 0, 0, 0, 8, 104,6, 2, 0, 0, 0, 0, 16, 137,0, 0, 0, 40, 0, 0, 8, 0, 70, 0, 0, 0, 0, 0, 92, 167,77, 2,
- 0, 0, 0, 0, 145,69, 20, 1, 0, 32, 32, 0, 0, 32, 4, 1, 0, 32, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 96, 12, 0, 0, 96, 0, 0, 4, 0, 1, 2,
- 0, 32, 0, 0, 16, 185,18, 0, 0, 96, 6, 0, 177,105,20, 3, 0, 0, 0, 0, 162,0, 14, 0, 0, 0, 0, 0, 0, 128,96, 0, 0, 0, 0, 0, 1, 1, 16, 3,
- 0, 0, 0, 0, 0, 104,12, 0, 0, 0, 0, 0, 148,1, 20, 0, 0, 0, 0, 0, 16, 1, 26, 2, 0, 0, 0, 0, 88, 40, 12, 0, 0, 0, 0, 0, 16, 1, 0, 2,
- 0, 0, 0, 0, 16, 8, 10, 1, 0, 0, 0, 64, 223,127,127,3, 0, 32, 0, 0, 27, 81, 4, 1, 0, 112,36, 0, 25, 73, 2, 1, 0, 0, 0, 0, 25, 65, 2, 1,
- 0, 0, 0, 0, 16, 40, 10, 0, 0, 0, 0, 0, 1, 69, 8, 0, 0, 0, 0, 0, 18, 64, 0, 0, 0, 160,33, 0, 190,255,126,2, 0, 0, 0, 0, 16, 65, 20, 1,
- 0, 0, 0, 0, 17, 88, 0, 0, 0, 240,59, 0, 0, 0, 4, 0, 0, 0, 0, 0, 17, 64, 4, 1, 0, 0, 0, 0, 21, 128,24, 0, 0, 0, 0, 0, 1, 64, 16, 1,
- 0, 0, 0, 0, 81, 65, 16, 0, 0, 0, 0, 0, 250,62, 14, 0, 0, 0, 0, 0, 145,21, 0, 0, 0, 0, 8, 0, 17, 81, 0, 0, 0, 0, 0, 0, 92, 101,12, 2,
- 0, 32, 0, 0, 32, 17, 72, 1, 0, 0, 0, 0, 148,32, 9, 0, 0, 32, 0, 0, 16, 120,64, 0, 0, 0, 0, 0, 2, 9, 76, 2, 0, 0, 0, 0, 63, 18, 10, 0,
- 0, 0, 0, 0, 223,255,188,2, 0, 0, 0, 0, 129,4, 8, 0, 0, 0, 0, 0, 89, 88, 8, 0, 0, 0, 0, 0, 138,56, 14, 2, 0, 0, 0, 0, 147,28, 14, 0,
- 0, 0, 0, 0, 16, 105,12, 2, 0, 0, 0, 0, 193,65, 0, 0, 0, 0, 0, 0, 150,69, 8, 0, 0, 0, 0, 0, 132,65, 12, 2, 0, 32, 0, 0, 80, 153,0, 3,
- 16, 0, 0, 0, 223,121,92, 3, 0, 0, 0, 0, 138,24, 4, 0, 0, 32, 0, 0, 96, 56, 4, 0, 0, 0, 0, 0, 2, 88, 64, 0, 0, 0, 0, 0, 8, 104,4, 0,
- 0, 0, 0, 0, 155,80, 32, 0, 0, 0, 0, 0, 28, 5, 12, 0, 0, 64, 0, 0, 19, 89, 70, 2, 0, 0, 0, 0, 4, 1, 12, 1, 0, 32, 0, 0, 18, 65, 4, 1,
- 0, 0, 0, 0, 212,57, 28, 0, 0, 32, 0, 0, 38, 9, 36, 1, 0, 0, 0, 0, 1, 132,0, 0, 0, 0, 0, 0, 132,65, 8, 0, 0, 0, 0, 0, 27, 89, 6, 0,
- 0, 0, 0, 0, 8, 9, 16, 0, 0, 12, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 255,254,143,2, 0, 0, 0, 0, 8, 128,1, 0, 0, 32, 4, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 133,21, 0, 0, 16, 48, 44, 64, 241,121,92, 1, 0, 0, 0, 0, 24, 16, 2, 0, 0, 96, 4, 0, 128,32, 0, 0, 0, 96, 0, 0, 1, 128,0, 0,
- 1, 112,28, 0, 67, 0, 2, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 192,56, 6, 0, 0, 0, 0, 0, 2, 16, 12, 3, 0, 0, 0, 0, 209,73, 16, 0,
- 0, 0, 0, 0, 48, 17, 0, 0, 0, 0, 0, 0, 161,117,76, 0, 0, 0, 0, 0, 8, 113,6, 1, 0, 0, 0, 0, 255,220,108,0, 0, 0, 0, 0, 128,65, 2, 0,
- 0, 0, 0, 0, 179,49, 70, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 64, 100,0, 0, 0, 32, 1, 0, 255,101,12, 0, 0, 0, 0, 0, 32, 37, 2, 0,
- 0, 0, 0, 0, 128,5, 8, 0, 0, 0, 0, 0, 145,1, 4, 1, 0, 32, 0, 0, 84, 16, 4, 0, 0, 0, 0, 0, 119,125,30, 3, 0, 0, 0, 0, 17, 9, 16, 1,
- 0, 0, 0, 0, 128,1, 2, 0, 0, 0, 0, 0, 0, 32, 88, 0, 0, 0, 0, 0, 129,65, 64, 0, 0, 0, 0, 0, 8, 4, 64, 0, 0, 0, 0, 0, 2, 4, 8, 1,
- 0, 0, 0, 0, 149,97, 12, 0, 0, 0, 0, 0, 32, 108,0, 0, 0, 0, 0, 0, 18, 33, 0, 1, 0, 0, 0, 0, 151,65, 30, 1, 0, 0, 0, 0, 2, 1, 0, 1,
- 0, 0, 0, 0, 52, 0, 8, 0, 0, 4, 0, 0, 57, 109,24, 1, 0, 0, 0, 0, 52, 32, 2, 1, 0, 0, 0, 0, 152,32, 0, 0, 0, 4, 0, 0, 0, 2, 12, 0,
- 0, 32, 32, 0, 0, 0, 2, 0, 0, 0, 0, 0, 34, 2, 0, 0, 0, 32, 0, 0, 2, 2, 0, 0, 16, 188,34, 0, 255,255,255,3, 0, 0, 0, 0, 136,36, 0, 0,
- 0, 16, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 168,6, 0, 0, 0, 0, 0, 147,73, 2, 1, 0, 0, 0, 0, 17, 12, 2, 1, 0, 96, 0, 0, 17, 9, 4, 0,
- 0, 0, 0, 0, 149,5, 16, 1, 0, 0, 0, 0, 123,73, 84, 3, 0, 0, 0, 0, 0, 24, 16, 0, 0, 0, 0, 0, 26, 64, 0, 0, 0, 0, 0, 0, 11, 13, 14, 0,
- 0, 0, 0, 0, 145,4, 0, 2, 0, 0, 0, 0, 16, 101,0, 0, 0, 0, 0, 0, 209,105,6, 0, 0, 0, 0, 0, 1, 56, 2, 0, 0, 0, 0, 0, 91, 58, 30, 0,
- 0, 0, 0, 0, 16, 9, 20, 0, 0, 0, 0, 0, 48, 65, 4, 0, 0, 0, 0, 0, 145,64, 4, 0, 0, 0, 0, 0, 128,128,10, 0, 0, 0, 0, 0, 251,223,124,1,
- 0, 0, 0, 0, 206,176,190,3, 0, 0, 0, 0, 64, 65, 8, 0, 0, 0, 0, 0, 8, 33, 0, 3, 0, 0, 0, 0, 128,4, 4, 0, 0, 0, 0, 0, 5, 104,14, 1,
- 0, 0, 0, 0, 53, 252,16, 2, 0, 0, 0, 0, 9, 69, 4, 0, 0, 0, 0, 0, 19, 81, 84, 1, 0, 0, 0, 0, 212,48, 94, 0, 0, 0, 0, 0, 88, 1, 0, 0,
- 0, 0, 0, 0, 192,112,14, 1, 0, 0, 0, 0, 129,72, 0, 0, 0, 0, 0, 0, 245,244,52, 0, 0, 0, 0, 0, 133,64, 0, 0, 0, 0, 0, 0, 65, 0, 16, 0,
- 0, 0, 0, 0, 74, 160,68, 0, 0, 0, 0, 0, 4, 128,4, 2, 0, 0, 0, 0, 32, 33, 70, 0, 0, 0, 0, 0, 0, 64, 72, 0, 0, 0, 0, 0, 128,4, 8, 2,
- 0, 0, 0, 0, 83, 217,22, 0, 0, 0, 0, 0, 68, 8, 6, 1, 0, 0, 0, 0, 145,73, 2, 1, 0, 0, 0, 0, 17, 40, 8, 0, 0, 0, 0, 0, 14, 220,78, 2,
- 0, 32, 0, 0, 65, 64, 4, 0, 0, 32, 0, 0, 128,128,14, 0, 0, 32, 0, 0, 64, 0, 4, 0, 0, 0, 0, 0, 0, 32, 72, 0, 0, 0, 0, 0, 125,107,28, 3,
- 0, 0, 0, 0, 8, 128,68, 0, 0, 0, 0, 0, 145,65, 2, 1, 0, 0, 0, 0, 16, 32, 2, 2, 0, 0, 0, 0, 1, 34, 0, 0, 0, 0, 0, 0, 0, 16, 6, 1,
- 0, 0, 0, 0, 19, 105,94, 1, 0, 0, 0, 0, 8, 24, 14, 0, 0, 0, 0, 0, 82, 48, 6, 0, 0, 0, 0, 0, 16, 32, 24, 0, 0, 0, 0, 0, 18, 4, 24, 0,
- 0, 0, 0, 0, 144,32, 58, 2, 0, 0, 0, 0, 230,57, 44, 1, 0, 0, 0, 0, 68, 0, 2, 0, 0, 0, 0, 0, 16, 65, 0, 3, 0, 0, 0, 0, 9, 8, 12, 0,
- 0, 0, 0, 0, 17, 105,16, 1, 0, 0, 0, 0, 5, 56, 6, 0, 0, 32, 0, 0, 145,1, 4, 0, 0, 0, 0, 0, 1, 40, 12, 1, 0, 0, 0, 0, 32, 65, 16, 0,
- 0, 0, 0, 0, 119,100,44, 0, 0, 0, 0, 0, 0, 65, 8, 1, 0, 0, 0, 0, 153,65, 12, 0, 0, 0, 0, 0, 1, 0, 14, 1, 0, 0, 0, 0, 32, 32, 80, 0,
- 0, 0, 0, 0, 194,48, 74, 0, 0, 0, 0, 0, 129,40, 8, 0, 0, 0, 0, 0, 92, 96, 12, 0, 0, 0, 0, 0, 8, 32, 92, 0, 0, 0, 0, 0, 144,71, 8, 0,
- 0, 0, 0, 0, 144,121,2, 2, 0, 0, 0, 0, 151,253,77, 0, 0, 0, 0, 0, 0, 33, 8, 1, 0, 0, 0, 0, 48, 64, 0, 0, 0, 0, 0, 0, 17, 121,0, 1,
- 0, 0, 0, 0, 16, 161,0, 0, 0, 0, 0, 0, 149,73, 94, 2, 0, 0, 0, 0, 188,12, 70, 0, 0, 32, 0, 0, 128,16, 0, 1, 0, 240,46, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 16, 19, 2, 0, 0, 0, 0, 0, 208,0, 0, 0, 0, 96, 0, 0, 33, 16, 4, 0, 0, 0, 0, 0, 2, 68, 0, 0, 0, 0, 0, 0, 17, 65, 20, 0,
- 0, 0, 0, 0, 255,60, 110,2, 0, 0, 0, 0, 144,9, 16, 0, 0, 0, 0, 0, 24, 77, 12, 2, 0, 0, 0, 0, 145,33, 6, 0, 0, 0, 0, 0, 80, 40, 4, 0,
- 0, 0, 0, 0, 73, 104,10, 0, 0, 0, 0, 0, 25, 13, 10, 0, 0, 0, 0, 0, 251,120,12, 0, 0, 0, 0, 0, 25, 225,0, 2, 0, 0, 0, 0, 0, 41, 64, 0,
- 0, 32, 0, 0, 229,207,18, 1, 0, 0, 0, 0, 129,16, 36, 0, 0, 0, 0, 0, 5, 192,24, 1, 16, 16, 0, 0, 255,253,126,3, 0, 0, 0, 0, 68, 40, 30, 0,
- 0, 0, 0, 0, 147,105,68, 1, 0, 0, 0, 0, 147,64, 2, 0, 0, 0, 0, 0, 24, 113,2, 1, 0, 0, 0, 0, 8, 60, 47, 2, 0, 16, 0, 0, 2, 0, 4, 1,
- 0, 0, 0, 0, 8, 4, 12, 1, 0, 0, 0, 0, 52, 64, 2, 0, 0, 0, 0, 0, 16, 88, 2, 0, 0, 0, 0, 0, 146,1, 0, 0, 0, 0, 0, 0, 16, 93, 0, 1,
- 0, 0, 0, 0, 94, 60, 14, 0, 0, 0, 0, 0, 144,9, 12, 2, 0, 0, 0, 0, 192,32, 0, 2, 0, 0, 0, 0, 251,121,62, 2, 0, 0, 0, 0, 16, 81, 2, 0,
- 0, 0, 0, 0, 19, 25, 4, 0, 0, 20, 0, 0, 95, 111,30, 2, 0, 0, 0, 0, 17, 8, 18, 0, 0, 0, 0, 0, 1, 96, 46, 1, 0, 96, 0, 0, 49, 89, 4, 0,
- 0, 0, 0, 0, 145,8, 0, 0, 0, 0, 0, 0, 21, 33, 28, 0, 0, 0, 0, 0, 21, 16, 60, 0, 0, 0, 0, 0, 209,105,6, 2, 0, 0, 0, 0, 1, 40, 20, 0,
- 0, 0, 0, 0, 236,153,14, 0, 0, 128,0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 145,73, 0, 1, 0, 240,36, 0, 1, 40, 44, 0, 0, 0, 0, 0, 17, 96, 20, 1,
- 0, 96, 0, 0, 8, 32, 0, 0, 0, 0, 0, 0, 4, 128,8, 1, 0, 0, 0, 0, 129,161,0, 0, 0, 0, 0, 0, 68, 45, 14, 0, 0, 32, 0, 0, 16, 65, 12, 0,
- 0, 0, 0, 0, 129,4, 0, 2, 0, 0, 0, 0, 12, 48, 12, 0, 0, 0, 0, 0, 69, 32, 12, 0, 0, 0, 0, 0, 17, 201,20, 1, 0, 32, 0, 0, 17, 97, 28, 1,
- 0, 0, 0, 0, 5, 0, 20, 2, 0, 0, 0, 0, 68, 57, 84, 0, 0, 32, 0, 0, 0, 96, 12, 0, 0, 32, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 134,64, 8, 0,
- 0, 0, 0, 0, 16, 84, 64, 0, 0, 0, 0, 0, 144,109,22, 3, 0, 0, 0, 0, 36, 64, 0, 0, 0, 0, 0, 0, 149,181,28, 0, 0, 0, 0, 0, 0, 5, 64, 0,
- 0, 0, 0, 0, 48, 104,0, 0, 0, 0, 0, 0, 0, 136,8, 0, 16, 0, 0, 0, 191,249,30, 2, 0, 0, 0, 0, 52, 10, 64, 0, 0, 0, 0, 0, 12, 81, 16, 0,
- 0, 0, 0, 0, 8, 50, 2, 0, 0, 0, 0, 0, 220,101,162,1, 0, 0, 4, 0, 176,2, 0, 0, 0, 32, 0, 0, 0, 1, 34, 0, 0, 0, 0, 0, 32, 38, 10, 0,
- 0, 0, 0, 0, 12, 141,32, 1, 0, 0, 0, 0, 2, 0, 1, 2, 0, 0, 0, 0, 2, 24, 0, 2, 0, 112,8, 0, 64, 16, 130,0, 0, 0, 0, 0, 179,67, 26, 2,
- 0, 0, 0, 0, 56, 121,14, 2, 0, 0, 0, 0, 25, 1, 8, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 1, 33, 32, 0, 0, 0, 0, 0, 140,138,2, 1,
- 0, 32, 0, 0, 74, 0, 2, 0, 0, 0, 0, 0, 128,2, 0, 0, 0, 0, 0, 0, 19, 108,10, 2, 0, 0, 0, 0, 17, 20, 0, 0, 0, 0, 0, 0, 7, 72, 6, 0,
- 0, 0, 0, 0, 205,36, 58, 0, 0, 32, 0, 0, 65, 32, 3, 2, 0, 0, 0, 0, 162,0, 0, 0, 0, 0, 0, 0, 0, 8, 30, 0, 0, 0, 0, 0, 144,32, 8, 0,
- 0, 32, 0, 0, 58, 88, 70, 1, 0, 0, 0, 0, 8, 140,0, 0, 0, 0, 0, 0, 255,250,190,2, 0, 0, 0, 0, 68, 249,7, 0, 0, 0, 0, 0, 133,65, 0, 0,
- 0, 0, 0, 0, 2, 184,0, 0, 0, 0, 0, 0, 3, 145,0, 0, 0, 0, 0, 0, 125,105,24, 0, 0, 0, 0, 0, 0, 4, 40, 0, 0, 0, 0, 0, 8, 0, 18, 0,
- 0, 0, 0, 0, 19, 104,6, 0, 0, 0, 0, 0, 1, 4, 0, 2, 0, 0, 0, 0, 93, 40, 64, 0, 0, 0, 0, 0, 238,40, 14, 0, 0, 0, 0, 0, 145,61, 16, 0,
- 0, 0, 0, 0, 18, 9, 4, 1, 0, 0, 0, 0, 0, 60, 2, 0, 0, 0, 0, 0, 160,0, 24, 0, 0, 0, 0, 0, 255,253,46, 3, 0, 96, 0, 0, 16, 65, 4, 0,
- 0, 0, 0, 0, 17, 97, 2, 0, 0, 0, 0, 0, 9, 48, 2, 0, 0, 0, 0, 0, 149,81, 20, 1, 0, 0, 0, 0, 4, 56, 14, 1, 0, 0, 0, 0, 215,124,12, 0,
- 0, 0, 0, 0, 0, 192,4, 0, 0, 0, 0, 0, 68, 112,8, 0, 0, 0, 0, 0, 19, 184,4, 0, 0, 0, 0, 0, 89, 101,28, 3, 0, 0, 0, 0, 2, 64, 46, 0,
- 0, 0, 0, 0, 209,9, 18, 0, 0, 112,36, 0, 2, 1, 0, 1, 0, 0, 0, 0, 4, 8, 0, 2, 0, 0, 0, 0, 22, 4, 0, 0, 0, 0, 0, 0, 53, 57, 42, 0,
- 0, 0, 0, 0, 72, 33, 0, 0, 0, 0, 0, 0, 16, 128,20, 0, 0, 0, 0, 0, 123,89, 46, 0, 0, 0, 0, 0, 40, 40, 22, 1, 0, 0, 0, 0, 0, 10, 4, 0,
- 0, 32, 8, 0, 32, 1, 4, 3, 0, 96, 5, 0, 4, 0, 4, 0, 0, 0, 0, 0, 8, 41, 24, 0, 0, 0, 0, 0, 9, 0, 128,0, 0, 0, 0, 0, 132,8, 8, 0,
- 0, 0, 0, 0, 150,89, 14, 0, 0, 0, 0, 0, 149,8, 8, 2, 0, 0, 0, 0, 144,73, 0, 0, 0, 0, 0, 0, 108,56, 6, 0, 0, 0, 0, 0, 1, 49, 78, 0,
- 0, 0, 0, 0, 1, 17, 0, 3, 0, 96, 4, 0, 28, 0, 4, 0, 0, 0, 0, 0, 1, 81, 0, 1, 0, 0, 0, 0, 217,221,34, 1, 0, 0, 0, 0, 2, 2, 2, 3,
- 0, 0, 0, 0, 0, 36, 34, 0, 0, 0, 0, 0, 0, 2, 136,0, 0, 0, 0, 0, 27, 65, 20, 1, 0, 0, 0, 0, 223,176,254,3, 0, 0, 0, 0, 186,105,84, 1,
- 0, 0, 0, 0, 1, 96, 20, 0, 0, 0, 0, 0, 12, 0, 44, 2, 0, 0, 0, 0, 16, 64, 20, 0, 0, 0, 0, 0, 246,225,76, 0, 0, 32, 0, 0, 182,115,68, 1,
- 0, 0, 0, 0, 0, 8, 14, 1, 0, 0, 0, 0, 128,0, 8, 2, 0, 0, 0, 0, 30, 32, 4, 0, 0, 0, 0, 0, 4, 16, 16, 0, 0, 0, 0, 0, 10, 32, 70, 0,
- 0, 0, 0, 0, 95, 49, 68, 0, 0, 0, 0, 0, 0, 48, 44, 0, 0, 0, 0, 0, 6, 16, 12, 2, 0, 0, 0, 0, 127,113,110,0, 0, 32, 8, 0, 1, 65, 64, 1,
- 0, 0, 0, 0, 31, 240,92, 0, 0, 0, 0, 0, 24, 1, 64, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 24, 4, 12, 0, 0, 0, 0, 0, 145,0, 12, 0,
- 0, 0, 0, 0, 127,241,126,1, 0, 32, 0, 0, 0, 9, 0, 0, 0, 32, 0, 0, 0, 16, 12, 0, 0, 96, 33, 0, 16, 32, 0, 0, 0, 0, 0, 0, 49, 64, 16, 0,
- 0, 0, 0, 0, 17, 96, 0, 1, 0, 0, 0, 0, 48, 0, 8, 2, 0, 0, 0, 0, 17, 5, 68, 1, 0, 0, 0, 0, 94, 113,12, 0, 0, 0, 0, 0, 1, 32, 20, 0,
- 0, 0, 0, 0, 4, 176,0, 0, 0, 0, 0, 0, 64, 136,4, 0, 0, 0, 0, 0, 23, 65, 24, 0, 0, 0, 0, 0, 0, 2, 8, 2, 0, 0, 2, 0, 19, 65, 22, 0,
- 0, 0, 0, 0, 82, 0, 94, 0, 0, 0, 0, 0, 64, 1, 2, 0, 0, 0, 0, 0, 4, 16, 6, 2, 0, 8, 0, 0, 0, 0, 12, 0, 0, 96, 1, 0, 255,255,126,3,
- 0, 0, 32, 0, 2, 1, 0, 0, 16, 0, 0, 0, 136,40, 74, 0, 0, 0, 0, 0, 2, 141,12, 0, 0, 0, 0, 0, 146,24, 4, 0, 0, 0, 0, 0, 19, 9, 22, 1,
- 0, 0, 0, 0, 84, 40, 0, 0, 0, 0, 0, 0, 36, 8, 0, 0, 0, 32, 4, 0, 187,253,86, 3, 0, 0, 0, 0, 8, 24, 98, 0, 0, 0, 0, 0, 96, 0, 0, 0,
- 0, 0, 0, 0, 16, 72, 0, 1, 0, 0, 0, 0, 49, 12, 14, 0, 0, 0, 0, 0, 0, 32, 36, 0, 0, 0, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 104,8, 74, 1,
- 0, 0, 0, 0, 209,216,64, 0, 0, 0, 0, 0, 143,189,78, 0, 0, 0, 0, 0, 24, 5, 0, 0, 0, 0, 0, 0, 72, 45, 12, 0, 0, 0, 0, 0, 128,2, 12, 2,
- 0, 0, 0, 0, 49, 81, 14, 0, 0, 0, 0, 0, 16, 49, 2, 0, 0, 0, 0, 0, 209,73, 18, 0, 0, 0, 0, 0, 17, 104,2, 0, 0, 0, 0, 0, 37, 36, 14, 0,
- 0, 0, 0, 0, 20, 83, 16, 0, 0, 0, 0, 0, 127,205,28, 2, 0, 0, 0, 0, 6, 36, 6, 1, 0, 32, 0, 0, 179,117,94, 3, 0, 0, 0, 0, 8, 148,0, 0,
- 0, 32, 0, 0, 18, 16, 6, 0, 0, 0, 0, 0, 17, 1, 18, 0, 0, 0, 0, 0, 194,16, 0, 0, 0, 0, 0, 0, 16, 40, 0, 2, 0, 0, 0, 0, 6, 81, 72, 0,
- 0, 0, 0, 0, 7, 48, 12, 1, 0, 48, 46, 0, 86, 241,32, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 112,4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 93, 100,44, 0,
- 0, 0, 0, 0, 8, 32, 12, 0, 0, 0, 0, 0, 145,113,80, 1, 0, 0, 0, 0, 66, 128,0, 0, 0, 0, 0, 0, 2, 50, 36, 0, 0, 0, 0, 0, 19, 209,16, 2,
- 0, 0, 0, 0, 0, 8, 14, 3, 0, 0, 0, 0, 95, 97, 44, 3, 0, 0, 0, 0, 8, 8, 32, 2, 0, 0, 0, 0, 32, 0, 6, 3, 0, 0, 0, 0, 126,252,12, 0,
- 0, 96, 1, 0, 255,255,110,1, 0, 0, 0, 0, 0, 48, 16, 1, 0, 0, 0, 0, 4, 12, 2, 0, 0, 0, 0, 0, 16, 0, 98, 0, 0, 0, 0, 0, 16, 0, 80, 0,
- 0, 0, 0, 0, 16, 193,8, 0, 0, 0, 0, 0, 18, 1, 16, 1, 128,96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 4, 0, 0, 0, 0, 0, 18, 9, 4, 0,
- 0, 96, 2, 0, 10, 48, 4, 1, 0, 0, 0, 0, 145,225,16, 0, 0, 0, 0, 0, 223,125,30, 3, 0, 0, 0, 0, 4, 60, 0, 2, 0, 0, 0, 0, 17, 105,0, 1,
- 0, 0, 0, 0, 28, 40, 12, 1, 0, 0, 0, 0, 103,0, 0, 0, 0, 0, 0, 0, 68, 40, 20, 2, 0, 32, 32, 0, 0, 0, 4, 2, 0, 0, 0, 0, 129,1, 0, 1,
- 0, 0, 0, 0, 17, 67, 8, 1, 0, 0, 0, 0, 16, 12, 16, 0, 0, 0, 0, 0, 189,189,108,2, 0, 0, 0, 0, 17, 89, 0, 0, 0, 0, 0, 0, 68, 16, 2, 0,
- 0, 0, 0, 0, 1, 76, 0, 1, 0, 0, 0, 0, 149,89, 78, 3, 0, 0, 0, 0, 3, 32, 2, 0, 0, 0, 0, 0, 64, 20, 8, 0, 0, 0, 0, 0, 128,1, 64, 0,
- 0, 0, 0, 0, 185,77, 86, 0, 0, 0, 0, 0, 79, 173,46, 2, 0, 0, 0, 0, 81, 1, 2, 1, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 9, 88, 0, 0,
- 0, 0, 0, 0, 136,0, 2, 1, 16, 0, 0, 0, 17, 65, 8, 0, 0, 0, 0, 0, 17, 81, 4, 0, 0, 0, 0, 0, 25, 41, 2, 0, 0, 0, 0, 0, 29, 32, 0, 0,
- 0, 0, 0, 0, 1, 80, 0, 0, 0, 0, 0, 0, 4, 0, 22, 0, 0, 16, 16, 0, 219,65, 18, 3, 0, 0, 0, 0, 255,187,124,3, 0, 0, 0, 0, 147,105,4, 0,
- 0, 0, 0, 0, 21, 1, 0, 3, 0, 96, 8, 0, 40, 8, 4, 1, 0, 0, 0, 0, 57, 105,84, 1, 0, 0, 0, 0, 12, 40, 6, 0, 0, 0, 0, 0, 17, 40, 20, 0,
- 0, 0, 0, 0, 38, 48, 12, 0, 0, 0, 0, 0, 49, 1, 8, 0, 0, 0, 0, 0, 0, 0, 136,0, 0, 0, 0, 0, 81, 64, 4, 0, 0, 0, 0, 0, 17, 120,0, 0,
- 0, 0, 0, 0, 68, 44, 4, 0, 0, 0, 0, 0, 80, 32, 4, 1, 0, 0, 0, 0, 151,217,4, 2, 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 251,251,63, 2,
- 0, 0, 0, 0, 136,1, 10, 0, 0, 32, 0, 0, 63, 247,60, 1, 0, 0, 0, 0, 16, 8, 22, 0, 0, 0, 0, 0, 32, 96, 4, 0, 0, 32, 0, 0, 0, 17, 4, 0,
- 0, 0, 0, 0, 16, 8, 8, 2, 0, 32, 0, 0, 145,73, 36, 2, 0, 0, 0, 0, 144,128,0, 0, 0, 0, 0, 0, 33, 0, 38, 0, 0, 0, 0, 0, 4, 32, 152,0,
- 0, 0, 0, 0, 144,144,12, 0, 0, 32, 0, 0, 145,89, 6, 1, 0, 0, 0, 0, 17, 1, 24, 2, 0, 0, 0, 0, 40, 0, 6, 0, 0, 0, 0, 0, 33, 96, 12, 0,
- 0, 0, 0, 0, 82, 24, 4, 0, 0, 32, 0, 0, 8, 40, 14, 1, 0, 0, 0, 0, 0, 9, 4, 1, 0, 0, 0, 0, 1, 64, 8, 3, 0, 0, 0, 0, 62, 41, 68, 0,
- 0, 0, 4, 0, 127,185,124,1, 0, 0, 0, 0, 0, 56, 62, 0, 0, 0, 0, 0, 10, 0, 2, 0, 0, 32, 0, 0, 216,120,68, 2, 0, 0, 0, 0, 132,65, 0, 2,
- 0, 0, 0, 0, 15, 188,46, 0, 0, 224,63, 0, 255,249,126,1, 0, 224,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 32, 16, 1, 0, 0, 0, 0, 64, 32, 38, 1,
- 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 24, 32, 4, 0, 0, 0, 0, 0, 49, 0, 2, 1, 0, 0, 0, 0, 35, 136,8, 0, 0, 0, 0, 0, 8, 8, 32, 1,
- 0, 0, 0, 0, 48, 0, 2, 0, 0, 32, 8, 0, 81, 64, 84, 0, 0, 0, 0, 0, 106,40, 68, 2, 0, 0, 0, 0, 121,109,100,2, 0, 0, 0, 0, 132,12, 4, 0,
- 0, 0, 0, 0, 149,96, 12, 2, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 18, 8, 8, 0, 0, 0, 0, 0, 170,121,76, 0, 0, 0, 0, 0, 126,250,173,2,
- 0, 0, 0, 0, 24, 9, 4, 0, 0, 0, 0, 0, 102,144,46, 0, 0, 0, 0, 0, 146,17, 12, 0, 0, 0, 0, 0, 48, 65, 8, 0, 0, 0, 0, 0, 16, 40, 12, 1,
- 0, 0, 0, 0, 65, 105,4, 0, 0, 0, 0, 0, 8, 0, 12, 1, 0, 0, 0, 0, 17, 92, 70, 0, 0, 0, 0, 0, 4, 8, 18, 0, 0, 0, 0, 0, 130,8, 8, 0,
- 0, 0, 0, 0, 95, 53, 44, 0, 0, 32, 0, 0, 148,9, 4, 0, 0, 0, 0, 0, 1, 8, 64, 0, 0, 0, 0, 0, 151,88, 76, 0, 0, 0, 0, 0, 0, 48, 20, 0,
- 0, 0, 0, 0, 0, 80, 12, 2, 0, 0, 0, 0, 255,251,124,3, 0, 0, 0, 0, 17, 16, 4, 1, 0, 0, 0, 0, 16, 33, 4, 2, 0, 0, 0, 0, 130,160,12, 0,
- 0, 0, 0, 0, 0, 88, 4, 0, 0, 0, 0, 0, 0, 8, 68, 0, 0, 0, 0, 0, 17, 89, 0, 1, 0, 0, 0, 0, 27, 77, 37, 0, 0, 0, 0, 0, 8, 16, 44, 0,
- 0, 0, 0, 0, 150,30, 36, 2, 0, 0, 0, 0, 155,125,64, 0, 0, 0, 0, 0, 146,65, 8, 2, 0, 0, 0, 0, 5, 168,12, 0, 0, 0, 0, 0, 146,41, 68, 0,
- 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 24, 65, 4, 0, 0, 0, 0, 0, 28, 41, 12, 0, 0, 0, 0, 0, 254,185,108,2, 0, 0, 0, 0, 19, 16, 4, 1,
- 0, 0, 0, 0, 81, 0, 8, 2, 0, 0, 0, 0, 2, 40, 12, 0, 0, 0, 0, 0, 146,1, 64, 0, 0, 0, 0, 0, 96, 0, 4, 0, 0, 0, 0, 0, 19, 176,0, 0,
- 0, 0, 0, 0, 123,73, 76, 0, 0, 0, 0, 0, 144,88, 8, 1, 0, 32, 0, 0, 128,17, 4, 2, 0, 0, 0, 0, 17, 192,0, 0, 0, 0, 0, 0, 144,5, 12, 0,
- 0, 0, 0, 0, 106,184,4, 0, 0, 0, 0, 0, 66, 8, 4, 0, 0, 0, 0, 0, 212,128,136,0, 0, 0, 2, 0, 160,229,136,1, 128,0, 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 255,251,94, 3, 0, 0, 0, 0, 76, 187,46, 1, 0, 0, 0, 0, 64, 8, 2, 0, 0, 0, 0, 0, 77, 65, 8, 3, 0, 0, 0, 0, 6, 2, 0, 0,
- 0, 0, 0, 0, 8, 0, 128,2, 0, 0, 0, 0, 25, 33, 2, 0, 0, 0, 0, 0, 8, 1, 4, 0, 0, 0, 0, 0, 145,1, 6, 0, 0, 0, 0, 0, 1, 224,0, 0,
- 0, 0, 0, 0, 0, 48, 5, 0, 0, 0, 0, 0, 19, 9, 4, 0, 0, 0, 0, 0, 4, 20, 64, 0, 0, 0, 0, 0, 81, 17, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 14, 57, 46, 0, 0, 0, 0, 0, 56, 136,0, 0, 0, 0, 0, 0, 21, 33, 14, 0, 0, 32, 0, 0, 16, 1, 68, 0, 0, 0, 0, 0, 80, 9, 0, 0,
- 0, 0, 0, 0, 255,122,14, 3, 0, 0, 0, 0, 2, 104,0, 0, 0, 32, 0, 0, 10, 40, 78, 0, 0, 32, 16, 0, 0, 32, 12, 0, 0, 0, 0, 0, 65, 32, 0, 0,
- 0, 0, 0, 0, 186,25, 12, 0, 0, 0, 0, 0, 176,0, 68, 0, 0, 0, 0, 0, 0, 65, 2, 1, 0, 0, 0, 0, 2, 48, 10, 0, 0, 0, 0, 0, 0, 0, 26, 0,
- 0, 0, 0, 0, 89, 40, 8, 1, 0, 0, 0, 0, 1, 0, 36, 1, 0, 0, 0, 0, 22, 5, 8, 0, 0, 0, 0, 0, 145,1, 10, 1, 0, 56, 4, 0, 152,17, 6, 0,
- 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 63, 253,20, 3, 0, 0, 0, 0, 66, 32, 10, 0, 0, 0, 0, 0, 4, 36, 4, 2, 0, 0, 0, 0, 196,0, 8, 0,
- 0, 0, 0, 0, 22, 100,168,0, 0, 0, 0, 0, 4, 0, 2, 2, 0, 0, 0, 0, 128,0, 40, 0, 0, 0, 0, 0, 11, 145,4, 2, 0, 0, 0, 0, 144,0, 10, 0,
- 0, 0, 0, 0, 123,189,28, 3, 0, 0, 0, 0, 17, 72, 2, 1, 0, 16, 0, 0, 0, 0, 64, 0, 0, 48, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 144,89, 8, 0,
- 0, 0, 0, 0, 144,64, 18, 0, 0, 0, 0, 0, 89, 255,126,0, 0, 0, 0, 0, 66, 24, 0, 0, 0, 0, 0, 0, 1, 66, 64, 1, 0, 0, 0, 0, 9, 96, 8, 0,
- 0, 0, 0, 0, 16, 0, 10, 1, 0, 0, 0, 0, 8, 62, 36, 0, 0, 32, 0, 0, 149,28, 12, 2, 0, 0, 0, 0, 17, 1, 80, 1, 0, 0, 0, 0, 16, 36, 0, 0,
- 0, 0, 0, 0, 212,95, 14, 2, 0, 0, 0, 0, 17, 80, 2, 0, 0, 0, 0, 0, 0, 0, 132,2, 0, 0, 0, 0, 132,0, 0, 1, 0, 0, 0, 0, 0, 17, 6, 1,
- 16, 32, 0, 0, 19, 120,60, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 17, 81, 0, 3, 0, 0, 0, 0, 19, 67, 0, 1, 0, 0, 0, 0, 8, 41, 10, 0,
- 0, 128,0, 0, 81, 248,22, 0, 0, 0, 0, 0, 66, 2, 4, 0, 0, 0, 0, 0, 130,0, 4, 0, 16, 244,43, 0, 255,255,254,3, 0, 64, 0, 0, 4, 16, 0, 0,
- 0, 16, 0, 0, 4, 8, 0, 0, 0, 64, 0, 0, 8, 32, 0, 0, 0, 16, 0, 0, 0, 64, 4, 0, 0, 64, 0, 0, 0, 128,4, 0, 0, 0, 16, 0, 255,191,255,3,
- 0, 0, 0, 0, 231,172,14, 2, 0, 0, 0, 0, 21, 0, 12, 0, 0, 0, 0, 0, 19, 73, 22, 1, 0, 0, 0, 0, 85, 40, 2, 0, 0, 0, 0, 0, 24, 28, 4, 0,
- 0, 0, 0, 0, 102,40, 12, 0, 0, 0, 0, 0, 144,69, 0, 2, 0, 0, 0, 0, 0, 0, 10, 3, 0, 0, 0, 0, 64, 112,0, 0, 0, 0, 0, 0, 51, 57, 68, 1,
- 0, 0, 0, 0, 8, 40, 10, 1, 0, 32, 0, 0, 8, 64, 4, 2, 0, 0, 0, 0, 253,107,102,1, 0, 0, 0, 0, 8, 24, 70, 0, 0, 0, 0, 0, 8, 48, 64, 0,
- 0, 0, 0, 0, 4, 32, 192,0, 0, 0, 0, 0, 32, 40, 6, 0, 0, 0, 0, 0, 9, 0, 8, 0, 0, 0, 0, 0, 16, 1, 2, 1, 16, 0, 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 238,48, 22, 0, 0, 0, 0, 0, 64, 128,2, 0, 0, 0, 0, 0, 48, 41, 8, 0, 0, 0, 0, 0, 16, 56, 2, 2, 0, 0, 0, 0, 243,121,86, 1,
- 0, 0, 0, 0, 8, 52, 2, 0, 0, 0, 0, 0, 26, 56, 6, 1, 0, 0, 0, 0, 146,0, 4, 1, 0, 0, 0, 0, 17, 96, 12, 0, 0, 0, 0, 0, 0, 224,4, 0,
- 0, 0, 0, 0, 1, 56, 4, 0, 0, 0, 0, 0, 104,188,14, 1, 0, 0, 0, 0, 25, 8, 4, 0, 0, 0, 0, 0, 126,168,6, 1, 0, 0, 0, 0, 16, 64, 2, 1,
- 0, 0, 0, 0, 128,1, 0, 2, 0, 0, 0, 0, 25, 35, 0, 0, 0, 0, 0, 0, 17, 77, 18, 0, 0, 0, 0, 0, 0, 120,8, 0, 0, 0, 0, 0, 17, 40, 6, 1,
- 0, 64, 32, 0, 127,253,124,1, 0, 0, 0, 0, 15, 30, 12, 0, 0, 0, 0, 0, 72, 0, 12, 0, 0, 0, 0, 0, 133,164,36, 1, 0, 0, 0, 0, 155,216,74, 0,
- 0, 0, 0, 0, 46, 124,8, 0, 0, 0, 0, 0, 119,81, 85, 1, 0, 0, 0, 0, 140,48, 84, 0, 0, 0, 0, 0, 20, 56, 14, 1, 0, 0, 0, 0, 222,112,68, 0,
- 0, 32, 0, 0, 12, 64, 66, 0, 0, 32, 0, 0, 64, 32, 14, 0, 0, 0, 0, 0, 145,1, 2, 0, 0, 0, 0, 0, 17, 4, 8, 0, 0, 0, 0, 0, 0, 24, 8, 1,
- 0, 0, 0, 0, 123,249,94, 2, 0, 0, 0, 0, 76, 61, 6, 0, 0, 0, 0, 0, 17, 72, 18, 1, 0, 0, 0, 0, 24, 9, 14, 0, 0, 0, 0, 0, 12, 52, 10, 0,
- 0, 112,36, 0, 176,25, 12, 0, 0, 32, 0, 0, 4, 24, 8, 0, 0, 0, 0, 0, 25, 73, 12, 0, 0, 0, 0, 0, 129,65, 24, 0, 0, 0, 0, 0, 255,127,126,3,
- 0, 0, 0, 0, 228,44, 112,0, 0, 64, 0, 0, 247,223,110,3, 0, 0, 0, 0, 4, 40, 64, 0, 0, 0, 0, 0, 32, 32, 48, 0, 0, 0, 0, 0, 149,64, 72, 0,
- 0, 0, 0, 0, 74, 60, 6, 1, 0, 32, 0, 0, 17, 113,28, 2, 0, 0, 0, 0, 98, 48, 4, 0, 0, 32, 0, 0, 16, 73, 4, 1, 0, 32, 0, 0, 224,48, 68, 1,
- 0, 0, 0, 0, 64, 60, 6, 1, 0, 0, 0, 0, 98, 32, 8, 0, 0, 0, 0, 0, 133,9, 32, 0, 0, 0, 0, 0, 183,89, 78, 0, 0, 0, 0, 0, 145,80, 20, 2,
- 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 209,204,28, 0, 0, 0, 0, 0, 68, 1, 8, 0, 0, 0, 0, 0, 24, 33, 4, 0, 0, 96, 62, 0, 238,122,12, 1,
- 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 127,255,126,3, 0, 0, 0, 0, 74, 190,70, 0, 0, 0, 0, 0, 145,65, 16, 1, 0, 0, 0, 0, 0, 8, 26, 0,
- 0, 0, 0, 0, 24, 97, 12, 0, 0, 0, 0, 0, 145,72, 18, 0, 0, 32, 5, 0, 223,253,94, 1, 0, 0, 0, 0, 68, 52, 68, 0, 0, 16, 0, 0, 1, 64, 0, 0,
- 0, 0, 0, 0, 4, 0, 50, 0, 0, 0, 0, 0, 82, 56, 6, 1, 0, 0, 0, 0, 80, 48, 4, 0, 0, 0, 0, 0, 42, 56, 70, 0, 0, 0, 0, 0, 144,1, 18, 0,
- 0, 0, 0, 0, 0, 33, 14, 0, 0, 0, 0, 0, 8, 0, 96, 0, 0, 0, 0, 0, 203,240,14, 0, 0, 0, 0, 0, 21, 105,2, 0, 0, 0, 0, 0, 20, 16, 5, 1,
- 0, 112,53, 0, 8, 16, 4, 0, 0, 0, 0, 0, 36, 0, 74, 0, 0, 0, 0, 0, 49, 73, 4, 0, 0, 0, 0, 0, 8, 1, 0, 1, 0, 0, 0, 0, 21, 64, 148,2,
- 0, 0, 0, 0, 68, 32, 2, 0, 0, 0, 0, 0, 0, 72, 20, 0, 0, 0, 0, 0, 32, 32, 8, 0, 0, 0, 0, 0, 136,40, 4, 0, 0, 0, 0, 0, 89, 120,12, 0,
- 0, 32, 0, 0, 2, 64, 44, 0, 0, 0, 0, 0, 72, 168,80, 0, 0, 96, 2, 0, 138,144,4, 0, 0, 0, 0, 0, 148,1, 8, 1, 0, 0, 0, 0, 51, 56, 0, 0,
- 0, 0, 0, 0, 241,255,127,3, 0, 0, 0, 0, 3, 40, 2, 0, 0, 0, 0, 0, 2, 161,4, 1, 0, 0, 0, 0, 0, 8, 12, 1, 0, 0, 0, 0, 180,64, 40, 0,
- 0, 0, 0, 0, 20, 96, 16, 0, 0, 0, 0, 0, 176,72, 0, 0, 0, 0, 0, 0, 128,52, 8, 0, 0, 32, 0, 0, 16, 17, 4, 0, 16, 32, 0, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 20, 40, 4, 0, 0, 0, 0, 0, 255,189,76, 1, 0, 0, 0, 0, 64, 60, 2, 0, 0, 0, 0, 0, 136,64, 8, 0, 0, 0, 0, 0, 39, 0, 0, 0,
- 0, 0, 0, 0, 19, 81, 8, 0, 0, 0, 0, 0, 0, 8, 74, 0, 0, 0, 0, 0, 0, 16, 10, 1, 0, 0, 0, 0, 130,28, 40, 0, 0, 0, 0, 0, 96, 128,0, 0,
- 0, 0, 0, 0, 85, 32, 0, 0, 0, 0, 0, 0, 181,93, 30, 2, 0, 0, 0, 0, 8, 28, 64, 1, 0, 0, 0, 0, 22, 9, 0, 0, 0, 0, 0, 0, 8, 8, 14, 0,
- 0, 0, 0, 0, 42, 24, 6, 1, 0, 0, 0, 0, 21, 64, 64, 0, 0, 0, 0, 0, 5, 0, 128,0, 0, 0, 0, 0, 128,0, 24, 0, 0, 0, 0, 0, 17, 89, 18, 0,
- 0, 0, 0, 0, 2, 32, 64, 0, 0, 0, 0, 0, 127,188,142,2, 0, 0, 0, 0, 145,8, 2, 0, 0, 0, 0, 0, 19, 5, 12, 0, 0, 0, 0, 0, 157,60, 78, 0,
- 0, 0, 0, 0, 17, 105,42, 0, 0, 0, 0, 0, 32, 124,6, 1, 0, 0, 0, 0, 0, 69, 0, 1, 16, 0, 0, 0, 144,0, 4, 0, 0, 0, 0, 0, 164,29, 12, 0,
- 0, 0, 0, 0, 20, 40, 6, 0, 0, 0, 0, 0, 51, 125,46, 0, 16, 0, 0, 128,0, 1, 0, 0, 0, 32, 2, 0, 65, 0, 0, 0, 0, 32, 0, 0, 88, 25, 68, 0,
- 0, 0, 0, 0, 66, 0, 4, 0, 0, 32, 0, 0, 130,24, 64, 0, 0, 16, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 255,120,78, 3, 0, 0, 0, 0, 2, 84, 12, 0,
- 0, 0, 0, 0, 17, 96, 24, 0, 0, 0, 0, 0, 49, 89, 2, 3, 0, 32, 2, 0, 210,41, 74, 0, 0, 0, 0, 0, 192,0, 72, 1, 0, 0, 0, 0, 133,64, 128,0,
- 0, 0, 8, 0, 34, 48, 8, 0, 16, 8, 0, 0, 255,255,255,3, 0, 0, 0, 0, 8, 136,4, 0, 0, 0, 4, 0, 238,185,46, 0, 0, 32, 0, 0, 255,153,79, 1,
- 0, 0, 0, 0, 148,128,8, 0, 0, 0, 0, 0, 1, 40, 0, 1, 0, 0, 0, 0, 25, 9, 12, 1, 0, 0, 0, 0, 36, 1, 0, 1, 0, 0, 0, 0, 24, 105,14, 0,
- 0, 32, 0, 0, 179,9, 76, 3, 0, 32, 0, 0, 0, 1, 8, 0, 0, 0, 8, 0, 144,73, 68, 0, 0, 32, 0, 0, 52, 24, 6, 0, 0, 96, 45, 0, 0, 9, 12, 0,
- 0, 32, 0, 0, 16, 8, 4, 0, 0, 32, 0, 0, 8, 16, 68, 0, 0, 0, 0, 0, 27, 33, 6, 0, 0, 0, 0, 0, 133,124,24, 0, 0, 0, 0, 0, 51, 24, 4, 0,
- 0, 0, 0, 0, 32, 0, 128,0, 0, 0, 0, 0, 90, 123,111,1, 0, 0, 0, 0, 80, 17, 0, 0, 0, 0, 0, 0, 134,128,6, 0, 0, 0, 0, 0, 4, 36, 128,0,
- 0, 0, 0, 0, 250,184,14, 1, 0, 0, 0, 0, 25, 44, 4, 1, 0, 0, 0, 0, 48, 40, 8, 0, 0, 0, 0, 0, 16, 41, 2, 0, 0, 0, 0, 0, 1, 112,0, 0,
- 0, 0, 0, 0, 89, 56, 86, 1, 0, 0, 0, 0, 8, 56, 2, 0, 0, 0, 0, 0, 16, 105,2, 0, 0, 0, 0, 0, 255,188,14, 2, 0, 0, 0, 0, 114,93, 10, 1,
- 0, 0, 0, 0, 70, 56, 2, 0, 0, 32, 0, 0, 144,32, 4, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 18, 81, 0, 0, 0, 0, 0, 0, 27, 8, 6, 0,
- 0, 0, 0, 0, 91, 77, 14, 3, 0, 0, 0, 0, 4, 52, 6, 1, 0, 0, 0, 0, 84, 32, 12, 0, 0, 0, 2, 0, 16, 25, 0, 0, 0, 0, 0, 0, 24, 72, 4, 0,
- 0, 0, 0, 0, 152,61, 12, 0, 0, 0, 0, 0, 0, 41, 2, 1, 0, 0, 0, 0, 194,125,4, 2, 0, 32, 0, 0, 1, 56, 4, 0, 0, 0, 0, 0, 127,221,125,3,
- 0, 0, 0, 0, 16, 16, 10, 0, 0, 0, 0, 0, 80, 1, 2, 0, 0, 0, 0, 0, 85, 224,144,0, 0, 0, 0, 0, 4, 128,4, 0, 16, 0, 4, 0, 247,113,86, 1,
- 0, 0, 0, 0, 4, 96, 68, 0, 0, 224,46, 0, 129,84, 92, 1, 0, 192,0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 129,8, 0, 0, 0, 0, 0, 151,77, 20, 1,
- 0, 0, 0, 0, 0, 17, 64, 0, 0, 32, 0, 0, 188,25, 4, 0, 0, 0, 0, 0, 20, 73, 8, 0, 0, 0, 0, 0, 16, 64, 4, 2, 0, 0, 0, 0, 5, 1, 0, 0,
- 0, 0, 0, 0, 19, 221,22, 0, 0, 0, 0, 0, 0, 152,0, 0, 0, 0, 0, 0, 0, 104,14, 1, 0, 0, 1, 0, 4, 160,4, 0, 0, 0, 0, 0, 0, 128,2, 1,
- 0, 0, 0, 0, 8, 44, 14, 0, 0, 0, 0, 0, 72, 168,2, 0, 0, 0, 0, 0, 176,8, 12, 0, 0, 0, 0, 0, 1, 8, 72, 0, 0, 128,0, 0, 255,63, 78, 2,
- 0, 0, 0, 0, 64, 97, 18, 0, 0, 0, 0, 0, 16, 72, 6, 1, 0, 0, 0, 0, 20, 4, 128,0, 0, 0, 0, 0, 203,1, 6, 1, 0, 0, 0, 0, 80, 9, 4, 0,
- 0, 0, 0, 0, 112,96, 0, 0, 0, 0, 0, 0, 18, 0, 8, 0, 0, 0, 0, 0, 70, 180,4, 1, 0, 0, 0, 0, 116,32, 4, 0, 0, 0, 0, 0, 84, 4, 9, 0,
- 0, 0, 0, 0, 128,68, 16, 0, 0, 32, 18, 0, 0, 4, 4, 0, 0, 0, 0, 0, 209,65, 6, 3, 0, 0, 0, 0, 167,173,72, 0, 0, 0, 0, 0, 4, 44, 30, 0,
- 0, 0, 0, 0, 68, 8, 2, 0, 0, 0, 0, 0, 84, 32, 36, 0, 0, 0, 0, 0, 144,16, 16, 0, 0, 0, 0, 0, 17, 81, 12, 0, 16, 0, 0, 0, 43, 53, 78, 0,
- 0, 0, 0, 0, 34, 112,8, 0, 0, 32, 0, 0, 12, 96, 20, 0, 0, 0, 0, 0, 0, 40, 12, 3, 0, 0, 0, 0, 25, 65, 8, 1, 0, 0, 4, 0, 24, 57, 28, 0,
- 0, 0, 0, 0, 19, 121,20, 1, 0, 0, 0, 0, 77, 112,8, 0, 0, 0, 0, 0, 182,84, 8, 0, 0, 0, 0, 0, 51, 53, 0, 0, 0, 0, 0, 0, 177,73, 68, 2,
- 0, 0, 0, 0, 18, 72, 0, 0, 0, 0, 0, 0, 50, 73, 0, 0, 0, 0, 0, 0, 55, 205,12, 1, 0, 0, 0, 0, 2, 25, 14, 0, 0, 0, 0, 0, 180,26, 30, 2,
- 0, 0, 0, 0, 76, 128,12, 2, 0, 0, 0, 0, 16, 9, 66, 1, 0, 0, 0, 0, 215,176,110,0, 0, 0, 0, 0, 28, 41, 0, 0, 0, 0, 0, 0, 20, 97, 2, 0,
- 0, 0, 0, 0, 81, 45, 68, 0, 0, 0, 0, 0, 104,48, 32, 0, 0, 0, 0, 0, 59, 63, 108,1, 0, 0, 0, 0, 17, 64, 26, 0, 0, 0, 0, 0, 68, 168,34, 1,
- 0, 0, 0, 0, 0, 8, 72, 0, 0, 0, 0, 0, 26, 57, 4, 0, 0, 0, 0, 0, 148,5, 0, 0, 0, 0, 0, 0, 17, 89, 12, 0, 0, 0, 0, 0, 4, 36, 130,0,
- 0, 0, 0, 0, 25, 1, 34, 1, 0, 0, 0, 0, 0, 12, 8, 1, 0, 0, 0, 0, 1, 68, 4, 1, 0, 0, 0, 0, 43, 185,14, 0, 0, 0, 0, 0, 203,57, 20, 1,
- 0, 0, 0, 0, 243,186,110,0, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 0, 132,144,0, 0, 0, 0, 0, 0, 17, 65, 6, 0, 0, 0, 0, 0, 6, 0, 0, 2,
- 0, 0, 0, 0, 0, 4, 128,0, 0, 0, 0, 0, 127,221,60, 3, 0, 0, 0, 0, 16, 97, 18, 1, 0, 0, 0, 0, 19, 49, 2, 0, 0, 0, 0, 0, 66, 32, 6, 0,
- 0, 0, 0, 0, 32, 48, 2, 0, 0, 0, 0, 0, 247,113,76, 1, 0, 0, 0, 0, 2, 33, 2, 0, 0, 0, 0, 0, 67, 56, 6, 1, 0, 0, 0, 0, 16, 16, 20, 1,
- 0, 0, 0, 0, 90, 81, 8, 0, 0, 0, 0, 0, 85, 65, 8, 0, 0, 0, 0, 0, 18, 96, 20, 3, 0, 8, 0, 0, 19, 17, 20, 0, 0, 0, 0, 0, 2, 42, 6, 0,
- 0, 0, 0, 0, 0, 16, 70, 0, 0, 0, 0, 0, 221,125,14, 2, 0, 0, 0, 0, 128,18, 24, 0, 0, 0, 0, 0, 20, 24, 0, 0, 0, 0, 0, 0, 19, 29, 87, 0,
- 0, 0, 0, 0, 66, 24, 6, 1, 0, 0, 0, 0, 144,9, 4, 0, 0, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 0, 156,72, 0, 0, 0, 0, 0, 0, 64, 24, 0, 0,
- 0, 2, 0, 0, 129,196,68, 0, 0, 32, 0, 0, 12, 136,4, 0, 0, 0, 0, 0, 25, 253,60, 3, 0, 0, 0, 0, 64, 125,12, 1, 0, 0, 0, 0, 137,52, 12, 1,
- 0, 0, 0, 0, 134,1, 24, 0, 0, 0, 0, 0, 178,17, 0, 1, 0, 0, 0, 0, 145,0, 0, 2, 0, 8, 0, 0, 157,156,14, 0, 0, 0, 0, 0, 0, 4, 70, 0,
- 0, 0, 0, 0, 68, 169,2, 0, 0, 0, 0, 0, 21, 64, 1, 0, 0, 0, 0, 0, 181,88, 12, 2, 0, 0, 0, 0, 148,21, 0, 0, 0, 0, 0, 0, 4, 16, 6, 0,
- 0, 0, 0, 0, 16, 57, 4, 0, 0, 0, 0, 0, 18, 5, 0, 0, 0, 0, 16, 0, 21, 200,32, 0, 0, 0, 0, 0, 0, 34, 0, 1, 0, 0, 0, 0, 8, 0, 36, 0,
- 0, 0, 0, 0, 5, 240,6, 0, 0, 0, 0, 0, 1, 104,0, 1, 0, 0, 0, 0, 72, 36, 130,0, 0, 0, 0, 0, 18, 9, 16, 1, 0, 0, 0, 0, 24, 0, 4, 1,
- 0, 0, 0, 0, 219,109,4, 1, 0, 0, 0, 0, 80, 16, 8, 0, 0, 0, 0, 0, 179,48, 4, 0, 0, 0, 0, 0, 0, 48, 10, 1, 0, 224,45, 0, 1, 0, 0, 0,
- 0, 240,33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 100,22, 0, 0, 0, 0, 0, 0, 164,0, 0, 0, 0, 0, 0, 0, 12, 6, 0, 0, 0, 0, 0, 24, 21, 4, 0,
- 0, 0, 0, 0, 236,188,46, 1, 0, 0, 0, 0, 48, 8, 8, 0, 0, 0, 0, 0, 0, 8, 12, 2, 0, 0, 0, 0, 65, 41, 10, 0, 0, 0, 0, 0, 179,59, 12, 0,
- 0, 0, 0, 0, 145,249,4, 0, 0, 0, 0, 0, 24, 40, 2, 0, 0, 0, 0, 0, 251,72, 94, 1, 0, 32, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 145,121,4, 0,
- 0, 0, 0, 0, 2, 8, 4, 2, 0, 0, 0, 0, 0, 40, 60, 0, 0, 0, 0, 0, 17, 5, 16, 0, 0, 0, 0, 0, 0, 34, 12, 1, 0, 0, 0, 0, 127,255,127,3,
- 0, 32, 0, 0, 138,36, 70, 0, 0, 0, 0, 0, 5, 33, 2, 0, 0, 0, 0, 0, 144,68, 2, 0, 16, 0, 0, 0, 119,113,62, 1, 0, 0, 0, 0, 34, 56, 4, 0,
- 0, 0, 0, 0, 12, 49, 14, 1, 0, 0, 0, 0, 187,112,4, 2, 0, 0, 0, 0, 19, 113,64, 1, 0, 32, 0, 0, 78, 48, 66, 0, 0, 0, 0, 0, 0, 48, 14, 1,
- 0, 0, 0, 0, 3, 64, 0, 0, 0, 0, 0, 0, 1, 17, 20, 0, 0, 0, 0, 0, 58, 48, 68, 0, 0, 0, 0, 0, 144,0, 76, 0, 0, 0, 0, 0, 2, 176,66, 0,
- 0, 96, 0, 0, 42, 64, 68, 1, 0, 0, 0, 0, 123,72, 69, 0, 0, 0, 0, 0, 236,48, 72, 0, 0, 0, 0, 0, 149,81, 72, 0, 0, 0, 0, 0, 211,84, 6, 2,
- 0, 0, 0, 0, 22, 24, 0, 0, 0, 0, 0, 0, 164,80, 70, 0, 0, 0, 0, 0, 146,49, 64, 0, 0, 0, 0, 0, 23, 89, 22, 3, 0, 32, 8, 0, 110,248,78, 1,
- 0, 0, 0, 0, 2, 144,68, 0, 0, 96, 4, 0, 24, 67, 28, 0, 0, 0, 0, 0, 4, 137,8, 0, 0, 8, 0, 0, 16, 1, 4, 0, 0, 0, 0, 0, 21, 40, 0, 0,
- 0, 0, 0, 0, 84, 184,12, 2, 0, 0, 0, 0, 1, 65, 20, 1, 16, 0, 0, 0, 223,117,62, 3, 0, 0, 0, 0, 128,52, 4, 0, 0, 112,33, 0, 5, 16, 36, 0,
- 0, 0, 0, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 109,0, 6, 1, 0, 96, 4, 0, 30, 144,68, 0, 0, 0, 0, 0, 49, 69, 64, 2,
- 0, 0, 0, 0, 128,12, 18, 0, 0, 0, 0, 0, 32, 32, 20, 0, 0, 0, 0, 0, 126,252,46, 1, 0, 0, 0, 0, 16, 73, 68, 0, 0, 0, 0, 0, 49, 1, 84, 1,
- 0, 0, 0, 0, 16, 73, 12, 0, 0, 0, 0, 0, 20, 81, 4, 0, 0, 0, 0, 0, 113,157,76, 0, 0, 0, 0, 0, 41, 8, 76, 0, 0, 32, 0, 0, 0, 64, 32, 0,
- 0, 0, 0, 0, 17, 25, 20, 1, 0, 0, 0, 0, 32, 69, 0, 0, 0, 0, 0, 0, 95, 125,126,1, 0, 0, 0, 0, 6, 44, 8, 0, 0, 0, 0, 0, 81, 0, 0, 1,
- 0, 0, 0, 0, 81, 117,24, 2, 0, 0, 0, 0, 145,8, 0, 1, 0, 0, 0, 0, 31, 73, 20, 1, 0, 0, 0, 0, 12, 36, 0, 0, 0, 0, 0, 0, 17, 9, 18, 1,
- 0, 0, 0, 0, 5, 0, 2, 0, 0, 0, 0, 0, 40, 8, 14, 1, 0, 0, 0, 0, 85, 36, 4, 0, 0, 0, 0, 0, 146,0, 8, 0, 0, 96, 4, 0, 75, 80, 4, 0,
- 0, 0, 0, 0, 8, 0, 100,0, 0, 0, 0, 0, 106,0, 4, 0, 0, 0, 0, 0, 183,25, 8, 0, 0, 32, 0, 0, 162,184,6, 1, 0, 0, 0, 0, 145,81, 16, 0,
- 0, 0, 0, 0, 181,253,28, 0, 0, 0, 0, 0, 141,53, 6, 1, 0, 0, 0, 0, 49, 8, 0, 0, 0, 96, 1, 0, 255,249,78, 2, 0, 0, 0, 0, 8, 1, 136,1,
- 0, 32, 4, 0, 0, 9, 4, 0, 0, 0, 0, 0, 145,128,8, 0, 0, 0, 0, 0, 17, 89, 20, 1, 0, 0, 0, 0, 126,189,14, 3, 0, 0, 0, 0, 76, 0, 4, 0,
- 0, 32, 0, 0, 24, 65, 4, 0, 0, 0, 0, 0, 65, 9, 4, 0, 0, 0, 0, 0, 153,61, 8, 0, 0, 96, 0, 0, 207,188,70, 1, 0, 0, 0, 0, 148,20, 4, 2,
- 0, 0, 0, 0, 153,105,4, 0, 0, 0, 0, 0, 0, 168,2, 1, 0, 0, 0, 0, 60, 17, 4, 0, 16, 0, 0, 0, 155,125,14, 3, 0, 0, 0, 0, 8, 24, 38, 0,
- 0, 0, 0, 0, 0, 40, 46, 1, 0, 0, 0, 0, 128,1, 76, 0, 0, 0, 0, 0, 17, 121,12, 0, 0, 32, 0, 0, 16, 28, 36, 0, 0, 128,0, 0, 63, 97, 48, 1,
- 0, 0, 0, 0, 10, 160,0, 0, 0, 0, 0, 0, 6, 0, 44, 0, 0, 0, 0, 0, 10, 48, 40, 0, 0, 0, 0, 0, 138,129,16, 0, 0, 0, 0, 0, 17, 32, 16, 0,
- 0, 96, 0, 0, 4, 24, 88, 1, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 57, 70, 0, 0, 0, 0, 0, 68, 0, 24, 0, 0, 0, 0, 0, 8, 128,0, 0,
- 0, 0, 0, 0, 23, 45, 6, 0, 0, 0, 0, 0, 17, 8, 20, 1, 0, 0, 0, 0, 49, 41, 4, 0, 0, 0, 0, 0, 89, 124,6, 1, 0, 0, 0, 0, 238,56, 110,3,
- 0, 0, 0, 0, 20, 81, 12, 0, 0, 0, 0, 0, 33, 48, 12, 0, 0, 0, 0, 0, 17, 113,12, 1, 0, 0, 0, 0, 209,73, 22, 0, 0, 0, 0, 0, 145,9, 0, 1,
- 0, 0, 0, 0, 17, 11, 4, 0, 0, 0, 0, 0, 129,48, 24, 0, 0, 0, 0, 0, 17, 8, 14, 2, 0, 0, 0, 0, 0, 1, 10, 2, 0, 0, 0, 0, 31, 93, 60, 2,
- 0, 0, 0, 0, 68, 32, 8, 0, 0, 0, 0, 0, 144,25, 8, 0, 0, 0, 0, 0, 66, 80, 5, 2, 0, 0, 0, 0, 59, 209,60, 0, 0, 0, 0, 0, 4, 41, 4, 1,
- 0, 0, 0, 0, 17, 109,4, 0, 0, 0, 0, 0, 16, 81, 16, 0, 0, 32, 32, 0, 128,0, 8, 0, 0, 0, 0, 0, 147,1, 14, 0, 0, 0, 32, 0, 221,44, 12, 3,
- 0, 0, 0, 0, 8, 4, 2, 1, 0, 0, 0, 0, 17, 72, 66, 0, 0, 0, 0, 0, 0, 8, 66, 1, 0, 0, 0, 0, 19, 201,26, 0, 0, 16, 1, 0, 16, 73, 6, 2,
- 0, 112,38, 0, 8, 1, 4, 0, 0, 32, 0, 0, 8, 0, 8, 0, 0, 0, 0, 0, 2, 17, 32, 0, 0, 0, 0, 0, 48, 148,2, 1, 0, 0, 0, 0, 59, 121,78, 0,
- 0, 0, 0, 0, 19, 65, 4, 0, 0, 0, 0, 0, 10, 0, 6, 1, 0, 0, 0, 0, 85, 32, 0, 1, 0, 0, 0, 0, 113,25, 28, 2, 0, 0, 0, 0, 183,124,29, 2,
- 0, 0, 0, 0, 0, 37, 2, 1, 0, 0, 0, 0, 2, 49, 10, 1, 0, 0, 0, 0, 0, 9, 2, 1, 0, 0, 0, 0, 149,56, 28, 3, 0, 0, 0, 0, 20, 5, 0, 0,
- 0, 0, 0, 0, 160,24, 8, 0, 0, 0, 0, 0, 85, 40, 12, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 32, 8, 0, 9, 1, 0, 0, 0, 0, 0, 0, 95, 252,94, 2,
- 0, 0, 0, 0, 132,56, 8, 0, 0, 0, 0, 0, 16, 0, 2, 2, 0, 0, 0, 0, 0, 48, 24, 2, 0, 0, 0, 0, 126,136,140,0, 0, 0, 0, 0, 1, 96, 10, 0,
- 0, 0, 0, 0, 25, 9, 8, 0, 0, 0, 0, 0, 24, 0, 20, 0, 0, 0, 0, 0, 145,224,4, 0, 0, 32, 0, 0, 79, 217,44, 0, 0, 0, 0, 0, 76, 136,140,0,
- 0, 0, 0, 0, 21, 4, 16, 0, 0, 0, 0, 0, 16, 93, 9, 0, 0, 0, 0, 0, 64, 36, 0, 0, 16, 36, 20, 0, 255,255,255,3, 0, 0, 0, 0, 8, 25, 36, 0,
- 16, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 125,185,110,0, 0, 0, 0, 0, 6, 160,32, 0,
- 0, 0, 0, 0, 231,133,12, 0, 0, 32, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 5, 32, 24, 0, 0, 0, 0, 0, 5, 96, 16, 0, 0, 0, 4, 0, 91, 121,150,0,
- 0, 0, 0, 0, 0, 8, 130,1, 0, 0, 0, 0, 64, 65, 34, 0, 0, 0, 0, 0, 8, 8, 4, 2, 0, 48, 0, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 132,6, 0,
- 0, 0, 2, 0, 151,93, 30, 3, 0, 0, 0, 0, 132,112,2, 0, 0, 0, 0, 0, 174,184,77, 0, 0, 112,5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 72, 0,
- 0, 0, 0, 0, 194,38, 2, 0, 0, 0, 0, 0, 16, 32, 128,1, 0, 0, 0, 0, 0, 0, 38, 1, 16, 0, 0, 0, 57, 253,30, 1, 0, 0, 0, 0, 128,40, 2, 0,
- 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 120,20, 0, 0, 0, 0, 0, 4, 144,12, 0, 0, 32, 0, 0, 1, 1, 4, 0,
- 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 28, 33, 28, 3, 0, 0, 0, 0, 115,197,62, 0, 0, 0, 0, 0, 144,8, 8, 1, 0, 0, 0, 0, 215,121,90, 0,
- 0, 0, 0, 0, 128,0, 6, 0, 0, 0, 0, 0, 25, 104,6, 0, 64, 4, 0, 0, 233,33, 12, 3, 0, 4, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 17, 0, 14, 0,
- 0, 0, 0, 0, 0, 16, 64, 2, 0, 0, 0, 0, 145,125,16, 2, 0, 0, 0, 0, 139,48, 2, 0, 0, 64, 0, 0, 255,93, 60, 1, 0, 0, 0, 0, 68, 57, 70, 1,
- 0, 0, 0, 0, 17, 32, 150,0, 0, 0, 0, 0, 117,38, 16, 0, 0, 0, 4, 0, 0, 129,4, 1, 0, 0, 0, 0, 145,12, 0, 0, 0, 4, 0, 0, 17, 113,84, 1,
- 0, 0, 0, 0, 85, 32, 8, 0, 0, 0, 0, 0, 0, 16, 4, 2, 0, 0, 0, 0, 4, 33, 34, 0, 0, 0, 4, 0, 239,159,28, 1, 1, 96, 0, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 1, 145,28, 0, 0, 64, 0, 0, 255,219,30, 2, 0, 0, 0, 0, 76, 187,138,0, 0, 32, 0, 0, 8, 32, 6, 0, 0, 32, 0, 0, 24, 0, 4, 0,
- 0, 0, 0, 0, 32, 24, 10, 0, 0, 0, 0, 0, 72, 160,12, 0, 0, 0, 0, 0, 9, 56, 2, 0, 0, 0, 0, 0, 10, 8, 34, 0, 0, 0, 0, 0, 204,8, 12, 0,
- 0, 0, 0, 0, 145,73, 22, 0, 0, 0, 0, 0, 4, 9, 14, 0, 0, 0, 0, 0, 13, 40, 10, 0, 0, 0, 0, 0, 37, 17, 44, 0, 0, 0, 0, 0, 1, 72, 16, 0,
- 0, 0, 0, 0, 0, 8, 62, 0, 0, 8, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 68, 0, 4, 2, 0, 0, 0, 0, 2, 144,32, 0, 0, 0, 0, 0, 238,172,30, 1,
- 0, 0, 0, 0, 24, 33, 0, 0, 0, 0, 0, 0, 8, 0, 40, 0, 0, 0, 0, 0, 9, 0, 146,0, 0, 4, 0, 0, 145,73, 18, 0, 0, 0, 0, 0, 4, 168,6, 0,
- 0, 0, 0, 0, 8, 224,14, 0, 0, 0, 0, 0, 192,48, 2, 0, 0, 0, 0, 0, 68, 0, 44, 0, 0, 0, 0, 0, 16, 193,0, 0, 0, 0, 0, 0, 2, 56, 2, 0,
- 0, 0, 0, 0, 54, 184,142,0, 0, 0, 0, 0, 117,64, 54, 0, 0, 32, 0, 0, 64, 48, 4, 0, 0, 32, 0, 0, 17, 64, 4, 0, 0, 32, 8, 0, 0, 136,0, 0,
- 0, 0, 0, 0, 17, 0, 24, 0, 0, 0, 0, 0, 4, 128,8, 0, 0, 0, 0, 0, 6, 120,34, 0, 0, 0, 0, 0, 14, 8, 6, 0, 0, 0, 0, 0, 122,136,175,2,
- 0, 0, 0, 0, 133,192,8, 0, 0, 0, 0, 0, 4, 56, 10, 0, 0, 0, 0, 0, 5, 0, 6, 0, 0, 0, 0, 0, 16, 33, 14, 0, 0, 0, 0, 0, 88, 40, 130,0,
- 0, 0, 0, 0, 16, 1, 16, 1, 0, 0, 0, 0, 70, 16, 78, 0, 0, 0, 0, 0, 4, 64, 6, 0, 0, 0, 0, 0, 147,88, 118,0, 0, 0, 0, 0, 66, 56, 6, 0,
- 0, 0, 0, 0, 2, 0, 76, 0, 0, 0, 0, 0, 160,49, 12, 0, 0, 0, 0, 0, 0, 16, 20, 0, 0, 0, 0, 0, 80, 48, 13, 0, 0, 0, 0, 0, 17, 75, 68, 0,
- 0, 0, 0, 0, 16, 0, 96, 0, 0, 0, 0, 0, 17, 69, 20, 0, 0, 0, 0, 0, 32, 4, 4, 0, 0, 0, 0, 0, 37, 164,86, 0, 0, 0, 0, 0, 149,205,24, 0,
- 0, 0, 0, 0, 21, 184,10, 0, 0, 0, 0, 0, 72, 160,4, 0, 0, 0, 0, 0, 33, 0, 4, 0, 0, 0, 0, 0, 96, 24, 0, 0, 0, 0, 0, 0, 17, 0, 48, 0,
- 0, 0, 0, 0, 66, 40, 14, 0, 0, 0, 0, 0, 25, 17, 20, 0, 0, 0, 0, 0, 34, 8, 2, 0, 16, 0, 0, 0, 177,67, 50, 0, 0, 0, 0, 0, 68, 52, 0, 0,
- 0, 0, 0, 0, 96, 40, 6, 0, 0, 32, 0, 0, 2, 8, 8, 0, 0, 32, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 32, 0, 40, 0, 0, 32, 0, 0, 127,251,126,2,
- 0, 0, 0, 0, 68, 16, 0, 0, 0, 0, 0, 0, 0, 120,20, 0, 0, 0, 0, 0, 128,4, 16, 0, 0, 0, 0, 0, 1, 16, 8, 0, 0, 0, 0, 0, 28, 0, 24, 0,
- 0, 0, 0, 0, 72, 8, 0, 0, 0, 0, 0, 0, 20, 128,8, 0, 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, 160,16, 0, 0, 0, 0, 0, 0, 0, 41, 128,0,
- 0, 0, 0, 0, 6, 240,52, 0, 0, 0, 0, 0, 16, 64, 10, 0, 0, 0, 0, 0, 8, 33, 52, 0, 0, 0, 0, 0, 0, 165,32, 1, 0, 0, 0, 0, 17, 129,4, 0,
- 0, 0, 0, 0, 4, 32, 28, 0, 0, 32, 0, 0, 16, 81, 4, 0, 0, 0, 0, 0, 68, 96, 12, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 29, 184,126,2,
- 0, 0, 0, 0, 5, 0, 4, 2, 0, 0, 0, 0, 149,200,44, 0, 0, 0, 2, 0, 140,16, 4, 0, 0, 0, 0, 0, 17, 65, 64, 0, 0, 0, 5, 0, 0, 0, 8, 0,
- 0, 0, 0, 0, 3, 0, 16, 2, 0, 0, 0, 0, 119,125,126,3, 0, 0, 0, 0, 180,167,13, 0, 0, 0, 0, 0, 8, 40, 12, 1, 0, 0, 0, 0, 95, 112,4, 2,
- 0, 32, 16, 0, 3, 28, 0, 0, 0, 0, 1, 0, 4, 32, 1, 0, 0, 0, 0, 0, 254,153,78, 1, 0, 0, 0, 0, 8, 0, 72, 0, 0, 0, 0, 0, 108,136,36, 0,
- 0, 192,0, 64, 255,253,30, 0, 0, 0, 0, 0, 127,125,22, 2, 0, 32, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 3, 0, 16, 0, 0, 0, 0, 0, 129,64, 4, 0,
- 0, 0, 0, 0, 19, 32, 0, 0, 0, 0, 0, 0, 18, 56, 26, 0, 0, 0, 0, 0, 194,0, 0, 0, 0, 0, 0, 0, 17, 81, 73, 0, 0, 0, 0, 0, 0, 20, 3, 0,
- 0, 0, 0, 0, 202,5, 0, 2, 0, 0, 0, 0, 9, 248,12, 0, 0, 0, 0, 0, 0, 48, 6, 1, 0, 0, 0, 0, 0, 1, 78, 1, 16, 0, 0, 0, 16, 1, 0, 1,
- 0, 8, 0, 0, 54, 184,12, 0, 0, 0, 0, 0, 128,64, 74, 0, 0, 0, 0, 0, 49, 56, 16, 1, 0, 0, 1, 0, 8, 0, 6, 0, 0, 0, 0, 0, 129,65, 34, 0,
- 16, 0, 0, 0, 189,101,126,2, 0, 0, 0, 0, 68, 56, 4, 0, 0, 0, 1, 0, 17, 80, 24, 1, 0, 96, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0,
- 0, 0, 0, 0, 6, 156,2, 0, 0, 96, 0, 0, 149,103,4, 0, 0, 0, 0, 0, 1, 97, 0, 0, 0, 0, 0, 0, 5, 40, 14, 1, 0, 0, 0, 0, 0, 117,12, 0,
- 0, 0, 0, 0, 16, 97, 12, 1, 0, 0, 0, 0, 9, 64, 4, 0, 0, 0, 0, 0, 145,112,53, 2, 0, 0, 0, 0, 67, 4, 11, 0, 16, 180,0, 0, 223,255,255,3,
- 0, 0, 0, 0, 30, 134,2, 0, 0, 80, 32, 0, 0, 0, 0, 0, 16, 16, 0, 0, 255,191,255,3, 0, 0, 0, 0, 32, 164,2, 0, 0, 0, 0, 0, 19, 73, 6, 0,
- 0, 0, 0, 0, 0, 3, 64, 0, 0, 0, 0, 0, 149,93, 17, 0, 0, 112,34, 0, 185,217,7, 1, 0, 96, 0, 0, 16, 0, 4, 0, 0, 112,4, 0, 4, 0, 64, 0,
- 0, 0, 0, 0, 32, 40, 100,0, 0, 96, 39, 0, 0, 1, 36, 0, 0, 0, 0, 0, 6, 176,200,0, 0, 96, 4, 0, 18, 65, 20, 1, 0, 0, 0, 0, 0, 24, 12, 2,
- 0, 0, 0, 0, 145,73, 64, 2, 0, 32, 0, 0, 8, 34, 0, 0, 0, 0, 0, 0, 68, 36, 4, 0, 0, 0, 0, 0, 17, 32, 2, 1, 0, 0, 0, 0, 217,121,22, 0,
- 0, 0, 0, 0, 56, 0, 64, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 32, 0, 0, 0, 0, 132,0, 0, 0, 0, 0, 11, 104,2, 0, 0, 0, 0, 0, 136,184,6, 1,
- 0, 0, 0, 0, 146,9, 4, 0, 0, 0, 0, 0, 1, 9, 12, 0, 0, 112,38, 0, 8, 16, 6, 1, 0, 0, 0, 0, 2, 0, 96, 0, 0, 0, 0, 0, 20, 65, 0, 0,
- 0, 0, 0, 0, 83, 229,0, 0, 0, 32, 0, 0, 1, 1, 16, 0, 0, 0, 0, 0, 0, 176,32, 0, 0, 32, 0, 0, 91, 115,92, 2, 0, 0, 0, 0, 1, 9, 6, 0,
- 0, 32, 0, 0, 0, 129,0, 0, 0, 0, 0, 0, 16, 8, 6, 1, 0, 240,63, 0, 223,222,78, 1, 0, 0, 0, 0, 17, 44, 6, 0, 0, 96, 0, 0, 2, 8, 4, 0,
- 0, 36, 0, 0, 223,101,126,3, 0, 0, 0, 0, 20, 4, 12, 1, 0, 0, 0, 0, 1, 129,0, 0, 0, 0, 0, 0, 0, 65, 0, 2, 0, 0, 0, 0, 21, 45, 76, 3,
- 0, 0, 0, 0, 16, 4, 0, 2, 0, 0, 0, 0, 21, 36, 14, 0, 0, 0, 0, 0, 148,0, 4, 2, 0, 0, 0, 0, 1, 64, 0, 2, 0, 0, 0, 0, 32, 0, 100,0,
- 0, 0, 0, 0, 16, 36, 4, 0, 0, 0, 0, 0, 36, 0, 116,0, 0, 0, 0, 0, 21, 213,4, 2, 0, 104,0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 0, 1, 192,68, 0, 0, 0, 0, 0, 223,125,55, 2, 0, 0, 0, 0, 12, 56, 12, 0, 0, 0, 0, 0, 12, 16, 4, 0, 0, 0, 0, 0, 132,12, 4, 2,
- 0, 0, 0, 0, 9, 8, 8, 0, 0, 0, 1, 0, 20, 253,76, 0, 0, 0, 0, 0, 4, 100,0, 0, 0, 240,6, 0, 207,190,206,0, 0, 192,2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 129,65, 14, 0, 0, 0, 0, 0, 142,48, 6, 0, 0, 0, 0, 0, 24, 129,8, 0, 0, 0, 0, 0, 64, 0, 5, 2, 0, 0, 0, 0, 10, 48, 22, 0,
- 0, 0, 0, 0, 24, 0, 12, 0, 0, 128,0, 0, 136,32, 0, 0, 0, 0, 0, 0, 1, 0, 132,0, 0, 32, 0, 0, 159,126,78, 2, 0, 0, 0, 0, 2, 168,102,0,
- 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 2, 0, 128,0, 0, 0, 0, 0, 16, 17, 64, 2, 0, 0, 0, 0, 1, 1, 16, 1, 0, 32, 0, 0, 18, 17, 8, 3,
- 0, 16, 0, 0, 17, 73, 2, 0, 0, 16, 0, 0, 0, 160,0, 1, 0, 0, 0, 0, 255,254,126,2, 0, 0, 0, 0, 8, 40, 34, 0, 0, 0, 0, 0, 119,187,13, 0,
- 0, 0, 0, 0, 128,8, 0, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 128,20, 0, 0, 0, 32, 0, 0, 27, 9, 66, 2, 0, 48, 32, 0, 8, 52, 0, 0,
- 0, 0, 0, 0, 2, 128,46, 2, 0, 0, 32, 0, 20, 49, 4, 0, 0, 96, 0, 0, 150,65, 86, 1, 0, 0, 0, 0, 24, 1, 4, 1, 0, 0, 0, 0, 0, 1, 36, 0,
- 0, 0, 0, 0, 89, 77, 76, 0, 0, 32, 0, 0, 34, 16, 0, 0, 0, 0, 0, 0, 17, 209,0, 0, 0, 0, 0, 0, 0, 32, 2, 2, 0, 32, 0, 0, 93, 117,15, 2,
- 0, 0, 0, 0, 16, 8, 40, 0, 0, 0, 0, 0, 36, 96, 4, 0, 0, 32, 0, 0, 17, 5, 2, 1, 0, 32, 0, 0, 128,34, 0, 0, 0, 0, 0, 0, 32, 8, 14, 1,
- 0, 0, 0, 0, 112,32, 4, 0, 0, 96, 4, 0, 38, 4, 4, 1, 0, 0, 0, 0, 20, 64, 38, 0, 0, 0, 0, 0, 32, 168,16, 0, 0, 0, 0, 0, 66, 2, 0, 0,
- 0, 0, 0, 0, 128,132,4, 0, 0, 0, 0, 0, 91, 125,62, 2, 0, 0, 0, 0, 2, 24, 16, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 16, 56, 64, 0,
- 0, 96, 4, 0, 66, 8, 4, 0, 0, 0, 0, 0, 20, 149,92, 0, 0, 32, 0, 0, 16, 186,0, 0, 0, 240,28, 0, 0, 16, 4, 0, 0, 0, 0, 0, 4, 129,4, 0,
- 0, 240,9, 0, 101,1, 4, 0, 0, 0, 0, 0, 179,153,12, 0, 0, 0, 0, 0, 8, 32, 128,0, 0, 0, 0, 0, 18, 5, 6, 0, 0, 32, 0, 0, 16, 8, 6, 0,
- 0, 0, 0, 0, 2, 4, 64, 0, 0, 128,0, 0, 0, 66, 8, 0, 0, 0, 0, 0, 128,0, 128,0, 0, 0, 0, 0, 17, 97, 18, 0, 0, 0, 0, 0, 2, 96, 16, 0,
- 0, 0, 0, 0, 68, 4, 0, 1, 0, 0, 0, 0, 0, 40, 132,0, 0, 0, 0, 0, 2, 0, 130,0, 0, 0, 0, 0, 81, 16, 4, 0, 0, 0, 0, 0, 17, 13, 8, 0,
- 0, 32, 0, 0, 27, 23, 4, 0, 0, 96, 4, 0, 2, 64, 4, 1, 0, 0, 0, 0, 17, 17, 0, 1, 0, 96, 38, 0, 78, 130,4, 2, 0, 0, 0, 0, 217,166,206,2,
- 0, 0, 0, 0, 0, 40, 92, 2, 0, 0, 0, 0, 65, 67, 4, 0, 0, 0, 32, 0, 1, 66, 32, 0, 0, 32, 0, 0, 8, 6, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 18, 56, 8, 2, 0, 0, 0, 0, 0, 0, 144,0, 0, 0, 0, 0, 4, 0, 146,1, 0, 0, 0, 0, 147,0, 0, 0, 0, 0, 0, 0, 129,64, 4, 2,
- 0, 0, 32, 0, 255,255,254,3, 0, 0, 0, 0, 14, 100,5, 0, 0, 128,0, 0, 18, 9, 4, 0, 0, 0, 0, 0, 144,65, 66, 1, 0, 32, 32, 0, 143,56, 14, 1,
- 0, 0, 0, 0, 2, 64, 0, 1, 0, 0, 0, 0, 17, 144,0, 0, 0, 96, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 81, 1, 4, 0, 0, 32, 0, 0, 17, 32, 4, 0,
- 0, 240,47, 0, 95, 247,76, 1, 0, 224,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 4, 0, 0, 0, 0, 0, 0, 1, 97, 0, 1, 0, 32, 38, 0, 10, 0, 0, 0,
- 0, 0, 0, 0, 146,81, 14, 0, 0, 96, 1, 0, 0, 0, 36, 0, 0, 0, 0, 0, 16, 1, 44, 0, 0, 32, 0, 0, 2, 8, 0, 0, 0, 96, 12, 0, 0, 17, 6, 0,
- 0, 0, 0, 0, 81, 73, 12, 1, 0, 0, 0, 0, 20, 32, 36, 0, 0, 0, 0, 0, 223,101,29, 2, 0, 96, 0, 0, 2, 65, 44, 1, 0, 32, 2, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 32, 168,6, 0, 0, 64, 0, 0, 217,49, 6, 1, 0, 112,45, 0, 17, 1, 4, 0, 0, 0, 0, 0, 149,137,93, 0, 0, 32, 32, 0, 48, 200,8, 1,
- 0, 96, 0, 0, 1, 129,20, 0, 0, 32, 0, 0, 0, 25, 16, 1, 0, 0, 0, 0, 21, 136,0, 0, 0, 0, 0, 0, 3, 64, 8, 0, 0, 0, 0, 0, 2, 40, 6, 0,
- 0, 32, 0, 0, 53, 96, 6, 0, 0, 64, 0, 0, 0, 0, 16, 0, 0, 36, 0, 0, 4, 64, 2, 0, 0, 0, 0, 0, 6, 80, 24, 0, 0, 0, 0, 0, 0, 4, 80, 0,
- 0, 0, 0, 0, 255,255,191,2, 0, 0, 0, 0, 21, 147,0, 0, 0, 0, 0, 0, 18, 1, 8, 0, 0, 0, 0, 0, 19, 1, 2, 1, 0, 0, 0, 0, 89, 69, 4, 1,
- 0, 0, 0, 0, 136,40, 10, 0, 0, 0, 0, 0, 32, 9, 0, 0, 0, 0, 0, 0, 209,104,20, 0, 0, 0, 0, 0, 1, 105,0, 0, 0, 96, 2, 0, 10, 16, 6, 1,
- 0, 0, 0, 0, 2, 0, 8, 1, 0, 0, 0, 0, 16, 5, 16, 0, 0, 0, 0, 0, 21, 73, 20, 1, 0, 0, 0, 0, 16, 176,4, 0, 0, 0, 0, 0, 21, 66, 28, 1,
- 0, 32, 4, 0, 0, 32, 6, 0, 0, 32, 0, 0, 17, 96, 16, 0, 0, 96, 1, 0, 3, 32, 12, 0, 0, 32, 0, 0, 0, 0, 4, 2, 0, 232,0, 0, 17, 0, 0, 0,
- 0, 176,8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 200,0, 0, 0, 64, 0, 0, 16, 19, 20, 1, 0, 0, 0, 0, 125,71, 12, 0, 0, 0, 0, 0, 1, 68, 24, 0,
- 0, 232,0, 0, 19, 2, 4, 0, 0, 64, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,25, 65, 0, 0, 0, 0, 0, 21, 240,24, 0, 0, 120,16, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 48, 81, 4, 1, 0, 0, 0, 0, 8, 64, 10, 0, 0, 0, 0, 0, 93, 117,6, 1, 0, 0, 0, 0, 8, 34, 4, 1, 0, 0, 0, 0, 0, 4, 64, 2,
- 0, 0, 0, 0, 92, 38, 4, 0, 0, 16, 0, 0, 12, 128,8, 0, 0, 0, 0, 0, 128,5, 28, 0, 0, 0, 1, 0, 57, 89, 16, 1, 0, 0, 0, 0, 32, 16, 16, 1,
- 0, 0, 0, 0, 37, 32, 4, 0, 0, 240,32, 0, 83, 65, 0, 0, 0, 0, 0, 0, 0, 72, 36, 0, 16, 100,32, 0, 255,255,127,3, 0, 64, 0, 0, 32, 8, 0, 0,
- 0, 32, 0, 0, 255,255,127,3, 0, 0, 0, 0, 2, 37, 94, 2, 0, 0, 0, 0, 151,73, 18, 3, 0, 0, 0, 0, 14, 44, 10, 0, 0, 0, 0, 0, 64, 40, 2, 0,
- 0, 0, 0, 0, 2, 64, 16, 0, 0, 0, 0, 0, 8, 12, 12, 0, 0, 0, 0, 0, 144,141,32, 3, 0, 0, 0, 0, 0, 84, 0, 1, 0, 0, 0, 0, 153,105,18, 1,
- 0, 0, 0, 0, 0, 149,2, 0, 0, 0, 0, 0, 0, 52, 6, 0, 0, 0, 0, 0, 137,248,78, 0, 0, 0, 0, 0, 0, 145,0, 0, 0, 0, 0, 0, 48, 5, 10, 0,
- 0, 0, 0, 0, 81, 73, 16, 1, 0, 0, 0, 0, 0, 48, 66, 1, 0, 0, 0, 0, 17, 105,18, 0, 0, 0, 0, 0, 144,104,66, 0, 0, 0, 0, 0, 107,238,78, 2,
- 0, 0, 0, 0, 81, 64, 0, 2, 0, 0, 0, 0, 9, 77, 0, 0, 0, 0, 0, 0, 153,69, 24, 0, 0, 96, 0, 0, 140,48, 110,0, 0, 0, 0, 0, 255,221,60, 1,
- 0, 0, 0, 0, 160,60, 94, 0, 0, 0, 0, 0, 144,109,46, 1, 0, 0, 0, 0, 72, 0, 64, 0, 0, 0, 0, 0, 9, 6, 0, 0, 0, 0, 0, 0, 237,60, 132,0,
- 0, 0, 0, 0, 65, 69, 4, 0, 0, 0, 0, 0, 148,128,8, 2, 0, 0, 0, 0, 3, 17, 64, 0, 0, 0, 0, 0, 179,81, 20, 0, 0, 0, 0, 0, 128,56, 6, 0,
- 0, 32, 0, 0, 129,32, 38, 1, 0, 0, 0, 0, 16, 96, 12, 0, 0, 0, 0, 0, 19, 0, 16, 1, 0, 0, 0, 0, 144,0, 32, 2, 0, 0, 0, 0, 32, 32, 2, 0,
- 0, 0, 0, 0, 65, 160,8, 2, 0, 0, 0, 0, 23, 253,22, 0, 0, 0, 0, 0, 8, 45, 30, 2, 0, 0, 0, 0, 153,56, 2, 0, 0, 0, 0, 0, 16, 124,2, 1,
- 0, 32, 0, 0, 17, 12, 0, 0, 0, 0, 0, 0, 24, 0, 0, 2, 0, 0, 0, 0, 177,112,20, 0, 0, 0, 0, 0, 93, 247,92, 3, 0, 0, 0, 0, 219,61, 78, 2,
- 0, 0, 0, 0, 17, 65, 26, 1, 0, 0, 0, 0, 132,0, 2, 0, 0, 0, 0, 0, 137,220,46, 0, 0, 0, 0, 0, 1, 72, 130,0, 0, 0, 0, 0, 17, 160,4, 0,
- 0, 0, 0, 0, 8, 160,22, 0, 0, 0, 0, 0, 41, 96, 4, 3, 0, 0, 0, 0, 145,97, 2, 2, 0, 0, 0, 0, 128,168,6, 0, 0, 0, 0, 0, 49, 237,22, 0,
- 0, 0, 0, 0, 136,48, 16, 0, 0, 0, 0, 0, 8, 65, 64, 0, 0, 0, 0, 0, 145,8, 4, 0, 0, 32, 0, 0, 223,255,126,3, 0, 0, 0, 0, 110,255,28, 1,
- 0, 0, 0, 0, 17, 65, 16, 2, 0, 0, 0, 0, 16, 104,8, 1, 0, 96, 0, 0, 9, 1, 68, 0, 0, 0, 0, 0, 82, 52, 4, 3, 0, 32, 0, 0, 17, 4, 4, 0,
- 0, 0, 0, 0, 209,81, 4, 1, 0, 0, 0, 0, 5, 1, 0, 1, 0, 0, 0, 0, 16, 68, 14, 0, 0, 32, 0, 0, 0, 168,4, 2, 0, 0, 0, 0, 0, 12, 12, 0,
- 0, 0, 0, 0, 32, 128,32, 0, 0, 32, 0, 0, 17, 1, 0, 1, 0, 0, 0, 0, 49, 65, 4, 0, 0, 0, 0, 0, 128,33, 8, 0, 0, 0, 0, 0, 149,89, 20, 1,
- 0, 0, 0, 0, 157,245,28, 2, 0, 0, 0, 0, 134,41, 10, 1, 0, 0, 0, 0, 16, 56, 2, 1, 0, 0, 0, 0, 65, 49, 18, 1, 0, 0, 0, 0, 32, 16, 64, 0,
- 0, 0, 0, 0, 21, 52, 0, 0, 0, 0, 0, 0, 17, 121,16, 0, 0, 32, 0, 0, 2, 48, 0, 1, 0, 0, 0, 0, 2, 24, 2, 0, 0, 0, 0, 0, 24, 48, 12, 0,
- 0, 0, 0, 0, 17, 121,18, 0, 0, 0, 0, 0, 66, 56, 2, 0, 0, 0, 0, 0, 0, 1, 24, 1, 0, 32, 0, 0, 149,127,94, 3, 0, 0, 0, 0, 6, 56, 6, 0,
- 0, 32, 4, 0, 0, 0, 2, 0, 0, 96, 0, 0, 154,0, 68, 0, 0, 0, 0, 0, 129,96, 70, 0, 0, 0, 0, 0, 7, 1, 16, 0, 0, 0, 0, 0, 136,0, 2, 0,
- 0, 0, 0, 0, 9, 32, 16, 0, 0, 0, 0, 0, 19, 48, 0, 0, 0, 0, 0, 0, 63, 253,14, 2, 0, 0, 0, 0, 160,16, 16, 0, 0, 0, 0, 0, 128,128,16, 0,
- 0, 0, 0, 0, 17, 77, 16, 1, 0, 0, 0, 0, 8, 42, 0, 0, 0, 0, 0, 0, 21, 1, 20, 0, 0, 0, 0, 0, 207,61, 14, 0, 0, 0, 0, 0, 53, 72, 78, 0,
- 0, 0, 0, 0, 0, 52, 12, 0, 0, 0, 0, 0, 155,81, 16, 0, 0, 0, 0, 0, 2, 52, 2, 0, 0, 0, 0, 0, 0, 66, 8, 0, 0, 0, 0, 0, 20, 16, 2, 0,
- 0, 0, 0, 0, 128,116,0, 1, 0, 0, 0, 0, 13, 165,4, 1, 0, 0, 0, 0, 31, 51, 54, 0, 0, 32, 2, 0, 0, 4, 0, 0, 0, 32, 0, 0, 255,255,254,3,
- 0, 0, 0, 0, 236,56, 110,1, 0, 0, 0, 0, 64, 8, 0, 1, 0, 0, 0, 0, 2, 41, 4, 0, 0, 0, 0, 0, 144,73, 12, 1, 0, 0, 0, 0, 19, 73, 0, 0,
- 0, 0, 0, 0, 129,5, 4, 0, 0, 0, 0, 0, 9, 9, 2, 2, 0, 0, 0, 0, 238,184,110,2, 0, 0, 0, 0, 19, 1, 20, 1, 0, 0, 0, 0, 17, 72, 20, 1,
- 0, 0, 0, 0, 20, 0, 2, 1, 0, 0, 0, 0, 149,64, 4, 0, 0, 0, 0, 0, 33, 8, 0, 0, 0, 0, 0, 0, 80, 8, 4, 0, 0, 0, 0, 0, 16, 120,6, 0,
- 0, 0, 0, 0, 238,255,14, 2, 0, 0, 0, 0, 145,72, 8, 0, 0, 0, 0, 0, 145,12, 92, 0, 0, 0, 0, 0, 145,0, 12, 2, 0, 32, 0, 0, 3, 8, 4, 0,
- 0, 0, 0, 0, 17, 5, 20, 0, 0, 0, 0, 0, 29, 253,44, 2, 0, 0, 0, 0, 138,16, 0, 0, 0, 0, 0, 64, 0, 1, 4, 0, 0, 0, 0, 0, 128,132,0, 0,
- 0, 0, 0, 0, 17, 113,20, 1, 0, 0, 0, 0, 0, 48, 66, 0, 0, 0, 0, 0, 146,48, 10, 1, 0, 0, 0, 0, 64, 48, 80, 0, 0, 112,6, 0, 19, 18, 68, 0,
- 0, 0, 0, 0, 16, 96, 8, 3, 0, 0, 0, 0, 51, 249,4, 0, 0, 0, 0, 0, 16, 8, 16, 0, 0, 0, 0, 0, 177,237,12, 0, 0, 32, 0, 0, 121,255,78, 3,
- 0, 0, 0, 0, 73, 33, 2, 0, 0, 0, 0, 0, 17, 73, 2, 2, 0, 0, 0, 0, 4, 0, 128,1, 0, 0, 0, 0, 43, 13, 8, 1, 0, 0, 0, 0, 5, 28, 6, 0,
- 0, 0, 0, 0, 89, 65, 64, 1, 0, 0, 0, 0, 8, 48, 18, 0, 0, 0, 0, 0, 15, 24, 78, 1, 0, 0, 0, 0, 2, 32, 22, 1, 0, 32, 0, 0, 17, 97, 84, 0,
- 0, 32, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 202,52, 112,0, 0, 0, 0, 0, 129,172,8, 0, 0, 0, 0, 0, 119,253,110,3, 0, 0, 0, 0, 16, 64, 4, 1,
- 0, 0, 0, 0, 32, 0, 34, 0, 0, 0, 0, 0, 4, 60, 4, 0, 0, 0, 0, 0, 144,16, 36, 0, 0, 0, 0, 0, 17, 65, 12, 0, 0, 0, 0, 0, 1, 1, 32, 1,
- 0, 0, 0, 0, 148,76, 12, 0, 0, 0, 0, 0, 3, 32, 0, 0, 0, 0, 0, 0, 144,1, 0, 2, 0, 0, 0, 0, 147,45, 76, 2, 0, 0, 0, 0, 0, 12, 2, 1,
- 0, 0, 0, 0, 17, 105,0, 0, 0, 0, 0, 0, 149,105,26, 2, 0, 0, 0, 0, 16, 57, 0, 0, 0, 32, 0, 0, 17, 73, 96, 0, 0, 96, 44, 0, 206,60, 6, 0,
- 0, 0, 0, 0, 17, 137,0, 0, 0, 0, 0, 0, 158,249,76, 0, 0, 0, 0, 0, 205,96, 34, 1, 0, 8, 2, 0, 2, 16, 32, 0, 0, 0, 0, 0, 17, 89, 114,3,
- 0, 0, 0, 0, 78, 127,94, 3, 0, 0, 0, 0, 25, 5, 5, 0, 0, 0, 0, 0, 40, 8, 4, 0, 0, 0, 0, 0, 17, 81, 36, 0, 0, 0, 0, 0, 217,225,29, 0,
- 0, 0, 0, 0, 17, 5, 8, 0, 0, 0, 0, 0, 5, 1, 26, 0, 0, 0, 0, 0, 8, 57, 2, 1, 0, 0, 0, 0, 24, 56, 42, 0, 0, 0, 0, 0, 1, 10, 0, 0,
- 0, 0, 0, 0, 10, 127,62, 1, 0, 0, 0, 0, 42, 56, 22, 2, 0, 0, 0, 0, 128,48, 2, 0, 0, 0, 0, 0, 19, 72, 0, 0, 0, 0, 0, 0, 16, 8, 16, 1,
- 0, 0, 0, 0, 51, 89, 4, 1, 16, 0, 0, 0, 9, 112,70, 2, 16, 0, 0, 0, 64, 0, 8, 0, 0, 0, 0, 0, 238,172,126,0, 0, 0, 0, 0, 23, 25, 8, 1,
- 0, 0, 0, 0, 19, 73, 8, 2, 0, 0, 0, 0, 5, 100,6, 2, 0, 0, 0, 0, 144,72, 12, 2, 0, 0, 0, 0, 209,0, 0, 0, 0, 0, 0, 0, 127,253,110,2,
- 0, 0, 0, 0, 128,64, 18, 0, 0, 0, 0, 0, 0, 96, 64, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 32, 4, 0, 83, 211,6, 3, 0, 32, 0, 0, 130,24, 6, 1,
- 0, 0, 0, 0, 27, 56, 10, 0, 0, 112,45, 0, 2, 16, 4, 0, 0, 0, 0, 0, 119,104,24, 0, 0, 0, 0, 0, 18, 0, 76, 0, 0, 0, 0, 0, 0, 33, 18, 0,
- 0, 0, 0, 0, 66, 16, 76, 0, 0, 32, 0, 0, 0, 64, 8, 1, 0, 0, 0, 0, 16, 65, 4, 3, 0, 32, 0, 0, 23, 217,22, 2, 0, 32, 1, 0, 16, 8, 0, 1,
- 0, 0, 0, 0, 221,125,46, 3, 0, 0, 0, 0, 130,34, 14, 0, 0, 0, 0, 0, 8, 33, 2, 0, 16, 0, 0, 0, 19, 41, 14, 0, 0, 0, 0, 0, 192,20, 4, 0,
- 0, 0, 0, 0, 4, 16, 14, 0, 0, 32, 36, 0, 189,220,94, 0, 0, 32, 0, 0, 166,217,236,0, 0, 0, 0, 0, 0, 49, 2, 0, 0, 0, 0, 0, 3, 16, 10, 1,
- 0, 0, 0, 0, 22, 96, 4, 0, 0, 0, 0, 0, 145,93, 8, 0, 0, 0, 0, 0, 17, 97, 4, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 180,140,4, 0,
- 0, 0, 0, 0, 71, 253,126,1, 0, 0, 0, 0, 4, 44, 8, 0, 0, 0, 0, 0, 211,112,0, 0, 0, 0, 0, 0, 3, 40, 12, 0, 0, 0, 0, 0, 150,185,84, 0,
- 0, 0, 0, 0, 66, 32, 2, 1, 0, 0, 0, 0, 16, 0, 40, 0, 0, 0, 0, 0, 132,64, 8, 0, 0, 0, 0, 0, 18, 52, 8, 0, 0, 0, 0, 0, 9, 105,4, 0,
- 0, 0, 0, 0, 149,125,30, 2, 0, 0, 0, 0, 20, 33, 0, 0, 0, 32, 0, 0, 49, 61, 12, 1, 0, 0, 0, 0, 6, 48, 6, 0, 0, 0, 0, 0, 4, 52, 8, 0,
- 0, 0, 0, 0, 149,37, 12, 2, 0, 0, 0, 0, 66, 52, 0, 0, 0, 0, 0, 0, 16, 16, 68, 0, 0, 0, 0, 0, 5, 80, 16, 0, 0, 0, 0, 0, 145,105,6, 1,
- 0, 0, 0, 0, 16, 32, 64, 0, 0, 96, 8, 0, 132,4, 4, 0, 0, 0, 0, 0, 18, 16, 2, 0, 0, 8, 0, 0, 81, 69, 2, 0, 0, 0, 0, 0, 3, 16, 4, 0,
- 0, 0, 4, 0, 8, 4, 0, 0, 0, 0, 0, 2, 17, 67, 16, 1, 0, 0, 0, 0, 255,183,126,1, 0, 0, 0, 0, 6, 128,0, 0, 0, 32, 0, 0, 16, 33, 0, 0,
- 0, 0, 0, 0, 247,241,46, 3, 0, 0, 0, 0, 34, 52, 4, 0, 0, 0, 0, 0, 58, 48, 4, 0, 0, 0, 0, 0, 186,148,76, 0, 0, 0, 0, 0, 5, 80, 0, 0,
- 0, 32, 0, 0, 17, 149,0, 0, 0, 0, 0, 0, 9, 68, 0, 0, 0, 0, 0, 0, 37, 128,8, 0, 0, 0, 0, 0, 85, 176,12, 2, 0, 0, 0, 0, 17, 16, 4, 0,
- 0, 0, 0, 0, 2, 48, 106,0, 0, 0, 0, 0, 21, 68, 8, 0, 0, 0, 0, 0, 92, 37, 12, 0, 0, 0, 0, 0, 40, 4, 12, 0, 0, 0, 0, 0, 147,120,4, 0,
- 0, 0, 0, 0, 32, 128,4, 0, 0, 0, 0, 0, 158,245,62, 0, 0, 0, 0, 0, 36, 132,2, 0, 0, 0, 0, 0, 32, 129,0, 0, 0, 0, 0, 0, 16, 101,12, 0,
- 0, 0, 0, 0, 94, 53, 172,2, 0, 0, 0, 0, 0, 48, 36, 0, 0, 0, 0, 0, 144,0, 8, 2, 0, 72, 16, 0, 121,33, 0, 0, 0, 0, 0, 0, 19, 69, 56, 1,
- 0, 0, 0, 0, 119,140,58, 2, 0, 0, 0, 0, 18, 10, 0, 0, 0, 0, 0, 0, 148,133,4, 0, 0, 0, 0, 0, 50, 0, 4, 0, 0, 0, 0, 0, 159,137,94, 2,
- 0, 0, 0, 0, 44, 8, 4, 0, 0, 0, 0, 0, 116,232,44, 2, 0, 0, 0, 0, 16, 20, 6, 0, 0, 0, 0, 0, 32, 128,38, 0, 0, 32, 40, 0, 144,88, 4, 0,
- 0, 32, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 176,128,0, 0, 0, 0, 0, 0, 16, 136,4, 0, 0, 0, 0, 0, 62, 204,222,1, 0, 0, 0, 0, 25, 65, 4, 0,
- 0, 0, 0, 0, 14, 136,2, 0, 0, 0, 0, 0, 32, 132,0, 0, 0, 0, 0, 0, 16, 16, 4, 1, 0, 0, 0, 0, 32, 197,0, 0, 0, 0, 0, 0, 16, 129,2, 0,
- 0, 0, 0, 0, 144,64, 76, 0, 0, 0, 0, 0, 17, 41, 4, 0, 0, 0, 0, 0, 28, 136,12, 0, 0, 0, 0, 0, 16, 64, 48, 0, 0, 0, 0, 0, 144,0, 12, 2,
- 0, 0, 0, 0, 19, 73, 22, 3, 0, 0, 0, 0, 4, 36, 6, 1, 0, 80, 0, 0, 2, 40, 2, 0, 0, 0, 0, 0, 145,69, 20, 2, 0, 0, 0, 0, 18, 2, 0, 0,
- 0, 0, 0, 0, 145,29, 0, 0, 0, 0, 0, 0, 76, 61, 32, 0, 0, 0, 0, 0, 198,185,78, 0, 0, 0, 0, 0, 18, 8, 4, 2, 0, 0, 0, 0, 16, 49, 0, 0,
- 0, 0, 0, 0, 34, 16, 8, 0, 0, 0, 0, 0, 32, 164,4, 0, 0, 0, 0, 0, 2, 160,68, 0, 0, 0, 0, 0, 0, 2, 12, 2, 0, 0, 0, 0, 33, 89, 18, 0,
- 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 81, 121,22, 0, 0, 0, 0, 0, 0, 44, 10, 0, 0, 0, 0, 0, 146,17, 4, 0, 0, 0, 0, 0, 4, 44, 46, 2,
- 0, 0, 0, 0, 145,69, 20, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 12, 144,14, 0, 0, 0, 0, 0, 159,253,92, 1, 0, 0, 0, 0, 196,36, 78, 0,
- 0, 0, 0, 0, 128,38, 4, 0, 0, 0, 0, 0, 7, 36, 4, 0, 0, 0, 0, 0, 145,80, 0, 0, 0, 0, 0, 0, 17, 81, 2, 1, 0, 0, 0, 0, 110,180,38, 2,
- 0, 0, 0, 0, 144,0, 4, 2, 0, 0, 0, 0, 19, 249,20, 0, 0, 0, 0, 0, 8, 44, 10, 0, 0, 0, 0, 0, 127,119,78, 3, 0, 0, 0, 0, 0, 52, 10, 0,
- 0, 0, 0, 0, 36, 36, 40, 0, 0, 0, 0, 0, 84, 38, 12, 0, 0, 0, 0, 0, 16, 160,100,0, 0, 0, 0, 0, 1, 44, 4, 0, 0, 0, 0, 0, 70, 173,14, 1,
- 0, 0, 0, 0, 129,21, 0, 0, 0, 0, 0, 0, 84, 1, 12, 2, 0, 0, 0, 0, 53, 141,6, 0, 0, 32, 0, 0, 4, 40, 12, 1, 0, 0, 0, 0, 4, 44, 10, 0,
- 0, 0, 0, 0, 255,245,126,3, 0, 0, 0, 0, 6, 173,8, 0, 0, 0, 0, 0, 144,0, 16, 2, 0, 0, 0, 0, 1, 32, 76, 1, 0, 0, 0, 0, 242,177,6, 0,
- 0, 0, 0, 0, 4, 56, 32, 0, 0, 0, 0, 0, 145,24, 8, 0, 0, 0, 0, 0, 208,36, 18, 2, 0, 0, 0, 0, 151,93, 28, 3, 0, 0, 0, 0, 4, 44, 2, 0,
- 0, 0, 0, 0, 17, 5, 0, 1, 0, 0, 0, 0, 22, 100,10, 0, 0, 0, 0, 0, 32, 0, 102,0, 0, 0, 0, 0, 17, 81, 20, 0, 0, 0, 0, 0, 17, 69, 18, 1,
- 0, 0, 0, 0, 4, 4, 52, 0, 0, 32, 0, 0, 149,105,30, 3, 0, 0, 0, 0, 0, 164,98, 0, 0, 0, 0, 0, 107,44, 14, 1, 0, 0, 0, 0, 2, 8, 32, 0,
- 0, 0, 0, 0, 4, 77, 12, 0, 0, 0, 0, 0, 1, 37, 8, 1, 0, 0, 0, 0, 4, 8, 10, 0, 0, 0, 0, 0, 1, 105,8, 0, 0, 0, 0, 0, 28, 77, 4, 0,
- 0, 0, 0, 0, 128,0, 0, 3, 0, 0, 0, 0, 4, 0, 68, 0, 0, 0, 0, 0, 145,89, 16, 1, 0, 0, 0, 0, 0, 36, 10, 0, 0, 0, 0, 0, 21, 100,4, 0,
- 0, 0, 0, 0, 4, 17, 128,1, 0, 0, 32, 0, 17, 101,22, 3, 0, 0, 0, 0, 255,191,124,3, 0, 0, 0, 0, 66, 144,8, 0, 0, 0, 0, 0, 144,0, 24, 0,
- 0, 0, 0, 0, 20, 97, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 19, 177,0, 0, 0, 0, 0, 0, 85, 67, 76, 2, 0, 0, 0, 0, 17, 109,4, 2,
- 0, 0, 0, 0, 8, 0, 64, 1, 0, 0, 0, 0, 0, 32, 40, 0, 0, 0, 0, 0, 4, 68, 8, 2, 0, 0, 0, 0, 36, 0, 68, 0, 0, 0, 0, 0, 144,20, 4, 2,
- 0, 0, 0, 0, 247,191,124,1, 0, 0, 0, 0, 64, 16, 8, 0, 0, 0, 0, 0, 72, 48, 12, 0, 0, 0, 0, 0, 150,24, 4, 0, 0, 0, 0, 0, 16, 152,4, 0,
- 0, 0, 0, 0, 24, 37, 8, 2, 0, 0, 0, 0, 193,5, 4, 1, 0, 0, 0, 0, 4, 8, 4, 2, 0, 0, 0, 0, 64, 8, 12, 2, 0, 0, 0, 0, 18, 33, 0, 0,
- 0, 0, 0, 0, 94, 252,44, 3, 0, 0, 0, 0, 160,4, 0, 0, 0, 0, 0, 0, 66, 36, 14, 0, 0, 0, 0, 0, 80, 68, 4, 0, 0, 32, 0, 0, 144,148,12, 0,
- 0, 0, 0, 0, 17, 49, 16, 0, 0, 32, 0, 0, 72, 48, 0, 0, 0, 0, 0, 0, 17, 75, 0, 1, 0, 0, 0, 0, 16, 44, 0, 0, 0, 32, 0, 0, 17, 32, 0, 0,
- 0, 32, 0, 0, 17, 4, 0, 0, 0, 0, 0, 0, 32, 168,0, 0, 0, 0, 0, 0, 16, 1, 8, 2, 0, 0, 0, 0, 246,253,125,1, 0, 0, 0, 0, 194,60, 12, 2,
- 0, 0, 0, 0, 144,16, 4, 0, 0, 0, 0, 0, 5, 9, 0, 0, 0, 0, 0, 0, 16, 148,2, 0, 0, 0, 0, 0, 27, 69, 4, 0, 0, 0, 0, 0, 32, 193,0, 0,
- 0, 0, 0, 0, 132,32, 12, 0, 0, 0, 0, 0, 64, 128,12, 0, 0, 0, 0, 0, 92, 159,12, 3, 0, 0, 0, 0, 66, 24, 10, 0, 0, 0, 0, 0, 2, 0, 4, 2,
- 0, 0, 0, 0, 146,25, 102,0, 0, 0, 0, 0, 1, 133,4, 0, 0, 0, 0, 0, 148,68, 12, 2, 0, 0, 0, 0, 0, 48, 32, 0, 0, 0, 0, 0, 72, 168,44, 2,
- 0, 0, 0, 0, 128,9, 8, 0, 0, 0, 0, 0, 4, 16, 68, 0, 0, 0, 0, 0, 0, 52, 68, 2, 0, 32, 0, 0, 145,1, 94, 3, 0, 0, 0, 0, 132,58, 58, 1,
- 0, 0, 0, 0, 18, 2, 128,0, 0, 0, 1, 0, 0, 0, 128,0, 0, 0, 0, 0, 255,255,78, 3, 0, 0, 0, 0, 0, 61, 10, 0, 0, 0, 0, 0, 64, 64, 8, 0,
- 0, 0, 0, 0, 17, 73, 22, 0, 0, 0, 0, 0, 21, 44, 12, 0, 0, 0, 0, 0, 17, 4, 0, 2, 0, 0, 0, 0, 145,5, 16, 2, 0, 0, 0, 0, 17, 25, 8, 0,
- 0, 0, 0, 0, 17, 72, 18, 2, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 0, 0, 0, 105,0, 0, 0, 0, 0, 0, 134,181,14, 0, 0, 0, 0, 0, 0, 32, 4, 3,
- 0, 0, 0, 0, 49, 32, 6, 0, 0, 0, 0, 0, 25, 40, 14, 0, 0, 0, 0, 0, 16, 12, 4, 0, 0, 0, 0, 0, 4, 136,8, 2, 0, 0, 0, 0, 0, 12, 72, 0,
- 0, 0, 0, 0, 17, 73, 20, 0, 0, 0, 0, 0, 128,1, 18, 0, 0, 0, 0, 0, 151,223,76, 2, 0, 0, 0, 0, 68, 4, 4, 0, 0, 0, 0, 0, 129,0, 0, 2,
- 0, 0, 0, 0, 1, 17, 16, 1, 0, 0, 0, 0, 51, 153,3, 0, 0, 0, 0, 0, 0, 120,6, 0, 0, 32, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 129,9, 0, 0,
- 0, 0, 0, 0, 93, 93, 76, 2, 0, 0, 0, 0, 17, 9, 26, 0, 0, 0, 0, 0, 68, 112,4, 1, 0, 0, 0, 0, 148,16, 8, 0, 0, 0, 0, 0, 145,24, 32, 0,
- 0, 0, 0, 0, 0, 156,0, 0, 0, 0, 0, 0, 53, 133,6, 0, 0, 0, 0, 0, 127,237,94, 3, 0, 0, 0, 0, 0, 1, 4, 3, 0, 0, 0, 0, 0, 12, 8, 0,
- 0, 0, 0, 0, 213,8, 12, 0, 0, 0, 0, 0, 136,4, 68, 0, 0, 0, 0, 0, 133,4, 8, 0, 0, 0, 0, 0, 149,65, 24, 3, 0, 0, 0, 0, 0, 164,44, 0,
- 0, 0, 0, 0, 0, 65, 64, 1, 0, 0, 0, 0, 149,37, 28, 2, 0, 0, 0, 0, 1, 45, 0, 0, 0, 0, 0, 0, 149,41, 28, 3, 0, 0, 0, 0, 17, 40, 0, 1,
- 0, 0, 0, 0, 136,33, 0, 0, 0, 0, 0, 0, 3, 132,0, 0, 0, 0, 0, 0, 17, 49, 0, 1, 0, 0, 0, 0, 16, 152,10, 0, 0, 0, 0, 0, 4, 183,14, 2,
- 0, 0, 0, 0, 25, 44, 8, 0, 0, 0, 0, 0, 16, 4, 16, 0, 0, 0, 0, 0, 211,255,30, 2, 0, 32, 0, 0, 16, 0, 6, 0, 0, 0, 0, 0, 4, 36, 8, 0,
- 0, 0, 0, 0, 0, 5, 20, 0, 16, 252,18, 0, 255,255,252,3, 0, 0, 0, 0, 6, 49, 55, 0, 0, 0, 0, 0, 69, 40, 189,0, 0, 0, 0, 0, 16, 128,18, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 36, 12, 0, 0, 0, 0, 0, 27, 77, 30, 1, 0, 0, 0, 0, 10, 48, 26, 1, 0, 0, 0, 0, 66, 64, 2, 0,
- 0, 0, 0, 0, 1, 88, 2, 0, 0, 0, 0, 0, 80, 49, 54, 1, 0, 0, 0, 0, 25, 33, 4, 0, 0, 0, 0, 0, 8, 36, 8, 0, 0, 0, 0, 0, 20, 0, 1, 0,
- 0, 0, 0, 0, 128,4, 1, 0, 0, 0, 0, 0, 0, 48, 0, 3, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 145,93, 31, 3, 0, 0, 0, 0, 0, 33, 60, 3,
- 0, 0, 0, 0, 40, 4, 70, 1, 0, 0, 0, 0, 25, 0, 8, 0, 0, 0, 0, 0, 0, 161,10, 0, 0, 0, 0, 0, 17, 121,4, 0, 0, 0, 0, 0, 68, 48, 54, 1,
- 0, 0, 0, 0, 27, 121,92, 1, 0, 64, 0, 0, 66, 36, 68, 1, 0, 0, 0, 0, 11, 40, 70, 0, 0, 0, 0, 0, 64, 32, 16, 0, 0, 32, 0, 0, 106,24, 12, 0,
- 0, 0, 0, 0, 192,24, 46, 0, 0, 0, 0, 0, 49, 77, 18, 0, 0, 0, 0, 0, 4, 32, 62, 1, 0, 0, 0, 0, 0, 16, 34, 0, 0, 0, 0, 0, 17, 32, 10, 0,
- 0, 0, 0, 0, 16, 104,22, 1, 0, 0, 0, 0, 92, 0, 10, 0, 0, 0, 0, 0, 0, 48, 8, 2, 0, 0, 0, 0, 81, 121,86, 0, 0, 0, 0, 0, 12, 48, 14, 2,
- 0, 0, 0, 0, 65, 0, 8, 0, 0, 0, 0, 0, 98, 16, 5, 0, 0, 0, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 0, 96, 72, 0, 0, 0, 0, 0, 17, 113,26, 0,
- 0, 0, 0, 0, 0, 130,10, 0, 0, 0, 0, 0, 0, 48, 18, 0, 0, 0, 0, 0, 78, 236,14, 2, 0, 0, 0, 0, 208,64, 12, 0, 0, 0, 0, 0, 8, 16, 4, 1,
- 0, 0, 0, 0, 17, 192,16, 2, 0, 0, 0, 0, 0, 41, 4, 1, 0, 0, 0, 0, 145,113,4, 1, 0, 0, 0, 0, 178,57, 110,1, 0, 0, 0, 0, 136,0, 0, 1,
- 0, 0, 0, 0, 17, 32, 12, 0, 0, 0, 0, 0, 32, 0, 72, 0, 0, 0, 0, 0, 17, 77, 16, 0, 0, 32, 0, 0, 0, 44, 8, 0, 0, 0, 0, 0, 6, 112,8, 0,
- 0, 0, 0, 0, 129,128,0, 0, 0, 0, 0, 0, 59, 213,20, 1, 0, 0, 0, 0, 77, 33, 142,3, 0, 0, 0, 0, 69, 33, 8, 0, 0, 0, 0, 0, 4, 4, 15, 0,
- 0, 0, 0, 0, 29, 77, 30, 0, 0, 0, 0, 0, 5, 0, 14, 1, 0, 32, 0, 0, 128,65, 52, 1, 0, 32, 0, 0, 0, 0, 18, 1, 0, 32, 0, 0, 16, 0, 4, 3,
- 0, 0, 0, 0, 21, 33, 6, 0, 0, 0, 0, 0, 20, 0, 10, 0, 0, 0, 0, 0, 0, 97, 30, 0, 0, 0, 0, 0, 8, 1, 12, 0, 0, 0, 0, 0, 81, 0, 8, 0,
- 0, 0, 0, 0, 145,221,30, 0, 0, 0, 0, 0, 253,245,61, 3, 0, 0, 0, 0, 192,65, 30, 0, 0, 0, 0, 0, 145,73, 12, 2, 0, 32, 0, 0, 0, 72, 14, 1,
- 0, 0, 0, 0, 243,93, 127,1, 0, 0, 0, 0, 4, 36, 48, 2, 0, 0, 0, 0, 40, 32, 38, 1, 0, 0, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 44, 98, 0,
- 0, 0, 0, 0, 0, 32, 44, 1, 0, 0, 0, 0, 151,28, 8, 0, 0, 0, 0, 0, 201,40, 108,1, 0, 0, 0, 0, 251,253,94, 0, 0, 0, 32, 0, 160,40, 34, 0,
- 0, 0, 0, 0, 186,0, 0, 0, 0, 0, 0, 0, 153,0, 8, 0, 0, 0, 0, 0, 81, 32, 24, 0, 0, 0, 0, 0, 49, 0, 4, 1, 0, 0, 0, 0, 0, 48, 0, 1,
- 0, 0, 0, 0, 0, 1, 22, 0, 0, 0, 0, 0, 59, 69, 0, 0, 0, 0, 0, 0, 209,65, 10, 2, 0, 0, 0, 0, 96, 32, 16, 0, 0, 0, 0, 0, 32, 8, 2, 0,
- 0, 0, 0, 0, 73, 33, 14, 2, 0, 0, 0, 0, 153,201,94, 0, 0, 0, 0, 0, 72, 40, 10, 0, 0, 0, 0, 0, 16, 44, 10, 1, 0, 0, 0, 0, 25, 40, 12, 0,
- 0, 0, 1, 0, 4, 9, 2, 0, 0, 0, 0, 0, 223,245,126,3, 0, 0, 0, 0, 86, 49, 108,0, 0, 0, 0, 0, 17, 97, 0, 1, 0, 0, 0, 0, 89, 52, 68, 3,
- 0, 0, 0, 0, 13, 112,172,2, 0, 0, 0, 0, 20, 33, 93, 0, 0, 0, 0, 0, 132,4, 1, 0, 0, 0, 0, 0, 2, 41, 0, 0, 0, 0, 0, 0, 22, 16, 52, 0,
- 0, 0, 0, 0, 0, 0, 69, 0, 0, 160,0, 0, 66, 0, 68, 0, 0, 0, 0, 0, 149,205,124,3, 0, 0, 0, 0, 64, 41, 12, 0, 0, 0, 0, 0, 4, 40, 10, 0,
- 0, 32, 0, 0, 8, 34, 4, 0, 0, 0, 0, 0, 19, 93, 80, 0, 0, 0, 0, 0, 0, 32, 80, 1, 0, 0, 0, 0, 0, 100,8, 0, 0, 0, 0, 0, 17, 77, 80, 0,
- 0, 0, 0, 0, 0, 41, 14, 0, 0, 4, 0, 0, 20, 89, 30, 0, 0, 0, 0, 0, 4, 32, 32, 0, 0, 0, 0, 0, 213,101,62, 3, 0, 0, 0, 0, 0, 53, 7, 0,
- 0, 0, 0, 0, 20, 40, 134,0, 0, 0, 0, 0, 28, 1, 8, 0, 0, 0, 0, 0, 1, 1, 4, 2, 0, 0, 0, 0, 0, 9, 20, 0, 0, 0, 0, 0, 101,116,28, 0,
- 0, 0, 0, 0, 0, 32, 22, 1, 0, 0, 0, 0, 17, 33, 18, 1, 0, 0, 0, 0, 68, 48, 0, 0, 0, 0, 0, 0, 126,189,238,2, 0, 0, 0, 0, 145,0, 4, 1,
- 0, 0, 0, 0, 10, 32, 8, 0, 0, 0, 0, 0, 10, 16, 0, 0, 0, 0, 0, 0, 19, 121,14, 0, 0, 0, 0, 0, 29, 1, 8, 0, 0, 96, 0, 0, 6, 40, 4, 0,
- 0, 0, 0, 0, 17, 40, 8, 1, 0, 32, 0, 0, 29, 65, 12, 2, 0, 0, 0, 0, 9, 1, 16, 0, 0, 0, 0, 0, 29, 120,12, 0, 0, 0, 0, 0, 1, 64, 4, 2,
- 0, 0, 0, 0, 145,113,26, 2, 0, 0, 0, 0, 81, 65, 2, 3, 0, 0, 0, 0, 76, 40, 12, 0, 0, 0, 0, 0, 12, 1, 72, 0, 0, 0, 0, 0, 21, 40, 14, 3,
- 0, 0, 0, 0, 24, 1, 8, 0, 0, 0, 0, 0, 89, 32, 10, 1, 0, 0, 0, 0, 80, 96, 4, 0, 0, 0, 0, 0, 4, 41, 2, 1, 0, 0, 0, 0, 89, 33, 0, 0,
- 0, 0, 0, 0, 191,57, 110,1, 0, 0, 0, 0, 17, 32, 0, 1, 0, 0, 0, 0, 14, 17, 12, 0, 0, 0, 0, 0, 17, 17, 12, 0, 0, 0, 0, 0, 189,249,60, 0,
- 0, 0, 0, 0, 32, 0, 48, 0, 0, 64, 0, 0, 21, 73, 16, 3, 0, 0, 0, 0, 28, 65, 30, 2, 64, 0, 0, 0, 165,160,44, 1, 0, 0, 0, 0, 48, 2, 0, 0,
- 0, 0, 2, 0, 1, 0, 4, 0, 0, 0, 0, 0, 238,253,46, 2, 0, 0, 0, 0, 50, 89, 36, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, 0, 0, 20, 16, 0, 1,
- 0, 0, 0, 0, 25, 97, 4, 2, 0, 0, 0, 0, 176,1, 12, 0, 0, 0, 0, 0, 8, 50, 0, 1, 0, 0, 0, 0, 145,69, 24, 1, 0, 0, 0, 0, 136,0, 6, 0,
- 0, 32, 32, 0, 162,16, 68, 1, 0, 0, 0, 0, 8, 56, 6, 0, 0, 0, 0, 0, 80, 1, 68, 0, 0, 0, 0, 0, 128,32, 18, 0, 0, 0, 0, 0, 64, 65, 2, 0,
- 0, 0, 0, 0, 16, 40, 114,0, 0, 0, 0, 0, 128,0, 1, 0, 0, 0, 0, 0, 149,77, 26, 3, 0, 0, 0, 0, 17, 57, 16, 0, 0, 0, 0, 0, 2, 17, 0, 1,
- 0, 0, 0, 0, 4, 48, 19, 0, 0, 0, 0, 0, 22, 32, 14, 2, 0, 32, 0, 0, 191,188,126,2, 0, 0, 0, 0, 19, 80, 32, 0, 0, 0, 0, 0, 53, 76, 26, 0,
- 0, 0, 0, 0, 2, 8, 96, 0, 0, 0, 0, 0, 16, 0, 50, 0, 0, 0, 1, 0, 144,81, 70, 1, 0, 0, 0, 0, 213,121,86, 2, 0, 0, 0, 0, 5, 40, 30, 2,
- 0, 96, 0, 0, 17, 0, 6, 0, 0, 0, 0, 0, 19, 64, 12, 0, 0, 0, 0, 0, 32, 24, 22, 0, 0, 0, 0, 0, 0, 32, 76, 0, 0, 32, 0, 0, 144,0, 0, 0,
- 0, 0, 0, 0, 19, 115,10, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 48, 21, 0, 0, 0, 0, 0, 0, 255,190,174,0, 0, 0, 0, 0, 49, 112,4, 1,
- 0, 0, 0, 0, 145,1, 0, 1, 0, 32, 0, 0, 1, 8, 8, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 211,65, 68, 0, 0, 0, 0, 0, 144,64, 0, 2,
- 0, 0, 0, 0, 149,41, 28, 1, 0, 0, 0, 0, 149,48, 10, 2, 0, 0, 0, 0, 17, 16, 16, 0, 0, 0, 0, 0, 19, 69, 72, 0, 0, 0, 0, 0, 23, 253,16, 0,
- 0, 0, 0, 0, 0, 33, 6, 1, 0, 0, 0, 0, 20, 68, 2, 0, 0, 0, 0, 0, 5, 40, 2, 0, 0, 0, 0, 0, 20, 32, 6, 0, 0, 0, 0, 0, 0, 97, 4, 1,
- 0, 32, 0, 0, 153,9, 12, 1, 0, 64, 0, 0, 255,109,28, 3, 0, 96, 0, 0, 128,128,66, 0, 0, 0, 0, 0, 16, 73, 14, 0, 0, 0, 0, 0, 17, 8, 24, 1,
- 0, 0, 0, 0, 16, 0, 68, 1, 0, 0, 0, 0, 208,96, 156,0, 0, 0, 1, 0, 4, 33, 178,0, 0, 0, 0, 0, 25, 0, 24, 0, 0, 32, 0, 0, 42, 184,14, 0,
- 0, 32, 0, 0, 215,193,8, 0, 0, 0, 0, 0, 1, 8, 12, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 21, 237,30, 0, 0, 0, 0, 0, 64, 36, 2, 0,
- 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 0, 17, 13, 0, 0, 0, 0, 0, 0, 21, 241,218,0, 0, 64, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 4, 33, 80, 1,
- 0, 0, 0, 0, 151,253,28, 3, 0, 0, 0, 0, 17, 121,0, 0, 0, 0, 0, 0, 16, 160,2, 1, 16, 0, 0, 0, 159,93, 14, 2, 0, 32, 0, 0, 64, 65, 4, 0,
- 0, 240,47, 0, 0, 96, 0, 0, 0, 64, 0, 0, 32, 0, 16, 0, 0, 0, 0, 0, 108,193,4, 0, 0, 0, 0, 0, 17, 17, 22, 1, 0, 0, 0, 0, 146,157,4, 0,
- 0, 0, 0, 0, 215,180,46, 3, 0, 0, 0, 0, 144,32, 64, 1, 0, 0, 0, 0, 8, 40, 14, 1, 0, 0, 0, 0, 72, 1, 12, 0, 0, 0, 0, 0, 32, 0, 68, 0,
- 0, 0, 0, 0, 20, 41, 15, 1, 0, 32, 1, 0, 144,73, 4, 0, 0, 0, 0, 0, 216,0, 12, 0, 0, 0, 0, 0, 64, 64, 9, 0, 0, 0, 0, 0, 21, 32, 12, 0,
- 0, 0, 0, 0, 21, 65, 14, 3, 0, 0, 0, 0, 12, 32, 0, 1, 0, 0, 0, 0, 29, 17, 10, 1, 0, 32, 0, 0, 146,64, 40, 0, 0, 0, 0, 0, 17, 17, 152,0,
- 0, 0, 0, 0, 20, 36, 4, 0, 0, 160,0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 155,56, 62, 0, 0, 0, 0, 0, 136,129,0, 1, 0, 64, 0, 0, 2, 164,0, 0,
- 0, 0, 0, 0, 51, 64, 16, 0, 16, 0, 0, 0, 255,255,127,3, 0, 0, 0, 0, 2, 245,71, 0, 0, 0, 0, 0, 81, 96, 0, 0, 0, 0, 0, 0, 19, 85, 30, 1,
- 0, 0, 0, 0, 24, 0, 10, 1, 0, 0, 0, 0, 25, 81, 8, 0, 0, 96, 40, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 64, 44, 0, 0, 0, 0, 0, 149,69, 16, 0,
- 0, 0, 0, 0, 0, 40, 58, 0, 0, 0, 0, 0, 49, 76, 12, 0, 0, 0, 0, 0, 34, 0, 68, 0, 0, 32, 4, 0, 176,185,12, 0, 0, 0, 0, 0, 8, 16, 10, 1,
- 0, 0, 0, 0, 91, 77, 12, 2, 0, 0, 0, 0, 238,180,126,2, 0, 0, 0, 0, 149,93, 6, 0, 0, 0, 0, 0, 18, 4, 8, 1, 0, 0, 0, 0, 216,4, 4, 0,
- 0, 0, 0, 0, 0, 24, 4, 2, 0, 0, 0, 0, 20, 28, 44, 0, 0, 0, 0, 0, 0, 64, 16, 2, 0, 0, 0, 0, 49, 72, 12, 0, 0, 0, 0, 0, 230,9, 14, 0,
- 0, 0, 0, 0, 1, 192,24, 0, 0, 0, 0, 0, 18, 65, 4, 0, 0, 0, 0, 0, 209,121,16, 0, 0, 0, 0, 0, 16, 48, 12, 0, 0, 96, 0, 0, 182,57, 68, 1,
- 0, 32, 0, 0, 145,128,0, 0, 0, 32, 0, 0, 9, 57, 76, 0, 0, 0, 0, 0, 31, 95, 74, 1, 0, 0, 0, 0, 17, 128,24, 1, 0, 0, 0, 0, 10, 32, 0, 0,
- 0, 0, 0, 0, 17, 193,0, 1, 0, 0, 0, 0, 146,4, 6, 1, 0, 0, 0, 0, 87, 128,4, 0, 0, 0, 0, 0, 10, 0, 1, 0, 0, 0, 0, 0, 23, 253,8, 0,
- 0, 0, 0, 0, 66, 160,54, 0, 0, 0, 0, 0, 17, 65, 22, 0, 0, 0, 0, 0, 128,8, 70, 1, 0, 0, 0, 0, 64, 40, 20, 0, 0, 0, 0, 0, 26, 65, 4, 0,
- 0, 0, 0, 0, 255,127,253,2, 0, 0, 0, 0, 132,52, 2, 0, 0, 0, 0, 0, 243,121,71, 3, 0, 32, 0, 0, 135,24, 20, 0, 0, 0, 0, 0, 16, 72, 16, 0,
- 0, 0, 0, 0, 34, 144,64, 0, 0, 0, 0, 0, 128,24, 12, 0, 0, 0, 0, 0, 17, 12, 8, 1, 0, 0, 0, 0, 203,52, 94, 0, 0, 0, 0, 0, 243,237,18, 0,
- 0, 0, 0, 0, 40, 88, 2, 1, 0, 0, 0, 0, 32, 40, 2, 0, 0, 0, 0, 0, 145,77, 4, 0, 0, 0, 0, 0, 0, 160,112,0, 0, 0, 0, 0, 5, 56, 10, 1,
- 0, 0, 0, 0, 29, 109,12, 0, 0, 0, 0, 0, 144,96, 4, 2, 0, 0, 0, 0, 0, 32, 26, 0, 0, 32, 0, 0, 146,4, 12, 0, 0, 32, 0, 0, 72, 0, 0, 0,
- 0, 0, 0, 0, 177,245,12, 0, 0, 0, 0, 0, 0, 144,36, 0, 0, 0, 0, 0, 145,81, 4, 1, 0, 0, 0, 0, 148,69, 8, 2, 0, 0, 0, 0, 0, 36, 96, 0,
- 0, 0, 0, 0, 32, 0, 24, 0, 0, 0, 0, 0, 151,221,28, 3, 0, 48, 4, 0, 3, 56, 0, 0, 0, 0, 0, 0, 20, 0, 24, 0, 0, 0, 0, 0, 0, 160,64, 0,
- 0, 0, 0, 0, 151,125,126,2, 0, 0, 0, 0, 33, 16, 0, 0, 0, 0, 0, 0, 134,96, 134,0, 0, 0, 0, 0, 5, 0, 16, 0, 0, 0, 0, 0, 49, 89, 6, 1,
- 0, 32, 0, 0, 250,210,78, 0, 0, 0, 0, 0, 8, 4, 8, 2, 0, 0, 0, 0, 17, 105,38, 1, 0, 0, 0, 0, 60, 106,70, 2, 0, 0, 0, 0, 160,32, 0, 0,
- 0, 0, 0, 0, 17, 177,84, 1, 0, 0, 0, 0, 73, 96, 16, 0, 0, 0, 16, 0, 19, 65, 0, 2, 0, 64, 0, 0, 2, 116,34, 0, 0, 32, 0, 0, 1, 69, 4, 0,
- 0, 0, 0, 0, 134,4, 146,0, 0, 4, 0, 0, 23, 73, 80, 1, 0, 0, 0, 0, 121,64, 40, 0, 0, 0, 0, 0, 1, 0, 66, 0, 0, 0, 0, 0, 2, 1, 66, 1,
- 0, 0, 0, 0, 10, 193,6, 1, 0, 0, 0, 0, 33, 128,0, 0, 0, 0, 0, 0, 44, 49, 42, 0, 0, 0, 0, 0, 128,16, 4, 0, 0, 0, 0, 0, 27, 105,22, 2,
- 0, 0, 0, 0, 4, 40, 28, 0, 0, 0, 0, 0, 8, 40, 6, 2, 0, 0, 0, 0, 153,69, 20, 1, 0, 0, 0, 0, 145,105,14, 0, 0, 0, 0, 0, 155,251,86, 1,
- 0, 0, 0, 0, 8, 48, 10, 1, 0, 0, 0, 0, 2, 16, 6, 1, 0, 0, 0, 0, 128,24, 0, 0, 0, 0, 0, 0, 217,65, 82, 2, 0, 0, 0, 0, 0, 33, 66, 0,
- 0, 0, 0, 0, 8, 128,6, 0, 0, 0, 0, 0, 230,160,126,2, 0, 0, 0, 0, 1, 0, 72, 2, 0, 0, 0, 0, 97, 89, 79, 0, 0, 0, 0, 0, 144,81, 20, 1,
- 0, 0, 0, 0, 215,75, 86, 0, 0, 96, 2, 0, 0, 64, 4, 0, 0, 0, 0, 0, 21, 32, 28, 0, 0, 0, 0, 0, 32, 40, 20, 0, 0, 32, 0, 0, 25, 112,78, 0,
- 0, 0, 0, 0, 13, 44, 14, 0, 0, 0, 0, 0, 145,213,16, 0, 0, 0, 0, 0, 16, 2, 8, 0, 0, 32, 2, 0, 1, 253,72, 2, 0, 0, 0, 0, 16, 160,4, 0,
- 0, 0, 0, 0, 0, 152,128,0, 0, 0, 0, 0, 83, 209,16, 2, 0, 0, 0, 0, 68, 32, 134,1, 0, 0, 0, 0, 0, 65, 4, 1, 0, 0, 0, 0, 8, 40, 0, 2,
- 0, 0, 0, 0, 9, 64, 8, 0, 0, 0, 0, 0, 93, 105,12, 2, 0, 0, 0, 0, 1, 97, 2, 0, 0, 112,32, 0, 24, 64, 0, 0, 0, 0, 0, 0, 0, 8, 70, 1,
- 0, 0, 0, 0, 191,255,126,1, 0, 0, 0, 0, 6, 36, 0, 0, 0, 0, 0, 0, 1, 0, 72, 0, 0, 0, 0, 0, 8, 32, 38, 0, 0, 0, 0, 0, 48, 224,12, 0,
- 0, 0, 0, 0, 65, 0, 0, 1, 0, 0, 0, 0, 136,0, 72, 0, 0, 0, 0, 0, 8, 1, 64, 0, 0, 0, 0, 0, 118,253,14, 0, 0, 0, 0, 0, 3, 0, 8, 0,
- 0, 0, 0, 0, 10, 8, 8, 0, 0, 0, 0, 0, 80, 1, 4, 1, 0, 0, 0, 0, 144,1, 4, 1, 0, 0, 0, 0, 17, 201,22, 2, 0, 0, 0, 0, 0, 0, 30, 2,
- 0, 0, 0, 0, 12, 64, 0, 0, 0, 0, 0, 0, 0, 16, 6, 3, 0, 0, 0, 0, 95, 117,31, 3, 0, 0, 0, 0, 128,41, 4, 0, 0, 0, 0, 0, 89, 56, 12, 1,
- 0, 0, 0, 0, 21, 0, 12, 2, 0, 0, 0, 0, 1, 64, 8, 2, 0, 0, 0, 0, 21, 124,12, 0, 0, 0, 0, 0, 93, 64, 0, 0, 0, 0, 0, 0, 183,101,12, 2,
- 0, 0, 0, 0, 12, 32, 34, 0, 0, 0, 0, 0, 20, 36, 14, 1, 0, 96, 0, 0, 0, 4, 4, 0, 0, 0, 1, 0, 18, 72, 70, 0, 0, 0, 0, 0, 147,1, 30, 2,
- 0, 0, 0, 0, 129,192,0, 0, 0, 32, 0, 0, 95, 173,239,0, 0, 0, 0, 0, 16, 121,4, 1, 0, 0, 0, 0, 19, 56, 10, 0, 0, 32, 0, 0, 19, 1, 36, 0,
- 0, 0, 0, 0, 25, 97, 0, 1, 0, 0, 0, 0, 117,65, 36, 0, 0, 0, 0, 0, 67, 40, 12, 0, 0, 240,63, 0, 255,251,30, 3, 0, 240,3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 16, 16, 1, 0, 0, 0, 0, 133,64, 2, 0, 0, 0, 0, 0, 4, 0, 34, 0, 0, 96, 4, 0, 75, 113,6, 0, 0, 32, 0, 0, 17, 209,28, 1,
- 0, 0, 0, 0, 64, 72, 4, 0, 0, 0, 0, 0, 159,61, 14, 1, 0, 0, 0, 0, 0, 44, 6, 0, 0, 0, 0, 0, 20, 17, 4, 1, 0, 0, 0, 0, 24, 16, 0, 0,
- 0, 0, 0, 0, 31, 96, 4, 0, 0, 0, 0, 0, 17, 97, 0, 2, 0, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 9, 1, 92, 0, 0, 4, 0, 0, 140,12, 8, 1,
- 0, 4, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 64, 0, 8, 0, 0, 32, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 68, 168,22, 0, 0, 0, 0, 0, 73, 32, 4, 0,
- 0, 0, 0, 0, 1, 0, 134,0, 0, 0, 0, 0, 19, 93, 18, 1, 0, 0, 0, 0, 132,0, 98, 0, 0, 0, 0, 0, 0, 16, 68, 0, 0, 0, 0, 0, 149,69, 18, 3,
- 0, 32, 0, 0, 161,0, 4, 0, 0, 0, 0, 0, 1, 36, 2, 1, 0, 0, 0, 0, 61, 108,28, 0, 0, 0, 0, 0, 145,113,6, 1, 0, 0, 0, 0, 24, 32, 10, 1,
- 0, 224,63, 0, 14, 80, 4, 1, 0, 32, 0, 0, 12, 8, 0, 0, 0, 0, 0, 0, 1, 4, 0, 1, 0, 0, 0, 0, 217,93, 120,1, 0, 0, 0, 0, 4, 52, 66, 0,
- 0, 0, 0, 0, 20, 32, 32, 0, 0, 0, 0, 0, 64, 8, 32, 0, 0, 0, 0, 0, 130,8, 0, 0, 0, 0, 0, 0, 206,172,46, 0, 0, 0, 0, 0, 3, 4, 2, 0,
- 0, 0, 0, 0, 130,64, 0, 0, 0, 0, 0, 0, 16, 5, 8, 0, 0, 0, 0, 0, 4, 16, 2, 0, 0, 0, 0, 0, 136,20, 8, 0, 0, 0, 1, 0, 160,0, 68, 0,
- 0, 0, 0, 0, 217,97, 4, 0, 0, 0, 0, 0, 68, 36, 12, 2, 0, 32, 0, 0, 49, 65, 0, 0, 0, 0, 0, 0, 0, 130,0, 0, 0, 0, 0, 0, 4, 32, 44, 0,
- 0, 32, 0, 0, 128,5, 0, 2, 0, 32, 0, 0, 128,32, 70, 0, 0, 0, 0, 0, 17, 73, 80, 0, 0, 0, 0, 0, 32, 32, 64, 0, 0, 0, 0, 0, 19, 153,20, 0,
- 0, 32, 0, 0, 0, 19, 8, 1, 0, 0, 0, 0, 17, 32, 128,0, 0, 0, 0, 0, 16, 132,20, 1, 0, 0, 0, 0, 125,37, 12, 2, 0, 0, 0, 0, 18, 1, 10, 0,
- 0, 0, 0, 0, 211,17, 39, 1, 0, 0, 0, 0, 16, 72, 16, 1, 0, 0, 0, 0, 82, 56, 2, 0, 0, 0, 0, 0, 3, 48, 42, 0, 0, 0, 0, 0, 177,0, 70, 0,
- 0, 0, 0, 0, 0, 50, 8, 1, 0, 0, 0, 0, 49, 197,24, 0, 0, 0, 0, 0, 85, 13, 42, 3, 0, 0, 0, 0, 25, 32, 0, 0, 0, 0, 0, 0, 151,69, 12, 0,
- 0, 0, 0, 0, 50, 1, 6, 1, 0, 0, 0, 0, 245,86, 78, 3, 0, 0, 0, 0, 16, 80, 6, 0, 0, 64, 0, 0, 50, 129,4, 0, 0, 0, 4, 0, 48, 0, 0, 0,
- 0, 64, 0, 0, 16, 80, 24, 0, 0, 0, 0, 0, 10, 83, 0, 0, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 0, 0, 127,125,62, 0, 0, 0, 0, 0, 0, 136,20, 0,
- 0, 0, 0, 0, 19, 0, 2, 0, 0, 0, 0, 0, 25, 97, 0, 0, 0, 32, 0, 0, 0, 32, 2, 0, 0, 0, 0, 0, 17, 193,0, 0, 0, 0, 0, 0, 93, 108,220,1,
- 0, 0, 0, 0, 136,16, 16, 0, 0, 32, 0, 0, 19, 3, 0, 0, 0, 0, 0, 0, 145,97, 12, 0, 0, 0, 0, 0, 1, 48, 4, 0, 0, 0, 0, 0, 221,9, 8, 0,
- 80, 188,14, 64, 223,255,254,3, 0, 0, 0, 0, 131,28, 4, 0, 0, 0, 0, 0, 59, 131,12, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 128,0, 0, 0,
- 0, 96, 32, 0, 68, 16, 4, 0, 16, 32, 0, 0, 255,255,255,3, 0, 64, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 204,40, 14, 2, 0, 0, 0, 0, 0, 1, 136,0,
- 0, 0, 0, 0, 21, 5, 12, 0, 0, 32, 0, 0, 255,253,127,3, 0, 0, 0, 0, 174,232,119,1, 0, 0, 0, 0, 16, 25, 16, 0, 0, 0, 0, 0, 25, 0, 16, 0,
- 0, 0, 0, 0, 129,73, 16, 0, 0, 0, 0, 0, 2, 8, 18, 0, 0, 0, 0, 0, 64, 32, 80, 0, 0, 0, 0, 0, 9, 100,70, 1, 0, 0, 0, 0, 0, 65, 18, 1,
- 0, 32, 0, 0, 17, 109,24, 1, 0, 0, 0, 0, 12, 61, 2, 0, 0, 0, 0, 0, 9, 40, 4, 0, 0, 32, 0, 0, 72, 0, 6, 0, 0, 0, 0, 0, 0, 56, 96, 0,
- 0, 0, 0, 0, 17, 96, 36, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 32, 0, 0, 25, 105,68, 1, 0, 0, 0, 0, 28, 40, 6, 1,
- 0, 0, 0, 0, 73, 40, 12, 0, 0, 0, 0, 0, 68, 33, 18, 1, 0, 0, 0, 0, 66, 17, 16, 0, 0, 0, 0, 0, 1, 1, 32, 0, 0, 0, 0, 0, 86, 176,68, 0,
- 0, 0, 0, 0, 223,125,94, 3, 0, 0, 0, 0, 96, 56, 66, 1, 0, 0, 0, 0, 17, 81, 18, 1, 0, 0, 0, 0, 16, 32, 132,0, 0, 0, 0, 0, 68, 0, 192,1,
- 0, 0, 0, 0, 1, 59, 70, 0, 0, 0, 0, 0, 81, 40, 12, 0, 0, 240,33, 0, 0, 0, 32, 0, 0, 0, 0, 0, 100,44, 130,0, 0, 0, 0, 0, 72, 8, 0, 2,
- 0, 0, 0, 0, 74, 40, 110,2, 0, 0, 0, 0, 137,225,0, 0, 0, 0, 0, 0, 49, 33, 18, 0, 0, 0, 0, 0, 219,249,86, 1, 0, 0, 0, 0, 136,40, 74, 2,
- 0, 0, 0, 0, 137,0, 0, 0, 0, 0, 0, 0, 136,73, 4, 1, 0, 0, 0, 0, 24, 40, 46, 0, 0, 0, 0, 0, 24, 96, 8, 0, 0, 112,32, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 28, 44, 28, 0, 0, 224,12, 0, 129,85, 4, 0, 0, 0, 0, 0, 2, 0, 32, 1, 0, 0, 0, 0, 0, 40, 40, 0, 0, 0, 0, 0, 0, 65, 14, 0,
- 0, 0, 0, 0, 49, 32, 8, 0, 0, 0, 0, 0, 98, 112,86, 0, 0, 0, 0, 0, 0, 41, 0, 1, 0, 0, 0, 0, 57, 127,82, 0, 0, 0, 0, 0, 42, 190,174,1,
- 0, 0, 0, 0, 17, 77, 0, 0, 0, 0, 0, 0, 25, 96, 8, 1, 0, 0, 0, 0, 65, 1, 6, 0, 0, 0, 0, 0, 0, 33, 22, 0, 0, 0, 0, 0, 9, 56, 0, 0,
- 0, 0, 0, 0, 16, 85, 16, 0, 0, 0, 0, 0, 80, 120,64, 0, 0, 0, 0, 0, 125,124,142,3, 0, 32, 4, 0, 128,0, 4, 0, 0, 32, 0, 0, 151,89, 14, 0,
- 0, 0, 0, 0, 113,89, 108,2, 0, 32, 0, 0, 0, 8, 14, 1, 0, 0, 0, 0, 1, 128,8, 0, 0, 4, 0, 0, 29, 93, 16, 0, 0, 0, 0, 0, 25, 0, 78, 0,
- 0, 0, 0, 0, 21, 64, 20, 0, 0, 0, 0, 0, 28, 36, 0, 0, 0, 32, 0, 0, 93, 9, 12, 0, 0, 0, 0, 0, 149,77, 30, 0, 0, 0, 0, 0, 130,45, 46, 1,
- 0, 0, 0, 0, 10, 253,30, 1, 0, 0, 0, 0, 9, 33, 0, 0, 0, 0, 0, 0, 32, 32, 108,0, 0, 96, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 238,181,110,1,
- 0, 32, 0, 0, 0, 33, 4, 0, 0, 0, 0, 0, 89, 4, 0, 0, 0, 32, 0, 0, 0, 0, 128,0, 0, 8, 0, 0, 228,100,110,1, 0, 0, 0, 0, 33, 4, 4, 0,
- 0, 0, 0, 0, 0, 5, 0, 2, 0, 0, 0, 0, 87, 36, 12, 2, 0, 0, 0, 0, 152,69, 0, 0, 0, 32, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 93, 69, 4, 0,
- 0, 0, 0, 0, 0, 1, 100,0, 0, 0, 0, 0, 145,4, 4, 2, 0, 0, 0, 0, 85, 36, 26, 1, 0, 0, 0, 0, 21, 36, 4, 0, 0, 0, 0, 0, 4, 48, 66, 3,
- 0, 0, 0, 0, 83, 65, 5, 0, 0, 0, 0, 0, 36, 104,58, 1, 0, 0, 0, 0, 129,1, 2, 0, 0, 0, 0, 0, 147,65, 6, 2, 0, 0, 0, 0, 8, 0, 6, 2,
- 0, 0, 0, 0, 20, 4, 12, 0, 0, 0, 0, 0, 19, 89, 26, 0, 0, 96, 8, 0, 14, 184,14, 0, 0, 176,3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 8, 1,
- 0, 32, 0, 0, 8, 56, 2, 0, 0, 0, 0, 0, 68, 96, 8, 0, 0, 0, 1, 0, 4, 32, 18, 0, 0, 0, 0, 0, 8, 44, 4, 0, 16, 34, 0, 0, 255,255,255,3,
- 0, 0, 0, 0, 202,124,126,0, 0, 0, 0, 0, 5, 0, 13, 0, 0, 0, 0, 0, 17, 89, 26, 1, 0, 0, 0, 0, 128,184,26, 0, 0, 0, 0, 0, 0, 68, 4, 0,
- 0, 0, 0, 0, 0, 8, 38, 2, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 87, 96, 2, 0, 0, 0, 0, 0, 64, 168,0, 2, 0, 0, 0, 0, 4, 2, 2, 0,
- 0, 0, 0, 0, 69, 24, 30, 1, 0, 0, 0, 0, 145,73, 18, 1, 0, 32, 0, 0, 0, 104,12, 0, 0, 0, 0, 0, 21, 96, 4, 0, 0, 0, 0, 0, 32, 144,2, 0,
- 0, 32, 0, 0, 16, 104,4, 0, 0, 0, 0, 0, 17, 64, 80, 0, 0, 0, 0, 0, 117,252,62, 0, 0, 0, 0, 0, 4, 4, 10, 0, 0, 0, 0, 0, 132,0, 20, 0,
- 0, 0, 0, 0, 133,0, 8, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 0, 0, 0, 64, 32, 24, 0, 0, 0, 0, 0, 149,105,4, 1, 0, 0, 0, 0, 10, 8, 7, 1,
- 0, 0, 0, 0, 20, 96, 140,0, 0, 0, 0, 0, 149,127,86, 2, 0, 0, 0, 0, 179,221,24, 0, 0, 0, 0, 0, 129,8, 2, 0, 0, 0, 0, 0, 16, 68, 2, 0,
- 0, 0, 0, 0, 145,73, 22, 3, 0, 0, 0, 0, 68, 8, 18, 1, 0, 0, 0, 0, 37, 108,4, 0, 0, 0, 8, 0, 8, 0, 4, 0, 0, 0, 0, 0, 49, 53, 14, 0,
- 0, 32, 0, 0, 17, 9, 0, 0, 0, 0, 0, 0, 16, 76, 0, 0, 0, 0, 0, 0, 130,41, 2, 2, 0, 0, 0, 0, 145,140,22, 0, 0, 0, 0, 0, 0, 25, 0, 0,
- 0, 0, 0, 0, 0, 8, 76, 0, 0, 0, 0, 0, 141,0, 8, 0, 0, 0, 0, 0, 254,63, 60, 2, 0, 0, 0, 0, 129,32, 2, 0, 0, 0, 0, 0, 217,65, 40, 2,
- 0, 0, 0, 0, 16, 64, 0, 2, 0, 0, 0, 0, 132,1, 0, 0, 0, 0, 0, 0, 1, 65, 64, 0, 0, 0, 0, 0, 136,0, 4, 1, 0, 0, 0, 0, 145,69, 22, 3,
- 0, 0, 0, 0, 1, 40, 8, 1, 0, 32, 0, 0, 17, 73, 0, 1, 0, 232,0, 0, 19, 17, 16, 0, 0, 176,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 96, 8, 2,
- 0, 0, 0, 0, 17, 104,20, 0, 0, 32, 0, 0, 16, 5, 0, 0, 0, 32, 0, 0, 64, 184,28, 0, 0, 0, 0, 0, 29, 60, 46, 2, 0, 0, 0, 0, 68, 64, 8, 0,
- 0, 0, 0, 0, 0, 49, 30, 0, 0, 32, 0, 0, 145,0, 12, 0, 0, 32, 0, 0, 0, 40, 14, 0, 0, 0, 0, 0, 17, 0, 24, 1, 0, 32, 0, 0, 0, 8, 14, 0,
- 0, 0, 0, 0, 215,255,60, 1, 0, 224,4, 0, 148,58, 4, 0, 0, 0, 0, 0, 145,77, 2, 0, 0, 96, 0, 0, 128,40, 14, 0, 0, 0, 0, 0, 1, 4, 16, 0,
- 0, 0, 0, 0, 217,69, 20, 0, 0, 32, 0, 0, 4, 0, 14, 0, 0, 96, 0, 0, 1, 8, 14, 2, 0, 32, 0, 0, 4, 32, 4, 0, 0, 32, 6, 0, 0, 40, 12, 0,
- 0, 0, 0, 0, 149,68, 12, 0, 0, 0, 0, 0, 1, 33, 12, 2, 0, 240,12, 0, 209,221,126,1, 0, 0, 0, 0, 0, 36, 2, 2, 0, 0, 0, 0, 88, 40, 110,1,
- 0, 32, 0, 0, 17, 129,12, 0, 0, 0, 0, 0, 16, 32, 12, 2, 0, 0, 0, 0, 32, 0, 116,0, 0, 0, 0, 0, 2, 80, 8, 0, 0, 0, 0, 0, 0, 176,4, 0,
- 0, 32, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 16, 32, 10, 1, 0, 32, 0, 0, 80, 0, 4, 0, 0, 128,0, 0, 0, 40, 14, 0, 0, 0, 0, 0, 132,105,60, 2,
- 0, 0, 0, 0, 41, 0, 8, 0, 0, 0, 2, 0, 16, 0, 4, 0, 0, 0, 0, 0, 10, 32, 4, 0, 0, 0, 0, 0, 16, 32, 14, 2, 0, 0, 0, 0, 2, 164,2, 2,
- 0, 0, 0, 0, 24, 104,10, 0, 0, 0, 0, 0, 64, 32, 73, 0, 0, 0, 0, 0, 159,77, 24, 2, 0, 0, 0, 0, 4, 40, 192,0, 0, 0, 0, 0, 80, 13, 8, 0,
- 0, 0, 0, 0, 51, 24, 0, 1, 0, 0, 0, 0, 4, 28, 0, 0, 0, 0, 0, 0, 68, 44, 0, 0, 0, 0, 0, 0, 145,105,28, 3, 0, 0, 0, 0, 85, 58, 22, 0,
- 0, 114,12, 0, 221,69, 20, 3, 0, 0, 0, 0, 1, 12, 140,2, 0, 32, 0, 0, 16, 0, 5, 2, 0, 0, 0, 0, 0, 32, 86, 0, 0, 32, 0, 0, 0, 48, 6, 0,
- 0, 0, 0, 0, 24, 64, 4, 0, 0, 0, 0, 0, 100,56, 12, 1, 0, 0, 0, 0, 133,7, 4, 1, 0, 0, 0, 0, 25, 1, 2, 0, 0, 32, 4, 0, 147,222,38, 0,
- 0, 0, 0, 0, 64, 168,0, 0, 16, 0, 0, 0, 223,79, 63, 3, 0, 0, 0, 0, 141,125,14, 1, 0, 0, 0, 0, 17, 21, 0, 0, 0, 0, 0, 0, 32, 44, 2, 1,
- 0, 0, 1, 0, 147,229,16, 0, 0, 96, 0, 0, 6, 28, 64, 0, 0, 0, 0, 0, 8, 36, 2, 0, 0, 0, 0, 0, 149,40, 0, 0, 0, 0, 0, 0, 69, 65, 8, 0,
- 0, 0, 0, 0, 0, 32, 100,0, 0, 0, 0, 0, 4, 112,58, 0, 0, 68, 0, 0, 17, 89, 16, 1, 0, 0, 0, 0, 76, 160,71, 1, 0, 0, 0, 0, 24, 65, 8, 0,
- 0, 0, 0, 0, 24, 41, 30, 1, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 53, 56, 32, 0, 0, 240,47, 0, 55, 221,76, 1, 0, 32, 0, 0, 128,64, 0, 0,
- 0, 0, 0, 0, 70, 185,0, 0, 0, 0, 0, 0, 12, 168,2, 1, 0, 0, 0, 0, 149,125,62, 3, 0, 0, 0, 0, 207,189,110,1, 0, 0, 0, 0, 17, 0, 16, 2,
- 0, 0, 0, 0, 26, 153,16, 0, 0, 0, 0, 0, 24, 123,22, 1, 0, 0, 0, 0, 0, 57, 86, 1, 0, 0, 0, 0, 85, 42, 4, 0, 0, 0, 0, 0, 0, 2, 4, 1,
- 0, 0, 0, 0, 5, 24, 132,0, 0, 240,44, 0, 0, 0, 128,0, 0, 0, 0, 0, 16, 68, 16, 1, 0, 0, 0, 0, 154,117,22, 3, 0, 112,0, 0, 145,93, 22, 1,
- 0, 0, 0, 0, 8, 109,86, 1, 0, 0, 0, 0, 145,32, 4, 0, 0, 32, 0, 0, 16, 1, 68, 1, 0, 240,63, 0, 8, 2, 4, 0, 0, 0, 0, 0, 17, 2, 4, 0,
- 0, 0, 0, 0, 21, 120,132,0, 0, 0, 0, 0, 4, 96, 132,0, 0, 0, 0, 0, 4, 12, 14, 0, 0, 0, 0, 0, 0, 4, 68, 0, 0, 0, 0, 0, 126,189,46, 2,
- 0, 0, 0, 0, 25, 9, 108,0, 0, 0, 0, 0, 89, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 16, 128,14, 1, 0, 0, 0, 0, 20, 32, 8, 2,
- 0, 0, 0, 0, 146,65, 12, 0, 0, 0, 0, 0, 144,97, 8, 2, 0, 0, 0, 0, 17, 73, 6, 0, 0, 0, 0, 0, 128,4, 6, 1, 0, 240,14, 0, 191,209,204,0,
- 0, 0, 0, 0, 8, 40, 0, 1, 0, 0, 0, 0, 16, 56, 4, 0, 0, 32, 0, 0, 17, 69, 20, 0, 0, 0, 0, 0, 1, 40, 4, 2, 0, 0, 0, 0, 1, 1, 144,0,
- 16, 8, 0, 0, 191,249,126,2, 0, 0, 0, 0, 64, 44, 2, 0, 0, 0, 0, 0, 9, 32, 30, 0, 0, 0, 0, 0, 0, 44, 26, 0, 0, 0, 0, 0, 69, 0, 4, 0,
- 0, 64, 0, 0, 144,64, 32, 0, 0, 0, 0, 0, 153,65, 18, 3, 0, 0, 0, 0, 160,32, 10, 0, 0, 160,4, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, 136,6, 1,
- 0, 0, 0, 0, 17, 100,1, 0, 0, 0, 0, 0, 0, 32, 98, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 20, 80, 2, 0, 0, 0, 0, 0, 36, 32, 66, 0,
- 0, 0, 0, 0, 0, 73, 10, 0, 0, 8, 0, 0, 27, 101,88, 0, 0, 0, 4, 0, 255,255,127,2, 0, 0, 0, 0, 42, 56, 62, 0, 0, 0, 0, 0, 145,217,32, 0,
- 0, 0, 0, 0, 16, 0, 164,0, 0, 0, 0, 0, 25, 33, 16, 0, 0, 0, 0, 0, 235,57, 94, 1, 0, 0, 0, 0, 144,0, 16, 0, 0, 0, 0, 0, 17, 217,32, 0,
- 0, 0, 0, 0, 19, 145,0, 1, 0, 0, 0, 0, 28, 40, 12, 0, 0, 0, 0, 0, 88, 40, 46, 1, 0, 0, 0, 0, 145,33, 8, 1, 0, 0, 0, 0, 32, 57, 62, 1,
- 0, 0, 0, 0, 25, 33, 8, 1, 0, 0, 0, 0, 17, 120,38, 0, 0, 0, 0, 0, 9, 97, 8, 0, 0, 0, 0, 0, 24, 0, 22, 1, 0, 0, 0, 0, 65, 249,126,1,
- 0, 0, 0, 0, 80, 152,0, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 5, 101,32, 0, 0, 0, 0, 0, 192,0, 24, 0, 0, 0, 0, 0, 24, 53, 42, 1,
- 0, 0, 0, 0, 30, 37, 106,1, 0, 0, 0, 0, 25, 9, 0, 0, 0, 0, 0, 0, 130,32, 6, 1, 0, 0, 0, 0, 19, 57, 14, 0, 0, 0, 0, 0, 192,32, 2, 0,
- 0, 0, 0, 0, 196,48, 18, 0, 0, 0, 0, 0, 24, 9, 10, 0, 0, 0, 0, 0, 8, 41, 34, 1, 0, 0, 0, 0, 1, 0, 98, 0, 0, 0, 0, 0, 1, 8, 32, 0,
- 0, 0, 0, 0, 16, 40, 82, 0, 0, 0, 0, 0, 1, 41, 114,0, 0, 0, 0, 0, 168,152,98, 1, 0, 0, 0, 0, 25, 33, 10, 0, 0, 0, 0, 0, 8, 40, 26, 0,
- 0, 0, 0, 0, 145,73, 82, 0, 0, 0, 0, 0, 160,40, 122,0, 0, 0, 0, 0, 16, 1, 42, 1, 0, 0, 0, 0, 145,64, 72, 0, 0, 0, 0, 0, 128,32, 32, 0,
- 0, 0, 0, 0, 2, 40, 34, 0, 0, 0, 0, 0, 2, 8, 40, 0, 0, 0, 0, 0, 8, 16, 92, 0, 0, 0, 0, 0, 132,33, 78, 0, 0, 0, 0, 0, 176,104,114,0,
- 0, 0, 0, 0, 40, 161,72, 1, 0, 0, 0, 0, 17, 96, 8, 0, 0, 0, 0, 0, 81, 0, 96, 0, 0, 0, 0, 0, 65, 32, 10, 0, 0, 0, 0, 0, 116,33, 2, 1,
- 0, 0, 0, 0, 16, 12, 8, 0, 0, 0, 0, 0, 48, 40, 110,0, 0, 0, 0, 0, 128,8, 106,0, 0, 0, 0, 0, 25, 32, 42, 0, 0, 0, 0, 0, 192,57, 20, 1,
- 0, 0, 0, 0, 21, 121,110,1, 0, 0, 0, 0, 192,56, 36, 0, 0, 0, 0, 0, 8, 41, 14, 2, 0, 0, 0, 0, 17, 65, 0, 3, 0, 0, 0, 0, 26, 56, 46, 0,
- 0, 0, 0, 0, 1, 96, 84, 1, 0, 0, 0, 0, 116,49, 122,1, 0, 0, 0, 0, 17, 121,6, 0, 0, 0, 0, 0, 148,0, 2, 0, 0, 0, 0, 0, 132,37, 14, 0,
- 0, 0, 0, 0, 8, 128,10, 0, 0, 0, 0, 0, 2, 57, 26, 1, 0, 0, 0, 0, 49, 25, 110,0, 0, 0, 0, 0, 116,32, 12, 0, 0, 0, 0, 0, 192,8, 10, 0,
- 0, 0, 0, 0, 0, 48, 64, 1, 0, 0, 0, 0, 0, 33, 26, 0, 0, 0, 0, 0, 72, 1, 2, 1, 0, 0, 0, 0, 72, 40, 14, 0, 0, 0, 0, 0, 16, 32, 42, 1,
- 0, 0, 0, 0, 25, 32, 0, 1, 0, 0, 0, 0, 64, 8, 8, 0, 0, 0, 0, 0, 2, 0, 2, 1, 0, 0, 0, 0, 128,192,72, 0, 0, 0, 0, 0, 64, 0, 34, 0,
- 0, 0, 0, 0, 8, 9, 10, 1, 0, 64, 0, 0, 64, 113,128,0, 0, 0, 0, 0, 65, 96, 4, 0, 16, 96, 0, 0, 255,255,254,3, 0, 0, 0, 0, 206,44, 30, 2,
- 0, 0, 0, 0, 16, 64, 36, 0, 0, 0, 0, 0, 6, 8, 4, 0, 0, 0, 0, 0, 145,0, 2, 0, 0, 0, 0, 0, 24, 97, 76, 1, 0, 0, 0, 0, 144,72, 16, 0,
- 0, 0, 0, 0, 130,152,68, 1, 0, 0, 0, 0, 133,69, 16, 3, 0, 0, 4, 0, 17, 9, 12, 0, 0, 0, 0, 0, 191,121,126,0, 0, 0, 0, 0, 0, 45, 70, 0,
- 0, 0, 0, 0, 5, 25, 38, 2, 0, 0, 0, 0, 23, 120,56, 0, 0, 32, 0, 0, 22, 40, 76, 0, 0, 8, 0, 0, 0, 64, 4, 0, 0, 32, 0, 0, 129,69, 20, 0,
- 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 4, 40, 16, 0, 0, 0, 0, 0, 17, 0, 0, 2, 0, 0, 0, 0, 36, 0, 102,2, 0, 0, 0, 0, 0, 40, 6, 2,
- 0, 0, 0, 0, 220,60, 30, 0, 0, 0, 0, 0, 9, 68, 20, 0, 0, 0, 0, 0, 144,4, 8, 0, 0, 0, 0, 0, 16, 81, 4, 2, 0, 0, 0, 0, 209,105,22, 0,
- 0, 0, 0, 0, 174,184,78, 0, 0, 0, 0, 0, 8, 144,4, 0, 0, 96, 8, 0, 16, 0, 12, 0, 0, 0, 0, 0, 9, 40, 32, 0, 0, 0, 0, 0, 130,0, 64, 0,
- 0, 0, 0, 0, 27, 121,14, 0, 0, 0, 0, 0, 152,17, 0, 0, 0, 0, 0, 0, 220,110,142,0, 0, 0, 0, 0, 154,5, 12, 2, 0, 0, 0, 0, 20, 41, 12, 0,
- 0, 32, 0, 0, 255,125,63, 3, 0, 0, 0, 0, 136,61, 30, 1, 0, 0, 0, 0, 92, 65, 4, 1, 0, 0, 0, 0, 21, 100,6, 1, 0, 0, 0, 0, 29, 44, 28, 0,
- 0, 0, 0, 0, 89, 64, 0, 0, 0, 224,12, 0, 0, 32, 4, 0, 0, 0, 0, 0, 83, 65, 4, 1, 0, 0, 0, 0, 72, 32, 6, 0, 0, 0, 0, 0, 4, 52, 10, 1,
- 0, 0, 0, 0, 52, 32, 12, 0, 0, 32, 0, 0, 0, 48, 78, 1, 0, 0, 0, 0, 13, 48, 12, 1, 0, 0, 0, 0, 53, 64, 0, 0, 0, 32, 0, 0, 16, 1, 4, 1,
- 0, 0, 0, 0, 144,64, 8, 0, 0, 0, 0, 0, 24, 65, 68, 2, 0, 0, 0, 0, 65, 32, 4, 0, 0, 32, 4, 0, 1, 0, 4, 0, 0, 0, 0, 0, 18, 248,4, 1,
- 0, 0, 0, 0, 0, 41, 6, 0, 16, 0, 0, 0, 221,111,156,2, 0, 0, 0, 0, 196,165,6, 0, 0, 0, 0, 0, 144,13, 0, 1, 0, 0, 0, 0, 144,73, 6, 1,
- 0, 0, 0, 0, 23, 232,36, 2, 0, 0, 0, 0, 4, 40, 12, 2, 0, 0, 0, 0, 57, 56, 28, 2, 0, 0, 0, 0, 145,9, 68, 0, 0, 0, 0, 0, 49, 40, 12, 0,
- 0, 0, 0, 0, 208,32, 0, 0, 0, 0, 0, 0, 0, 184,26, 0, 0, 0, 0, 0, 149,65, 88, 0, 0, 0, 0, 0, 209,101,16, 2, 0, 0, 0, 0, 156,0, 4, 0,
- 0, 0, 0, 0, 32, 40, 64, 0, 0, 0, 0, 0, 128,168,12, 3, 0, 0, 0, 0, 145,69, 16, 1, 0, 0, 0, 0, 49, 12, 0, 0, 0, 0, 0, 0, 15, 104,108,0,
- 0, 0, 0, 0, 16, 73, 92, 0, 0, 32, 0, 0, 17, 65, 0, 1, 0, 0, 0, 0, 1, 32, 12, 0, 0, 112,44, 0, 64, 65, 0, 0, 0, 0, 0, 0, 24, 56, 96, 0,
- 0, 0, 0, 0, 18, 65, 0, 1, 0, 0, 0, 0, 245,120,72, 0, 0, 0, 0, 0, 149,81, 0, 0, 0, 0, 0, 0, 11, 32, 2, 1, 0, 0, 0, 0, 145,65, 0, 2,
- 0, 0, 0, 0, 3, 9, 0, 0, 0, 0, 0, 0, 157,253,31, 2, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 81, 1, 16, 1, 0, 0, 0, 0, 8, 8, 68, 0,
- 0, 0, 0, 0, 13, 104,8, 0, 0, 0, 0, 0, 137,168,14, 2, 0, 0, 0, 0, 17, 121,2, 1, 0, 32, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 8, 32, 4, 1,
- 0, 64, 0, 0, 245,73, 30, 2, 0, 0, 0, 0, 142,185,142,1, 0, 32, 4, 0, 196,25, 84, 0, 0, 0, 0, 0, 24, 104,34, 0, 0, 0, 0, 0, 17, 65, 48, 1,
- 0, 0, 0, 0, 8, 0, 140,0, 0, 32, 8, 0, 16, 81, 4, 0, 0, 0, 0, 0, 17, 128,8, 0, 0, 0, 0, 0, 21, 40, 36, 0, 0, 0, 0, 0, 128,64, 140,1,
- 0, 96, 0, 0, 10, 189,6, 0, 0, 32, 20, 0, 0, 4, 0, 0, 0, 0, 0, 0, 80, 45, 0, 0, 0, 0, 0, 0, 13, 40, 6, 0, 0, 0, 0, 0, 19, 0, 12, 0,
- 0, 32, 0, 0, 1, 64, 20, 0, 0, 0, 0, 0, 25, 40, 6, 0, 0, 0, 0, 0, 130,89, 4, 0, 0, 0, 0, 0, 17, 65, 1, 3, 0, 72, 0, 0, 0, 80, 16, 0,
- 0, 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 80, 4, 2, 0, 0, 0, 0, 129,112,12, 2, 0, 0, 0, 0, 8, 64, 64, 0, 0, 0, 0, 0, 149,92, 30, 0,
- 0, 0, 0, 0, 144,8, 6, 0, 0, 0, 0, 0, 16, 41, 50, 0, 0, 240,63, 0, 31, 155,12, 0, 0, 32, 0, 0, 21, 69, 4, 0, 0, 0, 0, 0, 4, 36, 4, 0,
- 0, 32, 0, 0, 49, 89, 4, 0, 0, 32, 0, 0, 16, 65, 0, 0, 0, 0, 0, 0, 80, 108,10, 0, 0, 0, 8, 0, 17, 73, 20, 1, 0, 112,12, 0, 0, 16, 4, 0,
- 0, 0, 0, 0, 2, 0, 6, 1, 0, 32, 0, 0, 247,252,78, 0, 0, 0, 0, 0, 128,72, 2, 0, 0, 0, 0, 0, 8, 48, 4, 0, 0, 0, 0, 0, 29, 64, 8, 1,
- 0, 0, 0, 0, 255,237,126,1, 0, 10, 0, 0, 34, 20, 76, 0, 0, 0, 0, 0, 18, 0, 64, 0, 0, 0, 0, 0, 144,65, 24, 0, 0, 0, 0, 0, 144,66, 0, 0,
- 0, 0, 0, 0, 141,44, 14, 0, 0, 0, 0, 0, 0, 36, 0, 1, 0, 0, 0, 0, 20, 100,4, 0, 0, 0, 0, 0, 25, 96, 4, 2, 0, 0, 0, 0, 148,32, 4, 2,
- 0, 0, 0, 0, 32, 0, 20, 0, 0, 0, 0, 0, 201,40, 22, 0, 16, 0, 0, 0, 1, 33, 0, 1, 0, 0, 0, 0, 17, 89, 2, 0, 0, 0, 0, 0, 16, 11, 10, 0,
- 0, 0, 0, 0, 21, 5, 0, 1, 0, 0, 0, 0, 5, 68, 0, 0, 0, 0, 0, 0, 0, 4, 34, 0, 0, 0, 0, 0, 145,77, 50, 0, 0, 16, 0, 0, 24, 48, 68, 1,
- 0, 240,45, 0, 152,10, 6, 3, 0, 240,48, 0, 0, 0, 0, 0, 0, 96, 0, 0, 66, 0, 4, 0, 0, 0, 0, 0, 0, 8, 108,1, 0, 0, 0, 0, 255,253,95, 2,
- 0, 0, 0, 0, 72, 52, 6, 2, 0, 32, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 17, 88, 18, 0, 0, 0, 0, 0, 157,172,78, 1, 0, 32, 0, 0, 8, 4, 8, 0,
- 0, 0, 0, 0, 0, 1, 24, 0, 0, 0, 0, 0, 23, 104,28, 0, 0, 0, 0, 0, 16, 8, 4, 2, 0, 0, 0, 0, 27, 81, 100,1, 0, 0, 0, 0, 243,113,110,1,
- 0, 0, 0, 0, 64, 49, 18, 1, 0, 0, 0, 0, 9, 32, 14, 1, 0, 240,0, 0, 10, 8, 14, 0, 0, 0, 0, 0, 85, 244,6, 0, 0, 32, 0, 0, 17, 0, 12, 0,
- 0, 0, 0, 0, 0, 32, 74, 1, 0, 0, 0, 0, 1, 192,8, 0, 0, 32, 0, 0, 0, 32, 46, 0, 0, 0, 0, 0, 20, 8, 0, 2, 0, 0, 0, 0, 16, 96, 0, 2,
- 0, 0, 0, 0, 19, 113,20, 0, 0, 0, 0, 0, 0, 20, 2, 0, 0, 0, 32, 0, 4, 32, 4, 0, 0, 0, 0, 0, 255,103,190,3, 0, 0, 0, 0, 135,62, 14, 1,
- 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0, 144,4, 0, 1, 0, 0, 0, 0, 8, 16, 2, 1, 0, 0, 0, 0, 121,73, 68, 1, 0, 96, 4, 0, 173,73, 78, 1,
- 0, 0, 0, 0, 128,0, 18, 0, 0, 0, 0, 0, 4, 64, 2, 0, 0, 0, 0, 0, 9, 65, 44, 1, 0, 0, 0, 0, 144,73, 22, 2, 0, 32, 0, 0, 255,112,180,0,
- 0, 0, 0, 0, 128,76, 16, 0, 0, 0, 0, 0, 148,4, 12, 0, 0, 0, 0, 0, 145,73, 4, 0, 0, 0, 0, 0, 129,24, 78, 1, 0, 0, 0, 0, 52, 32, 140,0,
- 0, 96, 0, 0, 33, 0, 2, 0, 0, 0, 0, 0, 69, 40, 30, 2, 0, 0, 0, 0, 4, 1, 20, 0, 0, 0, 0, 0, 128,68, 8, 0, 0, 0, 0, 0, 17, 69, 22, 3,
- 0, 0, 0, 0, 24, 32, 2, 1, 0, 0, 0, 0, 84, 1, 12, 0, 0, 0, 0, 0, 12, 40, 12, 0, 0, 0, 0, 0, 23, 255,126,2, 0, 0, 0, 0, 110,123,38, 0,
- 0, 0, 0, 0, 8, 9, 4, 1, 0, 0, 0, 0, 21, 48, 4, 0, 0, 0, 0, 0, 8, 252,76, 0, 0, 0, 0, 0, 17, 109,0, 0, 0, 0, 0, 0, 16, 48, 32, 0,
- 0, 0, 0, 0, 21, 9, 0, 1, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 17, 125,18, 0, 0, 32, 0, 0, 0, 160,66, 0, 0, 0, 0, 0, 25, 100,0, 0,
- 0, 32, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 1, 136,0, 0, 0, 4, 0, 0, 145,205,24, 1, 0, 0, 0, 0, 16, 104,4, 0, 0, 96, 0, 0, 8, 64, 4, 0,
- 0, 0, 0, 0, 17, 73, 22, 1, 0, 64, 0, 0, 0, 17, 0, 1, 0, 96, 0, 0, 12, 0, 4, 0, 0, 0, 0, 0, 181,117,14, 2, 0, 32, 0, 0, 17, 9, 16, 0,
- 0, 0, 0, 0, 21, 1, 18, 0, 0, 0, 0, 0, 68, 0, 12, 0, 0, 0, 0, 0, 0, 144,32, 0, 0, 0, 0, 0, 13, 64, 16, 0, 0, 0, 0, 0, 26, 69, 2, 0,
- 0, 0, 0, 0, 21, 89, 4, 1, 0, 0, 0, 0, 16, 33, 32, 0, 0, 0, 0, 0, 25, 81, 28, 0, 0, 0, 0, 0, 1, 64, 48, 0, 0, 0, 0, 0, 192,116,14, 2,
- 0, 0, 0, 0, 17, 97, 82, 2, 0, 0, 0, 0, 128,36, 8, 0, 0, 96, 0, 0, 130,64, 16, 0, 0, 0, 0, 0, 1, 67, 32, 0, 0, 96, 0, 0, 133,212,128,0,
- 0, 0, 4, 0, 0, 48, 0, 0, 0, 0, 0, 0, 146,8, 0, 0, 16, 0, 2, 0, 255,255,255,3, 0, 0, 0, 0, 74, 45, 8, 1, 0, 0, 0, 0, 18, 73, 20, 1,
- 0, 32, 0, 0, 17, 1, 0, 0, 0, 0, 0, 0, 1, 64, 12, 2, 0, 0, 0, 0, 149,4, 8, 2, 0, 0, 0, 0, 217,73, 22, 3, 0, 0, 0, 0, 40, 40, 0, 0,
- 0, 32, 0, 0, 16, 73, 4, 0, 0, 0, 0, 0, 1, 96, 12, 0, 0, 0, 0, 0, 17, 17, 8, 0, 0, 0, 0, 0, 17, 72, 0, 1, 16, 0, 0, 0, 100,32, 5, 0,
- 0, 0, 0, 0, 142,56, 62, 0, 0, 0, 0, 0, 2, 20, 4, 0, 0, 0, 4, 0, 48, 73, 0, 0, 0, 0, 0, 0, 209,73, 82, 0, 0, 0, 0, 0, 8, 48, 32, 0,
- 0, 0, 0, 0, 25, 121,22, 1, 0, 0, 0, 0, 6, 185,114,0, 0, 0, 0, 0, 65, 8, 2, 0, 0, 0, 0, 0, 4, 32, 24, 0, 0, 0, 0, 0, 19, 25, 0, 0,
- 0, 0, 0, 0, 16, 60, 14, 0, 0, 0, 0, 0, 1, 65, 0, 2, 0, 0, 4, 0, 0, 18, 0, 0, 0, 0, 0, 0, 131,201,6, 0, 0, 0, 0, 0, 125,237,28, 3,
- 0, 0, 0, 0, 4, 33, 38, 0, 0, 0, 0, 0, 132,52, 14, 1, 0, 0, 0, 0, 16, 4, 72, 0, 0, 0, 0, 0, 81, 65, 4, 0, 0, 0, 0, 0, 8, 52, 30, 1,
- 0, 96, 0, 0, 14, 16, 4, 0, 0, 0, 0, 0, 12, 36, 8, 0, 0, 0, 0, 0, 1, 68, 8, 0, 0, 0, 0, 0, 16, 69, 2, 2, 16, 32, 1, 0, 31, 209,4, 0,
- 0, 32, 0, 0, 0, 32, 0, 1, 0, 0, 0, 0, 253,119,62, 2, 0, 0, 0, 0, 220,24, 30, 0, 0, 0, 0, 0, 28, 64, 3, 0, 0, 0, 0, 0, 145,13, 26, 0,
- 0, 0, 0, 0, 16, 64, 32, 0, 0, 0, 0, 0, 17, 73, 14, 1, 0, 0, 0, 0, 8, 9, 0, 1, 0, 0, 0, 0, 0, 106,4, 0, 0, 0, 0, 0, 0, 36, 50, 2,
- 0, 0, 0, 0, 73, 8, 12, 1, 0, 32, 0, 0, 1, 1, 8, 0, 0, 240,63, 0, 130,144,4, 1, 0, 32, 0, 0, 17, 69, 18, 0, 0, 0, 0, 0, 1, 72, 6, 0,
- 0, 32, 0, 0, 0, 120,2, 0, 0, 0, 0, 0, 85, 100,13, 2, 0, 128,0, 0, 177,89, 12, 0, 0, 240,47, 0, 2, 16, 4, 0, 0, 0, 0, 0, 221,249,142,2,
- 0, 0, 0, 0, 129,72, 16, 1, 0, 0, 0, 0, 128,64, 2, 1, 0, 0, 0, 0, 16, 1, 96, 1, 0, 0, 0, 0, 17, 85, 10, 0, 0, 0, 0, 0, 80, 32, 2, 1,
- 0, 0, 0, 0, 80, 0, 32, 0, 0, 96, 40, 0, 0, 0, 4, 0, 0, 0, 0, 0, 247,243,62, 3, 0, 0, 0, 0, 70, 41, 53, 3, 0, 0, 0, 0, 66, 0, 56, 0,
- 0, 0, 0, 0, 25, 64, 24, 1, 0, 96, 0, 0, 0, 0, 2, 0, 0, 32, 0, 0, 119,187,54, 3, 0, 0, 0, 0, 9, 129,5, 0, 0, 0, 0, 0, 84, 10, 4, 0,
- 0, 0, 0, 0, 64, 96, 26, 1, 0, 0, 0, 0, 0, 0, 2, 3, 0, 32, 0, 0, 94, 252,14, 0, 0, 0, 1, 0, 17, 65, 0, 0, 0, 32, 4, 0, 90, 153,86, 0,
- 0, 0, 0, 0, 245,153,12, 0, 0, 32, 0, 0, 169,8, 6, 0, 0, 0, 0, 0, 19, 17, 0, 0, 0, 96, 12, 0, 128,146,6, 1, 0, 0, 0, 0, 144,1, 6, 3,
- 0, 0, 0, 0, 17, 129,12, 0, 0, 32, 1, 0, 0, 16, 4, 0, 0, 0, 0, 64, 127,253,127,1, 0, 0, 0, 0, 94, 45, 110,3, 0, 0, 0, 0, 88, 64, 40, 0,
- 0, 0, 0, 0, 129,64, 24, 0, 0, 0, 0, 0, 136,0, 16, 0, 0, 0, 0, 0, 132,40, 0, 0, 16, 0, 0, 0, 191,123,14, 1, 0, 0, 0, 0, 5, 64, 8, 2,
- 0, 0, 0, 0, 150,1, 0, 0, 0, 0, 0, 0, 8, 33, 4, 0, 0, 112,0, 0, 57, 64, 12, 0, 0, 0, 0, 0, 23, 124,76, 1, 0, 0, 0, 0, 80, 65, 32, 0,
- 0, 0, 0, 0, 148,68, 4, 0, 0, 0, 0, 0, 14, 40, 76, 2, 0, 0, 0, 0, 80, 65, 12, 0, 0, 0, 0, 0, 8, 16, 88, 0, 0, 0, 0, 0, 1, 40, 2, 1,
- 0, 32, 0, 0, 144,64, 46, 0, 0, 0, 0, 0, 146,65, 4, 0, 0, 0, 0, 0, 209,89, 20, 1, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 56, 2, 2,
- 0, 0, 0, 0, 52, 48, 4, 0, 0, 0, 0, 0, 255,221,29, 2, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 17, 0, 18, 1, 0, 0, 0, 0, 129,65, 2, 0,
- 0, 0, 0, 0, 32, 32, 100,0, 0, 0, 0, 0, 2, 56, 6, 1, 0, 0, 0, 0, 1, 64, 96, 0, 0, 0, 0, 0, 0, 128,100,0, 0, 0, 16, 0, 19, 89, 0, 1,
- 0, 0, 0, 0, 17, 73, 66, 1, 0, 0, 0, 0, 40, 0, 2, 0, 0, 0, 0, 0, 153,73, 28, 3, 0, 0, 0, 0, 70, 24, 2, 1, 0, 0, 0, 0, 19, 0, 6, 0,
- 0, 96, 0, 0, 162,9, 68, 0, 0, 0, 0, 0, 33, 72, 32, 0, 0, 64, 0, 0, 68, 60, 194,0, 0, 0, 0, 0, 150,81, 70, 0, 0, 0, 0, 0, 13, 40, 110,2,
- 0, 0, 0, 0, 153,65, 8, 0, 0, 0, 0, 0, 76, 5, 12, 0, 0, 0, 0, 0, 55, 3, 4, 0, 0, 0, 0, 0, 16, 64, 12, 0, 0, 0, 0, 0, 17, 33, 0, 1,
- 0, 0, 0, 0, 21, 9, 12, 1, 0, 96, 0, 0, 0, 152,46, 1, 0, 0, 0, 0, 48, 129,68, 1, 0, 0, 0, 0, 9, 80, 6, 0, 0, 0, 0, 0, 16, 48, 20, 0,
- 0, 32, 0, 0, 66, 16, 12, 0, 0, 0, 0, 0, 91, 41, 10, 0, 0, 0, 0, 0, 144,105,0, 0, 0, 0, 0, 0, 25, 104,4, 0, 0, 0, 0, 0, 89, 105,0, 2,
- 0, 128,16, 0, 145,72, 22, 0, 0, 4, 0, 0, 231,255,124,0, 0, 0, 0, 0, 68, 128,80, 2, 0, 0, 0, 0, 4, 0, 72, 2, 0, 4, 0, 0, 1, 148,0, 0,
- 0, 4, 4, 0, 76, 225,58, 0, 0, 128,0, 0, 0, 1, 4, 0, 0, 0, 8, 0, 200,96, 102,1, 16, 0, 0, 0, 255,255,126,3, 0, 0, 0, 0, 8, 48, 66, 1,
- 0, 0, 0, 0, 148,68, 20, 2, 0, 0, 0, 0, 16, 9, 2, 0, 0, 0, 0, 0, 255,145,38, 0, 0, 0, 0, 0, 25, 73, 0, 1, 0, 0, 0, 0, 197,40, 14, 0,
- 0, 0, 0, 0, 4, 4, 0, 2, 0, 0, 0, 0, 37, 0, 8, 0, 0, 0, 0, 0, 241,41, 86, 0, 0, 0, 0, 0, 1, 40, 14, 0, 0, 0, 0, 0, 0, 18, 2, 0,
- 0, 0, 0, 0, 154,0, 4, 0, 0, 0, 0, 0, 153,5, 24, 0, 0, 0, 0, 0, 255,109,107,2, 0, 0, 0, 0, 24, 32, 10, 0, 0, 0, 0, 0, 11, 33, 4, 0,
- 0, 0, 0, 0, 68, 100,4, 0, 0, 0, 0, 0, 1, 0, 130,0, 0, 0, 0, 0, 62, 188,46, 0, 0, 0, 0, 0, 145,64, 20, 0, 0, 0, 0, 0, 1, 72, 18, 0,
- 0, 0, 0, 0, 4, 0, 8, 1, 0, 0, 0, 0, 129,0, 18, 0, 0, 0, 0, 0, 43, 144,12, 0, 0, 0, 0, 0, 253,109,30, 3, 0, 0, 0, 0, 32, 0, 2, 2,
- 0, 0, 0, 0, 144,5, 2, 1, 0, 0, 0, 0, 17, 117,64, 1, 0, 0, 0, 0, 145,65, 92, 3, 0, 0, 0, 0, 128,32, 0, 1, 0, 0, 0, 0, 4, 0, 10, 3,
- 0, 0, 0, 0, 20, 96, 46, 2, 0, 0, 0, 0, 16, 40, 0, 1, 0, 0, 0, 0, 144,3, 0, 2, 0, 0, 0, 0, 125,253,94, 2, 0, 0, 0, 0, 12, 125,110,1,
- 0, 0, 0, 0, 32, 1, 2, 0, 0, 0, 0, 0, 28, 40, 0, 0, 0, 32, 0, 0, 16, 0, 2, 1, 0, 48, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 129,65, 0, 1,
- 0, 0, 0, 0, 64, 0, 16, 2, 0, 0, 0, 0, 213,109,93, 2, 0, 0, 0, 0, 64, 8, 40, 0, 0, 0, 0, 0, 24, 88, 60, 0, 0, 0, 0, 0, 17, 5, 26, 1,
- 0, 0, 0, 0, 85, 44, 9, 0, 0, 104,2, 0, 131,125,4, 0, 0, 0, 0, 0, 17, 65, 26, 0, 0, 0, 0, 0, 16, 0, 14, 0, 0, 0, 0, 0, 64, 132,0, 0,
- 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 145,88, 0, 0, 0, 0, 0, 0, 2, 24, 68, 0, 16, 0, 0, 0, 25, 97, 0, 1, 0, 0, 0, 0, 36, 161,2, 0,
- 0, 240,63, 0, 64, 0, 4, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,105,28, 3, 0, 0, 0, 0, 66, 32, 74, 0, 0, 0, 0, 0, 17, 9, 16, 0,
- 0, 64, 0, 0, 17, 72, 0, 1, 0, 0, 0, 0, 2, 64, 6, 0, 0, 0, 0, 0, 36, 4, 0, 0, 0, 0, 0, 0, 1, 160,0, 0, 0, 8, 0, 0, 0, 128,8, 0,
- 0, 0, 0, 0, 1, 0, 5, 0, 0, 0, 0, 0, 128,37, 0, 1, 0, 192,0, 64, 255,255,222,0, 0, 0, 0, 0, 6, 136,2, 0, 0, 0, 0, 0, 0, 88, 6, 0,
- 0, 0, 0, 0, 0, 48, 16, 0, 0, 0, 0, 0, 128,73, 0, 0, 0, 0, 0, 0, 8, 132,2, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 145,32, 24, 1,
- 0, 0, 0, 0, 29, 121,26, 0, 0, 0, 0, 0, 21, 0, 4, 0, 0, 0, 0, 0, 145,201,9, 2, 0, 0, 0, 0, 2, 48, 64, 0, 0, 0, 0, 0, 36, 4, 1, 0,
- 0, 0, 0, 0, 128,1, 26, 1, 0, 0, 0, 0, 2, 65, 4, 0, 16, 116,56, 0, 255,255,255,3, 0, 0, 0, 0, 24, 32, 12, 1, 0, 0, 0, 0, 0, 67, 0, 0,
- 0, 0, 0, 0, 12, 6, 96, 1, 0, 0, 0, 0, 134,56, 6, 0, 0, 0, 0, 0, 151,73, 18, 2, 0, 0, 0, 0, 0, 100,18, 2, 0, 0, 0, 0, 149,109,2, 1,
- 0, 0, 0, 0, 3, 80, 10, 0, 128,0, 0, 0, 153,235,22, 1, 0, 0, 0, 0, 81, 42, 2, 2, 0, 0, 0, 0, 17, 56, 2, 1, 128,0, 0, 0, 128,0, 0, 0,
- 0, 0, 0, 0, 244,0, 36, 0, 0, 0, 0, 0, 49, 0, 8, 2, 0, 0, 0, 0, 81, 201,30, 1, 0, 0, 0, 0, 0, 249,30, 0, 0, 0, 0, 0, 1, 3, 0, 0,
- 0, 0, 0, 0, 0, 104,6, 0, 0, 0, 0, 0, 1, 17, 2, 0, 0, 0, 0, 0, 153,25, 26, 1, 0, 0, 0, 0, 43, 188,46, 0, 0, 0, 0, 0, 9, 96, 4, 0,
- 0, 0, 0, 0, 25, 19, 2, 0, 0, 0, 0, 0, 145,77, 28, 0, 0, 0, 0, 0, 201,115,12, 1, 0, 0, 0, 0, 4, 73, 0, 0, 0, 0, 0, 0, 95, 73, 8, 0,
- 0, 0, 0, 0, 95, 209,30, 1, 0, 0, 0, 0, 128,36, 28, 0, 0, 0, 0, 0, 8, 136,14, 1, 0, 0, 0, 0, 146,32, 4, 0, 0, 0, 0, 0, 125,103,12, 3,
- 0, 0, 0, 0, 1, 4, 72, 0, 0, 0, 0, 0, 6, 208,76, 0, 0, 0, 0, 0, 145,65, 80, 2, 0, 0, 0, 0, 0, 52, 8, 1, 0, 0, 0, 0, 145,205,22, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 127,125,126,1, 0, 0, 0, 0, 72, 57, 12, 1, 0, 0, 0, 0, 0, 32, 76, 2, 0, 0, 0, 0, 18, 41, 4, 0,
- 0, 0, 0, 0, 159,91, 94, 0, 0, 0, 0, 0, 26, 8, 6, 0, 0, 0, 0, 0, 16, 1, 48, 0, 0, 0, 0, 0, 32, 84, 2, 0, 0, 0, 0, 0, 17, 3, 2, 1,
- 0, 32, 0, 0, 3, 16, 0, 0, 0, 0, 0, 0, 149,65, 126,1, 0, 32, 0, 0, 132,44, 142,0, 0, 0, 0, 0, 17, 7, 0, 1, 0, 0, 4, 0, 133,0, 0, 0,
- 0, 0, 0, 0, 8, 0, 66, 0, 0, 48, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 20, 64, 36, 0, 0, 32, 0, 0, 129,0, 68, 0, 0, 0, 0, 0, 17, 9, 12, 0,
- 0, 32, 0, 0, 16, 41, 4, 0, 0, 0, 0, 0, 125,28, 46, 1, 0, 96, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 8, 1, 0, 0, 0, 0, 0, 0, 186,6, 0,
- 0, 0, 0, 0, 24, 10, 6, 0, 0, 0, 0, 0, 89, 40, 4, 0, 0, 0, 0, 0, 2, 0, 8, 2, 0, 0, 0, 0, 41, 32, 70, 0, 0, 0, 0, 0, 2, 8, 0, 2,
- 0, 0, 0, 0, 17, 152,4, 1, 0, 0, 0, 0, 85, 1, 2, 2, 0, 0, 0, 0, 0, 80, 6, 0, 0, 0, 0, 0, 133,33, 52, 0, 0, 128,0, 0, 128,0, 0, 0,
- 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 23, 105,6, 0, 0, 34, 8, 0, 0, 128,0, 0, 0, 0, 0, 0, 17, 193,12, 0, 0, 0, 0, 0, 66, 0, 0, 1,
- 16, 32, 0, 64, 255,255,254,3, 0, 0, 0, 0, 204,184,62, 0, 0, 0, 0, 0, 22, 41, 4, 1, 0, 0, 0, 0, 128,104,0, 0, 0, 0, 0, 0, 83, 72, 18, 0,
- 0, 128,0, 0, 147,68, 10, 0, 0, 0, 0, 0, 17, 13, 12, 0, 0, 0, 0, 0, 0, 176,12, 0, 0, 0, 32, 0, 0, 64, 0, 0, 0, 0, 1, 0, 27, 61, 50, 0,
- 0, 0, 0, 0, 190,184,6, 0, 0, 0, 1, 0, 177,41, 6, 1, 0, 0, 0, 0, 0, 144,70, 0, 0, 64, 0, 0, 25, 72, 0, 1, 0, 0, 0, 0, 83, 73, 18, 0,
- 0, 0, 0, 0, 19, 24, 2, 0, 0, 0, 0, 0, 239,188,46, 2, 0, 0, 0, 0, 144,9, 68, 0, 0, 0, 0, 0, 128,68, 2, 0, 0, 0, 0, 0, 8, 93, 44, 0,
- 0, 16, 0, 0, 16, 64, 0, 0, 0, 0, 0, 0, 19, 65, 58, 2, 0, 0, 0, 0, 4, 0, 14, 2, 0, 0, 0, 0, 81, 33, 0, 0, 0, 32, 0, 0, 76, 184,14, 0,
- 0, 0, 0, 0, 147,64, 8, 0, 0, 0, 0, 0, 0, 48, 12, 0, 0, 0, 0, 0, 127,249,54, 1, 0, 0, 0, 0, 0, 33, 24, 0, 0, 0, 0, 0, 135,61, 44, 0,
- 0, 0, 0, 0, 17, 185,0, 0, 0, 0, 0, 0, 231,253,110,2, 0, 0, 0, 0, 4, 8, 72, 1, 0, 0, 0, 0, 16, 8, 64, 0, 0, 0, 0, 0, 254,55, 111,2,
- 0, 0, 0, 0, 17, 1, 18, 1, 0, 0, 0, 0, 104,0, 4, 0, 0, 0, 0, 0, 24, 4, 0, 0, 0, 0, 0, 0, 219,185,12, 0, 0, 0, 0, 0, 145,0, 6, 0,
- 0, 0, 0, 0, 20, 1, 16, 0, 0, 0, 0, 0, 20, 128,12, 0, 0, 0, 0, 0, 17, 9, 84, 0, 0, 0, 0, 0, 24, 8, 2, 0, 0, 0, 0, 0, 0, 40, 30, 0,
- 0, 32, 0, 0, 89, 24, 76, 0, 0, 0, 0, 0, 0, 40, 28, 0, 0, 0, 0, 0, 64, 32, 10, 1, 0, 0, 0, 0, 0, 24, 34, 0, 0, 0, 0, 0, 0, 208,16, 0,
- 0, 0, 0, 0, 9, 0, 128,1, 0, 224,4, 0, 0, 0, 64, 0, 0, 8, 0, 0, 239,248,94, 0, 0, 0, 0, 0, 17, 0, 2, 1, 0, 112,0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 156,0, 0, 0, 0, 0, 145,24, 2, 0, 0, 0, 0, 0, 198,172,33, 1, 0, 4, 0, 0, 0, 16, 26, 2, 0, 8, 0, 0, 149,65, 48, 1,
- 0, 0, 0, 0, 16, 177,88, 0, 0, 0, 0, 0, 4, 0, 52, 0, 0, 0, 0, 0, 80, 32, 0, 1, 0, 0, 0, 0, 51, 72, 30, 0, 0, 0, 0, 0, 4, 132,0, 0,
- 0, 0, 0, 0, 8, 36, 2, 1, 0, 0, 0, 0, 68, 120,20, 2, 0, 0, 0, 0, 149,109,20, 0, 0, 32, 0, 0, 75, 232,78, 1, 0, 32, 0, 0, 17, 8, 4, 0,
- 0, 32, 32, 0, 0, 64, 0, 0, 0, 48, 0, 0, 17, 105,12, 1, 0, 0, 0, 0, 2, 72, 4, 0, 0, 0, 0, 0, 10, 152,28, 0, 0, 32, 0, 0, 17, 1, 20, 1,
- 0, 240,4, 0, 0, 8, 12, 0, 0, 0, 0, 0, 129,65, 0, 2, 0, 0, 0, 0, 142,56, 126,2, 0, 0, 0, 0, 17, 8, 16, 1, 0, 0, 0, 0, 18, 0, 2, 2,
- 0, 0, 0, 0, 146,20, 4, 0, 0, 0, 0, 0, 21, 1, 8, 0, 0, 0, 0, 0, 193,64, 0, 0, 0, 0, 0, 0, 146,144,4, 0, 0, 0, 0, 0, 160,64, 16, 2,
- 0, 0, 0, 0, 32, 72, 8, 0, 0, 0, 0, 0, 217,72, 2, 0, 0, 0, 0, 0, 2, 16, 12, 1, 0, 32, 0, 0, 244,91, 76, 1, 0, 0, 0, 0, 145,77, 20, 0,
- 0, 0, 0, 0, 132,1, 4, 1, 0, 96, 0, 0, 65, 128,12, 1, 0, 0, 0, 0, 33, 0, 10, 0, 0, 96, 4, 0, 16, 1, 12, 0, 0, 0, 0, 0, 12, 168,12, 0,
- 0, 0, 0, 0, 16, 67, 20, 1, 0, 0, 0, 0, 89, 221,6, 0, 0, 0, 0, 0, 19, 64, 4, 0, 0, 0, 0, 0, 155,81, 30, 2, 0, 0, 0, 0, 4, 32, 128,1,
- 0, 0, 0, 0, 253,103,24, 0, 0, 16, 0, 0, 2, 1, 46, 0, 0, 0, 0, 0, 2, 0, 144,0, 0, 96, 32, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 16, 12, 1,
- 0, 8, 0, 0, 1, 129,4, 0, 0, 0, 0, 0, 16, 73, 20, 1, 0, 0, 0, 0, 17, 80, 36, 0, 0, 0, 0, 0, 211,93, 77, 0, 0, 0, 0, 0, 200,116,8, 1,
- 0, 0, 0, 0, 21, 5, 78, 2, 0, 32, 0, 0, 68, 0, 148,0, 0, 0, 0, 0, 9, 44, 6, 0, 0, 0, 0, 0, 129,113,0, 0, 0, 0, 0, 0, 157,229,5, 0,
- 0, 0, 32, 0, 16, 0, 8, 0, 0, 0, 0, 0, 1, 64, 50, 0, 0, 0, 0, 0, 44, 0, 2, 0, 0, 0, 2, 0, 17, 48, 4, 0, 0, 4, 0, 0, 255,255,254,3,
- 0, 0, 0, 0, 133,21, 2, 0, 0, 0, 0, 0, 18, 73, 18, 0, 0, 0, 0, 0, 0, 16, 78, 0, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,0, 1,
- 0, 0, 0, 0, 25, 105,22, 0, 0, 0, 0, 0, 68, 56, 10, 1, 0, 0, 0, 0, 49, 0, 172,2, 0, 0, 0, 0, 8, 64, 68, 0, 0, 0, 0, 0, 13, 32, 6, 2,
- 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 16, 77, 0, 0, 0, 224,30, 0, 25, 32, 132,0, 0, 224,30, 0, 0, 0, 0, 0, 0, 224,6, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 57, 73, 8, 0, 0, 0, 0, 0, 0, 32, 20, 2, 0, 0, 0, 0, 48, 48, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 0, 0, 16, 81, 0, 1,
- 0, 0, 0, 0, 19, 89, 16, 0, 0, 0, 2, 0, 64, 0, 0, 0, 0, 0, 0, 0, 253,249,62, 2, 0, 32, 0, 0, 0, 16, 140,1, 0, 0, 0, 0, 16, 128,24, 0,
- 0, 0, 0, 0, 62, 116,14, 0, 0, 0, 0, 0, 81, 69, 8, 0, 16, 0, 0, 0, 127,125,127,2, 0, 0, 0, 0, 136,40, 8, 0, 0, 2, 0, 0, 219,89, 71, 1,
- 0, 0, 0, 0, 4, 32, 5, 0, 0, 0, 0, 0, 0, 3, 8, 0, 0, 0, 0, 0, 25, 177,0, 0, 0, 0, 0, 0, 20, 44, 4, 0, 0, 32, 0, 0, 0, 40, 8, 0,
- 0, 32, 0, 0, 20, 9, 4, 0, 0, 32, 0, 0, 10, 32, 12, 0, 0, 0, 0, 0, 19, 77, 0, 0, 0, 0, 0, 0, 28, 32, 132,0, 0, 0, 0, 0, 17, 5, 72, 0,
- 0, 0, 0, 0, 0, 48, 72, 0, 0, 40, 0, 0, 119,201,118,0, 0, 0, 0, 0, 0, 72, 18, 0, 0, 0, 0, 0, 243,253,79, 1, 0, 0, 0, 0, 4, 11, 0, 0,
- 0, 0, 0, 0, 42, 12, 70, 1, 0, 0, 1, 0, 213,121,94, 1, 0, 0, 0, 0, 194,0, 26, 0, 0, 0, 0, 0, 0, 97, 0, 1, 0, 32, 0, 0, 10, 128,68, 0,
- 0, 0, 0, 0, 17, 97, 20, 0, 0, 48, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 36, 116,12, 0, 0, 0, 0, 0, 8, 16, 66, 0, 0, 0, 0, 0, 73, 58, 46, 0,
- 0, 4, 0, 0, 81, 65, 16, 1, 0, 0, 0, 0, 28, 4, 14, 1, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 36, 8, 0, 0, 0, 0, 0, 13, 4, 14, 0,
- 0, 16, 0, 0, 153,73, 70, 3, 0, 0, 0, 0, 12, 4, 0, 1, 0, 0, 0, 0, 29, 64, 0, 0, 0, 0, 0, 0, 0, 65, 16, 2, 0, 0, 0, 0, 4, 0, 6, 1,
- 0, 0, 0, 0, 13, 160,80, 1, 0, 0, 2, 0, 160,228,20, 0, 0, 0, 0, 0, 148,12, 0, 0, 0, 0, 0, 0, 0, 168,12, 0, 0, 0, 0, 0, 80, 1, 16, 0,
- 0, 0, 0, 0, 18, 32, 12, 0, 0, 0, 0, 0, 4, 0, 46, 0, 0, 0, 0, 0, 0, 137,8, 0, 0, 0, 0, 0, 19, 157,0, 0, 0, 128,0, 0, 16, 33, 4, 0,
- 0, 224,62, 0, 16, 65, 4, 0, 0, 0, 0, 0, 213,121,28, 3, 0, 0, 0, 0, 0, 16, 40, 0, 0, 0, 0, 0, 1, 16, 38, 2, 0, 0, 0, 0, 211,59, 30, 0,
- 0, 0, 0, 0, 4, 16, 0, 1, 0, 0, 0, 0, 13, 4, 0, 0, 0, 32, 0, 0, 8, 16, 6, 0, 0, 0, 0, 0, 147,64, 6, 2, 0, 0, 0, 0, 151,27, 14, 2,
- 0, 0, 0, 0, 129,64, 0, 1, 0, 0, 0, 0, 18, 0, 16, 2, 0, 0, 0, 0, 78, 36, 0, 0, 0, 0, 0, 0, 223,255,31, 1, 0, 0, 0, 0, 132,40, 4, 3,
- 0, 0, 0, 0, 25, 0, 76, 0, 16, 100,1, 0, 255,255,255,3, 0, 0, 0, 0, 254,124,15, 0, 0, 0, 0, 0, 17, 64, 66, 0, 0, 0, 0, 0, 128,32, 64, 0,
- 0, 0, 0, 0, 132,22, 142,0, 0, 0, 0, 0, 184,25, 110,0, 0, 0, 0, 0, 176,57, 6, 0, 0, 0, 0, 0, 187,107,46, 1, 0, 0, 0, 0, 40, 60, 14, 0,
- 0, 0, 0, 0, 13, 41, 6, 1, 0, 0, 0, 0, 251,220,14, 1, 0, 0, 0, 0, 24, 8, 16, 0, 0, 0, 0, 0, 17, 40, 76, 0, 0, 0, 0, 0, 64, 32, 41, 0,
- 0, 0, 0, 0, 17, 1, 0, 3, 0, 0, 0, 0, 68, 49, 2, 0, 0, 0, 0, 0, 20, 65, 8, 0, 0, 0, 0, 0, 49, 1, 2, 0, 0, 64, 0, 0, 151,93, 26, 2,
- 0, 0, 0, 0, 4, 57, 6, 0, 0, 0, 0, 0, 129,9, 16, 0, 0, 0, 0, 0, 0, 224,0, 0, 0, 0, 0, 0, 8, 128,8, 0, 0, 0, 0, 0, 0, 136,2, 0,
- 0, 0, 0, 0, 65, 42, 0, 0, 0, 32, 0, 0, 113,65, 20, 0, 0, 0, 0, 0, 17, 65, 70, 0, 0, 0, 0, 0, 144,25, 0, 0, 0, 68, 0, 0, 17, 64, 16, 0,
- 0, 0, 0, 0, 192,40, 32, 0, 0, 232,28, 0, 0, 0, 0, 0, 16, 0, 0, 0, 219,121,94, 1, 0, 0, 0, 0, 0, 53, 64, 1, 0, 0, 0, 0, 51, 75, 68, 0,
- 0, 0, 0, 0, 203,124,14, 0, 0, 0, 0, 0, 128,4, 68, 0, 0, 0, 0, 0, 129,48, 94, 0, 0, 0, 0, 0, 172,57, 30, 0, 0, 0, 0, 0, 136,64, 0, 0,
- 0, 0, 0, 0, 16, 4, 12, 2, 0, 0, 0, 0, 0, 4, 8, 2, 16, 0, 0, 0, 189,9, 12, 0, 0, 0, 0, 0, 147,105,22, 0, 0, 32, 0, 0, 128,0, 6, 0,
- 0, 0, 0, 0, 148,129,8, 0, 0, 0, 0, 0, 219,217,86, 2, 0, 0, 0, 0, 24, 56, 78, 2, 0, 0, 0, 0, 19, 40, 0, 0, 0, 0, 0, 0, 2, 1, 32, 0,
- 0, 0, 0, 0, 16, 33, 8, 2, 0, 0, 0, 0, 147,125,78, 1, 0, 0, 0, 0, 64, 41, 46, 1, 0, 0, 0, 0, 145,81, 22, 0, 0, 0, 0, 0, 84, 0, 8, 0,
- 0, 0, 0, 0, 17, 33, 8, 0, 0, 0, 16, 0, 20, 40, 14, 0, 0, 0, 0, 0, 52, 16, 36, 1, 0, 0, 0, 0, 17, 193,4, 0, 0, 0, 0, 0, 145,93, 94, 0,
- 0, 0, 0, 0, 41, 186,98, 3, 0, 0, 0, 0, 144,44, 6, 1, 0, 0, 0, 0, 152,48, 8, 0, 0, 0, 0, 0, 0, 33, 16, 0, 0, 0, 8, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 138,56, 10, 0, 0, 0, 0, 0, 255,253,127,1, 0, 32, 0, 0, 240,186,126,3, 0, 0, 0, 0, 0, 68, 18, 0, 0, 0, 0, 0, 255,241,14, 0,
- 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 1, 0, 4, 148,0, 0, 0, 0, 1, 0, 237,55, 238,1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 5, 12, 0,
- 0, 0, 0, 0, 16, 103,0, 1, 0, 0, 0, 0, 1, 1, 48, 0, 0, 0, 0, 0, 120,176,36, 0, 0, 0, 0, 0, 4, 48, 4, 0, 0, 0, 0, 0, 5, 2, 0, 0,
- 0, 0, 0, 0, 88, 1, 4, 0, 0, 32, 0, 0, 0, 105,14, 0, 0, 112,32, 0, 17, 65, 4, 0, 0, 0, 0, 0, 145,81, 0, 1, 0, 0, 0, 0, 112,8, 36, 0,
- 0, 32, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 32, 56, 82, 0, 0, 0, 0, 0, 146,65, 12, 2, 0, 0, 0, 0, 144,80, 2, 2, 0, 0, 0, 0, 34, 128,4, 0,
- 0, 0, 0, 0, 1, 176,0, 0, 0, 0, 0, 0, 5, 64, 1, 0, 0, 0, 0, 0, 12, 36, 4, 0, 0, 0, 0, 0, 91, 121,30, 1, 0, 0, 0, 0, 196,44, 2, 0,
- 0, 32, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 65, 40, 2, 0, 0, 224,42, 0, 0, 16, 6, 0, 0, 32, 0, 0, 0, 12, 64, 0, 0, 0, 0, 0, 76, 32, 12, 1,
- 0, 0, 0, 0, 11, 128,52, 0, 0, 0, 0, 0, 196,32, 10, 1, 0, 8, 0, 0, 127,125,92, 3, 0, 0, 0, 0, 64, 48, 12, 0, 16, 66, 1, 0, 217,249,78, 3,
- 0, 128,0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65, 64, 0, 0, 160,0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 48, 80, 12, 2, 0, 0, 1, 0, 64, 89, 0, 1,
- 0, 0, 0, 0, 212,137,24, 0, 0, 0, 0, 0, 172,253,94, 2, 0, 0, 0, 0, 0, 144,16, 0, 0, 0, 0, 0, 128,192,64, 0, 0, 32, 32, 0, 128,64, 0, 0,
- 0, 0, 0, 0, 189,201,30, 1, 0, 0, 0, 0, 4, 12, 43, 0, 0, 0, 0, 0, 0, 64, 2, 2, 0, 0, 0, 0, 65, 73, 0, 0, 0, 160,1, 0, 94, 121,124,0,
- 0, 0, 0, 0, 70, 32, 12, 0, 0, 0, 0, 0, 21, 96, 24, 0, 0, 0, 0, 0, 4, 141,6, 0, 0, 0, 0, 0, 16, 73, 2, 1, 0, 0, 0, 0, 4, 240,1, 0,
- 0, 0, 0, 0, 142,56, 44, 2, 0, 0, 0, 0, 72, 3, 12, 0, 0, 240,61, 0, 2, 16, 38, 0, 0, 0, 0, 0, 145,1, 20, 0, 0, 0, 0, 0, 17, 113,82, 2,
- 0, 0, 0, 0, 128,9, 4, 2, 0, 4, 0, 0, 247,127,76, 1, 0, 0, 0, 0, 74, 0, 4, 0, 0, 0, 0, 0, 0, 4, 24, 0, 0, 0, 0, 0, 247,104,140,3,
- 0, 224,8, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 68, 12, 0, 0, 0, 0, 0, 25, 1, 68, 0, 0, 0, 0, 0, 103,176,54, 2, 0, 0, 0, 0, 4, 1, 0, 2,
- 0, 0, 0, 0, 12, 40, 4, 0, 0, 0, 0, 0, 151,65, 8, 2, 0, 0, 0, 0, 209,121,92, 2, 0, 0, 0, 0, 65, 40, 0, 2, 0, 0, 0, 0, 0, 64, 128,2,
- 0, 8, 0, 0, 223,253,126,2, 0, 0, 0, 0, 72, 53, 70, 3, 0, 0, 0, 0, 16, 80, 16, 1, 0, 96, 0, 0, 8, 0, 6, 0, 0, 0, 0, 0, 64, 41, 3, 0,
- 0, 0, 0, 0, 17, 85, 16, 0, 0, 0, 0, 0, 16, 48, 10, 0, 0, 0, 0, 0, 21, 166,14, 0, 0, 0, 0, 0, 12, 4, 2, 0, 0, 0, 0, 0, 32, 8, 70, 0,
- 0, 0, 0, 0, 17, 81, 80, 0, 0, 0, 0, 0, 53, 160,0, 0, 0, 0, 0, 0, 179,73, 70, 0, 0, 0, 0, 0, 10, 0, 12, 0, 0, 0, 0, 0, 11, 144,0, 0,
- 0, 0, 0, 0, 234,24, 14, 0, 0, 0, 0, 0, 106,88, 100,0, 0, 0, 0, 0, 4, 56, 0, 0, 0, 0, 0, 0, 145,73, 94, 0, 0, 0, 0, 0, 192,36, 2, 1,
- 0, 0, 0, 0, 64, 8, 130,1, 0, 32, 0, 0, 0, 32, 68, 0, 0, 0, 0, 0, 0, 40, 12, 2, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 17, 89, 22, 0,
- 0, 32, 0, 0, 130,0, 4, 1, 0, 0, 0, 0, 64, 52, 4, 0, 0, 0, 16, 0, 95, 59, 46, 3, 0, 192,5, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 96, 8, 0,
- 0, 0, 0, 0, 8, 58, 0, 0, 0, 0, 0, 0, 25, 8, 24, 0, 0, 0, 0, 0, 17, 64, 12, 1, 0, 0, 0, 0, 24, 88, 12, 0, 16, 128,0, 0, 255,189,110,2,
- 0, 0, 0, 0, 2, 16, 64, 0, 0, 0, 0, 0, 0, 32, 68, 1, 0, 32, 0, 0, 16, 1, 4, 2, 0, 0, 0, 0, 20, 213,8, 0, 0, 128,0, 0, 25, 65, 22, 0,
- 0, 0, 0, 0, 16, 8, 12, 0, 0, 0, 0, 0, 21, 0, 0, 1, 0, 0, 0, 0, 0, 65, 18, 0, 0, 0, 0, 0, 16, 0, 132,0, 0, 0, 0, 0, 0, 161,0, 1,
- 0, 0, 0, 0, 5, 96, 2, 0, 0, 0, 0, 0, 145,201,24, 0, 0, 0, 0, 0, 144,65, 2, 0, 0, 0, 0, 0, 25, 160,8, 0, 0, 0, 16, 0, 21, 105,84, 1,
- 0, 0, 0, 0, 19, 1, 4, 2, 0, 128,0, 0, 55, 121,24, 1, 0, 0, 0, 0, 68, 16, 10, 0, 0, 0, 0, 0, 17, 72, 52, 0, 0, 0, 0, 0, 83, 89, 88, 2,
- 0, 0, 0, 0, 16, 45, 66, 0, 0, 0, 0, 0, 48, 17, 0, 1, 0, 0, 4, 0, 0, 16, 0, 0, 0, 244,1, 4, 255,255,255,3, 0, 144,0, 0, 0, 64, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 16, 96, 64, 0, 0, 0, 2, 0, 0, 0, 4, 0, 20, 0, 3, 0, 255,255,255,3, 0, 16, 0, 0, 8, 64, 0, 0,
- 0, 0, 0, 0, 0, 169,38, 0, 0, 0, 0, 0, 149,93, 29, 2, 0, 0, 0, 0, 32, 160,4, 0, 0, 0, 0, 0, 8, 60, 78, 1, 0, 0, 0, 0, 17, 73, 24, 1,
- 0, 0, 0, 0, 4, 72, 66, 0, 0, 0, 0, 0, 32, 104,28, 0, 0, 0, 0, 0, 145,17, 70, 0, 0, 0, 0, 0, 10, 32, 10, 0, 0, 0, 0, 0, 123,89, 22, 0,
- 0, 0, 0, 0, 0, 56, 98, 0, 0, 0, 0, 0, 20, 104,4, 0, 0, 0, 0, 0, 5, 12, 0, 0, 0, 0, 0, 0, 13, 76, 12, 2, 0, 0, 0, 0, 48, 0, 16, 0,
- 0, 0, 0, 0, 25, 105,16, 0, 0, 0, 0, 0, 9, 40, 30, 0, 0, 0, 0, 0, 1, 124,20, 0, 0, 0, 0, 0, 76, 44, 190,2, 0, 0, 1, 0, 48, 76, 12, 0,
- 0, 32, 0, 0, 18, 65, 68, 0, 0, 0, 0, 0, 20, 1, 68, 0, 0, 0, 0, 0, 245,221,28, 1, 0, 0, 0, 0, 252,53, 94, 3, 0, 0, 0, 0, 64, 40, 0, 2,
- 0, 0, 0, 0, 68, 5, 9, 2, 0, 0, 0, 0, 5, 116,46, 1, 0, 0, 0, 0, 4, 1, 1, 2, 0, 0, 0, 0, 86, 40, 0, 2, 0, 0, 0, 0, 32, 120,12, 0,
- 0, 0, 0, 0, 72, 68, 4, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 44, 32, 38, 2, 0, 0, 0, 0, 9, 32, 20, 0, 0, 0, 0, 0, 27, 65, 31, 1,
- 0, 0, 0, 0, 8, 1, 14, 0, 0, 32, 0, 0, 0, 65, 12, 0, 0, 0, 0, 0, 16, 96, 14, 0, 0, 0, 0, 0, 1, 112,116,0, 0, 0, 0, 0, 64, 64, 0, 1,
- 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 6, 20, 4, 2, 0, 0, 0, 0, 0, 64, 8, 2, 0, 0, 0, 0, 19, 153,16, 0, 0, 0, 0, 0, 145,8, 16, 0,
- 0, 0, 0, 0, 253,119,62, 3, 0, 0, 0, 0, 196,20, 46, 1, 0, 32, 0, 0, 0, 32, 128,0, 0, 0, 0, 0, 0, 60, 0, 1, 0, 32, 0, 0, 2, 32, 36, 1,
- 0, 0, 0, 0, 78, 140,45, 0, 0, 0, 0, 0, 69, 236,12, 0, 0, 32, 0, 0, 132,76, 20, 0, 0, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 10, 40, 0, 0,
- 0, 0, 0, 0, 36, 168,70, 2, 0, 0, 0, 0, 145,73, 22, 1, 0, 0, 0, 0, 64, 41, 8, 0, 0, 96, 62, 0, 1, 0, 4, 0, 0, 0, 0, 0, 64, 58, 4, 0,
- 0, 0, 0, 0, 149,205,86, 1, 0, 32, 0, 0, 78, 61, 6, 3, 0, 32, 0, 0, 22, 89, 68, 1, 0, 0, 0, 0, 20, 44, 10, 0, 0, 0, 0, 0, 17, 32, 20, 1,
- 0, 0, 0, 0, 0, 42, 4, 0, 0, 0, 0, 0, 255,253,63, 2, 0, 0, 0, 0, 238,191,62, 3, 0, 0, 0, 0, 0, 4, 192,0, 0, 0, 0, 0, 17, 1, 128,0,
- 0, 0, 0, 0, 0, 16, 12, 2, 0, 0, 0, 0, 17, 193,16, 0, 0, 0, 0, 0, 24, 0, 1, 0, 0, 0, 0, 0, 129,69, 0, 1, 0, 0, 0, 0, 17, 97, 16, 1,
- 0, 0, 0, 0, 16, 32, 68, 1, 0, 0, 0, 0, 24, 46, 12, 2, 0, 0, 0, 0, 155,172,44, 2, 0, 32, 8, 0, 144,1, 12, 0, 0, 0, 0, 0, 217,89, 116,0,
- 0, 0, 0, 0, 0, 48, 40, 1, 0, 0, 0, 0, 16, 16, 10, 3, 0, 0, 0, 0, 0, 128,82, 0, 0, 0, 0, 0, 14, 104,172,0, 0, 32, 32, 0, 17, 137,0, 0,
- 0, 32, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 68, 56, 4, 2, 0, 0, 0, 0, 80, 104,4, 0, 0, 0, 0, 0, 145,105,0, 1, 0, 0, 0, 0, 76, 40, 2, 0,
- 0, 0, 0, 0, 32, 176,4, 0, 0, 0, 0, 0, 149,121,70, 1, 0, 0, 0, 0, 64, 5, 0, 0, 0, 0, 0, 0, 24, 41, 2, 0, 0, 0, 0, 0, 31, 160,12, 2,
- 0, 0, 0, 0, 0, 13, 16, 0, 0, 4, 0, 0, 8, 0, 4, 0, 0, 48, 0, 0, 2, 85, 12, 0, 0, 0, 0, 0, 33, 32, 4, 2, 0, 0, 0, 0, 149,205,109,2,
- 0, 0, 0, 0, 68, 40, 6, 0, 0, 0, 0, 0, 21, 0, 2, 0, 0, 0, 0, 0, 5, 8, 0, 2, 0, 0, 0, 0, 0, 68, 16, 1, 0, 0, 0, 0, 17, 77, 8, 0,
- 0, 0, 0, 0, 84, 104,2, 0, 0, 240,52, 0, 55, 221,76, 1, 0, 112,16, 0, 0, 0, 64, 0, 0, 208,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 57, 26, 0,
- 0, 0, 0, 0, 40, 32, 0, 0, 0, 0, 0, 0, 32, 96, 40, 0, 0, 0, 0, 0, 0, 32, 118,0, 0, 16, 0, 0, 25, 64, 18, 0, 1, 240,63, 0, 9, 0, 4, 0,
- 0, 0, 0, 0, 8, 8, 22, 0, 0, 0, 0, 0, 21, 48, 32, 0, 0, 0, 0, 0, 149,125,94, 3, 0, 0, 0, 0, 72, 238,8, 0, 0, 32, 0, 0, 16, 65, 64, 1,
- 0, 0, 0, 0, 16, 44, 14, 0, 0, 32, 0, 0, 49, 65, 84, 0, 0, 0, 0, 0, 64, 152,4, 0, 0, 0, 0, 0, 17, 108,8, 0, 0, 0, 0, 0, 4, 41, 20, 0,
- 0, 0, 0, 0, 29, 124,5, 2, 0, 32, 0, 0, 145,5, 0, 0, 0, 32, 0, 0, 16, 40, 4, 0, 0, 32, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 16, 0, 136,0,
- 0, 0, 0, 0, 20, 36, 0, 0, 0, 0, 0, 0, 76, 140,76, 2, 0, 48, 32, 0, 157,95, 20, 1, 0, 32, 0, 0, 0, 32, 20, 0, 0, 0, 0, 0, 209,68, 16, 0,
- 0, 0, 0, 0, 72, 28, 4, 1, 0, 32, 0, 0, 16, 13, 4, 0, 0, 0, 0, 0, 5, 104,4, 0, 0, 0, 0, 0, 12, 0, 36, 0, 0, 0, 0, 0, 17, 41, 12, 0,
- 0, 32, 0, 0, 20, 12, 0, 0, 0, 0, 0, 0, 4, 16, 12, 0, 0, 2, 0, 0, 31, 253,78, 0, 0, 0, 0, 0, 2, 56, 0, 0, 0, 0, 0, 0, 160,0, 18, 0,
- 0, 2, 0, 0, 17, 65, 0, 0, 0, 0, 0, 0, 137,81, 0, 2, 0, 0, 0, 0, 194,145,4, 0, 0, 64, 0, 0, 33, 129,40, 0, 0, 0, 0, 0, 110,173,46, 1,
- 0, 96, 0, 0, 35, 84, 12, 0, 0, 32, 0, 0, 49, 0, 8, 1, 0, 0, 0, 0, 28, 24, 12, 1, 0, 32, 0, 0, 17, 19, 4, 1, 0, 0, 0, 0, 2, 8, 68, 0,
- 0, 0, 0, 0, 133,69, 28, 0, 0, 0, 0, 0, 4, 9, 2, 0, 0, 0, 0, 0, 25, 73, 18, 0, 0, 0, 0, 0, 68, 40, 0, 0, 0, 0, 0, 0, 1, 40, 6, 2,
- 0, 0, 0, 0, 69, 16, 0, 0, 0, 0, 0, 0, 0, 10, 0, 2, 0, 32, 0, 0, 64, 32, 12, 2, 0, 0, 0, 0, 14, 175,110,0, 0, 0, 0, 0, 3, 9, 4, 3,
- 0, 0, 0, 0, 144,64, 4, 2, 0, 0, 0, 0, 81, 104,22, 0, 0, 0, 0, 0, 100,168,138,0, 0, 0, 0, 0, 1, 5, 2, 0, 0, 0, 0, 0, 181,253,56, 3,
- 0, 0, 0, 0, 88, 4, 2, 1, 0, 32, 0, 0, 92, 8, 4, 0, 0, 0, 0, 0, 145,81, 16, 1, 0, 0, 0, 0, 69, 0, 74, 1, 0, 0, 0, 0, 0, 160,77, 0,
- 0, 0, 0, 0, 19, 16, 0, 0, 0, 0, 0, 0, 255,253,95, 3, 0, 0, 0, 0, 232,40, 14, 2, 0, 0, 0, 0, 16, 65, 40, 0, 0, 0, 0, 0, 64, 42, 130,0,
- 0, 0, 0, 0, 64, 136,8, 2, 0, 32, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 68, 40, 142,0, 0, 0, 0, 0, 0, 5, 16, 0, 0, 0, 0, 0, 19, 65, 4, 3,
- 0, 0, 0, 0, 10, 8, 74, 1, 0, 0, 0, 0, 84, 56, 132,0, 0, 96, 0, 0, 14, 128,68, 0, 0, 0, 4, 0, 145,69, 8, 0, 0, 0, 0, 0, 20, 96, 36, 0,
- 0, 0, 0, 0, 145,73, 10, 2, 0, 0, 0, 0, 70, 48, 138,0, 0, 224,1, 0, 0, 0, 0, 0, 16, 40, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 17, 205,12, 1,
- 0, 112,8, 0, 28, 82, 4, 0, 0, 96, 0, 0, 4, 80, 4, 0, 16, 0, 0, 0, 253,255,63, 3, 0, 0, 0, 0, 200,44, 18, 2, 0, 0, 0, 0, 144,73, 16, 1,
- 0, 0, 0, 0, 0, 169,32, 1, 0, 0, 0, 0, 34, 0, 32, 0, 0, 0, 0, 0, 12, 40, 0, 0, 0, 0, 0, 0, 73, 57, 14, 3, 0, 0, 0, 0, 0, 0, 44, 0,
- 0, 32, 0, 0, 16, 73, 0, 0, 0, 0, 0, 0, 213,248,76, 1, 0, 0, 0, 0, 16, 81, 4, 1, 0, 0, 0, 0, 36, 40, 0, 0, 0, 0, 0, 0, 44, 40, 252,2,
- 0, 0, 0, 0, 1, 41, 10, 2, 0, 0, 0, 0, 84, 104,12, 0, 0, 0, 0, 0, 8, 32, 76, 0, 0, 32, 0, 0, 0, 16, 36, 0, 0, 0, 0, 0, 149,237,28, 1,
- 0, 0, 0, 0, 8, 24, 24, 0, 0, 0, 0, 0, 4, 129,50, 0, 0, 0, 0, 0, 23, 52, 4, 0, 0, 0, 0, 0, 145,33, 4, 0, 0, 32, 0, 0, 82, 8, 4, 0,
- 0, 0, 0, 0, 145,1, 84, 0, 0, 0, 0, 0, 3, 1, 6, 0, 0, 0, 0, 0, 65, 48, 36, 2, 0, 0, 0, 0, 149,101,13, 2, 0, 0, 0, 0, 4, 32, 34, 0,
- 0, 0, 0, 0, 17, 25, 72, 0, 0, 0, 0, 0, 17, 77, 6, 0, 0, 0, 0, 0, 213,69, 94, 3, 0, 0, 0, 0, 132,41, 66, 0, 0, 32, 0, 0, 16, 44, 30, 1,
- 0, 240,14, 0, 223,246,12, 0, 0, 0, 0, 0, 190,65, 4, 0, 0, 0, 0, 0, 80, 200,136,0, 0, 0, 0, 0, 20, 67, 12, 0, 0, 32, 0, 0, 80, 29, 22, 0,
- 0, 0, 0, 0, 21, 40, 12, 1, 0, 0, 0, 0, 60, 44, 4, 2, 0, 0, 0, 0, 102,168,116,2, 0, 0, 0, 0, 0, 5, 4, 1, 0, 0, 0, 0, 132,40, 4, 2,
- 0, 0, 0, 0, 17, 97, 86, 1, 0, 0, 0, 0, 0, 32, 78, 1, 0, 0, 0, 0, 118,162,76, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 128,40, 10, 3,
- 0, 0, 0, 0, 0, 65, 12, 0, 0, 0, 0, 0, 17, 64, 14, 0, 0, 0, 0, 0, 16, 9, 0, 2, 0, 0, 0, 0, 181,109,19, 0, 0, 0, 0, 0, 160,40, 18, 0,
- 0, 0, 0, 0, 32, 33, 16, 0, 0, 0, 0, 0, 48, 32, 6, 2, 0, 0, 0, 0, 145,193,16, 1, 0, 0, 0, 0, 64, 1, 16, 0, 0, 0, 0, 0, 80, 16, 0, 0,
- 0, 0, 0, 0, 128,0, 30, 0, 0, 0, 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 2, 2, 8, 0, 0, 20, 0, 0, 25, 233,26, 1, 0, 0, 0, 0, 84, 57, 30, 1,
- 0, 0, 0, 0, 17, 76, 0, 0, 0, 0, 0, 0, 84, 96, 8, 0, 0, 0, 0, 0, 0, 32, 48, 0, 0, 240,9, 0, 0, 0, 4, 0, 0, 96, 0, 0, 8, 64, 6, 0,
- 0, 0, 0, 0, 43, 0, 8, 0, 0, 0, 0, 0, 83, 105,74, 2, 0, 0, 0, 0, 65, 133,8, 0, 0, 0, 0, 0, 64, 97, 4, 0, 0, 0, 0, 0, 107,188,14, 0,
- 0, 0, 1, 0, 159,217,4, 1, 0, 0, 0, 0, 10, 32, 40, 0, 0, 0, 0, 0, 10, 192,4, 0, 0, 32, 0, 0, 0, 192,4, 0, 0, 32, 0, 0, 18, 64, 0, 0,
- 0, 0, 0, 0, 16, 129,0, 1, 0, 0, 0, 0, 19, 144,4, 0, 0, 32, 0, 0, 16, 129,4, 0, 0, 0, 0, 0, 68, 24, 20, 0, 0, 32, 1, 0, 0, 1, 0, 1,
- 0, 0, 0, 0, 22, 116,30, 0, 0, 0, 0, 0, 2, 32, 16, 0, 0, 240,62, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0, 209,65, 4, 1,
- 0, 32, 0, 0, 8, 16, 12, 1, 0, 32, 0, 0, 86, 186,102,0, 0, 0, 0, 0, 144,128,0, 1, 0, 0, 0, 0, 5, 124,2, 0, 0, 0, 0, 0, 40, 8, 12, 0,
- 0, 0, 0, 0, 4, 68, 1, 0, 0, 0, 0, 0, 101,96, 60, 2, 0, 0, 0, 0, 16, 1, 1, 0, 0, 32, 0, 0, 32, 16, 4, 0, 0, 0, 0, 0, 20, 4, 8, 0,
- 0, 0, 0, 0, 17, 4, 10, 2, 0, 0, 0, 16, 149,101,29, 0, 0, 0, 0, 0, 10, 0, 14, 3, 0, 0, 0, 0, 241,185,86, 1, 0, 0, 0, 0, 16, 129,12, 0,
- 0, 0, 0, 0, 0, 40, 24, 2, 0, 0, 0, 0, 64, 32, 18, 0, 0, 0, 0, 0, 77, 64, 2, 0, 0, 32, 0, 0, 253,188,46, 2, 0, 0, 0, 0, 8, 16, 68, 0,
- 0, 0, 0, 0, 4, 0, 76, 0, 0, 0, 0, 0, 17, 17, 6, 0, 0, 0, 0, 0, 61, 217,14, 2, 0, 0, 0, 0, 41, 0, 4, 1, 0, 0, 0, 0, 9, 32, 4, 0,
- 0, 0, 0, 0, 17, 3, 14, 3, 0, 0, 0, 0, 1, 65, 0, 3, 0, 0, 0, 0, 0, 132,64, 0, 0, 0, 0, 0, 251,248,30, 0, 0, 0, 0, 0, 17, 52, 16, 0,
- 0, 0, 0, 0, 0, 16, 38, 1, 0, 0, 0, 0, 87, 77, 28, 2, 0, 0, 0, 0, 0, 164,14, 0, 0, 0, 0, 0, 72, 0, 28, 0, 0, 0, 0, 0, 84, 160,0, 0,
- 0, 0, 0, 0, 19, 81, 4, 0, 0, 0, 0, 0, 0, 224,8, 0, 0, 0, 0, 0, 0, 32, 90, 0, 0, 32, 0, 0, 17, 65, 12, 0, 0, 0, 0, 0, 18, 96, 16, 0,
- 0, 0, 0, 0, 17, 152,0, 0, 0, 32, 4, 0, 153,27, 4, 0, 0, 32, 4, 0, 64, 0, 0, 0, 0, 0, 0, 0, 255,237,92, 3, 0, 0, 0, 0, 36, 44, 30, 0,
- 0, 0, 0, 0, 144,69, 16, 2, 0, 0, 0, 0, 205,105,110,1, 0, 0, 0, 0, 0, 136,16, 0, 0, 0, 0, 0, 81, 137,58, 2, 0, 0, 0, 0, 20, 104,0, 0,
- 0, 32, 0, 0, 177,233,28, 1, 0, 96, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 8, 72, 10, 1, 0, 0, 0, 0, 4, 160,128,0, 0, 0, 0, 0, 4, 36, 12, 1,
- 0, 0, 0, 0, 17, 72, 20, 0, 0, 0, 0, 0, 8, 1, 18, 0, 0, 0, 0, 0, 4, 56, 30, 0, 0, 0, 0, 0, 16, 0, 130,0, 0, 0, 0, 0, 145,197,4, 0,
- 0, 0, 0, 0, 40, 24, 94, 0, 0, 128,0, 0, 64, 0, 4, 0, 0, 0, 0, 0, 21, 125,30, 0, 0, 0, 0, 0, 20, 49, 8, 0, 0, 0, 0, 0, 213,69, 28, 2,
- 0, 0, 0, 0, 64, 12, 2, 0, 0, 0, 0, 0, 17, 65, 64, 1, 0, 0, 0, 0, 183,247,30, 3, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 1, 12, 6, 0,
- 0, 0, 0, 0, 19, 113,68, 0, 0, 0, 0, 0, 50, 9, 8, 1, 0, 0, 0, 0, 36, 1, 2, 0, 0, 0, 0, 0, 25, 1, 16, 2, 0, 96, 0, 0, 131,176,6, 2,
- 0, 0, 0, 0, 53, 4, 0, 0, 0, 0, 0, 0, 16, 18, 0, 0, 0, 0, 0, 0, 0, 0, 152,0, 0, 8, 0, 0, 157,83, 18, 3, 0, 0, 0, 0, 205,53, 189,3,
- 0, 0, 0, 0, 145,5, 0, 2, 16, 0, 0, 0, 138,52, 6, 0, 0, 0, 0, 0, 16, 0, 36, 0, 0, 0, 0, 0, 80, 17, 16, 0, 0, 0, 0, 0, 52, 8, 44, 1,
- 0, 0, 0, 0, 21, 101,28, 0, 16, 0, 0, 0, 0, 0, 14, 0, 0, 32, 0, 0, 1, 0, 132,0, 0, 32, 0, 0, 17, 1, 4, 3, 0, 0, 0, 0, 64, 1, 10, 0,
- 0, 0, 0, 0, 20, 20, 12, 0, 0, 0, 0, 0, 16, 1, 64, 0, 0, 0, 0, 0, 12, 4, 1, 0, 0, 32, 0, 0, 1, 129,4, 0, 0, 32, 0, 0, 177,101,8, 3,
- 0, 0, 0, 0, 65, 1, 16, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 92, 0, 12, 0, 0, 96, 0, 0, 243,217,78, 0, 0, 32, 0, 0, 2, 0, 4, 2,
- 0, 224,4, 0, 0, 0, 4, 0, 0, 104,4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 1, 16, 0, 2, 0, 0, 0, 0, 95, 245,252,1, 0, 0, 0, 0, 0, 72, 38, 0,
- 0, 32, 0, 0, 8, 48, 6, 0, 0, 0, 0, 0, 1, 60, 12, 0, 0, 0, 0, 0, 1, 1, 28, 0, 0, 0, 0, 0, 149,37, 4, 2, 0, 0, 0, 0, 132,0, 12, 2,
- 0, 0, 0, 0, 85, 124,12, 0, 0, 0, 0, 0, 156,245,124,1, 0, 0, 0, 0, 0, 5, 4, 2, 0, 0, 0, 0, 0, 45, 14, 2, 0, 0, 0, 0, 104,0, 2, 0,
- 0, 0, 0, 0, 26, 17, 6, 0, 0, 0, 0, 0, 252,49, 46, 1, 0, 0, 0, 0, 19, 152,4, 0, 0, 0, 0, 0, 72, 4, 0, 0, 0, 8, 0, 0, 144,0, 0, 0,
- 0, 0, 0, 0, 16, 25, 68, 0, 0, 64, 0, 0, 24, 0, 12, 0, 0, 0, 2, 0, 80, 129,0, 0, 0, 0, 0, 0, 255,253,255,3, 0, 0, 0, 0, 68, 9, 10, 0,
- 0, 0, 0, 0, 149,69, 16, 2, 0, 0, 0, 0, 128,1, 12, 0, 0, 0, 0, 0, 50, 5, 12, 0, 0, 0, 0, 0, 95, 93, 118,1, 0, 0, 0, 0, 2, 8, 70, 0,
- 0, 0, 0, 0, 128,156,14, 0, 0, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 17, 5, 14, 2, 0, 0, 0, 0, 65, 65, 18, 0, 0, 0, 0, 0, 8, 32, 6, 2,
- 0, 0, 0, 0, 1, 106,0, 0, 0, 48, 0, 0, 73, 40, 31, 0, 0, 0, 0, 0, 28, 0, 12, 0, 0, 32, 0, 0, 26, 89, 68, 1, 0, 48, 0, 0, 0, 8, 0, 1,
- 0, 112,0, 0, 32, 16, 4, 0, 0, 32, 0, 0, 253,111,60, 3, 0, 0, 0, 0, 12, 36, 14, 0, 0, 0, 0, 0, 12, 0, 4, 1, 0, 0, 0, 0, 128,64, 0, 3,
- 0, 0, 0, 0, 28, 52, 78, 1, 0, 32, 0, 0, 77, 116,45, 2, 0, 0, 0, 0, 145,1, 0, 3, 0, 96, 0, 0, 8, 16, 68, 0, 0, 0, 0, 0, 65, 68, 12, 0,
- 0, 0, 0, 0, 129,68, 8, 0, 0, 0, 0, 0, 19, 65, 8, 3, 0, 0, 0, 0, 20, 4, 5, 0, 0, 0, 0, 0, 1, 81, 0, 0, 0, 32, 0, 0, 8, 32, 20, 0,
- 0, 0, 0, 0, 4, 36, 2, 0, 0, 0, 0, 0, 4, 21, 8, 0, 0, 32, 32, 0, 4, 172,108,0, 0, 0, 0, 0, 81, 68, 8, 0, 0, 0, 0, 0, 223,176,60, 0,
- 0, 0, 0, 0, 129,8, 2, 1, 0, 0, 0, 0, 1, 72, 2, 1, 0, 0, 0, 0, 144,0, 14, 0, 0, 0, 0, 0, 51, 209,6, 1, 0, 0, 0, 0, 8, 9, 2, 0,
- 0, 0, 0, 0, 4, 1, 8, 2, 0, 128,0, 0, 92, 97, 12, 3, 0, 0, 0, 0, 16, 1, 84, 0, 0, 0, 0, 0, 151,65, 22, 1, 0, 0, 0, 0, 36, 0, 38, 0,
- 0, 0, 0, 0, 37, 104,16, 0, 0, 0, 0, 0, 0, 97, 2, 0, 0, 0, 8, 0, 3, 0, 8, 0, 0, 0, 0, 64, 174,174,46, 1, 0, 32, 0, 0, 18, 0, 0, 0,
- 0, 0, 4, 0, 146,17, 4, 0, 0, 32, 0, 0, 184,65, 4, 1, 0, 0, 0, 0, 147,56, 8, 0, 0, 40, 0, 0, 149,223,94, 0, 0, 0, 0, 0, 4, 14, 6, 1,
- 0, 0, 0, 0, 20, 84, 4, 0, 0, 0, 0, 0, 36, 8, 96, 0, 0, 0, 0, 0, 9, 56, 10, 0, 0, 32, 0, 0, 12, 0, 4, 0, 0, 0, 0, 0, 4, 1, 10, 0,
- 0, 0, 0, 0, 127,229,63, 2, 0, 0, 0, 0, 24, 152,4, 0, 0, 0, 0, 0, 20, 128,0, 1, 0, 32, 5, 0, 14, 220,4, 0, 0, 96, 4, 0, 64, 16, 4, 0,
- 0, 96, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 181,253,118,2, 0, 0, 0, 0, 74, 8, 6, 0, 0, 0, 0, 0, 24, 104,22, 0, 0, 0, 0, 0, 161,0, 36, 0,
- 0, 0, 0, 0, 4, 80, 0, 0, 0, 0, 0, 0, 21, 120,4, 0, 0, 0, 0, 0, 34, 12, 6, 0, 0, 0, 0, 0, 64, 96, 4, 0, 0, 0, 0, 0, 149,173,28, 0,
- 0, 0, 0, 0, 8, 33, 30, 1, 0, 0, 0, 0, 16, 36, 140,0, 0, 0, 0, 0, 6, 32, 0, 0, 0, 0, 0, 0, 223,249,92, 0, 0, 0, 0, 0, 80, 32, 8, 0,
- 0, 0, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 160,32, 0, 0, 0, 0, 0, 20, 0, 0, 1, 0, 0, 0, 0, 4, 24, 2, 0, 0, 0, 1, 0, 213,201,62, 0,
- 0, 0, 0, 0, 6, 176,76, 0, 0, 0, 0, 0, 17, 48, 6, 2, 0, 0, 0, 0, 4, 28, 4, 0, 0, 0, 0, 0, 137,17, 0, 0, 0, 0, 0, 0, 145,77, 4, 1,
- 0, 0, 0, 0, 10, 33, 2, 0, 0, 32, 0, 0, 0, 1, 4, 1, 0, 0, 0, 0, 76, 189,142,0, 0, 0, 0, 0, 20, 33, 37, 0, 0, 0, 0, 0, 153,57, 70, 1,
- 0, 32, 0, 0, 48, 8, 4, 1, 0, 112,46, 0, 179,217,30, 0, 0, 0, 0, 0, 4, 72, 16, 0, 0, 0, 0, 0, 8, 32, 12, 1, 0, 0, 0, 0, 24, 32, 12, 0,
- 0, 0, 0, 0, 17, 97, 4, 2, 0, 16, 0, 0, 0, 192,4, 0, 0, 32, 0, 0, 21, 65, 48, 3, 0, 0, 0, 0, 254,191,252,3, 0, 0, 0, 0, 108,32, 8, 0,
- 0, 0, 0, 0, 77, 4, 8, 0, 0, 0, 0, 0, 145,68, 12, 0, 0, 0, 0, 0, 149,77, 12, 0, 0, 0, 0, 0, 6, 40, 1, 0, 0, 0, 0, 0, 132,28, 14, 0,
- 0, 0, 0, 0, 18, 9, 0, 0, 0, 0, 0, 0, 0, 16, 22, 0, 0, 0, 0, 0, 8, 168,4, 0, 0, 0, 0, 0, 1, 224,4, 0, 0, 0, 0, 0, 68, 40, 16, 0,
- 0, 0, 0, 0, 25, 113,2, 1, 0, 0, 0, 0, 36, 0, 12, 0, 0, 0, 0, 0, 12, 16, 138,0, 0, 0, 0, 0, 17, 16, 6, 0, 0, 0, 0, 0, 16, 113,0, 0,
- 0, 32, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 21, 65, 0, 1, 0, 0, 0, 0, 8, 0, 138,0, 0, 0, 0, 0, 16, 96, 20, 0, 0, 0, 0, 0, 77, 0, 28, 0,
- 0, 0, 0, 0, 1, 192,2, 0, 0, 0, 0, 0, 215,237,29, 1, 16, 0, 0, 0, 18, 121,80, 0, 0, 0, 0, 0, 17, 73, 66, 0, 0, 0, 0, 0, 73, 160,0, 0,
- 0, 0, 0, 0, 0, 144,8, 0, 0, 0, 0, 0, 17, 129,0, 0, 0, 0, 0, 0, 17, 73, 10, 3, 0, 0, 0, 0, 16, 32, 130,0, 0, 32, 0, 0, 66, 16, 0, 0,
- 0, 0, 0, 0, 95, 126,190,3, 0, 0, 0, 0, 2, 41, 2, 1, 0, 32, 0, 0, 8, 8, 70, 1, 0, 0, 0, 0, 216,17, 16, 0, 0, 32, 0, 0, 9, 16, 4, 0,
- 0, 0, 0, 0, 106,16, 94, 0, 0, 0, 0, 0, 144,8, 4, 0, 0, 0, 0, 0, 17, 209,18, 0, 0, 0, 0, 0, 4, 8, 174,0, 0, 32, 0, 0, 9, 1, 46, 0,
- 0, 32, 0, 0, 64, 0, 6, 2, 0, 0, 0, 0, 8, 2, 4, 1, 0, 0, 0, 0, 92, 36, 12, 2, 0, 96, 2, 0, 8, 136,44, 0, 0, 0, 0, 0, 17, 81, 20, 3,
- 0, 0, 0, 0, 134,84, 12, 0, 0, 0, 0, 0, 133,0, 8, 2, 0, 32, 2, 0, 16, 8, 4, 0, 0, 0, 0, 0, 40, 0, 4, 0, 0, 32, 0, 0, 255,255,255,3,
- 16, 0, 0, 0, 17, 73, 20, 1, 0, 0, 0, 0, 72, 0, 6, 0, 0, 0, 0, 0, 145,77, 30, 1, 0, 0, 0, 0, 0, 4, 4, 2, 0, 0, 0, 0, 9, 65, 18, 0,
- 0, 0, 0, 0, 20, 1, 8, 0, 0, 4, 0, 0, 49, 65, 16, 0, 0, 0, 0, 0, 145,104,2, 0, 0, 0, 0, 0, 0, 104,32, 0, 0, 0, 0, 0, 16, 193,20, 0,
- 0, 32, 0, 0, 0, 160,12, 2, 0, 8, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 88, 69, 24, 0, 0, 32, 0, 0, 0, 16, 56, 0, 0, 0, 0, 0, 145,192,22, 1,
- 0, 0, 0, 0, 40, 32, 22, 0, 0, 0, 0, 0, 21, 197,12, 2, 0, 0, 0, 0, 12, 160,0, 0, 0, 0, 0, 0, 145,65, 14, 2, 0, 0, 0, 0, 69, 65, 22, 0,
- 0, 0, 0, 0, 4, 96, 28, 2, 0, 0, 0, 0, 24, 8, 12, 0, 0, 0, 0, 0, 176,8, 0, 0, 0, 0, 0, 0, 2, 32, 4, 2, 0, 0, 0, 0, 5, 0, 8, 2,
- 0, 0, 0, 0, 84, 64, 4, 0, 0, 0, 0, 0, 4, 12, 70, 0, 0, 0, 0, 0, 124,53, 14, 3, 0, 0, 0, 0, 152,64, 0, 1, 0, 0, 0, 0, 17, 1, 24, 0,
- 0, 0, 0, 0, 9, 8, 6, 0, 0, 0, 0, 0, 145,5, 12, 2, 0, 0, 0, 0, 30, 97, 4, 2, 0, 0, 0, 0, 8, 180,64, 0, 0, 232,31, 0, 17, 101,92, 3,
- 0, 85, 2, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 145,0, 0, 0, 0, 0, 0, 0, 17, 2, 0, 0, 0, 0, 0,
- 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 84, 176,14, 0, 0, 0, 0, 0, 4, 200,8, 0, 0, 0, 0, 0, 1, 1, 76, 0, 0, 0, 0, 0, 12, 8, 0, 0,
- 0, 16, 0, 0, 16, 97, 0, 0, 0, 32, 8, 0, 75, 152,12, 0, 0, 0, 0, 0, 179,69, 20, 1, 0, 0, 0, 0, 132,4, 6, 0, 0, 0, 0, 0, 255,255,30, 3,
- 0, 32, 0, 0, 16, 25, 4, 0, 0, 0, 0, 0, 4, 0, 149,0, 0, 8, 0, 0, 1, 73, 4, 0, 0, 0, 0, 0, 88, 72, 20, 0, 0, 0, 0, 0, 138,40, 14, 1,
- 0, 0, 0, 0, 26, 1, 4, 1, 0, 0, 0, 0, 153,25, 68, 0, 0, 0, 0, 0, 245,221,109,0, 0, 0, 0, 0, 0, 48, 84, 0, 0, 0, 0, 0, 0, 65, 10, 0,
- 0, 0, 0, 0, 13, 0, 12, 2, 0, 0, 0, 0, 19, 81, 20, 1, 0, 0, 0, 0, 8, 48, 2, 1, 0, 0, 0, 0, 16, 64, 20, 2, 0, 0, 0, 0, 3, 149,0, 0,
- 0, 0, 0, 0, 221,103,140,3, 0, 0, 0, 0, 18, 9, 0, 1, 0, 0, 0, 0, 1, 1, 12, 0, 0, 0, 0, 0, 132,0, 12, 0, 0, 0, 0, 0, 17, 1, 6, 1,
- 0, 16, 0, 0, 17, 73, 4, 0, 0, 0, 0, 0, 33, 197,20, 0, 0, 160,0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 127,237,126,3, 0, 0, 0, 0, 114,136,6, 0,
- 0, 240,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 9, 80, 0, 0, 0, 0, 0, 149,69, 12, 3, 0, 0, 0, 0, 21, 213,2, 1, 0, 224,47, 0, 118,28, 4, 1,
- 16, 0, 0, 0, 149,113,30, 2, 0, 0, 0, 0, 0, 57, 14, 0, 0, 0, 0, 0, 136,2, 0, 0, 0, 0, 0, 0, 0, 40, 128,0, 0, 0, 0, 0, 119,238,94, 0,
- 0, 0, 0, 0, 1, 64, 10, 0, 0, 0, 16, 0, 16, 0, 2, 0, 0, 0, 0, 0, 17, 64, 32, 0, 0, 0, 0, 0, 89, 81, 18, 2, 0, 32, 8, 0, 17, 0, 4, 0,
- 0, 0, 0, 0, 8, 16, 8, 0, 0, 0, 0, 0, 4, 184,140,0, 0, 0, 0, 0, 144,12, 0, 0, 0, 224,59, 0, 255,241,119,2, 0, 96, 0, 0, 1, 0, 65, 0,
- 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 64, 4, 0, 0, 0, 64, 0, 0, 0, 0, 0, 218,187,94, 3, 16, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0, 18, 1, 70, 0, 0, 224,8, 0, 16, 193,229,2, 0, 64, 0, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, 65, 0, 0, 32, 0, 0, 20, 0, 0, 0,
- 0, 0, 0, 0, 33, 16, 128,0, 0, 0, 0, 0, 0, 0, 68, 2, 0, 0, 0, 0, 99, 108,0, 2, 0, 0, 0, 0, 16, 130,0, 0, 0, 0, 0, 0, 33, 0, 64, 0,
- 0, 32, 0, 0, 129,0, 65, 0, 0, 32, 8, 0, 1, 0, 65, 0, 0, 32, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 29, 0, 0, 0, 16, 0, 0, 0, 31, 121,14, 1,
- 0, 0, 0, 0, 221,189,46, 1, 0, 224,0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 148,25, 0, 0, 0, 0, 0, 0, 77, 32, 12, 2, 0, 0, 1, 0, 17, 1, 18, 0,
- 0, 0, 0, 0, 36, 0, 8, 2, 0, 0, 0, 0, 17, 44, 10, 0, 0, 0, 0, 0, 58, 25, 4, 0, 0, 0, 0, 0, 137,1, 8, 0, 0, 0, 0, 0, 16, 0, 26, 0,
- 0, 0, 4, 0, 4, 32, 0, 0, 0, 0, 0, 0, 31, 187,62, 2, 0, 0, 0, 0, 32, 40, 3, 0, 0, 32, 0, 0, 19, 1, 4, 1, 0, 32, 0, 0, 38, 8, 74, 0,
- 0, 0, 0, 0, 4, 32, 8, 3, 0, 0, 0, 0, 20, 65, 10, 1, 0, 32, 0, 0, 0, 73, 4, 0, 0, 0, 0, 0, 223,190,175,2, 0, 32, 0, 0, 16, 41, 12, 1,
- 0, 32, 0, 0, 16, 28, 24, 0, 0, 0, 0, 0, 17, 89, 8, 0, 0, 0, 0, 0, 31, 109,8, 2, 0, 0, 0, 0, 144,1, 16, 1, 0, 0, 0, 0, 73, 64, 16, 0,
- 0, 0, 0, 0, 64, 0, 4, 2, 0, 0, 0, 0, 16, 136,8, 0, 0, 0, 0, 0, 16, 80, 28, 0, 0, 0, 0, 0, 64, 0, 1, 0, 0, 0, 0, 0, 12, 33, 46, 0,
- 16, 0, 0, 0, 17, 1, 0, 0, 0, 160,0, 0, 17, 0, 5, 0, 0, 128,0, 0, 16, 0, 1, 0, 0, 32, 0, 0, 16, 0, 1, 0, 0, 160,9, 0, 25, 128,7, 2,
- 0, 128,1, 0, 1, 0, 3, 0, 0, 32, 0, 0, 0, 0, 1, 2, 0, 32, 1, 0, 33, 0, 8, 2, 0, 32, 3, 0, 65, 0, 8, 3, 0, 240,63, 0, 1, 0, 16, 3,
- 0, 32, 16, 0, 0, 1, 0, 0, 0, 228,9, 0, 191,255,254,3, 0, 0, 0, 0, 177,7, 12, 0, 0, 80, 0, 0, 4, 0, 0, 0, 0, 0, 32, 0, 8, 0, 0, 0,
- 0, 0, 0, 0, 106,146,12, 0, 0, 0, 0, 0, 19, 103,22, 1, 0, 0, 0, 0, 200,40, 30, 0, 0, 32, 4, 0, 0, 64, 12, 0, 0, 0, 0, 0, 132,40, 2, 1,
- 0, 0, 0, 0, 25, 40, 8, 0, 0, 0, 0, 0, 2, 41, 10, 0, 0, 0, 0, 0, 149,69, 1, 3, 0, 0, 0, 0, 172,16, 78, 1, 0, 96, 0, 0, 0, 0, 132,0,
- 0, 0, 0, 0, 17, 25, 0, 0, 0, 48, 12, 0, 16, 8, 4, 0, 0, 0, 0, 0, 7, 104,12, 0, 0, 0, 0, 0, 191,125,124,3, 0, 0, 0, 0, 66, 20, 10, 0,
- 0, 0, 0, 0, 6, 126,10, 0, 0, 0, 0, 0, 85, 105,156,0, 0, 0, 32, 0, 0, 8, 4, 0, 0, 0, 0, 0, 145,4, 4, 0, 0, 32, 0, 0, 245,185,12, 0,
- 0, 0, 0, 0, 128,64, 12, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 171,28, 12, 0, 0, 0, 0, 0, 49, 9, 28, 0, 0, 0, 0, 0, 144,41, 0, 0,
- 0, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 0, 217,121,92, 0, 0, 0, 0, 0, 0, 49, 6, 2, 0, 0, 0, 0, 129,64, 32, 0, 0, 0, 0, 0, 17, 121,82, 0,
- 0, 0, 0, 0, 0, 25, 12, 0, 0, 0, 0, 0, 16, 34, 4, 0, 0, 0, 0, 0, 111,252,14, 0, 0, 0, 0, 0, 151,25, 78, 0, 0, 0, 0, 0, 255,113,108,1,
- 0, 96, 12, 0, 0, 0, 4, 0, 0, 0, 0, 0, 23, 73, 12, 0, 0, 0, 0, 0, 25, 229,92, 1, 0, 0, 0, 0, 194,170,14, 0, 0, 0, 0, 0, 16, 32, 68, 0,
- 0, 0, 0, 0, 51, 204,12, 0, 0, 96, 0, 0, 127,255,30, 3, 0, 0, 0, 0, 204,173,30, 3, 0, 96, 0, 0, 0, 32, 20, 0, 0, 0, 0, 0, 65, 0, 2, 0,
- 0, 0, 0, 0, 1, 40, 14, 3, 0, 0, 0, 0, 129,0, 68, 0, 0, 0, 0, 0, 48, 40, 6, 0, 0, 0, 0, 0, 72, 0, 18, 0, 0, 0, 0, 0, 72, 40, 2, 0,
- 0, 0, 0, 0, 251,65, 24, 1, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 255,119,124,0, 0, 0, 0, 0, 216,8, 50, 0, 0, 0, 0, 0, 209,77, 78, 3,
- 0, 0, 0, 0, 128,8, 0, 2, 0, 0, 0, 0, 32, 136,0, 0, 0, 32, 0, 0, 0, 41, 0, 0, 0, 96, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 17, 225,0, 0,
- 0, 240,62, 0, 0, 64, 4, 0, 0, 96, 32, 0, 32, 0, 0, 0, 0, 0, 0, 0, 25, 8, 8, 0, 0, 0, 0, 0, 43, 73, 0, 0, 0, 0, 0, 0, 145,205,28, 0,
- 0, 0, 0, 0, 4, 184,0, 0, 0, 32, 0, 0, 17, 73, 4, 0, 0, 0, 0, 0, 0, 160,4, 2, 0, 0, 0, 0, 25, 65, 0, 1, 0, 0, 0, 0, 32, 8, 6, 1,
- 0, 0, 0, 0, 159,253,28, 0, 0, 0, 0, 0, 129,64, 0, 2, 0, 0, 0, 0, 25, 89, 24, 0, 0, 0, 0, 0, 3, 64, 16, 1, 0, 0, 0, 0, 16, 17, 32, 0,
- 0, 96, 4, 0, 32, 16, 12, 0, 0, 0, 0, 0, 191,253,30, 2, 0, 0, 0, 0, 4, 34, 10, 0, 0, 0, 0, 0, 8, 136,6, 0, 0, 0, 0, 0, 123,86, 2, 0,
- 0, 0, 0, 0, 96, 96, 28, 0, 0, 0, 0, 0, 40, 0, 0, 1, 0, 0, 0, 0, 64, 144,0, 0, 0, 0, 0, 0, 4, 128,0, 1, 0, 0, 0, 0, 254,184,12, 2,
- 0, 160,4, 0, 148,104,68, 0, 0, 32, 0, 0, 6, 0, 64, 0, 0, 0, 0, 0, 20, 100,12, 2, 0, 0, 0, 0, 153,13, 14, 0, 0, 32, 0, 0, 255,120,12, 1,
- 0, 0, 0, 0, 64, 56, 4, 0, 0, 0, 0, 0, 89, 65, 32, 2, 0, 0, 0, 0, 0, 36, 32, 0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 64, 0, 0, 196,1, 0, 0,
- 0, 4, 0, 0, 37, 24, 8, 0, 0, 0, 0, 0, 0, 1, 32, 1, 0, 0, 0, 0, 98, 32, 1, 0, 0, 0, 0, 0, 110,249,126,3, 0, 0, 0, 0, 128,0, 9, 0,
- 0, 8, 0, 0, 25, 115,20, 1, 0, 40, 0, 0, 16, 0, 4, 0, 0, 96, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 145,73, 0, 0, 0, 0, 0, 0, 218,57, 12, 1,
- 0, 0, 0, 0, 64, 0, 12, 2, 0, 0, 0, 0, 88, 17, 102,1, 0, 0, 0, 0, 144,97, 4, 0, 0, 0, 0, 0, 0, 17, 136,0, 0, 0, 0, 0, 147,81, 18, 0,
- 0, 0, 0, 0, 4, 45, 2, 0, 0, 96, 0, 0, 24, 72, 4, 2, 0, 0, 0, 0, 0, 104,18, 0, 0, 0, 0, 0, 36, 13, 14, 0, 0, 0, 0, 0, 149,109,30, 3,
- 0, 0, 0, 0, 0, 168,6, 0, 0, 0, 0, 0, 8, 165,4, 0, 0, 0, 0, 0, 17, 5, 10, 0, 0, 0, 0, 0, 56, 224,10, 0, 0, 0, 0, 0, 66, 185,50, 0,
- 0, 0, 0, 0, 2, 144,0, 0, 0, 32, 8, 0, 44, 32, 37, 0, 0, 0, 0, 0, 0, 144,14, 0, 0, 240,39, 0, 255,253,126,0, 0, 0, 0, 0, 17, 65, 66, 1,
- 0, 0, 0, 0, 1, 44, 34, 0, 0, 0, 0, 0, 68, 0, 16, 0, 0, 0, 0, 0, 60, 188,38, 1, 0, 0, 0, 0, 2, 1, 0, 2, 0, 0, 0, 0, 16, 0, 38, 0,
- 0, 0, 0, 0, 64, 1, 72, 0, 0, 0, 0, 0, 0, 64, 26, 0, 0, 0, 0, 0, 109,36, 6, 0, 0, 0, 0, 0, 132,4, 8, 0, 0, 0, 0, 0, 68, 96, 0, 0,
- 0, 0, 0, 0, 1, 33, 144,0, 0, 0, 0, 0, 12, 0, 32, 0, 0, 0, 0, 0, 6, 0, 36, 0, 0, 0, 0, 0, 145,68, 8, 0, 0, 0, 0, 0, 4, 160,132,0,
- 0, 0, 0, 0, 238,188,172,0, 0, 0, 0, 0, 144,0, 20, 1, 0, 32, 0, 0, 0, 16, 6, 0, 0, 0, 0, 0, 49, 73, 22, 0, 0, 0, 0, 0, 80, 32, 14, 0,
- 0, 0, 0, 0, 81, 105,26, 0, 0, 0, 0, 0, 0, 41, 14, 2, 0, 32, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 136,40, 6, 0, 0, 0, 0, 0, 21, 1, 12, 0,
- 0, 0, 0, 0, 21, 112,20, 0, 0, 0, 0, 0, 16, 24, 6, 0, 0, 0, 0, 0, 59, 127,22, 1, 0, 0, 0, 0, 66, 36, 6, 0, 0, 0, 0, 0, 18, 0, 3, 0,
- 0, 0, 0, 0, 2, 0, 34, 0, 0, 0, 0, 0, 255,124,44, 0, 0, 0, 0, 0, 145,88, 4, 0, 0, 0, 0, 0, 98, 20, 72, 0, 0, 0, 0, 0, 48, 24, 4, 0,
- 0, 0, 0, 0, 145,40, 4, 0, 0, 0, 0, 0, 19, 112,20, 0, 0, 0, 0, 0, 255,85, 108,0, 0, 0, 0, 0, 4, 52, 6, 0, 0, 0, 0, 0, 84, 32, 8, 0,
- 0, 0, 0, 0, 36, 16, 56, 0, 0, 0, 0, 0, 156,57, 76, 2, 0, 0, 0, 0, 145,24, 12, 2, 0, 0, 0, 0, 147,89, 20, 0, 0, 0, 0, 0, 49, 205,16, 1,
- 0, 0, 0, 0, 36, 129,152,1, 0, 0, 0, 0, 97, 32, 32, 0, 0, 0, 0, 0, 245,32, 37, 0, 0, 0, 0, 0, 40, 32, 36, 0, 0, 0, 0, 0, 51, 253,20, 1,
- 0, 0, 0, 0, 72, 173,14, 0, 0, 0, 0, 0, 10, 56, 2, 1, 0, 0, 0, 0, 69, 40, 140,0, 0, 0, 0, 0, 8, 32, 62, 0, 0, 0, 0, 0, 127,117,127,3,
- 0, 0, 0, 0, 16, 61, 26, 1, 0, 0, 0, 0, 81, 8, 74, 0, 0, 0, 0, 0, 0, 28, 14, 1, 0, 0, 0, 0, 20, 32, 128,0, 0, 0, 0, 0, 2, 25, 118,0,
- 0, 0, 0, 0, 150,1, 4, 0, 0, 0, 0, 0, 49, 65, 4, 2, 0, 0, 0, 0, 1, 52, 0, 0, 0, 0, 0, 0, 4, 184,6, 0, 0, 4, 0, 0, 145,221,62, 1,
- 0, 0, 0, 0, 4, 1, 46, 1, 0, 0, 0, 0, 5, 40, 10, 0, 0, 0, 0, 0, 9, 16, 4, 0, 0, 0, 0, 0, 32, 144,6, 0, 0, 0, 0, 0, 16, 48, 4, 0,
- 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 74, 8, 10, 0, 0, 0, 0, 0, 48, 70, 16, 0, 0, 0, 0, 0, 141,9, 0, 0, 0, 0, 0, 0, 149,233,60, 0,
- 0, 0, 0, 0, 13, 61, 10, 0, 0, 0, 0, 0, 48, 17, 4, 0, 0, 32, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 72, 168,12, 0, 0, 0, 0, 0, 0, 40, 22, 0,
- 0, 0, 0, 0, 8, 0, 48, 0, 0, 0, 0, 0, 4, 4, 6, 0, 0, 0, 0, 0, 49, 1, 4, 0, 0, 0, 0, 0, 68, 0, 10, 0, 0, 0, 0, 0, 49, 73, 22, 1,
- 0, 0, 0, 0, 96, 32, 40, 0, 0, 0, 0, 0, 18, 152,6, 0, 0, 0, 0, 0, 112,0, 2, 0, 0, 0, 0, 0, 189,109,30, 3, 0, 0, 0, 0, 0, 61, 2, 0,
- 0, 0, 0, 0, 0, 172,6, 0, 0, 0, 0, 0, 20, 32, 10, 0, 0, 0, 0, 0, 65, 65, 16, 0, 0, 0, 0, 0, 2, 137,0, 0, 0, 0, 0, 0, 24, 16, 4, 0,
- 0, 0, 0, 0, 19, 0, 32, 0, 0, 0, 0, 0, 97, 0, 36, 0, 0, 0, 0, 0, 154,168,44, 0, 0, 0, 0, 0, 144,9, 8, 2, 0, 64, 0, 0, 25, 73, 52, 0,
- 0, 0, 0, 0, 0, 28, 10, 1, 0, 0, 0, 0, 1, 41, 14, 0, 0, 0, 0, 0, 65, 0, 24, 0, 0, 0, 0, 0, 19, 81, 12, 0, 0, 0, 0, 0, 16, 8, 46, 0,
- 0, 0, 4, 0, 16, 129,4, 0, 0, 0, 1, 0, 0, 1, 4, 0, 0, 0, 0, 0, 4, 13, 2, 0, 0, 0, 0, 0, 0, 64, 56, 0, 0, 0, 0, 0, 41, 64, 194,1,
- 0, 0, 4, 0, 18, 116,4, 0, 0, 0, 0, 0, 0, 8, 6, 2, 0, 0, 0, 0, 64, 8, 18, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 4, 0, 196,167,34, 1,
- 0, 0, 0, 0, 50, 46, 32, 0, 0, 0, 0, 0, 76, 32, 50, 1, 0, 4, 0, 0, 160,16, 8, 2, 0, 0, 0, 0, 196,0, 0, 0, 0, 0, 0, 0, 32, 18, 0, 0,
- 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 34, 0, 136,0, 0, 0, 0, 0, 64, 4, 2, 0, 0, 0, 0, 0, 32, 20, 0, 0, 0, 0, 0, 0, 179,67, 24, 1,
- 0, 0, 0, 0, 148,144,8, 0, 0, 0, 0, 0, 27, 113,92, 3, 0, 0, 0, 0, 208,25, 4, 0, 0, 0, 0, 0, 34, 2, 0, 1, 0, 0, 0, 0, 1, 48, 0, 2,
- 0, 0, 0, 0, 130,8, 6, 0, 0, 32, 0, 0, 4, 128,4, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 25, 48, 14, 0, 0, 0, 0, 0, 25, 65, 18, 1,
- 0, 0, 0, 0, 26, 24, 4, 0, 0, 0, 0, 0, 24, 0, 0, 1, 0, 0, 0, 0, 1, 120,12, 0, 0, 0, 0, 0, 255,255,189,3, 0, 0, 0, 0, 9, 42, 28, 2,
- 0, 0, 0, 0, 4, 104,22, 0, 0, 0, 0, 0, 0, 1, 6, 1, 0, 0, 0, 0, 9, 64, 0, 1, 0, 0, 0, 0, 32, 32, 12, 2, 0, 0, 0, 0, 181,77, 16, 0,
- 0, 0, 0, 0, 1, 64, 24, 0, 0, 0, 16, 0, 0, 48, 0, 0, 0, 32, 0, 0, 55, 121,74, 1, 0, 32, 0, 0, 8, 0, 12, 0, 0, 240,59, 0, 4, 64, 44, 0,
- 0, 0, 0, 0, 0, 56, 6, 1, 0, 0, 0, 0, 16, 32, 20, 0, 0, 32, 4, 0, 49, 121,4, 1, 0, 0, 0, 0, 4, 4, 16, 0, 0, 0, 0, 0, 32, 0, 4, 1,
- 0, 0, 0, 0, 132,0, 10, 0, 0, 0, 0, 0, 89, 233,0, 0, 0, 0, 0, 0, 1, 248,6, 0, 0, 0, 0, 0, 16, 41, 64, 0, 0, 0, 0, 0, 42, 8, 68, 0,
- 0, 0, 0, 0, 238,188,190,0, 0, 0, 0, 0, 16, 25, 0, 1, 0, 0, 0, 0, 8, 0, 12, 2, 0, 0, 0, 0, 80, 45, 12, 2, 0, 0, 0, 0, 136,1, 36, 2,
- 0, 0, 0, 0, 49, 12, 10, 0, 0, 0, 0, 0, 16, 73, 6, 0, 0, 0, 0, 0, 219,105,36, 0, 0, 0, 0, 0, 0, 40, 28, 2, 0, 32, 1, 0, 176,121,4, 1,
- 0, 0, 0, 0, 2, 40, 26, 0, 0, 0, 0, 0, 192,160,4, 0, 0, 0, 0, 0, 16, 100,0, 0, 0, 0, 0, 0, 17, 13, 0, 1, 0, 0, 0, 0, 51, 223,20, 0,
- 0, 0, 0, 0, 125,229,12, 2, 0, 0, 0, 0, 113,72, 12, 0, 0, 0, 0, 0, 146,8, 6, 1, 0, 0, 0, 0, 218,89, 95, 0, 0, 0, 0, 0, 1, 1, 2, 1,
- 0, 0, 0, 0, 98, 170,30, 2, 0, 0, 0, 0, 21, 204,12, 0, 0, 0, 0, 0, 24, 104,10, 1, 0, 0, 0, 0, 159,237,13, 0, 0, 0, 0, 0, 8, 32, 70, 0,
- 0, 0, 0, 0, 21, 80, 30, 2, 0, 32, 0, 0, 4, 8, 2, 0, 0, 0, 0, 0, 144,77, 0, 0, 0, 0, 0, 0, 17, 109,16, 0, 0, 0, 0, 0, 24, 9, 6, 0,
- 0, 0, 0, 0, 11, 0, 0, 0, 0, 32, 0, 0, 171,217,110,0, 0, 0, 0, 0, 17, 68, 96, 2, 0, 0, 0, 0, 140,165,114,1, 0, 0, 0, 0, 8, 4, 0, 1,
- 0, 0, 0, 0, 5, 34, 0, 0, 0, 0, 0, 0, 50, 0, 8, 0, 0, 0, 0, 0, 40, 0, 0, 2, 0, 0, 0, 0, 33, 129,2, 0, 0, 0, 0, 0, 1, 8, 32, 2,
- 0, 0, 0, 0, 44, 120,14, 0, 0, 0, 0, 0, 159,29, 78, 1, 0, 0, 0, 0, 16, 5, 140,1, 0, 32, 0, 0, 19, 105,30, 1, 0, 0, 0, 0, 4, 37, 14, 1,
- 0, 0, 0, 0, 0, 1, 12, 1, 0, 0, 0, 0, 12, 40, 6, 3, 0, 0, 0, 0, 72, 1, 14, 0, 0, 240,63, 0, 17, 65, 6, 0, 0, 0, 0, 0, 28, 40, 14, 0,
- 0, 96, 0, 0, 147,0, 4, 2, 0, 0, 0, 0, 24, 0, 12, 3, 0, 32, 0, 0, 144,97, 4, 0, 0, 0, 0, 0, 1, 104,16, 0, 0, 0, 0, 0, 149,77, 7, 0,
- 0, 0, 0, 0, 185,77, 16, 0, 0, 64, 0, 0, 0, 16, 10, 0, 0, 0, 0, 0, 36, 40, 6, 2, 16, 104,4, 0, 191,249,102,3, 0, 0, 0, 0, 34, 40, 64, 0,
- 0, 0, 0, 0, 40, 40, 10, 1, 0, 112,28, 0, 24, 16, 14, 0, 0, 32, 0, 0, 0, 32, 32, 0, 0, 224,7, 0, 10, 16, 12, 1, 0, 0, 0, 0, 219,117,102,1,
- 0, 0, 0, 0, 2, 60, 6, 0, 0, 0, 0, 0, 179,121,70, 2, 0, 0, 0, 0, 2, 1, 8, 0, 0, 0, 0, 0, 71, 120,5, 0, 0, 0, 0, 0, 68, 0, 17, 0,
- 0, 0, 0, 0, 0, 0, 20, 2, 0, 0, 0, 0, 16, 1, 4, 2, 0, 0, 0, 0, 238,188,110,0, 0, 0, 0, 0, 1, 24, 2, 0, 0, 0, 0, 0, 20, 45, 4, 0,
- 0, 0, 0, 0, 32, 12, 0, 0, 0, 0, 0, 0, 209,97, 22, 0, 0, 0, 0, 0, 17, 40, 4, 0, 0, 0, 0, 0, 32, 8, 68, 0, 0, 0, 0, 0, 25, 121,78, 1,
- 0, 0, 0, 0, 49, 81, 0, 0, 0, 0, 0, 0, 72, 4, 12, 0, 0, 0, 0, 0, 57, 201,12, 1, 0, 0, 0, 0, 0, 164,132,1, 0, 0, 0, 0, 179,81, 14, 1,
- 0, 0, 0, 0, 40, 33, 6, 1, 0, 32, 0, 0, 70, 0, 4, 0, 0, 0, 0, 0, 4, 0, 112,0, 0, 0, 0, 0, 40, 32, 4, 0, 0, 0, 0, 0, 51, 247,22, 1,
- 0, 96, 0, 0, 68, 33, 70, 1, 0, 144,6, 0, 0, 0, 0, 0, 0, 96, 8, 0, 29, 97, 28, 1, 0, 0, 0, 0, 21, 36, 4, 2, 0, 0, 0, 0, 0, 105,6, 1,
- 0, 0, 0, 0, 80, 40, 10, 0, 0, 0, 0, 0, 48, 1, 2, 0, 0, 32, 0, 0, 253,103,13, 3, 0, 0, 0, 0, 16, 0, 14, 1, 0, 0, 0, 0, 49, 1, 0, 1,
- 0, 0, 0, 0, 40, 180,14, 0, 0, 0, 0, 0, 16, 41, 28, 1, 0, 0, 0, 0, 17, 1, 68, 0, 0, 32, 0, 0, 48, 17, 4, 1, 0, 32, 0, 0, 146,5, 4, 0,
- 0, 0, 0, 0, 17, 133,4, 0, 0, 0, 0, 0, 8, 0, 70, 0, 0, 0, 0, 0, 17, 69, 14, 1, 0, 0, 0, 0, 151,125,92, 3, 0, 0, 0, 0, 12, 56, 62, 2,
- 0, 0, 0, 0, 18, 1, 32, 1, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 129,65, 18, 0, 0, 32, 0, 0, 16, 16, 66, 0, 0, 32, 0, 0, 143,60, 126,1,
- 0, 32, 8, 0, 8, 0, 4, 0, 0, 0, 0, 0, 255,76, 79, 2, 0, 0, 0, 0, 21, 104,8, 0, 0, 32, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 31, 121,48, 1,
- 0, 0, 1, 0, 81, 33, 8, 1, 0, 0, 0, 0, 8, 48, 1, 0, 0, 0, 0, 0, 149,117,30, 2, 0, 0, 0, 0, 0, 32, 170,0, 0, 0, 0, 0, 247,92, 70, 0,
- 0, 0, 0, 0, 128,16, 0, 1, 0, 0, 0, 0, 16, 113,64, 1, 0, 0, 0, 0, 254,185,238,3, 0, 0, 0, 0, 17, 41, 14, 0, 0, 0, 0, 0, 144,0, 4, 1,
- 0, 0, 0, 0, 8, 4, 12, 0, 0, 0, 0, 0, 148,1, 28, 0, 0, 0, 0, 0, 144,73, 12, 2, 0, 0, 4, 0, 8, 16, 6, 0, 0, 0, 0, 0, 159,121,14, 2,
- 0, 0, 0, 0, 19, 1, 0, 1, 0, 32, 0, 0, 95, 14, 12, 0, 0, 32, 0, 0, 16, 9, 12, 0, 0, 0, 0, 0, 81, 113,4, 3, 0, 0, 0, 0, 2, 60, 0, 0,
- 0, 64, 0, 0, 185,144,41, 0, 0, 128,4, 0, 210,64, 0, 1, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 1, 0, 255,255,254,3, 0, 0, 0, 0, 14, 33, 2, 0,
- 0, 0, 0, 0, 19, 105,22, 1, 0, 32, 0, 0, 8, 1, 4, 1, 0, 0, 0, 0, 4, 104,6, 0, 0, 32, 0, 0, 41, 0, 4, 2, 0, 0, 0, 0, 29, 100,4, 0,
- 0, 0, 0, 0, 132,5, 0, 0, 0, 0, 0, 0, 24, 25, 20, 1, 0, 0, 0, 0, 219,125,6, 3, 0, 0, 0, 0, 6, 32, 14, 0, 0, 0, 0, 0, 16, 73, 16, 1,
- 0, 0, 0, 0, 26, 40, 6, 0, 0, 0, 0, 0, 84, 112,4, 0, 0, 0, 0, 0, 238,8, 12, 2, 0, 0, 0, 0, 68, 1, 12, 0, 0, 0, 0, 0, 53, 65, 16, 0,
- 0, 0, 0, 0, 21, 105,18, 0, 0, 0, 0, 0, 64, 65, 4, 0, 0, 0, 0, 0, 211,64, 6, 0, 0, 96, 48, 0, 0, 16, 0, 0, 0, 0, 0, 0, 16, 120,14, 0,
- 0, 0, 0, 0, 4, 42, 44, 2, 0, 0, 0, 0, 129,48, 0, 0, 0, 128,0, 0, 17, 105,0, 2, 0, 0, 0, 0, 10, 16, 6, 3, 0, 32, 0, 0, 16, 0, 0, 1,
- 0, 0, 0, 0, 51, 249,6, 1, 0, 0, 0, 0, 0, 40, 130,0, 0, 0, 0, 0, 180,72, 20, 0, 0, 0, 0, 0, 52, 64, 0, 0, 0, 0, 1, 0, 125,101,111,3,
- 0, 0, 0, 0, 2, 0, 66, 0, 0, 0, 0, 0, 113,88, 5, 0, 0, 0, 0, 0, 164,128,8, 2, 0, 0, 0, 0, 17, 173,10, 0, 0, 0, 0, 0, 1, 65, 16, 1,
- 0, 0, 0, 0, 151,173,30, 3, 0, 0, 0, 0, 0, 12, 64, 0, 0, 0, 0, 0, 0, 44, 34, 0, 0, 64, 0, 0, 185,25, 104,0, 0, 32, 0, 0, 17, 121,80, 0,
- 0, 0, 0, 0, 0, 12, 14, 1, 0, 96, 8, 0, 0, 64, 36, 0, 0, 0, 0, 0, 33, 32, 0, 0, 0, 0, 12, 0, 0, 0, 4, 0, 0, 0, 0, 0, 10, 49, 0, 0,
- 0, 96, 2, 0, 10, 0, 68, 0, 0, 0, 0, 0, 209,29, 12, 2, 0, 0, 0, 0, 6, 32, 2, 0, 0, 0, 0, 0, 17, 25, 36, 0, 0, 0, 0, 0, 145,17, 0, 1,
- 0, 0, 0, 0, 18, 8, 12, 2, 0, 0, 0, 0, 2, 65, 0, 3, 0, 0, 0, 0, 223,254,28, 2, 16, 0, 0, 0, 0, 40, 0, 2, 0, 112,0, 0, 1, 32, 12, 0,
- 0, 0, 0, 0, 21, 101,16, 0, 0, 0, 0, 0, 4, 34, 0, 0, 0, 0, 0, 0, 144,4, 2, 0, 0, 0, 0, 0, 19, 81, 0, 2, 0, 0, 0, 0, 11, 32, 2, 0,
- 0, 0, 0, 0, 24, 100,0, 0, 0, 0, 0, 0, 17, 8, 0, 2, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 32, 0, 145,0, 16, 0, 16, 124,47, 0, 255,255,255,3,
- 0, 0, 0, 0, 5, 209,0, 0, 0, 0, 0, 0, 197,202,4, 0, 0, 96, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 106,60, 46, 0, 0, 0, 32, 0, 1, 0, 0, 0,
- 0, 144,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204,46, 14, 0, 0, 0, 0, 0, 192,0, 8, 0, 0, 0, 0, 0, 9, 41, 10, 0, 0, 32, 0, 0, 132,1, 4, 0,
- 0, 0, 0, 0, 1, 96, 6, 0, 0, 0, 0, 0, 141,68, 14, 2, 0, 0, 0, 0, 64, 48, 34, 1, 0, 0, 0, 0, 25, 9, 12, 0, 0, 0, 0, 0, 0, 16, 46, 2,
- 0, 0, 0, 0, 17, 89, 38, 0, 0, 32, 0, 0, 255,121,50, 1, 0, 0, 0, 0, 128,100,10, 0, 0, 0, 0, 0, 10, 0, 70, 0, 0, 0, 0, 0, 80, 32, 3, 0,
- 0, 0, 0, 0, 16, 36, 5, 0, 0, 96, 0, 0, 8, 16, 4, 0, 0, 0, 0, 0, 0, 24, 102,0, 0, 0, 0, 0, 116,189,8, 2, 0, 0, 0, 0, 64, 128,4, 2,
- 0, 0, 0, 0, 57, 77, 10, 0, 0, 0, 0, 0, 204,12, 94, 0, 0, 0, 0, 0, 81, 89, 18, 0, 0, 0, 0, 0, 0, 57, 6, 1, 0, 0, 0, 0, 138,40, 14, 0,
- 0, 0, 0, 0, 21, 33, 0, 0, 0, 0, 0, 0, 17, 123,30, 1, 0, 0, 0, 0, 74, 8, 2, 0, 0, 0, 0, 0, 130,40, 74, 0, 0, 128,20, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 127,188,46, 3, 0, 0, 0, 0, 55, 193,4, 0, 0, 0, 0, 0, 25, 9, 12, 2, 0, 34, 0, 0, 177,9, 4, 1, 0, 0, 0, 0, 8, 67, 0, 0,
- 0, 0, 0, 0, 145,69, 30, 1, 0, 0, 0, 0, 80, 29, 14, 0, 0, 0, 0, 0, 148,32, 4, 0, 0, 0, 0, 0, 0, 24, 2, 1, 0, 0, 0, 0, 127,93, 125,3,
- 0, 0, 0, 0, 175,61, 46, 3, 0, 0, 0, 0, 145,52, 14, 0, 0, 32, 0, 0, 32, 149,68, 0, 0, 0, 0, 0, 159,56, 164,2, 0, 0, 0, 0, 17, 81, 20, 1,
- 0, 0, 0, 0, 140,0, 4, 2, 0, 0, 0, 0, 144,0, 6, 1, 0, 96, 0, 0, 9, 0, 4, 0, 0, 0, 0, 0, 128,241,92, 0, 0, 4, 0, 0, 81, 1, 4, 0,
- 0, 0, 0, 0, 83, 16, 8, 0, 0, 0, 2, 0, 19, 249,84, 3, 0, 32, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 9, 22, 12, 2, 0, 0, 0, 0, 72, 34, 12, 0,
- 0, 0, 0, 0, 0, 16, 14, 1, 0, 0, 0, 0, 83, 24, 64, 0, 0, 96, 0, 0, 255,253,126,1, 0, 0, 0, 0, 153,175,14, 1, 0, 0, 0, 0, 1, 73, 8, 0,
- 0, 0, 0, 0, 1, 69, 10, 0, 0, 0, 0, 0, 145,64, 18, 0, 0, 32, 0, 0, 0, 8, 2, 0, 0, 32, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 29, 44, 12, 0,
- 0, 0, 0, 0, 29, 1, 10, 2, 0, 96, 12, 0, 14, 2, 4, 1, 0, 0, 0, 0, 193,108,78, 1, 0, 0, 0, 0, 25, 73, 6, 0, 0, 0, 0, 0, 64, 41, 8, 1,
- 0, 0, 0, 0, 25, 9, 14, 0, 0, 32, 8, 0, 0, 0, 128,0, 16, 32, 0, 0, 255,255,63, 3, 16, 0, 0, 0, 79, 48, 12, 0, 0, 0, 0, 0, 144,4, 10, 0,
- 0, 0, 0, 0, 4, 0, 6, 2, 0, 0, 0, 0, 32, 80, 8, 0, 0, 0, 0, 0, 243,249,127,3, 0, 0, 0, 0, 192,44, 56, 1, 0, 0, 0, 0, 56, 56, 6, 2,
- 0, 0, 0, 0, 16, 2, 16, 0, 0, 0, 0, 0, 36, 24, 4, 0, 0, 96, 0, 0, 16, 64, 0, 0, 0, 32, 0, 0, 121,168,4, 0, 0, 0, 0, 0, 18, 52, 118,2,
- 0, 0, 0, 0, 64, 12, 0, 0, 0, 224,4, 0, 8, 0, 4, 0, 0, 0, 1, 0, 1, 4, 6, 2, 0, 0, 0, 0, 16, 73, 10, 0, 0, 0, 0, 0, 209,75, 22, 0,
- 0, 0, 0, 0, 0, 28, 14, 0, 0, 0, 0, 0, 17, 0, 32, 0, 0, 0, 0, 0, 67, 160,12, 0, 0, 0, 0, 0, 2, 36, 2, 1, 0, 0, 0, 0, 160,0, 96, 0,
- 0, 0, 0, 0, 36, 52, 14, 0, 0, 0, 0, 0, 23, 69, 8, 0, 0, 0, 0, 0, 0, 48, 24, 0, 16, 0, 0, 0, 145,89, 94, 1, 0, 96, 0, 0, 117,57, 6, 1,
- 0, 0, 0, 0, 73, 97, 0, 0, 0, 0, 0, 0, 83, 104,4, 2, 0, 0, 0, 0, 0, 184,6, 1, 0, 0, 0, 0, 5, 8, 2, 0, 0, 0, 0, 0, 0, 161,18, 0,
- 0, 0, 0, 0, 177,237,22, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 32, 0, 0, 239,127,124,3, 0, 96, 12, 0, 143,16, 12, 0, 0, 0, 0, 0, 73, 1, 12, 2,
- 0, 0, 0, 0, 0, 64, 96, 0, 0, 0, 0, 0, 0, 177,0, 0, 0, 32, 0, 0, 1, 32, 8, 0, 0, 0, 0, 0, 4, 96, 12, 0, 0, 0, 0, 0, 8, 98, 52, 1,
- 0, 32, 0, 0, 149,229,29, 0, 0, 32, 0, 0, 160,124,0, 0, 0, 96, 10, 64, 9, 0, 4, 0, 0, 224,31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 34, 0,
- 0, 128,0, 0, 151,241,30, 3, 0, 0, 0, 0, 0, 36, 98, 1, 0, 32, 4, 0, 1, 1, 4, 0, 0, 0, 0, 0, 17, 32, 38, 0, 0, 0, 0, 0, 16, 16, 70, 0,
- 0, 0, 0, 0, 32, 8, 72, 0, 0, 0, 0, 0, 32, 0, 2, 1, 0, 96, 2, 0, 17, 65, 0, 0, 0, 0, 0, 0, 64, 50, 0, 0, 0, 0, 0, 0, 127,188,46, 0,
- 0, 0, 0, 0, 130,12, 68, 0, 0, 0, 0, 0, 16, 225,12, 0, 0, 64, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 8, 8, 10, 3, 0, 0, 0, 0, 21, 69, 32, 0,
- 0, 0, 0, 0, 64, 45, 14, 0, 0, 0, 0, 0, 24, 5, 0, 1, 0, 32, 0, 0, 136,56, 6, 0, 0, 0, 0, 0, 4, 1, 4, 1, 0, 0, 0, 0, 77, 120,8, 0,
- 0, 0, 0, 0, 81, 67, 0, 0, 0, 0, 0, 0, 4, 33, 18, 1, 0, 0, 0, 0, 223,61, 14, 1, 0, 64, 0, 0, 8, 41, 8, 1, 0, 0, 0, 0, 50, 81, 8, 0,
- 0, 0, 0, 0, 55, 125,86, 1, 0, 0, 0, 0, 0, 164,36, 0, 0, 0, 0, 0, 88, 0, 10, 0, 0, 64, 0, 0, 17, 64, 4, 0, 0, 16, 0, 0, 149,73, 158,3,
- 0, 0, 0, 0, 254,185,42, 0, 0, 0, 0, 0, 57, 137,0, 3, 0, 0, 0, 0, 17, 144,4, 0, 0, 32, 0, 0, 16, 65, 4, 1, 0, 0, 0, 0, 12, 57, 12, 0,
- 0, 0, 0, 0, 1, 1, 18, 0, 0, 0, 0, 0, 17, 128,16, 0, 0, 0, 0, 0, 127,233,46, 1, 0, 0, 0, 0, 49, 65, 0, 0, 0, 0, 0, 0, 144,16, 24, 0,
- 0, 0, 0, 0, 34, 0, 4, 2, 0, 0, 0, 0, 17, 125,82, 1, 0, 0, 0, 0, 63, 189,62, 1, 0, 0, 0, 0, 46, 136,2, 0, 0, 0, 0, 0, 44, 32, 10, 0,
- 0, 0, 0, 0, 18, 145,4, 0, 0, 0, 0, 0, 94, 36, 8, 2, 0, 0, 0, 0, 58, 185,74, 0, 0, 0, 0, 0, 32, 17, 0, 0, 0, 0, 0, 0, 18, 25, 0, 0,
- 0, 0, 0, 0, 58, 184,68, 0, 0, 0, 0, 0, 255,185,254,1, 0, 0, 0, 0, 26, 32, 14, 0, 0, 0, 0, 0, 10, 136,0, 0, 0, 0, 0, 0, 144,17, 4, 0,
- 0, 0, 0, 0, 19, 209,0, 0, 0, 0, 0, 0, 124,76, 0, 2, 0, 0, 0, 0, 16, 133,0, 0, 0, 0, 0, 0, 50, 153,14, 2, 0, 0, 0, 0, 16, 56, 34, 0,
- 0, 0, 0, 0, 55, 188,38, 2, 0, 0, 0, 0, 32, 160,32, 0, 0, 0, 0, 0, 42, 8, 6, 0, 0, 0, 0, 0, 32, 68, 2, 0, 0, 0, 0, 0, 9, 28, 12, 2,
- 0, 0, 0, 0, 80, 4, 8, 0, 0, 0, 0, 0, 17, 157,0, 0, 0, 0, 0, 0, 72, 37, 0, 0, 0, 0, 0, 0, 1, 208,10, 0, 0, 0, 0, 0, 255,176,26, 0,
- 0, 0, 0, 0, 212,181,30, 1, 0, 0, 0, 0, 126,48, 4, 0, 0, 0, 0, 0, 72, 4, 4, 2, 0, 0, 0, 0, 16, 33, 68, 0, 0, 0, 0, 0, 20, 176,12, 0,
- 0, 0, 0, 0, 32, 144,12, 0, 0, 0, 0, 0, 18, 96, 12, 0, 0, 0, 0, 0, 18, 176,12, 0, 0, 0, 0, 0, 3, 128,0, 0, 0, 0, 0, 0, 136,40, 24, 0,
- 0, 0, 0, 0, 16, 5, 8, 2, 0, 0, 0, 0, 20, 9, 2, 0, 0, 0, 0, 0, 0, 17, 8, 2, 0, 0, 0, 0, 92, 72, 8, 0, 0, 0, 0, 0, 82, 8, 8, 0,
- 0, 0, 0, 0, 72, 8, 6, 0, 0, 0, 0, 0, 128,20, 12, 2, 0, 0, 0, 0, 164,32, 8, 0, 0, 0, 0, 0, 14, 141,26, 0, 0, 0, 0, 0, 22, 137,8, 0,
- 0, 0, 0, 0, 2, 20, 2, 0, 0, 0, 0, 0, 8, 8, 0, 2, 0, 0, 0, 0, 30, 128,8, 0, 0, 0, 0, 0, 0, 20, 8, 2, 0, 0, 0, 0, 2, 196,2, 2,
- 0, 0, 0, 0, 52, 0, 2, 0, 0, 0, 0, 0, 18, 0, 2, 0, 0, 0, 0, 0, 254,252,126,0, 0, 0, 0, 0, 46, 184,76, 0, 0, 0, 0, 0, 178,25, 78, 0,
- 0, 0, 0, 0, 49, 41, 8, 2, 0, 0, 0, 0, 179,1, 12, 0, 0, 0, 0, 0, 20, 0, 16, 0, 0, 0, 0, 0, 38, 16, 6, 0, 0, 0, 0, 0, 32, 44, 0, 0,
- 0, 32, 0, 0, 254,17, 78, 1, 0, 0, 0, 0, 48, 144,0, 0, 0, 0, 0, 0, 24, 32, 6, 2, 0, 0, 0, 0, 0, 8, 104,0, 0, 0, 0, 0, 126,48, 80, 1,
- 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 47, 49, 16, 1, 0, 0, 0, 0, 50, 48, 0, 0, 0, 0, 0, 0, 22, 48, 32, 0, 0, 0, 0, 0, 34, 0, 34, 0,
- 0, 0, 0, 0, 61, 248,8, 1, 0, 0, 0, 0, 8, 160,10, 0, 0, 0, 0, 0, 2, 184,8, 0, 0, 0, 0, 0, 254,185,30, 1, 0, 0, 0, 0, 19, 8, 0, 0,
- 0, 0, 0, 0, 0, 184,14, 1, 0, 0, 0, 0, 24, 29, 72, 2, 0, 0, 0, 0, 17, 145,16, 0, 0, 0, 0, 0, 80, 21, 2, 2, 0, 0, 0, 0, 16, 2, 8, 2,
- 0, 0, 0, 0, 74, 56, 6, 0, 0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 26, 36, 8, 2, 0, 0, 0, 0, 4, 20, 8, 2, 0, 0, 0, 0, 18, 20, 64, 0,
- 0, 0, 0, 0, 18, 12, 68, 0, 0, 0, 0, 0, 90, 177,10, 1, 0, 0, 0, 0, 68, 52, 12, 2, 0, 0, 0, 0, 12, 36, 8, 2, 0, 0, 0, 0, 8, 1, 8, 1,
- 0, 0, 0, 0, 20, 176,12, 2, 0, 0, 0, 0, 66, 32, 14, 0, 0, 0, 0, 0, 119,248,62, 0, 0, 0, 0, 0, 6, 40, 46, 0, 128,32, 0, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 230,249,122,2, 0, 0, 0, 0, 25, 105,0, 0, 0, 0, 0, 0, 20, 1, 8, 1, 0, 0, 0, 0, 6, 128,8, 0, 0, 96, 4, 0, 8, 0, 0, 0,
- 0, 224,30, 0, 0, 0, 4, 0, 0, 0, 0, 0, 92, 161,4, 2, 0, 32, 0, 0, 14, 8, 6, 0, 0, 96, 12, 0, 0, 32, 0, 0, 0, 0, 0, 0, 132,9, 30, 0,
- 0, 224,0, 0, 18, 81, 12, 1, 0, 0, 0, 0, 10, 0, 32, 0, 0, 0, 0, 0, 2, 40, 14, 0, 0, 100,0, 0, 16, 17, 4, 0, 0, 0, 0, 0, 2, 176,72, 0,
- 0, 0, 0, 0, 18, 137,4, 1, 0, 32, 0, 0, 16, 1, 0, 1, 0, 0, 0, 0, 17, 32, 64, 0, 0, 0, 0, 0, 16, 129,68, 0, 0, 0, 0, 0, 26, 17, 20, 1,
- 0, 0, 0, 0, 7, 144,56, 0, 0, 0, 0, 0, 17, 65, 84, 0, 0, 0, 0, 0, 66, 232,24, 0, 0, 0, 0, 0, 106,176,8, 0, 0, 0, 0, 0, 46, 121,14, 2,
- 0, 96, 0, 0, 8, 144,4, 0, 0, 0, 0, 0, 4, 8, 42, 0, 0, 128,0, 0, 146,201,6, 0, 0, 0, 0, 0, 255,255,255,1, 0, 0, 0, 0, 238,190,127,1,
- 0, 0, 0, 0, 25, 0, 2, 0, 0, 0, 0, 0, 0, 16, 96, 0, 0, 0, 0, 0, 25, 65, 12, 1, 0, 0, 0, 0, 85, 66, 0, 0, 0, 0, 0, 0, 127,73, 4, 1,
- 0, 0, 0, 0, 49, 9, 64, 0, 0, 4, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 18, 73, 12, 0, 0, 0, 0, 0, 149,76, 30, 0, 0, 0, 0, 0, 5, 0, 12, 0,
- 0, 112,32, 0, 17, 73, 4, 0, 0, 0, 16, 0, 17, 0, 4, 0, 0, 32, 0, 0, 8, 8, 4, 0, 0, 0, 0, 0, 91, 121,90, 1, 0, 0, 0, 0, 0, 60, 10, 0,
- 0, 0, 0, 0, 32, 16, 4, 0, 0, 0, 0, 0, 0, 24, 44, 0, 0, 0, 0, 0, 239,189,110,1, 0, 0, 0, 0, 18, 1, 0, 1, 0, 0, 0, 0, 16, 128,16, 0,
- 0, 0, 0, 0, 211,120,82, 0, 0, 0, 0, 0, 2, 32, 56, 0, 0, 0, 0, 0, 16, 33, 2, 0, 0, 0, 0, 0, 80, 104,66, 2, 0, 0, 0, 0, 123,190,254,3,
- 0, 0, 0, 0, 16, 64, 24, 0, 0, 0, 0, 0, 16, 57, 8, 0, 0, 0, 0, 0, 49, 0, 10, 0, 0, 0, 0, 0, 49, 40, 64, 0, 0, 0, 0, 0, 16, 136,0, 0,
- 0, 0, 0, 0, 144,32, 0, 2, 0, 0, 0, 0, 1, 116,0, 0, 0, 0, 0, 0, 145,65, 26, 0, 0, 0, 0, 0, 64, 0, 66, 0, 0, 0, 0, 0, 255,255,126,2,
- 0, 0, 0, 0, 128,36, 12, 0, 0, 0, 0, 0, 76, 48, 28, 1, 0, 32, 0, 0, 17, 81, 4, 0, 0, 0, 0, 0, 71, 48, 12, 0, 0, 0, 0, 0, 0, 4, 1, 0,
- 0, 0, 0, 0, 19, 113,4, 1, 0, 0, 0, 0, 4, 36, 2, 1, 0, 0, 0, 0, 19, 253,14, 1, 0, 0, 0, 0, 1, 162,6, 0, 0, 0, 0, 0, 16, 65, 8, 2,
- 0, 0, 0, 0, 125,96, 14, 0, 0, 4, 0, 0, 253,111,28, 2, 0, 0, 0, 0, 0, 161,40, 1, 0, 0, 0, 0, 68, 20, 14, 1, 0, 0, 0, 0, 146,68, 52, 0,
- 0, 0, 0, 0, 36, 72, 4, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 145,85, 24, 0, 0, 0, 0, 0, 8, 57, 4, 0, 0, 0, 0, 0, 0, 0, 32, 2,
- 0, 0, 0, 0, 145,65, 2, 2, 0, 0, 0, 0, 0, 36, 16, 0, 0, 4, 0, 0, 145,193,60, 0, 0, 0, 0, 0, 128,44, 2, 0, 0, 0, 0, 0, 1, 1, 24, 0,
- 0, 0, 0, 0, 13, 36, 0, 0, 0, 4, 0, 0, 17, 65, 20, 0, 0, 0, 0, 0, 6, 0, 56, 0, 0, 32, 0, 0, 255,255,62, 1, 0, 0, 0, 0, 34, 177,12, 0,
- 0, 0, 0, 0, 74, 48, 6, 1, 0, 0, 0, 0, 89, 65, 4, 0, 0, 0, 0, 0, 9, 72, 4, 0, 0, 32, 0, 0, 17, 35, 0, 1, 0, 32, 8, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 196,16, 0, 0, 0, 0, 0, 117,100,12, 0, 0, 0, 0, 0, 0, 12, 56, 0, 0, 0, 0, 0, 0, 112,40, 0, 0, 0, 0, 0, 8, 65, 8, 0,
- 0, 0, 0, 0, 13, 40, 28, 0, 0, 176,0, 0, 9, 16, 4, 0, 0, 0, 0, 0, 149,221,13, 0, 0, 0, 0, 0, 151,73, 28, 2, 0, 0, 0, 0, 80, 32, 2, 0,
- 0, 0, 0, 0, 50, 56, 14, 0, 0, 0, 0, 0, 21, 33, 2, 1, 0, 32, 8, 0, 58, 96, 28, 0, 0, 0, 0, 0, 33, 0, 16, 0, 0, 0, 0, 0, 17, 97, 28, 1,
- 0, 0, 0, 0, 84, 40, 4, 1, 0, 96, 13, 0, 123,253,220,1, 0, 0, 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 16, 0, 128,1, 0, 112,5, 0, 99, 216,78, 0,
- 0, 0, 0, 0, 191,28, 4, 1, 0, 32, 1, 0, 81, 65, 68, 0, 0, 0, 0, 0, 21, 16, 26, 0, 0, 0, 1, 0, 155,93, 122,1, 0, 0, 0, 0, 19, 96, 0, 0,
- 0, 0, 0, 0, 3, 40, 0, 2, 0, 32, 0, 0, 48, 9, 4, 0, 0, 0, 0, 0, 40, 0, 12, 1, 0, 16, 0, 0, 59, 73, 66, 1, 0, 0, 0, 0, 9, 32, 128,0,
- 0, 240,60, 0, 48, 17, 6, 1, 0, 0, 0, 0, 48, 1, 10, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 65, 17, 4, 0, 0, 0, 0, 0, 19, 163,18, 2,
- 0, 0, 0, 0, 10, 32, 2, 0, 0, 0, 0, 0, 0, 44, 40, 0, 0, 0, 0, 0, 145,73, 24, 1, 0, 32, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 24, 32, 22, 1,
- 0, 0, 0, 0, 3, 32, 10, 0, 0, 0, 0, 0, 145,89, 72, 0, 0, 0, 4, 0, 19, 217,22, 0, 0, 0, 0, 0, 0, 172,4, 0, 0, 0, 0, 0, 129,72, 18, 0,
- 0, 0, 0, 0, 40, 44, 4, 0, 0, 0, 0, 0, 0, 60, 6, 0, 0, 0, 0, 0, 129,1, 16, 0, 16, 0, 0, 0, 219,109,140,0, 0, 32, 0, 0, 177,0, 0, 0,
- 0, 0, 0, 0, 1, 73, 6, 1, 0, 32, 0, 0, 16, 12, 2, 1, 0, 0, 0, 0, 192,64, 6, 0, 0, 0, 0, 0, 5, 4, 9, 0, 0, 0, 0, 0, 17, 25, 4, 0,
- 0, 96, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 17, 201,20, 0, 0, 0, 0, 0, 59, 223,27, 1, 0, 0, 0, 0, 42, 160,2, 0, 0, 0, 0, 0, 156,168,70, 0,
- 16, 0, 0, 0, 53, 172,8, 0, 0, 0, 0, 0, 33, 1, 0, 0, 0, 48, 0, 0, 18, 81, 4, 1, 0, 32, 4, 0, 9, 0, 0, 0, 0, 0, 0, 0, 130,0, 8, 0,
- 0, 0, 0, 0, 17, 40, 14, 2, 0, 0, 0, 0, 122,44, 0, 0, 0, 32, 0, 0, 13, 32, 8, 0, 0, 0, 0, 0, 215,45, 44, 0, 0, 0, 0, 0, 73, 96, 0, 0,
- 0, 32, 1, 0, 25, 32, 12, 0, 0, 0, 0, 0, 16, 44, 4, 0, 0, 0, 0, 0, 3, 1, 0, 2, 16, 0, 0, 0, 191,189,126,1, 0, 0, 0, 0, 168,60, 46, 0,
- 0, 0, 0, 0, 152,113,68, 0, 0, 0, 0, 0, 7, 64, 0, 0, 0, 32, 0, 0, 8, 32, 0, 0, 0, 0, 0, 0, 138,173,14, 0, 0, 32, 0, 0, 136,0, 4, 0,
- 0, 0, 0, 0, 17, 1, 6, 2, 0, 0, 0, 0, 8, 44, 34, 0, 0, 0, 0, 0, 187,253,45, 1, 0, 96, 0, 0, 64, 0, 32, 0, 0, 32, 0, 0, 241,49, 20, 1,
- 0, 0, 0, 0, 17, 129,64, 0, 0, 0, 0, 0, 211,125,8, 3, 0, 0, 0, 0, 145,136,8, 0, 0, 0, 0, 0, 123,253,110,3, 0, 0, 0, 0, 61, 44, 12, 0,
- 0, 0, 0, 0, 9, 32, 64, 0, 0, 0, 0, 0, 12, 32, 64, 0, 0, 0, 0, 0, 128,8, 10, 2, 0, 0, 0, 0, 21, 9, 0, 0, 0, 0, 0, 0, 7, 16, 0, 0,
- 16, 0, 0, 0, 255,255,62, 3, 0, 0, 0, 0, 19, 9, 16, 0, 0, 0, 0, 0, 136,8, 34, 0, 0, 0, 0, 0, 33, 24, 26, 0, 0, 0, 0, 0, 0, 80, 10, 0,
- 0, 0, 0, 0, 66, 32, 8, 0, 0, 0, 0, 0, 25, 205,8, 0, 0, 0, 0, 0, 19, 221,20, 0, 0, 0, 0, 0, 10, 96, 4, 2, 0, 0, 0, 0, 72, 52, 0, 0,
- 0, 0, 0, 0, 221,103,12, 3, 0, 0, 0, 0, 66, 40, 80, 0, 0, 0, 0, 0, 24, 64, 6, 1, 0, 0, 0, 0, 8, 0, 30, 0, 0, 0, 0, 0, 18, 216,76, 1,
- 0, 0, 0, 0, 25, 77, 40, 0, 0, 0, 0, 0, 128,5, 2, 2, 0, 0, 0, 0, 0, 24, 6, 1, 0, 32, 0, 0, 179,24, 12, 0, 0, 0, 0, 0, 17, 136,0, 1,
- 0, 32, 0, 0, 0, 50, 2, 0, 0, 0, 0, 0, 0, 32, 16, 2, 0, 0, 0, 0, 255,254,126,1, 0, 0, 0, 0, 160,9, 8, 0, 0, 32, 2, 0, 16, 9, 68, 0,
- 0, 0, 0, 0, 9, 64, 16, 0, 0, 0, 0, 0, 194,56, 4, 0, 0, 0, 0, 0, 49, 32, 0, 0, 16, 0, 0, 0, 25, 72, 8, 0, 0, 0, 0, 0, 89, 36, 24, 0,
- 0, 0, 0, 0, 2, 132,8, 0, 0, 0, 0, 0, 24, 81, 4, 0, 0, 0, 0, 0, 146,156,12, 0, 0, 0, 0, 0, 18, 37, 10, 0, 0, 0, 0, 0, 139,8, 76, 1,
- 0, 32, 0, 0, 191,57, 78, 1, 0, 0, 0, 0, 81, 68, 76, 0, 0, 0, 0, 0, 64, 184,12, 0, 16, 0, 0, 0, 17, 33, 0, 0, 0, 0, 0, 0, 95, 241,14, 1,
- 0, 0, 0, 0, 25, 65, 16, 1, 0, 0, 0, 0, 8, 180,96, 0, 0, 0, 0, 0, 60, 37, 100,1, 0, 0, 0, 0, 88, 60, 32, 0, 0, 0, 0, 0, 60, 200,48, 1,
- 0, 0, 0, 0, 66, 48, 8, 0, 0, 0, 0, 0, 255,255,46, 0, 0, 0, 0, 0, 4, 17, 0, 1, 0, 0, 0, 0, 10, 0, 6, 0, 0, 0, 0, 0, 65, 64, 2, 0,
- 0, 0, 0, 0, 93, 25, 28, 2, 0, 0, 0, 0, 144,1, 4, 2, 0, 0, 0, 0, 17, 209,68, 0, 0, 0, 0, 0, 128,36, 10, 1, 0, 0, 0, 0, 64, 36, 8, 2,
- 0, 0, 0, 0, 16, 129,8, 0, 0, 0, 0, 0, 81, 29, 10, 0, 0, 0, 0, 0, 128,4, 72, 0, 0, 0, 0, 0, 24, 72, 28, 0, 0, 0, 0, 0, 67, 57, 20, 0,
- 0, 0, 8, 0, 255,252,255,3, 0, 0, 0, 0, 141,184,22, 0, 0, 0, 0, 0, 83, 73, 18, 1, 0, 0, 0, 0, 133,101,16, 1, 0, 0, 0, 0, 16, 8, 24, 0,
- 0, 0, 0, 0, 19, 121,4, 0, 0, 32, 0, 0, 223,121,86, 0, 0, 0, 0, 0, 15, 124,78, 0, 0, 0, 0, 0, 110,190,126,0, 0, 0, 0, 0, 0, 12, 0, 2,
- 0, 0, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 177,24, 66, 0, 0, 0, 0, 0, 18, 193,4, 0, 0, 0, 0, 0, 17, 129,14, 2, 0, 0, 0, 0, 49, 64, 26, 1,
- 0, 64, 0, 0, 245,121,94, 0, 0, 96, 0, 0, 4, 160,2, 0, 0, 0, 0, 0, 17, 193,20, 1, 0, 0, 0, 0, 68, 9, 8, 0, 0, 0, 0, 0, 145,69, 16, 0,
- 0, 0, 0, 0, 247,95, 61, 1, 0, 0, 0, 0, 194,48, 12, 0, 0, 0, 0, 0, 0, 96, 38, 0, 0, 0, 0, 0, 130,9, 0, 0, 0, 0, 0, 0, 117,0, 4, 0,
- 0, 0, 0, 0, 20, 1, 68, 1, 0, 0, 0, 0, 17, 81, 4, 1, 0, 0, 0, 0, 1, 0, 36, 0, 0, 240,46, 0, 239,57, 76, 1, 0, 0, 0, 0, 191,221,22, 2,
- 0, 96, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 20, 0, 128,0, 0, 0, 0, 0, 0, 108,6, 0, 0, 0, 0, 0, 21, 104,12, 0, 0, 0, 0, 0, 16, 49, 4, 0,
- 0, 0, 0, 0, 16, 36, 6, 0, 0, 32, 0, 0, 29, 97, 12, 1, 0, 0, 0, 0, 17, 76, 12, 0, 0, 32, 0, 0, 0, 128,142,0, 0, 0, 0, 0, 36, 0, 4, 0,
- 0, 0, 0, 0, 255,103,31, 1, 0, 0, 0, 0, 64, 41, 10, 0, 0, 0, 0, 0, 145,73, 8, 1, 0, 0, 0, 0, 69, 32, 70, 0, 0, 0, 0, 0, 149,73, 28, 0,
- 0, 32, 0, 0, 8, 8, 66, 0, 0, 40, 0, 0, 0, 16, 4, 0, 0, 32, 0, 0, 136,0, 14, 1, 0, 0, 0, 0, 7, 32, 12, 0, 0, 0, 0, 0, 177,73, 4, 0,
- 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0, 0, 168,10, 0, 0, 64, 0, 0, 6, 52, 18, 0, 0, 0, 0, 0, 144,204,14, 0, 0, 0, 0, 0, 151,255,94, 0,
- 0, 0, 0, 0, 68, 6, 32, 0, 0, 0, 0, 0, 88, 36, 12, 0, 0, 0, 0, 0, 69, 32, 20, 0, 0, 0, 0, 0, 132,45, 4, 0, 0, 0, 0, 0, 21, 109,28, 1,
- 0, 0, 0, 0, 0, 12, 32, 0, 0, 0, 0, 0, 32, 48, 0, 0, 0, 32, 0, 0, 128,8, 4, 0, 0, 0, 0, 0, 213,77, 94, 2, 0, 0, 0, 0, 8, 129,6, 0,
- 0, 0, 0, 0, 64, 174,6, 1, 0, 0, 0, 0, 85, 12, 0, 0, 0, 0, 0, 0, 112,228,140,0, 0, 0, 32, 0, 0, 32, 4, 0, 0, 0, 0, 0, 17, 1, 64, 2,
- 0, 0, 0, 0, 9, 24, 6, 0, 0, 0, 0, 0, 74, 8, 5, 0, 0, 64, 16, 0, 17, 107,82, 1, 0, 0, 1, 0, 2, 64, 8, 0, 0, 0, 0, 0, 243,169,42, 3,
- 0, 0, 0, 0, 48, 9, 0, 0, 0, 0, 0, 0, 80, 33, 64, 0, 0, 0, 0, 0, 25, 13, 4, 0, 0, 0, 0, 0, 24, 4, 4, 0, 0, 0, 0, 0, 25, 140,28, 2,
- 0, 32, 0, 0, 10, 128,6, 0, 0, 0, 0, 0, 249,185,106,0, 0, 0, 0, 0, 0, 56, 12, 0, 0, 0, 0, 0, 24, 24, 8, 0, 0, 0, 0, 0, 58, 185,46, 0,
- 0, 0, 0, 0, 3, 65, 20, 0, 0, 0, 0, 0, 72, 80, 6, 0, 0, 0, 0, 0, 56, 72, 8, 0, 0, 0, 0, 0, 49, 209,4, 2, 0, 0, 0, 0, 132,44, 4, 0,
- 0, 0, 0, 0, 0, 130,76, 0, 0, 0, 0, 0, 111,253,122,0, 0, 0, 0, 0, 56, 44, 0, 0, 0, 0, 0, 0, 29, 160,20, 2, 0, 0, 0, 0, 35, 168,14, 0,
- 0, 32, 0, 0, 190,188,78, 0, 0, 32, 0, 0, 49, 197,18, 1, 0, 0, 0, 0, 110,185,126,1, 0, 0, 0, 0, 1, 64, 4, 1, 0, 0, 0, 0, 144,72, 8, 0,
- 0, 128,0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 88, 5, 8, 0, 0, 0, 0, 0, 144,160,4, 0, 0, 0, 0, 0, 16, 69, 12, 1, 0, 0, 0, 0, 146,1, 4, 0,
- 0, 0, 0, 0, 17, 69, 4, 0, 0, 32, 0, 0, 138,32, 6, 0, 0, 0, 0, 0, 5, 38, 4, 0, 0, 0, 0, 0, 27, 17, 12, 0, 0, 0, 0, 0, 93, 177,124,2,
- 0, 0, 0, 0, 32, 0, 8, 2, 0, 0, 0, 0, 72, 0, 4, 2, 0, 0, 0, 0, 0, 148,40, 0, 0, 0, 0, 0, 16, 73, 68, 1, 0, 0, 0, 0, 16, 128,12, 0,
- 0, 0, 0, 0, 124,180,108,2, 0, 32, 2, 0, 16, 64, 6, 1, 0, 0, 0, 0, 17, 22, 4, 1, 0, 0, 0, 0, 10, 0, 2, 1, 0, 0, 0, 0, 80, 4, 4, 0,
- 0, 0, 0, 0, 4, 132,68, 0, 0, 0, 0, 0, 95, 240,124,0, 0, 0, 0, 0, 2, 64, 4, 0, 0, 0, 0, 0, 19, 5, 4, 0, 0, 0, 0, 0, 64, 160,8, 0,
- 0, 64, 0, 0, 145,36, 12, 0, 0, 0, 0, 0, 68, 128,0, 0, 0, 0, 0, 0, 152,169,6, 0, 0, 0, 0, 0, 74, 181,14, 1, 0, 0, 0, 0, 11, 152,4, 0,
- 0, 0, 0, 0, 129,4, 4, 0, 0, 32, 6, 0, 48, 0, 76, 2, 0, 0, 0, 0, 56, 0, 40, 0, 0, 0, 32, 0, 31, 197,30, 1, 0, 0, 0, 0, 12, 41, 78, 1,
- 0, 32, 0, 0, 184,145,108,0, 0, 32, 0, 0, 21, 137,12, 1, 0, 0, 0, 0, 95, 10, 14, 0, 0, 0, 0, 0, 72, 8, 10, 0, 0, 0, 0, 0, 4, 12, 12, 0,
- 0, 0, 0, 0, 8, 4, 4, 0, 0, 0, 0, 0, 217,40, 14, 0, 0, 0, 0, 0, 73, 0, 8, 0, 0, 96, 1, 0, 8, 0, 6, 1, 0, 0, 0, 0, 145,8, 14, 2,
- 0, 96, 0, 0, 178,19, 108,1, 0, 0, 0, 0, 69, 76, 26, 0, 0, 96, 1, 0, 154,233,70, 1, 0, 0, 0, 0, 25, 45, 12, 0, 0, 0, 0, 0, 4, 128,40, 0,
- 0, 32, 0, 0, 18, 41, 0, 1, 0, 0, 0, 0, 76, 9, 14, 0, 0, 0, 0, 0, 32, 128,8, 0, 0, 32, 0, 0, 16, 0, 4, 1, 0, 16, 0, 0, 149,209,18, 1,
- 0, 0, 0, 0, 124,133,58, 3, 0, 96, 0, 0, 146,144,6, 1, 0, 0, 0, 0, 28, 200,4, 0, 0, 0, 0, 0, 48, 12, 2, 0, 0, 0, 0, 0, 157,139,14, 1,
- 0, 0, 0, 0, 8, 0, 2, 2, 0, 0, 0, 0, 82, 17, 0, 0, 0, 0, 0, 0, 60, 132,40, 0, 0, 0, 0, 0, 142,196,123,0, 0, 0, 0, 0, 68, 132,8, 2,
- 0, 32, 0, 0, 16, 1, 20, 1, 0, 32, 0, 0, 24, 1, 4, 1, 0, 0, 0, 0, 24, 37, 10, 0, 0, 32, 0, 0, 190,145,68, 1, 0, 0, 0, 0, 102,4, 4, 0,
- 0, 0, 0, 0, 0, 180,6, 0, 0, 0, 0, 0, 18, 1, 4, 1, 0, 0, 0, 0, 23, 73, 22, 0, 0, 0, 0, 0, 4, 45, 6, 1, 0, 32, 0, 0, 17, 9, 4, 1,
- 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 16, 100,1, 0, 0, 0, 0, 0, 135,69, 6, 0, 0, 240,63, 0, 0, 64, 0, 0, 0, 0, 0, 0, 16, 17, 8, 0,
- 0, 0, 0, 0, 22, 136,0, 0, 0, 0, 0, 0, 17, 0, 68, 0, 0, 0, 0, 0, 153,65, 22, 0, 0, 0, 0, 0, 4, 160,70, 0, 0, 0, 0, 0, 0, 52, 2, 0,
- 0, 0, 0, 0, 194,24, 45, 0, 0, 0, 0, 0, 32, 16, 2, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 140,44, 20, 0, 0, 0, 0, 0, 49, 13, 26, 0,
- 0, 0, 0, 0, 23, 41, 72, 1, 0, 0, 0, 0, 5, 120,2, 0, 0, 0, 0, 0, 38, 8, 14, 0, 0, 0, 0, 0, 0, 101,4, 0, 0, 0, 0, 0, 251,125,126,3,
- 0, 0, 0, 0, 76, 165,6, 2, 0, 0, 0, 0, 73, 68, 16, 0, 0, 32, 0, 0, 17, 1, 4, 2, 0, 0, 0, 0, 12, 57, 134,1, 0, 0, 0, 0, 157,56, 44, 2,
- 0, 32, 0, 0, 1, 9, 20, 0, 0, 0, 0, 0, 64, 0, 2, 1, 0, 0, 0, 0, 5, 1, 0, 3, 0, 0, 1, 0, 16, 49, 110,1, 0, 0, 0, 0, 0, 1, 4, 2,
- 0, 0, 0, 0, 2, 16, 14, 0, 0, 0, 0, 0, 8, 33, 6, 0, 0, 0, 0, 0, 27, 115,38, 0, 16, 0, 0, 0, 138,192,78, 0, 0, 0, 0, 0, 33, 72, 44, 0,
- 0, 32, 0, 0, 40, 0, 36, 0, 0, 0, 0, 0, 89, 103,31, 3, 0, 0, 0, 0, 80, 20, 20, 0, 0, 0, 1, 0, 4, 0, 12, 0, 0, 0, 0, 0, 150,76, 68, 3,
- 0, 96, 2, 0, 1, 0, 132,0, 0, 32, 0, 0, 50, 36, 10, 0, 0, 0, 0, 0, 104,17, 38, 0, 0, 40, 4, 0, 49, 0, 32, 0, 0, 0, 0, 0, 136,252,14, 1,
- 0, 0, 0, 0, 149,204,74, 0, 0, 240,0, 0, 128,0, 0, 0, 0, 0, 0, 0, 223,253,62, 2, 0, 0, 0, 0, 6, 32, 40, 1, 0, 0, 0, 0, 33, 65, 0, 0,
- 0, 0, 0, 0, 5, 44, 14, 0, 0, 0, 0, 0, 151,105,12, 0, 0, 0, 0, 0, 145,73, 8, 0, 0, 0, 16, 0, 254,172,47, 2, 0, 8, 0, 0, 53, 27, 12, 0,
- 0, 32, 0, 0, 87, 185,76, 0, 0, 0, 0, 0, 128,128,4, 1, 0, 0, 0, 0, 29, 137,68, 0, 0, 0, 0, 0, 42, 0, 4, 0, 0, 32, 0, 0, 127,153,76, 0,
- 0, 0, 0, 0, 0, 4, 38, 0, 0, 0, 0, 0, 153,41, 4, 0, 0, 0, 0, 0, 3, 13, 16, 0, 0, 48, 0, 0, 157,207,50, 1, 0, 0, 0, 0, 253,61, 94, 3,
- 0, 0, 0, 0, 145,5, 0, 0, 0, 32, 0, 0, 46, 158,206,1, 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 36, 0, 1, 16, 0, 0, 0, 0, 0, 0, 127,101,12, 0,
- 0, 32, 0, 0, 16, 17, 4, 1, 0, 0, 0, 0, 19, 1, 16, 0, 0, 0, 0, 0, 221,13, 14, 0, 0, 0, 0, 0, 16, 153,4, 1, 0, 0, 0, 0, 1, 1, 0, 3,
- 0, 0, 0, 0, 0, 17, 12, 0, 0, 0, 0, 0, 145,1, 28, 2, 0, 96, 12, 0, 16, 1, 4, 0, 0, 0, 0, 0, 221,45, 110,3, 0, 0, 0, 0, 76, 4, 6, 0,
- 0, 0, 0, 0, 180,81, 4, 0, 0, 0, 0, 0, 150,69, 28, 0, 0, 0, 0, 0, 49, 80, 0, 0, 0, 32, 8, 0, 16, 141,12, 0, 0, 0, 0, 0, 76, 8, 6, 0,
- 0, 8, 0, 0, 16, 8, 64, 0, 0, 96, 0, 0, 18, 65, 86, 1, 0, 0, 0, 0, 92, 8, 14, 0, 0, 0, 0, 0, 19, 17, 4, 0, 0, 0, 0, 0, 16, 9, 12, 0,
- 0, 0, 0, 0, 75, 93, 2, 0, 0, 0, 0, 0, 0, 32, 64, 2, 0, 0, 0, 0, 68, 0, 128,0, 0, 0, 0, 0, 124,108,110,2, 0, 0, 0, 0, 145,68, 16, 1,
- 0, 32, 0, 0, 8, 0, 6, 1, 0, 96, 24, 0, 0, 16, 4, 0, 0, 0, 0, 0, 76, 44, 78, 0, 0, 0, 0, 0, 18, 16, 32, 0, 0, 0, 0, 0, 144,96, 16, 0,
- 0, 96, 4, 0, 8, 8, 6, 1, 0, 0, 0, 0, 9, 29, 12, 0, 0, 0, 0, 0, 93, 101,20, 1, 0, 0, 0, 0, 8, 8, 12, 1, 0, 0, 0, 0, 32, 8, 6, 2,
- 0, 0, 0, 0, 17, 69, 16, 1, 0, 32, 0, 0, 16, 65, 20, 0, 0, 0, 0, 0, 177,9, 12, 2, 0, 0, 0, 0, 21, 81, 16, 0, 0, 0, 0, 0, 0, 33, 76, 1,
- 0, 32, 0, 0, 24, 17, 0, 1, 0, 0, 0, 0, 36, 32, 8, 0, 0, 0, 0, 0, 8, 96, 0, 0, 0, 0, 0, 0, 188,125,30, 0, 0, 0, 0, 0, 0, 144,64, 0,
- 0, 0, 0, 0, 193,0, 12, 0, 0, 0, 0, 0, 96, 44, 10, 0, 0, 32, 0, 0, 51, 17, 4, 1, 0, 0, 0, 0, 21, 125,40, 1, 0, 32, 0, 0, 17, 65, 36, 1,
- 0, 0, 0, 0, 48, 32, 32, 0, 0, 32, 0, 0, 4, 176,72, 0, 0, 0, 0, 0, 128,105,76, 0, 0, 128,0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 110,53, 89, 1,
- 0, 0, 0, 0, 64, 9, 16, 0, 0, 0, 0, 0, 149,33, 64, 0, 0, 0, 0, 0, 64, 48, 8, 0, 0, 0, 0, 0, 64, 4, 8, 2, 0, 56, 32, 0, 187,25, 108,0,
- 0, 0, 0, 0, 5, 40, 92, 0, 0, 0, 0, 0, 32, 8, 12, 0, 0, 0, 0, 0, 156,40, 10, 0, 0, 0, 0, 0, 8, 17, 4, 0, 0, 0, 0, 0, 66, 41, 14, 2,
- 0, 16, 0, 0, 76, 21, 66, 0, 0, 0, 0, 0, 10, 57, 78, 0, 0, 32, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 64, 4, 0, 2,
- 0, 0, 0, 0, 90, 40, 14, 0, 0, 68, 0, 0, 27, 225,4, 1, 0, 0, 0, 0, 8, 16, 64, 0, 0, 0, 0, 0, 83, 16, 0, 1, 0, 0, 0, 0, 8, 44, 98, 0,
- 0, 0, 0, 0, 12, 4, 16, 0, 0, 0, 6, 0, 219,168,102,0, 0, 32, 2, 0, 129,1, 6, 0, 0, 52, 0, 0, 255,219,126,1, 0, 0, 0, 0, 255,189,254,3,
- 0, 0, 0, 0, 14, 8, 8, 0, 0, 0, 0, 0, 40, 17, 6, 1, 0, 0, 0, 0, 148,5, 0, 1, 0, 0, 0, 0, 144,129,4, 0, 0, 0, 0, 0, 152,41, 8, 1,
- 0, 0, 0, 0, 130,24, 8, 0, 0, 0, 0, 0, 138,40, 0, 0, 0, 0, 0, 0, 112,121,4, 0, 0, 0, 0, 0, 12, 16, 6, 0, 0, 0, 0, 0, 16, 120,2, 0,
- 0, 0, 0, 0, 146,48, 0, 1, 0, 0, 0, 0, 91, 40, 2, 0, 0, 0, 0, 0, 26, 73, 12, 0, 0, 0, 0, 0, 20, 16, 68, 0, 0, 0, 0, 0, 136,88, 6, 0,
- 0, 0, 0, 0, 63, 125,104,3, 0, 0, 0, 0, 23, 81, 68, 0, 0, 0, 0, 0, 59, 241,0, 0, 0, 0, 0, 0, 17, 13, 4, 0, 0, 0, 0, 0, 255,253,92, 2,
- 0, 0, 0, 0, 64, 8, 66, 0, 0, 0, 0, 0, 145,73, 0, 2, 0, 0, 0, 0, 51, 205,22, 0, 0, 0, 0, 0, 240,8, 2, 0, 0, 32, 2, 0, 17, 72, 6, 0,
- 0, 0, 0, 0, 53, 0, 4, 0, 0, 0, 0, 0, 0, 0, 116,0, 0, 0, 0, 0, 0, 2, 96, 0, 0, 0, 0, 0, 50, 1, 8, 0, 0, 0, 0, 0, 176,136,0, 0,
- 0, 0, 0, 0, 40, 0, 14, 1, 0, 224,44, 0, 127,125,110,3, 0, 0, 0, 0, 144,5, 2, 0, 0, 0, 0, 0, 16, 25, 100,0, 0, 0, 0, 0, 64, 0, 68, 0,
- 0, 32, 0, 0, 21, 1, 6, 1, 0, 96, 0, 0, 132,4, 12, 0, 0, 40, 0, 0, 17, 41, 30, 2, 0, 32, 0, 0, 149,101,28, 3, 0, 0, 0, 0, 1, 100,20, 0,
- 0, 0, 0, 0, 144,105,28, 2, 0, 34, 0, 0, 140,56, 70, 0, 0, 0, 0, 0, 4, 96, 54, 0, 0, 96, 0, 0, 17, 17, 4, 0, 0, 0, 0, 0, 17, 16, 14, 0,
- 0, 0, 0, 0, 46, 176,12, 0, 0, 0, 0, 0, 17, 37, 6, 0, 0, 0, 0, 0, 0, 128,20, 0, 0, 0, 0, 0, 16, 97, 14, 0, 0, 0, 0, 0, 128,8, 2, 1,
- 0, 0, 0, 0, 255,191,122,3, 0, 0, 0, 0, 76, 60, 18, 0, 0, 0, 0, 0, 160,17, 64, 1, 0, 0, 0, 0, 16, 1, 12, 1, 0, 32, 0, 0, 0, 1, 0, 1,
- 0, 32, 0, 0, 50, 129,14, 1, 0, 0, 0, 0, 74, 168,38, 0, 0, 32, 0, 0, 144,16, 68, 1, 0, 0, 0, 0, 147,76, 70, 0, 0, 0, 0, 0, 33, 12, 0, 0,
- 0, 0, 0, 0, 16, 40, 4, 1, 0, 0, 0, 0, 81, 112,0, 0, 0, 0, 0, 0, 126,60, 14, 0, 0, 0, 0, 0, 251,93, 70, 0, 0, 0, 0, 0, 64, 0, 18, 0,
- 0, 0, 0, 0, 17, 3, 18, 0, 0, 0, 0, 0, 0, 1, 8, 1, 0, 0, 0, 0, 19, 29, 8, 2, 0, 0, 0, 0, 177,209,16, 1, 0, 32, 0, 0, 0, 0, 10, 0,
- 0, 0, 0, 0, 223,116,13, 2, 0, 0, 0, 0, 16, 72, 10, 0, 0, 0, 0, 0, 175,253,78, 0, 0, 32, 0, 0, 21, 33, 4, 1, 0, 96, 0, 0, 0, 1, 36, 0,
- 0, 0, 0, 0, 86, 253,34, 0, 0, 0, 0, 0, 68, 137,12, 0, 0, 32, 0, 0, 19, 73, 84, 0, 0, 0, 0, 0, 128,12, 12, 2, 0, 0, 0, 0, 31, 0, 2, 0,
- 0, 240,4, 0, 192,100,6, 1, 0, 96, 0, 0, 17, 0, 4, 0, 0, 64, 0, 0, 126,190,174,0, 0, 32, 0, 0, 58, 57, 22, 1, 0, 0, 0, 0, 2, 32, 6, 1,
- 0, 0, 0, 0, 137,16, 4, 0, 0, 0, 0, 0, 226,40, 2, 0, 0, 0, 0, 0, 16, 41, 4, 1, 0, 0, 0, 0, 81, 24, 68, 0, 0, 0, 0, 0, 80, 169,76, 0,
- 0, 0, 0, 0, 147,49, 68, 0, 0, 0, 0, 0, 16, 32, 4, 2, 0, 0, 0, 0, 17, 217,20, 0, 0, 0, 0, 0, 93, 36, 12, 0, 0, 0, 0, 0, 130,16, 14, 0,
- 0, 32, 0, 0, 17, 9, 6, 1, 0, 0, 0, 0, 80, 60, 6, 0, 0, 0, 0, 0, 148,0, 8, 2, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 0, 255,255,126,1,
- 0, 0, 0, 0, 191,249,76, 1, 0, 0, 0, 0, 10, 8, 10, 0, 0, 0, 0, 0, 230,44, 14, 1, 0, 0, 0, 0, 48, 4, 4, 0, 0, 0, 0, 0, 8, 41, 4, 0,
- 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 17, 76, 2, 0, 0, 0, 0, 0, 12, 8, 6, 1, 0, 0, 0, 0, 63, 201,12, 2, 0, 0, 0, 0, 3, 144,0, 0,
- 0, 0, 0, 0, 80, 1, 16, 1, 0, 224,2, 0, 174,28, 70, 1, 0, 0, 0, 0, 72, 140,14, 0, 0, 0, 0, 0, 241,205,68, 1, 0, 0, 0, 0, 31, 127,10, 3,
- 0, 0, 0, 0, 168,4, 6, 1, 0, 96, 8, 0, 19, 65, 76, 1, 0, 0, 0, 0, 32, 65, 4, 2, 0, 0, 0, 0, 2, 8, 44, 0, 0, 0, 0, 0, 128,4, 20, 0,
- 0, 0, 0, 0, 148,12, 12, 2, 0, 0, 0, 0, 125,0, 10, 0, 0, 0, 0, 0, 17, 16, 8, 1, 0, 0, 16, 0, 17, 97, 16, 3, 0, 0, 0, 0, 239,189,124,3,
- 0, 0, 0, 0, 144,4, 1, 2, 0, 0, 0, 0, 59, 9, 8, 0, 0, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 49, 0, 4, 0, 0, 0, 0, 0, 0, 66, 4, 0,
- 0, 0, 0, 0, 121,96, 6, 0, 0, 0, 0, 0, 48, 8, 84, 0, 0, 32, 0, 0, 0, 40, 70, 0, 0, 0, 0, 0, 0, 200,4, 0, 0, 0, 0, 0, 18, 48, 0, 0,
- 0, 32, 0, 0, 181,209,28, 2, 0, 0, 0, 0, 20, 0, 4, 2, 0, 0, 0, 0, 52, 16, 4, 1, 0, 0, 0, 0, 36, 34, 44, 0, 0, 0, 0, 0, 230,0, 4, 0,
- 0, 0, 0, 0, 18, 32, 4, 2, 0, 0, 0, 0, 138,32, 12, 0, 0, 0, 0, 0, 255,191,124,1, 0, 0, 0, 0, 0, 20, 8, 0, 0, 0, 0, 0, 10, 128,8, 0,
- 0, 32, 0, 0, 22, 88, 76, 0, 0, 0, 0, 0, 102,0, 12, 0, 0, 0, 0, 0, 16, 48, 0, 2, 0, 0, 0, 0, 20, 25, 0, 0, 0, 0, 0, 0, 64, 4, 16, 0,
- 0, 0, 0, 0, 127,180,172,2, 0, 0, 0, 0, 16, 104,16, 0, 0, 0, 0, 0, 96, 4, 8, 0, 0, 160,0, 0, 34, 64, 6, 0, 0, 0, 0, 0, 18, 136,0, 0,
- 0, 0, 0, 0, 177,1, 4, 1, 0, 0, 1, 0, 20, 137,12, 0, 0, 0, 0, 0, 20, 16, 8, 2, 0, 0, 0, 0, 254,255,124,3, 0, 0, 0, 0, 18, 24, 4, 0,
- 0, 0, 0, 0, 19, 16, 5, 1, 0, 0, 0, 0, 65, 0, 8, 2, 0, 32, 0, 0, 146,152,0, 0, 0, 0, 0, 0, 144,12, 16, 0, 0, 0, 0, 0, 128,16, 0, 2,
- 0, 0, 0, 0, 74, 128,12, 0, 0, 0, 0, 0, 26, 16, 0, 0, 0, 0, 0, 0, 94, 177,44, 3, 0, 0, 0, 0, 1, 145,0, 0, 0, 0, 0, 0, 128,0, 12, 3,
- 0, 0, 0, 0, 44, 134,4, 0, 0, 0, 0, 0, 191,188,46, 3, 0, 0, 0, 0, 132,4, 0, 2, 0, 0, 0, 0, 0, 24, 10, 1, 0, 32, 4, 0, 26, 57, 76, 3,
- 0, 0, 0, 0, 17, 64, 48, 0, 0, 32, 2, 0, 0, 0, 84, 0, 0, 0, 0, 0, 14, 52, 38, 0, 0, 0, 0, 0, 4, 9, 8, 0, 0, 0, 0, 0, 50, 144,0, 0,
- 0, 0, 0, 0, 176,193,4, 1, 0, 0, 0, 0, 64, 36, 8, 0, 0, 32, 0, 0, 17, 197,0, 0, 0, 0, 0, 0, 92, 61, 74, 2, 0, 0, 0, 0, 16, 33, 0, 3,
- 0, 0, 0, 0, 19, 0, 4, 0, 0, 0, 0, 0, 144,8, 12, 2, 0, 0, 0, 0, 22, 120,134,0, 0, 0, 0, 0, 8, 32, 4, 2, 0, 0, 0, 0, 1, 40, 34, 2,
- 0, 0, 0, 0, 255,251,126,3, 0, 0, 0, 0, 8, 168,14, 0, 0, 0, 0, 0, 20, 1, 2, 0, 0, 0, 0, 0, 13, 2, 8, 0, 0, 0, 0, 0, 148,197,24, 1,
- 0, 0, 0, 0, 5, 0, 11, 0, 0, 0, 0, 0, 17, 32, 4, 2, 0, 0, 0, 0, 16, 9, 2, 1, 0, 0, 0, 0, 212,4, 10, 0, 0, 96, 8, 0, 48, 65, 0, 0,
- 0, 0, 0, 0, 17, 77, 0, 1, 0, 32, 4, 0, 61, 89, 12, 1, 0, 32, 4, 0, 16, 0, 4, 0, 0, 32, 4, 0, 0, 64, 0, 0, 0, 32, 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 155,73, 68, 0, 0, 0, 0, 0, 16, 4, 10, 0, 0, 0, 0, 0, 139,40, 30, 3, 0, 0, 0, 0, 32, 3, 0, 1, 0, 0, 0, 0, 217,9, 2, 0,
- 0, 0, 0, 0, 130,41, 66, 0, 0, 96, 0, 0, 30, 152,6, 1, 0, 0, 0, 0, 0, 20, 16, 1, 0, 0, 0, 0, 132,44, 14, 2, 0, 0, 0, 0, 21, 73, 12, 0,
- 0, 0, 0, 0, 145,69, 18, 0, 0, 0, 0, 0, 2, 64, 26, 0, 0, 0, 0, 0, 53, 205,28, 3, 0, 0, 0, 0, 4, 1, 64, 1, 0, 0, 0, 0, 4, 55, 4, 1,
- 0, 0, 0, 0, 16, 180,40, 0, 0, 0, 0, 0, 17, 64, 2, 2, 0, 0, 0, 0, 1, 129,4, 0, 0, 0, 0, 0, 19, 249,14, 1, 0, 0, 0, 0, 14, 32, 14, 1,
- 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 8, 36, 8, 1, 0, 112,44, 0, 165,73, 44, 0, 16, 160,0, 0, 127,125,94, 1, 0, 0, 0, 0, 147,89, 15, 0,
- 0, 0, 0, 0, 144,40, 2, 1, 0, 0, 0, 0, 16, 8, 106,0, 0, 0, 0, 0, 80, 8, 8, 0, 0, 96, 8, 0, 10, 0, 36, 0, 0, 0, 0, 0, 1, 64, 2, 2,
- 0, 0, 0, 0, 2, 48, 0, 2, 0, 128,0, 0, 17, 233,2, 0, 0, 96, 59, 0, 255,255,252,0, 0, 0, 0, 0, 2, 0, 64, 1, 0, 0, 0, 0, 0, 248,16, 0,
- 0, 0, 0, 0, 16, 112,0, 0, 0, 32, 0, 0, 4, 34, 134,0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 20, 192,8, 1, 0, 0, 0, 0, 127,255,122,1,
- 0, 0, 0, 0, 134,38, 8, 0, 0, 0, 0, 0, 32, 40, 12, 0, 0, 0, 0, 0, 23, 1, 4, 0, 0, 0, 0, 0, 8, 64, 6, 0, 0, 0, 0, 0, 83, 32, 8, 1,
- 0, 0, 0, 0, 1, 168,8, 1, 0, 0, 0, 0, 149,221,29, 3, 0, 32, 4, 0, 3, 33, 4, 1, 0, 0, 0, 0, 16, 20, 64, 0, 0, 0, 0, 0, 180,207,58, 1,
- 0, 0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0, 153,67, 16, 1, 0, 0, 0, 0, 17, 65, 10, 1, 0, 0, 0, 0, 157,33, 26, 0, 0, 0, 0, 0, 72, 34, 4, 0,
- 0, 0, 0, 0, 16, 196,4, 0, 0, 0, 0, 0, 12, 1, 2, 0, 0, 0, 0, 0, 1, 77, 0, 2, 0, 0, 1, 0, 0, 0, 4, 2, 0, 0, 0, 0, 238,189,62, 3,
- 0, 0, 0, 0, 0, 145,0, 1, 0, 0, 0, 0, 64, 34, 0, 0, 0, 0, 0, 0, 48, 8, 4, 1, 0, 0, 0, 0, 223,37, 76, 2, 0, 0, 0, 0, 18, 64, 8, 0,
- 0, 0, 0, 0, 27, 113,26, 1, 0, 0, 0, 0, 128,72, 68, 2, 0, 0, 0, 0, 0, 80, 0, 1, 0, 0, 0, 0, 50, 24, 64, 0, 0, 0, 0, 0, 149,25, 12, 2,
- 0, 0, 0, 0, 17, 33, 0, 2, 0, 0, 0, 0, 253,185,14, 3, 0, 0, 0, 0, 8, 32, 10, 2, 0, 0, 0, 0, 48, 145,12, 1, 0, 0, 0, 0, 19, 9, 0, 0,
- 0, 0, 0, 0, 24, 184,14, 2, 0, 96, 4, 0, 219,249,92, 1, 0, 0, 0, 0, 84, 8, 8, 0, 0, 0, 0, 0, 28, 68, 12, 0, 0, 0, 0, 0, 0, 41, 12, 0,
- 0, 0, 0, 0, 253,184,46, 2, 0, 0, 0, 0, 6, 0, 10, 0, 0, 0, 0, 0, 2, 16, 68, 0, 0, 0, 0, 0, 122,36, 12, 0, 0, 0, 0, 0, 161,0, 2, 1,
- 0, 32, 0, 0, 17, 9, 4, 0, 0, 0, 0, 0, 115,81, 0, 0, 0, 0, 0, 0, 99, 232,2, 1, 0, 0, 0, 0, 0, 160,4, 0, 0, 32, 0, 0, 32, 128,4, 0,
- 0, 0, 0, 0, 63, 252,62, 2, 0, 0, 0, 0, 1, 76, 0, 0, 0, 0, 0, 0, 145,184,104,0, 0, 32, 0, 0, 128,32, 0, 0, 0, 0, 0, 0, 19, 213,4, 0,
- 0, 0, 0, 0, 129,72, 12, 0, 0, 0, 0, 0, 93, 96, 8, 0, 0, 0, 0, 0, 64, 164,128,0, 0, 0, 0, 0, 144,89, 2, 0, 0, 0, 0, 0, 8, 160,96, 0,
- 0, 0, 0, 0, 128,96, 16, 0, 0, 0, 0, 0, 17, 81, 22, 0, 0, 0, 4, 0, 1, 16, 12, 1, 0, 168,2, 0, 17, 65, 4, 0, 0, 0, 0, 0, 21, 253,88, 1,
- 0, 0, 0, 0, 46, 56, 14, 0, 0, 0, 0, 0, 6, 128,4, 0, 0, 0, 0, 0, 68, 44, 110,0, 0, 0, 0, 0, 4, 156,12, 0, 0, 0, 0, 0, 38, 24, 4, 0,
- 0, 0, 0, 0, 12, 176,4, 0, 0, 0, 0, 0, 5, 68, 16, 0, 16, 228,7, 0, 223,255,254,3, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 16, 0, 255,255,255,3,
- 0, 0, 0, 0, 32, 12, 2, 0, 0, 0, 0, 0, 19, 73, 22, 0, 0, 0, 0, 0, 68, 12, 14, 0, 0, 0, 0, 0, 5, 96, 12, 0, 0, 32, 2, 0, 13, 8, 78, 0,
- 0, 0, 0, 0, 1, 104,2, 0, 0, 0, 0, 0, 157,109,28, 1, 0, 0, 0, 0, 2, 36, 2, 0, 0, 0, 0, 0, 2, 176,4, 0, 0, 0, 0, 0, 221,153,8, 1,
- 0, 0, 0, 0, 0, 112,20, 0, 0, 0, 0, 0, 68, 6, 8, 0, 0, 0, 0, 0, 49, 77, 30, 0, 0, 0, 0, 0, 211,88, 20, 0, 0, 0, 0, 0, 14, 56, 8, 0,
- 0, 0, 0, 0, 0, 8, 42, 0, 0, 0, 0, 0, 20, 129,4, 0, 0, 0, 0, 0, 246,238,78, 3, 0, 0, 0, 0, 210,201,68, 0, 0, 0, 0, 0, 65, 64, 24, 0,
- 0, 0, 0, 0, 0, 17, 16, 0, 0, 0, 0, 0, 204,125,30, 1, 0, 0, 16, 0, 173,113,30, 0, 0, 0, 0, 0, 255,221,124,1, 0, 0, 0, 0, 195,56, 46, 1,
- 0, 0, 0, 0, 2, 32, 6, 0, 0, 0, 0, 0, 55, 16, 28, 0, 0, 0, 16, 0, 19, 1, 12, 1, 0, 0, 0, 0, 83, 81, 16, 1, 0, 0, 0, 0, 204,160,6, 0,
- 0, 0, 0, 0, 19, 221,86, 0, 0, 0, 0, 0, 72, 45, 30, 1, 0, 0, 0, 0, 65, 65, 0, 0, 0, 0, 0, 0, 8, 13, 6, 2, 0, 0, 0, 0, 21, 60, 6, 1,
- 0, 0, 0, 0, 255,127,92, 3, 0, 0, 0, 0, 194,37, 0, 0, 0, 0, 0, 0, 19, 66, 18, 1, 0, 0, 1, 0, 68, 46, 5, 1, 0, 0, 0, 0, 17, 105,22, 1,
- 0, 0, 0, 0, 1, 17, 8, 0, 0, 0, 0, 0, 1, 16, 8, 1, 0, 0, 0, 0, 65, 84, 12, 0, 0, 0, 0, 0, 25, 81, 132,0, 0, 0, 0, 0, 136,0, 0, 2,
- 0, 0, 0, 0, 136,36, 2, 1, 0, 0, 0, 0, 16, 13, 8, 1, 0, 0, 0, 0, 145,201,22, 0, 0, 0, 0, 0, 128,104,12, 0, 0, 0, 0, 0, 1, 98, 2, 0,
- 0, 0, 0, 0, 136,33, 2, 0, 16, 0, 0, 0, 219,255,127,3, 0, 0, 0, 0, 138,172,76, 3, 0, 0, 0, 0, 32, 54, 1, 0, 0, 0, 0, 0, 34, 128,96, 0,
- 0, 0, 0, 0, 64, 32, 12, 0, 0, 0, 0, 0, 17, 8, 28, 0, 0, 0, 0, 0, 66, 48, 2, 0, 0, 0, 0, 0, 52, 32, 0, 0, 0, 0, 0, 0, 150,29, 12, 0,
- 0, 0, 0, 0, 1, 23, 0, 0, 0, 0, 0, 0, 58, 8, 14, 0, 0, 0, 0, 0, 213,123,30, 1, 0, 0, 0, 0, 0, 24, 38, 1, 0, 0, 0, 0, 0, 112,2, 0,
- 0, 0, 0, 0, 128,112,8, 1, 16, 0, 0, 0, 87, 168,14, 2, 0, 0, 0, 0, 3, 16, 0, 0, 0, 0, 0, 0, 64, 0, 24, 1, 0, 0, 0, 0, 169,33, 64, 0,
- 0, 0, 0, 0, 73, 32, 0, 0, 0, 8, 0, 0, 17, 209,16, 0, 0, 0, 0, 0, 12, 41, 68, 0, 0, 0, 0, 0, 27, 120,12, 1, 0, 112,36, 0, 4, 16, 4, 0,
- 0, 32, 0, 0, 25, 16, 0, 2, 0, 0, 0, 0, 17, 17, 0, 3, 0, 0, 0, 0, 201,128,64, 2, 0, 0, 0, 0, 49, 16, 18, 0, 0, 0, 0, 0, 0, 0, 1, 2,
- 0, 0, 1, 0, 230,188,15, 0, 0, 0, 0, 0, 16, 81, 8, 0, 16, 0, 0, 0, 16, 8, 0, 0, 0, 128,0, 0, 17, 89, 68, 0, 0, 0, 0, 0, 56, 1, 4, 1,
- 0, 0, 0, 0, 24, 137,8, 0, 0, 0, 0, 0, 133,124,28, 0, 0, 32, 0, 0, 29, 49, 12, 0, 0, 0, 32, 0, 16, 65, 0, 0, 0, 0, 0, 0, 4, 68, 5, 0,
- 0, 32, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 59, 1, 130,0, 0, 96, 0, 0, 2, 0, 4, 0, 0, 16, 0, 0, 204,190,46, 0, 0, 32, 0, 0, 99, 9, 4, 1,
- 0, 32, 0, 0, 16, 8, 0, 1, 0, 0, 0, 0, 48, 11, 0, 0, 0, 0, 0, 0, 145,32, 24, 0, 0, 16, 0, 0, 17, 32, 22, 0, 0, 0, 0, 0, 68, 24, 156,0,
- 0, 0, 0, 0, 17, 45, 24, 0, 0, 0, 0, 0, 125,125,28, 0, 0, 0, 0, 0, 108,244,172,0, 0, 0, 0, 0, 129,72, 2, 0, 16, 0, 0, 0, 17, 81, 28, 1,
- 0, 0, 0, 0, 32, 0, 6, 2, 0, 0, 0, 0, 20, 96, 4, 0, 0, 0, 0, 0, 19, 245,16, 0, 0, 32, 0, 0, 64, 32, 4, 0, 0, 48, 0, 0, 81, 201,28, 0,
- 0, 32, 0, 0, 1, 0, 16, 0, 0, 32, 0, 0, 0, 16, 14, 0, 0, 0, 0, 0, 255,249,30, 2, 0, 0, 0, 0, 70, 56, 6, 0, 0, 0, 0, 0, 0, 64, 18, 1,
- 0, 0, 0, 0, 10, 48, 14, 1, 0, 0, 0, 0, 67, 68, 80, 0, 0, 4, 0, 0, 17, 65, 0, 1, 0, 112,0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 36, 32, 2, 0,
- 0, 0, 0, 0, 145,9, 4, 0, 0, 0, 0, 0, 172,0, 8, 0, 0, 0, 0, 0, 181,137,16, 0, 0, 0, 0, 0, 223,255,126,2, 0, 0, 0, 0, 138,49, 48, 2,
- 0, 0, 0, 0, 35, 188,4, 2, 0, 0, 0, 0, 4, 32, 4, 1, 0, 32, 0, 0, 52, 169,4, 2, 0, 0, 0, 0, 2, 40, 14, 3, 0, 32, 0, 0, 51, 72, 12, 0,
- 0, 0, 0, 0, 133,124,14, 0, 0, 240,32, 0, 27, 209,20, 1, 0, 0, 0, 0, 2, 48, 40, 0, 0, 32, 0, 0, 16, 16, 4, 0, 0, 0, 0, 0, 38, 52, 12, 0,
- 0, 32, 0, 0, 0, 40, 4, 0, 0, 0, 0, 0, 145,73, 30, 2, 0, 0, 0, 0, 204,152,18, 0, 0, 0, 0, 0, 2, 0, 6, 2, 0, 0, 0, 0, 17, 84, 4, 0,
- 0, 0, 0, 0, 21, 17, 8, 0, 0, 0, 0, 0, 12, 32, 6, 0, 0, 96, 6, 0, 2, 0, 4, 0, 0, 8, 0, 0, 18, 65, 22, 0, 0, 0, 0, 0, 3, 69, 64, 0,
- 0, 16, 0, 0, 29, 97, 250,1, 0, 0, 0, 0, 94, 253,254,1, 0, 0, 0, 0, 17, 0, 134,0, 0, 0, 0, 0, 24, 65, 0, 1, 0, 0, 0, 0, 16, 4, 20, 0,
- 0, 0, 0, 0, 147,25, 0, 0, 0, 0, 0, 0, 19, 144,0, 0, 0, 0, 0, 0, 209,199,12, 0, 0, 0, 0, 0, 112,9, 20, 1, 0, 0, 0, 0, 1, 160,6, 0,
- 16, 0, 0, 0, 213,64, 12, 0, 0, 0, 0, 0, 8, 8, 36, 0, 0, 0, 0, 0, 0, 28, 26, 0, 0, 0, 0, 0, 4, 32, 30, 0, 0, 0, 0, 0, 49, 64, 18, 0,
- 0, 0, 0, 0, 8, 56, 4, 0, 0, 0, 0, 0, 0, 72, 10, 0, 0, 0, 0, 0, 129,97, 2, 0, 0, 0, 16, 0, 16, 0, 0, 0, 0, 0, 0, 0, 8, 40, 64, 0,
- 0, 0, 0, 0, 17, 89, 64, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 14, 168,14, 0, 0, 0, 0, 0, 2, 64, 2, 0, 0, 0, 0, 0, 0, 144,40, 0,
- 16, 0, 0, 0, 43, 81, 92, 0, 0, 0, 0, 0, 8, 8, 38, 0, 0, 0, 0, 0, 17, 96, 32, 0, 0, 0, 0, 0, 24, 176,6, 0, 0, 0, 0, 0, 4, 160,16, 0,
- 0, 0, 0, 0, 145,177,28, 2, 0, 0, 0, 0, 2, 17, 16, 0, 16, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 64, 48, 4, 0, 0, 0, 0, 0, 161,1, 2, 0,
- 0, 0, 0, 0, 8, 8, 34, 0, 0, 0, 0, 0, 223,124,174,0, 0, 0, 0, 0, 42, 188,62, 0, 0, 0, 0, 0, 82, 16, 0, 0, 0, 0, 0, 0, 1, 16, 6, 1,
- 0, 0, 0, 0, 65, 28, 0, 0, 0, 0, 0, 0, 80, 44, 4, 0, 16, 32, 0, 0, 0, 1, 36, 1, 0, 32, 0, 0, 18, 129,4, 0, 0, 0, 0, 0, 8, 0, 28, 1,
- 16, 0, 0, 0, 0, 65, 12, 0, 0, 0, 0, 0, 27, 121,30, 0, 0, 0, 0, 0, 18, 0, 16, 1, 0, 0, 0, 0, 19, 217,20, 0, 0, 240,8, 0, 24, 67, 44, 0,
- 0, 0, 0, 0, 82, 32, 0, 0, 0, 0, 34, 0, 59, 253,44, 0, 0, 0, 0, 0, 12, 32, 128,2, 0, 0, 0, 0, 219,72, 77, 1, 0, 0, 0, 0, 98, 56, 0, 0,
- 0, 0, 0, 0, 65, 0, 36, 0, 0, 0, 0, 0, 20, 185,84, 0, 0, 0, 0, 0, 17, 72, 68, 0, 0, 162,0, 0, 56, 128,12, 0, 0, 0, 0, 0, 36, 136,36, 0,
- 0, 0, 0, 0, 87, 240,92, 0, 0, 0, 0, 0, 88, 0, 12, 0, 0, 0, 0, 0, 0, 192,64, 0, 0, 0, 0, 0, 27, 33, 4, 0, 0, 0, 0, 0, 0, 48, 204,0,
- 0, 0, 0, 0, 93, 120,14, 1, 0, 0, 1, 0, 64, 8, 4, 0, 0, 0, 0, 0, 16, 161,4, 0, 0, 0, 0, 0, 90, 4, 0, 0, 0, 240,46, 0, 30, 65, 4, 0,
- 0, 0, 0, 0, 67, 57, 14, 1, 0, 0, 0, 0, 10, 64, 8, 0, 0, 0, 0, 0, 4, 129,2, 0, 0, 0, 0, 0, 99, 56, 6, 0, 0, 0, 0, 0, 255,255,238,2,
- 0, 0, 0, 0, 64, 112,2, 0, 0, 0, 0, 0, 193,98, 0, 0, 0, 0, 0, 0, 18, 73, 80, 0, 0, 0, 0, 0, 19, 33, 0, 1, 0, 0, 0, 0, 16, 41, 12, 0,
- 0, 0, 0, 0, 27, 17, 66, 1, 0, 0, 0, 0, 234,188,30, 0, 0, 0, 0, 0, 88, 4, 8, 0, 0, 0, 0, 0, 85, 48, 6, 0, 0, 0, 0, 0, 64, 2, 0, 2,
- 0, 0, 0, 0, 33, 72, 8, 0, 0, 0, 0, 0, 17, 33, 8, 1, 0, 0, 0, 0, 209,40, 18, 0, 0, 240,62, 0, 54, 153,78, 0, 0, 240,44, 0, 0, 0, 4, 0,
- 0, 32, 0, 0, 17, 40, 6, 1, 0, 0, 0, 0, 129,5, 42, 0, 0, 0, 0, 0, 123,121,28, 2, 0, 0, 0, 0, 8, 17, 10, 1, 0, 32, 0, 0, 31, 221,30, 0,
- 0, 32, 0, 0, 144,0, 14, 0, 0, 0, 0, 0, 17, 72, 22, 0, 0, 32, 0, 0, 16, 25, 68, 0, 0, 96, 0, 0, 47, 236,206,3, 0, 0, 0, 0, 132,136,8, 0,
- 0, 0, 0, 0, 8, 36, 12, 0, 0, 0, 0, 0, 144,33, 4, 0, 0, 0, 0, 0, 160,40, 142,0, 0, 0, 0, 0, 255,253,30, 1, 0, 32, 0, 0, 0, 18, 4, 0,
- 0, 0, 0, 0, 1, 73, 6, 0, 0, 0, 0, 0, 81, 8, 68, 0, 0, 32, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 11, 8, 6, 1, 0, 0, 0, 0, 16, 88, 8, 0,
- 0, 0, 0, 0, 0, 205,30, 0, 0, 0, 0, 0, 16, 25, 20, 1, 0, 0, 0, 0, 12, 40, 10, 1, 0, 0, 0, 0, 16, 160,0, 0, 0, 0, 0, 0, 21, 197,30, 1,
- 0, 0, 0, 0, 10, 49, 4, 0, 0, 0, 0, 0, 4, 176,32, 0, 0, 0, 0, 0, 159,81, 20, 2, 0, 0, 0, 0, 17, 12, 0, 0, 0, 0, 0, 0, 181,89, 30, 2,
- 0, 96, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 5, 4, 16, 0, 0, 0, 0, 0, 136,1, 6, 0, 0, 32, 0, 0, 1, 32, 64, 0, 0, 0, 0, 0, 1, 97, 0, 2,
- 0, 0, 1, 0, 35, 64, 8, 0, 0, 32, 0, 0, 19, 9, 16, 0, 0, 0, 0, 0, 0, 24, 136,0, 0, 128,0, 0, 1, 98, 0, 0, 0, 64, 0, 0, 32, 17, 36, 0,
- 0, 0, 0, 0, 68, 32, 6, 0, 0, 0, 0, 0, 0, 16, 8, 1, 0, 32, 0, 0, 0, 64, 4, 2, 0, 0, 0, 0, 64, 40, 6, 2, 0, 96, 0, 0, 8, 0, 8, 0,
- 0, 0, 0, 0, 149,68, 1, 2, 0, 0, 0, 0, 153,81, 8, 1, 0, 32, 0, 0, 0, 9, 0, 1, 0, 0, 0, 0, 40, 187,102,0, 0, 0, 0, 0, 65, 2, 0, 0,
- 0, 0, 0, 0, 48, 132,0, 0, 0, 0, 0, 0, 33, 65, 24, 0, 0, 0, 0, 0, 81, 104,20, 0, 0, 0, 0, 0, 8, 40, 40, 0, 16, 0, 0, 0, 17, 77, 16, 1,
- 0, 0, 0, 0, 191,125,60, 2, 0, 0, 0, 0, 40, 32, 6, 0, 0, 0, 0, 0, 0, 116,32, 0, 0, 0, 0, 0, 19, 49, 68, 1, 0, 0, 0, 0, 40, 16, 14, 1,
- 0, 96, 0, 0, 55, 223,92, 1, 0, 0, 0, 0, 128,41, 14, 2, 0, 32, 0, 0, 145,69, 20, 2, 0, 0, 0, 0, 0, 12, 40, 0, 0, 0, 0, 0, 129,0, 2, 2,
- 0, 0, 0, 0, 128,45, 6, 1, 0, 0, 0, 0, 28, 12, 12, 0, 0, 96, 2, 0, 94, 12, 12, 1, 0, 0, 0, 0, 208,148,2, 1, 0, 0, 0, 0, 148,197,0, 0,
- 0, 0, 0, 0, 95, 111,14, 3, 0, 0, 0, 0, 0, 41, 68, 0, 0, 0, 0, 0, 8, 12, 14, 1, 0, 0, 0, 0, 17, 2, 54, 2, 0, 0, 0, 0, 85, 96, 12, 0,
- 0, 96, 53, 64, 129,0, 0, 0, 0, 0, 0, 0, 254,252,78, 2, 0, 0, 4, 0, 51, 85, 12, 0, 0, 32, 0, 0, 144,65, 0, 0, 0, 0, 0, 0, 19, 0, 20, 0,
- 0, 0, 0, 0, 21, 128,12, 0, 0, 0, 0, 0, 19, 153,0, 0, 0, 2, 0, 0, 253,253,12, 0, 0, 0, 0, 0, 4, 40, 0, 2, 0, 0, 0, 0, 0, 12, 14, 2,
- 0, 0, 0, 0, 64, 41, 6, 0, 0, 0, 0, 0, 25, 9, 4, 0, 0, 0, 0, 0, 149,193,0, 1, 0, 0, 0, 0, 127,245,63, 1, 0, 0, 0, 0, 17, 67, 16, 0,
- 0, 0, 0, 0, 16, 9, 64, 0, 0, 0, 0, 0, 1, 40, 4, 3, 0, 0, 0, 0, 83, 33, 40, 1, 0, 0, 0, 0, 81, 65, 17, 0, 0, 0, 0, 0, 0, 65, 6, 0,
- 0, 0, 0, 0, 4, 53, 4, 0, 0, 0, 0, 0, 8, 41, 0, 0, 0, 0, 0, 0, 78, 106,4, 3, 0, 0, 32, 0, 0, 64, 4, 0, 0, 0, 0, 0, 28, 106,4, 0,
- 0, 0, 0, 0, 144,65, 8, 0, 0, 16, 0, 0, 16, 65, 22, 0, 0, 0, 0, 0, 80, 64, 2, 0, 0, 0, 16, 0, 149,65, 12, 0, 0, 0, 0, 0, 3, 68, 2, 1,
- 0, 0, 0, 0, 145,113,12, 2, 0, 0, 32, 0, 0, 32, 14, 0, 0, 0, 0, 0, 207,186,46, 0, 0, 0, 0, 0, 27, 153,12, 1, 0, 0, 0, 0, 80, 33, 8, 0,
- 0, 0, 0, 0, 1, 80, 4, 0, 0, 0, 0, 0, 19, 113,44, 0, 0, 0, 0, 0, 17, 17, 2, 0, 0, 0, 0, 0, 23, 169,14, 0, 0, 0, 0, 0, 148,9, 4, 2,
- 0, 0, 0, 0, 181,217,33, 0, 16, 0, 0, 0, 0, 8, 0, 0, 0, 96, 0, 0, 51, 97, 22, 3, 0, 0, 0, 0, 254,255,254,1, 0, 0, 0, 0, 17, 64, 16, 2,
- 0, 0, 0, 0, 0, 34, 0, 2, 0, 0, 0, 0, 144,5, 8, 3, 0, 32, 0, 0, 25, 0, 70, 1, 0, 32, 0, 0, 19, 9, 68, 0, 0, 0, 0, 0, 8, 80, 6, 0,
- 0, 0, 0, 0, 33, 1, 8, 0, 0, 0, 0, 0, 146,73, 68, 0, 0, 32, 0, 0, 145,89, 20, 0, 0, 32, 0, 0, 16, 128,0, 0, 0, 0, 0, 0, 22, 216,70, 0,
- 0, 0, 0, 0, 87, 53, 29, 2, 0, 32, 0, 0, 255,255,116,1, 0, 0, 0, 0, 4, 24, 136,0, 0, 0, 0, 0, 16, 65, 68, 0, 0, 0, 0, 0, 4, 48, 144,0,
- 0, 0, 0, 0, 153,128,4, 0, 0, 0, 0, 0, 128,132,12, 0, 0, 32, 0, 0, 20, 17, 0, 1, 0, 0, 0, 0, 82, 48, 140,0, 0, 0, 0, 0, 128,48, 64, 2,
- 0, 0, 0, 0, 17, 101,0, 0, 0, 0, 0, 0, 64, 41, 0, 0, 0, 32, 0, 0, 20, 73, 4, 0, 0, 0, 0, 0, 8, 8, 132,0, 0, 0, 0, 0, 21, 40, 100,0,
- 0, 0, 0, 0, 255,255,252,3, 0, 0, 0, 0, 12, 52, 14, 0, 0, 0, 0, 0, 1, 17, 68, 0, 0, 0, 0, 0, 18, 105,16, 0, 0, 0, 0, 0, 16, 65, 64, 0,
- 0, 32, 0, 0, 228,56, 12, 0, 0, 0, 0, 0, 48, 64, 26, 2, 0, 0, 0, 0, 14, 32, 4, 0, 0, 0, 2, 0, 18, 4, 4, 0, 0, 0, 0, 0, 19, 217,0, 0,
- 0, 0, 0, 0, 143,101,8, 0, 0, 32, 0, 0, 129,81, 0, 2, 0, 0, 0, 0, 1, 5, 8, 0, 0, 0, 0, 0, 133,200,44, 0, 0, 0, 0, 0, 144,65, 8, 1,
- 0, 0, 0, 0, 64, 40, 12, 2, 0, 0, 2, 0, 127,252,191,2, 0, 0, 0, 0, 147,73, 16, 0, 0, 0, 0, 0, 145,69, 0, 1, 0, 32, 0, 0, 16, 9, 4, 1,
- 0, 0, 0, 0, 4, 24, 0, 0, 0, 0, 0, 0, 76, 32, 22, 0, 0, 0, 0, 0, 48, 73, 0, 0, 0, 0, 0, 0, 80, 73, 16, 0, 0, 96, 0, 0, 48, 1, 4, 0,
- 0, 0, 0, 0, 3, 73, 8, 0, 0, 0, 8, 0, 19, 177,4, 0, 0, 0, 0, 0, 221,5, 8, 0, 0, 0, 0, 0, 8, 0, 24, 0, 0, 160,8, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 56, 132,0, 0, 0, 0, 0, 145,201,28, 0, 0, 0, 0, 0, 168,16, 140,0, 0, 0, 0, 0, 8, 9, 4, 0, 0, 0, 0, 0, 140,76, 8, 0,
- 0, 0, 0, 0, 20, 73, 12, 2, 0, 0, 0, 0, 1, 32, 28, 0, 0, 0, 0, 0, 254,255,252,1, 0, 0, 0, 0, 133,1, 0, 0, 0, 0, 0, 0, 176,0, 0, 0,
- 0, 0, 0, 0, 24, 73, 4, 0, 0, 0, 0, 0, 9, 12, 4, 0, 0, 0, 0, 0, 132,36, 0, 0, 0, 32, 0, 0, 144,65, 4, 0, 0, 0, 0, 0, 19, 136,4, 0,
- 0, 0, 0, 0, 93, 33, 12, 2, 0, 0, 0, 0, 20, 129,12, 0, 0, 0, 0, 0, 128,80, 12, 2, 0, 0, 0, 0, 66, 160,12, 0, 0, 96, 0, 0, 40, 16, 4, 0,
- 0, 32, 0, 0, 2, 48, 12, 0, 0, 0, 0, 0, 255,255,174,0, 0, 96, 0, 0, 17, 25, 4, 0, 0, 0, 0, 0, 80, 97, 0, 1, 0, 0, 0, 0, 195,56, 142,0,
- 0, 0, 0, 0, 1, 72, 20, 1, 0, 0, 0, 0, 16, 192,4, 0, 0, 0, 0, 0, 92, 36, 0, 2, 0, 0, 0, 0, 148,13, 12, 0, 0, 32, 0, 0, 16, 49, 68, 1,
- 0, 0, 0, 0, 16, 73, 8, 0, 0, 0, 0, 0, 83, 241,12, 0, 0, 0, 0, 0, 149,213,112,0, 0, 0, 0, 0, 0, 109,54, 0, 0, 0, 0, 0, 1, 176,6, 0,
- 0, 0, 0, 0, 222,39, 14, 3, 0, 0, 0, 0, 8, 0, 16, 1, 0, 0, 0, 0, 72, 16, 0, 0, 0, 32, 0, 0, 255,255,191,3, 0, 0, 0, 0, 128,57, 14, 2,
- 0, 0, 0, 0, 83, 81, 54, 0, 0, 0, 0, 0, 0, 24, 20, 0, 0, 0, 0, 0, 68, 80, 44, 0, 0, 0, 0, 0, 149,68, 20, 2, 0, 0, 0, 0, 33, 96, 8, 0,
- 0, 0, 0, 0, 211,16, 68, 0, 0, 0, 0, 0, 21, 141,20, 0, 0, 0, 0, 0, 128,16, 2, 0, 0, 0, 0, 0, 19, 253,16, 0, 0, 0, 0, 0, 219,101,4, 0,
- 0, 0, 0, 0, 25, 0, 20, 0, 0, 0, 0, 0, 130,56, 2, 0, 0, 0, 0, 0, 17, 201,0, 1, 0, 0, 0, 0, 127,255,63, 3, 0, 0, 0, 0, 0, 48, 8, 1,
- 0, 0, 0, 0, 0, 32, 38, 0, 0, 96, 36, 0, 108,178,12, 2, 0, 32, 0, 0, 17, 89, 20, 0, 0, 32, 2, 0, 0, 0, 4, 0, 0, 2, 0, 0, 159,253,29, 0,
- 0, 0, 0, 0, 66, 0, 2, 0, 0, 0, 0, 0, 24, 8, 6, 1, 0, 0, 0, 0, 32, 0, 112,0, 0, 0, 0, 0, 4, 52, 64, 0, 0, 0, 0, 0, 88, 8, 4, 0,
- 0, 96, 0, 0, 8, 32, 4, 0, 0, 0, 0, 0, 133,13, 12, 1, 0, 0, 0, 0, 129,72, 16, 0, 0, 0, 0, 0, 145,69, 92, 0, 0, 0, 0, 0, 146,128,8, 0,
- 0, 4, 4, 0, 16, 112,130,0, 0, 0, 0, 0, 8, 33, 14, 0, 0, 0, 0, 0, 153,40, 10, 0, 0, 0, 0, 0, 8, 36, 8, 2, 0, 0, 0, 0, 24, 9, 0, 1,
- 0, 0, 0, 0, 32, 8, 32, 0, 0, 96, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 124,40, 142,2, 0, 0, 0, 0, 87, 165,12, 2, 0, 96, 0, 0, 0, 0, 12, 0,
- 0, 2, 0, 0, 236,216,14, 0, 0, 0, 0, 0, 95, 253,62, 0, 0, 0, 0, 0, 24, 80, 64, 0, 0, 96, 0, 0, 14, 2, 4, 0, 0, 0, 0, 0, 25, 65, 64, 0,
- 0, 0, 1, 0, 44, 0, 68, 0, 0, 0, 0, 0, 36, 32, 4, 0, 0, 0, 0, 0, 21, 65, 82, 0, 0, 0, 0, 0, 9, 69, 4, 2, 0, 0, 0, 0, 17, 128,32, 0,
- 16, 68, 1, 0, 255,255,254,3, 0, 0, 0, 0, 1, 36, 4, 0, 0, 4, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 17, 32, 32, 0, 0, 0, 5, 0, 17, 105,50, 0,
- 0, 0, 0, 0, 0, 8, 13, 0, 0, 0, 0, 0, 133,77, 4, 0, 0, 0, 0, 0, 8, 16, 0, 1, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 27, 89, 16, 0,
- 0, 0, 0, 0, 4, 41, 0, 1, 0, 0, 16, 0, 174,188,6, 0, 0, 0, 0, 0, 236,196,0, 1, 0, 0, 0, 0, 34, 2, 128,0, 0, 0, 0, 0, 209,72, 18, 0,
- 0, 0, 0, 0, 0, 41, 2, 2, 0, 0, 0, 0, 187,90, 90, 1, 0, 0, 0, 0, 8, 0, 32, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 208,120,28, 0,
- 0, 0, 0, 0, 129,166,16, 1, 0, 128,0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 48, 97, 27, 0, 0, 0, 0, 0, 5, 128,0, 1, 0, 0, 0, 0, 63, 123,126,1,
- 0, 0, 0, 0, 3, 49, 8, 0, 0, 0, 0, 0, 15, 0, 12, 0, 0, 0, 0, 0, 129,36, 0, 0, 0, 0, 0, 0, 17, 80, 22, 0, 0, 32, 0, 0, 4, 24, 44, 0,
- 0, 0, 0, 0, 179,189,76, 0, 0, 0, 0, 0, 64, 40, 14, 1, 0, 0, 0, 0, 29, 1, 2, 0, 0, 0, 0, 0, 137,0, 4, 2, 0, 0, 0, 0, 129,1, 9, 0,
- 0, 0, 1, 0, 255,255,127,3, 0, 0, 0, 0, 110,185,126,0, 0, 0, 0, 0, 0, 65, 48, 0, 0, 0, 0, 0, 64, 33, 12, 0, 0, 0, 1, 0, 17, 73, 18, 0,
- 0, 0, 0, 0, 145,77, 26, 0, 0, 0, 0, 0, 1, 0, 34, 0, 0, 0, 0, 0, 3, 32, 4, 0, 0, 0, 0, 0, 0, 120,50, 0, 0, 0, 0, 0, 32, 144,0, 0,
- 0, 0, 0, 0, 44, 32, 45, 0, 0, 0, 0, 0, 0, 140,2, 0, 0, 0, 0, 0, 32, 8, 8, 0, 0, 0, 0, 0, 17, 225,18, 1, 0, 0, 0, 0, 0, 16, 24, 0,
- 0, 0, 0, 0, 37, 48, 46, 0, 0, 32, 0, 0, 255,252,126,0, 0, 0, 0, 0, 33, 0, 32, 0, 0, 0, 0, 0, 148,1, 8, 0, 0, 0, 0, 0, 49, 32, 38, 0,
- 0, 0, 0, 0, 4, 33, 16, 0, 0, 0, 0, 0, 13, 184,173,0, 0, 0, 0, 0, 44, 0, 8, 0, 0, 0, 0, 0, 21, 201,18, 0, 0, 0, 0, 0, 0, 17, 44, 2,
- 0, 0, 0, 0, 145,72, 50, 0, 0, 0, 0, 0, 0, 1, 34, 0, 0, 0, 0, 0, 47, 252,175,0, 0, 0, 0, 0, 17, 68, 2, 1, 0, 0, 0, 0, 164,2, 44, 0,
- 0, 32, 0, 0, 16, 1, 44, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, 0, 0, 0, 17, 65, 48, 0, 0, 0, 0, 0, 4, 52, 12, 0, 0, 0, 0, 0, 5, 0, 32, 0,
- 0, 0, 0, 0, 0, 4, 140,0, 0, 0, 0, 0, 8, 8, 32, 0, 0, 0, 0, 0, 20, 0, 66, 0, 0, 0, 0, 0, 46, 128,2, 0, 0, 0, 0, 0, 4, 9, 42, 0,
- 0, 0, 0, 0, 0, 136,64, 0, 0, 0, 0, 0, 12, 128,8, 0, 0, 0, 0, 0, 44, 0, 40, 0, 0, 0, 0, 0, 17, 65, 80, 0, 0, 0, 0, 0, 4, 32, 56, 0,
- 0, 0, 0, 0, 101,153,45, 0, 0, 0, 0, 0, 12, 8, 4, 0, 0, 0, 0, 0, 16, 192,8, 0, 0, 0, 0, 0, 149,197,88, 1, 0, 0, 0, 0, 32, 33, 40, 0,
- 0, 0, 0, 0, 21, 8, 10, 0, 0, 0, 0, 0, 8, 1, 32, 0, 0, 0, 0, 0, 34, 0, 8, 0, 0, 0, 0, 0, 6, 161,6, 0, 0, 0, 0, 0, 0, 184,0, 0,
- 0, 0, 0, 0, 130,84, 6, 2, 0, 0, 0, 0, 24, 24, 10, 0, 0, 0, 0, 0, 0, 8, 80, 0, 0, 0, 32, 0, 255,255,94, 1, 0, 0, 0, 0, 4, 144,4, 0,
- 0, 0, 0, 0, 149,85, 88, 0, 0, 0, 0, 0, 64, 33, 10, 0, 0, 0, 0, 0, 209,81, 16, 0, 0, 0, 0, 0, 255,253,127,2, 0, 0, 0, 0, 6, 56, 74, 0,
- 0, 0, 0, 0, 64, 5, 16, 1, 0, 0, 0, 0, 20, 33, 4, 0, 0, 0, 0, 0, 21, 65, 4, 1, 0, 0, 0, 0, 5, 4, 4, 2, 0, 0, 0, 0, 1, 32, 12, 1,
- 0, 0, 0, 0, 31, 100,36, 2, 0, 0, 0, 0, 8, 10, 0, 2, 0, 0, 0, 0, 17, 193,16, 2, 0, 0, 0, 0, 5, 0, 0, 2, 0, 0, 0, 0, 80, 20, 2, 0,
- 16, 0, 0, 0, 255,253,94, 0, 0, 32, 0, 0, 111,49, 14, 0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 40, 40, 14, 0, 0, 160,0, 0, 16, 176,4, 1,
- 0, 0, 0, 0, 4, 160,4, 0, 0, 0, 0, 0, 178,0, 18, 1, 0, 0, 0, 0, 5, 1, 2, 0, 0, 0, 0, 0, 181,127,46, 3, 0, 0, 0, 0, 136,16, 2, 0,
- 0, 0, 0, 0, 4, 160,6, 0, 0, 0, 0, 0, 48, 16, 32, 0, 0, 0, 0, 0, 128,0, 48, 0, 0, 0, 0, 0, 192,16, 28, 0, 0, 0, 0, 0, 9, 16, 16, 0,
- 0, 0, 0, 0, 80, 0, 128,0, 0, 0, 0, 0, 136,48, 8, 2, 0, 0, 0, 0, 154,1, 16, 2, 0, 124,2, 0, 255,255,127,1, 0, 64, 0, 0, 253,191,255,3,
- 0, 0, 0, 0, 149,9, 24, 0, 0, 32, 0, 0, 0, 4, 16, 0, 0, 0, 0, 0, 129,105,26, 0, 0, 0, 0, 0, 8, 108,6, 0, 0, 0, 0, 0, 72, 161,2, 0,
- 0, 0, 0, 0, 129,1, 20, 0, 0, 0, 0, 0, 221,223,62, 0, 0, 0, 0, 0, 8, 37, 6, 2, 0, 0, 0, 0, 0, 144,6, 2, 0, 0, 0, 0, 9, 44, 14, 2,
- 0, 0, 0, 0, 20, 64, 12, 2, 0, 0, 0, 0, 17, 100,16, 1, 0, 0, 0, 0, 25, 32, 29, 0, 0, 0, 0, 0, 10, 32, 6, 0, 0, 0, 0, 0, 84, 42, 14, 3,
- 0, 32, 0, 0, 32, 0, 68, 0, 0, 0, 0, 0, 17, 48, 4, 0, 0, 0, 0, 0, 0, 33, 30, 0, 0, 8, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 1, 192,4, 0,
- 0, 0, 0, 0, 14, 188,30, 0, 0, 0, 0, 0, 16, 73, 18, 0, 0, 0, 0, 0, 22, 40, 34, 0, 0, 0, 0, 0, 0, 112,24, 0, 0, 0, 0, 0, 80, 56, 64, 0,
- 0, 0, 0, 0, 210,188,118,3, 0, 0, 0, 0, 131,0, 0, 0, 0, 0, 0, 0, 247,191,110,2, 0, 0, 0, 0, 48, 64, 2, 0, 0, 0, 0, 0, 18, 40, 2, 0,
- 0, 0, 0, 0, 48, 32, 164,0, 0, 0, 0, 0, 117,140,46, 3, 0, 0, 0, 0, 96, 16, 2, 0, 0, 0, 0, 0, 0, 57, 18, 0, 0, 0, 0, 0, 16, 152,0, 0,
- 0, 0, 0, 0, 20, 4, 52, 0, 0, 0, 0, 0, 48, 72, 114,1, 0, 0, 0, 0, 21, 40, 14, 0, 0, 0, 0, 0, 16, 32, 80, 0, 0, 0, 0, 0, 132,16, 12, 0,
- 0, 0, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 36, 104,54, 1, 0, 0, 0, 0, 5, 77, 24, 1, 0, 0, 0, 0, 148,36, 0, 0, 0, 0, 0, 0, 95, 125,63, 3,
- 0, 0, 0, 0, 200,38, 4, 2, 0, 0, 0, 0, 85, 104,4, 0, 0, 0, 0, 0, 215,93, 29, 3, 0, 0, 0, 0, 0, 41, 22, 0, 0, 0, 0, 0, 4, 12, 4, 1,
- 0, 0, 0, 0, 16, 101,4, 1, 0, 0, 0, 0, 12, 128,4, 0, 0, 0, 0, 0, 0, 40, 18, 1, 0, 0, 0, 0, 17, 121,2, 0, 0, 0, 0, 0, 67, 0, 0, 0,
- 0, 0, 0, 0, 78, 168,140,0, 0, 0, 0, 0, 137,96, 16, 0, 0, 64, 0, 0, 64, 0, 1, 2, 0, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129,37, 2, 0,
- 0, 0, 0, 0, 132,32, 0, 1, 0, 0, 0, 0, 34, 4, 8, 2, 0, 0, 0, 0, 223,255,238,3, 0, 0, 0, 0, 12, 8, 14, 2, 0, 0, 0, 0, 148,21, 8, 0,
- 0, 0, 0, 0, 241,1, 8, 0, 0, 32, 0, 0, 2, 8, 10, 0, 0, 0, 0, 0, 16, 129,162,0, 0, 0, 0, 0, 72, 44, 8, 0, 0, 0, 0, 0, 148,1, 0, 2,
- 0, 0, 0, 0, 157,95, 56, 2, 0, 0, 0, 0, 0, 32, 7, 3, 0, 0, 0, 0, 4, 0, 9, 0, 0, 0, 0, 0, 66, 32, 12, 3, 0, 0, 0, 0, 17, 12, 4, 2,
- 0, 0, 0, 0, 12, 0, 188,2, 0, 0, 0, 0, 144,21, 2, 2, 16, 0, 0, 0, 221,109,28, 2, 0, 0, 0, 0, 2, 32, 10, 0, 0, 0, 0, 0, 68, 0, 0, 2,
- 0, 0, 0, 0, 85, 16, 46, 3, 0, 0, 0, 0, 33, 32, 2, 0, 0, 0, 0, 0, 23, 32, 12, 2, 0, 0, 0, 0, 145,97, 22, 0, 0, 32, 0, 0, 8, 8, 6, 0,
- 0, 0, 0, 0, 80, 0, 12, 0, 0, 0, 0, 0, 68, 160,4, 0, 0, 0, 0, 0, 1, 42, 6, 0, 0, 0, 0, 0, 68, 32, 4, 2, 0, 0, 0, 0, 145,97, 16, 0,
- 0, 0, 0, 0, 16, 32, 14, 0, 0, 0, 0, 0, 97, 8, 12, 2, 0, 0, 0, 0, 65, 33, 8, 0, 0, 0, 0, 0, 68, 8, 0, 2, 0, 0, 0, 0, 0, 8, 26, 1,
- 0, 0, 0, 0, 22, 32, 0, 0, 0, 0, 0, 0, 17, 73, 24, 0, 0, 0, 0, 0, 68, 1, 72, 0, 0, 0, 0, 0, 16, 1, 18, 2, 0, 0, 0, 0, 2, 0, 132,0,
- 0, 0, 0, 0, 84, 0, 0, 2, 0, 32, 0, 0, 196,48, 4, 0, 0, 0, 0, 0, 149,169,28, 2, 0, 0, 0, 0, 49, 49, 6, 0, 0, 0, 0, 0, 149,64, 30, 0,
- 0, 32, 0, 0, 8, 24, 6, 0, 0, 64, 0, 0, 156,173,50, 1, 0, 0, 0, 0, 54, 48, 178,0, 0, 0, 0, 0, 32, 1, 0, 3, 0, 0, 0, 0, 2, 16, 12, 0,
- 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 154,0, 8, 0, 0, 0, 24, 0, 36, 0, 0, 0, 0, 32, 0, 0, 16, 2, 42, 0, 0, 0, 0, 0, 2, 16, 8, 2,
- 0, 96, 0, 0, 66, 37, 160,0, 0, 16, 0, 0, 34, 1, 0, 1, 0, 64, 17, 0, 0, 0, 0, 0, 0, 32, 2, 0, 32, 64, 4, 0, 0, 0, 0, 0, 223,255,174,2,
- 0, 0, 0, 0, 110,170,30, 0, 0, 0, 0, 0, 9, 96, 16, 0, 0, 0, 0, 0, 146,64, 18, 0, 0, 0, 0, 0, 149,69, 30, 0, 0, 0, 0, 0, 16, 33, 6, 1,
- 0, 32, 0, 0, 16, 1, 36, 1, 0, 0, 0, 0, 21, 96, 0, 1, 0, 64, 0, 0, 145,89, 18, 3, 0, 0, 0, 0, 12, 40, 22, 0, 0, 0, 0, 0, 16, 72, 12, 0,
- 0, 32, 0, 0, 84, 16, 12, 0, 0, 0, 0, 0, 203,43, 95, 1, 0, 0, 0, 0, 144,24, 0, 0, 0, 0, 0, 0, 80, 32, 12, 0, 0, 0, 0, 0, 17, 172,14, 0,
- 0, 0, 0, 0, 132,96, 12, 2, 0, 0, 0, 0, 49, 129,4, 0, 0, 0, 0, 0, 81, 105,16, 1, 0, 0, 0, 0, 6, 129,0, 0, 0, 0, 0, 0, 1, 2, 0, 1,
- 0, 0, 0, 0, 157,127,40, 0, 0, 0, 0, 0, 0, 33, 14, 1, 0, 0, 0, 0, 17, 97, 80, 0, 0, 32, 0, 0, 252,249,47, 0, 0, 0, 0, 0, 2, 192,56, 0,
- 0, 0, 0, 0, 2, 32, 48, 0, 0, 0, 0, 0, 24, 65, 56, 0, 0, 0, 0, 0, 25, 1, 14, 0, 0, 0, 0, 0, 236,184,46, 0, 0, 0, 0, 0, 53, 32, 0, 0,
- 0, 0, 0, 0, 223,111,30, 3, 0, 0, 0, 0, 64, 8, 12, 1, 0, 0, 0, 0, 81, 8, 14, 1, 0, 0, 0, 0, 53, 96, 8, 0, 0, 0, 0, 0, 0, 8, 130,0,
- 0, 32, 0, 0, 17, 192,4, 0, 0, 112,44, 0, 64, 16, 4, 0, 0, 0, 0, 0, 93, 69, 26, 2, 0, 0, 0, 0, 64, 56, 0, 1, 0, 0, 0, 0, 21, 64, 12, 0,
- 0, 0, 0, 0, 24, 40, 4, 0, 0, 0, 0, 0, 151,101,124,0, 0, 0, 0, 0, 64, 12, 4, 1, 0, 0, 0, 0, 70, 64, 8, 0, 0, 0, 0, 0, 4, 0, 54, 0,
- 0, 0, 0, 0, 145,69, 26, 1, 0, 0, 0, 0, 80, 184,14, 0, 0, 0, 0, 0, 0, 36, 12, 1, 0, 0, 0, 0, 0, 1, 8, 2, 0, 0, 0, 0, 3, 76, 6, 2,
- 0, 0, 0, 0, 20, 8, 12, 0, 0, 0, 0, 0, 132,40, 134,0, 0, 0, 0, 0, 4, 37, 6, 0, 0, 0, 0, 0, 29, 224,14, 0, 0, 32, 0, 0, 17, 65, 0, 0,
- 0, 4, 0, 0, 21, 33, 16, 2, 0, 0, 0, 0, 132,36, 1, 3, 0, 0, 0, 0, 96, 0, 32, 0, 0, 0, 0, 0, 33, 64, 0, 0, 0, 0, 0, 0, 21, 75, 12, 0,
- 0, 0, 0, 0, 141,32, 4, 0, 0, 96, 8, 0, 1, 73, 32, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 36, 0, 0, 0, 0, 0, 40, 0, 64, 0,
- 0, 0, 0, 0, 222,255,254,3, 0, 0, 0, 0, 21, 69, 20, 0, 0, 0, 0, 0, 9, 69, 0, 0, 0, 0, 0, 0, 72, 12, 8, 0, 0, 0, 0, 0, 0, 12, 8, 2,
- 0, 0, 0, 0, 80, 144,4, 2, 0, 0, 0, 0, 76, 168,174,0, 0, 0, 0, 0, 8, 88, 4, 0, 0, 0, 0, 0, 0, 33, 40, 0, 0, 4, 0, 0, 223,253,60, 3,
- 0, 0, 0, 0, 144,81, 4, 0, 0, 0, 0, 0, 40, 0, 32, 0, 0, 0, 0, 0, 19, 17, 22, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 4, 0, 0, 4, 0, 8, 0,
- 0, 0, 0, 0, 17, 1, 22, 2, 0, 96, 16, 0, 32, 0, 36, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,36, 78, 0, 0, 0, 0, 0, 1, 196,180,0,
- 0, 0, 0, 0, 20, 64, 8, 0, 0, 0, 0, 0, 72, 48, 2, 0, 0, 224,4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,16, 8, 0, 0, 0, 0, 0, 215,253,92, 0,
- 0, 0, 0, 0, 18, 4, 8, 0, 0, 0, 0, 0, 210,149,13, 0, 0, 0, 0, 0, 145,65, 14, 0, 0, 0, 0, 0, 68, 40, 4, 0, 0, 32, 0, 0, 0, 36, 0, 0,
- 0, 0, 0, 0, 8, 0, 22, 0, 0, 0, 4, 0, 0, 16, 2, 0, 0, 0, 0, 0, 19, 65, 4, 1, 0, 0, 0, 0, 10, 33, 8, 2, 0, 64, 0, 0, 24, 0, 16, 0,
- 0, 0, 0, 0, 17, 34, 0, 0, 0, 4, 0, 0, 17, 3, 0, 1, 0, 0, 0, 0, 64, 0, 40, 0, 0, 0, 0, 0, 144,108,18, 0, 0, 0, 0, 0, 84, 109,10, 1,
- 0, 0, 0, 0, 68, 173,40, 0, 0, 32, 0, 0, 64, 130,0, 0, 0, 0, 0, 0, 195,3, 44, 0, 0, 244,25, 64, 255,255,255,3, 0, 0, 0, 0, 21, 0, 66, 0,
- 0, 64, 1, 0, 0, 0, 64, 0, 0, 0, 0, 0, 229,40, 4, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 149,76, 9, 1, 0, 0, 0, 0, 1, 64, 28, 0,
- 0, 0, 0, 0, 185,125,20, 2, 0, 0, 0, 0, 10, 56, 2, 0, 0, 0, 0, 0, 68, 8, 8, 1, 0, 0, 0, 0, 57, 8, 24, 0, 0, 0, 0, 0, 81, 121,30, 1,
- 0, 0, 0, 0, 147,5, 0, 0, 0, 0, 0, 0, 155,233,14, 0, 0, 0, 0, 0, 82, 16, 21, 0, 0, 0, 0, 0, 107,60, 46, 0, 0, 0, 0, 0, 16, 21, 70, 0,
- 16, 0, 0, 0, 145,21, 70, 2, 0, 0, 0, 0, 2, 16, 4, 1, 0, 0, 0, 0, 162,56, 22, 1, 0, 0, 0, 0, 16, 65, 0, 2, 0, 0, 0, 0, 128,68, 16, 2,
- 0, 0, 0, 0, 147,113,38, 0, 0, 32, 0, 0, 4, 32, 66, 0, 0, 0, 0, 0, 32, 224,16, 0, 0, 0, 0, 0, 80, 48, 14, 3, 0, 0, 0, 0, 76, 32, 0, 2,
- 0, 0, 0, 0, 25, 121,92, 0, 0, 96, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 115,247,70, 1, 0, 0, 0, 0, 22, 36, 22, 0, 0, 0, 0, 0, 12, 32, 14, 1,
- 0, 0, 0, 0, 49, 0, 8, 0, 0, 0, 0, 0, 4, 224,66, 0, 0, 0, 0, 0, 149,65, 72, 0, 0, 0, 0, 0, 144,114,6, 2, 0, 160,0, 0, 0, 16, 4, 0,
- 0, 0, 0, 0, 140,64, 0, 0, 0, 0, 0, 0, 131,209,4, 0, 0, 0, 0, 0, 127,109,46, 3, 0, 0, 0, 0, 23, 72, 4, 0, 0, 0, 0, 0, 2, 16, 6, 0,
- 0, 0, 0, 0, 20, 9, 8, 0, 0, 0, 0, 0, 19, 205,0, 0, 0, 160,0, 0, 255,253,78, 3, 0, 0, 0, 0, 145,89, 70, 0, 0, 0, 0, 0, 193,33, 4, 2,
- 0, 0, 0, 0, 4, 104,4, 0, 0, 0, 0, 0, 4, 0, 66, 0, 0, 0, 0, 0, 19, 77, 28, 0, 0, 0, 0, 0, 23, 69, 12, 0, 0, 0, 0, 0, 44, 12, 6, 1,
- 0, 0, 0, 0, 17, 73, 12, 0, 0, 32, 0, 0, 40, 0, 12, 0, 0, 0, 0, 0, 20, 104,128,0, 0, 0, 0, 0, 133,209,8, 2, 0, 0, 0, 0, 0, 16, 80, 0,
- 0, 0, 0, 0, 151,81, 4, 1, 0, 4, 0, 0, 157,253,28, 3, 0, 4, 0, 0, 23, 253,26, 1, 0, 0, 0, 0, 0, 148,2, 0, 0, 0, 0, 0, 20, 60, 24, 0,
- 0, 0, 0, 0, 42, 8, 70, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 181,44, 94, 2, 0, 0, 0, 0, 128,32, 22, 0, 0, 32, 0, 0, 57, 81, 24, 0,
- 0, 32, 0, 0, 246,153,108,1, 0, 32, 0, 0, 128,197,8, 0, 0, 48, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 124,164,76, 0, 0, 0, 0, 0, 17, 145,2, 1,
- 0, 0, 0, 0, 104,40, 6, 0, 0, 0, 0, 0, 17, 25, 64, 1, 0, 64, 0, 0, 127,248,76, 0, 0, 32, 1, 0, 135,20, 106,0, 16, 0, 0, 0, 255,191,254,1,
- 0, 0, 0, 0, 106,172,46, 0, 0, 0, 0, 0, 0, 0, 134,0, 0, 0, 0, 0, 25, 9, 6, 1, 0, 32, 0, 0, 179,25, 100,0, 0, 4, 0, 0, 214,221,30, 2,
- 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 144,16, 64, 0, 0, 0, 0, 0, 88, 121,68, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 32, 0, 0, 8, 0, 68, 0,
- 0, 0, 0, 0, 222,189,46, 2, 0, 32, 1, 0, 145,81, 4, 1, 0, 0, 0, 0, 16, 1, 20, 1, 0, 0, 0, 0, 208,121,66, 0, 0, 0, 0, 0, 19, 60, 26, 0,
- 0, 0, 0, 0, 144,25, 68, 0, 0, 0, 0, 0, 223,188,78, 2, 0, 0, 0, 0, 18, 16, 8, 0, 0, 0, 0, 0, 145,120,0, 0, 0, 0, 0, 0, 243,29, 14, 2,
- 0, 0, 0, 0, 250,181,12, 2, 0, 0, 0, 0, 170,0, 4, 0, 0, 0, 0, 0, 82, 25, 0, 0, 0, 0, 0, 0, 144,52, 0, 2, 0, 0, 0, 0, 47, 188,76, 2,
- 0, 112,27, 0, 8, 0, 4, 0, 0, 0, 0, 0, 159,121,20, 0, 0, 0, 0, 0, 2, 128,40, 0, 0, 0, 0, 0, 148,81, 4, 3, 0, 0, 0, 0, 131,144,0, 1,
- 0, 0, 0, 0, 221,125,30, 2, 0, 0, 0, 0, 144,13, 0, 0, 0, 0, 0, 0, 17, 73, 14, 3, 0, 0, 0, 0, 2, 45, 0, 0, 0, 0, 0, 0, 16, 28, 8, 0,
- 0, 0, 0, 0, 148,8, 64, 2, 0, 96, 0, 0, 122,124,94, 1, 0, 0, 0, 0, 4, 0, 138,0, 0, 96, 0, 0, 144,16, 4, 3, 0, 0, 0, 0, 16, 16, 34, 0,
- 0, 32, 0, 0, 30, 108,12, 0, 0, 0, 0, 0, 16, 121,0, 0, 0, 0, 0, 0, 128,25, 4, 0, 0, 32, 0, 0, 247,219,102,0, 0, 0, 0, 0, 10, 8, 64, 0,
- 0, 0, 0, 0, 138,0, 2, 0, 0, 0, 0, 0, 226,56, 96, 0, 0, 0, 0, 0, 161,64, 0, 0, 0, 0, 0, 0, 157,220,76, 2, 0, 0, 0, 0, 19, 33, 4, 0,
- 0, 0, 0, 0, 48, 40, 0, 0, 0, 0, 0, 0, 251,60, 2, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 0, 25, 69, 88, 1, 0, 0, 0, 0, 140,189,14, 2,
- 16, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 0, 17, 9, 8, 0, 0, 0, 0, 0, 32, 0, 42, 1, 0, 0, 0, 0, 48, 0, 6, 0, 16, 0, 0, 0, 29, 105,92, 1,
- 0, 0, 0, 0, 12, 24, 38, 1, 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 29, 40, 74, 1, 0, 0, 0, 0, 54, 73, 4, 0, 0, 0, 0, 0, 0, 9, 8, 2,
- 0, 0, 0, 0, 159,83, 84, 0, 0, 0, 0, 0, 29, 141,8, 0, 16, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 35, 65, 48, 0, 0, 0, 0, 0, 128,0, 12, 2,
- 0, 0, 0, 0, 110,184,14, 2, 0, 0, 0, 0, 26, 8, 4, 0, 0, 0, 0, 0, 20, 33, 0, 1, 0, 0, 0, 0, 0, 157,12, 0, 0, 0, 0, 0, 16, 193,64, 0,
- 0, 0, 0, 0, 146,252,8, 0, 0, 0, 0, 0, 138,0, 6, 0, 0, 0, 0, 0, 247,125,110,0, 0, 32, 0, 0, 239,249,78, 1, 0, 0, 0, 0, 20, 225,8, 0,
- 0, 0, 0, 0, 17, 89, 16, 1, 0, 0, 0, 0, 8, 52, 10, 0, 16, 0, 0, 0, 31, 221,6, 0, 0, 0, 0, 0, 129,16, 2, 0, 0, 0, 0, 0, 128,32, 4, 1,
- 0, 0, 0, 0, 0, 216,4, 0, 0, 0, 0, 0, 48, 9, 8, 0, 16, 0, 0, 0, 27, 48, 12, 1, 0, 0, 0, 0, 17, 128,4, 0, 16, 0, 0, 0, 16, 64, 0, 0,
- 0, 0, 0, 0, 127,255,254,2, 0, 0, 0, 0, 16, 25, 14, 0, 0, 0, 0, 0, 177,29, 84, 0, 0, 0, 0, 0, 8, 56, 14, 1, 0, 0, 0, 0, 219,123,10, 0,
- 0, 0, 0, 0, 16, 128,64, 0, 0, 0, 0, 0, 66, 120,70, 0, 0, 0, 0, 0, 207,56, 78, 0, 0, 0, 0, 0, 16, 16, 2, 1, 0, 0, 0, 0, 128,1, 68, 0,
- 0, 0, 0, 0, 73, 69, 16, 0, 0, 0, 0, 0, 147,4, 4, 0, 0, 0, 0, 0, 24, 16, 20, 2, 0, 0, 0, 0, 20, 80, 8, 0, 0, 0, 0, 0, 18, 56, 12, 0,
- 0, 0, 0, 0, 128,56, 2, 0, 0, 0, 0, 0, 2, 65, 0, 2, 0, 0, 0, 0, 251,57, 78, 0, 0, 0, 0, 0, 144,73, 12, 0, 0, 0, 0, 0, 0, 184,12, 0,
- 0, 0, 0, 0, 255,61, 30, 1, 0, 0, 0, 0, 128,65, 16, 2, 0, 32, 0, 0, 183,121,78, 0, 0, 32, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 49, 6, 1,
- 0, 0, 0, 0, 6, 48, 6, 1, 0, 4, 0, 0, 247,245,70, 1, 0, 0, 0, 0, 26, 49, 2, 0, 0, 0, 0, 0, 120,48, 14, 1, 0, 0, 0, 0, 147,0, 4, 0,
- 0, 32, 0, 0, 119,56, 44, 0, 0, 32, 0, 0, 0, 48, 2, 0, 0, 240,29, 0, 1, 83, 4, 0, 0, 32, 0, 0, 18, 192,40, 0, 0, 0, 0, 0, 152,40, 8, 0,
- 0, 0, 0, 0, 14, 32, 80, 0, 0, 48, 0, 0, 2, 0, 4, 0, 0, 32, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 114,67, 6, 2, 0, 0, 0, 0, 16, 73, 22, 0,
- 0, 168,0, 0, 255,109,206,2, 0, 16, 0, 0, 179,219,94, 1, 0, 0, 0, 0, 8, 8, 134,0, 0, 0, 0, 0, 0, 48, 96, 0, 0, 96, 32, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 132,192,88, 0, 0, 0, 0, 0, 194,29, 14, 0, 0, 0, 0, 0, 191,121,14, 2, 0, 0, 0, 0, 8, 33, 10, 0, 0, 32, 0, 0, 0, 128,8, 0,
- 0, 0, 0, 0, 53, 36, 0, 0, 0, 0, 0, 0, 48, 73, 4, 1, 0, 0, 0, 0, 2, 146,4, 0, 0, 0, 0, 0, 2, 144,6, 1, 0, 0, 0, 0, 66, 48, 74, 1,
- 0, 0, 0, 0, 52, 164,0, 0, 0, 0, 0, 0, 180,92, 8, 0, 0, 224,36, 0, 16, 64, 4, 0, 0, 0, 0, 0, 144,74, 2, 2, 0, 112,32, 0, 242,25, 14, 0,
- 0, 48, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 193,2, 0, 0, 0, 0, 0, 125,69, 14, 1, 0, 0, 0, 0, 10, 56, 12, 0, 0, 0, 0, 0, 129,2, 0, 2,
- 0, 0, 0, 0, 158,253,76, 2, 0, 0, 0, 0, 205,56, 6, 0, 0, 0, 0, 0, 51, 81, 24, 1, 0, 0, 0, 0, 183,125,126,2, 0, 32, 0, 0, 21, 1, 0, 1,
- 0, 0, 0, 0, 185,105,6, 1, 0, 0, 0, 0, 16, 48, 2, 1, 0, 0, 0, 0, 210,125,70, 1, 0, 0, 0, 0, 8, 44, 2, 0, 0, 0, 0, 0, 1, 4, 64, 2,
- 0, 32, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 44, 32, 0, 2, 0, 0, 0, 0, 1, 0, 0, 3, 0, 80, 0, 0, 21, 1, 0, 0, 0, 0, 0, 0, 19, 85, 16, 1,
- 0, 0, 0, 0, 5, 8, 0, 0, 0, 0, 0, 0, 251,255,126,3, 0, 0, 0, 0, 2, 1, 20, 0, 0, 0, 0, 0, 17, 65, 4, 2, 0, 0, 0, 0, 160,136,14, 0,
- 0, 0, 0, 0, 32, 4, 0, 2, 0, 0, 0, 0, 120,0, 70, 0, 0, 0, 0, 0, 29, 33, 8, 0, 0, 0, 0, 0, 21, 68, 0, 1, 0, 0, 0, 0, 255,253,44, 2,
- 0, 240,36, 0, 121,217,6, 0, 0, 0, 0, 0, 40, 16, 68, 0, 0, 0, 0, 0, 24, 12, 8, 0, 0, 0, 0, 0, 144,18, 0, 2, 0, 0, 0, 0, 12, 48, 0, 0,
- 0, 32, 0, 0, 128,9, 4, 0, 16, 0, 0, 0, 72, 36, 12, 0, 0, 32, 0, 0, 50, 9, 68, 0, 0, 0, 0, 0, 254,253,76, 2, 0, 32, 0, 0, 255,157,102,1,
- 0, 0, 0, 0, 0, 24, 32, 0, 0, 0, 0, 0, 32, 80, 64, 0, 0, 0, 0, 0, 130,81, 8, 1, 0, 0, 0, 0, 16, 0, 72, 0, 0, 0, 0, 0, 191,152,126,1,
- 0, 0, 0, 0, 0, 48, 34, 1, 0, 0, 0, 0, 62, 124,14, 0, 0, 0, 0, 0, 16, 137,20, 2, 0, 0, 0, 0, 251,217,20, 0, 0, 0, 0, 0, 130,0, 2, 0,
- 0, 32, 0, 0, 16, 16, 12, 0, 0, 0, 0, 0, 128,192,24, 0, 0, 0, 0, 0, 25, 65, 0, 0, 0, 32, 0, 0, 4, 40, 100,0, 0, 0, 0, 0, 145,9, 92, 1,
- 0, 128,0, 0, 17, 1, 0, 1, 0, 0, 0, 0, 176,8, 8, 0, 0, 0, 0, 0, 48, 129,4, 0, 0, 0, 0, 0, 128,89, 0, 2, 0, 0, 0, 0, 17, 9, 64, 1,
- 0, 0, 0, 0, 128,21, 0, 0, 16, 0, 0, 0, 1, 32, 4, 0, 0, 32, 0, 0, 16, 12, 4, 0, 0, 64, 0, 0, 161,65, 36, 0, 0, 0, 0, 0, 21, 65, 144,3,
- 0, 0, 0, 0, 68, 169,140,1, 0, 0, 0, 0, 29, 36, 140,1, 0, 0, 4, 0, 16, 8, 0, 0, 0, 0, 0, 0, 192,8, 0, 0, 0, 0, 0, 0, 16, 80, 32, 0,
- 0, 32, 2, 0, 8, 0, 4, 0, 0, 0, 0, 0, 2, 64, 68, 0, 0, 0, 0, 0, 144,1, 12, 0, 0, 40, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 22, 32, 24, 0,
- 0, 0, 0, 0, 56, 8, 68, 0, 0, 0, 0, 0, 10, 192,128,0, 0, 32, 0, 0, 20, 0, 1, 2, 0, 0, 0, 0, 5, 209,4, 0, 0, 0, 33, 0, 158,239,142,3,
- 0, 0, 0, 0, 96, 1, 4, 0, 0, 0, 0, 0, 72, 32, 4, 0, 0, 0, 0, 0, 72, 24, 28, 2, 0, 0, 0, 0, 133,0, 12, 0, 0, 0, 0, 0, 184,67, 66, 0,
- 0, 160,0, 0, 32, 64, 192,0, 0, 32, 8, 0, 0, 0, 64, 0, 0, 0, 0, 0, 95, 124,46, 2, 0, 0, 0, 0, 16, 104,2, 0, 0, 0, 0, 0, 27, 101,8, 1,
- 0, 244,11, 0, 183,251,255,3, 0, 64, 0, 0, 0, 0, 128,1, 0, 0, 0, 0, 4, 61, 32, 1, 0, 128,0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 128,104,130,0,
- 0, 0, 0, 0, 68, 176,0, 0, 0, 0, 0, 0, 16, 65, 128,0, 0, 0, 0, 0, 129,1, 1, 0, 16, 0, 0, 0, 5, 121,34, 2, 0, 0, 0, 0, 128,112,0, 0,
- 0, 0, 0, 0, 66, 0, 0, 3, 0, 0, 0, 0, 0, 144,64, 1, 0, 0, 0, 0, 192,3, 0, 1, 0, 0, 0, 0, 0, 1, 160,0, 0, 0, 0, 0, 17, 136,0, 0,
- 0, 0, 0, 0, 20, 8, 2, 0, 0, 64, 0, 0, 0, 0, 1, 2, 0, 160,0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 148,4, 50, 0, 0, 0, 1, 0, 17, 0, 0, 0,
- 0, 0, 0, 0, 53, 0, 128,3, 0, 32, 44, 0, 0, 147,228,3, 0, 0, 0, 0, 128,72, 8, 2, 16, 0, 33, 0, 255,255,255,3, 0, 0, 0, 0, 209,20, 20, 0,
- 0, 0, 0, 0, 129,4, 2, 0, 0, 0, 0, 0, 133,68, 16, 0, 0, 0, 0, 0, 16, 72, 64, 0, 0, 0, 0, 0, 25, 69, 0, 0, 0, 0, 0, 0, 64, 12, 0, 1,
- 0, 0, 0, 0, 49, 0, 24, 0, 0, 0, 0, 0, 9, 105,74, 1, 0, 0, 0, 0, 17, 93, 20, 0, 0, 0, 0, 0, 10, 24, 12, 2, 0, 0, 0, 0, 131,245,20, 0,
- 0, 0, 0, 0, 200,116,28, 2, 16, 0, 0, 0, 93, 101,28, 0, 0, 0, 0, 0, 68, 49, 0, 0, 0, 0, 0, 0, 0, 4, 12, 3, 0, 0, 0, 0, 2, 64, 8, 2,
- 0, 0, 0, 0, 0, 36, 14, 0, 0, 240,41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 16, 68, 0, 0, 0, 0, 0, 1, 1, 2, 2, 16, 0, 0, 0, 75, 125,66, 2,
- 0, 0, 0, 0, 27, 24, 4, 0, 0, 0, 0, 0, 145,53, 28, 0, 0, 0, 0, 0, 136,101,14, 0, 0, 0, 0, 0, 1, 97, 16, 0, 0, 0, 0, 0, 16, 164,4, 0,
- 0, 0, 0, 0, 9, 65, 0, 2, 0, 0, 0, 0, 34, 2, 2, 0, 0, 0, 0, 0, 202,52, 14, 0, 0, 32, 0, 0, 130,16, 6, 0, 0, 68, 0, 0, 82, 105,76, 1,
- 0, 0, 0, 0, 16, 80, 12, 0, 0, 0, 0, 0, 196,4, 0, 0, 0, 0, 0, 0, 128,40, 4, 0, 0, 0, 0, 0, 155,169,58, 0, 0, 224,26, 0, 164,7, 12, 0,
- 0, 0, 0, 0, 76, 97, 12, 2, 0, 0, 0, 0, 128,56, 96, 0, 0, 0, 0, 0, 218,93, 14, 0, 16, 40, 32, 0, 144,149,28, 1, 0, 0, 0, 0, 0, 17, 12, 2,
- 0, 0, 0, 0, 221,40, 128,2, 0, 0, 0, 0, 160,0, 8, 2, 0, 32, 0, 0, 0, 0, 32, 1, 0, 4, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 32, 0, 10, 0,
- 0, 0, 0, 0, 96, 40, 0, 0, 0, 0, 0, 0, 93, 188,204,2, 0, 0, 0, 0, 137,0, 16, 0, 0, 0, 0, 0, 2, 2, 20, 0, 0, 64, 0, 0, 0, 4, 0, 0,
- 0, 0, 0, 0, 223,255,255,3, 0, 0, 0, 0, 0, 4, 36, 0, 0, 0, 0, 0, 128,69, 18, 0, 0, 32, 4, 0, 8, 0, 0, 0, 0, 0, 0, 0, 145,1, 16, 1,
- 0, 0, 0, 0, 128,1, 12, 3, 0, 0, 0, 0, 93, 101,12, 0, 0, 0, 0, 0, 8, 84, 0, 3, 0, 0, 0, 0, 16, 8, 20, 2, 0, 0, 0, 0, 128,160,0, 0,
- 0, 0, 0, 0, 95, 101,24, 0, 0, 0, 0, 0, 16, 17, 44, 0, 0, 0, 0, 0, 144,4, 28, 0, 0, 32, 0, 0, 153,116,8, 3, 16, 0, 0, 0, 89, 252,126,2,
- 0, 0, 0, 0, 145,33, 0, 0, 0, 0, 0, 0, 85, 5, 12, 0, 0, 32, 0, 0, 154,92, 7, 0, 0, 0, 0, 0, 17, 5, 28, 0, 0, 32, 0, 0, 72, 16, 16, 0,
- 0, 0, 16, 0, 1, 3, 2, 0, 0, 0, 0, 0, 83, 9, 13, 0, 0, 32, 0, 0, 12, 160,26, 1, 0, 0, 0, 0, 223,255,110,3, 0, 0, 0, 0, 133,4, 0, 0,
- 0, 0, 0, 0, 128,32, 8, 2, 0, 0, 0, 0, 93, 45, 24, 0, 16, 0, 0, 0, 17, 129,0, 0, 0, 0, 0, 0, 21, 85, 8, 1, 0, 0, 0, 0, 149,69, 24, 0,
- 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 17, 0, 1, 0, 0, 168,0, 0, 223,255,255,3, 0, 96, 0, 0, 0, 0, 128,2, 0, 0, 4, 0, 0, 0, 0, 2,
- 0, 0, 8, 0, 0, 0, 0, 2, 0, 0, 0, 0, 19, 77, 2, 0, 0, 0, 0, 0, 0, 40, 66, 1, 0, 0, 0, 0, 149,4, 0, 2, 0, 0, 0, 0, 17, 16, 10, 0,
- 0, 0, 0, 0, 25, 97, 2, 0, 0, 0, 0, 0, 0, 4, 66, 0, 0, 0, 0, 0, 64, 0, 8, 2, 0, 0, 0, 0, 161,1, 0, 0, 0, 0, 0, 0, 145,72, 22, 0,
- 0, 0, 0, 0, 12, 48, 10, 0, 0, 0, 0, 0, 14, 32, 14, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 145,69, 18, 1, 0, 0, 0, 0, 89, 93, 88, 0,
- 0, 0, 0, 0, 0, 16, 2, 2, 0, 0, 0, 0, 125,111,28, 3, 0, 0, 0, 0, 16, 0, 42, 0, 0, 0, 0, 0, 209,8, 0, 0, 0, 64, 0, 0, 177,193,18, 0,
- 0, 32, 0, 0, 0, 8, 32, 0, 1, 32, 0, 0, 0, 0, 193,0, 0, 96, 0, 0, 0, 0, 128,0, 0, 128,0, 0, 0, 0, 65, 0, 0, 0, 1, 0, 0, 0, 64, 0,
- 0, 0, 0, 0, 29, 109,27, 3, 0, 0, 0, 0, 192,32, 8, 2, 0, 0, 0, 0, 2, 60, 8, 0, 0, 0, 0, 0, 1, 132,142,0, 0, 0, 0, 0, 1, 68, 16, 0,
- 0, 0, 0, 0, 71, 32, 4, 0, 0, 0, 0, 0, 12, 8, 12, 0, 0, 0, 0, 0, 140,0, 4, 0, 0, 0, 0, 0, 25, 33, 0, 0, 0, 0, 0, 0, 80, 36, 0, 0,
- 0, 0, 0, 0, 112,0, 128,0, 0, 0, 0, 0, 17, 64, 18, 2, 16, 0, 0, 0, 255,253,191,3, 0, 0, 0, 0, 64, 40, 34, 0, 0, 160,0, 0, 36, 0, 4, 0,
- 0, 0, 0, 0, 66, 60, 4, 0, 0, 0, 0, 0, 24, 128,0, 0, 0, 0, 0, 0, 88, 56, 12, 0, 0, 0, 0, 0, 64, 8, 20, 2, 0, 0, 0, 0, 25, 127,8, 0,
- 0, 0, 0, 0, 8, 0, 4, 3, 0, 0, 0, 0, 12, 36, 0, 2, 0, 0, 0, 0, 1, 4, 4, 1, 0, 0, 0, 0, 51, 207,16, 0, 0, 0, 0, 0, 91, 101,12, 2,
- 0, 64, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 80, 32, 6, 2, 0, 0, 0, 0, 176,132,0, 0, 0, 0, 0, 0, 199,213,58, 2, 0, 48, 0, 0, 148,17, 12, 0,
- 0, 0, 0, 0, 5, 0, 8, 1, 0, 0, 0, 0, 17, 73, 12, 2, 0, 0, 0, 0, 25, 67, 48, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 64, 2, 0, 1,
- 0, 64, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 64, 136,32, 0, 0, 0, 0, 0, 192,0, 4, 2, 0, 0, 0, 0, 193,101,0, 2, 0, 0, 0, 0, 255,252,46, 3,
- 0, 0, 0, 0, 8, 4, 18, 0, 0, 0, 0, 0, 206,60, 14, 0, 0, 0, 0, 0, 48, 72, 0, 0, 0, 0, 0, 0, 19, 4, 4, 0, 0, 0, 0, 0, 24, 36, 0, 0,
- 0, 0, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, 65, 89, 0, 2, 0, 0, 0, 0, 0, 9, 16, 1, 0, 0, 0, 0, 29, 109,0, 0, 0, 0, 0, 0, 125,101,12, 2,
- 0, 0, 0, 0, 81, 72, 0, 0, 0, 32, 0, 0, 45, 140,6, 2, 0, 0, 0, 0, 7, 5, 0, 0, 0, 0, 0, 0, 145,64, 12, 2, 0, 0, 0, 0, 16, 88, 0, 0,
- 0, 0, 0, 0, 17, 193,144,0, 0, 0, 0, 0, 255,121,31, 3, 0, 0, 0, 0, 10, 8, 8, 1, 0, 0, 0, 0, 66, 72, 16, 0, 0, 0, 0, 0, 25, 121,24, 0,
- 0, 0, 0, 0, 17, 113,0, 0, 0, 0, 0, 0, 18, 64, 16, 0, 0, 0, 0, 0, 89, 5, 8, 0, 0, 0, 0, 0, 16, 188,142,0, 0, 0, 0, 0, 95, 117,10, 2,
- 0, 0, 0, 0, 5, 28, 10, 0, 0, 0, 0, 0, 33, 0, 128,0, 0, 0, 0, 0, 17, 3, 128,0, 0, 0, 0, 0, 53, 81, 128,0, 0, 0, 1, 0, 4, 0, 130,0,
- 0, 0, 2, 0, 0, 0, 128,0, 0, 0, 0, 0, 17, 5, 2, 0, 0, 0, 0, 0, 1, 36, 0, 2, 0, 0, 0, 0, 132,12, 0, 0, 0, 0, 0, 0, 128,8, 6, 0,
- 0, 0, 0, 0, 32, 0, 70, 0, 0, 0, 0, 0, 49, 29, 24, 0, 0, 0, 0, 0, 3, 208,68, 0, 0, 0, 0, 0, 24, 69, 0, 0, 0, 0, 0, 0, 149,117,0, 0,
- 0, 0, 0, 0, 50, 64, 0, 0, 0, 0, 4, 0, 17, 65, 8, 0, 0, 0, 0, 0, 196,32, 2, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 114,0, 0, 0,
- 0, 0, 0, 0, 85, 40, 0, 0, 0, 0, 0, 0, 34, 32, 0, 0, 0, 32, 16, 0, 69, 0, 0, 0, 0, 160,0, 0, 13, 0, 33, 0, 0, 0, 1, 0, 0, 0, 1, 2,
- 0, 32, 1, 0, 35, 0, 33, 0, 0, 160,0, 0, 0, 16, 0, 0, 0, 36, 0, 0, 1, 16, 0, 2, 0, 0, 0, 0, 78, 58, 70, 0, 0, 32, 20, 0, 1, 0, 138,2,
- 0, 32, 8, 0, 0, 0, 136,2, 0, 32, 0, 0, 0, 0, 128,2
+ 251,244,63, 152,255,255,255,7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 64, 0, 0, 0, 0, 128,0,
+ 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 16, 128,63, 0, 255,255,127,1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 56, 2, 0,
+ 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 8, 0, 0, 0, 0, 0, 17, 0, 8, 0, 0, 0, 0, 0, 17, 73, 18, 0,
+ 0, 0, 0, 0, 14, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 129,73, 0, 0,
+ 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 17, 64, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 1, 48, 0, 0, 0, 0, 0, 0, 1, 65, 18, 0,
+ 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 16, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 16, 64, 0, 0,
+ 0, 0, 0, 0, 16, 65, 2, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 8, 72, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0, 17, 65, 16, 0, 0, 0, 0, 0, 0, 128,34, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 64, 0, 4, 0, 0, 0, 0, 0, 0, 24, 88, 0,
+ 0, 0, 0, 0, 1, 64, 16, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 17, 73, 0, 0, 0, 0, 0, 0, 8, 32, 4, 0, 0, 0, 0, 0, 32, 0, 8, 0,
+ 0, 0, 0, 0, 96, 4, 40, 0, 0, 0, 0, 0, 4, 96, 102,0, 0, 0, 0, 0, 1, 65, 16, 0, 0, 0, 0, 0, 64, 36, 4, 0, 0, 0, 0, 0, 8, 0, 14, 0,
+ 0, 0, 0, 0, 25, 64, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 32, 74, 0, 0, 0, 0, 0, 32, 168,58, 0,
+ 0, 0, 0, 0, 8, 0, 0, 1, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 16, 72, 18, 0, 0, 0, 0, 0, 1, 64, 0, 0,
+ 0, 0, 0, 0, 0, 136,68, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 16, 65, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 4, 0, 16, 1,
+ 0, 0, 0, 0, 149,209,24, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 36, 48, 16, 0,
+ 0, 0, 0, 0, 0, 32, 10, 0, 0, 0, 0, 0, 145,65, 66, 0, 0, 0, 0, 0, 17, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 145,65, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
+ 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 17, 65, 0, 1, 0, 0, 0, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 8, 8, 0, 0,
+ 0, 0, 0, 0, 0, 16, 2, 0, 64, 0, 0, 0, 0, 0, 8, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 1, 0, 0, 1, 0, 133,36, 8, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 128,1, 0, 244,63, 0, 12, 200,86, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 112,63, 0, 0, 0, 4, 0, 0, 240,62, 0, 0, 0, 0, 0, 0, 48, 40, 0, 1, 0, 0, 0,
+ 0, 112,62, 0, 1, 0, 8, 0, 0, 48, 8, 0, 1, 0, 1, 2, 0, 48, 8, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 64, 0, 0,
+ 0, 0, 32, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 176,32, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0,
+ 0, 80, 8, 0, 2, 2, 0, 0, 0, 16, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
+ 0, 240,49, 0, 0, 0, 8, 0, 0, 224,61, 0, 0, 0, 0, 0, 0, 96, 16, 0, 8, 0, 0, 0, 0, 48, 62, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
+ 0, 240,63, 0, 0, 0, 0, 0, 0, 240,35, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 40, 0, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 128,16, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 0, 0, 0, 0, 80, 16, 0, 0, 0, 0, 0, 0, 144,0, 0, 0, 0, 0, 0, 0, 48, 19, 0, 0, 0, 0, 0,
+ 0, 224,63, 0, 0, 0, 0, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 160,36, 0, 0, 0, 0, 0, 0, 144,59, 0, 0, 0, 0, 0,
+ 0, 112,63, 0, 0, 0, 0, 0, 0, 192,63, 0, 0, 0, 0, 0, 0, 208,30, 0, 0, 0, 0, 0, 0, 96, 13, 0, 0, 0, 0, 0, 0, 208,63, 0, 0, 0, 0, 0,
+ 0, 32, 54, 0, 0, 0, 0, 0, 0, 240,61, 0, 0, 0, 0, 0, 0, 144,13, 0, 0, 0, 0, 0, 0, 160,14, 0, 0, 0, 0, 0, 0, 176,47, 0, 0, 0, 0, 0,
+ 0, 16, 1, 0, 0, 0, 0, 0, 0, 128,44, 0, 0, 0, 0, 0, 0, 160,63, 0, 0, 0, 0, 0, 0, 128,17, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0,
+ 0, 208,48, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 64, 0, 0, 1, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0,
+ 0, 240,0, 0, 0, 0, 0, 0, 0, 48, 16, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 16, 57, 0, 0, 0, 0, 0, 0, 48, 22, 0, 0, 0, 0, 0,
+ 0, 128,18, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 8, 0, 0, 32, 24, 0, 0, 128,0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 32, 0, 0, 4, 0, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 2, 0, 255,63, 0, 255,255,255,3, 0, 0, 2, 0, 24, 0, 0, 0,
+ 0, 32, 0, 0, 0, 4, 4, 0, 0, 240,127,0, 13, 145,12, 0, 0, 240,63, 0, 0, 16, 12, 1, 0, 16, 0, 0, 0, 16, 8, 0, 0, 48, 0, 0, 0, 0, 4, 0,
+ 0, 240,8, 0, 0, 0, 4, 0, 0, 224,34, 0, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,
+ 0, 208,33, 0, 0, 32, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 2, 0, 0, 128,0, 0, 0, 0, 8, 0,
+ 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 16, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 129,0, 0, 0, 0, 0, 0, 0, 0, 12, 0,
+ 0, 0, 0, 0, 1, 128,0, 0, 0, 240,63, 0, 7, 134,9, 0, 0, 112,23, 0, 0, 16, 12, 0, 0, 240,10, 0, 1, 8, 13, 2, 0, 96, 33, 0, 1, 0, 1, 0,
+ 0, 96, 0, 0, 1, 0, 1, 2, 0, 96, 0, 0, 1, 0, 65, 2, 0, 32, 16, 0, 1, 0, 1, 0, 0, 32, 0, 0, 1, 0, 0, 0, 0, 128,32, 0, 0, 0, 0, 0,
+ 0, 128,0, 0, 1, 0, 1, 0, 0, 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 224,3, 0, 0, 0, 8, 0, 0, 160,0, 0, 0, 0, 1, 0,
+ 0, 48, 3, 0, 1, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 128,1, 0, 0, 0, 8, 0, 0, 96, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0,
+ 0, 32, 12, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 32, 32, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0,
+ 0, 0, 16, 0, 1, 0, 8, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 240,63, 0, 17, 153,13, 0, 0, 224,7, 0, 8, 16, 8, 0,
+ 0, 0, 10, 0, 0, 0, 0, 0, 0, 240,3, 0, 16, 0, 4, 0, 0, 160,0, 0, 1, 0, 1, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 160,0, 0, 1, 0, 1, 2,
+ 0, 32, 1, 0, 0, 0, 0, 0, 0, 160,3, 0, 0, 32, 0, 0, 0, 128,1, 0, 0, 0, 0, 0, 0, 242,63, 0, 187,158,239,2, 0, 48, 32, 0, 0, 0, 0, 0,
+ 0, 176,9, 0, 49, 0, 69, 2, 0, 0, 0, 0, 0, 0, 65, 0, 0, 160,2, 0, 0, 0, 0, 0, 0, 224,0, 0, 0, 0, 0, 0, 0, 192,1, 0, 0, 0, 0, 0,
+ 0, 16, 8, 0, 0, 0, 0, 0, 0, 192,5, 0, 0, 0, 0, 0, 0, 48, 3, 0, 9, 9, 69, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 65, 0,
+ 0, 240,63, 0, 1, 4, 3, 2, 0, 64, 1, 0, 0, 0, 0, 0, 0, 128,3, 0, 0, 0, 0, 0, 4, 112,63, 0, 127,63, 239,2, 0, 128,0, 0, 0, 1, 0, 0,
+ 0, 240,62, 4, 255,255,239,3, 0, 112,56, 0, 11, 30, 127,2, 0, 112,48, 0, 13, 25, 69, 2, 64, 116,48, 0, 127,255,239,3, 0, 16, 32, 0, 9, 216,69, 2,
+ 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 128,2, 0, 0, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8, 0,
+ 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 40, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 28, 0, 0, 0, 0, 0,
+ 0, 16, 28, 0, 0, 0, 0, 0, 0, 160,1, 0, 3, 8, 4, 0, 0, 0, 0, 0, 4, 0, 32, 0, 0, 32, 0, 0, 8, 0, 0, 0, 0, 128,0, 0, 2, 64, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 16, 16, 0,
+ 0, 0, 0, 0, 0, 0, 132,0, 0, 160,0, 0, 1, 0, 65, 0, 0, 32, 0, 0, 0, 0, 64, 0, 0, 32, 0, 0, 0, 0, 1, 0, 0, 32, 0, 0, 17, 0, 0, 0,
+ 0, 160,1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 24, 0, 2, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 32, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, 0, 64, 0,
+ 0, 0, 0, 0, 0, 1, 0, 2, 0, 144,18, 0, 4, 0, 8, 0, 0, 128,12, 0, 0, 0, 0, 0, 0, 80, 23, 0, 4, 0, 72, 0, 0, 32, 24, 0, 0, 0, 0, 0,
+ 0, 16, 0, 0, 0, 0, 8, 0, 0, 64, 2, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 16, 8, 0, 0, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 24, 0, 0,
+ 0, 128,0, 0, 0, 0, 64, 0, 0, 160,0, 0, 17, 0, 0, 0, 0, 240,63, 0, 0, 0, 8, 0, 0, 192,5, 0, 128,2, 12, 0, 0, 192,3, 0, 0, 0, 4, 0,
+ 0, 32, 4, 0, 0, 0, 0, 0, 0, 128,7, 0, 32, 32, 0, 0, 0, 128,6, 0, 0, 0, 0, 0, 0, 96, 0, 0, 1, 0, 2, 0, 0, 64, 4, 0, 0, 4, 8, 0,
+ 0, 64, 18, 0, 1, 0, 1, 0, 0, 96, 14, 0, 0, 0, 8, 0, 0, 96, 52, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0, 114,58, 0, 1, 0, 0, 0,
+ 0, 64, 36, 0, 0, 0, 8, 0, 0, 32, 32, 0, 0, 0, 8, 0, 0, 240,63, 0, 0, 0, 60, 0, 0, 192,14, 0, 0, 0, 8, 0, 0, 32, 7, 0, 0, 0, 4, 0,
+ 0, 0, 18, 0, 0, 32, 0, 0, 0, 176,0, 0, 0, 0, 2, 0, 0, 16, 0, 0, 0, 0, 4, 0, 0, 16, 1, 0, 0, 0, 8, 0, 0, 192,4, 0, 0, 0, 8, 0,
+ 0, 128,8, 0, 0, 0, 0, 0, 0, 240,58, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 144,32, 0, 0, 0, 0, 0, 0, 128,2, 0, 0, 0, 0, 0,
+ 0, 32, 16, 0, 0, 0, 4, 0, 0, 192,2, 0, 0, 0, 8, 0, 0, 240,63, 0, 8, 0, 12, 0, 0, 112,10, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 16, 4, 0,
+ 0, 80, 6, 0, 0, 32, 4, 0, 0, 16, 2, 0, 64, 32, 0, 0, 0, 240,13, 0, 0, 0, 2, 0, 0, 80, 0, 0, 0, 0, 24, 0, 0, 16, 3, 0, 0, 16, 8, 0,
+ 0, 144,32, 0, 0, 0, 8, 0, 0, 240,61, 0, 0, 0, 8, 0, 0, 16, 8, 0, 0, 0, 4, 0, 0, 112,19, 0, 1, 0, 1, 0, 0, 112,51, 0, 1, 0, 1, 2,
+ 0, 32, 3, 0, 0, 0, 0, 0, 0, 240,63, 0, 32, 16, 8, 0, 0, 16, 2, 0, 0, 0, 8, 0, 0, 64, 8, 0, 0, 0, 4, 0, 0, 16, 2, 0, 0, 32, 0, 0,
+ 0, 16, 0, 0, 0, 0, 2, 0, 0, 144,8, 0, 0, 0, 8, 0, 0, 16, 4, 0, 0, 0, 8, 0, 0, 16, 32, 0, 0, 0, 8, 0, 0, 48, 46, 0, 0, 0, 8, 0,
+ 0, 32, 0, 0, 9, 0, 0, 0, 0, 64, 24, 0, 0, 0, 4, 0, 0, 48, 22, 0, 0, 32, 0, 0, 0, 48, 12, 0, 0, 0, 8, 0, 0, 144,0, 0, 0, 0, 8, 0,
+ 0, 240,63, 0, 0, 32, 8, 0, 0, 48, 36, 0, 8, 0, 8, 0, 0, 80, 0, 0, 0, 0, 4, 0, 0, 16, 26, 0, 0, 32, 0, 0, 0, 16, 1, 0, 0, 0, 2, 0,
+ 0, 48, 0, 0, 0, 0, 8, 0, 0, 80, 1, 0, 0, 0, 8, 0, 0, 80, 0, 0, 0, 0, 8, 0, 0, 240,63, 0, 8, 16, 8, 0, 0, 144,4, 0, 0, 0, 12, 0,
+ 0, 32, 0, 0, 0, 0, 4, 0, 0, 48, 16, 0, 0, 32, 0, 0, 0, 16, 58, 0, 0, 0, 2, 0, 0, 48, 51, 0, 0, 0, 8, 0, 0, 16, 0, 0, 4, 0, 0, 0,
+ 0, 16, 2, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 112,0, 0, 0, 0, 4, 0, 0, 112,0, 0, 0, 0, 0, 0, 0, 16, 12, 0, 0, 0, 0, 0,
+ 0, 176,0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 112,2, 0, 0, 0, 0, 0, 0, 112,4, 0, 0, 17, 0, 0, 0, 208,0, 0, 0, 0, 0, 0,
+ 0, 112,32, 0, 4, 0, 0, 0, 0, 240,47, 0, 0, 0, 8, 0, 0, 80, 32, 0, 0, 0, 4, 0, 0, 240,1, 0, 0, 0, 0, 0, 0, 80, 2, 0, 0, 0, 0, 0,
+ 0, 48, 4, 0, 64, 0, 0, 0, 0, 64, 0, 0, 15, 184,22, 0, 0, 64, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 136,0, 4, 0, 0, 0, 0, 0, 128,0, 64, 0, 0, 0, 0, 0, 64, 0, 12, 0, 0, 0, 0, 0, 19, 73, 18, 0,
+ 0, 0, 0, 0, 10, 41, 14, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 8, 0, 0, 0, 0, 0, 64, 8, 10, 0, 0, 0, 0, 0, 40, 16, 8, 0,
+ 0, 0, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0,
+ 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 66, 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, 0, 10, 8, 12, 0, 0, 0, 0, 0, 8, 0, 4, 0,
+ 0, 0, 0, 0, 149,72, 2, 0, 0, 0, 0, 0, 0, 16, 6, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 8, 38, 0, 0, 0, 0, 0, 38, 80, 66, 0,
+ 0, 0, 0, 0, 0, 132,0, 0, 0, 0, 0, 0, 17, 1, 0, 1, 0, 0, 0, 0, 4, 0, 0, 2, 0, 0, 0, 0, 25, 65, 2, 0, 0, 0, 0, 0, 8, 44, 96, 0,
+ 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 64, 0, 2, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 0, 136,0, 0,
+ 0, 0, 0, 0, 1, 1, 16, 0, 0, 0, 0, 0, 25, 8, 132,0, 0, 0, 0, 0, 49, 73, 18, 0, 0, 0, 0, 0, 0, 64, 0, 1, 0, 0, 0, 0, 17, 1, 0, 0,
+ 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 81, 65, 18, 0, 0, 0, 0, 0, 2, 32, 8, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 1, 32, 2, 0,
+ 0, 0, 0, 0, 145,64, 144,0, 0, 0, 0, 0, 0, 144,66, 0, 0, 0, 0, 0, 8, 8, 2, 0, 0, 0, 0, 0, 4, 64, 0, 0, 0, 0, 0, 0, 1, 8, 2, 0,
+ 0, 0, 0, 0, 4, 48, 26, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 4, 33, 2, 0, 0, 0, 32, 0, 17, 66, 16, 0, 0, 0, 0, 0, 4, 20, 4, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 32, 32, 6, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 128,32, 6, 0, 0, 0, 0, 0, 144,0, 0, 0,
+ 0, 0, 0, 0, 17, 37, 0, 0, 0, 0, 0, 0, 0, 40, 8, 0, 0, 0, 0, 0, 17, 73, 16, 0, 0, 0, 0, 0, 64, 0, 8, 0, 0, 0, 0, 0, 64, 32, 8, 0,
+ 0, 0, 0, 0, 17, 81, 16, 0, 0, 0, 0, 0, 72, 32, 46, 0, 0, 0, 0, 0, 64, 33, 0, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 24, 2, 0,
+ 0, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0, 128,4, 0, 0, 0, 0, 0, 0, 0, 104,26, 0, 0, 0, 0, 0, 16, 4, 12, 0, 0, 0, 0, 0, 129,0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 32, 0, 6, 0, 0, 0, 0, 0, 17, 33, 4, 0, 0, 0, 0, 0, 0, 72, 2, 0, 0, 64, 0, 0, 145,73, 22, 0,
+ 0, 0, 0, 0, 4, 48, 12, 0, 0, 0, 0, 0, 128,1, 0, 0, 0, 0, 0, 0, 1, 160,8, 0, 0, 0, 0, 0, 0, 72, 0, 2, 0, 0, 0, 0, 0, 64, 66, 0,
+ 0, 224,0, 0, 1, 0, 65, 0, 0, 128,0, 0, 1, 0, 69, 0, 0, 64, 0, 0, 0, 0, 4, 3, 1, 208,0, 4, 0, 0, 196,2, 0, 0, 0, 0, 12, 0, 4, 0,
+ 0, 64, 0, 0, 16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 2, 0, 0, 96, 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 6, 33, 0, 0, 0, 0, 0, 0, 8, 32, 0, 0,
+ 0, 0, 0, 0, 6, 0, 4, 0, 0, 0, 0, 0, 16, 0, 4, 1, 0, 32, 0, 0, 149,249,24, 0, 0, 0, 0, 0, 0, 25, 2, 0, 0, 0, 0, 0, 0, 64, 10, 0,
+ 0, 0, 0, 0, 4, 0, 130,0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 0, 16, 24, 0, 0, 0, 0, 0, 0, 4, 128,0, 0,
+ 0, 0, 0, 0, 17, 0, 16, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 16, 136,32, 0, 0, 0, 0, 0, 68, 176,2, 0, 0, 0, 0, 0, 4, 4, 0, 0,
+ 0, 0, 0, 0, 145,65, 18, 0, 0, 0, 0, 0, 0, 32, 132,0, 0, 0, 0, 0, 16, 64, 16, 0, 0, 0, 0, 0, 96, 16, 8, 0, 0, 0, 0, 0, 80, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 176,20, 0, 0, 0, 0, 0, 17, 65, 0, 0, 0, 0, 0, 0, 8, 16, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0,
+ 0, 64, 0, 0, 129,65, 64, 0, 0, 0, 0, 0, 16, 0, 65, 0, 0, 0, 0, 0, 0, 40, 0, 2, 0, 0, 0, 0, 0, 32, 12, 0, 0, 64, 0, 0, 1, 0, 138,0,
+ 0, 0, 0, 0, 17, 0, 0, 1, 0, 64, 0, 0, 0, 0, 128,2, 0, 254,63, 0, 255,189,109,1, 0, 16, 0, 0, 0, 32, 0, 0, 0, 96, 4, 0, 0, 4, 0, 0,
+ 0, 240,15, 0, 8, 16, 12, 0, 0, 240,55, 0, 0, 16, 12, 0, 0, 48, 0, 0, 0, 2, 4, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 64, 0, 0, 0, 16, 0, 0, 0, 112,36, 0, 0, 2, 4, 0, 0, 240,51, 0, 4, 0, 4, 0, 0, 160,6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 1,
+ 0, 240,16, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 32, 3, 0, 0, 0, 1, 0, 0, 240,31, 0, 0, 32, 9, 0, 0, 224,13, 0, 0, 0, 0, 0,
+ 0, 224,17, 0, 0, 0, 0, 0, 0, 128,5, 0, 0, 0, 0, 0, 0, 96, 7, 0, 0, 0, 0, 0, 0, 64, 22, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0,
+ 0, 240,27, 0, 8, 2, 70, 0, 0, 80, 19, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0,
+ 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 240,30, 0, 66, 136,136,0, 0, 32, 5, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 128,0, 0,
+ 0, 0, 52, 0, 0, 0, 0, 0, 0, 112,48, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 16, 0, 0, 240,51, 0, 8, 16, 8, 0, 0, 208,51, 0, 4, 0, 8, 0,
+ 0, 16, 0, 0, 129,0, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 64, 6, 0, 0, 64, 0, 0, 0, 176,57, 0, 0, 0, 0, 0, 0, 112,1, 0, 0, 0, 0, 0,
+ 0, 48, 13, 0, 16, 0, 8, 0, 0, 192,7, 0, 0, 0, 0, 2, 0, 0, 4, 0, 0, 4, 0, 0, 0, 112,45, 0, 0, 0, 8, 0, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 208,13, 0, 0, 1, 8, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 16, 33, 0, 0, 128,8, 0, 0, 224,11, 0, 0, 0, 0, 0, 0, 0, 17, 0, 1, 65, 2, 0,
+ 0, 0, 0, 0, 128,64, 0, 0, 0, 0, 0, 0, 16, 0, 16, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 16, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 16, 1,
+ 0, 128,4, 0, 24, 0, 0, 0, 0, 0, 0, 0, 144,0, 64, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 128,32, 0, 0, 2, 4, 0, 0, 160,1, 0, 4, 0, 128,2,
+ 0, 240,63, 0, 127,21, 207,0, 0, 112,30, 0, 8, 16, 12, 0, 0, 176,63, 0, 16, 16, 12, 2, 0, 16, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0, 0, 128,8, 0,
+ 0, 240,39, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 64, 9, 0, 0, 0, 8, 0,
+ 0, 240,7, 0, 0, 32, 0, 0, 0, 32, 5, 0, 20, 0, 2, 0, 0, 160,16, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 64, 0, 0, 224,47, 0, 8, 0, 6, 0,
+ 0, 208,63, 0, 0, 0, 0, 2, 0, 160,1, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 192,15, 0, 16, 0, 8, 0,
+ 0, 16, 27, 0, 8, 16, 8, 0, 0, 0, 0, 0, 4, 0, 8, 0, 0, 32, 56, 0, 0, 16, 0, 0, 0, 0, 16, 0, 128,0, 0, 0, 0, 240,55, 0, 24, 0, 8, 0,
+ 0, 32, 36, 0, 0, 0, 0, 0, 0, 224,56, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 20, 8, 0, 0, 240,32, 0, 72, 0, 8, 0, 0, 64, 0, 0, 0, 128,0, 0,
+ 0, 32, 8, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 128,64, 16, 0, 0, 64, 1, 0, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 32, 0,
+ 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 8, 1, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 240,63, 64, 125,191,206,3,
+ 0, 144,30, 0, 8, 16, 8, 0, 0, 112,8, 0, 0, 16, 12, 0, 0, 128,4, 0, 0, 0, 0, 0, 0, 192,3, 0, 8, 0, 4, 0, 0, 208,63, 0, 0, 32, 1, 0,
+ 0, 80, 21, 0, 0, 0, 4, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 112,0, 0, 0, 0, 2, 0, 0, 48, 0, 0, 0, 0, 2, 0, 0, 224,7, 0, 16, 16, 8, 0,
+ 0, 64, 0, 0, 0, 32, 0, 0, 0, 240,31, 0, 0, 0, 0, 0, 0, 112,7, 0, 13, 16, 10, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 224,61, 0, 1, 0, 2, 0,
+ 0, 0, 8, 0, 1, 0, 0, 0, 0, 128,9, 0, 9, 0, 8, 0, 0, 16, 59, 0, 8, 0, 8, 0, 0, 176,4, 0, 0, 32, 8, 0, 0, 0, 0, 0, 1, 8, 1, 0,
+ 0, 0, 0, 0, 32, 64, 0, 0, 0, 208,2, 0, 16, 0, 8, 0, 0, 64, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 129,0, 2, 0, 0, 0, 0, 0, 2, 0, 32, 0,
+ 0, 0, 0, 0, 1, 0, 18, 0, 0, 128,0, 0, 0, 1, 128,0, 0, 0, 0, 0, 16, 96, 16, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0,
+ 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 32, 0, 16, 8, 24, 0, 0, 128,2, 0, 48, 4, 16, 2, 0, 0, 0, 0, 16, 224,16, 0, 0, 0, 0, 0, 1, 0, 128,0,
+ 0, 0, 0, 0, 144,8, 0, 0, 0, 0, 0, 0, 132,0, 64, 0, 0, 96, 9, 0, 0, 0, 0, 0, 0, 128,0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 244,127,0, 253,40, 95, 0, 0, 176,38, 0, 12, 16, 12, 0, 0, 176,6, 0, 4, 16, 12, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 48, 18, 0, 0, 0, 4, 0,
+ 0, 112,6, 0, 0, 0, 32, 0, 0, 144,15, 0, 0, 32, 128,0, 0, 64, 9, 0, 0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 2, 0, 0, 224,2, 0, 68, 0, 8, 0,
+ 0, 64, 3, 0, 0, 0, 0, 0, 0, 32, 4, 0, 1, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 224,31, 0, 6, 0, 8, 0, 0, 0, 33, 0, 0, 0, 16, 0,
+ 0, 240,63, 0, 1, 0, 0, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 160,32, 0, 0, 0, 0, 0, 0, 32, 6, 0, 9, 32, 7, 0, 0, 0, 43, 0, 0, 0, 0, 0,
+ 0, 64, 27, 0, 0, 0, 9, 0, 0, 0, 12, 0, 128,0, 0, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 128,52, 0, 4, 32, 8, 0, 0, 0, 0, 0, 16, 128,8, 0,
+ 0, 0, 5, 0, 192,0, 0, 0, 0, 0, 4, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 240,127,0, 70, 3, 156,1, 0, 144,13, 0, 8, 0, 12, 0,
+ 0, 48, 0, 0, 0, 16, 8, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 96, 10, 0, 0, 32, 32, 0, 0, 128,7, 0, 4, 0, 2, 0, 0, 16, 2, 0, 4, 0, 8, 0,
+ 0, 32, 3, 0, 0, 144,8, 0, 0, 160,33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 144,46, 0, 20, 16, 12, 0, 0, 64, 10, 0, 0, 0, 0, 0,
+ 0, 240,63, 0, 128,0, 132,0, 0, 0, 8, 0, 1, 0, 1, 0, 0, 0, 32, 0, 16, 0, 0, 0, 0, 160,19, 0, 4, 16, 44, 0, 0, 64, 13, 0, 4, 0, 12, 0,
+ 0, 64, 45, 0, 29, 144,12, 0, 0, 0, 8, 0, 128,0, 0, 0, 0, 244,127,0, 242,215,156,0, 0, 0, 0, 0, 0, 16, 128,0, 0, 144,58, 0, 0, 16, 12, 0,
+ 0, 48, 8, 0, 0, 0, 8, 0, 0, 16, 24, 0, 0, 0, 4, 0, 0, 208,0, 0, 12, 32, 0, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 96, 27, 0, 0, 0, 8, 0,
+ 0, 240,58, 0, 0, 0, 0, 0, 0, 64, 1, 0, 2, 0, 4, 0, 0, 144,3, 0, 0, 16, 8, 0, 0, 16, 18, 0, 8, 0, 0, 0, 0, 0, 6, 0, 16, 0, 8, 0,
+ 0, 0, 16, 0, 0, 0, 2, 0, 0, 144,63, 0, 0, 0, 12, 0, 0, 240,63, 0, 1, 0, 96, 0, 0, 32, 10, 0, 0, 0, 0, 0, 0, 0, 16, 0, 33, 0, 5, 2,
+ 0, 0, 47, 0, 96, 32, 42, 0, 0, 96, 8, 0, 0, 0, 0, 0, 0, 176,63, 0, 0, 0, 1, 0, 0, 16, 0, 0, 1, 0, 1, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 128,32, 0, 0, 0, 0, 0, 32, 0, 32, 0, 0, 0, 16, 0, 96, 0, 0, 0, 0, 240,127,0, 10, 139,252,0,
+ 0, 144,52, 0, 4, 0, 12, 0, 0, 0, 26, 0, 0, 16, 12, 0, 0, 32, 8, 0, 32, 0, 4, 0, 0, 160,5, 0, 0, 32, 0, 0, 0, 32, 12, 0, 0, 0, 2, 1,
+ 0, 192,17, 0, 2, 0, 8, 0, 0, 112,45, 0, 0, 0, 0, 0, 0, 128,8, 0, 4, 16, 8, 0, 0, 80, 22, 0, 16, 0, 8, 0, 0, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 2, 0, 128,0, 0, 0, 0, 144,58, 0, 0, 20, 8, 0, 0, 32, 62, 0, 0, 0, 0, 0, 0, 112,22, 0, 0, 0, 12, 0, 0, 240,6, 0, 0, 0, 0, 0,
+ 0, 128,24, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 32, 0, 0, 0, 0, 0, 0, 32, 2, 0, 0, 0, 240,127,0, 130,45, 140,2, 0, 208,28, 0, 8, 0, 12, 0,
+ 0, 48, 57, 0, 0, 0, 0, 0, 0, 240,56, 0, 0, 0, 4, 0, 0, 32, 32, 0, 0, 0, 10, 0, 0, 128,44, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 128,2, 0,
+ 0, 0, 1, 0, 0, 0, 10, 0, 0, 32, 6, 0, 0, 2, 8, 0, 0, 224,12, 0, 0, 0, 0, 0, 0, 128,16, 0, 32, 0, 8, 0, 0, 224,24, 0, 0, 0, 0, 0,
+ 0, 32, 18, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 128,22, 0, 32, 0, 8, 0, 0, 96, 44, 0, 4, 0, 140,0, 0, 160,47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 0, 1, 2, 0, 128,62, 0, 32, 0, 14, 0, 0, 0, 40, 0, 1, 0, 0, 0, 0, 176,63, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 36, 52, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 244,63, 0, 255,255,255,3, 0, 0, 0, 0, 0, 1, 2, 0,
+ 0, 0, 0, 0, 237,21, 44, 0, 0, 224,34, 0, 3, 8, 4, 0, 0, 160,5, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 8, 0, 3, 0, 0, 2,
+ 0, 240,51, 0, 16, 2, 0, 0, 0, 0, 6, 0, 0, 128,0, 0, 0, 0, 24, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 32, 0, 0, 239,60, 118,0,
+ 0, 96, 32, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 160,14, 0, 203,32, 6, 2, 0, 32, 0, 0, 131,0, 4, 0, 0, 32, 0, 0, 129,0, 2, 0,
+ 0, 32, 0, 0, 129,0, 4, 0, 0, 32, 0, 0, 129,0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 1, 0, 0, 0, 0, 128,0, 12, 0, 0, 0, 0, 0, 0, 25, 8, 0,
+ 0, 0, 0, 0, 145,128,0, 0, 0, 0, 0, 0, 27, 1, 28, 0, 0, 0, 0, 0, 217,224,12, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 16, 16, 32, 0,
+ 0, 96, 16, 0, 2, 0, 4, 0, 0, 0, 0, 0, 146,0, 4, 0, 0, 32, 2, 0, 255,255,94, 1, 0, 128,0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 78, 47, 30, 3,
+ 0, 0, 0, 0, 145,68, 16, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 32, 4, 2, 0, 0, 0, 0, 16, 17, 4, 0, 0, 0, 0, 0, 20, 0, 8, 0,
+ 0, 0, 0, 0, 132,0, 8, 0, 0, 0, 0, 0, 16, 65, 8, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 17, 65, 22, 1,
+ 0, 0, 0, 0, 12, 16, 12, 1, 0, 0, 0, 0, 1, 65, 4, 0, 0, 0, 0, 0, 8, 32, 36, 1, 0, 32, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 16, 32, 8, 0,
+ 0, 0, 0, 0, 0, 0, 24, 0, 0, 224,1, 0, 9, 0, 132,0, 0, 32, 0, 0, 16, 0, 0, 0, 0, 32, 0, 0, 32, 0, 0, 0, 0, 32, 0, 0, 64, 0, 0, 0,
+ 0, 0, 0, 0, 137,28, 66, 0, 0, 0, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 0, 120,16, 0, 0, 0, 0, 0, 4, 8, 6, 0, 0, 0, 0, 0, 16, 65, 4, 0,
+ 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 129,28, 2, 0, 0, 0, 0, 0, 128,1, 0, 1, 0, 0, 2, 0, 90, 105,14, 1, 0, 0, 0, 0, 17, 57, 4, 0,
+ 0, 0, 0, 0, 205,40, 14, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 17, 0, 10, 0, 0, 0, 0, 0, 1, 65, 8, 0, 0, 0, 0, 0, 8, 50, 4, 0,
+ 0, 0, 0, 0, 89, 104,14, 0, 0, 0, 0, 0, 16, 3, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 0, 8, 8, 8, 0,
+ 0, 0, 0, 0, 0, 65, 16, 0, 0, 0, 0, 0, 146,0, 0, 0, 0, 0, 0, 0, 64, 0, 32, 0, 0, 0, 0, 0, 17, 1, 16, 1, 0, 0, 0, 0, 0, 96, 24, 2,
+ 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 73, 88, 54, 1,
+ 0, 0, 0, 0, 1, 1, 8, 0, 0, 0, 0, 0, 8, 40, 12, 0, 0, 0, 0, 0, 16, 1, 4, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 66, 0, 0, 0,
+ 0, 0, 0, 0, 132,52, 166,0, 0, 0, 0, 0, 32, 0, 96, 0, 0, 0, 0, 0, 69, 72, 112,1, 0, 0, 0, 0, 9, 72, 0, 0, 0, 0, 0, 0, 65, 56, 0, 0,
+ 0, 0, 0, 0, 0, 128,4, 2, 0, 0, 0, 0, 149,65, 24, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 32, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 136,4, 0,
+ 0, 0, 0, 0, 0, 64, 36, 0, 0, 0, 0, 0, 2, 128,0, 0, 0, 0, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 8, 32, 2, 0, 0, 0, 0, 0, 17, 65, 2, 0,
+ 0, 0, 0, 0, 16, 9, 4, 0, 16, 0, 0, 0, 219,42, 14, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 16, 1, 16, 0, 0, 0, 0, 0, 8, 0, 6, 0,
+ 0, 0, 0, 0, 0, 16, 12, 0, 0, 72, 0, 0, 191,125,95, 1, 0, 0, 0, 0, 12, 184,10, 0, 0, 0, 0, 0, 16, 1, 0, 1, 0, 0, 0, 0, 21, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 21, 73, 18, 0, 0, 128,0, 0, 8, 8, 2, 0, 0, 0, 0, 0, 8, 168,12, 0, 0, 0, 0, 0, 16, 0, 20, 0,
+ 0, 0, 0, 0, 17, 65, 4, 0, 0, 0, 0, 0, 2, 32, 0, 0, 0, 112,48, 0, 16, 97, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 96, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 2, 0, 0, 0, 0, 8, 192,0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 2, 24, 22, 0,
+ 0, 0, 0, 0, 1, 144,0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 16, 16, 4, 0, 0, 32, 0, 0, 17, 1, 4, 0, 0, 32, 0, 0, 19, 1, 4, 0,
+ 0, 0, 0, 0, 17, 1, 16, 0, 0, 0, 0, 0, 0, 24, 70, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 0, 0, 17, 1, 8, 0, 0, 96, 0, 0, 154,49, 62, 1,
+ 0, 0, 0, 0, 0, 33, 0, 0, 0, 32, 0, 0, 18, 96, 34, 0, 0, 0, 0, 0, 128,0, 4, 0, 0, 0, 0, 0, 1, 65, 0, 1, 0, 0, 0, 0, 0, 24, 8, 0,
+ 0, 0, 0, 0, 21, 0, 8, 0, 0, 0, 0, 0, 17, 81, 10, 3, 0, 0, 0, 0, 16, 32, 2, 0, 0, 0, 0, 0, 27, 36, 22, 0, 0, 0, 0, 0, 16, 56, 0, 0,
+ 0, 0, 0, 0, 8, 16, 6, 0, 0, 0, 0, 0, 24, 48, 4, 0, 0, 0, 0, 0, 2, 65, 6, 0, 0, 0, 0, 0, 36, 0, 8, 0, 0, 0, 0, 0, 64, 64, 0, 0,
+ 0, 0, 0, 0, 19, 57, 2, 0, 0, 0, 0, 0, 0, 24, 12, 0, 0, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 16, 32, 4, 0, 0, 0, 0, 0, 0, 32, 4, 1,
+ 0, 0, 0, 0, 8, 16, 4, 0, 0, 0, 0, 0, 17, 0, 20, 1, 0, 0, 0, 0, 38, 56, 30, 0, 0, 0, 0, 0, 16, 8, 14, 0, 0, 0, 0, 0, 17, 0, 4, 1,
+ 0, 0, 0, 0, 6, 168,4, 0, 0, 0, 0, 0, 145,65, 22, 0, 0, 0, 0, 0, 0, 96, 52, 0, 0, 40, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 8, 128,0,
+ 0, 0, 0, 0, 0, 17, 8, 0, 0, 8, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 8, 10, 0, 0, 0, 0, 0, 33, 185,14, 0, 0, 128,0, 0, 1, 0, 0, 0,
+ 0, 32, 0, 0, 4, 32, 2, 0, 0, 32, 0, 0, 221,255,246,3, 0, 0, 0, 0, 206,189,94, 1, 0, 0, 0, 0, 2, 3, 0, 0, 0, 112,0, 0, 21, 65, 4, 1,
+ 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 1, 4, 12, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 32, 0, 0, 16, 68, 12, 0,
+ 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 12, 0, 2, 0, 0, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 4, 0, 128,0, 0, 0, 0, 0, 17, 201,22, 1,
+ 0, 0, 0, 0, 0, 17, 2, 0, 0, 0, 0, 0, 8, 96, 6, 0, 0, 0, 0, 0, 28, 32, 12, 0, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 24, 0, 4, 0,
+ 0, 0, 0, 0, 16, 1, 8, 0, 0, 0, 0, 0, 18, 184,39, 1, 0, 0, 0, 0, 211,153,4, 1, 0, 0, 0, 0, 17, 32, 0, 2, 0, 0, 0, 0, 2, 192,8, 0,
+ 0, 0, 0, 0, 1, 65, 4, 1, 0, 0, 0, 0, 4, 17, 36, 0, 0, 0, 0, 0, 132,16, 4, 0, 0, 32, 0, 0, 16, 2, 0, 0, 0, 0, 8, 0, 95, 232,42, 1,
+ 0, 96, 36, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 17, 64, 16, 0, 0, 0, 0, 0, 4, 0, 2, 0,
+ 0, 0, 0, 0, 16, 1, 12, 0, 0, 0, 0, 0, 8, 32, 44, 0, 0, 0, 0, 0, 17, 17, 4, 0, 0, 0, 0, 0, 0, 16, 2, 1, 0, 36, 0, 0, 1, 69, 0, 0,
+ 0, 0, 0, 0, 0, 32, 142,0, 0, 96, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 2, 8, 8, 0, 0, 32, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 2, 64, 0, 0,
+ 0, 0, 0, 0, 0, 48, 8, 0, 0, 0, 0, 0, 2, 248,18, 0, 0, 0, 0, 0, 48, 128,0, 0, 0, 0, 0, 0, 17, 33, 0, 0, 0, 0, 0, 0, 16, 81, 4, 0,
+ 0, 0, 0, 0, 57, 64, 0, 0, 0, 0, 0, 0, 17, 32, 8, 0, 0, 32, 0, 0, 21, 96, 0, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 4, 1, 32, 0,
+ 0, 0, 0, 0, 0, 73, 8, 0, 0, 0, 0, 0, 8, 24, 2, 0, 0, 0, 0, 0, 17, 0, 8, 1, 0, 32, 0, 0, 144,0, 4, 0, 0, 0, 0, 0, 1, 64, 0, 1,
+ 0, 48, 0, 0, 17, 65, 0, 0, 0, 0, 0, 0, 4, 1, 8, 0, 0, 32, 0, 0, 8, 16, 4, 0, 0, 0, 0, 0, 8, 64, 4, 0, 0, 0, 0, 0, 4, 32, 2, 0,
+ 0, 0, 0, 0, 0, 8, 6, 0, 0, 0, 0, 0, 2, 0, 12, 0, 0, 0, 0, 0, 4, 8, 4, 0, 0, 0, 0, 0, 0, 1, 4, 1, 0, 0, 0, 0, 4, 4, 64, 0,
+ 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 76, 125,14, 3, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 0, 1, 32, 16, 0, 0, 0, 0, 0, 0, 40, 0, 0,
+ 0, 0, 0, 0, 25, 97, 24, 1, 0, 0, 0, 0, 42, 186,4, 0, 0, 0, 0, 0, 8, 0, 128,0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 208,8, 0,
+ 0, 0, 0, 0, 5, 65, 12, 0, 0, 0, 0, 0, 2, 8, 0, 1, 0, 0, 0, 0, 128,97, 0, 0, 0, 0, 0, 0, 2, 0, 70, 0, 0, 0, 0, 0, 255,105,30, 3,
+ 0, 0, 0, 0, 2, 40, 2, 0, 0, 0, 0, 0, 17, 73, 2, 0, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 4, 8, 2, 0, 0, 0, 0, 0, 8, 40, 130,0,
+ 0, 0, 0, 0, 20, 0, 6, 0, 0, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 1, 96, 18, 0, 0, 0, 0, 0, 21, 65, 0, 0, 0, 0, 0, 0, 28, 4, 1, 0,
+ 0, 32, 0, 0, 0, 33, 0, 0, 0, 32, 0, 0, 1, 1, 20, 0, 0, 64, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 11, 18, 8, 0, 0, 0, 0, 0, 132,0, 0, 0,
+ 0, 0, 0, 0, 17, 64, 2, 0, 0, 0, 0, 0, 66, 56, 76, 0, 0, 0, 8, 0, 255,233,30, 1, 0, 0, 0, 0, 136,177,110,0, 0, 0, 0, 0, 8, 65, 72, 0,
+ 0, 0, 0, 0, 145,4, 0, 0, 0, 0, 0, 0, 26, 57, 6, 0, 0, 0, 0, 0, 13, 64, 8, 0, 0, 48, 48, 0, 0, 0, 132,0, 0, 0, 0, 0, 17, 9, 2, 0,
+ 0, 0, 0, 0, 145,1, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 11, 104,12, 0, 0, 0, 0, 0, 68, 0, 4, 0, 0, 0, 0, 0, 0, 8, 78, 1,
+ 0, 0, 0, 0, 32, 32, 22, 0, 0, 0, 0, 0, 68, 65, 0, 1, 0, 0, 0, 0, 0, 128,0, 1, 0, 0, 0, 0, 0, 128,4, 0, 0, 0, 0, 0, 144,65, 0, 0,
+ 0, 0, 0, 0, 2, 16, 66, 0, 0, 0, 0, 0, 24, 8, 4, 0, 0, 0, 0, 0, 9, 17, 4, 0, 0, 0, 0, 0, 86, 192,0, 0, 0, 0, 0, 0, 32, 32, 24, 0,
+ 0, 0, 0, 0, 25, 121,6, 0, 0, 0, 0, 0, 8, 8, 4, 1, 0, 0, 0, 0, 1, 40, 2, 0, 0, 0, 0, 0, 17, 8, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0,
+ 0, 0, 0, 0, 129,1, 0, 0, 0, 0, 0, 0, 72, 64, 0, 0, 0, 0, 0, 0, 16, 32, 32, 0, 16, 0, 0, 0, 177,123,126,1, 0, 0, 0, 0, 170,56, 18, 0,
+ 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 1, 16, 2, 0, 0, 0, 0, 0, 242,81, 21, 1, 0, 0, 0, 0, 16, 64, 2, 0, 0, 0, 0, 0, 0, 48, 6, 0,
+ 0, 0, 0, 0, 8, 32, 18, 0, 0, 0, 0, 0, 1, 33, 16, 0, 0, 32, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 56, 2, 1, 0, 0, 0, 0, 136,0, 12, 0,
+ 0, 0, 0, 0, 16, 0, 12, 0, 0, 0, 0, 0, 0, 50, 2, 0, 0, 0, 0, 0, 255,253,126,3, 0, 0, 0, 0, 9, 0, 96, 0, 0, 0, 0, 0, 128,4, 8, 0,
+ 0, 0, 0, 0, 17, 1, 12, 0, 0, 0, 0, 0, 0, 8, 32, 0, 0, 0, 0, 0, 17, 40, 16, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0, 17, 81, 0, 0,
+ 0, 0, 0, 0, 0, 32, 0, 1, 0, 0, 0, 0, 16, 89, 12, 0, 0, 0, 0, 0, 16, 32, 6, 1, 0, 0, 0, 0, 32, 40, 0, 0, 0, 0, 0, 0, 129,0, 72, 0,
+ 0, 0, 0, 0, 147,73, 4, 0, 16, 0, 0, 0, 81, 73, 28, 0, 0, 0, 0, 0, 4, 8, 64, 0, 0, 0, 0, 0, 1, 192,0, 0, 0, 0, 0, 0, 0, 128,2, 0,
+ 0, 64, 0, 0, 191,219,108,1, 0, 0, 0, 0, 1, 64, 18, 0, 0, 0, 0, 0, 0, 144,0, 0, 0, 0, 0, 0, 8, 0, 4, 1, 0, 0, 0, 0, 1, 73, 2, 0,
+ 0, 0, 0, 0, 48, 32, 0, 0, 0, 0, 0, 0, 0, 33, 128,0, 0, 0, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 128,193,8, 0, 0, 0, 0, 0, 144,1, 2, 0,
+ 0, 0, 0, 0, 0, 8, 32, 1, 0, 0, 0, 0, 129,169,0, 0, 0, 0, 0, 0, 1, 1, 64, 0, 0, 0, 0, 0, 21, 68, 0, 0, 0, 0, 0, 0, 149,241,8, 0,
+ 0, 0, 0, 0, 132,48, 134,1, 0, 0, 0, 0, 0, 36, 4, 0, 0, 32, 1, 0, 147,221,126,0, 0, 0, 0, 0, 232,185,94, 0, 0, 0, 0, 0, 17, 4, 0, 0,
+ 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 8, 65, 0, 0, 0, 0, 0, 0, 18, 56, 6, 1, 0, 0, 0, 0, 0, 28, 4, 1, 0, 0, 0, 0, 19, 17, 24, 0,
+ 0, 0, 0, 0, 146,124,42, 1, 0, 0, 0, 0, 128,16, 0, 0, 0, 0, 0, 0, 3, 64, 4, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 32, 64, 6, 1,
+ 0, 0, 0, 0, 0, 40, 4, 0, 0, 0, 0, 0, 145,66, 16, 0, 0, 0, 0, 0, 0, 48, 2, 0, 0, 0, 0, 0, 4, 48, 10, 0, 0, 36, 32, 0, 255,255,127,3,
+ 0, 64, 40, 0, 0, 0, 0, 0, 0, 4, 0, 0, 79, 191,126,1, 0, 0, 0, 0, 0, 56, 4, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 2, 52, 0, 0,
+ 0, 0, 0, 0, 83, 193,16, 0, 0, 0, 0, 0, 1, 40, 8, 0, 0, 32, 0, 0, 121,101,4, 1, 0, 0, 0, 0, 1, 32, 4, 2, 0, 0, 0, 0, 4, 17, 0, 0,
+ 0, 0, 0, 0, 28, 64, 0, 0, 0, 0, 0, 0, 8, 4, 8, 0, 0, 0, 0, 0, 1, 64, 8, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 21, 65, 18, 1,
+ 0, 0, 0, 0, 4, 41, 26, 1, 0, 0, 0, 0, 144,64, 0, 0, 0, 0, 0, 0, 80, 65, 4, 1, 0, 0, 0, 0, 17, 32, 2, 0, 0, 0, 0, 0, 8, 0, 0, 2,
+ 0, 0, 0, 0, 25, 57, 2, 0, 0, 0, 0, 0, 72, 97, 14, 1, 0, 32, 0, 0, 129,67, 52, 1, 0, 0, 0, 0, 85, 96, 6, 2, 0, 0, 0, 0, 16, 32, 0, 2,
+ 0, 0, 0, 0, 0, 56, 7, 0, 0, 0, 0, 0, 145,65, 20, 0, 0, 0, 0, 0, 0, 233,10, 2, 0, 0, 0, 0, 10, 32, 32, 0, 0, 0, 0, 0, 133,48, 46, 0,
+ 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 4, 32, 8, 0, 0, 0, 0, 0, 83, 65, 86, 0, 0, 0, 0, 0, 6, 176,38, 3, 0, 0, 0, 0, 135,32, 2, 0,
+ 0, 0, 0, 0, 113,57, 12, 0, 0, 0, 0, 0, 192,64, 0, 0, 0, 0, 0, 0, 2, 40, 20, 0, 0, 0, 0, 0, 72, 0, 8, 0, 0, 0, 0, 0, 76, 32, 0, 0,
+ 0, 0, 0, 0, 125,247,255,1, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 1, 33, 2, 0, 0, 0, 0, 0, 8, 4, 4, 2, 0, 0, 0, 0, 128,0, 8, 0,
+ 0, 0, 0, 0, 128,32, 4, 0, 0, 0, 0, 0, 17, 0, 2, 0, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 0, 0, 33, 0, 1, 0, 0, 0, 0, 21, 5, 24, 0,
+ 0, 0, 0, 0, 128,129,0, 0, 0, 0, 0, 0, 16, 33, 4, 0, 0, 0, 0, 0, 132,33, 20, 1, 0, 0, 0, 0, 16, 1, 10, 0, 0, 0, 0, 0, 32, 32, 0, 0,
+ 0, 240,62, 0, 17, 97, 148,3, 0, 112,4, 0, 0, 0, 0, 0, 0, 240,34, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 160,7, 0, 0, 0, 0, 0,
+ 0, 240,42, 0, 0, 0, 0, 0, 0, 240,22, 0, 0, 0, 0, 0, 0, 240,5, 0, 0, 0, 0, 0, 0, 128,9, 0, 0, 0, 0, 0, 0, 32, 0, 0, 8, 36, 0, 0,
+ 0, 32, 0, 0, 16, 0, 2, 0, 0, 32, 0, 0, 0, 128,4, 0, 0, 0, 0, 0, 0, 128,36, 0, 0, 0, 0, 0, 9, 64, 20, 0, 0, 0, 0, 0, 0, 32, 20, 0,
+ 0, 0, 0, 0, 49, 65, 38, 0, 0, 32, 0, 0, 2, 40, 2, 0, 0, 0, 0, 0, 8, 0, 8, 1, 0, 32, 0, 0, 1, 65, 4, 0, 0, 0, 0, 0, 145,65, 16, 0,
+ 0, 0, 0, 0, 16, 8, 2, 0, 0, 0, 0, 0, 22, 64, 2, 0, 0, 32, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 120,2, 0, 0, 0, 0, 0, 8, 18, 0, 0,
+ 0, 32, 0, 0, 255,245,175,3, 0, 0, 0, 0, 66, 32, 4, 0, 0, 0, 0, 0, 0, 64, 0, 2, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 17, 7, 16, 0,
+ 0, 32, 0, 0, 1, 0, 6, 0, 0, 0, 0, 0, 32, 32, 34, 0, 0, 32, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 129,32, 16, 0, 0, 0, 0, 1, 16, 17, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 81, 68, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 80, 36, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 128,65, 0, 0, 0, 0, 0, 0, 145,69, 12, 0, 0, 32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 19, 81, 0, 1, 0, 0, 1, 0, 255,241,126,1,
+ 0, 0, 0, 0, 0, 80, 16, 1, 0, 192,48, 0, 0, 0, 0, 0, 0, 32, 32, 0, 138,57, 74, 1, 0, 32, 8, 0, 1, 0, 16, 0, 0, 32, 0, 0, 1, 64, 4, 0,
+ 0, 0, 0, 0, 16, 72, 2, 0, 0, 0, 0, 0, 82, 56, 166,1, 0, 0, 0, 0, 145,65, 2, 0, 0, 32, 0, 0, 27, 0, 76, 0, 0, 0, 0, 0, 4, 0, 16, 0,
+ 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 64, 16, 28, 1, 0, 0, 0, 0, 20, 0, 4, 0, 0, 32, 0, 0, 4, 32, 68, 0, 0, 0, 0, 0, 16, 17, 16, 0,
+ 0, 0, 0, 0, 0, 17, 0, 1, 0, 0, 0, 0, 81, 112,28, 0, 0, 0, 0, 0, 4, 0, 8, 2, 0, 32, 0, 0, 8, 0, 6, 0, 0, 0, 0, 0, 88, 0, 0, 0,
+ 0, 0, 0, 0, 144,0, 8, 0, 0, 0, 0, 0, 37, 160,126,1, 0, 0, 0, 0, 133,0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 1, 0, 0, 0, 0, 129,64, 2, 0,
+ 0, 0, 0, 0, 134,192,56, 0, 0, 0, 0, 0, 8, 16, 38, 0, 0, 0, 0, 0, 6, 41, 4, 0, 0, 0, 0, 0, 81, 65, 5, 1, 0, 0, 0, 0, 72, 34, 46, 2,
+ 0, 0, 0, 0, 16, 0, 18, 0, 0, 0, 0, 0, 9, 0, 0, 2, 0, 0, 0, 0, 17, 1, 0, 2, 0, 0, 0, 0, 8, 41, 14, 1, 0, 0, 0, 0, 73, 0, 0, 0,
+ 0, 0, 0, 0, 136,32, 6, 0, 0, 0, 0, 0, 24, 0, 8, 0, 0, 0, 0, 0, 1, 64, 80, 0, 0, 0, 0, 0, 177,245,30, 1, 0, 0, 0, 0, 89, 32, 4, 2,
+ 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 145,1, 4, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 33, 12, 0, 0, 240,46, 0, 10, 112,38, 0,
+ 0, 0, 0, 0, 4, 2, 4, 0, 0, 0, 0, 0, 9, 0, 4, 0, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 0, 0, 139,213,28, 0, 0, 0, 0, 0, 4, 32, 9, 0,
+ 0, 0, 0, 0, 2, 160,0, 0, 0, 0, 0, 0, 1, 64, 2, 0, 0, 0, 0, 0, 153,85, 118,1, 0, 0, 0, 0, 104,49, 38, 1, 0, 0, 0, 0, 1, 128,4, 0,
+ 0, 0, 0, 0, 4, 48, 70, 2, 0, 0, 0, 0, 195,4, 0, 0, 0, 0, 0, 0, 21, 49, 4, 0, 0, 0, 0, 0, 8, 8, 4, 0, 0, 0, 0, 0, 0, 16, 16, 0,
+ 0, 0, 0, 0, 32, 0, 18, 0, 0, 0, 0, 0, 92, 144,8, 2, 0, 0, 0, 0, 66, 241,4, 0, 0, 0, 0, 0, 16, 65, 16, 0, 0, 0, 0, 0, 68, 0, 0, 0,
+ 0, 0, 0, 0, 132,1, 8, 0, 0, 0, 0, 0, 5, 53, 33, 0, 0, 0, 0, 0, 2, 49, 4, 0, 0, 0, 0, 0, 132,40, 2, 0, 0, 0, 0, 0, 1, 104,6, 3,
+ 0, 0, 0, 0, 17, 97, 12, 0, 0, 0, 0, 0, 9, 32, 6, 2, 0, 32, 0, 0, 17, 64, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 32, 2, 3,
+ 0, 0, 0, 0, 28, 96, 12, 0, 0, 0, 0, 0, 145,65, 4, 0, 0, 0, 0, 0, 145,0, 16, 0, 0, 8, 3, 0, 223,251,94, 1, 0, 0, 0, 0, 206,189,62, 3,
+ 0, 0, 0, 0, 0, 32, 18, 0, 0, 0, 0, 0, 97, 65, 2, 0, 0, 0, 0, 0, 13, 97, 24, 2, 0, 48, 36, 0, 0, 0, 0, 0, 0, 112,16, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 81, 97, 24, 1, 0, 0, 0, 0, 0, 40, 32, 0, 0, 0, 0, 0, 145,0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 64, 32, 0, 0,
+ 0, 32, 0, 0, 0, 8, 0, 0, 0, 36, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 64, 40, 14, 0, 0, 0, 0, 0, 9, 0, 2, 0, 0, 112,4, 0, 72, 8, 14, 0,
+ 0, 0, 0, 0, 89, 4, 40, 0, 0, 0, 0, 0, 0, 33, 2, 1, 0, 0, 0, 0, 8, 0, 4, 2, 0, 0, 0, 0, 64, 1, 4, 2, 0, 0, 0, 0, 1, 96, 16, 0,
+ 0, 0, 0, 0, 16, 8, 6, 0, 0, 0, 0, 0, 92, 63, 142,3, 0, 0, 0, 0, 1, 9, 16, 0, 0, 0, 0, 0, 17, 96, 0, 0, 0, 0, 0, 0, 153,1, 10, 0,
+ 0, 0, 0, 0, 0, 81, 12, 1, 0, 0, 0, 0, 68, 100,8, 0, 0, 96, 8, 0, 0, 32, 4, 0, 0, 32, 0, 0, 1, 65, 20, 0, 0, 0, 0, 0, 160,64, 0, 0,
+ 0, 0, 0, 0, 6, 0, 1, 0, 0, 0, 0, 0, 144,1, 16, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 93, 104,14, 2, 0, 0, 0, 0, 1, 69, 16, 0,
+ 0, 0, 0, 0, 128,8, 0, 0, 0, 0, 0, 0, 16, 40, 0, 0, 0, 32, 2, 0, 0, 64, 4, 0, 0, 32, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 17, 69, 0, 0,
+ 0, 0, 0, 0, 1, 0, 42, 0, 0, 0, 0, 0, 2, 8, 16, 0, 0, 0, 0, 0, 129,64, 12, 0, 0, 0, 0, 0, 145,0, 0, 1, 0, 0, 0, 0, 8, 65, 4, 0,
+ 0, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 29, 44, 30, 1, 0, 0, 0, 0, 80, 0, 14, 0, 0, 0, 0, 0, 21, 209,24, 1, 0, 0, 0, 0, 0, 24, 4, 0,
+ 0, 0, 0, 0, 16, 48, 8, 0, 0, 0, 0, 0, 145,9, 28, 1, 0, 0, 0, 0, 0, 32, 14, 0, 0, 0, 0, 0, 8, 0, 130,0, 0, 0, 0, 0, 16, 65, 0, 1,
+ 0, 0, 0, 0, 128,0, 2, 0, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 30, 137,8, 0, 0, 0, 0, 0, 18, 0, 18, 0, 0, 0, 0, 0, 0, 9, 2, 0,
+ 0, 0, 0, 0, 4, 40, 6, 0, 0, 32, 0, 0, 64, 104,132,0, 0, 0, 0, 0, 17, 64, 0, 1, 0, 8, 16, 0, 255,239,255,3, 0, 0, 0, 0, 222,189,94, 1,
+ 0, 0, 0, 0, 17, 72, 0, 0, 0, 0, 0, 0, 129,68, 2, 0, 0, 0, 0, 0, 1, 65, 2, 1, 0, 0, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0, 96, 2, 0,
+ 0, 0, 4, 0, 112,73, 4, 1, 0, 0, 0, 0, 0, 65, 20, 1, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 3, 65, 0, 0, 0, 0, 0, 0, 9, 1, 12, 1,
+ 0, 0, 0, 0, 20, 4, 4, 0, 0, 0, 0, 0, 0, 65, 0, 1, 0, 0, 0, 0, 129,0, 8, 0, 0, 0, 0, 0, 64, 0, 0, 2, 0, 0, 0, 0, 1, 66, 16, 1,
+ 0, 0, 0, 0, 145,69, 10, 1, 0, 0, 0, 0, 16, 72, 0, 0, 0, 0, 0, 0, 0, 32, 34, 0, 0, 0, 0, 0, 20, 8, 6, 0, 0, 40, 0, 0, 145,65, 18, 3,
+ 0, 0, 0, 0, 0, 56, 34, 1, 0, 0, 0, 0, 3, 8, 6, 0, 0, 0, 0, 0, 147,88, 12, 0, 0, 32, 0, 0, 16, 64, 12, 0, 0, 0, 0, 0, 0, 0, 36, 0,
+ 0, 16, 0, 0, 17, 38, 4, 0, 0, 0, 0, 0, 65, 64, 0, 0, 0, 0, 0, 0, 128,40, 34, 0, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 0, 0, 17, 73, 20, 3,
+ 0, 0, 0, 0, 28, 32, 4, 0, 0, 32, 0, 0, 81, 227,92, 1, 0, 112,36, 0, 24, 0, 12, 0, 0, 32, 0, 0, 16, 64, 4, 0, 0, 0, 0, 0, 1, 32, 36, 0,
+ 0, 32, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 40, 8, 2, 0, 32, 0, 0, 16, 0, 4, 0, 0, 240,60, 0, 18, 2, 4, 0, 0, 240,8, 0, 0, 0, 0, 0,
+ 0, 32, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 21, 98, 4, 1, 0, 0, 0, 0, 88, 185,4, 0, 0, 0, 0, 0, 0, 8, 4, 2, 0, 0, 0, 0, 16, 2, 2, 0,
+ 0, 112,12, 0, 2, 80, 0, 0, 0, 0, 1, 0, 4, 56, 94, 3, 0, 0, 0, 0, 152,0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 128,1, 8, 0,
+ 0, 0, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 64, 0, 0, 209,77, 126,0, 0, 0, 0, 0, 0, 8, 34, 0, 0, 240,62, 0, 59, 73, 20, 3,
+ 0, 240,24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12, 1, 0, 0, 0, 0, 21, 44, 13, 0, 0, 32, 1, 0, 36, 36, 62, 2, 0, 0, 0, 0, 32, 0, 64, 0,
+ 0, 32, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 16, 81, 12, 0, 0, 0, 0, 0, 17, 104,4, 0, 0, 0, 0, 0, 64, 168,12, 0, 0, 0, 0, 0, 8, 33, 0, 0,
+ 0, 0, 0, 0, 11, 48, 14, 1, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 128,6, 0, 0, 0, 0, 0, 4, 40, 62, 0, 0, 0, 0, 0, 9, 64, 0, 0,
+ 0, 0, 0, 0, 20, 8, 4, 0, 0, 0, 0, 0, 17, 96, 16, 1, 0, 0, 0, 0, 31, 252,14, 0, 0, 0, 0, 0, 0, 40, 140,0, 0, 96, 0, 0, 16, 1, 4, 0,
+ 0, 0, 0, 0, 192,1, 0, 0, 0, 0, 0, 0, 136,0, 0, 0, 0, 0, 0, 0, 145,65, 12, 0, 0, 0, 0, 0, 145,41, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1,
+ 0, 0, 0, 0, 17, 81, 16, 1, 0, 96, 24, 0, 10, 184,6, 0, 0, 224,32, 0, 0, 0, 0, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 80, 25, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 1, 16, 0, 0, 0, 0, 0, 5, 60, 140,0, 0, 0, 0, 0, 16, 9, 0, 0, 0, 0, 0, 0, 16, 8, 4, 0, 0, 0, 0, 0, 150,36, 44, 0,
+ 0, 0, 0, 0, 148,4, 0, 0, 0, 96, 0, 0, 26, 0, 4, 0, 0, 0, 0, 0, 0, 32, 24, 1, 0, 0, 0, 0, 1, 57, 4, 2, 0, 0, 0, 0, 1, 24, 16, 0,
+ 0, 0, 0, 0, 24, 253,190,0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 215,201,72, 0, 0, 0, 0, 0, 0, 8, 16, 0, 0, 0, 0, 0, 16, 1, 2, 0,
+ 0, 0, 0, 0, 1, 0, 8, 1, 0, 32, 0, 0, 151,93, 94, 0, 0, 0, 0, 0, 68, 104,2, 1, 0, 0, 0, 0, 23, 56, 7, 0, 0, 0, 0, 0, 16, 65, 18, 0,
+ 0, 0, 0, 0, 1, 48, 6, 0, 0, 0, 0, 0, 4, 40, 0, 0, 0, 32, 0, 0, 0, 0, 0, 1, 0, 240,59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 24, 4, 0,
+ 0, 0, 0, 0, 255,248,111,0, 0, 0, 0, 0, 129,73, 4, 1, 0, 0, 0, 0, 1, 8, 18, 0, 0, 0, 0, 0, 4, 160,129,0, 0, 0, 0, 0, 129,64, 6, 0,
+ 0, 0, 0, 0, 8, 136,0, 0, 0, 0, 0, 0, 16, 72, 24, 1, 0, 0, 0, 0, 0, 176,0, 0, 0, 0, 0, 0, 129,64, 18, 0, 0, 0, 0, 0, 160,41, 132,0,
+ 0, 32, 0, 0, 17, 65, 20, 1, 0, 0, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 21, 96, 20, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 224,0, 0, 0, 34, 28, 0,
+ 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 66, 128,14, 0, 0, 0, 0, 0, 131,208,88, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0, 128,5, 0, 0,
+ 0, 0, 0, 0, 129,65, 16, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 11, 61, 30, 1, 0, 0, 16, 0, 32, 0, 0, 0, 0, 32, 32, 0, 4, 0, 4, 0,
+ 0, 0, 0, 0, 247,237,30, 1, 0, 32, 0, 0, 28, 56, 10, 0, 0, 32, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 16, 97, 8, 0, 0, 0, 0, 0, 4, 56, 134,0,
+ 0, 0, 0, 0, 9, 1, 4, 0, 0, 0, 0, 0, 64, 1, 8, 0, 0, 0, 0, 0, 21, 8, 4, 0, 0, 0, 0, 0, 92, 172,12, 0, 0, 0, 0, 0, 40, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 160,8, 0, 0, 32, 16, 0, 8, 32, 0, 0, 0, 224,8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 2,
+ 0, 0, 0, 0, 128,12, 8, 0, 0, 0, 0, 0, 1, 72, 2, 0, 0, 0, 0, 0, 17, 201,22, 0, 0, 0, 0, 0, 1, 40, 10, 0, 0, 0, 0, 0, 66, 25, 12, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 4, 32, 128,0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 5, 32, 16, 0, 0, 0, 0, 0, 128,32, 0, 0,
+ 0, 224,34, 0, 74, 178,76, 1, 0, 0, 0, 0, 17, 0, 16, 1, 0, 96, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 64, 6, 0, 0, 0, 0, 0, 21, 32, 1, 0,
+ 0, 0, 0, 0, 132,32, 0, 0, 0, 0, 0, 0, 3, 128,160,0, 0, 0, 0, 0, 8, 40, 4, 0, 0, 0, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 68, 8, 0, 0,
+ 0, 232,45, 0, 16, 9, 4, 0, 0, 96, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145,9, 2, 0, 0, 0, 0, 0, 144,9, 0, 0, 0, 0, 0, 0, 1, 0, 40, 0,
+ 0, 0, 0, 0, 16, 8, 6, 2, 0, 32, 0, 0, 129,1, 84, 0, 0, 64, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 54, 24, 14, 0, 0, 0, 0, 0, 1, 1, 20, 0,
+ 0, 0, 0, 0, 8, 80, 2, 0, 0, 0, 0, 0, 32, 40, 10, 0, 0, 128,0, 0, 255,255,255,3, 0, 32, 0, 0, 110,189,127,1, 0, 0, 0, 0, 17, 9, 4, 0,
+ 0, 0, 0, 0, 29, 0, 4, 3, 0, 0, 0, 0, 1, 40, 0, 0, 0, 0, 0, 0, 0, 33, 8, 0, 0, 0, 0, 0, 0, 100,0, 0, 0, 0, 0, 0, 1, 32, 4, 0,
+ 0, 0, 0, 0, 0, 36, 64, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 93, 66, 12, 0, 0, 0, 0, 0, 4, 2, 0, 2, 0, 0, 0, 0, 17, 3, 0, 0,
+ 0, 0, 0, 0, 17, 65, 18, 0, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 33, 10, 0, 0, 0, 0, 0, 128,8, 8, 2, 0, 0, 0, 0, 64, 40, 18, 0,
+ 0, 0, 0, 0, 4, 0, 12, 0, 0, 0, 0, 0, 128,0, 16, 0, 0, 0, 0, 0, 209,73, 28, 0, 0, 0, 0, 0, 8, 32, 26, 0, 0, 0, 0, 0, 1, 128,16, 0,
+ 0, 0, 0, 0, 89, 64, 16, 0, 0, 0, 0, 0, 81, 120,0, 0, 0, 0, 0, 0, 27, 209,82, 0, 0, 0, 0, 0, 20, 49, 0, 0, 0, 0, 0, 0, 9, 232,14, 1,
+ 0, 32, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 18, 248,40, 0, 0, 0, 0, 0, 0, 64, 20, 0, 0, 0, 0, 0, 83, 104,0, 2, 0, 0, 0, 0, 64, 65, 0, 0,
+ 0, 0, 0, 0, 0, 8, 14, 0, 0, 0, 0, 0, 9, 64, 2, 0, 0, 0, 0, 0, 25, 113,118,0, 0, 0, 0, 0, 194,40, 12, 0, 0, 0, 0, 0, 5, 41, 6, 0,
+ 0, 0, 0, 0, 0, 96, 12, 2, 0, 0, 0, 0, 0, 41, 0, 2, 0, 0, 0, 0, 16, 64, 0, 1, 0, 0, 0, 0, 239,105,45, 3, 0, 0, 2, 0, 0, 8, 4, 0,
+ 16, 0, 0, 0, 27, 65, 14, 2, 0, 0, 0, 0, 2, 8, 6, 0, 0, 0, 0, 0, 17, 0, 12, 2, 0, 0, 0, 0, 145,65, 18, 1, 0, 0, 0, 0, 2, 40, 0, 0,
+ 0, 0, 0, 0, 0, 40, 12, 0, 0, 0, 0, 0, 3, 0, 8, 2, 0, 0, 0, 0, 17, 32, 0, 0, 0, 0, 0, 0, 27, 25, 4, 0, 0, 0, 0, 0, 8, 8, 12, 0,
+ 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 125,124,30, 3, 0, 0, 0, 0, 8, 45, 4, 2, 0, 0, 0, 0, 17, 97, 4, 0, 0, 0, 0, 0, 129,64, 0, 0,
+ 0, 0, 0, 0, 64, 8, 12, 0, 0, 0, 0, 0, 69, 0, 8, 0, 0, 0, 0, 0, 4, 40, 4, 0, 0, 0, 0, 0, 145,145,24, 0, 0, 0, 0, 0, 6, 168,8, 0,
+ 0, 0, 0, 0, 1, 80, 0, 2, 0, 0, 0, 0, 145,73, 64, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 17, 65, 8, 1, 0, 0, 0, 0, 25, 33, 12, 1,
+ 0, 0, 0, 0, 17, 32, 4, 0, 0, 0, 0, 0, 55, 217,70, 1, 0, 0, 0, 0, 77, 56, 44, 0, 0, 0, 0, 0, 144,96, 0, 0, 0, 0, 0, 0, 8, 1, 8, 0,
+ 0, 0, 0, 0, 24, 40, 6, 0, 0, 0, 0, 0, 72, 1, 8, 0, 0, 0, 0, 0, 89, 42, 12, 0, 0, 0, 0, 0, 88, 1, 8, 0, 0, 0, 0, 0, 4, 41, 18, 0,
+ 0, 0, 0, 0, 16, 1, 4, 1, 0, 0, 0, 0, 2, 64, 8, 0, 0, 0, 0, 0, 153,97, 92, 2, 0, 0, 0, 0, 0, 72, 16, 2, 0, 0, 0, 0, 16, 64, 8, 0,
+ 0, 0, 0, 0, 18, 8, 14, 1, 0, 0, 0, 0, 16, 112,12, 0, 0, 0, 0, 0, 0, 40, 90, 0, 0, 32, 0, 0, 0, 65, 0, 1, 0, 0, 0, 0, 2, 128,72, 0,
+ 0, 0, 0, 0, 4, 120,86, 1, 0, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 2, 8, 10, 0, 0, 0, 0, 0, 0, 53, 4, 1, 0, 0, 0, 0, 76, 0, 8, 0,
+ 0, 0, 0, 0, 73, 104,7, 3, 0, 0, 0, 0, 87, 96, 44, 2, 0, 0, 0, 0, 64, 32, 0, 2, 0, 0, 0, 0, 68, 42, 76, 3, 0, 32, 0, 0, 129,64, 4, 0,
+ 0, 0, 0, 0, 149,73, 0, 0, 0, 112,40, 0, 32, 0, 4, 0, 0, 0, 0, 0, 12, 65, 0, 1, 0, 0, 0, 0, 8, 16, 32, 0, 0, 32, 0, 0, 183,89, 118,3,
+ 0, 0, 0, 0, 0, 40, 144,0, 0, 0, 0, 0, 97, 16, 6, 2, 0, 96, 8, 0, 1, 69, 16, 0, 0, 96, 19, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 2, 1, 4, 1, 0, 0, 0, 0, 17, 64, 18, 0, 0, 32, 4, 0, 0, 1, 4, 0, 0, 0, 0, 0, 119,120,20, 0, 0, 0, 0, 0, 144,8, 16, 0,
+ 0, 32, 0, 0, 16, 1, 6, 0, 0, 0, 0, 0, 32, 105,0, 0, 0, 0, 0, 0, 1, 128,0, 1, 0, 32, 1, 0, 0, 65, 0, 0, 0, 0, 0, 0, 70, 179,4, 0,
+ 0, 0, 0, 0, 17, 97, 0, 0, 0, 0, 0, 0, 8, 32, 0, 1, 0, 0, 0, 0, 24, 40, 4, 2, 0, 0, 0, 0, 17, 65, 24, 0, 0, 0, 0, 0, 66, 0, 8, 0,
+ 0, 96, 2, 0, 255,253,95, 1, 0, 32, 0, 0, 248,189,14, 1, 0, 0, 0, 0, 1, 64, 12, 0, 0, 0, 0, 0, 16, 3, 18, 1, 0, 0, 0, 0, 145,73, 2, 0,
+ 0, 0, 0, 0, 0, 168,2, 0, 0, 0, 0, 0, 12, 0, 12, 2, 0, 0, 0, 0, 4, 65, 0, 0, 0, 0, 0, 0, 19, 81, 0, 0, 0, 0, 0, 0, 0, 56, 14, 0,
+ 0, 224,1, 0, 61, 11, 1, 2, 0, 96, 0, 0, 1, 0, 0, 0, 0, 48, 5, 0, 97, 10, 35, 2, 0, 32, 0, 0, 128,0, 0, 0, 0, 48, 0, 0, 0, 2, 0, 0,
+ 0, 32, 128,0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 184,164,0, 0, 0, 0, 0, 68, 34, 0, 0, 0, 0, 0, 0, 129,0, 16, 0, 0, 32, 0, 0, 127,253,90, 1,
+ 0, 0, 0, 0, 32, 56, 24, 0, 0, 0, 0, 0, 17, 64, 18, 1, 0, 0, 0, 0, 0, 32, 8, 1, 0, 0, 0, 0, 8, 0, 64, 0, 0, 0, 0, 0, 0, 40, 38, 0,
+ 0, 0, 0, 0, 4, 16, 0, 0, 0, 112,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 10, 0, 0, 0, 0, 0, 48, 16, 0, 0, 0, 0, 0, 0, 61, 120,6, 0,
+ 0, 8, 0, 0, 74, 32, 8, 0, 0, 40, 0, 0, 17, 8, 4, 0, 0, 0, 0, 0, 17, 9, 102,0, 0, 0, 0, 0, 72, 32, 66, 1, 0, 0, 0, 0, 16, 0, 12, 1,
+ 0, 0, 0, 0, 1, 0, 16, 1, 0, 4, 0, 0, 153,9, 2, 0, 0, 0, 0, 0, 4, 0, 14, 0, 0, 0, 0, 0, 68, 40, 2, 0, 0, 0, 0, 0, 193,32, 0, 0,
+ 0, 0, 0, 0, 81, 0, 4, 0, 0, 128,0, 0, 0, 0, 16, 0, 0, 32, 32, 0, 181,89, 94, 1, 0, 32, 0, 0, 56, 57, 20, 1, 0, 0, 0, 0, 9, 56, 14, 0,
+ 0, 0, 0, 0, 24, 0, 6, 0, 0, 0, 0, 0, 0, 16, 64, 0, 0, 0, 0, 0, 16, 81, 0, 0, 0, 224,0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 72, 48, 4, 2,
+ 0, 0, 0, 0, 1, 48, 2, 0, 0, 0, 0, 0, 16, 129,0, 0, 0, 0, 0, 0, 147,89, 82, 0, 0, 0, 0, 0, 36, 41, 10, 0, 0, 0, 0, 0, 1, 97, 4, 0,
+ 0, 0, 0, 0, 1, 64, 132,0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 64, 40, 0, 0, 0, 0, 0, 0, 0, 40, 18, 0, 0, 0, 0, 0, 0, 17, 32, 0,
+ 0, 160,0, 0, 80, 12, 4, 3, 0, 0, 0, 0, 8, 32, 16, 0, 0, 32, 0, 0, 14, 184,44, 0, 0, 0, 0, 0, 8, 0, 10, 0, 0, 0, 0, 0, 0, 36, 6, 0,
+ 0, 0, 1, 64, 157,253,126,3, 0, 0, 0, 0, 132,56, 142,1, 0, 0, 0, 0, 132,65, 0, 0, 0, 0, 0, 0, 33, 168,6, 0, 0, 0, 0, 0, 84, 0, 0, 0,
+ 0, 0, 0, 0, 17, 88, 0, 1, 0, 0, 0, 0, 2, 56, 4, 1, 0, 0, 0, 0, 1, 41, 2, 1, 0, 0, 0, 0, 17, 1, 6, 0, 0, 0, 0, 0, 128,72, 12, 0,
+ 0, 0, 4, 0, 16, 0, 0, 0, 0, 0, 0, 0, 49, 8, 32, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 17, 3, 16, 0, 0, 0, 0, 0, 12, 0, 5, 0,
+ 0, 0, 0, 0, 1, 64, 4, 0, 0, 32, 0, 0, 16, 0, 8, 0, 0, 0, 0, 0, 144,0, 8, 1, 0, 0, 0, 0, 17, 64, 4, 0, 0, 0, 0, 0, 20, 188,6, 0,
+ 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 0, 1, 20, 1, 0, 0, 0, 0, 1, 192,16, 0, 0, 0, 0, 0, 4, 144,0, 0, 0, 0, 0, 0, 64, 4, 4, 0,
+ 0, 0, 0, 0, 145,77, 82, 1, 0, 0, 0, 0, 70, 41, 66, 0, 0, 32, 0, 0, 16, 1, 4, 0, 0, 0, 0, 0, 25, 17, 12, 0, 0, 0, 0, 0, 2, 48, 6, 0,
+ 0, 0, 0, 0, 10, 0, 24, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 69, 40, 10, 0, 0, 0, 0, 0, 1, 0, 20, 0, 0, 0, 0, 0, 18, 0, 4, 0,
+ 0, 0, 0, 0, 10, 0, 8, 0, 0, 0, 0, 0, 2, 128,2, 0, 0, 0, 0, 0, 127,191,238,3, 0, 0, 0, 0, 16, 9, 18, 1, 0, 0, 0, 0, 64, 0, 10, 0,
+ 0, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 144,76, 8, 0, 0, 0, 0, 0, 17, 9, 18, 0, 0, 0, 0, 0, 4, 1, 132,0,
+ 0, 32, 16, 0, 19, 64, 14, 0, 0, 128,21, 0, 0, 0, 0, 0, 0, 40, 0, 0, 2, 136,44, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 0, 0, 16, 65, 12, 0,
+ 0, 0, 0, 0, 40, 1, 0, 0, 0, 4, 0, 0, 208,25, 20, 0, 0, 0, 0, 0, 16, 0, 10, 0, 0, 232,32, 0, 17, 65, 20, 1, 0, 112,46, 0, 0, 0, 0, 0,
+ 0, 112,51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 0, 0, 0, 0, 0, 27, 8, 28, 0, 0, 0, 0, 0, 16, 0, 6, 0, 0, 0, 0, 0, 0, 16, 0, 2,
+ 0, 0, 0, 0, 89, 68, 8, 0, 0, 0, 0, 0, 0, 3, 4, 1, 0, 0, 0, 0, 81, 65, 2, 0, 0, 0, 0, 0, 1, 8, 20, 0, 0, 0, 0, 0, 68, 96, 32, 0,
+ 0, 0, 0, 0, 132,0, 16, 0, 0, 0, 0, 0, 6, 0, 2, 0, 0, 0, 0, 0, 174,153,12, 0, 0, 0, 0, 0, 0, 0, 18, 1, 0, 32, 0, 0, 81, 65, 2, 0,
+ 0, 0, 0, 0, 18, 73, 0, 0, 0, 240,32, 0, 16, 64, 8, 0, 0, 0, 0, 0, 145,81, 18, 0, 0, 0, 0, 0, 4, 32, 18, 0, 0, 0, 0, 0, 20, 64, 16, 0,
+ 0, 0, 0, 0, 1, 32, 12, 2, 0, 0, 0, 0, 128,0, 10, 0, 0, 0, 0, 0, 0, 96, 4, 0, 0, 0, 0, 0, 111,185,38, 0, 0, 0, 0, 0, 145,72, 2, 0,
+ 0, 0, 0, 0, 0, 64, 2, 1, 0, 0, 0, 0, 64, 4, 8, 0, 0, 0, 0, 0, 4, 96, 4, 0, 0, 0, 0, 0, 2, 0, 10, 0, 0, 0, 0, 0, 129,1, 4, 0,
+ 0, 0, 0, 0, 0, 192,8, 0, 0, 0, 5, 0, 93, 97, 10, 0, 0, 0, 0, 0, 0, 41, 10, 1, 0, 0, 0, 0, 68, 0, 12, 3, 0, 0, 0, 0, 80, 1, 4, 0,
+ 0, 4, 0, 0, 15, 57, 142,3, 0, 0, 0, 0, 17, 9, 0, 0, 0, 0, 0, 0, 81, 64, 0, 0, 0, 0, 0, 0, 73, 65, 28, 0, 0, 0, 0, 0, 147,33, 14, 1,
+ 0, 0, 0, 0, 125,104,46, 2, 0, 0, 0, 0, 4, 32, 10, 0, 0, 0, 0, 0, 68, 41, 64, 0, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 8, 0, 17, 65, 0, 0,
+ 0, 0, 0, 0, 128,48, 0, 0, 0, 0, 32, 0, 251,109,78, 1, 0, 0, 0, 0, 12, 61, 14, 1, 0, 0, 0, 0, 64, 0, 0, 1, 0, 0, 16, 0, 0, 44, 0, 0,
+ 0, 0, 0, 0, 0, 4, 64, 0, 0, 0, 0, 0, 48, 89, 28, 0, 0, 0, 0, 0, 8, 24, 4, 0, 0, 0, 0, 0, 1, 104,4, 0, 0, 0, 0, 0, 144,80, 0, 0,
+ 0, 0, 0, 0, 159,125,30, 1, 0, 0, 0, 0, 132,61, 10, 2, 0, 0, 0, 0, 8, 0, 16, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 16, 9, 8, 0,
+ 0, 0, 0, 0, 17, 81, 68, 0, 0, 0, 0, 0, 34, 0, 64, 0, 0, 0, 0, 0, 8, 104,24, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 138,48, 14, 0,
+ 0, 0, 0, 0, 8, 128,32, 0, 0, 32, 0, 0, 183,125,94, 2, 0, 0, 0, 0, 136,152,10, 2, 0, 0, 0, 0, 128,0, 0, 1, 0, 16, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 18, 32, 34, 0, 0, 0, 0, 0, 2, 65, 8, 0, 0, 0, 0, 0, 8, 20, 0, 2, 0, 0, 0, 0, 0, 32, 58, 0, 0, 0, 0, 0, 16, 40, 2, 0,
+ 0, 0, 0, 0, 5, 24, 6, 1, 0, 0, 0, 0, 17, 97, 16, 0, 16, 124,40, 0, 255,255,254,3, 0, 0, 0, 0, 32, 32, 10, 0, 0, 0, 0, 0, 53, 65, 44, 0,
+ 0, 4, 0, 0, 0, 64, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 16, 0, 0, 136,40, 0, 0, 0, 128,0, 0, 16, 0, 0, 0, 0, 64, 0, 0, 1, 0, 8, 0,
+ 16, 64, 0, 0, 255,255,255,3, 0, 0, 0, 0, 15, 44, 14, 0, 0, 0, 0, 0, 128,0, 0, 2, 0, 0, 0, 0, 23, 107,22, 1, 0, 32, 0, 0, 0, 47, 26, 0,
+ 0, 96, 4, 0, 4, 56, 30, 1, 0, 0, 0, 0, 21, 108,14, 0, 0, 0, 0, 0, 128,4, 0, 2, 0, 0, 0, 0, 80, 64, 4, 0, 0, 0, 0, 0, 4, 104,0, 0,
+ 0, 0, 0, 0, 0, 9, 6, 0, 16, 240,4, 0, 239,141,6, 0, 0, 0, 0, 0, 16, 73, 0, 0, 0, 32, 6, 0, 0, 1, 0, 0, 0, 0, 0, 0, 149,85, 28, 3,
+ 0, 0, 0, 0, 0, 12, 18, 1, 0, 0, 0, 0, 129,64, 16, 0, 0, 0, 0, 0, 149,121,26, 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 0, 68, 108,0, 0,
+ 0, 0, 0, 0, 255,217,94, 1, 0, 16, 0, 0, 1, 64, 2, 0, 0, 0, 0, 0, 8, 32, 6, 1, 0, 0, 0, 0, 16, 16, 16, 0, 0, 0, 0, 0, 32, 0, 16, 0,
+ 0, 0, 0, 0, 20, 137,8, 0, 0, 0, 0, 0, 16, 128,4, 0, 0, 0, 0, 0, 0, 40, 10, 0, 0, 0, 0, 0, 0, 136,6, 0, 0, 32, 0, 0, 255,125,22, 3,
+ 0, 0, 0, 0, 66, 62, 70, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 32, 4, 0, 0, 0, 4, 2, 0, 0, 0, 0, 64, 0, 16, 0, 0, 0, 0, 0, 1, 32, 2, 1,
+ 0, 0, 0, 0, 1, 64, 64, 0, 0, 0, 0, 0, 16, 9, 16, 0, 0, 32, 0, 0, 16, 65, 4, 0, 0, 0, 0, 0, 17, 56, 0, 0, 0, 0, 0, 0, 32, 2, 16, 0,
+ 0, 0, 0, 0, 64, 40, 16, 0, 0, 0, 0, 0, 140,44, 14, 2, 0, 0, 0, 0, 68, 25, 16, 0, 0, 0, 0, 0, 16, 4, 4, 0, 0, 0, 0, 0, 32, 1, 8, 0,
+ 0, 0, 0, 0, 1, 73, 16, 0, 0, 0, 0, 0, 219,249,86, 0, 0, 0, 0, 0, 0, 232,8, 0, 0, 0, 0, 0, 17, 65, 4, 1, 0, 0, 0, 0, 8, 32, 14, 0,
+ 0, 0, 0, 0, 16, 96, 0, 0, 0, 0, 0, 0, 25, 8, 0, 0, 0, 0, 0, 0, 8, 0, 12, 0, 0, 0, 0, 0, 0, 32, 8, 3, 0, 0, 0, 0, 130,0, 0, 0,
+ 0, 0, 0, 0, 17, 1, 32, 0, 0, 0, 0, 0, 25, 121,26, 0, 16, 0, 0, 0, 8, 16, 86, 0, 0, 0, 0, 0, 144,0, 4, 0, 0, 0, 0, 0, 1, 21, 20, 0,
+ 0, 0, 0, 0, 95, 126,142,2, 0, 0, 0, 0, 19, 73, 4, 1, 0, 0, 0, 0, 24, 0, 6, 1, 0, 112,32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 48, 32, 64, 0,
+ 0, 0, 0, 0, 19, 1, 28, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 25, 96, 6, 0, 0, 0, 0, 0, 156,72, 8, 0, 0, 0, 0, 0, 80, 33, 4, 1,
+ 0, 0, 0, 0, 25, 229,68, 0, 0, 0, 0, 0, 0, 34, 16, 0, 0, 0, 0, 0, 145,77, 22, 0, 0, 0, 0, 0, 0, 40, 2, 1, 0, 0, 0, 0, 8, 56, 70, 1,
+ 0, 32, 0, 0, 0, 25, 36, 1, 0, 0, 0, 0, 0, 96, 0, 1, 0, 0, 0, 0, 96, 56, 0, 0, 0, 0, 0, 0, 191,125,127,3, 0, 0, 0, 0, 111,127,14, 3,
+ 0, 0, 0, 0, 76, 64, 0, 0, 0, 0, 0, 0, 144,1, 0, 0, 0, 32, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 133,68, 20, 0, 0, 0, 0, 0, 145,69, 0, 0,
+ 0, 0, 0, 0, 2, 0, 64, 0, 0, 0, 0, 0, 145,113,82, 1, 0, 0, 0, 0, 4, 0, 20, 0, 0, 0, 0, 0, 1, 40, 34, 0, 0, 0, 0, 0, 1, 0, 6, 0,
+ 0, 0, 0, 0, 4, 48, 6, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 36, 0, 6, 2, 0, 0, 0, 0, 49, 32, 78, 3, 0, 0, 0, 0, 69, 36, 28, 0,
+ 0, 0, 0, 0, 17, 128,0, 0, 0, 0, 0, 0, 149,65, 16, 0, 0, 32, 0, 0, 83, 209,86, 3, 0, 16, 0, 0, 72, 48, 14, 0, 0, 0, 0, 0, 17, 0, 6, 0,
+ 0, 0, 0, 0, 8, 38, 78, 3, 0, 0, 0, 0, 65, 0, 12, 0, 0, 0, 0, 0, 48, 96, 4, 0, 0, 64, 0, 0, 69, 0, 8, 0, 0, 0, 0, 0, 68, 96, 88, 0,
+ 0, 96, 0, 0, 9, 64, 12, 1, 0, 0, 0, 0, 68, 116,90, 1, 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 17, 73, 8, 0, 0, 0, 0, 0, 145,65, 18, 2,
+ 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 20, 20, 4, 0, 0, 0, 0, 0, 51, 176,0, 1, 0, 0, 0, 0, 5, 48, 6, 0, 0, 0, 0, 0, 255,103,125,3,
+ 0, 0, 0, 0, 197,41, 14, 0, 0, 32, 4, 0, 0, 48, 6, 0, 0, 0, 0, 0, 145,68, 2, 0, 0, 32, 0, 0, 213,217,94, 1, 0, 0, 0, 0, 64, 33, 6, 0,
+ 0, 0, 0, 0, 1, 32, 0, 2, 0, 0, 0, 0, 8, 25, 2, 0, 0, 0, 0, 0, 12, 32, 8, 0, 0, 48, 0, 0, 0, 64, 6, 0, 0, 0, 0, 0, 4, 40, 2, 0,
+ 0, 0, 0, 0, 196,4, 14, 3, 0, 0, 0, 0, 151,93, 20, 0, 0, 0, 0, 0, 2, 8, 4, 0, 0, 0, 0, 0, 5, 4, 4, 0, 0, 32, 0, 0, 0, 16, 4, 0,
+ 0, 0, 0, 0, 147,97, 22, 1, 0, 0, 0, 0, 8, 16, 6, 1, 0, 0, 0, 0, 0, 32, 68, 0, 0, 0, 0, 0, 128,65, 8, 1, 0, 0, 0, 0, 0, 32, 64, 0,
+ 0, 0, 0, 0, 8, 4, 10, 0, 0, 0, 0, 0, 4, 32, 64, 0, 0, 0, 0, 0, 0, 16, 100,0, 0, 0, 0, 0, 147,20, 8, 0, 0, 0, 0, 0, 0, 44, 0, 0,
+ 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 145,0, 28, 0, 0, 0, 0, 0, 16, 0, 4, 2, 0, 0, 0, 0, 16, 16, 8, 0, 0, 0, 0, 0, 255,127,127,3,
+ 0, 0, 0, 0, 206,127,76, 1, 0, 0, 0, 0, 3, 65, 0, 1, 0, 0, 0, 0, 129,4, 16, 0, 0, 0, 0, 0, 64, 67, 4, 1, 0, 0, 0, 0, 0, 0, 100,0,
+ 0, 0, 0, 0, 133,0, 4, 0, 0, 0, 0, 0, 17, 65, 86, 1, 0, 0, 0, 0, 72, 40, 14, 2, 0, 0, 0, 0, 5, 32, 12, 0, 0, 0, 0, 0, 29, 40, 11, 0,
+ 0, 0, 0, 0, 1, 65, 14, 0, 0, 0, 0, 0, 1, 96, 4, 0, 0, 0, 0, 0, 21, 32, 14, 2, 0, 0, 0, 0, 0, 32, 30, 2, 0, 0, 0, 0, 145,77, 18, 2,
+ 0, 0, 0, 0, 145,97, 68, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 16, 56, 6, 0, 0, 0, 0, 0, 5, 40, 4, 0, 0, 0, 0, 0, 0, 9, 8, 0,
+ 0, 0, 0, 0, 42, 57, 14, 0, 0, 0, 0, 0, 1, 8, 0, 1, 0, 0, 0, 0, 11, 0, 8, 0, 0, 0, 0, 0, 48, 77, 16, 0, 0, 0, 0, 0, 145,81, 4, 0,
+ 0, 0, 0, 0, 0, 33, 6, 0, 0, 0, 0, 0, 8, 32, 6, 0, 0, 0, 0, 0, 31, 124,28, 0, 0, 0, 0, 0, 153,89, 20, 0, 0, 0, 0, 0, 24, 48, 14, 0,
+ 0, 0, 0, 0, 65, 4, 16, 0, 0, 0, 0, 0, 4, 0, 64, 0, 0, 0, 0, 0, 189,65, 92, 1, 0, 0, 0, 0, 6, 4, 30, 0, 0, 0, 0, 0, 66, 8, 46, 1,
+ 0, 0, 0, 0, 20, 48, 0, 0, 0, 0, 0, 0, 4, 8, 8, 0, 0, 0, 0, 0, 12, 120,5, 0, 0, 32, 0, 0, 17, 33, 4, 1, 0, 0, 0, 0, 5, 0, 4, 0,
+ 0, 0, 0, 0, 145,65, 20, 1, 0, 0, 0, 0, 70, 44, 12, 2, 0, 0, 0, 0, 0, 76, 16, 0, 0, 0, 0, 0, 68, 0, 1, 0, 0, 8, 0, 0, 28, 41, 14, 0,
+ 0, 0, 0, 0, 81, 0, 12, 0, 0, 0, 0, 0, 87, 104,12, 0, 0, 0, 0, 0, 1, 32, 6, 0, 0, 0, 0, 0, 4, 113,76, 0, 0, 32, 0, 0, 0, 48, 12, 0,
+ 0, 0, 0, 0, 149,101,88, 0, 0, 0, 0, 0, 0, 96, 24, 0, 0, 144,0, 0, 215,127,22, 3, 0, 0, 0, 0, 16, 44, 2, 0, 0, 0, 0, 0, 20, 1, 4, 0,
+ 0, 0, 0, 0, 56, 65, 0, 0, 0, 0, 0, 0, 2, 0, 12, 1, 0, 0, 0, 0, 0, 48, 64, 0, 0, 0, 0, 0, 0, 44, 68, 0, 0, 0, 0, 0, 24, 65, 0, 0,
+ 0, 0, 0, 0, 132,1, 0, 2, 0, 0, 0, 0, 37, 32, 12, 0, 0, 0, 0, 0, 4, 64, 4, 0, 0, 0, 0, 0, 255,109,95, 1, 0, 0, 0, 0, 145,72, 16, 0,
+ 0, 0, 0, 0, 138,56, 6, 1, 0, 32, 0, 0, 0, 40, 0, 0, 0, 224,40, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 96, 0, 0, 0, 0, 0, 0, 49, 77, 0, 0,
+ 0, 0, 0, 0, 0, 16, 66, 0, 0, 0, 0, 0, 29, 42, 4, 0, 0, 0, 0, 0, 129,0, 4, 0, 0, 32, 0, 0, 25, 65, 0, 0, 0, 0, 0, 0, 21, 64, 4, 0,
+ 0, 0, 0, 0, 64, 1, 4, 0, 0, 32, 0, 0, 2, 0, 14, 0, 0, 0, 0, 0, 72, 0, 4, 0, 0, 0, 0, 0, 0, 48, 10, 0, 0, 32, 0, 0, 179,217,84, 0,
+ 0, 0, 0, 0, 64, 56, 2, 0, 0, 0, 0, 0, 0, 9, 14, 1, 0, 0, 0, 0, 16, 40, 12, 0, 0, 32, 0, 0, 0, 65, 4, 0, 0, 0, 0, 0, 8, 32, 10, 0,
+ 0, 0, 0, 0, 29, 104,0, 0, 0, 0, 0, 0, 64, 32, 68, 0, 0, 0, 0, 0, 1, 8, 10, 0, 0, 0, 0, 0, 255,125,94, 3, 0, 0, 0, 0, 1, 45, 46, 0,
+ 0, 0, 0, 0, 1, 24, 6, 1, 0, 0, 0, 0, 208,69, 30, 0, 0, 0, 0, 0, 80, 20, 4, 2, 0, 240,44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145,77, 20, 1,
+ 0, 0, 0, 0, 64, 56, 0, 0, 0, 0, 0, 0, 24, 41, 2, 1, 0, 0, 0, 0, 162,0, 4, 0, 0, 0, 0, 0, 16, 17, 12, 1, 0, 0, 0, 0, 146,64, 0, 0,
+ 0, 0, 0, 0, 85, 32, 4, 0, 0, 32, 0, 0, 109,16, 14, 0, 0, 0, 0, 0, 0, 65, 2, 0, 0, 0, 0, 0, 222,60, 142,2, 0, 0, 0, 0, 144,64, 16, 0,
+ 0, 0, 0, 0, 16, 73, 2, 0, 0, 0, 0, 0, 0, 60, 4, 0, 0, 0, 0, 0, 17, 48, 0, 0, 0, 0, 0, 0, 243,77, 0, 0, 0, 0, 0, 0, 8, 32, 8, 0,
+ 0, 0, 0, 0, 20, 28, 64, 0, 0, 0, 0, 0, 20, 1, 0, 2, 0, 0, 0, 0, 29, 44, 0, 0, 0, 0, 0, 0, 17, 9, 72, 0, 0, 0, 0, 0, 251,249,126,0,
+ 0, 0, 0, 0, 8, 56, 14, 0, 0, 0, 0, 0, 0, 8, 30, 2, 0, 0, 0, 0, 0, 41, 4, 0, 0, 0, 0, 0, 32, 32, 4, 0, 0, 0, 0, 0, 0, 32, 24, 0,
+ 0, 0, 0, 0, 136,17, 64, 0, 0, 0, 0, 0, 17, 97, 16, 3, 0, 0, 0, 0, 17, 9, 0, 2, 0, 160,0, 0, 39, 100,96, 0, 0, 96, 0, 0, 0, 0, 4, 0,
+ 0, 32, 8, 0, 2, 0, 0, 0, 0, 32, 0, 0, 2, 0, 0, 0, 0, 32, 32, 0, 2, 0, 0, 0, 0, 0, 0, 0, 245,36, 6, 0, 0, 0, 0, 0, 2, 2, 0, 0,
+ 0, 0, 0, 0, 33, 96, 6, 0, 0, 0, 0, 0, 16, 2, 4, 0, 0, 0, 0, 0, 32, 0, 0, 1, 16, 0, 0, 0, 255,255,255,3, 0, 0, 0, 0, 206,61, 62, 2,
+ 0, 96, 4, 0, 183,24, 84, 1, 0, 0, 0, 0, 8, 24, 6, 0, 0, 0, 0, 0, 16, 40, 68, 1, 0, 0, 0, 0, 16, 24, 4, 0, 0, 0, 0, 0, 154,65, 12, 0,
+ 0, 112,36, 0, 63, 53, 20, 1, 0, 0, 0, 0, 17, 8, 16, 0, 0, 0, 0, 0, 17, 80, 4, 0, 0, 0, 0, 0, 64, 32, 64, 0, 0, 224,16, 0, 144,4, 4, 0,
+ 0, 0, 0, 0, 0, 88, 8, 0, 0, 32, 4, 0, 0, 89, 4, 1, 0, 0, 0, 0, 147,249,30, 3, 0, 0, 0, 0, 48, 32, 8, 0, 0, 0, 0, 0, 0, 16, 4, 1,
+ 0, 0, 0, 0, 4, 0, 132,2, 0, 0, 0, 0, 0, 9, 0, 1, 0, 0, 0, 0, 238,186,174,0, 0, 0, 0, 0, 145,72, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 16, 1, 0, 32, 4, 0, 130,0, 12, 0, 0, 0, 0, 0, 18, 65, 0, 0, 0, 0, 0, 0, 17, 8, 10, 0, 0, 0, 0, 0, 0, 128,16, 0,
+ 0, 0, 0, 0, 149,100,122,2, 0, 0, 0, 0, 1, 8, 16, 0, 0, 0, 0, 0, 17, 24, 28, 0, 0, 0, 4, 0, 177,121,92, 1, 0, 0, 0, 0, 0, 56, 14, 1,
+ 0, 0, 0, 0, 138,0, 0, 0, 0, 32, 0, 0, 8, 24, 12, 0, 0, 0, 0, 0, 16, 48, 16, 0, 0, 0, 0, 0, 127,253,78, 2, 0, 0, 0, 0, 0, 0, 78, 0,
+ 0, 0, 0, 0, 16, 16, 64, 0, 0, 0, 0, 0, 17, 44, 34, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 65, 4, 2, 0, 0, 0, 0, 4, 44, 18, 1,
+ 0, 0, 0, 0, 145,193,0, 0, 0, 0, 0, 0, 238,190,46, 2, 0, 0, 0, 0, 128,4, 2, 0, 0, 0, 0, 0, 21, 41, 80, 0, 0, 0, 0, 0, 144,72, 0, 1,
+ 0, 0, 0, 0, 148,0, 4, 1, 0, 0, 0, 0, 31, 1, 0, 2, 0, 160,5, 0, 86, 56, 12, 1, 0, 0, 0, 0, 132,0, 4, 0, 0, 0, 0, 0, 16, 88, 72, 0,
+ 0, 0, 0, 0, 128,72, 4, 2, 0, 32, 0, 0, 0, 2, 4, 1, 0, 0, 0, 0, 211,105,22, 0, 0, 0, 0, 0, 0, 32, 72, 1, 0, 0, 0, 0, 1, 48, 10, 0,
+ 0, 0, 0, 0, 0, 33, 4, 0, 0, 0, 0, 0, 0, 104,10, 0, 0, 0, 0, 0, 144,49, 0, 0, 0, 0, 0, 0, 17, 121,18, 1, 0, 0, 0, 0, 0, 168,34, 0,
+ 0, 0, 0, 0, 1, 56, 6, 0, 0, 0, 0, 0, 0, 48, 0, 2, 0, 0, 0, 0, 16, 21, 0, 0, 0, 0, 0, 0, 16, 5, 0, 0, 0, 0, 0, 0, 17, 57, 0, 0,
+ 0, 0, 0, 0, 8, 0, 68, 0, 0, 0, 0, 0, 92, 174,14, 1, 0, 0, 0, 0, 48, 21, 4, 0, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 0, 0, 150,32, 68, 0,
+ 0, 0, 0, 0, 145,8, 2, 2, 0, 0, 0, 0, 85, 3, 0, 0, 0, 0, 0, 0, 145,5, 8, 0, 0, 0, 0, 0, 255,255,126,3, 0, 0, 0, 0, 34, 37, 14, 1,
+ 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 0, 8, 16, 16, 0, 0, 0, 0, 0, 9, 48, 66, 3, 0, 0, 0, 0, 1, 73, 2, 1, 0, 0, 0, 0, 80, 64, 0, 0,
+ 0, 0, 0, 0, 5, 0, 17, 0, 0, 0, 0, 0, 8, 32, 32, 0, 0, 0, 0, 0, 29, 40, 44, 2, 0, 0, 0, 0, 40, 0, 52, 0, 0, 0, 0, 0, 25, 0, 4, 0,
+ 0, 32, 0, 0, 191,81, 126,1, 0, 32, 0, 0, 238,49, 46, 2, 0, 0, 0, 0, 76, 0, 8, 1, 0, 0, 0, 0, 8, 17, 0, 1, 0, 32, 0, 0, 225,48, 110,2,
+ 0, 0, 0, 0, 93, 224,44, 2, 0, 0, 0, 0, 73, 65, 0, 2, 0, 0, 0, 0, 144,0, 12, 0, 0, 0, 0, 0, 129,8, 8, 0, 0, 0, 0, 0, 4, 48, 77, 0,
+ 0, 0, 0, 0, 20, 112,4, 2, 0, 32, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 37, 49, 122,0, 0, 0, 0, 0, 80, 0, 0, 1, 0, 0, 0, 0, 148,69, 8, 0,
+ 0, 0, 0, 0, 0, 32, 2, 1, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 144,73, 70, 2, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 80, 0, 6, 0,
+ 0, 0, 0, 0, 8, 40, 0, 0, 0, 0, 0, 0, 19, 65, 18, 0, 0, 32, 0, 0, 255,111,124,3, 0, 0, 0, 0, 110,60, 62, 2, 0, 0, 0, 0, 24, 1, 0, 0,
+ 0, 0, 0, 0, 144,69, 0, 0, 0, 0, 0, 0, 16, 89, 0, 0, 0, 0, 0, 0, 17, 73, 28, 3, 0, 0, 0, 0, 128,40, 36, 0, 0, 0, 0, 0, 8, 8, 10, 0,
+ 0, 0, 0, 0, 68, 32, 140,0, 0, 0, 0, 0, 64, 8, 34, 0, 0, 0, 0, 0, 109,46, 60, 2, 0, 0, 0, 0, 4, 4, 136,0, 0, 0, 0, 0, 132,64, 12, 0,
+ 0, 0, 0, 0, 145,68, 28, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 77, 116,13, 0, 0, 0, 0, 0, 85, 0, 8, 0, 0, 0, 0, 0, 148,0, 0, 0,
+ 0, 0, 0, 0, 17, 64, 0, 2, 0, 0, 0, 0, 96, 0, 2, 0, 0, 0, 0, 0, 32, 0, 46, 1, 0, 0, 0, 0, 84, 96, 4, 0, 0, 0, 0, 0, 48, 0, 12, 0,
+ 0, 96, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0, 1, 0, 0, 0, 0, 151,93, 8, 0, 0, 0, 0, 0, 145,73, 70, 3, 0, 0, 0, 0, 28, 0, 0, 0,
+ 0, 32, 0, 0, 17, 65, 4, 1, 0, 0, 0, 0, 16, 56, 2, 0, 0, 0, 0, 0, 80, 32, 0, 0, 0, 0, 0, 0, 9, 1, 0, 1, 0, 0, 0, 0, 64, 0, 92, 0,
+ 0, 16, 0, 0, 255,125,127,3, 0, 0, 0, 0, 0, 32, 30, 0, 0, 0, 0, 0, 144,1, 0, 3, 0, 0, 0, 0, 128,32, 2, 0, 0, 0, 0, 0, 64, 0, 128,0,
+ 0, 0, 0, 0, 105,32, 12, 3, 0, 0, 0, 0, 74, 1, 12, 0, 0, 0, 0, 0, 32, 37, 0, 0, 0, 0, 0, 0, 249,125,23, 0, 0, 0, 0, 0, 9, 48, 46, 1,
+ 0, 16, 0, 0, 16, 0, 12, 0, 0, 32, 0, 0, 17, 64, 12, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 64, 8, 16, 0, 0, 0, 0, 0, 16, 82, 8, 0,
+ 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 1, 100,12, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 0, 0, 147,89, 20, 1, 0, 0, 0, 0, 2, 40, 2, 1,
+ 0, 0, 0, 0, 128,64, 8, 0, 0, 32, 0, 0, 17, 65, 16, 0, 0, 0, 0, 0, 16, 96, 8, 0, 0, 32, 0, 0, 81, 1, 4, 0, 0, 0, 0, 0, 1, 74, 2, 0,
+ 0, 0, 0, 0, 155,85, 28, 0, 0, 0, 0, 0, 14, 40, 30, 1, 0, 32, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 132,64, 0, 0, 0, 0, 0, 0, 4, 9, 14, 1,
+ 0, 0, 0, 0, 21, 32, 8, 0, 0, 32, 2, 0, 4, 0, 2, 0, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 0, 0, 0, 32, 28, 0, 0, 0, 0, 0, 16, 68, 8, 0,
+ 0, 0, 0, 0, 0, 8, 8, 1, 0, 0, 0, 0, 89, 96, 4, 0, 0, 0, 0, 0, 5, 32, 4, 0, 0, 32, 0, 0, 128,16, 32, 0, 0, 0, 0, 0, 149,65, 8, 0,
+ 0, 0, 0, 0, 64, 16, 64, 0, 0, 0, 0, 0, 149,93, 22, 1, 0, 0, 0, 0, 64, 73, 0, 0, 0, 0, 0, 0, 16, 80, 0, 0, 0, 0, 0, 0, 16, 64, 4, 0,
+ 0, 0, 0, 0, 64, 40, 42, 2, 0, 0, 0, 0, 9, 1, 24, 0, 0, 0, 0, 0, 4, 0, 4, 2, 0, 0, 0, 0, 2, 24, 0, 0, 0, 0, 0, 0, 149,253,76, 2,
+ 0, 0, 0, 0, 0, 32, 66, 0, 0, 0, 0, 0, 21, 52, 10, 0, 0, 0, 0, 0, 24, 68, 0, 0, 0, 0, 0, 0, 19, 89, 0, 0, 0, 0, 0, 0, 0, 56, 10, 1,
+ 0, 0, 0, 0, 20, 32, 130,0, 0, 0, 0, 0, 50, 65, 68, 0, 0, 0, 0, 0, 1, 32, 32, 0, 0, 0, 0, 0, 181,87, 94, 2, 0, 32, 0, 0, 12, 52, 70, 0,
+ 0, 0, 4, 0, 17, 253,16, 1, 0, 0, 0, 0, 1, 8, 6, 1, 0, 0, 0, 0, 128,48, 0, 1, 0, 0, 0, 0, 20, 65, 0, 1, 0, 0, 0, 0, 149,121,6, 1,
+ 0, 0, 0, 0, 0, 40, 6, 0, 0, 0, 0, 0, 140,0, 0, 0, 16, 32, 0, 0, 16, 25, 12, 0, 0, 0, 0, 0, 65, 65, 4, 0, 0, 32, 0, 0, 19, 136,0, 0,
+ 0, 0, 0, 0, 16, 105,0, 0, 0, 0, 0, 0, 20, 60, 14, 1, 0, 0, 0, 0, 128,12, 0, 0, 0, 0, 0, 0, 144,40, 8, 0, 0, 0, 0, 0, 17, 9, 0, 1,
+ 0, 0, 0, 0, 0, 40, 34, 0, 0, 0, 0, 0, 17, 8, 4, 0, 0, 0, 0, 0, 16, 40, 4, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 68, 8, 8, 0,
+ 0, 0, 0, 0, 91, 108,14, 0, 0, 0, 0, 0, 1, 32, 10, 0, 0, 0, 0, 0, 25, 33, 0, 2, 0, 0, 0, 0, 1, 24, 8, 0, 0, 0, 4, 0, 0, 0, 4, 0,
+ 0, 0, 32, 0, 19, 67, 18, 0, 0, 0, 0, 0, 74, 63, 126,1, 0, 0, 0, 0, 0, 8, 40, 0, 0, 0, 0, 0, 72, 0, 20, 0, 0, 0, 0, 0, 73, 0, 24, 0,
+ 0, 0, 0, 0, 129,129,0, 0, 0, 0, 0, 0, 129,5, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 4, 1, 0, 1, 0, 0, 0, 0, 32, 2, 2, 0,
+ 0, 0, 0, 0, 0, 28, 68, 0, 0, 0, 0, 0, 0, 234,4, 0, 0, 0, 0, 0, 2, 154,12, 0, 0, 0, 0, 0, 255,255,238,3, 0, 0, 0, 0, 96, 124,46, 0,
+ 0, 0, 0, 0, 21, 69, 0, 1, 0, 0, 0, 0, 68, 36, 0, 0, 0, 0, 0, 0, 19, 73, 0, 1, 0, 0, 0, 0, 16, 9, 4, 1, 0, 0, 0, 0, 17, 8, 2, 0,
+ 0, 0, 0, 0, 65, 8, 0, 0, 0, 0, 0, 0, 5, 64, 0, 0, 0, 0, 0, 0, 64, 128,8, 0, 0, 0, 0, 0, 4, 4, 1, 0, 0, 0, 0, 0, 149,68, 16, 1,
+ 0, 0, 0, 0, 0, 164,4, 0, 0, 0, 0, 0, 16, 72, 6, 0, 0, 0, 0, 0, 32, 32, 16, 0, 0, 0, 0, 0, 177,57, 4, 0, 0, 0, 0, 0, 0, 1, 12, 0,
+ 0, 0, 0, 0, 0, 17, 2, 1, 0, 0, 0, 0, 89, 105,86, 0, 0, 0, 0, 0, 16, 9, 16, 1, 0, 0, 0, 0, 32, 0, 2, 0, 0, 0, 0, 0, 20, 32, 132,0,
+ 0, 0, 0, 0, 33, 40, 10, 2, 0, 0, 0, 0, 202,60, 110,2, 0, 0, 0, 0, 0, 36, 2, 0, 0, 0, 0, 0, 19, 13, 4, 0, 0, 0, 0, 0, 0, 4, 72, 0,
+ 0, 0, 0, 0, 36, 0, 2, 0, 0, 0, 0, 0, 4, 36, 0, 0, 0, 0, 0, 0, 49, 37, 32, 0, 0, 0, 0, 0, 22, 125,84, 1, 0, 0, 0, 0, 5, 32, 8, 0,
+ 0, 0, 0, 0, 148,1, 0, 0, 0, 0, 0, 0, 32, 1, 16, 0, 0, 0, 0, 0, 17, 8, 0, 1, 16, 32, 0, 0, 255,255,94, 0, 0, 0, 0, 0, 0, 25, 20, 0,
+ 0, 160,0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 17, 73, 18, 1, 0, 0, 0, 0, 10, 40, 4, 0, 0, 0, 0, 0, 3, 97, 4, 1, 0, 32, 1, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 78, 8, 8, 0, 0, 0, 0, 0, 8, 32, 96, 0, 0, 96, 4, 0, 64, 0, 4, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0, 0, 25, 9, 22, 1,
+ 0, 0, 0, 0, 16, 96, 2, 0, 0, 0, 0, 0, 0, 48, 4, 1, 0, 0, 0, 0, 17, 64, 24, 0, 0, 0, 0, 0, 4, 4, 0, 1, 0, 0, 0, 0, 144,32, 0, 0,
+ 0, 0, 0, 0, 1, 0, 116,0, 0, 0, 0, 0, 4, 48, 128,0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 147,20, 24, 0,
+ 0, 0, 0, 0, 16, 65, 18, 1, 0, 0, 0, 0, 24, 32, 128,0, 0, 0, 0, 0, 16, 144,0, 0, 0, 0, 0, 0, 1, 88, 16, 0, 0, 0, 0, 0, 17, 96, 16, 0,
+ 0, 0, 0, 0, 0, 160,2, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 17, 81, 2, 0, 0, 32, 0, 0, 2, 0, 4, 0,
+ 0, 0, 0, 0, 95, 77, 12, 1, 0, 0, 0, 0, 66, 40, 12, 3, 0, 0, 0, 0, 17, 64, 2, 1, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 16, 0, 24, 0,
+ 0, 0, 0, 0, 132,12, 6, 1, 0, 0, 0, 0, 5, 32, 6, 0, 0, 0, 0, 0, 80, 0, 4, 0, 0, 112,32, 0, 211,89, 20, 1, 0, 0, 0, 0, 34, 32, 2, 0,
+ 0, 0, 0, 0, 93, 32, 14, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 85, 224,8, 0, 0, 32, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 8, 0, 1,
+ 0, 0, 0, 0, 4, 160,72, 0, 0, 96, 22, 0, 94, 6, 6, 0, 0, 0, 0, 0, 8, 0, 152,0, 0, 0, 0, 0, 2, 68, 8, 0, 0, 0, 0, 0, 0, 80, 0, 2,
+ 0, 160,0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 249,109,12, 3, 0, 0, 0, 0, 0, 16, 26, 1, 0, 0, 0, 0, 17, 1, 22, 0, 0, 0, 0, 0, 211,88, 4, 0,
+ 0, 32, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 18, 96, 0, 0, 0, 0, 0, 0, 16, 73, 4, 1, 0, 0, 0, 0, 20, 32, 0, 0, 0, 0, 0, 0, 1, 41, 16, 2,
+ 0, 0, 0, 0, 253,189,78, 0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0, 0, 0, 128,1, 4, 0, 0, 0, 0, 0, 149,128,8, 1,
+ 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 0, 0, 17, 200,0, 0, 0, 0, 0, 0, 95, 127,30, 1, 0, 0, 0, 0, 49, 8, 64, 0, 16, 128,0, 0, 158,89, 76, 1,
+ 0, 0, 0, 0, 16, 8, 0, 1, 0, 0, 0, 0, 32, 40, 4, 0, 0, 0, 0, 0, 154,57, 4, 1, 0, 0, 0, 0, 0, 40, 12, 1, 0, 0, 0, 0, 161,16, 0, 0,
+ 0, 0, 0, 0, 0, 8, 2, 1, 0, 0, 0, 0, 132,72, 68, 0, 0, 0, 0, 0, 24, 145,70, 0, 0, 224,7, 0, 0, 0, 4, 0, 0, 32, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 215,221,77, 0, 0, 0, 0, 0, 68, 33, 2, 0, 0, 0, 0, 0, 145,64, 16, 0, 0, 0, 0, 0, 128,0, 2, 1, 0, 0, 0, 0, 16, 68, 0, 0,
+ 0, 0, 0, 0, 20, 32, 8, 0, 0, 0, 0, 0, 4, 8, 134,0, 0, 0, 0, 0, 17, 100,0, 0, 0, 0, 0, 0, 128,8, 2, 0, 0, 0, 0, 0, 32, 130,0, 0,
+ 0, 32, 0, 0, 0, 128,6, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0, 64, 48, 16, 0, 0, 0, 0, 0, 17, 66, 0, 0, 0, 0, 0, 0, 64, 40, 8, 0,
+ 0, 8, 0, 0, 151,121,94, 2, 0, 96, 4, 0, 19, 1, 4, 1, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 24, 1, 0, 0, 0, 0, 16, 121,0, 1,
+ 0, 32, 0, 0, 32, 56, 6, 0, 0, 0, 0, 0, 18, 8, 0, 0, 0, 0, 0, 0, 21, 37, 16, 2, 0, 64, 0, 0, 149,192,0, 0, 0, 0, 0, 0, 0, 76, 0, 0,
+ 0, 0, 0, 0, 64, 44, 4, 0, 0, 0, 0, 0, 16, 24, 1, 0, 0, 4, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 29, 65, 56, 1, 0, 0, 0, 0, 255,61, 190,3,
+ 0, 0, 0, 0, 128,69, 0, 0, 0, 224,39, 0, 255,251,78, 1, 0, 0, 0, 0, 10, 40, 6, 0, 0, 0, 0, 0, 1, 64, 128,1, 0, 0, 0, 0, 64, 0, 64, 0,
+ 0, 0, 0, 0, 8, 32, 14, 1, 0, 0, 0, 0, 0, 16, 72, 0, 0, 0, 0, 0, 20, 32, 4, 0, 0, 0, 0, 0, 8, 0, 2, 1, 0, 0, 0, 0, 64, 33, 2, 0,
+ 0, 0, 0, 0, 0, 160,16, 0, 0, 0, 0, 0, 147,80, 24, 0, 0, 0, 0, 0, 0, 128,64, 0, 0, 0, 0, 0, 25, 1, 8, 1, 0, 96, 2, 0, 8, 48, 6, 2,
+ 0, 0, 0, 0, 64, 80, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 32, 0, 0, 3, 96, 0, 0, 0, 0, 0, 0, 12, 44, 6, 2, 0, 0, 0, 0, 16, 41, 4, 0,
+ 0, 32, 0, 0, 6, 56, 70, 1, 0, 0, 0, 0, 8, 8, 6, 1, 0, 0, 0, 0, 124,36, 13, 2, 0, 0, 0, 0, 145,196,0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
+ 0, 0, 0, 0, 49, 65, 0, 1, 0, 32, 0, 0, 17, 89, 20, 1, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 80, 33, 0, 0, 0, 0, 0, 0, 148,141,12, 2,
+ 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 133,32, 8, 2, 0, 0, 0, 0, 16, 41, 0, 0, 0, 0, 0, 0, 20, 16, 100,0,
+ 0, 32, 1, 0, 8, 6, 6, 0, 0, 0, 0, 0, 221,53, 126,1, 0, 0, 0, 0, 4, 4, 28, 2, 0, 0, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 12, 132,8, 0,
+ 0, 0, 0, 0, 52, 56, 64, 0, 0, 0, 0, 0, 140,52, 0, 0, 0, 0, 0, 0, 144,64, 4, 0, 0, 0, 0, 0, 16, 17, 0, 1, 0, 0, 0, 0, 16, 8, 8, 0,
+ 0, 0, 0, 0, 220,184,172,2, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 16, 132,0, 0, 0, 0, 0, 0, 92, 36, 12, 0, 0, 32, 0, 0, 49, 57, 12, 0,
+ 0, 32, 0, 0, 17, 1, 4, 1, 0, 0, 0, 0, 128,4, 12, 0, 0, 32, 8, 0, 48, 0, 0, 0, 0, 0, 0, 0, 132,0, 0, 2, 0, 0, 0, 0, 255,117,254,1,
+ 0, 0, 0, 0, 128,4, 4, 2, 0, 0, 0, 0, 147,25, 4, 1, 0, 0, 0, 0, 10, 16, 4, 0, 0, 0, 0, 0, 50, 4, 0, 0, 0, 0, 0, 0, 64, 64, 4, 0,
+ 0, 0, 0, 0, 122,20, 5, 0, 0, 0, 0, 0, 72, 1, 4, 0, 0, 32, 0, 0, 1, 8, 6, 0, 0, 0, 0, 0, 8, 144,2, 0, 0, 32, 4, 0, 211,73, 78, 1,
+ 0, 0, 0, 0, 129,0, 88, 0, 0, 0, 0, 0, 114,1, 5, 0, 0, 0, 0, 0, 52, 0, 4, 0, 0, 0, 0, 0, 64, 33, 4, 0, 0, 0, 0, 0, 178,243,28, 0,
+ 0, 0, 0, 0, 128,64, 4, 0, 0, 0, 0, 0, 190,49, 30, 0, 0, 240,63, 0, 127,251,78, 1, 0, 240,23, 0, 0, 0, 0, 0, 0, 240,19, 0, 0, 0, 0, 0,
+ 0, 208,1, 0, 0, 0, 0, 0, 0, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 128,1, 0, 0, 0, 0, 16, 64, 18, 0, 0, 0, 0, 0, 16, 32, 6, 0,
+ 0, 0, 0, 0, 0, 32, 128,0, 0, 96, 0, 0, 144,20, 12, 1, 0, 0, 0, 0, 0, 65, 8, 0, 0, 0, 0, 0, 147,133,4, 0, 0, 0, 0, 0, 34, 4, 12, 0,
+ 0, 32, 1, 0, 16, 24, 4, 0, 0, 0, 0, 0, 2, 0, 14, 0, 0, 0, 0, 0, 24, 8, 12, 2, 0, 0, 0, 0, 33, 0, 224,0, 0, 224,10, 0, 0, 148,0, 0,
+ 0, 144,18, 0, 0, 0, 0, 0, 0, 16, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 16, 4, 0, 0, 0, 0, 0, 204,60, 46, 2, 0, 0, 0, 0, 0, 1, 64, 1,
+ 0, 0, 0, 0, 8, 16, 12, 0, 0, 0, 0, 0, 16, 25, 70, 0, 0, 0, 0, 0, 48, 1, 4, 0, 0, 0, 0, 0, 176,57, 70, 1, 0, 112,4, 0, 31, 95, 30, 3,
+ 0, 0, 0, 0, 44, 36, 0, 0, 0, 0, 0, 0, 18, 73, 4, 1, 0, 32, 0, 0, 16, 106,8, 0, 0, 96, 3, 0, 90, 82, 44, 1, 0, 0, 0, 0, 4, 36, 10, 0,
+ 0, 0, 0, 0, 21, 32, 0, 0, 0, 32, 0, 0, 2, 8, 64, 0, 0, 0, 0, 0, 16, 89, 8, 0, 0, 0, 0, 0, 149,92, 4, 2, 0, 0, 0, 0, 64, 32, 4, 0,
+ 0, 0, 0, 0, 0, 140,0, 0, 0, 0, 0, 0, 17, 33, 16, 0, 0, 0, 0, 0, 144,88, 6, 0, 0, 0, 0, 0, 0, 56, 2, 0, 0, 0, 0, 0, 249,125,66, 3,
+ 0, 0, 0, 0, 128,20, 2, 1, 0, 0, 0, 0, 65, 56, 6, 1, 0, 0, 0, 0, 52, 40, 6, 0, 0, 8, 0, 0, 0, 48, 34, 0, 0, 0, 0, 0, 226,8, 68, 0,
+ 0, 0, 0, 0, 206,253,62, 1, 0, 0, 0, 0, 16, 16, 128,0, 0, 0, 0, 0, 4, 4, 2, 0, 0, 0, 0, 0, 16, 13, 0, 0, 0, 0, 0, 0, 24, 1, 4, 0,
+ 0, 0, 0, 0, 67, 113,4, 0, 0, 0, 0, 0, 148,193,0, 0, 0, 0, 0, 0, 68, 32, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 217,105,22, 1,
+ 0, 0, 0, 0, 20, 32, 14, 2, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 17, 9, 20, 1, 0, 0, 0, 0, 20, 16, 12, 0, 0, 0, 0, 0, 25, 121,22, 0,
+ 0, 0, 0, 0, 4, 57, 10, 0, 0, 0, 0, 0, 1, 96, 0, 0, 0, 0, 0, 0, 17, 21, 4, 0, 0, 0, 0, 0, 0, 32, 10, 1, 0, 0, 0, 0, 2, 4, 0, 0,
+ 0, 0, 0, 0, 17, 49, 0, 0, 0, 0, 0, 0, 93, 44, 44, 0, 0, 0, 0, 0, 9, 0, 6, 0, 0, 0, 0, 0, 0, 144,4, 0, 0, 0, 8, 0, 0, 64, 0, 0,
+ 0, 0, 0, 0, 20, 10, 60, 0, 0, 0, 0, 0, 17, 68, 0, 0, 0, 0, 0, 0, 17, 88, 20, 0, 0, 0, 0, 0, 125,125,60, 3, 0, 0, 0, 0, 72, 32, 10, 1,
+ 0, 0, 0, 0, 8, 64, 8, 0, 0, 0, 0, 0, 49, 125,94, 0, 0, 0, 0, 0, 21, 8, 0, 0, 0, 0, 0, 0, 2, 38, 110,1, 0, 0, 0, 0, 0, 0, 112,0,
+ 0, 0, 0, 0, 85, 96, 40, 0, 0, 0, 0, 0, 0, 4, 16, 0, 0, 0, 0, 0, 88, 0, 4, 0, 0, 0, 0, 0, 19, 81, 4, 1, 0, 0, 0, 0, 20, 32, 2, 0,
+ 0, 0, 0, 0, 84, 32, 132,0, 0, 0, 0, 0, 4, 16, 128,2, 0, 0, 0, 0, 64, 32, 10, 0, 0, 0, 0, 0, 145,64, 8, 0, 0, 0, 0, 0, 16, 65, 4, 2,
+ 0, 0, 0, 0, 83, 149,4, 2, 0, 0, 0, 0, 17, 65, 20, 1, 0, 0, 0, 0, 12, 0, 6, 1, 0, 32, 0, 0, 64, 80, 4, 0, 0, 0, 0, 0, 255,103,124,3,
+ 0, 0, 0, 0, 76, 185,110,0, 0, 0, 0, 0, 0, 96, 0, 2, 0, 16, 32, 0, 145,65, 22, 1, 0, 0, 0, 0, 64, 32, 2, 0, 0, 0, 0, 0, 8, 0, 34, 0,
+ 0, 32, 0, 0, 170,184,14, 1, 0, 96, 4, 0, 0, 0, 4, 0, 0, 32, 4, 0, 0, 0, 12, 0, 0, 0, 0, 0, 80, 0, 2, 0, 0, 0, 0, 0, 145,73, 72, 0,
+ 0, 0, 0, 0, 1, 64, 32, 0, 0, 0, 0, 0, 48, 104,8, 0, 0, 0, 0, 0, 4, 32, 0, 1, 0, 0, 0, 0, 81, 65, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
+ 0, 0, 0, 0, 17, 73, 0, 1, 0, 0, 0, 0, 1, 56, 46, 1, 0, 0, 0, 0, 52, 32, 64, 0, 0, 0, 0, 0, 18, 16, 112,0, 0, 0, 0, 0, 21, 65, 16, 0,
+ 0, 0, 0, 0, 16, 8, 2, 1, 0, 0, 0, 0, 68, 0, 6, 2, 0, 0, 0, 0, 254,255,14, 3, 0, 0, 0, 0, 16, 89, 4, 1, 0, 0, 0, 0, 128,68, 0, 0,
+ 0, 0, 0, 0, 0, 73, 0, 1, 0, 0, 0, 0, 17, 41, 4, 1, 0, 0, 0, 0, 151,93, 76, 0, 0, 0, 0, 0, 2, 16, 2, 0, 0, 0, 0, 0, 8, 48, 2, 0,
+ 0, 0, 0, 0, 147,1, 12, 0, 0, 0, 0, 0, 0, 64, 128,0, 0, 96, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 24, 1, 44, 0, 0, 0, 0, 0, 8, 32, 34, 0,
+ 0, 0, 0, 0, 2, 80, 0, 0, 0, 0, 1, 0, 16, 1, 0, 0, 0, 0, 0, 0, 25, 81, 0, 0, 0, 0, 0, 0, 145,0, 8, 0, 0, 0, 0, 0, 149,121,4, 1,
+ 0, 0, 0, 0, 19, 16, 6, 0, 0, 32, 0, 0, 0, 17, 8, 1, 0, 32, 4, 0, 4, 16, 4, 0, 0, 0, 0, 0, 129,4, 0, 0, 0, 0, 0, 0, 128,128,0, 0,
+ 0, 0, 0, 0, 95, 255,95, 3, 0, 0, 0, 0, 198,32, 140,0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 81, 107,64, 0, 0, 0, 0, 0, 1, 40, 6, 0,
+ 0, 0, 0, 0, 16, 4, 8, 0, 0, 0, 0, 0, 153,60, 6, 1, 0, 0, 0, 0, 145,121,20, 0, 0, 0, 0, 0, 5, 96, 5, 0, 0, 96, 0, 0, 16, 76, 0, 0,
+ 0, 0, 0, 0, 4, 32, 4, 0, 0, 64, 0, 0, 176,80, 28, 0, 0, 0, 0, 0, 1, 80, 2, 0, 0, 0, 0, 0, 170,52, 116,2, 0, 0, 0, 0, 21, 4, 0, 0,
+ 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0, 0, 64, 24, 10, 0, 0, 0, 0, 0, 16, 24, 74, 0, 0, 0, 0, 0, 149,69, 8, 0, 0, 0, 0, 0, 128,105,0, 2,
+ 0, 0, 0, 0, 36, 178,36, 0, 0, 0, 0, 0, 149,253,77, 0, 0, 0, 0, 0, 4, 36, 6, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 129,65, 0, 0,
+ 0, 96, 0, 0, 16, 16, 4, 0, 0, 0, 0, 0, 32, 56, 2, 0, 0, 0, 0, 0, 17, 8, 6, 0, 0, 0, 0, 0, 0, 56, 192,0, 0, 160,1, 0, 153,89, 28, 1,
+ 0, 0, 0, 0, 17, 65, 66, 0, 0, 32, 32, 0, 0, 1, 0, 0, 0, 64, 0, 64, 157,100,126,2, 0, 0, 0, 0, 4, 4, 5, 0, 0, 0, 0, 0, 0, 9, 42, 0,
+ 0, 0, 0, 0, 17, 112,64, 1, 0, 0, 0, 0, 0, 8, 132,0, 0, 0, 0, 0, 85, 73, 22, 0, 0, 0, 0, 0, 0, 56, 130,0, 0, 0, 0, 0, 126,61, 111,3,
+ 0, 0, 0, 0, 129,69, 0, 0, 0, 0, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 75, 2, 0, 0, 0, 0, 0, 145,1, 16, 0, 0, 0, 0, 0, 1, 48, 12, 0,
+ 0, 0, 0, 0, 93, 73, 72, 0, 0, 0, 0, 0, 0, 0, 42, 3, 0, 0, 0, 0, 12, 8, 8, 0, 0, 0, 0, 0, 17, 9, 4, 1, 0, 0, 0, 0, 127,46, 15, 0,
+ 0, 0, 0, 0, 64, 33, 0, 1, 0, 0, 0, 0, 17, 64, 36, 0, 0, 0, 0, 0, 144,28, 29, 0, 0, 0, 0, 0, 148,65, 78, 0, 0, 0, 0, 0, 32, 40, 8, 0,
+ 0, 0, 0, 0, 16, 40, 9, 0, 0, 0, 0, 0, 16, 20, 0, 0, 0, 0, 0, 0, 16, 42, 2, 1, 0, 0, 0, 0, 17, 96, 4, 0, 0, 0, 0, 0, 221,61, 78, 3,
+ 0, 0, 0, 0, 8, 40, 6, 1, 0, 0, 0, 0, 0, 17, 4, 1, 0, 128,0, 0, 27, 1, 20, 0, 0, 0, 0, 0, 144,128,8, 0, 0, 0, 0, 0, 20, 89, 204,1,
+ 0, 0, 0, 0, 8, 8, 6, 0, 0, 32, 1, 0, 191,45, 92, 2, 0, 64, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 32, 6, 0, 0, 0, 0, 0, 17, 0, 12, 0,
+ 0, 0, 0, 0, 1, 32, 14, 0, 16, 8, 0, 0, 20, 64, 8, 0, 0, 0, 0, 0, 17, 81, 64, 3, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 12, 32, 0, 2,
+ 0, 32, 0, 0, 0, 0, 38, 0, 0, 64, 0, 0, 64, 0, 32, 0, 0, 48, 2, 0, 93, 105,90, 3, 0, 16, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 255,127,255,3,
+ 0, 0, 0, 0, 144,0, 0, 2, 0, 0, 0, 0, 147,64, 20, 0, 0, 0, 0, 0, 149,5, 8, 1, 0, 0, 0, 0, 10, 8, 78, 1, 0, 0, 0, 0, 16, 25, 8, 0,
+ 0, 0, 0, 0, 18, 57, 4, 0, 0, 0, 0, 0, 16, 56, 10, 1, 0, 0, 0, 0, 2, 0, 6, 0, 0, 64, 0, 0, 187,249,78, 1, 0, 0, 0, 0, 16, 0, 16, 1,
+ 0, 0, 0, 0, 16, 32, 2, 1, 0, 0, 0, 0, 68, 32, 4, 0, 0, 32, 0, 0, 4, 0, 68, 0, 0, 0, 0, 0, 192,16, 4, 0, 0, 0, 0, 0, 32, 16, 0, 0,
+ 0, 0, 0, 0, 89, 0, 20, 0, 0, 0, 0, 0, 4, 160,0, 0, 0, 0, 0, 0, 72, 56, 12, 0, 0, 0, 0, 0, 16, 1, 68, 0, 0, 0, 0, 0, 49, 8, 4, 0,
+ 0, 32, 0, 0, 29, 9, 76, 1, 0, 0, 0, 0, 144,5, 4, 0, 0, 0, 0, 0, 42, 16, 6, 0, 0, 0, 0, 0, 151,216,84, 0, 0, 0, 0, 0, 253,101,28, 3,
+ 0, 0, 0, 0, 129,69, 16, 0, 0, 0, 0, 0, 4, 32, 8, 2, 0, 0, 0, 0, 17, 121,78, 1, 0, 0, 0, 0, 0, 104,16, 0, 0, 0, 0, 0, 24, 41, 70, 0,
+ 0, 32, 0, 0, 16, 32, 4, 0, 0, 32, 0, 0, 0, 56, 66, 0, 0, 240,30, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 113,48, 4, 0,
+ 0, 0, 0, 0, 52, 68, 8, 0, 0, 0, 0, 0, 48, 105,0, 2, 0, 0, 0, 0, 182,77, 84, 0, 0, 0, 0, 0, 49, 1, 64, 1, 0, 0, 0, 0, 1, 8, 22, 1,
+ 0, 0, 0, 0, 0, 0, 130,0, 0, 0, 0, 0, 20, 8, 0, 0, 0, 0, 0, 0, 149,129,92, 2, 0, 0, 0, 0, 0, 1, 128,0, 0, 0, 0, 0, 92, 60, 12, 0,
+ 0, 0, 0, 0, 58, 1, 68, 0, 0, 0, 0, 0, 12, 0, 8, 0, 0, 32, 0, 0, 136,40, 6, 0, 0, 96, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 24, 40, 0, 0,
+ 0, 0, 0, 0, 26, 24, 12, 0, 0, 0, 0, 0, 17, 73, 0, 2, 0, 0, 0, 0, 17, 40, 0, 0, 0, 32, 0, 0, 16, 9, 0, 0, 0, 0, 0, 0, 255,125,126,3,
+ 0, 0, 0, 0, 12, 52, 30, 2, 0, 0, 0, 0, 33, 16, 76, 1, 0, 32, 0, 0, 59, 97, 92, 0, 0, 0, 0, 0, 66, 0, 64, 0, 0, 0, 0, 0, 48, 128,68, 0,
+ 0, 0, 0, 0, 17, 9, 12, 1, 0, 0, 0, 0, 8, 8, 128,0, 0, 0, 0, 0, 148,68, 0, 0, 0, 0, 0, 0, 18, 33, 8, 0, 0, 0, 0, 0, 128,48, 70, 0,
+ 0, 0, 0, 0, 140,56, 6, 2, 0, 0, 0, 0, 17, 73, 4, 0, 0, 0, 0, 0, 17, 80, 16, 0, 0, 0, 0, 0, 17, 80, 0, 2, 0, 0, 0, 0, 248,40, 44, 2,
+ 0, 0, 0, 0, 68, 0, 8, 0, 0, 0, 0, 0, 146,28, 80, 0, 0, 0, 0, 0, 34, 0, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 83, 48, 4, 0,
+ 0, 0, 0, 0, 221,97, 12, 0, 0, 32, 4, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 20, 6, 0, 0, 0, 0, 0, 4, 49, 2, 0, 0, 0, 0, 0, 16, 33, 0, 0,
+ 0, 32, 0, 0, 33, 104,68, 2, 0, 0, 0, 0, 148,108,12, 0, 0, 0, 0, 0, 129,72, 8, 2, 0, 0, 0, 0, 72, 32, 0, 0, 0, 32, 0, 0, 128,80, 4, 0,
+ 0, 0, 0, 0, 16, 33, 8, 0, 0, 0, 0, 0, 65, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 150,129,12, 0, 0, 0, 0, 0, 144,97, 0, 0,
+ 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 2, 0, 223,122,172,2, 0, 0, 0, 0, 64, 33, 18, 0, 0, 96, 2, 0, 127,254,76, 2, 0, 0, 0, 0, 20, 0, 64, 0,
+ 0, 0, 0, 0, 144,4, 4, 0, 0, 32, 0, 0, 144,56, 68, 1, 0, 0, 0, 0, 8, 8, 10, 1, 0, 0, 0, 0, 89, 139,68, 0, 0, 0, 0, 0, 65, 32, 68, 0,
+ 0, 0, 0, 0, 10, 0, 4, 0, 0, 0, 0, 0, 176,49, 64, 0, 0, 32, 0, 0, 168,176,78, 0, 0, 32, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 232,40, 22, 0,
+ 0, 0, 0, 0, 20, 9, 4, 0, 0, 0, 0, 0, 16, 96, 8, 2, 0, 0, 0, 0, 209,57, 20, 0, 0, 0, 0, 0, 17, 65, 8, 0, 0, 32, 0, 0, 178,120,68, 0,
+ 0, 0, 0, 0, 144,72, 0, 0, 0, 16, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 177,24, 4, 0, 0, 0, 0, 0, 93, 45, 12, 0, 0, 0, 0, 0, 81, 9, 0, 2,
+ 0, 0, 0, 0, 64, 0, 6, 1, 0, 0, 0, 0, 145,25, 4, 0, 0, 0, 0, 0, 4, 32, 16, 0, 0, 0, 0, 0, 144,24, 4, 0, 0, 0, 0, 0, 32, 72, 0, 0,
+ 0, 0, 0, 0, 22, 76, 12, 0, 0, 0, 0, 0, 16, 9, 0, 1, 0, 0, 0, 0, 0, 40, 64, 0, 0, 32, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 225,12, 2,
+ 0, 32, 0, 0, 17, 121,4, 0, 0, 0, 0, 0, 144,33, 8, 0, 0, 0, 0, 0, 255,255,222,3, 0, 0, 0, 0, 191,57, 118,1, 0, 0, 0, 0, 128,1, 72, 0,
+ 0, 0, 0, 0, 149,5, 0, 0, 0, 0, 0, 0, 146,249,124,0, 0, 0, 0, 0, 130,0, 4, 1, 0, 0, 0, 0, 187,117,14, 3, 0, 0, 0, 0, 0, 40, 22, 1,
+ 0, 0, 0, 0, 80, 32, 4, 0, 0, 0, 0, 0, 68, 36, 2, 0, 0, 0, 0, 0, 0, 17, 4, 0, 0, 0, 0, 0, 32, 24, 0, 0, 0, 0, 0, 0, 73, 40, 2, 0,
+ 0, 0, 0, 0, 17, 5, 4, 0, 0, 0, 0, 0, 2, 32, 2, 0, 0, 0, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 59, 153,68, 0, 0, 0, 0, 0, 125,37, 204,2,
+ 0, 0, 0, 0, 0, 68, 8, 0, 0, 0, 0, 0, 12, 20, 0, 2, 0, 0, 0, 0, 0, 17, 68, 1, 0, 0, 0, 0, 184,89, 100,0, 0, 32, 0, 0, 0, 32, 6, 0,
+ 0, 32, 0, 0, 128,5, 32, 0, 0, 0, 0, 0, 176,0, 4, 0, 0, 4, 0, 0, 148,53, 12, 0, 0, 0, 0, 0, 64, 64, 16, 0, 0, 0, 0, 0, 17, 80, 0, 0,
+ 0, 0, 0, 0, 144,16, 8, 2, 0, 96, 0, 0, 128,40, 12, 0, 0, 0, 0, 0, 200,53, 68, 0, 0, 0, 0, 0, 27, 57, 4, 1, 0, 96, 0, 0, 62, 105,70, 1,
+ 0, 32, 32, 0, 2, 64, 104,0, 0, 0, 0, 0, 0, 44, 4, 0, 0, 0, 0, 0, 254,63, 156,3, 0, 0, 0, 0, 149,5, 0, 2, 0, 96, 4, 0, 0, 8, 68, 1,
+ 0, 0, 0, 0, 144,49, 4, 0, 0, 0, 0, 0, 68, 48, 6, 0, 0, 0, 0, 0, 208,16, 0, 0, 0, 0, 0, 0, 209,56, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0,
+ 0, 0, 0, 0, 51, 25, 68, 0, 0, 0, 0, 0, 4, 8, 16, 0, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 127,119,12, 2, 0, 0, 0, 0, 17, 9, 10, 0,
+ 0, 0, 0, 0, 5, 9, 10, 1, 0, 0, 0, 0, 1, 16, 10, 0, 0, 32, 0, 0, 10, 0, 76, 0, 0, 0, 0, 0, 4, 68, 104,0, 0, 0, 0, 0, 148,69, 29, 0,
+ 0, 0, 0, 0, 16, 9, 68, 1, 0, 0, 0, 0, 81, 73, 20, 0, 0, 0, 0, 0, 93, 125,28, 0, 0, 96, 0, 0, 9, 32, 12, 0, 0, 0, 0, 0, 81, 32, 8, 0,
+ 0, 0, 0, 0, 0, 160,0, 2, 0, 0, 0, 0, 16, 64, 16, 1, 0, 0, 0, 0, 64, 32, 4, 2, 0, 64, 0, 0, 133,52, 0, 0, 0, 0, 0, 0, 255,255,191,3,
+ 0, 96, 60, 0, 139,16, 4, 0, 0, 32, 0, 0, 66, 0, 4, 0, 0, 0, 0, 0, 149,69, 20, 3, 0, 0, 0, 0, 145,73, 16, 0, 0, 0, 0, 0, 0, 4, 10, 1,
+ 0, 0, 0, 0, 147,125,76, 0, 0, 0, 0, 0, 0, 56, 18, 0, 0, 48, 0, 0, 179,121,78, 1, 0, 0, 0, 0, 0, 40, 10, 1, 0, 32, 0, 0, 128,0, 12, 0,
+ 0, 0, 0, 0, 8, 0, 70, 1, 0, 32, 0, 0, 128,68, 8, 0, 0, 0, 0, 0, 17, 4, 0, 1, 0, 0, 1, 0, 217,125,118,3, 0, 0, 0, 0, 0, 132,0, 1,
+ 0, 0, 0, 0, 145,73, 4, 1, 0, 32, 0, 0, 128,0, 4, 0, 0, 240,43, 0, 14, 8, 12, 1, 0, 0, 0, 0, 0, 34, 6, 0, 0, 0, 0, 0, 196,56, 14, 0,
+ 0, 0, 0, 0, 80, 8, 0, 0, 0, 0, 0, 0, 16, 104,0, 0, 0, 0, 0, 0, 73, 65, 42, 0, 0, 0, 0, 0, 68, 1, 4, 0, 0, 0, 0, 0, 33, 68, 8, 0,
+ 0, 0, 0, 0, 17, 69, 20, 1, 0, 32, 0, 0, 0, 8, 0, 1, 0, 32, 8, 0, 16, 0, 4, 0, 0, 0, 0, 0, 8, 0, 10, 1, 0, 96, 1, 0, 2, 0, 4, 0,
+ 0, 64, 4, 0, 0, 16, 0, 0, 0, 0, 0, 0, 211,121,12, 1, 0, 0, 0, 0, 66, 32, 10, 1, 0, 32, 0, 0, 16, 16, 4, 1, 0, 0, 0, 0, 2, 0, 4, 1,
+ 0, 0, 0, 0, 17, 91, 2, 0, 0, 0, 0, 0, 20, 44, 12, 0, 0, 0, 0, 0, 16, 1, 20, 0, 0, 0, 0, 0, 129,97, 16, 0, 0, 0, 0, 0, 145,69, 2, 0,
+ 0, 0, 0, 0, 127,127,76, 0, 0, 0, 0, 0, 196,32, 74, 0, 0, 0, 0, 0, 4, 52, 4, 0, 0, 0, 0, 0, 144,9, 0, 1, 0, 0, 0, 0, 253,241,86, 1,
+ 0, 224,30, 0, 64, 0, 4, 0, 0, 0, 0, 0, 0, 1, 76, 0, 0, 32, 0, 0, 0, 129,12, 0, 0, 0, 0, 0, 16, 96, 44, 0, 0, 96, 0, 0, 144,0, 0, 0,
+ 0, 32, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 4, 0, 100,0, 0, 0, 0, 0, 17, 16, 2, 0, 0, 0, 0, 0, 243,144,4, 0, 0, 0, 0, 0, 1, 8, 2, 1,
+ 0, 0, 0, 0, 17, 5, 20, 1, 0, 0, 0, 0, 95, 37, 28, 3, 0, 0, 0, 0, 144,68, 0, 0, 0, 0, 0, 0, 17, 9, 14, 1, 0, 0, 0, 0, 66, 96, 4, 0,
+ 0, 0, 0, 0, 3, 8, 78, 0, 0, 0, 0, 0, 149,73, 0, 1, 0, 96, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 17, 67, 6, 3, 0, 0, 0, 0, 0, 40, 8, 1,
+ 0, 0, 0, 0, 8, 49, 4, 0, 0, 0, 0, 0, 255,255,127,3, 0, 0, 0, 0, 0, 36, 28, 0, 0, 0, 0, 0, 17, 65, 6, 1, 0, 0, 0, 0, 144,5, 0, 2,
+ 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 0, 0, 81, 81, 68, 2, 0, 0, 0, 0, 20, 32, 12, 0, 0, 0, 0, 0, 1, 40, 12, 0, 0, 0, 0, 0, 4, 0, 132,0,
+ 0, 0, 0, 0, 219,121,30, 1, 0, 0, 0, 0, 16, 104,14, 1, 0, 0, 0, 0, 0, 20, 12, 0, 0, 0, 0, 0, 1, 112,4, 1, 0, 0, 0, 0, 64, 48, 0, 0,
+ 0, 0, 0, 0, 85, 32, 6, 0, 0, 0, 0, 0, 153,89, 4, 0, 0, 0, 0, 0, 16, 8, 14, 1, 0, 0, 0, 0, 17, 193,12, 1, 0, 0, 0, 0, 64, 160,0, 2,
+ 0, 0, 0, 0, 0, 1, 76, 1, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 145,73, 92, 0, 0, 0, 0, 0, 2, 176,22, 0, 0, 0, 0, 0, 8, 9, 14, 1,
+ 0, 0, 0, 0, 16, 1, 104,0, 0, 0, 0, 0, 49, 65, 20, 1, 0, 0, 0, 0, 64, 8, 6, 0, 0, 0, 0, 0, 92, 40, 12, 0, 0, 0, 0, 0, 0, 8, 84, 0,
+ 0, 0, 0, 0, 21, 73, 8, 0, 0, 0, 0, 0, 16, 65, 4, 1, 0, 0, 0, 0, 148,121,12, 0, 0, 0, 0, 0, 0, 8, 16, 1, 0, 0, 0, 0, 159,93, 93, 3,
+ 0, 0, 0, 0, 12, 48, 6, 1, 0, 0, 0, 0, 51, 125,98, 1, 0, 0, 0, 0, 152,8, 6, 1, 0, 0, 0, 0, 24, 32, 0, 0, 0, 0, 0, 0, 8, 4, 6, 0,
+ 0, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 18, 144,64, 0, 0, 0, 0, 0, 21, 93, 8, 1, 0, 0, 0, 0, 17, 73, 4, 1, 0, 240,52, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 149,124,30, 3, 0, 0, 0, 0, 14, 41, 16, 1, 0, 32, 0, 0, 16, 5, 0, 1, 0, 0, 0, 0, 1, 104,18, 0, 0, 0, 0, 0, 35, 0, 0, 0,
+ 0, 32, 0, 0, 179,253,14, 2, 0, 0, 0, 0, 0, 65, 4, 0, 0, 32, 0, 0, 54, 57, 68, 1, 0, 0, 0, 0, 16, 12, 0, 0, 0, 0, 0, 0, 3, 8, 8, 0,
+ 0, 0, 0, 0, 21, 65, 20, 0, 0, 0, 0, 0, 147,65, 16, 2, 0, 0, 0, 0, 53, 85, 68, 3, 0, 0, 0, 0, 8, 72, 6, 0, 0, 0, 0, 0, 255,253,94, 2,
+ 0, 0, 0, 0, 2, 58, 6, 0, 0, 0, 0, 0, 17, 1, 20, 0, 0, 0, 0, 0, 89, 64, 24, 0, 0, 0, 0, 0, 89, 106,16, 0, 0, 0, 0, 0, 16, 0, 28, 0,
+ 0, 0, 0, 0, 4, 16, 4, 0, 144,252,13, 0, 255,255,255,3, 128,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 32, 0, 0, 0, 0, 0, 9, 128,0, 0,
+ 0, 16, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0, 64, 0, 0, 255,255,255,3, 0, 0, 0, 0, 0, 56, 8, 0, 0, 0, 1, 0, 27, 73, 22, 0,
+ 0, 0, 0, 0, 72, 56, 14, 0, 0, 0, 0, 0, 20, 0, 2, 0, 0, 0, 0, 0, 6, 8, 2, 2, 0, 0, 0, 0, 1, 32, 8, 0, 0, 0, 0, 0, 10, 40, 0, 1,
+ 0, 32, 0, 0, 26, 0, 4, 0, 0, 32, 0, 0, 72, 16, 102,0, 0, 0, 0, 0, 0, 96, 78, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 0, 34, 2, 0,
+ 0, 0, 0, 0, 1, 104,0, 0, 0, 0, 0, 0, 149,69, 8, 1, 0, 0, 0, 0, 4, 204,8, 0, 0, 0, 0, 0, 16, 40, 18, 0, 0, 0, 0, 0, 2, 64, 1, 0,
+ 0, 8, 0, 0, 187,89, 82, 1, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 16, 73, 0, 1, 0, 0, 0, 0, 84, 0, 4, 0, 0, 0, 0, 0, 0, 56, 10, 0,
+ 0, 0, 0, 0, 133,0, 0, 2, 0, 0, 0, 0, 84, 8, 0, 2, 0, 0, 0, 0, 96, 0, 10, 1, 0, 0, 0, 0, 12, 40, 14, 2, 0, 0, 0, 0, 0, 168,16, 0,
+ 0, 0, 0, 0, 53, 72, 0, 0, 0, 0, 0, 0, 64, 0, 6, 0, 0, 0, 0, 0, 16, 33, 2, 1, 0, 0, 0, 0, 0, 4, 8, 1, 0, 0, 0, 0, 81, 41, 16, 0,
+ 0, 0, 0, 0, 40, 0, 6, 1, 0, 0, 0, 0, 0, 68, 2, 0, 0, 0, 0, 0, 5, 120,190,0, 0, 0, 0, 0, 32, 0, 0, 2, 16, 0, 0, 0, 80, 33, 4, 0,
+ 0, 0, 0, 0, 25, 96, 0, 0, 0, 0, 0, 0, 128,72, 0, 0, 0, 0, 0, 0, 17, 69, 16, 0, 0, 0, 0, 0, 255,253,122,3, 0, 0, 0, 0, 170,53, 106,1,
+ 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 19, 65, 16, 0, 0, 0, 0, 0, 64, 96, 14, 0, 0, 0, 0, 0, 33, 64, 24, 0, 0, 0, 0, 0, 17, 64, 66, 1,
+ 0, 0, 0, 0, 4, 1, 2, 0, 0, 0, 0, 0, 9, 65, 68, 0, 0, 0, 0, 0, 75, 48, 142,1, 0, 0, 0, 0, 126,178,140,2, 0, 0, 0, 0, 17, 0, 18, 0,
+ 0, 4, 0, 0, 33, 64, 0, 0, 0, 0, 0, 0, 145,0, 4, 0, 0, 16, 32, 0, 19, 113,20, 1, 0, 0, 0, 0, 202,113,78, 0, 0, 0, 0, 0, 0, 81, 0, 0,
+ 0, 0, 0, 0, 72, 98, 6, 3, 0, 0, 0, 0, 0, 64, 4, 1, 0, 0, 0, 0, 212,112,132,0, 0, 0, 0, 0, 65, 0, 4, 0, 0, 0, 0, 0, 0, 128,12, 0,
+ 0, 0, 0, 0, 32, 32, 84, 0, 0, 0, 0, 0, 16, 105,4, 0, 0, 0, 0, 0, 68, 224,94, 0, 0, 0, 0, 0, 20, 16, 0, 0, 0, 0, 0, 0, 145,64, 2, 0,
+ 0, 0, 0, 0, 66, 32, 0, 0, 0, 0, 0, 0, 0, 40, 14, 1, 0, 32, 4, 0, 64, 65, 0, 0, 0, 0, 0, 0, 0, 128,128,0, 16, 0, 0, 0, 63, 249,22, 0,
+ 0, 0, 0, 0, 84, 46, 6, 0, 0, 0, 0, 0, 89, 65, 0, 0, 0, 32, 4, 0, 0, 32, 4, 2, 0, 0, 0, 0, 0, 72, 64, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 32, 0, 0, 0, 122,2, 1, 0, 32, 0, 0, 50, 73, 12, 0, 0, 32, 0, 0, 0, 48, 76, 0, 0, 32, 0, 0, 0, 96, 16, 0,
+ 0, 112,44, 0, 0, 0, 4, 0, 0, 0, 0, 0, 28, 104,6, 0, 0, 0, 0, 0, 1, 73, 0, 0, 0, 0, 0, 0, 80, 32, 18, 0, 0, 16, 0, 0, 251,81, 28, 1,
+ 0, 0, 0, 0, 64, 33, 22, 0, 0, 0, 0, 0, 13, 104,6, 0, 0, 0, 0, 0, 0, 104,4, 0, 0, 0, 0, 0, 2, 40, 38, 1, 16, 0, 0, 0, 255,253,124,3,
+ 0, 0, 0, 0, 11, 172,110,0, 0, 32, 32, 0, 0, 1, 4, 1, 128,0, 0, 0, 20, 0, 4, 0, 0, 0, 0, 0, 17, 64, 20, 0, 0, 0, 0, 0, 145,9, 18, 0,
+ 0, 0, 4, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0, 104,0, 0, 0, 4, 0, 0, 17, 73, 18, 1, 0, 0, 0, 0, 29, 8, 4, 0, 0, 32, 0, 0, 2, 24, 70, 0,
+ 0, 0, 0, 0, 0, 104,2, 2, 0, 96, 4, 0, 55, 16, 4, 0, 0, 0, 0, 0, 24, 140,46, 3, 0, 32, 0, 0, 36, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 2,
+ 0, 0, 0, 0, 0, 24, 0, 1, 0, 0, 0, 0, 42, 224,4, 2, 0, 0, 0, 0, 26, 32, 42, 0, 0, 0, 0, 0, 34, 32, 4, 2, 0, 0, 0, 0, 4, 40, 8, 0,
+ 0, 32, 0, 0, 27, 1, 4, 0, 0, 0, 0, 0, 80, 168,38, 1, 0, 0, 0, 0, 0, 1, 6, 0, 0, 32, 0, 0, 80, 1, 6, 0, 0, 0, 0, 0, 49, 73, 126,1,
+ 0, 0, 0, 0, 14, 44, 42, 0, 0, 0, 0, 0, 24, 24, 2, 1, 0, 0, 0, 0, 4, 44, 0, 0, 0, 0, 0, 0, 113,0, 0, 0, 0, 0, 0, 0, 0, 160,6, 0,
+ 0, 32, 8, 0, 0, 8, 0, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 32, 8, 4, 0, 0, 0, 0, 0, 4, 136,8, 0, 16, 0, 0, 0, 29, 201,94, 1,
+ 0, 64, 0, 0, 14, 40, 14, 0, 0, 0, 0, 0, 10, 64, 0, 0, 0, 0, 0, 0, 0, 72, 4, 0, 0, 0, 0, 0, 4, 64, 12, 0, 0, 0, 0, 0, 68, 40, 12, 2,
+ 0, 32, 2, 0, 16, 1, 4, 0, 0, 0, 0, 0, 17, 16, 8, 0, 0, 0, 0, 0, 22, 32, 30, 2, 0, 0, 0, 0, 17, 73, 20, 1, 0, 0, 2, 0, 5, 80, 36, 0,
+ 0, 0, 0, 0, 129,9, 24, 0, 0, 0, 0, 0, 12, 0, 0, 2, 16, 0, 0, 0, 1, 65, 16, 0, 0, 96, 8, 0, 20, 5, 4, 0, 0, 0, 0, 0, 5, 8, 10, 2,
+ 0, 32, 0, 0, 255,255,126,3, 0, 0, 0, 0, 238,191,108,1, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 5, 64, 4, 0, 0, 0, 0, 0, 19, 64, 0, 0,
+ 0, 0, 0, 0, 72, 64, 0, 2, 0, 0, 0, 0, 0, 72, 8, 0, 0, 0, 0, 0, 4, 26, 18, 0, 0, 0, 0, 0, 128,32, 128,0, 0, 0, 0, 0, 25, 33, 4, 1,
+ 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 0, 0, 0, 0, 0, 147,121,84, 1, 0, 0, 0, 0, 0, 48, 6, 2, 0, 0, 0, 0, 8, 43, 66, 0,
+ 0, 0, 0, 0, 113,120,4, 0, 0, 0, 0, 0, 64, 152,40, 0, 0, 0, 0, 0, 0, 32, 36, 2, 0, 32, 0, 0, 123,40, 206,1, 0, 0, 0, 0, 0, 73, 16, 0,
+ 0, 0, 0, 0, 127,108,44, 0, 0, 0, 0, 0, 18, 64, 4, 0, 0, 0, 0, 0, 81, 65, 8, 0, 0, 0, 0, 0, 3, 16, 12, 0, 0, 0, 0, 0, 19, 73, 28, 1,
+ 0, 32, 2, 0, 4, 32, 68, 0, 0, 0, 0, 0, 18, 96, 76, 1, 0, 0, 0, 0, 80, 65, 0, 0, 0, 0, 0, 0, 16, 24, 8, 0, 0, 32, 0, 0, 5, 48, 92, 2,
+ 0, 0, 0, 0, 18, 72, 12, 0, 0, 32, 0, 0, 16, 104,0, 0, 0, 0, 0, 0, 1, 40, 130,0, 0, 112,0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 40, 16, 0,
+ 0, 0, 0, 0, 17, 73, 70, 1, 0, 0, 0, 0, 198,136,42, 0, 0, 0, 0, 0, 65, 9, 46, 1, 0, 0, 0, 0, 117,104,40, 0, 0, 0, 0, 0, 128,0, 60, 0,
+ 0, 0, 0, 0, 10, 56, 124,3, 0, 32, 0, 0, 53, 9, 20, 1, 0, 32, 0, 0, 81, 1, 0, 0, 0, 32, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 8, 40, 10, 0,
+ 0, 0, 0, 0, 206,104,94, 2, 0, 0, 0, 0, 4, 64, 4, 2, 0, 0, 0, 0, 37, 111,10, 1, 0, 0, 0, 0, 144,1, 8, 0, 0, 0, 0, 0, 93, 108,44, 2,
+ 0, 0, 0, 0, 4, 56, 92, 2, 0, 0, 0, 0, 148,100,72, 0, 0, 0, 0, 0, 145,121,86, 1, 0, 0, 0, 0, 64, 32, 0, 1, 0, 0, 0, 0, 88, 40, 6, 2,
+ 0, 32, 16, 0, 16, 0, 4, 0, 0, 0, 0, 0, 17, 64, 16, 1, 0, 96, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 64, 96, 16, 0, 0, 0, 0, 0, 5, 8, 12, 0,
+ 0, 0, 0, 0, 128,40, 0, 0, 0, 0, 0, 0, 8, 8, 14, 1, 0, 0, 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 255,253,93, 1, 0, 0, 0, 0, 78, 56, 54, 2,
+ 0, 0, 0, 0, 16, 1, 2, 2, 0, 0, 0, 0, 0, 40, 4, 2, 0, 0, 0, 0, 10, 25, 70, 1, 0, 0, 0, 0, 8, 72, 8, 0, 0, 96, 0, 0, 10, 0, 4, 0,
+ 0, 32, 0, 0, 59, 81, 64, 0, 0, 0, 0, 0, 8, 40, 78, 0, 0, 0, 0, 0, 25, 120,44, 0, 0, 96, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 17, 89, 40, 1,
+ 0, 0, 0, 0, 72, 32, 62, 0, 0, 0, 0, 0, 9, 65, 16, 0, 0, 0, 0, 0, 72, 56, 30, 1, 0, 0, 0, 0, 2, 24, 4, 0, 0, 0, 0, 0, 25, 104,28, 0,
+ 0, 0, 0, 0, 8, 160,0, 0, 0, 0, 0, 0, 17, 105,6, 0, 0, 0, 0, 0, 64, 40, 64, 0, 0, 0, 0, 0, 16, 42, 6, 0, 0, 0, 0, 0, 129,104,16, 0,
+ 0, 0, 0, 0, 1, 65, 20, 0, 0, 0, 0, 0, 80, 104,0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 32, 0, 0, 98, 52, 46, 0, 0, 0, 0, 0, 0, 10, 4, 1,
+ 0, 0, 0, 0, 64, 40, 36, 0, 0, 0, 0, 0, 1, 16, 4, 0, 0, 96, 0, 0, 191,125,126,0, 0, 0, 0, 0, 6, 184,79, 0, 0, 0, 0, 0, 0, 72, 16, 0,
+ 0, 0, 0, 0, 41, 201,16, 1, 0, 0, 0, 0, 25, 65, 0, 2, 0, 64, 0, 0, 16, 145,0, 1, 0, 0, 0, 0, 77, 40, 6, 1, 0, 0, 0, 0, 21, 0, 4, 2,
+ 0, 0, 0, 0, 144,129,68, 0, 0, 0, 0, 0, 21, 73, 2, 1, 0, 0, 0, 0, 8, 136,10, 1, 0, 0, 0, 0, 0, 49, 68, 1, 0, 0, 0, 0, 8, 8, 16, 0,
+ 0, 0, 0, 0, 64, 104,0, 0, 0, 0, 0, 0, 145,64, 0, 0, 0, 0, 0, 0, 84, 41, 0, 2, 0, 0, 0, 0, 152,20, 20, 0, 0, 0, 0, 0, 17, 73, 6, 1,
+ 0, 0, 0, 0, 111,8, 172,0, 0, 0, 0, 0, 17, 9, 2, 1, 0, 0, 0, 0, 16, 88, 10, 0, 0, 0, 0, 0, 56, 13, 0, 0, 0, 0, 0, 0, 16, 0, 66, 0,
+ 0, 0, 0, 0, 19, 9, 8, 0, 0, 0, 0, 0, 8, 0, 68, 1, 0, 0, 0, 0, 144,1, 0, 1, 0, 32, 0, 0, 17, 0, 4, 0, 0, 0, 0, 0, 17, 97, 6, 0,
+ 0, 0, 0, 0, 68, 41, 6, 2, 0, 0, 0, 0, 192,0, 16, 0, 0, 0, 0, 0, 9, 56, 14, 3, 0, 0, 0, 0, 77, 40, 8, 0, 0, 0, 0, 0, 17, 1, 8, 1,
+ 0, 0, 0, 0, 24, 104,8, 0, 0, 0, 0, 0, 21, 120,92, 0, 0, 0, 0, 0, 1, 32, 14, 1, 0, 0, 0, 0, 17, 65, 0, 2, 0, 64, 0, 0, 215,44, 54, 0,
+ 0, 128,0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 8, 0, 0, 32, 36, 0, 16, 96, 0, 0, 0, 0, 0, 0, 223,32, 10, 0,
+ 0, 0, 0, 0, 12, 128,0, 0, 128,8, 1, 0, 119,242,28, 2, 0, 128,0, 0, 2, 0, 130,0, 0, 0, 0, 0, 34, 6, 2, 0, 0, 0, 0, 0, 127,251,190,3,
+ 0, 0, 0, 0, 0, 32, 22, 0, 0, 0, 0, 0, 40, 8, 6, 0, 0, 0, 0, 0, 149,69, 0, 0, 0, 32, 0, 0, 17, 9, 0, 1, 0, 32, 0, 0, 0, 0, 36, 0,
+ 0, 0, 0, 0, 19, 91, 28, 1, 0, 0, 0, 0, 10, 32, 6, 1, 0, 0, 0, 0, 16, 1, 6, 0, 0, 0, 0, 0, 1, 0, 8, 2, 0, 0, 0, 0, 7, 36, 20, 0,
+ 0, 0, 0, 0, 19, 209,20, 0, 0, 0, 0, 0, 16, 96, 4, 0, 0, 0, 0, 0, 4, 136,0, 0, 0, 64, 0, 0, 1, 1, 4, 0, 0, 32, 20, 0, 32, 0, 4, 0,
+ 0, 0, 0, 0, 93, 65, 12, 0, 0, 0, 0, 0, 0, 16, 8, 2, 0, 0, 0, 0, 0, 68, 16, 0, 0, 0, 0, 0, 21, 97, 22, 0, 0, 0, 0, 0, 0, 32, 50, 0,
+ 0, 0, 0, 0, 48, 137,36, 0, 0, 0, 0, 0, 1, 0, 12, 2, 0, 0, 0, 0, 8, 152,36, 0, 0, 0, 0, 0, 36, 160,4, 0, 0, 0, 0, 0, 0, 8, 36, 0,
+ 0, 0, 0, 0, 145,129,12, 0, 0, 0, 0, 0, 0, 160,12, 0, 0, 0, 32, 0, 63, 113,63, 2, 0, 0, 0, 0, 0, 112,38, 0, 0, 0, 0, 0, 79, 112,44, 2,
+ 0, 0, 0, 0, 0, 96, 28, 0, 0, 0, 0, 0, 5, 65, 4, 0, 0, 0, 0, 0, 1, 8, 8, 0, 0, 0, 0, 0, 0, 32, 10, 2, 0, 0, 0, 0, 1, 4, 8, 1,
+ 0, 0, 0, 0, 21, 133,12, 0, 0, 0, 0, 0, 1, 225,0, 0, 0, 0, 0, 0, 17, 1, 28, 0, 0, 0, 0, 0, 205,45, 42, 1, 0, 0, 0, 0, 48, 0, 8, 0,
+ 0, 0, 0, 0, 52, 10, 0, 0, 0, 0, 0, 0, 160,16, 8, 2, 16, 160,2, 0, 215,93, 122,1, 0, 0, 0, 0, 254,255,126,3, 0, 0, 0, 0, 19, 72, 2, 0,
+ 0, 0, 0, 0, 136,32, 16, 0, 0, 0, 0, 0, 145,68, 0, 0, 0, 0, 0, 0, 2, 8, 2, 0, 0, 32, 0, 0, 154,1, 68, 0, 0, 0, 0, 0, 0, 4, 2, 2,
+ 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 16, 0, 2, 1, 0, 0, 0, 0, 1, 96, 2, 0, 0, 0, 0, 0, 8, 60, 142,0, 0, 0, 0, 0, 16, 17, 4, 2,
+ 0, 0, 0, 0, 16, 153,68, 0, 0, 0, 0, 0, 1, 52, 66, 0, 0, 0, 0, 0, 2, 0, 36, 0, 0, 0, 0, 0, 61, 93, 16, 0, 0, 0, 0, 0, 2, 4, 8, 0,
+ 0, 0, 0, 0, 0, 160,24, 0, 0, 0, 0, 0, 101,0, 8, 0, 0, 0, 0, 0, 18, 8, 0, 1, 0, 0, 0, 0, 19, 65, 0, 0, 0, 0, 0, 0, 0, 32, 80, 0,
+ 0, 0, 0, 0, 0, 132,4, 0, 0, 0, 0, 0, 59, 233,20, 0, 0, 0, 0, 0, 17, 72, 2, 0, 0, 0, 0, 0, 16, 25, 4, 1, 0, 0, 0, 0, 0, 49, 18, 0,
+ 0, 32, 0, 0, 17, 121,4, 1, 0, 32, 0, 0, 16, 33, 4, 0, 0, 0, 0, 0, 93, 105,28, 1, 0, 0, 0, 0, 8, 36, 0, 0, 0, 0, 0, 0, 144,64, 0, 1,
+ 0, 32, 0, 0, 8, 8, 6, 1, 0, 0, 0, 0, 128,0, 32, 0, 0, 0, 0, 0, 17, 233,22, 1, 0, 0, 0, 0, 64, 180,4, 0, 0, 0, 0, 0, 0, 8, 0, 3,
+ 0, 32, 2, 0, 0, 8, 0, 0, 16, 0, 0, 0, 149,65, 68, 2, 0, 36, 0, 0, 9, 217,22, 0, 0, 32, 0, 0, 16, 9, 4, 0, 0, 0, 0, 0, 145,73, 6, 0,
+ 0, 0, 0, 0, 8, 8, 18, 0, 0, 0, 0, 0, 20, 40, 0, 0, 0, 0, 0, 0, 2, 0, 12, 3, 0, 0, 0, 0, 27, 253,28, 0, 0, 0, 0, 0, 0, 44, 2, 0,
+ 0, 0, 0, 0, 17, 73, 16, 1, 0, 0, 0, 0, 0, 32, 3, 0, 0, 0, 1, 0, 127,249,62, 1, 0, 0, 0, 0, 12, 32, 130,0, 0, 0, 0, 0, 32, 96, 12, 2,
+ 0, 0, 0, 0, 17, 65, 28, 1, 0, 32, 0, 0, 18, 48, 46, 1, 0, 240,41, 0, 16, 64, 76, 0, 0, 240,63, 0, 10, 16, 6, 0, 0, 32, 0, 0, 0, 32, 12, 0,
+ 0, 0, 0, 0, 16, 73, 64, 0, 0, 32, 0, 0, 144,1, 4, 0, 0, 0, 0, 0, 16, 117,12, 0, 0, 32, 0, 0, 8, 32, 6, 1, 0, 0, 0, 0, 181,89, 94, 0,
+ 0, 0, 0, 0, 66, 32, 130,0, 0, 0, 0, 0, 8, 40, 2, 0, 0, 0, 0, 0, 2, 11, 12, 0, 0, 0, 0, 0, 189,56, 172,0, 0, 0, 0, 0, 0, 32, 6, 2,
+ 0, 0, 0, 0, 17, 32, 6, 0, 0, 0, 0, 0, 1, 4, 8, 0, 0, 0, 0, 0, 255,253,127,3, 0, 0, 0, 0, 8, 181,14, 0, 0, 0, 0, 0, 145,65, 84, 0,
+ 0, 0, 0, 0, 8, 16, 2, 0, 0, 0, 0, 0, 1, 64, 18, 1, 0, 0, 0, 0, 133,68, 0, 0, 0, 32, 4, 0, 18, 217,20, 0, 0, 0, 16, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 6, 188,46, 2, 0, 0, 0, 0, 18, 0, 4, 1, 0, 32, 0, 0, 48, 9, 4, 1, 0, 96, 0, 0, 14, 16, 6, 1, 0, 0, 0, 0, 0, 64, 18, 0,
+ 0, 0, 0, 0, 41, 0, 4, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 49, 25, 12, 1, 0, 240,31, 0, 32, 0, 0, 0, 0, 0, 0, 0, 16, 97, 20, 0,
+ 0, 0, 0, 0, 81, 97, 0, 0, 0, 0, 0, 0, 2, 33, 18, 0, 0, 0, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 0, 128,72, 0, 0, 0, 0, 0, 0, 168,0, 0,
+ 0, 0, 0, 0, 23, 253,122,1, 0, 0, 0, 0, 0, 48, 68, 0, 0, 0, 0, 0, 18, 168,0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 53, 8, 12, 0,
+ 0, 0, 0, 0, 196,0, 32, 0, 0, 0, 0, 0, 34, 16, 100,0, 0, 32, 0, 0, 128,136,0, 0, 0, 32, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 147,57, 76, 0,
+ 0, 0, 0, 0, 17, 17, 16, 0, 0, 32, 0, 0, 146,89, 4, 1, 0, 0, 0, 0, 17, 32, 4, 1, 0, 224,56, 0, 32, 16, 12, 0, 0, 0, 0, 0, 145,32, 74, 0,
+ 0, 0, 0, 0, 17, 1, 34, 1, 0, 0, 0, 0, 0, 8, 14, 2, 0, 240,7, 0, 0, 16, 12, 3, 0, 0, 0, 0, 18, 33, 4, 1, 0, 0, 0, 0, 2, 48, 8, 0,
+ 0, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 48, 26, 0, 0, 0, 0, 0, 0, 112,0, 0, 0, 0, 0, 0, 255,252,63, 3, 0, 0, 0, 0, 8, 244,38, 1,
+ 0, 0, 0, 0, 80, 0, 8, 0, 0, 0, 0, 0, 133,76, 16, 0, 0, 32, 0, 0, 64, 40, 4, 0, 0, 240,42, 0, 1, 8, 0, 0, 0, 32, 0, 0, 17, 137,4, 1,
+ 0, 0, 0, 0, 136,16, 4, 0, 0, 112,5, 0, 16, 129,68, 0, 0, 32, 0, 0, 0, 161,22, 0, 0, 0, 0, 0, 160,52, 62, 0, 0, 96, 0, 0, 40, 8, 12, 1,
+ 0, 0, 0, 0, 64, 105,64, 0, 0, 0, 0, 0, 17, 4, 4, 0, 0, 0, 0, 0, 29, 205,44, 0, 0, 0, 0, 0, 150,9, 6, 0, 0, 0, 0, 0, 16, 32, 4, 1,
+ 0, 32, 0, 0, 1, 36, 4, 0, 0, 0, 0, 0, 20, 32, 68, 0, 0, 0, 0, 0, 17, 161,0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 221,237,76, 2,
+ 0, 32, 0, 0, 12, 16, 28, 0, 0, 0, 0, 0, 0, 8, 64, 0, 0, 0, 0, 0, 33, 64, 0, 1, 0, 32, 0, 0, 0, 96, 4, 0, 0, 0, 0, 0, 8, 56, 28, 0,
+ 0, 0, 0, 0, 68, 64, 0, 0, 0, 0, 0, 0, 148,217,6, 0, 0, 0, 0, 0, 8, 32, 66, 0, 0, 32, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 13, 197,0, 0,
+ 0, 0, 0, 0, 100,40, 4, 0, 0, 0, 0, 0, 4, 32, 1, 0, 0, 0, 0, 0, 149,249,80, 2, 0, 0, 0, 0, 0, 24, 128,0, 0, 0, 0, 0, 5, 65, 74, 0,
+ 0, 0, 0, 0, 64, 16, 2, 0, 0, 0, 0, 0, 0, 80, 2, 0, 0, 0, 0, 0, 36, 128,0, 0, 0, 0, 0, 0, 95, 255,127,1, 0, 0, 0, 0, 132,76, 10, 0,
+ 0, 0, 0, 0, 16, 68, 16, 2, 0, 0, 0, 0, 6, 32, 6, 0, 0, 0, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 17, 89, 16, 0, 0, 0, 0, 0, 17, 133,20, 0,
+ 0, 0, 0, 0, 74, 64, 0, 0, 0, 0, 0, 0, 16, 129,14, 0, 0, 0, 0, 0, 25, 105,16, 2, 0, 0, 0, 0, 1, 64, 20, 0, 0, 0, 0, 0, 0, 64, 4, 2,
+ 0, 0, 0, 0, 144,1, 16, 2, 0, 0, 0, 0, 92, 41, 8, 0, 0, 0, 0, 0, 153,52, 0, 0, 0, 0, 0, 0, 17, 65, 16, 3, 0, 240,62, 0, 207,191,206,1,
+ 0, 240,32, 0, 0, 0, 0, 0, 0, 240,7, 0, 0, 0, 0, 0, 0, 32, 0, 0, 85, 121,20, 1, 0, 32, 0, 0, 10, 41, 0, 0, 0, 0, 0, 0, 16, 40, 6, 0,
+ 0, 0, 0, 0, 27, 1, 4, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 32, 0, 0, 17, 96, 4, 0, 0, 32, 0, 0, 17, 65, 4, 0, 0, 32, 0, 0, 40, 168,20, 0,
+ 0, 0, 0, 0, 12, 32, 0, 0, 0, 0, 0, 0, 4, 0, 24, 0, 0, 0, 0, 0, 8, 128,4, 0, 0, 32, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 1, 72, 8, 0,
+ 0, 0, 0, 0, 223,253,63, 1, 0, 0, 0, 0, 3, 1, 16, 0, 0, 0, 0, 0, 1, 0, 20, 1, 0, 96, 0, 0, 24, 73, 4, 1, 0, 0, 0, 0, 16, 8, 0, 3,
+ 0, 0, 0, 0, 21, 64, 2, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 3, 152,4, 0, 0, 0, 0, 0, 68, 45, 0, 0, 0, 0, 0, 0, 1, 133,0, 0,
+ 0, 0, 0, 0, 5, 40, 16, 0, 0, 32, 0, 0, 48, 17, 104,1, 0, 0, 0, 0, 255,248,254,2, 0, 32, 0, 0, 38, 124,38, 0, 0, 0, 0, 0, 36, 65, 0, 0,
+ 0, 0, 0, 0, 9, 8, 2, 0, 0, 0, 0, 0, 23, 65, 18, 0, 0, 0, 0, 0, 149,65, 4, 0, 0, 0, 0, 0, 0, 72, 0, 1, 0, 0, 0, 0, 4, 32, 68, 0,
+ 0, 0, 0, 0, 17, 4, 2, 0, 0, 4, 0, 0, 4, 42, 6, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 1, 137,38, 0, 0, 0, 0, 0, 4, 9, 0, 2,
+ 0, 0, 0, 0, 49, 9, 32, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 19, 85, 0, 0, 0, 0, 0, 0, 93, 101,9, 2, 0, 0, 0, 0, 128,65, 0, 1,
+ 0, 0, 0, 0, 17, 1, 2, 1, 0, 96, 4, 0, 0, 8, 4, 0, 0, 0, 0, 0, 4, 152,2, 0, 0, 0, 0, 0, 0, 0, 140,0, 0, 0, 0, 0, 36, 168,24, 0,
+ 0, 0, 0, 0, 132,196,18, 0, 0, 0, 0, 0, 21, 65, 23, 0, 0, 0, 0, 0, 4, 64, 16, 0, 0, 0, 0, 0, 17, 72, 16, 0, 0, 0, 0, 0, 0, 25, 4, 0,
+ 0, 0, 0, 0, 16, 64, 6, 0, 0, 0, 0, 0, 36, 160,36, 0, 0, 0, 0, 0, 2, 40, 4, 0, 0, 0, 0, 0, 81, 104,0, 0, 0, 0, 0, 0, 128,1, 16, 0,
+ 0, 0, 0, 0, 21, 236,12, 0, 0, 32, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 16, 1, 18, 0, 0, 0, 0, 0, 19, 65, 42, 1, 0, 0, 0, 0, 10, 0, 10, 0,
+ 0, 0, 0, 0, 86, 32, 0, 2, 0, 32, 0, 0, 2, 8, 76, 0, 0, 0, 0, 0, 46, 24, 4, 0, 0, 0, 0, 0, 21, 1, 32, 0, 0, 0, 0, 0, 20, 8, 8, 0,
+ 0, 32, 32, 0, 17, 64, 4, 0, 0, 0, 0, 0, 16, 9, 68, 0, 0, 0, 0, 0, 172,12, 130,1, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 4, 0, 32, 2, 0, 0,
+ 0, 0, 0, 0, 17, 77, 88, 1, 0, 0, 0, 0, 255,189,254,1, 0, 0, 0, 0, 208,64, 16, 0, 0, 0, 0, 0, 2, 48, 2, 0, 0, 0, 0, 0, 24, 16, 32, 0,
+ 0, 0, 0, 0, 3, 208,4, 0, 0, 0, 0, 0, 76, 37, 14, 0, 0, 0, 0, 0, 130,128,12, 0, 0, 0, 0, 0, 27, 101,6, 1, 0, 0, 0, 0, 0, 48, 12, 1,
+ 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 46, 96, 12, 0, 0, 0, 0, 0, 129,0, 0, 1, 0, 32, 0, 0, 16, 5, 4, 0, 0, 0, 0, 0, 10, 64, 40, 0,
+ 0, 0, 0, 0, 146,193,12, 0, 0, 0, 0, 0, 17, 89, 2, 1, 0, 0, 0, 0, 52, 0, 5, 0, 0, 0, 0, 0, 144,64, 12, 0, 0, 0, 0, 0, 76, 32, 4, 0,
+ 0, 0, 0, 0, 16, 65, 28, 0, 0, 0, 0, 0, 0, 40, 68, 0, 0, 0, 0, 0, 0, 8, 10, 1, 0, 0, 0, 0, 20, 34, 0, 0, 0, 0, 0, 0, 30, 144,76, 0,
+ 0, 0, 0, 0, 119,249,110,0, 0, 0, 0, 0, 0, 56, 46, 0, 0, 32, 0, 0, 16, 9, 28, 0, 0, 32, 0, 0, 49, 125,100,1, 0, 0, 0, 0, 8, 40, 6, 0,
+ 0, 0, 0, 0, 32, 4, 46, 0, 0, 0, 0, 0, 4, 0, 12, 2, 0, 0, 0, 0, 16, 97, 0, 0, 0, 32, 0, 0, 12, 176,10, 0, 0, 0, 0, 0, 116,21, 0, 1,
+ 0, 0, 0, 0, 8, 40, 14, 0, 0, 0, 0, 0, 55, 242,45, 2, 0, 8, 0, 0, 16, 0, 4, 0, 0, 0, 0, 0, 40, 0, 8, 0, 0, 32, 0, 0, 144,64, 12, 1,
+ 0, 0, 0, 0, 4, 0, 136,0, 0, 0, 8, 0, 16, 65, 4, 0, 0, 0, 0, 0, 85, 5, 8, 0, 0, 0, 0, 0, 17, 17, 4, 1, 0, 0, 0, 0, 2, 128,4, 0,
+ 0, 0, 0, 0, 144,73, 10, 0, 0, 0, 0, 0, 127,253,127,3, 0, 32, 0, 0, 16, 17, 76, 0, 0, 0, 0, 0, 32, 1, 4, 0, 0, 0, 0, 0, 192,0, 4, 0,
+ 0, 0, 0, 0, 53, 17, 8, 0, 0, 0, 0, 0, 1, 0, 4, 2, 0, 2, 0, 0, 8, 40, 30, 1, 0, 0, 0, 0, 128,1, 28, 0, 0, 0, 0, 0, 73, 0, 12, 0,
+ 0, 32, 36, 0, 16, 1, 4, 1, 0, 0, 0, 0, 128,17, 0, 0, 0, 0, 0, 0, 25, 32, 4, 0, 0, 32, 0, 0, 50, 1, 4, 0, 0, 0, 0, 0, 118,54, 174,0,
+ 0, 0, 0, 0, 150,152,4, 0, 0, 0, 0, 0, 80, 5, 0, 1, 0, 0, 0, 0, 148,0, 8, 0, 0, 0, 0, 0, 11, 48, 10, 0, 0, 0, 0, 0, 109,73, 16, 1,
+ 0, 0, 1, 0, 178,51, 26, 0, 0, 0, 0, 0, 132,36, 0, 1, 0, 128,0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 32, 2, 8, 0, 0, 0, 0, 0, 2, 0, 1, 0,
+ 0, 0, 0, 0, 192,4, 12, 0, 0, 68, 1, 0, 255,255,255,3, 0, 0, 0, 0, 204,44, 158,0, 0, 32, 0, 0, 18, 21, 64, 1, 0, 0, 0, 0, 50, 1, 44, 0,
+ 0, 0, 0, 0, 81, 9, 4, 0, 0, 0, 0, 0, 18, 41, 12, 0, 0, 0, 0, 0, 155,73, 82, 1, 0, 0, 0, 0, 0, 45, 2, 0, 0, 0, 0, 0, 16, 73, 4, 0,
+ 0, 0, 0, 0, 8, 128,6, 1, 0, 0, 0, 0, 0, 8, 22, 0, 0, 96, 43, 0, 0, 2, 4, 1, 0, 0, 0, 0, 149,68, 26, 0, 0, 0, 0, 0, 4, 33, 0, 0,
+ 0, 96, 4, 0, 119,185,14, 1, 0, 0, 0, 0, 8, 16, 8, 1, 0, 0, 0, 0, 144,17, 0, 0, 0, 32, 0, 0, 9, 248,14, 2, 0, 0, 0, 0, 57, 121,2, 1,
+ 0, 128,0, 0, 14, 185,198,1, 0, 0, 0, 0, 52, 56, 4, 0, 0, 0, 0, 64, 0, 0, 4, 0, 0, 48, 0, 0, 10, 16, 0, 0, 0, 0, 0, 0, 40, 40, 186,0,
+ 0, 0, 0, 0, 128,9, 0, 0, 0, 0, 0, 0, 49, 65, 2, 0, 0, 0, 0, 0, 16, 25, 4, 0, 0, 0, 0, 0, 16, 40, 2, 1, 0, 96, 0, 0, 128,0, 4, 0,
+ 0, 0, 0, 0, 219,41, 4, 0, 0, 0, 0, 0, 17, 105,2, 0, 0, 0, 0, 0, 67, 32, 4, 0, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 16, 80, 2, 0,
+ 0, 0, 0, 0, 33, 56, 10, 0, 0, 0, 0, 0, 21, 1, 4, 0, 0, 32, 0, 0, 0, 25, 6, 1, 0, 4, 0, 0, 127,253,125,1, 0, 0, 0, 0, 110,249,110,0,
+ 0, 0, 0, 0, 88, 0, 8, 0, 0, 0, 0, 0, 4, 48, 0, 0, 0, 0, 0, 0, 54, 233,70, 0, 0, 0, 0, 0, 0, 32, 42, 0, 0, 32, 0, 0, 214,120,14, 1,
+ 0, 0, 0, 0, 129,72, 8, 0, 0, 0, 0, 0, 1, 9, 2, 0, 0, 0, 0, 0, 87, 48, 12, 0, 0, 32, 0, 0, 73, 0, 4, 0, 0, 0, 0, 0, 94, 176,10, 2,
+ 0, 0, 0, 0, 26, 1, 4, 0, 0, 0, 0, 0, 93, 40, 10, 1, 0, 0, 0, 0, 2, 96, 32, 0, 0, 0, 0, 0, 92, 48, 36, 0, 0, 0, 0, 0, 1, 68, 0, 0,
+ 0, 0, 0, 0, 81, 1, 68, 0, 0, 32, 0, 0, 0, 64, 96, 0, 0, 0, 0, 0, 4, 177,35, 2, 0, 0, 0, 0, 66, 184,22, 0, 0, 0, 0, 0, 3, 0, 0, 1,
+ 0, 0, 0, 0, 25, 97, 4, 1, 0, 32, 0, 0, 49, 9, 4, 0, 0, 0, 0, 0, 49, 9, 4, 0, 0, 0, 0, 0, 4, 192,8, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 32, 1, 0, 144,80, 6, 0, 0, 0, 0, 0, 6, 49, 4, 0, 0, 0, 0, 0, 18, 32, 0, 0, 0, 0, 0, 0, 9, 32, 0, 0, 16, 64, 0, 0, 191,249,30, 1,
+ 0, 0, 0, 0, 4, 40, 14, 0, 0, 0, 0, 0, 17, 65, 28, 0, 0, 32, 0, 0, 1, 1, 12, 0, 0, 0, 0, 0, 81, 1, 0, 0, 0, 64, 0, 0, 95, 105,30, 0,
+ 0, 0, 0, 0, 36, 1, 4, 0, 0, 0, 0, 0, 12, 44, 141,0, 0, 0, 0, 0, 64, 64, 12, 0, 0, 0, 0, 0, 128,69, 4, 0, 0, 96, 0, 0, 17, 81, 4, 0,
+ 0, 0, 0, 0, 24, 0, 18, 0, 0, 0, 0, 0, 8, 48, 6, 0, 0, 0, 0, 0, 36, 0, 0, 2, 0, 0, 0, 0, 17, 16, 0, 0, 0, 0, 0, 0, 16, 32, 12, 0,
+ 0, 0, 0, 0, 16, 16, 12, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 32, 64, 8, 0, 0, 0, 0, 0, 17, 136,68, 0, 0, 0, 0, 0, 0, 8, 18, 0,
+ 0, 0, 0, 0, 4, 96, 13, 0, 0, 0, 0, 0, 24, 8, 130,0, 0, 0, 0, 0, 145,73, 30, 0, 0, 0, 0, 0, 76, 96, 31, 0, 0, 0, 0, 0, 17, 105,4, 0,
+ 0, 0, 0, 0, 1, 16, 136,0, 0, 0, 0, 0, 21, 48, 0, 0, 0, 0, 0, 0, 16, 1, 24, 0, 0, 0, 0, 0, 2, 64, 32, 0, 0, 0, 0, 0, 127,127,127,3,
+ 0, 0, 0, 0, 70, 45, 94, 0, 0, 0, 0, 0, 145,73, 18, 0, 0, 0, 0, 0, 4, 32, 40, 0, 0, 0, 0, 0, 9, 161,14, 0, 0, 0, 0, 0, 4, 0, 40, 0,
+ 0, 0, 0, 0, 81, 81, 4, 0, 0, 0, 0, 0, 4, 24, 18, 0, 0, 0, 0, 0, 17, 65, 18, 1, 0, 0, 0, 0, 0, 56, 6, 0, 0, 0, 0, 0, 52, 48, 8, 0,
+ 0, 0, 0, 0, 1, 32, 0, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 0, 0, 136,26, 70, 1, 0, 0, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 12, 0, 14, 0,
+ 0, 0, 0, 0, 16, 16, 6, 0, 0, 0, 0, 0, 72, 32, 14, 0, 0, 0, 0, 0, 4, 0, 18, 0, 0, 0, 0, 0, 25, 76, 2, 0, 0, 0, 0, 0, 64, 0, 36, 0,
+ 0, 0, 0, 0, 16, 17, 64, 0, 0, 0, 0, 0, 108,32, 4, 0, 0, 0, 0, 0, 16, 9, 66, 0, 0, 0, 0, 0, 8, 8, 2, 1, 0, 4, 0, 0, 17, 73, 0, 1,
+ 0, 0, 0, 0, 132,8, 18, 0, 0, 0, 0, 0, 29, 24, 142,1, 0, 0, 0, 0, 4, 96, 32, 0, 0, 32, 0, 0, 1, 8, 12, 1, 0, 0, 0, 0, 52, 160,32, 0,
+ 0, 0, 0, 0, 0, 41, 10, 0, 0, 0, 0, 0, 4, 40, 50, 0, 0, 0, 0, 0, 8, 33, 8, 0, 0, 32, 0, 0, 0, 65, 8, 1, 0, 0, 0, 0, 24, 0, 64, 1,
+ 0, 0, 0, 0, 21, 201,24, 0, 0, 0, 0, 0, 4, 35, 11, 0, 0, 0, 0, 0, 17, 65, 32, 0, 0, 0, 0, 0, 17, 145,0, 0, 0, 0, 0, 0, 76, 17, 130,0,
+ 0, 0, 0, 0, 144,48, 134,0, 0, 0, 0, 0, 0, 33, 2, 0, 0, 0, 0, 0, 80, 65, 16, 0, 0, 0, 0, 0, 32, 129,22, 0, 0, 0, 0, 0, 14, 137,46, 0,
+ 0, 0, 0, 0, 16, 65, 20, 0, 0, 0, 0, 0, 2, 32, 40, 0, 0, 96, 0, 0, 16, 8, 4, 0, 0, 0, 0, 0, 4, 32, 130,1, 0, 0, 0, 0, 0, 65, 20, 0,
+ 0, 0, 0, 0, 64, 0, 12, 1, 0, 0, 0, 0, 4, 12, 0, 1, 0, 0, 0, 0, 92, 253,46, 0, 0, 0, 0, 0, 146,17, 92, 1, 0, 96, 2, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 16, 72, 8, 0, 0, 98, 36, 0, 255,125,68, 0, 0, 0, 0, 0, 8, 0, 6, 1, 0, 0, 0, 0, 24, 96, 0, 0, 0, 0, 0, 0, 61, 8, 14, 0,
+ 0, 0, 0, 0, 17, 128,68, 0, 0, 96, 0, 0, 1, 17, 70, 0, 0, 0, 0, 0, 153,233,30, 1, 0, 0, 0, 0, 8, 184,6, 0, 0, 0, 0, 0, 17, 104,0, 0,
+ 0, 32, 0, 0, 166,176,4, 1, 16, 0, 0, 0, 16, 0, 8, 0, 0, 0, 0, 0, 4, 9, 66, 0, 0, 0, 0, 0, 127,253,126,3, 0, 0, 0, 0, 140,60, 8, 3,
+ 0, 0, 0, 0, 0, 41, 8, 0, 0, 0, 0, 0, 128,65, 16, 0, 0, 0, 0, 0, 17, 105,94, 1, 0, 0, 0, 0, 64, 32, 14, 1, 0, 0, 0, 0, 8, 41, 70, 0,
+ 0, 0, 0, 0, 17, 8, 8, 0, 0, 0, 0, 0, 2, 32, 48, 2, 0, 64, 0, 0, 17, 41, 12, 1, 0, 0, 0, 0, 93, 224,12, 2, 0, 0, 0, 0, 81, 96, 8, 0,
+ 0, 0, 0, 0, 16, 17, 22, 1, 0, 0, 0, 0, 16, 64, 76, 1, 0, 0, 0, 0, 187,113,84, 1, 0, 0, 0, 0, 9, 11, 14, 1, 0, 0, 0, 0, 0, 9, 20, 1,
+ 0, 0, 0, 0, 18, 1, 4, 0, 0, 0, 0, 0, 144,4, 0, 0, 0, 0, 0, 0, 0, 56, 8, 2, 0, 32, 0, 0, 24, 8, 46, 0, 0, 4, 0, 0, 16, 65, 22, 0,
+ 0, 0, 0, 0, 81, 65, 20, 1, 0, 0, 0, 0, 8, 104,10, 0, 0, 0, 0, 0, 77, 105,14, 3, 0, 0, 0, 0, 223,96, 36, 0, 0, 0, 0, 0, 81, 32, 0, 0,
+ 0, 0, 0, 0, 10, 32, 68, 0, 0, 0, 0, 0, 64, 128,0, 0, 0, 0, 0, 0, 149,65, 0, 0, 0, 0, 0, 0, 17, 105,70, 0, 0, 0, 0, 0, 64, 0, 134,2,
+ 0, 0, 0, 0, 4, 34, 4, 0, 0, 0, 0, 0, 0, 50, 4, 0, 0, 0, 0, 0, 16, 8, 10, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 0, 0, 0, 223,189,76, 1,
+ 0, 0, 0, 0, 84, 112,8, 0, 0, 32, 0, 0, 72, 168,4, 0, 0, 0, 0, 0, 21, 105,20, 0, 0, 0, 0, 0, 66, 41, 6, 0, 0, 0, 0, 0, 16, 0, 8, 2,
+ 0, 0, 0, 0, 8, 41, 2, 0, 0, 0, 0, 0, 145,121,30, 1, 0, 0, 0, 0, 1, 40, 6, 1, 0, 0, 0, 0, 19, 89, 2, 1, 0, 0, 0, 0, 0, 32, 70, 0,
+ 0, 32, 0, 0, 80, 0, 76, 0, 0, 0, 0, 0, 126,169,46, 2, 0, 0, 0, 0, 16, 9, 6, 0, 0, 0, 0, 0, 27, 73, 12, 0, 16, 0, 0, 0, 1, 32, 0, 0,
+ 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 4, 1, 12, 0, 0, 0, 0, 0, 0, 88, 68, 0, 0, 0, 0, 0, 16, 89, 4, 0, 0, 16, 0, 0, 25, 73, 6, 1,
+ 0, 0, 0, 0, 24, 32, 6, 0, 0, 32, 0, 0, 55, 209,78, 0, 0, 32, 0, 0, 2, 16, 68, 0, 0, 0, 0, 0, 16, 72, 4, 0, 16, 0, 0, 0, 8, 0, 14, 0,
+ 0, 0, 0, 0, 23, 105,46, 1, 0, 0, 0, 0, 144,0, 0, 1, 0, 0, 0, 0, 9, 0, 70, 1, 0, 32, 0, 0, 145,105,70, 1, 0, 0, 0, 0, 9, 112,6, 0,
+ 0, 0, 0, 0, 145,1, 8, 1, 0, 0, 0, 0, 21, 65, 30, 1, 0, 0, 0, 0, 89, 1, 28, 0, 0, 0, 0, 0, 16, 40, 8, 0, 0, 0, 0, 0, 219,249,6, 0,
+ 0, 96, 0, 0, 0, 0, 20, 0, 0, 16, 0, 0, 16, 65, 2, 0, 0, 0, 0, 0, 24, 40, 14, 0, 0, 0, 0, 0, 17, 72, 84, 0, 0, 0, 0, 0, 8, 32, 8, 1,
+ 0, 0, 0, 0, 21, 109,8, 0, 0, 0, 0, 0, 19, 65, 16, 3, 0, 8, 0, 0, 71, 1, 30, 0, 0, 64, 0, 0, 0, 32, 16, 0, 0, 64, 0, 0, 177,115,56, 1,
+ 0, 0, 0, 0, 111,189,254,3, 0, 0, 0, 0, 71, 9, 12, 0, 0, 0, 0, 0, 21, 68, 2, 0, 0, 32, 0, 0, 152,169,4, 1, 0, 32, 0, 0, 0, 2, 4, 0,
+ 0, 0, 0, 0, 0, 8, 96, 0, 0, 0, 0, 0, 24, 73, 0, 1, 0, 0, 0, 0, 209,73, 20, 0, 0, 0, 0, 0, 66, 108,0, 0, 0, 32, 0, 0, 145,81, 84, 0,
+ 0, 0, 0, 0, 18, 144,0, 0, 0, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0, 63, 125,76, 0, 0, 0, 0, 0, 20, 1, 4, 1, 0, 0, 0, 0, 17, 192,4, 0,
+ 0, 0, 0, 0, 148,4, 4, 0, 0, 32, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 96, 32, 4, 0, 0, 0, 0, 0, 8, 33, 6, 1, 0, 0, 0, 0, 168,56, 4, 0,
+ 0, 0, 0, 0, 36, 96, 12, 0, 0, 0, 0, 0, 16, 1, 0, 3, 0, 96, 17, 0, 174,18, 0, 2, 0, 0, 0, 0, 223,249,127,0, 0, 0, 0, 0, 68, 52, 46, 0,
+ 0, 32, 0, 0, 16, 129,4, 1, 0, 0, 0, 0, 16, 80, 0, 1, 0, 0, 0, 0, 144,65, 16, 0, 0, 32, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 148,0, 0, 1,
+ 0, 0, 0, 0, 0, 40, 16, 0, 0, 0, 0, 0, 21, 65, 4, 0, 0, 0, 0, 0, 204,172,6, 0, 0, 32, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 81, 73, 0, 0,
+ 0, 0, 0, 0, 16, 0, 68, 0, 0, 0, 0, 0, 16, 128,28, 0, 0, 0, 0, 0, 20, 192,76, 0, 0, 0, 0, 0, 8, 0, 8, 2, 0, 0, 0, 0, 16, 81, 64, 1,
+ 0, 0, 0, 0, 17, 65, 100,0, 0, 0, 0, 0, 20, 16, 4, 0, 0, 0, 1, 0, 0, 160,0, 0, 0, 0, 0, 0, 95, 252,45, 0, 0, 0, 0, 0, 3, 8, 4, 0,
+ 0, 0, 0, 0, 144,5, 0, 0, 0, 0, 0, 0, 17, 24, 0, 0, 0, 32, 0, 0, 16, 1, 12, 0, 0, 0, 0, 0, 88, 8, 0, 0, 0, 0, 0, 0, 104,0, 6, 0,
+ 0, 0, 0, 0, 208,8, 0, 0, 0, 0, 0, 0, 16, 145,4, 0, 0, 0, 0, 0, 84, 68, 0, 0, 0, 0, 0, 0, 53, 217,92, 0, 0, 0, 0, 0, 21, 89, 0, 1,
+ 0, 0, 0, 0, 34, 128,32, 0, 0, 0, 0, 0, 20, 65, 8, 2, 0, 0, 0, 0, 48, 8, 0, 0, 0, 0, 0, 0, 1, 69, 0, 0, 0, 0, 0, 0, 245,253,255,3,
+ 0, 0, 0, 0, 0, 36, 12, 0, 0, 0, 0, 0, 148,69, 16, 0, 0, 0, 0, 0, 17, 0, 64, 0, 0, 0, 0, 0, 32, 64, 24, 0, 0, 0, 0, 0, 129,33, 0, 0,
+ 0, 0, 0, 0, 51, 137,80, 0, 0, 0, 0, 0, 25, 0, 2, 1, 0, 0, 0, 0, 149,71, 85, 1, 0, 0, 0, 0, 2, 32, 4, 0, 0, 0, 0, 0, 0, 52, 0, 0,
+ 0, 0, 0, 0, 154,125,76, 0, 0, 32, 0, 0, 247,121,74, 0, 0, 0, 0, 0, 149,64, 72, 2, 0, 0, 0, 0, 68, 160,12, 0, 0, 0, 0, 0, 148,64, 0, 0,
+ 0, 0, 0, 0, 58, 41, 12, 0, 0, 32, 0, 0, 16, 65, 36, 0, 0, 0, 0, 0, 0, 96, 8, 0, 0, 0, 0, 0, 124,185,140,3, 0, 0, 0, 0, 35, 0, 4, 0,
+ 0, 0, 0, 0, 16, 0, 128,0, 0, 0, 0, 0, 24, 64, 16, 0, 0, 0, 0, 0, 4, 4, 4, 2, 0, 32, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 18, 152,66, 0,
+ 0, 0, 0, 0, 8, 8, 8, 1, 0, 0, 0, 0, 145,65, 8, 0, 0, 0, 0, 0, 148,1, 4, 0, 0, 0, 0, 0, 8, 32, 0, 2, 0, 0, 0, 0, 27, 193,12, 0,
+ 0, 0, 0, 0, 64, 160,0, 0, 0, 0, 0, 0, 64, 8, 4, 0, 0, 0, 0, 0, 0, 9, 12, 0, 0, 112,8, 0, 0, 8, 4, 0, 0, 0, 0, 0, 53, 85, 24, 1,
+ 0, 0, 0, 0, 2, 4, 6, 0, 0, 0, 0, 0, 156,0, 50, 0, 0, 0, 0, 0, 8, 8, 24, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 34, 0, 0, 1,
+ 0, 0, 0, 0, 255,255,174,3, 0, 0, 0, 0, 8, 32, 30, 0, 0, 0, 0, 0, 51, 65, 22, 0, 0, 0, 0, 0, 21, 40, 12, 0, 0, 0, 0, 0, 0, 64, 12, 0,
+ 0, 32, 0, 0, 32, 0, 64, 0, 0, 0, 0, 0, 133,69, 48, 0, 0, 0, 0, 0, 32, 24, 10, 2, 0, 0, 0, 0, 25, 51, 64, 0, 0, 0, 0, 0, 10, 40, 46, 2,
+ 0, 0, 0, 0, 0, 224,32, 0, 0, 0, 0, 0, 17, 25, 4, 1, 0, 0, 0, 0, 1, 0, 6, 2, 0, 0, 0, 0, 151,253,108,0, 0, 0, 0, 0, 8, 32, 10, 1,
+ 0, 0, 0, 0, 96, 160,44, 0, 0, 0, 0, 0, 8, 144,8, 0, 0, 0, 0, 0, 16, 128,0, 0, 0, 0, 0, 0, 4, 0, 36, 0, 0, 96, 5, 0, 179,249,29, 0,
+ 0, 0, 0, 0, 17, 73, 2, 1, 0, 0, 0, 0, 64, 16, 4, 0, 0, 0, 0, 0, 129,8, 24, 0, 0, 0, 0, 0, 217,41, 136,1, 0, 0, 0, 0, 36, 32, 0, 0,
+ 0, 0, 0, 0, 100,32, 0, 0, 0, 32, 4, 0, 160,8, 4, 0, 0, 0, 0, 0, 4, 48, 2, 2, 0, 64, 0, 0, 23, 193,6, 0, 0, 0, 0, 0, 63, 249,110,3,
+ 0, 0, 0, 0, 6, 16, 8, 0, 0, 0, 0, 0, 9, 40, 12, 1, 0, 0, 0, 0, 21, 112,56, 0, 0, 0, 0, 0, 24, 0, 70, 1, 0, 0, 0, 0, 192,32, 0, 0,
+ 0, 0, 0, 0, 4, 32, 20, 2, 0, 0, 0, 0, 10, 0, 4, 1, 0, 0, 0, 0, 149,145,92, 0, 0, 0, 0, 0, 17, 49, 64, 1, 0, 0, 0, 0, 183,105,78, 0,
+ 0, 0, 0, 0, 0, 33, 64, 0, 0, 0, 0, 0, 65, 32, 6, 0, 0, 0, 0, 0, 18, 1, 2, 0, 0, 0, 0, 0, 32, 128,0, 0, 0, 0, 0, 0, 32, 40, 16, 0,
+ 0, 0, 0, 0, 164,1, 0, 0, 0, 0, 0, 0, 145,9, 4, 1, 0, 0, 0, 0, 5, 17, 0, 2, 0, 32, 0, 0, 18, 0, 8, 3, 0, 0, 0, 0, 128,33, 0, 0,
+ 0, 0, 0, 0, 129,81, 0, 0, 0, 32, 0, 0, 32, 0, 0, 2, 0, 0, 0, 0, 119,190,78, 2, 0, 32, 0, 0, 14, 241,12, 0, 0, 0, 0, 0, 129,8, 0, 0,
+ 0, 32, 0, 0, 12, 0, 68, 0, 0, 0, 0, 0, 4, 32, 4, 2, 0, 0, 0, 0, 197,160,10, 0, 0, 0, 0, 0, 16, 0, 1, 0, 0, 0, 0, 0, 16, 69, 0, 0,
+ 0, 0, 0, 0, 9, 65, 72, 0, 0, 128,0, 0, 144,0, 2, 0, 0, 0, 0, 0, 17, 33, 20, 0, 0, 0, 0, 0, 4, 156,140,0, 0, 0, 0, 0, 0, 69, 0, 0,
+ 0, 0, 0, 0, 17, 72, 80, 1, 0, 0, 0, 0, 4, 130,2, 0, 0, 0, 0, 0, 0, 73, 4, 0, 0, 0, 0, 0, 0, 37, 8, 0, 0, 0, 0, 0, 17, 69, 0, 1,
+ 0, 0, 0, 0, 4, 140,6, 0, 0, 0, 0, 0, 0, 36, 68, 0, 16, 244,47, 0, 255,255,126,3, 0, 0, 0, 0, 145,193,20, 1, 0, 0, 0, 0, 236,121,54, 2,
+ 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 3, 193,0, 0, 0, 0, 0, 0, 72, 34, 8, 0, 0, 0, 0, 0, 68, 16, 8, 0, 0, 0, 0, 0, 128,64, 0, 1,
+ 0, 0, 0, 0, 144,41, 2, 1, 0, 0, 0, 0, 140,153,100,0, 0, 64, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 27, 105,18, 0, 0, 0, 0, 0, 149,197,19, 3,
+ 16, 96, 0, 0, 25, 73, 30, 1, 16, 224,4, 0, 0, 80, 4, 1, 0, 0, 0, 0, 200,50, 66, 0, 0, 0, 0, 0, 32, 64, 8, 1, 0, 0, 0, 0, 16, 65, 2, 1,
+ 0, 0, 0, 0, 219,121,82, 0, 0, 0, 0, 0, 21, 121,0, 0, 0, 0, 0, 0, 210,85, 5, 0, 0, 0, 0, 0, 0, 48, 2, 1, 0, 0, 0, 0, 220,59, 47, 2,
+ 0, 0, 0, 0, 129,104,2, 0, 0, 0, 0, 0, 1, 72, 0, 1, 0, 0, 0, 0, 144,9, 16, 1, 0, 224,0, 0, 8, 16, 4, 0, 0, 16, 0, 0, 17, 65, 20, 0,
+ 0, 112,32, 0, 128,0, 4, 0, 0, 0, 0, 0, 247,221,30, 3, 0, 0, 0, 0, 8, 25, 3, 0, 0, 0, 0, 0, 4, 0, 2, 1, 0, 144,16, 0, 84, 102,22, 1,
+ 0, 0, 0, 0, 11, 104,40, 0, 0, 0, 0, 0, 17, 17, 16, 1, 0, 0, 0, 0, 64, 17, 38, 0, 0, 248,16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 32, 38, 1,
+ 0, 0, 0, 0, 83, 241,6, 0, 0, 0, 0, 0, 64, 40, 46, 0, 0, 0, 0, 0, 4, 68, 24, 0, 0, 0, 0, 0, 0, 104,70, 0, 0, 0, 0, 0, 21, 72, 6, 0,
+ 0, 32, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 8, 48, 0, 0, 0, 0, 0, 0, 89, 1, 0, 1, 0, 0, 0, 0, 12, 32, 26, 0, 0, 0, 0, 0, 176,1, 0, 0,
+ 0, 0, 0, 0, 24, 32, 2, 0, 16, 160,0, 0, 255,127,60, 3, 0, 0, 0, 0, 144,32, 4, 0, 0, 0, 0, 0, 145,65, 0, 3, 0, 40, 0, 0, 169,8, 6, 1,
+ 0, 0, 0, 0, 49, 65, 18, 1, 0, 0, 0, 0, 132,12, 14, 0, 0, 32, 0, 0, 32, 64, 4, 0, 0, 0, 0, 0, 21, 95, 12, 0, 0, 240,47, 0, 17, 75, 4, 1,
+ 0, 0, 0, 0, 16, 68, 4, 0, 0, 0, 16, 0, 1, 76, 0, 0, 0, 0, 1, 0, 16, 112,68, 0, 0, 0, 0, 0, 6, 56, 10, 0, 0, 112,0, 0, 74, 16, 4, 0,
+ 0, 0, 0, 0, 32, 32, 70, 0, 0, 0, 0, 0, 18, 69, 32, 0, 0, 0, 0, 0, 145,65, 16, 2, 0, 0, 0, 0, 129,193,34, 2, 0, 0, 0, 0, 127,255,126,1,
+ 0, 0, 0, 0, 3, 20, 5, 0, 0, 0, 0, 0, 145,64, 2, 1, 0, 0, 0, 0, 64, 32, 6, 0, 0, 0, 0, 0, 8, 40, 4, 1, 0, 0, 0, 0, 128,32, 8, 0,
+ 0, 0, 0, 0, 21, 96, 28, 0, 0, 32, 4, 0, 181,127,70, 0, 0, 0, 0, 0, 16, 65, 24, 0, 0, 0, 0, 0, 16, 32, 0, 1, 0, 0, 0, 0, 25, 73, 4, 0,
+ 0, 0, 0, 0, 4, 32, 20, 0, 0, 0, 0, 0, 196,0, 4, 0, 0, 0, 0, 0, 69, 32, 4, 0, 0, 0, 0, 0, 4, 32, 80, 0, 0, 0, 0, 0, 148,65, 8, 0,
+ 0, 0, 0, 0, 176,17, 12, 1, 0, 32, 0, 0, 1, 16, 32, 0, 0, 0, 0, 0, 215,85, 12, 0, 0, 0, 0, 0, 19, 37, 72, 0, 0, 96, 0, 0, 8, 0, 0, 0,
+ 0, 0, 0, 0, 149,101,94, 3, 0, 0, 0, 0, 70, 24, 4, 0, 0, 0, 0, 0, 122,185,14, 2, 0, 0, 0, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0, 12, 1,
+ 0, 0, 0, 0, 144,0, 2, 0, 0, 32, 0, 0, 25, 97, 26, 1, 0, 0, 0, 0, 0, 104,18, 2, 0, 112,47, 0, 4, 56, 134,1, 0, 0, 0, 0, 1, 128,12, 0,
+ 0, 0, 0, 0, 93, 104,14, 0, 0, 240,47, 0, 223,223,78, 0, 0, 96, 6, 0, 0, 0, 0, 0, 0, 32, 0, 0, 16, 80, 0, 0, 0, 0, 0, 0, 21, 64, 0, 0,
+ 0, 32, 0, 0, 16, 64, 36, 0, 0, 0, 0, 0, 91, 109,20, 0, 0, 32, 4, 0, 64, 0, 4, 0, 0, 8, 0, 0, 159,60, 78, 0, 0, 0, 0, 0, 0, 108,0, 0,
+ 0, 0, 0, 0, 17, 1, 4, 2, 0, 0, 0, 0, 1, 59, 2, 1, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 50, 96, 0, 0,
+ 0, 128,0, 0, 8, 200,24, 0, 0, 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 8, 4, 48, 0, 0, 0, 0, 0, 72, 64, 2, 0, 0, 32, 8, 0, 255,255,255,3,
+ 0, 0, 0, 0, 236,60, 63, 0, 0, 0, 0, 0, 16, 64, 8, 1, 0, 32, 0, 0, 186,152,70, 3, 0, 0, 0, 0, 16, 192,0, 0, 0, 0, 0, 0, 18, 17, 12, 1,
+ 0, 32, 0, 0, 217,96, 4, 0, 0, 0, 0, 0, 30, 121,14, 1, 0, 0, 0, 0, 128,72, 4, 0, 0, 96, 4, 0, 22, 56, 70, 0, 0, 0, 0, 0, 19, 105,30, 1,
+ 0, 0, 0, 0, 20, 12, 30, 0, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 74, 5, 10, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 17, 56, 14, 1,
+ 0, 0, 0, 0, 65, 32, 2, 0, 0, 0, 0, 0, 21, 8, 8, 0, 0, 0, 0, 0, 17, 41, 86, 0, 0, 32, 0, 0, 208,0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0,
+ 0, 0, 0, 0, 132,9, 0, 1, 0, 0, 0, 0, 32, 64, 4, 0, 0, 0, 0, 0, 192,32, 12, 0, 0, 4, 0, 0, 149,77, 18, 0, 0, 0, 0, 0, 56, 185,14, 1,
+ 0, 0, 0, 0, 18, 128,0, 0, 0, 0, 0, 0, 24, 32, 8, 0, 0, 0, 0, 0, 0, 1, 18, 0, 0, 0, 0, 0, 10, 88, 34, 0, 0, 0, 0, 0, 13, 185,4, 0,
+ 0, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 32, 8, 2, 0, 0, 0, 0, 4, 64, 32, 0, 0, 0, 0, 0, 0, 49, 34, 0, 0, 0, 0, 0, 14, 248,20, 0,
+ 0, 0, 0, 0, 145,17, 4, 0, 0, 0, 0, 0, 17, 5, 0, 0, 0, 0, 0, 0, 140,120,30, 1, 0, 0, 0, 0, 0, 208,0, 0, 0, 0, 0, 0, 32, 96, 32, 0,
+ 0, 0, 0, 0, 8, 128,130,0, 0, 0, 0, 0, 4, 8, 12, 0, 0, 0, 0, 0, 147,113,18, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 5, 4, 2, 0,
+ 0, 0, 0, 0, 20, 96, 0, 0, 0, 32, 0, 0, 75, 190,110,2, 0, 32, 0, 0, 31, 137,78, 0, 0, 0, 0, 0, 0, 4, 32, 0, 0, 0, 0, 0, 184,145,0, 0,
+ 0, 0, 0, 0, 16, 0, 12, 2, 0, 0, 1, 0, 53, 75, 26, 1, 0, 0, 0, 0, 6, 24, 18, 3, 0, 0, 0, 0, 21, 104,2, 0, 0, 0, 0, 0, 14, 0, 4, 0,
+ 0, 0, 0, 0, 95, 104,2, 0, 0, 0, 0, 0, 16, 96, 22, 0, 0, 0, 0, 0, 88, 16, 2, 0, 0, 0, 0, 0, 0, 33, 24, 1, 0, 0, 0, 0, 68, 4, 0, 0,
+ 0, 0, 0, 0, 53, 121,18, 0, 0, 0, 0, 0, 88, 32, 22, 0, 0, 0, 0, 0, 17, 104,4, 1, 0, 0, 0, 0, 177,32, 0, 0, 0, 0, 0, 0, 9, 64, 18, 0,
+ 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 104,2, 0, 0, 0, 0, 0, 45, 32, 108,2, 0, 0, 0, 0, 33, 64, 4, 0, 0, 0, 0, 0, 0, 33, 0, 2,
+ 0, 0, 0, 0, 81, 248,2, 1, 0, 0, 0, 0, 17, 32, 38, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 32, 16, 0, 1, 0, 16, 0, 0, 254,124,46, 0,
+ 0, 0, 0, 0, 129,32, 0, 0, 0, 0, 0, 0, 148,16, 12, 0, 0, 0, 0, 0, 20, 1, 6, 3, 0, 0, 0, 0, 84, 32, 34, 2, 0, 0, 0, 0, 128,97, 4, 0,
+ 0, 0, 0, 0, 21, 77, 18, 0, 0, 0, 0, 0, 0, 40, 0, 1, 0, 0, 0, 0, 255,253,126,2, 0, 0, 0, 0, 246,249,126,1, 0, 0, 0, 0, 16, 64, 18, 1,
+ 0, 0, 0, 0, 17, 72, 18, 0, 0, 0, 0, 0, 0, 0, 16, 3, 0, 0, 0, 0, 93, 64, 16, 1, 0, 0, 0, 0, 17, 200,16, 0, 0, 0, 0, 0, 81, 81, 0, 0,
+ 0, 0, 0, 0, 131,68, 0, 0, 0, 0, 0, 0, 72, 32, 10, 0, 0, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 0, 213,252,62, 1, 0, 0, 0, 0, 1, 33, 0, 0,
+ 0, 0, 0, 0, 71, 120,62, 2, 0, 0, 0, 0, 48, 0, 4, 0, 0, 0, 0, 0, 24, 64, 1, 0, 0, 0, 0, 0, 129,73, 12, 0, 0, 0, 0, 0, 17, 1, 4, 1,
+ 16, 32, 2, 0, 19, 65, 84, 1, 0, 0, 0, 0, 68, 178,38, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 32, 32, 6, 1, 0, 0, 0, 0, 66, 32, 36, 0,
+ 0, 0, 0, 0, 113,33, 22, 3, 0, 0, 0, 0, 83, 17, 4, 0, 0, 0, 0, 0, 1, 32, 4, 1, 0, 0, 0, 0, 129,1, 6, 0, 0, 0, 0, 0, 0, 41, 2, 0,
+ 0, 224,63, 0, 36, 64, 12, 0, 0, 0, 0, 0, 76, 41, 132,2, 0, 0, 0, 0, 5, 65, 0, 0, 0, 0, 0, 0, 28, 0, 4, 0, 0, 0, 0, 0, 23, 255,22, 1,
+ 0, 0, 0, 0, 64, 45, 30, 1, 0, 0, 0, 0, 21, 5, 14, 3, 0, 0, 0, 0, 16, 65, 6, 1, 0, 0, 0, 0, 89, 104,14, 3, 0, 0, 0, 0, 85, 65, 4, 1,
+ 0, 0, 0, 0, 5, 64, 20, 0, 0, 0, 0, 0, 93, 44, 30, 0, 0, 0, 0, 0, 132,4, 0, 0, 0, 0, 0, 0, 20, 2, 0, 0, 0, 0, 0, 0, 86, 185,30, 1,
+ 0, 0, 0, 0, 20, 0, 5, 2, 0, 96, 4, 0, 27, 65, 12, 1, 0, 0, 0, 0, 4, 68, 0, 0, 0, 0, 0, 0, 16, 0, 8, 1, 0, 0, 0, 0, 0, 9, 14, 2,
+ 0, 48, 0, 0, 255,255,124,3, 0, 0, 0, 0, 48, 136,26, 2, 0, 0, 0, 0, 0, 65, 16, 1, 0, 0, 0, 0, 81, 52, 30, 0, 0, 0, 0, 0, 85, 124,14, 2,
+ 0, 0, 0, 0, 12, 0, 6, 0, 0, 96, 0, 0, 149,68, 12, 2, 0, 128,57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,32, 10, 1, 0, 96, 0, 0, 16, 64, 8, 0,
+ 0, 0, 0, 0, 98, 113,28, 1, 0, 0, 0, 0, 48, 93, 0, 0, 0, 0, 0, 0, 17, 89, 22, 1, 0, 0, 0, 0, 4, 32, 12, 0, 0, 0, 0, 0, 14, 46, 2, 0,
+ 0, 0, 0, 0, 145,233,30, 0, 0, 0, 0, 0, 12, 73, 22, 2, 0, 0, 0, 0, 17, 17, 20, 0, 0, 0, 0, 0, 12, 32, 74, 1, 0, 0, 0, 0, 20, 160,2, 0,
+ 0, 0, 0, 0, 0, 168,78, 1, 0, 0, 0, 0, 28, 0, 4, 3, 0, 0, 0, 0, 16, 32, 32, 2, 0, 0, 0, 0, 32, 0, 12, 0, 0, 0, 0, 0, 160,0, 16, 0,
+ 0, 0, 0, 0, 80, 32, 8, 1, 0, 0, 0, 0, 255,253,254,1, 0, 0, 0, 0, 0, 185,36, 2, 0, 0, 0, 0, 16, 25, 0, 0, 0, 0, 0, 0, 196,60, 50, 2,
+ 0, 0, 0, 0, 10, 0, 12, 2, 0, 0, 0, 0, 93, 96, 44, 2, 0, 0, 0, 0, 8, 40, 8, 0, 0, 0, 0, 0, 86, 117,52, 1, 0, 0, 0, 0, 19, 1, 4, 0,
+ 0, 0, 0, 0, 92, 32, 4, 0, 0, 0, 0, 0, 2, 9, 4, 1, 0, 0, 0, 0, 255,255,63, 0, 0, 0, 0, 0, 8, 61, 26, 0, 0, 0, 0, 0, 0, 9, 32, 0,
+ 0, 0, 0, 0, 12, 64, 8, 0, 0, 0, 0, 0, 68, 48, 2, 0, 0, 0, 0, 0, 16, 1, 42, 0, 0, 0, 0, 0, 32, 96, 0, 0, 0, 0, 0, 0, 17, 249,0, 0,
+ 0, 0, 0, 0, 0, 1, 82, 3, 0, 0, 0, 0, 77, 24, 6, 1, 0, 0, 0, 0, 16, 0, 48, 0, 0, 0, 0, 0, 0, 195,12, 0, 0, 0, 0, 0, 0, 56, 26, 0,
+ 0, 0, 0, 0, 6, 144,8, 0, 0, 0, 0, 0, 0, 1, 10, 0, 0, 0, 0, 0, 6, 32, 4, 0, 0, 0, 0, 0, 4, 48, 8, 0, 0, 0, 0, 0, 149,91, 90, 2,
+ 0, 0, 0, 0, 20, 17, 2, 0, 0, 0, 0, 0, 72, 25, 6, 0, 0, 0, 0, 0, 16, 76, 2, 0, 0, 0, 0, 0, 0, 48, 146,0, 0, 0, 0, 0, 4, 16, 8, 0,
+ 0, 0, 0, 0, 16, 89, 2, 1, 0, 0, 0, 0, 22, 145,142,0, 0, 0, 0, 0, 89, 73, 2, 0, 0, 0, 0, 0, 0, 45, 22, 2, 0, 0, 0, 0, 4, 12, 16, 0,
+ 0, 0, 0, 0, 17, 0, 12, 1, 0, 0, 0, 0, 65, 64, 0, 1, 0, 0, 0, 0, 64, 8, 128,0, 0, 0, 0, 0, 1, 42, 2, 1, 0, 0, 0, 0, 2, 65, 0, 0,
+ 0, 0, 0, 0, 24, 160,28, 1, 0, 0, 0, 0, 21, 108,44, 2, 0, 32, 4, 0, 26, 25, 4, 0, 0, 32, 0, 0, 20, 96, 4, 0, 0, 64, 0, 0, 20, 105,30, 1,
+ 0, 0, 0, 0, 1, 8, 48, 0, 0, 32, 0, 0, 17, 129,4, 0, 0, 0, 0, 0, 155,65, 20, 1, 0, 0, 0, 0, 17, 40, 14, 1, 0, 0, 0, 0, 16, 0, 6, 1,
+ 0, 0, 0, 0, 20, 40, 14, 0, 0, 0, 0, 0, 72, 32, 8, 0, 0, 0, 0, 0, 16, 32, 16, 0, 0, 0, 0, 0, 177,64, 4, 2, 0, 0, 0, 0, 205,45, 32, 1,
+ 0, 0, 0, 0, 2, 16, 0, 2, 0, 0, 0, 0, 2, 16, 8, 0, 0, 0, 0, 0, 128,0, 128,1, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 18, 8, 0,
+ 0, 0, 0, 0, 21, 67, 26, 1, 0, 0, 0, 0, 130,60, 66, 0, 0, 0, 0, 0, 1, 16, 64, 0, 0, 0, 0, 0, 0, 136,32, 0, 0, 0, 0, 0, 32, 104,12, 0,
+ 0, 0, 0, 0, 255,255,254,3, 0, 0, 0, 0, 94, 252,46, 2, 0, 0, 0, 0, 128,64, 2, 0, 0, 0, 0, 0, 144,96, 2, 0, 0, 240,61, 0, 10, 0, 4, 0,
+ 0, 0, 0, 0, 81, 101,0, 0, 0, 0, 0, 0, 27, 73, 6, 0, 0, 0, 0, 0, 145,77, 24, 0, 0, 0, 0, 0, 0, 176,6, 0, 0, 0, 0, 0, 12, 24, 6, 1,
+ 0, 0, 0, 0, 21, 96, 0, 0, 0, 32, 4, 0, 177,89, 84, 1, 0, 0, 0, 0, 0, 40, 6, 1, 0, 32, 0, 0, 128,65, 0, 0, 0, 0, 0, 0, 0, 64, 24, 0,
+ 0, 0, 0, 0, 93, 107,70, 1, 16, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 238,188,94, 2, 0, 0, 0, 0, 16, 16, 2, 0, 0, 0, 0, 0, 208,0, 4, 0,
+ 0, 0, 0, 0, 12, 69, 4, 0, 0, 0, 0, 0, 149,153,14, 2, 0, 0, 0, 0, 0, 24, 10, 0, 0, 0, 0, 0, 10, 72, 0, 0, 0, 0, 0, 0, 16, 9, 18, 0,
+ 0, 0, 0, 0, 16, 96, 2, 1, 0, 0, 0, 0, 219,57, 70, 0, 0, 0, 0, 0, 16, 48, 0, 0, 0, 0, 0, 0, 0, 96, 6, 0, 0, 0, 0, 0, 13, 216,58, 0,
+ 0, 0, 0, 0, 0, 1, 50, 0, 0, 96, 0, 0, 0, 137,0, 0, 0, 0, 0, 0, 0, 48, 14, 0, 0, 0, 0, 0, 95, 125,92, 0, 0, 0, 0, 0, 0, 168,26, 0,
+ 0, 0, 0, 0, 16, 120,12, 1, 0, 0, 0, 0, 70, 152,4, 0, 0, 0, 0, 0, 17, 81, 68, 1, 0, 0, 0, 0, 130,16, 38, 0, 0, 0, 0, 0, 128,32, 6, 1,
+ 0, 0, 0, 0, 81, 96, 4, 0, 0, 0, 0, 0, 128,0, 4, 2, 0, 0, 0, 0, 4, 8, 8, 2, 0, 0, 0, 0, 19, 221,84, 0, 0, 224,10, 0, 66, 169,30, 2,
+ 0, 192,32, 0, 0, 0, 0, 0, 0, 128,34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 8, 2, 0, 0, 0, 0, 1, 100,0, 0, 0, 0, 0, 0, 133,1, 4, 0,
+ 0, 0, 0, 0, 74, 96, 14, 2, 0, 0, 0, 0, 1, 1, 4, 1, 0, 0, 0, 0, 0, 97, 16, 0, 0, 0, 0, 0, 17, 66, 4, 0, 0, 0, 1, 0, 12, 160,146,0,
+ 0, 0, 33, 0, 9, 0, 0, 0, 0, 0, 0, 0, 48, 8, 4, 0, 0, 0, 0, 0, 221,117,92, 0, 0, 0, 0, 0, 128,178,14, 0, 0, 0, 0, 0, 152,0, 6, 0,
+ 0, 0, 0, 0, 187,89, 84, 1, 0, 0, 0, 0, 24, 8, 6, 0, 0, 0, 0, 0, 16, 8, 32, 0, 0, 0, 0, 0, 4, 32, 28, 2, 0, 32, 0, 0, 46, 8, 38, 0,
+ 0, 0, 0, 0, 4, 32, 0, 2, 0, 0, 0, 0, 92, 184,158,0, 0, 0, 0, 0, 16, 33, 0, 1, 0, 0, 0, 0, 28, 128,0, 0, 0, 0, 0, 0, 145,201,14, 0,
+ 0, 0, 0, 0, 17, 168,2, 0, 0, 0, 0, 0, 8, 17, 0, 0, 0, 0, 0, 0, 221,77, 26, 0, 0, 0, 0, 0, 4, 36, 64, 0, 0, 128,0, 0, 16, 105,164,0,
+ 0, 8, 0, 0, 1, 1, 4, 1, 0, 0, 1, 0, 130,1, 0, 1, 0, 32, 0, 0, 78, 16, 0, 0, 0, 0, 0, 0, 255,255,31, 0, 0, 0, 0, 0, 106,184,38, 0,
+ 0, 0, 0, 0, 0, 16, 18, 0, 0, 0, 0, 0, 209,89, 86, 0, 0, 32, 0, 0, 64, 57, 62, 0, 0, 0, 0, 0, 24, 128,8, 0, 0, 0, 0, 0, 1, 48, 15, 0,
+ 0, 0, 0, 0, 100,0, 0, 0, 0, 0, 0, 0, 17, 113,64, 0, 0, 0, 0, 0, 9, 0, 38, 0, 0, 0, 0, 0, 224,0, 8, 0, 0, 0, 0, 0, 12, 0, 0, 1,
+ 0, 0, 0, 0, 0, 40, 4, 1, 0, 32, 0, 0, 0, 8, 64, 0, 0, 0, 0, 0, 2, 32, 74, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 16, 129,4, 0,
+ 0, 0, 0, 0, 64, 128,4, 0, 0, 0, 0, 0, 17, 193,24, 0, 0, 0, 0, 0, 12, 48, 2, 0, 0, 0, 0, 0, 8, 176,0, 0, 0, 0, 0, 0, 17, 73, 26, 0,
+ 0, 0, 0, 0, 40, 40, 4, 0, 0, 0, 0, 0, 32, 56, 0, 0, 0, 0, 0, 0, 6, 0, 8, 0, 0, 0, 0, 0, 133,84, 28, 2, 0, 0, 0, 0, 19, 81, 18, 1,
+ 0, 0, 0, 0, 17, 73, 176,1, 0, 32, 0, 0, 72, 0, 12, 0, 0, 0, 0, 0, 8, 32, 14, 2, 0, 0, 0, 0, 85, 65, 0, 1, 0, 96, 2, 0, 0, 8, 6, 1,
+ 0, 0, 0, 0, 1, 67, 0, 0, 0, 0, 0, 0, 18, 64, 32, 0, 0, 32, 0, 0, 8, 8, 0, 0, 0, 64, 0, 0, 0, 8, 2, 0, 0, 8, 0, 0, 253,77, 28, 0,
+ 0, 0, 0, 0, 0, 2, 128,0, 0, 0, 0, 0, 2, 16, 10, 2, 0, 0, 1, 0, 129,0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 2, 146,0,
+ 0, 0, 0, 0, 33, 34, 0, 0, 0, 0, 0, 0, 12, 0, 34, 0, 0, 0, 0, 0, 2, 48, 0, 0, 0, 0, 4, 0, 167,65, 52, 1, 0, 0, 0, 0, 16, 3, 0, 1,
+ 0, 0, 0, 0, 17, 65, 36, 0, 0, 0, 0, 0, 255,255,255,3, 0, 0, 0, 0, 2, 36, 0, 0, 0, 0, 0, 0, 19, 93, 6, 1, 0, 0, 0, 0, 16, 1, 6, 1,
+ 0, 0, 0, 0, 0, 12, 6, 1, 0, 32, 0, 64, 144,69, 28, 0, 0, 0, 0, 0, 145,9, 94, 1, 0, 32, 0, 0, 17, 67, 68, 0, 0, 0, 0, 0, 89, 65, 70, 1,
+ 0, 32, 0, 0, 10, 32, 38, 0, 0, 0, 0, 0, 202,152,14, 0, 0, 0, 0, 0, 160,45, 6, 0, 0, 96, 0, 0, 255,248,78, 0, 0, 0, 0, 0, 80, 65, 0, 1,
+ 0, 32, 0, 0, 128,0, 8, 0, 0, 0, 0, 0, 21, 112,6, 0, 0, 0, 0, 0, 88, 40, 14, 0, 0, 0, 0, 0, 144,69, 24, 0, 0, 0, 0, 0, 255,251,44, 0,
+ 0, 0, 0, 0, 5, 50, 6, 2, 0, 0, 0, 0, 4, 96, 40, 0, 0, 0, 0, 0, 177,65, 4, 1, 0, 32, 0, 0, 138,0, 4, 0, 0, 0, 0, 0, 8, 32, 2, 1,
+ 0, 0, 0, 0, 16, 32, 36, 0, 0, 96, 38, 0, 0, 0, 4, 0, 0, 0, 0, 0, 147,245,16, 2, 0, 0, 8, 0, 64, 33, 4, 0, 0, 0, 0, 0, 16, 4, 2, 0,
+ 0, 0, 4, 0, 10, 37, 6, 0, 0, 0, 0, 0, 5, 96, 8, 0, 0, 0, 0, 0, 81, 65, 21, 1, 0, 0, 0, 0, 69, 68, 5, 0, 0, 32, 0, 0, 1, 69, 16, 0,
+ 0, 32, 0, 0, 16, 0, 68, 0, 16, 32, 0, 0, 223,127,60, 3, 0, 0, 0, 0, 206,8, 122,1, 0, 32, 0, 0, 8, 64, 4, 0, 0, 0, 0, 0, 192,41, 14, 3,
+ 0, 0, 0, 0, 1, 72, 4, 0, 0, 0, 0, 0, 245,72, 4, 0, 0, 0, 0, 0, 84, 168,44, 2, 0, 0, 0, 0, 29, 1, 0, 1, 0, 32, 0, 0, 0, 40, 12, 0,
+ 0, 0, 0, 0, 224,0, 110,0, 0, 0, 0, 0, 0, 64, 48, 0, 0, 0, 0, 0, 8, 68, 0, 0, 0, 0, 1, 0, 253,68, 8, 0, 0, 0, 0, 0, 234,188,14, 2,
+ 0, 0, 0, 0, 1, 9, 0, 1, 0, 0, 0, 0, 26, 60, 68, 0, 0, 0, 0, 0, 49, 201,4, 0, 0, 0, 0, 0, 136,16, 4, 1, 0, 0, 0, 0, 125,255,110,1,
+ 0, 0, 0, 0, 24, 57, 8, 2, 0, 0, 0, 0, 17, 48, 10, 1, 0, 0, 0, 0, 93, 96, 12, 0, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 0, 0, 35, 65, 20, 1,
+ 0, 0, 0, 0, 179,65, 4, 0, 0, 0, 0, 0, 96, 48, 92, 0, 0, 0, 0, 0, 17, 40, 12, 0, 0, 0, 0, 0, 133,81, 0, 0, 0, 0, 0, 0, 149,5, 78, 0,
+ 0, 0, 0, 0, 149,97, 12, 3, 0, 0, 0, 0, 16, 0, 64, 1, 0, 0, 0, 0, 95, 61, 174,1, 0, 0, 0, 0, 136,18, 12, 0, 0, 0, 0, 0, 48, 9, 4, 0,
+ 0, 32, 0, 0, 193,9, 0, 0, 0, 0, 0, 0, 19, 48, 8, 0, 0, 0, 0, 0, 128,0, 8, 1, 0, 0, 0, 0, 4, 40, 14, 1, 0, 0, 0, 0, 217,47, 14, 0,
+ 0, 32, 0, 0, 243,137,94, 1, 0, 0, 0, 0, 0, 1, 40, 0, 0, 0, 0, 0, 19, 65, 8, 1, 0, 4, 16, 0, 89, 203,116,3, 0, 0, 0, 0, 255,189,252,3,
+ 0, 0, 0, 0, 33, 0, 8, 0, 0, 16, 0, 0, 209,105,30, 0, 0, 0, 0, 0, 0, 112,44, 0, 0, 240,63, 0, 51, 24, 4, 2, 0, 48, 6, 0, 0, 0, 0, 0,
+ 0, 240,56, 0, 0, 0, 0, 0, 0, 240,2, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 129,36, 0, 0, 0, 0, 0, 20, 68, 16, 0,
+ 0, 96, 0, 0, 32, 32, 4, 0, 0, 0, 0, 0, 80, 4, 2, 0, 0, 0, 0, 0, 72, 128,0, 0, 0, 0, 0, 0, 154,97, 4, 1, 0, 0, 0, 0, 223,191,252,1,
+ 0, 0, 0, 0, 48, 41, 4, 0, 0, 96, 0, 0, 87, 73, 76, 1, 0, 0, 0, 0, 16, 80, 4, 0, 0, 0, 0, 0, 26, 8, 12, 0, 0, 0, 0, 0, 4, 96, 8, 0,
+ 0, 0, 0, 0, 158,32, 4, 0, 0, 0, 0, 0, 17, 25, 0, 1, 0, 32, 0, 0, 16, 49, 6, 0, 16, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 114,184,36, 2,
+ 0, 0, 0, 0, 8, 0, 38, 0, 0, 0, 0, 0, 18, 0, 12, 0, 0, 0, 0, 0, 17, 36, 4, 0, 0, 0, 0, 0, 17, 9, 68, 1, 0, 0, 0, 0, 0, 129,4, 0,
+ 0, 0, 0, 0, 140,4, 4, 0, 0, 8, 0, 0, 0, 40, 78, 0, 0, 32, 16, 0, 0, 8, 4, 0, 0, 0, 16, 0, 214,253,126,3, 0, 0, 0, 0, 194,64, 16, 0,
+ 0, 0, 0, 0, 81, 5, 0, 0, 0, 0, 0, 0, 2, 32, 12, 1, 0, 0, 0, 0, 10, 205,4, 2, 0, 0, 0, 0, 16, 69, 12, 0, 0, 0, 0, 0, 66, 1, 4, 0,
+ 0, 0, 0, 0, 222,189,62, 2, 0, 0, 0, 0, 144,16, 0, 0, 0, 0, 0, 0, 97, 1, 4, 0, 0, 0, 4, 0, 215,56, 68, 0, 0, 32, 0, 0, 16, 0, 12, 0,
+ 0, 0, 0, 0, 4, 1, 28, 0, 0, 0, 0, 0, 59, 57, 68, 0, 0, 0, 8, 0, 137,216,8, 0, 0, 0, 0, 0, 148,44, 130,1, 0, 0, 0, 0, 16, 2, 0, 1,
+ 0, 0, 0, 0, 255,253,239,3, 0, 0, 0, 0, 9, 9, 4, 0, 0, 0, 0, 0, 151,105,22, 3, 0, 0, 0, 0, 4, 41, 6, 1, 0, 0, 0, 0, 5, 10, 6, 1,
+ 0, 0, 0, 0, 21, 104,28, 0, 0, 0, 0, 0, 0, 33, 118,0, 0, 0, 0, 0, 4, 0, 96, 0, 0, 0, 0, 0, 4, 1, 1, 0, 0, 0, 0, 0, 149,76, 10, 0,
+ 0, 32, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 97, 4, 1, 0, 0, 0, 0, 0, 49, 10, 0, 0, 0, 0, 0, 0, 32, 96, 0, 0, 32, 0, 0, 146,153,76, 1,
+ 0, 32, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 16, 1, 28, 0, 0, 0, 0, 0, 89, 57, 20, 3, 0, 96, 4, 0, 4, 60, 6, 0, 0, 0, 0, 0, 5, 36, 0, 0,
+ 0, 0, 0, 0, 6, 57, 78, 1, 0, 0, 0, 0, 25, 68, 68, 0, 0, 0, 0, 0, 0, 68, 6, 0, 0, 0, 0, 0, 49, 97, 26, 0, 0, 0, 0, 0, 19, 121,16, 1,
+ 0, 0, 0, 0, 16, 12, 10, 1, 0, 0, 0, 0, 201,81, 82, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0, 0, 0, 0, 64, 44, 12, 0, 0, 0, 0, 0, 145,9, 0, 0,
+ 0, 0, 0, 0, 64, 36, 6, 0, 0, 176,0, 0, 10, 56, 14, 1, 0, 128,0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 31, 93, 80, 1,
+ 0, 0, 0, 0, 4, 36, 10, 1, 0, 0, 0, 0, 16, 20, 0, 1, 0, 0, 0, 0, 9, 32, 6, 0, 0, 0, 0, 0, 59, 221,0, 0, 0, 0, 0, 0, 64, 33, 6, 1,
+ 0, 0, 0, 0, 51, 72, 4, 0, 0, 0, 0, 0, 16, 5, 0, 1, 0, 0, 0, 0, 144,9, 12, 1, 0, 0, 4, 0, 255,253,126,3, 0, 0, 0, 0, 192,22, 96, 1,
+ 0, 64, 0, 0, 72, 16, 4, 0, 0, 0, 0, 0, 16, 96, 0, 1, 0, 0, 0, 0, 65, 0, 32, 1, 0, 0, 0, 0, 0, 8, 5, 0, 0, 0, 0, 0, 192,16, 96, 0,
+ 0, 0, 0, 0, 66, 8, 0, 0, 0, 0, 0, 0, 64, 32, 32, 0, 0, 0, 0, 0, 0, 81, 32, 0, 0, 0, 0, 0, 181,81, 72, 0, 0, 0, 0, 0, 16, 72, 2, 2,
+ 0, 0, 0, 0, 8, 176,4, 0, 0, 0, 0, 0, 17, 201,18, 0, 0, 32, 0, 0, 64, 0, 14, 1, 0, 0, 0, 0, 4, 0, 134,0, 0, 0, 0, 0, 255,253,94, 1,
+ 0, 0, 0, 0, 14, 61, 12, 2, 0, 0, 0, 0, 16, 168,142,0, 0, 0, 0, 0, 85, 96, 4, 0, 0, 0, 0, 0, 8, 8, 0, 1, 0, 0, 0, 0, 4, 168,20, 0,
+ 0, 0, 0, 0, 4, 72, 8, 0, 0, 0, 0, 0, 149,69, 28, 2, 0, 0, 0, 0, 2, 36, 8, 0, 0, 0, 0, 0, 0, 44, 8, 0, 0, 0, 0, 0, 18, 81, 0, 1,
+ 0, 96, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 148,5, 14, 1, 0, 32, 0, 0, 16, 81, 0, 1, 0, 0, 0, 0, 9, 65, 0, 0, 0, 0, 0, 0, 25, 89, 0, 1,
+ 0, 0, 0, 0, 32, 4, 32, 0, 0, 0, 0, 0, 64, 32, 34, 0, 0, 0, 0, 0, 1, 36, 0, 0, 0, 0, 0, 0, 127,61, 14, 0, 0, 0, 0, 0, 144,4, 16, 0,
+ 0, 0, 0, 0, 8, 33, 142,0, 0, 96, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 17, 68, 128,0, 0, 0, 0, 0, 53, 205,10, 0, 0, 0, 0, 0, 17, 73, 208,0,
+ 0, 0, 0, 0, 25, 32, 16, 0, 0, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 0, 72, 4, 66, 0, 0, 0, 0, 0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 97, 0, 0,
+ 16, 228,38, 0, 255,255,255,3, 0, 0, 0, 0, 224,88, 0, 0, 0, 0, 0, 0, 0, 128,0, 2, 0, 0, 2, 0, 126,188,62, 3, 0, 0, 0, 0, 88, 1, 4, 1,
+ 0, 224,46, 0, 16, 112,12, 0, 0, 112,2, 0, 0, 64, 8, 0, 0, 0, 0, 0, 25, 9, 0, 1, 0, 0, 0, 0, 249,185,110,1, 0, 0, 0, 0, 136,32, 0, 0,
+ 0, 0, 0, 0, 216,73, 4, 1, 0, 128,0, 0, 144,1, 4, 0, 0, 0, 0, 0, 128,9, 4, 0, 0, 32, 0, 0, 51, 24, 69, 1, 0, 0, 0, 0, 153,77, 8, 1,
+ 0, 0, 0, 0, 8, 24, 4, 1, 0, 8, 0, 0, 210,217,102,0, 0, 0, 0, 0, 10, 40, 64, 0, 0, 32, 0, 0, 16, 16, 0, 0, 0, 32, 0, 0, 64, 130,2, 0,
+ 0, 0, 0, 0, 149,209,4, 0, 0, 96, 4, 0, 17, 32, 2, 0, 0, 0, 0, 0, 27, 105,6, 1, 0, 0, 0, 0, 12, 32, 18, 1, 0, 0, 0, 0, 17, 1, 68, 1,
+ 0, 0, 0, 0, 0, 41, 6, 1, 0, 0, 0, 0, 146,8, 78, 0, 0, 0, 0, 0, 128,192,8, 0, 0, 0, 0, 0, 1, 40, 4, 0, 0, 0, 0, 0, 149,125,92, 2,
+ 0, 0, 0, 0, 64, 56, 32, 0, 0, 0, 0, 0, 72, 32, 0, 2, 0, 0, 1, 0, 20, 9, 4, 0, 0, 0, 0, 0, 179,89, 6, 0, 0, 0, 0, 0, 8, 56, 12, 0,
+ 0, 0, 0, 0, 2, 72, 0, 0, 0, 96, 32, 0, 8, 0, 4, 0, 0, 0, 0, 0, 34, 56, 78, 2, 0, 0, 0, 0, 16, 65, 16, 1, 0, 0, 0, 0, 29, 0, 5, 0,
+ 0, 0, 0, 0, 24, 176,2, 0, 0, 36, 0, 0, 223,121,126,3, 0, 224,4, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 60, 134,1, 0, 0, 0, 0, 18, 25, 68, 0,
+ 0, 0, 0, 0, 160,0, 12, 0, 0, 0, 0, 0, 151,25, 64, 1, 0, 0, 0, 0, 172,24, 78, 0, 0, 0, 0, 0, 119,36, 14, 2, 0, 0, 0, 0, 0, 5, 8, 0,
+ 0, 0, 0, 0, 67, 64, 0, 0, 0, 0, 0, 0, 65, 16, 16, 0, 0, 0, 0, 0, 12, 32, 4, 0, 0, 4, 0, 0, 17, 64, 8, 0, 0, 0, 0, 0, 5, 8, 8, 0,
+ 0, 96, 0, 0, 20, 65, 4, 0, 0, 32, 0, 0, 0, 64, 36, 0, 0, 0, 0, 0, 28, 236,78, 1, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 69, 4, 0,
+ 0, 0, 0, 0, 51, 9, 26, 1, 0, 0, 0, 0, 17, 105,18, 1, 0, 0, 0, 0, 4, 48, 2, 0, 0, 0, 0, 0, 84, 32, 0, 0, 0, 0, 0, 0, 243,121,114,1,
+ 0, 0, 0, 0, 147,249,6, 0, 0, 0, 0, 0, 10, 48, 10, 0, 0, 0, 0, 0, 8, 8, 8, 2, 0, 0, 0, 0, 4, 57, 46, 0, 0, 32, 0, 0, 0, 68, 0, 0,
+ 0, 0, 0, 0, 64, 16, 12, 0, 0, 0, 0, 0, 144,121,30, 0, 0, 0, 0, 0, 72, 48, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 0, 0, 0, 0, 208,29, 0, 0,
+ 0, 0, 0, 0, 34, 0, 0, 2, 0, 0, 0, 0, 254,62, 46, 0, 0, 0, 0, 0, 146,121,4, 0, 0, 0, 0, 0, 18, 16, 0, 0, 0, 0, 0, 0, 3, 24, 0, 0,
+ 0, 0, 0, 0, 145,96, 8, 0, 0, 0, 0, 0, 32, 0, 36, 0, 0, 0, 16, 0, 178,1, 4, 1, 0, 0, 0, 0, 16, 120,0, 0, 0, 0, 0, 0, 27, 0, 8, 0,
+ 0, 0, 0, 0, 17, 48, 2, 0, 0, 0, 0, 0, 253,64, 76, 0, 0, 0, 0, 0, 1, 129,8, 0, 0, 0, 0, 0, 20, 9, 0, 0, 0, 0, 0, 0, 151,121,12, 0,
+ 0, 0, 0, 0, 131,16, 12, 2, 0, 0, 0, 0, 145,32, 0, 2, 0, 0, 0, 0, 219,61, 76, 0, 0, 128,2, 0, 255,255,127,3, 0, 0, 0, 0, 206,177,76, 3,
+ 0, 0, 0, 0, 128,0, 22, 2, 0, 0, 0, 0, 0, 13, 12, 0, 0, 0, 0, 0, 111,244,118,1, 0, 0, 0, 0, 0, 48, 4, 2, 0, 0, 0, 0, 16, 65, 6, 0,
+ 0, 32, 0, 0, 29, 184,76, 0, 0, 0, 0, 0, 27, 69, 0, 0, 0, 0, 0, 0, 16, 81, 15, 0, 0, 0, 0, 0, 8, 2, 6, 0, 0, 0, 0, 0, 253,114,140,3,
+ 0, 0, 0, 0, 81, 64, 8, 0, 0, 0, 0, 0, 145,65, 12, 2, 0, 32, 0, 0, 2, 40, 34, 0, 0, 32, 0, 0, 1, 0, 8, 0, 0, 0, 0, 0, 149,65, 12, 0,
+ 0, 0, 0, 0, 29, 113,70, 3, 0, 0, 0, 0, 234,48, 14, 1, 0, 32, 0, 0, 11, 64, 68, 0, 0, 0, 0, 0, 10, 20, 12, 1, 0, 0, 0, 0, 16, 0, 18, 1,
+ 0, 0, 0, 0, 53, 224,12, 0, 0, 0, 0, 0, 146,0, 76, 0, 0, 0, 0, 0, 16, 64, 64, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, 2, 80, 72, 0,
+ 0, 0, 0, 0, 147,65, 69, 0, 0, 0, 0, 0, 172,161,19, 1, 0, 0, 0, 0, 147,245,72, 1, 0, 0, 0, 0, 16, 8, 4, 1, 0, 0, 0, 0, 1, 32, 98, 1,
+ 0, 0, 0, 0, 17, 96, 2, 0, 0, 0, 0, 0, 144,65, 2, 2, 0, 0, 0, 0, 13, 16, 4, 0, 0, 0, 0, 0, 0, 32, 6, 1, 0, 0, 0, 0, 1, 0, 28, 0,
+ 0, 32, 44, 0, 128,128,4, 0, 0, 0, 0, 0, 145,65, 0, 1, 0, 0, 0, 0, 19, 65, 0, 1, 0, 0, 0, 0, 255,221,30, 3, 0, 0, 0, 0, 12, 185,6, 1,
+ 0, 0, 0, 0, 5, 64, 16, 0, 0, 128,0, 0, 17, 73, 30, 0, 0, 0, 0, 0, 69, 4, 2, 0, 0, 0, 0, 0, 8, 8, 2, 2, 0, 0, 0, 0, 64, 9, 12, 1,
+ 0, 0, 0, 0, 0, 16, 10, 0, 0, 0, 0, 0, 8, 8, 20, 0, 0, 0, 0, 0, 64, 40, 4, 0, 0, 0, 0, 0, 5, 40, 14, 0, 0, 0, 0, 0, 24, 1, 0, 1,
+ 0, 0, 0, 0, 65, 9, 28, 1, 0, 0, 0, 0, 68, 44, 14, 0, 0, 96, 0, 0, 3, 0, 4, 0, 0, 112,0, 0, 0, 42, 18, 0, 0, 0, 0, 0, 8, 9, 12, 0,
+ 0, 0, 0, 0, 20, 0, 12, 0, 0, 0, 0, 0, 64, 36, 10, 0, 0, 0, 0, 0, 177,73, 14, 0, 0, 0, 0, 0, 0, 8, 66, 0, 0, 0, 0, 0, 128,8, 64, 0,
+ 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 6, 48, 0, 0, 0, 0, 0, 0, 145,77, 18, 1, 0, 0, 0, 0, 0, 152,22, 0, 0, 0, 0, 0, 16, 17, 2, 0,
+ 0, 0, 0, 0, 8, 16, 18, 0, 0, 0, 0, 0, 0, 64, 16, 1, 0, 0, 0, 0, 81, 201,22, 3, 0, 0, 0, 0, 13, 16, 2, 0, 0, 32, 0, 0, 2, 8, 4, 0,
+ 0, 0, 0, 0, 5, 32, 40, 0, 0, 0, 0, 0, 76, 176,78, 0, 0, 0, 0, 0, 160,128,4, 0, 0, 0, 0, 0, 9, 57, 6, 0, 0, 0, 0, 0, 17, 0, 0, 3,
+ 0, 0, 0, 0, 9, 16, 6, 0, 0, 0, 0, 0, 187,57, 87, 0, 0, 0, 0, 0, 72, 0, 2, 0, 0, 0, 0, 0, 2, 56, 14, 0, 0, 0, 0, 0, 130,28, 4, 0,
+ 0, 0, 0, 0, 0, 80, 8, 0, 0, 224,0, 0, 24, 0, 4, 0, 0, 0, 0, 0, 162,20, 78, 1, 0, 32, 0, 0, 0, 16, 64, 0, 0, 0, 0, 0, 77, 0, 196,0,
+ 0, 96, 0, 0, 0, 0, 8, 0, 0, 32, 0, 0, 17, 17, 4, 0, 0, 0, 0, 0, 64, 8, 36, 0, 0, 0, 0, 0, 4, 4, 8, 0, 0, 0, 0, 0, 68, 56, 30, 0,
+ 0, 0, 0, 0, 1, 65, 2, 0, 0, 0, 0, 0, 68, 8, 1, 0, 0, 32, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 148,89, 88, 2, 0, 0, 0, 0, 0, 56, 0, 1,
+ 0, 0, 0, 0, 145,73, 70, 2, 0, 0, 0, 0, 2, 33, 0, 0, 0, 96, 0, 0, 22, 185,12, 0, 0, 0, 0, 0, 8, 161,2, 0, 0, 0, 0, 0, 17, 164,4, 0,
+ 0, 0, 0, 0, 17, 64, 6, 0, 0, 0, 0, 0, 100,101,44, 0, 0, 0, 0, 0, 149,201,124,0, 0, 0, 0, 0, 0, 16, 26, 0, 0, 0, 0, 0, 0, 16, 36, 0,
+ 0, 0, 0, 0, 108,184,14, 2, 0, 0, 0, 0, 4, 64, 8, 0, 0, 0, 0, 0, 4, 40, 129,0, 0, 0, 0, 0, 128,8, 12, 0, 0, 0, 0, 0, 0, 32, 12, 2,
+ 0, 0, 0, 0, 8, 0, 20, 0, 0, 0, 0, 0, 137,168,44, 0, 0, 0, 0, 0, 16, 144,4, 0, 0, 0, 0, 0, 255,253,254,3, 0, 0, 0, 0, 76, 36, 14, 2,
+ 0, 0, 0, 0, 16, 81, 24, 0, 0, 0, 0, 0, 49, 121,0, 0, 0, 0, 0, 0, 15, 37, 108,2, 0, 0, 0, 0, 128,0, 2, 2, 0, 0, 0, 0, 33, 64, 16, 0,
+ 0, 0, 0, 0, 92, 100,173,0, 0, 32, 36, 0, 149,4, 4, 0, 0, 0, 0, 0, 17, 1, 64, 0, 0, 0, 0, 0, 2, 32, 66, 0, 0, 128,0, 0, 17, 65, 4, 2,
+ 0, 0, 0, 0, 200,57, 12, 0, 0, 0, 0, 0, 0, 32, 8, 2, 0, 0, 0, 0, 8, 0, 74, 0, 0, 0, 0, 0, 149,132,8, 0, 0, 0, 0, 0, 16, 24, 0, 2,
+ 0, 0, 0, 0, 0, 36, 8, 0, 0, 0, 0, 0, 192,1, 20, 0, 0, 64, 0, 0, 255,253,79, 2, 0, 0, 0, 0, 0, 40, 82, 0, 0, 0, 0, 0, 40, 186,10, 0,
+ 0, 32, 0, 0, 24, 16, 4, 0, 0, 0, 0, 0, 84, 128,6, 0, 0, 0, 0, 0, 19, 17, 2, 0, 0, 0, 0, 0, 18, 40, 42, 0, 0, 0, 0, 0, 8, 64, 2, 0,
+ 0, 0, 0, 0, 4, 129,8, 2, 0, 0, 0, 0, 2, 16, 32, 0, 0, 0, 0, 0, 19, 92, 0, 0, 0, 0, 0, 0, 0, 144,2, 0, 0, 0, 0, 0, 25, 65, 18, 0,
+ 0, 0, 0, 0, 16, 40, 66, 0, 0, 0, 0, 0, 0, 129,8, 0, 0, 0, 0, 0, 17, 105,2, 1, 0, 0, 0, 0, 76, 41, 2, 0, 0, 0, 0, 0, 4, 42, 2, 1,
+ 0, 0, 0, 0, 0, 96, 10, 0, 0, 196,0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 97, 22, 0, 0, 4, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 56, 50, 0,
+ 0, 0, 0, 0, 145,125,0, 0, 0, 0, 0, 0, 32, 17, 2, 1, 0, 0, 0, 0, 0, 168,135,0, 0, 0, 0, 0, 84, 32, 128,0, 0, 0, 0, 0, 149,73, 82, 1,
+ 0, 0, 0, 0, 14, 57, 14, 0, 0, 0, 0, 0, 114,168,38, 1, 0, 0, 0, 0, 195,72, 4, 0, 0, 0, 0, 0, 4, 164,2, 1, 0, 8, 0, 0, 181,109,62, 3,
+ 0, 0, 0, 0, 0, 40, 72, 0, 0, 4, 0, 0, 144,1, 4, 0, 0, 0, 0, 0, 17, 113,2, 1, 0, 32, 0, 0, 16, 64, 0, 0, 0, 0, 0, 0, 16, 33, 12, 0,
+ 0, 0, 0, 0, 144,112,5, 0, 16, 0, 0, 0, 2, 41, 64, 0, 0, 0, 0, 0, 127,188,238,0, 0, 0, 0, 0, 0, 36, 130,0, 0, 0, 0, 0, 21, 64, 16, 0,
+ 0, 0, 0, 0, 145,1, 8, 0, 0, 224,3, 0, 19, 65, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 238,184,44, 2, 0, 8, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0, 20, 192,8, 0, 0, 32, 0, 0, 16, 68, 8, 0, 0, 0, 0, 0, 145,64, 6, 0, 0, 0, 8, 0, 211,75, 2, 0, 0, 0, 0, 0, 140,168,14, 0,
+ 0, 32, 0, 0, 92, 69, 4, 0, 0, 0, 0, 0, 4, 96, 4, 2, 0, 0, 0, 0, 0, 68, 40, 0, 0, 0, 0, 0, 48, 137,12, 0, 0, 0, 0, 0, 32, 9, 20, 0,
+ 16, 0, 0, 0, 223,57, 79, 1, 0, 0, 0, 0, 128,64, 12, 2, 0, 32, 0, 0, 10, 80, 72, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 0, 0, 0, 29, 40, 12, 0,
+ 0, 32, 4, 0, 8, 72, 4, 0, 0, 0, 0, 0, 4, 44, 2, 1, 0, 0, 0, 0, 1, 0, 48, 0, 0, 0, 0, 0, 19, 65, 73, 1, 0, 128,0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 183,249,153,0, 0, 0, 0, 0, 68, 56, 6, 0, 0, 0, 0, 0, 16, 136,6, 0, 0, 0, 0, 0, 68, 24, 14, 0, 0, 0, 0, 0, 80, 8, 12, 0,
+ 0, 0, 0, 0, 76, 160,14, 0, 0, 0, 0, 0, 12, 40, 2, 0, 0, 0, 0, 0, 8, 1, 6, 0, 0, 96, 0, 0, 16, 73, 64, 0, 0, 0, 0, 0, 8, 0, 28, 0,
+ 0, 160,0, 0, 76, 250,44, 0, 0, 0, 0, 0, 10, 144,0, 0, 0, 0, 0, 0, 87, 184,30, 0, 0, 0, 0, 0, 110,137,70, 0, 0, 0, 0, 0, 0, 193,8, 0,
+ 0, 0, 0, 0, 25, 153,2, 2, 0, 0, 0, 0, 4, 12, 3, 0, 64, 244,54, 0, 255,255,255,3, 0, 192,0, 0, 22, 0, 0, 0, 0, 64, 3, 0, 32, 0, 0, 0,
+ 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 255,191,255,3, 0, 0, 0, 0, 51, 73, 18, 1, 0, 0, 0, 0, 17, 96, 20, 0, 0, 0, 0, 0, 0, 9, 0, 2,
+ 0, 0, 0, 0, 4, 4, 1, 2, 0, 0, 0, 0, 149,5, 28, 0, 0, 64, 0, 0, 42, 120,14, 1, 0, 0, 0, 0, 18, 65, 20, 0, 0, 0, 0, 0, 25, 105,6, 0,
+ 0, 0, 0, 0, 8, 41, 6, 0, 0, 0, 0, 0, 132,32, 14, 0, 0, 0, 0, 0, 1, 33, 0, 1, 0, 0, 0, 0, 81, 105,20, 0, 0, 0, 0, 0, 1, 8, 5, 0,
+ 0, 0, 0, 0, 27, 43, 6, 1, 0, 0, 0, 0, 138,4, 72, 0, 0, 0, 0, 0, 93, 104,174,2, 0, 0, 0, 0, 24, 73, 28, 0, 0, 0, 0, 0, 247,185,126,1,
+ 0, 0, 0, 0, 5, 64, 8, 0, 0, 96, 0, 0, 32, 8, 4, 1, 0, 0, 0, 0, 8, 160,6, 0, 0, 0, 0, 0, 223,93, 124,2, 0, 0, 0, 0, 164,33, 6, 0,
+ 0, 16, 0, 0, 0, 32, 2, 0, 0, 240,15, 0, 16, 1, 6, 0, 0, 0, 0, 0, 40, 64, 0, 0, 0, 0, 0, 0, 0, 32, 14, 1, 0, 0, 0, 0, 130,0, 12, 0,
+ 0, 8, 32, 0, 27, 65, 20, 0, 0, 0, 0, 0, 68, 0, 192,0, 0, 32, 0, 0, 65, 0, 4, 0, 0, 0, 0, 0, 22, 32, 4, 0, 0, 0, 0, 0, 0, 160,80, 0,
+ 0, 224,0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 128,8, 8, 0, 0, 0, 0, 0, 16, 65, 20, 2, 0, 0, 0, 0, 19, 65, 16, 1, 0, 0, 0, 0, 69, 40, 12, 0,
+ 0, 48, 2, 0, 64, 0, 0, 0, 0, 0, 0, 0, 127,111,28, 2, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 128,9, 0, 1, 0, 0, 0, 0, 16, 81, 20, 0,
+ 0, 0, 0, 0, 17, 65, 2, 2, 0, 32, 0, 0, 66, 1, 20, 2, 0, 0, 0, 0, 0, 17, 8, 1, 0, 32, 24, 0, 0, 8, 0, 0, 0, 0, 8, 0, 255,127,127,3,
+ 0, 0, 0, 0, 206,91, 64, 2, 0, 0, 0, 0, 152,40, 78, 0, 0, 0, 0, 0, 27, 48, 4, 0, 0, 0, 0, 0, 209,64, 0, 0, 0, 0, 0, 0, 147,9, 100,1,
+ 0, 0, 0, 0, 147,0, 84, 0, 0, 0, 0, 0, 0, 8, 6, 1, 0, 0, 0, 0, 192,46, 18, 0, 0, 0, 0, 0, 4, 73, 8, 0, 0, 0, 0, 0, 176,17, 6, 0,
+ 0, 0, 0, 0, 151,77, 28, 1, 0, 0, 0, 0, 5, 96, 4, 0, 0, 0, 0, 0, 18, 41, 0, 0, 0, 32, 0, 0, 62, 249,4, 0, 0, 0, 0, 0, 255,223,94, 2,
+ 0, 0, 0, 0, 128,8, 4, 0, 0, 16, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 168,0, 4, 0, 0, 0, 0, 0, 17, 65, 2, 1, 0, 32, 0, 0, 144,9, 4, 0,
+ 0, 0, 0, 0, 196,16, 0, 0, 0, 0, 0, 0, 94, 168,175,0, 0, 0, 0, 0, 16, 73, 16, 0, 0, 0, 0, 0, 140,13, 12, 0, 0, 0, 0, 0, 5, 1, 8, 0,
+ 0, 0, 0, 0, 20, 36, 12, 0, 0, 0, 0, 0, 0, 81, 16, 0, 0, 0, 0, 0, 0, 8, 2, 2, 0, 192,31, 0, 0, 0, 4, 0, 0, 0, 0, 0, 22, 44, 38, 2,
+ 0, 0, 0, 0, 21, 44, 6, 0, 0, 0, 0, 0, 71, 160,0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 161,51, 22, 0, 16, 224,0, 0, 255,127,127,3,
+ 0, 0, 0, 0, 96, 56, 62, 2, 0, 0, 0, 0, 176,121,4, 1, 0, 0, 0, 0, 128,0, 20, 0, 0, 32, 0, 0, 16, 65, 68, 1, 0, 68, 0, 0, 2, 72, 18, 0,
+ 0, 0, 0, 0, 145,4, 24, 0, 0, 0, 0, 0, 25, 73, 22, 0, 0, 0, 0, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 8, 194,2, 0, 0, 0, 0, 81, 77, 0, 0,
+ 0, 0, 0, 0, 21, 69, 0, 0, 0, 0, 0, 0, 138,60, 14, 2, 0, 0, 0, 0, 18, 17, 68, 0, 0, 0, 0, 0, 81, 17, 4, 1, 0, 0, 0, 0, 81, 72, 16, 0,
+ 0, 0, 0, 0, 86, 62, 14, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 90, 16, 12, 0, 0, 0, 0, 0, 144,32, 0, 1, 0, 0, 0, 0, 95, 221,60, 2,
+ 0, 0, 0, 0, 147,180,12, 0, 0, 0, 0, 0, 6, 236,148,2, 0, 0, 0, 0, 25, 64, 8, 0, 0, 96, 0, 0, 4, 0, 132,0, 0, 0, 0, 0, 145,113,4, 0,
+ 0, 0, 0, 0, 128,0, 14, 0, 0, 0, 0, 0, 8, 48, 2, 2, 0, 0, 0, 0, 144,69, 8, 0, 0, 0, 0, 0, 144,112,20, 3, 0, 0, 0, 0, 17, 81, 18, 0,
+ 0, 0, 0, 0, 94, 125,78, 0, 0, 0, 0, 0, 16, 9, 10, 0, 0, 0, 0, 0, 4, 9, 6, 0, 0, 0, 0, 0, 16, 8, 140,0, 0, 0, 0, 0, 5, 20, 132,0,
+ 0, 0, 0, 0, 0, 24, 70, 1, 0, 0, 0, 0, 64, 48, 64, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 95, 127,62, 0,
+ 0, 0, 0, 0, 4, 56, 2, 0, 0, 0, 0, 0, 8, 1, 2, 0, 0, 0, 0, 0, 10, 41, 10, 0, 0, 0, 0, 0, 68, 0, 8, 2, 0, 0, 0, 0, 16, 0, 32, 2,
+ 0, 0, 0, 0, 155,65, 76, 1, 0, 0, 0, 0, 8, 104,8, 0, 0, 0, 0, 0, 4, 32, 144,2, 0, 0, 0, 0, 68, 105,10, 2, 0, 224,3, 0, 32, 96, 4, 0,
+ 0, 0, 0, 0, 17, 64, 8, 0, 0, 0, 0, 0, 26, 41, 10, 1, 0, 0, 0, 0, 86, 120,12, 0, 0, 0, 0, 0, 20, 56, 48, 0, 0, 0, 0, 0, 100,16, 4, 0,
+ 0, 0, 0, 0, 2, 17, 0, 0, 0, 0, 0, 0, 64, 12, 8, 0, 0, 0, 0, 0, 148,156,28, 0, 0, 0, 0, 0, 149,33, 30, 2, 0, 16, 4, 0, 16, 1, 0, 0,
+ 0, 0, 0, 0, 128,88, 4, 0, 0, 0, 0, 0, 28, 8, 14, 0, 0, 0, 0, 0, 2, 0, 68, 0, 0, 0, 0, 0, 144,40, 0, 2, 0, 16, 0, 0, 112,0, 36, 0,
+ 0, 0, 0, 0, 136,34, 8, 0, 0, 0, 0, 0, 6, 41, 114,0, 0, 32, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 255,254,255,2, 0, 0, 0, 0, 4, 40, 12, 0,
+ 0, 0, 0, 0, 129,12, 0, 0, 0, 0, 0, 0, 19, 64, 26, 0, 0, 0, 0, 0, 2, 48, 20, 0, 0, 0, 0, 0, 149,68, 24, 0, 0, 0, 0, 0, 27, 8, 12, 0,
+ 0, 0, 0, 0, 0, 40, 14, 0, 0, 0, 0, 0, 0, 64, 40, 0, 0, 0, 44, 0, 1, 0, 4, 0, 0, 0, 0, 0, 89, 72, 20, 0, 0, 0, 0, 0, 110,40, 14, 0,
+ 0, 32, 0, 0, 144,17, 76, 0, 0, 0, 0, 0, 85, 80, 6, 1, 0, 0, 0, 0, 17, 97, 8, 0, 0, 0, 0, 0, 213,89, 60, 0, 0, 0, 0, 0, 0, 64, 12, 1,
+ 0, 32, 0, 0, 20, 65, 4, 0, 0, 0, 16, 0, 136,8, 4, 0, 0, 0, 0, 0, 211,221,12, 3, 0, 0, 0, 0, 0, 52, 14, 0, 0, 0, 0, 0, 71, 240,16, 0,
+ 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 16, 193,4, 0, 0, 0, 0, 0, 145,209,4, 1, 0, 0, 0, 0, 8, 0, 14, 1, 0, 0, 0, 0, 16, 224,0, 0,
+ 0, 0, 0, 0, 144,1, 4, 0, 0, 0, 0, 0, 49, 81, 68, 0, 0, 0, 0, 0, 32, 48, 12, 0, 0, 0, 0, 0, 144,64, 2, 0, 0, 0, 0, 0, 127,109,94, 2,
+ 0, 0, 0, 0, 64, 56, 16, 2, 0, 32, 1, 0, 56, 9, 4, 0, 0, 0, 0, 0, 17, 24, 16, 1, 0, 0, 0, 0, 145,89, 20, 0, 0, 32, 0, 0, 106,120,14, 1,
+ 0, 32, 0, 0, 146,177,12, 0, 0, 0, 0, 0, 69, 32, 12, 2, 0, 0, 0, 0, 18, 8, 4, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 17, 89, 4, 0,
+ 0, 0, 0, 0, 104,56, 2, 1, 0, 0, 0, 0, 84, 40, 4, 0, 0, 0, 0, 0, 22, 0, 8, 0, 0, 0, 0, 0, 4, 32, 14, 0, 0, 0, 0, 0, 25, 221,28, 0,
+ 0, 32, 44, 0, 239,185,76, 0, 0, 0, 0, 0, 1, 73, 18, 0, 0, 0, 0, 0, 0, 8, 20, 0, 0, 0, 0, 0, 1, 16, 128,1, 0, 0, 0, 0, 17, 41, 84, 0,
+ 0, 34, 0, 0, 195,72, 12, 0, 0, 0, 0, 0, 213,13, 12, 0, 0, 0, 0, 0, 147,24, 0, 0, 0, 32, 32, 0, 246,253,12, 1, 0, 0, 0, 0, 4, 1, 16, 0,
+ 0, 0, 0, 0, 0, 32, 64, 1, 0, 0, 0, 0, 9, 8, 6, 1, 0, 32, 0, 0, 0, 17, 4, 1, 0, 0, 0, 0, 48, 9, 20, 0, 0, 0, 0, 0, 213,100,14, 2,
+ 0, 0, 0, 0, 17, 67, 4, 1, 0, 0, 0, 0, 209,190,70, 1, 0, 0, 2, 0, 37, 5, 6, 0, 0, 0, 0, 0, 18, 1, 0, 2, 0, 32, 0, 0, 24, 96, 0, 1,
+ 0, 0, 16, 0, 66, 80, 10, 0, 0, 0, 0, 0, 8, 1, 2, 1, 0, 32, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0, 155,65, 56, 1, 0, 4, 0, 0, 207,181,255,1,
+ 0, 0, 0, 0, 132,68, 0, 0, 0, 0, 0, 0, 82, 153,6, 0, 0, 0, 0, 0, 64, 24, 2, 0, 0, 0, 0, 0, 16, 33, 4, 1, 0, 0, 0, 0, 19, 17, 20, 0,
+ 0, 32, 0, 0, 2, 96, 14, 0, 0, 0, 0, 0, 89, 37, 4, 0, 0, 0, 0, 0, 0, 130,4, 0, 0, 224,2, 0, 122,185,0, 1, 0, 0, 0, 0, 179,105,94, 0,
+ 0, 0, 0, 0, 74, 48, 8, 0, 0, 0, 0, 0, 223,53, 254,0, 0, 0, 0, 0, 66, 4, 4, 0, 0, 0, 0, 0, 68, 53, 14, 0, 0, 0, 0, 0, 0, 1, 68, 0,
+ 0, 0, 0, 0, 145,48, 0, 0, 0, 0, 0, 0, 25, 97, 12, 0, 0, 0, 0, 0, 132,32, 4, 0, 0, 0, 0, 0, 18, 48, 0, 1, 0, 0, 0, 0, 149,0, 8, 0,
+ 0, 0, 0, 0, 17, 1, 20, 1, 0, 0, 0, 0, 86, 176,14, 0, 0, 0, 0, 0, 17, 33, 6, 0, 0, 32, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 76, 36, 12, 0,
+ 0, 0, 0, 0, 18, 1, 16, 0, 0, 32, 0, 0, 0, 72, 6, 0, 0, 0, 0, 0, 48, 208,4, 1, 0, 0, 0, 0, 221,240,94, 1, 0, 0, 0, 0, 8, 4, 2, 2,
+ 0, 0, 0, 0, 80, 137,68, 0, 0, 0, 0, 0, 128,128,4, 0, 0, 0, 0, 0, 21, 69, 18, 1, 0, 0, 0, 0, 1, 36, 12, 3, 0, 0, 0, 0, 28, 0, 12, 2,
+ 0, 0, 0, 0, 11, 96, 4, 0, 0, 32, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 129,65, 12, 0, 0, 96, 0, 0, 16, 1, 4, 1, 0, 0, 0, 0, 255,117,174,0,
+ 0, 0, 0, 0, 68, 40, 8, 0, 0, 0, 0, 0, 16, 1, 8, 1, 0, 0, 0, 0, 247,113,106,2, 0, 32, 48, 0, 0, 0, 0, 0, 0, 32, 0, 0, 1, 8, 2, 0,
+ 0, 0, 0, 0, 223,253,254,3, 0, 0, 0, 0, 129,5, 16, 0, 0, 0, 0, 0, 89, 96, 0, 0, 0, 0, 0, 0, 12, 8, 14, 0, 0, 0, 0, 0, 209,72, 28, 0,
+ 0, 0, 0, 0, 0, 16, 5, 0, 0, 0, 0, 0, 19, 8, 132,0, 0, 0, 0, 0, 217,29, 76, 2, 0, 0, 0, 0, 85, 96, 0, 0, 0, 0, 0, 0, 16, 57, 76, 0,
+ 0, 0, 0, 0, 17, 81, 0, 1, 0, 0, 0, 0, 21, 32, 4, 0, 0, 0, 0, 0, 0, 12, 16, 0, 0, 0, 0, 0, 16, 17, 20, 0, 0, 0, 0, 0, 92, 97, 60, 2,
+ 0, 0, 0, 0, 17, 104,22, 1, 0, 0, 0, 0, 0, 32, 72, 2, 0, 0, 0, 0, 145,33, 20, 0, 0, 0, 0, 0, 0, 8, 8, 2, 0, 0, 0, 0, 6, 40, 6, 1,
+ 0, 32, 0, 0, 62, 12, 14, 0, 0, 0, 0, 0, 145,129,4, 0, 0, 0, 0, 0, 179,187,68, 1, 0, 96, 14, 0, 16, 1, 4, 0, 0, 0, 0, 0, 4, 9, 8, 1,
+ 0, 0, 0, 0, 127,253,95, 3, 0, 0, 0, 0, 72, 60, 0, 1, 0, 0, 0, 0, 145,5, 16, 0, 0, 32, 0, 0, 40, 136,4, 0, 0, 240,35, 0, 240,81, 12, 1,
+ 0, 224,0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 247,191,238,0, 0, 0, 0, 0, 145,21, 8, 0, 0, 0, 0, 0, 1, 33, 4, 0, 0, 32, 32, 0, 17, 17, 38, 0,
+ 0, 96, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 32, 17, 12, 0, 0, 0, 0, 0, 16, 96, 32, 0, 0, 0, 0, 0, 17, 105,20, 0, 0, 0, 0, 0, 32, 32, 32, 0,
+ 0, 0, 0, 0, 147,73, 84, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 8, 40, 2, 1, 0, 32, 0, 64, 16, 1, 14, 0, 0, 0, 0, 0, 3, 8, 6, 1,
+ 0, 0, 0, 0, 215,88, 28, 1, 0, 0, 0, 0, 16, 8, 8, 1, 0, 0, 0, 0, 209,53, 22, 1, 0, 0, 0, 0, 1, 160,4, 0, 0, 0, 0, 0, 4, 16, 66, 0,
+ 0, 0, 0, 0, 48, 32, 12, 0, 0, 96, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 206,60, 12, 0, 0, 0, 0, 0, 32, 0, 4, 2, 0, 32, 0, 0, 16, 1, 36, 0,
+ 0, 0, 0, 0, 146,65, 0, 2, 0, 0, 0, 0, 197,40, 143,1, 0, 0, 0, 0, 94, 5, 4, 0, 0, 0, 0, 0, 17, 9, 6, 0, 0, 66, 0, 0, 37, 165,142,0,
+ 0, 0, 0, 0, 0, 64, 9, 0, 0, 0, 0, 0, 144,0, 2, 1, 0, 0, 0, 0, 21, 0, 6, 3, 0, 0, 0, 0, 18, 12, 0, 0, 0, 32, 0, 0, 254,16, 206,1,
+ 0, 0, 0, 0, 0, 8, 48, 0, 0, 128,0, 0, 61, 97, 148,1, 0, 0, 0, 0, 222,189,254,3, 0, 0, 0, 0, 5, 5, 8, 0, 0, 0, 0, 0, 16, 4, 0, 1,
+ 0, 0, 0, 0, 65, 113,2, 0, 0, 0, 0, 0, 8, 104,6, 2, 0, 0, 0, 0, 16, 137,0, 0, 0, 40, 0, 0, 8, 0, 70, 0, 0, 0, 0, 0, 92, 167,77, 2,
+ 0, 0, 0, 0, 145,69, 20, 1, 0, 32, 32, 0, 0, 32, 4, 1, 0, 32, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 96, 12, 0, 0, 96, 0, 0, 4, 0, 1, 2,
+ 0, 32, 0, 0, 16, 185,18, 0, 0, 96, 6, 0, 177,105,20, 3, 0, 0, 0, 0, 162,0, 14, 0, 0, 0, 0, 0, 0, 128,96, 0, 0, 0, 0, 0, 1, 1, 16, 3,
+ 0, 0, 0, 0, 0, 104,12, 0, 0, 0, 0, 0, 148,1, 20, 0, 0, 0, 0, 0, 16, 1, 26, 2, 0, 0, 0, 0, 88, 40, 12, 0, 0, 0, 0, 0, 16, 1, 0, 2,
+ 0, 0, 0, 0, 16, 8, 10, 1, 0, 0, 0, 64, 223,127,127,3, 0, 32, 0, 0, 27, 81, 4, 1, 0, 112,36, 0, 25, 73, 2, 1, 0, 0, 0, 0, 25, 65, 2, 1,
+ 0, 0, 0, 0, 16, 40, 10, 0, 0, 0, 0, 0, 1, 69, 8, 0, 0, 0, 0, 0, 18, 64, 0, 0, 0, 160,33, 0, 190,255,126,2, 0, 0, 0, 0, 16, 65, 20, 1,
+ 0, 0, 0, 0, 17, 88, 0, 0, 0, 240,59, 0, 0, 0, 4, 0, 0, 0, 0, 0, 17, 64, 4, 1, 0, 0, 0, 0, 21, 128,24, 0, 0, 0, 0, 0, 1, 64, 16, 1,
+ 0, 0, 0, 0, 81, 65, 16, 0, 0, 0, 0, 0, 250,62, 14, 0, 0, 0, 0, 0, 145,21, 0, 0, 0, 0, 8, 0, 17, 81, 0, 0, 0, 0, 0, 0, 92, 101,12, 2,
+ 0, 32, 0, 0, 32, 17, 72, 1, 0, 0, 0, 0, 148,32, 9, 0, 0, 32, 0, 0, 16, 120,64, 0, 0, 0, 0, 0, 2, 9, 76, 2, 0, 0, 0, 0, 63, 18, 10, 0,
+ 0, 0, 0, 0, 223,255,188,2, 0, 0, 0, 0, 129,4, 8, 0, 0, 0, 0, 0, 89, 88, 8, 0, 0, 0, 0, 0, 138,56, 14, 2, 0, 0, 0, 0, 147,28, 14, 0,
+ 0, 0, 0, 0, 16, 105,12, 2, 0, 0, 0, 0, 193,65, 0, 0, 0, 0, 0, 0, 150,69, 8, 0, 0, 0, 0, 0, 132,65, 12, 2, 0, 32, 0, 0, 80, 153,0, 3,
+ 16, 0, 0, 0, 223,121,92, 3, 0, 0, 0, 0, 138,24, 4, 0, 0, 32, 0, 0, 96, 56, 4, 0, 0, 0, 0, 0, 2, 88, 64, 0, 0, 0, 0, 0, 8, 104,4, 0,
+ 0, 0, 0, 0, 155,80, 32, 0, 0, 0, 0, 0, 28, 5, 12, 0, 0, 64, 0, 0, 19, 89, 70, 2, 0, 0, 0, 0, 4, 1, 12, 1, 0, 32, 0, 0, 18, 65, 4, 1,
+ 0, 0, 0, 0, 212,57, 28, 0, 0, 32, 0, 0, 38, 9, 36, 1, 0, 0, 0, 0, 1, 132,0, 0, 0, 0, 0, 0, 132,65, 8, 0, 0, 0, 0, 0, 27, 89, 6, 0,
+ 0, 0, 0, 0, 8, 9, 16, 0, 0, 12, 0, 0, 0, 8, 12, 0, 0, 0, 0, 0, 255,254,143,2, 0, 0, 0, 0, 8, 128,1, 0, 0, 32, 4, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 133,21, 0, 0, 16, 48, 44, 64, 241,121,92, 1, 0, 0, 0, 0, 24, 16, 2, 0, 0, 96, 4, 0, 128,32, 0, 0, 0, 96, 0, 0, 1, 128,0, 0,
+ 1, 112,28, 0, 67, 0, 2, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 192,56, 6, 0, 0, 0, 0, 0, 2, 16, 12, 3, 0, 0, 0, 0, 209,73, 16, 0,
+ 0, 0, 0, 0, 48, 17, 0, 0, 0, 0, 0, 0, 161,117,76, 0, 0, 0, 0, 0, 8, 113,6, 1, 0, 0, 0, 0, 255,220,108,0, 0, 0, 0, 0, 128,65, 2, 0,
+ 0, 0, 0, 0, 179,49, 70, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 64, 100,0, 0, 0, 32, 1, 0, 255,101,12, 0, 0, 0, 0, 0, 32, 37, 2, 0,
+ 0, 0, 0, 0, 128,5, 8, 0, 0, 0, 0, 0, 145,1, 4, 1, 0, 32, 0, 0, 84, 16, 4, 0, 0, 0, 0, 0, 119,125,30, 3, 0, 0, 0, 0, 17, 9, 16, 1,
+ 0, 0, 0, 0, 128,1, 2, 0, 0, 0, 0, 0, 0, 32, 88, 0, 0, 0, 0, 0, 129,65, 64, 0, 0, 0, 0, 0, 8, 4, 64, 0, 0, 0, 0, 0, 2, 4, 8, 1,
+ 0, 0, 0, 0, 149,97, 12, 0, 0, 0, 0, 0, 32, 108,0, 0, 0, 0, 0, 0, 18, 33, 0, 1, 0, 0, 0, 0, 151,65, 30, 1, 0, 0, 0, 0, 2, 1, 0, 1,
+ 0, 0, 0, 0, 52, 0, 8, 0, 0, 4, 0, 0, 57, 109,24, 1, 0, 0, 0, 0, 52, 32, 2, 1, 0, 0, 0, 0, 152,32, 0, 0, 0, 4, 0, 0, 0, 2, 12, 0,
+ 0, 32, 32, 0, 0, 0, 2, 0, 0, 0, 0, 0, 34, 2, 0, 0, 0, 32, 0, 0, 2, 2, 0, 0, 16, 188,34, 0, 255,255,255,3, 0, 0, 0, 0, 136,36, 0, 0,
+ 0, 16, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 168,6, 0, 0, 0, 0, 0, 147,73, 2, 1, 0, 0, 0, 0, 17, 12, 2, 1, 0, 96, 0, 0, 17, 9, 4, 0,
+ 0, 0, 0, 0, 149,5, 16, 1, 0, 0, 0, 0, 123,73, 84, 3, 0, 0, 0, 0, 0, 24, 16, 0, 0, 0, 0, 0, 26, 64, 0, 0, 0, 0, 0, 0, 11, 13, 14, 0,
+ 0, 0, 0, 0, 145,4, 0, 2, 0, 0, 0, 0, 16, 101,0, 0, 0, 0, 0, 0, 209,105,6, 0, 0, 0, 0, 0, 1, 56, 2, 0, 0, 0, 0, 0, 91, 58, 30, 0,
+ 0, 0, 0, 0, 16, 9, 20, 0, 0, 0, 0, 0, 48, 65, 4, 0, 0, 0, 0, 0, 145,64, 4, 0, 0, 0, 0, 0, 128,128,10, 0, 0, 0, 0, 0, 251,223,124,1,
+ 0, 0, 0, 0, 206,176,190,3, 0, 0, 0, 0, 64, 65, 8, 0, 0, 0, 0, 0, 8, 33, 0, 3, 0, 0, 0, 0, 128,4, 4, 0, 0, 0, 0, 0, 5, 104,14, 1,
+ 0, 0, 0, 0, 53, 252,16, 2, 0, 0, 0, 0, 9, 69, 4, 0, 0, 0, 0, 0, 19, 81, 84, 1, 0, 0, 0, 0, 212,48, 94, 0, 0, 0, 0, 0, 88, 1, 0, 0,
+ 0, 0, 0, 0, 192,112,14, 1, 0, 0, 0, 0, 129,72, 0, 0, 0, 0, 0, 0, 245,244,52, 0, 0, 0, 0, 0, 133,64, 0, 0, 0, 0, 0, 0, 65, 0, 16, 0,
+ 0, 0, 0, 0, 74, 160,68, 0, 0, 0, 0, 0, 4, 128,4, 2, 0, 0, 0, 0, 32, 33, 70, 0, 0, 0, 0, 0, 0, 64, 72, 0, 0, 0, 0, 0, 128,4, 8, 2,
+ 0, 0, 0, 0, 83, 217,22, 0, 0, 0, 0, 0, 68, 8, 6, 1, 0, 0, 0, 0, 145,73, 2, 1, 0, 0, 0, 0, 17, 40, 8, 0, 0, 0, 0, 0, 14, 220,78, 2,
+ 0, 32, 0, 0, 65, 64, 4, 0, 0, 32, 0, 0, 128,128,14, 0, 0, 32, 0, 0, 64, 0, 4, 0, 0, 0, 0, 0, 0, 32, 72, 0, 0, 0, 0, 0, 125,107,28, 3,
+ 0, 0, 0, 0, 8, 128,68, 0, 0, 0, 0, 0, 145,65, 2, 1, 0, 0, 0, 0, 16, 32, 2, 2, 0, 0, 0, 0, 1, 34, 0, 0, 0, 0, 0, 0, 0, 16, 6, 1,
+ 0, 0, 0, 0, 19, 105,94, 1, 0, 0, 0, 0, 8, 24, 14, 0, 0, 0, 0, 0, 82, 48, 6, 0, 0, 0, 0, 0, 16, 32, 24, 0, 0, 0, 0, 0, 18, 4, 24, 0,
+ 0, 0, 0, 0, 144,32, 58, 2, 0, 0, 0, 0, 230,57, 44, 1, 0, 0, 0, 0, 68, 0, 2, 0, 0, 0, 0, 0, 16, 65, 0, 3, 0, 0, 0, 0, 9, 8, 12, 0,
+ 0, 0, 0, 0, 17, 105,16, 1, 0, 0, 0, 0, 5, 56, 6, 0, 0, 32, 0, 0, 145,1, 4, 0, 0, 0, 0, 0, 1, 40, 12, 1, 0, 0, 0, 0, 32, 65, 16, 0,
+ 0, 0, 0, 0, 119,100,44, 0, 0, 0, 0, 0, 0, 65, 8, 1, 0, 0, 0, 0, 153,65, 12, 0, 0, 0, 0, 0, 1, 0, 14, 1, 0, 0, 0, 0, 32, 32, 80, 0,
+ 0, 0, 0, 0, 194,48, 74, 0, 0, 0, 0, 0, 129,40, 8, 0, 0, 0, 0, 0, 92, 96, 12, 0, 0, 0, 0, 0, 8, 32, 92, 0, 0, 0, 0, 0, 144,71, 8, 0,
+ 0, 0, 0, 0, 144,121,2, 2, 0, 0, 0, 0, 151,253,77, 0, 0, 0, 0, 0, 0, 33, 8, 1, 0, 0, 0, 0, 48, 64, 0, 0, 0, 0, 0, 0, 17, 121,0, 1,
+ 0, 0, 0, 0, 16, 161,0, 0, 0, 0, 0, 0, 149,73, 94, 2, 0, 0, 0, 0, 188,12, 70, 0, 0, 32, 0, 0, 128,16, 0, 1, 0, 240,46, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 16, 19, 2, 0, 0, 0, 0, 0, 208,0, 0, 0, 0, 96, 0, 0, 33, 16, 4, 0, 0, 0, 0, 0, 2, 68, 0, 0, 0, 0, 0, 0, 17, 65, 20, 0,
+ 0, 0, 0, 0, 255,60, 110,2, 0, 0, 0, 0, 144,9, 16, 0, 0, 0, 0, 0, 24, 77, 12, 2, 0, 0, 0, 0, 145,33, 6, 0, 0, 0, 0, 0, 80, 40, 4, 0,
+ 0, 0, 0, 0, 73, 104,10, 0, 0, 0, 0, 0, 25, 13, 10, 0, 0, 0, 0, 0, 251,120,12, 0, 0, 0, 0, 0, 25, 225,0, 2, 0, 0, 0, 0, 0, 41, 64, 0,
+ 0, 32, 0, 0, 229,207,18, 1, 0, 0, 0, 0, 129,16, 36, 0, 0, 0, 0, 0, 5, 192,24, 1, 16, 16, 0, 0, 255,253,126,3, 0, 0, 0, 0, 68, 40, 30, 0,
+ 0, 0, 0, 0, 147,105,68, 1, 0, 0, 0, 0, 147,64, 2, 0, 0, 0, 0, 0, 24, 113,2, 1, 0, 0, 0, 0, 8, 60, 47, 2, 0, 16, 0, 0, 2, 0, 4, 1,
+ 0, 0, 0, 0, 8, 4, 12, 1, 0, 0, 0, 0, 52, 64, 2, 0, 0, 0, 0, 0, 16, 88, 2, 0, 0, 0, 0, 0, 146,1, 0, 0, 0, 0, 0, 0, 16, 93, 0, 1,
+ 0, 0, 0, 0, 94, 60, 14, 0, 0, 0, 0, 0, 144,9, 12, 2, 0, 0, 0, 0, 192,32, 0, 2, 0, 0, 0, 0, 251,121,62, 2, 0, 0, 0, 0, 16, 81, 2, 0,
+ 0, 0, 0, 0, 19, 25, 4, 0, 0, 20, 0, 0, 95, 111,30, 2, 0, 0, 0, 0, 17, 8, 18, 0, 0, 0, 0, 0, 1, 96, 46, 1, 0, 96, 0, 0, 49, 89, 4, 0,
+ 0, 0, 0, 0, 145,8, 0, 0, 0, 0, 0, 0, 21, 33, 28, 0, 0, 0, 0, 0, 21, 16, 60, 0, 0, 0, 0, 0, 209,105,6, 2, 0, 0, 0, 0, 1, 40, 20, 0,
+ 0, 0, 0, 0, 236,153,14, 0, 0, 128,0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 145,73, 0, 1, 0, 240,36, 0, 1, 40, 44, 0, 0, 0, 0, 0, 17, 96, 20, 1,
+ 0, 96, 0, 0, 8, 32, 0, 0, 0, 0, 0, 0, 4, 128,8, 1, 0, 0, 0, 0, 129,161,0, 0, 0, 0, 0, 0, 68, 45, 14, 0, 0, 32, 0, 0, 16, 65, 12, 0,
+ 0, 0, 0, 0, 129,4, 0, 2, 0, 0, 0, 0, 12, 48, 12, 0, 0, 0, 0, 0, 69, 32, 12, 0, 0, 0, 0, 0, 17, 201,20, 1, 0, 32, 0, 0, 17, 97, 28, 1,
+ 0, 0, 0, 0, 5, 0, 20, 2, 0, 0, 0, 0, 68, 57, 84, 0, 0, 32, 0, 0, 0, 96, 12, 0, 0, 32, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 134,64, 8, 0,
+ 0, 0, 0, 0, 16, 84, 64, 0, 0, 0, 0, 0, 144,109,22, 3, 0, 0, 0, 0, 36, 64, 0, 0, 0, 0, 0, 0, 149,181,28, 0, 0, 0, 0, 0, 0, 5, 64, 0,
+ 0, 0, 0, 0, 48, 104,0, 0, 0, 0, 0, 0, 0, 136,8, 0, 16, 0, 0, 0, 191,249,30, 2, 0, 0, 0, 0, 52, 10, 64, 0, 0, 0, 0, 0, 12, 81, 16, 0,
+ 0, 0, 0, 0, 8, 50, 2, 0, 0, 0, 0, 0, 220,101,162,1, 0, 0, 4, 0, 176,2, 0, 0, 0, 32, 0, 0, 0, 1, 34, 0, 0, 0, 0, 0, 32, 38, 10, 0,
+ 0, 0, 0, 0, 12, 141,32, 1, 0, 0, 0, 0, 2, 0, 1, 2, 0, 0, 0, 0, 2, 24, 0, 2, 0, 112,8, 0, 64, 16, 130,0, 0, 0, 0, 0, 179,67, 26, 2,
+ 0, 0, 0, 0, 56, 121,14, 2, 0, 0, 0, 0, 25, 1, 8, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 1, 33, 32, 0, 0, 0, 0, 0, 140,138,2, 1,
+ 0, 32, 0, 0, 74, 0, 2, 0, 0, 0, 0, 0, 128,2, 0, 0, 0, 0, 0, 0, 19, 108,10, 2, 0, 0, 0, 0, 17, 20, 0, 0, 0, 0, 0, 0, 7, 72, 6, 0,
+ 0, 0, 0, 0, 205,36, 58, 0, 0, 32, 0, 0, 65, 32, 3, 2, 0, 0, 0, 0, 162,0, 0, 0, 0, 0, 0, 0, 0, 8, 30, 0, 0, 0, 0, 0, 144,32, 8, 0,
+ 0, 32, 0, 0, 58, 88, 70, 1, 0, 0, 0, 0, 8, 140,0, 0, 0, 0, 0, 0, 255,250,190,2, 0, 0, 0, 0, 68, 249,7, 0, 0, 0, 0, 0, 133,65, 0, 0,
+ 0, 0, 0, 0, 2, 184,0, 0, 0, 0, 0, 0, 3, 145,0, 0, 0, 0, 0, 0, 125,105,24, 0, 0, 0, 0, 0, 0, 4, 40, 0, 0, 0, 0, 0, 8, 0, 18, 0,
+ 0, 0, 0, 0, 19, 104,6, 0, 0, 0, 0, 0, 1, 4, 0, 2, 0, 0, 0, 0, 93, 40, 64, 0, 0, 0, 0, 0, 238,40, 14, 0, 0, 0, 0, 0, 145,61, 16, 0,
+ 0, 0, 0, 0, 18, 9, 4, 1, 0, 0, 0, 0, 0, 60, 2, 0, 0, 0, 0, 0, 160,0, 24, 0, 0, 0, 0, 0, 255,253,46, 3, 0, 96, 0, 0, 16, 65, 4, 0,
+ 0, 0, 0, 0, 17, 97, 2, 0, 0, 0, 0, 0, 9, 48, 2, 0, 0, 0, 0, 0, 149,81, 20, 1, 0, 0, 0, 0, 4, 56, 14, 1, 0, 0, 0, 0, 215,124,12, 0,
+ 0, 0, 0, 0, 0, 192,4, 0, 0, 0, 0, 0, 68, 112,8, 0, 0, 0, 0, 0, 19, 184,4, 0, 0, 0, 0, 0, 89, 101,28, 3, 0, 0, 0, 0, 2, 64, 46, 0,
+ 0, 0, 0, 0, 209,9, 18, 0, 0, 112,36, 0, 2, 1, 0, 1, 0, 0, 0, 0, 4, 8, 0, 2, 0, 0, 0, 0, 22, 4, 0, 0, 0, 0, 0, 0, 53, 57, 42, 0,
+ 0, 0, 0, 0, 72, 33, 0, 0, 0, 0, 0, 0, 16, 128,20, 0, 0, 0, 0, 0, 123,89, 46, 0, 0, 0, 0, 0, 40, 40, 22, 1, 0, 0, 0, 0, 0, 10, 4, 0,
+ 0, 32, 8, 0, 32, 1, 4, 3, 0, 96, 5, 0, 4, 0, 4, 0, 0, 0, 0, 0, 8, 41, 24, 0, 0, 0, 0, 0, 9, 0, 128,0, 0, 0, 0, 0, 132,8, 8, 0,
+ 0, 0, 0, 0, 150,89, 14, 0, 0, 0, 0, 0, 149,8, 8, 2, 0, 0, 0, 0, 144,73, 0, 0, 0, 0, 0, 0, 108,56, 6, 0, 0, 0, 0, 0, 1, 49, 78, 0,
+ 0, 0, 0, 0, 1, 17, 0, 3, 0, 96, 4, 0, 28, 0, 4, 0, 0, 0, 0, 0, 1, 81, 0, 1, 0, 0, 0, 0, 217,221,34, 1, 0, 0, 0, 0, 2, 2, 2, 3,
+ 0, 0, 0, 0, 0, 36, 34, 0, 0, 0, 0, 0, 0, 2, 136,0, 0, 0, 0, 0, 27, 65, 20, 1, 0, 0, 0, 0, 223,176,254,3, 0, 0, 0, 0, 186,105,84, 1,
+ 0, 0, 0, 0, 1, 96, 20, 0, 0, 0, 0, 0, 12, 0, 44, 2, 0, 0, 0, 0, 16, 64, 20, 0, 0, 0, 0, 0, 246,225,76, 0, 0, 32, 0, 0, 182,115,68, 1,
+ 0, 0, 0, 0, 0, 8, 14, 1, 0, 0, 0, 0, 128,0, 8, 2, 0, 0, 0, 0, 30, 32, 4, 0, 0, 0, 0, 0, 4, 16, 16, 0, 0, 0, 0, 0, 10, 32, 70, 0,
+ 0, 0, 0, 0, 95, 49, 68, 0, 0, 0, 0, 0, 0, 48, 44, 0, 0, 0, 0, 0, 6, 16, 12, 2, 0, 0, 0, 0, 127,113,110,0, 0, 32, 8, 0, 1, 65, 64, 1,
+ 0, 0, 0, 0, 31, 240,92, 0, 0, 0, 0, 0, 24, 1, 64, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 24, 4, 12, 0, 0, 0, 0, 0, 145,0, 12, 0,
+ 0, 0, 0, 0, 127,241,126,1, 0, 32, 0, 0, 0, 9, 0, 0, 0, 32, 0, 0, 0, 16, 12, 0, 0, 96, 33, 0, 16, 32, 0, 0, 0, 0, 0, 0, 49, 64, 16, 0,
+ 0, 0, 0, 0, 17, 96, 0, 1, 0, 0, 0, 0, 48, 0, 8, 2, 0, 0, 0, 0, 17, 5, 68, 1, 0, 0, 0, 0, 94, 113,12, 0, 0, 0, 0, 0, 1, 32, 20, 0,
+ 0, 0, 0, 0, 4, 176,0, 0, 0, 0, 0, 0, 64, 136,4, 0, 0, 0, 0, 0, 23, 65, 24, 0, 0, 0, 0, 0, 0, 2, 8, 2, 0, 0, 2, 0, 19, 65, 22, 0,
+ 0, 0, 0, 0, 82, 0, 94, 0, 0, 0, 0, 0, 64, 1, 2, 0, 0, 0, 0, 0, 4, 16, 6, 2, 0, 8, 0, 0, 0, 0, 12, 0, 0, 96, 1, 0, 255,255,126,3,
+ 0, 0, 32, 0, 2, 1, 0, 0, 16, 0, 0, 0, 136,40, 74, 0, 0, 0, 0, 0, 2, 141,12, 0, 0, 0, 0, 0, 146,24, 4, 0, 0, 0, 0, 0, 19, 9, 22, 1,
+ 0, 0, 0, 0, 84, 40, 0, 0, 0, 0, 0, 0, 36, 8, 0, 0, 0, 32, 4, 0, 187,253,86, 3, 0, 0, 0, 0, 8, 24, 98, 0, 0, 0, 0, 0, 96, 0, 0, 0,
+ 0, 0, 0, 0, 16, 72, 0, 1, 0, 0, 0, 0, 49, 12, 14, 0, 0, 0, 0, 0, 0, 32, 36, 0, 0, 0, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 104,8, 74, 1,
+ 0, 0, 0, 0, 209,216,64, 0, 0, 0, 0, 0, 143,189,78, 0, 0, 0, 0, 0, 24, 5, 0, 0, 0, 0, 0, 0, 72, 45, 12, 0, 0, 0, 0, 0, 128,2, 12, 2,
+ 0, 0, 0, 0, 49, 81, 14, 0, 0, 0, 0, 0, 16, 49, 2, 0, 0, 0, 0, 0, 209,73, 18, 0, 0, 0, 0, 0, 17, 104,2, 0, 0, 0, 0, 0, 37, 36, 14, 0,
+ 0, 0, 0, 0, 20, 83, 16, 0, 0, 0, 0, 0, 127,205,28, 2, 0, 0, 0, 0, 6, 36, 6, 1, 0, 32, 0, 0, 179,117,94, 3, 0, 0, 0, 0, 8, 148,0, 0,
+ 0, 32, 0, 0, 18, 16, 6, 0, 0, 0, 0, 0, 17, 1, 18, 0, 0, 0, 0, 0, 194,16, 0, 0, 0, 0, 0, 0, 16, 40, 0, 2, 0, 0, 0, 0, 6, 81, 72, 0,
+ 0, 0, 0, 0, 7, 48, 12, 1, 0, 48, 46, 0, 86, 241,32, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 112,4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 93, 100,44, 0,
+ 0, 0, 0, 0, 8, 32, 12, 0, 0, 0, 0, 0, 145,113,80, 1, 0, 0, 0, 0, 66, 128,0, 0, 0, 0, 0, 0, 2, 50, 36, 0, 0, 0, 0, 0, 19, 209,16, 2,
+ 0, 0, 0, 0, 0, 8, 14, 3, 0, 0, 0, 0, 95, 97, 44, 3, 0, 0, 0, 0, 8, 8, 32, 2, 0, 0, 0, 0, 32, 0, 6, 3, 0, 0, 0, 0, 126,252,12, 0,
+ 0, 96, 1, 0, 255,255,110,1, 0, 0, 0, 0, 0, 48, 16, 1, 0, 0, 0, 0, 4, 12, 2, 0, 0, 0, 0, 0, 16, 0, 98, 0, 0, 0, 0, 0, 16, 0, 80, 0,
+ 0, 0, 0, 0, 16, 193,8, 0, 0, 0, 0, 0, 18, 1, 16, 1, 128,96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 4, 0, 0, 0, 0, 0, 18, 9, 4, 0,
+ 0, 96, 2, 0, 10, 48, 4, 1, 0, 0, 0, 0, 145,225,16, 0, 0, 0, 0, 0, 223,125,30, 3, 0, 0, 0, 0, 4, 60, 0, 2, 0, 0, 0, 0, 17, 105,0, 1,
+ 0, 0, 0, 0, 28, 40, 12, 1, 0, 0, 0, 0, 103,0, 0, 0, 0, 0, 0, 0, 68, 40, 20, 2, 0, 32, 32, 0, 0, 0, 4, 2, 0, 0, 0, 0, 129,1, 0, 1,
+ 0, 0, 0, 0, 17, 67, 8, 1, 0, 0, 0, 0, 16, 12, 16, 0, 0, 0, 0, 0, 189,189,108,2, 0, 0, 0, 0, 17, 89, 0, 0, 0, 0, 0, 0, 68, 16, 2, 0,
+ 0, 0, 0, 0, 1, 76, 0, 1, 0, 0, 0, 0, 149,89, 78, 3, 0, 0, 0, 0, 3, 32, 2, 0, 0, 0, 0, 0, 64, 20, 8, 0, 0, 0, 0, 0, 128,1, 64, 0,
+ 0, 0, 0, 0, 185,77, 86, 0, 0, 0, 0, 0, 79, 173,46, 2, 0, 0, 0, 0, 81, 1, 2, 1, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 9, 88, 0, 0,
+ 0, 0, 0, 0, 136,0, 2, 1, 16, 0, 0, 0, 17, 65, 8, 0, 0, 0, 0, 0, 17, 81, 4, 0, 0, 0, 0, 0, 25, 41, 2, 0, 0, 0, 0, 0, 29, 32, 0, 0,
+ 0, 0, 0, 0, 1, 80, 0, 0, 0, 0, 0, 0, 4, 0, 22, 0, 0, 16, 16, 0, 219,65, 18, 3, 0, 0, 0, 0, 255,187,124,3, 0, 0, 0, 0, 147,105,4, 0,
+ 0, 0, 0, 0, 21, 1, 0, 3, 0, 96, 8, 0, 40, 8, 4, 1, 0, 0, 0, 0, 57, 105,84, 1, 0, 0, 0, 0, 12, 40, 6, 0, 0, 0, 0, 0, 17, 40, 20, 0,
+ 0, 0, 0, 0, 38, 48, 12, 0, 0, 0, 0, 0, 49, 1, 8, 0, 0, 0, 0, 0, 0, 0, 136,0, 0, 0, 0, 0, 81, 64, 4, 0, 0, 0, 0, 0, 17, 120,0, 0,
+ 0, 0, 0, 0, 68, 44, 4, 0, 0, 0, 0, 0, 80, 32, 4, 1, 0, 0, 0, 0, 151,217,4, 2, 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 251,251,63, 2,
+ 0, 0, 0, 0, 136,1, 10, 0, 0, 32, 0, 0, 63, 247,60, 1, 0, 0, 0, 0, 16, 8, 22, 0, 0, 0, 0, 0, 32, 96, 4, 0, 0, 32, 0, 0, 0, 17, 4, 0,
+ 0, 0, 0, 0, 16, 8, 8, 2, 0, 32, 0, 0, 145,73, 36, 2, 0, 0, 0, 0, 144,128,0, 0, 0, 0, 0, 0, 33, 0, 38, 0, 0, 0, 0, 0, 4, 32, 152,0,
+ 0, 0, 0, 0, 144,144,12, 0, 0, 32, 0, 0, 145,89, 6, 1, 0, 0, 0, 0, 17, 1, 24, 2, 0, 0, 0, 0, 40, 0, 6, 0, 0, 0, 0, 0, 33, 96, 12, 0,
+ 0, 0, 0, 0, 82, 24, 4, 0, 0, 32, 0, 0, 8, 40, 14, 1, 0, 0, 0, 0, 0, 9, 4, 1, 0, 0, 0, 0, 1, 64, 8, 3, 0, 0, 0, 0, 62, 41, 68, 0,
+ 0, 0, 4, 0, 127,185,124,1, 0, 0, 0, 0, 0, 56, 62, 0, 0, 0, 0, 0, 10, 0, 2, 0, 0, 32, 0, 0, 216,120,68, 2, 0, 0, 0, 0, 132,65, 0, 2,
+ 0, 0, 0, 0, 15, 188,46, 0, 0, 224,63, 0, 255,249,126,1, 0, 224,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 32, 16, 1, 0, 0, 0, 0, 64, 32, 38, 1,
+ 0, 0, 0, 0, 0, 24, 64, 0, 0, 0, 0, 0, 24, 32, 4, 0, 0, 0, 0, 0, 49, 0, 2, 1, 0, 0, 0, 0, 35, 136,8, 0, 0, 0, 0, 0, 8, 8, 32, 1,
+ 0, 0, 0, 0, 48, 0, 2, 0, 0, 32, 8, 0, 81, 64, 84, 0, 0, 0, 0, 0, 106,40, 68, 2, 0, 0, 0, 0, 121,109,100,2, 0, 0, 0, 0, 132,12, 4, 0,
+ 0, 0, 0, 0, 149,96, 12, 2, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 18, 8, 8, 0, 0, 0, 0, 0, 170,121,76, 0, 0, 0, 0, 0, 126,250,173,2,
+ 0, 0, 0, 0, 24, 9, 4, 0, 0, 0, 0, 0, 102,144,46, 0, 0, 0, 0, 0, 146,17, 12, 0, 0, 0, 0, 0, 48, 65, 8, 0, 0, 0, 0, 0, 16, 40, 12, 1,
+ 0, 0, 0, 0, 65, 105,4, 0, 0, 0, 0, 0, 8, 0, 12, 1, 0, 0, 0, 0, 17, 92, 70, 0, 0, 0, 0, 0, 4, 8, 18, 0, 0, 0, 0, 0, 130,8, 8, 0,
+ 0, 0, 0, 0, 95, 53, 44, 0, 0, 32, 0, 0, 148,9, 4, 0, 0, 0, 0, 0, 1, 8, 64, 0, 0, 0, 0, 0, 151,88, 76, 0, 0, 0, 0, 0, 0, 48, 20, 0,
+ 0, 0, 0, 0, 0, 80, 12, 2, 0, 0, 0, 0, 255,251,124,3, 0, 0, 0, 0, 17, 16, 4, 1, 0, 0, 0, 0, 16, 33, 4, 2, 0, 0, 0, 0, 130,160,12, 0,
+ 0, 0, 0, 0, 0, 88, 4, 0, 0, 0, 0, 0, 0, 8, 68, 0, 0, 0, 0, 0, 17, 89, 0, 1, 0, 0, 0, 0, 27, 77, 37, 0, 0, 0, 0, 0, 8, 16, 44, 0,
+ 0, 0, 0, 0, 150,30, 36, 2, 0, 0, 0, 0, 155,125,64, 0, 0, 0, 0, 0, 146,65, 8, 2, 0, 0, 0, 0, 5, 168,12, 0, 0, 0, 0, 0, 146,41, 68, 0,
+ 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 24, 65, 4, 0, 0, 0, 0, 0, 28, 41, 12, 0, 0, 0, 0, 0, 254,185,108,2, 0, 0, 0, 0, 19, 16, 4, 1,
+ 0, 0, 0, 0, 81, 0, 8, 2, 0, 0, 0, 0, 2, 40, 12, 0, 0, 0, 0, 0, 146,1, 64, 0, 0, 0, 0, 0, 96, 0, 4, 0, 0, 0, 0, 0, 19, 176,0, 0,
+ 0, 0, 0, 0, 123,73, 76, 0, 0, 0, 0, 0, 144,88, 8, 1, 0, 32, 0, 0, 128,17, 4, 2, 0, 0, 0, 0, 17, 192,0, 0, 0, 0, 0, 0, 144,5, 12, 0,
+ 0, 0, 0, 0, 106,184,4, 0, 0, 0, 0, 0, 66, 8, 4, 0, 0, 0, 0, 0, 212,128,136,0, 0, 0, 2, 0, 160,229,136,1, 128,0, 0, 0, 0, 16, 0, 0,
+ 0, 0, 0, 0, 255,251,94, 3, 0, 0, 0, 0, 76, 187,46, 1, 0, 0, 0, 0, 64, 8, 2, 0, 0, 0, 0, 0, 77, 65, 8, 3, 0, 0, 0, 0, 6, 2, 0, 0,
+ 0, 0, 0, 0, 8, 0, 128,2, 0, 0, 0, 0, 25, 33, 2, 0, 0, 0, 0, 0, 8, 1, 4, 0, 0, 0, 0, 0, 145,1, 6, 0, 0, 0, 0, 0, 1, 224,0, 0,
+ 0, 0, 0, 0, 0, 48, 5, 0, 0, 0, 0, 0, 19, 9, 4, 0, 0, 0, 0, 0, 4, 20, 64, 0, 0, 0, 0, 0, 81, 17, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 14, 57, 46, 0, 0, 0, 0, 0, 56, 136,0, 0, 0, 0, 0, 0, 21, 33, 14, 0, 0, 32, 0, 0, 16, 1, 68, 0, 0, 0, 0, 0, 80, 9, 0, 0,
+ 0, 0, 0, 0, 255,122,14, 3, 0, 0, 0, 0, 2, 104,0, 0, 0, 32, 0, 0, 10, 40, 78, 0, 0, 32, 16, 0, 0, 32, 12, 0, 0, 0, 0, 0, 65, 32, 0, 0,
+ 0, 0, 0, 0, 186,25, 12, 0, 0, 0, 0, 0, 176,0, 68, 0, 0, 0, 0, 0, 0, 65, 2, 1, 0, 0, 0, 0, 2, 48, 10, 0, 0, 0, 0, 0, 0, 0, 26, 0,
+ 0, 0, 0, 0, 89, 40, 8, 1, 0, 0, 0, 0, 1, 0, 36, 1, 0, 0, 0, 0, 22, 5, 8, 0, 0, 0, 0, 0, 145,1, 10, 1, 0, 56, 4, 0, 152,17, 6, 0,
+ 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 63, 253,20, 3, 0, 0, 0, 0, 66, 32, 10, 0, 0, 0, 0, 0, 4, 36, 4, 2, 0, 0, 0, 0, 196,0, 8, 0,
+ 0, 0, 0, 0, 22, 100,168,0, 0, 0, 0, 0, 4, 0, 2, 2, 0, 0, 0, 0, 128,0, 40, 0, 0, 0, 0, 0, 11, 145,4, 2, 0, 0, 0, 0, 144,0, 10, 0,
+ 0, 0, 0, 0, 123,189,28, 3, 0, 0, 0, 0, 17, 72, 2, 1, 0, 16, 0, 0, 0, 0, 64, 0, 0, 48, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 144,89, 8, 0,
+ 0, 0, 0, 0, 144,64, 18, 0, 0, 0, 0, 0, 89, 255,126,0, 0, 0, 0, 0, 66, 24, 0, 0, 0, 0, 0, 0, 1, 66, 64, 1, 0, 0, 0, 0, 9, 96, 8, 0,
+ 0, 0, 0, 0, 16, 0, 10, 1, 0, 0, 0, 0, 8, 62, 36, 0, 0, 32, 0, 0, 149,28, 12, 2, 0, 0, 0, 0, 17, 1, 80, 1, 0, 0, 0, 0, 16, 36, 0, 0,
+ 0, 0, 0, 0, 212,95, 14, 2, 0, 0, 0, 0, 17, 80, 2, 0, 0, 0, 0, 0, 0, 0, 132,2, 0, 0, 0, 0, 132,0, 0, 1, 0, 0, 0, 0, 0, 17, 6, 1,
+ 16, 32, 0, 0, 19, 120,60, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 17, 81, 0, 3, 0, 0, 0, 0, 19, 67, 0, 1, 0, 0, 0, 0, 8, 41, 10, 0,
+ 0, 128,0, 0, 81, 248,22, 0, 0, 0, 0, 0, 66, 2, 4, 0, 0, 0, 0, 0, 130,0, 4, 0, 16, 244,43, 0, 255,255,254,3, 0, 64, 0, 0, 4, 16, 0, 0,
+ 0, 16, 0, 0, 4, 8, 0, 0, 0, 64, 0, 0, 8, 32, 0, 0, 0, 16, 0, 0, 0, 64, 4, 0, 0, 64, 0, 0, 0, 128,4, 0, 0, 0, 16, 0, 255,191,255,3,
+ 0, 0, 0, 0, 231,172,14, 2, 0, 0, 0, 0, 21, 0, 12, 0, 0, 0, 0, 0, 19, 73, 22, 1, 0, 0, 0, 0, 85, 40, 2, 0, 0, 0, 0, 0, 24, 28, 4, 0,
+ 0, 0, 0, 0, 102,40, 12, 0, 0, 0, 0, 0, 144,69, 0, 2, 0, 0, 0, 0, 0, 0, 10, 3, 0, 0, 0, 0, 64, 112,0, 0, 0, 0, 0, 0, 51, 57, 68, 1,
+ 0, 0, 0, 0, 8, 40, 10, 1, 0, 32, 0, 0, 8, 64, 4, 2, 0, 0, 0, 0, 253,107,102,1, 0, 0, 0, 0, 8, 24, 70, 0, 0, 0, 0, 0, 8, 48, 64, 0,
+ 0, 0, 0, 0, 4, 32, 192,0, 0, 0, 0, 0, 32, 40, 6, 0, 0, 0, 0, 0, 9, 0, 8, 0, 0, 0, 0, 0, 16, 1, 2, 1, 16, 0, 0, 0, 0, 64, 0, 0,
+ 0, 0, 0, 0, 238,48, 22, 0, 0, 0, 0, 0, 64, 128,2, 0, 0, 0, 0, 0, 48, 41, 8, 0, 0, 0, 0, 0, 16, 56, 2, 2, 0, 0, 0, 0, 243,121,86, 1,
+ 0, 0, 0, 0, 8, 52, 2, 0, 0, 0, 0, 0, 26, 56, 6, 1, 0, 0, 0, 0, 146,0, 4, 1, 0, 0, 0, 0, 17, 96, 12, 0, 0, 0, 0, 0, 0, 224,4, 0,
+ 0, 0, 0, 0, 1, 56, 4, 0, 0, 0, 0, 0, 104,188,14, 1, 0, 0, 0, 0, 25, 8, 4, 0, 0, 0, 0, 0, 126,168,6, 1, 0, 0, 0, 0, 16, 64, 2, 1,
+ 0, 0, 0, 0, 128,1, 0, 2, 0, 0, 0, 0, 25, 35, 0, 0, 0, 0, 0, 0, 17, 77, 18, 0, 0, 0, 0, 0, 0, 120,8, 0, 0, 0, 0, 0, 17, 40, 6, 1,
+ 0, 64, 32, 0, 127,253,124,1, 0, 0, 0, 0, 15, 30, 12, 0, 0, 0, 0, 0, 72, 0, 12, 0, 0, 0, 0, 0, 133,164,36, 1, 0, 0, 0, 0, 155,216,74, 0,
+ 0, 0, 0, 0, 46, 124,8, 0, 0, 0, 0, 0, 119,81, 85, 1, 0, 0, 0, 0, 140,48, 84, 0, 0, 0, 0, 0, 20, 56, 14, 1, 0, 0, 0, 0, 222,112,68, 0,
+ 0, 32, 0, 0, 12, 64, 66, 0, 0, 32, 0, 0, 64, 32, 14, 0, 0, 0, 0, 0, 145,1, 2, 0, 0, 0, 0, 0, 17, 4, 8, 0, 0, 0, 0, 0, 0, 24, 8, 1,
+ 0, 0, 0, 0, 123,249,94, 2, 0, 0, 0, 0, 76, 61, 6, 0, 0, 0, 0, 0, 17, 72, 18, 1, 0, 0, 0, 0, 24, 9, 14, 0, 0, 0, 0, 0, 12, 52, 10, 0,
+ 0, 112,36, 0, 176,25, 12, 0, 0, 32, 0, 0, 4, 24, 8, 0, 0, 0, 0, 0, 25, 73, 12, 0, 0, 0, 0, 0, 129,65, 24, 0, 0, 0, 0, 0, 255,127,126,3,
+ 0, 0, 0, 0, 228,44, 112,0, 0, 64, 0, 0, 247,223,110,3, 0, 0, 0, 0, 4, 40, 64, 0, 0, 0, 0, 0, 32, 32, 48, 0, 0, 0, 0, 0, 149,64, 72, 0,
+ 0, 0, 0, 0, 74, 60, 6, 1, 0, 32, 0, 0, 17, 113,28, 2, 0, 0, 0, 0, 98, 48, 4, 0, 0, 32, 0, 0, 16, 73, 4, 1, 0, 32, 0, 0, 224,48, 68, 1,
+ 0, 0, 0, 0, 64, 60, 6, 1, 0, 0, 0, 0, 98, 32, 8, 0, 0, 0, 0, 0, 133,9, 32, 0, 0, 0, 0, 0, 183,89, 78, 0, 0, 0, 0, 0, 145,80, 20, 2,
+ 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 209,204,28, 0, 0, 0, 0, 0, 68, 1, 8, 0, 0, 0, 0, 0, 24, 33, 4, 0, 0, 96, 62, 0, 238,122,12, 1,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 127,255,126,3, 0, 0, 0, 0, 74, 190,70, 0, 0, 0, 0, 0, 145,65, 16, 1, 0, 0, 0, 0, 0, 8, 26, 0,
+ 0, 0, 0, 0, 24, 97, 12, 0, 0, 0, 0, 0, 145,72, 18, 0, 0, 32, 5, 0, 223,253,94, 1, 0, 0, 0, 0, 68, 52, 68, 0, 0, 16, 0, 0, 1, 64, 0, 0,
+ 0, 0, 0, 0, 4, 0, 50, 0, 0, 0, 0, 0, 82, 56, 6, 1, 0, 0, 0, 0, 80, 48, 4, 0, 0, 0, 0, 0, 42, 56, 70, 0, 0, 0, 0, 0, 144,1, 18, 0,
+ 0, 0, 0, 0, 0, 33, 14, 0, 0, 0, 0, 0, 8, 0, 96, 0, 0, 0, 0, 0, 203,240,14, 0, 0, 0, 0, 0, 21, 105,2, 0, 0, 0, 0, 0, 20, 16, 5, 1,
+ 0, 112,53, 0, 8, 16, 4, 0, 0, 0, 0, 0, 36, 0, 74, 0, 0, 0, 0, 0, 49, 73, 4, 0, 0, 0, 0, 0, 8, 1, 0, 1, 0, 0, 0, 0, 21, 64, 148,2,
+ 0, 0, 0, 0, 68, 32, 2, 0, 0, 0, 0, 0, 0, 72, 20, 0, 0, 0, 0, 0, 32, 32, 8, 0, 0, 0, 0, 0, 136,40, 4, 0, 0, 0, 0, 0, 89, 120,12, 0,
+ 0, 32, 0, 0, 2, 64, 44, 0, 0, 0, 0, 0, 72, 168,80, 0, 0, 96, 2, 0, 138,144,4, 0, 0, 0, 0, 0, 148,1, 8, 1, 0, 0, 0, 0, 51, 56, 0, 0,
+ 0, 0, 0, 0, 241,255,127,3, 0, 0, 0, 0, 3, 40, 2, 0, 0, 0, 0, 0, 2, 161,4, 1, 0, 0, 0, 0, 0, 8, 12, 1, 0, 0, 0, 0, 180,64, 40, 0,
+ 0, 0, 0, 0, 20, 96, 16, 0, 0, 0, 0, 0, 176,72, 0, 0, 0, 0, 0, 0, 128,52, 8, 0, 0, 32, 0, 0, 16, 17, 4, 0, 16, 32, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 20, 40, 4, 0, 0, 0, 0, 0, 255,189,76, 1, 0, 0, 0, 0, 64, 60, 2, 0, 0, 0, 0, 0, 136,64, 8, 0, 0, 0, 0, 0, 39, 0, 0, 0,
+ 0, 0, 0, 0, 19, 81, 8, 0, 0, 0, 0, 0, 0, 8, 74, 0, 0, 0, 0, 0, 0, 16, 10, 1, 0, 0, 0, 0, 130,28, 40, 0, 0, 0, 0, 0, 96, 128,0, 0,
+ 0, 0, 0, 0, 85, 32, 0, 0, 0, 0, 0, 0, 181,93, 30, 2, 0, 0, 0, 0, 8, 28, 64, 1, 0, 0, 0, 0, 22, 9, 0, 0, 0, 0, 0, 0, 8, 8, 14, 0,
+ 0, 0, 0, 0, 42, 24, 6, 1, 0, 0, 0, 0, 21, 64, 64, 0, 0, 0, 0, 0, 5, 0, 128,0, 0, 0, 0, 0, 128,0, 24, 0, 0, 0, 0, 0, 17, 89, 18, 0,
+ 0, 0, 0, 0, 2, 32, 64, 0, 0, 0, 0, 0, 127,188,142,2, 0, 0, 0, 0, 145,8, 2, 0, 0, 0, 0, 0, 19, 5, 12, 0, 0, 0, 0, 0, 157,60, 78, 0,
+ 0, 0, 0, 0, 17, 105,42, 0, 0, 0, 0, 0, 32, 124,6, 1, 0, 0, 0, 0, 0, 69, 0, 1, 16, 0, 0, 0, 144,0, 4, 0, 0, 0, 0, 0, 164,29, 12, 0,
+ 0, 0, 0, 0, 20, 40, 6, 0, 0, 0, 0, 0, 51, 125,46, 0, 16, 0, 0, 128,0, 1, 0, 0, 0, 32, 2, 0, 65, 0, 0, 0, 0, 32, 0, 0, 88, 25, 68, 0,
+ 0, 0, 0, 0, 66, 0, 4, 0, 0, 32, 0, 0, 130,24, 64, 0, 0, 16, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 255,120,78, 3, 0, 0, 0, 0, 2, 84, 12, 0,
+ 0, 0, 0, 0, 17, 96, 24, 0, 0, 0, 0, 0, 49, 89, 2, 3, 0, 32, 2, 0, 210,41, 74, 0, 0, 0, 0, 0, 192,0, 72, 1, 0, 0, 0, 0, 133,64, 128,0,
+ 0, 0, 8, 0, 34, 48, 8, 0, 16, 8, 0, 0, 255,255,255,3, 0, 0, 0, 0, 8, 136,4, 0, 0, 0, 4, 0, 238,185,46, 0, 0, 32, 0, 0, 255,153,79, 1,
+ 0, 0, 0, 0, 148,128,8, 0, 0, 0, 0, 0, 1, 40, 0, 1, 0, 0, 0, 0, 25, 9, 12, 1, 0, 0, 0, 0, 36, 1, 0, 1, 0, 0, 0, 0, 24, 105,14, 0,
+ 0, 32, 0, 0, 179,9, 76, 3, 0, 32, 0, 0, 0, 1, 8, 0, 0, 0, 8, 0, 144,73, 68, 0, 0, 32, 0, 0, 52, 24, 6, 0, 0, 96, 45, 0, 0, 9, 12, 0,
+ 0, 32, 0, 0, 16, 8, 4, 0, 0, 32, 0, 0, 8, 16, 68, 0, 0, 0, 0, 0, 27, 33, 6, 0, 0, 0, 0, 0, 133,124,24, 0, 0, 0, 0, 0, 51, 24, 4, 0,
+ 0, 0, 0, 0, 32, 0, 128,0, 0, 0, 0, 0, 90, 123,111,1, 0, 0, 0, 0, 80, 17, 0, 0, 0, 0, 0, 0, 134,128,6, 0, 0, 0, 0, 0, 4, 36, 128,0,
+ 0, 0, 0, 0, 250,184,14, 1, 0, 0, 0, 0, 25, 44, 4, 1, 0, 0, 0, 0, 48, 40, 8, 0, 0, 0, 0, 0, 16, 41, 2, 0, 0, 0, 0, 0, 1, 112,0, 0,
+ 0, 0, 0, 0, 89, 56, 86, 1, 0, 0, 0, 0, 8, 56, 2, 0, 0, 0, 0, 0, 16, 105,2, 0, 0, 0, 0, 0, 255,188,14, 2, 0, 0, 0, 0, 114,93, 10, 1,
+ 0, 0, 0, 0, 70, 56, 2, 0, 0, 32, 0, 0, 144,32, 4, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 18, 81, 0, 0, 0, 0, 0, 0, 27, 8, 6, 0,
+ 0, 0, 0, 0, 91, 77, 14, 3, 0, 0, 0, 0, 4, 52, 6, 1, 0, 0, 0, 0, 84, 32, 12, 0, 0, 0, 2, 0, 16, 25, 0, 0, 0, 0, 0, 0, 24, 72, 4, 0,
+ 0, 0, 0, 0, 152,61, 12, 0, 0, 0, 0, 0, 0, 41, 2, 1, 0, 0, 0, 0, 194,125,4, 2, 0, 32, 0, 0, 1, 56, 4, 0, 0, 0, 0, 0, 127,221,125,3,
+ 0, 0, 0, 0, 16, 16, 10, 0, 0, 0, 0, 0, 80, 1, 2, 0, 0, 0, 0, 0, 85, 224,144,0, 0, 0, 0, 0, 4, 128,4, 0, 16, 0, 4, 0, 247,113,86, 1,
+ 0, 0, 0, 0, 4, 96, 68, 0, 0, 224,46, 0, 129,84, 92, 1, 0, 192,0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 129,8, 0, 0, 0, 0, 0, 151,77, 20, 1,
+ 0, 0, 0, 0, 0, 17, 64, 0, 0, 32, 0, 0, 188,25, 4, 0, 0, 0, 0, 0, 20, 73, 8, 0, 0, 0, 0, 0, 16, 64, 4, 2, 0, 0, 0, 0, 5, 1, 0, 0,
+ 0, 0, 0, 0, 19, 221,22, 0, 0, 0, 0, 0, 0, 152,0, 0, 0, 0, 0, 0, 0, 104,14, 1, 0, 0, 1, 0, 4, 160,4, 0, 0, 0, 0, 0, 0, 128,2, 1,
+ 0, 0, 0, 0, 8, 44, 14, 0, 0, 0, 0, 0, 72, 168,2, 0, 0, 0, 0, 0, 176,8, 12, 0, 0, 0, 0, 0, 1, 8, 72, 0, 0, 128,0, 0, 255,63, 78, 2,
+ 0, 0, 0, 0, 64, 97, 18, 0, 0, 0, 0, 0, 16, 72, 6, 1, 0, 0, 0, 0, 20, 4, 128,0, 0, 0, 0, 0, 203,1, 6, 1, 0, 0, 0, 0, 80, 9, 4, 0,
+ 0, 0, 0, 0, 112,96, 0, 0, 0, 0, 0, 0, 18, 0, 8, 0, 0, 0, 0, 0, 70, 180,4, 1, 0, 0, 0, 0, 116,32, 4, 0, 0, 0, 0, 0, 84, 4, 9, 0,
+ 0, 0, 0, 0, 128,68, 16, 0, 0, 32, 18, 0, 0, 4, 4, 0, 0, 0, 0, 0, 209,65, 6, 3, 0, 0, 0, 0, 167,173,72, 0, 0, 0, 0, 0, 4, 44, 30, 0,
+ 0, 0, 0, 0, 68, 8, 2, 0, 0, 0, 0, 0, 84, 32, 36, 0, 0, 0, 0, 0, 144,16, 16, 0, 0, 0, 0, 0, 17, 81, 12, 0, 16, 0, 0, 0, 43, 53, 78, 0,
+ 0, 0, 0, 0, 34, 112,8, 0, 0, 32, 0, 0, 12, 96, 20, 0, 0, 0, 0, 0, 0, 40, 12, 3, 0, 0, 0, 0, 25, 65, 8, 1, 0, 0, 4, 0, 24, 57, 28, 0,
+ 0, 0, 0, 0, 19, 121,20, 1, 0, 0, 0, 0, 77, 112,8, 0, 0, 0, 0, 0, 182,84, 8, 0, 0, 0, 0, 0, 51, 53, 0, 0, 0, 0, 0, 0, 177,73, 68, 2,
+ 0, 0, 0, 0, 18, 72, 0, 0, 0, 0, 0, 0, 50, 73, 0, 0, 0, 0, 0, 0, 55, 205,12, 1, 0, 0, 0, 0, 2, 25, 14, 0, 0, 0, 0, 0, 180,26, 30, 2,
+ 0, 0, 0, 0, 76, 128,12, 2, 0, 0, 0, 0, 16, 9, 66, 1, 0, 0, 0, 0, 215,176,110,0, 0, 0, 0, 0, 28, 41, 0, 0, 0, 0, 0, 0, 20, 97, 2, 0,
+ 0, 0, 0, 0, 81, 45, 68, 0, 0, 0, 0, 0, 104,48, 32, 0, 0, 0, 0, 0, 59, 63, 108,1, 0, 0, 0, 0, 17, 64, 26, 0, 0, 0, 0, 0, 68, 168,34, 1,
+ 0, 0, 0, 0, 0, 8, 72, 0, 0, 0, 0, 0, 26, 57, 4, 0, 0, 0, 0, 0, 148,5, 0, 0, 0, 0, 0, 0, 17, 89, 12, 0, 0, 0, 0, 0, 4, 36, 130,0,
+ 0, 0, 0, 0, 25, 1, 34, 1, 0, 0, 0, 0, 0, 12, 8, 1, 0, 0, 0, 0, 1, 68, 4, 1, 0, 0, 0, 0, 43, 185,14, 0, 0, 0, 0, 0, 203,57, 20, 1,
+ 0, 0, 0, 0, 243,186,110,0, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 0, 132,144,0, 0, 0, 0, 0, 0, 17, 65, 6, 0, 0, 0, 0, 0, 6, 0, 0, 2,
+ 0, 0, 0, 0, 0, 4, 128,0, 0, 0, 0, 0, 127,221,60, 3, 0, 0, 0, 0, 16, 97, 18, 1, 0, 0, 0, 0, 19, 49, 2, 0, 0, 0, 0, 0, 66, 32, 6, 0,
+ 0, 0, 0, 0, 32, 48, 2, 0, 0, 0, 0, 0, 247,113,76, 1, 0, 0, 0, 0, 2, 33, 2, 0, 0, 0, 0, 0, 67, 56, 6, 1, 0, 0, 0, 0, 16, 16, 20, 1,
+ 0, 0, 0, 0, 90, 81, 8, 0, 0, 0, 0, 0, 85, 65, 8, 0, 0, 0, 0, 0, 18, 96, 20, 3, 0, 8, 0, 0, 19, 17, 20, 0, 0, 0, 0, 0, 2, 42, 6, 0,
+ 0, 0, 0, 0, 0, 16, 70, 0, 0, 0, 0, 0, 221,125,14, 2, 0, 0, 0, 0, 128,18, 24, 0, 0, 0, 0, 0, 20, 24, 0, 0, 0, 0, 0, 0, 19, 29, 87, 0,
+ 0, 0, 0, 0, 66, 24, 6, 1, 0, 0, 0, 0, 144,9, 4, 0, 0, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 0, 156,72, 0, 0, 0, 0, 0, 0, 64, 24, 0, 0,
+ 0, 2, 0, 0, 129,196,68, 0, 0, 32, 0, 0, 12, 136,4, 0, 0, 0, 0, 0, 25, 253,60, 3, 0, 0, 0, 0, 64, 125,12, 1, 0, 0, 0, 0, 137,52, 12, 1,
+ 0, 0, 0, 0, 134,1, 24, 0, 0, 0, 0, 0, 178,17, 0, 1, 0, 0, 0, 0, 145,0, 0, 2, 0, 8, 0, 0, 157,156,14, 0, 0, 0, 0, 0, 0, 4, 70, 0,
+ 0, 0, 0, 0, 68, 169,2, 0, 0, 0, 0, 0, 21, 64, 1, 0, 0, 0, 0, 0, 181,88, 12, 2, 0, 0, 0, 0, 148,21, 0, 0, 0, 0, 0, 0, 4, 16, 6, 0,
+ 0, 0, 0, 0, 16, 57, 4, 0, 0, 0, 0, 0, 18, 5, 0, 0, 0, 0, 16, 0, 21, 200,32, 0, 0, 0, 0, 0, 0, 34, 0, 1, 0, 0, 0, 0, 8, 0, 36, 0,
+ 0, 0, 0, 0, 5, 240,6, 0, 0, 0, 0, 0, 1, 104,0, 1, 0, 0, 0, 0, 72, 36, 130,0, 0, 0, 0, 0, 18, 9, 16, 1, 0, 0, 0, 0, 24, 0, 4, 1,
+ 0, 0, 0, 0, 219,109,4, 1, 0, 0, 0, 0, 80, 16, 8, 0, 0, 0, 0, 0, 179,48, 4, 0, 0, 0, 0, 0, 0, 48, 10, 1, 0, 224,45, 0, 1, 0, 0, 0,
+ 0, 240,33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 100,22, 0, 0, 0, 0, 0, 0, 164,0, 0, 0, 0, 0, 0, 0, 12, 6, 0, 0, 0, 0, 0, 24, 21, 4, 0,
+ 0, 0, 0, 0, 236,188,46, 1, 0, 0, 0, 0, 48, 8, 8, 0, 0, 0, 0, 0, 0, 8, 12, 2, 0, 0, 0, 0, 65, 41, 10, 0, 0, 0, 0, 0, 179,59, 12, 0,
+ 0, 0, 0, 0, 145,249,4, 0, 0, 0, 0, 0, 24, 40, 2, 0, 0, 0, 0, 0, 251,72, 94, 1, 0, 32, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 145,121,4, 0,
+ 0, 0, 0, 0, 2, 8, 4, 2, 0, 0, 0, 0, 0, 40, 60, 0, 0, 0, 0, 0, 17, 5, 16, 0, 0, 0, 0, 0, 0, 34, 12, 1, 0, 0, 0, 0, 127,255,127,3,
+ 0, 32, 0, 0, 138,36, 70, 0, 0, 0, 0, 0, 5, 33, 2, 0, 0, 0, 0, 0, 144,68, 2, 0, 16, 0, 0, 0, 119,113,62, 1, 0, 0, 0, 0, 34, 56, 4, 0,
+ 0, 0, 0, 0, 12, 49, 14, 1, 0, 0, 0, 0, 187,112,4, 2, 0, 0, 0, 0, 19, 113,64, 1, 0, 32, 0, 0, 78, 48, 66, 0, 0, 0, 0, 0, 0, 48, 14, 1,
+ 0, 0, 0, 0, 3, 64, 0, 0, 0, 0, 0, 0, 1, 17, 20, 0, 0, 0, 0, 0, 58, 48, 68, 0, 0, 0, 0, 0, 144,0, 76, 0, 0, 0, 0, 0, 2, 176,66, 0,
+ 0, 96, 0, 0, 42, 64, 68, 1, 0, 0, 0, 0, 123,72, 69, 0, 0, 0, 0, 0, 236,48, 72, 0, 0, 0, 0, 0, 149,81, 72, 0, 0, 0, 0, 0, 211,84, 6, 2,
+ 0, 0, 0, 0, 22, 24, 0, 0, 0, 0, 0, 0, 164,80, 70, 0, 0, 0, 0, 0, 146,49, 64, 0, 0, 0, 0, 0, 23, 89, 22, 3, 0, 32, 8, 0, 110,248,78, 1,
+ 0, 0, 0, 0, 2, 144,68, 0, 0, 96, 4, 0, 24, 67, 28, 0, 0, 0, 0, 0, 4, 137,8, 0, 0, 8, 0, 0, 16, 1, 4, 0, 0, 0, 0, 0, 21, 40, 0, 0,
+ 0, 0, 0, 0, 84, 184,12, 2, 0, 0, 0, 0, 1, 65, 20, 1, 16, 0, 0, 0, 223,117,62, 3, 0, 0, 0, 0, 128,52, 4, 0, 0, 112,33, 0, 5, 16, 36, 0,
+ 0, 0, 0, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 160,0, 0, 0, 0, 0, 109,0, 6, 1, 0, 96, 4, 0, 30, 144,68, 0, 0, 0, 0, 0, 49, 69, 64, 2,
+ 0, 0, 0, 0, 128,12, 18, 0, 0, 0, 0, 0, 32, 32, 20, 0, 0, 0, 0, 0, 126,252,46, 1, 0, 0, 0, 0, 16, 73, 68, 0, 0, 0, 0, 0, 49, 1, 84, 1,
+ 0, 0, 0, 0, 16, 73, 12, 0, 0, 0, 0, 0, 20, 81, 4, 0, 0, 0, 0, 0, 113,157,76, 0, 0, 0, 0, 0, 41, 8, 76, 0, 0, 32, 0, 0, 0, 64, 32, 0,
+ 0, 0, 0, 0, 17, 25, 20, 1, 0, 0, 0, 0, 32, 69, 0, 0, 0, 0, 0, 0, 95, 125,126,1, 0, 0, 0, 0, 6, 44, 8, 0, 0, 0, 0, 0, 81, 0, 0, 1,
+ 0, 0, 0, 0, 81, 117,24, 2, 0, 0, 0, 0, 145,8, 0, 1, 0, 0, 0, 0, 31, 73, 20, 1, 0, 0, 0, 0, 12, 36, 0, 0, 0, 0, 0, 0, 17, 9, 18, 1,
+ 0, 0, 0, 0, 5, 0, 2, 0, 0, 0, 0, 0, 40, 8, 14, 1, 0, 0, 0, 0, 85, 36, 4, 0, 0, 0, 0, 0, 146,0, 8, 0, 0, 96, 4, 0, 75, 80, 4, 0,
+ 0, 0, 0, 0, 8, 0, 100,0, 0, 0, 0, 0, 106,0, 4, 0, 0, 0, 0, 0, 183,25, 8, 0, 0, 32, 0, 0, 162,184,6, 1, 0, 0, 0, 0, 145,81, 16, 0,
+ 0, 0, 0, 0, 181,253,28, 0, 0, 0, 0, 0, 141,53, 6, 1, 0, 0, 0, 0, 49, 8, 0, 0, 0, 96, 1, 0, 255,249,78, 2, 0, 0, 0, 0, 8, 1, 136,1,
+ 0, 32, 4, 0, 0, 9, 4, 0, 0, 0, 0, 0, 145,128,8, 0, 0, 0, 0, 0, 17, 89, 20, 1, 0, 0, 0, 0, 126,189,14, 3, 0, 0, 0, 0, 76, 0, 4, 0,
+ 0, 32, 0, 0, 24, 65, 4, 0, 0, 0, 0, 0, 65, 9, 4, 0, 0, 0, 0, 0, 153,61, 8, 0, 0, 96, 0, 0, 207,188,70, 1, 0, 0, 0, 0, 148,20, 4, 2,
+ 0, 0, 0, 0, 153,105,4, 0, 0, 0, 0, 0, 0, 168,2, 1, 0, 0, 0, 0, 60, 17, 4, 0, 16, 0, 0, 0, 155,125,14, 3, 0, 0, 0, 0, 8, 24, 38, 0,
+ 0, 0, 0, 0, 0, 40, 46, 1, 0, 0, 0, 0, 128,1, 76, 0, 0, 0, 0, 0, 17, 121,12, 0, 0, 32, 0, 0, 16, 28, 36, 0, 0, 128,0, 0, 63, 97, 48, 1,
+ 0, 0, 0, 0, 10, 160,0, 0, 0, 0, 0, 0, 6, 0, 44, 0, 0, 0, 0, 0, 10, 48, 40, 0, 0, 0, 0, 0, 138,129,16, 0, 0, 0, 0, 0, 17, 32, 16, 0,
+ 0, 96, 0, 0, 4, 24, 88, 1, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 57, 70, 0, 0, 0, 0, 0, 68, 0, 24, 0, 0, 0, 0, 0, 8, 128,0, 0,
+ 0, 0, 0, 0, 23, 45, 6, 0, 0, 0, 0, 0, 17, 8, 20, 1, 0, 0, 0, 0, 49, 41, 4, 0, 0, 0, 0, 0, 89, 124,6, 1, 0, 0, 0, 0, 238,56, 110,3,
+ 0, 0, 0, 0, 20, 81, 12, 0, 0, 0, 0, 0, 33, 48, 12, 0, 0, 0, 0, 0, 17, 113,12, 1, 0, 0, 0, 0, 209,73, 22, 0, 0, 0, 0, 0, 145,9, 0, 1,
+ 0, 0, 0, 0, 17, 11, 4, 0, 0, 0, 0, 0, 129,48, 24, 0, 0, 0, 0, 0, 17, 8, 14, 2, 0, 0, 0, 0, 0, 1, 10, 2, 0, 0, 0, 0, 31, 93, 60, 2,
+ 0, 0, 0, 0, 68, 32, 8, 0, 0, 0, 0, 0, 144,25, 8, 0, 0, 0, 0, 0, 66, 80, 5, 2, 0, 0, 0, 0, 59, 209,60, 0, 0, 0, 0, 0, 4, 41, 4, 1,
+ 0, 0, 0, 0, 17, 109,4, 0, 0, 0, 0, 0, 16, 81, 16, 0, 0, 32, 32, 0, 128,0, 8, 0, 0, 0, 0, 0, 147,1, 14, 0, 0, 0, 32, 0, 221,44, 12, 3,
+ 0, 0, 0, 0, 8, 4, 2, 1, 0, 0, 0, 0, 17, 72, 66, 0, 0, 0, 0, 0, 0, 8, 66, 1, 0, 0, 0, 0, 19, 201,26, 0, 0, 16, 1, 0, 16, 73, 6, 2,
+ 0, 112,38, 0, 8, 1, 4, 0, 0, 32, 0, 0, 8, 0, 8, 0, 0, 0, 0, 0, 2, 17, 32, 0, 0, 0, 0, 0, 48, 148,2, 1, 0, 0, 0, 0, 59, 121,78, 0,
+ 0, 0, 0, 0, 19, 65, 4, 0, 0, 0, 0, 0, 10, 0, 6, 1, 0, 0, 0, 0, 85, 32, 0, 1, 0, 0, 0, 0, 113,25, 28, 2, 0, 0, 0, 0, 183,124,29, 2,
+ 0, 0, 0, 0, 0, 37, 2, 1, 0, 0, 0, 0, 2, 49, 10, 1, 0, 0, 0, 0, 0, 9, 2, 1, 0, 0, 0, 0, 149,56, 28, 3, 0, 0, 0, 0, 20, 5, 0, 0,
+ 0, 0, 0, 0, 160,24, 8, 0, 0, 0, 0, 0, 85, 40, 12, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 32, 8, 0, 9, 1, 0, 0, 0, 0, 0, 0, 95, 252,94, 2,
+ 0, 0, 0, 0, 132,56, 8, 0, 0, 0, 0, 0, 16, 0, 2, 2, 0, 0, 0, 0, 0, 48, 24, 2, 0, 0, 0, 0, 126,136,140,0, 0, 0, 0, 0, 1, 96, 10, 0,
+ 0, 0, 0, 0, 25, 9, 8, 0, 0, 0, 0, 0, 24, 0, 20, 0, 0, 0, 0, 0, 145,224,4, 0, 0, 32, 0, 0, 79, 217,44, 0, 0, 0, 0, 0, 76, 136,140,0,
+ 0, 0, 0, 0, 21, 4, 16, 0, 0, 0, 0, 0, 16, 93, 9, 0, 0, 0, 0, 0, 64, 36, 0, 0, 16, 36, 20, 0, 255,255,255,3, 0, 0, 0, 0, 8, 25, 36, 0,
+ 16, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 125,185,110,0, 0, 0, 0, 0, 6, 160,32, 0,
+ 0, 0, 0, 0, 231,133,12, 0, 0, 32, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 5, 32, 24, 0, 0, 0, 0, 0, 5, 96, 16, 0, 0, 0, 4, 0, 91, 121,150,0,
+ 0, 0, 0, 0, 0, 8, 130,1, 0, 0, 0, 0, 64, 65, 34, 0, 0, 0, 0, 0, 8, 8, 4, 2, 0, 48, 0, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 132,6, 0,
+ 0, 0, 2, 0, 151,93, 30, 3, 0, 0, 0, 0, 132,112,2, 0, 0, 0, 0, 0, 174,184,77, 0, 0, 112,5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 72, 0,
+ 0, 0, 0, 0, 194,38, 2, 0, 0, 0, 0, 0, 16, 32, 128,1, 0, 0, 0, 0, 0, 0, 38, 1, 16, 0, 0, 0, 57, 253,30, 1, 0, 0, 0, 0, 128,40, 2, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 120,20, 0, 0, 0, 0, 0, 4, 144,12, 0, 0, 32, 0, 0, 1, 1, 4, 0,
+ 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 28, 33, 28, 3, 0, 0, 0, 0, 115,197,62, 0, 0, 0, 0, 0, 144,8, 8, 1, 0, 0, 0, 0, 215,121,90, 0,
+ 0, 0, 0, 0, 128,0, 6, 0, 0, 0, 0, 0, 25, 104,6, 0, 64, 4, 0, 0, 233,33, 12, 3, 0, 4, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 17, 0, 14, 0,
+ 0, 0, 0, 0, 0, 16, 64, 2, 0, 0, 0, 0, 145,125,16, 2, 0, 0, 0, 0, 139,48, 2, 0, 0, 64, 0, 0, 255,93, 60, 1, 0, 0, 0, 0, 68, 57, 70, 1,
+ 0, 0, 0, 0, 17, 32, 150,0, 0, 0, 0, 0, 117,38, 16, 0, 0, 0, 4, 0, 0, 129,4, 1, 0, 0, 0, 0, 145,12, 0, 0, 0, 4, 0, 0, 17, 113,84, 1,
+ 0, 0, 0, 0, 85, 32, 8, 0, 0, 0, 0, 0, 0, 16, 4, 2, 0, 0, 0, 0, 4, 33, 34, 0, 0, 0, 4, 0, 239,159,28, 1, 1, 96, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 1, 145,28, 0, 0, 64, 0, 0, 255,219,30, 2, 0, 0, 0, 0, 76, 187,138,0, 0, 32, 0, 0, 8, 32, 6, 0, 0, 32, 0, 0, 24, 0, 4, 0,
+ 0, 0, 0, 0, 32, 24, 10, 0, 0, 0, 0, 0, 72, 160,12, 0, 0, 0, 0, 0, 9, 56, 2, 0, 0, 0, 0, 0, 10, 8, 34, 0, 0, 0, 0, 0, 204,8, 12, 0,
+ 0, 0, 0, 0, 145,73, 22, 0, 0, 0, 0, 0, 4, 9, 14, 0, 0, 0, 0, 0, 13, 40, 10, 0, 0, 0, 0, 0, 37, 17, 44, 0, 0, 0, 0, 0, 1, 72, 16, 0,
+ 0, 0, 0, 0, 0, 8, 62, 0, 0, 8, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 68, 0, 4, 2, 0, 0, 0, 0, 2, 144,32, 0, 0, 0, 0, 0, 238,172,30, 1,
+ 0, 0, 0, 0, 24, 33, 0, 0, 0, 0, 0, 0, 8, 0, 40, 0, 0, 0, 0, 0, 9, 0, 146,0, 0, 4, 0, 0, 145,73, 18, 0, 0, 0, 0, 0, 4, 168,6, 0,
+ 0, 0, 0, 0, 8, 224,14, 0, 0, 0, 0, 0, 192,48, 2, 0, 0, 0, 0, 0, 68, 0, 44, 0, 0, 0, 0, 0, 16, 193,0, 0, 0, 0, 0, 0, 2, 56, 2, 0,
+ 0, 0, 0, 0, 54, 184,142,0, 0, 0, 0, 0, 117,64, 54, 0, 0, 32, 0, 0, 64, 48, 4, 0, 0, 32, 0, 0, 17, 64, 4, 0, 0, 32, 8, 0, 0, 136,0, 0,
+ 0, 0, 0, 0, 17, 0, 24, 0, 0, 0, 0, 0, 4, 128,8, 0, 0, 0, 0, 0, 6, 120,34, 0, 0, 0, 0, 0, 14, 8, 6, 0, 0, 0, 0, 0, 122,136,175,2,
+ 0, 0, 0, 0, 133,192,8, 0, 0, 0, 0, 0, 4, 56, 10, 0, 0, 0, 0, 0, 5, 0, 6, 0, 0, 0, 0, 0, 16, 33, 14, 0, 0, 0, 0, 0, 88, 40, 130,0,
+ 0, 0, 0, 0, 16, 1, 16, 1, 0, 0, 0, 0, 70, 16, 78, 0, 0, 0, 0, 0, 4, 64, 6, 0, 0, 0, 0, 0, 147,88, 118,0, 0, 0, 0, 0, 66, 56, 6, 0,
+ 0, 0, 0, 0, 2, 0, 76, 0, 0, 0, 0, 0, 160,49, 12, 0, 0, 0, 0, 0, 0, 16, 20, 0, 0, 0, 0, 0, 80, 48, 13, 0, 0, 0, 0, 0, 17, 75, 68, 0,
+ 0, 0, 0, 0, 16, 0, 96, 0, 0, 0, 0, 0, 17, 69, 20, 0, 0, 0, 0, 0, 32, 4, 4, 0, 0, 0, 0, 0, 37, 164,86, 0, 0, 0, 0, 0, 149,205,24, 0,
+ 0, 0, 0, 0, 21, 184,10, 0, 0, 0, 0, 0, 72, 160,4, 0, 0, 0, 0, 0, 33, 0, 4, 0, 0, 0, 0, 0, 96, 24, 0, 0, 0, 0, 0, 0, 17, 0, 48, 0,
+ 0, 0, 0, 0, 66, 40, 14, 0, 0, 0, 0, 0, 25, 17, 20, 0, 0, 0, 0, 0, 34, 8, 2, 0, 16, 0, 0, 0, 177,67, 50, 0, 0, 0, 0, 0, 68, 52, 0, 0,
+ 0, 0, 0, 0, 96, 40, 6, 0, 0, 32, 0, 0, 2, 8, 8, 0, 0, 32, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 32, 0, 40, 0, 0, 32, 0, 0, 127,251,126,2,
+ 0, 0, 0, 0, 68, 16, 0, 0, 0, 0, 0, 0, 0, 120,20, 0, 0, 0, 0, 0, 128,4, 16, 0, 0, 0, 0, 0, 1, 16, 8, 0, 0, 0, 0, 0, 28, 0, 24, 0,
+ 0, 0, 0, 0, 72, 8, 0, 0, 0, 0, 0, 0, 20, 128,8, 0, 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, 160,16, 0, 0, 0, 0, 0, 0, 0, 41, 128,0,
+ 0, 0, 0, 0, 6, 240,52, 0, 0, 0, 0, 0, 16, 64, 10, 0, 0, 0, 0, 0, 8, 33, 52, 0, 0, 0, 0, 0, 0, 165,32, 1, 0, 0, 0, 0, 17, 129,4, 0,
+ 0, 0, 0, 0, 4, 32, 28, 0, 0, 32, 0, 0, 16, 81, 4, 0, 0, 0, 0, 0, 68, 96, 12, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 29, 184,126,2,
+ 0, 0, 0, 0, 5, 0, 4, 2, 0, 0, 0, 0, 149,200,44, 0, 0, 0, 2, 0, 140,16, 4, 0, 0, 0, 0, 0, 17, 65, 64, 0, 0, 0, 5, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 3, 0, 16, 2, 0, 0, 0, 0, 119,125,126,3, 0, 0, 0, 0, 180,167,13, 0, 0, 0, 0, 0, 8, 40, 12, 1, 0, 0, 0, 0, 95, 112,4, 2,
+ 0, 32, 16, 0, 3, 28, 0, 0, 0, 0, 1, 0, 4, 32, 1, 0, 0, 0, 0, 0, 254,153,78, 1, 0, 0, 0, 0, 8, 0, 72, 0, 0, 0, 0, 0, 108,136,36, 0,
+ 0, 192,0, 64, 255,253,30, 0, 0, 0, 0, 0, 127,125,22, 2, 0, 32, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 3, 0, 16, 0, 0, 0, 0, 0, 129,64, 4, 0,
+ 0, 0, 0, 0, 19, 32, 0, 0, 0, 0, 0, 0, 18, 56, 26, 0, 0, 0, 0, 0, 194,0, 0, 0, 0, 0, 0, 0, 17, 81, 73, 0, 0, 0, 0, 0, 0, 20, 3, 0,
+ 0, 0, 0, 0, 202,5, 0, 2, 0, 0, 0, 0, 9, 248,12, 0, 0, 0, 0, 0, 0, 48, 6, 1, 0, 0, 0, 0, 0, 1, 78, 1, 16, 0, 0, 0, 16, 1, 0, 1,
+ 0, 8, 0, 0, 54, 184,12, 0, 0, 0, 0, 0, 128,64, 74, 0, 0, 0, 0, 0, 49, 56, 16, 1, 0, 0, 1, 0, 8, 0, 6, 0, 0, 0, 0, 0, 129,65, 34, 0,
+ 16, 0, 0, 0, 189,101,126,2, 0, 0, 0, 0, 68, 56, 4, 0, 0, 0, 1, 0, 17, 80, 24, 1, 0, 96, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0,
+ 0, 0, 0, 0, 6, 156,2, 0, 0, 96, 0, 0, 149,103,4, 0, 0, 0, 0, 0, 1, 97, 0, 0, 0, 0, 0, 0, 5, 40, 14, 1, 0, 0, 0, 0, 0, 117,12, 0,
+ 0, 0, 0, 0, 16, 97, 12, 1, 0, 0, 0, 0, 9, 64, 4, 0, 0, 0, 0, 0, 145,112,53, 2, 0, 0, 0, 0, 67, 4, 11, 0, 16, 180,0, 0, 223,255,255,3,
+ 0, 0, 0, 0, 30, 134,2, 0, 0, 80, 32, 0, 0, 0, 0, 0, 16, 16, 0, 0, 255,191,255,3, 0, 0, 0, 0, 32, 164,2, 0, 0, 0, 0, 0, 19, 73, 6, 0,
+ 0, 0, 0, 0, 0, 3, 64, 0, 0, 0, 0, 0, 149,93, 17, 0, 0, 112,34, 0, 185,217,7, 1, 0, 96, 0, 0, 16, 0, 4, 0, 0, 112,4, 0, 4, 0, 64, 0,
+ 0, 0, 0, 0, 32, 40, 100,0, 0, 96, 39, 0, 0, 1, 36, 0, 0, 0, 0, 0, 6, 176,200,0, 0, 96, 4, 0, 18, 65, 20, 1, 0, 0, 0, 0, 0, 24, 12, 2,
+ 0, 0, 0, 0, 145,73, 64, 2, 0, 32, 0, 0, 8, 34, 0, 0, 0, 0, 0, 0, 68, 36, 4, 0, 0, 0, 0, 0, 17, 32, 2, 1, 0, 0, 0, 0, 217,121,22, 0,
+ 0, 0, 0, 0, 56, 0, 64, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 32, 0, 0, 0, 0, 132,0, 0, 0, 0, 0, 11, 104,2, 0, 0, 0, 0, 0, 136,184,6, 1,
+ 0, 0, 0, 0, 146,9, 4, 0, 0, 0, 0, 0, 1, 9, 12, 0, 0, 112,38, 0, 8, 16, 6, 1, 0, 0, 0, 0, 2, 0, 96, 0, 0, 0, 0, 0, 20, 65, 0, 0,
+ 0, 0, 0, 0, 83, 229,0, 0, 0, 32, 0, 0, 1, 1, 16, 0, 0, 0, 0, 0, 0, 176,32, 0, 0, 32, 0, 0, 91, 115,92, 2, 0, 0, 0, 0, 1, 9, 6, 0,
+ 0, 32, 0, 0, 0, 129,0, 0, 0, 0, 0, 0, 16, 8, 6, 1, 0, 240,63, 0, 223,222,78, 1, 0, 0, 0, 0, 17, 44, 6, 0, 0, 96, 0, 0, 2, 8, 4, 0,
+ 0, 36, 0, 0, 223,101,126,3, 0, 0, 0, 0, 20, 4, 12, 1, 0, 0, 0, 0, 1, 129,0, 0, 0, 0, 0, 0, 0, 65, 0, 2, 0, 0, 0, 0, 21, 45, 76, 3,
+ 0, 0, 0, 0, 16, 4, 0, 2, 0, 0, 0, 0, 21, 36, 14, 0, 0, 0, 0, 0, 148,0, 4, 2, 0, 0, 0, 0, 1, 64, 0, 2, 0, 0, 0, 0, 32, 0, 100,0,
+ 0, 0, 0, 0, 16, 36, 4, 0, 0, 0, 0, 0, 36, 0, 116,0, 0, 0, 0, 0, 21, 213,4, 2, 0, 104,0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 0, 1, 192,68, 0, 0, 0, 0, 0, 223,125,55, 2, 0, 0, 0, 0, 12, 56, 12, 0, 0, 0, 0, 0, 12, 16, 4, 0, 0, 0, 0, 0, 132,12, 4, 2,
+ 0, 0, 0, 0, 9, 8, 8, 0, 0, 0, 1, 0, 20, 253,76, 0, 0, 0, 0, 0, 4, 100,0, 0, 0, 240,6, 0, 207,190,206,0, 0, 192,2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 129,65, 14, 0, 0, 0, 0, 0, 142,48, 6, 0, 0, 0, 0, 0, 24, 129,8, 0, 0, 0, 0, 0, 64, 0, 5, 2, 0, 0, 0, 0, 10, 48, 22, 0,
+ 0, 0, 0, 0, 24, 0, 12, 0, 0, 128,0, 0, 136,32, 0, 0, 0, 0, 0, 0, 1, 0, 132,0, 0, 32, 0, 0, 159,126,78, 2, 0, 0, 0, 0, 2, 168,102,0,
+ 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 2, 0, 128,0, 0, 0, 0, 0, 16, 17, 64, 2, 0, 0, 0, 0, 1, 1, 16, 1, 0, 32, 0, 0, 18, 17, 8, 3,
+ 0, 16, 0, 0, 17, 73, 2, 0, 0, 16, 0, 0, 0, 160,0, 1, 0, 0, 0, 0, 255,254,126,2, 0, 0, 0, 0, 8, 40, 34, 0, 0, 0, 0, 0, 119,187,13, 0,
+ 0, 0, 0, 0, 128,8, 0, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 128,20, 0, 0, 0, 32, 0, 0, 27, 9, 66, 2, 0, 48, 32, 0, 8, 52, 0, 0,
+ 0, 0, 0, 0, 2, 128,46, 2, 0, 0, 32, 0, 20, 49, 4, 0, 0, 96, 0, 0, 150,65, 86, 1, 0, 0, 0, 0, 24, 1, 4, 1, 0, 0, 0, 0, 0, 1, 36, 0,
+ 0, 0, 0, 0, 89, 77, 76, 0, 0, 32, 0, 0, 34, 16, 0, 0, 0, 0, 0, 0, 17, 209,0, 0, 0, 0, 0, 0, 0, 32, 2, 2, 0, 32, 0, 0, 93, 117,15, 2,
+ 0, 0, 0, 0, 16, 8, 40, 0, 0, 0, 0, 0, 36, 96, 4, 0, 0, 32, 0, 0, 17, 5, 2, 1, 0, 32, 0, 0, 128,34, 0, 0, 0, 0, 0, 0, 32, 8, 14, 1,
+ 0, 0, 0, 0, 112,32, 4, 0, 0, 96, 4, 0, 38, 4, 4, 1, 0, 0, 0, 0, 20, 64, 38, 0, 0, 0, 0, 0, 32, 168,16, 0, 0, 0, 0, 0, 66, 2, 0, 0,
+ 0, 0, 0, 0, 128,132,4, 0, 0, 0, 0, 0, 91, 125,62, 2, 0, 0, 0, 0, 2, 24, 16, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 16, 56, 64, 0,
+ 0, 96, 4, 0, 66, 8, 4, 0, 0, 0, 0, 0, 20, 149,92, 0, 0, 32, 0, 0, 16, 186,0, 0, 0, 240,28, 0, 0, 16, 4, 0, 0, 0, 0, 0, 4, 129,4, 0,
+ 0, 240,9, 0, 101,1, 4, 0, 0, 0, 0, 0, 179,153,12, 0, 0, 0, 0, 0, 8, 32, 128,0, 0, 0, 0, 0, 18, 5, 6, 0, 0, 32, 0, 0, 16, 8, 6, 0,
+ 0, 0, 0, 0, 2, 4, 64, 0, 0, 128,0, 0, 0, 66, 8, 0, 0, 0, 0, 0, 128,0, 128,0, 0, 0, 0, 0, 17, 97, 18, 0, 0, 0, 0, 0, 2, 96, 16, 0,
+ 0, 0, 0, 0, 68, 4, 0, 1, 0, 0, 0, 0, 0, 40, 132,0, 0, 0, 0, 0, 2, 0, 130,0, 0, 0, 0, 0, 81, 16, 4, 0, 0, 0, 0, 0, 17, 13, 8, 0,
+ 0, 32, 0, 0, 27, 23, 4, 0, 0, 96, 4, 0, 2, 64, 4, 1, 0, 0, 0, 0, 17, 17, 0, 1, 0, 96, 38, 0, 78, 130,4, 2, 0, 0, 0, 0, 217,166,206,2,
+ 0, 0, 0, 0, 0, 40, 92, 2, 0, 0, 0, 0, 65, 67, 4, 0, 0, 0, 32, 0, 1, 66, 32, 0, 0, 32, 0, 0, 8, 6, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0,
+ 0, 0, 0, 0, 18, 56, 8, 2, 0, 0, 0, 0, 0, 0, 144,0, 0, 0, 0, 0, 4, 0, 146,1, 0, 0, 0, 0, 147,0, 0, 0, 0, 0, 0, 0, 129,64, 4, 2,
+ 0, 0, 32, 0, 255,255,254,3, 0, 0, 0, 0, 14, 100,5, 0, 0, 128,0, 0, 18, 9, 4, 0, 0, 0, 0, 0, 144,65, 66, 1, 0, 32, 32, 0, 143,56, 14, 1,
+ 0, 0, 0, 0, 2, 64, 0, 1, 0, 0, 0, 0, 17, 144,0, 0, 0, 96, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 81, 1, 4, 0, 0, 32, 0, 0, 17, 32, 4, 0,
+ 0, 240,47, 0, 95, 247,76, 1, 0, 224,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 4, 0, 0, 0, 0, 0, 0, 1, 97, 0, 1, 0, 32, 38, 0, 10, 0, 0, 0,
+ 0, 0, 0, 0, 146,81, 14, 0, 0, 96, 1, 0, 0, 0, 36, 0, 0, 0, 0, 0, 16, 1, 44, 0, 0, 32, 0, 0, 2, 8, 0, 0, 0, 96, 12, 0, 0, 17, 6, 0,
+ 0, 0, 0, 0, 81, 73, 12, 1, 0, 0, 0, 0, 20, 32, 36, 0, 0, 0, 0, 0, 223,101,29, 2, 0, 96, 0, 0, 2, 65, 44, 1, 0, 32, 2, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 32, 168,6, 0, 0, 64, 0, 0, 217,49, 6, 1, 0, 112,45, 0, 17, 1, 4, 0, 0, 0, 0, 0, 149,137,93, 0, 0, 32, 32, 0, 48, 200,8, 1,
+ 0, 96, 0, 0, 1, 129,20, 0, 0, 32, 0, 0, 0, 25, 16, 1, 0, 0, 0, 0, 21, 136,0, 0, 0, 0, 0, 0, 3, 64, 8, 0, 0, 0, 0, 0, 2, 40, 6, 0,
+ 0, 32, 0, 0, 53, 96, 6, 0, 0, 64, 0, 0, 0, 0, 16, 0, 0, 36, 0, 0, 4, 64, 2, 0, 0, 0, 0, 0, 6, 80, 24, 0, 0, 0, 0, 0, 0, 4, 80, 0,
+ 0, 0, 0, 0, 255,255,191,2, 0, 0, 0, 0, 21, 147,0, 0, 0, 0, 0, 0, 18, 1, 8, 0, 0, 0, 0, 0, 19, 1, 2, 1, 0, 0, 0, 0, 89, 69, 4, 1,
+ 0, 0, 0, 0, 136,40, 10, 0, 0, 0, 0, 0, 32, 9, 0, 0, 0, 0, 0, 0, 209,104,20, 0, 0, 0, 0, 0, 1, 105,0, 0, 0, 96, 2, 0, 10, 16, 6, 1,
+ 0, 0, 0, 0, 2, 0, 8, 1, 0, 0, 0, 0, 16, 5, 16, 0, 0, 0, 0, 0, 21, 73, 20, 1, 0, 0, 0, 0, 16, 176,4, 0, 0, 0, 0, 0, 21, 66, 28, 1,
+ 0, 32, 4, 0, 0, 32, 6, 0, 0, 32, 0, 0, 17, 96, 16, 0, 0, 96, 1, 0, 3, 32, 12, 0, 0, 32, 0, 0, 0, 0, 4, 2, 0, 232,0, 0, 17, 0, 0, 0,
+ 0, 176,8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 200,0, 0, 0, 64, 0, 0, 16, 19, 20, 1, 0, 0, 0, 0, 125,71, 12, 0, 0, 0, 0, 0, 1, 68, 24, 0,
+ 0, 232,0, 0, 19, 2, 4, 0, 0, 64, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,25, 65, 0, 0, 0, 0, 0, 21, 240,24, 0, 0, 120,16, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 48, 81, 4, 1, 0, 0, 0, 0, 8, 64, 10, 0, 0, 0, 0, 0, 93, 117,6, 1, 0, 0, 0, 0, 8, 34, 4, 1, 0, 0, 0, 0, 0, 4, 64, 2,
+ 0, 0, 0, 0, 92, 38, 4, 0, 0, 16, 0, 0, 12, 128,8, 0, 0, 0, 0, 0, 128,5, 28, 0, 0, 0, 1, 0, 57, 89, 16, 1, 0, 0, 0, 0, 32, 16, 16, 1,
+ 0, 0, 0, 0, 37, 32, 4, 0, 0, 240,32, 0, 83, 65, 0, 0, 0, 0, 0, 0, 0, 72, 36, 0, 16, 100,32, 0, 255,255,127,3, 0, 64, 0, 0, 32, 8, 0, 0,
+ 0, 32, 0, 0, 255,255,127,3, 0, 0, 0, 0, 2, 37, 94, 2, 0, 0, 0, 0, 151,73, 18, 3, 0, 0, 0, 0, 14, 44, 10, 0, 0, 0, 0, 0, 64, 40, 2, 0,
+ 0, 0, 0, 0, 2, 64, 16, 0, 0, 0, 0, 0, 8, 12, 12, 0, 0, 0, 0, 0, 144,141,32, 3, 0, 0, 0, 0, 0, 84, 0, 1, 0, 0, 0, 0, 153,105,18, 1,
+ 0, 0, 0, 0, 0, 149,2, 0, 0, 0, 0, 0, 0, 52, 6, 0, 0, 0, 0, 0, 137,248,78, 0, 0, 0, 0, 0, 0, 145,0, 0, 0, 0, 0, 0, 48, 5, 10, 0,
+ 0, 0, 0, 0, 81, 73, 16, 1, 0, 0, 0, 0, 0, 48, 66, 1, 0, 0, 0, 0, 17, 105,18, 0, 0, 0, 0, 0, 144,104,66, 0, 0, 0, 0, 0, 107,238,78, 2,
+ 0, 0, 0, 0, 81, 64, 0, 2, 0, 0, 0, 0, 9, 77, 0, 0, 0, 0, 0, 0, 153,69, 24, 0, 0, 96, 0, 0, 140,48, 110,0, 0, 0, 0, 0, 255,221,60, 1,
+ 0, 0, 0, 0, 160,60, 94, 0, 0, 0, 0, 0, 144,109,46, 1, 0, 0, 0, 0, 72, 0, 64, 0, 0, 0, 0, 0, 9, 6, 0, 0, 0, 0, 0, 0, 237,60, 132,0,
+ 0, 0, 0, 0, 65, 69, 4, 0, 0, 0, 0, 0, 148,128,8, 2, 0, 0, 0, 0, 3, 17, 64, 0, 0, 0, 0, 0, 179,81, 20, 0, 0, 0, 0, 0, 128,56, 6, 0,
+ 0, 32, 0, 0, 129,32, 38, 1, 0, 0, 0, 0, 16, 96, 12, 0, 0, 0, 0, 0, 19, 0, 16, 1, 0, 0, 0, 0, 144,0, 32, 2, 0, 0, 0, 0, 32, 32, 2, 0,
+ 0, 0, 0, 0, 65, 160,8, 2, 0, 0, 0, 0, 23, 253,22, 0, 0, 0, 0, 0, 8, 45, 30, 2, 0, 0, 0, 0, 153,56, 2, 0, 0, 0, 0, 0, 16, 124,2, 1,
+ 0, 32, 0, 0, 17, 12, 0, 0, 0, 0, 0, 0, 24, 0, 0, 2, 0, 0, 0, 0, 177,112,20, 0, 0, 0, 0, 0, 93, 247,92, 3, 0, 0, 0, 0, 219,61, 78, 2,
+ 0, 0, 0, 0, 17, 65, 26, 1, 0, 0, 0, 0, 132,0, 2, 0, 0, 0, 0, 0, 137,220,46, 0, 0, 0, 0, 0, 1, 72, 130,0, 0, 0, 0, 0, 17, 160,4, 0,
+ 0, 0, 0, 0, 8, 160,22, 0, 0, 0, 0, 0, 41, 96, 4, 3, 0, 0, 0, 0, 145,97, 2, 2, 0, 0, 0, 0, 128,168,6, 0, 0, 0, 0, 0, 49, 237,22, 0,
+ 0, 0, 0, 0, 136,48, 16, 0, 0, 0, 0, 0, 8, 65, 64, 0, 0, 0, 0, 0, 145,8, 4, 0, 0, 32, 0, 0, 223,255,126,3, 0, 0, 0, 0, 110,255,28, 1,
+ 0, 0, 0, 0, 17, 65, 16, 2, 0, 0, 0, 0, 16, 104,8, 1, 0, 96, 0, 0, 9, 1, 68, 0, 0, 0, 0, 0, 82, 52, 4, 3, 0, 32, 0, 0, 17, 4, 4, 0,
+ 0, 0, 0, 0, 209,81, 4, 1, 0, 0, 0, 0, 5, 1, 0, 1, 0, 0, 0, 0, 16, 68, 14, 0, 0, 32, 0, 0, 0, 168,4, 2, 0, 0, 0, 0, 0, 12, 12, 0,
+ 0, 0, 0, 0, 32, 128,32, 0, 0, 32, 0, 0, 17, 1, 0, 1, 0, 0, 0, 0, 49, 65, 4, 0, 0, 0, 0, 0, 128,33, 8, 0, 0, 0, 0, 0, 149,89, 20, 1,
+ 0, 0, 0, 0, 157,245,28, 2, 0, 0, 0, 0, 134,41, 10, 1, 0, 0, 0, 0, 16, 56, 2, 1, 0, 0, 0, 0, 65, 49, 18, 1, 0, 0, 0, 0, 32, 16, 64, 0,
+ 0, 0, 0, 0, 21, 52, 0, 0, 0, 0, 0, 0, 17, 121,16, 0, 0, 32, 0, 0, 2, 48, 0, 1, 0, 0, 0, 0, 2, 24, 2, 0, 0, 0, 0, 0, 24, 48, 12, 0,
+ 0, 0, 0, 0, 17, 121,18, 0, 0, 0, 0, 0, 66, 56, 2, 0, 0, 0, 0, 0, 0, 1, 24, 1, 0, 32, 0, 0, 149,127,94, 3, 0, 0, 0, 0, 6, 56, 6, 0,
+ 0, 32, 4, 0, 0, 0, 2, 0, 0, 96, 0, 0, 154,0, 68, 0, 0, 0, 0, 0, 129,96, 70, 0, 0, 0, 0, 0, 7, 1, 16, 0, 0, 0, 0, 0, 136,0, 2, 0,
+ 0, 0, 0, 0, 9, 32, 16, 0, 0, 0, 0, 0, 19, 48, 0, 0, 0, 0, 0, 0, 63, 253,14, 2, 0, 0, 0, 0, 160,16, 16, 0, 0, 0, 0, 0, 128,128,16, 0,
+ 0, 0, 0, 0, 17, 77, 16, 1, 0, 0, 0, 0, 8, 42, 0, 0, 0, 0, 0, 0, 21, 1, 20, 0, 0, 0, 0, 0, 207,61, 14, 0, 0, 0, 0, 0, 53, 72, 78, 0,
+ 0, 0, 0, 0, 0, 52, 12, 0, 0, 0, 0, 0, 155,81, 16, 0, 0, 0, 0, 0, 2, 52, 2, 0, 0, 0, 0, 0, 0, 66, 8, 0, 0, 0, 0, 0, 20, 16, 2, 0,
+ 0, 0, 0, 0, 128,116,0, 1, 0, 0, 0, 0, 13, 165,4, 1, 0, 0, 0, 0, 31, 51, 54, 0, 0, 32, 2, 0, 0, 4, 0, 0, 0, 32, 0, 0, 255,255,254,3,
+ 0, 0, 0, 0, 236,56, 110,1, 0, 0, 0, 0, 64, 8, 0, 1, 0, 0, 0, 0, 2, 41, 4, 0, 0, 0, 0, 0, 144,73, 12, 1, 0, 0, 0, 0, 19, 73, 0, 0,
+ 0, 0, 0, 0, 129,5, 4, 0, 0, 0, 0, 0, 9, 9, 2, 2, 0, 0, 0, 0, 238,184,110,2, 0, 0, 0, 0, 19, 1, 20, 1, 0, 0, 0, 0, 17, 72, 20, 1,
+ 0, 0, 0, 0, 20, 0, 2, 1, 0, 0, 0, 0, 149,64, 4, 0, 0, 0, 0, 0, 33, 8, 0, 0, 0, 0, 0, 0, 80, 8, 4, 0, 0, 0, 0, 0, 16, 120,6, 0,
+ 0, 0, 0, 0, 238,255,14, 2, 0, 0, 0, 0, 145,72, 8, 0, 0, 0, 0, 0, 145,12, 92, 0, 0, 0, 0, 0, 145,0, 12, 2, 0, 32, 0, 0, 3, 8, 4, 0,
+ 0, 0, 0, 0, 17, 5, 20, 0, 0, 0, 0, 0, 29, 253,44, 2, 0, 0, 0, 0, 138,16, 0, 0, 0, 0, 0, 64, 0, 1, 4, 0, 0, 0, 0, 0, 128,132,0, 0,
+ 0, 0, 0, 0, 17, 113,20, 1, 0, 0, 0, 0, 0, 48, 66, 0, 0, 0, 0, 0, 146,48, 10, 1, 0, 0, 0, 0, 64, 48, 80, 0, 0, 112,6, 0, 19, 18, 68, 0,
+ 0, 0, 0, 0, 16, 96, 8, 3, 0, 0, 0, 0, 51, 249,4, 0, 0, 0, 0, 0, 16, 8, 16, 0, 0, 0, 0, 0, 177,237,12, 0, 0, 32, 0, 0, 121,255,78, 3,
+ 0, 0, 0, 0, 73, 33, 2, 0, 0, 0, 0, 0, 17, 73, 2, 2, 0, 0, 0, 0, 4, 0, 128,1, 0, 0, 0, 0, 43, 13, 8, 1, 0, 0, 0, 0, 5, 28, 6, 0,
+ 0, 0, 0, 0, 89, 65, 64, 1, 0, 0, 0, 0, 8, 48, 18, 0, 0, 0, 0, 0, 15, 24, 78, 1, 0, 0, 0, 0, 2, 32, 22, 1, 0, 32, 0, 0, 17, 97, 84, 0,
+ 0, 32, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 202,52, 112,0, 0, 0, 0, 0, 129,172,8, 0, 0, 0, 0, 0, 119,253,110,3, 0, 0, 0, 0, 16, 64, 4, 1,
+ 0, 0, 0, 0, 32, 0, 34, 0, 0, 0, 0, 0, 4, 60, 4, 0, 0, 0, 0, 0, 144,16, 36, 0, 0, 0, 0, 0, 17, 65, 12, 0, 0, 0, 0, 0, 1, 1, 32, 1,
+ 0, 0, 0, 0, 148,76, 12, 0, 0, 0, 0, 0, 3, 32, 0, 0, 0, 0, 0, 0, 144,1, 0, 2, 0, 0, 0, 0, 147,45, 76, 2, 0, 0, 0, 0, 0, 12, 2, 1,
+ 0, 0, 0, 0, 17, 105,0, 0, 0, 0, 0, 0, 149,105,26, 2, 0, 0, 0, 0, 16, 57, 0, 0, 0, 32, 0, 0, 17, 73, 96, 0, 0, 96, 44, 0, 206,60, 6, 0,
+ 0, 0, 0, 0, 17, 137,0, 0, 0, 0, 0, 0, 158,249,76, 0, 0, 0, 0, 0, 205,96, 34, 1, 0, 8, 2, 0, 2, 16, 32, 0, 0, 0, 0, 0, 17, 89, 114,3,
+ 0, 0, 0, 0, 78, 127,94, 3, 0, 0, 0, 0, 25, 5, 5, 0, 0, 0, 0, 0, 40, 8, 4, 0, 0, 0, 0, 0, 17, 81, 36, 0, 0, 0, 0, 0, 217,225,29, 0,
+ 0, 0, 0, 0, 17, 5, 8, 0, 0, 0, 0, 0, 5, 1, 26, 0, 0, 0, 0, 0, 8, 57, 2, 1, 0, 0, 0, 0, 24, 56, 42, 0, 0, 0, 0, 0, 1, 10, 0, 0,
+ 0, 0, 0, 0, 10, 127,62, 1, 0, 0, 0, 0, 42, 56, 22, 2, 0, 0, 0, 0, 128,48, 2, 0, 0, 0, 0, 0, 19, 72, 0, 0, 0, 0, 0, 0, 16, 8, 16, 1,
+ 0, 0, 0, 0, 51, 89, 4, 1, 16, 0, 0, 0, 9, 112,70, 2, 16, 0, 0, 0, 64, 0, 8, 0, 0, 0, 0, 0, 238,172,126,0, 0, 0, 0, 0, 23, 25, 8, 1,
+ 0, 0, 0, 0, 19, 73, 8, 2, 0, 0, 0, 0, 5, 100,6, 2, 0, 0, 0, 0, 144,72, 12, 2, 0, 0, 0, 0, 209,0, 0, 0, 0, 0, 0, 0, 127,253,110,2,
+ 0, 0, 0, 0, 128,64, 18, 0, 0, 0, 0, 0, 0, 96, 64, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 32, 4, 0, 83, 211,6, 3, 0, 32, 0, 0, 130,24, 6, 1,
+ 0, 0, 0, 0, 27, 56, 10, 0, 0, 112,45, 0, 2, 16, 4, 0, 0, 0, 0, 0, 119,104,24, 0, 0, 0, 0, 0, 18, 0, 76, 0, 0, 0, 0, 0, 0, 33, 18, 0,
+ 0, 0, 0, 0, 66, 16, 76, 0, 0, 32, 0, 0, 0, 64, 8, 1, 0, 0, 0, 0, 16, 65, 4, 3, 0, 32, 0, 0, 23, 217,22, 2, 0, 32, 1, 0, 16, 8, 0, 1,
+ 0, 0, 0, 0, 221,125,46, 3, 0, 0, 0, 0, 130,34, 14, 0, 0, 0, 0, 0, 8, 33, 2, 0, 16, 0, 0, 0, 19, 41, 14, 0, 0, 0, 0, 0, 192,20, 4, 0,
+ 0, 0, 0, 0, 4, 16, 14, 0, 0, 32, 36, 0, 189,220,94, 0, 0, 32, 0, 0, 166,217,236,0, 0, 0, 0, 0, 0, 49, 2, 0, 0, 0, 0, 0, 3, 16, 10, 1,
+ 0, 0, 0, 0, 22, 96, 4, 0, 0, 0, 0, 0, 145,93, 8, 0, 0, 0, 0, 0, 17, 97, 4, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 180,140,4, 0,
+ 0, 0, 0, 0, 71, 253,126,1, 0, 0, 0, 0, 4, 44, 8, 0, 0, 0, 0, 0, 211,112,0, 0, 0, 0, 0, 0, 3, 40, 12, 0, 0, 0, 0, 0, 150,185,84, 0,
+ 0, 0, 0, 0, 66, 32, 2, 1, 0, 0, 0, 0, 16, 0, 40, 0, 0, 0, 0, 0, 132,64, 8, 0, 0, 0, 0, 0, 18, 52, 8, 0, 0, 0, 0, 0, 9, 105,4, 0,
+ 0, 0, 0, 0, 149,125,30, 2, 0, 0, 0, 0, 20, 33, 0, 0, 0, 32, 0, 0, 49, 61, 12, 1, 0, 0, 0, 0, 6, 48, 6, 0, 0, 0, 0, 0, 4, 52, 8, 0,
+ 0, 0, 0, 0, 149,37, 12, 2, 0, 0, 0, 0, 66, 52, 0, 0, 0, 0, 0, 0, 16, 16, 68, 0, 0, 0, 0, 0, 5, 80, 16, 0, 0, 0, 0, 0, 145,105,6, 1,
+ 0, 0, 0, 0, 16, 32, 64, 0, 0, 96, 8, 0, 132,4, 4, 0, 0, 0, 0, 0, 18, 16, 2, 0, 0, 8, 0, 0, 81, 69, 2, 0, 0, 0, 0, 0, 3, 16, 4, 0,
+ 0, 0, 4, 0, 8, 4, 0, 0, 0, 0, 0, 2, 17, 67, 16, 1, 0, 0, 0, 0, 255,183,126,1, 0, 0, 0, 0, 6, 128,0, 0, 0, 32, 0, 0, 16, 33, 0, 0,
+ 0, 0, 0, 0, 247,241,46, 3, 0, 0, 0, 0, 34, 52, 4, 0, 0, 0, 0, 0, 58, 48, 4, 0, 0, 0, 0, 0, 186,148,76, 0, 0, 0, 0, 0, 5, 80, 0, 0,
+ 0, 32, 0, 0, 17, 149,0, 0, 0, 0, 0, 0, 9, 68, 0, 0, 0, 0, 0, 0, 37, 128,8, 0, 0, 0, 0, 0, 85, 176,12, 2, 0, 0, 0, 0, 17, 16, 4, 0,
+ 0, 0, 0, 0, 2, 48, 106,0, 0, 0, 0, 0, 21, 68, 8, 0, 0, 0, 0, 0, 92, 37, 12, 0, 0, 0, 0, 0, 40, 4, 12, 0, 0, 0, 0, 0, 147,120,4, 0,
+ 0, 0, 0, 0, 32, 128,4, 0, 0, 0, 0, 0, 158,245,62, 0, 0, 0, 0, 0, 36, 132,2, 0, 0, 0, 0, 0, 32, 129,0, 0, 0, 0, 0, 0, 16, 101,12, 0,
+ 0, 0, 0, 0, 94, 53, 172,2, 0, 0, 0, 0, 0, 48, 36, 0, 0, 0, 0, 0, 144,0, 8, 2, 0, 72, 16, 0, 121,33, 0, 0, 0, 0, 0, 0, 19, 69, 56, 1,
+ 0, 0, 0, 0, 119,140,58, 2, 0, 0, 0, 0, 18, 10, 0, 0, 0, 0, 0, 0, 148,133,4, 0, 0, 0, 0, 0, 50, 0, 4, 0, 0, 0, 0, 0, 159,137,94, 2,
+ 0, 0, 0, 0, 44, 8, 4, 0, 0, 0, 0, 0, 116,232,44, 2, 0, 0, 0, 0, 16, 20, 6, 0, 0, 0, 0, 0, 32, 128,38, 0, 0, 32, 40, 0, 144,88, 4, 0,
+ 0, 32, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 176,128,0, 0, 0, 0, 0, 0, 16, 136,4, 0, 0, 0, 0, 0, 62, 204,222,1, 0, 0, 0, 0, 25, 65, 4, 0,
+ 0, 0, 0, 0, 14, 136,2, 0, 0, 0, 0, 0, 32, 132,0, 0, 0, 0, 0, 0, 16, 16, 4, 1, 0, 0, 0, 0, 32, 197,0, 0, 0, 0, 0, 0, 16, 129,2, 0,
+ 0, 0, 0, 0, 144,64, 76, 0, 0, 0, 0, 0, 17, 41, 4, 0, 0, 0, 0, 0, 28, 136,12, 0, 0, 0, 0, 0, 16, 64, 48, 0, 0, 0, 0, 0, 144,0, 12, 2,
+ 0, 0, 0, 0, 19, 73, 22, 3, 0, 0, 0, 0, 4, 36, 6, 1, 0, 80, 0, 0, 2, 40, 2, 0, 0, 0, 0, 0, 145,69, 20, 2, 0, 0, 0, 0, 18, 2, 0, 0,
+ 0, 0, 0, 0, 145,29, 0, 0, 0, 0, 0, 0, 76, 61, 32, 0, 0, 0, 0, 0, 198,185,78, 0, 0, 0, 0, 0, 18, 8, 4, 2, 0, 0, 0, 0, 16, 49, 0, 0,
+ 0, 0, 0, 0, 34, 16, 8, 0, 0, 0, 0, 0, 32, 164,4, 0, 0, 0, 0, 0, 2, 160,68, 0, 0, 0, 0, 0, 0, 2, 12, 2, 0, 0, 0, 0, 33, 89, 18, 0,
+ 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 81, 121,22, 0, 0, 0, 0, 0, 0, 44, 10, 0, 0, 0, 0, 0, 146,17, 4, 0, 0, 0, 0, 0, 4, 44, 46, 2,
+ 0, 0, 0, 0, 145,69, 20, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 12, 144,14, 0, 0, 0, 0, 0, 159,253,92, 1, 0, 0, 0, 0, 196,36, 78, 0,
+ 0, 0, 0, 0, 128,38, 4, 0, 0, 0, 0, 0, 7, 36, 4, 0, 0, 0, 0, 0, 145,80, 0, 0, 0, 0, 0, 0, 17, 81, 2, 1, 0, 0, 0, 0, 110,180,38, 2,
+ 0, 0, 0, 0, 144,0, 4, 2, 0, 0, 0, 0, 19, 249,20, 0, 0, 0, 0, 0, 8, 44, 10, 0, 0, 0, 0, 0, 127,119,78, 3, 0, 0, 0, 0, 0, 52, 10, 0,
+ 0, 0, 0, 0, 36, 36, 40, 0, 0, 0, 0, 0, 84, 38, 12, 0, 0, 0, 0, 0, 16, 160,100,0, 0, 0, 0, 0, 1, 44, 4, 0, 0, 0, 0, 0, 70, 173,14, 1,
+ 0, 0, 0, 0, 129,21, 0, 0, 0, 0, 0, 0, 84, 1, 12, 2, 0, 0, 0, 0, 53, 141,6, 0, 0, 32, 0, 0, 4, 40, 12, 1, 0, 0, 0, 0, 4, 44, 10, 0,
+ 0, 0, 0, 0, 255,245,126,3, 0, 0, 0, 0, 6, 173,8, 0, 0, 0, 0, 0, 144,0, 16, 2, 0, 0, 0, 0, 1, 32, 76, 1, 0, 0, 0, 0, 242,177,6, 0,
+ 0, 0, 0, 0, 4, 56, 32, 0, 0, 0, 0, 0, 145,24, 8, 0, 0, 0, 0, 0, 208,36, 18, 2, 0, 0, 0, 0, 151,93, 28, 3, 0, 0, 0, 0, 4, 44, 2, 0,
+ 0, 0, 0, 0, 17, 5, 0, 1, 0, 0, 0, 0, 22, 100,10, 0, 0, 0, 0, 0, 32, 0, 102,0, 0, 0, 0, 0, 17, 81, 20, 0, 0, 0, 0, 0, 17, 69, 18, 1,
+ 0, 0, 0, 0, 4, 4, 52, 0, 0, 32, 0, 0, 149,105,30, 3, 0, 0, 0, 0, 0, 164,98, 0, 0, 0, 0, 0, 107,44, 14, 1, 0, 0, 0, 0, 2, 8, 32, 0,
+ 0, 0, 0, 0, 4, 77, 12, 0, 0, 0, 0, 0, 1, 37, 8, 1, 0, 0, 0, 0, 4, 8, 10, 0, 0, 0, 0, 0, 1, 105,8, 0, 0, 0, 0, 0, 28, 77, 4, 0,
+ 0, 0, 0, 0, 128,0, 0, 3, 0, 0, 0, 0, 4, 0, 68, 0, 0, 0, 0, 0, 145,89, 16, 1, 0, 0, 0, 0, 0, 36, 10, 0, 0, 0, 0, 0, 21, 100,4, 0,
+ 0, 0, 0, 0, 4, 17, 128,1, 0, 0, 32, 0, 17, 101,22, 3, 0, 0, 0, 0, 255,191,124,3, 0, 0, 0, 0, 66, 144,8, 0, 0, 0, 0, 0, 144,0, 24, 0,
+ 0, 0, 0, 0, 20, 97, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 19, 177,0, 0, 0, 0, 0, 0, 85, 67, 76, 2, 0, 0, 0, 0, 17, 109,4, 2,
+ 0, 0, 0, 0, 8, 0, 64, 1, 0, 0, 0, 0, 0, 32, 40, 0, 0, 0, 0, 0, 4, 68, 8, 2, 0, 0, 0, 0, 36, 0, 68, 0, 0, 0, 0, 0, 144,20, 4, 2,
+ 0, 0, 0, 0, 247,191,124,1, 0, 0, 0, 0, 64, 16, 8, 0, 0, 0, 0, 0, 72, 48, 12, 0, 0, 0, 0, 0, 150,24, 4, 0, 0, 0, 0, 0, 16, 152,4, 0,
+ 0, 0, 0, 0, 24, 37, 8, 2, 0, 0, 0, 0, 193,5, 4, 1, 0, 0, 0, 0, 4, 8, 4, 2, 0, 0, 0, 0, 64, 8, 12, 2, 0, 0, 0, 0, 18, 33, 0, 0,
+ 0, 0, 0, 0, 94, 252,44, 3, 0, 0, 0, 0, 160,4, 0, 0, 0, 0, 0, 0, 66, 36, 14, 0, 0, 0, 0, 0, 80, 68, 4, 0, 0, 32, 0, 0, 144,148,12, 0,
+ 0, 0, 0, 0, 17, 49, 16, 0, 0, 32, 0, 0, 72, 48, 0, 0, 0, 0, 0, 0, 17, 75, 0, 1, 0, 0, 0, 0, 16, 44, 0, 0, 0, 32, 0, 0, 17, 32, 0, 0,
+ 0, 32, 0, 0, 17, 4, 0, 0, 0, 0, 0, 0, 32, 168,0, 0, 0, 0, 0, 0, 16, 1, 8, 2, 0, 0, 0, 0, 246,253,125,1, 0, 0, 0, 0, 194,60, 12, 2,
+ 0, 0, 0, 0, 144,16, 4, 0, 0, 0, 0, 0, 5, 9, 0, 0, 0, 0, 0, 0, 16, 148,2, 0, 0, 0, 0, 0, 27, 69, 4, 0, 0, 0, 0, 0, 32, 193,0, 0,
+ 0, 0, 0, 0, 132,32, 12, 0, 0, 0, 0, 0, 64, 128,12, 0, 0, 0, 0, 0, 92, 159,12, 3, 0, 0, 0, 0, 66, 24, 10, 0, 0, 0, 0, 0, 2, 0, 4, 2,
+ 0, 0, 0, 0, 146,25, 102,0, 0, 0, 0, 0, 1, 133,4, 0, 0, 0, 0, 0, 148,68, 12, 2, 0, 0, 0, 0, 0, 48, 32, 0, 0, 0, 0, 0, 72, 168,44, 2,
+ 0, 0, 0, 0, 128,9, 8, 0, 0, 0, 0, 0, 4, 16, 68, 0, 0, 0, 0, 0, 0, 52, 68, 2, 0, 32, 0, 0, 145,1, 94, 3, 0, 0, 0, 0, 132,58, 58, 1,
+ 0, 0, 0, 0, 18, 2, 128,0, 0, 0, 1, 0, 0, 0, 128,0, 0, 0, 0, 0, 255,255,78, 3, 0, 0, 0, 0, 0, 61, 10, 0, 0, 0, 0, 0, 64, 64, 8, 0,
+ 0, 0, 0, 0, 17, 73, 22, 0, 0, 0, 0, 0, 21, 44, 12, 0, 0, 0, 0, 0, 17, 4, 0, 2, 0, 0, 0, 0, 145,5, 16, 2, 0, 0, 0, 0, 17, 25, 8, 0,
+ 0, 0, 0, 0, 17, 72, 18, 2, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 0, 0, 0, 105,0, 0, 0, 0, 0, 0, 134,181,14, 0, 0, 0, 0, 0, 0, 32, 4, 3,
+ 0, 0, 0, 0, 49, 32, 6, 0, 0, 0, 0, 0, 25, 40, 14, 0, 0, 0, 0, 0, 16, 12, 4, 0, 0, 0, 0, 0, 4, 136,8, 2, 0, 0, 0, 0, 0, 12, 72, 0,
+ 0, 0, 0, 0, 17, 73, 20, 0, 0, 0, 0, 0, 128,1, 18, 0, 0, 0, 0, 0, 151,223,76, 2, 0, 0, 0, 0, 68, 4, 4, 0, 0, 0, 0, 0, 129,0, 0, 2,
+ 0, 0, 0, 0, 1, 17, 16, 1, 0, 0, 0, 0, 51, 153,3, 0, 0, 0, 0, 0, 0, 120,6, 0, 0, 32, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 129,9, 0, 0,
+ 0, 0, 0, 0, 93, 93, 76, 2, 0, 0, 0, 0, 17, 9, 26, 0, 0, 0, 0, 0, 68, 112,4, 1, 0, 0, 0, 0, 148,16, 8, 0, 0, 0, 0, 0, 145,24, 32, 0,
+ 0, 0, 0, 0, 0, 156,0, 0, 0, 0, 0, 0, 53, 133,6, 0, 0, 0, 0, 0, 127,237,94, 3, 0, 0, 0, 0, 0, 1, 4, 3, 0, 0, 0, 0, 0, 12, 8, 0,
+ 0, 0, 0, 0, 213,8, 12, 0, 0, 0, 0, 0, 136,4, 68, 0, 0, 0, 0, 0, 133,4, 8, 0, 0, 0, 0, 0, 149,65, 24, 3, 0, 0, 0, 0, 0, 164,44, 0,
+ 0, 0, 0, 0, 0, 65, 64, 1, 0, 0, 0, 0, 149,37, 28, 2, 0, 0, 0, 0, 1, 45, 0, 0, 0, 0, 0, 0, 149,41, 28, 3, 0, 0, 0, 0, 17, 40, 0, 1,
+ 0, 0, 0, 0, 136,33, 0, 0, 0, 0, 0, 0, 3, 132,0, 0, 0, 0, 0, 0, 17, 49, 0, 1, 0, 0, 0, 0, 16, 152,10, 0, 0, 0, 0, 0, 4, 183,14, 2,
+ 0, 0, 0, 0, 25, 44, 8, 0, 0, 0, 0, 0, 16, 4, 16, 0, 0, 0, 0, 0, 211,255,30, 2, 0, 32, 0, 0, 16, 0, 6, 0, 0, 0, 0, 0, 4, 36, 8, 0,
+ 0, 0, 0, 0, 0, 5, 20, 0, 16, 252,18, 0, 255,255,252,3, 0, 0, 0, 0, 6, 49, 55, 0, 0, 0, 0, 0, 69, 40, 189,0, 0, 0, 0, 0, 16, 128,18, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 36, 12, 0, 0, 0, 0, 0, 27, 77, 30, 1, 0, 0, 0, 0, 10, 48, 26, 1, 0, 0, 0, 0, 66, 64, 2, 0,
+ 0, 0, 0, 0, 1, 88, 2, 0, 0, 0, 0, 0, 80, 49, 54, 1, 0, 0, 0, 0, 25, 33, 4, 0, 0, 0, 0, 0, 8, 36, 8, 0, 0, 0, 0, 0, 20, 0, 1, 0,
+ 0, 0, 0, 0, 128,4, 1, 0, 0, 0, 0, 0, 0, 48, 0, 3, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 145,93, 31, 3, 0, 0, 0, 0, 0, 33, 60, 3,
+ 0, 0, 0, 0, 40, 4, 70, 1, 0, 0, 0, 0, 25, 0, 8, 0, 0, 0, 0, 0, 0, 161,10, 0, 0, 0, 0, 0, 17, 121,4, 0, 0, 0, 0, 0, 68, 48, 54, 1,
+ 0, 0, 0, 0, 27, 121,92, 1, 0, 64, 0, 0, 66, 36, 68, 1, 0, 0, 0, 0, 11, 40, 70, 0, 0, 0, 0, 0, 64, 32, 16, 0, 0, 32, 0, 0, 106,24, 12, 0,
+ 0, 0, 0, 0, 192,24, 46, 0, 0, 0, 0, 0, 49, 77, 18, 0, 0, 0, 0, 0, 4, 32, 62, 1, 0, 0, 0, 0, 0, 16, 34, 0, 0, 0, 0, 0, 17, 32, 10, 0,
+ 0, 0, 0, 0, 16, 104,22, 1, 0, 0, 0, 0, 92, 0, 10, 0, 0, 0, 0, 0, 0, 48, 8, 2, 0, 0, 0, 0, 81, 121,86, 0, 0, 0, 0, 0, 12, 48, 14, 2,
+ 0, 0, 0, 0, 65, 0, 8, 0, 0, 0, 0, 0, 98, 16, 5, 0, 0, 0, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 0, 96, 72, 0, 0, 0, 0, 0, 17, 113,26, 0,
+ 0, 0, 0, 0, 0, 130,10, 0, 0, 0, 0, 0, 0, 48, 18, 0, 0, 0, 0, 0, 78, 236,14, 2, 0, 0, 0, 0, 208,64, 12, 0, 0, 0, 0, 0, 8, 16, 4, 1,
+ 0, 0, 0, 0, 17, 192,16, 2, 0, 0, 0, 0, 0, 41, 4, 1, 0, 0, 0, 0, 145,113,4, 1, 0, 0, 0, 0, 178,57, 110,1, 0, 0, 0, 0, 136,0, 0, 1,
+ 0, 0, 0, 0, 17, 32, 12, 0, 0, 0, 0, 0, 32, 0, 72, 0, 0, 0, 0, 0, 17, 77, 16, 0, 0, 32, 0, 0, 0, 44, 8, 0, 0, 0, 0, 0, 6, 112,8, 0,
+ 0, 0, 0, 0, 129,128,0, 0, 0, 0, 0, 0, 59, 213,20, 1, 0, 0, 0, 0, 77, 33, 142,3, 0, 0, 0, 0, 69, 33, 8, 0, 0, 0, 0, 0, 4, 4, 15, 0,
+ 0, 0, 0, 0, 29, 77, 30, 0, 0, 0, 0, 0, 5, 0, 14, 1, 0, 32, 0, 0, 128,65, 52, 1, 0, 32, 0, 0, 0, 0, 18, 1, 0, 32, 0, 0, 16, 0, 4, 3,
+ 0, 0, 0, 0, 21, 33, 6, 0, 0, 0, 0, 0, 20, 0, 10, 0, 0, 0, 0, 0, 0, 97, 30, 0, 0, 0, 0, 0, 8, 1, 12, 0, 0, 0, 0, 0, 81, 0, 8, 0,
+ 0, 0, 0, 0, 145,221,30, 0, 0, 0, 0, 0, 253,245,61, 3, 0, 0, 0, 0, 192,65, 30, 0, 0, 0, 0, 0, 145,73, 12, 2, 0, 32, 0, 0, 0, 72, 14, 1,
+ 0, 0, 0, 0, 243,93, 127,1, 0, 0, 0, 0, 4, 36, 48, 2, 0, 0, 0, 0, 40, 32, 38, 1, 0, 0, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 44, 98, 0,
+ 0, 0, 0, 0, 0, 32, 44, 1, 0, 0, 0, 0, 151,28, 8, 0, 0, 0, 0, 0, 201,40, 108,1, 0, 0, 0, 0, 251,253,94, 0, 0, 0, 32, 0, 160,40, 34, 0,
+ 0, 0, 0, 0, 186,0, 0, 0, 0, 0, 0, 0, 153,0, 8, 0, 0, 0, 0, 0, 81, 32, 24, 0, 0, 0, 0, 0, 49, 0, 4, 1, 0, 0, 0, 0, 0, 48, 0, 1,
+ 0, 0, 0, 0, 0, 1, 22, 0, 0, 0, 0, 0, 59, 69, 0, 0, 0, 0, 0, 0, 209,65, 10, 2, 0, 0, 0, 0, 96, 32, 16, 0, 0, 0, 0, 0, 32, 8, 2, 0,
+ 0, 0, 0, 0, 73, 33, 14, 2, 0, 0, 0, 0, 153,201,94, 0, 0, 0, 0, 0, 72, 40, 10, 0, 0, 0, 0, 0, 16, 44, 10, 1, 0, 0, 0, 0, 25, 40, 12, 0,
+ 0, 0, 1, 0, 4, 9, 2, 0, 0, 0, 0, 0, 223,245,126,3, 0, 0, 0, 0, 86, 49, 108,0, 0, 0, 0, 0, 17, 97, 0, 1, 0, 0, 0, 0, 89, 52, 68, 3,
+ 0, 0, 0, 0, 13, 112,172,2, 0, 0, 0, 0, 20, 33, 93, 0, 0, 0, 0, 0, 132,4, 1, 0, 0, 0, 0, 0, 2, 41, 0, 0, 0, 0, 0, 0, 22, 16, 52, 0,
+ 0, 0, 0, 0, 0, 0, 69, 0, 0, 160,0, 0, 66, 0, 68, 0, 0, 0, 0, 0, 149,205,124,3, 0, 0, 0, 0, 64, 41, 12, 0, 0, 0, 0, 0, 4, 40, 10, 0,
+ 0, 32, 0, 0, 8, 34, 4, 0, 0, 0, 0, 0, 19, 93, 80, 0, 0, 0, 0, 0, 0, 32, 80, 1, 0, 0, 0, 0, 0, 100,8, 0, 0, 0, 0, 0, 17, 77, 80, 0,
+ 0, 0, 0, 0, 0, 41, 14, 0, 0, 4, 0, 0, 20, 89, 30, 0, 0, 0, 0, 0, 4, 32, 32, 0, 0, 0, 0, 0, 213,101,62, 3, 0, 0, 0, 0, 0, 53, 7, 0,
+ 0, 0, 0, 0, 20, 40, 134,0, 0, 0, 0, 0, 28, 1, 8, 0, 0, 0, 0, 0, 1, 1, 4, 2, 0, 0, 0, 0, 0, 9, 20, 0, 0, 0, 0, 0, 101,116,28, 0,
+ 0, 0, 0, 0, 0, 32, 22, 1, 0, 0, 0, 0, 17, 33, 18, 1, 0, 0, 0, 0, 68, 48, 0, 0, 0, 0, 0, 0, 126,189,238,2, 0, 0, 0, 0, 145,0, 4, 1,
+ 0, 0, 0, 0, 10, 32, 8, 0, 0, 0, 0, 0, 10, 16, 0, 0, 0, 0, 0, 0, 19, 121,14, 0, 0, 0, 0, 0, 29, 1, 8, 0, 0, 96, 0, 0, 6, 40, 4, 0,
+ 0, 0, 0, 0, 17, 40, 8, 1, 0, 32, 0, 0, 29, 65, 12, 2, 0, 0, 0, 0, 9, 1, 16, 0, 0, 0, 0, 0, 29, 120,12, 0, 0, 0, 0, 0, 1, 64, 4, 2,
+ 0, 0, 0, 0, 145,113,26, 2, 0, 0, 0, 0, 81, 65, 2, 3, 0, 0, 0, 0, 76, 40, 12, 0, 0, 0, 0, 0, 12, 1, 72, 0, 0, 0, 0, 0, 21, 40, 14, 3,
+ 0, 0, 0, 0, 24, 1, 8, 0, 0, 0, 0, 0, 89, 32, 10, 1, 0, 0, 0, 0, 80, 96, 4, 0, 0, 0, 0, 0, 4, 41, 2, 1, 0, 0, 0, 0, 89, 33, 0, 0,
+ 0, 0, 0, 0, 191,57, 110,1, 0, 0, 0, 0, 17, 32, 0, 1, 0, 0, 0, 0, 14, 17, 12, 0, 0, 0, 0, 0, 17, 17, 12, 0, 0, 0, 0, 0, 189,249,60, 0,
+ 0, 0, 0, 0, 32, 0, 48, 0, 0, 64, 0, 0, 21, 73, 16, 3, 0, 0, 0, 0, 28, 65, 30, 2, 64, 0, 0, 0, 165,160,44, 1, 0, 0, 0, 0, 48, 2, 0, 0,
+ 0, 0, 2, 0, 1, 0, 4, 0, 0, 0, 0, 0, 238,253,46, 2, 0, 0, 0, 0, 50, 89, 36, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, 0, 0, 20, 16, 0, 1,
+ 0, 0, 0, 0, 25, 97, 4, 2, 0, 0, 0, 0, 176,1, 12, 0, 0, 0, 0, 0, 8, 50, 0, 1, 0, 0, 0, 0, 145,69, 24, 1, 0, 0, 0, 0, 136,0, 6, 0,
+ 0, 32, 32, 0, 162,16, 68, 1, 0, 0, 0, 0, 8, 56, 6, 0, 0, 0, 0, 0, 80, 1, 68, 0, 0, 0, 0, 0, 128,32, 18, 0, 0, 0, 0, 0, 64, 65, 2, 0,
+ 0, 0, 0, 0, 16, 40, 114,0, 0, 0, 0, 0, 128,0, 1, 0, 0, 0, 0, 0, 149,77, 26, 3, 0, 0, 0, 0, 17, 57, 16, 0, 0, 0, 0, 0, 2, 17, 0, 1,
+ 0, 0, 0, 0, 4, 48, 19, 0, 0, 0, 0, 0, 22, 32, 14, 2, 0, 32, 0, 0, 191,188,126,2, 0, 0, 0, 0, 19, 80, 32, 0, 0, 0, 0, 0, 53, 76, 26, 0,
+ 0, 0, 0, 0, 2, 8, 96, 0, 0, 0, 0, 0, 16, 0, 50, 0, 0, 0, 1, 0, 144,81, 70, 1, 0, 0, 0, 0, 213,121,86, 2, 0, 0, 0, 0, 5, 40, 30, 2,
+ 0, 96, 0, 0, 17, 0, 6, 0, 0, 0, 0, 0, 19, 64, 12, 0, 0, 0, 0, 0, 32, 24, 22, 0, 0, 0, 0, 0, 0, 32, 76, 0, 0, 32, 0, 0, 144,0, 0, 0,
+ 0, 0, 0, 0, 19, 115,10, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 48, 21, 0, 0, 0, 0, 0, 0, 255,190,174,0, 0, 0, 0, 0, 49, 112,4, 1,
+ 0, 0, 0, 0, 145,1, 0, 1, 0, 32, 0, 0, 1, 8, 8, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 211,65, 68, 0, 0, 0, 0, 0, 144,64, 0, 2,
+ 0, 0, 0, 0, 149,41, 28, 1, 0, 0, 0, 0, 149,48, 10, 2, 0, 0, 0, 0, 17, 16, 16, 0, 0, 0, 0, 0, 19, 69, 72, 0, 0, 0, 0, 0, 23, 253,16, 0,
+ 0, 0, 0, 0, 0, 33, 6, 1, 0, 0, 0, 0, 20, 68, 2, 0, 0, 0, 0, 0, 5, 40, 2, 0, 0, 0, 0, 0, 20, 32, 6, 0, 0, 0, 0, 0, 0, 97, 4, 1,
+ 0, 32, 0, 0, 153,9, 12, 1, 0, 64, 0, 0, 255,109,28, 3, 0, 96, 0, 0, 128,128,66, 0, 0, 0, 0, 0, 16, 73, 14, 0, 0, 0, 0, 0, 17, 8, 24, 1,
+ 0, 0, 0, 0, 16, 0, 68, 1, 0, 0, 0, 0, 208,96, 156,0, 0, 0, 1, 0, 4, 33, 178,0, 0, 0, 0, 0, 25, 0, 24, 0, 0, 32, 0, 0, 42, 184,14, 0,
+ 0, 32, 0, 0, 215,193,8, 0, 0, 0, 0, 0, 1, 8, 12, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 21, 237,30, 0, 0, 0, 0, 0, 64, 36, 2, 0,
+ 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 0, 17, 13, 0, 0, 0, 0, 0, 0, 21, 241,218,0, 0, 64, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 4, 33, 80, 1,
+ 0, 0, 0, 0, 151,253,28, 3, 0, 0, 0, 0, 17, 121,0, 0, 0, 0, 0, 0, 16, 160,2, 1, 16, 0, 0, 0, 159,93, 14, 2, 0, 32, 0, 0, 64, 65, 4, 0,
+ 0, 240,47, 0, 0, 96, 0, 0, 0, 64, 0, 0, 32, 0, 16, 0, 0, 0, 0, 0, 108,193,4, 0, 0, 0, 0, 0, 17, 17, 22, 1, 0, 0, 0, 0, 146,157,4, 0,
+ 0, 0, 0, 0, 215,180,46, 3, 0, 0, 0, 0, 144,32, 64, 1, 0, 0, 0, 0, 8, 40, 14, 1, 0, 0, 0, 0, 72, 1, 12, 0, 0, 0, 0, 0, 32, 0, 68, 0,
+ 0, 0, 0, 0, 20, 41, 15, 1, 0, 32, 1, 0, 144,73, 4, 0, 0, 0, 0, 0, 216,0, 12, 0, 0, 0, 0, 0, 64, 64, 9, 0, 0, 0, 0, 0, 21, 32, 12, 0,
+ 0, 0, 0, 0, 21, 65, 14, 3, 0, 0, 0, 0, 12, 32, 0, 1, 0, 0, 0, 0, 29, 17, 10, 1, 0, 32, 0, 0, 146,64, 40, 0, 0, 0, 0, 0, 17, 17, 152,0,
+ 0, 0, 0, 0, 20, 36, 4, 0, 0, 160,0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 155,56, 62, 0, 0, 0, 0, 0, 136,129,0, 1, 0, 64, 0, 0, 2, 164,0, 0,
+ 0, 0, 0, 0, 51, 64, 16, 0, 16, 0, 0, 0, 255,255,127,3, 0, 0, 0, 0, 2, 245,71, 0, 0, 0, 0, 0, 81, 96, 0, 0, 0, 0, 0, 0, 19, 85, 30, 1,
+ 0, 0, 0, 0, 24, 0, 10, 1, 0, 0, 0, 0, 25, 81, 8, 0, 0, 96, 40, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 64, 44, 0, 0, 0, 0, 0, 149,69, 16, 0,
+ 0, 0, 0, 0, 0, 40, 58, 0, 0, 0, 0, 0, 49, 76, 12, 0, 0, 0, 0, 0, 34, 0, 68, 0, 0, 32, 4, 0, 176,185,12, 0, 0, 0, 0, 0, 8, 16, 10, 1,
+ 0, 0, 0, 0, 91, 77, 12, 2, 0, 0, 0, 0, 238,180,126,2, 0, 0, 0, 0, 149,93, 6, 0, 0, 0, 0, 0, 18, 4, 8, 1, 0, 0, 0, 0, 216,4, 4, 0,
+ 0, 0, 0, 0, 0, 24, 4, 2, 0, 0, 0, 0, 20, 28, 44, 0, 0, 0, 0, 0, 0, 64, 16, 2, 0, 0, 0, 0, 49, 72, 12, 0, 0, 0, 0, 0, 230,9, 14, 0,
+ 0, 0, 0, 0, 1, 192,24, 0, 0, 0, 0, 0, 18, 65, 4, 0, 0, 0, 0, 0, 209,121,16, 0, 0, 0, 0, 0, 16, 48, 12, 0, 0, 96, 0, 0, 182,57, 68, 1,
+ 0, 32, 0, 0, 145,128,0, 0, 0, 32, 0, 0, 9, 57, 76, 0, 0, 0, 0, 0, 31, 95, 74, 1, 0, 0, 0, 0, 17, 128,24, 1, 0, 0, 0, 0, 10, 32, 0, 0,
+ 0, 0, 0, 0, 17, 193,0, 1, 0, 0, 0, 0, 146,4, 6, 1, 0, 0, 0, 0, 87, 128,4, 0, 0, 0, 0, 0, 10, 0, 1, 0, 0, 0, 0, 0, 23, 253,8, 0,
+ 0, 0, 0, 0, 66, 160,54, 0, 0, 0, 0, 0, 17, 65, 22, 0, 0, 0, 0, 0, 128,8, 70, 1, 0, 0, 0, 0, 64, 40, 20, 0, 0, 0, 0, 0, 26, 65, 4, 0,
+ 0, 0, 0, 0, 255,127,253,2, 0, 0, 0, 0, 132,52, 2, 0, 0, 0, 0, 0, 243,121,71, 3, 0, 32, 0, 0, 135,24, 20, 0, 0, 0, 0, 0, 16, 72, 16, 0,
+ 0, 0, 0, 0, 34, 144,64, 0, 0, 0, 0, 0, 128,24, 12, 0, 0, 0, 0, 0, 17, 12, 8, 1, 0, 0, 0, 0, 203,52, 94, 0, 0, 0, 0, 0, 243,237,18, 0,
+ 0, 0, 0, 0, 40, 88, 2, 1, 0, 0, 0, 0, 32, 40, 2, 0, 0, 0, 0, 0, 145,77, 4, 0, 0, 0, 0, 0, 0, 160,112,0, 0, 0, 0, 0, 5, 56, 10, 1,
+ 0, 0, 0, 0, 29, 109,12, 0, 0, 0, 0, 0, 144,96, 4, 2, 0, 0, 0, 0, 0, 32, 26, 0, 0, 32, 0, 0, 146,4, 12, 0, 0, 32, 0, 0, 72, 0, 0, 0,
+ 0, 0, 0, 0, 177,245,12, 0, 0, 0, 0, 0, 0, 144,36, 0, 0, 0, 0, 0, 145,81, 4, 1, 0, 0, 0, 0, 148,69, 8, 2, 0, 0, 0, 0, 0, 36, 96, 0,
+ 0, 0, 0, 0, 32, 0, 24, 0, 0, 0, 0, 0, 151,221,28, 3, 0, 48, 4, 0, 3, 56, 0, 0, 0, 0, 0, 0, 20, 0, 24, 0, 0, 0, 0, 0, 0, 160,64, 0,
+ 0, 0, 0, 0, 151,125,126,2, 0, 0, 0, 0, 33, 16, 0, 0, 0, 0, 0, 0, 134,96, 134,0, 0, 0, 0, 0, 5, 0, 16, 0, 0, 0, 0, 0, 49, 89, 6, 1,
+ 0, 32, 0, 0, 250,210,78, 0, 0, 0, 0, 0, 8, 4, 8, 2, 0, 0, 0, 0, 17, 105,38, 1, 0, 0, 0, 0, 60, 106,70, 2, 0, 0, 0, 0, 160,32, 0, 0,
+ 0, 0, 0, 0, 17, 177,84, 1, 0, 0, 0, 0, 73, 96, 16, 0, 0, 0, 16, 0, 19, 65, 0, 2, 0, 64, 0, 0, 2, 116,34, 0, 0, 32, 0, 0, 1, 69, 4, 0,
+ 0, 0, 0, 0, 134,4, 146,0, 0, 4, 0, 0, 23, 73, 80, 1, 0, 0, 0, 0, 121,64, 40, 0, 0, 0, 0, 0, 1, 0, 66, 0, 0, 0, 0, 0, 2, 1, 66, 1,
+ 0, 0, 0, 0, 10, 193,6, 1, 0, 0, 0, 0, 33, 128,0, 0, 0, 0, 0, 0, 44, 49, 42, 0, 0, 0, 0, 0, 128,16, 4, 0, 0, 0, 0, 0, 27, 105,22, 2,
+ 0, 0, 0, 0, 4, 40, 28, 0, 0, 0, 0, 0, 8, 40, 6, 2, 0, 0, 0, 0, 153,69, 20, 1, 0, 0, 0, 0, 145,105,14, 0, 0, 0, 0, 0, 155,251,86, 1,
+ 0, 0, 0, 0, 8, 48, 10, 1, 0, 0, 0, 0, 2, 16, 6, 1, 0, 0, 0, 0, 128,24, 0, 0, 0, 0, 0, 0, 217,65, 82, 2, 0, 0, 0, 0, 0, 33, 66, 0,
+ 0, 0, 0, 0, 8, 128,6, 0, 0, 0, 0, 0, 230,160,126,2, 0, 0, 0, 0, 1, 0, 72, 2, 0, 0, 0, 0, 97, 89, 79, 0, 0, 0, 0, 0, 144,81, 20, 1,
+ 0, 0, 0, 0, 215,75, 86, 0, 0, 96, 2, 0, 0, 64, 4, 0, 0, 0, 0, 0, 21, 32, 28, 0, 0, 0, 0, 0, 32, 40, 20, 0, 0, 32, 0, 0, 25, 112,78, 0,
+ 0, 0, 0, 0, 13, 44, 14, 0, 0, 0, 0, 0, 145,213,16, 0, 0, 0, 0, 0, 16, 2, 8, 0, 0, 32, 2, 0, 1, 253,72, 2, 0, 0, 0, 0, 16, 160,4, 0,
+ 0, 0, 0, 0, 0, 152,128,0, 0, 0, 0, 0, 83, 209,16, 2, 0, 0, 0, 0, 68, 32, 134,1, 0, 0, 0, 0, 0, 65, 4, 1, 0, 0, 0, 0, 8, 40, 0, 2,
+ 0, 0, 0, 0, 9, 64, 8, 0, 0, 0, 0, 0, 93, 105,12, 2, 0, 0, 0, 0, 1, 97, 2, 0, 0, 112,32, 0, 24, 64, 0, 0, 0, 0, 0, 0, 0, 8, 70, 1,
+ 0, 0, 0, 0, 191,255,126,1, 0, 0, 0, 0, 6, 36, 0, 0, 0, 0, 0, 0, 1, 0, 72, 0, 0, 0, 0, 0, 8, 32, 38, 0, 0, 0, 0, 0, 48, 224,12, 0,
+ 0, 0, 0, 0, 65, 0, 0, 1, 0, 0, 0, 0, 136,0, 72, 0, 0, 0, 0, 0, 8, 1, 64, 0, 0, 0, 0, 0, 118,253,14, 0, 0, 0, 0, 0, 3, 0, 8, 0,
+ 0, 0, 0, 0, 10, 8, 8, 0, 0, 0, 0, 0, 80, 1, 4, 1, 0, 0, 0, 0, 144,1, 4, 1, 0, 0, 0, 0, 17, 201,22, 2, 0, 0, 0, 0, 0, 0, 30, 2,
+ 0, 0, 0, 0, 12, 64, 0, 0, 0, 0, 0, 0, 0, 16, 6, 3, 0, 0, 0, 0, 95, 117,31, 3, 0, 0, 0, 0, 128,41, 4, 0, 0, 0, 0, 0, 89, 56, 12, 1,
+ 0, 0, 0, 0, 21, 0, 12, 2, 0, 0, 0, 0, 1, 64, 8, 2, 0, 0, 0, 0, 21, 124,12, 0, 0, 0, 0, 0, 93, 64, 0, 0, 0, 0, 0, 0, 183,101,12, 2,
+ 0, 0, 0, 0, 12, 32, 34, 0, 0, 0, 0, 0, 20, 36, 14, 1, 0, 96, 0, 0, 0, 4, 4, 0, 0, 0, 1, 0, 18, 72, 70, 0, 0, 0, 0, 0, 147,1, 30, 2,
+ 0, 0, 0, 0, 129,192,0, 0, 0, 32, 0, 0, 95, 173,239,0, 0, 0, 0, 0, 16, 121,4, 1, 0, 0, 0, 0, 19, 56, 10, 0, 0, 32, 0, 0, 19, 1, 36, 0,
+ 0, 0, 0, 0, 25, 97, 0, 1, 0, 0, 0, 0, 117,65, 36, 0, 0, 0, 0, 0, 67, 40, 12, 0, 0, 240,63, 0, 255,251,30, 3, 0, 240,3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 16, 16, 1, 0, 0, 0, 0, 133,64, 2, 0, 0, 0, 0, 0, 4, 0, 34, 0, 0, 96, 4, 0, 75, 113,6, 0, 0, 32, 0, 0, 17, 209,28, 1,
+ 0, 0, 0, 0, 64, 72, 4, 0, 0, 0, 0, 0, 159,61, 14, 1, 0, 0, 0, 0, 0, 44, 6, 0, 0, 0, 0, 0, 20, 17, 4, 1, 0, 0, 0, 0, 24, 16, 0, 0,
+ 0, 0, 0, 0, 31, 96, 4, 0, 0, 0, 0, 0, 17, 97, 0, 2, 0, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 9, 1, 92, 0, 0, 4, 0, 0, 140,12, 8, 1,
+ 0, 4, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 64, 0, 8, 0, 0, 32, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 68, 168,22, 0, 0, 0, 0, 0, 73, 32, 4, 0,
+ 0, 0, 0, 0, 1, 0, 134,0, 0, 0, 0, 0, 19, 93, 18, 1, 0, 0, 0, 0, 132,0, 98, 0, 0, 0, 0, 0, 0, 16, 68, 0, 0, 0, 0, 0, 149,69, 18, 3,
+ 0, 32, 0, 0, 161,0, 4, 0, 0, 0, 0, 0, 1, 36, 2, 1, 0, 0, 0, 0, 61, 108,28, 0, 0, 0, 0, 0, 145,113,6, 1, 0, 0, 0, 0, 24, 32, 10, 1,
+ 0, 224,63, 0, 14, 80, 4, 1, 0, 32, 0, 0, 12, 8, 0, 0, 0, 0, 0, 0, 1, 4, 0, 1, 0, 0, 0, 0, 217,93, 120,1, 0, 0, 0, 0, 4, 52, 66, 0,
+ 0, 0, 0, 0, 20, 32, 32, 0, 0, 0, 0, 0, 64, 8, 32, 0, 0, 0, 0, 0, 130,8, 0, 0, 0, 0, 0, 0, 206,172,46, 0, 0, 0, 0, 0, 3, 4, 2, 0,
+ 0, 0, 0, 0, 130,64, 0, 0, 0, 0, 0, 0, 16, 5, 8, 0, 0, 0, 0, 0, 4, 16, 2, 0, 0, 0, 0, 0, 136,20, 8, 0, 0, 0, 1, 0, 160,0, 68, 0,
+ 0, 0, 0, 0, 217,97, 4, 0, 0, 0, 0, 0, 68, 36, 12, 2, 0, 32, 0, 0, 49, 65, 0, 0, 0, 0, 0, 0, 0, 130,0, 0, 0, 0, 0, 0, 4, 32, 44, 0,
+ 0, 32, 0, 0, 128,5, 0, 2, 0, 32, 0, 0, 128,32, 70, 0, 0, 0, 0, 0, 17, 73, 80, 0, 0, 0, 0, 0, 32, 32, 64, 0, 0, 0, 0, 0, 19, 153,20, 0,
+ 0, 32, 0, 0, 0, 19, 8, 1, 0, 0, 0, 0, 17, 32, 128,0, 0, 0, 0, 0, 16, 132,20, 1, 0, 0, 0, 0, 125,37, 12, 2, 0, 0, 0, 0, 18, 1, 10, 0,
+ 0, 0, 0, 0, 211,17, 39, 1, 0, 0, 0, 0, 16, 72, 16, 1, 0, 0, 0, 0, 82, 56, 2, 0, 0, 0, 0, 0, 3, 48, 42, 0, 0, 0, 0, 0, 177,0, 70, 0,
+ 0, 0, 0, 0, 0, 50, 8, 1, 0, 0, 0, 0, 49, 197,24, 0, 0, 0, 0, 0, 85, 13, 42, 3, 0, 0, 0, 0, 25, 32, 0, 0, 0, 0, 0, 0, 151,69, 12, 0,
+ 0, 0, 0, 0, 50, 1, 6, 1, 0, 0, 0, 0, 245,86, 78, 3, 0, 0, 0, 0, 16, 80, 6, 0, 0, 64, 0, 0, 50, 129,4, 0, 0, 0, 4, 0, 48, 0, 0, 0,
+ 0, 64, 0, 0, 16, 80, 24, 0, 0, 0, 0, 0, 10, 83, 0, 0, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 0, 0, 127,125,62, 0, 0, 0, 0, 0, 0, 136,20, 0,
+ 0, 0, 0, 0, 19, 0, 2, 0, 0, 0, 0, 0, 25, 97, 0, 0, 0, 32, 0, 0, 0, 32, 2, 0, 0, 0, 0, 0, 17, 193,0, 0, 0, 0, 0, 0, 93, 108,220,1,
+ 0, 0, 0, 0, 136,16, 16, 0, 0, 32, 0, 0, 19, 3, 0, 0, 0, 0, 0, 0, 145,97, 12, 0, 0, 0, 0, 0, 1, 48, 4, 0, 0, 0, 0, 0, 221,9, 8, 0,
+ 80, 188,14, 64, 223,255,254,3, 0, 0, 0, 0, 131,28, 4, 0, 0, 0, 0, 0, 59, 131,12, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 128,0, 0, 0,
+ 0, 96, 32, 0, 68, 16, 4, 0, 16, 32, 0, 0, 255,255,255,3, 0, 64, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 204,40, 14, 2, 0, 0, 0, 0, 0, 1, 136,0,
+ 0, 0, 0, 0, 21, 5, 12, 0, 0, 32, 0, 0, 255,253,127,3, 0, 0, 0, 0, 174,232,119,1, 0, 0, 0, 0, 16, 25, 16, 0, 0, 0, 0, 0, 25, 0, 16, 0,
+ 0, 0, 0, 0, 129,73, 16, 0, 0, 0, 0, 0, 2, 8, 18, 0, 0, 0, 0, 0, 64, 32, 80, 0, 0, 0, 0, 0, 9, 100,70, 1, 0, 0, 0, 0, 0, 65, 18, 1,
+ 0, 32, 0, 0, 17, 109,24, 1, 0, 0, 0, 0, 12, 61, 2, 0, 0, 0, 0, 0, 9, 40, 4, 0, 0, 32, 0, 0, 72, 0, 6, 0, 0, 0, 0, 0, 0, 56, 96, 0,
+ 0, 0, 0, 0, 17, 96, 36, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 32, 0, 0, 25, 105,68, 1, 0, 0, 0, 0, 28, 40, 6, 1,
+ 0, 0, 0, 0, 73, 40, 12, 0, 0, 0, 0, 0, 68, 33, 18, 1, 0, 0, 0, 0, 66, 17, 16, 0, 0, 0, 0, 0, 1, 1, 32, 0, 0, 0, 0, 0, 86, 176,68, 0,
+ 0, 0, 0, 0, 223,125,94, 3, 0, 0, 0, 0, 96, 56, 66, 1, 0, 0, 0, 0, 17, 81, 18, 1, 0, 0, 0, 0, 16, 32, 132,0, 0, 0, 0, 0, 68, 0, 192,1,
+ 0, 0, 0, 0, 1, 59, 70, 0, 0, 0, 0, 0, 81, 40, 12, 0, 0, 240,33, 0, 0, 0, 32, 0, 0, 0, 0, 0, 100,44, 130,0, 0, 0, 0, 0, 72, 8, 0, 2,
+ 0, 0, 0, 0, 74, 40, 110,2, 0, 0, 0, 0, 137,225,0, 0, 0, 0, 0, 0, 49, 33, 18, 0, 0, 0, 0, 0, 219,249,86, 1, 0, 0, 0, 0, 136,40, 74, 2,
+ 0, 0, 0, 0, 137,0, 0, 0, 0, 0, 0, 0, 136,73, 4, 1, 0, 0, 0, 0, 24, 40, 46, 0, 0, 0, 0, 0, 24, 96, 8, 0, 0, 112,32, 0, 0, 16, 0, 0,
+ 0, 0, 0, 0, 28, 44, 28, 0, 0, 224,12, 0, 129,85, 4, 0, 0, 0, 0, 0, 2, 0, 32, 1, 0, 0, 0, 0, 0, 40, 40, 0, 0, 0, 0, 0, 0, 65, 14, 0,
+ 0, 0, 0, 0, 49, 32, 8, 0, 0, 0, 0, 0, 98, 112,86, 0, 0, 0, 0, 0, 0, 41, 0, 1, 0, 0, 0, 0, 57, 127,82, 0, 0, 0, 0, 0, 42, 190,174,1,
+ 0, 0, 0, 0, 17, 77, 0, 0, 0, 0, 0, 0, 25, 96, 8, 1, 0, 0, 0, 0, 65, 1, 6, 0, 0, 0, 0, 0, 0, 33, 22, 0, 0, 0, 0, 0, 9, 56, 0, 0,
+ 0, 0, 0, 0, 16, 85, 16, 0, 0, 0, 0, 0, 80, 120,64, 0, 0, 0, 0, 0, 125,124,142,3, 0, 32, 4, 0, 128,0, 4, 0, 0, 32, 0, 0, 151,89, 14, 0,
+ 0, 0, 0, 0, 113,89, 108,2, 0, 32, 0, 0, 0, 8, 14, 1, 0, 0, 0, 0, 1, 128,8, 0, 0, 4, 0, 0, 29, 93, 16, 0, 0, 0, 0, 0, 25, 0, 78, 0,
+ 0, 0, 0, 0, 21, 64, 20, 0, 0, 0, 0, 0, 28, 36, 0, 0, 0, 32, 0, 0, 93, 9, 12, 0, 0, 0, 0, 0, 149,77, 30, 0, 0, 0, 0, 0, 130,45, 46, 1,
+ 0, 0, 0, 0, 10, 253,30, 1, 0, 0, 0, 0, 9, 33, 0, 0, 0, 0, 0, 0, 32, 32, 108,0, 0, 96, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 238,181,110,1,
+ 0, 32, 0, 0, 0, 33, 4, 0, 0, 0, 0, 0, 89, 4, 0, 0, 0, 32, 0, 0, 0, 0, 128,0, 0, 8, 0, 0, 228,100,110,1, 0, 0, 0, 0, 33, 4, 4, 0,
+ 0, 0, 0, 0, 0, 5, 0, 2, 0, 0, 0, 0, 87, 36, 12, 2, 0, 0, 0, 0, 152,69, 0, 0, 0, 32, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 93, 69, 4, 0,
+ 0, 0, 0, 0, 0, 1, 100,0, 0, 0, 0, 0, 145,4, 4, 2, 0, 0, 0, 0, 85, 36, 26, 1, 0, 0, 0, 0, 21, 36, 4, 0, 0, 0, 0, 0, 4, 48, 66, 3,
+ 0, 0, 0, 0, 83, 65, 5, 0, 0, 0, 0, 0, 36, 104,58, 1, 0, 0, 0, 0, 129,1, 2, 0, 0, 0, 0, 0, 147,65, 6, 2, 0, 0, 0, 0, 8, 0, 6, 2,
+ 0, 0, 0, 0, 20, 4, 12, 0, 0, 0, 0, 0, 19, 89, 26, 0, 0, 96, 8, 0, 14, 184,14, 0, 0, 176,3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 8, 1,
+ 0, 32, 0, 0, 8, 56, 2, 0, 0, 0, 0, 0, 68, 96, 8, 0, 0, 0, 1, 0, 4, 32, 18, 0, 0, 0, 0, 0, 8, 44, 4, 0, 16, 34, 0, 0, 255,255,255,3,
+ 0, 0, 0, 0, 202,124,126,0, 0, 0, 0, 0, 5, 0, 13, 0, 0, 0, 0, 0, 17, 89, 26, 1, 0, 0, 0, 0, 128,184,26, 0, 0, 0, 0, 0, 0, 68, 4, 0,
+ 0, 0, 0, 0, 0, 8, 38, 2, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 87, 96, 2, 0, 0, 0, 0, 0, 64, 168,0, 2, 0, 0, 0, 0, 4, 2, 2, 0,
+ 0, 0, 0, 0, 69, 24, 30, 1, 0, 0, 0, 0, 145,73, 18, 1, 0, 32, 0, 0, 0, 104,12, 0, 0, 0, 0, 0, 21, 96, 4, 0, 0, 0, 0, 0, 32, 144,2, 0,
+ 0, 32, 0, 0, 16, 104,4, 0, 0, 0, 0, 0, 17, 64, 80, 0, 0, 0, 0, 0, 117,252,62, 0, 0, 0, 0, 0, 4, 4, 10, 0, 0, 0, 0, 0, 132,0, 20, 0,
+ 0, 0, 0, 0, 133,0, 8, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 0, 0, 0, 64, 32, 24, 0, 0, 0, 0, 0, 149,105,4, 1, 0, 0, 0, 0, 10, 8, 7, 1,
+ 0, 0, 0, 0, 20, 96, 140,0, 0, 0, 0, 0, 149,127,86, 2, 0, 0, 0, 0, 179,221,24, 0, 0, 0, 0, 0, 129,8, 2, 0, 0, 0, 0, 0, 16, 68, 2, 0,
+ 0, 0, 0, 0, 145,73, 22, 3, 0, 0, 0, 0, 68, 8, 18, 1, 0, 0, 0, 0, 37, 108,4, 0, 0, 0, 8, 0, 8, 0, 4, 0, 0, 0, 0, 0, 49, 53, 14, 0,
+ 0, 32, 0, 0, 17, 9, 0, 0, 0, 0, 0, 0, 16, 76, 0, 0, 0, 0, 0, 0, 130,41, 2, 2, 0, 0, 0, 0, 145,140,22, 0, 0, 0, 0, 0, 0, 25, 0, 0,
+ 0, 0, 0, 0, 0, 8, 76, 0, 0, 0, 0, 0, 141,0, 8, 0, 0, 0, 0, 0, 254,63, 60, 2, 0, 0, 0, 0, 129,32, 2, 0, 0, 0, 0, 0, 217,65, 40, 2,
+ 0, 0, 0, 0, 16, 64, 0, 2, 0, 0, 0, 0, 132,1, 0, 0, 0, 0, 0, 0, 1, 65, 64, 0, 0, 0, 0, 0, 136,0, 4, 1, 0, 0, 0, 0, 145,69, 22, 3,
+ 0, 0, 0, 0, 1, 40, 8, 1, 0, 32, 0, 0, 17, 73, 0, 1, 0, 232,0, 0, 19, 17, 16, 0, 0, 176,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 96, 8, 2,
+ 0, 0, 0, 0, 17, 104,20, 0, 0, 32, 0, 0, 16, 5, 0, 0, 0, 32, 0, 0, 64, 184,28, 0, 0, 0, 0, 0, 29, 60, 46, 2, 0, 0, 0, 0, 68, 64, 8, 0,
+ 0, 0, 0, 0, 0, 49, 30, 0, 0, 32, 0, 0, 145,0, 12, 0, 0, 32, 0, 0, 0, 40, 14, 0, 0, 0, 0, 0, 17, 0, 24, 1, 0, 32, 0, 0, 0, 8, 14, 0,
+ 0, 0, 0, 0, 215,255,60, 1, 0, 224,4, 0, 148,58, 4, 0, 0, 0, 0, 0, 145,77, 2, 0, 0, 96, 0, 0, 128,40, 14, 0, 0, 0, 0, 0, 1, 4, 16, 0,
+ 0, 0, 0, 0, 217,69, 20, 0, 0, 32, 0, 0, 4, 0, 14, 0, 0, 96, 0, 0, 1, 8, 14, 2, 0, 32, 0, 0, 4, 32, 4, 0, 0, 32, 6, 0, 0, 40, 12, 0,
+ 0, 0, 0, 0, 149,68, 12, 0, 0, 0, 0, 0, 1, 33, 12, 2, 0, 240,12, 0, 209,221,126,1, 0, 0, 0, 0, 0, 36, 2, 2, 0, 0, 0, 0, 88, 40, 110,1,
+ 0, 32, 0, 0, 17, 129,12, 0, 0, 0, 0, 0, 16, 32, 12, 2, 0, 0, 0, 0, 32, 0, 116,0, 0, 0, 0, 0, 2, 80, 8, 0, 0, 0, 0, 0, 0, 176,4, 0,
+ 0, 32, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 16, 32, 10, 1, 0, 32, 0, 0, 80, 0, 4, 0, 0, 128,0, 0, 0, 40, 14, 0, 0, 0, 0, 0, 132,105,60, 2,
+ 0, 0, 0, 0, 41, 0, 8, 0, 0, 0, 2, 0, 16, 0, 4, 0, 0, 0, 0, 0, 10, 32, 4, 0, 0, 0, 0, 0, 16, 32, 14, 2, 0, 0, 0, 0, 2, 164,2, 2,
+ 0, 0, 0, 0, 24, 104,10, 0, 0, 0, 0, 0, 64, 32, 73, 0, 0, 0, 0, 0, 159,77, 24, 2, 0, 0, 0, 0, 4, 40, 192,0, 0, 0, 0, 0, 80, 13, 8, 0,
+ 0, 0, 0, 0, 51, 24, 0, 1, 0, 0, 0, 0, 4, 28, 0, 0, 0, 0, 0, 0, 68, 44, 0, 0, 0, 0, 0, 0, 145,105,28, 3, 0, 0, 0, 0, 85, 58, 22, 0,
+ 0, 114,12, 0, 221,69, 20, 3, 0, 0, 0, 0, 1, 12, 140,2, 0, 32, 0, 0, 16, 0, 5, 2, 0, 0, 0, 0, 0, 32, 86, 0, 0, 32, 0, 0, 0, 48, 6, 0,
+ 0, 0, 0, 0, 24, 64, 4, 0, 0, 0, 0, 0, 100,56, 12, 1, 0, 0, 0, 0, 133,7, 4, 1, 0, 0, 0, 0, 25, 1, 2, 0, 0, 32, 4, 0, 147,222,38, 0,
+ 0, 0, 0, 0, 64, 168,0, 0, 16, 0, 0, 0, 223,79, 63, 3, 0, 0, 0, 0, 141,125,14, 1, 0, 0, 0, 0, 17, 21, 0, 0, 0, 0, 0, 0, 32, 44, 2, 1,
+ 0, 0, 1, 0, 147,229,16, 0, 0, 96, 0, 0, 6, 28, 64, 0, 0, 0, 0, 0, 8, 36, 2, 0, 0, 0, 0, 0, 149,40, 0, 0, 0, 0, 0, 0, 69, 65, 8, 0,
+ 0, 0, 0, 0, 0, 32, 100,0, 0, 0, 0, 0, 4, 112,58, 0, 0, 68, 0, 0, 17, 89, 16, 1, 0, 0, 0, 0, 76, 160,71, 1, 0, 0, 0, 0, 24, 65, 8, 0,
+ 0, 0, 0, 0, 24, 41, 30, 1, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 53, 56, 32, 0, 0, 240,47, 0, 55, 221,76, 1, 0, 32, 0, 0, 128,64, 0, 0,
+ 0, 0, 0, 0, 70, 185,0, 0, 0, 0, 0, 0, 12, 168,2, 1, 0, 0, 0, 0, 149,125,62, 3, 0, 0, 0, 0, 207,189,110,1, 0, 0, 0, 0, 17, 0, 16, 2,
+ 0, 0, 0, 0, 26, 153,16, 0, 0, 0, 0, 0, 24, 123,22, 1, 0, 0, 0, 0, 0, 57, 86, 1, 0, 0, 0, 0, 85, 42, 4, 0, 0, 0, 0, 0, 0, 2, 4, 1,
+ 0, 0, 0, 0, 5, 24, 132,0, 0, 240,44, 0, 0, 0, 128,0, 0, 0, 0, 0, 16, 68, 16, 1, 0, 0, 0, 0, 154,117,22, 3, 0, 112,0, 0, 145,93, 22, 1,
+ 0, 0, 0, 0, 8, 109,86, 1, 0, 0, 0, 0, 145,32, 4, 0, 0, 32, 0, 0, 16, 1, 68, 1, 0, 240,63, 0, 8, 2, 4, 0, 0, 0, 0, 0, 17, 2, 4, 0,
+ 0, 0, 0, 0, 21, 120,132,0, 0, 0, 0, 0, 4, 96, 132,0, 0, 0, 0, 0, 4, 12, 14, 0, 0, 0, 0, 0, 0, 4, 68, 0, 0, 0, 0, 0, 126,189,46, 2,
+ 0, 0, 0, 0, 25, 9, 108,0, 0, 0, 0, 0, 89, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 16, 128,14, 1, 0, 0, 0, 0, 20, 32, 8, 2,
+ 0, 0, 0, 0, 146,65, 12, 0, 0, 0, 0, 0, 144,97, 8, 2, 0, 0, 0, 0, 17, 73, 6, 0, 0, 0, 0, 0, 128,4, 6, 1, 0, 240,14, 0, 191,209,204,0,
+ 0, 0, 0, 0, 8, 40, 0, 1, 0, 0, 0, 0, 16, 56, 4, 0, 0, 32, 0, 0, 17, 69, 20, 0, 0, 0, 0, 0, 1, 40, 4, 2, 0, 0, 0, 0, 1, 1, 144,0,
+ 16, 8, 0, 0, 191,249,126,2, 0, 0, 0, 0, 64, 44, 2, 0, 0, 0, 0, 0, 9, 32, 30, 0, 0, 0, 0, 0, 0, 44, 26, 0, 0, 0, 0, 0, 69, 0, 4, 0,
+ 0, 64, 0, 0, 144,64, 32, 0, 0, 0, 0, 0, 153,65, 18, 3, 0, 0, 0, 0, 160,32, 10, 0, 0, 160,4, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, 136,6, 1,
+ 0, 0, 0, 0, 17, 100,1, 0, 0, 0, 0, 0, 0, 32, 98, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 20, 80, 2, 0, 0, 0, 0, 0, 36, 32, 66, 0,
+ 0, 0, 0, 0, 0, 73, 10, 0, 0, 8, 0, 0, 27, 101,88, 0, 0, 0, 4, 0, 255,255,127,2, 0, 0, 0, 0, 42, 56, 62, 0, 0, 0, 0, 0, 145,217,32, 0,
+ 0, 0, 0, 0, 16, 0, 164,0, 0, 0, 0, 0, 25, 33, 16, 0, 0, 0, 0, 0, 235,57, 94, 1, 0, 0, 0, 0, 144,0, 16, 0, 0, 0, 0, 0, 17, 217,32, 0,
+ 0, 0, 0, 0, 19, 145,0, 1, 0, 0, 0, 0, 28, 40, 12, 0, 0, 0, 0, 0, 88, 40, 46, 1, 0, 0, 0, 0, 145,33, 8, 1, 0, 0, 0, 0, 32, 57, 62, 1,
+ 0, 0, 0, 0, 25, 33, 8, 1, 0, 0, 0, 0, 17, 120,38, 0, 0, 0, 0, 0, 9, 97, 8, 0, 0, 0, 0, 0, 24, 0, 22, 1, 0, 0, 0, 0, 65, 249,126,1,
+ 0, 0, 0, 0, 80, 152,0, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 5, 101,32, 0, 0, 0, 0, 0, 192,0, 24, 0, 0, 0, 0, 0, 24, 53, 42, 1,
+ 0, 0, 0, 0, 30, 37, 106,1, 0, 0, 0, 0, 25, 9, 0, 0, 0, 0, 0, 0, 130,32, 6, 1, 0, 0, 0, 0, 19, 57, 14, 0, 0, 0, 0, 0, 192,32, 2, 0,
+ 0, 0, 0, 0, 196,48, 18, 0, 0, 0, 0, 0, 24, 9, 10, 0, 0, 0, 0, 0, 8, 41, 34, 1, 0, 0, 0, 0, 1, 0, 98, 0, 0, 0, 0, 0, 1, 8, 32, 0,
+ 0, 0, 0, 0, 16, 40, 82, 0, 0, 0, 0, 0, 1, 41, 114,0, 0, 0, 0, 0, 168,152,98, 1, 0, 0, 0, 0, 25, 33, 10, 0, 0, 0, 0, 0, 8, 40, 26, 0,
+ 0, 0, 0, 0, 145,73, 82, 0, 0, 0, 0, 0, 160,40, 122,0, 0, 0, 0, 0, 16, 1, 42, 1, 0, 0, 0, 0, 145,64, 72, 0, 0, 0, 0, 0, 128,32, 32, 0,
+ 0, 0, 0, 0, 2, 40, 34, 0, 0, 0, 0, 0, 2, 8, 40, 0, 0, 0, 0, 0, 8, 16, 92, 0, 0, 0, 0, 0, 132,33, 78, 0, 0, 0, 0, 0, 176,104,114,0,
+ 0, 0, 0, 0, 40, 161,72, 1, 0, 0, 0, 0, 17, 96, 8, 0, 0, 0, 0, 0, 81, 0, 96, 0, 0, 0, 0, 0, 65, 32, 10, 0, 0, 0, 0, 0, 116,33, 2, 1,
+ 0, 0, 0, 0, 16, 12, 8, 0, 0, 0, 0, 0, 48, 40, 110,0, 0, 0, 0, 0, 128,8, 106,0, 0, 0, 0, 0, 25, 32, 42, 0, 0, 0, 0, 0, 192,57, 20, 1,
+ 0, 0, 0, 0, 21, 121,110,1, 0, 0, 0, 0, 192,56, 36, 0, 0, 0, 0, 0, 8, 41, 14, 2, 0, 0, 0, 0, 17, 65, 0, 3, 0, 0, 0, 0, 26, 56, 46, 0,
+ 0, 0, 0, 0, 1, 96, 84, 1, 0, 0, 0, 0, 116,49, 122,1, 0, 0, 0, 0, 17, 121,6, 0, 0, 0, 0, 0, 148,0, 2, 0, 0, 0, 0, 0, 132,37, 14, 0,
+ 0, 0, 0, 0, 8, 128,10, 0, 0, 0, 0, 0, 2, 57, 26, 1, 0, 0, 0, 0, 49, 25, 110,0, 0, 0, 0, 0, 116,32, 12, 0, 0, 0, 0, 0, 192,8, 10, 0,
+ 0, 0, 0, 0, 0, 48, 64, 1, 0, 0, 0, 0, 0, 33, 26, 0, 0, 0, 0, 0, 72, 1, 2, 1, 0, 0, 0, 0, 72, 40, 14, 0, 0, 0, 0, 0, 16, 32, 42, 1,
+ 0, 0, 0, 0, 25, 32, 0, 1, 0, 0, 0, 0, 64, 8, 8, 0, 0, 0, 0, 0, 2, 0, 2, 1, 0, 0, 0, 0, 128,192,72, 0, 0, 0, 0, 0, 64, 0, 34, 0,
+ 0, 0, 0, 0, 8, 9, 10, 1, 0, 64, 0, 0, 64, 113,128,0, 0, 0, 0, 0, 65, 96, 4, 0, 16, 96, 0, 0, 255,255,254,3, 0, 0, 0, 0, 206,44, 30, 2,
+ 0, 0, 0, 0, 16, 64, 36, 0, 0, 0, 0, 0, 6, 8, 4, 0, 0, 0, 0, 0, 145,0, 2, 0, 0, 0, 0, 0, 24, 97, 76, 1, 0, 0, 0, 0, 144,72, 16, 0,
+ 0, 0, 0, 0, 130,152,68, 1, 0, 0, 0, 0, 133,69, 16, 3, 0, 0, 4, 0, 17, 9, 12, 0, 0, 0, 0, 0, 191,121,126,0, 0, 0, 0, 0, 0, 45, 70, 0,
+ 0, 0, 0, 0, 5, 25, 38, 2, 0, 0, 0, 0, 23, 120,56, 0, 0, 32, 0, 0, 22, 40, 76, 0, 0, 8, 0, 0, 0, 64, 4, 0, 0, 32, 0, 0, 129,69, 20, 0,
+ 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 4, 40, 16, 0, 0, 0, 0, 0, 17, 0, 0, 2, 0, 0, 0, 0, 36, 0, 102,2, 0, 0, 0, 0, 0, 40, 6, 2,
+ 0, 0, 0, 0, 220,60, 30, 0, 0, 0, 0, 0, 9, 68, 20, 0, 0, 0, 0, 0, 144,4, 8, 0, 0, 0, 0, 0, 16, 81, 4, 2, 0, 0, 0, 0, 209,105,22, 0,
+ 0, 0, 0, 0, 174,184,78, 0, 0, 0, 0, 0, 8, 144,4, 0, 0, 96, 8, 0, 16, 0, 12, 0, 0, 0, 0, 0, 9, 40, 32, 0, 0, 0, 0, 0, 130,0, 64, 0,
+ 0, 0, 0, 0, 27, 121,14, 0, 0, 0, 0, 0, 152,17, 0, 0, 0, 0, 0, 0, 220,110,142,0, 0, 0, 0, 0, 154,5, 12, 2, 0, 0, 0, 0, 20, 41, 12, 0,
+ 0, 32, 0, 0, 255,125,63, 3, 0, 0, 0, 0, 136,61, 30, 1, 0, 0, 0, 0, 92, 65, 4, 1, 0, 0, 0, 0, 21, 100,6, 1, 0, 0, 0, 0, 29, 44, 28, 0,
+ 0, 0, 0, 0, 89, 64, 0, 0, 0, 224,12, 0, 0, 32, 4, 0, 0, 0, 0, 0, 83, 65, 4, 1, 0, 0, 0, 0, 72, 32, 6, 0, 0, 0, 0, 0, 4, 52, 10, 1,
+ 0, 0, 0, 0, 52, 32, 12, 0, 0, 32, 0, 0, 0, 48, 78, 1, 0, 0, 0, 0, 13, 48, 12, 1, 0, 0, 0, 0, 53, 64, 0, 0, 0, 32, 0, 0, 16, 1, 4, 1,
+ 0, 0, 0, 0, 144,64, 8, 0, 0, 0, 0, 0, 24, 65, 68, 2, 0, 0, 0, 0, 65, 32, 4, 0, 0, 32, 4, 0, 1, 0, 4, 0, 0, 0, 0, 0, 18, 248,4, 1,
+ 0, 0, 0, 0, 0, 41, 6, 0, 16, 0, 0, 0, 221,111,156,2, 0, 0, 0, 0, 196,165,6, 0, 0, 0, 0, 0, 144,13, 0, 1, 0, 0, 0, 0, 144,73, 6, 1,
+ 0, 0, 0, 0, 23, 232,36, 2, 0, 0, 0, 0, 4, 40, 12, 2, 0, 0, 0, 0, 57, 56, 28, 2, 0, 0, 0, 0, 145,9, 68, 0, 0, 0, 0, 0, 49, 40, 12, 0,
+ 0, 0, 0, 0, 208,32, 0, 0, 0, 0, 0, 0, 0, 184,26, 0, 0, 0, 0, 0, 149,65, 88, 0, 0, 0, 0, 0, 209,101,16, 2, 0, 0, 0, 0, 156,0, 4, 0,
+ 0, 0, 0, 0, 32, 40, 64, 0, 0, 0, 0, 0, 128,168,12, 3, 0, 0, 0, 0, 145,69, 16, 1, 0, 0, 0, 0, 49, 12, 0, 0, 0, 0, 0, 0, 15, 104,108,0,
+ 0, 0, 0, 0, 16, 73, 92, 0, 0, 32, 0, 0, 17, 65, 0, 1, 0, 0, 0, 0, 1, 32, 12, 0, 0, 112,44, 0, 64, 65, 0, 0, 0, 0, 0, 0, 24, 56, 96, 0,
+ 0, 0, 0, 0, 18, 65, 0, 1, 0, 0, 0, 0, 245,120,72, 0, 0, 0, 0, 0, 149,81, 0, 0, 0, 0, 0, 0, 11, 32, 2, 1, 0, 0, 0, 0, 145,65, 0, 2,
+ 0, 0, 0, 0, 3, 9, 0, 0, 0, 0, 0, 0, 157,253,31, 2, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 81, 1, 16, 1, 0, 0, 0, 0, 8, 8, 68, 0,
+ 0, 0, 0, 0, 13, 104,8, 0, 0, 0, 0, 0, 137,168,14, 2, 0, 0, 0, 0, 17, 121,2, 1, 0, 32, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 8, 32, 4, 1,
+ 0, 64, 0, 0, 245,73, 30, 2, 0, 0, 0, 0, 142,185,142,1, 0, 32, 4, 0, 196,25, 84, 0, 0, 0, 0, 0, 24, 104,34, 0, 0, 0, 0, 0, 17, 65, 48, 1,
+ 0, 0, 0, 0, 8, 0, 140,0, 0, 32, 8, 0, 16, 81, 4, 0, 0, 0, 0, 0, 17, 128,8, 0, 0, 0, 0, 0, 21, 40, 36, 0, 0, 0, 0, 0, 128,64, 140,1,
+ 0, 96, 0, 0, 10, 189,6, 0, 0, 32, 20, 0, 0, 4, 0, 0, 0, 0, 0, 0, 80, 45, 0, 0, 0, 0, 0, 0, 13, 40, 6, 0, 0, 0, 0, 0, 19, 0, 12, 0,
+ 0, 32, 0, 0, 1, 64, 20, 0, 0, 0, 0, 0, 25, 40, 6, 0, 0, 0, 0, 0, 130,89, 4, 0, 0, 0, 0, 0, 17, 65, 1, 3, 0, 72, 0, 0, 0, 80, 16, 0,
+ 0, 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 80, 4, 2, 0, 0, 0, 0, 129,112,12, 2, 0, 0, 0, 0, 8, 64, 64, 0, 0, 0, 0, 0, 149,92, 30, 0,
+ 0, 0, 0, 0, 144,8, 6, 0, 0, 0, 0, 0, 16, 41, 50, 0, 0, 240,63, 0, 31, 155,12, 0, 0, 32, 0, 0, 21, 69, 4, 0, 0, 0, 0, 0, 4, 36, 4, 0,
+ 0, 32, 0, 0, 49, 89, 4, 0, 0, 32, 0, 0, 16, 65, 0, 0, 0, 0, 0, 0, 80, 108,10, 0, 0, 0, 8, 0, 17, 73, 20, 1, 0, 112,12, 0, 0, 16, 4, 0,
+ 0, 0, 0, 0, 2, 0, 6, 1, 0, 32, 0, 0, 247,252,78, 0, 0, 0, 0, 0, 128,72, 2, 0, 0, 0, 0, 0, 8, 48, 4, 0, 0, 0, 0, 0, 29, 64, 8, 1,
+ 0, 0, 0, 0, 255,237,126,1, 0, 10, 0, 0, 34, 20, 76, 0, 0, 0, 0, 0, 18, 0, 64, 0, 0, 0, 0, 0, 144,65, 24, 0, 0, 0, 0, 0, 144,66, 0, 0,
+ 0, 0, 0, 0, 141,44, 14, 0, 0, 0, 0, 0, 0, 36, 0, 1, 0, 0, 0, 0, 20, 100,4, 0, 0, 0, 0, 0, 25, 96, 4, 2, 0, 0, 0, 0, 148,32, 4, 2,
+ 0, 0, 0, 0, 32, 0, 20, 0, 0, 0, 0, 0, 201,40, 22, 0, 16, 0, 0, 0, 1, 33, 0, 1, 0, 0, 0, 0, 17, 89, 2, 0, 0, 0, 0, 0, 16, 11, 10, 0,
+ 0, 0, 0, 0, 21, 5, 0, 1, 0, 0, 0, 0, 5, 68, 0, 0, 0, 0, 0, 0, 0, 4, 34, 0, 0, 0, 0, 0, 145,77, 50, 0, 0, 16, 0, 0, 24, 48, 68, 1,
+ 0, 240,45, 0, 152,10, 6, 3, 0, 240,48, 0, 0, 0, 0, 0, 0, 96, 0, 0, 66, 0, 4, 0, 0, 0, 0, 0, 0, 8, 108,1, 0, 0, 0, 0, 255,253,95, 2,
+ 0, 0, 0, 0, 72, 52, 6, 2, 0, 32, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 17, 88, 18, 0, 0, 0, 0, 0, 157,172,78, 1, 0, 32, 0, 0, 8, 4, 8, 0,
+ 0, 0, 0, 0, 0, 1, 24, 0, 0, 0, 0, 0, 23, 104,28, 0, 0, 0, 0, 0, 16, 8, 4, 2, 0, 0, 0, 0, 27, 81, 100,1, 0, 0, 0, 0, 243,113,110,1,
+ 0, 0, 0, 0, 64, 49, 18, 1, 0, 0, 0, 0, 9, 32, 14, 1, 0, 240,0, 0, 10, 8, 14, 0, 0, 0, 0, 0, 85, 244,6, 0, 0, 32, 0, 0, 17, 0, 12, 0,
+ 0, 0, 0, 0, 0, 32, 74, 1, 0, 0, 0, 0, 1, 192,8, 0, 0, 32, 0, 0, 0, 32, 46, 0, 0, 0, 0, 0, 20, 8, 0, 2, 0, 0, 0, 0, 16, 96, 0, 2,
+ 0, 0, 0, 0, 19, 113,20, 0, 0, 0, 0, 0, 0, 20, 2, 0, 0, 0, 32, 0, 4, 32, 4, 0, 0, 0, 0, 0, 255,103,190,3, 0, 0, 0, 0, 135,62, 14, 1,
+ 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0, 144,4, 0, 1, 0, 0, 0, 0, 8, 16, 2, 1, 0, 0, 0, 0, 121,73, 68, 1, 0, 96, 4, 0, 173,73, 78, 1,
+ 0, 0, 0, 0, 128,0, 18, 0, 0, 0, 0, 0, 4, 64, 2, 0, 0, 0, 0, 0, 9, 65, 44, 1, 0, 0, 0, 0, 144,73, 22, 2, 0, 32, 0, 0, 255,112,180,0,
+ 0, 0, 0, 0, 128,76, 16, 0, 0, 0, 0, 0, 148,4, 12, 0, 0, 0, 0, 0, 145,73, 4, 0, 0, 0, 0, 0, 129,24, 78, 1, 0, 0, 0, 0, 52, 32, 140,0,
+ 0, 96, 0, 0, 33, 0, 2, 0, 0, 0, 0, 0, 69, 40, 30, 2, 0, 0, 0, 0, 4, 1, 20, 0, 0, 0, 0, 0, 128,68, 8, 0, 0, 0, 0, 0, 17, 69, 22, 3,
+ 0, 0, 0, 0, 24, 32, 2, 1, 0, 0, 0, 0, 84, 1, 12, 0, 0, 0, 0, 0, 12, 40, 12, 0, 0, 0, 0, 0, 23, 255,126,2, 0, 0, 0, 0, 110,123,38, 0,
+ 0, 0, 0, 0, 8, 9, 4, 1, 0, 0, 0, 0, 21, 48, 4, 0, 0, 0, 0, 0, 8, 252,76, 0, 0, 0, 0, 0, 17, 109,0, 0, 0, 0, 0, 0, 16, 48, 32, 0,
+ 0, 0, 0, 0, 21, 9, 0, 1, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 17, 125,18, 0, 0, 32, 0, 0, 0, 160,66, 0, 0, 0, 0, 0, 25, 100,0, 0,
+ 0, 32, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 1, 136,0, 0, 0, 4, 0, 0, 145,205,24, 1, 0, 0, 0, 0, 16, 104,4, 0, 0, 96, 0, 0, 8, 64, 4, 0,
+ 0, 0, 0, 0, 17, 73, 22, 1, 0, 64, 0, 0, 0, 17, 0, 1, 0, 96, 0, 0, 12, 0, 4, 0, 0, 0, 0, 0, 181,117,14, 2, 0, 32, 0, 0, 17, 9, 16, 0,
+ 0, 0, 0, 0, 21, 1, 18, 0, 0, 0, 0, 0, 68, 0, 12, 0, 0, 0, 0, 0, 0, 144,32, 0, 0, 0, 0, 0, 13, 64, 16, 0, 0, 0, 0, 0, 26, 69, 2, 0,
+ 0, 0, 0, 0, 21, 89, 4, 1, 0, 0, 0, 0, 16, 33, 32, 0, 0, 0, 0, 0, 25, 81, 28, 0, 0, 0, 0, 0, 1, 64, 48, 0, 0, 0, 0, 0, 192,116,14, 2,
+ 0, 0, 0, 0, 17, 97, 82, 2, 0, 0, 0, 0, 128,36, 8, 0, 0, 96, 0, 0, 130,64, 16, 0, 0, 0, 0, 0, 1, 67, 32, 0, 0, 96, 0, 0, 133,212,128,0,
+ 0, 0, 4, 0, 0, 48, 0, 0, 0, 0, 0, 0, 146,8, 0, 0, 16, 0, 2, 0, 255,255,255,3, 0, 0, 0, 0, 74, 45, 8, 1, 0, 0, 0, 0, 18, 73, 20, 1,
+ 0, 32, 0, 0, 17, 1, 0, 0, 0, 0, 0, 0, 1, 64, 12, 2, 0, 0, 0, 0, 149,4, 8, 2, 0, 0, 0, 0, 217,73, 22, 3, 0, 0, 0, 0, 40, 40, 0, 0,
+ 0, 32, 0, 0, 16, 73, 4, 0, 0, 0, 0, 0, 1, 96, 12, 0, 0, 0, 0, 0, 17, 17, 8, 0, 0, 0, 0, 0, 17, 72, 0, 1, 16, 0, 0, 0, 100,32, 5, 0,
+ 0, 0, 0, 0, 142,56, 62, 0, 0, 0, 0, 0, 2, 20, 4, 0, 0, 0, 4, 0, 48, 73, 0, 0, 0, 0, 0, 0, 209,73, 82, 0, 0, 0, 0, 0, 8, 48, 32, 0,
+ 0, 0, 0, 0, 25, 121,22, 1, 0, 0, 0, 0, 6, 185,114,0, 0, 0, 0, 0, 65, 8, 2, 0, 0, 0, 0, 0, 4, 32, 24, 0, 0, 0, 0, 0, 19, 25, 0, 0,
+ 0, 0, 0, 0, 16, 60, 14, 0, 0, 0, 0, 0, 1, 65, 0, 2, 0, 0, 4, 0, 0, 18, 0, 0, 0, 0, 0, 0, 131,201,6, 0, 0, 0, 0, 0, 125,237,28, 3,
+ 0, 0, 0, 0, 4, 33, 38, 0, 0, 0, 0, 0, 132,52, 14, 1, 0, 0, 0, 0, 16, 4, 72, 0, 0, 0, 0, 0, 81, 65, 4, 0, 0, 0, 0, 0, 8, 52, 30, 1,
+ 0, 96, 0, 0, 14, 16, 4, 0, 0, 0, 0, 0, 12, 36, 8, 0, 0, 0, 0, 0, 1, 68, 8, 0, 0, 0, 0, 0, 16, 69, 2, 2, 16, 32, 1, 0, 31, 209,4, 0,
+ 0, 32, 0, 0, 0, 32, 0, 1, 0, 0, 0, 0, 253,119,62, 2, 0, 0, 0, 0, 220,24, 30, 0, 0, 0, 0, 0, 28, 64, 3, 0, 0, 0, 0, 0, 145,13, 26, 0,
+ 0, 0, 0, 0, 16, 64, 32, 0, 0, 0, 0, 0, 17, 73, 14, 1, 0, 0, 0, 0, 8, 9, 0, 1, 0, 0, 0, 0, 0, 106,4, 0, 0, 0, 0, 0, 0, 36, 50, 2,
+ 0, 0, 0, 0, 73, 8, 12, 1, 0, 32, 0, 0, 1, 1, 8, 0, 0, 240,63, 0, 130,144,4, 1, 0, 32, 0, 0, 17, 69, 18, 0, 0, 0, 0, 0, 1, 72, 6, 0,
+ 0, 32, 0, 0, 0, 120,2, 0, 0, 0, 0, 0, 85, 100,13, 2, 0, 128,0, 0, 177,89, 12, 0, 0, 240,47, 0, 2, 16, 4, 0, 0, 0, 0, 0, 221,249,142,2,
+ 0, 0, 0, 0, 129,72, 16, 1, 0, 0, 0, 0, 128,64, 2, 1, 0, 0, 0, 0, 16, 1, 96, 1, 0, 0, 0, 0, 17, 85, 10, 0, 0, 0, 0, 0, 80, 32, 2, 1,
+ 0, 0, 0, 0, 80, 0, 32, 0, 0, 96, 40, 0, 0, 0, 4, 0, 0, 0, 0, 0, 247,243,62, 3, 0, 0, 0, 0, 70, 41, 53, 3, 0, 0, 0, 0, 66, 0, 56, 0,
+ 0, 0, 0, 0, 25, 64, 24, 1, 0, 96, 0, 0, 0, 0, 2, 0, 0, 32, 0, 0, 119,187,54, 3, 0, 0, 0, 0, 9, 129,5, 0, 0, 0, 0, 0, 84, 10, 4, 0,
+ 0, 0, 0, 0, 64, 96, 26, 1, 0, 0, 0, 0, 0, 0, 2, 3, 0, 32, 0, 0, 94, 252,14, 0, 0, 0, 1, 0, 17, 65, 0, 0, 0, 32, 4, 0, 90, 153,86, 0,
+ 0, 0, 0, 0, 245,153,12, 0, 0, 32, 0, 0, 169,8, 6, 0, 0, 0, 0, 0, 19, 17, 0, 0, 0, 96, 12, 0, 128,146,6, 1, 0, 0, 0, 0, 144,1, 6, 3,
+ 0, 0, 0, 0, 17, 129,12, 0, 0, 32, 1, 0, 0, 16, 4, 0, 0, 0, 0, 64, 127,253,127,1, 0, 0, 0, 0, 94, 45, 110,3, 0, 0, 0, 0, 88, 64, 40, 0,
+ 0, 0, 0, 0, 129,64, 24, 0, 0, 0, 0, 0, 136,0, 16, 0, 0, 0, 0, 0, 132,40, 0, 0, 16, 0, 0, 0, 191,123,14, 1, 0, 0, 0, 0, 5, 64, 8, 2,
+ 0, 0, 0, 0, 150,1, 0, 0, 0, 0, 0, 0, 8, 33, 4, 0, 0, 112,0, 0, 57, 64, 12, 0, 0, 0, 0, 0, 23, 124,76, 1, 0, 0, 0, 0, 80, 65, 32, 0,
+ 0, 0, 0, 0, 148,68, 4, 0, 0, 0, 0, 0, 14, 40, 76, 2, 0, 0, 0, 0, 80, 65, 12, 0, 0, 0, 0, 0, 8, 16, 88, 0, 0, 0, 0, 0, 1, 40, 2, 1,
+ 0, 32, 0, 0, 144,64, 46, 0, 0, 0, 0, 0, 146,65, 4, 0, 0, 0, 0, 0, 209,89, 20, 1, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 56, 2, 2,
+ 0, 0, 0, 0, 52, 48, 4, 0, 0, 0, 0, 0, 255,221,29, 2, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 17, 0, 18, 1, 0, 0, 0, 0, 129,65, 2, 0,
+ 0, 0, 0, 0, 32, 32, 100,0, 0, 0, 0, 0, 2, 56, 6, 1, 0, 0, 0, 0, 1, 64, 96, 0, 0, 0, 0, 0, 0, 128,100,0, 0, 0, 16, 0, 19, 89, 0, 1,
+ 0, 0, 0, 0, 17, 73, 66, 1, 0, 0, 0, 0, 40, 0, 2, 0, 0, 0, 0, 0, 153,73, 28, 3, 0, 0, 0, 0, 70, 24, 2, 1, 0, 0, 0, 0, 19, 0, 6, 0,
+ 0, 96, 0, 0, 162,9, 68, 0, 0, 0, 0, 0, 33, 72, 32, 0, 0, 64, 0, 0, 68, 60, 194,0, 0, 0, 0, 0, 150,81, 70, 0, 0, 0, 0, 0, 13, 40, 110,2,
+ 0, 0, 0, 0, 153,65, 8, 0, 0, 0, 0, 0, 76, 5, 12, 0, 0, 0, 0, 0, 55, 3, 4, 0, 0, 0, 0, 0, 16, 64, 12, 0, 0, 0, 0, 0, 17, 33, 0, 1,
+ 0, 0, 0, 0, 21, 9, 12, 1, 0, 96, 0, 0, 0, 152,46, 1, 0, 0, 0, 0, 48, 129,68, 1, 0, 0, 0, 0, 9, 80, 6, 0, 0, 0, 0, 0, 16, 48, 20, 0,
+ 0, 32, 0, 0, 66, 16, 12, 0, 0, 0, 0, 0, 91, 41, 10, 0, 0, 0, 0, 0, 144,105,0, 0, 0, 0, 0, 0, 25, 104,4, 0, 0, 0, 0, 0, 89, 105,0, 2,
+ 0, 128,16, 0, 145,72, 22, 0, 0, 4, 0, 0, 231,255,124,0, 0, 0, 0, 0, 68, 128,80, 2, 0, 0, 0, 0, 4, 0, 72, 2, 0, 4, 0, 0, 1, 148,0, 0,
+ 0, 4, 4, 0, 76, 225,58, 0, 0, 128,0, 0, 0, 1, 4, 0, 0, 0, 8, 0, 200,96, 102,1, 16, 0, 0, 0, 255,255,126,3, 0, 0, 0, 0, 8, 48, 66, 1,
+ 0, 0, 0, 0, 148,68, 20, 2, 0, 0, 0, 0, 16, 9, 2, 0, 0, 0, 0, 0, 255,145,38, 0, 0, 0, 0, 0, 25, 73, 0, 1, 0, 0, 0, 0, 197,40, 14, 0,
+ 0, 0, 0, 0, 4, 4, 0, 2, 0, 0, 0, 0, 37, 0, 8, 0, 0, 0, 0, 0, 241,41, 86, 0, 0, 0, 0, 0, 1, 40, 14, 0, 0, 0, 0, 0, 0, 18, 2, 0,
+ 0, 0, 0, 0, 154,0, 4, 0, 0, 0, 0, 0, 153,5, 24, 0, 0, 0, 0, 0, 255,109,107,2, 0, 0, 0, 0, 24, 32, 10, 0, 0, 0, 0, 0, 11, 33, 4, 0,
+ 0, 0, 0, 0, 68, 100,4, 0, 0, 0, 0, 0, 1, 0, 130,0, 0, 0, 0, 0, 62, 188,46, 0, 0, 0, 0, 0, 145,64, 20, 0, 0, 0, 0, 0, 1, 72, 18, 0,
+ 0, 0, 0, 0, 4, 0, 8, 1, 0, 0, 0, 0, 129,0, 18, 0, 0, 0, 0, 0, 43, 144,12, 0, 0, 0, 0, 0, 253,109,30, 3, 0, 0, 0, 0, 32, 0, 2, 2,
+ 0, 0, 0, 0, 144,5, 2, 1, 0, 0, 0, 0, 17, 117,64, 1, 0, 0, 0, 0, 145,65, 92, 3, 0, 0, 0, 0, 128,32, 0, 1, 0, 0, 0, 0, 4, 0, 10, 3,
+ 0, 0, 0, 0, 20, 96, 46, 2, 0, 0, 0, 0, 16, 40, 0, 1, 0, 0, 0, 0, 144,3, 0, 2, 0, 0, 0, 0, 125,253,94, 2, 0, 0, 0, 0, 12, 125,110,1,
+ 0, 0, 0, 0, 32, 1, 2, 0, 0, 0, 0, 0, 28, 40, 0, 0, 0, 32, 0, 0, 16, 0, 2, 1, 0, 48, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 129,65, 0, 1,
+ 0, 0, 0, 0, 64, 0, 16, 2, 0, 0, 0, 0, 213,109,93, 2, 0, 0, 0, 0, 64, 8, 40, 0, 0, 0, 0, 0, 24, 88, 60, 0, 0, 0, 0, 0, 17, 5, 26, 1,
+ 0, 0, 0, 0, 85, 44, 9, 0, 0, 104,2, 0, 131,125,4, 0, 0, 0, 0, 0, 17, 65, 26, 0, 0, 0, 0, 0, 16, 0, 14, 0, 0, 0, 0, 0, 64, 132,0, 0,
+ 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 145,88, 0, 0, 0, 0, 0, 0, 2, 24, 68, 0, 16, 0, 0, 0, 25, 97, 0, 1, 0, 0, 0, 0, 36, 161,2, 0,
+ 0, 240,63, 0, 64, 0, 4, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,105,28, 3, 0, 0, 0, 0, 66, 32, 74, 0, 0, 0, 0, 0, 17, 9, 16, 0,
+ 0, 64, 0, 0, 17, 72, 0, 1, 0, 0, 0, 0, 2, 64, 6, 0, 0, 0, 0, 0, 36, 4, 0, 0, 0, 0, 0, 0, 1, 160,0, 0, 0, 8, 0, 0, 0, 128,8, 0,
+ 0, 0, 0, 0, 1, 0, 5, 0, 0, 0, 0, 0, 128,37, 0, 1, 0, 192,0, 64, 255,255,222,0, 0, 0, 0, 0, 6, 136,2, 0, 0, 0, 0, 0, 0, 88, 6, 0,
+ 0, 0, 0, 0, 0, 48, 16, 0, 0, 0, 0, 0, 128,73, 0, 0, 0, 0, 0, 0, 8, 132,2, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 145,32, 24, 1,
+ 0, 0, 0, 0, 29, 121,26, 0, 0, 0, 0, 0, 21, 0, 4, 0, 0, 0, 0, 0, 145,201,9, 2, 0, 0, 0, 0, 2, 48, 64, 0, 0, 0, 0, 0, 36, 4, 1, 0,
+ 0, 0, 0, 0, 128,1, 26, 1, 0, 0, 0, 0, 2, 65, 4, 0, 16, 116,56, 0, 255,255,255,3, 0, 0, 0, 0, 24, 32, 12, 1, 0, 0, 0, 0, 0, 67, 0, 0,
+ 0, 0, 0, 0, 12, 6, 96, 1, 0, 0, 0, 0, 134,56, 6, 0, 0, 0, 0, 0, 151,73, 18, 2, 0, 0, 0, 0, 0, 100,18, 2, 0, 0, 0, 0, 149,109,2, 1,
+ 0, 0, 0, 0, 3, 80, 10, 0, 128,0, 0, 0, 153,235,22, 1, 0, 0, 0, 0, 81, 42, 2, 2, 0, 0, 0, 0, 17, 56, 2, 1, 128,0, 0, 0, 128,0, 0, 0,
+ 0, 0, 0, 0, 244,0, 36, 0, 0, 0, 0, 0, 49, 0, 8, 2, 0, 0, 0, 0, 81, 201,30, 1, 0, 0, 0, 0, 0, 249,30, 0, 0, 0, 0, 0, 1, 3, 0, 0,
+ 0, 0, 0, 0, 0, 104,6, 0, 0, 0, 0, 0, 1, 17, 2, 0, 0, 0, 0, 0, 153,25, 26, 1, 0, 0, 0, 0, 43, 188,46, 0, 0, 0, 0, 0, 9, 96, 4, 0,
+ 0, 0, 0, 0, 25, 19, 2, 0, 0, 0, 0, 0, 145,77, 28, 0, 0, 0, 0, 0, 201,115,12, 1, 0, 0, 0, 0, 4, 73, 0, 0, 0, 0, 0, 0, 95, 73, 8, 0,
+ 0, 0, 0, 0, 95, 209,30, 1, 0, 0, 0, 0, 128,36, 28, 0, 0, 0, 0, 0, 8, 136,14, 1, 0, 0, 0, 0, 146,32, 4, 0, 0, 0, 0, 0, 125,103,12, 3,
+ 0, 0, 0, 0, 1, 4, 72, 0, 0, 0, 0, 0, 6, 208,76, 0, 0, 0, 0, 0, 145,65, 80, 2, 0, 0, 0, 0, 0, 52, 8, 1, 0, 0, 0, 0, 145,205,22, 0,
+ 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 127,125,126,1, 0, 0, 0, 0, 72, 57, 12, 1, 0, 0, 0, 0, 0, 32, 76, 2, 0, 0, 0, 0, 18, 41, 4, 0,
+ 0, 0, 0, 0, 159,91, 94, 0, 0, 0, 0, 0, 26, 8, 6, 0, 0, 0, 0, 0, 16, 1, 48, 0, 0, 0, 0, 0, 32, 84, 2, 0, 0, 0, 0, 0, 17, 3, 2, 1,
+ 0, 32, 0, 0, 3, 16, 0, 0, 0, 0, 0, 0, 149,65, 126,1, 0, 32, 0, 0, 132,44, 142,0, 0, 0, 0, 0, 17, 7, 0, 1, 0, 0, 4, 0, 133,0, 0, 0,
+ 0, 0, 0, 0, 8, 0, 66, 0, 0, 48, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 20, 64, 36, 0, 0, 32, 0, 0, 129,0, 68, 0, 0, 0, 0, 0, 17, 9, 12, 0,
+ 0, 32, 0, 0, 16, 41, 4, 0, 0, 0, 0, 0, 125,28, 46, 1, 0, 96, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 8, 1, 0, 0, 0, 0, 0, 0, 186,6, 0,
+ 0, 0, 0, 0, 24, 10, 6, 0, 0, 0, 0, 0, 89, 40, 4, 0, 0, 0, 0, 0, 2, 0, 8, 2, 0, 0, 0, 0, 41, 32, 70, 0, 0, 0, 0, 0, 2, 8, 0, 2,
+ 0, 0, 0, 0, 17, 152,4, 1, 0, 0, 0, 0, 85, 1, 2, 2, 0, 0, 0, 0, 0, 80, 6, 0, 0, 0, 0, 0, 133,33, 52, 0, 0, 128,0, 0, 128,0, 0, 0,
+ 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 23, 105,6, 0, 0, 34, 8, 0, 0, 128,0, 0, 0, 0, 0, 0, 17, 193,12, 0, 0, 0, 0, 0, 66, 0, 0, 1,
+ 16, 32, 0, 64, 255,255,254,3, 0, 0, 0, 0, 204,184,62, 0, 0, 0, 0, 0, 22, 41, 4, 1, 0, 0, 0, 0, 128,104,0, 0, 0, 0, 0, 0, 83, 72, 18, 0,
+ 0, 128,0, 0, 147,68, 10, 0, 0, 0, 0, 0, 17, 13, 12, 0, 0, 0, 0, 0, 0, 176,12, 0, 0, 0, 32, 0, 0, 64, 0, 0, 0, 0, 1, 0, 27, 61, 50, 0,
+ 0, 0, 0, 0, 190,184,6, 0, 0, 0, 1, 0, 177,41, 6, 1, 0, 0, 0, 0, 0, 144,70, 0, 0, 64, 0, 0, 25, 72, 0, 1, 0, 0, 0, 0, 83, 73, 18, 0,
+ 0, 0, 0, 0, 19, 24, 2, 0, 0, 0, 0, 0, 239,188,46, 2, 0, 0, 0, 0, 144,9, 68, 0, 0, 0, 0, 0, 128,68, 2, 0, 0, 0, 0, 0, 8, 93, 44, 0,
+ 0, 16, 0, 0, 16, 64, 0, 0, 0, 0, 0, 0, 19, 65, 58, 2, 0, 0, 0, 0, 4, 0, 14, 2, 0, 0, 0, 0, 81, 33, 0, 0, 0, 32, 0, 0, 76, 184,14, 0,
+ 0, 0, 0, 0, 147,64, 8, 0, 0, 0, 0, 0, 0, 48, 12, 0, 0, 0, 0, 0, 127,249,54, 1, 0, 0, 0, 0, 0, 33, 24, 0, 0, 0, 0, 0, 135,61, 44, 0,
+ 0, 0, 0, 0, 17, 185,0, 0, 0, 0, 0, 0, 231,253,110,2, 0, 0, 0, 0, 4, 8, 72, 1, 0, 0, 0, 0, 16, 8, 64, 0, 0, 0, 0, 0, 254,55, 111,2,
+ 0, 0, 0, 0, 17, 1, 18, 1, 0, 0, 0, 0, 104,0, 4, 0, 0, 0, 0, 0, 24, 4, 0, 0, 0, 0, 0, 0, 219,185,12, 0, 0, 0, 0, 0, 145,0, 6, 0,
+ 0, 0, 0, 0, 20, 1, 16, 0, 0, 0, 0, 0, 20, 128,12, 0, 0, 0, 0, 0, 17, 9, 84, 0, 0, 0, 0, 0, 24, 8, 2, 0, 0, 0, 0, 0, 0, 40, 30, 0,
+ 0, 32, 0, 0, 89, 24, 76, 0, 0, 0, 0, 0, 0, 40, 28, 0, 0, 0, 0, 0, 64, 32, 10, 1, 0, 0, 0, 0, 0, 24, 34, 0, 0, 0, 0, 0, 0, 208,16, 0,
+ 0, 0, 0, 0, 9, 0, 128,1, 0, 224,4, 0, 0, 0, 64, 0, 0, 8, 0, 0, 239,248,94, 0, 0, 0, 0, 0, 17, 0, 2, 1, 0, 112,0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 156,0, 0, 0, 0, 0, 145,24, 2, 0, 0, 0, 0, 0, 198,172,33, 1, 0, 4, 0, 0, 0, 16, 26, 2, 0, 8, 0, 0, 149,65, 48, 1,
+ 0, 0, 0, 0, 16, 177,88, 0, 0, 0, 0, 0, 4, 0, 52, 0, 0, 0, 0, 0, 80, 32, 0, 1, 0, 0, 0, 0, 51, 72, 30, 0, 0, 0, 0, 0, 4, 132,0, 0,
+ 0, 0, 0, 0, 8, 36, 2, 1, 0, 0, 0, 0, 68, 120,20, 2, 0, 0, 0, 0, 149,109,20, 0, 0, 32, 0, 0, 75, 232,78, 1, 0, 32, 0, 0, 17, 8, 4, 0,
+ 0, 32, 32, 0, 0, 64, 0, 0, 0, 48, 0, 0, 17, 105,12, 1, 0, 0, 0, 0, 2, 72, 4, 0, 0, 0, 0, 0, 10, 152,28, 0, 0, 32, 0, 0, 17, 1, 20, 1,
+ 0, 240,4, 0, 0, 8, 12, 0, 0, 0, 0, 0, 129,65, 0, 2, 0, 0, 0, 0, 142,56, 126,2, 0, 0, 0, 0, 17, 8, 16, 1, 0, 0, 0, 0, 18, 0, 2, 2,
+ 0, 0, 0, 0, 146,20, 4, 0, 0, 0, 0, 0, 21, 1, 8, 0, 0, 0, 0, 0, 193,64, 0, 0, 0, 0, 0, 0, 146,144,4, 0, 0, 0, 0, 0, 160,64, 16, 2,
+ 0, 0, 0, 0, 32, 72, 8, 0, 0, 0, 0, 0, 217,72, 2, 0, 0, 0, 0, 0, 2, 16, 12, 1, 0, 32, 0, 0, 244,91, 76, 1, 0, 0, 0, 0, 145,77, 20, 0,
+ 0, 0, 0, 0, 132,1, 4, 1, 0, 96, 0, 0, 65, 128,12, 1, 0, 0, 0, 0, 33, 0, 10, 0, 0, 96, 4, 0, 16, 1, 12, 0, 0, 0, 0, 0, 12, 168,12, 0,
+ 0, 0, 0, 0, 16, 67, 20, 1, 0, 0, 0, 0, 89, 221,6, 0, 0, 0, 0, 0, 19, 64, 4, 0, 0, 0, 0, 0, 155,81, 30, 2, 0, 0, 0, 0, 4, 32, 128,1,
+ 0, 0, 0, 0, 253,103,24, 0, 0, 16, 0, 0, 2, 1, 46, 0, 0, 0, 0, 0, 2, 0, 144,0, 0, 96, 32, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 16, 12, 1,
+ 0, 8, 0, 0, 1, 129,4, 0, 0, 0, 0, 0, 16, 73, 20, 1, 0, 0, 0, 0, 17, 80, 36, 0, 0, 0, 0, 0, 211,93, 77, 0, 0, 0, 0, 0, 200,116,8, 1,
+ 0, 0, 0, 0, 21, 5, 78, 2, 0, 32, 0, 0, 68, 0, 148,0, 0, 0, 0, 0, 9, 44, 6, 0, 0, 0, 0, 0, 129,113,0, 0, 0, 0, 0, 0, 157,229,5, 0,
+ 0, 0, 32, 0, 16, 0, 8, 0, 0, 0, 0, 0, 1, 64, 50, 0, 0, 0, 0, 0, 44, 0, 2, 0, 0, 0, 2, 0, 17, 48, 4, 0, 0, 4, 0, 0, 255,255,254,3,
+ 0, 0, 0, 0, 133,21, 2, 0, 0, 0, 0, 0, 18, 73, 18, 0, 0, 0, 0, 0, 0, 16, 78, 0, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,0, 1,
+ 0, 0, 0, 0, 25, 105,22, 0, 0, 0, 0, 0, 68, 56, 10, 1, 0, 0, 0, 0, 49, 0, 172,2, 0, 0, 0, 0, 8, 64, 68, 0, 0, 0, 0, 0, 13, 32, 6, 2,
+ 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 16, 77, 0, 0, 0, 224,30, 0, 25, 32, 132,0, 0, 224,30, 0, 0, 0, 0, 0, 0, 224,6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 57, 73, 8, 0, 0, 0, 0, 0, 0, 32, 20, 2, 0, 0, 0, 0, 48, 48, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 0, 0, 16, 81, 0, 1,
+ 0, 0, 0, 0, 19, 89, 16, 0, 0, 0, 2, 0, 64, 0, 0, 0, 0, 0, 0, 0, 253,249,62, 2, 0, 32, 0, 0, 0, 16, 140,1, 0, 0, 0, 0, 16, 128,24, 0,
+ 0, 0, 0, 0, 62, 116,14, 0, 0, 0, 0, 0, 81, 69, 8, 0, 16, 0, 0, 0, 127,125,127,2, 0, 0, 0, 0, 136,40, 8, 0, 0, 2, 0, 0, 219,89, 71, 1,
+ 0, 0, 0, 0, 4, 32, 5, 0, 0, 0, 0, 0, 0, 3, 8, 0, 0, 0, 0, 0, 25, 177,0, 0, 0, 0, 0, 0, 20, 44, 4, 0, 0, 32, 0, 0, 0, 40, 8, 0,
+ 0, 32, 0, 0, 20, 9, 4, 0, 0, 32, 0, 0, 10, 32, 12, 0, 0, 0, 0, 0, 19, 77, 0, 0, 0, 0, 0, 0, 28, 32, 132,0, 0, 0, 0, 0, 17, 5, 72, 0,
+ 0, 0, 0, 0, 0, 48, 72, 0, 0, 40, 0, 0, 119,201,118,0, 0, 0, 0, 0, 0, 72, 18, 0, 0, 0, 0, 0, 243,253,79, 1, 0, 0, 0, 0, 4, 11, 0, 0,
+ 0, 0, 0, 0, 42, 12, 70, 1, 0, 0, 1, 0, 213,121,94, 1, 0, 0, 0, 0, 194,0, 26, 0, 0, 0, 0, 0, 0, 97, 0, 1, 0, 32, 0, 0, 10, 128,68, 0,
+ 0, 0, 0, 0, 17, 97, 20, 0, 0, 48, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 36, 116,12, 0, 0, 0, 0, 0, 8, 16, 66, 0, 0, 0, 0, 0, 73, 58, 46, 0,
+ 0, 4, 0, 0, 81, 65, 16, 1, 0, 0, 0, 0, 28, 4, 14, 1, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 36, 8, 0, 0, 0, 0, 0, 13, 4, 14, 0,
+ 0, 16, 0, 0, 153,73, 70, 3, 0, 0, 0, 0, 12, 4, 0, 1, 0, 0, 0, 0, 29, 64, 0, 0, 0, 0, 0, 0, 0, 65, 16, 2, 0, 0, 0, 0, 4, 0, 6, 1,
+ 0, 0, 0, 0, 13, 160,80, 1, 0, 0, 2, 0, 160,228,20, 0, 0, 0, 0, 0, 148,12, 0, 0, 0, 0, 0, 0, 0, 168,12, 0, 0, 0, 0, 0, 80, 1, 16, 0,
+ 0, 0, 0, 0, 18, 32, 12, 0, 0, 0, 0, 0, 4, 0, 46, 0, 0, 0, 0, 0, 0, 137,8, 0, 0, 0, 0, 0, 19, 157,0, 0, 0, 128,0, 0, 16, 33, 4, 0,
+ 0, 224,62, 0, 16, 65, 4, 0, 0, 0, 0, 0, 213,121,28, 3, 0, 0, 0, 0, 0, 16, 40, 0, 0, 0, 0, 0, 1, 16, 38, 2, 0, 0, 0, 0, 211,59, 30, 0,
+ 0, 0, 0, 0, 4, 16, 0, 1, 0, 0, 0, 0, 13, 4, 0, 0, 0, 32, 0, 0, 8, 16, 6, 0, 0, 0, 0, 0, 147,64, 6, 2, 0, 0, 0, 0, 151,27, 14, 2,
+ 0, 0, 0, 0, 129,64, 0, 1, 0, 0, 0, 0, 18, 0, 16, 2, 0, 0, 0, 0, 78, 36, 0, 0, 0, 0, 0, 0, 223,255,31, 1, 0, 0, 0, 0, 132,40, 4, 3,
+ 0, 0, 0, 0, 25, 0, 76, 0, 16, 100,1, 0, 255,255,255,3, 0, 0, 0, 0, 254,124,15, 0, 0, 0, 0, 0, 17, 64, 66, 0, 0, 0, 0, 0, 128,32, 64, 0,
+ 0, 0, 0, 0, 132,22, 142,0, 0, 0, 0, 0, 184,25, 110,0, 0, 0, 0, 0, 176,57, 6, 0, 0, 0, 0, 0, 187,107,46, 1, 0, 0, 0, 0, 40, 60, 14, 0,
+ 0, 0, 0, 0, 13, 41, 6, 1, 0, 0, 0, 0, 251,220,14, 1, 0, 0, 0, 0, 24, 8, 16, 0, 0, 0, 0, 0, 17, 40, 76, 0, 0, 0, 0, 0, 64, 32, 41, 0,
+ 0, 0, 0, 0, 17, 1, 0, 3, 0, 0, 0, 0, 68, 49, 2, 0, 0, 0, 0, 0, 20, 65, 8, 0, 0, 0, 0, 0, 49, 1, 2, 0, 0, 64, 0, 0, 151,93, 26, 2,
+ 0, 0, 0, 0, 4, 57, 6, 0, 0, 0, 0, 0, 129,9, 16, 0, 0, 0, 0, 0, 0, 224,0, 0, 0, 0, 0, 0, 8, 128,8, 0, 0, 0, 0, 0, 0, 136,2, 0,
+ 0, 0, 0, 0, 65, 42, 0, 0, 0, 32, 0, 0, 113,65, 20, 0, 0, 0, 0, 0, 17, 65, 70, 0, 0, 0, 0, 0, 144,25, 0, 0, 0, 68, 0, 0, 17, 64, 16, 0,
+ 0, 0, 0, 0, 192,40, 32, 0, 0, 232,28, 0, 0, 0, 0, 0, 16, 0, 0, 0, 219,121,94, 1, 0, 0, 0, 0, 0, 53, 64, 1, 0, 0, 0, 0, 51, 75, 68, 0,
+ 0, 0, 0, 0, 203,124,14, 0, 0, 0, 0, 0, 128,4, 68, 0, 0, 0, 0, 0, 129,48, 94, 0, 0, 0, 0, 0, 172,57, 30, 0, 0, 0, 0, 0, 136,64, 0, 0,
+ 0, 0, 0, 0, 16, 4, 12, 2, 0, 0, 0, 0, 0, 4, 8, 2, 16, 0, 0, 0, 189,9, 12, 0, 0, 0, 0, 0, 147,105,22, 0, 0, 32, 0, 0, 128,0, 6, 0,
+ 0, 0, 0, 0, 148,129,8, 0, 0, 0, 0, 0, 219,217,86, 2, 0, 0, 0, 0, 24, 56, 78, 2, 0, 0, 0, 0, 19, 40, 0, 0, 0, 0, 0, 0, 2, 1, 32, 0,
+ 0, 0, 0, 0, 16, 33, 8, 2, 0, 0, 0, 0, 147,125,78, 1, 0, 0, 0, 0, 64, 41, 46, 1, 0, 0, 0, 0, 145,81, 22, 0, 0, 0, 0, 0, 84, 0, 8, 0,
+ 0, 0, 0, 0, 17, 33, 8, 0, 0, 0, 16, 0, 20, 40, 14, 0, 0, 0, 0, 0, 52, 16, 36, 1, 0, 0, 0, 0, 17, 193,4, 0, 0, 0, 0, 0, 145,93, 94, 0,
+ 0, 0, 0, 0, 41, 186,98, 3, 0, 0, 0, 0, 144,44, 6, 1, 0, 0, 0, 0, 152,48, 8, 0, 0, 0, 0, 0, 0, 33, 16, 0, 0, 0, 8, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 138,56, 10, 0, 0, 0, 0, 0, 255,253,127,1, 0, 32, 0, 0, 240,186,126,3, 0, 0, 0, 0, 0, 68, 18, 0, 0, 0, 0, 0, 255,241,14, 0,
+ 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 1, 0, 4, 148,0, 0, 0, 0, 1, 0, 237,55, 238,1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 5, 12, 0,
+ 0, 0, 0, 0, 16, 103,0, 1, 0, 0, 0, 0, 1, 1, 48, 0, 0, 0, 0, 0, 120,176,36, 0, 0, 0, 0, 0, 4, 48, 4, 0, 0, 0, 0, 0, 5, 2, 0, 0,
+ 0, 0, 0, 0, 88, 1, 4, 0, 0, 32, 0, 0, 0, 105,14, 0, 0, 112,32, 0, 17, 65, 4, 0, 0, 0, 0, 0, 145,81, 0, 1, 0, 0, 0, 0, 112,8, 36, 0,
+ 0, 32, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 32, 56, 82, 0, 0, 0, 0, 0, 146,65, 12, 2, 0, 0, 0, 0, 144,80, 2, 2, 0, 0, 0, 0, 34, 128,4, 0,
+ 0, 0, 0, 0, 1, 176,0, 0, 0, 0, 0, 0, 5, 64, 1, 0, 0, 0, 0, 0, 12, 36, 4, 0, 0, 0, 0, 0, 91, 121,30, 1, 0, 0, 0, 0, 196,44, 2, 0,
+ 0, 32, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 65, 40, 2, 0, 0, 224,42, 0, 0, 16, 6, 0, 0, 32, 0, 0, 0, 12, 64, 0, 0, 0, 0, 0, 76, 32, 12, 1,
+ 0, 0, 0, 0, 11, 128,52, 0, 0, 0, 0, 0, 196,32, 10, 1, 0, 8, 0, 0, 127,125,92, 3, 0, 0, 0, 0, 64, 48, 12, 0, 16, 66, 1, 0, 217,249,78, 3,
+ 0, 128,0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65, 64, 0, 0, 160,0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 48, 80, 12, 2, 0, 0, 1, 0, 64, 89, 0, 1,
+ 0, 0, 0, 0, 212,137,24, 0, 0, 0, 0, 0, 172,253,94, 2, 0, 0, 0, 0, 0, 144,16, 0, 0, 0, 0, 0, 128,192,64, 0, 0, 32, 32, 0, 128,64, 0, 0,
+ 0, 0, 0, 0, 189,201,30, 1, 0, 0, 0, 0, 4, 12, 43, 0, 0, 0, 0, 0, 0, 64, 2, 2, 0, 0, 0, 0, 65, 73, 0, 0, 0, 160,1, 0, 94, 121,124,0,
+ 0, 0, 0, 0, 70, 32, 12, 0, 0, 0, 0, 0, 21, 96, 24, 0, 0, 0, 0, 0, 4, 141,6, 0, 0, 0, 0, 0, 16, 73, 2, 1, 0, 0, 0, 0, 4, 240,1, 0,
+ 0, 0, 0, 0, 142,56, 44, 2, 0, 0, 0, 0, 72, 3, 12, 0, 0, 240,61, 0, 2, 16, 38, 0, 0, 0, 0, 0, 145,1, 20, 0, 0, 0, 0, 0, 17, 113,82, 2,
+ 0, 0, 0, 0, 128,9, 4, 2, 0, 4, 0, 0, 247,127,76, 1, 0, 0, 0, 0, 74, 0, 4, 0, 0, 0, 0, 0, 0, 4, 24, 0, 0, 0, 0, 0, 247,104,140,3,
+ 0, 224,8, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 68, 12, 0, 0, 0, 0, 0, 25, 1, 68, 0, 0, 0, 0, 0, 103,176,54, 2, 0, 0, 0, 0, 4, 1, 0, 2,
+ 0, 0, 0, 0, 12, 40, 4, 0, 0, 0, 0, 0, 151,65, 8, 2, 0, 0, 0, 0, 209,121,92, 2, 0, 0, 0, 0, 65, 40, 0, 2, 0, 0, 0, 0, 0, 64, 128,2,
+ 0, 8, 0, 0, 223,253,126,2, 0, 0, 0, 0, 72, 53, 70, 3, 0, 0, 0, 0, 16, 80, 16, 1, 0, 96, 0, 0, 8, 0, 6, 0, 0, 0, 0, 0, 64, 41, 3, 0,
+ 0, 0, 0, 0, 17, 85, 16, 0, 0, 0, 0, 0, 16, 48, 10, 0, 0, 0, 0, 0, 21, 166,14, 0, 0, 0, 0, 0, 12, 4, 2, 0, 0, 0, 0, 0, 32, 8, 70, 0,
+ 0, 0, 0, 0, 17, 81, 80, 0, 0, 0, 0, 0, 53, 160,0, 0, 0, 0, 0, 0, 179,73, 70, 0, 0, 0, 0, 0, 10, 0, 12, 0, 0, 0, 0, 0, 11, 144,0, 0,
+ 0, 0, 0, 0, 234,24, 14, 0, 0, 0, 0, 0, 106,88, 100,0, 0, 0, 0, 0, 4, 56, 0, 0, 0, 0, 0, 0, 145,73, 94, 0, 0, 0, 0, 0, 192,36, 2, 1,
+ 0, 0, 0, 0, 64, 8, 130,1, 0, 32, 0, 0, 0, 32, 68, 0, 0, 0, 0, 0, 0, 40, 12, 2, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 17, 89, 22, 0,
+ 0, 32, 0, 0, 130,0, 4, 1, 0, 0, 0, 0, 64, 52, 4, 0, 0, 0, 16, 0, 95, 59, 46, 3, 0, 192,5, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 96, 8, 0,
+ 0, 0, 0, 0, 8, 58, 0, 0, 0, 0, 0, 0, 25, 8, 24, 0, 0, 0, 0, 0, 17, 64, 12, 1, 0, 0, 0, 0, 24, 88, 12, 0, 16, 128,0, 0, 255,189,110,2,
+ 0, 0, 0, 0, 2, 16, 64, 0, 0, 0, 0, 0, 0, 32, 68, 1, 0, 32, 0, 0, 16, 1, 4, 2, 0, 0, 0, 0, 20, 213,8, 0, 0, 128,0, 0, 25, 65, 22, 0,
+ 0, 0, 0, 0, 16, 8, 12, 0, 0, 0, 0, 0, 21, 0, 0, 1, 0, 0, 0, 0, 0, 65, 18, 0, 0, 0, 0, 0, 16, 0, 132,0, 0, 0, 0, 0, 0, 161,0, 1,
+ 0, 0, 0, 0, 5, 96, 2, 0, 0, 0, 0, 0, 145,201,24, 0, 0, 0, 0, 0, 144,65, 2, 0, 0, 0, 0, 0, 25, 160,8, 0, 0, 0, 16, 0, 21, 105,84, 1,
+ 0, 0, 0, 0, 19, 1, 4, 2, 0, 128,0, 0, 55, 121,24, 1, 0, 0, 0, 0, 68, 16, 10, 0, 0, 0, 0, 0, 17, 72, 52, 0, 0, 0, 0, 0, 83, 89, 88, 2,
+ 0, 0, 0, 0, 16, 45, 66, 0, 0, 0, 0, 0, 48, 17, 0, 1, 0, 0, 4, 0, 0, 16, 0, 0, 0, 244,1, 4, 255,255,255,3, 0, 144,0, 0, 0, 64, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 16, 96, 64, 0, 0, 0, 2, 0, 0, 0, 4, 0, 20, 0, 3, 0, 255,255,255,3, 0, 16, 0, 0, 8, 64, 0, 0,
+ 0, 0, 0, 0, 0, 169,38, 0, 0, 0, 0, 0, 149,93, 29, 2, 0, 0, 0, 0, 32, 160,4, 0, 0, 0, 0, 0, 8, 60, 78, 1, 0, 0, 0, 0, 17, 73, 24, 1,
+ 0, 0, 0, 0, 4, 72, 66, 0, 0, 0, 0, 0, 32, 104,28, 0, 0, 0, 0, 0, 145,17, 70, 0, 0, 0, 0, 0, 10, 32, 10, 0, 0, 0, 0, 0, 123,89, 22, 0,
+ 0, 0, 0, 0, 0, 56, 98, 0, 0, 0, 0, 0, 20, 104,4, 0, 0, 0, 0, 0, 5, 12, 0, 0, 0, 0, 0, 0, 13, 76, 12, 2, 0, 0, 0, 0, 48, 0, 16, 0,
+ 0, 0, 0, 0, 25, 105,16, 0, 0, 0, 0, 0, 9, 40, 30, 0, 0, 0, 0, 0, 1, 124,20, 0, 0, 0, 0, 0, 76, 44, 190,2, 0, 0, 1, 0, 48, 76, 12, 0,
+ 0, 32, 0, 0, 18, 65, 68, 0, 0, 0, 0, 0, 20, 1, 68, 0, 0, 0, 0, 0, 245,221,28, 1, 0, 0, 0, 0, 252,53, 94, 3, 0, 0, 0, 0, 64, 40, 0, 2,
+ 0, 0, 0, 0, 68, 5, 9, 2, 0, 0, 0, 0, 5, 116,46, 1, 0, 0, 0, 0, 4, 1, 1, 2, 0, 0, 0, 0, 86, 40, 0, 2, 0, 0, 0, 0, 32, 120,12, 0,
+ 0, 0, 0, 0, 72, 68, 4, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 44, 32, 38, 2, 0, 0, 0, 0, 9, 32, 20, 0, 0, 0, 0, 0, 27, 65, 31, 1,
+ 0, 0, 0, 0, 8, 1, 14, 0, 0, 32, 0, 0, 0, 65, 12, 0, 0, 0, 0, 0, 16, 96, 14, 0, 0, 0, 0, 0, 1, 112,116,0, 0, 0, 0, 0, 64, 64, 0, 1,
+ 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 6, 20, 4, 2, 0, 0, 0, 0, 0, 64, 8, 2, 0, 0, 0, 0, 19, 153,16, 0, 0, 0, 0, 0, 145,8, 16, 0,
+ 0, 0, 0, 0, 253,119,62, 3, 0, 0, 0, 0, 196,20, 46, 1, 0, 32, 0, 0, 0, 32, 128,0, 0, 0, 0, 0, 0, 60, 0, 1, 0, 32, 0, 0, 2, 32, 36, 1,
+ 0, 0, 0, 0, 78, 140,45, 0, 0, 0, 0, 0, 69, 236,12, 0, 0, 32, 0, 0, 132,76, 20, 0, 0, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 10, 40, 0, 0,
+ 0, 0, 0, 0, 36, 168,70, 2, 0, 0, 0, 0, 145,73, 22, 1, 0, 0, 0, 0, 64, 41, 8, 0, 0, 96, 62, 0, 1, 0, 4, 0, 0, 0, 0, 0, 64, 58, 4, 0,
+ 0, 0, 0, 0, 149,205,86, 1, 0, 32, 0, 0, 78, 61, 6, 3, 0, 32, 0, 0, 22, 89, 68, 1, 0, 0, 0, 0, 20, 44, 10, 0, 0, 0, 0, 0, 17, 32, 20, 1,
+ 0, 0, 0, 0, 0, 42, 4, 0, 0, 0, 0, 0, 255,253,63, 2, 0, 0, 0, 0, 238,191,62, 3, 0, 0, 0, 0, 0, 4, 192,0, 0, 0, 0, 0, 17, 1, 128,0,
+ 0, 0, 0, 0, 0, 16, 12, 2, 0, 0, 0, 0, 17, 193,16, 0, 0, 0, 0, 0, 24, 0, 1, 0, 0, 0, 0, 0, 129,69, 0, 1, 0, 0, 0, 0, 17, 97, 16, 1,
+ 0, 0, 0, 0, 16, 32, 68, 1, 0, 0, 0, 0, 24, 46, 12, 2, 0, 0, 0, 0, 155,172,44, 2, 0, 32, 8, 0, 144,1, 12, 0, 0, 0, 0, 0, 217,89, 116,0,
+ 0, 0, 0, 0, 0, 48, 40, 1, 0, 0, 0, 0, 16, 16, 10, 3, 0, 0, 0, 0, 0, 128,82, 0, 0, 0, 0, 0, 14, 104,172,0, 0, 32, 32, 0, 17, 137,0, 0,
+ 0, 32, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 68, 56, 4, 2, 0, 0, 0, 0, 80, 104,4, 0, 0, 0, 0, 0, 145,105,0, 1, 0, 0, 0, 0, 76, 40, 2, 0,
+ 0, 0, 0, 0, 32, 176,4, 0, 0, 0, 0, 0, 149,121,70, 1, 0, 0, 0, 0, 64, 5, 0, 0, 0, 0, 0, 0, 24, 41, 2, 0, 0, 0, 0, 0, 31, 160,12, 2,
+ 0, 0, 0, 0, 0, 13, 16, 0, 0, 4, 0, 0, 8, 0, 4, 0, 0, 48, 0, 0, 2, 85, 12, 0, 0, 0, 0, 0, 33, 32, 4, 2, 0, 0, 0, 0, 149,205,109,2,
+ 0, 0, 0, 0, 68, 40, 6, 0, 0, 0, 0, 0, 21, 0, 2, 0, 0, 0, 0, 0, 5, 8, 0, 2, 0, 0, 0, 0, 0, 68, 16, 1, 0, 0, 0, 0, 17, 77, 8, 0,
+ 0, 0, 0, 0, 84, 104,2, 0, 0, 240,52, 0, 55, 221,76, 1, 0, 112,16, 0, 0, 0, 64, 0, 0, 208,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 57, 26, 0,
+ 0, 0, 0, 0, 40, 32, 0, 0, 0, 0, 0, 0, 32, 96, 40, 0, 0, 0, 0, 0, 0, 32, 118,0, 0, 16, 0, 0, 25, 64, 18, 0, 1, 240,63, 0, 9, 0, 4, 0,
+ 0, 0, 0, 0, 8, 8, 22, 0, 0, 0, 0, 0, 21, 48, 32, 0, 0, 0, 0, 0, 149,125,94, 3, 0, 0, 0, 0, 72, 238,8, 0, 0, 32, 0, 0, 16, 65, 64, 1,
+ 0, 0, 0, 0, 16, 44, 14, 0, 0, 32, 0, 0, 49, 65, 84, 0, 0, 0, 0, 0, 64, 152,4, 0, 0, 0, 0, 0, 17, 108,8, 0, 0, 0, 0, 0, 4, 41, 20, 0,
+ 0, 0, 0, 0, 29, 124,5, 2, 0, 32, 0, 0, 145,5, 0, 0, 0, 32, 0, 0, 16, 40, 4, 0, 0, 32, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 16, 0, 136,0,
+ 0, 0, 0, 0, 20, 36, 0, 0, 0, 0, 0, 0, 76, 140,76, 2, 0, 48, 32, 0, 157,95, 20, 1, 0, 32, 0, 0, 0, 32, 20, 0, 0, 0, 0, 0, 209,68, 16, 0,
+ 0, 0, 0, 0, 72, 28, 4, 1, 0, 32, 0, 0, 16, 13, 4, 0, 0, 0, 0, 0, 5, 104,4, 0, 0, 0, 0, 0, 12, 0, 36, 0, 0, 0, 0, 0, 17, 41, 12, 0,
+ 0, 32, 0, 0, 20, 12, 0, 0, 0, 0, 0, 0, 4, 16, 12, 0, 0, 2, 0, 0, 31, 253,78, 0, 0, 0, 0, 0, 2, 56, 0, 0, 0, 0, 0, 0, 160,0, 18, 0,
+ 0, 2, 0, 0, 17, 65, 0, 0, 0, 0, 0, 0, 137,81, 0, 2, 0, 0, 0, 0, 194,145,4, 0, 0, 64, 0, 0, 33, 129,40, 0, 0, 0, 0, 0, 110,173,46, 1,
+ 0, 96, 0, 0, 35, 84, 12, 0, 0, 32, 0, 0, 49, 0, 8, 1, 0, 0, 0, 0, 28, 24, 12, 1, 0, 32, 0, 0, 17, 19, 4, 1, 0, 0, 0, 0, 2, 8, 68, 0,
+ 0, 0, 0, 0, 133,69, 28, 0, 0, 0, 0, 0, 4, 9, 2, 0, 0, 0, 0, 0, 25, 73, 18, 0, 0, 0, 0, 0, 68, 40, 0, 0, 0, 0, 0, 0, 1, 40, 6, 2,
+ 0, 0, 0, 0, 69, 16, 0, 0, 0, 0, 0, 0, 0, 10, 0, 2, 0, 32, 0, 0, 64, 32, 12, 2, 0, 0, 0, 0, 14, 175,110,0, 0, 0, 0, 0, 3, 9, 4, 3,
+ 0, 0, 0, 0, 144,64, 4, 2, 0, 0, 0, 0, 81, 104,22, 0, 0, 0, 0, 0, 100,168,138,0, 0, 0, 0, 0, 1, 5, 2, 0, 0, 0, 0, 0, 181,253,56, 3,
+ 0, 0, 0, 0, 88, 4, 2, 1, 0, 32, 0, 0, 92, 8, 4, 0, 0, 0, 0, 0, 145,81, 16, 1, 0, 0, 0, 0, 69, 0, 74, 1, 0, 0, 0, 0, 0, 160,77, 0,
+ 0, 0, 0, 0, 19, 16, 0, 0, 0, 0, 0, 0, 255,253,95, 3, 0, 0, 0, 0, 232,40, 14, 2, 0, 0, 0, 0, 16, 65, 40, 0, 0, 0, 0, 0, 64, 42, 130,0,
+ 0, 0, 0, 0, 64, 136,8, 2, 0, 32, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 68, 40, 142,0, 0, 0, 0, 0, 0, 5, 16, 0, 0, 0, 0, 0, 19, 65, 4, 3,
+ 0, 0, 0, 0, 10, 8, 74, 1, 0, 0, 0, 0, 84, 56, 132,0, 0, 96, 0, 0, 14, 128,68, 0, 0, 0, 4, 0, 145,69, 8, 0, 0, 0, 0, 0, 20, 96, 36, 0,
+ 0, 0, 0, 0, 145,73, 10, 2, 0, 0, 0, 0, 70, 48, 138,0, 0, 224,1, 0, 0, 0, 0, 0, 16, 40, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 17, 205,12, 1,
+ 0, 112,8, 0, 28, 82, 4, 0, 0, 96, 0, 0, 4, 80, 4, 0, 16, 0, 0, 0, 253,255,63, 3, 0, 0, 0, 0, 200,44, 18, 2, 0, 0, 0, 0, 144,73, 16, 1,
+ 0, 0, 0, 0, 0, 169,32, 1, 0, 0, 0, 0, 34, 0, 32, 0, 0, 0, 0, 0, 12, 40, 0, 0, 0, 0, 0, 0, 73, 57, 14, 3, 0, 0, 0, 0, 0, 0, 44, 0,
+ 0, 32, 0, 0, 16, 73, 0, 0, 0, 0, 0, 0, 213,248,76, 1, 0, 0, 0, 0, 16, 81, 4, 1, 0, 0, 0, 0, 36, 40, 0, 0, 0, 0, 0, 0, 44, 40, 252,2,
+ 0, 0, 0, 0, 1, 41, 10, 2, 0, 0, 0, 0, 84, 104,12, 0, 0, 0, 0, 0, 8, 32, 76, 0, 0, 32, 0, 0, 0, 16, 36, 0, 0, 0, 0, 0, 149,237,28, 1,
+ 0, 0, 0, 0, 8, 24, 24, 0, 0, 0, 0, 0, 4, 129,50, 0, 0, 0, 0, 0, 23, 52, 4, 0, 0, 0, 0, 0, 145,33, 4, 0, 0, 32, 0, 0, 82, 8, 4, 0,
+ 0, 0, 0, 0, 145,1, 84, 0, 0, 0, 0, 0, 3, 1, 6, 0, 0, 0, 0, 0, 65, 48, 36, 2, 0, 0, 0, 0, 149,101,13, 2, 0, 0, 0, 0, 4, 32, 34, 0,
+ 0, 0, 0, 0, 17, 25, 72, 0, 0, 0, 0, 0, 17, 77, 6, 0, 0, 0, 0, 0, 213,69, 94, 3, 0, 0, 0, 0, 132,41, 66, 0, 0, 32, 0, 0, 16, 44, 30, 1,
+ 0, 240,14, 0, 223,246,12, 0, 0, 0, 0, 0, 190,65, 4, 0, 0, 0, 0, 0, 80, 200,136,0, 0, 0, 0, 0, 20, 67, 12, 0, 0, 32, 0, 0, 80, 29, 22, 0,
+ 0, 0, 0, 0, 21, 40, 12, 1, 0, 0, 0, 0, 60, 44, 4, 2, 0, 0, 0, 0, 102,168,116,2, 0, 0, 0, 0, 0, 5, 4, 1, 0, 0, 0, 0, 132,40, 4, 2,
+ 0, 0, 0, 0, 17, 97, 86, 1, 0, 0, 0, 0, 0, 32, 78, 1, 0, 0, 0, 0, 118,162,76, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 128,40, 10, 3,
+ 0, 0, 0, 0, 0, 65, 12, 0, 0, 0, 0, 0, 17, 64, 14, 0, 0, 0, 0, 0, 16, 9, 0, 2, 0, 0, 0, 0, 181,109,19, 0, 0, 0, 0, 0, 160,40, 18, 0,
+ 0, 0, 0, 0, 32, 33, 16, 0, 0, 0, 0, 0, 48, 32, 6, 2, 0, 0, 0, 0, 145,193,16, 1, 0, 0, 0, 0, 64, 1, 16, 0, 0, 0, 0, 0, 80, 16, 0, 0,
+ 0, 0, 0, 0, 128,0, 30, 0, 0, 0, 0, 0, 0, 0, 192,0, 0, 0, 0, 0, 2, 2, 8, 0, 0, 20, 0, 0, 25, 233,26, 1, 0, 0, 0, 0, 84, 57, 30, 1,
+ 0, 0, 0, 0, 17, 76, 0, 0, 0, 0, 0, 0, 84, 96, 8, 0, 0, 0, 0, 0, 0, 32, 48, 0, 0, 240,9, 0, 0, 0, 4, 0, 0, 96, 0, 0, 8, 64, 6, 0,
+ 0, 0, 0, 0, 43, 0, 8, 0, 0, 0, 0, 0, 83, 105,74, 2, 0, 0, 0, 0, 65, 133,8, 0, 0, 0, 0, 0, 64, 97, 4, 0, 0, 0, 0, 0, 107,188,14, 0,
+ 0, 0, 1, 0, 159,217,4, 1, 0, 0, 0, 0, 10, 32, 40, 0, 0, 0, 0, 0, 10, 192,4, 0, 0, 32, 0, 0, 0, 192,4, 0, 0, 32, 0, 0, 18, 64, 0, 0,
+ 0, 0, 0, 0, 16, 129,0, 1, 0, 0, 0, 0, 19, 144,4, 0, 0, 32, 0, 0, 16, 129,4, 0, 0, 0, 0, 0, 68, 24, 20, 0, 0, 32, 1, 0, 0, 1, 0, 1,
+ 0, 0, 0, 0, 22, 116,30, 0, 0, 0, 0, 0, 2, 32, 16, 0, 0, 240,62, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0, 209,65, 4, 1,
+ 0, 32, 0, 0, 8, 16, 12, 1, 0, 32, 0, 0, 86, 186,102,0, 0, 0, 0, 0, 144,128,0, 1, 0, 0, 0, 0, 5, 124,2, 0, 0, 0, 0, 0, 40, 8, 12, 0,
+ 0, 0, 0, 0, 4, 68, 1, 0, 0, 0, 0, 0, 101,96, 60, 2, 0, 0, 0, 0, 16, 1, 1, 0, 0, 32, 0, 0, 32, 16, 4, 0, 0, 0, 0, 0, 20, 4, 8, 0,
+ 0, 0, 0, 0, 17, 4, 10, 2, 0, 0, 0, 16, 149,101,29, 0, 0, 0, 0, 0, 10, 0, 14, 3, 0, 0, 0, 0, 241,185,86, 1, 0, 0, 0, 0, 16, 129,12, 0,
+ 0, 0, 0, 0, 0, 40, 24, 2, 0, 0, 0, 0, 64, 32, 18, 0, 0, 0, 0, 0, 77, 64, 2, 0, 0, 32, 0, 0, 253,188,46, 2, 0, 0, 0, 0, 8, 16, 68, 0,
+ 0, 0, 0, 0, 4, 0, 76, 0, 0, 0, 0, 0, 17, 17, 6, 0, 0, 0, 0, 0, 61, 217,14, 2, 0, 0, 0, 0, 41, 0, 4, 1, 0, 0, 0, 0, 9, 32, 4, 0,
+ 0, 0, 0, 0, 17, 3, 14, 3, 0, 0, 0, 0, 1, 65, 0, 3, 0, 0, 0, 0, 0, 132,64, 0, 0, 0, 0, 0, 251,248,30, 0, 0, 0, 0, 0, 17, 52, 16, 0,
+ 0, 0, 0, 0, 0, 16, 38, 1, 0, 0, 0, 0, 87, 77, 28, 2, 0, 0, 0, 0, 0, 164,14, 0, 0, 0, 0, 0, 72, 0, 28, 0, 0, 0, 0, 0, 84, 160,0, 0,
+ 0, 0, 0, 0, 19, 81, 4, 0, 0, 0, 0, 0, 0, 224,8, 0, 0, 0, 0, 0, 0, 32, 90, 0, 0, 32, 0, 0, 17, 65, 12, 0, 0, 0, 0, 0, 18, 96, 16, 0,
+ 0, 0, 0, 0, 17, 152,0, 0, 0, 32, 4, 0, 153,27, 4, 0, 0, 32, 4, 0, 64, 0, 0, 0, 0, 0, 0, 0, 255,237,92, 3, 0, 0, 0, 0, 36, 44, 30, 0,
+ 0, 0, 0, 0, 144,69, 16, 2, 0, 0, 0, 0, 205,105,110,1, 0, 0, 0, 0, 0, 136,16, 0, 0, 0, 0, 0, 81, 137,58, 2, 0, 0, 0, 0, 20, 104,0, 0,
+ 0, 32, 0, 0, 177,233,28, 1, 0, 96, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 8, 72, 10, 1, 0, 0, 0, 0, 4, 160,128,0, 0, 0, 0, 0, 4, 36, 12, 1,
+ 0, 0, 0, 0, 17, 72, 20, 0, 0, 0, 0, 0, 8, 1, 18, 0, 0, 0, 0, 0, 4, 56, 30, 0, 0, 0, 0, 0, 16, 0, 130,0, 0, 0, 0, 0, 145,197,4, 0,
+ 0, 0, 0, 0, 40, 24, 94, 0, 0, 128,0, 0, 64, 0, 4, 0, 0, 0, 0, 0, 21, 125,30, 0, 0, 0, 0, 0, 20, 49, 8, 0, 0, 0, 0, 0, 213,69, 28, 2,
+ 0, 0, 0, 0, 64, 12, 2, 0, 0, 0, 0, 0, 17, 65, 64, 1, 0, 0, 0, 0, 183,247,30, 3, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 1, 12, 6, 0,
+ 0, 0, 0, 0, 19, 113,68, 0, 0, 0, 0, 0, 50, 9, 8, 1, 0, 0, 0, 0, 36, 1, 2, 0, 0, 0, 0, 0, 25, 1, 16, 2, 0, 96, 0, 0, 131,176,6, 2,
+ 0, 0, 0, 0, 53, 4, 0, 0, 0, 0, 0, 0, 16, 18, 0, 0, 0, 0, 0, 0, 0, 0, 152,0, 0, 8, 0, 0, 157,83, 18, 3, 0, 0, 0, 0, 205,53, 189,3,
+ 0, 0, 0, 0, 145,5, 0, 2, 16, 0, 0, 0, 138,52, 6, 0, 0, 0, 0, 0, 16, 0, 36, 0, 0, 0, 0, 0, 80, 17, 16, 0, 0, 0, 0, 0, 52, 8, 44, 1,
+ 0, 0, 0, 0, 21, 101,28, 0, 16, 0, 0, 0, 0, 0, 14, 0, 0, 32, 0, 0, 1, 0, 132,0, 0, 32, 0, 0, 17, 1, 4, 3, 0, 0, 0, 0, 64, 1, 10, 0,
+ 0, 0, 0, 0, 20, 20, 12, 0, 0, 0, 0, 0, 16, 1, 64, 0, 0, 0, 0, 0, 12, 4, 1, 0, 0, 32, 0, 0, 1, 129,4, 0, 0, 32, 0, 0, 177,101,8, 3,
+ 0, 0, 0, 0, 65, 1, 16, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 92, 0, 12, 0, 0, 96, 0, 0, 243,217,78, 0, 0, 32, 0, 0, 2, 0, 4, 2,
+ 0, 224,4, 0, 0, 0, 4, 0, 0, 104,4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 1, 16, 0, 2, 0, 0, 0, 0, 95, 245,252,1, 0, 0, 0, 0, 0, 72, 38, 0,
+ 0, 32, 0, 0, 8, 48, 6, 0, 0, 0, 0, 0, 1, 60, 12, 0, 0, 0, 0, 0, 1, 1, 28, 0, 0, 0, 0, 0, 149,37, 4, 2, 0, 0, 0, 0, 132,0, 12, 2,
+ 0, 0, 0, 0, 85, 124,12, 0, 0, 0, 0, 0, 156,245,124,1, 0, 0, 0, 0, 0, 5, 4, 2, 0, 0, 0, 0, 0, 45, 14, 2, 0, 0, 0, 0, 104,0, 2, 0,
+ 0, 0, 0, 0, 26, 17, 6, 0, 0, 0, 0, 0, 252,49, 46, 1, 0, 0, 0, 0, 19, 152,4, 0, 0, 0, 0, 0, 72, 4, 0, 0, 0, 8, 0, 0, 144,0, 0, 0,
+ 0, 0, 0, 0, 16, 25, 68, 0, 0, 64, 0, 0, 24, 0, 12, 0, 0, 0, 2, 0, 80, 129,0, 0, 0, 0, 0, 0, 255,253,255,3, 0, 0, 0, 0, 68, 9, 10, 0,
+ 0, 0, 0, 0, 149,69, 16, 2, 0, 0, 0, 0, 128,1, 12, 0, 0, 0, 0, 0, 50, 5, 12, 0, 0, 0, 0, 0, 95, 93, 118,1, 0, 0, 0, 0, 2, 8, 70, 0,
+ 0, 0, 0, 0, 128,156,14, 0, 0, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 17, 5, 14, 2, 0, 0, 0, 0, 65, 65, 18, 0, 0, 0, 0, 0, 8, 32, 6, 2,
+ 0, 0, 0, 0, 1, 106,0, 0, 0, 48, 0, 0, 73, 40, 31, 0, 0, 0, 0, 0, 28, 0, 12, 0, 0, 32, 0, 0, 26, 89, 68, 1, 0, 48, 0, 0, 0, 8, 0, 1,
+ 0, 112,0, 0, 32, 16, 4, 0, 0, 32, 0, 0, 253,111,60, 3, 0, 0, 0, 0, 12, 36, 14, 0, 0, 0, 0, 0, 12, 0, 4, 1, 0, 0, 0, 0, 128,64, 0, 3,
+ 0, 0, 0, 0, 28, 52, 78, 1, 0, 32, 0, 0, 77, 116,45, 2, 0, 0, 0, 0, 145,1, 0, 3, 0, 96, 0, 0, 8, 16, 68, 0, 0, 0, 0, 0, 65, 68, 12, 0,
+ 0, 0, 0, 0, 129,68, 8, 0, 0, 0, 0, 0, 19, 65, 8, 3, 0, 0, 0, 0, 20, 4, 5, 0, 0, 0, 0, 0, 1, 81, 0, 0, 0, 32, 0, 0, 8, 32, 20, 0,
+ 0, 0, 0, 0, 4, 36, 2, 0, 0, 0, 0, 0, 4, 21, 8, 0, 0, 32, 32, 0, 4, 172,108,0, 0, 0, 0, 0, 81, 68, 8, 0, 0, 0, 0, 0, 223,176,60, 0,
+ 0, 0, 0, 0, 129,8, 2, 1, 0, 0, 0, 0, 1, 72, 2, 1, 0, 0, 0, 0, 144,0, 14, 0, 0, 0, 0, 0, 51, 209,6, 1, 0, 0, 0, 0, 8, 9, 2, 0,
+ 0, 0, 0, 0, 4, 1, 8, 2, 0, 128,0, 0, 92, 97, 12, 3, 0, 0, 0, 0, 16, 1, 84, 0, 0, 0, 0, 0, 151,65, 22, 1, 0, 0, 0, 0, 36, 0, 38, 0,
+ 0, 0, 0, 0, 37, 104,16, 0, 0, 0, 0, 0, 0, 97, 2, 0, 0, 0, 8, 0, 3, 0, 8, 0, 0, 0, 0, 64, 174,174,46, 1, 0, 32, 0, 0, 18, 0, 0, 0,
+ 0, 0, 4, 0, 146,17, 4, 0, 0, 32, 0, 0, 184,65, 4, 1, 0, 0, 0, 0, 147,56, 8, 0, 0, 40, 0, 0, 149,223,94, 0, 0, 0, 0, 0, 4, 14, 6, 1,
+ 0, 0, 0, 0, 20, 84, 4, 0, 0, 0, 0, 0, 36, 8, 96, 0, 0, 0, 0, 0, 9, 56, 10, 0, 0, 32, 0, 0, 12, 0, 4, 0, 0, 0, 0, 0, 4, 1, 10, 0,
+ 0, 0, 0, 0, 127,229,63, 2, 0, 0, 0, 0, 24, 152,4, 0, 0, 0, 0, 0, 20, 128,0, 1, 0, 32, 5, 0, 14, 220,4, 0, 0, 96, 4, 0, 64, 16, 4, 0,
+ 0, 96, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 181,253,118,2, 0, 0, 0, 0, 74, 8, 6, 0, 0, 0, 0, 0, 24, 104,22, 0, 0, 0, 0, 0, 161,0, 36, 0,
+ 0, 0, 0, 0, 4, 80, 0, 0, 0, 0, 0, 0, 21, 120,4, 0, 0, 0, 0, 0, 34, 12, 6, 0, 0, 0, 0, 0, 64, 96, 4, 0, 0, 0, 0, 0, 149,173,28, 0,
+ 0, 0, 0, 0, 8, 33, 30, 1, 0, 0, 0, 0, 16, 36, 140,0, 0, 0, 0, 0, 6, 32, 0, 0, 0, 0, 0, 0, 223,249,92, 0, 0, 0, 0, 0, 80, 32, 8, 0,
+ 0, 0, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 160,32, 0, 0, 0, 0, 0, 20, 0, 0, 1, 0, 0, 0, 0, 4, 24, 2, 0, 0, 0, 1, 0, 213,201,62, 0,
+ 0, 0, 0, 0, 6, 176,76, 0, 0, 0, 0, 0, 17, 48, 6, 2, 0, 0, 0, 0, 4, 28, 4, 0, 0, 0, 0, 0, 137,17, 0, 0, 0, 0, 0, 0, 145,77, 4, 1,
+ 0, 0, 0, 0, 10, 33, 2, 0, 0, 32, 0, 0, 0, 1, 4, 1, 0, 0, 0, 0, 76, 189,142,0, 0, 0, 0, 0, 20, 33, 37, 0, 0, 0, 0, 0, 153,57, 70, 1,
+ 0, 32, 0, 0, 48, 8, 4, 1, 0, 112,46, 0, 179,217,30, 0, 0, 0, 0, 0, 4, 72, 16, 0, 0, 0, 0, 0, 8, 32, 12, 1, 0, 0, 0, 0, 24, 32, 12, 0,
+ 0, 0, 0, 0, 17, 97, 4, 2, 0, 16, 0, 0, 0, 192,4, 0, 0, 32, 0, 0, 21, 65, 48, 3, 0, 0, 0, 0, 254,191,252,3, 0, 0, 0, 0, 108,32, 8, 0,
+ 0, 0, 0, 0, 77, 4, 8, 0, 0, 0, 0, 0, 145,68, 12, 0, 0, 0, 0, 0, 149,77, 12, 0, 0, 0, 0, 0, 6, 40, 1, 0, 0, 0, 0, 0, 132,28, 14, 0,
+ 0, 0, 0, 0, 18, 9, 0, 0, 0, 0, 0, 0, 0, 16, 22, 0, 0, 0, 0, 0, 8, 168,4, 0, 0, 0, 0, 0, 1, 224,4, 0, 0, 0, 0, 0, 68, 40, 16, 0,
+ 0, 0, 0, 0, 25, 113,2, 1, 0, 0, 0, 0, 36, 0, 12, 0, 0, 0, 0, 0, 12, 16, 138,0, 0, 0, 0, 0, 17, 16, 6, 0, 0, 0, 0, 0, 16, 113,0, 0,
+ 0, 32, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 21, 65, 0, 1, 0, 0, 0, 0, 8, 0, 138,0, 0, 0, 0, 0, 16, 96, 20, 0, 0, 0, 0, 0, 77, 0, 28, 0,
+ 0, 0, 0, 0, 1, 192,2, 0, 0, 0, 0, 0, 215,237,29, 1, 16, 0, 0, 0, 18, 121,80, 0, 0, 0, 0, 0, 17, 73, 66, 0, 0, 0, 0, 0, 73, 160,0, 0,
+ 0, 0, 0, 0, 0, 144,8, 0, 0, 0, 0, 0, 17, 129,0, 0, 0, 0, 0, 0, 17, 73, 10, 3, 0, 0, 0, 0, 16, 32, 130,0, 0, 32, 0, 0, 66, 16, 0, 0,
+ 0, 0, 0, 0, 95, 126,190,3, 0, 0, 0, 0, 2, 41, 2, 1, 0, 32, 0, 0, 8, 8, 70, 1, 0, 0, 0, 0, 216,17, 16, 0, 0, 32, 0, 0, 9, 16, 4, 0,
+ 0, 0, 0, 0, 106,16, 94, 0, 0, 0, 0, 0, 144,8, 4, 0, 0, 0, 0, 0, 17, 209,18, 0, 0, 0, 0, 0, 4, 8, 174,0, 0, 32, 0, 0, 9, 1, 46, 0,
+ 0, 32, 0, 0, 64, 0, 6, 2, 0, 0, 0, 0, 8, 2, 4, 1, 0, 0, 0, 0, 92, 36, 12, 2, 0, 96, 2, 0, 8, 136,44, 0, 0, 0, 0, 0, 17, 81, 20, 3,
+ 0, 0, 0, 0, 134,84, 12, 0, 0, 0, 0, 0, 133,0, 8, 2, 0, 32, 2, 0, 16, 8, 4, 0, 0, 0, 0, 0, 40, 0, 4, 0, 0, 32, 0, 0, 255,255,255,3,
+ 16, 0, 0, 0, 17, 73, 20, 1, 0, 0, 0, 0, 72, 0, 6, 0, 0, 0, 0, 0, 145,77, 30, 1, 0, 0, 0, 0, 0, 4, 4, 2, 0, 0, 0, 0, 9, 65, 18, 0,
+ 0, 0, 0, 0, 20, 1, 8, 0, 0, 4, 0, 0, 49, 65, 16, 0, 0, 0, 0, 0, 145,104,2, 0, 0, 0, 0, 0, 0, 104,32, 0, 0, 0, 0, 0, 16, 193,20, 0,
+ 0, 32, 0, 0, 0, 160,12, 2, 0, 8, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 88, 69, 24, 0, 0, 32, 0, 0, 0, 16, 56, 0, 0, 0, 0, 0, 145,192,22, 1,
+ 0, 0, 0, 0, 40, 32, 22, 0, 0, 0, 0, 0, 21, 197,12, 2, 0, 0, 0, 0, 12, 160,0, 0, 0, 0, 0, 0, 145,65, 14, 2, 0, 0, 0, 0, 69, 65, 22, 0,
+ 0, 0, 0, 0, 4, 96, 28, 2, 0, 0, 0, 0, 24, 8, 12, 0, 0, 0, 0, 0, 176,8, 0, 0, 0, 0, 0, 0, 2, 32, 4, 2, 0, 0, 0, 0, 5, 0, 8, 2,
+ 0, 0, 0, 0, 84, 64, 4, 0, 0, 0, 0, 0, 4, 12, 70, 0, 0, 0, 0, 0, 124,53, 14, 3, 0, 0, 0, 0, 152,64, 0, 1, 0, 0, 0, 0, 17, 1, 24, 0,
+ 0, 0, 0, 0, 9, 8, 6, 0, 0, 0, 0, 0, 145,5, 12, 2, 0, 0, 0, 0, 30, 97, 4, 2, 0, 0, 0, 0, 8, 180,64, 0, 0, 232,31, 0, 17, 101,92, 3,
+ 0, 85, 2, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 145,0, 0, 0, 0, 0, 0, 0, 17, 2, 0, 0, 0, 0, 0,
+ 0, 64, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 84, 176,14, 0, 0, 0, 0, 0, 4, 200,8, 0, 0, 0, 0, 0, 1, 1, 76, 0, 0, 0, 0, 0, 12, 8, 0, 0,
+ 0, 16, 0, 0, 16, 97, 0, 0, 0, 32, 8, 0, 75, 152,12, 0, 0, 0, 0, 0, 179,69, 20, 1, 0, 0, 0, 0, 132,4, 6, 0, 0, 0, 0, 0, 255,255,30, 3,
+ 0, 32, 0, 0, 16, 25, 4, 0, 0, 0, 0, 0, 4, 0, 149,0, 0, 8, 0, 0, 1, 73, 4, 0, 0, 0, 0, 0, 88, 72, 20, 0, 0, 0, 0, 0, 138,40, 14, 1,
+ 0, 0, 0, 0, 26, 1, 4, 1, 0, 0, 0, 0, 153,25, 68, 0, 0, 0, 0, 0, 245,221,109,0, 0, 0, 0, 0, 0, 48, 84, 0, 0, 0, 0, 0, 0, 65, 10, 0,
+ 0, 0, 0, 0, 13, 0, 12, 2, 0, 0, 0, 0, 19, 81, 20, 1, 0, 0, 0, 0, 8, 48, 2, 1, 0, 0, 0, 0, 16, 64, 20, 2, 0, 0, 0, 0, 3, 149,0, 0,
+ 0, 0, 0, 0, 221,103,140,3, 0, 0, 0, 0, 18, 9, 0, 1, 0, 0, 0, 0, 1, 1, 12, 0, 0, 0, 0, 0, 132,0, 12, 0, 0, 0, 0, 0, 17, 1, 6, 1,
+ 0, 16, 0, 0, 17, 73, 4, 0, 0, 0, 0, 0, 33, 197,20, 0, 0, 160,0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 127,237,126,3, 0, 0, 0, 0, 114,136,6, 0,
+ 0, 240,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 9, 80, 0, 0, 0, 0, 0, 149,69, 12, 3, 0, 0, 0, 0, 21, 213,2, 1, 0, 224,47, 0, 118,28, 4, 1,
+ 16, 0, 0, 0, 149,113,30, 2, 0, 0, 0, 0, 0, 57, 14, 0, 0, 0, 0, 0, 136,2, 0, 0, 0, 0, 0, 0, 0, 40, 128,0, 0, 0, 0, 0, 119,238,94, 0,
+ 0, 0, 0, 0, 1, 64, 10, 0, 0, 0, 16, 0, 16, 0, 2, 0, 0, 0, 0, 0, 17, 64, 32, 0, 0, 0, 0, 0, 89, 81, 18, 2, 0, 32, 8, 0, 17, 0, 4, 0,
+ 0, 0, 0, 0, 8, 16, 8, 0, 0, 0, 0, 0, 4, 184,140,0, 0, 0, 0, 0, 144,12, 0, 0, 0, 224,59, 0, 255,241,119,2, 0, 96, 0, 0, 1, 0, 65, 0,
+ 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 64, 4, 0, 0, 0, 64, 0, 0, 0, 0, 0, 218,187,94, 3, 16, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0, 18, 1, 70, 0, 0, 224,8, 0, 16, 193,229,2, 0, 64, 0, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, 65, 0, 0, 32, 0, 0, 20, 0, 0, 0,
+ 0, 0, 0, 0, 33, 16, 128,0, 0, 0, 0, 0, 0, 0, 68, 2, 0, 0, 0, 0, 99, 108,0, 2, 0, 0, 0, 0, 16, 130,0, 0, 0, 0, 0, 0, 33, 0, 64, 0,
+ 0, 32, 0, 0, 129,0, 65, 0, 0, 32, 8, 0, 1, 0, 65, 0, 0, 32, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 29, 0, 0, 0, 16, 0, 0, 0, 31, 121,14, 1,
+ 0, 0, 0, 0, 221,189,46, 1, 0, 224,0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 148,25, 0, 0, 0, 0, 0, 0, 77, 32, 12, 2, 0, 0, 1, 0, 17, 1, 18, 0,
+ 0, 0, 0, 0, 36, 0, 8, 2, 0, 0, 0, 0, 17, 44, 10, 0, 0, 0, 0, 0, 58, 25, 4, 0, 0, 0, 0, 0, 137,1, 8, 0, 0, 0, 0, 0, 16, 0, 26, 0,
+ 0, 0, 4, 0, 4, 32, 0, 0, 0, 0, 0, 0, 31, 187,62, 2, 0, 0, 0, 0, 32, 40, 3, 0, 0, 32, 0, 0, 19, 1, 4, 1, 0, 32, 0, 0, 38, 8, 74, 0,
+ 0, 0, 0, 0, 4, 32, 8, 3, 0, 0, 0, 0, 20, 65, 10, 1, 0, 32, 0, 0, 0, 73, 4, 0, 0, 0, 0, 0, 223,190,175,2, 0, 32, 0, 0, 16, 41, 12, 1,
+ 0, 32, 0, 0, 16, 28, 24, 0, 0, 0, 0, 0, 17, 89, 8, 0, 0, 0, 0, 0, 31, 109,8, 2, 0, 0, 0, 0, 144,1, 16, 1, 0, 0, 0, 0, 73, 64, 16, 0,
+ 0, 0, 0, 0, 64, 0, 4, 2, 0, 0, 0, 0, 16, 136,8, 0, 0, 0, 0, 0, 16, 80, 28, 0, 0, 0, 0, 0, 64, 0, 1, 0, 0, 0, 0, 0, 12, 33, 46, 0,
+ 16, 0, 0, 0, 17, 1, 0, 0, 0, 160,0, 0, 17, 0, 5, 0, 0, 128,0, 0, 16, 0, 1, 0, 0, 32, 0, 0, 16, 0, 1, 0, 0, 160,9, 0, 25, 128,7, 2,
+ 0, 128,1, 0, 1, 0, 3, 0, 0, 32, 0, 0, 0, 0, 1, 2, 0, 32, 1, 0, 33, 0, 8, 2, 0, 32, 3, 0, 65, 0, 8, 3, 0, 240,63, 0, 1, 0, 16, 3,
+ 0, 32, 16, 0, 0, 1, 0, 0, 0, 228,9, 0, 191,255,254,3, 0, 0, 0, 0, 177,7, 12, 0, 0, 80, 0, 0, 4, 0, 0, 0, 0, 0, 32, 0, 8, 0, 0, 0,
+ 0, 0, 0, 0, 106,146,12, 0, 0, 0, 0, 0, 19, 103,22, 1, 0, 0, 0, 0, 200,40, 30, 0, 0, 32, 4, 0, 0, 64, 12, 0, 0, 0, 0, 0, 132,40, 2, 1,
+ 0, 0, 0, 0, 25, 40, 8, 0, 0, 0, 0, 0, 2, 41, 10, 0, 0, 0, 0, 0, 149,69, 1, 3, 0, 0, 0, 0, 172,16, 78, 1, 0, 96, 0, 0, 0, 0, 132,0,
+ 0, 0, 0, 0, 17, 25, 0, 0, 0, 48, 12, 0, 16, 8, 4, 0, 0, 0, 0, 0, 7, 104,12, 0, 0, 0, 0, 0, 191,125,124,3, 0, 0, 0, 0, 66, 20, 10, 0,
+ 0, 0, 0, 0, 6, 126,10, 0, 0, 0, 0, 0, 85, 105,156,0, 0, 0, 32, 0, 0, 8, 4, 0, 0, 0, 0, 0, 145,4, 4, 0, 0, 32, 0, 0, 245,185,12, 0,
+ 0, 0, 0, 0, 128,64, 12, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 171,28, 12, 0, 0, 0, 0, 0, 49, 9, 28, 0, 0, 0, 0, 0, 144,41, 0, 0,
+ 0, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 0, 217,121,92, 0, 0, 0, 0, 0, 0, 49, 6, 2, 0, 0, 0, 0, 129,64, 32, 0, 0, 0, 0, 0, 17, 121,82, 0,
+ 0, 0, 0, 0, 0, 25, 12, 0, 0, 0, 0, 0, 16, 34, 4, 0, 0, 0, 0, 0, 111,252,14, 0, 0, 0, 0, 0, 151,25, 78, 0, 0, 0, 0, 0, 255,113,108,1,
+ 0, 96, 12, 0, 0, 0, 4, 0, 0, 0, 0, 0, 23, 73, 12, 0, 0, 0, 0, 0, 25, 229,92, 1, 0, 0, 0, 0, 194,170,14, 0, 0, 0, 0, 0, 16, 32, 68, 0,
+ 0, 0, 0, 0, 51, 204,12, 0, 0, 96, 0, 0, 127,255,30, 3, 0, 0, 0, 0, 204,173,30, 3, 0, 96, 0, 0, 0, 32, 20, 0, 0, 0, 0, 0, 65, 0, 2, 0,
+ 0, 0, 0, 0, 1, 40, 14, 3, 0, 0, 0, 0, 129,0, 68, 0, 0, 0, 0, 0, 48, 40, 6, 0, 0, 0, 0, 0, 72, 0, 18, 0, 0, 0, 0, 0, 72, 40, 2, 0,
+ 0, 0, 0, 0, 251,65, 24, 1, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 255,119,124,0, 0, 0, 0, 0, 216,8, 50, 0, 0, 0, 0, 0, 209,77, 78, 3,
+ 0, 0, 0, 0, 128,8, 0, 2, 0, 0, 0, 0, 32, 136,0, 0, 0, 32, 0, 0, 0, 41, 0, 0, 0, 96, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 17, 225,0, 0,
+ 0, 240,62, 0, 0, 64, 4, 0, 0, 96, 32, 0, 32, 0, 0, 0, 0, 0, 0, 0, 25, 8, 8, 0, 0, 0, 0, 0, 43, 73, 0, 0, 0, 0, 0, 0, 145,205,28, 0,
+ 0, 0, 0, 0, 4, 184,0, 0, 0, 32, 0, 0, 17, 73, 4, 0, 0, 0, 0, 0, 0, 160,4, 2, 0, 0, 0, 0, 25, 65, 0, 1, 0, 0, 0, 0, 32, 8, 6, 1,
+ 0, 0, 0, 0, 159,253,28, 0, 0, 0, 0, 0, 129,64, 0, 2, 0, 0, 0, 0, 25, 89, 24, 0, 0, 0, 0, 0, 3, 64, 16, 1, 0, 0, 0, 0, 16, 17, 32, 0,
+ 0, 96, 4, 0, 32, 16, 12, 0, 0, 0, 0, 0, 191,253,30, 2, 0, 0, 0, 0, 4, 34, 10, 0, 0, 0, 0, 0, 8, 136,6, 0, 0, 0, 0, 0, 123,86, 2, 0,
+ 0, 0, 0, 0, 96, 96, 28, 0, 0, 0, 0, 0, 40, 0, 0, 1, 0, 0, 0, 0, 64, 144,0, 0, 0, 0, 0, 0, 4, 128,0, 1, 0, 0, 0, 0, 254,184,12, 2,
+ 0, 160,4, 0, 148,104,68, 0, 0, 32, 0, 0, 6, 0, 64, 0, 0, 0, 0, 0, 20, 100,12, 2, 0, 0, 0, 0, 153,13, 14, 0, 0, 32, 0, 0, 255,120,12, 1,
+ 0, 0, 0, 0, 64, 56, 4, 0, 0, 0, 0, 0, 89, 65, 32, 2, 0, 0, 0, 0, 0, 36, 32, 0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 64, 0, 0, 196,1, 0, 0,
+ 0, 4, 0, 0, 37, 24, 8, 0, 0, 0, 0, 0, 0, 1, 32, 1, 0, 0, 0, 0, 98, 32, 1, 0, 0, 0, 0, 0, 110,249,126,3, 0, 0, 0, 0, 128,0, 9, 0,
+ 0, 8, 0, 0, 25, 115,20, 1, 0, 40, 0, 0, 16, 0, 4, 0, 0, 96, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 145,73, 0, 0, 0, 0, 0, 0, 218,57, 12, 1,
+ 0, 0, 0, 0, 64, 0, 12, 2, 0, 0, 0, 0, 88, 17, 102,1, 0, 0, 0, 0, 144,97, 4, 0, 0, 0, 0, 0, 0, 17, 136,0, 0, 0, 0, 0, 147,81, 18, 0,
+ 0, 0, 0, 0, 4, 45, 2, 0, 0, 96, 0, 0, 24, 72, 4, 2, 0, 0, 0, 0, 0, 104,18, 0, 0, 0, 0, 0, 36, 13, 14, 0, 0, 0, 0, 0, 149,109,30, 3,
+ 0, 0, 0, 0, 0, 168,6, 0, 0, 0, 0, 0, 8, 165,4, 0, 0, 0, 0, 0, 17, 5, 10, 0, 0, 0, 0, 0, 56, 224,10, 0, 0, 0, 0, 0, 66, 185,50, 0,
+ 0, 0, 0, 0, 2, 144,0, 0, 0, 32, 8, 0, 44, 32, 37, 0, 0, 0, 0, 0, 0, 144,14, 0, 0, 240,39, 0, 255,253,126,0, 0, 0, 0, 0, 17, 65, 66, 1,
+ 0, 0, 0, 0, 1, 44, 34, 0, 0, 0, 0, 0, 68, 0, 16, 0, 0, 0, 0, 0, 60, 188,38, 1, 0, 0, 0, 0, 2, 1, 0, 2, 0, 0, 0, 0, 16, 0, 38, 0,
+ 0, 0, 0, 0, 64, 1, 72, 0, 0, 0, 0, 0, 0, 64, 26, 0, 0, 0, 0, 0, 109,36, 6, 0, 0, 0, 0, 0, 132,4, 8, 0, 0, 0, 0, 0, 68, 96, 0, 0,
+ 0, 0, 0, 0, 1, 33, 144,0, 0, 0, 0, 0, 12, 0, 32, 0, 0, 0, 0, 0, 6, 0, 36, 0, 0, 0, 0, 0, 145,68, 8, 0, 0, 0, 0, 0, 4, 160,132,0,
+ 0, 0, 0, 0, 238,188,172,0, 0, 0, 0, 0, 144,0, 20, 1, 0, 32, 0, 0, 0, 16, 6, 0, 0, 0, 0, 0, 49, 73, 22, 0, 0, 0, 0, 0, 80, 32, 14, 0,
+ 0, 0, 0, 0, 81, 105,26, 0, 0, 0, 0, 0, 0, 41, 14, 2, 0, 32, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 136,40, 6, 0, 0, 0, 0, 0, 21, 1, 12, 0,
+ 0, 0, 0, 0, 21, 112,20, 0, 0, 0, 0, 0, 16, 24, 6, 0, 0, 0, 0, 0, 59, 127,22, 1, 0, 0, 0, 0, 66, 36, 6, 0, 0, 0, 0, 0, 18, 0, 3, 0,
+ 0, 0, 0, 0, 2, 0, 34, 0, 0, 0, 0, 0, 255,124,44, 0, 0, 0, 0, 0, 145,88, 4, 0, 0, 0, 0, 0, 98, 20, 72, 0, 0, 0, 0, 0, 48, 24, 4, 0,
+ 0, 0, 0, 0, 145,40, 4, 0, 0, 0, 0, 0, 19, 112,20, 0, 0, 0, 0, 0, 255,85, 108,0, 0, 0, 0, 0, 4, 52, 6, 0, 0, 0, 0, 0, 84, 32, 8, 0,
+ 0, 0, 0, 0, 36, 16, 56, 0, 0, 0, 0, 0, 156,57, 76, 2, 0, 0, 0, 0, 145,24, 12, 2, 0, 0, 0, 0, 147,89, 20, 0, 0, 0, 0, 0, 49, 205,16, 1,
+ 0, 0, 0, 0, 36, 129,152,1, 0, 0, 0, 0, 97, 32, 32, 0, 0, 0, 0, 0, 245,32, 37, 0, 0, 0, 0, 0, 40, 32, 36, 0, 0, 0, 0, 0, 51, 253,20, 1,
+ 0, 0, 0, 0, 72, 173,14, 0, 0, 0, 0, 0, 10, 56, 2, 1, 0, 0, 0, 0, 69, 40, 140,0, 0, 0, 0, 0, 8, 32, 62, 0, 0, 0, 0, 0, 127,117,127,3,
+ 0, 0, 0, 0, 16, 61, 26, 1, 0, 0, 0, 0, 81, 8, 74, 0, 0, 0, 0, 0, 0, 28, 14, 1, 0, 0, 0, 0, 20, 32, 128,0, 0, 0, 0, 0, 2, 25, 118,0,
+ 0, 0, 0, 0, 150,1, 4, 0, 0, 0, 0, 0, 49, 65, 4, 2, 0, 0, 0, 0, 1, 52, 0, 0, 0, 0, 0, 0, 4, 184,6, 0, 0, 4, 0, 0, 145,221,62, 1,
+ 0, 0, 0, 0, 4, 1, 46, 1, 0, 0, 0, 0, 5, 40, 10, 0, 0, 0, 0, 0, 9, 16, 4, 0, 0, 0, 0, 0, 32, 144,6, 0, 0, 0, 0, 0, 16, 48, 4, 0,
+ 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 74, 8, 10, 0, 0, 0, 0, 0, 48, 70, 16, 0, 0, 0, 0, 0, 141,9, 0, 0, 0, 0, 0, 0, 149,233,60, 0,
+ 0, 0, 0, 0, 13, 61, 10, 0, 0, 0, 0, 0, 48, 17, 4, 0, 0, 32, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 72, 168,12, 0, 0, 0, 0, 0, 0, 40, 22, 0,
+ 0, 0, 0, 0, 8, 0, 48, 0, 0, 0, 0, 0, 4, 4, 6, 0, 0, 0, 0, 0, 49, 1, 4, 0, 0, 0, 0, 0, 68, 0, 10, 0, 0, 0, 0, 0, 49, 73, 22, 1,
+ 0, 0, 0, 0, 96, 32, 40, 0, 0, 0, 0, 0, 18, 152,6, 0, 0, 0, 0, 0, 112,0, 2, 0, 0, 0, 0, 0, 189,109,30, 3, 0, 0, 0, 0, 0, 61, 2, 0,
+ 0, 0, 0, 0, 0, 172,6, 0, 0, 0, 0, 0, 20, 32, 10, 0, 0, 0, 0, 0, 65, 65, 16, 0, 0, 0, 0, 0, 2, 137,0, 0, 0, 0, 0, 0, 24, 16, 4, 0,
+ 0, 0, 0, 0, 19, 0, 32, 0, 0, 0, 0, 0, 97, 0, 36, 0, 0, 0, 0, 0, 154,168,44, 0, 0, 0, 0, 0, 144,9, 8, 2, 0, 64, 0, 0, 25, 73, 52, 0,
+ 0, 0, 0, 0, 0, 28, 10, 1, 0, 0, 0, 0, 1, 41, 14, 0, 0, 0, 0, 0, 65, 0, 24, 0, 0, 0, 0, 0, 19, 81, 12, 0, 0, 0, 0, 0, 16, 8, 46, 0,
+ 0, 0, 4, 0, 16, 129,4, 0, 0, 0, 1, 0, 0, 1, 4, 0, 0, 0, 0, 0, 4, 13, 2, 0, 0, 0, 0, 0, 0, 64, 56, 0, 0, 0, 0, 0, 41, 64, 194,1,
+ 0, 0, 4, 0, 18, 116,4, 0, 0, 0, 0, 0, 0, 8, 6, 2, 0, 0, 0, 0, 64, 8, 18, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 4, 0, 196,167,34, 1,
+ 0, 0, 0, 0, 50, 46, 32, 0, 0, 0, 0, 0, 76, 32, 50, 1, 0, 4, 0, 0, 160,16, 8, 2, 0, 0, 0, 0, 196,0, 0, 0, 0, 0, 0, 0, 32, 18, 0, 0,
+ 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 34, 0, 136,0, 0, 0, 0, 0, 64, 4, 2, 0, 0, 0, 0, 0, 32, 20, 0, 0, 0, 0, 0, 0, 179,67, 24, 1,
+ 0, 0, 0, 0, 148,144,8, 0, 0, 0, 0, 0, 27, 113,92, 3, 0, 0, 0, 0, 208,25, 4, 0, 0, 0, 0, 0, 34, 2, 0, 1, 0, 0, 0, 0, 1, 48, 0, 2,
+ 0, 0, 0, 0, 130,8, 6, 0, 0, 32, 0, 0, 4, 128,4, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 25, 48, 14, 0, 0, 0, 0, 0, 25, 65, 18, 1,
+ 0, 0, 0, 0, 26, 24, 4, 0, 0, 0, 0, 0, 24, 0, 0, 1, 0, 0, 0, 0, 1, 120,12, 0, 0, 0, 0, 0, 255,255,189,3, 0, 0, 0, 0, 9, 42, 28, 2,
+ 0, 0, 0, 0, 4, 104,22, 0, 0, 0, 0, 0, 0, 1, 6, 1, 0, 0, 0, 0, 9, 64, 0, 1, 0, 0, 0, 0, 32, 32, 12, 2, 0, 0, 0, 0, 181,77, 16, 0,
+ 0, 0, 0, 0, 1, 64, 24, 0, 0, 0, 16, 0, 0, 48, 0, 0, 0, 32, 0, 0, 55, 121,74, 1, 0, 32, 0, 0, 8, 0, 12, 0, 0, 240,59, 0, 4, 64, 44, 0,
+ 0, 0, 0, 0, 0, 56, 6, 1, 0, 0, 0, 0, 16, 32, 20, 0, 0, 32, 4, 0, 49, 121,4, 1, 0, 0, 0, 0, 4, 4, 16, 0, 0, 0, 0, 0, 32, 0, 4, 1,
+ 0, 0, 0, 0, 132,0, 10, 0, 0, 0, 0, 0, 89, 233,0, 0, 0, 0, 0, 0, 1, 248,6, 0, 0, 0, 0, 0, 16, 41, 64, 0, 0, 0, 0, 0, 42, 8, 68, 0,
+ 0, 0, 0, 0, 238,188,190,0, 0, 0, 0, 0, 16, 25, 0, 1, 0, 0, 0, 0, 8, 0, 12, 2, 0, 0, 0, 0, 80, 45, 12, 2, 0, 0, 0, 0, 136,1, 36, 2,
+ 0, 0, 0, 0, 49, 12, 10, 0, 0, 0, 0, 0, 16, 73, 6, 0, 0, 0, 0, 0, 219,105,36, 0, 0, 0, 0, 0, 0, 40, 28, 2, 0, 32, 1, 0, 176,121,4, 1,
+ 0, 0, 0, 0, 2, 40, 26, 0, 0, 0, 0, 0, 192,160,4, 0, 0, 0, 0, 0, 16, 100,0, 0, 0, 0, 0, 0, 17, 13, 0, 1, 0, 0, 0, 0, 51, 223,20, 0,
+ 0, 0, 0, 0, 125,229,12, 2, 0, 0, 0, 0, 113,72, 12, 0, 0, 0, 0, 0, 146,8, 6, 1, 0, 0, 0, 0, 218,89, 95, 0, 0, 0, 0, 0, 1, 1, 2, 1,
+ 0, 0, 0, 0, 98, 170,30, 2, 0, 0, 0, 0, 21, 204,12, 0, 0, 0, 0, 0, 24, 104,10, 1, 0, 0, 0, 0, 159,237,13, 0, 0, 0, 0, 0, 8, 32, 70, 0,
+ 0, 0, 0, 0, 21, 80, 30, 2, 0, 32, 0, 0, 4, 8, 2, 0, 0, 0, 0, 0, 144,77, 0, 0, 0, 0, 0, 0, 17, 109,16, 0, 0, 0, 0, 0, 24, 9, 6, 0,
+ 0, 0, 0, 0, 11, 0, 0, 0, 0, 32, 0, 0, 171,217,110,0, 0, 0, 0, 0, 17, 68, 96, 2, 0, 0, 0, 0, 140,165,114,1, 0, 0, 0, 0, 8, 4, 0, 1,
+ 0, 0, 0, 0, 5, 34, 0, 0, 0, 0, 0, 0, 50, 0, 8, 0, 0, 0, 0, 0, 40, 0, 0, 2, 0, 0, 0, 0, 33, 129,2, 0, 0, 0, 0, 0, 1, 8, 32, 2,
+ 0, 0, 0, 0, 44, 120,14, 0, 0, 0, 0, 0, 159,29, 78, 1, 0, 0, 0, 0, 16, 5, 140,1, 0, 32, 0, 0, 19, 105,30, 1, 0, 0, 0, 0, 4, 37, 14, 1,
+ 0, 0, 0, 0, 0, 1, 12, 1, 0, 0, 0, 0, 12, 40, 6, 3, 0, 0, 0, 0, 72, 1, 14, 0, 0, 240,63, 0, 17, 65, 6, 0, 0, 0, 0, 0, 28, 40, 14, 0,
+ 0, 96, 0, 0, 147,0, 4, 2, 0, 0, 0, 0, 24, 0, 12, 3, 0, 32, 0, 0, 144,97, 4, 0, 0, 0, 0, 0, 1, 104,16, 0, 0, 0, 0, 0, 149,77, 7, 0,
+ 0, 0, 0, 0, 185,77, 16, 0, 0, 64, 0, 0, 0, 16, 10, 0, 0, 0, 0, 0, 36, 40, 6, 2, 16, 104,4, 0, 191,249,102,3, 0, 0, 0, 0, 34, 40, 64, 0,
+ 0, 0, 0, 0, 40, 40, 10, 1, 0, 112,28, 0, 24, 16, 14, 0, 0, 32, 0, 0, 0, 32, 32, 0, 0, 224,7, 0, 10, 16, 12, 1, 0, 0, 0, 0, 219,117,102,1,
+ 0, 0, 0, 0, 2, 60, 6, 0, 0, 0, 0, 0, 179,121,70, 2, 0, 0, 0, 0, 2, 1, 8, 0, 0, 0, 0, 0, 71, 120,5, 0, 0, 0, 0, 0, 68, 0, 17, 0,
+ 0, 0, 0, 0, 0, 0, 20, 2, 0, 0, 0, 0, 16, 1, 4, 2, 0, 0, 0, 0, 238,188,110,0, 0, 0, 0, 0, 1, 24, 2, 0, 0, 0, 0, 0, 20, 45, 4, 0,
+ 0, 0, 0, 0, 32, 12, 0, 0, 0, 0, 0, 0, 209,97, 22, 0, 0, 0, 0, 0, 17, 40, 4, 0, 0, 0, 0, 0, 32, 8, 68, 0, 0, 0, 0, 0, 25, 121,78, 1,
+ 0, 0, 0, 0, 49, 81, 0, 0, 0, 0, 0, 0, 72, 4, 12, 0, 0, 0, 0, 0, 57, 201,12, 1, 0, 0, 0, 0, 0, 164,132,1, 0, 0, 0, 0, 179,81, 14, 1,
+ 0, 0, 0, 0, 40, 33, 6, 1, 0, 32, 0, 0, 70, 0, 4, 0, 0, 0, 0, 0, 4, 0, 112,0, 0, 0, 0, 0, 40, 32, 4, 0, 0, 0, 0, 0, 51, 247,22, 1,
+ 0, 96, 0, 0, 68, 33, 70, 1, 0, 144,6, 0, 0, 0, 0, 0, 0, 96, 8, 0, 29, 97, 28, 1, 0, 0, 0, 0, 21, 36, 4, 2, 0, 0, 0, 0, 0, 105,6, 1,
+ 0, 0, 0, 0, 80, 40, 10, 0, 0, 0, 0, 0, 48, 1, 2, 0, 0, 32, 0, 0, 253,103,13, 3, 0, 0, 0, 0, 16, 0, 14, 1, 0, 0, 0, 0, 49, 1, 0, 1,
+ 0, 0, 0, 0, 40, 180,14, 0, 0, 0, 0, 0, 16, 41, 28, 1, 0, 0, 0, 0, 17, 1, 68, 0, 0, 32, 0, 0, 48, 17, 4, 1, 0, 32, 0, 0, 146,5, 4, 0,
+ 0, 0, 0, 0, 17, 133,4, 0, 0, 0, 0, 0, 8, 0, 70, 0, 0, 0, 0, 0, 17, 69, 14, 1, 0, 0, 0, 0, 151,125,92, 3, 0, 0, 0, 0, 12, 56, 62, 2,
+ 0, 0, 0, 0, 18, 1, 32, 1, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 129,65, 18, 0, 0, 32, 0, 0, 16, 16, 66, 0, 0, 32, 0, 0, 143,60, 126,1,
+ 0, 32, 8, 0, 8, 0, 4, 0, 0, 0, 0, 0, 255,76, 79, 2, 0, 0, 0, 0, 21, 104,8, 0, 0, 32, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 31, 121,48, 1,
+ 0, 0, 1, 0, 81, 33, 8, 1, 0, 0, 0, 0, 8, 48, 1, 0, 0, 0, 0, 0, 149,117,30, 2, 0, 0, 0, 0, 0, 32, 170,0, 0, 0, 0, 0, 247,92, 70, 0,
+ 0, 0, 0, 0, 128,16, 0, 1, 0, 0, 0, 0, 16, 113,64, 1, 0, 0, 0, 0, 254,185,238,3, 0, 0, 0, 0, 17, 41, 14, 0, 0, 0, 0, 0, 144,0, 4, 1,
+ 0, 0, 0, 0, 8, 4, 12, 0, 0, 0, 0, 0, 148,1, 28, 0, 0, 0, 0, 0, 144,73, 12, 2, 0, 0, 4, 0, 8, 16, 6, 0, 0, 0, 0, 0, 159,121,14, 2,
+ 0, 0, 0, 0, 19, 1, 0, 1, 0, 32, 0, 0, 95, 14, 12, 0, 0, 32, 0, 0, 16, 9, 12, 0, 0, 0, 0, 0, 81, 113,4, 3, 0, 0, 0, 0, 2, 60, 0, 0,
+ 0, 64, 0, 0, 185,144,41, 0, 0, 128,4, 0, 210,64, 0, 1, 0, 0, 1, 0, 16, 0, 0, 0, 0, 0, 1, 0, 255,255,254,3, 0, 0, 0, 0, 14, 33, 2, 0,
+ 0, 0, 0, 0, 19, 105,22, 1, 0, 32, 0, 0, 8, 1, 4, 1, 0, 0, 0, 0, 4, 104,6, 0, 0, 32, 0, 0, 41, 0, 4, 2, 0, 0, 0, 0, 29, 100,4, 0,
+ 0, 0, 0, 0, 132,5, 0, 0, 0, 0, 0, 0, 24, 25, 20, 1, 0, 0, 0, 0, 219,125,6, 3, 0, 0, 0, 0, 6, 32, 14, 0, 0, 0, 0, 0, 16, 73, 16, 1,
+ 0, 0, 0, 0, 26, 40, 6, 0, 0, 0, 0, 0, 84, 112,4, 0, 0, 0, 0, 0, 238,8, 12, 2, 0, 0, 0, 0, 68, 1, 12, 0, 0, 0, 0, 0, 53, 65, 16, 0,
+ 0, 0, 0, 0, 21, 105,18, 0, 0, 0, 0, 0, 64, 65, 4, 0, 0, 0, 0, 0, 211,64, 6, 0, 0, 96, 48, 0, 0, 16, 0, 0, 0, 0, 0, 0, 16, 120,14, 0,
+ 0, 0, 0, 0, 4, 42, 44, 2, 0, 0, 0, 0, 129,48, 0, 0, 0, 128,0, 0, 17, 105,0, 2, 0, 0, 0, 0, 10, 16, 6, 3, 0, 32, 0, 0, 16, 0, 0, 1,
+ 0, 0, 0, 0, 51, 249,6, 1, 0, 0, 0, 0, 0, 40, 130,0, 0, 0, 0, 0, 180,72, 20, 0, 0, 0, 0, 0, 52, 64, 0, 0, 0, 0, 1, 0, 125,101,111,3,
+ 0, 0, 0, 0, 2, 0, 66, 0, 0, 0, 0, 0, 113,88, 5, 0, 0, 0, 0, 0, 164,128,8, 2, 0, 0, 0, 0, 17, 173,10, 0, 0, 0, 0, 0, 1, 65, 16, 1,
+ 0, 0, 0, 0, 151,173,30, 3, 0, 0, 0, 0, 0, 12, 64, 0, 0, 0, 0, 0, 0, 44, 34, 0, 0, 64, 0, 0, 185,25, 104,0, 0, 32, 0, 0, 17, 121,80, 0,
+ 0, 0, 0, 0, 0, 12, 14, 1, 0, 96, 8, 0, 0, 64, 36, 0, 0, 0, 0, 0, 33, 32, 0, 0, 0, 0, 12, 0, 0, 0, 4, 0, 0, 0, 0, 0, 10, 49, 0, 0,
+ 0, 96, 2, 0, 10, 0, 68, 0, 0, 0, 0, 0, 209,29, 12, 2, 0, 0, 0, 0, 6, 32, 2, 0, 0, 0, 0, 0, 17, 25, 36, 0, 0, 0, 0, 0, 145,17, 0, 1,
+ 0, 0, 0, 0, 18, 8, 12, 2, 0, 0, 0, 0, 2, 65, 0, 3, 0, 0, 0, 0, 223,254,28, 2, 16, 0, 0, 0, 0, 40, 0, 2, 0, 112,0, 0, 1, 32, 12, 0,
+ 0, 0, 0, 0, 21, 101,16, 0, 0, 0, 0, 0, 4, 34, 0, 0, 0, 0, 0, 0, 144,4, 2, 0, 0, 0, 0, 0, 19, 81, 0, 2, 0, 0, 0, 0, 11, 32, 2, 0,
+ 0, 0, 0, 0, 24, 100,0, 0, 0, 0, 0, 0, 17, 8, 0, 2, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 32, 0, 145,0, 16, 0, 16, 124,47, 0, 255,255,255,3,
+ 0, 0, 0, 0, 5, 209,0, 0, 0, 0, 0, 0, 197,202,4, 0, 0, 96, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 106,60, 46, 0, 0, 0, 32, 0, 1, 0, 0, 0,
+ 0, 144,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204,46, 14, 0, 0, 0, 0, 0, 192,0, 8, 0, 0, 0, 0, 0, 9, 41, 10, 0, 0, 32, 0, 0, 132,1, 4, 0,
+ 0, 0, 0, 0, 1, 96, 6, 0, 0, 0, 0, 0, 141,68, 14, 2, 0, 0, 0, 0, 64, 48, 34, 1, 0, 0, 0, 0, 25, 9, 12, 0, 0, 0, 0, 0, 0, 16, 46, 2,
+ 0, 0, 0, 0, 17, 89, 38, 0, 0, 32, 0, 0, 255,121,50, 1, 0, 0, 0, 0, 128,100,10, 0, 0, 0, 0, 0, 10, 0, 70, 0, 0, 0, 0, 0, 80, 32, 3, 0,
+ 0, 0, 0, 0, 16, 36, 5, 0, 0, 96, 0, 0, 8, 16, 4, 0, 0, 0, 0, 0, 0, 24, 102,0, 0, 0, 0, 0, 116,189,8, 2, 0, 0, 0, 0, 64, 128,4, 2,
+ 0, 0, 0, 0, 57, 77, 10, 0, 0, 0, 0, 0, 204,12, 94, 0, 0, 0, 0, 0, 81, 89, 18, 0, 0, 0, 0, 0, 0, 57, 6, 1, 0, 0, 0, 0, 138,40, 14, 0,
+ 0, 0, 0, 0, 21, 33, 0, 0, 0, 0, 0, 0, 17, 123,30, 1, 0, 0, 0, 0, 74, 8, 2, 0, 0, 0, 0, 0, 130,40, 74, 0, 0, 128,20, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 127,188,46, 3, 0, 0, 0, 0, 55, 193,4, 0, 0, 0, 0, 0, 25, 9, 12, 2, 0, 34, 0, 0, 177,9, 4, 1, 0, 0, 0, 0, 8, 67, 0, 0,
+ 0, 0, 0, 0, 145,69, 30, 1, 0, 0, 0, 0, 80, 29, 14, 0, 0, 0, 0, 0, 148,32, 4, 0, 0, 0, 0, 0, 0, 24, 2, 1, 0, 0, 0, 0, 127,93, 125,3,
+ 0, 0, 0, 0, 175,61, 46, 3, 0, 0, 0, 0, 145,52, 14, 0, 0, 32, 0, 0, 32, 149,68, 0, 0, 0, 0, 0, 159,56, 164,2, 0, 0, 0, 0, 17, 81, 20, 1,
+ 0, 0, 0, 0, 140,0, 4, 2, 0, 0, 0, 0, 144,0, 6, 1, 0, 96, 0, 0, 9, 0, 4, 0, 0, 0, 0, 0, 128,241,92, 0, 0, 4, 0, 0, 81, 1, 4, 0,
+ 0, 0, 0, 0, 83, 16, 8, 0, 0, 0, 2, 0, 19, 249,84, 3, 0, 32, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 9, 22, 12, 2, 0, 0, 0, 0, 72, 34, 12, 0,
+ 0, 0, 0, 0, 0, 16, 14, 1, 0, 0, 0, 0, 83, 24, 64, 0, 0, 96, 0, 0, 255,253,126,1, 0, 0, 0, 0, 153,175,14, 1, 0, 0, 0, 0, 1, 73, 8, 0,
+ 0, 0, 0, 0, 1, 69, 10, 0, 0, 0, 0, 0, 145,64, 18, 0, 0, 32, 0, 0, 0, 8, 2, 0, 0, 32, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 29, 44, 12, 0,
+ 0, 0, 0, 0, 29, 1, 10, 2, 0, 96, 12, 0, 14, 2, 4, 1, 0, 0, 0, 0, 193,108,78, 1, 0, 0, 0, 0, 25, 73, 6, 0, 0, 0, 0, 0, 64, 41, 8, 1,
+ 0, 0, 0, 0, 25, 9, 14, 0, 0, 32, 8, 0, 0, 0, 128,0, 16, 32, 0, 0, 255,255,63, 3, 16, 0, 0, 0, 79, 48, 12, 0, 0, 0, 0, 0, 144,4, 10, 0,
+ 0, 0, 0, 0, 4, 0, 6, 2, 0, 0, 0, 0, 32, 80, 8, 0, 0, 0, 0, 0, 243,249,127,3, 0, 0, 0, 0, 192,44, 56, 1, 0, 0, 0, 0, 56, 56, 6, 2,
+ 0, 0, 0, 0, 16, 2, 16, 0, 0, 0, 0, 0, 36, 24, 4, 0, 0, 96, 0, 0, 16, 64, 0, 0, 0, 32, 0, 0, 121,168,4, 0, 0, 0, 0, 0, 18, 52, 118,2,
+ 0, 0, 0, 0, 64, 12, 0, 0, 0, 224,4, 0, 8, 0, 4, 0, 0, 0, 1, 0, 1, 4, 6, 2, 0, 0, 0, 0, 16, 73, 10, 0, 0, 0, 0, 0, 209,75, 22, 0,
+ 0, 0, 0, 0, 0, 28, 14, 0, 0, 0, 0, 0, 17, 0, 32, 0, 0, 0, 0, 0, 67, 160,12, 0, 0, 0, 0, 0, 2, 36, 2, 1, 0, 0, 0, 0, 160,0, 96, 0,
+ 0, 0, 0, 0, 36, 52, 14, 0, 0, 0, 0, 0, 23, 69, 8, 0, 0, 0, 0, 0, 0, 48, 24, 0, 16, 0, 0, 0, 145,89, 94, 1, 0, 96, 0, 0, 117,57, 6, 1,
+ 0, 0, 0, 0, 73, 97, 0, 0, 0, 0, 0, 0, 83, 104,4, 2, 0, 0, 0, 0, 0, 184,6, 1, 0, 0, 0, 0, 5, 8, 2, 0, 0, 0, 0, 0, 0, 161,18, 0,
+ 0, 0, 0, 0, 177,237,22, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 32, 0, 0, 239,127,124,3, 0, 96, 12, 0, 143,16, 12, 0, 0, 0, 0, 0, 73, 1, 12, 2,
+ 0, 0, 0, 0, 0, 64, 96, 0, 0, 0, 0, 0, 0, 177,0, 0, 0, 32, 0, 0, 1, 32, 8, 0, 0, 0, 0, 0, 4, 96, 12, 0, 0, 0, 0, 0, 8, 98, 52, 1,
+ 0, 32, 0, 0, 149,229,29, 0, 0, 32, 0, 0, 160,124,0, 0, 0, 96, 10, 64, 9, 0, 4, 0, 0, 224,31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 34, 0,
+ 0, 128,0, 0, 151,241,30, 3, 0, 0, 0, 0, 0, 36, 98, 1, 0, 32, 4, 0, 1, 1, 4, 0, 0, 0, 0, 0, 17, 32, 38, 0, 0, 0, 0, 0, 16, 16, 70, 0,
+ 0, 0, 0, 0, 32, 8, 72, 0, 0, 0, 0, 0, 32, 0, 2, 1, 0, 96, 2, 0, 17, 65, 0, 0, 0, 0, 0, 0, 64, 50, 0, 0, 0, 0, 0, 0, 127,188,46, 0,
+ 0, 0, 0, 0, 130,12, 68, 0, 0, 0, 0, 0, 16, 225,12, 0, 0, 64, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 8, 8, 10, 3, 0, 0, 0, 0, 21, 69, 32, 0,
+ 0, 0, 0, 0, 64, 45, 14, 0, 0, 0, 0, 0, 24, 5, 0, 1, 0, 32, 0, 0, 136,56, 6, 0, 0, 0, 0, 0, 4, 1, 4, 1, 0, 0, 0, 0, 77, 120,8, 0,
+ 0, 0, 0, 0, 81, 67, 0, 0, 0, 0, 0, 0, 4, 33, 18, 1, 0, 0, 0, 0, 223,61, 14, 1, 0, 64, 0, 0, 8, 41, 8, 1, 0, 0, 0, 0, 50, 81, 8, 0,
+ 0, 0, 0, 0, 55, 125,86, 1, 0, 0, 0, 0, 0, 164,36, 0, 0, 0, 0, 0, 88, 0, 10, 0, 0, 64, 0, 0, 17, 64, 4, 0, 0, 16, 0, 0, 149,73, 158,3,
+ 0, 0, 0, 0, 254,185,42, 0, 0, 0, 0, 0, 57, 137,0, 3, 0, 0, 0, 0, 17, 144,4, 0, 0, 32, 0, 0, 16, 65, 4, 1, 0, 0, 0, 0, 12, 57, 12, 0,
+ 0, 0, 0, 0, 1, 1, 18, 0, 0, 0, 0, 0, 17, 128,16, 0, 0, 0, 0, 0, 127,233,46, 1, 0, 0, 0, 0, 49, 65, 0, 0, 0, 0, 0, 0, 144,16, 24, 0,
+ 0, 0, 0, 0, 34, 0, 4, 2, 0, 0, 0, 0, 17, 125,82, 1, 0, 0, 0, 0, 63, 189,62, 1, 0, 0, 0, 0, 46, 136,2, 0, 0, 0, 0, 0, 44, 32, 10, 0,
+ 0, 0, 0, 0, 18, 145,4, 0, 0, 0, 0, 0, 94, 36, 8, 2, 0, 0, 0, 0, 58, 185,74, 0, 0, 0, 0, 0, 32, 17, 0, 0, 0, 0, 0, 0, 18, 25, 0, 0,
+ 0, 0, 0, 0, 58, 184,68, 0, 0, 0, 0, 0, 255,185,254,1, 0, 0, 0, 0, 26, 32, 14, 0, 0, 0, 0, 0, 10, 136,0, 0, 0, 0, 0, 0, 144,17, 4, 0,
+ 0, 0, 0, 0, 19, 209,0, 0, 0, 0, 0, 0, 124,76, 0, 2, 0, 0, 0, 0, 16, 133,0, 0, 0, 0, 0, 0, 50, 153,14, 2, 0, 0, 0, 0, 16, 56, 34, 0,
+ 0, 0, 0, 0, 55, 188,38, 2, 0, 0, 0, 0, 32, 160,32, 0, 0, 0, 0, 0, 42, 8, 6, 0, 0, 0, 0, 0, 32, 68, 2, 0, 0, 0, 0, 0, 9, 28, 12, 2,
+ 0, 0, 0, 0, 80, 4, 8, 0, 0, 0, 0, 0, 17, 157,0, 0, 0, 0, 0, 0, 72, 37, 0, 0, 0, 0, 0, 0, 1, 208,10, 0, 0, 0, 0, 0, 255,176,26, 0,
+ 0, 0, 0, 0, 212,181,30, 1, 0, 0, 0, 0, 126,48, 4, 0, 0, 0, 0, 0, 72, 4, 4, 2, 0, 0, 0, 0, 16, 33, 68, 0, 0, 0, 0, 0, 20, 176,12, 0,
+ 0, 0, 0, 0, 32, 144,12, 0, 0, 0, 0, 0, 18, 96, 12, 0, 0, 0, 0, 0, 18, 176,12, 0, 0, 0, 0, 0, 3, 128,0, 0, 0, 0, 0, 0, 136,40, 24, 0,
+ 0, 0, 0, 0, 16, 5, 8, 2, 0, 0, 0, 0, 20, 9, 2, 0, 0, 0, 0, 0, 0, 17, 8, 2, 0, 0, 0, 0, 92, 72, 8, 0, 0, 0, 0, 0, 82, 8, 8, 0,
+ 0, 0, 0, 0, 72, 8, 6, 0, 0, 0, 0, 0, 128,20, 12, 2, 0, 0, 0, 0, 164,32, 8, 0, 0, 0, 0, 0, 14, 141,26, 0, 0, 0, 0, 0, 22, 137,8, 0,
+ 0, 0, 0, 0, 2, 20, 2, 0, 0, 0, 0, 0, 8, 8, 0, 2, 0, 0, 0, 0, 30, 128,8, 0, 0, 0, 0, 0, 0, 20, 8, 2, 0, 0, 0, 0, 2, 196,2, 2,
+ 0, 0, 0, 0, 52, 0, 2, 0, 0, 0, 0, 0, 18, 0, 2, 0, 0, 0, 0, 0, 254,252,126,0, 0, 0, 0, 0, 46, 184,76, 0, 0, 0, 0, 0, 178,25, 78, 0,
+ 0, 0, 0, 0, 49, 41, 8, 2, 0, 0, 0, 0, 179,1, 12, 0, 0, 0, 0, 0, 20, 0, 16, 0, 0, 0, 0, 0, 38, 16, 6, 0, 0, 0, 0, 0, 32, 44, 0, 0,
+ 0, 32, 0, 0, 254,17, 78, 1, 0, 0, 0, 0, 48, 144,0, 0, 0, 0, 0, 0, 24, 32, 6, 2, 0, 0, 0, 0, 0, 8, 104,0, 0, 0, 0, 0, 126,48, 80, 1,
+ 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 47, 49, 16, 1, 0, 0, 0, 0, 50, 48, 0, 0, 0, 0, 0, 0, 22, 48, 32, 0, 0, 0, 0, 0, 34, 0, 34, 0,
+ 0, 0, 0, 0, 61, 248,8, 1, 0, 0, 0, 0, 8, 160,10, 0, 0, 0, 0, 0, 2, 184,8, 0, 0, 0, 0, 0, 254,185,30, 1, 0, 0, 0, 0, 19, 8, 0, 0,
+ 0, 0, 0, 0, 0, 184,14, 1, 0, 0, 0, 0, 24, 29, 72, 2, 0, 0, 0, 0, 17, 145,16, 0, 0, 0, 0, 0, 80, 21, 2, 2, 0, 0, 0, 0, 16, 2, 8, 2,
+ 0, 0, 0, 0, 74, 56, 6, 0, 0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 26, 36, 8, 2, 0, 0, 0, 0, 4, 20, 8, 2, 0, 0, 0, 0, 18, 20, 64, 0,
+ 0, 0, 0, 0, 18, 12, 68, 0, 0, 0, 0, 0, 90, 177,10, 1, 0, 0, 0, 0, 68, 52, 12, 2, 0, 0, 0, 0, 12, 36, 8, 2, 0, 0, 0, 0, 8, 1, 8, 1,
+ 0, 0, 0, 0, 20, 176,12, 2, 0, 0, 0, 0, 66, 32, 14, 0, 0, 0, 0, 0, 119,248,62, 0, 0, 0, 0, 0, 6, 40, 46, 0, 128,32, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 230,249,122,2, 0, 0, 0, 0, 25, 105,0, 0, 0, 0, 0, 0, 20, 1, 8, 1, 0, 0, 0, 0, 6, 128,8, 0, 0, 96, 4, 0, 8, 0, 0, 0,
+ 0, 224,30, 0, 0, 0, 4, 0, 0, 0, 0, 0, 92, 161,4, 2, 0, 32, 0, 0, 14, 8, 6, 0, 0, 96, 12, 0, 0, 32, 0, 0, 0, 0, 0, 0, 132,9, 30, 0,
+ 0, 224,0, 0, 18, 81, 12, 1, 0, 0, 0, 0, 10, 0, 32, 0, 0, 0, 0, 0, 2, 40, 14, 0, 0, 100,0, 0, 16, 17, 4, 0, 0, 0, 0, 0, 2, 176,72, 0,
+ 0, 0, 0, 0, 18, 137,4, 1, 0, 32, 0, 0, 16, 1, 0, 1, 0, 0, 0, 0, 17, 32, 64, 0, 0, 0, 0, 0, 16, 129,68, 0, 0, 0, 0, 0, 26, 17, 20, 1,
+ 0, 0, 0, 0, 7, 144,56, 0, 0, 0, 0, 0, 17, 65, 84, 0, 0, 0, 0, 0, 66, 232,24, 0, 0, 0, 0, 0, 106,176,8, 0, 0, 0, 0, 0, 46, 121,14, 2,
+ 0, 96, 0, 0, 8, 144,4, 0, 0, 0, 0, 0, 4, 8, 42, 0, 0, 128,0, 0, 146,201,6, 0, 0, 0, 0, 0, 255,255,255,1, 0, 0, 0, 0, 238,190,127,1,
+ 0, 0, 0, 0, 25, 0, 2, 0, 0, 0, 0, 0, 0, 16, 96, 0, 0, 0, 0, 0, 25, 65, 12, 1, 0, 0, 0, 0, 85, 66, 0, 0, 0, 0, 0, 0, 127,73, 4, 1,
+ 0, 0, 0, 0, 49, 9, 64, 0, 0, 4, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 18, 73, 12, 0, 0, 0, 0, 0, 149,76, 30, 0, 0, 0, 0, 0, 5, 0, 12, 0,
+ 0, 112,32, 0, 17, 73, 4, 0, 0, 0, 16, 0, 17, 0, 4, 0, 0, 32, 0, 0, 8, 8, 4, 0, 0, 0, 0, 0, 91, 121,90, 1, 0, 0, 0, 0, 0, 60, 10, 0,
+ 0, 0, 0, 0, 32, 16, 4, 0, 0, 0, 0, 0, 0, 24, 44, 0, 0, 0, 0, 0, 239,189,110,1, 0, 0, 0, 0, 18, 1, 0, 1, 0, 0, 0, 0, 16, 128,16, 0,
+ 0, 0, 0, 0, 211,120,82, 0, 0, 0, 0, 0, 2, 32, 56, 0, 0, 0, 0, 0, 16, 33, 2, 0, 0, 0, 0, 0, 80, 104,66, 2, 0, 0, 0, 0, 123,190,254,3,
+ 0, 0, 0, 0, 16, 64, 24, 0, 0, 0, 0, 0, 16, 57, 8, 0, 0, 0, 0, 0, 49, 0, 10, 0, 0, 0, 0, 0, 49, 40, 64, 0, 0, 0, 0, 0, 16, 136,0, 0,
+ 0, 0, 0, 0, 144,32, 0, 2, 0, 0, 0, 0, 1, 116,0, 0, 0, 0, 0, 0, 145,65, 26, 0, 0, 0, 0, 0, 64, 0, 66, 0, 0, 0, 0, 0, 255,255,126,2,
+ 0, 0, 0, 0, 128,36, 12, 0, 0, 0, 0, 0, 76, 48, 28, 1, 0, 32, 0, 0, 17, 81, 4, 0, 0, 0, 0, 0, 71, 48, 12, 0, 0, 0, 0, 0, 0, 4, 1, 0,
+ 0, 0, 0, 0, 19, 113,4, 1, 0, 0, 0, 0, 4, 36, 2, 1, 0, 0, 0, 0, 19, 253,14, 1, 0, 0, 0, 0, 1, 162,6, 0, 0, 0, 0, 0, 16, 65, 8, 2,
+ 0, 0, 0, 0, 125,96, 14, 0, 0, 4, 0, 0, 253,111,28, 2, 0, 0, 0, 0, 0, 161,40, 1, 0, 0, 0, 0, 68, 20, 14, 1, 0, 0, 0, 0, 146,68, 52, 0,
+ 0, 0, 0, 0, 36, 72, 4, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 145,85, 24, 0, 0, 0, 0, 0, 8, 57, 4, 0, 0, 0, 0, 0, 0, 0, 32, 2,
+ 0, 0, 0, 0, 145,65, 2, 2, 0, 0, 0, 0, 0, 36, 16, 0, 0, 4, 0, 0, 145,193,60, 0, 0, 0, 0, 0, 128,44, 2, 0, 0, 0, 0, 0, 1, 1, 24, 0,
+ 0, 0, 0, 0, 13, 36, 0, 0, 0, 4, 0, 0, 17, 65, 20, 0, 0, 0, 0, 0, 6, 0, 56, 0, 0, 32, 0, 0, 255,255,62, 1, 0, 0, 0, 0, 34, 177,12, 0,
+ 0, 0, 0, 0, 74, 48, 6, 1, 0, 0, 0, 0, 89, 65, 4, 0, 0, 0, 0, 0, 9, 72, 4, 0, 0, 32, 0, 0, 17, 35, 0, 1, 0, 32, 8, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 196,16, 0, 0, 0, 0, 0, 117,100,12, 0, 0, 0, 0, 0, 0, 12, 56, 0, 0, 0, 0, 0, 0, 112,40, 0, 0, 0, 0, 0, 8, 65, 8, 0,
+ 0, 0, 0, 0, 13, 40, 28, 0, 0, 176,0, 0, 9, 16, 4, 0, 0, 0, 0, 0, 149,221,13, 0, 0, 0, 0, 0, 151,73, 28, 2, 0, 0, 0, 0, 80, 32, 2, 0,
+ 0, 0, 0, 0, 50, 56, 14, 0, 0, 0, 0, 0, 21, 33, 2, 1, 0, 32, 8, 0, 58, 96, 28, 0, 0, 0, 0, 0, 33, 0, 16, 0, 0, 0, 0, 0, 17, 97, 28, 1,
+ 0, 0, 0, 0, 84, 40, 4, 1, 0, 96, 13, 0, 123,253,220,1, 0, 0, 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 16, 0, 128,1, 0, 112,5, 0, 99, 216,78, 0,
+ 0, 0, 0, 0, 191,28, 4, 1, 0, 32, 1, 0, 81, 65, 68, 0, 0, 0, 0, 0, 21, 16, 26, 0, 0, 0, 1, 0, 155,93, 122,1, 0, 0, 0, 0, 19, 96, 0, 0,
+ 0, 0, 0, 0, 3, 40, 0, 2, 0, 32, 0, 0, 48, 9, 4, 0, 0, 0, 0, 0, 40, 0, 12, 1, 0, 16, 0, 0, 59, 73, 66, 1, 0, 0, 0, 0, 9, 32, 128,0,
+ 0, 240,60, 0, 48, 17, 6, 1, 0, 0, 0, 0, 48, 1, 10, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 65, 17, 4, 0, 0, 0, 0, 0, 19, 163,18, 2,
+ 0, 0, 0, 0, 10, 32, 2, 0, 0, 0, 0, 0, 0, 44, 40, 0, 0, 0, 0, 0, 145,73, 24, 1, 0, 32, 0, 0, 0, 8, 0, 2, 0, 0, 0, 0, 24, 32, 22, 1,
+ 0, 0, 0, 0, 3, 32, 10, 0, 0, 0, 0, 0, 145,89, 72, 0, 0, 0, 4, 0, 19, 217,22, 0, 0, 0, 0, 0, 0, 172,4, 0, 0, 0, 0, 0, 129,72, 18, 0,
+ 0, 0, 0, 0, 40, 44, 4, 0, 0, 0, 0, 0, 0, 60, 6, 0, 0, 0, 0, 0, 129,1, 16, 0, 16, 0, 0, 0, 219,109,140,0, 0, 32, 0, 0, 177,0, 0, 0,
+ 0, 0, 0, 0, 1, 73, 6, 1, 0, 32, 0, 0, 16, 12, 2, 1, 0, 0, 0, 0, 192,64, 6, 0, 0, 0, 0, 0, 5, 4, 9, 0, 0, 0, 0, 0, 17, 25, 4, 0,
+ 0, 96, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 17, 201,20, 0, 0, 0, 0, 0, 59, 223,27, 1, 0, 0, 0, 0, 42, 160,2, 0, 0, 0, 0, 0, 156,168,70, 0,
+ 16, 0, 0, 0, 53, 172,8, 0, 0, 0, 0, 0, 33, 1, 0, 0, 0, 48, 0, 0, 18, 81, 4, 1, 0, 32, 4, 0, 9, 0, 0, 0, 0, 0, 0, 0, 130,0, 8, 0,
+ 0, 0, 0, 0, 17, 40, 14, 2, 0, 0, 0, 0, 122,44, 0, 0, 0, 32, 0, 0, 13, 32, 8, 0, 0, 0, 0, 0, 215,45, 44, 0, 0, 0, 0, 0, 73, 96, 0, 0,
+ 0, 32, 1, 0, 25, 32, 12, 0, 0, 0, 0, 0, 16, 44, 4, 0, 0, 0, 0, 0, 3, 1, 0, 2, 16, 0, 0, 0, 191,189,126,1, 0, 0, 0, 0, 168,60, 46, 0,
+ 0, 0, 0, 0, 152,113,68, 0, 0, 0, 0, 0, 7, 64, 0, 0, 0, 32, 0, 0, 8, 32, 0, 0, 0, 0, 0, 0, 138,173,14, 0, 0, 32, 0, 0, 136,0, 4, 0,
+ 0, 0, 0, 0, 17, 1, 6, 2, 0, 0, 0, 0, 8, 44, 34, 0, 0, 0, 0, 0, 187,253,45, 1, 0, 96, 0, 0, 64, 0, 32, 0, 0, 32, 0, 0, 241,49, 20, 1,
+ 0, 0, 0, 0, 17, 129,64, 0, 0, 0, 0, 0, 211,125,8, 3, 0, 0, 0, 0, 145,136,8, 0, 0, 0, 0, 0, 123,253,110,3, 0, 0, 0, 0, 61, 44, 12, 0,
+ 0, 0, 0, 0, 9, 32, 64, 0, 0, 0, 0, 0, 12, 32, 64, 0, 0, 0, 0, 0, 128,8, 10, 2, 0, 0, 0, 0, 21, 9, 0, 0, 0, 0, 0, 0, 7, 16, 0, 0,
+ 16, 0, 0, 0, 255,255,62, 3, 0, 0, 0, 0, 19, 9, 16, 0, 0, 0, 0, 0, 136,8, 34, 0, 0, 0, 0, 0, 33, 24, 26, 0, 0, 0, 0, 0, 0, 80, 10, 0,
+ 0, 0, 0, 0, 66, 32, 8, 0, 0, 0, 0, 0, 25, 205,8, 0, 0, 0, 0, 0, 19, 221,20, 0, 0, 0, 0, 0, 10, 96, 4, 2, 0, 0, 0, 0, 72, 52, 0, 0,
+ 0, 0, 0, 0, 221,103,12, 3, 0, 0, 0, 0, 66, 40, 80, 0, 0, 0, 0, 0, 24, 64, 6, 1, 0, 0, 0, 0, 8, 0, 30, 0, 0, 0, 0, 0, 18, 216,76, 1,
+ 0, 0, 0, 0, 25, 77, 40, 0, 0, 0, 0, 0, 128,5, 2, 2, 0, 0, 0, 0, 0, 24, 6, 1, 0, 32, 0, 0, 179,24, 12, 0, 0, 0, 0, 0, 17, 136,0, 1,
+ 0, 32, 0, 0, 0, 50, 2, 0, 0, 0, 0, 0, 0, 32, 16, 2, 0, 0, 0, 0, 255,254,126,1, 0, 0, 0, 0, 160,9, 8, 0, 0, 32, 2, 0, 16, 9, 68, 0,
+ 0, 0, 0, 0, 9, 64, 16, 0, 0, 0, 0, 0, 194,56, 4, 0, 0, 0, 0, 0, 49, 32, 0, 0, 16, 0, 0, 0, 25, 72, 8, 0, 0, 0, 0, 0, 89, 36, 24, 0,
+ 0, 0, 0, 0, 2, 132,8, 0, 0, 0, 0, 0, 24, 81, 4, 0, 0, 0, 0, 0, 146,156,12, 0, 0, 0, 0, 0, 18, 37, 10, 0, 0, 0, 0, 0, 139,8, 76, 1,
+ 0, 32, 0, 0, 191,57, 78, 1, 0, 0, 0, 0, 81, 68, 76, 0, 0, 0, 0, 0, 64, 184,12, 0, 16, 0, 0, 0, 17, 33, 0, 0, 0, 0, 0, 0, 95, 241,14, 1,
+ 0, 0, 0, 0, 25, 65, 16, 1, 0, 0, 0, 0, 8, 180,96, 0, 0, 0, 0, 0, 60, 37, 100,1, 0, 0, 0, 0, 88, 60, 32, 0, 0, 0, 0, 0, 60, 200,48, 1,
+ 0, 0, 0, 0, 66, 48, 8, 0, 0, 0, 0, 0, 255,255,46, 0, 0, 0, 0, 0, 4, 17, 0, 1, 0, 0, 0, 0, 10, 0, 6, 0, 0, 0, 0, 0, 65, 64, 2, 0,
+ 0, 0, 0, 0, 93, 25, 28, 2, 0, 0, 0, 0, 144,1, 4, 2, 0, 0, 0, 0, 17, 209,68, 0, 0, 0, 0, 0, 128,36, 10, 1, 0, 0, 0, 0, 64, 36, 8, 2,
+ 0, 0, 0, 0, 16, 129,8, 0, 0, 0, 0, 0, 81, 29, 10, 0, 0, 0, 0, 0, 128,4, 72, 0, 0, 0, 0, 0, 24, 72, 28, 0, 0, 0, 0, 0, 67, 57, 20, 0,
+ 0, 0, 8, 0, 255,252,255,3, 0, 0, 0, 0, 141,184,22, 0, 0, 0, 0, 0, 83, 73, 18, 1, 0, 0, 0, 0, 133,101,16, 1, 0, 0, 0, 0, 16, 8, 24, 0,
+ 0, 0, 0, 0, 19, 121,4, 0, 0, 32, 0, 0, 223,121,86, 0, 0, 0, 0, 0, 15, 124,78, 0, 0, 0, 0, 0, 110,190,126,0, 0, 0, 0, 0, 0, 12, 0, 2,
+ 0, 0, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 177,24, 66, 0, 0, 0, 0, 0, 18, 193,4, 0, 0, 0, 0, 0, 17, 129,14, 2, 0, 0, 0, 0, 49, 64, 26, 1,
+ 0, 64, 0, 0, 245,121,94, 0, 0, 96, 0, 0, 4, 160,2, 0, 0, 0, 0, 0, 17, 193,20, 1, 0, 0, 0, 0, 68, 9, 8, 0, 0, 0, 0, 0, 145,69, 16, 0,
+ 0, 0, 0, 0, 247,95, 61, 1, 0, 0, 0, 0, 194,48, 12, 0, 0, 0, 0, 0, 0, 96, 38, 0, 0, 0, 0, 0, 130,9, 0, 0, 0, 0, 0, 0, 117,0, 4, 0,
+ 0, 0, 0, 0, 20, 1, 68, 1, 0, 0, 0, 0, 17, 81, 4, 1, 0, 0, 0, 0, 1, 0, 36, 0, 0, 240,46, 0, 239,57, 76, 1, 0, 0, 0, 0, 191,221,22, 2,
+ 0, 96, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 20, 0, 128,0, 0, 0, 0, 0, 0, 108,6, 0, 0, 0, 0, 0, 21, 104,12, 0, 0, 0, 0, 0, 16, 49, 4, 0,
+ 0, 0, 0, 0, 16, 36, 6, 0, 0, 32, 0, 0, 29, 97, 12, 1, 0, 0, 0, 0, 17, 76, 12, 0, 0, 32, 0, 0, 0, 128,142,0, 0, 0, 0, 0, 36, 0, 4, 0,
+ 0, 0, 0, 0, 255,103,31, 1, 0, 0, 0, 0, 64, 41, 10, 0, 0, 0, 0, 0, 145,73, 8, 1, 0, 0, 0, 0, 69, 32, 70, 0, 0, 0, 0, 0, 149,73, 28, 0,
+ 0, 32, 0, 0, 8, 8, 66, 0, 0, 40, 0, 0, 0, 16, 4, 0, 0, 32, 0, 0, 136,0, 14, 1, 0, 0, 0, 0, 7, 32, 12, 0, 0, 0, 0, 0, 177,73, 4, 0,
+ 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0, 0, 168,10, 0, 0, 64, 0, 0, 6, 52, 18, 0, 0, 0, 0, 0, 144,204,14, 0, 0, 0, 0, 0, 151,255,94, 0,
+ 0, 0, 0, 0, 68, 6, 32, 0, 0, 0, 0, 0, 88, 36, 12, 0, 0, 0, 0, 0, 69, 32, 20, 0, 0, 0, 0, 0, 132,45, 4, 0, 0, 0, 0, 0, 21, 109,28, 1,
+ 0, 0, 0, 0, 0, 12, 32, 0, 0, 0, 0, 0, 32, 48, 0, 0, 0, 32, 0, 0, 128,8, 4, 0, 0, 0, 0, 0, 213,77, 94, 2, 0, 0, 0, 0, 8, 129,6, 0,
+ 0, 0, 0, 0, 64, 174,6, 1, 0, 0, 0, 0, 85, 12, 0, 0, 0, 0, 0, 0, 112,228,140,0, 0, 0, 32, 0, 0, 32, 4, 0, 0, 0, 0, 0, 17, 1, 64, 2,
+ 0, 0, 0, 0, 9, 24, 6, 0, 0, 0, 0, 0, 74, 8, 5, 0, 0, 64, 16, 0, 17, 107,82, 1, 0, 0, 1, 0, 2, 64, 8, 0, 0, 0, 0, 0, 243,169,42, 3,
+ 0, 0, 0, 0, 48, 9, 0, 0, 0, 0, 0, 0, 80, 33, 64, 0, 0, 0, 0, 0, 25, 13, 4, 0, 0, 0, 0, 0, 24, 4, 4, 0, 0, 0, 0, 0, 25, 140,28, 2,
+ 0, 32, 0, 0, 10, 128,6, 0, 0, 0, 0, 0, 249,185,106,0, 0, 0, 0, 0, 0, 56, 12, 0, 0, 0, 0, 0, 24, 24, 8, 0, 0, 0, 0, 0, 58, 185,46, 0,
+ 0, 0, 0, 0, 3, 65, 20, 0, 0, 0, 0, 0, 72, 80, 6, 0, 0, 0, 0, 0, 56, 72, 8, 0, 0, 0, 0, 0, 49, 209,4, 2, 0, 0, 0, 0, 132,44, 4, 0,
+ 0, 0, 0, 0, 0, 130,76, 0, 0, 0, 0, 0, 111,253,122,0, 0, 0, 0, 0, 56, 44, 0, 0, 0, 0, 0, 0, 29, 160,20, 2, 0, 0, 0, 0, 35, 168,14, 0,
+ 0, 32, 0, 0, 190,188,78, 0, 0, 32, 0, 0, 49, 197,18, 1, 0, 0, 0, 0, 110,185,126,1, 0, 0, 0, 0, 1, 64, 4, 1, 0, 0, 0, 0, 144,72, 8, 0,
+ 0, 128,0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 88, 5, 8, 0, 0, 0, 0, 0, 144,160,4, 0, 0, 0, 0, 0, 16, 69, 12, 1, 0, 0, 0, 0, 146,1, 4, 0,
+ 0, 0, 0, 0, 17, 69, 4, 0, 0, 32, 0, 0, 138,32, 6, 0, 0, 0, 0, 0, 5, 38, 4, 0, 0, 0, 0, 0, 27, 17, 12, 0, 0, 0, 0, 0, 93, 177,124,2,
+ 0, 0, 0, 0, 32, 0, 8, 2, 0, 0, 0, 0, 72, 0, 4, 2, 0, 0, 0, 0, 0, 148,40, 0, 0, 0, 0, 0, 16, 73, 68, 1, 0, 0, 0, 0, 16, 128,12, 0,
+ 0, 0, 0, 0, 124,180,108,2, 0, 32, 2, 0, 16, 64, 6, 1, 0, 0, 0, 0, 17, 22, 4, 1, 0, 0, 0, 0, 10, 0, 2, 1, 0, 0, 0, 0, 80, 4, 4, 0,
+ 0, 0, 0, 0, 4, 132,68, 0, 0, 0, 0, 0, 95, 240,124,0, 0, 0, 0, 0, 2, 64, 4, 0, 0, 0, 0, 0, 19, 5, 4, 0, 0, 0, 0, 0, 64, 160,8, 0,
+ 0, 64, 0, 0, 145,36, 12, 0, 0, 0, 0, 0, 68, 128,0, 0, 0, 0, 0, 0, 152,169,6, 0, 0, 0, 0, 0, 74, 181,14, 1, 0, 0, 0, 0, 11, 152,4, 0,
+ 0, 0, 0, 0, 129,4, 4, 0, 0, 32, 6, 0, 48, 0, 76, 2, 0, 0, 0, 0, 56, 0, 40, 0, 0, 0, 32, 0, 31, 197,30, 1, 0, 0, 0, 0, 12, 41, 78, 1,
+ 0, 32, 0, 0, 184,145,108,0, 0, 32, 0, 0, 21, 137,12, 1, 0, 0, 0, 0, 95, 10, 14, 0, 0, 0, 0, 0, 72, 8, 10, 0, 0, 0, 0, 0, 4, 12, 12, 0,
+ 0, 0, 0, 0, 8, 4, 4, 0, 0, 0, 0, 0, 217,40, 14, 0, 0, 0, 0, 0, 73, 0, 8, 0, 0, 96, 1, 0, 8, 0, 6, 1, 0, 0, 0, 0, 145,8, 14, 2,
+ 0, 96, 0, 0, 178,19, 108,1, 0, 0, 0, 0, 69, 76, 26, 0, 0, 96, 1, 0, 154,233,70, 1, 0, 0, 0, 0, 25, 45, 12, 0, 0, 0, 0, 0, 4, 128,40, 0,
+ 0, 32, 0, 0, 18, 41, 0, 1, 0, 0, 0, 0, 76, 9, 14, 0, 0, 0, 0, 0, 32, 128,8, 0, 0, 32, 0, 0, 16, 0, 4, 1, 0, 16, 0, 0, 149,209,18, 1,
+ 0, 0, 0, 0, 124,133,58, 3, 0, 96, 0, 0, 146,144,6, 1, 0, 0, 0, 0, 28, 200,4, 0, 0, 0, 0, 0, 48, 12, 2, 0, 0, 0, 0, 0, 157,139,14, 1,
+ 0, 0, 0, 0, 8, 0, 2, 2, 0, 0, 0, 0, 82, 17, 0, 0, 0, 0, 0, 0, 60, 132,40, 0, 0, 0, 0, 0, 142,196,123,0, 0, 0, 0, 0, 68, 132,8, 2,
+ 0, 32, 0, 0, 16, 1, 20, 1, 0, 32, 0, 0, 24, 1, 4, 1, 0, 0, 0, 0, 24, 37, 10, 0, 0, 32, 0, 0, 190,145,68, 1, 0, 0, 0, 0, 102,4, 4, 0,
+ 0, 0, 0, 0, 0, 180,6, 0, 0, 0, 0, 0, 18, 1, 4, 1, 0, 0, 0, 0, 23, 73, 22, 0, 0, 0, 0, 0, 4, 45, 6, 1, 0, 32, 0, 0, 17, 9, 4, 1,
+ 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 16, 100,1, 0, 0, 0, 0, 0, 135,69, 6, 0, 0, 240,63, 0, 0, 64, 0, 0, 0, 0, 0, 0, 16, 17, 8, 0,
+ 0, 0, 0, 0, 22, 136,0, 0, 0, 0, 0, 0, 17, 0, 68, 0, 0, 0, 0, 0, 153,65, 22, 0, 0, 0, 0, 0, 4, 160,70, 0, 0, 0, 0, 0, 0, 52, 2, 0,
+ 0, 0, 0, 0, 194,24, 45, 0, 0, 0, 0, 0, 32, 16, 2, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 140,44, 20, 0, 0, 0, 0, 0, 49, 13, 26, 0,
+ 0, 0, 0, 0, 23, 41, 72, 1, 0, 0, 0, 0, 5, 120,2, 0, 0, 0, 0, 0, 38, 8, 14, 0, 0, 0, 0, 0, 0, 101,4, 0, 0, 0, 0, 0, 251,125,126,3,
+ 0, 0, 0, 0, 76, 165,6, 2, 0, 0, 0, 0, 73, 68, 16, 0, 0, 32, 0, 0, 17, 1, 4, 2, 0, 0, 0, 0, 12, 57, 134,1, 0, 0, 0, 0, 157,56, 44, 2,
+ 0, 32, 0, 0, 1, 9, 20, 0, 0, 0, 0, 0, 64, 0, 2, 1, 0, 0, 0, 0, 5, 1, 0, 3, 0, 0, 1, 0, 16, 49, 110,1, 0, 0, 0, 0, 0, 1, 4, 2,
+ 0, 0, 0, 0, 2, 16, 14, 0, 0, 0, 0, 0, 8, 33, 6, 0, 0, 0, 0, 0, 27, 115,38, 0, 16, 0, 0, 0, 138,192,78, 0, 0, 0, 0, 0, 33, 72, 44, 0,
+ 0, 32, 0, 0, 40, 0, 36, 0, 0, 0, 0, 0, 89, 103,31, 3, 0, 0, 0, 0, 80, 20, 20, 0, 0, 0, 1, 0, 4, 0, 12, 0, 0, 0, 0, 0, 150,76, 68, 3,
+ 0, 96, 2, 0, 1, 0, 132,0, 0, 32, 0, 0, 50, 36, 10, 0, 0, 0, 0, 0, 104,17, 38, 0, 0, 40, 4, 0, 49, 0, 32, 0, 0, 0, 0, 0, 136,252,14, 1,
+ 0, 0, 0, 0, 149,204,74, 0, 0, 240,0, 0, 128,0, 0, 0, 0, 0, 0, 0, 223,253,62, 2, 0, 0, 0, 0, 6, 32, 40, 1, 0, 0, 0, 0, 33, 65, 0, 0,
+ 0, 0, 0, 0, 5, 44, 14, 0, 0, 0, 0, 0, 151,105,12, 0, 0, 0, 0, 0, 145,73, 8, 0, 0, 0, 16, 0, 254,172,47, 2, 0, 8, 0, 0, 53, 27, 12, 0,
+ 0, 32, 0, 0, 87, 185,76, 0, 0, 0, 0, 0, 128,128,4, 1, 0, 0, 0, 0, 29, 137,68, 0, 0, 0, 0, 0, 42, 0, 4, 0, 0, 32, 0, 0, 127,153,76, 0,
+ 0, 0, 0, 0, 0, 4, 38, 0, 0, 0, 0, 0, 153,41, 4, 0, 0, 0, 0, 0, 3, 13, 16, 0, 0, 48, 0, 0, 157,207,50, 1, 0, 0, 0, 0, 253,61, 94, 3,
+ 0, 0, 0, 0, 145,5, 0, 0, 0, 32, 0, 0, 46, 158,206,1, 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 36, 0, 1, 16, 0, 0, 0, 0, 0, 0, 127,101,12, 0,
+ 0, 32, 0, 0, 16, 17, 4, 1, 0, 0, 0, 0, 19, 1, 16, 0, 0, 0, 0, 0, 221,13, 14, 0, 0, 0, 0, 0, 16, 153,4, 1, 0, 0, 0, 0, 1, 1, 0, 3,
+ 0, 0, 0, 0, 0, 17, 12, 0, 0, 0, 0, 0, 145,1, 28, 2, 0, 96, 12, 0, 16, 1, 4, 0, 0, 0, 0, 0, 221,45, 110,3, 0, 0, 0, 0, 76, 4, 6, 0,
+ 0, 0, 0, 0, 180,81, 4, 0, 0, 0, 0, 0, 150,69, 28, 0, 0, 0, 0, 0, 49, 80, 0, 0, 0, 32, 8, 0, 16, 141,12, 0, 0, 0, 0, 0, 76, 8, 6, 0,
+ 0, 8, 0, 0, 16, 8, 64, 0, 0, 96, 0, 0, 18, 65, 86, 1, 0, 0, 0, 0, 92, 8, 14, 0, 0, 0, 0, 0, 19, 17, 4, 0, 0, 0, 0, 0, 16, 9, 12, 0,
+ 0, 0, 0, 0, 75, 93, 2, 0, 0, 0, 0, 0, 0, 32, 64, 2, 0, 0, 0, 0, 68, 0, 128,0, 0, 0, 0, 0, 124,108,110,2, 0, 0, 0, 0, 145,68, 16, 1,
+ 0, 32, 0, 0, 8, 0, 6, 1, 0, 96, 24, 0, 0, 16, 4, 0, 0, 0, 0, 0, 76, 44, 78, 0, 0, 0, 0, 0, 18, 16, 32, 0, 0, 0, 0, 0, 144,96, 16, 0,
+ 0, 96, 4, 0, 8, 8, 6, 1, 0, 0, 0, 0, 9, 29, 12, 0, 0, 0, 0, 0, 93, 101,20, 1, 0, 0, 0, 0, 8, 8, 12, 1, 0, 0, 0, 0, 32, 8, 6, 2,
+ 0, 0, 0, 0, 17, 69, 16, 1, 0, 32, 0, 0, 16, 65, 20, 0, 0, 0, 0, 0, 177,9, 12, 2, 0, 0, 0, 0, 21, 81, 16, 0, 0, 0, 0, 0, 0, 33, 76, 1,
+ 0, 32, 0, 0, 24, 17, 0, 1, 0, 0, 0, 0, 36, 32, 8, 0, 0, 0, 0, 0, 8, 96, 0, 0, 0, 0, 0, 0, 188,125,30, 0, 0, 0, 0, 0, 0, 144,64, 0,
+ 0, 0, 0, 0, 193,0, 12, 0, 0, 0, 0, 0, 96, 44, 10, 0, 0, 32, 0, 0, 51, 17, 4, 1, 0, 0, 0, 0, 21, 125,40, 1, 0, 32, 0, 0, 17, 65, 36, 1,
+ 0, 0, 0, 0, 48, 32, 32, 0, 0, 32, 0, 0, 4, 176,72, 0, 0, 0, 0, 0, 128,105,76, 0, 0, 128,0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 110,53, 89, 1,
+ 0, 0, 0, 0, 64, 9, 16, 0, 0, 0, 0, 0, 149,33, 64, 0, 0, 0, 0, 0, 64, 48, 8, 0, 0, 0, 0, 0, 64, 4, 8, 2, 0, 56, 32, 0, 187,25, 108,0,
+ 0, 0, 0, 0, 5, 40, 92, 0, 0, 0, 0, 0, 32, 8, 12, 0, 0, 0, 0, 0, 156,40, 10, 0, 0, 0, 0, 0, 8, 17, 4, 0, 0, 0, 0, 0, 66, 41, 14, 2,
+ 0, 16, 0, 0, 76, 21, 66, 0, 0, 0, 0, 0, 10, 57, 78, 0, 0, 32, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 64, 4, 0, 2,
+ 0, 0, 0, 0, 90, 40, 14, 0, 0, 68, 0, 0, 27, 225,4, 1, 0, 0, 0, 0, 8, 16, 64, 0, 0, 0, 0, 0, 83, 16, 0, 1, 0, 0, 0, 0, 8, 44, 98, 0,
+ 0, 0, 0, 0, 12, 4, 16, 0, 0, 0, 6, 0, 219,168,102,0, 0, 32, 2, 0, 129,1, 6, 0, 0, 52, 0, 0, 255,219,126,1, 0, 0, 0, 0, 255,189,254,3,
+ 0, 0, 0, 0, 14, 8, 8, 0, 0, 0, 0, 0, 40, 17, 6, 1, 0, 0, 0, 0, 148,5, 0, 1, 0, 0, 0, 0, 144,129,4, 0, 0, 0, 0, 0, 152,41, 8, 1,
+ 0, 0, 0, 0, 130,24, 8, 0, 0, 0, 0, 0, 138,40, 0, 0, 0, 0, 0, 0, 112,121,4, 0, 0, 0, 0, 0, 12, 16, 6, 0, 0, 0, 0, 0, 16, 120,2, 0,
+ 0, 0, 0, 0, 146,48, 0, 1, 0, 0, 0, 0, 91, 40, 2, 0, 0, 0, 0, 0, 26, 73, 12, 0, 0, 0, 0, 0, 20, 16, 68, 0, 0, 0, 0, 0, 136,88, 6, 0,
+ 0, 0, 0, 0, 63, 125,104,3, 0, 0, 0, 0, 23, 81, 68, 0, 0, 0, 0, 0, 59, 241,0, 0, 0, 0, 0, 0, 17, 13, 4, 0, 0, 0, 0, 0, 255,253,92, 2,
+ 0, 0, 0, 0, 64, 8, 66, 0, 0, 0, 0, 0, 145,73, 0, 2, 0, 0, 0, 0, 51, 205,22, 0, 0, 0, 0, 0, 240,8, 2, 0, 0, 32, 2, 0, 17, 72, 6, 0,
+ 0, 0, 0, 0, 53, 0, 4, 0, 0, 0, 0, 0, 0, 0, 116,0, 0, 0, 0, 0, 0, 2, 96, 0, 0, 0, 0, 0, 50, 1, 8, 0, 0, 0, 0, 0, 176,136,0, 0,
+ 0, 0, 0, 0, 40, 0, 14, 1, 0, 224,44, 0, 127,125,110,3, 0, 0, 0, 0, 144,5, 2, 0, 0, 0, 0, 0, 16, 25, 100,0, 0, 0, 0, 0, 64, 0, 68, 0,
+ 0, 32, 0, 0, 21, 1, 6, 1, 0, 96, 0, 0, 132,4, 12, 0, 0, 40, 0, 0, 17, 41, 30, 2, 0, 32, 0, 0, 149,101,28, 3, 0, 0, 0, 0, 1, 100,20, 0,
+ 0, 0, 0, 0, 144,105,28, 2, 0, 34, 0, 0, 140,56, 70, 0, 0, 0, 0, 0, 4, 96, 54, 0, 0, 96, 0, 0, 17, 17, 4, 0, 0, 0, 0, 0, 17, 16, 14, 0,
+ 0, 0, 0, 0, 46, 176,12, 0, 0, 0, 0, 0, 17, 37, 6, 0, 0, 0, 0, 0, 0, 128,20, 0, 0, 0, 0, 0, 16, 97, 14, 0, 0, 0, 0, 0, 128,8, 2, 1,
+ 0, 0, 0, 0, 255,191,122,3, 0, 0, 0, 0, 76, 60, 18, 0, 0, 0, 0, 0, 160,17, 64, 1, 0, 0, 0, 0, 16, 1, 12, 1, 0, 32, 0, 0, 0, 1, 0, 1,
+ 0, 32, 0, 0, 50, 129,14, 1, 0, 0, 0, 0, 74, 168,38, 0, 0, 32, 0, 0, 144,16, 68, 1, 0, 0, 0, 0, 147,76, 70, 0, 0, 0, 0, 0, 33, 12, 0, 0,
+ 0, 0, 0, 0, 16, 40, 4, 1, 0, 0, 0, 0, 81, 112,0, 0, 0, 0, 0, 0, 126,60, 14, 0, 0, 0, 0, 0, 251,93, 70, 0, 0, 0, 0, 0, 64, 0, 18, 0,
+ 0, 0, 0, 0, 17, 3, 18, 0, 0, 0, 0, 0, 0, 1, 8, 1, 0, 0, 0, 0, 19, 29, 8, 2, 0, 0, 0, 0, 177,209,16, 1, 0, 32, 0, 0, 0, 0, 10, 0,
+ 0, 0, 0, 0, 223,116,13, 2, 0, 0, 0, 0, 16, 72, 10, 0, 0, 0, 0, 0, 175,253,78, 0, 0, 32, 0, 0, 21, 33, 4, 1, 0, 96, 0, 0, 0, 1, 36, 0,
+ 0, 0, 0, 0, 86, 253,34, 0, 0, 0, 0, 0, 68, 137,12, 0, 0, 32, 0, 0, 19, 73, 84, 0, 0, 0, 0, 0, 128,12, 12, 2, 0, 0, 0, 0, 31, 0, 2, 0,
+ 0, 240,4, 0, 192,100,6, 1, 0, 96, 0, 0, 17, 0, 4, 0, 0, 64, 0, 0, 126,190,174,0, 0, 32, 0, 0, 58, 57, 22, 1, 0, 0, 0, 0, 2, 32, 6, 1,
+ 0, 0, 0, 0, 137,16, 4, 0, 0, 0, 0, 0, 226,40, 2, 0, 0, 0, 0, 0, 16, 41, 4, 1, 0, 0, 0, 0, 81, 24, 68, 0, 0, 0, 0, 0, 80, 169,76, 0,
+ 0, 0, 0, 0, 147,49, 68, 0, 0, 0, 0, 0, 16, 32, 4, 2, 0, 0, 0, 0, 17, 217,20, 0, 0, 0, 0, 0, 93, 36, 12, 0, 0, 0, 0, 0, 130,16, 14, 0,
+ 0, 32, 0, 0, 17, 9, 6, 1, 0, 0, 0, 0, 80, 60, 6, 0, 0, 0, 0, 0, 148,0, 8, 2, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 0, 255,255,126,1,
+ 0, 0, 0, 0, 191,249,76, 1, 0, 0, 0, 0, 10, 8, 10, 0, 0, 0, 0, 0, 230,44, 14, 1, 0, 0, 0, 0, 48, 4, 4, 0, 0, 0, 0, 0, 8, 41, 4, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 17, 76, 2, 0, 0, 0, 0, 0, 12, 8, 6, 1, 0, 0, 0, 0, 63, 201,12, 2, 0, 0, 0, 0, 3, 144,0, 0,
+ 0, 0, 0, 0, 80, 1, 16, 1, 0, 224,2, 0, 174,28, 70, 1, 0, 0, 0, 0, 72, 140,14, 0, 0, 0, 0, 0, 241,205,68, 1, 0, 0, 0, 0, 31, 127,10, 3,
+ 0, 0, 0, 0, 168,4, 6, 1, 0, 96, 8, 0, 19, 65, 76, 1, 0, 0, 0, 0, 32, 65, 4, 2, 0, 0, 0, 0, 2, 8, 44, 0, 0, 0, 0, 0, 128,4, 20, 0,
+ 0, 0, 0, 0, 148,12, 12, 2, 0, 0, 0, 0, 125,0, 10, 0, 0, 0, 0, 0, 17, 16, 8, 1, 0, 0, 16, 0, 17, 97, 16, 3, 0, 0, 0, 0, 239,189,124,3,
+ 0, 0, 0, 0, 144,4, 1, 2, 0, 0, 0, 0, 59, 9, 8, 0, 0, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 49, 0, 4, 0, 0, 0, 0, 0, 0, 66, 4, 0,
+ 0, 0, 0, 0, 121,96, 6, 0, 0, 0, 0, 0, 48, 8, 84, 0, 0, 32, 0, 0, 0, 40, 70, 0, 0, 0, 0, 0, 0, 200,4, 0, 0, 0, 0, 0, 18, 48, 0, 0,
+ 0, 32, 0, 0, 181,209,28, 2, 0, 0, 0, 0, 20, 0, 4, 2, 0, 0, 0, 0, 52, 16, 4, 1, 0, 0, 0, 0, 36, 34, 44, 0, 0, 0, 0, 0, 230,0, 4, 0,
+ 0, 0, 0, 0, 18, 32, 4, 2, 0, 0, 0, 0, 138,32, 12, 0, 0, 0, 0, 0, 255,191,124,1, 0, 0, 0, 0, 0, 20, 8, 0, 0, 0, 0, 0, 10, 128,8, 0,
+ 0, 32, 0, 0, 22, 88, 76, 0, 0, 0, 0, 0, 102,0, 12, 0, 0, 0, 0, 0, 16, 48, 0, 2, 0, 0, 0, 0, 20, 25, 0, 0, 0, 0, 0, 0, 64, 4, 16, 0,
+ 0, 0, 0, 0, 127,180,172,2, 0, 0, 0, 0, 16, 104,16, 0, 0, 0, 0, 0, 96, 4, 8, 0, 0, 160,0, 0, 34, 64, 6, 0, 0, 0, 0, 0, 18, 136,0, 0,
+ 0, 0, 0, 0, 177,1, 4, 1, 0, 0, 1, 0, 20, 137,12, 0, 0, 0, 0, 0, 20, 16, 8, 2, 0, 0, 0, 0, 254,255,124,3, 0, 0, 0, 0, 18, 24, 4, 0,
+ 0, 0, 0, 0, 19, 16, 5, 1, 0, 0, 0, 0, 65, 0, 8, 2, 0, 32, 0, 0, 146,152,0, 0, 0, 0, 0, 0, 144,12, 16, 0, 0, 0, 0, 0, 128,16, 0, 2,
+ 0, 0, 0, 0, 74, 128,12, 0, 0, 0, 0, 0, 26, 16, 0, 0, 0, 0, 0, 0, 94, 177,44, 3, 0, 0, 0, 0, 1, 145,0, 0, 0, 0, 0, 0, 128,0, 12, 3,
+ 0, 0, 0, 0, 44, 134,4, 0, 0, 0, 0, 0, 191,188,46, 3, 0, 0, 0, 0, 132,4, 0, 2, 0, 0, 0, 0, 0, 24, 10, 1, 0, 32, 4, 0, 26, 57, 76, 3,
+ 0, 0, 0, 0, 17, 64, 48, 0, 0, 32, 2, 0, 0, 0, 84, 0, 0, 0, 0, 0, 14, 52, 38, 0, 0, 0, 0, 0, 4, 9, 8, 0, 0, 0, 0, 0, 50, 144,0, 0,
+ 0, 0, 0, 0, 176,193,4, 1, 0, 0, 0, 0, 64, 36, 8, 0, 0, 32, 0, 0, 17, 197,0, 0, 0, 0, 0, 0, 92, 61, 74, 2, 0, 0, 0, 0, 16, 33, 0, 3,
+ 0, 0, 0, 0, 19, 0, 4, 0, 0, 0, 0, 0, 144,8, 12, 2, 0, 0, 0, 0, 22, 120,134,0, 0, 0, 0, 0, 8, 32, 4, 2, 0, 0, 0, 0, 1, 40, 34, 2,
+ 0, 0, 0, 0, 255,251,126,3, 0, 0, 0, 0, 8, 168,14, 0, 0, 0, 0, 0, 20, 1, 2, 0, 0, 0, 0, 0, 13, 2, 8, 0, 0, 0, 0, 0, 148,197,24, 1,
+ 0, 0, 0, 0, 5, 0, 11, 0, 0, 0, 0, 0, 17, 32, 4, 2, 0, 0, 0, 0, 16, 9, 2, 1, 0, 0, 0, 0, 212,4, 10, 0, 0, 96, 8, 0, 48, 65, 0, 0,
+ 0, 0, 0, 0, 17, 77, 0, 1, 0, 32, 4, 0, 61, 89, 12, 1, 0, 32, 4, 0, 16, 0, 4, 0, 0, 32, 4, 0, 0, 64, 0, 0, 0, 32, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 155,73, 68, 0, 0, 0, 0, 0, 16, 4, 10, 0, 0, 0, 0, 0, 139,40, 30, 3, 0, 0, 0, 0, 32, 3, 0, 1, 0, 0, 0, 0, 217,9, 2, 0,
+ 0, 0, 0, 0, 130,41, 66, 0, 0, 96, 0, 0, 30, 152,6, 1, 0, 0, 0, 0, 0, 20, 16, 1, 0, 0, 0, 0, 132,44, 14, 2, 0, 0, 0, 0, 21, 73, 12, 0,
+ 0, 0, 0, 0, 145,69, 18, 0, 0, 0, 0, 0, 2, 64, 26, 0, 0, 0, 0, 0, 53, 205,28, 3, 0, 0, 0, 0, 4, 1, 64, 1, 0, 0, 0, 0, 4, 55, 4, 1,
+ 0, 0, 0, 0, 16, 180,40, 0, 0, 0, 0, 0, 17, 64, 2, 2, 0, 0, 0, 0, 1, 129,4, 0, 0, 0, 0, 0, 19, 249,14, 1, 0, 0, 0, 0, 14, 32, 14, 1,
+ 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 8, 36, 8, 1, 0, 112,44, 0, 165,73, 44, 0, 16, 160,0, 0, 127,125,94, 1, 0, 0, 0, 0, 147,89, 15, 0,
+ 0, 0, 0, 0, 144,40, 2, 1, 0, 0, 0, 0, 16, 8, 106,0, 0, 0, 0, 0, 80, 8, 8, 0, 0, 96, 8, 0, 10, 0, 36, 0, 0, 0, 0, 0, 1, 64, 2, 2,
+ 0, 0, 0, 0, 2, 48, 0, 2, 0, 128,0, 0, 17, 233,2, 0, 0, 96, 59, 0, 255,255,252,0, 0, 0, 0, 0, 2, 0, 64, 1, 0, 0, 0, 0, 0, 248,16, 0,
+ 0, 0, 0, 0, 16, 112,0, 0, 0, 32, 0, 0, 4, 34, 134,0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 20, 192,8, 1, 0, 0, 0, 0, 127,255,122,1,
+ 0, 0, 0, 0, 134,38, 8, 0, 0, 0, 0, 0, 32, 40, 12, 0, 0, 0, 0, 0, 23, 1, 4, 0, 0, 0, 0, 0, 8, 64, 6, 0, 0, 0, 0, 0, 83, 32, 8, 1,
+ 0, 0, 0, 0, 1, 168,8, 1, 0, 0, 0, 0, 149,221,29, 3, 0, 32, 4, 0, 3, 33, 4, 1, 0, 0, 0, 0, 16, 20, 64, 0, 0, 0, 0, 0, 180,207,58, 1,
+ 0, 0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0, 153,67, 16, 1, 0, 0, 0, 0, 17, 65, 10, 1, 0, 0, 0, 0, 157,33, 26, 0, 0, 0, 0, 0, 72, 34, 4, 0,
+ 0, 0, 0, 0, 16, 196,4, 0, 0, 0, 0, 0, 12, 1, 2, 0, 0, 0, 0, 0, 1, 77, 0, 2, 0, 0, 1, 0, 0, 0, 4, 2, 0, 0, 0, 0, 238,189,62, 3,
+ 0, 0, 0, 0, 0, 145,0, 1, 0, 0, 0, 0, 64, 34, 0, 0, 0, 0, 0, 0, 48, 8, 4, 1, 0, 0, 0, 0, 223,37, 76, 2, 0, 0, 0, 0, 18, 64, 8, 0,
+ 0, 0, 0, 0, 27, 113,26, 1, 0, 0, 0, 0, 128,72, 68, 2, 0, 0, 0, 0, 0, 80, 0, 1, 0, 0, 0, 0, 50, 24, 64, 0, 0, 0, 0, 0, 149,25, 12, 2,
+ 0, 0, 0, 0, 17, 33, 0, 2, 0, 0, 0, 0, 253,185,14, 3, 0, 0, 0, 0, 8, 32, 10, 2, 0, 0, 0, 0, 48, 145,12, 1, 0, 0, 0, 0, 19, 9, 0, 0,
+ 0, 0, 0, 0, 24, 184,14, 2, 0, 96, 4, 0, 219,249,92, 1, 0, 0, 0, 0, 84, 8, 8, 0, 0, 0, 0, 0, 28, 68, 12, 0, 0, 0, 0, 0, 0, 41, 12, 0,
+ 0, 0, 0, 0, 253,184,46, 2, 0, 0, 0, 0, 6, 0, 10, 0, 0, 0, 0, 0, 2, 16, 68, 0, 0, 0, 0, 0, 122,36, 12, 0, 0, 0, 0, 0, 161,0, 2, 1,
+ 0, 32, 0, 0, 17, 9, 4, 0, 0, 0, 0, 0, 115,81, 0, 0, 0, 0, 0, 0, 99, 232,2, 1, 0, 0, 0, 0, 0, 160,4, 0, 0, 32, 0, 0, 32, 128,4, 0,
+ 0, 0, 0, 0, 63, 252,62, 2, 0, 0, 0, 0, 1, 76, 0, 0, 0, 0, 0, 0, 145,184,104,0, 0, 32, 0, 0, 128,32, 0, 0, 0, 0, 0, 0, 19, 213,4, 0,
+ 0, 0, 0, 0, 129,72, 12, 0, 0, 0, 0, 0, 93, 96, 8, 0, 0, 0, 0, 0, 64, 164,128,0, 0, 0, 0, 0, 144,89, 2, 0, 0, 0, 0, 0, 8, 160,96, 0,
+ 0, 0, 0, 0, 128,96, 16, 0, 0, 0, 0, 0, 17, 81, 22, 0, 0, 0, 4, 0, 1, 16, 12, 1, 0, 168,2, 0, 17, 65, 4, 0, 0, 0, 0, 0, 21, 253,88, 1,
+ 0, 0, 0, 0, 46, 56, 14, 0, 0, 0, 0, 0, 6, 128,4, 0, 0, 0, 0, 0, 68, 44, 110,0, 0, 0, 0, 0, 4, 156,12, 0, 0, 0, 0, 0, 38, 24, 4, 0,
+ 0, 0, 0, 0, 12, 176,4, 0, 0, 0, 0, 0, 5, 68, 16, 0, 16, 228,7, 0, 223,255,254,3, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 16, 0, 255,255,255,3,
+ 0, 0, 0, 0, 32, 12, 2, 0, 0, 0, 0, 0, 19, 73, 22, 0, 0, 0, 0, 0, 68, 12, 14, 0, 0, 0, 0, 0, 5, 96, 12, 0, 0, 32, 2, 0, 13, 8, 78, 0,
+ 0, 0, 0, 0, 1, 104,2, 0, 0, 0, 0, 0, 157,109,28, 1, 0, 0, 0, 0, 2, 36, 2, 0, 0, 0, 0, 0, 2, 176,4, 0, 0, 0, 0, 0, 221,153,8, 1,
+ 0, 0, 0, 0, 0, 112,20, 0, 0, 0, 0, 0, 68, 6, 8, 0, 0, 0, 0, 0, 49, 77, 30, 0, 0, 0, 0, 0, 211,88, 20, 0, 0, 0, 0, 0, 14, 56, 8, 0,
+ 0, 0, 0, 0, 0, 8, 42, 0, 0, 0, 0, 0, 20, 129,4, 0, 0, 0, 0, 0, 246,238,78, 3, 0, 0, 0, 0, 210,201,68, 0, 0, 0, 0, 0, 65, 64, 24, 0,
+ 0, 0, 0, 0, 0, 17, 16, 0, 0, 0, 0, 0, 204,125,30, 1, 0, 0, 16, 0, 173,113,30, 0, 0, 0, 0, 0, 255,221,124,1, 0, 0, 0, 0, 195,56, 46, 1,
+ 0, 0, 0, 0, 2, 32, 6, 0, 0, 0, 0, 0, 55, 16, 28, 0, 0, 0, 16, 0, 19, 1, 12, 1, 0, 0, 0, 0, 83, 81, 16, 1, 0, 0, 0, 0, 204,160,6, 0,
+ 0, 0, 0, 0, 19, 221,86, 0, 0, 0, 0, 0, 72, 45, 30, 1, 0, 0, 0, 0, 65, 65, 0, 0, 0, 0, 0, 0, 8, 13, 6, 2, 0, 0, 0, 0, 21, 60, 6, 1,
+ 0, 0, 0, 0, 255,127,92, 3, 0, 0, 0, 0, 194,37, 0, 0, 0, 0, 0, 0, 19, 66, 18, 1, 0, 0, 1, 0, 68, 46, 5, 1, 0, 0, 0, 0, 17, 105,22, 1,
+ 0, 0, 0, 0, 1, 17, 8, 0, 0, 0, 0, 0, 1, 16, 8, 1, 0, 0, 0, 0, 65, 84, 12, 0, 0, 0, 0, 0, 25, 81, 132,0, 0, 0, 0, 0, 136,0, 0, 2,
+ 0, 0, 0, 0, 136,36, 2, 1, 0, 0, 0, 0, 16, 13, 8, 1, 0, 0, 0, 0, 145,201,22, 0, 0, 0, 0, 0, 128,104,12, 0, 0, 0, 0, 0, 1, 98, 2, 0,
+ 0, 0, 0, 0, 136,33, 2, 0, 16, 0, 0, 0, 219,255,127,3, 0, 0, 0, 0, 138,172,76, 3, 0, 0, 0, 0, 32, 54, 1, 0, 0, 0, 0, 0, 34, 128,96, 0,
+ 0, 0, 0, 0, 64, 32, 12, 0, 0, 0, 0, 0, 17, 8, 28, 0, 0, 0, 0, 0, 66, 48, 2, 0, 0, 0, 0, 0, 52, 32, 0, 0, 0, 0, 0, 0, 150,29, 12, 0,
+ 0, 0, 0, 0, 1, 23, 0, 0, 0, 0, 0, 0, 58, 8, 14, 0, 0, 0, 0, 0, 213,123,30, 1, 0, 0, 0, 0, 0, 24, 38, 1, 0, 0, 0, 0, 0, 112,2, 0,
+ 0, 0, 0, 0, 128,112,8, 1, 16, 0, 0, 0, 87, 168,14, 2, 0, 0, 0, 0, 3, 16, 0, 0, 0, 0, 0, 0, 64, 0, 24, 1, 0, 0, 0, 0, 169,33, 64, 0,
+ 0, 0, 0, 0, 73, 32, 0, 0, 0, 8, 0, 0, 17, 209,16, 0, 0, 0, 0, 0, 12, 41, 68, 0, 0, 0, 0, 0, 27, 120,12, 1, 0, 112,36, 0, 4, 16, 4, 0,
+ 0, 32, 0, 0, 25, 16, 0, 2, 0, 0, 0, 0, 17, 17, 0, 3, 0, 0, 0, 0, 201,128,64, 2, 0, 0, 0, 0, 49, 16, 18, 0, 0, 0, 0, 0, 0, 0, 1, 2,
+ 0, 0, 1, 0, 230,188,15, 0, 0, 0, 0, 0, 16, 81, 8, 0, 16, 0, 0, 0, 16, 8, 0, 0, 0, 128,0, 0, 17, 89, 68, 0, 0, 0, 0, 0, 56, 1, 4, 1,
+ 0, 0, 0, 0, 24, 137,8, 0, 0, 0, 0, 0, 133,124,28, 0, 0, 32, 0, 0, 29, 49, 12, 0, 0, 0, 32, 0, 16, 65, 0, 0, 0, 0, 0, 0, 4, 68, 5, 0,
+ 0, 32, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 59, 1, 130,0, 0, 96, 0, 0, 2, 0, 4, 0, 0, 16, 0, 0, 204,190,46, 0, 0, 32, 0, 0, 99, 9, 4, 1,
+ 0, 32, 0, 0, 16, 8, 0, 1, 0, 0, 0, 0, 48, 11, 0, 0, 0, 0, 0, 0, 145,32, 24, 0, 0, 16, 0, 0, 17, 32, 22, 0, 0, 0, 0, 0, 68, 24, 156,0,
+ 0, 0, 0, 0, 17, 45, 24, 0, 0, 0, 0, 0, 125,125,28, 0, 0, 0, 0, 0, 108,244,172,0, 0, 0, 0, 0, 129,72, 2, 0, 16, 0, 0, 0, 17, 81, 28, 1,
+ 0, 0, 0, 0, 32, 0, 6, 2, 0, 0, 0, 0, 20, 96, 4, 0, 0, 0, 0, 0, 19, 245,16, 0, 0, 32, 0, 0, 64, 32, 4, 0, 0, 48, 0, 0, 81, 201,28, 0,
+ 0, 32, 0, 0, 1, 0, 16, 0, 0, 32, 0, 0, 0, 16, 14, 0, 0, 0, 0, 0, 255,249,30, 2, 0, 0, 0, 0, 70, 56, 6, 0, 0, 0, 0, 0, 0, 64, 18, 1,
+ 0, 0, 0, 0, 10, 48, 14, 1, 0, 0, 0, 0, 67, 68, 80, 0, 0, 4, 0, 0, 17, 65, 0, 1, 0, 112,0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 36, 32, 2, 0,
+ 0, 0, 0, 0, 145,9, 4, 0, 0, 0, 0, 0, 172,0, 8, 0, 0, 0, 0, 0, 181,137,16, 0, 0, 0, 0, 0, 223,255,126,2, 0, 0, 0, 0, 138,49, 48, 2,
+ 0, 0, 0, 0, 35, 188,4, 2, 0, 0, 0, 0, 4, 32, 4, 1, 0, 32, 0, 0, 52, 169,4, 2, 0, 0, 0, 0, 2, 40, 14, 3, 0, 32, 0, 0, 51, 72, 12, 0,
+ 0, 0, 0, 0, 133,124,14, 0, 0, 240,32, 0, 27, 209,20, 1, 0, 0, 0, 0, 2, 48, 40, 0, 0, 32, 0, 0, 16, 16, 4, 0, 0, 0, 0, 0, 38, 52, 12, 0,
+ 0, 32, 0, 0, 0, 40, 4, 0, 0, 0, 0, 0, 145,73, 30, 2, 0, 0, 0, 0, 204,152,18, 0, 0, 0, 0, 0, 2, 0, 6, 2, 0, 0, 0, 0, 17, 84, 4, 0,
+ 0, 0, 0, 0, 21, 17, 8, 0, 0, 0, 0, 0, 12, 32, 6, 0, 0, 96, 6, 0, 2, 0, 4, 0, 0, 8, 0, 0, 18, 65, 22, 0, 0, 0, 0, 0, 3, 69, 64, 0,
+ 0, 16, 0, 0, 29, 97, 250,1, 0, 0, 0, 0, 94, 253,254,1, 0, 0, 0, 0, 17, 0, 134,0, 0, 0, 0, 0, 24, 65, 0, 1, 0, 0, 0, 0, 16, 4, 20, 0,
+ 0, 0, 0, 0, 147,25, 0, 0, 0, 0, 0, 0, 19, 144,0, 0, 0, 0, 0, 0, 209,199,12, 0, 0, 0, 0, 0, 112,9, 20, 1, 0, 0, 0, 0, 1, 160,6, 0,
+ 16, 0, 0, 0, 213,64, 12, 0, 0, 0, 0, 0, 8, 8, 36, 0, 0, 0, 0, 0, 0, 28, 26, 0, 0, 0, 0, 0, 4, 32, 30, 0, 0, 0, 0, 0, 49, 64, 18, 0,
+ 0, 0, 0, 0, 8, 56, 4, 0, 0, 0, 0, 0, 0, 72, 10, 0, 0, 0, 0, 0, 129,97, 2, 0, 0, 0, 16, 0, 16, 0, 0, 0, 0, 0, 0, 0, 8, 40, 64, 0,
+ 0, 0, 0, 0, 17, 89, 64, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 14, 168,14, 0, 0, 0, 0, 0, 2, 64, 2, 0, 0, 0, 0, 0, 0, 144,40, 0,
+ 16, 0, 0, 0, 43, 81, 92, 0, 0, 0, 0, 0, 8, 8, 38, 0, 0, 0, 0, 0, 17, 96, 32, 0, 0, 0, 0, 0, 24, 176,6, 0, 0, 0, 0, 0, 4, 160,16, 0,
+ 0, 0, 0, 0, 145,177,28, 2, 0, 0, 0, 0, 2, 17, 16, 0, 16, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 64, 48, 4, 0, 0, 0, 0, 0, 161,1, 2, 0,
+ 0, 0, 0, 0, 8, 8, 34, 0, 0, 0, 0, 0, 223,124,174,0, 0, 0, 0, 0, 42, 188,62, 0, 0, 0, 0, 0, 82, 16, 0, 0, 0, 0, 0, 0, 1, 16, 6, 1,
+ 0, 0, 0, 0, 65, 28, 0, 0, 0, 0, 0, 0, 80, 44, 4, 0, 16, 32, 0, 0, 0, 1, 36, 1, 0, 32, 0, 0, 18, 129,4, 0, 0, 0, 0, 0, 8, 0, 28, 1,
+ 16, 0, 0, 0, 0, 65, 12, 0, 0, 0, 0, 0, 27, 121,30, 0, 0, 0, 0, 0, 18, 0, 16, 1, 0, 0, 0, 0, 19, 217,20, 0, 0, 240,8, 0, 24, 67, 44, 0,
+ 0, 0, 0, 0, 82, 32, 0, 0, 0, 0, 34, 0, 59, 253,44, 0, 0, 0, 0, 0, 12, 32, 128,2, 0, 0, 0, 0, 219,72, 77, 1, 0, 0, 0, 0, 98, 56, 0, 0,
+ 0, 0, 0, 0, 65, 0, 36, 0, 0, 0, 0, 0, 20, 185,84, 0, 0, 0, 0, 0, 17, 72, 68, 0, 0, 162,0, 0, 56, 128,12, 0, 0, 0, 0, 0, 36, 136,36, 0,
+ 0, 0, 0, 0, 87, 240,92, 0, 0, 0, 0, 0, 88, 0, 12, 0, 0, 0, 0, 0, 0, 192,64, 0, 0, 0, 0, 0, 27, 33, 4, 0, 0, 0, 0, 0, 0, 48, 204,0,
+ 0, 0, 0, 0, 93, 120,14, 1, 0, 0, 1, 0, 64, 8, 4, 0, 0, 0, 0, 0, 16, 161,4, 0, 0, 0, 0, 0, 90, 4, 0, 0, 0, 240,46, 0, 30, 65, 4, 0,
+ 0, 0, 0, 0, 67, 57, 14, 1, 0, 0, 0, 0, 10, 64, 8, 0, 0, 0, 0, 0, 4, 129,2, 0, 0, 0, 0, 0, 99, 56, 6, 0, 0, 0, 0, 0, 255,255,238,2,
+ 0, 0, 0, 0, 64, 112,2, 0, 0, 0, 0, 0, 193,98, 0, 0, 0, 0, 0, 0, 18, 73, 80, 0, 0, 0, 0, 0, 19, 33, 0, 1, 0, 0, 0, 0, 16, 41, 12, 0,
+ 0, 0, 0, 0, 27, 17, 66, 1, 0, 0, 0, 0, 234,188,30, 0, 0, 0, 0, 0, 88, 4, 8, 0, 0, 0, 0, 0, 85, 48, 6, 0, 0, 0, 0, 0, 64, 2, 0, 2,
+ 0, 0, 0, 0, 33, 72, 8, 0, 0, 0, 0, 0, 17, 33, 8, 1, 0, 0, 0, 0, 209,40, 18, 0, 0, 240,62, 0, 54, 153,78, 0, 0, 240,44, 0, 0, 0, 4, 0,
+ 0, 32, 0, 0, 17, 40, 6, 1, 0, 0, 0, 0, 129,5, 42, 0, 0, 0, 0, 0, 123,121,28, 2, 0, 0, 0, 0, 8, 17, 10, 1, 0, 32, 0, 0, 31, 221,30, 0,
+ 0, 32, 0, 0, 144,0, 14, 0, 0, 0, 0, 0, 17, 72, 22, 0, 0, 32, 0, 0, 16, 25, 68, 0, 0, 96, 0, 0, 47, 236,206,3, 0, 0, 0, 0, 132,136,8, 0,
+ 0, 0, 0, 0, 8, 36, 12, 0, 0, 0, 0, 0, 144,33, 4, 0, 0, 0, 0, 0, 160,40, 142,0, 0, 0, 0, 0, 255,253,30, 1, 0, 32, 0, 0, 0, 18, 4, 0,
+ 0, 0, 0, 0, 1, 73, 6, 0, 0, 0, 0, 0, 81, 8, 68, 0, 0, 32, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 11, 8, 6, 1, 0, 0, 0, 0, 16, 88, 8, 0,
+ 0, 0, 0, 0, 0, 205,30, 0, 0, 0, 0, 0, 16, 25, 20, 1, 0, 0, 0, 0, 12, 40, 10, 1, 0, 0, 0, 0, 16, 160,0, 0, 0, 0, 0, 0, 21, 197,30, 1,
+ 0, 0, 0, 0, 10, 49, 4, 0, 0, 0, 0, 0, 4, 176,32, 0, 0, 0, 0, 0, 159,81, 20, 2, 0, 0, 0, 0, 17, 12, 0, 0, 0, 0, 0, 0, 181,89, 30, 2,
+ 0, 96, 0, 0, 17, 1, 4, 0, 0, 0, 0, 0, 5, 4, 16, 0, 0, 0, 0, 0, 136,1, 6, 0, 0, 32, 0, 0, 1, 32, 64, 0, 0, 0, 0, 0, 1, 97, 0, 2,
+ 0, 0, 1, 0, 35, 64, 8, 0, 0, 32, 0, 0, 19, 9, 16, 0, 0, 0, 0, 0, 0, 24, 136,0, 0, 128,0, 0, 1, 98, 0, 0, 0, 64, 0, 0, 32, 17, 36, 0,
+ 0, 0, 0, 0, 68, 32, 6, 0, 0, 0, 0, 0, 0, 16, 8, 1, 0, 32, 0, 0, 0, 64, 4, 2, 0, 0, 0, 0, 64, 40, 6, 2, 0, 96, 0, 0, 8, 0, 8, 0,
+ 0, 0, 0, 0, 149,68, 1, 2, 0, 0, 0, 0, 153,81, 8, 1, 0, 32, 0, 0, 0, 9, 0, 1, 0, 0, 0, 0, 40, 187,102,0, 0, 0, 0, 0, 65, 2, 0, 0,
+ 0, 0, 0, 0, 48, 132,0, 0, 0, 0, 0, 0, 33, 65, 24, 0, 0, 0, 0, 0, 81, 104,20, 0, 0, 0, 0, 0, 8, 40, 40, 0, 16, 0, 0, 0, 17, 77, 16, 1,
+ 0, 0, 0, 0, 191,125,60, 2, 0, 0, 0, 0, 40, 32, 6, 0, 0, 0, 0, 0, 0, 116,32, 0, 0, 0, 0, 0, 19, 49, 68, 1, 0, 0, 0, 0, 40, 16, 14, 1,
+ 0, 96, 0, 0, 55, 223,92, 1, 0, 0, 0, 0, 128,41, 14, 2, 0, 32, 0, 0, 145,69, 20, 2, 0, 0, 0, 0, 0, 12, 40, 0, 0, 0, 0, 0, 129,0, 2, 2,
+ 0, 0, 0, 0, 128,45, 6, 1, 0, 0, 0, 0, 28, 12, 12, 0, 0, 96, 2, 0, 94, 12, 12, 1, 0, 0, 0, 0, 208,148,2, 1, 0, 0, 0, 0, 148,197,0, 0,
+ 0, 0, 0, 0, 95, 111,14, 3, 0, 0, 0, 0, 0, 41, 68, 0, 0, 0, 0, 0, 8, 12, 14, 1, 0, 0, 0, 0, 17, 2, 54, 2, 0, 0, 0, 0, 85, 96, 12, 0,
+ 0, 96, 53, 64, 129,0, 0, 0, 0, 0, 0, 0, 254,252,78, 2, 0, 0, 4, 0, 51, 85, 12, 0, 0, 32, 0, 0, 144,65, 0, 0, 0, 0, 0, 0, 19, 0, 20, 0,
+ 0, 0, 0, 0, 21, 128,12, 0, 0, 0, 0, 0, 19, 153,0, 0, 0, 2, 0, 0, 253,253,12, 0, 0, 0, 0, 0, 4, 40, 0, 2, 0, 0, 0, 0, 0, 12, 14, 2,
+ 0, 0, 0, 0, 64, 41, 6, 0, 0, 0, 0, 0, 25, 9, 4, 0, 0, 0, 0, 0, 149,193,0, 1, 0, 0, 0, 0, 127,245,63, 1, 0, 0, 0, 0, 17, 67, 16, 0,
+ 0, 0, 0, 0, 16, 9, 64, 0, 0, 0, 0, 0, 1, 40, 4, 3, 0, 0, 0, 0, 83, 33, 40, 1, 0, 0, 0, 0, 81, 65, 17, 0, 0, 0, 0, 0, 0, 65, 6, 0,
+ 0, 0, 0, 0, 4, 53, 4, 0, 0, 0, 0, 0, 8, 41, 0, 0, 0, 0, 0, 0, 78, 106,4, 3, 0, 0, 32, 0, 0, 64, 4, 0, 0, 0, 0, 0, 28, 106,4, 0,
+ 0, 0, 0, 0, 144,65, 8, 0, 0, 16, 0, 0, 16, 65, 22, 0, 0, 0, 0, 0, 80, 64, 2, 0, 0, 0, 16, 0, 149,65, 12, 0, 0, 0, 0, 0, 3, 68, 2, 1,
+ 0, 0, 0, 0, 145,113,12, 2, 0, 0, 32, 0, 0, 32, 14, 0, 0, 0, 0, 0, 207,186,46, 0, 0, 0, 0, 0, 27, 153,12, 1, 0, 0, 0, 0, 80, 33, 8, 0,
+ 0, 0, 0, 0, 1, 80, 4, 0, 0, 0, 0, 0, 19, 113,44, 0, 0, 0, 0, 0, 17, 17, 2, 0, 0, 0, 0, 0, 23, 169,14, 0, 0, 0, 0, 0, 148,9, 4, 2,
+ 0, 0, 0, 0, 181,217,33, 0, 16, 0, 0, 0, 0, 8, 0, 0, 0, 96, 0, 0, 51, 97, 22, 3, 0, 0, 0, 0, 254,255,254,1, 0, 0, 0, 0, 17, 64, 16, 2,
+ 0, 0, 0, 0, 0, 34, 0, 2, 0, 0, 0, 0, 144,5, 8, 3, 0, 32, 0, 0, 25, 0, 70, 1, 0, 32, 0, 0, 19, 9, 68, 0, 0, 0, 0, 0, 8, 80, 6, 0,
+ 0, 0, 0, 0, 33, 1, 8, 0, 0, 0, 0, 0, 146,73, 68, 0, 0, 32, 0, 0, 145,89, 20, 0, 0, 32, 0, 0, 16, 128,0, 0, 0, 0, 0, 0, 22, 216,70, 0,
+ 0, 0, 0, 0, 87, 53, 29, 2, 0, 32, 0, 0, 255,255,116,1, 0, 0, 0, 0, 4, 24, 136,0, 0, 0, 0, 0, 16, 65, 68, 0, 0, 0, 0, 0, 4, 48, 144,0,
+ 0, 0, 0, 0, 153,128,4, 0, 0, 0, 0, 0, 128,132,12, 0, 0, 32, 0, 0, 20, 17, 0, 1, 0, 0, 0, 0, 82, 48, 140,0, 0, 0, 0, 0, 128,48, 64, 2,
+ 0, 0, 0, 0, 17, 101,0, 0, 0, 0, 0, 0, 64, 41, 0, 0, 0, 32, 0, 0, 20, 73, 4, 0, 0, 0, 0, 0, 8, 8, 132,0, 0, 0, 0, 0, 21, 40, 100,0,
+ 0, 0, 0, 0, 255,255,252,3, 0, 0, 0, 0, 12, 52, 14, 0, 0, 0, 0, 0, 1, 17, 68, 0, 0, 0, 0, 0, 18, 105,16, 0, 0, 0, 0, 0, 16, 65, 64, 0,
+ 0, 32, 0, 0, 228,56, 12, 0, 0, 0, 0, 0, 48, 64, 26, 2, 0, 0, 0, 0, 14, 32, 4, 0, 0, 0, 2, 0, 18, 4, 4, 0, 0, 0, 0, 0, 19, 217,0, 0,
+ 0, 0, 0, 0, 143,101,8, 0, 0, 32, 0, 0, 129,81, 0, 2, 0, 0, 0, 0, 1, 5, 8, 0, 0, 0, 0, 0, 133,200,44, 0, 0, 0, 0, 0, 144,65, 8, 1,
+ 0, 0, 0, 0, 64, 40, 12, 2, 0, 0, 2, 0, 127,252,191,2, 0, 0, 0, 0, 147,73, 16, 0, 0, 0, 0, 0, 145,69, 0, 1, 0, 32, 0, 0, 16, 9, 4, 1,
+ 0, 0, 0, 0, 4, 24, 0, 0, 0, 0, 0, 0, 76, 32, 22, 0, 0, 0, 0, 0, 48, 73, 0, 0, 0, 0, 0, 0, 80, 73, 16, 0, 0, 96, 0, 0, 48, 1, 4, 0,
+ 0, 0, 0, 0, 3, 73, 8, 0, 0, 0, 8, 0, 19, 177,4, 0, 0, 0, 0, 0, 221,5, 8, 0, 0, 0, 0, 0, 8, 0, 24, 0, 0, 160,8, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8, 56, 132,0, 0, 0, 0, 0, 145,201,28, 0, 0, 0, 0, 0, 168,16, 140,0, 0, 0, 0, 0, 8, 9, 4, 0, 0, 0, 0, 0, 140,76, 8, 0,
+ 0, 0, 0, 0, 20, 73, 12, 2, 0, 0, 0, 0, 1, 32, 28, 0, 0, 0, 0, 0, 254,255,252,1, 0, 0, 0, 0, 133,1, 0, 0, 0, 0, 0, 0, 176,0, 0, 0,
+ 0, 0, 0, 0, 24, 73, 4, 0, 0, 0, 0, 0, 9, 12, 4, 0, 0, 0, 0, 0, 132,36, 0, 0, 0, 32, 0, 0, 144,65, 4, 0, 0, 0, 0, 0, 19, 136,4, 0,
+ 0, 0, 0, 0, 93, 33, 12, 2, 0, 0, 0, 0, 20, 129,12, 0, 0, 0, 0, 0, 128,80, 12, 2, 0, 0, 0, 0, 66, 160,12, 0, 0, 96, 0, 0, 40, 16, 4, 0,
+ 0, 32, 0, 0, 2, 48, 12, 0, 0, 0, 0, 0, 255,255,174,0, 0, 96, 0, 0, 17, 25, 4, 0, 0, 0, 0, 0, 80, 97, 0, 1, 0, 0, 0, 0, 195,56, 142,0,
+ 0, 0, 0, 0, 1, 72, 20, 1, 0, 0, 0, 0, 16, 192,4, 0, 0, 0, 0, 0, 92, 36, 0, 2, 0, 0, 0, 0, 148,13, 12, 0, 0, 32, 0, 0, 16, 49, 68, 1,
+ 0, 0, 0, 0, 16, 73, 8, 0, 0, 0, 0, 0, 83, 241,12, 0, 0, 0, 0, 0, 149,213,112,0, 0, 0, 0, 0, 0, 109,54, 0, 0, 0, 0, 0, 1, 176,6, 0,
+ 0, 0, 0, 0, 222,39, 14, 3, 0, 0, 0, 0, 8, 0, 16, 1, 0, 0, 0, 0, 72, 16, 0, 0, 0, 32, 0, 0, 255,255,191,3, 0, 0, 0, 0, 128,57, 14, 2,
+ 0, 0, 0, 0, 83, 81, 54, 0, 0, 0, 0, 0, 0, 24, 20, 0, 0, 0, 0, 0, 68, 80, 44, 0, 0, 0, 0, 0, 149,68, 20, 2, 0, 0, 0, 0, 33, 96, 8, 0,
+ 0, 0, 0, 0, 211,16, 68, 0, 0, 0, 0, 0, 21, 141,20, 0, 0, 0, 0, 0, 128,16, 2, 0, 0, 0, 0, 0, 19, 253,16, 0, 0, 0, 0, 0, 219,101,4, 0,
+ 0, 0, 0, 0, 25, 0, 20, 0, 0, 0, 0, 0, 130,56, 2, 0, 0, 0, 0, 0, 17, 201,0, 1, 0, 0, 0, 0, 127,255,63, 3, 0, 0, 0, 0, 0, 48, 8, 1,
+ 0, 0, 0, 0, 0, 32, 38, 0, 0, 96, 36, 0, 108,178,12, 2, 0, 32, 0, 0, 17, 89, 20, 0, 0, 32, 2, 0, 0, 0, 4, 0, 0, 2, 0, 0, 159,253,29, 0,
+ 0, 0, 0, 0, 66, 0, 2, 0, 0, 0, 0, 0, 24, 8, 6, 1, 0, 0, 0, 0, 32, 0, 112,0, 0, 0, 0, 0, 4, 52, 64, 0, 0, 0, 0, 0, 88, 8, 4, 0,
+ 0, 96, 0, 0, 8, 32, 4, 0, 0, 0, 0, 0, 133,13, 12, 1, 0, 0, 0, 0, 129,72, 16, 0, 0, 0, 0, 0, 145,69, 92, 0, 0, 0, 0, 0, 146,128,8, 0,
+ 0, 4, 4, 0, 16, 112,130,0, 0, 0, 0, 0, 8, 33, 14, 0, 0, 0, 0, 0, 153,40, 10, 0, 0, 0, 0, 0, 8, 36, 8, 2, 0, 0, 0, 0, 24, 9, 0, 1,
+ 0, 0, 0, 0, 32, 8, 32, 0, 0, 96, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 124,40, 142,2, 0, 0, 0, 0, 87, 165,12, 2, 0, 96, 0, 0, 0, 0, 12, 0,
+ 0, 2, 0, 0, 236,216,14, 0, 0, 0, 0, 0, 95, 253,62, 0, 0, 0, 0, 0, 24, 80, 64, 0, 0, 96, 0, 0, 14, 2, 4, 0, 0, 0, 0, 0, 25, 65, 64, 0,
+ 0, 0, 1, 0, 44, 0, 68, 0, 0, 0, 0, 0, 36, 32, 4, 0, 0, 0, 0, 0, 21, 65, 82, 0, 0, 0, 0, 0, 9, 69, 4, 2, 0, 0, 0, 0, 17, 128,32, 0,
+ 16, 68, 1, 0, 255,255,254,3, 0, 0, 0, 0, 1, 36, 4, 0, 0, 4, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 17, 32, 32, 0, 0, 0, 5, 0, 17, 105,50, 0,
+ 0, 0, 0, 0, 0, 8, 13, 0, 0, 0, 0, 0, 133,77, 4, 0, 0, 0, 0, 0, 8, 16, 0, 1, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 27, 89, 16, 0,
+ 0, 0, 0, 0, 4, 41, 0, 1, 0, 0, 16, 0, 174,188,6, 0, 0, 0, 0, 0, 236,196,0, 1, 0, 0, 0, 0, 34, 2, 128,0, 0, 0, 0, 0, 209,72, 18, 0,
+ 0, 0, 0, 0, 0, 41, 2, 2, 0, 0, 0, 0, 187,90, 90, 1, 0, 0, 0, 0, 8, 0, 32, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 208,120,28, 0,
+ 0, 0, 0, 0, 129,166,16, 1, 0, 128,0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 48, 97, 27, 0, 0, 0, 0, 0, 5, 128,0, 1, 0, 0, 0, 0, 63, 123,126,1,
+ 0, 0, 0, 0, 3, 49, 8, 0, 0, 0, 0, 0, 15, 0, 12, 0, 0, 0, 0, 0, 129,36, 0, 0, 0, 0, 0, 0, 17, 80, 22, 0, 0, 32, 0, 0, 4, 24, 44, 0,
+ 0, 0, 0, 0, 179,189,76, 0, 0, 0, 0, 0, 64, 40, 14, 1, 0, 0, 0, 0, 29, 1, 2, 0, 0, 0, 0, 0, 137,0, 4, 2, 0, 0, 0, 0, 129,1, 9, 0,
+ 0, 0, 1, 0, 255,255,127,3, 0, 0, 0, 0, 110,185,126,0, 0, 0, 0, 0, 0, 65, 48, 0, 0, 0, 0, 0, 64, 33, 12, 0, 0, 0, 1, 0, 17, 73, 18, 0,
+ 0, 0, 0, 0, 145,77, 26, 0, 0, 0, 0, 0, 1, 0, 34, 0, 0, 0, 0, 0, 3, 32, 4, 0, 0, 0, 0, 0, 0, 120,50, 0, 0, 0, 0, 0, 32, 144,0, 0,
+ 0, 0, 0, 0, 44, 32, 45, 0, 0, 0, 0, 0, 0, 140,2, 0, 0, 0, 0, 0, 32, 8, 8, 0, 0, 0, 0, 0, 17, 225,18, 1, 0, 0, 0, 0, 0, 16, 24, 0,
+ 0, 0, 0, 0, 37, 48, 46, 0, 0, 32, 0, 0, 255,252,126,0, 0, 0, 0, 0, 33, 0, 32, 0, 0, 0, 0, 0, 148,1, 8, 0, 0, 0, 0, 0, 49, 32, 38, 0,
+ 0, 0, 0, 0, 4, 33, 16, 0, 0, 0, 0, 0, 13, 184,173,0, 0, 0, 0, 0, 44, 0, 8, 0, 0, 0, 0, 0, 21, 201,18, 0, 0, 0, 0, 0, 0, 17, 44, 2,
+ 0, 0, 0, 0, 145,72, 50, 0, 0, 0, 0, 0, 0, 1, 34, 0, 0, 0, 0, 0, 47, 252,175,0, 0, 0, 0, 0, 17, 68, 2, 1, 0, 0, 0, 0, 164,2, 44, 0,
+ 0, 32, 0, 0, 16, 1, 44, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, 0, 0, 0, 17, 65, 48, 0, 0, 0, 0, 0, 4, 52, 12, 0, 0, 0, 0, 0, 5, 0, 32, 0,
+ 0, 0, 0, 0, 0, 4, 140,0, 0, 0, 0, 0, 8, 8, 32, 0, 0, 0, 0, 0, 20, 0, 66, 0, 0, 0, 0, 0, 46, 128,2, 0, 0, 0, 0, 0, 4, 9, 42, 0,
+ 0, 0, 0, 0, 0, 136,64, 0, 0, 0, 0, 0, 12, 128,8, 0, 0, 0, 0, 0, 44, 0, 40, 0, 0, 0, 0, 0, 17, 65, 80, 0, 0, 0, 0, 0, 4, 32, 56, 0,
+ 0, 0, 0, 0, 101,153,45, 0, 0, 0, 0, 0, 12, 8, 4, 0, 0, 0, 0, 0, 16, 192,8, 0, 0, 0, 0, 0, 149,197,88, 1, 0, 0, 0, 0, 32, 33, 40, 0,
+ 0, 0, 0, 0, 21, 8, 10, 0, 0, 0, 0, 0, 8, 1, 32, 0, 0, 0, 0, 0, 34, 0, 8, 0, 0, 0, 0, 0, 6, 161,6, 0, 0, 0, 0, 0, 0, 184,0, 0,
+ 0, 0, 0, 0, 130,84, 6, 2, 0, 0, 0, 0, 24, 24, 10, 0, 0, 0, 0, 0, 0, 8, 80, 0, 0, 0, 32, 0, 255,255,94, 1, 0, 0, 0, 0, 4, 144,4, 0,
+ 0, 0, 0, 0, 149,85, 88, 0, 0, 0, 0, 0, 64, 33, 10, 0, 0, 0, 0, 0, 209,81, 16, 0, 0, 0, 0, 0, 255,253,127,2, 0, 0, 0, 0, 6, 56, 74, 0,
+ 0, 0, 0, 0, 64, 5, 16, 1, 0, 0, 0, 0, 20, 33, 4, 0, 0, 0, 0, 0, 21, 65, 4, 1, 0, 0, 0, 0, 5, 4, 4, 2, 0, 0, 0, 0, 1, 32, 12, 1,
+ 0, 0, 0, 0, 31, 100,36, 2, 0, 0, 0, 0, 8, 10, 0, 2, 0, 0, 0, 0, 17, 193,16, 2, 0, 0, 0, 0, 5, 0, 0, 2, 0, 0, 0, 0, 80, 20, 2, 0,
+ 16, 0, 0, 0, 255,253,94, 0, 0, 32, 0, 0, 111,49, 14, 0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 40, 40, 14, 0, 0, 160,0, 0, 16, 176,4, 1,
+ 0, 0, 0, 0, 4, 160,4, 0, 0, 0, 0, 0, 178,0, 18, 1, 0, 0, 0, 0, 5, 1, 2, 0, 0, 0, 0, 0, 181,127,46, 3, 0, 0, 0, 0, 136,16, 2, 0,
+ 0, 0, 0, 0, 4, 160,6, 0, 0, 0, 0, 0, 48, 16, 32, 0, 0, 0, 0, 0, 128,0, 48, 0, 0, 0, 0, 0, 192,16, 28, 0, 0, 0, 0, 0, 9, 16, 16, 0,
+ 0, 0, 0, 0, 80, 0, 128,0, 0, 0, 0, 0, 136,48, 8, 2, 0, 0, 0, 0, 154,1, 16, 2, 0, 124,2, 0, 255,255,127,1, 0, 64, 0, 0, 253,191,255,3,
+ 0, 0, 0, 0, 149,9, 24, 0, 0, 32, 0, 0, 0, 4, 16, 0, 0, 0, 0, 0, 129,105,26, 0, 0, 0, 0, 0, 8, 108,6, 0, 0, 0, 0, 0, 72, 161,2, 0,
+ 0, 0, 0, 0, 129,1, 20, 0, 0, 0, 0, 0, 221,223,62, 0, 0, 0, 0, 0, 8, 37, 6, 2, 0, 0, 0, 0, 0, 144,6, 2, 0, 0, 0, 0, 9, 44, 14, 2,
+ 0, 0, 0, 0, 20, 64, 12, 2, 0, 0, 0, 0, 17, 100,16, 1, 0, 0, 0, 0, 25, 32, 29, 0, 0, 0, 0, 0, 10, 32, 6, 0, 0, 0, 0, 0, 84, 42, 14, 3,
+ 0, 32, 0, 0, 32, 0, 68, 0, 0, 0, 0, 0, 17, 48, 4, 0, 0, 0, 0, 0, 0, 33, 30, 0, 0, 8, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 1, 192,4, 0,
+ 0, 0, 0, 0, 14, 188,30, 0, 0, 0, 0, 0, 16, 73, 18, 0, 0, 0, 0, 0, 22, 40, 34, 0, 0, 0, 0, 0, 0, 112,24, 0, 0, 0, 0, 0, 80, 56, 64, 0,
+ 0, 0, 0, 0, 210,188,118,3, 0, 0, 0, 0, 131,0, 0, 0, 0, 0, 0, 0, 247,191,110,2, 0, 0, 0, 0, 48, 64, 2, 0, 0, 0, 0, 0, 18, 40, 2, 0,
+ 0, 0, 0, 0, 48, 32, 164,0, 0, 0, 0, 0, 117,140,46, 3, 0, 0, 0, 0, 96, 16, 2, 0, 0, 0, 0, 0, 0, 57, 18, 0, 0, 0, 0, 0, 16, 152,0, 0,
+ 0, 0, 0, 0, 20, 4, 52, 0, 0, 0, 0, 0, 48, 72, 114,1, 0, 0, 0, 0, 21, 40, 14, 0, 0, 0, 0, 0, 16, 32, 80, 0, 0, 0, 0, 0, 132,16, 12, 0,
+ 0, 0, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 36, 104,54, 1, 0, 0, 0, 0, 5, 77, 24, 1, 0, 0, 0, 0, 148,36, 0, 0, 0, 0, 0, 0, 95, 125,63, 3,
+ 0, 0, 0, 0, 200,38, 4, 2, 0, 0, 0, 0, 85, 104,4, 0, 0, 0, 0, 0, 215,93, 29, 3, 0, 0, 0, 0, 0, 41, 22, 0, 0, 0, 0, 0, 4, 12, 4, 1,
+ 0, 0, 0, 0, 16, 101,4, 1, 0, 0, 0, 0, 12, 128,4, 0, 0, 0, 0, 0, 0, 40, 18, 1, 0, 0, 0, 0, 17, 121,2, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+ 0, 0, 0, 0, 78, 168,140,0, 0, 0, 0, 0, 137,96, 16, 0, 0, 64, 0, 0, 64, 0, 1, 2, 0, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129,37, 2, 0,
+ 0, 0, 0, 0, 132,32, 0, 1, 0, 0, 0, 0, 34, 4, 8, 2, 0, 0, 0, 0, 223,255,238,3, 0, 0, 0, 0, 12, 8, 14, 2, 0, 0, 0, 0, 148,21, 8, 0,
+ 0, 0, 0, 0, 241,1, 8, 0, 0, 32, 0, 0, 2, 8, 10, 0, 0, 0, 0, 0, 16, 129,162,0, 0, 0, 0, 0, 72, 44, 8, 0, 0, 0, 0, 0, 148,1, 0, 2,
+ 0, 0, 0, 0, 157,95, 56, 2, 0, 0, 0, 0, 0, 32, 7, 3, 0, 0, 0, 0, 4, 0, 9, 0, 0, 0, 0, 0, 66, 32, 12, 3, 0, 0, 0, 0, 17, 12, 4, 2,
+ 0, 0, 0, 0, 12, 0, 188,2, 0, 0, 0, 0, 144,21, 2, 2, 16, 0, 0, 0, 221,109,28, 2, 0, 0, 0, 0, 2, 32, 10, 0, 0, 0, 0, 0, 68, 0, 0, 2,
+ 0, 0, 0, 0, 85, 16, 46, 3, 0, 0, 0, 0, 33, 32, 2, 0, 0, 0, 0, 0, 23, 32, 12, 2, 0, 0, 0, 0, 145,97, 22, 0, 0, 32, 0, 0, 8, 8, 6, 0,
+ 0, 0, 0, 0, 80, 0, 12, 0, 0, 0, 0, 0, 68, 160,4, 0, 0, 0, 0, 0, 1, 42, 6, 0, 0, 0, 0, 0, 68, 32, 4, 2, 0, 0, 0, 0, 145,97, 16, 0,
+ 0, 0, 0, 0, 16, 32, 14, 0, 0, 0, 0, 0, 97, 8, 12, 2, 0, 0, 0, 0, 65, 33, 8, 0, 0, 0, 0, 0, 68, 8, 0, 2, 0, 0, 0, 0, 0, 8, 26, 1,
+ 0, 0, 0, 0, 22, 32, 0, 0, 0, 0, 0, 0, 17, 73, 24, 0, 0, 0, 0, 0, 68, 1, 72, 0, 0, 0, 0, 0, 16, 1, 18, 2, 0, 0, 0, 0, 2, 0, 132,0,
+ 0, 0, 0, 0, 84, 0, 0, 2, 0, 32, 0, 0, 196,48, 4, 0, 0, 0, 0, 0, 149,169,28, 2, 0, 0, 0, 0, 49, 49, 6, 0, 0, 0, 0, 0, 149,64, 30, 0,
+ 0, 32, 0, 0, 8, 24, 6, 0, 0, 64, 0, 0, 156,173,50, 1, 0, 0, 0, 0, 54, 48, 178,0, 0, 0, 0, 0, 32, 1, 0, 3, 0, 0, 0, 0, 2, 16, 12, 0,
+ 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 154,0, 8, 0, 0, 0, 24, 0, 36, 0, 0, 0, 0, 32, 0, 0, 16, 2, 42, 0, 0, 0, 0, 0, 2, 16, 8, 2,
+ 0, 96, 0, 0, 66, 37, 160,0, 0, 16, 0, 0, 34, 1, 0, 1, 0, 64, 17, 0, 0, 0, 0, 0, 0, 32, 2, 0, 32, 64, 4, 0, 0, 0, 0, 0, 223,255,174,2,
+ 0, 0, 0, 0, 110,170,30, 0, 0, 0, 0, 0, 9, 96, 16, 0, 0, 0, 0, 0, 146,64, 18, 0, 0, 0, 0, 0, 149,69, 30, 0, 0, 0, 0, 0, 16, 33, 6, 1,
+ 0, 32, 0, 0, 16, 1, 36, 1, 0, 0, 0, 0, 21, 96, 0, 1, 0, 64, 0, 0, 145,89, 18, 3, 0, 0, 0, 0, 12, 40, 22, 0, 0, 0, 0, 0, 16, 72, 12, 0,
+ 0, 32, 0, 0, 84, 16, 12, 0, 0, 0, 0, 0, 203,43, 95, 1, 0, 0, 0, 0, 144,24, 0, 0, 0, 0, 0, 0, 80, 32, 12, 0, 0, 0, 0, 0, 17, 172,14, 0,
+ 0, 0, 0, 0, 132,96, 12, 2, 0, 0, 0, 0, 49, 129,4, 0, 0, 0, 0, 0, 81, 105,16, 1, 0, 0, 0, 0, 6, 129,0, 0, 0, 0, 0, 0, 1, 2, 0, 1,
+ 0, 0, 0, 0, 157,127,40, 0, 0, 0, 0, 0, 0, 33, 14, 1, 0, 0, 0, 0, 17, 97, 80, 0, 0, 32, 0, 0, 252,249,47, 0, 0, 0, 0, 0, 2, 192,56, 0,
+ 0, 0, 0, 0, 2, 32, 48, 0, 0, 0, 0, 0, 24, 65, 56, 0, 0, 0, 0, 0, 25, 1, 14, 0, 0, 0, 0, 0, 236,184,46, 0, 0, 0, 0, 0, 53, 32, 0, 0,
+ 0, 0, 0, 0, 223,111,30, 3, 0, 0, 0, 0, 64, 8, 12, 1, 0, 0, 0, 0, 81, 8, 14, 1, 0, 0, 0, 0, 53, 96, 8, 0, 0, 0, 0, 0, 0, 8, 130,0,
+ 0, 32, 0, 0, 17, 192,4, 0, 0, 112,44, 0, 64, 16, 4, 0, 0, 0, 0, 0, 93, 69, 26, 2, 0, 0, 0, 0, 64, 56, 0, 1, 0, 0, 0, 0, 21, 64, 12, 0,
+ 0, 0, 0, 0, 24, 40, 4, 0, 0, 0, 0, 0, 151,101,124,0, 0, 0, 0, 0, 64, 12, 4, 1, 0, 0, 0, 0, 70, 64, 8, 0, 0, 0, 0, 0, 4, 0, 54, 0,
+ 0, 0, 0, 0, 145,69, 26, 1, 0, 0, 0, 0, 80, 184,14, 0, 0, 0, 0, 0, 0, 36, 12, 1, 0, 0, 0, 0, 0, 1, 8, 2, 0, 0, 0, 0, 3, 76, 6, 2,
+ 0, 0, 0, 0, 20, 8, 12, 0, 0, 0, 0, 0, 132,40, 134,0, 0, 0, 0, 0, 4, 37, 6, 0, 0, 0, 0, 0, 29, 224,14, 0, 0, 32, 0, 0, 17, 65, 0, 0,
+ 0, 4, 0, 0, 21, 33, 16, 2, 0, 0, 0, 0, 132,36, 1, 3, 0, 0, 0, 0, 96, 0, 32, 0, 0, 0, 0, 0, 33, 64, 0, 0, 0, 0, 0, 0, 21, 75, 12, 0,
+ 0, 0, 0, 0, 141,32, 4, 0, 0, 96, 8, 0, 1, 73, 32, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 36, 0, 0, 0, 0, 0, 40, 0, 64, 0,
+ 0, 0, 0, 0, 222,255,254,3, 0, 0, 0, 0, 21, 69, 20, 0, 0, 0, 0, 0, 9, 69, 0, 0, 0, 0, 0, 0, 72, 12, 8, 0, 0, 0, 0, 0, 0, 12, 8, 2,
+ 0, 0, 0, 0, 80, 144,4, 2, 0, 0, 0, 0, 76, 168,174,0, 0, 0, 0, 0, 8, 88, 4, 0, 0, 0, 0, 0, 0, 33, 40, 0, 0, 4, 0, 0, 223,253,60, 3,
+ 0, 0, 0, 0, 144,81, 4, 0, 0, 0, 0, 0, 40, 0, 32, 0, 0, 0, 0, 0, 19, 17, 22, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 4, 0, 0, 4, 0, 8, 0,
+ 0, 0, 0, 0, 17, 1, 22, 2, 0, 96, 16, 0, 32, 0, 36, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,36, 78, 0, 0, 0, 0, 0, 1, 196,180,0,
+ 0, 0, 0, 0, 20, 64, 8, 0, 0, 0, 0, 0, 72, 48, 2, 0, 0, 224,4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,16, 8, 0, 0, 0, 0, 0, 215,253,92, 0,
+ 0, 0, 0, 0, 18, 4, 8, 0, 0, 0, 0, 0, 210,149,13, 0, 0, 0, 0, 0, 145,65, 14, 0, 0, 0, 0, 0, 68, 40, 4, 0, 0, 32, 0, 0, 0, 36, 0, 0,
+ 0, 0, 0, 0, 8, 0, 22, 0, 0, 0, 4, 0, 0, 16, 2, 0, 0, 0, 0, 0, 19, 65, 4, 1, 0, 0, 0, 0, 10, 33, 8, 2, 0, 64, 0, 0, 24, 0, 16, 0,
+ 0, 0, 0, 0, 17, 34, 0, 0, 0, 4, 0, 0, 17, 3, 0, 1, 0, 0, 0, 0, 64, 0, 40, 0, 0, 0, 0, 0, 144,108,18, 0, 0, 0, 0, 0, 84, 109,10, 1,
+ 0, 0, 0, 0, 68, 173,40, 0, 0, 32, 0, 0, 64, 130,0, 0, 0, 0, 0, 0, 195,3, 44, 0, 0, 244,25, 64, 255,255,255,3, 0, 0, 0, 0, 21, 0, 66, 0,
+ 0, 64, 1, 0, 0, 0, 64, 0, 0, 0, 0, 0, 229,40, 4, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 149,76, 9, 1, 0, 0, 0, 0, 1, 64, 28, 0,
+ 0, 0, 0, 0, 185,125,20, 2, 0, 0, 0, 0, 10, 56, 2, 0, 0, 0, 0, 0, 68, 8, 8, 1, 0, 0, 0, 0, 57, 8, 24, 0, 0, 0, 0, 0, 81, 121,30, 1,
+ 0, 0, 0, 0, 147,5, 0, 0, 0, 0, 0, 0, 155,233,14, 0, 0, 0, 0, 0, 82, 16, 21, 0, 0, 0, 0, 0, 107,60, 46, 0, 0, 0, 0, 0, 16, 21, 70, 0,
+ 16, 0, 0, 0, 145,21, 70, 2, 0, 0, 0, 0, 2, 16, 4, 1, 0, 0, 0, 0, 162,56, 22, 1, 0, 0, 0, 0, 16, 65, 0, 2, 0, 0, 0, 0, 128,68, 16, 2,
+ 0, 0, 0, 0, 147,113,38, 0, 0, 32, 0, 0, 4, 32, 66, 0, 0, 0, 0, 0, 32, 224,16, 0, 0, 0, 0, 0, 80, 48, 14, 3, 0, 0, 0, 0, 76, 32, 0, 2,
+ 0, 0, 0, 0, 25, 121,92, 0, 0, 96, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 115,247,70, 1, 0, 0, 0, 0, 22, 36, 22, 0, 0, 0, 0, 0, 12, 32, 14, 1,
+ 0, 0, 0, 0, 49, 0, 8, 0, 0, 0, 0, 0, 4, 224,66, 0, 0, 0, 0, 0, 149,65, 72, 0, 0, 0, 0, 0, 144,114,6, 2, 0, 160,0, 0, 0, 16, 4, 0,
+ 0, 0, 0, 0, 140,64, 0, 0, 0, 0, 0, 0, 131,209,4, 0, 0, 0, 0, 0, 127,109,46, 3, 0, 0, 0, 0, 23, 72, 4, 0, 0, 0, 0, 0, 2, 16, 6, 0,
+ 0, 0, 0, 0, 20, 9, 8, 0, 0, 0, 0, 0, 19, 205,0, 0, 0, 160,0, 0, 255,253,78, 3, 0, 0, 0, 0, 145,89, 70, 0, 0, 0, 0, 0, 193,33, 4, 2,
+ 0, 0, 0, 0, 4, 104,4, 0, 0, 0, 0, 0, 4, 0, 66, 0, 0, 0, 0, 0, 19, 77, 28, 0, 0, 0, 0, 0, 23, 69, 12, 0, 0, 0, 0, 0, 44, 12, 6, 1,
+ 0, 0, 0, 0, 17, 73, 12, 0, 0, 32, 0, 0, 40, 0, 12, 0, 0, 0, 0, 0, 20, 104,128,0, 0, 0, 0, 0, 133,209,8, 2, 0, 0, 0, 0, 0, 16, 80, 0,
+ 0, 0, 0, 0, 151,81, 4, 1, 0, 4, 0, 0, 157,253,28, 3, 0, 4, 0, 0, 23, 253,26, 1, 0, 0, 0, 0, 0, 148,2, 0, 0, 0, 0, 0, 20, 60, 24, 0,
+ 0, 0, 0, 0, 42, 8, 70, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 181,44, 94, 2, 0, 0, 0, 0, 128,32, 22, 0, 0, 32, 0, 0, 57, 81, 24, 0,
+ 0, 32, 0, 0, 246,153,108,1, 0, 32, 0, 0, 128,197,8, 0, 0, 48, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 124,164,76, 0, 0, 0, 0, 0, 17, 145,2, 1,
+ 0, 0, 0, 0, 104,40, 6, 0, 0, 0, 0, 0, 17, 25, 64, 1, 0, 64, 0, 0, 127,248,76, 0, 0, 32, 1, 0, 135,20, 106,0, 16, 0, 0, 0, 255,191,254,1,
+ 0, 0, 0, 0, 106,172,46, 0, 0, 0, 0, 0, 0, 0, 134,0, 0, 0, 0, 0, 25, 9, 6, 1, 0, 32, 0, 0, 179,25, 100,0, 0, 4, 0, 0, 214,221,30, 2,
+ 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 144,16, 64, 0, 0, 0, 0, 0, 88, 121,68, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 32, 0, 0, 8, 0, 68, 0,
+ 0, 0, 0, 0, 222,189,46, 2, 0, 32, 1, 0, 145,81, 4, 1, 0, 0, 0, 0, 16, 1, 20, 1, 0, 0, 0, 0, 208,121,66, 0, 0, 0, 0, 0, 19, 60, 26, 0,
+ 0, 0, 0, 0, 144,25, 68, 0, 0, 0, 0, 0, 223,188,78, 2, 0, 0, 0, 0, 18, 16, 8, 0, 0, 0, 0, 0, 145,120,0, 0, 0, 0, 0, 0, 243,29, 14, 2,
+ 0, 0, 0, 0, 250,181,12, 2, 0, 0, 0, 0, 170,0, 4, 0, 0, 0, 0, 0, 82, 25, 0, 0, 0, 0, 0, 0, 144,52, 0, 2, 0, 0, 0, 0, 47, 188,76, 2,
+ 0, 112,27, 0, 8, 0, 4, 0, 0, 0, 0, 0, 159,121,20, 0, 0, 0, 0, 0, 2, 128,40, 0, 0, 0, 0, 0, 148,81, 4, 3, 0, 0, 0, 0, 131,144,0, 1,
+ 0, 0, 0, 0, 221,125,30, 2, 0, 0, 0, 0, 144,13, 0, 0, 0, 0, 0, 0, 17, 73, 14, 3, 0, 0, 0, 0, 2, 45, 0, 0, 0, 0, 0, 0, 16, 28, 8, 0,
+ 0, 0, 0, 0, 148,8, 64, 2, 0, 96, 0, 0, 122,124,94, 1, 0, 0, 0, 0, 4, 0, 138,0, 0, 96, 0, 0, 144,16, 4, 3, 0, 0, 0, 0, 16, 16, 34, 0,
+ 0, 32, 0, 0, 30, 108,12, 0, 0, 0, 0, 0, 16, 121,0, 0, 0, 0, 0, 0, 128,25, 4, 0, 0, 32, 0, 0, 247,219,102,0, 0, 0, 0, 0, 10, 8, 64, 0,
+ 0, 0, 0, 0, 138,0, 2, 0, 0, 0, 0, 0, 226,56, 96, 0, 0, 0, 0, 0, 161,64, 0, 0, 0, 0, 0, 0, 157,220,76, 2, 0, 0, 0, 0, 19, 33, 4, 0,
+ 0, 0, 0, 0, 48, 40, 0, 0, 0, 0, 0, 0, 251,60, 2, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 0, 25, 69, 88, 1, 0, 0, 0, 0, 140,189,14, 2,
+ 16, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 0, 17, 9, 8, 0, 0, 0, 0, 0, 32, 0, 42, 1, 0, 0, 0, 0, 48, 0, 6, 0, 16, 0, 0, 0, 29, 105,92, 1,
+ 0, 0, 0, 0, 12, 24, 38, 1, 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 29, 40, 74, 1, 0, 0, 0, 0, 54, 73, 4, 0, 0, 0, 0, 0, 0, 9, 8, 2,
+ 0, 0, 0, 0, 159,83, 84, 0, 0, 0, 0, 0, 29, 141,8, 0, 16, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 35, 65, 48, 0, 0, 0, 0, 0, 128,0, 12, 2,
+ 0, 0, 0, 0, 110,184,14, 2, 0, 0, 0, 0, 26, 8, 4, 0, 0, 0, 0, 0, 20, 33, 0, 1, 0, 0, 0, 0, 0, 157,12, 0, 0, 0, 0, 0, 16, 193,64, 0,
+ 0, 0, 0, 0, 146,252,8, 0, 0, 0, 0, 0, 138,0, 6, 0, 0, 0, 0, 0, 247,125,110,0, 0, 32, 0, 0, 239,249,78, 1, 0, 0, 0, 0, 20, 225,8, 0,
+ 0, 0, 0, 0, 17, 89, 16, 1, 0, 0, 0, 0, 8, 52, 10, 0, 16, 0, 0, 0, 31, 221,6, 0, 0, 0, 0, 0, 129,16, 2, 0, 0, 0, 0, 0, 128,32, 4, 1,
+ 0, 0, 0, 0, 0, 216,4, 0, 0, 0, 0, 0, 48, 9, 8, 0, 16, 0, 0, 0, 27, 48, 12, 1, 0, 0, 0, 0, 17, 128,4, 0, 16, 0, 0, 0, 16, 64, 0, 0,
+ 0, 0, 0, 0, 127,255,254,2, 0, 0, 0, 0, 16, 25, 14, 0, 0, 0, 0, 0, 177,29, 84, 0, 0, 0, 0, 0, 8, 56, 14, 1, 0, 0, 0, 0, 219,123,10, 0,
+ 0, 0, 0, 0, 16, 128,64, 0, 0, 0, 0, 0, 66, 120,70, 0, 0, 0, 0, 0, 207,56, 78, 0, 0, 0, 0, 0, 16, 16, 2, 1, 0, 0, 0, 0, 128,1, 68, 0,
+ 0, 0, 0, 0, 73, 69, 16, 0, 0, 0, 0, 0, 147,4, 4, 0, 0, 0, 0, 0, 24, 16, 20, 2, 0, 0, 0, 0, 20, 80, 8, 0, 0, 0, 0, 0, 18, 56, 12, 0,
+ 0, 0, 0, 0, 128,56, 2, 0, 0, 0, 0, 0, 2, 65, 0, 2, 0, 0, 0, 0, 251,57, 78, 0, 0, 0, 0, 0, 144,73, 12, 0, 0, 0, 0, 0, 0, 184,12, 0,
+ 0, 0, 0, 0, 255,61, 30, 1, 0, 0, 0, 0, 128,65, 16, 2, 0, 32, 0, 0, 183,121,78, 0, 0, 32, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 49, 6, 1,
+ 0, 0, 0, 0, 6, 48, 6, 1, 0, 4, 0, 0, 247,245,70, 1, 0, 0, 0, 0, 26, 49, 2, 0, 0, 0, 0, 0, 120,48, 14, 1, 0, 0, 0, 0, 147,0, 4, 0,
+ 0, 32, 0, 0, 119,56, 44, 0, 0, 32, 0, 0, 0, 48, 2, 0, 0, 240,29, 0, 1, 83, 4, 0, 0, 32, 0, 0, 18, 192,40, 0, 0, 0, 0, 0, 152,40, 8, 0,
+ 0, 0, 0, 0, 14, 32, 80, 0, 0, 48, 0, 0, 2, 0, 4, 0, 0, 32, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 114,67, 6, 2, 0, 0, 0, 0, 16, 73, 22, 0,
+ 0, 168,0, 0, 255,109,206,2, 0, 16, 0, 0, 179,219,94, 1, 0, 0, 0, 0, 8, 8, 134,0, 0, 0, 0, 0, 0, 48, 96, 0, 0, 96, 32, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 132,192,88, 0, 0, 0, 0, 0, 194,29, 14, 0, 0, 0, 0, 0, 191,121,14, 2, 0, 0, 0, 0, 8, 33, 10, 0, 0, 32, 0, 0, 0, 128,8, 0,
+ 0, 0, 0, 0, 53, 36, 0, 0, 0, 0, 0, 0, 48, 73, 4, 1, 0, 0, 0, 0, 2, 146,4, 0, 0, 0, 0, 0, 2, 144,6, 1, 0, 0, 0, 0, 66, 48, 74, 1,
+ 0, 0, 0, 0, 52, 164,0, 0, 0, 0, 0, 0, 180,92, 8, 0, 0, 224,36, 0, 16, 64, 4, 0, 0, 0, 0, 0, 144,74, 2, 2, 0, 112,32, 0, 242,25, 14, 0,
+ 0, 48, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 193,2, 0, 0, 0, 0, 0, 125,69, 14, 1, 0, 0, 0, 0, 10, 56, 12, 0, 0, 0, 0, 0, 129,2, 0, 2,
+ 0, 0, 0, 0, 158,253,76, 2, 0, 0, 0, 0, 205,56, 6, 0, 0, 0, 0, 0, 51, 81, 24, 1, 0, 0, 0, 0, 183,125,126,2, 0, 32, 0, 0, 21, 1, 0, 1,
+ 0, 0, 0, 0, 185,105,6, 1, 0, 0, 0, 0, 16, 48, 2, 1, 0, 0, 0, 0, 210,125,70, 1, 0, 0, 0, 0, 8, 44, 2, 0, 0, 0, 0, 0, 1, 4, 64, 2,
+ 0, 32, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 44, 32, 0, 2, 0, 0, 0, 0, 1, 0, 0, 3, 0, 80, 0, 0, 21, 1, 0, 0, 0, 0, 0, 0, 19, 85, 16, 1,
+ 0, 0, 0, 0, 5, 8, 0, 0, 0, 0, 0, 0, 251,255,126,3, 0, 0, 0, 0, 2, 1, 20, 0, 0, 0, 0, 0, 17, 65, 4, 2, 0, 0, 0, 0, 160,136,14, 0,
+ 0, 0, 0, 0, 32, 4, 0, 2, 0, 0, 0, 0, 120,0, 70, 0, 0, 0, 0, 0, 29, 33, 8, 0, 0, 0, 0, 0, 21, 68, 0, 1, 0, 0, 0, 0, 255,253,44, 2,
+ 0, 240,36, 0, 121,217,6, 0, 0, 0, 0, 0, 40, 16, 68, 0, 0, 0, 0, 0, 24, 12, 8, 0, 0, 0, 0, 0, 144,18, 0, 2, 0, 0, 0, 0, 12, 48, 0, 0,
+ 0, 32, 0, 0, 128,9, 4, 0, 16, 0, 0, 0, 72, 36, 12, 0, 0, 32, 0, 0, 50, 9, 68, 0, 0, 0, 0, 0, 254,253,76, 2, 0, 32, 0, 0, 255,157,102,1,
+ 0, 0, 0, 0, 0, 24, 32, 0, 0, 0, 0, 0, 32, 80, 64, 0, 0, 0, 0, 0, 130,81, 8, 1, 0, 0, 0, 0, 16, 0, 72, 0, 0, 0, 0, 0, 191,152,126,1,
+ 0, 0, 0, 0, 0, 48, 34, 1, 0, 0, 0, 0, 62, 124,14, 0, 0, 0, 0, 0, 16, 137,20, 2, 0, 0, 0, 0, 251,217,20, 0, 0, 0, 0, 0, 130,0, 2, 0,
+ 0, 32, 0, 0, 16, 16, 12, 0, 0, 0, 0, 0, 128,192,24, 0, 0, 0, 0, 0, 25, 65, 0, 0, 0, 32, 0, 0, 4, 40, 100,0, 0, 0, 0, 0, 145,9, 92, 1,
+ 0, 128,0, 0, 17, 1, 0, 1, 0, 0, 0, 0, 176,8, 8, 0, 0, 0, 0, 0, 48, 129,4, 0, 0, 0, 0, 0, 128,89, 0, 2, 0, 0, 0, 0, 17, 9, 64, 1,
+ 0, 0, 0, 0, 128,21, 0, 0, 16, 0, 0, 0, 1, 32, 4, 0, 0, 32, 0, 0, 16, 12, 4, 0, 0, 64, 0, 0, 161,65, 36, 0, 0, 0, 0, 0, 21, 65, 144,3,
+ 0, 0, 0, 0, 68, 169,140,1, 0, 0, 0, 0, 29, 36, 140,1, 0, 0, 4, 0, 16, 8, 0, 0, 0, 0, 0, 0, 192,8, 0, 0, 0, 0, 0, 0, 16, 80, 32, 0,
+ 0, 32, 2, 0, 8, 0, 4, 0, 0, 0, 0, 0, 2, 64, 68, 0, 0, 0, 0, 0, 144,1, 12, 0, 0, 40, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 22, 32, 24, 0,
+ 0, 0, 0, 0, 56, 8, 68, 0, 0, 0, 0, 0, 10, 192,128,0, 0, 32, 0, 0, 20, 0, 1, 2, 0, 0, 0, 0, 5, 209,4, 0, 0, 0, 33, 0, 158,239,142,3,
+ 0, 0, 0, 0, 96, 1, 4, 0, 0, 0, 0, 0, 72, 32, 4, 0, 0, 0, 0, 0, 72, 24, 28, 2, 0, 0, 0, 0, 133,0, 12, 0, 0, 0, 0, 0, 184,67, 66, 0,
+ 0, 160,0, 0, 32, 64, 192,0, 0, 32, 8, 0, 0, 0, 64, 0, 0, 0, 0, 0, 95, 124,46, 2, 0, 0, 0, 0, 16, 104,2, 0, 0, 0, 0, 0, 27, 101,8, 1,
+ 0, 244,11, 0, 183,251,255,3, 0, 64, 0, 0, 0, 0, 128,1, 0, 0, 0, 0, 4, 61, 32, 1, 0, 128,0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 128,104,130,0,
+ 0, 0, 0, 0, 68, 176,0, 0, 0, 0, 0, 0, 16, 65, 128,0, 0, 0, 0, 0, 129,1, 1, 0, 16, 0, 0, 0, 5, 121,34, 2, 0, 0, 0, 0, 128,112,0, 0,
+ 0, 0, 0, 0, 66, 0, 0, 3, 0, 0, 0, 0, 0, 144,64, 1, 0, 0, 0, 0, 192,3, 0, 1, 0, 0, 0, 0, 0, 1, 160,0, 0, 0, 0, 0, 17, 136,0, 0,
+ 0, 0, 0, 0, 20, 8, 2, 0, 0, 64, 0, 0, 0, 0, 1, 2, 0, 160,0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 148,4, 50, 0, 0, 0, 1, 0, 17, 0, 0, 0,
+ 0, 0, 0, 0, 53, 0, 128,3, 0, 32, 44, 0, 0, 147,228,3, 0, 0, 0, 0, 128,72, 8, 2, 16, 0, 33, 0, 255,255,255,3, 0, 0, 0, 0, 209,20, 20, 0,
+ 0, 0, 0, 0, 129,4, 2, 0, 0, 0, 0, 0, 133,68, 16, 0, 0, 0, 0, 0, 16, 72, 64, 0, 0, 0, 0, 0, 25, 69, 0, 0, 0, 0, 0, 0, 64, 12, 0, 1,
+ 0, 0, 0, 0, 49, 0, 24, 0, 0, 0, 0, 0, 9, 105,74, 1, 0, 0, 0, 0, 17, 93, 20, 0, 0, 0, 0, 0, 10, 24, 12, 2, 0, 0, 0, 0, 131,245,20, 0,
+ 0, 0, 0, 0, 200,116,28, 2, 16, 0, 0, 0, 93, 101,28, 0, 0, 0, 0, 0, 68, 49, 0, 0, 0, 0, 0, 0, 0, 4, 12, 3, 0, 0, 0, 0, 2, 64, 8, 2,
+ 0, 0, 0, 0, 0, 36, 14, 0, 0, 240,41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 16, 68, 0, 0, 0, 0, 0, 1, 1, 2, 2, 16, 0, 0, 0, 75, 125,66, 2,
+ 0, 0, 0, 0, 27, 24, 4, 0, 0, 0, 0, 0, 145,53, 28, 0, 0, 0, 0, 0, 136,101,14, 0, 0, 0, 0, 0, 1, 97, 16, 0, 0, 0, 0, 0, 16, 164,4, 0,
+ 0, 0, 0, 0, 9, 65, 0, 2, 0, 0, 0, 0, 34, 2, 2, 0, 0, 0, 0, 0, 202,52, 14, 0, 0, 32, 0, 0, 130,16, 6, 0, 0, 68, 0, 0, 82, 105,76, 1,
+ 0, 0, 0, 0, 16, 80, 12, 0, 0, 0, 0, 0, 196,4, 0, 0, 0, 0, 0, 0, 128,40, 4, 0, 0, 0, 0, 0, 155,169,58, 0, 0, 224,26, 0, 164,7, 12, 0,
+ 0, 0, 0, 0, 76, 97, 12, 2, 0, 0, 0, 0, 128,56, 96, 0, 0, 0, 0, 0, 218,93, 14, 0, 16, 40, 32, 0, 144,149,28, 1, 0, 0, 0, 0, 0, 17, 12, 2,
+ 0, 0, 0, 0, 221,40, 128,2, 0, 0, 0, 0, 160,0, 8, 2, 0, 32, 0, 0, 0, 0, 32, 1, 0, 4, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 32, 0, 10, 0,
+ 0, 0, 0, 0, 96, 40, 0, 0, 0, 0, 0, 0, 93, 188,204,2, 0, 0, 0, 0, 137,0, 16, 0, 0, 0, 0, 0, 2, 2, 20, 0, 0, 64, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 223,255,255,3, 0, 0, 0, 0, 0, 4, 36, 0, 0, 0, 0, 0, 128,69, 18, 0, 0, 32, 4, 0, 8, 0, 0, 0, 0, 0, 0, 0, 145,1, 16, 1,
+ 0, 0, 0, 0, 128,1, 12, 3, 0, 0, 0, 0, 93, 101,12, 0, 0, 0, 0, 0, 8, 84, 0, 3, 0, 0, 0, 0, 16, 8, 20, 2, 0, 0, 0, 0, 128,160,0, 0,
+ 0, 0, 0, 0, 95, 101,24, 0, 0, 0, 0, 0, 16, 17, 44, 0, 0, 0, 0, 0, 144,4, 28, 0, 0, 32, 0, 0, 153,116,8, 3, 16, 0, 0, 0, 89, 252,126,2,
+ 0, 0, 0, 0, 145,33, 0, 0, 0, 0, 0, 0, 85, 5, 12, 0, 0, 32, 0, 0, 154,92, 7, 0, 0, 0, 0, 0, 17, 5, 28, 0, 0, 32, 0, 0, 72, 16, 16, 0,
+ 0, 0, 16, 0, 1, 3, 2, 0, 0, 0, 0, 0, 83, 9, 13, 0, 0, 32, 0, 0, 12, 160,26, 1, 0, 0, 0, 0, 223,255,110,3, 0, 0, 0, 0, 133,4, 0, 0,
+ 0, 0, 0, 0, 128,32, 8, 2, 0, 0, 0, 0, 93, 45, 24, 0, 16, 0, 0, 0, 17, 129,0, 0, 0, 0, 0, 0, 21, 85, 8, 1, 0, 0, 0, 0, 149,69, 24, 0,
+ 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 17, 0, 1, 0, 0, 168,0, 0, 223,255,255,3, 0, 96, 0, 0, 0, 0, 128,2, 0, 0, 4, 0, 0, 0, 0, 2,
+ 0, 0, 8, 0, 0, 0, 0, 2, 0, 0, 0, 0, 19, 77, 2, 0, 0, 0, 0, 0, 0, 40, 66, 1, 0, 0, 0, 0, 149,4, 0, 2, 0, 0, 0, 0, 17, 16, 10, 0,
+ 0, 0, 0, 0, 25, 97, 2, 0, 0, 0, 0, 0, 0, 4, 66, 0, 0, 0, 0, 0, 64, 0, 8, 2, 0, 0, 0, 0, 161,1, 0, 0, 0, 0, 0, 0, 145,72, 22, 0,
+ 0, 0, 0, 0, 12, 48, 10, 0, 0, 0, 0, 0, 14, 32, 14, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 145,69, 18, 1, 0, 0, 0, 0, 89, 93, 88, 0,
+ 0, 0, 0, 0, 0, 16, 2, 2, 0, 0, 0, 0, 125,111,28, 3, 0, 0, 0, 0, 16, 0, 42, 0, 0, 0, 0, 0, 209,8, 0, 0, 0, 64, 0, 0, 177,193,18, 0,
+ 0, 32, 0, 0, 0, 8, 32, 0, 1, 32, 0, 0, 0, 0, 193,0, 0, 96, 0, 0, 0, 0, 128,0, 0, 128,0, 0, 0, 0, 65, 0, 0, 0, 1, 0, 0, 0, 64, 0,
+ 0, 0, 0, 0, 29, 109,27, 3, 0, 0, 0, 0, 192,32, 8, 2, 0, 0, 0, 0, 2, 60, 8, 0, 0, 0, 0, 0, 1, 132,142,0, 0, 0, 0, 0, 1, 68, 16, 0,
+ 0, 0, 0, 0, 71, 32, 4, 0, 0, 0, 0, 0, 12, 8, 12, 0, 0, 0, 0, 0, 140,0, 4, 0, 0, 0, 0, 0, 25, 33, 0, 0, 0, 0, 0, 0, 80, 36, 0, 0,
+ 0, 0, 0, 0, 112,0, 128,0, 0, 0, 0, 0, 17, 64, 18, 2, 16, 0, 0, 0, 255,253,191,3, 0, 0, 0, 0, 64, 40, 34, 0, 0, 160,0, 0, 36, 0, 4, 0,
+ 0, 0, 0, 0, 66, 60, 4, 0, 0, 0, 0, 0, 24, 128,0, 0, 0, 0, 0, 0, 88, 56, 12, 0, 0, 0, 0, 0, 64, 8, 20, 2, 0, 0, 0, 0, 25, 127,8, 0,
+ 0, 0, 0, 0, 8, 0, 4, 3, 0, 0, 0, 0, 12, 36, 0, 2, 0, 0, 0, 0, 1, 4, 4, 1, 0, 0, 0, 0, 51, 207,16, 0, 0, 0, 0, 0, 91, 101,12, 2,
+ 0, 64, 0, 0, 128,0, 0, 0, 0, 0, 0, 0, 80, 32, 6, 2, 0, 0, 0, 0, 176,132,0, 0, 0, 0, 0, 0, 199,213,58, 2, 0, 48, 0, 0, 148,17, 12, 0,
+ 0, 0, 0, 0, 5, 0, 8, 1, 0, 0, 0, 0, 17, 73, 12, 2, 0, 0, 0, 0, 25, 67, 48, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 64, 2, 0, 1,
+ 0, 64, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 64, 136,32, 0, 0, 0, 0, 0, 192,0, 4, 2, 0, 0, 0, 0, 193,101,0, 2, 0, 0, 0, 0, 255,252,46, 3,
+ 0, 0, 0, 0, 8, 4, 18, 0, 0, 0, 0, 0, 206,60, 14, 0, 0, 0, 0, 0, 48, 72, 0, 0, 0, 0, 0, 0, 19, 4, 4, 0, 0, 0, 0, 0, 24, 36, 0, 0,
+ 0, 0, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, 65, 89, 0, 2, 0, 0, 0, 0, 0, 9, 16, 1, 0, 0, 0, 0, 29, 109,0, 0, 0, 0, 0, 0, 125,101,12, 2,
+ 0, 0, 0, 0, 81, 72, 0, 0, 0, 32, 0, 0, 45, 140,6, 2, 0, 0, 0, 0, 7, 5, 0, 0, 0, 0, 0, 0, 145,64, 12, 2, 0, 0, 0, 0, 16, 88, 0, 0,
+ 0, 0, 0, 0, 17, 193,144,0, 0, 0, 0, 0, 255,121,31, 3, 0, 0, 0, 0, 10, 8, 8, 1, 0, 0, 0, 0, 66, 72, 16, 0, 0, 0, 0, 0, 25, 121,24, 0,
+ 0, 0, 0, 0, 17, 113,0, 0, 0, 0, 0, 0, 18, 64, 16, 0, 0, 0, 0, 0, 89, 5, 8, 0, 0, 0, 0, 0, 16, 188,142,0, 0, 0, 0, 0, 95, 117,10, 2,
+ 0, 0, 0, 0, 5, 28, 10, 0, 0, 0, 0, 0, 33, 0, 128,0, 0, 0, 0, 0, 17, 3, 128,0, 0, 0, 0, 0, 53, 81, 128,0, 0, 0, 1, 0, 4, 0, 130,0,
+ 0, 0, 2, 0, 0, 0, 128,0, 0, 0, 0, 0, 17, 5, 2, 0, 0, 0, 0, 0, 1, 36, 0, 2, 0, 0, 0, 0, 132,12, 0, 0, 0, 0, 0, 0, 128,8, 6, 0,
+ 0, 0, 0, 0, 32, 0, 70, 0, 0, 0, 0, 0, 49, 29, 24, 0, 0, 0, 0, 0, 3, 208,68, 0, 0, 0, 0, 0, 24, 69, 0, 0, 0, 0, 0, 0, 149,117,0, 0,
+ 0, 0, 0, 0, 50, 64, 0, 0, 0, 0, 4, 0, 17, 65, 8, 0, 0, 0, 0, 0, 196,32, 2, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 114,0, 0, 0,
+ 0, 0, 0, 0, 85, 40, 0, 0, 0, 0, 0, 0, 34, 32, 0, 0, 0, 32, 16, 0, 69, 0, 0, 0, 0, 160,0, 0, 13, 0, 33, 0, 0, 0, 1, 0, 0, 0, 1, 2,
+ 0, 32, 1, 0, 35, 0, 33, 0, 0, 160,0, 0, 0, 16, 0, 0, 0, 36, 0, 0, 1, 16, 0, 2, 0, 0, 0, 0, 78, 58, 70, 0, 0, 32, 20, 0, 1, 0, 138,2,
+ 0, 32, 8, 0, 0, 0, 136,2, 0, 32, 0, 0, 0, 0, 128,2
};
+#define CHARSET_SIZE 49
#define NumLargeCounts 310
static const unsigned char EndCountLge[310] =
{
- 0, 1, 7, 2, 1, 1, 1, 1, 41, 2, 2, 2, 1, 6, 1, 2, 5, 1, 1, 5, 2, 1, 1, 57, 12, 1, 1, 3, 1, 9, 1, 1, 1, 1, 5, 1, 4, 1, 9, 1, 8,
- 2, 1, 1, 1, 1, 6, 1, 57, 13, 1, 1, 1, 3, 1, 1, 2, 9, 3, 1, 1, 1, 3, 1, 16, 1, 2, 4, 2, 1, 4, 1, 1, 2, 40, 5, 1, 13, 1, 1, 1, 7,
- 2, 5, 2, 3, 21, 1, 2, 1, 2, 1, 1, 1, 2, 28, 5, 3, 1, 3, 2, 4, 2, 4, 1, 1, 2, 33, 6, 1, 1, 4, 3, 1, 5, 6, 2, 1, 1, 1, 3, 35, 10,
- 1, 2, 7, 1, 1, 3, 7, 1, 3, 1, 15, 1, 7, 1, 1, 1, 1, 12, 4, 2, 2, 2, 28, 6, 1, 3, 4, 1, 1, 1, 4, 2, 2, 33, 9, 1, 6, 5, 1, 6, 3,
- 57, 20, 1, 1, 1, 2, 4, 1, 1, 5, 1, 7, 1, 1, 7, 1, 1, 1, 1, 9, 2, 1, 4, 18, 4, 4, 3, 4, 1, 1, 14, 1, 1, 2, 1, 1, 1, 1, 1, 45, 10,
- 1, 1, 2, 1, 1, 7, 1, 2, 1, 2, 4, 2, 1, 6, 1, 7, 2, 1, 2, 2, 3, 2, 36, 7, 12, 1, 1, 1, 1, 3, 7, 1, 3, 80, 10, 1, 2, 8, 5, 7, 8,
- 2, 1, 1, 1, 5, 1, 2, 1, 1, 4, 4, 1, 1, 12, 3, 2, 1, 1, 2, 1, 6, 1, 1, 2, 1, 34, 5, 4, 4, 1, 3, 5, 6, 2, 1, 1, 2, 8, 4, 15, 5,
+ 0, 1, 7, 2, 1, 1, 1, 1, 41, 2, 2, 2, 1, 6, 1, 2, 5, 1, 1, 5, 2, 1, 1, 57, 12, 1, 1, 3, 1, 9, 1, 1, 1, 1, 5, 1, 4, 1, 9, 1, 8,
+ 2, 1, 1, 1, 1, 6, 1, 57, 13, 1, 1, 1, 3, 1, 1, 2, 9, 3, 1, 1, 1, 3, 1, 16, 1, 2, 4, 2, 1, 4, 1, 1, 2, 40, 5, 1, 13, 1, 1, 1, 7,
+ 2, 5, 2, 3, 21, 1, 2, 1, 2, 1, 1, 1, 2, 28, 5, 3, 1, 3, 2, 4, 2, 4, 1, 1, 2, 33, 6, 1, 1, 4, 3, 1, 5, 6, 2, 1, 1, 1, 3, 35, 10,
+ 1, 2, 7, 1, 1, 3, 7, 1, 3, 1, 15, 1, 7, 1, 1, 1, 1, 12, 4, 2, 2, 2, 28, 6, 1, 3, 4, 1, 1, 1, 4, 2, 2, 33, 9, 1, 6, 5, 1, 6, 3,
+ 57, 20, 1, 1, 1, 2, 4, 1, 1, 5, 1, 7, 1, 1, 7, 1, 1, 1, 1, 9, 2, 1, 4, 18, 4, 4, 3, 4, 1, 1, 14, 1, 1, 2, 1, 1, 1, 1, 1, 45, 10,
+ 1, 1, 2, 1, 1, 7, 1, 2, 1, 2, 4, 2, 1, 6, 1, 7, 2, 1, 2, 2, 3, 2, 36, 7, 12, 1, 1, 1, 1, 3, 7, 1, 3, 80, 10, 1, 2, 8, 5, 7, 8,
+ 2, 1, 1, 1, 5, 1, 2, 1, 1, 4, 4, 1, 1, 12, 3, 2, 1, 1, 2, 1, 6, 1, 1, 2, 1, 34, 5, 4, 4, 1, 3, 5, 6, 2, 1, 1, 2, 8, 4, 15, 5,
2, 3, 1, 4, 1, 22, 5, 1, 4, 2, 1, 5, 1, 1, 2, 5, 1, 1, 1, 6, 1, 1, 1
};
static const unsigned char EndCountSml[84251] =
@@ -22815,2057 +22811,2057 @@ static const unsigned char EndCountSml[84251] =
206,114,149,107,255,53, 7, 89, 23, 49, 1, 34, 28, 80, 38, 108,174,58, 178,21, 245,74, 224,239,55, 155,37, 10, 9, 184,35, 118,106,247,100,15, 46, 191,42, 21, 222,
109,146,170,219,11, 194,159,62, 215,132,24, 166,118,168,27, 46, 131,83, 226,210,235,70, 44, 197,240,63, 130,26, 33, 201,30, 27, 231,255,221,9, 53, 253,30, 70, 177,
97, 127,202,207,49, 30, 185,147,218,61, 206,23, 55, 108,8, 181,16, 240,255,126,62, 230,100,176,141,182,123,52, 75, 9, 18, 236,176,162,82, 140,17, 14, 161,93, 218,
- 105,163,212,44, 123,121,242,113,93, 14, 24, 170,28, 214,107,34, 34, 132,66, 96, 132,28, 169,132,42, 192,62, 3, 132,45, 150,159,110,78, 194,174,198,217,57, 33, 32,
- 4, 61, 140,19, 145,157,194,138,186,158,174,158,10, 47, 217,13, 101,104,36, 77, 127,187,80, 158,118,103,40, 17, 15, 59, 174,5, 97, 63, 23, 6, 52, 12, 6, 149,77,
- 40, 51, 81, 57, 14, 121,52, 47, 50, 15, 147,145,95, 183,123,87, 69, 55, 206,181,212,87, 185,81, 176,54, 69, 8, 52, 247,125,73, 40, 137,112,121,26, 67, 36, 114,95,
- 185,173,128,75, 104,174,32, 100,62, 245,221,9, 22, 203,95, 131,22, 209,161,0, 122,51, 28, 14, 58, 245,214,215,111,114,87, 51, 156,65, 36, 113,146,34, 15, 240,80,
- 84, 49, 46, 33, 241,132,128,47, 101,62, 28, 126,139,77, 235,27, 142,4, 55, 135,240,54, 14, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 221,1, 1, 1, 1, 1, 14, 2, 1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 3, 1, 12,
- 4, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 5, 1, 2, 2, 2,
- 1, 3, 1, 1, 1, 11, 2, 1, 1, 1, 3, 2, 2, 3, 2, 2, 1, 1, 1, 10, 2, 1, 1, 1, 1, 4, 2, 2, 3, 1, 2, 15, 3, 1, 3, 3, 2, 1, 1, 5, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 1, 19, 3, 2, 6, 1, 2, 7, 10, 4, 1, 4, 1, 1, 10, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2,
- 5, 2, 13, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 10, 2, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 7, 3, 1, 3, 20,
- 1, 1, 1, 1, 3, 2, 1, 3, 1, 1, 1, 5, 1, 1, 3, 3, 1, 1, 1, 16, 1, 1, 7, 3, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 16, 3, 2, 6, 2,
- 1, 3, 2, 2, 1, 5, 2, 3, 3, 1, 1, 4, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 2, 1, 1, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 62, 36, 24, 20, 11, 5, 3, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 5, 1, 2, 1, 2, 1,
- 1, 10, 5, 4, 1, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 81, 58, 40, 34, 33, 2, 10, 11, 7, 4, 4, 6, 5, 5, 3, 3, 2, 2, 1, 1, 1,
- 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 1, 4, 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 9, 9, 2, 2, 2, 2, 1, 1, 1, 1, 6, 3, 3, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 150,133,12, 12, 12, 2, 15, 14, 14, 4, 9, 16, 16, 16, 7, 9, 18, 18, 18, 8, 17, 17, 17, 7, 14, 14, 14, 5, 9, 14, 14, 14, 5, 9, 14, 14, 14, 5,
- 13, 13, 13, 5, 8, 13, 12, 12, 12, 4, 8, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 6, 5, 2, 2, 2, 2, 1, 1, 1, 1, 1, 10, 5, 2, 2, 2,
- 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 5, 5, 4, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 8, 4, 4, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 9, 5, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 5, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 11, 5, 1, 1, 2,
- 2, 1, 1, 2, 2, 6, 1, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 3,
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 100,34, 7, 4, 2, 5, 1, 3, 2, 1, 2,
- 2, 3, 1, 1, 3, 2, 1, 1, 1, 17, 8, 4, 1, 1, 1, 3, 2, 1, 3, 1, 21, 11, 10, 8, 5, 4, 3, 2, 6, 6, 6, 5, 5, 3, 2, 1, 2, 2, 1, 1, 1,
- 2, 4, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 134,12, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 51, 2, 2, 2, 24, 18, 13, 6, 3, 1,
- 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 13, 3, 2, 2, 2, 9, 9, 6, 5, 4, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 32, 19, 2, 2, 1, 15, 14, 6, 5,
- 3, 2, 1, 1, 8, 2, 2, 2, 5, 5, 4, 3, 2, 2, 1, 8, 5, 3, 3, 2, 2, 2, 4, 3, 3, 2, 3, 2, 4, 2, 1, 1, 1, 5, 1, 1, 1, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2, 1, 10, 1, 1, 2, 2, 2, 2, 1, 25, 2, 1, 1, 2, 1, 1, 12, 8, 5, 2, 2, 1, 1, 1, 5, 3, 3, 2, 2, 1, 1, 1, 1,
- 1, 10, 2, 1, 1, 5, 4, 3, 2, 2, 2, 2, 1, 1, 3, 25, 25, 24, 4, 3, 2, 3, 2, 5, 3, 2, 11, 3, 5, 2, 2, 3, 3, 31, 27, 26, 3, 2, 4, 3, 2,
- 1, 3, 6, 3, 2, 1, 2, 2, 4, 4, 3, 2, 3, 6, 4, 4, 3, 2, 1, 5, 4, 2, 3, 3, 2, 7, 5, 5, 185,4, 3, 1, 4, 2, 2, 114,2, 1, 1, 88, 2,
- 1, 71, 20, 3, 1, 1, 5, 3, 2, 2, 5, 2, 6, 2, 8, 4, 3, 2, 4, 2, 2, 3, 2, 1, 1, 1, 3, 4, 7, 9, 5, 4, 3, 2, 3, 2, 6, 3, 2, 1, 4,
- 2, 3, 9, 4, 3, 2, 3, 2, 2, 12, 3, 2, 6, 5, 4, 3, 3, 1, 4, 3, 2, 2, 2, 2, 1, 2, 2, 8, 3, 3, 2, 1, 1, 9, 7, 6, 5, 2, 2, 2, 2,
- 1, 1, 2, 1, 12, 3, 2, 3, 2, 2, 4, 2, 23, 11, 10, 5, 4, 3, 2, 8, 6, 5, 3, 6, 4, 4, 2, 3, 5, 2, 2, 14, 5, 3, 1, 4, 2, 3, 1, 1, 1,
- 2, 4, 3, 3, 2, 2, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 4, 2, 1, 1, 27, 3, 3, 2, 20, 2, 1, 16, 2, 2, 4, 4, 3, 2, 4,
- 3, 3, 2, 1, 3, 1, 2, 2, 3, 2, 3, 2, 13, 1, 3, 2, 2, 5, 3, 3, 2, 2, 2, 2, 14, 1, 3, 3, 2, 2, 1, 1, 1, 4, 2, 1, 3, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 11, 1, 1, 1, 1, 10, 2, 2, 3, 3, 2, 2, 1, 3, 3, 2, 2, 3, 1, 1, 1, 2, 100,9, 2,
- 2, 2, 2, 9, 4, 3, 2, 1, 13, 8, 3, 3, 2, 2, 3, 2, 1, 2, 2, 1, 1, 1, 1, 5, 2, 1, 1, 1, 1, 1, 1, 13, 10, 9, 9, 4, 3, 1, 1, 1, 35,
- 1, 1, 1, 1, 1, 30, 2, 2, 2, 2, 2, 2, 22, 3, 1, 5, 2, 5, 4, 3, 1, 2, 2, 8, 1, 1, 3, 1, 1, 2, 3, 4, 1, 2, 2, 81, 9, 3, 1, 1, 1,
- 2, 7, 1, 1, 1, 3, 2, 2, 1, 5, 3, 2, 2, 1, 5, 2, 1, 1, 3, 5, 1, 1, 2, 2, 31, 6, 6, 6, 5, 3, 3, 3, 2, 2, 12, 6, 6, 3, 6, 6, 4,
- 2, 2, 2, 5, 3, 1, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 103,10, 2, 3, 2, 2, 1, 7, 2, 2, 2, 1, 1, 1, 5, 2, 2, 2, 1, 1, 1, 8, 1, 1,
- 1, 5, 2, 2, 1, 1, 1, 5, 1, 1, 1, 2, 4, 1, 4, 1, 1, 1, 50, 3, 10, 10, 10, 2, 1, 2, 3, 3, 20, 19, 18, 2, 4, 3, 2, 2, 6, 5, 3, 3, 2,
- 2, 1, 1, 1, 1, 33, 4, 3, 3, 2, 4, 4, 2, 3, 3, 1, 1, 1, 43, 10, 4, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 2, 2, 3,
- 1, 5, 1, 1, 1, 1, 3, 4, 2, 38, 7, 2, 4, 2, 5, 1, 1, 1, 1, 3, 1, 3, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 148,5, 4, 2, 1, 10,
- 3, 3, 3, 5, 5, 5, 4, 4, 3, 7, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 9, 3, 1, 23, 3, 3, 1, 2, 1, 1, 2, 1, 3, 2,
- 3, 2, 2, 2, 48, 5, 2, 2, 2, 2, 1, 1, 5, 3, 1, 4, 2, 3, 6, 2, 1, 1, 7, 2, 1, 1, 1, 1, 1, 1, 4, 3, 5, 3, 6, 2, 32, 5, 2, 2, 1,
- 3, 1, 1, 3, 1, 1, 6, 2, 1, 1, 1, 5, 2, 2, 2, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 43, 12, 4, 4, 4,
- 3, 3, 2, 2, 4, 4, 4, 3, 2, 4, 4, 4, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 3, 1, 1, 2, 2, 2, 1, 1, 6, 3, 1, 2,
- 2, 3, 3, 3, 2, 1, 1, 5, 2, 2, 2, 2, 1, 1, 2, 1, 3, 1, 1, 1, 1, 50, 11, 2, 1, 2, 1, 1, 1, 2, 1, 3, 3, 3, 3, 2, 4, 3, 2, 14, 8,
- 3, 1, 2, 2, 1, 3, 3, 1, 1, 2, 1, 4, 2, 1, 4, 3, 1, 1, 4, 2, 1, 1, 6, 1, 1, 2, 2, 1, 1, 1, 1, 1, 34, 6, 1, 3, 1, 1, 2, 2, 2,
- 2, 2, 1, 1, 10, 3, 2, 2, 4, 1, 1, 1, 2, 2, 2, 1, 1, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 5, 2, 1, 1, 1, 1, 1, 1, 1, 22, 8, 1,
- 1, 2, 1, 2, 2, 2, 2, 2, 4, 2, 1, 1, 3, 1, 1, 2, 1, 3, 1, 1, 1, 8, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24,
- 2, 1, 2, 1, 1, 1, 2, 2, 2, 3, 2, 2, 3, 2, 1, 1, 3, 1, 2, 5, 1, 2, 1, 2, 4, 4, 4, 17, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3,
- 3, 3, 3, 3, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1, 23, 7, 4, 2, 1, 1, 3, 1, 1, 2, 2, 2, 2, 7, 1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 5, 1,
- 2, 2, 2, 2, 1, 1, 1, 24, 1, 1, 1, 1, 6, 3, 3, 1, 1, 1, 5, 1, 1, 1, 1, 2, 1, 1, 3, 3, 3, 3, 7, 3, 3, 1, 2, 1, 1, 2, 1, 7, 1,
- 1, 3, 1, 1, 1, 1, 13, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 5, 4, 4, 1, 1, 38, 12, 3, 1, 1, 1, 2, 3, 1, 2, 1, 1, 1, 4, 1, 1, 1, 2, 1,
- 6, 3, 2, 2, 2, 1, 1, 12, 5, 2, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 30, 1, 1,
- 9, 1, 1, 1, 2, 2, 4, 4, 1, 1, 2, 2, 1, 1, 5, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 2, 2, 1, 1, 1, 1, 3, 1,
- 1, 1, 57, 1, 1, 1, 12, 1, 3, 3, 3, 2, 2, 1, 6, 6, 5, 4, 4, 3, 2, 2, 2, 2, 2, 2, 2, 31, 5, 5, 5, 4, 4, 3, 2, 2, 2, 1, 2, 2, 2,
- 22, 1, 1, 1, 1, 6, 6, 5, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 8, 1, 5, 4, 3, 2, 2, 2, 2, 1, 1, 1, 1, 10, 2, 2, 2, 8, 7, 7,
- 6, 2, 1, 17, 7, 1, 1, 3, 2, 2, 1, 2, 1, 1, 1, 6, 4, 4, 1, 1, 1, 2, 49, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 3, 3, 1, 1, 5, 1, 1, 1,
- 3, 2, 4, 2, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 5, 2, 2, 9, 3, 3, 4, 1, 1, 1, 9, 3, 1, 2, 1, 2, 2, 2, 1, 19, 1, 3, 1, 4,
- 2, 1, 1, 1, 6, 1, 1, 1, 3, 1, 1, 2, 1, 2, 2, 5, 1, 1, 1, 1, 1, 1, 1, 6, 2, 1, 1, 1, 2, 1, 1, 14, 4, 1, 1, 1, 1, 1, 1, 2, 2,
- 2, 1, 1, 1, 6, 2, 1, 1, 1, 3, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 4, 2, 1, 1, 1, 1, 1, 9, 4, 3, 3, 3, 2, 2, 2,
- 2, 2, 2, 3, 3, 3, 3, 2, 1, 4, 44, 26, 7, 4, 1, 1, 1, 1, 1, 1, 2, 3, 2, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 2, 7, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 32, 7, 3, 3, 3, 1, 1, 6, 2, 4, 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 2, 2, 1, 1, 4, 1, 1,
- 1, 1, 1, 3, 3, 3, 3, 2, 2, 1, 1, 1, 2, 1, 1, 50, 8, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 15, 8, 1, 4, 2, 1, 9, 6, 2, 2, 1,
- 2, 1, 5, 5, 2, 2, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 6, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 1, 1, 3, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 4, 2, 1, 1,
- 2, 2, 1, 1, 1, 1, 1, 1, 1, 15, 12, 4, 2, 1, 4, 2, 2, 2, 2, 1, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 12, 3, 1, 1, 1, 2, 1,
- 1, 5, 1, 3, 1, 2, 1, 1, 1, 1, 4, 1, 18, 10, 2, 2, 3, 2, 1, 1, 1, 14, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 9, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 6, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 3, 1, 1, 1, 5, 1, 1, 4, 4, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 4, 2, 2, 2,
- 1, 1, 2, 1, 1, 1, 1, 10, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 1, 1, 1, 1, 1, 1, 1, 227,34, 21, 4, 2, 2, 2, 2, 1, 2, 1, 1,
- 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 24, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 7, 6, 6, 6, 5, 3, 3, 1, 1, 4, 1, 24, 14, 3,
- 2, 2, 7, 3, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 1, 1, 1, 36, 1, 2, 2, 17, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 3, 3,
- 2, 3, 3, 2, 2, 4, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 12, 2, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 2, 5, 1, 1, 2, 1,
- 1, 33, 2, 1, 1, 4, 1, 1, 1, 3, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 15, 3, 3, 3, 2, 6, 3, 3, 3, 3, 2, 5, 2, 1, 1, 1, 1,
- 11, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 2, 1, 4, 1, 1, 1,
- 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 217,21, 9, 2, 1, 2, 1, 3, 3, 2, 1, 1, 8, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 20, 9, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 7, 2, 1, 1, 1, 1, 1, 3, 3, 28, 2, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 4, 4, 3, 2, 1, 1, 1, 2, 2, 2, 30, 2, 1, 1, 1, 1, 2, 2, 1,
- 1, 1, 2, 1, 1, 1, 16, 3, 3, 3, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 1, 1, 1, 8, 8, 8, 8, 7, 7, 6, 5, 2, 1, 1, 1, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 2,
- 3, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 3,
- 2, 1, 1, 1, 2, 1, 1, 1, 1, 5, 1, 1, 1, 1, 8, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
- 1, 3, 1, 1, 1, 6, 2, 2, 1, 1, 3, 2, 1, 1, 1, 1, 177,1, 1, 1, 1, 1, 25, 12, 4, 2, 3, 3, 3, 14, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 9, 7, 1, 2, 2, 2, 1, 1, 1, 10, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 16, 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 6, 4, 4, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 54, 2, 1, 1, 1, 3, 2, 1, 1, 1, 6, 4, 3, 3, 1, 1, 1, 1, 30, 3, 4, 3, 2, 11, 10,
- 2, 1, 3, 3, 2, 2, 5, 5, 2, 3, 3, 1, 1, 1, 1, 1, 13, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 8, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 7, 1, 1, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 138,12, 5, 1, 1, 1, 1, 1, 1, 1, 5, 2, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 2, 1, 1, 1, 12, 1, 7, 4, 4, 4, 1, 1, 1, 1, 1, 41, 1, 1, 1, 1, 4, 2,
- 1, 24, 4, 2, 3, 5, 4, 4, 3, 3, 1, 1, 3, 3, 2, 2, 1, 1, 2, 2, 2, 2, 2, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 8, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 1, 1, 5, 5, 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 208,2, 2, 2, 1, 1, 15, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2,
- 1, 1, 4, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 4, 2, 1, 33, 21, 2, 1, 1, 1, 7, 4, 4, 3, 6, 6, 5, 3, 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1, 4, 1, 2, 1, 1, 1, 15, 1, 6, 4, 4, 3, 2, 1, 1, 1, 4, 1, 1, 1, 6, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
- 43, 1, 1, 1, 1, 2, 2, 3, 1, 2, 2, 2, 28, 2, 2, 2, 2, 2, 2, 11, 10, 1, 1, 1, 8, 7, 2, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 45, 1, 2, 3,
- 1, 1, 5, 4, 3, 2, 28, 2, 2, 8, 8, 7, 6, 5, 4, 3, 6, 4, 4, 4, 3, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 4, 3, 3, 3, 3, 1, 1, 1, 4, 3,
- 3, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 2, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 124,16, 6, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 16, 10, 2, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 7, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1,
- 10, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 20, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
- 2, 8, 3, 1, 2, 2, 1, 1, 1, 18, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 150,19, 8, 2, 2, 2, 1, 1, 3, 2, 1, 1, 1, 1, 12, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 6,
- 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 5, 3, 3, 3, 3, 1, 3, 1, 1, 12, 8, 4, 3, 1, 1, 1, 18, 15, 6, 3, 3, 2, 2, 6, 5, 4, 3, 3, 1, 6,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 1, 1, 1, 19, 2, 2, 7, 3, 3, 3, 4, 4, 3, 6, 5, 5, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 28, 1,
- 1, 2, 1, 2, 2, 2, 1, 5, 5, 3, 3, 2, 12, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 14,
- 1, 1, 1, 1, 2, 2, 2, 1, 1, 43, 4, 3, 3, 3, 1, 18, 1, 17, 13, 10, 8, 4, 3, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 2, 2, 7, 1, 6, 5, 4,
- 3, 2, 1, 1, 1, 1, 5, 5, 5, 5, 4, 3, 2, 2, 3, 2, 2, 2, 13, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 139,10, 2, 2, 2, 7, 7, 5, 4, 3, 53, 7, 6, 5, 2, 27, 3, 2, 17,
- 11, 7, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 1, 2, 2, 2, 1, 2, 4, 2, 2, 2, 1, 3, 4, 1, 4, 1, 2, 10, 2, 1, 1, 1,
- 2, 1, 1, 6, 2, 2, 4, 2, 1, 2, 23, 2, 3, 1, 2, 1, 2, 9, 9, 2, 1, 1, 8, 2, 4, 2, 2, 1, 1, 1, 1, 2, 2, 5, 5, 4, 1, 1, 1, 52, 2,
- 8, 1, 5, 1, 3, 3, 3, 6, 5, 5, 5, 4, 4, 1, 1, 1, 8, 3, 2, 2, 1, 2, 50, 16, 2, 1, 1, 7, 3, 2, 1, 1, 11, 1, 3, 1, 1, 4, 1, 5, 2,
- 1, 7, 6, 2, 3, 5, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 4, 31, 10, 9, 7, 4, 3, 2, 1, 1, 14, 6, 5, 7, 3, 2, 4, 58, 4, 4, 2, 10, 10, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 3, 3, 12, 2, 5, 3, 3, 2, 2, 2, 2, 1, 1, 26, 9, 9, 2, 3, 14, 2, 1, 1, 5, 5, 2, 3, 1, 1, 1,
- 1, 1, 2, 65, 4, 1, 2, 16, 4, 3, 4, 4, 2, 1, 1, 1, 23, 1, 5, 2, 1, 3, 3, 3, 2, 3, 2, 2, 2, 1, 2, 1, 1, 1, 1, 3, 2, 2, 2, 1, 3,
- 3, 2, 1, 1, 1, 1, 6, 1, 2, 2, 2, 12, 7, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 2, 1, 33, 6, 2, 5, 5, 3, 7, 2, 2, 2, 4, 2, 3, 1, 3,
- 1, 1, 7, 2, 1, 2, 1, 3, 3, 3, 2, 17, 6, 2, 2, 7, 2, 2, 1, 1, 1, 1, 7, 3, 4, 4, 4, 4, 4, 46, 1, 1, 10, 1, 1, 8, 4, 4, 4, 4, 4,
- 4, 3, 3, 3, 3, 3, 3, 2, 9, 4, 4, 4, 4, 5, 3, 1, 1, 1, 1, 13, 2, 1, 1, 1, 4, 4, 1, 1, 3, 3, 3, 1, 1, 1, 2, 1, 1, 1, 1, 63, 32,
- 3, 2, 2, 2, 1, 1, 1, 6, 6, 6, 2, 3, 1, 1, 1, 13, 8, 5, 3, 2, 1, 4, 4, 1, 1, 10, 2, 7, 3, 3, 2, 7, 1, 7, 2, 2, 1, 4, 4, 2, 62,
- 3, 2, 2, 3, 2, 2, 1, 1, 6, 6, 4, 2, 2, 1, 4, 2, 2, 1, 24, 13, 10, 10, 4, 1, 4, 2, 3, 9, 8, 4, 15, 3, 3, 3, 2, 2, 1, 1, 8, 7, 7,
- 7, 5, 5, 5, 3, 2, 1, 1, 1, 36, 1, 2, 2, 2, 3, 3, 2, 7, 6, 4, 4, 2, 8, 5, 2, 1, 1, 5, 2, 1, 1, 6, 5, 4, 2, 2, 1, 1, 1, 25, 2,
- 2, 16, 12, 12, 10, 7, 3, 2, 4, 4, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 175,6, 1, 1, 1, 2, 2, 58, 3, 12, 11, 11, 9, 8, 3, 2, 2, 2, 7, 7,
- 4, 9, 9, 3, 2, 1, 1, 25, 24, 6, 3, 2, 5, 3, 3, 2, 2, 2, 9, 6, 6, 6, 6, 3, 3, 2, 2, 2, 1, 1, 1, 5, 3, 2, 2, 1, 2, 2, 2, 2, 55,
- 3, 3, 24, 2, 6, 6, 6, 6, 6, 16, 7, 7, 5, 9, 9, 6, 6, 11, 10, 5, 2, 3, 3, 1, 2, 2, 14, 13, 12, 6, 3, 1, 1, 1, 1, 1, 1, 14, 8, 6, 6,
- 6, 2, 1, 1, 4, 26, 1, 1, 1, 9, 8, 8, 8, 5, 3, 2, 2, 10, 3, 3, 1, 1, 1, 1, 3, 1, 1, 49, 5, 2, 1, 2, 3, 1, 1, 1, 1, 9, 1, 3, 1,
- 13, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 6, 6, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 2, 1, 49, 7, 4, 3,
- 1, 1, 1, 12, 1, 1, 1, 1, 2, 1, 1, 1, 17, 9, 9, 7, 3, 3, 3, 5, 3, 1, 1, 1, 3, 2, 2, 1, 2, 14, 9, 2, 3, 1, 1, 1, 1, 1, 1, 1, 2,
- 31, 9, 8, 2, 2, 2, 4, 2, 5, 3, 8, 8, 8, 8, 8, 8, 8, 5, 1, 1, 6, 2, 5, 2, 2, 2, 2, 22, 2, 1, 2, 2, 1, 1, 1, 6, 2, 2, 4, 4, 4,
- 4, 4, 2, 19, 19, 6, 4, 4, 4, 2, 2, 1, 1, 13, 3, 3, 3, 3, 4, 2, 3, 2, 28, 5, 4, 2, 2, 2, 1, 16, 5, 5, 4, 2, 1, 1, 1, 1, 1, 1, 1,
- 4, 1, 2, 2, 2, 3, 2, 2, 2, 56, 29, 4, 2, 6, 6, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 17, 3, 6, 4, 4, 3, 1, 1, 1, 1, 1, 3, 2, 13, 12,
- 4, 2, 3, 2, 5, 21, 2, 2, 3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 5, 5, 1, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 84, 2, 2, 5, 2,
- 2, 2, 40, 4, 3, 7, 1, 3, 3, 3, 2, 4, 5, 3, 1, 9, 2, 2, 1, 1, 4, 16, 16, 4, 4, 4, 3, 2, 3, 2, 53, 5, 8, 1, 4, 21, 7, 6, 2, 2, 2,
- 3, 1, 1, 1, 6, 6, 4, 2, 2, 1, 6, 6, 6, 6, 3, 6, 5, 3, 64, 2, 1, 29, 4, 2, 2, 1, 5, 1, 3, 3, 2, 2, 5, 1, 1, 1, 12, 3, 1, 5, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 7, 3, 3, 3, 3, 1, 1, 2, 5, 3, 3, 3, 2, 17, 3, 12, 7, 6, 3, 1, 32, 1, 1, 1, 2, 8, 8, 7, 3, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 1, 33, 3, 2, 2, 2, 4, 3, 3, 3, 3, 8, 5, 5, 3, 3, 3, 18, 6, 5, 5, 5,
- 5, 2, 2, 8, 8, 2, 6, 1, 5, 3, 2, 10, 2, 5, 2, 54, 2, 45, 20, 4, 1, 1, 1, 1, 13, 13, 13, 4, 9, 9, 8, 5, 14, 8, 2, 2, 4, 4, 4, 4, 6,
- 4, 2, 4, 4, 4, 3, 3, 5, 3, 2, 43, 11, 3, 3, 3, 3, 3, 5, 5, 2, 1, 1, 4, 2, 10, 10, 4, 13, 2, 7, 35, 3, 7, 7, 5, 5, 3, 1, 1, 22, 16,
- 11, 3, 2, 2, 2, 3, 3, 3, 7, 2, 2, 2, 1, 1, 14, 1, 11, 8, 4, 4, 2, 1, 1, 1, 72, 1, 1, 1, 14, 13, 7, 6, 5, 5, 5, 4, 33, 13, 13, 4, 1,
- 8, 8, 5, 19, 3, 6, 3, 10, 8, 8, 15, 12, 6, 4, 4, 8, 6, 6, 3, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 101,1, 1, 2, 5, 2, 2, 3, 2, 2, 4,
- 3, 3, 2, 3, 2, 4, 2, 47, 3, 4, 3, 32, 4, 2, 5, 2, 2, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 2, 2, 1, 5, 5, 5, 5, 5, 4, 2, 2, 2, 9, 2,
- 2, 3, 3, 1, 1, 1, 1, 1, 1, 11, 4, 4, 1, 1, 2, 2, 1, 1, 1, 3, 3, 3, 12, 8, 8, 6, 2, 1, 2, 2, 1, 1, 3, 3, 3, 3, 3, 2, 167,6, 1,
- 3, 2, 1, 1, 1, 1, 65, 5, 1, 3, 3, 15, 10, 10, 6, 4, 4, 2, 3, 2, 22, 2, 2, 2, 6, 4, 3, 7, 7, 9, 6, 6, 5, 2, 2, 8, 7, 6, 2, 1, 1,
- 6, 2, 2, 3, 3, 3, 4, 4, 4, 4, 2, 2, 1, 1, 1, 5, 2, 2, 2, 2, 2, 2, 5, 3, 1, 1, 8, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31,
- 2, 19, 11, 10, 2, 6, 5, 5, 1, 8, 1, 1, 1, 2, 1, 1, 1, 5, 2, 3, 2, 26, 21, 1, 1, 1, 1, 20, 1, 1, 2, 2, 3, 3, 2, 4, 3, 2, 1, 4, 2,
- 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 2, 1, 3, 3, 6, 3, 2, 2, 2, 2, 1, 7, 2, 2, 1, 3, 2, 8, 4, 2, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 3, 1, 29, 2, 15, 3, 2, 7, 4, 2, 2, 1, 1, 31, 2, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 20, 4, 4, 4, 4, 14,
- 6, 6, 4, 3, 3, 1, 4, 3, 22, 5, 3, 4, 1, 1, 8, 7, 7, 1, 4, 19, 9, 2, 3, 1, 1, 1, 1, 5, 4, 3, 3, 3, 26, 10, 1, 4, 2, 1, 1, 1, 5,
- 3, 1, 1, 1, 7, 7, 5, 4, 1, 2, 1, 45, 5, 16, 2, 8, 2, 2, 2, 2, 4, 4, 17, 1, 1, 1, 1, 9, 2, 7, 7, 7, 7, 7, 4, 4, 2, 1, 1, 1, 3,
- 2, 7, 1, 1, 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, 52, 8, 3, 2, 1, 1, 1, 1, 1, 4, 3, 17, 10, 3, 2, 4, 4, 2, 1, 2, 3, 3, 1, 2, 10, 8, 2,
- 1, 1, 1, 1, 5, 4, 3, 1, 1, 120,17, 3, 5, 3, 3, 6, 2, 3, 3, 1, 1, 1, 9, 7, 6, 5, 4, 2, 2, 2, 2, 24, 3, 1, 1, 6, 1, 2, 1, 1, 2,
- 1, 1, 2, 2, 1, 1, 1, 19, 12, 8, 4, 1, 1, 1, 1, 2, 5, 4, 4, 3, 8, 12, 2, 8, 8, 3, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1, 4, 1, 2, 234,4,
- 1, 4, 2, 1, 13, 4, 3, 5, 2, 1, 5, 2, 2, 13, 2, 3, 4, 3, 3, 3, 19, 6, 3, 5, 15, 5, 2, 2, 2, 16, 4, 1, 1, 2, 2, 2, 4, 2, 1, 1, 1,
- 1, 1, 100,2, 10, 4, 3, 3, 3, 2, 1, 6, 3, 1, 2, 6, 4, 2, 2, 1, 1, 1, 2, 5, 2, 10, 2, 2, 4, 2, 2, 2, 2, 4, 3, 3, 2, 2, 2, 9, 7,
- 2, 4, 4, 5, 3, 1, 7, 3, 3, 3, 15, 4, 2, 2, 6, 5, 4, 5, 2, 7, 4, 3, 2, 2, 2, 13, 4, 1, 1, 1, 1, 1, 10, 2, 2, 2, 3, 2, 2, 1, 3,
- 1, 29, 13, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, 139,3, 3, 1, 29, 4, 4, 4, 4, 1, 1, 2, 2, 4, 3, 5,
- 4, 1, 1, 1, 1, 1, 4, 3, 3, 17, 1, 2, 8, 3, 9, 3, 1, 1, 1, 1, 1, 33, 1, 1, 1, 1, 3, 1, 1, 2, 3, 2, 7, 3, 1, 6, 1, 1, 1, 1, 1,
- 2, 3, 3, 2, 1, 5, 3, 2, 1, 1, 1, 3, 2, 2, 2, 4, 6, 2, 2, 1, 11, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 1, 2, 2, 1, 1, 108,8, 8, 4, 2, 2, 3, 3, 2, 2, 7, 1, 2, 2, 2, 2, 1,
+ 105,163,212,44, 123,121,242,113,93, 14, 24, 170,28, 214,107,34, 34, 132,66, 96, 132,28, 169,132,42, 192,62, 3, 132,45, 150,159,110,78, 194,174,198,217,57, 33, 32,
+ 4, 61, 140,19, 145,157,194,138,186,158,174,158,10, 47, 217,13, 101,104,36, 77, 127,187,80, 158,118,103,40, 17, 15, 59, 174,5, 97, 63, 23, 6, 52, 12, 6, 149,77,
+ 40, 51, 81, 57, 14, 121,52, 47, 50, 15, 147,145,95, 183,123,87, 69, 55, 206,181,212,87, 185,81, 176,54, 69, 8, 52, 247,125,73, 40, 137,112,121,26, 67, 36, 114,95,
+ 185,173,128,75, 104,174,32, 100,62, 245,221,9, 22, 203,95, 131,22, 209,161,0, 122,51, 28, 14, 58, 245,214,215,111,114,87, 51, 156,65, 36, 113,146,34, 15, 240,80,
+ 84, 49, 46, 33, 241,132,128,47, 101,62, 28, 126,139,77, 235,27, 142,4, 55, 135,240,54, 14, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 221,1, 1, 1, 1, 1, 14, 2, 1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 3, 1, 12,
+ 4, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 5, 1, 2, 2, 2,
+ 1, 3, 1, 1, 1, 11, 2, 1, 1, 1, 3, 2, 2, 3, 2, 2, 1, 1, 1, 10, 2, 1, 1, 1, 1, 4, 2, 2, 3, 1, 2, 15, 3, 1, 3, 3, 2, 1, 1, 5, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 1, 19, 3, 2, 6, 1, 2, 7, 10, 4, 1, 4, 1, 1, 10, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 5, 2, 13, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 10, 2, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 7, 3, 1, 3, 20,
+ 1, 1, 1, 1, 3, 2, 1, 3, 1, 1, 1, 5, 1, 1, 3, 3, 1, 1, 1, 16, 1, 1, 7, 3, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 16, 3, 2, 6, 2,
+ 1, 3, 2, 2, 1, 5, 2, 3, 3, 1, 1, 4, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 2, 1, 1, 2, 2,
+ 2, 2, 2, 2, 1, 1, 1, 62, 36, 24, 20, 11, 5, 3, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 5, 1, 2, 1, 2, 1,
+ 1, 10, 5, 4, 1, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 81, 58, 40, 34, 33, 2, 10, 11, 7, 4, 4, 6, 5, 5, 3, 3, 2, 2, 1, 1, 1,
+ 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 1, 4, 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 9, 9, 2, 2, 2, 2, 1, 1, 1, 1, 6, 3, 3, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 150,133,12, 12, 12, 2, 15, 14, 14, 4, 9, 16, 16, 16, 7, 9, 18, 18, 18, 8, 17, 17, 17, 7, 14, 14, 14, 5, 9, 14, 14, 14, 5, 9, 14, 14, 14, 5,
+ 13, 13, 13, 5, 8, 13, 12, 12, 12, 4, 8, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 6, 5, 2, 2, 2, 2, 1, 1, 1, 1, 1, 10, 5, 2, 2, 2,
+ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 5, 5, 4, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 8, 4, 4, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 9, 5, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 5, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 11, 5, 1, 1, 2,
+ 2, 1, 1, 2, 2, 6, 1, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 3,
+ 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 100,34, 7, 4, 2, 5, 1, 3, 2, 1, 2,
+ 2, 3, 1, 1, 3, 2, 1, 1, 1, 17, 8, 4, 1, 1, 1, 3, 2, 1, 3, 1, 21, 11, 10, 8, 5, 4, 3, 2, 6, 6, 6, 5, 5, 3, 2, 1, 2, 2, 1, 1, 1,
+ 2, 4, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 134,12, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 51, 2, 2, 2, 24, 18, 13, 6, 3, 1,
+ 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 13, 3, 2, 2, 2, 9, 9, 6, 5, 4, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 32, 19, 2, 2, 1, 15, 14, 6, 5,
+ 3, 2, 1, 1, 8, 2, 2, 2, 5, 5, 4, 3, 2, 2, 1, 8, 5, 3, 3, 2, 2, 2, 4, 3, 3, 2, 3, 2, 4, 2, 1, 1, 1, 5, 1, 1, 1, 3, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 2, 1, 10, 1, 1, 2, 2, 2, 2, 1, 25, 2, 1, 1, 2, 1, 1, 12, 8, 5, 2, 2, 1, 1, 1, 5, 3, 3, 2, 2, 1, 1, 1, 1,
+ 1, 10, 2, 1, 1, 5, 4, 3, 2, 2, 2, 2, 1, 1, 3, 25, 25, 24, 4, 3, 2, 3, 2, 5, 3, 2, 11, 3, 5, 2, 2, 3, 3, 31, 27, 26, 3, 2, 4, 3, 2,
+ 1, 3, 6, 3, 2, 1, 2, 2, 4, 4, 3, 2, 3, 6, 4, 4, 3, 2, 1, 5, 4, 2, 3, 3, 2, 7, 5, 5, 185,4, 3, 1, 4, 2, 2, 114,2, 1, 1, 88, 2,
+ 1, 71, 20, 3, 1, 1, 5, 3, 2, 2, 5, 2, 6, 2, 8, 4, 3, 2, 4, 2, 2, 3, 2, 1, 1, 1, 3, 4, 7, 9, 5, 4, 3, 2, 3, 2, 6, 3, 2, 1, 4,
+ 2, 3, 9, 4, 3, 2, 3, 2, 2, 12, 3, 2, 6, 5, 4, 3, 3, 1, 4, 3, 2, 2, 2, 2, 1, 2, 2, 8, 3, 3, 2, 1, 1, 9, 7, 6, 5, 2, 2, 2, 2,
+ 1, 1, 2, 1, 12, 3, 2, 3, 2, 2, 4, 2, 23, 11, 10, 5, 4, 3, 2, 8, 6, 5, 3, 6, 4, 4, 2, 3, 5, 2, 2, 14, 5, 3, 1, 4, 2, 3, 1, 1, 1,
+ 2, 4, 3, 3, 2, 2, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 4, 2, 1, 1, 27, 3, 3, 2, 20, 2, 1, 16, 2, 2, 4, 4, 3, 2, 4,
+ 3, 3, 2, 1, 3, 1, 2, 2, 3, 2, 3, 2, 13, 1, 3, 2, 2, 5, 3, 3, 2, 2, 2, 2, 14, 1, 3, 3, 2, 2, 1, 1, 1, 4, 2, 1, 3, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 11, 1, 1, 1, 1, 10, 2, 2, 3, 3, 2, 2, 1, 3, 3, 2, 2, 3, 1, 1, 1, 2, 100,9, 2,
+ 2, 2, 2, 9, 4, 3, 2, 1, 13, 8, 3, 3, 2, 2, 3, 2, 1, 2, 2, 1, 1, 1, 1, 5, 2, 1, 1, 1, 1, 1, 1, 13, 10, 9, 9, 4, 3, 1, 1, 1, 35,
+ 1, 1, 1, 1, 1, 30, 2, 2, 2, 2, 2, 2, 22, 3, 1, 5, 2, 5, 4, 3, 1, 2, 2, 8, 1, 1, 3, 1, 1, 2, 3, 4, 1, 2, 2, 81, 9, 3, 1, 1, 1,
+ 2, 7, 1, 1, 1, 3, 2, 2, 1, 5, 3, 2, 2, 1, 5, 2, 1, 1, 3, 5, 1, 1, 2, 2, 31, 6, 6, 6, 5, 3, 3, 3, 2, 2, 12, 6, 6, 3, 6, 6, 4,
+ 2, 2, 2, 5, 3, 1, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 103,10, 2, 3, 2, 2, 1, 7, 2, 2, 2, 1, 1, 1, 5, 2, 2, 2, 1, 1, 1, 8, 1, 1,
+ 1, 5, 2, 2, 1, 1, 1, 5, 1, 1, 1, 2, 4, 1, 4, 1, 1, 1, 50, 3, 10, 10, 10, 2, 1, 2, 3, 3, 20, 19, 18, 2, 4, 3, 2, 2, 6, 5, 3, 3, 2,
+ 2, 1, 1, 1, 1, 33, 4, 3, 3, 2, 4, 4, 2, 3, 3, 1, 1, 1, 43, 10, 4, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 2, 2, 3,
+ 1, 5, 1, 1, 1, 1, 3, 4, 2, 38, 7, 2, 4, 2, 5, 1, 1, 1, 1, 3, 1, 3, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 148,5, 4, 2, 1, 10,
+ 3, 3, 3, 5, 5, 5, 4, 4, 3, 7, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 9, 3, 1, 23, 3, 3, 1, 2, 1, 1, 2, 1, 3, 2,
+ 3, 2, 2, 2, 48, 5, 2, 2, 2, 2, 1, 1, 5, 3, 1, 4, 2, 3, 6, 2, 1, 1, 7, 2, 1, 1, 1, 1, 1, 1, 4, 3, 5, 3, 6, 2, 32, 5, 2, 2, 1,
+ 3, 1, 1, 3, 1, 1, 6, 2, 1, 1, 1, 5, 2, 2, 2, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 43, 12, 4, 4, 4,
+ 3, 3, 2, 2, 4, 4, 4, 3, 2, 4, 4, 4, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 3, 1, 1, 2, 2, 2, 1, 1, 6, 3, 1, 2,
+ 2, 3, 3, 3, 2, 1, 1, 5, 2, 2, 2, 2, 1, 1, 2, 1, 3, 1, 1, 1, 1, 50, 11, 2, 1, 2, 1, 1, 1, 2, 1, 3, 3, 3, 3, 2, 4, 3, 2, 14, 8,
+ 3, 1, 2, 2, 1, 3, 3, 1, 1, 2, 1, 4, 2, 1, 4, 3, 1, 1, 4, 2, 1, 1, 6, 1, 1, 2, 2, 1, 1, 1, 1, 1, 34, 6, 1, 3, 1, 1, 2, 2, 2,
+ 2, 2, 1, 1, 10, 3, 2, 2, 4, 1, 1, 1, 2, 2, 2, 1, 1, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 5, 2, 1, 1, 1, 1, 1, 1, 1, 22, 8, 1,
+ 1, 2, 1, 2, 2, 2, 2, 2, 4, 2, 1, 1, 3, 1, 1, 2, 1, 3, 1, 1, 1, 8, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24,
+ 2, 1, 2, 1, 1, 1, 2, 2, 2, 3, 2, 2, 3, 2, 1, 1, 3, 1, 2, 5, 1, 2, 1, 2, 4, 4, 4, 17, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3,
+ 3, 3, 3, 3, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1, 23, 7, 4, 2, 1, 1, 3, 1, 1, 2, 2, 2, 2, 7, 1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 5, 1,
+ 2, 2, 2, 2, 1, 1, 1, 24, 1, 1, 1, 1, 6, 3, 3, 1, 1, 1, 5, 1, 1, 1, 1, 2, 1, 1, 3, 3, 3, 3, 7, 3, 3, 1, 2, 1, 1, 2, 1, 7, 1,
+ 1, 3, 1, 1, 1, 1, 13, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 5, 4, 4, 1, 1, 38, 12, 3, 1, 1, 1, 2, 3, 1, 2, 1, 1, 1, 4, 1, 1, 1, 2, 1,
+ 6, 3, 2, 2, 2, 1, 1, 12, 5, 2, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 30, 1, 1,
+ 9, 1, 1, 1, 2, 2, 4, 4, 1, 1, 2, 2, 1, 1, 5, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 2, 2, 1, 1, 1, 1, 3, 1,
+ 1, 1, 57, 1, 1, 1, 12, 1, 3, 3, 3, 2, 2, 1, 6, 6, 5, 4, 4, 3, 2, 2, 2, 2, 2, 2, 2, 31, 5, 5, 5, 4, 4, 3, 2, 2, 2, 1, 2, 2, 2,
+ 22, 1, 1, 1, 1, 6, 6, 5, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 8, 1, 5, 4, 3, 2, 2, 2, 2, 1, 1, 1, 1, 10, 2, 2, 2, 8, 7, 7,
+ 6, 2, 1, 17, 7, 1, 1, 3, 2, 2, 1, 2, 1, 1, 1, 6, 4, 4, 1, 1, 1, 2, 49, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 3, 3, 1, 1, 5, 1, 1, 1,
+ 3, 2, 4, 2, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 5, 2, 2, 9, 3, 3, 4, 1, 1, 1, 9, 3, 1, 2, 1, 2, 2, 2, 1, 19, 1, 3, 1, 4,
+ 2, 1, 1, 1, 6, 1, 1, 1, 3, 1, 1, 2, 1, 2, 2, 5, 1, 1, 1, 1, 1, 1, 1, 6, 2, 1, 1, 1, 2, 1, 1, 14, 4, 1, 1, 1, 1, 1, 1, 2, 2,
+ 2, 1, 1, 1, 6, 2, 1, 1, 1, 3, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 4, 2, 1, 1, 1, 1, 1, 9, 4, 3, 3, 3, 2, 2, 2,
+ 2, 2, 2, 3, 3, 3, 3, 2, 1, 4, 44, 26, 7, 4, 1, 1, 1, 1, 1, 1, 2, 3, 2, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 2, 7, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 32, 7, 3, 3, 3, 1, 1, 6, 2, 4, 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 2, 2, 1, 1, 4, 1, 1,
+ 1, 1, 1, 3, 3, 3, 3, 2, 2, 1, 1, 1, 2, 1, 1, 50, 8, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 15, 8, 1, 4, 2, 1, 9, 6, 2, 2, 1,
+ 2, 1, 5, 5, 2, 2, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 6, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 1, 1, 3, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 4, 2, 1, 1,
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 15, 12, 4, 2, 1, 4, 2, 2, 2, 2, 1, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 12, 3, 1, 1, 1, 2, 1,
+ 1, 5, 1, 3, 1, 2, 1, 1, 1, 1, 4, 1, 18, 10, 2, 2, 3, 2, 1, 1, 1, 14, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
+ 1, 1, 1, 1, 9, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 6, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2,
+ 1, 1, 1, 1, 3, 1, 1, 1, 5, 1, 1, 4, 4, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 4, 2, 2, 2,
+ 1, 1, 2, 1, 1, 1, 1, 10, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 1, 1, 1, 1, 1, 1, 1, 227,34, 21, 4, 2, 2, 2, 2, 1, 2, 1, 1,
+ 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 24, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 7, 6, 6, 6, 5, 3, 3, 1, 1, 4, 1, 24, 14, 3,
+ 2, 2, 7, 3, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 1, 1, 1, 36, 1, 2, 2, 17, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 3, 3,
+ 2, 3, 3, 2, 2, 4, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 12, 2, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 2, 5, 1, 1, 2, 1,
+ 1, 33, 2, 1, 1, 4, 1, 1, 1, 3, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 15, 3, 3, 3, 2, 6, 3, 3, 3, 3, 2, 5, 2, 1, 1, 1, 1,
+ 11, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 2, 1, 4, 1, 1, 1,
+ 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 217,21, 9, 2, 1, 2, 1, 3, 3, 2, 1, 1, 8, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 20, 9, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 7, 2, 1, 1, 1, 1, 1, 3, 3, 28, 2, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 4, 4, 3, 2, 1, 1, 1, 2, 2, 2, 30, 2, 1, 1, 1, 1, 2, 2, 1,
+ 1, 1, 2, 1, 1, 1, 16, 3, 3, 3, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 1, 1, 1, 8, 8, 8, 8, 7, 7, 6, 5, 2, 1, 1, 1, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 2,
+ 3, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 3,
+ 2, 1, 1, 1, 2, 1, 1, 1, 1, 5, 1, 1, 1, 1, 8, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
+ 1, 3, 1, 1, 1, 6, 2, 2, 1, 1, 3, 2, 1, 1, 1, 1, 177,1, 1, 1, 1, 1, 25, 12, 4, 2, 3, 3, 3, 14, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 9, 7, 1, 2, 2, 2, 1, 1, 1, 10, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 16, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 6, 4, 4, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 54, 2, 1, 1, 1, 3, 2, 1, 1, 1, 6, 4, 3, 3, 1, 1, 1, 1, 30, 3, 4, 3, 2, 11, 10,
+ 2, 1, 3, 3, 2, 2, 5, 5, 2, 3, 3, 1, 1, 1, 1, 1, 13, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 8, 1, 1,
+ 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 7, 1, 1, 2, 2, 2, 2, 2, 2, 1,
+ 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 138,12, 5, 1, 1, 1, 1, 1, 1, 1, 5, 2, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 2, 1, 1, 1, 12, 1, 7, 4, 4, 4, 1, 1, 1, 1, 1, 41, 1, 1, 1, 1, 4, 2,
+ 1, 24, 4, 2, 3, 5, 4, 4, 3, 3, 1, 1, 3, 3, 2, 2, 1, 1, 2, 2, 2, 2, 2, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 8, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 1, 1, 5, 5, 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 208,2, 2, 2, 1, 1, 15, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2,
+ 1, 1, 4, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 4, 2, 1, 33, 21, 2, 1, 1, 1, 7, 4, 4, 3, 6, 6, 5, 3, 3, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 1, 2, 1, 1, 1, 1, 4, 1, 2, 1, 1, 1, 15, 1, 6, 4, 4, 3, 2, 1, 1, 1, 4, 1, 1, 1, 6, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
+ 43, 1, 1, 1, 1, 2, 2, 3, 1, 2, 2, 2, 28, 2, 2, 2, 2, 2, 2, 11, 10, 1, 1, 1, 8, 7, 2, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 45, 1, 2, 3,
+ 1, 1, 5, 4, 3, 2, 28, 2, 2, 8, 8, 7, 6, 5, 4, 3, 6, 4, 4, 4, 3, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 4, 3, 3, 3, 3, 1, 1, 1, 4, 3,
+ 3, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1,
+ 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 2, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 124,16, 6, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 2, 1, 1,
+ 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 16, 10, 2, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 7, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1,
+ 10, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 20, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 8, 3, 1, 2, 2, 1, 1, 1, 18, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 150,19, 8, 2, 2, 2, 1, 1, 3, 2, 1, 1, 1, 1, 12, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 6,
+ 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 5, 3, 3, 3, 3, 1, 3, 1, 1, 12, 8, 4, 3, 1, 1, 1, 18, 15, 6, 3, 3, 2, 2, 6, 5, 4, 3, 3, 1, 6,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 1, 1, 1, 19, 2, 2, 7, 3, 3, 3, 4, 4, 3, 6, 5, 5, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 28, 1,
+ 1, 2, 1, 2, 2, 2, 1, 5, 5, 3, 3, 2, 12, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 14,
+ 1, 1, 1, 1, 2, 2, 2, 1, 1, 43, 4, 3, 3, 3, 1, 18, 1, 17, 13, 10, 8, 4, 3, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 2, 2, 7, 1, 6, 5, 4,
+ 3, 2, 1, 1, 1, 1, 5, 5, 5, 5, 4, 3, 2, 2, 3, 2, 2, 2, 13, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 139,10, 2, 2, 2, 7, 7, 5, 4, 3, 53, 7, 6, 5, 2, 27, 3, 2, 17,
+ 11, 7, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 1, 2, 2, 2, 1, 2, 4, 2, 2, 2, 1, 3, 4, 1, 4, 1, 2, 10, 2, 1, 1, 1,
+ 2, 1, 1, 6, 2, 2, 4, 2, 1, 2, 23, 2, 3, 1, 2, 1, 2, 9, 9, 2, 1, 1, 8, 2, 4, 2, 2, 1, 1, 1, 1, 2, 2, 5, 5, 4, 1, 1, 1, 52, 2,
+ 8, 1, 5, 1, 3, 3, 3, 6, 5, 5, 5, 4, 4, 1, 1, 1, 8, 3, 2, 2, 1, 2, 50, 16, 2, 1, 1, 7, 3, 2, 1, 1, 11, 1, 3, 1, 1, 4, 1, 5, 2,
+ 1, 7, 6, 2, 3, 5, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 4, 31, 10, 9, 7, 4, 3, 2, 1, 1, 14, 6, 5, 7, 3, 2, 4, 58, 4, 4, 2, 10, 10, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 3, 3, 12, 2, 5, 3, 3, 2, 2, 2, 2, 1, 1, 26, 9, 9, 2, 3, 14, 2, 1, 1, 5, 5, 2, 3, 1, 1, 1,
+ 1, 1, 2, 65, 4, 1, 2, 16, 4, 3, 4, 4, 2, 1, 1, 1, 23, 1, 5, 2, 1, 3, 3, 3, 2, 3, 2, 2, 2, 1, 2, 1, 1, 1, 1, 3, 2, 2, 2, 1, 3,
+ 3, 2, 1, 1, 1, 1, 6, 1, 2, 2, 2, 12, 7, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 2, 1, 33, 6, 2, 5, 5, 3, 7, 2, 2, 2, 4, 2, 3, 1, 3,
+ 1, 1, 7, 2, 1, 2, 1, 3, 3, 3, 2, 17, 6, 2, 2, 7, 2, 2, 1, 1, 1, 1, 7, 3, 4, 4, 4, 4, 4, 46, 1, 1, 10, 1, 1, 8, 4, 4, 4, 4, 4,
+ 4, 3, 3, 3, 3, 3, 3, 2, 9, 4, 4, 4, 4, 5, 3, 1, 1, 1, 1, 13, 2, 1, 1, 1, 4, 4, 1, 1, 3, 3, 3, 1, 1, 1, 2, 1, 1, 1, 1, 63, 32,
+ 3, 2, 2, 2, 1, 1, 1, 6, 6, 6, 2, 3, 1, 1, 1, 13, 8, 5, 3, 2, 1, 4, 4, 1, 1, 10, 2, 7, 3, 3, 2, 7, 1, 7, 2, 2, 1, 4, 4, 2, 62,
+ 3, 2, 2, 3, 2, 2, 1, 1, 6, 6, 4, 2, 2, 1, 4, 2, 2, 1, 24, 13, 10, 10, 4, 1, 4, 2, 3, 9, 8, 4, 15, 3, 3, 3, 2, 2, 1, 1, 8, 7, 7,
+ 7, 5, 5, 5, 3, 2, 1, 1, 1, 36, 1, 2, 2, 2, 3, 3, 2, 7, 6, 4, 4, 2, 8, 5, 2, 1, 1, 5, 2, 1, 1, 6, 5, 4, 2, 2, 1, 1, 1, 25, 2,
+ 2, 16, 12, 12, 10, 7, 3, 2, 4, 4, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 175,6, 1, 1, 1, 2, 2, 58, 3, 12, 11, 11, 9, 8, 3, 2, 2, 2, 7, 7,
+ 4, 9, 9, 3, 2, 1, 1, 25, 24, 6, 3, 2, 5, 3, 3, 2, 2, 2, 9, 6, 6, 6, 6, 3, 3, 2, 2, 2, 1, 1, 1, 5, 3, 2, 2, 1, 2, 2, 2, 2, 55,
+ 3, 3, 24, 2, 6, 6, 6, 6, 6, 16, 7, 7, 5, 9, 9, 6, 6, 11, 10, 5, 2, 3, 3, 1, 2, 2, 14, 13, 12, 6, 3, 1, 1, 1, 1, 1, 1, 14, 8, 6, 6,
+ 6, 2, 1, 1, 4, 26, 1, 1, 1, 9, 8, 8, 8, 5, 3, 2, 2, 10, 3, 3, 1, 1, 1, 1, 3, 1, 1, 49, 5, 2, 1, 2, 3, 1, 1, 1, 1, 9, 1, 3, 1,
+ 13, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 6, 6, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 2, 1, 49, 7, 4, 3,
+ 1, 1, 1, 12, 1, 1, 1, 1, 2, 1, 1, 1, 17, 9, 9, 7, 3, 3, 3, 5, 3, 1, 1, 1, 3, 2, 2, 1, 2, 14, 9, 2, 3, 1, 1, 1, 1, 1, 1, 1, 2,
+ 31, 9, 8, 2, 2, 2, 4, 2, 5, 3, 8, 8, 8, 8, 8, 8, 8, 5, 1, 1, 6, 2, 5, 2, 2, 2, 2, 22, 2, 1, 2, 2, 1, 1, 1, 6, 2, 2, 4, 4, 4,
+ 4, 4, 2, 19, 19, 6, 4, 4, 4, 2, 2, 1, 1, 13, 3, 3, 3, 3, 4, 2, 3, 2, 28, 5, 4, 2, 2, 2, 1, 16, 5, 5, 4, 2, 1, 1, 1, 1, 1, 1, 1,
+ 4, 1, 2, 2, 2, 3, 2, 2, 2, 56, 29, 4, 2, 6, 6, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 17, 3, 6, 4, 4, 3, 1, 1, 1, 1, 1, 3, 2, 13, 12,
+ 4, 2, 3, 2, 5, 21, 2, 2, 3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 5, 5, 1, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 84, 2, 2, 5, 2,
+ 2, 2, 40, 4, 3, 7, 1, 3, 3, 3, 2, 4, 5, 3, 1, 9, 2, 2, 1, 1, 4, 16, 16, 4, 4, 4, 3, 2, 3, 2, 53, 5, 8, 1, 4, 21, 7, 6, 2, 2, 2,
+ 3, 1, 1, 1, 6, 6, 4, 2, 2, 1, 6, 6, 6, 6, 3, 6, 5, 3, 64, 2, 1, 29, 4, 2, 2, 1, 5, 1, 3, 3, 2, 2, 5, 1, 1, 1, 12, 3, 1, 5, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 7, 3, 3, 3, 3, 1, 1, 2, 5, 3, 3, 3, 2, 17, 3, 12, 7, 6, 3, 1, 32, 1, 1, 1, 2, 8, 8, 7, 3, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 1, 33, 3, 2, 2, 2, 4, 3, 3, 3, 3, 8, 5, 5, 3, 3, 3, 18, 6, 5, 5, 5,
+ 5, 2, 2, 8, 8, 2, 6, 1, 5, 3, 2, 10, 2, 5, 2, 54, 2, 45, 20, 4, 1, 1, 1, 1, 13, 13, 13, 4, 9, 9, 8, 5, 14, 8, 2, 2, 4, 4, 4, 4, 6,
+ 4, 2, 4, 4, 4, 3, 3, 5, 3, 2, 43, 11, 3, 3, 3, 3, 3, 5, 5, 2, 1, 1, 4, 2, 10, 10, 4, 13, 2, 7, 35, 3, 7, 7, 5, 5, 3, 1, 1, 22, 16,
+ 11, 3, 2, 2, 2, 3, 3, 3, 7, 2, 2, 2, 1, 1, 14, 1, 11, 8, 4, 4, 2, 1, 1, 1, 72, 1, 1, 1, 14, 13, 7, 6, 5, 5, 5, 4, 33, 13, 13, 4, 1,
+ 8, 8, 5, 19, 3, 6, 3, 10, 8, 8, 15, 12, 6, 4, 4, 8, 6, 6, 3, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 101,1, 1, 2, 5, 2, 2, 3, 2, 2, 4,
+ 3, 3, 2, 3, 2, 4, 2, 47, 3, 4, 3, 32, 4, 2, 5, 2, 2, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 2, 2, 1, 5, 5, 5, 5, 5, 4, 2, 2, 2, 9, 2,
+ 2, 3, 3, 1, 1, 1, 1, 1, 1, 11, 4, 4, 1, 1, 2, 2, 1, 1, 1, 3, 3, 3, 12, 8, 8, 6, 2, 1, 2, 2, 1, 1, 3, 3, 3, 3, 3, 2, 167,6, 1,
+ 3, 2, 1, 1, 1, 1, 65, 5, 1, 3, 3, 15, 10, 10, 6, 4, 4, 2, 3, 2, 22, 2, 2, 2, 6, 4, 3, 7, 7, 9, 6, 6, 5, 2, 2, 8, 7, 6, 2, 1, 1,
+ 6, 2, 2, 3, 3, 3, 4, 4, 4, 4, 2, 2, 1, 1, 1, 5, 2, 2, 2, 2, 2, 2, 5, 3, 1, 1, 8, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31,
+ 2, 19, 11, 10, 2, 6, 5, 5, 1, 8, 1, 1, 1, 2, 1, 1, 1, 5, 2, 3, 2, 26, 21, 1, 1, 1, 1, 20, 1, 1, 2, 2, 3, 3, 2, 4, 3, 2, 1, 4, 2,
+ 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 2, 1, 3, 3, 6, 3, 2, 2, 2, 2, 1, 7, 2, 2, 1, 3, 2, 8, 4, 2, 1, 3,
+ 1, 1, 1, 1, 1, 1, 1, 3, 1, 29, 2, 15, 3, 2, 7, 4, 2, 2, 1, 1, 31, 2, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 20, 4, 4, 4, 4, 14,
+ 6, 6, 4, 3, 3, 1, 4, 3, 22, 5, 3, 4, 1, 1, 8, 7, 7, 1, 4, 19, 9, 2, 3, 1, 1, 1, 1, 5, 4, 3, 3, 3, 26, 10, 1, 4, 2, 1, 1, 1, 5,
+ 3, 1, 1, 1, 7, 7, 5, 4, 1, 2, 1, 45, 5, 16, 2, 8, 2, 2, 2, 2, 4, 4, 17, 1, 1, 1, 1, 9, 2, 7, 7, 7, 7, 7, 4, 4, 2, 1, 1, 1, 3,
+ 2, 7, 1, 1, 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, 52, 8, 3, 2, 1, 1, 1, 1, 1, 4, 3, 17, 10, 3, 2, 4, 4, 2, 1, 2, 3, 3, 1, 2, 10, 8, 2,
+ 1, 1, 1, 1, 5, 4, 3, 1, 1, 120,17, 3, 5, 3, 3, 6, 2, 3, 3, 1, 1, 1, 9, 7, 6, 5, 4, 2, 2, 2, 2, 24, 3, 1, 1, 6, 1, 2, 1, 1, 2,
+ 1, 1, 2, 2, 1, 1, 1, 19, 12, 8, 4, 1, 1, 1, 1, 2, 5, 4, 4, 3, 8, 12, 2, 8, 8, 3, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1, 4, 1, 2, 234,4,
+ 1, 4, 2, 1, 13, 4, 3, 5, 2, 1, 5, 2, 2, 13, 2, 3, 4, 3, 3, 3, 19, 6, 3, 5, 15, 5, 2, 2, 2, 16, 4, 1, 1, 2, 2, 2, 4, 2, 1, 1, 1,
+ 1, 1, 100,2, 10, 4, 3, 3, 3, 2, 1, 6, 3, 1, 2, 6, 4, 2, 2, 1, 1, 1, 2, 5, 2, 10, 2, 2, 4, 2, 2, 2, 2, 4, 3, 3, 2, 2, 2, 9, 7,
+ 2, 4, 4, 5, 3, 1, 7, 3, 3, 3, 15, 4, 2, 2, 6, 5, 4, 5, 2, 7, 4, 3, 2, 2, 2, 13, 4, 1, 1, 1, 1, 1, 10, 2, 2, 2, 3, 2, 2, 1, 3,
+ 1, 29, 13, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, 139,3, 3, 1, 29, 4, 4, 4, 4, 1, 1, 2, 2, 4, 3, 5,
+ 4, 1, 1, 1, 1, 1, 4, 3, 3, 17, 1, 2, 8, 3, 9, 3, 1, 1, 1, 1, 1, 33, 1, 1, 1, 1, 3, 1, 1, 2, 3, 2, 7, 3, 1, 6, 1, 1, 1, 1, 1,
+ 2, 3, 3, 2, 1, 5, 3, 2, 1, 1, 1, 3, 2, 2, 2, 4, 6, 2, 2, 1, 11, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 1, 2, 2, 1, 1, 108,8, 8, 4, 2, 2, 3, 3, 2, 2, 7, 1, 2, 2, 2, 2, 1,
1, 1, 19, 2, 2, 3, 2, 5, 2, 4, 1, 1, 20, 1, 5, 2, 2, 1, 1, 13, 2, 4, 6, 3, 8, 1, 4, 4, 2, 5, 2, 2, 1, 1, 1, 1, 3, 4, 3, 2, 122,
- 31, 3, 1, 1, 1, 1, 11, 2, 4, 7, 2, 2, 2, 5, 4, 4, 46, 1, 1, 2, 37, 2, 2, 1, 2, 23, 2, 3, 4, 3, 3, 4, 17, 1, 1, 1, 7, 2, 2, 1, 1,
- 2, 6, 5, 2, 10, 2, 2, 4, 3, 2, 2, 10, 3, 2, 2, 2, 2, 2, 54, 15, 2, 5, 4, 3, 1, 3, 4, 4, 4, 4, 3, 7, 1, 1, 1, 22, 2, 6, 6, 6, 4,
- 1, 1, 3, 1, 4, 2, 68, 13, 2, 1, 1, 1, 1, 28, 3, 2, 1, 2, 2, 17, 1, 1, 4, 3, 4, 4, 3, 2, 7, 1, 1, 1, 1, 2, 1, 1, 1, 10, 4, 2, 5,
- 2, 238,2, 4, 5, 2, 5, 1, 2, 9, 7, 7, 7, 7, 20, 17, 9, 8, 8, 5, 3, 2, 6, 2, 3, 2, 8, 7, 6, 3, 3, 13, 5, 3, 1, 2, 1, 3, 8, 6, 25,
- 4, 2, 12, 8, 8, 8, 7, 3, 2, 3, 4, 3, 3, 3, 4, 1, 2, 2, 113,5, 30, 4, 3, 20, 5, 7, 7, 10, 3, 2, 4, 4, 4, 28, 2, 23, 21, 5, 4, 1, 1,
- 14, 4, 5, 1, 3, 3, 10, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 41, 11, 3, 2, 3, 3, 2, 4, 3, 5, 4, 7, 6, 5, 10, 10, 8, 2, 38,
- 5, 2, 15, 5, 5, 5, 2, 2, 1, 1, 6, 4, 1, 1, 5, 3, 2, 10, 2, 2, 2, 2, 4, 3, 3, 3, 3, 2, 1, 1, 1, 6, 4, 1, 2, 1, 1, 1, 1, 136,10,
- 3, 4, 6, 2, 1, 17, 4, 2, 6, 3, 1, 12, 7, 16, 2, 3, 1, 9, 3, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 7, 3, 3, 3, 3, 19, 13, 6, 3, 3, 6, 6,
- 4, 2, 3, 2, 3, 2, 2, 1, 1, 4, 4, 16, 3, 1, 1, 4, 3, 2, 3, 2, 4, 4, 2, 1, 1, 27, 12, 5, 3, 2, 2, 5, 2, 1, 4, 3, 1, 1, 1, 1, 5,
- 3, 2, 2, 9, 6, 34, 2, 2, 6, 2, 1, 1, 5, 6, 3, 2, 2, 1, 2, 8, 2, 1, 3, 3, 2, 2, 2, 3, 1, 1, 86, 26, 4, 4, 3, 2, 4, 3, 3, 4, 3,
- 2, 7, 3, 2, 2, 1, 1, 4, 3, 2, 18, 4, 2, 4, 3, 12, 6, 3, 1, 1, 4, 1, 6, 2, 8, 2, 10, 4, 1, 3, 1, 1, 32, 4, 4, 5, 4, 3, 3, 3, 7,
- 4, 6, 2, 2, 9, 1, 1, 1, 3, 2, 2, 2, 2, 2, 37, 9, 2, 2, 2, 1, 4, 8, 4, 4, 4, 17, 2, 2, 2, 1, 2, 2, 2, 6, 4, 2, 1, 1, 1, 1, 7,
- 2, 2, 14, 3, 2, 2, 3, 2, 9, 71, 27, 2, 3, 1, 1, 1, 7, 3, 3, 2, 5, 3, 16, 4, 1, 4, 2, 1, 2, 5, 1, 4, 2, 2, 14, 2, 2, 2, 5, 3, 3,
- 5, 2, 2, 2, 2, 2, 2, 5, 2, 42, 2, 1, 3, 1, 4, 14, 4, 1, 1, 2, 2, 5, 2, 3, 2, 62, 3, 2, 9, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 40, 33, 2, 4, 1, 1, 1, 1, 1, 9, 8, 8, 5, 3, 1, 1, 3, 2, 2, 1, 1, 2, 3, 3, 3, 3, 9, 6, 4, 4, 1, 3, 1, 9, 3, 1, 4, 2,
- 2, 32, 4, 1, 4, 1, 2, 1, 3, 2, 3, 3, 3, 2, 5, 2, 5, 3, 140,23, 2, 1, 1, 1, 3, 5, 3, 3, 5, 2, 2, 2, 2, 1, 45, 8, 3, 1, 1, 1, 1,
- 1, 1, 30, 3, 2, 3, 2, 16, 15, 1, 1, 1, 1, 14, 4, 7, 4, 14, 4, 2, 2, 2, 5, 2, 1, 1, 15, 3, 3, 3, 1, 1, 3, 3, 3, 5, 3, 2, 18, 3, 3,
- 3, 3, 1, 4, 2, 2, 3, 2, 7, 2, 2, 1, 2, 2, 2, 2, 5, 1, 1, 2, 2, 1, 1, 22, 2, 2, 3, 2, 2, 2, 11, 1, 3, 3, 1, 1, 1, 1, 4, 1, 54,
- 20, 4, 12, 2, 4, 2, 18, 2, 2, 10, 3, 2, 13, 5, 2, 2, 2, 12, 9, 3, 17, 2, 9, 6, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132,2, 3,
- 12, 4, 3, 3, 1, 1, 1, 5, 2, 16, 2, 2, 6, 6, 6, 5, 5, 25, 12, 10, 6, 2, 1, 25, 7, 4, 4, 1, 1, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 8, 13, 6, 1, 1, 5, 5, 2, 1, 2, 2, 1, 1, 17, 4, 4, 3, 3, 8, 8, 82, 10, 4, 4, 4, 4, 4, 4, 2, 19, 1, 17, 2, 3, 15, 1, 1, 1,
- 1, 4, 4, 2, 4, 3, 3, 2, 2, 3, 3, 6, 2, 17, 3, 13, 8, 6, 2, 1, 12, 1, 4, 4, 3, 3, 4, 4, 2, 1, 1, 3, 93, 4, 2, 3, 1, 1, 1, 13, 2,
- 8, 4, 1, 18, 7, 1, 1, 1, 1, 4, 35, 27, 19, 14, 9, 3, 2, 2, 3, 2, 1, 3, 1, 5, 2, 2, 2, 4, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 1, 78,
- 2, 8, 3, 2, 11, 3, 3, 2, 1, 4, 9, 5, 4, 2, 12, 2, 5, 1, 1, 8, 4, 10, 4, 3, 9, 3, 2, 2, 2, 1, 3, 2, 25, 5, 3, 2, 2, 6, 1, 3, 3,
- 3, 10, 9, 5, 2, 9, 3, 3, 2, 4, 4, 1, 1, 1, 1, 2, 59, 3, 4, 2, 2, 7, 2, 26, 2, 5, 4, 2, 5, 4, 1, 2, 2, 8, 4, 3, 1, 51, 7, 3, 5,
- 3, 15, 2, 2, 2, 2, 9, 3, 3, 2, 2, 3, 2, 2, 2, 3, 2, 1, 1, 1, 12, 2, 9, 7, 5, 4, 2, 1, 1, 7, 6, 4, 4, 11, 2, 6, 3, 24, 2, 2, 2,
- 2, 3, 2, 11, 7, 2, 4, 3, 3, 2, 3, 1, 16, 2, 4, 2, 7, 3, 2, 15, 1, 5, 2, 2, 2, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 169,7, 2, 2, 2, 3, 2, 10, 1, 1, 1, 3, 3, 3, 3, 3, 3, 4, 1, 1, 6, 1, 1, 1, 2, 2, 7, 1, 1, 4, 4, 4, 4, 3, 3, 6, 3, 3, 3, 2, 2,
- 3, 6, 1, 3, 3, 41, 1, 1, 3, 3, 3, 3, 2, 9, 9, 2, 20, 8, 4, 2, 6, 6, 7, 2, 2, 2, 2, 13, 3, 4, 2, 4, 4, 2, 2, 2, 13, 8, 8, 5, 4,
- 2, 21, 2, 1, 17, 14, 3, 11, 9, 2, 2, 1, 17, 1, 14, 8, 4, 2, 1, 1, 6, 5, 3, 2, 1, 1, 2, 2, 48, 5, 2, 10, 5, 2, 5, 5, 3, 15, 2, 12, 9,
- 4, 8, 4, 4, 1, 1, 3, 2, 3, 237,15, 8, 5, 4, 3, 2, 2, 2, 1, 1, 31, 23, 2, 1, 1, 3, 10, 4, 3, 4, 2, 2, 2, 10, 3, 12, 2, 4, 3, 145,13,
- 2, 5, 3, 2, 2, 84, 18, 4, 6, 2, 6, 5, 5, 1, 4, 28, 7, 4, 2, 1, 8, 4, 14, 3, 2, 2, 2, 2, 21, 4, 3, 1, 1, 1, 1, 4, 3, 3, 4, 3, 1,
- 3, 1, 1, 1, 5, 3, 1, 1, 1, 1, 4, 4, 4, 2, 1, 4, 2, 13, 2, 1, 1, 2, 1, 35, 5, 3, 3, 3, 4, 2, 10, 1, 1, 1, 7, 6, 6, 3, 3, 2, 2,
- 2, 3, 1, 3, 3, 2, 2, 5, 5, 2, 2, 214,6, 1, 2, 108,95, 2, 9, 6, 3, 4, 3, 3, 2, 6, 4, 2, 2, 21, 4, 5, 2, 5, 2, 16, 2, 2, 3, 2, 9,
- 2, 3, 23, 4, 4, 2, 11, 3, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 36, 5, 14, 2, 1, 1, 2, 2, 11, 7, 3, 4, 5, 11, 1, 1, 4, 1, 1, 1,
- 1, 6, 4, 3, 3, 13, 4, 2, 3, 2, 6, 2, 2, 1, 1, 10, 1, 1, 1, 2, 3, 2, 2, 1, 74, 2, 2, 34, 24, 9, 2, 1, 3, 1, 1, 1, 2, 1, 10, 2, 2,
- 4, 3, 3, 2, 1, 1, 4, 1, 5, 2, 1, 3, 2, 2, 11, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 7, 18, 7, 4, 2, 2, 2, 4, 18, 3, 2, 2, 1, 1, 5, 2,
- 4, 3, 3, 1, 1, 163,61, 19, 3, 13, 7, 5, 5, 3, 8, 6, 4, 2, 7, 2, 2, 6, 5, 3, 3, 3, 2, 1, 4, 2, 2, 30, 1, 7, 5, 2, 2, 2, 2, 2, 4,
- 4, 4, 7, 28, 4, 1, 1, 1, 1, 8, 5, 5, 2, 2, 2, 2, 2, 1, 1, 23, 4, 2, 8, 8, 7, 2, 17, 4, 4, 1, 5, 2, 1, 1, 2, 2, 37, 3, 3, 3, 3,
- 2, 4, 3, 3, 10, 2, 7, 7, 3, 3, 1, 1, 3, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 45, 6, 3, 3, 2, 2, 3, 2, 1, 8, 6, 3, 4, 2, 4,
- 1, 1, 1, 1, 3, 5, 3, 1, 5, 5, 5, 23, 7, 7, 7, 7, 2, 5, 3, 2, 2, 2, 2, 2, 5, 2, 2, 2, 1, 1, 27, 2, 1, 1, 3, 2, 1, 1, 3, 2, 1,
+ 31, 3, 1, 1, 1, 1, 11, 2, 4, 7, 2, 2, 2, 5, 4, 4, 46, 1, 1, 2, 37, 2, 2, 1, 2, 23, 2, 3, 4, 3, 3, 4, 17, 1, 1, 1, 7, 2, 2, 1, 1,
+ 2, 6, 5, 2, 10, 2, 2, 4, 3, 2, 2, 10, 3, 2, 2, 2, 2, 2, 54, 15, 2, 5, 4, 3, 1, 3, 4, 4, 4, 4, 3, 7, 1, 1, 1, 22, 2, 6, 6, 6, 4,
+ 1, 1, 3, 1, 4, 2, 68, 13, 2, 1, 1, 1, 1, 28, 3, 2, 1, 2, 2, 17, 1, 1, 4, 3, 4, 4, 3, 2, 7, 1, 1, 1, 1, 2, 1, 1, 1, 10, 4, 2, 5,
+ 2, 238,2, 4, 5, 2, 5, 1, 2, 9, 7, 7, 7, 7, 20, 17, 9, 8, 8, 5, 3, 2, 6, 2, 3, 2, 8, 7, 6, 3, 3, 13, 5, 3, 1, 2, 1, 3, 8, 6, 25,
+ 4, 2, 12, 8, 8, 8, 7, 3, 2, 3, 4, 3, 3, 3, 4, 1, 2, 2, 113,5, 30, 4, 3, 20, 5, 7, 7, 10, 3, 2, 4, 4, 4, 28, 2, 23, 21, 5, 4, 1, 1,
+ 14, 4, 5, 1, 3, 3, 10, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 41, 11, 3, 2, 3, 3, 2, 4, 3, 5, 4, 7, 6, 5, 10, 10, 8, 2, 38,
+ 5, 2, 15, 5, 5, 5, 2, 2, 1, 1, 6, 4, 1, 1, 5, 3, 2, 10, 2, 2, 2, 2, 4, 3, 3, 3, 3, 2, 1, 1, 1, 6, 4, 1, 2, 1, 1, 1, 1, 136,10,
+ 3, 4, 6, 2, 1, 17, 4, 2, 6, 3, 1, 12, 7, 16, 2, 3, 1, 9, 3, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 7, 3, 3, 3, 3, 19, 13, 6, 3, 3, 6, 6,
+ 4, 2, 3, 2, 3, 2, 2, 1, 1, 4, 4, 16, 3, 1, 1, 4, 3, 2, 3, 2, 4, 4, 2, 1, 1, 27, 12, 5, 3, 2, 2, 5, 2, 1, 4, 3, 1, 1, 1, 1, 5,
+ 3, 2, 2, 9, 6, 34, 2, 2, 6, 2, 1, 1, 5, 6, 3, 2, 2, 1, 2, 8, 2, 1, 3, 3, 2, 2, 2, 3, 1, 1, 86, 26, 4, 4, 3, 2, 4, 3, 3, 4, 3,
+ 2, 7, 3, 2, 2, 1, 1, 4, 3, 2, 18, 4, 2, 4, 3, 12, 6, 3, 1, 1, 4, 1, 6, 2, 8, 2, 10, 4, 1, 3, 1, 1, 32, 4, 4, 5, 4, 3, 3, 3, 7,
+ 4, 6, 2, 2, 9, 1, 1, 1, 3, 2, 2, 2, 2, 2, 37, 9, 2, 2, 2, 1, 4, 8, 4, 4, 4, 17, 2, 2, 2, 1, 2, 2, 2, 6, 4, 2, 1, 1, 1, 1, 7,
+ 2, 2, 14, 3, 2, 2, 3, 2, 9, 71, 27, 2, 3, 1, 1, 1, 7, 3, 3, 2, 5, 3, 16, 4, 1, 4, 2, 1, 2, 5, 1, 4, 2, 2, 14, 2, 2, 2, 5, 3, 3,
+ 5, 2, 2, 2, 2, 2, 2, 5, 2, 42, 2, 1, 3, 1, 4, 14, 4, 1, 1, 2, 2, 5, 2, 3, 2, 62, 3, 2, 9, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 40, 33, 2, 4, 1, 1, 1, 1, 1, 9, 8, 8, 5, 3, 1, 1, 3, 2, 2, 1, 1, 2, 3, 3, 3, 3, 9, 6, 4, 4, 1, 3, 1, 9, 3, 1, 4, 2,
+ 2, 32, 4, 1, 4, 1, 2, 1, 3, 2, 3, 3, 3, 2, 5, 2, 5, 3, 140,23, 2, 1, 1, 1, 3, 5, 3, 3, 5, 2, 2, 2, 2, 1, 45, 8, 3, 1, 1, 1, 1,
+ 1, 1, 30, 3, 2, 3, 2, 16, 15, 1, 1, 1, 1, 14, 4, 7, 4, 14, 4, 2, 2, 2, 5, 2, 1, 1, 15, 3, 3, 3, 1, 1, 3, 3, 3, 5, 3, 2, 18, 3, 3,
+ 3, 3, 1, 4, 2, 2, 3, 2, 7, 2, 2, 1, 2, 2, 2, 2, 5, 1, 1, 2, 2, 1, 1, 22, 2, 2, 3, 2, 2, 2, 11, 1, 3, 3, 1, 1, 1, 1, 4, 1, 54,
+ 20, 4, 12, 2, 4, 2, 18, 2, 2, 10, 3, 2, 13, 5, 2, 2, 2, 12, 9, 3, 17, 2, 9, 6, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132,2, 3,
+ 12, 4, 3, 3, 1, 1, 1, 5, 2, 16, 2, 2, 6, 6, 6, 5, 5, 25, 12, 10, 6, 2, 1, 25, 7, 4, 4, 1, 1, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 8, 13, 6, 1, 1, 5, 5, 2, 1, 2, 2, 1, 1, 17, 4, 4, 3, 3, 8, 8, 82, 10, 4, 4, 4, 4, 4, 4, 2, 19, 1, 17, 2, 3, 15, 1, 1, 1,
+ 1, 4, 4, 2, 4, 3, 3, 2, 2, 3, 3, 6, 2, 17, 3, 13, 8, 6, 2, 1, 12, 1, 4, 4, 3, 3, 4, 4, 2, 1, 1, 3, 93, 4, 2, 3, 1, 1, 1, 13, 2,
+ 8, 4, 1, 18, 7, 1, 1, 1, 1, 4, 35, 27, 19, 14, 9, 3, 2, 2, 3, 2, 1, 3, 1, 5, 2, 2, 2, 4, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 1, 78,
+ 2, 8, 3, 2, 11, 3, 3, 2, 1, 4, 9, 5, 4, 2, 12, 2, 5, 1, 1, 8, 4, 10, 4, 3, 9, 3, 2, 2, 2, 1, 3, 2, 25, 5, 3, 2, 2, 6, 1, 3, 3,
+ 3, 10, 9, 5, 2, 9, 3, 3, 2, 4, 4, 1, 1, 1, 1, 2, 59, 3, 4, 2, 2, 7, 2, 26, 2, 5, 4, 2, 5, 4, 1, 2, 2, 8, 4, 3, 1, 51, 7, 3, 5,
+ 3, 15, 2, 2, 2, 2, 9, 3, 3, 2, 2, 3, 2, 2, 2, 3, 2, 1, 1, 1, 12, 2, 9, 7, 5, 4, 2, 1, 1, 7, 6, 4, 4, 11, 2, 6, 3, 24, 2, 2, 2,
+ 2, 3, 2, 11, 7, 2, 4, 3, 3, 2, 3, 1, 16, 2, 4, 2, 7, 3, 2, 15, 1, 5, 2, 2, 2, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 169,7, 2, 2, 2, 3, 2, 10, 1, 1, 1, 3, 3, 3, 3, 3, 3, 4, 1, 1, 6, 1, 1, 1, 2, 2, 7, 1, 1, 4, 4, 4, 4, 3, 3, 6, 3, 3, 3, 2, 2,
+ 3, 6, 1, 3, 3, 41, 1, 1, 3, 3, 3, 3, 2, 9, 9, 2, 20, 8, 4, 2, 6, 6, 7, 2, 2, 2, 2, 13, 3, 4, 2, 4, 4, 2, 2, 2, 13, 8, 8, 5, 4,
+ 2, 21, 2, 1, 17, 14, 3, 11, 9, 2, 2, 1, 17, 1, 14, 8, 4, 2, 1, 1, 6, 5, 3, 2, 1, 1, 2, 2, 48, 5, 2, 10, 5, 2, 5, 5, 3, 15, 2, 12, 9,
+ 4, 8, 4, 4, 1, 1, 3, 2, 3, 237,15, 8, 5, 4, 3, 2, 2, 2, 1, 1, 31, 23, 2, 1, 1, 3, 10, 4, 3, 4, 2, 2, 2, 10, 3, 12, 2, 4, 3, 145,13,
+ 2, 5, 3, 2, 2, 84, 18, 4, 6, 2, 6, 5, 5, 1, 4, 28, 7, 4, 2, 1, 8, 4, 14, 3, 2, 2, 2, 2, 21, 4, 3, 1, 1, 1, 1, 4, 3, 3, 4, 3, 1,
+ 3, 1, 1, 1, 5, 3, 1, 1, 1, 1, 4, 4, 4, 2, 1, 4, 2, 13, 2, 1, 1, 2, 1, 35, 5, 3, 3, 3, 4, 2, 10, 1, 1, 1, 7, 6, 6, 3, 3, 2, 2,
+ 2, 3, 1, 3, 3, 2, 2, 5, 5, 2, 2, 214,6, 1, 2, 108,95, 2, 9, 6, 3, 4, 3, 3, 2, 6, 4, 2, 2, 21, 4, 5, 2, 5, 2, 16, 2, 2, 3, 2, 9,
+ 2, 3, 23, 4, 4, 2, 11, 3, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 36, 5, 14, 2, 1, 1, 2, 2, 11, 7, 3, 4, 5, 11, 1, 1, 4, 1, 1, 1,
+ 1, 6, 4, 3, 3, 13, 4, 2, 3, 2, 6, 2, 2, 1, 1, 10, 1, 1, 1, 2, 3, 2, 2, 1, 74, 2, 2, 34, 24, 9, 2, 1, 3, 1, 1, 1, 2, 1, 10, 2, 2,
+ 4, 3, 3, 2, 1, 1, 4, 1, 5, 2, 1, 3, 2, 2, 11, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 7, 18, 7, 4, 2, 2, 2, 4, 18, 3, 2, 2, 1, 1, 5, 2,
+ 4, 3, 3, 1, 1, 163,61, 19, 3, 13, 7, 5, 5, 3, 8, 6, 4, 2, 7, 2, 2, 6, 5, 3, 3, 3, 2, 1, 4, 2, 2, 30, 1, 7, 5, 2, 2, 2, 2, 2, 4,
+ 4, 4, 7, 28, 4, 1, 1, 1, 1, 8, 5, 5, 2, 2, 2, 2, 2, 1, 1, 23, 4, 2, 8, 8, 7, 2, 17, 4, 4, 1, 5, 2, 1, 1, 2, 2, 37, 3, 3, 3, 3,
+ 2, 4, 3, 3, 10, 2, 7, 7, 3, 3, 1, 1, 3, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 45, 6, 3, 3, 2, 2, 3, 2, 1, 8, 6, 3, 4, 2, 4,
+ 1, 1, 1, 1, 3, 5, 3, 1, 5, 5, 5, 23, 7, 7, 7, 7, 2, 5, 3, 2, 2, 2, 2, 2, 5, 2, 2, 2, 1, 1, 27, 2, 1, 1, 3, 2, 1, 1, 3, 2, 1,
1, 7, 4, 4, 1, 5, 2, 2, 2, 1, 41, 9, 4, 2, 2, 17, 1, 1, 1, 3, 3, 3, 2, 13, 11, 12, 2, 10, 9, 8, 1, 1, 4, 4, 1, 1, 2, 2, 2, 2, 122,
- 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 2, 24, 2, 3, 1, 1, 1, 1, 6, 6, 6, 6, 4, 1, 2, 1, 1, 1, 1, 1, 1, 6, 2, 2, 2, 1, 1, 1, 2, 2, 2,
- 2, 1, 1, 3, 2, 2, 2, 2, 1, 4, 1, 1, 1, 1, 1, 1, 9, 3, 3, 3, 2, 6, 5, 2, 4, 2, 1, 1, 1, 1, 1, 5, 1, 1, 3, 9, 3, 3, 2, 2, 1,
- 2, 2, 13, 4, 1, 1, 1, 2, 4, 1, 2, 2, 2, 11, 11, 6, 4, 3, 3, 1, 1, 1, 1, 1, 1, 10, 4, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 6, 2, 2, 1, 1, 4, 2, 2, 2, 2, 1, 1, 1, 4, 4, 69, 1, 1, 1, 3, 3, 5, 3, 53, 4, 2, 11, 5, 5, 4, 4, 26, 3, 3, 6, 9, 2, 4, 3, 4,
- 3, 6, 3, 3, 1, 1, 1, 1, 2, 5, 4, 6, 3, 3, 3, 14, 2, 1, 1, 3, 4, 4, 2, 2, 2, 3, 2, 2, 5, 5, 3, 1, 22, 4, 3, 2, 2, 2, 2, 2, 2,
- 1, 6, 3, 2, 2, 2, 1, 1, 3, 1, 13, 6, 3, 2, 2, 2, 2, 1, 21, 2, 5, 2, 2, 1, 2, 3, 1, 1, 1, 1, 29, 7, 4, 4, 2, 3, 3, 2, 2, 1, 1,
- 8, 1, 4, 5, 2, 2, 1, 19, 5, 1, 1, 2, 6, 1, 1, 3, 3, 3, 2, 2, 11, 1, 2, 3, 2, 2, 3, 3, 3, 3, 1, 10, 4, 2, 2, 3, 7, 2, 3, 3, 1,
- 2, 75, 7, 4, 4, 4, 4, 2, 2, 2, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 36, 4, 1, 1, 1, 1, 1, 2, 14, 2, 2, 2, 12, 5,
- 1, 4, 3, 18, 15, 12, 6, 2, 5, 1, 2, 2, 12, 11, 4, 4, 4, 1, 1, 4, 4, 4, 3, 206,16, 6, 3, 3, 3, 2, 7, 2, 2, 3, 50, 14, 6, 4, 16, 1, 2,
- 7, 5, 3, 2, 11, 9, 2, 2, 1, 1, 4, 2, 2, 2, 2, 3, 1, 1, 6, 6, 3, 6, 3, 62, 4, 4, 41, 5, 5, 2, 3, 3, 3, 2, 2, 7, 1, 4, 2, 2, 13,
- 6, 6, 1, 13, 8, 8, 8, 3, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 55, 6, 6, 6, 4, 18, 8, 8, 8, 6, 3, 5, 5, 5, 5, 5, 5, 5, 5, 3, 2, 1, 30,
- 5, 5, 5, 8, 8, 8, 8, 8, 5, 7, 9, 8, 8, 8, 7, 41, 2, 3, 31, 2, 1, 28, 1, 10, 7, 3, 9, 3, 1, 1, 7, 2, 1, 1, 3, 9, 2, 2, 3, 1, 1,
- 1, 2, 1, 53, 3, 2, 2, 2, 3, 2, 2, 2, 42, 21, 1, 1, 1, 3, 3, 8, 8, 4, 3, 3, 5, 2, 16, 8, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 116,19, 1,
- 3, 1, 12, 1, 11, 6, 4, 5, 1, 1, 3, 1, 3, 1, 2, 15, 3, 8, 5, 2, 4, 2, 7, 4, 3, 12, 2, 4, 3, 2, 15, 1, 2, 2, 3, 2, 2, 2, 4, 3, 2,
- 3, 6, 3, 2, 4, 43, 4, 6, 2, 2, 14, 11, 10, 9, 3, 2, 4, 12, 2, 2, 5, 4, 2, 1, 5, 2, 2, 1, 157,19, 8, 5, 1, 7, 2, 2, 8, 1, 1, 100,17,
- 8, 6, 5, 5, 5, 4, 2, 1, 1, 1, 3, 3, 1, 2, 2, 2, 4, 3, 3, 5, 3, 3, 3, 3, 3, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 20, 1, 4,
- 1, 1, 1, 4, 4, 4, 4, 37, 4, 2, 3, 1, 1, 1, 1, 1, 2, 4, 1, 1, 1, 3, 3, 1, 3, 2, 2, 2, 10, 8, 8, 7, 4, 4, 2, 2, 8, 3, 3, 1, 1,
- 1, 1, 1, 1, 3, 2, 2, 11, 3, 1, 5, 1, 2, 5, 3, 1, 1, 1, 1, 1, 1, 4, 52, 9, 1, 16, 5, 6, 8, 3, 2, 2, 4, 1, 1, 3, 2, 3, 2, 69, 4,
- 2, 4, 1, 2, 2, 2, 1, 4, 3, 2, 2, 32, 6, 1, 2, 11, 5, 3, 2, 2, 2, 3, 1, 1, 2, 3, 2, 3, 3, 4, 2, 2, 2, 3, 74, 4, 2, 23, 20, 17, 1,
- 12, 9, 3, 1, 3, 3, 8, 4, 2, 3, 25, 2, 2, 7, 3, 3, 5, 2, 5, 5, 4, 4, 5, 3, 2, 2, 1, 1, 4, 2, 1, 101,17, 2, 9, 5, 1, 1, 3, 9, 3,
- 2, 3, 3, 2, 4, 3, 5, 4, 30, 3, 2, 1, 1, 1, 18, 2, 1, 3, 1, 13, 1, 4, 4, 4, 1, 1, 1, 1, 1, 4, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 8,
- 1, 1, 4, 9, 2, 4, 4, 22, 8, 3, 1, 1, 3, 3, 1, 2, 2, 1, 1, 1, 1, 3, 3, 3, 2, 1, 30, 3, 2, 13, 4, 8, 5, 3, 3, 127,36, 1, 6, 3, 3,
- 3, 3, 7, 4, 4, 9, 4, 2, 2, 5, 1, 2, 7, 3, 4, 1, 2, 1, 23, 2, 1, 1, 3, 14, 2, 2, 2, 7, 1, 1, 1, 23, 2, 3, 3, 2, 2, 9, 4, 3, 1,
- 3, 2, 16, 6, 5, 4, 9, 1, 1, 1, 6, 2, 3, 3, 3, 4, 2, 2, 71, 9, 2, 4, 2, 3, 1, 13, 4, 5, 3, 3, 10, 2, 2, 14, 6, 5, 7, 1, 3, 2, 5,
- 2, 2, 44, 4, 3, 9, 8, 4, 1, 1, 1, 13, 1, 5, 2, 2, 3, 1, 1, 1, 1, 5, 2, 1, 8, 5, 1, 10, 4, 2, 2, 2, 7, 7, 5, 2, 2, 1, 106,24, 3,
- 1, 13, 2, 3, 21, 2, 2, 2, 2, 2, 2, 5, 5, 2, 3, 1, 2, 2, 2, 2, 29, 5, 2, 2, 3, 8, 4, 2, 1, 2, 26, 2, 2, 2, 3, 2, 2, 2, 2, 2, 1,
- 9, 3, 3, 4, 41, 2, 2, 3, 3, 2, 2, 26, 23, 14, 11, 3, 3, 5, 3, 3, 2, 1, 2, 2, 3, 3, 153,2, 1, 6, 2, 2, 1, 1, 1, 1, 1, 41, 2, 21, 7,
- 5, 5, 2, 2, 2, 1, 5, 3, 10, 3, 2, 4, 2, 1, 1, 1, 1, 4, 3, 1, 15, 4, 3, 2, 1, 1, 1, 7, 5, 52, 15, 3, 3, 3, 8, 8, 8, 7, 5, 3, 3,
- 5, 4, 4, 4, 2, 3, 1, 1, 1, 1, 1, 14, 3, 3, 9, 3, 3, 2, 6, 1, 2, 4, 8, 6, 2, 2, 2, 3, 17, 1, 2, 7, 3, 2, 2, 2, 2, 3, 2, 23, 6,
- 2, 4, 11, 3, 2, 1, 1, 1, 7, 4, 11, 3, 2, 1, 5, 5, 1, 1, 1, 1, 1, 32, 3, 3, 2, 2, 3, 5, 2, 2, 8, 3, 1, 1, 57, 5, 2, 22, 15, 7, 2,
- 1, 4, 3, 3, 13, 2, 1, 1, 1, 1, 6, 4, 3, 2, 2, 2, 1, 3, 1, 1, 9, 3, 1, 1, 1, 1, 4, 4, 76, 7, 7, 6, 9, 8, 7, 45, 6, 2, 1, 1, 4,
- 4, 3, 1, 18, 5, 12, 4, 3, 6, 4, 4, 4, 3, 2, 2, 1, 2, 2, 2, 1, 1, 3, 3, 3, 3, 3, 18, 3, 5, 1, 1, 2, 2, 1, 1, 4, 2, 2, 111,8, 1,
- 1, 1, 1, 1, 2, 11, 3, 1, 1, 4, 4, 2, 2, 2, 2, 8, 2, 1, 1, 3, 2, 1, 6, 3, 6, 6, 4, 4, 4, 3, 26, 2, 16, 12, 6, 3, 4, 3, 5, 2, 2,
- 6, 3, 4, 4, 7, 3, 5, 4, 1, 1, 1, 1, 5, 2, 2, 31, 14, 1, 1, 1, 7, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 22, 4, 7, 5, 1, 10, 3, 4, 3,
- 2, 10, 4, 3, 3, 3, 4, 1, 2, 2, 1, 1, 1, 48, 9, 5, 2, 2, 3, 2, 12, 6, 2, 1, 3, 2, 2, 2, 2, 16, 2, 14, 6, 4, 3, 5, 5, 4, 2, 2, 2,
- 2, 176,30, 2, 2, 3, 3, 2, 10, 8, 7, 7, 4, 3, 43, 3, 14, 14, 14, 6, 2, 4, 2, 4, 9, 8, 5, 9, 8, 5, 4, 4, 4, 10, 2, 7, 7, 6, 28, 1, 1,
- 1, 1, 7, 7, 2, 4, 4, 3, 2, 2, 2, 2, 10, 8, 4, 3, 3, 3, 6, 4, 1, 1, 14, 12, 11, 11, 9, 5, 1, 2, 4, 17, 7, 8, 3, 3, 114,11, 1, 1, 1,
- 4, 15, 14, 2, 7, 3, 2, 2, 2, 4, 1, 1, 1, 1, 2, 20, 2, 11, 5, 5, 5, 2, 2, 2, 3, 2, 4, 2, 3, 3, 53, 12, 1, 1, 1, 1, 1, 1, 5, 1, 33,
- 2, 1, 1, 1, 1, 1, 2, 2, 7, 6, 6, 2, 10, 4, 4, 4, 2, 2, 5, 5, 3, 3, 3, 3, 3, 3, 1, 4, 2, 2, 6, 2, 3, 2, 11, 2, 7, 4, 4, 4, 4,
- 3, 3, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1, 4, 2, 3, 2, 2, 1, 1, 2, 2, 3, 2, 12, 9, 2, 1, 1, 2, 3, 1, 1, 1,
- 12, 2, 4, 51, 13, 2, 2, 2, 5, 3, 3, 3, 2, 2, 22, 4, 10, 4, 2, 2, 5, 1, 1, 10, 7, 7, 5, 5, 3, 3, 4, 9, 1, 3, 2, 8, 2, 28, 19, 15, 15,
- 3, 9, 4, 2, 4, 6, 2, 2, 1, 1, 11, 6, 5, 4, 4, 4, 4, 19, 6, 1, 3, 4, 2, 20, 3, 4, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 3, 3, 1, 3,
- 2, 4, 3, 118,32, 14, 7, 7, 3, 9, 9, 1, 1, 37, 3, 2, 2, 4, 20, 10, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1, 14, 2, 4, 2, 1, 1, 5, 5, 2, 2, 2,
- 3, 2, 20, 10, 10, 10, 6, 10, 8, 8, 8, 2, 2, 5, 2, 3, 1, 2, 19, 7, 5, 2, 3, 2, 5, 1, 3, 3, 18, 3, 1, 1, 1, 1, 1, 5, 3, 2, 2, 2, 7,
- 6, 6, 6, 3, 64, 5, 2, 2, 5, 1, 1, 44, 5, 3, 4, 3, 3, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 15, 5, 4, 6, 6, 3, 7, 3, 2, 4, 3,
- 1, 1, 3, 1, 1, 1, 1, 68, 6, 1, 3, 7, 2, 1, 3, 3, 1, 5, 5, 5, 5, 3, 2, 2, 2, 1, 41, 40, 39, 1, 1, 1, 1, 1, 8, 8, 4, 7, 6, 2, 2,
- 2, 5, 1, 3, 15, 2, 4, 2, 3, 10, 4, 3, 3, 3, 2, 13, 1, 6, 1, 2, 1, 37, 7, 3, 2, 12, 2, 8, 7, 9, 3, 1, 2, 1, 1, 1, 7, 1, 5, 3, 1,
- 1, 67, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 2, 2, 2, 2, 2, 3, 48, 10, 8, 1, 15, 13, 2, 18, 12, 11, 2, 6, 1, 1, 1, 1, 1, 1, 3, 1, 133,1,
- 8, 1, 3, 33, 1, 9, 7, 7, 7, 7, 5, 22, 22, 18, 4, 6, 4, 2, 2, 2, 6, 4, 77, 1, 1, 1, 1, 1, 1, 9, 3, 3, 3, 3, 3, 3, 3, 10, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 5, 3, 3, 3, 2, 2, 2, 2, 1, 1, 22, 15, 12, 7, 7, 3, 3, 3, 3, 3, 3, 3, 8, 6, 6,
- 2, 7, 2, 2, 1, 2, 1, 4, 1, 2, 4, 5, 3, 3, 2, 1, 1, 2, 2, 1, 7, 1, 5, 3, 3, 4, 2, 3, 1, 203,1, 1, 1, 1, 1, 41, 5, 4, 11, 4, 3,
- 3, 6, 1, 1, 1, 1, 1, 14, 2, 2, 6, 1, 5, 1, 4, 4, 2, 1, 1, 79, 12, 4, 4, 6, 4, 2, 1, 21, 6, 5, 4, 4, 2, 30, 5, 2, 4, 2, 3, 1, 6,
- 3, 3, 1, 1, 2, 2, 39, 8, 2, 3, 3, 1, 1, 2, 5, 4, 2, 2, 2, 5, 3, 2, 21, 6, 4, 1, 7, 7, 3, 4, 1, 1, 10, 3, 2, 2, 1, 1, 1, 3, 3,
- 2, 1, 1, 80, 1, 1, 34, 4, 5, 7, 7, 5, 2, 2, 8, 6, 2, 2, 1, 1, 1, 8, 5, 5, 5, 4, 2, 2, 5, 2, 3, 3, 3, 1, 3, 6, 1, 1, 1, 1, 1,
- 1, 2, 2, 2, 2, 1, 2, 6, 4, 38, 10, 6, 2, 10, 2, 4, 3, 5, 4, 1, 1, 4, 1, 89, 20, 2, 1, 1, 3, 5, 2, 2, 2, 1, 3, 1, 1, 1, 4, 1, 1,
- 6, 3, 2, 2, 2, 13, 5, 4, 2, 1, 2, 4, 3, 2, 6, 1, 4, 3, 2, 9, 1, 1, 1, 1, 2, 2, 2, 1, 1, 8, 5, 2, 1, 1, 3, 3, 120,2, 2, 2, 24,
- 3, 6, 3, 2, 3, 1, 1, 1, 5, 1, 3, 2, 3, 2, 1, 1, 1, 1, 1, 20, 16, 4, 4, 3, 3, 3, 8, 7, 3, 2, 1, 1, 2, 10, 1, 5, 3, 3, 3, 1, 1,
- 2, 1, 1, 3, 2, 1, 1, 8, 4, 1, 3, 2, 5, 5, 5, 5, 3, 2, 9, 6, 5, 1, 1, 1, 10, 3, 2, 1, 1, 1, 1, 13, 6, 4, 1, 1, 1, 3, 3, 4, 1,
- 1, 1, 16, 2, 4, 2, 1, 1, 3, 2, 8, 3, 1, 1, 1, 1, 1, 2, 1, 1, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 1, 1,
- 17, 3, 1, 1, 2, 3, 3, 145,15, 3, 2, 1, 2, 1, 13, 2, 4, 4, 2, 21, 3, 2, 2, 2, 2, 2, 3, 24, 5, 2, 2, 7, 3, 2, 1, 1, 1, 2, 6, 2, 3,
- 5, 50, 8, 4, 3, 3, 1, 2, 5, 4, 4, 1, 8, 8, 7, 6, 4, 4, 188,9, 4, 2, 12, 6, 2, 2, 2, 2, 2, 2, 3, 2, 38, 7, 2, 8, 5, 3, 3, 1, 3,
- 2, 2, 4, 2, 3, 2, 2, 4, 7, 2, 2, 2, 2, 93, 6, 4, 3, 3, 3, 2, 2, 2, 2, 7, 1, 4, 2, 9, 3, 1, 7, 6, 3, 1, 2, 2, 2, 6, 2, 3, 7,
- 3, 2, 2, 2, 6, 5, 5, 5, 1, 16, 1, 1, 9, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 7, 5, 3, 3, 2, 9, 2, 4, 11, 8, 8, 8, 5, 3, 3, 3,
- 2, 2, 2, 4, 1, 1, 120,3, 19, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 2, 1, 3, 9, 9, 7, 11, 5, 3, 10, 4, 1, 1, 2, 1, 2, 2, 17, 12, 7,
- 3, 2, 2, 8, 1, 1, 1, 1, 1, 2, 5, 2, 7, 2, 2, 4, 2, 3, 1, 1, 1, 2, 7, 1, 4, 2, 1, 3, 1, 4, 1, 1, 25, 1, 2, 3, 9, 2, 3, 13, 9,
- 3, 88, 6, 1, 1, 1, 4, 2, 1, 1, 2, 6, 21, 8, 1, 1, 1, 7, 3, 2, 2, 9, 4, 4, 2, 3, 2, 2, 2, 8, 3, 1, 5, 3, 6, 5, 4, 2, 4, 2, 5,
- 2, 50, 17, 3, 1, 2, 2, 6, 1, 1, 1, 3, 2, 4, 4, 3, 4, 9, 3, 1, 1, 3, 107,2, 2, 2, 2, 4, 3, 3, 1, 41, 4, 14, 9, 6, 2, 8, 1, 1, 3,
- 3, 5, 11, 1, 4, 1, 1, 1, 2, 10, 1, 1, 1, 9, 8, 4, 16, 4, 3, 1, 1, 1, 2, 1, 1, 1, 63, 7, 3, 1, 1, 19, 2, 9, 2, 6, 2, 4, 3, 4, 6,
- 4, 2, 5, 6, 1, 1, 48, 2, 2, 2, 3, 1, 1, 2, 5, 1, 2, 2, 2, 2, 1, 1, 11, 7, 4, 1, 9, 1, 1, 1, 1, 2, 9, 4, 2, 17, 1, 3, 2, 2, 3,
- 7, 3, 60, 9, 2, 2, 5, 4, 4, 3, 15, 3, 2, 2, 1, 7, 2, 2, 2, 8, 4, 2, 7, 2, 7, 3, 5, 3, 18, 4, 1, 1, 1, 3, 2, 3, 2, 2, 1, 1, 4,
- 2, 3, 2, 20, 3, 2, 3, 1, 1, 1, 4, 4, 2, 2, 12, 4, 1, 121,21, 6, 2, 4, 2, 3, 31, 6, 2, 7, 3, 3, 6, 5, 4, 4, 3, 4, 2, 16, 3, 8, 2,
- 1, 1, 1, 1, 1, 3, 16, 6, 6, 2, 3, 5, 2, 2, 1, 3, 2, 10, 6, 4, 2, 10, 2, 1, 3, 22, 4, 3, 3, 1, 4, 1, 1, 2, 2, 11, 4, 2, 30, 5, 2,
- 4, 3, 9, 2, 2, 3, 2, 1, 1, 4, 2, 10, 4, 4, 4, 4, 3, 3, 1, 1, 3, 2, 7, 5, 2, 2, 47, 4, 30, 11, 1, 4, 2, 5, 3, 1, 4, 5, 4, 2, 3,
- 2, 3, 2, 4, 2, 1, 1, 31, 3, 3, 14, 9, 4, 2, 2, 9, 3, 1, 71, 14, 3, 4, 2, 1, 1, 9, 2, 2, 2, 3, 15, 1, 3, 8, 3, 3, 5, 4, 1, 1, 3,
- 2, 2, 3, 5, 2, 2, 1, 3, 1, 1, 1, 1, 1, 11, 2, 2, 4, 2, 32, 5, 1, 1, 1, 1, 2, 4, 3, 2, 7, 4, 3, 3, 3, 2, 1, 1, 2, 3, 2, 12, 7,
- 5, 6, 4, 39, 3, 8, 2, 4, 7, 3, 3, 4, 4, 4, 8, 2, 2, 21, 4, 1, 8, 5, 3, 4, 2, 2, 6, 2, 4, 4, 4, 10, 3, 19, 5, 3, 1, 3, 4, 2, 2,
+ 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 2, 24, 2, 3, 1, 1, 1, 1, 6, 6, 6, 6, 4, 1, 2, 1, 1, 1, 1, 1, 1, 6, 2, 2, 2, 1, 1, 1, 2, 2, 2,
+ 2, 1, 1, 3, 2, 2, 2, 2, 1, 4, 1, 1, 1, 1, 1, 1, 9, 3, 3, 3, 2, 6, 5, 2, 4, 2, 1, 1, 1, 1, 1, 5, 1, 1, 3, 9, 3, 3, 2, 2, 1,
+ 2, 2, 13, 4, 1, 1, 1, 2, 4, 1, 2, 2, 2, 11, 11, 6, 4, 3, 3, 1, 1, 1, 1, 1, 1, 10, 4, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 6, 2, 2, 1, 1, 4, 2, 2, 2, 2, 1, 1, 1, 4, 4, 69, 1, 1, 1, 3, 3, 5, 3, 53, 4, 2, 11, 5, 5, 4, 4, 26, 3, 3, 6, 9, 2, 4, 3, 4,
+ 3, 6, 3, 3, 1, 1, 1, 1, 2, 5, 4, 6, 3, 3, 3, 14, 2, 1, 1, 3, 4, 4, 2, 2, 2, 3, 2, 2, 5, 5, 3, 1, 22, 4, 3, 2, 2, 2, 2, 2, 2,
+ 1, 6, 3, 2, 2, 2, 1, 1, 3, 1, 13, 6, 3, 2, 2, 2, 2, 1, 21, 2, 5, 2, 2, 1, 2, 3, 1, 1, 1, 1, 29, 7, 4, 4, 2, 3, 3, 2, 2, 1, 1,
+ 8, 1, 4, 5, 2, 2, 1, 19, 5, 1, 1, 2, 6, 1, 1, 3, 3, 3, 2, 2, 11, 1, 2, 3, 2, 2, 3, 3, 3, 3, 1, 10, 4, 2, 2, 3, 7, 2, 3, 3, 1,
+ 2, 75, 7, 4, 4, 4, 4, 2, 2, 2, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 36, 4, 1, 1, 1, 1, 1, 2, 14, 2, 2, 2, 12, 5,
+ 1, 4, 3, 18, 15, 12, 6, 2, 5, 1, 2, 2, 12, 11, 4, 4, 4, 1, 1, 4, 4, 4, 3, 206,16, 6, 3, 3, 3, 2, 7, 2, 2, 3, 50, 14, 6, 4, 16, 1, 2,
+ 7, 5, 3, 2, 11, 9, 2, 2, 1, 1, 4, 2, 2, 2, 2, 3, 1, 1, 6, 6, 3, 6, 3, 62, 4, 4, 41, 5, 5, 2, 3, 3, 3, 2, 2, 7, 1, 4, 2, 2, 13,
+ 6, 6, 1, 13, 8, 8, 8, 3, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 55, 6, 6, 6, 4, 18, 8, 8, 8, 6, 3, 5, 5, 5, 5, 5, 5, 5, 5, 3, 2, 1, 30,
+ 5, 5, 5, 8, 8, 8, 8, 8, 5, 7, 9, 8, 8, 8, 7, 41, 2, 3, 31, 2, 1, 28, 1, 10, 7, 3, 9, 3, 1, 1, 7, 2, 1, 1, 3, 9, 2, 2, 3, 1, 1,
+ 1, 2, 1, 53, 3, 2, 2, 2, 3, 2, 2, 2, 42, 21, 1, 1, 1, 3, 3, 8, 8, 4, 3, 3, 5, 2, 16, 8, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 116,19, 1,
+ 3, 1, 12, 1, 11, 6, 4, 5, 1, 1, 3, 1, 3, 1, 2, 15, 3, 8, 5, 2, 4, 2, 7, 4, 3, 12, 2, 4, 3, 2, 15, 1, 2, 2, 3, 2, 2, 2, 4, 3, 2,
+ 3, 6, 3, 2, 4, 43, 4, 6, 2, 2, 14, 11, 10, 9, 3, 2, 4, 12, 2, 2, 5, 4, 2, 1, 5, 2, 2, 1, 157,19, 8, 5, 1, 7, 2, 2, 8, 1, 1, 100,17,
+ 8, 6, 5, 5, 5, 4, 2, 1, 1, 1, 3, 3, 1, 2, 2, 2, 4, 3, 3, 5, 3, 3, 3, 3, 3, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 20, 1, 4,
+ 1, 1, 1, 4, 4, 4, 4, 37, 4, 2, 3, 1, 1, 1, 1, 1, 2, 4, 1, 1, 1, 3, 3, 1, 3, 2, 2, 2, 10, 8, 8, 7, 4, 4, 2, 2, 8, 3, 3, 1, 1,
+ 1, 1, 1, 1, 3, 2, 2, 11, 3, 1, 5, 1, 2, 5, 3, 1, 1, 1, 1, 1, 1, 4, 52, 9, 1, 16, 5, 6, 8, 3, 2, 2, 4, 1, 1, 3, 2, 3, 2, 69, 4,
+ 2, 4, 1, 2, 2, 2, 1, 4, 3, 2, 2, 32, 6, 1, 2, 11, 5, 3, 2, 2, 2, 3, 1, 1, 2, 3, 2, 3, 3, 4, 2, 2, 2, 3, 74, 4, 2, 23, 20, 17, 1,
+ 12, 9, 3, 1, 3, 3, 8, 4, 2, 3, 25, 2, 2, 7, 3, 3, 5, 2, 5, 5, 4, 4, 5, 3, 2, 2, 1, 1, 4, 2, 1, 101,17, 2, 9, 5, 1, 1, 3, 9, 3,
+ 2, 3, 3, 2, 4, 3, 5, 4, 30, 3, 2, 1, 1, 1, 18, 2, 1, 3, 1, 13, 1, 4, 4, 4, 1, 1, 1, 1, 1, 4, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 8,
+ 1, 1, 4, 9, 2, 4, 4, 22, 8, 3, 1, 1, 3, 3, 1, 2, 2, 1, 1, 1, 1, 3, 3, 3, 2, 1, 30, 3, 2, 13, 4, 8, 5, 3, 3, 127,36, 1, 6, 3, 3,
+ 3, 3, 7, 4, 4, 9, 4, 2, 2, 5, 1, 2, 7, 3, 4, 1, 2, 1, 23, 2, 1, 1, 3, 14, 2, 2, 2, 7, 1, 1, 1, 23, 2, 3, 3, 2, 2, 9, 4, 3, 1,
+ 3, 2, 16, 6, 5, 4, 9, 1, 1, 1, 6, 2, 3, 3, 3, 4, 2, 2, 71, 9, 2, 4, 2, 3, 1, 13, 4, 5, 3, 3, 10, 2, 2, 14, 6, 5, 7, 1, 3, 2, 5,
+ 2, 2, 44, 4, 3, 9, 8, 4, 1, 1, 1, 13, 1, 5, 2, 2, 3, 1, 1, 1, 1, 5, 2, 1, 8, 5, 1, 10, 4, 2, 2, 2, 7, 7, 5, 2, 2, 1, 106,24, 3,
+ 1, 13, 2, 3, 21, 2, 2, 2, 2, 2, 2, 5, 5, 2, 3, 1, 2, 2, 2, 2, 29, 5, 2, 2, 3, 8, 4, 2, 1, 2, 26, 2, 2, 2, 3, 2, 2, 2, 2, 2, 1,
+ 9, 3, 3, 4, 41, 2, 2, 3, 3, 2, 2, 26, 23, 14, 11, 3, 3, 5, 3, 3, 2, 1, 2, 2, 3, 3, 153,2, 1, 6, 2, 2, 1, 1, 1, 1, 1, 41, 2, 21, 7,
+ 5, 5, 2, 2, 2, 1, 5, 3, 10, 3, 2, 4, 2, 1, 1, 1, 1, 4, 3, 1, 15, 4, 3, 2, 1, 1, 1, 7, 5, 52, 15, 3, 3, 3, 8, 8, 8, 7, 5, 3, 3,
+ 5, 4, 4, 4, 2, 3, 1, 1, 1, 1, 1, 14, 3, 3, 9, 3, 3, 2, 6, 1, 2, 4, 8, 6, 2, 2, 2, 3, 17, 1, 2, 7, 3, 2, 2, 2, 2, 3, 2, 23, 6,
+ 2, 4, 11, 3, 2, 1, 1, 1, 7, 4, 11, 3, 2, 1, 5, 5, 1, 1, 1, 1, 1, 32, 3, 3, 2, 2, 3, 5, 2, 2, 8, 3, 1, 1, 57, 5, 2, 22, 15, 7, 2,
+ 1, 4, 3, 3, 13, 2, 1, 1, 1, 1, 6, 4, 3, 2, 2, 2, 1, 3, 1, 1, 9, 3, 1, 1, 1, 1, 4, 4, 76, 7, 7, 6, 9, 8, 7, 45, 6, 2, 1, 1, 4,
+ 4, 3, 1, 18, 5, 12, 4, 3, 6, 4, 4, 4, 3, 2, 2, 1, 2, 2, 2, 1, 1, 3, 3, 3, 3, 3, 18, 3, 5, 1, 1, 2, 2, 1, 1, 4, 2, 2, 111,8, 1,
+ 1, 1, 1, 1, 2, 11, 3, 1, 1, 4, 4, 2, 2, 2, 2, 8, 2, 1, 1, 3, 2, 1, 6, 3, 6, 6, 4, 4, 4, 3, 26, 2, 16, 12, 6, 3, 4, 3, 5, 2, 2,
+ 6, 3, 4, 4, 7, 3, 5, 4, 1, 1, 1, 1, 5, 2, 2, 31, 14, 1, 1, 1, 7, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 22, 4, 7, 5, 1, 10, 3, 4, 3,
+ 2, 10, 4, 3, 3, 3, 4, 1, 2, 2, 1, 1, 1, 48, 9, 5, 2, 2, 3, 2, 12, 6, 2, 1, 3, 2, 2, 2, 2, 16, 2, 14, 6, 4, 3, 5, 5, 4, 2, 2, 2,
+ 2, 176,30, 2, 2, 3, 3, 2, 10, 8, 7, 7, 4, 3, 43, 3, 14, 14, 14, 6, 2, 4, 2, 4, 9, 8, 5, 9, 8, 5, 4, 4, 4, 10, 2, 7, 7, 6, 28, 1, 1,
+ 1, 1, 7, 7, 2, 4, 4, 3, 2, 2, 2, 2, 10, 8, 4, 3, 3, 3, 6, 4, 1, 1, 14, 12, 11, 11, 9, 5, 1, 2, 4, 17, 7, 8, 3, 3, 114,11, 1, 1, 1,
+ 4, 15, 14, 2, 7, 3, 2, 2, 2, 4, 1, 1, 1, 1, 2, 20, 2, 11, 5, 5, 5, 2, 2, 2, 3, 2, 4, 2, 3, 3, 53, 12, 1, 1, 1, 1, 1, 1, 5, 1, 33,
+ 2, 1, 1, 1, 1, 1, 2, 2, 7, 6, 6, 2, 10, 4, 4, 4, 2, 2, 5, 5, 3, 3, 3, 3, 3, 3, 1, 4, 2, 2, 6, 2, 3, 2, 11, 2, 7, 4, 4, 4, 4,
+ 3, 3, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1, 4, 2, 3, 2, 2, 1, 1, 2, 2, 3, 2, 12, 9, 2, 1, 1, 2, 3, 1, 1, 1,
+ 12, 2, 4, 51, 13, 2, 2, 2, 5, 3, 3, 3, 2, 2, 22, 4, 10, 4, 2, 2, 5, 1, 1, 10, 7, 7, 5, 5, 3, 3, 4, 9, 1, 3, 2, 8, 2, 28, 19, 15, 15,
+ 3, 9, 4, 2, 4, 6, 2, 2, 1, 1, 11, 6, 5, 4, 4, 4, 4, 19, 6, 1, 3, 4, 2, 20, 3, 4, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 3, 3, 1, 3,
+ 2, 4, 3, 118,32, 14, 7, 7, 3, 9, 9, 1, 1, 37, 3, 2, 2, 4, 20, 10, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1, 14, 2, 4, 2, 1, 1, 5, 5, 2, 2, 2,
+ 3, 2, 20, 10, 10, 10, 6, 10, 8, 8, 8, 2, 2, 5, 2, 3, 1, 2, 19, 7, 5, 2, 3, 2, 5, 1, 3, 3, 18, 3, 1, 1, 1, 1, 1, 5, 3, 2, 2, 2, 7,
+ 6, 6, 6, 3, 64, 5, 2, 2, 5, 1, 1, 44, 5, 3, 4, 3, 3, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 15, 5, 4, 6, 6, 3, 7, 3, 2, 4, 3,
+ 1, 1, 3, 1, 1, 1, 1, 68, 6, 1, 3, 7, 2, 1, 3, 3, 1, 5, 5, 5, 5, 3, 2, 2, 2, 1, 41, 40, 39, 1, 1, 1, 1, 1, 8, 8, 4, 7, 6, 2, 2,
+ 2, 5, 1, 3, 15, 2, 4, 2, 3, 10, 4, 3, 3, 3, 2, 13, 1, 6, 1, 2, 1, 37, 7, 3, 2, 12, 2, 8, 7, 9, 3, 1, 2, 1, 1, 1, 7, 1, 5, 3, 1,
+ 1, 67, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 2, 2, 2, 2, 2, 3, 48, 10, 8, 1, 15, 13, 2, 18, 12, 11, 2, 6, 1, 1, 1, 1, 1, 1, 3, 1, 133,1,
+ 8, 1, 3, 33, 1, 9, 7, 7, 7, 7, 5, 22, 22, 18, 4, 6, 4, 2, 2, 2, 6, 4, 77, 1, 1, 1, 1, 1, 1, 9, 3, 3, 3, 3, 3, 3, 3, 10, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 5, 3, 3, 3, 2, 2, 2, 2, 1, 1, 22, 15, 12, 7, 7, 3, 3, 3, 3, 3, 3, 3, 8, 6, 6,
+ 2, 7, 2, 2, 1, 2, 1, 4, 1, 2, 4, 5, 3, 3, 2, 1, 1, 2, 2, 1, 7, 1, 5, 3, 3, 4, 2, 3, 1, 203,1, 1, 1, 1, 1, 41, 5, 4, 11, 4, 3,
+ 3, 6, 1, 1, 1, 1, 1, 14, 2, 2, 6, 1, 5, 1, 4, 4, 2, 1, 1, 79, 12, 4, 4, 6, 4, 2, 1, 21, 6, 5, 4, 4, 2, 30, 5, 2, 4, 2, 3, 1, 6,
+ 3, 3, 1, 1, 2, 2, 39, 8, 2, 3, 3, 1, 1, 2, 5, 4, 2, 2, 2, 5, 3, 2, 21, 6, 4, 1, 7, 7, 3, 4, 1, 1, 10, 3, 2, 2, 1, 1, 1, 3, 3,
+ 2, 1, 1, 80, 1, 1, 34, 4, 5, 7, 7, 5, 2, 2, 8, 6, 2, 2, 1, 1, 1, 8, 5, 5, 5, 4, 2, 2, 5, 2, 3, 3, 3, 1, 3, 6, 1, 1, 1, 1, 1,
+ 1, 2, 2, 2, 2, 1, 2, 6, 4, 38, 10, 6, 2, 10, 2, 4, 3, 5, 4, 1, 1, 4, 1, 89, 20, 2, 1, 1, 3, 5, 2, 2, 2, 1, 3, 1, 1, 1, 4, 1, 1,
+ 6, 3, 2, 2, 2, 13, 5, 4, 2, 1, 2, 4, 3, 2, 6, 1, 4, 3, 2, 9, 1, 1, 1, 1, 2, 2, 2, 1, 1, 8, 5, 2, 1, 1, 3, 3, 120,2, 2, 2, 24,
+ 3, 6, 3, 2, 3, 1, 1, 1, 5, 1, 3, 2, 3, 2, 1, 1, 1, 1, 1, 20, 16, 4, 4, 3, 3, 3, 8, 7, 3, 2, 1, 1, 2, 10, 1, 5, 3, 3, 3, 1, 1,
+ 2, 1, 1, 3, 2, 1, 1, 8, 4, 1, 3, 2, 5, 5, 5, 5, 3, 2, 9, 6, 5, 1, 1, 1, 10, 3, 2, 1, 1, 1, 1, 13, 6, 4, 1, 1, 1, 3, 3, 4, 1,
+ 1, 1, 16, 2, 4, 2, 1, 1, 3, 2, 8, 3, 1, 1, 1, 1, 1, 2, 1, 1, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 1, 1,
+ 17, 3, 1, 1, 2, 3, 3, 145,15, 3, 2, 1, 2, 1, 13, 2, 4, 4, 2, 21, 3, 2, 2, 2, 2, 2, 3, 24, 5, 2, 2, 7, 3, 2, 1, 1, 1, 2, 6, 2, 3,
+ 5, 50, 8, 4, 3, 3, 1, 2, 5, 4, 4, 1, 8, 8, 7, 6, 4, 4, 188,9, 4, 2, 12, 6, 2, 2, 2, 2, 2, 2, 3, 2, 38, 7, 2, 8, 5, 3, 3, 1, 3,
+ 2, 2, 4, 2, 3, 2, 2, 4, 7, 2, 2, 2, 2, 93, 6, 4, 3, 3, 3, 2, 2, 2, 2, 7, 1, 4, 2, 9, 3, 1, 7, 6, 3, 1, 2, 2, 2, 6, 2, 3, 7,
+ 3, 2, 2, 2, 6, 5, 5, 5, 1, 16, 1, 1, 9, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 7, 5, 3, 3, 2, 9, 2, 4, 11, 8, 8, 8, 5, 3, 3, 3,
+ 2, 2, 2, 4, 1, 1, 120,3, 19, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 2, 1, 3, 9, 9, 7, 11, 5, 3, 10, 4, 1, 1, 2, 1, 2, 2, 17, 12, 7,
+ 3, 2, 2, 8, 1, 1, 1, 1, 1, 2, 5, 2, 7, 2, 2, 4, 2, 3, 1, 1, 1, 2, 7, 1, 4, 2, 1, 3, 1, 4, 1, 1, 25, 1, 2, 3, 9, 2, 3, 13, 9,
+ 3, 88, 6, 1, 1, 1, 4, 2, 1, 1, 2, 6, 21, 8, 1, 1, 1, 7, 3, 2, 2, 9, 4, 4, 2, 3, 2, 2, 2, 8, 3, 1, 5, 3, 6, 5, 4, 2, 4, 2, 5,
+ 2, 50, 17, 3, 1, 2, 2, 6, 1, 1, 1, 3, 2, 4, 4, 3, 4, 9, 3, 1, 1, 3, 107,2, 2, 2, 2, 4, 3, 3, 1, 41, 4, 14, 9, 6, 2, 8, 1, 1, 3,
+ 3, 5, 11, 1, 4, 1, 1, 1, 2, 10, 1, 1, 1, 9, 8, 4, 16, 4, 3, 1, 1, 1, 2, 1, 1, 1, 63, 7, 3, 1, 1, 19, 2, 9, 2, 6, 2, 4, 3, 4, 6,
+ 4, 2, 5, 6, 1, 1, 48, 2, 2, 2, 3, 1, 1, 2, 5, 1, 2, 2, 2, 2, 1, 1, 11, 7, 4, 1, 9, 1, 1, 1, 1, 2, 9, 4, 2, 17, 1, 3, 2, 2, 3,
+ 7, 3, 60, 9, 2, 2, 5, 4, 4, 3, 15, 3, 2, 2, 1, 7, 2, 2, 2, 8, 4, 2, 7, 2, 7, 3, 5, 3, 18, 4, 1, 1, 1, 3, 2, 3, 2, 2, 1, 1, 4,
+ 2, 3, 2, 20, 3, 2, 3, 1, 1, 1, 4, 4, 2, 2, 12, 4, 1, 121,21, 6, 2, 4, 2, 3, 31, 6, 2, 7, 3, 3, 6, 5, 4, 4, 3, 4, 2, 16, 3, 8, 2,
+ 1, 1, 1, 1, 1, 3, 16, 6, 6, 2, 3, 5, 2, 2, 1, 3, 2, 10, 6, 4, 2, 10, 2, 1, 3, 22, 4, 3, 3, 1, 4, 1, 1, 2, 2, 11, 4, 2, 30, 5, 2,
+ 4, 3, 9, 2, 2, 3, 2, 1, 1, 4, 2, 10, 4, 4, 4, 4, 3, 3, 1, 1, 3, 2, 7, 5, 2, 2, 47, 4, 30, 11, 1, 4, 2, 5, 3, 1, 4, 5, 4, 2, 3,
+ 2, 3, 2, 4, 2, 1, 1, 31, 3, 3, 14, 9, 4, 2, 2, 9, 3, 1, 71, 14, 3, 4, 2, 1, 1, 9, 2, 2, 2, 3, 15, 1, 3, 8, 3, 3, 5, 4, 1, 1, 3,
+ 2, 2, 3, 5, 2, 2, 1, 3, 1, 1, 1, 1, 1, 11, 2, 2, 4, 2, 32, 5, 1, 1, 1, 1, 2, 4, 3, 2, 7, 4, 3, 3, 3, 2, 1, 1, 2, 3, 2, 12, 7,
+ 5, 6, 4, 39, 3, 8, 2, 4, 7, 3, 3, 4, 4, 4, 8, 2, 2, 21, 4, 1, 8, 5, 3, 4, 2, 2, 6, 2, 4, 4, 4, 10, 3, 19, 5, 3, 1, 3, 4, 2, 2,
2, 3, 3, 6, 2, 2, 21, 2, 1, 1, 1, 15, 15, 11, 6, 7, 1, 1, 4, 3, 64, 9, 5, 2, 5, 2, 5, 2, 2, 5, 1, 15, 3, 3, 6, 3, 2, 5, 5, 2, 104,
- 34, 3, 2, 3, 1, 19, 2, 9, 4, 3, 31, 4, 4, 12, 5, 2, 5, 15, 5, 1, 2, 2, 11, 3, 4, 2, 5, 31, 8, 6, 4, 5, 2, 5, 2, 2, 4, 31, 5, 7, 6,
- 5, 4, 27, 4, 2, 3, 2, 2, 3, 6, 1, 2, 3, 11, 2, 1, 2, 22, 8, 7, 3, 1, 1, 2, 2, 1, 1, 3, 1, 35, 3, 1, 3, 2, 8, 5, 3, 4, 3, 5, 2,
- 1, 1, 1, 32, 3, 2, 10, 2, 1, 1, 2, 4, 5, 3, 2, 13, 4, 4, 3, 10, 4, 2, 4, 1, 2, 60, 13, 3, 1, 1, 19, 3, 6, 5, 2, 5, 2, 7, 4, 2, 2,
- 2, 2, 2, 28, 2, 2, 2, 2, 17, 7, 5, 3, 2, 2, 2, 122,25, 8, 3, 3, 1, 5, 1, 35, 1, 1, 1, 1, 1, 2, 6, 6, 8, 39, 2, 7, 9, 3, 3, 3, 2,
- 6, 2, 4, 5, 3, 12, 3, 7, 26, 3, 3, 2, 1, 2, 2, 2, 4, 3, 2, 2, 127,4, 2, 20, 5, 6, 5, 5, 20, 8, 5, 2, 9, 9, 1, 4, 3, 2, 2, 5, 3,
- 2, 14, 9, 3, 3, 4, 2, 3, 2, 31, 15, 2, 9, 5, 4, 3, 9, 3, 3, 4, 7, 2, 3, 11, 3, 1, 2, 3, 6, 1, 1, 2, 1, 1, 1, 5, 13, 6, 3, 2, 9,
- 4, 38, 15, 15, 13, 11, 8, 3, 4, 5, 3, 2, 2, 2, 2, 21, 5, 3, 2, 4, 2, 2, 1, 1, 1, 3, 35, 4, 17, 8, 3, 3, 7, 3, 1, 21, 14, 2, 2, 2, 11,
- 5, 5, 4, 4, 4, 3, 3, 3, 2, 6, 4, 4, 55, 2, 8, 1, 11, 5, 1, 2, 2, 10, 4, 2, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 41, 9, 7, 5, 5, 18,
- 3, 2, 4, 5, 2, 6, 2, 1, 212,18, 2, 2, 2, 3, 3, 2, 2, 9, 2, 7, 6, 4, 2, 11, 4, 2, 22, 4, 2, 2, 2, 5, 4, 2, 1, 12, 6, 4, 4, 2, 20,
- 18, 17, 2, 5, 6, 2, 1, 1, 1, 4, 83, 8, 3, 3, 3, 1, 27, 5, 15, 3, 6, 1, 17, 1, 1, 3, 8, 7, 3, 21, 20, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 4, 4, 99, 3, 3, 8, 4, 1, 11, 3, 2, 2, 2, 2, 2, 1, 1, 7, 7, 1, 1, 2, 1, 1, 1, 1, 1, 11, 7, 2, 2, 3, 2, 3, 28,
- 3, 4, 1, 1, 10, 10, 10, 3, 5, 3, 2, 2, 1, 1, 1, 1, 1, 3, 1, 1, 4, 7, 6, 2, 11, 6, 5, 3, 14, 2, 2, 2, 2, 9, 1, 3, 87, 11, 3, 2, 14,
- 8, 2, 2, 2, 3, 2, 3, 1, 1, 3, 1, 1, 13, 5, 4, 3, 5, 10, 6, 3, 3, 2, 7, 2, 4, 3, 31, 8, 1, 5, 2, 5, 3, 2, 1, 2, 7, 2, 2, 26, 2,
- 2, 2, 2, 5, 5, 5, 7, 5, 4, 3, 1, 1, 2, 2, 11, 1, 1, 1, 1, 1, 2, 1, 10, 5, 5, 3, 3, 2, 29, 25, 2, 2, 1, 7, 1, 2, 4, 3, 10, 2, 3,
- 1, 6, 4, 3, 6, 8, 1, 10, 4, 2, 1, 2, 17, 2, 1, 1, 1, 2, 4, 2, 2, 53, 6, 1, 2, 1, 6, 3, 12, 4, 3, 2, 10, 2, 18, 13, 3, 42, 4, 7, 2,
- 2, 7, 7, 4, 3, 5, 5, 3, 68, 2, 8, 4, 2, 2, 1, 12, 3, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 5, 2, 2, 2, 6, 3, 2, 1, 2, 4,
- 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 12, 8, 7, 4, 2, 14, 10, 9, 1, 1, 1, 4, 3, 3, 16, 7, 2, 3, 4, 100,3, 5, 3, 5, 2, 3, 2, 16, 5, 5, 1,
- 1, 1, 60, 20, 3, 2, 4, 2, 2, 7, 2, 4, 4, 4, 5, 1, 5, 3, 3, 2, 5, 3, 4, 3, 2, 2, 4, 86, 6, 2, 1, 13, 4, 3, 3, 6, 9, 2, 2, 2, 2,
- 4, 1, 1, 1, 2, 1, 1, 10, 7, 7, 10, 2, 3, 7, 2, 4, 8, 1, 1, 3, 127,5, 2, 16, 12, 2, 3, 7, 7, 1, 1, 4, 3, 7, 4, 3, 8, 1, 1, 1, 1,
- 4, 6, 1, 6, 29, 3, 2, 2, 2, 3, 5, 1, 4, 1, 1, 7, 12, 3, 2, 5, 5, 1, 2, 2, 13, 2, 2, 1, 1, 3, 3, 2, 5, 4, 4, 47, 6, 7, 3, 2, 2,
- 7, 1, 8, 8, 5, 2, 6, 1, 5, 72, 19, 3, 11, 8, 7, 4, 3, 10, 2, 5, 3, 3, 1, 1, 1, 1, 6, 2, 7, 5, 3, 3, 14, 5, 5, 2, 2, 59, 3, 1, 1,
- 1, 1, 2, 2, 4, 3, 1, 1, 1, 1, 5, 2, 3, 2, 2, 9, 1, 6, 5, 2, 11, 2, 2, 2, 9, 10, 5, 3, 1, 11, 3, 3, 1, 24, 2, 6, 3, 6, 3, 2, 8,
- 1, 1, 5, 2, 2, 1, 4, 10, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 12, 2, 4, 1, 3, 18, 6, 4, 6, 1, 4, 4, 2, 1, 1, 42, 3, 2, 2, 13, 7,
- 8, 3, 2, 2, 2, 3, 2, 2, 2, 4, 9, 2, 145,34, 3, 3, 1, 7, 3, 5, 2, 3, 2, 1, 1, 1, 28, 4, 1, 2, 2, 2, 1, 2, 4, 3, 5, 2, 2, 2, 2,
- 3, 3, 2, 3, 3, 30, 2, 2, 12, 6, 2, 2, 1, 1, 1, 5, 1, 3, 16, 2, 3, 2, 1, 4, 2, 8, 1, 2, 2, 5, 1, 1, 2, 2, 8, 3, 2, 5, 4, 2, 2,
- 30, 11, 8, 4, 1, 1, 2, 3, 3, 5, 13, 2, 3, 3, 2, 18, 1, 1, 8, 6, 5, 9, 3, 4, 4, 1, 5, 1, 2, 23, 10, 3, 2, 2, 5, 2, 2, 26, 1, 3, 3,
- 3, 2, 2, 3, 2, 2, 4, 2, 16, 10, 3, 3, 3, 3, 1, 1, 1, 2, 1, 1, 2, 40, 6, 8, 10, 2, 3, 4, 2, 2, 62, 2, 15, 3, 2, 10, 7, 6, 3, 2, 17,
- 2, 2, 2, 15, 7, 4, 3, 3, 6, 2, 2, 3, 6, 3, 4, 2, 5, 3, 20, 7, 6, 3, 2, 1, 1, 2, 2, 4, 2, 31, 1, 1, 3, 1, 1, 8, 2, 2, 1, 3, 6,
- 12, 6, 6, 5, 6, 4, 2, 1, 41, 3, 15, 3, 7, 15, 2, 7, 5, 2, 4, 7, 3, 18, 2, 1, 3, 3, 1, 31, 1, 1, 6, 2, 3, 2, 1, 1, 5, 4, 4, 3, 2,
- 3, 3, 2, 2, 2, 6, 4, 3, 4, 3, 20, 5, 5, 5, 2, 2, 2, 2, 2, 1, 1, 1, 1, 5, 1, 1, 1, 2, 2, 8, 7, 6, 3, 3, 17, 6, 5, 3, 2, 5, 10,
- 1, 7, 6, 3, 2, 11, 2, 1, 5, 1, 1, 1, 2, 11, 3, 2, 2, 39, 3, 2, 17, 2, 3, 4, 2, 3, 3, 5, 1, 6, 2, 1, 1, 1, 1, 76, 10, 4, 4, 2, 2,
- 2, 26, 3, 7, 2, 7, 3, 4, 3, 2, 3, 2, 5, 4, 1, 1, 2, 2, 9, 4, 2, 2, 5, 3, 11, 4, 3, 31, 1, 1, 7, 2, 4, 2, 1, 5, 3, 3, 2, 6, 3,
- 3, 1, 1, 30, 4, 3, 18, 13, 2, 5, 2, 2, 1, 1, 14, 5, 1, 1, 1, 1, 1, 5, 5, 103,40, 4, 3, 2, 4, 2, 2, 2, 16, 15, 6, 3, 2, 4, 1, 2, 3,
- 14, 2, 3, 5, 4, 17, 3, 6, 4, 2, 1, 1, 1, 8, 3, 7, 1, 1, 3, 3, 31, 7, 5, 12, 4, 5, 2, 5, 14, 3, 1, 1, 2, 2, 3, 1, 1, 2, 78, 7, 3,
- 3, 2, 2, 10, 7, 4, 15, 6, 3, 3, 1, 2, 2, 8, 4, 2, 19, 8, 2, 3, 4, 5, 4, 3, 3, 3, 3, 3, 2, 4, 2, 4, 2, 2, 3, 2, 4, 100,8, 3, 3,
- 3, 2, 10, 2, 1, 7, 2, 4, 2, 8, 4, 4, 3, 4, 3, 1, 1, 2, 3, 1, 1, 1, 1, 1, 23, 3, 3, 2, 8, 2, 1, 5, 25, 2, 4, 1, 1, 7, 4, 2, 2,
- 5, 4, 3, 3, 1, 1, 152,15, 5, 5, 2, 2, 2, 1, 2, 7, 2, 1, 2, 32, 9, 6, 7, 4, 4, 3, 2, 5, 11, 8, 7, 2, 2, 11, 3, 3, 3, 50, 17, 1, 3,
- 11, 2, 2, 1, 13, 8, 2, 9, 2, 2, 2, 3, 2, 8, 27, 4, 2, 2, 2, 3, 1, 1, 2, 1, 3, 9, 3, 3, 1, 37, 4, 1, 20, 6, 1, 12, 6, 10, 5, 2, 3,
- 10, 7, 3, 3, 3, 3, 2, 2, 5, 2, 2, 2, 1, 31, 3, 1, 3, 8, 5, 2, 2, 3, 4, 3, 15, 4, 1, 1, 2, 6, 3, 3, 2, 1, 1, 1, 1, 4, 1, 2, 1,
- 1, 1, 117,1, 1, 77, 3, 2, 2, 1, 12, 8, 6, 6, 4, 3, 1, 1, 1, 3, 3, 5, 4, 3, 4, 4, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 7, 3, 3, 3,
- 16, 10, 9, 2, 1, 1, 1, 3, 1, 1, 2, 6, 3, 3, 8, 5, 3, 2, 2, 2, 2, 6, 4, 6, 2, 3, 3, 8, 2, 2, 2, 3, 1, 8, 3, 2, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 1, 1, 2, 2, 4, 53, 3, 5, 4, 13, 3, 2, 2, 2, 1, 1, 1, 1, 3, 2, 2, 15, 10, 3, 1, 4, 4, 3, 2,
- 8, 3, 2, 2, 37, 6, 5, 5, 18, 14, 11, 5, 5, 5, 5, 5, 3, 5, 2, 3, 3, 55, 3, 1, 1, 1, 7, 2, 2, 2, 2, 10, 4, 27, 11, 3, 1, 1, 5, 2, 1,
- 5, 5, 3, 2, 2, 2, 1, 1, 4, 4, 4, 2, 37, 14, 3, 6, 1, 3, 3, 1, 1, 9, 2, 1, 1, 2, 1, 2, 1, 94, 4, 4, 7, 5, 1, 1, 1, 3, 1, 2, 1,
- 2, 3, 22, 3, 7, 3, 2, 3, 4, 15, 4, 1, 3, 3, 2, 28, 3, 1, 1, 1, 5, 3, 3, 2, 5, 1, 1, 2, 2, 6, 1, 2, 1, 1, 1, 1, 1, 2, 2, 8, 5,
- 2, 2, 2, 1, 12, 5, 52, 8, 4, 4, 5, 3, 4, 18, 4, 6, 4, 3, 8, 6, 3, 3, 26, 9, 4, 2, 2, 5, 4, 9, 6, 5, 2, 10, 2, 2, 2, 4, 3, 33, 4,
- 1, 1, 6, 3, 7, 4, 3, 3, 2, 6, 8, 4, 3, 9, 3, 4, 1, 2, 1, 9, 2, 5, 14, 10, 4, 2, 3, 7, 2, 3, 10, 3, 3, 11, 2, 2, 5, 4, 4, 2, 6,
- 2, 2, 14, 3, 3, 2, 2, 2, 3, 2, 20, 4, 9, 4, 3, 5, 3, 4, 8, 4, 3, 2, 8, 3, 12, 3, 4, 2, 3, 16, 8, 4, 3, 3, 188,12, 2, 2, 11, 5, 2,
- 3, 2, 2, 7, 4, 3, 2, 1, 1, 1, 9, 2, 3, 1, 10, 5, 3, 3, 3, 1, 1, 5, 2, 114,3, 3, 7, 3, 1, 1, 1, 5, 1, 4, 19, 1, 1, 4, 2, 2, 6,
- 32, 4, 4, 11, 10, 2, 5, 3, 6, 4, 2, 10, 3, 3, 21, 4, 3, 2, 7, 2, 4, 3, 15, 3, 4, 4, 1, 1, 1, 3, 1, 1, 91, 7, 12, 4, 3, 3, 7, 21, 2,
- 1, 2, 2, 5, 5, 1, 1, 10, 2, 2, 8, 3, 4, 3, 2, 2, 3, 8, 1, 2, 1, 1, 104,2, 1, 1, 1, 1, 1, 1, 5, 4, 4, 4, 3, 2, 5, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 2, 2, 14, 6, 3, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 12, 9, 9, 7, 2, 2, 2, 2, 2, 2, 16, 5, 2, 1, 1, 1, 1, 9, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 4, 2,
- 2, 6, 3, 1, 1, 1, 1, 1, 1, 2, 3, 2, 1, 1, 11, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 9, 3, 2, 2, 1, 1, 1, 3, 1,
- 12, 4, 3, 3, 3, 2, 2, 2, 1, 2, 2, 152,4, 1, 12, 9, 2, 3, 3, 1, 1, 1, 39, 2, 2, 3, 7, 4, 2, 2, 3, 7, 3, 4, 2, 2, 2, 6, 1, 1, 1,
- 1, 3, 5, 3, 3, 2, 26, 10, 6, 3, 4, 2, 2, 1, 3, 2, 1, 2, 3, 2, 2, 2, 6, 3, 4, 4, 1, 1, 1, 34, 27, 19, 19, 18, 4, 6, 2, 111,6, 1, 1,
- 2, 2, 19, 6, 3, 1, 5, 4, 3, 10, 3, 3, 3, 3, 3, 18, 2, 3, 1, 10, 7, 2, 4, 1, 1, 1, 5, 2, 2, 2, 6, 2, 3, 3, 7, 4, 4, 3, 1, 1, 1,
- 1, 2, 2, 16, 2, 7, 5, 3, 8, 4, 2, 81, 2, 18, 16, 5, 2, 10, 6, 5, 1, 2, 6, 25, 15, 2, 11, 3, 2, 3, 3, 1, 3, 2, 4, 3, 1, 1, 11, 3, 4,
- 3, 2, 2, 1, 1, 3, 17, 3, 3, 3, 1, 2, 6, 3, 3, 29, 1, 1, 1, 1, 2, 8, 4, 2, 2, 1, 4, 4, 1, 15, 14, 2, 5, 5, 3, 2, 1, 5, 3, 1, 1,
- 9, 4, 3, 2, 3, 2, 179,5, 171,5, 3, 3, 7, 20, 1, 7, 3, 3, 4, 4, 3, 2, 6, 2, 2, 2, 11, 2, 3, 8, 2, 1, 2, 12, 5, 3, 3, 3, 3, 6, 2,
- 9, 2, 3, 3, 18, 8, 5, 5, 3, 6, 3, 2, 4, 3, 2, 3, 3, 22, 6, 4, 2, 2, 3, 3, 3, 2, 2, 6, 3, 3, 5, 2, 2, 2, 9, 2, 2, 2, 3, 21, 14,
- 2, 3, 2, 2, 3, 4, 2, 1, 1, 1, 9, 3, 2, 15, 4, 2, 1, 1, 1, 1, 1, 1, 3, 22, 17, 3, 2, 1, 2, 8, 6, 70, 17, 4, 7, 4, 11, 4, 4, 27, 12,
- 7, 5, 3, 2, 3, 2, 3, 1, 1, 2, 2, 3, 2, 5, 42, 2, 6, 3, 1, 2, 7, 4, 3, 4, 2, 2, 2, 2, 2, 2, 1, 1, 12, 5, 4, 4, 2, 2, 2, 2, 3,
- 17, 2, 2, 2, 3, 3, 3, 2, 7, 3, 10, 3, 1, 1, 1, 2, 1, 1, 1, 6, 19, 10, 5, 3, 3, 1, 1, 101,13, 5, 5, 3, 6, 4, 4, 1, 2, 12, 2, 5, 2,
- 10, 3, 3, 1, 1, 1, 1, 3, 15, 6, 3, 2, 2, 4, 2, 2, 1, 1, 1, 1, 1, 16, 1, 13, 5, 4, 4, 4, 2, 3, 1, 3, 4, 4, 89, 5, 4, 3, 1, 1, 3,
- 5, 3, 1, 1, 5, 36, 16, 2, 2, 2, 3, 2, 2, 3, 2, 2, 10, 3, 2, 12, 7, 2, 3, 3, 10, 3, 3, 6, 2, 2, 2, 3, 4, 3, 3, 3, 216,3, 29, 3, 23,
- 6, 3, 3, 3, 4, 4, 1, 1, 9, 5, 1, 1, 8, 1, 1, 14, 1, 3, 2, 2, 2, 19, 16, 7, 6, 61, 39, 3, 3, 3, 2, 2, 6, 2, 2, 13, 2, 5, 2, 2, 2,
- 3, 3, 1, 1, 1, 2, 2, 2, 18, 4, 4, 3, 5, 2, 2, 2, 10, 1, 1, 1, 1, 7, 5, 5, 10, 4, 4, 4, 6, 28, 2, 7, 6, 5, 4, 4, 1, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 201,4, 2, 2, 3, 2, 2, 2, 130,3, 12, 10, 5, 3, 3, 2, 2, 1, 16, 7, 3, 3, 4, 3, 8, 3, 3, 1, 2, 5, 4, 4, 3, 4, 3, 3,
- 2, 4, 2, 2, 2, 3, 2, 4, 2, 16, 1, 1, 4, 4, 3, 4, 3, 1, 5, 4, 2, 19, 11, 9, 2, 2, 2, 3, 1, 2, 1, 1, 16, 6, 5, 3, 7, 10, 3, 4, 4,
- 3, 2, 11, 4, 34, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 14, 4, 8, 2, 7, 3, 2, 2, 2, 2, 1, 1, 4, 1, 1, 1, 59, 3, 1, 2, 3, 19, 15, 3, 3,
- 3, 4, 3, 6, 5, 18, 3, 2, 1, 3, 120,6, 3, 2, 6, 44, 12, 3, 2, 22, 4, 3, 2, 2, 4, 4, 4, 3, 2, 9, 3, 5, 1, 3, 3, 3, 2, 9, 2, 1, 5,
- 4, 10, 3, 3, 2, 1, 56, 4, 1, 1, 16, 5, 2, 1, 5, 5, 3, 11, 5, 2, 1, 2, 16, 6, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 90, 6, 7, 2,
- 2, 17, 2, 8, 3, 2, 4, 1, 2, 2, 2, 5, 4, 2, 2, 2, 2, 13, 3, 1, 3, 3, 3, 2, 6, 1, 1, 1, 4, 2, 3, 14, 4, 4, 4, 4, 2, 1, 3, 2, 1,
- 1, 92, 4, 4, 4, 3, 17, 5, 5, 5, 5, 5, 5, 3, 4, 3, 5, 7, 3, 2, 13, 4, 2, 12, 6, 3, 1, 1, 5, 3, 4, 87, 15, 2, 5, 3, 2, 1, 12, 9, 8,
- 4, 4, 12, 3, 2, 2, 2, 16, 2, 5, 3, 2, 2, 4, 1, 2, 4, 5, 8, 4, 67, 11, 5, 5, 5, 2, 14, 2, 3, 6, 11, 8, 3, 1, 5, 1, 8, 3, 2, 2, 2,
- 49, 14, 9, 6, 3, 3, 6, 3, 17, 1, 1, 1, 7, 3, 3, 3, 1, 2, 1, 4, 9, 6, 5, 1, 17, 5, 1, 2, 180,12, 2, 5, 27, 7, 2, 3, 1, 2, 4, 23, 3,
- 4, 5, 4, 4, 2, 3, 30, 3, 8, 3, 1, 2, 3, 10, 3, 6, 5, 4, 34, 6, 6, 1, 10, 7, 1, 2, 9, 5, 5, 2, 14, 7, 4, 4, 4, 4, 3, 11, 4, 2, 2,
- 2, 4, 2, 2, 2, 53, 5, 34, 13, 7, 7, 2, 2, 8, 7, 4, 3, 2, 4, 2, 1, 1, 1, 1, 2, 3, 1, 1, 3, 2, 246,34, 3, 3, 2, 2, 4, 2, 2, 2, 1,
- 3, 5, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 3, 29, 3, 3, 1, 6, 2, 1, 4, 1, 1, 1, 2, 3, 3, 2, 2, 2, 36, 2, 2, 3, 2, 2, 3, 2, 5, 5,
- 7, 2, 4, 4, 20, 4, 1, 1, 2, 2, 5, 1, 1, 3, 1, 4, 2, 1, 24, 2, 6, 4, 3, 7, 4, 6, 6, 3, 5, 34, 3, 3, 14, 1, 4, 10, 3, 2, 1, 10, 3,
- 13, 3, 4, 1, 1, 2, 7, 4, 2, 2, 6, 3, 1, 1, 2, 2, 2, 3, 3, 230,26, 4, 5, 4, 7, 6, 4, 4, 5, 19, 2, 8, 4, 4, 3, 2, 49, 3, 2, 2, 2,
- 2, 6, 2, 5, 2, 2, 2, 3, 9, 7, 1, 10, 4, 2, 2, 2, 2, 2, 20, 3, 2, 10, 8, 2, 2, 14, 2, 5, 5, 4, 7, 13, 7, 4, 45, 2, 5, 7, 4, 7, 7,
- 6, 4, 8, 2, 2, 2, 2, 7, 2, 5, 4, 4, 6, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 13, 3, 3, 10, 9, 2, 5, 4, 1, 1, 1, 34, 19, 3, 4, 1, 1, 8,
- 2, 3, 3, 2, 2, 25, 3, 3, 1, 1, 4, 2, 2, 6, 4, 2, 28, 11, 3, 3, 2, 2, 2, 18, 3, 10, 3, 4, 8, 2, 1, 1, 1, 2, 6, 4, 5, 2, 18, 1, 6,
- 1, 2, 2, 2, 1, 29, 1, 1, 5, 3, 1, 1, 2, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 5, 4, 1, 1, 33, 4, 10, 2, 4, 4, 2, 13, 8, 16, 2, 3, 1, 3,
- 3, 7, 2, 1, 9, 1, 5, 3, 3, 135,8, 3, 1, 2, 18, 3, 2, 5, 3, 8, 6, 10, 5, 3, 2, 3, 6, 5, 5, 10, 3, 2, 4, 4, 4, 36, 4, 3, 8, 2, 1,
- 1, 2, 4, 2, 5, 3, 21, 5, 3, 3, 9, 6, 3, 111,1, 1, 1, 1, 10, 1, 9, 8, 3, 3, 3, 3, 8, 1, 4, 2, 16, 7, 5, 2, 4, 2, 4, 3, 50, 5, 6,
- 1, 1, 1, 1, 1, 9, 2, 2, 2, 4, 9, 8, 3, 15, 2, 7, 4, 2, 2, 2, 2, 1, 1, 1, 2, 2, 214,2, 2, 2, 14, 10, 2, 5, 2, 1, 1, 1, 1, 11, 1,
- 1, 2, 2, 1, 2, 4, 2, 2, 2, 14, 1, 1, 1, 10, 2, 3, 1, 1, 3, 2, 2, 1, 35, 3, 7, 4, 11, 3, 2, 3, 2, 2, 1, 2, 2, 4, 1, 1, 1, 4, 1,
- 1, 1, 1, 1, 1, 22, 8, 9, 1, 4, 1, 1, 1, 1, 2, 3, 3, 57, 2, 6, 4, 3, 1, 9, 4, 2, 2, 2, 15, 5, 2, 2, 2, 6, 3, 2, 1, 2, 8, 1, 3,
- 2, 2, 2, 3, 1, 1, 10, 2, 2, 22, 1, 1, 4, 1, 2, 1, 1, 6, 3, 2, 1, 4, 2, 3, 3, 2, 17, 4, 2, 7, 6, 91, 4, 2, 10, 3, 2, 18, 3, 9, 2,
- 4, 4, 3, 3, 4, 24, 2, 9, 6, 5, 3, 4, 2, 4, 4, 5, 1, 2, 25, 7, 4, 1, 1, 4, 3, 3, 78, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 3, 4,
- 6, 4, 8, 3, 2, 2, 9, 2, 2, 2, 2, 2, 4, 7, 4, 11, 3, 1, 1, 3, 2, 5, 1, 2, 29, 4, 7, 5, 5, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 1, 1, 1, 1, 3, 3, 3, 1, 5, 3, 11, 3, 2, 52, 3, 2, 2, 2, 10, 7, 2, 1, 25, 14, 1, 1, 4, 3, 2, 2, 2, 52, 4, 4, 2, 6, 3, 6, 3, 5,
- 4, 2, 3, 2, 1, 2, 2, 6, 1, 1, 1, 5, 1, 1, 1, 3, 19, 6, 3, 3, 6, 21, 2, 14, 7, 1, 4, 1, 1, 40, 5, 5, 23, 2, 1, 4, 2, 4, 3, 2, 2,
- 4, 4, 3, 2, 1, 1, 12, 7, 4, 2, 32, 5, 2, 6, 2, 3, 3, 2, 5, 4, 2, 2, 165,7, 2, 20, 6, 10, 4, 2, 2, 1, 1, 67, 6, 15, 2, 6, 4, 7, 2,
- 5, 2, 2, 18, 2, 11, 4, 2, 5, 5, 3, 2, 8, 1, 5, 3, 2, 12, 4, 3, 17, 5, 4, 4, 5, 10, 2, 2, 52, 3, 4, 7, 4, 9, 6, 2, 2, 3, 3, 18, 8,
- 2, 5, 2, 2, 24, 2, 2, 2, 2, 1, 1, 9, 2, 2, 2, 32, 6, 5, 1, 2, 2, 2, 13, 2, 2, 1, 4, 2, 2, 2, 2, 2, 1, 1, 1, 28, 5, 16, 2, 2, 2,
- 3, 5, 6, 10, 6, 3, 12, 2, 3, 34, 7, 2, 3, 14, 8, 3, 3, 6, 3, 2, 4, 82, 10, 1, 1, 2, 1, 2, 1, 30, 3, 4, 2, 2, 2, 5, 4, 3, 2, 2, 2,
- 2, 2, 2, 2, 5, 2, 8, 7, 1, 1, 2, 1, 1, 14, 14, 2, 1, 3, 1, 1, 4, 3, 2, 2, 2, 23, 10, 2, 2, 3, 10, 4, 2, 1, 2, 2, 16, 2, 8, 1, 2,
- 27, 3, 9, 2, 6, 11, 2, 1, 4, 2, 8, 2, 2, 1, 40, 6, 5, 4, 2, 3, 3, 19, 3, 3, 7, 6, 3, 1, 1, 2, 1, 1, 2, 1, 1, 4, 13, 4, 3, 1, 1,
- 1, 2, 63, 2, 2, 15, 6, 5, 3, 2, 4, 2, 1, 1, 2, 2, 13, 4, 6, 2, 1, 1, 2, 3, 16, 3, 2, 2, 2, 2, 28, 2, 2, 4, 7, 3, 2, 2, 2, 7, 3,
- 23, 3, 5, 1, 4, 3, 1, 8, 1, 1, 1, 8, 3, 2, 13, 4, 2, 7, 2, 20, 1, 1, 6, 5, 3, 4, 1, 12, 3, 4, 3, 2, 1, 1, 1, 1, 37, 29, 4, 4, 1,
- 6, 4, 2, 29, 1, 24, 7, 3, 5, 56, 2, 14, 1, 6, 3, 2, 1, 1, 1, 4, 2, 30, 22, 2, 2, 2, 6, 1, 1, 3, 2, 32, 9, 2, 6, 7, 54, 14, 7, 3, 1,
- 1, 7, 4, 3, 6, 3, 19, 15, 4, 1, 1, 4, 2, 4, 2, 2, 3, 19, 3, 14, 5, 4, 4, 4, 14, 2, 5, 2, 58, 5, 3, 1, 1, 1, 8, 2, 5, 14, 3, 4, 4,
- 11, 2, 2, 3, 3, 5, 40, 7, 3, 4, 3, 7, 3, 5, 3, 10, 6, 3, 57, 10, 8, 6, 6, 3, 2, 2, 6, 5, 4, 4, 2, 2, 26, 8, 6, 3, 3, 3, 2, 3, 3,
- 7, 5, 3, 2, 1, 1, 48, 45, 3, 6, 5, 5, 6, 2, 2, 2, 2, 1, 1, 1, 2, 2, 8, 3, 1, 4, 2, 4, 2, 47, 3, 2, 7, 3, 2, 32, 9, 3, 2, 4, 4,
- 1, 1, 44, 12, 5, 1, 1, 3, 7, 2, 1, 1, 4, 2, 2, 3, 13, 2, 3, 2, 1, 1, 5, 3, 1, 1, 10, 3, 3, 5, 2, 1, 1, 1, 16, 11, 3, 1, 1, 1, 6,
- 2, 2, 4, 21, 2, 3, 2, 2, 4, 3, 3, 3, 2, 1, 2, 43, 13, 4, 2, 2, 7, 4, 3, 2, 5, 3, 2, 3, 6, 57, 6, 38, 5, 3, 2, 4, 3, 7, 11, 5, 2,
- 1, 1, 1, 1, 2, 10, 3, 2, 3, 2, 29, 4, 2, 4, 8, 2, 3, 21, 2, 1, 1, 1, 16, 14, 10, 2, 22, 5, 5, 2, 2, 3, 3, 3, 5, 2, 62, 2, 2, 2, 5,
- 42, 2, 5, 7, 6, 10, 2, 5, 4, 5, 1, 2, 4, 10, 4, 2, 2, 2, 3, 2, 30, 2, 1, 11, 3, 2, 4, 10, 5, 3, 2, 21, 4, 3, 6, 3, 3, 5, 2, 3, 3,
- 14, 6, 4, 2, 12, 5, 3, 6, 5, 5, 31, 2, 1, 9, 4, 3, 3, 2, 8, 5, 79, 2, 1, 1, 9, 3, 19, 5, 4, 2, 7, 6, 3, 4, 7, 2, 6, 4, 1, 9, 9,
- 1, 2, 2, 3, 33, 6, 3, 9, 1, 1, 1, 2, 1, 6, 5, 4, 1, 15, 4, 4, 2, 2, 3, 2, 4, 3, 2, 45, 13, 11, 3, 4, 10, 3, 2, 1, 1, 4, 1, 1, 2,
- 14, 8, 2, 4, 3, 2, 4, 3, 2, 1, 1, 1, 1, 7, 1, 1, 1, 1, 4, 1, 2, 58, 5, 38, 19, 6, 3, 11, 8, 2, 3, 4, 2, 4, 166,5, 2, 3, 2, 2, 16,
- 4, 3, 1, 1, 2, 6, 2, 2, 1, 1, 1, 1, 4, 50, 14, 2, 8, 3, 2, 2, 7, 2, 4, 2, 4, 2, 4, 3, 2, 2, 2, 77, 3, 3, 2, 14, 2, 5, 4, 1, 10,
- 5, 3, 3, 4, 3, 3, 2, 2, 11, 7, 5, 2, 2, 5, 2, 1, 2, 6, 1, 5, 2, 2, 3, 2, 1, 1, 3, 5, 2, 105,4, 43, 3, 4, 7, 4, 4, 2, 2, 20, 4,
- 5, 1, 9, 7, 5, 2, 2, 8, 4, 5, 4, 3, 4, 3, 2, 3, 2, 1, 1, 4, 2, 2, 6, 3, 1, 2, 2, 54, 7, 6, 4, 3, 6, 3, 2, 6, 14, 4, 2, 1, 1,
- 1, 1, 7, 1, 1, 5, 2, 5, 2, 48, 42, 10, 7, 6, 10, 4, 3, 2, 6, 9, 4, 3, 51, 9, 2, 2, 3, 16, 8, 6, 4, 5, 2, 2, 6, 2, 2, 1, 2, 14, 1,
- 3, 1, 1, 1, 3, 25, 4, 2, 10, 8, 4, 2, 1, 2, 2, 13, 3, 5, 3, 1, 1, 1, 2, 1, 1, 1, 1, 17, 3, 3, 3, 3, 2, 6, 3, 3, 2, 161,10, 2, 1,
- 6, 2, 1, 1, 2, 2, 2, 2, 13, 7, 6, 8, 3, 1, 1, 8, 2, 90, 5, 3, 17, 1, 16, 11, 4, 15, 5, 7, 1, 5, 4, 4, 4, 4, 2, 2, 13, 5, 2, 2, 2,
- 2, 1, 5, 3, 2, 3, 2, 9, 4, 4, 3, 2, 2, 2, 4, 2, 4, 6, 2, 4, 1, 41, 2, 12, 4, 5, 4, 3, 2, 1, 2, 2, 2, 2, 12, 3, 3, 126,8, 5, 31,
- 6, 10, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 4, 2, 1, 1, 1, 2, 18, 6, 2, 1, 4, 4, 15, 3, 15, 4, 7, 4, 2, 1, 16, 4, 2, 7, 3,
- 2, 18, 11, 6, 1, 1, 1, 3, 1, 1, 5, 3, 1, 1, 1, 2, 2, 10, 2, 3, 2, 14, 6, 2, 2, 2, 18, 11, 2, 4, 2, 2, 2, 2, 3, 2, 29, 11, 4, 2, 2,
- 7, 3, 16, 8, 8, 5, 5, 5, 3, 3, 68, 6, 2, 2, 20, 3, 5, 4, 1, 9, 4, 3, 5, 8, 2, 2, 2, 1, 1, 5, 4, 3, 6, 5, 1, 1, 3, 1, 13, 3, 1,
- 40, 3, 10, 9, 6, 2, 2, 2, 2, 6, 4, 2, 6, 3, 2, 1, 27, 5, 2, 9, 3, 7, 5, 4, 9, 4, 3, 2, 44, 8, 13, 8, 4, 3, 2, 2, 6, 2, 1, 5, 5,
- 47, 5, 8, 3, 3, 15, 1, 3, 4, 11, 3, 4, 4, 21, 5, 2, 3, 2, 2, 6, 21, 2, 2, 1, 1, 2, 3, 2, 3, 5, 3, 3, 4, 2, 4, 2, 3, 199,7, 3, 1,
- 1, 7, 3, 12, 3, 2, 7, 1, 10, 3, 47, 3, 9, 3, 3, 5, 2, 6, 4, 2, 3, 1, 4, 3, 5, 2, 1, 1, 24, 3, 5, 13, 11, 11, 10, 2, 2, 3, 2, 1, 9,
- 4, 2, 2, 3, 2, 2, 28, 3, 9, 2, 5, 3, 1, 3, 37, 7, 2, 16, 14, 7, 2, 3, 3, 4, 2, 150,10, 3, 11, 11, 6, 5, 10, 3, 3, 5, 2, 6, 3, 2, 3,
- 1, 3, 86, 5, 3, 32, 28, 5, 3, 7, 2, 1, 5, 3, 2, 2, 1, 2, 5, 3, 3, 4, 2, 3, 3, 2, 3, 9, 6, 10, 4, 3, 3, 5, 2, 1, 1, 5, 2, 1, 16,
- 4, 4, 1, 1, 1, 38, 3, 3, 26, 5, 1, 8, 3, 5, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 118,10, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2,
- 3, 1, 2, 1, 1, 1, 8, 2, 1, 1, 3, 2, 8, 3, 11, 1, 1, 5, 7, 4, 4, 2, 2, 21, 4, 3, 1, 1, 1, 1, 5, 4, 8, 5, 2, 2, 3, 1, 10, 5, 2,
- 2, 3, 4, 4, 4, 3, 3, 3, 3, 3, 1, 3, 2, 1, 5, 3, 3, 2, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, 1, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 110,1, 1, 29, 8, 7, 5, 10, 3, 3, 3, 2, 4, 6, 3, 3, 3, 1, 13,
- 1, 4, 4, 3, 3, 17, 3, 2, 3, 9, 4, 3, 12, 10, 1, 1, 10, 2, 3, 2, 1, 17, 6, 1, 5, 3, 5, 2, 2, 44, 7, 2, 1, 8, 3, 2, 5, 3, 2, 2, 14,
- 5, 6, 4, 1, 1, 4, 1, 1, 4, 69, 1, 7, 1, 4, 2, 12, 3, 5, 15, 3, 1, 1, 1, 7, 1, 1, 1, 6, 2, 2, 2, 4, 6, 5, 1, 3, 1, 1, 6, 4, 4,
- 2, 25, 4, 3, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 9, 7, 6, 2, 28, 5, 3, 2, 2, 4, 2, 2, 15, 2, 2, 2, 2, 9, 2, 2,
- 1, 1, 3, 1, 1, 1, 19, 2, 6, 1, 1, 1, 4, 2, 3, 2, 1, 22, 6, 4, 3, 1, 4, 2, 2, 5, 2, 3, 2, 46, 2, 2, 6, 5, 2, 2, 8, 1, 2, 9, 6,
- 4, 5, 14, 4, 1, 1, 1, 6, 7, 3, 2, 37, 9, 3, 5, 2, 1, 13, 4, 4, 5, 1, 1, 1, 1, 3, 1, 2, 2, 1, 3, 3, 31, 9, 3, 2, 1, 6, 12, 10, 2,
- 23, 4, 3, 2, 14, 12, 4, 2, 24, 4, 4, 4, 6, 5, 3, 3, 2, 2, 3, 67, 11, 6, 4, 2, 5, 3, 3, 16, 12, 12, 12, 11, 5, 3, 4, 1, 2, 3, 2, 2, 1,
- 9, 4, 2, 4, 3, 1, 1, 4, 3, 3, 96, 21, 1, 3, 3, 4, 18, 4, 4, 34, 3, 2, 7, 4, 4, 4, 4, 1, 5, 4, 2, 2, 2, 2, 2, 1, 1, 1, 6, 4, 8,
- 1, 4, 2, 3, 10, 4, 1, 1, 5, 2, 1, 1, 1, 17, 2, 1, 1, 2, 1, 1, 5, 5, 2, 2, 2, 1, 1, 1, 1, 3, 1, 2, 10, 4, 1, 1, 1, 1, 2, 2, 2,
- 5, 3, 31, 7, 3, 11, 2, 5, 12, 10, 3, 2, 2, 6, 4, 34, 2, 2, 3, 1, 20, 3, 1, 3, 2, 2, 8, 2, 2, 34, 2, 7, 5, 5, 3, 4, 11, 6, 3, 3, 2,
- 3, 1, 3, 2, 51, 18, 3, 3, 4, 1, 1, 1, 1, 1, 25, 8, 14, 8, 3, 3, 2, 1, 1, 25, 13, 9, 3, 5, 12, 6, 4, 2, 1, 1, 8, 2, 2, 2, 2, 2, 2,
- 92, 1, 25, 4, 4, 8, 6, 2, 9, 3, 8, 7, 7, 5, 16, 2, 2, 3, 2, 3, 3, 1, 2, 11, 4, 3, 3, 11, 1, 1, 3, 2, 1, 4, 3, 5, 4, 7, 2, 4, 2,
- 2, 3, 55, 3, 3, 15, 7, 5, 3, 3, 2, 8, 4, 3, 1, 1, 14, 8, 2, 3, 2, 3, 2, 28, 16, 11, 7, 4, 2, 2, 4, 5, 3, 69, 1, 4, 2, 8, 6, 4, 20,
- 12, 7, 4, 1, 13, 11, 2, 2, 6, 14, 3, 29, 6, 7, 3, 3, 3, 3, 3, 8, 4, 1, 2, 2, 19, 5, 4, 2, 2, 58, 14, 3, 3, 2, 3, 2, 2, 11, 4, 4, 12,
- 6, 5, 5, 3, 1, 1, 2, 2, 16, 11, 3, 3, 1, 1, 33, 6, 16, 2, 8, 4, 4, 2, 8, 2, 80, 18, 4, 3, 1, 1, 2, 1, 1, 3, 3, 12, 4, 11, 3, 2, 2,
- 2, 5, 2, 20, 11, 4, 6, 7, 6, 3, 1, 8, 3, 7, 6, 6, 2, 3, 2, 2, 5, 1, 2, 253,29, 4, 2, 2, 2, 1, 8, 6, 6, 2, 4, 1, 3, 3, 1, 34, 2,
- 10, 7, 3, 5, 1, 1, 1, 4, 2, 5, 1, 41, 2, 4, 3, 1, 3, 2, 2, 28, 21, 16, 11, 7, 4, 3, 3, 2, 8, 5, 2, 21, 1, 1, 1, 6, 3, 2, 4, 1, 1,
- 3, 2, 2, 32, 6, 2, 2, 12, 9, 7, 2, 3, 4, 4, 3, 3, 25, 4, 1, 19, 9, 2, 2, 3, 1, 1, 1, 3, 15, 1, 1, 2, 5, 2, 3, 3, 29, 10, 10, 9, 11,
- 7, 4, 4, 13, 3, 3, 1, 1, 2, 71, 12, 3, 2, 5, 4, 2, 2, 10, 5, 3, 3, 3, 2, 9, 1, 5, 4, 4, 1, 3, 1, 5, 2, 2, 1, 13, 7, 1, 4, 2, 6,
- 4, 52, 7, 2, 5, 4, 27, 2, 2, 18, 6, 1, 4, 3, 6, 6, 4, 1, 1, 1, 1, 1, 6, 1, 5, 5, 5, 19, 6, 3, 3, 2, 9, 7, 7, 5, 5, 5, 2, 84, 7,
- 2, 2, 16, 4, 5, 2, 2, 33, 3, 3, 3, 2, 13, 8, 7, 9, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 6, 4, 36, 1, 3, 3, 3,
- 3, 8, 3, 3, 3, 4, 3, 1, 6, 2, 58, 4, 6, 7, 4, 4, 4, 4, 3, 5, 3, 2, 4, 4, 12, 2, 2, 6, 1, 1, 3, 2, 88, 10, 13, 2, 21, 7, 3, 6, 4,
- 21, 8, 4, 11, 3, 2, 3, 2, 6, 50, 8, 3, 2, 2, 22, 12, 6, 4, 5, 12, 6, 3, 2, 2, 7, 59, 16, 2, 3, 4, 3, 13, 2, 2, 19, 2, 9, 3, 6, 6, 2,
- 5, 1, 61, 35, 4, 14, 13, 4, 4, 4, 4, 1, 1, 3, 7, 4, 4, 3, 1, 1, 36, 6, 19, 2, 2, 9, 7, 2, 5, 6, 4, 1, 1, 3, 2, 2, 2, 119,26, 2, 6,
- 3, 27, 7, 4, 5, 39, 5, 5, 4, 3, 2, 1, 1, 1, 8, 4, 3, 3, 3, 1, 3, 2, 18, 3, 2, 4, 2, 2, 5, 2, 2, 2, 3, 18, 2, 2, 3, 1, 1, 1, 6,
- 2, 3, 3, 79, 6, 3, 2, 18, 3, 8, 3, 11, 3, 3, 2, 4, 2, 6, 3, 3, 3, 3, 9, 5, 4, 14, 4, 7, 7, 4, 3, 4, 3, 3, 2, 8, 2, 19, 5, 3, 9,
- 5, 5, 6, 46, 4, 3, 3, 3, 2, 6, 2, 2, 2, 8, 3, 2, 3, 2, 5, 2, 8, 4, 1, 1, 3, 2, 4, 2, 14, 7, 6, 5, 3, 1, 1, 31, 4, 2, 2, 6, 4,
- 3, 2, 9, 31, 2, 1, 1, 8, 6, 6, 3, 2, 25, 2, 5, 4, 3, 3, 6, 6, 3, 3, 5, 2, 19, 6, 5, 11, 10, 4, 86, 27, 5, 6, 3, 6, 3, 3, 22, 1, 8,
- 2, 4, 4, 25, 3, 3, 4, 6, 3, 3, 2, 5, 3, 1, 1, 135,18, 4, 4, 9, 2, 4, 42, 30, 23, 12, 8, 4, 3, 2, 1, 4, 2, 4, 25, 4, 3, 3, 15, 11, 2,
- 4, 4, 16, 15, 2, 1, 2, 2, 1, 1, 9, 3, 2, 4, 22, 5, 4, 4, 3, 8, 1, 1, 1, 3, 2, 1, 1, 2, 11, 7, 5, 1, 3, 79, 1, 1, 6, 2, 2, 2, 2,
- 2, 2, 41, 9, 7, 1, 5, 5, 10, 8, 11, 6, 4, 3, 3, 1, 10, 1, 3, 3, 2, 4, 3, 3, 4, 4, 4, 4, 4, 4, 2, 2, 2, 3, 16, 16, 3, 3, 3, 3, 2,
- 3, 44, 5, 5, 2, 1, 1, 1, 1, 1, 13, 13, 13, 12, 3, 5, 4, 3, 14, 3, 3, 3, 1, 1, 6, 4, 3, 3, 2, 47, 9, 7, 3, 20, 4, 4, 4, 10, 3, 3, 3,
- 3, 1, 9, 3, 5, 5, 4, 2, 10, 1, 2, 4, 5, 2, 4, 3, 3, 11, 2, 3, 9, 1, 1, 5, 9, 1, 2, 1, 24, 6, 1, 3, 2, 1, 5, 4, 5, 4, 3, 3, 3,
- 2, 73, 1, 8, 4, 3, 2, 10, 3, 2, 2, 8, 8, 10, 3, 1, 1, 2, 16, 6, 3, 6, 15, 2, 2, 4, 2, 8, 7, 5, 87, 38, 2, 2, 24, 3, 3, 2, 5, 5, 5,
- 7, 3, 2, 3, 3, 5, 3, 2, 1, 1, 1, 27, 3, 6, 2, 7, 3, 16, 2, 4, 5, 2, 2, 10, 1, 2, 4, 4, 3, 2, 25, 3, 1, 7, 3, 2, 2, 15, 4, 3, 3,
- 5, 2, 1, 1, 4, 3, 35, 1, 1, 1, 2, 1, 4, 2, 2, 1, 2, 1, 3, 2, 1, 2, 2, 2, 1, 1, 13, 5, 5, 5, 3, 4, 2, 2, 2, 1, 1, 1, 1, 17, 6,
- 4, 3, 2, 1, 1, 2, 2, 1, 2, 30, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 8, 8, 4, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 16, 2, 1, 4, 9, 6, 1, 1,
- 5, 1, 3, 27, 2, 5, 4, 3, 2, 4, 2, 11, 11, 5, 2, 20, 7, 4, 6, 3, 1, 1, 3, 3, 4, 4, 3, 1, 6, 1, 2, 2, 2, 2, 1, 1, 1, 6, 3, 3, 1,
- 113,6, 36, 18, 14, 10, 8, 3, 3, 11, 11, 7, 14, 2, 2, 2, 2, 4, 29, 1, 6, 3, 1, 3, 3, 3, 7, 5, 3, 5, 15, 11, 1, 8, 2, 3, 11, 8, 3, 107,3,
- 1, 1, 1, 3, 1, 1, 1, 1, 10, 5, 5, 4, 85, 9, 2, 5, 5, 15, 5, 2, 2, 2, 2, 10, 2, 9, 5, 5, 4, 2, 4, 2, 38, 16, 14, 10, 4, 8, 2, 1, 1,
- 10, 4, 4, 4, 2, 1, 3, 6, 5, 3, 2, 4, 1, 20, 2, 2, 12, 9, 8, 7, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 156,17, 7, 1, 6, 4, 1, 5, 3, 6, 3,
- 3, 27, 8, 2, 2, 2, 5, 3, 1, 3, 3, 1, 1, 1, 5, 5, 5, 4, 1, 1, 1, 1, 6, 1, 1, 3, 1, 13, 3, 2, 3, 5, 4, 1, 18, 4, 3, 5, 3, 4, 23,
- 6, 5, 5, 12, 11, 9, 5, 5, 5, 2, 2, 5, 3, 18, 4, 3, 3, 8, 4, 2, 3, 34, 9, 7, 3, 1, 10, 6, 5, 4, 7, 10, 3, 3, 3, 1, 1, 4, 2, 1, 1,
- 1, 3, 2, 4, 2, 1, 23, 2, 1, 1, 1, 1, 1, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 16, 4, 3, 2, 5, 2, 16, 3, 1, 8, 3, 1, 3, 21, 3, 2, 6, 1, 1, 3, 2, 3, 12,
- 3, 6, 3, 10, 3, 4, 2, 4, 3, 2, 1, 41, 2, 2, 2, 10, 3, 3, 15, 3, 2, 4, 3, 3, 2, 2, 2, 2, 4, 3, 14, 1, 1, 1, 1, 8, 7, 3, 2, 2, 1,
- 2, 2, 2, 2, 63, 5, 1, 1, 5, 2, 2, 1, 1, 1, 3, 5, 3, 6, 2, 2, 7, 16, 2, 9, 9, 7, 2, 2, 2, 5, 5, 2, 78, 25, 13, 13, 6, 3, 7, 4, 2,
- 4, 3, 3, 2, 1, 1, 1, 1, 1, 2, 1, 5, 31, 7, 1, 10, 9, 8, 2, 3, 139,4, 18, 13, 6, 5, 4, 4, 3, 2, 30, 3, 3, 11, 8, 1, 1, 1, 1, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 8, 5, 30, 16, 1, 3, 2, 2, 2, 15, 11, 9, 2, 1, 2, 22, 3, 7, 3, 3, 1, 1, 4, 1, 1, 2, 10, 5, 1, 59, 4, 3,
- 3, 1, 1, 1, 12, 5, 5, 5, 9, 3, 3, 3, 4, 2, 3, 16, 4, 6, 4, 2, 1, 1, 1, 210,26, 17, 17, 17, 16, 14, 8, 4, 2, 2, 5, 5, 5, 4, 4, 2, 2,
- 4, 2, 2, 7, 3, 3, 2, 2, 1, 1, 12, 8, 1, 1, 21, 3, 3, 7, 3, 7, 71, 4, 30, 1, 2, 15, 3, 2, 2, 21, 18, 3, 8, 8, 7, 5, 2, 12, 2, 4, 4,
- 7, 2, 4, 3, 1, 1, 6, 2, 2, 17, 8, 7, 3, 4, 2, 2, 2, 1, 4, 3, 2, 1, 43, 10, 4, 4, 9, 1, 1, 4, 2, 12, 3, 3, 6, 52, 2, 1, 11, 6, 6,
- 1, 1, 1, 1, 4, 2, 3, 21, 2, 1, 1, 1, 1, 1, 13, 8, 2, 2, 2, 1, 32, 1, 6, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 7, 2, 4, 4, 20, 7,
- 3, 3, 5, 2, 5, 3, 2, 2, 5, 1, 29, 6, 3, 14, 4, 7, 1, 1, 1, 2, 2, 1, 34, 4, 27, 7, 4, 4, 3, 2, 4, 62, 2, 6, 15, 3, 5, 5, 5, 19, 15,
- 4, 2, 2, 7, 4, 3, 4, 5, 1, 1, 1, 4, 2, 2, 3, 3, 38, 5, 3, 3, 1, 1, 5, 3, 17, 14, 12, 2, 1, 1, 1, 1, 1, 21, 10, 3, 4, 4, 6, 3, 1,
- 2, 2, 2, 2, 2, 1, 28, 9, 2, 3, 2, 6, 2, 2, 4, 1, 2, 2, 2, 4, 1, 1, 2, 6, 3, 2, 4, 4, 4, 91, 6, 2, 1, 1, 1, 9, 2, 3, 1, 10, 3,
- 1, 2, 19, 3, 5, 1, 7, 1, 1, 5, 5, 15, 2, 6, 6, 4, 6, 6, 4, 2, 2, 5, 4, 63, 2, 1, 2, 6, 5, 4, 15, 3, 3, 24, 2, 2, 16, 13, 3, 3, 10,
- 1, 2, 2, 1, 3, 42, 5, 3, 9, 3, 3, 2, 7, 2, 4, 17, 2, 3, 13, 3, 3, 3, 3, 7, 3, 3, 3, 1, 1, 1, 1, 20, 6, 3, 1, 1, 1, 1, 1, 1, 3,
- 2, 1, 1, 6, 3, 35, 3, 8, 3, 3, 4, 1, 15, 3, 4, 3, 4, 2, 1, 2, 1, 1, 4, 74, 20, 12, 11, 4, 4, 2, 9, 2, 3, 28, 6, 2, 1, 1, 1, 1, 1,
- 15, 13, 1, 1, 1, 1, 10, 1, 1, 4, 1, 1, 1, 2, 29, 16, 5, 5, 5, 4, 3, 2, 6, 1, 1, 6, 3, 3, 3, 6, 71, 5, 4, 3, 22, 2, 1, 4, 3, 2, 7,
- 7, 10, 4, 4, 17, 3, 7, 1, 3, 2, 23, 5, 8, 3, 3, 2, 5, 2, 2, 58, 11, 2, 3, 3, 3, 2, 1, 1, 1, 1, 2, 6, 2, 7, 3, 1, 1, 3, 7, 3, 6,
- 2, 2, 2, 2, 2, 12, 3, 34, 1, 2, 4, 2, 15, 10, 2, 4, 5, 5, 5, 5, 4, 25, 8, 1, 1, 1, 1, 2, 5, 2, 1, 6, 4, 3, 3, 3, 3, 3, 26, 2, 5,
- 2, 1, 4, 3, 3, 27, 2, 4, 4, 3, 1, 1, 12, 3, 1, 1, 1, 2, 4, 2, 2, 3, 10, 7, 4, 3, 2, 2, 1, 3, 2, 23, 2, 1, 2, 2, 18, 5, 13, 6, 3,
- 6, 1, 1, 2, 2, 3, 1, 2, 1, 1, 7, 3, 3, 2, 3, 3, 3, 1, 194,4, 2, 18, 3, 7, 5, 5, 5, 5, 1, 1, 1, 1, 11, 1, 1, 2, 4, 1, 1, 3, 3,
- 9, 5, 2, 2, 1, 1, 17, 3, 5, 1, 1, 4, 3, 3, 1, 1, 1, 1, 12, 4, 8, 2, 2, 1, 3, 10, 2, 2, 6, 3, 17, 2, 8, 3, 1, 3, 32, 4, 12, 8, 8,
- 8, 8, 8, 8, 3, 4, 2, 2, 1, 7, 1, 1, 2, 15, 2, 2, 1, 2, 3, 1, 1, 1, 1, 13, 3, 3, 2, 2, 2, 236,2, 2, 2, 2, 2, 4, 2, 173,171,8, 8,
- 2, 4, 3, 2, 4, 3, 7, 2, 105,9, 2, 2, 2, 2, 1, 1, 19, 10, 3, 29, 18, 16, 6, 5, 1, 1, 6, 4, 9, 9, 5, 26, 1, 1, 1, 7, 5, 4, 3, 1, 2,
- 2, 11, 8, 7, 5, 3, 1, 46, 20, 9, 7, 4, 2, 2, 2, 2, 2, 3, 6, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 24, 14, 11, 9, 1, 4, 4, 4, 3, 2, 2, 1,
- 6, 6, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 137,4, 11, 6, 20, 15, 3, 5, 2, 2, 6, 3, 6, 1, 9, 4, 1, 1, 1, 1, 1, 13, 3, 1, 1, 12, 1,
- 3, 1, 1, 7, 2, 1, 1, 1, 25, 3, 14, 14, 3, 2, 2, 4, 2, 1, 1, 5, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 4, 3, 1, 37, 1, 1, 2, 2, 1, 1,
- 2, 3, 3, 2, 13, 7, 1, 6, 4, 3, 2, 8, 3, 1, 1, 1, 3, 1, 1, 1, 12, 1, 1, 1, 1, 3, 3, 3, 42, 8, 4, 13, 3, 3, 5, 2, 4, 5, 3, 8, 5,
- 4, 3, 3, 1, 1, 1, 2, 5, 1, 1, 31, 1, 1, 4, 3, 5, 1, 1, 1, 9, 2, 1, 10, 2, 1, 5, 2, 4, 8, 7, 6, 3, 3, 2, 24, 2, 2, 3, 11, 5, 3,
- 2, 1, 6, 20, 3, 2, 2, 4, 3, 5, 2, 1, 3, 73, 4, 8, 2, 3, 3, 3, 3, 2, 2, 17, 5, 4, 7, 19, 1, 12, 12, 3, 2, 2, 7, 1, 5, 5, 5, 5, 5,
- 5, 3, 2, 2, 2, 2, 2, 3, 4, 4, 2, 3, 5, 4, 3, 1, 6, 2, 10, 2, 16, 3, 3, 3, 1, 1, 4, 4, 2, 1, 4, 3, 79, 4, 51, 4, 2, 5, 4, 38, 6,
- 6, 11, 10, 19, 2, 2, 3, 2, 2, 2, 2, 3, 3, 3, 3, 1, 6, 2, 2, 4, 3, 3, 4, 4, 4, 4, 6, 1, 8, 3, 3, 4, 2, 1, 31, 2, 1, 5, 5, 2, 4,
- 4, 3, 1, 1, 4, 3, 8, 4, 4, 1, 1, 1, 50, 7, 1, 11, 1, 1, 4, 4, 4, 13, 3, 4, 5, 4, 4, 3, 9, 2, 2, 2, 9, 2, 1, 35, 2, 30, 8, 16, 11,
- 4, 4, 5, 3, 1, 1, 2, 17, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 5, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 6, 1, 1,
- 1, 3, 2, 1, 2, 2, 1, 2, 5, 3, 5, 3, 1, 1, 1, 1, 1, 1, 9, 2, 2, 1, 3, 2, 2, 6, 2, 17, 1, 6, 9, 3, 2, 1, 16, 3, 6, 2, 2, 2, 22,
- 5, 2, 2, 2, 2, 2, 3, 1, 1, 2, 1, 1, 2, 11, 2, 1, 1, 59, 11, 3, 4, 24, 2, 6, 4, 6, 4, 4, 3, 1, 1, 1, 1, 13, 2, 2, 6, 50, 35, 4, 22,
- 8, 9, 7, 5, 2, 7, 3, 3, 2, 33, 1, 1, 14, 4, 9, 1, 16, 6, 3, 2, 2, 2, 2, 2, 2, 13, 8, 3, 5, 2, 6, 30, 12, 5, 3, 3, 2, 2, 2, 3, 3,
- 3, 4, 3, 170,54, 18, 4, 6, 22, 2, 2, 8, 6, 3, 3, 7, 1, 1, 1, 1, 2, 3, 31, 2, 14, 14, 4, 6, 3, 8, 4, 2, 4, 3, 10, 6, 1, 5, 5, 2, 10,
- 1, 2, 2, 2, 21, 1, 1, 5, 5, 2, 7, 3, 3, 14, 12, 2, 4, 3, 2, 121,2, 11, 4, 7, 5, 4, 4, 1, 1, 1, 13, 9, 3, 1, 20, 9, 5, 2, 9, 38, 5,
- 5, 4, 10, 3, 1, 2, 2, 2, 1, 6, 6, 7, 2, 1, 1, 2, 2, 2, 2, 5, 3, 12, 9, 3, 3, 3, 9, 1, 1, 2, 2, 2, 2, 159,5, 2, 13, 12, 2, 3, 2,
- 4, 3, 1, 7, 3, 3, 3, 3, 15, 2, 2, 1, 1, 1, 3, 3, 2, 4, 4, 2, 25, 13, 1, 1, 4, 2, 1, 15, 9, 5, 2, 22, 9, 4, 4, 4, 3, 4, 9, 8, 4,
- 1, 15, 4, 7, 1, 69, 15, 1, 1, 1, 4, 3, 6, 2, 8, 4, 11, 2, 4, 5, 4, 12, 6, 4, 4, 14, 5, 4, 3, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 2, 1, 1, 1, 35, 1, 1, 3, 1, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 2, 2, 1, 1, 3, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 9, 4, 4, 3, 2, 2, 1, 1, 1, 80, 13, 13, 2, 2, 4, 3, 1, 1, 1, 1, 16, 1, 1, 1, 1, 5, 4, 4, 2, 3, 3, 6, 4, 4, 11, 10, 1, 14, 4, 3,
- 2, 1, 1, 3, 3, 3, 5, 66, 7, 2, 17, 3, 9, 9, 3, 7, 4, 4, 3, 3, 6, 1, 14, 12, 2, 123,6, 3, 3, 1, 1, 5, 2, 23, 2, 2, 2, 2, 6, 2, 2,
- 6, 4, 1, 2, 5, 58, 5, 1, 1, 2, 1, 12, 7, 3, 3, 2, 1, 1, 1, 5, 13, 3, 4, 3, 5, 4, 4, 2, 25, 4, 2, 2, 3, 2, 3, 2, 2, 2, 86, 7, 28,
- 2, 2, 1, 2, 2, 3, 3, 1, 1, 1, 6, 3, 2, 2, 31, 20, 19, 18, 4, 1, 1, 2, 2, 2, 1, 9, 4, 28, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 3,
- 1, 6, 5, 1, 1, 1, 1, 5, 4, 4, 4, 2, 1, 1, 1, 38, 27, 18, 8, 3, 6, 2, 3, 3, 2, 2, 3, 2, 2, 1, 35, 2, 5, 3, 5, 1, 1, 2, 2, 2, 11,
- 3, 7, 5, 4, 1, 2, 34, 6, 2, 2, 2, 12, 3, 3, 3, 3, 3, 3, 3, 8, 3, 3, 30, 2, 5, 2, 2, 1, 15, 9, 9, 9, 8, 5, 3, 2, 1, 1, 1, 14, 10,
- 3, 43, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 1, 1, 1, 7, 3, 1, 2, 2, 3, 7, 4, 2, 1, 2, 1, 11, 2, 5, 8, 5, 2, 2, 2, 1, 23, 3,
- 2, 4, 3, 2, 40, 3, 2, 2, 2, 2, 4, 2, 4, 3, 3, 3, 2, 2, 3, 6, 4, 4, 1, 5, 2, 1, 1, 20, 8, 2, 2, 162,38, 11, 11, 11, 11, 11, 6, 3, 5,
- 5, 2, 6, 5, 3, 2, 2, 2, 54, 3, 22, 22, 2, 13, 7, 4, 12, 5, 1, 1, 1, 1, 1, 1, 7, 5, 6, 4, 41, 3, 5, 5, 1, 18, 2, 7, 2, 5, 6, 17, 3,
- 5, 5, 4, 3, 3, 6, 3, 8, 4, 2, 3, 91, 2, 2, 1, 16, 12, 7, 37, 4, 21, 7, 5, 5, 5, 5, 4, 1, 1, 3, 16, 4, 2, 2, 5, 3, 6, 2, 4, 7, 7,
- 7, 3, 1, 2, 2, 2, 13, 2, 9, 9, 9, 9, 2, 2, 3, 3, 2, 1, 1, 1, 15, 1, 3, 2, 3, 28, 1, 22, 13, 4, 5, 3, 2, 2, 6, 5, 2, 2, 2, 3, 15,
- 8, 2, 4, 37, 9, 8, 1, 1, 1, 6, 11, 10, 5, 5, 3, 3, 2, 1, 5, 5, 5, 2, 2, 2, 2, 2, 37, 3, 3, 7, 6, 3, 3, 6, 2, 2, 6, 1, 1, 1, 9,
- 8, 8, 8, 1, 1, 31, 8, 3, 3, 3, 3, 2, 8, 6, 1, 4, 2, 163,22, 19, 19, 8, 49, 7, 7, 7, 7, 7, 26, 5, 9, 5, 4, 2, 2, 1, 10, 6, 4, 13, 10,
- 9, 9, 9, 6, 3, 1, 31, 14, 11, 4, 4, 7, 7, 7, 12, 7, 4, 21, 9, 4, 10, 3, 1, 1, 1, 39, 30, 5, 23, 12, 11, 9, 4, 4, 9, 3, 3, 2, 10, 5, 2,
- 2, 242,57, 10, 9, 2, 4, 4, 9, 6, 3, 3, 5, 15, 6, 3, 3, 2, 3, 6, 5, 2, 2, 2, 4, 2, 34, 4, 9, 8, 8, 8, 2, 17, 9, 6, 4, 8, 7, 5, 10,
- 8, 1, 53, 11, 9, 9, 21, 7, 7, 7, 7, 3, 2, 5, 3, 18, 8, 5, 5, 5, 1, 1, 26, 3, 18, 8, 7, 4, 3, 29, 21, 7, 7, 7, 4, 4, 2, 12, 11, 6, 4,
- 4, 4, 2, 1, 1, 2, 1, 27, 5, 5, 3, 2, 2, 2, 1, 20, 8, 2, 4, 4, 11, 7, 3, 5, 3, 3, 3, 3, 2, 7, 6, 4, 1, 1, 1, 20, 2, 2, 2, 1, 1,
- 2, 1, 132,8, 2, 3, 3, 61, 6, 6, 9, 6, 8, 8, 8, 7, 7, 13, 11, 7, 7, 7, 5, 15, 11, 1, 1, 1, 1, 3, 5, 4, 4, 4, 4, 2, 9, 3, 4, 2, 2,
- 10, 3, 2, 4, 4, 3, 2, 10, 8, 4, 17, 2, 2, 2, 7, 7, 3, 3, 3, 3, 3, 3, 14, 9, 6, 5, 4, 3, 86, 3, 22, 3, 6, 9, 9, 3, 3, 2, 2, 2, 2,
- 20, 12, 9, 9, 8, 17, 3, 3, 4, 2, 2, 4, 3, 1, 1, 8, 3, 2, 15, 12, 11, 4, 19, 4, 3, 2, 2, 2, 120,3, 29, 4, 4, 4, 4, 4, 8, 7, 7, 7, 2,
- 8, 3, 3, 8, 8, 41, 15, 3, 3, 11, 8, 5, 3, 3, 8, 7, 7, 4, 3, 7, 7, 3, 3, 5, 5, 9, 3, 4, 18, 14, 12, 5, 3, 3, 10, 2, 2, 2, 2, 7, 7,
- 7, 3, 10, 3, 3, 7, 4, 48, 8, 4, 3, 2, 3, 3, 4, 3, 3, 3, 3, 2, 29, 7, 7, 6, 6, 6, 6, 2, 19, 9, 9, 8, 6, 5, 5, 3, 9, 7, 2, 2, 12,
- 2, 3, 3, 2, 2, 2, 1, 24, 4, 4, 4, 4, 4, 2, 2, 2, 18, 7, 7, 7, 6, 6, 5, 3, 12, 4, 3, 2, 2, 10, 3, 2, 4, 1, 84, 7, 2, 2, 45, 2, 17,
+ 34, 3, 2, 3, 1, 19, 2, 9, 4, 3, 31, 4, 4, 12, 5, 2, 5, 15, 5, 1, 2, 2, 11, 3, 4, 2, 5, 31, 8, 6, 4, 5, 2, 5, 2, 2, 4, 31, 5, 7, 6,
+ 5, 4, 27, 4, 2, 3, 2, 2, 3, 6, 1, 2, 3, 11, 2, 1, 2, 22, 8, 7, 3, 1, 1, 2, 2, 1, 1, 3, 1, 35, 3, 1, 3, 2, 8, 5, 3, 4, 3, 5, 2,
+ 1, 1, 1, 32, 3, 2, 10, 2, 1, 1, 2, 4, 5, 3, 2, 13, 4, 4, 3, 10, 4, 2, 4, 1, 2, 60, 13, 3, 1, 1, 19, 3, 6, 5, 2, 5, 2, 7, 4, 2, 2,
+ 2, 2, 2, 28, 2, 2, 2, 2, 17, 7, 5, 3, 2, 2, 2, 122,25, 8, 3, 3, 1, 5, 1, 35, 1, 1, 1, 1, 1, 2, 6, 6, 8, 39, 2, 7, 9, 3, 3, 3, 2,
+ 6, 2, 4, 5, 3, 12, 3, 7, 26, 3, 3, 2, 1, 2, 2, 2, 4, 3, 2, 2, 127,4, 2, 20, 5, 6, 5, 5, 20, 8, 5, 2, 9, 9, 1, 4, 3, 2, 2, 5, 3,
+ 2, 14, 9, 3, 3, 4, 2, 3, 2, 31, 15, 2, 9, 5, 4, 3, 9, 3, 3, 4, 7, 2, 3, 11, 3, 1, 2, 3, 6, 1, 1, 2, 1, 1, 1, 5, 13, 6, 3, 2, 9,
+ 4, 38, 15, 15, 13, 11, 8, 3, 4, 5, 3, 2, 2, 2, 2, 21, 5, 3, 2, 4, 2, 2, 1, 1, 1, 3, 35, 4, 17, 8, 3, 3, 7, 3, 1, 21, 14, 2, 2, 2, 11,
+ 5, 5, 4, 4, 4, 3, 3, 3, 2, 6, 4, 4, 55, 2, 8, 1, 11, 5, 1, 2, 2, 10, 4, 2, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 41, 9, 7, 5, 5, 18,
+ 3, 2, 4, 5, 2, 6, 2, 1, 212,18, 2, 2, 2, 3, 3, 2, 2, 9, 2, 7, 6, 4, 2, 11, 4, 2, 22, 4, 2, 2, 2, 5, 4, 2, 1, 12, 6, 4, 4, 2, 20,
+ 18, 17, 2, 5, 6, 2, 1, 1, 1, 4, 83, 8, 3, 3, 3, 1, 27, 5, 15, 3, 6, 1, 17, 1, 1, 3, 8, 7, 3, 21, 20, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2,
+ 2, 2, 2, 2, 4, 2, 4, 4, 99, 3, 3, 8, 4, 1, 11, 3, 2, 2, 2, 2, 2, 1, 1, 7, 7, 1, 1, 2, 1, 1, 1, 1, 1, 11, 7, 2, 2, 3, 2, 3, 28,
+ 3, 4, 1, 1, 10, 10, 10, 3, 5, 3, 2, 2, 1, 1, 1, 1, 1, 3, 1, 1, 4, 7, 6, 2, 11, 6, 5, 3, 14, 2, 2, 2, 2, 9, 1, 3, 87, 11, 3, 2, 14,
+ 8, 2, 2, 2, 3, 2, 3, 1, 1, 3, 1, 1, 13, 5, 4, 3, 5, 10, 6, 3, 3, 2, 7, 2, 4, 3, 31, 8, 1, 5, 2, 5, 3, 2, 1, 2, 7, 2, 2, 26, 2,
+ 2, 2, 2, 5, 5, 5, 7, 5, 4, 3, 1, 1, 2, 2, 11, 1, 1, 1, 1, 1, 2, 1, 10, 5, 5, 3, 3, 2, 29, 25, 2, 2, 1, 7, 1, 2, 4, 3, 10, 2, 3,
+ 1, 6, 4, 3, 6, 8, 1, 10, 4, 2, 1, 2, 17, 2, 1, 1, 1, 2, 4, 2, 2, 53, 6, 1, 2, 1, 6, 3, 12, 4, 3, 2, 10, 2, 18, 13, 3, 42, 4, 7, 2,
+ 2, 7, 7, 4, 3, 5, 5, 3, 68, 2, 8, 4, 2, 2, 1, 12, 3, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 5, 2, 2, 2, 6, 3, 2, 1, 2, 4,
+ 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 12, 8, 7, 4, 2, 14, 10, 9, 1, 1, 1, 4, 3, 3, 16, 7, 2, 3, 4, 100,3, 5, 3, 5, 2, 3, 2, 16, 5, 5, 1,
+ 1, 1, 60, 20, 3, 2, 4, 2, 2, 7, 2, 4, 4, 4, 5, 1, 5, 3, 3, 2, 5, 3, 4, 3, 2, 2, 4, 86, 6, 2, 1, 13, 4, 3, 3, 6, 9, 2, 2, 2, 2,
+ 4, 1, 1, 1, 2, 1, 1, 10, 7, 7, 10, 2, 3, 7, 2, 4, 8, 1, 1, 3, 127,5, 2, 16, 12, 2, 3, 7, 7, 1, 1, 4, 3, 7, 4, 3, 8, 1, 1, 1, 1,
+ 4, 6, 1, 6, 29, 3, 2, 2, 2, 3, 5, 1, 4, 1, 1, 7, 12, 3, 2, 5, 5, 1, 2, 2, 13, 2, 2, 1, 1, 3, 3, 2, 5, 4, 4, 47, 6, 7, 3, 2, 2,
+ 7, 1, 8, 8, 5, 2, 6, 1, 5, 72, 19, 3, 11, 8, 7, 4, 3, 10, 2, 5, 3, 3, 1, 1, 1, 1, 6, 2, 7, 5, 3, 3, 14, 5, 5, 2, 2, 59, 3, 1, 1,
+ 1, 1, 2, 2, 4, 3, 1, 1, 1, 1, 5, 2, 3, 2, 2, 9, 1, 6, 5, 2, 11, 2, 2, 2, 9, 10, 5, 3, 1, 11, 3, 3, 1, 24, 2, 6, 3, 6, 3, 2, 8,
+ 1, 1, 5, 2, 2, 1, 4, 10, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 12, 2, 4, 1, 3, 18, 6, 4, 6, 1, 4, 4, 2, 1, 1, 42, 3, 2, 2, 13, 7,
+ 8, 3, 2, 2, 2, 3, 2, 2, 2, 4, 9, 2, 145,34, 3, 3, 1, 7, 3, 5, 2, 3, 2, 1, 1, 1, 28, 4, 1, 2, 2, 2, 1, 2, 4, 3, 5, 2, 2, 2, 2,
+ 3, 3, 2, 3, 3, 30, 2, 2, 12, 6, 2, 2, 1, 1, 1, 5, 1, 3, 16, 2, 3, 2, 1, 4, 2, 8, 1, 2, 2, 5, 1, 1, 2, 2, 8, 3, 2, 5, 4, 2, 2,
+ 30, 11, 8, 4, 1, 1, 2, 3, 3, 5, 13, 2, 3, 3, 2, 18, 1, 1, 8, 6, 5, 9, 3, 4, 4, 1, 5, 1, 2, 23, 10, 3, 2, 2, 5, 2, 2, 26, 1, 3, 3,
+ 3, 2, 2, 3, 2, 2, 4, 2, 16, 10, 3, 3, 3, 3, 1, 1, 1, 2, 1, 1, 2, 40, 6, 8, 10, 2, 3, 4, 2, 2, 62, 2, 15, 3, 2, 10, 7, 6, 3, 2, 17,
+ 2, 2, 2, 15, 7, 4, 3, 3, 6, 2, 2, 3, 6, 3, 4, 2, 5, 3, 20, 7, 6, 3, 2, 1, 1, 2, 2, 4, 2, 31, 1, 1, 3, 1, 1, 8, 2, 2, 1, 3, 6,
+ 12, 6, 6, 5, 6, 4, 2, 1, 41, 3, 15, 3, 7, 15, 2, 7, 5, 2, 4, 7, 3, 18, 2, 1, 3, 3, 1, 31, 1, 1, 6, 2, 3, 2, 1, 1, 5, 4, 4, 3, 2,
+ 3, 3, 2, 2, 2, 6, 4, 3, 4, 3, 20, 5, 5, 5, 2, 2, 2, 2, 2, 1, 1, 1, 1, 5, 1, 1, 1, 2, 2, 8, 7, 6, 3, 3, 17, 6, 5, 3, 2, 5, 10,
+ 1, 7, 6, 3, 2, 11, 2, 1, 5, 1, 1, 1, 2, 11, 3, 2, 2, 39, 3, 2, 17, 2, 3, 4, 2, 3, 3, 5, 1, 6, 2, 1, 1, 1, 1, 76, 10, 4, 4, 2, 2,
+ 2, 26, 3, 7, 2, 7, 3, 4, 3, 2, 3, 2, 5, 4, 1, 1, 2, 2, 9, 4, 2, 2, 5, 3, 11, 4, 3, 31, 1, 1, 7, 2, 4, 2, 1, 5, 3, 3, 2, 6, 3,
+ 3, 1, 1, 30, 4, 3, 18, 13, 2, 5, 2, 2, 1, 1, 14, 5, 1, 1, 1, 1, 1, 5, 5, 103,40, 4, 3, 2, 4, 2, 2, 2, 16, 15, 6, 3, 2, 4, 1, 2, 3,
+ 14, 2, 3, 5, 4, 17, 3, 6, 4, 2, 1, 1, 1, 8, 3, 7, 1, 1, 3, 3, 31, 7, 5, 12, 4, 5, 2, 5, 14, 3, 1, 1, 2, 2, 3, 1, 1, 2, 78, 7, 3,
+ 3, 2, 2, 10, 7, 4, 15, 6, 3, 3, 1, 2, 2, 8, 4, 2, 19, 8, 2, 3, 4, 5, 4, 3, 3, 3, 3, 3, 2, 4, 2, 4, 2, 2, 3, 2, 4, 100,8, 3, 3,
+ 3, 2, 10, 2, 1, 7, 2, 4, 2, 8, 4, 4, 3, 4, 3, 1, 1, 2, 3, 1, 1, 1, 1, 1, 23, 3, 3, 2, 8, 2, 1, 5, 25, 2, 4, 1, 1, 7, 4, 2, 2,
+ 5, 4, 3, 3, 1, 1, 152,15, 5, 5, 2, 2, 2, 1, 2, 7, 2, 1, 2, 32, 9, 6, 7, 4, 4, 3, 2, 5, 11, 8, 7, 2, 2, 11, 3, 3, 3, 50, 17, 1, 3,
+ 11, 2, 2, 1, 13, 8, 2, 9, 2, 2, 2, 3, 2, 8, 27, 4, 2, 2, 2, 3, 1, 1, 2, 1, 3, 9, 3, 3, 1, 37, 4, 1, 20, 6, 1, 12, 6, 10, 5, 2, 3,
+ 10, 7, 3, 3, 3, 3, 2, 2, 5, 2, 2, 2, 1, 31, 3, 1, 3, 8, 5, 2, 2, 3, 4, 3, 15, 4, 1, 1, 2, 6, 3, 3, 2, 1, 1, 1, 1, 4, 1, 2, 1,
+ 1, 1, 117,1, 1, 77, 3, 2, 2, 1, 12, 8, 6, 6, 4, 3, 1, 1, 1, 3, 3, 5, 4, 3, 4, 4, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 7, 3, 3, 3,
+ 16, 10, 9, 2, 1, 1, 1, 3, 1, 1, 2, 6, 3, 3, 8, 5, 3, 2, 2, 2, 2, 6, 4, 6, 2, 3, 3, 8, 2, 2, 2, 3, 1, 8, 3, 2, 1, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 1, 1, 2, 2, 4, 53, 3, 5, 4, 13, 3, 2, 2, 2, 1, 1, 1, 1, 3, 2, 2, 15, 10, 3, 1, 4, 4, 3, 2,
+ 8, 3, 2, 2, 37, 6, 5, 5, 18, 14, 11, 5, 5, 5, 5, 5, 3, 5, 2, 3, 3, 55, 3, 1, 1, 1, 7, 2, 2, 2, 2, 10, 4, 27, 11, 3, 1, 1, 5, 2, 1,
+ 5, 5, 3, 2, 2, 2, 1, 1, 4, 4, 4, 2, 37, 14, 3, 6, 1, 3, 3, 1, 1, 9, 2, 1, 1, 2, 1, 2, 1, 94, 4, 4, 7, 5, 1, 1, 1, 3, 1, 2, 1,
+ 2, 3, 22, 3, 7, 3, 2, 3, 4, 15, 4, 1, 3, 3, 2, 28, 3, 1, 1, 1, 5, 3, 3, 2, 5, 1, 1, 2, 2, 6, 1, 2, 1, 1, 1, 1, 1, 2, 2, 8, 5,
+ 2, 2, 2, 1, 12, 5, 52, 8, 4, 4, 5, 3, 4, 18, 4, 6, 4, 3, 8, 6, 3, 3, 26, 9, 4, 2, 2, 5, 4, 9, 6, 5, 2, 10, 2, 2, 2, 4, 3, 33, 4,
+ 1, 1, 6, 3, 7, 4, 3, 3, 2, 6, 8, 4, 3, 9, 3, 4, 1, 2, 1, 9, 2, 5, 14, 10, 4, 2, 3, 7, 2, 3, 10, 3, 3, 11, 2, 2, 5, 4, 4, 2, 6,
+ 2, 2, 14, 3, 3, 2, 2, 2, 3, 2, 20, 4, 9, 4, 3, 5, 3, 4, 8, 4, 3, 2, 8, 3, 12, 3, 4, 2, 3, 16, 8, 4, 3, 3, 188,12, 2, 2, 11, 5, 2,
+ 3, 2, 2, 7, 4, 3, 2, 1, 1, 1, 9, 2, 3, 1, 10, 5, 3, 3, 3, 1, 1, 5, 2, 114,3, 3, 7, 3, 1, 1, 1, 5, 1, 4, 19, 1, 1, 4, 2, 2, 6,
+ 32, 4, 4, 11, 10, 2, 5, 3, 6, 4, 2, 10, 3, 3, 21, 4, 3, 2, 7, 2, 4, 3, 15, 3, 4, 4, 1, 1, 1, 3, 1, 1, 91, 7, 12, 4, 3, 3, 7, 21, 2,
+ 1, 2, 2, 5, 5, 1, 1, 10, 2, 2, 8, 3, 4, 3, 2, 2, 3, 8, 1, 2, 1, 1, 104,2, 1, 1, 1, 1, 1, 1, 5, 4, 4, 4, 3, 2, 5, 2, 2, 2, 2,
+ 2, 2, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 2, 2, 14, 6, 3, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 2, 2, 2, 1,
+ 1, 1, 1, 1, 1, 1, 12, 9, 9, 7, 2, 2, 2, 2, 2, 2, 16, 5, 2, 1, 1, 1, 1, 9, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 4, 2,
+ 2, 6, 3, 1, 1, 1, 1, 1, 1, 2, 3, 2, 1, 1, 11, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 9, 3, 2, 2, 1, 1, 1, 3, 1,
+ 12, 4, 3, 3, 3, 2, 2, 2, 1, 2, 2, 152,4, 1, 12, 9, 2, 3, 3, 1, 1, 1, 39, 2, 2, 3, 7, 4, 2, 2, 3, 7, 3, 4, 2, 2, 2, 6, 1, 1, 1,
+ 1, 3, 5, 3, 3, 2, 26, 10, 6, 3, 4, 2, 2, 1, 3, 2, 1, 2, 3, 2, 2, 2, 6, 3, 4, 4, 1, 1, 1, 34, 27, 19, 19, 18, 4, 6, 2, 111,6, 1, 1,
+ 2, 2, 19, 6, 3, 1, 5, 4, 3, 10, 3, 3, 3, 3, 3, 18, 2, 3, 1, 10, 7, 2, 4, 1, 1, 1, 5, 2, 2, 2, 6, 2, 3, 3, 7, 4, 4, 3, 1, 1, 1,
+ 1, 2, 2, 16, 2, 7, 5, 3, 8, 4, 2, 81, 2, 18, 16, 5, 2, 10, 6, 5, 1, 2, 6, 25, 15, 2, 11, 3, 2, 3, 3, 1, 3, 2, 4, 3, 1, 1, 11, 3, 4,
+ 3, 2, 2, 1, 1, 3, 17, 3, 3, 3, 1, 2, 6, 3, 3, 29, 1, 1, 1, 1, 2, 8, 4, 2, 2, 1, 4, 4, 1, 15, 14, 2, 5, 5, 3, 2, 1, 5, 3, 1, 1,
+ 9, 4, 3, 2, 3, 2, 179,5, 171,5, 3, 3, 7, 20, 1, 7, 3, 3, 4, 4, 3, 2, 6, 2, 2, 2, 11, 2, 3, 8, 2, 1, 2, 12, 5, 3, 3, 3, 3, 6, 2,
+ 9, 2, 3, 3, 18, 8, 5, 5, 3, 6, 3, 2, 4, 3, 2, 3, 3, 22, 6, 4, 2, 2, 3, 3, 3, 2, 2, 6, 3, 3, 5, 2, 2, 2, 9, 2, 2, 2, 3, 21, 14,
+ 2, 3, 2, 2, 3, 4, 2, 1, 1, 1, 9, 3, 2, 15, 4, 2, 1, 1, 1, 1, 1, 1, 3, 22, 17, 3, 2, 1, 2, 8, 6, 70, 17, 4, 7, 4, 11, 4, 4, 27, 12,
+ 7, 5, 3, 2, 3, 2, 3, 1, 1, 2, 2, 3, 2, 5, 42, 2, 6, 3, 1, 2, 7, 4, 3, 4, 2, 2, 2, 2, 2, 2, 1, 1, 12, 5, 4, 4, 2, 2, 2, 2, 3,
+ 17, 2, 2, 2, 3, 3, 3, 2, 7, 3, 10, 3, 1, 1, 1, 2, 1, 1, 1, 6, 19, 10, 5, 3, 3, 1, 1, 101,13, 5, 5, 3, 6, 4, 4, 1, 2, 12, 2, 5, 2,
+ 10, 3, 3, 1, 1, 1, 1, 3, 15, 6, 3, 2, 2, 4, 2, 2, 1, 1, 1, 1, 1, 16, 1, 13, 5, 4, 4, 4, 2, 3, 1, 3, 4, 4, 89, 5, 4, 3, 1, 1, 3,
+ 5, 3, 1, 1, 5, 36, 16, 2, 2, 2, 3, 2, 2, 3, 2, 2, 10, 3, 2, 12, 7, 2, 3, 3, 10, 3, 3, 6, 2, 2, 2, 3, 4, 3, 3, 3, 216,3, 29, 3, 23,
+ 6, 3, 3, 3, 4, 4, 1, 1, 9, 5, 1, 1, 8, 1, 1, 14, 1, 3, 2, 2, 2, 19, 16, 7, 6, 61, 39, 3, 3, 3, 2, 2, 6, 2, 2, 13, 2, 5, 2, 2, 2,
+ 3, 3, 1, 1, 1, 2, 2, 2, 18, 4, 4, 3, 5, 2, 2, 2, 10, 1, 1, 1, 1, 7, 5, 5, 10, 4, 4, 4, 6, 28, 2, 7, 6, 5, 4, 4, 1, 3, 3, 1, 1,
+ 1, 1, 1, 1, 1, 201,4, 2, 2, 3, 2, 2, 2, 130,3, 12, 10, 5, 3, 3, 2, 2, 1, 16, 7, 3, 3, 4, 3, 8, 3, 3, 1, 2, 5, 4, 4, 3, 4, 3, 3,
+ 2, 4, 2, 2, 2, 3, 2, 4, 2, 16, 1, 1, 4, 4, 3, 4, 3, 1, 5, 4, 2, 19, 11, 9, 2, 2, 2, 3, 1, 2, 1, 1, 16, 6, 5, 3, 7, 10, 3, 4, 4,
+ 3, 2, 11, 4, 34, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 14, 4, 8, 2, 7, 3, 2, 2, 2, 2, 1, 1, 4, 1, 1, 1, 59, 3, 1, 2, 3, 19, 15, 3, 3,
+ 3, 4, 3, 6, 5, 18, 3, 2, 1, 3, 120,6, 3, 2, 6, 44, 12, 3, 2, 22, 4, 3, 2, 2, 4, 4, 4, 3, 2, 9, 3, 5, 1, 3, 3, 3, 2, 9, 2, 1, 5,
+ 4, 10, 3, 3, 2, 1, 56, 4, 1, 1, 16, 5, 2, 1, 5, 5, 3, 11, 5, 2, 1, 2, 16, 6, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 90, 6, 7, 2,
+ 2, 17, 2, 8, 3, 2, 4, 1, 2, 2, 2, 5, 4, 2, 2, 2, 2, 13, 3, 1, 3, 3, 3, 2, 6, 1, 1, 1, 4, 2, 3, 14, 4, 4, 4, 4, 2, 1, 3, 2, 1,
+ 1, 92, 4, 4, 4, 3, 17, 5, 5, 5, 5, 5, 5, 3, 4, 3, 5, 7, 3, 2, 13, 4, 2, 12, 6, 3, 1, 1, 5, 3, 4, 87, 15, 2, 5, 3, 2, 1, 12, 9, 8,
+ 4, 4, 12, 3, 2, 2, 2, 16, 2, 5, 3, 2, 2, 4, 1, 2, 4, 5, 8, 4, 67, 11, 5, 5, 5, 2, 14, 2, 3, 6, 11, 8, 3, 1, 5, 1, 8, 3, 2, 2, 2,
+ 49, 14, 9, 6, 3, 3, 6, 3, 17, 1, 1, 1, 7, 3, 3, 3, 1, 2, 1, 4, 9, 6, 5, 1, 17, 5, 1, 2, 180,12, 2, 5, 27, 7, 2, 3, 1, 2, 4, 23, 3,
+ 4, 5, 4, 4, 2, 3, 30, 3, 8, 3, 1, 2, 3, 10, 3, 6, 5, 4, 34, 6, 6, 1, 10, 7, 1, 2, 9, 5, 5, 2, 14, 7, 4, 4, 4, 4, 3, 11, 4, 2, 2,
+ 2, 4, 2, 2, 2, 53, 5, 34, 13, 7, 7, 2, 2, 8, 7, 4, 3, 2, 4, 2, 1, 1, 1, 1, 2, 3, 1, 1, 3, 2, 246,34, 3, 3, 2, 2, 4, 2, 2, 2, 1,
+ 3, 5, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 3, 29, 3, 3, 1, 6, 2, 1, 4, 1, 1, 1, 2, 3, 3, 2, 2, 2, 36, 2, 2, 3, 2, 2, 3, 2, 5, 5,
+ 7, 2, 4, 4, 20, 4, 1, 1, 2, 2, 5, 1, 1, 3, 1, 4, 2, 1, 24, 2, 6, 4, 3, 7, 4, 6, 6, 3, 5, 34, 3, 3, 14, 1, 4, 10, 3, 2, 1, 10, 3,
+ 13, 3, 4, 1, 1, 2, 7, 4, 2, 2, 6, 3, 1, 1, 2, 2, 2, 3, 3, 230,26, 4, 5, 4, 7, 6, 4, 4, 5, 19, 2, 8, 4, 4, 3, 2, 49, 3, 2, 2, 2,
+ 2, 6, 2, 5, 2, 2, 2, 3, 9, 7, 1, 10, 4, 2, 2, 2, 2, 2, 20, 3, 2, 10, 8, 2, 2, 14, 2, 5, 5, 4, 7, 13, 7, 4, 45, 2, 5, 7, 4, 7, 7,
+ 6, 4, 8, 2, 2, 2, 2, 7, 2, 5, 4, 4, 6, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 13, 3, 3, 10, 9, 2, 5, 4, 1, 1, 1, 34, 19, 3, 4, 1, 1, 8,
+ 2, 3, 3, 2, 2, 25, 3, 3, 1, 1, 4, 2, 2, 6, 4, 2, 28, 11, 3, 3, 2, 2, 2, 18, 3, 10, 3, 4, 8, 2, 1, 1, 1, 2, 6, 4, 5, 2, 18, 1, 6,
+ 1, 2, 2, 2, 1, 29, 1, 1, 5, 3, 1, 1, 2, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 5, 4, 1, 1, 33, 4, 10, 2, 4, 4, 2, 13, 8, 16, 2, 3, 1, 3,
+ 3, 7, 2, 1, 9, 1, 5, 3, 3, 135,8, 3, 1, 2, 18, 3, 2, 5, 3, 8, 6, 10, 5, 3, 2, 3, 6, 5, 5, 10, 3, 2, 4, 4, 4, 36, 4, 3, 8, 2, 1,
+ 1, 2, 4, 2, 5, 3, 21, 5, 3, 3, 9, 6, 3, 111,1, 1, 1, 1, 10, 1, 9, 8, 3, 3, 3, 3, 8, 1, 4, 2, 16, 7, 5, 2, 4, 2, 4, 3, 50, 5, 6,
+ 1, 1, 1, 1, 1, 9, 2, 2, 2, 4, 9, 8, 3, 15, 2, 7, 4, 2, 2, 2, 2, 1, 1, 1, 2, 2, 214,2, 2, 2, 14, 10, 2, 5, 2, 1, 1, 1, 1, 11, 1,
+ 1, 2, 2, 1, 2, 4, 2, 2, 2, 14, 1, 1, 1, 10, 2, 3, 1, 1, 3, 2, 2, 1, 35, 3, 7, 4, 11, 3, 2, 3, 2, 2, 1, 2, 2, 4, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 22, 8, 9, 1, 4, 1, 1, 1, 1, 2, 3, 3, 57, 2, 6, 4, 3, 1, 9, 4, 2, 2, 2, 15, 5, 2, 2, 2, 6, 3, 2, 1, 2, 8, 1, 3,
+ 2, 2, 2, 3, 1, 1, 10, 2, 2, 22, 1, 1, 4, 1, 2, 1, 1, 6, 3, 2, 1, 4, 2, 3, 3, 2, 17, 4, 2, 7, 6, 91, 4, 2, 10, 3, 2, 18, 3, 9, 2,
+ 4, 4, 3, 3, 4, 24, 2, 9, 6, 5, 3, 4, 2, 4, 4, 5, 1, 2, 25, 7, 4, 1, 1, 4, 3, 3, 78, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 3, 4,
+ 6, 4, 8, 3, 2, 2, 9, 2, 2, 2, 2, 2, 4, 7, 4, 11, 3, 1, 1, 3, 2, 5, 1, 2, 29, 4, 7, 5, 5, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 1, 1, 1, 1, 3, 3, 3, 1, 5, 3, 11, 3, 2, 52, 3, 2, 2, 2, 10, 7, 2, 1, 25, 14, 1, 1, 4, 3, 2, 2, 2, 52, 4, 4, 2, 6, 3, 6, 3, 5,
+ 4, 2, 3, 2, 1, 2, 2, 6, 1, 1, 1, 5, 1, 1, 1, 3, 19, 6, 3, 3, 6, 21, 2, 14, 7, 1, 4, 1, 1, 40, 5, 5, 23, 2, 1, 4, 2, 4, 3, 2, 2,
+ 4, 4, 3, 2, 1, 1, 12, 7, 4, 2, 32, 5, 2, 6, 2, 3, 3, 2, 5, 4, 2, 2, 165,7, 2, 20, 6, 10, 4, 2, 2, 1, 1, 67, 6, 15, 2, 6, 4, 7, 2,
+ 5, 2, 2, 18, 2, 11, 4, 2, 5, 5, 3, 2, 8, 1, 5, 3, 2, 12, 4, 3, 17, 5, 4, 4, 5, 10, 2, 2, 52, 3, 4, 7, 4, 9, 6, 2, 2, 3, 3, 18, 8,
+ 2, 5, 2, 2, 24, 2, 2, 2, 2, 1, 1, 9, 2, 2, 2, 32, 6, 5, 1, 2, 2, 2, 13, 2, 2, 1, 4, 2, 2, 2, 2, 2, 1, 1, 1, 28, 5, 16, 2, 2, 2,
+ 3, 5, 6, 10, 6, 3, 12, 2, 3, 34, 7, 2, 3, 14, 8, 3, 3, 6, 3, 2, 4, 82, 10, 1, 1, 2, 1, 2, 1, 30, 3, 4, 2, 2, 2, 5, 4, 3, 2, 2, 2,
+ 2, 2, 2, 2, 5, 2, 8, 7, 1, 1, 2, 1, 1, 14, 14, 2, 1, 3, 1, 1, 4, 3, 2, 2, 2, 23, 10, 2, 2, 3, 10, 4, 2, 1, 2, 2, 16, 2, 8, 1, 2,
+ 27, 3, 9, 2, 6, 11, 2, 1, 4, 2, 8, 2, 2, 1, 40, 6, 5, 4, 2, 3, 3, 19, 3, 3, 7, 6, 3, 1, 1, 2, 1, 1, 2, 1, 1, 4, 13, 4, 3, 1, 1,
+ 1, 2, 63, 2, 2, 15, 6, 5, 3, 2, 4, 2, 1, 1, 2, 2, 13, 4, 6, 2, 1, 1, 2, 3, 16, 3, 2, 2, 2, 2, 28, 2, 2, 4, 7, 3, 2, 2, 2, 7, 3,
+ 23, 3, 5, 1, 4, 3, 1, 8, 1, 1, 1, 8, 3, 2, 13, 4, 2, 7, 2, 20, 1, 1, 6, 5, 3, 4, 1, 12, 3, 4, 3, 2, 1, 1, 1, 1, 37, 29, 4, 4, 1,
+ 6, 4, 2, 29, 1, 24, 7, 3, 5, 56, 2, 14, 1, 6, 3, 2, 1, 1, 1, 4, 2, 30, 22, 2, 2, 2, 6, 1, 1, 3, 2, 32, 9, 2, 6, 7, 54, 14, 7, 3, 1,
+ 1, 7, 4, 3, 6, 3, 19, 15, 4, 1, 1, 4, 2, 4, 2, 2, 3, 19, 3, 14, 5, 4, 4, 4, 14, 2, 5, 2, 58, 5, 3, 1, 1, 1, 8, 2, 5, 14, 3, 4, 4,
+ 11, 2, 2, 3, 3, 5, 40, 7, 3, 4, 3, 7, 3, 5, 3, 10, 6, 3, 57, 10, 8, 6, 6, 3, 2, 2, 6, 5, 4, 4, 2, 2, 26, 8, 6, 3, 3, 3, 2, 3, 3,
+ 7, 5, 3, 2, 1, 1, 48, 45, 3, 6, 5, 5, 6, 2, 2, 2, 2, 1, 1, 1, 2, 2, 8, 3, 1, 4, 2, 4, 2, 47, 3, 2, 7, 3, 2, 32, 9, 3, 2, 4, 4,
+ 1, 1, 44, 12, 5, 1, 1, 3, 7, 2, 1, 1, 4, 2, 2, 3, 13, 2, 3, 2, 1, 1, 5, 3, 1, 1, 10, 3, 3, 5, 2, 1, 1, 1, 16, 11, 3, 1, 1, 1, 6,
+ 2, 2, 4, 21, 2, 3, 2, 2, 4, 3, 3, 3, 2, 1, 2, 43, 13, 4, 2, 2, 7, 4, 3, 2, 5, 3, 2, 3, 6, 57, 6, 38, 5, 3, 2, 4, 3, 7, 11, 5, 2,
+ 1, 1, 1, 1, 2, 10, 3, 2, 3, 2, 29, 4, 2, 4, 8, 2, 3, 21, 2, 1, 1, 1, 16, 14, 10, 2, 22, 5, 5, 2, 2, 3, 3, 3, 5, 2, 62, 2, 2, 2, 5,
+ 42, 2, 5, 7, 6, 10, 2, 5, 4, 5, 1, 2, 4, 10, 4, 2, 2, 2, 3, 2, 30, 2, 1, 11, 3, 2, 4, 10, 5, 3, 2, 21, 4, 3, 6, 3, 3, 5, 2, 3, 3,
+ 14, 6, 4, 2, 12, 5, 3, 6, 5, 5, 31, 2, 1, 9, 4, 3, 3, 2, 8, 5, 79, 2, 1, 1, 9, 3, 19, 5, 4, 2, 7, 6, 3, 4, 7, 2, 6, 4, 1, 9, 9,
+ 1, 2, 2, 3, 33, 6, 3, 9, 1, 1, 1, 2, 1, 6, 5, 4, 1, 15, 4, 4, 2, 2, 3, 2, 4, 3, 2, 45, 13, 11, 3, 4, 10, 3, 2, 1, 1, 4, 1, 1, 2,
+ 14, 8, 2, 4, 3, 2, 4, 3, 2, 1, 1, 1, 1, 7, 1, 1, 1, 1, 4, 1, 2, 58, 5, 38, 19, 6, 3, 11, 8, 2, 3, 4, 2, 4, 166,5, 2, 3, 2, 2, 16,
+ 4, 3, 1, 1, 2, 6, 2, 2, 1, 1, 1, 1, 4, 50, 14, 2, 8, 3, 2, 2, 7, 2, 4, 2, 4, 2, 4, 3, 2, 2, 2, 77, 3, 3, 2, 14, 2, 5, 4, 1, 10,
+ 5, 3, 3, 4, 3, 3, 2, 2, 11, 7, 5, 2, 2, 5, 2, 1, 2, 6, 1, 5, 2, 2, 3, 2, 1, 1, 3, 5, 2, 105,4, 43, 3, 4, 7, 4, 4, 2, 2, 20, 4,
+ 5, 1, 9, 7, 5, 2, 2, 8, 4, 5, 4, 3, 4, 3, 2, 3, 2, 1, 1, 4, 2, 2, 6, 3, 1, 2, 2, 54, 7, 6, 4, 3, 6, 3, 2, 6, 14, 4, 2, 1, 1,
+ 1, 1, 7, 1, 1, 5, 2, 5, 2, 48, 42, 10, 7, 6, 10, 4, 3, 2, 6, 9, 4, 3, 51, 9, 2, 2, 3, 16, 8, 6, 4, 5, 2, 2, 6, 2, 2, 1, 2, 14, 1,
+ 3, 1, 1, 1, 3, 25, 4, 2, 10, 8, 4, 2, 1, 2, 2, 13, 3, 5, 3, 1, 1, 1, 2, 1, 1, 1, 1, 17, 3, 3, 3, 3, 2, 6, 3, 3, 2, 161,10, 2, 1,
+ 6, 2, 1, 1, 2, 2, 2, 2, 13, 7, 6, 8, 3, 1, 1, 8, 2, 90, 5, 3, 17, 1, 16, 11, 4, 15, 5, 7, 1, 5, 4, 4, 4, 4, 2, 2, 13, 5, 2, 2, 2,
+ 2, 1, 5, 3, 2, 3, 2, 9, 4, 4, 3, 2, 2, 2, 4, 2, 4, 6, 2, 4, 1, 41, 2, 12, 4, 5, 4, 3, 2, 1, 2, 2, 2, 2, 12, 3, 3, 126,8, 5, 31,
+ 6, 10, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 4, 2, 1, 1, 1, 2, 18, 6, 2, 1, 4, 4, 15, 3, 15, 4, 7, 4, 2, 1, 16, 4, 2, 7, 3,
+ 2, 18, 11, 6, 1, 1, 1, 3, 1, 1, 5, 3, 1, 1, 1, 2, 2, 10, 2, 3, 2, 14, 6, 2, 2, 2, 18, 11, 2, 4, 2, 2, 2, 2, 3, 2, 29, 11, 4, 2, 2,
+ 7, 3, 16, 8, 8, 5, 5, 5, 3, 3, 68, 6, 2, 2, 20, 3, 5, 4, 1, 9, 4, 3, 5, 8, 2, 2, 2, 1, 1, 5, 4, 3, 6, 5, 1, 1, 3, 1, 13, 3, 1,
+ 40, 3, 10, 9, 6, 2, 2, 2, 2, 6, 4, 2, 6, 3, 2, 1, 27, 5, 2, 9, 3, 7, 5, 4, 9, 4, 3, 2, 44, 8, 13, 8, 4, 3, 2, 2, 6, 2, 1, 5, 5,
+ 47, 5, 8, 3, 3, 15, 1, 3, 4, 11, 3, 4, 4, 21, 5, 2, 3, 2, 2, 6, 21, 2, 2, 1, 1, 2, 3, 2, 3, 5, 3, 3, 4, 2, 4, 2, 3, 199,7, 3, 1,
+ 1, 7, 3, 12, 3, 2, 7, 1, 10, 3, 47, 3, 9, 3, 3, 5, 2, 6, 4, 2, 3, 1, 4, 3, 5, 2, 1, 1, 24, 3, 5, 13, 11, 11, 10, 2, 2, 3, 2, 1, 9,
+ 4, 2, 2, 3, 2, 2, 28, 3, 9, 2, 5, 3, 1, 3, 37, 7, 2, 16, 14, 7, 2, 3, 3, 4, 2, 150,10, 3, 11, 11, 6, 5, 10, 3, 3, 5, 2, 6, 3, 2, 3,
+ 1, 3, 86, 5, 3, 32, 28, 5, 3, 7, 2, 1, 5, 3, 2, 2, 1, 2, 5, 3, 3, 4, 2, 3, 3, 2, 3, 9, 6, 10, 4, 3, 3, 5, 2, 1, 1, 5, 2, 1, 16,
+ 4, 4, 1, 1, 1, 38, 3, 3, 26, 5, 1, 8, 3, 5, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 118,10, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2,
+ 3, 1, 2, 1, 1, 1, 8, 2, 1, 1, 3, 2, 8, 3, 11, 1, 1, 5, 7, 4, 4, 2, 2, 21, 4, 3, 1, 1, 1, 1, 5, 4, 8, 5, 2, 2, 3, 1, 10, 5, 2,
+ 2, 3, 4, 4, 4, 3, 3, 3, 3, 3, 1, 3, 2, 1, 5, 3, 3, 2, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 110,1, 1, 29, 8, 7, 5, 10, 3, 3, 3, 2, 4, 6, 3, 3, 3, 1, 13,
+ 1, 4, 4, 3, 3, 17, 3, 2, 3, 9, 4, 3, 12, 10, 1, 1, 10, 2, 3, 2, 1, 17, 6, 1, 5, 3, 5, 2, 2, 44, 7, 2, 1, 8, 3, 2, 5, 3, 2, 2, 14,
+ 5, 6, 4, 1, 1, 4, 1, 1, 4, 69, 1, 7, 1, 4, 2, 12, 3, 5, 15, 3, 1, 1, 1, 7, 1, 1, 1, 6, 2, 2, 2, 4, 6, 5, 1, 3, 1, 1, 6, 4, 4,
+ 2, 25, 4, 3, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 9, 7, 6, 2, 28, 5, 3, 2, 2, 4, 2, 2, 15, 2, 2, 2, 2, 9, 2, 2,
+ 1, 1, 3, 1, 1, 1, 19, 2, 6, 1, 1, 1, 4, 2, 3, 2, 1, 22, 6, 4, 3, 1, 4, 2, 2, 5, 2, 3, 2, 46, 2, 2, 6, 5, 2, 2, 8, 1, 2, 9, 6,
+ 4, 5, 14, 4, 1, 1, 1, 6, 7, 3, 2, 37, 9, 3, 5, 2, 1, 13, 4, 4, 5, 1, 1, 1, 1, 3, 1, 2, 2, 1, 3, 3, 31, 9, 3, 2, 1, 6, 12, 10, 2,
+ 23, 4, 3, 2, 14, 12, 4, 2, 24, 4, 4, 4, 6, 5, 3, 3, 2, 2, 3, 67, 11, 6, 4, 2, 5, 3, 3, 16, 12, 12, 12, 11, 5, 3, 4, 1, 2, 3, 2, 2, 1,
+ 9, 4, 2, 4, 3, 1, 1, 4, 3, 3, 96, 21, 1, 3, 3, 4, 18, 4, 4, 34, 3, 2, 7, 4, 4, 4, 4, 1, 5, 4, 2, 2, 2, 2, 2, 1, 1, 1, 6, 4, 8,
+ 1, 4, 2, 3, 10, 4, 1, 1, 5, 2, 1, 1, 1, 17, 2, 1, 1, 2, 1, 1, 5, 5, 2, 2, 2, 1, 1, 1, 1, 3, 1, 2, 10, 4, 1, 1, 1, 1, 2, 2, 2,
+ 5, 3, 31, 7, 3, 11, 2, 5, 12, 10, 3, 2, 2, 6, 4, 34, 2, 2, 3, 1, 20, 3, 1, 3, 2, 2, 8, 2, 2, 34, 2, 7, 5, 5, 3, 4, 11, 6, 3, 3, 2,
+ 3, 1, 3, 2, 51, 18, 3, 3, 4, 1, 1, 1, 1, 1, 25, 8, 14, 8, 3, 3, 2, 1, 1, 25, 13, 9, 3, 5, 12, 6, 4, 2, 1, 1, 8, 2, 2, 2, 2, 2, 2,
+ 92, 1, 25, 4, 4, 8, 6, 2, 9, 3, 8, 7, 7, 5, 16, 2, 2, 3, 2, 3, 3, 1, 2, 11, 4, 3, 3, 11, 1, 1, 3, 2, 1, 4, 3, 5, 4, 7, 2, 4, 2,
+ 2, 3, 55, 3, 3, 15, 7, 5, 3, 3, 2, 8, 4, 3, 1, 1, 14, 8, 2, 3, 2, 3, 2, 28, 16, 11, 7, 4, 2, 2, 4, 5, 3, 69, 1, 4, 2, 8, 6, 4, 20,
+ 12, 7, 4, 1, 13, 11, 2, 2, 6, 14, 3, 29, 6, 7, 3, 3, 3, 3, 3, 8, 4, 1, 2, 2, 19, 5, 4, 2, 2, 58, 14, 3, 3, 2, 3, 2, 2, 11, 4, 4, 12,
+ 6, 5, 5, 3, 1, 1, 2, 2, 16, 11, 3, 3, 1, 1, 33, 6, 16, 2, 8, 4, 4, 2, 8, 2, 80, 18, 4, 3, 1, 1, 2, 1, 1, 3, 3, 12, 4, 11, 3, 2, 2,
+ 2, 5, 2, 20, 11, 4, 6, 7, 6, 3, 1, 8, 3, 7, 6, 6, 2, 3, 2, 2, 5, 1, 2, 253,29, 4, 2, 2, 2, 1, 8, 6, 6, 2, 4, 1, 3, 3, 1, 34, 2,
+ 10, 7, 3, 5, 1, 1, 1, 4, 2, 5, 1, 41, 2, 4, 3, 1, 3, 2, 2, 28, 21, 16, 11, 7, 4, 3, 3, 2, 8, 5, 2, 21, 1, 1, 1, 6, 3, 2, 4, 1, 1,
+ 3, 2, 2, 32, 6, 2, 2, 12, 9, 7, 2, 3, 4, 4, 3, 3, 25, 4, 1, 19, 9, 2, 2, 3, 1, 1, 1, 3, 15, 1, 1, 2, 5, 2, 3, 3, 29, 10, 10, 9, 11,
+ 7, 4, 4, 13, 3, 3, 1, 1, 2, 71, 12, 3, 2, 5, 4, 2, 2, 10, 5, 3, 3, 3, 2, 9, 1, 5, 4, 4, 1, 3, 1, 5, 2, 2, 1, 13, 7, 1, 4, 2, 6,
+ 4, 52, 7, 2, 5, 4, 27, 2, 2, 18, 6, 1, 4, 3, 6, 6, 4, 1, 1, 1, 1, 1, 6, 1, 5, 5, 5, 19, 6, 3, 3, 2, 9, 7, 7, 5, 5, 5, 2, 84, 7,
+ 2, 2, 16, 4, 5, 2, 2, 33, 3, 3, 3, 2, 13, 8, 7, 9, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 6, 4, 36, 1, 3, 3, 3,
+ 3, 8, 3, 3, 3, 4, 3, 1, 6, 2, 58, 4, 6, 7, 4, 4, 4, 4, 3, 5, 3, 2, 4, 4, 12, 2, 2, 6, 1, 1, 3, 2, 88, 10, 13, 2, 21, 7, 3, 6, 4,
+ 21, 8, 4, 11, 3, 2, 3, 2, 6, 50, 8, 3, 2, 2, 22, 12, 6, 4, 5, 12, 6, 3, 2, 2, 7, 59, 16, 2, 3, 4, 3, 13, 2, 2, 19, 2, 9, 3, 6, 6, 2,
+ 5, 1, 61, 35, 4, 14, 13, 4, 4, 4, 4, 1, 1, 3, 7, 4, 4, 3, 1, 1, 36, 6, 19, 2, 2, 9, 7, 2, 5, 6, 4, 1, 1, 3, 2, 2, 2, 119,26, 2, 6,
+ 3, 27, 7, 4, 5, 39, 5, 5, 4, 3, 2, 1, 1, 1, 8, 4, 3, 3, 3, 1, 3, 2, 18, 3, 2, 4, 2, 2, 5, 2, 2, 2, 3, 18, 2, 2, 3, 1, 1, 1, 6,
+ 2, 3, 3, 79, 6, 3, 2, 18, 3, 8, 3, 11, 3, 3, 2, 4, 2, 6, 3, 3, 3, 3, 9, 5, 4, 14, 4, 7, 7, 4, 3, 4, 3, 3, 2, 8, 2, 19, 5, 3, 9,
+ 5, 5, 6, 46, 4, 3, 3, 3, 2, 6, 2, 2, 2, 8, 3, 2, 3, 2, 5, 2, 8, 4, 1, 1, 3, 2, 4, 2, 14, 7, 6, 5, 3, 1, 1, 31, 4, 2, 2, 6, 4,
+ 3, 2, 9, 31, 2, 1, 1, 8, 6, 6, 3, 2, 25, 2, 5, 4, 3, 3, 6, 6, 3, 3, 5, 2, 19, 6, 5, 11, 10, 4, 86, 27, 5, 6, 3, 6, 3, 3, 22, 1, 8,
+ 2, 4, 4, 25, 3, 3, 4, 6, 3, 3, 2, 5, 3, 1, 1, 135,18, 4, 4, 9, 2, 4, 42, 30, 23, 12, 8, 4, 3, 2, 1, 4, 2, 4, 25, 4, 3, 3, 15, 11, 2,
+ 4, 4, 16, 15, 2, 1, 2, 2, 1, 1, 9, 3, 2, 4, 22, 5, 4, 4, 3, 8, 1, 1, 1, 3, 2, 1, 1, 2, 11, 7, 5, 1, 3, 79, 1, 1, 6, 2, 2, 2, 2,
+ 2, 2, 41, 9, 7, 1, 5, 5, 10, 8, 11, 6, 4, 3, 3, 1, 10, 1, 3, 3, 2, 4, 3, 3, 4, 4, 4, 4, 4, 4, 2, 2, 2, 3, 16, 16, 3, 3, 3, 3, 2,
+ 3, 44, 5, 5, 2, 1, 1, 1, 1, 1, 13, 13, 13, 12, 3, 5, 4, 3, 14, 3, 3, 3, 1, 1, 6, 4, 3, 3, 2, 47, 9, 7, 3, 20, 4, 4, 4, 10, 3, 3, 3,
+ 3, 1, 9, 3, 5, 5, 4, 2, 10, 1, 2, 4, 5, 2, 4, 3, 3, 11, 2, 3, 9, 1, 1, 5, 9, 1, 2, 1, 24, 6, 1, 3, 2, 1, 5, 4, 5, 4, 3, 3, 3,
+ 2, 73, 1, 8, 4, 3, 2, 10, 3, 2, 2, 8, 8, 10, 3, 1, 1, 2, 16, 6, 3, 6, 15, 2, 2, 4, 2, 8, 7, 5, 87, 38, 2, 2, 24, 3, 3, 2, 5, 5, 5,
+ 7, 3, 2, 3, 3, 5, 3, 2, 1, 1, 1, 27, 3, 6, 2, 7, 3, 16, 2, 4, 5, 2, 2, 10, 1, 2, 4, 4, 3, 2, 25, 3, 1, 7, 3, 2, 2, 15, 4, 3, 3,
+ 5, 2, 1, 1, 4, 3, 35, 1, 1, 1, 2, 1, 4, 2, 2, 1, 2, 1, 3, 2, 1, 2, 2, 2, 1, 1, 13, 5, 5, 5, 3, 4, 2, 2, 2, 1, 1, 1, 1, 17, 6,
+ 4, 3, 2, 1, 1, 2, 2, 1, 2, 30, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 8, 8, 4, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 16, 2, 1, 4, 9, 6, 1, 1,
+ 5, 1, 3, 27, 2, 5, 4, 3, 2, 4, 2, 11, 11, 5, 2, 20, 7, 4, 6, 3, 1, 1, 3, 3, 4, 4, 3, 1, 6, 1, 2, 2, 2, 2, 1, 1, 1, 6, 3, 3, 1,
+ 113,6, 36, 18, 14, 10, 8, 3, 3, 11, 11, 7, 14, 2, 2, 2, 2, 4, 29, 1, 6, 3, 1, 3, 3, 3, 7, 5, 3, 5, 15, 11, 1, 8, 2, 3, 11, 8, 3, 107,3,
+ 1, 1, 1, 3, 1, 1, 1, 1, 10, 5, 5, 4, 85, 9, 2, 5, 5, 15, 5, 2, 2, 2, 2, 10, 2, 9, 5, 5, 4, 2, 4, 2, 38, 16, 14, 10, 4, 8, 2, 1, 1,
+ 10, 4, 4, 4, 2, 1, 3, 6, 5, 3, 2, 4, 1, 20, 2, 2, 12, 9, 8, 7, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 156,17, 7, 1, 6, 4, 1, 5, 3, 6, 3,
+ 3, 27, 8, 2, 2, 2, 5, 3, 1, 3, 3, 1, 1, 1, 5, 5, 5, 4, 1, 1, 1, 1, 6, 1, 1, 3, 1, 13, 3, 2, 3, 5, 4, 1, 18, 4, 3, 5, 3, 4, 23,
+ 6, 5, 5, 12, 11, 9, 5, 5, 5, 2, 2, 5, 3, 18, 4, 3, 3, 8, 4, 2, 3, 34, 9, 7, 3, 1, 10, 6, 5, 4, 7, 10, 3, 3, 3, 1, 1, 4, 2, 1, 1,
+ 1, 3, 2, 4, 2, 1, 23, 2, 1, 1, 1, 1, 1, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 16, 4, 3, 2, 5, 2, 16, 3, 1, 8, 3, 1, 3, 21, 3, 2, 6, 1, 1, 3, 2, 3, 12,
+ 3, 6, 3, 10, 3, 4, 2, 4, 3, 2, 1, 41, 2, 2, 2, 10, 3, 3, 15, 3, 2, 4, 3, 3, 2, 2, 2, 2, 4, 3, 14, 1, 1, 1, 1, 8, 7, 3, 2, 2, 1,
+ 2, 2, 2, 2, 63, 5, 1, 1, 5, 2, 2, 1, 1, 1, 3, 5, 3, 6, 2, 2, 7, 16, 2, 9, 9, 7, 2, 2, 2, 5, 5, 2, 78, 25, 13, 13, 6, 3, 7, 4, 2,
+ 4, 3, 3, 2, 1, 1, 1, 1, 1, 2, 1, 5, 31, 7, 1, 10, 9, 8, 2, 3, 139,4, 18, 13, 6, 5, 4, 4, 3, 2, 30, 3, 3, 11, 8, 1, 1, 1, 1, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 8, 5, 30, 16, 1, 3, 2, 2, 2, 15, 11, 9, 2, 1, 2, 22, 3, 7, 3, 3, 1, 1, 4, 1, 1, 2, 10, 5, 1, 59, 4, 3,
+ 3, 1, 1, 1, 12, 5, 5, 5, 9, 3, 3, 3, 4, 2, 3, 16, 4, 6, 4, 2, 1, 1, 1, 210,26, 17, 17, 17, 16, 14, 8, 4, 2, 2, 5, 5, 5, 4, 4, 2, 2,
+ 4, 2, 2, 7, 3, 3, 2, 2, 1, 1, 12, 8, 1, 1, 21, 3, 3, 7, 3, 7, 71, 4, 30, 1, 2, 15, 3, 2, 2, 21, 18, 3, 8, 8, 7, 5, 2, 12, 2, 4, 4,
+ 7, 2, 4, 3, 1, 1, 6, 2, 2, 17, 8, 7, 3, 4, 2, 2, 2, 1, 4, 3, 2, 1, 43, 10, 4, 4, 9, 1, 1, 4, 2, 12, 3, 3, 6, 52, 2, 1, 11, 6, 6,
+ 1, 1, 1, 1, 4, 2, 3, 21, 2, 1, 1, 1, 1, 1, 13, 8, 2, 2, 2, 1, 32, 1, 6, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 7, 2, 4, 4, 20, 7,
+ 3, 3, 5, 2, 5, 3, 2, 2, 5, 1, 29, 6, 3, 14, 4, 7, 1, 1, 1, 2, 2, 1, 34, 4, 27, 7, 4, 4, 3, 2, 4, 62, 2, 6, 15, 3, 5, 5, 5, 19, 15,
+ 4, 2, 2, 7, 4, 3, 4, 5, 1, 1, 1, 4, 2, 2, 3, 3, 38, 5, 3, 3, 1, 1, 5, 3, 17, 14, 12, 2, 1, 1, 1, 1, 1, 21, 10, 3, 4, 4, 6, 3, 1,
+ 2, 2, 2, 2, 2, 1, 28, 9, 2, 3, 2, 6, 2, 2, 4, 1, 2, 2, 2, 4, 1, 1, 2, 6, 3, 2, 4, 4, 4, 91, 6, 2, 1, 1, 1, 9, 2, 3, 1, 10, 3,
+ 1, 2, 19, 3, 5, 1, 7, 1, 1, 5, 5, 15, 2, 6, 6, 4, 6, 6, 4, 2, 2, 5, 4, 63, 2, 1, 2, 6, 5, 4, 15, 3, 3, 24, 2, 2, 16, 13, 3, 3, 10,
+ 1, 2, 2, 1, 3, 42, 5, 3, 9, 3, 3, 2, 7, 2, 4, 17, 2, 3, 13, 3, 3, 3, 3, 7, 3, 3, 3, 1, 1, 1, 1, 20, 6, 3, 1, 1, 1, 1, 1, 1, 3,
+ 2, 1, 1, 6, 3, 35, 3, 8, 3, 3, 4, 1, 15, 3, 4, 3, 4, 2, 1, 2, 1, 1, 4, 74, 20, 12, 11, 4, 4, 2, 9, 2, 3, 28, 6, 2, 1, 1, 1, 1, 1,
+ 15, 13, 1, 1, 1, 1, 10, 1, 1, 4, 1, 1, 1, 2, 29, 16, 5, 5, 5, 4, 3, 2, 6, 1, 1, 6, 3, 3, 3, 6, 71, 5, 4, 3, 22, 2, 1, 4, 3, 2, 7,
+ 7, 10, 4, 4, 17, 3, 7, 1, 3, 2, 23, 5, 8, 3, 3, 2, 5, 2, 2, 58, 11, 2, 3, 3, 3, 2, 1, 1, 1, 1, 2, 6, 2, 7, 3, 1, 1, 3, 7, 3, 6,
+ 2, 2, 2, 2, 2, 12, 3, 34, 1, 2, 4, 2, 15, 10, 2, 4, 5, 5, 5, 5, 4, 25, 8, 1, 1, 1, 1, 2, 5, 2, 1, 6, 4, 3, 3, 3, 3, 3, 26, 2, 5,
+ 2, 1, 4, 3, 3, 27, 2, 4, 4, 3, 1, 1, 12, 3, 1, 1, 1, 2, 4, 2, 2, 3, 10, 7, 4, 3, 2, 2, 1, 3, 2, 23, 2, 1, 2, 2, 18, 5, 13, 6, 3,
+ 6, 1, 1, 2, 2, 3, 1, 2, 1, 1, 7, 3, 3, 2, 3, 3, 3, 1, 194,4, 2, 18, 3, 7, 5, 5, 5, 5, 1, 1, 1, 1, 11, 1, 1, 2, 4, 1, 1, 3, 3,
+ 9, 5, 2, 2, 1, 1, 17, 3, 5, 1, 1, 4, 3, 3, 1, 1, 1, 1, 12, 4, 8, 2, 2, 1, 3, 10, 2, 2, 6, 3, 17, 2, 8, 3, 1, 3, 32, 4, 12, 8, 8,
+ 8, 8, 8, 8, 3, 4, 2, 2, 1, 7, 1, 1, 2, 15, 2, 2, 1, 2, 3, 1, 1, 1, 1, 13, 3, 3, 2, 2, 2, 236,2, 2, 2, 2, 2, 4, 2, 173,171,8, 8,
+ 2, 4, 3, 2, 4, 3, 7, 2, 105,9, 2, 2, 2, 2, 1, 1, 19, 10, 3, 29, 18, 16, 6, 5, 1, 1, 6, 4, 9, 9, 5, 26, 1, 1, 1, 7, 5, 4, 3, 1, 2,
+ 2, 11, 8, 7, 5, 3, 1, 46, 20, 9, 7, 4, 2, 2, 2, 2, 2, 3, 6, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 24, 14, 11, 9, 1, 4, 4, 4, 3, 2, 2, 1,
+ 6, 6, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 137,4, 11, 6, 20, 15, 3, 5, 2, 2, 6, 3, 6, 1, 9, 4, 1, 1, 1, 1, 1, 13, 3, 1, 1, 12, 1,
+ 3, 1, 1, 7, 2, 1, 1, 1, 25, 3, 14, 14, 3, 2, 2, 4, 2, 1, 1, 5, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 4, 3, 1, 37, 1, 1, 2, 2, 1, 1,
+ 2, 3, 3, 2, 13, 7, 1, 6, 4, 3, 2, 8, 3, 1, 1, 1, 3, 1, 1, 1, 12, 1, 1, 1, 1, 3, 3, 3, 42, 8, 4, 13, 3, 3, 5, 2, 4, 5, 3, 8, 5,
+ 4, 3, 3, 1, 1, 1, 2, 5, 1, 1, 31, 1, 1, 4, 3, 5, 1, 1, 1, 9, 2, 1, 10, 2, 1, 5, 2, 4, 8, 7, 6, 3, 3, 2, 24, 2, 2, 3, 11, 5, 3,
+ 2, 1, 6, 20, 3, 2, 2, 4, 3, 5, 2, 1, 3, 73, 4, 8, 2, 3, 3, 3, 3, 2, 2, 17, 5, 4, 7, 19, 1, 12, 12, 3, 2, 2, 7, 1, 5, 5, 5, 5, 5,
+ 5, 3, 2, 2, 2, 2, 2, 3, 4, 4, 2, 3, 5, 4, 3, 1, 6, 2, 10, 2, 16, 3, 3, 3, 1, 1, 4, 4, 2, 1, 4, 3, 79, 4, 51, 4, 2, 5, 4, 38, 6,
+ 6, 11, 10, 19, 2, 2, 3, 2, 2, 2, 2, 3, 3, 3, 3, 1, 6, 2, 2, 4, 3, 3, 4, 4, 4, 4, 6, 1, 8, 3, 3, 4, 2, 1, 31, 2, 1, 5, 5, 2, 4,
+ 4, 3, 1, 1, 4, 3, 8, 4, 4, 1, 1, 1, 50, 7, 1, 11, 1, 1, 4, 4, 4, 13, 3, 4, 5, 4, 4, 3, 9, 2, 2, 2, 9, 2, 1, 35, 2, 30, 8, 16, 11,
+ 4, 4, 5, 3, 1, 1, 2, 17, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 5, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 6, 1, 1,
+ 1, 3, 2, 1, 2, 2, 1, 2, 5, 3, 5, 3, 1, 1, 1, 1, 1, 1, 9, 2, 2, 1, 3, 2, 2, 6, 2, 17, 1, 6, 9, 3, 2, 1, 16, 3, 6, 2, 2, 2, 22,
+ 5, 2, 2, 2, 2, 2, 3, 1, 1, 2, 1, 1, 2, 11, 2, 1, 1, 59, 11, 3, 4, 24, 2, 6, 4, 6, 4, 4, 3, 1, 1, 1, 1, 13, 2, 2, 6, 50, 35, 4, 22,
+ 8, 9, 7, 5, 2, 7, 3, 3, 2, 33, 1, 1, 14, 4, 9, 1, 16, 6, 3, 2, 2, 2, 2, 2, 2, 13, 8, 3, 5, 2, 6, 30, 12, 5, 3, 3, 2, 2, 2, 3, 3,
+ 3, 4, 3, 170,54, 18, 4, 6, 22, 2, 2, 8, 6, 3, 3, 7, 1, 1, 1, 1, 2, 3, 31, 2, 14, 14, 4, 6, 3, 8, 4, 2, 4, 3, 10, 6, 1, 5, 5, 2, 10,
+ 1, 2, 2, 2, 21, 1, 1, 5, 5, 2, 7, 3, 3, 14, 12, 2, 4, 3, 2, 121,2, 11, 4, 7, 5, 4, 4, 1, 1, 1, 13, 9, 3, 1, 20, 9, 5, 2, 9, 38, 5,
+ 5, 4, 10, 3, 1, 2, 2, 2, 1, 6, 6, 7, 2, 1, 1, 2, 2, 2, 2, 5, 3, 12, 9, 3, 3, 3, 9, 1, 1, 2, 2, 2, 2, 159,5, 2, 13, 12, 2, 3, 2,
+ 4, 3, 1, 7, 3, 3, 3, 3, 15, 2, 2, 1, 1, 1, 3, 3, 2, 4, 4, 2, 25, 13, 1, 1, 4, 2, 1, 15, 9, 5, 2, 22, 9, 4, 4, 4, 3, 4, 9, 8, 4,
+ 1, 15, 4, 7, 1, 69, 15, 1, 1, 1, 4, 3, 6, 2, 8, 4, 11, 2, 4, 5, 4, 12, 6, 4, 4, 14, 5, 4, 3, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 2,
+ 1, 1, 1, 2, 1, 1, 1, 35, 1, 1, 3, 1, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 2, 2, 1, 1, 3, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 9, 4, 4, 3, 2, 2, 1, 1, 1, 80, 13, 13, 2, 2, 4, 3, 1, 1, 1, 1, 16, 1, 1, 1, 1, 5, 4, 4, 2, 3, 3, 6, 4, 4, 11, 10, 1, 14, 4, 3,
+ 2, 1, 1, 3, 3, 3, 5, 66, 7, 2, 17, 3, 9, 9, 3, 7, 4, 4, 3, 3, 6, 1, 14, 12, 2, 123,6, 3, 3, 1, 1, 5, 2, 23, 2, 2, 2, 2, 6, 2, 2,
+ 6, 4, 1, 2, 5, 58, 5, 1, 1, 2, 1, 12, 7, 3, 3, 2, 1, 1, 1, 5, 13, 3, 4, 3, 5, 4, 4, 2, 25, 4, 2, 2, 3, 2, 3, 2, 2, 2, 86, 7, 28,
+ 2, 2, 1, 2, 2, 3, 3, 1, 1, 1, 6, 3, 2, 2, 31, 20, 19, 18, 4, 1, 1, 2, 2, 2, 1, 9, 4, 28, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 3,
+ 1, 6, 5, 1, 1, 1, 1, 5, 4, 4, 4, 2, 1, 1, 1, 38, 27, 18, 8, 3, 6, 2, 3, 3, 2, 2, 3, 2, 2, 1, 35, 2, 5, 3, 5, 1, 1, 2, 2, 2, 11,
+ 3, 7, 5, 4, 1, 2, 34, 6, 2, 2, 2, 12, 3, 3, 3, 3, 3, 3, 3, 8, 3, 3, 30, 2, 5, 2, 2, 1, 15, 9, 9, 9, 8, 5, 3, 2, 1, 1, 1, 14, 10,
+ 3, 43, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 1, 1, 1, 7, 3, 1, 2, 2, 3, 7, 4, 2, 1, 2, 1, 11, 2, 5, 8, 5, 2, 2, 2, 1, 23, 3,
+ 2, 4, 3, 2, 40, 3, 2, 2, 2, 2, 4, 2, 4, 3, 3, 3, 2, 2, 3, 6, 4, 4, 1, 5, 2, 1, 1, 20, 8, 2, 2, 162,38, 11, 11, 11, 11, 11, 6, 3, 5,
+ 5, 2, 6, 5, 3, 2, 2, 2, 54, 3, 22, 22, 2, 13, 7, 4, 12, 5, 1, 1, 1, 1, 1, 1, 7, 5, 6, 4, 41, 3, 5, 5, 1, 18, 2, 7, 2, 5, 6, 17, 3,
+ 5, 5, 4, 3, 3, 6, 3, 8, 4, 2, 3, 91, 2, 2, 1, 16, 12, 7, 37, 4, 21, 7, 5, 5, 5, 5, 4, 1, 1, 3, 16, 4, 2, 2, 5, 3, 6, 2, 4, 7, 7,
+ 7, 3, 1, 2, 2, 2, 13, 2, 9, 9, 9, 9, 2, 2, 3, 3, 2, 1, 1, 1, 15, 1, 3, 2, 3, 28, 1, 22, 13, 4, 5, 3, 2, 2, 6, 5, 2, 2, 2, 3, 15,
+ 8, 2, 4, 37, 9, 8, 1, 1, 1, 6, 11, 10, 5, 5, 3, 3, 2, 1, 5, 5, 5, 2, 2, 2, 2, 2, 37, 3, 3, 7, 6, 3, 3, 6, 2, 2, 6, 1, 1, 1, 9,
+ 8, 8, 8, 1, 1, 31, 8, 3, 3, 3, 3, 2, 8, 6, 1, 4, 2, 163,22, 19, 19, 8, 49, 7, 7, 7, 7, 7, 26, 5, 9, 5, 4, 2, 2, 1, 10, 6, 4, 13, 10,
+ 9, 9, 9, 6, 3, 1, 31, 14, 11, 4, 4, 7, 7, 7, 12, 7, 4, 21, 9, 4, 10, 3, 1, 1, 1, 39, 30, 5, 23, 12, 11, 9, 4, 4, 9, 3, 3, 2, 10, 5, 2,
+ 2, 242,57, 10, 9, 2, 4, 4, 9, 6, 3, 3, 5, 15, 6, 3, 3, 2, 3, 6, 5, 2, 2, 2, 4, 2, 34, 4, 9, 8, 8, 8, 2, 17, 9, 6, 4, 8, 7, 5, 10,
+ 8, 1, 53, 11, 9, 9, 21, 7, 7, 7, 7, 3, 2, 5, 3, 18, 8, 5, 5, 5, 1, 1, 26, 3, 18, 8, 7, 4, 3, 29, 21, 7, 7, 7, 4, 4, 2, 12, 11, 6, 4,
+ 4, 4, 2, 1, 1, 2, 1, 27, 5, 5, 3, 2, 2, 2, 1, 20, 8, 2, 4, 4, 11, 7, 3, 5, 3, 3, 3, 3, 2, 7, 6, 4, 1, 1, 1, 20, 2, 2, 2, 1, 1,
+ 2, 1, 132,8, 2, 3, 3, 61, 6, 6, 9, 6, 8, 8, 8, 7, 7, 13, 11, 7, 7, 7, 5, 15, 11, 1, 1, 1, 1, 3, 5, 4, 4, 4, 4, 2, 9, 3, 4, 2, 2,
+ 10, 3, 2, 4, 4, 3, 2, 10, 8, 4, 17, 2, 2, 2, 7, 7, 3, 3, 3, 3, 3, 3, 14, 9, 6, 5, 4, 3, 86, 3, 22, 3, 6, 9, 9, 3, 3, 2, 2, 2, 2,
+ 20, 12, 9, 9, 8, 17, 3, 3, 4, 2, 2, 4, 3, 1, 1, 8, 3, 2, 15, 12, 11, 4, 19, 4, 3, 2, 2, 2, 120,3, 29, 4, 4, 4, 4, 4, 8, 7, 7, 7, 2,
+ 8, 3, 3, 8, 8, 41, 15, 3, 3, 11, 8, 5, 3, 3, 8, 7, 7, 4, 3, 7, 7, 3, 3, 5, 5, 9, 3, 4, 18, 14, 12, 5, 3, 3, 10, 2, 2, 2, 2, 7, 7,
+ 7, 3, 10, 3, 3, 7, 4, 48, 8, 4, 3, 2, 3, 3, 4, 3, 3, 3, 3, 2, 29, 7, 7, 6, 6, 6, 6, 2, 19, 9, 9, 8, 6, 5, 5, 3, 9, 7, 2, 2, 12,
+ 2, 3, 3, 2, 2, 2, 1, 24, 4, 4, 4, 4, 4, 2, 2, 2, 18, 7, 7, 7, 6, 6, 5, 3, 12, 4, 3, 2, 2, 10, 3, 2, 4, 1, 84, 7, 2, 2, 45, 2, 17,
17, 3, 8, 3, 6, 4, 9, 12, 4, 3, 2, 15, 2, 2, 2, 2, 3, 5, 3, 11, 1, 1, 1, 1, 1, 4, 3, 12, 12, 8, 6, 4, 4, 4, 4, 3, 14, 9, 6, 4, 237,
- 3, 1, 1, 1, 1, 12, 8, 5, 5, 3, 3, 3, 4, 4, 4, 4, 45, 8, 6, 6, 6, 2, 2, 8, 3, 5, 2, 6, 6, 6, 6, 4, 20, 19, 15, 14, 7, 3, 7, 6, 3,
- 23, 10, 9, 9, 5, 5, 3, 3, 8, 8, 4, 3, 27, 17, 2, 9, 2, 4, 4, 4, 6, 6, 4, 13, 2, 2, 2, 11, 2, 2, 9, 5, 3, 3, 76, 26, 3, 23, 4, 15, 10,
- 8, 3, 3, 2, 1, 20, 17, 17, 4, 4, 12, 9, 7, 7, 5, 5, 3, 26, 6, 6, 6, 4, 4, 4, 16, 15, 14, 9, 4, 36, 3, 19, 3, 13, 8, 14, 7, 4, 205,24, 5,
- 5, 2, 2, 2, 8, 8, 6, 6, 6, 6, 47, 16, 16, 6, 6, 7, 7, 7, 4, 4, 3, 3, 14, 8, 2, 8, 4, 3, 31, 2, 28, 6, 6, 4, 4, 16, 6, 10, 1, 1, 3,
- 2, 1, 90, 50, 3, 3, 2, 2, 15, 3, 3, 3, 3, 12, 5, 7, 7, 7, 7, 3, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 4, 2, 7, 5, 4, 1, 1, 3, 3, 10, 6,
- 13, 9, 9, 9, 3, 17, 11, 6, 5, 5, 5, 5, 4, 3, 3, 2, 3, 1, 1, 87, 4, 3, 3, 3, 3, 62, 19, 6, 5, 5, 8, 30, 6, 5, 13, 5, 4, 4, 4, 4, 2,
- 9, 4, 3, 9, 12, 6, 6, 5, 5, 7, 2, 2, 2, 2, 5, 3, 4, 2, 2, 184,2, 3, 3, 37, 7, 4, 16, 10, 4, 3, 5, 51, 5, 2, 3, 2, 7, 3, 2, 2, 5,
- 4, 1, 7, 3, 8, 4, 18, 2, 3, 31, 26, 23, 10, 9, 6, 1, 4, 2, 16, 8, 7, 7, 7, 7, 5, 3, 3, 2, 7, 1, 1, 2, 111,6, 2, 1, 19, 5, 4, 2, 1,
- 5, 3, 3, 3, 3, 3, 3, 8, 8, 4, 3, 2, 2, 37, 23, 15, 2, 2, 2, 5, 3, 3, 1, 1, 1, 1, 5, 3, 5, 4, 4, 3, 10, 3, 3, 3, 1, 1, 4, 4, 3,
- 22, 3, 7, 3, 2, 3, 24, 9, 5, 3, 6, 2, 5, 2, 54, 8, 14, 3, 3, 10, 3, 3, 3, 11, 5, 3, 1, 17, 1, 1, 4, 2, 4, 3, 29, 4, 2, 12, 5, 5, 3,
- 2, 1, 17, 5, 3, 2, 11, 8, 2, 2, 2, 9, 4, 3, 2, 79, 3, 3, 2, 2, 36, 3, 14, 7, 8, 6, 2, 2, 7, 3, 3, 3, 3, 7, 4, 3, 2, 4, 1, 1, 3,
- 2, 25, 4, 3, 1, 1, 1, 17, 10, 5, 30, 4, 2, 1, 1, 1, 1, 15, 14, 12, 7, 4, 4, 3, 2, 105,11, 4, 49, 3, 11, 11, 5, 3, 2, 3, 10, 8, 9, 9, 9,
- 9, 9, 5, 24, 4, 3, 4, 2, 5, 10, 4, 4, 7, 28, 9, 1, 7, 3, 7, 3, 3, 35, 2, 8, 13, 4, 2, 2, 2, 2, 4, 3, 3, 2, 2, 2, 4, 1, 6, 2, 22,
- 3, 10, 7, 5, 7, 2, 3, 3, 6, 2, 2, 2, 3, 139,3, 7, 3, 4, 4, 2, 2, 11, 3, 2, 5, 2, 26, 5, 4, 3, 15, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 18, 7, 2, 6, 3, 4, 48, 17, 1, 1, 6, 4, 11, 5, 5, 2, 1, 2, 2, 7, 3, 3, 4, 4, 2, 79, 4, 2, 9, 2, 1, 2, 1, 8, 4, 4,
- 3, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 34, 6, 4, 4, 8, 2, 4, 4, 9, 7, 3, 1, 1, 1, 1, 6, 5, 3, 3, 2, 1, 1, 1, 15, 6, 5, 8, 2, 2, 26,
- 7, 2, 3, 2, 2, 1, 3, 2, 3, 6, 100,14, 2, 11, 11, 3, 3, 2, 11, 11, 11, 73, 3, 47, 42, 6, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, 1, 2, 2, 2, 2,
- 3, 2, 2, 2, 4, 1, 1, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 4, 2, 2, 2, 1, 2, 2, 2, 2, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 4, 9, 7, 3, 22, 6, 3, 12, 8, 79, 4, 3, 3, 6, 3, 2, 2, 5, 2, 2, 11, 8, 40, 3, 10, 1, 1, 3, 3,
- 2, 4, 3, 3, 3, 2, 3, 14, 2, 4, 4, 4, 16, 2, 2, 2, 1, 1, 1, 2, 2, 3, 2, 3, 1, 2, 2, 2, 64, 13, 1, 4, 7, 4, 4, 3, 37, 4, 9, 4, 4,
- 4, 3, 18, 3, 2, 4, 12, 4, 5, 2, 2, 73, 8, 5, 4, 13, 11, 10, 5, 9, 1, 4, 2, 11, 4, 3, 2, 5, 2, 6, 3, 2, 3, 2, 3, 4, 1, 12, 5, 1, 16,
- 2, 1, 1, 1, 4, 17, 3, 2, 1, 6, 2, 14, 2, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 2, 12, 1, 4, 28, 1, 1, 21, 2, 5, 4, 2, 3, 11, 3, 4, 13, 2,
- 11, 5, 3, 1, 1, 12, 22, 16, 2, 2, 3, 14, 4, 2, 5, 47, 6, 3, 2, 5, 3, 3, 1, 1, 10, 4, 3, 3, 2, 3, 4, 15, 1, 1, 7, 14, 8, 15, 1, 6, 3,
- 3, 5, 1, 2, 2, 2, 2, 2, 2, 15, 3, 2, 9, 3, 20, 4, 2, 2, 2, 9, 4, 2, 2, 2, 10, 3, 24, 4, 3, 17, 2, 1, 2, 2, 232,53, 2, 2, 10, 3, 8,
- 5, 23, 15, 3, 5, 7, 4, 4, 25, 8, 6, 4, 4, 4, 14, 10, 33, 7, 3, 6, 2, 10, 3, 10, 3, 2, 2, 20, 10, 8, 4, 3, 2, 5, 3, 2, 3, 1, 1, 1, 1,
- 5, 8, 3, 2, 2, 2, 2, 34, 7, 6, 6, 4, 2, 4, 8, 9, 3, 10, 3, 4, 8, 2, 2, 4, 9, 4, 3, 2, 3, 1, 1, 1, 213,8, 4, 18, 2, 1, 14, 9, 7,
- 2, 4, 5, 4, 2, 3, 24, 5, 14, 13, 9, 9, 6, 8, 3, 2, 2, 2, 12, 8, 75, 5, 2, 5, 3, 3, 2, 1, 1, 12, 3, 9, 1, 1, 1, 30, 5, 3, 5, 10, 4,
- 8, 3, 42, 5, 5, 2, 5, 3, 3, 20, 16, 4, 10, 6, 7, 5, 2, 3, 2, 2, 1, 1, 2, 1, 5, 1, 1, 11, 4, 1, 5, 22, 8, 1, 5, 7, 6, 5, 5, 2, 10,
- 3, 5, 4, 3, 3, 19, 4, 2, 6, 2, 2, 2, 28, 3, 4, 4, 3, 3, 2, 14, 9, 4, 2, 3, 9, 69, 3, 4, 48, 7, 4, 3, 2, 2, 2, 1, 1, 6, 3, 3, 1,
- 4, 2, 2, 3, 4, 2, 6, 3, 12, 3, 19, 5, 5, 3, 2, 4, 6, 1, 2, 40, 2, 10, 1, 3, 2, 2, 2, 5, 10, 2, 2, 1, 4, 2, 3, 3, 3, 144,13, 11, 3,
- 6, 4, 3, 7, 3, 10, 7, 2, 14, 2, 1, 1, 9, 7, 4, 35, 11, 8, 5, 2, 4, 8, 4, 2, 7, 9, 6, 6, 2, 3, 1, 3, 25, 6, 5, 7, 1, 1, 6, 3, 2,
- 13, 6, 6, 3, 4, 8, 3, 4, 50, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 14, 14, 1, 1, 1, 1, 3, 8, 3, 3, 3, 3, 3, 3, 2, 1, 1, 18, 15, 14, 13, 7,
- 5, 4, 3, 25, 5, 2, 2, 1, 1, 1, 1, 5, 1, 1, 2, 2, 3, 1, 23, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 8, 3, 2, 4, 3, 3, 3, 2, 2,
- 2, 4, 1, 1, 1, 1, 1, 1, 2, 14, 5, 5, 4, 1, 1, 1, 1, 1, 1, 46, 9, 2, 2, 7, 4, 6, 14, 3, 4, 5, 2, 36, 3, 1, 1, 9, 2, 2, 5, 4, 1,
- 1, 1, 4, 4, 4, 3, 9, 2, 2, 1, 2, 22, 3, 13, 2, 2, 6, 4, 19, 2, 4, 1, 1, 3, 13, 13, 3, 3, 2, 2, 8, 3, 3, 3, 3, 3, 3, 3, 2, 4, 2,
- 1, 1, 99, 1, 6, 4, 4, 3, 2, 2, 2, 3, 30, 7, 13, 5, 4, 8, 5, 5, 5, 5, 4, 3, 9, 3, 2, 2, 24, 13, 10, 10, 8, 7, 6, 6, 6, 71, 4, 19, 3,
- 9, 8, 4, 3, 1, 1, 2, 6, 5, 3, 2, 10, 2, 2, 7, 5, 2, 2, 2, 2, 2, 1, 9, 1, 3, 2, 3, 3, 43, 4, 4, 3, 1, 1, 4, 2, 4, 1, 13, 11, 2,
- 7, 7, 4, 3, 8, 2, 5, 29, 2, 3, 3, 5, 2, 3, 6, 2, 1, 2, 1, 1, 2, 170,16, 3, 1, 10, 4, 11, 3, 3, 3, 5, 9, 3, 22, 9, 3, 5, 5, 2, 19,
- 11, 2, 3, 1, 1, 4, 2, 2, 1, 1, 30, 7, 4, 11, 8, 10, 3, 3, 3, 4, 9, 3, 19, 6, 6, 7, 3, 11, 2, 5, 3, 1, 1, 3, 64, 5, 2, 17, 3, 7, 3,
- 3, 3, 6, 25, 3, 18, 5, 4, 3, 12, 6, 5, 1, 77, 3, 3, 5, 5, 2, 7, 5, 2, 2, 2, 9, 4, 6, 2, 2, 6, 7, 3, 2, 7, 2, 2, 2, 15, 1, 5, 2,
- 2, 3, 2, 3, 1, 9, 4, 12, 1, 1, 3, 2, 2, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 9, 1, 5, 1, 3, 1, 6, 1, 4, 4, 4, 1, 1, 3, 2,
- 1, 1, 1, 169,6, 5, 1, 1, 1, 1, 1, 25, 19, 18, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 3, 2, 2, 2, 1, 40, 2, 1, 36, 4, 6, 9, 17, 1, 1, 1, 1,
- 1, 1, 1, 5, 5, 1, 1, 1, 1, 1, 2, 7, 2, 2, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 7, 3, 3, 3, 7, 4, 2, 1, 14, 5, 5, 3, 3, 16, 2, 2,
- 3, 3, 10, 3, 6, 2, 2, 2, 15, 3, 2, 4, 3, 3, 5, 5, 2, 19, 16, 1, 1, 3, 3, 3, 3, 1, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
- 2, 1, 60, 25, 3, 3, 2, 3, 2, 8, 4, 2, 11, 7, 2, 1, 1, 1, 22, 7, 7, 5, 4, 4, 4, 4, 4, 3, 2, 1, 1, 1, 1, 8, 5, 2, 2, 2, 1, 1, 1,
- 1, 2, 1, 1, 2, 4, 3, 2, 1, 1, 1, 1, 4, 2, 83, 45, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 2, 4, 2, 7, 2, 1, 2, 1, 5, 1, 1, 1, 13,
- 4, 1, 1, 1, 1, 2, 2, 2, 5, 2, 1, 1, 1, 1, 11, 2, 1, 2, 1, 1, 1, 1, 1, 1, 3, 2, 3, 4, 1, 1, 1, 3, 1, 1, 2, 4, 1, 1, 12, 2, 2,
- 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 3, 2, 12, 3, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 25, 3, 5, 1, 4, 1, 1, 4, 3, 3, 1, 30, 2, 6, 2, 4, 3, 1, 4, 3, 2, 1, 43, 1, 1, 4, 22, 2, 3, 13,
- 2, 3, 11, 2, 2, 1, 15, 9, 2, 4, 3, 3, 2, 2, 50, 3, 2, 2, 2, 11, 5, 2, 3, 2, 7, 4, 2, 6, 2, 5, 2, 3, 5, 3, 2, 2, 2, 1, 1, 38, 2,
- 21, 5, 2, 4, 1, 6, 2, 65, 2, 2, 7, 6, 5, 2, 2, 2, 1, 1, 1, 1, 10, 3, 2, 2, 2, 2, 5, 17, 9, 2, 2, 25, 4, 4, 10, 10, 9, 3, 3, 140,8,
- 7, 5, 2, 26, 3, 3, 3, 3, 5, 1, 2, 1, 1, 3, 2, 3, 2, 1, 12, 4, 3, 36, 17, 11, 1, 2, 7, 2, 4, 4, 10, 8, 5, 4, 5, 2, 5, 1, 2, 3, 1,
- 2, 3, 6, 5, 2, 1, 1, 3, 117,24, 6, 5, 1, 1, 1, 4, 2, 8, 2, 11, 2, 2, 6, 5, 4, 8, 2, 14, 5, 4, 2, 12, 3, 4, 11, 3, 3, 11, 14, 8, 1,
- 1, 3, 2, 4, 3, 6, 4, 4, 2, 7, 2, 2, 25, 2, 16, 1, 1, 1, 1, 1, 1, 1, 2, 1, 18, 4, 3, 5, 15, 3, 3, 4, 18, 11, 3, 7, 63, 40, 39, 3, 4,
- 2, 1, 1, 1, 5, 5, 2, 8, 1, 3, 3, 11, 3, 1, 3, 3, 39, 3, 10, 3, 2, 1, 1, 8, 3, 2, 3, 11, 2, 7, 12, 3, 3, 2, 17, 2, 2, 4, 3, 2, 4,
- 2, 2, 5, 3, 7, 5, 17, 5, 3, 3, 3, 1, 1, 5, 4, 4, 2, 244,9, 2, 2, 2, 11, 1, 2, 3, 9, 1, 1, 10, 4, 1, 1, 1, 1, 11, 4, 2, 1, 8, 4,
- 3, 17, 2, 2, 4, 2, 2, 2, 49, 2, 2, 2, 1, 8, 1, 2, 2, 2, 4, 4, 3, 6, 3, 3, 2, 8, 2, 2, 14, 3, 4, 7, 7, 5, 5, 2, 13, 4, 2, 1, 1,
- 7, 2, 24, 4, 6, 7, 4, 7, 20, 3, 7, 2, 2, 2, 3, 3, 6, 2, 1, 6, 5, 3, 8, 6, 4, 2, 5, 2, 58, 4, 4, 4, 3, 25, 5, 1, 1, 5, 4, 4, 3,
- 2, 2, 2, 2, 2, 1, 3, 4, 5, 2, 1, 47, 11, 3, 1, 2, 1, 1, 6, 2, 5, 1, 1, 6, 2, 1, 1, 2, 5, 1, 69, 9, 6, 3, 1, 1, 3, 4, 2, 1, 19,
- 3, 2, 2, 14, 1, 4, 8, 4, 4, 3, 7, 3, 2, 5, 4, 2, 3, 3, 3, 3, 4, 2, 4, 6, 3, 2, 2, 1, 2, 2, 135,8, 2, 30, 6, 5, 1, 3, 2, 82, 53,
- 6, 5, 4, 2, 5, 3, 6, 2, 6, 3, 6, 1, 1, 1, 3, 2, 37, 2, 1, 3, 6, 3, 3, 3, 7, 3, 2, 3, 3, 41, 7, 3, 1, 1, 3, 3, 3, 3, 3, 2, 6,
- 3, 3, 5, 3, 3, 3, 3, 11, 5, 4, 22, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 4, 4, 4, 3, 10, 3, 1, 4, 4, 4, 2, 2, 1, 1, 1, 1, 14, 1, 1, 1,
- 1, 1, 1, 2, 7, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 1, 2, 2, 2, 1, 10, 6, 4, 3, 2, 1, 1, 1, 173,10, 2, 2, 1, 4, 4, 3, 3, 39, 3, 2, 4,
- 2, 8, 5, 2, 2, 2, 6, 3, 2, 2, 3, 3, 3, 3, 2, 4, 16, 6, 4, 4, 1, 24, 5, 4, 5, 5, 4, 4, 3, 31, 4, 2, 4, 7, 3, 2, 3, 6, 25, 22, 3,
- 2, 1, 2, 4, 3, 4, 2, 2, 158,27, 4, 2, 1, 1, 1, 9, 1, 1, 1, 2, 1, 1, 7, 5, 24, 1, 5, 4, 8, 4, 4, 2, 2, 4, 1, 1, 1, 1, 11, 4, 2,
- 2, 2, 2, 7, 5, 2, 20, 3, 3, 6, 3, 29, 6, 4, 2, 7, 4, 6, 5, 5, 21, 3, 3, 4, 10, 4, 4, 4, 2, 254,48, 5, 3, 3, 5, 7, 5, 5, 10, 2, 2,
- 2, 2, 2, 2, 2, 1, 3, 2, 4, 36, 2, 6, 2, 3, 6, 6, 5, 4, 10, 6, 4, 4, 4, 6, 6, 6, 11, 6, 2, 1, 2, 2, 30, 8, 5, 2, 6, 5, 4, 4, 4,
- 12, 6, 2, 24, 13, 10, 4, 4, 1, 1, 1, 1, 4, 2, 5, 1, 64, 2, 5, 1, 1, 3, 2, 2, 2, 12, 3, 3, 3, 3, 3, 8, 6, 6, 2, 2, 2, 2, 7, 5, 1,
- 1, 4, 4, 4, 2, 1, 1, 14, 11, 10, 5, 5, 10, 3, 4, 22, 8, 6, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 4, 3, 3, 3, 45, 2, 8, 3, 2, 2, 2, 13,
- 10, 8, 8, 4, 3, 1, 1, 1, 1, 3, 2, 10, 10, 6, 4, 82, 2, 8, 3, 2, 2, 7, 3, 3, 26, 3, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 9, 2, 2, 3, 5,
- 2, 3, 2, 2, 187,19, 2, 5, 2, 5, 5, 3, 3, 3, 51, 11, 2, 9, 26, 5, 5, 9, 4, 3, 11, 6, 3, 7, 3, 3, 3, 2, 1, 40, 4, 4, 3, 1, 1, 1, 1,
+ 3, 1, 1, 1, 1, 12, 8, 5, 5, 3, 3, 3, 4, 4, 4, 4, 45, 8, 6, 6, 6, 2, 2, 8, 3, 5, 2, 6, 6, 6, 6, 4, 20, 19, 15, 14, 7, 3, 7, 6, 3,
+ 23, 10, 9, 9, 5, 5, 3, 3, 8, 8, 4, 3, 27, 17, 2, 9, 2, 4, 4, 4, 6, 6, 4, 13, 2, 2, 2, 11, 2, 2, 9, 5, 3, 3, 76, 26, 3, 23, 4, 15, 10,
+ 8, 3, 3, 2, 1, 20, 17, 17, 4, 4, 12, 9, 7, 7, 5, 5, 3, 26, 6, 6, 6, 4, 4, 4, 16, 15, 14, 9, 4, 36, 3, 19, 3, 13, 8, 14, 7, 4, 205,24, 5,
+ 5, 2, 2, 2, 8, 8, 6, 6, 6, 6, 47, 16, 16, 6, 6, 7, 7, 7, 4, 4, 3, 3, 14, 8, 2, 8, 4, 3, 31, 2, 28, 6, 6, 4, 4, 16, 6, 10, 1, 1, 3,
+ 2, 1, 90, 50, 3, 3, 2, 2, 15, 3, 3, 3, 3, 12, 5, 7, 7, 7, 7, 3, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 4, 2, 7, 5, 4, 1, 1, 3, 3, 10, 6,
+ 13, 9, 9, 9, 3, 17, 11, 6, 5, 5, 5, 5, 4, 3, 3, 2, 3, 1, 1, 87, 4, 3, 3, 3, 3, 62, 19, 6, 5, 5, 8, 30, 6, 5, 13, 5, 4, 4, 4, 4, 2,
+ 9, 4, 3, 9, 12, 6, 6, 5, 5, 7, 2, 2, 2, 2, 5, 3, 4, 2, 2, 184,2, 3, 3, 37, 7, 4, 16, 10, 4, 3, 5, 51, 5, 2, 3, 2, 7, 3, 2, 2, 5,
+ 4, 1, 7, 3, 8, 4, 18, 2, 3, 31, 26, 23, 10, 9, 6, 1, 4, 2, 16, 8, 7, 7, 7, 7, 5, 3, 3, 2, 7, 1, 1, 2, 111,6, 2, 1, 19, 5, 4, 2, 1,
+ 5, 3, 3, 3, 3, 3, 3, 8, 8, 4, 3, 2, 2, 37, 23, 15, 2, 2, 2, 5, 3, 3, 1, 1, 1, 1, 5, 3, 5, 4, 4, 3, 10, 3, 3, 3, 1, 1, 4, 4, 3,
+ 22, 3, 7, 3, 2, 3, 24, 9, 5, 3, 6, 2, 5, 2, 54, 8, 14, 3, 3, 10, 3, 3, 3, 11, 5, 3, 1, 17, 1, 1, 4, 2, 4, 3, 29, 4, 2, 12, 5, 5, 3,
+ 2, 1, 17, 5, 3, 2, 11, 8, 2, 2, 2, 9, 4, 3, 2, 79, 3, 3, 2, 2, 36, 3, 14, 7, 8, 6, 2, 2, 7, 3, 3, 3, 3, 7, 4, 3, 2, 4, 1, 1, 3,
+ 2, 25, 4, 3, 1, 1, 1, 17, 10, 5, 30, 4, 2, 1, 1, 1, 1, 15, 14, 12, 7, 4, 4, 3, 2, 105,11, 4, 49, 3, 11, 11, 5, 3, 2, 3, 10, 8, 9, 9, 9,
+ 9, 9, 5, 24, 4, 3, 4, 2, 5, 10, 4, 4, 7, 28, 9, 1, 7, 3, 7, 3, 3, 35, 2, 8, 13, 4, 2, 2, 2, 2, 4, 3, 3, 2, 2, 2, 4, 1, 6, 2, 22,
+ 3, 10, 7, 5, 7, 2, 3, 3, 6, 2, 2, 2, 3, 139,3, 7, 3, 4, 4, 2, 2, 11, 3, 2, 5, 2, 26, 5, 4, 3, 15, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2,
+ 4, 2, 2, 2, 2, 18, 7, 2, 6, 3, 4, 48, 17, 1, 1, 6, 4, 11, 5, 5, 2, 1, 2, 2, 7, 3, 3, 4, 4, 2, 79, 4, 2, 9, 2, 1, 2, 1, 8, 4, 4,
+ 3, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 34, 6, 4, 4, 8, 2, 4, 4, 9, 7, 3, 1, 1, 1, 1, 6, 5, 3, 3, 2, 1, 1, 1, 15, 6, 5, 8, 2, 2, 26,
+ 7, 2, 3, 2, 2, 1, 3, 2, 3, 6, 100,14, 2, 11, 11, 3, 3, 2, 11, 11, 11, 73, 3, 47, 42, 6, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, 1, 2, 2, 2, 2,
+ 3, 2, 2, 2, 4, 1, 1, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 4, 2, 2, 2, 1, 2, 2, 2, 2, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 4, 9, 7, 3, 22, 6, 3, 12, 8, 79, 4, 3, 3, 6, 3, 2, 2, 5, 2, 2, 11, 8, 40, 3, 10, 1, 1, 3, 3,
+ 2, 4, 3, 3, 3, 2, 3, 14, 2, 4, 4, 4, 16, 2, 2, 2, 1, 1, 1, 2, 2, 3, 2, 3, 1, 2, 2, 2, 64, 13, 1, 4, 7, 4, 4, 3, 37, 4, 9, 4, 4,
+ 4, 3, 18, 3, 2, 4, 12, 4, 5, 2, 2, 73, 8, 5, 4, 13, 11, 10, 5, 9, 1, 4, 2, 11, 4, 3, 2, 5, 2, 6, 3, 2, 3, 2, 3, 4, 1, 12, 5, 1, 16,
+ 2, 1, 1, 1, 4, 17, 3, 2, 1, 6, 2, 14, 2, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 2, 12, 1, 4, 28, 1, 1, 21, 2, 5, 4, 2, 3, 11, 3, 4, 13, 2,
+ 11, 5, 3, 1, 1, 12, 22, 16, 2, 2, 3, 14, 4, 2, 5, 47, 6, 3, 2, 5, 3, 3, 1, 1, 10, 4, 3, 3, 2, 3, 4, 15, 1, 1, 7, 14, 8, 15, 1, 6, 3,
+ 3, 5, 1, 2, 2, 2, 2, 2, 2, 15, 3, 2, 9, 3, 20, 4, 2, 2, 2, 9, 4, 2, 2, 2, 10, 3, 24, 4, 3, 17, 2, 1, 2, 2, 232,53, 2, 2, 10, 3, 8,
+ 5, 23, 15, 3, 5, 7, 4, 4, 25, 8, 6, 4, 4, 4, 14, 10, 33, 7, 3, 6, 2, 10, 3, 10, 3, 2, 2, 20, 10, 8, 4, 3, 2, 5, 3, 2, 3, 1, 1, 1, 1,
+ 5, 8, 3, 2, 2, 2, 2, 34, 7, 6, 6, 4, 2, 4, 8, 9, 3, 10, 3, 4, 8, 2, 2, 4, 9, 4, 3, 2, 3, 1, 1, 1, 213,8, 4, 18, 2, 1, 14, 9, 7,
+ 2, 4, 5, 4, 2, 3, 24, 5, 14, 13, 9, 9, 6, 8, 3, 2, 2, 2, 12, 8, 75, 5, 2, 5, 3, 3, 2, 1, 1, 12, 3, 9, 1, 1, 1, 30, 5, 3, 5, 10, 4,
+ 8, 3, 42, 5, 5, 2, 5, 3, 3, 20, 16, 4, 10, 6, 7, 5, 2, 3, 2, 2, 1, 1, 2, 1, 5, 1, 1, 11, 4, 1, 5, 22, 8, 1, 5, 7, 6, 5, 5, 2, 10,
+ 3, 5, 4, 3, 3, 19, 4, 2, 6, 2, 2, 2, 28, 3, 4, 4, 3, 3, 2, 14, 9, 4, 2, 3, 9, 69, 3, 4, 48, 7, 4, 3, 2, 2, 2, 1, 1, 6, 3, 3, 1,
+ 4, 2, 2, 3, 4, 2, 6, 3, 12, 3, 19, 5, 5, 3, 2, 4, 6, 1, 2, 40, 2, 10, 1, 3, 2, 2, 2, 5, 10, 2, 2, 1, 4, 2, 3, 3, 3, 144,13, 11, 3,
+ 6, 4, 3, 7, 3, 10, 7, 2, 14, 2, 1, 1, 9, 7, 4, 35, 11, 8, 5, 2, 4, 8, 4, 2, 7, 9, 6, 6, 2, 3, 1, 3, 25, 6, 5, 7, 1, 1, 6, 3, 2,
+ 13, 6, 6, 3, 4, 8, 3, 4, 50, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 14, 14, 1, 1, 1, 1, 3, 8, 3, 3, 3, 3, 3, 3, 2, 1, 1, 18, 15, 14, 13, 7,
+ 5, 4, 3, 25, 5, 2, 2, 1, 1, 1, 1, 5, 1, 1, 2, 2, 3, 1, 23, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 8, 3, 2, 4, 3, 3, 3, 2, 2,
+ 2, 4, 1, 1, 1, 1, 1, 1, 2, 14, 5, 5, 4, 1, 1, 1, 1, 1, 1, 46, 9, 2, 2, 7, 4, 6, 14, 3, 4, 5, 2, 36, 3, 1, 1, 9, 2, 2, 5, 4, 1,
+ 1, 1, 4, 4, 4, 3, 9, 2, 2, 1, 2, 22, 3, 13, 2, 2, 6, 4, 19, 2, 4, 1, 1, 3, 13, 13, 3, 3, 2, 2, 8, 3, 3, 3, 3, 3, 3, 3, 2, 4, 2,
+ 1, 1, 99, 1, 6, 4, 4, 3, 2, 2, 2, 3, 30, 7, 13, 5, 4, 8, 5, 5, 5, 5, 4, 3, 9, 3, 2, 2, 24, 13, 10, 10, 8, 7, 6, 6, 6, 71, 4, 19, 3,
+ 9, 8, 4, 3, 1, 1, 2, 6, 5, 3, 2, 10, 2, 2, 7, 5, 2, 2, 2, 2, 2, 1, 9, 1, 3, 2, 3, 3, 43, 4, 4, 3, 1, 1, 4, 2, 4, 1, 13, 11, 2,
+ 7, 7, 4, 3, 8, 2, 5, 29, 2, 3, 3, 5, 2, 3, 6, 2, 1, 2, 1, 1, 2, 170,16, 3, 1, 10, 4, 11, 3, 3, 3, 5, 9, 3, 22, 9, 3, 5, 5, 2, 19,
+ 11, 2, 3, 1, 1, 4, 2, 2, 1, 1, 30, 7, 4, 11, 8, 10, 3, 3, 3, 4, 9, 3, 19, 6, 6, 7, 3, 11, 2, 5, 3, 1, 1, 3, 64, 5, 2, 17, 3, 7, 3,
+ 3, 3, 6, 25, 3, 18, 5, 4, 3, 12, 6, 5, 1, 77, 3, 3, 5, 5, 2, 7, 5, 2, 2, 2, 9, 4, 6, 2, 2, 6, 7, 3, 2, 7, 2, 2, 2, 15, 1, 5, 2,
+ 2, 3, 2, 3, 1, 9, 4, 12, 1, 1, 3, 2, 2, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 9, 1, 5, 1, 3, 1, 6, 1, 4, 4, 4, 1, 1, 3, 2,
+ 1, 1, 1, 169,6, 5, 1, 1, 1, 1, 1, 25, 19, 18, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 3, 2, 2, 2, 1, 40, 2, 1, 36, 4, 6, 9, 17, 1, 1, 1, 1,
+ 1, 1, 1, 5, 5, 1, 1, 1, 1, 1, 2, 7, 2, 2, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 7, 3, 3, 3, 7, 4, 2, 1, 14, 5, 5, 3, 3, 16, 2, 2,
+ 3, 3, 10, 3, 6, 2, 2, 2, 15, 3, 2, 4, 3, 3, 5, 5, 2, 19, 16, 1, 1, 3, 3, 3, 3, 1, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 2, 1, 60, 25, 3, 3, 2, 3, 2, 8, 4, 2, 11, 7, 2, 1, 1, 1, 22, 7, 7, 5, 4, 4, 4, 4, 4, 3, 2, 1, 1, 1, 1, 8, 5, 2, 2, 2, 1, 1, 1,
+ 1, 2, 1, 1, 2, 4, 3, 2, 1, 1, 1, 1, 4, 2, 83, 45, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 2, 4, 2, 7, 2, 1, 2, 1, 5, 1, 1, 1, 13,
+ 4, 1, 1, 1, 1, 2, 2, 2, 5, 2, 1, 1, 1, 1, 11, 2, 1, 2, 1, 1, 1, 1, 1, 1, 3, 2, 3, 4, 1, 1, 1, 3, 1, 1, 2, 4, 1, 1, 12, 2, 2,
+ 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 3, 2, 12, 3, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
+ 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 25, 3, 5, 1, 4, 1, 1, 4, 3, 3, 1, 30, 2, 6, 2, 4, 3, 1, 4, 3, 2, 1, 43, 1, 1, 4, 22, 2, 3, 13,
+ 2, 3, 11, 2, 2, 1, 15, 9, 2, 4, 3, 3, 2, 2, 50, 3, 2, 2, 2, 11, 5, 2, 3, 2, 7, 4, 2, 6, 2, 5, 2, 3, 5, 3, 2, 2, 2, 1, 1, 38, 2,
+ 21, 5, 2, 4, 1, 6, 2, 65, 2, 2, 7, 6, 5, 2, 2, 2, 1, 1, 1, 1, 10, 3, 2, 2, 2, 2, 5, 17, 9, 2, 2, 25, 4, 4, 10, 10, 9, 3, 3, 140,8,
+ 7, 5, 2, 26, 3, 3, 3, 3, 5, 1, 2, 1, 1, 3, 2, 3, 2, 1, 12, 4, 3, 36, 17, 11, 1, 2, 7, 2, 4, 4, 10, 8, 5, 4, 5, 2, 5, 1, 2, 3, 1,
+ 2, 3, 6, 5, 2, 1, 1, 3, 117,24, 6, 5, 1, 1, 1, 4, 2, 8, 2, 11, 2, 2, 6, 5, 4, 8, 2, 14, 5, 4, 2, 12, 3, 4, 11, 3, 3, 11, 14, 8, 1,
+ 1, 3, 2, 4, 3, 6, 4, 4, 2, 7, 2, 2, 25, 2, 16, 1, 1, 1, 1, 1, 1, 1, 2, 1, 18, 4, 3, 5, 15, 3, 3, 4, 18, 11, 3, 7, 63, 40, 39, 3, 4,
+ 2, 1, 1, 1, 5, 5, 2, 8, 1, 3, 3, 11, 3, 1, 3, 3, 39, 3, 10, 3, 2, 1, 1, 8, 3, 2, 3, 11, 2, 7, 12, 3, 3, 2, 17, 2, 2, 4, 3, 2, 4,
+ 2, 2, 5, 3, 7, 5, 17, 5, 3, 3, 3, 1, 1, 5, 4, 4, 2, 244,9, 2, 2, 2, 11, 1, 2, 3, 9, 1, 1, 10, 4, 1, 1, 1, 1, 11, 4, 2, 1, 8, 4,
+ 3, 17, 2, 2, 4, 2, 2, 2, 49, 2, 2, 2, 1, 8, 1, 2, 2, 2, 4, 4, 3, 6, 3, 3, 2, 8, 2, 2, 14, 3, 4, 7, 7, 5, 5, 2, 13, 4, 2, 1, 1,
+ 7, 2, 24, 4, 6, 7, 4, 7, 20, 3, 7, 2, 2, 2, 3, 3, 6, 2, 1, 6, 5, 3, 8, 6, 4, 2, 5, 2, 58, 4, 4, 4, 3, 25, 5, 1, 1, 5, 4, 4, 3,
+ 2, 2, 2, 2, 2, 1, 3, 4, 5, 2, 1, 47, 11, 3, 1, 2, 1, 1, 6, 2, 5, 1, 1, 6, 2, 1, 1, 2, 5, 1, 69, 9, 6, 3, 1, 1, 3, 4, 2, 1, 19,
+ 3, 2, 2, 14, 1, 4, 8, 4, 4, 3, 7, 3, 2, 5, 4, 2, 3, 3, 3, 3, 4, 2, 4, 6, 3, 2, 2, 1, 2, 2, 135,8, 2, 30, 6, 5, 1, 3, 2, 82, 53,
+ 6, 5, 4, 2, 5, 3, 6, 2, 6, 3, 6, 1, 1, 1, 3, 2, 37, 2, 1, 3, 6, 3, 3, 3, 7, 3, 2, 3, 3, 41, 7, 3, 1, 1, 3, 3, 3, 3, 3, 2, 6,
+ 3, 3, 5, 3, 3, 3, 3, 11, 5, 4, 22, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 4, 4, 4, 3, 10, 3, 1, 4, 4, 4, 2, 2, 1, 1, 1, 1, 14, 1, 1, 1,
+ 1, 1, 1, 2, 7, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 1, 2, 2, 2, 1, 10, 6, 4, 3, 2, 1, 1, 1, 173,10, 2, 2, 1, 4, 4, 3, 3, 39, 3, 2, 4,
+ 2, 8, 5, 2, 2, 2, 6, 3, 2, 2, 3, 3, 3, 3, 2, 4, 16, 6, 4, 4, 1, 24, 5, 4, 5, 5, 4, 4, 3, 31, 4, 2, 4, 7, 3, 2, 3, 6, 25, 22, 3,
+ 2, 1, 2, 4, 3, 4, 2, 2, 158,27, 4, 2, 1, 1, 1, 9, 1, 1, 1, 2, 1, 1, 7, 5, 24, 1, 5, 4, 8, 4, 4, 2, 2, 4, 1, 1, 1, 1, 11, 4, 2,
+ 2, 2, 2, 7, 5, 2, 20, 3, 3, 6, 3, 29, 6, 4, 2, 7, 4, 6, 5, 5, 21, 3, 3, 4, 10, 4, 4, 4, 2, 254,48, 5, 3, 3, 5, 7, 5, 5, 10, 2, 2,
+ 2, 2, 2, 2, 2, 1, 3, 2, 4, 36, 2, 6, 2, 3, 6, 6, 5, 4, 10, 6, 4, 4, 4, 6, 6, 6, 11, 6, 2, 1, 2, 2, 30, 8, 5, 2, 6, 5, 4, 4, 4,
+ 12, 6, 2, 24, 13, 10, 4, 4, 1, 1, 1, 1, 4, 2, 5, 1, 64, 2, 5, 1, 1, 3, 2, 2, 2, 12, 3, 3, 3, 3, 3, 8, 6, 6, 2, 2, 2, 2, 7, 5, 1,
+ 1, 4, 4, 4, 2, 1, 1, 14, 11, 10, 5, 5, 10, 3, 4, 22, 8, 6, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 4, 3, 3, 3, 45, 2, 8, 3, 2, 2, 2, 13,
+ 10, 8, 8, 4, 3, 1, 1, 1, 1, 3, 2, 10, 10, 6, 4, 82, 2, 8, 3, 2, 2, 7, 3, 3, 26, 3, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 9, 2, 2, 3, 5,
+ 2, 3, 2, 2, 187,19, 2, 5, 2, 5, 5, 3, 3, 3, 51, 11, 2, 9, 26, 5, 5, 9, 4, 3, 11, 6, 3, 7, 3, 3, 3, 2, 1, 40, 4, 4, 3, 1, 1, 1, 1,
5, 5, 3, 3, 2, 6, 3, 3, 3, 15, 3, 8, 7, 14, 9, 7, 7, 2, 2, 24, 15, 4, 3, 3, 8, 3, 3, 20, 15, 8, 6, 3, 2, 2, 2, 3, 2, 4, 5, 4, 101,
- 11, 1, 3, 2, 3, 23, 2, 15, 9, 9, 7, 1, 5, 1, 1, 1, 1, 6, 2, 2, 2, 3, 7, 3, 39, 24, 3, 3, 2, 2, 2, 4, 3, 3, 2, 2, 7, 3, 1, 7, 3,
- 4, 2, 37, 10, 1, 2, 4, 1, 1, 1, 3, 5, 3, 1, 3, 2, 4, 4, 4, 3, 3, 1, 1, 1, 58, 4, 2, 3, 5, 3, 1, 1, 5, 2, 2, 6, 2, 1, 1, 2, 3,
- 9, 9, 25, 12, 1, 5, 2, 1, 4, 8, 2, 2, 3, 3, 1, 22, 5, 4, 1, 2, 2, 2, 5, 3, 2, 1, 1, 102,1, 8, 1, 2, 2, 2, 2, 4, 2, 1, 1, 8, 2,
- 2, 7, 3, 3, 1, 1, 2, 3, 6, 4, 3, 13, 3, 3, 9, 2, 2, 2, 2, 2, 8, 2, 8, 1, 4, 2, 3, 1, 1, 1, 8, 2, 3, 4, 2, 3, 11, 1, 2, 3, 4,
- 16, 6, 3, 2, 1, 3, 4, 3, 43, 1, 1, 2, 8, 7, 2, 1, 3, 5, 4, 2, 2, 2, 2, 3, 8, 4, 11, 2, 5, 1, 16, 7, 4, 2, 2, 2, 1, 1, 3, 2, 1,
- 4, 2, 2, 76, 11, 11, 10, 8, 8, 3, 11, 6, 4, 4, 5, 5, 5, 5, 6, 4, 11, 6, 3, 3, 3, 4, 3, 9, 8, 8, 8, 2, 52, 1, 2, 23, 3, 1, 1, 1, 3,
- 3, 5, 1, 1, 2, 2, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 7, 7, 1, 1, 5, 21, 7, 3, 8, 4, 3, 2, 3, 2, 45, 2, 3, 7, 3, 13, 5, 11, 4, 3, 2,
- 2, 1, 2, 2, 2, 20, 2, 1, 1, 8, 6, 3, 4, 3, 2, 1, 1, 10, 5, 4, 8, 1, 2, 4, 26, 18, 1, 1, 4, 24, 8, 3, 3, 4, 4, 2, 12, 5, 4, 2, 2,
- 1, 60, 2, 1, 1, 4, 2, 6, 30, 4, 7, 6, 3, 3, 5, 2, 6, 4, 11, 3, 2, 3, 1, 3, 3, 52, 4, 4, 1, 1, 4, 6, 1, 5, 2, 15, 1, 5, 3, 14, 13,
- 2, 9, 3, 30, 6, 4, 2, 4, 2, 2, 2, 3, 4, 2, 1, 1, 1, 11, 4, 88, 4, 14, 14, 13, 3, 10, 8, 4, 4, 4, 4, 4, 4, 1, 6, 5, 34, 1, 1, 3, 13,
- 12, 12, 12, 10, 5, 3, 1, 10, 5, 3, 3, 4, 1, 5, 2, 6, 1, 4, 6, 3, 9, 1, 4, 2, 243,1, 1, 17, 7, 4, 2, 2, 1, 1, 7, 2, 2, 3, 3, 1, 7,
- 5, 3, 2, 1, 1, 1, 1, 14, 2, 2, 7, 3, 5, 3, 1, 1, 49, 3, 3, 5, 3, 1, 1, 23, 7, 5, 5, 3, 3, 4, 3, 2, 29, 7, 15, 4, 7, 28, 7, 6, 6,
- 6, 6, 2, 5, 4, 2, 2, 1, 15, 5, 3, 25, 4, 4, 8, 4, 4, 1, 4, 3, 2, 3, 3, 3, 2, 6, 6, 3, 14, 2, 2, 1, 2, 1, 2, 4, 2, 2, 2, 182,30,
- 2, 13, 12, 1, 3, 3, 3, 3, 3, 1, 4, 3, 25, 3, 3, 3, 14, 13, 4, 6, 5, 3, 1, 1, 1, 1, 1, 2, 14, 3, 2, 3, 15, 10, 3, 7, 37, 4, 1, 2, 2,
- 2, 10, 10, 4, 3, 13, 11, 10, 2, 3, 7, 4, 2, 1, 1, 1, 1, 33, 4, 2, 18, 4, 1, 1, 1, 10, 10, 8, 3, 1, 1, 5, 13, 8, 4, 2, 2, 2, 1, 204,19,
- 6, 5, 3, 3, 1, 1, 7, 2, 2, 2, 2, 29, 4, 1, 1, 2, 2, 2, 2, 9, 2, 2, 5, 3, 4, 2, 1, 1, 1, 2, 2, 32, 3, 3, 1, 3, 3, 4, 3, 10, 6,
- 5, 5, 5, 2, 14, 7, 4, 3, 4, 3, 32, 3, 2, 2, 2, 3, 2, 2, 2, 2, 10, 3, 4, 5, 2, 2, 24, 3, 16, 7, 5, 3, 2, 2, 6, 1, 2, 2, 2, 3, 2,
- 3, 30, 4, 2, 3, 12, 8, 4, 1, 1, 4, 1, 1, 3, 3, 2, 39, 2, 11, 11, 8, 3, 3, 1, 1, 1, 1, 14, 6, 4, 3, 3, 1, 2, 9, 9, 5, 5, 4, 3, 2,
- 26, 3, 3, 3, 2, 1, 1, 17, 9, 4, 5, 2, 2, 2, 2, 1, 1, 22, 11, 1, 3, 1, 4, 1, 44, 2, 16, 14, 5, 3, 3, 10, 3, 3, 1, 1, 4, 4, 4, 3, 3,
- 10, 2, 2, 6, 4, 2, 8, 3, 3, 2, 2, 2, 2, 1, 18, 4, 3, 7, 3, 2, 2, 35, 9, 4, 2, 3, 8, 7, 6, 3, 8, 9, 3, 3, 4, 1, 9, 1, 1, 1, 1,
- 7, 1, 3, 1, 1, 1, 11, 4, 4, 46, 6, 5, 5, 5, 5, 5, 3, 3, 2, 2, 18, 14, 2, 16, 8, 7, 7, 7, 7, 2, 3, 1, 1, 1, 149,20, 6, 6, 10, 6, 2,
- 53, 12, 12, 6, 3, 32, 6, 5, 16, 14, 14, 6, 4, 3, 4, 5, 4, 8, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 18, 2, 1, 9, 2, 3, 2, 14, 5, 3,
- 3, 5, 2, 2, 2, 4, 16, 3, 2, 4, 4, 4, 3, 1, 2, 3, 36, 2, 5, 5, 3, 5, 2, 15, 3, 3, 2, 1, 1, 1, 1, 10, 10, 10, 5, 3, 200,38, 8, 8, 5,
- 2, 8, 6, 6, 6, 3, 5, 2, 40, 15, 12, 12, 4, 4, 4, 11, 2, 2, 9, 2, 3, 67, 9, 4, 25, 3, 2, 2, 2, 2, 5, 4, 4, 3, 2, 2, 11, 4, 4, 4, 6,
- 2, 47, 1, 6, 8, 2, 4, 13, 5, 6, 6, 3, 51, 15, 3, 3, 1, 1, 1, 1, 1, 2, 6, 2, 14, 4, 1, 1, 1, 1, 4, 4, 3, 3, 2, 3, 9, 8, 5, 4, 2,
- 11, 4, 2, 2, 4, 14, 4, 5, 1, 35, 8, 5, 5, 2, 2, 1, 1, 5, 1, 1, 1, 2, 2, 12, 2, 1, 1, 1, 10, 4, 3, 5, 3, 1, 1, 1, 1, 3, 1, 1, 4,
- 1, 1, 1, 1, 1, 45, 24, 1, 3, 4, 12, 5, 3, 2, 5, 4, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 7, 2, 3, 3, 1, 148,22, 3, 3, 12, 10, 4, 4, 3,
- 6, 1, 2, 3, 3, 3, 3, 4, 3, 1, 15, 1, 1, 8, 8, 8, 3, 3, 3, 19, 8, 6, 6, 5, 5, 27, 7, 1, 1, 6, 4, 1, 1, 1, 3, 3, 1, 1, 1, 16, 16,
- 15, 3, 20, 6, 3, 2, 2, 2, 6, 2, 2, 2, 2, 9, 3, 2, 3, 2, 5, 3, 3, 3, 1, 7, 4, 2, 2, 3, 1, 1, 1, 34, 5, 3, 2, 2, 2, 2, 1, 6, 2,
- 3, 8, 3, 3, 3, 3, 1, 1, 1, 2, 5, 3, 2, 2, 2, 1, 4, 2, 106,9, 2, 2, 3, 8, 9, 1, 3, 1, 2, 1, 1, 1, 1, 1, 5, 1, 50, 15, 6, 5, 4,
- 4, 2, 7, 3, 2, 3, 5, 2, 2, 1, 1, 1, 6, 2, 2, 1, 17, 11, 10, 5, 5, 5, 5, 5, 35, 4, 5, 4, 2, 1, 1, 5, 3, 6, 2, 1, 3, 2, 1, 1, 1,
- 117,5, 2, 4, 9, 3, 2, 2, 5, 3, 7, 4, 4, 2, 2, 2, 2, 2, 2, 7, 4, 5, 5, 1, 5, 8, 2, 4, 1, 1, 1, 11, 4, 10, 5, 2, 28, 7, 4, 1, 3,
- 2, 1, 6, 2, 1, 55, 2, 4, 38, 23, 2, 2, 1, 1, 1, 1, 1, 18, 15, 14, 11, 9, 9, 5, 4, 3, 2, 2, 6, 6, 4, 2, 1, 4, 3, 3, 3, 99, 4, 2, 11,
- 8, 7, 4, 16, 5, 6, 4, 2, 38, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 2, 2, 2, 2, 17, 7, 6, 1, 1, 6, 2, 1, 1, 11, 7, 5, 7, 4, 3, 2,
- 2, 2, 2, 2, 4, 2, 8, 6, 1, 114,11, 1, 1, 4, 3, 3, 2, 2, 7, 12, 2, 2, 1, 3, 12, 3, 3, 40, 8, 2, 2, 8, 3, 14, 3, 3, 7, 5, 3, 3, 3,
- 2, 2, 3, 3, 8, 2, 144,54, 18, 13, 3, 4, 4, 2, 1, 2, 10, 5, 6, 2, 2, 1, 1, 23, 7, 7, 7, 7, 6, 7, 2, 2, 1, 26, 3, 10, 5, 12, 10, 7, 2,
- 3, 8, 3, 14, 2, 5, 2, 2, 1, 1, 1, 1, 1, 6, 2, 3, 2, 2, 127,17, 3, 6, 2, 2, 1, 9, 33, 8, 3, 3, 4, 4, 3, 10, 3, 13, 2, 3, 2, 1, 1,
- 10, 7, 2, 4, 1, 1, 14, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 5, 2, 1, 1, 1, 2, 1, 1, 46, 4, 1, 1, 4, 2, 1, 3, 13, 3, 3, 3, 4, 4, 2,
- 1, 1, 5, 2, 5, 1, 1, 1, 1, 4, 3, 56, 6, 1, 1, 2, 1, 4, 3, 3, 10, 2, 4, 2, 2, 2, 1, 1, 12, 12, 9, 7, 4, 5, 4, 8, 5, 1, 4, 4, 3,
- 3, 2, 2, 2, 2, 2, 76, 3, 31, 27, 26, 2, 7, 4, 4, 10, 10, 1, 1, 1, 1, 1, 1, 5, 3, 1, 7, 4, 4, 17, 3, 2, 9, 2, 2, 68, 7, 4, 4, 4, 4,
- 4, 4, 4, 3, 3, 1, 1, 7, 7, 7, 7, 6, 3, 3, 3, 1, 1, 1, 1, 4, 18, 18, 6, 6, 7, 7, 7, 7, 5, 5, 7, 5, 1, 9, 5, 3, 3, 3, 3, 2, 2,
- 4, 1, 1, 10, 5, 4, 1, 2, 2, 122,7, 3, 6, 5, 5, 9, 4, 4, 10, 10, 9, 6, 6, 2, 8, 2, 2, 6, 6, 51, 2, 1, 3, 3, 16, 1, 1, 4, 10, 2, 8,
- 8, 8, 2, 3, 3, 2, 2, 2, 12, 8, 5, 8, 8, 8, 18, 11, 3, 2, 2, 2, 4, 3, 2, 2, 7, 7, 7, 7, 7, 8, 7, 6, 1, 2, 20, 3, 5, 5, 4, 4, 4,
- 1, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 6, 1, 3, 3, 3, 3, 13, 4, 3, 3, 3, 1, 1, 9, 5,
- 5, 28, 3, 2, 6, 2, 2, 2, 2, 1, 3, 7, 7, 2, 3, 3, 5, 5, 4, 21, 4, 3, 3, 3, 3, 1, 16, 5, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 8, 8,
- 3, 2, 5, 2, 3, 3, 3, 3, 6, 13, 4, 8, 3, 2, 2, 23, 8, 4, 3, 3, 3, 3, 3, 7, 7, 7, 3, 5, 5, 4, 22, 5, 5, 2, 12, 5, 4, 4, 3, 3, 3,
- 3, 3, 3, 3, 74, 16, 9, 5, 4, 1, 1, 6, 6, 6, 20, 3, 10, 9, 3, 7, 7, 2, 2, 2, 13, 11, 6, 5, 2, 2, 2, 12, 11, 3, 2, 2, 6, 6, 2, 2, 2,
- 2, 2, 2, 2, 4, 5, 8, 8, 5, 5, 5, 5, 3, 20, 11, 4, 4, 3, 2, 2, 4, 4, 4, 4, 4, 8, 8, 8, 54, 3, 1, 1, 2, 2, 2, 2, 22, 5, 5, 8, 3,
- 11, 1, 13, 5, 5, 5, 5, 6, 2, 84, 14, 2, 6, 3, 2, 4, 23, 10, 9, 5, 13, 7, 7, 5, 5, 5, 6, 27, 7, 3, 3, 14, 11, 11, 11, 3, 3, 3, 7, 7, 7,
- 4, 1, 44, 5, 5, 2, 1, 1, 1, 4, 5, 2, 2, 16, 2, 1, 2, 4, 3, 3, 4, 4, 3, 110,6, 2, 2, 44, 2, 4, 5, 2, 26, 7, 6, 11, 9, 4, 3, 5, 2,
- 6, 5, 2, 45, 8, 7, 19, 8, 2, 1, 1, 13, 8, 4, 4, 8, 2, 5, 5, 2, 2, 2, 12, 6, 4, 4, 4, 1, 1, 1, 11, 3, 6, 3, 38, 2, 1, 2, 6, 2, 2,
- 3, 1, 1, 1, 1, 1, 2, 1, 4, 2, 2, 2, 2, 6, 3, 3, 1, 1, 3, 3, 2, 1, 1, 2, 1, 1, 3, 3, 2, 10, 7, 1, 1, 1, 6, 6, 1, 1, 1, 3, 3,
- 3, 1, 1, 1, 9, 4, 2, 3, 2, 22, 1, 1, 1, 1, 2, 3, 2, 2, 1, 1, 1, 8, 1, 1, 1, 1, 1, 7, 7, 6, 12, 3, 2, 2, 1, 1, 1, 1, 1, 1, 4,
- 2, 2, 2, 2, 1, 1, 2, 6, 65, 11, 4, 3, 9, 4, 9, 3, 3, 3, 4, 21, 4, 4, 3, 4, 2, 3, 2, 2, 2, 68, 1, 3, 4, 2, 2, 25, 9, 3, 18, 12, 11,
- 3, 4, 4, 4, 11, 9, 9, 9, 9, 5, 3, 42, 4, 3, 2, 2, 1, 1, 16, 12, 5, 1, 5, 4, 2, 2, 34, 2, 1, 3, 3, 2, 12, 2, 2, 6, 1, 77, 10, 2, 2,
- 2, 2, 2, 2, 7, 2, 3, 20, 4, 4, 7, 3, 2, 3, 2, 2, 10, 8, 3, 3, 2, 3, 1, 1, 1, 1, 5, 2, 19, 2, 1, 2, 4, 3, 1, 4, 16, 5, 3, 2, 3,
- 2, 2, 14, 3, 2, 1, 1, 114,3, 6, 3, 3, 4, 1, 16, 2, 3, 2, 2, 3, 4, 2, 1, 11, 1, 1, 1, 1, 7, 30, 9, 6, 5, 2, 6, 3, 3, 4, 2, 5, 6,
- 2, 4, 11, 11, 9, 8, 132,15, 1, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 5, 6, 3, 3, 23, 8, 5, 5, 8, 6, 6, 6, 4, 3, 2, 2, 69, 2, 2, 59, 13, 9,
- 3, 3, 10, 4, 22, 10, 3, 3, 5, 2, 4, 3, 2, 2, 6, 2, 1, 209,3, 3, 49, 4, 4, 7, 8, 6, 17, 6, 6, 2, 1, 1, 1, 4, 3, 2, 3, 23, 4, 6, 4,
- 13, 1, 3, 2, 13, 5, 10, 6, 1, 1, 4, 5, 3, 2, 32, 8, 2, 2, 2, 2, 1, 1, 14, 8, 5, 4, 2, 16, 1, 5, 4, 16, 1, 3, 2, 1, 1, 1, 72, 3, 10,
- 2, 5, 4, 4, 5, 3, 2, 2, 8, 3, 6, 2, 4, 18, 1, 1, 3, 2, 2, 3, 3, 23, 5, 2, 2, 2, 2, 7, 3, 3, 1, 1, 1, 1, 196,13, 2, 8, 3, 3, 4,
- 14, 1, 3, 3, 3, 3, 22, 6, 2, 10, 5, 3, 18, 8, 1, 5, 5, 3, 17, 3, 4, 2, 1, 20, 5, 7, 6, 4, 1, 1, 1, 11, 7, 24, 7, 3, 2, 3, 2, 5, 4,
- 2, 2, 3, 1, 11, 5, 4, 2, 2, 2, 38, 5, 5, 4, 1, 1, 9, 1, 7, 2, 1, 34, 4, 1, 3, 14, 5, 4, 1, 90, 3, 22, 11, 9, 1, 6, 6, 2, 2, 4, 27,
- 4, 15, 3, 2, 5, 4, 4, 2, 3, 3, 4, 6, 4, 3, 3, 2, 16, 2, 11, 2, 1, 1, 1, 3, 1, 105,2, 9, 8, 1, 1, 7, 2, 3, 62, 7, 3, 3, 3, 3, 3,
- 8, 6, 5, 6, 1, 3, 3, 3, 1, 2, 9, 4, 3, 2, 7, 1, 2, 3, 6, 2, 9, 2, 1, 1, 2, 2, 1, 1, 1, 10, 2, 2, 1, 12, 6, 3, 1, 242,4, 14, 4,
- 6, 3, 13, 10, 4, 94, 3, 6, 2, 68, 59, 5, 9, 6, 3, 5, 3, 3, 3, 3, 2, 6, 2, 4, 3, 3, 4, 2, 11, 10, 14, 7, 2, 2, 18, 14, 11, 10, 4, 3, 5,
- 11, 9, 3, 3, 7, 5, 5, 1, 7, 3, 3, 21, 4, 3, 3, 4, 3, 3, 5, 145,44, 9, 2, 2, 33, 3, 6, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 6, 4, 4,
- 4, 4, 10, 1, 1, 1, 3, 2, 2, 10, 5, 3, 2, 22, 2, 14, 6, 2, 2, 2, 16, 6, 3, 5, 1, 2, 1, 91, 3, 3, 11, 2, 6, 2, 8, 7, 4, 4, 8, 8, 2,
- 18, 13, 3, 2, 7, 4, 8, 3, 18, 15, 1, 5, 2, 2, 5, 4, 1, 1, 1, 1, 108,1, 1, 2, 4, 2, 2, 5, 5, 3, 2, 3, 2, 5, 2, 1, 13, 6, 8, 17, 5,
- 9, 1, 1, 3, 6, 2, 5, 9, 3, 2, 1, 7, 5, 2, 1, 1, 1, 90, 2, 6, 4, 1, 3, 12, 4, 3, 2, 1, 1, 4, 2, 33, 1, 1, 1, 2, 1, 3, 3, 2, 2,
- 11, 6, 3, 3, 6, 9, 8, 4, 5, 2, 2, 20, 3, 2, 2, 2, 3, 1, 1, 2, 2, 2, 11, 1, 1, 1, 1, 1, 1, 2, 1, 15, 1, 1, 5, 1, 1, 3, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 15, 10, 1, 1, 4, 2, 73, 9, 2, 8, 3, 2, 10, 3, 12, 2, 4, 2, 9, 2, 8, 4, 3, 3, 3, 84, 14, 7, 4,
- 3, 23, 6, 1, 1, 1, 9, 2, 6, 3, 3, 3, 1, 1, 1, 26, 1, 4, 3, 3, 4, 2, 3, 1, 8, 3, 46, 6, 3, 4, 20, 6, 2, 3, 1, 1, 1, 2, 4, 4, 4,
- 4, 41, 7, 3, 9, 8, 3, 6, 1, 2, 2, 2, 4, 37, 2, 2, 22, 7, 4, 3, 4, 32, 8, 5, 2, 5, 5, 10, 5, 9, 3, 2, 37, 6, 1, 25, 2, 2, 2, 2, 2,
- 4, 2, 1, 1, 3, 2, 44, 9, 5, 3, 1, 1, 4, 3, 12, 7, 2, 2, 75, 11, 2, 1, 15, 5, 3, 2, 1, 2, 2, 2, 6, 2, 2, 2, 2, 2, 3, 2, 2, 2, 11,
- 3, 2, 3, 5, 3, 15, 4, 2, 4, 162,12, 2, 1, 4, 2, 2, 1, 13, 6, 5, 3, 2, 11, 2, 4, 2, 2, 7, 2, 3, 2, 1, 10, 3, 2, 1, 5, 3, 4, 22, 10,
- 3, 2, 4, 4, 3, 5, 4, 6, 2, 2, 2, 4, 20, 6, 2, 4, 5, 2, 1, 1, 4, 2, 18, 2, 3, 5, 2, 6, 2, 5, 3, 2, 1, 1, 8, 2, 2, 2, 1, 56, 9,
- 3, 8, 4, 21, 3, 2, 9, 2, 3, 2, 9, 8, 2, 5, 3, 3, 1, 9, 3, 4, 4, 3, 134,30, 3, 3, 10, 4, 2, 4, 1, 5, 12, 2, 2, 5, 3, 12, 3, 7, 4,
- 2, 9, 3, 4, 10, 2, 2, 3, 12, 4, 3, 6, 1, 1, 6, 2, 2, 2, 2, 2, 2, 4, 1, 1, 51, 4, 7, 4, 3, 5, 3, 2, 3, 5, 4, 2, 2, 18, 5, 4, 5,
- 3, 2, 36, 10, 10, 3, 3, 5, 3, 4, 1, 2, 1, 7, 11, 4, 3, 6, 3, 3, 4, 2, 2, 3, 9, 2, 3, 3, 3, 46, 14, 2, 1, 1, 8, 5, 1, 13, 11, 10, 5,
- 3, 3, 8, 2, 4, 1, 1, 1, 5, 5, 2, 3, 102,7, 2, 6, 3, 10, 2, 9, 4, 3, 2, 1, 1, 9, 6, 6, 4, 2, 22, 15, 10, 7, 3, 1, 4, 4, 2, 2, 4,
- 1, 1, 1, 1, 20, 1, 1, 1, 2, 1, 3, 3, 3, 1, 1, 1, 2, 3, 1, 1, 4, 3, 1, 1, 1, 30, 2, 1, 1, 1, 1, 14, 3, 1, 1, 5, 1, 1, 1, 1, 1,
- 1, 1, 4, 1, 1, 1, 3, 2, 2, 7, 3, 3, 3, 3, 1, 1, 1, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 4, 9, 4, 1, 1, 1, 36, 4, 27, 26, 10, 7, 8, 1, 3, 3, 92, 2, 3, 1, 2, 23, 7, 2, 2, 4, 3, 4, 3, 2, 1, 1, 18, 8, 4, 4, 4, 3,
- 2, 5, 2, 21, 21, 2, 2, 4, 3, 3, 2, 2, 2, 4, 4, 4, 3, 78, 8, 5, 4, 45, 1, 4, 2, 2, 16, 13, 4, 4, 7, 2, 3, 2, 5, 10, 2, 2, 32, 2, 5,
- 2, 3, 11, 8, 2, 2, 3, 2, 6, 6, 4, 3, 3, 3, 3, 89, 6, 14, 7, 2, 2, 1, 37, 4, 2, 27, 8, 3, 6, 3, 4, 2, 2, 4, 5, 10, 6, 8, 4, 3, 3,
- 2, 184,20, 6, 1, 1, 4, 4, 4, 4, 4, 12, 12, 12, 9, 8, 5, 5, 4, 1, 37, 5, 3, 11, 1, 3, 1, 1, 5, 2, 2, 3, 3, 3, 5, 2, 1, 1, 11, 1, 1,
- 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 46, 2, 14, 1, 9, 1, 1, 3, 4, 10, 3, 2, 3, 3, 14, 2, 2, 2, 2, 2, 10, 10, 9, 6, 1, 39, 1, 1, 7, 1,
- 1, 18, 17, 17, 2, 11, 5, 3, 2, 4, 2, 2, 2, 1, 1, 4, 3, 3, 10, 9, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 6, 2, 2,
- 2, 2, 2, 2, 2, 2, 242,2, 1, 1, 20, 12, 8, 4, 3, 2, 2, 27, 13, 2, 3, 2, 2, 2, 3, 2, 5, 38, 4, 4, 1, 2, 21, 2, 2, 3, 3, 4, 4, 47, 1,
- 1, 3, 4, 5, 5, 4, 7, 2, 2, 4, 18, 9, 9, 4, 1, 9, 2, 3, 22, 3, 5, 4, 3, 7, 7, 3, 6, 6, 5, 3, 5, 2, 5, 6, 4, 7, 2, 2, 21, 4, 4,
- 4, 15, 15, 14, 9, 7, 6, 1, 1, 1, 2, 2, 19, 16, 15, 14, 1, 1, 5, 3, 3, 3, 30, 6, 4, 3, 2, 5, 2, 1, 1, 5, 1, 3, 2, 61, 2, 1, 1, 1, 1,
- 1, 2, 40, 1, 13, 9, 9, 4, 1, 2, 1, 1, 1, 11, 6, 2, 4, 4, 4, 2, 2, 5, 3, 5, 5, 4, 2, 8, 4, 3, 3, 3, 1, 1, 1, 1, 1, 113,5, 2, 2,
- 2, 2, 2, 12, 4, 6, 3, 31, 11, 1, 3, 2, 5, 4, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 4, 11, 5, 4, 3, 3, 4, 19, 3, 3, 2, 2, 2, 2, 5, 3, 3,
- 2, 1, 1, 6, 5, 4, 2, 1, 1, 1, 7, 7, 7, 3, 3, 3, 3, 50, 2, 5, 1, 1, 2, 2, 10, 6, 5, 20, 6, 4, 2, 2, 1, 3, 3, 4, 2, 2, 2, 207,4,
- 35, 29, 12, 4, 5, 1, 3, 3, 4, 3, 6, 2, 2, 11, 5, 2, 3, 3, 4, 30, 9, 8, 1, 1, 1, 2, 4, 2, 17, 15, 3, 3, 2, 7, 3, 1, 16, 2, 2, 2, 2,
- 2, 9, 5, 3, 26, 2, 1, 1, 5, 8, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 4, 2, 1, 1, 3, 3, 2, 1, 8, 3, 3, 51, 2, 2, 3, 3, 3, 30, 4, 22,
- 7, 2, 4, 5, 4, 3, 3, 2, 1, 3, 1, 2, 3, 2, 1, 2, 2, 1, 1, 6, 2, 2, 14, 2, 2, 2, 2, 10, 9, 9, 1, 35, 5, 3, 3, 3, 3, 3, 2, 2, 2,
- 2, 8, 1, 3, 1, 1, 3, 2, 5, 5, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 41, 6, 6, 6, 6, 6, 2, 2, 2, 2, 1, 1, 5, 5, 3, 4, 5, 2, 1, 1, 1,
- 4, 3, 3, 3, 3, 2, 1, 3, 23, 7, 1, 2, 1, 1, 8, 1, 1, 6, 3, 2, 5, 2, 24, 8, 6, 2, 1, 4, 3, 7, 3, 4, 1, 152,8, 4, 4, 4, 70, 70, 5,
- 5, 57, 11, 7, 3, 42, 1, 1, 1, 7, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 5, 4, 5, 4, 4, 4, 4, 4, 1, 1, 1,
- 8, 2, 2, 2, 2, 2, 4, 4, 6, 4, 2, 2, 2, 1, 2, 1, 1, 1, 4, 1, 1, 1, 1, 7, 4, 4, 2, 4, 3, 3, 10, 9, 9, 8, 4, 17, 7, 4, 2, 2, 3,
- 3, 3, 5, 5, 5, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 9, 9, 4, 5, 4, 17, 4, 1, 3, 1, 4, 3, 3, 2, 12, 4, 2, 2, 1, 6, 5, 2,
- 1, 94, 11, 5, 7, 5, 3, 4, 2, 1, 3, 3, 8, 7, 7, 7, 5, 15, 4, 3, 3, 3, 2, 8, 5, 1, 1, 2, 2, 16, 12, 6, 6, 6, 5, 1, 1, 1, 1, 14, 2,
- 2, 4, 4, 124,9, 2, 3, 1, 1, 47, 3, 2, 1, 15, 7, 4, 2, 16, 6, 3, 3, 3, 3, 41, 2, 4, 3, 2, 2, 13, 11, 2, 2, 1, 3, 3, 7, 5, 2, 2, 5,
- 1, 4, 2, 8, 2, 2, 4, 2, 1, 3, 22, 4, 1, 1, 1, 7, 4, 2, 3, 4, 2, 26, 2, 4, 5, 3, 6, 3, 2, 8, 4, 3, 40, 6, 1, 1, 3, 9, 2, 1, 2,
- 1, 4, 2, 2, 3, 2, 2, 6, 2, 7, 1, 11, 4, 4, 27, 7, 4, 17, 3, 3, 2, 9, 1, 15, 6, 4, 3, 3, 8, 5, 2, 7, 1, 2, 36, 4, 4, 4, 3, 17, 2,
- 2, 7, 5, 4, 2, 1, 1, 96, 29, 4, 2, 18, 1, 1, 2, 7, 6, 6, 6, 2, 26, 5, 3, 5, 4, 4, 4, 4, 11, 1, 3, 5, 5, 5, 4, 1, 7, 1, 5, 10, 5,
- 3, 2, 1, 2, 1, 1, 18, 6, 1, 3, 3, 2, 2, 2, 6, 5, 3, 4, 3, 43, 9, 5, 2, 28, 3, 9, 8, 5, 4, 6, 4, 3, 2, 2, 59, 11, 2, 8, 18, 7, 7,
- 10, 9, 4, 5, 3, 6, 5, 3, 6, 8, 40, 11, 3, 3, 14, 2, 6, 8, 4, 2, 3, 14, 3, 7, 6, 5, 5, 70, 6, 5, 5, 2, 5, 1, 1, 1, 13, 12, 10, 9, 1,
- 9, 8, 4, 4, 4, 14, 3, 3, 10, 10, 5, 9, 3, 3, 5, 5, 4, 4, 4, 8, 4, 4, 6, 2, 2, 2, 11, 9, 1, 1, 1, 1, 24, 5, 6, 6, 9, 4, 4, 4, 3,
- 3, 3, 3, 3, 1, 1, 1, 2, 90, 15, 2, 3, 3, 5, 5, 5, 2, 4, 1, 2, 2, 2, 2, 1, 8, 7, 7, 7, 10, 4, 2, 5, 5, 8, 24, 7, 6, 2, 4, 9, 4,
- 5, 11, 5, 5, 5, 5, 2, 4, 1, 1, 8, 8, 8, 2, 6, 6, 2, 2, 4, 4, 4, 100,6, 5, 27, 12, 8, 8, 4, 8, 3, 6, 4, 3, 37, 4, 1, 2, 2, 2, 1,
- 1, 2, 1, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 7, 6, 3, 4, 3, 3, 1, 6, 4, 2, 6, 6, 1, 26, 17, 16, 9, 18, 1, 1, 1, 3, 9,
- 9, 8, 7, 1, 120,9, 2, 4, 2, 2, 1, 1, 37, 2, 2, 2, 23, 5, 2, 2, 4, 4, 5, 4, 4, 3, 2, 3, 11, 11, 10, 34, 7, 5, 4, 19, 4, 3, 6, 5, 5,
- 10, 7, 6, 3, 3, 3, 2, 9, 9, 1, 11, 5, 5, 4, 1, 1, 10, 10, 8, 6, 3, 2, 23, 7, 6, 14, 5, 5, 5, 5, 2, 2, 5, 2, 1, 1, 1, 18, 3, 5, 5,
- 4, 1, 1, 1, 2, 20, 5, 1, 1, 4, 3, 1, 3, 3, 1, 1, 1, 5, 5, 5, 5, 32, 3, 16, 7, 2, 6, 6, 5, 12, 10, 7, 2, 1, 37, 2, 1, 1, 6, 3, 3,
- 3, 3, 8, 4, 8, 123,8, 1, 1, 3, 3, 32, 3, 26, 4, 4, 4, 9, 9, 9, 8, 11, 1, 4, 2, 2, 2, 6, 6, 5, 5, 5, 16, 3, 3, 8, 7, 6, 42, 14, 3,
- 6, 4, 4, 3, 16, 1, 5, 4, 4, 4, 4, 3, 5, 1, 3, 3, 2, 8, 6, 6, 6, 6, 1, 30, 8, 6, 6, 6, 1, 19, 8, 8, 8, 7, 7, 7, 7, 5, 5, 7, 4,
- 2, 3, 7, 1, 4, 4, 14, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 146,7, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 5, 3, 15, 8,
- 2, 2, 4, 4, 4, 2, 2, 7, 3, 72, 7, 2, 2, 2, 10, 9, 6, 6, 2, 3, 3, 3, 7, 2, 2, 5, 5, 3, 3, 3, 2, 2, 2, 1, 1, 7, 7, 3, 3, 2, 15,
- 5, 5, 5, 5, 4, 4, 6, 3, 3, 13, 2, 5, 5, 3, 3, 6, 4, 3, 1, 1, 4, 11, 3, 4, 3, 2, 19, 7, 5, 5, 3, 7, 2, 3, 1, 2, 65, 65, 29, 18, 12,
- 5, 11, 4, 4, 1, 1, 1, 3, 3, 2, 2, 32, 1, 1, 5, 2, 2, 2, 3, 2, 7, 5, 8, 7, 6, 6, 6, 28, 1, 4, 4, 12, 4, 2, 1, 2, 12, 5, 2, 1, 1,
- 2, 8, 1, 1, 3, 3, 15, 3, 3, 2, 25, 3, 2, 7, 7, 3, 2, 2, 1, 1, 1, 2, 3, 3, 1, 9, 2, 1, 1, 6, 2, 2, 2, 6, 49, 24, 6, 3, 5, 1, 7,
- 4, 3, 1, 2, 1, 1, 3, 3, 2, 7, 4, 1, 19, 8, 7, 6, 2, 4, 3, 11, 2, 2, 1, 5, 3, 3, 1, 1, 25, 4, 1, 2, 8, 6, 5, 7, 4, 19, 1, 4, 3,
- 5, 5, 4, 3, 2, 23, 8, 4, 3, 1, 1, 4, 2, 6, 2, 12, 2, 1, 3, 9, 3, 3, 2, 1, 1, 1, 10, 2, 7, 7, 5, 3, 2, 1, 9, 7, 7, 2, 2, 2, 1,
- 5, 4, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 6, 2, 1, 4, 2, 2, 2, 102,44, 2, 1, 1, 1, 14, 9, 3, 2, 4, 2, 12, 7, 3, 7, 23, 2, 3, 14,
- 5, 4, 2, 2, 24, 5, 3, 1, 1, 11, 3, 3, 2, 4, 3, 7, 2, 1, 2, 4, 3, 2, 2, 2, 13, 3, 1, 1, 2, 2, 3, 24, 3, 7, 9, 2, 1, 2, 2, 2, 2,
- 2, 2, 5, 2, 2, 15, 4, 5, 4, 3, 2, 4, 4, 6, 1, 3, 2, 2, 2, 2, 2, 77, 13, 1, 4, 3, 24, 2, 2, 6, 3, 2, 10, 5, 5, 1, 1, 14, 9, 5, 3,
- 3, 3, 2, 5, 13, 3, 3, 3, 4, 3, 2, 17, 16, 6, 3, 10, 1, 1, 3, 2, 2, 47, 11, 4, 19, 2, 10, 5, 5, 5, 5, 1, 1, 7, 2, 3, 2, 2, 3, 130,27,
- 10, 6, 6, 2, 4, 3, 3, 2, 2, 2, 42, 4, 4, 4, 4, 1, 1, 5, 11, 1, 1, 3, 2, 6, 3, 2, 3, 3, 12, 9, 9, 11, 1, 2, 22, 6, 4, 2, 9, 6, 5,
- 3, 1, 3, 7, 3, 3, 2, 3, 3, 1, 1, 1, 1, 140,6, 15, 1, 9, 3, 4, 3, 1, 1, 1, 1, 6, 6, 6, 4, 2, 56, 6, 5, 13, 4, 8, 2, 2, 10, 4, 4,
- 4, 2, 19, 6, 4, 2, 13, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 8, 1, 2, 8, 1, 1, 2, 2, 5, 3, 2, 4, 2, 2, 14, 4,
- 4, 2, 3, 1, 1, 4, 4, 4, 4, 170,5, 8, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 6, 4, 2, 2, 14, 12, 12, 8, 2, 2, 2, 2, 2, 14, 3, 4, 1, 1,
- 1, 2, 4, 1, 2, 2, 5, 15, 1, 1, 11, 3, 3, 3, 5, 4, 2, 2, 1, 1, 1, 1, 1, 1, 66, 5, 3, 2, 3, 2, 4, 3, 3, 40, 2, 1, 6, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 2, 11, 6, 1, 1, 1, 7, 1, 1, 1, 2, 1, 3, 1, 15, 1, 1, 5, 4, 4, 7, 3, 2, 2, 9, 2, 1, 2, 2, 2, 1, 1, 1, 2, 1,
- 2, 2, 80, 7, 6, 10, 9, 9, 39, 3, 3, 20, 20, 20, 17, 6, 5, 2, 3, 6, 8, 8, 7, 7, 7, 1, 1, 1, 1, 1, 1, 3, 5, 1, 1, 121,15, 3, 4, 25, 6,
- 2, 10, 5, 5, 72, 2, 2, 2, 6, 4, 5, 4, 3, 3, 4, 7, 2, 2, 2, 2, 8, 3, 10, 4, 3, 13, 5, 4, 4, 3, 3, 5, 9, 9, 8, 6, 1, 35, 7, 7, 7,
- 4, 2, 2, 9, 3, 2, 4, 3, 2, 2, 3, 22, 12, 6, 6, 5, 5, 4, 6, 2, 33, 7, 2, 9, 3, 2, 5, 4, 3, 2, 2, 3, 2, 3, 34, 7, 3, 3, 3, 3, 4,
- 5, 5, 5, 2, 14, 9, 9, 6, 2, 2, 3, 3, 3, 3, 3, 3, 110,11, 4, 4, 4, 7, 36, 5, 14, 8, 6, 5, 4, 2, 8, 8, 6, 5, 5, 5, 2, 4, 4, 8, 7,
- 7, 7, 6, 1, 17, 13, 5, 6, 19, 7, 4, 12, 8, 8, 3, 5, 3, 3, 3, 3, 3, 3, 8, 6, 5, 2, 2, 2, 2, 2, 8, 1, 1, 5, 4, 46, 17, 15, 15, 8, 4,
- 13, 13, 7, 4, 4, 10, 2, 2, 1, 28, 10, 7, 7, 7, 4, 11, 8, 8, 8, 3, 4, 4, 3, 25, 4, 3, 3, 5, 10, 10, 7, 6, 4, 3, 3, 3, 5, 3, 2, 2, 23,
- 2, 2, 7, 2, 2, 2, 5, 1, 4, 4, 4, 1, 1, 1, 3, 1, 1, 168,17, 13, 6, 7, 5, 4, 4, 2, 52, 10, 10, 5, 8, 8, 6, 4, 5, 3, 10, 7, 3, 3, 19,
- 15, 5, 5, 9, 9, 9, 9, 3, 4, 6, 6, 41, 7, 3, 3, 3, 30, 9, 9, 3, 11, 7, 6, 6, 4, 29, 5, 5, 5, 5, 3, 7, 7, 12, 5, 4, 20, 18, 18, 18, 9,
- 6, 6, 2, 2, 2, 3, 1, 2, 2, 2, 2, 114,3, 31, 1, 1, 1, 1, 1, 19, 7, 9, 7, 11, 6, 6, 3, 3, 3, 11, 9, 3, 5, 5, 5, 9, 5, 5, 3, 2, 60,
- 42, 2, 11, 1, 1, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, 4, 2, 4, 3, 3, 3, 2, 2, 2, 1, 1, 5, 4, 4, 4, 4, 1,
- 13, 13, 2, 6, 2, 1, 1, 2, 6, 2, 2, 2, 2, 2, 1, 1, 55, 3, 1, 1, 1, 1, 1, 1, 2, 1, 33, 5, 3, 3, 2, 1, 1, 1, 5, 3, 2, 7, 2, 2, 4,
- 2, 2, 2, 4, 2, 2, 1, 3, 1, 19, 1, 1, 7, 1, 2, 1, 2, 1, 1, 3, 2, 1, 7, 1, 1, 1, 1, 4, 3, 2, 1, 1, 7, 1, 1, 1, 2, 1, 2, 2, 2,
- 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 70, 2, 2, 2, 7, 3, 3, 2, 18, 5, 4, 5, 4, 4, 3, 1, 26, 2, 20, 13, 8, 3, 3,
- 4, 3, 78, 22, 1, 2, 4, 2, 2, 2, 4, 2, 1, 1, 1, 1, 1, 1, 18, 3, 10, 9, 9, 4, 3, 2, 2, 20, 4, 4, 4, 10, 8, 4, 6, 5, 4, 23, 2, 9, 3,
- 12, 1, 4, 2, 5, 2, 2, 2, 33, 6, 5, 10, 3, 4, 3, 3, 4, 2, 28, 2, 2, 1, 1, 3, 2, 3, 2, 11, 6, 6, 1, 1, 1, 3, 115,1, 1, 2, 3, 14, 2,
- 10, 7, 3, 59, 5, 3, 1, 4, 2, 2, 6, 4, 3, 2, 3, 8, 2, 3, 2, 3, 2, 2, 2, 1, 2, 4, 5, 3, 3, 5, 2, 12, 11, 4, 4, 4, 5, 2, 12, 6, 3,
- 2, 2, 2, 157,10, 2, 2, 35, 4, 1, 26, 23, 4, 3, 4, 2, 7, 3, 2, 2, 3, 17, 8, 6, 2, 2, 2, 2, 41, 1, 1, 7, 3, 2, 8, 5, 6, 12, 5, 5, 3,
- 2, 1, 1, 1, 1, 1, 1, 16, 7, 5, 2, 10, 4, 4, 1, 2, 3, 42, 4, 2, 1, 3, 26, 2, 2, 2, 18, 11, 8, 6, 3, 2, 5, 2, 119,8, 6, 6, 2, 9, 5,
- 6, 2, 3, 8, 6, 2, 1, 14, 4, 5, 3, 5, 2, 44, 29, 1, 1, 1, 1, 20, 7, 5, 5, 5, 2, 5, 5, 3, 3, 2, 3, 2, 221,1, 24, 3, 5, 2, 2, 4, 5,
- 14, 5, 3, 2, 1, 5, 2, 1, 5, 5, 22, 4, 9, 3, 2, 1, 1, 3, 8, 5, 30, 4, 3, 5, 4, 2, 2, 1, 13, 6, 9, 3, 4, 4, 2, 2, 37, 12, 7, 3, 9,
- 3, 4, 1, 3, 2, 8, 3, 1, 11, 3, 1, 3, 80, 18, 17, 5, 2, 1, 1, 1, 2, 1, 10, 7, 6, 6, 10, 2, 4, 2, 28, 2, 8, 2, 4, 2, 2, 96, 12, 8, 3,
- 6, 3, 5, 3, 6, 20, 13, 10, 3, 12, 4, 6, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 9, 4, 82, 7, 3, 7, 4, 1, 1, 3, 3, 26, 2, 1, 10, 5, 3, 3, 3,
- 6, 7, 1, 1, 1, 5, 17, 4, 2, 2, 2, 7, 3, 3, 2, 55, 6, 2, 7, 3, 3, 7, 3, 29, 19, 13, 12, 9, 9, 9, 4, 3, 4, 3, 2, 14, 2, 3, 5, 14, 2,
- 1, 5, 2, 2, 16, 5, 2, 2, 7, 5, 3, 3, 2, 1, 1, 9, 1, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 3, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 1, 1, 1, 1, 63, 8, 3, 2, 18, 3, 4, 7, 20, 11, 11, 11, 3, 7, 7, 6, 3, 13, 2, 1, 6, 3, 3, 3, 2, 1, 1, 16, 2, 6, 4, 3,
- 3, 1, 1, 63, 3, 6, 5, 3, 34, 28, 16, 2, 9, 4, 4, 1, 5, 5, 2, 2, 12, 11, 3, 2, 2, 47, 2, 13, 3, 3, 12, 5, 3, 2, 2, 1, 11, 3, 2, 2, 1,
- 14, 4, 7, 2, 50, 4, 2, 2, 2, 2, 11, 2, 1, 4, 7, 11, 2, 2, 5, 5, 3, 2, 2, 148,3, 2, 2, 2, 3, 21, 3, 2, 2, 3, 4, 3, 1, 1, 1, 2, 2,
- 2, 46, 19, 14, 3, 4, 4, 3, 8, 1, 2, 5, 29, 6, 7, 2, 5, 4, 6, 5, 3, 6, 6, 3, 7, 1, 14, 4, 2, 2, 23, 4, 2, 2, 10, 8, 7, 3, 2, 98, 13,
- 7, 3, 2, 3, 15, 7, 5, 3, 9, 3, 2, 2, 2, 2, 2, 6, 1, 1, 8, 3, 19, 10, 2, 5, 1, 1, 1, 5, 2, 3, 3, 6, 3, 3, 3, 2, 2, 6, 1, 2, 4,
- 2, 2, 2, 1, 1, 8, 1, 3, 3, 1, 13, 9, 5, 4, 4, 3, 3, 15, 8, 5, 2, 2, 2, 2, 17, 3, 5, 2, 2, 5, 4, 1, 1, 3, 4, 2, 1, 1, 20, 3, 2,
- 6, 4, 7, 37, 16, 11, 10, 4, 2, 6, 1, 2, 4, 2, 10, 3, 3, 108,36, 1, 2, 7, 3, 16, 2, 10, 4, 20, 1, 5, 5, 27, 6, 3, 6, 3, 3, 12, 2, 2, 2,
- 2, 1, 1, 1, 1, 2, 2, 8, 2, 2, 2, 4, 3, 17, 15, 12, 11, 4, 6, 2, 4, 32, 3, 2, 4, 2, 18, 3, 9, 7, 2, 1, 1, 1, 2, 39, 5, 5, 3, 2, 2,
- 6, 6, 5, 12, 8, 6, 2, 3, 22, 8, 4, 2, 7, 7, 3, 2, 2, 2, 2, 6, 3, 3, 5, 3, 9, 4, 3, 3, 2, 12, 2, 1, 1, 1, 1, 5, 5, 4, 3, 1, 1,
- 2, 1, 1, 9, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 2, 1, 1, 1, 1, 1, 4, 1, 3, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 18, 2, 1, 7, 4, 3, 2, 2, 23, 3, 3, 1, 1, 1, 13, 4, 2, 2, 6, 2, 1, 1, 1, 1, 1, 41, 2, 6, 4, 17, 1, 7, 4, 1, 2,
- 1, 10, 10, 8, 8, 3, 3, 2, 29, 2, 6, 1, 12, 7, 4, 2, 2, 2, 2, 63, 3, 1, 2, 3, 4, 2, 2, 1, 4, 16, 15, 4, 4, 2, 5, 16, 3, 3, 2, 8, 3,
- 3, 2, 20, 5, 4, 4, 1, 9, 2, 2, 3, 70, 5, 4, 2, 2, 8, 4, 2, 12, 12, 2, 2, 3, 3, 5, 2, 28, 11, 4, 4, 2, 7, 2, 17, 5, 3, 7, 3, 3, 1,
- 5, 2, 149,13, 3, 3, 3, 4, 1, 2, 5, 11, 3, 3, 2, 40, 2, 3, 2, 2, 2, 24, 3, 6, 3, 3, 10, 3, 4, 4, 30, 9, 9, 6, 5, 17, 3, 3, 3, 7, 2,
- 4, 10, 5, 3, 2, 3, 3, 3, 205,36, 19, 2, 2, 2, 9, 4, 12, 11, 7, 4, 2, 2, 12, 8, 16, 1, 1, 1, 1, 1, 4, 23, 4, 4, 4, 25, 3, 20, 20, 2, 6,
- 2, 2, 4, 4, 3, 1, 2, 21, 10, 3, 3, 3, 16, 1, 1, 8, 4, 3, 2, 2, 2, 5, 5, 5, 4, 2, 28, 13, 3, 8, 4, 2, 1, 1, 6, 1, 1, 1, 2, 3, 2,
- 2, 2, 33, 3, 26, 3, 1, 2, 11, 5, 3, 10, 3, 2, 2, 1, 1, 1, 1, 1, 3, 1, 1, 2, 1, 123,81, 5, 16, 4, 2, 2, 5, 1, 3, 2, 2, 4, 9, 5, 5,
- 5, 3, 4, 1, 3, 4, 5, 3, 10, 8, 2, 4, 2, 2, 9, 5, 3, 3, 2, 2, 11, 3, 2, 1, 1, 1, 1, 15, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
- 2, 109,2, 19, 3, 3, 13, 2, 5, 2, 59, 10, 3, 2, 3, 15, 8, 3, 4, 2, 6, 4, 2, 2, 1, 2, 1, 1, 1, 10, 3, 2, 4, 4, 4, 10, 3, 2, 71, 2, 6,
- 6, 3, 1, 1, 1, 2, 4, 3, 16, 6, 4, 3, 32, 3, 7, 5, 5, 3, 2, 2, 3, 2, 1, 3, 1, 1, 1, 2, 1, 1, 2, 2, 2, 4, 3, 2, 1, 1, 3, 3, 2,
- 1, 1, 1, 11, 10, 17, 5, 6, 6, 3, 10, 1, 3, 1, 1, 1, 3, 3, 3, 1, 1, 31, 1, 1, 1, 1, 5, 4, 2, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 19, 2, 1, 13, 13, 10, 9, 9, 7, 4, 4, 3, 3, 235,8, 3, 3, 23, 5, 4, 3, 6, 3, 4, 2, 5, 9, 31, 3, 2, 12, 4, 2, 2,
- 2, 7, 6, 5, 4, 1, 1, 1, 26, 3, 2, 6, 3, 6, 3, 8, 4, 26, 24, 4, 4, 1, 1, 1, 43, 4, 2, 3, 2, 6, 13, 10, 6, 2, 3, 2, 9, 3, 2, 23, 2,
- 1, 6, 12, 6, 5, 1, 1, 2, 1, 135,6, 2, 2, 11, 5, 5, 2, 7, 1, 1, 5, 17, 2, 5, 4, 1, 13, 9, 6, 6, 1, 2, 3, 1, 1, 1, 1, 13, 5, 6, 14,
- 2, 3, 2, 2, 11, 7, 8, 4, 4, 9, 9, 2, 2, 2, 1, 1, 3, 2, 2, 2, 14, 6, 2, 1, 1, 90, 11, 10, 3, 8, 3, 3, 6, 5, 5, 2, 26, 6, 5, 11, 5,
- 3, 3, 19, 1, 11, 6, 8, 7, 2, 3, 6, 4, 176,9, 8, 9, 7, 3, 3, 5, 3, 1, 4, 3, 24, 13, 3, 3, 2, 2, 3, 3, 9, 3, 2, 7, 65, 5, 26, 15, 5,
- 5, 4, 4, 26, 6, 5, 2, 1, 1, 7, 5, 5, 5, 4, 10, 2, 11, 3, 3, 8, 4, 3, 16, 12, 10, 4, 1, 87, 8, 6, 11, 2, 3, 5, 5, 4, 2, 2, 5, 4, 2,
- 5, 2, 1, 1, 6, 5, 11, 10, 3, 3, 3, 3, 5, 3, 1, 1, 3, 6, 9, 3, 2, 2, 1, 1, 1, 1, 1, 36, 2, 3, 2, 2, 2, 7, 6, 4, 2, 2, 2, 3, 3,
- 3, 2, 1, 3, 4, 1, 1, 3, 1, 1, 1, 1, 9, 4, 2, 19, 6, 8, 8, 3, 13, 3, 5, 3, 14, 2, 1, 1, 3, 4, 3, 2, 2, 2, 29, 2, 6, 4, 2, 7, 3,
- 3, 6, 4, 14, 2, 5, 4, 2, 96, 3, 8, 4, 12, 4, 26, 9, 5, 4, 4, 3, 5, 1, 30, 2, 2, 1, 5, 9, 4, 11, 11, 4, 3, 3, 2, 8, 4, 4, 4, 74, 2,
- 21, 5, 4, 2, 4, 4, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 4, 3, 31, 11, 3, 3, 3, 1, 8, 4, 2, 14, 7, 3, 1, 87, 7, 4, 2, 2, 2, 13, 1, 1, 7,
- 4, 4, 3, 54, 18, 15, 15, 13, 2, 2, 3, 1, 5, 1, 1, 4, 4, 2, 8, 2, 2, 2, 2, 18, 3, 2, 2, 1, 19, 2, 6, 1, 8, 5, 3, 20, 9, 3, 5, 31, 4,
- 2, 5, 2, 2, 2, 2, 96, 3, 4, 12, 7, 7, 7, 4, 4, 4, 3, 2, 4, 3, 3, 3, 3, 1, 1, 1, 1, 6, 4, 3, 3, 30, 5, 5, 5, 4, 4, 4, 15, 3, 2,
- 3, 5, 5, 4, 1, 4, 1, 9, 2, 5, 5, 5, 39, 2, 19, 12, 2, 2, 2, 2, 4, 8, 5, 4, 6, 4, 2, 4, 2, 14, 7, 2, 4, 162,27, 1, 12, 9, 3, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 3, 9, 2, 6, 3, 3, 111,111,111,99, 12, 19, 2, 8, 2, 6, 3, 2, 2, 12, 9, 6, 5, 36, 4, 4, 5, 3, 3, 7,
- 2, 1, 2, 66, 3, 1, 6, 2, 5, 1, 1, 15, 3, 2, 1, 5, 2, 2, 3, 17, 2, 14, 6, 5, 5, 5, 5, 4, 6, 5, 5, 2, 3, 2, 49, 4, 2, 5, 2, 2, 19,
- 3, 6, 6, 6, 3, 10, 8, 6, 2, 11, 2, 1, 1, 1, 1, 1, 1, 3, 2, 2, 3, 88, 5, 3, 14, 22, 17, 4, 4, 4, 5, 4, 5, 4, 4, 4, 2, 2, 25, 1, 1,
- 1, 1, 1, 1, 1, 2, 2, 4, 6, 5, 8, 14, 10, 35, 4, 3, 1, 1, 4, 4, 2, 4, 2, 4, 3, 2, 2, 3, 1, 1, 5, 2, 2, 2, 1, 1, 1, 1, 1, 4, 2,
- 2, 2, 19, 3, 2, 11, 5, 5, 4, 3, 1, 23, 3, 3, 3, 2, 7, 5, 5, 5, 2, 4, 3, 2, 17, 4, 3, 3, 3, 6, 2, 4, 14, 9, 184,85, 4, 19, 14, 9, 3,
- 3, 4, 16, 4, 11, 7, 21, 3, 11, 6, 3, 18, 4, 2, 3, 3, 3, 3, 2, 1, 1, 1, 2, 56, 11, 9, 2, 2, 2, 2, 1, 6, 3, 3, 3, 3, 1, 9, 3, 3, 6,
- 2, 4, 2, 2, 2, 6, 2, 8, 3, 15, 6, 3, 1, 20, 8, 3, 3, 2, 1, 3, 19, 9, 7, 1, 5, 4, 5, 17, 5, 2, 2, 4, 4, 2, 2, 2, 2, 1, 6, 12, 6,
+ 11, 1, 3, 2, 3, 23, 2, 15, 9, 9, 7, 1, 5, 1, 1, 1, 1, 6, 2, 2, 2, 3, 7, 3, 39, 24, 3, 3, 2, 2, 2, 4, 3, 3, 2, 2, 7, 3, 1, 7, 3,
+ 4, 2, 37, 10, 1, 2, 4, 1, 1, 1, 3, 5, 3, 1, 3, 2, 4, 4, 4, 3, 3, 1, 1, 1, 58, 4, 2, 3, 5, 3, 1, 1, 5, 2, 2, 6, 2, 1, 1, 2, 3,
+ 9, 9, 25, 12, 1, 5, 2, 1, 4, 8, 2, 2, 3, 3, 1, 22, 5, 4, 1, 2, 2, 2, 5, 3, 2, 1, 1, 102,1, 8, 1, 2, 2, 2, 2, 4, 2, 1, 1, 8, 2,
+ 2, 7, 3, 3, 1, 1, 2, 3, 6, 4, 3, 13, 3, 3, 9, 2, 2, 2, 2, 2, 8, 2, 8, 1, 4, 2, 3, 1, 1, 1, 8, 2, 3, 4, 2, 3, 11, 1, 2, 3, 4,
+ 16, 6, 3, 2, 1, 3, 4, 3, 43, 1, 1, 2, 8, 7, 2, 1, 3, 5, 4, 2, 2, 2, 2, 3, 8, 4, 11, 2, 5, 1, 16, 7, 4, 2, 2, 2, 1, 1, 3, 2, 1,
+ 4, 2, 2, 76, 11, 11, 10, 8, 8, 3, 11, 6, 4, 4, 5, 5, 5, 5, 6, 4, 11, 6, 3, 3, 3, 4, 3, 9, 8, 8, 8, 2, 52, 1, 2, 23, 3, 1, 1, 1, 3,
+ 3, 5, 1, 1, 2, 2, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 7, 7, 1, 1, 5, 21, 7, 3, 8, 4, 3, 2, 3, 2, 45, 2, 3, 7, 3, 13, 5, 11, 4, 3, 2,
+ 2, 1, 2, 2, 2, 20, 2, 1, 1, 8, 6, 3, 4, 3, 2, 1, 1, 10, 5, 4, 8, 1, 2, 4, 26, 18, 1, 1, 4, 24, 8, 3, 3, 4, 4, 2, 12, 5, 4, 2, 2,
+ 1, 60, 2, 1, 1, 4, 2, 6, 30, 4, 7, 6, 3, 3, 5, 2, 6, 4, 11, 3, 2, 3, 1, 3, 3, 52, 4, 4, 1, 1, 4, 6, 1, 5, 2, 15, 1, 5, 3, 14, 13,
+ 2, 9, 3, 30, 6, 4, 2, 4, 2, 2, 2, 3, 4, 2, 1, 1, 1, 11, 4, 88, 4, 14, 14, 13, 3, 10, 8, 4, 4, 4, 4, 4, 4, 1, 6, 5, 34, 1, 1, 3, 13,
+ 12, 12, 12, 10, 5, 3, 1, 10, 5, 3, 3, 4, 1, 5, 2, 6, 1, 4, 6, 3, 9, 1, 4, 2, 243,1, 1, 17, 7, 4, 2, 2, 1, 1, 7, 2, 2, 3, 3, 1, 7,
+ 5, 3, 2, 1, 1, 1, 1, 14, 2, 2, 7, 3, 5, 3, 1, 1, 49, 3, 3, 5, 3, 1, 1, 23, 7, 5, 5, 3, 3, 4, 3, 2, 29, 7, 15, 4, 7, 28, 7, 6, 6,
+ 6, 6, 2, 5, 4, 2, 2, 1, 15, 5, 3, 25, 4, 4, 8, 4, 4, 1, 4, 3, 2, 3, 3, 3, 2, 6, 6, 3, 14, 2, 2, 1, 2, 1, 2, 4, 2, 2, 2, 182,30,
+ 2, 13, 12, 1, 3, 3, 3, 3, 3, 1, 4, 3, 25, 3, 3, 3, 14, 13, 4, 6, 5, 3, 1, 1, 1, 1, 1, 2, 14, 3, 2, 3, 15, 10, 3, 7, 37, 4, 1, 2, 2,
+ 2, 10, 10, 4, 3, 13, 11, 10, 2, 3, 7, 4, 2, 1, 1, 1, 1, 33, 4, 2, 18, 4, 1, 1, 1, 10, 10, 8, 3, 1, 1, 5, 13, 8, 4, 2, 2, 2, 1, 204,19,
+ 6, 5, 3, 3, 1, 1, 7, 2, 2, 2, 2, 29, 4, 1, 1, 2, 2, 2, 2, 9, 2, 2, 5, 3, 4, 2, 1, 1, 1, 2, 2, 32, 3, 3, 1, 3, 3, 4, 3, 10, 6,
+ 5, 5, 5, 2, 14, 7, 4, 3, 4, 3, 32, 3, 2, 2, 2, 3, 2, 2, 2, 2, 10, 3, 4, 5, 2, 2, 24, 3, 16, 7, 5, 3, 2, 2, 6, 1, 2, 2, 2, 3, 2,
+ 3, 30, 4, 2, 3, 12, 8, 4, 1, 1, 4, 1, 1, 3, 3, 2, 39, 2, 11, 11, 8, 3, 3, 1, 1, 1, 1, 14, 6, 4, 3, 3, 1, 2, 9, 9, 5, 5, 4, 3, 2,
+ 26, 3, 3, 3, 2, 1, 1, 17, 9, 4, 5, 2, 2, 2, 2, 1, 1, 22, 11, 1, 3, 1, 4, 1, 44, 2, 16, 14, 5, 3, 3, 10, 3, 3, 1, 1, 4, 4, 4, 3, 3,
+ 10, 2, 2, 6, 4, 2, 8, 3, 3, 2, 2, 2, 2, 1, 18, 4, 3, 7, 3, 2, 2, 35, 9, 4, 2, 3, 8, 7, 6, 3, 8, 9, 3, 3, 4, 1, 9, 1, 1, 1, 1,
+ 7, 1, 3, 1, 1, 1, 11, 4, 4, 46, 6, 5, 5, 5, 5, 5, 3, 3, 2, 2, 18, 14, 2, 16, 8, 7, 7, 7, 7, 2, 3, 1, 1, 1, 149,20, 6, 6, 10, 6, 2,
+ 53, 12, 12, 6, 3, 32, 6, 5, 16, 14, 14, 6, 4, 3, 4, 5, 4, 8, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 18, 2, 1, 9, 2, 3, 2, 14, 5, 3,
+ 3, 5, 2, 2, 2, 4, 16, 3, 2, 4, 4, 4, 3, 1, 2, 3, 36, 2, 5, 5, 3, 5, 2, 15, 3, 3, 2, 1, 1, 1, 1, 10, 10, 10, 5, 3, 200,38, 8, 8, 5,
+ 2, 8, 6, 6, 6, 3, 5, 2, 40, 15, 12, 12, 4, 4, 4, 11, 2, 2, 9, 2, 3, 67, 9, 4, 25, 3, 2, 2, 2, 2, 5, 4, 4, 3, 2, 2, 11, 4, 4, 4, 6,
+ 2, 47, 1, 6, 8, 2, 4, 13, 5, 6, 6, 3, 51, 15, 3, 3, 1, 1, 1, 1, 1, 2, 6, 2, 14, 4, 1, 1, 1, 1, 4, 4, 3, 3, 2, 3, 9, 8, 5, 4, 2,
+ 11, 4, 2, 2, 4, 14, 4, 5, 1, 35, 8, 5, 5, 2, 2, 1, 1, 5, 1, 1, 1, 2, 2, 12, 2, 1, 1, 1, 10, 4, 3, 5, 3, 1, 1, 1, 1, 3, 1, 1, 4,
+ 1, 1, 1, 1, 1, 45, 24, 1, 3, 4, 12, 5, 3, 2, 5, 4, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 7, 2, 3, 3, 1, 148,22, 3, 3, 12, 10, 4, 4, 3,
+ 6, 1, 2, 3, 3, 3, 3, 4, 3, 1, 15, 1, 1, 8, 8, 8, 3, 3, 3, 19, 8, 6, 6, 5, 5, 27, 7, 1, 1, 6, 4, 1, 1, 1, 3, 3, 1, 1, 1, 16, 16,
+ 15, 3, 20, 6, 3, 2, 2, 2, 6, 2, 2, 2, 2, 9, 3, 2, 3, 2, 5, 3, 3, 3, 1, 7, 4, 2, 2, 3, 1, 1, 1, 34, 5, 3, 2, 2, 2, 2, 1, 6, 2,
+ 3, 8, 3, 3, 3, 3, 1, 1, 1, 2, 5, 3, 2, 2, 2, 1, 4, 2, 106,9, 2, 2, 3, 8, 9, 1, 3, 1, 2, 1, 1, 1, 1, 1, 5, 1, 50, 15, 6, 5, 4,
+ 4, 2, 7, 3, 2, 3, 5, 2, 2, 1, 1, 1, 6, 2, 2, 1, 17, 11, 10, 5, 5, 5, 5, 5, 35, 4, 5, 4, 2, 1, 1, 5, 3, 6, 2, 1, 3, 2, 1, 1, 1,
+ 117,5, 2, 4, 9, 3, 2, 2, 5, 3, 7, 4, 4, 2, 2, 2, 2, 2, 2, 7, 4, 5, 5, 1, 5, 8, 2, 4, 1, 1, 1, 11, 4, 10, 5, 2, 28, 7, 4, 1, 3,
+ 2, 1, 6, 2, 1, 55, 2, 4, 38, 23, 2, 2, 1, 1, 1, 1, 1, 18, 15, 14, 11, 9, 9, 5, 4, 3, 2, 2, 6, 6, 4, 2, 1, 4, 3, 3, 3, 99, 4, 2, 11,
+ 8, 7, 4, 16, 5, 6, 4, 2, 38, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 2, 2, 2, 2, 17, 7, 6, 1, 1, 6, 2, 1, 1, 11, 7, 5, 7, 4, 3, 2,
+ 2, 2, 2, 2, 4, 2, 8, 6, 1, 114,11, 1, 1, 4, 3, 3, 2, 2, 7, 12, 2, 2, 1, 3, 12, 3, 3, 40, 8, 2, 2, 8, 3, 14, 3, 3, 7, 5, 3, 3, 3,
+ 2, 2, 3, 3, 8, 2, 144,54, 18, 13, 3, 4, 4, 2, 1, 2, 10, 5, 6, 2, 2, 1, 1, 23, 7, 7, 7, 7, 6, 7, 2, 2, 1, 26, 3, 10, 5, 12, 10, 7, 2,
+ 3, 8, 3, 14, 2, 5, 2, 2, 1, 1, 1, 1, 1, 6, 2, 3, 2, 2, 127,17, 3, 6, 2, 2, 1, 9, 33, 8, 3, 3, 4, 4, 3, 10, 3, 13, 2, 3, 2, 1, 1,
+ 10, 7, 2, 4, 1, 1, 14, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 5, 2, 1, 1, 1, 2, 1, 1, 46, 4, 1, 1, 4, 2, 1, 3, 13, 3, 3, 3, 4, 4, 2,
+ 1, 1, 5, 2, 5, 1, 1, 1, 1, 4, 3, 56, 6, 1, 1, 2, 1, 4, 3, 3, 10, 2, 4, 2, 2, 2, 1, 1, 12, 12, 9, 7, 4, 5, 4, 8, 5, 1, 4, 4, 3,
+ 3, 2, 2, 2, 2, 2, 76, 3, 31, 27, 26, 2, 7, 4, 4, 10, 10, 1, 1, 1, 1, 1, 1, 5, 3, 1, 7, 4, 4, 17, 3, 2, 9, 2, 2, 68, 7, 4, 4, 4, 4,
+ 4, 4, 4, 3, 3, 1, 1, 7, 7, 7, 7, 6, 3, 3, 3, 1, 1, 1, 1, 4, 18, 18, 6, 6, 7, 7, 7, 7, 5, 5, 7, 5, 1, 9, 5, 3, 3, 3, 3, 2, 2,
+ 4, 1, 1, 10, 5, 4, 1, 2, 2, 122,7, 3, 6, 5, 5, 9, 4, 4, 10, 10, 9, 6, 6, 2, 8, 2, 2, 6, 6, 51, 2, 1, 3, 3, 16, 1, 1, 4, 10, 2, 8,
+ 8, 8, 2, 3, 3, 2, 2, 2, 12, 8, 5, 8, 8, 8, 18, 11, 3, 2, 2, 2, 4, 3, 2, 2, 7, 7, 7, 7, 7, 8, 7, 6, 1, 2, 20, 3, 5, 5, 4, 4, 4,
+ 1, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 6, 1, 3, 3, 3, 3, 13, 4, 3, 3, 3, 1, 1, 9, 5,
+ 5, 28, 3, 2, 6, 2, 2, 2, 2, 1, 3, 7, 7, 2, 3, 3, 5, 5, 4, 21, 4, 3, 3, 3, 3, 1, 16, 5, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 8, 8,
+ 3, 2, 5, 2, 3, 3, 3, 3, 6, 13, 4, 8, 3, 2, 2, 23, 8, 4, 3, 3, 3, 3, 3, 7, 7, 7, 3, 5, 5, 4, 22, 5, 5, 2, 12, 5, 4, 4, 3, 3, 3,
+ 3, 3, 3, 3, 74, 16, 9, 5, 4, 1, 1, 6, 6, 6, 20, 3, 10, 9, 3, 7, 7, 2, 2, 2, 13, 11, 6, 5, 2, 2, 2, 12, 11, 3, 2, 2, 6, 6, 2, 2, 2,
+ 2, 2, 2, 2, 4, 5, 8, 8, 5, 5, 5, 5, 3, 20, 11, 4, 4, 3, 2, 2, 4, 4, 4, 4, 4, 8, 8, 8, 54, 3, 1, 1, 2, 2, 2, 2, 22, 5, 5, 8, 3,
+ 11, 1, 13, 5, 5, 5, 5, 6, 2, 84, 14, 2, 6, 3, 2, 4, 23, 10, 9, 5, 13, 7, 7, 5, 5, 5, 6, 27, 7, 3, 3, 14, 11, 11, 11, 3, 3, 3, 7, 7, 7,
+ 4, 1, 44, 5, 5, 2, 1, 1, 1, 4, 5, 2, 2, 16, 2, 1, 2, 4, 3, 3, 4, 4, 3, 110,6, 2, 2, 44, 2, 4, 5, 2, 26, 7, 6, 11, 9, 4, 3, 5, 2,
+ 6, 5, 2, 45, 8, 7, 19, 8, 2, 1, 1, 13, 8, 4, 4, 8, 2, 5, 5, 2, 2, 2, 12, 6, 4, 4, 4, 1, 1, 1, 11, 3, 6, 3, 38, 2, 1, 2, 6, 2, 2,
+ 3, 1, 1, 1, 1, 1, 2, 1, 4, 2, 2, 2, 2, 6, 3, 3, 1, 1, 3, 3, 2, 1, 1, 2, 1, 1, 3, 3, 2, 10, 7, 1, 1, 1, 6, 6, 1, 1, 1, 3, 3,
+ 3, 1, 1, 1, 9, 4, 2, 3, 2, 22, 1, 1, 1, 1, 2, 3, 2, 2, 1, 1, 1, 8, 1, 1, 1, 1, 1, 7, 7, 6, 12, 3, 2, 2, 1, 1, 1, 1, 1, 1, 4,
+ 2, 2, 2, 2, 1, 1, 2, 6, 65, 11, 4, 3, 9, 4, 9, 3, 3, 3, 4, 21, 4, 4, 3, 4, 2, 3, 2, 2, 2, 68, 1, 3, 4, 2, 2, 25, 9, 3, 18, 12, 11,
+ 3, 4, 4, 4, 11, 9, 9, 9, 9, 5, 3, 42, 4, 3, 2, 2, 1, 1, 16, 12, 5, 1, 5, 4, 2, 2, 34, 2, 1, 3, 3, 2, 12, 2, 2, 6, 1, 77, 10, 2, 2,
+ 2, 2, 2, 2, 7, 2, 3, 20, 4, 4, 7, 3, 2, 3, 2, 2, 10, 8, 3, 3, 2, 3, 1, 1, 1, 1, 5, 2, 19, 2, 1, 2, 4, 3, 1, 4, 16, 5, 3, 2, 3,
+ 2, 2, 14, 3, 2, 1, 1, 114,3, 6, 3, 3, 4, 1, 16, 2, 3, 2, 2, 3, 4, 2, 1, 11, 1, 1, 1, 1, 7, 30, 9, 6, 5, 2, 6, 3, 3, 4, 2, 5, 6,
+ 2, 4, 11, 11, 9, 8, 132,15, 1, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 5, 6, 3, 3, 23, 8, 5, 5, 8, 6, 6, 6, 4, 3, 2, 2, 69, 2, 2, 59, 13, 9,
+ 3, 3, 10, 4, 22, 10, 3, 3, 5, 2, 4, 3, 2, 2, 6, 2, 1, 209,3, 3, 49, 4, 4, 7, 8, 6, 17, 6, 6, 2, 1, 1, 1, 4, 3, 2, 3, 23, 4, 6, 4,
+ 13, 1, 3, 2, 13, 5, 10, 6, 1, 1, 4, 5, 3, 2, 32, 8, 2, 2, 2, 2, 1, 1, 14, 8, 5, 4, 2, 16, 1, 5, 4, 16, 1, 3, 2, 1, 1, 1, 72, 3, 10,
+ 2, 5, 4, 4, 5, 3, 2, 2, 8, 3, 6, 2, 4, 18, 1, 1, 3, 2, 2, 3, 3, 23, 5, 2, 2, 2, 2, 7, 3, 3, 1, 1, 1, 1, 196,13, 2, 8, 3, 3, 4,
+ 14, 1, 3, 3, 3, 3, 22, 6, 2, 10, 5, 3, 18, 8, 1, 5, 5, 3, 17, 3, 4, 2, 1, 20, 5, 7, 6, 4, 1, 1, 1, 11, 7, 24, 7, 3, 2, 3, 2, 5, 4,
+ 2, 2, 3, 1, 11, 5, 4, 2, 2, 2, 38, 5, 5, 4, 1, 1, 9, 1, 7, 2, 1, 34, 4, 1, 3, 14, 5, 4, 1, 90, 3, 22, 11, 9, 1, 6, 6, 2, 2, 4, 27,
+ 4, 15, 3, 2, 5, 4, 4, 2, 3, 3, 4, 6, 4, 3, 3, 2, 16, 2, 11, 2, 1, 1, 1, 3, 1, 105,2, 9, 8, 1, 1, 7, 2, 3, 62, 7, 3, 3, 3, 3, 3,
+ 8, 6, 5, 6, 1, 3, 3, 3, 1, 2, 9, 4, 3, 2, 7, 1, 2, 3, 6, 2, 9, 2, 1, 1, 2, 2, 1, 1, 1, 10, 2, 2, 1, 12, 6, 3, 1, 242,4, 14, 4,
+ 6, 3, 13, 10, 4, 94, 3, 6, 2, 68, 59, 5, 9, 6, 3, 5, 3, 3, 3, 3, 2, 6, 2, 4, 3, 3, 4, 2, 11, 10, 14, 7, 2, 2, 18, 14, 11, 10, 4, 3, 5,
+ 11, 9, 3, 3, 7, 5, 5, 1, 7, 3, 3, 21, 4, 3, 3, 4, 3, 3, 5, 145,44, 9, 2, 2, 33, 3, 6, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 6, 4, 4,
+ 4, 4, 10, 1, 1, 1, 3, 2, 2, 10, 5, 3, 2, 22, 2, 14, 6, 2, 2, 2, 16, 6, 3, 5, 1, 2, 1, 91, 3, 3, 11, 2, 6, 2, 8, 7, 4, 4, 8, 8, 2,
+ 18, 13, 3, 2, 7, 4, 8, 3, 18, 15, 1, 5, 2, 2, 5, 4, 1, 1, 1, 1, 108,1, 1, 2, 4, 2, 2, 5, 5, 3, 2, 3, 2, 5, 2, 1, 13, 6, 8, 17, 5,
+ 9, 1, 1, 3, 6, 2, 5, 9, 3, 2, 1, 7, 5, 2, 1, 1, 1, 90, 2, 6, 4, 1, 3, 12, 4, 3, 2, 1, 1, 4, 2, 33, 1, 1, 1, 2, 1, 3, 3, 2, 2,
+ 11, 6, 3, 3, 6, 9, 8, 4, 5, 2, 2, 20, 3, 2, 2, 2, 3, 1, 1, 2, 2, 2, 11, 1, 1, 1, 1, 1, 1, 2, 1, 15, 1, 1, 5, 1, 1, 3, 2, 2, 1,
+ 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 15, 10, 1, 1, 4, 2, 73, 9, 2, 8, 3, 2, 10, 3, 12, 2, 4, 2, 9, 2, 8, 4, 3, 3, 3, 84, 14, 7, 4,
+ 3, 23, 6, 1, 1, 1, 9, 2, 6, 3, 3, 3, 1, 1, 1, 26, 1, 4, 3, 3, 4, 2, 3, 1, 8, 3, 46, 6, 3, 4, 20, 6, 2, 3, 1, 1, 1, 2, 4, 4, 4,
+ 4, 41, 7, 3, 9, 8, 3, 6, 1, 2, 2, 2, 4, 37, 2, 2, 22, 7, 4, 3, 4, 32, 8, 5, 2, 5, 5, 10, 5, 9, 3, 2, 37, 6, 1, 25, 2, 2, 2, 2, 2,
+ 4, 2, 1, 1, 3, 2, 44, 9, 5, 3, 1, 1, 4, 3, 12, 7, 2, 2, 75, 11, 2, 1, 15, 5, 3, 2, 1, 2, 2, 2, 6, 2, 2, 2, 2, 2, 3, 2, 2, 2, 11,
+ 3, 2, 3, 5, 3, 15, 4, 2, 4, 162,12, 2, 1, 4, 2, 2, 1, 13, 6, 5, 3, 2, 11, 2, 4, 2, 2, 7, 2, 3, 2, 1, 10, 3, 2, 1, 5, 3, 4, 22, 10,
+ 3, 2, 4, 4, 3, 5, 4, 6, 2, 2, 2, 4, 20, 6, 2, 4, 5, 2, 1, 1, 4, 2, 18, 2, 3, 5, 2, 6, 2, 5, 3, 2, 1, 1, 8, 2, 2, 2, 1, 56, 9,
+ 3, 8, 4, 21, 3, 2, 9, 2, 3, 2, 9, 8, 2, 5, 3, 3, 1, 9, 3, 4, 4, 3, 134,30, 3, 3, 10, 4, 2, 4, 1, 5, 12, 2, 2, 5, 3, 12, 3, 7, 4,
+ 2, 9, 3, 4, 10, 2, 2, 3, 12, 4, 3, 6, 1, 1, 6, 2, 2, 2, 2, 2, 2, 4, 1, 1, 51, 4, 7, 4, 3, 5, 3, 2, 3, 5, 4, 2, 2, 18, 5, 4, 5,
+ 3, 2, 36, 10, 10, 3, 3, 5, 3, 4, 1, 2, 1, 7, 11, 4, 3, 6, 3, 3, 4, 2, 2, 3, 9, 2, 3, 3, 3, 46, 14, 2, 1, 1, 8, 5, 1, 13, 11, 10, 5,
+ 3, 3, 8, 2, 4, 1, 1, 1, 5, 5, 2, 3, 102,7, 2, 6, 3, 10, 2, 9, 4, 3, 2, 1, 1, 9, 6, 6, 4, 2, 22, 15, 10, 7, 3, 1, 4, 4, 2, 2, 4,
+ 1, 1, 1, 1, 20, 1, 1, 1, 2, 1, 3, 3, 3, 1, 1, 1, 2, 3, 1, 1, 4, 3, 1, 1, 1, 30, 2, 1, 1, 1, 1, 14, 3, 1, 1, 5, 1, 1, 1, 1, 1,
+ 1, 1, 4, 1, 1, 1, 3, 2, 2, 7, 3, 3, 3, 3, 1, 1, 1, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 9, 4, 1, 1, 1, 36, 4, 27, 26, 10, 7, 8, 1, 3, 3, 92, 2, 3, 1, 2, 23, 7, 2, 2, 4, 3, 4, 3, 2, 1, 1, 18, 8, 4, 4, 4, 3,
+ 2, 5, 2, 21, 21, 2, 2, 4, 3, 3, 2, 2, 2, 4, 4, 4, 3, 78, 8, 5, 4, 45, 1, 4, 2, 2, 16, 13, 4, 4, 7, 2, 3, 2, 5, 10, 2, 2, 32, 2, 5,
+ 2, 3, 11, 8, 2, 2, 3, 2, 6, 6, 4, 3, 3, 3, 3, 89, 6, 14, 7, 2, 2, 1, 37, 4, 2, 27, 8, 3, 6, 3, 4, 2, 2, 4, 5, 10, 6, 8, 4, 3, 3,
+ 2, 184,20, 6, 1, 1, 4, 4, 4, 4, 4, 12, 12, 12, 9, 8, 5, 5, 4, 1, 37, 5, 3, 11, 1, 3, 1, 1, 5, 2, 2, 3, 3, 3, 5, 2, 1, 1, 11, 1, 1,
+ 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 46, 2, 14, 1, 9, 1, 1, 3, 4, 10, 3, 2, 3, 3, 14, 2, 2, 2, 2, 2, 10, 10, 9, 6, 1, 39, 1, 1, 7, 1,
+ 1, 18, 17, 17, 2, 11, 5, 3, 2, 4, 2, 2, 2, 1, 1, 4, 3, 3, 10, 9, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 6, 2, 2,
+ 2, 2, 2, 2, 2, 2, 242,2, 1, 1, 20, 12, 8, 4, 3, 2, 2, 27, 13, 2, 3, 2, 2, 2, 3, 2, 5, 38, 4, 4, 1, 2, 21, 2, 2, 3, 3, 4, 4, 47, 1,
+ 1, 3, 4, 5, 5, 4, 7, 2, 2, 4, 18, 9, 9, 4, 1, 9, 2, 3, 22, 3, 5, 4, 3, 7, 7, 3, 6, 6, 5, 3, 5, 2, 5, 6, 4, 7, 2, 2, 21, 4, 4,
+ 4, 15, 15, 14, 9, 7, 6, 1, 1, 1, 2, 2, 19, 16, 15, 14, 1, 1, 5, 3, 3, 3, 30, 6, 4, 3, 2, 5, 2, 1, 1, 5, 1, 3, 2, 61, 2, 1, 1, 1, 1,
+ 1, 2, 40, 1, 13, 9, 9, 4, 1, 2, 1, 1, 1, 11, 6, 2, 4, 4, 4, 2, 2, 5, 3, 5, 5, 4, 2, 8, 4, 3, 3, 3, 1, 1, 1, 1, 1, 113,5, 2, 2,
+ 2, 2, 2, 12, 4, 6, 3, 31, 11, 1, 3, 2, 5, 4, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 4, 11, 5, 4, 3, 3, 4, 19, 3, 3, 2, 2, 2, 2, 5, 3, 3,
+ 2, 1, 1, 6, 5, 4, 2, 1, 1, 1, 7, 7, 7, 3, 3, 3, 3, 50, 2, 5, 1, 1, 2, 2, 10, 6, 5, 20, 6, 4, 2, 2, 1, 3, 3, 4, 2, 2, 2, 207,4,
+ 35, 29, 12, 4, 5, 1, 3, 3, 4, 3, 6, 2, 2, 11, 5, 2, 3, 3, 4, 30, 9, 8, 1, 1, 1, 2, 4, 2, 17, 15, 3, 3, 2, 7, 3, 1, 16, 2, 2, 2, 2,
+ 2, 9, 5, 3, 26, 2, 1, 1, 5, 8, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 4, 2, 1, 1, 3, 3, 2, 1, 8, 3, 3, 51, 2, 2, 3, 3, 3, 30, 4, 22,
+ 7, 2, 4, 5, 4, 3, 3, 2, 1, 3, 1, 2, 3, 2, 1, 2, 2, 1, 1, 6, 2, 2, 14, 2, 2, 2, 2, 10, 9, 9, 1, 35, 5, 3, 3, 3, 3, 3, 2, 2, 2,
+ 2, 8, 1, 3, 1, 1, 3, 2, 5, 5, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 41, 6, 6, 6, 6, 6, 2, 2, 2, 2, 1, 1, 5, 5, 3, 4, 5, 2, 1, 1, 1,
+ 4, 3, 3, 3, 3, 2, 1, 3, 23, 7, 1, 2, 1, 1, 8, 1, 1, 6, 3, 2, 5, 2, 24, 8, 6, 2, 1, 4, 3, 7, 3, 4, 1, 152,8, 4, 4, 4, 70, 70, 5,
+ 5, 57, 11, 7, 3, 42, 1, 1, 1, 7, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 5, 4, 5, 4, 4, 4, 4, 4, 1, 1, 1,
+ 8, 2, 2, 2, 2, 2, 4, 4, 6, 4, 2, 2, 2, 1, 2, 1, 1, 1, 4, 1, 1, 1, 1, 7, 4, 4, 2, 4, 3, 3, 10, 9, 9, 8, 4, 17, 7, 4, 2, 2, 3,
+ 3, 3, 5, 5, 5, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 9, 9, 4, 5, 4, 17, 4, 1, 3, 1, 4, 3, 3, 2, 12, 4, 2, 2, 1, 6, 5, 2,
+ 1, 94, 11, 5, 7, 5, 3, 4, 2, 1, 3, 3, 8, 7, 7, 7, 5, 15, 4, 3, 3, 3, 2, 8, 5, 1, 1, 2, 2, 16, 12, 6, 6, 6, 5, 1, 1, 1, 1, 14, 2,
+ 2, 4, 4, 124,9, 2, 3, 1, 1, 47, 3, 2, 1, 15, 7, 4, 2, 16, 6, 3, 3, 3, 3, 41, 2, 4, 3, 2, 2, 13, 11, 2, 2, 1, 3, 3, 7, 5, 2, 2, 5,
+ 1, 4, 2, 8, 2, 2, 4, 2, 1, 3, 22, 4, 1, 1, 1, 7, 4, 2, 3, 4, 2, 26, 2, 4, 5, 3, 6, 3, 2, 8, 4, 3, 40, 6, 1, 1, 3, 9, 2, 1, 2,
+ 1, 4, 2, 2, 3, 2, 2, 6, 2, 7, 1, 11, 4, 4, 27, 7, 4, 17, 3, 3, 2, 9, 1, 15, 6, 4, 3, 3, 8, 5, 2, 7, 1, 2, 36, 4, 4, 4, 3, 17, 2,
+ 2, 7, 5, 4, 2, 1, 1, 96, 29, 4, 2, 18, 1, 1, 2, 7, 6, 6, 6, 2, 26, 5, 3, 5, 4, 4, 4, 4, 11, 1, 3, 5, 5, 5, 4, 1, 7, 1, 5, 10, 5,
+ 3, 2, 1, 2, 1, 1, 18, 6, 1, 3, 3, 2, 2, 2, 6, 5, 3, 4, 3, 43, 9, 5, 2, 28, 3, 9, 8, 5, 4, 6, 4, 3, 2, 2, 59, 11, 2, 8, 18, 7, 7,
+ 10, 9, 4, 5, 3, 6, 5, 3, 6, 8, 40, 11, 3, 3, 14, 2, 6, 8, 4, 2, 3, 14, 3, 7, 6, 5, 5, 70, 6, 5, 5, 2, 5, 1, 1, 1, 13, 12, 10, 9, 1,
+ 9, 8, 4, 4, 4, 14, 3, 3, 10, 10, 5, 9, 3, 3, 5, 5, 4, 4, 4, 8, 4, 4, 6, 2, 2, 2, 11, 9, 1, 1, 1, 1, 24, 5, 6, 6, 9, 4, 4, 4, 3,
+ 3, 3, 3, 3, 1, 1, 1, 2, 90, 15, 2, 3, 3, 5, 5, 5, 2, 4, 1, 2, 2, 2, 2, 1, 8, 7, 7, 7, 10, 4, 2, 5, 5, 8, 24, 7, 6, 2, 4, 9, 4,
+ 5, 11, 5, 5, 5, 5, 2, 4, 1, 1, 8, 8, 8, 2, 6, 6, 2, 2, 4, 4, 4, 100,6, 5, 27, 12, 8, 8, 4, 8, 3, 6, 4, 3, 37, 4, 1, 2, 2, 2, 1,
+ 1, 2, 1, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 7, 6, 3, 4, 3, 3, 1, 6, 4, 2, 6, 6, 1, 26, 17, 16, 9, 18, 1, 1, 1, 3, 9,
+ 9, 8, 7, 1, 120,9, 2, 4, 2, 2, 1, 1, 37, 2, 2, 2, 23, 5, 2, 2, 4, 4, 5, 4, 4, 3, 2, 3, 11, 11, 10, 34, 7, 5, 4, 19, 4, 3, 6, 5, 5,
+ 10, 7, 6, 3, 3, 3, 2, 9, 9, 1, 11, 5, 5, 4, 1, 1, 10, 10, 8, 6, 3, 2, 23, 7, 6, 14, 5, 5, 5, 5, 2, 2, 5, 2, 1, 1, 1, 18, 3, 5, 5,
+ 4, 1, 1, 1, 2, 20, 5, 1, 1, 4, 3, 1, 3, 3, 1, 1, 1, 5, 5, 5, 5, 32, 3, 16, 7, 2, 6, 6, 5, 12, 10, 7, 2, 1, 37, 2, 1, 1, 6, 3, 3,
+ 3, 3, 8, 4, 8, 123,8, 1, 1, 3, 3, 32, 3, 26, 4, 4, 4, 9, 9, 9, 8, 11, 1, 4, 2, 2, 2, 6, 6, 5, 5, 5, 16, 3, 3, 8, 7, 6, 42, 14, 3,
+ 6, 4, 4, 3, 16, 1, 5, 4, 4, 4, 4, 3, 5, 1, 3, 3, 2, 8, 6, 6, 6, 6, 1, 30, 8, 6, 6, 6, 1, 19, 8, 8, 8, 7, 7, 7, 7, 5, 5, 7, 4,
+ 2, 3, 7, 1, 4, 4, 14, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 146,7, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 5, 3, 15, 8,
+ 2, 2, 4, 4, 4, 2, 2, 7, 3, 72, 7, 2, 2, 2, 10, 9, 6, 6, 2, 3, 3, 3, 7, 2, 2, 5, 5, 3, 3, 3, 2, 2, 2, 1, 1, 7, 7, 3, 3, 2, 15,
+ 5, 5, 5, 5, 4, 4, 6, 3, 3, 13, 2, 5, 5, 3, 3, 6, 4, 3, 1, 1, 4, 11, 3, 4, 3, 2, 19, 7, 5, 5, 3, 7, 2, 3, 1, 2, 65, 65, 29, 18, 12,
+ 5, 11, 4, 4, 1, 1, 1, 3, 3, 2, 2, 32, 1, 1, 5, 2, 2, 2, 3, 2, 7, 5, 8, 7, 6, 6, 6, 28, 1, 4, 4, 12, 4, 2, 1, 2, 12, 5, 2, 1, 1,
+ 2, 8, 1, 1, 3, 3, 15, 3, 3, 2, 25, 3, 2, 7, 7, 3, 2, 2, 1, 1, 1, 2, 3, 3, 1, 9, 2, 1, 1, 6, 2, 2, 2, 6, 49, 24, 6, 3, 5, 1, 7,
+ 4, 3, 1, 2, 1, 1, 3, 3, 2, 7, 4, 1, 19, 8, 7, 6, 2, 4, 3, 11, 2, 2, 1, 5, 3, 3, 1, 1, 25, 4, 1, 2, 8, 6, 5, 7, 4, 19, 1, 4, 3,
+ 5, 5, 4, 3, 2, 23, 8, 4, 3, 1, 1, 4, 2, 6, 2, 12, 2, 1, 3, 9, 3, 3, 2, 1, 1, 1, 10, 2, 7, 7, 5, 3, 2, 1, 9, 7, 7, 2, 2, 2, 1,
+ 5, 4, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 6, 2, 1, 4, 2, 2, 2, 102,44, 2, 1, 1, 1, 14, 9, 3, 2, 4, 2, 12, 7, 3, 7, 23, 2, 3, 14,
+ 5, 4, 2, 2, 24, 5, 3, 1, 1, 11, 3, 3, 2, 4, 3, 7, 2, 1, 2, 4, 3, 2, 2, 2, 13, 3, 1, 1, 2, 2, 3, 24, 3, 7, 9, 2, 1, 2, 2, 2, 2,
+ 2, 2, 5, 2, 2, 15, 4, 5, 4, 3, 2, 4, 4, 6, 1, 3, 2, 2, 2, 2, 2, 77, 13, 1, 4, 3, 24, 2, 2, 6, 3, 2, 10, 5, 5, 1, 1, 14, 9, 5, 3,
+ 3, 3, 2, 5, 13, 3, 3, 3, 4, 3, 2, 17, 16, 6, 3, 10, 1, 1, 3, 2, 2, 47, 11, 4, 19, 2, 10, 5, 5, 5, 5, 1, 1, 7, 2, 3, 2, 2, 3, 130,27,
+ 10, 6, 6, 2, 4, 3, 3, 2, 2, 2, 42, 4, 4, 4, 4, 1, 1, 5, 11, 1, 1, 3, 2, 6, 3, 2, 3, 3, 12, 9, 9, 11, 1, 2, 22, 6, 4, 2, 9, 6, 5,
+ 3, 1, 3, 7, 3, 3, 2, 3, 3, 1, 1, 1, 1, 140,6, 15, 1, 9, 3, 4, 3, 1, 1, 1, 1, 6, 6, 6, 4, 2, 56, 6, 5, 13, 4, 8, 2, 2, 10, 4, 4,
+ 4, 2, 19, 6, 4, 2, 13, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 8, 1, 2, 8, 1, 1, 2, 2, 5, 3, 2, 4, 2, 2, 14, 4,
+ 4, 2, 3, 1, 1, 4, 4, 4, 4, 170,5, 8, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 6, 4, 2, 2, 14, 12, 12, 8, 2, 2, 2, 2, 2, 14, 3, 4, 1, 1,
+ 1, 2, 4, 1, 2, 2, 5, 15, 1, 1, 11, 3, 3, 3, 5, 4, 2, 2, 1, 1, 1, 1, 1, 1, 66, 5, 3, 2, 3, 2, 4, 3, 3, 40, 2, 1, 6, 1, 1, 1, 1,
+ 1, 1, 1, 2, 1, 1, 2, 11, 6, 1, 1, 1, 7, 1, 1, 1, 2, 1, 3, 1, 15, 1, 1, 5, 4, 4, 7, 3, 2, 2, 9, 2, 1, 2, 2, 2, 1, 1, 1, 2, 1,
+ 2, 2, 80, 7, 6, 10, 9, 9, 39, 3, 3, 20, 20, 20, 17, 6, 5, 2, 3, 6, 8, 8, 7, 7, 7, 1, 1, 1, 1, 1, 1, 3, 5, 1, 1, 121,15, 3, 4, 25, 6,
+ 2, 10, 5, 5, 72, 2, 2, 2, 6, 4, 5, 4, 3, 3, 4, 7, 2, 2, 2, 2, 8, 3, 10, 4, 3, 13, 5, 4, 4, 3, 3, 5, 9, 9, 8, 6, 1, 35, 7, 7, 7,
+ 4, 2, 2, 9, 3, 2, 4, 3, 2, 2, 3, 22, 12, 6, 6, 5, 5, 4, 6, 2, 33, 7, 2, 9, 3, 2, 5, 4, 3, 2, 2, 3, 2, 3, 34, 7, 3, 3, 3, 3, 4,
+ 5, 5, 5, 2, 14, 9, 9, 6, 2, 2, 3, 3, 3, 3, 3, 3, 110,11, 4, 4, 4, 7, 36, 5, 14, 8, 6, 5, 4, 2, 8, 8, 6, 5, 5, 5, 2, 4, 4, 8, 7,
+ 7, 7, 6, 1, 17, 13, 5, 6, 19, 7, 4, 12, 8, 8, 3, 5, 3, 3, 3, 3, 3, 3, 8, 6, 5, 2, 2, 2, 2, 2, 8, 1, 1, 5, 4, 46, 17, 15, 15, 8, 4,
+ 13, 13, 7, 4, 4, 10, 2, 2, 1, 28, 10, 7, 7, 7, 4, 11, 8, 8, 8, 3, 4, 4, 3, 25, 4, 3, 3, 5, 10, 10, 7, 6, 4, 3, 3, 3, 5, 3, 2, 2, 23,
+ 2, 2, 7, 2, 2, 2, 5, 1, 4, 4, 4, 1, 1, 1, 3, 1, 1, 168,17, 13, 6, 7, 5, 4, 4, 2, 52, 10, 10, 5, 8, 8, 6, 4, 5, 3, 10, 7, 3, 3, 19,
+ 15, 5, 5, 9, 9, 9, 9, 3, 4, 6, 6, 41, 7, 3, 3, 3, 30, 9, 9, 3, 11, 7, 6, 6, 4, 29, 5, 5, 5, 5, 3, 7, 7, 12, 5, 4, 20, 18, 18, 18, 9,
+ 6, 6, 2, 2, 2, 3, 1, 2, 2, 2, 2, 114,3, 31, 1, 1, 1, 1, 1, 19, 7, 9, 7, 11, 6, 6, 3, 3, 3, 11, 9, 3, 5, 5, 5, 9, 5, 5, 3, 2, 60,
+ 42, 2, 11, 1, 1, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, 4, 2, 4, 3, 3, 3, 2, 2, 2, 1, 1, 5, 4, 4, 4, 4, 1,
+ 13, 13, 2, 6, 2, 1, 1, 2, 6, 2, 2, 2, 2, 2, 1, 1, 55, 3, 1, 1, 1, 1, 1, 1, 2, 1, 33, 5, 3, 3, 2, 1, 1, 1, 5, 3, 2, 7, 2, 2, 4,
+ 2, 2, 2, 4, 2, 2, 1, 3, 1, 19, 1, 1, 7, 1, 2, 1, 2, 1, 1, 3, 2, 1, 7, 1, 1, 1, 1, 4, 3, 2, 1, 1, 7, 1, 1, 1, 2, 1, 2, 2, 2,
+ 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 70, 2, 2, 2, 7, 3, 3, 2, 18, 5, 4, 5, 4, 4, 3, 1, 26, 2, 20, 13, 8, 3, 3,
+ 4, 3, 78, 22, 1, 2, 4, 2, 2, 2, 4, 2, 1, 1, 1, 1, 1, 1, 18, 3, 10, 9, 9, 4, 3, 2, 2, 20, 4, 4, 4, 10, 8, 4, 6, 5, 4, 23, 2, 9, 3,
+ 12, 1, 4, 2, 5, 2, 2, 2, 33, 6, 5, 10, 3, 4, 3, 3, 4, 2, 28, 2, 2, 1, 1, 3, 2, 3, 2, 11, 6, 6, 1, 1, 1, 3, 115,1, 1, 2, 3, 14, 2,
+ 10, 7, 3, 59, 5, 3, 1, 4, 2, 2, 6, 4, 3, 2, 3, 8, 2, 3, 2, 3, 2, 2, 2, 1, 2, 4, 5, 3, 3, 5, 2, 12, 11, 4, 4, 4, 5, 2, 12, 6, 3,
+ 2, 2, 2, 157,10, 2, 2, 35, 4, 1, 26, 23, 4, 3, 4, 2, 7, 3, 2, 2, 3, 17, 8, 6, 2, 2, 2, 2, 41, 1, 1, 7, 3, 2, 8, 5, 6, 12, 5, 5, 3,
+ 2, 1, 1, 1, 1, 1, 1, 16, 7, 5, 2, 10, 4, 4, 1, 2, 3, 42, 4, 2, 1, 3, 26, 2, 2, 2, 18, 11, 8, 6, 3, 2, 5, 2, 119,8, 6, 6, 2, 9, 5,
+ 6, 2, 3, 8, 6, 2, 1, 14, 4, 5, 3, 5, 2, 44, 29, 1, 1, 1, 1, 20, 7, 5, 5, 5, 2, 5, 5, 3, 3, 2, 3, 2, 221,1, 24, 3, 5, 2, 2, 4, 5,
+ 14, 5, 3, 2, 1, 5, 2, 1, 5, 5, 22, 4, 9, 3, 2, 1, 1, 3, 8, 5, 30, 4, 3, 5, 4, 2, 2, 1, 13, 6, 9, 3, 4, 4, 2, 2, 37, 12, 7, 3, 9,
+ 3, 4, 1, 3, 2, 8, 3, 1, 11, 3, 1, 3, 80, 18, 17, 5, 2, 1, 1, 1, 2, 1, 10, 7, 6, 6, 10, 2, 4, 2, 28, 2, 8, 2, 4, 2, 2, 96, 12, 8, 3,
+ 6, 3, 5, 3, 6, 20, 13, 10, 3, 12, 4, 6, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 9, 4, 82, 7, 3, 7, 4, 1, 1, 3, 3, 26, 2, 1, 10, 5, 3, 3, 3,
+ 6, 7, 1, 1, 1, 5, 17, 4, 2, 2, 2, 7, 3, 3, 2, 55, 6, 2, 7, 3, 3, 7, 3, 29, 19, 13, 12, 9, 9, 9, 4, 3, 4, 3, 2, 14, 2, 3, 5, 14, 2,
+ 1, 5, 2, 2, 16, 5, 2, 2, 7, 5, 3, 3, 2, 1, 1, 9, 1, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 3, 1, 1, 1, 1,
+ 1, 1, 2, 1, 1, 1, 1, 1, 1, 63, 8, 3, 2, 18, 3, 4, 7, 20, 11, 11, 11, 3, 7, 7, 6, 3, 13, 2, 1, 6, 3, 3, 3, 2, 1, 1, 16, 2, 6, 4, 3,
+ 3, 1, 1, 63, 3, 6, 5, 3, 34, 28, 16, 2, 9, 4, 4, 1, 5, 5, 2, 2, 12, 11, 3, 2, 2, 47, 2, 13, 3, 3, 12, 5, 3, 2, 2, 1, 11, 3, 2, 2, 1,
+ 14, 4, 7, 2, 50, 4, 2, 2, 2, 2, 11, 2, 1, 4, 7, 11, 2, 2, 5, 5, 3, 2, 2, 148,3, 2, 2, 2, 3, 21, 3, 2, 2, 3, 4, 3, 1, 1, 1, 2, 2,
+ 2, 46, 19, 14, 3, 4, 4, 3, 8, 1, 2, 5, 29, 6, 7, 2, 5, 4, 6, 5, 3, 6, 6, 3, 7, 1, 14, 4, 2, 2, 23, 4, 2, 2, 10, 8, 7, 3, 2, 98, 13,
+ 7, 3, 2, 3, 15, 7, 5, 3, 9, 3, 2, 2, 2, 2, 2, 6, 1, 1, 8, 3, 19, 10, 2, 5, 1, 1, 1, 5, 2, 3, 3, 6, 3, 3, 3, 2, 2, 6, 1, 2, 4,
+ 2, 2, 2, 1, 1, 8, 1, 3, 3, 1, 13, 9, 5, 4, 4, 3, 3, 15, 8, 5, 2, 2, 2, 2, 17, 3, 5, 2, 2, 5, 4, 1, 1, 3, 4, 2, 1, 1, 20, 3, 2,
+ 6, 4, 7, 37, 16, 11, 10, 4, 2, 6, 1, 2, 4, 2, 10, 3, 3, 108,36, 1, 2, 7, 3, 16, 2, 10, 4, 20, 1, 5, 5, 27, 6, 3, 6, 3, 3, 12, 2, 2, 2,
+ 2, 1, 1, 1, 1, 2, 2, 8, 2, 2, 2, 4, 3, 17, 15, 12, 11, 4, 6, 2, 4, 32, 3, 2, 4, 2, 18, 3, 9, 7, 2, 1, 1, 1, 2, 39, 5, 5, 3, 2, 2,
+ 6, 6, 5, 12, 8, 6, 2, 3, 22, 8, 4, 2, 7, 7, 3, 2, 2, 2, 2, 6, 3, 3, 5, 3, 9, 4, 3, 3, 2, 12, 2, 1, 1, 1, 1, 5, 5, 4, 3, 1, 1,
+ 2, 1, 1, 9, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 2, 1, 1, 1, 1, 1, 4, 1, 3, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 18, 2, 1, 7, 4, 3, 2, 2, 23, 3, 3, 1, 1, 1, 13, 4, 2, 2, 6, 2, 1, 1, 1, 1, 1, 41, 2, 6, 4, 17, 1, 7, 4, 1, 2,
+ 1, 10, 10, 8, 8, 3, 3, 2, 29, 2, 6, 1, 12, 7, 4, 2, 2, 2, 2, 63, 3, 1, 2, 3, 4, 2, 2, 1, 4, 16, 15, 4, 4, 2, 5, 16, 3, 3, 2, 8, 3,
+ 3, 2, 20, 5, 4, 4, 1, 9, 2, 2, 3, 70, 5, 4, 2, 2, 8, 4, 2, 12, 12, 2, 2, 3, 3, 5, 2, 28, 11, 4, 4, 2, 7, 2, 17, 5, 3, 7, 3, 3, 1,
+ 5, 2, 149,13, 3, 3, 3, 4, 1, 2, 5, 11, 3, 3, 2, 40, 2, 3, 2, 2, 2, 24, 3, 6, 3, 3, 10, 3, 4, 4, 30, 9, 9, 6, 5, 17, 3, 3, 3, 7, 2,
+ 4, 10, 5, 3, 2, 3, 3, 3, 205,36, 19, 2, 2, 2, 9, 4, 12, 11, 7, 4, 2, 2, 12, 8, 16, 1, 1, 1, 1, 1, 4, 23, 4, 4, 4, 25, 3, 20, 20, 2, 6,
+ 2, 2, 4, 4, 3, 1, 2, 21, 10, 3, 3, 3, 16, 1, 1, 8, 4, 3, 2, 2, 2, 5, 5, 5, 4, 2, 28, 13, 3, 8, 4, 2, 1, 1, 6, 1, 1, 1, 2, 3, 2,
+ 2, 2, 33, 3, 26, 3, 1, 2, 11, 5, 3, 10, 3, 2, 2, 1, 1, 1, 1, 1, 3, 1, 1, 2, 1, 123,81, 5, 16, 4, 2, 2, 5, 1, 3, 2, 2, 4, 9, 5, 5,
+ 5, 3, 4, 1, 3, 4, 5, 3, 10, 8, 2, 4, 2, 2, 9, 5, 3, 3, 2, 2, 11, 3, 2, 1, 1, 1, 1, 15, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
+ 2, 109,2, 19, 3, 3, 13, 2, 5, 2, 59, 10, 3, 2, 3, 15, 8, 3, 4, 2, 6, 4, 2, 2, 1, 2, 1, 1, 1, 10, 3, 2, 4, 4, 4, 10, 3, 2, 71, 2, 6,
+ 6, 3, 1, 1, 1, 2, 4, 3, 16, 6, 4, 3, 32, 3, 7, 5, 5, 3, 2, 2, 3, 2, 1, 3, 1, 1, 1, 2, 1, 1, 2, 2, 2, 4, 3, 2, 1, 1, 3, 3, 2,
+ 1, 1, 1, 11, 10, 17, 5, 6, 6, 3, 10, 1, 3, 1, 1, 1, 3, 3, 3, 1, 1, 31, 1, 1, 1, 1, 5, 4, 2, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 19, 2, 1, 13, 13, 10, 9, 9, 7, 4, 4, 3, 3, 235,8, 3, 3, 23, 5, 4, 3, 6, 3, 4, 2, 5, 9, 31, 3, 2, 12, 4, 2, 2,
+ 2, 7, 6, 5, 4, 1, 1, 1, 26, 3, 2, 6, 3, 6, 3, 8, 4, 26, 24, 4, 4, 1, 1, 1, 43, 4, 2, 3, 2, 6, 13, 10, 6, 2, 3, 2, 9, 3, 2, 23, 2,
+ 1, 6, 12, 6, 5, 1, 1, 2, 1, 135,6, 2, 2, 11, 5, 5, 2, 7, 1, 1, 5, 17, 2, 5, 4, 1, 13, 9, 6, 6, 1, 2, 3, 1, 1, 1, 1, 13, 5, 6, 14,
+ 2, 3, 2, 2, 11, 7, 8, 4, 4, 9, 9, 2, 2, 2, 1, 1, 3, 2, 2, 2, 14, 6, 2, 1, 1, 90, 11, 10, 3, 8, 3, 3, 6, 5, 5, 2, 26, 6, 5, 11, 5,
+ 3, 3, 19, 1, 11, 6, 8, 7, 2, 3, 6, 4, 176,9, 8, 9, 7, 3, 3, 5, 3, 1, 4, 3, 24, 13, 3, 3, 2, 2, 3, 3, 9, 3, 2, 7, 65, 5, 26, 15, 5,
+ 5, 4, 4, 26, 6, 5, 2, 1, 1, 7, 5, 5, 5, 4, 10, 2, 11, 3, 3, 8, 4, 3, 16, 12, 10, 4, 1, 87, 8, 6, 11, 2, 3, 5, 5, 4, 2, 2, 5, 4, 2,
+ 5, 2, 1, 1, 6, 5, 11, 10, 3, 3, 3, 3, 5, 3, 1, 1, 3, 6, 9, 3, 2, 2, 1, 1, 1, 1, 1, 36, 2, 3, 2, 2, 2, 7, 6, 4, 2, 2, 2, 3, 3,
+ 3, 2, 1, 3, 4, 1, 1, 3, 1, 1, 1, 1, 9, 4, 2, 19, 6, 8, 8, 3, 13, 3, 5, 3, 14, 2, 1, 1, 3, 4, 3, 2, 2, 2, 29, 2, 6, 4, 2, 7, 3,
+ 3, 6, 4, 14, 2, 5, 4, 2, 96, 3, 8, 4, 12, 4, 26, 9, 5, 4, 4, 3, 5, 1, 30, 2, 2, 1, 5, 9, 4, 11, 11, 4, 3, 3, 2, 8, 4, 4, 4, 74, 2,
+ 21, 5, 4, 2, 4, 4, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 4, 3, 31, 11, 3, 3, 3, 1, 8, 4, 2, 14, 7, 3, 1, 87, 7, 4, 2, 2, 2, 13, 1, 1, 7,
+ 4, 4, 3, 54, 18, 15, 15, 13, 2, 2, 3, 1, 5, 1, 1, 4, 4, 2, 8, 2, 2, 2, 2, 18, 3, 2, 2, 1, 19, 2, 6, 1, 8, 5, 3, 20, 9, 3, 5, 31, 4,
+ 2, 5, 2, 2, 2, 2, 96, 3, 4, 12, 7, 7, 7, 4, 4, 4, 3, 2, 4, 3, 3, 3, 3, 1, 1, 1, 1, 6, 4, 3, 3, 30, 5, 5, 5, 4, 4, 4, 15, 3, 2,
+ 3, 5, 5, 4, 1, 4, 1, 9, 2, 5, 5, 5, 39, 2, 19, 12, 2, 2, 2, 2, 4, 8, 5, 4, 6, 4, 2, 4, 2, 14, 7, 2, 4, 162,27, 1, 12, 9, 3, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 3, 9, 2, 6, 3, 3, 111,111,111,99, 12, 19, 2, 8, 2, 6, 3, 2, 2, 12, 9, 6, 5, 36, 4, 4, 5, 3, 3, 7,
+ 2, 1, 2, 66, 3, 1, 6, 2, 5, 1, 1, 15, 3, 2, 1, 5, 2, 2, 3, 17, 2, 14, 6, 5, 5, 5, 5, 4, 6, 5, 5, 2, 3, 2, 49, 4, 2, 5, 2, 2, 19,
+ 3, 6, 6, 6, 3, 10, 8, 6, 2, 11, 2, 1, 1, 1, 1, 1, 1, 3, 2, 2, 3, 88, 5, 3, 14, 22, 17, 4, 4, 4, 5, 4, 5, 4, 4, 4, 2, 2, 25, 1, 1,
+ 1, 1, 1, 1, 1, 2, 2, 4, 6, 5, 8, 14, 10, 35, 4, 3, 1, 1, 4, 4, 2, 4, 2, 4, 3, 2, 2, 3, 1, 1, 5, 2, 2, 2, 1, 1, 1, 1, 1, 4, 2,
+ 2, 2, 19, 3, 2, 11, 5, 5, 4, 3, 1, 23, 3, 3, 3, 2, 7, 5, 5, 5, 2, 4, 3, 2, 17, 4, 3, 3, 3, 6, 2, 4, 14, 9, 184,85, 4, 19, 14, 9, 3,
+ 3, 4, 16, 4, 11, 7, 21, 3, 11, 6, 3, 18, 4, 2, 3, 3, 3, 3, 2, 1, 1, 1, 2, 56, 11, 9, 2, 2, 2, 2, 1, 6, 3, 3, 3, 3, 1, 9, 3, 3, 6,
+ 2, 4, 2, 2, 2, 6, 2, 8, 3, 15, 6, 3, 1, 20, 8, 3, 3, 2, 1, 3, 19, 9, 7, 1, 5, 4, 5, 17, 5, 2, 2, 4, 4, 2, 2, 2, 2, 1, 6, 12, 6,
4, 2, 2, 2, 1, 1, 1, 1, 1, 23, 18, 1, 1, 4, 3, 3, 8, 3, 5, 4, 76, 12, 25, 2, 19, 18, 11, 6, 4, 5, 3, 7, 3, 2, 13, 1, 11, 7, 4, 3, 133,
- 2, 11, 3, 2, 3, 3, 2, 20, 3, 12, 11, 2, 8, 4, 3, 15, 7, 7, 6, 4, 15, 8, 3, 2, 3, 2, 3, 14, 3, 6, 6, 2, 1, 8, 5, 1, 1, 6, 11, 3, 3,
- 2, 2, 43, 4, 3, 3, 8, 3, 4, 4, 4, 2, 2, 5, 3, 3, 6, 3, 1, 2, 5, 3, 1, 1, 1, 11, 3, 3, 2, 2, 2, 27, 10, 10, 2, 2, 3, 2, 4, 8, 8,
- 8, 8, 5, 6, 3, 3, 28, 8, 5, 15, 6, 11, 2, 12, 10, 7, 6, 3, 2, 2, 2, 15, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 229,5, 3, 16, 3, 2, 9, 17, 6,
- 4, 2, 2, 2, 1, 76, 33, 9, 3, 2, 2, 8, 6, 6, 6, 4, 3, 2, 2, 15, 14, 6, 6, 3, 11, 3, 2, 2, 18, 3, 3, 3, 1, 1, 4, 8, 8, 5, 7, 10, 8,
- 2, 28, 4, 6, 4, 2, 2, 6, 3, 5, 29, 5, 5, 2, 2, 2, 3, 4, 10, 2, 2, 2, 2, 6, 4, 1, 1, 159,1, 4, 2, 2, 7, 4, 10, 3, 2, 2, 2, 1, 19,
- 8, 1, 4, 6, 2, 2, 5, 1, 1, 7, 3, 3, 16, 2, 3, 2, 1, 47, 4, 6, 2, 2, 1, 1, 29, 3, 1, 5, 9, 6, 6, 2, 1, 3, 18, 2, 2, 1, 12, 2, 3,
- 3, 3, 3, 3, 3, 2, 49, 3, 2, 3, 3, 4, 14, 13, 2, 2, 5, 10, 2, 2, 2, 6, 6, 1, 19, 3, 1, 6, 4, 1, 1, 1, 1, 1, 1, 1, 5, 3, 7, 5, 5,
- 2, 114,4, 3, 2, 104,1, 1, 3, 12, 2, 7, 2, 5, 3, 9, 6, 3, 2, 11, 8, 2, 2, 5, 5, 4, 5, 8, 6, 3, 2, 5, 2, 19, 16, 15, 1, 1, 11, 4, 4,
- 30, 7, 1, 1, 5, 5, 11, 1, 4, 4, 3, 3, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 26, 6, 2, 4, 5, 1, 4, 3, 5, 3, 10, 9, 2, 2, 1, 1, 1, 3, 19,
- 1, 18, 1, 3, 2, 4, 3, 2, 14, 2, 2, 1, 8, 1, 1, 89, 2, 4, 3, 2, 10, 8, 8, 5, 2, 2, 1, 1, 2, 2, 2, 5, 3, 35, 5, 2, 10, 3, 4, 4, 5,
- 2, 2, 2, 3, 3, 3, 5, 3, 2, 16, 3, 1, 1, 4, 3, 6, 119,7, 2, 2, 21, 3, 1, 16, 14, 14, 14, 10, 8, 5, 28, 8, 6, 6, 6, 6, 6, 6, 9, 7, 5,
- 4, 3, 3, 3, 3, 7, 3, 3, 3, 1, 1, 1, 8, 4, 2, 3, 2, 11, 1, 1, 3, 15, 4, 4, 3, 7, 3, 2, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 2, 103,8,
- 3, 4, 4, 2, 5, 7, 4, 9, 6, 3, 2, 2, 21, 6, 2, 5, 9, 6, 5, 2, 8, 3, 4, 2, 15, 3, 8, 7, 6, 2, 1, 1, 6, 1, 1, 2, 46, 2, 2, 7, 2,
- 2, 6, 3, 3, 13, 4, 2, 4, 4, 9, 3, 2, 31, 3, 2, 3, 13, 12, 5, 1, 9, 6, 2, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 52, 2, 2, 3, 1, 1,
- 1, 1, 1, 9, 2, 2, 2, 2, 2, 3, 3, 3, 2, 1, 1, 3, 13, 9, 1, 1, 6, 5, 9, 1, 1, 1, 1, 1, 1, 7, 2, 5, 2, 4, 3, 3, 3, 4, 4, 4, 2,
- 2, 4, 1, 3, 4, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 9, 3, 72, 10, 2, 3, 14, 5, 3, 6, 4, 6, 1, 1, 1, 9, 3, 3, 21, 3, 2, 16,
- 14, 13, 13, 3, 4, 40, 3, 4, 7, 4, 1, 1, 3, 4, 1, 1, 4, 2, 2, 25, 2, 2, 6, 3, 8, 4, 10, 1, 9, 33, 4, 4, 5, 7, 7, 5, 3, 3, 5, 3, 9,
- 2, 50, 3, 2, 8, 2, 15, 5, 3, 2, 3, 2, 2, 3, 3, 10, 2, 2, 2, 9, 5, 4, 2, 56, 5, 4, 8, 3, 6, 7, 2, 9, 4, 3, 3, 3, 2, 6, 3, 8, 3,
- 3, 5, 2, 24, 6, 3, 2, 5, 4, 2, 2, 1, 33, 5, 4, 1, 1, 1, 5, 4, 4, 2, 1, 9, 2, 2, 124,29, 5, 6, 4, 4, 2, 3, 2, 1, 1, 1, 29, 6, 4,
- 6, 4, 37, 6, 3, 2, 2, 2, 2, 7, 3, 3, 2, 2, 2, 13, 3, 2, 8, 2, 7, 2, 7, 4, 6, 5, 18, 11, 8, 5, 2, 5, 3, 4, 123,8, 2, 35, 4, 1, 7,
+ 2, 11, 3, 2, 3, 3, 2, 20, 3, 12, 11, 2, 8, 4, 3, 15, 7, 7, 6, 4, 15, 8, 3, 2, 3, 2, 3, 14, 3, 6, 6, 2, 1, 8, 5, 1, 1, 6, 11, 3, 3,
+ 2, 2, 43, 4, 3, 3, 8, 3, 4, 4, 4, 2, 2, 5, 3, 3, 6, 3, 1, 2, 5, 3, 1, 1, 1, 11, 3, 3, 2, 2, 2, 27, 10, 10, 2, 2, 3, 2, 4, 8, 8,
+ 8, 8, 5, 6, 3, 3, 28, 8, 5, 15, 6, 11, 2, 12, 10, 7, 6, 3, 2, 2, 2, 15, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 229,5, 3, 16, 3, 2, 9, 17, 6,
+ 4, 2, 2, 2, 1, 76, 33, 9, 3, 2, 2, 8, 6, 6, 6, 4, 3, 2, 2, 15, 14, 6, 6, 3, 11, 3, 2, 2, 18, 3, 3, 3, 1, 1, 4, 8, 8, 5, 7, 10, 8,
+ 2, 28, 4, 6, 4, 2, 2, 6, 3, 5, 29, 5, 5, 2, 2, 2, 3, 4, 10, 2, 2, 2, 2, 6, 4, 1, 1, 159,1, 4, 2, 2, 7, 4, 10, 3, 2, 2, 2, 1, 19,
+ 8, 1, 4, 6, 2, 2, 5, 1, 1, 7, 3, 3, 16, 2, 3, 2, 1, 47, 4, 6, 2, 2, 1, 1, 29, 3, 1, 5, 9, 6, 6, 2, 1, 3, 18, 2, 2, 1, 12, 2, 3,
+ 3, 3, 3, 3, 3, 2, 49, 3, 2, 3, 3, 4, 14, 13, 2, 2, 5, 10, 2, 2, 2, 6, 6, 1, 19, 3, 1, 6, 4, 1, 1, 1, 1, 1, 1, 1, 5, 3, 7, 5, 5,
+ 2, 114,4, 3, 2, 104,1, 1, 3, 12, 2, 7, 2, 5, 3, 9, 6, 3, 2, 11, 8, 2, 2, 5, 5, 4, 5, 8, 6, 3, 2, 5, 2, 19, 16, 15, 1, 1, 11, 4, 4,
+ 30, 7, 1, 1, 5, 5, 11, 1, 4, 4, 3, 3, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 26, 6, 2, 4, 5, 1, 4, 3, 5, 3, 10, 9, 2, 2, 1, 1, 1, 3, 19,
+ 1, 18, 1, 3, 2, 4, 3, 2, 14, 2, 2, 1, 8, 1, 1, 89, 2, 4, 3, 2, 10, 8, 8, 5, 2, 2, 1, 1, 2, 2, 2, 5, 3, 35, 5, 2, 10, 3, 4, 4, 5,
+ 2, 2, 2, 3, 3, 3, 5, 3, 2, 16, 3, 1, 1, 4, 3, 6, 119,7, 2, 2, 21, 3, 1, 16, 14, 14, 14, 10, 8, 5, 28, 8, 6, 6, 6, 6, 6, 6, 9, 7, 5,
+ 4, 3, 3, 3, 3, 7, 3, 3, 3, 1, 1, 1, 8, 4, 2, 3, 2, 11, 1, 1, 3, 15, 4, 4, 3, 7, 3, 2, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 2, 103,8,
+ 3, 4, 4, 2, 5, 7, 4, 9, 6, 3, 2, 2, 21, 6, 2, 5, 9, 6, 5, 2, 8, 3, 4, 2, 15, 3, 8, 7, 6, 2, 1, 1, 6, 1, 1, 2, 46, 2, 2, 7, 2,
+ 2, 6, 3, 3, 13, 4, 2, 4, 4, 9, 3, 2, 31, 3, 2, 3, 13, 12, 5, 1, 9, 6, 2, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 52, 2, 2, 3, 1, 1,
+ 1, 1, 1, 9, 2, 2, 2, 2, 2, 3, 3, 3, 2, 1, 1, 3, 13, 9, 1, 1, 6, 5, 9, 1, 1, 1, 1, 1, 1, 7, 2, 5, 2, 4, 3, 3, 3, 4, 4, 4, 2,
+ 2, 4, 1, 3, 4, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 9, 3, 72, 10, 2, 3, 14, 5, 3, 6, 4, 6, 1, 1, 1, 9, 3, 3, 21, 3, 2, 16,
+ 14, 13, 13, 3, 4, 40, 3, 4, 7, 4, 1, 1, 3, 4, 1, 1, 4, 2, 2, 25, 2, 2, 6, 3, 8, 4, 10, 1, 9, 33, 4, 4, 5, 7, 7, 5, 3, 3, 5, 3, 9,
+ 2, 50, 3, 2, 8, 2, 15, 5, 3, 2, 3, 2, 2, 3, 3, 10, 2, 2, 2, 9, 5, 4, 2, 56, 5, 4, 8, 3, 6, 7, 2, 9, 4, 3, 3, 3, 2, 6, 3, 8, 3,
+ 3, 5, 2, 24, 6, 3, 2, 5, 4, 2, 2, 1, 33, 5, 4, 1, 1, 1, 5, 4, 4, 2, 1, 9, 2, 2, 124,29, 5, 6, 4, 4, 2, 3, 2, 1, 1, 1, 29, 6, 4,
+ 6, 4, 37, 6, 3, 2, 2, 2, 2, 7, 3, 3, 2, 2, 2, 13, 3, 2, 8, 2, 7, 2, 7, 4, 6, 5, 18, 11, 8, 5, 2, 5, 3, 4, 123,8, 2, 35, 4, 1, 7,
3, 7, 7, 4, 4, 2, 47, 3, 2, 1, 5, 2, 2, 3, 9, 2, 1, 1, 9, 3, 1, 6, 1, 1, 1, 1, 1, 1, 3, 3, 4, 12, 4, 3, 5, 4, 2, 1, 1, 1, 171,
- 8, 3, 3, 3, 34, 14, 7, 6, 4, 3, 2, 5, 7, 2, 2, 4, 4, 3, 8, 4, 51, 5, 2, 2, 3, 2, 2, 10, 3, 2, 8, 2, 2, 9, 8, 2, 4, 12, 3, 6, 3,
- 1, 11, 5, 4, 5, 11, 4, 15, 4, 2, 1, 6, 2, 8, 2, 2, 24, 1, 1, 2, 3, 2, 4, 3, 2, 14, 6, 17, 6, 7, 2, 2, 37, 20, 11, 3, 2, 1, 6, 5, 2,
- 2, 2, 12, 4, 11, 7, 3, 2, 15, 6, 5, 2, 2, 2, 2, 4, 28, 6, 5, 3, 3, 2, 2, 4, 14, 7, 3, 13, 3, 2, 26, 2, 11, 5, 11, 3, 4, 51, 9, 13, 7,
- 5, 19, 4, 7, 2, 8, 13, 4, 17, 5, 3, 1, 3, 4, 8, 4, 3, 2, 4, 104,2, 2, 2, 10, 3, 6, 5, 2, 5, 2, 9, 2, 4, 3, 3, 3, 2, 14, 7, 7, 3,
- 5, 3, 17, 8, 2, 27, 9, 2, 6, 1, 5, 4, 10, 9, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 3, 3, 101,5, 5, 1, 29, 3, 3, 3, 5, 12, 11, 10, 14,
- 8, 8, 3, 9, 4, 5, 4, 3, 12, 9, 3, 3, 15, 3, 4, 2, 2, 4, 100,7, 5, 17, 6, 2, 7, 2, 9, 2, 2, 2, 2, 1, 18, 4, 3, 3, 3, 2, 8, 6, 3,
- 5, 6, 14, 4, 36, 6, 2, 9, 15, 2, 2, 2, 4, 3, 3, 18, 2, 4, 4, 4, 1, 1, 41, 4, 2, 4, 7, 4, 4, 6, 5, 3, 2, 37, 5, 3, 11, 3, 4, 3, 3,
- 7, 2, 2, 2, 2, 2, 2, 2, 2, 7, 25, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 3, 3, 3, 2, 2, 1, 1, 5, 4, 3,
- 3, 1, 1, 8, 3, 2, 2, 2, 2, 10, 3, 3, 3, 2, 1, 31, 4, 1, 19, 2, 3, 2, 2, 2, 3, 1, 2, 2, 12, 4, 3, 1, 1, 7, 5, 17, 7, 3, 2, 3, 1,
- 37, 5, 1, 3, 2, 6, 6, 5, 1, 1, 1, 1, 4, 10, 1, 6, 3, 2, 3, 2, 2, 30, 2, 8, 17, 4, 5, 3, 41, 4, 2, 3, 3, 1, 17, 5, 2, 2, 4, 2, 60,
- 5, 3, 2, 2, 6, 7, 2, 4, 2, 3, 3, 3, 14, 2, 6, 2, 4, 2, 2, 4, 1, 1, 2, 2, 37, 4, 1, 1, 5, 1, 2, 3, 11, 11, 7, 9, 5, 2, 229,1, 4,
- 3, 1, 1, 1, 1, 1, 1, 1, 13, 4, 3, 3, 3, 5, 4, 1, 2, 82, 5, 5, 5, 5, 4, 51, 39, 27, 1, 1, 1, 1, 1, 1, 14, 5, 2, 2, 1, 1, 1, 1, 1,
- 10, 6, 5, 4, 2, 8, 8, 5, 5, 6, 4, 3, 5, 22, 2, 3, 5, 3, 6, 5, 15, 7, 3, 3, 3, 2, 18, 3, 3, 2, 4, 3, 3, 4, 41, 6, 12, 7, 8, 7, 3,
- 2, 3, 2, 8, 3, 3, 3, 115,3, 4, 4, 3, 5, 5, 4, 10, 2, 8, 8, 8, 8, 5, 1, 10, 9, 8, 10, 7, 7, 6, 5, 2, 2, 2, 6, 2, 2, 2, 56, 55, 3,
- 2, 23, 3, 3, 24, 11, 2, 6, 3, 6, 1, 1, 1, 1, 2, 1, 1, 7, 2, 2, 246,31, 3, 11, 8, 6, 5, 3, 3, 3, 12, 3, 6, 4, 10, 3, 3, 8, 5, 3, 6,
- 5, 4, 10, 2, 12, 4, 3, 2, 2, 40, 23, 20, 9, 2, 1, 1, 3, 2, 6, 5, 5, 1, 1, 1, 5, 3, 16, 7, 3, 3, 2, 19, 4, 3, 10, 5, 4, 1, 1, 1, 21,
- 8, 3, 9, 5, 3, 22, 4, 3, 3, 3, 3, 3, 6, 4, 6, 3, 3, 43, 1, 3, 3, 1, 2, 2, 2, 3, 1, 1, 1, 10, 4, 2, 14, 6, 3, 3, 3, 3, 4, 2, 1,
- 1, 77, 7, 1, 2, 4, 4, 1, 5, 2, 1, 1, 6, 3, 3, 3, 3, 1, 3, 2, 9, 3, 21, 6, 2, 6, 4, 4, 3, 2, 2, 2, 3, 1, 6, 1, 2, 8, 3, 3, 3,
- 2, 5, 2, 2, 6, 2, 2, 63, 3, 2, 1, 1, 3, 3, 9, 1, 1, 1, 5, 1, 1, 1, 35, 11, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3,
- 20, 1, 19, 15, 6, 1, 1, 1, 1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 4, 4, 4, 3, 2, 189,43, 1, 1, 1, 1, 1, 1, 1, 2, 11, 4, 6,
- 2, 2, 3, 13, 4, 4, 2, 4, 3, 3, 24, 1, 13, 12, 11, 3, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 2, 1, 19, 1, 1, 1, 1,
- 1, 3, 2, 2, 2, 2, 6, 3, 2, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 15, 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 38, 2, 2, 2, 2,
- 1, 1, 18, 17, 3, 1, 1, 14, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 4, 2, 2, 2, 1, 1, 1, 1, 2, 3, 2, 2, 1, 1, 1,
- 4, 4, 3, 3, 2, 1, 1, 35, 4, 3, 22, 18, 3, 1, 3, 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 99, 19, 4, 3, 2, 10, 2, 5, 2, 2, 2, 2,
- 15, 7, 3, 3, 1, 1, 2, 4, 2, 2, 46, 1, 1, 4, 3, 1, 2, 1, 1, 1, 3, 2, 1, 3, 2, 2, 16, 4, 1, 1, 5, 1, 1, 5, 2, 4, 2, 7, 3, 2, 2,
- 2, 9, 4, 4, 3, 38, 3, 15, 4, 2, 2, 3, 3, 6, 3, 3, 2, 4, 3, 4, 4, 3, 3, 4, 4, 3, 4, 14, 6, 45, 4, 2, 2, 4, 12, 2, 2, 16, 8, 3, 2,
- 15, 8, 2, 5, 2, 40, 13, 3, 8, 8, 2, 2, 1, 14, 3, 5, 3, 3, 4, 3, 2, 181,6, 2, 20, 12, 10, 8, 1, 3, 8, 3, 2, 4, 3, 2, 16, 7, 3, 1, 1,
- 3, 4, 3, 1, 2, 7, 3, 2, 5, 3, 3, 1, 4, 3, 78, 7, 3, 1, 18, 4, 3, 3, 32, 6, 3, 4, 5, 6, 3, 2, 7, 3, 3, 3, 2, 2, 3, 5, 3, 3, 22,
- 3, 2, 3, 7, 3, 3, 2, 2, 2, 3, 74, 3, 4, 1, 1, 1, 7, 24, 15, 12, 2, 2, 11, 1, 2, 4, 2, 5, 2, 7, 2, 4, 1, 3, 41, 3, 3, 2, 1, 1, 2,
- 1, 6, 1, 1, 11, 7, 6, 2, 2, 2, 2, 12, 9, 9, 4, 2, 2, 9, 5, 1, 1, 84, 15, 2, 5, 5, 2, 8, 3, 1, 2, 4, 20, 3, 3, 3, 4, 7, 2, 2, 15,
- 2, 2, 6, 3, 3, 4, 5, 3, 23, 3, 4, 4, 2, 3, 3, 3, 27, 3, 1, 2, 3, 2, 14, 5, 4, 4, 2, 24, 2, 2, 2, 9, 9, 1, 1, 7, 3, 3, 3, 3, 2,
- 1, 22, 3, 14, 2, 2, 3, 3, 1, 20, 12, 12, 4, 4, 1, 5, 36, 1, 1, 1, 1, 6, 3, 2, 2, 3, 1, 2, 3, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
- 7, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 184,4, 11, 8, 4, 36,
- 2, 9, 4, 4, 4, 4, 3, 2, 4, 3, 1, 1, 1, 9, 6, 5, 2, 19, 5, 6, 6, 3, 49, 2, 4, 4, 3, 2, 3, 2, 24, 2, 2, 5, 2, 2, 2, 2, 1, 1, 1,
- 5, 15, 3, 5, 3, 1, 1, 3, 6, 3, 2, 2, 1, 1, 1, 1, 1, 2, 12, 7, 1, 1, 76, 10, 5, 1, 4, 1, 10, 4, 4, 1, 1, 39, 3, 1, 9, 3, 2, 3, 2,
- 3, 2, 1, 1, 9, 2, 2, 1, 1, 1, 2, 2, 3, 2, 47, 5, 4, 8, 5, 2, 6, 4, 6, 2, 1, 1, 1, 1, 1, 7, 3, 5, 2, 112,17, 6, 6, 5, 1, 1, 4,
- 3, 13, 13, 3, 2, 1, 1, 1, 5, 3, 2, 2, 3, 1, 4, 19, 14, 3, 5, 3, 2, 3, 13, 9, 7, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 6, 2, 11, 2, 1, 1,
- 1, 1, 43, 2, 1, 1, 13, 2, 3, 7, 2, 2, 2, 2, 2, 1, 1, 4, 1, 1, 5, 2, 13, 4, 3, 1, 4, 2, 27, 14, 4, 3, 1, 9, 2, 2, 2, 2, 2, 4, 3,
- 7, 3, 1, 5, 5, 1, 2, 17, 4, 3, 1, 2, 1, 2, 3, 2, 45, 1, 1, 1, 17, 3, 4, 2, 2, 1, 1, 1, 4, 6, 4, 4, 2, 2, 2, 12, 4, 2, 1, 1, 1,
- 1, 4, 4, 1, 1, 1, 4, 2, 41, 2, 18, 5, 3, 2, 2, 1, 4, 3, 3, 3, 3, 3, 3, 9, 3, 49, 7, 5, 5, 2, 11, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 10, 4, 3, 3, 1, 6, 3, 2, 2, 20, 4, 9, 3, 2, 2, 4, 3, 125,10, 2, 2, 11, 4, 5, 15, 8, 6, 3, 6, 4, 10, 2, 7, 3, 3, 1, 1, 1, 14, 8,
- 5, 3, 2, 2, 9, 4, 2, 2, 2, 9, 1, 2, 2, 3, 2, 14, 2, 2, 2, 2, 3, 4, 3, 5, 5, 4, 1, 70, 3, 2, 6, 3, 4, 5, 3, 5, 2, 2, 14, 3, 2,
- 2, 3, 18, 3, 9, 2, 2, 4, 20, 9, 3, 3, 3, 1, 1, 28, 4, 6, 3, 5, 3, 5, 2, 1, 15, 5, 2, 3, 2, 3, 17, 2, 3, 1, 1, 6, 2, 8, 1, 2, 4,
- 250,12, 3, 3, 111,5, 7, 2, 3, 2, 18, 11, 3, 3, 13, 2, 8, 4, 2, 6, 4, 8, 2, 5, 3, 4, 2, 18, 4, 3, 3, 6, 7, 3, 2, 2, 2, 2, 6, 3, 2,
- 18, 2, 2, 2, 2, 6, 3, 2, 34, 6, 2, 10, 9, 3, 3, 1, 3, 2, 21, 7, 3, 2, 1, 4, 20, 3, 2, 5, 2, 3, 1, 11, 4, 3, 2, 4, 3, 33, 3, 5, 3,
- 10, 2, 4, 3, 4, 2, 2, 96, 9, 4, 1, 1, 1, 7, 2, 2, 3, 2, 17, 6, 4, 2, 2, 7, 6, 2, 2, 2, 1, 4, 3, 2, 1, 11, 5, 4, 2, 2, 5, 22, 12,
- 11, 4, 3, 3, 7, 208,6, 5, 127,4, 3, 3, 4, 5, 8, 3, 2, 11, 4, 2, 3, 7, 4, 4, 4, 8, 3, 5, 8, 4, 2, 13, 3, 4, 4, 2, 2, 8, 3, 3, 4,
- 3, 3, 3, 8, 2, 3, 9, 2, 3, 3, 6, 3, 2, 8, 11, 9, 7, 10, 3, 2, 2, 3, 13, 7, 4, 2, 17, 11, 2, 2, 18, 7, 2, 5, 3, 1, 1, 1, 1, 4, 2,
- 153,12, 2, 4, 7, 2, 2, 2, 2, 2, 31, 13, 3, 2, 3, 8, 1, 1, 5, 18, 2, 1, 4, 6, 12, 4, 14, 1, 6, 5, 5, 4, 4, 3, 2, 7, 3, 15, 3, 4, 4,
- 2, 6, 4, 2, 5, 4, 3, 3, 77, 3, 3, 4, 8, 3, 2, 5, 5, 23, 4, 7, 5, 4, 13, 6, 3, 1, 2, 83, 3, 4, 4, 6, 2, 2, 12, 3, 2, 4, 5, 3, 1,
- 4, 5, 3, 4, 2, 2, 30, 1, 5, 1, 2, 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, 6, 4, 4, 2, 2, 3, 2, 61, 2, 9, 3, 8, 4, 2, 14, 4, 2, 6, 2, 11,
- 2, 4, 5, 1, 1, 2, 2, 1, 2, 33, 21, 19, 16, 2, 6, 6, 6, 5, 4, 1, 1, 3, 25, 3, 7, 4, 4, 11, 4, 2, 4, 2, 4, 1, 1, 1, 1, 2, 4, 3, 1,
- 1, 33, 5, 2, 5, 6, 3, 2, 7, 4, 1, 35, 2, 15, 3, 3, 3, 15, 5, 3, 3, 39, 9, 8, 8, 8, 2, 13, 3, 2, 18, 2, 7, 2, 1, 2, 5, 7, 3, 12, 7,
- 5, 2, 1, 12, 7, 4, 3, 4, 46, 3, 5, 4, 2, 3, 16, 9, 4, 4, 4, 4, 2, 3, 1, 5, 169,13, 4, 4, 74, 4, 3, 2, 2, 2, 2, 2, 4, 4, 9, 4, 3,
- 3, 7, 1, 2, 10, 7, 3, 3, 2, 5, 5, 3, 2, 8, 4, 4, 3, 2, 4, 4, 4, 11, 4, 2, 4, 6, 2, 4, 1, 1, 2, 4, 2, 19, 3, 10, 9, 4, 3, 2, 2,
- 4, 3, 31, 8, 1, 13, 3, 8, 9, 40, 2, 4, 26, 4, 3, 3, 5, 3, 1, 2, 24, 6, 10, 3, 3, 2, 11, 3, 1, 56, 4, 29, 2, 2, 9, 3, 7, 2, 3, 16, 12,
- 6, 5, 3, 3, 3, 17, 2, 2, 1, 4, 16, 9, 3, 2, 1, 1, 1, 1, 32, 7, 4, 17, 2, 8, 5, 2, 176,4, 1, 1, 5, 147,7, 4, 4, 2, 2, 15, 6, 3, 4,
- 3, 2, 2, 5, 4, 9, 4, 4, 2, 9, 4, 2, 3, 5, 18, 5, 4, 7, 3, 3, 3, 4, 2, 2, 11, 2, 2, 3, 4, 14, 8, 4, 2, 4, 3, 34, 4, 3, 4, 15, 13,
- 7, 3, 19, 3, 3, 6, 2, 12, 3, 4, 2, 31, 8, 7, 4, 5, 3, 2, 3, 14, 3, 6, 20, 5, 2, 4, 7, 3, 2, 2, 4, 21, 1, 2, 4, 3, 3, 1, 4, 2, 1,
- 1, 7, 6, 3, 3, 2, 7, 36, 3, 3, 2, 1, 1, 12, 2, 2, 2, 8, 34, 27, 7, 12, 4, 4, 20, 3, 2, 1, 3, 2, 8, 8, 2, 1, 1, 12, 11, 5, 33, 6, 5,
- 6, 2, 2, 2, 2, 7, 3, 37, 16, 7, 4, 3, 2, 4, 3, 14, 8, 1, 37, 4, 4, 4, 4, 8, 5, 4, 2, 11, 3, 4, 4, 14, 13, 2, 7, 5, 9, 4, 11, 6, 4,
- 9, 4, 1, 16, 7, 4, 1, 3, 2, 3, 4, 8, 3, 6, 3, 1, 11, 3, 17, 2, 3, 2, 2, 22, 9, 2, 7, 7, 2, 3, 53, 3, 3, 1, 3, 1, 4, 2, 2, 30, 1,
- 1, 1, 1, 1, 1, 10, 2, 4, 3, 3, 4, 1, 1, 1, 1, 2, 20, 3, 1, 1, 7, 4, 2, 1, 4, 3, 36, 4, 4, 16, 16, 1, 1, 2, 2, 4, 2, 12, 1, 1, 4,
- 8, 7, 4, 20, 4, 2, 6, 1, 4, 132,16, 6, 11, 4, 3, 3, 1, 18, 4, 8, 2, 3, 3, 3, 2, 3, 3, 14, 5, 36, 11, 1, 1, 3, 1, 5, 3, 7, 10, 6, 3,
- 2, 9, 2, 2, 10, 2, 2, 1, 1, 1, 1, 10, 6, 2, 2, 2, 2, 4, 2, 16, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 6, 6, 3, 26, 1, 1, 6, 2, 3, 1, 1,
- 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 3, 2, 2, 2, 2, 7, 7, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 97, 1, 1, 11, 8, 2, 2, 5, 1, 1, 1, 1,
- 1, 2, 1, 1, 2, 3, 2, 2, 2, 3, 2, 2, 18, 3, 1, 1, 5, 2, 2, 2, 1, 1, 1, 40, 8, 8, 7, 4, 4, 18, 3, 8, 4, 6, 2, 4, 2, 3, 2, 2, 4,
- 3, 3, 3, 7, 4, 14, 3, 2, 5, 5, 3, 2, 2, 2, 10, 5, 5, 2, 3, 20, 2, 4, 1, 2, 4, 4, 4, 3, 3, 3, 3, 3, 2, 96, 2, 5, 3, 9, 1, 3, 10,
- 3, 2, 1, 4, 3, 38, 7, 3, 6, 4, 2, 19, 3, 6, 7, 3, 2, 1, 17, 8, 7, 5, 1, 1, 1, 1, 1, 5, 3, 5, 5, 13, 3, 2, 2, 7, 6, 3, 3, 3, 2,
- 189,6, 2, 2, 2, 2, 28, 3, 13, 3, 6, 3, 3, 4, 2, 64, 7, 5, 3, 3, 9, 4, 1, 1, 3, 4, 4, 1, 4, 3, 3, 29, 6, 2, 13, 3, 5, 3, 7, 5, 2,
- 1, 5, 4, 3, 3, 24, 3, 7, 4, 5, 4, 2, 3, 9, 2, 3, 31, 19, 17, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 3, 4, 2, 1, 1, 3, 7, 3, 3,
- 3, 3, 1, 80, 7, 9, 1, 1, 5, 5, 4, 5, 1, 3, 4, 4, 2, 2, 2, 8, 3, 2, 26, 6, 4, 10, 6, 4, 3, 29, 8, 7, 3, 3, 2, 6, 2, 106,3, 4, 17,
- 4, 3, 7, 6, 3, 2, 3, 3, 2, 5, 5, 3, 2, 23, 4, 12, 3, 7, 2, 2, 2, 16, 4, 2, 2, 2, 3, 11, 3, 4, 5, 2, 6, 3, 3, 70, 6, 6, 1, 2, 3,
- 5, 3, 2, 6, 7, 6, 5, 2, 6, 3, 2, 10, 1, 1, 1, 2, 59, 1, 4, 11, 4, 3, 3, 7, 26, 12, 7, 6, 71, 12, 1, 1, 5, 5, 2, 1, 1, 7, 2, 2, 9,
- 7, 6, 4, 4, 3, 2, 2, 5, 2, 2, 19, 9, 7, 2, 4, 1, 1, 5, 1, 1, 30, 2, 1, 6, 3, 3, 5, 21, 1, 2, 5, 4, 3, 2, 6, 2, 1, 1, 41, 11, 3,
- 2, 3, 2, 2, 1, 2, 9, 9, 5, 4, 4, 9, 1, 1, 3, 4, 1, 1, 1, 8, 2, 2, 6, 3, 1, 1, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 5, 2, 5, 5, 5,
- 5, 3, 5, 1, 1, 1, 1, 3, 3, 3, 15, 11, 8, 8, 3, 5, 2, 1, 1, 9, 2, 4, 4, 4, 4, 4, 4, 3, 4, 3, 6, 5, 7, 5, 4, 3, 3, 3, 4, 3, 2,
- 2, 2, 2, 4, 2, 3, 1, 1, 1, 1, 1, 3, 1, 1, 5, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 40,
- 5, 3, 7, 4, 2, 2, 6, 6, 2, 67, 5, 3, 5, 1, 20, 1, 14, 2, 2, 2, 2, 2, 2, 4, 3, 2, 1, 24, 4, 3, 3, 12, 6, 4, 4, 2, 3, 3, 2, 2, 1,
- 1, 1, 63, 10, 4, 4, 1, 3, 2, 2, 46, 2, 4, 20, 3, 5, 2, 6, 3, 5, 4, 4, 2, 3, 1, 68, 8, 1, 16, 5, 3, 3, 5, 8, 1, 1, 1, 7, 2, 3, 7,
- 4, 3, 3, 3, 3, 28, 3, 3, 2, 2, 2, 4, 4, 1, 1, 2, 2, 2, 2, 1, 1, 5, 4, 3, 2, 2, 25, 10, 2, 3, 2, 6, 2, 1, 2, 4, 2, 95, 10, 2, 2,
- 3, 28, 4, 9, 3, 5, 23, 7, 4, 7, 4, 3, 3, 1, 1, 10, 3, 3, 3, 3, 3, 3, 4, 3, 3, 4, 2, 2, 2, 19, 10, 6, 5, 3, 5, 4, 92, 4, 2, 5, 3,
- 14, 7, 3, 4, 2, 15, 3, 2, 5, 2, 3, 29, 2, 4, 3, 3, 3, 2, 7, 5, 6, 3, 8, 2, 4, 14, 4, 3, 3, 4, 33, 8, 8, 3, 3, 5, 3, 2, 4, 254,2,
- 2, 15, 2, 2, 12, 6, 6, 3, 2, 2, 3, 2, 5, 4, 11, 4, 4, 14, 2, 1, 2, 1, 19, 2, 3, 3, 2, 2, 3, 2, 3, 2, 15, 2, 2, 2, 1, 1, 1, 3, 89,
- 12, 1, 14, 1, 2, 15, 1, 4, 4, 19, 10, 4, 2, 2, 4, 3, 10, 8, 8, 8, 5, 5, 3, 3, 9, 3, 3, 3, 11, 4, 3, 3, 1, 9, 2, 4, 4, 12, 5, 4, 2,
- 9, 3, 2, 7, 4, 2, 3, 2, 229,21, 1, 3, 2, 3, 3, 2, 30, 1, 1, 5, 4, 8, 6, 3, 5, 3, 6, 6, 5, 7, 4, 3, 19, 3, 2, 1, 5, 2, 5, 3, 1,
- 17, 7, 4, 11, 7, 5, 70, 16, 2, 4, 5, 1, 1, 39, 30, 3, 3, 3, 9, 4, 4, 8, 6, 2, 6, 4, 18, 6, 4, 2, 5, 2, 12, 2, 1, 1, 5, 2, 1, 1, 1,
- 1, 3, 16, 3, 2, 2, 6, 2, 7, 105,9, 5, 7, 3, 3, 3, 3, 10, 4, 2, 11, 6, 4, 4, 4, 3, 2, 2, 2, 2, 13, 9, 5, 2, 4, 16, 1, 1, 1, 3, 2,
- 6, 5, 4, 4, 2, 2, 2, 2, 3, 2, 16, 3, 3, 1, 3, 23, 4, 3, 4, 2, 3, 2, 16, 2, 4, 20, 6, 2, 5, 7, 49, 19, 2, 7, 13, 8, 2, 4, 3, 9, 2,
- 2, 4, 2, 43, 4, 2, 2, 3, 9, 3, 4, 6, 3, 3, 13, 2, 1, 1, 2, 1, 2, 4, 2, 3, 2, 6, 2, 74, 3, 2, 2, 2, 2, 2, 7, 6, 1, 1, 1, 1, 2,
+ 8, 3, 3, 3, 34, 14, 7, 6, 4, 3, 2, 5, 7, 2, 2, 4, 4, 3, 8, 4, 51, 5, 2, 2, 3, 2, 2, 10, 3, 2, 8, 2, 2, 9, 8, 2, 4, 12, 3, 6, 3,
+ 1, 11, 5, 4, 5, 11, 4, 15, 4, 2, 1, 6, 2, 8, 2, 2, 24, 1, 1, 2, 3, 2, 4, 3, 2, 14, 6, 17, 6, 7, 2, 2, 37, 20, 11, 3, 2, 1, 6, 5, 2,
+ 2, 2, 12, 4, 11, 7, 3, 2, 15, 6, 5, 2, 2, 2, 2, 4, 28, 6, 5, 3, 3, 2, 2, 4, 14, 7, 3, 13, 3, 2, 26, 2, 11, 5, 11, 3, 4, 51, 9, 13, 7,
+ 5, 19, 4, 7, 2, 8, 13, 4, 17, 5, 3, 1, 3, 4, 8, 4, 3, 2, 4, 104,2, 2, 2, 10, 3, 6, 5, 2, 5, 2, 9, 2, 4, 3, 3, 3, 2, 14, 7, 7, 3,
+ 5, 3, 17, 8, 2, 27, 9, 2, 6, 1, 5, 4, 10, 9, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 3, 3, 101,5, 5, 1, 29, 3, 3, 3, 5, 12, 11, 10, 14,
+ 8, 8, 3, 9, 4, 5, 4, 3, 12, 9, 3, 3, 15, 3, 4, 2, 2, 4, 100,7, 5, 17, 6, 2, 7, 2, 9, 2, 2, 2, 2, 1, 18, 4, 3, 3, 3, 2, 8, 6, 3,
+ 5, 6, 14, 4, 36, 6, 2, 9, 15, 2, 2, 2, 4, 3, 3, 18, 2, 4, 4, 4, 1, 1, 41, 4, 2, 4, 7, 4, 4, 6, 5, 3, 2, 37, 5, 3, 11, 3, 4, 3, 3,
+ 7, 2, 2, 2, 2, 2, 2, 2, 2, 7, 25, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 3, 3, 3, 2, 2, 1, 1, 5, 4, 3,
+ 3, 1, 1, 8, 3, 2, 2, 2, 2, 10, 3, 3, 3, 2, 1, 31, 4, 1, 19, 2, 3, 2, 2, 2, 3, 1, 2, 2, 12, 4, 3, 1, 1, 7, 5, 17, 7, 3, 2, 3, 1,
+ 37, 5, 1, 3, 2, 6, 6, 5, 1, 1, 1, 1, 4, 10, 1, 6, 3, 2, 3, 2, 2, 30, 2, 8, 17, 4, 5, 3, 41, 4, 2, 3, 3, 1, 17, 5, 2, 2, 4, 2, 60,
+ 5, 3, 2, 2, 6, 7, 2, 4, 2, 3, 3, 3, 14, 2, 6, 2, 4, 2, 2, 4, 1, 1, 2, 2, 37, 4, 1, 1, 5, 1, 2, 3, 11, 11, 7, 9, 5, 2, 229,1, 4,
+ 3, 1, 1, 1, 1, 1, 1, 1, 13, 4, 3, 3, 3, 5, 4, 1, 2, 82, 5, 5, 5, 5, 4, 51, 39, 27, 1, 1, 1, 1, 1, 1, 14, 5, 2, 2, 1, 1, 1, 1, 1,
+ 10, 6, 5, 4, 2, 8, 8, 5, 5, 6, 4, 3, 5, 22, 2, 3, 5, 3, 6, 5, 15, 7, 3, 3, 3, 2, 18, 3, 3, 2, 4, 3, 3, 4, 41, 6, 12, 7, 8, 7, 3,
+ 2, 3, 2, 8, 3, 3, 3, 115,3, 4, 4, 3, 5, 5, 4, 10, 2, 8, 8, 8, 8, 5, 1, 10, 9, 8, 10, 7, 7, 6, 5, 2, 2, 2, 6, 2, 2, 2, 56, 55, 3,
+ 2, 23, 3, 3, 24, 11, 2, 6, 3, 6, 1, 1, 1, 1, 2, 1, 1, 7, 2, 2, 246,31, 3, 11, 8, 6, 5, 3, 3, 3, 12, 3, 6, 4, 10, 3, 3, 8, 5, 3, 6,
+ 5, 4, 10, 2, 12, 4, 3, 2, 2, 40, 23, 20, 9, 2, 1, 1, 3, 2, 6, 5, 5, 1, 1, 1, 5, 3, 16, 7, 3, 3, 2, 19, 4, 3, 10, 5, 4, 1, 1, 1, 21,
+ 8, 3, 9, 5, 3, 22, 4, 3, 3, 3, 3, 3, 6, 4, 6, 3, 3, 43, 1, 3, 3, 1, 2, 2, 2, 3, 1, 1, 1, 10, 4, 2, 14, 6, 3, 3, 3, 3, 4, 2, 1,
+ 1, 77, 7, 1, 2, 4, 4, 1, 5, 2, 1, 1, 6, 3, 3, 3, 3, 1, 3, 2, 9, 3, 21, 6, 2, 6, 4, 4, 3, 2, 2, 2, 3, 1, 6, 1, 2, 8, 3, 3, 3,
+ 2, 5, 2, 2, 6, 2, 2, 63, 3, 2, 1, 1, 3, 3, 9, 1, 1, 1, 5, 1, 1, 1, 35, 11, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3,
+ 20, 1, 19, 15, 6, 1, 1, 1, 1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 4, 4, 4, 3, 2, 189,43, 1, 1, 1, 1, 1, 1, 1, 2, 11, 4, 6,
+ 2, 2, 3, 13, 4, 4, 2, 4, 3, 3, 24, 1, 13, 12, 11, 3, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 2, 1, 19, 1, 1, 1, 1,
+ 1, 3, 2, 2, 2, 2, 6, 3, 2, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 15, 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 38, 2, 2, 2, 2,
+ 1, 1, 18, 17, 3, 1, 1, 14, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 4, 2, 2, 2, 1, 1, 1, 1, 2, 3, 2, 2, 1, 1, 1,
+ 4, 4, 3, 3, 2, 1, 1, 35, 4, 3, 22, 18, 3, 1, 3, 4, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 99, 19, 4, 3, 2, 10, 2, 5, 2, 2, 2, 2,
+ 15, 7, 3, 3, 1, 1, 2, 4, 2, 2, 46, 1, 1, 4, 3, 1, 2, 1, 1, 1, 3, 2, 1, 3, 2, 2, 16, 4, 1, 1, 5, 1, 1, 5, 2, 4, 2, 7, 3, 2, 2,
+ 2, 9, 4, 4, 3, 38, 3, 15, 4, 2, 2, 3, 3, 6, 3, 3, 2, 4, 3, 4, 4, 3, 3, 4, 4, 3, 4, 14, 6, 45, 4, 2, 2, 4, 12, 2, 2, 16, 8, 3, 2,
+ 15, 8, 2, 5, 2, 40, 13, 3, 8, 8, 2, 2, 1, 14, 3, 5, 3, 3, 4, 3, 2, 181,6, 2, 20, 12, 10, 8, 1, 3, 8, 3, 2, 4, 3, 2, 16, 7, 3, 1, 1,
+ 3, 4, 3, 1, 2, 7, 3, 2, 5, 3, 3, 1, 4, 3, 78, 7, 3, 1, 18, 4, 3, 3, 32, 6, 3, 4, 5, 6, 3, 2, 7, 3, 3, 3, 2, 2, 3, 5, 3, 3, 22,
+ 3, 2, 3, 7, 3, 3, 2, 2, 2, 3, 74, 3, 4, 1, 1, 1, 7, 24, 15, 12, 2, 2, 11, 1, 2, 4, 2, 5, 2, 7, 2, 4, 1, 3, 41, 3, 3, 2, 1, 1, 2,
+ 1, 6, 1, 1, 11, 7, 6, 2, 2, 2, 2, 12, 9, 9, 4, 2, 2, 9, 5, 1, 1, 84, 15, 2, 5, 5, 2, 8, 3, 1, 2, 4, 20, 3, 3, 3, 4, 7, 2, 2, 15,
+ 2, 2, 6, 3, 3, 4, 5, 3, 23, 3, 4, 4, 2, 3, 3, 3, 27, 3, 1, 2, 3, 2, 14, 5, 4, 4, 2, 24, 2, 2, 2, 9, 9, 1, 1, 7, 3, 3, 3, 3, 2,
+ 1, 22, 3, 14, 2, 2, 3, 3, 1, 20, 12, 12, 4, 4, 1, 5, 36, 1, 1, 1, 1, 6, 3, 2, 2, 3, 1, 2, 3, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
+ 7, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 184,4, 11, 8, 4, 36,
+ 2, 9, 4, 4, 4, 4, 3, 2, 4, 3, 1, 1, 1, 9, 6, 5, 2, 19, 5, 6, 6, 3, 49, 2, 4, 4, 3, 2, 3, 2, 24, 2, 2, 5, 2, 2, 2, 2, 1, 1, 1,
+ 5, 15, 3, 5, 3, 1, 1, 3, 6, 3, 2, 2, 1, 1, 1, 1, 1, 2, 12, 7, 1, 1, 76, 10, 5, 1, 4, 1, 10, 4, 4, 1, 1, 39, 3, 1, 9, 3, 2, 3, 2,
+ 3, 2, 1, 1, 9, 2, 2, 1, 1, 1, 2, 2, 3, 2, 47, 5, 4, 8, 5, 2, 6, 4, 6, 2, 1, 1, 1, 1, 1, 7, 3, 5, 2, 112,17, 6, 6, 5, 1, 1, 4,
+ 3, 13, 13, 3, 2, 1, 1, 1, 5, 3, 2, 2, 3, 1, 4, 19, 14, 3, 5, 3, 2, 3, 13, 9, 7, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 6, 2, 11, 2, 1, 1,
+ 1, 1, 43, 2, 1, 1, 13, 2, 3, 7, 2, 2, 2, 2, 2, 1, 1, 4, 1, 1, 5, 2, 13, 4, 3, 1, 4, 2, 27, 14, 4, 3, 1, 9, 2, 2, 2, 2, 2, 4, 3,
+ 7, 3, 1, 5, 5, 1, 2, 17, 4, 3, 1, 2, 1, 2, 3, 2, 45, 1, 1, 1, 17, 3, 4, 2, 2, 1, 1, 1, 4, 6, 4, 4, 2, 2, 2, 12, 4, 2, 1, 1, 1,
+ 1, 4, 4, 1, 1, 1, 4, 2, 41, 2, 18, 5, 3, 2, 2, 1, 4, 3, 3, 3, 3, 3, 3, 9, 3, 49, 7, 5, 5, 2, 11, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 10, 4, 3, 3, 1, 6, 3, 2, 2, 20, 4, 9, 3, 2, 2, 4, 3, 125,10, 2, 2, 11, 4, 5, 15, 8, 6, 3, 6, 4, 10, 2, 7, 3, 3, 1, 1, 1, 14, 8,
+ 5, 3, 2, 2, 9, 4, 2, 2, 2, 9, 1, 2, 2, 3, 2, 14, 2, 2, 2, 2, 3, 4, 3, 5, 5, 4, 1, 70, 3, 2, 6, 3, 4, 5, 3, 5, 2, 2, 14, 3, 2,
+ 2, 3, 18, 3, 9, 2, 2, 4, 20, 9, 3, 3, 3, 1, 1, 28, 4, 6, 3, 5, 3, 5, 2, 1, 15, 5, 2, 3, 2, 3, 17, 2, 3, 1, 1, 6, 2, 8, 1, 2, 4,
+ 250,12, 3, 3, 111,5, 7, 2, 3, 2, 18, 11, 3, 3, 13, 2, 8, 4, 2, 6, 4, 8, 2, 5, 3, 4, 2, 18, 4, 3, 3, 6, 7, 3, 2, 2, 2, 2, 6, 3, 2,
+ 18, 2, 2, 2, 2, 6, 3, 2, 34, 6, 2, 10, 9, 3, 3, 1, 3, 2, 21, 7, 3, 2, 1, 4, 20, 3, 2, 5, 2, 3, 1, 11, 4, 3, 2, 4, 3, 33, 3, 5, 3,
+ 10, 2, 4, 3, 4, 2, 2, 96, 9, 4, 1, 1, 1, 7, 2, 2, 3, 2, 17, 6, 4, 2, 2, 7, 6, 2, 2, 2, 1, 4, 3, 2, 1, 11, 5, 4, 2, 2, 5, 22, 12,
+ 11, 4, 3, 3, 7, 208,6, 5, 127,4, 3, 3, 4, 5, 8, 3, 2, 11, 4, 2, 3, 7, 4, 4, 4, 8, 3, 5, 8, 4, 2, 13, 3, 4, 4, 2, 2, 8, 3, 3, 4,
+ 3, 3, 3, 8, 2, 3, 9, 2, 3, 3, 6, 3, 2, 8, 11, 9, 7, 10, 3, 2, 2, 3, 13, 7, 4, 2, 17, 11, 2, 2, 18, 7, 2, 5, 3, 1, 1, 1, 1, 4, 2,
+ 153,12, 2, 4, 7, 2, 2, 2, 2, 2, 31, 13, 3, 2, 3, 8, 1, 1, 5, 18, 2, 1, 4, 6, 12, 4, 14, 1, 6, 5, 5, 4, 4, 3, 2, 7, 3, 15, 3, 4, 4,
+ 2, 6, 4, 2, 5, 4, 3, 3, 77, 3, 3, 4, 8, 3, 2, 5, 5, 23, 4, 7, 5, 4, 13, 6, 3, 1, 2, 83, 3, 4, 4, 6, 2, 2, 12, 3, 2, 4, 5, 3, 1,
+ 4, 5, 3, 4, 2, 2, 30, 1, 5, 1, 2, 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, 6, 4, 4, 2, 2, 3, 2, 61, 2, 9, 3, 8, 4, 2, 14, 4, 2, 6, 2, 11,
+ 2, 4, 5, 1, 1, 2, 2, 1, 2, 33, 21, 19, 16, 2, 6, 6, 6, 5, 4, 1, 1, 3, 25, 3, 7, 4, 4, 11, 4, 2, 4, 2, 4, 1, 1, 1, 1, 2, 4, 3, 1,
+ 1, 33, 5, 2, 5, 6, 3, 2, 7, 4, 1, 35, 2, 15, 3, 3, 3, 15, 5, 3, 3, 39, 9, 8, 8, 8, 2, 13, 3, 2, 18, 2, 7, 2, 1, 2, 5, 7, 3, 12, 7,
+ 5, 2, 1, 12, 7, 4, 3, 4, 46, 3, 5, 4, 2, 3, 16, 9, 4, 4, 4, 4, 2, 3, 1, 5, 169,13, 4, 4, 74, 4, 3, 2, 2, 2, 2, 2, 4, 4, 9, 4, 3,
+ 3, 7, 1, 2, 10, 7, 3, 3, 2, 5, 5, 3, 2, 8, 4, 4, 3, 2, 4, 4, 4, 11, 4, 2, 4, 6, 2, 4, 1, 1, 2, 4, 2, 19, 3, 10, 9, 4, 3, 2, 2,
+ 4, 3, 31, 8, 1, 13, 3, 8, 9, 40, 2, 4, 26, 4, 3, 3, 5, 3, 1, 2, 24, 6, 10, 3, 3, 2, 11, 3, 1, 56, 4, 29, 2, 2, 9, 3, 7, 2, 3, 16, 12,
+ 6, 5, 3, 3, 3, 17, 2, 2, 1, 4, 16, 9, 3, 2, 1, 1, 1, 1, 32, 7, 4, 17, 2, 8, 5, 2, 176,4, 1, 1, 5, 147,7, 4, 4, 2, 2, 15, 6, 3, 4,
+ 3, 2, 2, 5, 4, 9, 4, 4, 2, 9, 4, 2, 3, 5, 18, 5, 4, 7, 3, 3, 3, 4, 2, 2, 11, 2, 2, 3, 4, 14, 8, 4, 2, 4, 3, 34, 4, 3, 4, 15, 13,
+ 7, 3, 19, 3, 3, 6, 2, 12, 3, 4, 2, 31, 8, 7, 4, 5, 3, 2, 3, 14, 3, 6, 20, 5, 2, 4, 7, 3, 2, 2, 4, 21, 1, 2, 4, 3, 3, 1, 4, 2, 1,
+ 1, 7, 6, 3, 3, 2, 7, 36, 3, 3, 2, 1, 1, 12, 2, 2, 2, 8, 34, 27, 7, 12, 4, 4, 20, 3, 2, 1, 3, 2, 8, 8, 2, 1, 1, 12, 11, 5, 33, 6, 5,
+ 6, 2, 2, 2, 2, 7, 3, 37, 16, 7, 4, 3, 2, 4, 3, 14, 8, 1, 37, 4, 4, 4, 4, 8, 5, 4, 2, 11, 3, 4, 4, 14, 13, 2, 7, 5, 9, 4, 11, 6, 4,
+ 9, 4, 1, 16, 7, 4, 1, 3, 2, 3, 4, 8, 3, 6, 3, 1, 11, 3, 17, 2, 3, 2, 2, 22, 9, 2, 7, 7, 2, 3, 53, 3, 3, 1, 3, 1, 4, 2, 2, 30, 1,
+ 1, 1, 1, 1, 1, 10, 2, 4, 3, 3, 4, 1, 1, 1, 1, 2, 20, 3, 1, 1, 7, 4, 2, 1, 4, 3, 36, 4, 4, 16, 16, 1, 1, 2, 2, 4, 2, 12, 1, 1, 4,
+ 8, 7, 4, 20, 4, 2, 6, 1, 4, 132,16, 6, 11, 4, 3, 3, 1, 18, 4, 8, 2, 3, 3, 3, 2, 3, 3, 14, 5, 36, 11, 1, 1, 3, 1, 5, 3, 7, 10, 6, 3,
+ 2, 9, 2, 2, 10, 2, 2, 1, 1, 1, 1, 10, 6, 2, 2, 2, 2, 4, 2, 16, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 6, 6, 3, 26, 1, 1, 6, 2, 3, 1, 1,
+ 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 3, 2, 2, 2, 2, 7, 7, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 97, 1, 1, 11, 8, 2, 2, 5, 1, 1, 1, 1,
+ 1, 2, 1, 1, 2, 3, 2, 2, 2, 3, 2, 2, 18, 3, 1, 1, 5, 2, 2, 2, 1, 1, 1, 40, 8, 8, 7, 4, 4, 18, 3, 8, 4, 6, 2, 4, 2, 3, 2, 2, 4,
+ 3, 3, 3, 7, 4, 14, 3, 2, 5, 5, 3, 2, 2, 2, 10, 5, 5, 2, 3, 20, 2, 4, 1, 2, 4, 4, 4, 3, 3, 3, 3, 3, 2, 96, 2, 5, 3, 9, 1, 3, 10,
+ 3, 2, 1, 4, 3, 38, 7, 3, 6, 4, 2, 19, 3, 6, 7, 3, 2, 1, 17, 8, 7, 5, 1, 1, 1, 1, 1, 5, 3, 5, 5, 13, 3, 2, 2, 7, 6, 3, 3, 3, 2,
+ 189,6, 2, 2, 2, 2, 28, 3, 13, 3, 6, 3, 3, 4, 2, 64, 7, 5, 3, 3, 9, 4, 1, 1, 3, 4, 4, 1, 4, 3, 3, 29, 6, 2, 13, 3, 5, 3, 7, 5, 2,
+ 1, 5, 4, 3, 3, 24, 3, 7, 4, 5, 4, 2, 3, 9, 2, 3, 31, 19, 17, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 3, 4, 2, 1, 1, 3, 7, 3, 3,
+ 3, 3, 1, 80, 7, 9, 1, 1, 5, 5, 4, 5, 1, 3, 4, 4, 2, 2, 2, 8, 3, 2, 26, 6, 4, 10, 6, 4, 3, 29, 8, 7, 3, 3, 2, 6, 2, 106,3, 4, 17,
+ 4, 3, 7, 6, 3, 2, 3, 3, 2, 5, 5, 3, 2, 23, 4, 12, 3, 7, 2, 2, 2, 16, 4, 2, 2, 2, 3, 11, 3, 4, 5, 2, 6, 3, 3, 70, 6, 6, 1, 2, 3,
+ 5, 3, 2, 6, 7, 6, 5, 2, 6, 3, 2, 10, 1, 1, 1, 2, 59, 1, 4, 11, 4, 3, 3, 7, 26, 12, 7, 6, 71, 12, 1, 1, 5, 5, 2, 1, 1, 7, 2, 2, 9,
+ 7, 6, 4, 4, 3, 2, 2, 5, 2, 2, 19, 9, 7, 2, 4, 1, 1, 5, 1, 1, 30, 2, 1, 6, 3, 3, 5, 21, 1, 2, 5, 4, 3, 2, 6, 2, 1, 1, 41, 11, 3,
+ 2, 3, 2, 2, 1, 2, 9, 9, 5, 4, 4, 9, 1, 1, 3, 4, 1, 1, 1, 8, 2, 2, 6, 3, 1, 1, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 5, 2, 5, 5, 5,
+ 5, 3, 5, 1, 1, 1, 1, 3, 3, 3, 15, 11, 8, 8, 3, 5, 2, 1, 1, 9, 2, 4, 4, 4, 4, 4, 4, 3, 4, 3, 6, 5, 7, 5, 4, 3, 3, 3, 4, 3, 2,
+ 2, 2, 2, 4, 2, 3, 1, 1, 1, 1, 1, 3, 1, 1, 5, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 40,
+ 5, 3, 7, 4, 2, 2, 6, 6, 2, 67, 5, 3, 5, 1, 20, 1, 14, 2, 2, 2, 2, 2, 2, 4, 3, 2, 1, 24, 4, 3, 3, 12, 6, 4, 4, 2, 3, 3, 2, 2, 1,
+ 1, 1, 63, 10, 4, 4, 1, 3, 2, 2, 46, 2, 4, 20, 3, 5, 2, 6, 3, 5, 4, 4, 2, 3, 1, 68, 8, 1, 16, 5, 3, 3, 5, 8, 1, 1, 1, 7, 2, 3, 7,
+ 4, 3, 3, 3, 3, 28, 3, 3, 2, 2, 2, 4, 4, 1, 1, 2, 2, 2, 2, 1, 1, 5, 4, 3, 2, 2, 25, 10, 2, 3, 2, 6, 2, 1, 2, 4, 2, 95, 10, 2, 2,
+ 3, 28, 4, 9, 3, 5, 23, 7, 4, 7, 4, 3, 3, 1, 1, 10, 3, 3, 3, 3, 3, 3, 4, 3, 3, 4, 2, 2, 2, 19, 10, 6, 5, 3, 5, 4, 92, 4, 2, 5, 3,
+ 14, 7, 3, 4, 2, 15, 3, 2, 5, 2, 3, 29, 2, 4, 3, 3, 3, 2, 7, 5, 6, 3, 8, 2, 4, 14, 4, 3, 3, 4, 33, 8, 8, 3, 3, 5, 3, 2, 4, 254,2,
+ 2, 15, 2, 2, 12, 6, 6, 3, 2, 2, 3, 2, 5, 4, 11, 4, 4, 14, 2, 1, 2, 1, 19, 2, 3, 3, 2, 2, 3, 2, 3, 2, 15, 2, 2, 2, 1, 1, 1, 3, 89,
+ 12, 1, 14, 1, 2, 15, 1, 4, 4, 19, 10, 4, 2, 2, 4, 3, 10, 8, 8, 8, 5, 5, 3, 3, 9, 3, 3, 3, 11, 4, 3, 3, 1, 9, 2, 4, 4, 12, 5, 4, 2,
+ 9, 3, 2, 7, 4, 2, 3, 2, 229,21, 1, 3, 2, 3, 3, 2, 30, 1, 1, 5, 4, 8, 6, 3, 5, 3, 6, 6, 5, 7, 4, 3, 19, 3, 2, 1, 5, 2, 5, 3, 1,
+ 17, 7, 4, 11, 7, 5, 70, 16, 2, 4, 5, 1, 1, 39, 30, 3, 3, 3, 9, 4, 4, 8, 6, 2, 6, 4, 18, 6, 4, 2, 5, 2, 12, 2, 1, 1, 5, 2, 1, 1, 1,
+ 1, 3, 16, 3, 2, 2, 6, 2, 7, 105,9, 5, 7, 3, 3, 3, 3, 10, 4, 2, 11, 6, 4, 4, 4, 3, 2, 2, 2, 2, 13, 9, 5, 2, 4, 16, 1, 1, 1, 3, 2,
+ 6, 5, 4, 4, 2, 2, 2, 2, 3, 2, 16, 3, 3, 1, 3, 23, 4, 3, 4, 2, 3, 2, 16, 2, 4, 20, 6, 2, 5, 7, 49, 19, 2, 7, 13, 8, 2, 4, 3, 9, 2,
+ 2, 4, 2, 43, 4, 2, 2, 3, 9, 3, 4, 6, 3, 3, 13, 2, 1, 1, 2, 1, 2, 4, 2, 3, 2, 6, 2, 74, 3, 2, 2, 2, 2, 2, 7, 6, 1, 1, 1, 1, 2,
2, 2, 52, 11, 8, 6, 33, 6, 3, 3, 2, 1, 1, 1, 3, 32, 3, 5, 4, 3, 3, 4, 5, 37, 3, 5, 1, 5, 3, 17, 8, 6, 5, 4, 10, 2, 1, 1, 1, 2, 118,
- 8, 4, 2, 9, 7, 4, 2, 22, 7, 3, 3, 3, 5, 2, 3, 17, 2, 8, 3, 3, 2, 2, 4, 4, 4, 3, 4, 6, 2, 2, 10, 3, 2, 3, 4, 14, 1, 1, 3, 2, 18,
- 8, 2, 6, 1, 3, 23, 2, 2, 2, 3, 3, 5, 2, 1, 1, 3, 2, 19, 6, 2, 4, 4, 2, 2, 1, 2, 42, 27, 3, 3, 16, 2, 5, 4, 3, 6, 42, 6, 23, 23, 19,
- 5, 3, 4, 2, 23, 4, 10, 5, 3, 3, 12, 5, 4, 2, 1, 3, 30, 2, 6, 3, 1, 1, 1, 5, 6, 6, 3, 3, 3, 3, 3, 80, 9, 3, 1, 10, 4, 36, 8, 4, 4,
- 4, 12, 5, 3, 10, 14, 2, 3, 2, 19, 12, 3, 2, 2, 2, 2, 99, 9, 1, 3, 4, 3, 4, 8, 4, 2, 15, 2, 9, 3, 2, 4, 3, 4, 4, 4, 5, 1, 14, 5, 1,
- 1, 4, 3, 8, 12, 3, 31, 3, 16, 8, 8, 4, 10, 5, 1, 6, 3, 151,7, 2, 6, 3, 2, 2, 4, 1, 1, 18, 6, 2, 2, 7, 2, 2, 22, 4, 6, 3, 6, 2, 4,
- 3, 3, 12, 6, 3, 2, 10, 5, 2, 2, 2, 2, 40, 6, 1, 17, 10, 3, 4, 8, 16, 6, 5, 103,7, 19, 19, 11, 4, 13, 2, 2, 2, 12, 3, 3, 2, 3, 4, 3, 4,
- 2, 3, 2, 4, 1, 1, 1, 23, 4, 7, 4, 4, 3, 3, 5, 4, 3, 3, 2, 106,8, 1, 1, 1, 1, 1, 1, 3, 2, 4, 16, 2, 4, 7, 3, 3, 11, 2, 6, 8, 7,
- 1, 1, 1, 1, 2, 1, 1, 1, 1, 4, 2, 26, 3, 2, 2, 2, 3, 3, 9, 3, 65, 8, 3, 37, 2, 5, 5, 18, 3, 2, 2, 2, 2, 2, 4, 3, 8, 2, 5, 5, 3,
- 2, 64, 12, 9, 6, 3, 32, 1, 1, 10, 6, 6, 2, 7, 2, 1, 5, 4, 3, 3, 93, 12, 1, 4, 2, 3, 2, 3, 13, 4, 3, 6, 2, 8, 5, 2, 10, 5, 3, 8, 4,
- 3, 2, 8, 2, 4, 6, 3, 1, 51, 10, 8, 2, 21, 17, 2, 2, 3, 9, 7, 2, 2, 6, 2, 1, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 249,1,
- 1, 2, 83, 2, 4, 2, 2, 2, 3, 1, 3, 3, 3, 5, 5, 4, 20, 5, 3, 3, 8, 3, 6, 3, 2, 2, 2, 3, 3, 3, 3, 3, 13, 1, 2, 2, 5, 3, 1, 5, 2,
- 4, 1, 1, 19, 7, 7, 3, 4, 6, 54, 5, 6, 33, 9, 6, 5, 4, 5, 1, 1, 1, 2, 1, 4, 3, 39, 25, 3, 2, 15, 12, 3, 1, 2, 27, 7, 5, 10, 3, 3, 8,
- 2, 32, 4, 1, 1, 1, 4, 13, 1, 1, 1, 7, 4, 7, 2, 2, 2, 46, 4, 28, 5, 2, 8, 2, 4, 4, 3, 2, 7, 58, 7, 2, 2, 2, 5, 2, 15, 12, 2, 2, 3,
- 2, 4, 1, 1, 1, 1, 4, 2, 1, 1, 6, 6, 4, 5, 5, 2, 39, 3, 6, 12, 2, 2, 2, 2, 26, 2, 16, 9, 2, 7, 3, 3, 4, 37, 2, 2, 10, 4, 3, 9, 3,
- 2, 5, 13, 7, 5, 4, 3, 2, 2, 206,4, 3, 2, 39, 1, 1, 18, 2, 2, 4, 3, 4, 1, 1, 6, 4, 2, 3, 2, 7, 6, 5, 1, 7, 3, 11, 3, 3, 1, 1, 1,
- 21, 4, 5, 1, 2, 3, 3, 2, 4, 1, 1, 1, 1, 56, 2, 11, 1, 1, 1, 7, 5, 4, 4, 4, 3, 3, 3, 10, 4, 10, 4, 22, 1, 1, 7, 4, 3, 3, 17, 4, 7,
- 1, 1, 1, 2, 2, 5, 2, 2, 2, 4, 2, 6, 1, 1, 1, 1, 1, 1, 9, 5, 2, 9, 6, 14, 6, 3, 2, 2, 4, 3, 16, 4, 9, 25, 2, 8, 2, 5, 1, 1, 4,
- 2, 108,2, 6, 6, 2, 1, 3, 13, 7, 4, 2, 3, 3, 9, 4, 5, 37, 6, 4, 2, 2, 3, 3, 2, 2, 4, 2, 3, 2, 1, 6, 2, 2, 2, 2, 5, 4, 39, 2, 10,
- 5, 2, 2, 3, 7, 3, 3, 2, 4, 23, 1, 2, 1, 1, 4, 6, 4, 16, 4, 6, 6, 5, 3, 5, 10, 7, 4, 4, 4, 105,12, 6, 4, 3, 1, 1, 7, 5, 9, 2, 15,
- 6, 5, 5, 4, 4, 4, 4, 7, 3, 3, 21, 2, 11, 2, 1, 3, 7, 5, 5, 13, 1, 2, 1, 6, 6, 6, 4, 4, 9, 3, 1, 4, 3, 4, 222,9, 2, 8, 5, 40, 14,
- 11, 2, 2, 2, 1, 5, 2, 3, 20, 15, 6, 5, 4, 2, 12, 2, 2, 9, 4, 9, 4, 3, 11, 6, 2, 1, 1, 1, 5, 1, 41, 4, 18, 3, 3, 3, 6, 4, 16, 6, 2,
- 6, 6, 34, 2, 22, 9, 4, 3, 3, 9, 4, 20, 4, 4, 3, 4, 6, 12, 1, 3, 31, 7, 4, 2, 2, 2, 1, 1, 1, 1, 12, 7, 3, 2, 1, 1, 1, 1, 1, 21, 4,
- 4, 2, 2, 2, 7, 6, 2, 34, 6, 8, 6, 13, 3, 4, 4, 4, 2, 2, 1, 8, 4, 4, 1, 1, 13, 29, 1, 5, 4, 2, 2, 2, 3, 5, 1, 2, 8, 6, 3, 3, 2,
- 10, 4, 4, 8, 4, 1, 1, 1, 1, 1, 8, 4, 2, 51, 18, 14, 3, 4, 3, 3, 3, 3, 3, 11, 5, 3, 1, 12, 3, 5, 6, 5, 25, 12, 11, 8, 5, 2, 5, 4, 25,
- 5, 8, 2, 3, 2, 7, 1, 4, 2, 1, 1, 45, 7, 3, 1, 10, 15, 5, 4, 1, 3, 38, 6, 6, 4, 2, 19, 7, 3, 2, 2, 2, 1, 2, 2, 2, 2, 3, 21, 3, 3,
- 3, 1, 1, 1, 1, 1, 5, 2, 5, 3, 3, 14, 3, 4, 2, 2, 2, 2, 2, 2, 66, 4, 3, 1, 8, 7, 7, 3, 3, 2, 6, 3, 3, 3, 3, 5, 5, 3, 26, 15, 9,
- 1, 1, 2, 1, 1, 4, 3, 6, 4, 4, 1, 1, 49, 4, 4, 15, 14, 13, 1, 1, 3, 2, 2, 2, 1, 1, 3, 3, 1, 1, 5, 2, 2, 2, 2, 1, 2, 2, 11, 2, 4,
- 2, 4, 28, 1, 1, 1, 1, 2, 5, 3, 7, 1, 1, 1, 1, 2, 1, 14, 7, 4, 2, 2, 2, 16, 2, 4, 2, 2, 15, 9, 1, 1, 1, 1, 1, 4, 1, 1, 2, 49, 2,
- 13, 3, 4, 2, 2, 5, 2, 1, 3, 2, 4, 4, 3, 1, 2, 3, 4, 1, 16, 6, 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4,
- 4, 4, 3, 2, 4, 1, 1, 32, 13, 5, 4, 9, 8, 7, 3, 2, 2, 36, 2, 30, 9, 3, 1, 1, 1, 1, 3, 4, 3, 1, 1, 2, 2, 2, 2, 4, 5, 1, 28, 5, 4,
- 12, 2, 5, 4, 2, 3, 38, 3, 2, 1, 2, 19, 7, 5, 5, 5, 2, 2, 2, 6, 4, 4, 4, 4, 3, 1, 2, 2, 92, 4, 2, 3, 13, 3, 3, 7, 7, 3, 3, 3, 59,
- 6, 2, 2, 4, 4, 1, 13, 4, 4, 7, 5, 5, 5, 2, 5, 9, 2, 2, 1, 7, 5, 5, 1, 1, 3, 3, 2, 2, 2, 1, 1, 18, 10, 6, 6, 3, 2, 3, 1, 1, 11,
- 2, 6, 2, 184,12, 7, 6, 4, 9, 2, 25, 3, 1, 1, 12, 3, 3, 3, 2, 2, 3, 2, 3, 3, 5, 3, 2, 6, 6, 1, 1, 1, 4, 79, 9, 3, 3, 6, 3, 3, 3,
- 1, 23, 3, 3, 3, 3, 2, 3, 2, 6, 4, 2, 2, 1, 2, 9, 3, 1, 1, 11, 3, 3, 3, 6, 2, 12, 4, 2, 3, 9, 1, 1, 1, 2, 2, 2, 3, 30, 5, 3, 3,
- 10, 3, 1, 2, 8, 6, 6, 2, 1, 132,6, 14, 8, 2, 2, 2, 5, 39, 13, 9, 3, 1, 2, 2, 1, 1, 1, 2, 4, 6, 3, 11, 2, 10, 12, 5, 4, 3, 6, 2, 2,
- 1, 1, 3, 3, 3, 6, 13, 5, 4, 3, 4, 48, 4, 4, 3, 2, 2, 32, 2, 2, 2, 9, 3, 2, 2, 3, 12, 4, 2, 2, 2, 3, 3, 3, 1, 1, 1, 5, 72, 12, 4,
- 2, 2, 2, 17, 2, 2, 2, 5, 3, 3, 20, 1, 11, 11, 3, 3, 5, 1, 1, 1, 1, 82, 4, 4, 4, 2, 7, 7, 7, 6, 4, 12, 5, 2, 40, 3, 1, 1, 32, 1, 1,
- 1, 1, 1, 1, 4, 4, 1, 1, 1, 21, 19, 4, 8, 3, 3, 3, 3, 3, 3, 2, 58, 2, 16, 16, 4, 4, 4, 4, 5, 4, 4, 4, 2, 5, 3, 3, 3, 3, 11, 4, 5,
- 6, 1, 1, 1, 4, 5, 2, 24, 1, 2, 2, 4, 3, 2, 3, 2, 1, 3, 3, 1, 2, 2, 8, 7, 3, 4, 2, 3, 1, 1, 1, 1, 13, 8, 3, 1, 4, 3, 2, 1, 13,
- 5, 3, 1, 7, 2, 2, 26, 9, 3, 3, 8, 52, 4, 18, 4, 6, 3, 9, 5, 2, 2, 3, 2, 1, 2, 2, 2, 2, 4, 2, 64, 20, 2, 2, 2, 2, 1, 8, 2, 2, 6,
- 4, 39, 31, 6, 3, 2, 2, 2, 2, 20, 8, 1, 3, 2, 41, 4, 5, 6, 2, 1, 1, 14, 5, 4, 4, 1, 3, 2, 4, 2, 62, 3, 12, 4, 2, 4, 4, 2, 4, 7, 3,
- 5, 3, 8, 2, 2, 6, 54, 2, 31, 3, 8, 2, 3, 5, 3, 2, 2, 2, 2, 5, 1, 1, 1, 3, 2, 5, 2, 5, 5, 2, 2, 1, 1, 55, 10, 5, 2, 8, 2, 3, 1,
- 9, 3, 5, 7, 3, 3, 2, 4, 3, 35, 11, 8, 3, 3, 2, 1, 1, 1, 1, 1, 5, 4, 6, 3, 17, 3, 8, 5, 4, 1, 19, 2, 6, 3, 3, 2, 5, 1, 2, 11, 2,
- 13, 7, 3, 3, 3, 3, 6, 39, 13, 8, 2, 1, 1, 4, 4, 4, 2, 1, 16, 3, 2, 3, 5, 24, 6, 6, 5, 1, 4, 2, 3, 4, 110,21, 9, 8, 24, 3, 1, 9, 5,
- 3, 2, 7, 31, 2, 16, 10, 4, 2, 4, 3, 12, 5, 2, 15, 1, 3, 3, 21, 2, 6, 2, 1, 1, 2, 3, 2, 17, 2, 1, 1, 1, 4, 4, 4, 3, 2, 2, 25, 2, 3,
- 2, 3, 10, 5, 2, 2, 32, 4, 2, 2, 2, 5, 2, 2, 2, 3, 7, 2, 2, 2, 2, 15, 3, 2, 2, 3, 18, 1, 4, 3, 3, 2, 2, 3, 163,7, 5, 1, 85, 8, 2,
- 3, 2, 1, 2, 2, 3, 2, 5, 2, 2, 4, 3, 2, 10, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 18, 2, 14, 2, 2, 2, 2, 2, 7, 7, 7, 7, 1, 1, 1, 1,
- 1, 5, 3, 2, 1, 14, 5, 4, 8, 6, 2, 33, 1, 1, 1, 1, 1, 4, 4, 4, 11, 9, 9, 2, 2, 2, 2, 2, 2, 5, 5, 5, 4, 2, 2, 3, 1, 1, 166,7, 2,
- 4, 4, 31, 23, 4, 8, 2, 3, 2, 4, 2, 46, 4, 33, 6, 4, 5, 3, 2, 3, 5, 4, 4, 4, 2, 3, 2, 2, 11, 2, 1, 1, 7, 2, 8, 5, 3, 27, 1, 1, 2,
- 17, 5, 2, 4, 5, 6, 5, 3, 1, 1, 3, 95, 4, 3, 8, 1, 1, 4, 1, 1, 6, 2, 1, 3, 16, 2, 7, 7, 4, 3, 15, 3, 1, 2, 1, 1, 4, 2, 8, 3, 13,
- 6, 2, 4, 3, 3, 67, 1, 14, 5, 5, 5, 4, 2, 4, 10, 8, 6, 4, 22, 11, 2, 4, 5, 231,10, 3, 7, 3, 8, 3, 17, 1, 6, 6, 6, 3, 5, 12, 3, 3, 1,
- 4, 2, 73, 5, 17, 5, 5, 2, 2, 2, 3, 3, 3, 12, 9, 2, 7, 2, 13, 8, 4, 3, 18, 2, 1, 9, 3, 2, 3, 37, 20, 2, 2, 6, 4, 3, 5, 19, 5, 4, 6,
- 4, 4, 4, 4, 4, 4, 1, 2, 4, 4, 109,4, 2, 7, 7, 3, 17, 2, 3, 3, 5, 3, 5, 3, 7, 5, 4, 2, 15, 1, 13, 11, 11, 10, 6, 3, 8, 3, 28, 14, 3,
- 3, 2, 6, 4, 2, 124,1, 1, 1, 7, 2, 12, 8, 8, 4, 3, 3, 2, 7, 1, 5, 7, 6, 2, 3, 6, 6, 2, 5, 3, 2, 2, 3, 6, 15, 2, 4, 4, 3, 3, 21,
- 6, 5, 1, 2, 5, 2, 132,2, 7, 6, 3, 13, 7, 4, 1, 2, 7, 2, 3, 11, 7, 2, 4, 1, 7, 2, 57, 2, 41, 3, 1, 2, 1, 1, 2, 2, 4, 4, 3, 6, 5,
- 8, 2, 2, 3, 2, 2, 3, 9, 1, 2, 37, 7, 4, 3, 3, 18, 10, 3, 1, 1, 4, 1, 1, 79, 6, 9, 7, 2, 2, 6, 2, 3, 15, 5, 10, 4, 3, 11, 5, 3, 3,
- 2, 2, 3, 5, 2, 6, 24, 4, 2, 1, 5, 4, 2, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 1, 7, 2, 3, 2, 2, 1, 1, 1, 2, 1, 9, 2,
- 2, 2, 2, 7, 2, 1, 3, 2, 1, 1, 1, 4, 3, 3, 3, 3, 2, 1, 1, 1, 20, 1, 1, 1, 1, 1, 10, 3, 2, 2, 5, 14, 1, 1, 1, 3, 3, 2, 2, 1, 1,
- 20, 2, 2, 2, 8, 2, 2, 1, 1, 3, 2, 41, 4, 11, 4, 3, 2, 9, 6, 4, 2, 4, 3, 3, 3, 2, 2, 21, 20, 7, 7, 3, 2, 4, 3, 2, 40, 6, 8, 2, 1,
- 5, 4, 5, 3, 2, 4, 3, 3, 3, 45, 4, 1, 2, 1, 1, 7, 4, 4, 3, 1, 5, 9, 2, 4, 26, 18, 4, 4, 4, 4, 1, 2, 2, 2, 2, 56, 10, 14, 2, 4, 14,
- 5, 2, 8, 6, 3, 10, 1, 1, 3, 3, 21, 5, 6, 2, 1, 1, 5, 2, 63, 5, 2, 5, 6, 5, 12, 1, 1, 1, 3, 3, 4, 10, 3, 8, 129,27, 21, 10, 5, 3, 19,
- 2, 2, 7, 6, 2, 3, 9, 2, 2, 4, 2, 2, 2, 15, 4, 2, 8, 8, 2, 16, 9, 5, 3, 3, 3, 2, 12, 2, 9, 22, 4, 3, 1, 9, 3, 3, 5, 121,5, 4, 11,
- 4, 2, 1, 4, 4, 4, 4, 1, 1, 14, 7, 5, 2, 9, 3, 12, 4, 5, 3, 2, 15, 2, 3, 2, 38, 1, 17, 14, 6, 6, 5, 2, 2, 6, 2, 5, 3, 5, 2, 12, 5,
- 4, 1, 83, 7, 4, 18, 4, 3, 7, 6, 19, 3, 10, 3, 3, 3, 6, 16, 4, 1, 94, 8, 3, 4, 3, 3, 3, 3, 11, 2, 3, 5, 2, 1, 1, 19, 6, 5, 8, 1, 1,
- 19, 4, 6, 4, 14, 3, 44, 17, 17, 6, 4, 7, 6, 4, 10, 2, 6, 13, 2, 2, 3, 3, 2, 2, 7, 1, 1, 2, 1, 1, 1, 5, 4, 3, 2, 2, 1, 1, 1, 10, 2,
- 2, 2, 3, 8, 6, 6, 6, 4, 67, 6, 3, 2, 2, 60, 13, 3, 4, 3, 3, 44, 5, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 7,
- 4, 4, 9, 3, 4, 6, 2, 3, 1, 2, 2, 2, 2, 6, 4, 3, 9, 6, 4, 3, 3, 1, 1, 2, 12, 4, 2, 16, 7, 4, 2, 2, 2, 2, 9, 4, 3, 4, 90, 2, 2,
- 2, 42, 39, 2, 5, 4, 4, 2, 2, 1, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 7, 3, 2, 1, 1, 1, 1, 2, 3, 2, 2, 2,
- 2, 2, 2, 5, 9, 9, 1, 6, 5, 30, 6, 2, 1, 1, 1, 4, 4, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 15, 3, 3, 12, 2, 2, 2, 2, 9, 6, 5, 2, 2, 1,
- 1, 1, 1, 1, 7, 17, 3, 1, 1, 1, 7, 7, 7, 2, 5, 4, 5, 3, 2, 1, 1, 1, 1, 1, 1, 1, 12, 3, 3, 3, 4, 1, 1, 1, 1, 1, 2, 2, 75, 2, 13,
- 11, 3, 2, 5, 2, 2, 1, 1, 2, 2, 22, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 4, 4, 17, 2, 11, 3, 2, 3, 2, 1, 6,
- 2, 3, 2, 2, 1, 1, 57, 1, 1, 10, 4, 1, 2, 12, 2, 2, 8, 2, 1, 1, 1, 1, 1, 9, 5, 5, 2, 8, 6, 2, 2, 4, 3, 3, 4, 1, 1, 113,11, 1, 1,
- 1, 2, 5, 3, 41, 8, 3, 3, 6, 2, 2, 2, 3, 2, 2, 3, 3, 3, 3, 8, 8, 7, 3, 2, 20, 1, 12, 3, 3, 1, 2, 3, 3, 3, 3, 1, 1, 2, 4, 3, 6,
- 12, 9, 6, 3, 3, 1, 2, 2, 2, 2, 2, 5, 2, 111,5, 6, 5, 5, 2, 2, 2, 1, 44, 13, 10, 7, 5, 3, 1, 1, 16, 15, 13, 9, 7, 6, 6, 6, 6, 17, 2,
- 2, 12, 1, 2, 2, 2, 2, 2, 2, 5, 1, 8, 5, 1, 1, 1, 1, 1, 1, 15, 8, 3, 3, 2, 1, 1, 6, 6, 3, 3, 3, 3, 2, 2, 13, 1, 1, 1, 1, 3, 1,
- 2, 30, 1, 1, 1, 1, 5, 1, 1, 4, 7, 6, 5, 4, 4, 2, 1, 1, 1, 2, 1, 1, 68, 2, 2, 4, 1, 1, 1, 2, 2, 1, 6, 5, 1, 28, 11, 5, 3, 2, 2,
- 9, 8, 3, 9, 6, 3, 2, 2, 1, 1, 1, 7, 5, 3, 20, 4, 4, 4, 3, 3, 4, 2, 2, 2, 1, 2, 2, 1, 3, 3, 20, 1, 7, 3, 3, 2, 1, 9, 4, 1, 2,
- 2, 2, 2, 2, 1, 1, 26, 4, 2, 11, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 214,1, 14, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 1, 8, 2, 1, 3, 23, 5, 3,
- 8, 8, 2, 3, 5, 1, 73, 5, 1, 12, 7, 4, 4, 3, 2, 2, 3, 15, 3, 3, 4, 3, 2, 2, 26, 9, 9, 9, 9, 8, 4, 16, 4, 11, 11, 5, 4, 4, 2, 1, 57,
- 2, 51, 51, 2, 2, 1, 2, 2, 3, 3, 3, 2, 9, 3, 4, 2, 2, 10, 10, 9, 5, 1, 10, 1, 1, 8, 7, 4, 2, 43, 2, 22, 7, 13, 13, 5, 5, 3, 1, 4, 2,
- 2, 1, 25, 4, 8, 3, 3, 3, 2, 5, 2, 3, 2, 9, 2, 2, 1, 7, 6, 15, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 4, 3, 65, 7, 2, 2, 2, 3, 2, 18, 1,
- 1, 1, 4, 4, 4, 3, 7, 9, 6, 3, 16, 5, 5, 5, 4, 8, 5, 5, 5, 3, 15, 14, 3, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 5, 2, 235,34, 6, 6, 6, 8, 5, 8, 7, 4, 3, 3, 3, 3, 3, 3, 58, 3, 3, 2, 2, 8, 3, 2, 2,
- 1, 39, 5, 5, 1, 1, 1, 6, 5, 5, 5, 13, 9, 8, 5, 5, 3, 1, 1, 9, 9, 9, 9, 1, 1, 2, 2, 3, 2, 2, 34, 8, 6, 6, 6, 6, 6, 10, 8, 8, 35,
- 13, 13, 1, 1, 6, 5, 3, 12, 2, 4, 4, 4, 3, 5, 5, 2, 2, 54, 2, 2, 2, 2, 2, 2, 20, 3, 3, 3, 15, 14, 10, 7, 7, 10, 1, 1, 21, 1, 4, 2, 2,
- 15, 9, 8, 13, 5, 5, 3, 3, 3, 4, 2, 54, 5, 3, 2, 14, 6, 2, 2, 2, 4, 4, 4, 7, 7, 6, 7, 4, 4, 1, 2, 2, 2, 1, 1, 1, 1, 4, 1, 3, 3,
- 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 9, 6, 6, 6, 6, 1, 1, 1, 1, 1, 12, 3, 1, 1, 1, 1, 1, 5, 1, 183,24, 1, 1, 1, 5, 6,
- 6, 5, 5, 5, 8, 3, 5, 5, 5, 14, 6, 2, 2, 4, 2, 5, 26, 7, 7, 7, 5, 4, 4, 4, 4, 4, 2, 2, 6, 18, 5, 5, 9, 5, 4, 4, 4, 54, 3, 3, 3,
- 3, 17, 1, 1, 1, 1, 12, 4, 3, 3, 3, 2, 4, 4, 4, 4, 2, 2, 1, 1, 1, 18, 2, 1, 1, 1, 2, 2, 8, 1, 1, 1, 1, 5, 1, 4, 1, 1, 2, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 12, 7, 7, 7, 6, 6, 4, 2, 1, 1, 17, 14, 5, 4, 3, 3, 5, 5, 5, 5, 3, 3, 3, 3, 22, 9, 4, 1, 1, 7, 207,6, 3,
- 2, 46, 2, 2, 5, 3, 5, 1, 1, 1, 3, 3, 3, 3, 2, 2, 6, 6, 2, 9, 9, 9, 9, 6, 6, 4, 2, 1, 1, 4, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2,
- 85, 18, 1, 11, 5, 18, 10, 5, 5, 2, 2, 2, 12, 4, 3, 4, 2, 3, 13, 7, 1, 5, 3, 2, 2, 4, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 10, 10, 9, 9, 9,
- 8, 5, 19, 1, 1, 4, 2, 2, 2, 2, 2, 1, 5, 4, 4, 3, 3, 1, 1, 4, 3, 1, 1, 1, 44, 1, 1, 1, 1, 18, 11, 7, 15, 14, 14, 13, 9, 8, 6, 3, 51,
- 1, 1, 1, 7, 7, 3, 3, 3, 2, 3, 3, 3, 4, 2, 2, 2, 1, 5, 5, 3, 3, 6, 1, 6, 2, 1, 1, 1, 1, 3, 3, 3, 3, 12, 1, 1, 1, 1, 2, 6, 4,
- 2, 2, 2, 2, 1, 1, 1, 174,24, 3, 1, 3, 14, 13, 3, 3, 2, 28, 8, 8, 5, 15, 2, 2, 3, 3, 2, 4, 33, 4, 4, 4, 8, 6, 6, 12, 10, 10, 4, 2, 2,
- 3, 3, 3, 35, 11, 5, 2, 6, 3, 5, 4, 6, 5, 4, 2, 2, 2, 9, 8, 8, 5, 28, 1, 2, 2, 2, 18, 18, 11, 6, 5, 2, 2, 16, 9, 3, 3, 3, 3, 3, 3,
- 3, 2, 2, 5, 5, 5, 4, 10, 4, 4, 4, 87, 7, 4, 2, 2, 2, 23, 2, 1, 1, 2, 7, 4, 4, 3, 3, 10, 7, 3, 2, 7, 1, 1, 1, 1, 3, 23, 12, 1, 2,
- 4, 2, 4, 4, 2, 4, 1, 1, 2, 2, 2, 1, 1, 3, 3, 44, 13, 8, 8, 8, 4, 3, 3, 2, 1, 13, 11, 3, 8, 8, 9, 9, 9, 9, 3, 1, 1, 1, 1, 5, 4,
- 4, 4, 29, 2, 2, 2, 2, 2, 2, 19, 18, 17, 7, 4, 24, 10, 10, 10, 14, 5, 7, 3, 2, 2, 15, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 11, 5, 3, 5,
- 4, 46, 6, 1, 1, 2, 8, 6, 7, 4, 1, 17, 7, 6, 6, 4, 9, 9, 8, 2, 4, 2, 2, 1, 21, 6, 3, 3, 3, 3, 1, 3, 2, 2, 2, 1, 1, 1, 1, 2, 1,
- 2, 1, 3, 1, 1, 1, 5, 2, 3, 3, 1, 1, 1, 1, 13, 13, 12, 7, 5, 5, 5, 1, 1, 223,10, 5, 2, 9, 5, 4, 27, 11, 8, 4, 2, 2, 2, 3, 2, 2, 1,
- 7, 2, 26, 6, 5, 8, 3, 3, 5, 5, 2, 2, 5, 4, 4, 4, 6, 6, 2, 11, 2, 6, 2, 2, 18, 10, 10, 10, 4, 3, 8, 8, 80, 29, 2, 15, 13, 2, 1, 7, 5,
- 2, 2, 28, 5, 5, 5, 14, 14, 14, 8, 7, 7, 5, 5, 20, 20, 10, 10, 10, 10, 10, 10, 7, 6, 3, 36, 3, 2, 2, 2, 2, 1, 1, 4, 4, 3, 3, 3, 3, 14, 9,
- 15, 2, 1, 1, 1, 3, 3, 3, 3, 3, 8, 2, 23, 20, 15, 5, 19, 15, 5, 5, 5, 4, 4, 4, 9, 8, 6, 6, 3, 25, 5, 11, 9, 5, 3, 9, 6, 6, 6, 12, 10,
- 9, 6, 1, 5, 2, 2, 2, 43, 3, 3, 3, 12, 7, 7, 7, 7, 6, 17, 2, 1, 1, 1, 2, 1, 9, 7, 7, 7, 7, 1, 1, 1, 2, 1, 2, 1, 1, 9, 4, 1, 1,
- 1, 3, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 8, 7, 6, 3, 17, 6, 5, 10, 10, 5, 4, 3, 3, 3, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1,
- 1, 4, 3, 3, 20, 4, 4, 3, 3, 1, 2, 7, 6, 2, 2, 24, 3, 3, 3, 2, 9, 6, 6, 5, 9, 2, 3, 3, 1, 1, 1, 35, 21, 6, 3, 12, 11, 11, 11, 11, 10,
- 5, 3, 2, 2, 2, 2, 7, 1, 3, 2, 2, 2, 1, 21, 1, 1, 3, 3, 2, 2, 6, 5, 4, 4, 11, 10, 10, 1, 1, 1, 24, 2, 6, 2, 3, 2, 2, 1, 1, 1, 1,
- 1, 9, 7, 7, 7, 19, 2, 1, 1, 1, 7, 4, 2, 6, 2, 8, 2, 2, 3, 3, 2, 1, 1, 21, 3, 10, 9, 5, 5, 5, 5, 1, 1, 1, 8, 8, 8, 3, 1, 1, 2,
- 2, 4, 4, 3, 2, 2, 12, 9, 5, 4, 9, 3, 3, 3, 3, 3, 62, 22, 1, 1, 1, 4, 1, 4, 1, 3, 2, 4, 3, 3, 2, 1, 1, 1, 3, 2, 2, 12, 2, 17, 7,
- 7, 7, 3, 2, 2, 2, 2, 2, 9, 9, 6, 6, 5, 3, 3, 8, 1, 1, 1, 2, 1, 2, 2, 124,24, 10, 9, 9, 5, 5, 5, 57, 13, 13, 5, 5, 20, 2, 1, 6, 9,
- 5, 22, 22, 14, 12, 12, 11, 23, 2, 2, 2, 3, 3, 3, 5, 4, 4, 10, 18, 10, 4, 2, 2, 2, 2, 4, 3, 3, 2, 5, 2, 53, 6, 6, 5, 3, 3, 3, 6, 3, 2,
- 17, 3, 2, 9, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 32, 3, 1, 4, 2, 2, 2, 7, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 9, 1, 2, 2, 3, 5, 1, 2,
- 2, 1, 1, 217,23, 1, 2, 6, 1, 2, 2, 15, 4, 4, 4, 4, 2, 3, 2, 2, 38, 3, 2, 1, 4, 1, 1, 1, 1, 7, 5, 4, 2, 13, 10, 4, 3, 3, 2, 1, 2,
- 3, 1, 56, 5, 48, 3, 4, 3, 2, 1, 2, 2, 4, 2, 5, 10, 7, 5, 3, 3, 2, 2, 2, 53, 7, 3, 3, 3, 3, 3, 3, 32, 1, 1, 1, 1, 4, 3, 1, 2, 2,
- 1, 1, 5, 5, 5, 5, 5, 4, 2, 2, 4, 1, 1, 1, 1, 7, 3, 3, 3, 4, 3, 3, 3, 6, 4, 4, 2, 12, 4, 4, 8, 8, 2, 3, 1, 3, 6, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 51, 8, 7, 9, 9, 7, 6, 3, 2, 2, 5, 4, 4, 4, 7, 2, 8, 2, 4, 4, 23, 2, 1, 1, 1, 1, 4, 8, 4, 3, 2, 5, 1, 7, 3,
- 24, 5, 2, 8, 3, 2, 2, 15, 5, 3, 2, 4, 2, 2, 30, 20, 11, 8, 4, 1, 5, 5, 8, 2, 10, 8, 2, 4, 4, 3, 45, 1, 2, 10, 8, 7, 4, 3, 1, 1, 13,
- 9, 5, 3, 3, 2, 1, 1, 3, 8, 11, 9, 9, 8, 4, 22, 4, 1, 2, 9, 6, 17, 3, 2, 5, 3, 2, 5, 2, 92, 3, 27, 20, 17, 10, 7, 2, 6, 5, 2, 9, 7,
- 6, 6, 6, 3, 3, 3, 3, 3, 13, 1, 1, 1, 5, 4, 4, 5, 4, 2, 1, 4, 3, 15, 2, 6, 5, 3, 2, 2, 2, 2, 67, 30, 26, 3, 2, 3, 2, 1, 8, 6, 22,
- 2, 2, 9, 7, 4, 3, 4, 7, 5, 3, 29, 24, 2, 2, 12, 1, 5, 1, 1, 4, 1, 1, 1, 1, 1, 6, 4, 2, 34, 10, 2, 2, 2, 2, 1, 2, 3, 2, 1, 1, 1,
- 2, 2, 2, 2, 2, 2, 3, 3, 2, 1, 7, 2, 3, 10, 2, 2, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 38, 7, 3, 11, 5, 5, 2, 2, 3, 3, 3,
- 6, 5, 5, 4, 2, 2, 177,5, 2, 4, 5, 4, 3, 97, 7, 4, 2, 10, 6, 5, 4, 3, 2, 2, 11, 4, 4, 4, 4, 2, 2, 2, 2, 10, 7, 3, 3, 2, 9, 2, 3,
- 3, 1, 1, 4, 2, 2, 15, 11, 10, 2, 34, 26, 2, 7, 3, 4, 5, 2, 25, 24, 3, 13, 6, 3, 5, 2, 15, 3, 5, 1, 9, 3, 1, 13, 9, 44, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 5, 4, 6, 5, 5, 4, 4, 3, 3, 7, 3, 2, 5, 5, 4, 19, 4, 3, 1, 6, 2, 3, 32, 10, 3, 6, 1, 6, 3, 1, 2, 1, 1, 1, 2,
- 45, 3, 21, 1, 2, 8, 4, 3, 2, 9, 8, 3, 1, 25, 10, 5, 2, 2, 2, 4, 4, 1, 1, 1, 122,15, 6, 5, 4, 4, 3, 57, 49, 3, 7, 4, 3, 3, 3, 1, 1,
- 21, 9, 2, 1, 1, 9, 1, 4, 3, 2, 177,11, 2, 4, 5, 3, 8, 6, 3, 29, 4, 2, 3, 7, 5, 1, 27, 5, 7, 5, 13, 2, 6, 17, 9, 5, 4, 18, 5, 1, 3,
- 6, 3, 1, 17, 3, 3, 11, 6, 6, 4, 1, 1, 1, 1, 1, 4, 3, 13, 7, 6, 3, 2, 2, 2, 11, 11, 6, 3, 95, 5, 2, 10, 6, 5, 14, 2, 3, 2, 2, 2, 5,
- 5, 1, 13, 2, 8, 2, 19, 4, 9, 2, 2, 2, 6, 4, 3, 1, 1, 1, 1, 81, 2, 1, 5, 5, 4, 2, 15, 13, 12, 9, 32, 31, 4, 8, 8, 7, 3, 5, 3, 2, 10,
- 3, 2, 24, 6, 9, 6, 2, 2, 2, 4, 3, 27, 9, 1, 9, 3, 7, 19, 6, 2, 2, 2, 3, 2, 2, 5, 5, 2, 4, 53, 14, 1, 1, 1, 1, 1, 1, 1, 4, 3, 2,
- 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 4, 2, 5, 2, 2, 3, 3, 3, 1, 1, 4, 4, 2, 2, 1, 1, 26, 7, 4, 16, 2, 2, 4, 1, 9, 2, 2, 1, 1, 4,
- 1, 1, 1, 1, 1, 3, 51, 4, 3, 3, 44, 3, 3, 2, 2, 2, 3, 1, 1, 7, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 3, 3, 3, 10, 5, 2, 3, 1, 1, 1,
- 1, 1, 2, 2, 6, 1, 1, 2, 4, 1, 1, 23, 2, 11, 3, 2, 1, 1, 2, 1, 1, 1, 27, 3, 13, 2, 2, 3, 2, 3, 45, 43, 14, 14, 6, 5, 4, 2, 12, 6, 3,
- 1, 2, 9, 2, 2, 3, 2, 3, 36, 2, 4, 4, 2, 2, 19, 3, 6, 2, 7, 2, 2, 2, 13, 3, 3, 4, 100,4, 4, 3, 6, 10, 2, 3, 7, 2, 3, 1, 43, 6, 9,
- 13, 5, 4, 4, 11, 4, 8, 5, 2, 11, 1, 4, 4, 4, 4, 4, 3, 9, 5, 3, 101,5, 2, 2, 5, 12, 9, 5, 4, 4, 10, 6, 13, 4, 3, 5, 3, 5, 1, 2, 9,
- 4, 2, 20, 3, 5, 2, 9, 3, 2, 2, 2, 2, 90, 2, 2, 3, 3, 2, 1, 2, 1, 4, 3, 3, 35, 2, 10, 17, 12, 10, 2, 8, 4, 29, 1, 24, 4, 3, 3, 4, 3,
- 2, 40, 5, 1, 4, 4, 3, 3, 6, 2, 13, 5, 5, 3, 3, 3, 1, 22, 2, 1, 13, 12, 5, 4, 3, 3, 7, 3, 2, 5, 1, 1, 1, 1, 2, 1, 1, 16, 5, 3, 2,
- 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1, 1, 196,14, 9, 1, 5, 2, 3, 1, 1, 1, 1, 1, 2, 1, 2, 19, 2, 1, 1, 1, 1, 12, 2, 5,
- 4, 4, 3, 12, 6, 64, 2, 1, 1, 12, 10, 1, 8, 5, 2, 5, 3, 31, 5, 21, 39, 5, 3, 2, 2, 2, 11, 2, 4, 3, 3, 12, 4, 3, 7, 1, 1, 4, 4, 4, 3,
- 2, 2, 3, 4, 3, 12, 7, 4, 3, 2, 2, 1, 12, 1, 1, 1, 1, 2, 1, 1, 5, 1, 1, 1, 1, 1, 6, 2, 2, 2, 2, 2, 1, 6, 1, 1, 2, 1, 3, 1, 1,
- 1, 1, 1, 1, 1, 25, 2, 2, 14, 7, 4, 4, 4, 14, 5, 2, 2, 19, 2, 2, 5, 2, 2, 9, 4, 3, 2, 2, 13, 2, 2, 4, 1, 1, 39, 5, 2, 3, 3, 2, 5,
- 2, 2, 4, 5, 1, 5, 1, 4, 4, 3, 10, 2, 2, 118,23, 21, 12, 5, 4, 2, 2, 2, 1, 4, 89, 5, 3, 4, 3, 3, 2, 2, 5, 2, 2, 2, 5, 2, 2, 14, 9,
- 2, 2, 21, 7, 6, 5, 4, 3, 1, 18, 14, 5, 5, 6, 5, 26, 19, 14, 5, 4, 33, 4, 11, 1, 3, 4, 10, 5, 6, 63, 12, 4, 4, 4, 4, 15, 12, 6, 3, 1, 1,
- 3, 1, 9, 6, 11, 4, 1, 1, 3, 3, 61, 1, 38, 27, 24, 4, 5, 7, 6, 2, 1, 3, 2, 2, 2, 92, 1, 2, 37, 6, 5, 17, 16, 2, 1, 1, 1, 1, 26, 17, 16,
- 10, 3, 3, 4, 4, 4, 29, 3, 21, 2, 17, 7, 7, 5, 9, 7, 14, 4, 4, 3, 3, 5, 4, 3, 1, 1, 1, 1, 1, 22, 3, 3, 5, 4, 3, 3, 7, 3, 2, 2, 2,
- 3, 1, 1, 2, 1, 1, 7, 2, 2, 1, 6, 3, 1, 1, 1, 22, 16, 4, 2, 4, 2, 1, 5, 17, 3, 3, 8, 5, 3, 41, 8, 3, 5, 11, 7, 10, 6, 4, 3, 3, 13,
- 4, 4, 2, 2, 21, 2, 2, 2, 11, 3, 3, 3, 3, 2, 1, 8, 4, 16, 12, 10, 3, 2, 6, 4, 1, 6, 3, 70, 7, 44, 16, 10, 15, 5, 4, 4, 1, 2, 12, 1, 1,
- 1, 3, 4, 30, 3, 7, 3, 2, 16, 2, 2, 4, 114,2, 1, 7, 3, 24, 1, 1, 7, 2, 8, 2, 19, 1, 5, 1, 5, 29, 3, 2, 2, 13, 11, 1, 1, 1, 3, 3, 2,
- 17, 5, 3, 2, 4, 2, 2, 5, 4, 1, 7, 6, 4, 4, 59, 9, 4, 5, 4, 7, 6, 6, 5, 2, 21, 10, 3, 1, 1, 1, 3, 75, 3, 2, 67, 4, 3, 4, 3, 2, 2,
- 41, 9, 4, 4, 8, 6, 20, 5, 3, 2, 2, 2, 4, 9, 4, 13, 10, 8, 4, 4, 3, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 5, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, 3, 2, 1, 7, 5, 1, 4, 4, 4, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 14, 2, 2, 1, 2, 41, 11, 2,
- 1, 2, 6, 6, 4, 3, 3, 5, 2, 4, 5, 2, 2, 31, 2, 11, 4, 2, 3, 1, 1, 2, 2, 4, 2, 7, 3, 3, 3, 34, 6, 8, 2, 7, 3, 2, 2, 2, 23, 3, 4,
- 1, 1, 2, 2, 1, 1, 1, 4, 2, 1, 1, 1, 1, 1, 11, 4, 2, 2, 20, 7, 1, 2, 2, 41, 15, 4, 2, 6, 2, 8, 4, 4, 1, 5, 2, 1, 1, 1, 1, 1, 4,
- 2, 52, 2, 2, 3, 2, 8, 3, 2, 7, 3, 2, 7, 4, 4, 1, 1, 1, 7, 5, 3, 9, 4, 1, 1, 37, 18, 2, 3, 2, 2, 2, 1, 1, 4, 3, 4, 2, 3, 197,31,
- 4, 2, 3, 2, 1, 8, 6, 1, 2, 3, 3, 4, 6, 2, 2, 1, 1, 2, 2, 3, 2, 24, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 1, 5, 1, 3, 4, 3, 2, 1, 1,
+ 8, 4, 2, 9, 7, 4, 2, 22, 7, 3, 3, 3, 5, 2, 3, 17, 2, 8, 3, 3, 2, 2, 4, 4, 4, 3, 4, 6, 2, 2, 10, 3, 2, 3, 4, 14, 1, 1, 3, 2, 18,
+ 8, 2, 6, 1, 3, 23, 2, 2, 2, 3, 3, 5, 2, 1, 1, 3, 2, 19, 6, 2, 4, 4, 2, 2, 1, 2, 42, 27, 3, 3, 16, 2, 5, 4, 3, 6, 42, 6, 23, 23, 19,
+ 5, 3, 4, 2, 23, 4, 10, 5, 3, 3, 12, 5, 4, 2, 1, 3, 30, 2, 6, 3, 1, 1, 1, 5, 6, 6, 3, 3, 3, 3, 3, 80, 9, 3, 1, 10, 4, 36, 8, 4, 4,
+ 4, 12, 5, 3, 10, 14, 2, 3, 2, 19, 12, 3, 2, 2, 2, 2, 99, 9, 1, 3, 4, 3, 4, 8, 4, 2, 15, 2, 9, 3, 2, 4, 3, 4, 4, 4, 5, 1, 14, 5, 1,
+ 1, 4, 3, 8, 12, 3, 31, 3, 16, 8, 8, 4, 10, 5, 1, 6, 3, 151,7, 2, 6, 3, 2, 2, 4, 1, 1, 18, 6, 2, 2, 7, 2, 2, 22, 4, 6, 3, 6, 2, 4,
+ 3, 3, 12, 6, 3, 2, 10, 5, 2, 2, 2, 2, 40, 6, 1, 17, 10, 3, 4, 8, 16, 6, 5, 103,7, 19, 19, 11, 4, 13, 2, 2, 2, 12, 3, 3, 2, 3, 4, 3, 4,
+ 2, 3, 2, 4, 1, 1, 1, 23, 4, 7, 4, 4, 3, 3, 5, 4, 3, 3, 2, 106,8, 1, 1, 1, 1, 1, 1, 3, 2, 4, 16, 2, 4, 7, 3, 3, 11, 2, 6, 8, 7,
+ 1, 1, 1, 1, 2, 1, 1, 1, 1, 4, 2, 26, 3, 2, 2, 2, 3, 3, 9, 3, 65, 8, 3, 37, 2, 5, 5, 18, 3, 2, 2, 2, 2, 2, 4, 3, 8, 2, 5, 5, 3,
+ 2, 64, 12, 9, 6, 3, 32, 1, 1, 10, 6, 6, 2, 7, 2, 1, 5, 4, 3, 3, 93, 12, 1, 4, 2, 3, 2, 3, 13, 4, 3, 6, 2, 8, 5, 2, 10, 5, 3, 8, 4,
+ 3, 2, 8, 2, 4, 6, 3, 1, 51, 10, 8, 2, 21, 17, 2, 2, 3, 9, 7, 2, 2, 6, 2, 1, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 249,1,
+ 1, 2, 83, 2, 4, 2, 2, 2, 3, 1, 3, 3, 3, 5, 5, 4, 20, 5, 3, 3, 8, 3, 6, 3, 2, 2, 2, 3, 3, 3, 3, 3, 13, 1, 2, 2, 5, 3, 1, 5, 2,
+ 4, 1, 1, 19, 7, 7, 3, 4, 6, 54, 5, 6, 33, 9, 6, 5, 4, 5, 1, 1, 1, 2, 1, 4, 3, 39, 25, 3, 2, 15, 12, 3, 1, 2, 27, 7, 5, 10, 3, 3, 8,
+ 2, 32, 4, 1, 1, 1, 4, 13, 1, 1, 1, 7, 4, 7, 2, 2, 2, 46, 4, 28, 5, 2, 8, 2, 4, 4, 3, 2, 7, 58, 7, 2, 2, 2, 5, 2, 15, 12, 2, 2, 3,
+ 2, 4, 1, 1, 1, 1, 4, 2, 1, 1, 6, 6, 4, 5, 5, 2, 39, 3, 6, 12, 2, 2, 2, 2, 26, 2, 16, 9, 2, 7, 3, 3, 4, 37, 2, 2, 10, 4, 3, 9, 3,
+ 2, 5, 13, 7, 5, 4, 3, 2, 2, 206,4, 3, 2, 39, 1, 1, 18, 2, 2, 4, 3, 4, 1, 1, 6, 4, 2, 3, 2, 7, 6, 5, 1, 7, 3, 11, 3, 3, 1, 1, 1,
+ 21, 4, 5, 1, 2, 3, 3, 2, 4, 1, 1, 1, 1, 56, 2, 11, 1, 1, 1, 7, 5, 4, 4, 4, 3, 3, 3, 10, 4, 10, 4, 22, 1, 1, 7, 4, 3, 3, 17, 4, 7,
+ 1, 1, 1, 2, 2, 5, 2, 2, 2, 4, 2, 6, 1, 1, 1, 1, 1, 1, 9, 5, 2, 9, 6, 14, 6, 3, 2, 2, 4, 3, 16, 4, 9, 25, 2, 8, 2, 5, 1, 1, 4,
+ 2, 108,2, 6, 6, 2, 1, 3, 13, 7, 4, 2, 3, 3, 9, 4, 5, 37, 6, 4, 2, 2, 3, 3, 2, 2, 4, 2, 3, 2, 1, 6, 2, 2, 2, 2, 5, 4, 39, 2, 10,
+ 5, 2, 2, 3, 7, 3, 3, 2, 4, 23, 1, 2, 1, 1, 4, 6, 4, 16, 4, 6, 6, 5, 3, 5, 10, 7, 4, 4, 4, 105,12, 6, 4, 3, 1, 1, 7, 5, 9, 2, 15,
+ 6, 5, 5, 4, 4, 4, 4, 7, 3, 3, 21, 2, 11, 2, 1, 3, 7, 5, 5, 13, 1, 2, 1, 6, 6, 6, 4, 4, 9, 3, 1, 4, 3, 4, 222,9, 2, 8, 5, 40, 14,
+ 11, 2, 2, 2, 1, 5, 2, 3, 20, 15, 6, 5, 4, 2, 12, 2, 2, 9, 4, 9, 4, 3, 11, 6, 2, 1, 1, 1, 5, 1, 41, 4, 18, 3, 3, 3, 6, 4, 16, 6, 2,
+ 6, 6, 34, 2, 22, 9, 4, 3, 3, 9, 4, 20, 4, 4, 3, 4, 6, 12, 1, 3, 31, 7, 4, 2, 2, 2, 1, 1, 1, 1, 12, 7, 3, 2, 1, 1, 1, 1, 1, 21, 4,
+ 4, 2, 2, 2, 7, 6, 2, 34, 6, 8, 6, 13, 3, 4, 4, 4, 2, 2, 1, 8, 4, 4, 1, 1, 13, 29, 1, 5, 4, 2, 2, 2, 3, 5, 1, 2, 8, 6, 3, 3, 2,
+ 10, 4, 4, 8, 4, 1, 1, 1, 1, 1, 8, 4, 2, 51, 18, 14, 3, 4, 3, 3, 3, 3, 3, 11, 5, 3, 1, 12, 3, 5, 6, 5, 25, 12, 11, 8, 5, 2, 5, 4, 25,
+ 5, 8, 2, 3, 2, 7, 1, 4, 2, 1, 1, 45, 7, 3, 1, 10, 15, 5, 4, 1, 3, 38, 6, 6, 4, 2, 19, 7, 3, 2, 2, 2, 1, 2, 2, 2, 2, 3, 21, 3, 3,
+ 3, 1, 1, 1, 1, 1, 5, 2, 5, 3, 3, 14, 3, 4, 2, 2, 2, 2, 2, 2, 66, 4, 3, 1, 8, 7, 7, 3, 3, 2, 6, 3, 3, 3, 3, 5, 5, 3, 26, 15, 9,
+ 1, 1, 2, 1, 1, 4, 3, 6, 4, 4, 1, 1, 49, 4, 4, 15, 14, 13, 1, 1, 3, 2, 2, 2, 1, 1, 3, 3, 1, 1, 5, 2, 2, 2, 2, 1, 2, 2, 11, 2, 4,
+ 2, 4, 28, 1, 1, 1, 1, 2, 5, 3, 7, 1, 1, 1, 1, 2, 1, 14, 7, 4, 2, 2, 2, 16, 2, 4, 2, 2, 15, 9, 1, 1, 1, 1, 1, 4, 1, 1, 2, 49, 2,
+ 13, 3, 4, 2, 2, 5, 2, 1, 3, 2, 4, 4, 3, 1, 2, 3, 4, 1, 16, 6, 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4,
+ 4, 4, 3, 2, 4, 1, 1, 32, 13, 5, 4, 9, 8, 7, 3, 2, 2, 36, 2, 30, 9, 3, 1, 1, 1, 1, 3, 4, 3, 1, 1, 2, 2, 2, 2, 4, 5, 1, 28, 5, 4,
+ 12, 2, 5, 4, 2, 3, 38, 3, 2, 1, 2, 19, 7, 5, 5, 5, 2, 2, 2, 6, 4, 4, 4, 4, 3, 1, 2, 2, 92, 4, 2, 3, 13, 3, 3, 7, 7, 3, 3, 3, 59,
+ 6, 2, 2, 4, 4, 1, 13, 4, 4, 7, 5, 5, 5, 2, 5, 9, 2, 2, 1, 7, 5, 5, 1, 1, 3, 3, 2, 2, 2, 1, 1, 18, 10, 6, 6, 3, 2, 3, 1, 1, 11,
+ 2, 6, 2, 184,12, 7, 6, 4, 9, 2, 25, 3, 1, 1, 12, 3, 3, 3, 2, 2, 3, 2, 3, 3, 5, 3, 2, 6, 6, 1, 1, 1, 4, 79, 9, 3, 3, 6, 3, 3, 3,
+ 1, 23, 3, 3, 3, 3, 2, 3, 2, 6, 4, 2, 2, 1, 2, 9, 3, 1, 1, 11, 3, 3, 3, 6, 2, 12, 4, 2, 3, 9, 1, 1, 1, 2, 2, 2, 3, 30, 5, 3, 3,
+ 10, 3, 1, 2, 8, 6, 6, 2, 1, 132,6, 14, 8, 2, 2, 2, 5, 39, 13, 9, 3, 1, 2, 2, 1, 1, 1, 2, 4, 6, 3, 11, 2, 10, 12, 5, 4, 3, 6, 2, 2,
+ 1, 1, 3, 3, 3, 6, 13, 5, 4, 3, 4, 48, 4, 4, 3, 2, 2, 32, 2, 2, 2, 9, 3, 2, 2, 3, 12, 4, 2, 2, 2, 3, 3, 3, 1, 1, 1, 5, 72, 12, 4,
+ 2, 2, 2, 17, 2, 2, 2, 5, 3, 3, 20, 1, 11, 11, 3, 3, 5, 1, 1, 1, 1, 82, 4, 4, 4, 2, 7, 7, 7, 6, 4, 12, 5, 2, 40, 3, 1, 1, 32, 1, 1,
+ 1, 1, 1, 1, 4, 4, 1, 1, 1, 21, 19, 4, 8, 3, 3, 3, 3, 3, 3, 2, 58, 2, 16, 16, 4, 4, 4, 4, 5, 4, 4, 4, 2, 5, 3, 3, 3, 3, 11, 4, 5,
+ 6, 1, 1, 1, 4, 5, 2, 24, 1, 2, 2, 4, 3, 2, 3, 2, 1, 3, 3, 1, 2, 2, 8, 7, 3, 4, 2, 3, 1, 1, 1, 1, 13, 8, 3, 1, 4, 3, 2, 1, 13,
+ 5, 3, 1, 7, 2, 2, 26, 9, 3, 3, 8, 52, 4, 18, 4, 6, 3, 9, 5, 2, 2, 3, 2, 1, 2, 2, 2, 2, 4, 2, 64, 20, 2, 2, 2, 2, 1, 8, 2, 2, 6,
+ 4, 39, 31, 6, 3, 2, 2, 2, 2, 20, 8, 1, 3, 2, 41, 4, 5, 6, 2, 1, 1, 14, 5, 4, 4, 1, 3, 2, 4, 2, 62, 3, 12, 4, 2, 4, 4, 2, 4, 7, 3,
+ 5, 3, 8, 2, 2, 6, 54, 2, 31, 3, 8, 2, 3, 5, 3, 2, 2, 2, 2, 5, 1, 1, 1, 3, 2, 5, 2, 5, 5, 2, 2, 1, 1, 55, 10, 5, 2, 8, 2, 3, 1,
+ 9, 3, 5, 7, 3, 3, 2, 4, 3, 35, 11, 8, 3, 3, 2, 1, 1, 1, 1, 1, 5, 4, 6, 3, 17, 3, 8, 5, 4, 1, 19, 2, 6, 3, 3, 2, 5, 1, 2, 11, 2,
+ 13, 7, 3, 3, 3, 3, 6, 39, 13, 8, 2, 1, 1, 4, 4, 4, 2, 1, 16, 3, 2, 3, 5, 24, 6, 6, 5, 1, 4, 2, 3, 4, 110,21, 9, 8, 24, 3, 1, 9, 5,
+ 3, 2, 7, 31, 2, 16, 10, 4, 2, 4, 3, 12, 5, 2, 15, 1, 3, 3, 21, 2, 6, 2, 1, 1, 2, 3, 2, 17, 2, 1, 1, 1, 4, 4, 4, 3, 2, 2, 25, 2, 3,
+ 2, 3, 10, 5, 2, 2, 32, 4, 2, 2, 2, 5, 2, 2, 2, 3, 7, 2, 2, 2, 2, 15, 3, 2, 2, 3, 18, 1, 4, 3, 3, 2, 2, 3, 163,7, 5, 1, 85, 8, 2,
+ 3, 2, 1, 2, 2, 3, 2, 5, 2, 2, 4, 3, 2, 10, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 18, 2, 14, 2, 2, 2, 2, 2, 7, 7, 7, 7, 1, 1, 1, 1,
+ 1, 5, 3, 2, 1, 14, 5, 4, 8, 6, 2, 33, 1, 1, 1, 1, 1, 4, 4, 4, 11, 9, 9, 2, 2, 2, 2, 2, 2, 5, 5, 5, 4, 2, 2, 3, 1, 1, 166,7, 2,
+ 4, 4, 31, 23, 4, 8, 2, 3, 2, 4, 2, 46, 4, 33, 6, 4, 5, 3, 2, 3, 5, 4, 4, 4, 2, 3, 2, 2, 11, 2, 1, 1, 7, 2, 8, 5, 3, 27, 1, 1, 2,
+ 17, 5, 2, 4, 5, 6, 5, 3, 1, 1, 3, 95, 4, 3, 8, 1, 1, 4, 1, 1, 6, 2, 1, 3, 16, 2, 7, 7, 4, 3, 15, 3, 1, 2, 1, 1, 4, 2, 8, 3, 13,
+ 6, 2, 4, 3, 3, 67, 1, 14, 5, 5, 5, 4, 2, 4, 10, 8, 6, 4, 22, 11, 2, 4, 5, 231,10, 3, 7, 3, 8, 3, 17, 1, 6, 6, 6, 3, 5, 12, 3, 3, 1,
+ 4, 2, 73, 5, 17, 5, 5, 2, 2, 2, 3, 3, 3, 12, 9, 2, 7, 2, 13, 8, 4, 3, 18, 2, 1, 9, 3, 2, 3, 37, 20, 2, 2, 6, 4, 3, 5, 19, 5, 4, 6,
+ 4, 4, 4, 4, 4, 4, 1, 2, 4, 4, 109,4, 2, 7, 7, 3, 17, 2, 3, 3, 5, 3, 5, 3, 7, 5, 4, 2, 15, 1, 13, 11, 11, 10, 6, 3, 8, 3, 28, 14, 3,
+ 3, 2, 6, 4, 2, 124,1, 1, 1, 7, 2, 12, 8, 8, 4, 3, 3, 2, 7, 1, 5, 7, 6, 2, 3, 6, 6, 2, 5, 3, 2, 2, 3, 6, 15, 2, 4, 4, 3, 3, 21,
+ 6, 5, 1, 2, 5, 2, 132,2, 7, 6, 3, 13, 7, 4, 1, 2, 7, 2, 3, 11, 7, 2, 4, 1, 7, 2, 57, 2, 41, 3, 1, 2, 1, 1, 2, 2, 4, 4, 3, 6, 5,
+ 8, 2, 2, 3, 2, 2, 3, 9, 1, 2, 37, 7, 4, 3, 3, 18, 10, 3, 1, 1, 4, 1, 1, 79, 6, 9, 7, 2, 2, 6, 2, 3, 15, 5, 10, 4, 3, 11, 5, 3, 3,
+ 2, 2, 3, 5, 2, 6, 24, 4, 2, 1, 5, 4, 2, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 1, 7, 2, 3, 2, 2, 1, 1, 1, 2, 1, 9, 2,
+ 2, 2, 2, 7, 2, 1, 3, 2, 1, 1, 1, 4, 3, 3, 3, 3, 2, 1, 1, 1, 20, 1, 1, 1, 1, 1, 10, 3, 2, 2, 5, 14, 1, 1, 1, 3, 3, 2, 2, 1, 1,
+ 20, 2, 2, 2, 8, 2, 2, 1, 1, 3, 2, 41, 4, 11, 4, 3, 2, 9, 6, 4, 2, 4, 3, 3, 3, 2, 2, 21, 20, 7, 7, 3, 2, 4, 3, 2, 40, 6, 8, 2, 1,
+ 5, 4, 5, 3, 2, 4, 3, 3, 3, 45, 4, 1, 2, 1, 1, 7, 4, 4, 3, 1, 5, 9, 2, 4, 26, 18, 4, 4, 4, 4, 1, 2, 2, 2, 2, 56, 10, 14, 2, 4, 14,
+ 5, 2, 8, 6, 3, 10, 1, 1, 3, 3, 21, 5, 6, 2, 1, 1, 5, 2, 63, 5, 2, 5, 6, 5, 12, 1, 1, 1, 3, 3, 4, 10, 3, 8, 129,27, 21, 10, 5, 3, 19,
+ 2, 2, 7, 6, 2, 3, 9, 2, 2, 4, 2, 2, 2, 15, 4, 2, 8, 8, 2, 16, 9, 5, 3, 3, 3, 2, 12, 2, 9, 22, 4, 3, 1, 9, 3, 3, 5, 121,5, 4, 11,
+ 4, 2, 1, 4, 4, 4, 4, 1, 1, 14, 7, 5, 2, 9, 3, 12, 4, 5, 3, 2, 15, 2, 3, 2, 38, 1, 17, 14, 6, 6, 5, 2, 2, 6, 2, 5, 3, 5, 2, 12, 5,
+ 4, 1, 83, 7, 4, 18, 4, 3, 7, 6, 19, 3, 10, 3, 3, 3, 6, 16, 4, 1, 94, 8, 3, 4, 3, 3, 3, 3, 11, 2, 3, 5, 2, 1, 1, 19, 6, 5, 8, 1, 1,
+ 19, 4, 6, 4, 14, 3, 44, 17, 17, 6, 4, 7, 6, 4, 10, 2, 6, 13, 2, 2, 3, 3, 2, 2, 7, 1, 1, 2, 1, 1, 1, 5, 4, 3, 2, 2, 1, 1, 1, 10, 2,
+ 2, 2, 3, 8, 6, 6, 6, 4, 67, 6, 3, 2, 2, 60, 13, 3, 4, 3, 3, 44, 5, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 7,
+ 4, 4, 9, 3, 4, 6, 2, 3, 1, 2, 2, 2, 2, 6, 4, 3, 9, 6, 4, 3, 3, 1, 1, 2, 12, 4, 2, 16, 7, 4, 2, 2, 2, 2, 9, 4, 3, 4, 90, 2, 2,
+ 2, 42, 39, 2, 5, 4, 4, 2, 2, 1, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 7, 3, 2, 1, 1, 1, 1, 2, 3, 2, 2, 2,
+ 2, 2, 2, 5, 9, 9, 1, 6, 5, 30, 6, 2, 1, 1, 1, 4, 4, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 15, 3, 3, 12, 2, 2, 2, 2, 9, 6, 5, 2, 2, 1,
+ 1, 1, 1, 1, 7, 17, 3, 1, 1, 1, 7, 7, 7, 2, 5, 4, 5, 3, 2, 1, 1, 1, 1, 1, 1, 1, 12, 3, 3, 3, 4, 1, 1, 1, 1, 1, 2, 2, 75, 2, 13,
+ 11, 3, 2, 5, 2, 2, 1, 1, 2, 2, 22, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 4, 4, 17, 2, 11, 3, 2, 3, 2, 1, 6,
+ 2, 3, 2, 2, 1, 1, 57, 1, 1, 10, 4, 1, 2, 12, 2, 2, 8, 2, 1, 1, 1, 1, 1, 9, 5, 5, 2, 8, 6, 2, 2, 4, 3, 3, 4, 1, 1, 113,11, 1, 1,
+ 1, 2, 5, 3, 41, 8, 3, 3, 6, 2, 2, 2, 3, 2, 2, 3, 3, 3, 3, 8, 8, 7, 3, 2, 20, 1, 12, 3, 3, 1, 2, 3, 3, 3, 3, 1, 1, 2, 4, 3, 6,
+ 12, 9, 6, 3, 3, 1, 2, 2, 2, 2, 2, 5, 2, 111,5, 6, 5, 5, 2, 2, 2, 1, 44, 13, 10, 7, 5, 3, 1, 1, 16, 15, 13, 9, 7, 6, 6, 6, 6, 17, 2,
+ 2, 12, 1, 2, 2, 2, 2, 2, 2, 5, 1, 8, 5, 1, 1, 1, 1, 1, 1, 15, 8, 3, 3, 2, 1, 1, 6, 6, 3, 3, 3, 3, 2, 2, 13, 1, 1, 1, 1, 3, 1,
+ 2, 30, 1, 1, 1, 1, 5, 1, 1, 4, 7, 6, 5, 4, 4, 2, 1, 1, 1, 2, 1, 1, 68, 2, 2, 4, 1, 1, 1, 2, 2, 1, 6, 5, 1, 28, 11, 5, 3, 2, 2,
+ 9, 8, 3, 9, 6, 3, 2, 2, 1, 1, 1, 7, 5, 3, 20, 4, 4, 4, 3, 3, 4, 2, 2, 2, 1, 2, 2, 1, 3, 3, 20, 1, 7, 3, 3, 2, 1, 9, 4, 1, 2,
+ 2, 2, 2, 2, 1, 1, 26, 4, 2, 11, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 214,1, 14, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 1, 8, 2, 1, 3, 23, 5, 3,
+ 8, 8, 2, 3, 5, 1, 73, 5, 1, 12, 7, 4, 4, 3, 2, 2, 3, 15, 3, 3, 4, 3, 2, 2, 26, 9, 9, 9, 9, 8, 4, 16, 4, 11, 11, 5, 4, 4, 2, 1, 57,
+ 2, 51, 51, 2, 2, 1, 2, 2, 3, 3, 3, 2, 9, 3, 4, 2, 2, 10, 10, 9, 5, 1, 10, 1, 1, 8, 7, 4, 2, 43, 2, 22, 7, 13, 13, 5, 5, 3, 1, 4, 2,
+ 2, 1, 25, 4, 8, 3, 3, 3, 2, 5, 2, 3, 2, 9, 2, 2, 1, 7, 6, 15, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 4, 3, 65, 7, 2, 2, 2, 3, 2, 18, 1,
+ 1, 1, 4, 4, 4, 3, 7, 9, 6, 3, 16, 5, 5, 5, 4, 8, 5, 5, 5, 3, 15, 14, 3, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 5, 2, 235,34, 6, 6, 6, 8, 5, 8, 7, 4, 3, 3, 3, 3, 3, 3, 58, 3, 3, 2, 2, 8, 3, 2, 2,
+ 1, 39, 5, 5, 1, 1, 1, 6, 5, 5, 5, 13, 9, 8, 5, 5, 3, 1, 1, 9, 9, 9, 9, 1, 1, 2, 2, 3, 2, 2, 34, 8, 6, 6, 6, 6, 6, 10, 8, 8, 35,
+ 13, 13, 1, 1, 6, 5, 3, 12, 2, 4, 4, 4, 3, 5, 5, 2, 2, 54, 2, 2, 2, 2, 2, 2, 20, 3, 3, 3, 15, 14, 10, 7, 7, 10, 1, 1, 21, 1, 4, 2, 2,
+ 15, 9, 8, 13, 5, 5, 3, 3, 3, 4, 2, 54, 5, 3, 2, 14, 6, 2, 2, 2, 4, 4, 4, 7, 7, 6, 7, 4, 4, 1, 2, 2, 2, 1, 1, 1, 1, 4, 1, 3, 3,
+ 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 9, 6, 6, 6, 6, 1, 1, 1, 1, 1, 12, 3, 1, 1, 1, 1, 1, 5, 1, 183,24, 1, 1, 1, 5, 6,
+ 6, 5, 5, 5, 8, 3, 5, 5, 5, 14, 6, 2, 2, 4, 2, 5, 26, 7, 7, 7, 5, 4, 4, 4, 4, 4, 2, 2, 6, 18, 5, 5, 9, 5, 4, 4, 4, 54, 3, 3, 3,
+ 3, 17, 1, 1, 1, 1, 12, 4, 3, 3, 3, 2, 4, 4, 4, 4, 2, 2, 1, 1, 1, 18, 2, 1, 1, 1, 2, 2, 8, 1, 1, 1, 1, 5, 1, 4, 1, 1, 2, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 12, 7, 7, 7, 6, 6, 4, 2, 1, 1, 17, 14, 5, 4, 3, 3, 5, 5, 5, 5, 3, 3, 3, 3, 22, 9, 4, 1, 1, 7, 207,6, 3,
+ 2, 46, 2, 2, 5, 3, 5, 1, 1, 1, 3, 3, 3, 3, 2, 2, 6, 6, 2, 9, 9, 9, 9, 6, 6, 4, 2, 1, 1, 4, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2,
+ 85, 18, 1, 11, 5, 18, 10, 5, 5, 2, 2, 2, 12, 4, 3, 4, 2, 3, 13, 7, 1, 5, 3, 2, 2, 4, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 10, 10, 9, 9, 9,
+ 8, 5, 19, 1, 1, 4, 2, 2, 2, 2, 2, 1, 5, 4, 4, 3, 3, 1, 1, 4, 3, 1, 1, 1, 44, 1, 1, 1, 1, 18, 11, 7, 15, 14, 14, 13, 9, 8, 6, 3, 51,
+ 1, 1, 1, 7, 7, 3, 3, 3, 2, 3, 3, 3, 4, 2, 2, 2, 1, 5, 5, 3, 3, 6, 1, 6, 2, 1, 1, 1, 1, 3, 3, 3, 3, 12, 1, 1, 1, 1, 2, 6, 4,
+ 2, 2, 2, 2, 1, 1, 1, 174,24, 3, 1, 3, 14, 13, 3, 3, 2, 28, 8, 8, 5, 15, 2, 2, 3, 3, 2, 4, 33, 4, 4, 4, 8, 6, 6, 12, 10, 10, 4, 2, 2,
+ 3, 3, 3, 35, 11, 5, 2, 6, 3, 5, 4, 6, 5, 4, 2, 2, 2, 9, 8, 8, 5, 28, 1, 2, 2, 2, 18, 18, 11, 6, 5, 2, 2, 16, 9, 3, 3, 3, 3, 3, 3,
+ 3, 2, 2, 5, 5, 5, 4, 10, 4, 4, 4, 87, 7, 4, 2, 2, 2, 23, 2, 1, 1, 2, 7, 4, 4, 3, 3, 10, 7, 3, 2, 7, 1, 1, 1, 1, 3, 23, 12, 1, 2,
+ 4, 2, 4, 4, 2, 4, 1, 1, 2, 2, 2, 1, 1, 3, 3, 44, 13, 8, 8, 8, 4, 3, 3, 2, 1, 13, 11, 3, 8, 8, 9, 9, 9, 9, 3, 1, 1, 1, 1, 5, 4,
+ 4, 4, 29, 2, 2, 2, 2, 2, 2, 19, 18, 17, 7, 4, 24, 10, 10, 10, 14, 5, 7, 3, 2, 2, 15, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 11, 5, 3, 5,
+ 4, 46, 6, 1, 1, 2, 8, 6, 7, 4, 1, 17, 7, 6, 6, 4, 9, 9, 8, 2, 4, 2, 2, 1, 21, 6, 3, 3, 3, 3, 1, 3, 2, 2, 2, 1, 1, 1, 1, 2, 1,
+ 2, 1, 3, 1, 1, 1, 5, 2, 3, 3, 1, 1, 1, 1, 13, 13, 12, 7, 5, 5, 5, 1, 1, 223,10, 5, 2, 9, 5, 4, 27, 11, 8, 4, 2, 2, 2, 3, 2, 2, 1,
+ 7, 2, 26, 6, 5, 8, 3, 3, 5, 5, 2, 2, 5, 4, 4, 4, 6, 6, 2, 11, 2, 6, 2, 2, 18, 10, 10, 10, 4, 3, 8, 8, 80, 29, 2, 15, 13, 2, 1, 7, 5,
+ 2, 2, 28, 5, 5, 5, 14, 14, 14, 8, 7, 7, 5, 5, 20, 20, 10, 10, 10, 10, 10, 10, 7, 6, 3, 36, 3, 2, 2, 2, 2, 1, 1, 4, 4, 3, 3, 3, 3, 14, 9,
+ 15, 2, 1, 1, 1, 3, 3, 3, 3, 3, 8, 2, 23, 20, 15, 5, 19, 15, 5, 5, 5, 4, 4, 4, 9, 8, 6, 6, 3, 25, 5, 11, 9, 5, 3, 9, 6, 6, 6, 12, 10,
+ 9, 6, 1, 5, 2, 2, 2, 43, 3, 3, 3, 12, 7, 7, 7, 7, 6, 17, 2, 1, 1, 1, 2, 1, 9, 7, 7, 7, 7, 1, 1, 1, 2, 1, 2, 1, 1, 9, 4, 1, 1,
+ 1, 3, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 8, 7, 6, 3, 17, 6, 5, 10, 10, 5, 4, 3, 3, 3, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1,
+ 1, 4, 3, 3, 20, 4, 4, 3, 3, 1, 2, 7, 6, 2, 2, 24, 3, 3, 3, 2, 9, 6, 6, 5, 9, 2, 3, 3, 1, 1, 1, 35, 21, 6, 3, 12, 11, 11, 11, 11, 10,
+ 5, 3, 2, 2, 2, 2, 7, 1, 3, 2, 2, 2, 1, 21, 1, 1, 3, 3, 2, 2, 6, 5, 4, 4, 11, 10, 10, 1, 1, 1, 24, 2, 6, 2, 3, 2, 2, 1, 1, 1, 1,
+ 1, 9, 7, 7, 7, 19, 2, 1, 1, 1, 7, 4, 2, 6, 2, 8, 2, 2, 3, 3, 2, 1, 1, 21, 3, 10, 9, 5, 5, 5, 5, 1, 1, 1, 8, 8, 8, 3, 1, 1, 2,
+ 2, 4, 4, 3, 2, 2, 12, 9, 5, 4, 9, 3, 3, 3, 3, 3, 62, 22, 1, 1, 1, 4, 1, 4, 1, 3, 2, 4, 3, 3, 2, 1, 1, 1, 3, 2, 2, 12, 2, 17, 7,
+ 7, 7, 3, 2, 2, 2, 2, 2, 9, 9, 6, 6, 5, 3, 3, 8, 1, 1, 1, 2, 1, 2, 2, 124,24, 10, 9, 9, 5, 5, 5, 57, 13, 13, 5, 5, 20, 2, 1, 6, 9,
+ 5, 22, 22, 14, 12, 12, 11, 23, 2, 2, 2, 3, 3, 3, 5, 4, 4, 10, 18, 10, 4, 2, 2, 2, 2, 4, 3, 3, 2, 5, 2, 53, 6, 6, 5, 3, 3, 3, 6, 3, 2,
+ 17, 3, 2, 9, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 32, 3, 1, 4, 2, 2, 2, 7, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 9, 1, 2, 2, 3, 5, 1, 2,
+ 2, 1, 1, 217,23, 1, 2, 6, 1, 2, 2, 15, 4, 4, 4, 4, 2, 3, 2, 2, 38, 3, 2, 1, 4, 1, 1, 1, 1, 7, 5, 4, 2, 13, 10, 4, 3, 3, 2, 1, 2,
+ 3, 1, 56, 5, 48, 3, 4, 3, 2, 1, 2, 2, 4, 2, 5, 10, 7, 5, 3, 3, 2, 2, 2, 53, 7, 3, 3, 3, 3, 3, 3, 32, 1, 1, 1, 1, 4, 3, 1, 2, 2,
+ 1, 1, 5, 5, 5, 5, 5, 4, 2, 2, 4, 1, 1, 1, 1, 7, 3, 3, 3, 4, 3, 3, 3, 6, 4, 4, 2, 12, 4, 4, 8, 8, 2, 3, 1, 3, 6, 4, 4, 1, 1,
+ 1, 1, 1, 1, 1, 1, 51, 8, 7, 9, 9, 7, 6, 3, 2, 2, 5, 4, 4, 4, 7, 2, 8, 2, 4, 4, 23, 2, 1, 1, 1, 1, 4, 8, 4, 3, 2, 5, 1, 7, 3,
+ 24, 5, 2, 8, 3, 2, 2, 15, 5, 3, 2, 4, 2, 2, 30, 20, 11, 8, 4, 1, 5, 5, 8, 2, 10, 8, 2, 4, 4, 3, 45, 1, 2, 10, 8, 7, 4, 3, 1, 1, 13,
+ 9, 5, 3, 3, 2, 1, 1, 3, 8, 11, 9, 9, 8, 4, 22, 4, 1, 2, 9, 6, 17, 3, 2, 5, 3, 2, 5, 2, 92, 3, 27, 20, 17, 10, 7, 2, 6, 5, 2, 9, 7,
+ 6, 6, 6, 3, 3, 3, 3, 3, 13, 1, 1, 1, 5, 4, 4, 5, 4, 2, 1, 4, 3, 15, 2, 6, 5, 3, 2, 2, 2, 2, 67, 30, 26, 3, 2, 3, 2, 1, 8, 6, 22,
+ 2, 2, 9, 7, 4, 3, 4, 7, 5, 3, 29, 24, 2, 2, 12, 1, 5, 1, 1, 4, 1, 1, 1, 1, 1, 6, 4, 2, 34, 10, 2, 2, 2, 2, 1, 2, 3, 2, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 3, 3, 2, 1, 7, 2, 3, 10, 2, 2, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 38, 7, 3, 11, 5, 5, 2, 2, 3, 3, 3,
+ 6, 5, 5, 4, 2, 2, 177,5, 2, 4, 5, 4, 3, 97, 7, 4, 2, 10, 6, 5, 4, 3, 2, 2, 11, 4, 4, 4, 4, 2, 2, 2, 2, 10, 7, 3, 3, 2, 9, 2, 3,
+ 3, 1, 1, 4, 2, 2, 15, 11, 10, 2, 34, 26, 2, 7, 3, 4, 5, 2, 25, 24, 3, 13, 6, 3, 5, 2, 15, 3, 5, 1, 9, 3, 1, 13, 9, 44, 5, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 5, 4, 6, 5, 5, 4, 4, 3, 3, 7, 3, 2, 5, 5, 4, 19, 4, 3, 1, 6, 2, 3, 32, 10, 3, 6, 1, 6, 3, 1, 2, 1, 1, 1, 2,
+ 45, 3, 21, 1, 2, 8, 4, 3, 2, 9, 8, 3, 1, 25, 10, 5, 2, 2, 2, 4, 4, 1, 1, 1, 122,15, 6, 5, 4, 4, 3, 57, 49, 3, 7, 4, 3, 3, 3, 1, 1,
+ 21, 9, 2, 1, 1, 9, 1, 4, 3, 2, 177,11, 2, 4, 5, 3, 8, 6, 3, 29, 4, 2, 3, 7, 5, 1, 27, 5, 7, 5, 13, 2, 6, 17, 9, 5, 4, 18, 5, 1, 3,
+ 6, 3, 1, 17, 3, 3, 11, 6, 6, 4, 1, 1, 1, 1, 1, 4, 3, 13, 7, 6, 3, 2, 2, 2, 11, 11, 6, 3, 95, 5, 2, 10, 6, 5, 14, 2, 3, 2, 2, 2, 5,
+ 5, 1, 13, 2, 8, 2, 19, 4, 9, 2, 2, 2, 6, 4, 3, 1, 1, 1, 1, 81, 2, 1, 5, 5, 4, 2, 15, 13, 12, 9, 32, 31, 4, 8, 8, 7, 3, 5, 3, 2, 10,
+ 3, 2, 24, 6, 9, 6, 2, 2, 2, 4, 3, 27, 9, 1, 9, 3, 7, 19, 6, 2, 2, 2, 3, 2, 2, 5, 5, 2, 4, 53, 14, 1, 1, 1, 1, 1, 1, 1, 4, 3, 2,
+ 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 4, 2, 5, 2, 2, 3, 3, 3, 1, 1, 4, 4, 2, 2, 1, 1, 26, 7, 4, 16, 2, 2, 4, 1, 9, 2, 2, 1, 1, 4,
+ 1, 1, 1, 1, 1, 3, 51, 4, 3, 3, 44, 3, 3, 2, 2, 2, 3, 1, 1, 7, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 3, 3, 3, 10, 5, 2, 3, 1, 1, 1,
+ 1, 1, 2, 2, 6, 1, 1, 2, 4, 1, 1, 23, 2, 11, 3, 2, 1, 1, 2, 1, 1, 1, 27, 3, 13, 2, 2, 3, 2, 3, 45, 43, 14, 14, 6, 5, 4, 2, 12, 6, 3,
+ 1, 2, 9, 2, 2, 3, 2, 3, 36, 2, 4, 4, 2, 2, 19, 3, 6, 2, 7, 2, 2, 2, 13, 3, 3, 4, 100,4, 4, 3, 6, 10, 2, 3, 7, 2, 3, 1, 43, 6, 9,
+ 13, 5, 4, 4, 11, 4, 8, 5, 2, 11, 1, 4, 4, 4, 4, 4, 3, 9, 5, 3, 101,5, 2, 2, 5, 12, 9, 5, 4, 4, 10, 6, 13, 4, 3, 5, 3, 5, 1, 2, 9,
+ 4, 2, 20, 3, 5, 2, 9, 3, 2, 2, 2, 2, 90, 2, 2, 3, 3, 2, 1, 2, 1, 4, 3, 3, 35, 2, 10, 17, 12, 10, 2, 8, 4, 29, 1, 24, 4, 3, 3, 4, 3,
+ 2, 40, 5, 1, 4, 4, 3, 3, 6, 2, 13, 5, 5, 3, 3, 3, 1, 22, 2, 1, 13, 12, 5, 4, 3, 3, 7, 3, 2, 5, 1, 1, 1, 1, 2, 1, 1, 16, 5, 3, 2,
+ 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1, 1, 196,14, 9, 1, 5, 2, 3, 1, 1, 1, 1, 1, 2, 1, 2, 19, 2, 1, 1, 1, 1, 12, 2, 5,
+ 4, 4, 3, 12, 6, 64, 2, 1, 1, 12, 10, 1, 8, 5, 2, 5, 3, 31, 5, 21, 39, 5, 3, 2, 2, 2, 11, 2, 4, 3, 3, 12, 4, 3, 7, 1, 1, 4, 4, 4, 3,
+ 2, 2, 3, 4, 3, 12, 7, 4, 3, 2, 2, 1, 12, 1, 1, 1, 1, 2, 1, 1, 5, 1, 1, 1, 1, 1, 6, 2, 2, 2, 2, 2, 1, 6, 1, 1, 2, 1, 3, 1, 1,
+ 1, 1, 1, 1, 1, 25, 2, 2, 14, 7, 4, 4, 4, 14, 5, 2, 2, 19, 2, 2, 5, 2, 2, 9, 4, 3, 2, 2, 13, 2, 2, 4, 1, 1, 39, 5, 2, 3, 3, 2, 5,
+ 2, 2, 4, 5, 1, 5, 1, 4, 4, 3, 10, 2, 2, 118,23, 21, 12, 5, 4, 2, 2, 2, 1, 4, 89, 5, 3, 4, 3, 3, 2, 2, 5, 2, 2, 2, 5, 2, 2, 14, 9,
+ 2, 2, 21, 7, 6, 5, 4, 3, 1, 18, 14, 5, 5, 6, 5, 26, 19, 14, 5, 4, 33, 4, 11, 1, 3, 4, 10, 5, 6, 63, 12, 4, 4, 4, 4, 15, 12, 6, 3, 1, 1,
+ 3, 1, 9, 6, 11, 4, 1, 1, 3, 3, 61, 1, 38, 27, 24, 4, 5, 7, 6, 2, 1, 3, 2, 2, 2, 92, 1, 2, 37, 6, 5, 17, 16, 2, 1, 1, 1, 1, 26, 17, 16,
+ 10, 3, 3, 4, 4, 4, 29, 3, 21, 2, 17, 7, 7, 5, 9, 7, 14, 4, 4, 3, 3, 5, 4, 3, 1, 1, 1, 1, 1, 22, 3, 3, 5, 4, 3, 3, 7, 3, 2, 2, 2,
+ 3, 1, 1, 2, 1, 1, 7, 2, 2, 1, 6, 3, 1, 1, 1, 22, 16, 4, 2, 4, 2, 1, 5, 17, 3, 3, 8, 5, 3, 41, 8, 3, 5, 11, 7, 10, 6, 4, 3, 3, 13,
+ 4, 4, 2, 2, 21, 2, 2, 2, 11, 3, 3, 3, 3, 2, 1, 8, 4, 16, 12, 10, 3, 2, 6, 4, 1, 6, 3, 70, 7, 44, 16, 10, 15, 5, 4, 4, 1, 2, 12, 1, 1,
+ 1, 3, 4, 30, 3, 7, 3, 2, 16, 2, 2, 4, 114,2, 1, 7, 3, 24, 1, 1, 7, 2, 8, 2, 19, 1, 5, 1, 5, 29, 3, 2, 2, 13, 11, 1, 1, 1, 3, 3, 2,
+ 17, 5, 3, 2, 4, 2, 2, 5, 4, 1, 7, 6, 4, 4, 59, 9, 4, 5, 4, 7, 6, 6, 5, 2, 21, 10, 3, 1, 1, 1, 3, 75, 3, 2, 67, 4, 3, 4, 3, 2, 2,
+ 41, 9, 4, 4, 8, 6, 20, 5, 3, 2, 2, 2, 4, 9, 4, 13, 10, 8, 4, 4, 3, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 5, 1, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, 3, 2, 1, 7, 5, 1, 4, 4, 4, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 14, 2, 2, 1, 2, 41, 11, 2,
+ 1, 2, 6, 6, 4, 3, 3, 5, 2, 4, 5, 2, 2, 31, 2, 11, 4, 2, 3, 1, 1, 2, 2, 4, 2, 7, 3, 3, 3, 34, 6, 8, 2, 7, 3, 2, 2, 2, 23, 3, 4,
+ 1, 1, 2, 2, 1, 1, 1, 4, 2, 1, 1, 1, 1, 1, 11, 4, 2, 2, 20, 7, 1, 2, 2, 41, 15, 4, 2, 6, 2, 8, 4, 4, 1, 5, 2, 1, 1, 1, 1, 1, 4,
+ 2, 52, 2, 2, 3, 2, 8, 3, 2, 7, 3, 2, 7, 4, 4, 1, 1, 1, 7, 5, 3, 9, 4, 1, 1, 37, 18, 2, 3, 2, 2, 2, 1, 1, 4, 3, 4, 2, 3, 197,31,
+ 4, 2, 3, 2, 1, 8, 6, 1, 2, 3, 3, 4, 6, 2, 2, 1, 1, 2, 2, 3, 2, 24, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 1, 5, 1, 3, 4, 3, 2, 1, 1,
37, 2, 1, 1, 4, 2, 12, 3, 3, 9, 3, 6, 38, 8, 2, 14, 2, 2, 4, 3, 1, 6, 9, 3, 5, 2, 4, 3, 2, 1, 1, 8, 4, 1, 2, 7, 3, 5, 4, 4, 130,
- 24, 5, 3, 4, 2, 3, 6, 2, 1, 1, 24, 1, 1, 2, 2, 2, 4, 1, 1, 1, 5, 8, 2, 29, 4, 4, 4, 4, 7, 9, 2, 3, 3, 3, 10, 6, 4, 1, 2, 19, 4,
- 2, 1, 2, 1, 1, 2, 5, 3, 2, 155,29, 2, 4, 2, 2, 3, 3, 4, 4, 2, 2, 1, 2, 1, 17, 4, 4, 17, 2, 1, 2, 2, 2, 2, 10, 4, 10, 2, 2, 2, 1,
- 1, 1, 2, 1, 1, 1, 1, 1, 18, 8, 5, 9, 5, 4, 19, 4, 1, 1, 1, 1, 2, 2, 4, 2, 3, 2, 1, 1, 4, 8, 1, 1, 66, 6, 1, 1, 6, 3, 2, 2, 1,
- 11, 1, 3, 5, 3, 2, 1, 5, 4, 1, 1, 1, 1, 17, 5, 8, 3, 3, 2, 4, 7, 2, 3, 1, 1, 1, 1, 1, 56, 3, 2, 2, 4, 2, 2, 2, 4, 1, 2, 2, 2,
- 5, 2, 4, 2, 9, 3, 1, 1, 1, 1, 2, 3, 1, 3, 2, 4, 7, 3, 1, 1, 4, 5, 10, 2, 2, 2, 2, 2, 1, 23, 3, 7, 9, 4, 25, 7, 8, 3, 34, 5, 1,
- 1, 4, 2, 2, 8, 5, 8, 1, 2, 13, 8, 16, 7, 2, 3, 19, 13, 6, 6, 3, 18, 5, 4, 4, 2, 2, 2, 12, 3, 3, 11, 1, 1, 6, 4, 22, 4, 3, 3, 5, 3,
- 8, 4, 3, 1, 1, 2, 2, 3, 3, 5, 2, 136,10, 1, 1, 5, 4, 1, 10, 2, 18, 4, 3, 3, 2, 2, 2, 11, 3, 5, 3, 1, 2, 14, 5, 5, 5, 5, 4, 27, 8,
- 3, 5, 7, 2, 19, 2, 1, 6, 3, 1, 1, 7, 2, 4, 168,14, 4, 3, 1, 1, 2, 1, 1, 18, 1, 4, 3, 6, 4, 4, 41, 10, 2, 5, 1, 1, 10, 2, 5, 4, 4,
- 2, 2, 2, 1, 1, 5, 4, 20, 12, 2, 4, 1, 3, 3, 12, 2, 2, 2, 7, 6, 5, 9, 1, 1, 1, 4, 1, 9, 2, 4, 2, 4, 2, 7, 14, 7, 5, 1, 50, 7, 3,
- 3, 2, 3, 2, 5, 5, 1, 4, 1, 5, 3, 2, 5, 1, 1, 23, 9, 2, 4, 4, 5, 28, 22, 2, 3, 2, 2, 3, 2, 1, 2, 40, 11, 6, 1, 14, 6, 1, 4, 3, 3,
- 54, 18, 8, 4, 3, 5, 2, 6, 1, 8, 5, 4, 2, 2, 6, 3, 2, 2, 1, 3, 10, 2, 2, 11, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 15, 2, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 2, 1, 3, 6, 2, 2, 2, 6, 15, 4, 5, 6, 12, 3, 2, 13, 5, 1, 1, 1,
- 3, 2, 8, 1, 3, 2, 2, 2, 13, 4, 1, 1, 3, 2, 2, 2, 2, 76, 2, 2, 5, 1, 4, 12, 4, 13, 5, 10, 3, 3, 9, 5, 7, 3, 1, 1, 10, 2, 3, 10, 3,
- 65, 3, 2, 2, 8, 2, 7, 13, 3, 15, 9, 1, 10, 1, 1, 2, 4, 2, 1, 1, 113,5, 2, 3, 1, 1, 6, 9, 6, 2, 2, 1, 1, 1, 1, 2, 1, 1, 59, 5, 14,
- 4, 10, 8, 15, 1, 13, 4, 6, 58, 5, 6, 5, 2, 8, 6, 5, 3, 1, 29, 2, 2, 3, 1, 1, 5, 5, 170,10, 2, 20, 4, 3, 2, 6, 4, 3, 3, 12, 3, 9, 3,
- 2, 60, 7, 33, 2, 3, 5, 6, 4, 3, 5, 8, 6, 7, 12, 3, 3, 3, 3, 3, 13, 3, 2, 2, 2, 4, 4, 8, 5, 2, 15, 1, 1, 1, 1, 1, 3, 3, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 18, 2, 2, 4, 6, 2, 120,7, 2, 2, 2, 1, 8, 3, 9, 6, 3, 9, 1, 1, 3, 2, 2, 7, 1, 3, 7, 3, 2, 1, 16, 2, 8, 1,
- 2, 4, 2, 9, 4, 20, 4, 1, 1, 7, 3, 3, 6, 2, 2, 1, 45, 4, 8, 3, 2, 2, 4, 11, 5, 4, 10, 4, 54, 3, 12, 12, 6, 3, 2, 2, 2, 4, 3, 1, 4,
- 3, 21, 11, 7, 5, 4, 5, 37, 6, 3, 23, 20, 1, 8, 3, 1, 1, 2, 1, 41, 3, 3, 5, 1, 5, 2, 7, 4, 2, 6, 3, 3, 3, 13, 1, 4, 3, 1, 1, 1, 1,
- 1, 1, 1, 5, 1, 1, 1, 202,102,2, 2, 2, 2, 2, 2, 2, 1, 5, 3, 5, 3, 1, 1, 1, 21, 4, 11, 3, 9, 1, 2, 1, 1, 1, 1, 1, 1, 20, 3, 2, 1,
- 1, 1, 1, 10, 2, 3, 1, 2, 1, 4, 10, 3, 1, 2, 2, 2, 4, 3, 1, 15, 2, 1, 1, 1, 1, 3, 2, 1, 1, 1, 4, 2, 17, 2, 4, 2, 3, 3, 2, 2, 2,
- 3, 3, 2, 2, 2, 2, 2, 2, 39, 3, 2, 1, 1, 1, 1, 1, 3, 1, 4, 2, 1, 1, 3, 2, 6, 2, 2, 2, 2, 5, 3, 2, 6, 3, 1, 1, 1, 2, 2, 2, 1,
- 16, 5, 2, 1, 3, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 9, 4, 2, 1, 1, 18, 3, 8, 2, 2, 3, 3, 30, 29, 3, 7, 3, 3, 5, 1, 4, 2, 2, 35, 10, 2,
- 2, 11, 7, 7, 5, 4, 2, 4, 75, 2, 2, 7, 4, 10, 11, 2, 2, 11, 1, 2, 2, 13, 3, 2, 3, 4, 5, 1, 1, 1, 5, 2, 2, 3, 1, 2, 3, 12, 3, 2, 2,
- 189,3, 15, 3, 1, 5, 5, 2, 2, 7, 3, 1, 6, 4, 6, 1, 2, 1, 1, 1, 1, 1, 5, 3, 93, 12, 3, 2, 38, 2, 3, 26, 21, 3, 9, 7, 5, 3, 4, 3, 2,
- 2, 9, 5, 2, 4, 14, 3, 4, 4, 2, 2, 4, 1, 1, 7, 2, 75, 36, 4, 18, 16, 11, 5, 9, 3, 2, 4, 16, 8, 4, 2, 4, 3, 12, 2, 12, 6, 2, 2, 2, 2,
- 3, 2, 40, 3, 13, 9, 3, 3, 3, 3, 9, 2, 4, 2, 2, 13, 3, 3, 4, 1, 2, 74, 5, 5, 3, 3, 2, 2, 3, 2, 4, 3, 5, 27, 3, 3, 2, 2, 2, 4, 4,
+ 24, 5, 3, 4, 2, 3, 6, 2, 1, 1, 24, 1, 1, 2, 2, 2, 4, 1, 1, 1, 5, 8, 2, 29, 4, 4, 4, 4, 7, 9, 2, 3, 3, 3, 10, 6, 4, 1, 2, 19, 4,
+ 2, 1, 2, 1, 1, 2, 5, 3, 2, 155,29, 2, 4, 2, 2, 3, 3, 4, 4, 2, 2, 1, 2, 1, 17, 4, 4, 17, 2, 1, 2, 2, 2, 2, 10, 4, 10, 2, 2, 2, 1,
+ 1, 1, 2, 1, 1, 1, 1, 1, 18, 8, 5, 9, 5, 4, 19, 4, 1, 1, 1, 1, 2, 2, 4, 2, 3, 2, 1, 1, 4, 8, 1, 1, 66, 6, 1, 1, 6, 3, 2, 2, 1,
+ 11, 1, 3, 5, 3, 2, 1, 5, 4, 1, 1, 1, 1, 17, 5, 8, 3, 3, 2, 4, 7, 2, 3, 1, 1, 1, 1, 1, 56, 3, 2, 2, 4, 2, 2, 2, 4, 1, 2, 2, 2,
+ 5, 2, 4, 2, 9, 3, 1, 1, 1, 1, 2, 3, 1, 3, 2, 4, 7, 3, 1, 1, 4, 5, 10, 2, 2, 2, 2, 2, 1, 23, 3, 7, 9, 4, 25, 7, 8, 3, 34, 5, 1,
+ 1, 4, 2, 2, 8, 5, 8, 1, 2, 13, 8, 16, 7, 2, 3, 19, 13, 6, 6, 3, 18, 5, 4, 4, 2, 2, 2, 12, 3, 3, 11, 1, 1, 6, 4, 22, 4, 3, 3, 5, 3,
+ 8, 4, 3, 1, 1, 2, 2, 3, 3, 5, 2, 136,10, 1, 1, 5, 4, 1, 10, 2, 18, 4, 3, 3, 2, 2, 2, 11, 3, 5, 3, 1, 2, 14, 5, 5, 5, 5, 4, 27, 8,
+ 3, 5, 7, 2, 19, 2, 1, 6, 3, 1, 1, 7, 2, 4, 168,14, 4, 3, 1, 1, 2, 1, 1, 18, 1, 4, 3, 6, 4, 4, 41, 10, 2, 5, 1, 1, 10, 2, 5, 4, 4,
+ 2, 2, 2, 1, 1, 5, 4, 20, 12, 2, 4, 1, 3, 3, 12, 2, 2, 2, 7, 6, 5, 9, 1, 1, 1, 4, 1, 9, 2, 4, 2, 4, 2, 7, 14, 7, 5, 1, 50, 7, 3,
+ 3, 2, 3, 2, 5, 5, 1, 4, 1, 5, 3, 2, 5, 1, 1, 23, 9, 2, 4, 4, 5, 28, 22, 2, 3, 2, 2, 3, 2, 1, 2, 40, 11, 6, 1, 14, 6, 1, 4, 3, 3,
+ 54, 18, 8, 4, 3, 5, 2, 6, 1, 8, 5, 4, 2, 2, 6, 3, 2, 2, 1, 3, 10, 2, 2, 11, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 15, 2, 1, 1,
+ 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 2, 1, 3, 6, 2, 2, 2, 6, 15, 4, 5, 6, 12, 3, 2, 13, 5, 1, 1, 1,
+ 3, 2, 8, 1, 3, 2, 2, 2, 13, 4, 1, 1, 3, 2, 2, 2, 2, 76, 2, 2, 5, 1, 4, 12, 4, 13, 5, 10, 3, 3, 9, 5, 7, 3, 1, 1, 10, 2, 3, 10, 3,
+ 65, 3, 2, 2, 8, 2, 7, 13, 3, 15, 9, 1, 10, 1, 1, 2, 4, 2, 1, 1, 113,5, 2, 3, 1, 1, 6, 9, 6, 2, 2, 1, 1, 1, 1, 2, 1, 1, 59, 5, 14,
+ 4, 10, 8, 15, 1, 13, 4, 6, 58, 5, 6, 5, 2, 8, 6, 5, 3, 1, 29, 2, 2, 3, 1, 1, 5, 5, 170,10, 2, 20, 4, 3, 2, 6, 4, 3, 3, 12, 3, 9, 3,
+ 2, 60, 7, 33, 2, 3, 5, 6, 4, 3, 5, 8, 6, 7, 12, 3, 3, 3, 3, 3, 13, 3, 2, 2, 2, 4, 4, 8, 5, 2, 15, 1, 1, 1, 1, 1, 3, 3, 2, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 18, 2, 2, 4, 6, 2, 120,7, 2, 2, 2, 1, 8, 3, 9, 6, 3, 9, 1, 1, 3, 2, 2, 7, 1, 3, 7, 3, 2, 1, 16, 2, 8, 1,
+ 2, 4, 2, 9, 4, 20, 4, 1, 1, 7, 3, 3, 6, 2, 2, 1, 45, 4, 8, 3, 2, 2, 4, 11, 5, 4, 10, 4, 54, 3, 12, 12, 6, 3, 2, 2, 2, 4, 3, 1, 4,
+ 3, 21, 11, 7, 5, 4, 5, 37, 6, 3, 23, 20, 1, 8, 3, 1, 1, 2, 1, 41, 3, 3, 5, 1, 5, 2, 7, 4, 2, 6, 3, 3, 3, 13, 1, 4, 3, 1, 1, 1, 1,
+ 1, 1, 1, 5, 1, 1, 1, 202,102,2, 2, 2, 2, 2, 2, 2, 1, 5, 3, 5, 3, 1, 1, 1, 21, 4, 11, 3, 9, 1, 2, 1, 1, 1, 1, 1, 1, 20, 3, 2, 1,
+ 1, 1, 1, 10, 2, 3, 1, 2, 1, 4, 10, 3, 1, 2, 2, 2, 4, 3, 1, 15, 2, 1, 1, 1, 1, 3, 2, 1, 1, 1, 4, 2, 17, 2, 4, 2, 3, 3, 2, 2, 2,
+ 3, 3, 2, 2, 2, 2, 2, 2, 39, 3, 2, 1, 1, 1, 1, 1, 3, 1, 4, 2, 1, 1, 3, 2, 6, 2, 2, 2, 2, 5, 3, 2, 6, 3, 1, 1, 1, 2, 2, 2, 1,
+ 16, 5, 2, 1, 3, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 9, 4, 2, 1, 1, 18, 3, 8, 2, 2, 3, 3, 30, 29, 3, 7, 3, 3, 5, 1, 4, 2, 2, 35, 10, 2,
+ 2, 11, 7, 7, 5, 4, 2, 4, 75, 2, 2, 7, 4, 10, 11, 2, 2, 11, 1, 2, 2, 13, 3, 2, 3, 4, 5, 1, 1, 1, 5, 2, 2, 3, 1, 2, 3, 12, 3, 2, 2,
+ 189,3, 15, 3, 1, 5, 5, 2, 2, 7, 3, 1, 6, 4, 6, 1, 2, 1, 1, 1, 1, 1, 5, 3, 93, 12, 3, 2, 38, 2, 3, 26, 21, 3, 9, 7, 5, 3, 4, 3, 2,
+ 2, 9, 5, 2, 4, 14, 3, 4, 4, 2, 2, 4, 1, 1, 7, 2, 75, 36, 4, 18, 16, 11, 5, 9, 3, 2, 4, 16, 8, 4, 2, 4, 3, 12, 2, 12, 6, 2, 2, 2, 2,
+ 3, 2, 40, 3, 13, 9, 3, 3, 3, 3, 9, 2, 4, 2, 2, 13, 3, 3, 4, 1, 2, 74, 5, 5, 3, 3, 2, 2, 3, 2, 4, 3, 5, 27, 3, 3, 2, 2, 2, 4, 4,
3, 2, 2, 1, 4, 16, 2, 5, 3, 3, 7, 2, 1, 1, 1, 3, 26, 7, 7, 8, 2, 1, 2, 2, 24, 5, 2, 4, 2, 3, 15, 2, 4, 6, 3, 5, 25, 2, 14, 5, 135,
- 8, 1, 1, 6, 19, 18, 2, 2, 2, 4, 2, 2, 2, 2, 11, 5, 3, 36, 2, 3, 1, 1, 1, 8, 3, 2, 1, 1, 1, 1, 1, 1, 6, 3, 2, 4, 2, 5, 3, 1, 1,
- 1, 21, 9, 9, 3, 3, 2, 7, 3, 9, 4, 2, 87, 5, 2, 5, 2, 11, 3, 3, 5, 2, 2, 39, 7, 7, 3, 9, 1, 4, 6, 3, 7, 2, 1, 2, 86, 8, 1, 1, 13,
- 12, 9, 5, 5, 2, 1, 2, 7, 40, 11, 5, 1, 1, 1, 4, 4, 4, 3, 11, 2, 6, 1, 1, 2, 1, 1, 1, 9, 3, 3, 4, 3, 5, 2, 2, 9, 2, 1, 1, 1, 1,
- 1, 5, 3, 21, 1, 9, 6, 5, 2, 3, 3, 2, 2, 1, 1, 2, 1, 1, 1, 1, 6, 1, 1, 1, 5, 3, 3, 2, 1, 1, 1, 1, 82, 5, 1, 2, 2, 2, 1, 3, 1,
- 7, 6, 7, 1, 1, 4, 9, 10, 8, 2, 5, 6, 3, 5, 3, 2, 117,2, 6, 3, 3, 2, 5, 4, 11, 3, 3, 3, 2, 1, 1, 1, 1, 1, 34, 2, 2, 23, 1, 1, 2,
- 3, 4, 1, 1, 1, 19, 3, 6, 5, 2, 2, 3, 5, 1, 1, 1, 12, 4, 3, 4, 2, 3, 5, 4, 4, 88, 7, 5, 7, 1, 1, 1, 16, 4, 1, 5, 2, 2, 43, 6, 1,
- 23, 2, 2, 10, 3, 2, 2, 2, 4, 2, 2, 1, 5, 2, 2, 4, 3, 5, 2, 2, 3, 1, 1, 1, 53, 3, 1, 1, 2, 2, 5, 3, 1, 6, 2, 4, 3, 7, 3, 2, 2,
- 12, 3, 3, 3, 43, 4, 2, 2, 4, 5, 1, 4, 4, 3, 4, 6, 6, 3, 20, 3, 1, 1, 1, 3, 2, 3, 2, 2, 3, 2, 1, 1, 45, 5, 4, 4, 2, 1, 14, 5, 4,
- 3, 1, 2, 1, 1, 7, 47, 2, 12, 4, 2, 6, 3, 4, 4, 2, 5, 2, 4, 2, 76, 14, 12, 6, 4, 2, 1, 1, 1, 10, 3, 2, 3, 4, 20, 19, 18, 2, 4, 3, 10,
- 7, 4, 4, 7, 5, 3, 2, 99, 10, 5, 17, 14, 3, 8, 3, 2, 8, 5, 7, 1, 4, 2, 12, 4, 3, 20, 3, 4, 8, 5, 3, 3, 2, 26, 5, 5, 5, 5, 7, 4, 1,
- 2, 9, 3, 3, 4, 3, 41, 8, 1, 1, 2, 10, 2, 2, 3, 4, 4, 3, 3, 3, 4, 4, 2, 2, 42, 4, 1, 19, 7, 2, 4, 5, 1, 1, 6, 3, 2, 2, 4, 2, 23,
- 13, 3, 2, 2, 2, 4, 1, 1, 1, 1, 70, 2, 2, 7, 10, 1, 5, 16, 5, 2, 9, 6, 5, 12, 6, 5, 4, 3, 6, 2, 17, 5, 3, 3, 14, 4, 1, 1, 1, 1, 2,
- 44, 7, 2, 3, 1, 1, 1, 2, 13, 2, 4, 2, 1, 1, 1, 1, 7, 4, 2, 1, 11, 3, 1, 1, 6, 3, 27, 7, 2, 3, 9, 2, 3, 118,15, 4, 9, 4, 4, 10, 1,
- 4, 1, 11, 2, 3, 9, 2, 2, 15, 3, 3, 1, 5, 1, 1, 4, 20, 2, 1, 3, 3, 3, 2, 2, 1, 1, 3, 1, 2, 4, 1, 4, 49, 14, 7, 3, 2, 4, 6, 6, 2,
- 2, 2, 2, 2, 4, 3, 3, 2, 2, 2, 2, 1, 1, 4, 1, 115,9, 2, 3, 3, 2, 10, 2, 4, 3, 3, 8, 2, 2, 2, 8, 3, 2, 20, 4, 4, 4, 1, 3, 4, 2,
- 3, 1, 1, 1, 5, 4, 15, 6, 2, 2, 2, 8, 7, 7, 7, 6, 5, 5, 3, 8, 2, 4, 2, 2, 2, 2, 5, 4, 2, 1, 44, 7, 1, 1, 6, 8, 6, 3, 4, 2, 2,
- 58, 8, 2, 3, 2, 10, 3, 7, 2, 2, 18, 9, 2, 1, 3, 4, 2, 2, 139,11, 1, 9, 5, 2, 2, 12, 2, 2, 2, 2, 1, 13, 4, 3, 1, 4, 3, 7, 4, 3, 4,
- 2, 20, 4, 3, 2, 3, 2, 1, 1, 1, 2, 1, 8, 3, 4, 10, 3, 2, 12, 2, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 4, 4, 2, 2, 1, 130,9, 2, 2, 13,
- 3, 1, 1, 1, 9, 5, 4, 3, 1, 2, 2, 5, 9, 2, 3, 12, 2, 3, 1, 7, 2, 3, 6, 5, 7, 3, 3, 1, 1, 10, 4, 13, 3, 33, 4, 10, 4, 7, 2, 1, 2,
- 5, 2, 2, 76, 8, 4, 3, 11, 2, 3, 9, 3, 4, 2, 1, 1, 5, 8, 2, 2, 1, 1, 16, 4, 1, 1, 2, 2, 2, 2, 4, 2, 35, 1, 1, 1, 2, 2, 3, 3, 10,
- 4, 2, 8, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 37, 28, 8, 3, 15, 2, 5, 3, 4, 3, 4, 4, 26, 18, 18, 4, 2, 3, 3,
- 2, 4, 3, 1, 1, 43, 8, 3, 6, 2, 2, 1, 1, 10, 3, 10, 7, 3, 4, 5, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 181,5, 6, 2, 2, 1, 5, 5, 1, 3,
- 2, 6, 1, 1, 6, 2, 1, 1, 7, 1, 2, 1, 10, 2, 2, 1, 2, 2, 9, 2, 4, 4, 9, 3, 1, 3, 15, 1, 1, 3, 3, 4, 16, 1, 3, 1, 2, 1, 3, 3, 28,
- 2, 2, 2, 13, 3, 3, 3, 1, 1, 2, 4, 11, 5, 2, 2, 14, 9, 4, 12, 2, 2, 5, 3, 3, 6, 2, 3, 2, 3, 123,5, 2, 1, 2, 1, 6, 3, 3, 3, 2, 3,
- 32, 3, 4, 5, 11, 2, 7, 2, 3, 3, 2, 9, 5, 2, 10, 3, 12, 1, 5, 2, 10, 1, 1, 4, 3, 3, 4, 1, 12, 4, 5, 1, 1, 1, 1, 1, 1, 1, 3, 132,2,
- 3, 1, 1, 1, 16, 7, 2, 2, 3, 3, 3, 3, 10, 5, 2, 2, 70, 15, 9, 8, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 44, 6, 3, 2, 7, 3, 17, 7, 7, 5, 6,
- 9, 5, 3, 7, 2, 3, 3, 2, 4, 2, 100,3, 17, 4, 3, 4, 6, 4, 2, 7, 9, 3, 19, 5, 3, 2, 6, 3, 1, 1, 6, 4, 5, 3, 80, 7, 4, 4, 2, 2, 7,
- 4, 3, 1, 1, 3, 5, 3, 17, 3, 2, 1, 1, 12, 4, 3, 1, 1, 13, 4, 2, 2, 3, 2, 32, 3, 2, 6, 6, 6, 5, 3, 16, 2, 11, 2, 16, 3, 5, 1, 2, 2,
- 8, 1, 1, 2, 1, 2, 18, 2, 2, 4, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 17, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 5, 1, 1, 2, 11, 2, 4,
- 49, 10, 4, 10, 3, 18, 6, 5, 5, 3, 1, 39, 3, 21, 6, 6, 2, 3, 1, 6, 4, 2, 2, 2, 4, 20, 2, 3, 3, 3, 2, 6, 2, 28, 2, 10, 8, 5, 1, 5, 2,
- 2, 9, 2, 2, 3, 1, 30, 2, 1, 1, 2, 8, 2, 1, 3, 10, 6, 7, 2, 8, 7, 25, 6, 2, 3, 2, 5, 2, 2, 2, 6, 3, 2, 55, 7, 3, 4, 2, 4, 4, 1,
- 13, 3, 4, 3, 2, 2, 8, 3, 1, 1, 4, 2, 2, 1, 35, 15, 3, 2, 7, 3, 6, 3, 3, 3, 2, 74, 4, 14, 4, 3, 4, 4, 11, 2, 1, 2, 1, 5, 3, 15, 10,
- 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 7, 3, 5, 1, 1, 1, 1, 19, 2, 2, 5, 3, 3, 3, 3, 2, 2, 2, 99, 7, 2, 1, 7, 3, 2,
- 4, 2, 10, 5, 1, 3, 9, 2, 3, 2, 2, 2, 4, 5, 19, 1, 1, 3, 3, 5, 2, 8, 1, 1, 1, 1, 1, 2, 2, 5, 1, 43, 3, 2, 4, 11, 2, 4, 2, 3, 4,
- 2, 1, 2, 4, 2, 2, 5, 3, 3, 3, 2, 32, 3, 6, 6, 2, 3, 6, 1, 4, 5, 5, 6, 1, 2, 2, 2, 20, 2, 3, 7, 2, 5, 5, 2, 2, 3, 14, 7, 1, 1,
- 1, 1, 3, 2, 1, 1, 38, 19, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 3, 1, 3, 12, 4, 4, 1, 3, 1, 3, 56, 3, 2, 1, 14, 8, 2, 4,
- 3, 2, 1, 1, 4, 2, 2, 5, 2, 2, 6, 3, 3, 3, 2, 3, 5, 3, 1, 1, 3, 5, 1, 1, 1, 45, 14, 1, 2, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 14,
- 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 5, 3, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 5, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 9, 3, 124,22, 9, 3, 3, 5, 4, 21, 11, 5, 3, 3, 9, 4, 2, 36, 1,
- 1, 1, 2, 3, 15, 3, 3, 3, 4, 1, 8, 2, 2, 19, 5, 2, 7, 4, 2, 4, 3, 3, 3, 3, 3, 3, 134,11, 3, 2, 15, 7, 28, 6, 2, 7, 4, 3, 3, 1, 1,
- 6, 3, 17, 2, 4, 3, 2, 3, 18, 1, 3, 4, 4, 2, 10, 3, 3, 5, 3, 4, 2, 10, 6, 3, 1, 1, 1, 6, 3, 80, 10, 1, 1, 2, 1, 7, 4, 11, 1, 11, 3,
- 2, 2, 2, 7, 2, 2, 4, 18, 5, 2, 1, 1, 2, 2, 2, 11, 1, 1, 2, 2, 2, 2, 2, 80, 13, 3, 3, 10, 6, 3, 9, 3, 3, 2, 10, 3, 3, 4, 24, 7, 4,
- 3, 9, 2, 3, 2, 2, 3, 2, 9, 7, 1, 3, 3, 2, 1, 2, 83, 20, 1, 4, 5, 3, 4, 2, 12, 9, 3, 4, 3, 15, 2, 1, 1, 1, 3, 3, 14, 7, 4, 2, 4,
- 8, 4, 30, 7, 4, 4, 3, 4, 2, 2, 43, 4, 4, 3, 9, 3, 1, 7, 3, 5, 13, 2, 2, 1, 6, 61, 3, 34, 3, 11, 9, 6, 4, 2, 6, 2, 8, 3, 4, 4, 1,
- 1, 3, 45, 11, 4, 3, 3, 12, 2, 2, 4, 9, 2, 5, 3, 237,38, 2, 8, 2, 14, 4, 3, 4, 2, 1, 51, 4, 19, 13, 10, 4, 8, 4, 2, 6, 2, 24, 4, 3, 9,
- 6, 22, 13, 8, 2, 2, 3, 13, 7, 4, 30, 2, 9, 4, 2, 9, 6, 4, 4, 3, 2, 47, 5, 4, 6, 4, 2, 5, 6, 2, 5, 3, 5, 2, 4, 1, 10, 1, 30, 6, 6,
- 5, 13, 2, 4, 140,9, 2, 2, 17, 5, 5, 2, 9, 3, 3, 3, 5, 5, 3, 2, 2, 6, 4, 4, 4, 7, 5, 2, 7, 3, 9, 6, 14, 4, 4, 21, 6, 5, 4, 3, 21,
- 4, 1, 5, 5, 3, 3, 2, 3, 2, 15, 3, 6, 2, 2, 103,6, 2, 2, 2, 2, 20, 1, 1, 1, 4, 7, 2, 3, 2, 4, 2, 9, 3, 6, 2, 3, 5, 2, 2, 9, 3,
- 2, 3, 5, 2, 6, 4, 7, 3, 1, 2, 12, 5, 4, 3, 11, 4, 3, 10, 5, 2, 18, 4, 6, 4, 8, 2, 4, 4, 3, 17, 3, 5, 2, 30, 4, 8, 5, 4, 3, 3, 5,
- 3, 18, 7, 4, 3, 3, 4, 3, 2, 12, 2, 2, 1, 2, 99, 11, 2, 4, 2, 3, 15, 6, 2, 2, 2, 15, 3, 5, 8, 7, 3, 10, 5, 11, 4, 1, 1, 4, 3, 7, 4,
- 5, 3, 3, 7, 2, 4, 4, 2, 189,22, 4, 3, 3, 2, 3, 3, 7, 4, 10, 3, 13, 2, 13, 8, 3, 23, 2, 3, 3, 5, 2, 11, 5, 5, 18, 6, 3, 32, 6, 10, 3,
- 3, 10, 3, 5, 3, 6, 1, 3, 5, 4, 3, 2, 2, 1, 145,12, 3, 3, 3, 11, 4, 1, 2, 12, 7, 30, 8, 2, 2, 3, 3, 2, 4, 3, 5, 2, 4, 1, 1, 1, 1,
- 15, 6, 3, 3, 3, 7, 2, 23, 3, 10, 3, 2, 20, 3, 3, 3, 3, 3, 1, 2, 160,10, 3, 6, 6, 27, 1, 2, 2, 5, 1, 11, 7, 6, 3, 14, 6, 2, 29, 2, 3,
- 12, 3, 3, 1, 1, 2, 17, 4, 3, 5, 3, 10, 6, 2, 4, 2, 22, 4, 2, 7, 3, 7, 7, 3, 2, 2, 4, 4, 220,9, 3, 2, 3, 22, 7, 3, 11, 2, 1, 6, 2,
- 2, 2, 5, 2, 4, 3, 23, 22, 2, 4, 5, 5, 4, 1, 2, 4, 2, 26, 9, 2, 7, 8, 4, 4, 4, 1, 3, 2, 79, 13, 4, 37, 4, 5, 23, 3, 9, 6, 23, 3, 5,
- 5, 10, 4, 22, 2, 8, 3, 2, 1, 1, 1, 5, 2, 2, 2, 1, 1, 3, 103,28, 3, 10, 3, 5, 8, 3, 36, 4, 5, 18, 4, 4, 18, 6, 2, 2, 5, 3, 15, 1, 2,
- 8, 2, 3, 76, 8, 3, 3, 7, 5, 3, 4, 4, 6, 4, 5, 4, 9, 2, 2, 10, 6, 5, 3, 3, 7, 3, 10, 2, 3, 2, 46, 3, 3, 7, 3, 3, 3, 7, 3, 3, 4,
- 53, 1, 23, 19, 5, 7, 3, 2, 3, 4, 4, 3, 3, 1, 6, 4, 2, 18, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 3, 3, 2, 5, 1, 1, 3, 1, 1, 171,7, 6,
- 25, 2, 2, 11, 8, 3, 3, 9, 3, 3, 5, 5, 9, 6, 20, 4, 10, 3, 14, 8, 16, 5, 17, 14, 11, 11, 2, 21, 15, 1, 1, 6, 5, 55, 9, 3, 4, 16, 4, 3, 2,
- 1, 4, 2, 4, 2, 2, 13, 3, 1, 1, 3, 8, 3, 2, 3, 70, 4, 17, 6, 4, 2, 2, 2, 7, 2, 7, 3, 4, 10, 2, 2, 1, 3, 3, 2, 12, 2, 7, 7, 6, 3,
- 53, 2, 3, 13, 1, 6, 2, 5, 5, 3, 2, 4, 4, 3, 3, 3, 2, 4, 4, 4, 2, 67, 3, 3, 3, 9, 5, 3, 3, 5, 3, 5, 8, 5, 4, 4, 1, 3, 53, 2, 9,
- 4, 9, 6, 1, 1, 5, 3, 3, 3, 2, 2, 2, 19, 2, 2, 2, 2, 2, 3, 152,38, 16, 11, 5, 4, 3, 2, 8, 18, 11, 11, 4, 3, 3, 15, 2, 5, 4, 2, 36, 10,
- 9, 11, 11, 11, 11, 11, 10, 10, 4, 6, 3, 5, 4, 4, 11, 4, 4, 2, 10, 4, 3, 5, 4, 4, 1, 39, 3, 2, 5, 11, 6, 3, 2, 1, 3, 2, 6, 4, 3, 146,2,
- 17, 7, 3, 1, 1, 1, 1, 13, 3, 3, 3, 3, 8, 4, 1, 1, 1, 12, 4, 3, 2, 1, 3, 10, 8, 3, 5, 2, 2, 19, 2, 6, 2, 25, 4, 4, 2, 2, 2, 5, 2,
- 20, 5, 2, 1, 5, 2, 5, 2, 12, 2, 15, 4, 1, 4, 2, 86, 14, 2, 3, 3, 5, 8, 2, 3, 8, 3, 16, 5, 3, 1, 5, 4, 16, 12, 1, 1, 5, 6, 153,1, 1,
- 1, 14, 4, 3, 3, 6, 12, 3, 7, 2, 3, 15, 3, 7, 7, 6, 4, 4, 18, 6, 2, 2, 5, 19, 4, 3, 2, 6, 3, 15, 3, 5, 6, 15, 3, 5, 1, 7, 71, 2, 3,
- 2, 46, 10, 1, 8, 8, 2, 1, 10, 3, 3, 10, 4, 4, 2, 9, 5, 5, 5, 4, 4, 4, 3, 3, 45, 5, 7, 4, 6, 3, 2, 1, 1, 1, 1, 2, 9, 2, 6, 4, 2,
- 2, 3, 1, 31, 3, 5, 3, 3, 9, 2, 122,4, 10, 2, 5, 5, 4, 7, 4, 1, 3, 8, 6, 8, 5, 4, 7, 3, 3, 2, 1, 8, 4, 2, 5, 2, 2, 27, 10, 5, 4,
- 3, 4, 16, 4, 5, 3, 3, 3, 2, 3, 3, 108,2, 4, 4, 4, 5, 2, 2, 10, 5, 7, 3, 22, 21, 16, 15, 2, 5, 2, 2, 3, 10, 30, 14, 12, 7, 3, 35, 1, 1,
- 7, 1, 3, 1, 2, 2, 6, 2, 7, 3, 137,23, 3, 2, 12, 4, 3, 3, 60, 2, 2, 13, 1, 1, 12, 2, 3, 21, 5, 5, 1, 1, 3, 4, 40, 3, 2, 6, 10, 2, 3,
- 4, 15, 4, 2, 5, 1, 4, 41, 8, 5, 4, 3, 7, 3, 3, 18, 4, 10, 28, 15, 7, 5, 4, 4, 4, 4, 4, 3, 3, 2, 1, 2, 2, 5, 5, 27, 2, 3, 2, 4, 4,
- 3, 3, 3, 10, 3, 12, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 5, 4, 3, 6, 1, 1, 1, 2, 1, 1, 9, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
- 2, 1, 1, 1, 1, 29, 4, 4, 9, 2, 3, 103,3, 8, 5, 55, 2, 51, 21, 8, 5, 2, 10, 4, 23, 8, 3, 2, 3, 6, 4, 6, 1, 3, 23, 11, 6, 4, 8, 4, 4,
- 3, 3, 90, 7, 3, 2, 20, 14, 8, 2, 2, 26, 4, 4, 2, 2, 13, 9, 6, 2, 2, 2, 2, 1, 2, 26, 6, 4, 3, 2, 3, 3, 2, 2, 2, 1, 4, 2, 2, 29, 8,
- 4, 2, 3, 2, 4, 3, 1, 98, 31, 12, 3, 5, 2, 2, 4, 2, 2, 2, 3, 3, 3, 7, 2, 4, 2, 2, 7, 2, 5, 12, 2, 1, 6, 2, 3, 7, 4, 3, 3, 5, 3,
- 55, 35, 3, 1, 3, 2, 2, 2, 5, 3, 12, 2, 3, 3, 3, 4, 3, 10, 86, 12, 3, 3, 6, 46, 46, 4, 2, 2, 7, 3, 3, 8, 2, 2, 2, 3, 3, 5, 8, 2, 2,
- 4, 5, 4, 6, 3, 2, 29, 3, 20, 2, 1, 2, 5, 3, 3, 2, 4, 83, 4, 3, 1, 1, 1, 14, 5, 3, 2, 2, 1, 1, 6, 3, 1, 34, 10, 2, 2, 2, 14, 5, 2,
- 2, 4, 1, 4, 3, 4, 2, 1, 4, 80, 12, 2, 2, 15, 3, 3, 4, 2, 2, 12, 2, 4, 10, 2, 8, 3, 1, 11, 4, 3, 3, 11, 2, 2, 2, 3, 2, 11, 4, 17, 2,
- 2, 2, 2, 8, 7, 6, 91, 15, 2, 3, 9, 3, 3, 2, 26, 4, 3, 9, 3, 2, 7, 2, 3, 4, 1, 1, 4, 4, 3, 3, 11, 3, 42, 13, 4, 4, 5, 3, 8, 5, 3,
- 1, 47, 10, 2, 2, 3, 3, 13, 7, 1, 1, 8, 5, 5, 5, 5, 4, 3, 5, 25, 5, 3, 3, 2, 7, 3, 2, 1, 2, 1, 1, 1, 19, 4, 13, 5, 2, 2, 16, 2, 2,
- 2, 2, 3, 1, 8, 1, 1, 3, 6, 21, 17, 4, 3, 2, 4, 76, 5, 2, 6, 5, 1, 4, 2, 6, 3, 1, 1, 19, 5, 3, 1, 3, 18, 4, 2, 2, 4, 2, 7, 4, 2,
- 20, 20, 6, 3, 9, 9, 5, 5, 10, 4, 3, 94, 14, 3, 6, 4, 8, 4, 4, 1, 8, 3, 2, 10, 4, 2, 3, 7, 21, 12, 9, 4, 3, 2, 156,7, 4, 4, 4, 23, 14,
- 12, 7, 4, 2, 17, 2, 4, 7, 5, 5, 5, 5, 5, 3, 3, 6, 6, 5, 3, 3, 2, 5, 1, 2, 3, 3, 3, 61, 12, 9, 3, 37, 37, 7, 4, 1, 1, 1, 2, 3, 3,
- 2, 2, 2, 1, 2, 2, 4, 3, 3, 2, 4, 4, 4, 3, 5, 3, 3, 2, 7, 2, 2, 7, 1, 2, 2, 1, 75, 4, 42, 1, 1, 1, 5, 4, 21, 2, 3, 3, 2, 5, 1,
- 4, 4, 3, 2, 1, 5, 2, 15, 8, 6, 4, 2, 2, 2, 35, 1, 1, 1, 19, 2, 2, 10, 7, 2, 3, 2, 7, 13, 1, 1, 1, 1, 2, 2, 1, 1, 6, 4, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 66, 3, 27, 2, 1, 4, 19, 4, 1, 5, 2, 1, 3, 1, 1, 2, 2, 1, 1, 9, 1, 3, 3, 2, 2, 5, 4, 3, 2, 1, 1, 1, 13,
- 1, 1, 1, 3, 2, 4, 4, 3, 1, 4, 2, 36, 8, 9, 3, 2, 1, 1, 8, 6, 53, 8, 11, 4, 4, 12, 4, 2, 3, 1, 3, 4, 6, 5, 5, 122,31, 16, 10, 2, 2,
- 9, 4, 17, 3, 2, 2, 2, 51, 4, 16, 7, 3, 2, 3, 5, 2, 2, 2, 5, 10, 5, 1, 4, 4, 1, 7, 2, 25, 6, 1, 8, 6, 2, 2, 1, 46, 4, 2, 2, 3, 3,
- 2, 2, 5, 4, 3, 4, 8, 4, 2, 8, 5, 3, 37, 2, 5, 1, 3, 3, 2, 2, 14, 2, 3, 76, 14, 8, 5, 1, 5, 13, 6, 4, 5, 4, 23, 5, 5, 3, 3, 7, 2,
- 3, 2, 26, 1, 1, 5, 2, 8, 3, 1, 20, 3, 2, 3, 1, 3, 6, 4, 3, 26, 4, 5, 2, 2, 2, 2, 4, 3, 4, 3, 3, 3, 53, 7, 6, 5, 3, 6, 4, 1, 1,
- 22, 3, 8, 4, 4, 6, 4, 1, 7, 3, 1, 45, 11, 1, 3, 14, 8, 7, 7, 3, 2, 5, 3, 3, 2, 2, 4, 4, 1, 2, 2, 181,3, 2, 2, 22, 2, 15, 14, 3, 16,
- 6, 3, 3, 1, 1, 4, 3, 119,6, 2, 12, 2, 6, 3, 2, 4, 2, 2, 3, 10, 3, 1, 3, 4, 2, 2, 11, 2, 1, 5, 14, 5, 4, 4, 4, 3, 6, 4, 2, 5, 1,
- 1, 2, 2, 4, 2, 11, 3, 3, 2, 4, 2, 2, 2, 6, 2, 4, 3, 6, 2, 1, 1, 1, 4, 6, 2, 4, 78, 3, 1, 1, 1, 22, 6, 6, 8, 8, 8, 2, 13, 8, 6,
- 3, 37, 8, 3, 11, 4, 5, 2, 2, 1, 1, 1, 1, 1, 4, 3, 2, 1, 2, 3, 137,13, 7, 13, 3, 4, 48, 3, 2, 5, 24, 6, 3, 10, 2, 7, 25, 3, 2, 3, 7,
- 11, 5, 3, 5, 77, 9, 3, 2, 4, 1, 2, 14, 6, 1, 1, 5, 8, 4, 4, 4, 11, 3, 1, 13, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 50, 1, 3, 2, 14, 5, 3,
- 2, 1, 3, 2, 1, 3, 2, 1, 1, 1, 5, 12, 4, 4, 4, 128,3, 4, 19, 8, 5, 3, 3, 2, 2, 3, 19, 17, 2, 4, 4, 19, 16, 2, 3, 2, 2, 7, 3, 10, 5,
- 3, 14, 5, 4, 3, 5, 5, 10, 4, 3, 2, 1, 208,10, 174,3, 11, 11, 5, 6, 2, 3, 3, 2, 1, 1, 2, 8, 8, 3, 3, 3, 3, 2, 6, 6, 3, 2, 2, 19, 3,
- 6, 3, 3, 8, 5, 4, 1, 3, 22, 2, 2, 4, 16, 3, 2, 7, 2, 6, 4, 1, 18, 9, 5, 2, 57, 3, 2, 5, 3, 2, 16, 7, 3, 2, 5, 6, 4, 1, 6, 3, 3,
- 3, 4, 1, 2, 1, 1, 19, 9, 7, 22, 6, 6, 4, 4, 2, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 18, 1, 1, 1, 4, 4, 1, 2, 2, 1,
- 5, 4, 4, 20, 2, 12, 5, 1, 1, 1, 1, 1, 1, 1, 1, 44, 7, 2, 2, 6, 4, 8, 3, 2, 7, 2, 4, 2, 2, 6, 5, 5, 5, 2, 1, 161,15, 3, 2, 8, 8,
- 4, 3, 10, 3, 3, 14, 3, 5, 1, 2, 2, 1, 35, 6, 5, 4, 3, 3, 3, 5, 3, 2, 3, 57, 2, 10, 4, 3, 6, 4, 3, 29, 2, 1, 2, 3, 5, 4, 2, 7, 2,
- 4, 2, 51, 1, 3, 10, 1, 3, 3, 1, 6, 2, 3, 2, 7, 4, 4, 4, 4, 6, 6, 4, 3, 50, 7, 4, 4, 8, 2, 2, 6, 4, 3, 7, 4, 2, 2, 3, 2, 5, 2,
- 2, 6, 1, 3, 3, 3, 13, 7, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 6, 1, 1, 4, 1, 3, 9, 4, 19, 2, 8, 1, 2, 3, 3, 37, 17, 10, 2, 3,
- 10, 3, 5, 3, 16, 3, 5, 2, 3, 58, 5, 2, 19, 3, 11, 10, 2, 13, 9, 5, 2, 3, 10, 2, 1, 90, 8, 9, 7, 34, 3, 5, 9, 2, 2, 1, 3, 2, 11, 2, 3,
- 13, 3, 3, 4, 2, 3, 7, 1, 1, 1, 2, 30, 3, 1, 4, 2, 10, 5, 2, 4, 3, 3, 27, 3, 5, 4, 2, 36, 5, 4, 1, 2, 5, 3, 2, 2, 10, 2, 54, 6, 12,
- 5, 4, 4, 3, 3, 1, 1, 3, 11, 5, 1, 3, 2, 4, 15, 3, 2, 1, 4, 2, 2, 16, 6, 4, 4, 3, 3, 3, 3, 4, 4, 3, 2, 1, 16, 3, 3, 2, 4, 1, 9,
- 3, 3, 3, 3, 1, 2, 1, 1, 1, 4, 2, 3, 1, 1, 182,8, 1, 2, 6, 3, 2, 12, 3, 2, 1, 1, 2, 17, 5, 6, 4, 4, 2, 8, 4, 16, 3, 2, 10, 9, 1,
- 6, 3, 52, 4, 8, 8, 11, 2, 3, 8, 5, 5, 2, 3, 11, 8, 7, 20, 3, 3, 6, 2, 1, 4, 2, 2, 15, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 2, 1, 2, 3, 2, 1, 1, 1, 1, 15, 1, 1, 3, 2, 2, 7, 1, 1, 5, 3, 2, 2,
- 1, 1, 13, 4, 3, 3, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 2, 1, 1, 1,
- 1, 1, 27, 1, 2, 4, 10, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 28, 2, 2, 8, 5, 4, 4, 4, 44, 2, 4, 3, 1, 1, 6, 2, 5, 2, 1, 11, 2, 2, 1,
- 3, 5, 2, 2, 33, 12, 4, 6, 3, 8, 7, 4, 2, 3, 1, 2, 6, 2, 1, 2, 2, 20, 3, 1, 1, 2, 1, 12, 7, 4, 3, 3, 3, 3, 2, 2, 22, 1, 1, 8, 7,
- 6, 1, 4, 3, 3, 3, 2, 2, 2, 6, 2, 2, 2, 1, 1, 63, 10, 2, 10, 23, 4, 2, 2, 1, 1, 1, 1, 15, 2, 7, 4, 8, 3, 1, 1, 1, 26, 6, 7, 4, 7,
- 1, 3, 3, 1, 65, 4, 3, 3, 3, 22, 1, 3, 7, 3, 5, 14, 9, 2, 6, 5, 3, 5, 2, 1, 19, 10, 1, 3, 1, 8, 3, 9, 4, 2, 2, 3, 13, 7, 1, 2, 5,
- 3, 8, 2, 4, 1, 3, 2, 3, 3, 2, 2, 28, 3, 21, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 3, 3, 3, 6, 2, 1, 2, 2, 8, 4, 4, 2, 5, 2, 1,
- 1, 1, 215,30, 1, 5, 5, 4, 3, 3, 2, 1, 7, 3, 3, 4, 6, 3, 1, 2, 1, 4, 33, 4, 3, 4, 7, 1, 10, 4, 3, 28, 9, 4, 1, 1, 3, 6, 17, 7, 5,
- 3, 5, 1, 2, 2, 22, 6, 10, 9, 8, 8, 3, 8, 6, 4, 17, 7, 23, 8, 5, 6, 3, 3, 2, 2, 6, 3, 2, 38, 4, 2, 2, 1, 3, 2, 2, 7, 4, 2, 12, 10,
- 7, 1, 1, 1, 18, 8, 4, 3, 5, 33, 3, 12, 1, 4, 3, 3, 2, 4, 5, 3, 2, 4, 4, 4, 2, 9, 7, 5, 4, 2, 18, 2, 5, 2, 2, 25, 17, 10, 2, 5, 1,
- 1, 2, 43, 22, 5, 4, 4, 8, 8, 3, 3, 5, 4, 17, 3, 1, 3, 9, 2, 6, 2, 3, 3, 72, 12, 6, 2, 22, 4, 3, 15, 6, 4, 21, 12, 10, 8, 3, 4, 1, 1,
- 8, 3, 8, 5, 17, 4, 1, 6, 3, 2, 8, 3, 5, 3, 2, 7, 2, 1, 1, 1, 2, 131,60, 5, 2, 1, 1, 2, 2, 2, 3, 3, 2, 11, 2, 1, 1, 3, 9, 2, 1,
- 1, 14, 9, 4, 3, 2, 2, 1, 1, 2, 5, 1, 4, 1, 1, 2, 9, 2, 2, 9, 4, 9, 5, 2, 3, 3, 15, 3, 5, 2, 6, 3, 2, 1, 8, 3, 159,14, 6, 5, 1,
- 3, 1, 1, 4, 2, 2, 2, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 2, 8, 2, 2, 2, 6, 3, 3, 49, 9, 2, 2, 3, 2, 4, 9, 6, 3, 3, 3, 10, 7, 7, 7,
- 2, 2, 2, 1, 7, 3, 7, 19, 4, 6, 5, 1, 1, 2, 1, 1, 8, 2, 1, 3, 66, 4, 1, 2, 2, 4, 3, 19, 8, 2, 6, 4, 9, 3, 2, 3, 1, 1, 18, 17, 2,
- 5, 4, 104,22, 8, 3, 2, 2, 29, 2, 2, 1, 3, 4, 2, 3, 1, 4, 2, 4, 1, 1, 10, 8, 2, 2, 9, 2, 13, 2, 6, 5, 3, 6, 92, 7, 2, 1, 1, 10, 2,
- 5, 2, 4, 1, 1, 5, 3, 2, 4, 9, 6, 4, 2, 13, 2, 5, 3, 1, 1, 6, 3, 4, 3, 4, 3, 11, 4, 2, 7, 4, 10, 8, 3, 3, 4, 12, 2, 2, 3, 2, 5,
- 4, 3, 38, 1, 1, 1, 5, 1, 4, 2, 7, 3, 5, 5, 2, 10, 1, 1, 4, 3, 4, 4, 4, 4, 2, 1, 1, 5, 2, 58, 4, 10, 2, 1, 5, 5, 5, 18, 2, 4, 9,
- 3, 10, 4, 2, 3, 60, 16, 2, 7, 16, 3, 13, 2, 2, 1, 5, 11, 2, 13, 2, 2, 3, 3, 3, 1, 1, 1, 1, 1, 18, 3, 6, 1, 1, 1, 6, 26, 3, 4, 4, 3,
- 4, 3, 1, 1, 1, 7, 8, 3, 2, 3, 2, 4, 3, 2, 94, 34, 12, 6, 5, 2, 2, 2, 1, 4, 2, 3, 5, 1, 6, 1, 2, 25, 10, 2, 2, 1, 9, 2, 3, 1, 10,
- 6, 1, 1, 1, 1, 1, 1, 1, 1, 51, 14, 11, 4, 4, 3, 4, 10, 4, 3, 2, 2, 1, 2, 40, 3, 17, 8, 4, 4, 3, 5, 14, 4, 5, 3, 89, 26, 7, 1, 3, 5,
- 4, 4, 6, 18, 9, 3, 5, 3, 14, 3, 3, 3, 9, 4, 3, 7, 2, 3, 4, 5, 22, 1, 1, 4, 3, 6, 6, 6, 7, 6, 5, 4, 66, 17, 5, 2, 7, 3, 9, 3, 2,
- 2, 14, 4, 1, 1, 1, 6, 3, 9, 5, 5, 2, 1, 1, 17, 10, 3, 3, 3, 2, 3, 75, 9, 5, 10, 2, 2, 2, 2, 4, 11, 9, 9, 9, 3, 3, 3, 12, 11, 7, 2,
- 4, 4, 6, 3, 3, 16, 5, 4, 3, 8, 1, 1, 4, 2, 48, 4, 16, 2, 7, 3, 3, 2, 2, 15, 8, 5, 1, 3, 2, 1, 1, 37, 2, 2, 7, 6, 6, 6, 2, 5, 3,
- 5, 1, 8, 3, 40, 4, 1, 2, 7, 2, 3, 6, 1, 1, 2, 6, 1, 2, 2, 51, 7, 3, 13, 6, 4, 10, 2, 4, 4, 5, 3, 33, 8, 6, 7, 7, 7, 7, 6, 1, 2,
- 4, 2, 2, 2, 1, 4, 3, 3, 5, 2, 2, 5, 1, 29, 12, 9, 4, 3, 4, 6, 4, 2, 10, 1, 1, 1, 34, 4, 3, 1, 1, 6, 6, 2, 2, 2, 8, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 6, 1, 1, 1, 2, 79, 2, 5, 4, 5, 6, 2, 4, 22, 4, 5, 3, 8, 3, 10, 6, 2, 2, 2, 16, 2, 5, 5, 2, 5, 3, 150,5, 3, 2, 26,
- 20, 5, 9, 4, 57, 1, 1, 1, 7, 4, 8, 19, 4, 2, 7, 13, 7, 5, 3, 24, 6, 3, 8, 4, 20, 1, 1, 1, 1, 2, 4, 2, 3, 1, 1, 1, 1, 11, 8, 3, 14,
- 4, 7, 2, 29, 2, 2, 1, 7, 3, 4, 3, 3, 86, 27, 20, 11, 10, 7, 11, 5, 2, 2, 17, 12, 7, 6, 4, 3, 2, 10, 3, 2, 9, 5, 4, 2, 4, 3, 8, 4, 3,
- 3, 2, 4, 191,29, 2, 4, 10, 5, 3, 1, 1, 11, 2, 2, 17, 1, 5, 3, 1, 7, 4, 3, 10, 2, 2, 48, 11, 3, 2, 18, 4, 3, 6, 17, 3, 6, 14, 2, 14, 3,
- 4, 3, 2, 2, 2, 6, 1, 2, 112,5, 1, 29, 14, 2, 2, 2, 1, 13, 5, 7, 3, 13, 6, 8, 7, 5, 2, 40, 5, 5, 5, 5, 4, 13, 8, 6, 5, 23, 7, 1, 2,
- 1, 3, 11, 3, 2, 9, 5, 39, 3, 2, 5, 8, 5, 4, 6, 4, 23, 23, 4, 12, 5, 3, 7, 3, 3, 51, 9, 2, 2, 2, 7, 19, 3, 3, 3, 1, 5, 4, 7, 3, 2,
- 4, 77, 8, 1, 4, 4, 13, 4, 4, 4, 4, 28, 16, 12, 7, 2, 2, 3, 3, 2, 7, 2, 4, 2, 4, 2, 2, 1, 146,5, 19, 8, 7, 6, 7, 4, 81, 6, 3, 3, 2,
- 3, 56, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 14, 7, 4, 6, 3, 2, 1, 2, 1, 11, 6, 4, 2, 3, 11, 5, 27, 3, 2, 14, 3, 2, 17, 7, 7, 3, 6,
- 5, 3, 7, 4, 44, 8, 5, 3, 2, 3, 4, 3, 2, 9, 2, 2, 2, 4, 17, 6, 4, 1, 3, 31, 3, 2, 2, 4, 2, 4, 2, 3, 2, 2, 37, 11, 9, 4, 4, 10, 2,
- 3, 2, 1, 1, 1, 1, 7, 2, 1, 1, 5, 2, 2, 13, 4, 32, 1, 13, 3, 2, 4, 3, 3, 15, 2, 7, 10, 5, 2, 14, 3, 7, 19, 3, 3, 8, 5, 5, 5, 3, 3,
- 82, 27, 5, 1, 1, 1, 1, 6, 2, 2, 1, 1, 7, 20, 2, 6, 2, 22, 2, 4, 2, 7, 4, 3, 4, 112,3, 75, 3, 67, 6, 4, 7, 3, 2, 7, 5, 4, 4, 4, 5,
- 16, 3, 3, 3, 11, 1, 2, 2, 2, 1, 6, 6, 5, 5, 11, 1, 32, 1, 2, 2, 2, 1, 2, 3, 1, 4, 6, 3, 19, 18, 3, 3, 5, 2, 47, 5, 4, 2, 2, 2, 21,
- 13, 12, 11, 8, 5, 5, 62, 3, 32, 6, 6, 6, 6, 6, 5, 7, 3, 5, 16, 6, 3, 4, 3, 26, 4, 7, 5, 1, 7, 4, 7, 2, 8, 43, 3, 3, 29, 3, 3, 3, 3,
- 6, 1, 1, 1, 3, 2, 2, 1, 14, 5, 7, 28, 2, 21, 2, 2, 2, 2, 2, 2, 2, 114,4, 4, 20, 7, 33, 3, 22, 16, 7, 4, 3, 22, 3, 3, 6, 4, 2, 7, 5,
- 2, 4, 1, 1, 29, 3, 9, 4, 13, 2, 5, 3, 4, 4, 5, 8, 116,2, 1, 4, 2, 8, 2, 1, 5, 3, 16, 3, 3, 2, 8, 4, 1, 38, 4, 7, 19, 6, 7, 3, 2,
- 1, 1, 1, 1, 1, 1, 13, 3, 3, 2, 8, 3, 1, 1, 1, 1, 1, 1, 23, 9, 7, 6, 5, 3, 7, 1, 1, 3, 3, 1, 6, 2, 95, 6, 2, 2, 2, 2, 5, 2, 44,
- 3, 3, 34, 2, 18, 7, 5, 3, 5, 3, 2, 1, 2, 3, 3, 5, 5, 5, 6, 121,1, 8, 13, 2, 7, 2, 3, 14, 3, 1, 3, 7, 5, 3, 9, 3, 2, 2, 1, 1, 1,
- 1, 1, 1, 3, 3, 10, 5, 2, 17, 3, 1, 8, 3, 2, 2, 4, 7, 4, 2, 1, 5, 3, 1, 1, 3, 92, 11, 2, 5, 4, 12, 12, 2, 2, 3, 3, 9, 9, 2, 3, 8,
- 4, 4, 4, 3, 3, 2, 2, 11, 6, 3, 27, 9, 1, 4, 2, 6, 3, 6, 3, 20, 5, 2, 3, 3, 1, 1, 61, 3, 4, 2, 3, 2, 18, 2, 5, 1, 3, 3, 11, 4, 2,
- 2, 2, 2, 8, 4, 3, 2, 3, 5, 4, 2, 26, 4, 5, 3, 12, 3, 2, 2, 3, 2, 5, 5, 3, 2, 2, 131,4, 5, 5, 2, 3, 2, 4, 23, 1, 2, 12, 3, 3, 2,
- 10, 2, 1, 15, 5, 4, 2, 3, 41, 3, 11, 2, 13, 5, 4, 9, 4, 3, 2, 6, 2, 3, 1, 6, 1, 3, 3, 3, 3, 97, 31, 2, 4, 5, 4, 7, 3, 3, 2, 2, 2,
- 31, 5, 5, 3, 3, 11, 2, 4, 2, 10, 3, 6, 4, 12, 2, 5, 12, 3, 5, 1, 93, 2, 3, 15, 11, 2, 3, 11, 4, 20, 6, 2, 2, 9, 4, 3, 3, 3, 3, 6, 2,
- 16, 3, 4, 3, 2, 3, 5, 1, 2, 2, 4, 47, 20, 3, 3, 3, 10, 4, 3, 3, 2, 10, 4, 3, 53, 2, 3, 4, 2, 23, 22, 6, 4, 8, 4, 3, 3, 9, 3, 3, 3,
- 3, 64, 18, 8, 3, 3, 3, 3, 3, 11, 4, 3, 5, 5, 2, 4, 22, 11, 3, 5, 4, 3, 9, 5, 5, 2, 2, 63, 7, 4, 4, 2, 1, 1, 35, 3, 1, 1, 10, 4, 3,
- 2, 3, 3, 1, 1, 4, 1, 5, 2, 2, 5, 3, 4, 12, 1, 2, 4, 2, 3, 33, 21, 4, 8, 7, 4, 4, 9, 4, 4, 4, 1, 197,35, 3, 3, 3, 5, 3, 1, 2, 13,
- 7, 2, 2, 5, 4, 4, 3, 2, 12, 3, 4, 2, 1, 8, 3, 2, 3, 2, 27, 4, 2, 9, 5, 3, 1, 2, 9, 2, 5, 3, 2, 29, 9, 2, 3, 2, 2, 15, 2, 2, 6,
- 6, 1, 20, 1, 4, 2, 3, 2, 34, 15, 5, 2, 9, 2, 3, 6, 2, 3, 29, 5, 5, 11, 6, 3, 4, 3, 2, 2, 6, 3, 3, 14, 8, 1, 2, 2, 2, 2, 2, 2, 37,
- 11, 1, 2, 3, 3, 1, 18, 2, 3, 9, 3, 3, 2, 1, 2, 2, 2, 144,14, 2, 2, 72, 7, 2, 8, 4, 2, 13, 8, 4, 20, 4, 3, 7, 3, 8, 3, 2, 43, 4, 4,
- 2, 3, 3, 4, 20, 9, 2, 2, 1, 4, 4, 2, 1, 2, 8, 3, 2, 71, 34, 2, 2, 1, 3, 2, 3, 7, 5, 5, 9, 2, 2, 4, 3, 3, 2, 24, 5, 3, 3, 3, 3,
- 2, 5, 3, 5, 2, 75, 25, 4, 11, 4, 3, 2, 2, 9, 3, 4, 2, 18, 4, 2, 9, 9, 3, 4, 4, 6, 2, 4, 4, 17, 5, 4, 10, 4, 3, 72, 18, 4, 33, 6, 8,
- 4, 6, 5, 2, 1, 13, 6, 3, 3, 3, 2, 6, 1, 4, 24, 4, 3, 2, 5, 14, 5, 1, 7, 2, 3, 2, 31, 31, 9, 4, 2, 6, 3, 15, 2, 5, 4, 3, 21, 7, 6,
- 1, 1, 3, 1, 5, 2, 18, 6, 4, 2, 1, 5, 3, 2, 5, 3, 1, 15, 4, 2, 1, 1, 3, 3, 4, 2, 2, 12, 5, 4, 2, 21, 7, 2, 3, 7, 5, 2, 3, 3, 2,
- 15, 8, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 101,6, 5, 16, 9, 7, 2, 2, 2, 6, 7, 25, 5, 3, 7, 6, 6, 2, 3, 8, 3, 15, 1, 7, 7, 11,
- 1, 1, 1, 3, 49, 4, 3, 4, 28, 17, 14, 14, 7, 5, 1, 1, 4, 8, 4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 169,18, 9, 3, 4, 4, 2, 7, 4,
- 3, 18, 2, 2, 2, 3, 4, 82, 23, 2, 2, 4, 1, 1, 1, 2, 26, 11, 8, 6, 3, 2, 1, 1, 6, 6, 1, 9, 6, 6, 2, 2, 2, 2, 2, 4, 4, 10, 4, 2, 7,
- 8, 2, 5, 5, 51, 4, 3, 2, 5, 2, 5, 4, 7, 5, 10, 4, 4, 1, 3, 3, 88, 53, 4, 4, 3, 2, 2, 4, 3, 2, 1, 7, 3, 3, 4, 1, 1, 7, 4, 8, 5,
- 2, 4, 3, 3, 3, 3, 9, 3, 4, 5, 4, 6, 2, 4, 3, 2, 46, 8, 3, 3, 3, 2, 8, 3, 2, 2, 11, 3, 2, 3, 79, 3, 4, 4, 5, 3, 5, 22, 9, 4, 4,
- 4, 20, 7, 3, 3, 5, 4, 3, 1, 1, 1, 4, 2, 1, 5, 2, 6, 2, 2, 38, 2, 2, 1, 2, 22, 5, 4, 3, 3, 3, 6, 3, 2, 1, 1, 1, 1, 1, 1, 8, 10,
- 9, 6, 3, 3, 1, 1, 8, 20, 8, 5, 3, 4, 3, 2, 40, 3, 4, 3, 7, 15, 10, 8, 5, 2, 52, 7, 12, 4, 14, 14, 2, 5, 4, 32, 2, 2, 15, 9, 1, 1, 1,
- 1, 1, 1, 3, 3, 8, 2, 2, 5, 12, 5, 2, 9, 6, 5, 58, 11, 7, 6, 4, 3, 3, 6, 5, 2, 29, 5, 5, 19, 5, 3, 2, 12, 7, 5, 2, 1, 245,19, 5, 2,
- 2, 3, 14, 6, 2, 52, 17, 8, 3, 15, 2, 2, 11, 3, 3, 2, 22, 2, 2, 3, 3, 12, 5, 1, 1, 1, 2, 1, 1, 13, 2, 5, 3, 2, 4, 4, 2, 16, 6, 5, 3,
- 12, 1, 1, 2, 2, 2, 3, 24, 3, 3, 2, 5, 2, 2, 2, 32, 5, 5, 9, 1, 6, 8, 4, 3, 3, 7, 3, 2, 4, 3, 2, 2, 2, 2, 17, 2, 8, 61, 10, 2, 5,
- 4, 3, 3, 14, 6, 5, 3, 3, 8, 6, 6, 2, 2, 4, 10, 3, 1, 11, 10, 4, 6, 4, 12, 4, 3, 11, 1, 1, 8, 2, 2, 42, 4, 9, 6, 2, 2, 3, 6, 3, 2,
- 2, 1, 1, 2, 9, 3, 1, 1, 2, 2, 17, 4, 6, 28, 5, 15, 14, 6, 4, 1, 3, 10, 1, 1, 37, 3, 28, 6, 4, 3, 4, 4, 18, 8, 3, 2, 14, 4, 2, 4, 5,
- 5, 142,3, 7, 3, 3, 4, 2, 2, 11, 2, 4, 2, 2, 1, 1, 4, 3, 10, 4, 1, 1, 11, 4, 3, 3, 3, 2, 15, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 2, 1, 1, 52, 10, 17, 5, 4, 4, 7, 3, 2, 2, 2, 15, 4, 6, 2, 15, 5, 3, 2, 3, 1, 1, 239,73, 7, 7, 7, 7, 3, 1, 1, 29,
- 2, 11, 4, 4, 4, 4, 4, 3, 3, 3, 8, 2, 2, 6, 6, 6, 6, 4, 4, 1, 1, 8, 8, 5, 5, 6, 5, 5, 3, 4, 1, 1, 2, 3, 2, 1, 1, 26, 3, 1, 12,
- 11, 5, 3, 1, 1, 43, 4, 1, 1, 1, 1, 1, 2, 4, 3, 20, 16, 6, 3, 3, 3, 2, 1, 1, 2, 1, 7, 7, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 9, 2,
- 2, 2, 7, 1, 36, 6, 6, 1, 1, 1, 1, 26, 2, 11, 10, 9, 7, 5, 5, 5, 3, 1, 6, 2, 18, 7, 4, 3, 4, 11, 3, 3, 17, 4, 2, 5, 4, 3, 2, 1, 1,
- 1, 1, 1, 6, 2, 2, 14, 13, 12, 8, 6, 24, 1, 2, 15, 14, 5, 5, 3, 2, 3, 18, 2, 2, 1, 10, 4, 2, 2, 3, 1, 1, 10, 4, 2, 3, 1, 7, 2, 3, 2,
- 1, 23, 7, 5, 4, 1, 3, 3, 3, 1, 2, 10, 4, 2, 4, 2, 2, 1, 4, 2, 123,58, 33, 31, 2, 18, 2, 5, 3, 2, 2, 37, 5, 29, 2, 5, 6, 6, 2, 4, 15,
- 4, 3, 1, 1, 1, 1, 1, 1, 3, 3, 6, 3, 40, 1, 21, 6, 12, 2, 3, 6, 5, 2, 2, 1, 80, 80, 4, 1, 3, 1, 9, 5, 4, 2, 2, 2, 10, 1, 6, 2, 2,
- 2, 2, 2, 2, 2, 1, 3, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 2, 5, 1, 1, 1, 5, 1, 1, 1, 2, 2, 2, 2, 7, 3, 1, 3, 3, 2, 2, 2, 3,
- 14, 1, 1, 1, 5, 5, 5, 2, 1, 1, 3, 2, 2, 3, 3, 105,2, 2, 2, 33, 3, 5, 4, 23, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3, 3, 3, 3,
- 2, 3, 3, 3, 8, 6, 3, 7, 1, 5, 4, 2, 2, 10, 2, 2, 2, 2, 6, 3, 1, 9, 3, 2, 4, 52, 4, 3, 1, 1, 3, 2, 2, 1, 1, 12, 3, 1, 3, 1, 3,
- 15, 2, 4, 1, 3, 10, 3, 2, 2, 4, 2, 50, 2, 2, 3, 10, 10, 3, 3, 7, 5, 3, 3, 6, 4, 11, 11, 8, 8, 5, 3, 35, 23, 5, 4, 2, 2, 12, 2, 4, 3,
- 3, 2, 4, 4, 3, 106,10, 51, 10, 8, 3, 5, 4, 7, 5, 4, 4, 7, 3, 5, 12, 5, 4, 3, 2, 10, 7, 26, 2, 2, 13, 5, 2, 3, 14, 2, 2, 5, 3, 15, 6,
- 3, 3, 29, 2, 4, 2, 6, 4, 6, 1, 2, 2, 7, 2, 5, 41, 4, 3, 25, 17, 5, 11, 8, 2, 3, 25, 6, 4, 3, 4, 3, 1, 139,13, 4, 6, 2, 38, 3, 11, 3,
- 5, 5, 16, 1, 1, 2, 2, 3, 2, 48, 4, 4, 6, 7, 8, 8, 3, 5, 2, 8, 3, 9, 4, 2, 5, 5, 18, 3, 7, 2, 1, 1, 1, 1, 7, 3, 3, 6, 2, 4, 2,
- 2, 5, 4, 3, 3, 29, 4, 5, 10, 1, 1, 6, 5, 28, 3, 1, 1, 1, 1, 10, 3, 2, 16, 5, 8, 4, 2, 27, 3, 7, 3, 2, 2, 3, 1, 1, 1, 55, 1, 3, 4,
- 2, 2, 2, 3, 2, 5, 3, 3, 19, 9, 8, 3, 5, 3, 1, 2, 17, 4, 2, 4, 3, 2, 4, 2, 2, 79, 6, 5, 5, 5, 3, 3, 11, 2, 5, 23, 8, 5, 8, 3, 3,
- 17, 2, 10, 8, 8, 3, 2, 2, 13, 3, 3, 36, 3, 14, 1, 2, 3, 3, 3, 2, 1, 2, 14, 6, 23, 8, 4, 5, 2, 11, 2, 4, 3, 3, 3, 20, 5, 16, 3, 9, 5,
- 2, 1, 4, 3, 2, 9, 2, 1, 2, 2, 2, 2, 110,42, 9, 4, 3, 3, 5, 2, 3, 6, 3, 3, 7, 5, 2, 3, 2, 9, 4, 11, 3, 3, 3, 3, 2, 3, 8, 4, 3,
- 3, 3, 8, 5, 2, 4, 2, 1, 1, 3, 3, 15, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 4, 4, 4, 4, 4, 3, 31, 9, 3, 3, 3, 4,
- 4, 3, 2, 3, 1, 2, 2, 2, 2, 9, 2, 2, 7, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 7, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 19, 4, 11, 2, 2,
- 1, 8, 5, 4, 2, 2, 2, 2, 1, 30, 12, 3, 3, 2, 2, 3, 3, 3, 2, 2, 20, 6, 2, 2, 2, 2, 2, 2, 3, 6, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 11,
- 3, 4, 3, 7, 1, 4, 3, 3, 6, 5, 2, 3, 5, 3, 3, 3, 4, 2, 2, 1, 1, 1, 1, 1, 13, 3, 8, 5, 5, 5, 5, 5, 5, 5, 48, 5, 1, 17, 3, 5, 5,
- 6, 4, 3, 2, 2, 2, 3, 3, 2, 4, 3, 2, 7, 44, 6, 5, 4, 6, 6, 5, 2, 2, 14, 3, 1, 6, 3, 7, 11, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 117,4,
- 2, 16, 16, 8, 5, 2, 11, 5, 3, 2, 6, 7, 3, 3, 3, 3, 3, 3, 3, 11, 3, 2, 5, 1, 1, 17, 4, 4, 2, 1, 9, 2, 2, 26, 3, 12, 5, 4, 4, 2, 2,
- 4, 2, 2, 3, 3, 10, 2, 3, 2, 2, 19, 6, 29, 23, 3, 2, 2, 2, 5, 3, 2, 2, 2, 2, 3, 2, 1, 1, 1, 27, 6, 3, 3, 2, 1, 5, 2, 6, 3, 9, 1,
- 1, 1, 4, 2, 1, 1, 1, 6, 1, 2, 1, 20, 8, 5, 4, 2, 2, 1, 1, 1, 1, 2, 24, 1, 1, 1, 1, 1, 2, 10, 7, 6, 4, 4, 1, 2, 1, 8, 2, 2, 2,
- 3, 2, 1, 18, 2, 1, 1, 4, 5, 1, 35, 4, 3, 3, 18, 17, 11, 2, 2, 40, 4, 2, 5, 2, 2, 9, 3, 2, 16, 2, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 3,
- 1, 1, 119,7, 1, 3, 2, 1, 1, 58, 13, 32, 9, 9, 19, 13, 8, 8, 6, 2, 20, 3, 1, 3, 3, 17, 15, 10, 2, 2, 2, 34, 6, 2, 3, 5, 3, 4, 4, 5, 13,
- 1, 8, 3, 30, 7, 2, 2, 4, 2, 3, 2, 3, 2, 2, 4, 63, 27, 3, 2, 10, 7, 4, 3, 4, 5, 7, 3, 2, 2, 8, 4, 30, 3, 14, 7, 4, 4, 3, 2, 2, 11,
- 4, 2, 5, 2, 1, 10, 2, 170,12, 4, 2, 20, 3, 6, 2, 3, 4, 23, 3, 10, 6, 3, 23, 17, 6, 4, 5, 3, 2, 48, 15, 2, 8, 2, 3, 7, 6, 4, 11, 4, 13,
- 5, 2, 2, 4, 10, 3, 2, 2, 4, 1, 1, 2, 2, 45, 1, 1, 4, 2, 9, 9, 8, 3, 2, 9, 5, 6, 3, 4, 1, 4, 1, 1, 1, 45, 2, 2, 4, 4, 3, 2, 15,
- 9, 8, 5, 9, 7, 3, 3, 4, 22, 2, 2, 5, 2, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 39, 10, 5, 10, 2, 4, 7, 3, 49, 2, 1, 3, 2, 2, 7, 33, 7, 2,
- 4, 3, 6, 1, 4, 4, 38, 8, 5, 2, 16, 9, 2, 2, 2, 2, 35, 8, 6, 5, 2, 8, 7, 6, 3, 53, 40, 36, 6, 3, 4, 2, 2, 2, 12, 4, 1, 4, 75, 11, 2,
- 2, 2, 2, 3, 2, 2, 2, 8, 3, 5, 5, 2, 8, 5, 1, 4, 2, 4, 3, 5, 2, 2, 1, 1, 1, 1, 1, 15, 4, 2, 2, 9, 9, 6, 2, 1, 1, 1, 1, 1, 1,
- 1, 11, 2, 5, 5, 1, 10, 7, 2, 34, 3, 6, 2, 3, 5, 12, 8, 7, 3, 200,45, 1, 10, 5, 2, 8, 3, 15, 5, 4, 2, 3, 1, 2, 72, 3, 2, 1, 1, 5, 3,
- 2, 4, 1, 3, 2, 2, 8, 5, 4, 2, 3, 3, 3, 3, 1, 1, 15, 2, 7, 3, 11, 1, 1, 1, 2, 3, 2, 2, 2, 4, 1, 1, 6, 6, 5, 4, 3, 4, 14, 2, 6,
- 3, 2, 4, 2, 1, 16, 1, 1, 7, 4, 6, 2, 1, 4, 1, 7, 4, 2, 3, 3, 2, 3, 4, 7, 6, 6, 6, 6, 5, 143,8, 6, 7, 2, 1, 3, 6, 4, 8, 2, 2,
- 43, 4, 3, 7, 3, 5, 5, 3, 2, 2, 9, 4, 2, 3, 2, 1, 3, 30, 2, 2, 12, 3, 3, 18, 1, 1, 13, 9, 1, 1, 18, 5, 5, 5, 4, 2, 2, 69, 6, 6, 13,
- 4, 5, 3, 11, 4, 2, 4, 3, 5, 8, 4, 5, 4, 4, 20, 5, 8, 3, 3, 3, 2, 1, 2, 60, 2, 2, 2, 3, 13, 3, 9, 3, 7, 7, 3, 42, 22, 18, 3, 1, 1,
- 4, 12, 9, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 38, 4, 2, 1, 4, 6, 10, 2, 2, 2, 5, 13, 5, 3, 3, 8, 3, 2, 12, 7, 7, 6, 3, 27, 4, 3, 9,
- 5, 26, 24, 6, 7, 3, 7, 2, 2, 1, 1, 42, 4, 3, 7, 2, 24, 2, 16, 5, 4, 6, 3, 11, 4, 44, 9, 5, 1, 1, 10, 3, 3, 12, 3, 6, 4, 131,4, 5, 1,
- 20, 5, 3, 2, 4, 3, 9, 1, 3, 14, 2, 4, 10, 3, 5, 1, 10, 6, 4, 4, 7, 7, 4, 3, 3, 23, 3, 2, 2, 6, 4, 2, 19, 4, 2, 2, 5, 2, 2, 1, 1,
- 2, 158,10, 1, 1, 2, 3, 3, 3, 3, 9, 1, 33, 1, 1, 2, 2, 2, 27, 26, 7, 6, 5, 5, 2, 2, 4, 5, 3, 22, 5, 3, 3, 10, 8, 8, 48, 2, 2, 2, 34,
- 5, 9, 3, 6, 6, 5, 3, 5, 3, 3, 3, 3, 21, 7, 3, 3, 4, 2, 2, 4, 2, 118,23, 2, 8, 3, 3, 6, 30, 22, 11, 10, 9, 3, 1, 17, 3, 8, 26, 12, 6,
- 2, 4, 2, 2, 14, 10, 3, 2, 29, 3, 9, 15, 9, 1, 2, 24, 7, 4, 4, 2, 1, 8, 3, 19, 7, 4, 3, 29, 8, 2, 2, 2, 5, 3, 1, 1, 1, 7, 4, 5, 3,
- 17, 1, 1, 3, 1, 1, 1, 1, 60, 8, 9, 2, 3, 3, 3, 1, 2, 1, 4, 1, 1, 2, 3, 1, 3, 9, 2, 4, 2, 2, 6, 2, 23, 1, 2, 1, 1, 2, 2, 2, 3,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 1, 1, 1, 16, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 1, 1, 9, 2,
- 1, 2, 1, 2, 2, 42, 5, 5, 1, 1, 13, 5, 3, 2, 3, 17, 9, 3, 2, 4, 3, 3, 41, 3, 2, 2, 2, 11, 2, 1, 1, 1, 1, 5, 5, 2, 3, 7, 3, 3, 1,
- 24, 5, 5, 4, 4, 2, 2, 1, 5, 3, 3, 1, 1, 3, 3, 2, 2, 23, 20, 2, 8, 6, 3, 1, 33, 2, 15, 5, 3, 3, 3, 4, 4, 3, 2, 2, 27, 10, 2, 5, 5,
- 4, 3, 2, 2, 2, 10, 3, 2, 2, 2, 2, 2, 2, 9, 3, 1, 1, 1, 1, 10, 4, 3, 2, 3, 3, 13, 2, 4, 1, 1, 205,8, 3, 3, 4, 2, 10, 5, 4, 2, 2,
- 6, 3, 2, 8, 4, 3, 5, 7, 3, 53, 12, 4, 2, 16, 9, 2, 2, 21, 3, 11, 3, 3, 2, 2, 8, 2, 3, 77, 75, 1, 1, 8, 1, 1, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 4, 2, 1, 2, 2, 6, 3, 2, 2, 2, 4, 3, 2, 2, 2, 2, 1, 30, 4, 21, 2, 1, 9, 8, 4, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 5,
- 2, 5, 1, 1, 1, 2, 1, 1, 1, 8, 3, 3, 2, 32, 9, 2, 11, 4, 3, 3, 144,5, 21, 14, 28, 4, 6, 3, 1, 6, 3, 2, 2, 2, 5, 7, 19, 8, 7, 7, 3,
- 5, 11, 4, 3, 17, 5, 2, 2, 5, 5, 5, 8, 3, 1, 1, 1, 4, 3, 5, 4, 3, 155,33, 3, 2, 7, 3, 1, 2, 4, 3, 4, 1, 2, 10, 5, 3, 4, 3, 3, 3,
- 17, 10, 9, 4, 4, 8, 3, 1, 1, 1, 1, 3, 9, 2, 4, 4, 3, 4, 11, 11, 6, 24, 5, 3, 10, 4, 3, 2, 1, 1, 1, 1, 6, 2, 2, 8, 3, 2, 5, 2, 3,
- 220,8, 2, 33, 10, 5, 4, 7, 2, 1, 1, 4, 6, 2, 4, 4, 2, 1, 1, 1, 1, 14, 1, 4, 13, 2, 2, 3, 45, 31, 1, 4, 8, 7, 3, 1, 1, 1, 1, 5, 1,
- 1, 3, 3, 22, 10, 6, 2, 1, 3, 3, 3, 2, 3, 2, 1, 21, 10, 6, 1, 1, 5, 1, 45, 29, 3, 18, 17, 4, 3, 5, 3, 3, 2, 2, 77, 19, 2, 3, 3, 3, 1,
- 1, 1, 2, 4, 13, 4, 2, 3, 3, 2, 2, 10, 5, 2, 4, 3, 2, 2, 1, 1, 1, 11, 1, 2, 6, 5, 4, 1, 1, 1, 1, 1, 1, 1, 6, 2, 18, 6, 4, 4, 4,
- 4, 3, 5, 4, 1, 1, 7, 5, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 226,2, 3, 7, 2, 2, 1, 8, 4, 2, 15, 5, 3, 3, 8, 1, 1, 1, 1, 1,
- 1, 6, 11, 3, 2, 4, 3, 2, 3, 9, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 10, 1, 5, 1, 1, 3, 2, 2, 17, 4, 3, 2, 7, 6, 1, 1, 1, 1, 3, 13,
- 4, 2, 4, 1, 1, 1, 1, 2, 1, 1, 10, 3, 2, 2, 2, 2, 7, 4, 4, 4, 2, 2, 30, 2, 4, 6, 3, 3, 1, 1, 6, 3, 40, 2, 3, 6, 1, 5, 1, 3, 3,
- 3, 21, 9, 9, 5, 10, 5, 2, 15, 9, 4, 2, 4, 2, 2, 2, 2, 2, 2, 1, 1, 8, 3, 1, 1, 1, 7, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 10, 33, 6, 3, 2, 1, 3, 6, 8, 1, 2, 38, 3, 2, 3, 12, 2, 1, 1, 2, 1, 6, 5, 5, 4, 3, 3, 2, 3, 1, 1, 49, 4, 15, 2, 4, 3, 2,
- 13, 4, 1, 4, 2, 2, 11, 3, 3, 11, 2, 6, 2, 65, 23, 1, 1, 1, 1, 5, 5, 13, 5, 2, 2, 2, 4, 2, 5, 2, 3, 2, 1, 6, 2, 28, 8, 3, 4, 2, 3,
- 3, 2, 39, 3, 8, 4, 3, 1, 7, 2, 4, 4, 16, 7, 3, 2, 3, 41, 22, 1, 5, 2, 2, 3, 4, 3, 5, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 25, 3, 3,
- 2, 4, 3, 6, 2, 1, 57, 10, 2, 3, 7, 2, 1, 1, 14, 2, 5, 8, 2, 2, 1, 99, 5, 9, 10, 3, 3, 3, 5, 3, 6, 4, 11, 4, 5, 20, 3, 1, 2, 2, 2,
- 2, 2, 5, 2, 1, 1, 1, 1, 4, 2, 4, 2, 15, 2, 1, 1, 1, 1, 2, 1, 3, 2, 2, 2, 2, 2, 9, 4, 46, 4, 4, 3, 3, 2, 2, 4, 3, 3, 2, 11, 9,
- 6, 10, 3, 1, 1, 3, 5, 1, 1, 1, 3, 2, 116,16, 2, 2, 1, 1, 1, 4, 4, 4, 14, 8, 8, 6, 5, 1, 1, 12, 3, 3, 7, 3, 3, 3, 7, 3, 2, 3, 1,
- 5, 2, 24, 12, 1, 1, 11, 9, 1, 11, 8, 7, 4, 3, 104,6, 4, 15, 12, 11, 2, 3, 10, 3, 2, 8, 3, 8, 3, 2, 5, 2, 14, 4, 3, 3, 25, 4, 2, 5, 10,
- 6, 4, 3, 3, 3, 2, 155,43, 3, 2, 18, 4, 8, 2, 2, 12, 8, 5, 3, 3, 1, 7, 3, 20, 16, 12, 3, 33, 23, 23, 18, 18, 11, 6, 2, 1, 1, 1, 1, 6, 3,
- 4, 1, 1, 6, 4, 6, 27, 26, 17, 15, 9, 7, 5, 1, 2, 48, 1, 1, 1, 11, 1, 8, 7, 5, 9, 2, 2, 8, 5, 4, 1, 7, 7, 4, 2, 75, 28, 4, 15, 4, 3,
- 7, 4, 11, 3, 22, 12, 12, 10, 2, 7, 3, 3, 3, 2, 2, 4, 12, 5, 3, 2, 17, 8, 3, 1, 1, 1, 30, 15, 14, 1, 6, 4, 3, 2, 7, 1, 3, 2, 17, 3, 1,
- 1, 1, 1, 1, 1, 3, 1, 6, 1, 3, 21, 2, 9, 1, 1, 6, 5, 5, 4, 1, 1, 1, 1, 1, 1, 2, 10, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 52, 3, 13, 5, 3, 2, 2, 2, 2, 3, 3, 3, 3, 12, 2, 1, 1, 4, 6, 2, 23, 2, 6, 2, 1, 2, 2, 2, 3, 3, 5, 1, 1, 1, 1, 1,
- 1, 4, 2, 43, 2, 8, 8, 8, 6, 6, 3, 12, 3, 2, 2, 11, 11, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 26, 3, 1, 1, 1, 7, 5, 4, 4, 4, 4, 3, 1, 2,
- 4, 1, 57, 27, 1, 1, 2, 2, 1, 1, 5, 8, 8, 3, 9, 2, 4, 3, 5, 7, 1, 3, 2, 2, 62, 11, 9, 6, 4, 1, 1, 1, 1, 2, 13, 6, 5, 7, 5, 4, 10,
- 9, 21, 3, 4, 3, 7, 6, 12, 2, 1, 1, 2, 3, 74, 13, 5, 3, 3, 4, 15, 3, 1, 12, 11, 11, 6, 5, 5, 2, 10, 4, 12, 3, 2, 4, 2, 6, 2, 2, 2, 4,
- 2, 7, 1, 1, 3, 2, 40, 3, 3, 18, 5, 4, 3, 3, 8, 5, 39, 8, 4, 2, 15, 3, 2, 5, 4, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 2, 13, 3, 3, 3, 42, 6, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 2, 2, 4, 3, 12, 2, 6, 6, 4, 2,
- 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 3, 2, 2, 29, 4, 1, 3, 2, 8, 3, 3, 2, 5, 2, 2, 8, 2, 1, 6, 6, 43, 3, 2, 5, 5, 2, 3, 2, 8, 4, 56,
- 4, 2, 2, 4, 14, 6, 2, 1, 23, 7, 4, 2, 5, 4, 3, 68, 4, 2, 4, 1, 11, 8, 8, 3, 3, 3, 1, 2, 1, 2, 1, 3, 16, 5, 4, 4, 4, 9, 7, 7, 7,
- 2, 2, 5, 143,12, 4, 3, 1, 1, 1, 1, 1, 2, 9, 6, 1, 1, 2, 1, 1, 4, 3, 2, 5, 4, 3, 11, 6, 2, 3, 2, 4, 53, 3, 2, 50, 1, 1, 3, 3, 3,
- 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 5, 5, 5, 4, 2, 8, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 9, 4, 4, 4, 4, 3, 3, 3, 10,
- 4, 4, 4, 4, 3, 3, 3, 3, 3, 9, 2, 2, 3, 2, 19, 17, 10, 9, 7, 2, 5, 3, 2, 3, 2, 51, 8, 3, 25, 17, 2, 2, 1, 1, 1, 5, 1, 1, 13, 6, 3,
- 208,5, 26, 3, 7, 6, 2, 4, 3, 5, 5, 10, 3, 2, 7, 7, 3, 1, 1, 9, 4, 2, 2, 2, 2, 4, 2, 9, 5, 4, 4, 2, 2, 3, 2, 2, 14, 4, 2, 4, 2,
- 16, 6, 2, 5, 4, 3, 6, 4, 3, 2, 13, 7, 7, 7, 5, 4, 1, 1, 1, 1, 1, 1, 2, 2, 49, 1, 3, 3, 3, 3, 1, 3, 2, 2, 2, 3, 3, 1, 1, 5, 4,
- 4, 4, 6, 3, 2, 6, 2, 3, 11, 8, 4, 3, 3, 2, 1, 7, 6, 6, 5, 2, 2, 2, 10, 5, 3, 11, 2, 3, 2, 4, 2, 1, 1, 23, 1, 1, 1, 1, 1, 3, 2,
- 1, 1, 1, 3, 2, 2, 1, 2, 1, 1, 7, 37, 1, 10, 1, 1, 1, 2, 1, 2, 1, 3, 2, 5, 11, 4, 5, 24, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
- 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 16, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 18, 6, 4, 2, 1, 7, 4, 199,10, 6, 4, 4, 3, 25, 2, 2, 2, 1, 2, 2, 4, 2, 3, 2, 26, 5, 3, 16, 15, 5, 4, 61, 5, 4, 3, 2, 1, 1, 1, 1, 14,
- 7, 1, 2, 4, 15, 3, 6, 9, 8, 4, 1, 2, 66, 1, 49, 17, 4, 4, 19, 5, 5, 4, 3, 4, 4, 2, 3, 5, 4, 3, 1, 2, 9, 4, 2, 97, 6, 2, 22, 3, 3,
- 3, 13, 11, 2, 2, 4, 1, 1, 1, 1, 4, 3, 3, 3, 2, 3, 6, 16, 3, 3, 4, 7, 4, 6, 2, 6, 1, 9, 1, 1, 8, 1, 4, 3, 3, 3, 5, 3, 3, 1, 1,
- 1, 2, 2, 5, 1, 1, 2, 81, 7, 5, 4, 11, 4, 6, 53, 2, 1, 47, 5, 2, 2, 2, 3, 1, 3, 3, 4, 2, 4, 3, 2, 6, 6, 5, 5, 2, 2, 7, 1, 5, 4,
- 1, 13, 4, 2, 5, 5, 2, 2, 3, 1, 82, 6, 10, 1, 16, 12, 7, 15, 9, 2, 2, 28, 19, 15, 4, 4, 2, 4, 3, 2, 25, 3, 1, 3, 6, 26, 2, 1, 4, 2, 2,
- 2, 3, 4, 3, 50, 1, 1, 1, 1, 13, 5, 4, 8, 7, 4, 3, 5, 5, 4, 4, 4, 3, 5, 3, 19, 2, 1, 13, 2, 12, 2, 3, 3, 1, 4, 4, 4, 3, 53, 3, 1,
- 1, 18, 14, 2, 3, 2, 3, 1, 11, 5, 3, 1, 1, 2, 4, 2, 1, 1, 1, 3, 51, 3, 3, 5, 1, 3, 17, 4, 4, 9, 1, 1, 1, 1, 3, 1, 1, 5, 2, 2, 2,
- 7, 1, 6, 2, 2, 16, 4, 10, 8, 1, 12, 6, 4, 2, 2, 1, 1, 1, 20, 1, 1, 2, 1, 3, 1, 3, 1, 2, 1, 2, 2, 2, 1, 5, 1, 4, 10, 1, 1, 2, 1,
- 4, 3, 3, 2, 1, 11, 10, 2, 3, 1, 37, 3, 5, 4, 3, 13, 10, 3, 7, 5, 4, 3, 5, 24, 3, 4, 5, 2, 3, 4, 4, 21, 3, 4, 2, 1, 4, 19, 7, 2, 2,
- 3, 3, 10, 2, 2, 2, 20, 4, 4, 4, 5, 4, 6, 1, 1, 3, 2, 17, 3, 2, 6, 4, 49, 44, 43, 4, 4, 2, 11, 3, 3, 9, 2, 3, 3, 2, 2, 1, 1, 1, 5,
- 47, 7, 6, 6, 9, 5, 5, 5, 10, 5, 2, 5, 2, 1, 40, 11, 4, 3, 5, 3, 2, 2, 16, 14, 11, 3, 77, 6, 1, 1, 1, 3, 9, 1, 1, 1, 7, 4, 3, 1, 1,
- 1, 1, 1, 1, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 3, 1, 1, 3, 1, 2, 3, 1, 1, 1, 2, 2, 2, 2, 1, 6, 3, 2,
- 1, 1, 3, 2, 7, 1, 1, 2, 3, 3, 1, 1, 1, 1, 4, 3, 1, 2, 7, 3, 1, 2, 2, 2, 1, 2, 2, 1, 3, 1, 2, 40, 4, 4, 11, 4, 1, 1, 1, 7, 6,
- 5, 4, 3, 7, 2, 7, 5, 4, 3, 1, 8, 2, 1, 1, 1, 8, 4, 3, 7, 3, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 9, 4, 3, 1, 3, 6,
- 6, 4, 3, 4, 2, 4, 1, 1, 12, 4, 1, 1, 1, 2, 5, 2, 9, 5, 7, 3, 33, 27, 13, 7, 11, 5, 2, 16, 3, 7, 1, 15, 1, 1, 6, 3, 3, 3, 73, 4, 66,
- 1, 6, 1, 1, 3, 2, 2, 3, 2, 7, 2, 2, 11, 4, 4, 4, 2, 2, 6, 4, 2, 3, 3, 5, 5, 4, 3, 1, 11, 3, 5, 5, 4, 2, 10, 2, 5, 3, 1, 53, 4,
- 2, 2, 12, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 2, 1, 1, 3, 12, 2, 2, 8, 3, 116,4, 2, 19, 4, 7, 4, 1, 1, 1, 1, 10, 3, 3, 2, 17, 2, 3, 6,
- 6, 5, 1, 1, 2, 2, 22, 7, 5, 2, 2, 2, 10, 2, 1, 4, 4, 4, 3, 2, 13, 5, 4, 4, 3, 3, 2, 2, 1, 1, 2, 2, 28, 2, 1, 1, 3, 1, 4, 8, 5,
- 5, 5, 81, 15, 3, 2, 3, 28, 19, 5, 3, 7, 5, 5, 4, 3, 1, 1, 1, 2, 1, 19, 5, 4, 4, 14, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 2, 38, 1, 12, 3, 5, 6, 2, 6, 2, 2, 1, 2, 1, 1, 1, 2, 8, 7, 2, 3, 4, 1, 2, 1, 4, 1, 1, 11, 2, 1, 1, 1, 1, 3,
- 2, 17, 1, 4, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 2, 8, 1, 1, 1, 1, 5, 7, 4, 35, 3, 3, 2, 8, 2, 3, 3, 21, 19,
- 4, 12, 2, 3, 3, 1, 1, 1, 14, 5, 2, 6, 2, 2, 2, 10, 5, 4, 3, 8, 5, 5, 5, 3, 3, 2, 6, 4, 14, 2, 9, 1, 6, 46, 4, 2, 21, 15, 15, 2, 1,
- 11, 10, 4, 3, 5, 3, 3, 3, 2, 42, 5, 2, 2, 4, 2, 7, 2, 7, 4, 2, 2, 4, 3, 3, 2, 37, 3, 1, 1, 3, 2, 2, 5, 9, 7, 1, 5, 14, 2, 1, 5,
- 2, 2, 41, 3, 5, 2, 7, 7, 5, 5, 5, 4, 6, 8, 2, 2, 1, 1, 3, 2, 2, 1, 2, 2, 2, 5, 1, 10, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 86, 11, 3,
- 1, 1, 1, 1, 1, 2, 3, 4, 4, 2, 5, 1, 2, 6, 3, 4, 4, 1, 1, 1, 1, 3, 8, 8, 2, 5, 5, 2, 2, 2, 2, 2, 3, 9, 2, 1, 1, 2, 1, 3, 3,
- 3, 3, 1, 1, 1, 69, 5, 2, 2, 2, 8, 3, 1, 1, 4, 4, 3, 11, 2, 5, 3, 2, 1, 1, 1, 4, 2, 2, 4, 9, 6, 1, 2, 2, 1, 1, 4, 3, 2, 2, 1,
- 4, 3, 4, 4, 3, 1, 1, 7, 3, 2, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, 28, 2, 6, 2, 3,
- 7, 4, 3, 2, 1, 5, 3, 13, 3, 2, 2, 18, 2, 2, 2, 6, 3, 2, 1, 2, 1, 1, 1, 74, 3, 3, 3, 3, 4, 51, 3, 2, 3, 1, 1, 1, 1, 1, 7, 2, 2,
- 3, 2, 1, 1, 1, 1, 10, 3, 3, 8, 2, 2, 1, 8, 6, 2, 2, 2, 1, 1, 3, 1, 1, 2, 2, 12, 3, 3, 16, 16, 16, 16, 11, 3, 6, 32, 7, 2, 21, 9, 5,
- 5, 4, 4, 4, 2, 3, 1, 10, 3, 3, 23, 6, 3, 3, 7, 6, 3, 55, 11, 4, 4, 7, 7, 2, 24, 16, 16, 10, 5, 8, 8, 6, 3, 3, 3, 16, 5, 5, 5, 5, 5,
- 6, 6, 6, 6, 7, 5, 5, 2, 4, 3, 3, 3, 171,1, 1, 1, 1, 1, 16, 4, 2, 2, 4, 2, 2, 43, 6, 5, 5, 5, 4, 3, 1, 1, 1, 7, 5, 5, 5, 5, 3,
- 3, 3, 2, 23, 4, 4, 12, 6, 4, 7, 4, 3, 24, 18, 18, 1, 3, 4, 3, 2, 2, 2, 2, 1, 20, 4, 1, 1, 4, 4, 1, 1, 3, 1, 3, 1, 10, 5, 2, 1, 3,
- 1, 1, 9, 8, 4, 36, 15, 3, 3, 3, 7, 16, 11, 10, 9, 1, 1, 1, 1, 4, 4, 4, 4, 3, 1, 1, 118,7, 15, 1, 1, 1, 4, 31, 1, 2, 3, 6, 3, 4, 3,
- 3, 3, 1, 1, 2, 16, 3, 3, 1, 2, 3, 28, 5, 9, 3, 7, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 49, 3, 1, 1, 1, 1, 4, 2, 1, 10, 5, 3,
- 1, 1, 1, 3, 2, 7, 3, 2, 2, 2, 2, 1, 2, 4, 1, 3, 10, 1, 1, 8, 4, 3, 2, 4, 2, 2, 101,4, 1, 2, 2, 77, 27, 18, 4, 2, 2, 5, 3, 8, 20,
- 17, 7, 10, 7, 4, 5, 3, 2, 14, 4, 3, 3, 3, 2, 4, 3, 2, 3, 4, 3, 2, 69, 16, 5, 2, 2, 3, 2, 1, 2, 2, 5, 3, 8, 1, 4, 10, 7, 3, 2, 2,
- 6, 2, 1, 7, 2, 2, 1, 1, 1, 93, 18, 6, 4, 2, 2, 5, 3, 7, 6, 5, 4, 3, 2, 4, 4, 3, 3, 20, 2, 7, 4, 1, 1, 2, 2, 3, 13, 4, 2, 3, 5,
- 3, 2, 2, 6, 2, 2, 4, 3, 32, 1, 14, 4, 3, 6, 3, 1, 1, 1, 4, 15, 6, 5, 3, 3, 104,22, 1, 4, 4, 4, 19, 4, 1, 1, 2, 1, 4, 3, 1, 3, 2,
- 2, 1, 12, 1, 6, 3, 2, 1, 3, 2, 2, 3, 13, 4, 4, 2, 1, 1, 5, 3, 4, 3, 3, 3, 3, 15, 4, 4, 1, 34, 5, 1, 1, 5, 3, 4, 4, 2, 2, 4, 1,
- 1, 1, 1, 1, 46, 3, 3, 9, 5, 2, 3, 2, 2, 2, 2, 3, 2, 8, 2, 2, 2, 2, 2, 64, 5, 3, 7, 5, 4, 3, 1, 1, 3, 2, 2, 1, 1, 5, 5, 2, 2,
- 8, 2, 1, 1, 12, 2, 3, 2, 1, 1, 1, 1, 3, 2, 2, 3, 2, 10, 7, 6, 3, 2, 79, 13, 5, 5, 4, 4, 5, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
- 5, 4, 4, 7, 2, 49, 9, 7, 4, 27, 17, 11, 4, 4, 2, 24, 4, 1, 13, 4, 3, 2, 2, 10, 4, 3, 3, 12, 2, 1, 2, 1, 3, 12, 2, 1, 2, 3, 9, 2, 2,
- 2, 5, 1, 1, 1, 6, 6, 2, 17, 14, 14, 13, 9, 2, 1, 1, 102,17, 2, 3, 7, 1, 1, 2, 25, 12, 12, 5, 4, 3, 4, 5, 1, 1, 1, 2, 2, 2, 13, 3, 4,
- 3, 16, 15, 1, 1, 3, 1, 1, 4, 3, 3, 9, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 3, 2, 1, 1, 170,2, 6, 10, 7, 3, 3, 1, 1, 1, 12, 2, 1, 2, 3,
- 4, 2, 48, 2, 1, 1, 1, 1, 2, 2, 3, 6, 3, 2, 3, 1, 1, 4, 7, 5, 5, 1, 2, 4, 15, 4, 2, 3, 2, 4, 2, 16, 1, 11, 2, 1, 1, 1, 3, 3, 9,
- 2, 2, 2, 2, 2, 2, 2, 1, 15, 2, 4, 2, 13, 3, 3, 1, 1, 2, 2, 3, 2, 2, 2, 5, 3, 1, 3, 1, 3, 2, 2, 60, 5, 1, 2, 5, 3, 1, 1, 24, 16,
- 12, 9, 5, 2, 2, 4, 4, 3, 2, 232,12, 4, 3, 2, 2, 75, 8, 3, 1, 1, 35, 2, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 7, 2, 2, 1, 2, 28, 23, 4, 14,
- 9, 5, 1, 2, 11, 3, 3, 1, 1, 4, 4, 4, 4, 4, 17, 3, 6, 4, 3, 2, 8, 1, 1, 2, 38, 8, 3, 2, 20, 7, 7, 7, 7, 6, 4, 3, 11, 7, 6, 6, 6,
- 6, 6, 4, 3, 48, 2, 3, 36, 21, 14, 7, 7, 3, 4, 3, 3, 3, 8, 3, 2, 3, 5, 1, 1, 4, 2, 1, 1, 1, 60, 2, 5, 32, 25, 22, 2, 2, 8, 6, 6, 3,
- 2, 21, 3, 2, 14, 9, 24, 17, 11, 11, 11, 10, 9, 6, 3, 3, 60, 9, 13, 2, 8, 3, 18, 17, 16, 5, 4, 2, 11, 5, 2, 1, 1, 1, 1, 1, 1, 45, 3, 5, 3,
- 3, 2, 1, 4, 3, 3, 7, 3, 3, 5, 3, 46, 40, 35, 3, 27, 14, 10, 4, 2, 1, 1, 1, 2, 2, 78, 2, 20, 16, 16, 11, 7, 4, 3, 3, 17, 14, 14, 11, 1, 3,
- 2, 3, 14, 4, 8, 5, 3, 2, 4, 2, 1, 24, 6, 5, 5, 6, 2, 10, 14, 3, 3, 3, 4, 29, 9, 6, 6, 6, 6, 3, 3, 3, 9, 4, 5, 5, 5, 2, 1, 1, 1,
- 1, 34, 2, 3, 3, 2, 4, 1, 3, 2, 5, 2, 5, 2, 2, 3, 13, 10, 6, 5, 3, 2, 2, 2, 15, 2, 4, 7, 15, 2, 1, 2, 2, 62, 3, 11, 3, 3, 24, 22, 5,
- 5, 6, 3, 3, 1, 7, 2, 2, 3, 1, 1, 1, 4, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 6, 4, 4, 3, 4, 2, 5, 4, 2, 14, 2, 1, 13, 4, 26, 10, 8,
- 3, 2, 1, 1, 10, 10, 10, 8, 8, 2, 2, 2, 2, 10, 4, 2, 2, 17, 3, 4, 6, 17, 4, 3, 4, 3, 9, 2, 18, 5, 5, 5, 4, 3, 2, 2, 1, 12, 5, 4, 2,
- 1, 20, 5, 4, 7, 4, 92, 2, 42, 9, 3, 2, 3, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 25, 3, 5, 4, 3, 3, 4, 2, 2, 2, 2, 2, 2, 4, 2,
- 4, 3, 29, 6, 3, 3, 2, 16, 1, 1, 1, 3, 2, 2, 1, 3, 2, 2, 6, 7, 3, 3, 2, 2, 110,12, 1, 4, 3, 2, 7, 3, 16, 11, 2, 8, 3, 2, 2, 3, 5,
- 7, 1, 1, 1, 1, 1, 4, 2, 4, 47, 6, 1, 1, 2, 16, 2, 8, 6, 2, 2, 3, 12, 4, 3, 3, 2, 4, 3, 9, 9, 9, 3, 1, 1, 1, 1, 1, 5, 3, 1, 8,
- 2, 1, 4, 3, 3, 3, 6, 6, 5, 7, 7, 2, 4, 12, 2, 2, 4, 1, 10, 1, 180,1, 4, 1, 10, 2, 2, 4, 2, 2, 11, 3, 1, 5, 4, 4, 8, 6, 4, 4, 6,
- 4, 15, 8, 5, 5, 3, 1, 8, 5, 4, 3, 1, 3, 28, 13, 3, 3, 6, 4, 8, 5, 4, 3, 2, 3, 3, 3, 14, 3, 3, 3, 3, 3, 3, 1, 5, 17, 8, 5, 5, 2,
- 5, 4, 23, 2, 2, 2, 4, 4, 4, 2, 4, 3, 3, 2, 5, 3, 2, 2, 1, 1, 4, 3, 12, 5, 3, 3, 2, 2, 2, 2, 1, 18, 7, 4, 4, 7, 2, 1, 17, 2, 5,
- 4, 15, 3, 2, 2, 8, 5, 2, 2, 2, 1, 2, 2, 2, 20, 8, 5, 2, 5, 4, 8, 2, 2, 5, 3, 1, 7, 2, 5, 4, 1, 3, 22, 8, 4, 9, 9, 3, 3, 2, 1,
- 1, 1, 2, 28, 10, 12, 4, 3, 6, 3, 18, 4, 6, 7, 1, 4, 2, 1, 1, 1, 17, 2, 4, 4, 4, 6, 3, 39, 10, 6, 1, 7, 3, 3, 3, 2, 2, 12, 5, 4, 3,
- 1, 1, 1, 1, 1, 1, 23, 3, 6, 5, 3, 3, 2, 4, 6, 6, 2, 15, 2, 5, 5, 5, 3, 3, 3, 3, 2, 1, 12, 3, 3, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1,
- 1, 1, 4, 3, 50, 1, 1, 1, 1, 4, 2, 2, 1, 1, 13, 7, 3, 2, 2, 16, 2, 6, 3, 2, 3, 51, 4, 4, 1, 1, 1, 4, 3, 2, 5, 4, 1, 1, 1, 4, 3,
- 3, 3, 15, 15, 5, 6, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 2, 7, 1, 3, 3, 3, 1, 1, 18, 2, 6, 2, 6, 6, 5, 4, 42, 9, 3, 2, 5, 3, 2,
- 1, 1, 1, 3, 5, 2, 1, 9, 2, 3, 1, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 14, 3, 4, 2, 2, 15, 3, 2, 1, 7, 112,5, 2, 14, 20, 3, 6, 2, 3, 2, 1, 26, 14,
- 12, 7, 3, 30, 6, 13, 7, 2, 4, 4, 2, 1, 1, 1, 3, 3, 2, 78, 9, 2, 1, 1, 2, 20, 7, 5, 2, 3, 3, 7, 3, 3, 7, 4, 2, 2, 1, 1, 1, 1, 5,
- 3, 7, 2, 2, 2, 7, 2, 14, 3, 2, 1, 4, 2, 5, 3, 53, 12, 8, 4, 1, 1, 1, 1, 17, 4, 3, 3, 11, 10, 6, 4, 5, 2, 2, 14, 4, 4, 66, 5, 7, 3,
- 31, 3, 3, 3, 3, 2, 2, 17, 5, 4, 4, 5, 8, 4, 8, 4, 3, 2, 20, 3, 5, 2, 2, 1, 1, 6, 5, 5, 5, 4, 71, 8, 4, 3, 6, 6, 6, 9, 1, 7, 1,
- 1, 1, 1, 2, 3, 3, 1, 5, 2, 2, 2, 2, 2, 4, 9, 2, 4, 9, 4, 3, 3, 2, 5, 4, 3, 2, 41, 3, 5, 12, 1, 2, 4, 4, 3, 8, 5, 3, 3, 3, 2,
- 2, 3, 1, 1, 22, 1, 1, 7, 2, 2, 2, 7, 3, 47, 21, 1, 1, 6, 6, 5, 1, 1, 1, 8, 2, 10, 4, 4, 50, 8, 3, 18, 10, 2, 10, 2, 2, 2, 2, 4, 2,
- 2, 22, 2, 12, 5, 3, 2, 9, 4, 3, 3, 2, 4, 4, 1, 1, 2, 11, 4, 34, 1, 1, 6, 5, 3, 1, 16, 5, 5, 3, 2, 3, 35, 2, 7, 4, 2, 2, 1, 2, 1,
- 8, 4, 3, 2, 2, 3, 5, 3, 3, 2, 2, 1, 1, 1, 30, 5, 17, 10, 4, 4, 4, 2, 2, 5, 3, 3, 2, 40, 10, 6, 2, 1, 7, 9, 3, 5, 3, 4, 27, 1, 14,
- 7, 4, 1, 1, 2, 2, 20, 5, 2, 1, 4, 2, 2, 2, 2, 1, 4, 2, 2, 1, 25, 2, 14, 2, 1, 1, 1, 3, 14, 3, 2, 4, 2, 12, 4, 1, 3, 14, 1, 4, 4,
- 4, 60, 9, 4, 2, 7, 5, 15, 15, 11, 6, 12, 2, 2, 2, 4, 2, 2, 9, 3, 2, 5, 4, 1, 1, 1, 1, 1, 18, 14, 4, 5, 3, 2, 125,43, 2, 3, 2, 2, 1,
- 1, 1, 2, 1, 5, 8, 1, 2, 2, 2, 1, 7, 3, 1, 4, 1, 2, 28, 2, 21, 4, 2, 3, 2, 2, 22, 3, 3, 2, 2, 8, 2, 2, 6, 3, 2, 1, 1, 3, 3, 13,
- 5, 1, 3, 3, 2, 4, 4, 2, 154,5, 9, 2, 1, 7, 7, 7, 22, 7, 3, 9, 6, 9, 1, 3, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 6, 6, 2,
- 9, 3, 3, 3, 25, 3, 11, 4, 4, 7, 4, 4, 3, 3, 2, 2, 2, 6, 3, 9, 4, 4, 11, 6, 1, 1, 4, 1, 1, 1, 1, 17, 1, 3, 9, 9, 4, 3, 1, 1, 1,
- 1, 1, 9, 1, 1, 5, 1, 4, 4, 4, 2, 3, 1, 5, 12, 4, 4, 5, 2, 24, 6, 3, 6, 5, 28, 14, 1, 1, 13, 2, 3, 3, 2, 3, 2, 6, 3, 2, 41, 2, 2,
- 20, 5, 2, 6, 3, 2, 39, 11, 7, 3, 4, 6, 2, 2, 3, 29, 6, 1, 8, 9, 6, 6, 6, 5, 5, 3, 6, 18, 6, 3, 9, 3, 3, 8, 2, 2, 2, 4, 2, 33, 1,
- 7, 4, 16, 4, 1, 2, 1, 1, 3, 3, 37, 10, 2, 5, 12, 3, 4, 8, 6, 28, 9, 3, 6, 1, 3, 3, 1, 1, 104,4, 10, 3, 10, 2, 1, 1, 5, 3, 2, 50, 23,
- 14, 13, 11, 9, 4, 6, 6, 6, 4, 6, 7, 7, 7, 2, 3, 3, 3, 10, 13, 4, 2, 6, 2, 2, 8, 31, 11, 1, 2, 9, 5, 5, 5, 14, 4, 3, 8, 13, 7, 3, 4,
- 13, 13, 9, 4, 4, 152,10, 5, 18, 1, 4, 1, 1, 1, 1, 1, 2, 4, 3, 2, 1, 1, 1, 1, 18, 12, 7, 2, 2, 2, 2, 2, 2, 2, 17, 5, 6, 5, 5, 3, 7,
- 3, 3, 2, 3, 2, 2, 47, 3, 2, 36, 34, 30, 1, 1, 1, 2, 1, 54, 4, 11, 3, 3, 9, 3, 16, 14, 7, 5, 3, 5, 3, 6, 4, 1, 1, 4, 3, 2, 22, 4, 3,
- 3, 2, 1, 5, 4, 19, 18, 9, 2, 30, 4, 3, 10, 8, 11, 7, 3, 3, 2, 34, 5, 4, 1, 1, 1, 4, 3, 3, 15, 7, 7, 7, 6, 1, 18, 5, 4, 4, 4, 3, 5,
- 3, 9, 82, 52, 9, 7, 7, 5, 23, 7, 3, 3, 3, 6, 6, 2, 20, 6, 12, 3, 5, 2, 4, 32, 2, 12, 2, 7, 8, 4, 3, 5, 1, 89, 2, 4, 65, 2, 6, 7, 2,
- 2, 2, 7, 18, 10, 4, 2, 7, 3, 9, 1, 2, 2, 71, 3, 19, 11, 11, 3, 2, 30, 3, 3, 9, 4, 13, 7, 2, 1, 1, 1, 1, 1, 6, 4, 34, 6, 6, 15, 2, 5,
- 1, 4, 3, 7, 1, 1, 1, 4, 61, 1, 1, 1, 1, 1, 1, 1, 8, 2, 3, 3, 2, 8, 4, 3, 3, 6, 6, 2, 8, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 13, 3,
- 2, 1, 3, 3, 1, 9, 2, 2, 9, 2, 2, 114,35, 17, 1, 1, 1, 13, 7, 4, 4, 3, 9, 4, 11, 9, 8, 2, 2, 28, 13, 3, 4, 9, 3, 5, 2, 3, 7, 4, 4,
- 65, 7, 2, 1, 3, 14, 6, 3, 2, 3, 3, 2, 16, 5, 2, 5, 4, 2, 9, 6, 3, 5, 4, 3, 3, 7, 4, 4, 4, 1, 84, 9, 4, 4, 4, 9, 2, 16, 6, 5, 5,
- 3, 3, 3, 3, 15, 4, 4, 4, 4, 5, 3, 3, 3, 3, 4, 3, 3, 3, 23, 4, 2, 4, 12, 2, 5, 58, 4, 8, 2, 2, 8, 1, 1, 8, 9, 7, 4, 3, 3, 3, 7,
- 6, 4, 4, 29, 6, 6, 2, 10, 5, 2, 2, 1, 4, 3, 7, 2, 22, 4, 3, 3, 5, 4, 2, 2, 2, 2, 10, 6, 3, 125,9, 3, 1, 1, 5, 3, 10, 3, 2, 2, 2,
- 2, 1, 9, 3, 2, 2, 44, 4, 17, 4, 4, 3, 5, 2, 12, 2, 3, 3, 2, 2, 5, 2, 16, 3, 3, 3, 3, 3, 3, 6, 1, 10, 7, 2, 15, 11, 2, 2, 5, 3, 2,
- 26, 2, 1, 1, 10, 3, 3, 1, 14, 3, 2, 8, 8, 37, 4, 15, 9, 2, 5, 4, 4, 2, 5, 4, 3, 4, 3, 3, 3, 16, 3, 2, 9, 8, 8, 8, 3, 12, 6, 6, 5,
- 6, 3, 2, 2, 2, 28, 4, 2, 2, 2, 2, 5, 3, 3, 9, 3, 5, 5, 5, 4, 3, 3, 59, 5, 2, 12, 5, 19, 2, 6, 3, 7, 3, 3, 12, 3, 4, 1, 1, 2, 2,
- 7, 2, 25, 3, 2, 11, 6, 6, 2, 43, 16, 2, 2, 4, 5, 4, 4, 4, 4, 3, 1, 9, 3, 5, 5, 4, 4, 1, 4, 2, 6, 10, 7, 7, 6, 65, 3, 8, 4, 3, 28,
- 20, 18, 5, 2, 3, 12, 12, 3, 2, 6, 5, 4, 1, 1, 1, 3, 3, 16, 1, 5, 2, 2, 45, 17, 4, 4, 4, 5, 5, 8, 1, 4, 2, 5, 2, 7, 6, 6, 6, 4, 4,
- 10, 4, 1, 35, 3, 7, 5, 5, 5, 3, 2, 1, 4, 3, 4, 1, 1, 3, 3, 35, 11, 10, 10, 5, 15, 15, 10, 4, 7, 5, 5, 1, 5, 2, 2, 2, 66, 2, 6, 3, 5,
- 1, 6, 3, 8, 3, 10, 10, 5, 5, 3, 3, 3, 2, 6, 1, 4, 4, 4, 10, 5, 2, 3, 3, 3, 4, 4, 4, 18, 4, 7, 5, 17, 2, 30, 10, 1, 7, 4, 4, 6, 5,
- 10, 4, 4, 5, 3, 2, 3, 3, 16, 2, 1, 3, 7, 3, 2, 24, 7, 3, 3, 2, 1, 1, 3, 3, 3, 24, 18, 3, 3, 3, 3, 3, 3, 3, 14, 5, 5, 5, 9, 8, 2,
- 2, 58, 3, 14, 3, 21, 3, 2, 2, 6, 11, 5, 3, 5, 95, 5, 1, 3, 3, 16, 6, 3, 1, 3, 3, 3, 3, 20, 3, 8, 7, 4, 1, 1, 1, 29, 27, 16, 9, 6, 6,
- 5, 5, 3, 2, 7, 7, 23, 4, 3, 3, 2, 2, 8, 4, 4, 13, 2, 15, 4, 7, 6, 4, 2, 75, 8, 3, 13, 7, 3, 3, 2, 4, 3, 8, 1, 1, 5, 3, 8, 4, 3,
- 20, 4, 4, 3, 4, 14, 2, 2, 5, 2, 3, 2, 62, 49, 5, 2, 2, 2, 11, 2, 2, 2, 24, 17, 1, 1, 6, 6, 4, 5, 2, 121,15, 2, 2, 13, 5, 23, 6, 4, 4,
- 51, 5, 3, 3, 2, 3, 2, 5, 10, 5, 5, 1, 1, 2, 9, 2, 8, 3, 1, 1, 1, 1, 16, 4, 2, 5, 2, 2, 4, 52, 4, 11, 5, 26, 4, 3, 2, 2, 7, 3, 3,
- 3, 3, 4, 5, 4, 3, 3, 2, 11, 8, 2, 2, 5, 2, 7, 2, 2, 11, 8, 2, 4, 82, 15, 2, 3, 3, 2, 4, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 14, 4, 4,
- 4, 4, 1, 7, 5, 3, 2, 2, 3, 3, 2, 1, 1, 7, 1, 2, 2, 2, 1, 1, 19, 4, 2, 8, 6, 2, 6, 2, 1, 1, 4, 1, 1, 1, 1, 1, 1, 3, 2, 2, 5,
- 1, 3, 2, 1, 1, 1, 1, 102,3, 2, 4, 1, 1, 9, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1, 23, 3, 15, 3, 3, 2, 1, 3, 3, 1, 1, 9, 8, 38, 5, 5, 3,
- 3, 17, 14, 13, 2, 2, 3, 7, 2, 4, 4, 4, 3, 1, 1, 4, 3, 2, 2, 10, 8, 2, 7, 2, 1, 3, 50, 3, 1, 2, 1, 7, 20, 2, 1, 1, 1, 1, 13, 7, 6,
- 6, 3, 3, 3, 2, 1, 1, 3, 2, 2, 6, 1, 1, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 146,1, 113,20, 5, 5, 5, 4, 4, 8, 3,
- 3, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 7, 3, 2, 2, 4, 3, 3, 3, 3, 3, 3, 23, 17, 9, 5, 2, 23, 2, 17, 11, 4, 4, 3, 19, 1, 1, 10, 9, 9, 9,
- 6, 5, 3, 2, 1, 1, 1, 1, 1, 1, 6, 6, 4, 8, 7, 2, 1, 1, 1, 4, 1, 2, 147,4, 3, 21, 4, 15, 15, 11, 6, 3, 3, 1, 1, 1, 1, 1, 1, 31, 12,
- 4, 1, 3, 10, 4, 4, 4, 3, 3, 3, 24, 23, 23, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 3, 3, 3, 11, 5, 5, 5, 51, 1, 49, 6, 4, 2, 11,
- 9, 9, 8, 8, 2, 2, 2, 2, 2, 2, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 3, 3, 1, 2, 2, 9, 1, 3, 3, 3, 2, 2, 2, 2, 4, 1, 1, 1, 13, 8, 5,
- 4, 3, 2, 2, 2, 1, 1, 1, 12, 1, 2, 2, 44, 2, 13, 3, 4, 2, 1, 1, 1, 4, 4, 4, 4, 26, 25, 12, 5, 5, 2, 4, 11, 2, 5, 5, 5, 4, 3, 3, 3,
- 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, 3, 41, 4, 2, 2, 1, 2, 13, 2, 3, 5, 1, 1, 6, 2, 2, 7, 3, 3, 1, 1, 161,1, 22, 11, 6, 2, 4,
- 1, 24, 3, 3, 10, 3, 2, 2, 7, 5, 3, 5, 14, 3, 4, 2, 1, 3, 56, 3, 23, 3, 3, 8, 2, 8, 9, 7, 3, 2, 2, 4, 3, 3, 3, 9, 21, 2, 2, 5, 2,
- 2, 2, 10, 8, 5, 2, 2, 9, 2, 135,1, 13, 5, 5, 4, 10, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 3, 4, 2, 4, 4, 3, 2, 2, 48, 2, 1, 9, 6, 5, 1,
- 3, 2, 1, 3, 2, 10, 3, 4, 6, 2, 1, 1, 1, 1, 1, 3, 31, 4, 4, 1, 1, 1, 1, 1, 4, 14, 3, 1, 5, 1, 3, 2, 2, 2, 3, 49, 3, 11, 4, 5, 5,
- 7, 6, 6, 5, 6, 4, 3, 3, 19, 6, 3, 7, 1, 1, 3, 113,18, 3, 3, 6, 2, 4, 4, 9, 3, 2, 2, 6, 5, 4, 4, 9, 3, 2, 6, 3, 3, 3, 36, 12, 5,
- 2, 5, 4, 1, 9, 4, 13, 11, 6, 2, 38, 4, 4, 4, 30, 5, 4, 4, 3, 2, 6, 4, 2, 2, 4, 230,14, 1, 1, 1, 1, 3, 2, 25, 12, 2, 3, 2, 3, 2, 2,
- 5, 37, 7, 4, 4, 2, 8, 2, 4, 4, 4, 20, 3, 1, 2, 2, 3, 2, 1, 1, 1, 4, 3, 7, 2, 1, 1, 42, 10, 5, 3, 3, 2, 3, 3, 2, 2, 3, 3, 2, 6,
- 21, 7, 6, 4, 1, 10, 3, 2, 2, 4, 4, 10, 4, 4, 1, 1, 17, 5, 4, 2, 3, 3, 23, 1, 12, 8, 6, 2, 4, 4, 48, 16, 2, 1, 1, 7, 2, 1, 17, 7, 4,
- 4, 4, 5, 5, 4, 55, 19, 3, 4, 8, 5, 2, 5, 2, 2, 3, 11, 1, 5, 3, 66, 5, 11, 1, 1, 6, 2, 4, 4, 4, 11, 2, 20, 3, 3, 3, 2, 2, 2, 12, 5,
- 4, 2, 3, 2, 2, 102,5, 1, 1, 5, 4, 15, 4, 2, 10, 6, 4, 2, 2, 5, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 5, 2, 2, 1, 1, 5, 1, 2, 31, 4,
- 2, 4, 1, 4, 3, 1, 11, 3, 3, 3, 1, 1, 4, 3, 2, 11, 6, 5, 2, 9, 4, 39, 4, 3, 29, 14, 2, 6, 2, 3, 2, 3, 7, 1, 1, 1, 1, 1, 1, 1, 3,
- 1, 1, 1, 3, 1, 1, 1, 1, 2, 41, 4, 23, 2, 3, 7, 3, 4, 2, 6, 5, 13, 3, 3, 2, 2, 2, 1, 26, 17, 2, 4, 3, 4, 2, 6, 2, 2, 66, 4, 4, 12,
- 2, 7, 3, 4, 6, 2, 5, 2, 25, 9, 2, 7, 2, 4, 3, 4, 4, 4, 35, 2, 8, 3, 1, 1, 3, 1, 2, 5, 17, 5, 5, 10, 7, 64, 4, 17, 4, 4, 3, 4, 4,
- 4, 4, 9, 7, 9, 4, 3, 11, 6, 3, 2, 2, 10, 3, 3, 71, 6, 11, 8, 6, 9, 7, 2, 1, 1, 1, 6, 3, 6, 4, 4, 4, 2, 5, 4, 3, 3, 6, 5, 5, 5,
- 4, 4, 3, 3, 3, 3, 4, 109,32, 23, 7, 7, 6, 9, 4, 4, 5, 2, 2, 2, 7, 6, 5, 3, 8, 2, 1, 1, 1, 3, 7, 1, 1, 1, 1, 1, 1, 1, 1, 2, 18,
- 2, 2, 2, 1, 6, 2, 6, 2, 2, 1, 3, 3, 3, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 21, 5, 2, 5, 2, 2, 1, 1, 1, 1, 1, 71, 5, 4, 2, 1, 3, 3,
- 3, 5, 7, 2, 17, 10, 6, 6, 2, 3, 9, 85, 4, 4, 7, 29, 6, 6, 4, 4, 4, 2, 12, 6, 3, 7, 6, 6, 1, 5, 1, 9, 2, 6, 4, 3, 2, 10, 5, 6, 1,
- 1, 2, 2, 2, 2, 2, 1, 1, 1, 10, 1, 1, 6, 6, 6, 4, 1, 1, 2, 1, 1, 1, 14, 6, 3, 1, 5, 2, 34, 4, 1, 1, 1, 1, 1, 6, 2, 1, 3, 11, 8,
- 8, 1, 6, 1, 1, 51, 4, 3, 1, 3, 3, 3, 1, 1, 7, 1, 2, 3, 5, 3, 3, 3, 2, 1, 1, 1, 4, 4, 4, 6, 1, 1, 5, 3, 4, 3, 3, 2, 2, 2, 2,
- 39, 3, 3, 6, 3, 1, 4, 4, 2, 6, 2, 14, 5, 4, 3, 2, 2, 14, 1, 6, 1, 1, 9, 5, 1, 1, 68, 2, 2, 24, 1, 1, 4, 3, 3, 17, 2, 5, 5, 16, 7,
- 7, 5, 3, 2, 8, 3, 2, 7, 1, 3, 3, 39, 23, 8, 8, 7, 9, 2, 2, 5, 4, 2, 1, 1, 36, 5, 4, 2, 6, 14, 9, 4, 4, 4, 2, 22, 6, 4, 4, 3, 2,
- 2, 2, 1, 2, 3, 96, 24, 4, 2, 9, 4, 4, 2, 2, 4, 1, 1, 1, 1, 1, 3, 2, 3, 1, 1, 2, 2, 8, 3, 9, 32, 5, 19, 11, 5, 2, 3, 3, 2, 12, 7,
- 2, 2, 1, 1, 63, 11, 3, 4, 6, 18, 3, 11, 8, 6, 4, 3, 9, 8, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 22, 1, 5, 1, 1, 3, 3, 2, 11, 5, 8,
- 4, 3, 2, 2, 3, 80, 6, 2, 11, 3, 3, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 11, 4, 4, 2, 2, 2, 12, 7, 7, 4, 4, 4, 4, 6,
- 3, 2, 11, 2, 5, 2, 2, 1, 1, 1, 4, 2, 2, 2, 2, 2, 1, 1, 1, 8, 4, 4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 1, 63, 8, 4, 3, 11, 2, 2, 2,
- 8, 5, 5, 3, 5, 5, 2, 22, 3, 5, 3, 4, 7, 4, 2, 95, 1, 1, 8, 2, 3, 13, 7, 6, 1, 1, 2, 5, 1, 1, 1, 4, 2, 2, 2, 1, 1, 2, 2, 1, 4,
- 1, 46, 1, 1, 1, 1, 6, 1, 1, 1, 21, 5, 8, 6, 6, 3, 7, 1, 1, 3, 2, 1, 5, 3, 100,6, 5, 3, 6, 3, 3, 11, 4, 13, 2, 6, 26, 4, 5, 3, 3,
- 14, 3, 2, 3, 1, 126,5, 4, 4, 4, 12, 9, 2, 2, 2, 1, 1, 4, 5, 4, 2, 2, 14, 2, 3, 6, 3, 30, 12, 6, 3, 3, 6, 5, 3, 3, 26, 26, 20, 13, 10,
- 5, 4, 2, 219,4, 1, 13, 3, 3, 5, 1, 8, 2, 1, 4, 6, 2, 34, 4, 2, 3, 3, 15, 6, 5, 5, 3, 3, 3, 7, 3, 1, 4, 2, 11, 3, 3, 4, 13, 8, 8,
- 7, 1, 1, 3, 2, 105,13, 4, 2, 1, 18, 3, 6, 2, 2, 5, 1, 1, 14, 4, 2, 2, 2, 2, 5, 3, 2, 9, 1, 3, 12, 10, 4, 4, 6, 2, 5, 2, 2, 8, 5,
- 3, 3, 2, 2, 177,4, 9, 4, 3, 25, 20, 14, 5, 8, 4, 3, 3, 2, 24, 12, 10, 9, 6, 4, 3, 98, 5, 3, 1, 2, 7, 3, 1, 3, 1, 2, 2, 1, 14, 7, 4,
- 3, 3, 5, 3, 2, 2, 1, 4, 4, 4, 7, 1, 7, 7, 2, 2, 12, 5, 3, 2, 1, 1, 1, 1, 4, 3, 3, 1, 6, 2, 1, 2, 2, 6, 1, 5, 1, 5, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 4, 105,12, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 20, 2, 10, 8, 7, 5, 1, 2, 1, 7, 3, 5, 8, 2, 2, 2, 4, 8,
- 2, 2, 30, 1, 1, 1, 1, 12, 7, 2, 6, 1, 3, 65, 4, 2, 3, 2, 1, 1, 1, 18, 5, 4, 2, 3, 13, 6, 7, 10, 2, 2, 2, 7, 6, 3, 1, 2, 79, 3, 7,
- 7, 7, 50, 4, 45, 6, 4, 3, 5, 3, 2, 7, 4, 4, 3, 2, 6, 6, 2, 1, 1, 3, 11, 7, 3, 1, 13, 2, 2, 4, 2, 7, 1, 4, 3, 3, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 168,8, 6, 4, 2, 2, 2, 18, 15, 15, 9, 4, 2, 9, 5, 10, 1, 1, 2, 2, 2, 4, 4, 4, 3, 8, 4, 4, 4, 4, 6, 9, 5, 4, 3, 2,
- 1, 1, 1, 1, 1, 1, 5, 2, 2, 5, 4, 16, 4, 4, 12, 3, 3, 3, 1, 1, 29, 3, 3, 6, 1, 8, 3, 2, 3, 4, 10, 4, 2, 4, 2, 16, 7, 7, 2, 1, 1,
- 1, 5, 2, 2, 65, 7, 1, 2, 14, 4, 4, 3, 3, 22, 5, 8, 8, 7, 6, 6, 4, 9, 4, 2, 2, 2, 56, 12, 9, 4, 7, 3, 3, 2, 2, 2, 1, 1, 1, 22, 17,
- 5, 4, 12, 1, 4, 4, 4, 4, 1, 10, 9, 8, 8, 8, 5, 1, 16, 2, 1, 1, 1, 8, 3, 5, 5, 1, 1, 31, 6, 2, 1, 1, 17, 5, 5, 11, 4, 4, 5, 1, 2,
- 1, 8, 3, 8, 2, 1, 3, 3, 2, 15, 13, 2, 4, 6, 4, 4, 4, 4, 3, 16, 3, 3, 5, 4, 2, 2, 4, 4, 4, 39, 6, 2, 5, 3, 2, 19, 9, 9, 3, 3, 6,
- 3, 1, 1, 1, 1, 1, 1, 12, 2, 2, 2, 1, 3, 3, 2, 2, 5, 4, 3, 3, 3, 22, 9, 8, 4, 6, 1, 1, 4, 4, 2, 2, 2, 6, 3, 1, 1, 2, 2, 2, 3,
- 2, 152,5, 8, 8, 7, 7, 7, 4, 14, 3, 3, 3, 3, 7, 7, 29, 3, 12, 10, 11, 10, 5, 5, 5, 1, 15, 14, 11, 8, 5, 1, 3, 2, 5, 1, 4, 28, 7, 3, 7,
- 7, 4, 24, 3, 8, 3, 2, 4, 3, 2, 3, 10, 8, 3, 3, 1, 1, 41, 18, 13, 4, 2, 3, 11, 3, 6, 3, 3, 6, 4, 34, 8, 14, 9, 9, 9, 3, 5, 3, 6, 5,
- 2, 3, 1, 8, 3, 2, 19, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 6, 14, 6, 3, 3, 1, 22, 2, 11, 8, 3, 4, 1, 3, 2, 53, 14, 3,
- 2, 2, 16, 3, 3, 3, 5, 3, 3, 9, 1, 1, 1, 4, 4, 74, 39, 21, 9, 6, 17, 16, 9, 6, 3, 2, 2, 18, 5, 5, 3, 23, 4, 3, 15, 9, 7, 6, 25, 6, 3,
- 3, 4, 7, 5, 3, 3, 1, 13, 5, 5, 4, 2, 2, 2, 3, 33, 21, 18, 1, 1, 8, 7, 6, 5, 4, 3, 3, 3, 8, 4, 2, 2, 4, 32, 10, 5, 3, 3, 3, 4, 3,
- 3, 3, 6, 4, 6, 6, 6, 1, 63, 2, 2, 22, 4, 5, 2, 2, 1, 10, 10, 5, 3, 9, 6, 2, 5, 1, 5, 3, 3, 4, 3, 5, 5, 32, 6, 5, 2, 3, 17, 17, 7,
- 4, 2, 1, 1, 1, 1, 8, 6, 3, 56, 5, 4, 22, 20, 18, 9, 8, 8, 5, 5, 2, 6, 4, 17, 2, 9, 2, 2, 2, 4, 37, 5, 3, 2, 2, 2, 2, 2, 25, 13, 13,
- 9, 2, 12, 12, 10, 7, 4, 12, 9, 9, 9, 9, 2, 2, 15, 15, 13, 13, 7, 10, 3, 1, 2, 20, 2, 3, 1, 2, 2, 2, 9, 7, 5, 5, 5, 6, 4, 45, 6, 2, 2,
- 2, 11, 8, 3, 16, 10, 5, 4, 4, 1, 1, 1, 1, 1, 6, 6, 4, 4, 25, 5, 12, 8, 8, 2, 2, 7, 6, 2, 2, 83, 11, 10, 10, 4, 4, 6, 14, 8, 6, 4, 16,
- 13, 3, 8, 3, 24, 8, 8, 8, 8, 8, 5, 11, 6, 5, 5, 7, 7, 5, 5, 2, 2, 2, 71, 2, 6, 2, 13, 8, 8, 8, 2, 2, 2, 2, 3, 2, 5, 18, 17, 8, 8,
- 8, 4, 19, 4, 2, 2, 2, 2, 1, 4, 4, 3, 3, 3, 3, 1, 89, 7, 3, 3, 2, 46, 6, 3, 16, 16, 8, 4, 4, 3, 3, 5, 2, 11, 11, 4, 3, 3, 3, 19, 3,
- 3, 5, 5, 5, 2, 2, 7, 1, 6, 12, 6, 74, 6, 17, 10, 4, 3, 3, 35, 12, 9, 4, 3, 12, 7, 3, 4, 9, 6, 6, 6, 16, 5, 5, 5, 10, 2, 7, 6, 5, 3,
- 2, 63, 3, 2, 14, 9, 7, 4, 2, 2, 6, 2, 3, 3, 12, 7, 1, 13, 2, 4, 1, 3, 2, 12, 1, 2, 1, 18, 1, 1, 1, 9, 1, 1, 3, 2, 2, 1, 1, 1, 2,
- 2, 8, 6, 6, 2, 1, 181,17, 3, 2, 5, 3, 4, 13, 2, 5, 1, 11, 5, 6, 6, 2, 3, 8, 5, 4, 15, 1, 13, 13, 13, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1,
- 1, 1, 2, 2, 2, 2, 2, 1, 10, 3, 3, 2, 2, 3, 1, 3, 1, 6, 2, 1, 1, 1, 63, 61, 61, 5, 4, 3, 8, 4, 4, 2, 2, 2, 44, 7, 6, 6, 6, 6, 3,
- 2, 1, 2, 7, 1, 1, 1, 6, 2, 6, 5, 5, 5, 1, 1, 1, 1, 5, 1, 2, 8, 4, 4, 4, 4, 4, 2, 1, 1, 1, 26, 7, 1, 2, 1, 1, 7, 7, 1, 5, 1,
- 1, 1, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 39, 4, 3, 2, 2, 29, 29, 20, 1, 1, 1, 1, 5, 10, 6, 23, 7,
- 6, 3, 2, 2, 2, 7, 4, 2, 19, 10, 2, 1, 5, 5, 3, 2, 1, 1, 1, 20, 3, 5, 5, 3, 2, 1, 1, 1, 17, 16, 1, 5, 2, 5, 5, 2, 1, 1, 1, 1, 16,
- 2, 3, 4, 4, 6, 1, 1, 6, 1, 2, 6, 7, 3, 3, 92, 6, 3, 3, 4, 3, 1, 7, 1, 3, 1, 32, 5, 7, 8, 4, 3, 2, 2, 2, 2, 6, 3, 11, 5, 3, 2,
- 6, 3, 3, 3, 27, 3, 2, 2, 4, 3, 3, 15, 2, 3, 6, 5, 82, 5, 19, 9, 4, 10, 8, 4, 5, 3, 12, 1, 8, 8, 2, 2, 4, 4, 10, 2, 2, 1, 1, 1, 14,
- 3, 1, 4, 3, 2, 1, 1, 1, 1, 2, 31, 5, 17, 7, 5, 6, 160,10, 5, 3, 3, 9, 3, 6, 6, 8, 11, 3, 1, 1, 8, 3, 21, 7, 4, 4, 3, 5, 4, 4, 6,
- 3, 2, 4, 3, 1, 28, 13, 11, 13, 6, 5, 7, 6, 2, 3, 20, 5, 1, 11, 4, 7, 3, 2, 4, 2, 2, 1, 8, 3, 4, 2, 79, 2, 22, 3, 4, 2, 1, 1, 2, 2,
- 2, 3, 3, 43, 37, 5, 3, 2, 7, 5, 3, 46, 12, 1, 3, 2, 2, 2, 2, 1, 1, 1, 1, 3, 2, 3, 2, 9, 2, 2, 1, 4, 1, 5, 2, 8, 2, 3, 1, 1, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 95, 5, 2, 2, 2, 2, 5, 1, 1, 1, 4, 2, 1, 4, 3, 1, 10, 4, 3, 3, 2, 1, 2, 36, 11, 9, 7, 7, 2, 4, 3, 3, 3,
- 1, 10, 2, 2, 2, 2, 2, 2, 12, 8, 2, 2, 2, 2, 2, 1, 1, 1, 1, 32, 2, 2, 2, 13, 11, 1, 9, 8, 6, 2, 2, 2, 2, 1, 1, 3, 3, 3, 3, 2, 2,
- 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1, 5, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 115,2, 5, 1, 1, 5,
- 3, 2, 7, 4, 9, 2, 2, 3, 7, 6, 6, 6, 4, 3, 2, 2, 3, 62, 10, 9, 7, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 18, 18, 17, 7,
- 8, 7, 6, 2, 2, 19, 5, 3, 13, 12, 5, 4, 3, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 17, 5, 4, 1,
- 1, 1, 1, 1, 1, 5, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 2, 2, 2, 2, 23, 5, 5, 5, 3, 1, 1, 1, 14,
- 3, 7, 4, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 6, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 217,7, 6, 4, 1, 27, 22, 11, 5, 4, 1, 5, 2, 1, 1, 4, 4,
- 2, 5, 3, 3, 11, 5, 4, 10, 9, 23, 1, 14, 8, 6, 5, 3, 38, 6, 1, 24, 2, 2, 2, 15, 8, 6, 4, 2, 2, 2, 51, 4, 4, 4, 12, 7, 7, 3, 30, 2, 17,
- 15, 3, 3, 3, 3, 4, 4, 4, 2, 3, 12, 4, 3, 2, 19, 5, 4, 3, 7, 3, 3, 1, 1, 6, 1, 5, 4, 5, 3, 125,5, 1, 1, 8, 5, 4, 2, 2, 1, 1, 29,
- 24, 2, 1, 1, 3, 13, 3, 2, 1, 1, 1, 11, 8, 5, 10, 4, 19, 3, 2, 3, 5, 2, 1, 20, 13, 7, 7, 7, 5, 3, 3, 3, 1, 1, 5, 5, 3, 1, 204,3, 1,
- 3, 1, 23, 20, 6, 6, 3, 2, 2, 5, 13, 9, 3, 3, 3, 3, 2, 2, 25, 3, 1, 12, 5, 3, 66, 2, 7, 2, 5, 3, 7, 2, 4, 33, 10, 5, 12, 3, 3, 3, 3,
+ 8, 1, 1, 6, 19, 18, 2, 2, 2, 4, 2, 2, 2, 2, 11, 5, 3, 36, 2, 3, 1, 1, 1, 8, 3, 2, 1, 1, 1, 1, 1, 1, 6, 3, 2, 4, 2, 5, 3, 1, 1,
+ 1, 21, 9, 9, 3, 3, 2, 7, 3, 9, 4, 2, 87, 5, 2, 5, 2, 11, 3, 3, 5, 2, 2, 39, 7, 7, 3, 9, 1, 4, 6, 3, 7, 2, 1, 2, 86, 8, 1, 1, 13,
+ 12, 9, 5, 5, 2, 1, 2, 7, 40, 11, 5, 1, 1, 1, 4, 4, 4, 3, 11, 2, 6, 1, 1, 2, 1, 1, 1, 9, 3, 3, 4, 3, 5, 2, 2, 9, 2, 1, 1, 1, 1,
+ 1, 5, 3, 21, 1, 9, 6, 5, 2, 3, 3, 2, 2, 1, 1, 2, 1, 1, 1, 1, 6, 1, 1, 1, 5, 3, 3, 2, 1, 1, 1, 1, 82, 5, 1, 2, 2, 2, 1, 3, 1,
+ 7, 6, 7, 1, 1, 4, 9, 10, 8, 2, 5, 6, 3, 5, 3, 2, 117,2, 6, 3, 3, 2, 5, 4, 11, 3, 3, 3, 2, 1, 1, 1, 1, 1, 34, 2, 2, 23, 1, 1, 2,
+ 3, 4, 1, 1, 1, 19, 3, 6, 5, 2, 2, 3, 5, 1, 1, 1, 12, 4, 3, 4, 2, 3, 5, 4, 4, 88, 7, 5, 7, 1, 1, 1, 16, 4, 1, 5, 2, 2, 43, 6, 1,
+ 23, 2, 2, 10, 3, 2, 2, 2, 4, 2, 2, 1, 5, 2, 2, 4, 3, 5, 2, 2, 3, 1, 1, 1, 53, 3, 1, 1, 2, 2, 5, 3, 1, 6, 2, 4, 3, 7, 3, 2, 2,
+ 12, 3, 3, 3, 43, 4, 2, 2, 4, 5, 1, 4, 4, 3, 4, 6, 6, 3, 20, 3, 1, 1, 1, 3, 2, 3, 2, 2, 3, 2, 1, 1, 45, 5, 4, 4, 2, 1, 14, 5, 4,
+ 3, 1, 2, 1, 1, 7, 47, 2, 12, 4, 2, 6, 3, 4, 4, 2, 5, 2, 4, 2, 76, 14, 12, 6, 4, 2, 1, 1, 1, 10, 3, 2, 3, 4, 20, 19, 18, 2, 4, 3, 10,
+ 7, 4, 4, 7, 5, 3, 2, 99, 10, 5, 17, 14, 3, 8, 3, 2, 8, 5, 7, 1, 4, 2, 12, 4, 3, 20, 3, 4, 8, 5, 3, 3, 2, 26, 5, 5, 5, 5, 7, 4, 1,
+ 2, 9, 3, 3, 4, 3, 41, 8, 1, 1, 2, 10, 2, 2, 3, 4, 4, 3, 3, 3, 4, 4, 2, 2, 42, 4, 1, 19, 7, 2, 4, 5, 1, 1, 6, 3, 2, 2, 4, 2, 23,
+ 13, 3, 2, 2, 2, 4, 1, 1, 1, 1, 70, 2, 2, 7, 10, 1, 5, 16, 5, 2, 9, 6, 5, 12, 6, 5, 4, 3, 6, 2, 17, 5, 3, 3, 14, 4, 1, 1, 1, 1, 2,
+ 44, 7, 2, 3, 1, 1, 1, 2, 13, 2, 4, 2, 1, 1, 1, 1, 7, 4, 2, 1, 11, 3, 1, 1, 6, 3, 27, 7, 2, 3, 9, 2, 3, 118,15, 4, 9, 4, 4, 10, 1,
+ 4, 1, 11, 2, 3, 9, 2, 2, 15, 3, 3, 1, 5, 1, 1, 4, 20, 2, 1, 3, 3, 3, 2, 2, 1, 1, 3, 1, 2, 4, 1, 4, 49, 14, 7, 3, 2, 4, 6, 6, 2,
+ 2, 2, 2, 2, 4, 3, 3, 2, 2, 2, 2, 1, 1, 4, 1, 115,9, 2, 3, 3, 2, 10, 2, 4, 3, 3, 8, 2, 2, 2, 8, 3, 2, 20, 4, 4, 4, 1, 3, 4, 2,
+ 3, 1, 1, 1, 5, 4, 15, 6, 2, 2, 2, 8, 7, 7, 7, 6, 5, 5, 3, 8, 2, 4, 2, 2, 2, 2, 5, 4, 2, 1, 44, 7, 1, 1, 6, 8, 6, 3, 4, 2, 2,
+ 58, 8, 2, 3, 2, 10, 3, 7, 2, 2, 18, 9, 2, 1, 3, 4, 2, 2, 139,11, 1, 9, 5, 2, 2, 12, 2, 2, 2, 2, 1, 13, 4, 3, 1, 4, 3, 7, 4, 3, 4,
+ 2, 20, 4, 3, 2, 3, 2, 1, 1, 1, 2, 1, 8, 3, 4, 10, 3, 2, 12, 2, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 4, 4, 2, 2, 1, 130,9, 2, 2, 13,
+ 3, 1, 1, 1, 9, 5, 4, 3, 1, 2, 2, 5, 9, 2, 3, 12, 2, 3, 1, 7, 2, 3, 6, 5, 7, 3, 3, 1, 1, 10, 4, 13, 3, 33, 4, 10, 4, 7, 2, 1, 2,
+ 5, 2, 2, 76, 8, 4, 3, 11, 2, 3, 9, 3, 4, 2, 1, 1, 5, 8, 2, 2, 1, 1, 16, 4, 1, 1, 2, 2, 2, 2, 4, 2, 35, 1, 1, 1, 2, 2, 3, 3, 10,
+ 4, 2, 8, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 37, 28, 8, 3, 15, 2, 5, 3, 4, 3, 4, 4, 26, 18, 18, 4, 2, 3, 3,
+ 2, 4, 3, 1, 1, 43, 8, 3, 6, 2, 2, 1, 1, 10, 3, 10, 7, 3, 4, 5, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 181,5, 6, 2, 2, 1, 5, 5, 1, 3,
+ 2, 6, 1, 1, 6, 2, 1, 1, 7, 1, 2, 1, 10, 2, 2, 1, 2, 2, 9, 2, 4, 4, 9, 3, 1, 3, 15, 1, 1, 3, 3, 4, 16, 1, 3, 1, 2, 1, 3, 3, 28,
+ 2, 2, 2, 13, 3, 3, 3, 1, 1, 2, 4, 11, 5, 2, 2, 14, 9, 4, 12, 2, 2, 5, 3, 3, 6, 2, 3, 2, 3, 123,5, 2, 1, 2, 1, 6, 3, 3, 3, 2, 3,
+ 32, 3, 4, 5, 11, 2, 7, 2, 3, 3, 2, 9, 5, 2, 10, 3, 12, 1, 5, 2, 10, 1, 1, 4, 3, 3, 4, 1, 12, 4, 5, 1, 1, 1, 1, 1, 1, 1, 3, 132,2,
+ 3, 1, 1, 1, 16, 7, 2, 2, 3, 3, 3, 3, 10, 5, 2, 2, 70, 15, 9, 8, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 44, 6, 3, 2, 7, 3, 17, 7, 7, 5, 6,
+ 9, 5, 3, 7, 2, 3, 3, 2, 4, 2, 100,3, 17, 4, 3, 4, 6, 4, 2, 7, 9, 3, 19, 5, 3, 2, 6, 3, 1, 1, 6, 4, 5, 3, 80, 7, 4, 4, 2, 2, 7,
+ 4, 3, 1, 1, 3, 5, 3, 17, 3, 2, 1, 1, 12, 4, 3, 1, 1, 13, 4, 2, 2, 3, 2, 32, 3, 2, 6, 6, 6, 5, 3, 16, 2, 11, 2, 16, 3, 5, 1, 2, 2,
+ 8, 1, 1, 2, 1, 2, 18, 2, 2, 4, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 17, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 5, 1, 1, 2, 11, 2, 4,
+ 49, 10, 4, 10, 3, 18, 6, 5, 5, 3, 1, 39, 3, 21, 6, 6, 2, 3, 1, 6, 4, 2, 2, 2, 4, 20, 2, 3, 3, 3, 2, 6, 2, 28, 2, 10, 8, 5, 1, 5, 2,
+ 2, 9, 2, 2, 3, 1, 30, 2, 1, 1, 2, 8, 2, 1, 3, 10, 6, 7, 2, 8, 7, 25, 6, 2, 3, 2, 5, 2, 2, 2, 6, 3, 2, 55, 7, 3, 4, 2, 4, 4, 1,
+ 13, 3, 4, 3, 2, 2, 8, 3, 1, 1, 4, 2, 2, 1, 35, 15, 3, 2, 7, 3, 6, 3, 3, 3, 2, 74, 4, 14, 4, 3, 4, 4, 11, 2, 1, 2, 1, 5, 3, 15, 10,
+ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 7, 3, 5, 1, 1, 1, 1, 19, 2, 2, 5, 3, 3, 3, 3, 2, 2, 2, 99, 7, 2, 1, 7, 3, 2,
+ 4, 2, 10, 5, 1, 3, 9, 2, 3, 2, 2, 2, 4, 5, 19, 1, 1, 3, 3, 5, 2, 8, 1, 1, 1, 1, 1, 2, 2, 5, 1, 43, 3, 2, 4, 11, 2, 4, 2, 3, 4,
+ 2, 1, 2, 4, 2, 2, 5, 3, 3, 3, 2, 32, 3, 6, 6, 2, 3, 6, 1, 4, 5, 5, 6, 1, 2, 2, 2, 20, 2, 3, 7, 2, 5, 5, 2, 2, 3, 14, 7, 1, 1,
+ 1, 1, 3, 2, 1, 1, 38, 19, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 3, 1, 3, 12, 4, 4, 1, 3, 1, 3, 56, 3, 2, 1, 14, 8, 2, 4,
+ 3, 2, 1, 1, 4, 2, 2, 5, 2, 2, 6, 3, 3, 3, 2, 3, 5, 3, 1, 1, 3, 5, 1, 1, 1, 45, 14, 1, 2, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 14,
+ 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 5, 3, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 5, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 9, 3, 124,22, 9, 3, 3, 5, 4, 21, 11, 5, 3, 3, 9, 4, 2, 36, 1,
+ 1, 1, 2, 3, 15, 3, 3, 3, 4, 1, 8, 2, 2, 19, 5, 2, 7, 4, 2, 4, 3, 3, 3, 3, 3, 3, 134,11, 3, 2, 15, 7, 28, 6, 2, 7, 4, 3, 3, 1, 1,
+ 6, 3, 17, 2, 4, 3, 2, 3, 18, 1, 3, 4, 4, 2, 10, 3, 3, 5, 3, 4, 2, 10, 6, 3, 1, 1, 1, 6, 3, 80, 10, 1, 1, 2, 1, 7, 4, 11, 1, 11, 3,
+ 2, 2, 2, 7, 2, 2, 4, 18, 5, 2, 1, 1, 2, 2, 2, 11, 1, 1, 2, 2, 2, 2, 2, 80, 13, 3, 3, 10, 6, 3, 9, 3, 3, 2, 10, 3, 3, 4, 24, 7, 4,
+ 3, 9, 2, 3, 2, 2, 3, 2, 9, 7, 1, 3, 3, 2, 1, 2, 83, 20, 1, 4, 5, 3, 4, 2, 12, 9, 3, 4, 3, 15, 2, 1, 1, 1, 3, 3, 14, 7, 4, 2, 4,
+ 8, 4, 30, 7, 4, 4, 3, 4, 2, 2, 43, 4, 4, 3, 9, 3, 1, 7, 3, 5, 13, 2, 2, 1, 6, 61, 3, 34, 3, 11, 9, 6, 4, 2, 6, 2, 8, 3, 4, 4, 1,
+ 1, 3, 45, 11, 4, 3, 3, 12, 2, 2, 4, 9, 2, 5, 3, 237,38, 2, 8, 2, 14, 4, 3, 4, 2, 1, 51, 4, 19, 13, 10, 4, 8, 4, 2, 6, 2, 24, 4, 3, 9,
+ 6, 22, 13, 8, 2, 2, 3, 13, 7, 4, 30, 2, 9, 4, 2, 9, 6, 4, 4, 3, 2, 47, 5, 4, 6, 4, 2, 5, 6, 2, 5, 3, 5, 2, 4, 1, 10, 1, 30, 6, 6,
+ 5, 13, 2, 4, 140,9, 2, 2, 17, 5, 5, 2, 9, 3, 3, 3, 5, 5, 3, 2, 2, 6, 4, 4, 4, 7, 5, 2, 7, 3, 9, 6, 14, 4, 4, 21, 6, 5, 4, 3, 21,
+ 4, 1, 5, 5, 3, 3, 2, 3, 2, 15, 3, 6, 2, 2, 103,6, 2, 2, 2, 2, 20, 1, 1, 1, 4, 7, 2, 3, 2, 4, 2, 9, 3, 6, 2, 3, 5, 2, 2, 9, 3,
+ 2, 3, 5, 2, 6, 4, 7, 3, 1, 2, 12, 5, 4, 3, 11, 4, 3, 10, 5, 2, 18, 4, 6, 4, 8, 2, 4, 4, 3, 17, 3, 5, 2, 30, 4, 8, 5, 4, 3, 3, 5,
+ 3, 18, 7, 4, 3, 3, 4, 3, 2, 12, 2, 2, 1, 2, 99, 11, 2, 4, 2, 3, 15, 6, 2, 2, 2, 15, 3, 5, 8, 7, 3, 10, 5, 11, 4, 1, 1, 4, 3, 7, 4,
+ 5, 3, 3, 7, 2, 4, 4, 2, 189,22, 4, 3, 3, 2, 3, 3, 7, 4, 10, 3, 13, 2, 13, 8, 3, 23, 2, 3, 3, 5, 2, 11, 5, 5, 18, 6, 3, 32, 6, 10, 3,
+ 3, 10, 3, 5, 3, 6, 1, 3, 5, 4, 3, 2, 2, 1, 145,12, 3, 3, 3, 11, 4, 1, 2, 12, 7, 30, 8, 2, 2, 3, 3, 2, 4, 3, 5, 2, 4, 1, 1, 1, 1,
+ 15, 6, 3, 3, 3, 7, 2, 23, 3, 10, 3, 2, 20, 3, 3, 3, 3, 3, 1, 2, 160,10, 3, 6, 6, 27, 1, 2, 2, 5, 1, 11, 7, 6, 3, 14, 6, 2, 29, 2, 3,
+ 12, 3, 3, 1, 1, 2, 17, 4, 3, 5, 3, 10, 6, 2, 4, 2, 22, 4, 2, 7, 3, 7, 7, 3, 2, 2, 4, 4, 220,9, 3, 2, 3, 22, 7, 3, 11, 2, 1, 6, 2,
+ 2, 2, 5, 2, 4, 3, 23, 22, 2, 4, 5, 5, 4, 1, 2, 4, 2, 26, 9, 2, 7, 8, 4, 4, 4, 1, 3, 2, 79, 13, 4, 37, 4, 5, 23, 3, 9, 6, 23, 3, 5,
+ 5, 10, 4, 22, 2, 8, 3, 2, 1, 1, 1, 5, 2, 2, 2, 1, 1, 3, 103,28, 3, 10, 3, 5, 8, 3, 36, 4, 5, 18, 4, 4, 18, 6, 2, 2, 5, 3, 15, 1, 2,
+ 8, 2, 3, 76, 8, 3, 3, 7, 5, 3, 4, 4, 6, 4, 5, 4, 9, 2, 2, 10, 6, 5, 3, 3, 7, 3, 10, 2, 3, 2, 46, 3, 3, 7, 3, 3, 3, 7, 3, 3, 4,
+ 53, 1, 23, 19, 5, 7, 3, 2, 3, 4, 4, 3, 3, 1, 6, 4, 2, 18, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 3, 3, 2, 5, 1, 1, 3, 1, 1, 171,7, 6,
+ 25, 2, 2, 11, 8, 3, 3, 9, 3, 3, 5, 5, 9, 6, 20, 4, 10, 3, 14, 8, 16, 5, 17, 14, 11, 11, 2, 21, 15, 1, 1, 6, 5, 55, 9, 3, 4, 16, 4, 3, 2,
+ 1, 4, 2, 4, 2, 2, 13, 3, 1, 1, 3, 8, 3, 2, 3, 70, 4, 17, 6, 4, 2, 2, 2, 7, 2, 7, 3, 4, 10, 2, 2, 1, 3, 3, 2, 12, 2, 7, 7, 6, 3,
+ 53, 2, 3, 13, 1, 6, 2, 5, 5, 3, 2, 4, 4, 3, 3, 3, 2, 4, 4, 4, 2, 67, 3, 3, 3, 9, 5, 3, 3, 5, 3, 5, 8, 5, 4, 4, 1, 3, 53, 2, 9,
+ 4, 9, 6, 1, 1, 5, 3, 3, 3, 2, 2, 2, 19, 2, 2, 2, 2, 2, 3, 152,38, 16, 11, 5, 4, 3, 2, 8, 18, 11, 11, 4, 3, 3, 15, 2, 5, 4, 2, 36, 10,
+ 9, 11, 11, 11, 11, 11, 10, 10, 4, 6, 3, 5, 4, 4, 11, 4, 4, 2, 10, 4, 3, 5, 4, 4, 1, 39, 3, 2, 5, 11, 6, 3, 2, 1, 3, 2, 6, 4, 3, 146,2,
+ 17, 7, 3, 1, 1, 1, 1, 13, 3, 3, 3, 3, 8, 4, 1, 1, 1, 12, 4, 3, 2, 1, 3, 10, 8, 3, 5, 2, 2, 19, 2, 6, 2, 25, 4, 4, 2, 2, 2, 5, 2,
+ 20, 5, 2, 1, 5, 2, 5, 2, 12, 2, 15, 4, 1, 4, 2, 86, 14, 2, 3, 3, 5, 8, 2, 3, 8, 3, 16, 5, 3, 1, 5, 4, 16, 12, 1, 1, 5, 6, 153,1, 1,
+ 1, 14, 4, 3, 3, 6, 12, 3, 7, 2, 3, 15, 3, 7, 7, 6, 4, 4, 18, 6, 2, 2, 5, 19, 4, 3, 2, 6, 3, 15, 3, 5, 6, 15, 3, 5, 1, 7, 71, 2, 3,
+ 2, 46, 10, 1, 8, 8, 2, 1, 10, 3, 3, 10, 4, 4, 2, 9, 5, 5, 5, 4, 4, 4, 3, 3, 45, 5, 7, 4, 6, 3, 2, 1, 1, 1, 1, 2, 9, 2, 6, 4, 2,
+ 2, 3, 1, 31, 3, 5, 3, 3, 9, 2, 122,4, 10, 2, 5, 5, 4, 7, 4, 1, 3, 8, 6, 8, 5, 4, 7, 3, 3, 2, 1, 8, 4, 2, 5, 2, 2, 27, 10, 5, 4,
+ 3, 4, 16, 4, 5, 3, 3, 3, 2, 3, 3, 108,2, 4, 4, 4, 5, 2, 2, 10, 5, 7, 3, 22, 21, 16, 15, 2, 5, 2, 2, 3, 10, 30, 14, 12, 7, 3, 35, 1, 1,
+ 7, 1, 3, 1, 2, 2, 6, 2, 7, 3, 137,23, 3, 2, 12, 4, 3, 3, 60, 2, 2, 13, 1, 1, 12, 2, 3, 21, 5, 5, 1, 1, 3, 4, 40, 3, 2, 6, 10, 2, 3,
+ 4, 15, 4, 2, 5, 1, 4, 41, 8, 5, 4, 3, 7, 3, 3, 18, 4, 10, 28, 15, 7, 5, 4, 4, 4, 4, 4, 3, 3, 2, 1, 2, 2, 5, 5, 27, 2, 3, 2, 4, 4,
+ 3, 3, 3, 10, 3, 12, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 5, 4, 3, 6, 1, 1, 1, 2, 1, 1, 9, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
+ 2, 1, 1, 1, 1, 29, 4, 4, 9, 2, 3, 103,3, 8, 5, 55, 2, 51, 21, 8, 5, 2, 10, 4, 23, 8, 3, 2, 3, 6, 4, 6, 1, 3, 23, 11, 6, 4, 8, 4, 4,
+ 3, 3, 90, 7, 3, 2, 20, 14, 8, 2, 2, 26, 4, 4, 2, 2, 13, 9, 6, 2, 2, 2, 2, 1, 2, 26, 6, 4, 3, 2, 3, 3, 2, 2, 2, 1, 4, 2, 2, 29, 8,
+ 4, 2, 3, 2, 4, 3, 1, 98, 31, 12, 3, 5, 2, 2, 4, 2, 2, 2, 3, 3, 3, 7, 2, 4, 2, 2, 7, 2, 5, 12, 2, 1, 6, 2, 3, 7, 4, 3, 3, 5, 3,
+ 55, 35, 3, 1, 3, 2, 2, 2, 5, 3, 12, 2, 3, 3, 3, 4, 3, 10, 86, 12, 3, 3, 6, 46, 46, 4, 2, 2, 7, 3, 3, 8, 2, 2, 2, 3, 3, 5, 8, 2, 2,
+ 4, 5, 4, 6, 3, 2, 29, 3, 20, 2, 1, 2, 5, 3, 3, 2, 4, 83, 4, 3, 1, 1, 1, 14, 5, 3, 2, 2, 1, 1, 6, 3, 1, 34, 10, 2, 2, 2, 14, 5, 2,
+ 2, 4, 1, 4, 3, 4, 2, 1, 4, 80, 12, 2, 2, 15, 3, 3, 4, 2, 2, 12, 2, 4, 10, 2, 8, 3, 1, 11, 4, 3, 3, 11, 2, 2, 2, 3, 2, 11, 4, 17, 2,
+ 2, 2, 2, 8, 7, 6, 91, 15, 2, 3, 9, 3, 3, 2, 26, 4, 3, 9, 3, 2, 7, 2, 3, 4, 1, 1, 4, 4, 3, 3, 11, 3, 42, 13, 4, 4, 5, 3, 8, 5, 3,
+ 1, 47, 10, 2, 2, 3, 3, 13, 7, 1, 1, 8, 5, 5, 5, 5, 4, 3, 5, 25, 5, 3, 3, 2, 7, 3, 2, 1, 2, 1, 1, 1, 19, 4, 13, 5, 2, 2, 16, 2, 2,
+ 2, 2, 3, 1, 8, 1, 1, 3, 6, 21, 17, 4, 3, 2, 4, 76, 5, 2, 6, 5, 1, 4, 2, 6, 3, 1, 1, 19, 5, 3, 1, 3, 18, 4, 2, 2, 4, 2, 7, 4, 2,
+ 20, 20, 6, 3, 9, 9, 5, 5, 10, 4, 3, 94, 14, 3, 6, 4, 8, 4, 4, 1, 8, 3, 2, 10, 4, 2, 3, 7, 21, 12, 9, 4, 3, 2, 156,7, 4, 4, 4, 23, 14,
+ 12, 7, 4, 2, 17, 2, 4, 7, 5, 5, 5, 5, 5, 3, 3, 6, 6, 5, 3, 3, 2, 5, 1, 2, 3, 3, 3, 61, 12, 9, 3, 37, 37, 7, 4, 1, 1, 1, 2, 3, 3,
+ 2, 2, 2, 1, 2, 2, 4, 3, 3, 2, 4, 4, 4, 3, 5, 3, 3, 2, 7, 2, 2, 7, 1, 2, 2, 1, 75, 4, 42, 1, 1, 1, 5, 4, 21, 2, 3, 3, 2, 5, 1,
+ 4, 4, 3, 2, 1, 5, 2, 15, 8, 6, 4, 2, 2, 2, 35, 1, 1, 1, 19, 2, 2, 10, 7, 2, 3, 2, 7, 13, 1, 1, 1, 1, 2, 2, 1, 1, 6, 4, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 66, 3, 27, 2, 1, 4, 19, 4, 1, 5, 2, 1, 3, 1, 1, 2, 2, 1, 1, 9, 1, 3, 3, 2, 2, 5, 4, 3, 2, 1, 1, 1, 13,
+ 1, 1, 1, 3, 2, 4, 4, 3, 1, 4, 2, 36, 8, 9, 3, 2, 1, 1, 8, 6, 53, 8, 11, 4, 4, 12, 4, 2, 3, 1, 3, 4, 6, 5, 5, 122,31, 16, 10, 2, 2,
+ 9, 4, 17, 3, 2, 2, 2, 51, 4, 16, 7, 3, 2, 3, 5, 2, 2, 2, 5, 10, 5, 1, 4, 4, 1, 7, 2, 25, 6, 1, 8, 6, 2, 2, 1, 46, 4, 2, 2, 3, 3,
+ 2, 2, 5, 4, 3, 4, 8, 4, 2, 8, 5, 3, 37, 2, 5, 1, 3, 3, 2, 2, 14, 2, 3, 76, 14, 8, 5, 1, 5, 13, 6, 4, 5, 4, 23, 5, 5, 3, 3, 7, 2,
+ 3, 2, 26, 1, 1, 5, 2, 8, 3, 1, 20, 3, 2, 3, 1, 3, 6, 4, 3, 26, 4, 5, 2, 2, 2, 2, 4, 3, 4, 3, 3, 3, 53, 7, 6, 5, 3, 6, 4, 1, 1,
+ 22, 3, 8, 4, 4, 6, 4, 1, 7, 3, 1, 45, 11, 1, 3, 14, 8, 7, 7, 3, 2, 5, 3, 3, 2, 2, 4, 4, 1, 2, 2, 181,3, 2, 2, 22, 2, 15, 14, 3, 16,
+ 6, 3, 3, 1, 1, 4, 3, 119,6, 2, 12, 2, 6, 3, 2, 4, 2, 2, 3, 10, 3, 1, 3, 4, 2, 2, 11, 2, 1, 5, 14, 5, 4, 4, 4, 3, 6, 4, 2, 5, 1,
+ 1, 2, 2, 4, 2, 11, 3, 3, 2, 4, 2, 2, 2, 6, 2, 4, 3, 6, 2, 1, 1, 1, 4, 6, 2, 4, 78, 3, 1, 1, 1, 22, 6, 6, 8, 8, 8, 2, 13, 8, 6,
+ 3, 37, 8, 3, 11, 4, 5, 2, 2, 1, 1, 1, 1, 1, 4, 3, 2, 1, 2, 3, 137,13, 7, 13, 3, 4, 48, 3, 2, 5, 24, 6, 3, 10, 2, 7, 25, 3, 2, 3, 7,
+ 11, 5, 3, 5, 77, 9, 3, 2, 4, 1, 2, 14, 6, 1, 1, 5, 8, 4, 4, 4, 11, 3, 1, 13, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 50, 1, 3, 2, 14, 5, 3,
+ 2, 1, 3, 2, 1, 3, 2, 1, 1, 1, 5, 12, 4, 4, 4, 128,3, 4, 19, 8, 5, 3, 3, 2, 2, 3, 19, 17, 2, 4, 4, 19, 16, 2, 3, 2, 2, 7, 3, 10, 5,
+ 3, 14, 5, 4, 3, 5, 5, 10, 4, 3, 2, 1, 208,10, 174,3, 11, 11, 5, 6, 2, 3, 3, 2, 1, 1, 2, 8, 8, 3, 3, 3, 3, 2, 6, 6, 3, 2, 2, 19, 3,
+ 6, 3, 3, 8, 5, 4, 1, 3, 22, 2, 2, 4, 16, 3, 2, 7, 2, 6, 4, 1, 18, 9, 5, 2, 57, 3, 2, 5, 3, 2, 16, 7, 3, 2, 5, 6, 4, 1, 6, 3, 3,
+ 3, 4, 1, 2, 1, 1, 19, 9, 7, 22, 6, 6, 4, 4, 2, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 18, 1, 1, 1, 4, 4, 1, 2, 2, 1,
+ 5, 4, 4, 20, 2, 12, 5, 1, 1, 1, 1, 1, 1, 1, 1, 44, 7, 2, 2, 6, 4, 8, 3, 2, 7, 2, 4, 2, 2, 6, 5, 5, 5, 2, 1, 161,15, 3, 2, 8, 8,
+ 4, 3, 10, 3, 3, 14, 3, 5, 1, 2, 2, 1, 35, 6, 5, 4, 3, 3, 3, 5, 3, 2, 3, 57, 2, 10, 4, 3, 6, 4, 3, 29, 2, 1, 2, 3, 5, 4, 2, 7, 2,
+ 4, 2, 51, 1, 3, 10, 1, 3, 3, 1, 6, 2, 3, 2, 7, 4, 4, 4, 4, 6, 6, 4, 3, 50, 7, 4, 4, 8, 2, 2, 6, 4, 3, 7, 4, 2, 2, 3, 2, 5, 2,
+ 2, 6, 1, 3, 3, 3, 13, 7, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 6, 1, 1, 4, 1, 3, 9, 4, 19, 2, 8, 1, 2, 3, 3, 37, 17, 10, 2, 3,
+ 10, 3, 5, 3, 16, 3, 5, 2, 3, 58, 5, 2, 19, 3, 11, 10, 2, 13, 9, 5, 2, 3, 10, 2, 1, 90, 8, 9, 7, 34, 3, 5, 9, 2, 2, 1, 3, 2, 11, 2, 3,
+ 13, 3, 3, 4, 2, 3, 7, 1, 1, 1, 2, 30, 3, 1, 4, 2, 10, 5, 2, 4, 3, 3, 27, 3, 5, 4, 2, 36, 5, 4, 1, 2, 5, 3, 2, 2, 10, 2, 54, 6, 12,
+ 5, 4, 4, 3, 3, 1, 1, 3, 11, 5, 1, 3, 2, 4, 15, 3, 2, 1, 4, 2, 2, 16, 6, 4, 4, 3, 3, 3, 3, 4, 4, 3, 2, 1, 16, 3, 3, 2, 4, 1, 9,
+ 3, 3, 3, 3, 1, 2, 1, 1, 1, 4, 2, 3, 1, 1, 182,8, 1, 2, 6, 3, 2, 12, 3, 2, 1, 1, 2, 17, 5, 6, 4, 4, 2, 8, 4, 16, 3, 2, 10, 9, 1,
+ 6, 3, 52, 4, 8, 8, 11, 2, 3, 8, 5, 5, 2, 3, 11, 8, 7, 20, 3, 3, 6, 2, 1, 4, 2, 2, 15, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 2, 1, 2, 3, 2, 1, 1, 1, 1, 15, 1, 1, 3, 2, 2, 7, 1, 1, 5, 3, 2, 2,
+ 1, 1, 13, 4, 3, 3, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 2, 1, 1, 1,
+ 1, 1, 27, 1, 2, 4, 10, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 28, 2, 2, 8, 5, 4, 4, 4, 44, 2, 4, 3, 1, 1, 6, 2, 5, 2, 1, 11, 2, 2, 1,
+ 3, 5, 2, 2, 33, 12, 4, 6, 3, 8, 7, 4, 2, 3, 1, 2, 6, 2, 1, 2, 2, 20, 3, 1, 1, 2, 1, 12, 7, 4, 3, 3, 3, 3, 2, 2, 22, 1, 1, 8, 7,
+ 6, 1, 4, 3, 3, 3, 2, 2, 2, 6, 2, 2, 2, 1, 1, 63, 10, 2, 10, 23, 4, 2, 2, 1, 1, 1, 1, 15, 2, 7, 4, 8, 3, 1, 1, 1, 26, 6, 7, 4, 7,
+ 1, 3, 3, 1, 65, 4, 3, 3, 3, 22, 1, 3, 7, 3, 5, 14, 9, 2, 6, 5, 3, 5, 2, 1, 19, 10, 1, 3, 1, 8, 3, 9, 4, 2, 2, 3, 13, 7, 1, 2, 5,
+ 3, 8, 2, 4, 1, 3, 2, 3, 3, 2, 2, 28, 3, 21, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 3, 3, 3, 6, 2, 1, 2, 2, 8, 4, 4, 2, 5, 2, 1,
+ 1, 1, 215,30, 1, 5, 5, 4, 3, 3, 2, 1, 7, 3, 3, 4, 6, 3, 1, 2, 1, 4, 33, 4, 3, 4, 7, 1, 10, 4, 3, 28, 9, 4, 1, 1, 3, 6, 17, 7, 5,
+ 3, 5, 1, 2, 2, 22, 6, 10, 9, 8, 8, 3, 8, 6, 4, 17, 7, 23, 8, 5, 6, 3, 3, 2, 2, 6, 3, 2, 38, 4, 2, 2, 1, 3, 2, 2, 7, 4, 2, 12, 10,
+ 7, 1, 1, 1, 18, 8, 4, 3, 5, 33, 3, 12, 1, 4, 3, 3, 2, 4, 5, 3, 2, 4, 4, 4, 2, 9, 7, 5, 4, 2, 18, 2, 5, 2, 2, 25, 17, 10, 2, 5, 1,
+ 1, 2, 43, 22, 5, 4, 4, 8, 8, 3, 3, 5, 4, 17, 3, 1, 3, 9, 2, 6, 2, 3, 3, 72, 12, 6, 2, 22, 4, 3, 15, 6, 4, 21, 12, 10, 8, 3, 4, 1, 1,
+ 8, 3, 8, 5, 17, 4, 1, 6, 3, 2, 8, 3, 5, 3, 2, 7, 2, 1, 1, 1, 2, 131,60, 5, 2, 1, 1, 2, 2, 2, 3, 3, 2, 11, 2, 1, 1, 3, 9, 2, 1,
+ 1, 14, 9, 4, 3, 2, 2, 1, 1, 2, 5, 1, 4, 1, 1, 2, 9, 2, 2, 9, 4, 9, 5, 2, 3, 3, 15, 3, 5, 2, 6, 3, 2, 1, 8, 3, 159,14, 6, 5, 1,
+ 3, 1, 1, 4, 2, 2, 2, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 2, 8, 2, 2, 2, 6, 3, 3, 49, 9, 2, 2, 3, 2, 4, 9, 6, 3, 3, 3, 10, 7, 7, 7,
+ 2, 2, 2, 1, 7, 3, 7, 19, 4, 6, 5, 1, 1, 2, 1, 1, 8, 2, 1, 3, 66, 4, 1, 2, 2, 4, 3, 19, 8, 2, 6, 4, 9, 3, 2, 3, 1, 1, 18, 17, 2,
+ 5, 4, 104,22, 8, 3, 2, 2, 29, 2, 2, 1, 3, 4, 2, 3, 1, 4, 2, 4, 1, 1, 10, 8, 2, 2, 9, 2, 13, 2, 6, 5, 3, 6, 92, 7, 2, 1, 1, 10, 2,
+ 5, 2, 4, 1, 1, 5, 3, 2, 4, 9, 6, 4, 2, 13, 2, 5, 3, 1, 1, 6, 3, 4, 3, 4, 3, 11, 4, 2, 7, 4, 10, 8, 3, 3, 4, 12, 2, 2, 3, 2, 5,
+ 4, 3, 38, 1, 1, 1, 5, 1, 4, 2, 7, 3, 5, 5, 2, 10, 1, 1, 4, 3, 4, 4, 4, 4, 2, 1, 1, 5, 2, 58, 4, 10, 2, 1, 5, 5, 5, 18, 2, 4, 9,
+ 3, 10, 4, 2, 3, 60, 16, 2, 7, 16, 3, 13, 2, 2, 1, 5, 11, 2, 13, 2, 2, 3, 3, 3, 1, 1, 1, 1, 1, 18, 3, 6, 1, 1, 1, 6, 26, 3, 4, 4, 3,
+ 4, 3, 1, 1, 1, 7, 8, 3, 2, 3, 2, 4, 3, 2, 94, 34, 12, 6, 5, 2, 2, 2, 1, 4, 2, 3, 5, 1, 6, 1, 2, 25, 10, 2, 2, 1, 9, 2, 3, 1, 10,
+ 6, 1, 1, 1, 1, 1, 1, 1, 1, 51, 14, 11, 4, 4, 3, 4, 10, 4, 3, 2, 2, 1, 2, 40, 3, 17, 8, 4, 4, 3, 5, 14, 4, 5, 3, 89, 26, 7, 1, 3, 5,
+ 4, 4, 6, 18, 9, 3, 5, 3, 14, 3, 3, 3, 9, 4, 3, 7, 2, 3, 4, 5, 22, 1, 1, 4, 3, 6, 6, 6, 7, 6, 5, 4, 66, 17, 5, 2, 7, 3, 9, 3, 2,
+ 2, 14, 4, 1, 1, 1, 6, 3, 9, 5, 5, 2, 1, 1, 17, 10, 3, 3, 3, 2, 3, 75, 9, 5, 10, 2, 2, 2, 2, 4, 11, 9, 9, 9, 3, 3, 3, 12, 11, 7, 2,
+ 4, 4, 6, 3, 3, 16, 5, 4, 3, 8, 1, 1, 4, 2, 48, 4, 16, 2, 7, 3, 3, 2, 2, 15, 8, 5, 1, 3, 2, 1, 1, 37, 2, 2, 7, 6, 6, 6, 2, 5, 3,
+ 5, 1, 8, 3, 40, 4, 1, 2, 7, 2, 3, 6, 1, 1, 2, 6, 1, 2, 2, 51, 7, 3, 13, 6, 4, 10, 2, 4, 4, 5, 3, 33, 8, 6, 7, 7, 7, 7, 6, 1, 2,
+ 4, 2, 2, 2, 1, 4, 3, 3, 5, 2, 2, 5, 1, 29, 12, 9, 4, 3, 4, 6, 4, 2, 10, 1, 1, 1, 34, 4, 3, 1, 1, 6, 6, 2, 2, 2, 8, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 6, 1, 1, 1, 2, 79, 2, 5, 4, 5, 6, 2, 4, 22, 4, 5, 3, 8, 3, 10, 6, 2, 2, 2, 16, 2, 5, 5, 2, 5, 3, 150,5, 3, 2, 26,
+ 20, 5, 9, 4, 57, 1, 1, 1, 7, 4, 8, 19, 4, 2, 7, 13, 7, 5, 3, 24, 6, 3, 8, 4, 20, 1, 1, 1, 1, 2, 4, 2, 3, 1, 1, 1, 1, 11, 8, 3, 14,
+ 4, 7, 2, 29, 2, 2, 1, 7, 3, 4, 3, 3, 86, 27, 20, 11, 10, 7, 11, 5, 2, 2, 17, 12, 7, 6, 4, 3, 2, 10, 3, 2, 9, 5, 4, 2, 4, 3, 8, 4, 3,
+ 3, 2, 4, 191,29, 2, 4, 10, 5, 3, 1, 1, 11, 2, 2, 17, 1, 5, 3, 1, 7, 4, 3, 10, 2, 2, 48, 11, 3, 2, 18, 4, 3, 6, 17, 3, 6, 14, 2, 14, 3,
+ 4, 3, 2, 2, 2, 6, 1, 2, 112,5, 1, 29, 14, 2, 2, 2, 1, 13, 5, 7, 3, 13, 6, 8, 7, 5, 2, 40, 5, 5, 5, 5, 4, 13, 8, 6, 5, 23, 7, 1, 2,
+ 1, 3, 11, 3, 2, 9, 5, 39, 3, 2, 5, 8, 5, 4, 6, 4, 23, 23, 4, 12, 5, 3, 7, 3, 3, 51, 9, 2, 2, 2, 7, 19, 3, 3, 3, 1, 5, 4, 7, 3, 2,
+ 4, 77, 8, 1, 4, 4, 13, 4, 4, 4, 4, 28, 16, 12, 7, 2, 2, 3, 3, 2, 7, 2, 4, 2, 4, 2, 2, 1, 146,5, 19, 8, 7, 6, 7, 4, 81, 6, 3, 3, 2,
+ 3, 56, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 14, 7, 4, 6, 3, 2, 1, 2, 1, 11, 6, 4, 2, 3, 11, 5, 27, 3, 2, 14, 3, 2, 17, 7, 7, 3, 6,
+ 5, 3, 7, 4, 44, 8, 5, 3, 2, 3, 4, 3, 2, 9, 2, 2, 2, 4, 17, 6, 4, 1, 3, 31, 3, 2, 2, 4, 2, 4, 2, 3, 2, 2, 37, 11, 9, 4, 4, 10, 2,
+ 3, 2, 1, 1, 1, 1, 7, 2, 1, 1, 5, 2, 2, 13, 4, 32, 1, 13, 3, 2, 4, 3, 3, 15, 2, 7, 10, 5, 2, 14, 3, 7, 19, 3, 3, 8, 5, 5, 5, 3, 3,
+ 82, 27, 5, 1, 1, 1, 1, 6, 2, 2, 1, 1, 7, 20, 2, 6, 2, 22, 2, 4, 2, 7, 4, 3, 4, 112,3, 75, 3, 67, 6, 4, 7, 3, 2, 7, 5, 4, 4, 4, 5,
+ 16, 3, 3, 3, 11, 1, 2, 2, 2, 1, 6, 6, 5, 5, 11, 1, 32, 1, 2, 2, 2, 1, 2, 3, 1, 4, 6, 3, 19, 18, 3, 3, 5, 2, 47, 5, 4, 2, 2, 2, 21,
+ 13, 12, 11, 8, 5, 5, 62, 3, 32, 6, 6, 6, 6, 6, 5, 7, 3, 5, 16, 6, 3, 4, 3, 26, 4, 7, 5, 1, 7, 4, 7, 2, 8, 43, 3, 3, 29, 3, 3, 3, 3,
+ 6, 1, 1, 1, 3, 2, 2, 1, 14, 5, 7, 28, 2, 21, 2, 2, 2, 2, 2, 2, 2, 114,4, 4, 20, 7, 33, 3, 22, 16, 7, 4, 3, 22, 3, 3, 6, 4, 2, 7, 5,
+ 2, 4, 1, 1, 29, 3, 9, 4, 13, 2, 5, 3, 4, 4, 5, 8, 116,2, 1, 4, 2, 8, 2, 1, 5, 3, 16, 3, 3, 2, 8, 4, 1, 38, 4, 7, 19, 6, 7, 3, 2,
+ 1, 1, 1, 1, 1, 1, 13, 3, 3, 2, 8, 3, 1, 1, 1, 1, 1, 1, 23, 9, 7, 6, 5, 3, 7, 1, 1, 3, 3, 1, 6, 2, 95, 6, 2, 2, 2, 2, 5, 2, 44,
+ 3, 3, 34, 2, 18, 7, 5, 3, 5, 3, 2, 1, 2, 3, 3, 5, 5, 5, 6, 121,1, 8, 13, 2, 7, 2, 3, 14, 3, 1, 3, 7, 5, 3, 9, 3, 2, 2, 1, 1, 1,
+ 1, 1, 1, 3, 3, 10, 5, 2, 17, 3, 1, 8, 3, 2, 2, 4, 7, 4, 2, 1, 5, 3, 1, 1, 3, 92, 11, 2, 5, 4, 12, 12, 2, 2, 3, 3, 9, 9, 2, 3, 8,
+ 4, 4, 4, 3, 3, 2, 2, 11, 6, 3, 27, 9, 1, 4, 2, 6, 3, 6, 3, 20, 5, 2, 3, 3, 1, 1, 61, 3, 4, 2, 3, 2, 18, 2, 5, 1, 3, 3, 11, 4, 2,
+ 2, 2, 2, 8, 4, 3, 2, 3, 5, 4, 2, 26, 4, 5, 3, 12, 3, 2, 2, 3, 2, 5, 5, 3, 2, 2, 131,4, 5, 5, 2, 3, 2, 4, 23, 1, 2, 12, 3, 3, 2,
+ 10, 2, 1, 15, 5, 4, 2, 3, 41, 3, 11, 2, 13, 5, 4, 9, 4, 3, 2, 6, 2, 3, 1, 6, 1, 3, 3, 3, 3, 97, 31, 2, 4, 5, 4, 7, 3, 3, 2, 2, 2,
+ 31, 5, 5, 3, 3, 11, 2, 4, 2, 10, 3, 6, 4, 12, 2, 5, 12, 3, 5, 1, 93, 2, 3, 15, 11, 2, 3, 11, 4, 20, 6, 2, 2, 9, 4, 3, 3, 3, 3, 6, 2,
+ 16, 3, 4, 3, 2, 3, 5, 1, 2, 2, 4, 47, 20, 3, 3, 3, 10, 4, 3, 3, 2, 10, 4, 3, 53, 2, 3, 4, 2, 23, 22, 6, 4, 8, 4, 3, 3, 9, 3, 3, 3,
+ 3, 64, 18, 8, 3, 3, 3, 3, 3, 11, 4, 3, 5, 5, 2, 4, 22, 11, 3, 5, 4, 3, 9, 5, 5, 2, 2, 63, 7, 4, 4, 2, 1, 1, 35, 3, 1, 1, 10, 4, 3,
+ 2, 3, 3, 1, 1, 4, 1, 5, 2, 2, 5, 3, 4, 12, 1, 2, 4, 2, 3, 33, 21, 4, 8, 7, 4, 4, 9, 4, 4, 4, 1, 197,35, 3, 3, 3, 5, 3, 1, 2, 13,
+ 7, 2, 2, 5, 4, 4, 3, 2, 12, 3, 4, 2, 1, 8, 3, 2, 3, 2, 27, 4, 2, 9, 5, 3, 1, 2, 9, 2, 5, 3, 2, 29, 9, 2, 3, 2, 2, 15, 2, 2, 6,
+ 6, 1, 20, 1, 4, 2, 3, 2, 34, 15, 5, 2, 9, 2, 3, 6, 2, 3, 29, 5, 5, 11, 6, 3, 4, 3, 2, 2, 6, 3, 3, 14, 8, 1, 2, 2, 2, 2, 2, 2, 37,
+ 11, 1, 2, 3, 3, 1, 18, 2, 3, 9, 3, 3, 2, 1, 2, 2, 2, 144,14, 2, 2, 72, 7, 2, 8, 4, 2, 13, 8, 4, 20, 4, 3, 7, 3, 8, 3, 2, 43, 4, 4,
+ 2, 3, 3, 4, 20, 9, 2, 2, 1, 4, 4, 2, 1, 2, 8, 3, 2, 71, 34, 2, 2, 1, 3, 2, 3, 7, 5, 5, 9, 2, 2, 4, 3, 3, 2, 24, 5, 3, 3, 3, 3,
+ 2, 5, 3, 5, 2, 75, 25, 4, 11, 4, 3, 2, 2, 9, 3, 4, 2, 18, 4, 2, 9, 9, 3, 4, 4, 6, 2, 4, 4, 17, 5, 4, 10, 4, 3, 72, 18, 4, 33, 6, 8,
+ 4, 6, 5, 2, 1, 13, 6, 3, 3, 3, 2, 6, 1, 4, 24, 4, 3, 2, 5, 14, 5, 1, 7, 2, 3, 2, 31, 31, 9, 4, 2, 6, 3, 15, 2, 5, 4, 3, 21, 7, 6,
+ 1, 1, 3, 1, 5, 2, 18, 6, 4, 2, 1, 5, 3, 2, 5, 3, 1, 15, 4, 2, 1, 1, 3, 3, 4, 2, 2, 12, 5, 4, 2, 21, 7, 2, 3, 7, 5, 2, 3, 3, 2,
+ 15, 8, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 101,6, 5, 16, 9, 7, 2, 2, 2, 6, 7, 25, 5, 3, 7, 6, 6, 2, 3, 8, 3, 15, 1, 7, 7, 11,
+ 1, 1, 1, 3, 49, 4, 3, 4, 28, 17, 14, 14, 7, 5, 1, 1, 4, 8, 4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 169,18, 9, 3, 4, 4, 2, 7, 4,
+ 3, 18, 2, 2, 2, 3, 4, 82, 23, 2, 2, 4, 1, 1, 1, 2, 26, 11, 8, 6, 3, 2, 1, 1, 6, 6, 1, 9, 6, 6, 2, 2, 2, 2, 2, 4, 4, 10, 4, 2, 7,
+ 8, 2, 5, 5, 51, 4, 3, 2, 5, 2, 5, 4, 7, 5, 10, 4, 4, 1, 3, 3, 88, 53, 4, 4, 3, 2, 2, 4, 3, 2, 1, 7, 3, 3, 4, 1, 1, 7, 4, 8, 5,
+ 2, 4, 3, 3, 3, 3, 9, 3, 4, 5, 4, 6, 2, 4, 3, 2, 46, 8, 3, 3, 3, 2, 8, 3, 2, 2, 11, 3, 2, 3, 79, 3, 4, 4, 5, 3, 5, 22, 9, 4, 4,
+ 4, 20, 7, 3, 3, 5, 4, 3, 1, 1, 1, 4, 2, 1, 5, 2, 6, 2, 2, 38, 2, 2, 1, 2, 22, 5, 4, 3, 3, 3, 6, 3, 2, 1, 1, 1, 1, 1, 1, 8, 10,
+ 9, 6, 3, 3, 1, 1, 8, 20, 8, 5, 3, 4, 3, 2, 40, 3, 4, 3, 7, 15, 10, 8, 5, 2, 52, 7, 12, 4, 14, 14, 2, 5, 4, 32, 2, 2, 15, 9, 1, 1, 1,
+ 1, 1, 1, 3, 3, 8, 2, 2, 5, 12, 5, 2, 9, 6, 5, 58, 11, 7, 6, 4, 3, 3, 6, 5, 2, 29, 5, 5, 19, 5, 3, 2, 12, 7, 5, 2, 1, 245,19, 5, 2,
+ 2, 3, 14, 6, 2, 52, 17, 8, 3, 15, 2, 2, 11, 3, 3, 2, 22, 2, 2, 3, 3, 12, 5, 1, 1, 1, 2, 1, 1, 13, 2, 5, 3, 2, 4, 4, 2, 16, 6, 5, 3,
+ 12, 1, 1, 2, 2, 2, 3, 24, 3, 3, 2, 5, 2, 2, 2, 32, 5, 5, 9, 1, 6, 8, 4, 3, 3, 7, 3, 2, 4, 3, 2, 2, 2, 2, 17, 2, 8, 61, 10, 2, 5,
+ 4, 3, 3, 14, 6, 5, 3, 3, 8, 6, 6, 2, 2, 4, 10, 3, 1, 11, 10, 4, 6, 4, 12, 4, 3, 11, 1, 1, 8, 2, 2, 42, 4, 9, 6, 2, 2, 3, 6, 3, 2,
+ 2, 1, 1, 2, 9, 3, 1, 1, 2, 2, 17, 4, 6, 28, 5, 15, 14, 6, 4, 1, 3, 10, 1, 1, 37, 3, 28, 6, 4, 3, 4, 4, 18, 8, 3, 2, 14, 4, 2, 4, 5,
+ 5, 142,3, 7, 3, 3, 4, 2, 2, 11, 2, 4, 2, 2, 1, 1, 4, 3, 10, 4, 1, 1, 11, 4, 3, 3, 3, 2, 15, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1,
+ 1, 1, 1, 1, 1, 2, 2, 1, 1, 52, 10, 17, 5, 4, 4, 7, 3, 2, 2, 2, 15, 4, 6, 2, 15, 5, 3, 2, 3, 1, 1, 239,73, 7, 7, 7, 7, 3, 1, 1, 29,
+ 2, 11, 4, 4, 4, 4, 4, 3, 3, 3, 8, 2, 2, 6, 6, 6, 6, 4, 4, 1, 1, 8, 8, 5, 5, 6, 5, 5, 3, 4, 1, 1, 2, 3, 2, 1, 1, 26, 3, 1, 12,
+ 11, 5, 3, 1, 1, 43, 4, 1, 1, 1, 1, 1, 2, 4, 3, 20, 16, 6, 3, 3, 3, 2, 1, 1, 2, 1, 7, 7, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 9, 2,
+ 2, 2, 7, 1, 36, 6, 6, 1, 1, 1, 1, 26, 2, 11, 10, 9, 7, 5, 5, 5, 3, 1, 6, 2, 18, 7, 4, 3, 4, 11, 3, 3, 17, 4, 2, 5, 4, 3, 2, 1, 1,
+ 1, 1, 1, 6, 2, 2, 14, 13, 12, 8, 6, 24, 1, 2, 15, 14, 5, 5, 3, 2, 3, 18, 2, 2, 1, 10, 4, 2, 2, 3, 1, 1, 10, 4, 2, 3, 1, 7, 2, 3, 2,
+ 1, 23, 7, 5, 4, 1, 3, 3, 3, 1, 2, 10, 4, 2, 4, 2, 2, 1, 4, 2, 123,58, 33, 31, 2, 18, 2, 5, 3, 2, 2, 37, 5, 29, 2, 5, 6, 6, 2, 4, 15,
+ 4, 3, 1, 1, 1, 1, 1, 1, 3, 3, 6, 3, 40, 1, 21, 6, 12, 2, 3, 6, 5, 2, 2, 1, 80, 80, 4, 1, 3, 1, 9, 5, 4, 2, 2, 2, 10, 1, 6, 2, 2,
+ 2, 2, 2, 2, 2, 1, 3, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 2, 5, 1, 1, 1, 5, 1, 1, 1, 2, 2, 2, 2, 7, 3, 1, 3, 3, 2, 2, 2, 3,
+ 14, 1, 1, 1, 5, 5, 5, 2, 1, 1, 3, 2, 2, 3, 3, 105,2, 2, 2, 33, 3, 5, 4, 23, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3, 3, 3, 3,
+ 2, 3, 3, 3, 8, 6, 3, 7, 1, 5, 4, 2, 2, 10, 2, 2, 2, 2, 6, 3, 1, 9, 3, 2, 4, 52, 4, 3, 1, 1, 3, 2, 2, 1, 1, 12, 3, 1, 3, 1, 3,
+ 15, 2, 4, 1, 3, 10, 3, 2, 2, 4, 2, 50, 2, 2, 3, 10, 10, 3, 3, 7, 5, 3, 3, 6, 4, 11, 11, 8, 8, 5, 3, 35, 23, 5, 4, 2, 2, 12, 2, 4, 3,
+ 3, 2, 4, 4, 3, 106,10, 51, 10, 8, 3, 5, 4, 7, 5, 4, 4, 7, 3, 5, 12, 5, 4, 3, 2, 10, 7, 26, 2, 2, 13, 5, 2, 3, 14, 2, 2, 5, 3, 15, 6,
+ 3, 3, 29, 2, 4, 2, 6, 4, 6, 1, 2, 2, 7, 2, 5, 41, 4, 3, 25, 17, 5, 11, 8, 2, 3, 25, 6, 4, 3, 4, 3, 1, 139,13, 4, 6, 2, 38, 3, 11, 3,
+ 5, 5, 16, 1, 1, 2, 2, 3, 2, 48, 4, 4, 6, 7, 8, 8, 3, 5, 2, 8, 3, 9, 4, 2, 5, 5, 18, 3, 7, 2, 1, 1, 1, 1, 7, 3, 3, 6, 2, 4, 2,
+ 2, 5, 4, 3, 3, 29, 4, 5, 10, 1, 1, 6, 5, 28, 3, 1, 1, 1, 1, 10, 3, 2, 16, 5, 8, 4, 2, 27, 3, 7, 3, 2, 2, 3, 1, 1, 1, 55, 1, 3, 4,
+ 2, 2, 2, 3, 2, 5, 3, 3, 19, 9, 8, 3, 5, 3, 1, 2, 17, 4, 2, 4, 3, 2, 4, 2, 2, 79, 6, 5, 5, 5, 3, 3, 11, 2, 5, 23, 8, 5, 8, 3, 3,
+ 17, 2, 10, 8, 8, 3, 2, 2, 13, 3, 3, 36, 3, 14, 1, 2, 3, 3, 3, 2, 1, 2, 14, 6, 23, 8, 4, 5, 2, 11, 2, 4, 3, 3, 3, 20, 5, 16, 3, 9, 5,
+ 2, 1, 4, 3, 2, 9, 2, 1, 2, 2, 2, 2, 110,42, 9, 4, 3, 3, 5, 2, 3, 6, 3, 3, 7, 5, 2, 3, 2, 9, 4, 11, 3, 3, 3, 3, 2, 3, 8, 4, 3,
+ 3, 3, 8, 5, 2, 4, 2, 1, 1, 3, 3, 15, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 4, 4, 4, 4, 4, 3, 31, 9, 3, 3, 3, 4,
+ 4, 3, 2, 3, 1, 2, 2, 2, 2, 9, 2, 2, 7, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 7, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 19, 4, 11, 2, 2,
+ 1, 8, 5, 4, 2, 2, 2, 2, 1, 30, 12, 3, 3, 2, 2, 3, 3, 3, 2, 2, 20, 6, 2, 2, 2, 2, 2, 2, 3, 6, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 11,
+ 3, 4, 3, 7, 1, 4, 3, 3, 6, 5, 2, 3, 5, 3, 3, 3, 4, 2, 2, 1, 1, 1, 1, 1, 13, 3, 8, 5, 5, 5, 5, 5, 5, 5, 48, 5, 1, 17, 3, 5, 5,
+ 6, 4, 3, 2, 2, 2, 3, 3, 2, 4, 3, 2, 7, 44, 6, 5, 4, 6, 6, 5, 2, 2, 14, 3, 1, 6, 3, 7, 11, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 117,4,
+ 2, 16, 16, 8, 5, 2, 11, 5, 3, 2, 6, 7, 3, 3, 3, 3, 3, 3, 3, 11, 3, 2, 5, 1, 1, 17, 4, 4, 2, 1, 9, 2, 2, 26, 3, 12, 5, 4, 4, 2, 2,
+ 4, 2, 2, 3, 3, 10, 2, 3, 2, 2, 19, 6, 29, 23, 3, 2, 2, 2, 5, 3, 2, 2, 2, 2, 3, 2, 1, 1, 1, 27, 6, 3, 3, 2, 1, 5, 2, 6, 3, 9, 1,
+ 1, 1, 4, 2, 1, 1, 1, 6, 1, 2, 1, 20, 8, 5, 4, 2, 2, 1, 1, 1, 1, 2, 24, 1, 1, 1, 1, 1, 2, 10, 7, 6, 4, 4, 1, 2, 1, 8, 2, 2, 2,
+ 3, 2, 1, 18, 2, 1, 1, 4, 5, 1, 35, 4, 3, 3, 18, 17, 11, 2, 2, 40, 4, 2, 5, 2, 2, 9, 3, 2, 16, 2, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 3,
+ 1, 1, 119,7, 1, 3, 2, 1, 1, 58, 13, 32, 9, 9, 19, 13, 8, 8, 6, 2, 20, 3, 1, 3, 3, 17, 15, 10, 2, 2, 2, 34, 6, 2, 3, 5, 3, 4, 4, 5, 13,
+ 1, 8, 3, 30, 7, 2, 2, 4, 2, 3, 2, 3, 2, 2, 4, 63, 27, 3, 2, 10, 7, 4, 3, 4, 5, 7, 3, 2, 2, 8, 4, 30, 3, 14, 7, 4, 4, 3, 2, 2, 11,
+ 4, 2, 5, 2, 1, 10, 2, 170,12, 4, 2, 20, 3, 6, 2, 3, 4, 23, 3, 10, 6, 3, 23, 17, 6, 4, 5, 3, 2, 48, 15, 2, 8, 2, 3, 7, 6, 4, 11, 4, 13,
+ 5, 2, 2, 4, 10, 3, 2, 2, 4, 1, 1, 2, 2, 45, 1, 1, 4, 2, 9, 9, 8, 3, 2, 9, 5, 6, 3, 4, 1, 4, 1, 1, 1, 45, 2, 2, 4, 4, 3, 2, 15,
+ 9, 8, 5, 9, 7, 3, 3, 4, 22, 2, 2, 5, 2, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 39, 10, 5, 10, 2, 4, 7, 3, 49, 2, 1, 3, 2, 2, 7, 33, 7, 2,
+ 4, 3, 6, 1, 4, 4, 38, 8, 5, 2, 16, 9, 2, 2, 2, 2, 35, 8, 6, 5, 2, 8, 7, 6, 3, 53, 40, 36, 6, 3, 4, 2, 2, 2, 12, 4, 1, 4, 75, 11, 2,
+ 2, 2, 2, 3, 2, 2, 2, 8, 3, 5, 5, 2, 8, 5, 1, 4, 2, 4, 3, 5, 2, 2, 1, 1, 1, 1, 1, 15, 4, 2, 2, 9, 9, 6, 2, 1, 1, 1, 1, 1, 1,
+ 1, 11, 2, 5, 5, 1, 10, 7, 2, 34, 3, 6, 2, 3, 5, 12, 8, 7, 3, 200,45, 1, 10, 5, 2, 8, 3, 15, 5, 4, 2, 3, 1, 2, 72, 3, 2, 1, 1, 5, 3,
+ 2, 4, 1, 3, 2, 2, 8, 5, 4, 2, 3, 3, 3, 3, 1, 1, 15, 2, 7, 3, 11, 1, 1, 1, 2, 3, 2, 2, 2, 4, 1, 1, 6, 6, 5, 4, 3, 4, 14, 2, 6,
+ 3, 2, 4, 2, 1, 16, 1, 1, 7, 4, 6, 2, 1, 4, 1, 7, 4, 2, 3, 3, 2, 3, 4, 7, 6, 6, 6, 6, 5, 143,8, 6, 7, 2, 1, 3, 6, 4, 8, 2, 2,
+ 43, 4, 3, 7, 3, 5, 5, 3, 2, 2, 9, 4, 2, 3, 2, 1, 3, 30, 2, 2, 12, 3, 3, 18, 1, 1, 13, 9, 1, 1, 18, 5, 5, 5, 4, 2, 2, 69, 6, 6, 13,
+ 4, 5, 3, 11, 4, 2, 4, 3, 5, 8, 4, 5, 4, 4, 20, 5, 8, 3, 3, 3, 2, 1, 2, 60, 2, 2, 2, 3, 13, 3, 9, 3, 7, 7, 3, 42, 22, 18, 3, 1, 1,
+ 4, 12, 9, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 38, 4, 2, 1, 4, 6, 10, 2, 2, 2, 5, 13, 5, 3, 3, 8, 3, 2, 12, 7, 7, 6, 3, 27, 4, 3, 9,
+ 5, 26, 24, 6, 7, 3, 7, 2, 2, 1, 1, 42, 4, 3, 7, 2, 24, 2, 16, 5, 4, 6, 3, 11, 4, 44, 9, 5, 1, 1, 10, 3, 3, 12, 3, 6, 4, 131,4, 5, 1,
+ 20, 5, 3, 2, 4, 3, 9, 1, 3, 14, 2, 4, 10, 3, 5, 1, 10, 6, 4, 4, 7, 7, 4, 3, 3, 23, 3, 2, 2, 6, 4, 2, 19, 4, 2, 2, 5, 2, 2, 1, 1,
+ 2, 158,10, 1, 1, 2, 3, 3, 3, 3, 9, 1, 33, 1, 1, 2, 2, 2, 27, 26, 7, 6, 5, 5, 2, 2, 4, 5, 3, 22, 5, 3, 3, 10, 8, 8, 48, 2, 2, 2, 34,
+ 5, 9, 3, 6, 6, 5, 3, 5, 3, 3, 3, 3, 21, 7, 3, 3, 4, 2, 2, 4, 2, 118,23, 2, 8, 3, 3, 6, 30, 22, 11, 10, 9, 3, 1, 17, 3, 8, 26, 12, 6,
+ 2, 4, 2, 2, 14, 10, 3, 2, 29, 3, 9, 15, 9, 1, 2, 24, 7, 4, 4, 2, 1, 8, 3, 19, 7, 4, 3, 29, 8, 2, 2, 2, 5, 3, 1, 1, 1, 7, 4, 5, 3,
+ 17, 1, 1, 3, 1, 1, 1, 1, 60, 8, 9, 2, 3, 3, 3, 1, 2, 1, 4, 1, 1, 2, 3, 1, 3, 9, 2, 4, 2, 2, 6, 2, 23, 1, 2, 1, 1, 2, 2, 2, 3,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 1, 1, 1, 16, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 1, 1, 9, 2,
+ 1, 2, 1, 2, 2, 42, 5, 5, 1, 1, 13, 5, 3, 2, 3, 17, 9, 3, 2, 4, 3, 3, 41, 3, 2, 2, 2, 11, 2, 1, 1, 1, 1, 5, 5, 2, 3, 7, 3, 3, 1,
+ 24, 5, 5, 4, 4, 2, 2, 1, 5, 3, 3, 1, 1, 3, 3, 2, 2, 23, 20, 2, 8, 6, 3, 1, 33, 2, 15, 5, 3, 3, 3, 4, 4, 3, 2, 2, 27, 10, 2, 5, 5,
+ 4, 3, 2, 2, 2, 10, 3, 2, 2, 2, 2, 2, 2, 9, 3, 1, 1, 1, 1, 10, 4, 3, 2, 3, 3, 13, 2, 4, 1, 1, 205,8, 3, 3, 4, 2, 10, 5, 4, 2, 2,
+ 6, 3, 2, 8, 4, 3, 5, 7, 3, 53, 12, 4, 2, 16, 9, 2, 2, 21, 3, 11, 3, 3, 2, 2, 8, 2, 3, 77, 75, 1, 1, 8, 1, 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 1, 1, 4, 2, 1, 2, 2, 6, 3, 2, 2, 2, 4, 3, 2, 2, 2, 2, 1, 30, 4, 21, 2, 1, 9, 8, 4, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 5,
+ 2, 5, 1, 1, 1, 2, 1, 1, 1, 8, 3, 3, 2, 32, 9, 2, 11, 4, 3, 3, 144,5, 21, 14, 28, 4, 6, 3, 1, 6, 3, 2, 2, 2, 5, 7, 19, 8, 7, 7, 3,
+ 5, 11, 4, 3, 17, 5, 2, 2, 5, 5, 5, 8, 3, 1, 1, 1, 4, 3, 5, 4, 3, 155,33, 3, 2, 7, 3, 1, 2, 4, 3, 4, 1, 2, 10, 5, 3, 4, 3, 3, 3,
+ 17, 10, 9, 4, 4, 8, 3, 1, 1, 1, 1, 3, 9, 2, 4, 4, 3, 4, 11, 11, 6, 24, 5, 3, 10, 4, 3, 2, 1, 1, 1, 1, 6, 2, 2, 8, 3, 2, 5, 2, 3,
+ 220,8, 2, 33, 10, 5, 4, 7, 2, 1, 1, 4, 6, 2, 4, 4, 2, 1, 1, 1, 1, 14, 1, 4, 13, 2, 2, 3, 45, 31, 1, 4, 8, 7, 3, 1, 1, 1, 1, 5, 1,
+ 1, 3, 3, 22, 10, 6, 2, 1, 3, 3, 3, 2, 3, 2, 1, 21, 10, 6, 1, 1, 5, 1, 45, 29, 3, 18, 17, 4, 3, 5, 3, 3, 2, 2, 77, 19, 2, 3, 3, 3, 1,
+ 1, 1, 2, 4, 13, 4, 2, 3, 3, 2, 2, 10, 5, 2, 4, 3, 2, 2, 1, 1, 1, 11, 1, 2, 6, 5, 4, 1, 1, 1, 1, 1, 1, 1, 6, 2, 18, 6, 4, 4, 4,
+ 4, 3, 5, 4, 1, 1, 7, 5, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 226,2, 3, 7, 2, 2, 1, 8, 4, 2, 15, 5, 3, 3, 8, 1, 1, 1, 1, 1,
+ 1, 6, 11, 3, 2, 4, 3, 2, 3, 9, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 10, 1, 5, 1, 1, 3, 2, 2, 17, 4, 3, 2, 7, 6, 1, 1, 1, 1, 3, 13,
+ 4, 2, 4, 1, 1, 1, 1, 2, 1, 1, 10, 3, 2, 2, 2, 2, 7, 4, 4, 4, 2, 2, 30, 2, 4, 6, 3, 3, 1, 1, 6, 3, 40, 2, 3, 6, 1, 5, 1, 3, 3,
+ 3, 21, 9, 9, 5, 10, 5, 2, 15, 9, 4, 2, 4, 2, 2, 2, 2, 2, 2, 1, 1, 8, 3, 1, 1, 1, 7, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 10, 33, 6, 3, 2, 1, 3, 6, 8, 1, 2, 38, 3, 2, 3, 12, 2, 1, 1, 2, 1, 6, 5, 5, 4, 3, 3, 2, 3, 1, 1, 49, 4, 15, 2, 4, 3, 2,
+ 13, 4, 1, 4, 2, 2, 11, 3, 3, 11, 2, 6, 2, 65, 23, 1, 1, 1, 1, 5, 5, 13, 5, 2, 2, 2, 4, 2, 5, 2, 3, 2, 1, 6, 2, 28, 8, 3, 4, 2, 3,
+ 3, 2, 39, 3, 8, 4, 3, 1, 7, 2, 4, 4, 16, 7, 3, 2, 3, 41, 22, 1, 5, 2, 2, 3, 4, 3, 5, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 25, 3, 3,
+ 2, 4, 3, 6, 2, 1, 57, 10, 2, 3, 7, 2, 1, 1, 14, 2, 5, 8, 2, 2, 1, 99, 5, 9, 10, 3, 3, 3, 5, 3, 6, 4, 11, 4, 5, 20, 3, 1, 2, 2, 2,
+ 2, 2, 5, 2, 1, 1, 1, 1, 4, 2, 4, 2, 15, 2, 1, 1, 1, 1, 2, 1, 3, 2, 2, 2, 2, 2, 9, 4, 46, 4, 4, 3, 3, 2, 2, 4, 3, 3, 2, 11, 9,
+ 6, 10, 3, 1, 1, 3, 5, 1, 1, 1, 3, 2, 116,16, 2, 2, 1, 1, 1, 4, 4, 4, 14, 8, 8, 6, 5, 1, 1, 12, 3, 3, 7, 3, 3, 3, 7, 3, 2, 3, 1,
+ 5, 2, 24, 12, 1, 1, 11, 9, 1, 11, 8, 7, 4, 3, 104,6, 4, 15, 12, 11, 2, 3, 10, 3, 2, 8, 3, 8, 3, 2, 5, 2, 14, 4, 3, 3, 25, 4, 2, 5, 10,
+ 6, 4, 3, 3, 3, 2, 155,43, 3, 2, 18, 4, 8, 2, 2, 12, 8, 5, 3, 3, 1, 7, 3, 20, 16, 12, 3, 33, 23, 23, 18, 18, 11, 6, 2, 1, 1, 1, 1, 6, 3,
+ 4, 1, 1, 6, 4, 6, 27, 26, 17, 15, 9, 7, 5, 1, 2, 48, 1, 1, 1, 11, 1, 8, 7, 5, 9, 2, 2, 8, 5, 4, 1, 7, 7, 4, 2, 75, 28, 4, 15, 4, 3,
+ 7, 4, 11, 3, 22, 12, 12, 10, 2, 7, 3, 3, 3, 2, 2, 4, 12, 5, 3, 2, 17, 8, 3, 1, 1, 1, 30, 15, 14, 1, 6, 4, 3, 2, 7, 1, 3, 2, 17, 3, 1,
+ 1, 1, 1, 1, 1, 3, 1, 6, 1, 3, 21, 2, 9, 1, 1, 6, 5, 5, 4, 1, 1, 1, 1, 1, 1, 2, 10, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 52, 3, 13, 5, 3, 2, 2, 2, 2, 3, 3, 3, 3, 12, 2, 1, 1, 4, 6, 2, 23, 2, 6, 2, 1, 2, 2, 2, 3, 3, 5, 1, 1, 1, 1, 1,
+ 1, 4, 2, 43, 2, 8, 8, 8, 6, 6, 3, 12, 3, 2, 2, 11, 11, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 26, 3, 1, 1, 1, 7, 5, 4, 4, 4, 4, 3, 1, 2,
+ 4, 1, 57, 27, 1, 1, 2, 2, 1, 1, 5, 8, 8, 3, 9, 2, 4, 3, 5, 7, 1, 3, 2, 2, 62, 11, 9, 6, 4, 1, 1, 1, 1, 2, 13, 6, 5, 7, 5, 4, 10,
+ 9, 21, 3, 4, 3, 7, 6, 12, 2, 1, 1, 2, 3, 74, 13, 5, 3, 3, 4, 15, 3, 1, 12, 11, 11, 6, 5, 5, 2, 10, 4, 12, 3, 2, 4, 2, 6, 2, 2, 2, 4,
+ 2, 7, 1, 1, 3, 2, 40, 3, 3, 18, 5, 4, 3, 3, 8, 5, 39, 8, 4, 2, 15, 3, 2, 5, 4, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 2, 13, 3, 3, 3, 42, 6, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 2, 2, 4, 3, 12, 2, 6, 6, 4, 2,
+ 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 3, 2, 2, 29, 4, 1, 3, 2, 8, 3, 3, 2, 5, 2, 2, 8, 2, 1, 6, 6, 43, 3, 2, 5, 5, 2, 3, 2, 8, 4, 56,
+ 4, 2, 2, 4, 14, 6, 2, 1, 23, 7, 4, 2, 5, 4, 3, 68, 4, 2, 4, 1, 11, 8, 8, 3, 3, 3, 1, 2, 1, 2, 1, 3, 16, 5, 4, 4, 4, 9, 7, 7, 7,
+ 2, 2, 5, 143,12, 4, 3, 1, 1, 1, 1, 1, 2, 9, 6, 1, 1, 2, 1, 1, 4, 3, 2, 5, 4, 3, 11, 6, 2, 3, 2, 4, 53, 3, 2, 50, 1, 1, 3, 3, 3,
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 5, 5, 5, 4, 2, 8, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 9, 4, 4, 4, 4, 3, 3, 3, 10,
+ 4, 4, 4, 4, 3, 3, 3, 3, 3, 9, 2, 2, 3, 2, 19, 17, 10, 9, 7, 2, 5, 3, 2, 3, 2, 51, 8, 3, 25, 17, 2, 2, 1, 1, 1, 5, 1, 1, 13, 6, 3,
+ 208,5, 26, 3, 7, 6, 2, 4, 3, 5, 5, 10, 3, 2, 7, 7, 3, 1, 1, 9, 4, 2, 2, 2, 2, 4, 2, 9, 5, 4, 4, 2, 2, 3, 2, 2, 14, 4, 2, 4, 2,
+ 16, 6, 2, 5, 4, 3, 6, 4, 3, 2, 13, 7, 7, 7, 5, 4, 1, 1, 1, 1, 1, 1, 2, 2, 49, 1, 3, 3, 3, 3, 1, 3, 2, 2, 2, 3, 3, 1, 1, 5, 4,
+ 4, 4, 6, 3, 2, 6, 2, 3, 11, 8, 4, 3, 3, 2, 1, 7, 6, 6, 5, 2, 2, 2, 10, 5, 3, 11, 2, 3, 2, 4, 2, 1, 1, 23, 1, 1, 1, 1, 1, 3, 2,
+ 1, 1, 1, 3, 2, 2, 1, 2, 1, 1, 7, 37, 1, 10, 1, 1, 1, 2, 1, 2, 1, 3, 2, 5, 11, 4, 5, 24, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 16, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 18, 6, 4, 2, 1, 7, 4, 199,10, 6, 4, 4, 3, 25, 2, 2, 2, 1, 2, 2, 4, 2, 3, 2, 26, 5, 3, 16, 15, 5, 4, 61, 5, 4, 3, 2, 1, 1, 1, 1, 14,
+ 7, 1, 2, 4, 15, 3, 6, 9, 8, 4, 1, 2, 66, 1, 49, 17, 4, 4, 19, 5, 5, 4, 3, 4, 4, 2, 3, 5, 4, 3, 1, 2, 9, 4, 2, 97, 6, 2, 22, 3, 3,
+ 3, 13, 11, 2, 2, 4, 1, 1, 1, 1, 4, 3, 3, 3, 2, 3, 6, 16, 3, 3, 4, 7, 4, 6, 2, 6, 1, 9, 1, 1, 8, 1, 4, 3, 3, 3, 5, 3, 3, 1, 1,
+ 1, 2, 2, 5, 1, 1, 2, 81, 7, 5, 4, 11, 4, 6, 53, 2, 1, 47, 5, 2, 2, 2, 3, 1, 3, 3, 4, 2, 4, 3, 2, 6, 6, 5, 5, 2, 2, 7, 1, 5, 4,
+ 1, 13, 4, 2, 5, 5, 2, 2, 3, 1, 82, 6, 10, 1, 16, 12, 7, 15, 9, 2, 2, 28, 19, 15, 4, 4, 2, 4, 3, 2, 25, 3, 1, 3, 6, 26, 2, 1, 4, 2, 2,
+ 2, 3, 4, 3, 50, 1, 1, 1, 1, 13, 5, 4, 8, 7, 4, 3, 5, 5, 4, 4, 4, 3, 5, 3, 19, 2, 1, 13, 2, 12, 2, 3, 3, 1, 4, 4, 4, 3, 53, 3, 1,
+ 1, 18, 14, 2, 3, 2, 3, 1, 11, 5, 3, 1, 1, 2, 4, 2, 1, 1, 1, 3, 51, 3, 3, 5, 1, 3, 17, 4, 4, 9, 1, 1, 1, 1, 3, 1, 1, 5, 2, 2, 2,
+ 7, 1, 6, 2, 2, 16, 4, 10, 8, 1, 12, 6, 4, 2, 2, 1, 1, 1, 20, 1, 1, 2, 1, 3, 1, 3, 1, 2, 1, 2, 2, 2, 1, 5, 1, 4, 10, 1, 1, 2, 1,
+ 4, 3, 3, 2, 1, 11, 10, 2, 3, 1, 37, 3, 5, 4, 3, 13, 10, 3, 7, 5, 4, 3, 5, 24, 3, 4, 5, 2, 3, 4, 4, 21, 3, 4, 2, 1, 4, 19, 7, 2, 2,
+ 3, 3, 10, 2, 2, 2, 20, 4, 4, 4, 5, 4, 6, 1, 1, 3, 2, 17, 3, 2, 6, 4, 49, 44, 43, 4, 4, 2, 11, 3, 3, 9, 2, 3, 3, 2, 2, 1, 1, 1, 5,
+ 47, 7, 6, 6, 9, 5, 5, 5, 10, 5, 2, 5, 2, 1, 40, 11, 4, 3, 5, 3, 2, 2, 16, 14, 11, 3, 77, 6, 1, 1, 1, 3, 9, 1, 1, 1, 7, 4, 3, 1, 1,
+ 1, 1, 1, 1, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 3, 1, 1, 3, 1, 2, 3, 1, 1, 1, 2, 2, 2, 2, 1, 6, 3, 2,
+ 1, 1, 3, 2, 7, 1, 1, 2, 3, 3, 1, 1, 1, 1, 4, 3, 1, 2, 7, 3, 1, 2, 2, 2, 1, 2, 2, 1, 3, 1, 2, 40, 4, 4, 11, 4, 1, 1, 1, 7, 6,
+ 5, 4, 3, 7, 2, 7, 5, 4, 3, 1, 8, 2, 1, 1, 1, 8, 4, 3, 7, 3, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 9, 4, 3, 1, 3, 6,
+ 6, 4, 3, 4, 2, 4, 1, 1, 12, 4, 1, 1, 1, 2, 5, 2, 9, 5, 7, 3, 33, 27, 13, 7, 11, 5, 2, 16, 3, 7, 1, 15, 1, 1, 6, 3, 3, 3, 73, 4, 66,
+ 1, 6, 1, 1, 3, 2, 2, 3, 2, 7, 2, 2, 11, 4, 4, 4, 2, 2, 6, 4, 2, 3, 3, 5, 5, 4, 3, 1, 11, 3, 5, 5, 4, 2, 10, 2, 5, 3, 1, 53, 4,
+ 2, 2, 12, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 2, 1, 1, 3, 12, 2, 2, 8, 3, 116,4, 2, 19, 4, 7, 4, 1, 1, 1, 1, 10, 3, 3, 2, 17, 2, 3, 6,
+ 6, 5, 1, 1, 2, 2, 22, 7, 5, 2, 2, 2, 10, 2, 1, 4, 4, 4, 3, 2, 13, 5, 4, 4, 3, 3, 2, 2, 1, 1, 2, 2, 28, 2, 1, 1, 3, 1, 4, 8, 5,
+ 5, 5, 81, 15, 3, 2, 3, 28, 19, 5, 3, 7, 5, 5, 4, 3, 1, 1, 1, 2, 1, 19, 5, 4, 4, 14, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 2, 38, 1, 12, 3, 5, 6, 2, 6, 2, 2, 1, 2, 1, 1, 1, 2, 8, 7, 2, 3, 4, 1, 2, 1, 4, 1, 1, 11, 2, 1, 1, 1, 1, 3,
+ 2, 17, 1, 4, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 2, 8, 1, 1, 1, 1, 5, 7, 4, 35, 3, 3, 2, 8, 2, 3, 3, 21, 19,
+ 4, 12, 2, 3, 3, 1, 1, 1, 14, 5, 2, 6, 2, 2, 2, 10, 5, 4, 3, 8, 5, 5, 5, 3, 3, 2, 6, 4, 14, 2, 9, 1, 6, 46, 4, 2, 21, 15, 15, 2, 1,
+ 11, 10, 4, 3, 5, 3, 3, 3, 2, 42, 5, 2, 2, 4, 2, 7, 2, 7, 4, 2, 2, 4, 3, 3, 2, 37, 3, 1, 1, 3, 2, 2, 5, 9, 7, 1, 5, 14, 2, 1, 5,
+ 2, 2, 41, 3, 5, 2, 7, 7, 5, 5, 5, 4, 6, 8, 2, 2, 1, 1, 3, 2, 2, 1, 2, 2, 2, 5, 1, 10, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 86, 11, 3,
+ 1, 1, 1, 1, 1, 2, 3, 4, 4, 2, 5, 1, 2, 6, 3, 4, 4, 1, 1, 1, 1, 3, 8, 8, 2, 5, 5, 2, 2, 2, 2, 2, 3, 9, 2, 1, 1, 2, 1, 3, 3,
+ 3, 3, 1, 1, 1, 69, 5, 2, 2, 2, 8, 3, 1, 1, 4, 4, 3, 11, 2, 5, 3, 2, 1, 1, 1, 4, 2, 2, 4, 9, 6, 1, 2, 2, 1, 1, 4, 3, 2, 2, 1,
+ 4, 3, 4, 4, 3, 1, 1, 7, 3, 2, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, 28, 2, 6, 2, 3,
+ 7, 4, 3, 2, 1, 5, 3, 13, 3, 2, 2, 18, 2, 2, 2, 6, 3, 2, 1, 2, 1, 1, 1, 74, 3, 3, 3, 3, 4, 51, 3, 2, 3, 1, 1, 1, 1, 1, 7, 2, 2,
+ 3, 2, 1, 1, 1, 1, 10, 3, 3, 8, 2, 2, 1, 8, 6, 2, 2, 2, 1, 1, 3, 1, 1, 2, 2, 12, 3, 3, 16, 16, 16, 16, 11, 3, 6, 32, 7, 2, 21, 9, 5,
+ 5, 4, 4, 4, 2, 3, 1, 10, 3, 3, 23, 6, 3, 3, 7, 6, 3, 55, 11, 4, 4, 7, 7, 2, 24, 16, 16, 10, 5, 8, 8, 6, 3, 3, 3, 16, 5, 5, 5, 5, 5,
+ 6, 6, 6, 6, 7, 5, 5, 2, 4, 3, 3, 3, 171,1, 1, 1, 1, 1, 16, 4, 2, 2, 4, 2, 2, 43, 6, 5, 5, 5, 4, 3, 1, 1, 1, 7, 5, 5, 5, 5, 3,
+ 3, 3, 2, 23, 4, 4, 12, 6, 4, 7, 4, 3, 24, 18, 18, 1, 3, 4, 3, 2, 2, 2, 2, 1, 20, 4, 1, 1, 4, 4, 1, 1, 3, 1, 3, 1, 10, 5, 2, 1, 3,
+ 1, 1, 9, 8, 4, 36, 15, 3, 3, 3, 7, 16, 11, 10, 9, 1, 1, 1, 1, 4, 4, 4, 4, 3, 1, 1, 118,7, 15, 1, 1, 1, 4, 31, 1, 2, 3, 6, 3, 4, 3,
+ 3, 3, 1, 1, 2, 16, 3, 3, 1, 2, 3, 28, 5, 9, 3, 7, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 49, 3, 1, 1, 1, 1, 4, 2, 1, 10, 5, 3,
+ 1, 1, 1, 3, 2, 7, 3, 2, 2, 2, 2, 1, 2, 4, 1, 3, 10, 1, 1, 8, 4, 3, 2, 4, 2, 2, 101,4, 1, 2, 2, 77, 27, 18, 4, 2, 2, 5, 3, 8, 20,
+ 17, 7, 10, 7, 4, 5, 3, 2, 14, 4, 3, 3, 3, 2, 4, 3, 2, 3, 4, 3, 2, 69, 16, 5, 2, 2, 3, 2, 1, 2, 2, 5, 3, 8, 1, 4, 10, 7, 3, 2, 2,
+ 6, 2, 1, 7, 2, 2, 1, 1, 1, 93, 18, 6, 4, 2, 2, 5, 3, 7, 6, 5, 4, 3, 2, 4, 4, 3, 3, 20, 2, 7, 4, 1, 1, 2, 2, 3, 13, 4, 2, 3, 5,
+ 3, 2, 2, 6, 2, 2, 4, 3, 32, 1, 14, 4, 3, 6, 3, 1, 1, 1, 4, 15, 6, 5, 3, 3, 104,22, 1, 4, 4, 4, 19, 4, 1, 1, 2, 1, 4, 3, 1, 3, 2,
+ 2, 1, 12, 1, 6, 3, 2, 1, 3, 2, 2, 3, 13, 4, 4, 2, 1, 1, 5, 3, 4, 3, 3, 3, 3, 15, 4, 4, 1, 34, 5, 1, 1, 5, 3, 4, 4, 2, 2, 4, 1,
+ 1, 1, 1, 1, 46, 3, 3, 9, 5, 2, 3, 2, 2, 2, 2, 3, 2, 8, 2, 2, 2, 2, 2, 64, 5, 3, 7, 5, 4, 3, 1, 1, 3, 2, 2, 1, 1, 5, 5, 2, 2,
+ 8, 2, 1, 1, 12, 2, 3, 2, 1, 1, 1, 1, 3, 2, 2, 3, 2, 10, 7, 6, 3, 2, 79, 13, 5, 5, 4, 4, 5, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 5, 4, 4, 7, 2, 49, 9, 7, 4, 27, 17, 11, 4, 4, 2, 24, 4, 1, 13, 4, 3, 2, 2, 10, 4, 3, 3, 12, 2, 1, 2, 1, 3, 12, 2, 1, 2, 3, 9, 2, 2,
+ 2, 5, 1, 1, 1, 6, 6, 2, 17, 14, 14, 13, 9, 2, 1, 1, 102,17, 2, 3, 7, 1, 1, 2, 25, 12, 12, 5, 4, 3, 4, 5, 1, 1, 1, 2, 2, 2, 13, 3, 4,
+ 3, 16, 15, 1, 1, 3, 1, 1, 4, 3, 3, 9, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 3, 2, 1, 1, 170,2, 6, 10, 7, 3, 3, 1, 1, 1, 12, 2, 1, 2, 3,
+ 4, 2, 48, 2, 1, 1, 1, 1, 2, 2, 3, 6, 3, 2, 3, 1, 1, 4, 7, 5, 5, 1, 2, 4, 15, 4, 2, 3, 2, 4, 2, 16, 1, 11, 2, 1, 1, 1, 3, 3, 9,
+ 2, 2, 2, 2, 2, 2, 2, 1, 15, 2, 4, 2, 13, 3, 3, 1, 1, 2, 2, 3, 2, 2, 2, 5, 3, 1, 3, 1, 3, 2, 2, 60, 5, 1, 2, 5, 3, 1, 1, 24, 16,
+ 12, 9, 5, 2, 2, 4, 4, 3, 2, 232,12, 4, 3, 2, 2, 75, 8, 3, 1, 1, 35, 2, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 7, 2, 2, 1, 2, 28, 23, 4, 14,
+ 9, 5, 1, 2, 11, 3, 3, 1, 1, 4, 4, 4, 4, 4, 17, 3, 6, 4, 3, 2, 8, 1, 1, 2, 38, 8, 3, 2, 20, 7, 7, 7, 7, 6, 4, 3, 11, 7, 6, 6, 6,
+ 6, 6, 4, 3, 48, 2, 3, 36, 21, 14, 7, 7, 3, 4, 3, 3, 3, 8, 3, 2, 3, 5, 1, 1, 4, 2, 1, 1, 1, 60, 2, 5, 32, 25, 22, 2, 2, 8, 6, 6, 3,
+ 2, 21, 3, 2, 14, 9, 24, 17, 11, 11, 11, 10, 9, 6, 3, 3, 60, 9, 13, 2, 8, 3, 18, 17, 16, 5, 4, 2, 11, 5, 2, 1, 1, 1, 1, 1, 1, 45, 3, 5, 3,
+ 3, 2, 1, 4, 3, 3, 7, 3, 3, 5, 3, 46, 40, 35, 3, 27, 14, 10, 4, 2, 1, 1, 1, 2, 2, 78, 2, 20, 16, 16, 11, 7, 4, 3, 3, 17, 14, 14, 11, 1, 3,
+ 2, 3, 14, 4, 8, 5, 3, 2, 4, 2, 1, 24, 6, 5, 5, 6, 2, 10, 14, 3, 3, 3, 4, 29, 9, 6, 6, 6, 6, 3, 3, 3, 9, 4, 5, 5, 5, 2, 1, 1, 1,
+ 1, 34, 2, 3, 3, 2, 4, 1, 3, 2, 5, 2, 5, 2, 2, 3, 13, 10, 6, 5, 3, 2, 2, 2, 15, 2, 4, 7, 15, 2, 1, 2, 2, 62, 3, 11, 3, 3, 24, 22, 5,
+ 5, 6, 3, 3, 1, 7, 2, 2, 3, 1, 1, 1, 4, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 6, 4, 4, 3, 4, 2, 5, 4, 2, 14, 2, 1, 13, 4, 26, 10, 8,
+ 3, 2, 1, 1, 10, 10, 10, 8, 8, 2, 2, 2, 2, 10, 4, 2, 2, 17, 3, 4, 6, 17, 4, 3, 4, 3, 9, 2, 18, 5, 5, 5, 4, 3, 2, 2, 1, 12, 5, 4, 2,
+ 1, 20, 5, 4, 7, 4, 92, 2, 42, 9, 3, 2, 3, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 25, 3, 5, 4, 3, 3, 4, 2, 2, 2, 2, 2, 2, 4, 2,
+ 4, 3, 29, 6, 3, 3, 2, 16, 1, 1, 1, 3, 2, 2, 1, 3, 2, 2, 6, 7, 3, 3, 2, 2, 110,12, 1, 4, 3, 2, 7, 3, 16, 11, 2, 8, 3, 2, 2, 3, 5,
+ 7, 1, 1, 1, 1, 1, 4, 2, 4, 47, 6, 1, 1, 2, 16, 2, 8, 6, 2, 2, 3, 12, 4, 3, 3, 2, 4, 3, 9, 9, 9, 3, 1, 1, 1, 1, 1, 5, 3, 1, 8,
+ 2, 1, 4, 3, 3, 3, 6, 6, 5, 7, 7, 2, 4, 12, 2, 2, 4, 1, 10, 1, 180,1, 4, 1, 10, 2, 2, 4, 2, 2, 11, 3, 1, 5, 4, 4, 8, 6, 4, 4, 6,
+ 4, 15, 8, 5, 5, 3, 1, 8, 5, 4, 3, 1, 3, 28, 13, 3, 3, 6, 4, 8, 5, 4, 3, 2, 3, 3, 3, 14, 3, 3, 3, 3, 3, 3, 1, 5, 17, 8, 5, 5, 2,
+ 5, 4, 23, 2, 2, 2, 4, 4, 4, 2, 4, 3, 3, 2, 5, 3, 2, 2, 1, 1, 4, 3, 12, 5, 3, 3, 2, 2, 2, 2, 1, 18, 7, 4, 4, 7, 2, 1, 17, 2, 5,
+ 4, 15, 3, 2, 2, 8, 5, 2, 2, 2, 1, 2, 2, 2, 20, 8, 5, 2, 5, 4, 8, 2, 2, 5, 3, 1, 7, 2, 5, 4, 1, 3, 22, 8, 4, 9, 9, 3, 3, 2, 1,
+ 1, 1, 2, 28, 10, 12, 4, 3, 6, 3, 18, 4, 6, 7, 1, 4, 2, 1, 1, 1, 17, 2, 4, 4, 4, 6, 3, 39, 10, 6, 1, 7, 3, 3, 3, 2, 2, 12, 5, 4, 3,
+ 1, 1, 1, 1, 1, 1, 23, 3, 6, 5, 3, 3, 2, 4, 6, 6, 2, 15, 2, 5, 5, 5, 3, 3, 3, 3, 2, 1, 12, 3, 3, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1,
+ 1, 1, 4, 3, 50, 1, 1, 1, 1, 4, 2, 2, 1, 1, 13, 7, 3, 2, 2, 16, 2, 6, 3, 2, 3, 51, 4, 4, 1, 1, 1, 4, 3, 2, 5, 4, 1, 1, 1, 4, 3,
+ 3, 3, 15, 15, 5, 6, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 2, 7, 1, 3, 3, 3, 1, 1, 18, 2, 6, 2, 6, 6, 5, 4, 42, 9, 3, 2, 5, 3, 2,
+ 1, 1, 1, 3, 5, 2, 1, 9, 2, 3, 1, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1,
+ 1, 1, 1, 5, 2, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 14, 3, 4, 2, 2, 15, 3, 2, 1, 7, 112,5, 2, 14, 20, 3, 6, 2, 3, 2, 1, 26, 14,
+ 12, 7, 3, 30, 6, 13, 7, 2, 4, 4, 2, 1, 1, 1, 3, 3, 2, 78, 9, 2, 1, 1, 2, 20, 7, 5, 2, 3, 3, 7, 3, 3, 7, 4, 2, 2, 1, 1, 1, 1, 5,
+ 3, 7, 2, 2, 2, 7, 2, 14, 3, 2, 1, 4, 2, 5, 3, 53, 12, 8, 4, 1, 1, 1, 1, 17, 4, 3, 3, 11, 10, 6, 4, 5, 2, 2, 14, 4, 4, 66, 5, 7, 3,
+ 31, 3, 3, 3, 3, 2, 2, 17, 5, 4, 4, 5, 8, 4, 8, 4, 3, 2, 20, 3, 5, 2, 2, 1, 1, 6, 5, 5, 5, 4, 71, 8, 4, 3, 6, 6, 6, 9, 1, 7, 1,
+ 1, 1, 1, 2, 3, 3, 1, 5, 2, 2, 2, 2, 2, 4, 9, 2, 4, 9, 4, 3, 3, 2, 5, 4, 3, 2, 41, 3, 5, 12, 1, 2, 4, 4, 3, 8, 5, 3, 3, 3, 2,
+ 2, 3, 1, 1, 22, 1, 1, 7, 2, 2, 2, 7, 3, 47, 21, 1, 1, 6, 6, 5, 1, 1, 1, 8, 2, 10, 4, 4, 50, 8, 3, 18, 10, 2, 10, 2, 2, 2, 2, 4, 2,
+ 2, 22, 2, 12, 5, 3, 2, 9, 4, 3, 3, 2, 4, 4, 1, 1, 2, 11, 4, 34, 1, 1, 6, 5, 3, 1, 16, 5, 5, 3, 2, 3, 35, 2, 7, 4, 2, 2, 1, 2, 1,
+ 8, 4, 3, 2, 2, 3, 5, 3, 3, 2, 2, 1, 1, 1, 30, 5, 17, 10, 4, 4, 4, 2, 2, 5, 3, 3, 2, 40, 10, 6, 2, 1, 7, 9, 3, 5, 3, 4, 27, 1, 14,
+ 7, 4, 1, 1, 2, 2, 20, 5, 2, 1, 4, 2, 2, 2, 2, 1, 4, 2, 2, 1, 25, 2, 14, 2, 1, 1, 1, 3, 14, 3, 2, 4, 2, 12, 4, 1, 3, 14, 1, 4, 4,
+ 4, 60, 9, 4, 2, 7, 5, 15, 15, 11, 6, 12, 2, 2, 2, 4, 2, 2, 9, 3, 2, 5, 4, 1, 1, 1, 1, 1, 18, 14, 4, 5, 3, 2, 125,43, 2, 3, 2, 2, 1,
+ 1, 1, 2, 1, 5, 8, 1, 2, 2, 2, 1, 7, 3, 1, 4, 1, 2, 28, 2, 21, 4, 2, 3, 2, 2, 22, 3, 3, 2, 2, 8, 2, 2, 6, 3, 2, 1, 1, 3, 3, 13,
+ 5, 1, 3, 3, 2, 4, 4, 2, 154,5, 9, 2, 1, 7, 7, 7, 22, 7, 3, 9, 6, 9, 1, 3, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 6, 6, 2,
+ 9, 3, 3, 3, 25, 3, 11, 4, 4, 7, 4, 4, 3, 3, 2, 2, 2, 6, 3, 9, 4, 4, 11, 6, 1, 1, 4, 1, 1, 1, 1, 17, 1, 3, 9, 9, 4, 3, 1, 1, 1,
+ 1, 1, 9, 1, 1, 5, 1, 4, 4, 4, 2, 3, 1, 5, 12, 4, 4, 5, 2, 24, 6, 3, 6, 5, 28, 14, 1, 1, 13, 2, 3, 3, 2, 3, 2, 6, 3, 2, 41, 2, 2,
+ 20, 5, 2, 6, 3, 2, 39, 11, 7, 3, 4, 6, 2, 2, 3, 29, 6, 1, 8, 9, 6, 6, 6, 5, 5, 3, 6, 18, 6, 3, 9, 3, 3, 8, 2, 2, 2, 4, 2, 33, 1,
+ 7, 4, 16, 4, 1, 2, 1, 1, 3, 3, 37, 10, 2, 5, 12, 3, 4, 8, 6, 28, 9, 3, 6, 1, 3, 3, 1, 1, 104,4, 10, 3, 10, 2, 1, 1, 5, 3, 2, 50, 23,
+ 14, 13, 11, 9, 4, 6, 6, 6, 4, 6, 7, 7, 7, 2, 3, 3, 3, 10, 13, 4, 2, 6, 2, 2, 8, 31, 11, 1, 2, 9, 5, 5, 5, 14, 4, 3, 8, 13, 7, 3, 4,
+ 13, 13, 9, 4, 4, 152,10, 5, 18, 1, 4, 1, 1, 1, 1, 1, 2, 4, 3, 2, 1, 1, 1, 1, 18, 12, 7, 2, 2, 2, 2, 2, 2, 2, 17, 5, 6, 5, 5, 3, 7,
+ 3, 3, 2, 3, 2, 2, 47, 3, 2, 36, 34, 30, 1, 1, 1, 2, 1, 54, 4, 11, 3, 3, 9, 3, 16, 14, 7, 5, 3, 5, 3, 6, 4, 1, 1, 4, 3, 2, 22, 4, 3,
+ 3, 2, 1, 5, 4, 19, 18, 9, 2, 30, 4, 3, 10, 8, 11, 7, 3, 3, 2, 34, 5, 4, 1, 1, 1, 4, 3, 3, 15, 7, 7, 7, 6, 1, 18, 5, 4, 4, 4, 3, 5,
+ 3, 9, 82, 52, 9, 7, 7, 5, 23, 7, 3, 3, 3, 6, 6, 2, 20, 6, 12, 3, 5, 2, 4, 32, 2, 12, 2, 7, 8, 4, 3, 5, 1, 89, 2, 4, 65, 2, 6, 7, 2,
+ 2, 2, 7, 18, 10, 4, 2, 7, 3, 9, 1, 2, 2, 71, 3, 19, 11, 11, 3, 2, 30, 3, 3, 9, 4, 13, 7, 2, 1, 1, 1, 1, 1, 6, 4, 34, 6, 6, 15, 2, 5,
+ 1, 4, 3, 7, 1, 1, 1, 4, 61, 1, 1, 1, 1, 1, 1, 1, 8, 2, 3, 3, 2, 8, 4, 3, 3, 6, 6, 2, 8, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 13, 3,
+ 2, 1, 3, 3, 1, 9, 2, 2, 9, 2, 2, 114,35, 17, 1, 1, 1, 13, 7, 4, 4, 3, 9, 4, 11, 9, 8, 2, 2, 28, 13, 3, 4, 9, 3, 5, 2, 3, 7, 4, 4,
+ 65, 7, 2, 1, 3, 14, 6, 3, 2, 3, 3, 2, 16, 5, 2, 5, 4, 2, 9, 6, 3, 5, 4, 3, 3, 7, 4, 4, 4, 1, 84, 9, 4, 4, 4, 9, 2, 16, 6, 5, 5,
+ 3, 3, 3, 3, 15, 4, 4, 4, 4, 5, 3, 3, 3, 3, 4, 3, 3, 3, 23, 4, 2, 4, 12, 2, 5, 58, 4, 8, 2, 2, 8, 1, 1, 8, 9, 7, 4, 3, 3, 3, 7,
+ 6, 4, 4, 29, 6, 6, 2, 10, 5, 2, 2, 1, 4, 3, 7, 2, 22, 4, 3, 3, 5, 4, 2, 2, 2, 2, 10, 6, 3, 125,9, 3, 1, 1, 5, 3, 10, 3, 2, 2, 2,
+ 2, 1, 9, 3, 2, 2, 44, 4, 17, 4, 4, 3, 5, 2, 12, 2, 3, 3, 2, 2, 5, 2, 16, 3, 3, 3, 3, 3, 3, 6, 1, 10, 7, 2, 15, 11, 2, 2, 5, 3, 2,
+ 26, 2, 1, 1, 10, 3, 3, 1, 14, 3, 2, 8, 8, 37, 4, 15, 9, 2, 5, 4, 4, 2, 5, 4, 3, 4, 3, 3, 3, 16, 3, 2, 9, 8, 8, 8, 3, 12, 6, 6, 5,
+ 6, 3, 2, 2, 2, 28, 4, 2, 2, 2, 2, 5, 3, 3, 9, 3, 5, 5, 5, 4, 3, 3, 59, 5, 2, 12, 5, 19, 2, 6, 3, 7, 3, 3, 12, 3, 4, 1, 1, 2, 2,
+ 7, 2, 25, 3, 2, 11, 6, 6, 2, 43, 16, 2, 2, 4, 5, 4, 4, 4, 4, 3, 1, 9, 3, 5, 5, 4, 4, 1, 4, 2, 6, 10, 7, 7, 6, 65, 3, 8, 4, 3, 28,
+ 20, 18, 5, 2, 3, 12, 12, 3, 2, 6, 5, 4, 1, 1, 1, 3, 3, 16, 1, 5, 2, 2, 45, 17, 4, 4, 4, 5, 5, 8, 1, 4, 2, 5, 2, 7, 6, 6, 6, 4, 4,
+ 10, 4, 1, 35, 3, 7, 5, 5, 5, 3, 2, 1, 4, 3, 4, 1, 1, 3, 3, 35, 11, 10, 10, 5, 15, 15, 10, 4, 7, 5, 5, 1, 5, 2, 2, 2, 66, 2, 6, 3, 5,
+ 1, 6, 3, 8, 3, 10, 10, 5, 5, 3, 3, 3, 2, 6, 1, 4, 4, 4, 10, 5, 2, 3, 3, 3, 4, 4, 4, 18, 4, 7, 5, 17, 2, 30, 10, 1, 7, 4, 4, 6, 5,
+ 10, 4, 4, 5, 3, 2, 3, 3, 16, 2, 1, 3, 7, 3, 2, 24, 7, 3, 3, 2, 1, 1, 3, 3, 3, 24, 18, 3, 3, 3, 3, 3, 3, 3, 14, 5, 5, 5, 9, 8, 2,
+ 2, 58, 3, 14, 3, 21, 3, 2, 2, 6, 11, 5, 3, 5, 95, 5, 1, 3, 3, 16, 6, 3, 1, 3, 3, 3, 3, 20, 3, 8, 7, 4, 1, 1, 1, 29, 27, 16, 9, 6, 6,
+ 5, 5, 3, 2, 7, 7, 23, 4, 3, 3, 2, 2, 8, 4, 4, 13, 2, 15, 4, 7, 6, 4, 2, 75, 8, 3, 13, 7, 3, 3, 2, 4, 3, 8, 1, 1, 5, 3, 8, 4, 3,
+ 20, 4, 4, 3, 4, 14, 2, 2, 5, 2, 3, 2, 62, 49, 5, 2, 2, 2, 11, 2, 2, 2, 24, 17, 1, 1, 6, 6, 4, 5, 2, 121,15, 2, 2, 13, 5, 23, 6, 4, 4,
+ 51, 5, 3, 3, 2, 3, 2, 5, 10, 5, 5, 1, 1, 2, 9, 2, 8, 3, 1, 1, 1, 1, 16, 4, 2, 5, 2, 2, 4, 52, 4, 11, 5, 26, 4, 3, 2, 2, 7, 3, 3,
+ 3, 3, 4, 5, 4, 3, 3, 2, 11, 8, 2, 2, 5, 2, 7, 2, 2, 11, 8, 2, 4, 82, 15, 2, 3, 3, 2, 4, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 14, 4, 4,
+ 4, 4, 1, 7, 5, 3, 2, 2, 3, 3, 2, 1, 1, 7, 1, 2, 2, 2, 1, 1, 19, 4, 2, 8, 6, 2, 6, 2, 1, 1, 4, 1, 1, 1, 1, 1, 1, 3, 2, 2, 5,
+ 1, 3, 2, 1, 1, 1, 1, 102,3, 2, 4, 1, 1, 9, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1, 23, 3, 15, 3, 3, 2, 1, 3, 3, 1, 1, 9, 8, 38, 5, 5, 3,
+ 3, 17, 14, 13, 2, 2, 3, 7, 2, 4, 4, 4, 3, 1, 1, 4, 3, 2, 2, 10, 8, 2, 7, 2, 1, 3, 50, 3, 1, 2, 1, 7, 20, 2, 1, 1, 1, 1, 13, 7, 6,
+ 6, 3, 3, 3, 2, 1, 1, 3, 2, 2, 6, 1, 1, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 146,1, 113,20, 5, 5, 5, 4, 4, 8, 3,
+ 3, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 7, 3, 2, 2, 4, 3, 3, 3, 3, 3, 3, 23, 17, 9, 5, 2, 23, 2, 17, 11, 4, 4, 3, 19, 1, 1, 10, 9, 9, 9,
+ 6, 5, 3, 2, 1, 1, 1, 1, 1, 1, 6, 6, 4, 8, 7, 2, 1, 1, 1, 4, 1, 2, 147,4, 3, 21, 4, 15, 15, 11, 6, 3, 3, 1, 1, 1, 1, 1, 1, 31, 12,
+ 4, 1, 3, 10, 4, 4, 4, 3, 3, 3, 24, 23, 23, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 3, 3, 3, 11, 5, 5, 5, 51, 1, 49, 6, 4, 2, 11,
+ 9, 9, 8, 8, 2, 2, 2, 2, 2, 2, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 3, 3, 1, 2, 2, 9, 1, 3, 3, 3, 2, 2, 2, 2, 4, 1, 1, 1, 13, 8, 5,
+ 4, 3, 2, 2, 2, 1, 1, 1, 12, 1, 2, 2, 44, 2, 13, 3, 4, 2, 1, 1, 1, 4, 4, 4, 4, 26, 25, 12, 5, 5, 2, 4, 11, 2, 5, 5, 5, 4, 3, 3, 3,
+ 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, 3, 41, 4, 2, 2, 1, 2, 13, 2, 3, 5, 1, 1, 6, 2, 2, 7, 3, 3, 1, 1, 161,1, 22, 11, 6, 2, 4,
+ 1, 24, 3, 3, 10, 3, 2, 2, 7, 5, 3, 5, 14, 3, 4, 2, 1, 3, 56, 3, 23, 3, 3, 8, 2, 8, 9, 7, 3, 2, 2, 4, 3, 3, 3, 9, 21, 2, 2, 5, 2,
+ 2, 2, 10, 8, 5, 2, 2, 9, 2, 135,1, 13, 5, 5, 4, 10, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 3, 4, 2, 4, 4, 3, 2, 2, 48, 2, 1, 9, 6, 5, 1,
+ 3, 2, 1, 3, 2, 10, 3, 4, 6, 2, 1, 1, 1, 1, 1, 3, 31, 4, 4, 1, 1, 1, 1, 1, 4, 14, 3, 1, 5, 1, 3, 2, 2, 2, 3, 49, 3, 11, 4, 5, 5,
+ 7, 6, 6, 5, 6, 4, 3, 3, 19, 6, 3, 7, 1, 1, 3, 113,18, 3, 3, 6, 2, 4, 4, 9, 3, 2, 2, 6, 5, 4, 4, 9, 3, 2, 6, 3, 3, 3, 36, 12, 5,
+ 2, 5, 4, 1, 9, 4, 13, 11, 6, 2, 38, 4, 4, 4, 30, 5, 4, 4, 3, 2, 6, 4, 2, 2, 4, 230,14, 1, 1, 1, 1, 3, 2, 25, 12, 2, 3, 2, 3, 2, 2,
+ 5, 37, 7, 4, 4, 2, 8, 2, 4, 4, 4, 20, 3, 1, 2, 2, 3, 2, 1, 1, 1, 4, 3, 7, 2, 1, 1, 42, 10, 5, 3, 3, 2, 3, 3, 2, 2, 3, 3, 2, 6,
+ 21, 7, 6, 4, 1, 10, 3, 2, 2, 4, 4, 10, 4, 4, 1, 1, 17, 5, 4, 2, 3, 3, 23, 1, 12, 8, 6, 2, 4, 4, 48, 16, 2, 1, 1, 7, 2, 1, 17, 7, 4,
+ 4, 4, 5, 5, 4, 55, 19, 3, 4, 8, 5, 2, 5, 2, 2, 3, 11, 1, 5, 3, 66, 5, 11, 1, 1, 6, 2, 4, 4, 4, 11, 2, 20, 3, 3, 3, 2, 2, 2, 12, 5,
+ 4, 2, 3, 2, 2, 102,5, 1, 1, 5, 4, 15, 4, 2, 10, 6, 4, 2, 2, 5, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 5, 2, 2, 1, 1, 5, 1, 2, 31, 4,
+ 2, 4, 1, 4, 3, 1, 11, 3, 3, 3, 1, 1, 4, 3, 2, 11, 6, 5, 2, 9, 4, 39, 4, 3, 29, 14, 2, 6, 2, 3, 2, 3, 7, 1, 1, 1, 1, 1, 1, 1, 3,
+ 1, 1, 1, 3, 1, 1, 1, 1, 2, 41, 4, 23, 2, 3, 7, 3, 4, 2, 6, 5, 13, 3, 3, 2, 2, 2, 1, 26, 17, 2, 4, 3, 4, 2, 6, 2, 2, 66, 4, 4, 12,
+ 2, 7, 3, 4, 6, 2, 5, 2, 25, 9, 2, 7, 2, 4, 3, 4, 4, 4, 35, 2, 8, 3, 1, 1, 3, 1, 2, 5, 17, 5, 5, 10, 7, 64, 4, 17, 4, 4, 3, 4, 4,
+ 4, 4, 9, 7, 9, 4, 3, 11, 6, 3, 2, 2, 10, 3, 3, 71, 6, 11, 8, 6, 9, 7, 2, 1, 1, 1, 6, 3, 6, 4, 4, 4, 2, 5, 4, 3, 3, 6, 5, 5, 5,
+ 4, 4, 3, 3, 3, 3, 4, 109,32, 23, 7, 7, 6, 9, 4, 4, 5, 2, 2, 2, 7, 6, 5, 3, 8, 2, 1, 1, 1, 3, 7, 1, 1, 1, 1, 1, 1, 1, 1, 2, 18,
+ 2, 2, 2, 1, 6, 2, 6, 2, 2, 1, 3, 3, 3, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 21, 5, 2, 5, 2, 2, 1, 1, 1, 1, 1, 71, 5, 4, 2, 1, 3, 3,
+ 3, 5, 7, 2, 17, 10, 6, 6, 2, 3, 9, 85, 4, 4, 7, 29, 6, 6, 4, 4, 4, 2, 12, 6, 3, 7, 6, 6, 1, 5, 1, 9, 2, 6, 4, 3, 2, 10, 5, 6, 1,
+ 1, 2, 2, 2, 2, 2, 1, 1, 1, 10, 1, 1, 6, 6, 6, 4, 1, 1, 2, 1, 1, 1, 14, 6, 3, 1, 5, 2, 34, 4, 1, 1, 1, 1, 1, 6, 2, 1, 3, 11, 8,
+ 8, 1, 6, 1, 1, 51, 4, 3, 1, 3, 3, 3, 1, 1, 7, 1, 2, 3, 5, 3, 3, 3, 2, 1, 1, 1, 4, 4, 4, 6, 1, 1, 5, 3, 4, 3, 3, 2, 2, 2, 2,
+ 39, 3, 3, 6, 3, 1, 4, 4, 2, 6, 2, 14, 5, 4, 3, 2, 2, 14, 1, 6, 1, 1, 9, 5, 1, 1, 68, 2, 2, 24, 1, 1, 4, 3, 3, 17, 2, 5, 5, 16, 7,
+ 7, 5, 3, 2, 8, 3, 2, 7, 1, 3, 3, 39, 23, 8, 8, 7, 9, 2, 2, 5, 4, 2, 1, 1, 36, 5, 4, 2, 6, 14, 9, 4, 4, 4, 2, 22, 6, 4, 4, 3, 2,
+ 2, 2, 1, 2, 3, 96, 24, 4, 2, 9, 4, 4, 2, 2, 4, 1, 1, 1, 1, 1, 3, 2, 3, 1, 1, 2, 2, 8, 3, 9, 32, 5, 19, 11, 5, 2, 3, 3, 2, 12, 7,
+ 2, 2, 1, 1, 63, 11, 3, 4, 6, 18, 3, 11, 8, 6, 4, 3, 9, 8, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 22, 1, 5, 1, 1, 3, 3, 2, 11, 5, 8,
+ 4, 3, 2, 2, 3, 80, 6, 2, 11, 3, 3, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 11, 4, 4, 2, 2, 2, 12, 7, 7, 4, 4, 4, 4, 6,
+ 3, 2, 11, 2, 5, 2, 2, 1, 1, 1, 4, 2, 2, 2, 2, 2, 1, 1, 1, 8, 4, 4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 1, 63, 8, 4, 3, 11, 2, 2, 2,
+ 8, 5, 5, 3, 5, 5, 2, 22, 3, 5, 3, 4, 7, 4, 2, 95, 1, 1, 8, 2, 3, 13, 7, 6, 1, 1, 2, 5, 1, 1, 1, 4, 2, 2, 2, 1, 1, 2, 2, 1, 4,
+ 1, 46, 1, 1, 1, 1, 6, 1, 1, 1, 21, 5, 8, 6, 6, 3, 7, 1, 1, 3, 2, 1, 5, 3, 100,6, 5, 3, 6, 3, 3, 11, 4, 13, 2, 6, 26, 4, 5, 3, 3,
+ 14, 3, 2, 3, 1, 126,5, 4, 4, 4, 12, 9, 2, 2, 2, 1, 1, 4, 5, 4, 2, 2, 14, 2, 3, 6, 3, 30, 12, 6, 3, 3, 6, 5, 3, 3, 26, 26, 20, 13, 10,
+ 5, 4, 2, 219,4, 1, 13, 3, 3, 5, 1, 8, 2, 1, 4, 6, 2, 34, 4, 2, 3, 3, 15, 6, 5, 5, 3, 3, 3, 7, 3, 1, 4, 2, 11, 3, 3, 4, 13, 8, 8,
+ 7, 1, 1, 3, 2, 105,13, 4, 2, 1, 18, 3, 6, 2, 2, 5, 1, 1, 14, 4, 2, 2, 2, 2, 5, 3, 2, 9, 1, 3, 12, 10, 4, 4, 6, 2, 5, 2, 2, 8, 5,
+ 3, 3, 2, 2, 177,4, 9, 4, 3, 25, 20, 14, 5, 8, 4, 3, 3, 2, 24, 12, 10, 9, 6, 4, 3, 98, 5, 3, 1, 2, 7, 3, 1, 3, 1, 2, 2, 1, 14, 7, 4,
+ 3, 3, 5, 3, 2, 2, 1, 4, 4, 4, 7, 1, 7, 7, 2, 2, 12, 5, 3, 2, 1, 1, 1, 1, 4, 3, 3, 1, 6, 2, 1, 2, 2, 6, 1, 5, 1, 5, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 11, 4, 105,12, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 20, 2, 10, 8, 7, 5, 1, 2, 1, 7, 3, 5, 8, 2, 2, 2, 4, 8,
+ 2, 2, 30, 1, 1, 1, 1, 12, 7, 2, 6, 1, 3, 65, 4, 2, 3, 2, 1, 1, 1, 18, 5, 4, 2, 3, 13, 6, 7, 10, 2, 2, 2, 7, 6, 3, 1, 2, 79, 3, 7,
+ 7, 7, 50, 4, 45, 6, 4, 3, 5, 3, 2, 7, 4, 4, 3, 2, 6, 6, 2, 1, 1, 3, 11, 7, 3, 1, 13, 2, 2, 4, 2, 7, 1, 4, 3, 3, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 168,8, 6, 4, 2, 2, 2, 18, 15, 15, 9, 4, 2, 9, 5, 10, 1, 1, 2, 2, 2, 4, 4, 4, 3, 8, 4, 4, 4, 4, 6, 9, 5, 4, 3, 2,
+ 1, 1, 1, 1, 1, 1, 5, 2, 2, 5, 4, 16, 4, 4, 12, 3, 3, 3, 1, 1, 29, 3, 3, 6, 1, 8, 3, 2, 3, 4, 10, 4, 2, 4, 2, 16, 7, 7, 2, 1, 1,
+ 1, 5, 2, 2, 65, 7, 1, 2, 14, 4, 4, 3, 3, 22, 5, 8, 8, 7, 6, 6, 4, 9, 4, 2, 2, 2, 56, 12, 9, 4, 7, 3, 3, 2, 2, 2, 1, 1, 1, 22, 17,
+ 5, 4, 12, 1, 4, 4, 4, 4, 1, 10, 9, 8, 8, 8, 5, 1, 16, 2, 1, 1, 1, 8, 3, 5, 5, 1, 1, 31, 6, 2, 1, 1, 17, 5, 5, 11, 4, 4, 5, 1, 2,
+ 1, 8, 3, 8, 2, 1, 3, 3, 2, 15, 13, 2, 4, 6, 4, 4, 4, 4, 3, 16, 3, 3, 5, 4, 2, 2, 4, 4, 4, 39, 6, 2, 5, 3, 2, 19, 9, 9, 3, 3, 6,
+ 3, 1, 1, 1, 1, 1, 1, 12, 2, 2, 2, 1, 3, 3, 2, 2, 5, 4, 3, 3, 3, 22, 9, 8, 4, 6, 1, 1, 4, 4, 2, 2, 2, 6, 3, 1, 1, 2, 2, 2, 3,
+ 2, 152,5, 8, 8, 7, 7, 7, 4, 14, 3, 3, 3, 3, 7, 7, 29, 3, 12, 10, 11, 10, 5, 5, 5, 1, 15, 14, 11, 8, 5, 1, 3, 2, 5, 1, 4, 28, 7, 3, 7,
+ 7, 4, 24, 3, 8, 3, 2, 4, 3, 2, 3, 10, 8, 3, 3, 1, 1, 41, 18, 13, 4, 2, 3, 11, 3, 6, 3, 3, 6, 4, 34, 8, 14, 9, 9, 9, 3, 5, 3, 6, 5,
+ 2, 3, 1, 8, 3, 2, 19, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 6, 14, 6, 3, 3, 1, 22, 2, 11, 8, 3, 4, 1, 3, 2, 53, 14, 3,
+ 2, 2, 16, 3, 3, 3, 5, 3, 3, 9, 1, 1, 1, 4, 4, 74, 39, 21, 9, 6, 17, 16, 9, 6, 3, 2, 2, 18, 5, 5, 3, 23, 4, 3, 15, 9, 7, 6, 25, 6, 3,
+ 3, 4, 7, 5, 3, 3, 1, 13, 5, 5, 4, 2, 2, 2, 3, 33, 21, 18, 1, 1, 8, 7, 6, 5, 4, 3, 3, 3, 8, 4, 2, 2, 4, 32, 10, 5, 3, 3, 3, 4, 3,
+ 3, 3, 6, 4, 6, 6, 6, 1, 63, 2, 2, 22, 4, 5, 2, 2, 1, 10, 10, 5, 3, 9, 6, 2, 5, 1, 5, 3, 3, 4, 3, 5, 5, 32, 6, 5, 2, 3, 17, 17, 7,
+ 4, 2, 1, 1, 1, 1, 8, 6, 3, 56, 5, 4, 22, 20, 18, 9, 8, 8, 5, 5, 2, 6, 4, 17, 2, 9, 2, 2, 2, 4, 37, 5, 3, 2, 2, 2, 2, 2, 25, 13, 13,
+ 9, 2, 12, 12, 10, 7, 4, 12, 9, 9, 9, 9, 2, 2, 15, 15, 13, 13, 7, 10, 3, 1, 2, 20, 2, 3, 1, 2, 2, 2, 9, 7, 5, 5, 5, 6, 4, 45, 6, 2, 2,
+ 2, 11, 8, 3, 16, 10, 5, 4, 4, 1, 1, 1, 1, 1, 6, 6, 4, 4, 25, 5, 12, 8, 8, 2, 2, 7, 6, 2, 2, 83, 11, 10, 10, 4, 4, 6, 14, 8, 6, 4, 16,
+ 13, 3, 8, 3, 24, 8, 8, 8, 8, 8, 5, 11, 6, 5, 5, 7, 7, 5, 5, 2, 2, 2, 71, 2, 6, 2, 13, 8, 8, 8, 2, 2, 2, 2, 3, 2, 5, 18, 17, 8, 8,
+ 8, 4, 19, 4, 2, 2, 2, 2, 1, 4, 4, 3, 3, 3, 3, 1, 89, 7, 3, 3, 2, 46, 6, 3, 16, 16, 8, 4, 4, 3, 3, 5, 2, 11, 11, 4, 3, 3, 3, 19, 3,
+ 3, 5, 5, 5, 2, 2, 7, 1, 6, 12, 6, 74, 6, 17, 10, 4, 3, 3, 35, 12, 9, 4, 3, 12, 7, 3, 4, 9, 6, 6, 6, 16, 5, 5, 5, 10, 2, 7, 6, 5, 3,
+ 2, 63, 3, 2, 14, 9, 7, 4, 2, 2, 6, 2, 3, 3, 12, 7, 1, 13, 2, 4, 1, 3, 2, 12, 1, 2, 1, 18, 1, 1, 1, 9, 1, 1, 3, 2, 2, 1, 1, 1, 2,
+ 2, 8, 6, 6, 2, 1, 181,17, 3, 2, 5, 3, 4, 13, 2, 5, 1, 11, 5, 6, 6, 2, 3, 8, 5, 4, 15, 1, 13, 13, 13, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 1, 10, 3, 3, 2, 2, 3, 1, 3, 1, 6, 2, 1, 1, 1, 63, 61, 61, 5, 4, 3, 8, 4, 4, 2, 2, 2, 44, 7, 6, 6, 6, 6, 3,
+ 2, 1, 2, 7, 1, 1, 1, 6, 2, 6, 5, 5, 5, 1, 1, 1, 1, 5, 1, 2, 8, 4, 4, 4, 4, 4, 2, 1, 1, 1, 26, 7, 1, 2, 1, 1, 7, 7, 1, 5, 1,
+ 1, 1, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 39, 4, 3, 2, 2, 29, 29, 20, 1, 1, 1, 1, 5, 10, 6, 23, 7,
+ 6, 3, 2, 2, 2, 7, 4, 2, 19, 10, 2, 1, 5, 5, 3, 2, 1, 1, 1, 20, 3, 5, 5, 3, 2, 1, 1, 1, 17, 16, 1, 5, 2, 5, 5, 2, 1, 1, 1, 1, 16,
+ 2, 3, 4, 4, 6, 1, 1, 6, 1, 2, 6, 7, 3, 3, 92, 6, 3, 3, 4, 3, 1, 7, 1, 3, 1, 32, 5, 7, 8, 4, 3, 2, 2, 2, 2, 6, 3, 11, 5, 3, 2,
+ 6, 3, 3, 3, 27, 3, 2, 2, 4, 3, 3, 15, 2, 3, 6, 5, 82, 5, 19, 9, 4, 10, 8, 4, 5, 3, 12, 1, 8, 8, 2, 2, 4, 4, 10, 2, 2, 1, 1, 1, 14,
+ 3, 1, 4, 3, 2, 1, 1, 1, 1, 2, 31, 5, 17, 7, 5, 6, 160,10, 5, 3, 3, 9, 3, 6, 6, 8, 11, 3, 1, 1, 8, 3, 21, 7, 4, 4, 3, 5, 4, 4, 6,
+ 3, 2, 4, 3, 1, 28, 13, 11, 13, 6, 5, 7, 6, 2, 3, 20, 5, 1, 11, 4, 7, 3, 2, 4, 2, 2, 1, 8, 3, 4, 2, 79, 2, 22, 3, 4, 2, 1, 1, 2, 2,
+ 2, 3, 3, 43, 37, 5, 3, 2, 7, 5, 3, 46, 12, 1, 3, 2, 2, 2, 2, 1, 1, 1, 1, 3, 2, 3, 2, 9, 2, 2, 1, 4, 1, 5, 2, 8, 2, 3, 1, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 95, 5, 2, 2, 2, 2, 5, 1, 1, 1, 4, 2, 1, 4, 3, 1, 10, 4, 3, 3, 2, 1, 2, 36, 11, 9, 7, 7, 2, 4, 3, 3, 3,
+ 1, 10, 2, 2, 2, 2, 2, 2, 12, 8, 2, 2, 2, 2, 2, 1, 1, 1, 1, 32, 2, 2, 2, 13, 11, 1, 9, 8, 6, 2, 2, 2, 2, 1, 1, 3, 3, 3, 3, 2, 2,
+ 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1, 5, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 115,2, 5, 1, 1, 5,
+ 3, 2, 7, 4, 9, 2, 2, 3, 7, 6, 6, 6, 4, 3, 2, 2, 3, 62, 10, 9, 7, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 18, 18, 17, 7,
+ 8, 7, 6, 2, 2, 19, 5, 3, 13, 12, 5, 4, 3, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 17, 5, 4, 1,
+ 1, 1, 1, 1, 1, 5, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 2, 2, 2, 2, 23, 5, 5, 5, 3, 1, 1, 1, 14,
+ 3, 7, 4, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 6, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 217,7, 6, 4, 1, 27, 22, 11, 5, 4, 1, 5, 2, 1, 1, 4, 4,
+ 2, 5, 3, 3, 11, 5, 4, 10, 9, 23, 1, 14, 8, 6, 5, 3, 38, 6, 1, 24, 2, 2, 2, 15, 8, 6, 4, 2, 2, 2, 51, 4, 4, 4, 12, 7, 7, 3, 30, 2, 17,
+ 15, 3, 3, 3, 3, 4, 4, 4, 2, 3, 12, 4, 3, 2, 19, 5, 4, 3, 7, 3, 3, 1, 1, 6, 1, 5, 4, 5, 3, 125,5, 1, 1, 8, 5, 4, 2, 2, 1, 1, 29,
+ 24, 2, 1, 1, 3, 13, 3, 2, 1, 1, 1, 11, 8, 5, 10, 4, 19, 3, 2, 3, 5, 2, 1, 20, 13, 7, 7, 7, 5, 3, 3, 3, 1, 1, 5, 5, 3, 1, 204,3, 1,
+ 3, 1, 23, 20, 6, 6, 3, 2, 2, 5, 13, 9, 3, 3, 3, 3, 2, 2, 25, 3, 1, 12, 5, 3, 66, 2, 7, 2, 5, 3, 7, 2, 4, 33, 10, 5, 12, 3, 3, 3, 3,
2, 3, 2, 2, 3, 18, 3, 7, 6, 1, 3, 4, 15, 4, 5, 2, 4, 3, 5, 2, 2, 3, 2, 1, 24, 2, 3, 12, 4, 3, 1, 9, 5, 1, 1, 3, 2, 1, 1, 1, 148,
- 5, 5, 3, 10, 10, 9, 8, 2, 130,8, 8, 8, 3, 11, 11, 10, 5, 5, 3, 1, 2, 2, 5, 4, 94, 6, 5, 4, 4, 3, 81, 4, 3, 3, 2, 2, 1, 1, 1, 1, 63,
- 5, 12, 6, 5, 5, 4, 5, 3, 3, 2, 13, 9, 7, 6, 5, 2, 4, 3, 1, 1, 1, 2, 2, 2, 2, 2, 11, 2, 2, 2, 5, 4, 1, 3, 3, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 13, 3, 81, 13, 2, 20, 4, 13, 3, 8, 16, 5, 5, 15, 3, 6, 2, 2, 2, 7, 2, 4, 105,4, 3, 3, 28, 6, 4, 4, 2,
- 2, 2, 4, 6, 3, 23, 5, 11, 9, 2, 2, 2, 2, 2, 17, 5, 2, 2, 17, 7, 5, 2, 3, 1, 4, 4, 4, 3, 5, 177,12, 2, 3, 3, 5, 16, 3, 3, 2, 3, 2,
- 77, 19, 4, 4, 11, 5, 13, 8, 7, 30, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 3, 1, 1, 5, 5, 4, 3, 5, 17, 5, 2, 6,
- 3, 3, 3, 9, 2, 2, 5, 4, 3, 6, 4, 2, 2, 18, 2, 3, 4, 47, 13, 5, 2, 13, 4, 3, 3, 2, 5, 2, 2, 2, 6, 70, 11, 8, 4, 2, 8, 4, 4, 4, 3,
- 3, 5, 4, 5, 6, 3, 5, 4, 2, 8, 5, 35, 8, 5, 5, 7, 4, 3, 146,2, 2, 14, 10, 7, 3, 4, 2, 3, 25, 1, 3, 2, 4, 4, 2, 2, 3, 3, 8, 3, 2,
- 54, 10, 9, 6, 3, 4, 6, 4, 4, 3, 4, 4, 4, 3, 4, 20, 4, 4, 3, 4, 46, 19, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 3, 3, 3, 7,
- 2, 4, 2, 2, 4, 1, 1, 1, 3, 3, 3, 1, 33, 10, 4, 2, 2, 4, 3, 2, 7, 3, 2, 2, 2, 2, 2, 30, 5, 2, 13, 6, 4, 5, 5, 220,2, 40, 3, 3, 2,
- 4, 3, 3, 2, 3, 5, 8, 3, 2, 2, 2, 3, 2, 2, 25, 2, 3, 9, 8, 2, 1, 2, 1, 4, 4, 4, 3, 2, 23, 5, 6, 2, 5, 3, 1, 19, 1, 1, 2, 3, 8,
- 5, 2, 4, 1, 1, 1, 4, 3, 8, 3, 3, 3, 6, 5, 2, 12, 7, 22, 8, 1, 3, 1, 3, 4, 2, 28, 4, 2, 3, 3, 6, 2, 2, 2, 3, 3, 208,12, 3, 1, 1,
- 2, 1, 22, 2, 13, 7, 6, 3, 46, 5, 4, 2, 4, 4, 14, 4, 8, 6, 9, 3, 46, 4, 2, 1, 34, 2, 27, 5, 4, 8, 7, 2, 4, 3, 1, 1, 1, 10, 5, 5, 4,
- 4, 8, 3, 2, 16, 3, 6, 6, 4, 2, 2, 4, 85, 8, 7, 1, 2, 6, 3, 3, 1, 1, 1, 15, 9, 3, 3, 8, 21, 4, 1, 1, 7, 3, 2, 4, 3, 3, 3, 2, 2,
- 1, 1, 1, 10, 6, 6, 2, 2, 4, 3, 3, 20, 3, 6, 6, 3, 2, 112,3, 5, 13, 5, 1, 1, 6, 26, 3, 5, 2, 5, 4, 3, 2, 5, 4, 3, 2, 2, 5, 4, 4,
- 4, 3, 4, 9, 3, 1, 7, 3, 1, 2, 1, 19, 10, 3, 3, 4, 2, 3, 163,8, 2, 1, 3, 7, 4, 1, 10, 1, 4, 2, 29, 4, 3, 2, 1, 2, 5, 3, 3, 3, 35,
- 3, 3, 1, 1, 22, 20, 16, 16, 11, 6, 3, 3, 5, 3, 2, 5, 4, 4, 1, 35, 5, 4, 3, 1, 7, 2, 3, 11, 9, 4, 2, 1, 1, 3, 3, 2, 6, 2, 2, 50, 6,
- 3, 4, 2, 2, 3, 2, 4, 2, 5, 2, 4, 2, 8, 4, 4, 3, 2, 5, 2, 2, 1, 1, 1, 71, 10, 5, 2, 1, 1, 1, 40, 4, 27, 2, 8, 2, 17, 1, 1, 1, 1,
- 1, 7, 3, 32, 5, 2, 1, 4, 3, 2, 4, 10, 4, 4, 1, 68, 6, 1, 1, 1, 6, 4, 2, 4, 6, 3, 3, 2, 10, 7, 4, 10, 4, 6, 6, 34, 4, 1, 1, 2, 7,
- 3, 8, 6, 3, 3, 7, 3, 9, 1, 1, 2, 2, 1, 1, 3, 10, 1, 3, 6, 2, 1, 1, 1, 1, 1, 1, 1, 243,2, 2, 28, 7, 3, 3, 18, 10, 4, 4, 5, 33, 1,
- 5, 9, 7, 5, 1, 1, 1, 1, 1, 1, 1, 3, 2, 5, 5, 5, 5, 5, 12, 5, 52, 24, 4, 10, 3, 3, 8, 4, 3, 1, 1, 1, 3, 4, 6, 8, 3, 3, 3, 1, 16,
- 9, 5, 5, 5, 3, 1, 1, 1, 1, 1, 21, 3, 6, 35, 10, 9, 3, 3, 3, 19, 10, 5, 4, 4, 5, 5, 5, 3, 1, 5, 1, 1, 7, 4, 2, 2, 94, 6, 2, 5, 4,
- 1, 34, 8, 5, 19, 8, 5, 4, 5, 13, 4, 3, 5, 5, 9, 5, 4, 4, 4, 4, 20, 4, 4, 1, 3, 19, 6, 1, 1, 4, 6, 1, 3, 3, 3, 36, 11, 9, 6, 5, 9,
- 8, 6, 6, 16, 4, 4, 4, 3, 6, 3, 1, 1, 1, 1, 2, 1, 30, 2, 2, 2, 10, 6, 6, 6, 5, 2, 2, 2, 11, 7, 18, 7, 5, 2, 2, 2, 12, 8, 2, 2, 2,
- 2, 106,14, 14, 14, 5, 7, 3, 2, 2, 6, 5, 5, 5, 5, 14, 4, 4, 4, 9, 7, 7, 2, 44, 5, 5, 5, 2, 1, 5, 5, 4, 4, 4, 8, 1, 1, 5, 2, 4, 4,
- 3, 15, 4, 4, 4, 11, 3, 3, 8, 8, 8, 8, 5, 3, 3, 10, 8, 7, 7, 7, 7, 19, 9, 9, 9, 6, 2, 2, 2, 7, 7, 7, 1, 1, 1, 1, 18, 4, 3, 1, 7,
- 6, 4, 24, 1, 6, 5, 5, 12, 4, 3, 1, 1, 1, 1, 4, 5, 5, 8, 2, 9, 20, 5, 2, 2, 3, 5, 10, 5, 3, 2, 32, 2, 7, 1, 13, 4, 3, 2, 44, 3, 3,
- 2, 6, 4, 4, 4, 3, 3, 3, 4, 3, 3, 7, 6, 6, 6, 4, 4, 4, 4, 12, 3, 5, 2, 3, 2, 16, 6, 5, 4, 4, 34, 3, 4, 3, 4, 5, 12, 4, 4, 4, 4,
- 5, 5, 5, 2, 15, 3, 4, 6, 3, 9, 4, 3, 7, 5, 2, 10, 4, 2, 2, 18, 3, 7, 3, 28, 6, 4, 5, 4, 11, 10, 3, 2, 4, 17, 11, 6, 3, 1, 13, 6, 6,
- 4, 74, 3, 5, 7, 2, 5, 7, 3, 5, 3, 3, 2, 12, 4, 3, 5, 11, 5, 4, 4, 4, 4, 4, 7, 3, 3, 2, 2, 2, 2, 140,2, 1, 1, 20, 19, 13, 9, 2, 4,
- 4, 20, 12, 8, 19, 1, 16, 11, 11, 5, 19, 2, 2, 15, 14, 4, 3, 2, 2, 23, 10, 6, 6, 7, 7, 7, 6, 6, 6, 6, 6, 4, 2, 30, 4, 4, 6, 4, 5, 5, 5,
- 6, 161,25, 7, 6, 3, 1, 22, 15, 7, 7, 10, 8, 3, 50, 3, 2, 1, 1, 1, 1, 1, 1, 8, 8, 6, 4, 9, 5, 12, 11, 9, 9, 3, 15, 13, 9, 6, 3, 2, 8,
- 2, 3, 15, 10, 4, 4, 6, 4, 5, 3, 24, 19, 17, 7, 4, 2, 2, 2, 59, 13, 6, 5, 5, 5, 5, 3, 8, 7, 6, 5, 1, 1, 4, 6, 3, 6, 4, 2, 2, 6, 4,
- 31, 29, 9, 3, 4, 3, 9, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 12, 3, 3, 2, 10, 4, 2, 15, 3, 2, 6, 2, 4, 3, 2, 8, 17, 4, 2, 4, 4, 4, 4,
- 3, 98, 6, 2, 2, 4, 3, 3, 1, 1, 1, 5, 4, 12, 3, 8, 6, 6, 8, 4, 4, 6, 4, 3, 3, 2, 4, 13, 2, 2, 6, 5, 12, 7, 4, 3, 3, 4, 4, 4, 4,
- 4, 8, 6, 2, 2, 31, 2, 5, 4, 7, 4, 2, 23, 8, 6, 3, 3, 2, 2, 17, 6, 7, 7, 4, 4, 4, 17, 3, 1, 2, 124,39, 17, 12, 5, 5, 6, 3, 3, 3, 7,
- 3, 19, 5, 5, 3, 3, 3, 39, 5, 11, 7, 7, 7, 3, 4, 4, 4, 3, 8, 3, 9, 3, 3, 3, 3, 153,33, 6, 6, 5, 9, 4, 22, 7, 5, 8, 7, 5, 2, 37, 2,
- 2, 15, 7, 7, 4, 5, 4, 3, 9, 5, 2, 30, 5, 5, 5, 4, 2, 1, 4, 5, 5, 8, 4, 3, 2, 200,21, 2, 3, 1, 1, 25, 13, 7, 3, 2, 4, 28, 10, 3, 4,
- 4, 8, 4, 8, 5, 2, 3, 5, 10, 5, 2, 2, 2, 20, 3, 9, 5, 22, 2, 1, 5, 6, 6, 9, 2, 1, 1, 1, 19, 5, 4, 2, 2, 2, 6, 2, 2, 1, 2, 8, 2,
- 24, 3, 3, 3, 2, 4, 4, 13, 9, 9, 9, 9, 5, 2, 2, 238,26, 3, 2, 2, 9, 5, 3, 3, 3, 5, 37, 12, 8, 4, 6, 4, 7, 5, 5, 1, 1, 1, 3, 3, 5,
- 4, 4, 4, 2, 3, 35, 13, 7, 6, 6, 5, 13, 10, 10, 3, 3, 2, 23, 2, 2, 8, 8, 10, 5, 5, 3, 3, 3, 7, 4, 54, 19, 18, 10, 10, 10, 6, 8, 15, 2, 3,
- 3, 3, 20, 2, 2, 10, 10, 10, 3, 4, 3, 3, 3, 3, 5, 3, 3, 31, 12, 11, 11, 7, 5, 5, 3, 2, 2, 1, 6, 3, 3, 3, 20, 20, 2, 5, 13, 5, 5, 5, 3,
- 19, 8, 2, 1, 2, 2, 2, 3, 4, 2, 16, 5, 3, 3, 3, 7, 6, 57, 8, 7, 7, 7, 2, 4, 6, 6, 6, 12, 4, 7, 12, 11, 10, 5, 13, 4, 3, 2, 2, 45, 18,
- 13, 10, 5, 3, 3, 13, 13, 3, 3, 5, 3, 2, 30, 9, 4, 4, 9, 9, 6, 5, 6, 5, 5, 5, 44, 15, 10, 10, 3, 7, 4, 4, 17, 17, 8, 5, 9, 6, 1, 6, 3,
- 1, 59, 12, 4, 4, 4, 7, 2, 2, 12, 9, 19, 5, 5, 5, 8, 3, 3, 1, 29, 1, 1, 1, 5, 5, 2, 2, 12, 1, 4, 3, 3, 3, 1, 1, 1, 1, 173,32, 12, 4,
- 6, 7, 7, 3, 2, 11, 3, 3, 10, 2, 2, 1, 31, 8, 5, 5, 4, 10, 4, 10, 8, 9, 3, 2, 47, 15, 11, 7, 3, 1, 1, 5, 1, 1, 11, 8, 7, 15, 2, 4, 3,
- 3, 4, 4, 4, 4, 4, 3, 3, 3, 2, 10, 4, 3, 2, 6, 6, 6, 3, 5, 3, 40, 3, 3, 8, 8, 1, 11, 3, 10, 4, 2, 157,11, 3, 59, 18, 4, 4, 3, 2, 6,
- 27, 2, 6, 4, 10, 5, 48, 11, 9, 2, 5, 14, 10, 7, 7, 7, 7, 10, 6, 6, 30, 23, 12, 2, 2, 2, 2, 10, 10, 9, 9, 4, 3, 24, 7, 5, 2, 5, 4, 4, 4,
- 5, 4, 4, 13, 2, 4, 4, 34, 6, 1, 3, 1, 1, 1, 18, 8, 4, 6, 3, 2, 15, 5, 4, 2, 4, 3, 74, 3, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 1, 2, 21,
- 1, 11, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 15, 3, 1, 1, 1, 1, 1, 1, 6, 3, 3, 3, 3, 3, 4, 3, 3, 3,
- 10, 5, 3, 1, 1, 1, 1, 3, 2, 2, 3, 1, 1, 1, 1, 174,9, 1, 4, 1, 4, 3, 3, 3, 1, 42, 5, 2, 11, 10, 3, 2, 1, 4, 2, 7, 4, 4, 4, 4, 3,
- 4, 4, 4, 4, 2, 10, 8, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, 1, 1, 29, 2, 2, 22, 2, 11, 2, 7, 2, 2, 2, 2, 3, 3, 3, 1, 3, 1, 1, 1, 43, 4,
- 21, 3, 8, 4, 2, 2, 2, 2, 2, 4, 3, 8, 4, 3, 3, 1, 1, 1, 10, 3, 3, 20, 7, 4, 5, 5, 16, 3, 4, 47, 9, 2, 9, 2, 1, 3, 10, 3, 4, 4, 8,
- 1, 1, 4, 2, 154,11, 7, 7, 15, 5, 4, 8, 4, 4, 4, 4, 68, 23, 21, 17, 3, 3, 1, 1, 15, 3, 4, 4, 5, 6, 3, 3, 3, 44, 3, 19, 5, 4, 4, 5, 3,
- 3, 3, 2, 2, 5, 6, 1, 2, 75, 18, 6, 3, 3, 7, 7, 19, 5, 5, 16, 11, 4, 10, 6, 6, 6, 5, 2, 96, 8, 5, 5, 3, 15, 7, 1, 1, 3, 2, 6, 2, 1,
- 1, 3, 2, 5, 3, 7, 5, 4, 6, 3, 3, 1, 1, 1, 1, 2, 6, 17, 5, 3, 1, 2, 6, 1, 3, 28, 4, 3, 3, 10, 2, 6, 5, 85, 8, 2, 24, 7, 3, 7, 3,
- 26, 23, 3, 2, 2, 3, 2, 2, 4, 3, 10, 4, 6, 3, 2, 6, 1, 1, 1, 1, 6, 2, 2, 2, 1, 11, 3, 1, 17, 6, 2, 6, 3, 29, 3, 3, 2, 3, 2, 2, 4,
- 1, 114,7, 3, 2, 9, 3, 3, 3, 13, 5, 3, 12, 2, 4, 50, 1, 2, 11, 3, 4, 2, 2, 3, 8, 6, 4, 3, 3, 2, 4, 2, 3, 8, 5, 1, 1, 1, 1, 1, 25,
- 2, 2, 2, 2, 6, 48, 3, 2, 6, 5, 5, 4, 3, 22, 12, 3, 4, 2, 2, 1, 1, 81, 4, 4, 8, 2, 1, 12, 4, 3, 6, 12, 4, 1, 1, 2, 9, 11, 2, 4, 54,
- 5, 9, 9, 3, 5, 2, 1, 1, 2, 14, 7, 4, 3, 1, 1, 3, 7, 5, 5, 2, 8, 90, 18, 3, 1, 11, 56, 7, 4, 36, 6, 2, 2, 2, 1, 3, 4, 4, 6, 8, 5,
- 2, 2, 2, 2, 2, 21, 11, 3, 4, 40, 4, 3, 3, 3, 3, 2, 6, 6, 2, 3, 2, 3, 2, 2, 1, 3, 1, 1, 1, 1, 1, 5, 2, 2, 2, 4, 2, 2, 1, 1, 1,
- 1, 1, 3, 2, 1, 1, 6, 2, 2, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 5, 8, 4, 2, 74, 5, 5, 37, 1, 3, 2, 2, 2, 2, 2, 2,
- 7, 3, 4, 7, 1, 4, 1, 9, 4, 170,14, 2, 5, 1, 1, 23, 8, 6, 8, 57, 2, 43, 34, 5, 4, 5, 3, 1, 35, 6, 6, 4, 3, 3, 2, 18, 4, 3, 4, 2, 1,
- 10, 7, 2, 12, 10, 2, 8, 6, 6, 167,4, 8, 3, 32, 5, 15, 1, 1, 3, 3, 1, 4, 1, 3, 2, 2, 2, 111,1, 1, 2, 6, 1, 2, 2, 2, 3, 2, 2, 2, 2,
- 28, 2, 18, 3, 7, 2, 3, 6, 3, 3, 4, 10, 6, 4, 2, 3, 16, 2, 2, 2, 2, 2, 126,12, 4, 11, 6, 38, 2, 2, 2, 3, 11, 6, 7, 4, 4, 4, 18, 6, 3,
- 2, 2, 2, 3, 4, 3, 25, 4, 3, 20, 13, 3, 7, 4, 4, 4, 77, 4, 5, 4, 12, 7, 1, 3, 5, 4, 3, 2, 6, 4, 15, 2, 3, 5, 10, 1, 1, 1, 5, 3, 1,
- 7, 3, 3, 1, 53, 9, 2, 4, 13, 8, 6, 5, 2, 5, 5, 2, 2, 2, 5, 1, 1, 6, 5, 1, 1, 1, 48, 4, 2, 5, 2, 2, 11, 3, 3, 1, 11, 4, 4, 3, 2,
- 1, 1, 2, 2, 2, 1, 7, 6, 2, 12, 2, 2, 4, 3, 3, 96, 9, 6, 10, 2, 2, 2, 10, 5, 5, 45, 4, 15, 8, 2, 2, 2, 1, 10, 7, 5, 3, 5, 5, 156,91,
- 5, 4, 4, 3, 67, 5, 3, 7, 16, 4, 2, 3, 11, 4, 5, 9, 9, 7, 3, 4, 4, 8, 2, 15, 2, 1, 11, 4, 4, 3, 3, 2, 5, 2, 3, 6, 2, 4, 73, 14, 11,
- 10, 2, 2, 2, 6, 7, 1, 1, 1, 2, 1, 1, 1, 12, 3, 4, 7, 4, 2, 1, 1, 9, 4, 6, 76, 3, 1, 15, 11, 2, 13, 2, 4, 3, 2, 12, 4, 1, 2, 6, 14,
- 4, 16, 7, 3, 3, 2, 3, 3, 3, 15, 3, 2, 2, 1, 1, 43, 2, 14, 7, 4, 3, 8, 5, 3, 5, 4, 2, 14, 2, 8, 127,5, 21, 2, 4, 3, 3, 10, 5, 1, 2,
- 12, 3, 8, 4, 4, 54, 15, 3, 4, 4, 2, 3, 3, 3, 3, 5, 3, 2, 3, 4, 1, 1, 2, 2, 3, 3, 4, 2, 2, 2, 1, 7, 5, 4, 8, 3, 24, 3, 3, 1, 6,
- 2, 5, 3, 12, 2, 2, 2, 6, 1, 3, 2, 2, 4, 57, 4, 20, 7, 6, 4, 14, 2, 5, 3, 3, 3, 4, 19, 4, 5, 1, 2, 3, 3, 1, 3, 126,18, 4, 3, 4, 11,
- 4, 3, 3, 44, 5, 3, 16, 5, 5, 7, 2, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 2, 2, 1, 2, 2, 10, 4, 4, 2, 20, 7, 3, 5, 3, 3, 2, 2, 2, 7, 1,
- 5, 4, 1, 128,3, 2, 1, 4, 19, 5, 13, 2, 2, 1, 2, 3, 2, 2, 6, 3, 1, 1, 26, 22, 4, 3, 5, 3, 3, 2, 5, 3, 25, 7, 10, 6, 2, 21, 7, 4, 4,
- 2, 2, 21, 3, 1, 12, 3, 8, 4, 2, 2, 50, 3, 4, 3, 1, 4, 10, 1, 11, 5, 3, 2, 6, 4, 19, 8, 7, 6, 4, 4, 3, 3, 35, 14, 12, 3, 2, 3, 1, 1,
- 2, 5, 2, 27, 6, 3, 7, 3, 2, 3, 3, 6, 1, 1, 4, 4, 3, 2, 15, 2, 1, 1, 2, 2, 2, 10, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 10, 3, 85, 8, 5,
- 3, 3, 12, 8, 7, 2, 21, 9, 6, 22, 2, 3, 2, 9, 4, 2, 5, 3, 2, 1, 5, 2, 16, 12, 2, 1, 3, 74, 7, 11, 4, 2, 15, 3, 3, 15, 2, 2, 2, 2, 2,
- 5, 2, 6, 5, 6, 3, 39, 3, 5, 4, 5, 4, 7, 3, 7, 3, 42, 5, 2, 25, 2, 7, 5, 2, 3, 4, 4, 36, 8, 7, 5, 15, 5, 5, 2, 17, 7, 2, 1, 18, 1,
- 6, 5, 1, 5, 2, 34, 2, 18, 4, 5, 4, 1, 6, 69, 4, 12, 4, 3, 5, 3, 2, 5, 4, 9, 3, 4, 7, 4, 14, 3, 2, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1,
- 1, 1, 1, 1, 1, 76, 1, 5, 4, 2, 17, 3, 3, 3, 1, 7, 5, 2, 2, 2, 3, 15, 8, 5, 4, 2, 3, 8, 2, 2, 30, 4, 8, 4, 2, 6, 4, 4, 5, 157,4,
- 12, 8, 2, 2, 6, 29, 2, 2, 4, 7, 3, 4, 7, 3, 4, 4, 3, 3, 46, 3, 17, 9, 7, 9, 6, 4, 8, 3, 2, 2, 1, 35, 5, 2, 6, 7, 4, 3, 10, 2, 63,
- 7, 2, 4, 2, 2, 25, 3, 11, 5, 4, 4, 4, 4, 4, 3, 3, 2, 3, 10, 2, 4, 2, 2, 2, 2, 6, 7, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 2, 1,
- 1, 132,16, 11, 15, 5, 3, 2, 4, 1, 16, 2, 9, 3, 7, 4, 2, 2, 3, 2, 10, 2, 2, 12, 5, 1, 1, 4, 5, 6, 11, 5, 7, 6, 2, 4, 7, 3, 3, 9, 1,
- 1, 1, 5, 1, 2, 2, 2, 1, 1, 8, 2, 14, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 12, 2, 1, 6, 6, 6, 6, 5, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2,
- 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 39, 6, 4, 1, 1, 8, 1, 1, 1, 1, 4, 2, 9, 1, 1, 3,
- 4, 107,30, 4, 3, 3, 2, 1, 11, 3, 3, 9, 7, 5, 2, 15, 3, 2, 6, 14, 8, 7, 4, 15, 4, 3, 8, 11, 4, 5, 4, 2, 80, 7, 1, 1, 10, 2, 5, 3, 3,
- 1, 1, 21, 7, 1, 2, 5, 3, 12, 3, 2, 1, 1, 23, 8, 6, 6, 5, 4, 10, 6, 6, 6, 2, 2, 2, 2, 78, 8, 1, 16, 4, 7, 7, 1, 6, 4, 14, 7, 5, 11,
- 3, 3, 3, 3, 2, 24, 1, 4, 3, 6, 1, 1, 1, 1, 5, 2, 1, 56, 9, 4, 2, 19, 2, 4, 1, 1, 1, 9, 3, 6, 1, 7, 4, 3, 2, 53, 14, 2, 3, 4, 2,
- 11, 4, 3, 6, 4, 3, 3, 2, 3, 3, 2, 2, 4, 5, 3, 2, 5, 42, 11, 2, 4, 3, 4, 9, 4, 2, 2, 4, 4, 3, 1, 1, 89, 3, 6, 4, 20, 2, 3, 3, 5,
- 5, 2, 27, 16, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 6, 2, 2, 2, 7, 4, 54, 14, 2, 2, 3, 5, 4, 3, 7, 2, 2, 5,
- 3, 2, 10, 5, 4, 65, 2, 2, 6, 3, 3, 3, 2, 18, 10, 6, 4, 3, 4, 4, 4, 6, 4, 2, 4, 3, 8, 3, 3, 3, 35, 4, 4, 5, 4, 2, 12, 1, 1, 1, 1,
- 2, 7, 3, 2, 38, 3, 2, 2, 4, 2, 4, 9, 5, 3, 3, 3, 2, 31, 7, 6, 5, 2, 7, 19, 3, 8, 7, 27, 5, 11, 3, 3, 12, 3, 41, 4, 2, 5, 6, 4, 2,
- 2, 4, 4, 17, 8, 46, 24, 7, 6, 5, 4, 9, 4, 4, 7, 10, 2, 3, 2, 5, 2, 11, 2, 1, 253,4, 1, 43, 3, 2, 13, 3, 6, 4, 11, 4, 3, 21, 5, 1, 6,
- 3, 4, 2, 12, 3, 2, 2, 14, 2, 1, 4, 2, 37, 6, 4, 2, 3, 5, 15, 19, 3, 1, 1, 34, 9, 2, 3, 5, 3, 7, 6, 2, 2, 2, 5, 4, 15, 3, 4, 6, 6,
- 5, 2, 24, 2, 10, 9, 6, 5, 4, 2, 3, 18, 1, 1, 6, 2, 2, 2, 2, 3, 36, 4, 13, 6, 4, 17, 9, 1, 1, 5, 177,15, 4, 12, 7, 2, 30, 3, 3, 5, 13,
- 3, 6, 3, 2, 10, 3, 2, 20, 2, 3, 2, 6, 8, 3, 5, 20, 3, 4, 3, 2, 15, 4, 6, 3, 3, 7, 6, 2, 3, 2, 5, 4, 4, 9, 10, 3, 10, 2, 1, 2, 3,
- 3, 2, 38, 8, 5, 3, 1, 1, 5, 4, 1, 6, 4, 4, 4, 3, 2, 1, 15, 7, 3, 3, 2, 17, 8, 5, 3, 16, 4, 5, 5, 1, 1, 3, 4, 3, 2, 1, 9, 3, 1,
- 11, 2, 3, 1, 1, 1, 3, 20, 3, 2, 1, 1, 2, 1, 7, 3, 125,5, 5, 4, 36, 5, 4, 2, 2, 2, 2, 11, 4, 2, 12, 5, 5, 4, 4, 26, 3, 1, 1, 1, 1,
- 7, 6, 4, 5, 2, 1, 5, 2, 2, 28, 2, 2, 2, 1, 2, 11, 3, 5, 2, 4, 5, 3, 5, 6, 1, 45, 4, 2, 1, 3, 1, 9, 5, 4, 5, 3, 13, 3, 5, 4, 4,
- 1, 1, 1, 2, 254,79, 5, 2, 6, 3, 3, 2, 2, 16, 3, 2, 3, 2, 2, 11, 6, 3, 3, 6, 2, 2, 4, 2, 1, 1, 14, 3, 3, 3, 6, 1, 2, 2, 2, 21, 3,
- 3, 10, 8, 4, 1, 10, 2, 2, 3, 11, 2, 5, 2, 12, 4, 3, 3, 2, 10, 4, 2, 6, 2, 7, 4, 12, 3, 3, 4, 11, 3, 4, 1, 12, 5, 3, 5, 15, 8, 7, 4,
- 4, 6, 3, 102,10, 2, 2, 1, 1, 35, 28, 17, 9, 8, 4, 3, 2, 2, 2, 6, 4, 3, 1, 1, 2, 1, 2, 2, 2, 28, 7, 4, 3, 4, 5, 4, 5, 142,1, 1, 21,
- 13, 4, 1, 2, 2, 8, 7, 4, 8, 4, 3, 3, 6, 1, 1, 1, 3, 3, 27, 11, 9, 9, 8, 3, 3, 3, 3, 2, 8, 2, 6, 3, 5, 2, 15, 3, 9, 8, 4, 3, 3,
- 21, 19, 13, 6, 4, 8, 5, 1, 1, 1, 1, 1, 3, 98, 3, 10, 7, 7, 2, 7, 7, 4, 14, 4, 9, 1, 1, 1, 1, 1, 4, 3, 15, 2, 1, 6, 4, 10, 4, 4, 2,
- 5, 5, 2, 105,32, 8, 6, 1, 7, 4, 7, 3, 2, 20, 1, 1, 7, 5, 1, 31, 3, 3, 10, 5, 5, 17, 2, 3, 3, 43, 13, 3, 2, 1, 3, 5, 4, 1, 2, 3, 20,
- 3, 2, 2, 10, 5, 5, 5, 5, 50, 10, 4, 2, 7, 4, 7, 1, 4, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 2, 6, 1, 1, 2, 3, 2, 242,5, 4, 4, 1, 9, 6,
- 3, 5, 2, 2, 3, 40, 5, 6, 7, 10, 5, 6, 3, 20, 6, 9, 3, 3, 39, 1, 1, 14, 6, 6, 3, 5, 3, 3, 2, 8, 1, 1, 1, 6, 7, 4, 2, 8, 4, 1, 1,
- 1, 80, 4, 2, 1, 6, 2, 4, 3, 6, 10, 3, 2, 8, 4, 8, 3, 3, 5, 2, 12, 4, 3, 5, 4, 2, 12, 2, 6, 5, 5, 11, 6, 5, 4, 2, 1, 27, 2, 4, 10,
- 2, 7, 7, 4, 3, 164,10, 2, 10, 5, 2, 10, 7, 3, 2, 8, 4, 9, 4, 1, 12, 2, 2, 9, 4, 3, 9, 4, 3, 4, 8, 3, 2, 15, 2, 2, 2, 7, 4, 26, 4,
- 2, 3, 2, 2, 4, 11, 4, 6, 21, 4, 2, 1, 4, 2, 2, 1, 1, 1, 171,3, 7, 4, 6, 8, 7, 6, 3, 1, 1, 1, 25, 7, 3, 1, 9, 6, 3, 17, 14, 6, 3,
- 3, 2, 20, 6, 3, 4, 2, 14, 2, 1, 5, 3, 9, 3, 4, 26, 4, 5, 2, 1, 1, 1, 1, 4, 3, 1, 13, 4, 4, 1, 3, 2, 2, 1, 1, 1, 118,8, 2, 4, 2,
+ 5, 5, 3, 10, 10, 9, 8, 2, 130,8, 8, 8, 3, 11, 11, 10, 5, 5, 3, 1, 2, 2, 5, 4, 94, 6, 5, 4, 4, 3, 81, 4, 3, 3, 2, 2, 1, 1, 1, 1, 63,
+ 5, 12, 6, 5, 5, 4, 5, 3, 3, 2, 13, 9, 7, 6, 5, 2, 4, 3, 1, 1, 1, 2, 2, 2, 2, 2, 11, 2, 2, 2, 5, 4, 1, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 13, 3, 81, 13, 2, 20, 4, 13, 3, 8, 16, 5, 5, 15, 3, 6, 2, 2, 2, 7, 2, 4, 105,4, 3, 3, 28, 6, 4, 4, 2,
+ 2, 2, 4, 6, 3, 23, 5, 11, 9, 2, 2, 2, 2, 2, 17, 5, 2, 2, 17, 7, 5, 2, 3, 1, 4, 4, 4, 3, 5, 177,12, 2, 3, 3, 5, 16, 3, 3, 2, 3, 2,
+ 77, 19, 4, 4, 11, 5, 13, 8, 7, 30, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 3, 1, 1, 5, 5, 4, 3, 5, 17, 5, 2, 6,
+ 3, 3, 3, 9, 2, 2, 5, 4, 3, 6, 4, 2, 2, 18, 2, 3, 4, 47, 13, 5, 2, 13, 4, 3, 3, 2, 5, 2, 2, 2, 6, 70, 11, 8, 4, 2, 8, 4, 4, 4, 3,
+ 3, 5, 4, 5, 6, 3, 5, 4, 2, 8, 5, 35, 8, 5, 5, 7, 4, 3, 146,2, 2, 14, 10, 7, 3, 4, 2, 3, 25, 1, 3, 2, 4, 4, 2, 2, 3, 3, 8, 3, 2,
+ 54, 10, 9, 6, 3, 4, 6, 4, 4, 3, 4, 4, 4, 3, 4, 20, 4, 4, 3, 4, 46, 19, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 3, 3, 3, 7,
+ 2, 4, 2, 2, 4, 1, 1, 1, 3, 3, 3, 1, 33, 10, 4, 2, 2, 4, 3, 2, 7, 3, 2, 2, 2, 2, 2, 30, 5, 2, 13, 6, 4, 5, 5, 220,2, 40, 3, 3, 2,
+ 4, 3, 3, 2, 3, 5, 8, 3, 2, 2, 2, 3, 2, 2, 25, 2, 3, 9, 8, 2, 1, 2, 1, 4, 4, 4, 3, 2, 23, 5, 6, 2, 5, 3, 1, 19, 1, 1, 2, 3, 8,
+ 5, 2, 4, 1, 1, 1, 4, 3, 8, 3, 3, 3, 6, 5, 2, 12, 7, 22, 8, 1, 3, 1, 3, 4, 2, 28, 4, 2, 3, 3, 6, 2, 2, 2, 3, 3, 208,12, 3, 1, 1,
+ 2, 1, 22, 2, 13, 7, 6, 3, 46, 5, 4, 2, 4, 4, 14, 4, 8, 6, 9, 3, 46, 4, 2, 1, 34, 2, 27, 5, 4, 8, 7, 2, 4, 3, 1, 1, 1, 10, 5, 5, 4,
+ 4, 8, 3, 2, 16, 3, 6, 6, 4, 2, 2, 4, 85, 8, 7, 1, 2, 6, 3, 3, 1, 1, 1, 15, 9, 3, 3, 8, 21, 4, 1, 1, 7, 3, 2, 4, 3, 3, 3, 2, 2,
+ 1, 1, 1, 10, 6, 6, 2, 2, 4, 3, 3, 20, 3, 6, 6, 3, 2, 112,3, 5, 13, 5, 1, 1, 6, 26, 3, 5, 2, 5, 4, 3, 2, 5, 4, 3, 2, 2, 5, 4, 4,
+ 4, 3, 4, 9, 3, 1, 7, 3, 1, 2, 1, 19, 10, 3, 3, 4, 2, 3, 163,8, 2, 1, 3, 7, 4, 1, 10, 1, 4, 2, 29, 4, 3, 2, 1, 2, 5, 3, 3, 3, 35,
+ 3, 3, 1, 1, 22, 20, 16, 16, 11, 6, 3, 3, 5, 3, 2, 5, 4, 4, 1, 35, 5, 4, 3, 1, 7, 2, 3, 11, 9, 4, 2, 1, 1, 3, 3, 2, 6, 2, 2, 50, 6,
+ 3, 4, 2, 2, 3, 2, 4, 2, 5, 2, 4, 2, 8, 4, 4, 3, 2, 5, 2, 2, 1, 1, 1, 71, 10, 5, 2, 1, 1, 1, 40, 4, 27, 2, 8, 2, 17, 1, 1, 1, 1,
+ 1, 7, 3, 32, 5, 2, 1, 4, 3, 2, 4, 10, 4, 4, 1, 68, 6, 1, 1, 1, 6, 4, 2, 4, 6, 3, 3, 2, 10, 7, 4, 10, 4, 6, 6, 34, 4, 1, 1, 2, 7,
+ 3, 8, 6, 3, 3, 7, 3, 9, 1, 1, 2, 2, 1, 1, 3, 10, 1, 3, 6, 2, 1, 1, 1, 1, 1, 1, 1, 243,2, 2, 28, 7, 3, 3, 18, 10, 4, 4, 5, 33, 1,
+ 5, 9, 7, 5, 1, 1, 1, 1, 1, 1, 1, 3, 2, 5, 5, 5, 5, 5, 12, 5, 52, 24, 4, 10, 3, 3, 8, 4, 3, 1, 1, 1, 3, 4, 6, 8, 3, 3, 3, 1, 16,
+ 9, 5, 5, 5, 3, 1, 1, 1, 1, 1, 21, 3, 6, 35, 10, 9, 3, 3, 3, 19, 10, 5, 4, 4, 5, 5, 5, 3, 1, 5, 1, 1, 7, 4, 2, 2, 94, 6, 2, 5, 4,
+ 1, 34, 8, 5, 19, 8, 5, 4, 5, 13, 4, 3, 5, 5, 9, 5, 4, 4, 4, 4, 20, 4, 4, 1, 3, 19, 6, 1, 1, 4, 6, 1, 3, 3, 3, 36, 11, 9, 6, 5, 9,
+ 8, 6, 6, 16, 4, 4, 4, 3, 6, 3, 1, 1, 1, 1, 2, 1, 30, 2, 2, 2, 10, 6, 6, 6, 5, 2, 2, 2, 11, 7, 18, 7, 5, 2, 2, 2, 12, 8, 2, 2, 2,
+ 2, 106,14, 14, 14, 5, 7, 3, 2, 2, 6, 5, 5, 5, 5, 14, 4, 4, 4, 9, 7, 7, 2, 44, 5, 5, 5, 2, 1, 5, 5, 4, 4, 4, 8, 1, 1, 5, 2, 4, 4,
+ 3, 15, 4, 4, 4, 11, 3, 3, 8, 8, 8, 8, 5, 3, 3, 10, 8, 7, 7, 7, 7, 19, 9, 9, 9, 6, 2, 2, 2, 7, 7, 7, 1, 1, 1, 1, 18, 4, 3, 1, 7,
+ 6, 4, 24, 1, 6, 5, 5, 12, 4, 3, 1, 1, 1, 1, 4, 5, 5, 8, 2, 9, 20, 5, 2, 2, 3, 5, 10, 5, 3, 2, 32, 2, 7, 1, 13, 4, 3, 2, 44, 3, 3,
+ 2, 6, 4, 4, 4, 3, 3, 3, 4, 3, 3, 7, 6, 6, 6, 4, 4, 4, 4, 12, 3, 5, 2, 3, 2, 16, 6, 5, 4, 4, 34, 3, 4, 3, 4, 5, 12, 4, 4, 4, 4,
+ 5, 5, 5, 2, 15, 3, 4, 6, 3, 9, 4, 3, 7, 5, 2, 10, 4, 2, 2, 18, 3, 7, 3, 28, 6, 4, 5, 4, 11, 10, 3, 2, 4, 17, 11, 6, 3, 1, 13, 6, 6,
+ 4, 74, 3, 5, 7, 2, 5, 7, 3, 5, 3, 3, 2, 12, 4, 3, 5, 11, 5, 4, 4, 4, 4, 4, 7, 3, 3, 2, 2, 2, 2, 140,2, 1, 1, 20, 19, 13, 9, 2, 4,
+ 4, 20, 12, 8, 19, 1, 16, 11, 11, 5, 19, 2, 2, 15, 14, 4, 3, 2, 2, 23, 10, 6, 6, 7, 7, 7, 6, 6, 6, 6, 6, 4, 2, 30, 4, 4, 6, 4, 5, 5, 5,
+ 6, 161,25, 7, 6, 3, 1, 22, 15, 7, 7, 10, 8, 3, 50, 3, 2, 1, 1, 1, 1, 1, 1, 8, 8, 6, 4, 9, 5, 12, 11, 9, 9, 3, 15, 13, 9, 6, 3, 2, 8,
+ 2, 3, 15, 10, 4, 4, 6, 4, 5, 3, 24, 19, 17, 7, 4, 2, 2, 2, 59, 13, 6, 5, 5, 5, 5, 3, 8, 7, 6, 5, 1, 1, 4, 6, 3, 6, 4, 2, 2, 6, 4,
+ 31, 29, 9, 3, 4, 3, 9, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 12, 3, 3, 2, 10, 4, 2, 15, 3, 2, 6, 2, 4, 3, 2, 8, 17, 4, 2, 4, 4, 4, 4,
+ 3, 98, 6, 2, 2, 4, 3, 3, 1, 1, 1, 5, 4, 12, 3, 8, 6, 6, 8, 4, 4, 6, 4, 3, 3, 2, 4, 13, 2, 2, 6, 5, 12, 7, 4, 3, 3, 4, 4, 4, 4,
+ 4, 8, 6, 2, 2, 31, 2, 5, 4, 7, 4, 2, 23, 8, 6, 3, 3, 2, 2, 17, 6, 7, 7, 4, 4, 4, 17, 3, 1, 2, 124,39, 17, 12, 5, 5, 6, 3, 3, 3, 7,
+ 3, 19, 5, 5, 3, 3, 3, 39, 5, 11, 7, 7, 7, 3, 4, 4, 4, 3, 8, 3, 9, 3, 3, 3, 3, 153,33, 6, 6, 5, 9, 4, 22, 7, 5, 8, 7, 5, 2, 37, 2,
+ 2, 15, 7, 7, 4, 5, 4, 3, 9, 5, 2, 30, 5, 5, 5, 4, 2, 1, 4, 5, 5, 8, 4, 3, 2, 200,21, 2, 3, 1, 1, 25, 13, 7, 3, 2, 4, 28, 10, 3, 4,
+ 4, 8, 4, 8, 5, 2, 3, 5, 10, 5, 2, 2, 2, 20, 3, 9, 5, 22, 2, 1, 5, 6, 6, 9, 2, 1, 1, 1, 19, 5, 4, 2, 2, 2, 6, 2, 2, 1, 2, 8, 2,
+ 24, 3, 3, 3, 2, 4, 4, 13, 9, 9, 9, 9, 5, 2, 2, 238,26, 3, 2, 2, 9, 5, 3, 3, 3, 5, 37, 12, 8, 4, 6, 4, 7, 5, 5, 1, 1, 1, 3, 3, 5,
+ 4, 4, 4, 2, 3, 35, 13, 7, 6, 6, 5, 13, 10, 10, 3, 3, 2, 23, 2, 2, 8, 8, 10, 5, 5, 3, 3, 3, 7, 4, 54, 19, 18, 10, 10, 10, 6, 8, 15, 2, 3,
+ 3, 3, 20, 2, 2, 10, 10, 10, 3, 4, 3, 3, 3, 3, 5, 3, 3, 31, 12, 11, 11, 7, 5, 5, 3, 2, 2, 1, 6, 3, 3, 3, 20, 20, 2, 5, 13, 5, 5, 5, 3,
+ 19, 8, 2, 1, 2, 2, 2, 3, 4, 2, 16, 5, 3, 3, 3, 7, 6, 57, 8, 7, 7, 7, 2, 4, 6, 6, 6, 12, 4, 7, 12, 11, 10, 5, 13, 4, 3, 2, 2, 45, 18,
+ 13, 10, 5, 3, 3, 13, 13, 3, 3, 5, 3, 2, 30, 9, 4, 4, 9, 9, 6, 5, 6, 5, 5, 5, 44, 15, 10, 10, 3, 7, 4, 4, 17, 17, 8, 5, 9, 6, 1, 6, 3,
+ 1, 59, 12, 4, 4, 4, 7, 2, 2, 12, 9, 19, 5, 5, 5, 8, 3, 3, 1, 29, 1, 1, 1, 5, 5, 2, 2, 12, 1, 4, 3, 3, 3, 1, 1, 1, 1, 173,32, 12, 4,
+ 6, 7, 7, 3, 2, 11, 3, 3, 10, 2, 2, 1, 31, 8, 5, 5, 4, 10, 4, 10, 8, 9, 3, 2, 47, 15, 11, 7, 3, 1, 1, 5, 1, 1, 11, 8, 7, 15, 2, 4, 3,
+ 3, 4, 4, 4, 4, 4, 3, 3, 3, 2, 10, 4, 3, 2, 6, 6, 6, 3, 5, 3, 40, 3, 3, 8, 8, 1, 11, 3, 10, 4, 2, 157,11, 3, 59, 18, 4, 4, 3, 2, 6,
+ 27, 2, 6, 4, 10, 5, 48, 11, 9, 2, 5, 14, 10, 7, 7, 7, 7, 10, 6, 6, 30, 23, 12, 2, 2, 2, 2, 10, 10, 9, 9, 4, 3, 24, 7, 5, 2, 5, 4, 4, 4,
+ 5, 4, 4, 13, 2, 4, 4, 34, 6, 1, 3, 1, 1, 1, 18, 8, 4, 6, 3, 2, 15, 5, 4, 2, 4, 3, 74, 3, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 1, 2, 21,
+ 1, 11, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 15, 3, 1, 1, 1, 1, 1, 1, 6, 3, 3, 3, 3, 3, 4, 3, 3, 3,
+ 10, 5, 3, 1, 1, 1, 1, 3, 2, 2, 3, 1, 1, 1, 1, 174,9, 1, 4, 1, 4, 3, 3, 3, 1, 42, 5, 2, 11, 10, 3, 2, 1, 4, 2, 7, 4, 4, 4, 4, 3,
+ 4, 4, 4, 4, 2, 10, 8, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, 1, 1, 29, 2, 2, 22, 2, 11, 2, 7, 2, 2, 2, 2, 3, 3, 3, 1, 3, 1, 1, 1, 43, 4,
+ 21, 3, 8, 4, 2, 2, 2, 2, 2, 4, 3, 8, 4, 3, 3, 1, 1, 1, 10, 3, 3, 20, 7, 4, 5, 5, 16, 3, 4, 47, 9, 2, 9, 2, 1, 3, 10, 3, 4, 4, 8,
+ 1, 1, 4, 2, 154,11, 7, 7, 15, 5, 4, 8, 4, 4, 4, 4, 68, 23, 21, 17, 3, 3, 1, 1, 15, 3, 4, 4, 5, 6, 3, 3, 3, 44, 3, 19, 5, 4, 4, 5, 3,
+ 3, 3, 2, 2, 5, 6, 1, 2, 75, 18, 6, 3, 3, 7, 7, 19, 5, 5, 16, 11, 4, 10, 6, 6, 6, 5, 2, 96, 8, 5, 5, 3, 15, 7, 1, 1, 3, 2, 6, 2, 1,
+ 1, 3, 2, 5, 3, 7, 5, 4, 6, 3, 3, 1, 1, 1, 1, 2, 6, 17, 5, 3, 1, 2, 6, 1, 3, 28, 4, 3, 3, 10, 2, 6, 5, 85, 8, 2, 24, 7, 3, 7, 3,
+ 26, 23, 3, 2, 2, 3, 2, 2, 4, 3, 10, 4, 6, 3, 2, 6, 1, 1, 1, 1, 6, 2, 2, 2, 1, 11, 3, 1, 17, 6, 2, 6, 3, 29, 3, 3, 2, 3, 2, 2, 4,
+ 1, 114,7, 3, 2, 9, 3, 3, 3, 13, 5, 3, 12, 2, 4, 50, 1, 2, 11, 3, 4, 2, 2, 3, 8, 6, 4, 3, 3, 2, 4, 2, 3, 8, 5, 1, 1, 1, 1, 1, 25,
+ 2, 2, 2, 2, 6, 48, 3, 2, 6, 5, 5, 4, 3, 22, 12, 3, 4, 2, 2, 1, 1, 81, 4, 4, 8, 2, 1, 12, 4, 3, 6, 12, 4, 1, 1, 2, 9, 11, 2, 4, 54,
+ 5, 9, 9, 3, 5, 2, 1, 1, 2, 14, 7, 4, 3, 1, 1, 3, 7, 5, 5, 2, 8, 90, 18, 3, 1, 11, 56, 7, 4, 36, 6, 2, 2, 2, 1, 3, 4, 4, 6, 8, 5,
+ 2, 2, 2, 2, 2, 21, 11, 3, 4, 40, 4, 3, 3, 3, 3, 2, 6, 6, 2, 3, 2, 3, 2, 2, 1, 3, 1, 1, 1, 1, 1, 5, 2, 2, 2, 4, 2, 2, 1, 1, 1,
+ 1, 1, 3, 2, 1, 1, 6, 2, 2, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 5, 8, 4, 2, 74, 5, 5, 37, 1, 3, 2, 2, 2, 2, 2, 2,
+ 7, 3, 4, 7, 1, 4, 1, 9, 4, 170,14, 2, 5, 1, 1, 23, 8, 6, 8, 57, 2, 43, 34, 5, 4, 5, 3, 1, 35, 6, 6, 4, 3, 3, 2, 18, 4, 3, 4, 2, 1,
+ 10, 7, 2, 12, 10, 2, 8, 6, 6, 167,4, 8, 3, 32, 5, 15, 1, 1, 3, 3, 1, 4, 1, 3, 2, 2, 2, 111,1, 1, 2, 6, 1, 2, 2, 2, 3, 2, 2, 2, 2,
+ 28, 2, 18, 3, 7, 2, 3, 6, 3, 3, 4, 10, 6, 4, 2, 3, 16, 2, 2, 2, 2, 2, 126,12, 4, 11, 6, 38, 2, 2, 2, 3, 11, 6, 7, 4, 4, 4, 18, 6, 3,
+ 2, 2, 2, 3, 4, 3, 25, 4, 3, 20, 13, 3, 7, 4, 4, 4, 77, 4, 5, 4, 12, 7, 1, 3, 5, 4, 3, 2, 6, 4, 15, 2, 3, 5, 10, 1, 1, 1, 5, 3, 1,
+ 7, 3, 3, 1, 53, 9, 2, 4, 13, 8, 6, 5, 2, 5, 5, 2, 2, 2, 5, 1, 1, 6, 5, 1, 1, 1, 48, 4, 2, 5, 2, 2, 11, 3, 3, 1, 11, 4, 4, 3, 2,
+ 1, 1, 2, 2, 2, 1, 7, 6, 2, 12, 2, 2, 4, 3, 3, 96, 9, 6, 10, 2, 2, 2, 10, 5, 5, 45, 4, 15, 8, 2, 2, 2, 1, 10, 7, 5, 3, 5, 5, 156,91,
+ 5, 4, 4, 3, 67, 5, 3, 7, 16, 4, 2, 3, 11, 4, 5, 9, 9, 7, 3, 4, 4, 8, 2, 15, 2, 1, 11, 4, 4, 3, 3, 2, 5, 2, 3, 6, 2, 4, 73, 14, 11,
+ 10, 2, 2, 2, 6, 7, 1, 1, 1, 2, 1, 1, 1, 12, 3, 4, 7, 4, 2, 1, 1, 9, 4, 6, 76, 3, 1, 15, 11, 2, 13, 2, 4, 3, 2, 12, 4, 1, 2, 6, 14,
+ 4, 16, 7, 3, 3, 2, 3, 3, 3, 15, 3, 2, 2, 1, 1, 43, 2, 14, 7, 4, 3, 8, 5, 3, 5, 4, 2, 14, 2, 8, 127,5, 21, 2, 4, 3, 3, 10, 5, 1, 2,
+ 12, 3, 8, 4, 4, 54, 15, 3, 4, 4, 2, 3, 3, 3, 3, 5, 3, 2, 3, 4, 1, 1, 2, 2, 3, 3, 4, 2, 2, 2, 1, 7, 5, 4, 8, 3, 24, 3, 3, 1, 6,
+ 2, 5, 3, 12, 2, 2, 2, 6, 1, 3, 2, 2, 4, 57, 4, 20, 7, 6, 4, 14, 2, 5, 3, 3, 3, 4, 19, 4, 5, 1, 2, 3, 3, 1, 3, 126,18, 4, 3, 4, 11,
+ 4, 3, 3, 44, 5, 3, 16, 5, 5, 7, 2, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 2, 2, 1, 2, 2, 10, 4, 4, 2, 20, 7, 3, 5, 3, 3, 2, 2, 2, 7, 1,
+ 5, 4, 1, 128,3, 2, 1, 4, 19, 5, 13, 2, 2, 1, 2, 3, 2, 2, 6, 3, 1, 1, 26, 22, 4, 3, 5, 3, 3, 2, 5, 3, 25, 7, 10, 6, 2, 21, 7, 4, 4,
+ 2, 2, 21, 3, 1, 12, 3, 8, 4, 2, 2, 50, 3, 4, 3, 1, 4, 10, 1, 11, 5, 3, 2, 6, 4, 19, 8, 7, 6, 4, 4, 3, 3, 35, 14, 12, 3, 2, 3, 1, 1,
+ 2, 5, 2, 27, 6, 3, 7, 3, 2, 3, 3, 6, 1, 1, 4, 4, 3, 2, 15, 2, 1, 1, 2, 2, 2, 10, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 10, 3, 85, 8, 5,
+ 3, 3, 12, 8, 7, 2, 21, 9, 6, 22, 2, 3, 2, 9, 4, 2, 5, 3, 2, 1, 5, 2, 16, 12, 2, 1, 3, 74, 7, 11, 4, 2, 15, 3, 3, 15, 2, 2, 2, 2, 2,
+ 5, 2, 6, 5, 6, 3, 39, 3, 5, 4, 5, 4, 7, 3, 7, 3, 42, 5, 2, 25, 2, 7, 5, 2, 3, 4, 4, 36, 8, 7, 5, 15, 5, 5, 2, 17, 7, 2, 1, 18, 1,
+ 6, 5, 1, 5, 2, 34, 2, 18, 4, 5, 4, 1, 6, 69, 4, 12, 4, 3, 5, 3, 2, 5, 4, 9, 3, 4, 7, 4, 14, 3, 2, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1,
+ 1, 1, 1, 1, 1, 76, 1, 5, 4, 2, 17, 3, 3, 3, 1, 7, 5, 2, 2, 2, 3, 15, 8, 5, 4, 2, 3, 8, 2, 2, 30, 4, 8, 4, 2, 6, 4, 4, 5, 157,4,
+ 12, 8, 2, 2, 6, 29, 2, 2, 4, 7, 3, 4, 7, 3, 4, 4, 3, 3, 46, 3, 17, 9, 7, 9, 6, 4, 8, 3, 2, 2, 1, 35, 5, 2, 6, 7, 4, 3, 10, 2, 63,
+ 7, 2, 4, 2, 2, 25, 3, 11, 5, 4, 4, 4, 4, 4, 3, 3, 2, 3, 10, 2, 4, 2, 2, 2, 2, 6, 7, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 2, 1,
+ 1, 132,16, 11, 15, 5, 3, 2, 4, 1, 16, 2, 9, 3, 7, 4, 2, 2, 3, 2, 10, 2, 2, 12, 5, 1, 1, 4, 5, 6, 11, 5, 7, 6, 2, 4, 7, 3, 3, 9, 1,
+ 1, 1, 5, 1, 2, 2, 2, 1, 1, 8, 2, 14, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 12, 2, 1, 6, 6, 6, 6, 5, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2,
+ 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 39, 6, 4, 1, 1, 8, 1, 1, 1, 1, 4, 2, 9, 1, 1, 3,
+ 4, 107,30, 4, 3, 3, 2, 1, 11, 3, 3, 9, 7, 5, 2, 15, 3, 2, 6, 14, 8, 7, 4, 15, 4, 3, 8, 11, 4, 5, 4, 2, 80, 7, 1, 1, 10, 2, 5, 3, 3,
+ 1, 1, 21, 7, 1, 2, 5, 3, 12, 3, 2, 1, 1, 23, 8, 6, 6, 5, 4, 10, 6, 6, 6, 2, 2, 2, 2, 78, 8, 1, 16, 4, 7, 7, 1, 6, 4, 14, 7, 5, 11,
+ 3, 3, 3, 3, 2, 24, 1, 4, 3, 6, 1, 1, 1, 1, 5, 2, 1, 56, 9, 4, 2, 19, 2, 4, 1, 1, 1, 9, 3, 6, 1, 7, 4, 3, 2, 53, 14, 2, 3, 4, 2,
+ 11, 4, 3, 6, 4, 3, 3, 2, 3, 3, 2, 2, 4, 5, 3, 2, 5, 42, 11, 2, 4, 3, 4, 9, 4, 2, 2, 4, 4, 3, 1, 1, 89, 3, 6, 4, 20, 2, 3, 3, 5,
+ 5, 2, 27, 16, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 6, 2, 2, 2, 7, 4, 54, 14, 2, 2, 3, 5, 4, 3, 7, 2, 2, 5,
+ 3, 2, 10, 5, 4, 65, 2, 2, 6, 3, 3, 3, 2, 18, 10, 6, 4, 3, 4, 4, 4, 6, 4, 2, 4, 3, 8, 3, 3, 3, 35, 4, 4, 5, 4, 2, 12, 1, 1, 1, 1,
+ 2, 7, 3, 2, 38, 3, 2, 2, 4, 2, 4, 9, 5, 3, 3, 3, 2, 31, 7, 6, 5, 2, 7, 19, 3, 8, 7, 27, 5, 11, 3, 3, 12, 3, 41, 4, 2, 5, 6, 4, 2,
+ 2, 4, 4, 17, 8, 46, 24, 7, 6, 5, 4, 9, 4, 4, 7, 10, 2, 3, 2, 5, 2, 11, 2, 1, 253,4, 1, 43, 3, 2, 13, 3, 6, 4, 11, 4, 3, 21, 5, 1, 6,
+ 3, 4, 2, 12, 3, 2, 2, 14, 2, 1, 4, 2, 37, 6, 4, 2, 3, 5, 15, 19, 3, 1, 1, 34, 9, 2, 3, 5, 3, 7, 6, 2, 2, 2, 5, 4, 15, 3, 4, 6, 6,
+ 5, 2, 24, 2, 10, 9, 6, 5, 4, 2, 3, 18, 1, 1, 6, 2, 2, 2, 2, 3, 36, 4, 13, 6, 4, 17, 9, 1, 1, 5, 177,15, 4, 12, 7, 2, 30, 3, 3, 5, 13,
+ 3, 6, 3, 2, 10, 3, 2, 20, 2, 3, 2, 6, 8, 3, 5, 20, 3, 4, 3, 2, 15, 4, 6, 3, 3, 7, 6, 2, 3, 2, 5, 4, 4, 9, 10, 3, 10, 2, 1, 2, 3,
+ 3, 2, 38, 8, 5, 3, 1, 1, 5, 4, 1, 6, 4, 4, 4, 3, 2, 1, 15, 7, 3, 3, 2, 17, 8, 5, 3, 16, 4, 5, 5, 1, 1, 3, 4, 3, 2, 1, 9, 3, 1,
+ 11, 2, 3, 1, 1, 1, 3, 20, 3, 2, 1, 1, 2, 1, 7, 3, 125,5, 5, 4, 36, 5, 4, 2, 2, 2, 2, 11, 4, 2, 12, 5, 5, 4, 4, 26, 3, 1, 1, 1, 1,
+ 7, 6, 4, 5, 2, 1, 5, 2, 2, 28, 2, 2, 2, 1, 2, 11, 3, 5, 2, 4, 5, 3, 5, 6, 1, 45, 4, 2, 1, 3, 1, 9, 5, 4, 5, 3, 13, 3, 5, 4, 4,
+ 1, 1, 1, 2, 254,79, 5, 2, 6, 3, 3, 2, 2, 16, 3, 2, 3, 2, 2, 11, 6, 3, 3, 6, 2, 2, 4, 2, 1, 1, 14, 3, 3, 3, 6, 1, 2, 2, 2, 21, 3,
+ 3, 10, 8, 4, 1, 10, 2, 2, 3, 11, 2, 5, 2, 12, 4, 3, 3, 2, 10, 4, 2, 6, 2, 7, 4, 12, 3, 3, 4, 11, 3, 4, 1, 12, 5, 3, 5, 15, 8, 7, 4,
+ 4, 6, 3, 102,10, 2, 2, 1, 1, 35, 28, 17, 9, 8, 4, 3, 2, 2, 2, 6, 4, 3, 1, 1, 2, 1, 2, 2, 2, 28, 7, 4, 3, 4, 5, 4, 5, 142,1, 1, 21,
+ 13, 4, 1, 2, 2, 8, 7, 4, 8, 4, 3, 3, 6, 1, 1, 1, 3, 3, 27, 11, 9, 9, 8, 3, 3, 3, 3, 2, 8, 2, 6, 3, 5, 2, 15, 3, 9, 8, 4, 3, 3,
+ 21, 19, 13, 6, 4, 8, 5, 1, 1, 1, 1, 1, 3, 98, 3, 10, 7, 7, 2, 7, 7, 4, 14, 4, 9, 1, 1, 1, 1, 1, 4, 3, 15, 2, 1, 6, 4, 10, 4, 4, 2,
+ 5, 5, 2, 105,32, 8, 6, 1, 7, 4, 7, 3, 2, 20, 1, 1, 7, 5, 1, 31, 3, 3, 10, 5, 5, 17, 2, 3, 3, 43, 13, 3, 2, 1, 3, 5, 4, 1, 2, 3, 20,
+ 3, 2, 2, 10, 5, 5, 5, 5, 50, 10, 4, 2, 7, 4, 7, 1, 4, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 2, 6, 1, 1, 2, 3, 2, 242,5, 4, 4, 1, 9, 6,
+ 3, 5, 2, 2, 3, 40, 5, 6, 7, 10, 5, 6, 3, 20, 6, 9, 3, 3, 39, 1, 1, 14, 6, 6, 3, 5, 3, 3, 2, 8, 1, 1, 1, 6, 7, 4, 2, 8, 4, 1, 1,
+ 1, 80, 4, 2, 1, 6, 2, 4, 3, 6, 10, 3, 2, 8, 4, 8, 3, 3, 5, 2, 12, 4, 3, 5, 4, 2, 12, 2, 6, 5, 5, 11, 6, 5, 4, 2, 1, 27, 2, 4, 10,
+ 2, 7, 7, 4, 3, 164,10, 2, 10, 5, 2, 10, 7, 3, 2, 8, 4, 9, 4, 1, 12, 2, 2, 9, 4, 3, 9, 4, 3, 4, 8, 3, 2, 15, 2, 2, 2, 7, 4, 26, 4,
+ 2, 3, 2, 2, 4, 11, 4, 6, 21, 4, 2, 1, 4, 2, 2, 1, 1, 1, 171,3, 7, 4, 6, 8, 7, 6, 3, 1, 1, 1, 25, 7, 3, 1, 9, 6, 3, 17, 14, 6, 3,
+ 3, 2, 20, 6, 3, 4, 2, 14, 2, 1, 5, 3, 9, 3, 4, 26, 4, 5, 2, 1, 1, 1, 1, 4, 3, 1, 13, 4, 4, 1, 3, 2, 2, 1, 1, 1, 118,8, 2, 4, 2,
5, 4, 2, 23, 3, 5, 4, 5, 4, 3, 11, 8, 3, 19, 5, 7, 10, 2, 2, 12, 5, 4, 3, 4, 3, 8, 2, 2, 10, 4, 1, 1, 1, 2, 2, 4, 4, 2, 2, 2, 130,
- 28, 3, 1, 2, 2, 3, 4, 3, 3, 2, 2, 3, 48, 4, 2, 2, 13, 1, 2, 5, 5, 4, 8, 3, 2, 2, 24, 7, 5, 2, 1, 6, 4, 1, 2, 3, 20, 2, 5, 4, 10,
- 7, 3, 10, 3, 2, 82, 16, 7, 1, 1, 2, 3, 3, 18, 1, 1, 2, 5, 2, 7, 2, 3, 30, 9, 4, 8, 3, 2, 9, 10, 3, 3, 8, 2, 83, 18, 3, 3, 2, 2, 2,
- 2, 2, 30, 3, 3, 6, 2, 2, 10, 8, 5, 1, 5, 2, 3, 17, 3, 9, 5, 7, 2, 9, 3, 4, 194,4, 3, 1, 1, 53, 3, 2, 5, 3, 3, 29, 4, 7, 3, 3, 3,
- 4, 2, 2, 5, 3, 1, 2, 2, 5, 29, 10, 5, 4, 4, 4, 4, 5, 4, 8, 3, 20, 3, 4, 7, 39, 30, 2, 3, 3, 3, 3, 5, 5, 2, 2, 6, 8, 8, 1, 3, 5,
- 3, 1, 1, 1, 92, 23, 5, 3, 4, 3, 23, 2, 6, 1, 1, 4, 2, 1, 6, 3, 10, 4, 2, 27, 3, 10, 5, 2, 3, 1, 1, 1, 7, 2, 2, 135,6, 12, 7, 4, 5,
- 21, 4, 2, 5, 5, 2, 3, 2, 31, 4, 2, 12, 5, 3, 3, 16, 8, 4, 3, 2, 2, 5, 4, 3, 2, 10, 2, 5, 4, 12, 4, 5, 2, 3, 3, 145,60, 6, 3, 2, 9,
- 2, 12, 2, 2, 3, 27, 13, 9, 3, 1, 11, 5, 3, 1, 57, 3, 4, 20, 1, 3, 7, 2, 3, 2, 11, 4, 10, 3, 2, 3, 2, 22, 1, 1, 1, 1, 7, 2, 8, 5, 2,
- 3, 2, 71, 16, 2, 2, 1, 3, 3, 1, 1, 1, 4, 2, 2, 2, 1, 16, 13, 4, 4, 1, 8, 5, 3, 3, 2, 4, 3, 2, 7, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3,
- 9, 3, 5, 5, 3, 1, 1, 196,5, 2, 4, 3, 16, 4, 2, 1, 6, 31, 11, 8, 7, 12, 10, 9, 9, 2, 46, 5, 3, 16, 4, 3, 13, 11, 7, 2, 39, 3, 3, 26, 6,
- 5, 23, 3, 3, 3, 3, 2, 2, 4, 11, 5, 4, 2, 2, 2, 166,38, 2, 6, 2, 2, 2, 2, 1, 1, 1, 20, 6, 6, 6, 6, 2, 38, 8, 8, 15, 12, 2, 3, 3, 3,
- 3, 14, 38, 9, 4, 1, 4, 1, 16, 14, 1, 5, 4, 21, 2, 1, 7, 5, 2, 2, 29, 8, 5, 3, 5, 3, 3, 3, 3, 3, 5, 4, 4, 3, 2, 1, 1, 1, 70, 10, 10,
- 8, 4, 3, 2, 23, 12, 2, 3, 3, 10, 9, 4, 2, 6, 8, 2, 5, 4, 3, 2, 2, 1, 1, 1, 6, 4, 4, 2, 1, 12, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1, 222,29, 3, 8, 3, 3, 1, 6, 3, 6, 4, 3, 3, 8, 2, 4, 3, 2, 9, 16, 7, 5, 10, 4, 5, 2, 3, 19, 4, 4, 3, 16, 4,
- 3, 2, 10, 4, 34, 14, 12, 2, 2, 2, 20, 3, 3, 9, 9, 16, 2, 2, 4, 4, 5, 15, 5, 3, 6, 3, 42, 16, 2, 12, 11, 9, 6, 1, 10, 1, 1, 3, 2, 5, 2,
- 2, 7, 3, 3, 115,4, 6, 3, 3, 3, 5, 1, 7, 2, 2, 2, 2, 19, 12, 12, 5, 32, 30, 26, 8, 7, 5, 4, 13, 6, 6, 6, 24, 6, 6, 6, 5, 5, 13, 5, 8,
- 7, 2, 66, 15, 4, 5, 3, 2, 2, 4, 2, 6, 4, 10, 4, 4, 4, 4, 3, 8, 5, 3, 4, 9, 8, 3, 97, 2, 5, 2, 2, 2, 12, 3, 3, 7, 3, 1, 10, 3, 9,
- 2, 13, 4, 1, 1, 1, 1, 4, 1, 6, 2, 1, 1, 4, 5, 3, 9, 3, 3, 2, 60, 9, 4, 3, 1, 1, 7, 2, 4, 5, 5, 5, 5, 8, 2, 13, 10, 5, 5, 5, 11,
- 9, 103,10, 6, 5, 18, 8, 3, 1, 1, 5, 3, 7, 10, 3, 3, 3, 3, 3, 7, 3, 6, 4, 9, 5, 3, 3, 7, 7, 5, 16, 2, 4, 1, 1, 3, 3, 165,9, 4, 7,
- 2, 2, 6, 2, 3, 2, 35, 17, 17, 7, 5, 2, 3, 4, 4, 3, 12, 4, 3, 1, 18, 5, 5, 3, 4, 4, 5, 25, 6, 7, 4, 5, 3, 5, 3, 2, 1, 4, 2, 11, 4,
- 3, 4, 2, 3, 4, 107,15, 7, 6, 1, 12, 7, 39, 2, 1, 6, 2, 2, 2, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 11, 9, 7, 4, 1, 1, 2, 6, 5, 4, 2, 8,
- 6, 13, 8, 7, 4, 1, 1, 3, 2, 2, 2, 173,13, 7, 5, 4, 1, 14, 2, 4, 3, 3, 3, 2, 1, 1, 1, 1, 1, 16, 4, 3, 3, 3, 2, 1, 1, 1, 1, 4, 2,
- 2, 1, 1, 1, 1, 1, 10, 2, 5, 3, 12, 5, 4, 1, 1, 1, 1, 10, 3, 1, 1, 1, 4, 5, 4, 44, 7, 6, 6, 6, 5, 11, 4, 2, 13, 5, 7, 7, 5, 4, 4,
- 4, 30, 3, 8, 5, 11, 4, 4, 4, 4, 3, 4, 2, 2, 6, 3, 77, 18, 13, 13, 12, 6, 3, 8, 4, 3, 3, 2, 2, 5, 1, 3, 9, 20, 7, 4, 4, 3, 2, 1, 1,
- 1, 1, 5, 3, 2, 1, 8, 8, 2, 2, 2, 1, 22, 22, 15, 9, 3, 3, 3, 4, 2, 254,26, 7, 7, 4, 2, 3, 5, 3, 8, 2, 4, 25, 2, 2, 15, 5, 2, 2, 3,
- 6, 29, 18, 6, 7, 34, 11, 9, 6, 3, 2, 3, 7, 2, 1, 1, 1, 1, 1, 2, 1, 1, 5, 4, 2, 3, 5, 2, 1, 9, 1, 1, 4, 2, 2, 11, 8, 7, 6, 23, 15,
- 4, 7, 3, 5, 3, 54, 10, 6, 4, 11, 30, 14, 10, 3, 2, 4, 2, 37, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 13, 5, 6, 2, 2, 65, 6, 5, 2, 4, 6, 3,
+ 28, 3, 1, 2, 2, 3, 4, 3, 3, 2, 2, 3, 48, 4, 2, 2, 13, 1, 2, 5, 5, 4, 8, 3, 2, 2, 24, 7, 5, 2, 1, 6, 4, 1, 2, 3, 20, 2, 5, 4, 10,
+ 7, 3, 10, 3, 2, 82, 16, 7, 1, 1, 2, 3, 3, 18, 1, 1, 2, 5, 2, 7, 2, 3, 30, 9, 4, 8, 3, 2, 9, 10, 3, 3, 8, 2, 83, 18, 3, 3, 2, 2, 2,
+ 2, 2, 30, 3, 3, 6, 2, 2, 10, 8, 5, 1, 5, 2, 3, 17, 3, 9, 5, 7, 2, 9, 3, 4, 194,4, 3, 1, 1, 53, 3, 2, 5, 3, 3, 29, 4, 7, 3, 3, 3,
+ 4, 2, 2, 5, 3, 1, 2, 2, 5, 29, 10, 5, 4, 4, 4, 4, 5, 4, 8, 3, 20, 3, 4, 7, 39, 30, 2, 3, 3, 3, 3, 5, 5, 2, 2, 6, 8, 8, 1, 3, 5,
+ 3, 1, 1, 1, 92, 23, 5, 3, 4, 3, 23, 2, 6, 1, 1, 4, 2, 1, 6, 3, 10, 4, 2, 27, 3, 10, 5, 2, 3, 1, 1, 1, 7, 2, 2, 135,6, 12, 7, 4, 5,
+ 21, 4, 2, 5, 5, 2, 3, 2, 31, 4, 2, 12, 5, 3, 3, 16, 8, 4, 3, 2, 2, 5, 4, 3, 2, 10, 2, 5, 4, 12, 4, 5, 2, 3, 3, 145,60, 6, 3, 2, 9,
+ 2, 12, 2, 2, 3, 27, 13, 9, 3, 1, 11, 5, 3, 1, 57, 3, 4, 20, 1, 3, 7, 2, 3, 2, 11, 4, 10, 3, 2, 3, 2, 22, 1, 1, 1, 1, 7, 2, 8, 5, 2,
+ 3, 2, 71, 16, 2, 2, 1, 3, 3, 1, 1, 1, 4, 2, 2, 2, 1, 16, 13, 4, 4, 1, 8, 5, 3, 3, 2, 4, 3, 2, 7, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3,
+ 9, 3, 5, 5, 3, 1, 1, 196,5, 2, 4, 3, 16, 4, 2, 1, 6, 31, 11, 8, 7, 12, 10, 9, 9, 2, 46, 5, 3, 16, 4, 3, 13, 11, 7, 2, 39, 3, 3, 26, 6,
+ 5, 23, 3, 3, 3, 3, 2, 2, 4, 11, 5, 4, 2, 2, 2, 166,38, 2, 6, 2, 2, 2, 2, 1, 1, 1, 20, 6, 6, 6, 6, 2, 38, 8, 8, 15, 12, 2, 3, 3, 3,
+ 3, 14, 38, 9, 4, 1, 4, 1, 16, 14, 1, 5, 4, 21, 2, 1, 7, 5, 2, 2, 29, 8, 5, 3, 5, 3, 3, 3, 3, 3, 5, 4, 4, 3, 2, 1, 1, 1, 70, 10, 10,
+ 8, 4, 3, 2, 23, 12, 2, 3, 3, 10, 9, 4, 2, 6, 8, 2, 5, 4, 3, 2, 2, 1, 1, 1, 6, 4, 4, 2, 1, 12, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 2, 1, 1, 1, 222,29, 3, 8, 3, 3, 1, 6, 3, 6, 4, 3, 3, 8, 2, 4, 3, 2, 9, 16, 7, 5, 10, 4, 5, 2, 3, 19, 4, 4, 3, 16, 4,
+ 3, 2, 10, 4, 34, 14, 12, 2, 2, 2, 20, 3, 3, 9, 9, 16, 2, 2, 4, 4, 5, 15, 5, 3, 6, 3, 42, 16, 2, 12, 11, 9, 6, 1, 10, 1, 1, 3, 2, 5, 2,
+ 2, 7, 3, 3, 115,4, 6, 3, 3, 3, 5, 1, 7, 2, 2, 2, 2, 19, 12, 12, 5, 32, 30, 26, 8, 7, 5, 4, 13, 6, 6, 6, 24, 6, 6, 6, 5, 5, 13, 5, 8,
+ 7, 2, 66, 15, 4, 5, 3, 2, 2, 4, 2, 6, 4, 10, 4, 4, 4, 4, 3, 8, 5, 3, 4, 9, 8, 3, 97, 2, 5, 2, 2, 2, 12, 3, 3, 7, 3, 1, 10, 3, 9,
+ 2, 13, 4, 1, 1, 1, 1, 4, 1, 6, 2, 1, 1, 4, 5, 3, 9, 3, 3, 2, 60, 9, 4, 3, 1, 1, 7, 2, 4, 5, 5, 5, 5, 8, 2, 13, 10, 5, 5, 5, 11,
+ 9, 103,10, 6, 5, 18, 8, 3, 1, 1, 5, 3, 7, 10, 3, 3, 3, 3, 3, 7, 3, 6, 4, 9, 5, 3, 3, 7, 7, 5, 16, 2, 4, 1, 1, 3, 3, 165,9, 4, 7,
+ 2, 2, 6, 2, 3, 2, 35, 17, 17, 7, 5, 2, 3, 4, 4, 3, 12, 4, 3, 1, 18, 5, 5, 3, 4, 4, 5, 25, 6, 7, 4, 5, 3, 5, 3, 2, 1, 4, 2, 11, 4,
+ 3, 4, 2, 3, 4, 107,15, 7, 6, 1, 12, 7, 39, 2, 1, 6, 2, 2, 2, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 11, 9, 7, 4, 1, 1, 2, 6, 5, 4, 2, 8,
+ 6, 13, 8, 7, 4, 1, 1, 3, 2, 2, 2, 173,13, 7, 5, 4, 1, 14, 2, 4, 3, 3, 3, 2, 1, 1, 1, 1, 1, 16, 4, 3, 3, 3, 2, 1, 1, 1, 1, 4, 2,
+ 2, 1, 1, 1, 1, 1, 10, 2, 5, 3, 12, 5, 4, 1, 1, 1, 1, 10, 3, 1, 1, 1, 4, 5, 4, 44, 7, 6, 6, 6, 5, 11, 4, 2, 13, 5, 7, 7, 5, 4, 4,
+ 4, 30, 3, 8, 5, 11, 4, 4, 4, 4, 3, 4, 2, 2, 6, 3, 77, 18, 13, 13, 12, 6, 3, 8, 4, 3, 3, 2, 2, 5, 1, 3, 9, 20, 7, 4, 4, 3, 2, 1, 1,
+ 1, 1, 5, 3, 2, 1, 8, 8, 2, 2, 2, 1, 22, 22, 15, 9, 3, 3, 3, 4, 2, 254,26, 7, 7, 4, 2, 3, 5, 3, 8, 2, 4, 25, 2, 2, 15, 5, 2, 2, 3,
+ 6, 29, 18, 6, 7, 34, 11, 9, 6, 3, 2, 3, 7, 2, 1, 1, 1, 1, 1, 2, 1, 1, 5, 4, 2, 3, 5, 2, 1, 9, 1, 1, 4, 2, 2, 11, 8, 7, 6, 23, 15,
+ 4, 7, 3, 5, 3, 54, 10, 6, 4, 11, 30, 14, 10, 3, 2, 4, 2, 37, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 13, 5, 6, 2, 2, 65, 6, 5, 2, 4, 6, 3,
3, 25, 6, 4, 5, 11, 10, 5, 6, 2, 3, 1, 1, 11, 2, 71, 5, 1, 1, 1, 1, 52, 25, 1, 2, 3, 8, 3, 3, 24, 3, 6, 4, 10, 4, 3, 19, 7, 7, 2, 128,
- 5, 4, 2, 3, 2, 1, 1, 2, 2, 2, 3, 8, 4, 3, 3, 2, 2, 6, 4, 4, 4, 2, 1, 12, 5, 3, 6, 5, 5, 5, 9, 4, 3, 40, 8, 2, 2, 3, 3, 2, 27,
- 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 6, 4, 2, 13, 1, 1, 1, 2, 3, 3, 2, 2, 1, 2, 11, 2, 2, 1, 1, 1, 1, 3, 1, 1, 2, 1, 1, 1, 3, 4, 2,
- 18, 7, 6, 2, 17, 1, 16, 4, 2, 7, 7, 71, 9, 2, 5, 36, 33, 8, 3, 2, 2, 2, 2, 3, 5, 3, 21, 6, 3, 9, 3, 11, 26, 5, 6, 3, 1, 1, 1, 1, 1,
- 1, 6, 2, 9, 1, 2, 39, 4, 14, 6, 5, 5, 4, 4, 8, 2, 3, 3, 2, 32, 4, 2, 2, 2, 4, 10, 6, 5, 1, 1, 1, 5, 2, 65, 12, 6, 3, 9, 3, 10, 4,
- 3, 8, 5, 2, 5, 3, 6, 2, 1, 95, 6, 10, 12, 3, 9, 3, 3, 3, 2, 2, 2, 2, 7, 14, 3, 3, 2, 1, 5, 10, 3, 5, 4, 2, 16, 5, 4, 5, 26, 10, 4,
- 3, 3, 5, 2, 4, 1, 5, 3, 134,8, 2, 16, 2, 2, 2, 4, 21, 5, 13, 6, 3, 5, 3, 8, 6, 30, 11, 5, 3, 2, 6, 2, 2, 2, 12, 4, 3, 2, 11, 3, 5,
- 17, 1, 8, 20, 2, 3, 9, 14, 6, 3, 3, 32, 6, 5, 2, 2, 2, 1, 4, 9, 2, 2, 2, 7, 7, 3, 1, 1, 39, 3, 19, 5, 3, 3, 5, 7, 4, 5, 4, 9, 3,
- 38, 2, 4, 4, 7, 1, 1, 3, 5, 2, 7, 12, 10, 7, 4, 20, 6, 4, 1, 6, 4, 2, 2, 8, 2, 3, 2, 2, 86, 2, 11, 6, 2, 2, 6, 3, 3, 2, 3, 2, 29,
- 3, 7, 2, 2, 4, 3, 2, 4, 2, 8, 2, 7, 13, 5, 2, 27, 4, 2, 1, 1, 3, 2, 5, 2, 2, 2, 26, 2, 2, 8, 7, 6, 6, 10, 2, 5, 4, 93, 3, 9, 4,
- 4, 3, 17, 3, 2, 9, 4, 4, 4, 23, 4, 4, 7, 4, 3, 14, 4, 2, 6, 2, 2, 3, 6, 2, 1, 1, 7, 2, 4, 4, 11, 4, 2, 8, 5, 1, 1, 13, 7, 21, 6,
- 4, 4, 8, 9, 6, 3, 4, 3, 5, 2, 2, 1, 1, 10, 3, 2, 25, 2, 11, 7, 6, 6, 37, 10, 2, 3, 3, 5, 3, 8, 3, 1, 2, 76, 9, 3, 8, 3, 3, 10, 11,
- 7, 7, 2, 1, 5, 2, 3, 4, 1, 5, 3, 3, 6, 2, 1, 5, 3, 42, 4, 3, 3, 4, 6, 2, 12, 7, 2, 6, 5, 44, 10, 3, 6, 4, 8, 6, 5, 5, 3, 32, 3,
- 4, 6, 1, 1, 3, 2, 2, 2, 7, 19, 7, 8, 4, 7, 4, 2, 5, 3, 2, 2, 2, 7, 2, 2, 2, 9, 3, 3, 17, 16, 6, 6, 18, 2, 2, 3, 5, 5, 2, 6, 3,
- 8, 1, 3, 3, 2, 14, 4, 3, 3, 7, 4, 20, 4, 3, 19, 2, 13, 3, 22, 2, 2, 4, 4, 4, 1, 8, 71, 11, 2, 52, 3, 5, 2, 10, 4, 3, 3, 6, 3, 2, 6,
- 3, 6, 3, 3, 2, 2, 15, 3, 26, 15, 11, 3, 3, 10, 8, 46, 2, 4, 2, 9, 4, 4, 5, 4, 2, 1, 93, 8, 2, 25, 2, 2, 5, 2, 3, 3, 5, 3, 26, 5, 3,
- 3, 3, 3, 8, 4, 3, 3, 14, 4, 15, 7, 3, 4, 2, 4, 4, 1, 161,5, 7, 2, 3, 3, 2, 2, 5, 14, 12, 8, 7, 3, 6, 3, 2, 4, 21, 6, 16, 7, 1, 12,
- 3, 5, 17, 3, 3, 4, 2, 9, 4, 3, 25, 4, 14, 6, 5, 2, 2, 2, 2, 4, 16, 4, 3, 2, 2, 1, 2, 1, 1, 19, 3, 5, 1, 1, 34, 2, 3, 8, 3, 3, 8,
- 5, 1, 2, 3, 3, 53, 3, 9, 4, 2, 1, 1, 1, 1, 1, 7, 6, 5, 4, 26, 2, 1, 10, 5, 2, 4, 2, 2, 2, 97, 2, 1, 21, 3, 6, 5, 3, 3, 5, 4, 4,
- 42, 5, 2, 1, 3, 3, 3, 8, 7, 5, 6, 3, 1, 1, 6, 4, 3, 3, 4, 2, 7, 4, 3, 114,13, 12, 6, 4, 4, 2, 5, 3, 6, 4, 17, 7, 5, 17, 7, 2, 1,
- 1, 1, 3, 7, 2, 18, 3, 2, 6, 5, 4, 2, 10, 9, 6, 3, 13, 3, 2, 3, 116,4, 4, 5, 2, 10, 7, 2, 1, 4, 2, 2, 7, 13, 9, 2, 3, 51, 16, 8, 5,
- 5, 12, 9, 7, 4, 4, 10, 8, 4, 3, 3, 2, 2, 7, 5, 4, 2, 2, 2, 2, 2, 2, 24, 7, 2, 4, 4, 3, 4, 4, 197,10, 10, 8, 8, 3, 2, 21, 14, 8, 5,
- 4, 3, 3, 3, 3, 13, 7, 15, 5, 2, 3, 3, 21, 3, 4, 5, 2, 5, 4, 3, 2, 2, 2, 4, 9, 2, 2, 74, 7, 61, 52, 2, 2, 2, 3, 3, 2, 7, 2, 3, 4,
- 2, 2, 6, 6, 5, 6, 197,6, 7, 6, 9, 2, 2, 4, 17, 6, 4, 1, 1, 2, 23, 10, 5, 1, 1, 3, 3, 5, 4, 19, 10, 6, 6, 5, 39, 33, 11, 3, 5, 4, 5,
- 5, 38, 2, 4, 23, 8, 11, 4, 3, 2, 4, 2, 4, 18, 15, 4, 4, 3, 3, 3, 2, 176,10, 2, 1, 2, 2, 11, 7, 4, 2, 17, 4, 3, 5, 2, 2, 10, 5, 3, 3,
- 3, 55, 7, 6, 4, 4, 12, 2, 2, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 16, 11, 1, 1, 1, 1, 4, 4, 2, 5, 4, 3, 12, 6, 1, 1, 3, 14, 3, 9,
- 5, 8, 3, 1, 1, 3, 6, 3, 1, 5, 4, 1, 13, 4, 2, 3, 2, 28, 7, 5, 1, 8, 2, 1, 1, 1, 1, 73, 7, 2, 13, 6, 12, 3, 3, 3, 3, 3, 4, 2, 5,
- 10, 3, 2, 62, 3, 3, 9, 3, 3, 3, 3, 1, 16, 5, 3, 4, 16, 8, 5, 2, 66, 6, 4, 6, 4, 2, 20, 6, 6, 5, 4, 3, 7, 6, 6, 4, 4, 5, 4, 38, 15,
- 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 11, 9, 9, 3, 8, 4, 32, 4, 2, 1, 2, 3, 16, 5, 2, 14, 7, 2, 2, 13, 2, 2, 8, 2, 1, 4, 75, 4, 8, 3, 2,
- 2, 11, 3, 1, 1, 1, 1, 9, 2, 1, 1, 3, 1, 12, 1, 1, 18, 15, 6, 6, 6, 5, 1, 62, 1, 15, 6, 1, 11, 4, 4, 3, 2, 1, 1, 1, 4, 1, 1, 2, 2,
- 2, 5, 4, 4, 3, 7, 7, 7, 1, 1, 1, 1, 1, 7, 4, 120,9, 3, 10, 3, 2, 6, 3, 1, 1, 4, 4, 26, 20, 6, 4, 9, 20, 9, 5, 3, 1, 15, 10, 6, 10,
- 5, 5, 5, 5, 3, 5, 3, 2, 3, 2, 60, 3, 2, 4, 4, 8, 2, 3, 3, 13, 2, 3, 3, 3, 2, 2, 2, 4, 6, 1, 3, 3, 3, 17, 2, 3, 5, 3, 3, 2, 2,
- 2, 23, 2, 7, 4, 3, 2, 3, 2, 60, 4, 3, 6, 4, 4, 4, 2, 5, 11, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 9, 7, 177,5, 9, 7, 7, 2, 9,
- 4, 5, 4, 2, 12, 2, 7, 3, 1, 1, 1, 12, 3, 3, 3, 2, 15, 7, 3, 11, 7, 4, 16, 4, 12, 10, 1, 1, 9, 1, 1, 1, 7, 7, 7, 33, 12, 9, 3, 5, 4,
- 6, 2, 21, 10, 8, 71, 7, 4, 3, 2, 10, 3, 4, 3, 28, 17, 3, 3, 3, 3, 3, 3, 4, 4, 5, 3, 3, 2, 3, 4, 2, 2, 109,16, 10, 8, 6, 2, 4, 9, 6,
- 5, 17, 3, 5, 3, 2, 2, 17, 10, 3, 2, 3, 5, 19, 4, 4, 4, 10, 2, 8, 4, 110,5, 7, 3, 3, 5, 1, 2, 1, 4, 8, 9, 3, 2, 6, 7, 4, 2, 6, 3,
- 13, 2, 3, 4, 17, 6, 4, 7, 6, 2, 3, 17, 5, 3, 65, 2, 9, 7, 3, 10, 2, 4, 9, 4, 8, 15, 3, 3, 7, 1, 72, 9, 9, 30, 2, 25, 4, 4, 3, 2, 2,
- 3, 1, 20, 15, 2, 52, 9, 2, 5, 2, 2, 3, 19, 9, 3, 7, 3, 5, 2, 82, 2, 6, 2, 4, 19, 12, 3, 6, 3, 40, 29, 2, 8, 4, 3, 2, 1, 4, 1, 89, 35,
- 28, 4, 6, 6, 19, 3, 5, 4, 4, 25, 6, 6, 17, 14, 1, 1, 1, 1, 5, 5, 5, 3, 2, 2, 34, 4, 3, 9, 6, 3, 7, 5, 7, 2, 14, 4, 2, 1, 77, 4, 2,
- 3, 5, 3, 4, 18, 17, 2, 2, 19, 1, 10, 8, 8, 1, 1, 2, 2, 49, 13, 8, 5, 3, 8, 11, 9, 3, 4, 2, 43, 5, 5, 5, 4, 11, 10, 13, 8, 6, 3, 7, 3,
- 3, 3, 123,6, 3, 5, 2, 1, 1, 27, 2, 7, 13, 6, 2, 1, 1, 1, 14, 3, 3, 3, 59, 15, 7, 6, 6, 6, 6, 2, 8, 3, 3, 5, 9, 4, 2, 3, 3, 7, 3,
- 3, 3, 3, 2, 17, 2, 5, 5, 7, 6, 5, 1, 1, 1, 22, 8, 7, 59, 4, 2, 3, 3, 18, 10, 3, 3, 8, 4, 11, 6, 4, 3, 9, 5, 110,34, 33, 32, 2, 12, 8,
- 4, 1, 2, 2, 44, 23, 20, 14, 8, 5, 8, 6, 13, 1, 1, 1, 1, 1, 1, 6, 2, 2, 2, 2, 3, 2, 1, 12, 1, 7, 4, 3, 41, 7, 19, 15, 3, 2, 2, 2, 1,
- 1, 2, 6, 4, 10, 1, 1, 2, 2, 43, 4, 3, 6, 25, 4, 4, 2, 2, 7, 2, 3, 2, 10, 2, 2, 3, 13, 2, 4, 2, 15, 1, 5, 2, 4, 7, 2, 1, 1, 1, 1,
- 1, 1, 3, 2, 24, 3, 17, 13, 7, 3, 234,28, 9, 3, 10, 3, 19, 4, 5, 5, 5, 5, 3, 22, 5, 3, 2, 2, 2, 2, 2, 56, 9, 8, 8, 17, 4, 2, 2, 3, 4,
- 1, 1, 4, 6, 8, 4, 18, 5, 4, 3, 3, 5, 1, 29, 7, 4, 3, 3, 1, 4, 3, 2, 1, 3, 14, 4, 2, 9, 15, 3, 11, 4, 2, 1, 1, 1, 1, 1, 85, 13, 6,
- 5, 2, 1, 1, 1, 1, 5, 3, 36, 3, 3, 3, 3, 2, 2, 2, 2, 11, 3, 2, 9, 7, 5, 5, 4, 3, 1, 1, 16, 13, 2, 8, 7, 3, 2, 136,6, 20, 8, 7, 3,
- 6, 5, 21, 3, 3, 4, 13, 8, 3, 24, 2, 14, 5, 3, 15, 3, 1, 5, 3, 1, 1, 5, 2, 5, 2, 2, 11, 1, 1, 1, 1, 34, 5, 2, 1, 1, 7, 5, 9, 5, 38,
- 21, 14, 7, 4, 4, 3, 3, 5, 111,7, 9, 4, 2, 5, 5, 4, 3, 5, 13, 4, 5, 6, 1, 7, 3, 3, 13, 4, 1, 1, 13, 6, 2, 2, 3, 2, 15, 5, 3, 3, 26,
- 3, 2, 3, 3, 3, 2, 2, 4, 23, 5, 5, 3, 1, 6, 2, 2, 2, 3, 2, 171,7, 2, 3, 3, 3, 2, 4, 23, 3, 1, 1, 1, 4, 2, 3, 2, 3, 29, 27, 2, 2,
- 1, 6, 3, 3, 2, 2, 5, 15, 6, 5, 7, 1, 60, 58, 5, 2, 5, 2, 2, 14, 8, 2, 2, 1, 4, 3, 4, 13, 3, 3, 6, 3, 8, 5, 5, 5, 5, 2, 2, 2, 2,
- 17, 9, 6, 4, 4, 4, 5, 4, 3, 24, 5, 3, 8, 2, 9, 3, 1, 3, 38, 30, 3, 2, 2, 3, 5, 2, 3, 2, 2, 17, 7, 3, 5, 9, 2, 2, 6, 4, 4, 6, 4,
- 2, 7, 4, 9, 1, 1, 5, 52, 4, 1, 1, 7, 4, 8, 12, 9, 3, 74, 6, 4, 3, 4, 1, 3, 22, 6, 7, 9, 4, 4, 3, 18, 12, 3, 2, 6, 3, 3, 2, 8, 3,
- 15, 3, 5, 9, 8, 2, 4, 35, 13, 8, 5, 17, 1, 4, 3, 93, 45, 30, 29, 19, 9, 10, 8, 6, 3, 8, 22, 8, 1, 5, 2, 2, 11, 6, 3, 3, 3, 2, 11, 11, 10,
- 36, 6, 5, 1, 1, 1, 1, 1, 23, 2, 3, 3, 2, 16, 3, 3, 3, 2, 17, 1, 1, 12, 3, 3, 1, 1, 1, 1, 1, 26, 6, 6, 5, 8, 3, 1, 29, 6, 3, 2, 3,
- 3, 2, 4, 5, 3, 2, 2, 4, 4, 2, 4, 1, 2, 3, 3, 3, 12, 1, 6, 6, 3, 3, 233,19, 6, 5, 2, 17, 16, 12, 4, 24, 4, 7, 3, 3, 1, 4, 6, 2, 2,
- 14, 11, 23, 1, 1, 2, 14, 2, 5, 2, 54, 6, 6, 11, 5, 2, 2, 1, 8, 10, 2, 2, 1, 37, 8, 6, 4, 16, 15, 9, 8, 8, 5, 5, 2, 24, 3, 3, 3, 3, 2,
- 2, 6, 3, 5, 2, 1, 1, 55, 17, 8, 8, 4, 3, 10, 7, 6, 3, 3, 2, 21, 8, 6, 8, 3, 1, 2, 174,3, 2, 3, 9, 9, 12, 11, 8, 3, 3, 22, 6, 4, 2,
- 2, 9, 7, 6, 4, 4, 30, 9, 11, 1, 2, 54, 3, 2, 36, 7, 21, 7, 5, 4, 2, 2, 23, 5, 4, 4, 4, 2, 4, 7, 2, 1, 1, 6, 157,44, 3, 3, 7, 3, 4,
- 8, 5, 19, 6, 6, 3, 2, 2, 6, 4, 3, 2, 58, 6, 4, 45, 29, 1, 1, 4, 3, 5, 4, 7, 6, 22, 3, 3, 10, 1, 11, 3, 4, 2, 46, 6, 7, 4, 23, 5, 4,
- 3, 4, 5, 3, 3, 3, 17, 3, 5, 99, 1, 1, 1, 1, 1, 96, 43, 4, 8, 4, 2, 4, 2, 8, 1, 1, 5, 7, 3, 19, 10, 5, 7, 32, 3, 2, 2, 2, 3, 11, 5,
- 4, 49, 2, 2, 4, 1, 10, 2, 1, 3, 1, 1, 2, 18, 2, 2, 2, 1, 6, 2, 3, 3, 3, 2, 2, 3, 1, 1, 2, 1, 1, 6, 2, 2, 2, 1, 34, 1, 1, 1, 1,
- 1, 2, 1, 2, 1, 1, 2, 1, 1, 12, 4, 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 8, 4, 3, 40, 3, 4, 4, 16, 15, 13, 7, 11, 9, 29, 5, 9, 2, 2,
- 3, 3, 2, 2, 8, 25, 4, 7, 3, 2, 8, 2, 2, 8, 2, 1, 16, 15, 7, 3, 2, 3, 33, 9, 3, 2, 7, 5, 2, 8, 4, 2, 15, 10, 4, 31, 14, 3, 10, 4, 16,
- 11, 1, 58, 3, 1, 2, 3, 7, 6, 2, 3, 10, 7, 20, 5, 3, 3, 3, 1, 38, 4, 1, 3, 1, 5, 3, 3, 2, 5, 12, 5, 3, 180,6, 5, 17, 3, 3, 3, 54, 18,
- 13, 10, 3, 2, 3, 6, 3, 7, 5, 2, 5, 2, 7, 5, 13, 2, 19, 3, 12, 9, 9, 3, 12, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4,
- 3, 4, 10, 4, 2, 6, 5, 16, 4, 4, 1, 1, 1, 1, 1, 1, 9, 8, 176,2, 3, 8, 5, 13, 6, 3, 3, 3, 3, 4, 8, 3, 2, 2, 11, 6, 2, 6, 12, 4, 12,
- 8, 8, 2, 6, 3, 2, 2, 13, 3, 11, 4, 4, 23, 1, 1, 1, 3, 3, 5, 9, 7, 6, 4, 4, 29, 4, 8, 4, 2, 85, 24, 1, 1, 1, 1, 1, 1, 1, 3, 7, 6,
- 2, 30, 5, 11, 11, 9, 9, 8, 4, 2, 13, 4, 4, 23, 6, 5, 3, 4, 3, 3, 18, 5, 3, 6, 5, 2, 2, 2, 1, 4, 2, 12, 2, 2, 6, 2, 1, 3, 2, 2, 55,
- 9, 2, 2, 2, 4, 12, 4, 4, 17, 3, 1, 2, 7, 4, 16, 4, 10, 5, 3, 3, 1, 1, 66, 4, 20, 8, 3, 2, 2, 2, 2, 17, 4, 3, 2, 9, 4, 3, 1, 8, 2,
- 44, 21, 20, 7, 6, 2, 3, 20, 4, 3, 10, 6, 4, 11, 4, 1, 7, 4, 94, 5, 5, 3, 3, 2, 67, 4, 16, 5, 2, 5, 2, 1, 1, 6, 3, 2, 11, 7, 3, 3, 4,
- 3, 7, 2, 2, 8, 3, 3, 1, 1, 37, 21, 6, 3, 3, 2, 2, 3, 4, 2, 1, 20, 2, 7, 4, 6, 48, 4, 5, 3, 4, 2, 3, 1, 4, 3, 2, 2, 2, 2, 2, 1,
- 4, 3, 1, 1, 8, 3, 4, 86, 12, 10, 4, 1, 2, 2, 2, 2, 2, 2, 32, 14, 13, 3, 9, 8, 2, 3, 3, 3, 2, 3, 11, 6, 3, 5, 2, 3, 68, 3, 1, 1, 19,
- 17, 2, 1, 1, 2, 2, 7, 6, 6, 3, 2, 7, 6, 5, 4, 3, 5, 15, 3, 1, 1, 4, 3, 10, 1, 1, 1, 3, 3, 2, 10, 4, 4, 37, 30, 4, 9, 4, 5, 18, 12,
- 12, 6, 3, 4, 5, 4, 2, 5, 5, 3, 4, 1, 1, 2, 2, 2, 35, 5, 29, 1, 1, 1, 1, 4, 2, 8, 6, 2, 5, 25, 3, 6, 2, 4, 1, 5, 20, 12, 5, 2, 2,
- 3, 16, 6, 5, 3, 4, 2, 37, 4, 1, 1, 2, 20, 5, 3, 2, 5, 2, 26, 3, 5, 11, 10, 8, 47, 2, 2, 10, 2, 2, 1, 2, 14, 4, 9, 3, 3, 19, 2, 7, 3,
- 3, 7, 7, 17, 3, 2, 2, 2, 4, 14, 3, 3, 7, 2, 12, 3, 2, 3, 4, 5, 2, 2, 2, 1, 4, 3, 3, 3, 8, 2, 2, 51, 49, 2, 4, 3, 7, 8, 6, 5, 4,
- 3, 6, 2, 11, 4, 3, 3, 21, 3, 4, 4, 2, 3, 2, 14, 11, 6, 3, 5, 1, 6, 8, 6, 2, 2, 2, 2, 3, 16, 9, 2, 2, 1, 41, 4, 4, 5, 3, 8, 1, 8,
- 3, 3, 4, 15, 6, 3, 3, 3, 1, 2, 57, 45, 9, 4, 4, 5, 2, 2, 3, 3, 3, 3, 6, 5, 4, 6, 2, 20, 3, 3, 3, 5, 2, 27, 14, 3, 7, 3, 85, 3, 2,
- 15, 2, 2, 6, 1, 1, 24, 5, 1, 2, 2, 2, 7, 13, 5, 4, 3, 3, 5, 15, 3, 2, 5, 3, 2, 2, 28, 8, 3, 2, 2, 2, 4, 9, 2, 2, 4, 3, 8, 12, 3,
- 5, 2, 2, 6, 3, 3, 6, 3, 2, 2, 240,2, 2, 3, 1, 10, 4, 3, 1, 1, 1, 1, 14, 2, 2, 2, 2, 5, 1, 5, 22, 13, 13, 13, 8, 2, 2, 2, 4, 1, 5,
- 2, 4, 38, 3, 7, 21, 9, 2, 7, 6, 1, 7, 14, 4, 8, 59, 3, 14, 11, 8, 10, 2, 3, 5, 12, 2, 1, 1, 1, 3, 2, 1, 1, 3, 20, 5, 4, 9, 3, 1, 1,
- 2, 13, 5, 3, 9, 3, 4, 2, 2, 131,20, 10, 4, 4, 4, 4, 4, 1, 1, 4, 19, 15, 2, 1, 2, 3, 3, 14, 5, 2, 3, 8, 2, 7, 11, 8, 6, 6, 4, 3, 3,
- 2, 2, 2, 8, 7, 10, 7, 7, 5, 4, 3, 110,7, 6, 3, 19, 11, 7, 3, 3, 8, 8, 5, 2, 4, 2, 4, 1, 13, 11, 1, 1, 4, 15, 12, 2, 16, 7, 2, 2, 2,
- 2, 5, 119,6, 4, 1, 1, 1, 3, 12, 1, 2, 5, 2, 8, 7, 16, 4, 3, 2, 1, 1, 16, 13, 3, 3, 4, 7, 3, 7, 5, 10, 6, 3, 56, 6, 14, 4, 9, 9, 9,
- 4, 4, 2, 7, 6, 1, 7, 2, 2, 9, 2, 9, 2, 6, 1, 4, 4, 2, 3, 1, 1, 1, 1, 4, 4, 22, 13, 4, 1, 2, 4, 3, 2, 3, 18, 2, 14, 7, 50, 2, 2,
- 4, 8, 6, 4, 14, 4, 6, 4, 4, 2, 2, 2, 2, 4, 2, 14, 2, 1, 1, 1, 1, 2, 12, 12, 3, 3, 2, 2, 1, 6, 4, 6, 25, 7, 13, 16, 6, 3, 6, 18, 1,
- 8, 7, 41, 2, 6, 2, 9, 5, 2, 3, 6, 2, 1, 1, 3, 3, 3, 16, 3, 8, 4, 1, 1, 3, 2, 1, 1, 33, 1, 16, 11, 7, 3, 3, 3, 5, 2, 1, 8, 1, 1,
- 13, 3, 1, 2, 1, 3, 1, 1, 1, 5, 3, 2, 29, 7, 2, 1, 2, 2, 1, 2, 2, 2, 5, 5, 11, 3, 2, 2, 2, 6, 2, 4, 3, 3, 3, 3, 3, 20, 1, 7, 2,
- 2, 2, 5, 5, 4, 3, 8, 5, 6, 2, 2, 1, 1, 11, 4, 4, 4, 4, 3, 8, 13, 8, 8, 8, 5, 5, 13, 6, 4, 6, 5, 23, 8, 1, 1, 6, 5, 5, 7, 7, 3,
- 3, 8, 4, 4, 4, 2, 11, 1, 7, 6, 4, 4, 4, 10, 5, 3, 3, 2, 2, 1, 11, 6, 4, 4, 4, 3, 77, 10, 10, 10, 4, 12, 4, 4, 4, 4, 3, 2, 3, 1, 18,
- 14, 4, 9, 2, 5, 2, 2, 2, 23, 11, 9, 6, 6, 5, 8, 8, 8, 4, 3, 3, 2, 27, 4, 3, 1, 6, 5, 4, 10, 5, 5, 5, 7, 5, 5, 2, 2, 5, 5, 5, 3,
- 2, 2, 90, 31, 18, 14, 13, 3, 3, 2, 7, 4, 3, 2, 14, 5, 2, 3, 37, 7, 5, 5, 10, 4, 6, 3, 3, 3, 44, 8, 3, 4, 2, 11, 2, 5, 1, 7, 2, 3, 2,
- 2, 3, 2, 2, 28, 5, 3, 2, 2, 1, 1, 1, 5, 3, 2, 2, 40, 35, 9, 8, 10, 6, 5, 9, 7, 7, 3, 3, 51, 26, 2, 18, 2, 3, 3, 3, 11, 8, 3, 2, 4,
- 2, 8, 3, 2, 1, 31, 1, 4, 16, 2, 2, 29, 5, 2, 7, 1, 1, 2, 4, 3, 3, 5, 3, 3, 84, 6, 2, 2, 2, 2, 3, 10, 1, 1, 1, 10, 3, 8, 1, 3, 14,
- 5, 4, 6, 3, 3, 6, 4, 2, 2, 14, 9, 7, 5, 133,11, 3, 1, 6, 11, 10, 4, 7, 2, 3, 74, 15, 13, 9, 48, 45, 3, 2, 3, 5, 3, 5, 5, 3, 6, 3, 4,
- 4, 161,2, 10, 2, 4, 4, 2, 2, 52, 17, 2, 6, 4, 4, 12, 6, 3, 4, 3, 3, 3, 3, 7, 4, 4, 4, 9, 3, 5, 5, 4, 24, 7, 2, 14, 2, 3, 3, 5, 2,
- 2, 2, 18, 5, 6, 5, 5, 3, 2, 6, 8, 4, 2, 210,209,2, 1, 13, 4, 33, 5, 5, 3, 3, 3, 2, 3, 3, 3, 3, 2, 2, 2, 1, 14, 1, 3, 3, 5, 4, 4,
- 4, 4, 3, 2, 11, 3, 4, 2, 13, 3, 3, 3, 2, 2, 7, 4, 3, 2, 9, 5, 2, 3, 3, 2, 1, 2, 13, 1, 6, 6, 6, 6, 6, 5, 4, 4, 4, 25, 17, 1, 6,
- 5, 4, 3, 7, 3, 3, 1, 1, 2, 6, 5, 2, 29, 7, 2, 1, 1, 13, 4, 3, 3, 3, 3, 2, 2, 5, 2, 11, 10, 8, 47, 2, 2, 20, 9, 7, 7, 7, 7, 3, 6,
- 15, 8, 8, 7, 3, 2, 8, 8, 8, 8, 18, 6, 1, 9, 8, 3, 2, 171,9, 1, 4, 3, 2, 2, 13, 4, 3, 3, 23, 6, 6, 3, 6, 4, 2, 13, 7, 13, 6, 4, 3,
- 3, 9, 4, 3, 3, 2, 13, 7, 6, 6, 30, 3, 17, 5, 5, 6, 5, 2, 2, 2, 8, 3, 3, 5, 22, 7, 1, 14, 13, 6, 3, 3, 2, 91, 15, 13, 5, 2, 2, 2, 6,
- 7, 3, 5, 2, 1, 4, 19, 15, 11, 6, 5, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 5, 15, 13, 11, 9, 1, 3, 45, 3, 7, 5, 5, 2, 1, 4, 3, 2, 12, 5, 3,
- 1, 1, 1, 1, 1, 9, 4, 2, 2, 2, 1, 2, 5, 4, 2, 2, 1, 1, 1, 1, 3, 25, 6, 5, 5, 2, 2, 2, 4, 4, 4, 67, 9, 1, 2, 2, 3, 2, 48, 2, 16,
- 3, 2, 2, 1, 7, 3, 1, 1, 1, 1, 6, 2, 16, 3, 1, 2, 4, 3, 3, 3, 1, 1, 1, 4, 3, 2, 1, 1, 185,9, 2, 1, 5, 3, 2, 2, 7, 4, 3, 10, 5,
- 1, 1, 8, 6, 5, 5, 14, 5, 2, 2, 1, 6, 40, 4, 2, 2, 8, 2, 7, 7, 41, 4, 2, 21, 3, 2, 2, 12, 2, 4, 2, 1, 1, 5, 2, 1, 1, 1, 2, 2, 20,
- 2, 5, 2, 3, 9, 1, 1, 1, 1, 3, 2, 164,34, 12, 4, 2, 4, 4, 4, 17, 5, 4, 12, 7, 4, 2, 72, 6, 2, 49, 2, 2, 2, 6, 4, 4, 4, 4, 7, 5, 2,
- 5, 3, 10, 2, 10, 2, 5, 2, 2, 6, 2, 2, 135,3, 3, 6, 4, 6, 2, 10, 1, 3, 4, 2, 2, 2, 1, 1, 1, 6, 6, 2, 6, 2, 7, 6, 13, 7, 3, 34, 8,
- 2, 6, 12, 8, 8, 4, 21, 16, 16, 4, 5, 3, 2, 1, 2, 2, 37, 2, 2, 2, 2, 2, 9, 6, 3, 14, 11, 5, 4, 3, 3, 2, 1, 3, 7, 1, 1, 1, 1, 6, 2,
- 2, 12, 8, 7, 4, 3, 39, 10, 8, 7, 3, 1, 1, 21, 6, 3, 7, 5, 5, 8, 4, 72, 2, 2, 23, 6, 5, 17, 17, 14, 7, 1, 8, 6, 5, 5, 4, 6, 4, 27, 13,
- 13, 12, 2, 9, 6, 5, 5, 4, 1, 3, 3, 3, 100,9, 2, 4, 1, 1, 1, 1, 1, 1, 27, 16, 13, 13, 10, 7, 3, 2, 12, 2, 2, 8, 8, 8, 3, 5, 6, 4, 3,
- 2, 1, 1, 3, 17, 5, 6, 6, 6, 3, 2, 2, 25, 4, 3, 3, 21, 16, 11, 10, 4, 2, 8, 5, 22, 2, 3, 9, 4, 4, 3, 1, 25, 1, 1, 2, 19, 17, 16, 1, 5,
- 4, 4, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 2, 112,22, 4, 2, 1, 5, 4, 3, 5, 4, 1, 1, 1, 2, 14, 14, 11, 3, 5, 4, 4, 2, 2, 2, 20, 2, 2, 3,
- 2, 1, 1, 1, 1, 1, 2, 5, 1, 1, 1, 1, 3, 3, 4, 1, 2, 2, 1, 2, 2, 1, 1, 10, 2, 1, 1, 1, 2, 11, 1, 1, 5, 3, 1, 6, 4, 1, 16, 2, 2,
- 9, 3, 3, 1, 2, 3, 3, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 89, 16, 5, 3, 1, 7, 3, 7,
- 4, 2, 2, 1, 1, 10, 2, 1, 1, 1, 2, 2, 25, 5, 18, 1, 2, 2, 2, 4, 10, 4, 4, 2, 8, 5, 5, 1, 70, 4, 4, 1, 3, 2, 14, 6, 3, 4, 4, 17, 7,
- 1, 2, 8, 8, 6, 5, 28, 3, 5, 6, 1, 2, 2, 1, 1, 1, 3, 3, 9, 2, 4, 3, 3, 19, 3, 6, 3, 2, 1, 39, 11, 3, 2, 1, 1, 6, 3, 2, 9, 7, 4,
- 1, 1, 2, 5, 17, 4, 1, 1, 5, 76, 4, 2, 2, 3, 2, 2, 23, 5, 2, 2, 3, 10, 4, 3, 6, 4, 7, 2, 4, 3, 9, 6, 3, 2, 79, 27, 2, 2, 2, 2, 2,
- 3, 2, 3, 35, 3, 2, 4, 6, 3, 2, 3, 7, 3, 4, 148,21, 7, 5, 4, 1, 1, 2, 6, 3, 4, 10, 5, 5, 2, 15, 2, 4, 18, 5, 3, 2, 38, 10, 3, 9, 3,
- 2, 6, 2, 2, 2, 3, 6, 3, 3, 7, 5, 2, 2, 3, 6, 2, 127,28, 2, 1, 4, 3, 10, 3, 4, 2, 1, 1, 21, 3, 6, 2, 8, 7, 4, 16, 6, 3, 17, 3, 14,
- 3, 2, 1, 1, 14, 3, 4, 2, 2, 3, 3, 4, 3, 1, 1, 1, 201,10, 2, 4, 3, 13, 4, 2, 13, 1, 1, 1, 1, 2, 46, 6, 1, 1, 13, 4, 6, 4, 1, 1, 5,
- 4, 4, 2, 2, 4, 12, 2, 4, 20, 7, 4, 3, 3, 26, 4, 14, 4, 3, 5, 5, 6, 3, 8, 1, 15, 4, 3, 5, 4, 4, 9, 2, 8, 3, 3, 1, 52, 8, 10, 3, 10,
- 15, 7, 2, 2, 193,32, 2, 2, 2, 1, 3, 11, 2, 6, 3, 6, 2, 10, 4, 3, 12, 7, 2, 7, 2, 2, 12, 6, 6, 1, 1, 3, 3, 11, 3, 9, 2, 2, 6, 3, 10,
- 2, 6, 1, 4, 6, 4, 4, 4, 20, 9, 4, 3, 2, 4, 9, 19, 10, 3, 3, 3, 2, 4, 3, 4, 64, 5, 4, 13, 5, 8, 4, 4, 14, 2, 3, 15, 10, 1, 75, 10, 6,
- 10, 4, 1, 5, 2, 7, 10, 2, 7, 16, 2, 2, 5, 5, 4, 6, 3, 52, 3, 6, 4, 9, 9, 3, 5, 6, 2, 2, 2, 1, 30, 8, 2, 14, 9, 3, 6, 4, 4, 3, 2,
- 18, 5, 4, 6, 3, 2, 2, 29, 3, 11, 2, 2, 2, 7, 7, 6, 6, 5, 38, 4, 19, 16, 14, 2, 3, 1, 4, 17, 4, 3, 3, 7, 12, 1, 5, 5, 5, 9, 1, 1, 3,
- 2, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 3, 2, 2, 87, 1, 2, 14, 13, 7, 2, 6, 2, 2, 5, 15, 2, 2, 2, 10, 2, 13, 6, 9, 4, 9, 4, 61,
- 41, 2, 1, 30, 1, 16, 11, 5, 11, 2, 2, 2, 7, 7, 6, 5, 3, 1, 5, 3, 2, 2, 2, 2, 3, 3, 2, 1, 1, 1, 29, 15, 4, 9, 4, 5, 3, 2, 55, 2, 1,
- 5, 20, 5, 5, 2, 4, 4, 9, 7, 2, 2, 2, 1, 12, 5, 1, 2, 1, 1, 1, 14, 3, 1, 1, 5, 1, 1, 24, 7, 7, 3, 2, 1, 1, 1, 3, 1, 5, 3, 2, 1,
- 1, 2, 2, 11, 5, 2, 4, 15, 3, 4, 3, 1, 1, 1, 1, 1, 1, 169,5, 2, 2, 4, 102,13, 5, 5, 2, 2, 5, 5, 2, 2, 2, 2, 10, 6, 5, 1, 9, 8, 8,
- 6, 5, 4, 3, 10, 6, 3, 3, 2, 1, 1, 4, 3, 2, 2, 1, 22, 5, 5, 5, 6, 6, 5, 6, 6, 6, 3, 1, 1, 9, 6, 6, 5, 1, 1, 4, 12, 1, 1, 1, 9,
- 7, 2, 3, 2, 29, 8, 7, 3, 2, 1, 4, 3, 3, 4, 6, 3, 3, 3, 2, 2, 4, 90, 5, 3, 5, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 1, 64,
- 21, 3, 13, 8, 3, 4, 4, 13, 5, 7, 9, 6, 5, 3, 2, 2, 2, 2, 6, 3, 163,14, 1, 1, 4, 6, 22, 10, 7, 2, 3, 2, 3, 3, 1, 17, 2, 2, 1, 1, 1,
- 1, 1, 5, 2, 9, 4, 2, 1, 2, 4, 3, 28, 8, 4, 3, 3, 13, 7, 11, 1, 1, 1, 1, 7, 3, 13, 4, 13, 4, 3, 2, 6, 4, 8, 3, 2, 1, 1, 1, 1, 19,
- 3, 3, 3, 2, 4, 4, 2, 7, 7, 6, 4, 225,13, 1, 2, 3, 2, 7, 6, 1, 1, 1, 22, 2, 1, 9, 3, 7, 3, 2, 6, 2, 2, 2, 2, 31, 4, 23, 19, 14, 4,
- 10, 11, 4, 1, 3, 1, 1, 1, 6, 4, 1, 89, 28, 7, 1, 6, 4, 2, 14, 4, 2, 2, 26, 7, 4, 6, 6, 4, 3, 15, 4, 10, 7, 5, 2, 1, 1, 2, 6, 4, 1,
- 2, 3, 2, 2, 2, 2, 101,2, 6, 4, 3, 3, 2, 2, 17, 5, 2, 5, 62, 9, 2, 3, 3, 3, 9, 5, 20, 4, 4, 4, 3, 5, 3, 4, 52, 2, 4, 6, 5, 5, 5,
- 22, 16, 2, 1, 2, 1, 1, 1, 1, 3, 2, 3, 3, 3, 3, 3, 8, 2, 2, 2, 4, 2, 11, 3, 4, 13, 4, 2, 2, 43, 16, 1, 9, 1, 2, 4, 18, 3, 6, 4, 7,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 140,2, 9, 7, 3, 3, 7, 2, 1, 2, 4, 5, 22, 5, 2, 2, 2, 3, 1, 5, 15, 3, 5, 4, 2, 2, 2, 1, 3, 32, 4,
- 2, 3, 3, 2, 1, 2, 1, 1, 12, 3, 2, 2, 1, 1, 1, 3, 7, 1, 17, 4, 3, 1, 1, 1, 4, 1, 1, 16, 10, 8, 5, 5, 26, 4, 11, 8, 2, 6, 10, 2, 1,
- 1, 1, 1, 2, 3, 15, 4, 4, 3, 6, 7, 2, 2, 12, 2, 2, 4, 3, 4, 2, 15, 4, 5, 2, 6, 6, 12, 1, 1, 3, 2, 2, 23, 13, 5, 4, 3, 2, 1, 6, 2,
- 57, 2, 2, 2, 13, 11, 9, 2, 3, 8, 7, 7, 6, 6, 6, 3, 3, 1, 1, 17, 7, 5, 5, 5, 9, 5, 4, 4, 1, 3, 1, 1, 1, 84, 13, 8, 3, 2, 27, 5, 3,
- 7, 2, 1, 1, 6, 22, 4, 3, 15, 3, 1, 1, 1, 3, 3, 9, 4, 2, 32, 4, 4, 7, 4, 3, 6, 5, 5, 3, 3, 3, 2, 10, 4, 7, 2, 2, 9, 4, 3, 5, 4,
- 157,5, 15, 5, 4, 5, 4, 3, 16, 14, 9, 3, 3, 35, 1, 8, 4, 2, 4, 2, 6, 4, 3, 2, 4, 6, 5, 2, 2, 29, 9, 9, 6, 5, 3, 1, 18, 4, 3, 6, 3,
- 3, 3, 4, 2, 2, 1, 1, 1, 1, 1, 13, 3, 3, 3, 3, 3, 1, 1, 2, 190,4, 3, 6, 4, 57, 30, 26, 6, 2, 3, 3, 5, 3, 4, 9, 4, 1, 1, 1, 1, 90,
- 8, 2, 2, 2, 5, 3, 5, 3, 34, 9, 2, 2, 3, 3, 3, 5, 3, 2, 11, 9, 9, 9, 2, 2, 8, 5, 4, 2, 2, 14, 7, 7, 6, 3, 4, 4, 4, 1, 133,17, 1,
- 40, 13, 6, 7, 15, 2, 1, 1, 1, 1, 2, 3, 2, 8, 5, 1, 1, 1, 1, 1, 15, 6, 46, 4, 4, 3, 1, 1, 1, 4, 4, 2, 1, 1, 1, 1, 10, 4, 2, 2, 4,
- 4, 4, 12, 15, 8, 6, 109,2, 1, 8, 2, 4, 17, 8, 3, 1, 5, 3, 35, 29, 29, 28, 6, 5, 2, 2, 32, 2, 4, 4, 4, 3, 5, 3, 2, 7, 3, 1, 8, 7, 2,
- 2, 2, 19, 1, 1, 4, 2, 3, 3, 1, 2, 2, 3, 2, 2, 2, 1, 1, 13, 8, 2, 34, 10, 2, 3, 3, 12, 7, 6, 4, 3, 4, 4, 39, 7, 21, 8, 5, 7, 5, 2,
- 1, 1, 1, 19, 3, 6, 2, 2, 2, 55, 3, 3, 3, 7, 2, 2, 2, 2, 5, 2, 6, 12, 4, 4, 7, 19, 15, 8, 8, 99, 4, 43, 43, 6, 6, 2, 2, 18, 16, 14, 17,
- 15, 7, 5, 3, 12, 4, 5, 2, 1, 8, 4, 3, 2, 12, 3, 2, 62, 2, 3, 5, 2, 3, 28, 3, 1, 9, 7, 3, 3, 2, 2, 2, 2, 159,8, 24, 3, 2, 13, 13, 4,
- 3, 3, 3, 4, 1, 2, 2, 45, 2, 7, 4, 3, 4, 9, 2, 3, 3, 3, 11, 4, 3, 1, 1, 24, 8, 6, 6, 25, 3, 3, 4, 3, 3, 8, 6, 2, 2, 6, 4, 117,6,
- 2, 10, 4, 3, 8, 2, 7, 2, 16, 6, 2, 7, 13, 8, 7, 3, 3, 3, 13, 9, 2, 6, 13, 3, 2, 2, 2, 6, 2, 2, 1, 42, 26, 14, 1, 1, 1, 1, 1, 4, 5,
- 3, 5, 4, 47, 10, 1, 1, 1, 1, 9, 3, 5, 1, 4, 2, 3, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 33, 6, 1,
- 5, 2, 4, 5, 2, 1, 4, 71, 15, 13, 6, 4, 3, 4, 4, 11, 7, 3, 4, 5, 10, 3, 2, 5, 6, 2, 4, 3, 7, 3, 5, 3, 2, 1, 1, 11, 5, 5, 3, 1, 1,
- 2, 2, 14, 7, 4, 3, 2, 1, 1, 1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 4, 1, 23, 9, 2, 3, 10, 10, 45, 7, 7, 4, 10, 7, 6, 2, 2, 8, 3, 7, 18, 2,
- 1, 6, 2, 4, 1, 33, 7, 8, 2, 3, 1, 2, 7, 5, 3, 24, 2, 2, 4, 4, 4, 1, 1, 12, 2, 3, 1, 3, 17, 3, 3, 2, 2, 2, 2, 1, 3, 1, 1, 3, 2,
- 8, 4, 2, 13, 6, 4, 3, 32, 8, 4, 5, 3, 6, 2, 1, 1, 1, 5, 2, 4, 3, 90, 5, 2, 2, 3, 18, 2, 10, 9, 6, 4, 2, 29, 13, 3, 3, 3, 5, 3, 3,
- 6, 2, 2, 3, 2, 2, 166,42, 2, 2, 3, 25, 5, 4, 4, 4, 6, 4, 15, 1, 3, 2, 3, 2, 4, 6, 3, 3, 13, 2, 2, 1, 1, 1, 12, 3, 2, 3, 8, 3, 3,
- 3, 25, 2, 3, 2, 16, 12, 4, 3, 3, 5, 2, 11, 2, 2, 1, 2, 110,7, 3, 5, 11, 1, 2, 18, 7, 2, 2, 14, 6, 3, 11, 3, 7, 4, 3, 8, 1, 5, 13, 2,
- 95, 2, 3, 2, 7, 23, 2, 6, 8, 9, 2, 3, 25, 14, 3, 2, 2, 2, 4, 3, 2, 2, 111,1, 1, 1, 1, 1, 1, 1, 8, 3, 3, 2, 3, 7, 2, 3, 9, 5, 2,
- 7, 4, 2, 2, 2, 28, 5, 5, 5, 5, 5, 2, 1, 1, 13, 2, 5, 4, 4, 18, 5, 2, 12, 1, 2, 2, 3, 2, 2, 2, 219,7, 10, 4, 9, 8, 3, 4, 1, 1, 9,
- 7, 3, 1, 16, 2, 4, 3, 1, 8, 7, 24, 9, 5, 6, 3, 1, 10, 1, 1, 4, 7, 5, 4, 4, 6, 6, 3, 3, 46, 7, 2, 22, 1, 1, 2, 2, 6, 4, 13, 1, 10,
- 3, 2, 33, 4, 12, 3, 3, 3, 6, 3, 2, 2, 2, 2, 11, 6, 4, 3, 44, 1, 3, 8, 5, 4, 1, 14, 10, 7, 7, 3, 47, 13, 11, 4, 3, 5, 2, 3, 2, 5, 6,
- 1, 1, 11, 5, 4, 3, 100,3, 3, 22, 21, 5, 2, 10, 9, 1, 6, 2, 3, 2, 4, 30, 1, 6, 1, 8, 5, 6, 3, 2, 1, 3, 2, 2, 1, 10, 1, 4, 3, 5, 2,
- 8, 1, 69, 5, 3, 1, 1, 13, 4, 6, 6, 5, 32, 5, 3, 17, 3, 1, 3, 6, 3, 10, 6, 4, 1, 1, 1, 1, 1, 27, 3, 2, 2, 3, 9, 5, 3, 4, 2, 1, 1,
- 1, 12, 4, 2, 1, 3, 2, 2, 57, 13, 7, 3, 4, 17, 3, 3, 10, 3, 4, 27, 15, 4, 4, 9, 7, 7, 7, 13, 2, 2, 9, 1, 1, 6, 6, 1, 9, 6, 3, 3, 3,
- 1, 4, 51, 15, 2, 2, 2, 23, 5, 1, 3, 6, 4, 2, 2, 3, 3, 29, 2, 2, 4, 3, 3, 3, 9, 225,4, 6, 5, 5, 5, 3, 194,12, 5, 5, 4, 1, 1, 2, 1,
- 24, 2, 2, 2, 10, 8, 8, 5, 4, 3, 2, 2, 10, 9, 6, 6, 6, 2, 1, 3, 3, 3, 26, 10, 9, 3, 3, 2, 11, 11, 10, 4, 3, 6, 3, 3, 3, 3, 2, 2, 2,
- 2, 2, 18, 3, 3, 3, 3, 13, 8, 18, 9, 9, 5, 4, 3, 3, 14, 2, 1, 1, 11, 1, 3, 3, 3, 4, 2, 2, 2, 6, 35, 5, 3, 2, 3, 5, 19, 10, 9, 6, 3,
- 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 6, 5, 3, 3, 2, 2, 2, 22, 5, 2, 4, 3, 9, 3, 1, 1, 15, 9, 2, 2, 4, 2, 25, 1, 1, 3, 8, 7, 5, 5, 7,
- 47, 5, 1, 29, 16, 10, 8, 3, 9, 2, 2, 8, 5, 11, 1, 2, 44, 6, 4, 4, 4, 8, 13, 3, 3, 7, 7, 13, 5, 16, 2, 5, 3, 3, 1, 5, 1, 1, 1, 7, 3,
- 1, 22, 3, 1, 1, 3, 3, 8, 1, 6, 2, 2, 10, 2, 2, 11, 5, 9, 3, 4, 2, 30, 3, 9, 7, 7, 3, 3, 7, 33, 6, 5, 2, 5, 3, 2, 11, 1, 3, 3, 3,
- 5, 2, 1, 28, 4, 2, 2, 6, 6, 6, 6, 5, 10, 2, 2, 1, 3, 28, 4, 6, 2, 11, 4, 6, 3, 4, 2, 2, 2, 2, 2, 2, 30, 7, 9, 6, 4, 4, 3, 2, 5,
- 5, 5, 33, 6, 6, 1, 3, 3, 12, 5, 4, 36, 2, 3, 1, 1, 7, 2, 15, 5, 5, 3, 3, 7, 6, 5, 5, 11, 2, 2, 3, 13, 2, 2, 1, 5, 3, 26, 1, 9, 7,
- 7, 5, 2, 2, 5, 4, 4, 2, 3, 20, 1, 12, 6, 4, 24, 3, 3, 3, 3, 2, 1, 1, 1, 1, 1, 7, 37, 2, 2, 1, 1, 2, 4, 15, 2, 11, 2, 4, 8, 4, 1,
- 8, 48, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 15, 11, 2, 1, 1, 1, 7, 2, 2, 15, 8, 1, 21, 2, 2, 11, 5, 14, 4, 3, 12, 10, 8, 8, 2, 2, 2,
- 16, 3, 2, 5, 8, 4, 3, 1, 5, 4, 228,4, 8, 2, 4, 2, 2, 4, 3, 10, 2, 3, 1, 2, 2, 12, 11, 9, 6, 16, 2, 13, 5, 4, 1, 1, 20, 11, 4, 3, 3,
- 4, 15, 1, 4, 11, 9, 4, 20, 4, 7, 6, 2, 8, 19, 1, 1, 4, 4, 10, 37, 15, 2, 2, 12, 10, 3, 1, 1, 3, 3, 4, 7, 6, 2, 2, 2, 7, 5, 5, 7, 1,
- 1, 2, 1, 1, 1, 182,4, 3, 4, 24, 3, 16, 5, 2, 14, 6, 4, 22, 3, 2, 5, 3, 2, 4, 3, 3, 10, 3, 20, 7, 2, 11, 7, 18, 5, 1, 6, 4, 3, 32, 2,
- 7, 4, 17, 4, 5, 4, 2, 2, 7, 6, 5, 29, 1, 4, 2, 2, 3, 1, 3, 6, 2, 1, 1, 1, 3, 2, 3, 1, 1, 98, 19, 4, 8, 2, 1, 2, 11, 10, 3, 2, 2,
- 1, 2, 1, 9, 1, 2, 1, 10, 1, 1, 2, 4, 3, 1, 2, 1, 1, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 36, 3, 3, 3, 3, 2, 2, 6, 2, 2, 2, 7, 4, 3,
- 4, 4, 3, 2, 2, 2, 1, 1, 1, 6, 4, 4, 4, 3, 1, 1, 1, 13, 3, 2, 1, 2, 40, 5, 5, 15, 12, 5, 3, 3, 2, 3, 2, 1, 4, 4, 29, 2, 4, 4, 5,
- 12, 8, 4, 2, 1, 10, 4, 13, 5, 4, 4, 18, 8, 2, 5, 17, 7, 3, 3, 2, 2, 6, 1, 3, 7, 2, 1, 3, 7, 1, 1, 1, 1, 41, 5, 2, 2, 9, 3, 16, 3,
- 5, 3, 3, 45, 4, 14, 10, 7, 2, 5, 2, 2, 6, 2, 6, 5, 3, 51, 4, 7, 8, 2, 1, 1, 1, 1, 2, 2, 13, 5, 6, 3, 8, 6, 5, 1, 2, 9, 1, 3, 21,
- 7, 5, 2, 1, 1, 3, 2, 4, 4, 236,8, 4, 43, 3, 6, 8, 5, 23, 3, 2, 1, 1, 1, 8, 3, 4, 7, 7, 3, 8, 3, 28, 2, 7, 4, 7, 4, 3, 7, 3, 5,
- 3, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 11, 2, 9, 2, 6, 3, 2, 6, 3, 3, 4, 3, 5, 5, 2, 2, 1, 17, 6, 8, 2, 2, 2, 2, 3, 12, 7,
- 6, 2, 3, 3, 2, 32, 10, 5, 2, 1, 2, 5, 5, 3, 5, 2, 38, 3, 1, 1, 1, 5, 3, 3, 3, 1, 9, 6, 3, 4, 8, 3, 2, 3, 5, 4, 1, 8, 3, 4, 4,
- 3, 12, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 169,12, 3, 48, 5, 5, 20, 6, 7, 6, 4, 4, 8, 8, 5, 2, 81, 4, 1, 4, 5, 5, 3, 2, 28, 8,
- 1, 5, 1, 3, 14, 2, 11, 5, 12, 6, 6, 2, 24, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 1, 3, 2, 3, 2, 4, 1, 159,3, 2, 4, 2, 7, 4,
- 3, 5, 3, 4, 2, 3, 16, 1, 11, 10, 1, 2, 10, 2, 3, 3, 3, 16, 2, 4, 4, 6, 2, 36, 13, 5, 3, 3, 2, 9, 5, 6, 2, 8, 31, 8, 7, 4, 2, 1, 8,
- 4, 6, 2, 2, 1, 1, 13, 5, 2, 2, 2, 2, 1, 1, 8, 2, 4, 1, 1, 12, 1, 2, 2, 1, 1, 8, 7, 2, 1, 2, 1, 1, 1, 1, 5, 2, 1, 28, 1, 4, 2,
- 3, 2, 10, 7, 7, 6, 5, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 23, 5, 3, 2, 8, 4, 2, 1, 4, 22, 6, 1, 3, 2, 3, 4, 3,
- 20, 1, 1, 1, 1, 2, 2, 1, 2, 2, 3, 2, 17, 2, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 4, 1, 1, 26, 9, 1, 3, 3, 1, 1, 3, 8, 2, 45, 2,
- 1, 1, 2, 2, 4, 1, 1, 1, 1, 5, 4, 1, 12, 4, 2, 3, 6, 4, 3, 1, 1, 1, 2, 11, 1, 1, 1, 1, 2, 12, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
- 21, 3, 2, 2, 1, 4, 1, 1, 1, 1, 1, 6, 4, 4, 4, 1, 123,9, 1, 1, 3, 2, 7, 5, 5, 14, 1, 5, 2, 3, 14, 3, 3, 2, 3, 1, 5, 8, 6, 8, 2,
- 29, 7, 7, 6, 5, 19, 17, 5, 5, 2, 1, 4, 3, 2, 2, 1, 2, 5, 2, 5, 3, 2, 1, 4, 2, 2, 73, 12, 3, 3, 2, 21, 3, 1, 1, 6, 3, 2, 2, 2, 8,
- 3, 3, 5, 2, 2, 1, 1, 3, 3, 7, 3, 1, 12, 4, 1, 2, 2, 1, 1, 64, 6, 3, 2, 1, 1, 7, 6, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 1, 1, 1, 1, 1, 4, 3, 1, 1, 3, 2, 5, 2, 2, 8, 4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 1, 2, 3, 2, 5, 4, 2, 5, 5, 2, 2, 1, 2, 2,
- 2, 2, 2, 3, 2, 2, 1, 28, 1, 1, 10, 4, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 1, 1, 3, 2, 4, 1, 1, 1, 1, 5, 3, 94, 7, 2, 7, 2, 1, 4, 1,
- 1, 1, 1, 3, 3, 3, 3, 10, 8, 1, 1, 3, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 10, 2, 7, 48, 1, 1, 10, 2, 2, 3, 5, 1,
- 2, 2, 1, 1, 23, 1, 2, 2, 2, 2, 1, 1, 1, 8, 4, 4, 4, 1, 3, 2, 2, 5, 4, 4, 3, 3, 1, 1, 1, 3, 1, 2, 4, 1, 1, 3, 2, 2, 3, 4, 2,
- 2, 3, 1, 1, 1, 206,3, 1, 173,4, 2, 2, 1, 3, 2, 1, 1, 1, 2, 151,3, 1, 1, 1, 4, 2, 12, 2, 2, 1, 2, 2, 2, 3, 4, 8, 2, 2, 2, 2, 2,
- 2, 3, 4, 4, 4, 4, 3, 13, 2, 4, 7, 3, 3, 4, 4, 2, 2, 11, 8, 6, 4, 4, 2, 2, 15, 6, 2, 2, 2, 2, 2, 5, 5, 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 27, 4, 3, 1, 1, 3, 16, 10, 7, 6, 3, 1, 1, 2, 13, 9, 8, 5, 4, 2, 1, 1, 18, 3, 4, 1, 1, 4, 5, 5, 5, 6, 2, 2, 3, 4, 4, 2,
- 2, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 6, 3, 1, 1, 1, 2, 1, 1, 1, 1, 6, 1, 1, 2, 2, 4, 1, 4, 3, 2, 41, 8, 5, 4, 3, 2, 2, 2,
- 2, 2, 3, 3, 3, 3, 3, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 3, 3, 2, 2, 2, 2, 2, 1, 3, 3, 3, 8, 8, 2, 4, 2, 2, 2, 1, 48, 14, 5,
- 1, 2, 2, 2, 1, 1, 1, 1, 1, 4, 4, 3, 4, 2, 2, 1, 1, 1, 15, 1, 9, 1, 5, 1, 4, 4, 2, 4, 3, 1, 1, 4, 1, 1, 2, 24, 5, 5, 5, 2, 4,
- 2, 1, 2, 2, 1, 1, 1, 4, 19, 5, 3, 6, 3, 1, 1, 1, 2, 2, 3, 150,4, 16, 3, 2, 7, 2, 8, 3, 3, 2, 2, 2, 11, 4, 5, 5, 5, 4, 2, 1, 1,
- 8, 2, 2, 2, 6, 2, 1, 1, 3, 2, 2, 2, 20, 1, 2, 3, 2, 2, 1, 3, 2, 8, 8, 2, 2, 2, 2, 3, 3, 1, 2, 1, 15, 14, 7, 2, 1, 1, 3, 5, 16,
- 7, 4, 5, 35, 2, 31, 31, 30, 9, 8, 5, 3, 16, 12, 7, 4, 4, 4, 4, 11, 1, 8, 7, 7, 31, 3, 2, 7, 6, 9, 1, 1, 3, 10, 5, 21, 9, 2, 1, 2, 4,
- 3, 3, 3, 3, 3, 5, 2, 2, 2, 1, 1, 3, 1, 18, 5, 2, 8, 2, 2, 2, 4, 1, 2, 1, 16, 4, 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 2, 4, 1,
- 1, 1, 1, 1, 42, 11, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, 3, 2, 2, 2, 2, 2, 2, 2, 5, 3, 3, 3, 3, 16, 6, 1, 1, 3, 3, 1, 1, 1, 1, 1,
- 1, 9, 2, 2, 2, 3, 1, 2, 2, 1, 6, 6, 4, 3, 3, 3, 3, 52, 9, 2, 4, 34, 8, 2, 3, 2, 2, 4, 4, 3, 3, 3, 2, 5, 2, 1, 1, 3, 1, 1, 6,
- 1, 3, 2, 1, 1, 1, 3, 2, 2, 2, 2, 3, 77, 9, 2, 4, 3, 3, 3, 7, 1, 1, 1, 1, 1, 1, 1, 3, 1, 15, 6, 1, 1, 3, 2, 2, 4, 2, 5, 3, 1,
- 1, 1, 1, 1, 9, 4, 2, 1, 4, 2, 1, 1, 1, 1, 1, 1, 8, 3, 1, 2, 1, 1, 15, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 4, 3, 2, 2, 2, 1,
- 1, 1, 2, 42, 5, 2, 12, 10, 1, 1, 1, 1, 1, 1, 2, 1, 8, 7, 4, 4, 4, 7, 3, 1, 2, 1, 1, 5, 4, 10, 2, 2, 6, 2, 1, 25, 5, 2, 3, 2, 10,
- 3, 3, 3, 3, 3, 3, 2, 4, 1, 1, 3, 2, 144,1, 1, 1, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 3, 2, 2, 11, 2, 2, 2, 2, 2, 1, 3, 4, 4,
- 12, 3, 2, 6, 5, 2, 2, 12, 6, 4, 2, 4, 1, 1, 3, 16, 10, 8, 3, 1, 1, 1, 4, 3, 3, 2, 12, 2, 5, 4, 24, 3, 3, 2, 8, 7, 14, 2, 3, 2, 2,
- 2, 2, 2, 1, 1, 6, 4, 2, 183,18, 2, 7, 2, 2, 31, 22, 18, 10, 6, 3, 4, 2, 13, 5, 4, 3, 10, 7, 29, 4, 2, 3, 7, 6, 4, 3, 3, 3, 2, 5, 3,
- 6, 1, 6, 1, 1, 8, 8, 6, 3, 8, 3, 1, 3, 17, 5, 1, 1, 5, 3, 7, 3, 7, 3, 2, 2, 1, 1, 1, 145,27, 2, 3, 3, 6, 25, 3, 12, 3, 1, 1, 1,
- 2, 2, 1, 11, 3, 2, 7, 1, 9, 3, 6, 2, 2, 5, 3, 4, 4, 4, 9, 9, 4, 3, 11, 1, 1, 1, 1, 1, 7, 6, 81, 5, 2, 10, 3, 3, 1, 1, 6, 1, 2,
- 2, 15, 14, 14, 4, 3, 1, 1, 1, 1, 3, 1, 2, 1, 1, 5, 1, 1, 1, 16, 4, 3, 2, 9, 8, 1, 2, 3, 1, 2, 2, 2, 1, 1, 4, 11, 1, 1, 5, 4, 3,
- 2, 6, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 11, 8, 2, 1, 16, 4, 4, 4, 2, 2, 1, 2, 3, 2, 3, 1, 1, 1, 1, 3, 3, 3, 1, 1, 4, 47,
- 16, 6, 3, 7, 5, 13, 6, 5, 3, 6, 6, 6, 3, 2, 2, 2, 6, 23, 3, 6, 7, 5, 2, 2, 1, 2, 2, 2, 3, 1, 1, 1, 2, 2, 25, 5, 3, 3, 3, 2, 5,
- 4, 5, 32, 3, 9, 4, 2, 2, 6, 1, 1, 2, 1, 1, 9, 5, 3, 3, 3, 2, 2, 7, 1, 1, 1, 1, 1, 1, 2, 2, 7, 3, 242,16, 4, 2, 3, 5, 1, 16, 8,
- 3, 2, 2, 3, 3, 3, 4, 2, 69, 1, 1, 1, 35, 8, 6, 3, 15, 11, 9, 6, 2, 22, 15, 5, 2, 4, 2, 2, 25, 4, 4, 10, 4, 2, 2, 6, 2, 56, 13, 1, 1,
- 4, 2, 2, 3, 3, 24, 2, 2, 3, 3, 5, 11, 5, 6, 4, 10, 3, 1, 1, 1, 1, 3, 4, 4, 2, 10, 4, 4, 1, 1, 6, 4, 18, 2, 2, 13, 8, 8, 32, 2, 7,
- 4, 4, 4, 1, 1, 2, 1, 4, 2, 2, 1, 3, 2, 3, 21, 8, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 5, 1, 1, 3, 2, 2, 19, 2, 2, 4, 3, 2, 7, 2,
- 2, 197,17, 1, 10, 4, 1, 144,4, 1, 2, 3, 3, 2, 6, 3, 1, 13, 1, 10, 4, 4, 4, 3, 1, 83, 2, 8, 2, 5, 1, 4, 3, 11, 3, 2, 6, 4, 3, 6, 3,
- 6, 2, 2, 2, 4, 1, 3, 1, 8, 3, 3, 2, 3, 2, 1, 5, 3, 2, 12, 6, 2, 2, 3, 1, 4, 3, 2, 12, 2, 7, 2, 6, 3, 2, 3, 10, 3, 7, 4, 6, 3,
- 7, 3, 3, 6, 26, 3, 1, 2, 3, 2, 5, 2, 3, 2, 2, 24, 3, 5, 3, 1, 2, 7, 4, 4, 2, 40, 10, 1, 5, 1, 1, 1, 8, 2, 18, 2, 2, 5, 3, 3, 2,
- 20, 4, 6, 1, 8, 2, 2, 1, 2, 1, 1, 2, 21, 4, 2, 6, 2, 2, 5, 3, 4, 2, 7, 4, 1, 1, 1, 1, 1, 30, 8, 3, 3, 8, 5, 3, 8, 4, 1, 2, 22,
- 2, 2, 6, 3, 2, 5, 2, 2, 7, 2, 2, 1, 1, 1, 1, 3, 3, 3, 6, 2, 2, 39, 13, 6, 4, 2, 1, 5, 5, 3, 2, 1, 2, 2, 3, 1, 2, 10, 5, 5, 4,
- 3, 2, 1, 16, 5, 2, 1, 3, 2, 3, 3, 2, 16, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 5, 2, 2, 2, 2, 2, 1, 23, 5, 3, 1, 1, 1, 1, 5, 2,
- 4, 2, 1, 2, 5, 1, 1, 3, 2, 1, 1, 1, 1, 9, 4, 4, 2, 8, 7, 5, 5, 5, 5, 4, 144,17, 2, 7, 2, 2, 11, 6, 2, 12, 4, 4, 7, 34, 14, 5, 2,
- 2, 5, 9, 2, 4, 2, 3, 2, 3, 18, 4, 3, 6, 2, 3, 5, 2, 2, 2, 7, 2, 3, 4, 3, 5, 3, 107,9, 1, 9, 6, 4, 2, 2, 2, 3, 3, 7, 2, 2, 2,
- 6, 22, 21, 4, 10, 2, 2, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 19, 7, 5, 6, 3, 14, 4, 3, 3, 1, 1, 1, 3, 2, 2, 17, 1, 2, 1,
- 2, 2, 2, 1, 5, 4, 1, 1, 33, 2, 1, 6, 2, 2, 2, 2, 2, 7, 7, 7, 5, 6, 4, 2, 2, 7, 2, 19, 13, 13, 10, 3, 3, 2, 21, 6, 1, 5, 2, 2, 1,
- 1, 1, 5, 2, 6, 2, 2, 1, 1, 3, 3, 1, 2, 1, 13, 3, 2, 16, 5, 5, 1, 6, 10, 1, 16, 3, 4, 6, 34, 9, 4, 16, 15, 14, 4, 4, 3, 3, 11, 2, 3,
- 2, 2, 2, 1, 1, 21, 1, 1, 1, 1, 7, 3, 2, 4, 6, 1, 3, 2, 2, 95, 17, 5, 4, 4, 4, 6, 1, 8, 13, 7, 4, 10, 3, 3, 2, 13, 4, 3, 2, 8, 3,
- 5, 4, 3, 2, 182,8, 3, 3, 15, 6, 3, 4, 3, 34, 9, 5, 8, 6, 4, 4, 6, 4, 11, 5, 4, 4, 2, 9, 5, 11, 6, 3, 2, 5, 2, 57, 8, 1, 4, 19, 4,
- 9, 4, 2, 2, 2, 2, 16, 15, 8, 4, 10, 4, 5, 2, 2, 2, 13, 2, 1, 6, 4, 4, 2, 1, 22, 9, 3, 3, 2, 2, 4, 2, 4, 1, 1, 1, 1, 1, 33, 4, 10,
- 3, 10, 2, 5, 11, 2, 2, 4, 1, 2, 2, 2, 18, 4, 7, 3, 10, 4, 1, 2, 2, 2, 24, 7, 5, 2, 4, 2, 1, 1, 1, 6, 3, 6, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 14, 6, 5, 4, 16, 2, 1, 5, 2, 6, 5, 1, 1, 3, 25, 5, 8, 6, 5, 17, 13, 3, 7, 1, 1, 15, 3, 5, 3, 28, 8, 5, 6, 1, 3, 4, 2,
- 1, 21, 8, 5, 5, 5, 8, 5, 2, 5, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 2, 2, 2, 2, 57, 2, 3, 5, 4, 1, 9, 3, 4, 4, 7, 5,
- 22, 4, 7, 3, 1, 1, 1, 32, 8, 7, 3, 3, 11, 9, 3, 5, 4, 3, 4, 3, 2, 1, 1, 1, 97, 1, 1, 3, 1, 26, 8, 1, 4, 2, 1, 1, 2, 2, 1, 4, 2,
- 2, 2, 2, 3, 2, 2, 2, 7, 2, 2, 6, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 16, 10, 10, 9, 2, 1, 1, 4, 3,
- 3, 4, 1, 2, 1, 19, 4, 4, 12, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, 2, 2, 1, 1, 8, 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 6,
- 33, 2, 1, 2, 6, 6, 4, 1, 23, 2, 3, 1, 15, 14, 2, 2, 2, 10, 1, 101,8, 8, 5, 15, 7, 4, 4, 3, 3, 4, 2, 1, 2, 1, 10, 2, 5, 1, 1, 1, 1,
- 17, 6, 5, 2, 5, 35, 5, 5, 27, 24, 16, 6, 1, 3, 61, 14, 6, 2, 24, 19, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 2, 2, 2, 6, 4, 4, 3, 4, 6, 6,
- 2, 71, 2, 7, 12, 4, 3, 4, 10, 3, 2, 10, 2, 2, 15, 5, 3, 2, 2, 43, 2, 3, 5, 2, 2, 9, 7, 4, 4, 2, 10, 3, 5, 2, 7, 5, 4, 3, 2, 5, 9,
- 8, 8, 7, 2, 3, 2, 35, 11, 7, 3, 3, 4, 7, 6, 5, 3, 3, 3, 2, 1, 1, 8, 8, 8, 5, 163,14, 3, 4, 5, 3, 1, 1, 5, 2, 2, 2, 121,86, 5, 1,
- 1, 1, 5, 8, 1, 1, 1, 1, 6, 5, 13, 6, 2, 2, 5, 4, 14, 4, 1, 3, 3, 2, 1, 1, 12, 1, 1, 3, 4, 3, 2, 1, 1, 21, 1, 1, 1, 1, 1, 1, 1,
- 3, 2, 2, 2, 2, 1, 7, 3, 3, 2, 7, 3, 102,11, 5, 4, 1, 18, 13, 9, 5, 3, 1, 11, 8, 6, 2, 11, 8, 3, 1, 5, 3, 5, 2, 2, 2, 1, 1, 4, 13,
- 3, 2, 4, 2, 36, 34, 12, 13, 5, 3, 7, 6, 5, 1, 1, 20, 1, 1, 13, 13, 91, 9, 2, 2, 2, 2, 9, 2, 2, 26, 2, 18, 4, 13, 8, 6, 2, 2, 5, 3, 2,
- 18, 16, 6, 4, 5, 4, 3, 11, 1, 1, 1, 97, 9, 1, 1, 2, 17, 3, 3, 11, 5, 4, 4, 5, 8, 2, 3, 2, 1, 1, 1, 24, 3, 6, 6, 11, 4, 3, 2, 6, 1,
- 1, 1, 4, 4, 11, 11, 11, 8, 1, 1, 2, 2, 2, 2, 88, 30, 2, 16, 8, 3, 14, 5, 4, 3, 2, 8, 2, 2, 7, 3, 7, 2, 14, 3, 3, 5, 4, 3, 3, 49, 12,
- 3, 3, 10, 2, 1, 2, 2, 21, 7, 6, 3, 4, 2, 17, 2, 2, 4, 4, 2, 2, 3, 1, 1, 1, 3, 14, 1, 3, 2, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 55, 42, 3, 1, 28, 8, 5, 5, 2, 2, 11, 2, 1, 1, 5, 5, 4, 2, 2, 3, 3, 3, 1, 1, 2, 2, 6, 2, 2,
- 3, 1, 2, 1, 3, 1, 1, 1, 1, 28, 18, 2, 2, 12, 7, 3, 3, 1, 2, 1, 1, 2, 3, 2, 2, 11, 3, 4, 15, 2, 7, 3, 3, 2, 4, 2, 25, 11, 8, 1, 1,
- 2, 5, 5, 36, 8, 7, 4, 2, 4, 3, 5, 5, 5, 5, 7, 3, 2, 2, 151,7, 3, 3, 2, 12, 7, 7, 3, 3, 5, 4, 3, 6, 2, 2, 2, 5, 3, 19, 4, 2, 4,
- 4, 1, 1, 1, 2, 21, 9, 2, 4, 2, 5, 3, 9, 5, 2, 7, 2, 4, 12, 5, 2, 16, 4, 8, 8, 6, 6, 5, 1, 2, 11, 10, 4, 4, 55, 4, 1, 3, 2, 1, 1,
- 1, 2, 1, 13, 4, 4, 2, 1, 2, 5, 5, 2, 2, 2, 2, 11, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 4, 2, 2, 2, 1, 1, 1, 7, 2,
- 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 17, 6, 6, 6, 8, 5, 3, 1, 1, 1, 56, 7, 3, 1, 3, 3, 3, 1, 2, 3, 11, 8, 3, 2, 1, 3, 2, 1, 1, 4, 6,
- 3, 3, 2, 4, 3, 2, 22, 3, 2, 3, 3, 4, 16, 2, 2, 1, 10, 11, 8, 4, 2, 2, 8, 4, 2, 1, 1, 18, 12, 12, 11, 4, 3, 3, 1, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 38, 14, 3, 6, 2, 2, 3, 9, 1, 1, 4, 3, 2, 3, 1, 1, 1, 1, 7, 4, 1, 1, 3, 2, 1, 1, 1, 8, 3, 1, 1, 1, 1, 1, 1, 1, 15, 3,
- 1, 1, 1, 1, 2, 3, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 43, 1, 2, 1, 1, 2, 1, 1, 1, 8, 2, 2, 3, 3, 20, 7, 7, 2, 2, 4, 3, 3, 3,
- 3, 2, 1, 4, 1, 1, 1, 1, 3, 3, 2, 2, 4, 1, 1, 1, 1, 1, 1, 13, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 5, 1, 1, 1,
- 3, 2, 7, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 15, 3, 3, 7, 3,
- 37, 1, 1, 15, 4, 3, 5, 12, 7, 3, 2, 3, 2, 1, 48, 15, 4, 4, 2, 2, 10, 4, 6, 3, 7, 2, 1, 1, 14, 7, 3, 3, 2, 54, 5, 1, 15, 6, 11, 2, 5,
- 3, 3, 4, 4, 3, 2, 1, 1, 1, 37, 3, 2, 1, 3, 3, 3, 3, 2, 12, 5, 2, 4, 2, 2, 71, 4, 3, 3, 4, 9, 1, 1, 1, 2, 2, 2, 2, 4, 2, 9, 2,
- 3, 27, 5, 1, 1, 6, 6, 2, 32, 5, 1, 1, 18, 2, 2, 2, 3, 1, 4, 2, 4, 4, 10, 5, 11, 4, 4, 46, 12, 1, 5, 3, 7, 12, 2, 6, 16, 3, 2, 2, 2,
- 7, 38, 3, 2, 10, 5, 7, 6, 3, 1, 2, 2, 2, 5, 1, 83, 17, 7, 4, 2, 19, 6, 2, 3, 2, 11, 6, 5, 1, 1, 11, 2, 3, 3, 6, 3, 2, 4, 5, 3, 5,
- 2, 15, 1, 1, 3, 5, 2, 40, 14, 2, 10, 5, 8, 3, 2, 2, 3, 1, 2, 16, 4, 1, 5, 1, 1, 104,4, 2, 20, 11, 9, 2, 7, 11, 2, 3, 4, 10, 5, 4, 2,
- 11, 6, 2, 6, 2, 16, 2, 13, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 254,1, 6, 3, 10, 2, 1, 3, 2, 7, 3, 4, 4, 4, 27, 2, 5, 2, 2, 3, 3, 4, 2,
- 3, 16, 7, 4, 4, 7, 2, 2, 6, 4, 14, 6, 4, 3, 3, 2, 1, 5, 4, 8, 3, 1, 11, 3, 7, 23, 3, 4, 2, 5, 3, 2, 26, 2, 11, 4, 2, 10, 2, 36, 9,
- 8, 6, 9, 7, 1, 16, 4, 3, 7, 1, 1, 1, 16, 2, 5, 3, 17, 2, 4, 2, 2, 2, 3, 1, 126,3, 4, 3, 2, 2, 3, 40, 2, 3, 7, 8, 7, 5, 4, 3, 1,
- 4, 10, 3, 8, 3, 3, 4, 3, 4, 20, 8, 2, 4, 4, 14, 9, 1, 2, 2, 3, 151,7, 2, 1, 1, 2, 24, 24, 2, 75, 74, 7, 4, 1, 8, 6, 4, 4, 2, 7, 2,
- 3, 3, 5, 3, 9, 4, 5, 2, 2, 2, 11, 3, 2, 3, 2, 5, 2, 2, 3, 5, 5, 7, 5, 5, 15, 6, 2, 4, 2, 18, 2, 2, 4, 3, 2, 2, 2, 2, 1, 1, 30,
- 23, 4, 1, 2, 5, 4, 2, 2, 6, 1, 1, 1, 5, 2, 1, 9, 1, 1, 46, 3, 3, 2, 6, 2, 2, 2, 2, 4, 3, 3, 6, 2, 9, 7, 4, 3, 6, 2, 2, 2, 1,
- 1, 1, 1, 1, 5, 14, 1, 1, 1, 1, 1, 1, 1, 3, 2, 96, 3, 15, 5, 9, 3, 4, 4, 4, 4, 4, 4, 15, 5, 2, 8, 26, 26, 25, 25, 3, 3, 2, 3, 4, 7,
- 53, 8, 6, 4, 3, 3, 3, 2, 2, 3, 2, 4, 4, 3, 3, 3, 12, 3, 3, 2, 2, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 10, 3, 2, 1, 1, 1, 7, 3, 1, 44,
- 12, 5, 2, 1, 5, 5, 7, 2, 10, 6, 3, 5, 5, 4, 68, 13, 3, 1, 1, 16, 5, 3, 4, 3, 2, 4, 7, 2, 3, 1, 3, 3, 18, 3, 5, 2, 2, 1, 1, 1, 2,
- 28, 3, 14, 4, 3, 3, 206,4, 7, 5, 1, 17, 10, 4, 3, 2, 2, 1, 28, 2, 3, 15, 11, 5, 4, 3, 7, 4, 4, 4, 4, 4, 2, 2, 6, 6, 2, 39, 5, 2, 5,
- 4, 4, 2, 5, 2, 2, 4, 3, 2, 4, 3, 15, 2, 9, 54, 5, 3, 12, 9, 4, 2, 2, 1, 5, 3, 3, 2, 2, 1, 1, 16, 2, 7, 4, 3, 1, 2, 11, 5, 2, 2,
+ 5, 4, 2, 3, 2, 1, 1, 2, 2, 2, 3, 8, 4, 3, 3, 2, 2, 6, 4, 4, 4, 2, 1, 12, 5, 3, 6, 5, 5, 5, 9, 4, 3, 40, 8, 2, 2, 3, 3, 2, 27,
+ 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 6, 4, 2, 13, 1, 1, 1, 2, 3, 3, 2, 2, 1, 2, 11, 2, 2, 1, 1, 1, 1, 3, 1, 1, 2, 1, 1, 1, 3, 4, 2,
+ 18, 7, 6, 2, 17, 1, 16, 4, 2, 7, 7, 71, 9, 2, 5, 36, 33, 8, 3, 2, 2, 2, 2, 3, 5, 3, 21, 6, 3, 9, 3, 11, 26, 5, 6, 3, 1, 1, 1, 1, 1,
+ 1, 6, 2, 9, 1, 2, 39, 4, 14, 6, 5, 5, 4, 4, 8, 2, 3, 3, 2, 32, 4, 2, 2, 2, 4, 10, 6, 5, 1, 1, 1, 5, 2, 65, 12, 6, 3, 9, 3, 10, 4,
+ 3, 8, 5, 2, 5, 3, 6, 2, 1, 95, 6, 10, 12, 3, 9, 3, 3, 3, 2, 2, 2, 2, 7, 14, 3, 3, 2, 1, 5, 10, 3, 5, 4, 2, 16, 5, 4, 5, 26, 10, 4,
+ 3, 3, 5, 2, 4, 1, 5, 3, 134,8, 2, 16, 2, 2, 2, 4, 21, 5, 13, 6, 3, 5, 3, 8, 6, 30, 11, 5, 3, 2, 6, 2, 2, 2, 12, 4, 3, 2, 11, 3, 5,
+ 17, 1, 8, 20, 2, 3, 9, 14, 6, 3, 3, 32, 6, 5, 2, 2, 2, 1, 4, 9, 2, 2, 2, 7, 7, 3, 1, 1, 39, 3, 19, 5, 3, 3, 5, 7, 4, 5, 4, 9, 3,
+ 38, 2, 4, 4, 7, 1, 1, 3, 5, 2, 7, 12, 10, 7, 4, 20, 6, 4, 1, 6, 4, 2, 2, 8, 2, 3, 2, 2, 86, 2, 11, 6, 2, 2, 6, 3, 3, 2, 3, 2, 29,
+ 3, 7, 2, 2, 4, 3, 2, 4, 2, 8, 2, 7, 13, 5, 2, 27, 4, 2, 1, 1, 3, 2, 5, 2, 2, 2, 26, 2, 2, 8, 7, 6, 6, 10, 2, 5, 4, 93, 3, 9, 4,
+ 4, 3, 17, 3, 2, 9, 4, 4, 4, 23, 4, 4, 7, 4, 3, 14, 4, 2, 6, 2, 2, 3, 6, 2, 1, 1, 7, 2, 4, 4, 11, 4, 2, 8, 5, 1, 1, 13, 7, 21, 6,
+ 4, 4, 8, 9, 6, 3, 4, 3, 5, 2, 2, 1, 1, 10, 3, 2, 25, 2, 11, 7, 6, 6, 37, 10, 2, 3, 3, 5, 3, 8, 3, 1, 2, 76, 9, 3, 8, 3, 3, 10, 11,
+ 7, 7, 2, 1, 5, 2, 3, 4, 1, 5, 3, 3, 6, 2, 1, 5, 3, 42, 4, 3, 3, 4, 6, 2, 12, 7, 2, 6, 5, 44, 10, 3, 6, 4, 8, 6, 5, 5, 3, 32, 3,
+ 4, 6, 1, 1, 3, 2, 2, 2, 7, 19, 7, 8, 4, 7, 4, 2, 5, 3, 2, 2, 2, 7, 2, 2, 2, 9, 3, 3, 17, 16, 6, 6, 18, 2, 2, 3, 5, 5, 2, 6, 3,
+ 8, 1, 3, 3, 2, 14, 4, 3, 3, 7, 4, 20, 4, 3, 19, 2, 13, 3, 22, 2, 2, 4, 4, 4, 1, 8, 71, 11, 2, 52, 3, 5, 2, 10, 4, 3, 3, 6, 3, 2, 6,
+ 3, 6, 3, 3, 2, 2, 15, 3, 26, 15, 11, 3, 3, 10, 8, 46, 2, 4, 2, 9, 4, 4, 5, 4, 2, 1, 93, 8, 2, 25, 2, 2, 5, 2, 3, 3, 5, 3, 26, 5, 3,
+ 3, 3, 3, 8, 4, 3, 3, 14, 4, 15, 7, 3, 4, 2, 4, 4, 1, 161,5, 7, 2, 3, 3, 2, 2, 5, 14, 12, 8, 7, 3, 6, 3, 2, 4, 21, 6, 16, 7, 1, 12,
+ 3, 5, 17, 3, 3, 4, 2, 9, 4, 3, 25, 4, 14, 6, 5, 2, 2, 2, 2, 4, 16, 4, 3, 2, 2, 1, 2, 1, 1, 19, 3, 5, 1, 1, 34, 2, 3, 8, 3, 3, 8,
+ 5, 1, 2, 3, 3, 53, 3, 9, 4, 2, 1, 1, 1, 1, 1, 7, 6, 5, 4, 26, 2, 1, 10, 5, 2, 4, 2, 2, 2, 97, 2, 1, 21, 3, 6, 5, 3, 3, 5, 4, 4,
+ 42, 5, 2, 1, 3, 3, 3, 8, 7, 5, 6, 3, 1, 1, 6, 4, 3, 3, 4, 2, 7, 4, 3, 114,13, 12, 6, 4, 4, 2, 5, 3, 6, 4, 17, 7, 5, 17, 7, 2, 1,
+ 1, 1, 3, 7, 2, 18, 3, 2, 6, 5, 4, 2, 10, 9, 6, 3, 13, 3, 2, 3, 116,4, 4, 5, 2, 10, 7, 2, 1, 4, 2, 2, 7, 13, 9, 2, 3, 51, 16, 8, 5,
+ 5, 12, 9, 7, 4, 4, 10, 8, 4, 3, 3, 2, 2, 7, 5, 4, 2, 2, 2, 2, 2, 2, 24, 7, 2, 4, 4, 3, 4, 4, 197,10, 10, 8, 8, 3, 2, 21, 14, 8, 5,
+ 4, 3, 3, 3, 3, 13, 7, 15, 5, 2, 3, 3, 21, 3, 4, 5, 2, 5, 4, 3, 2, 2, 2, 4, 9, 2, 2, 74, 7, 61, 52, 2, 2, 2, 3, 3, 2, 7, 2, 3, 4,
+ 2, 2, 6, 6, 5, 6, 197,6, 7, 6, 9, 2, 2, 4, 17, 6, 4, 1, 1, 2, 23, 10, 5, 1, 1, 3, 3, 5, 4, 19, 10, 6, 6, 5, 39, 33, 11, 3, 5, 4, 5,
+ 5, 38, 2, 4, 23, 8, 11, 4, 3, 2, 4, 2, 4, 18, 15, 4, 4, 3, 3, 3, 2, 176,10, 2, 1, 2, 2, 11, 7, 4, 2, 17, 4, 3, 5, 2, 2, 10, 5, 3, 3,
+ 3, 55, 7, 6, 4, 4, 12, 2, 2, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 16, 11, 1, 1, 1, 1, 4, 4, 2, 5, 4, 3, 12, 6, 1, 1, 3, 14, 3, 9,
+ 5, 8, 3, 1, 1, 3, 6, 3, 1, 5, 4, 1, 13, 4, 2, 3, 2, 28, 7, 5, 1, 8, 2, 1, 1, 1, 1, 73, 7, 2, 13, 6, 12, 3, 3, 3, 3, 3, 4, 2, 5,
+ 10, 3, 2, 62, 3, 3, 9, 3, 3, 3, 3, 1, 16, 5, 3, 4, 16, 8, 5, 2, 66, 6, 4, 6, 4, 2, 20, 6, 6, 5, 4, 3, 7, 6, 6, 4, 4, 5, 4, 38, 15,
+ 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 11, 9, 9, 3, 8, 4, 32, 4, 2, 1, 2, 3, 16, 5, 2, 14, 7, 2, 2, 13, 2, 2, 8, 2, 1, 4, 75, 4, 8, 3, 2,
+ 2, 11, 3, 1, 1, 1, 1, 9, 2, 1, 1, 3, 1, 12, 1, 1, 18, 15, 6, 6, 6, 5, 1, 62, 1, 15, 6, 1, 11, 4, 4, 3, 2, 1, 1, 1, 4, 1, 1, 2, 2,
+ 2, 5, 4, 4, 3, 7, 7, 7, 1, 1, 1, 1, 1, 7, 4, 120,9, 3, 10, 3, 2, 6, 3, 1, 1, 4, 4, 26, 20, 6, 4, 9, 20, 9, 5, 3, 1, 15, 10, 6, 10,
+ 5, 5, 5, 5, 3, 5, 3, 2, 3, 2, 60, 3, 2, 4, 4, 8, 2, 3, 3, 13, 2, 3, 3, 3, 2, 2, 2, 4, 6, 1, 3, 3, 3, 17, 2, 3, 5, 3, 3, 2, 2,
+ 2, 23, 2, 7, 4, 3, 2, 3, 2, 60, 4, 3, 6, 4, 4, 4, 2, 5, 11, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 9, 7, 177,5, 9, 7, 7, 2, 9,
+ 4, 5, 4, 2, 12, 2, 7, 3, 1, 1, 1, 12, 3, 3, 3, 2, 15, 7, 3, 11, 7, 4, 16, 4, 12, 10, 1, 1, 9, 1, 1, 1, 7, 7, 7, 33, 12, 9, 3, 5, 4,
+ 6, 2, 21, 10, 8, 71, 7, 4, 3, 2, 10, 3, 4, 3, 28, 17, 3, 3, 3, 3, 3, 3, 4, 4, 5, 3, 3, 2, 3, 4, 2, 2, 109,16, 10, 8, 6, 2, 4, 9, 6,
+ 5, 17, 3, 5, 3, 2, 2, 17, 10, 3, 2, 3, 5, 19, 4, 4, 4, 10, 2, 8, 4, 110,5, 7, 3, 3, 5, 1, 2, 1, 4, 8, 9, 3, 2, 6, 7, 4, 2, 6, 3,
+ 13, 2, 3, 4, 17, 6, 4, 7, 6, 2, 3, 17, 5, 3, 65, 2, 9, 7, 3, 10, 2, 4, 9, 4, 8, 15, 3, 3, 7, 1, 72, 9, 9, 30, 2, 25, 4, 4, 3, 2, 2,
+ 3, 1, 20, 15, 2, 52, 9, 2, 5, 2, 2, 3, 19, 9, 3, 7, 3, 5, 2, 82, 2, 6, 2, 4, 19, 12, 3, 6, 3, 40, 29, 2, 8, 4, 3, 2, 1, 4, 1, 89, 35,
+ 28, 4, 6, 6, 19, 3, 5, 4, 4, 25, 6, 6, 17, 14, 1, 1, 1, 1, 5, 5, 5, 3, 2, 2, 34, 4, 3, 9, 6, 3, 7, 5, 7, 2, 14, 4, 2, 1, 77, 4, 2,
+ 3, 5, 3, 4, 18, 17, 2, 2, 19, 1, 10, 8, 8, 1, 1, 2, 2, 49, 13, 8, 5, 3, 8, 11, 9, 3, 4, 2, 43, 5, 5, 5, 4, 11, 10, 13, 8, 6, 3, 7, 3,
+ 3, 3, 123,6, 3, 5, 2, 1, 1, 27, 2, 7, 13, 6, 2, 1, 1, 1, 14, 3, 3, 3, 59, 15, 7, 6, 6, 6, 6, 2, 8, 3, 3, 5, 9, 4, 2, 3, 3, 7, 3,
+ 3, 3, 3, 2, 17, 2, 5, 5, 7, 6, 5, 1, 1, 1, 22, 8, 7, 59, 4, 2, 3, 3, 18, 10, 3, 3, 8, 4, 11, 6, 4, 3, 9, 5, 110,34, 33, 32, 2, 12, 8,
+ 4, 1, 2, 2, 44, 23, 20, 14, 8, 5, 8, 6, 13, 1, 1, 1, 1, 1, 1, 6, 2, 2, 2, 2, 3, 2, 1, 12, 1, 7, 4, 3, 41, 7, 19, 15, 3, 2, 2, 2, 1,
+ 1, 2, 6, 4, 10, 1, 1, 2, 2, 43, 4, 3, 6, 25, 4, 4, 2, 2, 7, 2, 3, 2, 10, 2, 2, 3, 13, 2, 4, 2, 15, 1, 5, 2, 4, 7, 2, 1, 1, 1, 1,
+ 1, 1, 3, 2, 24, 3, 17, 13, 7, 3, 234,28, 9, 3, 10, 3, 19, 4, 5, 5, 5, 5, 3, 22, 5, 3, 2, 2, 2, 2, 2, 56, 9, 8, 8, 17, 4, 2, 2, 3, 4,
+ 1, 1, 4, 6, 8, 4, 18, 5, 4, 3, 3, 5, 1, 29, 7, 4, 3, 3, 1, 4, 3, 2, 1, 3, 14, 4, 2, 9, 15, 3, 11, 4, 2, 1, 1, 1, 1, 1, 85, 13, 6,
+ 5, 2, 1, 1, 1, 1, 5, 3, 36, 3, 3, 3, 3, 2, 2, 2, 2, 11, 3, 2, 9, 7, 5, 5, 4, 3, 1, 1, 16, 13, 2, 8, 7, 3, 2, 136,6, 20, 8, 7, 3,
+ 6, 5, 21, 3, 3, 4, 13, 8, 3, 24, 2, 14, 5, 3, 15, 3, 1, 5, 3, 1, 1, 5, 2, 5, 2, 2, 11, 1, 1, 1, 1, 34, 5, 2, 1, 1, 7, 5, 9, 5, 38,
+ 21, 14, 7, 4, 4, 3, 3, 5, 111,7, 9, 4, 2, 5, 5, 4, 3, 5, 13, 4, 5, 6, 1, 7, 3, 3, 13, 4, 1, 1, 13, 6, 2, 2, 3, 2, 15, 5, 3, 3, 26,
+ 3, 2, 3, 3, 3, 2, 2, 4, 23, 5, 5, 3, 1, 6, 2, 2, 2, 3, 2, 171,7, 2, 3, 3, 3, 2, 4, 23, 3, 1, 1, 1, 4, 2, 3, 2, 3, 29, 27, 2, 2,
+ 1, 6, 3, 3, 2, 2, 5, 15, 6, 5, 7, 1, 60, 58, 5, 2, 5, 2, 2, 14, 8, 2, 2, 1, 4, 3, 4, 13, 3, 3, 6, 3, 8, 5, 5, 5, 5, 2, 2, 2, 2,
+ 17, 9, 6, 4, 4, 4, 5, 4, 3, 24, 5, 3, 8, 2, 9, 3, 1, 3, 38, 30, 3, 2, 2, 3, 5, 2, 3, 2, 2, 17, 7, 3, 5, 9, 2, 2, 6, 4, 4, 6, 4,
+ 2, 7, 4, 9, 1, 1, 5, 52, 4, 1, 1, 7, 4, 8, 12, 9, 3, 74, 6, 4, 3, 4, 1, 3, 22, 6, 7, 9, 4, 4, 3, 18, 12, 3, 2, 6, 3, 3, 2, 8, 3,
+ 15, 3, 5, 9, 8, 2, 4, 35, 13, 8, 5, 17, 1, 4, 3, 93, 45, 30, 29, 19, 9, 10, 8, 6, 3, 8, 22, 8, 1, 5, 2, 2, 11, 6, 3, 3, 3, 2, 11, 11, 10,
+ 36, 6, 5, 1, 1, 1, 1, 1, 23, 2, 3, 3, 2, 16, 3, 3, 3, 2, 17, 1, 1, 12, 3, 3, 1, 1, 1, 1, 1, 26, 6, 6, 5, 8, 3, 1, 29, 6, 3, 2, 3,
+ 3, 2, 4, 5, 3, 2, 2, 4, 4, 2, 4, 1, 2, 3, 3, 3, 12, 1, 6, 6, 3, 3, 233,19, 6, 5, 2, 17, 16, 12, 4, 24, 4, 7, 3, 3, 1, 4, 6, 2, 2,
+ 14, 11, 23, 1, 1, 2, 14, 2, 5, 2, 54, 6, 6, 11, 5, 2, 2, 1, 8, 10, 2, 2, 1, 37, 8, 6, 4, 16, 15, 9, 8, 8, 5, 5, 2, 24, 3, 3, 3, 3, 2,
+ 2, 6, 3, 5, 2, 1, 1, 55, 17, 8, 8, 4, 3, 10, 7, 6, 3, 3, 2, 21, 8, 6, 8, 3, 1, 2, 174,3, 2, 3, 9, 9, 12, 11, 8, 3, 3, 22, 6, 4, 2,
+ 2, 9, 7, 6, 4, 4, 30, 9, 11, 1, 2, 54, 3, 2, 36, 7, 21, 7, 5, 4, 2, 2, 23, 5, 4, 4, 4, 2, 4, 7, 2, 1, 1, 6, 157,44, 3, 3, 7, 3, 4,
+ 8, 5, 19, 6, 6, 3, 2, 2, 6, 4, 3, 2, 58, 6, 4, 45, 29, 1, 1, 4, 3, 5, 4, 7, 6, 22, 3, 3, 10, 1, 11, 3, 4, 2, 46, 6, 7, 4, 23, 5, 4,
+ 3, 4, 5, 3, 3, 3, 17, 3, 5, 99, 1, 1, 1, 1, 1, 96, 43, 4, 8, 4, 2, 4, 2, 8, 1, 1, 5, 7, 3, 19, 10, 5, 7, 32, 3, 2, 2, 2, 3, 11, 5,
+ 4, 49, 2, 2, 4, 1, 10, 2, 1, 3, 1, 1, 2, 18, 2, 2, 2, 1, 6, 2, 3, 3, 3, 2, 2, 3, 1, 1, 2, 1, 1, 6, 2, 2, 2, 1, 34, 1, 1, 1, 1,
+ 1, 2, 1, 2, 1, 1, 2, 1, 1, 12, 4, 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 8, 4, 3, 40, 3, 4, 4, 16, 15, 13, 7, 11, 9, 29, 5, 9, 2, 2,
+ 3, 3, 2, 2, 8, 25, 4, 7, 3, 2, 8, 2, 2, 8, 2, 1, 16, 15, 7, 3, 2, 3, 33, 9, 3, 2, 7, 5, 2, 8, 4, 2, 15, 10, 4, 31, 14, 3, 10, 4, 16,
+ 11, 1, 58, 3, 1, 2, 3, 7, 6, 2, 3, 10, 7, 20, 5, 3, 3, 3, 1, 38, 4, 1, 3, 1, 5, 3, 3, 2, 5, 12, 5, 3, 180,6, 5, 17, 3, 3, 3, 54, 18,
+ 13, 10, 3, 2, 3, 6, 3, 7, 5, 2, 5, 2, 7, 5, 13, 2, 19, 3, 12, 9, 9, 3, 12, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4,
+ 3, 4, 10, 4, 2, 6, 5, 16, 4, 4, 1, 1, 1, 1, 1, 1, 9, 8, 176,2, 3, 8, 5, 13, 6, 3, 3, 3, 3, 4, 8, 3, 2, 2, 11, 6, 2, 6, 12, 4, 12,
+ 8, 8, 2, 6, 3, 2, 2, 13, 3, 11, 4, 4, 23, 1, 1, 1, 3, 3, 5, 9, 7, 6, 4, 4, 29, 4, 8, 4, 2, 85, 24, 1, 1, 1, 1, 1, 1, 1, 3, 7, 6,
+ 2, 30, 5, 11, 11, 9, 9, 8, 4, 2, 13, 4, 4, 23, 6, 5, 3, 4, 3, 3, 18, 5, 3, 6, 5, 2, 2, 2, 1, 4, 2, 12, 2, 2, 6, 2, 1, 3, 2, 2, 55,
+ 9, 2, 2, 2, 4, 12, 4, 4, 17, 3, 1, 2, 7, 4, 16, 4, 10, 5, 3, 3, 1, 1, 66, 4, 20, 8, 3, 2, 2, 2, 2, 17, 4, 3, 2, 9, 4, 3, 1, 8, 2,
+ 44, 21, 20, 7, 6, 2, 3, 20, 4, 3, 10, 6, 4, 11, 4, 1, 7, 4, 94, 5, 5, 3, 3, 2, 67, 4, 16, 5, 2, 5, 2, 1, 1, 6, 3, 2, 11, 7, 3, 3, 4,
+ 3, 7, 2, 2, 8, 3, 3, 1, 1, 37, 21, 6, 3, 3, 2, 2, 3, 4, 2, 1, 20, 2, 7, 4, 6, 48, 4, 5, 3, 4, 2, 3, 1, 4, 3, 2, 2, 2, 2, 2, 1,
+ 4, 3, 1, 1, 8, 3, 4, 86, 12, 10, 4, 1, 2, 2, 2, 2, 2, 2, 32, 14, 13, 3, 9, 8, 2, 3, 3, 3, 2, 3, 11, 6, 3, 5, 2, 3, 68, 3, 1, 1, 19,
+ 17, 2, 1, 1, 2, 2, 7, 6, 6, 3, 2, 7, 6, 5, 4, 3, 5, 15, 3, 1, 1, 4, 3, 10, 1, 1, 1, 3, 3, 2, 10, 4, 4, 37, 30, 4, 9, 4, 5, 18, 12,
+ 12, 6, 3, 4, 5, 4, 2, 5, 5, 3, 4, 1, 1, 2, 2, 2, 35, 5, 29, 1, 1, 1, 1, 4, 2, 8, 6, 2, 5, 25, 3, 6, 2, 4, 1, 5, 20, 12, 5, 2, 2,
+ 3, 16, 6, 5, 3, 4, 2, 37, 4, 1, 1, 2, 20, 5, 3, 2, 5, 2, 26, 3, 5, 11, 10, 8, 47, 2, 2, 10, 2, 2, 1, 2, 14, 4, 9, 3, 3, 19, 2, 7, 3,
+ 3, 7, 7, 17, 3, 2, 2, 2, 4, 14, 3, 3, 7, 2, 12, 3, 2, 3, 4, 5, 2, 2, 2, 1, 4, 3, 3, 3, 8, 2, 2, 51, 49, 2, 4, 3, 7, 8, 6, 5, 4,
+ 3, 6, 2, 11, 4, 3, 3, 21, 3, 4, 4, 2, 3, 2, 14, 11, 6, 3, 5, 1, 6, 8, 6, 2, 2, 2, 2, 3, 16, 9, 2, 2, 1, 41, 4, 4, 5, 3, 8, 1, 8,
+ 3, 3, 4, 15, 6, 3, 3, 3, 1, 2, 57, 45, 9, 4, 4, 5, 2, 2, 3, 3, 3, 3, 6, 5, 4, 6, 2, 20, 3, 3, 3, 5, 2, 27, 14, 3, 7, 3, 85, 3, 2,
+ 15, 2, 2, 6, 1, 1, 24, 5, 1, 2, 2, 2, 7, 13, 5, 4, 3, 3, 5, 15, 3, 2, 5, 3, 2, 2, 28, 8, 3, 2, 2, 2, 4, 9, 2, 2, 4, 3, 8, 12, 3,
+ 5, 2, 2, 6, 3, 3, 6, 3, 2, 2, 240,2, 2, 3, 1, 10, 4, 3, 1, 1, 1, 1, 14, 2, 2, 2, 2, 5, 1, 5, 22, 13, 13, 13, 8, 2, 2, 2, 4, 1, 5,
+ 2, 4, 38, 3, 7, 21, 9, 2, 7, 6, 1, 7, 14, 4, 8, 59, 3, 14, 11, 8, 10, 2, 3, 5, 12, 2, 1, 1, 1, 3, 2, 1, 1, 3, 20, 5, 4, 9, 3, 1, 1,
+ 2, 13, 5, 3, 9, 3, 4, 2, 2, 131,20, 10, 4, 4, 4, 4, 4, 1, 1, 4, 19, 15, 2, 1, 2, 3, 3, 14, 5, 2, 3, 8, 2, 7, 11, 8, 6, 6, 4, 3, 3,
+ 2, 2, 2, 8, 7, 10, 7, 7, 5, 4, 3, 110,7, 6, 3, 19, 11, 7, 3, 3, 8, 8, 5, 2, 4, 2, 4, 1, 13, 11, 1, 1, 4, 15, 12, 2, 16, 7, 2, 2, 2,
+ 2, 5, 119,6, 4, 1, 1, 1, 3, 12, 1, 2, 5, 2, 8, 7, 16, 4, 3, 2, 1, 1, 16, 13, 3, 3, 4, 7, 3, 7, 5, 10, 6, 3, 56, 6, 14, 4, 9, 9, 9,
+ 4, 4, 2, 7, 6, 1, 7, 2, 2, 9, 2, 9, 2, 6, 1, 4, 4, 2, 3, 1, 1, 1, 1, 4, 4, 22, 13, 4, 1, 2, 4, 3, 2, 3, 18, 2, 14, 7, 50, 2, 2,
+ 4, 8, 6, 4, 14, 4, 6, 4, 4, 2, 2, 2, 2, 4, 2, 14, 2, 1, 1, 1, 1, 2, 12, 12, 3, 3, 2, 2, 1, 6, 4, 6, 25, 7, 13, 16, 6, 3, 6, 18, 1,
+ 8, 7, 41, 2, 6, 2, 9, 5, 2, 3, 6, 2, 1, 1, 3, 3, 3, 16, 3, 8, 4, 1, 1, 3, 2, 1, 1, 33, 1, 16, 11, 7, 3, 3, 3, 5, 2, 1, 8, 1, 1,
+ 13, 3, 1, 2, 1, 3, 1, 1, 1, 5, 3, 2, 29, 7, 2, 1, 2, 2, 1, 2, 2, 2, 5, 5, 11, 3, 2, 2, 2, 6, 2, 4, 3, 3, 3, 3, 3, 20, 1, 7, 2,
+ 2, 2, 5, 5, 4, 3, 8, 5, 6, 2, 2, 1, 1, 11, 4, 4, 4, 4, 3, 8, 13, 8, 8, 8, 5, 5, 13, 6, 4, 6, 5, 23, 8, 1, 1, 6, 5, 5, 7, 7, 3,
+ 3, 8, 4, 4, 4, 2, 11, 1, 7, 6, 4, 4, 4, 10, 5, 3, 3, 2, 2, 1, 11, 6, 4, 4, 4, 3, 77, 10, 10, 10, 4, 12, 4, 4, 4, 4, 3, 2, 3, 1, 18,
+ 14, 4, 9, 2, 5, 2, 2, 2, 23, 11, 9, 6, 6, 5, 8, 8, 8, 4, 3, 3, 2, 27, 4, 3, 1, 6, 5, 4, 10, 5, 5, 5, 7, 5, 5, 2, 2, 5, 5, 5, 3,
+ 2, 2, 90, 31, 18, 14, 13, 3, 3, 2, 7, 4, 3, 2, 14, 5, 2, 3, 37, 7, 5, 5, 10, 4, 6, 3, 3, 3, 44, 8, 3, 4, 2, 11, 2, 5, 1, 7, 2, 3, 2,
+ 2, 3, 2, 2, 28, 5, 3, 2, 2, 1, 1, 1, 5, 3, 2, 2, 40, 35, 9, 8, 10, 6, 5, 9, 7, 7, 3, 3, 51, 26, 2, 18, 2, 3, 3, 3, 11, 8, 3, 2, 4,
+ 2, 8, 3, 2, 1, 31, 1, 4, 16, 2, 2, 29, 5, 2, 7, 1, 1, 2, 4, 3, 3, 5, 3, 3, 84, 6, 2, 2, 2, 2, 3, 10, 1, 1, 1, 10, 3, 8, 1, 3, 14,
+ 5, 4, 6, 3, 3, 6, 4, 2, 2, 14, 9, 7, 5, 133,11, 3, 1, 6, 11, 10, 4, 7, 2, 3, 74, 15, 13, 9, 48, 45, 3, 2, 3, 5, 3, 5, 5, 3, 6, 3, 4,
+ 4, 161,2, 10, 2, 4, 4, 2, 2, 52, 17, 2, 6, 4, 4, 12, 6, 3, 4, 3, 3, 3, 3, 7, 4, 4, 4, 9, 3, 5, 5, 4, 24, 7, 2, 14, 2, 3, 3, 5, 2,
+ 2, 2, 18, 5, 6, 5, 5, 3, 2, 6, 8, 4, 2, 210,209,2, 1, 13, 4, 33, 5, 5, 3, 3, 3, 2, 3, 3, 3, 3, 2, 2, 2, 1, 14, 1, 3, 3, 5, 4, 4,
+ 4, 4, 3, 2, 11, 3, 4, 2, 13, 3, 3, 3, 2, 2, 7, 4, 3, 2, 9, 5, 2, 3, 3, 2, 1, 2, 13, 1, 6, 6, 6, 6, 6, 5, 4, 4, 4, 25, 17, 1, 6,
+ 5, 4, 3, 7, 3, 3, 1, 1, 2, 6, 5, 2, 29, 7, 2, 1, 1, 13, 4, 3, 3, 3, 3, 2, 2, 5, 2, 11, 10, 8, 47, 2, 2, 20, 9, 7, 7, 7, 7, 3, 6,
+ 15, 8, 8, 7, 3, 2, 8, 8, 8, 8, 18, 6, 1, 9, 8, 3, 2, 171,9, 1, 4, 3, 2, 2, 13, 4, 3, 3, 23, 6, 6, 3, 6, 4, 2, 13, 7, 13, 6, 4, 3,
+ 3, 9, 4, 3, 3, 2, 13, 7, 6, 6, 30, 3, 17, 5, 5, 6, 5, 2, 2, 2, 8, 3, 3, 5, 22, 7, 1, 14, 13, 6, 3, 3, 2, 91, 15, 13, 5, 2, 2, 2, 6,
+ 7, 3, 5, 2, 1, 4, 19, 15, 11, 6, 5, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 5, 15, 13, 11, 9, 1, 3, 45, 3, 7, 5, 5, 2, 1, 4, 3, 2, 12, 5, 3,
+ 1, 1, 1, 1, 1, 9, 4, 2, 2, 2, 1, 2, 5, 4, 2, 2, 1, 1, 1, 1, 3, 25, 6, 5, 5, 2, 2, 2, 4, 4, 4, 67, 9, 1, 2, 2, 3, 2, 48, 2, 16,
+ 3, 2, 2, 1, 7, 3, 1, 1, 1, 1, 6, 2, 16, 3, 1, 2, 4, 3, 3, 3, 1, 1, 1, 4, 3, 2, 1, 1, 185,9, 2, 1, 5, 3, 2, 2, 7, 4, 3, 10, 5,
+ 1, 1, 8, 6, 5, 5, 14, 5, 2, 2, 1, 6, 40, 4, 2, 2, 8, 2, 7, 7, 41, 4, 2, 21, 3, 2, 2, 12, 2, 4, 2, 1, 1, 5, 2, 1, 1, 1, 2, 2, 20,
+ 2, 5, 2, 3, 9, 1, 1, 1, 1, 3, 2, 164,34, 12, 4, 2, 4, 4, 4, 17, 5, 4, 12, 7, 4, 2, 72, 6, 2, 49, 2, 2, 2, 6, 4, 4, 4, 4, 7, 5, 2,
+ 5, 3, 10, 2, 10, 2, 5, 2, 2, 6, 2, 2, 135,3, 3, 6, 4, 6, 2, 10, 1, 3, 4, 2, 2, 2, 1, 1, 1, 6, 6, 2, 6, 2, 7, 6, 13, 7, 3, 34, 8,
+ 2, 6, 12, 8, 8, 4, 21, 16, 16, 4, 5, 3, 2, 1, 2, 2, 37, 2, 2, 2, 2, 2, 9, 6, 3, 14, 11, 5, 4, 3, 3, 2, 1, 3, 7, 1, 1, 1, 1, 6, 2,
+ 2, 12, 8, 7, 4, 3, 39, 10, 8, 7, 3, 1, 1, 21, 6, 3, 7, 5, 5, 8, 4, 72, 2, 2, 23, 6, 5, 17, 17, 14, 7, 1, 8, 6, 5, 5, 4, 6, 4, 27, 13,
+ 13, 12, 2, 9, 6, 5, 5, 4, 1, 3, 3, 3, 100,9, 2, 4, 1, 1, 1, 1, 1, 1, 27, 16, 13, 13, 10, 7, 3, 2, 12, 2, 2, 8, 8, 8, 3, 5, 6, 4, 3,
+ 2, 1, 1, 3, 17, 5, 6, 6, 6, 3, 2, 2, 25, 4, 3, 3, 21, 16, 11, 10, 4, 2, 8, 5, 22, 2, 3, 9, 4, 4, 3, 1, 25, 1, 1, 2, 19, 17, 16, 1, 5,
+ 4, 4, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 2, 112,22, 4, 2, 1, 5, 4, 3, 5, 4, 1, 1, 1, 2, 14, 14, 11, 3, 5, 4, 4, 2, 2, 2, 20, 2, 2, 3,
+ 2, 1, 1, 1, 1, 1, 2, 5, 1, 1, 1, 1, 3, 3, 4, 1, 2, 2, 1, 2, 2, 1, 1, 10, 2, 1, 1, 1, 2, 11, 1, 1, 5, 3, 1, 6, 4, 1, 16, 2, 2,
+ 9, 3, 3, 1, 2, 3, 3, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 89, 16, 5, 3, 1, 7, 3, 7,
+ 4, 2, 2, 1, 1, 10, 2, 1, 1, 1, 2, 2, 25, 5, 18, 1, 2, 2, 2, 4, 10, 4, 4, 2, 8, 5, 5, 1, 70, 4, 4, 1, 3, 2, 14, 6, 3, 4, 4, 17, 7,
+ 1, 2, 8, 8, 6, 5, 28, 3, 5, 6, 1, 2, 2, 1, 1, 1, 3, 3, 9, 2, 4, 3, 3, 19, 3, 6, 3, 2, 1, 39, 11, 3, 2, 1, 1, 6, 3, 2, 9, 7, 4,
+ 1, 1, 2, 5, 17, 4, 1, 1, 5, 76, 4, 2, 2, 3, 2, 2, 23, 5, 2, 2, 3, 10, 4, 3, 6, 4, 7, 2, 4, 3, 9, 6, 3, 2, 79, 27, 2, 2, 2, 2, 2,
+ 3, 2, 3, 35, 3, 2, 4, 6, 3, 2, 3, 7, 3, 4, 148,21, 7, 5, 4, 1, 1, 2, 6, 3, 4, 10, 5, 5, 2, 15, 2, 4, 18, 5, 3, 2, 38, 10, 3, 9, 3,
+ 2, 6, 2, 2, 2, 3, 6, 3, 3, 7, 5, 2, 2, 3, 6, 2, 127,28, 2, 1, 4, 3, 10, 3, 4, 2, 1, 1, 21, 3, 6, 2, 8, 7, 4, 16, 6, 3, 17, 3, 14,
+ 3, 2, 1, 1, 14, 3, 4, 2, 2, 3, 3, 4, 3, 1, 1, 1, 201,10, 2, 4, 3, 13, 4, 2, 13, 1, 1, 1, 1, 2, 46, 6, 1, 1, 13, 4, 6, 4, 1, 1, 5,
+ 4, 4, 2, 2, 4, 12, 2, 4, 20, 7, 4, 3, 3, 26, 4, 14, 4, 3, 5, 5, 6, 3, 8, 1, 15, 4, 3, 5, 4, 4, 9, 2, 8, 3, 3, 1, 52, 8, 10, 3, 10,
+ 15, 7, 2, 2, 193,32, 2, 2, 2, 1, 3, 11, 2, 6, 3, 6, 2, 10, 4, 3, 12, 7, 2, 7, 2, 2, 12, 6, 6, 1, 1, 3, 3, 11, 3, 9, 2, 2, 6, 3, 10,
+ 2, 6, 1, 4, 6, 4, 4, 4, 20, 9, 4, 3, 2, 4, 9, 19, 10, 3, 3, 3, 2, 4, 3, 4, 64, 5, 4, 13, 5, 8, 4, 4, 14, 2, 3, 15, 10, 1, 75, 10, 6,
+ 10, 4, 1, 5, 2, 7, 10, 2, 7, 16, 2, 2, 5, 5, 4, 6, 3, 52, 3, 6, 4, 9, 9, 3, 5, 6, 2, 2, 2, 1, 30, 8, 2, 14, 9, 3, 6, 4, 4, 3, 2,
+ 18, 5, 4, 6, 3, 2, 2, 29, 3, 11, 2, 2, 2, 7, 7, 6, 6, 5, 38, 4, 19, 16, 14, 2, 3, 1, 4, 17, 4, 3, 3, 7, 12, 1, 5, 5, 5, 9, 1, 1, 3,
+ 2, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 3, 2, 2, 87, 1, 2, 14, 13, 7, 2, 6, 2, 2, 5, 15, 2, 2, 2, 10, 2, 13, 6, 9, 4, 9, 4, 61,
+ 41, 2, 1, 30, 1, 16, 11, 5, 11, 2, 2, 2, 7, 7, 6, 5, 3, 1, 5, 3, 2, 2, 2, 2, 3, 3, 2, 1, 1, 1, 29, 15, 4, 9, 4, 5, 3, 2, 55, 2, 1,
+ 5, 20, 5, 5, 2, 4, 4, 9, 7, 2, 2, 2, 1, 12, 5, 1, 2, 1, 1, 1, 14, 3, 1, 1, 5, 1, 1, 24, 7, 7, 3, 2, 1, 1, 1, 3, 1, 5, 3, 2, 1,
+ 1, 2, 2, 11, 5, 2, 4, 15, 3, 4, 3, 1, 1, 1, 1, 1, 1, 169,5, 2, 2, 4, 102,13, 5, 5, 2, 2, 5, 5, 2, 2, 2, 2, 10, 6, 5, 1, 9, 8, 8,
+ 6, 5, 4, 3, 10, 6, 3, 3, 2, 1, 1, 4, 3, 2, 2, 1, 22, 5, 5, 5, 6, 6, 5, 6, 6, 6, 3, 1, 1, 9, 6, 6, 5, 1, 1, 4, 12, 1, 1, 1, 9,
+ 7, 2, 3, 2, 29, 8, 7, 3, 2, 1, 4, 3, 3, 4, 6, 3, 3, 3, 2, 2, 4, 90, 5, 3, 5, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 1, 64,
+ 21, 3, 13, 8, 3, 4, 4, 13, 5, 7, 9, 6, 5, 3, 2, 2, 2, 2, 6, 3, 163,14, 1, 1, 4, 6, 22, 10, 7, 2, 3, 2, 3, 3, 1, 17, 2, 2, 1, 1, 1,
+ 1, 1, 5, 2, 9, 4, 2, 1, 2, 4, 3, 28, 8, 4, 3, 3, 13, 7, 11, 1, 1, 1, 1, 7, 3, 13, 4, 13, 4, 3, 2, 6, 4, 8, 3, 2, 1, 1, 1, 1, 19,
+ 3, 3, 3, 2, 4, 4, 2, 7, 7, 6, 4, 225,13, 1, 2, 3, 2, 7, 6, 1, 1, 1, 22, 2, 1, 9, 3, 7, 3, 2, 6, 2, 2, 2, 2, 31, 4, 23, 19, 14, 4,
+ 10, 11, 4, 1, 3, 1, 1, 1, 6, 4, 1, 89, 28, 7, 1, 6, 4, 2, 14, 4, 2, 2, 26, 7, 4, 6, 6, 4, 3, 15, 4, 10, 7, 5, 2, 1, 1, 2, 6, 4, 1,
+ 2, 3, 2, 2, 2, 2, 101,2, 6, 4, 3, 3, 2, 2, 17, 5, 2, 5, 62, 9, 2, 3, 3, 3, 9, 5, 20, 4, 4, 4, 3, 5, 3, 4, 52, 2, 4, 6, 5, 5, 5,
+ 22, 16, 2, 1, 2, 1, 1, 1, 1, 3, 2, 3, 3, 3, 3, 3, 8, 2, 2, 2, 4, 2, 11, 3, 4, 13, 4, 2, 2, 43, 16, 1, 9, 1, 2, 4, 18, 3, 6, 4, 7,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 140,2, 9, 7, 3, 3, 7, 2, 1, 2, 4, 5, 22, 5, 2, 2, 2, 3, 1, 5, 15, 3, 5, 4, 2, 2, 2, 1, 3, 32, 4,
+ 2, 3, 3, 2, 1, 2, 1, 1, 12, 3, 2, 2, 1, 1, 1, 3, 7, 1, 17, 4, 3, 1, 1, 1, 4, 1, 1, 16, 10, 8, 5, 5, 26, 4, 11, 8, 2, 6, 10, 2, 1,
+ 1, 1, 1, 2, 3, 15, 4, 4, 3, 6, 7, 2, 2, 12, 2, 2, 4, 3, 4, 2, 15, 4, 5, 2, 6, 6, 12, 1, 1, 3, 2, 2, 23, 13, 5, 4, 3, 2, 1, 6, 2,
+ 57, 2, 2, 2, 13, 11, 9, 2, 3, 8, 7, 7, 6, 6, 6, 3, 3, 1, 1, 17, 7, 5, 5, 5, 9, 5, 4, 4, 1, 3, 1, 1, 1, 84, 13, 8, 3, 2, 27, 5, 3,
+ 7, 2, 1, 1, 6, 22, 4, 3, 15, 3, 1, 1, 1, 3, 3, 9, 4, 2, 32, 4, 4, 7, 4, 3, 6, 5, 5, 3, 3, 3, 2, 10, 4, 7, 2, 2, 9, 4, 3, 5, 4,
+ 157,5, 15, 5, 4, 5, 4, 3, 16, 14, 9, 3, 3, 35, 1, 8, 4, 2, 4, 2, 6, 4, 3, 2, 4, 6, 5, 2, 2, 29, 9, 9, 6, 5, 3, 1, 18, 4, 3, 6, 3,
+ 3, 3, 4, 2, 2, 1, 1, 1, 1, 1, 13, 3, 3, 3, 3, 3, 1, 1, 2, 190,4, 3, 6, 4, 57, 30, 26, 6, 2, 3, 3, 5, 3, 4, 9, 4, 1, 1, 1, 1, 90,
+ 8, 2, 2, 2, 5, 3, 5, 3, 34, 9, 2, 2, 3, 3, 3, 5, 3, 2, 11, 9, 9, 9, 2, 2, 8, 5, 4, 2, 2, 14, 7, 7, 6, 3, 4, 4, 4, 1, 133,17, 1,
+ 40, 13, 6, 7, 15, 2, 1, 1, 1, 1, 2, 3, 2, 8, 5, 1, 1, 1, 1, 1, 15, 6, 46, 4, 4, 3, 1, 1, 1, 4, 4, 2, 1, 1, 1, 1, 10, 4, 2, 2, 4,
+ 4, 4, 12, 15, 8, 6, 109,2, 1, 8, 2, 4, 17, 8, 3, 1, 5, 3, 35, 29, 29, 28, 6, 5, 2, 2, 32, 2, 4, 4, 4, 3, 5, 3, 2, 7, 3, 1, 8, 7, 2,
+ 2, 2, 19, 1, 1, 4, 2, 3, 3, 1, 2, 2, 3, 2, 2, 2, 1, 1, 13, 8, 2, 34, 10, 2, 3, 3, 12, 7, 6, 4, 3, 4, 4, 39, 7, 21, 8, 5, 7, 5, 2,
+ 1, 1, 1, 19, 3, 6, 2, 2, 2, 55, 3, 3, 3, 7, 2, 2, 2, 2, 5, 2, 6, 12, 4, 4, 7, 19, 15, 8, 8, 99, 4, 43, 43, 6, 6, 2, 2, 18, 16, 14, 17,
+ 15, 7, 5, 3, 12, 4, 5, 2, 1, 8, 4, 3, 2, 12, 3, 2, 62, 2, 3, 5, 2, 3, 28, 3, 1, 9, 7, 3, 3, 2, 2, 2, 2, 159,8, 24, 3, 2, 13, 13, 4,
+ 3, 3, 3, 4, 1, 2, 2, 45, 2, 7, 4, 3, 4, 9, 2, 3, 3, 3, 11, 4, 3, 1, 1, 24, 8, 6, 6, 25, 3, 3, 4, 3, 3, 8, 6, 2, 2, 6, 4, 117,6,
+ 2, 10, 4, 3, 8, 2, 7, 2, 16, 6, 2, 7, 13, 8, 7, 3, 3, 3, 13, 9, 2, 6, 13, 3, 2, 2, 2, 6, 2, 2, 1, 42, 26, 14, 1, 1, 1, 1, 1, 4, 5,
+ 3, 5, 4, 47, 10, 1, 1, 1, 1, 9, 3, 5, 1, 4, 2, 3, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 33, 6, 1,
+ 5, 2, 4, 5, 2, 1, 4, 71, 15, 13, 6, 4, 3, 4, 4, 11, 7, 3, 4, 5, 10, 3, 2, 5, 6, 2, 4, 3, 7, 3, 5, 3, 2, 1, 1, 11, 5, 5, 3, 1, 1,
+ 2, 2, 14, 7, 4, 3, 2, 1, 1, 1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 4, 1, 23, 9, 2, 3, 10, 10, 45, 7, 7, 4, 10, 7, 6, 2, 2, 8, 3, 7, 18, 2,
+ 1, 6, 2, 4, 1, 33, 7, 8, 2, 3, 1, 2, 7, 5, 3, 24, 2, 2, 4, 4, 4, 1, 1, 12, 2, 3, 1, 3, 17, 3, 3, 2, 2, 2, 2, 1, 3, 1, 1, 3, 2,
+ 8, 4, 2, 13, 6, 4, 3, 32, 8, 4, 5, 3, 6, 2, 1, 1, 1, 5, 2, 4, 3, 90, 5, 2, 2, 3, 18, 2, 10, 9, 6, 4, 2, 29, 13, 3, 3, 3, 5, 3, 3,
+ 6, 2, 2, 3, 2, 2, 166,42, 2, 2, 3, 25, 5, 4, 4, 4, 6, 4, 15, 1, 3, 2, 3, 2, 4, 6, 3, 3, 13, 2, 2, 1, 1, 1, 12, 3, 2, 3, 8, 3, 3,
+ 3, 25, 2, 3, 2, 16, 12, 4, 3, 3, 5, 2, 11, 2, 2, 1, 2, 110,7, 3, 5, 11, 1, 2, 18, 7, 2, 2, 14, 6, 3, 11, 3, 7, 4, 3, 8, 1, 5, 13, 2,
+ 95, 2, 3, 2, 7, 23, 2, 6, 8, 9, 2, 3, 25, 14, 3, 2, 2, 2, 4, 3, 2, 2, 111,1, 1, 1, 1, 1, 1, 1, 8, 3, 3, 2, 3, 7, 2, 3, 9, 5, 2,
+ 7, 4, 2, 2, 2, 28, 5, 5, 5, 5, 5, 2, 1, 1, 13, 2, 5, 4, 4, 18, 5, 2, 12, 1, 2, 2, 3, 2, 2, 2, 219,7, 10, 4, 9, 8, 3, 4, 1, 1, 9,
+ 7, 3, 1, 16, 2, 4, 3, 1, 8, 7, 24, 9, 5, 6, 3, 1, 10, 1, 1, 4, 7, 5, 4, 4, 6, 6, 3, 3, 46, 7, 2, 22, 1, 1, 2, 2, 6, 4, 13, 1, 10,
+ 3, 2, 33, 4, 12, 3, 3, 3, 6, 3, 2, 2, 2, 2, 11, 6, 4, 3, 44, 1, 3, 8, 5, 4, 1, 14, 10, 7, 7, 3, 47, 13, 11, 4, 3, 5, 2, 3, 2, 5, 6,
+ 1, 1, 11, 5, 4, 3, 100,3, 3, 22, 21, 5, 2, 10, 9, 1, 6, 2, 3, 2, 4, 30, 1, 6, 1, 8, 5, 6, 3, 2, 1, 3, 2, 2, 1, 10, 1, 4, 3, 5, 2,
+ 8, 1, 69, 5, 3, 1, 1, 13, 4, 6, 6, 5, 32, 5, 3, 17, 3, 1, 3, 6, 3, 10, 6, 4, 1, 1, 1, 1, 1, 27, 3, 2, 2, 3, 9, 5, 3, 4, 2, 1, 1,
+ 1, 12, 4, 2, 1, 3, 2, 2, 57, 13, 7, 3, 4, 17, 3, 3, 10, 3, 4, 27, 15, 4, 4, 9, 7, 7, 7, 13, 2, 2, 9, 1, 1, 6, 6, 1, 9, 6, 3, 3, 3,
+ 1, 4, 51, 15, 2, 2, 2, 23, 5, 1, 3, 6, 4, 2, 2, 3, 3, 29, 2, 2, 4, 3, 3, 3, 9, 225,4, 6, 5, 5, 5, 3, 194,12, 5, 5, 4, 1, 1, 2, 1,
+ 24, 2, 2, 2, 10, 8, 8, 5, 4, 3, 2, 2, 10, 9, 6, 6, 6, 2, 1, 3, 3, 3, 26, 10, 9, 3, 3, 2, 11, 11, 10, 4, 3, 6, 3, 3, 3, 3, 2, 2, 2,
+ 2, 2, 18, 3, 3, 3, 3, 13, 8, 18, 9, 9, 5, 4, 3, 3, 14, 2, 1, 1, 11, 1, 3, 3, 3, 4, 2, 2, 2, 6, 35, 5, 3, 2, 3, 5, 19, 10, 9, 6, 3,
+ 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 6, 5, 3, 3, 2, 2, 2, 22, 5, 2, 4, 3, 9, 3, 1, 1, 15, 9, 2, 2, 4, 2, 25, 1, 1, 3, 8, 7, 5, 5, 7,
+ 47, 5, 1, 29, 16, 10, 8, 3, 9, 2, 2, 8, 5, 11, 1, 2, 44, 6, 4, 4, 4, 8, 13, 3, 3, 7, 7, 13, 5, 16, 2, 5, 3, 3, 1, 5, 1, 1, 1, 7, 3,
+ 1, 22, 3, 1, 1, 3, 3, 8, 1, 6, 2, 2, 10, 2, 2, 11, 5, 9, 3, 4, 2, 30, 3, 9, 7, 7, 3, 3, 7, 33, 6, 5, 2, 5, 3, 2, 11, 1, 3, 3, 3,
+ 5, 2, 1, 28, 4, 2, 2, 6, 6, 6, 6, 5, 10, 2, 2, 1, 3, 28, 4, 6, 2, 11, 4, 6, 3, 4, 2, 2, 2, 2, 2, 2, 30, 7, 9, 6, 4, 4, 3, 2, 5,
+ 5, 5, 33, 6, 6, 1, 3, 3, 12, 5, 4, 36, 2, 3, 1, 1, 7, 2, 15, 5, 5, 3, 3, 7, 6, 5, 5, 11, 2, 2, 3, 13, 2, 2, 1, 5, 3, 26, 1, 9, 7,
+ 7, 5, 2, 2, 5, 4, 4, 2, 3, 20, 1, 12, 6, 4, 24, 3, 3, 3, 3, 2, 1, 1, 1, 1, 1, 7, 37, 2, 2, 1, 1, 2, 4, 15, 2, 11, 2, 4, 8, 4, 1,
+ 8, 48, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 15, 11, 2, 1, 1, 1, 7, 2, 2, 15, 8, 1, 21, 2, 2, 11, 5, 14, 4, 3, 12, 10, 8, 8, 2, 2, 2,
+ 16, 3, 2, 5, 8, 4, 3, 1, 5, 4, 228,4, 8, 2, 4, 2, 2, 4, 3, 10, 2, 3, 1, 2, 2, 12, 11, 9, 6, 16, 2, 13, 5, 4, 1, 1, 20, 11, 4, 3, 3,
+ 4, 15, 1, 4, 11, 9, 4, 20, 4, 7, 6, 2, 8, 19, 1, 1, 4, 4, 10, 37, 15, 2, 2, 12, 10, 3, 1, 1, 3, 3, 4, 7, 6, 2, 2, 2, 7, 5, 5, 7, 1,
+ 1, 2, 1, 1, 1, 182,4, 3, 4, 24, 3, 16, 5, 2, 14, 6, 4, 22, 3, 2, 5, 3, 2, 4, 3, 3, 10, 3, 20, 7, 2, 11, 7, 18, 5, 1, 6, 4, 3, 32, 2,
+ 7, 4, 17, 4, 5, 4, 2, 2, 7, 6, 5, 29, 1, 4, 2, 2, 3, 1, 3, 6, 2, 1, 1, 1, 3, 2, 3, 1, 1, 98, 19, 4, 8, 2, 1, 2, 11, 10, 3, 2, 2,
+ 1, 2, 1, 9, 1, 2, 1, 10, 1, 1, 2, 4, 3, 1, 2, 1, 1, 1, 5, 2, 2, 1, 1, 1, 1, 1, 1, 36, 3, 3, 3, 3, 2, 2, 6, 2, 2, 2, 7, 4, 3,
+ 4, 4, 3, 2, 2, 2, 1, 1, 1, 6, 4, 4, 4, 3, 1, 1, 1, 13, 3, 2, 1, 2, 40, 5, 5, 15, 12, 5, 3, 3, 2, 3, 2, 1, 4, 4, 29, 2, 4, 4, 5,
+ 12, 8, 4, 2, 1, 10, 4, 13, 5, 4, 4, 18, 8, 2, 5, 17, 7, 3, 3, 2, 2, 6, 1, 3, 7, 2, 1, 3, 7, 1, 1, 1, 1, 41, 5, 2, 2, 9, 3, 16, 3,
+ 5, 3, 3, 45, 4, 14, 10, 7, 2, 5, 2, 2, 6, 2, 6, 5, 3, 51, 4, 7, 8, 2, 1, 1, 1, 1, 2, 2, 13, 5, 6, 3, 8, 6, 5, 1, 2, 9, 1, 3, 21,
+ 7, 5, 2, 1, 1, 3, 2, 4, 4, 236,8, 4, 43, 3, 6, 8, 5, 23, 3, 2, 1, 1, 1, 8, 3, 4, 7, 7, 3, 8, 3, 28, 2, 7, 4, 7, 4, 3, 7, 3, 5,
+ 3, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 11, 2, 9, 2, 6, 3, 2, 6, 3, 3, 4, 3, 5, 5, 2, 2, 1, 17, 6, 8, 2, 2, 2, 2, 3, 12, 7,
+ 6, 2, 3, 3, 2, 32, 10, 5, 2, 1, 2, 5, 5, 3, 5, 2, 38, 3, 1, 1, 1, 5, 3, 3, 3, 1, 9, 6, 3, 4, 8, 3, 2, 3, 5, 4, 1, 8, 3, 4, 4,
+ 3, 12, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 169,12, 3, 48, 5, 5, 20, 6, 7, 6, 4, 4, 8, 8, 5, 2, 81, 4, 1, 4, 5, 5, 3, 2, 28, 8,
+ 1, 5, 1, 3, 14, 2, 11, 5, 12, 6, 6, 2, 24, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 1, 3, 2, 3, 2, 4, 1, 159,3, 2, 4, 2, 7, 4,
+ 3, 5, 3, 4, 2, 3, 16, 1, 11, 10, 1, 2, 10, 2, 3, 3, 3, 16, 2, 4, 4, 6, 2, 36, 13, 5, 3, 3, 2, 9, 5, 6, 2, 8, 31, 8, 7, 4, 2, 1, 8,
+ 4, 6, 2, 2, 1, 1, 13, 5, 2, 2, 2, 2, 1, 1, 8, 2, 4, 1, 1, 12, 1, 2, 2, 1, 1, 8, 7, 2, 1, 2, 1, 1, 1, 1, 5, 2, 1, 28, 1, 4, 2,
+ 3, 2, 10, 7, 7, 6, 5, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 23, 5, 3, 2, 8, 4, 2, 1, 4, 22, 6, 1, 3, 2, 3, 4, 3,
+ 20, 1, 1, 1, 1, 2, 2, 1, 2, 2, 3, 2, 17, 2, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 4, 1, 1, 26, 9, 1, 3, 3, 1, 1, 3, 8, 2, 45, 2,
+ 1, 1, 2, 2, 4, 1, 1, 1, 1, 5, 4, 1, 12, 4, 2, 3, 6, 4, 3, 1, 1, 1, 2, 11, 1, 1, 1, 1, 2, 12, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 21, 3, 2, 2, 1, 4, 1, 1, 1, 1, 1, 6, 4, 4, 4, 1, 123,9, 1, 1, 3, 2, 7, 5, 5, 14, 1, 5, 2, 3, 14, 3, 3, 2, 3, 1, 5, 8, 6, 8, 2,
+ 29, 7, 7, 6, 5, 19, 17, 5, 5, 2, 1, 4, 3, 2, 2, 1, 2, 5, 2, 5, 3, 2, 1, 4, 2, 2, 73, 12, 3, 3, 2, 21, 3, 1, 1, 6, 3, 2, 2, 2, 8,
+ 3, 3, 5, 2, 2, 1, 1, 3, 3, 7, 3, 1, 12, 4, 1, 2, 2, 1, 1, 64, 6, 3, 2, 1, 1, 7, 6, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 1, 1, 1, 1, 1, 4, 3, 1, 1, 3, 2, 5, 2, 2, 8, 4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 1, 2, 3, 2, 5, 4, 2, 5, 5, 2, 2, 1, 2, 2,
+ 2, 2, 2, 3, 2, 2, 1, 28, 1, 1, 10, 4, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 1, 1, 3, 2, 4, 1, 1, 1, 1, 5, 3, 94, 7, 2, 7, 2, 1, 4, 1,
+ 1, 1, 1, 3, 3, 3, 3, 10, 8, 1, 1, 3, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 10, 2, 7, 48, 1, 1, 10, 2, 2, 3, 5, 1,
+ 2, 2, 1, 1, 23, 1, 2, 2, 2, 2, 1, 1, 1, 8, 4, 4, 4, 1, 3, 2, 2, 5, 4, 4, 3, 3, 1, 1, 1, 3, 1, 2, 4, 1, 1, 3, 2, 2, 3, 4, 2,
+ 2, 3, 1, 1, 1, 206,3, 1, 173,4, 2, 2, 1, 3, 2, 1, 1, 1, 2, 151,3, 1, 1, 1, 4, 2, 12, 2, 2, 1, 2, 2, 2, 3, 4, 8, 2, 2, 2, 2, 2,
+ 2, 3, 4, 4, 4, 4, 3, 13, 2, 4, 7, 3, 3, 4, 4, 2, 2, 11, 8, 6, 4, 4, 2, 2, 15, 6, 2, 2, 2, 2, 2, 5, 5, 1, 1, 1, 1, 1, 2, 1, 1,
+ 1, 1, 1, 27, 4, 3, 1, 1, 3, 16, 10, 7, 6, 3, 1, 1, 2, 13, 9, 8, 5, 4, 2, 1, 1, 18, 3, 4, 1, 1, 4, 5, 5, 5, 6, 2, 2, 3, 4, 4, 2,
+ 2, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 6, 3, 1, 1, 1, 2, 1, 1, 1, 1, 6, 1, 1, 2, 2, 4, 1, 4, 3, 2, 41, 8, 5, 4, 3, 2, 2, 2,
+ 2, 2, 3, 3, 3, 3, 3, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 3, 3, 2, 2, 2, 2, 2, 1, 3, 3, 3, 8, 8, 2, 4, 2, 2, 2, 1, 48, 14, 5,
+ 1, 2, 2, 2, 1, 1, 1, 1, 1, 4, 4, 3, 4, 2, 2, 1, 1, 1, 15, 1, 9, 1, 5, 1, 4, 4, 2, 4, 3, 1, 1, 4, 1, 1, 2, 24, 5, 5, 5, 2, 4,
+ 2, 1, 2, 2, 1, 1, 1, 4, 19, 5, 3, 6, 3, 1, 1, 1, 2, 2, 3, 150,4, 16, 3, 2, 7, 2, 8, 3, 3, 2, 2, 2, 11, 4, 5, 5, 5, 4, 2, 1, 1,
+ 8, 2, 2, 2, 6, 2, 1, 1, 3, 2, 2, 2, 20, 1, 2, 3, 2, 2, 1, 3, 2, 8, 8, 2, 2, 2, 2, 3, 3, 1, 2, 1, 15, 14, 7, 2, 1, 1, 3, 5, 16,
+ 7, 4, 5, 35, 2, 31, 31, 30, 9, 8, 5, 3, 16, 12, 7, 4, 4, 4, 4, 11, 1, 8, 7, 7, 31, 3, 2, 7, 6, 9, 1, 1, 3, 10, 5, 21, 9, 2, 1, 2, 4,
+ 3, 3, 3, 3, 3, 5, 2, 2, 2, 1, 1, 3, 1, 18, 5, 2, 8, 2, 2, 2, 4, 1, 2, 1, 16, 4, 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 2, 4, 1,
+ 1, 1, 1, 1, 42, 11, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, 3, 2, 2, 2, 2, 2, 2, 2, 5, 3, 3, 3, 3, 16, 6, 1, 1, 3, 3, 1, 1, 1, 1, 1,
+ 1, 9, 2, 2, 2, 3, 1, 2, 2, 1, 6, 6, 4, 3, 3, 3, 3, 52, 9, 2, 4, 34, 8, 2, 3, 2, 2, 4, 4, 3, 3, 3, 2, 5, 2, 1, 1, 3, 1, 1, 6,
+ 1, 3, 2, 1, 1, 1, 3, 2, 2, 2, 2, 3, 77, 9, 2, 4, 3, 3, 3, 7, 1, 1, 1, 1, 1, 1, 1, 3, 1, 15, 6, 1, 1, 3, 2, 2, 4, 2, 5, 3, 1,
+ 1, 1, 1, 1, 9, 4, 2, 1, 4, 2, 1, 1, 1, 1, 1, 1, 8, 3, 1, 2, 1, 1, 15, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 4, 3, 2, 2, 2, 1,
+ 1, 1, 2, 42, 5, 2, 12, 10, 1, 1, 1, 1, 1, 1, 2, 1, 8, 7, 4, 4, 4, 7, 3, 1, 2, 1, 1, 5, 4, 10, 2, 2, 6, 2, 1, 25, 5, 2, 3, 2, 10,
+ 3, 3, 3, 3, 3, 3, 2, 4, 1, 1, 3, 2, 144,1, 1, 1, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 3, 2, 2, 11, 2, 2, 2, 2, 2, 1, 3, 4, 4,
+ 12, 3, 2, 6, 5, 2, 2, 12, 6, 4, 2, 4, 1, 1, 3, 16, 10, 8, 3, 1, 1, 1, 4, 3, 3, 2, 12, 2, 5, 4, 24, 3, 3, 2, 8, 7, 14, 2, 3, 2, 2,
+ 2, 2, 2, 1, 1, 6, 4, 2, 183,18, 2, 7, 2, 2, 31, 22, 18, 10, 6, 3, 4, 2, 13, 5, 4, 3, 10, 7, 29, 4, 2, 3, 7, 6, 4, 3, 3, 3, 2, 5, 3,
+ 6, 1, 6, 1, 1, 8, 8, 6, 3, 8, 3, 1, 3, 17, 5, 1, 1, 5, 3, 7, 3, 7, 3, 2, 2, 1, 1, 1, 145,27, 2, 3, 3, 6, 25, 3, 12, 3, 1, 1, 1,
+ 2, 2, 1, 11, 3, 2, 7, 1, 9, 3, 6, 2, 2, 5, 3, 4, 4, 4, 9, 9, 4, 3, 11, 1, 1, 1, 1, 1, 7, 6, 81, 5, 2, 10, 3, 3, 1, 1, 6, 1, 2,
+ 2, 15, 14, 14, 4, 3, 1, 1, 1, 1, 3, 1, 2, 1, 1, 5, 1, 1, 1, 16, 4, 3, 2, 9, 8, 1, 2, 3, 1, 2, 2, 2, 1, 1, 4, 11, 1, 1, 5, 4, 3,
+ 2, 6, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 11, 8, 2, 1, 16, 4, 4, 4, 2, 2, 1, 2, 3, 2, 3, 1, 1, 1, 1, 3, 3, 3, 1, 1, 4, 47,
+ 16, 6, 3, 7, 5, 13, 6, 5, 3, 6, 6, 6, 3, 2, 2, 2, 6, 23, 3, 6, 7, 5, 2, 2, 1, 2, 2, 2, 3, 1, 1, 1, 2, 2, 25, 5, 3, 3, 3, 2, 5,
+ 4, 5, 32, 3, 9, 4, 2, 2, 6, 1, 1, 2, 1, 1, 9, 5, 3, 3, 3, 2, 2, 7, 1, 1, 1, 1, 1, 1, 2, 2, 7, 3, 242,16, 4, 2, 3, 5, 1, 16, 8,
+ 3, 2, 2, 3, 3, 3, 4, 2, 69, 1, 1, 1, 35, 8, 6, 3, 15, 11, 9, 6, 2, 22, 15, 5, 2, 4, 2, 2, 25, 4, 4, 10, 4, 2, 2, 6, 2, 56, 13, 1, 1,
+ 4, 2, 2, 3, 3, 24, 2, 2, 3, 3, 5, 11, 5, 6, 4, 10, 3, 1, 1, 1, 1, 3, 4, 4, 2, 10, 4, 4, 1, 1, 6, 4, 18, 2, 2, 13, 8, 8, 32, 2, 7,
+ 4, 4, 4, 1, 1, 2, 1, 4, 2, 2, 1, 3, 2, 3, 21, 8, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 5, 1, 1, 3, 2, 2, 19, 2, 2, 4, 3, 2, 7, 2,
+ 2, 197,17, 1, 10, 4, 1, 144,4, 1, 2, 3, 3, 2, 6, 3, 1, 13, 1, 10, 4, 4, 4, 3, 1, 83, 2, 8, 2, 5, 1, 4, 3, 11, 3, 2, 6, 4, 3, 6, 3,
+ 6, 2, 2, 2, 4, 1, 3, 1, 8, 3, 3, 2, 3, 2, 1, 5, 3, 2, 12, 6, 2, 2, 3, 1, 4, 3, 2, 12, 2, 7, 2, 6, 3, 2, 3, 10, 3, 7, 4, 6, 3,
+ 7, 3, 3, 6, 26, 3, 1, 2, 3, 2, 5, 2, 3, 2, 2, 24, 3, 5, 3, 1, 2, 7, 4, 4, 2, 40, 10, 1, 5, 1, 1, 1, 8, 2, 18, 2, 2, 5, 3, 3, 2,
+ 20, 4, 6, 1, 8, 2, 2, 1, 2, 1, 1, 2, 21, 4, 2, 6, 2, 2, 5, 3, 4, 2, 7, 4, 1, 1, 1, 1, 1, 30, 8, 3, 3, 8, 5, 3, 8, 4, 1, 2, 22,
+ 2, 2, 6, 3, 2, 5, 2, 2, 7, 2, 2, 1, 1, 1, 1, 3, 3, 3, 6, 2, 2, 39, 13, 6, 4, 2, 1, 5, 5, 3, 2, 1, 2, 2, 3, 1, 2, 10, 5, 5, 4,
+ 3, 2, 1, 16, 5, 2, 1, 3, 2, 3, 3, 2, 16, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 5, 2, 2, 2, 2, 2, 1, 23, 5, 3, 1, 1, 1, 1, 5, 2,
+ 4, 2, 1, 2, 5, 1, 1, 3, 2, 1, 1, 1, 1, 9, 4, 4, 2, 8, 7, 5, 5, 5, 5, 4, 144,17, 2, 7, 2, 2, 11, 6, 2, 12, 4, 4, 7, 34, 14, 5, 2,
+ 2, 5, 9, 2, 4, 2, 3, 2, 3, 18, 4, 3, 6, 2, 3, 5, 2, 2, 2, 7, 2, 3, 4, 3, 5, 3, 107,9, 1, 9, 6, 4, 2, 2, 2, 3, 3, 7, 2, 2, 2,
+ 6, 22, 21, 4, 10, 2, 2, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 19, 7, 5, 6, 3, 14, 4, 3, 3, 1, 1, 1, 3, 2, 2, 17, 1, 2, 1,
+ 2, 2, 2, 1, 5, 4, 1, 1, 33, 2, 1, 6, 2, 2, 2, 2, 2, 7, 7, 7, 5, 6, 4, 2, 2, 7, 2, 19, 13, 13, 10, 3, 3, 2, 21, 6, 1, 5, 2, 2, 1,
+ 1, 1, 5, 2, 6, 2, 2, 1, 1, 3, 3, 1, 2, 1, 13, 3, 2, 16, 5, 5, 1, 6, 10, 1, 16, 3, 4, 6, 34, 9, 4, 16, 15, 14, 4, 4, 3, 3, 11, 2, 3,
+ 2, 2, 2, 1, 1, 21, 1, 1, 1, 1, 7, 3, 2, 4, 6, 1, 3, 2, 2, 95, 17, 5, 4, 4, 4, 6, 1, 8, 13, 7, 4, 10, 3, 3, 2, 13, 4, 3, 2, 8, 3,
+ 5, 4, 3, 2, 182,8, 3, 3, 15, 6, 3, 4, 3, 34, 9, 5, 8, 6, 4, 4, 6, 4, 11, 5, 4, 4, 2, 9, 5, 11, 6, 3, 2, 5, 2, 57, 8, 1, 4, 19, 4,
+ 9, 4, 2, 2, 2, 2, 16, 15, 8, 4, 10, 4, 5, 2, 2, 2, 13, 2, 1, 6, 4, 4, 2, 1, 22, 9, 3, 3, 2, 2, 4, 2, 4, 1, 1, 1, 1, 1, 33, 4, 10,
+ 3, 10, 2, 5, 11, 2, 2, 4, 1, 2, 2, 2, 18, 4, 7, 3, 10, 4, 1, 2, 2, 2, 24, 7, 5, 2, 4, 2, 1, 1, 1, 6, 3, 6, 2, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 1, 14, 6, 5, 4, 16, 2, 1, 5, 2, 6, 5, 1, 1, 3, 25, 5, 8, 6, 5, 17, 13, 3, 7, 1, 1, 15, 3, 5, 3, 28, 8, 5, 6, 1, 3, 4, 2,
+ 1, 21, 8, 5, 5, 5, 8, 5, 2, 5, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 2, 2, 2, 2, 57, 2, 3, 5, 4, 1, 9, 3, 4, 4, 7, 5,
+ 22, 4, 7, 3, 1, 1, 1, 32, 8, 7, 3, 3, 11, 9, 3, 5, 4, 3, 4, 3, 2, 1, 1, 1, 97, 1, 1, 3, 1, 26, 8, 1, 4, 2, 1, 1, 2, 2, 1, 4, 2,
+ 2, 2, 2, 3, 2, 2, 2, 7, 2, 2, 6, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 16, 10, 10, 9, 2, 1, 1, 4, 3,
+ 3, 4, 1, 2, 1, 19, 4, 4, 12, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, 2, 2, 1, 1, 8, 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 6,
+ 33, 2, 1, 2, 6, 6, 4, 1, 23, 2, 3, 1, 15, 14, 2, 2, 2, 10, 1, 101,8, 8, 5, 15, 7, 4, 4, 3, 3, 4, 2, 1, 2, 1, 10, 2, 5, 1, 1, 1, 1,
+ 17, 6, 5, 2, 5, 35, 5, 5, 27, 24, 16, 6, 1, 3, 61, 14, 6, 2, 24, 19, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 2, 2, 2, 6, 4, 4, 3, 4, 6, 6,
+ 2, 71, 2, 7, 12, 4, 3, 4, 10, 3, 2, 10, 2, 2, 15, 5, 3, 2, 2, 43, 2, 3, 5, 2, 2, 9, 7, 4, 4, 2, 10, 3, 5, 2, 7, 5, 4, 3, 2, 5, 9,
+ 8, 8, 7, 2, 3, 2, 35, 11, 7, 3, 3, 4, 7, 6, 5, 3, 3, 3, 2, 1, 1, 8, 8, 8, 5, 163,14, 3, 4, 5, 3, 1, 1, 5, 2, 2, 2, 121,86, 5, 1,
+ 1, 1, 5, 8, 1, 1, 1, 1, 6, 5, 13, 6, 2, 2, 5, 4, 14, 4, 1, 3, 3, 2, 1, 1, 12, 1, 1, 3, 4, 3, 2, 1, 1, 21, 1, 1, 1, 1, 1, 1, 1,
+ 3, 2, 2, 2, 2, 1, 7, 3, 3, 2, 7, 3, 102,11, 5, 4, 1, 18, 13, 9, 5, 3, 1, 11, 8, 6, 2, 11, 8, 3, 1, 5, 3, 5, 2, 2, 2, 1, 1, 4, 13,
+ 3, 2, 4, 2, 36, 34, 12, 13, 5, 3, 7, 6, 5, 1, 1, 20, 1, 1, 13, 13, 91, 9, 2, 2, 2, 2, 9, 2, 2, 26, 2, 18, 4, 13, 8, 6, 2, 2, 5, 3, 2,
+ 18, 16, 6, 4, 5, 4, 3, 11, 1, 1, 1, 97, 9, 1, 1, 2, 17, 3, 3, 11, 5, 4, 4, 5, 8, 2, 3, 2, 1, 1, 1, 24, 3, 6, 6, 11, 4, 3, 2, 6, 1,
+ 1, 1, 4, 4, 11, 11, 11, 8, 1, 1, 2, 2, 2, 2, 88, 30, 2, 16, 8, 3, 14, 5, 4, 3, 2, 8, 2, 2, 7, 3, 7, 2, 14, 3, 3, 5, 4, 3, 3, 49, 12,
+ 3, 3, 10, 2, 1, 2, 2, 21, 7, 6, 3, 4, 2, 17, 2, 2, 4, 4, 2, 2, 3, 1, 1, 1, 3, 14, 1, 3, 2, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 2, 1,
+ 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 55, 42, 3, 1, 28, 8, 5, 5, 2, 2, 11, 2, 1, 1, 5, 5, 4, 2, 2, 3, 3, 3, 1, 1, 2, 2, 6, 2, 2,
+ 3, 1, 2, 1, 3, 1, 1, 1, 1, 28, 18, 2, 2, 12, 7, 3, 3, 1, 2, 1, 1, 2, 3, 2, 2, 11, 3, 4, 15, 2, 7, 3, 3, 2, 4, 2, 25, 11, 8, 1, 1,
+ 2, 5, 5, 36, 8, 7, 4, 2, 4, 3, 5, 5, 5, 5, 7, 3, 2, 2, 151,7, 3, 3, 2, 12, 7, 7, 3, 3, 5, 4, 3, 6, 2, 2, 2, 5, 3, 19, 4, 2, 4,
+ 4, 1, 1, 1, 2, 21, 9, 2, 4, 2, 5, 3, 9, 5, 2, 7, 2, 4, 12, 5, 2, 16, 4, 8, 8, 6, 6, 5, 1, 2, 11, 10, 4, 4, 55, 4, 1, 3, 2, 1, 1,
+ 1, 2, 1, 13, 4, 4, 2, 1, 2, 5, 5, 2, 2, 2, 2, 11, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 4, 2, 2, 2, 1, 1, 1, 7, 2,
+ 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 17, 6, 6, 6, 8, 5, 3, 1, 1, 1, 56, 7, 3, 1, 3, 3, 3, 1, 2, 3, 11, 8, 3, 2, 1, 3, 2, 1, 1, 4, 6,
+ 3, 3, 2, 4, 3, 2, 22, 3, 2, 3, 3, 4, 16, 2, 2, 1, 10, 11, 8, 4, 2, 2, 8, 4, 2, 1, 1, 18, 12, 12, 11, 4, 3, 3, 1, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 38, 14, 3, 6, 2, 2, 3, 9, 1, 1, 4, 3, 2, 3, 1, 1, 1, 1, 7, 4, 1, 1, 3, 2, 1, 1, 1, 8, 3, 1, 1, 1, 1, 1, 1, 1, 15, 3,
+ 1, 1, 1, 1, 2, 3, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 43, 1, 2, 1, 1, 2, 1, 1, 1, 8, 2, 2, 3, 3, 20, 7, 7, 2, 2, 4, 3, 3, 3,
+ 3, 2, 1, 4, 1, 1, 1, 1, 3, 3, 2, 2, 4, 1, 1, 1, 1, 1, 1, 13, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 5, 1, 1, 1,
+ 3, 2, 7, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 15, 3, 3, 7, 3,
+ 37, 1, 1, 15, 4, 3, 5, 12, 7, 3, 2, 3, 2, 1, 48, 15, 4, 4, 2, 2, 10, 4, 6, 3, 7, 2, 1, 1, 14, 7, 3, 3, 2, 54, 5, 1, 15, 6, 11, 2, 5,
+ 3, 3, 4, 4, 3, 2, 1, 1, 1, 37, 3, 2, 1, 3, 3, 3, 3, 2, 12, 5, 2, 4, 2, 2, 71, 4, 3, 3, 4, 9, 1, 1, 1, 2, 2, 2, 2, 4, 2, 9, 2,
+ 3, 27, 5, 1, 1, 6, 6, 2, 32, 5, 1, 1, 18, 2, 2, 2, 3, 1, 4, 2, 4, 4, 10, 5, 11, 4, 4, 46, 12, 1, 5, 3, 7, 12, 2, 6, 16, 3, 2, 2, 2,
+ 7, 38, 3, 2, 10, 5, 7, 6, 3, 1, 2, 2, 2, 5, 1, 83, 17, 7, 4, 2, 19, 6, 2, 3, 2, 11, 6, 5, 1, 1, 11, 2, 3, 3, 6, 3, 2, 4, 5, 3, 5,
+ 2, 15, 1, 1, 3, 5, 2, 40, 14, 2, 10, 5, 8, 3, 2, 2, 3, 1, 2, 16, 4, 1, 5, 1, 1, 104,4, 2, 20, 11, 9, 2, 7, 11, 2, 3, 4, 10, 5, 4, 2,
+ 11, 6, 2, 6, 2, 16, 2, 13, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 254,1, 6, 3, 10, 2, 1, 3, 2, 7, 3, 4, 4, 4, 27, 2, 5, 2, 2, 3, 3, 4, 2,
+ 3, 16, 7, 4, 4, 7, 2, 2, 6, 4, 14, 6, 4, 3, 3, 2, 1, 5, 4, 8, 3, 1, 11, 3, 7, 23, 3, 4, 2, 5, 3, 2, 26, 2, 11, 4, 2, 10, 2, 36, 9,
+ 8, 6, 9, 7, 1, 16, 4, 3, 7, 1, 1, 1, 16, 2, 5, 3, 17, 2, 4, 2, 2, 2, 3, 1, 126,3, 4, 3, 2, 2, 3, 40, 2, 3, 7, 8, 7, 5, 4, 3, 1,
+ 4, 10, 3, 8, 3, 3, 4, 3, 4, 20, 8, 2, 4, 4, 14, 9, 1, 2, 2, 3, 151,7, 2, 1, 1, 2, 24, 24, 2, 75, 74, 7, 4, 1, 8, 6, 4, 4, 2, 7, 2,
+ 3, 3, 5, 3, 9, 4, 5, 2, 2, 2, 11, 3, 2, 3, 2, 5, 2, 2, 3, 5, 5, 7, 5, 5, 15, 6, 2, 4, 2, 18, 2, 2, 4, 3, 2, 2, 2, 2, 1, 1, 30,
+ 23, 4, 1, 2, 5, 4, 2, 2, 6, 1, 1, 1, 5, 2, 1, 9, 1, 1, 46, 3, 3, 2, 6, 2, 2, 2, 2, 4, 3, 3, 6, 2, 9, 7, 4, 3, 6, 2, 2, 2, 1,
+ 1, 1, 1, 1, 5, 14, 1, 1, 1, 1, 1, 1, 1, 3, 2, 96, 3, 15, 5, 9, 3, 4, 4, 4, 4, 4, 4, 15, 5, 2, 8, 26, 26, 25, 25, 3, 3, 2, 3, 4, 7,
+ 53, 8, 6, 4, 3, 3, 3, 2, 2, 3, 2, 4, 4, 3, 3, 3, 12, 3, 3, 2, 2, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 10, 3, 2, 1, 1, 1, 7, 3, 1, 44,
+ 12, 5, 2, 1, 5, 5, 7, 2, 10, 6, 3, 5, 5, 4, 68, 13, 3, 1, 1, 16, 5, 3, 4, 3, 2, 4, 7, 2, 3, 1, 3, 3, 18, 3, 5, 2, 2, 1, 1, 1, 2,
+ 28, 3, 14, 4, 3, 3, 206,4, 7, 5, 1, 17, 10, 4, 3, 2, 2, 1, 28, 2, 3, 15, 11, 5, 4, 3, 7, 4, 4, 4, 4, 4, 2, 2, 6, 6, 2, 39, 5, 2, 5,
+ 4, 4, 2, 5, 2, 2, 4, 3, 2, 4, 3, 15, 2, 9, 54, 5, 3, 12, 9, 4, 2, 2, 1, 5, 3, 3, 2, 2, 1, 1, 16, 2, 7, 4, 3, 1, 2, 11, 5, 2, 2,
1, 1, 1, 1, 2, 2, 2, 115,4, 19, 4, 15, 15, 13, 11, 4, 5, 2, 40, 2, 4, 2, 7, 3, 2, 8, 7, 7, 3, 6, 2, 9, 2, 5, 14, 4, 10, 2, 1, 3, 103,
- 1, 8, 3, 2, 2, 36, 12, 7, 2, 3, 4, 5, 5, 2, 4, 1, 1, 8, 4, 3, 5, 2, 2, 8, 3, 1, 1, 12, 5, 7, 2, 92, 2, 4, 5, 3, 4, 2, 2, 3, 2,
- 8, 2, 5, 3, 4, 17, 5, 6, 3, 2, 8, 3, 3, 4, 20, 2, 7, 3, 3, 182,5, 3, 4, 8, 4, 3, 3, 2, 2, 17, 9, 7, 2, 138,4, 13, 4, 5, 4, 7, 6,
- 41, 7, 34, 3, 5, 4, 5, 4, 8, 3, 6, 3, 2, 2, 5, 4, 2, 9, 3, 9, 2, 4, 2, 8, 4, 4, 4, 2, 10, 2, 4, 3, 3, 6, 3, 52, 3, 2, 1, 2, 11,
- 9, 8, 2, 3, 5, 3, 12, 5, 3, 1, 1, 2, 6, 5, 3, 4, 23, 2, 2, 3, 3, 1, 1, 2, 4, 2, 1, 1, 1, 99, 6, 6, 6, 3, 1, 1, 12, 7, 4, 4, 3,
- 2, 11, 5, 1, 49, 9, 5, 3, 2, 1, 1, 1, 1, 2, 2, 5, 4, 4, 2, 2, 5, 2, 8, 5, 5, 1, 1, 1, 1, 1, 1, 1, 2, 96, 14, 11, 3, 33, 27, 2, 2,
- 2, 2, 7, 12, 4, 5, 16, 14, 4, 3, 1, 10, 4, 2, 5, 4, 5, 4, 8, 6, 3, 9, 4, 2, 16, 9, 7, 6, 40, 4, 4, 10, 6, 2, 7, 7, 6, 12, 9, 8, 3,
- 3, 3, 178,3, 2, 4, 6, 2, 3, 3, 78, 6, 3, 6, 2, 1, 4, 10, 3, 3, 9, 2, 3, 3, 3, 3, 3, 6, 13, 1, 3, 3, 2, 2, 7, 4, 3, 5, 3, 2, 5,
- 11, 3, 3, 3, 8, 4, 10, 5, 2, 33, 2, 10, 5, 7, 4, 4, 2, 8, 7, 3, 4, 1, 66, 7, 2, 3, 1, 10, 9, 1, 1, 1, 1, 5, 4, 3, 14, 9, 4, 11, 4,
- 4, 1, 1, 1, 1, 3, 2, 21, 2, 4, 4, 2, 2, 2, 10, 3, 5, 4, 8, 4, 3, 2, 2, 62, 4, 4, 10, 3, 44, 21, 2, 5, 3, 6, 2, 7, 4, 3, 2, 1, 59,
- 6, 4, 22, 4, 5, 2, 2, 4, 4, 1, 7, 6, 3, 7, 7, 2, 111,8, 5, 9, 4, 2, 17, 11, 1, 7, 2, 7, 18, 3, 1, 5, 2, 2, 2, 2, 11, 5, 14, 7, 2,
- 2, 2, 2, 17, 9, 2, 2, 4, 7, 5, 3, 53, 1, 3, 1, 2, 23, 2, 6, 5, 5, 6, 4, 3, 2, 2, 3, 3, 2, 3, 3, 4, 1, 1, 2, 20, 9, 3, 2, 2, 5,
- 3, 14, 4, 4, 4, 1, 3, 15, 3, 6, 3, 70, 3, 3, 7, 6, 4, 19, 2, 4, 7, 3, 7, 2, 2, 3, 3, 4, 2, 5, 2, 3, 3, 12, 3, 10, 1, 2, 4, 2, 3,
- 15, 10, 9, 9, 3, 3, 27, 11, 4, 7, 5, 4, 5, 170,1, 1, 16, 2, 5, 3, 2, 5, 4, 32, 4, 3, 10, 4, 3, 2, 7, 3, 67, 30, 24, 9, 3, 6, 4, 2, 10,
- 8, 4, 2, 10, 3, 3, 2, 13, 3, 2, 5, 2, 7, 17, 4, 4, 6, 10, 2, 6, 17, 2, 2, 1, 5, 3, 27, 11, 3, 3, 3, 6, 3, 1, 4, 7, 2, 14, 2, 9, 7,
- 3, 2, 70, 2, 2, 7, 3, 5, 3, 4, 6, 3, 13, 10, 5, 17, 3, 1, 2, 4, 3, 1, 2, 1, 1, 27, 4, 2, 5, 4, 4, 1, 1, 5, 4, 7, 4, 3, 36, 12, 6,
- 3, 3, 4, 3, 9, 3, 3, 25, 11, 7, 1, 1, 7, 7, 1, 4, 34, 15, 1, 6, 2, 1, 15, 6, 5, 3, 3, 2, 1, 5, 2, 29, 5, 3, 13, 10, 9, 47, 37, 36, 5,
- 3, 2, 2, 3, 1, 2, 2, 4, 2, 3, 2, 2, 2, 4, 3, 14, 6, 3, 2, 2, 1, 34, 1, 1, 13, 3, 3, 3, 3, 2, 7, 109,2, 11, 6, 5, 3, 3, 3, 3, 19,
- 4, 2, 2, 2, 2, 3, 3, 19, 4, 3, 3, 3, 4, 3, 10, 3, 4, 2, 2, 3, 1, 16, 1, 1, 1, 8, 2, 2, 2, 2, 2, 2, 3, 7, 4, 3, 2, 135,2, 11, 9,
- 39, 7, 7, 6, 6, 14, 10, 3, 3, 2, 3, 3, 3, 4, 3, 5, 5, 2, 3, 51, 16, 3, 6, 4, 4, 2, 1, 1, 1, 3, 2, 4, 3, 7, 3, 4, 4, 2, 2, 3, 3,
- 2, 3, 1, 1, 1, 1, 2, 2, 2, 5, 12, 8, 7, 6, 2, 3, 1, 1, 18, 8, 3, 2, 9, 2, 1, 5, 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 9, 2, 1, 1, 1,
- 2, 16, 2, 3, 3, 1, 1, 1, 3, 9, 6, 5, 9, 2, 3, 1, 19, 3, 6, 3, 2, 4, 17, 16, 5, 4, 2, 1, 1, 1, 1, 1, 2, 2, 28, 1, 1, 1, 5, 5, 2,
- 3, 5, 2, 2, 12, 5, 2, 2, 2, 6, 162,7, 4, 3, 3, 2, 2, 6, 5, 1, 55, 5, 11, 6, 2, 1, 2, 4, 2, 2, 5, 3, 3, 3, 4, 5, 3, 2, 2, 4, 7,
- 3, 3, 25, 5, 7, 3, 2, 1, 3, 2, 1, 1, 3, 6, 2, 2, 3, 9, 2, 2, 2, 1, 1, 8, 3, 11, 9, 5, 1, 30, 11, 7, 2, 10, 5, 2, 8, 2, 2, 4, 2,
- 2, 39, 25, 21, 21, 3, 4, 4, 4, 1, 3, 1, 3, 3, 197,114,4, 10, 10, 1, 3, 3, 7, 8, 3, 4, 3, 7, 4, 5, 11, 3, 3, 5, 3, 3, 3, 10, 3, 4, 2,
- 11, 2, 2, 2, 7, 4, 4, 6, 4, 3, 4, 3, 43, 2, 2, 7, 4, 2, 2, 6, 2, 1, 1, 1, 1, 1, 5, 2, 1, 1, 4, 2, 2, 2, 1, 5, 3, 6, 173,3, 19,
- 3, 4, 6, 1, 1, 5, 48, 3, 2, 3, 4, 3, 9, 7, 6, 3, 3, 9, 19, 15, 4, 3, 17, 2, 3, 2, 12, 1, 4, 4, 24, 6, 11, 10, 10, 5, 19, 13, 4, 3, 4,
- 1, 1, 1, 1, 4, 19, 12, 9, 4, 8, 1, 1, 4, 3, 7, 6, 4, 9, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 157,32, 2, 3, 3, 8, 7, 8, 2, 3, 1, 41, 6,
- 7, 7, 8, 13, 13, 10, 7, 2, 49, 12, 10, 10, 5, 10, 6, 6, 5, 1, 1, 8, 7, 2, 15, 8, 6, 2, 2, 23, 5, 3, 11, 9, 2, 4, 3, 4, 3, 3, 3, 12, 2,
- 1, 3, 5, 12, 2, 3, 2, 2, 2, 1, 1, 1, 83, 1, 1, 5, 3, 3, 3, 3, 2, 1, 10, 1, 1, 1, 1, 2, 3, 3, 3, 3, 1, 1, 2, 7, 6, 2, 9, 6, 5,
- 5, 4, 2, 1, 1, 1, 18, 2, 5, 1, 1, 1, 1, 1, 4, 8, 4, 5, 3, 3, 3, 2, 1, 1, 24, 3, 2, 2, 1, 1, 1, 12, 1, 1, 1, 5, 4, 2, 4, 3, 2,
+ 1, 8, 3, 2, 2, 36, 12, 7, 2, 3, 4, 5, 5, 2, 4, 1, 1, 8, 4, 3, 5, 2, 2, 8, 3, 1, 1, 12, 5, 7, 2, 92, 2, 4, 5, 3, 4, 2, 2, 3, 2,
+ 8, 2, 5, 3, 4, 17, 5, 6, 3, 2, 8, 3, 3, 4, 20, 2, 7, 3, 3, 182,5, 3, 4, 8, 4, 3, 3, 2, 2, 17, 9, 7, 2, 138,4, 13, 4, 5, 4, 7, 6,
+ 41, 7, 34, 3, 5, 4, 5, 4, 8, 3, 6, 3, 2, 2, 5, 4, 2, 9, 3, 9, 2, 4, 2, 8, 4, 4, 4, 2, 10, 2, 4, 3, 3, 6, 3, 52, 3, 2, 1, 2, 11,
+ 9, 8, 2, 3, 5, 3, 12, 5, 3, 1, 1, 2, 6, 5, 3, 4, 23, 2, 2, 3, 3, 1, 1, 2, 4, 2, 1, 1, 1, 99, 6, 6, 6, 3, 1, 1, 12, 7, 4, 4, 3,
+ 2, 11, 5, 1, 49, 9, 5, 3, 2, 1, 1, 1, 1, 2, 2, 5, 4, 4, 2, 2, 5, 2, 8, 5, 5, 1, 1, 1, 1, 1, 1, 1, 2, 96, 14, 11, 3, 33, 27, 2, 2,
+ 2, 2, 7, 12, 4, 5, 16, 14, 4, 3, 1, 10, 4, 2, 5, 4, 5, 4, 8, 6, 3, 9, 4, 2, 16, 9, 7, 6, 40, 4, 4, 10, 6, 2, 7, 7, 6, 12, 9, 8, 3,
+ 3, 3, 178,3, 2, 4, 6, 2, 3, 3, 78, 6, 3, 6, 2, 1, 4, 10, 3, 3, 9, 2, 3, 3, 3, 3, 3, 6, 13, 1, 3, 3, 2, 2, 7, 4, 3, 5, 3, 2, 5,
+ 11, 3, 3, 3, 8, 4, 10, 5, 2, 33, 2, 10, 5, 7, 4, 4, 2, 8, 7, 3, 4, 1, 66, 7, 2, 3, 1, 10, 9, 1, 1, 1, 1, 5, 4, 3, 14, 9, 4, 11, 4,
+ 4, 1, 1, 1, 1, 3, 2, 21, 2, 4, 4, 2, 2, 2, 10, 3, 5, 4, 8, 4, 3, 2, 2, 62, 4, 4, 10, 3, 44, 21, 2, 5, 3, 6, 2, 7, 4, 3, 2, 1, 59,
+ 6, 4, 22, 4, 5, 2, 2, 4, 4, 1, 7, 6, 3, 7, 7, 2, 111,8, 5, 9, 4, 2, 17, 11, 1, 7, 2, 7, 18, 3, 1, 5, 2, 2, 2, 2, 11, 5, 14, 7, 2,
+ 2, 2, 2, 17, 9, 2, 2, 4, 7, 5, 3, 53, 1, 3, 1, 2, 23, 2, 6, 5, 5, 6, 4, 3, 2, 2, 3, 3, 2, 3, 3, 4, 1, 1, 2, 20, 9, 3, 2, 2, 5,
+ 3, 14, 4, 4, 4, 1, 3, 15, 3, 6, 3, 70, 3, 3, 7, 6, 4, 19, 2, 4, 7, 3, 7, 2, 2, 3, 3, 4, 2, 5, 2, 3, 3, 12, 3, 10, 1, 2, 4, 2, 3,
+ 15, 10, 9, 9, 3, 3, 27, 11, 4, 7, 5, 4, 5, 170,1, 1, 16, 2, 5, 3, 2, 5, 4, 32, 4, 3, 10, 4, 3, 2, 7, 3, 67, 30, 24, 9, 3, 6, 4, 2, 10,
+ 8, 4, 2, 10, 3, 3, 2, 13, 3, 2, 5, 2, 7, 17, 4, 4, 6, 10, 2, 6, 17, 2, 2, 1, 5, 3, 27, 11, 3, 3, 3, 6, 3, 1, 4, 7, 2, 14, 2, 9, 7,
+ 3, 2, 70, 2, 2, 7, 3, 5, 3, 4, 6, 3, 13, 10, 5, 17, 3, 1, 2, 4, 3, 1, 2, 1, 1, 27, 4, 2, 5, 4, 4, 1, 1, 5, 4, 7, 4, 3, 36, 12, 6,
+ 3, 3, 4, 3, 9, 3, 3, 25, 11, 7, 1, 1, 7, 7, 1, 4, 34, 15, 1, 6, 2, 1, 15, 6, 5, 3, 3, 2, 1, 5, 2, 29, 5, 3, 13, 10, 9, 47, 37, 36, 5,
+ 3, 2, 2, 3, 1, 2, 2, 4, 2, 3, 2, 2, 2, 4, 3, 14, 6, 3, 2, 2, 1, 34, 1, 1, 13, 3, 3, 3, 3, 2, 7, 109,2, 11, 6, 5, 3, 3, 3, 3, 19,
+ 4, 2, 2, 2, 2, 3, 3, 19, 4, 3, 3, 3, 4, 3, 10, 3, 4, 2, 2, 3, 1, 16, 1, 1, 1, 8, 2, 2, 2, 2, 2, 2, 3, 7, 4, 3, 2, 135,2, 11, 9,
+ 39, 7, 7, 6, 6, 14, 10, 3, 3, 2, 3, 3, 3, 4, 3, 5, 5, 2, 3, 51, 16, 3, 6, 4, 4, 2, 1, 1, 1, 3, 2, 4, 3, 7, 3, 4, 4, 2, 2, 3, 3,
+ 2, 3, 1, 1, 1, 1, 2, 2, 2, 5, 12, 8, 7, 6, 2, 3, 1, 1, 18, 8, 3, 2, 9, 2, 1, 5, 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 9, 2, 1, 1, 1,
+ 2, 16, 2, 3, 3, 1, 1, 1, 3, 9, 6, 5, 9, 2, 3, 1, 19, 3, 6, 3, 2, 4, 17, 16, 5, 4, 2, 1, 1, 1, 1, 1, 2, 2, 28, 1, 1, 1, 5, 5, 2,
+ 3, 5, 2, 2, 12, 5, 2, 2, 2, 6, 162,7, 4, 3, 3, 2, 2, 6, 5, 1, 55, 5, 11, 6, 2, 1, 2, 4, 2, 2, 5, 3, 3, 3, 4, 5, 3, 2, 2, 4, 7,
+ 3, 3, 25, 5, 7, 3, 2, 1, 3, 2, 1, 1, 3, 6, 2, 2, 3, 9, 2, 2, 2, 1, 1, 8, 3, 11, 9, 5, 1, 30, 11, 7, 2, 10, 5, 2, 8, 2, 2, 4, 2,
+ 2, 39, 25, 21, 21, 3, 4, 4, 4, 1, 3, 1, 3, 3, 197,114,4, 10, 10, 1, 3, 3, 7, 8, 3, 4, 3, 7, 4, 5, 11, 3, 3, 5, 3, 3, 3, 10, 3, 4, 2,
+ 11, 2, 2, 2, 7, 4, 4, 6, 4, 3, 4, 3, 43, 2, 2, 7, 4, 2, 2, 6, 2, 1, 1, 1, 1, 1, 5, 2, 1, 1, 4, 2, 2, 2, 1, 5, 3, 6, 173,3, 19,
+ 3, 4, 6, 1, 1, 5, 48, 3, 2, 3, 4, 3, 9, 7, 6, 3, 3, 9, 19, 15, 4, 3, 17, 2, 3, 2, 12, 1, 4, 4, 24, 6, 11, 10, 10, 5, 19, 13, 4, 3, 4,
+ 1, 1, 1, 1, 4, 19, 12, 9, 4, 8, 1, 1, 4, 3, 7, 6, 4, 9, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 157,32, 2, 3, 3, 8, 7, 8, 2, 3, 1, 41, 6,
+ 7, 7, 8, 13, 13, 10, 7, 2, 49, 12, 10, 10, 5, 10, 6, 6, 5, 1, 1, 8, 7, 2, 15, 8, 6, 2, 2, 23, 5, 3, 11, 9, 2, 4, 3, 4, 3, 3, 3, 12, 2,
+ 1, 3, 5, 12, 2, 3, 2, 2, 2, 1, 1, 1, 83, 1, 1, 5, 3, 3, 3, 3, 2, 1, 10, 1, 1, 1, 1, 2, 3, 3, 3, 3, 1, 1, 2, 7, 6, 2, 9, 6, 5,
+ 5, 4, 2, 1, 1, 1, 18, 2, 5, 1, 1, 1, 1, 1, 4, 8, 4, 5, 3, 3, 3, 2, 1, 1, 24, 3, 2, 2, 1, 1, 1, 12, 1, 1, 1, 5, 4, 2, 4, 3, 2,
101,7, 5, 4, 3, 9, 2, 2, 7, 2, 2, 4, 4, 3, 6, 4, 10, 5, 2, 22, 3, 2, 5, 3, 3, 3, 5, 2, 2, 9, 2, 1, 4, 3, 2, 2, 1, 1, 1, 2, 232,
- 1, 1, 1, 1, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
- 2, 2, 10, 2, 5, 3, 6, 2, 2, 5, 4, 4, 2, 6, 3, 2, 1, 21, 1, 1, 12, 2, 9, 4, 3, 3, 5, 2, 1, 6, 3, 2, 3, 2, 41, 16, 6, 2, 7, 2, 1,
- 1, 1, 5, 9, 3, 2, 3, 2, 2, 1, 1, 2, 1, 1, 7, 4, 3, 3, 5, 2, 1, 1, 3, 2, 2, 2, 1, 1, 1, 5, 2, 2, 2, 2, 1, 3, 2, 1, 1, 8, 1,
- 1, 1, 5, 3, 11, 2, 1, 1, 1, 3, 1, 1, 2, 1, 11, 5, 4, 2, 1, 1, 1, 2, 36, 29, 3, 5, 2, 1, 1, 1, 1, 1, 4, 6, 4, 3, 11, 1, 1, 1, 1,
- 5, 3, 2, 2, 1, 1, 3, 4, 2, 2, 2, 10, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 17, 2,
- 5, 4, 5, 2, 3, 11, 5, 6, 6, 15, 2, 2, 1, 3, 1, 1, 13, 3, 3, 1, 1, 29, 2, 4, 3, 2, 3, 2, 2, 12, 4, 7, 46, 30, 2, 7, 6, 3, 2, 6, 2,
- 4, 2, 1, 1, 1, 3, 1, 1, 1, 2, 95, 9, 4, 3, 5, 6, 5, 5, 6, 28, 16, 13, 9, 6, 5, 4, 11, 2, 1, 4, 8, 1, 1, 1, 1, 7, 2, 1, 1, 3, 4,
- 3, 3, 50, 1, 7, 3, 11, 4, 2, 4, 6, 4, 3, 3, 3, 8, 3, 3, 33, 2, 3, 4, 5, 4, 4, 1, 1, 1, 11, 2, 8, 2, 1, 1, 5, 3, 7, 3, 7, 1, 4,
- 12, 4, 1, 3, 3, 21, 5, 3, 1, 13, 6, 6, 2, 2, 6, 6, 6, 1, 1, 1, 1, 1, 2, 58, 9, 3, 28, 2, 2, 3, 3, 3, 6, 6, 3, 2, 7, 2, 3, 7, 1,
- 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 2, 49, 3, 3, 2, 31, 22, 20, 2, 2, 2, 2, 5, 4, 4, 3, 19, 4, 2, 3, 3, 10, 4, 5, 27, 4, 2, 3, 5, 2, 35,
- 1, 7, 4, 4, 4, 2, 7, 2, 6, 5, 5, 1, 1, 1, 9, 4, 3, 4, 2, 29, 9, 9, 1, 1, 2, 2, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 3, 2,
- 8, 2, 2, 6, 3, 3, 1, 1, 5, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 4, 2, 2, 37, 2, 4, 5, 2, 2, 2, 7, 5, 2, 4, 3, 2, 4, 3, 2, 2, 9, 1,
- 6, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 7, 2, 2, 4, 11, 4, 3, 2, 10, 4, 4, 4, 12, 4, 4, 1, 1, 6, 3,
- 3, 3, 2, 15, 4, 7, 11, 6, 5, 11, 5, 3, 3, 31, 4, 8, 2, 6, 4, 4, 1, 31, 3, 15, 3, 3, 36, 3, 27, 27, 2, 3, 5, 4, 3, 2, 2, 2, 3, 99, 5,
- 2, 1, 2, 1, 7, 1, 3, 2, 2, 38, 25, 3, 2, 5, 2, 1, 1, 2, 5, 4, 4, 13, 3, 2, 4, 13, 2, 2, 2, 2, 3, 5, 3, 2, 3, 6, 6, 2, 5, 1, 1,
- 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 7, 1, 1, 1, 2, 2, 2, 2, 1, 1, 12, 2, 2, 2, 2, 13, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 3,
- 2, 1, 1, 1, 1, 1, 139,3, 2, 7, 2, 2, 3, 2, 1, 1, 1, 7, 3, 8, 2, 5, 4, 4, 4, 3, 3, 1, 1, 3, 1, 11, 3, 3, 4, 7, 2, 4, 11, 5, 17,
- 4, 2, 7, 20, 2, 2, 2, 6, 3, 3, 13, 1, 3, 5, 4, 2, 10, 4, 4, 4, 1, 1, 2, 1, 1, 3, 1, 1, 1, 6, 1, 1, 1, 4, 4, 3, 2, 1, 5, 2, 2,
- 2, 14, 6, 6, 6, 6, 4, 5, 5, 5, 5, 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 24, 5, 1, 3, 3, 2, 4, 3, 3, 3, 3, 31, 3, 2, 2,
- 5, 4, 2, 17, 9, 9, 4, 4, 3, 4, 18, 3, 5, 3, 4, 3, 2, 7, 4, 23, 8, 1, 4, 4, 4, 3, 30, 8, 6, 2, 6, 2, 6, 4, 2, 18, 2, 4, 4, 2, 3,
- 4, 20, 7, 1, 5, 3, 1, 1, 1, 2, 2, 1, 1, 1, 23, 4, 2, 6, 3, 1, 1, 2, 50, 7, 2, 2, 16, 2, 2, 3, 6, 2, 3, 6, 4, 3, 3, 3, 2, 8, 5,
- 2, 6, 2, 3, 2, 57, 3, 4, 1, 2, 7, 3, 3, 7, 3, 1, 7, 5, 3, 3, 5, 2, 4, 1, 1, 37, 8, 6, 2, 2, 3, 5, 2, 1, 1, 2, 12, 4, 1, 2, 2,
- 21, 1, 11, 8, 3, 4, 3, 2, 2, 2, 2, 5, 5, 5, 2, 2, 2, 3, 3, 3, 61, 10, 2, 3, 1, 2, 3, 7, 9, 4, 2, 2, 2, 2, 2, 9, 2, 1, 4, 2, 3,
- 2, 9, 3, 2, 9, 4, 3, 2, 7, 1, 1, 1, 1, 2, 1, 15, 8, 3, 2, 2, 2, 2, 10, 4, 6, 1, 1, 3, 4, 2, 2, 2, 8, 6, 1, 3, 8, 4, 1, 1, 5,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 9, 2, 3, 1, 2, 1, 13, 9, 4, 1, 15, 3, 8, 7, 2, 11, 3, 6, 1, 7, 3, 9, 2, 1, 2,
- 2, 5, 4, 3, 12, 3, 1, 3, 1, 4, 28, 5, 3, 3, 5, 7, 1, 1, 4, 53, 6, 2, 2, 4, 10, 5, 4, 3, 2, 1, 1, 1, 3, 16, 3, 4, 3, 2, 21, 5, 3,
- 2, 40, 2, 7, 4, 7, 3, 4, 7, 4, 4, 11, 4, 1, 4, 43, 4, 5, 3, 3, 3, 12, 1, 1, 1, 2, 5, 1, 1, 14, 3, 4, 2, 2, 4, 1, 1, 1, 1, 1, 1,
- 1, 3, 4, 2, 1, 1, 51, 10, 6, 3, 3, 8, 6, 3, 1, 5, 2, 8, 6, 6, 2, 15, 6, 4, 3, 2, 2, 1, 1, 1, 1, 1, 8, 4, 2, 3, 3, 11, 2, 2, 5,
- 2, 6, 3, 3, 58, 8, 3, 11, 6, 3, 8, 3, 3, 7, 4, 2, 8, 6, 2, 2, 14, 1, 7, 1, 20, 10, 3, 3, 26, 6, 5, 3, 3, 3, 12, 11, 10, 2, 1, 1, 41,
- 4, 3, 8, 3, 4, 4, 1, 4, 3, 3, 8, 30, 17, 6, 4, 3, 13, 4, 3, 3, 5, 5, 3, 12, 2, 4, 2, 4, 4, 2, 1, 1, 1, 1, 1, 1, 1, 14, 6, 6, 1,
- 1, 1, 5, 5, 1, 10, 3, 1, 1, 1, 1, 4, 1, 2, 1, 1, 1, 166,3, 7, 4, 4, 9, 4, 4, 5, 2, 4, 30, 4, 2, 2, 2, 10, 2, 1, 4, 4, 2, 2, 2,
- 14, 10, 5, 2, 2, 14, 2, 1, 21, 2, 5, 2, 2, 1, 1, 1, 1, 1, 1, 33, 3, 2, 3, 6, 4, 4, 4, 1, 7, 5, 4, 3, 2, 10, 2, 2, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 2, 10, 2, 5, 3, 6, 2, 2, 5, 4, 4, 2, 6, 3, 2, 1, 21, 1, 1, 12, 2, 9, 4, 3, 3, 5, 2, 1, 6, 3, 2, 3, 2, 41, 16, 6, 2, 7, 2, 1,
+ 1, 1, 5, 9, 3, 2, 3, 2, 2, 1, 1, 2, 1, 1, 7, 4, 3, 3, 5, 2, 1, 1, 3, 2, 2, 2, 1, 1, 1, 5, 2, 2, 2, 2, 1, 3, 2, 1, 1, 8, 1,
+ 1, 1, 5, 3, 11, 2, 1, 1, 1, 3, 1, 1, 2, 1, 11, 5, 4, 2, 1, 1, 1, 2, 36, 29, 3, 5, 2, 1, 1, 1, 1, 1, 4, 6, 4, 3, 11, 1, 1, 1, 1,
+ 5, 3, 2, 2, 1, 1, 3, 4, 2, 2, 2, 10, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 17, 2,
+ 5, 4, 5, 2, 3, 11, 5, 6, 6, 15, 2, 2, 1, 3, 1, 1, 13, 3, 3, 1, 1, 29, 2, 4, 3, 2, 3, 2, 2, 12, 4, 7, 46, 30, 2, 7, 6, 3, 2, 6, 2,
+ 4, 2, 1, 1, 1, 3, 1, 1, 1, 2, 95, 9, 4, 3, 5, 6, 5, 5, 6, 28, 16, 13, 9, 6, 5, 4, 11, 2, 1, 4, 8, 1, 1, 1, 1, 7, 2, 1, 1, 3, 4,
+ 3, 3, 50, 1, 7, 3, 11, 4, 2, 4, 6, 4, 3, 3, 3, 8, 3, 3, 33, 2, 3, 4, 5, 4, 4, 1, 1, 1, 11, 2, 8, 2, 1, 1, 5, 3, 7, 3, 7, 1, 4,
+ 12, 4, 1, 3, 3, 21, 5, 3, 1, 13, 6, 6, 2, 2, 6, 6, 6, 1, 1, 1, 1, 1, 2, 58, 9, 3, 28, 2, 2, 3, 3, 3, 6, 6, 3, 2, 7, 2, 3, 7, 1,
+ 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 2, 49, 3, 3, 2, 31, 22, 20, 2, 2, 2, 2, 5, 4, 4, 3, 19, 4, 2, 3, 3, 10, 4, 5, 27, 4, 2, 3, 5, 2, 35,
+ 1, 7, 4, 4, 4, 2, 7, 2, 6, 5, 5, 1, 1, 1, 9, 4, 3, 4, 2, 29, 9, 9, 1, 1, 2, 2, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 3, 2,
+ 8, 2, 2, 6, 3, 3, 1, 1, 5, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 4, 2, 2, 37, 2, 4, 5, 2, 2, 2, 7, 5, 2, 4, 3, 2, 4, 3, 2, 2, 9, 1,
+ 6, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 7, 2, 2, 4, 11, 4, 3, 2, 10, 4, 4, 4, 12, 4, 4, 1, 1, 6, 3,
+ 3, 3, 2, 15, 4, 7, 11, 6, 5, 11, 5, 3, 3, 31, 4, 8, 2, 6, 4, 4, 1, 31, 3, 15, 3, 3, 36, 3, 27, 27, 2, 3, 5, 4, 3, 2, 2, 2, 3, 99, 5,
+ 2, 1, 2, 1, 7, 1, 3, 2, 2, 38, 25, 3, 2, 5, 2, 1, 1, 2, 5, 4, 4, 13, 3, 2, 4, 13, 2, 2, 2, 2, 3, 5, 3, 2, 3, 6, 6, 2, 5, 1, 1,
+ 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 7, 1, 1, 1, 2, 2, 2, 2, 1, 1, 12, 2, 2, 2, 2, 13, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 3,
+ 2, 1, 1, 1, 1, 1, 139,3, 2, 7, 2, 2, 3, 2, 1, 1, 1, 7, 3, 8, 2, 5, 4, 4, 4, 3, 3, 1, 1, 3, 1, 11, 3, 3, 4, 7, 2, 4, 11, 5, 17,
+ 4, 2, 7, 20, 2, 2, 2, 6, 3, 3, 13, 1, 3, 5, 4, 2, 10, 4, 4, 4, 1, 1, 2, 1, 1, 3, 1, 1, 1, 6, 1, 1, 1, 4, 4, 3, 2, 1, 5, 2, 2,
+ 2, 14, 6, 6, 6, 6, 4, 5, 5, 5, 5, 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 24, 5, 1, 3, 3, 2, 4, 3, 3, 3, 3, 31, 3, 2, 2,
+ 5, 4, 2, 17, 9, 9, 4, 4, 3, 4, 18, 3, 5, 3, 4, 3, 2, 7, 4, 23, 8, 1, 4, 4, 4, 3, 30, 8, 6, 2, 6, 2, 6, 4, 2, 18, 2, 4, 4, 2, 3,
+ 4, 20, 7, 1, 5, 3, 1, 1, 1, 2, 2, 1, 1, 1, 23, 4, 2, 6, 3, 1, 1, 2, 50, 7, 2, 2, 16, 2, 2, 3, 6, 2, 3, 6, 4, 3, 3, 3, 2, 8, 5,
+ 2, 6, 2, 3, 2, 57, 3, 4, 1, 2, 7, 3, 3, 7, 3, 1, 7, 5, 3, 3, 5, 2, 4, 1, 1, 37, 8, 6, 2, 2, 3, 5, 2, 1, 1, 2, 12, 4, 1, 2, 2,
+ 21, 1, 11, 8, 3, 4, 3, 2, 2, 2, 2, 5, 5, 5, 2, 2, 2, 3, 3, 3, 61, 10, 2, 3, 1, 2, 3, 7, 9, 4, 2, 2, 2, 2, 2, 9, 2, 1, 4, 2, 3,
+ 2, 9, 3, 2, 9, 4, 3, 2, 7, 1, 1, 1, 1, 2, 1, 15, 8, 3, 2, 2, 2, 2, 10, 4, 6, 1, 1, 3, 4, 2, 2, 2, 8, 6, 1, 3, 8, 4, 1, 1, 5,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 9, 2, 3, 1, 2, 1, 13, 9, 4, 1, 15, 3, 8, 7, 2, 11, 3, 6, 1, 7, 3, 9, 2, 1, 2,
+ 2, 5, 4, 3, 12, 3, 1, 3, 1, 4, 28, 5, 3, 3, 5, 7, 1, 1, 4, 53, 6, 2, 2, 4, 10, 5, 4, 3, 2, 1, 1, 1, 3, 16, 3, 4, 3, 2, 21, 5, 3,
+ 2, 40, 2, 7, 4, 7, 3, 4, 7, 4, 4, 11, 4, 1, 4, 43, 4, 5, 3, 3, 3, 12, 1, 1, 1, 2, 5, 1, 1, 14, 3, 4, 2, 2, 4, 1, 1, 1, 1, 1, 1,
+ 1, 3, 4, 2, 1, 1, 51, 10, 6, 3, 3, 8, 6, 3, 1, 5, 2, 8, 6, 6, 2, 15, 6, 4, 3, 2, 2, 1, 1, 1, 1, 1, 8, 4, 2, 3, 3, 11, 2, 2, 5,
+ 2, 6, 3, 3, 58, 8, 3, 11, 6, 3, 8, 3, 3, 7, 4, 2, 8, 6, 2, 2, 14, 1, 7, 1, 20, 10, 3, 3, 26, 6, 5, 3, 3, 3, 12, 11, 10, 2, 1, 1, 41,
+ 4, 3, 8, 3, 4, 4, 1, 4, 3, 3, 8, 30, 17, 6, 4, 3, 13, 4, 3, 3, 5, 5, 3, 12, 2, 4, 2, 4, 4, 2, 1, 1, 1, 1, 1, 1, 1, 14, 6, 6, 1,
+ 1, 1, 5, 5, 1, 10, 3, 1, 1, 1, 1, 4, 1, 2, 1, 1, 1, 166,3, 7, 4, 4, 9, 4, 4, 5, 2, 4, 30, 4, 2, 2, 2, 10, 2, 1, 4, 4, 2, 2, 2,
+ 14, 10, 5, 2, 2, 14, 2, 1, 21, 2, 5, 2, 2, 1, 1, 1, 1, 1, 1, 33, 3, 2, 3, 6, 4, 4, 4, 1, 7, 5, 4, 3, 2, 10, 2, 2, 3, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 3, 2, 1, 1, 1, 1, 14, 2, 1, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 140,
- 3, 15, 3, 2, 3, 2, 5, 1, 1, 1, 3, 18, 8, 3, 3, 2, 4, 5, 4, 4, 8, 4, 4, 2, 2, 2, 2, 3, 3, 2, 9, 6, 18, 2, 2, 3, 2, 3, 4, 15, 3,
- 5, 2, 2, 2, 2, 9, 5, 6, 3, 2, 19, 4, 2, 4, 2, 2, 2, 4, 3, 2, 2, 3, 10, 1, 1, 1, 3, 1, 1, 5, 2, 1, 2, 34, 1, 5, 7, 5, 1, 14, 4,
- 4, 4, 2, 2, 2, 3, 3, 6, 6, 2, 1, 1, 1, 1, 53, 2, 2, 2, 2, 2, 2, 2, 47, 7, 7, 6, 5, 5, 5, 3, 3, 2, 2, 2, 30, 1, 22, 4, 1, 17, 11,
+ 3, 15, 3, 2, 3, 2, 5, 1, 1, 1, 3, 18, 8, 3, 3, 2, 4, 5, 4, 4, 8, 4, 4, 2, 2, 2, 2, 3, 3, 2, 9, 6, 18, 2, 2, 3, 2, 3, 4, 15, 3,
+ 5, 2, 2, 2, 2, 9, 5, 6, 3, 2, 19, 4, 2, 4, 2, 2, 2, 4, 3, 2, 2, 3, 10, 1, 1, 1, 3, 1, 1, 5, 2, 1, 2, 34, 1, 5, 7, 5, 1, 14, 4,
+ 4, 4, 2, 2, 2, 3, 3, 6, 6, 2, 1, 1, 1, 1, 53, 2, 2, 2, 2, 2, 2, 2, 47, 7, 7, 6, 5, 5, 5, 3, 3, 2, 2, 2, 30, 1, 22, 4, 1, 17, 11,
5, 4, 3, 2, 2, 1, 1, 1, 1, 22, 2, 4, 2, 2, 4, 2, 2, 1, 1, 3, 20, 1, 1, 1, 1, 1, 2, 2, 2, 2, 12, 2, 2, 6, 4, 3, 2
};
static const char CharSet[60] = "!#$%'(*+,-./0123456789:;=?@[\\]_`abcdefghijklmnopqrstuvwxyz|";
diff --git a/src/zxcvbn/zxcvbn.cpp b/src/zxcvbn/zxcvbn.c
index 52c0bb1f3..26237fba8 100644
--- a/src/zxcvbn/zxcvbn.cpp
+++ b/src/zxcvbn/zxcvbn.c
@@ -1,42 +1,41 @@
/**********************************************************************************
* C implementation of the zxcvbn password strength estimation method.
- * Copyright (c) 2015, Tony Evans
- * All rights reserved.
+ * Copyright (c) 2015-2017 Tony Evans
*
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
*
- * 1. Redistributions of source code must retain the above copyright notice, this list
- * of conditions and the following disclaimer.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * 2. Redistributions in binary form must reproduce the above copyright notice, this
- * list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its contributors may be
- * used to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
- * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
*
**********************************************************************************/
-#include "zxcvbn.h"
+#include <zxcvbn.h>
#include <ctype.h>
#include <string.h>
#include <stdint.h>
#include <math.h>
#include <float.h>
+/* printf */
+#ifdef __cplusplus
+#include <cstdio>
+#else
+#include <stdio.h>
+#endif
+
#ifdef USE_DICT_FILE
#if defined(USE_FILE_IO) || !defined(__cplusplus)
#include <stdio.h>
@@ -46,8 +45,8 @@
#endif
/* For pre-compiled headers under windows */
-#ifdef _WIN32
#ifndef __MINGW32__
+#ifdef _WIN32
#include "stdafx.h"
#endif
#endif
@@ -228,13 +227,12 @@ static void AddMatchRepeats(ZxcMatch_t **Result, ZxcMatch_t *Match, const uint8_
while(MaxLen >= (Len * RepeatCount))
{
- if (strncmp(reinterpret_cast<const char *>(Passwd),
- reinterpret_cast<const char *>(Rpt), Len) == 0)
+ if (strncmp((const char *)Passwd, (const char *)Rpt, Len) == 0)
{
/* Found a repeat */
ZxcMatch_t *p = AllocMatch();
p->Entrpy = Match->Entrpy + log(RepeatCount);
- p->Type = static_cast<ZxcTypeMatch_t>(Match->Type + MULTIPLE_MATCH);
+ p->Type = (ZxcTypeMatch_t)(Match->Type + MULTIPLE_MATCH);
p->Length = Len * RepeatCount;
p->Begin = Match->Begin;
AddResult(Result, p, MaxLen);
@@ -494,9 +492,8 @@ typedef struct
uint8_t Leeted[sizeof L33TChr];
uint8_t UnLeet[sizeof L33TChr];
uint8_t LeetCnv[sizeof L33TCnv / LEET_NORM_MAP_SIZE + 1];
- /* uint8_t LeetChr[3]; */
uint8_t First;
- uint8_t PossChars[49];
+ uint8_t PossChars[CHARSET_SIZE];
} DictWork_t;
/**********************************************************************************
@@ -618,7 +615,7 @@ static void DictionaryEntropy(ZxcMatch_t *m, DictMatchInfo_t *Extra, const uint8
e += d;
}
/* Add entropy due to word's rank */
- e += log(static_cast<double>(Extra->Rank));
+ e += log((double)Extra->Rank);
m->Entrpy = e;
}
@@ -795,7 +792,7 @@ static void UserMatch(ZxcMatch_t **Result, const char *Words[], const uint8_t *P
int Caps = 0;
int Lowers = 0;
int Leets = 0;
- const uint8_t *Wrd = reinterpret_cast<const uint8_t *>(Words[Rank]);
+ const uint8_t *Wrd = (const uint8_t *)(Words[Rank]);
const uint8_t *Pwd = Passwd;
memset(Extra.Leeted, 0, sizeof Extra.Leeted);
memset(Extra.UnLeet, 0, sizeof Extra.UnLeet);
@@ -944,19 +941,19 @@ static const uint8_t UK_Shift[] = "!1\"2$4%5&7(9)0*8:;<,>.?/@'AaBbCcDdEeFfGgHhIi
static const uint8_t US_Shift[] = "!1\"'#3$4%5&7(9)0*8:;<,>.?/@2AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz^6_-{[|\\}]~`";
-/* Neighour tables */
+/* Neighbour tables */
static const uint8_t UK_Qwerty[48*7] =
{
/* key, left, up-left, up-right, right, down-right, down-left */
'#', '\'',']', 0, 0, 0, 0, '\'',';', '[', ']', '#', 0, '/',
- ',', 'm', 'k', 'l', '.', 0, 0, '-', '0', 0, 0, '-', 'p', 'o',
- '.', ',', 'l', ';', '/', 0, 0, '/', '.', ';', '\'', 0, 0, 0,
- '0', '9', 0, 0, '-', 'p', 'o', '1', '`', 0, 0, '2', 'q', 0,
+ ',', 'm', 'k', 'l', '.', 0, 0, '-', '0', 0, 0, '=', '[', 'p',
+ '.', ',', 'l', ';', '/', 0, 0, '/', '.', ';', '\'', 0, 0, 0,
+ '0', '9', 0, 0, '-', 'p', 'o', '1', '`', 0, 0, '2', 'q', 0,
'2', '1', 0, 0, '3', 'w', 'q', '3', '2', 0, 0, '4', 'e', 'w',
'4', '3', 0, 0, '5', 'r', 'e', '5', '4', 0, 0, '6', 't', 'r',
'6', '5', 0, 0, '7', 'y', 't', '7', '6', 0, 0, '8', 'u', 'y',
'8', '7', 0, 0, '9', 'i', 'u', '9', '8', 0, 0, '0', 'o', 'i',
- ';', 'l', 'o', 'p','\'', '/', '.', '=', '-', 0, 0, 0, ']', '[',
+ ';', 'l', 'p', '[','\'', '/', '.', '=', '-', 0, 0, 0, ']', '[',
'[', 'p', '-', '=', ']', '\'',';', '\\', 0, 0, 'a', 'z', 0, 0,
']', '[', '=', 0, 0, '#','\'', '`', 0, 0, 0, '1', 0, 0,
'a', 0, 'q', 'w', 's', 'z','\\', 'b', 'v', 'g', 'h', 'n', 0, 0,
@@ -1002,7 +999,7 @@ static const uint8_t US_Qwerty[47*7] =
'x', 'z', 's', 'd', 'c', 0, 0, 'y', 't', '6', '7', 'u', 'h', 'g',
'z', 0, 'a', 's', 'x', 0, 0,
};
-static const uint8_t Dvorak[48*7] =
+static const uint8_t Dvorak[47*7] =
{
'\'', 0, '1', '2', ',', 'a', 0, ',','\'', '2', '3', '.', 'o', 'a',
'-', 's', '/', '=', 0, 0, 'z', '.', ',', '3', '4', 'p', 'e', 'o',
@@ -1160,9 +1157,9 @@ static void SpatialMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start,
for(CurLen = MaxLen; CurLen >= MIN_SPATIAL_LEN;CurLen = Len - 1)
{
Len = 0;
- memset(&Extra, 0, sizeof Extra);
for(k = Keyboards, Indx = 0; Indx < (sizeof Keyboards / sizeof Keyboards[0]); ++Indx, ++k)
{
+ memset(&Extra, 0, sizeof Extra);
Len = DoSptlMatch(Passwd, CurLen, k, &Extra);
if (Len > 0)
{
@@ -1170,7 +1167,7 @@ static void SpatialMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start,
int i, j, s;
double Degree, Entropy;
ZxcMatch_t *p;
- Degree = (k->NumNear-1) - static_cast<double>(k->NumBlank) / static_cast<double>(k->NumKeys);
+ Degree = (k->NumNear-1) - (double)k->NumBlank / (double)k->NumKeys;
s = k->NumKeys;
if (k->Shifts)
s *= 2;
@@ -1213,7 +1210,6 @@ static void SpatialMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start,
p->Length = Len;
AddMatchRepeats(Result, p, Passwd, MaxLen);
AddResult(Result, p, MaxLen);
- break;
}
}
}
@@ -1406,13 +1402,13 @@ static void RepeatMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start, i
int RepeatCount = 2;
while(MaxLen >= (Len * RepeatCount))
{
- if (strncmp(reinterpret_cast<const char *>(Passwd), reinterpret_cast<const char *>(Rpt), Len) == 0)
+ if (strncmp((const char *)Passwd, (const char *)Rpt, Len) == 0)
{
/* Found a repeat */
int c = Cardinality(Passwd, Len);
ZxcMatch_t *p = AllocMatch();
- p->Entrpy = log(static_cast<double>(c)) * Len + log(RepeatCount);
- p->Type = static_cast<ZxcTypeMatch_t>(BRUTE_MATCH + MULTIPLE_MATCH);
+ p->Entrpy = log((double)c) * Len + log(RepeatCount);
+ p->Type = (ZxcTypeMatch_t)(BRUTE_MATCH + MULTIPLE_MATCH);
p->Length = Len * RepeatCount;
p->Begin = Start;
AddResult(Result, p, MaxLen);
@@ -1486,7 +1482,7 @@ static void SequenceMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start,
Next = Passwd[0] + Dir;
if (IsDigits && (Dir > 0) && (Next == ('9' + 1)) && (Passwd[1] == '0'))
{
- /* Incrementing digits, consider '0' to be same as a 'ten' character */
+ /* Incrementing digits, consider '0' to be same as a 'ten' character */
++Len;
++Passwd;
break;
@@ -1495,8 +1491,9 @@ static void SequenceMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start,
{
++Len;
++Passwd;
+ break;
}
- else if ((Next > SetHigh) || (Next < SetLow) || (Passwd[1] != Next))
+ if ((Next > SetHigh) || (Next < SetLow) || (Passwd[1] != Next))
break;
++Len;
++Passwd;
@@ -1528,7 +1525,7 @@ static void SequenceMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start,
p->Type = SEQUENCE_MATCH;
p->Begin = Start;
p->Length = i;
- p->Entrpy = e + log(static_cast<double>(i));
+ p->Entrpy = e + log((double)i);
AddMatchRepeats(Result, p, Pwd, MaxLen);
AddResult(Result, p, MaxLen);
}
@@ -1557,7 +1554,7 @@ static void SequenceMatch(ZxcMatch_t **Result, const uint8_t *Passwd, int Start,
*
* Dijkstra's algorithm finds the combination of these part matches (or paths)
* which gives the lowest entropy (or smallest distance) from begining to end
- * of the password.
+ * of the password.
*/
/* Struct to hold the data of a node (imaginary point between password characters) */
@@ -1579,13 +1576,13 @@ double ZxcvbnMatch(const char *Pwd, const char *UserDict[], ZxcMatch_t **Info)
Node_t *Np;
double e;
int Len = strlen(Pwd);
- const uint8_t *Passwd = reinterpret_cast<const uint8_t *>(Pwd);
+ const uint8_t *Passwd = (const uint8_t *)Pwd;
uint8_t *RevPwd;
/* Create the paths */
Node_t *Nodes = MallocFn(Node_t, Len+1);
memset(Nodes, 0, (Len+1) * sizeof *Nodes);
i = Cardinality(Passwd, Len);
- e = log(static_cast<double>(i));
+ e = log((double)i);
/* Do matching for all parts of the password */
for(i = 0; i < Len; ++i)
diff --git a/src/zxcvbn/zxcvbn.h b/src/zxcvbn/zxcvbn.h
index 796d6b47b..9500c7a95 100644
--- a/src/zxcvbn/zxcvbn.h
+++ b/src/zxcvbn/zxcvbn.h
@@ -2,34 +2,26 @@
#define ZXCVBN_H_F98183CE2A01_INCLUDED
/**********************************************************************************
* C implementation of the zxcvbn password strength estimation method.
- * Copyright (c) 2015, Tony Evans
- * All rights reserved.
+ * Copyright (c) 2015-2017 Tony Evans
*
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
*
- * 1. Redistributions of source code must retain the above copyright notice, this list
- * of conditions and the following disclaimer.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * 2. Redistributions in binary form must reproduce the above copyright notice, this
- * list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
*
- * 3. Neither the name of the copyright holder nor the names of its contributors may be
- * used to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
- * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
**********************************************************************************/
/* If this is defined, the dictiononary data is read from file. When undefined */
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 3f003f01c..3b8ada32d 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/../src)
add_definitions(-DQT_TEST_LIB)
@@ -82,7 +82,6 @@ macro(add_unit_test)
endif()
endmacro(add_unit_test)
-
set(TEST_LIBRARIES
keepassx_core
${keepasshttp_LIB}
@@ -96,7 +95,7 @@ set(TEST_LIBRARIES
${ZLIB_LIBRARIES}
)
-set(testsupport_SOURCES modeltest.cpp FailDevice.cpp)
+set(testsupport_SOURCES TestGlobal.h modeltest.cpp FailDevice.cpp)
add_library(testsupport STATIC ${testsupport_SOURCES})
target_link_libraries(testsupport Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Test)
@@ -105,86 +104,91 @@ if(YUBIKEY_FOUND)
endif()
add_unit_test(NAME testgroup SOURCES TestGroup.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
-add_unit_test(NAME testkeepass2xmlreader SOURCES TestKeePass2XmlReader.cpp
- LIBS ${TEST_LIBRARIES})
+add_unit_test(NAME testkdbx2 SOURCES TestKdbx2.cpp
+ LIBS ${TEST_LIBRARIES})
-add_unit_test(NAME testkeys SOURCES TestKeys.cpp
- LIBS ${TEST_LIBRARIES})
+add_unit_test(NAME testkdbx3 SOURCES TestKeePass2Format.cpp FailDevice.cpp TestKdbx3.cpp
+ LIBS ${TEST_LIBRARIES})
-add_unit_test(NAME testkeepass2reader SOURCES TestKeePass2Reader.cpp
- LIBS ${TEST_LIBRARIES})
+add_unit_test(NAME testkdbx4 SOURCES TestKeePass2Format.cpp FailDevice.cpp TestKdbx4.cpp
+ LIBS ${TEST_LIBRARIES})
-add_unit_test(NAME testkeepass2writer SOURCES TestKeePass2Writer.cpp
- LIBS testsupport ${TEST_LIBRARIES})
+add_unit_test(NAME testkeys SOURCES TestKeys.cpp
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testgroupmodel SOURCES TestGroupModel.cpp
- LIBS testsupport ${TEST_LIBRARIES})
+ LIBS testsupport ${TEST_LIBRARIES})
add_unit_test(NAME testentrymodel SOURCES TestEntryModel.cpp
- LIBS testsupport ${TEST_LIBRARIES})
+ LIBS testsupport ${TEST_LIBRARIES})
add_unit_test(NAME testcryptohash SOURCES TestCryptoHash.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testsymmetriccipher SOURCES TestSymmetricCipher.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testhashedblockstream SOURCES TestHashedBlockStream.cpp
- LIBS testsupport ${TEST_LIBRARIES})
+ LIBS testsupport ${TEST_LIBRARIES})
add_unit_test(NAME testkeepass2randomstream SOURCES TestKeePass2RandomStream.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testmodified SOURCES TestModified.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testdeletedobjects SOURCES TestDeletedObjects.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testkeepass1reader SOURCES TestKeePass1Reader.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testwildcardmatcher SOURCES TestWildcardMatcher.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
if(WITH_XC_AUTOTYPE)
add_unit_test(NAME testautotype SOURCES TestAutoType.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
set_target_properties(testautotype PROPERTIES ENABLE_EXPORTS ON)
endif()
+if(WITH_XC_SSHAGENT)
+ add_unit_test(NAME testopensshkey SOURCES TestOpenSSHKey.cpp
+ LIBS sshagent ${TEST_LIBRARIES})
+endif()
+
add_unit_test(NAME testentry SOURCES TestEntry.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
+
+add_unit_test(NAME testmerge SOURCES TestMerge.cpp
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testtotp SOURCES TestTotp.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testbase32 SOURCES TestBase32.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testcsvparser SOURCES TestCsvParser.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testrandom SOURCES TestRandom.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testentrysearcher SOURCES TestEntrySearcher.cpp
- LIBS ${TEST_LIBRARIES})
-
-add_unit_test(NAME testexporter SOURCES TestExporter.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testcsvexporter SOURCES TestCsvExporter.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testykchallengeresponsekey
- SOURCES TestYkChallengeResponseKey.cpp TestYkChallengeResponseKey.h
- LIBS ${TEST_LIBRARIES})
+ SOURCES TestYkChallengeResponseKey.cpp
+ LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testdatabase SOURCES TestDatabase.cpp
- LIBS ${TEST_LIBRARIES})
+ LIBS ${TEST_LIBRARIES})
if(WITH_GUI_TESTS)
add_subdirectory(gui)
diff --git a/tests/TestAutoType.cpp b/tests/TestAutoType.cpp
index be73efd47..7590bc613 100644
--- a/tests/TestAutoType.cpp
+++ b/tests/TestAutoType.cpp
@@ -17,14 +17,12 @@
*/
#include "TestAutoType.h"
+#include "TestGlobal.h"
#include <QPluginLoader>
-#include <QTest>
#include "core/Config.h"
#include "core/FilePath.h"
-#include "core/Entry.h"
-#include "core/Group.h"
#include "crypto/Crypto.h"
#include "autotype/AutoType.h"
#include "autotype/AutoTypePlatformPlugin.h"
@@ -96,6 +94,9 @@ void TestAutoType::init()
m_entry4->setGroup(m_group);
m_entry4->setPassword("custom_attr");
m_entry4->attributes()->set("CUSTOM","Attribute",false);
+ m_entry4->attributes()->set("CustomAttrFirst","AttrValueFirst",false);
+ m_entry4->attributes()->set("CustomAttrSecond","AttrValueSecond",false);
+ m_entry4->attributes()->set("CustomAttrThird","AttrValueThird",false);
association.window = "//^CustomAttr1$//";
association.sequence = "{PASSWORD}:{S:CUSTOM}";
m_entry4->autoTypeAssociations()->add(association);
@@ -105,7 +106,16 @@ void TestAutoType::init()
association.window = "//^CustomAttr3$//";
association.sequence = "{PaSSworD}";
m_entry4->autoTypeAssociations()->add(association);
-
+ association.window = "//^{S:CustomAttrFirst}$//";
+ association.sequence = "custom_attr_first";
+ m_entry4->autoTypeAssociations()->add(association);
+ association.window = "//{S:CustomAttrFirst}And{S:CustomAttrSecond}//";
+ association.sequence = "custom_attr_first_and_second";
+ m_entry4->autoTypeAssociations()->add(association);
+ association.window = "//{S:CustomAttrThird}//";
+ association.sequence = "custom_attr_third";
+ m_entry4->autoTypeAssociations()->add(association);
+
m_entry5 = new Entry();
m_entry5->setGroup(m_group);
m_entry5->setPassword("example5");
@@ -126,7 +136,7 @@ void TestAutoType::testInternal()
QCOMPARE(m_platform->activeWindowTitle(), QString("Test"));
}
-void TestAutoType::testAutoTypeWithoutSequence()
+void TestAutoType::testSingleAutoType()
{
m_autoType->performAutoType(m_entry1, nullptr);
@@ -137,17 +147,6 @@ void TestAutoType::testAutoTypeWithoutSequence()
.arg(m_test->keyToString(Qt::Key_Enter)));
}
-void TestAutoType::testAutoTypeWithSequence()
-{
- m_autoType->performAutoType(m_entry1, nullptr, "{Username}abc{PaSsWoRd}");
-
- QCOMPARE(m_test->actionCount(), 15);
- QCOMPARE(m_test->actionChars(),
- QString("%1abc%2")
- .arg(m_entry1->username())
- .arg(m_entry1->password()));
-}
-
void TestAutoType::testGlobalAutoTypeWithNoMatch()
{
m_test->setActiveWindowTitle("nomatch");
@@ -253,4 +252,129 @@ void TestAutoType::testGlobalAutoTypeRegExp()
m_autoType->performGlobalAutoType(m_dbList);
QCOMPARE(m_test->actionChars(), QString("custom_attr"));
m_test->clearActions();
+
+ // with resolve placeholders in window association title
+ m_test->setActiveWindowTitle("AttrValueFirst");
+ m_autoType->performGlobalAutoType(m_dbList);
+ QCOMPARE(m_test->actionChars(), QString("custom_attr_first"));
+ m_test->clearActions();
+
+ m_test->setActiveWindowTitle("lorem AttrValueFirstAndAttrValueSecond ipsum");
+ m_autoType->performGlobalAutoType(m_dbList);
+ QCOMPARE(m_test->actionChars(), QString("custom_attr_first_and_second"));
+ m_test->clearActions();
+
+ m_test->setActiveWindowTitle("lorem AttrValueThird ipsum");
+ m_autoType->performGlobalAutoType(m_dbList);
+ QCOMPARE(m_test->actionChars(), QString("custom_attr_third"));
+ m_test->clearActions();
}
+
+void TestAutoType::testAutoTypeSyntaxChecks()
+{
+ // Huge sequence
+ QCOMPARE(true, AutoType::checkSyntax("{word 23}{F1 23}{~ 23}{% 23}{^}{F12}{(}{) 23}{[}{[}{]}{Delay=23}{+}{SUBTRACT}~+%@fixedstring"));
+
+ QCOMPARE(true, AutoType::checkSyntax("{NUMPAD1 3}"));
+
+ QCOMPARE(true, AutoType::checkSyntax("{BEEP 3 3}"));
+ QCOMPARE(false, AutoType::checkSyntax("{BEEP 3}"));
+
+ QCOMPARE(true, AutoType::checkSyntax("{VKEY 0x01}"));
+ QCOMPARE(true, AutoType::checkSyntax("{VKEY VK_LBUTTON}"));
+ QCOMPARE(true, AutoType::checkSyntax("{VKEY-EX 0x01}"));
+ // Bad sequence
+ QCOMPARE(false, AutoType::checkSyntax("{{{}}{}{}}{{}}"));
+ // Good sequence
+ QCOMPARE(true, AutoType::checkSyntax("{{}{}}{}}{{}"));
+ QCOMPARE(true, AutoType::checkSyntax("{]}{[}{[}{]}"));
+ QCOMPARE(true, AutoType::checkSyntax("{)}{(}{(}{)}"));
+ // High DelAY / low delay
+ QCOMPARE(true, AutoType::checkHighDelay("{DelAY 50000}"));
+ QCOMPARE(false, AutoType::checkHighDelay("{delay 50}"));
+ // Slow typing
+ QCOMPARE(true, AutoType::checkSlowKeypress("{DelAY=50000}"));
+ QCOMPARE(false, AutoType::checkSlowKeypress("{delay=50}"));
+ // Many repetition / few repetition / delay not repetition
+ QCOMPARE(true, AutoType::checkHighRepetition("{LEFT 50000000}"));
+ QCOMPARE(false, AutoType::checkHighRepetition("{SPACE 10}{TAB 3}{RIGHT 50}"));
+ QCOMPARE(false, AutoType::checkHighRepetition("{delay 5000000000}"));
+}
+
+void TestAutoType::testAutoTypeEffectiveSequences()
+{
+ QString defaultSequence("{USERNAME}{TAB}{PASSWORD}{ENTER}");
+ QString sequenceG1("{TEST_GROUP1}");
+ QString sequenceG3("{TEST_GROUP3}");
+ QString sequenceE2("{TEST_ENTRY2}");
+ QString sequenceDisabled("{TEST_DISABLED}");
+ QString sequenceOrphan("{TEST_ORPHAN}");
+
+ QScopedPointer<Database> db(new Database());
+ QPointer<Group> rootGroup = db->rootGroup();
+
+ // Group with autotype enabled and custom default sequence
+ QPointer<Group> group1 = new Group();
+ group1->setParent(rootGroup);
+ group1->setDefaultAutoTypeSequence(sequenceG1);
+
+ // Child group with inherit
+ QPointer<Group> group2 = new Group();
+ group2->setParent(group1);
+
+ // Group with autotype disabled and custom default sequence
+ QPointer<Group> group3 = new Group();
+ group3->setParent(group1);
+ group3->setAutoTypeEnabled(Group::Disable);
+ group3->setDefaultAutoTypeSequence(sequenceG3);
+
+ QCOMPARE(rootGroup->defaultAutoTypeSequence(), QString());
+ QCOMPARE(rootGroup->effectiveAutoTypeSequence(), defaultSequence);
+ QCOMPARE(group1->defaultAutoTypeSequence(), sequenceG1);
+ QCOMPARE(group1->effectiveAutoTypeSequence(), sequenceG1);
+ QCOMPARE(group2->defaultAutoTypeSequence(), QString());
+ QCOMPARE(group2->effectiveAutoTypeSequence(), sequenceG1);
+ QCOMPARE(group3->defaultAutoTypeSequence(), sequenceG3);
+ QCOMPARE(group3->effectiveAutoTypeSequence(), QString());
+
+ // Entry from root group
+ QPointer<Entry> entry1 = new Entry();
+ entry1->setGroup(rootGroup);
+
+ // Entry with custom default sequence
+ QPointer<Entry> entry2 = new Entry();
+ entry2->setDefaultAutoTypeSequence(sequenceE2);
+ entry2->setGroup(rootGroup);
+
+ // Entry from enabled child group
+ QPointer<Entry> entry3 = new Entry();
+ entry3->setGroup(group2);
+
+ // Entry from disabled group
+ QPointer<Entry> entry4 = new Entry();
+ entry4->setDefaultAutoTypeSequence(sequenceDisabled);
+ entry4->setGroup(group3);
+
+ // Entry from enabled group with disabled autotype
+ QPointer<Entry> entry5 = new Entry();
+ entry5->setGroup(group2);
+ entry5->setDefaultAutoTypeSequence(sequenceDisabled);
+ entry5->setAutoTypeEnabled(false);
+
+ // Entry with no parent
+ QScopedPointer<Entry> entry6(new Entry());
+ entry6->setDefaultAutoTypeSequence(sequenceOrphan);
+
+ QCOMPARE(entry1->defaultAutoTypeSequence(), QString());
+ QCOMPARE(entry1->effectiveAutoTypeSequence(), defaultSequence);
+ QCOMPARE(entry2->defaultAutoTypeSequence(), sequenceE2);
+ QCOMPARE(entry2->effectiveAutoTypeSequence(), sequenceE2);
+ QCOMPARE(entry3->defaultAutoTypeSequence(), QString());
+ QCOMPARE(entry3->effectiveAutoTypeSequence(), sequenceG1);
+ QCOMPARE(entry4->defaultAutoTypeSequence(), sequenceDisabled);
+ QCOMPARE(entry4->effectiveAutoTypeSequence(), QString());
+ QCOMPARE(entry5->defaultAutoTypeSequence(), sequenceDisabled);
+ QCOMPARE(entry5->effectiveAutoTypeSequence(), QString());
+ QCOMPARE(entry6->defaultAutoTypeSequence(), sequenceOrphan);
+ QCOMPARE(entry6->effectiveAutoTypeSequence(), QString());
+} \ No newline at end of file
diff --git a/tests/TestAutoType.h b/tests/TestAutoType.h
index 0cd4a5bdd..93a7d682c 100644
--- a/tests/TestAutoType.h
+++ b/tests/TestAutoType.h
@@ -38,8 +38,7 @@ private slots:
void cleanup();
void testInternal();
- void testAutoTypeWithoutSequence();
- void testAutoTypeWithSequence();
+ void testSingleAutoType();
void testGlobalAutoTypeWithNoMatch();
void testGlobalAutoTypeWithOneMatch();
void testGlobalAutoTypeTitleMatch();
@@ -47,6 +46,8 @@ private slots:
void testGlobalAutoTypeUrlSubdomainMatch();
void testGlobalAutoTypeTitleMatchDisabled();
void testGlobalAutoTypeRegExp();
+ void testAutoTypeSyntaxChecks();
+ void testAutoTypeEffectiveSequences();
private:
AutoTypePlatformInterface* m_platform;
diff --git a/tests/TestBase32.cpp b/tests/TestBase32.cpp
index 1d30e7817..1fe61f9f3 100644
--- a/tests/TestBase32.cpp
+++ b/tests/TestBase32.cpp
@@ -16,8 +16,8 @@
*/
#include "TestBase32.h"
+#include "TestGlobal.h"
#include "core/Base32.h"
-#include <QTest>
QTEST_GUILESS_MAIN(TestBase32)
diff --git a/tests/TestCryptoHash.cpp b/tests/TestCryptoHash.cpp
index c166f5595..914bcf193 100644
--- a/tests/TestCryptoHash.cpp
+++ b/tests/TestCryptoHash.cpp
@@ -16,8 +16,7 @@
*/
#include "TestCryptoHash.h"
-
-#include <QTest>
+#include "TestGlobal.h"
#include "crypto/Crypto.h"
#include "crypto/CryptoHash.h"
@@ -44,4 +43,17 @@ void TestCryptoHash::test()
cryptoHash3.addData(QString("ssX").toLatin1());
QCOMPARE(cryptoHash3.result(),
QByteArray::fromHex("0b56e5f65263e747af4a833bd7dd7ad26a64d7a4de7c68e52364893dca0766b4"));
+
+ CryptoHash cryptoHash2(CryptoHash::Sha512);
+ QCOMPARE(cryptoHash2.result(),
+ QByteArray::fromHex("cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"));
+
+ QByteArray result3 = CryptoHash::hash(source2, CryptoHash::Sha512);
+ QCOMPARE(result3, QByteArray::fromHex("0d41b612584ed39ff72944c29494573e40f4bb95283455fae2e0be1e3565aa9f48057d59e6ffd777970e282871c25a549a2763e5b724794f312c97021c42f91d"));
+
+ CryptoHash cryptoHash4(CryptoHash::Sha512);
+ cryptoHash4.addData(QString("KeePa").toLatin1());
+ cryptoHash4.addData(QString("ssX").toLatin1());
+ QCOMPARE(cryptoHash4.result(),
+ QByteArray::fromHex("0d41b612584ed39ff72944c29494573e40f4bb95283455fae2e0be1e3565aa9f48057d59e6ffd777970e282871c25a549a2763e5b724794f312c97021c42f91d"));
}
diff --git a/tests/TestCsvExporter.cpp b/tests/TestCsvExporter.cpp
index 6515c39c2..b85dbf268 100644
--- a/tests/TestCsvExporter.cpp
+++ b/tests/TestCsvExporter.cpp
@@ -17,13 +17,10 @@
*/
#include "TestCsvExporter.h"
+#include "TestGlobal.h"
#include <QBuffer>
-#include <QTest>
-#include "core/Database.h"
-#include "core/Entry.h"
-#include "core/Group.h"
#include "crypto/Crypto.h"
#include "format/CsvExporter.h"
diff --git a/tests/TestCsvParser.cpp b/tests/TestCsvParser.cpp
index a292b56bb..705ef48c3 100644
--- a/tests/TestCsvParser.cpp
+++ b/tests/TestCsvParser.cpp
@@ -320,6 +320,7 @@ void TestCsvParser::testUnicode() {
//ERROR QChar g("\u20AC");
parser->setFieldSeparator(QChar('A'));
QTextStream out(file.data());
+ out.setCodec("UTF-8");
out << QString("€1A2śA\"3śAż\"Ażac");
QVERIFY(parser->parse(file.data()));
diff --git a/tests/TestDatabase.cpp b/tests/TestDatabase.cpp
index 284ba4bfb..4aae91dc2 100644
--- a/tests/TestDatabase.cpp
+++ b/tests/TestDatabase.cpp
@@ -17,17 +17,15 @@
*/
#include "TestDatabase.h"
+#include "TestGlobal.h"
-#include <QTest>
#include <QSignalSpy>
#include <QTemporaryFile>
#include "config-keepassx-tests.h"
-#include "core/Database.h"
#include "crypto/Crypto.h"
#include "keys/PasswordKey.h"
#include "core/Metadata.h"
-#include "core/Group.h"
#include "format/KeePass2Writer.h"
QTEST_GUILESS_MAIN(TestDatabase)
diff --git a/tests/TestDeletedObjects.cpp b/tests/TestDeletedObjects.cpp
index 5af017885..ee9d8de2c 100644
--- a/tests/TestDeletedObjects.cpp
+++ b/tests/TestDeletedObjects.cpp
@@ -16,13 +16,11 @@
*/
#include "TestDeletedObjects.h"
+#include "TestGlobal.h"
-#include <QTest>
-
-#include "core/Database.h"
-#include "core/Group.h"
#include "crypto/Crypto.h"
-#include "format/KeePass2XmlReader.h"
+#include "format/KeePass2.h"
+#include "format/KdbxXmlReader.h"
#include "config-keepassx-tests.h"
QTEST_GUILESS_MAIN(TestDeletedObjects)
@@ -88,7 +86,7 @@ void TestDeletedObjects::createAndDelete(Database* db, int delObjectsSize)
void TestDeletedObjects::testDeletedObjectsFromFile()
{
- KeePass2XmlReader reader;
+ KdbxXmlReader reader(KeePass2::FILE_VERSION_3_1);
reader.setStrictMode(true);
QString xmlFile = QString(KEEPASSX_TEST_DATA_DIR).append("/NewDatabase.xml");
Database* db = reader.readDatabase(xmlFile);
diff --git a/tests/TestEntry.cpp b/tests/TestEntry.cpp
index 84ad03181..94100c0a6 100644
--- a/tests/TestEntry.cpp
+++ b/tests/TestEntry.cpp
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
* Copyright (C) 2013 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
@@ -15,12 +16,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "TestEntry.h"
-#include "config-keepassx-tests.h"
-
-#include <QTest>
+#include <QScopedPointer>
-#include "core/Entry.h"
+#include "TestEntry.h"
+#include "TestGlobal.h"
#include "crypto/Crypto.h"
QTEST_GUILESS_MAIN(TestEntry)
@@ -32,7 +31,7 @@ void TestEntry::initTestCase()
void TestEntry::testHistoryItemDeletion()
{
- Entry* entry = new Entry();
+ QScopedPointer<Entry> entry(new Entry());
QPointer<Entry> historyEntry = new Entry();
entry->addHistoryItem(historyEntry);
@@ -43,12 +42,11 @@ void TestEntry::testHistoryItemDeletion()
entry->removeHistoryItems(historyEntriesToRemove);
QCOMPARE(entry->historyItems().size(), 0);
QVERIFY(historyEntry.isNull());
-
- delete entry;
}
+
void TestEntry::testCopyDataFrom()
{
- Entry* entry = new Entry();
+ QScopedPointer<Entry> entry(new Entry());
entry->setTitle("testtitle");
entry->attributes()->set("attr1", "abc");
@@ -65,9 +63,8 @@ void TestEntry::testCopyDataFrom()
assoc.sequence = "4";
entry->autoTypeAssociations()->add(assoc);
- Entry* entry2 = new Entry();
- entry2->copyDataFrom(entry);
- delete entry;
+ QScopedPointer<Entry> entry2(new Entry());
+ entry2->copyDataFrom(entry.data());
QCOMPARE(entry2->title(), QString("testtitle"));
QCOMPARE(entry2->attributes()->value("attr1"), QString("abc"));
@@ -80,13 +77,11 @@ void TestEntry::testCopyDataFrom()
QCOMPARE(entry2->autoTypeAssociations()->size(), 2);
QCOMPARE(entry2->autoTypeAssociations()->get(0).window, QString("1"));
QCOMPARE(entry2->autoTypeAssociations()->get(1).window, QString("3"));
-
- delete entry2;
}
void TestEntry::testClone()
{
- Entry* entryOrg = new Entry();
+ QScopedPointer<Entry> entryOrg(new Entry());
entryOrg->setUuid(Uuid::random());
entryOrg->setTitle("Original Title");
entryOrg->beginUpdate();
@@ -99,42 +94,58 @@ void TestEntry::testClone()
entryOrgTime.setCreationTime(dateTime);
entryOrg->setTimeInfo(entryOrgTime);
- Entry* entryCloneNone = entryOrg->clone(Entry::CloneNoFlags);
+ QScopedPointer<Entry> entryCloneNone(entryOrg->clone(Entry::CloneNoFlags));
QCOMPARE(entryCloneNone->uuid(), entryOrg->uuid());
QCOMPARE(entryCloneNone->title(), QString("New Title"));
QCOMPARE(entryCloneNone->historyItems().size(), 0);
QCOMPARE(entryCloneNone->timeInfo().creationTime(), entryOrg->timeInfo().creationTime());
- delete entryCloneNone;
- Entry* entryCloneNewUuid = entryOrg->clone(Entry::CloneNewUuid);
+ QScopedPointer<Entry> entryCloneNewUuid(entryOrg->clone(Entry::CloneNewUuid));
QVERIFY(entryCloneNewUuid->uuid() != entryOrg->uuid());
QVERIFY(!entryCloneNewUuid->uuid().isNull());
QCOMPARE(entryCloneNewUuid->title(), QString("New Title"));
QCOMPARE(entryCloneNewUuid->historyItems().size(), 0);
QCOMPARE(entryCloneNewUuid->timeInfo().creationTime(), entryOrg->timeInfo().creationTime());
- delete entryCloneNewUuid;
- Entry* entryCloneResetTime = entryOrg->clone(Entry::CloneResetTimeInfo);
+ QScopedPointer<Entry> entryCloneResetTime(entryOrg->clone(Entry::CloneResetTimeInfo));
QCOMPARE(entryCloneResetTime->uuid(), entryOrg->uuid());
QCOMPARE(entryCloneResetTime->title(), QString("New Title"));
QCOMPARE(entryCloneResetTime->historyItems().size(), 0);
QVERIFY(entryCloneResetTime->timeInfo().creationTime() != entryOrg->timeInfo().creationTime());
- delete entryCloneResetTime;
- Entry* entryCloneHistory = entryOrg->clone(Entry::CloneIncludeHistory);
+ QScopedPointer<Entry> entryCloneHistory(entryOrg->clone(Entry::CloneIncludeHistory));
QCOMPARE(entryCloneHistory->uuid(), entryOrg->uuid());
QCOMPARE(entryCloneHistory->title(), QString("New Title"));
QCOMPARE(entryCloneHistory->historyItems().size(), 1);
QCOMPARE(entryCloneHistory->historyItems().at(0)->title(), QString("Original Title"));
QCOMPARE(entryCloneHistory->timeInfo().creationTime(), entryOrg->timeInfo().creationTime());
- delete entryCloneHistory;
- delete entryOrg;
+ Database db;
+ auto* entryOrgClone = entryOrg->clone(Entry::CloneNoFlags);
+ entryOrgClone->setGroup(db.rootGroup());
+
+ Entry* entryCloneUserRef = entryOrgClone->clone(Entry::CloneUserAsRef);
+ entryCloneUserRef->setGroup(db.rootGroup());
+ QCOMPARE(entryCloneUserRef->uuid(), entryOrgClone->uuid());
+ QCOMPARE(entryCloneUserRef->title(), QString("New Title"));
+ QCOMPARE(entryCloneUserRef->historyItems().size(), 0);
+ QCOMPARE(entryCloneUserRef->timeInfo().creationTime(), entryOrgClone->timeInfo().creationTime());
+ QVERIFY(entryCloneUserRef->attributes()->isReference(EntryAttributes::UserNameKey));
+ QCOMPARE(entryCloneUserRef->resolvePlaceholder(entryCloneUserRef->username()), entryOrgClone->username());
+
+ Entry* entryClonePassRef = entryOrgClone->clone(Entry::ClonePassAsRef);
+ entryClonePassRef->setGroup(db.rootGroup());
+ QCOMPARE(entryClonePassRef->uuid(), entryOrgClone->uuid());
+ QCOMPARE(entryClonePassRef->title(), QString("New Title"));
+ QCOMPARE(entryClonePassRef->historyItems().size(), 0);
+ QCOMPARE(entryClonePassRef->timeInfo().creationTime(), entryOrgClone->timeInfo().creationTime());
+ QVERIFY(entryClonePassRef->attributes()->isReference(EntryAttributes::PasswordKey));
+ QCOMPARE(entryClonePassRef->resolvePlaceholder(entryCloneUserRef->password()), entryOrg->password());
}
void TestEntry::testResolveUrl()
{
- Entry* entry = new Entry();
+ QScopedPointer<Entry> entry(new Entry());
QString testUrl("www.google.com");
QString testCmd("cmd://firefox " + testUrl);
QString testComplexCmd("cmd://firefox --start-now --url 'http://" + testUrl + "' --quit");
@@ -155,6 +166,358 @@ void TestEntry::testResolveUrl()
QCOMPARE(entry->resolveUrl(nonHttpUrl), QString(""));
// Test no URL
QCOMPARE(entry->resolveUrl(noUrl), QString(""));
+}
+
+void TestEntry::testResolveUrlPlaceholders()
+{
+ Entry entry;
+ entry.setUrl("https://user:pw@keepassxc.org:80/path/example.php?q=e&s=t+2#fragment");
+
+ QString rmvscm("//user:pw@keepassxc.org:80/path/example.php?q=e&s=t+2#fragment"); // Entry URL without scheme name.
+ QString scm("https"); // Scheme name of the entry URL.
+ QString host("keepassxc.org"); // Host component of the entry URL.
+ QString port("80"); // Port number of the entry URL.
+ QString path("/path/example.php"); // Path component of the entry URL.
+ QString query("q=e&s=t+2"); // Query information of the entry URL.
+ QString userinfo("user:pw"); // User information of the entry URL.
+ QString username("user"); // User name of the entry URL.
+ QString password("pw"); // Password of the entry URL.
+ QString fragment("fragment"); // Fragment of the entry URL.
+
+ QCOMPARE(entry.resolvePlaceholder("{URL:RMVSCM}"), rmvscm);
+ QCOMPARE(entry.resolvePlaceholder("{URL:WITHOUTSCHEME}"), rmvscm);
+ QCOMPARE(entry.resolvePlaceholder("{URL:SCM}"), scm);
+ QCOMPARE(entry.resolvePlaceholder("{URL:SCHEME}"), scm);
+ QCOMPARE(entry.resolvePlaceholder("{URL:HOST}"), host);
+ QCOMPARE(entry.resolvePlaceholder("{URL:PORT}"), port);
+ QCOMPARE(entry.resolvePlaceholder("{URL:PATH}"), path);
+ QCOMPARE(entry.resolvePlaceholder("{URL:QUERY}"), query);
+ QCOMPARE(entry.resolvePlaceholder("{URL:USERINFO}"), userinfo);
+ QCOMPARE(entry.resolvePlaceholder("{URL:USERNAME}"), username);
+ QCOMPARE(entry.resolvePlaceholder("{URL:PASSWORD}"), password);
+ QCOMPARE(entry.resolvePlaceholder("{URL:FRAGMENT}"), fragment);
+}
+
+void TestEntry::testResolveRecursivePlaceholders()
+{
+ Database db;
+ auto* root = db.rootGroup();
+
+ auto* entry1 = new Entry();
+ entry1->setGroup(root);
+ entry1->setUuid(Uuid::random());
+ entry1->setTitle("{USERNAME}");
+ entry1->setUsername("{PASSWORD}");
+ entry1->setPassword("{URL}");
+ entry1->setUrl("{S:CustomTitle}");
+ entry1->attributes()->set("CustomTitle", "RecursiveValue");
+ QCOMPARE(entry1->resolveMultiplePlaceholders(entry1->title()), QString("RecursiveValue"));
+
+ auto* entry2 = new Entry();
+ entry2->setGroup(root);
+ entry2->setUuid(Uuid::random());
+ entry2->setTitle("Entry2Title");
+ entry2->setUsername("{S:CustomUserNameAttribute}");
+ entry2->setPassword(QString("{REF:P@I:%1}").arg(entry1->uuid().toHex()));
+ entry2->setUrl("http://{S:IpAddress}:{S:Port}/{S:Uri}");
+ entry2->attributes()->set("CustomUserNameAttribute", "CustomUserNameValue");
+ entry2->attributes()->set("IpAddress", "127.0.0.1");
+ entry2->attributes()->set("Port", "1234");
+ entry2->attributes()->set("Uri", "uri/path");
+
+ auto* entry3 = new Entry();
+ entry3->setGroup(root);
+ entry3->setUuid(Uuid::random());
+ entry3->setTitle(QString("{REF:T@I:%1}").arg(entry2->uuid().toHex()));
+ entry3->setUsername(QString("{REF:U@I:%1}").arg(entry2->uuid().toHex()));
+ entry3->setPassword(QString("{REF:P@I:%1}").arg(entry2->uuid().toHex()));
+ entry3->setUrl(QString("{REF:A@I:%1}").arg(entry2->uuid().toHex()));
+
+ QCOMPARE(entry3->resolveMultiplePlaceholders(entry3->title()), QString("Entry2Title"));
+ QCOMPARE(entry3->resolveMultiplePlaceholders(entry3->username()), QString("CustomUserNameValue"));
+ QCOMPARE(entry3->resolveMultiplePlaceholders(entry3->password()), QString("RecursiveValue"));
+ QCOMPARE(entry3->resolveMultiplePlaceholders(entry3->url()), QString("http://127.0.0.1:1234/uri/path"));
+
+ auto* entry4 = new Entry();
+ entry4->setGroup(root);
+ entry4->setUuid(Uuid::random());
+ entry4->setTitle(QString("{REF:T@I:%1}").arg(entry3->uuid().toHex()));
+ entry4->setUsername(QString("{REF:U@I:%1}").arg(entry3->uuid().toHex()));
+ entry4->setPassword(QString("{REF:P@I:%1}").arg(entry3->uuid().toHex()));
+ entry4->setUrl(QString("{REF:A@I:%1}").arg(entry3->uuid().toHex()));
+
+ QCOMPARE(entry4->resolveMultiplePlaceholders(entry4->title()), QString("Entry2Title"));
+ QCOMPARE(entry4->resolveMultiplePlaceholders(entry4->username()), QString("CustomUserNameValue"));
+ QCOMPARE(entry4->resolveMultiplePlaceholders(entry4->password()), QString("RecursiveValue"));
+ QCOMPARE(entry4->resolveMultiplePlaceholders(entry4->url()), QString("http://127.0.0.1:1234/uri/path"));
+
+ auto* entry5 = new Entry();
+ entry5->setGroup(root);
+ entry5->setUuid(Uuid::random());
+ entry5->attributes()->set("Scheme", "http");
+ entry5->attributes()->set("Host", "host.org");
+ entry5->attributes()->set("Port", "2017");
+ entry5->attributes()->set("Path", "/some/path");
+ entry5->attributes()->set("UserName", "username");
+ entry5->attributes()->set("Password", "password");
+ entry5->attributes()->set("Query", "q=e&t=s");
+ entry5->attributes()->set("Fragment", "fragment");
+ entry5->setUrl("{S:Scheme}://{S:UserName}:{S:Password}@{S:Host}:{S:Port}{S:Path}?{S:Query}#{S:Fragment}");
+ entry5->setTitle("title+{URL:Path}+{URL:Fragment}+title");
+
+ const QString url("http://username:password@host.org:2017/some/path?q=e&t=s#fragment");
+ QCOMPARE(entry5->resolveMultiplePlaceholders(entry5->url()), url);
+ QCOMPARE(entry5->resolveMultiplePlaceholders(entry5->title()), QString("title+/some/path+fragment+title"));
+
+ auto* entry6 = new Entry();
+ entry6->setGroup(root);
+ entry6->setUuid(Uuid::random());
+ entry6->setTitle(QString("{REF:T@I:%1}").arg(entry3->uuid().toHex()));
+ entry6->setUsername(QString("{TITLE}"));
+ entry6->setPassword(QString("{PASSWORD}"));
+
+ QCOMPARE(entry6->resolvePlaceholder(entry6->title()), QString("Entry2Title"));
+ QCOMPARE(entry6->resolvePlaceholder(entry6->username()), QString("Entry2Title"));
+ QCOMPARE(entry6->resolvePlaceholder(entry6->password()), QString("{PASSWORD}"));
+}
+
+void TestEntry::testResolveReferencePlaceholders()
+{
+ Database db;
+ auto* root = db.rootGroup();
+
+ auto* entry1 = new Entry();
+ entry1->setGroup(root);
+ entry1->setUuid(Uuid::random());
+ entry1->setTitle("Title1");
+ entry1->setUsername("Username1");
+ entry1->setPassword("Password1");
+ entry1->setUrl("Url1");
+ entry1->setNotes("Notes1");
+ entry1->attributes()->set("CustomAttribute1", "CustomAttributeValue1");
+
+ auto* group = new Group();
+ group->setParent(root);
+ auto* entry2 = new Entry();
+ entry2->setGroup(group);
+ entry2->setUuid(Uuid::random());
+ entry2->setTitle("Title2");
+ entry2->setUsername("Username2");
+ entry2->setPassword("Password2");
+ entry2->setUrl("Url2");
+ entry2->setNotes("Notes2");
+ entry2->attributes()->set("CustomAttribute2", "CustomAttributeValue2");
+
+ auto* entry3 = new Entry();
+ entry3->setGroup(group);
+ entry3->setUuid(Uuid::random());
+ entry3->setTitle("{S:AttributeTitle}");
+ entry3->setUsername("{S:AttributeUsername}");
+ entry3->setPassword("{S:AttributePassword}");
+ entry3->setUrl("{S:AttributeUrl}");
+ entry3->setNotes("{S:AttributeNotes}");
+ entry3->attributes()->set("AttributeTitle", "TitleValue");
+ entry3->attributes()->set("AttributeUsername", "UsernameValue");
+ entry3->attributes()->set("AttributePassword", "PasswordValue");
+ entry3->attributes()->set("AttributeUrl", "UrlValue");
+ entry3->attributes()->set("AttributeNotes", "NotesValue");
+
+ auto* tstEntry = new Entry();
+ tstEntry->setGroup(root);
+ tstEntry->setUuid(Uuid::random());
+
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@I:%1}").arg(entry1->uuid().toHex())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@T:%1}").arg(entry1->title())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@U:%1}").arg(entry1->username())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@P:%1}").arg(entry1->password())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@A:%1}").arg(entry1->url())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@N:%1}").arg(entry1->notes())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@O:%1}").arg(entry1->attributes()->value("CustomAttribute1"))), entry1->title());
+
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@I:%1}").arg(entry1->uuid().toHex())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@T:%1}").arg(entry1->title())), entry1->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:U@U:%1}").arg(entry1->username())), entry1->username());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:P@P:%1}").arg(entry1->password())), entry1->password());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:A@A:%1}").arg(entry1->url())), entry1->url());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:N@N:%1}").arg(entry1->notes())), entry1->notes());
+
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@I:%1}").arg(entry2->uuid().toHex())), entry2->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@T:%1}").arg(entry2->title())), entry2->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@U:%1}").arg(entry2->username())), entry2->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@P:%1}").arg(entry2->password())), entry2->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@A:%1}").arg(entry2->url())), entry2->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@N:%1}").arg(entry2->notes())), entry2->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@O:%1}").arg(entry2->attributes()->value("CustomAttribute2"))), entry2->title());
+
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@T:%1}").arg(entry2->title())), entry2->title());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:U@U:%1}").arg(entry2->username())), entry2->username());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:P@P:%1}").arg(entry2->password())), entry2->password());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:A@A:%1}").arg(entry2->url())), entry2->url());
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:N@N:%1}").arg(entry2->notes())), entry2->notes());
+
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@I:%1}").arg(entry3->uuid().toHex())), entry3->attributes()->value("AttributeTitle"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:U@I:%1}").arg(entry3->uuid().toHex())), entry3->attributes()->value("AttributeUsername"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:P@I:%1}").arg(entry3->uuid().toHex())), entry3->attributes()->value("AttributePassword"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:A@I:%1}").arg(entry3->uuid().toHex())), entry3->attributes()->value("AttributeUrl"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:N@I:%1}").arg(entry3->uuid().toHex())), entry3->attributes()->value("AttributeNotes"));
+
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:T@I:%1}").arg(entry3->uuid().toHex().toUpper())), entry3->attributes()->value("AttributeTitle"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:U@I:%1}").arg(entry3->uuid().toHex().toUpper())), entry3->attributes()->value("AttributeUsername"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:P@I:%1}").arg(entry3->uuid().toHex().toUpper())), entry3->attributes()->value("AttributePassword"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:A@I:%1}").arg(entry3->uuid().toHex().toUpper())), entry3->attributes()->value("AttributeUrl"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:N@I:%1}").arg(entry3->uuid().toHex().toUpper())), entry3->attributes()->value("AttributeNotes"));
+
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:t@i:%1}").arg(entry3->uuid().toHex().toLower())), entry3->attributes()->value("AttributeTitle"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:u@i:%1}").arg(entry3->uuid().toHex().toLower())), entry3->attributes()->value("AttributeUsername"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:p@i:%1}").arg(entry3->uuid().toHex().toLower())), entry3->attributes()->value("AttributePassword"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:a@i:%1}").arg(entry3->uuid().toHex().toLower())), entry3->attributes()->value("AttributeUrl"));
+ QCOMPARE(tstEntry->resolveMultiplePlaceholders(QString("{REF:n@i:%1}").arg(entry3->uuid().toHex().toLower())), entry3->attributes()->value("AttributeNotes"));
+}
+
+void TestEntry::testResolveNonIdPlaceholdersToUuid()
+{
+ Database db;
+ auto* root = db.rootGroup();
+
+ auto* referencedEntryTitle = new Entry();
+ referencedEntryTitle->setGroup(root);
+ referencedEntryTitle->setTitle("myTitle");
+ referencedEntryTitle->setUuid(Uuid::random());
+
+ auto* referencedEntryUsername = new Entry();
+ referencedEntryUsername->setGroup(root);
+ referencedEntryUsername->setUsername("myUser");
+ referencedEntryUsername->setUuid(Uuid::random());
+
+ auto* referencedEntryPassword = new Entry();
+ referencedEntryPassword->setGroup(root);
+ referencedEntryPassword->setPassword("myPassword");
+ referencedEntryPassword->setUuid(Uuid::random());
+
+ auto* referencedEntryUrl = new Entry();
+ referencedEntryUrl->setGroup(root);
+ referencedEntryUrl->setUrl("myUrl");
+ referencedEntryUrl->setUuid(Uuid::random());
+
+ auto* referencedEntryNotes = new Entry();
+ referencedEntryNotes->setGroup(root);
+ referencedEntryNotes->setNotes("myNotes");
+ referencedEntryNotes->setUuid(Uuid::random());
+
+ const QList<QChar> placeholders{'T', 'U', 'P', 'A', 'N'};
+ for (const QChar& searchIn : placeholders) {
+ const Entry* referencedEntry = nullptr;
+ QString newEntryNotesRaw("{REF:I@%1:%2}");
+
+ switch(searchIn.toLatin1()) {
+ case 'T':
+ referencedEntry = referencedEntryTitle;
+ newEntryNotesRaw = newEntryNotesRaw.arg(searchIn, referencedEntry->title());
+ break;
+ case 'U':
+ referencedEntry = referencedEntryUsername;
+ newEntryNotesRaw = newEntryNotesRaw.arg(searchIn, referencedEntry->username());
+ break;
+ case 'P':
+ referencedEntry = referencedEntryPassword;
+ newEntryNotesRaw = newEntryNotesRaw.arg(searchIn, referencedEntry->password());
+ break;
+ case 'A':
+ referencedEntry = referencedEntryUrl;
+ newEntryNotesRaw = newEntryNotesRaw.arg(searchIn, referencedEntry->url());
+ break;
+ case 'N':
+ referencedEntry = referencedEntryNotes;
+ newEntryNotesRaw = newEntryNotesRaw.arg(searchIn, referencedEntry->notes());
+ break;
+ default:
+ break;
+ }
+
+ auto* newEntry = new Entry();
+ newEntry->setGroup(root);
+ newEntry->setNotes(newEntryNotesRaw);
+
+ const QString newEntryNotesResolved =
+ newEntry->resolveMultiplePlaceholders(newEntry->notes());
+ QCOMPARE(newEntryNotesResolved, QString(referencedEntry->uuid().toHex()));
+ }
+}
+
+void TestEntry::testResolveClonedEntry()
+{
+ Database db;
+ auto* root = db.rootGroup();
+
+ auto* original = new Entry();
+ original->setGroup(root);
+ original->setUuid(Uuid::random());
+ original->setTitle("Title");
+ original->setUsername("SomeUsername");
+ original->setPassword("SomePassword");
+
+ QCOMPARE(original->resolveMultiplePlaceholders(original->username()), original->username());
+ QCOMPARE(original->resolveMultiplePlaceholders(original->password()), original->password());
+
+ // Top-level clones.
+ Entry* clone1 = original->clone(Entry::CloneNewUuid);
+ clone1->setGroup(root);
+ Entry* clone2 = original->clone(Entry::CloneUserAsRef | Entry::CloneNewUuid);
+ clone2->setGroup(root);
+ Entry* clone3 = original->clone(Entry::ClonePassAsRef | Entry::CloneNewUuid);
+ clone3->setGroup(root);
+ Entry* clone4 = original->clone(Entry::CloneUserAsRef | Entry::ClonePassAsRef | Entry::CloneNewUuid);
+ clone4->setGroup(root);
+
+ QCOMPARE(clone1->resolveMultiplePlaceholders(clone1->username()), original->username());
+ QCOMPARE(clone1->resolveMultiplePlaceholders(clone1->password()), original->password());
+ QCOMPARE(clone2->resolveMultiplePlaceholders(clone2->username()), original->username());
+ QCOMPARE(clone2->resolveMultiplePlaceholders(clone2->password()), original->password());
+ QCOMPARE(clone3->resolveMultiplePlaceholders(clone3->username()), original->username());
+ QCOMPARE(clone3->resolveMultiplePlaceholders(clone3->password()), original->password());
+ QCOMPARE(clone4->resolveMultiplePlaceholders(clone4->username()), original->username());
+ QCOMPARE(clone4->resolveMultiplePlaceholders(clone4->password()), original->password());
+
+ // Second-level clones.
+ Entry* cclone1 = clone4->clone(Entry::CloneNewUuid);
+ cclone1->setGroup(root);
+ Entry* cclone2 = clone4->clone(Entry::CloneUserAsRef | Entry::CloneNewUuid);
+ cclone2->setGroup(root);
+ Entry* cclone3 = clone4->clone(Entry::ClonePassAsRef | Entry::CloneNewUuid);
+ cclone3->setGroup(root);
+ Entry* cclone4 = clone4->clone(Entry::CloneUserAsRef | Entry::ClonePassAsRef | Entry::CloneNewUuid);
+ cclone4->setGroup(root);
+
+ QCOMPARE(cclone1->resolveMultiplePlaceholders(cclone1->username()), original->username());
+ QCOMPARE(cclone1->resolveMultiplePlaceholders(cclone1->password()), original->password());
+ QCOMPARE(cclone2->resolveMultiplePlaceholders(cclone2->username()), original->username());
+ QCOMPARE(cclone2->resolveMultiplePlaceholders(cclone2->password()), original->password());
+ QCOMPARE(cclone3->resolveMultiplePlaceholders(cclone3->username()), original->username());
+ QCOMPARE(cclone3->resolveMultiplePlaceholders(cclone3->password()), original->password());
+ QCOMPARE(cclone4->resolveMultiplePlaceholders(cclone4->username()), original->username());
+ QCOMPARE(cclone4->resolveMultiplePlaceholders(cclone4->password()), original->password());
+
+ // Change the original's attributes and make sure that the changes are tracked.
+ QString oldUsername = original->username();
+ QString oldPassword = original->password();
+ original->setUsername("DifferentUsername");
+ original->setPassword("DifferentPassword");
+
+ QCOMPARE(clone1->resolveMultiplePlaceholders(clone1->username()), oldUsername);
+ QCOMPARE(clone1->resolveMultiplePlaceholders(clone1->password()), oldPassword);
+ QCOMPARE(clone2->resolveMultiplePlaceholders(clone2->username()), original->username());
+ QCOMPARE(clone2->resolveMultiplePlaceholders(clone2->password()), oldPassword);
+ QCOMPARE(clone3->resolveMultiplePlaceholders(clone3->username()), oldUsername);
+ QCOMPARE(clone3->resolveMultiplePlaceholders(clone3->password()), original->password());
+ QCOMPARE(clone4->resolveMultiplePlaceholders(clone4->username()), original->username());
+ QCOMPARE(clone4->resolveMultiplePlaceholders(clone4->password()), original->password());
- delete entry;
+ QCOMPARE(cclone1->resolveMultiplePlaceholders(cclone1->username()), original->username());
+ QCOMPARE(cclone1->resolveMultiplePlaceholders(cclone1->password()), original->password());
+ QCOMPARE(cclone2->resolveMultiplePlaceholders(cclone2->username()), original->username());
+ QCOMPARE(cclone2->resolveMultiplePlaceholders(cclone2->password()), original->password());
+ QCOMPARE(cclone3->resolveMultiplePlaceholders(cclone3->username()), original->username());
+ QCOMPARE(cclone3->resolveMultiplePlaceholders(cclone3->password()), original->password());
+ QCOMPARE(cclone4->resolveMultiplePlaceholders(cclone4->username()), original->username());
+ QCOMPARE(cclone4->resolveMultiplePlaceholders(cclone4->password()), original->password());
}
diff --git a/tests/TestEntry.h b/tests/TestEntry.h
index 3f6d20ee3..7c2350861 100644
--- a/tests/TestEntry.h
+++ b/tests/TestEntry.h
@@ -32,6 +32,11 @@ private slots:
void testCopyDataFrom();
void testClone();
void testResolveUrl();
+ void testResolveUrlPlaceholders();
+ void testResolveRecursivePlaceholders();
+ void testResolveReferencePlaceholders();
+ void testResolveNonIdPlaceholdersToUuid();
+ void testResolveClonedEntry();
};
#endif // KEEPASSX_TESTENTRY_H
diff --git a/tests/TestEntryModel.cpp b/tests/TestEntryModel.cpp
index e0c8bb490..d290507f1 100644
--- a/tests/TestEntryModel.cpp
+++ b/tests/TestEntryModel.cpp
@@ -16,9 +16,9 @@
*/
#include "TestEntryModel.h"
+#include "TestGlobal.h"
#include <QSignalSpy>
-#include <QTest>
#include "modeltest.h"
#include "core/DatabaseIcons.h"
@@ -122,9 +122,11 @@ void TestEntryModel::testAttachmentsModel()
entryAttachments->set("first", QByteArray("123"));
entryAttachments->set("2nd", QByteArray("456"));
- entryAttachments->set("2nd", QByteArray("789"));
+ entryAttachments->set("2nd", QByteArray("7890"));
- QCOMPARE(model->data(model->index(0, 0)).toString().left(4), QString("2nd "));
+ const int firstRow = 0;
+ QCOMPARE(model->data(model->index(firstRow, EntryAttachmentsModel::NameColumn)).toString(), QString("2nd"));
+ QCOMPARE(model->data(model->index(firstRow, EntryAttachmentsModel::SizeColumn), Qt::EditRole).toInt(), 4);
entryAttachments->remove("first");
@@ -286,9 +288,15 @@ void TestEntryModel::testProxyModel()
modelSource->setGroup(db->rootGroup());
+ /**
+ * @author Fonic <https://github.com/fonic>
+ * Update comparison value of modelProxy->columnCount() to account for
+ * additional columns 'Password', 'Notes', 'Expires', 'Created', 'Modified',
+ * 'Accessed', 'Paperclip' and 'Attachments'
+ */
QSignalSpy spyColumnRemove(modelProxy, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)));
modelProxy->hideColumn(0, true);
- QCOMPARE(modelProxy->columnCount(), 3);
+ QCOMPARE(modelProxy->columnCount(), 11);
QVERIFY(spyColumnRemove.size() >= 1);
int oldSpyColumnRemoveSize = spyColumnRemove.size();
@@ -302,9 +310,15 @@ void TestEntryModel::testProxyModel()
entryList << entry;
modelSource->setEntryList(entryList);
+ /**
+ * @author Fonic <https://github.com/fonic>
+ * Update comparison value of modelProxy->columnCount() to account for
+ * additional columns 'Password', 'Notes', 'Expires', 'Created', 'Modified',
+ * 'Accessed', 'Paperclip' and 'Attachments'
+ */
QSignalSpy spyColumnInsert(modelProxy, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)));
modelProxy->hideColumn(0, false);
- QCOMPARE(modelProxy->columnCount(), 4);
+ QCOMPARE(modelProxy->columnCount(), 12);
QVERIFY(spyColumnInsert.size() >= 1);
int oldSpyColumnInsertSize = spyColumnInsert.size();
diff --git a/tests/TestEntrySearcher.cpp b/tests/TestEntrySearcher.cpp
index 6b951c703..25d83e4d2 100644
--- a/tests/TestEntrySearcher.cpp
+++ b/tests/TestEntrySearcher.cpp
@@ -16,8 +16,7 @@
*/
#include "TestEntrySearcher.h"
-
-#include <QTest>
+#include "TestGlobal.h"
QTEST_GUILESS_MAIN(TestEntrySearcher)
diff --git a/tests/TestExporter.cpp b/tests/TestExporter.cpp
deleted file mode 100644
index 656b76c58..000000000
--- a/tests/TestExporter.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "TestExporter.h"
-
-#include <QTest>
-
-#include "core/ToDbExporter.h"
-#include "core/Group.h"
-#include "core/Metadata.h"
-#include "crypto/Crypto.h"
-
-QTEST_GUILESS_MAIN(TestExporter)
-
-void TestExporter::initTestCase()
-{
- QVERIFY(Crypto::init());
-}
-
-void TestExporter::testToDbExporter()
-{
- QImage iconImage(1, 1, QImage::Format_RGB32);
- iconImage.setPixel(0, 0, qRgb(1, 2, 3));
- Uuid iconUuid = Uuid::random();
-
- QImage iconUnusedImage(1, 1, QImage::Format_RGB32);
- iconUnusedImage.setPixel(0, 0, qRgb(1, 2, 3));
- Uuid iconUnusedUuid = Uuid::random();
-
- Database* dbOrg = new Database();
- Group* groupOrg = new Group();
- groupOrg->setParent(dbOrg->rootGroup());
- groupOrg->setName("GTEST");
- Entry* entryOrg = new Entry();
- entryOrg->setGroup(groupOrg);
- entryOrg->setTitle("ETEST");
- dbOrg->metadata()->addCustomIcon(iconUuid, iconImage);
- dbOrg->metadata()->addCustomIcon(iconUnusedUuid, iconUnusedImage);
- entryOrg->setIcon(iconUuid);
- entryOrg->beginUpdate();
- entryOrg->setIcon(Entry::DefaultIconNumber);
- entryOrg->endUpdate();
-
- Database* dbExp = ToDbExporter().exportGroup(groupOrg);
-
- QCOMPARE(dbExp->rootGroup()->children().size(), 1);
- Group* groupExp = dbExp->rootGroup()->children().at(0);
- QVERIFY(groupExp != groupOrg);
- QCOMPARE(groupExp->name(), groupOrg->name());
- QCOMPARE(groupExp->entries().size(), 1);
-
- Entry* entryExp = groupExp->entries().at(0);
- QCOMPARE(entryExp->title(), entryOrg->title());
- QCOMPARE(dbExp->metadata()->customIcons().size(), 1);
- QVERIFY(dbExp->metadata()->containsCustomIcon(iconUuid));
- QCOMPARE(entryExp->iconNumber(), entryOrg->iconNumber());
-
- QCOMPARE(entryExp->historyItems().size(), 1);
- QCOMPARE(entryExp->historyItems().at(0)->iconUuid(), iconUuid);
-
- delete dbOrg;
- delete dbExp;
-}
diff --git a/tests/TestGlobal.h b/tests/TestGlobal.h
new file mode 100644
index 000000000..017fbd5f9
--- /dev/null
+++ b/tests/TestGlobal.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_TESTGLOBAL_H
+#define KEEPASSXC_TESTGLOBAL_H
+
+#include "core/Uuid.h"
+#include "core/Group.h"
+
+#include <QTest>
+#include <QDateTime>
+
+namespace QTest {
+
+template<>
+inline char* toString(const Uuid& uuid)
+{
+ QByteArray ba = "Uuid(";
+ ba += uuid.toHex().toLatin1().constData();
+ ba += ")";
+ return qstrdup(ba.constData());
+}
+
+template<>
+inline char* toString(const Group::TriState& triState)
+{
+ QString value;
+
+ if (triState == Group::Inherit) {
+ value = "null";
+ } else if (triState == Group::Enable) {
+ value = "true";
+ } else {
+ value = "false";
+ }
+
+ return qstrdup(value.toLocal8Bit().constData());
+}
+
+} // namespace QTest
+
+
+namespace Test {
+
+inline QDateTime datetime(int year, int month, int day, int hour, int min, int second)
+{
+ return QDateTime(
+ QDate(year, month, day),
+ QTime(hour, min, second),
+ Qt::UTC);
+}
+
+} // namespace Test
+
+#endif //KEEPASSXC_TESTGLOBAL_H
diff --git a/tests/TestGroup.cpp b/tests/TestGroup.cpp
index dfccf5d0b..d9eb2c765 100644
--- a/tests/TestGroup.cpp
+++ b/tests/TestGroup.cpp
@@ -17,15 +17,10 @@
*/
#include "TestGroup.h"
+#include "TestGlobal.h"
-#include <QDebug>
-#include <QPointer>
-#include <QScopedPointer>
#include <QSignalSpy>
-#include <QTest>
-#include "core/Database.h"
-#include "core/Group.h"
#include "core/Metadata.h"
#include "crypto/Crypto.h"
@@ -384,6 +379,23 @@ void TestGroup::testClone()
QScopedPointer<Group> clonedGroupKeepUuid(originalGroup->clone(Entry::CloneNoFlags));
QCOMPARE(clonedGroupKeepUuid->entries().at(0)->uuid(), originalGroupEntry->uuid());
QCOMPARE(clonedGroupKeepUuid->children().at(0)->entries().at(0)->uuid(), subGroupEntry->uuid());
+
+ QScopedPointer<Group> clonedGroupNoFlags(originalGroup->clone(Entry::CloneNoFlags, Group::CloneNoFlags));
+ QCOMPARE(clonedGroupNoFlags->entries().size(), 0);
+ QVERIFY(clonedGroupNoFlags->uuid() == originalGroup->uuid());
+
+ QScopedPointer<Group> clonedGroupNewUuid(originalGroup->clone(Entry::CloneNoFlags, Group::CloneNewUuid));
+ QCOMPARE(clonedGroupNewUuid->entries().size(), 0);
+ QVERIFY(clonedGroupNewUuid->uuid() != originalGroup->uuid());
+
+ // Making sure the new modification date is not the same.
+ QTest::qSleep(1);
+
+ QScopedPointer<Group> clonedGroupResetTimeInfo(originalGroup->clone(Entry::CloneNoFlags,
+ Group::CloneNewUuid | Group::CloneResetTimeInfo));
+ QCOMPARE(clonedGroupResetTimeInfo->entries().size(), 0);
+ QVERIFY(clonedGroupResetTimeInfo->uuid() != originalGroup->uuid());
+ QVERIFY(clonedGroupResetTimeInfo->timeInfo().lastModificationTime() != originalGroup->timeInfo().lastModificationTime());
}
void TestGroup::testCopyCustomIcons()
@@ -439,114 +451,6 @@ void TestGroup::testCopyCustomIcons()
QCOMPARE(metaTarget->customIcon(group2Icon).pixel(0, 0), qRgb(4, 5, 6));
}
-void TestGroup::testMerge()
-{
- QScopedPointer<Group> group1(new Group());
- group1->setName("group 1");
- QScopedPointer<Group> group2(new Group());
- group2->setName("group 2");
-
- QScopedPointer<Entry> entry1(new Entry());
- QScopedPointer<Entry> entry2(new Entry());
-
- entry1->setGroup(group1.data());
- entry1->setUuid(Uuid::random());
- entry2->setGroup(group1.data());
- entry2->setUuid(Uuid::random());
-
- group2->merge(group1.data());
-
- QCOMPARE(group1->entries().size(), 2);
- QCOMPARE(group2->entries().size(), 2);
-}
-
-void TestGroup::testMergeDatabase()
-{
- QScopedPointer<Database> dbSource(createMergeTestDatabase());
- QScopedPointer<Database> dbDest(new Database());
-
- dbDest->merge(dbSource.data());
-
- QCOMPARE(dbDest->rootGroup()->children().size(), 2);
- QCOMPARE(dbDest->rootGroup()->children().at(0)->entries().size(), 2);
-}
-
-void TestGroup::testMergeConflict()
-{
- QScopedPointer<Database> dbSource(createMergeTestDatabase());
-
- // test merging updated entries
- // falls back to KeepBoth mode
- QScopedPointer<Database> dbCopy(new Database());
- dbCopy->setRootGroup(dbSource->rootGroup()->clone(Entry::CloneNoFlags));
-
- // sanity check
- QCOMPARE(dbCopy->rootGroup()->children().at(0)->entries().size(), 2);
-
- // make this entry newer than in original db
- Entry* updatedEntry = dbCopy->rootGroup()->children().at(0)->entries().at(0);
- TimeInfo updatedTimeInfo = updatedEntry->timeInfo();
- updatedTimeInfo.setLastModificationTime(updatedTimeInfo.lastModificationTime().addYears(1));
- updatedEntry->setTimeInfo(updatedTimeInfo);
-
- dbCopy->merge(dbSource.data());
-
- // one entry is duplicated because of mode
- QCOMPARE(dbCopy->rootGroup()->children().at(0)->entries().size(), 2);
-}
-
-void TestGroup::testMergeConflictKeepBoth()
-{
- QScopedPointer<Database> dbSource(createMergeTestDatabase());
-
- // test merging updated entries
- // falls back to KeepBoth mode
- QScopedPointer<Database> dbCopy(new Database());
- dbCopy->setRootGroup(dbSource->rootGroup()->clone(Entry::CloneNoFlags));
-
- // sanity check
- QCOMPARE(dbCopy->rootGroup()->children().at(0)->entries().size(), 2);
-
- // make this entry newer than in original db
- Entry* updatedEntry = dbCopy->rootGroup()->children().at(0)->entries().at(0);
- TimeInfo updatedTimeInfo = updatedEntry->timeInfo();
- updatedTimeInfo.setLastModificationTime(updatedTimeInfo.lastModificationTime().addYears(1));
- updatedEntry->setTimeInfo(updatedTimeInfo);
-
- dbCopy->rootGroup()->setMergeMode(Group::MergeMode::KeepBoth);
-
- dbCopy->merge(dbSource.data());
-
- // one entry is duplicated because of mode
- QCOMPARE(dbCopy->rootGroup()->children().at(0)->entries().size(), 3);
- // the older entry was merged from the other db as last in the group
- Entry* olderEntry = dbCopy->rootGroup()->children().at(0)->entries().at(2);
- QVERIFY2(olderEntry->attributes()->hasKey("merged"), "older entry is marked with an attribute \"merged\"");
-}
-
-Database* TestGroup::createMergeTestDatabase()
-{
- QScopedPointer<Database> db(new Database());
-
- Group* group1 = new Group();
- group1->setName("group 1");
- Group* group2 = new Group();
- group2->setName("group 2");
-
- Entry* entry1 = new Entry();
- Entry* entry2 = new Entry();
-
- entry1->setGroup(group1);
- entry1->setUuid(Uuid::random());
- entry2->setGroup(group1);
- entry2->setUuid(Uuid::random());
-
- group1->setParent(db->rootGroup());
- group2->setParent(db->rootGroup());
-
- return db.take();
-}
-
void TestGroup::testFindEntry()
{
QScopedPointer<Database> db(new Database());
@@ -702,9 +606,6 @@ void TestGroup::testPrint()
output = db->rootGroup()->print();
QCOMPARE(output, QString("entry1\n"));
- output = db->rootGroup()->print(true);
- QCOMPARE(output, QString("entry1 " + entry1->uuid().toHex() + "\n"));
-
Group* group1 = new Group();
group1->setName("group1");
@@ -719,10 +620,122 @@ void TestGroup::testPrint()
output = db->rootGroup()->print();
QVERIFY(output.contains(QString("entry1\n")));
QVERIFY(output.contains(QString("group1/\n")));
- QVERIFY(output.contains(QString(" entry2\n")));
+ QVERIFY(!output.contains(QString(" entry2\n")));
output = db->rootGroup()->print(true);
- QVERIFY(output.contains(QString("entry1 " + entry1->uuid().toHex() + "\n")));
- QVERIFY(output.contains(QString("group1/ " + group1->uuid().toHex() + "\n")));
- QVERIFY(output.contains(QString(" entry2 " + entry2->uuid().toHex() + "\n")));
+ QVERIFY(output.contains(QString("entry1\n")));
+ QVERIFY(output.contains(QString("group1/\n")));
+ QVERIFY(output.contains(QString(" entry2\n")));
+
+ output = group1->print();
+ QVERIFY(!output.contains(QString("group1/\n")));
+ QVERIFY(output.contains(QString("entry2\n")));
+}
+
+void TestGroup::testLocate()
+{
+ Database* db = new Database();
+
+ Entry* entry1 = new Entry();
+ entry1->setTitle("entry1");
+ entry1->setGroup(db->rootGroup());
+
+ Entry* entry2 = new Entry();
+ entry2->setTitle("entry2");
+ entry2->setGroup(db->rootGroup());
+
+ Group* group1 = new Group();
+ group1->setName("group1");
+ group1->setParent(db->rootGroup());
+
+ Group* group2 = new Group();
+ group2->setName("group2");
+ group2->setParent(group1);
+
+ Entry* entry3 = new Entry();
+ entry3->setTitle("entry3");
+ entry3->setGroup(group1);
+
+ Entry* entry43 = new Entry();
+ entry43->setTitle("entry43");
+ entry43->setGroup(group1);
+
+ Entry* google = new Entry();
+ google->setTitle("Google");
+ google->setGroup(group2);
+
+ QStringList results = db->rootGroup()->locate("entry");
+ QVERIFY(results.size() == 4);
+ QVERIFY(results.contains("/group1/entry43"));
+
+ results = db->rootGroup()->locate("entry1");
+ QVERIFY(results.size() == 1);
+ QVERIFY(results.contains("/entry1"));
+
+ results = db->rootGroup()->locate("Entry1");
+ QVERIFY(results.size() == 1);
+ QVERIFY(results.contains("/entry1"));
+
+ results = db->rootGroup()->locate("invalid");
+ QVERIFY(results.size() == 0);
+
+ results = db->rootGroup()->locate("google");
+ QVERIFY(results.size() == 1);
+ QVERIFY(results.contains("/group1/group2/Google"));
+
+ results = db->rootGroup()->locate("group1");
+ QVERIFY(results.size() == 3);
+ QVERIFY(results.contains("/group1/entry3"));
+ QVERIFY(results.contains("/group1/entry43"));
+ QVERIFY(results.contains("/group1/group2/Google"));
+
+ delete db;
+}
+
+void TestGroup::testAddEntryWithPath()
+{
+ Database* db = new Database();
+
+ Group* group1 = new Group();
+ group1->setName("group1");
+ group1->setParent(db->rootGroup());
+
+ Group* group2 = new Group();
+ group2->setName("group2");
+ group2->setParent(group1);
+
+ Entry* entry = db->rootGroup()->addEntryWithPath("entry1");
+ QVERIFY(entry != nullptr);
+ QVERIFY(!entry->uuid().isNull());
+
+ entry = db->rootGroup()->addEntryWithPath("entry1");
+ QVERIFY(entry == nullptr);
+
+ entry = db->rootGroup()->addEntryWithPath("/entry1");
+ QVERIFY(entry == nullptr);
+
+ entry = db->rootGroup()->addEntryWithPath("entry2");
+ QVERIFY(entry != nullptr);
+ QVERIFY(entry->title() == "entry2");
+ QVERIFY(!entry->uuid().isNull());
+
+ entry = db->rootGroup()->addEntryWithPath("/entry3");
+ QVERIFY(entry != nullptr);
+ QVERIFY(entry->title() == "entry3");
+ QVERIFY(!entry->uuid().isNull());
+
+ entry = db->rootGroup()->addEntryWithPath("/group1/entry4");
+ QVERIFY(entry != nullptr);
+ QVERIFY(entry->title() == "entry4");
+ QVERIFY(!entry->uuid().isNull());
+
+ entry = db->rootGroup()->addEntryWithPath("/group1/group2/entry5");
+ QVERIFY(entry != nullptr);
+ QVERIFY(entry->title() == "entry5");
+ QVERIFY(!entry->uuid().isNull());
+
+ entry = db->rootGroup()->addEntryWithPath("/group1/invalid_group/entry6");
+ QVERIFY(entry == nullptr);
+
+ delete db;
}
diff --git a/tests/TestGroup.h b/tests/TestGroup.h
index 16bb42acd..11abfe129 100644
--- a/tests/TestGroup.h
+++ b/tests/TestGroup.h
@@ -35,16 +35,11 @@ private slots:
void testCopyCustomIcon();
void testClone();
void testCopyCustomIcons();
- void testMerge();
- void testMergeConflict();
- void testMergeDatabase();
- void testMergeConflictKeepBoth();
void testFindEntry();
void testFindGroupByPath();
void testPrint();
-
-private:
- Database* createMergeTestDatabase();
+ void testLocate();
+ void testAddEntryWithPath();
};
#endif // KEEPASSX_TESTGROUP_H
diff --git a/tests/TestGroupModel.cpp b/tests/TestGroupModel.cpp
index 1faf82aa2..f9f55e247 100644
--- a/tests/TestGroupModel.cpp
+++ b/tests/TestGroupModel.cpp
@@ -16,13 +16,11 @@
*/
#include "TestGroupModel.h"
+#include "TestGlobal.h"
#include <QSignalSpy>
-#include <QTest>
#include "modeltest.h"
-#include "core/Database.h"
-#include "core/Group.h"
#include "crypto/Crypto.h"
#include "gui/group/GroupModel.h"
diff --git a/tests/TestHashedBlockStream.cpp b/tests/TestHashedBlockStream.cpp
index b78a46ba8..90c96582f 100644
--- a/tests/TestHashedBlockStream.cpp
+++ b/tests/TestHashedBlockStream.cpp
@@ -16,9 +16,9 @@
*/
#include "TestHashedBlockStream.h"
+#include "TestGlobal.h"
#include <QBuffer>
-#include <QTest>
#include "FailDevice.h"
#include "crypto/Crypto.h"
diff --git a/tests/TestKdbx2.cpp b/tests/TestKdbx2.cpp
new file mode 100644
index 000000000..c0a0b3074
--- /dev/null
+++ b/tests/TestKdbx2.cpp
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TestKdbx2.h"
+#include "TestGlobal.h"
+
+#include "crypto/Crypto.h"
+#include "keys/PasswordKey.h"
+#include "format/KeePass2Reader.h"
+#include "format/KeePass2Writer.h"
+#include "core/Metadata.h"
+#include "config-keepassx-tests.h"
+
+#include <QBuffer>
+
+QTEST_GUILESS_MAIN(TestKdbx2)
+
+void TestKdbx2::initTestCase()
+{
+ QVERIFY(Crypto::init());
+}
+
+/**
+ * Helper method for verifying contents of the sample KDBX 2 file.
+ */
+void TestKdbx2::verifyKdbx2Db(Database* db)
+{
+ QVERIFY(db);
+ QCOMPARE(db->rootGroup()->name(), QString("Format200"));
+ QVERIFY(!db->metadata()->protectTitle());
+ QVERIFY(db->metadata()->protectUsername());
+ QVERIFY(!db->metadata()->protectPassword());
+ QVERIFY(db->metadata()->protectUrl());
+ QVERIFY(!db->metadata()->protectNotes());
+
+ QCOMPARE(db->rootGroup()->entries().size(), 1);
+ auto entry = db->rootGroup()->entries().at(0);
+
+ QCOMPARE(entry->title(), QString("Sample Entry"));
+ QCOMPARE(entry->username(), QString("User Name"));
+ QCOMPARE(entry->attachments()->keys().size(), 2);
+ QCOMPARE(entry->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
+ QCOMPARE(entry->attachments()->value("test.txt"), QByteArray("this is a test"));
+
+ QCOMPARE(entry->historyItems().size(), 2);
+ QCOMPARE(entry->historyItems().at(0)->attachments()->keys().size(), 0);
+ QCOMPARE(entry->historyItems().at(1)->attachments()->keys().size(), 1);
+ QCOMPARE(entry->historyItems().at(1)->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
+}
+
+void TestKdbx2::testFormat200()
+{
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Format200.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey("a"));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_2 & KeePass2::FILE_VERSION_CRITICAL_MASK);
+
+ QVERIFY(!reader.hasError());
+ verifyKdbx2Db(db.data());
+}
+
+void TestKdbx2::testFormat200Upgrade()
+{
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Format200.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey("a"));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_2 & KeePass2::FILE_VERSION_CRITICAL_MASK);
+ QCOMPARE(db->kdf()->uuid(), KeePass2::KDF_AES_KDBX3);
+
+ QBuffer buffer;
+ buffer.open(QBuffer::ReadWrite);
+
+ // write KDBX 3 to upgrade it
+ KeePass2Writer writer;
+ writer.writeDatabase(&buffer, db.data());
+ if (writer.hasError()) {
+ QFAIL(qPrintable(QString("Error while writing database: %1").arg(writer.errorString())));
+ }
+
+ // read buffer back
+ buffer.seek(0);
+ QScopedPointer<Database> targetDb(reader.readDatabase(&buffer, key));
+ if (reader.hasError()) {
+ QFAIL(qPrintable(QString("Error while reading database: %1").arg(reader.errorString())));
+ }
+
+ // database should now be upgraded to KDBX 3 without data loss
+ verifyKdbx2Db(targetDb.data());
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK);
+ QCOMPARE(targetDb->kdf()->uuid(), KeePass2::KDF_AES_KDBX3);
+}
diff --git a/tests/TestExporter.h b/tests/TestKdbx2.h
index 8c9945252..9b5f5c5ff 100644
--- a/tests/TestExporter.h
+++ b/tests/TestKdbx2.h
@@ -1,6 +1,5 @@
/*
- * Copyright (C) 2014 Felix Geyer <debfx@fobos.de>
- * Copyright (C) 2014 Florian Geyer <blueice@fobos.de>
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,18 +15,24 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_TESTEXPORTER_H
-#define KEEPASSX_TESTEXPORTER_H
+#ifndef KEEPASSXC_TEST_KDBX2_H
+#define KEEPASSXC_TEST_KDBX2_H
#include <QObject>
-class TestExporter : public QObject
+class Database;
+
+class TestKdbx2 : public QObject
{
- Q_OBJECT
+Q_OBJECT
private slots:
void initTestCase();
- void testToDbExporter();
+ void testFormat200();
+ void testFormat200Upgrade();
+
+private:
+ void verifyKdbx2Db(Database* db);
};
-#endif // KEEPASSX_TESTEXPORTER_H
+#endif // KEEPASSXC_TEST_KDBX2_H
diff --git a/tests/TestKdbx3.cpp b/tests/TestKdbx3.cpp
new file mode 100644
index 000000000..5312bcf01
--- /dev/null
+++ b/tests/TestKdbx3.cpp
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TestKdbx3.h"
+#include "TestGlobal.h"
+
+#include "core/Metadata.h"
+#include "keys/PasswordKey.h"
+#include "format/KeePass2.h"
+#include "format/KeePass2Reader.h"
+#include "format/KeePass2Writer.h"
+#include "format/KdbxXmlReader.h"
+#include "format/KdbxXmlWriter.h"
+#include "format/KeePass2Repair.h"
+#include "config-keepassx-tests.h"
+
+
+QTEST_GUILESS_MAIN(TestKdbx3)
+
+void TestKdbx3::initTestCaseImpl()
+{
+}
+
+Database* TestKdbx3::readXml(const QString& path, bool strictMode, bool& hasError, QString& errorString)
+{
+ KdbxXmlReader reader(KeePass2::FILE_VERSION_3_1);
+ reader.setStrictMode(strictMode);
+ auto db = reader.readDatabase(path);
+ hasError = reader.hasError();
+ errorString = reader.errorString();
+ return db;
+}
+
+Database* TestKdbx3::readXml(QBuffer* buf, bool strictMode, bool& hasError, QString& errorString)
+{
+ KdbxXmlReader reader(KeePass2::FILE_VERSION_3_1);
+ reader.setStrictMode(strictMode);
+ auto db = reader.readDatabase(buf);
+ hasError = reader.hasError();
+ errorString = reader.errorString();
+ return db;
+}
+
+void TestKdbx3::writeXml(QBuffer* buf, Database* db, bool& hasError, QString& errorString)
+{
+ KdbxXmlWriter writer(KeePass2::FILE_VERSION_3_1);
+ writer.writeDatabase(buf, db);
+ hasError = writer.hasError();
+ errorString = writer.errorString();
+}
+
+void TestKdbx3::readKdbx(QIODevice* device, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString)
+{
+ KeePass2Reader reader;
+ db.reset(reader.readDatabase(device, key));
+ hasError = reader.hasError();
+ if (hasError) {
+ errorString = reader.errorString();
+ }
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK);
+}
+
+void TestKdbx3::readKdbx(const QString& path, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString)
+{
+ KeePass2Reader reader;
+ db.reset(reader.readDatabase(path, key));
+ hasError = reader.hasError();
+ if (hasError) {
+ errorString = reader.errorString();
+ }
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK);
+}
+
+void TestKdbx3::writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString)
+{
+ KeePass2Writer writer;
+ hasError = writer.writeDatabase(device, db);
+ hasError = writer.hasError();
+ if (hasError) {
+ errorString = writer.errorString();
+ }
+ QCOMPARE(writer.version(), KeePass2::FILE_VERSION_3_1);
+}
+
+void TestKdbx3::testFormat300()
+{
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Format300.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey("a"));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3);
+ QVERIFY(db.data());
+ QVERIFY(!reader.hasError());
+
+ QCOMPARE(db->rootGroup()->name(), QString("Format300"));
+ QCOMPARE(db->metadata()->name(), QString("Test Database Format 0x00030000"));
+}
+
+void TestKdbx3::testNonAscii()
+{
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/NonAscii.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey(QString::fromUtf8("\xce\x94\xc3\xb6\xd8\xb6")));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QVERIFY(db.data());
+ QVERIFY(!reader.hasError());
+ QCOMPARE(db->metadata()->name(), QString("NonAsciiTest"));
+ QCOMPARE(db->compressionAlgo(), Database::CompressionNone);
+}
+
+void TestKdbx3::testCompressed()
+{
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Compressed.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey(""));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QVERIFY(db.data());
+ QVERIFY(!reader.hasError());
+ QCOMPARE(db->metadata()->name(), QString("Compressed"));
+ QCOMPARE(db->compressionAlgo(), Database::CompressionGZip);
+}
+
+void TestKdbx3::testProtectedStrings()
+{
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/ProtectedStrings.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey("masterpw"));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QVERIFY(db.data());
+ QVERIFY(!reader.hasError());
+ QCOMPARE(db->metadata()->name(), QString("Protected Strings Test"));
+
+ Entry* entry = db->rootGroup()->entries().at(0);
+
+ QCOMPARE(entry->title(), QString("Sample Entry"));
+ QCOMPARE(entry->username(), QString("Protected User Name"));
+ QCOMPARE(entry->password(), QString("ProtectedPassword"));
+ QCOMPARE(entry->attributes()->value("TestProtected"), QString("ABC"));
+ QCOMPARE(entry->attributes()->value("TestUnprotected"), QString("DEF"));
+
+ QVERIFY(db->metadata()->protectPassword());
+ QVERIFY(entry->attributes()->isProtected("TestProtected"));
+ QVERIFY(!entry->attributes()->isProtected("TestUnprotected"));
+}
+
+void TestKdbx3::testBrokenHeaderHash()
+{
+ // The protected stream key has been modified in the header.
+ // Make sure the database won't open.
+
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/BrokenHeaderHash.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey(""));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QVERIFY(!db.data());
+ QVERIFY(reader.hasError());
+}
+
+void TestKdbx3::testKdbxRepair()
+{
+ QString brokenDbFilename = QString(KEEPASSX_TEST_DATA_DIR).append("/bug392.kdbx");
+ // master password = test
+ // entry username: testuser\x10\x20AC
+ // entry password: testpw
+ CompositeKey key;
+ key.addKey(PasswordKey("test"));
+
+ // test that we can't open the broken database
+ bool hasError;
+ QString errorString;
+ QScopedPointer<Database> dbBroken;
+ readKdbx(brokenDbFilename, key, dbBroken, hasError, errorString);
+ QVERIFY(!dbBroken.data());
+ QVERIFY(hasError);
+
+ // test if we can repair the database
+ KeePass2Repair repair;
+ QFile file(brokenDbFilename);
+ file.open(QIODevice::ReadOnly);
+ auto result = repair.repairDatabase(&file, key);
+ QCOMPARE(result.first, KeePass2Repair::RepairSuccess);
+ QScopedPointer<Database> dbRepaired(result.second);
+ QVERIFY(dbRepaired);
+
+ QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1);
+ QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(QChar(0x20AC)));
+ QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw"));
+}
diff --git a/tests/TestKdbx3.h b/tests/TestKdbx3.h
new file mode 100644
index 000000000..07c1c5503
--- /dev/null
+++ b/tests/TestKdbx3.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_TEST_KDBX3_H
+#define KEEPASSXC_TEST_KDBX3_H
+
+#include "TestKeePass2Format.h"
+
+class TestKdbx3 : public TestKeePass2Format
+{
+Q_OBJECT
+
+private slots:
+ void testNonAscii();
+ void testCompressed();
+ void testProtectedStrings();
+ void testBrokenHeaderHash();
+ void testFormat300();
+ void testKdbxRepair();
+
+protected:
+ void initTestCaseImpl() override;
+
+ Database* readXml(QBuffer* buf, bool strictMode, bool& hasError, QString& errorString) override;
+ Database* readXml(const QString& path, bool strictMode, bool& hasError, QString& errorString) override;
+ void writeXml(QBuffer* buf, Database* db, bool& hasError, QString& errorString) override;
+
+ void readKdbx(QIODevice* device, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) override;
+ void readKdbx(const QString& path, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) override;
+ void writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) override;
+
+};
+
+#endif // KEEPASSXC_TEST_KDBX3_H
diff --git a/tests/TestKdbx4.cpp b/tests/TestKdbx4.cpp
new file mode 100644
index 000000000..24a07aa63
--- /dev/null
+++ b/tests/TestKdbx4.cpp
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TestKdbx4.h"
+#include "TestGlobal.h"
+
+#include "core/Metadata.h"
+#include "keys/PasswordKey.h"
+#include "format/KeePass2.h"
+#include "format/KeePass2Reader.h"
+#include "format/KeePass2Writer.h"
+#include "format/KdbxXmlReader.h"
+#include "format/KdbxXmlWriter.h"
+#include "config-keepassx-tests.h"
+
+
+QTEST_GUILESS_MAIN(TestKdbx4)
+
+void TestKdbx4::initTestCaseImpl()
+{
+ m_xmlDb->changeKdf(KeePass2::uuidToKdf(KeePass2::KDF_ARGON2));
+ m_kdbxSourceDb->changeKdf(KeePass2::uuidToKdf(KeePass2::KDF_ARGON2));
+}
+
+Database* TestKdbx4::readXml(const QString& path, bool strictMode, bool& hasError, QString& errorString)
+{
+ KdbxXmlReader reader(KeePass2::FILE_VERSION_4);
+ reader.setStrictMode(strictMode);
+ auto db = reader.readDatabase(path);
+ hasError = reader.hasError();
+ errorString = reader.errorString();
+ return db;
+}
+
+Database* TestKdbx4::readXml(QBuffer* buf, bool strictMode, bool& hasError, QString& errorString)
+{
+ KdbxXmlReader reader(KeePass2::FILE_VERSION_4);
+ reader.setStrictMode(strictMode);
+ auto db = reader.readDatabase(buf);
+ hasError = reader.hasError();
+ errorString = reader.errorString();
+ return db;
+}
+
+void TestKdbx4::writeXml(QBuffer* buf, Database* db, bool& hasError, QString& errorString)
+{
+ KdbxXmlWriter writer(KeePass2::FILE_VERSION_4);
+ writer.writeDatabase(buf, db);
+ hasError = writer.hasError();
+ errorString = writer.errorString();
+}
+
+void TestKdbx4::readKdbx(QIODevice* device, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString)
+{
+ KeePass2Reader reader;
+ db.reset(reader.readDatabase(device, key));
+ hasError = reader.hasError();
+ if (hasError) {
+ errorString = reader.errorString();
+ }
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_4);
+}
+
+void TestKdbx4::readKdbx(const QString& path, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString)
+{
+ KeePass2Reader reader;
+ db.reset(reader.readDatabase(path, key));
+ hasError = reader.hasError();
+ if (hasError) {
+ errorString = reader.errorString();
+ }
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_4);
+}
+
+void TestKdbx4::writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString)
+{
+ if (db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3) {
+ db->changeKdf(KeePass2::uuidToKdf(KeePass2::KDF_ARGON2));
+ }
+ KeePass2Writer writer;
+ hasError = writer.writeDatabase(device, db);
+ hasError = writer.hasError();
+ if (hasError) {
+ errorString = writer.errorString();
+ }
+ QCOMPARE(writer.version(), KeePass2::FILE_VERSION_4);
+}
+
+Q_DECLARE_METATYPE(Uuid);
+void TestKdbx4::testFormat400()
+{
+ QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Format400.kdbx");
+ CompositeKey key;
+ key.addKey(PasswordKey("t"));
+ KeePass2Reader reader;
+ QScopedPointer<Database> db(reader.readDatabase(filename, key));
+ QCOMPARE(reader.version(), KeePass2::FILE_VERSION_4);
+ QVERIFY(db.data());
+ QVERIFY(!reader.hasError());
+
+ QCOMPARE(db->rootGroup()->name(), QString("Format400"));
+ QCOMPARE(db->metadata()->name(), QString("Format400"));
+ QCOMPARE(db->rootGroup()->entries().size(), 1);
+ auto entry = db->rootGroup()->entries().at(0);
+
+ QCOMPARE(entry->title(), QString("Format400"));
+ QCOMPARE(entry->username(), QString("Format400"));
+ QCOMPARE(entry->attributes()->keys().size(), 6);
+ QCOMPARE(entry->attributes()->value("Format400"), QString("Format400"));
+ QCOMPARE(entry->attachments()->keys().size(), 1);
+ QCOMPARE(entry->attachments()->value("Format400"), QByteArray("Format400\n"));
+}
+
+void TestKdbx4::testFormat400Upgrade()
+{
+ QFETCH(Uuid, kdfUuid);
+ QFETCH(Uuid, cipherUuid);
+ QFETCH(bool, addCustomData);
+ QFETCH(quint32, expectedVersion);
+
+ QScopedPointer<Database> sourceDb(new Database());
+ sourceDb->metadata()->setName("Wubba lubba dub dub");
+ QCOMPARE(sourceDb->kdf()->uuid(), KeePass2::KDF_AES_KDBX3); // default is legacy AES-KDF
+
+ CompositeKey key;
+ key.addKey(PasswordKey("I am in great pain, please help me!"));
+ sourceDb->setKey(key, true, true);
+
+ QBuffer buffer;
+ buffer.open(QBuffer::ReadWrite);
+
+ // upgrade to KDBX 4 by changing KDF and Cipher
+ sourceDb->changeKdf(KeePass2::uuidToKdf(kdfUuid));
+ sourceDb->setCipher(cipherUuid);
+
+ if (addCustomData) {
+ sourceDb->metadata()->customData()->set("CustomPublicData", "Hey look, I turned myself into a pickle!");
+ sourceDb->rootGroup()->customData()->set("CustomGroupData", "I just killed my family! I don't care who they were!");
+ }
+
+ KeePass2Writer writer;
+ writer.writeDatabase(&buffer, sourceDb.data());
+ if (writer.hasError()) {
+ QFAIL(qPrintable(QString("Error while writing database: %1").arg(writer.errorString())));
+ }
+
+ // read buffer back
+ buffer.seek(0);
+ KeePass2Reader reader;
+ QScopedPointer<Database> targetDb(reader.readDatabase(&buffer, key));
+ if (reader.hasError()) {
+ QFAIL(qPrintable(QString("Error while reading database: %1").arg(reader.errorString())));
+ }
+
+ QVERIFY(targetDb->rootGroup());
+ QCOMPARE(targetDb->metadata()->name(), sourceDb->metadata()->name());
+
+ QCOMPARE(reader.version(), expectedVersion);
+ QCOMPARE(targetDb->cipher(), cipherUuid);
+ QCOMPARE(*targetDb->metadata()->customData(), *sourceDb->metadata()->customData());
+ QCOMPARE(*targetDb->rootGroup()->customData(), *sourceDb->rootGroup()->customData());
+}
+
+void TestKdbx4::testFormat400Upgrade_data()
+{
+ QTest::addColumn<Uuid>("kdfUuid");
+ QTest::addColumn<Uuid>("cipherUuid");
+ QTest::addColumn<bool>("addCustomData");
+ QTest::addColumn<quint32>("expectedVersion");
+
+ auto constexpr kdbx3 = KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK;
+ auto constexpr kdbx4 = KeePass2::FILE_VERSION_4 & KeePass2::FILE_VERSION_CRITICAL_MASK;
+
+ QTest::newRow("Argon2 + AES") << KeePass2::KDF_ARGON2 << KeePass2::CIPHER_AES << false << kdbx4;
+ QTest::newRow("AES-KDF + AES") << KeePass2::KDF_AES_KDBX4 << KeePass2::CIPHER_AES << false << kdbx4;
+ QTest::newRow("AES-KDF (legacy) + AES") << KeePass2::KDF_AES_KDBX3 << KeePass2::CIPHER_AES << false << kdbx3;
+ QTest::newRow("Argon2 + AES + CustomData") << KeePass2::KDF_ARGON2 << KeePass2::CIPHER_AES << true << kdbx4;
+ QTest::newRow("AES-KDF + AES + CustomData") << KeePass2::KDF_AES_KDBX4 << KeePass2::CIPHER_AES << true << kdbx4;
+ QTest::newRow("AES-KDF (legacy) + AES + CustomData") << KeePass2::KDF_AES_KDBX3 << KeePass2::CIPHER_AES << true << kdbx4;
+
+ QTest::newRow("Argon2 + ChaCha20") << KeePass2::KDF_ARGON2 << KeePass2::CIPHER_CHACHA20 << false << kdbx4;
+ QTest::newRow("AES-KDF + ChaCha20") << KeePass2::KDF_AES_KDBX4 << KeePass2::CIPHER_CHACHA20 << false << kdbx4;
+ QTest::newRow("AES-KDF (legacy) + ChaCha20") << KeePass2::KDF_AES_KDBX3 << KeePass2::CIPHER_CHACHA20 << false << kdbx3;
+ QTest::newRow("Argon2 + ChaCha20 + CustomData") << KeePass2::KDF_ARGON2 << KeePass2::CIPHER_CHACHA20 << true << kdbx4;
+ QTest::newRow("AES-KDF + ChaCha20 + CustomData") << KeePass2::KDF_AES_KDBX4 << KeePass2::CIPHER_CHACHA20 << true << kdbx4;
+ QTest::newRow("AES-KDF (legacy) + ChaCha20 + CustomData") << KeePass2::KDF_AES_KDBX3 << KeePass2::CIPHER_CHACHA20 << true << kdbx4;
+
+ QTest::newRow("Argon2 + Twofish") << KeePass2::KDF_ARGON2 << KeePass2::CIPHER_TWOFISH << false << kdbx4;
+ QTest::newRow("AES-KDF + Twofish") << KeePass2::KDF_AES_KDBX4 << KeePass2::CIPHER_TWOFISH << false << kdbx4;
+ QTest::newRow("AES-KDF (legacy) + Twofish") << KeePass2::KDF_AES_KDBX3 << KeePass2::CIPHER_TWOFISH << false << kdbx3;
+ QTest::newRow("Argon2 + Twofish + CustomData") << KeePass2::KDF_ARGON2 << KeePass2::CIPHER_TWOFISH << true << kdbx4;
+ QTest::newRow("AES-KDF + Twofish + CustomData") << KeePass2::KDF_AES_KDBX4 << KeePass2::CIPHER_TWOFISH << true << kdbx4;
+ QTest::newRow("AES-KDF (legacy) + Twofish + CustomData") << KeePass2::KDF_AES_KDBX3 << KeePass2::CIPHER_TWOFISH << true << kdbx4;
+}
+
+void TestKdbx4::testCustomData()
+{
+ Database db;
+
+ // test public custom data
+ QVariantMap publicCustomData;
+ publicCustomData.insert("CD1", 123);
+ publicCustomData.insert("CD2", true);
+ publicCustomData.insert("CD3", "abcäöü");
+ publicCustomData.insert("CD4", QByteArray::fromHex("ababa123ff"));
+ db.setPublicCustomData(publicCustomData);
+ QCOMPARE(db.publicCustomData(), publicCustomData);
+
+ const QString customDataKey1 = "CD1";
+ const QString customDataKey2 = "CD2";
+ const QString customData1 = "abcäöü";
+ const QString customData2 = "Hello World";
+ const int dataSize = customDataKey1.toUtf8().size() + customDataKey1.toUtf8().size() +
+ customData1.toUtf8().size() + customData2.toUtf8().size();
+
+ // test custom database data
+ db.metadata()->customData()->set(customDataKey1, customData1);
+ db.metadata()->customData()->set(customDataKey2, customData2);
+ QCOMPARE(db.metadata()->customData()->size(), 2);
+ QCOMPARE(db.metadata()->customData()->dataSize(), dataSize);
+
+ // test custom root group data
+ Group* root = db.rootGroup();
+ root->customData()->set(customDataKey1, customData1);
+ root->customData()->set(customDataKey2, customData2);
+ QCOMPARE(root->customData()->size(), 2);
+ QCOMPARE(root->customData()->dataSize(), dataSize);
+
+ // test copied custom group data
+ auto* group = new Group();
+ group->setParent(root);
+ group->setUuid(Uuid::random());
+ group->customData()->copyDataFrom(root->customData());
+ QCOMPARE(*group->customData(), *root->customData());
+
+ // test copied custom entry data
+ auto* entry = new Entry();
+ entry->setGroup(group);
+ entry->setUuid(Uuid::random());
+ entry->customData()->copyDataFrom(group->customData());
+ QCOMPARE(*entry->customData(), *root->customData());
+
+ // test custom data deletion
+ entry->customData()->set("additional item", "foobar");
+ QCOMPARE(entry->customData()->size(), 3);
+ entry->customData()->remove("additional item");
+ QCOMPARE(entry->customData()->size(), 2);
+ QCOMPARE(entry->customData()->dataSize(), dataSize);
+
+ // test custom data on cloned groups
+ QScopedPointer<Group> clonedGroup(group->clone());
+ QCOMPARE(*clonedGroup->customData(), *group->customData());
+
+ // test custom data on cloned entries
+ QScopedPointer<Entry> clonedEntry(entry->clone(Entry::CloneNoFlags));
+ QCOMPARE(*clonedEntry->customData(), *entry->customData());
+
+ QBuffer buffer;
+ buffer.open(QBuffer::ReadWrite);
+ KeePass2Writer writer;
+ writer.writeDatabase(&buffer, &db);
+
+ // read buffer back
+ buffer.seek(0);
+ KeePass2Reader reader;
+ QSharedPointer<Database> newDb(reader.readDatabase(&buffer, CompositeKey()));
+
+ // test all custom data are read back successfully from KDBX
+ QCOMPARE(newDb->publicCustomData(), publicCustomData);
+
+ QCOMPARE(newDb->metadata()->customData()->value(customDataKey1), customData1);
+ QCOMPARE(newDb->metadata()->customData()->value(customDataKey2), customData2);
+
+ QCOMPARE(newDb->rootGroup()->customData()->value(customDataKey1), customData1);
+ QCOMPARE(newDb->rootGroup()->customData()->value(customDataKey2), customData2);
+
+ auto* newGroup = newDb->rootGroup()->children()[0];
+ QCOMPARE(newGroup->customData()->value(customDataKey1), customData1);
+ QCOMPARE(newGroup->customData()->value(customDataKey2), customData2);
+
+ auto* newEntry = newDb->rootGroup()->children()[0]->entries()[0];
+ QCOMPARE(newEntry->customData()->value(customDataKey1), customData1);
+ QCOMPARE(newEntry->customData()->value(customDataKey2), customData2);
+}
diff --git a/tests/TestKdbx4.h b/tests/TestKdbx4.h
new file mode 100644
index 000000000..5c398d196
--- /dev/null
+++ b/tests/TestKdbx4.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_TEST_KDBX4_H
+#define KEEPASSXC_TEST_KDBX4_H
+
+#include "TestKeePass2Format.h"
+
+class TestKdbx4 : public TestKeePass2Format
+{
+Q_OBJECT
+
+private slots:
+ void testFormat400();
+ void testFormat400Upgrade();
+ void testFormat400Upgrade_data();
+ void testCustomData();
+
+protected:
+ void initTestCaseImpl() override;
+
+ Database* readXml(QBuffer* buf, bool strictMode, bool& hasError, QString& errorString) override;
+ Database* readXml(const QString& path, bool strictMode, bool& hasError, QString& errorString) override;
+ void writeXml(QBuffer* buf, Database* db, bool& hasError, QString& errorString) override;
+
+ void readKdbx(const QString& path, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) override;
+ void readKdbx(QIODevice* device, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) override;
+ void writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) override;
+};
+
+#endif // KEEPASSXC_TEST_KDBX4_H
diff --git a/tests/TestKeePass1Reader.cpp b/tests/TestKeePass1Reader.cpp
index f60846d26..892f746e4 100644
--- a/tests/TestKeePass1Reader.cpp
+++ b/tests/TestKeePass1Reader.cpp
@@ -16,14 +16,11 @@
*/
#include "TestKeePass1Reader.h"
+#include "TestGlobal.h"
#include <QBuffer>
-#include <QTest>
#include "config-keepassx-tests.h"
-#include "core/Database.h"
-#include "core/Entry.h"
-#include "core/Group.h"
#include "core/Metadata.h"
#include "crypto/Crypto.h"
#include "format/KeePass1Reader.h"
@@ -110,7 +107,7 @@ void TestKeePass1Reader::testBasic()
void TestKeePass1Reader::testMasterKey()
{
QVERIFY(m_db->hasKey());
- QCOMPARE(m_db->transformRounds(), static_cast<quint64>(713));
+ QCOMPARE(m_db->kdf()->rounds(), 713);
}
void TestKeePass1Reader::testCustomIcons()
diff --git a/tests/TestKeePass2Format.cpp b/tests/TestKeePass2Format.cpp
new file mode 100644
index 000000000..a493c6173
--- /dev/null
+++ b/tests/TestKeePass2Format.cpp
@@ -0,0 +1,629 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TestKeePass2Format.h"
+#include "TestGlobal.h"
+
+#include "core/Metadata.h"
+#include "crypto/Crypto.h"
+#include "keys/PasswordKey.h"
+#include "format/KdbxXmlReader.h"
+
+#include "FailDevice.h"
+#include "config-keepassx-tests.h"
+
+void TestKeePass2Format::initTestCase()
+{
+ QVERIFY(Crypto::init());
+
+ // read raw XML database
+ bool hasError;
+ QString errorString;
+ m_xmlDb.reset(readXml(QString(KEEPASSX_TEST_DATA_DIR).append("/NewDatabase.xml"), true, hasError, errorString));
+ if (hasError) {
+ QFAIL(qPrintable(QString("Error while reading XML: ").append(errorString)));
+ }
+ QVERIFY(m_xmlDb.data());
+
+ // construct and write KDBX to buffer
+ CompositeKey key;
+ key.addKey(PasswordKey("test"));
+
+ m_kdbxSourceDb.reset(new Database());
+ m_kdbxSourceDb->setKey(key);
+ m_kdbxSourceDb->metadata()->setName("TESTDB");
+ Group* group = m_kdbxSourceDb->rootGroup();
+ group->setUuid(Uuid::random());
+ group->setNotes("I'm a note!");
+ auto entry = new Entry();
+ entry->setPassword(QString::fromUtf8("\xc3\xa4\xa3\xb6\xc3\xbc\xe9\x9b\xbb\xe7\xb4\x85"));
+ entry->setUuid(Uuid::random());
+ entry->attributes()->set("test", "protectedTest", true);
+ QVERIFY(entry->attributes()->isProtected("test"));
+ entry->attachments()->set("myattach.txt", QByteArray("this is an attachment"));
+ entry->attachments()->set("aaa.txt", QByteArray("also an attachment"));
+ entry->setGroup(group);
+ auto groupNew = new Group();
+ groupNew->setUuid(Uuid::random());
+ groupNew->setName("TESTGROUP");
+ groupNew->setNotes("I'm a sub group note!");
+ groupNew->setParent(group);
+
+ m_kdbxTargetBuffer.open(QBuffer::ReadWrite);
+ writeKdbx(&m_kdbxTargetBuffer, m_kdbxSourceDb.data(), hasError, errorString);
+ if (hasError) {
+ QFAIL(qPrintable(QString("Error while writing database: ").append(errorString)));
+ }
+
+ // call sub class init method
+ initTestCaseImpl();
+}
+
+void TestKeePass2Format::testXmlMetadata()
+{
+ QCOMPARE(m_xmlDb->metadata()->generator(), QString("KeePass"));
+ QCOMPARE(m_xmlDb->metadata()->name(), QString("ANAME"));
+ QCOMPARE(m_xmlDb->metadata()->nameChanged(), Test::datetime(2010, 8, 8, 17, 24, 53));
+ QCOMPARE(m_xmlDb->metadata()->description(), QString("ADESC"));
+ QCOMPARE(m_xmlDb->metadata()->descriptionChanged(), Test::datetime(2010, 8, 8, 17, 27, 12));
+ QCOMPARE(m_xmlDb->metadata()->defaultUserName(), QString("DEFUSERNAME"));
+ QCOMPARE(m_xmlDb->metadata()->defaultUserNameChanged(), Test::datetime(2010, 8, 8, 17, 27, 45));
+ QCOMPARE(m_xmlDb->metadata()->maintenanceHistoryDays(), 127);
+ QCOMPARE(m_xmlDb->metadata()->color(), QColor(0xff, 0xef, 0x00));
+ QCOMPARE(m_xmlDb->metadata()->masterKeyChanged(), Test::datetime(2012, 4, 5, 17, 9, 34));
+ QCOMPARE(m_xmlDb->metadata()->masterKeyChangeRec(), 101);
+ QCOMPARE(m_xmlDb->metadata()->masterKeyChangeForce(), -1);
+ QCOMPARE(m_xmlDb->metadata()->protectTitle(), false);
+ QCOMPARE(m_xmlDb->metadata()->protectUsername(), true);
+ QCOMPARE(m_xmlDb->metadata()->protectPassword(), false);
+ QCOMPARE(m_xmlDb->metadata()->protectUrl(), true);
+ QCOMPARE(m_xmlDb->metadata()->protectNotes(), false);
+ QCOMPARE(m_xmlDb->metadata()->recycleBinEnabled(), true);
+ QVERIFY(m_xmlDb->metadata()->recycleBin() != nullptr);
+ QCOMPARE(m_xmlDb->metadata()->recycleBin()->name(), QString("Recycle Bin"));
+ QCOMPARE(m_xmlDb->metadata()->recycleBinChanged(), Test::datetime(2010, 8, 25, 16, 12, 57));
+ QVERIFY(m_xmlDb->metadata()->entryTemplatesGroup() == nullptr);
+ QCOMPARE(m_xmlDb->metadata()->entryTemplatesGroupChanged(), Test::datetime(2010, 8, 8, 17, 24, 19));
+ QVERIFY(m_xmlDb->metadata()->lastSelectedGroup() != nullptr);
+ QCOMPARE(m_xmlDb->metadata()->lastSelectedGroup()->name(), QString("NewDatabase"));
+ QVERIFY(m_xmlDb->metadata()->lastTopVisibleGroup() == m_xmlDb->metadata()->lastSelectedGroup());
+ QCOMPARE(m_xmlDb->metadata()->historyMaxItems(), -1);
+ QCOMPARE(m_xmlDb->metadata()->historyMaxSize(), 5242880);
+}
+
+void TestKeePass2Format::testXmlCustomIcons()
+{
+ QCOMPARE(m_xmlDb->metadata()->customIcons().size(), 1);
+ Uuid uuid = Uuid::fromBase64("++vyI+daLk6omox4a6kQGA==");
+ QVERIFY(m_xmlDb->metadata()->customIcons().contains(uuid));
+ QImage icon = m_xmlDb->metadata()->customIcon(uuid);
+ QCOMPARE(icon.width(), 16);
+ QCOMPARE(icon.height(), 16);
+
+ for (int x = 0; x < 16; x++) {
+ for (int y = 0; y < 16; y++) {
+ QRgb rgb = icon.pixel(x, y);
+ QCOMPARE(qRed(rgb), 128);
+ QCOMPARE(qGreen(rgb), 0);
+ QCOMPARE(qBlue(rgb), 128);
+ }
+ }
+}
+
+void TestKeePass2Format::testXmlGroupRoot()
+{
+ const Group* group = m_xmlDb->rootGroup();
+ QVERIFY(group);
+ QCOMPARE(group->uuid().toBase64(), QString("lmU+9n0aeESKZvcEze+bRg=="));
+ QCOMPARE(group->name(), QString("NewDatabase"));
+ QCOMPARE(group->notes(), QString(""));
+ QCOMPARE(group->iconNumber(), 49);
+ QCOMPARE(group->iconUuid(), Uuid());
+ QVERIFY(group->isExpanded());
+ TimeInfo ti = group->timeInfo();
+ QCOMPARE(ti.lastModificationTime(), Test::datetime(2010, 8, 8, 17, 24, 27));
+ QCOMPARE(ti.creationTime(), Test::datetime(2010, 8, 7, 17, 24, 27));
+ QCOMPARE(ti.lastAccessTime(), Test::datetime(2010, 8, 9, 9, 9, 44));
+ QCOMPARE(ti.expiryTime(), Test::datetime(2010, 8, 8, 17, 24, 17));
+ QVERIFY(!ti.expires());
+ QCOMPARE(ti.usageCount(), 52);
+ QCOMPARE(ti.locationChanged(), Test::datetime(2010, 8, 8, 17, 24, 27));
+ QCOMPARE(group->defaultAutoTypeSequence(), QString(""));
+ QCOMPARE(group->autoTypeEnabled(), Group::Inherit);
+ QCOMPARE(group->searchingEnabled(), Group::Inherit);
+ QCOMPARE(group->lastTopVisibleEntry()->uuid().toBase64(), QString("+wSUOv6qf0OzW8/ZHAs2sA=="));
+ QCOMPARE(group->children().size(), 3);
+ QVERIFY(m_xmlDb->metadata()->recycleBin() == m_xmlDb->rootGroup()->children().at(2));
+
+ QCOMPARE(group->entries().size(), 2);
+}
+
+void TestKeePass2Format::testXmlGroup1()
+{
+ const Group* group = m_xmlDb->rootGroup()->children().at(0);
+
+ QCOMPARE(group->uuid().toBase64(), QString("AaUYVdXsI02h4T1RiAlgtg=="));
+ QCOMPARE(group->name(), QString("General"));
+ QCOMPARE(group->notes(), QString("Group Notez"));
+ QCOMPARE(group->iconNumber(), 48);
+ QCOMPARE(group->iconUuid(), Uuid());
+ QCOMPARE(group->isExpanded(), true);
+ QCOMPARE(group->defaultAutoTypeSequence(), QString("{Password}{ENTER}"));
+ QCOMPARE(group->autoTypeEnabled(), Group::Enable);
+ QCOMPARE(group->searchingEnabled(), Group::Disable);
+ QVERIFY(!group->lastTopVisibleEntry());
+}
+
+void TestKeePass2Format::testXmlGroup2()
+{
+ const Group* group = m_xmlDb->rootGroup()->children().at(1);
+
+ QCOMPARE(group->uuid().toBase64(), QString("1h4NtL5DK0yVyvaEnN//4A=="));
+ QCOMPARE(group->name(), QString("Windows"));
+ QCOMPARE(group->isExpanded(), false);
+
+ QCOMPARE(group->children().size(), 1);
+ const Group* child = group->children().first();
+
+ QCOMPARE(child->uuid().toBase64(), QString("HoYE/BjLfUSW257pCHJ/eA=="));
+ QCOMPARE(child->name(), QString("Subsub"));
+ QCOMPARE(child->entries().size(), 1);
+
+ const Entry* entry = child->entries().first();
+ QCOMPARE(entry->uuid().toBase64(), QString("GZpdQvGXOU2kaKRL/IVAGg=="));
+ QCOMPARE(entry->title(), QString("Subsub Entry"));
+}
+
+void TestKeePass2Format::testXmlEntry1()
+{
+ const Entry* entry = m_xmlDb->rootGroup()->entries().at(0);
+
+ QCOMPARE(entry->uuid().toBase64(), QString("+wSUOv6qf0OzW8/ZHAs2sA=="));
+ QCOMPARE(entry->historyItems().size(), 2);
+ QCOMPARE(entry->iconNumber(), 0);
+ QCOMPARE(entry->iconUuid(), Uuid());
+ QVERIFY(!entry->foregroundColor().isValid());
+ QVERIFY(!entry->backgroundColor().isValid());
+ QCOMPARE(entry->overrideUrl(), QString(""));
+ QCOMPARE(entry->tags(), QString("a b c"));
+
+ const TimeInfo ti = entry->timeInfo();
+ QCOMPARE(ti.lastModificationTime(), Test::datetime(2010, 8, 25, 16, 19, 25));
+ QCOMPARE(ti.creationTime(), Test::datetime(2010, 8, 25, 16, 13, 54));
+ QCOMPARE(ti.lastAccessTime(), Test::datetime(2010, 8, 25, 16, 19, 25));
+ QCOMPARE(ti.expiryTime(), Test::datetime(2010, 8, 25, 16, 12, 57));
+ QVERIFY(!ti.expires());
+ QCOMPARE(ti.usageCount(), 8);
+ QCOMPARE(ti.locationChanged(), Test::datetime(2010, 8, 25, 16, 13, 54));
+
+ QList<QString> attrs = entry->attributes()->keys();
+ QCOMPARE(entry->attributes()->value("Notes"), QString("Notes"));
+ QVERIFY(!entry->attributes()->isProtected("Notes"));
+ QVERIFY(attrs.removeOne("Notes"));
+ QCOMPARE(entry->attributes()->value("Password"), QString("Password"));
+ QVERIFY(!entry->attributes()->isProtected("Password"));
+ QVERIFY(attrs.removeOne("Password"));
+ QCOMPARE(entry->attributes()->value("Title"), QString("Sample Entry 1"));
+ QVERIFY(!entry->attributes()->isProtected("Title"));
+ QVERIFY(attrs.removeOne("Title"));
+ QCOMPARE(entry->attributes()->value("URL"), QString(""));
+ QVERIFY(entry->attributes()->isProtected("URL"));
+ QVERIFY(attrs.removeOne("URL"));
+ QCOMPARE(entry->attributes()->value("UserName"), QString("User Name"));
+ QVERIFY(entry->attributes()->isProtected("UserName"));
+ QVERIFY(attrs.removeOne("UserName"));
+ QVERIFY(attrs.isEmpty());
+
+ QCOMPARE(entry->title(), entry->attributes()->value("Title"));
+ QCOMPARE(entry->url(), entry->attributes()->value("URL"));
+ QCOMPARE(entry->username(), entry->attributes()->value("UserName"));
+ QCOMPARE(entry->password(), entry->attributes()->value("Password"));
+ QCOMPARE(entry->notes(), entry->attributes()->value("Notes"));
+
+ QCOMPARE(entry->attachments()->keys().size(), 1);
+ QCOMPARE(entry->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
+ QCOMPARE(entry->historyItems().at(0)->attachments()->keys().size(), 1);
+ QCOMPARE(entry->historyItems().at(0)->attachments()->value("myattach.txt"), QByteArray("0123456789"));
+ QCOMPARE(entry->historyItems().at(1)->attachments()->keys().size(), 1);
+ QCOMPARE(entry->historyItems().at(1)->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
+
+ QCOMPARE(entry->autoTypeEnabled(), false);
+ QCOMPARE(entry->autoTypeObfuscation(), 0);
+ QCOMPARE(entry->defaultAutoTypeSequence(), QString(""));
+ QCOMPARE(entry->autoTypeAssociations()->size(), 1);
+ const AutoTypeAssociations::Association assoc1 = entry->autoTypeAssociations()->get(0);
+ QCOMPARE(assoc1.window, QString("Target Window"));
+ QCOMPARE(assoc1.sequence, QString(""));
+}
+
+void TestKeePass2Format::testXmlEntry2()
+{
+ const Entry* entry = m_xmlDb->rootGroup()->entries().at(1);
+
+ QCOMPARE(entry->uuid().toBase64(), QString("4jbADG37hkiLh2O0qUdaOQ=="));
+ QCOMPARE(entry->iconNumber(), 0);
+ QCOMPARE(entry->iconUuid().toBase64(), QString("++vyI+daLk6omox4a6kQGA=="));
+ // TODO: test entry->icon()
+ QCOMPARE(entry->foregroundColor(), QColor(255, 0, 0));
+ QCOMPARE(entry->backgroundColor(), QColor(255, 255, 0));
+ QCOMPARE(entry->overrideUrl(), QString("http://override.net/"));
+ QCOMPARE(entry->tags(), QString(""));
+
+ const TimeInfo ti = entry->timeInfo();
+ QCOMPARE(ti.usageCount(), 7);
+
+ QList<QString> attrs = entry->attributes()->keys();
+ QCOMPARE(entry->attributes()->value("CustomString"), QString("isavalue"));
+ QVERIFY(attrs.removeOne("CustomString"));
+ QCOMPARE(entry->attributes()->value("Notes"), QString(""));
+ QVERIFY(attrs.removeOne("Notes"));
+ QCOMPARE(entry->attributes()->value("Password"), QString("Jer60Hz8o9XHvxBGcRqT"));
+ QVERIFY(attrs.removeOne("Password"));
+ QCOMPARE(entry->attributes()->value("Protected String"), QString("y")); // TODO: should have a protection attribute
+ QVERIFY(attrs.removeOne("Protected String"));
+ QCOMPARE(entry->attributes()->value("Title"), QString("Sample Entry 2"));
+ QVERIFY(attrs.removeOne("Title"));
+ QCOMPARE(entry->attributes()->value("URL"), QString("http://www.keepassx.org/"));
+ QVERIFY(attrs.removeOne("URL"));
+ QCOMPARE(entry->attributes()->value("UserName"), QString("notDEFUSERNAME"));
+ QVERIFY(attrs.removeOne("UserName"));
+ QVERIFY(attrs.isEmpty());
+
+ QCOMPARE(entry->attachments()->keys().size(), 1);
+ QCOMPARE(QString::fromLatin1(entry->attachments()->value("myattach.txt")), QString("abcdefghijk"));
+
+ QCOMPARE(entry->autoTypeEnabled(), true);
+ QCOMPARE(entry->autoTypeObfuscation(), 1);
+ QCOMPARE(entry->defaultAutoTypeSequence(), QString("{USERNAME}{TAB}{PASSWORD}{ENTER}"));
+ QCOMPARE(entry->autoTypeAssociations()->size(), 2);
+ const AutoTypeAssociations::Association assoc1 = entry->autoTypeAssociations()->get(0);
+ QCOMPARE(assoc1.window, QString("Target Window"));
+ QCOMPARE(assoc1.sequence, QString("{Title}{UserName}"));
+ const AutoTypeAssociations::Association assoc2 = entry->autoTypeAssociations()->get(1);
+ QCOMPARE(assoc2.window, QString("Target Window 2"));
+ QCOMPARE(assoc2.sequence, QString("{Title}{UserName} test"));
+}
+
+void TestKeePass2Format::testXmlEntryHistory()
+{
+ const Entry* entryMain = m_xmlDb->rootGroup()->entries().at(0);
+ QCOMPARE(entryMain->historyItems().size(), 2);
+
+ {
+ const Entry* entry = entryMain->historyItems().at(0);
+ QCOMPARE(entry->uuid(), entryMain->uuid());
+ QVERIFY(!entry->parent());
+ QCOMPARE(entry->timeInfo().lastModificationTime(), Test::datetime(2010, 8, 25, 16, 13, 54));
+ QCOMPARE(entry->timeInfo().usageCount(), 3);
+ QCOMPARE(entry->title(), QString("Sample Entry"));
+ QCOMPARE(entry->url(), QString("http://www.somesite.com/"));
+ }
+
+ {
+ const Entry* entry = entryMain->historyItems().at(1);
+ QCOMPARE(entry->uuid(), entryMain->uuid());
+ QVERIFY(!entry->parent());
+ QCOMPARE(entry->timeInfo().lastModificationTime(), Test::datetime(2010, 8, 25, 16, 15, 43));
+ QCOMPARE(entry->timeInfo().usageCount(), 7);
+ QCOMPARE(entry->title(), QString("Sample Entry 1"));
+ QCOMPARE(entry->url(), QString("http://www.somesite.com/"));
+ }
+}
+
+void TestKeePass2Format::testXmlDeletedObjects()
+{
+ QList<DeletedObject> objList = m_xmlDb->deletedObjects();
+ DeletedObject delObj;
+
+ delObj = objList.takeFirst();
+ QCOMPARE(delObj.uuid.toBase64(), QString("5K/bzWCSmkCv5OZxYl4N/w=="));
+ QCOMPARE(delObj.deletionTime, Test::datetime(2010, 8, 25, 16, 14, 12));
+
+ delObj = objList.takeFirst();
+ QCOMPARE(delObj.uuid.toBase64(), QString("80h8uSNWgkKhKCp1TgXF7g=="));
+ QCOMPARE(delObj.deletionTime, Test::datetime(2010, 8, 25, 16, 14, 14));
+
+ QVERIFY(objList.isEmpty());
+}
+
+void TestKeePass2Format::testXmlBroken()
+{
+ QFETCH(QString, baseName);
+ QFETCH(bool, strictMode);
+ QFETCH(bool, expectError);
+
+ QString xmlFile = QString("%1/%2.xml").arg(KEEPASSX_TEST_DATA_DIR, baseName);
+ QVERIFY(QFile::exists(xmlFile));
+ bool hasError;
+ QString errorString;
+ QScopedPointer<Database> db(readXml(xmlFile, strictMode, hasError, errorString));
+ if (hasError) {
+ qWarning("Reader error: %s", qPrintable(errorString));
+ }
+ QCOMPARE(hasError, expectError);
+}
+
+void TestKeePass2Format::testXmlBroken_data()
+{
+ QTest::addColumn<QString>("baseName");
+ QTest::addColumn<bool>("strictMode");
+ QTest::addColumn<bool>("expectError");
+
+ // testfile strict? error?
+ QTest::newRow("BrokenNoGroupUuid (strict)") << "BrokenNoGroupUuid" << true << true;
+ QTest::newRow("BrokenNoGroupUuid (not strict)") << "BrokenNoGroupUuid" << false << false;
+ QTest::newRow("BrokenNoEntryUuid (strict)") << "BrokenNoEntryUuid" << true << true;
+ QTest::newRow("BrokenNoEntryUuid (not strict)") << "BrokenNoEntryUuid" << false << false;
+ QTest::newRow("BrokenNoRootGroup (strict)") << "BrokenNoRootGroup" << true << true;
+ QTest::newRow("BrokenNoRootGroup (not strict)") << "BrokenNoRootGroup" << false << true;
+ QTest::newRow("BrokenTwoRoots (strict)") << "BrokenTwoRoots" << true << true;
+ QTest::newRow("BrokenTwoRoots (not strict)") << "BrokenTwoRoots" << false << true;
+ QTest::newRow("BrokenTwoRootGroups (strict)") << "BrokenTwoRootGroups" << true << true;
+ QTest::newRow("BrokenTwoRootGroups (not strict)") << "BrokenTwoRootGroups" << false << true;
+ QTest::newRow("BrokenGroupReference (strict)") << "BrokenGroupReference" << true << false;
+ QTest::newRow("BrokenGroupReference (not strict)") << "BrokenGroupReference" << false << false;
+ QTest::newRow("BrokenDeletedObjects (strict)") << "BrokenDeletedObjects" << true << true;
+ QTest::newRow("BrokenDeletedObjects (not strict)") << "BrokenDeletedObjects" << false << false;
+ QTest::newRow("BrokenDifferentEntryHistoryUuid (strict)") << "BrokenDifferentEntryHistoryUuid" << true << true;
+ QTest::newRow("BrokenDifferentEntryHistoryUuid (not strict)") << "BrokenDifferentEntryHistoryUuid" << false << false;
+}
+
+void TestKeePass2Format::testXmlEmptyUuids()
+{
+
+ QString xmlFile = QString("%1/%2.xml").arg(KEEPASSX_TEST_DATA_DIR, "EmptyUuids");
+ QVERIFY(QFile::exists(xmlFile));
+ bool hasError;
+ QString errorString;
+ QScopedPointer<Database> dbp(readXml(xmlFile, true, hasError, errorString));
+ if (hasError) {
+ qWarning("Reader error: %s", qPrintable(errorString));
+ }
+ QVERIFY(!hasError);
+}
+
+void TestKeePass2Format::testXmlInvalidXmlChars()
+{
+ QScopedPointer<Database> dbWrite(new Database());
+
+ QString strPlainInvalid = QString().append(QChar(0x02)).append(QChar(0x19))
+ .append(QChar(0xFFFE)).append(QChar(0xFFFF));
+ QString strPlainValid = QString().append(QChar(0x09)).append(QChar(0x0A))
+ .append(QChar(0x20)).append(QChar(0xD7FF))
+ .append(QChar(0xE000)).append(QChar(0xFFFD));
+ // U+10437 in UTF-16: D801 DC37
+ // high low surrogate
+ QString strSingleHighSurrogate1 = QString().append(QChar(0xD801));
+ QString strSingleHighSurrogate2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0x32));
+ QString strHighHighSurrogate = QString().append(QChar(0xD801)).append(QChar(0xD801));
+ QString strSingleLowSurrogate1 = QString().append(QChar(0xDC37));
+ QString strSingleLowSurrogate2 = QString().append(QChar((0x31))).append(QChar(0xDC37)).append(QChar(0x32));
+ QString strLowLowSurrogate = QString().append(QChar(0xDC37)).append(QChar(0xDC37));
+ QString strSurrogateValid1 = QString().append(QChar(0xD801)).append(QChar(0xDC37));
+ QString strSurrogateValid2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0xDC37))
+ .append(QChar(0x32));
+
+ auto entry = new Entry();
+ entry->setUuid(Uuid::random());
+ entry->setGroup(dbWrite->rootGroup());
+ entry->attributes()->set("PlainInvalid", strPlainInvalid);
+ entry->attributes()->set("PlainValid", strPlainValid);
+ entry->attributes()->set("SingleHighSurrogate1", strSingleHighSurrogate1);
+ entry->attributes()->set("SingleHighSurrogate2", strSingleHighSurrogate2);
+ entry->attributes()->set("HighHighSurrogate", strHighHighSurrogate);
+ entry->attributes()->set("SingleLowSurrogate1", strSingleLowSurrogate1);
+ entry->attributes()->set("SingleLowSurrogate2", strSingleLowSurrogate2);
+ entry->attributes()->set("LowLowSurrogate", strLowLowSurrogate);
+ entry->attributes()->set("SurrogateValid1", strSurrogateValid1);
+ entry->attributes()->set("SurrogateValid2", strSurrogateValid2);
+
+ QBuffer buffer;
+ buffer.open(QIODevice::ReadWrite);
+ bool hasError;
+ QString errorString;
+ writeXml(&buffer, dbWrite.data(), hasError, errorString);
+ QVERIFY(!hasError);
+ buffer.seek(0);
+
+ QScopedPointer<Database> dbRead(readXml(&buffer, true, hasError, errorString));
+ if (hasError) {
+ qWarning("Database read error: %s", qPrintable(errorString));
+ }
+ QVERIFY(!hasError);
+ QVERIFY(dbRead.data());
+ QCOMPARE(dbRead->rootGroup()->entries().size(), 1);
+ Entry* entryRead = dbRead->rootGroup()->entries().at(0);
+ EntryAttributes* attrRead = entryRead->attributes();
+
+ QCOMPARE(attrRead->value("PlainInvalid"), QString());
+ QCOMPARE(attrRead->value("PlainValid"), strPlainValid);
+ QCOMPARE(attrRead->value("SingleHighSurrogate1"), QString());
+ QCOMPARE(attrRead->value("SingleHighSurrogate2"), QString("12"));
+ QCOMPARE(attrRead->value("HighHighSurrogate"), QString());
+ QCOMPARE(attrRead->value("SingleLowSurrogate1"), QString());
+ QCOMPARE(attrRead->value("SingleLowSurrogate2"), QString("12"));
+ QCOMPARE(attrRead->value("LowLowSurrogate"), QString());
+ QCOMPARE(attrRead->value("SurrogateValid1"), strSurrogateValid1);
+ QCOMPARE(attrRead->value("SurrogateValid2"), strSurrogateValid2);
+}
+
+void TestKeePass2Format::testXmlRepairUuidHistoryItem()
+{
+ QString xmlFile = QString("%1/%2.xml").arg(KEEPASSX_TEST_DATA_DIR, "BrokenDifferentEntryHistoryUuid");
+ QVERIFY(QFile::exists(xmlFile));
+ bool hasError;
+ QString errorString;
+ QScopedPointer<Database> db(readXml(xmlFile, false, hasError, errorString));
+ if (hasError) {
+ qWarning("Database read error: %s", qPrintable(errorString));
+ }
+ QVERIFY(!hasError);
+
+ QList<Entry*> entries = db->rootGroup()->entries();
+ QCOMPARE(entries.size(), 1);
+ Entry* entry = entries.at(0);
+
+ QList<Entry*> historyItems = entry->historyItems();
+ QCOMPARE(historyItems.size(), 1);
+ Entry* historyItem = historyItems.at(0);
+
+ QVERIFY(!entry->uuid().isNull());
+ QVERIFY(!historyItem->uuid().isNull());
+ QCOMPARE(historyItem->uuid(), entry->uuid());
+}
+
+void TestKeePass2Format::testReadBackTargetDb()
+{
+ // read back previously constructed KDBX
+ CompositeKey key;
+ key.addKey(PasswordKey("test"));
+
+ bool hasError;
+ QString errorString;
+
+ m_kdbxTargetBuffer.seek(0);
+ readKdbx(&m_kdbxTargetBuffer, key, m_kdbxTargetDb, hasError, errorString);
+ if (hasError) {
+ QFAIL(qPrintable(QString("Error while reading database: ").append(errorString)));
+ }
+ QVERIFY(m_kdbxTargetDb.data());
+}
+
+void TestKeePass2Format::testKdbxBasic()
+{
+ QCOMPARE(m_kdbxTargetDb->metadata()->name(), m_kdbxSourceDb->metadata()->name());
+ QVERIFY(m_kdbxTargetDb->rootGroup());
+ QCOMPARE(m_kdbxTargetDb->rootGroup()->children()[0]->name(), m_kdbxSourceDb->rootGroup()->children()[0]->name());
+ QCOMPARE(m_kdbxTargetDb->rootGroup()->notes(), m_kdbxSourceDb->rootGroup()->notes());
+ QCOMPARE(m_kdbxTargetDb->rootGroup()->children()[0]->notes(), m_kdbxSourceDb->rootGroup()->children()[0]->notes());
+}
+
+void TestKeePass2Format::testKdbxProtectedAttributes()
+{
+ QCOMPARE(m_kdbxTargetDb->rootGroup()->entries().size(), 1);
+ Entry* entry = m_kdbxTargetDb->rootGroup()->entries().at(0);
+ QCOMPARE(entry->attributes()->value("test"), QString("protectedTest"));
+ QCOMPARE(entry->attributes()->isProtected("test"), true);
+}
+
+void TestKeePass2Format::testKdbxAttachments()
+{
+ Entry* entry = m_kdbxTargetDb->rootGroup()->entries().at(0);
+ QCOMPARE(entry->attachments()->keys().size(), 2);
+ QCOMPARE(entry->attachments()->value("myattach.txt"), QByteArray("this is an attachment"));
+ QCOMPARE(entry->attachments()->value("aaa.txt"), QByteArray("also an attachment"));
+}
+
+void TestKeePass2Format::testKdbxNonAsciiPasswords()
+{
+ QCOMPARE(m_kdbxTargetDb->rootGroup()->entries()[0]->password(), m_kdbxSourceDb->rootGroup()->entries()[0]->password());
+}
+
+void TestKeePass2Format::testKdbxDeviceFailure()
+{
+ CompositeKey key;
+ key.addKey(PasswordKey("test"));
+ QScopedPointer<Database> db(new Database());
+ db->setKey(key);
+ // Disable compression so we write a predictable number of bytes.
+ db->setCompressionAlgo(Database::CompressionNone);
+
+ auto entry = new Entry();
+ entry->setParent(db->rootGroup());
+ QByteArray attachment(4096, 'Z');
+ entry->attachments()->set("test", attachment);
+
+ FailDevice failDevice(512);
+ QVERIFY(failDevice.open(QIODevice::WriteOnly));
+ bool hasError;
+ QString errorString;
+ writeKdbx(&failDevice, db.data(), hasError, errorString);
+ QVERIFY(hasError);
+ QCOMPARE(errorString, QString("FAILDEVICE"));
+}
+
+/**
+ * Test for catching mapping errors with duplicate attachments.
+ */
+void TestKeePass2Format::testDuplicateAttachments()
+{
+ QScopedPointer<Database> db(new Database());
+ db->setKey(CompositeKey());
+
+ const QByteArray attachment1("abc");
+ const QByteArray attachment2("def");
+ const QByteArray attachment3("ghi");
+
+ auto entry1 = new Entry();
+ entry1->setGroup(db->rootGroup());
+ entry1->setUuid(Uuid("aaaaaaaaaaaaaaaa"));
+ entry1->attachments()->set("a", attachment1);
+
+ auto entry2 = new Entry();
+ entry2->setGroup(db->rootGroup());
+ entry2->setUuid(Uuid("bbbbbbbbbbbbbbbb"));
+ entry2->attachments()->set("b1", attachment1);
+ entry2->beginUpdate();
+ entry2->attachments()->set("b2", attachment1);
+ entry2->endUpdate();
+ entry2->beginUpdate();
+ entry2->attachments()->set("b3", attachment2);
+ entry2->endUpdate();
+ entry2->beginUpdate();
+ entry2->attachments()->set("b4", attachment2);
+ entry2->endUpdate();
+
+ auto entry3 = new Entry();
+ entry3->setGroup(db->rootGroup());
+ entry3->setUuid(Uuid("cccccccccccccccc"));
+ entry3->attachments()->set("c1", attachment2);
+ entry3->attachments()->set("c2", attachment2);
+ entry3->attachments()->set("c3", attachment3);
+
+ QBuffer buffer;
+ buffer.open(QBuffer::ReadWrite);
+
+ bool hasError = false;
+ QString errorString;
+ writeKdbx(&buffer, db.data(), hasError, errorString);
+ if (hasError) {
+ QFAIL(qPrintable(QString("Error while writing database: %1").arg(errorString)));
+ }
+
+ buffer.seek(0);
+ readKdbx(&buffer, CompositeKey(), db, hasError, errorString);
+ if (hasError) {
+ QFAIL(qPrintable(QString("Error while reading database: %1").arg(errorString)));
+ }
+
+ QCOMPARE(db->rootGroup()->entries()[0]->attachments()->value("a"), attachment1);
+
+ QCOMPARE(db->rootGroup()->entries()[1]->attachments()->value("b1"), attachment1);
+ QCOMPARE(db->rootGroup()->entries()[1]->attachments()->value("b2"), attachment1);
+ QCOMPARE(db->rootGroup()->entries()[1]->attachments()->value("b3"), attachment2);
+ QCOMPARE(db->rootGroup()->entries()[1]->attachments()->value("b4"), attachment2);
+ QCOMPARE(db->rootGroup()->entries()[1]->historyItems()[0]->attachments()->value("b1"), attachment1);
+ QCOMPARE(db->rootGroup()->entries()[1]->historyItems()[1]->attachments()->value("b1"), attachment1);
+ QCOMPARE(db->rootGroup()->entries()[1]->historyItems()[1]->attachments()->value("b2"), attachment1);
+ QCOMPARE(db->rootGroup()->entries()[1]->historyItems()[2]->attachments()->value("b1"), attachment1);
+ QCOMPARE(db->rootGroup()->entries()[1]->historyItems()[2]->attachments()->value("b2"), attachment1);
+ QCOMPARE(db->rootGroup()->entries()[1]->historyItems()[2]->attachments()->value("b3"), attachment2);
+
+ QCOMPARE(db->rootGroup()->entries()[2]->attachments()->value("c1"), attachment2);
+ QCOMPARE(db->rootGroup()->entries()[2]->attachments()->value("c2"), attachment2);
+ QCOMPARE(db->rootGroup()->entries()[2]->attachments()->value("c3"), attachment3);
+}
diff --git a/tests/TestKeePass2Format.h b/tests/TestKeePass2Format.h
new file mode 100644
index 000000000..13426cb9c
--- /dev/null
+++ b/tests/TestKeePass2Format.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSXC_TESTKEEPASS2FORMAT_H
+#define KEEPASSXC_TESTKEEPASS2FORMAT_H
+
+#include <QDateTime>
+#include <QObject>
+#include <QBuffer>
+#include <QScopedPointer>
+
+#include "core/Database.h"
+
+/**
+ * Abstract base class for KeePass2 file format tests.
+ */
+class TestKeePass2Format : public QObject
+{
+Q_OBJECT
+
+private slots:
+ void initTestCase();
+
+ /**
+ * XML Reader / writer tests.
+ */
+ void testXmlMetadata();
+ void testXmlCustomIcons();
+ void testXmlGroupRoot();
+ void testXmlGroup1();
+ void testXmlGroup2();
+ void testXmlEntry1();
+ void testXmlEntry2();
+ void testXmlEntryHistory();
+ void testXmlDeletedObjects();
+ void testXmlBroken();
+ void testXmlBroken_data();
+ void testXmlEmptyUuids();
+ void testXmlInvalidXmlChars();
+ void testXmlRepairUuidHistoryItem();
+
+ /**
+ * KDBX binary format tests.
+ */
+ void testReadBackTargetDb();
+ void testKdbxBasic();
+ void testKdbxProtectedAttributes();
+ void testKdbxAttachments();
+ void testKdbxNonAsciiPasswords();
+ void testKdbxDeviceFailure();
+ void testDuplicateAttachments();
+
+protected:
+ virtual void initTestCaseImpl() = 0;
+
+ virtual Database* readXml(QBuffer* buf, bool strictMode, bool& hasError, QString& errorString) = 0;
+ virtual Database* readXml(const QString& path, bool strictMode, bool& hasError, QString& errorString) = 0;
+ virtual void writeXml(QBuffer* buf, Database* db, bool& hasError, QString& errorString) = 0;
+
+ virtual void readKdbx(QIODevice* device, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) = 0;
+ virtual void readKdbx(const QString& path, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) = 0;
+ virtual void writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) = 0;
+
+ QScopedPointer<Database> m_xmlDb;
+ QScopedPointer<Database> m_kdbxSourceDb;
+ QScopedPointer<Database> m_kdbxTargetDb;
+
+private:
+ QBuffer m_kdbxTargetBuffer;
+};
+
+#endif // KEEPASSXC_TESTKEEPASS2FORMAT_H
diff --git a/tests/TestKeePass2RandomStream.cpp b/tests/TestKeePass2RandomStream.cpp
index 03dfbe507..edb95b6c6 100644
--- a/tests/TestKeePass2RandomStream.cpp
+++ b/tests/TestKeePass2RandomStream.cpp
@@ -16,13 +16,11 @@
*/
#include "TestKeePass2RandomStream.h"
-
-#include <QTest>
+#include "TestGlobal.h"
#include "crypto/Crypto.h"
#include "crypto/CryptoHash.h"
#include "crypto/SymmetricCipher.h"
-#include "format/KeePass2.h"
#include "format/KeePass2RandomStream.h"
QTEST_GUILESS_MAIN(TestKeePass2RandomStream)
@@ -58,7 +56,7 @@ void TestKeePass2RandomStream::test()
}
- KeePass2RandomStream randomStream;
+ KeePass2RandomStream randomStream(KeePass2::ProtectedStreamAlgo::Salsa20);
bool ok;
QVERIFY(randomStream.init(key));
QByteArray randomStreamData;
diff --git a/tests/TestKeePass2Reader.cpp b/tests/TestKeePass2Reader.cpp
deleted file mode 100644
index 22973ee00..000000000
--- a/tests/TestKeePass2Reader.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "TestKeePass2Reader.h"
-
-#include <QTest>
-
-#include "config-keepassx-tests.h"
-#include "core/Database.h"
-#include "core/Group.h"
-#include "core/Metadata.h"
-#include "crypto/Crypto.h"
-#include "format/KeePass2Reader.h"
-#include "keys/PasswordKey.h"
-
-QTEST_GUILESS_MAIN(TestKeePass2Reader)
-
-void TestKeePass2Reader::initTestCase()
-{
- QVERIFY(Crypto::init());
-}
-
-void TestKeePass2Reader::testNonAscii()
-{
- QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/NonAscii.kdbx");
- CompositeKey key;
- key.addKey(PasswordKey(QString::fromUtf8("\xce\x94\xc3\xb6\xd8\xb6")));
- KeePass2Reader reader;
- Database* db = reader.readDatabase(filename, key);
- QVERIFY(db);
- QVERIFY(!reader.hasError());
- QCOMPARE(db->metadata()->name(), QString("NonAsciiTest"));
- QCOMPARE(db->compressionAlgo(), Database::CompressionNone);
-
- delete db;
-}
-
-void TestKeePass2Reader::testCompressed()
-{
- QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Compressed.kdbx");
- CompositeKey key;
- key.addKey(PasswordKey(""));
- KeePass2Reader reader;
- Database* db = reader.readDatabase(filename, key);
- QVERIFY(db);
- QVERIFY(!reader.hasError());
- QCOMPARE(db->metadata()->name(), QString("Compressed"));
- QCOMPARE(db->compressionAlgo(), Database::CompressionGZip);
-
- delete db;
-}
-
-void TestKeePass2Reader::testProtectedStrings()
-{
- QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/ProtectedStrings.kdbx");
- CompositeKey key;
- key.addKey(PasswordKey("masterpw"));
- KeePass2Reader reader;
- Database* db = reader.readDatabase(filename, key);
- QVERIFY(db);
- QVERIFY(!reader.hasError());
- QCOMPARE(db->metadata()->name(), QString("Protected Strings Test"));
-
- Entry* entry = db->rootGroup()->entries().at(0);
-
- QCOMPARE(entry->title(), QString("Sample Entry"));
- QCOMPARE(entry->username(), QString("Protected User Name"));
- QCOMPARE(entry->password(), QString("ProtectedPassword"));
- QCOMPARE(entry->attributes()->value("TestProtected"), QString("ABC"));
- QCOMPARE(entry->attributes()->value("TestUnprotected"), QString("DEF"));
-
- QVERIFY(db->metadata()->protectPassword());
- QVERIFY(entry->attributes()->isProtected("TestProtected"));
- QVERIFY(!entry->attributes()->isProtected("TestUnprotected"));
-
- delete db;
-}
-
-void TestKeePass2Reader::testBrokenHeaderHash()
-{
- // The protected stream key has been modified in the header.
- // Make sure the database won't open.
-
- QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/BrokenHeaderHash.kdbx");
- CompositeKey key;
- key.addKey(PasswordKey(""));
- KeePass2Reader reader;
- Database* db = reader.readDatabase(filename, key);
- QVERIFY(!db);
- QVERIFY(reader.hasError());
-
- delete db;
-}
-
-void TestKeePass2Reader::testFormat200()
-{
- QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Format200.kdbx");
- CompositeKey key;
- key.addKey(PasswordKey("a"));
- KeePass2Reader reader;
- Database* db = reader.readDatabase(filename, key);
- QVERIFY(db);
- QVERIFY(!reader.hasError());
-
- QCOMPARE(db->rootGroup()->name(), QString("Format200"));
- QVERIFY(!db->metadata()->protectTitle());
- QVERIFY(db->metadata()->protectUsername());
- QVERIFY(!db->metadata()->protectPassword());
- QVERIFY(db->metadata()->protectUrl());
- QVERIFY(!db->metadata()->protectNotes());
-
- QCOMPARE(db->rootGroup()->entries().size(), 1);
- Entry* entry = db->rootGroup()->entries().at(0);
-
- QCOMPARE(entry->title(), QString("Sample Entry"));
- QCOMPARE(entry->username(), QString("User Name"));
- QCOMPARE(entry->attachments()->keys().size(), 2);
- QCOMPARE(entry->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
- QCOMPARE(entry->attachments()->value("test.txt"), QByteArray("this is a test"));
-
- QCOMPARE(entry->historyItems().size(), 2);
- QCOMPARE(entry->historyItems().at(0)->attachments()->keys().size(), 0);
- QCOMPARE(entry->historyItems().at(1)->attachments()->keys().size(), 1);
- QCOMPARE(entry->historyItems().at(1)->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
-
- delete db;
-}
-
-void TestKeePass2Reader::testFormat300()
-{
- QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/Format300.kdbx");
- CompositeKey key;
- key.addKey(PasswordKey("a"));
- KeePass2Reader reader;
- Database* db = reader.readDatabase(filename, key);
- QVERIFY(db);
- QVERIFY(!reader.hasError());
-
- QCOMPARE(db->rootGroup()->name(), QString("Format300"));
- QCOMPARE(db->metadata()->name(), QString("Test Database Format 0x00030000"));
-
- delete db;
-}
diff --git a/tests/TestKeePass2Writer.cpp b/tests/TestKeePass2Writer.cpp
deleted file mode 100644
index f6d3f58ad..000000000
--- a/tests/TestKeePass2Writer.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "TestKeePass2Writer.h"
-
-#include <QBuffer>
-#include <QFile>
-#include <QTest>
-
-#include "config-keepassx-tests.h"
-#include "FailDevice.h"
-#include "core/Database.h"
-#include "core/Group.h"
-#include "core/Metadata.h"
-#include "crypto/Crypto.h"
-#include "format/KeePass2Reader.h"
-#include "format/KeePass2Repair.h"
-#include "format/KeePass2Writer.h"
-#include "format/KeePass2XmlWriter.h"
-#include "keys/PasswordKey.h"
-
-QTEST_GUILESS_MAIN(TestKeePass2Writer)
-
-void TestKeePass2Writer::initTestCase()
-{
- QVERIFY(Crypto::init());
-
- CompositeKey key;
- key.addKey(PasswordKey("test"));
-
- m_dbOrg = new Database();
- m_dbOrg->setKey(key);
- m_dbOrg->metadata()->setName("TESTDB");
- Group* group = m_dbOrg->rootGroup();
- group->setUuid(Uuid::random());
- group->setNotes("I'm a note!");
- Entry* entry = new Entry();
- entry->setPassword(QString::fromUtf8("\xc3\xa4\xa3\xb6\xc3\xbc\xe9\x9b\xbb\xe7\xb4\x85"));
- entry->setUuid(Uuid::random());
- entry->attributes()->set("test", "protectedTest", true);
- QVERIFY(entry->attributes()->isProtected("test"));
- entry->attachments()->set("myattach.txt", QByteArray("this is an attachment"));
- entry->attachments()->set("aaa.txt", QByteArray("also an attachment"));
- entry->setGroup(group);
- Group* groupNew = new Group();
- groupNew->setUuid(Uuid::random());
- groupNew->setName("TESTGROUP");
- groupNew->setNotes("I'm a sub group note!");
- groupNew->setParent(group);
-
- QBuffer buffer;
- buffer.open(QBuffer::ReadWrite);
-
- KeePass2Writer writer;
- writer.writeDatabase(&buffer, m_dbOrg);
- QVERIFY(!writer.hasError());
- buffer.seek(0);
- KeePass2Reader reader;
- m_dbTest = reader.readDatabase(&buffer, key);
- QVERIFY(!reader.hasError());
- QVERIFY(m_dbTest);
-}
-
-void TestKeePass2Writer::testBasic()
-{
- QCOMPARE(m_dbTest->metadata()->name(), m_dbOrg->metadata()->name());
- QVERIFY(m_dbTest->rootGroup());
- QCOMPARE(m_dbTest->rootGroup()->children()[0]->name(), m_dbOrg->rootGroup()->children()[0]->name());
- QCOMPARE(m_dbTest->rootGroup()->notes(), m_dbOrg->rootGroup()->notes());
- QCOMPARE(m_dbTest->rootGroup()->children()[0]->notes(), m_dbOrg->rootGroup()->children()[0]->notes());
-}
-
-void TestKeePass2Writer::testProtectedAttributes()
-{
- QCOMPARE(m_dbTest->rootGroup()->entries().size(), 1);
- Entry* entry = m_dbTest->rootGroup()->entries().at(0);
- QCOMPARE(entry->attributes()->value("test"), QString("protectedTest"));
- QCOMPARE(entry->attributes()->isProtected("test"), true);
-}
-
-void TestKeePass2Writer::testAttachments()
-{
- Entry* entry = m_dbTest->rootGroup()->entries().at(0);
- QCOMPARE(entry->attachments()->keys().size(), 2);
- QCOMPARE(entry->attachments()->value("myattach.txt"), QByteArray("this is an attachment"));
- QCOMPARE(entry->attachments()->value("aaa.txt"), QByteArray("also an attachment"));
-}
-
-void TestKeePass2Writer::testNonAsciiPasswords()
-{
- QCOMPARE(m_dbTest->rootGroup()->entries()[0]->password(), m_dbOrg->rootGroup()->entries()[0]->password());
-}
-
-void TestKeePass2Writer::testDeviceFailure()
-{
- CompositeKey key;
- key.addKey(PasswordKey("test"));
- Database* db = new Database();
- db->setKey(key);
- // Disable compression so we write a predictable number of bytes.
- db->setCompressionAlgo(Database::CompressionNone);
-
- Entry* entry = new Entry();
- entry->setParent(db->rootGroup());
- QByteArray attachment(4096, 'Z');
- entry->attachments()->set("test", attachment);
-
- FailDevice failDevice(512);
- QVERIFY(failDevice.open(QIODevice::WriteOnly));
- KeePass2Writer writer;
- writer.writeDatabase(&failDevice, db);
- QVERIFY(writer.hasError());
- QCOMPARE(writer.errorString(), QString("FAILDEVICE"));
-
- delete db;
-}
-
-void TestKeePass2Writer::testRepair()
-{
- QString brokenDbFilename = QString(KEEPASSX_TEST_DATA_DIR).append("/bug392.kdbx");
- // master password = test
- // entry username: testuser\x10\x20AC
- // entry password: testpw
- CompositeKey key;
- key.addKey(PasswordKey("test"));
-
- // test that we can't open the broken database
- KeePass2Reader reader;
- Database* dbBroken = reader.readDatabase(brokenDbFilename, key);
- QVERIFY(!dbBroken);
- QVERIFY(reader.hasError());
-
- // test if we can repair the database
- KeePass2Repair repair;
- QFile file(brokenDbFilename);
- file.open(QIODevice::ReadOnly);
- auto result = repair.repairDatabase(&file, key);
- QCOMPARE(result.first, KeePass2Repair::RepairSuccess);
- Database* dbRepaired = result.second;
- QVERIFY(dbRepaired);
-
- QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1);
- QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(QChar(0x20AC)));
- QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw"));
- delete dbRepaired;
-}
-
-void TestKeePass2Writer::cleanupTestCase()
-{
- delete m_dbOrg;
- delete m_dbTest;
-}
diff --git a/tests/TestKeePass2XmlReader.cpp b/tests/TestKeePass2XmlReader.cpp
deleted file mode 100644
index 495b39acf..000000000
--- a/tests/TestKeePass2XmlReader.cpp
+++ /dev/null
@@ -1,520 +0,0 @@
-/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "TestKeePass2XmlReader.h"
-
-#include <QBuffer>
-#include <QFile>
-#include <QTest>
-
-#include "core/Database.h"
-#include "core/Group.h"
-#include "core/Metadata.h"
-#include "crypto/Crypto.h"
-#include "format/KeePass2XmlReader.h"
-#include "format/KeePass2XmlWriter.h"
-#include "config-keepassx-tests.h"
-
-QTEST_GUILESS_MAIN(TestKeePass2XmlReader)
-
-namespace QTest {
- template<>
- char* toString(const Uuid& uuid)
- {
- QByteArray ba = "Uuid(";
- ba += uuid.toBase64().toLatin1().constData();
- ba += ")";
- return qstrdup(ba.constData());
- }
-
- template<>
- char* toString(const Group::TriState& triState)
- {
- QString value;
-
- if (triState == Group::Inherit) {
- value = "null";
- }
- else if (triState == Group::Enable) {
- value = "true";
- }
- else {
- value = "false";
- }
-
- return qstrdup(value.toLocal8Bit().constData());
- }
-}
-
-QDateTime TestKeePass2XmlReader::genDT(int year, int month, int day, int hour, int min, int second)
-{
- QDate date(year, month, day);
- QTime time(hour, min, second);
- return QDateTime(date, time, Qt::UTC);
-}
-
-QByteArray TestKeePass2XmlReader::strToBytes(const QString& str)
-{
- QByteArray result;
-
- for (int i = 0; i < str.size(); i++) {
- result.append(str.at(i).unicode() >> 8);
- result.append(str.at(i).unicode() & 0xFF);
- }
-
- return result;
-}
-
-void TestKeePass2XmlReader::initTestCase()
-{
- QVERIFY(Crypto::init());
-
- KeePass2XmlReader reader;
- reader.setStrictMode(true);
- QString xmlFile = QString(KEEPASSX_TEST_DATA_DIR).append("/NewDatabase.xml");
- m_db = reader.readDatabase(xmlFile);
- QVERIFY(m_db);
- QVERIFY(!reader.hasError());
-}
-
-void TestKeePass2XmlReader::testMetadata()
-{
- QCOMPARE(m_db->metadata()->generator(), QString("KeePass"));
- QCOMPARE(m_db->metadata()->name(), QString("ANAME"));
- QCOMPARE(m_db->metadata()->nameChanged(), genDT(2010, 8, 8, 17, 24, 53));
- QCOMPARE(m_db->metadata()->description(), QString("ADESC"));
- QCOMPARE(m_db->metadata()->descriptionChanged(), genDT(2010, 8, 8, 17, 27, 12));
- QCOMPARE(m_db->metadata()->defaultUserName(), QString("DEFUSERNAME"));
- QCOMPARE(m_db->metadata()->defaultUserNameChanged(), genDT(2010, 8, 8, 17, 27, 45));
- QCOMPARE(m_db->metadata()->maintenanceHistoryDays(), 127);
- QCOMPARE(m_db->metadata()->color(), QColor(0xff, 0xef, 0x00));
- QCOMPARE(m_db->metadata()->masterKeyChanged(), genDT(2012, 4, 5, 17, 9, 34));
- QCOMPARE(m_db->metadata()->masterKeyChangeRec(), 101);
- QCOMPARE(m_db->metadata()->masterKeyChangeForce(), -1);
- QCOMPARE(m_db->metadata()->protectTitle(), false);
- QCOMPARE(m_db->metadata()->protectUsername(), true);
- QCOMPARE(m_db->metadata()->protectPassword(), false);
- QCOMPARE(m_db->metadata()->protectUrl(), true);
- QCOMPARE(m_db->metadata()->protectNotes(), false);
- QCOMPARE(m_db->metadata()->recycleBinEnabled(), true);
- QVERIFY(m_db->metadata()->recycleBin() != nullptr);
- QCOMPARE(m_db->metadata()->recycleBin()->name(), QString("Recycle Bin"));
- QCOMPARE(m_db->metadata()->recycleBinChanged(), genDT(2010, 8, 25, 16, 12, 57));
- QVERIFY(m_db->metadata()->entryTemplatesGroup() == nullptr);
- QCOMPARE(m_db->metadata()->entryTemplatesGroupChanged(), genDT(2010, 8, 8, 17, 24, 19));
- QVERIFY(m_db->metadata()->lastSelectedGroup() != nullptr);
- QCOMPARE(m_db->metadata()->lastSelectedGroup()->name(), QString("NewDatabase"));
- QVERIFY(m_db->metadata()->lastTopVisibleGroup() == m_db->metadata()->lastSelectedGroup());
- QCOMPARE(m_db->metadata()->historyMaxItems(), -1);
- QCOMPARE(m_db->metadata()->historyMaxSize(), 5242880);
-}
-
-void TestKeePass2XmlReader::testCustomIcons()
-{
- QCOMPARE(m_db->metadata()->customIcons().size(), 1);
- Uuid uuid = Uuid::fromBase64("++vyI+daLk6omox4a6kQGA==");
- QVERIFY(m_db->metadata()->customIcons().contains(uuid));
- QImage icon = m_db->metadata()->customIcon(uuid);
- QCOMPARE(icon.width(), 16);
- QCOMPARE(icon.height(), 16);
-
- for (int x = 0; x < 16; x++) {
- for (int y = 0; y < 16; y++) {
- QRgb rgb = icon.pixel(x, y);
- QCOMPARE(qRed(rgb), 128);
- QCOMPARE(qGreen(rgb), 0);
- QCOMPARE(qBlue(rgb), 128);
- }
- }
-}
-
-void TestKeePass2XmlReader::testCustomData()
-{
- QHash<QString, QString> customFields = m_db->metadata()->customFields();
-
- QCOMPARE(customFields.size(), 2);
- QCOMPARE(customFields.value("A Sample Test Key"), QString("valu"));
- QCOMPARE(customFields.value("custom key"), QString("blub"));
-}
-
-void TestKeePass2XmlReader::testGroupRoot()
-{
- const Group* group = m_db->rootGroup();
- QVERIFY(group);
- QCOMPARE(group->uuid().toBase64(), QString("lmU+9n0aeESKZvcEze+bRg=="));
- QCOMPARE(group->name(), QString("NewDatabase"));
- QCOMPARE(group->notes(), QString(""));
- QCOMPARE(group->iconNumber(), 49);
- QCOMPARE(group->iconUuid(), Uuid());
- QVERIFY(group->isExpanded());
- TimeInfo ti = group->timeInfo();
- QCOMPARE(ti.lastModificationTime(), genDT(2010, 8, 8, 17, 24, 27));
- QCOMPARE(ti.creationTime(), genDT(2010, 8, 7, 17, 24, 27));
- QCOMPARE(ti.lastAccessTime(), genDT(2010, 8, 9, 9, 9, 44));
- QCOMPARE(ti.expiryTime(), genDT(2010, 8, 8, 17, 24, 17));
- QVERIFY(!ti.expires());
- QCOMPARE(ti.usageCount(), 52);
- QCOMPARE(ti.locationChanged(), genDT(2010, 8, 8, 17, 24, 27));
- QCOMPARE(group->defaultAutoTypeSequence(), QString(""));
- QCOMPARE(group->autoTypeEnabled(), Group::Inherit);
- QCOMPARE(group->searchingEnabled(), Group::Inherit);
- QCOMPARE(group->lastTopVisibleEntry()->uuid().toBase64(), QString("+wSUOv6qf0OzW8/ZHAs2sA=="));
-
- QCOMPARE(group->children().size(), 3);
- QVERIFY(m_db->metadata()->recycleBin() == m_db->rootGroup()->children().at(2));
-
- QCOMPARE(group->entries().size(), 2);
-}
-
-void TestKeePass2XmlReader::testGroup1()
-{
- const Group* group = m_db->rootGroup()->children().at(0);
-
- QCOMPARE(group->uuid().toBase64(), QString("AaUYVdXsI02h4T1RiAlgtg=="));
- QCOMPARE(group->name(), QString("General"));
- QCOMPARE(group->notes(), QString("Group Notez"));
- QCOMPARE(group->iconNumber(), 48);
- QCOMPARE(group->iconUuid(), Uuid());
- QCOMPARE(group->isExpanded(), true);
- QCOMPARE(group->defaultAutoTypeSequence(), QString("{Password}{ENTER}"));
- QCOMPARE(group->autoTypeEnabled(), Group::Enable);
- QCOMPARE(group->searchingEnabled(), Group::Disable);
- QVERIFY(!group->lastTopVisibleEntry());
-}
-
-void TestKeePass2XmlReader::testGroup2()
-{
- const Group* group = m_db->rootGroup()->children().at(1);
-
- QCOMPARE(group->uuid().toBase64(), QString("1h4NtL5DK0yVyvaEnN//4A=="));
- QCOMPARE(group->name(), QString("Windows"));
- QCOMPARE(group->isExpanded(), false);
-
- QCOMPARE(group->children().size(), 1);
- const Group* child = group->children().first();
-
- QCOMPARE(child->uuid().toBase64(), QString("HoYE/BjLfUSW257pCHJ/eA=="));
- QCOMPARE(child->name(), QString("Subsub"));
- QCOMPARE(child->entries().size(), 1);
-
- const Entry* entry = child->entries().first();
- QCOMPARE(entry->uuid().toBase64(), QString("GZpdQvGXOU2kaKRL/IVAGg=="));
- QCOMPARE(entry->title(), QString("Subsub Entry"));
-}
-
-void TestKeePass2XmlReader::testEntry1()
-{
- const Entry* entry = m_db->rootGroup()->entries().at(0);
-
- QCOMPARE(entry->uuid().toBase64(), QString("+wSUOv6qf0OzW8/ZHAs2sA=="));
- QCOMPARE(entry->historyItems().size(), 2);
- QCOMPARE(entry->iconNumber(), 0);
- QCOMPARE(entry->iconUuid(), Uuid());
- QVERIFY(!entry->foregroundColor().isValid());
- QVERIFY(!entry->backgroundColor().isValid());
- QCOMPARE(entry->overrideUrl(), QString(""));
- QCOMPARE(entry->tags(), QString("a b c"));
-
- const TimeInfo ti = entry->timeInfo();
- QCOMPARE(ti.lastModificationTime(), genDT(2010, 8, 25, 16, 19, 25));
- QCOMPARE(ti.creationTime(), genDT(2010, 8, 25, 16, 13, 54));
- QCOMPARE(ti.lastAccessTime(), genDT(2010, 8, 25, 16, 19, 25));
- QCOMPARE(ti.expiryTime(), genDT(2010, 8, 25, 16, 12, 57));
- QVERIFY(!ti.expires());
- QCOMPARE(ti.usageCount(), 8);
- QCOMPARE(ti.locationChanged(), genDT(2010, 8, 25, 16, 13, 54));
-
- QList<QString> attrs = entry->attributes()->keys();
- QCOMPARE(entry->attributes()->value("Notes"), QString("Notes"));
- QVERIFY(!entry->attributes()->isProtected("Notes"));
- QVERIFY(attrs.removeOne("Notes"));
- QCOMPARE(entry->attributes()->value("Password"), QString("Password"));
- QVERIFY(!entry->attributes()->isProtected("Password"));
- QVERIFY(attrs.removeOne("Password"));
- QCOMPARE(entry->attributes()->value("Title"), QString("Sample Entry 1"));
- QVERIFY(!entry->attributes()->isProtected("Title"));
- QVERIFY(attrs.removeOne("Title"));
- QCOMPARE(entry->attributes()->value("URL"), QString(""));
- QVERIFY(entry->attributes()->isProtected("URL"));
- QVERIFY(attrs.removeOne("URL"));
- QCOMPARE(entry->attributes()->value("UserName"), QString("User Name"));
- QVERIFY(entry->attributes()->isProtected("UserName"));
- QVERIFY(attrs.removeOne("UserName"));
- QVERIFY(attrs.isEmpty());
-
- QCOMPARE(entry->title(), entry->attributes()->value("Title"));
- QCOMPARE(entry->url(), entry->attributes()->value("URL"));
- QCOMPARE(entry->username(), entry->attributes()->value("UserName"));
- QCOMPARE(entry->password(), entry->attributes()->value("Password"));
- QCOMPARE(entry->notes(), entry->attributes()->value("Notes"));
-
- QCOMPARE(entry->attachments()->keys().size(), 1);
- QCOMPARE(entry->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
- QCOMPARE(entry->historyItems().at(0)->attachments()->keys().size(), 1);
- QCOMPARE(entry->historyItems().at(0)->attachments()->value("myattach.txt"), QByteArray("0123456789"));
- QCOMPARE(entry->historyItems().at(1)->attachments()->keys().size(), 1);
- QCOMPARE(entry->historyItems().at(1)->attachments()->value("myattach.txt"), QByteArray("abcdefghijk"));
-
- QCOMPARE(entry->autoTypeEnabled(), false);
- QCOMPARE(entry->autoTypeObfuscation(), 0);
- QCOMPARE(entry->defaultAutoTypeSequence(), QString(""));
- QCOMPARE(entry->autoTypeAssociations()->size(), 1);
- const AutoTypeAssociations::Association assoc1 = entry->autoTypeAssociations()->get(0);
- QCOMPARE(assoc1.window, QString("Target Window"));
- QCOMPARE(assoc1.sequence, QString(""));
-}
-
-void TestKeePass2XmlReader::testEntry2()
-{
- const Entry* entry = m_db->rootGroup()->entries().at(1);
-
- QCOMPARE(entry->uuid().toBase64(), QString("4jbADG37hkiLh2O0qUdaOQ=="));
- QCOMPARE(entry->iconNumber(), 0);
- QCOMPARE(entry->iconUuid().toBase64(), QString("++vyI+daLk6omox4a6kQGA=="));
- // TODO: test entry->icon()
- QCOMPARE(entry->foregroundColor(), QColor(255, 0, 0));
- QCOMPARE(entry->backgroundColor(), QColor(255, 255, 0));
- QCOMPARE(entry->overrideUrl(), QString("http://override.net/"));
- QCOMPARE(entry->tags(), QString(""));
-
- const TimeInfo ti = entry->timeInfo();
- QCOMPARE(ti.usageCount(), 7);
-
- QList<QString> attrs = entry->attributes()->keys();
- QCOMPARE(entry->attributes()->value("CustomString"), QString("isavalue"));
- QVERIFY(attrs.removeOne("CustomString"));
- QCOMPARE(entry->attributes()->value("Notes"), QString(""));
- QVERIFY(attrs.removeOne("Notes"));
- QCOMPARE(entry->attributes()->value("Password"), QString("Jer60Hz8o9XHvxBGcRqT"));
- QVERIFY(attrs.removeOne("Password"));
- QCOMPARE(entry->attributes()->value("Protected String"), QString("y")); // TODO: should have a protection attribute
- QVERIFY(attrs.removeOne("Protected String"));
- QCOMPARE(entry->attributes()->value("Title"), QString("Sample Entry 2"));
- QVERIFY(attrs.removeOne("Title"));
- QCOMPARE(entry->attributes()->value("URL"), QString("http://www.keepassx.org/"));
- QVERIFY(attrs.removeOne("URL"));
- QCOMPARE(entry->attributes()->value("UserName"), QString("notDEFUSERNAME"));
- QVERIFY(attrs.removeOne("UserName"));
- QVERIFY(attrs.isEmpty());
-
- QCOMPARE(entry->attachments()->keys().size(), 1);
- QCOMPARE(QString::fromLatin1(entry->attachments()->value("myattach.txt")), QString("abcdefghijk"));
-
- QCOMPARE(entry->autoTypeEnabled(), true);
- QCOMPARE(entry->autoTypeObfuscation(), 1);
- QCOMPARE(entry->defaultAutoTypeSequence(), QString("{USERNAME}{TAB}{PASSWORD}{ENTER}"));
- QCOMPARE(entry->autoTypeAssociations()->size(), 2);
- const AutoTypeAssociations::Association assoc1 = entry->autoTypeAssociations()->get(0);
- QCOMPARE(assoc1.window, QString("Target Window"));
- QCOMPARE(assoc1.sequence, QString("{Title}{UserName}"));
- const AutoTypeAssociations::Association assoc2 = entry->autoTypeAssociations()->get(1);
- QCOMPARE(assoc2.window, QString("Target Window 2"));
- QCOMPARE(assoc2.sequence, QString("{Title}{UserName} test"));
-}
-
-void TestKeePass2XmlReader::testEntryHistory()
-{
- const Entry* entryMain = m_db->rootGroup()->entries().at(0);
- QCOMPARE(entryMain->historyItems().size(), 2);
-
- {
- const Entry* entry = entryMain->historyItems().at(0);
- QCOMPARE(entry->uuid(), entryMain->uuid());
- QVERIFY(!entry->parent());
- QCOMPARE(entry->timeInfo().lastModificationTime(), genDT(2010, 8, 25, 16, 13, 54));
- QCOMPARE(entry->timeInfo().usageCount(), 3);
- QCOMPARE(entry->title(), QString("Sample Entry"));
- QCOMPARE(entry->url(), QString("http://www.somesite.com/"));
- }
-
- {
- const Entry* entry = entryMain->historyItems().at(1);
- QCOMPARE(entry->uuid(), entryMain->uuid());
- QVERIFY(!entry->parent());
- QCOMPARE(entry->timeInfo().lastModificationTime(), genDT(2010, 8, 25, 16, 15, 43));
- QCOMPARE(entry->timeInfo().usageCount(), 7);
- QCOMPARE(entry->title(), QString("Sample Entry 1"));
- QCOMPARE(entry->url(), QString("http://www.somesite.com/"));
- }
-}
-
-void TestKeePass2XmlReader::testDeletedObjects()
-{
- QList<DeletedObject> objList = m_db->deletedObjects();
- DeletedObject delObj;
-
- delObj = objList.takeFirst();
- QCOMPARE(delObj.uuid.toBase64(), QString("5K/bzWCSmkCv5OZxYl4N/w=="));
- QCOMPARE(delObj.deletionTime, genDT(2010, 8, 25, 16, 14, 12));
-
- delObj = objList.takeFirst();
- QCOMPARE(delObj.uuid.toBase64(), QString("80h8uSNWgkKhKCp1TgXF7g=="));
- QCOMPARE(delObj.deletionTime, genDT(2010, 8, 25, 16, 14, 14));
-
- QVERIFY(objList.isEmpty());
-}
-
-void TestKeePass2XmlReader::testBroken()
-{
- QFETCH(QString, baseName);
- QFETCH(bool, strictMode);
- QFETCH(bool, expectError);
-
- KeePass2XmlReader reader;
- reader.setStrictMode(strictMode);
- QString xmlFile = QString("%1/%2.xml").arg(KEEPASSX_TEST_DATA_DIR, baseName);
- QVERIFY(QFile::exists(xmlFile));
- QScopedPointer<Database> db(reader.readDatabase(xmlFile));
- if (reader.hasError()) {
- qWarning("Reader error: %s", qPrintable(reader.errorString()));
- }
- QCOMPARE(reader.hasError(), expectError);
-}
-
-void TestKeePass2XmlReader::testBroken_data()
-{
- QTest::addColumn<QString>("baseName");
- QTest::addColumn<bool>("strictMode");
- QTest::addColumn<bool>("expectError");
-
- // testfile strict? error?
- QTest::newRow("BrokenNoGroupUuid (strict)") << "BrokenNoGroupUuid" << true << true;
- QTest::newRow("BrokenNoGroupUuid (not strict)") << "BrokenNoGroupUuid" << false << false;
- QTest::newRow("BrokenNoEntryUuid (strict)") << "BrokenNoEntryUuid" << true << true;
- QTest::newRow("BrokenNoEntryUuid (not strict)") << "BrokenNoEntryUuid" << false << false;
- QTest::newRow("BrokenNoRootGroup (strict)") << "BrokenNoRootGroup" << true << true;
- QTest::newRow("BrokenNoRootGroup (not strict)") << "BrokenNoRootGroup" << false << true;
- QTest::newRow("BrokenTwoRoots (strict)") << "BrokenTwoRoots" << true << true;
- QTest::newRow("BrokenTwoRoots (not strict)") << "BrokenTwoRoots" << false << true;
- QTest::newRow("BrokenTwoRootGroups (strict)") << "BrokenTwoRootGroups" << true << true;
- QTest::newRow("BrokenTwoRootGroups (not strict)") << "BrokenTwoRootGroups" << false << true;
- QTest::newRow("BrokenGroupReference (strict)") << "BrokenGroupReference" << true << false;
- QTest::newRow("BrokenGroupReference (not strict)") << "BrokenGroupReference" << false << false;
- QTest::newRow("BrokenDeletedObjects (strict)") << "BrokenDeletedObjects" << true << true;
- QTest::newRow("BrokenDeletedObjects (not strict)") << "BrokenDeletedObjects" << false << false;
- QTest::newRow("BrokenDifferentEntryHistoryUuid (strict)") << "BrokenDifferentEntryHistoryUuid" << true << true;
- QTest::newRow("BrokenDifferentEntryHistoryUuid (not strict)") << "BrokenDifferentEntryHistoryUuid" << false << false;
-}
-
-void TestKeePass2XmlReader::testEmptyUuids()
-{
- KeePass2XmlReader reader;
- reader.setStrictMode(true);
- QString xmlFile = QString("%1/%2.xml").arg(KEEPASSX_TEST_DATA_DIR, "EmptyUuids");
- QVERIFY(QFile::exists(xmlFile));
- QScopedPointer<Database> db(reader.readDatabase(xmlFile));
- if (reader.hasError()) {
- qWarning("Reader error: %s", qPrintable(reader.errorString()));
- }
- QVERIFY(!reader.hasError());
-}
-
-void TestKeePass2XmlReader::testInvalidXmlChars()
-{
- QScopedPointer<Database> dbWrite(new Database());
-
- QString strPlainInvalid = QString().append(QChar(0x02)).append(QChar(0x19))
- .append(QChar(0xFFFE)).append(QChar(0xFFFF));
- QString strPlainValid = QString().append(QChar(0x09)).append(QChar(0x0A))
- .append(QChar(0x20)).append(QChar(0xD7FF))
- .append(QChar(0xE000)).append(QChar(0xFFFD));
- // U+10437 in UTF-16: D801 DC37
- // high low surrogate
- QString strSingleHighSurrogate1 = QString().append(QChar(0xD801));
- QString strSingleHighSurrogate2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0x32));
- QString strHighHighSurrogate = QString().append(QChar(0xD801)).append(QChar(0xD801));
- QString strSingleLowSurrogate1 = QString().append(QChar(0xDC37));
- QString strSingleLowSurrogate2 = QString().append(QChar((0x31))).append(QChar(0xDC37)).append(QChar(0x32));
- QString strLowLowSurrogate = QString().append(QChar(0xDC37)).append(QChar(0xDC37));
- QString strSurrogateValid1 = QString().append(QChar(0xD801)).append(QChar(0xDC37));
- QString strSurrogateValid2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0xDC37)).append(QChar(0x32));
-
- Entry* entry = new Entry();
- entry->setUuid(Uuid::random());
- entry->setGroup(dbWrite->rootGroup());
- entry->attributes()->set("PlainInvalid", strPlainInvalid);
- entry->attributes()->set("PlainValid", strPlainValid);
- entry->attributes()->set("SingleHighSurrogate1", strSingleHighSurrogate1);
- entry->attributes()->set("SingleHighSurrogate2", strSingleHighSurrogate2);
- entry->attributes()->set("HighHighSurrogate", strHighHighSurrogate);
- entry->attributes()->set("SingleLowSurrogate1", strSingleLowSurrogate1);
- entry->attributes()->set("SingleLowSurrogate2", strSingleLowSurrogate2);
- entry->attributes()->set("LowLowSurrogate", strLowLowSurrogate);
- entry->attributes()->set("SurrogateValid1", strSurrogateValid1);
- entry->attributes()->set("SurrogateValid2", strSurrogateValid2);
-
- QBuffer buffer;
- buffer.open(QIODevice::ReadWrite);
- KeePass2XmlWriter writer;
- writer.writeDatabase(&buffer, dbWrite.data());
- QVERIFY(!writer.hasError());
- buffer.seek(0);
-
- KeePass2XmlReader reader;
- reader.setStrictMode(true);
- QScopedPointer<Database> dbRead(reader.readDatabase(&buffer));
- if (reader.hasError()) {
- qWarning("Database read error: %s", qPrintable(reader.errorString()));
- }
- QVERIFY(!reader.hasError());
- QVERIFY(!dbRead.isNull());
- QCOMPARE(dbRead->rootGroup()->entries().size(), 1);
- Entry* entryRead = dbRead->rootGroup()->entries().at(0);
- EntryAttributes* attrRead = entryRead->attributes();
-
- QCOMPARE(strToBytes(attrRead->value("PlainInvalid")), QByteArray());
- QCOMPARE(strToBytes(attrRead->value("PlainValid")), strToBytes(strPlainValid));
- QCOMPARE(strToBytes(attrRead->value("SingleHighSurrogate1")), QByteArray());
- QCOMPARE(strToBytes(attrRead->value("SingleHighSurrogate2")), strToBytes(QString("12")));
- QCOMPARE(strToBytes(attrRead->value("HighHighSurrogate")), QByteArray());
- QCOMPARE(strToBytes(attrRead->value("SingleLowSurrogate1")), QByteArray());
- QCOMPARE(strToBytes(attrRead->value("SingleLowSurrogate2")), strToBytes(QString("12")));
- QCOMPARE(strToBytes(attrRead->value("LowLowSurrogate")), QByteArray());
- QCOMPARE(strToBytes(attrRead->value("SurrogateValid1")), strToBytes(strSurrogateValid1));
- QCOMPARE(strToBytes(attrRead->value("SurrogateValid2")), strToBytes(strSurrogateValid2));
-}
-
-void TestKeePass2XmlReader::testRepairUuidHistoryItem()
-{
- KeePass2XmlReader reader;
- QString xmlFile = QString("%1/%2.xml").arg(KEEPASSX_TEST_DATA_DIR, "BrokenDifferentEntryHistoryUuid");
- QVERIFY(QFile::exists(xmlFile));
- QScopedPointer<Database> db(reader.readDatabase(xmlFile));
- if (reader.hasError()) {
- qWarning("Database read error: %s", qPrintable(reader.errorString()));
- }
- QVERIFY(!reader.hasError());
-
-
-
- QList<Entry*> entries = db.data()->rootGroup()->entries();
- QCOMPARE(entries.size(), 1);
- Entry* entry = entries.at(0);
-
- QList<Entry*> historyItems = entry->historyItems();
- QCOMPARE(historyItems.size(), 1);
- Entry* historyItem = historyItems.at(0);
-
- QVERIFY(!entry->uuid().isNull());
- QVERIFY(!historyItem->uuid().isNull());
- QCOMPARE(historyItem->uuid(), entry->uuid());
-}
-
-void TestKeePass2XmlReader::cleanupTestCase()
-{
- delete m_db;
-}
diff --git a/tests/TestKeePass2XmlReader.h b/tests/TestKeePass2XmlReader.h
deleted file mode 100644
index 628964b46..000000000
--- a/tests/TestKeePass2XmlReader.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef KEEPASSX_TESTKEEPASS2XMLREADER_H
-#define KEEPASSX_TESTKEEPASS2XMLREADER_H
-
-#include <QDateTime>
-#include <QObject>
-
-class Database;
-
-class TestKeePass2XmlReader : public QObject
-{
- Q_OBJECT
-
-private slots:
- void initTestCase();
- void testMetadata();
- void testCustomIcons();
- void testCustomData();
- void testGroupRoot();
- void testGroup1();
- void testGroup2();
- void testEntry1();
- void testEntry2();
- void testEntryHistory();
- void testDeletedObjects();
- void testBroken();
- void testBroken_data();
- void testEmptyUuids();
- void testInvalidXmlChars();
- void testRepairUuidHistoryItem();
- void cleanupTestCase();
-
-private:
- static QDateTime genDT(int year, int month, int day, int hour, int min, int second);
- static QByteArray strToBytes(const QString& str);
-
- Database* m_db;
-};
-
-#endif // KEEPASSX_TESTKEEPASS2XMLREADER_H
diff --git a/tests/TestKeys.cpp b/tests/TestKeys.cpp
index dea0436f0..094a397d7 100644
--- a/tests/TestKeys.cpp
+++ b/tests/TestKeys.cpp
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,21 +17,24 @@
*/
#include "TestKeys.h"
+#include "TestGlobal.h"
#include <QBuffer>
-#include <QTest>
#include "config-keepassx-tests.h"
-#include "core/Database.h"
+
#include "core/Metadata.h"
+#include "core/Tools.h"
#include "crypto/Crypto.h"
+#include "crypto/kdf/AesKdf.h"
+#include "crypto/CryptoHash.h"
#include "format/KeePass2Reader.h"
#include "format/KeePass2Writer.h"
-#include "keys/CompositeKey.h"
#include "keys/FileKey.h"
#include "keys/PasswordKey.h"
QTEST_GUILESS_MAIN(TestKeys)
+Q_DECLARE_METATYPE(FileKey::Type);
void TestKeys::initTestCase()
{
@@ -40,31 +43,29 @@ void TestKeys::initTestCase()
void TestKeys::testComposite()
{
- CompositeKey* compositeKey1 = new CompositeKey();
- PasswordKey* passwordKey1 = new PasswordKey();
- PasswordKey* passwordKey2 = new PasswordKey("test");
- bool ok;
- QString errorString;
+ QScopedPointer<CompositeKey> compositeKey1(new CompositeKey());
+ QScopedPointer<PasswordKey> passwordKey1(new PasswordKey());
+ QScopedPointer<PasswordKey> passwordKey2(new PasswordKey("test"));
// make sure that addKey() creates a copy of the keys
compositeKey1->addKey(*passwordKey1);
compositeKey1->addKey(*passwordKey2);
- delete passwordKey1;
- delete passwordKey2;
- QByteArray transformed = compositeKey1->transform(QByteArray(32, '\0'), 1, &ok, &errorString);
- QVERIFY(ok);
- QCOMPARE(transformed.size(), 32);
+ AesKdf kdf;
+ kdf.setRounds(1);
+ QByteArray transformed1;
+ QVERIFY(compositeKey1->transform(kdf, transformed1));
+ QCOMPARE(transformed1.size(), 32);
// make sure the subkeys are copied
- CompositeKey* compositeKey2 = compositeKey1->clone();
- delete compositeKey1;
- QCOMPARE(compositeKey2->transform(QByteArray(32, '\0'), 1, &ok, &errorString), transformed);
- QVERIFY(ok);
- delete compositeKey2;
+ QScopedPointer<CompositeKey> compositeKey2(compositeKey1->clone());
+ QByteArray transformed2;
+ QVERIFY(compositeKey2->transform(kdf, transformed2));
+ QCOMPARE(transformed2.size(), 32);
+ QCOMPARE(transformed1, transformed2);
- CompositeKey* compositeKey3 = new CompositeKey();
- CompositeKey* compositeKey4 = new CompositeKey();
+ QScopedPointer<CompositeKey> compositeKey3(new CompositeKey());
+ QScopedPointer<CompositeKey> compositeKey4(new CompositeKey());
// test clear()
compositeKey3->addKey(PasswordKey("test"));
@@ -79,32 +80,14 @@ void TestKeys::testComposite()
// test self-assignment
*compositeKey3 = *compositeKey3;
QCOMPARE(compositeKey3->rawKey(), compositeKey4->rawKey());
-
- delete compositeKey3;
- delete compositeKey4;
-}
-
-void TestKeys::testCompositeKeyReadFromLine()
-{
-
- QString keyFilename = QString("%1/FileKeyXml.key").arg(QString(KEEPASSX_TEST_DATA_DIR));
-
- CompositeKey compositeFileKey = CompositeKey::readFromLine(keyFilename);
- FileKey fileKey;
- fileKey.load(keyFilename);
- QCOMPARE(compositeFileKey.rawKey().size(), fileKey.rawKey().size());
-
- CompositeKey compositePasswordKey = CompositeKey::readFromLine(QString("password"));
- PasswordKey passwordKey(QString("password"));
- QCOMPARE(compositePasswordKey.rawKey().size(), passwordKey.rawKey().size());
-
}
void TestKeys::testFileKey()
{
- QFETCH(QString, type);
+ QFETCH(FileKey::Type, type);
+ QFETCH(QString, typeString);
- QString name = QString("FileKey").append(type);
+ QString name = QString("FileKey").append(typeString);
KeePass2Reader reader;
@@ -115,28 +98,44 @@ void TestKeys::testFileKey()
FileKey fileKey;
QVERIFY(fileKey.load(keyFilename));
QCOMPARE(fileKey.rawKey().size(), 32);
+
+ QCOMPARE(fileKey.type(), type);
+
compositeKey.addKey(fileKey);
- Database* db = reader.readDatabase(dbFilename, compositeKey);
+ QScopedPointer<Database> db(reader.readDatabase(dbFilename, compositeKey));
QVERIFY(db);
QVERIFY(!reader.hasError());
QCOMPARE(db->metadata()->name(), QString("%1 Database").arg(name));
-
- delete db;
}
void TestKeys::testFileKey_data()
{
- QTest::addColumn<QString>("type");
- QTest::newRow("Xml") << QString("Xml");
- QTest::newRow("XmlBrokenBase64") << QString("XmlBrokenBase64");
- QTest::newRow("Binary") << QString("Binary");
- QTest::newRow("Hex") << QString("Hex");
- QTest::newRow("Hashed") << QString("Hashed");
+ QTest::addColumn<FileKey::Type>("type");
+ QTest::addColumn<QString>("typeString");
+ QTest::newRow("Xml") << FileKey::KeePass2XML << QString("Xml");
+ QTest::newRow("XmlBrokenBase64") << FileKey::Hashed << QString("XmlBrokenBase64");
+ QTest::newRow("Binary") << FileKey::FixedBinary << QString("Binary");
+ QTest::newRow("Hex") << FileKey::FixedBinaryHex << QString("Hex");
+ QTest::newRow("Hashed") << FileKey::Hashed << QString("Hashed");
}
void TestKeys::testCreateFileKey()
{
+ QBuffer keyBuffer1;
+ keyBuffer1.open(QBuffer::ReadWrite);
+
+ FileKey::create(&keyBuffer1, 128);
+ QCOMPARE(keyBuffer1.size(), 128);
+
+ QBuffer keyBuffer2;
+ keyBuffer2.open(QBuffer::ReadWrite);
+ FileKey::create(&keyBuffer2, 64);
+ QCOMPARE(keyBuffer2.size(), 64);
+}
+
+void TestKeys::testCreateAndOpenFileKey()
+{
const QString dbName("testCreateFileKey database");
QBuffer keyBuffer;
@@ -150,7 +149,7 @@ void TestKeys::testCreateFileKey()
CompositeKey compositeKey;
compositeKey.addKey(fileKey);
- Database* dbOrg = new Database();
+ QScopedPointer<Database> dbOrg(new Database());
QVERIFY(dbOrg->setKey(compositeKey));
dbOrg->metadata()->setName(dbName);
@@ -158,16 +157,37 @@ void TestKeys::testCreateFileKey()
dbBuffer.open(QBuffer::ReadWrite);
KeePass2Writer writer;
- writer.writeDatabase(&dbBuffer, dbOrg);
+ writer.writeDatabase(&dbBuffer, dbOrg.data());
+ bool writeSuccess = writer.writeDatabase(&dbBuffer, dbOrg.data());
+ if (writer.hasError()) {
+ QFAIL(writer.errorString().toUtf8().constData());
+ }
+ QVERIFY(writeSuccess);
dbBuffer.reset();
- delete dbOrg;
KeePass2Reader reader;
- Database* dbRead = reader.readDatabase(&dbBuffer, compositeKey);
+ QScopedPointer<Database> dbRead(reader.readDatabase(&dbBuffer, compositeKey));
+ if (reader.hasError()) {
+ QFAIL(reader.errorString().toUtf8().constData());
+ }
QVERIFY(dbRead);
- QVERIFY(!reader.hasError());
QCOMPARE(dbRead->metadata()->name(), dbName);
- delete dbRead;
+}
+
+void TestKeys::testFileKeyHash()
+{
+ QBuffer keyBuffer;
+ keyBuffer.open(QBuffer::ReadWrite);
+
+ FileKey::create(&keyBuffer);
+
+ CryptoHash cryptoHash(CryptoHash::Sha256);
+ cryptoHash.addData(keyBuffer.data());
+
+ FileKey fileKey;
+ fileKey.load(&keyBuffer);
+
+ QCOMPARE(fileKey.rawKey(), cryptoHash.result());
}
void TestKeys::testFileKeyError()
@@ -203,10 +223,12 @@ void TestKeys::benchmarkTransformKey()
QByteArray seed(32, '\x4B');
- bool ok;
- QString errorString;
+ QByteArray result;
+ AesKdf kdf;
+ kdf.setSeed(seed);
+ kdf.setRounds(1e6);
QBENCHMARK {
- compositeKey.transform(seed, 1e6, &ok, &errorString);
- }
+ Q_UNUSED(compositeKey.transform(kdf, result));
+ };
}
diff --git a/tests/TestKeys.h b/tests/TestKeys.h
index 06ed3b0a1..237225f8f 100644
--- a/tests/TestKeys.h
+++ b/tests/TestKeys.h
@@ -28,10 +28,11 @@ class TestKeys : public QObject
private slots:
void initTestCase();
void testComposite();
- void testCompositeKeyReadFromLine();
void testFileKey();
void testFileKey_data();
void testCreateFileKey();
+ void testCreateAndOpenFileKey();
+ void testFileKeyHash();
void testFileKeyError();
void benchmarkTransformKey();
};
diff --git a/tests/TestMerge.cpp b/tests/TestMerge.cpp
new file mode 100644
index 000000000..8f38a2f85
--- /dev/null
+++ b/tests/TestMerge.cpp
@@ -0,0 +1,597 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TestMerge.h"
+#include "TestGlobal.h"
+
+#include "core/Metadata.h"
+#include "crypto/Crypto.h"
+
+QTEST_GUILESS_MAIN(TestMerge)
+
+void TestMerge::initTestCase()
+{
+ qRegisterMetaType<Entry*>("Entry*");
+ qRegisterMetaType<Group*>("Group*");
+ QVERIFY(Crypto::init());
+}
+
+/**
+ * Merge an existing database into a new one.
+ * All the entries of the existing should end
+ * up in the new one.
+ */
+void TestMerge::testMergeIntoNew()
+{
+ Database* dbSource = createTestDatabase();
+ Database* dbDestination = new Database();
+
+ dbDestination->merge(dbSource);
+
+ QCOMPARE(dbDestination->rootGroup()->children().size(), 2);
+ QCOMPARE(dbDestination->rootGroup()->children().at(0)->entries().size(), 2);
+ // Test for retention of history
+ QCOMPARE(dbDestination->rootGroup()->children().at(0)->entries().at(0)->historyItems().isEmpty(), false);
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * Merging when no changes occured should not
+ * have any side effect.
+ */
+void TestMerge::testMergeNoChanges()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+ QCOMPARE(dbSource->rootGroup()->entriesRecursive().size(), 2);
+
+ dbDestination->merge(dbSource);
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+ QCOMPARE(dbSource->rootGroup()->entriesRecursive().size(), 2);
+
+ dbDestination->merge(dbSource);
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+ QCOMPARE(dbSource->rootGroup()->entriesRecursive().size(), 2);
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * If the entry is updated in the source database, the update
+ * should propagate in the destination database.
+ */
+void TestMerge::testResolveConflictNewer()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ // sanity check
+ Group* group1 = dbSource->rootGroup()->findChildByName("group1");
+ QVERIFY(group1 != nullptr);
+ QCOMPARE(group1->entries().size(), 2);
+
+ Entry* entry1 = dbSource->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+
+ // Make sure the two changes have a different timestamp.
+ QTest::qSleep(1);
+ // make this entry newer than in destination db
+ entry1->beginUpdate();
+ entry1->setPassword("password");
+ entry1->endUpdate();
+
+ dbDestination->merge(dbSource);
+
+ // sanity check
+ group1 = dbDestination->rootGroup()->findChildByName("group1");
+ QVERIFY(group1 != nullptr);
+ QCOMPARE(group1->entries().size(), 2);
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ QVERIFY(entry1->group() != nullptr);
+ QCOMPARE(entry1->password(), QString("password"));
+
+ // When updating an entry, it should not end up in the
+ // deleted objects.
+ for (DeletedObject deletedObject : dbDestination->deletedObjects()) {
+ QVERIFY(deletedObject.uuid != entry1->uuid());
+ }
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * If the entry is updated in the source database, and the
+ * destination database after, the entry should remain the
+ * same.
+ */
+void TestMerge::testResolveConflictOlder()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ // sanity check
+ Group* group1 = dbSource->rootGroup()->findChildByName("group1");
+ QVERIFY(group1 != nullptr);
+ QCOMPARE(group1->entries().size(), 2);
+
+ Entry* entry1 = dbSource->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+
+ // Make sure the two changes have a different timestamp.
+ QTest::qSleep(1);
+ // make this entry newer than in destination db
+ entry1->beginUpdate();
+ entry1->setPassword("password1");
+ entry1->endUpdate();
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+
+ // Make sure the two changes have a different timestamp.
+ QTest::qSleep(1);
+ // make this entry newer than in destination db
+ entry1->beginUpdate();
+ entry1->setPassword("password2");
+ entry1->endUpdate();
+
+ dbDestination->merge(dbSource);
+
+ // sanity check
+ group1 = dbDestination->rootGroup()->findChildByName("group1");
+ QVERIFY(group1 != nullptr);
+ QCOMPARE(group1->entries().size(), 2);
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ QCOMPARE(entry1->password(), QString("password2"));
+
+ // When updating an entry, it should not end up in the
+ // deleted objects.
+ for (DeletedObject deletedObject : dbDestination->deletedObjects()) {
+ QVERIFY(deletedObject.uuid != entry1->uuid());
+ }
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * Tests the KeepBoth merge mode.
+ */
+void TestMerge::testResolveConflictKeepBoth()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneIncludeHistory, Group::CloneIncludeEntries));
+
+ // sanity check
+ QCOMPARE(dbDestination->rootGroup()->children().at(0)->entries().size(), 2);
+
+ // make this entry newer than in original db
+ Entry* updatedEntry = dbDestination->rootGroup()->children().at(0)->entries().at(0);
+ TimeInfo updatedTimeInfo = updatedEntry->timeInfo();
+ updatedTimeInfo.setLastModificationTime(updatedTimeInfo.lastModificationTime().addYears(1));
+ updatedEntry->setTimeInfo(updatedTimeInfo);
+
+ dbDestination->rootGroup()->setMergeMode(Group::MergeMode::KeepBoth);
+
+ dbDestination->merge(dbSource);
+
+ // one entry is duplicated because of mode
+ QCOMPARE(dbDestination->rootGroup()->children().at(0)->entries().size(), 3);
+ QCOMPARE(dbDestination->rootGroup()->children().at(0)->entries().at(0)->historyItems().isEmpty(), false);
+ // the older entry was merged from the other db as last in the group
+ Entry* olderEntry = dbDestination->rootGroup()->children().at(0)->entries().at(2);
+ QVERIFY2(olderEntry->attributes()->hasKey("merged"), "older entry is marked with an attribute \"merged\"");
+ QCOMPARE(olderEntry->historyItems().isEmpty(), false);
+
+ QVERIFY2(olderEntry->uuid().toHex() != updatedEntry->uuid().toHex(),
+ "KeepBoth should not reuse the UUIDs when cloning.");
+
+ delete dbSource;
+ delete dbDestination;
+}
+
+/**
+ * The location of an entry should be updated in the
+ * destination database.
+ */
+void TestMerge::testMoveEntry()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ Entry* entry1 = dbSource->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+
+ Group* group2 = dbSource->rootGroup()->findChildByName("group2");
+ QVERIFY(group2 != nullptr);
+
+ // Make sure the two changes have a different timestamp.
+ QTest::qSleep(1);
+ entry1->setGroup(group2);
+ QCOMPARE(entry1->group()->name(), QString("group2"));
+
+ dbDestination->merge(dbSource);
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ QCOMPARE(entry1->group()->name(), QString("group2"));
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * The location of an entry should be updated in the
+ * destination database, but changes from the destination
+ * database should be preserved.
+ */
+void TestMerge::testMoveEntryPreserveChanges()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ Entry* entry1 = dbSource->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+
+ Group* group2 = dbSource->rootGroup()->findChildByName("group2");
+ QVERIFY(group2 != nullptr);
+
+ QTest::qSleep(1);
+ entry1->setGroup(group2);
+ QCOMPARE(entry1->group()->name(), QString("group2"));
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+
+ QTest::qSleep(1);
+ entry1->beginUpdate();
+ entry1->setPassword("password");
+ entry1->endUpdate();
+
+ dbDestination->merge(dbSource);
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ QCOMPARE(entry1->group()->name(), QString("group2"));
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+ QCOMPARE(entry1->password(), QString("password"));
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+void TestMerge::testCreateNewGroups()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ QTest::qSleep(1);
+ Group* group3 = new Group();
+ group3->setName("group3");
+ group3->setUuid(Uuid::random());
+ group3->setParent(dbSource->rootGroup());
+
+ dbDestination->merge(dbSource);
+
+ group3 = dbDestination->rootGroup()->findChildByName("group3");
+ QVERIFY(group3 != nullptr);
+ QCOMPARE(group3->name(), QString("group3"));
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+void TestMerge::testMoveEntryIntoNewGroup()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ QTest::qSleep(1);
+ Group* group3 = new Group();
+ group3->setName("group3");
+ group3->setUuid(Uuid::random());
+ group3->setParent(dbSource->rootGroup());
+
+ Entry* entry1 = dbSource->rootGroup()->findEntry("entry1");
+ entry1->setGroup(group3);
+
+ dbDestination->merge(dbSource);
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+
+ group3 = dbDestination->rootGroup()->findChildByName("group3");
+ QVERIFY(group3 != nullptr);
+ QCOMPARE(group3->name(), QString("group3"));
+ QCOMPARE(group3->entries().size(), 1);
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ QCOMPARE(entry1->group()->name(), QString("group3"));
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * Even though the entries' locations are no longer
+ * the same, we will keep associating them.
+ */
+void TestMerge::testUpdateEntryDifferentLocation()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ Group* group3 = new Group();
+ group3->setName("group3");
+ group3->setUuid(Uuid::random());
+ group3->setParent(dbDestination->rootGroup());
+
+ Entry* entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ entry1->setGroup(group3);
+ Uuid uuidBeforeSyncing = entry1->uuid();
+
+ // Change the entry in the source db.
+ QTest::qSleep(1);
+ entry1 = dbSource->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ entry1->beginUpdate();
+ entry1->setUsername("username");
+ entry1->endUpdate();
+
+ dbDestination->merge(dbSource);
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ QVERIFY(entry1->group() != nullptr);
+ QCOMPARE(entry1->username(), QString("username"));
+ QCOMPARE(entry1->group()->name(), QString("group3"));
+ QCOMPARE(uuidBeforeSyncing, entry1->uuid());
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * Groups should be updated using the uuids.
+ */
+void TestMerge::testUpdateGroup()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ QTest::qSleep(1);
+
+ Group* group2 = dbSource->rootGroup()->findChildByName("group2");
+ group2->setName("group2 renamed");
+ group2->setNotes("updated notes");
+ Uuid customIconId = Uuid::random();
+ QImage customIcon;
+ dbSource->metadata()->addCustomIcon(customIconId, customIcon);
+ group2->setIcon(customIconId);
+
+ Entry* entry1 = dbSource->rootGroup()->findEntry("entry1");
+ QVERIFY(entry1 != nullptr);
+ entry1->setGroup(group2);
+ entry1->setTitle("entry1 renamed");
+ Uuid uuidBeforeSyncing = entry1->uuid();
+
+ dbDestination->merge(dbSource);
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+
+ entry1 = dbDestination->rootGroup()->findEntry("entry1 renamed");
+ QVERIFY(entry1 != nullptr);
+ QVERIFY(entry1->group() != nullptr);
+ QCOMPARE(entry1->group()->name(), QString("group2 renamed"));
+ QCOMPARE(uuidBeforeSyncing, entry1->uuid());
+
+ group2 = dbDestination->rootGroup()->findChildByName("group2 renamed");
+ QCOMPARE(group2->notes(), QString("updated notes"));
+ QCOMPARE(group2->iconUuid(), customIconId);
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+void TestMerge::testUpdateGroupLocation()
+{
+ Database* dbDestination = createTestDatabase();
+ Group* group3 = new Group();
+ Uuid group3Uuid = Uuid::random();
+ group3->setUuid(group3Uuid);
+ group3->setName("group3");
+ group3->setParent(dbDestination->rootGroup()->findChildByName("group1"));
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ // Sanity check
+ group3 = dbSource->rootGroup()->findChildByUuid(group3Uuid);
+ QVERIFY(group3 != nullptr);
+
+ QTest::qSleep(1);
+
+ group3->setParent(dbSource->rootGroup()->findChildByName("group2"));
+
+ dbDestination->merge(dbSource);
+ group3 = dbDestination->rootGroup()->findChildByUuid(group3Uuid);
+ QVERIFY(group3 != nullptr);
+ QCOMPARE(group3->parent(), dbDestination->rootGroup()->findChildByName("group2"));
+
+ dbDestination->merge(dbSource);
+ group3 = dbDestination->rootGroup()->findChildByUuid(group3Uuid);
+ QVERIFY(group3 != nullptr);
+ QCOMPARE(group3->parent(), dbDestination->rootGroup()->findChildByName("group2"));
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * The first merge should create new entries, the
+ * second should only sync them, since they have
+ * been created with the same UUIDs.
+ */
+void TestMerge::testMergeAndSync()
+{
+ Database* dbDestination = new Database();
+ Database* dbSource = createTestDatabase();
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 0);
+
+ dbDestination->merge(dbSource);
+
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+
+ dbDestination->merge(dbSource);
+
+ // Still only 2 entries, since now we detect which are already present.
+ QCOMPARE(dbDestination->rootGroup()->entriesRecursive().size(), 2);
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * Custom icons should be brought over when merging.
+ */
+void TestMerge::testMergeCustomIcons()
+{
+ Database* dbDestination = new Database();
+ Database* dbSource = createTestDatabase();
+
+ Uuid customIconId = Uuid::random();
+ QImage customIcon;
+
+ dbSource->metadata()->addCustomIcon(customIconId, customIcon);
+ // Sanity check.
+ QVERIFY(dbSource->metadata()->containsCustomIcon(customIconId));
+
+ dbDestination->merge(dbSource);
+
+ QVERIFY(dbDestination->metadata()->containsCustomIcon(customIconId));
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+/**
+ * If the group is updated in the source database, and the
+ * destination database after, the group should remain the
+ * same.
+ */
+void TestMerge::testResolveGroupConflictOlder()
+{
+ Database* dbDestination = createTestDatabase();
+
+ Database* dbSource = new Database();
+ dbSource->setRootGroup(dbDestination->rootGroup()->clone(Entry::CloneNoFlags, Group::CloneIncludeEntries));
+
+ // sanity check
+ Group* group1 = dbSource->rootGroup()->findChildByName("group1");
+ QVERIFY(group1 != nullptr);
+
+ // Make sure the two changes have a different timestamp.
+ QTest::qSleep(1);
+ group1->setName("group1 updated in source");
+
+ // Make sure the two changes have a different timestamp.
+ QTest::qSleep(1);
+
+ group1 = dbDestination->rootGroup()->findChildByName("group1");
+ group1->setName("group1 updated in destination");
+
+ dbDestination->merge(dbSource);
+
+ // sanity check
+ group1 = dbDestination->rootGroup()->findChildByName("group1 updated in destination");
+ QVERIFY(group1 != nullptr);
+
+ delete dbDestination;
+ delete dbSource;
+}
+
+
+Database* TestMerge::createTestDatabase()
+{
+ Database* db = new Database();
+
+ Group* group1 = new Group();
+ group1->setName("group1");
+ group1->setUuid(Uuid::random());
+
+ Group* group2 = new Group();
+ group2->setName("group2");
+ group2->setUuid(Uuid::random());
+
+ Entry* entry1 = new Entry();
+ Entry* entry2 = new Entry();
+
+ // Give Entry 1 a history
+ entry1->beginUpdate();
+ entry1->setGroup(group1);
+ entry1->setUuid(Uuid::random());
+ entry1->setTitle("entry1");
+ entry1->endUpdate();
+
+ // Give Entry 2 a history
+ entry2->beginUpdate();
+ entry2->setGroup(group1);
+ entry2->setUuid(Uuid::random());
+ entry2->setTitle("entry2");
+ entry2->endUpdate();
+
+ group1->setParent(db->rootGroup());
+ group2->setParent(db->rootGroup());
+
+ return db;
+}
diff --git a/tests/TestMerge.h b/tests/TestMerge.h
new file mode 100644
index 000000000..3588cfd53
--- /dev/null
+++ b/tests/TestMerge.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_TESTMERGE_H
+#define KEEPASSX_TESTMERGE_H
+
+#include "core/Database.h"
+#include <QObject>
+
+class TestMerge : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase();
+ void testMergeIntoNew();
+ void testMergeNoChanges();
+ void testResolveConflictNewer();
+ void testResolveConflictOlder();
+ void testResolveGroupConflictOlder();
+ void testResolveConflictKeepBoth();
+ void testMoveEntry();
+ void testMoveEntryPreserveChanges();
+ void testMoveEntryIntoNewGroup();
+ void testCreateNewGroups();
+ void testUpdateEntryDifferentLocation();
+ void testUpdateGroup();
+ void testUpdateGroupLocation();
+ void testMergeAndSync();
+ void testMergeCustomIcons();
+
+private:
+ Database* createTestDatabase();
+};
+
+#endif // KEEPASSX_TESTMERGE_H
diff --git a/tests/TestModified.cpp b/tests/TestModified.cpp
index 70a4a4844..0bf2c5b3a 100644
--- a/tests/TestModified.cpp
+++ b/tests/TestModified.cpp
@@ -40,33 +40,33 @@ void TestModified::testSignals()
CompositeKey compositeKey;
- Database* db = new Database();
- Group* root = db->rootGroup();
- QSignalSpy spyModified(db, SIGNAL(modifiedImmediate()));
+ QScopedPointer<Database> db(new Database());
+ auto* root = db->rootGroup();
+ QSignalSpy spyModified(db.data(), SIGNAL(modifiedImmediate()));
db->setKey(compositeKey);
QCOMPARE(spyModified.count(), ++spyCount);
- Group* g1 = new Group();
- g1->setParent(root);
+ auto* group1 = new Group();
+ group1->setParent(root);
QCOMPARE(spyModified.count(), ++spyCount);
- Group* g2 = new Group();
- g2->setParent(root);
+ auto* group2 = new Group();
+ group2->setParent(root);
QCOMPARE(spyModified.count(), ++spyCount);
- g2->setParent(root, 0);
+ group2->setParent(root, 0);
QCOMPARE(spyModified.count(), ++spyCount);
- Entry* entry1 = new Entry();
- entry1->setGroup(g1);
+ auto* entry1 = new Entry();
+ entry1->setGroup(group1);
QCOMPARE(spyModified.count(), ++spyCount);
- Database* db2 = new Database();
- Group* root2 = db2->rootGroup();
- QSignalSpy spyModified2(db2, SIGNAL(modifiedImmediate()));
+ QScopedPointer<Database> db2(new Database());
+ auto* root2 = db2->rootGroup();
+ QSignalSpy spyModified2(db2.data(), SIGNAL(modifiedImmediate()));
- g1->setParent(root2);
+ group1->setParent(root2);
QCOMPARE(spyModified.count(), ++spyCount);
QCOMPARE(spyModified2.count(), ++spyCount2);
@@ -74,8 +74,8 @@ void TestModified::testSignals()
QCOMPARE(spyModified.count(), spyCount);
QCOMPARE(spyModified2.count(), ++spyCount2);
- Entry* entry2 = new Entry();
- entry2->setGroup(g2);
+ auto* entry2 = new Entry();
+ entry2->setGroup(group2);
QCOMPARE(spyModified.count(), ++spyCount);
QCOMPARE(spyModified2.count(), spyCount2);
@@ -87,15 +87,15 @@ void TestModified::testSignals()
QCOMPARE(spyModified.count(), spyCount);
QCOMPARE(spyModified2.count(), ++spyCount2);
- Group* g3 = new Group();
- g3->setParent(root);
+ auto* group3 = new Group();
+ group3->setParent(root);
QCOMPARE(spyModified.count(), ++spyCount);
- Group* g4 = new Group();
- g4->setParent(g3);
+ auto* group4 = new Group();
+ group4->setParent(group3);
QCOMPARE(spyModified.count(), ++spyCount);
- delete g4;
+ delete group4;
QCOMPARE(spyModified.count(), ++spyCount);
delete entry2;
@@ -103,21 +103,18 @@ void TestModified::testSignals()
QCOMPARE(spyModified.count(), spyCount);
QCOMPARE(spyModified2.count(), spyCount2);
-
- delete db;
- delete db2;
}
void TestModified::testGroupSets()
{
int spyCount = 0;
- Database* db = new Database();
- Group* root = db->rootGroup();
+ QScopedPointer<Database> db(new Database());
+ auto* root = db->rootGroup();
- Group* g = new Group();
- g->setParent(root);
+ auto* group = new Group();
+ group->setParent(root);
- QSignalSpy spyModified(db, SIGNAL(modifiedImmediate()));
+ QSignalSpy spyModified(db.data(), SIGNAL(modifiedImmediate()));
root->setUuid(Uuid::random());
QCOMPARE(spyModified.count(), ++spyCount);
@@ -145,46 +142,44 @@ void TestModified::testGroupSets()
QCOMPARE(spyModified.count(), spyCount);
- g->setUuid(Uuid::random());
+ group->setUuid(Uuid::random());
QCOMPARE(spyModified.count(), ++spyCount);
- g->setUuid(g->uuid());
+ group->setUuid(group->uuid());
QCOMPARE(spyModified.count(), spyCount);
- g->setName("test");
+ group->setName("test");
QCOMPARE(spyModified.count(), ++spyCount);
- g->setName(g->name());
+ group->setName(group->name());
QCOMPARE(spyModified.count(), spyCount);
- g->setNotes("test");
+ group->setNotes("test");
QCOMPARE(spyModified.count(), ++spyCount);
- g->setNotes(g->notes());
+ group->setNotes(group->notes());
QCOMPARE(spyModified.count(), spyCount);
- g->setIcon(1);
+ group->setIcon(1);
QCOMPARE(spyModified.count(), ++spyCount);
- g->setIcon(g->iconNumber());
+ group->setIcon(group->iconNumber());
QCOMPARE(spyModified.count(), spyCount);
- g->setIcon(Uuid::random());
+ group->setIcon(Uuid::random());
QCOMPARE(spyModified.count(), ++spyCount);
- g->setIcon(g->iconUuid());
+ group->setIcon(group->iconUuid());
QCOMPARE(spyModified.count(), spyCount);
-
- delete db;
}
void TestModified::testEntrySets()
{
int spyCount = 0;
- Database* db = new Database();
- Group* root = db->rootGroup();
+ QScopedPointer<Database> db(new Database());
+ auto* root = db->rootGroup();
- Group* g = new Group();
- g->setParent(root);
- Entry* entry = new Entry();
- entry->setGroup(g);
+ auto* group = new Group();
+ group->setParent(root);
+ auto* entry = new Entry();
+ entry->setGroup(group);
- QSignalSpy spyModified(db, SIGNAL(modifiedImmediate()));
+ QSignalSpy spyModified(db.data(), SIGNAL(modifiedImmediate()));
entry->setUuid(Uuid::random());
QCOMPARE(spyModified.count(), ++spyCount);
@@ -284,22 +279,18 @@ void TestModified::testEntrySets()
QCOMPARE(spyModified.count(), ++spyCount);
entry->attributes()->set("test key2", entry->attributes()->value("test key2"), true);
QCOMPARE(spyModified.count(), spyCount);
-
- delete db;
}
-void TestModified::testHistoryItem()
+void TestModified::testHistoryItems()
{
- Entry* entry = new Entry();
+ QScopedPointer<Entry> entry(new Entry());
QDateTime created = entry->timeInfo().creationTime();
entry->setUuid(Uuid::random());
entry->setTitle("a");
entry->setTags("a");
- EntryAttributes* attributes = new EntryAttributes();
+ QScopedPointer<EntryAttributes> attributes(new EntryAttributes());
attributes->copyCustomKeysFrom(entry->attributes());
- Entry* historyEntry;
-
int historyItemsSize = 0;
entry->beginUpdate();
@@ -315,7 +306,7 @@ void TestModified::testHistoryItem()
entry->setTitle("b");
entry->endUpdate();
QCOMPARE(entry->historyItems().size(), ++historyItemsSize);
- historyEntry = entry->historyItems().at(historyItemsSize - 1);
+ auto *historyEntry = entry->historyItems().at(historyItemsSize - 1);
QCOMPARE(historyEntry->title(), QString("a"));
QCOMPARE(historyEntry->uuid(), entry->uuid());
QCOMPARE(historyEntry->tags(), entry->tags());
@@ -338,21 +329,17 @@ void TestModified::testHistoryItem()
attributes->set("k", "myvalue");
entry->beginUpdate();
- entry->attributes()->copyCustomKeysFrom(attributes);
+ entry->attributes()->copyCustomKeysFrom(attributes.data());
entry->endUpdate();
QCOMPARE(entry->historyItems().size(), ++historyItemsSize);
QVERIFY(!entry->historyItems().at(historyItemsSize - 1)->attributes()->keys().contains("k"));
- delete attributes;
- delete entry;
-
- Database* db = new Database();
- Group* root = db->rootGroup();
+ QScopedPointer<Database> db(new Database());
+ auto* root = db->rootGroup();
db->metadata()->setHistoryMaxItems(3);
db->metadata()->setHistoryMaxSize(-1);
- Entry* historyEntry2;
- Entry* entry2 = new Entry();
+ auto* entry2 = new Entry();
entry2->setGroup(root);
entry2->beginUpdate();
entry2->setTitle("1");
@@ -378,7 +365,7 @@ void TestModified::testHistoryItem()
entry2->endUpdate();
QCOMPARE(entry2->historyItems().size(), 1);
- historyEntry2 = entry2->historyItems().at(0);
+ auto* historyEntry2 = entry2->historyItems().at(0);
QCOMPARE(historyEntry2->title(), QString("4"));
db->metadata()->setHistoryMaxItems(-1);
@@ -400,12 +387,16 @@ void TestModified::testHistoryItem()
entry2->endUpdate();
QCOMPARE(entry2->historyItems().size(), 0);
+ const int historyMaxSize = 19000;
+
db->metadata()->setHistoryMaxItems(-1);
- db->metadata()->setHistoryMaxSize(17000);
+ db->metadata()->setHistoryMaxSize(historyMaxSize);
+ const QString key("test");
entry2->beginUpdate();
- entry2->attachments()->set("test", QByteArray(18000, 'X'));
+ entry2->attachments()->set(key, QByteArray(18000, 'X'));
entry2->endUpdate();
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 18000 + key.size());
QCOMPARE(entry2->historyItems().size(), 1);
historyEntry2 = entry2->historyItems().at(0);
@@ -417,53 +408,195 @@ void TestModified::testHistoryItem()
QCOMPARE(entry2->historyItems().size(), 2);
entry2->beginUpdate();
- entry2->attachments()->remove("test");
+ entry2->attachments()->remove(key);
entry2->endUpdate();
- QCOMPARE(entry2->historyItems().size(), 0);
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 0);
+ QCOMPARE(entry2->historyItems().size(), 1);
entry2->beginUpdate();
entry2->attachments()->set("test2", QByteArray(6000, 'a'));
entry2->endUpdate();
- QCOMPARE(entry2->historyItems().size(), 1);
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 6000 + key.size() + 1);
+ QCOMPARE(entry2->historyItems().size(), 2);
entry2->beginUpdate();
entry2->attachments()->set("test3", QByteArray(6000, 'b'));
entry2->endUpdate();
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 12000 + (key.size() + 1) * 2);
QCOMPARE(entry2->historyItems().size(), 2);
entry2->beginUpdate();
entry2->attachments()->set("test4", QByteArray(6000, 'c'));
entry2->endUpdate();
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 18000 + (key.size() + 1) * 3);
QCOMPARE(entry2->historyItems().size(), 3);
entry2->beginUpdate();
entry2->attachments()->set("test5", QByteArray(6000, 'd'));
entry2->endUpdate();
- QCOMPARE(entry2->historyItems().size(), 4);
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 24000 + (key.size() + 1) * 4);
+ QCOMPARE(entry2->historyItems().size(), 1);
+}
- Entry* entry3 = new Entry();
- entry3->setGroup(root);
- QCOMPARE(entry3->historyItems().size(), 0);
+void TestModified::testHistoryMaxSize()
+{
+ QScopedPointer<Database> db(new Database());
+ const QString key("test");
- entry3->beginUpdate();
- entry3->attachments()->set("test", QByteArray(6000, 'a'));
- entry3->endUpdate();
- QCOMPARE(entry3->historyItems().size(), 1);
+ auto entry1 = new Entry();
+ entry1->setGroup(db->rootGroup());
+ QCOMPARE(entry1->historyItems().size(), 0);
- entry3->beginUpdate();
- entry3->attachments()->set("test", QByteArray(6000, 'b'));
- entry3->endUpdate();
- QCOMPARE(entry3->historyItems().size(), 2);
+ const int reservedSize1 = entry1->attributes()->attributesSize();
+ db->metadata()->setHistoryMaxItems(-1);
+ db->metadata()->setHistoryMaxSize(18000 + key.size() * 3 + reservedSize1 * 4);
+
+ entry1->beginUpdate();
+ entry1->attachments()->set(key, QByteArray(6000, 'a'));
+ entry1->endUpdate();
+ QCOMPARE(entry1->attachments()->attachmentsSize(), 6000 + key.size());
+ QCOMPARE(entry1->historyItems().size(), 1);
+
+ entry1->beginUpdate();
+ entry1->attachments()->set(key, QByteArray(6000, 'b'));
+ entry1->endUpdate();
+ QCOMPARE(entry1->attachments()->attachmentsSize(), 6000 + key.size());
+ QCOMPARE(entry1->historyItems().size(), 2);
+
+ entry1->beginUpdate();
+ entry1->attachments()->set(key, QByteArray(6000, 'c'));
+ entry1->endUpdate();
+ QCOMPARE(entry1->attachments()->attachmentsSize(), 6000 + key.size());
+ QCOMPARE(entry1->historyItems().size(), 3);
+
+ entry1->beginUpdate();
+ entry1->attachments()->set(key, QByteArray(6000, 'd'));
+ entry1->endUpdate();
+ QCOMPARE(entry1->attachments()->attachmentsSize(), 6000 + key.size());
+ QCOMPARE(entry1->historyItems().size(), 4);
+
+
+ auto entry2 = new Entry();
+ entry2->setGroup(db->rootGroup());
+ QCOMPARE(entry2->historyItems().size(), 0);
- entry3->beginUpdate();
- entry3->attachments()->set("test", QByteArray(6000, 'c'));
- entry3->endUpdate();
- QCOMPARE(entry3->historyItems().size(), 3);
+ const int historyMaxSize = 17000;
+ const int reservedSize2 = entry2->attributes()->attributesSize();
+ db->metadata()->setHistoryMaxSize(historyMaxSize);
- entry3->beginUpdate();
- entry3->attachments()->set("test", QByteArray(6000, 'd'));
- entry3->endUpdate();
- QCOMPARE(entry3->historyItems().size(), 2);
+ entry2->beginUpdate();
+ entry2->attachments()->set(key, QByteArray(historyMaxSize - key.size() - reservedSize2 + 1, 'a'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->attachments()->attachmentsSize(), historyMaxSize - reservedSize2 + 1);
+ QCOMPARE(entry2->historyItems().size(), 1);
+
+ // history size overflow
+ entry2->beginUpdate();
+ entry2->attachments()->set(key, QByteArray(historyMaxSize - key.size() - reservedSize2 + 1, 'b'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ entry2->attachments()->remove(key);
+ entry2->endUpdate();
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 0);
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ entry2->attachments()->set(key, QByteArray(historyMaxSize - key.size() - reservedSize2 + 1, 'a'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->attachments()->attachmentsSize(), historyMaxSize - reservedSize2 + 1);
+ QCOMPARE(entry2->historyItems().size(), 1);
+
+ // history size overflow
+ entry2->beginUpdate();
+ entry2->attachments()->set(key, QByteArray(historyMaxSize - key.size() - reservedSize2 + 1, 'b'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ entry2->attachments()->remove(key);
+ entry2->endUpdate();
+ QCOMPARE(entry2->attachments()->attachmentsSize(), 0);
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ entry2->setTags(QByteArray(historyMaxSize - reservedSize2 + 1, 'a'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->tags().size(), historyMaxSize - reservedSize2 + 1);
+ QCOMPARE(entry2->historyItems().size(), 1);
- delete db;
+ // history size overflow
+ entry2->beginUpdate();
+ entry2->setTags(QByteArray(historyMaxSize - reservedSize2 + 1, 'b'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ entry2->setTags("");
+ entry2->endUpdate();
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ entry2->attributes()->set(key, QByteArray(historyMaxSize - key.size() - reservedSize2 + 1, 'a'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->attributes()->attributesSize(), historyMaxSize + 1);
+ QCOMPARE(entry2->historyItems().size(), 1);
+
+ // history size overflow
+ entry2->beginUpdate();
+ entry2->attributes()->set(key, QByteArray(historyMaxSize - key.size() - reservedSize2 + 1, 'b'));
+ entry2->endUpdate();
+ QCOMPARE(entry2->attributes()->attributesSize(), historyMaxSize + 1);
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ entry2->attributes()->remove(key);
+ entry2->endUpdate();
+ QCOMPARE(entry2->attributes()->attributesSize(), reservedSize2);
+ QCOMPARE(entry2->historyItems().size(), 0);
+
+ entry2->beginUpdate();
+ AutoTypeAssociations::Association association;
+ association.window = key;
+ association.sequence = QByteArray(historyMaxSize - key.size() - reservedSize2 + 1, 'a');
+ entry2->autoTypeAssociations()->add(association);
+ entry2->endUpdate();
+ QCOMPARE(entry2->autoTypeAssociations()->associationsSize(), historyMaxSize - reservedSize2 + 1);
+ QCOMPARE(entry2->historyItems().size(), 1);
+
+ entry2->beginUpdate();
+ entry2->autoTypeAssociations()->remove(0);
+ entry2->endUpdate();
+ QCOMPARE(entry2->autoTypeAssociations()->associationsSize(), 0);
+ QCOMPARE(entry2->historyItems().size(), 0);
+}
+
+void TestModified::testCustomData()
+{
+ int spyCount = 0;
+ QScopedPointer<Database> db(new Database());
+ auto* root = db->rootGroup();
+
+ auto* group = new Group();
+ group->setParent(root);
+ auto* entry = new Entry();
+ entry->setGroup(group);
+
+ QSignalSpy spyModified(db.data(), SIGNAL(modifiedImmediate()));
+
+ db->metadata()->customData()->set("Key", "Value");
+ QCOMPARE(spyModified.count(), ++spyCount);
+ db->metadata()->customData()->set("Key", "Value");
+ QCOMPARE(spyModified.count(), spyCount);
+
+ entry->customData()->set("Key", "Value");
+ QCOMPARE(spyModified.count(), ++spyCount);
+ entry->customData()->set("Key", "Value");
+ QCOMPARE(spyModified.count(), spyCount);
+
+ group->customData()->set("Key", "Value");
+ QCOMPARE(spyModified.count(), ++spyCount);
+ group->customData()->set("Key", "Value");
+ QCOMPARE(spyModified.count(), spyCount);
}
diff --git a/tests/TestModified.h b/tests/TestModified.h
index 518bea7c0..581562fa5 100644
--- a/tests/TestModified.h
+++ b/tests/TestModified.h
@@ -29,7 +29,9 @@ private slots:
void testSignals();
void testGroupSets();
void testEntrySets();
- void testHistoryItem();
+ void testHistoryItems();
+ void testHistoryMaxSize();
+ void testCustomData();
};
#endif // KEEPASSX_TESTMODIFIED_H
diff --git a/tests/TestOpenSSHKey.cpp b/tests/TestOpenSSHKey.cpp
new file mode 100644
index 000000000..8ac129866
--- /dev/null
+++ b/tests/TestOpenSSHKey.cpp
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TestOpenSSHKey.h"
+#include "TestGlobal.h"
+#include "sshagent/OpenSSHKey.h"
+#include "crypto/Crypto.h"
+
+QTEST_GUILESS_MAIN(TestOpenSSHKey)
+
+void TestOpenSSHKey::initTestCase()
+{
+ QVERIFY(Crypto::init());
+}
+
+void TestOpenSSHKey::testParse()
+{
+ // mixed line endings and missing ones are intentional, we only require 3 lines total
+ const QString keyString = QString(
+ "\r\n\r"
+ "-----BEGIN OPENSSH PRIVATE KEY-----\n"
+ "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW"
+ "QyNTUxOQAAACDdlO5F2kF2WzedrBAHBi9wBHeISzXZ0IuIqrp0EzeazAAAAKjgCfj94An4"
+ "/QAAAAtzc2gtZWQyNTUxOQAAACDdlO5F2kF2WzedrBAHBi9wBHeISzXZ0IuIqrp0EzeazA"
+ "AAAEBe1iilZFho8ZGAliiSj5URvFtGrgvmnEKdiLZow5hOR92U7kXaQXZbN52sEAcGL3AE"
+ "d4hLNdnQi4iqunQTN5rMAAAAH29wZW5zc2hrZXktdGVzdC1wYXJzZUBrZWVwYXNzeGMBAg"
+ "MEBQY=\r"
+ "-----END OPENSSH PRIVATE KEY-----\r\n\r"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(!key.encrypted());
+ QCOMPARE(key.cipherName(), QString("none"));
+ QCOMPARE(key.type(), QString("ssh-ed25519"));
+ QCOMPARE(key.comment(), QString("opensshkey-test-parse@keepassxc"));
+ QCOMPARE(key.fingerprint(), QString("SHA256:D1fVmA15YXzaJ5sdO9dXxo5coHL/pnNaIfCvokHzTA4"));
+
+ QByteArray publicKey, privateKey;
+ BinaryStream publicStream(&publicKey), privateStream(&privateKey);
+
+ QVERIFY(key.writePublic(publicStream));
+ QVERIFY(key.writePrivate(privateStream));
+
+ QVERIFY(publicKey.length() == 51);
+ QVERIFY(privateKey.length() == 154);
+}
+
+void TestOpenSSHKey::testParseDSA()
+{
+ const QString keyString = QString(
+ "-----BEGIN DSA PRIVATE KEY-----\n"
+ "MIIBuwIBAAKBgQCudjbvSh8JxQOr2laCqZM1t4kNWBETVOXz5vgk9iw6Z5opB9/k\n"
+ "g4nFc1PVq7fdAIc8W/5WCAjugKcxPb9PIHfcwY2fimmiPWFK68/eHKLoCuIn2wxB\n"
+ "63ig2hAhx5U5aYG9QHkNCaT6VX7rc19nToSeZXlpja4x54/DaQaqOEWYsQIVAOer\n"
+ "UQWfccz7KXUu6+x7heGob6I3AoGAVDRFJIlL0DI/4nePIcgwgwbfgs2ojSu21g4w\n"
+ "dQoXvqU34XydPgPQ985XIIuiDkaomRw4yYd/Sh4ZapFcrP++iJ1V+WS6kLcWPHMq\n"
+ "poYwk8mq6GLbPFLEjr+n6HgX5ln15n3i4WAopNH7mEl0glY9L0rxmcN0XOpqw6Ux\n"
+ "ETGEfAwCgYAiOeYwblMkkTIGtVx5NvNsOlfrBYL4GqUP9oQMO5I+xLZLWQIf+7Jp\n"
+ "8t6mwxSBz0RHjNVQ11vZowNjq3587aLy57bVwf2lIm9KSvS6z9HoNbHgQimcBorR\n"
+ "J9l9RUrj7TnsZgiVw66j2r34nHRHRtggiO+qrMtw7MJc0Q7jiuTmzgIVAMXbk0T9\n"
+ "nBfSLWQz/L8RexU2GR4e\n"
+ "-----END DSA PRIVATE KEY-----\n"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(!key.encrypted());
+ QCOMPARE(key.cipherName(), QString("none"));
+ QCOMPARE(key.type(), QString("ssh-dss"));
+ QCOMPARE(key.comment(), QString(""));
+ QCOMPARE(key.fingerprint(), QString("SHA256:tbbNuLN1hja8JNASDTlLOZQsbTlJDzJlz/oAGK3sX18"));
+}
+
+void TestOpenSSHKey::testDecryptAES128CBC()
+{
+ const QString keyString = QString(
+ "-----BEGIN RSA PRIVATE KEY-----\n"
+ "Proc-Type: 4,ENCRYPTED\n"
+ "DEK-Info: AES-128-CBC,804E4D214D1263FF94E3743FE799DBB4\n"
+ "\n"
+ "lM9TDfOTbiRhaGGDh7Hn+rqw8CCWcYBZYu7smyYLdnWKXKPmbne8CQFZBAS1FJwZ\n"
+ "6Mj6n075yFGyzN9/OfeqKiUA4adlbwLbGwB+yyKsC2FlsvRIEr4hup02WWM47vHj\n"
+ "DS4TRmNkE7MKFLhpNCyt5OGGM45s+/lwVTw51K0Hm99TBd72IrX4jfY9ZxAVbL3l\n"
+ "aTohL8x6oOTe7q318QgJoFi+DjJhDWLGLLJ7fBqD2imz2fmrY4j8Jpw2sDe1rj82\n"
+ "gMqqNG3FrfN0S4uYlWYH5pAh+BUcB1UdmTU/rV5wJMK1oUytmZv/J2+X/0k3Y93F\n"
+ "aw6JWOy28OizW+TQXvv8gREWsp5PEclqUZhhGQbVbCQCiDOxg+xiXNySdRH1IqjR\n"
+ "zQiKgD4SPzkxQekExPaIQT/KutWZdMNYybEqooCx8YyeDoN31z7Wa2rv6OulOn/j\n"
+ "wJFvyd2PT/6brHKI4ky8RYroDf4FbVYKfyEW5CSAg2OyL/tY/kSPgy/k0WT7fDwq\n"
+ "dPSuYM9yeWNL6kAhDqDOv8+s3xvOVEljktBvQvItQwVLmHszC3E2AcnaxzdblKPu\n"
+ "e3+mBT80NXHjERK2ht+/9JYseK1ujNbNAaG8SbKfU3FF0VlyJ0QW6TuIEdpNnymT\n"
+ "0fm0cDfKNaoeJIFnBRZhgIOJAic9DM0cTe/vSG69DaUYsaQPp36al7Fbux3GpFHS\n"
+ "OtJEySYGro/6zvJ9dDIEfIGZjA3RaMt6+DuyJZXQdT2RNXa9j60xW7dXh0En4n82\n"
+ "JUKTxYhDPLS5c8BzpJqoopxpKwElmrJ7Y3xpd6z2vIlD8ftuZrkk6siTMNQ2s7MI\n"
+ "Xl332O+0H4k7uSfczHPOOw36TFhNjGQAP0b7O+0/RVG0ttOIoAn7ZkX3nfdbtG5B\n"
+ "DWKvDaopvrcC2/scQ5uLUnqnBiGw1XiYpdg5ang7knHNzHZAIekVaYYZigpCAKp+\n"
+ "OtoaDeUEzqFhYVmF8ad1fgvC9ZUsuxS4XUHCKl0H6CJcvW9MJPVbveqYoK+j9qKd\n"
+ "iMIkQBP1kE2rzGZVGUkZTpM9LVD9nP0nsbr6E8BatFcNgRirsg2BTJglNpXlCmY6\n"
+ "ldzJ/ELBbzoXIn+0wTGai0o4eBPx55baef69JfPuZqEB9pLNE+mHstrqIwcfqYu4\n"
+ "M+Vzun1QshRMj9a1PVkIHfs1fLeebI4QCHO0vJlc9K4iYPM4rsDNO3YaAgGRuARS\n"
+ "f3McGiGFxkv5zxe8i05ZBnn+exE77jpRKxd223jAMe2wu4WiFB7ZVo4Db6b5Oo2T\n"
+ "TPh3VuY7TNMEKkcUi+mGLKjroocQ5j8WQYlfnyOaTalUVQDzOTNb67QIIoiszR0U\n"
+ "+AXGyxHj0QtotZFoPME+AbS9Zqy3SgSOuIzPBPU5zS4uoKNdD5NPE5YAuafCjsDy\n"
+ "MT4DVy+cPOQYUK022S7T2nsA1btmvUvD5LL2Mc8VuKsWOn/7FKZua6OCfipt6oX0\n"
+ "1tzYrw0/ALK+CIdVdYIiPPfxGZkr+JSLOOg7u50tpmen9GzxgNTv63miygwUAIDF\n"
+ "u0GbQwOueoA453/N75FcXOgrbqTdivyadUbRP+l7YJk/SfIytyJMOigejp+Z1lzF\n"
+ "-----END RSA PRIVATE KEY-----\n"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(key.encrypted());
+ QCOMPARE(key.cipherName(), QString("AES-128-CBC"));
+ QVERIFY(!key.openPrivateKey("incorrectpassphrase"));
+ QVERIFY(key.openPrivateKey("correctpassphrase"));
+ QCOMPARE(key.type(), QString("ssh-rsa"));
+ QCOMPARE(key.comment(), QString(""));
+ QCOMPARE(key.fingerprint(), QString("SHA256:1Hsebt2WWnmc72FERsUOgvaajIGHkrMONxXylcmk87U"));
+}
+
+void TestOpenSSHKey::testParseRSA()
+{
+ const QString keyString = QString(
+ "-----BEGIN RSA PRIVATE KEY-----\n"
+ "MIIEpAIBAAKCAQEAsCHtJicDPWnvHSIKbnTZaJkIB9vgE0pmLdK580JUqBuonVbB\n"
+ "y1QTy0ZQ7/TtqvLPgwPK88TR46OLO/QGCzo2+XxgJ85uy0xfuyUYRmSuw0drsErN\n"
+ "mH8vU91lSBxsGDp9LtBbgHKoR23vMWZ34IxFRc55XphrIH48ijsMaL6bXBwF/3tD\n"
+ "9T3lm2MpP1huyVNnIY9+GRRWCy4f9LMj/UGu/n4RtwwfpOZBBRwYkq5QkzA9lPm/\n"
+ "VzF3MP1rKTMkvAw+Nfb383mkmc6MRnsa6uh6iDa9aVB7naegM13UJQX/PY1Ks6pO\n"
+ "XDpy/MQ7iCh+HmYNq5dRmARyaNl9xIXJNhz1cQIDAQABAoIBAQCnEUc1LUQxeM5K\n"
+ "wANNCqE+SgoIClPdeHC7fmrLh1ttqe6ib6ybBUFRS31yXs0hnfefunVEDKlaV8K2\n"
+ "N52UAMAsngFHQNRvGh6kEWeZPd9Xc+N98TZbNCjcT+DGKc+Om8wqH5DrodZlCq4c\n"
+ "GaoT4HnE4TjWtZTH2XXrWF9I66PKFWf070R44nvyVcvaZi4pC2YmURRPuGF6K1iK\n"
+ "dH8zM6HHG1UGu2W6hLNn+K01IulG0Lb8eWNaNYMmtQWaxyp7I2IWkkecUs3nCuiR\n"
+ "byFOoomCjdh8r9yZFvwxjGUhgtkALN9GCU0Mwve+s11IB2gevruN+q9/Qejbyfdm\n"
+ "IlgLAeTRAoGBANRcVzW9CYeobCf+U9hKJFEOur8XO+J2mTMaELA0EjWpTJFAeIT7\n"
+ "KeRpCRG4/vOSklxxRF6vP1EACA4Z+5BlN+FTipHHs+bSEgqkPZiiANDH7Zot5Iqv\n"
+ "1q0fRyldNRZNZK7DWp08BPNVWGA/EnEuKJiURxnxBaxNXbUyMCdjxvMvAoGBANRT\n"
+ "utbrqS/bAa/DcHKn3V6DRqBl3TDOfvCNjiKC84a67F2uXgzLIdMktr4d1NyCZVJd\n"
+ "7/zVgWORLIdg1eAi6rYGoOvNV39wwga7CF+m9sBY0wAaKYCELe6L26r4aQHVCX6n\n"
+ "rnIgUv+4o4itmU2iP0r3wlmDC9pDRQP82vfvQPlfAoGASwhleANW/quvq2HdViq8\n"
+ "Mje2HBalfhrRfpDTHK8JUBSFjTzuWG42GxJRtgVbb8x2ElujAKGDCaetMO5VSGu7\n"
+ "Fs5hw6iAFCpdXY0yhl+XUi2R8kwM2EPQ4lKO3jqkq0ClNmqn9a5jQWcCVt9yMLNS\n"
+ "fLbHeI8EpiCf34ngIcrLXNkCgYEAzlcEZuKkC46xB+dNew8pMTUwSKZVm53BfPKD\n"
+ "44QRN6imFbBjU9mAaJnwQbfp6dWKs834cGPolyM4++MeVfB42iZ88ksesgmZdUMD\n"
+ "szkl6O0pOJs0I+HQZVdjRbadDZvD22MHQ3+oST1dJ3FVXz3Cdo9qPuT8esMO6f4r\n"
+ "qfDH2s8CgYAXC/lWWHQ//PGP0pH4oiEXisx1K0X1u0xMGgrChxBRGRiKZUwNMIvJ\n"
+ "TqUu7IKizK19cLHF/NBvxHYHFw+m7puNjn6T1RtRCUjRZT7Dx1VHfVosL9ih5DA8\n"
+ "tpbZA5KGKcvHtB5DDgT0MHwzBZnb4Q//Rhovzn+HXZPsJTTgHHy3NQ==\n"
+ "-----END RSA PRIVATE KEY-----\n"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(!key.encrypted());
+ QCOMPARE(key.cipherName(), QString("none"));
+ QCOMPARE(key.type(), QString("ssh-rsa"));
+ QCOMPARE(key.comment(), QString(""));
+ QCOMPARE(key.fingerprint(), QString("SHA256:DYdaZciYNxCejr+/8x+OKYxeTU1D5UsuIFUG4PWRFkk"));
+}
+
+void TestOpenSSHKey::testDecryptAES256CBC()
+{
+ const QString keyString = QString(
+ "-----BEGIN OPENSSH PRIVATE KEY-----\n"
+ "b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jYmMAAAAGYmNyeXB0AAAAGAAAABD2A0agtd\n"
+ "oGtJiI9JvIxYbTAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIDPvDXmi0w1rdMoX\n"
+ "fOeyZ0Q/v+wqq/tPFgJwxnW5ADtfAAAAsC3UPsf035hrF5SgZ48p55iDFPiyGfZC/C3vQx\n"
+ "+THzpQo8DTUmFokdPn8wvDYGQoIcr9q0RzJuKV87eMQf3zzvZfJthtLYBlt330Deivv9AQ\n"
+ "MbKdhPZ4SfwRvv0grgT2EVId3GQAPgSVBhXYQTOf2CdmbXV4kieFLTmSsBMy+v6Qn5Rqur\n"
+ "PDWBwuLQgamcVDZuhrkUEqIVJZU2zAiRU2oAXsw/XOgFV6+Y5UZmLwWJQZ\n"
+ "-----END OPENSSH PRIVATE KEY-----\n"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(key.encrypted());
+ QCOMPARE(key.cipherName(), QString("aes256-cbc"));
+ QVERIFY(!key.openPrivateKey("incorrectpassphrase"));
+ QVERIFY(key.openPrivateKey("correctpassphrase"));
+ QCOMPARE(key.type(), QString("ssh-ed25519"));
+ QCOMPARE(key.comment(), QString("opensshkey-test-aes256cbc@keepassxc"));
+
+ QByteArray publicKey, privateKey;
+ BinaryStream publicStream(&publicKey), privateStream(&privateKey);
+
+ QVERIFY(key.writePublic(publicStream));
+ QVERIFY(key.writePrivate(privateStream));
+
+ QVERIFY(publicKey.length() == 51);
+ QVERIFY(privateKey.length() == 158);
+}
+
+void TestOpenSSHKey::testDecryptAES256CTR()
+{
+ const QString keyString = QString(
+ "-----BEGIN OPENSSH PRIVATE KEY-----\n"
+ "b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAMhIAypt\n"
+ "WP4tZJBmMwq0tTAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIErNsS8ROy43XoWC\n"
+ "nO9Sn2lEFBJYcDVtRPM1t6WB7W7OAAAAsFKXMOlPILoTmMj2JmcqzjaYAhaCezx18HDp76\n"
+ "VrNxaZTd0T28EGFSkzrReeewpJWy/bWlhLoXR5fRyOSSto+iMg/pibIvIJMrD5sqxlxr/e\n"
+ "c5lSeSZUzIK8Rv+ou/3EFDcY5jp8hVXqA4qNtoM/3fV52vmwlNje5d1V5Gsr4U8443+i+p\n"
+ "swqksozfatkynk51uR/9QFoOJKlsL/Z3LkK1S/apYz/K331iU1f5ozFELf\n"
+ "-----END OPENSSH PRIVATE KEY-----\n"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(key.encrypted());
+ QCOMPARE(key.cipherName(), QString("aes256-ctr"));
+ QVERIFY(!key.openPrivateKey("incorrectpassphrase"));
+ QVERIFY(key.openPrivateKey("correctpassphrase"));
+ QCOMPARE(key.type(), QString("ssh-ed25519"));
+ QCOMPARE(key.comment(), QString("opensshkey-test-aes256ctr@keepassxc"));
+
+ QByteArray publicKey, privateKey;
+ BinaryStream publicStream(&publicKey), privateStream(&privateKey);
+
+ QVERIFY(key.writePublic(publicStream));
+ QVERIFY(key.writePrivate(privateStream));
+
+ QVERIFY(publicKey.length() == 51);
+ QVERIFY(privateKey.length() == 158);
+}
diff --git a/tests/TestKeePass2Reader.h b/tests/TestOpenSSHKey.h
index 76ffe0297..5d2724410 100644
--- a/tests/TestKeePass2Reader.h
+++ b/tests/TestOpenSSHKey.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,23 +15,25 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_TESTKEEPASS2READER_H
-#define KEEPASSX_TESTKEEPASS2READER_H
+#ifndef TESTOPENSSHKEY_H
+#define TESTOPENSSHKEY_H
#include <QObject>
-class TestKeePass2Reader : public QObject
+class OpenSSHKey;
+
+class TestOpenSSHKey : public QObject
{
Q_OBJECT
private slots:
void initTestCase();
- void testNonAscii();
- void testCompressed();
- void testProtectedStrings();
- void testBrokenHeaderHash();
- void testFormat200();
- void testFormat300();
+ void testParse();
+ void testParseDSA();
+ void testParseRSA();
+ void testDecryptAES128CBC();
+ void testDecryptAES256CBC();
+ void testDecryptAES256CTR();
};
-#endif // KEEPASSX_TESTKEEPASS2READER_H
+#endif // TESTOPENSSHKEY_H
diff --git a/tests/TestRandom.cpp b/tests/TestRandom.cpp
index 6c5b1f724..7575e3a58 100644
--- a/tests/TestRandom.cpp
+++ b/tests/TestRandom.cpp
@@ -16,11 +16,10 @@
*/
#include "TestRandom.h"
-
+#include "TestGlobal.h"
#include "core/Endian.h"
#include "core/Global.h"
-#include <QTest>
QTEST_GUILESS_MAIN(TestRandom)
@@ -35,29 +34,29 @@ void TestRandom::testUInt()
{
QByteArray nextBytes;
- nextBytes = Endian::int32ToBytes(42, QSysInfo::ByteOrder);
+ nextBytes = Endian::sizedIntToBytes(42, QSysInfo::ByteOrder);
m_backend->setNextBytes(nextBytes);
QCOMPARE(randomGen()->randomUInt(100), 42U);
- nextBytes = Endian::int32ToBytes(117, QSysInfo::ByteOrder);
+ nextBytes = Endian::sizedIntToBytes(117, QSysInfo::ByteOrder);
m_backend->setNextBytes(nextBytes);
QCOMPARE(randomGen()->randomUInt(100), 17U);
- nextBytes = Endian::int32ToBytes(1001, QSysInfo::ByteOrder);
+ nextBytes = Endian::sizedIntToBytes(1001, QSysInfo::ByteOrder);
m_backend->setNextBytes(nextBytes);
QCOMPARE(randomGen()->randomUInt(1), 0U);
nextBytes.clear();
- nextBytes.append(Endian::int32ToBytes(QUINT32_MAX, QSysInfo::ByteOrder));
- nextBytes.append(Endian::int32ToBytes(QUINT32_MAX - 70000U, QSysInfo::ByteOrder));
+ nextBytes.append(Endian::sizedIntToBytes(QUINT32_MAX, QSysInfo::ByteOrder));
+ nextBytes.append(Endian::sizedIntToBytes(QUINT32_MAX - 70000U, QSysInfo::ByteOrder));
m_backend->setNextBytes(nextBytes);
QCOMPARE(randomGen()->randomUInt(100000U), (QUINT32_MAX - 70000U) % 100000U);
nextBytes.clear();
for (int i = 0; i < 10000; i++) {
- nextBytes.append(Endian::int32ToBytes((QUINT32_MAX / 2U) + 1U + i, QSysInfo::ByteOrder));
+ nextBytes.append(Endian::sizedIntToBytes((QUINT32_MAX / 2U) + 1U + i, QSysInfo::ByteOrder));
}
- nextBytes.append(Endian::int32ToBytes(QUINT32_MAX / 2U, QSysInfo::ByteOrder));
+ nextBytes.append(Endian::sizedIntToBytes(QUINT32_MAX / 2U, QSysInfo::ByteOrder));
m_backend->setNextBytes(nextBytes);
QCOMPARE(randomGen()->randomUInt((QUINT32_MAX / 2U) + 1U), QUINT32_MAX / 2U);
}
@@ -66,7 +65,7 @@ void TestRandom::testUIntRange()
{
QByteArray nextBytes;
- nextBytes = Endian::int32ToBytes(42, QSysInfo::ByteOrder);
+ nextBytes = Endian::sizedIntToBytes(42, QSysInfo::ByteOrder);
m_backend->setNextBytes(nextBytes);
QCOMPARE(randomGen()->randomUIntRange(100, 200), 142U);
}
diff --git a/tests/TestSymmetricCipher.cpp b/tests/TestSymmetricCipher.cpp
index 5242c3888..a5159e0d6 100644
--- a/tests/TestSymmetricCipher.cpp
+++ b/tests/TestSymmetricCipher.cpp
@@ -17,9 +17,9 @@
*/
#include "TestSymmetricCipher.h"
+#include "TestGlobal.h"
#include <QBuffer>
-#include <QTest>
#include "crypto/Crypto.h"
#include "crypto/SymmetricCipher.h"
@@ -32,6 +32,90 @@ void TestSymmetricCipher::initTestCase()
QVERIFY(Crypto::init());
}
+void TestSymmetricCipher::testAes128CbcEncryption()
+{
+ // http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
+
+ QByteArray key = QByteArray::fromHex("2b7e151628aed2a6abf7158809cf4f3c");
+ QByteArray iv = QByteArray::fromHex("000102030405060708090a0b0c0d0e0f");
+ QByteArray plainText = QByteArray::fromHex("6bc1bee22e409f96e93d7e117393172a");
+ plainText.append(QByteArray::fromHex("ae2d8a571e03ac9c9eb76fac45af8e51"));
+ QByteArray cipherText = QByteArray::fromHex("7649abac8119b246cee98e9b12e9197d");
+ cipherText.append(QByteArray::fromHex("5086cb9b507219ee95db113a917678b2"));
+ bool ok;
+
+ SymmetricCipher cipher(SymmetricCipher::Aes128, SymmetricCipher::Cbc, SymmetricCipher::Encrypt);
+ QVERIFY(cipher.init(key, iv));
+ QCOMPARE(cipher.blockSize(), 16);
+ QCOMPARE(cipher.process(plainText, &ok), cipherText);
+ QVERIFY(ok);
+
+ QBuffer buffer;
+ SymmetricCipherStream stream(&buffer, SymmetricCipher::Aes128, SymmetricCipher::Cbc,
+ SymmetricCipher::Encrypt);
+ QVERIFY(stream.init(key, iv));
+ buffer.open(QIODevice::WriteOnly);
+ QVERIFY(stream.open(QIODevice::WriteOnly));
+ QVERIFY(stream.reset());
+
+ buffer.reset();
+ buffer.buffer().clear();
+ QCOMPARE(stream.write(plainText.left(16)), qint64(16));
+ QCOMPARE(buffer.data(), cipherText.left(16));
+ QVERIFY(stream.reset());
+ // make sure padding is written
+ QCOMPARE(buffer.data().size(), 32);
+
+ buffer.reset();
+ buffer.buffer().clear();
+ QCOMPARE(stream.write(plainText.left(10)), qint64(10));
+ QVERIFY(buffer.data().isEmpty());
+
+ QVERIFY(stream.reset());
+ buffer.reset();
+ buffer.buffer().clear();
+ QCOMPARE(stream.write(plainText.left(10)), qint64(10));
+ stream.close();
+ QCOMPARE(buffer.data().size(), 16);
+}
+
+void TestSymmetricCipher::testAes128CbcDecryption()
+{
+ QByteArray key = QByteArray::fromHex("2b7e151628aed2a6abf7158809cf4f3c");
+ QByteArray iv = QByteArray::fromHex("000102030405060708090a0b0c0d0e0f");
+ QByteArray cipherText = QByteArray::fromHex("7649abac8119b246cee98e9b12e9197d");
+ cipherText.append(QByteArray::fromHex("5086cb9b507219ee95db113a917678b2"));
+ QByteArray plainText = QByteArray::fromHex("6bc1bee22e409f96e93d7e117393172a");
+ plainText.append(QByteArray::fromHex("ae2d8a571e03ac9c9eb76fac45af8e51"));
+ bool ok;
+
+ SymmetricCipher cipher(SymmetricCipher::Aes128, SymmetricCipher::Cbc, SymmetricCipher::Decrypt);
+ QVERIFY(cipher.init(key, iv));
+ QCOMPARE(cipher.blockSize(), 16);
+ QCOMPARE(cipher.process(cipherText, &ok), plainText);
+ QVERIFY(ok);
+
+ // padded with 16 0x10 bytes
+ QByteArray cipherTextPadded = cipherText + QByteArray::fromHex("55e21d7100b988ffec32feeafaf23538");
+ QBuffer buffer(&cipherTextPadded);
+ SymmetricCipherStream stream(&buffer, SymmetricCipher::Aes128, SymmetricCipher::Cbc,
+ SymmetricCipher::Decrypt);
+ QVERIFY(stream.init(key, iv));
+ buffer.open(QIODevice::ReadOnly);
+ QVERIFY(stream.open(QIODevice::ReadOnly));
+
+ QCOMPARE(stream.read(10), plainText.left(10));
+ buffer.reset();
+ QVERIFY(stream.reset());
+ QCOMPARE(stream.read(20), plainText.left(20));
+ buffer.reset();
+ QVERIFY(stream.reset());
+ QCOMPARE(stream.read(16), plainText.left(16));
+ buffer.reset();
+ QVERIFY(stream.reset());
+ QCOMPARE(stream.read(100), plainText);
+}
+
void TestSymmetricCipher::testAes256CbcEncryption()
{
// http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
@@ -124,6 +208,46 @@ void TestSymmetricCipher::testAes256CbcDecryption()
plainText);
}
+void TestSymmetricCipher::testAes256CtrEncryption()
+{
+ // http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
+
+ QByteArray key = QByteArray::fromHex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4");
+ QByteArray ctr = QByteArray::fromHex("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff");
+ QByteArray plainText = QByteArray::fromHex("6bc1bee22e409f96e93d7e117393172a");
+ plainText.append(QByteArray::fromHex("ae2d8a571e03ac9c9eb76fac45af8e51"));
+ QByteArray cipherText = QByteArray::fromHex("601ec313775789a5b7a7f504bbf3d228");
+ cipherText.append(QByteArray::fromHex("f443e3ca4d62b59aca84e990cacaf5c5"));
+ bool ok;
+
+ SymmetricCipher cipher(SymmetricCipher::Aes256, SymmetricCipher::Ctr, SymmetricCipher::Encrypt);
+ QVERIFY(cipher.init(key, ctr));
+ QCOMPARE(cipher.blockSize(), 16);
+
+ QCOMPARE(cipher.process(plainText, &ok),
+ cipherText);
+ QVERIFY(ok);
+}
+
+void TestSymmetricCipher::testAes256CtrDecryption()
+{
+ QByteArray key = QByteArray::fromHex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4");
+ QByteArray ctr = QByteArray::fromHex("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff");
+ QByteArray cipherText = QByteArray::fromHex("601ec313775789a5b7a7f504bbf3d228");
+ cipherText.append(QByteArray::fromHex("f443e3ca4d62b59aca84e990cacaf5c5"));
+ QByteArray plainText = QByteArray::fromHex("6bc1bee22e409f96e93d7e117393172a");
+ plainText.append(QByteArray::fromHex("ae2d8a571e03ac9c9eb76fac45af8e51"));
+ bool ok;
+
+ SymmetricCipher cipher(SymmetricCipher::Aes256, SymmetricCipher::Ctr, SymmetricCipher::Decrypt);
+ QVERIFY(cipher.init(key, ctr));
+ QCOMPARE(cipher.blockSize(), 16);
+
+ QCOMPARE(cipher.process(cipherText, &ok),
+ plainText);
+ QVERIFY(ok);
+}
+
void TestSymmetricCipher::testTwofish256CbcEncryption()
{
// NIST MCT Known-Answer Tests (cbc_e_m.txt)
@@ -302,6 +426,56 @@ void TestSymmetricCipher::testSalsa20()
QCOMPARE(cipherTextB.mid(448, 64), expectedCipherText4);
}
+void TestSymmetricCipher::testChaCha20()
+{
+ // https://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-04#section-7
+ bool ok;
+
+ {
+ QByteArray key = QByteArray::fromHex("0000000000000000000000000000000000000000000000000000000000000000");
+ QByteArray iv = QByteArray::fromHex("0000000000000000");
+ SymmetricCipher cipher(SymmetricCipher::ChaCha20, SymmetricCipher::Stream, SymmetricCipher::Encrypt);
+ QVERIFY(cipher.init(key, iv));
+ QCOMPARE(cipher.process(QByteArray(64, 0), &ok),
+ QByteArray::fromHex(
+ "76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586"));
+ QVERIFY(ok);
+ }
+
+ {
+ QByteArray key = QByteArray::fromHex("0000000000000000000000000000000000000000000000000000000000000001");
+ QByteArray iv = QByteArray::fromHex("0000000000000000");
+ SymmetricCipher cipher(SymmetricCipher::ChaCha20, SymmetricCipher::Stream, SymmetricCipher::Encrypt);
+ QVERIFY(cipher.init(key, iv));
+ QCOMPARE(cipher.process(QByteArray(64, 0), &ok),
+ QByteArray::fromHex(
+ "4540f05a9f1fb296d7736e7b208e3c96eb4fe1834688d2604f450952ed432d41bbe2a0b6ea7566d2a5d1e7e20d42af2c53d792b1c43fea817e9ad275ae546963"));
+ QVERIFY(ok);
+ }
+
+ {
+ QByteArray key = QByteArray::fromHex("0000000000000000000000000000000000000000000000000000000000000000");
+ QByteArray iv = QByteArray::fromHex("0000000000000001");
+ SymmetricCipher cipher(SymmetricCipher::ChaCha20, SymmetricCipher::Stream, SymmetricCipher::Encrypt);
+ QVERIFY(cipher.init(key, iv));
+ QCOMPARE(cipher.process(QByteArray(60, 0), &ok),
+ QByteArray::fromHex(
+ "de9cba7bf3d69ef5e786dc63973f653a0b49e015adbff7134fcb7df137821031e85a050278a7084527214f73efc7fa5b5277062eb7a0433e445f41e3"));
+ QVERIFY(ok);
+ }
+
+ {
+ QByteArray key = QByteArray::fromHex("0000000000000000000000000000000000000000000000000000000000000000");
+ QByteArray iv = QByteArray::fromHex("0100000000000000");
+ SymmetricCipher cipher(SymmetricCipher::ChaCha20, SymmetricCipher::Stream, SymmetricCipher::Encrypt);
+ QVERIFY(cipher.init(key, iv));
+ QCOMPARE(cipher.process(QByteArray(64, 0), &ok),
+ QByteArray::fromHex(
+ "ef3fdfd6c61578fbf5cf35bd3dd33b8009631634d21e42ac33960bd138e50d32111e4caf237ee53ca8ad6426194a88545ddc497a0b466e7d6bbdb0041b2f586b"));
+ QVERIFY(ok);
+ }
+}
+
void TestSymmetricCipher::testPadding()
{
QByteArray key = QByteArray::fromHex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4");
diff --git a/tests/TestSymmetricCipher.h b/tests/TestSymmetricCipher.h
index 009989500..9b82fd88a 100644
--- a/tests/TestSymmetricCipher.h
+++ b/tests/TestSymmetricCipher.h
@@ -27,11 +27,16 @@ class TestSymmetricCipher : public QObject
private slots:
void initTestCase();
+ void testAes128CbcEncryption();
+ void testAes128CbcDecryption();
void testAes256CbcEncryption();
void testAes256CbcDecryption();
+ void testAes256CtrEncryption();
+ void testAes256CtrDecryption();
void testTwofish256CbcEncryption();
void testTwofish256CbcDecryption();
void testSalsa20();
+ void testChaCha20();
void testPadding();
void testStreamReset();
};
diff --git a/tests/TestTotp.cpp b/tests/TestTotp.cpp
index 48ff88144..02af663a1 100644
--- a/tests/TestTotp.cpp
+++ b/tests/TestTotp.cpp
@@ -17,12 +17,7 @@
*/
#include "TestTotp.h"
-
-#include <QDateTime>
-#include <QTest>
-#include <QTextCodec>
-#include <QTime>
-#include <QtEndian>
+#include "TestGlobal.h"
#include "crypto/Crypto.h"
#include "totp/totp.h"
@@ -41,21 +36,21 @@ void TestTotp::testParseSecret()
QString secret = "otpauth://totp/"
"ACME%20Co:john@example.com?secret=HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ&issuer=ACME%20Co&algorithm="
"SHA1&digits=6&period=30";
- QCOMPARE(QTotp::parseOtpString(secret, digits, step), QString("HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ"));
+ QCOMPARE(Totp::parseOtpString(secret, digits, step), QString("HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ"));
QCOMPARE(digits, quint8(6));
QCOMPARE(step, quint8(30));
- digits = QTotp::defaultDigits;
- step = QTotp::defaultStep;
+ digits = Totp::defaultDigits;
+ step = Totp::defaultStep;
secret = "key=HXDMVJECJJWSRBY%3d&step=25&size=8";
- QCOMPARE(QTotp::parseOtpString(secret, digits, step), QString("HXDMVJECJJWSRBY="));
+ QCOMPARE(Totp::parseOtpString(secret, digits, step), QString("HXDMVJECJJWSRBY="));
QCOMPARE(digits, quint8(8));
QCOMPARE(step, quint8(25));
digits = 0;
step = 0;
secret = "gezdgnbvgy3tqojqgezdgnbvgy3tqojq";
- QCOMPARE(QTotp::parseOtpString(secret, digits, step), QString("gezdgnbvgy3tqojqgezdgnbvgy3tqojq"));
+ QCOMPARE(Totp::parseOtpString(secret, digits, step), QString("gezdgnbvgy3tqojqgezdgnbvgy3tqojq"));
QCOMPARE(digits, quint8(6));
QCOMPARE(step, quint8(30));
}
@@ -68,18 +63,116 @@ void TestTotp::testTotpCode()
QByteArray seed = QString("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ").toLatin1();
quint64 time = 1234567890;
- QString output = QTotp::generateTotp(seed, time, 6, 30);
+ QString output = Totp::generateTotp(seed, time, 6, 30);
QCOMPARE(output, QString("005924"));
time = 1111111109;
- output = QTotp::generateTotp(seed, time, 6, 30);
+ output = Totp::generateTotp(seed, time, 6, 30);
QCOMPARE(output, QString("081804"));
time = 1111111111;
- output = QTotp::generateTotp(seed, time, 8, 30);
+ output = Totp::generateTotp(seed, time, 8, 30);
QCOMPARE(output, QString("14050471"));
time = 2000000000;
- output = QTotp::generateTotp(seed, time, 8, 30);
+ output = Totp::generateTotp(seed, time, 8, 30);
QCOMPARE(output, QString("69279037"));
}
+
+void TestTotp::testEncoderData()
+{
+ for (quint8 key: Totp::encoders.keys()) {
+ const Totp::Encoder& enc = Totp::encoders.value(key);
+ QVERIFY2(enc.digits != 0,
+ qPrintable(QString("Custom encoders cannot have zero-value for digits field: %1(%2)")
+ .arg(enc.name)
+ .arg(key)));
+ QVERIFY2(!enc.name.isEmpty(),
+ qPrintable(QString("Custom encoders must have a name: %1(%2)")
+ .arg(enc.name)
+ .arg(key)));
+ QVERIFY2(!enc.shortName.isEmpty(),
+ qPrintable(QString("Custom encoders must have a shortName: %1(%2)")
+ .arg(enc.name)
+ .arg(key)));
+ QVERIFY2(Totp::shortNameToEncoder.contains(enc.shortName),
+ qPrintable(QString("No shortNameToEncoder entry found for custom encoder: %1(%2) %3")
+ .arg(enc.name)
+ .arg(key)
+ .arg(enc.shortName)));
+ QVERIFY2(Totp::shortNameToEncoder[enc.shortName] == key,
+ qPrintable(QString("shortNameToEncoder doesn't reference this custome encoder: %1(%2) %3")
+ .arg(enc.name)
+ .arg(key)
+ .arg(enc.shortName)));
+ QVERIFY2(Totp::nameToEncoder.contains(enc.name),
+ qPrintable(QString("No nameToEncoder entry found for custom encoder: %1(%2) %3")
+ .arg(enc.name)
+ .arg(key)
+ .arg(enc.shortName)));
+ QVERIFY2(Totp::nameToEncoder[enc.name] == key,
+ qPrintable(QString("nameToEncoder doesn't reference this custome encoder: %1(%2) %3")
+ .arg(enc.name)
+ .arg(key)
+ .arg(enc.shortName)));
+ }
+
+ for (const QString & key: Totp::nameToEncoder.keys()) {
+ quint8 value = Totp::nameToEncoder.value(key);
+ QVERIFY2(Totp::encoders.contains(value),
+ qPrintable(QString("No custom encoder found for encoder named %1(%2)")
+ .arg(value)
+ .arg(key)));
+ QVERIFY2(Totp::encoders[value].name == key,
+ qPrintable(QString("nameToEncoder doesn't reference the right custom encoder: %1(%2)")
+ .arg(value)
+ .arg(key)));
+ }
+
+ for (const QString & key: Totp::shortNameToEncoder.keys()) {
+ quint8 value = Totp::shortNameToEncoder.value(key);
+ QVERIFY2(Totp::encoders.contains(value),
+ qPrintable(QString("No custom encoder found for short-name encoder %1(%2)")
+ .arg(value)
+ .arg(key)));
+ QVERIFY2(Totp::encoders[value].shortName == key,
+ qPrintable(QString("shortNameToEncoder doesn't reference the right custom encoder: %1(%2)")
+ .arg(value)
+ .arg(key)));
+ }
+}
+
+void TestTotp::testSteamTotp()
+{
+ quint8 digits = 0;
+ quint8 step = 0;
+ QString secret = "otpauth://totp/"
+ "test:test@example.com?secret=63BEDWCQZKTQWPESARIERL5DTTQFCJTK&issuer=Valve&algorithm="
+ "SHA1&digits=5&period=30&encoder=steam";
+ QCOMPARE(Totp::parseOtpString(secret, digits, step), QString("63BEDWCQZKTQWPESARIERL5DTTQFCJTK"));
+ QCOMPARE(digits, quint8(Totp::ENCODER_STEAM));
+ QCOMPARE(step, quint8(30));
+
+
+ QByteArray seed = QString("63BEDWCQZKTQWPESARIERL5DTTQFCJTK").toLatin1();
+
+ // These time/value pairs were created by running the Steam Guard function of the
+ // Steam mobile app with a throw-away steam account. The above secret was extracted
+ // from the Steam app's data for use in testing here.
+ quint64 time = 1511200518;
+ QCOMPARE(Totp::generateTotp(seed, time, Totp::ENCODER_STEAM, 30), QString("FR8RV"));
+ time = 1511200714;
+ QCOMPARE(Totp::generateTotp(seed, time, Totp::ENCODER_STEAM, 30), QString("9P3VP"));
+}
+
+void TestTotp::testEntryHistory()
+{
+ Entry entry;
+ quint8 step = 16;
+ quint8 digits = 6;
+ QCOMPARE(entry.historyItems().size(), 0);
+ entry.setTotp("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ", step, digits);
+ QCOMPARE(entry.historyItems().size(), 1);
+ entry.setTotp("foo", step, digits);
+ QCOMPARE(entry.historyItems().size(), 2);
+}
diff --git a/tests/TestTotp.h b/tests/TestTotp.h
index 785a9f522..784eb8f22 100644
--- a/tests/TestTotp.h
+++ b/tests/TestTotp.h
@@ -31,6 +31,9 @@ private slots:
void initTestCase();
void testParseSecret();
void testTotpCode();
+ void testEncoderData();
+ void testSteamTotp();
+ void testEntryHistory();
};
#endif // KEEPASSX_TESTTOTP_H
diff --git a/tests/TestWildcardMatcher.cpp b/tests/TestWildcardMatcher.cpp
index 621dc898e..e5d1d117d 100644
--- a/tests/TestWildcardMatcher.cpp
+++ b/tests/TestWildcardMatcher.cpp
@@ -16,9 +16,7 @@
*/
#include "TestWildcardMatcher.h"
-
-#include <QTest>
-
+#include "TestGlobal.h"
#include "autotype/WildcardMatcher.h"
QTEST_GUILESS_MAIN(TestWildcardMatcher)
diff --git a/tests/TestYkChallengeResponseKey.cpp b/tests/TestYkChallengeResponseKey.cpp
index 558920f4a..276ba7325 100644
--- a/tests/TestYkChallengeResponseKey.cpp
+++ b/tests/TestYkChallengeResponseKey.cpp
@@ -18,36 +18,23 @@
*/
#include "TestYkChallengeResponseKey.h"
+#include "TestGlobal.h"
+#include "crypto/Crypto.h"
-#include <QTest>
#include <QtConcurrentRun>
-#include "crypto/Crypto.h"
-#include "keys/YkChallengeResponseKey.h"
-
QTEST_GUILESS_MAIN(TestYubiKeyChalResp)
void TestYubiKeyChalResp::initTestCase()
{
- m_detected = 0;
- m_key = NULL;
-
// crypto subsystem needs to be initialized for YubiKey testing
QVERIFY(Crypto::init());
}
-void TestYubiKeyChalResp::cleanupTestCase()
-{
- if (m_key)
- delete m_key;
-}
-
void TestYubiKeyChalResp::init()
{
- bool result = YubiKey::instance()->init();
-
- if (!result) {
- QSKIP("Unable to connect to YubiKey", SkipAll);
+ if (!YubiKey::instance()->init()) {
+ QSKIP("Unable to connect to YubiKey");
}
}
@@ -104,7 +91,7 @@ void TestYubiKeyChalResp::ykDetected(int slot, bool blocking)
/* Key used for later testing */
if (!m_key)
- m_key = new YkChallengeResponseKey(slot, blocking);
+ m_key.reset(new YkChallengeResponseKey(slot, blocking));
}
void TestYubiKeyChalResp::deinit()
diff --git a/tests/TestYkChallengeResponseKey.h b/tests/TestYkChallengeResponseKey.h
index 2bc344ec0..82223ec35 100644
--- a/tests/TestYkChallengeResponseKey.h
+++ b/tests/TestYkChallengeResponseKey.h
@@ -20,6 +20,7 @@
#define KEEPASSX_TESTYUBIKEYCHALRESP_H
#include <QObject>
+#include <QScopedPointer>
#include "keys/YkChallengeResponseKey.h"
@@ -29,7 +30,6 @@ class TestYubiKeyChalResp: public QObject
private slots:
void initTestCase();
- void cleanupTestCase();
void init();
@@ -48,8 +48,8 @@ private slots:
void ykDetected(int slot, bool blocking);
private:
- int m_detected;
- YkChallengeResponseKey *m_key;
+ int m_detected = 0;
+ QScopedPointer<YkChallengeResponseKey> m_key;
};
#endif // KEEPASSX_TESTYUBIKEYCHALRESP_H
diff --git a/tests/data/Format400.kdbx b/tests/data/Format400.kdbx
new file mode 100644
index 000000000..1a877508e
--- /dev/null
+++ b/tests/data/Format400.kdbx
Binary files differ
diff --git a/tests/data/NewDatabase.xml b/tests/data/NewDatabase.xml
index d07b83693..a0efd631a 100644
--- a/tests/data/NewDatabase.xml
+++ b/tests/data/NewDatabase.xml
@@ -39,16 +39,6 @@
<Binary ID="0" Compressed="True">H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/InZ29+7t3//0wcHD/wfGx4SmCgAAAA==</Binary>
<Binary ID="1" Compressed="True">H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/IrLJdJafX8yLn377/wCfD1fOCwAAAA==</Binary>
</Binaries>
- <CustomData>
- <Item>
- <Key>A Sample Test Key</Key>
- <Value>valu</Value>
- </Item>
- <Item>
- <Key>custom key</Key>
- <Value>blub</Value>
- </Item>
- </CustomData>
</Meta>
<Root>
<Group>
@@ -479,4 +469,4 @@
</DeletedObject>
</DeletedObjects>
</Root>
-</KeePassFile> \ No newline at end of file
+</KeePassFile>
diff --git a/tests/gui/CMakeLists.txt b/tests/gui/CMakeLists.txt
index 4c0eebbe6..6cae88830 100644
--- a/tests/gui/CMakeLists.txt
+++ b/tests/gui/CMakeLists.txt
@@ -13,6 +13,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
+
add_unit_test(NAME testgui SOURCES TestGui.cpp TemporaryFile.cpp LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testguipixmaps SOURCES TestGuiPixmaps.cpp LIBS ${TEST_LIBRARIES})
diff --git a/tests/gui/TestGui.cpp b/tests/gui/TestGui.cpp
index 6805e1053..b2ccd332d 100644
--- a/tests/gui/TestGui.cpp
+++ b/tests/gui/TestGui.cpp
@@ -17,6 +17,7 @@
*/
#include "TestGui.h"
+#include "TestGlobal.h"
#include <QAction>
#include <QApplication>
@@ -25,11 +26,11 @@
#include <QLabel>
#include <QMimeData>
#include <QPushButton>
+#include <QCheckBox>
#include <QSpinBox>
#include <QPlainTextEdit>
#include <QComboBox>
#include <QTemporaryFile>
-#include <QTest>
#include <QToolBar>
#include <QToolButton>
#include <QTimer>
@@ -45,10 +46,12 @@
#include "core/Metadata.h"
#include "core/Tools.h"
#include "crypto/Crypto.h"
+#include "crypto/kdf/AesKdf.h"
#include "format/KeePass2Reader.h"
#include "gui/DatabaseTabWidget.h"
#include "gui/DatabaseWidget.h"
#include "gui/CloneDialog.h"
+#include "gui/PasswordEdit.h"
#include "gui/TotpDialog.h"
#include "gui/SetupTotpDialog.h"
#include "gui/FileDialog.h"
@@ -59,12 +62,16 @@
#include "gui/entry/EntryView.h"
#include "gui/group/GroupModel.h"
#include "gui/group/GroupView.h"
+#include "gui/group/EditGroupWidget.h"
#include "keys/PasswordKey.h"
void TestGui::initTestCase()
{
QVERIFY(Crypto::init());
Config::createTempFileInstance();
+ // Disable autosave so we can test the modified file indicator
+ Config::instance()->set("AutoSaveAfterEveryChange", false);
+
m_mainWindow = new MainWindow();
m_tabWidget = m_mainWindow->findChild<DatabaseTabWidget*>("tabWidget");
m_mainWindow->show();
@@ -115,10 +122,56 @@ void TestGui::cleanup()
triggerAction("actionDatabaseClose");
Tools::wait(100);
+ if (m_db) {
+ delete m_db;
+ }
m_db = nullptr;
+
+ if (m_dbWidget) {
+ delete m_dbWidget;
+ }
m_dbWidget = nullptr;
}
+void TestGui::testCreateDatabase()
+{
+ QTemporaryFile tmpFile;
+ QVERIFY(tmpFile.open());
+ QString tmpFileName = tmpFile.fileName();
+ tmpFile.remove();
+
+ fileDialog()->setNextFileName(tmpFileName);
+ triggerAction("actionDatabaseNew");
+
+ DatabaseWidget* dbWidget = m_tabWidget->currentDatabaseWidget();
+
+ QWidget* databaseNewWidget = dbWidget->findChild<QWidget*>("changeMasterKeyWidget");
+ PasswordEdit* editPassword = databaseNewWidget->findChild<PasswordEdit*>("enterPasswordEdit");
+ QVERIFY(editPassword->isVisible());
+
+ QLineEdit* editPasswordRepeat = databaseNewWidget->findChild<QLineEdit*>("repeatPasswordEdit");
+ QVERIFY(editPasswordRepeat->isVisible());
+
+ m_tabWidget->currentDatabaseWidget()->setCurrentWidget(databaseNewWidget);
+
+ QTest::keyClicks(editPassword, "test");
+ QTest::keyClicks(editPasswordRepeat, "test");
+ QTest::keyClick(editPasswordRepeat, Qt::Key_Enter);
+
+ // Auto-save after every change is enabled by default, ensure the db saves right away
+ QTRY_VERIFY(m_tabWidget->tabText(m_tabWidget->currentIndex()).contains("*"));
+
+ m_db = m_tabWidget->currentDatabaseWidget()->database();
+
+ // there is a new empty db
+ QCOMPARE(m_db->rootGroup()->children().size(), 0);
+
+ // close the new database
+ MessageBox::setNextAnswer(QMessageBox::No);
+ triggerAction("actionDatabaseClose");
+ Tools::wait(100);
+}
+
void TestGui::testMergeDatabase()
{
// It is safe to ignore the warning this line produces
@@ -227,6 +280,7 @@ void TestGui::testTabs()
void TestGui::testEditEntry()
{
QToolBar* toolBar = m_mainWindow->findChild<QToolBar*>("toolBar");
+ int editCount = 0;
// Select the first entry in the database
EntryView* entryView = m_dbWidget->findChild<EntryView*>("entryView");
@@ -253,7 +307,24 @@ void TestGui::testEditEntry()
QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Apply), Qt::LeftButton);
QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::EditMode);
QCOMPARE(entry->title(), QString("Sample Entry_test"));
- QCOMPARE(entry->historyItems().size(), 1);
+ QCOMPARE(entry->historyItems().size(), ++editCount);
+
+ // Test entry colors (simulate choosing a color)
+ editEntryWidget->setCurrentPage(1);
+ auto fgColor = QColor(Qt::red);
+ auto bgColor = QColor(Qt::blue);
+ // Set foreground color
+ auto colorButton = editEntryWidget->findChild<QPushButton*>("fgColorButton");
+ auto colorCheckBox = editEntryWidget->findChild<QCheckBox*>("fgColorCheckBox");
+ colorButton->setProperty("color", fgColor);
+ colorCheckBox->setChecked(true);
+ // Set background color
+ colorButton = editEntryWidget->findChild<QPushButton*>("bgColorButton");
+ colorCheckBox = editEntryWidget->findChild<QCheckBox*>("bgColorCheckBox");
+ colorButton->setProperty("color", bgColor);
+ colorCheckBox->setChecked(true);
+ QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Apply), Qt::LeftButton);
+ QCOMPARE(entry->historyItems().size(), ++editCount);
// Test protected attributes
editEntryWidget->setCurrentPage(1);
@@ -285,10 +356,82 @@ void TestGui::testEditEntry()
// Confirm edit was made
QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::ViewMode);
QCOMPARE(entry->title(), QString("Sample Entry_test"));
- QCOMPARE(entry->historyItems().size(), 2);
+ QCOMPARE(entry->foregroundColor(), fgColor);
+ QCOMPARE(entryItem.data(Qt::ForegroundRole), QVariant(fgColor));
+ QCOMPARE(entry->backgroundColor(), bgColor);
+ QCOMPARE(entryItem.data(Qt::BackgroundRole), QVariant(bgColor));
+ QCOMPARE(entry->historyItems().size(), ++editCount);
// Confirm modified indicator is showing
QTRY_COMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("%1*").arg(m_dbFileName));
+
+ // Test copy & paste newline sanitization
+ QTest::mouseClick(entryEditWidget, Qt::LeftButton);
+ QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::EditMode);
+ titleEdit->setText("multiline\ntitle");
+ editEntryWidget->findChild<QLineEdit*>("usernameEdit")->setText("multiline\nusername");
+ editEntryWidget->findChild<QLineEdit*>("passwordEdit")->setText("multiline\npassword");
+ editEntryWidget->findChild<QLineEdit*>("passwordRepeatEdit")->setText("multiline\npassword");
+ editEntryWidget->findChild<QLineEdit*>("urlEdit")->setText("multiline\nurl");
+ QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
+
+ QCOMPARE(entry->title(), QString("multiline title"));
+ QCOMPARE(entry->username(), QString("multiline username"));
+ // here we keep newlines, so users can't lock themselves out accidentally
+ QCOMPARE(entry->password(), QString("multiline\npassword"));
+ QCOMPARE(entry->url(), QString("multiline url"));
+}
+
+void TestGui::testSearchEditEntry()
+{
+ // Regression test for Issue #1447 -- Uses example from issue description
+
+ // Find buttons for group creation
+ EditGroupWidget* editGroupWidget = m_dbWidget->findChild<EditGroupWidget*>("editGroupWidget");
+ QLineEdit* nameEdit = editGroupWidget->findChild<QLineEdit*>("nameEdit");
+ QDialogButtonBox* editGroupWidgetButtonBox = editGroupWidget->findChild<QDialogButtonBox*>("buttonBox");
+
+ // Add groups "Good" and "Bad"
+ m_dbWidget->createGroup();
+ QTest::keyClicks(nameEdit, "Good");
+ QTest::mouseClick(editGroupWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
+ m_dbWidget->groupView()->setCurrentGroup(m_db->rootGroup()); // Makes "Good" and "Bad" on the same level
+ m_dbWidget->createGroup();
+ QTest::keyClicks(nameEdit, "Bad");
+ QTest::mouseClick(editGroupWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
+ m_dbWidget->groupView()->setCurrentGroup(m_db->rootGroup());
+
+ // Find buttons for entry creation
+ QToolBar* toolBar = m_mainWindow->findChild<QToolBar*>("toolBar");
+ QWidget* entryNewWidget = toolBar->widgetForAction(m_mainWindow->findChild<QAction*>("actionEntryNew"));
+ EditEntryWidget* editEntryWidget = m_dbWidget->findChild<EditEntryWidget*>("editEntryWidget");
+ QLineEdit* titleEdit = editEntryWidget->findChild<QLineEdit*>("titleEdit");
+ QDialogButtonBox* editEntryWidgetButtonBox = editEntryWidget->findChild<QDialogButtonBox*>("buttonBox");
+
+ // Create "Doggy" in "Good"
+ Group* goodGroup = m_dbWidget->currentGroup()->findChildByName(QString("Good"));
+ m_dbWidget->groupView()->setCurrentGroup(goodGroup);
+ QTest::mouseClick(entryNewWidget, Qt::LeftButton);
+ QTest::keyClicks(titleEdit, "Doggy");
+ QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
+ // Select "Bad" group in groupView
+ Group* badGroup = m_db->rootGroup()->findChildByName(QString("Bad"));
+ m_dbWidget->groupView()->setCurrentGroup(badGroup);
+
+ // Search for "Doggy" entry
+ SearchWidget* searchWidget = toolBar->findChild<SearchWidget*>("SearchWidget");
+ QLineEdit* searchTextEdit = searchWidget->findChild<QLineEdit*>("searchEdit");
+ QTest::mouseClick(searchTextEdit, Qt::LeftButton);
+ QTest::keyClicks(searchTextEdit, "Doggy");
+ QTRY_VERIFY(m_dbWidget->isInSearchMode());
+
+ // Goto "Doggy"'s edit view
+ QTest::keyClick(searchTextEdit, Qt::Key_Return);
+ QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::EditMode);
+
+ // Check the path in header is "parent-group > entry"
+ QCOMPARE(m_dbWidget->findChild<EditEntryWidget*>("editEntryWidget")->findChild<QLabel*>("headerLabel")->text(),
+ QString("Good > Doggy > Edit entry"));
}
void TestGui::testAddEntry()
@@ -418,15 +561,13 @@ void TestGui::testPasswordEntryEntropy()
editNewPassword->setText("");
QTest::keyClicks(editNewPassword, "YQC3kbXbjC652dTDH");
- QCOMPARE(entropyLabel->text(), QString("Entropy: 96.07 bit"));
+ QCOMPARE(entropyLabel->text(), QString("Entropy: 95.83 bit"));
QCOMPARE(strengthLabel->text(), QString("Password Quality: Good"));
editNewPassword->setText("");
QTest::keyClicks(editNewPassword, "Bs5ZFfthWzR8DGFEjaCM6bGqhmCT4km");
QCOMPARE(entropyLabel->text(), QString("Entropy: 174.59 bit"));
QCOMPARE(strengthLabel->text(), QString("Password Quality: Excellent"));
-
- // We are done
}
void TestGui::testDicewareEntryEntropy()
@@ -650,7 +791,7 @@ void TestGui::testDeleteEntry()
QWidget* entryDeleteWidget = toolBar->widgetForAction(entryDeleteAction);
QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::ViewMode);
- clickIndex(entryView->model()->index(1, 0), entryView, Qt::LeftButton);
+ clickIndex(entryView->model()->index(1, 1), entryView, Qt::LeftButton);
QVERIFY(entryDeleteWidget->isVisible());
QVERIFY(entryDeleteWidget->isEnabled());
QVERIFY(!m_db->metadata()->recycleBin());
@@ -661,8 +802,8 @@ void TestGui::testDeleteEntry()
QCOMPARE(entryView->model()->rowCount(), 3);
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 1);
- clickIndex(entryView->model()->index(1, 0), entryView, Qt::LeftButton);
- clickIndex(entryView->model()->index(2, 0), entryView, Qt::LeftButton, Qt::ControlModifier);
+ clickIndex(entryView->model()->index(1, 1), entryView, Qt::LeftButton);
+ clickIndex(entryView->model()->index(2, 1), entryView, Qt::LeftButton, Qt::ControlModifier);
QCOMPARE(entryView->selectionModel()->selectedRows().size(), 2);
MessageBox::setNextAnswer(QMessageBox::No);
@@ -681,7 +822,7 @@ void TestGui::testDeleteEntry()
groupView, Qt::LeftButton);
QCOMPARE(groupView->currentGroup()->name(), m_db->metadata()->recycleBin()->name());
- clickIndex(entryView->model()->index(0, 0), entryView, Qt::LeftButton);
+ clickIndex(entryView->model()->index(0, 1), entryView, Qt::LeftButton);
MessageBox::setNextAnswer(QMessageBox::No);
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
QCOMPARE(entryView->model()->rowCount(), 3);
@@ -692,8 +833,8 @@ void TestGui::testDeleteEntry()
QCOMPARE(entryView->model()->rowCount(), 2);
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 2);
- clickIndex(entryView->model()->index(0, 0), entryView, Qt::LeftButton);
- clickIndex(entryView->model()->index(1, 0), entryView, Qt::LeftButton, Qt::ControlModifier);
+ clickIndex(entryView->model()->index(0, 1), entryView, Qt::LeftButton);
+ clickIndex(entryView->model()->index(1, 1), entryView, Qt::LeftButton, Qt::ControlModifier);
MessageBox::setNextAnswer(QMessageBox::Yes);
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
QCOMPARE(entryView->model()->rowCount(), 0);
@@ -858,11 +999,12 @@ void TestGui::testDatabaseSettings()
triggerAction("actionChangeDatabaseSettings");
QWidget* dbSettingsWidget = m_dbWidget->findChild<QWidget*>("databaseSettingsWidget");
QSpinBox* transformRoundsSpinBox = dbSettingsWidget->findChild<QSpinBox*>("transformRoundsSpinBox");
- transformRoundsSpinBox->setValue(100);
+ QVERIFY(transformRoundsSpinBox != nullptr);
+ transformRoundsSpinBox->setValue(123456);
QTest::keyClick(transformRoundsSpinBox, Qt::Key_Enter);
// wait for modified timer
QTRY_COMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("Save*"));
- QCOMPARE(m_db->transformRounds(), Q_UINT64_C(100));
+ QCOMPARE(m_db->kdf()->rounds(), 123456);
triggerAction("actionDatabaseSave");
QCOMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("Save"));
@@ -912,6 +1054,43 @@ void TestGui::testDatabaseLocking()
QCOMPARE(m_tabWidget->tabText(0).remove('&'), origDbName);
}
+void TestGui::testDragAndDropKdbxFiles()
+{
+ const int openedDatabasesCount = m_tabWidget->count();
+
+ const QString badDatabaseFilePath(QString(KEEPASSX_TEST_DATA_DIR).append("/NotDatabase.notkdbx"));
+ QMimeData badMimeData;
+ badMimeData.setUrls({QUrl::fromLocalFile(badDatabaseFilePath)});
+ QDragEnterEvent badDragEvent(QPoint(1, 1), Qt::LinkAction, &badMimeData, Qt::LeftButton, Qt::NoModifier);
+ qApp->notify(m_mainWindow, &badDragEvent);
+ QCOMPARE(badDragEvent.isAccepted(), false);
+
+ QDropEvent badDropEvent(QPoint(1, 1), Qt::LinkAction, &badMimeData, Qt::LeftButton, Qt::NoModifier);
+ qApp->notify(m_mainWindow, &badDropEvent);
+ QCOMPARE(badDropEvent.isAccepted(), false);
+
+ QCOMPARE(m_tabWidget->count(), openedDatabasesCount);
+
+ const QString goodDatabaseFilePath(QString(KEEPASSX_TEST_DATA_DIR).append("/NewDatabase.kdbx"));
+ QMimeData goodMimeData;
+ goodMimeData.setUrls({QUrl::fromLocalFile(goodDatabaseFilePath)});
+ QDragEnterEvent goodDragEvent(QPoint(1, 1), Qt::LinkAction, &goodMimeData, Qt::LeftButton, Qt::NoModifier);
+ qApp->notify(m_mainWindow, &goodDragEvent);
+ QCOMPARE(goodDragEvent.isAccepted(), true);
+
+ QDropEvent goodDropEvent(QPoint(1, 1), Qt::LinkAction, &goodMimeData, Qt::LeftButton, Qt::NoModifier);
+ qApp->notify(m_mainWindow, &goodDropEvent);
+ QCOMPARE(goodDropEvent.isAccepted(), true);
+
+ QCOMPARE(m_tabWidget->count(), openedDatabasesCount + 1);
+
+ MessageBox::setNextAnswer(QMessageBox::No);
+ triggerAction("actionDatabaseClose");
+ Tools::wait(100);
+
+ QCOMPARE(m_tabWidget->count(), openedDatabasesCount);
+}
+
void TestGui::cleanupTestCase()
{
delete m_mainWindow;
@@ -981,7 +1160,7 @@ void TestGui::dragAndDropGroup(const QModelIndex& sourceIndex, const QModelIndex
QVERIFY(sourceIndex.isValid());
QVERIFY(targetIndex.isValid());
- GroupModel* groupModel = qobject_cast<GroupModel*>(m_dbWidget->findChild<GroupView*>("groupView")->model());
+ auto groupModel = qobject_cast<GroupModel*>(m_dbWidget->findChild<GroupView*>("groupView")->model());
QMimeData mimeData;
QByteArray encoded;
diff --git a/tests/gui/TestGui.h b/tests/gui/TestGui.h
index 352dbf213..0b403731d 100644
--- a/tests/gui/TestGui.h
+++ b/tests/gui/TestGui.h
@@ -23,6 +23,7 @@
#include <QAbstractItemModel>
#include <QObject>
+#include <QPointer>
class Database;
class DatabaseTabWidget;
@@ -40,10 +41,12 @@ private slots:
void cleanup();
void cleanupTestCase();
+ void testCreateDatabase();
void testMergeDatabase();
void testAutoreloadDatabase();
void testTabs();
void testEditEntry();
+ void testSearchEditEntry();
void testAddEntry();
void testPasswordEntryEntropy();
void testDicewareEntryEntropy();
@@ -59,6 +62,7 @@ private slots:
void testDatabaseSettings();
void testKeePass1Import();
void testDatabaseLocking();
+ void testDragAndDropKdbxFiles();
private:
int addCannedEntries();
@@ -69,14 +73,14 @@ private:
void clickIndex(const QModelIndex& index, QAbstractItemView* view, Qt::MouseButton button,
Qt::KeyboardModifiers stateKey = 0);
- MainWindow* m_mainWindow;
- DatabaseTabWidget* m_tabWidget;
- DatabaseWidget* m_dbWidget;
+ QPointer<MainWindow> m_mainWindow;
+ QPointer<DatabaseTabWidget> m_tabWidget;
+ QPointer<DatabaseWidget> m_dbWidget;
+ QPointer<Database> m_db;
QByteArray m_dbData;
TemporaryFile m_dbFile;
QString m_dbFileName;
QString m_dbFilePath;
- Database* m_db;
};
#endif // KEEPASSX_TESTGUI_H
diff --git a/tests/gui/TestGuiPixmaps.cpp b/tests/gui/TestGuiPixmaps.cpp
index 363749474..c71fe51b9 100644
--- a/tests/gui/TestGuiPixmaps.cpp
+++ b/tests/gui/TestGuiPixmaps.cpp
@@ -16,13 +16,8 @@
*/
#include "TestGuiPixmaps.h"
-
-#include <QTest>
-
-#include "core/Database.h"
+#include "TestGlobal.h"
#include "core/DatabaseIcons.h"
-#include "core/Entry.h"
-#include "core/Group.h"
#include "core/Metadata.h"
#include "crypto/Crypto.h"
diff --git a/utils/fix_mac.sh b/utils/fix_mac.sh
deleted file mode 100755
index 2e4e84e5e..000000000
--- a/utils/fix_mac.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-# Canonical path to qt5 directory
-QT="/usr/local/Cellar/qt"
-if [ ! -d "$QT" ]; then
- # Alternative (old) path to qt5 directory
- QT+="5"
- if [ ! -d "$QT" ]; then
- echo "Qt/Qt5 not found!"
- exit
- fi
-fi
-QT5_DIR="$QT/$(ls $QT | sort -r | head -n1)"
-echo $QT5_DIR
-
-# Change qt5 framework ids
-for framework in $(find "$QT5_DIR/lib" -regex ".*/\(Qt[a-zA-Z]*\)\.framework/Versions/5/\1"); do
- echo "$framework"
- install_name_tool -id "$framework" "$framework"
-done